tbb-commits
Threads by month
- ----- 2025 -----
- 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
- 18455 discussions
commit 4749302f7032be5e1ccf7806872385d8cafcb989
Author: Georg Koppen <gk(a)torproject.org>
Date: Tue Jan 17 12:21:36 2017 +0000
Version bump for 0.2.10.3
---
src/install.rdf | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/install.rdf b/src/install.rdf
index 5664b03..ce914f4 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.10.2</em:version>
+ <em:version>0.2.10.3</em:version>
<em:homepageURL>https://www.torproject.org/projects/torbrowser.html</em:homepageURL>
<em:updateURL>data:text/plain,</em:updateURL>
<em:updateKey>-</em:updateKey>
1
0

[tor-browser/tor-browser-45.6.0esr-6.5-1] Bug 20981: On Windows, check TZ for timezone first
by gk@torproject.org 19 Jan '17
by gk@torproject.org 19 Jan '17
19 Jan '17
commit 025f08062d4e633432e0248bbd047ac5d61c4399
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Sat Jan 14 01:58:14 2017 -0800
Bug 20981: On Windows, check TZ for timezone first
---
intl/icu/source/common/putil.cpp | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/intl/icu/source/common/putil.cpp b/intl/icu/source/common/putil.cpp
index c87b60e..2f5f4fe 100644
--- a/intl/icu/source/common/putil.cpp
+++ b/intl/icu/source/common/putil.cpp
@@ -984,6 +984,11 @@ uprv_tzname(int n)
{
const char *tzid = NULL;
#if U_PLATFORM_USES_ONLY_WIN32_API
+ char* envValue = getenv("TZ");
+ if (envValue != NULL) {
+ return uprv_strdup(envValue);
+ }
+
tzid = uprv_detectWindowsTimeZone();
if (tzid != NULL) {
1
0

[tor-browser-bundle/master] Bug 20989: Browser sandbox profile is too restrictive on OSX 10.12.2
by gk@torproject.org 18 Jan '17
by gk@torproject.org 18 Jan '17
18 Jan '17
commit f55cbeea243675db8acf1015ca7e1ceed39f0933
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Tue Jan 17 10:27:25 2017 -0500
Bug 20989: Browser sandbox profile is too restrictive on OSX 10.12.2
Allow full read access to all files under /usr/lib.
Allow full read access to /Library/Preferences/com.apple.ViewBridge.plist.
Allow writes to TorBrowser-Data/Browser/profiles.ini (otherwise, a new
browser profile is created each time the browser is opened).
---
Bundle-Data/mac-sandbox/tb.sb | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/Bundle-Data/mac-sandbox/tb.sb b/Bundle-Data/mac-sandbox/tb.sb
index eda7a1f..385e914 100644
--- a/Bundle-Data/mac-sandbox/tb.sb
+++ b/Bundle-Data/mac-sandbox/tb.sb
@@ -28,6 +28,7 @@
(allow file-read*
(path "/Library/Preferences/com.apple.HIToolbox.plist")
+ (path "/Library/Preferences/com.apple.ViewBridge.plist")
(path "/Library/Preferences/.GlobalPreferences.plist")
(path "/dev/random")
(path "/dev/urandom")
@@ -41,6 +42,7 @@
(subpath "/Library/Fonts")
(subpath "/System")
(subpath "/private/var/folders")
+ (subpath "/usr/lib")
(subpath "/usr/share")
(home-subpath "/Downloads")
(home-subpath "/Library/Input Methods")
@@ -66,7 +68,6 @@
(path "/private/var/db/.AppleSetupDone")
(path "/tmp")
(path "/var")
- (subpath "/usr/lib")
(torbrowser-data-dir-path "/Tor/control.socket")
(torbrowser-data-dir-path "/Tor/socks.socket")
(path-regex "/private/tmp/Tor[-0-9]*/control.socket")
@@ -86,11 +87,6 @@
(path "/Library/Preferences/.GlobalPreferences.plist")
)
-; Disallow writes to the profiles ini file.
-(deny file-write*
- (torbrowser-data-dir-subpath "/Browser/profiles.ini")
-)
-
(allow iokit-open)
(allow ipc-posix-shm
1
0

18 Jan '17
commit 2db14ba274f3fc1fc8a1ddaba4ca56ba4ea6e96e
Author: Georg Koppen <gk(a)torproject.org>
Date: Wed Jan 18 12:02:15 2017 +0000
Bump NoScript version to 2.9.5.3
---
gitian/versions.alpha | 4 ++--
gitian/versions.nightly | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/gitian/versions.alpha b/gitian/versions.alpha
index 14ed662..50c2158 100755
--- a/gitian/versions.alpha
+++ b/gitian/versions.alpha
@@ -77,7 +77,7 @@ NSIS_VER=2.51
## File names for the source packages
OPENSSL_PACKAGE=openssl-${OPENSSL_VER}.tar.gz
GMP_PACKAGE=gmp-${GMP_VER}.tar.bz2
-NOSCRIPT_PACKAGE=noscript_security_suite-2.9.5.2-fx+sm.xpi
+NOSCRIPT_PACKAGE=noscript_security_suite-2.9.5.3-fx+sm.xpi
TOOLCHAIN4_OLD_PACKAGE=multiarch-darwin11-cctools127.2-gcc42-5666.3-llvmgcc42-2336.1-Linux-120724.tar.xz
CCTOOLS_PACKAGE=cctools.tar.gz
OSXSDK_PACKAGE=MacOSX10.7.sdk.tar.gz
@@ -111,7 +111,7 @@ GMP_HASH=752079520b4690531171d0f4532e40f08600215feefede70b24fabdc6f1ab160
OSXSDK_HASH=da77bb0003fcca5ea8c4e8cb2da8828ded750c54afdcac29ec6f3b46ad5e3adf
OSXSDK_OLD_HASH=6602d8d5ddb371fbc02e2a5967d9bd0cd7358d46f9417753c8234b923f2ea6fc
TOOLCHAIN4_OLD_HASH=65c1b2d302358a6b95a26c6828a66908a199276193bb0b268f2dcc1a997731e9
-NOSCRIPT_HASH=ed71ca922790e81bc5e8c6a87bb81f394a38676ac37d1fba518a6a428d128dd5
+NOSCRIPT_HASH=ce9779a3a5a2574b958f8e4d079a99d43a8f84193bef52c587c704ed81c2fbbd
CCTOOLS_HASH=e908fdebc2886ee5491ebfc7e7950af451b3c4e2439c2d7a923ed06ad05113e4
MSVCR100_HASH=1221a09484964a6f38af5e34ee292b9afefccb3dc6e55435fd3aaf7c235d9067
PYCRYPTO_HASH=f2ce1e989b272cfcb677616763e0a2e7ec659effa67a88aa92b3a65528f60a3c
diff --git a/gitian/versions.nightly b/gitian/versions.nightly
index 1b1b346..0ca5ed6 100755
--- a/gitian/versions.nightly
+++ b/gitian/versions.nightly
@@ -84,7 +84,7 @@ NSIS_VER=2.51
## File names for the source packages
OPENSSL_PACKAGE=openssl-${OPENSSL_VER}.tar.gz
GMP_PACKAGE=gmp-${GMP_VER}.tar.bz2
-NOSCRIPT_PACKAGE=noscript_security_suite-2.9.5.2-fx+sm.xpi
+NOSCRIPT_PACKAGE=noscript_security_suite-2.9.5.3-fx+sm.xpi
TOOLCHAIN4_OLD_PACKAGE=multiarch-darwin11-cctools127.2-gcc42-5666.3-llvmgcc42-2336.1-Linux-120724.tar.xz
CCTOOLS_PACKAGE=cctools.tar.gz
OSXSDK_PACKAGE=MacOSX10.7.sdk.tar.gz
@@ -118,7 +118,7 @@ GMP_HASH=752079520b4690531171d0f4532e40f08600215feefede70b24fabdc6f1ab160
OSXSDK_HASH=da77bb0003fcca5ea8c4e8cb2da8828ded750c54afdcac29ec6f3b46ad5e3adf
OSXSDK_OLD_HASH=6602d8d5ddb371fbc02e2a5967d9bd0cd7358d46f9417753c8234b923f2ea6fc
TOOLCHAIN4_OLD_HASH=65c1b2d302358a6b95a26c6828a66908a199276193bb0b268f2dcc1a997731e9
-NOSCRIPT_HASH=ed71ca922790e81bc5e8c6a87bb81f394a38676ac37d1fba518a6a428d128dd5
+NOSCRIPT_HASH=ce9779a3a5a2574b958f8e4d079a99d43a8f84193bef52c587c704ed81c2fbbd
CCTOOLS_HASH=e908fdebc2886ee5491ebfc7e7950af451b3c4e2439c2d7a923ed06ad05113e4
MSVCR100_HASH=1221a09484964a6f38af5e34ee292b9afefccb3dc6e55435fd3aaf7c235d9067
PYCRYPTO_HASH=f2ce1e989b272cfcb677616763e0a2e7ec659effa67a88aa92b3a65528f60a3c
1
0

[torbutton/master] Bug 21243: Add links to es, fr, pt Tor Browser manual
by gk@torproject.org 18 Jan '17
by gk@torproject.org 18 Jan '17
18 Jan '17
commit 4e9c7c8ba121e0ec39d65deefd5cea3657dcc27d
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Tue Jan 17 17:42:12 2017 -0800
Bug 21243: Add links to es, fr, pt Tor Browser manual
---
src/chrome/content/menu-overlay.xul | 8 ++++----
src/chrome/content/torbutton.js | 10 +++-------
src/chrome/locale/en/aboutTor.dtd | 3 ++-
src/chrome/locale/en/torbutton.dtd | 2 --
src/chrome/locale/es/aboutTor.dtd | 3 ++-
src/chrome/locale/fr/aboutTor.dtd | 3 ++-
src/chrome/locale/pt-BR/aboutTor.dtd | 3 ++-
7 files changed, 15 insertions(+), 17 deletions(-)
diff --git a/src/chrome/content/menu-overlay.xul b/src/chrome/content/menu-overlay.xul
index 8067b5c..4970114 100644
--- a/src/chrome/content/menu-overlay.xul
+++ b/src/chrome/content/menu-overlay.xul
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <!-- -*- Mode: HTML -*- -->
-<!DOCTYPE overlay SYSTEM "chrome://torbutton/locale/torbutton.dtd">
+<!DOCTYPE overlay SYSTEM "chrome://torbutton/locale/aboutTor.dtd">
<overlay id="torbutton-menu-overlay"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
@@ -20,8 +20,8 @@
<menuitem name="torBrowserUserManual"
id="torBrowserUserManual"
position="1"
- label="&torbutton.torbrowser_user_manual.label;"
- accesskey="&torbutton.torbrowser_user_manual.accesskey;"
- oncommand="torbutton_open_torbrowser_user_manual()" />
+ label="&aboutTor.torbrowser_user_manual.label;"
+ accesskey="&aboutTor.torbrowser_user_manual.accesskey;"
+ oncommand="gBrowser.selectedTab = gBrowser.addTab('&aboutTor.torbrowser_user_manual.link;')" />
</menupopup>
</overlay>
diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js
index dacc43e..62b9371 100644
--- a/src/chrome/content/torbutton.js
+++ b/src/chrome/content/torbutton.js
@@ -2440,15 +2440,11 @@ function torbutton_update_noscript_button()
}, 0);
}
-// Opens the Tor Browser User Manual in a new tab
-function torbutton_open_torbrowser_user_manual() {
- gBrowser.selectedTab = gBrowser.addTab("https://tb-manual.torproject.org");
-}
-
// Returns true if we should show the tor browser manual.
function torbutton_show_torbrowser_manual() {
- let locale = torbutton_get_general_useragent_locale();
- return locale.startsWith("en");
+ let availableLocales = ["en", "es", "fr", "pt"];
+ let shortLocale = torbutton_get_general_useragent_locale().substring(0, 2);
+ return availableLocales.indexOf(shortLocale) >= 0;
}
// Makes sure the item in the Help Menu and the link in about:tor
diff --git a/src/chrome/locale/en/aboutTor.dtd b/src/chrome/locale/en/aboutTor.dtd
index 4385ca8..3950ff9 100644
--- a/src/chrome/locale/en/aboutTor.dtd
+++ b/src/chrome/locale/en/aboutTor.dtd
@@ -29,8 +29,9 @@
<!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.torbrowser_user_manual.accesskey "M">
<!ENTITY aboutTor.torbrowser_user_manual.label "Tor Browser User Manual »">
-<!ENTITY aboutTor.torbrowser_user_manual.link "https://tb-manual.torproject.org">
+<!ENTITY aboutTor.torbrowser_user_manual.link "https://tb-manual.torproject.org/en-US">
<!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 »">
diff --git a/src/chrome/locale/en/torbutton.dtd b/src/chrome/locale/en/torbutton.dtd
index c67ec6e..97a994f 100644
--- a/src/chrome/locale/en/torbutton.dtd
+++ b/src/chrome/locale/en/torbutton.dtd
@@ -59,5 +59,3 @@
<!ENTITY torbutton.prefs.sec_webfonts_desc "Some fonts and icons may display incorrectly.">
<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "Website-provided font files are blocked.">
<!ENTITY torbutton.circuit_display.title "Tor circuit for this site">
-<!ENTITY torbutton.torbrowser_user_manual.label "Tor Browser User Manual">
-<!ENTITY torbutton.torbrowser_user_manual.accesskey "M">
diff --git a/src/chrome/locale/es/aboutTor.dtd b/src/chrome/locale/es/aboutTor.dtd
index 6983c83..0fddda4 100644
--- a/src/chrome/locale/es/aboutTor.dtd
+++ b/src/chrome/locale/es/aboutTor.dtd
@@ -29,8 +29,9 @@
<!ENTITY aboutTor.whatnextAnswer.label "¡Tor NO es todo lo que necesita para navegar anónimamente! Puede necesitar cambiar alguno de sus hábitos de navegación para asegurar que su identidad permanezca segura.">
<!ENTITY aboutTor.whatnext.label "Consejos para permenecer anónimo »">
<!ENTITY aboutTor.whatnext.link "https://www.torproject.org/download/download.html.en#warning">
+<!ENTITY aboutTor.torbrowser_user_manual.accesskey "M">
<!ENTITY aboutTor.torbrowser_user_manual.label "Manual de usuario del Navegador Tor »">
-<!ENTITY aboutTor.torbrowser_user_manual.link "https://tb-manual.torproject.org">
+<!ENTITY aboutTor.torbrowser_user_manual.link "https://tb-manual.torproject.org/es-ES">
<!ENTITY aboutTor.helpInfo1.label "¡Usted puede ayudar!">
<!ENTITY aboutTor.helpInfo2.label "Hay muchas formas en que las puede ayudar a hacer la red Tor más rápida y fuerte.">
<!ENTITY aboutTor.helpInfo3.label "Ejecutar un nodo de repetidor Tor »">
diff --git a/src/chrome/locale/fr/aboutTor.dtd b/src/chrome/locale/fr/aboutTor.dtd
index ad72a27..c2e990b 100644
--- a/src/chrome/locale/fr/aboutTor.dtd
+++ b/src/chrome/locale/fr/aboutTor.dtd
@@ -29,8 +29,9 @@
<!ENTITY aboutTor.whatnextAnswer.label "Tor n'est PAS tout ce dont vous avez besoin pour naviguer anonymement! Vous aurez peut-être à changer certaines de vos habitudes de navigation pour garder votre identité en sécurité.">
<!ENTITY aboutTor.whatnext.label "Conseils pour rester anonyme »">
<!ENTITY aboutTor.whatnext.link "https://www.torproject.org/download/download.html#warning">
+<!ENTITY aboutTor.torbrowser_user_manual.accesskey "G">
<!ENTITY aboutTor.torbrowser_user_manual.label "Le guide d'utilisation du navigateur Tor »">
-<!ENTITY aboutTor.torbrowser_user_manual.link "https://tb-manual.torproject.org">
+<!ENTITY aboutTor.torbrowser_user_manual.link "https://tb-manual.torproject.org/fr">
<!ENTITY aboutTor.helpInfo1.label "Vous pouvez aider !">
<!ENTITY aboutTor.helpInfo2.label "Vous pouvez aider à rendre le réseau Tor plus rapide et plus puissant de plusieurs façons :">
<!ENTITY aboutTor.helpInfo3.label "Faire tourner un nœud relais Tor »">
diff --git a/src/chrome/locale/pt-BR/aboutTor.dtd b/src/chrome/locale/pt-BR/aboutTor.dtd
index 04548e0..7991929 100644
--- a/src/chrome/locale/pt-BR/aboutTor.dtd
+++ b/src/chrome/locale/pt-BR/aboutTor.dtd
@@ -29,8 +29,9 @@
<!ENTITY aboutTor.whatnextAnswer.label "Tor NÃO é tudo o que você precisa para navegar anonimamente! Para isso, você precisará mudar alguns hábitos de utilização da Internet, que garantirão a proteção da sua identidade. ">
<!ENTITY aboutTor.whatnext.label "Dicas para garantir seu anonimato"">
<!ENTITY aboutTor.whatnext.link "https://www.torproject.org/download/download.html.en#warning">
+<!ENTITY aboutTor.torbrowser_user_manual.accesskey "M">
<!ENTITY aboutTor.torbrowser_user_manual.label "Manual de Uso do Navegador Tor » ">
-<!ENTITY aboutTor.torbrowser_user_manual.link "https://tb-manual.torproject.org">
+<!ENTITY aboutTor.torbrowser_user_manual.link "https://tb-manual.torproject.org/pt-BR">
<!ENTITY aboutTor.helpInfo1.label "Você pode ajudar!">
<!ENTITY aboutTor.helpInfo2.label "Existem várias maneiras de ajudar a rede Tor a tornar-se mais rápida e eficaz:">
<!ENTITY aboutTor.helpInfo3.label "Rodar um Nó de Retransmissor Tor »">
1
0

[tor-browser/tor-browser-45.6.0esr-6.5-1] Bug 20589: Adding new MAR signing key
by gk@torproject.org 18 Jan '17
by gk@torproject.org 18 Jan '17
18 Jan '17
commit d69306e9517d718a6019b6f4814ef93591185895
Author: Georg Koppen <gk(a)torproject.org>
Date: Thu Jan 12 09:43:22 2017 +0000
Bug 20589: Adding new MAR signing key
We make the certificate for the secondary key the new primary one,
partly due to #15532 and add the certificate for the new key as the
secondary one.
---
toolkit/mozapps/update/updater/release_primary.der | Bin 1229 -> 1229 bytes
toolkit/mozapps/update/updater/release_secondary.der | Bin 1229 -> 1229 bytes
2 files changed, 0 insertions(+), 0 deletions(-)
diff --git a/toolkit/mozapps/update/updater/release_primary.der b/toolkit/mozapps/update/updater/release_primary.der
index 542fb24..49a7c01 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 49a7c01..cce7860 100644
Binary files a/toolkit/mozapps/update/updater/release_secondary.der and b/toolkit/mozapps/update/updater/release_secondary.der differ
1
0
commit 7439de870b396a31bacddf7968e2a1c24ad523c7
Author: Georg Koppen <gk(a)torproject.org>
Date: Tue Jan 17 12:13:46 2017 +0000
Fold in missing 1.9.5 changelogs
---
src/CHANGELOG | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/src/CHANGELOG b/src/CHANGELOG
index 8120096..62901a5 100644
--- a/src/CHANGELOG
+++ b/src/CHANGELOG
@@ -1,6 +1,9 @@
1.9.6.9
* Bug 20947: Donation banner improvements
+1.9.5.13
+ * Bug 20947: Donation banner improvements
+
1.9.6.8
* Bug 16622: Timezone spoofing moved to tor-browser.git
* Bug 20701: Allow the directory listing stylesheet in the content policy
@@ -27,6 +30,10 @@
* Bug 20388+20399+20394: Code clean-up
* Translation updates
+1.9.5.12
+ * Bug 20414: Add donation banner on about:tor for 2016 campaign
+ * Translation updates
+
1.9.6.4
* Bug 17334: Move referrer spoofing for .onion domains into tor-browser.git
* Bug 17767: Make "JavaScript disabled" more visible in Security Slider
@@ -40,6 +47,10 @@
* Bug 14271: Make Torbutton work with Unix Domain Socket option
* Translation updates
+1.9.5.7
+ * Bug 18589: Clear site security settings during New Identity
+ * Bug 19906: "Maximizing Tor Browser" Notification can exist multiple times
+
1.9.6.1
* Bug 19206: Avoid SOCKS auth and NEWNYM collisions when sharing a tor client
* Bug 19417: Disable asm.js (but add code to clear on New Identity if enabled)
@@ -47,6 +58,13 @@
* Bug 19273: Improve external app launch handling and associated warnings
* Bug 8725: Block addon resource and url fingerprinting with nsIContentPolicy
+1.9.5.6
+ * Bug 19417: Disable asmjs for now
+ * Bug 19689: Use proper parent windows for plugin prompt
+
+1.9.5.5
+ * Bug 19417: Clear asmjscache
+
1.9.6
* Bug 18743: Pref to hide 'Sign in to Sync' button in hamburger menu
* Bug 18905: Hide unusable items from help menu
1
0

17 Jan '17
commit 5144d4e8d7156aae222a0ea4d57425d387eb62e9
Author: Georg Koppen <gk(a)torproject.org>
Date: Tue Jan 17 11:17:50 2017 +0000
Fix typos in macOS build script
---
gitian/mkbundle-mac.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gitian/mkbundle-mac.sh b/gitian/mkbundle-mac.sh
index eaec986..ed05b22 100755
--- a/gitian/mkbundle-mac.sh
+++ b/gitian/mkbundle-mac.sh
@@ -97,7 +97,7 @@ cd mac-desktop.dmg
rm -f $GITIAN_DIR/inputs/dmg-desktop.tar.xz
$WRAPPER_DIR/build-helpers/dtar.sh $GITIAN_DIR/inputs/dmg-desktop.tar.xz .
cd ../mac-applications.dmg
-rm -f $GITIAN_DIR/inputs/dmg-applications.tar-gz
+rm -f $GITIAN_DIR/inputs/dmg-applications.tar.xz
$WRAPPER_DIR/build-helpers/dtar.sh $GITIAN_DIR/inputs/dmg-applications.tar.xz .
cd $WRAPPER_DIR
1
0

[tor-browser-bundle/maint-6.5] No sandboxing on the stable series yet
by gk@torproject.org 17 Jan '17
by gk@torproject.org 17 Jan '17
17 Jan '17
commit 739843fe174510efe4cef427daab1f32b01cdcf4
Author: Georg Koppen <gk(a)torproject.org>
Date: Tue Jan 17 11:01:15 2017 +0000
No sandboxing on the stable series yet
---
gitian/versions.alpha | 3 ---
1 file changed, 3 deletions(-)
diff --git a/gitian/versions.alpha b/gitian/versions.alpha
index a8a08c1..585037b 100755
--- a/gitian/versions.alpha
+++ b/gitian/versions.alpha
@@ -41,9 +41,6 @@ GO_X_CRYPTO_TAG=4ed45ec682102c643324fae5dff8dab085b6c300
GO_X_NET_TAG=7dbad50ab5b31073856416cdcfeb2796d682f844
OBFS4_TAG=obfs4proxy-0.0.5
NOTOFONTS_TAG=720e34851382ee3c1ef024d8dffb68ffbfb234c2
-ERRORS_TAG=248dadf4e9068a0b3e79f02ed0a610d935de5302
-GB_TAG=06cc925cce6592e922dcc4839a8b44feb384e71e
-SANDBOX_TAG=sandboxed-tor-browser-0.0.2
GITIAN_TAG=tor-browser-builder-4-2
1
0

17 Jan '17
commit cc1fd58f8fc99d580e5d032ac113e08409f786be
Author: Georg Koppen <gk(a)torproject.org>
Date: Wed Jan 11 10:31:52 2017 +0000
Bug 21194: Show snowflake in the circuit display
---
src/modules/tor-control-port.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/modules/tor-control-port.js b/src/modules/tor-control-port.js
index b3d431a..3491efc 100644
--- a/src/modules/tor-control-port.js
+++ b/src/modules/tor-control-port.js
@@ -486,8 +486,8 @@ info.bridgeParser = function(bridgeLine) {
// Several bridge types have a similar format:
} else {
result.type = tokens[0];
- if (["flashproxy", "fte", "meek", "obfs3", "obfs4", "scramblesuit"]
- .indexOf(result.type) >= 0) {
+ if (["flashproxy", "fte", "meek", "obfs3", "obfs4", "scramblesuit",
+ "snowflake"].indexOf(result.type) >= 0) {
[result.address, result.ID] = tokens.slice(1);
}
}
1
0

[tor-launcher/maint-0.2.10] Bug 20951: Back out Unix domain socket related patches for Tor Browser 6.5
by gk@torproject.org 17 Jan '17
by gk@torproject.org 17 Jan '17
17 Jan '17
commit d99650b338f23d824cbd9d3cc91559ba607a465e
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Tue Jan 10 12:03:41 2017 -0500
Bug 20951: Back out Unix domain socket related patches for Tor Browser 6.5
Revert the following commits, preserving the _strUnescape() fixes that
were made as part of Bug 20111:
8871259c966755233b134a5ddb2b4926539d25c6
Bug 14272: Make Tor Launcher work with Unix Domain Socket option
32ddac7015be571c336be686b4f901103d0d36f6
Fix typo
fa4e114a20067810af0c5cc6a57aa6e849386418
fixup! Bug 14272: Make Tor Launcher work with Unix Domain Socket option
8ca52414916c3d8bc2a2974017d759901ddc1736
Bug 20111: use Unix domain sockets for SOCKS port by default
4dd8f6130f931616cf014e0ded444c30e04c8bad
Bug 20185: Avoid using Unix domain socket paths that are too long
---
src/components/tl-process.js | 290 +++++++++++++++++++++-----
src/components/tl-protocol.js | 222 ++------------------
src/defaults/preferences/prefs.js | 25 +--
src/modules/tl-util.jsm | 415 +-------------------------------------
4 files changed, 254 insertions(+), 698 deletions(-)
diff --git a/src/components/tl-process.js b/src/components/tl-process.js
index 717c338..48be93d 100644
--- a/src/components/tl-process.js
+++ b/src/components/tl-process.js
@@ -16,6 +16,8 @@ XPCOMUtils.defineLazyModuleGetter(this, "TorLauncherUtil",
"resource://torlauncher/modules/tl-util.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "TorLauncherLogger",
"resource://torlauncher/modules/tl-logger.jsm");
+XPCOMUtils.defineLazyModuleGetter(this, "FileUtils",
+ "resource://gre/modules/FileUtils.jsm");
function TorProcessService()
{
@@ -29,6 +31,8 @@ TorProcessService.prototype =
{
kContractID : "@torproject.org/torlauncher-process-service;1",
kServiceName : "Tor Launcher Process Service",
+ kThunderbirdID: "{3550f703-e582-4d05-9a08-453d09bdfdc6}",
+ kInstantbirdID: "{33cb9019-c295-46dd-be21-8c4936574bee}",
kClassID: Components.ID("{FE7B4CAF-BCF4-4848-8BFF-EFA66C9AFDA1}"),
kTorLauncherExtPath: "tor-launcher(a)torproject.org", // This could vary.
@@ -142,11 +146,7 @@ TorProcessService.prototype =
this.mObsSvc.notifyObservers(null, "TorProcessExited", null);
- if (this.mIsQuitting)
- {
- TorLauncherUtil.cleanupTempDirectories();
- }
- else
+ if (!this.mIsQuitting)
{
this.mProtocolSvc.TorCleanupConnection();
@@ -311,6 +311,11 @@ TorProcessService.prototype =
mProtocolSvc: null,
mTorProcess: null, // nsIProcess
mTorProcessStartTime: null, // JS Date.now()
+ // mIsUserDataOutsideOfAppDir is true when TorBrowser-Data is used.
+ // (cached; access via this._isUserDataOutsideOfAppDir)
+ mIsUserDataOutsideOfAppDir: undefined,
+ mAppDir: null, // nsIFile (cached; access via this._appDir)
+ mDataDir: null, // nsIFile (cached; access via this._dataDir)
mControlConnTimer: null,
mControlConnDelayMS: 0,
mQuitSoon: false, // Quit was requested by the user; do so soon.
@@ -332,15 +337,11 @@ TorProcessService.prototype =
// Get the Tor data directory first so it is created before we try to
// construct paths to files that will be inside it.
- var dataDir = TorLauncherUtil.getTorFile("tordatadir", true);
- var exeFile = TorLauncherUtil.getTorFile("tor", false);
- var torrcFile = TorLauncherUtil.getTorFile("torrc", true);
- var torrcDefaultsFile =
- TorLauncherUtil.getTorFile("torrc-defaults", false);
+ var dataDir = this._getTorFile("tordatadir", true);
+ var exeFile = this._getTorFile("tor", false);
+ var torrcFile = this._getTorFile("torrc", true);
+ var torrcDefaultsFile = this._getTorFile("torrc-defaults", false);
var hashedPassword = this.mProtocolSvc.TorGetPassword(true);
- var controlIPCFile = this.mProtocolSvc.TorGetControlIPCFile();
- var controlPort = this.mProtocolSvc.TorGetControlPort();
- var socksPortInfo = this.mProtocolSvc.TorGetSOCKSPortInfo();
var detailsKey;
if (!exeFile)
@@ -362,6 +363,7 @@ TorProcessService.prototype =
return;
}
+
// The geoip and geoip6 files are in the same directory as torrc-defaults.
var geoipFile = torrcDefaultsFile.clone();
geoipFile.leafName = "geoip";
@@ -386,40 +388,6 @@ TorProcessService.prototype =
args.push("HashedControlPassword");
args.push(hashedPassword);
- // Include a ControlPort argument to support switching between
- // a TCP port and an IPC port (e.g., a Unix domain socket).
- let controlPortArg;
- if (controlIPCFile)
- controlPortArg = this._ipcPortArg(controlIPCFile);
- else if (controlPort)
- controlPortArg = "" + controlPort;
- if (controlPortArg)
- {
- args.push("ControlPort");
- args.push(controlPortArg);
- }
-
- // Include a SocksPort argument to support switching between
- // a TCP port and an IPC port (e.g., a Unix domain socket).
- if (socksPortInfo)
- {
- let socksPortArg;
- if (socksPortInfo.ipcFile)
- socksPortArg = this._ipcPortArg(socksPortInfo.ipcFile)
- else if (socksPortInfo.host && (socksPortInfo.port != 0))
- socksPortArg = socksPortInfo.host + ':' + socksPortInfo.port;
-
- if (socksPortArg)
- {
- let socksPortFlags = TorLauncherUtil.getCharPref(
- "extensions.torlauncher.socks_port_flags");
- if (socksPortFlags)
- socksPortArg += ' ' + socksPortFlags;
- args.push("SocksPort");
- args.push(socksPortArg);
- }
- }
-
var pid = this._getpid();
if (0 != pid)
{
@@ -489,13 +457,6 @@ TorProcessService.prototype =
}
}, // _startTor()
- // Return a ControlPort or SocksPort argument for aIPCFile (an nsIFile).
- // The result is unix:/path or unix:"/path with spaces" with appropriate
- // C-style escaping within the path portion.
- _ipcPortArg: function(aIPCFile)
- {
- return "unix:" + this.mProtocolSvc.TorEscapeString(aIPCFile.path);
- },
_controlTor: function()
{
@@ -715,6 +676,227 @@ TorProcessService.prototype =
return argsArray;
},
+ // Returns an nsIFile.
+ // If aCreate is true and the file doesn't exist, it is created.
+ _getTorFile: function(aTorFileType, aCreate)
+ {
+ if (!aTorFileType)
+ return null;
+
+ let isRelativePath = true;
+ let isUserData = (aTorFileType != "tor") &&
+ (aTorFileType != "torrc-defaults");
+ let prefName = "extensions.torlauncher." + aTorFileType + "_path";
+ let path = TorLauncherUtil.getCharPref(prefName);
+ if (path)
+ {
+ let re = (TorLauncherUtil.isWindows) ? /^[A-Za-z]:\\/ : /^\//;
+ isRelativePath = !re.test(path);
+ }
+ else
+ {
+ // Get default path.
+ if (this._isUserDataOutsideOfAppDir)
+ {
+ // This block is used for the TorBrowser-Data/ case.
+ if (TorLauncherUtil.isWindows)
+ {
+ if ("tor" == aTorFileType)
+ path = "TorBrowser\\Tor\\tor.exe";
+ else if ("torrc-defaults" == aTorFileType)
+ path = "TorBrowser\\Tor\\torrc-defaults";
+ else if ("torrc" == aTorFileType)
+ path = "Tor\\torrc";
+ else if ("tordatadir" == aTorFileType)
+ path = "Tor";
+ }
+ else if (TorLauncherUtil.isMac)
+ {
+ if ("tor" == aTorFileType)
+ path = "Contents/Resources/TorBrowser/Tor/tor";
+ else if ("torrc-defaults" == aTorFileType)
+ path = "Contents/Resources/TorBrowser/Tor/torrc-defaults";
+ else if ("torrc" == aTorFileType)
+ path = "Tor/torrc";
+ else if ("tordatadir" == aTorFileType)
+ path = "Tor";
+ }
+ else // Linux and others.
+ {
+ if ("tor" == aTorFileType)
+ path = "TorBrowser/Tor/tor";
+ else if ("torrc-defaults" == aTorFileType)
+ path = "TorBrowser/Tor/torrc-defaults";
+ else if ("torrc" == aTorFileType)
+ path = "Tor/torrc";
+ else if ("tordatadir" == aTorFileType)
+ path = "Tor";
+ }
+ }
+ else if (TorLauncherUtil.isWindows)
+ {
+ // This block is used for the non-TorBrowser-Data/ case.
+ if ("tor" == aTorFileType)
+ path = "Tor\\tor.exe";
+ else if ("torrc-defaults" == aTorFileType)
+ path = "Data\\Tor\\torrc-defaults";
+ else if ("torrc" == aTorFileType)
+ path = "Data\\Tor\\torrc";
+ else if ("tordatadir" == aTorFileType)
+ path = "Data\\Tor";
+ }
+ else // Linux, Mac OS and others.
+ {
+ // This block is also used for the non-TorBrowser-Data/ case.
+ if ("tor" == aTorFileType)
+ path = "Tor/tor";
+ else if ("torrc-defaults" == aTorFileType)
+ path = "Data/Tor/torrc-defaults";
+ else if ("torrc" == aTorFileType)
+ path = "Data/Tor/torrc";
+ else if ("tordatadir" == aTorFileType)
+ path = "Data/Tor";
+ }
+ }
+
+ if (!path)
+ return null;
+
+ try
+ {
+ let f;
+ if (isRelativePath)
+ {
+ // Turn 'path' into an absolute path.
+ if (this._isUserDataOutsideOfAppDir)
+ {
+ let baseDir = isUserData ? this._dataDir : this._appDir;
+ f = baseDir.clone();
+ }
+ else
+ {
+ f = this._appDir.clone();
+ f.append("TorBrowser");
+ }
+ f.appendRelativePath(path);
+ }
+ else
+ {
+ f = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
+ f.initWithPath(path);
+ }
+
+ if (!f.exists() && aCreate)
+ {
+ try
+ {
+ if ("tordatadir" == aTorFileType)
+ f.create(f.DIRECTORY_TYPE, FileUtils.PERMS_DIRECTORY);
+ else
+ f.create(f.NORMAL_FILE_TYPE, FileUtils.PERMS_FILE);
+ }
+ catch (e)
+ {
+ TorLauncherLogger.safelog(4, "unable to create " + f.path + ": ", e);
+ return null;
+ }
+ }
+
+ if (f.exists())
+ {
+ try { f.normalize(); } catch(e) {}
+
+ return f;
+ }
+
+ TorLauncherLogger.log(4, aTorFileType + " file not found: " + f.path);
+ }
+ catch(e)
+ {
+ TorLauncherLogger.safelog(4, "_getTorFile " + aTorFileType +
+ " failed for " + path + ": ", e);
+ }
+
+ return null; // File not found or error (logged above).
+ }, // _getTorFile()
+
+ get _isUserDataOutsideOfAppDir()
+ {
+ if (this.mIsUserDataOutsideOfAppDir == undefined)
+ {
+ // Determine if we are using a "side-by-side" data model by checking
+ // whether the user profile is outside of the app directory.
+ try
+ {
+ let ds = Cc["@mozilla.org/file/directory_service;1"]
+ .getService(Ci.nsIProperties);
+ let profDir = ds.get("ProfD", Ci.nsIFile);
+ this.mIsUserDataOutsideOfAppDir = !this._appDir.contains(profDir);
+ }
+ catch (e)
+ {
+ this.mIsUserDataOutsideOfAppDir = false;
+ }
+ }
+
+ return this.mIsUserDataOutsideOfAppDir;
+ }, // get _isUserDataOutsideOfAppDir
+
+ // Returns an nsIFile that points to the application directory.
+ // May throw.
+ get _appDir()
+ {
+ if (!this.mAppDir)
+ {
+ let topDir = Cc["@mozilla.org/file/directory_service;1"]
+ .getService(Ci.nsIProperties).get("CurProcD", Ci.nsIFile);
+ let appInfo = Cc["@mozilla.org/xre/app-info;1"]
+ .getService(Ci.nsIXULAppInfo);
+ // On Linux and Windows, we want to return the Browser/ directory.
+ // Because topDir ("CurProcD") points to Browser/browser on those
+ // platforms, we need to go up one level.
+ // On Mac OS, we want to return the TorBrowser.app/ directory.
+ // Because topDir points to Contents/Resources/browser on Mac OS,
+ // we need to go up 3 levels.
+ let tbbBrowserDepth = (TorLauncherUtil.isMac) ? 3 : 1;
+ if ((appInfo.ID == this.kThunderbirdID) ||
+ (appInfo.ID == this.kInstantbirdID))
+ {
+ // On Thunderbird/Instantbird, the topDir is the root dir and not
+ // browser/, so we need to iterate one level less than Firefox.
+ --tbbBrowserDepth;
+ }
+
+ while (tbbBrowserDepth > 0)
+ {
+ let didRemove = (topDir.leafName != ".");
+ topDir = topDir.parent;
+ if (didRemove)
+ tbbBrowserDepth--;
+ }
+
+ this.mAppDir = topDir;
+ }
+
+ return this.mAppDir;
+ }, // get _appDir
+
+ // Returns an nsIFile that points to the TorBrowser-Data/ directory.
+ // This function is only used when this._isUserDataOutsideOfAppDir == true.
+ // May throw.
+ get _dataDir()
+ {
+ if (!this.mDataDir)
+ {
+ let ds = Cc["@mozilla.org/file/directory_service;1"]
+ .getService(Ci.nsIProperties);
+ let profDir = ds.get("ProfD", Ci.nsIFile);
+ this.mDataDir = profDir.parent.parent;
+ }
+
+ return this.mDataDir;
+ }, // get _dataDir
+
_getpid: function()
{
// Use nsIXULRuntime.processID if it is available.
diff --git a/src/components/tl-protocol.js b/src/components/tl-protocol.js
index 12f3910..581327e 100644
--- a/src/components/tl-protocol.js
+++ b/src/components/tl-protocol.js
@@ -17,8 +17,6 @@ XPCOMUtils.defineLazyModuleGetter(this, "TorLauncherUtil",
"resource://torlauncher/modules/tl-util.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "TorLauncherLogger",
"resource://torlauncher/modules/tl-logger.jsm");
-XPCOMUtils.defineLazyModuleGetter(this, "FileUtils",
- "resource://gre/modules/FileUtils.jsm");
function TorProtocolService()
@@ -33,48 +31,28 @@ function TorProtocolService()
try
{
- let isWindows = TorLauncherUtil.isWindows;
- let env = Cc["@mozilla.org/process/environment;1"]
+ var env = Cc["@mozilla.org/process/environment;1"]
.getService(Ci.nsIEnvironment);
- // Determine how Tor Launcher will connect to the Tor control port.
- // Environment variables get top priority followed by preferences.
- if (!isWindows && env.exists("TOR_CONTROL_IPC_PATH"))
+
+ if (env.exists("TOR_CONTROL_HOST"))
+ this.mControlHost = env.get("TOR_CONTROL_HOST");
+ else
{
- let ipcPath = env.get("TOR_CONTROL_IPC_PATH");
- this.mControlIPCFile = new FileUtils.File(ipcPath);
+ this.mControlHost = TorLauncherUtil.getCharPref(
+ "extensions.torlauncher.control_host", "127.0.0.1");
}
+
+ if (env.exists("TOR_CONTROL_PORT"))
+ this.mControlPort = parseInt(env.get("TOR_CONTROL_PORT"), 10);
else
{
- // Check for TCP host and port environment variables.
- if (env.exists("TOR_CONTROL_HOST"))
- this.mControlHost = env.get("TOR_CONTROL_HOST");
- if (env.exists("TOR_CONTROL_PORT"))
- this.mControlPort = parseInt(env.get("TOR_CONTROL_PORT"), 10);
-
- let useIPC = !isWindows && TorLauncherUtil.getBoolPref(
- "extensions.torlauncher.control_port_use_ipc", true);
- if (!this.mControlHost && !this.mControlPort && useIPC)
- this.mControlIPCFile = TorLauncherUtil.getTorFile("control_ipc", false);
- else
- {
- if (!this.mControlHost)
- {
- this.mControlHost = TorLauncherUtil.getCharPref(
- "extensions.torlauncher.control_host", "127.0.0.1");
- }
- if (!this.mControlPort)
- {
- this.mControlPort = TorLauncherUtil.getIntPref(
+ this.mControlPort = TorLauncherUtil.getIntPref(
"extensions.torlauncher.control_port", 9151);
- }
- }
}
// Populate mControlPassword so it is available when starting tor.
if (env.exists("TOR_CONTROL_PASSWD"))
- {
this.mControlPassword = env.get("TOR_CONTROL_PASSWD");
- }
else if (env.exists("TOR_CONTROL_COOKIE_AUTH_FILE"))
{
// TODO: test this code path (TOR_CONTROL_COOKIE_AUTH_FILE).
@@ -85,117 +63,6 @@ function TorProtocolService()
if (!this.mControlPassword)
this.mControlPassword = this._generateRandomPassword();
-
- // Determine what kind of SOCKS port Tor and the browser will use.
- // On Windows (where Unix domain sockets are not supported), TCP is
- // always used.
- //
- // The following environment variables are supported and take
- // precedence over preferences:
- // TOR_SOCKS_IPC_PATH (file system path; ignored on Windows)
- // TOR_SOCKS_HOST
- // TOR_SOCKS_PORT
- //
- // The following preferences are consulted:
- // network.proxy.socks
- // network.proxy.socks_port
- // extensions.torlauncher.socks_port_use_ipc (Boolean)
- // extensions.torlauncher.socks_ipc_path (file system path)
- // If extensions.torlauncher.socks_ipc_path is empty, a default
- // path is used (<tor-data-directory>/socks.socket).
- //
- // When using TCP, if a value is not defined via an env variable it is
- // taken from the corresponding browser preference if possible. The
- // exceptions are:
- // If network.proxy.socks contains a file: URL, a default value of
- // "127.0.0.1" is used instead.
- // If the network.proxy.socks_port value is 0, a default value of
- // 9150 is used instead.
- //
- // Supported scenarios:
- // 1. By default, an IPC object at a default path is used.
- // 2. If extensions.torlauncher.socks_port_use_ipc is set to false,
- // a TCP socket at 127.0.0.1:9150 is used, unless different values
- // are set in network.proxy.socks and network.proxy.socks_port.
- // 3. If the TOR_SOCKS_IPC_PATH env var is set, an IPC object at that
- // path is used (e.g., a Unix domain socket).
- // 4. If the TOR_SOCKS_HOST and/or TOR_SOCKS_PORT env vars are set, TCP
- // is used. Values not set via env vars will be taken from the
- // network.proxy.socks and network.proxy.socks_port prefs as described
- // above.
- // 5. If extensions.torlauncher.socks_port_use_ipc is true and
- // extensions.torlauncher.socks_ipc_path is set, an IPC object at
- // the specified path is used.
- // 6. Tor Launcher is disabled. Torbutton will respect the env vars if
- // present; if not, the values in network.proxy.socks and
- // network.proxy.socks_port are used without modification.
-
- let useIPC;
- this.mSOCKSPortInfo = { ipcFile: undefined, host: undefined, port: 0 };
- if (!isWindows && env.exists("TOR_SOCKS_IPC_PATH"))
- {
- let ipcPath = env.get("TOR_SOCKS_IPC_PATH");
- this.mSOCKSPortInfo.ipcFile = new FileUtils.File(ipcPath);
- useIPC = true;
- }
- else
- {
- // Check for TCP host and port environment variables.
- if (env.exists("TOR_SOCKS_HOST"))
- {
- this.mSOCKSPortInfo.host = env.get("TOR_SOCKS_HOST");
- useIPC = false;
- }
- if (env.exists("TOR_SOCKS_PORT"))
- {
- this.mSOCKSPortInfo.port = parseInt(env.get("TOR_SOCKS_PORT"), 10);
- useIPC = false;
- }
- }
-
- if (useIPC === undefined)
- {
- useIPC = !isWindows && TorLauncherUtil.getBoolPref(
- "extensions.torlauncher.socks_port_use_ipc", true);
- }
-
- // Fill in missing SOCKS info from prefs.
- if (useIPC)
- {
- if (!this.mSOCKSPortInfo.ipcFile)
- {
- this.mSOCKSPortInfo.ipcFile =
- TorLauncherUtil.getTorFile("socks_ipc", false);
- }
- }
- else
- {
- if (!this.mSOCKSPortInfo.host)
- {
- let socksAddr = TorLauncherUtil.getCharPref("network.proxy.socks",
- "127.0.0.1");
- let socksAddrHasHost = (socksAddr && !socksAddr.startsWith("file:"));
- this.mSOCKSPortInfo.host = socksAddrHasHost ? socksAddr : "127.0.0.1";
- }
-
- if (!this.mSOCKSPortInfo.port)
- {
- let socksPort = TorLauncherUtil.getIntPref("network.proxy.socks_port",
- 0);
- this.mSOCKSPortInfo.port = (socksPort != 0) ? socksPort : 9150;
- }
- }
-
- TorLauncherLogger.log(3, "SOCKS port type: " + (useIPC ? "IPC" : "TCP"));
- if (useIPC)
- {
- TorLauncherLogger.log(3, "ipcFile: " + this.mSOCKSPortInfo.ipcFile.path);
- }
- else
- {
- TorLauncherLogger.log(3, "SOCKS host: " + this.mSOCKSPortInfo.host);
- TorLauncherLogger.log(3, "SOCKS port: " + this.mSOCKSPortInfo.port);
- }
}
catch(e)
{
@@ -274,19 +141,6 @@ TorProtocolService.prototype =
kCmdStatusOK: 250,
kCmdStatusEventNotification: 650,
- TorGetControlIPCFile: function()
- {
- if (!this.mControlIPCFile)
- return undefined;
-
- return this.mControlIPCFile.clone();
- },
-
- TorGetControlPort: function()
- {
- return this.mControlPort;
- },
-
// Returns Tor password string or null if an error occurs.
TorGetPassword: function(aPleaseHash)
{
@@ -294,18 +148,6 @@ TorProtocolService.prototype =
return (aPleaseHash) ? this._hashPassword(pw) : pw;
},
- TorGetSOCKSPortInfo: function()
- {
- return this.mSOCKSPortInfo;
- },
-
- // Escape non-ASCII characters for use within the Tor Control protocol.
- // Returns a string.
- TorEscapeString: function(aStr)
- {
- return this._strEscape(aStr);
- },
-
// NOTE: Many Tor protocol functions return a reply object, which is a
// a JavaScript object that has the following fields:
// reply.statusCode -- integer, e.g., 250
@@ -672,9 +514,7 @@ TorProtocolService.prototype =
mConsoleSvc: null,
mControlPort: null,
mControlHost: null,
- mControlIPCFile: null, // An nsIFile if using IPC for control port.
mControlPassword: null, // JS string that contains hex-encoded password.
- mSOCKSPortInfo: null, // An object that contains ipcFile, host, port.
mControlConnection: null, // This is cached and reused.
mEventMonitorConnection: null,
mEventMonitorBuffer: null,
@@ -722,44 +562,12 @@ TorProtocolService.prototype =
var conn;
try
{
- let sts = Cc["@mozilla.org/network/socket-transport-service;1"]
+ var sts = Cc["@mozilla.org/network/socket-transport-service;1"]
.getService(Ci.nsISocketTransportService);
- let socket;
- if (this.mControlIPCFile)
- {
- let exists = this.mControlIPCFile.exists();
- if (!exists)
- {
- TorLauncherLogger.log(5, "Control port IPC object does not exist: " +
- this.mControlIPCFile.path);
- }
- else
- {
- let isSpecial = this.mControlIPCFile.isSpecial();
- if (!isSpecial)
- {
- TorLauncherLogger.log(5,
- "Control port IPC object is not a special file: " +
- this.mControlIPCFile.path);
- }
- else
- {
- TorLauncherLogger.log(2, "Opening control connection to " +
- this.mControlIPCFile.path);
- socket = sts.createUnixDomainTransport(this.mControlIPCFile);
- }
- }
- }
- else
- {
- TorLauncherLogger.log(2, "Opening control connection to " +
+ TorLauncherLogger.log(2, "Opening control connection to " +
this.mControlHost + ":" + this.mControlPort);
- socket = sts.createTransport(null, 0, this.mControlHost,
- this.mControlPort, null);
- }
-
- if (!socket)
- return null;
+ var socket = sts.createTransport(null, 0, this.mControlHost,
+ this.mControlPort, null);
// Our event monitor connection is non-blocking and unbuffered (an
// asyncWait() call is used so we only read data when we know that
diff --git a/src/defaults/preferences/prefs.js b/src/defaults/preferences/prefs.js
index ea5ea80..ac1af21 100644
--- a/src/defaults/preferences/prefs.js
+++ b/src/defaults/preferences/prefs.js
@@ -1,33 +1,12 @@
-pref("extensions.torlauncher.start_tor", true);
-pref("extensions.torlauncher.prompt_at_startup", true);
-
pref("extensions.torlauncher.loglevel", 4); // 1=verbose, 2=debug, 3=info, 4=note, 5=warn
pref("extensions.torlauncher.logmethod", 1); // 0=stdout, 1=errorconsole, 2=debuglog
pref("extensions.torlauncher.max_tor_log_entries", 1000);
-// By default, an IPC object (e.g., a Unix domain socket) at a default
-// location is used for the Tor control port.
-// Change control_port_use_ipc to false to use a TCP connection instead, as
-// defined by control_host and control_port.
-// Modify control_ipc_path to override the default IPC object location. If a
-// relative path is used, it is handled like torrc_path (see below).
-pref("extensions.torlauncher.control_port_use_ipc", true);
-pref("extensions.torlauncher.control_ipc_path", "");
pref("extensions.torlauncher.control_host", "127.0.0.1");
pref("extensions.torlauncher.control_port", 9151);
-// By default, an IPC object (e.g., a Unix domain socket) at a default
-// location is used for the Tor SOCKS port.
-// Change socks_port_use_ipc to false to use a TCP connection. When a
-// TCP connection is used, the host is taken from the network.proxy.socks
-// pref and the port is taken from the network.proxy.socks_port pref.
-// Modify socks_ipc_path to override the default IPC object location. If a
-// relative path is used, it is handled like torrc_path (see below).
-// Modify socks_port_flags to use a different set of SocksPort flags (but be
-// careful).
-pref("extensions.torlauncher.socks_port_use_ipc", true);
-pref("extensions.torlauncher.socks_ipc_path", "");
-pref("extensions.torlauncher.socks_port_flags", "IPv6Traffic PreferIPv6 KeepAliveIsolateSOCKSAuth");
+pref("extensions.torlauncher.start_tor", true);
+pref("extensions.torlauncher.prompt_at_startup", true);
// The tor_path is relative to the application directory. On Linux and
// Windows this is the Browser/ directory that contains the firefox
diff --git a/src/modules/tl-util.jsm b/src/modules/tl-util.jsm
index 313a51b..3c7d80b 100644
--- a/src/modules/tl-util.jsm
+++ b/src/modules/tl-util.jsm
@@ -11,19 +11,14 @@ let EXPORTED_SYMBOLS = [ "TorLauncherUtil" ];
const Cc = Components.classes;
const Ci = Components.interfaces;
-const Cu = Components.utils;
const kPropBundleURI = "chrome://torlauncher/locale/torlauncher.properties";
const kPropNamePrefix = "torlauncher.";
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-XPCOMUtils.defineLazyModuleGetter(this, "TorLauncherLogger",
- "resource://torlauncher/modules/tl-logger.jsm");
-
let TorLauncherUtil = // Public
{
get isMac()
{
- return TLUtilInternal._isMac;
+ return ("Darwin" == TLUtilInternal._OS);
},
get isWindows()
@@ -247,14 +242,6 @@ let TorLauncherUtil = // Public
} catch (e) {}
},
- clearUserPref: function(aPrefName)
- {
- try
- {
- TLUtilInternal.mPrefsSvc.clearUserPref(aPrefName);
- } catch (e) {}
- },
-
// Currently, this returns a random permutation of an array, bridgeArray.
// Later, we might want to change this function to weight based on the
// bridges' bandwidths.
@@ -374,281 +361,6 @@ let TorLauncherUtil = // Public
return undefined;
},
-
- // Returns an nsIFile.
- // If aTorFileType is "control_ipc" or "socks_ipc", aCreate is ignored
- // and there is no requirement that the IPC object exists.
- // For all other file types, null is returned if the file does not exist
- // and it cannot be created (it will be created if aCreate is true).
- getTorFile: function(aTorFileType, aCreate)
- {
- if (!aTorFileType)
- return null;
-
- let torFile; // an nsIFile to be returned
- let path; // a relative or absolute path that will determine torFile
-
- let isRelativePath = false;
- let isUserData = (aTorFileType != "tor") &&
- (aTorFileType != "torrc-defaults");
- let isControlIPC = ("control_ipc" == aTorFileType);
- let isSOCKSIPC = ("socks_ipc" == aTorFileType);
- let isIPC = isControlIPC || isSOCKSIPC;
- let checkIPCPathLen = true;
-
- const kControlIPCFileName = "control.socket";
- const kSOCKSIPCFileName = "socks.socket";
- let extraIPCPathLen = (isSOCKSIPC) ? 2 : 0;
- let ipcFileName;
- if (isControlIPC)
- ipcFileName = kControlIPCFileName;
- else if (isSOCKSIPC)
- ipcFileName = kSOCKSIPCFileName;
-
- // If this is the first request for an IPC path during this browser
- // session, remove the old temporary directory. This helps to keep /tmp
- // clean if the browser crashes or is killed.
- let ipcDirPath;
- if (isIPC && TLUtilInternal.mIsFirstIPCPathRequest)
- {
- this.cleanupTempDirectories();
- TLUtilInternal.mIsFirstIPCPathRequest = false;
- }
- else
- {
- // Retrieve path for IPC objects (it may have already been determined).
- ipcDirPath = this.getCharPref(TLUtilInternal.kIPCDirPrefName);
- }
-
- // First, check the _path preference for this file type.
- let prefName = "extensions.torlauncher." + aTorFileType + "_path";
- path = this.getCharPref(prefName);
- if (path)
- {
- let re = (this.isWindows) ? /^[A-Za-z]:\\/ : /^\//;
- isRelativePath = !re.test(path);
- checkIPCPathLen = false; // always try to use path if provided in pref
- }
- else if (isIPC)
- {
- if (ipcDirPath)
- {
- // We have already determined where IPC objects will be placed.
- torFile = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
- torFile.initWithPath(ipcDirPath);
- torFile.append(ipcFileName);
- checkIPCPathLen = false; // already checked.
- }
- else
- {
- // If XDG_RUNTIME_DIR is set, use it as the base directory for IPC
- // objects (e.g., Unix domain sockets) -- assuming it is not too long.
- let env = Cc["@mozilla.org/process/environment;1"]
- .getService(Ci.nsIEnvironment);
- if (env.exists("XDG_RUNTIME_DIR"))
- {
- let ipcDir = TLUtilInternal._createUniqueIPCDir(
- env.get("XDG_RUNTIME_DIR"));
- if (ipcDir)
- {
- let f = ipcDir.clone();
- f.append(ipcFileName);
- if (TLUtilInternal._isIPCPathLengthOK(f.path, extraIPCPathLen))
- {
- torFile = f;
- checkIPCPathLen = false; // no need to check again.
-
- // Store directory path so it can be reused for other IPC objects
- // and so it can be removed during exit.
- this.setCharPref(TLUtilInternal.kIPCDirPrefName, ipcDir.path);
- }
- else
- {
- // too long; remove the directory that we just created.
- ipcDir.remove(false);
- }
- }
- }
- }
- }
-
- if (!path && !torFile)
- {
- // No preference and no pre-determined IPC path: use a default path.
- isRelativePath = true;
- if (TLUtilInternal._isUserDataOutsideOfAppDir)
- {
- // This block is used for the TorBrowser-Data/ case.
- if (this.isWindows)
- {
- if ("tor" == aTorFileType)
- path = "TorBrowser\\Tor\\tor.exe";
- else if ("torrc-defaults" == aTorFileType)
- path = "TorBrowser\\Tor\\torrc-defaults";
- else if ("torrc" == aTorFileType)
- path = "Tor\\torrc";
- else if ("tordatadir" == aTorFileType)
- path = "Tor";
- }
- else if (this.isMac)
- {
- if ("tor" == aTorFileType)
- path = "Contents/Resources/TorBrowser/Tor/tor";
- else if ("torrc-defaults" == aTorFileType)
- path = "Contents/Resources/TorBrowser/Tor/torrc-defaults";
- else if ("torrc" == aTorFileType)
- path = "Tor/torrc";
- else if ("tordatadir" == aTorFileType)
- path = "Tor";
- else if (isIPC)
- path = "Tor/" + ipcFileName;
- }
- else // Linux and others.
- {
- if ("tor" == aTorFileType)
- path = "TorBrowser/Tor/tor";
- else if ("torrc-defaults" == aTorFileType)
- path = "TorBrowser/Tor/torrc-defaults";
- else if ("torrc" == aTorFileType)
- path = "Tor/torrc";
- else if ("tordatadir" == aTorFileType)
- path = "Tor";
- else if (isIPC)
- path = "Tor/" + ipcFileName;
- }
- }
- else if (this.isWindows)
- {
- // This block is used for the non-TorBrowser-Data/ case.
- if ("tor" == aTorFileType)
- path = "Tor\\tor.exe";
- else if ("torrc-defaults" == aTorFileType)
- path = "Data\\Tor\\torrc-defaults";
- else if ("torrc" == aTorFileType)
- path = "Data\\Tor\\torrc";
- else if ("tordatadir" == aTorFileType)
- path = "Data\\Tor";
- }
- else // Linux, Mac OS and others.
- {
- // This block is also used for the non-TorBrowser-Data/ case.
- if ("tor" == aTorFileType)
- path = "Tor/tor";
- else if ("torrc-defaults" == aTorFileType)
- path = "Data/Tor/torrc-defaults";
- else if ("torrc" == aTorFileType)
- path = "Data/Tor/torrc";
- else if ("tordatadir" == aTorFileType)
- path = "Data/Tor";
- else if (isIPC)
- path = "Data/Tor/" + ipcFileName;
- }
-
- if (!path)
- return null;
- }
-
- try
- {
- if (path)
- {
- if (isRelativePath)
- {
- // Turn 'path' into an absolute path.
- if (TLUtilInternal._isUserDataOutsideOfAppDir)
- {
- let baseDir = isUserData ? TLUtilInternal._dataDir
- : TLUtilInternal._appDir;
- torFile = baseDir.clone();
- }
- else
- {
- torFile = TLUtilInternal._appDir.clone();
- torFile.append("TorBrowser");
- }
- torFile.appendRelativePath(path);
- }
- else
- {
- torFile = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
- torFile.initWithPath(path);
- }
-
- if (!torFile.exists() && !isIPC && aCreate)
- {
- try
- {
- if ("tordatadir" == aTorFileType)
- torFile.create(torFile.DIRECTORY_TYPE, 0700);
- else
- torFile.create(torFile.NORMAL_FILE_TYPE, 0600);
- }
- catch (e)
- {
- TorLauncherLogger.safelog(4,
- "unable to create " + torFile.path + ": ", e);
- return null;
- }
- }
- }
-
- // If the file exists or an IPC object was requested, normalize the path
- // and return a file object. The control and SOCKS IPC objects will be
- // created by tor.
- if (torFile.exists() || isIPC)
- {
- try { torFile.normalize(); } catch(e) {}
-
- // Ensure that the IPC path length is short enough for use by the
- // operating system. If not, create and use a unique directory under
- // /tmp for all IPC objects. The created directory path is stored in
- // a preference so it can be reused for other IPC objects and so it
- // can be removed during exit.
- if (isIPC && checkIPCPathLen &&
- !TLUtilInternal._isIPCPathLengthOK(torFile.path, extraIPCPathLen))
- {
- torFile = TLUtilInternal._createUniqueIPCDir("/tmp");
- if (!torFile)
- {
- TorLauncherLogger.log(4,
- "failed to create unique directory under /tmp");
- return null;
- }
-
- this.setCharPref(TLUtilInternal.kIPCDirPrefName, torFile.path);
- torFile.append(ipcFileName);
- }
-
- return torFile;
- }
-
- TorLauncherLogger.log(4, aTorFileType + " file not found: "
- + torFile.path);
- }
- catch(e)
- {
- TorLauncherLogger.safelog(4, "getTorFile " + aTorFileType +
- " failed for " + path + ": ", e);
- }
-
- return null; // File not found or error (logged above).
- }, // getTorFile()
-
- cleanupTempDirectories: function()
- {
- try
- {
- let dirPath = this.getCharPref(TLUtilInternal.kIPCDirPrefName);
- this.clearUserPref(TLUtilInternal.kIPCDirPrefName);
- if (dirPath)
- {
- let f = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
- f.initWithPath(dirPath);
- if (f.exists())
- f.remove(false); // Remove directory if it is empty
- }
- } catch(e) {}
- },
};
@@ -657,19 +369,9 @@ Object.freeze(TorLauncherUtil);
let TLUtilInternal = // Private
{
- kThunderbirdID: "{3550f703-e582-4d05-9a08-453d09bdfdc6}",
- kInstantbirdID: "{33cb9019-c295-46dd-be21-8c4936574bee}",
- kIPCDirPrefName: "extensions.torlauncher.tmp_ipc_dir",
-
mPrefsSvc : null,
mStringBundle : null,
mOS : "",
- // mIsUserDataOutsideOfAppDir is true when TorBrowser-Data is used.
- mIsUserDataOutsideOfAppDir: undefined, // Boolean (cached; access via
- // this._isUserDataOutsideOfAppDir)
- mAppDir: null, // nsIFile (cached; access via this._appDir)
- mDataDir: null, // nsIFile (cached; access via this._dataDir)
- mIsFirstIPCPathRequest : true,
_init: function()
{
@@ -699,121 +401,6 @@ let TLUtilInternal = // Private
return this.mOS;
},
-
- get _isMac()
- {
- return ("Darwin" == this._OS);
- },
-
- get _isUserDataOutsideOfAppDir()
- {
- if (this.mIsUserDataOutsideOfAppDir == undefined)
- {
- // Determine if we are using a "side-by-side" data model by checking
- // whether the user profile is outside of the app directory.
- try
- {
- let ds = Cc["@mozilla.org/file/directory_service;1"]
- .getService(Ci.nsIProperties);
- let profDir = ds.get("ProfD", Ci.nsIFile);
- this.mIsUserDataOutsideOfAppDir = !this._appDir.contains(profDir);
- }
- catch (e)
- {
- this.mIsUserDataOutsideOfAppDir = false;
- }
- }
-
- return this.mIsUserDataOutsideOfAppDir;
- }, // get _isUserDataOutsideOfAppDir
-
- // Returns an nsIFile that points to the application directory.
- // May throw.
- get _appDir()
- {
- if (!this.mAppDir)
- {
- let topDir = Cc["@mozilla.org/file/directory_service;1"]
- .getService(Ci.nsIProperties).get("CurProcD", Ci.nsIFile);
- let appInfo = Cc["@mozilla.org/xre/app-info;1"]
- .getService(Ci.nsIXULAppInfo);
- // On Linux and Windows, we want to return the Browser/ directory.
- // Because topDir ("CurProcD") points to Browser/browser on those
- // platforms, we need to go up one level.
- // On Mac OS, we want to return the TorBrowser.app/ directory.
- // Because topDir points to Contents/Resources/browser on Mac OS,
- // we need to go up 3 levels.
- let tbbBrowserDepth = (this._isMac) ? 3 : 1;
- if ((appInfo.ID == this.kThunderbirdID) ||
- (appInfo.ID == this.kInstantbirdID))
- {
- // On Thunderbird/Instantbird, the topDir is the root dir and not
- // browser/, so we need to iterate one level less than Firefox.
- --tbbBrowserDepth;
- }
-
- while (tbbBrowserDepth > 0)
- {
- let didRemove = (topDir.leafName != ".");
- topDir = topDir.parent;
- if (didRemove)
- tbbBrowserDepth--;
- }
-
- this.mAppDir = topDir;
- }
-
- return this.mAppDir;
- }, // get _appDir
-
- // Returns an nsIFile that points to the TorBrowser-Data/ directory.
- // This function is only used when this._isUserDataOutsideOfAppDir == true.
- // May throw.
- get _dataDir()
- {
- if (!this.mDataDir)
- {
- let ds = Cc["@mozilla.org/file/directory_service;1"]
- .getService(Ci.nsIProperties);
- let profDir = ds.get("ProfD", Ci.nsIFile);
- this.mDataDir = profDir.parent.parent;
- }
-
- return this.mDataDir;
- }, // get _dataDir
-
- // Return true if aPath is short enough to be used as an IPC object path,
- // e.g., for a Unix domain socket path. aExtraLen is the "delta" necessary
- // to accommodate other IPC objects that have longer names; it is used to
- // account for "control.socket" vs. "socks.socket" (we want to ensure that
- // all IPC objects are placed in the same parent directory unless the user
- // has set prefs or env vars to explicitly specify the path for an object).
- // We enforce a maximum length of 100 because all operating systems allow
- // at least 100 characters for Unix domain socket paths.
- _isIPCPathLengthOK: function(aPath, aExtraLen)
- {
- const kMaxIPCPathLen = 100;
- return aPath && ((aPath.length + aExtraLen) <= kMaxIPCPathLen);
- },
-
- // Returns an nsIFile or null if a unique directory could not be created.
- _createUniqueIPCDir: function(aBasePath)
- {
- try
- {
- let d = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsIFile);
- d.initWithPath(aBasePath);
- d.append("Tor");
- d.createUnique(Ci.nsIFile.DIRECTORY_TYPE, 0700);
- return d;
- }
- catch (e)
- {
- TorLauncherLogger.safelog(4, "_createUniqueIPCDir failed for "
- + aBasePath + ": ", e);
- return null;
- }
- },
};
1
0
commit 49c4f6c519c3849cf6f3611c38cd2b38262a6fa7
Author: Georg Koppen <gk(a)torproject.org>
Date: Mon Jan 16 14:12:01 2017 +0000
Translation updates
---
src/chrome/locale/de/network-settings.dtd | 2 +-
src/chrome/locale/es-MX/network-settings.dtd | 46 ++++++++--------
src/chrome/locale/es/network-settings.dtd | 16 +++---
src/chrome/locale/fr-CA/network-settings.dtd | 28 +++++-----
src/chrome/locale/fr-CA/torlauncher.properties | 32 +++++------
src/chrome/locale/fr/network-settings.dtd | 76 +++++++++++++-------------
src/chrome/locale/fr/progress.dtd | 2 +-
src/chrome/locale/fr/torlauncher.properties | 54 +++++++++---------
src/chrome/locale/is/torlauncher.properties | 14 ++---
src/chrome/locale/ko-KR/network-settings.dtd | 18 +++---
src/chrome/locale/lo/torlauncher.properties | 2 +-
src/chrome/locale/lt/torlauncher.properties | 6 +-
src/chrome/locale/nb/torlauncher.properties | 6 +-
src/chrome/locale/nn/network-settings.dtd | 2 +-
src/chrome/locale/nn/torlauncher.properties | 26 ++++-----
src/chrome/locale/pt-BR/network-settings.dtd | 8 +--
src/chrome/locale/pt-BR/torlauncher.properties | 10 ++--
src/chrome/locale/th/network-settings.dtd | 12 ++--
18 files changed, 180 insertions(+), 180 deletions(-)
diff --git a/src/chrome/locale/de/network-settings.dtd b/src/chrome/locale/de/network-settings.dtd
index 2124fff..c635745 100644
--- a/src/chrome/locale/de/network-settings.dtd
+++ b/src/chrome/locale/de/network-settings.dtd
@@ -69,7 +69,7 @@
<!ENTITY torsettings.bridgeHelp2Heading "Durch das Internet">
<!ENTITY torsettings.bridgeHelp2 "Benutzen Sie einen Browser und besuchen Sie https://bridges.torproject.org">
<!ENTITY torsettings.bridgeHelp3Heading "Durch die automatische E-Mail-Antwort">
-<!ENTITY torsettings.bridgeHelp3.emailDesc "Schicken Sie eine E-Mail mit dem Text 'get bridges' an bridges(a)torproject.org. Um Missbrauch durch das Auslesen großer Mengen an Brücken zu erschweren, muss Ihre Anfrage jedoch von einem der folgenden E-Mail-Anbieter kommen:">
+<!ENTITY torsettings.bridgeHelp3.emailDesc "Schicken Sie eine E-Mail mit dem Text 'get bridges' an bridges(a)torproject.org. Um Missbrauch durch das Auslesen großer Mengen an Brücken zu erschweren, muss Ihre Anfrage jedoch von einem der folgenden E-Mail-Anbieter kommen (aufgelistet in der Reihenfolge der Präferenz):">
<!ENTITY torsettings.bridgeHelp3.emailList "https://www.riseup.net, https://mail.google.com, oder https://mail.yahoo.com">
<!ENTITY torsettings.bridgeHelp4Heading "Durch die Beratungsstelle">
<!ENTITY torsettings.bridgeHelp4 "Brückenadressen können auch mit Hilfe einer höflichen E-Mail an help(a)rt.torproject.org angefordert werden.  Bitte beachten Sie, dass jede Anfrage einzeln bearbeitet werden muss.">
diff --git a/src/chrome/locale/es-MX/network-settings.dtd b/src/chrome/locale/es-MX/network-settings.dtd
index 99d4197..6dca5f8 100644
--- a/src/chrome/locale/es-MX/network-settings.dtd
+++ b/src/chrome/locale/es-MX/network-settings.dtd
@@ -1,44 +1,44 @@
<!ENTITY torsettings.dialog.title "Configuración de red Tor">
<!-- For locale picker: -->
-<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
-<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+<!ENTITY torlauncher.localePicker.title "Lenguaje en el explorador de Tor">
+<!ENTITY torlauncher.localePicker.prompt "Por favor selecciona un lenguaje">
<!-- For "first run" wizard: -->
-<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
+<!ENTITY torsettings.prompt "Antes de conectarte a la red de Tor, necesitas proveer información sobre la conexión de Internet de esta computadora. ">
<!ENTITY torSettings.yes "Si">
<!ENTITY torSettings.no "No">
-<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
-<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings before I connect to the Tor network.">
-<!ENTITY torSettings.configure "Configure">
-<!ENTITY torSettings.connectPrompt2 "I would like to make a direct connection to the Tor network.">
-<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
+<!ENTITY torSettings.firstQuestion "Que describe mejor tu situación? Elige las opciones que apliquen. ">
+<!ENTITY torSettings.configurePrompt1 "La conexión de Internet de esta computadora esta censurada o en un proxy">
+<!ENTITY torSettings.configurePrompt2 "Necesito configurar un puente o ajustes del proxy local antes de que me conecte a la red Tor network.">
+<!ENTITY torSettings.configure "Configurar">
+<!ENTITY torSettings.connectPrompt2 "Me gustaría realizar una conexión directa a la red Tor. ">
+<!ENTITY torSettings.connectPrompt3 "Esto funcionara en la mayoría de las situaciones.">
<!ENTITY torSettings.connect "Conectar">
-<!ENTITY torSettings.proxyPageTitle "Local Proxy Configuration">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
+<!ENTITY torSettings.proxyPageTitle "Configuración del Proxy Local">
+<!ENTITY torSettings.proxyQuestion "Esta computadora necesita usar un proxy local para accesar el Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyExplanation1 "In most cases a local proxy is not needed, but it may be required when connecting through a company, school, or university network.">
-<!ENTITY torSettings.proxyExplanation2 "If you are not sure how to answer this question, look at the Internet settings in another browser or check your system's network settings to see whether a local proxy is needed.">
-<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
-<!ENTITY torSettings.bridgePageTitle "Tor Bridges Configuration">
-<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
-<!ENTITY torSettings.bridgeExplanation1 "If you are not sure how to answer this question, choose No (if you are unable to connect to the Tor network without a bridge, you can add one later).">
-<!ENTITY torSettings.bridgeExplanation2 "If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
-<!ENTITY torSettings.bridgeSettingsPrompt "You may use the provided set of bridges or you may obtain and enter a custom set of bridges.">
+<!ENTITY torSettings.proxyExplanation1 "La mayoría de los casos no requieren un proxy local, pero si podría ser requerido cuando te conectas por medio de una compañia, escuela, o red universitaria.">
+<!ENTITY torSettings.proxyExplanation2 "Si no estas seguro de como contestar esta pregunta, ve tu configuración de Internet en otro explorador o checa tu configuración de red del sistema para ver si necesitas un proxy local o no. ">
+<!ENTITY torSettings.enterProxy "Introduce la configuración de proxy">
+<!ENTITY torSettings.bridgePageTitle "Configuracion de puentes Tor">
+<!ENTITY torSettings.bridgeQuestion "Tu proveedor de servicio de Internet (ISP) bloquea o censura conexiones a la red de Tor?">
+<!ENTITY torSettings.bridgeExplanation1 "Si no estas seguro de como contestar la pregunta, escoge No (si no puedes conectarte a la red Tor sin un puente, puedes agregar uno despues).">
+<!ENTITY torSettings.bridgeExplanation2 "Si escoges Si, se te pedira configurar puentes Tor, los cuales son relés no registrados que hace que sea mas dificil bloquear las conexiones de la red Tor. ">
+<!ENTITY torSettings.bridgeSettingsPrompt "Puedes usar el conjunto de puentes o puedes obtener e introducir un conjunto personalizado de puentes.">
<!-- Other: -->
-<!ENTITY torsettings.startingTor "Waiting for Tor to start…">
+<!ENTITY torsettings.startingTor "Esperando a que Tor inicie...">
<!ENTITY torsettings.restartTor "Reiniciar Tor">
-<!ENTITY torsettings.reconfigTor "Reconfigure">
+<!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 "Has configurado los puentes Tor o has introducido un proxy local settings.  Para hacer una conexión directa a la red Tor, esta configuración debe removerse. ">
+<!ENTITY torsettings.discardSettings.proceed "Remover configuración y conectarse">
<!ENTITY torsettings.optional "Optional">
diff --git a/src/chrome/locale/es/network-settings.dtd b/src/chrome/locale/es/network-settings.dtd
index ac15664..91a356a 100644
--- a/src/chrome/locale/es/network-settings.dtd
+++ b/src/chrome/locale/es/network-settings.dtd
@@ -13,7 +13,7 @@
<!ENTITY torSettings.firstQuestion "¿Cuál de las siguientes opciones describe mejor su situación?">
<!ENTITY torSettings.configurePrompt1 "La conexión a Internet de este equipo está censurada o proxificada.">
-<!ENTITY torSettings.configurePrompt2 "Necesito configurar bridge o los ajustes del proxy local antes de conectar a la red Tor. ">
+<!ENTITY torSettings.configurePrompt2 "Necesito configurar los ajustes de puente de red o proxy local antes de conectar a la red Tor. ">
<!ENTITY torSettings.configure "Configurar">
<!ENTITY torSettings.connectPrompt2 "Quisiera hacer una conexión directa a la red Tor.">
<!ENTITY torSettings.connectPrompt3 "Esto funcionará en la mayoría de las situaciones.">
@@ -25,11 +25,11 @@
<!ENTITY torSettings.proxyExplanation1 "En la mayoría de los casos no se requiere un proxy (interpuesto) local, pero puede ser necesario al realizar una conexión a través de una red de empresa, de escuela, o universitaria. ">
<!ENTITY torSettings.proxyExplanation2 "Si no está seguro de cómo responder a esta pregunta, mire la configuración de Internet en otro navegador o compruebe la configuración de red de su sistema para ver si un proxy local es necesario.">
<!ENTITY torSettings.enterProxy "Introduzca los ajustes del proxy.">
-<!ENTITY torSettings.bridgePageTitle "Configuración de puentes Tor">
+<!ENTITY torSettings.bridgePageTitle "Configuración de puentes de red Tor">
<!ENTITY torSettings.bridgeQuestion "Su proveedor de servicios de Internet (ISP) bloquea o censura de alguna forma las conexiones hacia la red Tor?">
-<!ENTITY torSettings.bridgeExplanation1 "Si no está seguro de cómo responder a esta pregunta, elija No (si no puede conectarse a la red Tor sin un puente (bridge), puede añadir uno más adelante).">
-<!ENTITY torSettings.bridgeExplanation2 "Si elige Sí, se le pedirá que configure los puentes (bridges) de Tor, que son repetidores no listados que dificultan el bloqueo de conexiones hacia la red Tor.">
-<!ENTITY torSettings.bridgeSettingsPrompt "Puede utilizar el conjunto de repetidores puente (bridge) proporcionado, o puede obtener e introducir un juego de puentes personalizado.">
+<!ENTITY torSettings.bridgeExplanation1 "Si no está seguro de cómo responder a esta pregunta, elija No (si no puede conectarse a la red Tor sin un puente de red (bridge), puede añadir uno más adelante).">
+<!ENTITY torSettings.bridgeExplanation2 "Si elige Sí, se le pedirá que configure los puentes de red (bridges) de Tor, que son repetidores no listados que dificultan el bloqueo de conexiones hacia la red Tor.">
+<!ENTITY torSettings.bridgeSettingsPrompt "Puede utilizar el conjunto de puentes de red (bridges) proporcionado, o puede obtener e introducir un juego de puentes personalizado.">
<!-- Other: -->
@@ -37,7 +37,7 @@
<!ENTITY torsettings.restartTor "Reiniciar Tor">
<!ENTITY torsettings.reconfigTor "Configurar de nuevo">
-<!ENTITY torsettings.discardSettings.prompt "Ha configurado los puentes (bridges) de Tor o ha introducido los ajustes para proxy (interpuesto) local.  Para realizar una conexión directa a la red Tor, estos ajustes deben ser borrados.">
+<!ENTITY torsettings.discardSettings.prompt "Ha configurado los puentes de red (bridges) de Tor o ha introducido los ajustes para proxy (interpuesto) local.  Para realizar una conexión directa a la red Tor, estos ajustes deben ser borrados.">
<!ENTITY torsettings.discardSettings.proceed "Eliminar ajustes y conectar">
<!ENTITY torsettings.optional "Opcional">
@@ -56,7 +56,7 @@
<!ENTITY torsettings.firewall.allowedPorts "Puertos permitidos:">
<!ENTITY torsettings.useBridges.checkbox "Mi Proveedor de Servicios de Internet (ISP) bloquea las conexiones a la red Tor">
<!ENTITY torsettings.useBridges.default "Conectar con los puentes proporcionados">
-<!ENTITY torsettings.useBridges.note "Cada tipo de puente (bridge) usa un método diferente para evitar la censura.  Si un repetidor puente no funciona, inténtelo de nuevo utilizando otro distinto.">
+<!ENTITY torsettings.useBridges.note "Cada tipo de puente de red usa un método diferente para evitar la censura.  Si un puente no funciona, inténtelo de nuevo utilizando otro distinto.">
<!ENTITY torsettings.useBridges.type "Tipo de transporte:">
<!ENTITY torsettings.useBridges.custom "Introducir puentes personalizados">
<!ENTITY torsettings.useBridges.label "Introduzca uno o más repetidores puente(uno por línea).">
@@ -65,7 +65,7 @@
<!ENTITY torsettings.copyLog "Copiar el registro de mensajes(log) de Tor al portapapeles">
<!ENTITY torsettings.bridgeHelpTitle "Ayuda de repetidores puente ('bridge relays')">
<!ENTITY torsettings.bridgeHelp1 "Si no puede conectarse a la red Tor, podría ser que su proveedor de servicios de Internet (ISP) u otra agencia, esté bloqueando Tor.  A menudo, puede evitar este problema usando puentes ('bridges') de Tor, que son repetidores ('relays') de salida de la red Tor que no son públicos, y es más difícil que sean bloqueados.">
-<!ENTITY torsettings.bridgeHelp1B "Puede usar el juego preconfigurado de direcciones de puentes proporcionado, o puede obtener un juego personalizado de direcciones usando uno de estos métodos:">
+<!ENTITY torsettings.bridgeHelp1B "Puede usar el juego preajustado de direcciones de puentes de red proporcionado, o puede obtener un juego personalizado de direcciones usando uno de estos métodos:">
<!ENTITY torsettings.bridgeHelp2Heading "Mediante la web">
<!ENTITY torsettings.bridgeHelp2 "Use un navegador web para visitar https://bridges.torproject.org">
<!ENTITY torsettings.bridgeHelp3Heading "Mediante el correo electrónico automático">
diff --git a/src/chrome/locale/fr-CA/network-settings.dtd b/src/chrome/locale/fr-CA/network-settings.dtd
index 448a2d5..a4056e0 100644
--- a/src/chrome/locale/fr-CA/network-settings.dtd
+++ b/src/chrome/locale/fr-CA/network-settings.dtd
@@ -2,7 +2,7 @@
<!-- For locale picker: -->
<!ENTITY torlauncher.localePicker.title "Langue du navigateur Tor">
-<!ENTITY torlauncher.localePicker.prompt "Veuillez choisir une langue">
+<!ENTITY torlauncher.localePicker.prompt "Veuillez choisir une langue.">
<!-- For "first run" wizard: -->
@@ -16,18 +16,18 @@
<!ENTITY torSettings.configurePrompt2 "Je dois paramétrer un pont ou un mandataire local avant de me connecter au réseau Tor.">
<!ENTITY torSettings.configure "Configurer">
<!ENTITY torSettings.connectPrompt2 "J'aimerais établir une connexion directe vers le réseau Tor.">
-<!ENTITY torSettings.connectPrompt3 "Ceci fonctionnera dans la plupart des situations.">
+<!ENTITY torSettings.connectPrompt3 "Cela fonctionnera dans la plupart des situations.">
<!ENTITY torSettings.connect "Se connecter">
<!ENTITY torSettings.proxyPageTitle "Configuration du mandataire local">
<!ENTITY torSettings.proxyQuestion "Cet ordinateur doit-il utiliser un serveur mandataire local pour accéder à Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
<!ENTITY torSettings.proxyExplanation1 "Dans la plupart des cas, un serveur mandataire local n'est pas requis, mais il pourrait être exigé pour une connexion par un réseau d'entreprise, d'école ou d'université.">
-<!ENTITY torSettings.proxyExplanation2 "Si vous n'êtes pas certain de savoir comment répondre à cette question, vérifier les paramètres Internet d'un autre navigateur ou vérifier les paramètres réseau de votre système pour voir si un serveur mandataire local est requis.">
+<!ENTITY torSettings.proxyExplanation2 "Si vous n'êtes pas certain de savoir comment répondre à cette question, vérifiez les paramètres Internet d'un autre navigateur ou les paramètres réseau de votre système pour voir si un serveur mandataire local est requis.">
<!ENTITY torSettings.enterProxy "Saisir les paramètres du serveur mandataire.">
<!ENTITY torSettings.bridgePageTitle "Configuration des ponts Tor">
-<!ENTITY torSettings.bridgeQuestion "Votre fournisseur de service Internet (FSI) bloque-t-il ou censure-t-il vos connexions au réseau Tor?">
-<!ENTITY torSettings.bridgeExplanation1 "Si vous n'êtes pas certain de savoir comment répondre à cette question, choisir Non (si vous n'arrivez pas à vous connecter au réseau Tor sans pont, pour pourrez en ajouter un ultérieurement).">
+<!ENTITY torSettings.bridgeQuestion "Votre fournisseur d'accès à Internet (FAI) bloque-t-il ou censure-t-il vos connexions au réseau Tor?">
+<!ENTITY torSettings.bridgeExplanation1 "Si vous n'êtes pas certain de savoir comment répondre à cette question, choisissez Non (si vous n'arrivez pas à vous connecter au réseau Tor sans pont, pour pourrez en ajouter un ultérieurement).">
<!ENTITY torSettings.bridgeExplanation2 "Si vous choisissez Oui, l'on vous demandera de configurer des ponts Tor, qui sont des relais non répertoriés rendant le blocage des connexions au réseau Tor plus difficile.">
<!ENTITY torSettings.bridgeSettingsPrompt "Vous pouvez utiliser le jeu de ponts fourni ou vous pouvez obtenir et saisir un jeu de ponts personnalisé.">
@@ -40,7 +40,7 @@
<!ENTITY torsettings.discardSettings.prompt "Vous avez configuré des ponts Tor ou vous avez saisi des paramètres de mandataire local.  Pour établir une connexion directe vers le réseau Tor, ces paramètres doivent être supprimés.">
<!ENTITY torsettings.discardSettings.proceed "Supprimer les paramètres et se connecter">
-<!ENTITY torsettings.optional "Optionnel">
+<!ENTITY torsettings.optional "Facultatif">
<!ENTITY torsettings.useProxy.checkbox "Cet ordinateur doit utiliser un mandataire local pour accéder à Internet">
<!ENTITY torsettings.useProxy.type "Type de mandataire :">
@@ -54,22 +54,22 @@
<!ENTITY torsettings.useProxy.type.http "HTTP / HTTPS">
<!ENTITY torsettings.firewall.checkbox "Cet ordinateur passe par un pare-feu qui n'autorise que les connexions à certains ports">
<!ENTITY torsettings.firewall.allowedPorts "Ports autorisés :">
-<!ENTITY torsettings.useBridges.checkbox "Mon fournisseur d'accès à Internet (FAI) bloque les connexions au réseau Tor">
+<!ENTITY torsettings.useBridges.checkbox "Mon fournisseur d'accès à Internet (FAI) bloque les connexions vers le réseau Tor">
<!ENTITY torsettings.useBridges.default "Se connecter avec les ponts fournis">
-<!ENTITY torsettings.useBridges.note "Chaque type de pont utilise une méthode différente pour contourner la censure.  Si un pont ne fonctionne pas, ressayer en utilisant un autre type.">
+<!ENTITY torsettings.useBridges.note "Chaque type de pont utilise une méthode différente pour contourner la censure.  Si un pont ne fonctionne pas, ressayez en utilisant un autre type.">
<!ENTITY torsettings.useBridges.type "Type de transport :">
<!ENTITY torsettings.useBridges.custom "Saisir les ponts personnalisés">
<!ENTITY torsettings.useBridges.label "Saisir un ou plusieurs relais-ponts (un par ligne).">
<!ENTITY torsettings.useBridges.placeholder "type adresse:port">
-<!ENTITY torsettings.copyLog "Copier le journal de Tor dans le presse-papier">
-<!ENTITY torsettings.bridgeHelpTitle "Aide pour les relais-ponts">
+<!ENTITY torsettings.copyLog "Copier le journal de Tor dans le presse-papiers">
+<!ENTITY torsettings.bridgeHelpTitle "Aide sur les relais-ponts">
<!ENTITY torsettings.bridgeHelp1 "Si vous ne pouvez pas vous connecter au réseau Tor, il se peut que votre fournisseur d'accès à Internet (FAI) ou une autre organisme bloque Tor.  Vous pouvez souvent le contourner en utilisant des ponts Tor qui sont des relais non répertoriés, plus difficiles à bloquer.">
<!ENTITY torsettings.bridgeHelp1B "Vous pouvez utiliser le jeu préconfiguré d'adresses de ponts fourni ou vous pouvez obtenir un jeu personnalisé d'adresses en utilisant une de ces méthodes :">
-<!ENTITY torsettings.bridgeHelp2Heading "par le Web">
-<!ENTITY torsettings.bridgeHelp2 "en utilisant un navigateur Web pour visiter https://bridges.torproject.org">
+<!ENTITY torsettings.bridgeHelp2Heading "Par le Web">
+<!ENTITY torsettings.bridgeHelp2 "En utilisant un navigateur Web pour visiter https://bridges.torproject.org">
<!ENTITY torsettings.bridgeHelp3Heading "Par le répondeur automatique de courriel">
-<!ENTITY torsettings.bridgeHelp3.emailDesc "Envoyez un courriel à bridges(a)torproject.org avec la ligne « get bridges » seule dans le corps du message.  Cependant, afin que cela soit plus difficile pour un attaqueur de découvrir de nombreuses adresses de ponts, vous devez envoyer cette demande à partir d'un des fournisseurs de courriel suivants (listés par ordre de préférence) :">
+<!ENTITY torsettings.bridgeHelp3.emailDesc "Envoyez un courriel à bridges(a)torproject.org avec la ligne « get bridges » seule dans le corps du message.  Cependant, afin qu'il soit plus difficile pour un attaquant de découvrir de nombreuses adresses de ponts, vous devez envoyer cette demande à partir d'un des fournisseurs de courriel suivants (listés par ordre de préférence) :">
<!ENTITY torsettings.bridgeHelp3.emailList "https://www.riseup.net, https://mail.google.com ou https://mail.yahoo.com">
-<!ENTITY torsettings.bridgeHelp4Heading "par le centre d'assistance">
+<!ENTITY torsettings.bridgeHelp4Heading "Par le centre d'assistance">
<!ENTITY torsettings.bridgeHelp4 "En dernier recours, vous pouvez demander des adresses de ponts en envoyant un courriel poli à help(a)rt.torproject.org.  Veuillez remarquer qu'une personne devra répondre à chaque demande.">
diff --git a/src/chrome/locale/fr-CA/torlauncher.properties b/src/chrome/locale/fr-CA/torlauncher.properties
index c2d4216..e213ea0 100644
--- a/src/chrome/locale/fr-CA/torlauncher.properties
+++ b/src/chrome/locale/fr-CA/torlauncher.properties
@@ -3,8 +3,8 @@
torlauncher.error_title=Lanceur Tor
-torlauncher.tor_exited_during_startup=Tor s'est fermé pendant le démarrage. Ceci peut être dû à une erreur dans votre fichier torrc, un bogue dans Tor ou dans un autre programme de votre système, ou encore à un matériel défectueux. Jusqu'à ce que vous corrigiez le problème sous-jacent et redémarriez Tor, le navigateur Tor ne démarrera pas.
-torlauncher.tor_exited=Tor a quitté de manière imprévue. Ceci peut être dû à un bogue dans Tor même, un autre programme dans votre système ou un matériel défectueux. Jusqu'à ce que vous redémarriez Tor, le navigateur Tor ne sera capable d'atteindre aucun site. Si le problème persiste, veuillez envoyer une copie de votre journal de Tor à l'équipe de soutien.
+torlauncher.tor_exited_during_startup=Tor s'est fermé pendant le démarrage. Cela peut être dû à une erreur dans votre fichier torrc, un bogue dans Tor ou dans un autre programme de votre système, ou encore à un matériel défectueux. Jusqu'à ce que vous corrigiez le problème sous-jacent et redémarriez Tor, le navigateur Tor ne démarrera pas.
+torlauncher.tor_exited=Tor s'est fermé de manière imprévue. Cela peut être dû à un bogue dans Tor même, un autre programme dans votre système ou un matériel défectueux. Jusqu'à ce que vous redémarriez Tor, le navigateur Tor ne pourra atteindre aucun site. Si le problème persiste, veuillez envoyer une copie de votre journal de Tor à l'équipe de soutien.
torlauncher.tor_exited2=Redémarrer Tor ne fermera par les onglets de votre navigateur.
torlauncher.tor_controlconn_failed=Impossible de se connecter au port de contrôle de Tor.
torlauncher.tor_failed_to_start=Tor n'a pas pu démarrer.
@@ -13,30 +13,30 @@ torlauncher.tor_bootstrap_failed=Échec lors de la connexion de Tor au réseau T
torlauncher.tor_bootstrap_failed_details=%1$S a échoué (%2$S).
torlauncher.unable_to_start_tor=Impossible de démarrer Tor.\n\n%S
-torlauncher.tor_missing=L'exécutable Tor est manquant.
-torlauncher.torrc_missing=Le fichier torrc est manquant et n'a pas pu être créé.
-torlauncher.datadir_missing=Le répertoire de données Tor n'existe pas et n'a pas pu être créé.
+torlauncher.tor_missing=Il manque l'exécutable Tor.
+torlauncher.torrc_missing=Le fichier torrc manque et n'a pas pu être créé.
+torlauncher.datadir_missing=Le répertoire de données de Tor n'existe pas et n'a pas pu être créé.
torlauncher.password_hash_missing=Impossible d'obtenir le mot de passe haché.
torlauncher.failed_to_get_settings=Impossible de récupérer les paramètres de Tor.\n\n%S
-torlauncher.failed_to_save_settings=Impossible de sauvegarder les paramètres de Tor.\n\n%S
-torlauncher.ensure_tor_is_running=Veuillez-vous assurer que Tor tourne.
+torlauncher.failed_to_save_settings=Impossible d'enregistrer les paramètres de Tor.\n\n%S
+torlauncher.ensure_tor_is_running=Veuillez-vous assurer que Tor fonctionne.
-torlauncher.error_proxy_addr_missing=Vous devez spécifier à la fois une adresse IP ou un nom d'hôte et un numéro de port afin de configurer Tor à l'usage d'un mandataire pour accéder à Internet.
+torlauncher.error_proxy_addr_missing=Vous devez spécifier à la fois une adresse IP ou un nom d'hôte et un numéro de port afin de configurer Tor pour qu'il utilise un mandataire pour accéder à Internet.
torlauncher.error_proxy_type_missing=Vous devez choisir le type de mandataire.
torlauncher.error_bridges_missing=Vous devez spécifier un ou plusieurs ponts.
torlauncher.error_default_bridges_type_missing=Vous devez choisir un type de transport pour les ponts fournis.
-torlauncher.error_bridge_bad_default_type=Aucun pont n'est disponible pour le type de transport %S, Veuillez ajuster vos paramètres.
+torlauncher.error_bridge_bad_default_type=Aucun des pont fournis n'est disponible pour le type de transport %S, Veuillez ajuster vos paramètres.
torlauncher.recommended_bridge=(recommandé)
torlauncher.connect=Se connecter
torlauncher.restart_tor=Redémarrer Tor
torlauncher.quit=Quitter
-torlauncher.quit_win=Sortir
-torlauncher.done=Fait
+torlauncher.quit_win=Sortie
+torlauncher.done=Terminé
-torlauncher.forAssistance=Pour l'assistance, contacter %S
+torlauncher.forAssistance=Pour de l'assistance, contacter %S
torlauncher.forAssistance2=Pour de l'assistance, visiter %S
torlauncher.copiedNLogMessages=La copie est terminée. %S messages de journalisation de Tor sont prêts à être coller dans un éditeur de texte ou un courriel.
@@ -46,11 +46,11 @@ torlauncher.bootstrapStatus.handshake_dir=Mise en place d'une connexion chiffré
torlauncher.bootstrapStatus.requesting_status=Récupération de l'état du réseau
torlauncher.bootstrapStatus.loading_status=Chargement de l'état du réseau
torlauncher.bootstrapStatus.loading_keys=Chargement des certificats d'autorité
-torlauncher.bootstrapStatus.requesting_descriptors=Demande des informations de relais
-torlauncher.bootstrapStatus.loading_descriptors=Chargement des informations de relais
+torlauncher.bootstrapStatus.requesting_descriptors=Demande d'informations sur le relais
+torlauncher.bootstrapStatus.loading_descriptors=Chargement des informations sur le relais
torlauncher.bootstrapStatus.conn_or=Connexion au réseau Tor
torlauncher.bootstrapStatus.handshake_or=Mise en place d'un circuit Tor
-torlauncher.bootstrapStatus.done=Connecté au réseau Tor!
+torlauncher.bootstrapStatus.done=Vous êtes connecté au réseau Tor!
torlauncher.bootstrapWarning.done=effectué
torlauncher.bootstrapWarning.connectrefused=connexion refusée
@@ -60,4 +60,4 @@ torlauncher.bootstrapWarning.identity=mauvaise concordance de l'identité
torlauncher.bootstrapWarning.timeout=expiration du temps de connexion
torlauncher.bootstrapWarning.noroute=pas de route vers l'hôte
torlauncher.bootstrapWarning.ioerror=erreur de lecture/écriture
-torlauncher.bootstrapWarning.pt_missing=transport enfichable manquant
+torlauncher.bootstrapWarning.pt_missing=le transport enfichable manque
diff --git a/src/chrome/locale/fr/network-settings.dtd b/src/chrome/locale/fr/network-settings.dtd
index 859c2ee..078424e 100644
--- a/src/chrome/locale/fr/network-settings.dtd
+++ b/src/chrome/locale/fr/network-settings.dtd
@@ -1,49 +1,49 @@
<!ENTITY torsettings.dialog.title "Paramètres du réseau Tor">
<!-- For locale picker: -->
-<!ENTITY torlauncher.localePicker.title "Langue du Navigateur Tor">
-<!ENTITY torlauncher.localePicker.prompt "Merci de sélectionner une langue.">
+<!ENTITY torlauncher.localePicker.title "Langue du navigateur Tor">
+<!ENTITY torlauncher.localePicker.prompt "Veuillez choisir une langue.">
<!-- For "first run" wizard: -->
-<!ENTITY torsettings.prompt "Vous devez fournir des informations concernant la connexion à Internet de cet ordinateur afin de pouvoir vous connecter au réseau Tor.">
+<!ENTITY torsettings.prompt "Avant de vous connecter au réseau Tor, vous devez fournir des informations sur la connexion Internet de cet ordinateur.">
<!ENTITY torSettings.yes "Oui">
<!ENTITY torSettings.no "Non">
-<!ENTITY torSettings.firstQuestion "Laquelle des phrases suivantes décrit le mieux votre situation ?">
-<!ENTITY torSettings.configurePrompt1 "Le connexion internet de cet ordinateur est restreinte (censurée) ou passe par un proxy.">
-<!ENTITY torSettings.configurePrompt2 "Je dois configurer le bridge ou les paramètres du proxy avant de me connecter au réseau Tor.">
+<!ENTITY torSettings.firstQuestion "Laquelle des suivantes décrit le mieux votre situation ?javascript:;">
+<!ENTITY torSettings.configurePrompt1 "La connexion Internet de cet ordinateur est censurée ou relayée.">
+<!ENTITY torSettings.configurePrompt2 "Je dois paramétrer un pont ou un mandataire local avant de me connecter au réseau Tor.">
<!ENTITY torSettings.configure "Configurer">
-<!ENTITY torSettings.connectPrompt2 "Je voudrais faire une connexion directe au réseau Tor.">
+<!ENTITY torSettings.connectPrompt2 "J'aimerais établir une connexion directe vers le réseau Tor.">
<!ENTITY torSettings.connectPrompt3 "Cela fonctionnera dans la plupart des situations.">
<!ENTITY torSettings.connect "Se connecter">
-<!ENTITY torSettings.proxyPageTitle "Configuration du proxy local">
-<!ENTITY torSettings.proxyQuestion "Est-ce que cet ordinateur a besoin d'utiliser un proxy pour accéder à internet ?">
+<!ENTITY torSettings.proxyPageTitle "Configuration du mandataire local">
+<!ENTITY torSettings.proxyQuestion "Cet ordinateur doit-il utiliser un serveur mandataire local pour accéder à Internet ?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyExplanation1 "Dans la plupart des cas le proxy local n'est pas nécessaire, mais il peut être exigé pour une connexion dans un réseau d'entreprise, d'école ou universitaire.">
-<!ENTITY torSettings.proxyExplanation2 "Si vous n'êtes pas certain de savoir comment répondre à cette question, regardez les paramètres Internet d'un autre navigateur ou les paramètres réseaux de votre système afin de vérifier si vous avez besoin d'un proxy.">
-<!ENTITY torSettings.enterProxy "Entrez les paramètres de votre proxy.">
-<!ENTITY torSettings.bridgePageTitle "Configuration des relais TOR">
-<!ENTITY torSettings.bridgeQuestion "Est-ce que votre Fournisseur d'Accès Internet (FAI) bloque les connexions au réseau Tor ?">
-<!ENTITY torSettings.bridgeExplanation1 "Si vous ne savez par comment répondre à cette question, choisissez Non (si vous ne pouvez pas vous connecter au réseau Tor sans un bridge, vous pourrez le rajouter plus tard).">
-<!ENTITY torSettings.bridgeExplanation2 "Si vous choisissez Oui, il vous sera demandé de configurer les bridges Tor qui sont des relais non listés et qui rendent plus difficile le blocage du réseau Tor.">
-<!ENTITY torSettings.bridgeSettingsPrompt "Vous pouvez utiliser les bridges fournis ou bien saisir votre liste de bridges personnels.">
+<!ENTITY torSettings.proxyExplanation1 "Dans la plupart des cas, un serveur mandataire local n'est pas requis, mais il pourrait être exigé pour une connexion par un réseau d'entreprise, d'école ou d'université.">
+<!ENTITY torSettings.proxyExplanation2 "Si vous n'êtes pas certain de savoir comment répondre à cette question, vérifiez les paramètres Internet d'un autre navigateur ou les paramètres réseau de votre système pour voir si un serveur mandataire local est requis.">
+<!ENTITY torSettings.enterProxy "Saisir les paramètres du serveur mandataire.">
+<!ENTITY torSettings.bridgePageTitle "Configuration des ponts Tor">
+<!ENTITY torSettings.bridgeQuestion "Votre fournisseur d'accès à Internet (FAI) bloque-t-il ou censure-t-il vos connexions au réseau Tor ?">
+<!ENTITY torSettings.bridgeExplanation1 "Si vous n'êtes pas certain de savoir comment répondre à cette question, choisissez Non (si vous n'arrivez pas à vous connecter au réseau Tor sans pont, pour pourrez en ajouter un ultérieurement).">
+<!ENTITY torSettings.bridgeExplanation2 "Si vous choisissez Oui, il vous sera demandé de configurer des ponts Tor, qui sont des relais non répertoriés et qui rendent plus difficile le blocage du réseau Tor.">
+<!ENTITY torSettings.bridgeSettingsPrompt "Vous pouvez utiliser le jeu de ponts fourni ou vous pouvez obtenir et saisir un jeu de ponts personnalisé.">
<!-- Other: -->
<!ENTITY torsettings.startingTor "En attente du démarrage de Tor...">
-<!ENTITY torsettings.restartTor "Relancer Tor">
+<!ENTITY torsettings.restartTor "Redémarrer Tor">
<!ENTITY torsettings.reconfigTor "Reconfigurer">
-<!ENTITY torsettings.discardSettings.prompt "Vous avez configuré les bridges Tor ou vous avez entré les paramètres de proxy local. Pour faire une connexion directe avec le réseau Tor, ces configurations doivent être supprimés.">
+<!ENTITY torsettings.discardSettings.prompt "Vous avez configuré des ponts Tor ou vous avez saisi des paramètres de mandataire local.  Pour établir une connexion directe vers le réseau Tor, ces paramètres doivent être supprimés.">
<!ENTITY torsettings.discardSettings.proceed "Supprimer les paramètres et se connecter">
-<!ENTITY torsettings.optional "Optionnel">
+<!ENTITY torsettings.optional "Facultatif">
-<!ENTITY torsettings.useProxy.checkbox "Cet ordinateur a besoin d'utiliser un proxy pour accéder à internet.">
-<!ENTITY torsettings.useProxy.type "Type de proxy :">
+<!ENTITY torsettings.useProxy.checkbox "Cet ordinateur doit utiliser un mandataire local pour accéder à Internet">
+<!ENTITY torsettings.useProxy.type "Type de mandataire :">
<!ENTITY torsettings.useProxy.address "Adresse :">
<!ENTITY torsettings.useProxy.address.placeholder "Adresse IP ou nom d'hôte">
<!ENTITY torsettings.useProxy.port "Port :">
@@ -52,24 +52,24 @@
<!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 "Cet ordinateur passe par un pare-feu qui autorise uniquement les connexions à certains ports">
+<!ENTITY torsettings.firewall.checkbox "Cet ordinateur passe par un pare-feu qui n'autorise que les connexions à certains ports">
<!ENTITY torsettings.firewall.allowedPorts "Ports autorisés :">
-<!ENTITY torsettings.useBridges.checkbox "Mon Fournisseur d'Accès à Internet (FAI) bloque les connexions au réseau Tor">
-<!ENTITY torsettings.useBridges.default "Se connecter en utilisant les bridges pré-configurés">
-<!ENTITY torsettings.useBridges.note "Chaque type de bridge utilise une méthode différente pour éviter la censure. Si un bridge ne marche pas, essayez de nouveau avec un autre.">
-<!ENTITY torsettings.useBridges.type "Mode de transport:">
-<!ENTITY torsettings.useBridges.custom "Entrez vos ponts personnels">
-<!ENTITY torsettings.useBridges.label "Saisir un ou davantage de relais bridges (un par ligne).">
-<!ENTITY torsettings.useBridges.placeholder "tapez adresse:port">
+<!ENTITY torsettings.useBridges.checkbox "Mon fournisseur d'accès à Internet (FAI) bloque les connexions vers le réseau Tor">
+<!ENTITY torsettings.useBridges.default "Se connecter avec les ponts fournis">
+<!ENTITY torsettings.useBridges.note "Chaque type de pont utilise une méthode différente pour contourner la censure.  Si un pont ne fonctionne pas, ressayez en utilisant un autre type.">
+<!ENTITY torsettings.useBridges.type "Type de transport :">
+<!ENTITY torsettings.useBridges.custom "Saisir les ponts personnalisés">
+<!ENTITY torsettings.useBridges.label "Saisir un ou plusieurs relais-ponts (un par ligne).">
+<!ENTITY torsettings.useBridges.placeholder "type address:port">
-<!ENTITY torsettings.copyLog "Copier le journal des messages de Tor dans le presse-papier">
-<!ENTITY torsettings.bridgeHelpTitle "Aide pour les bridges">
-<!ENTITY torsettings.bridgeHelp1 "Si vous ne pouvez pas vous connecter au réseau Tor, il se pourrait que votre fournisseur d'accès à Internet (FAI) ou une autre agence bloque le Tor.  Souvent, vous pouvez contourner ce problème en utilisant des bridges Tor, qui sont des relais non listés qui sont plus difficiles à bloquer.">
-<!ENTITY torsettings.bridgeHelp1B "Vous pouvez utiliser la liste fournie et pré-configurée d'adresses de bridges, ou alors obtenir une liste personnalisée d'adresses en utilisant une de ces méthodes :">
+<!ENTITY torsettings.copyLog "Copier le journal de Tor dans le presse-papiers">
+<!ENTITY torsettings.bridgeHelpTitle "Aide sur les relais-ponts">
+<!ENTITY torsettings.bridgeHelp1 "Si vous ne pouvez pas vous connecter au réseau Tor, il se peut que votre fournisseur d'accès à Internet (FAI) ou une autre organisme bloque Tor.  Vous pouvez souvent le contourner en utilisant des ponts Tor qui sont des relais non répertoriés, plus difficiles à bloquer.">
+<!ENTITY torsettings.bridgeHelp1B "Vous pouvez utiliser le jeu préconfiguré d'adresses de ponts fourni ou vous pouvez obtenir un jeu personnalisé d'adresses en utilisant une de ces méthodes :">
<!ENTITY torsettings.bridgeHelp2Heading "Par le Web">
-<!ENTITY torsettings.bridgeHelp2 "Utilisez un navigateur web pour visiter https://bridges.torproject.org">
+<!ENTITY torsettings.bridgeHelp2 "En utilisant un navigateur Web pour visiter https://bridges.torproject.org">
<!ENTITY torsettings.bridgeHelp3Heading "Par le répondeur automatique de courriel">
-<!ENTITY torsettings.bridgeHelp3.emailDesc "Envoyez un courriel à bridges(a)torproject.org avec la ligne « get bridges » seule dans le corps du message.  Cependant, afin que cela soit plus difficile pour un attaqueur de découvrir de nombreuses adresses de ponts, vous devez envoyer cette demande à partir d'un des fournisseurs de courriel suivants (listés par ordre de préférence) :">
-<!ENTITY torsettings.bridgeHelp3.emailList "https://www.riseup.net, https://mail.google.com, ou https://mail.yahoo.com">
-<!ENTITY torsettings.bridgeHelp4Heading "Par le bureau d'aide">
+<!ENTITY torsettings.bridgeHelp3.emailDesc "Envoyez un courriel à bridges(a)torproject.org avec la ligne « get bridges » seule dans le corps du message.  Cependant, afin qu'il soit plus difficile pour un attaquant de découvrir de nombreuses adresses de ponts, vous devez envoyer cette demande à partir d'un des fournisseurs de courriel suivants (listés par ordre de préférence) :">
+<!ENTITY torsettings.bridgeHelp3.emailList "https://www.riseup.net, https://mail.google.com ou https://mail.yahoo.com">
+<!ENTITY torsettings.bridgeHelp4Heading "Par le centre d'assistance">
<!ENTITY torsettings.bridgeHelp4 "En dernier recours, vous pouvez demander des adresses de ponts en envoyant un courriel poli à help(a)rt.torproject.org.  Veuillez remarquer qu'une personne devra répondre à chaque demande.">
diff --git a/src/chrome/locale/fr/progress.dtd b/src/chrome/locale/fr/progress.dtd
index a7d1857..39a0643 100644
--- a/src/chrome/locale/fr/progress.dtd
+++ b/src/chrome/locale/fr/progress.dtd
@@ -1,4 +1,4 @@
<!ENTITY torprogress.dialog.title "État de Tor">
<!ENTITY torprogress.openSettings "Ouvrir les paramètres">
<!ENTITY torprogress.heading "Connexion au réseau Tor">
-<!ENTITY torprogress.pleaseWait "Veuillez patienter pendant que la connexion au réseau Tor s'établit. Cela peut prendre quelques minutes.">
+<!ENTITY torprogress.pleaseWait "Veuillez patienter pendant que nous établissons une connexion vers le réseau Tor.  Cela pourrait prendre plusieurs minutes.">
diff --git a/src/chrome/locale/fr/torlauncher.properties b/src/chrome/locale/fr/torlauncher.properties
index db5ab28..1b25457 100644
--- a/src/chrome/locale/fr/torlauncher.properties
+++ b/src/chrome/locale/fr/torlauncher.properties
@@ -3,61 +3,61 @@
torlauncher.error_title=Lanceur Tor
-torlauncher.tor_exited_during_startup=Tor s'est terminé durant le démarrage. Cela peut être dû à une erreur dans votre fichier torrc, un bug dans Tor ou un autre programme sur votre système, ou un matériel défaillant. Tant que le problème sous-jacent n'est pas réglé et Tor redémarré, TorBrowser ne démarrera pas.
-torlauncher.tor_exited=Tor s'est terminé de manière inattendue. Cela pourrait être dû à un bogue dans Tor même, à un autre logiciel sur votre système, ou à un défaut matériel. Jusqu'à ce que vous redémarriez Tor, le navigateur Tor sera incapable d'atteindre un site Web. Si le problème persiste, veuillez envoyer une copie de votre historique Tor à l'équipe d'assistance.
-torlauncher.tor_exited2=Redémarrer Tor ne fermera pas les onglets de votre navigateur
+torlauncher.tor_exited_during_startup=Tor s'est fermé pendant le démarrage. Cela peut être dû à une erreur dans votre fichier torrc, un bogue dans Tor ou dans un autre programme de votre système, ou encore à un matériel défectueux. Jusqu'à ce que vous corrigiez le problème sous-jacent et redémarriez Tor, le navigateur Tor ne démarrera pas.
+torlauncher.tor_exited=Tor s'est fermé de manière imprévue. Cela peut être dû à un bogue dans Tor même, un autre programme dans votre système ou un matériel défectueux. Jusqu'à ce que vous redémarriez Tor, le navigateur Tor ne pourra atteindre aucun site. Si le problème persiste, veuillez envoyer une copie de votre journal de Tor à l'équipe de soutien.
+torlauncher.tor_exited2=Redémarrer Tor ne fermera pas les onglets de votre navigateur.
torlauncher.tor_controlconn_failed=Impossible de se connecter au port de contrôle de Tor.
torlauncher.tor_failed_to_start=Tor n'a pas pu démarrer.
-torlauncher.tor_control_failed=Échec lors de la prise de contrôle de Tor.
-torlauncher.tor_bootstrap_failed=Tor n'a pas réussi à établir une connexion au réseau Tor.
-torlauncher.tor_bootstrap_failed_details=%1$S échoué (%2$S).
+torlauncher.tor_control_failed=La prise de contrôle de Tor a échoué.
+torlauncher.tor_bootstrap_failed=Échec lors de la connexion de Tor au réseau Tor.
+torlauncher.tor_bootstrap_failed_details=%1$S a échoué (%2$S).
torlauncher.unable_to_start_tor=Impossible de démarrer Tor.\n\n%S
-torlauncher.tor_missing=L'exécutable Tor est introuvable.
-torlauncher.torrc_missing=Le fichier torrc est manquant et n'a pas pu être créé.
-torlauncher.datadir_missing=Le dossier de données de Tor n'existe pas et n'a pas pu être créé.
-torlauncher.password_hash_missing=Impossible d'obtenir le mot de passe chiffré.
+torlauncher.tor_missing=Il manque l'exécutable Tor.
+torlauncher.torrc_missing=Le fichier torrc manque et n'a pas pu être créé.
+torlauncher.datadir_missing=Le répertoire de données de Tor n'existe pas et n'a pas pu être créé.
+torlauncher.password_hash_missing=Impossible d'obtenir le mot de passe haché.
torlauncher.failed_to_get_settings=Impossible de récupérer les paramètres de Tor.\n\n%S
-torlauncher.failed_to_save_settings=Impossible de sauvegarder les paramètres de Tor.\n\n%S
-torlauncher.ensure_tor_is_running=Veuillez-vous assurer que Tor est lancé.
+torlauncher.failed_to_save_settings=Impossible d'enregistrer les paramètres de Tor.\n\n%S
+torlauncher.ensure_tor_is_running=Veuillez-vous assurer que Tor fonctionne.
-torlauncher.error_proxy_addr_missing=Pour configurer Tor afin qu'il utilise un proxy, vous devez spécifier une adresse IP ou un nom d'hôte ainsi qu'un numéro de port.
-torlauncher.error_proxy_type_missing=Vous devez sélectionner un type de proxy.
-torlauncher.error_bridges_missing=Vous devez spécifier un ou plusieurs bridges.
-torlauncher.error_default_bridges_type_missing=Vous devez sélectionner un type de transport pour les bridges fournis.
-torlauncher.error_bridge_bad_default_type=Aucun des bridges fournis n'a le type de transport %S. Merci d'ajuster vos paramètres.
+torlauncher.error_proxy_addr_missing=Vous devez spécifier à la fois une adresse IP ou un nom d'hôte et un numéro de port afin de configurer Tor pour qu'il utilise un mandataire pour accéder à Internet.
+torlauncher.error_proxy_type_missing=Vous devez choisir le type de mandataire.
+torlauncher.error_bridges_missing=Vous devez spécifier un ou plusieurs ponts.
+torlauncher.error_default_bridges_type_missing=Vous devez sélectionner un type de transport pour les ponts fournis.
+torlauncher.error_bridge_bad_default_type=Aucun des pont fournis n'est disponible pour le type de transport %S, Veuillez ajuster vos paramètres.
torlauncher.recommended_bridge=(recommandé)
torlauncher.connect=Se connecter
-torlauncher.restart_tor=Relancer Tor
+torlauncher.restart_tor=Redémarrer Tor
torlauncher.quit=Quitter
-torlauncher.quit_win=Sortir
+torlauncher.quit_win=Sortie
torlauncher.done=Terminé
-torlauncher.forAssistance=Pour obtenir de l'aide, contactez %S
-torlauncher.forAssistance2=Pour obtenir de l'aide, visiter %S
+torlauncher.forAssistance=Pour de l'assistance, contacter %S
+torlauncher.forAssistance2=Pour de l'assistance, visiter %S
torlauncher.copiedNLogMessages=La copie est terminée. %S messages de journalisation de Tor sont prêts à être coller dans un éditeur de texte ou un courriel.
torlauncher.bootstrapStatus.conn_dir=Connexion à un annuaire de relais
-torlauncher.bootstrapStatus.handshake_dir=Établissement d'une connexion annuaire chiffrée
+torlauncher.bootstrapStatus.handshake_dir=Mise en place d'une connexion chiffrée à l'annuaire
torlauncher.bootstrapStatus.requesting_status=Récupération de l'état du réseau
torlauncher.bootstrapStatus.loading_status=Chargement de l'état du réseau
torlauncher.bootstrapStatus.loading_keys=Chargement des certificats d'autorité
torlauncher.bootstrapStatus.requesting_descriptors=Demande d'informations sur le relais
torlauncher.bootstrapStatus.loading_descriptors=Chargement des informations sur le relais
torlauncher.bootstrapStatus.conn_or=Connexion au réseau Tor
-torlauncher.bootstrapStatus.handshake_or=Réalisation d'un circuit Tor
-torlauncher.bootstrapStatus.done=Connecté au réseau Tor !
+torlauncher.bootstrapStatus.handshake_or=Mise en place d'un circuit Tor
+torlauncher.bootstrapStatus.done=Vous êtes connecté au réseau Tor !
torlauncher.bootstrapWarning.done=effectué
torlauncher.bootstrapWarning.connectrefused=connexion refusée
torlauncher.bootstrapWarning.misc=divers
torlauncher.bootstrapWarning.resourcelimit=ressources insuffisantes
-torlauncher.bootstrapWarning.identity=identité incorrecte
-torlauncher.bootstrapWarning.timeout=temps de connexion expiré
+torlauncher.bootstrapWarning.identity=mauvaise concordance de l'identité
+torlauncher.bootstrapWarning.timeout=expiration du temps de connexion
torlauncher.bootstrapWarning.noroute=pas de route vers l'hôte
torlauncher.bootstrapWarning.ioerror=erreur de lecture/écriture
-torlauncher.bootstrapWarning.pt_missing=un transport câblé est manquant
+torlauncher.bootstrapWarning.pt_missing=le transport enfichable manque
diff --git a/src/chrome/locale/is/torlauncher.properties b/src/chrome/locale/is/torlauncher.properties
index a1d419a..c2ac7ef 100644
--- a/src/chrome/locale/is/torlauncher.properties
+++ b/src/chrome/locale/is/torlauncher.properties
@@ -23,8 +23,8 @@ 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.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_type_missing=You must select the proxy type.
-torlauncher.error_bridges_missing=You must specify one or more bridges.
+torlauncher.error_proxy_type_missing=Þú verður að velja tegund milliþjóns.
+torlauncher.error_bridges_missing=Þú verður að tilgreina eina eða fleiri brýr.
torlauncher.error_default_bridges_type_missing=You must select a transport type for the provided bridges.
torlauncher.error_bridge_bad_default_type=No provided bridges that have the transport type %S are available. Please adjust your settings.
@@ -37,25 +37,25 @@ torlauncher.quit_win=Fara út
torlauncher.done=Búið
torlauncher.forAssistance=Til að fá hjálp, hafðu samband við %S
-torlauncher.forAssistance2=For assistance, visit %S
+torlauncher.forAssistance2=Til að fá hjálp, heimsæktu %S
torlauncher.copiedNLogMessages=Copy complete. %S Tor log messages are ready to be pasted into a text editor or an email message.
torlauncher.bootstrapStatus.conn_dir=Connecting to a relay directory
torlauncher.bootstrapStatus.handshake_dir=Establishing an encrypted directory connection
-torlauncher.bootstrapStatus.requesting_status=Retrieving network status
-torlauncher.bootstrapStatus.loading_status=Loading network status
+torlauncher.bootstrapStatus.requesting_status=Næ í stöðu netkerfis
+torlauncher.bootstrapStatus.loading_status=Hleð inn stöðu netkerfis
torlauncher.bootstrapStatus.loading_keys=Loading authority certificates
torlauncher.bootstrapStatus.requesting_descriptors=Requesting relay information
torlauncher.bootstrapStatus.loading_descriptors=Loading relay information
torlauncher.bootstrapStatus.conn_or=Tengist Tor-netinu
-torlauncher.bootstrapStatus.handshake_or=Establishing a Tor circuit
+torlauncher.bootstrapStatus.handshake_or=Kem á Tor-rás
torlauncher.bootstrapStatus.done=Tengdur við Tor-netið!
torlauncher.bootstrapWarning.done=búið
torlauncher.bootstrapWarning.connectrefused=tengingu hafnað
torlauncher.bootstrapWarning.misc=ýmislegt
-torlauncher.bootstrapWarning.resourcelimit=insufficient resources
+torlauncher.bootstrapWarning.resourcelimit=ekki nægileg tilföng
torlauncher.bootstrapWarning.identity=auðkenni samsvara ekki
torlauncher.bootstrapWarning.timeout=tenging féll á tíma
torlauncher.bootstrapWarning.noroute=no route to host
diff --git a/src/chrome/locale/ko-KR/network-settings.dtd b/src/chrome/locale/ko-KR/network-settings.dtd
index 1fdc20b..e6e9760 100644
--- a/src/chrome/locale/ko-KR/network-settings.dtd
+++ b/src/chrome/locale/ko-KR/network-settings.dtd
@@ -13,20 +13,20 @@
<!ENTITY torSettings.firstQuestion "무엇이 당신의 상황과 가장 가까운가요?">
<!ENTITY torSettings.configurePrompt1 "이 컴퓨터의 인터넷 연결은 검열 또는 프록시에 연결되어 있습니다.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings before I connect to the Tor network.">
-<!ENTITY torSettings.configure "Configure">
+<!ENTITY torSettings.configurePrompt2 "저는  Tor 네트워크에 접속하는 데 브릿지나 로컬 프록시 설정을 필요로 합니다.">
+<!ENTITY torSettings.configure "구성">
<!ENTITY torSettings.connectPrompt2 "나는 Tor 네트워크와 직접적인 연결을 하고 싶습니다.">
<!ENTITY torSettings.connectPrompt3 "이것은 대부분의 상황에서 동작할 것입니다.">
<!ENTITY torSettings.connect "연결">
-<!ENTITY torSettings.proxyPageTitle "Local Proxy Configuration">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
+<!ENTITY torSettings.proxyPageTitle "로컬 프록시 구성">
+<!ENTITY torSettings.proxyQuestion "이 컴퓨터로 인터넷에 접근할 때 로컬 프록시를 사용해야 하나요?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyExplanation1 "In most cases a local proxy is not needed, but it may be required when connecting through a company, school, or university network.">
-<!ENTITY torSettings.proxyExplanation2 "If you are not sure how to answer this question, look at the Internet settings in another browser or check your system's network settings to see whether a local proxy is needed.">
-<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
-<!ENTITY torSettings.bridgePageTitle "Tor Bridges Configuration">
-<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
+<!ENTITY torSettings.proxyExplanation1 "당신이 회사, 학교 네트워크에서 접속하지 않는다면, 웬만하면 로컬 프록시는 필요하지 않습니다.">
+<!ENTITY torSettings.proxyExplanation2 "당신이 이에 대해 잘 모른다면, 다른 브라우저의 인터넷 설정이나 시스템 네트워크 설정에서 로컬 프록시가 필요한 지 확인하세요.">
+<!ENTITY torSettings.enterProxy "프록시 정보를 입력하세요.">
+<!ENTITY torSettings.bridgePageTitle "Tor 브릿지 구성">
+<!ENTITY torSettings.bridgeQuestion "당신의 인터넷 서비스 제공자 (ISP)가 Tor 네트워크 연결을 차단 혹은 검열합니까?">
<!ENTITY torSettings.bridgeExplanation1 "If you are not sure how to answer this question, choose No (if you are unable to connect to the Tor network without a bridge, you can add one later).">
<!ENTITY torSettings.bridgeExplanation2 "If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
<!ENTITY torSettings.bridgeSettingsPrompt "You may use the provided set of bridges or you may obtain and enter a custom set of bridges.">
diff --git a/src/chrome/locale/lo/torlauncher.properties b/src/chrome/locale/lo/torlauncher.properties
index 9959bfb..ce43346 100644
--- a/src/chrome/locale/lo/torlauncher.properties
+++ b/src/chrome/locale/lo/torlauncher.properties
@@ -34,7 +34,7 @@ torlauncher.connect=ເຊື່ອມຕໍ່
torlauncher.restart_tor=Restart Tor
torlauncher.quit=Quit
torlauncher.quit_win=Exit
-torlauncher.done=Done
+torlauncher.done=ແລ້ວໆ
torlauncher.forAssistance=For assistance, contact %S
torlauncher.forAssistance2=For assistance, visit %S
diff --git a/src/chrome/locale/lt/torlauncher.properties b/src/chrome/locale/lt/torlauncher.properties
index 7d85680..ccdb8a8 100644
--- a/src/chrome/locale/lt/torlauncher.properties
+++ b/src/chrome/locale/lt/torlauncher.properties
@@ -3,7 +3,7 @@
torlauncher.error_title=Tor Leistuvas
-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_during_startup=Tor nustojo veikti paleisties metu. Taip galėjo nutikti dėl klaidos jūsų torrc faile, klaidos Tor ar kitoje jūsų sistemos programoje, arba dėl aparatinės įrangos kaltės. Tor naršyklė nepasileis tol, kol neištaisysite slypinčios problemos ir iš naujo nepaleisite Tor.
torlauncher.tor_exited=Tor netikėtai nustojo veikti. Taip galėjo atsitikti arba dėl klaidos Tor arba kitoje programoje, Jūsų sistemoje arba dėl sugedusios techninės įrangos. Kol iš naujo nepaleisite Tor, Tor Naršyklė negalės prisijungti prie jokių interneto tinklalapių. Jei problema kartojasi, prašome išsiųsti Tor įvykių žurnalo kopiją paramos grupei.
torlauncher.tor_exited2=Pakartotinai paleidus Tor naršyklės kortelės nebus uždarytos.
torlauncher.tor_controlconn_failed=Nepavyko prisijungti prie Tor valdymo prievado.
@@ -14,8 +14,8 @@ torlauncher.tor_bootstrap_failed_details=%1$S nepavyko (%2$S).
torlauncher.unable_to_start_tor=Nepavyksta paleisti Tor.\n\n%S
torlauncher.tor_missing=Trūksta Tor vykdomojo failo.
-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.torrc_missing=Trūksta torrc failo ir nepavyko jo sukurti.
+torlauncher.datadir_missing=Nėra Tor duomenų katalogo ir nepavyko jo sukurti.
torlauncher.password_hash_missing=Nepavyko perskaityti slaptažodžio santrumpos
torlauncher.failed_to_get_settings=Nepavyko perskaityti Tor nustatymo parametrų.\n\n%S
diff --git a/src/chrome/locale/nb/torlauncher.properties b/src/chrome/locale/nb/torlauncher.properties
index b064dbd..a7c890e 100644
--- a/src/chrome/locale/nb/torlauncher.properties
+++ b/src/chrome/locale/nb/torlauncher.properties
@@ -16,7 +16,7 @@ torlauncher.unable_to_start_tor=Kunne ikke starte Tor.\n\n%S
torlauncher.tor_missing=Den kjørbare Tor-filen finnes ikke.
torlauncher.torrc_missing=torrc-fila mangler og kunne ikke opprettes.
torlauncher.datadir_missing=Datakatalogen til Tor finnes ikke og kunne ikke opprettes.
-torlauncher.password_hash_missing=Kunne ikke hente kryptert passord.
+torlauncher.password_hash_missing=Kunne ikke hente nøkkel-passord.
torlauncher.failed_to_get_settings=Kunne ikke hente Tor-innstillinger.\n\n%S
torlauncher.failed_to_save_settings=Kunne ikke lagre Tor-innstillinger.\n\n%S
@@ -59,5 +59,5 @@ torlauncher.bootstrapWarning.resourcelimit=ikke nok resursser
torlauncher.bootstrapWarning.identity=feil identitet
torlauncher.bootstrapWarning.timeout=forbindelse tidsavbrutt
torlauncher.bootstrapWarning.noroute=ingen rute til vert
-torlauncher.bootstrapWarning.ioerror=lese/skrive feil
-torlauncher.bootstrapWarning.pt_missing=Pluggable Transport mangler
+torlauncher.bootstrapWarning.ioerror=lese/skrive -feil
+torlauncher.bootstrapWarning.pt_missing=pluggbar transport mangler
diff --git a/src/chrome/locale/nn/network-settings.dtd b/src/chrome/locale/nn/network-settings.dtd
index 120bbf4..3b23940 100644
--- a/src/chrome/locale/nn/network-settings.dtd
+++ b/src/chrome/locale/nn/network-settings.dtd
@@ -66,7 +66,7 @@
<!ENTITY torsettings.bridgeHelpTitle "Bridge Relay Help">
<!ENTITY torsettings.bridgeHelp1 "If you are unable to connect to the Tor network, it could be that your Internet Service Provider (ISP) or another agency is blocking Tor.  Often, you can work around this problem by using Tor Bridges, which are unlisted relays that are more difficult to block.">
<!ENTITY torsettings.bridgeHelp1B "You may use the preconfigured, provided set of bridge addresses or you may obtain a custom set of addresses by using one of these methods:">
-<!ENTITY torsettings.bridgeHelp2Heading "Through the Web">
+<!ENTITY torsettings.bridgeHelp2Heading "Gjennom nettet">
<!ENTITY torsettings.bridgeHelp2 "Nytt ein nettlesar for å vitja https://bridges.torproject.org">
<!ENTITY torsettings.bridgeHelp3Heading "Through the Email Autoresponder">
<!ENTITY torsettings.bridgeHelp3.emailDesc "Send email to bridges(a)torproject.org with the line 'get bridges' by itself in the body of the message.  However, to make it harder for an attacker to learn a lot of bridge addresses, you must send this request from one of the following email providers (listed in order of preference):">
diff --git a/src/chrome/locale/nn/torlauncher.properties b/src/chrome/locale/nn/torlauncher.properties
index 31e5d68..f6b3dd3 100644
--- a/src/chrome/locale/nn/torlauncher.properties
+++ b/src/chrome/locale/nn/torlauncher.properties
@@ -8,24 +8,24 @@ torlauncher.tor_exited=Tor unexpectedly exited. This might be due to a bug in To
torlauncher.tor_exited2=Restarting Tor will not close your browser tabs.
torlauncher.tor_controlconn_failed=Kunne ikkje kopla til Tor-kontrollport.
torlauncher.tor_failed_to_start=Tor klarte ikkje å starta opp.
-torlauncher.tor_control_failed=Failed to take control of Tor.
+torlauncher.tor_control_failed=Klarte ikkje å ta kontroll over Tor.
torlauncher.tor_bootstrap_failed=Tor klarte ikkje å kopla til eit samband med Tor-nettverket.
torlauncher.tor_bootstrap_failed_details=%1$S feila (%2$S).
torlauncher.unable_to_start_tor=Tor kunne ikkje starta.\n\n%S
-torlauncher.tor_missing=The Tor executable is missing.
+torlauncher.tor_missing=Tor køyrbar manglar.
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.password_hash_missing=Failed to get hashed password.
-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=Klarer ikkje å hente Tor-innstillingar\n\n%S
+torlauncher.failed_to_save_settings=Klarer ikkje å lagre Tor-innstillingar.\n\n%S
+torlauncher.ensure_tor_is_running=Forsikre deg om at Tor køyrer.
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_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_default_bridges_type_missing=DU må velje ei transporttype for dei medfølgjande bruene.
torlauncher.error_bridge_bad_default_type=No provided bridges that have the transport type %S are available. Please adjust your settings.
torlauncher.recommended_bridge=(tilrådd)
@@ -43,21 +43,21 @@ torlauncher.copiedNLogMessages=Copy complete. %S Tor log messages are ready to b
torlauncher.bootstrapStatus.conn_dir=Connecting to a relay directory
torlauncher.bootstrapStatus.handshake_dir=Establishing an encrypted directory connection
-torlauncher.bootstrapStatus.requesting_status=Retrieving network status
+torlauncher.bootstrapStatus.requesting_status=Hentar nettverksstatus
torlauncher.bootstrapStatus.loading_status=Lastar nettverkstatus
-torlauncher.bootstrapStatus.loading_keys=Loading authority certificates
-torlauncher.bootstrapStatus.requesting_descriptors=Requesting relay information
-torlauncher.bootstrapStatus.loading_descriptors=Loading relay information
+torlauncher.bootstrapStatus.loading_keys=Lastar autoritetssertifikat
+torlauncher.bootstrapStatus.requesting_descriptors=Ber om relae-informasjon
+torlauncher.bootstrapStatus.loading_descriptors=Lastar relae-informasjon
torlauncher.bootstrapStatus.conn_or=Koplar til Tor-nettverket
-torlauncher.bootstrapStatus.handshake_or=Establishing a Tor circuit
+torlauncher.bootstrapStatus.handshake_or=Opprettar ein Tor-krets
torlauncher.bootstrapStatus.done=Kopla til Tor-nettverket!
torlauncher.bootstrapWarning.done=ferdig
torlauncher.bootstrapWarning.connectrefused=tilkopling avslått
torlauncher.bootstrapWarning.misc=ymse
-torlauncher.bootstrapWarning.resourcelimit=insufficient resources
+torlauncher.bootstrapWarning.resourcelimit=Mangelfulle resursar
torlauncher.bootstrapWarning.identity=identity mismatch
-torlauncher.bootstrapWarning.timeout=connection timeout
+torlauncher.bootstrapWarning.timeout=tidsavbrot i sambandet
torlauncher.bootstrapWarning.noroute=no route to host
torlauncher.bootstrapWarning.ioerror=lese/skrive-feil
torlauncher.bootstrapWarning.pt_missing=missing pluggable transport
diff --git a/src/chrome/locale/pt-BR/network-settings.dtd b/src/chrome/locale/pt-BR/network-settings.dtd
index bc39531..f7cf95b 100644
--- a/src/chrome/locale/pt-BR/network-settings.dtd
+++ b/src/chrome/locale/pt-BR/network-settings.dtd
@@ -28,7 +28,7 @@
<!ENTITY torSettings.bridgePageTitle "Configuração de Pontes Tor">
<!ENTITY torSettings.bridgeQuestion "Seu provedor de serviços de internet (ISP) bloqueia ou censura conexões à rede Tor?">
<!ENTITY torSettings.bridgeExplanation1 "Se você não tem certeza de como responder essa questão, escolha Não (se você não conseguir conectar à rede Tor sem uma conexão de ponte, você pode adicionar uma mais tarde).">
-<!ENTITY torSettings.bridgeExplanation2 "Se você escolher Sim, será solicitado que você configure Conexões de Ponte Tor, que são transmissores não-listados que dificultam mais o bloqueio de conexões à Rede Tor.">
+<!ENTITY torSettings.bridgeExplanation2 "Ao escolher Sim, o próximo passo a seguir será configurar Tor Bridges, que são transmissores não listados que dificultam o bloqueio de conexões à rede Tor.">
<!ENTITY torSettings.bridgeSettingsPrompt "Você pode usar o conjunto de pontes fornecidas ou obter e adicionar um conjunto de pontes personalizadas. ">
<!-- Other: -->
@@ -59,12 +59,12 @@
<!ENTITY torsettings.useBridges.note "Cada tipo de conexão de ponte usa um método diferente para evitar censura.  Se uma não funcionar, tente novamente usando uma diferente.">
<!ENTITY torsettings.useBridges.type "Tipo de transporte:">
<!ENTITY torsettings.useBridges.custom "Adicionar pontes personalizadas">
-<!ENTITY torsettings.useBridges.label "Insira um ou mais relés de pontes (um por linha).">
+<!ENTITY torsettings.useBridges.label "Inserir um ou mais retransmissores de pontes (um por linha).">
<!ENTITY torsettings.useBridges.placeholder "tipo de endereço:porta">
<!ENTITY torsettings.copyLog "Copiar o registro do Tor na área de transferência">
-<!ENTITY torsettings.bridgeHelpTitle "Ajuda Relé de Ponte">
-<!ENTITY torsettings.bridgeHelp1 "Se for impossível conectar-se à rede Tor, talvez o seu Provedor de Internet (ISP) ou outra instância esteja bloqueando o Tor. . Normalmente, é possível contornar esse problema utilizando Pontes Tor, que são relés ocultos (não listados), mais difíceis de bloquear.">
+<!ENTITY torsettings.bridgeHelpTitle "Ajuda Retransmissor de Ponte">
+<!ENTITY torsettings.bridgeHelp1 "Se for impossível conectar-se à rede Tor, talvez o seu Provedor de Internet (ISP) ou outra instância esteja bloqueando o Tor. . Normalmente, é possível contornar esse problema utilizando Pontes Tor, que são retransmissores não listados, mais difíceis de bloquear.">
<!ENTITY torsettings.bridgeHelp1B "Você pode usar o conjunto de endereços de pontes fornecido, já pré-configurado, ou pode obter um conjunto de endereços personalizados utilizando um dos métodos indicados abaixo:">
<!ENTITY torsettings.bridgeHelp2Heading "Através da Web">
<!ENTITY torsettings.bridgeHelp2 "Use um navegador internet para visitar https://bridges.torproject.org">
diff --git a/src/chrome/locale/pt-BR/torlauncher.properties b/src/chrome/locale/pt-BR/torlauncher.properties
index eafba56..20cb37a 100644
--- a/src/chrome/locale/pt-BR/torlauncher.properties
+++ b/src/chrome/locale/pt-BR/torlauncher.properties
@@ -36,18 +36,18 @@ torlauncher.quit=Encerrar
torlauncher.quit_win=Sair
torlauncher.done=Terminado
-torlauncher.forAssistance=Para assistência, contacte
+torlauncher.forAssistance=Para assistência, contactar %S
torlauncher.forAssistance2=Se você precisar de assistência, por favor 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.
-torlauncher.bootstrapStatus.conn_dir=Conectando a um diretório de relés
+torlauncher.bootstrapStatus.conn_dir=Conectando a um diretório de retransmissores
torlauncher.bootstrapStatus.handshake_dir=Estabelecendo uma conexão de diretório criptografado
torlauncher.bootstrapStatus.requesting_status=Recebendo estado da rede
torlauncher.bootstrapStatus.loading_status=Carregando estado da rede
torlauncher.bootstrapStatus.loading_keys=Carregando certificados de autoridade
-torlauncher.bootstrapStatus.requesting_descriptors=Requisitando informações do relé
-torlauncher.bootstrapStatus.loading_descriptors=Carregando informações do relé
+torlauncher.bootstrapStatus.requesting_descriptors=Requisitando informações do retransmissor
+torlauncher.bootstrapStatus.loading_descriptors=Carregando informações do retransmissor
torlauncher.bootstrapStatus.conn_or=Conectando à rede Tor
torlauncher.bootstrapStatus.handshake_or=Estabelecendo um circuito Tor
torlauncher.bootstrapStatus.done=Conectado à rede Tor!
@@ -60,4 +60,4 @@ torlauncher.bootstrapWarning.identity=identidade conflitante
torlauncher.bootstrapWarning.timeout=tempo limite da conexão excedido
torlauncher.bootstrapWarning.noroute=sem rota para o host
torlauncher.bootstrapWarning.ioerror=erro de leitura/gravação
-torlauncher.bootstrapWarning.pt_missing=transporte plugável ausente
+torlauncher.bootstrapWarning.pt_missing=transportador plugável ausente
diff --git a/src/chrome/locale/th/network-settings.dtd b/src/chrome/locale/th/network-settings.dtd
index 0a4b839..240e71b 100644
--- a/src/chrome/locale/th/network-settings.dtd
+++ b/src/chrome/locale/th/network-settings.dtd
@@ -1,7 +1,7 @@
<!ENTITY torsettings.dialog.title "ตั้งค่าเครือข่าย Tor">
<!-- For locale picker: -->
-<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.title "ภาษาของทอร์เบราว์เซอร์">
<!ENTITY torlauncher.localePicker.prompt "โปรดเลือกภาษา">
<!-- For "first run" wizard: -->
@@ -15,7 +15,7 @@
<!ENTITY torSettings.configurePrompt1 "การเชื่อมต่ออินเตอร์เน็ตของคอมพิวเตอร์เครื่องนี้ถูกตรวจสอบหรือมีการใช้พร็อกซี่">
<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings before I connect to the Tor network.">
<!ENTITY torSettings.configure "กำหนดค่า">
-<!ENTITY torSettings.connectPrompt2 "I would like to make a direct connection to the Tor network.">
+<!ENTITY torSettings.connectPrompt2 "ฉันต้องการสร้างการเชื่อมต่อโดยตรงไปยังเครือข่ายทอร์.">
<!ENTITY torSettings.connectPrompt3 "นี่จะทำงานในสถานการณ์ส่วนใหญ่">
<!ENTITY torSettings.connect "เชื่อมต่อ">
@@ -25,7 +25,7 @@
<!ENTITY torSettings.proxyExplanation1 "In most cases a local proxy is not needed, but it may be required when connecting through a company, school, or university network.">
<!ENTITY torSettings.proxyExplanation2 "If you are not sure how to answer this question, look at the Internet settings in another browser or check your system's network settings to see whether a local proxy is needed.">
<!ENTITY torSettings.enterProxy "ใส่ค่าติดตั้งพร็อกซี">
-<!ENTITY torSettings.bridgePageTitle "Tor Bridges Configuration">
+<!ENTITY torSettings.bridgePageTitle "การตั้งค่า Tor Bridges">
<!ENTITY torSettings.bridgeQuestion "ผู้ให้บริการอินเตอร์เน็ต (ISP) ของคุณปิดกั้นหรือคัดกรองการเชื่อมต่อไปยังเครือข่าย Tor หรือไม่?">
<!ENTITY torSettings.bridgeExplanation1 "If you are not sure how to answer this question, choose No (if you are unable to connect to the Tor network without a bridge, you can add one later).">
<!ENTITY torSettings.bridgeExplanation2 "If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -60,14 +60,14 @@
<!ENTITY torsettings.useBridges.type "Transport type:">
<!ENTITY torsettings.useBridges.custom "Enter custom bridges">
<!ENTITY torsettings.useBridges.label "ใส่สะพานรีเลย์อย่างน้อยหนึ่งอัน (บรรทัดละอัน)">
-<!ENTITY torsettings.useBridges.placeholder "type address:port">
+<!ENTITY torsettings.useBridges.placeholder "พิมพ์ address:port">
<!ENTITY torsettings.copyLog "คัดลอกปูม Tor ไปที่คลิปบอร์ด">
<!ENTITY torsettings.bridgeHelpTitle "การช่วยเหลือรีเลย์สะพาน">
<!ENTITY torsettings.bridgeHelp1 "If you are unable to connect to the Tor network, it could be that your Internet Service Provider (ISP) or another agency is blocking Tor.  Often, you can work around this problem by using Tor Bridges, which are unlisted relays that are more difficult to block.">
<!ENTITY torsettings.bridgeHelp1B "You may use the preconfigured, provided set of bridge addresses or you may obtain a custom set of addresses by using one of these methods:">
-<!ENTITY torsettings.bridgeHelp2Heading "Through the Web">
-<!ENTITY torsettings.bridgeHelp2 "Use a web browser to visit https://bridges.torproject.org">
+<!ENTITY torsettings.bridgeHelp2Heading "ผ่านทางเว็บ">
+<!ENTITY torsettings.bridgeHelp2 "ใช้เว็บเบราว์เซอร์เพื่อเข้าชม https://bridges.torproject.org">
<!ENTITY torsettings.bridgeHelp3Heading "Through the Email Autoresponder">
<!ENTITY torsettings.bridgeHelp3.emailDesc "Send email to bridges(a)torproject.org with the line 'get bridges' by itself in the body of the message.  However, to make it harder for an attacker to learn a lot of bridge addresses, you must send this request from one of the following email providers (listed in order of preference):">
<!ENTITY torsettings.bridgeHelp3.emailList "https://www.riseup.net, https://mail.google.com, or https://mail.yahoo.com">
1
0
commit ed9bda9376fc0b85e5594e7893ae65a79999eb50
Author: Georg Koppen <gk(a)torproject.org>
Date: Mon Jan 16 14:12:01 2017 +0000
Translation updates
---
src/chrome/locale/de/network-settings.dtd | 2 +-
src/chrome/locale/es-MX/network-settings.dtd | 46 ++++++++--------
src/chrome/locale/es/network-settings.dtd | 16 +++---
src/chrome/locale/fr-CA/network-settings.dtd | 28 +++++-----
src/chrome/locale/fr-CA/torlauncher.properties | 32 +++++------
src/chrome/locale/fr/network-settings.dtd | 76 +++++++++++++-------------
src/chrome/locale/fr/progress.dtd | 2 +-
src/chrome/locale/fr/torlauncher.properties | 54 +++++++++---------
src/chrome/locale/is/torlauncher.properties | 14 ++---
src/chrome/locale/ko-KR/network-settings.dtd | 18 +++---
src/chrome/locale/lo/torlauncher.properties | 2 +-
src/chrome/locale/lt/torlauncher.properties | 6 +-
src/chrome/locale/nb/torlauncher.properties | 6 +-
src/chrome/locale/nn/network-settings.dtd | 2 +-
src/chrome/locale/nn/torlauncher.properties | 26 ++++-----
src/chrome/locale/pt-BR/network-settings.dtd | 8 +--
src/chrome/locale/pt-BR/torlauncher.properties | 10 ++--
src/chrome/locale/th/network-settings.dtd | 12 ++--
18 files changed, 180 insertions(+), 180 deletions(-)
diff --git a/src/chrome/locale/de/network-settings.dtd b/src/chrome/locale/de/network-settings.dtd
index 2124fff..c635745 100644
--- a/src/chrome/locale/de/network-settings.dtd
+++ b/src/chrome/locale/de/network-settings.dtd
@@ -69,7 +69,7 @@
<!ENTITY torsettings.bridgeHelp2Heading "Durch das Internet">
<!ENTITY torsettings.bridgeHelp2 "Benutzen Sie einen Browser und besuchen Sie https://bridges.torproject.org">
<!ENTITY torsettings.bridgeHelp3Heading "Durch die automatische E-Mail-Antwort">
-<!ENTITY torsettings.bridgeHelp3.emailDesc "Schicken Sie eine E-Mail mit dem Text 'get bridges' an bridges(a)torproject.org. Um Missbrauch durch das Auslesen großer Mengen an Brücken zu erschweren, muss Ihre Anfrage jedoch von einem der folgenden E-Mail-Anbieter kommen:">
+<!ENTITY torsettings.bridgeHelp3.emailDesc "Schicken Sie eine E-Mail mit dem Text 'get bridges' an bridges(a)torproject.org. Um Missbrauch durch das Auslesen großer Mengen an Brücken zu erschweren, muss Ihre Anfrage jedoch von einem der folgenden E-Mail-Anbieter kommen (aufgelistet in der Reihenfolge der Präferenz):">
<!ENTITY torsettings.bridgeHelp3.emailList "https://www.riseup.net, https://mail.google.com, oder https://mail.yahoo.com">
<!ENTITY torsettings.bridgeHelp4Heading "Durch die Beratungsstelle">
<!ENTITY torsettings.bridgeHelp4 "Brückenadressen können auch mit Hilfe einer höflichen E-Mail an help(a)rt.torproject.org angefordert werden.  Bitte beachten Sie, dass jede Anfrage einzeln bearbeitet werden muss.">
diff --git a/src/chrome/locale/es-MX/network-settings.dtd b/src/chrome/locale/es-MX/network-settings.dtd
index 99d4197..6dca5f8 100644
--- a/src/chrome/locale/es-MX/network-settings.dtd
+++ b/src/chrome/locale/es-MX/network-settings.dtd
@@ -1,44 +1,44 @@
<!ENTITY torsettings.dialog.title "Configuración de red Tor">
<!-- For locale picker: -->
-<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
-<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+<!ENTITY torlauncher.localePicker.title "Lenguaje en el explorador de Tor">
+<!ENTITY torlauncher.localePicker.prompt "Por favor selecciona un lenguaje">
<!-- For "first run" wizard: -->
-<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
+<!ENTITY torsettings.prompt "Antes de conectarte a la red de Tor, necesitas proveer información sobre la conexión de Internet de esta computadora. ">
<!ENTITY torSettings.yes "Si">
<!ENTITY torSettings.no "No">
-<!ENTITY torSettings.firstQuestion "Which of the following best describes your situation?">
-<!ENTITY torSettings.configurePrompt1 "This computer's Internet connection is censored or proxied.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings before I connect to the Tor network.">
-<!ENTITY torSettings.configure "Configure">
-<!ENTITY torSettings.connectPrompt2 "I would like to make a direct connection to the Tor network.">
-<!ENTITY torSettings.connectPrompt3 "This will work in most situations.">
+<!ENTITY torSettings.firstQuestion "Que describe mejor tu situación? Elige las opciones que apliquen. ">
+<!ENTITY torSettings.configurePrompt1 "La conexión de Internet de esta computadora esta censurada o en un proxy">
+<!ENTITY torSettings.configurePrompt2 "Necesito configurar un puente o ajustes del proxy local antes de que me conecte a la red Tor network.">
+<!ENTITY torSettings.configure "Configurar">
+<!ENTITY torSettings.connectPrompt2 "Me gustaría realizar una conexión directa a la red Tor. ">
+<!ENTITY torSettings.connectPrompt3 "Esto funcionara en la mayoría de las situaciones.">
<!ENTITY torSettings.connect "Conectar">
-<!ENTITY torSettings.proxyPageTitle "Local Proxy Configuration">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
+<!ENTITY torSettings.proxyPageTitle "Configuración del Proxy Local">
+<!ENTITY torSettings.proxyQuestion "Esta computadora necesita usar un proxy local para accesar el Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyExplanation1 "In most cases a local proxy is not needed, but it may be required when connecting through a company, school, or university network.">
-<!ENTITY torSettings.proxyExplanation2 "If you are not sure how to answer this question, look at the Internet settings in another browser or check your system's network settings to see whether a local proxy is needed.">
-<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
-<!ENTITY torSettings.bridgePageTitle "Tor Bridges Configuration">
-<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
-<!ENTITY torSettings.bridgeExplanation1 "If you are not sure how to answer this question, choose No (if you are unable to connect to the Tor network without a bridge, you can add one later).">
-<!ENTITY torSettings.bridgeExplanation2 "If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
-<!ENTITY torSettings.bridgeSettingsPrompt "You may use the provided set of bridges or you may obtain and enter a custom set of bridges.">
+<!ENTITY torSettings.proxyExplanation1 "La mayoría de los casos no requieren un proxy local, pero si podría ser requerido cuando te conectas por medio de una compañia, escuela, o red universitaria.">
+<!ENTITY torSettings.proxyExplanation2 "Si no estas seguro de como contestar esta pregunta, ve tu configuración de Internet en otro explorador o checa tu configuración de red del sistema para ver si necesitas un proxy local o no. ">
+<!ENTITY torSettings.enterProxy "Introduce la configuración de proxy">
+<!ENTITY torSettings.bridgePageTitle "Configuracion de puentes Tor">
+<!ENTITY torSettings.bridgeQuestion "Tu proveedor de servicio de Internet (ISP) bloquea o censura conexiones a la red de Tor?">
+<!ENTITY torSettings.bridgeExplanation1 "Si no estas seguro de como contestar la pregunta, escoge No (si no puedes conectarte a la red Tor sin un puente, puedes agregar uno despues).">
+<!ENTITY torSettings.bridgeExplanation2 "Si escoges Si, se te pedira configurar puentes Tor, los cuales son relés no registrados que hace que sea mas dificil bloquear las conexiones de la red Tor. ">
+<!ENTITY torSettings.bridgeSettingsPrompt "Puedes usar el conjunto de puentes o puedes obtener e introducir un conjunto personalizado de puentes.">
<!-- Other: -->
-<!ENTITY torsettings.startingTor "Waiting for Tor to start…">
+<!ENTITY torsettings.startingTor "Esperando a que Tor inicie...">
<!ENTITY torsettings.restartTor "Reiniciar Tor">
-<!ENTITY torsettings.reconfigTor "Reconfigure">
+<!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 "Has configurado los puentes Tor o has introducido un proxy local settings.  Para hacer una conexión directa a la red Tor, esta configuración debe removerse. ">
+<!ENTITY torsettings.discardSettings.proceed "Remover configuración y conectarse">
<!ENTITY torsettings.optional "Optional">
diff --git a/src/chrome/locale/es/network-settings.dtd b/src/chrome/locale/es/network-settings.dtd
index ac15664..91a356a 100644
--- a/src/chrome/locale/es/network-settings.dtd
+++ b/src/chrome/locale/es/network-settings.dtd
@@ -13,7 +13,7 @@
<!ENTITY torSettings.firstQuestion "¿Cuál de las siguientes opciones describe mejor su situación?">
<!ENTITY torSettings.configurePrompt1 "La conexión a Internet de este equipo está censurada o proxificada.">
-<!ENTITY torSettings.configurePrompt2 "Necesito configurar bridge o los ajustes del proxy local antes de conectar a la red Tor. ">
+<!ENTITY torSettings.configurePrompt2 "Necesito configurar los ajustes de puente de red o proxy local antes de conectar a la red Tor. ">
<!ENTITY torSettings.configure "Configurar">
<!ENTITY torSettings.connectPrompt2 "Quisiera hacer una conexión directa a la red Tor.">
<!ENTITY torSettings.connectPrompt3 "Esto funcionará en la mayoría de las situaciones.">
@@ -25,11 +25,11 @@
<!ENTITY torSettings.proxyExplanation1 "En la mayoría de los casos no se requiere un proxy (interpuesto) local, pero puede ser necesario al realizar una conexión a través de una red de empresa, de escuela, o universitaria. ">
<!ENTITY torSettings.proxyExplanation2 "Si no está seguro de cómo responder a esta pregunta, mire la configuración de Internet en otro navegador o compruebe la configuración de red de su sistema para ver si un proxy local es necesario.">
<!ENTITY torSettings.enterProxy "Introduzca los ajustes del proxy.">
-<!ENTITY torSettings.bridgePageTitle "Configuración de puentes Tor">
+<!ENTITY torSettings.bridgePageTitle "Configuración de puentes de red Tor">
<!ENTITY torSettings.bridgeQuestion "Su proveedor de servicios de Internet (ISP) bloquea o censura de alguna forma las conexiones hacia la red Tor?">
-<!ENTITY torSettings.bridgeExplanation1 "Si no está seguro de cómo responder a esta pregunta, elija No (si no puede conectarse a la red Tor sin un puente (bridge), puede añadir uno más adelante).">
-<!ENTITY torSettings.bridgeExplanation2 "Si elige Sí, se le pedirá que configure los puentes (bridges) de Tor, que son repetidores no listados que dificultan el bloqueo de conexiones hacia la red Tor.">
-<!ENTITY torSettings.bridgeSettingsPrompt "Puede utilizar el conjunto de repetidores puente (bridge) proporcionado, o puede obtener e introducir un juego de puentes personalizado.">
+<!ENTITY torSettings.bridgeExplanation1 "Si no está seguro de cómo responder a esta pregunta, elija No (si no puede conectarse a la red Tor sin un puente de red (bridge), puede añadir uno más adelante).">
+<!ENTITY torSettings.bridgeExplanation2 "Si elige Sí, se le pedirá que configure los puentes de red (bridges) de Tor, que son repetidores no listados que dificultan el bloqueo de conexiones hacia la red Tor.">
+<!ENTITY torSettings.bridgeSettingsPrompt "Puede utilizar el conjunto de puentes de red (bridges) proporcionado, o puede obtener e introducir un juego de puentes personalizado.">
<!-- Other: -->
@@ -37,7 +37,7 @@
<!ENTITY torsettings.restartTor "Reiniciar Tor">
<!ENTITY torsettings.reconfigTor "Configurar de nuevo">
-<!ENTITY torsettings.discardSettings.prompt "Ha configurado los puentes (bridges) de Tor o ha introducido los ajustes para proxy (interpuesto) local.  Para realizar una conexión directa a la red Tor, estos ajustes deben ser borrados.">
+<!ENTITY torsettings.discardSettings.prompt "Ha configurado los puentes de red (bridges) de Tor o ha introducido los ajustes para proxy (interpuesto) local.  Para realizar una conexión directa a la red Tor, estos ajustes deben ser borrados.">
<!ENTITY torsettings.discardSettings.proceed "Eliminar ajustes y conectar">
<!ENTITY torsettings.optional "Opcional">
@@ -56,7 +56,7 @@
<!ENTITY torsettings.firewall.allowedPorts "Puertos permitidos:">
<!ENTITY torsettings.useBridges.checkbox "Mi Proveedor de Servicios de Internet (ISP) bloquea las conexiones a la red Tor">
<!ENTITY torsettings.useBridges.default "Conectar con los puentes proporcionados">
-<!ENTITY torsettings.useBridges.note "Cada tipo de puente (bridge) usa un método diferente para evitar la censura.  Si un repetidor puente no funciona, inténtelo de nuevo utilizando otro distinto.">
+<!ENTITY torsettings.useBridges.note "Cada tipo de puente de red usa un método diferente para evitar la censura.  Si un puente no funciona, inténtelo de nuevo utilizando otro distinto.">
<!ENTITY torsettings.useBridges.type "Tipo de transporte:">
<!ENTITY torsettings.useBridges.custom "Introducir puentes personalizados">
<!ENTITY torsettings.useBridges.label "Introduzca uno o más repetidores puente(uno por línea).">
@@ -65,7 +65,7 @@
<!ENTITY torsettings.copyLog "Copiar el registro de mensajes(log) de Tor al portapapeles">
<!ENTITY torsettings.bridgeHelpTitle "Ayuda de repetidores puente ('bridge relays')">
<!ENTITY torsettings.bridgeHelp1 "Si no puede conectarse a la red Tor, podría ser que su proveedor de servicios de Internet (ISP) u otra agencia, esté bloqueando Tor.  A menudo, puede evitar este problema usando puentes ('bridges') de Tor, que son repetidores ('relays') de salida de la red Tor que no son públicos, y es más difícil que sean bloqueados.">
-<!ENTITY torsettings.bridgeHelp1B "Puede usar el juego preconfigurado de direcciones de puentes proporcionado, o puede obtener un juego personalizado de direcciones usando uno de estos métodos:">
+<!ENTITY torsettings.bridgeHelp1B "Puede usar el juego preajustado de direcciones de puentes de red proporcionado, o puede obtener un juego personalizado de direcciones usando uno de estos métodos:">
<!ENTITY torsettings.bridgeHelp2Heading "Mediante la web">
<!ENTITY torsettings.bridgeHelp2 "Use un navegador web para visitar https://bridges.torproject.org">
<!ENTITY torsettings.bridgeHelp3Heading "Mediante el correo electrónico automático">
diff --git a/src/chrome/locale/fr-CA/network-settings.dtd b/src/chrome/locale/fr-CA/network-settings.dtd
index 448a2d5..a4056e0 100644
--- a/src/chrome/locale/fr-CA/network-settings.dtd
+++ b/src/chrome/locale/fr-CA/network-settings.dtd
@@ -2,7 +2,7 @@
<!-- For locale picker: -->
<!ENTITY torlauncher.localePicker.title "Langue du navigateur Tor">
-<!ENTITY torlauncher.localePicker.prompt "Veuillez choisir une langue">
+<!ENTITY torlauncher.localePicker.prompt "Veuillez choisir une langue.">
<!-- For "first run" wizard: -->
@@ -16,18 +16,18 @@
<!ENTITY torSettings.configurePrompt2 "Je dois paramétrer un pont ou un mandataire local avant de me connecter au réseau Tor.">
<!ENTITY torSettings.configure "Configurer">
<!ENTITY torSettings.connectPrompt2 "J'aimerais établir une connexion directe vers le réseau Tor.">
-<!ENTITY torSettings.connectPrompt3 "Ceci fonctionnera dans la plupart des situations.">
+<!ENTITY torSettings.connectPrompt3 "Cela fonctionnera dans la plupart des situations.">
<!ENTITY torSettings.connect "Se connecter">
<!ENTITY torSettings.proxyPageTitle "Configuration du mandataire local">
<!ENTITY torSettings.proxyQuestion "Cet ordinateur doit-il utiliser un serveur mandataire local pour accéder à Internet?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
<!ENTITY torSettings.proxyExplanation1 "Dans la plupart des cas, un serveur mandataire local n'est pas requis, mais il pourrait être exigé pour une connexion par un réseau d'entreprise, d'école ou d'université.">
-<!ENTITY torSettings.proxyExplanation2 "Si vous n'êtes pas certain de savoir comment répondre à cette question, vérifier les paramètres Internet d'un autre navigateur ou vérifier les paramètres réseau de votre système pour voir si un serveur mandataire local est requis.">
+<!ENTITY torSettings.proxyExplanation2 "Si vous n'êtes pas certain de savoir comment répondre à cette question, vérifiez les paramètres Internet d'un autre navigateur ou les paramètres réseau de votre système pour voir si un serveur mandataire local est requis.">
<!ENTITY torSettings.enterProxy "Saisir les paramètres du serveur mandataire.">
<!ENTITY torSettings.bridgePageTitle "Configuration des ponts Tor">
-<!ENTITY torSettings.bridgeQuestion "Votre fournisseur de service Internet (FSI) bloque-t-il ou censure-t-il vos connexions au réseau Tor?">
-<!ENTITY torSettings.bridgeExplanation1 "Si vous n'êtes pas certain de savoir comment répondre à cette question, choisir Non (si vous n'arrivez pas à vous connecter au réseau Tor sans pont, pour pourrez en ajouter un ultérieurement).">
+<!ENTITY torSettings.bridgeQuestion "Votre fournisseur d'accès à Internet (FAI) bloque-t-il ou censure-t-il vos connexions au réseau Tor?">
+<!ENTITY torSettings.bridgeExplanation1 "Si vous n'êtes pas certain de savoir comment répondre à cette question, choisissez Non (si vous n'arrivez pas à vous connecter au réseau Tor sans pont, pour pourrez en ajouter un ultérieurement).">
<!ENTITY torSettings.bridgeExplanation2 "Si vous choisissez Oui, l'on vous demandera de configurer des ponts Tor, qui sont des relais non répertoriés rendant le blocage des connexions au réseau Tor plus difficile.">
<!ENTITY torSettings.bridgeSettingsPrompt "Vous pouvez utiliser le jeu de ponts fourni ou vous pouvez obtenir et saisir un jeu de ponts personnalisé.">
@@ -40,7 +40,7 @@
<!ENTITY torsettings.discardSettings.prompt "Vous avez configuré des ponts Tor ou vous avez saisi des paramètres de mandataire local.  Pour établir une connexion directe vers le réseau Tor, ces paramètres doivent être supprimés.">
<!ENTITY torsettings.discardSettings.proceed "Supprimer les paramètres et se connecter">
-<!ENTITY torsettings.optional "Optionnel">
+<!ENTITY torsettings.optional "Facultatif">
<!ENTITY torsettings.useProxy.checkbox "Cet ordinateur doit utiliser un mandataire local pour accéder à Internet">
<!ENTITY torsettings.useProxy.type "Type de mandataire :">
@@ -54,22 +54,22 @@
<!ENTITY torsettings.useProxy.type.http "HTTP / HTTPS">
<!ENTITY torsettings.firewall.checkbox "Cet ordinateur passe par un pare-feu qui n'autorise que les connexions à certains ports">
<!ENTITY torsettings.firewall.allowedPorts "Ports autorisés :">
-<!ENTITY torsettings.useBridges.checkbox "Mon fournisseur d'accès à Internet (FAI) bloque les connexions au réseau Tor">
+<!ENTITY torsettings.useBridges.checkbox "Mon fournisseur d'accès à Internet (FAI) bloque les connexions vers le réseau Tor">
<!ENTITY torsettings.useBridges.default "Se connecter avec les ponts fournis">
-<!ENTITY torsettings.useBridges.note "Chaque type de pont utilise une méthode différente pour contourner la censure.  Si un pont ne fonctionne pas, ressayer en utilisant un autre type.">
+<!ENTITY torsettings.useBridges.note "Chaque type de pont utilise une méthode différente pour contourner la censure.  Si un pont ne fonctionne pas, ressayez en utilisant un autre type.">
<!ENTITY torsettings.useBridges.type "Type de transport :">
<!ENTITY torsettings.useBridges.custom "Saisir les ponts personnalisés">
<!ENTITY torsettings.useBridges.label "Saisir un ou plusieurs relais-ponts (un par ligne).">
<!ENTITY torsettings.useBridges.placeholder "type adresse:port">
-<!ENTITY torsettings.copyLog "Copier le journal de Tor dans le presse-papier">
-<!ENTITY torsettings.bridgeHelpTitle "Aide pour les relais-ponts">
+<!ENTITY torsettings.copyLog "Copier le journal de Tor dans le presse-papiers">
+<!ENTITY torsettings.bridgeHelpTitle "Aide sur les relais-ponts">
<!ENTITY torsettings.bridgeHelp1 "Si vous ne pouvez pas vous connecter au réseau Tor, il se peut que votre fournisseur d'accès à Internet (FAI) ou une autre organisme bloque Tor.  Vous pouvez souvent le contourner en utilisant des ponts Tor qui sont des relais non répertoriés, plus difficiles à bloquer.">
<!ENTITY torsettings.bridgeHelp1B "Vous pouvez utiliser le jeu préconfiguré d'adresses de ponts fourni ou vous pouvez obtenir un jeu personnalisé d'adresses en utilisant une de ces méthodes :">
-<!ENTITY torsettings.bridgeHelp2Heading "par le Web">
-<!ENTITY torsettings.bridgeHelp2 "en utilisant un navigateur Web pour visiter https://bridges.torproject.org">
+<!ENTITY torsettings.bridgeHelp2Heading "Par le Web">
+<!ENTITY torsettings.bridgeHelp2 "En utilisant un navigateur Web pour visiter https://bridges.torproject.org">
<!ENTITY torsettings.bridgeHelp3Heading "Par le répondeur automatique de courriel">
-<!ENTITY torsettings.bridgeHelp3.emailDesc "Envoyez un courriel à bridges(a)torproject.org avec la ligne « get bridges » seule dans le corps du message.  Cependant, afin que cela soit plus difficile pour un attaqueur de découvrir de nombreuses adresses de ponts, vous devez envoyer cette demande à partir d'un des fournisseurs de courriel suivants (listés par ordre de préférence) :">
+<!ENTITY torsettings.bridgeHelp3.emailDesc "Envoyez un courriel à bridges(a)torproject.org avec la ligne « get bridges » seule dans le corps du message.  Cependant, afin qu'il soit plus difficile pour un attaquant de découvrir de nombreuses adresses de ponts, vous devez envoyer cette demande à partir d'un des fournisseurs de courriel suivants (listés par ordre de préférence) :">
<!ENTITY torsettings.bridgeHelp3.emailList "https://www.riseup.net, https://mail.google.com ou https://mail.yahoo.com">
-<!ENTITY torsettings.bridgeHelp4Heading "par le centre d'assistance">
+<!ENTITY torsettings.bridgeHelp4Heading "Par le centre d'assistance">
<!ENTITY torsettings.bridgeHelp4 "En dernier recours, vous pouvez demander des adresses de ponts en envoyant un courriel poli à help(a)rt.torproject.org.  Veuillez remarquer qu'une personne devra répondre à chaque demande.">
diff --git a/src/chrome/locale/fr-CA/torlauncher.properties b/src/chrome/locale/fr-CA/torlauncher.properties
index c2d4216..e213ea0 100644
--- a/src/chrome/locale/fr-CA/torlauncher.properties
+++ b/src/chrome/locale/fr-CA/torlauncher.properties
@@ -3,8 +3,8 @@
torlauncher.error_title=Lanceur Tor
-torlauncher.tor_exited_during_startup=Tor s'est fermé pendant le démarrage. Ceci peut être dû à une erreur dans votre fichier torrc, un bogue dans Tor ou dans un autre programme de votre système, ou encore à un matériel défectueux. Jusqu'à ce que vous corrigiez le problème sous-jacent et redémarriez Tor, le navigateur Tor ne démarrera pas.
-torlauncher.tor_exited=Tor a quitté de manière imprévue. Ceci peut être dû à un bogue dans Tor même, un autre programme dans votre système ou un matériel défectueux. Jusqu'à ce que vous redémarriez Tor, le navigateur Tor ne sera capable d'atteindre aucun site. Si le problème persiste, veuillez envoyer une copie de votre journal de Tor à l'équipe de soutien.
+torlauncher.tor_exited_during_startup=Tor s'est fermé pendant le démarrage. Cela peut être dû à une erreur dans votre fichier torrc, un bogue dans Tor ou dans un autre programme de votre système, ou encore à un matériel défectueux. Jusqu'à ce que vous corrigiez le problème sous-jacent et redémarriez Tor, le navigateur Tor ne démarrera pas.
+torlauncher.tor_exited=Tor s'est fermé de manière imprévue. Cela peut être dû à un bogue dans Tor même, un autre programme dans votre système ou un matériel défectueux. Jusqu'à ce que vous redémarriez Tor, le navigateur Tor ne pourra atteindre aucun site. Si le problème persiste, veuillez envoyer une copie de votre journal de Tor à l'équipe de soutien.
torlauncher.tor_exited2=Redémarrer Tor ne fermera par les onglets de votre navigateur.
torlauncher.tor_controlconn_failed=Impossible de se connecter au port de contrôle de Tor.
torlauncher.tor_failed_to_start=Tor n'a pas pu démarrer.
@@ -13,30 +13,30 @@ torlauncher.tor_bootstrap_failed=Échec lors de la connexion de Tor au réseau T
torlauncher.tor_bootstrap_failed_details=%1$S a échoué (%2$S).
torlauncher.unable_to_start_tor=Impossible de démarrer Tor.\n\n%S
-torlauncher.tor_missing=L'exécutable Tor est manquant.
-torlauncher.torrc_missing=Le fichier torrc est manquant et n'a pas pu être créé.
-torlauncher.datadir_missing=Le répertoire de données Tor n'existe pas et n'a pas pu être créé.
+torlauncher.tor_missing=Il manque l'exécutable Tor.
+torlauncher.torrc_missing=Le fichier torrc manque et n'a pas pu être créé.
+torlauncher.datadir_missing=Le répertoire de données de Tor n'existe pas et n'a pas pu être créé.
torlauncher.password_hash_missing=Impossible d'obtenir le mot de passe haché.
torlauncher.failed_to_get_settings=Impossible de récupérer les paramètres de Tor.\n\n%S
-torlauncher.failed_to_save_settings=Impossible de sauvegarder les paramètres de Tor.\n\n%S
-torlauncher.ensure_tor_is_running=Veuillez-vous assurer que Tor tourne.
+torlauncher.failed_to_save_settings=Impossible d'enregistrer les paramètres de Tor.\n\n%S
+torlauncher.ensure_tor_is_running=Veuillez-vous assurer que Tor fonctionne.
-torlauncher.error_proxy_addr_missing=Vous devez spécifier à la fois une adresse IP ou un nom d'hôte et un numéro de port afin de configurer Tor à l'usage d'un mandataire pour accéder à Internet.
+torlauncher.error_proxy_addr_missing=Vous devez spécifier à la fois une adresse IP ou un nom d'hôte et un numéro de port afin de configurer Tor pour qu'il utilise un mandataire pour accéder à Internet.
torlauncher.error_proxy_type_missing=Vous devez choisir le type de mandataire.
torlauncher.error_bridges_missing=Vous devez spécifier un ou plusieurs ponts.
torlauncher.error_default_bridges_type_missing=Vous devez choisir un type de transport pour les ponts fournis.
-torlauncher.error_bridge_bad_default_type=Aucun pont n'est disponible pour le type de transport %S, Veuillez ajuster vos paramètres.
+torlauncher.error_bridge_bad_default_type=Aucun des pont fournis n'est disponible pour le type de transport %S, Veuillez ajuster vos paramètres.
torlauncher.recommended_bridge=(recommandé)
torlauncher.connect=Se connecter
torlauncher.restart_tor=Redémarrer Tor
torlauncher.quit=Quitter
-torlauncher.quit_win=Sortir
-torlauncher.done=Fait
+torlauncher.quit_win=Sortie
+torlauncher.done=Terminé
-torlauncher.forAssistance=Pour l'assistance, contacter %S
+torlauncher.forAssistance=Pour de l'assistance, contacter %S
torlauncher.forAssistance2=Pour de l'assistance, visiter %S
torlauncher.copiedNLogMessages=La copie est terminée. %S messages de journalisation de Tor sont prêts à être coller dans un éditeur de texte ou un courriel.
@@ -46,11 +46,11 @@ torlauncher.bootstrapStatus.handshake_dir=Mise en place d'une connexion chiffré
torlauncher.bootstrapStatus.requesting_status=Récupération de l'état du réseau
torlauncher.bootstrapStatus.loading_status=Chargement de l'état du réseau
torlauncher.bootstrapStatus.loading_keys=Chargement des certificats d'autorité
-torlauncher.bootstrapStatus.requesting_descriptors=Demande des informations de relais
-torlauncher.bootstrapStatus.loading_descriptors=Chargement des informations de relais
+torlauncher.bootstrapStatus.requesting_descriptors=Demande d'informations sur le relais
+torlauncher.bootstrapStatus.loading_descriptors=Chargement des informations sur le relais
torlauncher.bootstrapStatus.conn_or=Connexion au réseau Tor
torlauncher.bootstrapStatus.handshake_or=Mise en place d'un circuit Tor
-torlauncher.bootstrapStatus.done=Connecté au réseau Tor!
+torlauncher.bootstrapStatus.done=Vous êtes connecté au réseau Tor!
torlauncher.bootstrapWarning.done=effectué
torlauncher.bootstrapWarning.connectrefused=connexion refusée
@@ -60,4 +60,4 @@ torlauncher.bootstrapWarning.identity=mauvaise concordance de l'identité
torlauncher.bootstrapWarning.timeout=expiration du temps de connexion
torlauncher.bootstrapWarning.noroute=pas de route vers l'hôte
torlauncher.bootstrapWarning.ioerror=erreur de lecture/écriture
-torlauncher.bootstrapWarning.pt_missing=transport enfichable manquant
+torlauncher.bootstrapWarning.pt_missing=le transport enfichable manque
diff --git a/src/chrome/locale/fr/network-settings.dtd b/src/chrome/locale/fr/network-settings.dtd
index 859c2ee..078424e 100644
--- a/src/chrome/locale/fr/network-settings.dtd
+++ b/src/chrome/locale/fr/network-settings.dtd
@@ -1,49 +1,49 @@
<!ENTITY torsettings.dialog.title "Paramètres du réseau Tor">
<!-- For locale picker: -->
-<!ENTITY torlauncher.localePicker.title "Langue du Navigateur Tor">
-<!ENTITY torlauncher.localePicker.prompt "Merci de sélectionner une langue.">
+<!ENTITY torlauncher.localePicker.title "Langue du navigateur Tor">
+<!ENTITY torlauncher.localePicker.prompt "Veuillez choisir une langue.">
<!-- For "first run" wizard: -->
-<!ENTITY torsettings.prompt "Vous devez fournir des informations concernant la connexion à Internet de cet ordinateur afin de pouvoir vous connecter au réseau Tor.">
+<!ENTITY torsettings.prompt "Avant de vous connecter au réseau Tor, vous devez fournir des informations sur la connexion Internet de cet ordinateur.">
<!ENTITY torSettings.yes "Oui">
<!ENTITY torSettings.no "Non">
-<!ENTITY torSettings.firstQuestion "Laquelle des phrases suivantes décrit le mieux votre situation ?">
-<!ENTITY torSettings.configurePrompt1 "Le connexion internet de cet ordinateur est restreinte (censurée) ou passe par un proxy.">
-<!ENTITY torSettings.configurePrompt2 "Je dois configurer le bridge ou les paramètres du proxy avant de me connecter au réseau Tor.">
+<!ENTITY torSettings.firstQuestion "Laquelle des suivantes décrit le mieux votre situation ?javascript:;">
+<!ENTITY torSettings.configurePrompt1 "La connexion Internet de cet ordinateur est censurée ou relayée.">
+<!ENTITY torSettings.configurePrompt2 "Je dois paramétrer un pont ou un mandataire local avant de me connecter au réseau Tor.">
<!ENTITY torSettings.configure "Configurer">
-<!ENTITY torSettings.connectPrompt2 "Je voudrais faire une connexion directe au réseau Tor.">
+<!ENTITY torSettings.connectPrompt2 "J'aimerais établir une connexion directe vers le réseau Tor.">
<!ENTITY torSettings.connectPrompt3 "Cela fonctionnera dans la plupart des situations.">
<!ENTITY torSettings.connect "Se connecter">
-<!ENTITY torSettings.proxyPageTitle "Configuration du proxy local">
-<!ENTITY torSettings.proxyQuestion "Est-ce que cet ordinateur a besoin d'utiliser un proxy pour accéder à internet ?">
+<!ENTITY torSettings.proxyPageTitle "Configuration du mandataire local">
+<!ENTITY torSettings.proxyQuestion "Cet ordinateur doit-il utiliser un serveur mandataire local pour accéder à Internet ?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyExplanation1 "Dans la plupart des cas le proxy local n'est pas nécessaire, mais il peut être exigé pour une connexion dans un réseau d'entreprise, d'école ou universitaire.">
-<!ENTITY torSettings.proxyExplanation2 "Si vous n'êtes pas certain de savoir comment répondre à cette question, regardez les paramètres Internet d'un autre navigateur ou les paramètres réseaux de votre système afin de vérifier si vous avez besoin d'un proxy.">
-<!ENTITY torSettings.enterProxy "Entrez les paramètres de votre proxy.">
-<!ENTITY torSettings.bridgePageTitle "Configuration des relais TOR">
-<!ENTITY torSettings.bridgeQuestion "Est-ce que votre Fournisseur d'Accès Internet (FAI) bloque les connexions au réseau Tor ?">
-<!ENTITY torSettings.bridgeExplanation1 "Si vous ne savez par comment répondre à cette question, choisissez Non (si vous ne pouvez pas vous connecter au réseau Tor sans un bridge, vous pourrez le rajouter plus tard).">
-<!ENTITY torSettings.bridgeExplanation2 "Si vous choisissez Oui, il vous sera demandé de configurer les bridges Tor qui sont des relais non listés et qui rendent plus difficile le blocage du réseau Tor.">
-<!ENTITY torSettings.bridgeSettingsPrompt "Vous pouvez utiliser les bridges fournis ou bien saisir votre liste de bridges personnels.">
+<!ENTITY torSettings.proxyExplanation1 "Dans la plupart des cas, un serveur mandataire local n'est pas requis, mais il pourrait être exigé pour une connexion par un réseau d'entreprise, d'école ou d'université.">
+<!ENTITY torSettings.proxyExplanation2 "Si vous n'êtes pas certain de savoir comment répondre à cette question, vérifiez les paramètres Internet d'un autre navigateur ou les paramètres réseau de votre système pour voir si un serveur mandataire local est requis.">
+<!ENTITY torSettings.enterProxy "Saisir les paramètres du serveur mandataire.">
+<!ENTITY torSettings.bridgePageTitle "Configuration des ponts Tor">
+<!ENTITY torSettings.bridgeQuestion "Votre fournisseur d'accès à Internet (FAI) bloque-t-il ou censure-t-il vos connexions au réseau Tor ?">
+<!ENTITY torSettings.bridgeExplanation1 "Si vous n'êtes pas certain de savoir comment répondre à cette question, choisissez Non (si vous n'arrivez pas à vous connecter au réseau Tor sans pont, pour pourrez en ajouter un ultérieurement).">
+<!ENTITY torSettings.bridgeExplanation2 "Si vous choisissez Oui, il vous sera demandé de configurer des ponts Tor, qui sont des relais non répertoriés et qui rendent plus difficile le blocage du réseau Tor.">
+<!ENTITY torSettings.bridgeSettingsPrompt "Vous pouvez utiliser le jeu de ponts fourni ou vous pouvez obtenir et saisir un jeu de ponts personnalisé.">
<!-- Other: -->
<!ENTITY torsettings.startingTor "En attente du démarrage de Tor...">
-<!ENTITY torsettings.restartTor "Relancer Tor">
+<!ENTITY torsettings.restartTor "Redémarrer Tor">
<!ENTITY torsettings.reconfigTor "Reconfigurer">
-<!ENTITY torsettings.discardSettings.prompt "Vous avez configuré les bridges Tor ou vous avez entré les paramètres de proxy local. Pour faire une connexion directe avec le réseau Tor, ces configurations doivent être supprimés.">
+<!ENTITY torsettings.discardSettings.prompt "Vous avez configuré des ponts Tor ou vous avez saisi des paramètres de mandataire local.  Pour établir une connexion directe vers le réseau Tor, ces paramètres doivent être supprimés.">
<!ENTITY torsettings.discardSettings.proceed "Supprimer les paramètres et se connecter">
-<!ENTITY torsettings.optional "Optionnel">
+<!ENTITY torsettings.optional "Facultatif">
-<!ENTITY torsettings.useProxy.checkbox "Cet ordinateur a besoin d'utiliser un proxy pour accéder à internet.">
-<!ENTITY torsettings.useProxy.type "Type de proxy :">
+<!ENTITY torsettings.useProxy.checkbox "Cet ordinateur doit utiliser un mandataire local pour accéder à Internet">
+<!ENTITY torsettings.useProxy.type "Type de mandataire :">
<!ENTITY torsettings.useProxy.address "Adresse :">
<!ENTITY torsettings.useProxy.address.placeholder "Adresse IP ou nom d'hôte">
<!ENTITY torsettings.useProxy.port "Port :">
@@ -52,24 +52,24 @@
<!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 "Cet ordinateur passe par un pare-feu qui autorise uniquement les connexions à certains ports">
+<!ENTITY torsettings.firewall.checkbox "Cet ordinateur passe par un pare-feu qui n'autorise que les connexions à certains ports">
<!ENTITY torsettings.firewall.allowedPorts "Ports autorisés :">
-<!ENTITY torsettings.useBridges.checkbox "Mon Fournisseur d'Accès à Internet (FAI) bloque les connexions au réseau Tor">
-<!ENTITY torsettings.useBridges.default "Se connecter en utilisant les bridges pré-configurés">
-<!ENTITY torsettings.useBridges.note "Chaque type de bridge utilise une méthode différente pour éviter la censure. Si un bridge ne marche pas, essayez de nouveau avec un autre.">
-<!ENTITY torsettings.useBridges.type "Mode de transport:">
-<!ENTITY torsettings.useBridges.custom "Entrez vos ponts personnels">
-<!ENTITY torsettings.useBridges.label "Saisir un ou davantage de relais bridges (un par ligne).">
-<!ENTITY torsettings.useBridges.placeholder "tapez adresse:port">
+<!ENTITY torsettings.useBridges.checkbox "Mon fournisseur d'accès à Internet (FAI) bloque les connexions vers le réseau Tor">
+<!ENTITY torsettings.useBridges.default "Se connecter avec les ponts fournis">
+<!ENTITY torsettings.useBridges.note "Chaque type de pont utilise une méthode différente pour contourner la censure.  Si un pont ne fonctionne pas, ressayez en utilisant un autre type.">
+<!ENTITY torsettings.useBridges.type "Type de transport :">
+<!ENTITY torsettings.useBridges.custom "Saisir les ponts personnalisés">
+<!ENTITY torsettings.useBridges.label "Saisir un ou plusieurs relais-ponts (un par ligne).">
+<!ENTITY torsettings.useBridges.placeholder "type address:port">
-<!ENTITY torsettings.copyLog "Copier le journal des messages de Tor dans le presse-papier">
-<!ENTITY torsettings.bridgeHelpTitle "Aide pour les bridges">
-<!ENTITY torsettings.bridgeHelp1 "Si vous ne pouvez pas vous connecter au réseau Tor, il se pourrait que votre fournisseur d'accès à Internet (FAI) ou une autre agence bloque le Tor.  Souvent, vous pouvez contourner ce problème en utilisant des bridges Tor, qui sont des relais non listés qui sont plus difficiles à bloquer.">
-<!ENTITY torsettings.bridgeHelp1B "Vous pouvez utiliser la liste fournie et pré-configurée d'adresses de bridges, ou alors obtenir une liste personnalisée d'adresses en utilisant une de ces méthodes :">
+<!ENTITY torsettings.copyLog "Copier le journal de Tor dans le presse-papiers">
+<!ENTITY torsettings.bridgeHelpTitle "Aide sur les relais-ponts">
+<!ENTITY torsettings.bridgeHelp1 "Si vous ne pouvez pas vous connecter au réseau Tor, il se peut que votre fournisseur d'accès à Internet (FAI) ou une autre organisme bloque Tor.  Vous pouvez souvent le contourner en utilisant des ponts Tor qui sont des relais non répertoriés, plus difficiles à bloquer.">
+<!ENTITY torsettings.bridgeHelp1B "Vous pouvez utiliser le jeu préconfiguré d'adresses de ponts fourni ou vous pouvez obtenir un jeu personnalisé d'adresses en utilisant une de ces méthodes :">
<!ENTITY torsettings.bridgeHelp2Heading "Par le Web">
-<!ENTITY torsettings.bridgeHelp2 "Utilisez un navigateur web pour visiter https://bridges.torproject.org">
+<!ENTITY torsettings.bridgeHelp2 "En utilisant un navigateur Web pour visiter https://bridges.torproject.org">
<!ENTITY torsettings.bridgeHelp3Heading "Par le répondeur automatique de courriel">
-<!ENTITY torsettings.bridgeHelp3.emailDesc "Envoyez un courriel à bridges(a)torproject.org avec la ligne « get bridges » seule dans le corps du message.  Cependant, afin que cela soit plus difficile pour un attaqueur de découvrir de nombreuses adresses de ponts, vous devez envoyer cette demande à partir d'un des fournisseurs de courriel suivants (listés par ordre de préférence) :">
-<!ENTITY torsettings.bridgeHelp3.emailList "https://www.riseup.net, https://mail.google.com, ou https://mail.yahoo.com">
-<!ENTITY torsettings.bridgeHelp4Heading "Par le bureau d'aide">
+<!ENTITY torsettings.bridgeHelp3.emailDesc "Envoyez un courriel à bridges(a)torproject.org avec la ligne « get bridges » seule dans le corps du message.  Cependant, afin qu'il soit plus difficile pour un attaquant de découvrir de nombreuses adresses de ponts, vous devez envoyer cette demande à partir d'un des fournisseurs de courriel suivants (listés par ordre de préférence) :">
+<!ENTITY torsettings.bridgeHelp3.emailList "https://www.riseup.net, https://mail.google.com ou https://mail.yahoo.com">
+<!ENTITY torsettings.bridgeHelp4Heading "Par le centre d'assistance">
<!ENTITY torsettings.bridgeHelp4 "En dernier recours, vous pouvez demander des adresses de ponts en envoyant un courriel poli à help(a)rt.torproject.org.  Veuillez remarquer qu'une personne devra répondre à chaque demande.">
diff --git a/src/chrome/locale/fr/progress.dtd b/src/chrome/locale/fr/progress.dtd
index a7d1857..39a0643 100644
--- a/src/chrome/locale/fr/progress.dtd
+++ b/src/chrome/locale/fr/progress.dtd
@@ -1,4 +1,4 @@
<!ENTITY torprogress.dialog.title "État de Tor">
<!ENTITY torprogress.openSettings "Ouvrir les paramètres">
<!ENTITY torprogress.heading "Connexion au réseau Tor">
-<!ENTITY torprogress.pleaseWait "Veuillez patienter pendant que la connexion au réseau Tor s'établit. Cela peut prendre quelques minutes.">
+<!ENTITY torprogress.pleaseWait "Veuillez patienter pendant que nous établissons une connexion vers le réseau Tor.  Cela pourrait prendre plusieurs minutes.">
diff --git a/src/chrome/locale/fr/torlauncher.properties b/src/chrome/locale/fr/torlauncher.properties
index db5ab28..1b25457 100644
--- a/src/chrome/locale/fr/torlauncher.properties
+++ b/src/chrome/locale/fr/torlauncher.properties
@@ -3,61 +3,61 @@
torlauncher.error_title=Lanceur Tor
-torlauncher.tor_exited_during_startup=Tor s'est terminé durant le démarrage. Cela peut être dû à une erreur dans votre fichier torrc, un bug dans Tor ou un autre programme sur votre système, ou un matériel défaillant. Tant que le problème sous-jacent n'est pas réglé et Tor redémarré, TorBrowser ne démarrera pas.
-torlauncher.tor_exited=Tor s'est terminé de manière inattendue. Cela pourrait être dû à un bogue dans Tor même, à un autre logiciel sur votre système, ou à un défaut matériel. Jusqu'à ce que vous redémarriez Tor, le navigateur Tor sera incapable d'atteindre un site Web. Si le problème persiste, veuillez envoyer une copie de votre historique Tor à l'équipe d'assistance.
-torlauncher.tor_exited2=Redémarrer Tor ne fermera pas les onglets de votre navigateur
+torlauncher.tor_exited_during_startup=Tor s'est fermé pendant le démarrage. Cela peut être dû à une erreur dans votre fichier torrc, un bogue dans Tor ou dans un autre programme de votre système, ou encore à un matériel défectueux. Jusqu'à ce que vous corrigiez le problème sous-jacent et redémarriez Tor, le navigateur Tor ne démarrera pas.
+torlauncher.tor_exited=Tor s'est fermé de manière imprévue. Cela peut être dû à un bogue dans Tor même, un autre programme dans votre système ou un matériel défectueux. Jusqu'à ce que vous redémarriez Tor, le navigateur Tor ne pourra atteindre aucun site. Si le problème persiste, veuillez envoyer une copie de votre journal de Tor à l'équipe de soutien.
+torlauncher.tor_exited2=Redémarrer Tor ne fermera pas les onglets de votre navigateur.
torlauncher.tor_controlconn_failed=Impossible de se connecter au port de contrôle de Tor.
torlauncher.tor_failed_to_start=Tor n'a pas pu démarrer.
-torlauncher.tor_control_failed=Échec lors de la prise de contrôle de Tor.
-torlauncher.tor_bootstrap_failed=Tor n'a pas réussi à établir une connexion au réseau Tor.
-torlauncher.tor_bootstrap_failed_details=%1$S échoué (%2$S).
+torlauncher.tor_control_failed=La prise de contrôle de Tor a échoué.
+torlauncher.tor_bootstrap_failed=Échec lors de la connexion de Tor au réseau Tor.
+torlauncher.tor_bootstrap_failed_details=%1$S a échoué (%2$S).
torlauncher.unable_to_start_tor=Impossible de démarrer Tor.\n\n%S
-torlauncher.tor_missing=L'exécutable Tor est introuvable.
-torlauncher.torrc_missing=Le fichier torrc est manquant et n'a pas pu être créé.
-torlauncher.datadir_missing=Le dossier de données de Tor n'existe pas et n'a pas pu être créé.
-torlauncher.password_hash_missing=Impossible d'obtenir le mot de passe chiffré.
+torlauncher.tor_missing=Il manque l'exécutable Tor.
+torlauncher.torrc_missing=Le fichier torrc manque et n'a pas pu être créé.
+torlauncher.datadir_missing=Le répertoire de données de Tor n'existe pas et n'a pas pu être créé.
+torlauncher.password_hash_missing=Impossible d'obtenir le mot de passe haché.
torlauncher.failed_to_get_settings=Impossible de récupérer les paramètres de Tor.\n\n%S
-torlauncher.failed_to_save_settings=Impossible de sauvegarder les paramètres de Tor.\n\n%S
-torlauncher.ensure_tor_is_running=Veuillez-vous assurer que Tor est lancé.
+torlauncher.failed_to_save_settings=Impossible d'enregistrer les paramètres de Tor.\n\n%S
+torlauncher.ensure_tor_is_running=Veuillez-vous assurer que Tor fonctionne.
-torlauncher.error_proxy_addr_missing=Pour configurer Tor afin qu'il utilise un proxy, vous devez spécifier une adresse IP ou un nom d'hôte ainsi qu'un numéro de port.
-torlauncher.error_proxy_type_missing=Vous devez sélectionner un type de proxy.
-torlauncher.error_bridges_missing=Vous devez spécifier un ou plusieurs bridges.
-torlauncher.error_default_bridges_type_missing=Vous devez sélectionner un type de transport pour les bridges fournis.
-torlauncher.error_bridge_bad_default_type=Aucun des bridges fournis n'a le type de transport %S. Merci d'ajuster vos paramètres.
+torlauncher.error_proxy_addr_missing=Vous devez spécifier à la fois une adresse IP ou un nom d'hôte et un numéro de port afin de configurer Tor pour qu'il utilise un mandataire pour accéder à Internet.
+torlauncher.error_proxy_type_missing=Vous devez choisir le type de mandataire.
+torlauncher.error_bridges_missing=Vous devez spécifier un ou plusieurs ponts.
+torlauncher.error_default_bridges_type_missing=Vous devez sélectionner un type de transport pour les ponts fournis.
+torlauncher.error_bridge_bad_default_type=Aucun des pont fournis n'est disponible pour le type de transport %S, Veuillez ajuster vos paramètres.
torlauncher.recommended_bridge=(recommandé)
torlauncher.connect=Se connecter
-torlauncher.restart_tor=Relancer Tor
+torlauncher.restart_tor=Redémarrer Tor
torlauncher.quit=Quitter
-torlauncher.quit_win=Sortir
+torlauncher.quit_win=Sortie
torlauncher.done=Terminé
-torlauncher.forAssistance=Pour obtenir de l'aide, contactez %S
-torlauncher.forAssistance2=Pour obtenir de l'aide, visiter %S
+torlauncher.forAssistance=Pour de l'assistance, contacter %S
+torlauncher.forAssistance2=Pour de l'assistance, visiter %S
torlauncher.copiedNLogMessages=La copie est terminée. %S messages de journalisation de Tor sont prêts à être coller dans un éditeur de texte ou un courriel.
torlauncher.bootstrapStatus.conn_dir=Connexion à un annuaire de relais
-torlauncher.bootstrapStatus.handshake_dir=Établissement d'une connexion annuaire chiffrée
+torlauncher.bootstrapStatus.handshake_dir=Mise en place d'une connexion chiffrée à l'annuaire
torlauncher.bootstrapStatus.requesting_status=Récupération de l'état du réseau
torlauncher.bootstrapStatus.loading_status=Chargement de l'état du réseau
torlauncher.bootstrapStatus.loading_keys=Chargement des certificats d'autorité
torlauncher.bootstrapStatus.requesting_descriptors=Demande d'informations sur le relais
torlauncher.bootstrapStatus.loading_descriptors=Chargement des informations sur le relais
torlauncher.bootstrapStatus.conn_or=Connexion au réseau Tor
-torlauncher.bootstrapStatus.handshake_or=Réalisation d'un circuit Tor
-torlauncher.bootstrapStatus.done=Connecté au réseau Tor !
+torlauncher.bootstrapStatus.handshake_or=Mise en place d'un circuit Tor
+torlauncher.bootstrapStatus.done=Vous êtes connecté au réseau Tor !
torlauncher.bootstrapWarning.done=effectué
torlauncher.bootstrapWarning.connectrefused=connexion refusée
torlauncher.bootstrapWarning.misc=divers
torlauncher.bootstrapWarning.resourcelimit=ressources insuffisantes
-torlauncher.bootstrapWarning.identity=identité incorrecte
-torlauncher.bootstrapWarning.timeout=temps de connexion expiré
+torlauncher.bootstrapWarning.identity=mauvaise concordance de l'identité
+torlauncher.bootstrapWarning.timeout=expiration du temps de connexion
torlauncher.bootstrapWarning.noroute=pas de route vers l'hôte
torlauncher.bootstrapWarning.ioerror=erreur de lecture/écriture
-torlauncher.bootstrapWarning.pt_missing=un transport câblé est manquant
+torlauncher.bootstrapWarning.pt_missing=le transport enfichable manque
diff --git a/src/chrome/locale/is/torlauncher.properties b/src/chrome/locale/is/torlauncher.properties
index a1d419a..c2ac7ef 100644
--- a/src/chrome/locale/is/torlauncher.properties
+++ b/src/chrome/locale/is/torlauncher.properties
@@ -23,8 +23,8 @@ 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.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_type_missing=You must select the proxy type.
-torlauncher.error_bridges_missing=You must specify one or more bridges.
+torlauncher.error_proxy_type_missing=Þú verður að velja tegund milliþjóns.
+torlauncher.error_bridges_missing=Þú verður að tilgreina eina eða fleiri brýr.
torlauncher.error_default_bridges_type_missing=You must select a transport type for the provided bridges.
torlauncher.error_bridge_bad_default_type=No provided bridges that have the transport type %S are available. Please adjust your settings.
@@ -37,25 +37,25 @@ torlauncher.quit_win=Fara út
torlauncher.done=Búið
torlauncher.forAssistance=Til að fá hjálp, hafðu samband við %S
-torlauncher.forAssistance2=For assistance, visit %S
+torlauncher.forAssistance2=Til að fá hjálp, heimsæktu %S
torlauncher.copiedNLogMessages=Copy complete. %S Tor log messages are ready to be pasted into a text editor or an email message.
torlauncher.bootstrapStatus.conn_dir=Connecting to a relay directory
torlauncher.bootstrapStatus.handshake_dir=Establishing an encrypted directory connection
-torlauncher.bootstrapStatus.requesting_status=Retrieving network status
-torlauncher.bootstrapStatus.loading_status=Loading network status
+torlauncher.bootstrapStatus.requesting_status=Næ í stöðu netkerfis
+torlauncher.bootstrapStatus.loading_status=Hleð inn stöðu netkerfis
torlauncher.bootstrapStatus.loading_keys=Loading authority certificates
torlauncher.bootstrapStatus.requesting_descriptors=Requesting relay information
torlauncher.bootstrapStatus.loading_descriptors=Loading relay information
torlauncher.bootstrapStatus.conn_or=Tengist Tor-netinu
-torlauncher.bootstrapStatus.handshake_or=Establishing a Tor circuit
+torlauncher.bootstrapStatus.handshake_or=Kem á Tor-rás
torlauncher.bootstrapStatus.done=Tengdur við Tor-netið!
torlauncher.bootstrapWarning.done=búið
torlauncher.bootstrapWarning.connectrefused=tengingu hafnað
torlauncher.bootstrapWarning.misc=ýmislegt
-torlauncher.bootstrapWarning.resourcelimit=insufficient resources
+torlauncher.bootstrapWarning.resourcelimit=ekki nægileg tilföng
torlauncher.bootstrapWarning.identity=auðkenni samsvara ekki
torlauncher.bootstrapWarning.timeout=tenging féll á tíma
torlauncher.bootstrapWarning.noroute=no route to host
diff --git a/src/chrome/locale/ko-KR/network-settings.dtd b/src/chrome/locale/ko-KR/network-settings.dtd
index 1fdc20b..e6e9760 100644
--- a/src/chrome/locale/ko-KR/network-settings.dtd
+++ b/src/chrome/locale/ko-KR/network-settings.dtd
@@ -13,20 +13,20 @@
<!ENTITY torSettings.firstQuestion "무엇이 당신의 상황과 가장 가까운가요?">
<!ENTITY torSettings.configurePrompt1 "이 컴퓨터의 인터넷 연결은 검열 또는 프록시에 연결되어 있습니다.">
-<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings before I connect to the Tor network.">
-<!ENTITY torSettings.configure "Configure">
+<!ENTITY torSettings.configurePrompt2 "저는  Tor 네트워크에 접속하는 데 브릿지나 로컬 프록시 설정을 필요로 합니다.">
+<!ENTITY torSettings.configure "구성">
<!ENTITY torSettings.connectPrompt2 "나는 Tor 네트워크와 직접적인 연결을 하고 싶습니다.">
<!ENTITY torSettings.connectPrompt3 "이것은 대부분의 상황에서 동작할 것입니다.">
<!ENTITY torSettings.connect "연결">
-<!ENTITY torSettings.proxyPageTitle "Local Proxy Configuration">
-<!ENTITY torSettings.proxyQuestion "Does this computer need to use a local proxy to access the Internet?">
+<!ENTITY torSettings.proxyPageTitle "로컬 프록시 구성">
+<!ENTITY torSettings.proxyQuestion "이 컴퓨터로 인터넷에 접근할 때 로컬 프록시를 사용해야 하나요?">
<!-- see https://www.torproject.org/docs/proxychain.html.en -->
-<!ENTITY torSettings.proxyExplanation1 "In most cases a local proxy is not needed, but it may be required when connecting through a company, school, or university network.">
-<!ENTITY torSettings.proxyExplanation2 "If you are not sure how to answer this question, look at the Internet settings in another browser or check your system's network settings to see whether a local proxy is needed.">
-<!ENTITY torSettings.enterProxy "Enter the proxy settings.">
-<!ENTITY torSettings.bridgePageTitle "Tor Bridges Configuration">
-<!ENTITY torSettings.bridgeQuestion "Does your Internet Service Provider (ISP) block or otherwise censor connections to the Tor Network?">
+<!ENTITY torSettings.proxyExplanation1 "당신이 회사, 학교 네트워크에서 접속하지 않는다면, 웬만하면 로컬 프록시는 필요하지 않습니다.">
+<!ENTITY torSettings.proxyExplanation2 "당신이 이에 대해 잘 모른다면, 다른 브라우저의 인터넷 설정이나 시스템 네트워크 설정에서 로컬 프록시가 필요한 지 확인하세요.">
+<!ENTITY torSettings.enterProxy "프록시 정보를 입력하세요.">
+<!ENTITY torSettings.bridgePageTitle "Tor 브릿지 구성">
+<!ENTITY torSettings.bridgeQuestion "당신의 인터넷 서비스 제공자 (ISP)가 Tor 네트워크 연결을 차단 혹은 검열합니까?">
<!ENTITY torSettings.bridgeExplanation1 "If you are not sure how to answer this question, choose No (if you are unable to connect to the Tor network without a bridge, you can add one later).">
<!ENTITY torSettings.bridgeExplanation2 "If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
<!ENTITY torSettings.bridgeSettingsPrompt "You may use the provided set of bridges or you may obtain and enter a custom set of bridges.">
diff --git a/src/chrome/locale/lo/torlauncher.properties b/src/chrome/locale/lo/torlauncher.properties
index 9959bfb..ce43346 100644
--- a/src/chrome/locale/lo/torlauncher.properties
+++ b/src/chrome/locale/lo/torlauncher.properties
@@ -34,7 +34,7 @@ torlauncher.connect=ເຊື່ອມຕໍ່
torlauncher.restart_tor=Restart Tor
torlauncher.quit=Quit
torlauncher.quit_win=Exit
-torlauncher.done=Done
+torlauncher.done=ແລ້ວໆ
torlauncher.forAssistance=For assistance, contact %S
torlauncher.forAssistance2=For assistance, visit %S
diff --git a/src/chrome/locale/lt/torlauncher.properties b/src/chrome/locale/lt/torlauncher.properties
index 7d85680..ccdb8a8 100644
--- a/src/chrome/locale/lt/torlauncher.properties
+++ b/src/chrome/locale/lt/torlauncher.properties
@@ -3,7 +3,7 @@
torlauncher.error_title=Tor Leistuvas
-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_during_startup=Tor nustojo veikti paleisties metu. Taip galėjo nutikti dėl klaidos jūsų torrc faile, klaidos Tor ar kitoje jūsų sistemos programoje, arba dėl aparatinės įrangos kaltės. Tor naršyklė nepasileis tol, kol neištaisysite slypinčios problemos ir iš naujo nepaleisite Tor.
torlauncher.tor_exited=Tor netikėtai nustojo veikti. Taip galėjo atsitikti arba dėl klaidos Tor arba kitoje programoje, Jūsų sistemoje arba dėl sugedusios techninės įrangos. Kol iš naujo nepaleisite Tor, Tor Naršyklė negalės prisijungti prie jokių interneto tinklalapių. Jei problema kartojasi, prašome išsiųsti Tor įvykių žurnalo kopiją paramos grupei.
torlauncher.tor_exited2=Pakartotinai paleidus Tor naršyklės kortelės nebus uždarytos.
torlauncher.tor_controlconn_failed=Nepavyko prisijungti prie Tor valdymo prievado.
@@ -14,8 +14,8 @@ torlauncher.tor_bootstrap_failed_details=%1$S nepavyko (%2$S).
torlauncher.unable_to_start_tor=Nepavyksta paleisti Tor.\n\n%S
torlauncher.tor_missing=Trūksta Tor vykdomojo failo.
-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.torrc_missing=Trūksta torrc failo ir nepavyko jo sukurti.
+torlauncher.datadir_missing=Nėra Tor duomenų katalogo ir nepavyko jo sukurti.
torlauncher.password_hash_missing=Nepavyko perskaityti slaptažodžio santrumpos
torlauncher.failed_to_get_settings=Nepavyko perskaityti Tor nustatymo parametrų.\n\n%S
diff --git a/src/chrome/locale/nb/torlauncher.properties b/src/chrome/locale/nb/torlauncher.properties
index b064dbd..a7c890e 100644
--- a/src/chrome/locale/nb/torlauncher.properties
+++ b/src/chrome/locale/nb/torlauncher.properties
@@ -16,7 +16,7 @@ torlauncher.unable_to_start_tor=Kunne ikke starte Tor.\n\n%S
torlauncher.tor_missing=Den kjørbare Tor-filen finnes ikke.
torlauncher.torrc_missing=torrc-fila mangler og kunne ikke opprettes.
torlauncher.datadir_missing=Datakatalogen til Tor finnes ikke og kunne ikke opprettes.
-torlauncher.password_hash_missing=Kunne ikke hente kryptert passord.
+torlauncher.password_hash_missing=Kunne ikke hente nøkkel-passord.
torlauncher.failed_to_get_settings=Kunne ikke hente Tor-innstillinger.\n\n%S
torlauncher.failed_to_save_settings=Kunne ikke lagre Tor-innstillinger.\n\n%S
@@ -59,5 +59,5 @@ torlauncher.bootstrapWarning.resourcelimit=ikke nok resursser
torlauncher.bootstrapWarning.identity=feil identitet
torlauncher.bootstrapWarning.timeout=forbindelse tidsavbrutt
torlauncher.bootstrapWarning.noroute=ingen rute til vert
-torlauncher.bootstrapWarning.ioerror=lese/skrive feil
-torlauncher.bootstrapWarning.pt_missing=Pluggable Transport mangler
+torlauncher.bootstrapWarning.ioerror=lese/skrive -feil
+torlauncher.bootstrapWarning.pt_missing=pluggbar transport mangler
diff --git a/src/chrome/locale/nn/network-settings.dtd b/src/chrome/locale/nn/network-settings.dtd
index 120bbf4..3b23940 100644
--- a/src/chrome/locale/nn/network-settings.dtd
+++ b/src/chrome/locale/nn/network-settings.dtd
@@ -66,7 +66,7 @@
<!ENTITY torsettings.bridgeHelpTitle "Bridge Relay Help">
<!ENTITY torsettings.bridgeHelp1 "If you are unable to connect to the Tor network, it could be that your Internet Service Provider (ISP) or another agency is blocking Tor.  Often, you can work around this problem by using Tor Bridges, which are unlisted relays that are more difficult to block.">
<!ENTITY torsettings.bridgeHelp1B "You may use the preconfigured, provided set of bridge addresses or you may obtain a custom set of addresses by using one of these methods:">
-<!ENTITY torsettings.bridgeHelp2Heading "Through the Web">
+<!ENTITY torsettings.bridgeHelp2Heading "Gjennom nettet">
<!ENTITY torsettings.bridgeHelp2 "Nytt ein nettlesar for å vitja https://bridges.torproject.org">
<!ENTITY torsettings.bridgeHelp3Heading "Through the Email Autoresponder">
<!ENTITY torsettings.bridgeHelp3.emailDesc "Send email to bridges(a)torproject.org with the line 'get bridges' by itself in the body of the message.  However, to make it harder for an attacker to learn a lot of bridge addresses, you must send this request from one of the following email providers (listed in order of preference):">
diff --git a/src/chrome/locale/nn/torlauncher.properties b/src/chrome/locale/nn/torlauncher.properties
index 31e5d68..f6b3dd3 100644
--- a/src/chrome/locale/nn/torlauncher.properties
+++ b/src/chrome/locale/nn/torlauncher.properties
@@ -8,24 +8,24 @@ torlauncher.tor_exited=Tor unexpectedly exited. This might be due to a bug in To
torlauncher.tor_exited2=Restarting Tor will not close your browser tabs.
torlauncher.tor_controlconn_failed=Kunne ikkje kopla til Tor-kontrollport.
torlauncher.tor_failed_to_start=Tor klarte ikkje å starta opp.
-torlauncher.tor_control_failed=Failed to take control of Tor.
+torlauncher.tor_control_failed=Klarte ikkje å ta kontroll over Tor.
torlauncher.tor_bootstrap_failed=Tor klarte ikkje å kopla til eit samband med Tor-nettverket.
torlauncher.tor_bootstrap_failed_details=%1$S feila (%2$S).
torlauncher.unable_to_start_tor=Tor kunne ikkje starta.\n\n%S
-torlauncher.tor_missing=The Tor executable is missing.
+torlauncher.tor_missing=Tor køyrbar manglar.
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.password_hash_missing=Failed to get hashed password.
-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=Klarer ikkje å hente Tor-innstillingar\n\n%S
+torlauncher.failed_to_save_settings=Klarer ikkje å lagre Tor-innstillingar.\n\n%S
+torlauncher.ensure_tor_is_running=Forsikre deg om at Tor køyrer.
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_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_default_bridges_type_missing=DU må velje ei transporttype for dei medfølgjande bruene.
torlauncher.error_bridge_bad_default_type=No provided bridges that have the transport type %S are available. Please adjust your settings.
torlauncher.recommended_bridge=(tilrådd)
@@ -43,21 +43,21 @@ torlauncher.copiedNLogMessages=Copy complete. %S Tor log messages are ready to b
torlauncher.bootstrapStatus.conn_dir=Connecting to a relay directory
torlauncher.bootstrapStatus.handshake_dir=Establishing an encrypted directory connection
-torlauncher.bootstrapStatus.requesting_status=Retrieving network status
+torlauncher.bootstrapStatus.requesting_status=Hentar nettverksstatus
torlauncher.bootstrapStatus.loading_status=Lastar nettverkstatus
-torlauncher.bootstrapStatus.loading_keys=Loading authority certificates
-torlauncher.bootstrapStatus.requesting_descriptors=Requesting relay information
-torlauncher.bootstrapStatus.loading_descriptors=Loading relay information
+torlauncher.bootstrapStatus.loading_keys=Lastar autoritetssertifikat
+torlauncher.bootstrapStatus.requesting_descriptors=Ber om relae-informasjon
+torlauncher.bootstrapStatus.loading_descriptors=Lastar relae-informasjon
torlauncher.bootstrapStatus.conn_or=Koplar til Tor-nettverket
-torlauncher.bootstrapStatus.handshake_or=Establishing a Tor circuit
+torlauncher.bootstrapStatus.handshake_or=Opprettar ein Tor-krets
torlauncher.bootstrapStatus.done=Kopla til Tor-nettverket!
torlauncher.bootstrapWarning.done=ferdig
torlauncher.bootstrapWarning.connectrefused=tilkopling avslått
torlauncher.bootstrapWarning.misc=ymse
-torlauncher.bootstrapWarning.resourcelimit=insufficient resources
+torlauncher.bootstrapWarning.resourcelimit=Mangelfulle resursar
torlauncher.bootstrapWarning.identity=identity mismatch
-torlauncher.bootstrapWarning.timeout=connection timeout
+torlauncher.bootstrapWarning.timeout=tidsavbrot i sambandet
torlauncher.bootstrapWarning.noroute=no route to host
torlauncher.bootstrapWarning.ioerror=lese/skrive-feil
torlauncher.bootstrapWarning.pt_missing=missing pluggable transport
diff --git a/src/chrome/locale/pt-BR/network-settings.dtd b/src/chrome/locale/pt-BR/network-settings.dtd
index bc39531..f7cf95b 100644
--- a/src/chrome/locale/pt-BR/network-settings.dtd
+++ b/src/chrome/locale/pt-BR/network-settings.dtd
@@ -28,7 +28,7 @@
<!ENTITY torSettings.bridgePageTitle "Configuração de Pontes Tor">
<!ENTITY torSettings.bridgeQuestion "Seu provedor de serviços de internet (ISP) bloqueia ou censura conexões à rede Tor?">
<!ENTITY torSettings.bridgeExplanation1 "Se você não tem certeza de como responder essa questão, escolha Não (se você não conseguir conectar à rede Tor sem uma conexão de ponte, você pode adicionar uma mais tarde).">
-<!ENTITY torSettings.bridgeExplanation2 "Se você escolher Sim, será solicitado que você configure Conexões de Ponte Tor, que são transmissores não-listados que dificultam mais o bloqueio de conexões à Rede Tor.">
+<!ENTITY torSettings.bridgeExplanation2 "Ao escolher Sim, o próximo passo a seguir será configurar Tor Bridges, que são transmissores não listados que dificultam o bloqueio de conexões à rede Tor.">
<!ENTITY torSettings.bridgeSettingsPrompt "Você pode usar o conjunto de pontes fornecidas ou obter e adicionar um conjunto de pontes personalizadas. ">
<!-- Other: -->
@@ -59,12 +59,12 @@
<!ENTITY torsettings.useBridges.note "Cada tipo de conexão de ponte usa um método diferente para evitar censura.  Se uma não funcionar, tente novamente usando uma diferente.">
<!ENTITY torsettings.useBridges.type "Tipo de transporte:">
<!ENTITY torsettings.useBridges.custom "Adicionar pontes personalizadas">
-<!ENTITY torsettings.useBridges.label "Insira um ou mais relés de pontes (um por linha).">
+<!ENTITY torsettings.useBridges.label "Inserir um ou mais retransmissores de pontes (um por linha).">
<!ENTITY torsettings.useBridges.placeholder "tipo de endereço:porta">
<!ENTITY torsettings.copyLog "Copiar o registro do Tor na área de transferência">
-<!ENTITY torsettings.bridgeHelpTitle "Ajuda Relé de Ponte">
-<!ENTITY torsettings.bridgeHelp1 "Se for impossível conectar-se à rede Tor, talvez o seu Provedor de Internet (ISP) ou outra instância esteja bloqueando o Tor. . Normalmente, é possível contornar esse problema utilizando Pontes Tor, que são relés ocultos (não listados), mais difíceis de bloquear.">
+<!ENTITY torsettings.bridgeHelpTitle "Ajuda Retransmissor de Ponte">
+<!ENTITY torsettings.bridgeHelp1 "Se for impossível conectar-se à rede Tor, talvez o seu Provedor de Internet (ISP) ou outra instância esteja bloqueando o Tor. . Normalmente, é possível contornar esse problema utilizando Pontes Tor, que são retransmissores não listados, mais difíceis de bloquear.">
<!ENTITY torsettings.bridgeHelp1B "Você pode usar o conjunto de endereços de pontes fornecido, já pré-configurado, ou pode obter um conjunto de endereços personalizados utilizando um dos métodos indicados abaixo:">
<!ENTITY torsettings.bridgeHelp2Heading "Através da Web">
<!ENTITY torsettings.bridgeHelp2 "Use um navegador internet para visitar https://bridges.torproject.org">
diff --git a/src/chrome/locale/pt-BR/torlauncher.properties b/src/chrome/locale/pt-BR/torlauncher.properties
index eafba56..20cb37a 100644
--- a/src/chrome/locale/pt-BR/torlauncher.properties
+++ b/src/chrome/locale/pt-BR/torlauncher.properties
@@ -36,18 +36,18 @@ torlauncher.quit=Encerrar
torlauncher.quit_win=Sair
torlauncher.done=Terminado
-torlauncher.forAssistance=Para assistência, contacte
+torlauncher.forAssistance=Para assistência, contactar %S
torlauncher.forAssistance2=Se você precisar de assistência, por favor 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.
-torlauncher.bootstrapStatus.conn_dir=Conectando a um diretório de relés
+torlauncher.bootstrapStatus.conn_dir=Conectando a um diretório de retransmissores
torlauncher.bootstrapStatus.handshake_dir=Estabelecendo uma conexão de diretório criptografado
torlauncher.bootstrapStatus.requesting_status=Recebendo estado da rede
torlauncher.bootstrapStatus.loading_status=Carregando estado da rede
torlauncher.bootstrapStatus.loading_keys=Carregando certificados de autoridade
-torlauncher.bootstrapStatus.requesting_descriptors=Requisitando informações do relé
-torlauncher.bootstrapStatus.loading_descriptors=Carregando informações do relé
+torlauncher.bootstrapStatus.requesting_descriptors=Requisitando informações do retransmissor
+torlauncher.bootstrapStatus.loading_descriptors=Carregando informações do retransmissor
torlauncher.bootstrapStatus.conn_or=Conectando à rede Tor
torlauncher.bootstrapStatus.handshake_or=Estabelecendo um circuito Tor
torlauncher.bootstrapStatus.done=Conectado à rede Tor!
@@ -60,4 +60,4 @@ torlauncher.bootstrapWarning.identity=identidade conflitante
torlauncher.bootstrapWarning.timeout=tempo limite da conexão excedido
torlauncher.bootstrapWarning.noroute=sem rota para o host
torlauncher.bootstrapWarning.ioerror=erro de leitura/gravação
-torlauncher.bootstrapWarning.pt_missing=transporte plugável ausente
+torlauncher.bootstrapWarning.pt_missing=transportador plugável ausente
diff --git a/src/chrome/locale/th/network-settings.dtd b/src/chrome/locale/th/network-settings.dtd
index 0a4b839..240e71b 100644
--- a/src/chrome/locale/th/network-settings.dtd
+++ b/src/chrome/locale/th/network-settings.dtd
@@ -1,7 +1,7 @@
<!ENTITY torsettings.dialog.title "ตั้งค่าเครือข่าย Tor">
<!-- For locale picker: -->
-<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.title "ภาษาของทอร์เบราว์เซอร์">
<!ENTITY torlauncher.localePicker.prompt "โปรดเลือกภาษา">
<!-- For "first run" wizard: -->
@@ -15,7 +15,7 @@
<!ENTITY torSettings.configurePrompt1 "การเชื่อมต่ออินเตอร์เน็ตของคอมพิวเตอร์เครื่องนี้ถูกตรวจสอบหรือมีการใช้พร็อกซี่">
<!ENTITY torSettings.configurePrompt2 "I need to configure bridge or local proxy settings before I connect to the Tor network.">
<!ENTITY torSettings.configure "กำหนดค่า">
-<!ENTITY torSettings.connectPrompt2 "I would like to make a direct connection to the Tor network.">
+<!ENTITY torSettings.connectPrompt2 "ฉันต้องการสร้างการเชื่อมต่อโดยตรงไปยังเครือข่ายทอร์.">
<!ENTITY torSettings.connectPrompt3 "นี่จะทำงานในสถานการณ์ส่วนใหญ่">
<!ENTITY torSettings.connect "เชื่อมต่อ">
@@ -25,7 +25,7 @@
<!ENTITY torSettings.proxyExplanation1 "In most cases a local proxy is not needed, but it may be required when connecting through a company, school, or university network.">
<!ENTITY torSettings.proxyExplanation2 "If you are not sure how to answer this question, look at the Internet settings in another browser or check your system's network settings to see whether a local proxy is needed.">
<!ENTITY torSettings.enterProxy "ใส่ค่าติดตั้งพร็อกซี">
-<!ENTITY torSettings.bridgePageTitle "Tor Bridges Configuration">
+<!ENTITY torSettings.bridgePageTitle "การตั้งค่า Tor Bridges">
<!ENTITY torSettings.bridgeQuestion "ผู้ให้บริการอินเตอร์เน็ต (ISP) ของคุณปิดกั้นหรือคัดกรองการเชื่อมต่อไปยังเครือข่าย Tor หรือไม่?">
<!ENTITY torSettings.bridgeExplanation1 "If you are not sure how to answer this question, choose No (if you are unable to connect to the Tor network without a bridge, you can add one later).">
<!ENTITY torSettings.bridgeExplanation2 "If you choose Yes, you will be asked to configure Tor Bridges, which are unlisted relays that make it more difficult to block connections to the Tor Network.">
@@ -60,14 +60,14 @@
<!ENTITY torsettings.useBridges.type "Transport type:">
<!ENTITY torsettings.useBridges.custom "Enter custom bridges">
<!ENTITY torsettings.useBridges.label "ใส่สะพานรีเลย์อย่างน้อยหนึ่งอัน (บรรทัดละอัน)">
-<!ENTITY torsettings.useBridges.placeholder "type address:port">
+<!ENTITY torsettings.useBridges.placeholder "พิมพ์ address:port">
<!ENTITY torsettings.copyLog "คัดลอกปูม Tor ไปที่คลิปบอร์ด">
<!ENTITY torsettings.bridgeHelpTitle "การช่วยเหลือรีเลย์สะพาน">
<!ENTITY torsettings.bridgeHelp1 "If you are unable to connect to the Tor network, it could be that your Internet Service Provider (ISP) or another agency is blocking Tor.  Often, you can work around this problem by using Tor Bridges, which are unlisted relays that are more difficult to block.">
<!ENTITY torsettings.bridgeHelp1B "You may use the preconfigured, provided set of bridge addresses or you may obtain a custom set of addresses by using one of these methods:">
-<!ENTITY torsettings.bridgeHelp2Heading "Through the Web">
-<!ENTITY torsettings.bridgeHelp2 "Use a web browser to visit https://bridges.torproject.org">
+<!ENTITY torsettings.bridgeHelp2Heading "ผ่านทางเว็บ">
+<!ENTITY torsettings.bridgeHelp2 "ใช้เว็บเบราว์เซอร์เพื่อเข้าชม https://bridges.torproject.org">
<!ENTITY torsettings.bridgeHelp3Heading "Through the Email Autoresponder">
<!ENTITY torsettings.bridgeHelp3.emailDesc "Send email to bridges(a)torproject.org with the line 'get bridges' by itself in the body of the message.  However, to make it harder for an attacker to learn a lot of bridge addresses, you must send this request from one of the following email providers (listed in order of preference):">
<!ENTITY torsettings.bridgeHelp3.emailList "https://www.riseup.net, https://mail.google.com, or https://mail.yahoo.com">
1
0

[torbutton/maint-1.9.6] Revert "Bug 14429: Enable auto-resizing; disable maximization warning."
by gk@torproject.org 16 Jan '17
by gk@torproject.org 16 Jan '17
16 Jan '17
commit 171e2b786572dfcec904780223f9928b1c628951
Author: Georg Koppen <gk(a)torproject.org>
Date: Tue May 24 19:21:18 2016 +0000
Revert "Bug 14429: Enable auto-resizing; disable maximization warning."
This reverts commit a0a651607a957ac8473cea717c8a440cdcea0144.
---
src/defaults/preferences/preferences.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/defaults/preferences/preferences.js b/src/defaults/preferences/preferences.js
index b7fa11b..a8eea21 100644
--- a/src/defaults/preferences/preferences.js
+++ b/src/defaults/preferences/preferences.js
@@ -25,7 +25,7 @@ pref("extensions.torbutton.prompted_language",false);
// TODO: This is just part of a stopgap until #14429 gets properly implemented.
// See #7255 for details. We display the warning three times to make sure the
// user did not click on it by accident.
-pref("extensions.torbutton.maximize_warnings_remaining", 0);
+pref("extensions.torbutton.maximize_warnings_remaining", 3);
// Security prefs:
pref("extensions.torbutton.cookie_protections",true);
@@ -34,7 +34,7 @@ pref("extensions.torbutton.spoof_english",true);
pref("extensions.torbutton.clear_http_auth",true);
pref("extensions.torbutton.close_newnym",true);
pref("extensions.torbutton.resize_new_windows",true);
-pref("extensions.torbutton.resize_windows",true);
+pref("extensions.torbutton.resize_windows",false);
pref("extensions.torbutton.startup_state", 2); // 0=non-tor, 1=tor, 2=last
pref("extensions.torbutton.tor_memory_jar",false);
pref("extensions.torbutton.nontor_memory_jar",false);
1
0
commit 6cf471ed61f260fa1ee201e8d477c3b4322782af
Author: Georg Koppen <gk(a)torproject.org>
Date: Mon Jan 16 13:41:42 2017 +0000
Translation updates
---
src/chrome/locale/ar/aboutTor.dtd | 4 +---
src/chrome/locale/ar/aboutTor.properties | 13 -------------
src/chrome/locale/de/aboutTor.dtd | 4 +---
src/chrome/locale/de/aboutTor.properties | 13 -------------
src/chrome/locale/de/torbutton.dtd | 2 +-
src/chrome/locale/es/aboutTor.dtd | 4 +---
src/chrome/locale/es/aboutTor.properties | 13 -------------
src/chrome/locale/eu/aboutTor.dtd | 4 +---
src/chrome/locale/eu/aboutTor.properties | 13 -------------
src/chrome/locale/fa/aboutTor.dtd | 4 +---
src/chrome/locale/fa/aboutTor.properties | 13 -------------
src/chrome/locale/fr/aboutDialog.dtd | 4 ++--
src/chrome/locale/fr/aboutTor.dtd | 8 +++-----
src/chrome/locale/fr/aboutTor.properties | 13 -------------
src/chrome/locale/fr/brand.properties | 2 +-
src/chrome/locale/fr/torbutton.dtd | 20 ++++++++++----------
src/chrome/locale/fr/torbutton.properties | 22 +++++++++++-----------
src/chrome/locale/it/aboutTor.dtd | 6 ++----
src/chrome/locale/it/aboutTor.properties | 13 -------------
src/chrome/locale/it/torbutton.dtd | 2 +-
src/chrome/locale/ja/aboutTor.dtd | 4 +---
src/chrome/locale/ja/aboutTor.properties | 13 -------------
src/chrome/locale/ko/aboutTor.dtd | 4 +---
src/chrome/locale/ko/aboutTor.properties | 13 -------------
src/chrome/locale/nl/aboutTor.dtd | 4 +---
src/chrome/locale/nl/aboutTor.properties | 13 -------------
src/chrome/locale/pl/aboutTor.dtd | 4 +---
src/chrome/locale/pl/aboutTor.properties | 13 -------------
src/chrome/locale/pl/torbutton.dtd | 2 +-
src/chrome/locale/pt-BR/aboutTor.dtd | 4 +---
src/chrome/locale/pt-BR/aboutTor.properties | 13 -------------
src/chrome/locale/pt-BR/brand.dtd | 2 +-
src/chrome/locale/pt-BR/torbutton.dtd | 2 +-
src/chrome/locale/ru/aboutDialog.dtd | 2 +-
src/chrome/locale/ru/aboutTor.dtd | 14 ++++++--------
src/chrome/locale/ru/aboutTor.properties | 15 +--------------
src/chrome/locale/sv/aboutTor.dtd | 6 ++----
src/chrome/locale/sv/aboutTor.properties | 13 -------------
src/chrome/locale/tr/aboutTor.dtd | 4 +---
src/chrome/locale/tr/aboutTor.properties | 13 -------------
src/chrome/locale/vi/aboutTor.dtd | 4 +---
src/chrome/locale/vi/aboutTor.properties | 13 -------------
src/chrome/locale/zh-CN/aboutTor.dtd | 4 +---
src/chrome/locale/zh-CN/aboutTor.properties | 13 -------------
44 files changed, 57 insertions(+), 312 deletions(-)
diff --git a/src/chrome/locale/ar/aboutTor.dtd b/src/chrome/locale/ar/aboutTor.dtd
index 5180d7f..02a478d 100644
--- a/src/chrome/locale/ar/aboutTor.dtd
+++ b/src/chrome/locale/ar/aboutTor.dtd
@@ -19,9 +19,7 @@
<!ENTITY aboutTor.failure2.label "تور لا يعمل في هذا المتصفح.">
<!ENTITY aboutTor.search.label "بحث">
-
-<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
-<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
+<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com">
<!ENTITY aboutTor.torInfo1.label "معلومات إضافية:">
<!ENTITY aboutTor.torInfo2.label "الدولة وعنوان الإنترنت:">
diff --git a/src/chrome/locale/ar/aboutTor.properties b/src/chrome/locale/ar/aboutTor.properties
index 45eb646..a93fa44 100644
--- a/src/chrome/locale/ar/aboutTor.properties
+++ b/src/chrome/locale/ar/aboutTor.properties
@@ -7,16 +7,3 @@ aboutTor.searchDDG.privacy=ابحث <a href="%1$S">آمنا</a> مع <a href="%2
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
-
-aboutTor.searchDC.privacy=ابحث <a href="%1$S">آمنا</a> مع <a href="%2$S">Disconnect.me</a>.
-# The following string is a link which replaces %1$S above.
-aboutTor.searchDC.privacy.link=https://disconnect.me/privacy
-# The following string is a link which replaces %2$S above.
-aboutTor.searchDC.search.link=https://search.disconnect.me/
-
-aboutTor.donationBanner.donate=Donate Now!
-aboutTor.donationBanner.heart=Tor is at the heart of Internet freedom
-aboutTor.donationBanner.tagline1=Millions of People Depend on Tor for Online Security & Privacy
-aboutTor.donationBanner.tagline2=A Network of People Protecting People
-aboutTor.donationBanner.tagline3=Surveillance = Oppression
-aboutTor.donationBanner.tagline4=Protecting Journalists, Activists & Whistleblowers Since 2006
diff --git a/src/chrome/locale/de/aboutTor.dtd b/src/chrome/locale/de/aboutTor.dtd
index 6bed96c..1110219 100644
--- a/src/chrome/locale/de/aboutTor.dtd
+++ b/src/chrome/locale/de/aboutTor.dtd
@@ -19,9 +19,7 @@
<!ENTITY aboutTor.failure2.label "Tor funktioniert mit diesem Browser nicht.">
<!ENTITY aboutTor.search.label "Suche">
-
-<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
-<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
+<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com">
<!ENTITY aboutTor.torInfo1.label "Zusätzliche Informationen:">
<!ENTITY aboutTor.torInfo2.label "Land & IP-Adresse:">
diff --git a/src/chrome/locale/de/aboutTor.properties b/src/chrome/locale/de/aboutTor.properties
index 6c79feb..132a3d0 100644
--- a/src/chrome/locale/de/aboutTor.properties
+++ b/src/chrome/locale/de/aboutTor.properties
@@ -7,16 +7,3 @@ aboutTor.searchDDG.privacy=<a href="%1$S">Sicheres</a> Suchen mit <a href="%2$S"
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
-
-aboutTor.searchDC.privacy=<a href="%1$S">Sicheres</a> Suchen mit <a href="%2$S">Disconnect.me</a>.
-# The following string is a link which replaces %1$S above.
-aboutTor.searchDC.privacy.link=https://disconnect.me/privacy
-# The following string is a link which replaces %2$S above.
-aboutTor.searchDC.search.link=https://search.disconnect.me/
-
-aboutTor.donationBanner.donate=Jetzt spenden!
-aboutTor.donationBanner.heart=Tor ist am Herz der Internetfreiheit
-aboutTor.donationBanner.tagline1=Millionen von Menschen verlassen sich auf Tor für Online-Sicherheit & Datenschutz
-aboutTor.donationBanner.tagline2=Ein Netzwerk von Menschen, die Menschen schützen
-aboutTor.donationBanner.tagline3=Überwachung = Unterdrückung
-aboutTor.donationBanner.tagline4=Schutz von Journalisten, Aktivisten und Hinweisgebern seit 2006
diff --git a/src/chrome/locale/de/torbutton.dtd b/src/chrome/locale/de/torbutton.dtd
index 880013e..b1cf8c9 100644
--- a/src/chrome/locale/de/torbutton.dtd
+++ b/src/chrome/locale/de/torbutton.dtd
@@ -27,7 +27,7 @@
<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "Neue Cookies nicht schützen">
<!ENTITY torbutton.prefs.restrict_thirdparty "Profildateien (Cookies) von Drittanbietern und andere Überwachungsdaten einschränken">
<!ENTITY torbutton.prefs.restrict_thirdparty.accesskey "E">
-<!ENTITY torbutton.prefs.restrict_thirdparty_tooltip "Lassen Sie dieses Feld ausgewählt um zu verhindern, das verschiedene Browserfunktionen ausgenutzt werden um Ihr Surfverhalten nachzuverfolgen. Die veränderten Funktionen betreffen: BLOB-URLs, Rundruf-Kanäle, den Browser-Puffer, Cookies, Favicons, HTTP-Authentifizierungs-Kopfdaten, Verknüpfungs-Vorverbindungen, den lokalen Speicher, URLs von Medienquellen, OCSP-Anfrage, gemeinsame JavaScript-Instanzen und Tickets von TLS-Sitzungen.">
+<!ENTITY torbutton.prefs.restrict_thirdparty_tooltip "Lassen Sie dieses Feld ausgewählt, um zu verhindern, dass verschiedene Browserfunktionen ausgenutzt werden, um Ihr Surfverhalten nachzuverfolgen. Die veränderten Funktionen betreffen: BLOB-URLs, Rundruf-Kanäle, den Browser-Puffer, Cookies, Favicons, HTTP-Authentifizierungs-Kopfdaten, Verknüpfungs-Vorverbindungen, den lokalen Speicher, URLs von Medienquellen, OCSP-Anfrage, gemeinsame JavaScript-Instanzen und Tickets von TLS-Sitzungen.">
<!ENTITY torbutton.prefs.resist_fingerprinting "Details ändern, die Sie von anderen Tor-Browser-Benutzern unterscheiden">
<!ENTITY torbutton.prefs.resist_fingerprinting.accesskey "F">
<!ENTITY torbutton.prefs.resist_fingerprinting_tooltip "Lassen Sie dieses Feld ausgewählt um bestimmte einzigartige Informationen Ihres Systems vor Webportalen zu verbergen, wie Ihrem Akku-Status, der Rechnerleistung, Tastaturbelegung, dem Sprachprofil, dem Installationsort von Erweiterungen, der Liste der intallierten Erweiterungen, Ihrem Netzwerkstatus, der Bildschirmausrichtung, Bildschirmgröße, seitenspezifischen Vergrößerungseinstellungen, unterstützten Dateitypen, Farbschema und WebGL-Unterstützung.">
diff --git a/src/chrome/locale/es/aboutTor.dtd b/src/chrome/locale/es/aboutTor.dtd
index 8f68566..6983c83 100644
--- a/src/chrome/locale/es/aboutTor.dtd
+++ b/src/chrome/locale/es/aboutTor.dtd
@@ -19,9 +19,7 @@
<!ENTITY aboutTor.failure2.label "Tor no está funcionando en este navegador.">
<!ENTITY aboutTor.search.label "Buscar">
-
-<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
-<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
+<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com">
<!ENTITY aboutTor.torInfo1.label "Información adicional:">
<!ENTITY aboutTor.torInfo2.label "País y dirección IP:">
diff --git a/src/chrome/locale/es/aboutTor.properties b/src/chrome/locale/es/aboutTor.properties
index b0c6899..2c464fb 100644
--- a/src/chrome/locale/es/aboutTor.properties
+++ b/src/chrome/locale/es/aboutTor.properties
@@ -7,16 +7,3 @@ aboutTor.searchDDG.privacy=Busque <a href="%1$S">de forma segura</a> con <a href
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy?kl=-es
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/?kl=-es
-
-aboutTor.searchDC.privacy=Busque <a href="%1$S">de forma segura</a> con <a href="%2$S">Disconnect.me</a>.
-# The following string is a link which replaces %1$S above.
-aboutTor.searchDC.privacy.link=https://disconnect.me/privacy
-# The following string is a link which replaces %2$S above.
-aboutTor.searchDC.search.link=https://search.disconnect.me/
-
-aboutTor.donationBanner.donate=¡Done ahora!
-aboutTor.donationBanner.heart=Tor está en el corazón de la libertad en Internet
-aboutTor.donationBanner.tagline1=Millones de personas dependen de Tor para la seguridad y la privacidad en línea
-aboutTor.donationBanner.tagline2=Una red de personas protegiendo a personas
-aboutTor.donationBanner.tagline3=Vigilancia = Opresión
-aboutTor.donationBanner.tagline4=Protegiendo a periodistas, activistas e informantes desde 2006
diff --git a/src/chrome/locale/eu/aboutTor.dtd b/src/chrome/locale/eu/aboutTor.dtd
index 2849b00..380ecdd 100644
--- a/src/chrome/locale/eu/aboutTor.dtd
+++ b/src/chrome/locale/eu/aboutTor.dtd
@@ -19,9 +19,7 @@
<!ENTITY aboutTor.failure2.label "Tor ez da nabigatzaile honetan funtzionatzen ari.">
<!ENTITY aboutTor.search.label "Bilatu">
-
-<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
-<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
+<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com">
<!ENTITY aboutTor.torInfo1.label "Informazio gehiago:">
<!ENTITY aboutTor.torInfo2.label "Herrialde eta IP helbidea:">
diff --git a/src/chrome/locale/eu/aboutTor.properties b/src/chrome/locale/eu/aboutTor.properties
index cc20896..ffd89fe 100644
--- a/src/chrome/locale/eu/aboutTor.properties
+++ b/src/chrome/locale/eu/aboutTor.properties
@@ -7,16 +7,3 @@ aboutTor.searchDDG.privacy=Bilatu<a href="%1$S">modu seguruan</a> ondokoarekin:
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
-
-aboutTor.searchDC.privacy=Bilatu<a href="%1$S">modu seguruan</a> ondokoarekin: <a href="%2$S">Disconnect.me</a>.
-# The following string is a link which replaces %1$S above.
-aboutTor.searchDC.privacy.link=https://disconnect.me/privacy
-# The following string is a link which replaces %2$S above.
-aboutTor.searchDC.search.link=https://search.disconnect.me/
-
-aboutTor.donationBanner.donate=Eman dohaintza orain!
-aboutTor.donationBanner.heart=Tor Interneten askatasunaren bihotzean dago
-aboutTor.donationBanner.tagline1=Milioika pertsonak Tor-en beharra dute online segurtasun eta pribatutasunerako.
-aboutTor.donationBanner.tagline2=Jendea babesten duen jendez osaturiko sarea
-aboutTor.donationBanner.tagline3=Jagoletza = Zapalkuntza
-aboutTor.donationBanner.tagline4=2006tik kazetariak, aktibistak eta informazioa ezagutarazten dutenak babesten
diff --git a/src/chrome/locale/fa/aboutTor.dtd b/src/chrome/locale/fa/aboutTor.dtd
index b748cbe..b1cd6cd 100644
--- a/src/chrome/locale/fa/aboutTor.dtd
+++ b/src/chrome/locale/fa/aboutTor.dtd
@@ -19,9 +19,7 @@
<!ENTITY aboutTor.failure2.label "تا با این مرورگر کار نمیکند.">
<!ENTITY aboutTor.search.label "جستجو">
-
-<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
-<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
+<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com">
<!ENTITY aboutTor.torInfo1.label "اطلاعات بيشتر">
<!ENTITY aboutTor.torInfo2.label "كشور و آدرس آى پی:">
diff --git a/src/chrome/locale/fa/aboutTor.properties b/src/chrome/locale/fa/aboutTor.properties
index d7f5097..8b819db 100644
--- a/src/chrome/locale/fa/aboutTor.properties
+++ b/src/chrome/locale/fa/aboutTor.properties
@@ -7,16 +7,3 @@ aboutTor.searchDDG.privacy=جستجو <a href="%1$S">ایمن</a> با <a href="
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
-
-aboutTor.searchDC.privacy=جستجو <a href="%1$S">ایمن</a> با <a href="%2$S">Disconnect.me</a>.
-# The following string is a link which replaces %1$S above.
-aboutTor.searchDC.privacy.link=https://disconnect.me/privacy
-# The following string is a link which replaces %2$S above.
-aboutTor.searchDC.search.link=https://search.disconnect.me/
-
-aboutTor.donationBanner.donate=اکنون اهداء کنید!
-aboutTor.donationBanner.heart=تور هست در قلب آزادی اینترنت
-aboutTor.donationBanner.tagline1=Millions of People Depend on Tor for Online Security & Privacy
-aboutTor.donationBanner.tagline2=یک شبکه از مردم برای حفاظت از مردم
-aboutTor.donationBanner.tagline3=نظارت = ستم
-aboutTor.donationBanner.tagline4=حفاظت از روزنامه نگاران، فعالان و افشاگران از سال 2006
diff --git a/src/chrome/locale/fr/aboutDialog.dtd b/src/chrome/locale/fr/aboutDialog.dtd
index 7fde298..4b7da91 100644
--- a/src/chrome/locale/fr/aboutDialog.dtd
+++ b/src/chrome/locale/fr/aboutDialog.dtd
@@ -9,11 +9,11 @@
<!ENTITY help.or "ou">
<!-- LOCALIZATION NOTE (help.getInvolvedLink): This is a link title that links to https://www.torproject.org/getinvolved/volunteer.html.en -->
<!ENTITY help.getInvolvedLink "impliquez-vous">
-<!ENTITY help.end "!">
+<!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 "Des questions ?">
<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to https://www.torproject.org/getinvolved/relays -->
<!ENTITY bottomLinks.grow "Aidez à la croissance du réseau Tor !">
<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to about:license -->
<!ENTITY bottomLinks.license "Informations de licence">
-<!ENTITY tor.TrademarkStatement "« Tor » et le « logo Oignon » sont des marques déposées de The Tor Project, Inc. ">
+<!ENTITY tor.TrademarkStatement "« Tor » et le « logo Oignon » sont des marques déposées de « The Tor Project, Inc. »">
diff --git a/src/chrome/locale/fr/aboutTor.dtd b/src/chrome/locale/fr/aboutTor.dtd
index 2bb5ec4..ad72a27 100644
--- a/src/chrome/locale/fr/aboutTor.dtd
+++ b/src/chrome/locale/fr/aboutTor.dtd
@@ -8,7 +8,7 @@
<!ENTITY aboutTor.outOfDateTorOn.label "AVERTISSEMENT : ce navigateur n'est pas à jour.">
<!ENTITY aboutTor.outOfDateTorOff.label "DE PLUS, ce navigateur n'est pas à jour.">
-<!ENTITY aboutTor.outOfDate2.label "Cliquer sur l'oignon, puis choisir Vérifier les màj. du navigateur Tor.">
+<!ENTITY aboutTor.outOfDate2.label "Cliquez sur l'oignon, puis choisissez Vérifier les màj. du navigateur Tor.">
<!ENTITY aboutTor.check.label "Tester les paramètres du réseau Tor">
@@ -19,9 +19,7 @@
<!ENTITY aboutTor.failure2.label "Tor ne fonctionne pas dans ce navigateur.">
<!ENTITY aboutTor.search.label "Rechercher">
-
-<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
-<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
+<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com">
<!ENTITY aboutTor.torInfo1.label "Informations supplémentaires :">
<!ENTITY aboutTor.torInfo2.label "Pays & adresse IP :">
@@ -31,7 +29,7 @@
<!ENTITY aboutTor.whatnextAnswer.label "Tor n'est PAS tout ce dont vous avez besoin pour naviguer anonymement! Vous aurez peut-être à changer certaines de vos habitudes de navigation pour garder votre identité en sécurité.">
<!ENTITY aboutTor.whatnext.label "Conseils pour rester anonyme »">
<!ENTITY aboutTor.whatnext.link "https://www.torproject.org/download/download.html#warning">
-<!ENTITY aboutTor.torbrowser_user_manual.label "Guide d'utilisation du navigateur Tor »">
+<!ENTITY aboutTor.torbrowser_user_manual.label "Le guide d'utilisation du navigateur Tor »">
<!ENTITY aboutTor.torbrowser_user_manual.link "https://tb-manual.torproject.org">
<!ENTITY aboutTor.helpInfo1.label "Vous pouvez aider !">
<!ENTITY aboutTor.helpInfo2.label "Vous pouvez aider à rendre le réseau Tor plus rapide et plus puissant de plusieurs façons :">
diff --git a/src/chrome/locale/fr/aboutTor.properties b/src/chrome/locale/fr/aboutTor.properties
index 03f3e8e..c5bec4c 100644
--- a/src/chrome/locale/fr/aboutTor.properties
+++ b/src/chrome/locale/fr/aboutTor.properties
@@ -7,16 +7,3 @@ aboutTor.searchDDG.privacy=Rechercher <a href="%1$S">en toute sécurité</a> ave
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
-
-aboutTor.searchDC.privacy=Rechercher <a href="%1$S">en toute sécurité</a> avec <a href="%2$S">Disconnect.me</a>.
-# The following string is a link which replaces %1$S above.
-aboutTor.searchDC.privacy.link=https://disconnect.me/privacy
-# The following string is a link which replaces %2$S above.
-aboutTor.searchDC.search.link=https://search.disconnect.me/
-
-aboutTor.donationBanner.donate=Faites un don maintenant !
-aboutTor.donationBanner.heart=Tor est au cœur de la liberté sur Internet
-aboutTor.donationBanner.tagline1=Des millions de personnes dépendent de Tor pour leur sécurité et la protection de leurs renseignements personnels en ligne
-aboutTor.donationBanner.tagline2=Un réseau de personnes qui protège les gens
-aboutTor.donationBanner.tagline3=Surveillance = Oppression
-aboutTor.donationBanner.tagline4=Nous protégeons les journalistes, les activistes et les lanceurs d'alerte depuis 2006
diff --git a/src/chrome/locale/fr/brand.properties b/src/chrome/locale/fr/brand.properties
index f9fb5ac..d6cc6b4 100644
--- a/src/chrome/locale/fr/brand.properties
+++ b/src/chrome/locale/fr/brand.properties
@@ -13,4 +13,4 @@ homePageImport=Importez votre page d'accueil à partir de %S
homePageMigrationPageTitle=Choix de la page d'accueil
homePageMigrationDescription=Veuillez choisir la page d'accueil que vous souhaitez utiliser :
-syncBrandShortName=Sync
+syncBrandShortName=Synchro
diff --git a/src/chrome/locale/fr/torbutton.dtd b/src/chrome/locale/fr/torbutton.dtd
index 8bf6850..10a5b07 100644
--- a/src/chrome/locale/fr/torbutton.dtd
+++ b/src/chrome/locale/fr/torbutton.dtd
@@ -5,12 +5,12 @@
<!ENTITY torbutton.context_menu.preferences "Paramètres de sécurité...">
<!ENTITY torbutton.context_menu.preferences.key "S">
<!ENTITY torbutton.context_menu.networksettings "Paramètres du réseau Tor...">
-<!ENTITY torbutton.context_menu.networksettings.key "N">
+<!ENTITY torbutton.context_menu.networksettings.key "R">
<!ENTITY torbutton.context_menu.downloadUpdate "Vérifier les màj. du navigateur Tor">
-<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
+<!ENTITY torbutton.context_menu.downloadUpdate.key "M">
<!ENTITY torbutton.context_menu.cookieProtections "Protections des fichiers témoins...">
<!ENTITY torbutton.context_menu.cookieProtections.key "T">
-<!ENTITY torbutton.button.tooltip "Cliquer pour lancer Torbutton">
+<!ENTITY torbutton.button.tooltip "Cliquer pour lancer BoutonTor">
<!ENTITY torbutton.prefs.security_settings "Paramètres de sécurité du navigateur Tor">
<!ENTITY torbutton.prefs.restore_defaults "Revenir aux paramètres par défaut">
<!ENTITY torbutton.prefs.custom_warning "Les préférences personnalisées de votre navigateur ont entraîné des paramètres de sécurité inhabituels. Pour des raisons de sécurité et de protection des informations personnelles, nous vous recommandons de choisir un des niveaux de sécurité par défaut.">
@@ -25,16 +25,16 @@
<!ENTITY torbutton.cookiedialog.removeAllBut "Enlever tous les fichiers témoins non protégés">
<!ENTITY torbutton.cookiedialog.saveAllCookies "Protéger les nouveaux fichiers témoins">
<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "Ne pas protéger les nouveaux fichiers témoins">
-<!ENTITY torbutton.prefs.restrict_thirdparty "Limiter les fichiers témoins tiers et les autres données de traçage">
-<!ENTITY torbutton.prefs.restrict_thirdparty.accesskey "R">
+<!ENTITY torbutton.prefs.restrict_thirdparty "Limiter les fichiers témoins tiers et les autres données de suivi à la trace">
+<!ENTITY torbutton.prefs.restrict_thirdparty.accesskey "L">
<!ENTITY torbutton.prefs.restrict_thirdparty_tooltip "Gardez cette case cochée pour empêcher que diverses fonctions du navigateur soient utilisées pour vous suivre à la trace lorsque vous surfez sur le Web. Les fonctions modifiées incluent les URL de grands objets binaires, les canaux de diffusion, le cache du navigateur, les fichiers fichiers témoins, les favoricônes, les en-têtes Auth HTTP, les préconnexions de liens, localStorage, les URL de sources de médias, les requêtes OCSP, les travailleurs Web SharedWorker, et les billets de session TLS.">
<!ENTITY torbutton.prefs.resist_fingerprinting "Modifier les détails qui vous distingue d'autres utilisateurs du navigateur Tor">
<!ENTITY torbutton.prefs.resist_fingerprinting.accesskey "F">
<!ENTITY torbutton.prefs.resist_fingerprinting_tooltip "Gardez cette case cochée pour cacher aux sites Web certaines choses qui pourraient être uniques à votre sujet, incluant l'état de votre batterie, les performances de l'ordinateur, l'agencement du clavier, les paramètres de langue, l'emplacement des greffons installés, la liste de greffons installés, l'état de votre réseau, l'orientation de l'écran, les niveaux de zoom particuliers aux sites, les types de fichiers pris en charge, les couleurs système et les capacités WebGL.">
<!ENTITY torbutton.prefs.sec_caption "Niveau de sécurité">
-<!ENTITY torbutton.prefs.sec_caption_tooltip "Le bouton coulissant Sécurité vous permet de désactiver certaines fonctions du navigateur qui le rendent plus vulnérable aux tentatives de piratage.">
+<!ENTITY torbutton.prefs.sec_caption_tooltip "Le bouton de sécurité coulissant vous permet de désactiver certaines fonctions du navigateur qui le rendent plus vulnérable aux tentatives de piratage.">
<!ENTITY torbutton.prefs.sec_low "Bas (par défaut)">
-<!ENTITY torbutton.prefs.sec_low_usable_desc "Ceci offre l'expérience la plus conviviale.">
+<!ENTITY torbutton.prefs.sec_low_usable_desc "Cela offre l'expérience la plus conviviale.">
<!ENTITY torbutton.prefs.sec_low_desc "À ce niveau de sécurité, toutes les fonctions du navigateur sont activées.">
<!ENTITY torbutton.prefs.sec_font_rend_svg_tooltip "Le mécanisme de rendu de police SVG OpenType est désactivé.">
<!ENTITY torbutton.prefs.sec_gen_desc "À ce niveau de sécurité, les changements suivants sont applicables (survolez avec la souris pour plus de détails ) :">
@@ -46,7 +46,7 @@
<!ENTITY torbutton.prefs.sec_jit_slower_desc "Les scripts pourraient être exécutés plus lentement sur certains sites.">
<!ENTITY torbutton.prefs.sec_mathml_desc "Certains mécanismes d'affichage des équations mathématiques sont désactivés.">
<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML est désactivé.">
-<!ENTITY torbutton.prefs.sec_medium "https://www.transifex.com/otf/torproject/translate/#fr_CA/torbutton-torbutt…">
+<!ENTITY torbutton.prefs.sec_medium "Moyen">
<!ENTITY torbutton.prefs.sec_all_jit_desc "Sur les sites où JavaScript est activé, les optimisations des performances sont désactivées.">
<!ENTITY torbutton.prefs.sec_font_rend_desc "Certaines fonctions de rendu de police sont désactivées.">
<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "Le mécanisme de rendu de police Graphite est désactivé.">
@@ -59,5 +59,5 @@
<!ENTITY torbutton.prefs.sec_webfonts_desc "Certains polices et icônes pourraient ne pas s'afficher correctement.">
<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "Les polices fournies par les sites Web sont bloquées.">
<!ENTITY torbutton.circuit_display.title "Circuit Tor pour ce site">
-<!ENTITY torbutton.torbrowser_user_manual.label "Tor Browser User Manual">
-<!ENTITY torbutton.torbrowser_user_manual.accesskey "M">
+<!ENTITY torbutton.torbrowser_user_manual.label "Le guide d'utilisation du navigateur Tor">
+<!ENTITY torbutton.torbrowser_user_manual.accesskey "G">
diff --git a/src/chrome/locale/fr/torbutton.properties b/src/chrome/locale/fr/torbutton.properties
index 1f175e4..e4ce25e 100644
--- a/src/chrome/locale/fr/torbutton.properties
+++ b/src/chrome/locale/fr/torbutton.properties
@@ -10,23 +10,23 @@ torbutton.panel.tooltip.disabled = Cliquer pour activer Tor
torbutton.panel.tooltip.enabled = Cliquer pour désactiver Tor
torbutton.panel.label.disabled = Tor Inactif
torbutton.panel.label.enabled = Tor Actif
-extensions.torbutton(a)torproject.org.description = Torbutton fournit un bouton pour configurer les paramètres de Tor et nettoie rapidement et facilement les données de navigation privée.
+extensions.torbutton(a)torproject.org.description = BoutonTor fournit un bouton pour configurer les paramètres de Tor et vider facilement les données de navigation privée.
torbutton.popup.external.title = Télécharger un type de fichier externe
torbutton.popup.external.app = Le Navigateur Tor ne peut pas afficher ce fichier. Il est necessaire de l'ouvrir avec une autre application.
torbutton.popup.external.note = Certains types de fichiers peuvent causer des connexions à l'Internet sans passer par Tor pour certaines applications
-torbutton.popup.external.suggest = Pour être en sécurité, vous ne devriez ouvrir les fichiers téléchargé qu'hors ligne, ou utiliser un Live CD de Tor comme Tails.
+torbutton.popup.external.suggest = Par sécurité, vous ne devriez ouvrir les fichiers téléchargés que lorsque vous êtes hors ligne, ou en utilisant un CD autonome Tor comme Tails.\n
torbutton.popup.launch = Télécharger le fichier
torbutton.popup.cancel = Annuler
torbutton.popup.dontask = Télécharger automatiquement à partir de maintenant
-torbutton.popup.prompted_language = Pour renforcer votre anonymat, Torbutton peut demander une version anglaise de la page Web. Les pages que vous préférez lire dans votre langue préférée pourraient alors s'afficher en anglais.\n\nVoulez-vous demander des pages Web en anglais afin d'améliorer votre anonymat ?
-torbutton.popup.no_newnym = Torbutton ne peut pas délivrer une nouvelle identité de manière sécuritaire. Il n'a pas accès au port de contrôle de Tor.\n\nUtilisez-vous le paquet du Navigateur Tor ?
-torbutton.title.prompt_torbrowser = Information importante concernant Torbutton
-torbutton.popup.prompt_torbrowser = Torbutton Fonctionne différemment maintenant : vous ne pouvez plus le désactiver.\n\nNous avons effectué ce changement car il n'est pas sécuritaire d'utiliser Torbutton dans un navigateur qui est également utiliser pour une navigation sans Tor. Trop de bogues ne pouvaient être réglés autrement.\n\nSi vous voulez continuer à utiliser Firefox normalement, vous devriez désinstaller Torbutton et télécharger le paquet du naviguateur Tor. Les propriétés de confidentialité du navigateur Tor sont aussi supérieures à celles de Firefox, même s'il est utilisé avec Torbutton.\n\nPour enlever Torbutton, allez dans Outils->Modules complémentaires->Extensions et cliquer sur Supprimer à coté de Torbutton.
-torbutton.popup.short_torbrowser = Information importante concernant Torbutton!\n\nTorbutton est dorénavant toujours activé.\n\nCliquer sur Torbutton pour plus d'informations.
+torbutton.popup.prompted_language = Pour renforcer votre anonymat, BoutonTor peut demander la version anglaise des pages Web. Les pages que vous préférez lire dans votre langue préférée pourraient alors s'afficher en anglais.\n\nVoulez-vous demander des pages Web en anglais pour améliorer votre anonymat ?
+torbutton.popup.no_newnym = BoutonTor ne peut pas vous délivrer une nouvelle identité de façon sûre. Il n'a pas accès au port de contrôle de Tor.\n\nUtilisez-vous le paquet de navigation Tor ?
+torbutton.title.prompt_torbrowser = Informations importantes concernant BoutonTor
+torbutton.popup.prompt_torbrowser = BoutonTor fonctionne différemment maintenant : vous ne pouvez plus le désactiver.\n\nNous avons effectué ce changement car il n'est pas sécuritaire d'utiliser BoutonTor dans un navigateur qui est également utiliser pour une navigation sans Tor. Trop de bogues ne pouvaient être réglés autrement.\n\nSi vous voulez continuer à utiliser Firefox normalement, vous devriez désinstaller BoutonTor et télécharger l'offre groupée de navigation Tor. Les propriétés de confidentialité du navigateur Tor sont aussi supérieures à celles de Firefox, même s'il est utilisé avec BoutonTor.\n\nPour enlever BoutonTor, allez dans Outils->Modules complémentaires->Extensions et cliquer sur Supprimer à coté de BoutonTor.
+torbutton.popup.short_torbrowser = Informations importantes concernant BoutonTor !\n\nBoutonTor est dorénavant toujours activé.\n\nCliquer sur BoutonTor pour plus d'informations.
torbutton.popup.confirm_plugins = Les greffons tels que Flash peuvent nuire à votre anonymat et vie privée.\n\nIls peuvent également contourner Tor afin de révéler votre position actuelle ainsi que votre adresse IP.\n\nÊtes-vous certain de vouloir activer les greffons ?\n\n
torbutton.popup.never_ask_again = Ne plus me poser la question.
-torbutton.popup.confirm_newnym = Le navigateur Tor va fermer toutes les fenêtres et onglets. Tous les sessions ouvertes seront perdues.\n\nVoulez-vous redémarrer le navigateur Tor maintenant pour réinitialiser votre identité ?\n\n
+torbutton.popup.confirm_newnym = Le navigateur Tor fermera toutes les fenêtres et onglets. Toutes les sessions des sites Web seront perdues.\n\nRedémarrer le navigateur Tor maintenant pour réinitialiser votre identité ?\n\n
torbutton.slider_notification = Le menu de l'oignon vert propose maintenant un curseur de sécurité qui vous laisse ajuster votre niveau de sécurité. Découvrez-le !
torbutton.slider_notification_button = Ouvrir préférences de sécurité
@@ -34,9 +34,9 @@ torbutton.slider_notification_button = Ouvrir préférences de sécurité
torbutton.maximize_warning = Maximiser le navigateur Tor à l'écran peut permettre aux sites Web de déterminer votre taille de moniteur, laquelle peut être utilisée pour vous suivre à la trace. Nous recommandons que vous laissiez les fenêtres du navigateur Tor dans leur taille d'origine.
# Canvas permission prompt. Strings are kept here for ease of translation.
-canvas.siteprompt=Ce site (%S) tente d'extraire des informations d'image canvas HTML5 qui pourraient être utilisées comme identifiant unique pour votre ordinateur.\n\nTor Browser doit-il autoriser le site à extraire les informations d'image canvas HTML5 ?
+canvas.siteprompt=Ce site Web (%S) a essayé d'extraire des données d'image de canevas HTML5, qui pourraient être utilisées pour identifier votre ordinateur de façon unique.\n\nLe navigateur Tor devrait-il permettre à ce site Web d'extraire des données d'image de canevas HTML5 ?
canvas.notNow=Pas maintenant
-canvas.notNowAccessKey=N
+canvas.notNowAccessKey=P
canvas.allow=Autoriser à l’avenir
canvas.allowAccessKey=A
canvas.never=Jamais pour ce site (recommandé)
@@ -47,5 +47,5 @@ canvas.neverAccessKey=e
profileProblemTitle=Problème de profil %S
profileReadOnly=Vous ne pouvez pas exécuter %S à partir d'un système de fichiers en lecture seul. Veuillez copier %S vers un autre emplacement avant d'essayer de l'utiliser.
profileReadOnlyMac=Vous ne pouvez pas exécuter %S à partir d'un système de fichiers en lecture seul. Veuillez copier %S vers votre dossier Bureau ou Applications avant d'essayer de l'utiliser.
-profileAccessDenied=%S n'a pas la permission d'accéder au profil. Veuillez ajuster les permissions de votre système de fichiers et ressayer.
+profileAccessDenied=%S n'a pas le droit d'accéder au profil. Veuillez ajuster les droits de votre système de fichiers et ressayer.
profileMigrationFailed=La migration de votre profil existant %S a échoué.\nDe nouveaux paramètres vont être utilisés.
diff --git a/src/chrome/locale/it/aboutTor.dtd b/src/chrome/locale/it/aboutTor.dtd
index 612dab3..95cbb57 100644
--- a/src/chrome/locale/it/aboutTor.dtd
+++ b/src/chrome/locale/it/aboutTor.dtd
@@ -19,9 +19,7 @@
<!ENTITY aboutTor.failure2.label "Tor non sta funzionando su questo browser.">
<!ENTITY aboutTor.search.label "Cerca">
-
-<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
-<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
+<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com">
<!ENTITY aboutTor.torInfo1.label "Ulteriori Info:">
<!ENTITY aboutTor.torInfo2.label "Nazione & Indirizzo IP:">
@@ -31,7 +29,7 @@
<!ENTITY aboutTor.whatnextAnswer.label "Tor NON è tutto ciò che ti serve per navigare anonimamente! Potresti aver bisogno di cambiare le tue abitudini di navigazione per accertarti che la tua identità rimanga al sicuro.">
<!ENTITY aboutTor.whatnext.label "Consigli Per Restare Anonimo »">
<!ENTITY aboutTor.whatnext.link "https://www.torproject.org/download/download.html.en#warning">
-<!ENTITY aboutTor.torbrowser_user_manual.label "Tor Browser User Manual »">
+<!ENTITY aboutTor.torbrowser_user_manual.label "Manuale utente di Tor Browser »">
<!ENTITY aboutTor.torbrowser_user_manual.link "https://tb-manual.torproject.org">
<!ENTITY aboutTor.helpInfo1.label "Puoi Aiutare!">
<!ENTITY aboutTor.helpInfo2.label "Ci sono molti modi in cui puoi aiutare a rendere la Rete Tor più veloce e stabile:">
diff --git a/src/chrome/locale/it/aboutTor.properties b/src/chrome/locale/it/aboutTor.properties
index af7cd92..ebd910f 100644
--- a/src/chrome/locale/it/aboutTor.properties
+++ b/src/chrome/locale/it/aboutTor.properties
@@ -7,16 +7,3 @@ aboutTor.searchDDG.privacy=Cerca <a href="%1$S">in modo sicuro</a> con <a href="
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
-
-aboutTor.searchDC.privacy=Cerca <a href="%1$S"> in sicurezza </a> con <a href="%2$S">Disconnect.me</a>.
-# The following string is a link which replaces %1$S above.
-aboutTor.searchDC.privacy.link=https://disconnect.me/privacy
-# The following string is a link which replaces %2$S above.
-aboutTor.searchDC.search.link=https://search.disconnect.me/
-
-aboutTor.donationBanner.donate=Dona ora!
-aboutTor.donationBanner.heart=Tor è al centro della libertà di Internet
-aboutTor.donationBanner.tagline1=Milioni di persone dipendono da Tor per la loro Sicurezza e Privacy online
-aboutTor.donationBanner.tagline2=Una rete di persone a protezione delle persone
-aboutTor.donationBanner.tagline3=Sorveglianza = Oppressione
-aboutTor.donationBanner.tagline4=Proteggiamo giornalisti, attivisti e informatori dal 2006
diff --git a/src/chrome/locale/it/torbutton.dtd b/src/chrome/locale/it/torbutton.dtd
index 9ff051f..217158f 100644
--- a/src/chrome/locale/it/torbutton.dtd
+++ b/src/chrome/locale/it/torbutton.dtd
@@ -59,5 +59,5 @@
<!ENTITY torbutton.prefs.sec_webfonts_desc "Alcuni caratteri e icone possono non essere visualizzati correttamente.">
<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "I font provvisti dal sito sono bloccati.">
<!ENTITY torbutton.circuit_display.title "Circuito Tor per questo sito">
-<!ENTITY torbutton.torbrowser_user_manual.label "Tor Browser User Manual">
+<!ENTITY torbutton.torbrowser_user_manual.label "Manuale utente di Tor Browser">
<!ENTITY torbutton.torbrowser_user_manual.accesskey "M">
diff --git a/src/chrome/locale/ja/aboutTor.dtd b/src/chrome/locale/ja/aboutTor.dtd
index 850e13c..2d5ce39 100644
--- a/src/chrome/locale/ja/aboutTor.dtd
+++ b/src/chrome/locale/ja/aboutTor.dtd
@@ -19,9 +19,7 @@
<!ENTITY aboutTor.failure2.label "Torは、このブラウザでは動作しません。">
<!ENTITY aboutTor.search.label "検索">
-
-<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
-<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
+<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com">
<!ENTITY aboutTor.torInfo1.label "追加情報: ">
<!ENTITY aboutTor.torInfo2.label "国とIPアドレス:">
diff --git a/src/chrome/locale/ja/aboutTor.properties b/src/chrome/locale/ja/aboutTor.properties
index eee047e..04863e3 100644
--- a/src/chrome/locale/ja/aboutTor.properties
+++ b/src/chrome/locale/ja/aboutTor.properties
@@ -7,16 +7,3 @@ aboutTor.searchDDG.privacy=<a href="%2$S">DuckDuckGo</a>で<a href="%1$S">安全
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
-
-aboutTor.searchDC.privacy=<a href="%2$S">Disconnect.me</a>で<a href="%1$S">安全に</a>検索する
-# The following string is a link which replaces %1$S above.
-aboutTor.searchDC.privacy.link=https://disconnect.me/privacy
-# The following string is a link which replaces %2$S above.
-aboutTor.searchDC.search.link=https://search.disconnect.me/
-
-aboutTor.donationBanner.donate=Donate Now!
-aboutTor.donationBanner.heart=Tor is at the heart of Internet freedom
-aboutTor.donationBanner.tagline1=Millions of People Depend on Tor for Online Security & Privacy
-aboutTor.donationBanner.tagline2=A Network of People Protecting People
-aboutTor.donationBanner.tagline3=Surveillance = Oppression
-aboutTor.donationBanner.tagline4=Protecting Journalists, Activists & Whistleblowers Since 2006
diff --git a/src/chrome/locale/ko/aboutTor.dtd b/src/chrome/locale/ko/aboutTor.dtd
index 37d751e..5c2ce06 100644
--- a/src/chrome/locale/ko/aboutTor.dtd
+++ b/src/chrome/locale/ko/aboutTor.dtd
@@ -19,9 +19,7 @@
<!ENTITY aboutTor.failure2.label "Tor는 이 브라우저에서 작동하지 않습니다.">
<!ENTITY aboutTor.search.label "검색">
-
-<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
-<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
+<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com">
<!ENTITY aboutTor.torInfo1.label "추가 정보 :">
<!ENTITY aboutTor.torInfo2.label "국가 & IP 주소 :">
diff --git a/src/chrome/locale/ko/aboutTor.properties b/src/chrome/locale/ko/aboutTor.properties
index 682fecb..33ce0e8 100644
--- a/src/chrome/locale/ko/aboutTor.properties
+++ b/src/chrome/locale/ko/aboutTor.properties
@@ -7,16 +7,3 @@ aboutTor.searchDDG.privacy=<a href="%2$S">DuckDuckGo</a>를 통해 <a href="%1$S
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
-
-aboutTor.searchDC.privacy=<a href="%2$S">Diconnect.me</a>를 통해 <a href="%1$S">안전하게</a> 검색
-# The following string is a link which replaces %1$S above.
-aboutTor.searchDC.privacy.link=https://disconnect.me/privacy
-# The following string is a link which replaces %2$S above.
-aboutTor.searchDC.search.link=https://search.disconnect.me/
-
-aboutTor.donationBanner.donate=Donate Now!
-aboutTor.donationBanner.heart=Tor is at the heart of Internet freedom
-aboutTor.donationBanner.tagline1=Millions of People Depend on Tor for Online Security & Privacy
-aboutTor.donationBanner.tagline2=A Network of People Protecting People
-aboutTor.donationBanner.tagline3=Surveillance = Oppression
-aboutTor.donationBanner.tagline4=Protecting Journalists, Activists & Whistleblowers Since 2006
diff --git a/src/chrome/locale/nl/aboutTor.dtd b/src/chrome/locale/nl/aboutTor.dtd
index b93d0e0..ddb40ea 100644
--- a/src/chrome/locale/nl/aboutTor.dtd
+++ b/src/chrome/locale/nl/aboutTor.dtd
@@ -19,9 +19,7 @@
<!ENTITY aboutTor.failure2.label "Tor werkt niet in deze browser.">
<!ENTITY aboutTor.search.label "Zoeken">
-
-<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
-<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
+<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com">
<!ENTITY aboutTor.torInfo1.label "Bijkomende informatie:">
<!ENTITY aboutTor.torInfo2.label "Land & IP-adres:">
diff --git a/src/chrome/locale/nl/aboutTor.properties b/src/chrome/locale/nl/aboutTor.properties
index 855de1f..a85279a 100644
--- a/src/chrome/locale/nl/aboutTor.properties
+++ b/src/chrome/locale/nl/aboutTor.properties
@@ -7,16 +7,3 @@ aboutTor.searchDDG.privacy=<a href="%1$S">Veilig</a> zoeken met <a href="%2$S">D
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
-
-aboutTor.searchDC.privacy=<a href="%1$S">Veilig</a> zoeken met <a href="%2$S">Disconnect.me</a>.
-# The following string is a link which replaces %1$S above.
-aboutTor.searchDC.privacy.link=https://disconnect.me/privacy
-# The following string is a link which replaces %2$S above.
-aboutTor.searchDC.search.link=https://search.disconnect.me/
-
-aboutTor.donationBanner.donate=Doneer nu!
-aboutTor.donationBanner.heart=Tor staat aan de basis van internetvrijheid
-aboutTor.donationBanner.tagline1=Miljoenen mensen hangen af van Tor voor online veiligheid en privacy
-aboutTor.donationBanner.tagline2=Een netwerk van mensen die mensen beschermen
-aboutTor.donationBanner.tagline3=Afluisteren = onderdrukken
-aboutTor.donationBanner.tagline4=Beschermt journalisten, activisten en klokkenluiders sinds 2006
diff --git a/src/chrome/locale/pl/aboutTor.dtd b/src/chrome/locale/pl/aboutTor.dtd
index c92a61f..ae1f3d2 100644
--- a/src/chrome/locale/pl/aboutTor.dtd
+++ b/src/chrome/locale/pl/aboutTor.dtd
@@ -19,9 +19,7 @@
<!ENTITY aboutTor.failure2.label "Tor nie działa w tej przeglądarce.">
<!ENTITY aboutTor.search.label "Szukaj">
-
-<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
-<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
+<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com">
<!ENTITY aboutTor.torInfo1.label "Dodatkowe informacje:">
<!ENTITY aboutTor.torInfo2.label "Kraj i adres IP:">
diff --git a/src/chrome/locale/pl/aboutTor.properties b/src/chrome/locale/pl/aboutTor.properties
index b41a372..28f1e0b 100644
--- a/src/chrome/locale/pl/aboutTor.properties
+++ b/src/chrome/locale/pl/aboutTor.properties
@@ -7,16 +7,3 @@ aboutTor.searchDDG.privacy=Szukaj <a href="%1$S">bezpiecznie</a> używając wysz
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
-
-aboutTor.searchDC.privacy=Szukaj <a href="%1$S">bezpiecznie</a> używając wyszukiwarki <a href="%2$S">Disconnect.me</a>.
-# The following string is a link which replaces %1$S above.
-aboutTor.searchDC.privacy.link=https://disconnect.me/privacy
-# The following string is a link which replaces %2$S above.
-aboutTor.searchDC.search.link=https://search.disconnect.me/
-
-aboutTor.donationBanner.donate=Donate Now!
-aboutTor.donationBanner.heart=Tor is at the heart of Internet freedom
-aboutTor.donationBanner.tagline1=Millions of People Depend on Tor for Online Security & Privacy
-aboutTor.donationBanner.tagline2=A Network of People Protecting People
-aboutTor.donationBanner.tagline3=Surveillance = Oppression
-aboutTor.donationBanner.tagline4=Protecting Journalists, Activists & Whistleblowers Since 2006
diff --git a/src/chrome/locale/pl/torbutton.dtd b/src/chrome/locale/pl/torbutton.dtd
index 5ca147a..97a6e41 100644
--- a/src/chrome/locale/pl/torbutton.dtd
+++ b/src/chrome/locale/pl/torbutton.dtd
@@ -59,5 +59,5 @@
<!ENTITY torbutton.prefs.sec_webfonts_desc "Niektóre czcionki i ikony mogą być wyświetlane niepoprawnie.">
<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "Pliki czcionek dostarczane przez strony internetowe są blokowane.">
<!ENTITY torbutton.circuit_display.title "Obwód Tor dla tej strony">
-<!ENTITY torbutton.torbrowser_user_manual.label "Tor Browser User Manual">
+<!ENTITY torbutton.torbrowser_user_manual.label "Instrukcja korzystania z Tor Browser">
<!ENTITY torbutton.torbrowser_user_manual.accesskey "M">
diff --git a/src/chrome/locale/pt-BR/aboutTor.dtd b/src/chrome/locale/pt-BR/aboutTor.dtd
index 3b039f7..04548e0 100644
--- a/src/chrome/locale/pt-BR/aboutTor.dtd
+++ b/src/chrome/locale/pt-BR/aboutTor.dtd
@@ -19,9 +19,7 @@
<!ENTITY aboutTor.failure2.label "Tor não está funcionando neste navegador. ">
<!ENTITY aboutTor.search.label "Buscar">
-
-<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
-<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
+<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com">
<!ENTITY aboutTor.torInfo1.label "Para mais informações:">
<!ENTITY aboutTor.torInfo2.label "País e Endereço IP:">
diff --git a/src/chrome/locale/pt-BR/aboutTor.properties b/src/chrome/locale/pt-BR/aboutTor.properties
index 6ecd449..76e2b42 100644
--- a/src/chrome/locale/pt-BR/aboutTor.properties
+++ b/src/chrome/locale/pt-BR/aboutTor.properties
@@ -7,16 +7,3 @@ aboutTor.searchDDG.privacy=Buscar <a href="%1$S">com segurança</a> utilizando <
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
-
-aboutTor.searchDC.privacy=Buscar <a href="%1$S">com segurança</a> utilizando <a href="%2$S">Disconnect.me</a>.
-# The following string is a link which replaces %1$S above.
-aboutTor.searchDC.privacy.link=https://disconnect.me/privacy
-# The following string is a link which replaces %2$S above.
-aboutTor.searchDC.search.link=https://search.disconnect.me/
-
-aboutTor.donationBanner.donate=Doe Agora!
-aboutTor.donationBanner.heart=O Tor é o coração da liberdade na Internet
-aboutTor.donationBanner.tagline1=Milhares de pessoas dependem do Tor para Segurança & Privacidade Online
-aboutTor.donationBanner.tagline2=Uma Rede de Pessoas Protegendo Pessoas
-aboutTor.donationBanner.tagline3=Vigilância = Opressão
-aboutTor.donationBanner.tagline4=Protegendo Jornalistas, Ativistas & Denunciantes Desde 2006
diff --git a/src/chrome/locale/pt-BR/brand.dtd b/src/chrome/locale/pt-BR/brand.dtd
index 960990d..4917743 100644
--- a/src/chrome/locale/pt-BR/brand.dtd
+++ b/src/chrome/locale/pt-BR/brand.dtd
@@ -12,4 +12,4 @@
<!ENTITY plugins.installed.find "Clique para carregar os plugins de sistema instalados">
<!ENTITY plugins.installed.enable "Ativar plugins">
<!ENTITY plugins.installed.disable "Desativar plugins">
-<!ENTITY plugins.installed.disable.tip "Clique para evitar o carregamento dos plugins de sistema ">
+<!ENTITY plugins.installed.disable.tip "Clique para evitar o carregamento de plugins de sistema ">
diff --git a/src/chrome/locale/pt-BR/torbutton.dtd b/src/chrome/locale/pt-BR/torbutton.dtd
index 673c067..5b376b3 100644
--- a/src/chrome/locale/pt-BR/torbutton.dtd
+++ b/src/chrome/locale/pt-BR/torbutton.dtd
@@ -32,7 +32,7 @@
<!ENTITY torbutton.prefs.resist_fingerprinting.accesskey "F">
<!ENTITY torbutton.prefs.resist_fingerprinting_tooltip "Deixe esta opção marcada para ocultar suas informações individuais, como o status da bateria, a performance do computados, o formato de teclado, a localização e os plugins instalados, a lista de plugins instalados, o status da sua rede, a posição de tela, o tamanho de tela, níveis de zoom de alguns sites, tipos de arquivos compatíveis, cores de sistema, e capacidade de WebGL.">
<!ENTITY torbutton.prefs.sec_caption "Nível de Segurança">
-<!ENTITY torbutton.prefs.sec_caption_tooltip "The Security Slider permite que você desabilite certas funcionalidades de navegação que podem torná-la mais vulnerável a tentativas de ataque.">
+<!ENTITY torbutton.prefs.sec_caption_tooltip "The Security Slider possibilita que você desabilite certas funcionalidades de navegação que podem torná-la mais vulnerável a tentativas de ataque.">
<!ENTITY torbutton.prefs.sec_low "Baixo (padrão)">
<!ENTITY torbutton.prefs.sec_low_usable_desc "Isto proporciona a experiência mais utilizável.">
<!ENTITY torbutton.prefs.sec_low_desc "Nesse nível de segurança, todas as funções do navegador são ativadas. ">
diff --git a/src/chrome/locale/ru/aboutDialog.dtd b/src/chrome/locale/ru/aboutDialog.dtd
index 2ea0395..369b053 100644
--- a/src/chrome/locale/ru/aboutDialog.dtd
+++ b/src/chrome/locale/ru/aboutDialog.dtd
@@ -1,4 +1,4 @@
-<!ENTITY project.start "&brandShortName; разработки">
+<!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 ", проект, созданный, чтобы защитить вашу конфиденциальность и свободу в сети.">
diff --git a/src/chrome/locale/ru/aboutTor.dtd b/src/chrome/locale/ru/aboutTor.dtd
index 5225aca..f953379 100644
--- a/src/chrome/locale/ru/aboutTor.dtd
+++ b/src/chrome/locale/ru/aboutTor.dtd
@@ -6,22 +6,20 @@
<!ENTITY aboutTor.title "О проекте Tor">
-<!ENTITY aboutTor.outOfDateTorOn.label "ВНИМАНИЕ: этот браузер устарел.">
+<!ENTITY aboutTor.outOfDateTorOn.label "ВНИМАНИЕ: Вы используете старую версию браузера.">
<!ENTITY aboutTor.outOfDateTorOff.label "КРОМЕ ТОГО, данный браузер устарел.">
<!ENTITY aboutTor.outOfDate2.label "Нажмите на "луковицу"и затем выберите "Проверить обновления браузера Tor"">
<!ENTITY aboutTor.check.label "Проверить настройки сети Tor">
-<!ENTITY aboutTor.success.label "Добро пожаловать в обозреватель Tor">
-<!ENTITY aboutTor.success2.label "Вы подключены к сети Tor.">
+<!ENTITY aboutTor.success.label "Вас приветствует Tor Browser">
+<!ENTITY aboutTor.success2.label "Сеть Tor подключена.">
<!ENTITY aboutTor.success3.label "Теперь Вы можете просматривать интернет-сайты в анонимном режиме.">
<!ENTITY aboutTor.failure.label "Что-то пошло не так!">
<!ENTITY aboutTor.failure2.label "Tor не работает в этом браузере.">
<!ENTITY aboutTor.search.label "Поиск">
-
-<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
-<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
+<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com">
<!ENTITY aboutTor.torInfo1.label "Дополнительные сведения:">
<!ENTITY aboutTor.torInfo2.label "Страна и IP-адрес">
@@ -31,11 +29,11 @@
<!ENTITY aboutTor.whatnextAnswer.label "Tor НЕ является исчерпывающим средством для анонимного использования сети! Возможно, чтобы обезопасить свои личные данные, Вам придется изменить некоторые привычки работы в Интернете.">
<!ENTITY aboutTor.whatnext.label "Рекомендации для сохранения анонимности »">
<!ENTITY aboutTor.whatnext.link "https://www.torproject.org/download/download.html.en#warning">
-<!ENTITY aboutTor.torbrowser_user_manual.label "Tor Browser руководство пользователя">
+<!ENTITY aboutTor.torbrowser_user_manual.label "Руководство использования Tor Browser.">
<!ENTITY aboutTor.torbrowser_user_manual.link "https://tb-manual.torproject.org">
<!ENTITY aboutTor.helpInfo1.label "Вы можете помочь!">
<!ENTITY aboutTor.helpInfo2.label "Есть много способов сделать сеть Tor более быстрой и устойчивой:">
-<!ENTITY aboutTor.helpInfo3.label "Запустить ретранслятор Tor »">
+<!ENTITY aboutTor.helpInfo3.label "Запустить цепочку Tor »">
<!ENTITY aboutTor.helpInfo3.link "https://www.torproject.org/docs/tor-doc-relay.html#ru">
<!ENTITY aboutTor.helpInfo4.label "Станьте нашим добровольцем »">
<!ENTITY aboutTor.helpInfo4.link "https://www.torproject.org/getinvolved/volunteer.html#ru">
diff --git a/src/chrome/locale/ru/aboutTor.properties b/src/chrome/locale/ru/aboutTor.properties
index 232db84..39d5e9c 100644
--- a/src/chrome/locale/ru/aboutTor.properties
+++ b/src/chrome/locale/ru/aboutTor.properties
@@ -2,21 +2,8 @@
# See LICENSE for licensing information.
# vim: set sw=2 sts=2 ts=8 et:
-aboutTor.searchDDG.privacy=Ищите <a href="%1$S">конфиденциально</a> с <a href="%2$S">DuckDuckGo</a>.
+aboutTor.searchDDG.privacy=Поиск<a href="%1$S">Безопасность</a> с <a href="%2$S">DuckDuckGo</a>.
# The following string is a link which replaces %1$S above.
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
-
-aboutTor.searchDC.privacy=Ищите <a href="%1$S">конфиденциально</a> с <a href="%2$S">Disconnect.me</a>.
-# The following string is a link which replaces %1$S above.
-aboutTor.searchDC.privacy.link=https://disconnect.me/privacy
-# The following string is a link which replaces %2$S above.
-aboutTor.searchDC.search.link=https://search.disconnect.me/
-
-aboutTor.donationBanner.donate=Пожертвовать сейчас!
-aboutTor.donationBanner.heart=Tor это сердце свободы Интернета
-aboutTor.donationBanner.tagline1=Миллионы людей зависят от Tor в онлайн-безопасности и конфиденциальности
-aboutTor.donationBanner.tagline2=Сеть людей, защищающих людей
-aboutTor.donationBanner.tagline3=Наблюдение = Угнетение
-aboutTor.donationBanner.tagline4=Защита журналистов, активистов и информаторов с 2006 года
diff --git a/src/chrome/locale/sv/aboutTor.dtd b/src/chrome/locale/sv/aboutTor.dtd
index 4e0473d..9bd8640 100644
--- a/src/chrome/locale/sv/aboutTor.dtd
+++ b/src/chrome/locale/sv/aboutTor.dtd
@@ -19,9 +19,7 @@
<!ENTITY aboutTor.failure2.label "Tor fungerar inte i den här webbläsaren.">
<!ENTITY aboutTor.search.label "Sök">
-
-<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
-<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
+<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com">
<!ENTITY aboutTor.torInfo1.label "Ytterligare information:">
<!ENTITY aboutTor.torInfo2.label "Land och IP-adress:">
@@ -39,7 +37,7 @@
<!ENTITY aboutTor.helpInfo3.link "https://www.torproject.org/docs/tor-doc-relay.html.en">
<!ENTITY aboutTor.helpInfo4.label "Erbjud din hjälp »">
<!ENTITY aboutTor.helpInfo4.link "https://www.torproject.org/getinvolved/volunteer.html.en">
-<!ENTITY aboutTor.helpInfo5.label "Donera »">
+<!ENTITY aboutTor.helpInfo5.label "Gör en donation »">
<!ENTITY aboutTor.helpInfo5.link "https://www.torproject.org/donate/donate.html.en">
<!ENTITY aboutTor.footer.label "Tor projektet är en US 501(c)(3) non-profit organisation som utför forskning, utveckling, och utbildning inom online anonymitet och integritet.">
diff --git a/src/chrome/locale/sv/aboutTor.properties b/src/chrome/locale/sv/aboutTor.properties
index e23e864..3f8d276 100644
--- a/src/chrome/locale/sv/aboutTor.properties
+++ b/src/chrome/locale/sv/aboutTor.properties
@@ -7,16 +7,3 @@ aboutTor.searchDDG.privacy=Sök <a href="%1$S">säkert</a> med <a href="%2$S">Du
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
-
-aboutTor.searchDC.privacy=Sök <a href="%1$S">säkert</a> med <a href="%2$S">Disconnect.me</a>.
-# The following string is a link which replaces %1$S above.
-aboutTor.searchDC.privacy.link=https://disconnect.me/privacy
-# The following string is a link which replaces %2$S above.
-aboutTor.searchDC.search.link=https://search.disconnect.me/
-
-aboutTor.donationBanner.donate=Donera nu!
-aboutTor.donationBanner.heart=Tor är i centrum av internetfrihet
-aboutTor.donationBanner.tagline1=Miljoner av människor använder Tor för onlinesäkerhet och integritet
-aboutTor.donationBanner.tagline2=Ett nätverk av folk som skyddar folk
-aboutTor.donationBanner.tagline3=Övervakning = Förtryck
-aboutTor.donationBanner.tagline4=Skyddar journalister, aktivister och visselblåsare sedan 2006
diff --git a/src/chrome/locale/tr/aboutTor.dtd b/src/chrome/locale/tr/aboutTor.dtd
index f9d8588..558483b 100644
--- a/src/chrome/locale/tr/aboutTor.dtd
+++ b/src/chrome/locale/tr/aboutTor.dtd
@@ -19,9 +19,7 @@
<!ENTITY aboutTor.failure2.label "Tor bu tarayıcı ile çalışmıyor.">
<!ENTITY aboutTor.search.label "Arama">
-
-<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
-<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
+<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com">
<!ENTITY aboutTor.torInfo1.label "Ek Bilgiler:">
<!ENTITY aboutTor.torInfo2.label "Ülke ve IP Adresi:">
diff --git a/src/chrome/locale/tr/aboutTor.properties b/src/chrome/locale/tr/aboutTor.properties
index 2c34500..17ed50d 100644
--- a/src/chrome/locale/tr/aboutTor.properties
+++ b/src/chrome/locale/tr/aboutTor.properties
@@ -7,16 +7,3 @@ aboutTor.searchDDG.privacy=<a href="%2$S">DuckDuckGo</a> kullanarak <a href="%1$
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
-
-aboutTor.searchDC.privacy=<a href="%2$S">Disconnect.me</a> kullanarak <a href="%1$S">güvenli</a> arama yapın.
-# The following string is a link which replaces %1$S above.
-aboutTor.searchDC.privacy.link=https://disconnect.me/privacy
-# The following string is a link which replaces %2$S above.
-aboutTor.searchDC.search.link=https://search.disconnect.me/
-
-aboutTor.donationBanner.donate=Bağış Yapın
-aboutTor.donationBanner.heart=Tor İnternet özgürlüğünün kalbinde yer alır
-aboutTor.donationBanner.tagline1=Milyonlarda İnsan Çevrimiçi Güvenlik ve Gizlilik Sağlamak için Tor Kullanıyor
-aboutTor.donationBanner.tagline2=İnsanları İnsanlardan Koruyan Bir Ağ
-aboutTor.donationBanner.tagline3=İzleme = Baskı
-aboutTor.donationBanner.tagline4=2006 Yılından Beri Gazeteci, Aktivist ve Yolsuzluk Açıklayanları Koruyor
diff --git a/src/chrome/locale/vi/aboutTor.dtd b/src/chrome/locale/vi/aboutTor.dtd
index f788f86..0c560f7 100644
--- a/src/chrome/locale/vi/aboutTor.dtd
+++ b/src/chrome/locale/vi/aboutTor.dtd
@@ -19,9 +19,7 @@
<!ENTITY aboutTor.failure2.label "Tor không hoạt động trên trình duyệt này.">
<!ENTITY aboutTor.search.label "Tìm kiếm">
-
-<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
-<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
+<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com">
<!ENTITY aboutTor.torInfo1.label "Thông tin thêm:">
<!ENTITY aboutTor.torInfo2.label "Quốc gia & Địa chỉ IP:">
diff --git a/src/chrome/locale/vi/aboutTor.properties b/src/chrome/locale/vi/aboutTor.properties
index 3b26bc7..6cdeffb 100644
--- a/src/chrome/locale/vi/aboutTor.properties
+++ b/src/chrome/locale/vi/aboutTor.properties
@@ -7,16 +7,3 @@ aboutTor.searchDDG.privacy=Tìm kiếm <a href="%1$S">một cách an toàn</a>v
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
-
-aboutTor.searchDC.privacy=Tìm kiếm <a href="%1$S">một cách an toàn</a>với <a href="%2$S"> Disconnect.me</a>.
-# The following string is a link which replaces %1$S above.
-aboutTor.searchDC.privacy.link=https://disconnect.me/privacy
-# The following string is a link which replaces %2$S above.
-aboutTor.searchDC.search.link=https://search.disconnect.me/
-
-aboutTor.donationBanner.donate=Tài trợ ngay bây giờ!
-aboutTor.donationBanner.heart=Tor đang ở trái tim của sự tự do trên Internet
-aboutTor.donationBanner.tagline1=Hàng triệu người tin vào Tor vì an ninh trực tuyến và sự riêng tư
-aboutTor.donationBanner.tagline2=Một mạng lưới của những người đang bảo vệ người
-aboutTor.donationBanner.tagline3=Sự giám sát = Sự đàn áp
-aboutTor.donationBanner.tagline4=Đang bảo vệ các nhà báo, nhà hoạt động & những người thổi còi từ năm 2006
diff --git a/src/chrome/locale/zh-CN/aboutTor.dtd b/src/chrome/locale/zh-CN/aboutTor.dtd
index 1408d98..4fec2ee 100644
--- a/src/chrome/locale/zh-CN/aboutTor.dtd
+++ b/src/chrome/locale/zh-CN/aboutTor.dtd
@@ -19,9 +19,7 @@
<!ENTITY aboutTor.failure2.label "Tor 无法在该浏览器下运行。">
<!ENTITY aboutTor.search.label "安全的搜索引擎">
-
-<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
-<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
+<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com">
<!ENTITY aboutTor.torInfo1.label "更多信息:">
<!ENTITY aboutTor.torInfo2.label "国家与 IP 地址:">
diff --git a/src/chrome/locale/zh-CN/aboutTor.properties b/src/chrome/locale/zh-CN/aboutTor.properties
index 7622354..0bd6766 100644
--- a/src/chrome/locale/zh-CN/aboutTor.properties
+++ b/src/chrome/locale/zh-CN/aboutTor.properties
@@ -7,16 +7,3 @@ aboutTor.searchDDG.privacy=使用<a href="%2$S">DuckDuckGo</a><a href="%1$S">安
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
-
-aboutTor.searchDC.privacy=使用<a href="%2$S">Disconnect.me</a><a href="%1$S">安全</a>搜索。
-# The following string is a link which replaces %1$S above.
-aboutTor.searchDC.privacy.link=https://disconnect.me/privacy
-# The following string is a link which replaces %2$S above.
-aboutTor.searchDC.search.link=https://search.disconnect.me/
-
-aboutTor.donationBanner.donate=立即捐助!
-aboutTor.donationBanner.heart=Tor 是互联网自由的核心
-aboutTor.donationBanner.tagline1=数百万人依靠 Tor 安全、私密地上网
-aboutTor.donationBanner.tagline2=人们互相保护组成的网络
-aboutTor.donationBanner.tagline3=监视即压迫
-aboutTor.donationBanner.tagline4=为记者、告密者及活动人士提供保护,专注匿名安全 10 年
1
0

[tor-browser/tor-browser-45.6.0esr-6.5-1] squash! Omnibox: Add DDG, Startpage, Disconnect, Youtube, Twitter; remove Amazon, eBay, bing
by gk@torproject.org 13 Jan '17
by gk@torproject.org 13 Jan '17
13 Jan '17
commit 0357c6728c565ce59c408973b17079103d8821b7
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Jan 6 16:46:58 2017 +0000
squash! Omnibox: Add DDG, Startpage, Disconnect, Youtube, Twitter; remove Amazon, eBay, bing
Bug 21042: DuckDuckGo's .onion search URL does not work anymore.
DuckDuckGo has aquired a certificate for the .onion domain recently.
Using HTTP breaks the search functionality now it seems. Let's therefore
switch to HTTPS for the search URL from now on.
---
browser/locales/en-US/searchplugins/ddg-onion.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/browser/locales/en-US/searchplugins/ddg-onion.xml b/browser/locales/en-US/searchplugins/ddg-onion.xml
index a1f6a28..f407dc6 100644
--- a/browser/locales/en-US/searchplugins/ddg-onion.xml
+++ b/browser/locales/en-US/searchplugins/ddg-onion.xml
@@ -3,9 +3,9 @@
<Description>Duck Duck Go Onion</Description>
<InputEncoding>UTF-8</InputEncoding>
<Image height="16" width="16">data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAB8lBMVEUAAADkRQzjPwPjQQXkRQ3iPwTiQQXgPQPeQgrcOwPVNgDVNQDWOgbTMwDRMgDQMwDSMwDRNwTQLgDRJgDSJwDSLgDSNwTjOgDiOADjOQDkPADhQAXzs5v+/fv////0vKbiRQvgPQHpdUr85NzuknPdKgDcIwDnZzj2w7HqeU/gPQLsimb/+PftjWn97Obpb0LdJQDeLQDtjmvsi2jgSBDnbULgOQD/39HgLQDeMgDpeFLgSBH0v670uqbaJQD2qImWvP/G1Ob5+/3u//+fvvXyp47dMwDaLwD0u6v0v6/aNQDiXi/aKQD3qozU7/8gSY2vvtg0ZK/OqLDaKQHYKgLgWTfaNADZMgDZMADZLADzqpD7//+xwdz//9H/5Bn/7Bn//ADofADYMADYMQDZOgPXLgDiZDj//97/0AD3tQDvlgHZOgbXLATXMADWMgDfXjLVLQD///z+0AD/3Rn/yRnwnQDcVjbVMQDyv67wuKTSJwDRHQD+8O/tg3/iQQDwhAHnawHWMADvtKfyva7XQxHga0bQGQD2vbH/u8LXIQCmPQzja07XQxLliGn99fPkcVHvhnGZ5VguvUU5wktBwCcAgxzydVv/8/XmiGngdlL+ysi3+I8LtCE80V6P3YmX4sDleljSNQLzr6D7sKPXNQTSIwAEAbMrAAAAF3RSTlMARqSkRvPz80PTpKRG3fPe3hio9/eoGP50jNsAAAABYktHRB5yCiArAAAAyElEQVQYGQXBvUqCYRiA4fu2V9Tn+UQddI3aCpxaOoU6iU4gcqqpoYbALXBuCuoYmttamq
JDiEoh4YP+MOi6BNCh+uYKEGiOVNCXXxA2XDVV/UyfKbRCXTLQWAxbP2vt8Ue/uYDvfim91615sb2um6rqtrr/NFb1cUf1Ybd06areU6lSlYpK79jzK1SyJOkfhOl8JGEcqV5zoKrTRqO6yUzIzNu46ijdM1VV9bhuUJ/nZURExLRzUiPQm3kKXHi4BAEGOmOi78A/L1QoU/VHoTsAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTQtMDEtMTlUMjA6MDE6MTEtMDU6MDAuET6cAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE0LTAxLTE5VDIwOjAxOjExLTA1OjAwX0yGIAAAAABJRU5ErkJggg==</Image>
-<Url type="text/html" method="POST" template="http://3g2upl4pq6kufc4m.onion">
+<Url type="text/html" method="POST" template="https://3g2upl4pq6kufc4m.onion">
<Param name="q" value="{searchTerms}"/>
</Url>
-<SearchForm>http://3g2upl4pq6kufc4m.onion</SearchForm>
+<SearchForm>https://3g2upl4pq6kufc4m.onion</SearchForm>
</SearchPlugin>
1
0

13 Jan '17
commit 5047691041679494ff17a2258e2721e7200a91a2
Author: Georg Koppen <gk(a)torproject.org>
Date: Tue Nov 29 10:12:01 2016 +0000
Bug 19898: Use DuckDuckGo on about:tor
We switched to DuckDuckGo as our default search engine recently and this
patch makes sure this is reflected on our about:tor page as well.
While we are at it we are removing the respective Disconnect.me language
strings.
---
src/chrome/content/aboutTor/aboutTor.xhtml | 8 ++++----
src/chrome/locale/en/aboutTor.dtd | 4 +---
src/chrome/locale/en/aboutTor.properties | 6 ------
3 files changed, 5 insertions(+), 13 deletions(-)
diff --git a/src/chrome/content/aboutTor/aboutTor.xhtml b/src/chrome/content/aboutTor/aboutTor.xhtml
index 24efd1d..de07204 100644
--- a/src/chrome/content/aboutTor/aboutTor.xhtml
+++ b/src/chrome/content/aboutTor/aboutTor.xhtml
@@ -143,9 +143,9 @@ function insertPropertyStrings()
Components.utils.import("resource://gre/modules/Services.jsm");
let gStringBundle = Services.strings.createBundle(kPropertiesURL);
- let s1 = gStringBundle.GetStringFromName("aboutTor.searchDC.privacy.link");
- let s2 = gStringBundle.GetStringFromName("aboutTor.searchDC.search.link");
- let result = gStringBundle.formatStringFromName("aboutTor.searchDC.privacy",
+ let s1 = gStringBundle.GetStringFromName("aboutTor.searchDDG.privacy.link");
+ let s2 = gStringBundle.GetStringFromName("aboutTor.searchDDG.search.link");
+ let result = gStringBundle.formatStringFromName("aboutTor.searchDDG.privacy",
[s1, s2], 2);
if (result) {
let elem = document.getElementById("searchProviderInfo");
@@ -196,7 +196,7 @@ window.addEventListener("pageshow", function() {
</div>
<div class="searchbox hideIfTorOff"> <!-- begin form based search -->
- <form action="&aboutTor.searchDCPost.link;" method="post">
+ <form action="&aboutTor.searchDDGPost.link;" method="post">
<div id="sxw">
<div id="sbutton">
<input name="b" id="sb" value="" title="&aboutTor.search.label;"
diff --git a/src/chrome/locale/en/aboutTor.dtd b/src/chrome/locale/en/aboutTor.dtd
index 7f89286..4385ca8 100644
--- a/src/chrome/locale/en/aboutTor.dtd
+++ b/src/chrome/locale/en/aboutTor.dtd
@@ -19,9 +19,7 @@
<!ENTITY aboutTor.failure2.label "Tor is not working in this browser.">
<!ENTITY aboutTor.search.label "Search">
-
-<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
-<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
+<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com">
<!ENTITY aboutTor.torInfo1.label "Additional Info:">
<!ENTITY aboutTor.torInfo2.label "Country & IP Address:">
diff --git a/src/chrome/locale/en/aboutTor.properties b/src/chrome/locale/en/aboutTor.properties
index 000c5c2..f9723bf 100644
--- a/src/chrome/locale/en/aboutTor.properties
+++ b/src/chrome/locale/en/aboutTor.properties
@@ -7,9 +7,3 @@ aboutTor.searchDDG.privacy=Search <a href="%1$S">securely</a> with <a href="%2$S
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
-
-aboutTor.searchDC.privacy=Search <a href="%1$S">securely</a> with <a href="%2$S">Disconnect.me</a>.
-# The following string is a link which replaces %1$S above.
-aboutTor.searchDC.privacy.link=https://disconnect.me/privacy
-# The following string is a link which replaces %2$S above.
-aboutTor.searchDC.search.link=https://search.disconnect.me/
1
0

13 Jan '17
commit 5b89d079ddec8e1b89003607553096471e43151e
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Tue Jan 3 08:47:35 2017 -0800
Bug 21131: Remove 2016 donation banner
---
src/chrome/content/aboutTor/aboutTor.xhtml | 27 +-
src/chrome/content/aboutTor/donation_banner.js | 188 --
src/chrome/content/aboutTor/onion-heart.svg | 142 --
src/chrome/content/aboutTor/tor-roots-only.svg | 2716 ------------------------
src/chrome/locale/en/aboutTor.properties | 7 -
src/chrome/locale/fr/aboutTor.properties | 2 +-
src/chrome/skin/donation_banner.css | 146 --
7 files changed, 2 insertions(+), 3226 deletions(-)
diff --git a/src/chrome/content/aboutTor/aboutTor.xhtml b/src/chrome/content/aboutTor/aboutTor.xhtml
index 6b93bfa..24efd1d 100644
--- a/src/chrome/content/aboutTor/aboutTor.xhtml
+++ b/src/chrome/content/aboutTor/aboutTor.xhtml
@@ -21,8 +21,6 @@
<title>&aboutTor.title;</title>
<link rel="stylesheet" type="text/css" media="all"
href="chrome://torbutton/skin/aboutTor.css"/>
- <link rel="stylesheet" type="text/css" media="all"
- href="chrome://torbutton/skin/donation_banner.css"/>
<script type="text/javascript;version=1.7">
<![CDATA[
function onLoad()
@@ -166,29 +164,6 @@ window.addEventListener("pageshow", function() {
</script>
</head>
<body dir="&locale.dir;" onload="onLoad();">
- <div id="banner" class="onions-bg">
- <div id="banner-contents-container">
- <div id="banner-logo-container">
- <img id="banner-logo" alt="Tor Onion-Heart Logo"
- src="chrome://torbutton/content/aboutTor/onion-heart.svg"/>
- </div>
- <div id="banner-text">
- <div id="banner-tagline"><span></span></div>
- <div id="banner-heart"><span></span></div>
- </div>
- <a id="banner-donate-button-link"
- href="https://www.torproject.org/donate/donate-tbb">
- <div id="banner-donate-button-container">
- <div id="banner-donate-button">
- <div id="banner-donate-button-text">
- <span></span>
- </div>
- </div>
- </div>
- </a>
- </div>
- </div>
- <div id="banner-spacer"></div>
<div id="torstatus" class="top">
<div id="torstatus-version"/>
<div id="torstatus-image"/>
@@ -270,6 +245,6 @@ window.addEventListener("pageshow", function() {
<p>&aboutTor.footer.label;
<a href="&aboutTor.learnMore.link;">&aboutTor.learnMore.label;</a></p>
</div>
- <script src="chrome://torbutton/content/aboutTor/donation_banner.js"></script>
+
</body>
</html>
diff --git a/src/chrome/content/aboutTor/donation_banner.js b/src/chrome/content/aboutTor/donation_banner.js
deleted file mode 100644
index 9aa2373..0000000
--- a/src/chrome/content/aboutTor/donation_banner.js
+++ /dev/null
@@ -1,188 +0,0 @@
-/* jshint esnext:true */
-
-// A list of locales for which the banner has been translated.
-let kBannerLocales = [
- "de",
- "en",
- "es",
- "fa",
- "fr",
- "it",
- "nl",
- "pt",
- "ru",
- "tr",
- "vi",
- "zh",
-];
-
-// A list of donation page locales (at least redirects should exist).
-let kDonationPageLocales = [
- "ar",
- "de",
- "en",
- "es",
- "fa",
- "fr",
- "it",
- "ja",
- "ko",
- "nl",
- "pl",
- "pt",
- "ru",
- "tr",
- "vi",
- "zh",
-];
-
-let kPropertiesURL = "chrome://torbutton/locale/aboutTor.properties";
-Components.utils.import("resource://gre/modules/Services.jsm");
-let gStringBundle = Services.strings.createBundle(kPropertiesURL);
-let kBrowserLocale = Services.prefs.getCharPref("general.useragent.locale");
-let kBrowserLocaleShort = kBrowserLocale.match(/[a-zA-Z]+/)[0].toLowerCase();
-
-let sel = selector => document.querySelector(selector);
-
-// Check if we should show the banner, depends on
-// browser locale, current date, and how many times
-// we have already shown the banner.
-let shouldShowBanner = function () {
- try {
- // Don't show a banner if update is needed.
- let updateNeeded = Services.prefs.getBoolPref("extensions.torbutton.updateNeeded");
- if (updateNeeded) {
- return false;
- }
- // Only show banner when we have that locale and if a donation redirect exists.
- if (kBannerLocales.indexOf(kBrowserLocaleShort) === -1 ||
- kDonationPageLocales.indexOf(kBrowserLocaleShort) === -1) {
- return false;
- }
- // Only show banner between 2016 Nov 23 and 2017 Jan 25.
- let now = new Date();
- let start = new Date(2016, 10, 23);
- let end = new Date(2017, 0, 26);
- let shownCountPref = "extensions.torbutton.donation_banner2016.shown_count";
- if (now < start || now > end) {
- // Clean up pref if not in use.
- Services.prefs.clearUserPref(shownCountPref);
- return false;
- }
- // Only show banner 50 times.
- let count = 0;
- if (Services.prefs.prefHasUserValue(shownCountPref)) {
- count = Services.prefs.getIntPref(shownCountPref);
- }
- if (count >= 50) {
- return false;
- }
- Services.prefs.setIntPref(shownCountPref, count+1);
- return true;
- } catch (e) {
- return false;
- }
-};
-
-// Shrink the font size if the text in the given element is overflowing.
-let fitTextInElement = function (element) {
- element.style.fontSize = "8px";
- let defaultWidth = element.scrollWidth,
- defaultHeight = element.scrollHeight;
- for (let testSize = 8; testSize <= 40; testSize += 0.5) {
- element.style.fontSize = `${testSize}px`;
- if (element.scrollWidth <= defaultWidth &&
- element.scrollHeight <= defaultHeight) {
- bestSize = testSize;
- } else {
- break;
- }
- }
- element.style.fontSize = `${bestSize}px`;
-};
-
-// Increase padding at left and right to "squeeze" text, until it gets
-// squeezed so much that it gets longer vertically.
-let avoidWidows = function (element) {
- element.style.paddingLeft = "0px";
- element.style.paddingRight = "0px";
- let originalWidth = element.scrollWidth;
- let originalHeight = element.scrollHeight;
- for (let testPadding = 0; testPadding < originalWidth / 2; testPadding += 0.5) {
- element.style.paddingLeft = element.style.paddingRight = `${testPadding}px`;
- if (element.scrollHeight <= originalHeight) {
- bestPadding = testPadding;
- } else {
- break;
- }
- }
- element.style.paddingLeft = element.style.paddingRight = `${bestPadding}px`;
-};
-
-// Resize the text inside banner to fit.
-let updateTextSizes = function () {
- fitTextInElement(sel("#banner-tagline"));
- fitTextInElement(sel("#banner-heart"));
- fitTextInElement(sel("#banner-donate-button-text"));
- avoidWidows(sel("#banner-tagline span"));
- avoidWidows(sel("#banner-donate-button-text"));
-};
-
-// Read the tagline with the given index.
-let getTagline = index => gStringBundle.GetStringFromName(
- "aboutTor.donationBanner.tagline" + (index + 1));
-
-// Returns a random integer x, such that 0 <= x < max
-let randomInteger = max => Math.floor(max * Math.random());
-
-
-// The main donation banner function.
-let runDonationBanner = function () {
- try {
- if (!shouldShowBanner()) {
- return;
- }
- sel("#banner-tagline span").innerText = getTagline(randomInteger(4));
- sel("#banner-heart span").innerText =
- gStringBundle.GetStringFromName("aboutTor.donationBanner.heart");
- sel("#banner-donate-button-text span").innerHTML =
- gStringBundle.GetStringFromName("aboutTor.donationBanner.donate") + " »";
- sel("#banner").style.display = "flex";
- sel("#banner-spacer").style.display = "block";
- addEventListener("resize", updateTextSizes);
- updateTextSizes();
- // Add a suffix corresponding to locale so we can send user
- // to a correctly-localized donation page via redirect.
- sel("#banner-donate-button-link").href += "-" + kBrowserLocaleShort;
- sel("#torstatus-image").style.display = "none";
- } catch (e) {
- // Something went wrong.
- console.error(e.message);
- sel("#banner").style.display = "none";
- sel("#bannerSpacer").style.display = "none";
- sel("#torstatus-image").style.display = "block";
- }
-};
-
-// Calls callback(attributeValue) when the specified attribute changes on
-// target. Returns a zero-arg function that stops observing.
-let observeAttribute = function (target, attributeName, callback) {
- let observer = new MutationObserver(mutations => {
- mutations.forEach(mutation => {
- if (mutation.type === "attributes" &&
- mutation.attributeName === attributeName) {
- callback(target.getAttribute(attributeName));
- }
- });
- });
- observer.observe(target, { attributes: true });
- return () => observer.disconnect();
-};
-
-// Start the donation banner if "toron" has been set to "yes".
-let stopObserving = observeAttribute(document.body, "toron", value => {
- stopObserving();
- if (value === "yes") {
- runDonationBanner();
- }
-});
diff --git a/src/chrome/content/aboutTor/onion-heart.svg b/src/chrome/content/aboutTor/onion-heart.svg
deleted file mode 100644
index 300002a..0000000
--- a/src/chrome/content/aboutTor/onion-heart.svg
+++ /dev/null
@@ -1,142 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- id="svg3004"
- version="1.1"
- inkscape:version="0.48.5 r10040"
- width="399.96011"
- height="574.18964"
- xml:space="preserve"
- sodipodi:docname="tor_onion-heart-no-roots.svg"><metadata
- id="metadata3010"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
- id="defs3008"><clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath3730"><path
- d="M 0,936 936,936 936,0 0,0 0,936 z"
- id="path3732"
- inkscape:connector-curvature="0" /></clipPath><linearGradient
- x1="0"
- y1="0"
- x2="1"
- y2="0"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(48.064392,308.5928,-308.5928,48.064392,538.70312,416.25879)"
- spreadMethod="pad"
- id="linearGradient4548"><stop
- style="stop-opacity:1;stop-color:#533c5f"
- offset="0"
- id="stop4550" /><stop
- style="stop-opacity:1;stop-color:#c3a1cc"
- offset="1"
- id="stop4552" /></linearGradient><clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4560"><path
- d="M 0,936 936,936 936,0 0,0 0,936 z"
- id="path4562"
- inkscape:connector-curvature="0" /></clipPath></defs><sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="640"
- inkscape:window-height="480"
- id="namedview3006"
- showgrid="false"
- inkscape:zoom="0.20512821"
- inkscape:cx="191.66224"
- inkscape:cy="225.57375"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="0"
- inkscape:current-layer="g3012"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0" /><g
- id="g3012"
- inkscape:groupmode="layer"
- inkscape:label="tor_onion-heart-tat_k"
- transform="matrix(1.25,0,0,-1.25,-393.33776,933.61587)"><g
- id="g5498"><g
- transform="translate(467.2668,636.4615)"
- id="g4534"><path
- inkscape:connector-curvature="0"
- id="path4536"
- style="fill:#fefbde;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 0,0 38.336,-23.387 c -1.623,-10.421 -7.42,-42.074 -2.365,-52.467 54.488,-98.402 15.611,-272.581 -55.594,-266.116 -107.359,16.723 -136.943,96.034 -126.502,163.069 9.521,61.129 89.133,90.349 138.523,119.652 C 5.023,-51.257 6.441,-29.463 0,0" /></g><g
- transform="translate(-11.7,-132.6)"
- id="g4538"><g
- id="g4540"><g
- id="g4546"><path
- inkscape:connector-curvature="0"
- id="path4554"
- style="fill:url(#linearGradient4548);stroke:none"
- d="m 515.125,691.615 c 14.398,-33.193 21.002,-61.614 23.349,-92.216 l 0,0 c 5.282,-78.024 -18.683,-145.076 -69.431,-171.68 l 0,0 c 82.295,-22.068 194.019,58 153.076,169.678 l 0,0 c -11.436,31.663 -47.526,67.164 -86.427,100.616 l 0,0 c -8.858,7.069 -7.588,28.931 -4.684,38.436 l 0,0 -13.594,9.835 c -2.5,-20.602 -8.252,-38.547 -2.289,-54.669" /></g></g></g><g
- transform="translate(539.4914,722.0167)"
- id="g4564"><path
- inkscape:connector-curvature="0"
- id="path4566"
- style="fill:#acce45;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="M 0,0 -20.238,-47.718 C 2.938,-15.399 35.18,6.613 71.105,24.853 43.215,1.096 17.408,-22.991 -0.063,-48.373 27.033,-20.575 59.609,-7.864 95.082,-1.648 44.057,-34.611 1.818,-71.932 -31.735,-110.53 l -20.071,12.731 C -42.881,-64.259 -24.406,-31.065 0,0" /></g><g
- transform="translate(610.6633,746.8927)"
- id="g4568"><path
- inkscape:connector-curvature="0"
- id="path4570"
- style="fill:#4f7944;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 0,0 c -18.732,-14.643 -51.215,-40.396 -70.211,-64.362 -16.199,-20.443 -28.023,-39.03 -34.963,-51.689 -4.435,-8.1 -16.986,-6.057 -11.148,7.569 0.06,0.134 0.131,0.231 0.189,0.368 6.617,10.675 16.436,25.483 25.996,38.372 l 18.924,44.909 c -8.81,-18.827 -19.836,-35.509 -28.074,-55.15 0.006,0 -12.072,-19.051 -15.252,-23.871 -1.08,-1.638 -2.02,-3.232 -2.857,-4.727 -0.055,-0.094 -0.12,-0.144 -0.17,-0.239 -1.356,-2.085 -2.416,-4.43 -3.268,-6.515 -0.141,-0.342 -0.145,-0.56 -0.27,-0.887 -1.146,-2.966 -1.884,-5.274 -1.884,-5.274 3.131,-3.687 19.793,-14.219 19.793,-14.219 33.797,38.847 76.142,76.218 127.17,109.18 C -11.502,-32.75 -44.096,-45.426 -71.191,-73.223 -53.719,-47.841 -27.889,-23.757 0,0" /></g><g
- transform="translate(504.0246,614.7198)"
- id="g4572"><path
- inkscape:connector-curvature="0"
- id="path4574"
- style="fill:#364733;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="M 0,0 3.443,-3.542 C 37.24,35.305 79.586,72.676 130.613,105.638 101.641,88.618 62.617,65.032 45.039,48.176 22.799,26.855 37.211,47.893 37.211,47.893 c 0,0 13.723,23.78 33.42,36.975 C 59.879,81.646 39.172,62.772 35.447,58.95 35.447,58.95 18.482,35.696 7.662,13.96 4.756,8.131 0,0 0,0" /></g><g
- transform="translate(495.4396,619.3077)"
- id="g4576"><path
- inkscape:connector-curvature="0"
- id="path4578"
- style="fill:#f3ecac;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 0,0 -50.606,-324.234 c 1.214,-0.211 1.599,-0.373 2.834,-0.564 71.205,-6.467 110.13,167.744 55.642,266.146 -5.057,10.391 0.705,41.975 2.328,52.398 L 0,0 z" /></g><g
- transform="translate(496.173,618.858)"
- id="g4580"><path
- inkscape:connector-curvature="0"
- id="path4582"
- style="fill:#292929;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 0,0 32.734,-10.453 c -13.681,-28.463 9.821,-53.468 17.739,-59.683 17.775,-13.799 34.8,-27.831 47.625,-43.702 24.132,-30.084 34.48,-68.694 28.527,-106.9 -5.895,-37.853 -28.941,-71.615 -61.904,-91.384 -31.006,-18.65 -70.377,-22.477 -107.196,-16.742 -22.92,3.57 -43.251,7.801 -64.341,18.556 -48.054,24.922 -79.152,74.228 -74.163,126.815 3.549,41.068 17.397,70.575 54.035,97.952 18.971,14.475 54.997,28.784 80.01,40.897 12.305,5.91 27.467,25.606 11.219,69.755 l 5.057,2.771 30.42,-27.723 -26.887,16.145 c 1.891,-3.854 6.055,-20.512 6.742,-25.242 1.125,-13.337 -2.211,-25.627 -5.855,-30.748 -18.242,-23.485 -43.637,-26.643 -63.619,-38.471 -35.263,-20.832 -72.493,-36.022 -79.655,-107.122 -3.672,-35 16.819,-81.593 54.367,-107.718 21.193,-14.688 46.887,-23.316 73.415,-28.867 23.8,-4.774 71.867,2.324 100.117,19.265 30.201,18.063 50.386,49.427 55.742,83.807 5.41,34.736 -3.344,69.895 -25.768,97.222 C 75.537,-105.7 53.42,-85.534 39.496,-74.471 25.564,-63.407 10.248,-36.12 20.123,-13.825
L 0,0 z" /></g><g
- transform="translate(504.3195,604.0934)"
- id="g4584"><path
- inkscape:connector-curvature="0"
- id="path4586"
- style="fill:#292929;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 0,0 c -3.924,-18.399 -5.262,-25.191 -3.904,-39.278 1.494,-15.528 17.593,-40.092 21.738,-65.995 7.926,-49.617 -5.521,-110.842 -24.156,-157.384 -6.819,-16.368 -30.459,-37.95 -51.5,-42.849 l 14.047,-5.748 c 8.041,-0.892 31.505,15.016 42.904,35.65 18.207,32.385 27.021,72.987 28.521,116.866 0.299,4.223 -0.861,42.469 -5.025,59.125 C 16.871,-74.884 3.447,-51.447 2.414,-46.666 0.484,-38.538 -3.91,-21.602 0,0" /></g><g
- transform="translate(495.4807,619.3595)"
- id="g4588"><path
- inkscape:connector-curvature="0"
- id="path4590"
- style="fill:#292929;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="M 0,0 C 0.155,-0.008 -49.259,-320.493 -50.456,-319.838 L -0.062,-0.032 C -0.062,0.16 -0.009,-0.035 0,0 c 0.003,0.037 0.231,-0.25 1.218,-0.73 0,0 -43.223,-281.344 -49.418,-321.118 -0.852,0.131 -1.707,0.265 -2.559,0.396 C -44.276,-279.334 -0.148,0.039 0,0" /></g><g
- transform="translate(453.0549,350.485)"
- id="g4592"><path
- inkscape:connector-curvature="0"
- id="path4594"
- style="fill:#df3441;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 0,0 c 0,0 -89.234,63.608 -79.039,129.324 3.929,25.318 23.153,43.156 51.53,38.994 38.91,-5.709 47.481,-43.043 47.481,-43.043 L 0,0 z" /></g><g
- transform="translate(473.216,476.2032)"
- id="g4596"><path
- inkscape:connector-curvature="0"
- id="path4598"
- style="fill:#bc303a;fill-opacity:1;fill-rule:nonzero;stroke:none"
- d="m 0,0 c 0,0 15.029,38.665 32.414,24.385 10.727,-8.813 7.828,-36.448 3.953,-51.406 -12.875,-49.717 -56.528,-98.697 -56.528,-98.697 L 0,0 z" /></g></g></g></svg>
\ No newline at end of file
diff --git a/src/chrome/content/aboutTor/tor-roots-only.svg b/src/chrome/content/aboutTor/tor-roots-only.svg
deleted file mode 100644
index bb84b1b..0000000
--- a/src/chrome/content/aboutTor/tor-roots-only.svg
+++ /dev/null
@@ -1,2716 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- id="svg2985"
- version="1.1"
- inkscape:version="0.48.5 r10040"
- width="718.2995"
- height="464.96451"
- xml:space="preserve"
- sodipodi:docname="tor-roots-only.svg"><metadata
- id="metadata2991"><rdf:RDF><cc:Work
- rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
- id="defs2989"><clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath3711"><path
- d="M 0,936 936,936 936,0 0,0 0,936 z"
- id="path3713"
- inkscape:connector-curvature="0" /></clipPath><linearGradient
- x1="0"
- y1="0"
- x2="1"
- y2="0"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(48.064392,308.5928,-308.5928,48.064392,538.70312,416.25879)"
- spreadMethod="pad"
- id="linearGradient4529"><stop
- style="stop-opacity:1;stop-color:#533c5f"
- offset="0"
- id="stop4531" /><stop
- style="stop-opacity:1;stop-color:#c3a1cc"
- offset="1"
- id="stop4533" /></linearGradient><clipPath
- clipPathUnits="userSpaceOnUse"
- id="clipPath4541"><path
- d="M 0,936 936,936 936,0 0,0 0,936 z"
- id="path4543"
- inkscape:connector-curvature="0" /></clipPath></defs><sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1366"
- inkscape:window-height="746"
- id="namedview2987"
- showgrid="false"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0"
- inkscape:zoom="1.905014"
- inkscape:cx="195.7241"
- inkscape:cy="358.82752"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1"
- inkscape:current-layer="g2993" /><g
- id="g2993"
- inkscape:groupmode="layer"
- inkscape:label="tor_onion-heart-tat_k"
- transform="matrix(1.25,0,0,-1.25,-235.68237,557.80025)"><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g2995"
- transform="translate(471.4521,228.168)"><path
- d="m 0,0 0,18.214 -9.236,9.237 -0.229,50.448"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path2997"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g2999"
- transform="translate(478.7373,266.6787)"><path
- d="M 0,0 -16.572,0"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3001"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3003"
- transform="translate(483.9424,229.9893)"><path
- d="M 0,0 -12.49,12.489"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3005"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3007"
- transform="translate(475.7461,321.9717)"><path
- d="m 0,0 -7.155,7.157 0,9.888 10.278,10.276 0,27.713 -17.5,17.499 0,38.706"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3009"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3011"
- transform="translate(486.2852,340.0566)"><path
- d="m 0,0 0,42.674 -16.783,16.783 0,31.615"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3013"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3015"
- transform="translate(478.4795,407.4502)"><path
- d="M 0,0 0,23.679"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3017"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3019"
- transform="translate(488.6289,398.082)"><path
- d="M 0,0 0,33.308"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3021"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3023"
- transform="translate(499.0361,381.9482)"><path
- d="M 0,0 0,51.782"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3025"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3027"
- transform="translate(515.6895,401.9854)"><path
- d="M 0,0 9.911,-9.911"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3029"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3031"
- transform="translate(546.3945,384.292)"><path
- d="m 0,0 -31.614,31.614 0,19.907"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3033"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3035"
- transform="translate(413.7471,446.2402)"><path
- d="m 0,0 0,-8.771 -73.676,-74.116 0,-5.699 -74.551,-74.552 0,-7.893 -42.539,-42.1"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3037"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3039"
- transform="translate(364.7764,388.207)"><path
- d="M 0,0 -18.127,0"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3041"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3043"
- transform="translate(354.501,377.8701)"><path
- d="M 0,0 -44.689,0 -58.086,-13.397"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3045"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3047"
- transform="translate(335.7275,377.8701)"><path
- d="M 0,0 -18.473,-18.476"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3049"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3051"
- transform="translate(241.8379,386.5977)"><path
- d="M 0,0 -27.628,-28.943"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3053"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3055"
- transform="translate(259.9463,340.6777)"><path
- d="M 0,0 -14.129,-14.128"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3057"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3059"
- transform="translate(278.2373,315.1172)"><path
- d="M 0,0 -13.734,-13.734"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3061"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3063"
- transform="translate(248.8545,276.9629)"><path
- d="M 0,0 -15.349,-15.347"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3065"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3067"
- transform="translate(291.832,265.1221)"><path
- d="M 0,0 -32.013,-32.013"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3069"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3071"
- transform="translate(322.5293,279.5947)"><path
- d="M 0,0 -13.155,-12.719"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3073"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3075"
- transform="translate(322.0908,250.6514)"><path
- d="M 0,0 -12.277,-12.28"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3077"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3079"
- transform="translate(318.583,215.1289)"><path
- d="m 0,0 -11.93,-11.929 0.09,-10.436 -16.66,-16.659 0,-8.962"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3081"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3083"
- transform="translate(293.585,143.6465)"><path
- d="m 0,0 11.404,11.401 9.648,9.651 0,9.209 33.766,33.764"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3085"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3087"
- transform="translate(338.7559,160.751)"><path
- d="m 0,0 9.647,9.646 0,59.205 6.798,6.795 0,6.36 -9.319,9.319 0,62.163 -5.975,5.975 0,11.127 3.673,3.948 0,12.717 41.393,41.394"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3089"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3091"
- transform="translate(278.6748,234.4248)"><path
- d="M 0,0 0,17.541"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3093"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3095"
- transform="translate(292.2705,250.2119)"><path
- d="m 0,0 -0.438,24.121 18.199,18.198 0,35.08"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3097"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3099"
- transform="translate(258.0215,267.7881)"><path
- d="M 0,0 -22.767,22.767"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3101"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3103"
- transform="translate(243.5879,282.2217)"><path
- d="M 0,0 -30.255,0"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3105"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3107"
- transform="translate(197.1064,370.373)"><path
- d="M 0,0 29.256,0"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3109"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3111"
- transform="translate(209.3857,413.3486)"><path
- d="M 0,0 27.631,-26.751"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3113"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3115"
- transform="translate(226.0508,386.5977)"><path
- d="m 0,0 87.709,0 8.728,-8.728"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3117"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3119"
- transform="translate(235.6982,364.6699)"><path
- d="M 0,0 0,15.474"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3121"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3123"
- transform="translate(254.9941,401.5078)"><path
- d="M 0,0 14.91,-14.91"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3125"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3127"
- transform="translate(287.8857,401.9463)"><path
- d="M 0,0 15.35,-15.349"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3129"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3131"
- transform="translate(245.3467,340.6777)"><path
- d="m 0,0 77.634,0 0,-20.739 -5.707,-5.704 0,-10.958 5.04,-5.041 -0.223,-76.967"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3133"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3135"
- transform="translate(258.9424,365.9873)"><path
- d="M 0,0 23.554,-25.31"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3137"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3139"
- transform="translate(291.3936,330.0254)"><path
- d="M 0,0 0,10.652"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3141"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3143"
- transform="translate(263.3271,315.1172)"><path
- d="M 0,0 34.206,0"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3145"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3147"
- transform="translate(276.9219,371.249)"><path
- d="M 0,0 0,15.349"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3149"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3151"
- transform="translate(278.2373,295.8193)"><path
- d="M 0,0 -0.146,-14.429"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3153"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3155"
- transform="translate(261.7705,271.5)"><path
- d="M 0,0 0,-14.271"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3157"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3159"
- transform="translate(235.1045,245.1084)"><path
- d="M 0,0 0,-15.507"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3161"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3163"
- transform="translate(322.1514,241.8789)"><path
- d="m 0,0 16.635,-16.635 0,-8.359"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3165"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3167"
- transform="translate(317.7061,142.3311)"><path
- d="M 0,0 -12.717,12.717"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3169"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3171"
- transform="translate(348.4033,217.7607)"><path
- d="M 0,0 10.525,-11.402"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3173"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3175"
- transform="translate(338.3174,243.6338)"><path
- d="m 0,0 0,57.889 7.564,6.575"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3177"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3179"
- transform="translate(331.5205,349.1035)"><path
- d="M 0,0 0,-35.303"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3181"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3183"
- transform="translate(382.7012,406.2383)"><path
- d="m 0,0 5.39,-5.389 0,-4.603"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3185"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3187"
- transform="translate(403.2217,407.209)"><path
- d="m 0,0 7.895,7.894 0,5.702 10.523,10.524 0,10.087"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3189"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3191"
- transform="translate(350.5967,330.9033)"><path
- d="m 0,0 0,5.701 9.867,9.865 0,5.484 57.778,57.777 0,4.935 12.224,12.224 0,12.773"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3193"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3195"
- transform="translate(353.667,262.0527)"><path
- d="m 0,0 0,24.119 -7.785,7.784"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3197"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3199"
- transform="translate(361.999,177.8535)"><path
- d="M 0,0 18.857,20.172"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3201"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3203"
- transform="translate(388.75,162.0664)"><path
- d="m 0,0 -8.114,8.111 -0.657,80.035 10.525,10.526 0,6.575 -10.744,10.747"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3205"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3207"
- transform="translate(364.6299,230.4775)"><path
- d="m 0,0 0,21.488 10.525,10.527 0,11.401 8.772,8.333 0,21.928 -11.403,11.402"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3209"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3211"
- transform="translate(369.8916,312.9248)"><path
- d="m 0,0 19.734,19.73 0,13.161 31.662,31.658 -4.349,4.347 -6.615,6.616"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3213"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3215"
- transform="translate(364.1904,271.7012)"><path
- d="m 0,0 0,20.174 -8.99,8.989 0,12.061 14.803,14.797 0,19.847 30.666,30.665"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3217"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3219"
- transform="translate(405.958,384.0723)"><path
- d="m 0,0 31.909,31.906 0,20.174"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3221"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3223"
- transform="translate(401.0283,279.5947)"><path
- d="m 0,0 -11.182,11.183 -0.22,55.038"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3225"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3227"
- transform="translate(381.2939,119.9648)"><path
- d="M 0,0 14.034,14.033"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3229"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3231"
- transform="translate(379.1016,138.8232)"><path
- d="M 0,0 16.227,0"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3233"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3235"
- transform="translate(379.9785,93.6533)"><path
- d="M 0,0 15.35,13.595"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3237"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3239"
- transform="translate(395.3281,92.7754)"><path
- d="m 0,0 0,48.241 10.171,10.171 0,9.677 -15.873,16.111 0.878,83.763"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3241"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3243"
- transform="translate(402.7822,252.8428)"><path
- d="M 0,0 -12.278,12.279"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3245"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3247"
- transform="translate(405.499,152.751)"><path
- d="m 0,0 0,-28.597 8.279,-8.278"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3249"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3251"
- transform="translate(427.2139,391.835)"><path
- d="m 0,0 18.604,18.604 0,21.989"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3253"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3255"
- transform="translate(444.1279,315.335)"><path
- d="m 0,0 9.988,10.092 0,27.117"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3257"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3259"
- transform="translate(451.2256,359.4463)"><path
- d="m 0,0 -6.546,6.546 0.1,21.941 -10.735,10.734"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3261"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3263"
- transform="translate(426.1738,346.8193)"><path
- d="M 0,0 18.506,19.173"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3265"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3267"
- transform="translate(443.9355,344.4111)"><path
- d="M 0,0 -10.086,10.084"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3269"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3271"
- transform="translate(418.3682,268.7588)"><path
- d="m 0,0 0,7.284 -20.297,20.299 0,57.918"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3273"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3275"
- transform="translate(422.0098,289.5752)"><path
- d="M 0,0 -16.652,0"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3277"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3279"
- transform="translate(410.3008,307.0088)"><path
- d="m 0,0 12.101,12.1 0,9.237 -9.173,9.172 0,31.898"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3281"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3283"
- transform="translate(406.1377,331.4668)"><path
- d="M 0,0 0,30.858"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3285"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3287"
- transform="translate(423.6523,310.1475)"><path
- d="M 0,0 -10.099,0.114"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3289"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3291"
- transform="translate(419.4111,201.3662)"><path
- d="m 0,0 0,43.974 13.661,13.663 0,9.239 19.971,19.968 0,8.913 8.944,8.944 0,11.091 9.286,9.285 8.246,-8.243 0,-28.704"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3293"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3295"
- transform="translate(429.2979,168.5811)"><path
- d="m 0,0 17.435,17.434 0,11.449 -13.791,13.79 0.13,50.74"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3297"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3299"
- transform="translate(441.2686,238.8359)"><path
- d="M 0,0 -8.235,8.236"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3301"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3303"
- transform="translate(450.6357,217.7607)"><path
- d="M 0,0 -17.677,0"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3305"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3307"
- transform="translate(438.1455,142.0391)"><path
- d="m 0,0 0,23.68 8.978,8.976 0,12.881"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3309"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3311"
- transform="translate(446.9932,159.4717)"><path
- d="M 0,0 0,18.477"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3313"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3315"
- transform="translate(464.166,179.5078)"><path
- d="M 0,0 -17.173,0"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3317"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3319"
- transform="translate(453.043,290.8789)"><path
- d="m 0,0 0,-43.012 6.299,-6.299"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3321"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3323"
- transform="translate(463.9082,363.7354)"><path
- d="m 0,0 -11.061,11.059 0,56.075"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3325"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3327"
- transform="translate(417.8506,380.9072)"><path
- d="M 0,0 8.326,-8.324"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3329"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3331"
- transform="translate(538.8232,446.2402)"><path
- d="m 0,0 0,-8.771 73.673,-74.116 0,-5.699 74.554,-74.552 0,-7.893 42.538,-42.1"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3333"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3335"
- transform="translate(587.793,388.207)"><path
- d="M 0,0 18.126,0"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3337"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3339"
- transform="translate(598.0674,377.8701)"><path
- d="M 0,0 44.689,0 58.085,-13.397"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3341"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3343"
- transform="translate(616.8418,377.8701)"><path
- d="M 0,0 18.472,-18.476"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3345"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3347"
- transform="translate(710.7295,386.5977)"><path
- d="M 0,0 27.629,-28.943"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3349"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3351"
- transform="translate(691.8721,341.4287)"><path
- d="M 0,0 14.878,-14.879"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3353"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3355"
- transform="translate(674.332,315.1172)"><path
- d="M 0,0 13.733,-13.734"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3357"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3359"
- transform="translate(703.7148,276.9629)"><path
- d="M 0,0 15.349,-15.347"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3361"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3363"
- transform="translate(660.7354,265.1221)"><path
- d="M 0,0 32.015,-32.013"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3365"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3367"
- transform="translate(630.041,279.5947)"><path
- d="M 0,0 12.423,-11.987"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3369"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3371"
- transform="translate(630.4756,250.6514)"><path
- d="M 0,0 12.281,-12.28"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3373"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3375"
- transform="translate(633.5039,215.6113)"><path
- d="m 0,0 12.541,-12.541 -0.218,-10.307 17.104,-17.102 0,-8.129"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3377"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3379"
- transform="translate(658.9834,143.6465)"><path
- d="m 0,0 -11.401,11.401 -9.651,9.651 0,9.209 -33.766,33.766"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3381"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3383"
- transform="translate(613.8135,160.751)"><path
- d="m 0,0 -9.648,9.646 0,59.205 -6.797,6.795 0,6.36 9.319,9.319 0,62.163 5.975,5.975 0,11.127 -3.674,3.948 0,12.717 -41.297,41.299"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3385"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3387"
- transform="translate(673.8936,234.4248)"><path
- d="M 0,0 0,17.541"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3389"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3391"
- transform="translate(660.2988,250.2119)"><path
- d="m 0,0 0.437,24.121 -18.199,18.198 0,35.08"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3393"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3395"
- transform="translate(694.5479,267.7881)"><path
- d="M 0,0 22.764,22.767"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3397"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3399"
- transform="translate(708.9824,282.2217)"><path
- d="M 0,0 30.253,0"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3401"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3403"
- transform="translate(754.8018,370.373)"><path
- d="M 0,0 -28.596,0"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3405"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3407"
- transform="translate(743.1826,413.3486)"><path
- d="M 0,0 -27.604,-26.751"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3409"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3411"
- transform="translate(726.5176,386.5977)"><path
- d="m 0,0 -87.708,0 -8.728,-8.728"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3413"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3415"
- transform="translate(716.8711,364.6699)"><path
- d="M 0,0 0,15.474"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3417"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3419"
- transform="translate(697.5752,401.5078)"><path
- d="M 0,0 -14.912,-14.91"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3421"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3423"
- transform="translate(664.6846,401.9463)"><path
- d="M 0,0 -15.35,-15.349"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3425"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3427"
- transform="translate(707.2227,341.4287)"><path
- d="m 0,0 -77.634,0 0,-21.49 5.706,-5.704 0,-10.958 -5.039,-5.041 0.22,-76.277"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3429"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3431"
- transform="translate(693.626,365.9873)"><path
- d="M 0,0 -22.802,-24.559"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3433"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3435"
- transform="translate(661.1748,330.0254)"><path
- d="M 0,0 0,11.403"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3437"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3439"
- transform="translate(689.2422,315.1172)"><path
- d="M 0,0 -34.207,0"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3441"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3443"
- transform="translate(675.6475,371.249)"><path
- d="M 0,0 0,15.349"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3445"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3447"
- transform="translate(674.3311,295.8193)"><path
- d="M 0,0 0.165,-14.015"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3449"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3451"
- transform="translate(690.7969,271.5)"><path
- d="M 0,0 0,-14.271"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3453"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3455"
- transform="translate(717.4639,245.1084)"><path
- d="M 0,0 0,-15.507"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3457"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3459"
- transform="translate(630.418,241.8789)"><path
- d="m 0,0 -16.635,-16.635 0,-8.359"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3461"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3463"
- transform="translate(634.8633,142.3311)"><path
- d="M 0,0 12.719,12.717"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3465"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3467"
- transform="translate(604.165,217.7607)"><path
- d="M 0,0 -10.525,-11.402"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3469"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3471"
- transform="translate(614.25,243.6338)"><path
- d="m 0,0 0,57.889 -7.563,6.575"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3473"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3475"
- transform="translate(621.0469,349.1035)"><path
- d="M 0,0 0,-35.303"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3477"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3479"
- transform="translate(569.8682,406.2383)"><path
- d="m 0,0 -5.389,-5.389 0,-4.603"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3481"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3483"
- transform="translate(549.3467,407.209)"><path
- d="m 0,0 -7.894,7.894 0,5.702 -10.525,10.524 0,10.087"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3485"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3487"
- transform="translate(601.9727,330.9033)"><path
- d="m 0,0 0,5.701 -9.868,9.865 0,5.484 -57.778,57.777 0,4.935 -12.225,12.224 0,12.773"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3489"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3491"
- transform="translate(598.9033,262.0527)"><path
- d="m 0,0 0,24.119 7.784,7.784"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3493"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3495"
- transform="translate(587.9385,230.4775)"><path
- d="m 0,0 0,21.488 -10.524,10.527 0,11.401 -8.77,8.333 0,21.928 11.4,11.401"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3497"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3499"
- transform="translate(582.6768,312.9248)"><path
- d="m 0,0 -19.735,19.73 0,13.161 -31.659,31.658 4.348,4.347 6.615,6.616"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3501"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3503"
- transform="translate(588.3789,271.7012)"><path
- d="m 0,0 0,20.174 8.989,8.989 0,12.061 -14.8,14.797 0,19.847 -30.939,30.936"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3505"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3507"
- transform="translate(545.8408,384.8438)"><path
- d="m 0,0 -31.139,31.135 0,20.174"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3509"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3511"
- transform="translate(552.8926,278.2422)"><path
- d="m 0,0 9.543,9.542 0.506,58.031"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3513"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3515"
- transform="translate(506.749,410.4395)"><path
- d="M 0,0 0,21.988"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3517"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3519"
- transform="translate(508.4404,315.335)"><path
- d="m 0,0 -9.527,10.126 0,26.35"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3521"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3523"
- transform="translate(501.9824,358.8398)"><path
- d="M 0,0 5.929,5.928 5.811,28.614 17.023,39.827 4.859,51.993 l 0,22.898"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3525"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3527"
- transform="translate(526.3965,346.8193)"><path
- d="M 0,0 -18.485,17.948"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3529"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3531"
- transform="translate(508.8135,344.5908)"><path
- d="M 0,0 9.906,9.904"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3533"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3535"
- transform="translate(534.2002,268.7588)"><path
- d="m 0,0 0,7.284 20.297,20.299 0,57.918"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3537"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3539"
- transform="translate(534.251,290.5547)"><path
- d="M 0,0 14.46,0"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3541"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3543"
- transform="translate(542.2686,307.0088)"><path
- d="m 0,0 -12.1,12.1 0,9.237 9.172,9.172 0,31.898"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3545"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3547"
- transform="translate(546.4316,331.4668)"><path
- d="M 0,0 0,30.858"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3549"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3551"
- transform="translate(534.7188,380.9072)"><path
- d="M 0,0 -8.326,-8.324"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3553"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3555"
- transform="translate(492.0098,281.251)"><path
- d="M 0,0 0,30.185 10.279,40.46"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3557"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3559"
- transform="translate(492.0098,304.9287)"><path
- d="M 0,0 27.72,-27.719"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3561"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3563"
- transform="translate(295.5713,181.5918)"><path
- d="M 0,0 0,18.667"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3565"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3567"
- transform="translate(278.3896,191.6787)"><path
- d="M 0,0 17.182,0"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3569"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3571"
- transform="translate(324.7402,172.4229)"><path
- d="M 0,0 0,12.094"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3573"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3575"
- transform="translate(498.6836,222.5635)"><path
- d="m 0,0 0,35.48 11.362,11.363 0,17.486"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3577"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3579"
- transform="translate(510.0459,274.9873)"><path
- d="M 0,0 -0.199,-18.736"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3581"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3583"
- transform="translate(508.0527,234.5225)"><path
- d="M 0,0 -9.369,9.369"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3585"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3587"
- transform="translate(487.3223,249.4727)"><path
- d="M 0,0 11.361,0"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3589"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3591"
- transform="translate(561.2754,143.0254)"><path
- d="M 0,0 10.467,10.467 21.2,-0.267"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3593"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3595"
- transform="translate(571.7422,153.4922)"><path
- d="m 0,0 0,26.81 -9.42,9.418 0,15.299 -39.395,39.396 0,25.591"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3597"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3599"
- transform="translate(555.6943,233.9248)"><path
- d="M 0,0 0,33.887 13.701,47.586"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3601"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3603"
- transform="translate(575.6299,251.666)"><path
- d="M 0,0 6.304,6.305"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3605"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3607"
- transform="translate(571.4434,229.7383)"><path
- d="M 0,0 -15.749,15.747"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3609"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3611"
- transform="translate(549.5156,253.8584)"><path
- d="M 0,0 6.179,6.179"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3613"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3615"
- transform="translate(519.2129,198.8271)"><path
- d="M 0,0 0,26.514 11.397,37.906"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3617"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3619"
- transform="translate(519.2129,209.9912)"><path
- d="M 0,0 11.563,0"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3621"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3623"
- transform="translate(489.5127,208.9941)"><path
- d="M 0,0 17.542,0"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3625"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3627"
- transform="translate(533.9658,185.2734)"><path
- d="M 0,0 11.76,11.76"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3629"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3631"
- transform="translate(556.8916,173.1133)"><path
- d="M 0,0 -11.166,11.166"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3633"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3635"
- transform="translate(536.7568,115.7021)"><path
- d="m 0,0 0,33.093 8.969,8.966"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3637"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3639"
- transform="translate(545.7256,146.2021)"><path
- d="M 0,0 0,75.414"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3641"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3643"
- transform="translate(494.2979,157.3643)"><path
- d="M 0,0 0,38.474 24.915,63.789"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3645"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3647"
- transform="translate(502.3701,181.9844)"><path
- d="M 0,0 -8.072,8.071"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3649"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3651"
- transform="translate(466.5889,82.2158)"><path
- d="M 0,0 15.35,15.349 31.383,-0.684"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3653"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3655"
- transform="translate(481.9385,97.5645)"><path
- d="m 0,0 0,24.318 7.773,7.774"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3657"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3659"
- transform="translate(494.4961,124.8721)"><path
- d="m 0,0 -11.76,11.76 -0.2,24.122 11.762,11.76 17.64,-17.641 0,-25.813"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3661"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3663"
- transform="translate(511.9385,142.0176)"><path
- d="M 0,0 11.583,-11.582"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3665"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3667"
- transform="translate(474.1631,106.5352)"><path
- d="M 0,0 7.775,7.774"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3669"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3671"
- transform="translate(492.1045,104.7393)"><path
- d="M 0,0 -10.166,0"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3673"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3675"
- transform="translate(521.209,165.7383)"><path
- d="M 0,0 -20.136,0"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3677"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3679"
- transform="translate(575.2285,205.209)"><path
- d="M 0,0 -12.906,-12.906"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3681"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3683"
- transform="translate(591.8916,184.9961)"><path
- d="M 0,0 -12.479,-12.48"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3685"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3687"
- transform="translate(585.3945,166.7354)"><path
- d="M 0,0 -13.652,13.566"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3689"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3691"
- transform="translate(628.0508,172.3184)"><path
- d="M 0,0 0,11.47"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3693"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3695"
- transform="translate(637.2217,201.6211)"><path
- d="M 0,0 0,10.271"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3697"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3699"
- transform="translate(657.7529,201.2217)"><path
- d="M 0,0 0,-20.387"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3701"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3703"
- transform="translate(657.7529,192.4512)"><path
- d="M 0,0 15.757,0"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3705"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3715"
- transform="translate(280.7451,404.9951)"><path
- d="M 0,0 C 0,2.207 1.789,3.996 3.996,3.996 6.204,3.996 7.994,2.207 7.994,0 7.994,-2.208 6.204,-3.999 3.996,-3.999 1.789,-3.999 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3717"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3719"
- transform="translate(338.3232,387.7021)"><path
- d="M 0,0 C 0,2.206 1.79,3.996 3.998,3.996 6.205,3.996 7.996,2.206 7.996,0 7.996,-2.208 6.205,-3.998 3.998,-3.998 1.79,-3.998 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3721"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3723"
- transform="translate(384.0732,391.9258)"><path
- d="M 0,0 C 0,2.206 1.789,3.997 3.998,3.997 6.205,3.997 7.994,2.206 7.994,0 7.994,-2.208 6.205,-3.998 3.998,-3.998 1.789,-3.998 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3725"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3727"
- transform="translate(396.8115,404.0264)"><path
- d="M 0,0 C 0,2.21 1.789,3.999 3.998,3.999 6.205,3.999 7.994,2.21 7.994,0 7.994,-2.206 6.205,-3.996 3.998,-3.996 1.789,-3.996 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3729"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3731"
- transform="translate(311.2139,356.9854)"><path
- d="M 0,0 C 0,2.205 1.789,3.996 3.998,3.996 6.205,3.996 7.994,2.205 7.994,0 7.994,-2.21 6.205,-3.999 3.998,-3.999 1.789,-3.999 0,-2.21 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3733"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3735"
- transform="translate(290.4092,361.6758)"><path
- d="M 0,0 C 0,2.208 1.789,3.997 3.996,3.997 6.205,3.997 7.994,2.208 7.994,0 7.994,-2.209 6.205,-3.998 3.996,-3.998 1.789,-3.998 0,-2.209 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3737"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3739"
- transform="translate(272.709,367.3008)"><path
- d="M 0,0 C 0,2.206 1.79,3.995 3.997,3.995 6.204,3.995 7.993,2.206 7.993,0 7.993,-2.209 6.204,-4 3.997,-4 1.79,-4 0,-2.209 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3741"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3743"
- transform="translate(247.9668,404.1123)"><path
- d="M 0,0 C 0,2.21 1.789,4 3.997,4 6.205,4 7.995,2.21 7.995,0 7.995,-2.206 6.205,-3.996 3.997,-3.996 1.789,-3.996 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3745"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3747"
- transform="translate(251.6455,369.1592)"><path
- d="M 0,0 C 0,2.21 1.789,3.999 3.997,3.999 6.205,3.999 7.994,2.21 7.994,0 7.994,-2.207 6.205,-3.996 3.997,-3.996 1.789,-3.996 0,-2.207 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3749"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3751"
- transform="translate(202.1025,416.2373)"><path
- d="M 0,0 C 0,2.209 1.789,3.998 3.998,3.998 6.205,3.998 7.994,2.209 7.994,0 7.994,-2.207 6.205,-3.996 3.998,-3.996 1.789,-3.996 0,-2.207 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3753"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3755"
- transform="translate(218.1689,386.9355)"><path
- d="M 0,0 C 0,2.208 1.789,3.997 3.997,3.997 6.205,3.997 7.994,2.208 7.994,0 7.994,-2.208 6.205,-3.998 3.997,-3.998 1.789,-3.998 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3757"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3759"
- transform="translate(189.0459,369.9004)"><path
- d="M 0,0 C 0,2.206 1.789,3.997 3.998,3.997 6.205,3.997 7.994,2.206 7.994,0 7.994,-2.21 6.205,-4 3.998,-4 1.789,-4 0,-2.21 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3761"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3763"
- transform="translate(206.9775,355.3125)"><path
- d="M 0,0 C 0,2.207 1.789,3.996 3.997,3.996 6.205,3.996 7.994,2.207 7.994,0 7.994,-2.206 6.205,-3.997 3.997,-3.997 1.789,-3.997 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3765"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3767"
- transform="translate(231.7021,360.6738)"><path
- d="M 0,0 C 0,2.207 1.789,3.996 3.996,3.996 6.205,3.996 7.994,2.207 7.994,0 7.994,-2.209 6.205,-3.999 3.996,-3.999 1.789,-3.999 0,-2.209 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3769"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3771"
- transform="translate(237.3525,340.6777)"><path
- d="M 0,0 C 0,2.21 1.789,3.999 3.996,3.999 6.205,3.999 7.994,2.21 7.994,0 7.994,-2.206 6.205,-3.996 3.996,-3.996 1.789,-3.996 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3773"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3775"
- transform="translate(239.6729,323.8027)"><path
- d="M 0,0 C 0,2.207 1.79,3.996 3.998,3.996 6.206,3.996 7.996,2.207 7.996,0 7.996,-2.206 6.206,-3.997 3.998,-3.997 1.79,-3.997 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3777"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3779"
- transform="translate(255.332,315.1172)"><path
- d="M 0,0 C 0,2.206 1.79,3.996 3.997,3.996 6.205,3.996 7.995,2.206 7.995,0 7.995,-2.208 6.205,-3.999 3.997,-3.999 1.79,-3.999 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3781"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3783"
- transform="translate(257.3662,298.9141)"><path
- d="M 0,0 C 0,2.21 1.79,3.999 3.998,3.999 6.205,3.999 7.995,2.21 7.995,0 7.995,-2.206 6.205,-3.997 3.998,-3.997 1.79,-3.997 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3785"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3787"
- transform="translate(287.3965,326.0293)"><path
- d="M 0,0 C 0,2.207 1.79,3.996 3.997,3.996 6.204,3.996 7.993,2.207 7.993,0 7.993,-2.208 6.204,-3.997 3.997,-3.997 1.79,-3.997 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3789"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3791"
- transform="translate(228.54,293.4766)"><path
- d="M 0,0 C 0,2.21 1.789,3.999 3.996,3.999 6.205,3.999 7.994,2.21 7.994,0 7.994,-2.206 6.205,-3.997 3.996,-3.997 1.789,-3.997 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3793"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3795"
- transform="translate(273.6484,277.3936)"><path
- d="M 0,0 C 0,2.208 1.79,3.997 3.998,3.997 6.206,3.997 7.995,2.208 7.995,0 7.995,-2.208 6.206,-3.998 3.998,-3.998 1.79,-3.998 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3797"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3799"
- transform="translate(298.4092,301.71)"><path
- d="M 0,0 11.622,11.621"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3801"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3803"
- transform="translate(291.292,299.2148)"><path
- d="M 0,0 C 0,2.206 1.789,3.996 3.996,3.996 6.204,3.996 7.994,2.206 7.994,0 7.994,-2.207 6.204,-3.998 3.996,-3.998 1.789,-3.998 0,-2.207 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3805"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3807"
- transform="translate(328.001,309.707)"><path
- d="M 0,0 C 0,2.206 1.789,3.997 3.998,3.997 6.204,3.997 7.994,2.206 7.994,0 7.994,-2.208 6.204,-3.998 3.998,-3.998 1.789,-3.998 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3809"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3811"
- transform="translate(346.5996,326.9063)"><path
- d="M 0,0 C 0,2.206 1.79,3.997 3.997,3.997 6.205,3.997 7.995,2.206 7.995,0 7.995,-2.207 6.205,-3.996 3.997,-3.996 1.79,-3.996 0,-2.207 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3813"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3815"
- transform="translate(205.3389,282.2217)"><path
- d="M 0,0 C 0,2.208 1.789,3.997 3.998,3.997 6.205,3.997 7.994,2.208 7.994,0 7.994,-2.206 6.205,-3.998 3.998,-3.998 1.789,-3.998 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3817"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3819"
- transform="translate(226.5693,258.9131)"><path
- d="M 0,0 C 0,2.206 1.789,3.994 3.997,3.994 6.205,3.994 7.994,2.206 7.994,0 7.994,-2.21 6.205,-3.999 3.997,-3.999 1.789,-3.999 0,-2.21 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3821"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3823"
- transform="translate(216.125,230.3184)"><path
- d="M 0,0 C 0,2.207 1.79,3.998 3.997,3.998 6.206,3.998 7.995,2.207 7.995,0 7.995,-2.208 6.206,-3.997 3.997,-3.997 1.79,-3.997 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3825"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3827"
- transform="translate(231.1074,225.6016)"><path
- d="M 0,0 C 0,2.209 1.79,4 3.997,4 6.204,4 7.993,2.209 7.993,0 7.993,-2.206 6.204,-3.995 3.997,-3.995 1.79,-3.995 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3829"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3831"
- transform="translate(252.6787,230.6465)"><path
- d="M 0,0 C 0,2.206 1.789,3.997 3.997,3.997 6.205,3.997 7.994,2.206 7.994,0 7.994,-2.207 6.205,-3.996 3.997,-3.996 1.789,-3.996 0,-2.207 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3833"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3835"
- transform="translate(274.6787,230.4268)"><path
- d="M 0,0 C 0,2.208 1.789,3.998 3.996,3.998 6.205,3.998 7.995,2.208 7.995,0 7.995,-2.208 6.205,-3.997 3.996,-3.997 1.789,-3.997 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3837"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3839"
- transform="translate(288.2734,246.2148)"><path
- d="M 0,0 C 0,2.208 1.79,3.997 3.997,3.997 6.205,3.997 7.993,2.208 7.993,0 7.993,-2.207 6.205,-3.996 3.997,-3.996 1.79,-3.996 0,-2.207 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3841"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3843"
- transform="translate(258.2168,253.2324)"><path
- d="M 0,0 C 0,2.206 1.79,3.996 3.997,3.996 6.206,3.996 7.995,2.206 7.995,0 7.995,-2.208 6.206,-3.998 3.997,-3.998 1.79,-3.998 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3845"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3847"
- transform="translate(302.8809,264.7256)"><path
- d="M 0,0 C 0,2.21 1.789,3.999 3.997,3.999 6.205,3.999 7.995,2.21 7.995,0 7.995,-2.207 6.205,-3.996 3.997,-3.996 1.789,-3.996 0,-2.207 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3849"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3851"
- transform="translate(326.6416,279.0107)"><path
- d="M 0,0 C 0,1.052 0.406,2.009 1.072,2.723 1.801,3.506 2.843,3.996 3.997,3.996 6.205,3.996 7.994,2.206 7.994,0 7.994,-2.21 6.205,-3.998 3.997,-3.998 1.789,-3.998 0,-2.21 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3853"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3855"
- transform="translate(322.2822,287.166)"><path
- d="M 0,0 5.432,-5.433"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3857"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3859"
- transform="translate(303.0313,235.5068)"><path
- d="M 0,0 C 0,2.208 1.79,3.997 3.997,3.997 6.205,3.997 7.995,2.208 7.995,0 7.995,-2.207 6.205,-3.998 3.997,-3.998 1.79,-3.998 0,-2.207 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3861"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3863"
- transform="translate(318.0215,217.335)"><path
- d="M 0,0 C 0,2.206 1.79,3.998 3.997,3.998 6.205,3.998 7.994,2.206 7.994,0 7.994,-2.208 6.205,-3.999 3.997,-3.999 1.79,-3.999 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3865"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3867"
- transform="translate(316.1465,212.6924)"><path
- d="M 0,0 -0.081,-11.799"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3869"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3871"
- transform="translate(291.5742,204.2588)"><path
- d="M 0,0 C 0,2.204 1.79,3.995 3.997,3.995 6.204,3.995 7.993,2.204 7.993,0 7.993,-2.21 6.204,-4 3.997,-4 1.79,-4 0,-2.21 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3873"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3875"
- transform="translate(270.4248,192.1445)"><path
- d="M 0,0 C 0,2.204 1.789,3.995 3.997,3.995 6.205,3.995 7.994,2.204 7.994,0 7.994,-2.21 6.205,-4 3.997,-4 1.789,-4 0,-2.21 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3877"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3879"
- transform="translate(311.7334,197.2285)"><path
- d="M 0,0 C 0,2.21 1.79,4 3.998,4 6.206,4 7.995,2.21 7.995,0 7.995,-2.206 6.206,-3.995 3.998,-3.995 1.79,-3.995 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3881"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3883"
- transform="translate(286.0869,163.1465)"><path
- d="M 0,0 C 0,2.206 1.789,3.996 3.996,3.996 6.205,3.996 7.994,2.206 7.994,0 7.994,-2.21 6.205,-3.999 3.996,-3.999 1.789,-3.999 0,-2.21 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3885"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3887"
- transform="translate(334.7891,212.8848)"><path
- d="M 0,0 C 0,2.208 1.789,4 3.997,4 6.204,4 7.993,2.208 7.993,0 7.993,-2.206 6.204,-3.996 3.997,-3.996 1.789,-3.996 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3889"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3891"
- transform="translate(334.3203,239.6377)"><path
- d="M 0,0 C 0,2.206 1.79,3.996 3.997,3.996 6.206,3.996 7.995,2.206 7.995,0 7.995,-2.208 6.206,-3.998 3.997,-3.998 1.79,-3.998 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3893"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3895"
- transform="translate(360.6328,226.4795)"><path
- d="M 0,0 C 0,2.209 1.789,3.998 3.997,3.998 6.204,3.998 7.995,2.209 7.995,0 7.995,-2.206 6.204,-3.995 3.997,-3.995 1.789,-3.995 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3897"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3899"
- transform="translate(357.8564,203.6387)"><path
- d="M 0,0 C 0,2.208 1.789,3.998 3.996,3.998 6.205,3.998 7.994,2.208 7.994,0 7.994,-2.206 6.205,-3.996 3.996,-3.996 1.789,-3.996 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3901"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3903"
- transform="translate(320.7432,168.4258)"><path
- d="M 0,0 C 0,2.206 1.789,3.997 3.997,3.997 6.205,3.997 7.994,2.206 7.994,0 7.994,-2.209 6.205,-3.998 3.997,-3.998 1.789,-3.998 0,-2.209 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3905"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3907"
- transform="translate(332.1807,157.6982)"><path
- d="M 0,0 C 0,2.207 1.789,3.996 3.997,3.996 6.205,3.996 7.994,2.207 7.994,0 7.994,-2.208 6.205,-3.997 3.997,-3.997 1.789,-3.997 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3909"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3911"
- transform="translate(354.9463,175.2764)"><path
- d="M 0,0 C 0,2.208 1.79,3.997 3.998,3.997 6.205,3.997 7.994,2.208 7.994,0 7.994,-2.207 6.205,-3.998 3.998,-3.998 1.79,-3.998 0,-2.207 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3913"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3915"
- transform="translate(316.1328,139.1592)"><path
- d="M 0,0 C 0,2.206 1.79,3.996 3.997,3.996 6.206,3.996 7.995,2.206 7.995,0 7.995,-2.21 6.206,-3.999 3.997,-3.999 1.79,-3.999 0,-2.21 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3917"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3919"
- transform="translate(286.3896,141.2539)"><path
- d="M 0,0 C 0,2.207 1.789,3.996 3.997,3.996 6.204,3.996 7.994,2.207 7.994,0 7.994,-2.208 6.204,-3.999 3.997,-3.999 1.789,-3.999 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3921"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3923"
- transform="translate(443.7686,155.5518)"><path
- d="M 0,0 C 0,2.206 1.79,3.995 3.997,3.995 6.205,3.995 7.994,2.206 7.994,0 7.994,-2.209 6.205,-4 3.997,-4 1.79,-4 0,-2.209 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3925"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3927"
- transform="translate(434.5576,138.4824)"><path
- d="M 0,0 C 0,2.206 1.789,3.997 3.996,3.997 6.204,3.997 7.994,2.206 7.994,0 7.994,-2.21 6.204,-3.998 3.996,-3.998 1.789,-3.998 0,-2.21 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3929"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3931"
- transform="translate(422.2539,165.9961)"><path
- d="M 0,0 C 0,2.208 1.79,3.998 3.997,3.998 6.205,3.998 7.995,2.208 7.995,0 7.995,-2.208 6.205,-3.998 3.997,-3.998 1.79,-3.998 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3933"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3935"
- transform="translate(412.7725,113.2285)"><path
- d="M 0,0 C 0,2.209 1.789,3.998 3.998,3.998 6.205,3.998 7.994,2.209 7.994,0 7.994,-2.204 6.205,-3.995 3.998,-3.995 1.789,-3.995 0,-2.204 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3937"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3939"
- transform="translate(374.6924,116.9375)"><path
- d="M 0,0 C 0,2.207 1.789,3.998 3.997,3.998 6.205,3.998 7.994,2.207 7.994,0 7.994,-2.208 6.205,-3.997 3.997,-3.997 1.789,-3.997 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3941"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3943"
- transform="translate(371.5713,139.1035)"><path
- d="M 0,0 C 0,2.206 1.791,3.996 3.998,3.996 6.205,3.996 7.995,2.206 7.995,0 7.995,-2.208 6.205,-3.998 3.998,-3.998 1.791,-3.998 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3945"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3947"
- transform="translate(405.8311,180.916)"><path
- d="M 0,0 C 0,2.207 1.789,3.998 3.996,3.998 6.205,3.998 7.994,2.207 7.994,0 7.994,-2.208 6.205,-3.997 3.996,-3.997 1.789,-3.997 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3949"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3951"
- transform="translate(387.2393,159.5996)"><path
- d="M 0,0 C 0,2.206 1.789,3.996 3.996,3.996 6.204,3.996 7.994,2.206 7.994,0 7.994,-2.21 6.204,-3.999 3.996,-3.999 1.789,-3.999 0,-2.21 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3953"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3955"
- transform="translate(405.8311,180.916)"><path
- d="M 0,0 -16.164,-0.118"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3957"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3959"
- transform="translate(403.4482,200.4463)"><path
- d="M 0,0 -13.719,-13.718"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3961"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3963"
- transform="translate(459.8926,79.3896)"><path
- d="M 0,0 C 0,2.21 1.789,3.999 3.997,3.999 6.205,3.999 7.994,2.21 7.994,0 7.994,-2.207 6.205,-3.996 3.997,-3.996 1.789,-3.996 0,-2.207 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3965"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3967"
- transform="translate(467.833,103.8262)"><path
- d="M 0,0 C 0,2.208 1.789,3.997 3.996,3.997 6.205,3.997 7.994,2.208 7.994,0 7.994,-2.207 6.205,-3.996 3.996,-3.996 1.789,-3.996 0,-2.207 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3969"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3971"
- transform="translate(466.8994,141.0146)"><path
- d="M 0,0 C 0,2.206 1.789,3.996 3.998,3.996 6.205,3.996 7.994,2.206 7.994,0 7.994,-2.208 6.205,-3.998 3.998,-3.998 1.789,-3.998 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3973"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3975"
- transform="translate(372.7881,90.5059)"><path
- d="M 0,0 C 0,2.208 1.79,3.998 3.998,3.998 6.207,3.998 7.996,2.208 7.996,0 7.996,-2.208 6.207,-3.997 3.998,-3.997 1.79,-3.997 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3977"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3979"
- transform="translate(391.3311,88.7793)"><path
- d="M 0,0 C 0,2.206 1.789,3.996 3.997,3.996 6.205,3.996 7.994,2.206 7.994,0 7.994,-2.208 6.205,-3.998 3.997,-3.998 1.789,-3.998 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3981"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3983"
- transform="translate(473.8965,143.6494)"><path
- d="M 0,0 8.71,8.71"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3985"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3987"
- transform="translate(554.5029,140.1523)"><path
- d="M 0,0 C 0,2.209 1.791,3.999 3.997,3.999 6.205,3.999 7.995,2.209 7.995,0 7.995,-2.207 6.205,-3.998 3.997,-3.998 1.791,-3.998 0,-2.207 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3989"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3991"
- transform="translate(541.7285,142.2061)"><path
- d="M 0,0 C 0,2.207 1.791,3.996 3.997,3.996 6.205,3.996 7.995,2.207 7.995,0 7.995,-2.208 6.205,-3.999 3.997,-3.999 1.791,-3.999 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3993"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3995"
- transform="translate(533.0576,111.7197)"><path
- d="M 0,0 C 0,2.21 1.79,3.999 3.996,3.999 6.206,3.999 7.993,2.21 7.993,0 7.993,-2.206 6.206,-3.996 3.996,-3.996 1.79,-3.996 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path3997"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g3999"
- transform="translate(521.209,165.7383)"><path
- d="M 0,0 C 0,2.208 1.789,3.997 3.997,3.997 6.205,3.997 7.995,2.208 7.995,0 7.995,-2.209 6.205,-3.998 3.997,-3.998 1.789,-3.998 0,-2.209 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4001"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4003"
- transform="translate(501.5654,178.7197)"><path
- d="M 0,0 C 0,2.208 1.789,3.998 3.995,3.998 6.203,3.998 7.993,2.208 7.993,0 7.993,-2.208 6.203,-3.999 3.995,-3.999 1.789,-3.999 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4005"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4007"
- transform="translate(496.8564,78.7686)"><path
- d="M 0,0 C 0,2.206 1.79,3.996 3.998,3.996 6.206,3.996 7.995,2.206 7.995,0 7.995,-2.208 6.206,-4 3.998,-4 1.79,-4 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4009"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4011"
- transform="translate(492.1045,104.7393)"><path
- d="M 0,0 C 0,2.21 1.791,3.999 3.997,3.999 6.206,3.999 7.995,2.21 7.995,0 7.995,-2.207 6.206,-3.996 3.997,-3.996 1.791,-3.996 0,-2.207 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4013"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4015"
- transform="translate(507.9414,125.5039)"><path
- d="M 0,0 C 0,2.208 1.789,3.997 3.997,3.997 6.205,3.997 7.993,2.208 7.993,0 7.993,-2.207 6.205,-3.996 3.997,-3.996 1.789,-3.996 0,-2.207 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4017"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4019"
- transform="translate(493.1611,121.8975)"><path
- d="M 0,0 C 0,2.208 1.791,3.998 3.998,3.998 6.207,3.998 7.995,2.208 7.995,0 7.995,-2.206 6.207,-3.996 3.998,-3.996 1.791,-3.996 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4021"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4023"
- transform="translate(490.2998,153.3682)"><path
- d="M 0,0 C 0,2.209 1.789,3.996 3.998,3.996 6.206,3.996 7.995,2.209 7.995,0 7.995,-2.208 6.206,-3.997 3.998,-3.997 1.789,-3.997 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4025"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4027"
- transform="translate(463.8633,179.8105)"><path
- d="M 0,0 C 0,2.208 1.79,3.997 3.998,3.997 6.206,3.997 7.995,2.208 7.995,0 7.995,-2.207 6.206,-3.996 3.998,-3.996 1.79,-3.996 0,-2.207 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4029"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4031"
- transform="translate(522.0918,127.374)"><path
- d="M 0,0 C 0,2.206 1.789,3.996 3.995,3.996 6.205,3.996 7.993,2.206 7.993,0 7.993,-2.208 6.205,-3.997 3.995,-3.997 1.789,-3.997 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4033"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4035"
- transform="translate(584.4375,164.1455)"><path
- d="M 0,0 C 0,2.207 1.789,3.996 3.997,3.996 6.205,3.996 7.995,2.207 7.995,0 7.995,-2.206 6.205,-3.997 3.997,-3.997 1.789,-3.997 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4037"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4039"
- transform="translate(555.7773,170.3516)"><path
- d="M 0,0 C 0,2.206 1.789,3.998 3.999,3.998 6.205,3.998 7.995,2.206 7.995,0 7.995,-2.208 6.205,-3.998 3.999,-3.998 1.789,-3.998 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4041"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4043"
- transform="translate(581.5928,140.2549)"><path
- d="M 0,0 C 0,2.206 1.789,3.996 3.996,3.996 6.206,3.996 7.995,2.206 7.995,0 7.995,-2.208 6.206,-3.999 3.996,-3.999 1.789,-3.999 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4045"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4047"
- transform="translate(436.9297,290.792)"><path
- d="M 0,0 C 0,1.054 0.406,2.01 1.072,2.726 1.802,3.507 2.843,3.998 3.997,3.998 6.204,3.998 7.994,2.207 7.994,0 7.994,-2.208 6.204,-3.997 3.997,-3.997 1.789,-3.997 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4049"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4051"
- transform="translate(437.2666,312.5498)"><path
- d="M 0,0 C 0,1.055 0.407,2.011 1.073,2.725 1.803,3.508 2.843,3.997 3.998,3.997 6.205,3.997 7.994,2.206 7.994,0 7.994,-2.207 6.205,-3.996 3.998,-3.996 1.79,-3.996 0,-2.207 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4053"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4055"
- transform="translate(422.0098,289.5752)"><path
- d="M 0,0 C 0,1.054 0.407,2.009 1.073,2.723 1.804,3.507 2.844,3.998 3.998,3.998 6.206,3.998 7.995,2.206 7.995,0 7.995,-2.208 6.206,-3.997 3.998,-3.997 1.79,-3.997 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4057"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4059"
- transform="translate(400.9951,249.4023)"><path
- d="M 0,0 C 0,1.053 0.407,2.01 1.072,2.726 1.802,3.508 2.842,3.997 3.996,3.997 6.205,3.997 7.994,2.208 7.994,0 7.994,-2.207 6.205,-3.996 3.996,-3.996 1.789,-3.996 0,-2.207 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4061"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4063"
- transform="translate(414.3701,264.7607)"><path
- d="m 0,0 c 0,1.054 0.407,2.011 1.073,2.725 0.73,0.782 1.77,1.273 2.925,1.273 2.207,0 3.996,-1.79 3.996,-3.998 0,-2.208 -1.789,-3.997 -3.996,-3.997 C 1.79,-3.997 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4065"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4067"
- transform="translate(423.5713,309.3506)"><path
- d="M 0,0 C 0,1.052 0.408,2.009 1.072,2.723 1.803,3.506 2.843,3.996 3.997,3.996 6.206,3.996 7.995,2.206 7.995,0 7.995,-2.206 6.206,-3.998 3.997,-3.998 1.79,-3.998 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4069"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4071"
- transform="translate(403.1826,304.5156)"><path
- d="M 0,0 C 0,1.052 0.406,2.011 1.071,2.725 1.801,3.506 2.842,3.997 3.996,3.997 6.205,3.997 7.994,2.206 7.994,0 7.994,-2.208 6.205,-3.998 3.996,-3.998 1.789,-3.998 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4073"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4075"
- transform="translate(401.7383,327.0674)"><path
- d="M 0,0 C 0,1.052 0.406,2.01 1.072,2.726 1.802,3.507 2.843,3.998 3.997,3.998 6.204,3.998 7.994,2.207 7.994,0 7.994,-2.208 6.204,-3.997 3.997,-3.997 1.79,-3.997 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4077"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4079"
- transform="translate(399.3789,276.8701)"><path
- d="m 0,0 c 0,1.052 0.406,2.011 1.073,2.725 0.729,0.781 1.77,1.273 2.924,1.273 2.208,0 3.998,-1.79 3.998,-3.998 0,-2.208 -1.79,-3.999 -3.998,-3.999 C 1.789,-3.999 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4081"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4083"
- transform="translate(360.1943,267.7031)"><path
- d="m 0,0 c 0,1.054 0.406,2.011 1.072,2.725 0.73,0.783 1.77,1.273 2.924,1.273 2.209,0 3.998,-1.79 3.998,-3.998 0,-2.206 -1.789,-3.997 -3.998,-3.997 C 1.789,-3.997 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4085"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4087"
- transform="translate(349.6689,258.0537)"><path
- d="M 0,0 C 0,1.055 0.408,2.014 1.072,2.727 1.803,3.51 2.843,3.999 3.998,3.999 6.205,3.999 7.995,2.21 7.995,0 7.995,-2.205 6.205,-3.996 3.998,-3.996 1.79,-3.996 0,-2.205 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4089"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4091"
- transform="translate(362.8799,310.3047)"><path
- d="m 0,0 c 0,1.052 0.406,2.01 1.072,2.725 0.73,0.781 1.77,1.27 2.925,1.27 2.208,0 3.998,-1.789 3.998,-3.995 0,-2.209 -1.79,-3.998 -3.998,-3.998 C 1.789,-3.998 0,-2.209 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4093"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4095"
- transform="translate(440.9268,286.7949)"><path
- d="M 0,0 0,-10.749"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4097"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4099"
- transform="translate(406.1182,221.9893)"><path
- d="M 0,0 13.293,13.293"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4101"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4103"
- transform="translate(494.6855,218.5654)"><path
- d="M 0,0 C 0,2.207 1.79,3.998 3.998,3.998 6.206,3.998 7.995,2.207 7.995,0 7.995,-2.206 6.206,-3.995 3.998,-3.995 1.79,-3.995 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4105"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4107"
- transform="translate(479.3271,249.4727)"><path
- d="M 0,0 C 0,2.208 1.787,3.998 3.997,3.998 6.205,3.998 7.995,2.208 7.995,0 7.995,-2.206 6.205,-3.996 3.997,-3.996 1.787,-3.996 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4109"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4111"
- transform="translate(482.4785,226.8984)"><path
- d="M 0,0 C 0,2.206 1.789,3.998 3.997,3.998 6.206,3.998 7.995,2.206 7.995,0 7.995,-2.208 6.206,-3.999 3.997,-3.999 1.789,-3.999 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4113"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4115"
- transform="translate(467.4561,224.1719)"><path
- d="M 0,0 C 0,2.207 1.789,3.996 3.996,3.996 6.204,3.996 7.994,2.207 7.994,0 7.994,-2.208 6.204,-3.997 3.996,-3.997 1.789,-3.997 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4117"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4119"
- transform="translate(458.1582,238.248)"><path
- d="M 0,0 C 0,2.208 1.789,3.998 3.998,3.998 6.205,3.998 7.994,2.208 7.994,0 7.994,-2.206 6.205,-3.996 3.998,-3.996 1.789,-3.996 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4121"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4123"
- transform="translate(450.6016,218.2637)"><path
- d="M 0,0 C 0,2.206 1.789,3.997 3.997,3.997 6.204,3.997 7.994,2.206 7.994,0 7.994,-2.208 6.204,-3.998 3.997,-3.998 1.789,-3.998 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4125"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4127"
- transform="translate(439.9971,235.9199)"><path
- d="M 0,0 C 0,2.207 1.789,3.998 3.997,3.998 6.206,3.998 7.995,2.207 7.995,0 7.995,-2.21 6.206,-3.999 3.997,-3.999 1.789,-3.999 0,-2.21 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4129"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4131"
- transform="translate(415.4131,197.3691)"><path
- d="M 0,0 C 0,2.208 1.789,3.997 3.998,3.997 6.207,3.997 7.995,2.208 7.995,0 7.995,-2.206 6.207,-3.998 3.998,-3.998 1.789,-3.998 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4133"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4135"
- transform="translate(402.7939,202.6377)"><path
- d="M 0,0 C 0,2.207 1.789,3.998 3.997,3.998 6.205,3.998 7.994,2.207 7.994,0 7.994,-2.208 6.205,-3.999 3.997,-3.999 1.789,-3.999 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4137"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4139"
- transform="translate(398.9463,219.5635)"><path
- d="M 0,0 C 0,2.208 1.789,3.997 3.998,3.997 6.207,3.997 7.996,2.208 7.996,0 7.996,-2.206 6.207,-3.996 3.998,-3.996 1.789,-3.996 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4141"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4143"
- transform="translate(574.0801,207.582)"><path
- d="M 0,0 C 0,2.207 1.79,3.996 3.996,3.996 6.206,3.996 7.994,2.207 7.994,0 7.994,-2.208 6.206,-3.997 3.996,-3.997 1.79,-3.997 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4145"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4147"
- transform="translate(587.1807,203.21)"><path
- d="M 0,0 C 0,2.205 1.789,3.996 3.997,3.996 6.206,3.996 7.995,2.205 7.995,0 7.995,-2.21 6.206,-3.999 3.997,-3.999 1.789,-3.999 0,-2.21 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4149"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4151"
- transform="translate(591.043,187.4512)"><path
- d="M 0,0 C 0,2.208 1.788,3.997 3.996,3.997 6.204,3.997 7.993,2.208 7.993,0 7.993,-2.205 6.204,-3.996 3.996,-3.996 1.788,-3.996 0,-2.205 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4153"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4155"
- transform="translate(612.29,158.2207)"><path
- d="M 0,0 C 0,2.206 1.788,3.997 3.998,3.997 6.206,3.997 7.995,2.206 7.995,0 7.995,-2.208 6.206,-4 3.998,-4 1.788,-4 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4157"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4159"
- transform="translate(623.6025,168.7734)"><path
- d="M 0,0 C 0,2.206 1.788,3.995 3.998,3.995 6.206,3.995 7.995,2.206 7.995,0 7.995,-2.208 6.206,-3.998 3.998,-3.998 1.788,-3.998 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4161"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4163"
- transform="translate(627.9824,139.5664)"><path
- d="M 0,0 C 0,2.21 1.789,3.999 3.995,3.999 6.205,3.999 7.993,2.21 7.993,0 7.993,-2.207 6.205,-3.996 3.995,-3.996 1.789,-3.996 0,-2.207 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4165"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4167"
- transform="translate(657.1943,140.9199)"><path
- d="M 0,0 C 0,2.206 1.789,3.998 3.999,3.998 6.204,3.998 7.993,2.206 7.993,0 7.993,-2.206 6.204,-3.996 3.999,-3.996 1.789,-3.996 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4169"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4171"
- transform="translate(659.2793,164.1543)"><path
- d="M 0,0 C 0,2.208 1.787,3.998 3.995,3.998 6.204,3.998 7.993,2.208 7.993,0 7.993,-2.206 6.204,-3.998 3.995,-3.998 1.787,-3.998 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4173"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4175"
- transform="translate(673.4834,192.0059)"><path
- d="M 0,0 C 0,2.206 1.789,3.996 3.999,3.996 6.205,3.996 7.997,2.206 7.997,0 7.997,-2.208 6.205,-3.998 3.999,-3.998 1.789,-3.998 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4177"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4179"
- transform="translate(654.209,204.7012)"><path
- d="M 0,0 C 0,2.208 1.789,3.997 3.996,3.997 6.205,3.997 7.994,2.208 7.994,0 7.994,-2.209 6.205,-3.998 3.996,-3.998 1.789,-3.998 0,-2.209 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4181"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4183"
- transform="translate(632.7344,197.6221)"><path
- d="m 0,0 c 0,2.208 1.787,3.999 3.997,3.999 2.21,0 4,-1.791 4,-3.999 0,-2.206 -1.79,-3.996 -4,-3.996 C 1.787,-3.996 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4185"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4187"
- transform="translate(609.7871,212.8848)"><path
- d="M 0,0 C 0,2.208 1.787,4 3.996,4 6.204,4 7.993,2.208 7.993,0 7.993,-2.206 6.204,-3.996 3.996,-3.996 1.787,-3.996 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4189"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4191"
- transform="translate(626.2832,217.9697)"><path
- d="M 0,0 C 0,2.21 1.788,3.999 4,3.999 6.204,3.999 7.996,2.21 7.996,0 7.996,-2.206 6.204,-3.997 4,-3.997 1.788,-3.997 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4193"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4195"
- transform="translate(669.8955,230.4268)"><path
- d="M 0,0 C 0,2.208 1.788,3.998 3.998,3.998 6.204,3.998 7.994,2.208 7.994,0 7.994,-2.208 6.204,-3.997 3.998,-3.997 1.788,-3.997 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4197"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4199"
- transform="translate(691.3037,230.4268)"><path
- d="M 0,0 C 0,2.208 1.789,3.998 3.996,3.998 6.205,3.998 7.995,2.208 7.995,0 7.995,-2.208 6.205,-3.997 3.996,-3.997 1.789,-3.997 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4201"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4203"
- transform="translate(713.584,226.3818)"><path
- d="M 0,0 C 0,2.207 1.788,3.998 3.996,3.998 6.204,3.998 7.993,2.207 7.993,0 7.993,-2.21 6.204,-3.999 3.996,-3.999 1.788,-3.999 0,-2.21 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4205"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4207"
- transform="translate(728.3965,230.2646)"><path
- d="M 0,0 C 0,2.206 1.791,3.998 3.997,3.998 6.207,3.998 7.995,2.206 7.995,0 7.995,-2.208 6.207,-3.997 3.997,-3.997 1.791,-3.997 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4209"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4211"
- transform="translate(584.2021,226.4951)"><path
- d="m 0,0 c 0,2.206 1.79,3.996 3.996,3.996 2.208,0 4,-1.79 4,-3.996 0,-2.208 -1.792,-3.999 -4,-3.999 C 1.79,-3.999 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4213"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4215"
- transform="translate(569.3311,248.5557)"><path
- d="M 0,0 C 0,2.207 1.788,3.996 3.998,3.996 6.204,3.996 7.994,2.207 7.994,0 7.994,-2.206 6.204,-3.997 3.998,-3.997 1.788,-3.997 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4217"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4219"
- transform="translate(569.8496,227.3203)"><path
- d="M 0,0 C 0,2.207 1.788,3.998 3.996,3.998 6.202,3.998 7.993,2.207 7.993,0 7.993,-2.208 6.202,-3.997 3.996,-3.997 1.788,-3.997 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4221"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4223"
- transform="translate(527.0576,182.5352)"><path
- d="M 0,0 C 0,2.208 1.792,3.999 3.998,3.999 6.208,3.999 7.995,2.208 7.995,0 7.995,-2.208 6.208,-3.998 3.998,-3.998 1.792,-3.998 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4225"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4227"
- transform="translate(515.2168,194.832)"><path
- d="M 0,0 C 0,2.206 1.79,3.995 3.996,3.995 6.206,3.995 7.995,2.206 7.995,0 7.995,-2.208 6.206,-3.998 3.996,-3.998 1.79,-3.998 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4229"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4231"
- transform="translate(530.7754,209.9912)"><path
- d="M 0,0 C 0,2.207 1.789,3.996 3.999,3.996 6.206,3.996 7.997,2.207 7.997,0 7.997,-2.206 6.206,-3.997 3.999,-3.997 1.789,-3.997 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4233"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4235"
- transform="translate(551.6973,229.9268)"><path
- d="M 0,0 C 0,2.208 1.789,3.998 3.997,3.998 6.205,3.998 7.995,2.208 7.995,0 7.995,-2.206 6.205,-3.997 3.997,-3.997 1.789,-3.997 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4237"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4239"
- transform="translate(542.6074,251.124)"><path
- d="M 0,0 C 0,2.206 1.79,3.996 3.998,3.996 6.208,3.996 7.995,2.206 7.995,0 7.995,-2.208 6.208,-3.998 3.998,-3.998 1.79,-3.998 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4241"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4243"
- transform="translate(530.2031,264.7607)"><path
- d="M 0,0 C 0,2.208 1.789,3.998 3.997,3.998 6.206,3.998 7.995,2.208 7.995,0 7.995,-2.208 6.206,-3.997 3.997,-3.997 1.789,-3.997 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4245"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4247"
- transform="translate(505.8496,252.2529)"><path
- d="M 0,0 C 0,2.208 1.789,3.998 3.997,3.998 6.204,3.998 7.995,2.208 7.995,0 7.995,-2.206 6.204,-3.997 3.997,-3.997 1.789,-3.997 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4249"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4251"
- transform="translate(506.459,231.333)"><path
- d="M 0,0 C 0,2.207 1.788,3.998 3.997,3.998 6.204,3.998 7.995,2.207 7.995,0 7.995,-2.208 6.204,-3.997 3.997,-3.997 1.788,-3.997 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4253"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4255"
- transform="translate(478.7373,266.6787)"><path
- d="M 0,0 C 0,2.208 1.79,3.997 3.998,3.997 6.206,3.997 7.995,2.208 7.995,0 7.995,-2.207 6.206,-3.996 3.998,-3.996 1.79,-3.996 0,-2.207 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4257"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4259"
- transform="translate(481.1279,208.6025)"><path
- d="M 0,0 C 0,2.209 1.788,3.999 3.996,3.999 6.206,3.999 7.995,2.209 7.995,0 7.995,-2.207 6.206,-3.996 3.996,-3.996 1.788,-3.996 0,-2.207 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4261"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4263"
- transform="translate(482.2891,336.0586)"><path
- d="M 0,0 C 0,1.054 0.405,2.013 1.072,2.726 1.8,3.509 2.842,3.998 3.996,3.998 6.204,3.998 7.994,2.209 7.994,0 7.994,-2.206 6.204,-3.997 3.996,-3.997 1.79,-3.997 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4265"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4267"
- transform="translate(495.0381,377.9531)"><path
- d="m 0,0 c 0,1.052 0.407,2.009 1.072,2.725 0.73,0.781 1.772,1.27 2.926,1.27 C 6.204,3.995 7.995,2.206 7.995,0 7.995,-2.209 6.204,-4 3.998,-4 1.79,-4 0,-2.209 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4269"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4271"
- transform="translate(484.6309,394.0869)"><path
- d="m 0,0 c 0,1.052 0.407,2.01 1.072,2.725 0.73,0.781 1.771,1.27 2.926,1.27 C 6.204,3.995 7.993,2.208 7.993,0 7.993,-2.208 6.204,-3.998 3.998,-3.998 1.789,-3.998 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4273"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4275"
- transform="translate(474.4814,403.4521)"><path
- d="M 0,0 C 0,1.054 0.408,2.011 1.072,2.725 1.803,3.509 2.844,3.998 3.998,3.998 6.204,3.998 7.995,2.209 7.995,0 7.995,-2.208 6.204,-3.997 3.998,-3.997 1.79,-3.997 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4277"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4279"
- transform="translate(462.7217,361.0098)"><path
- d="M 0,0 C 0,1.054 0.407,2.011 1.072,2.726 1.802,3.509 2.843,3.998 3.998,3.998 6.205,3.998 7.995,2.207 7.995,0 7.995,-2.208 6.205,-3.997 3.998,-3.997 1.79,-3.997 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4281"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4283"
- transform="translate(450.0195,356.6143)"><path
- d="M 0,0 C 0,1.054 0.406,2.009 1.072,2.725 1.801,3.506 2.843,3.997 3.997,3.997 6.204,3.997 7.993,2.206 7.993,0 7.993,-2.208 6.204,-3.998 3.997,-3.998 1.789,-3.998 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4285"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4287"
- transform="translate(442.8623,341.6875)"><path
- d="M 0,0 C 0,1.05 0.408,2.009 1.072,2.723 1.803,3.506 2.844,3.996 3.998,3.996 6.206,3.996 7.995,2.205 7.995,0 7.995,-2.208 6.206,-3.998 3.998,-3.998 1.79,-3.998 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4289"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4291"
- transform="translate(419.8965,343.5381)"><path
- d="M 0,0 C 0,1.053 0.407,2.012 1.071,2.726 1.802,3.508 2.843,3.997 3.997,3.997 6.204,3.997 7.995,2.208 7.995,0 7.995,-2.207 6.204,-3.998 3.997,-3.998 1.79,-3.998 0,-2.207 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4293"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4295"
- transform="translate(425.377,370.1875)"><path
- d="M 0,0 C 0,1.053 0.408,2.01 1.072,2.726 1.802,3.508 2.844,3.997 3.998,3.997 6.205,3.997 7.995,2.208 7.995,0 7.995,-2.207 6.205,-3.996 3.998,-3.996 1.79,-3.996 0,-2.207 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4297"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4299"
- transform="translate(420.4033,388.998)"><path
- d="M 0,0 C 0,1.052 0.407,2.011 1.072,2.725 1.802,3.507 2.843,3.998 3.998,3.998 6.205,3.998 7.994,2.207 7.994,0 7.994,-2.208 6.205,-3.999 3.998,-3.999 1.789,-3.999 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4301"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4303"
- transform="translate(399.8057,380.7109)"><path
- d="M 0,0 C 0,1.054 0.407,2.011 1.072,2.724 1.801,3.507 2.843,3.996 3.997,3.996 6.205,3.996 7.994,2.207 7.994,0 7.994,-2.208 6.205,-3.997 3.997,-3.997 1.79,-3.997 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4305"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4307"
- transform="translate(544.9678,381.4111)"><path
- d="M 0,0 C 0,1.052 0.407,2.011 1.072,2.725 1.8,3.506 2.841,3.997 3.998,3.997 6.204,3.997 7.993,2.208 7.993,0 7.993,-2.208 6.204,-3.998 3.998,-3.998 1.789,-3.998 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4309"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4311"
- transform="translate(524.2813,389.1113)"><path
- d="M 0,0 C 0,1.052 0.406,2.009 1.073,2.724 1.803,3.507 2.845,3.996 3.997,3.996 6.205,3.996 7.995,2.207 7.995,0 7.995,-2.208 6.205,-3.997 3.997,-3.997 1.791,-3.997 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4313"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4315"
- transform="translate(519.3545,370.459)"><path
- d="m 0,0 c 0,1.054 0.407,2.013 1.072,2.727 0.73,0.781 1.772,1.27 2.926,1.27 2.206,0 3.996,-1.789 3.996,-3.997 0,-2.206 -1.79,-3.996 -3.996,-3.996 C 1.79,-3.996 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4317"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4319"
- transform="translate(494.6953,355.7979)"><path
- d="M 0,0 C 0,1.054 0.407,2.013 1.072,2.725 1.802,3.508 2.844,3.997 3.998,3.997 6.206,3.997 7.996,2.208 7.996,0 7.996,-2.206 6.206,-3.998 3.998,-3.998 1.79,-3.998 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4321"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4323"
- transform="translate(541.1943,304.2842)"><path
- d="m 0,0 c 0,1.052 0.407,2.011 1.074,2.725 0.73,0.782 1.771,1.273 2.922,1.273 2.21,0 3.999,-1.79 3.999,-3.998 0,-2.208 -1.789,-3.997 -3.999,-3.997 C 1.792,-3.997 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4325"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4327"
- transform="translate(597.7295,327.3008)"><path
- d="M 0,0 C 0,1.054 0.407,2.011 1.072,2.725 1.802,3.508 2.844,3.998 3.998,3.998 6.204,3.998 7.995,2.208 7.995,0 7.995,-2.206 6.204,-3.997 3.998,-3.997 1.79,-3.997 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4329"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4331"
- transform="translate(605.9189,388.207)"><path
- d="M 0,0 C 0,1.052 0.409,2.01 1.072,2.725 1.804,3.506 2.843,3.997 3.998,3.997 6.204,3.997 7.995,2.208 7.995,0 7.995,-2.209 6.204,-3.998 3.998,-3.998 1.79,-3.998 0,-2.209 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4333"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4335"
- transform="translate(506.7529,312.6104)"><path
- d="m 0,0 c 0,1.052 0.406,2.011 1.071,2.725 0.73,0.781 1.77,1.271 2.926,1.271 2.207,0 3.996,-1.79 3.996,-3.996 0,-2.208 -1.789,-3.998 -3.996,-3.998 C 1.789,-3.998 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4337"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4339"
- transform="translate(542.0625,327.8389)"><path
- d="M 0,0 C 0,1.056 0.407,2.013 1.073,2.727 1.801,3.51 2.841,4 3.996,4 6.206,4 7.995,2.21 7.995,0 7.995,-2.206 6.206,-3.995 3.996,-3.995 1.789,-3.995 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4341"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4343"
- transform="translate(501.7949,341.9775)"><path
- d="m 0,0 c 0,1.054 0.406,2.013 1.073,2.725 0.728,0.783 1.77,1.273 2.924,1.273 2.208,0 3.998,-1.79 3.998,-3.998 0,-2.206 -1.79,-3.996 -3.998,-3.996 C 1.791,-3.996 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4345"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4347"
- transform="translate(525.1553,343.7061)"><path
- d="M 0,0 C 0,1.054 0.407,2.01 1.072,2.726 1.802,3.507 2.843,3.998 3.998,3.998 6.204,3.998 7.994,2.209 7.994,0 7.994,-2.208 6.204,-3.997 3.998,-3.997 1.79,-3.997 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4349"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4351"
- transform="translate(560.6543,391.8955)"><path
- d="M 0,0 C 0,1.052 0.407,2.009 1.073,2.723 1.802,3.506 2.843,3.996 3.998,3.996 6.204,3.996 7.993,2.206 7.993,0 7.993,-2.208 6.204,-3.999 3.998,-3.999 1.791,-3.999 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4353"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4355"
- transform="translate(548.2754,404.4844)"><path
- d="M 0,0 C 0,1.053 0.406,2.01 1.071,2.725 1.801,3.506 2.844,3.997 3.997,3.997 6.205,3.997 7.995,2.206 7.995,0 7.995,-2.207 6.205,-3.996 3.997,-3.996 1.789,-3.996 0,-2.207 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4357"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4359"
- transform="translate(641.749,235.9199)"><path
- d="m 0,0 c 0,1.056 0.408,2.013 1.073,2.725 0.73,0.783 1.77,1.273 2.924,1.273 2.209,0 3.998,-1.79 3.998,-3.998 0,-2.206 -1.789,-3.997 -3.998,-3.997 C 1.789,-3.997 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4361"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4363"
- transform="translate(656.3027,246.2148)"><path
- d="M 0,0 C 0,1.053 0.407,2.011 1.07,2.725 1.801,3.508 2.843,3.997 3.996,3.997 6.204,3.997 7.993,2.208 7.993,0 7.993,-2.207 6.204,-3.996 3.996,-3.996 1.789,-3.996 0,-2.207 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4365"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4367"
- transform="translate(610.2549,239.6377)"><path
- d="m 0,0 c 0,1.053 0.408,2.009 1.07,2.723 0.731,0.783 1.771,1.273 2.925,1.273 2.21,0 4,-1.79 4,-3.996 0,-2.208 -1.79,-3.998 -4,-3.998 C 1.789,-3.998 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4369"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4371"
- transform="translate(617.0508,309.8027)"><path
- d="m 0,0 c 0,1.054 0.407,2.013 1.072,2.725 0.73,0.783 1.771,1.273 2.924,1.273 2.21,0 3.998,-1.79 3.998,-3.998 0,-2.206 -1.788,-3.997 -3.998,-3.997 C 1.79,-3.997 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4373"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4375"
- transform="translate(594.8418,258.0928)"><path
- d="M 0,0 C 0,1.053 0.408,2.012 1.071,2.727 1.803,3.508 2.843,3.997 3.997,3.997 6.205,3.997 7.995,2.21 7.995,0 7.995,-2.207 6.205,-3.996 3.997,-3.996 1.789,-3.996 0,-2.207 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4377"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4379"
- transform="translate(617.9893,281.2422)"><path
- d="M 0,0 C 0,1.054 0.407,2.009 1.072,2.725 1.802,3.507 2.845,3.998 3.998,3.998 6.206,3.998 7.995,2.207 7.995,0 7.995,-2.21 6.206,-3.999 3.998,-3.999 1.792,-3.999 0,-2.21 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4381"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4383"
- transform="translate(717.9902,258.8896)"><path
- d="m 0,0 c 0,1.053 0.407,2.011 1.073,2.727 0.728,0.781 1.77,1.27 2.923,1.27 C 6.204,3.997 7.993,2.208 7.993,0 7.993,-2.208 6.204,-3.998 3.996,-3.998 1.789,-3.998 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4385"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4387"
- transform="translate(686.8008,253.7139)"><path
- d="M 0,0 C 0,1.053 0.407,2.01 1.07,2.723 1.804,3.506 2.844,3.997 3.996,3.997 6.206,3.997 7.995,2.208 7.995,0 7.995,-2.209 6.206,-4 3.996,-4 1.79,-4 0,-2.209 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4389"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4391"
- transform="translate(716.2881,293.2197)"><path
- d="m 0,0 c 0,1.054 0.407,2.009 1.072,2.725 0.73,0.782 1.772,1.273 2.926,1.273 2.206,0 3.996,-1.79 3.996,-3.998 0,-2.208 -1.79,-3.997 -3.996,-3.997 C 1.79,-3.997 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4393"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4395"
- transform="translate(739.2354,282.2217)"><path
- d="M 0,0 C 0,1.054 0.409,2.009 1.072,2.725 1.802,3.506 2.844,3.997 3.998,3.997 6.204,3.997 7.995,2.208 7.995,0 7.995,-2.206 6.204,-3.998 3.998,-3.998 1.79,-3.998 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4397"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4399"
- transform="translate(641.3271,264.8213)"><path
- d="M 0,0 C 0,1.052 0.406,2.009 1.073,2.724 1.801,3.507 2.843,3.996 3.996,3.996 6.204,3.996 7.993,2.207 7.993,0 7.993,-2.206 6.204,-3.995 3.996,-3.995 1.791,-3.995 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4401"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4403"
- transform="translate(653.4258,298.4277)"><path
- d="M 0,0 C 0,1.052 0.405,2.011 1.07,2.724 1.802,3.507 2.843,3.996 3.998,3.996 6.202,3.996 7.992,2.207 7.992,0 7.992,-2.208 6.202,-3.997 3.998,-3.997 1.788,-3.997 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4405"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4407"
- transform="translate(657.1807,326.0293)"><path
- d="M 0,0 C 0,1.052 0.405,2.011 1.072,2.724 1.8,3.507 2.841,3.996 3.994,3.996 6.202,3.996 7.993,2.207 7.993,0 7.993,-2.208 6.202,-3.997 3.994,-3.997 1.788,-3.997 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4409"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4411"
- transform="translate(633.8057,356.2744)"><path
- d="M 0,0 C 0,1.056 0.409,2.013 1.076,2.726 1.804,3.509 2.844,3.998 4,3.998 6.206,3.998 7.996,2.209 7.996,0 7.996,-2.206 6.206,-3.997 4,-3.997 1.792,-3.997 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4413"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4415"
- transform="translate(654.7549,361.4219)"><path
- d="M 0,0 C 0,1.052 0.405,2.009 1.071,2.724 1.801,3.507 2.843,3.996 3.996,3.996 6.204,3.996 7.993,2.205 7.993,0 7.993,-2.21 6.204,-3.999 3.996,-3.999 1.789,-3.999 0,-2.21 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4417"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4419"
- transform="translate(671.6494,367.251)"><path
- d="M 0,0 C 0,1.054 0.407,2.011 1.072,2.726 1.802,3.509 2.844,3.998 3.998,3.998 6.204,3.998 7.994,2.209 7.994,0 7.994,-2.206 6.204,-3.997 3.998,-3.997 1.792,-3.997 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4421"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4423"
- transform="translate(663.6543,404.6172)"><path
- d="m 0,0 c 0,1.054 0.407,2.013 1.072,2.725 0.73,0.783 1.77,1.273 2.924,1.273 2.208,0 3.999,-1.79 3.999,-3.998 0,-2.206 -1.791,-3.997 -3.999,-3.997 C 1.79,-3.997 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4425"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4427"
- transform="translate(696.4658,404.0986)"><path
- d="M 0,0 C 0,1.054 0.407,2.011 1.072,2.726 1.802,3.507 2.843,3.998 3.998,3.998 6.204,3.998 7.993,2.209 7.993,0 7.993,-2.206 6.204,-3.997 3.998,-3.997 1.79,-3.997 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4429"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4431"
- transform="translate(742.1533,415.5654)"><path
- d="M 0,0 C 0,1.053 0.406,2.011 1.073,2.726 1.801,3.508 2.843,3.998 3.997,3.998 6.204,3.998 7.993,2.208 7.993,0 7.993,-2.207 6.204,-3.996 3.997,-3.996 1.791,-3.996 0,-2.207 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4433"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4435"
- transform="translate(712.8721,360.6738)"><path
- d="m 0,0 c 0,1.052 0.408,2.01 1.073,2.724 0.73,0.783 1.77,1.272 2.926,1.272 2.206,0 3.996,-1.789 3.996,-3.996 0,-2.209 -1.79,-3.999 -3.996,-3.999 C 1.789,-3.999 0,-2.209 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4437"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4439"
- transform="translate(692.2705,368.9873)"><path
- d="M 0,0 C 0,1.053 0.407,2.009 1.072,2.725 1.802,3.504 2.843,3.997 3.998,3.997 6.204,3.997 7.994,2.206 7.994,0 7.994,-2.21 6.204,-4 3.998,-4 1.79,-4 0,-2.21 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4441"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4443"
- transform="translate(726.208,386.2871)"><path
- d="M 0,0 C 0,1.054 0.407,2.009 1.07,2.723 1.802,3.507 2.843,3.996 3.998,3.996 6.204,3.996 7.993,2.206 7.993,0 7.993,-2.208 6.204,-3.997 3.998,-3.997 1.79,-3.997 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4445"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4447"
- transform="translate(754.6855,370.3965)"><path
- d="m 0,0 c 0,1.052 0.407,2.009 1.072,2.723 0.73,0.783 1.77,1.273 2.924,1.273 2.208,0 3.999,-1.79 3.999,-3.996 0,-2.208 -1.791,-3.998 -3.999,-3.998 C 1.79,-3.998 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4449"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4451"
- transform="translate(737.2842,354.9297)"><path
- d="M 0,0 C 0,1.053 0.408,2.011 1.074,2.725 1.803,3.506 2.845,3.997 3.998,3.997 6.206,3.997 7.995,2.208 7.995,0 7.995,-2.207 6.206,-3.998 3.998,-3.998 1.791,-3.998 0,-2.207 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4453"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4455"
- transform="translate(707.2227,341.4287)"><path
- d="m 0,0 c 0,1.052 0.407,2.011 1.072,2.726 0.73,0.781 1.77,1.27 2.924,1.27 2.208,0 3.998,-1.789 3.998,-3.996 0,-2.208 -1.79,-3.997 -3.998,-3.997 C 1.79,-3.997 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4457"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4459"
- transform="translate(689.2422,315.1172)"><path
- d="M 0,0 C 0,1.052 0.407,2.009 1.072,2.723 1.802,3.507 2.843,3.996 3.998,3.996 6.204,3.996 7.993,2.206 7.993,0 7.993,-2.208 6.204,-3.999 3.998,-3.999 1.79,-3.999 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4461"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4463"
- transform="translate(670.041,277.8359)"><path
- d="M 0,0 C 0,1.053 0.408,2.011 1.073,2.725 1.803,3.508 2.843,3.997 3.998,3.997 6.206,3.997 7.995,2.208 7.995,0 7.995,-2.207 6.206,-3.998 3.998,-3.998 1.791,-3.998 0,-2.207 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4465"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4467"
- transform="translate(686.9902,298.6592)"><path
- d="m 0,0 c 0,1.052 0.41,2.009 1.075,2.724 0.73,0.783 1.77,1.272 2.924,1.272 2.208,0 3.998,-1.789 3.998,-3.996 0,-2.208 -1.79,-3.999 -3.998,-3.999 C 1.791,-3.999 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4469"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4471"
- transform="translate(704.7207,323.8252)"><path
- d="M 0,0 C 0,1.053 0.407,2.012 1.074,2.725 1.8,3.508 2.842,3.997 3.996,3.997 6.206,3.997 7.995,2.208 7.995,0 7.995,-2.207 6.206,-3.998 3.996,-3.998 1.79,-3.998 0,-2.207 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4473"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4475"
- transform="translate(584.3818,267.7031)"><path
- d="M 0,0 C 0,1.054 0.406,2.011 1.071,2.725 1.799,3.508 2.843,3.998 3.997,3.998 6.204,3.998 7.995,2.208 7.995,0 7.995,-2.206 6.204,-3.997 3.997,-3.997 1.789,-3.997 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4477"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4479"
- transform="translate(581.1592,309.3857)"><path
- d="M 0,0 C 0,1.052 0.408,2.009 1.071,2.724 1.803,3.507 2.843,3.996 3.999,3.996 6.205,3.996 7.995,2.205 7.995,0 7.995,-2.208 6.205,-3.997 3.999,-3.997 1.789,-3.997 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4481"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4483"
- transform="translate(545.2139,275.751)"><path
- d="M 0,0 C 0,1.052 0.407,2.009 1.072,2.723 1.802,3.505 2.845,3.996 3.998,3.996 6.206,3.996 7.995,2.206 7.995,0 7.995,-2.208 6.206,-3.998 3.998,-3.998 1.79,-3.998 0,-2.208 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4485"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4487"
- transform="translate(518.0771,273.9746)"><path
- d="M 0,0 C 0,1.054 0.406,2.011 1.073,2.725 1.801,3.507 2.843,3.998 3.997,3.998 6.204,3.998 7.995,2.207 7.995,0 7.995,-2.206 6.204,-3.997 3.997,-3.997 1.789,-3.997 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4489"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4491"
- transform="translate(526.2578,290.5547)"><path
- d="M 0,0 C 0,1.053 0.407,2.011 1.072,2.725 1.802,3.508 2.843,3.997 3.998,3.997 6.204,3.997 7.993,2.208 7.993,0 7.993,-2.207 6.204,-3.998 3.998,-3.998 1.789,-3.998 0,-2.207 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4493"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4495"
- transform="translate(513.6152,298.8906)"><path
- d="M 0,0 C 0,1.054 0.406,2.013 1.073,2.727 1.801,3.51 2.843,3.997 3.996,3.997 6.204,3.997 7.993,2.208 7.993,0 7.993,-2.206 6.204,-3.996 3.996,-3.996 1.789,-3.996 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4497"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4499"
- transform="translate(487.5342,277.2832)"><path
- d="M 0,0 C 0,1.054 0.407,2.011 1.072,2.726 1.802,3.507 2.843,3.998 3.996,3.998 6.204,3.998 7.994,2.209 7.994,0 7.994,-2.206 6.204,-3.997 3.996,-3.997 1.79,-3.997 0,-2.206 0,0 z"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4501"
- inkscape:connector-curvature="0" /></g><path
- inkscape:connector-curvature="0"
- id="path4505"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- d="m 475.5215,285.4971 c 0,1.053 0.408,2.01 1.073,2.725 0.729,0.781 1.77,1.274 2.925,1.274 2.206,0 3.997,-1.791 3.997,-3.999 0,-2.207 -1.791,-3.996 -3.997,-3.996 -2.208,0 -3.998,1.789 -3.998,3.996 z" /><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4507"
- transform="translate(624.9453,283.9238)"><path
- d="M 0,0 5.338,5.338"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4509"
- inkscape:connector-curvature="0" /></g><g
- style="stroke-width:1.60000000000000009;stroke-miterlimit:4;stroke-dasharray:none;stroke:#4486c2;stroke-opacity:1"
- id="g4511"
- transform="translate(654.4961,301.1514)"><path
- d="M 0,0 -11.959,11.325"
- style="fill:none;stroke:#4486c2;stroke-width:1.60000000000000009;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- id="path4513"
- inkscape:connector-curvature="0" /></g></g></svg>
\ No newline at end of file
diff --git a/src/chrome/locale/en/aboutTor.properties b/src/chrome/locale/en/aboutTor.properties
index c777fdf..000c5c2 100644
--- a/src/chrome/locale/en/aboutTor.properties
+++ b/src/chrome/locale/en/aboutTor.properties
@@ -13,10 +13,3 @@ aboutTor.searchDC.privacy=Search <a href="%1$S">securely</a> with <a href="%2$S"
aboutTor.searchDC.privacy.link=https://disconnect.me/privacy
# The following string is a link which replaces %2$S above.
aboutTor.searchDC.search.link=https://search.disconnect.me/
-
-aboutTor.donationBanner.donate=Please Donate!
-aboutTor.donationBanner.heart=Tor is at the heart of Internet freedom
-aboutTor.donationBanner.tagline1=Millions of People Depend on Tor for Online Security & Privacy
-aboutTor.donationBanner.tagline2=A Network of People Protecting People
-aboutTor.donationBanner.tagline3=Surveillance = Oppression
-aboutTor.donationBanner.tagline4=Protecting Journalists, Activists & Whistleblowers Since 2006
diff --git a/src/chrome/locale/fr/aboutTor.properties b/src/chrome/locale/fr/aboutTor.properties
index 91047ff..03f3e8e 100644
--- a/src/chrome/locale/fr/aboutTor.properties
+++ b/src/chrome/locale/fr/aboutTor.properties
@@ -14,7 +14,7 @@ aboutTor.searchDC.privacy.link=https://disconnect.me/privacy
# The following string is a link which replaces %2$S above.
aboutTor.searchDC.search.link=https://search.disconnect.me/
-aboutTor.donationBanner.donate=Faites un don maintenant !
+aboutTor.donationBanner.donate=Faites un don maintenant !
aboutTor.donationBanner.heart=Tor est au cœur de la liberté sur Internet
aboutTor.donationBanner.tagline1=Des millions de personnes dépendent de Tor pour leur sécurité et la protection de leurs renseignements personnels en ligne
aboutTor.donationBanner.tagline2=Un réseau de personnes qui protège les gens
diff --git a/src/chrome/skin/donation_banner.css b/src/chrome/skin/donation_banner.css
deleted file mode 100644
index a678e98..0000000
--- a/src/chrome/skin/donation_banner.css
+++ /dev/null
@@ -1,146 +0,0 @@
-#banner {
- -khtml-user-select: none; /* Konqueror */
- -moz-user-select: none; /* Firefox */
- -ms-user-select: none; /* Internet Explorer/Edge */
- -webkit-touch-callout: none; /* iOS Safari */
- -webkit-user-select: none; /* Chrome/Safari/Opera */
- background-color: #406;
- background-opacity: 10%;
- background-size: cover;
- background: radial-gradient(circle, #406 90%, #203 100%);
- border-bottom: 6px solid #305;
- border-top: 5px solid #305;
- display: none;
- height: 120px;
- justify-content: center;
- left: 0px;
- margin-top: 40px;
- min-width: 900px;
- opacity: 1;
- position: absolute;
- user-select: none;
- width: 100%;
- z-index: 1;
-}
-#banner:before {
- background-image: url('chrome://torbutton/content/aboutTor/tor-roots-only.svg');
- background-position: 50% 50%;
- background-repeat: no-repeat;
- background-size: cover;
- content: ' ';
- display: block;
- height: 100%;
- left: 0;
- opacity: 0.20;
- position: absolute;
- top: 0;
- width: 100%;
-}
-#banner-contents-container {
- align-items: center;
- display: flex;
- flex-direction: row;
- height: 100%;
- max-width: 700px;
- position: relative;
- width: 700px;
-}
-#banner-text {
- align-self: stretch;
- color: white;
- display: flex;
- flex-direction: column;
- flex: 1 1 auto;
- font-family: sans-serif;
- font-size: 8px;
- margin: 10px 20px 10px 20px;
- max-height: 100%;
-}
-#banner-tagline {
- align-items: center;
- display: flex;
- flex: 2 2 67%;
- font-weight: bold;
- justify-content: center;
- text-align: center;
-}
-#banner-heart {
- align-items: center;
- color: #f8f8a0;
- display: flex;
- flex: 1 1 33%;
- justify-content: center;
- text-align: center;
- white-space: nowrap;
-}
-#banner-logo-container {
- display: inline-block;
- flex: 0 0 auto;
- margin: 0px;
- position: relative;
-}
-#banner-logo {
- height: 155px;
- position: relative;
- padding-bottom: 40px;
- width: 108px;
-}
-#banner-donate-button-container {
- background-color: #FFD;
- border: 4px solid #204;
- color: #A20;
- display: block;
- flex-grow: 0.0;
- flex: 0;
- height: 50px;
- letter-spacing: -0.00em;
- opacity: 100%;
- padding: 10px;
- width: 100px;
-}
-#banner-donate-button-container:hover {
- border-color: #610;
-}
-#banner-donate-button-container:active {
- border-color: #A20;
-}
-#banner-donate-button {
- align-items: center;
- display: flex;
- flex-direction: column;
- font-family: sans-serif;
- font-size: 12px;
- font-weight: bold;
- height: 100%;
- text-align: start;
- width: 100%;
-}
-#banner-donate-button-text {
- align-self: stretch;
- align-items: center;
- display: flex;
- justify-content: center;
- flex: 2 2 67%;
-}
-#banner-donate-button-link {
- flex: 0 0 auto;
- text-decoration: none;
-}
-#banner-donate-button-link:link {
- color: #A20;
-}
-#banner-donate-button-link:hover {
- color: #C40;
-}
-#banner-donate-button-link:visited {
- color: #408;
-}
-#banner-donate-button-linka:active {
- color: black;
-}
-#banner-spacer {
- display: none;
- height: 150px;
- position: relative;
- top: 0;
-};
1
0

[torbutton/master] Bug 21091: Hide the "Check for Tor Browser Update..." menu entry when running under the sandbox.
by gk@torproject.org 10 Jan '17
by gk@torproject.org 10 Jan '17
10 Jan '17
commit dd927687ed22a2e8a8e880e92c6f5b8273c737c9
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Mon Jan 9 11:53:31 2017 -0500
Bug 21091: Hide the "Check for Tor Browser Update..." menu entry when running under the sandbox.
If the `TOR_HIDE_UPDATE_CHECK_UI` env var is set, hide the "Check for
Tor Browser Update..." menu item and the separator that sits right above it.
---
src/chrome/content/popup.xul | 2 +-
src/chrome/content/torbutton.js | 11 +++++++++++
2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/src/chrome/content/popup.xul b/src/chrome/content/popup.xul
index d015766..9447b70 100644
--- a/src/chrome/content/popup.xul
+++ b/src/chrome/content/popup.xul
@@ -44,7 +44,7 @@
label="&torbutton.context_menu.networksettings;"
accesskey="&torbutton.context_menu.networksettings.key;"
oncommand="torbutton_open_network_settings()"/>
- <menuseparator/>
+ <menuseparator id="torbutton-checkForUpdateSeparator"/>
<menuitem id="torbutton-checkForUpdate"
label="&torbutton.context_menu.downloadUpdate;"
accesskey="&torbutton.context_menu.downloadUpdate.key;"
diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js
index c0fe710..dacc43e 100644
--- a/src/chrome/content/torbutton.js
+++ b/src/chrome/content/torbutton.js
@@ -1822,6 +1822,17 @@ function torbutton_check_protections()
else
document.getElementById("torbutton-networksettings").hidden = false;
+ // Bug 21091: check for the existence of an environment variable
+ // in order to toggle the visibility of the torbutton-checkForUpdate
+ // menuitem and its separator.
+ if (env.exists("TOR_HIDE_UPDATE_CHECK_UI")) {
+ document.getElementById("torbutton-checkForUpdateSeparator").hidden = true;
+ document.getElementById("torbutton-checkForUpdate").hidden = true;
+ } else {
+ document.getElementById("torbutton-checkForUpdateSeparator").hidden = false;
+ document.getElementById("torbutton-checkForUpdate").hidden = false;
+ }
+
var cookie_pref = m_tb_prefs.getBoolPref("extensions.torbutton.cookie_protections");
document.getElementById("torbutton-cookie-protector").disabled = !cookie_pref;
1
0

[tor-browser-bundle/hardened-builds] Bug 20735: Inline fetch --dry-run to pass a revision to gclient sync
by gk@torproject.org 09 Jan '17
by gk@torproject.org 09 Jan '17
09 Jan '17
commit 96836418e9686ea775759bbe15c39cbc3855969d
Author: Arlo Breault <arlolra(a)gmail.com>
Date: Sat Jan 7 09:35:07 2017 -0800
Bug 20735: Inline fetch --dry-run to pass a revision to gclient sync
* Recent upstream changes require manual intervention when doing the
initial fetch, which we'd like to avoid. For now, just sync as far
as we need.
---
gitian/fetch-inputs.sh | 29 +++++++++++++++++++++++++----
1 file changed, 25 insertions(+), 4 deletions(-)
diff --git a/gitian/fetch-inputs.sh b/gitian/fetch-inputs.sh
index 01ec802..9059336 100755
--- a/gitian/fetch-inputs.sh
+++ b/gitian/fetch-inputs.sh
@@ -313,17 +313,38 @@ PATH="$PATH:$PWD/depot_tools"
# Use --no-history because the whole checkout with history is about 12 GB.
export GYP_CROSSCOMPILE=1
export GYP_DEFINES="use_x11=0"
+# JAVA_HOME is needed in a hook for libjingle. The readlink line tries to find the current JRE.
+# default-java comes from the package default-jdk-headless.
+export JAVA_HOME=/usr/lib/jvm/default-java
mkdir -p "$dir"
cd "$dir"
if [ ! -d "src" ];
then
# "fetch" is part of depot_tools.
- fetch --nohooks --no-history webrtc
+ #fetch --nohooks --no-history webrtc
+ # FIXME: To avoid the unconditional `gclient sync` in the call to fetch,
+ # we inline the result of a `fetch --dry-run`
+ gclient root
+ gclient config --spec 'solutions = [
+ {
+ "managed": False,
+ "name": "src",
+ "url": "https://chromium.googlesource.com/external/webrtc.git",
+ "custom_deps": {},
+ "deps_file": "DEPS",
+ "safesync_url": "",
+ },
+]
+'
+ gclient sync --nohooks --no-history --with_branch_heads -r $WEBRTC_TAG
+ cd src
+ git submodule foreach 'git config -f $toplevel/.git/config submodule.$name.ignore all'
+ git config --add remote.origin.fetch '+refs/tags/*:refs/tags/*'
+ git config diff.ignoreSubmodules all
+ cd ..
fi
# "gclient" is part of depot_tools. This download takes a long time the first time.
-# JAVA_HOME is needed in a hook for libjingle. The readlink line tries to find the current JRE.
-# default-java comes from the package default-jdk-headless.
-JAVA_HOME=/usr/lib/jvm/default-java gclient sync --with_branch_heads --no-history -r $WEBRTC_TAG
+gclient sync --no-history --with_branch_heads -r $WEBRTC_TAG
cd ..
tar --exclude .git -czf webrtc.tar.gz webrtc
1
0

[tor-browser-bundle/master] Bug 20735: Inline fetch --dry-run to pass a revision to gclient sync
by gk@torproject.org 09 Jan '17
by gk@torproject.org 09 Jan '17
09 Jan '17
commit 3cf7b5af18a4fa0ad0813c0e16148dc1e578c04a
Author: Arlo Breault <arlolra(a)gmail.com>
Date: Sat Jan 7 09:35:07 2017 -0800
Bug 20735: Inline fetch --dry-run to pass a revision to gclient sync
* Recent upstream changes require manual intervention when doing the
initial fetch, which we'd like to avoid. For now, just sync as far
as we need.
---
gitian/fetch-inputs.sh | 29 +++++++++++++++++++++++++----
1 file changed, 25 insertions(+), 4 deletions(-)
diff --git a/gitian/fetch-inputs.sh b/gitian/fetch-inputs.sh
index 729e492..8c543d8 100755
--- a/gitian/fetch-inputs.sh
+++ b/gitian/fetch-inputs.sh
@@ -319,17 +319,38 @@ PATH="$PATH:$PWD/depot_tools"
# Use --no-history because the whole checkout with history is about 12 GB.
export GYP_CROSSCOMPILE=1
export GYP_DEFINES="use_x11=0"
+# JAVA_HOME is needed in a hook for libjingle. The readlink line tries to find the current JRE.
+# default-java comes from the package default-jdk-headless.
+export JAVA_HOME=/usr/lib/jvm/default-java
mkdir -p "$dir"
cd "$dir"
if [ ! -d "src" ];
then
# "fetch" is part of depot_tools.
- fetch --nohooks --no-history webrtc
+ #fetch --nohooks --no-history webrtc
+ # FIXME: To avoid the unconditional `gclient sync` in the call to fetch,
+ # we inline the result of a `fetch --dry-run`
+ gclient root
+ gclient config --spec 'solutions = [
+ {
+ "managed": False,
+ "name": "src",
+ "url": "https://chromium.googlesource.com/external/webrtc.git",
+ "custom_deps": {},
+ "deps_file": "DEPS",
+ "safesync_url": "",
+ },
+]
+'
+ gclient sync --nohooks --no-history --with_branch_heads -r $WEBRTC_TAG
+ cd src
+ git submodule foreach 'git config -f $toplevel/.git/config submodule.$name.ignore all'
+ git config --add remote.origin.fetch '+refs/tags/*:refs/tags/*'
+ git config diff.ignoreSubmodules all
+ cd ..
fi
# "gclient" is part of depot_tools. This download takes a long time the first time.
-# JAVA_HOME is needed in a hook for libjingle. The readlink line tries to find the current JRE.
-# default-java comes from the package default-jdk-headless.
-JAVA_HOME=/usr/lib/jvm/default-java gclient sync --with_branch_heads --no-history -r $WEBRTC_TAG
+gclient sync --no-history --with_branch_heads -r $WEBRTC_TAG
cd ..
tar --exclude .git -czf webrtc.tar.gz webrtc
1
0

[tor-browser-bundle/hardened-builds] We just want to have 64bit things for hardened
by gk@torproject.org 05 Jan '17
by gk@torproject.org 05 Jan '17
05 Jan '17
commit 2eca5d42245a98b4572943b0307a74392bfa4f5c
Author: Georg Koppen <gk(a)torproject.org>
Date: Thu Jan 5 11:55:16 2017 +0000
We just want to have 64bit things for hardened
---
gitian/descriptors/linux/gitian-pluggable-transports.yml | 3 ---
gitian/descriptors/linux/gitian-webrtc.yml | 3 ---
gitian/mkbundle-linux.sh | 3 +--
3 files changed, 1 insertion(+), 8 deletions(-)
diff --git a/gitian/descriptors/linux/gitian-pluggable-transports.yml b/gitian/descriptors/linux/gitian-pluggable-transports.yml
index 31aa9bb..9b4a278 100644
--- a/gitian/descriptors/linux/gitian-pluggable-transports.yml
+++ b/gitian/descriptors/linux/gitian-pluggable-transports.yml
@@ -59,11 +59,8 @@ files:
- "dzip.sh"
- "gmp-linux64-utils.zip"
- "openssl-linux64-utils.zip"
-- "binutils-linux32-utils.zip"
- "binutils-linux64-utils.zip"
-- "gcc-linux32-utils.zip"
- "gcc-linux64-utils.zip"
-- "webrtc-linux32-gbuilt.zip"
- "webrtc-linux64-gbuilt.zip"
script: |
INSTDIR="$HOME/install"
diff --git a/gitian/descriptors/linux/gitian-webrtc.yml b/gitian/descriptors/linux/gitian-webrtc.yml
index ba654c5..f18da52 100644
--- a/gitian/descriptors/linux/gitian-webrtc.yml
+++ b/gitian/descriptors/linux/gitian-webrtc.yml
@@ -4,7 +4,6 @@ distro: "debian"
suites:
- "wheezy"
architectures:
-- "i386"
- "amd64"
packages:
- "unzip"
@@ -24,9 +23,7 @@ remotes:
"dir": "depot_tools"
files:
- "dzip.sh"
-- "binutils-linux32-utils.zip"
- "binutils-linux64-utils.zip"
-- "gcc-linux32-utils.zip"
- "gcc-linux64-utils.zip"
- "webrtc.tar.gz"
script: |
diff --git a/gitian/mkbundle-linux.sh b/gitian/mkbundle-linux.sh
index e5be697..a9f4cea 100755
--- a/gitian/mkbundle-linux.sh
+++ b/gitian/mkbundle-linux.sh
@@ -187,8 +187,7 @@ else
echo
fi
-if [ ! -f inputs/webrtc-linux32-gbuilt.zip -o \
- ! -f inputs/webrtc-linux64-gbuilt.zip ];
+if [ ! -f inputs/webrtc-linux64-gbuilt.zip ];
then
echo
echo "****** Starting WebRTC Component of Linux Bundle (4/6 for Linux) ******"
1
0

[tor-browser-bundle/hardened-builds] Bug 20735: Add snowflake pt to alpha Linux builds
by gk@torproject.org 05 Jan '17
by gk@torproject.org 05 Jan '17
05 Jan '17
commit f78866cad71122fa851ebdf6c63053605c565826
Author: David Fifield <david(a)bamsoftware.com>
Date: Sat Apr 30 15:42:21 2016 -0700
Bug 20735: Add snowflake pt to alpha Linux builds
* Snowflake depends on go-webrtc, which in turn depends on libwebrtc,
which adds significantly to the build. webrtc is special, having its
own build system that brings in lots of Chromium dependencies.
* Further, building cgo reproducibly requires go 1.7.3 and a compiler
that supports the following flags,
-gno-record-gcc-switches
-fdebug-prefix-map=$WORK=/tmp/go-build
---
Bundle-Data/PTConfigs/bridge_prefs.js | 2 +
.../PTConfigs/linux/torrc-defaults-appendix | 3 +
gitian/Makefile | 5 +-
gitian/check-prerequisites.sh | 8 +-
.../linux/gitian-pluggable-transports.yml | 79 +++++++++++++
gitian/descriptors/linux/gitian-webrtc.yml | 125 +++++++++++++++++++++
gitian/fetch-inputs.sh | 28 +++++
gitian/mkbundle-linux.sh | 44 ++++++--
gitian/verify-tags.sh | 6 +
gitian/versions | 13 ++-
gitian/versions.alpha | 6 +
gitian/versions.beta | 5 +
gitian/versions.nightly | 6 +
13 files changed, 312 insertions(+), 18 deletions(-)
diff --git a/Bundle-Data/PTConfigs/bridge_prefs.js b/Bundle-Data/PTConfigs/bridge_prefs.js
index 6831555..bd92585 100644
--- a/Bundle-Data/PTConfigs/bridge_prefs.js
+++ b/Bundle-Data/PTConfigs/bridge_prefs.js
@@ -38,3 +38,5 @@ pref("extensions.torlauncher.default_bridge.obfs4.20", "obfs4 85.17.30.79:443 FC
pref("extensions.torlauncher.default_bridge.meek-amazon.1", "meek 0.0.2.0:2 B9E7141C594AF25699E0079C1F0146F409495296 url=https://d2zfqthxsdq309.cloudfront.net/ front=a0.awsstatic.com");
pref("extensions.torlauncher.default_bridge.meek-azure.1", "meek 0.0.2.0:3 A2C13B7DFCAB1CBF3A884B6EB99A98067AB6EF44 url=https://az786092.vo.msecnd.net/ front=ajax.aspnetcdn.com");
+
+pref("extensions.torlauncher.default_bridge.snowflake.1", "snowflake 0.0.3.0:1 B05EC36590AC0374F0E4D36DDA77908FD59D97F3");
diff --git a/Bundle-Data/PTConfigs/linux/torrc-defaults-appendix b/Bundle-Data/PTConfigs/linux/torrc-defaults-appendix
index c79efde..7fbf63c 100644
--- a/Bundle-Data/PTConfigs/linux/torrc-defaults-appendix
+++ b/Bundle-Data/PTConfigs/linux/torrc-defaults-appendix
@@ -6,3 +6,6 @@ ClientTransportPlugin obfs2,obfs3,obfs4,scramblesuit exec ./TorBrowser/Tor/Plugg
## meek configuration
ClientTransportPlugin meek exec ./TorBrowser/Tor/PluggableTransports/meek-client-torbrowser -- ./TorBrowser/Tor/PluggableTransports/meek-client
+
+## snowflake configuration
+ClientTransportPlugin snowflake exec ./TorBrowser/Tor/PluggableTransports/snowflake-client -url https://snowflake-reg.appspot.com/ -front www.google.com -ice stun:stun.l.google.com:19302
diff --git a/gitian/Makefile b/gitian/Makefile
index 1aac5ed..b321eab 100644
--- a/gitian/Makefile
+++ b/gitian/Makefile
@@ -93,7 +93,7 @@ prep-alpha:
$(TORSOCKS) ./fetch-inputs.sh ../../gitian-builder/inputs/ versions.alpha
-clean: clean-utils clean-tor clean-browser clean-pt clean-bundle
+clean: clean-utils clean-tor clean-browser clean-webrtc clean-pt clean-bundle
rm -f ../../gitian-builder/inputs/*.yml
rm -f ../../gitian-builder/inputs/bundle.inputs
rm -f ../../gitian-builder/inputs/versions*
@@ -112,6 +112,9 @@ clean-browser: clean-bundle
rm -f ../../gitian-builder/inputs/tor-browser-win*
rm -f ../../gitian-builder/inputs/mar-tools-*
+clean-webrtc: clean-bundle
+ rm -f ../../gitian-builder/inputs/webrtc-*-gbuilt.zip
+
clean-pt: clean-bundle
rm -f ../../gitian-builder/inputs/pluggable-transports*
diff --git a/gitian/check-prerequisites.sh b/gitian/check-prerequisites.sh
index 858fd4d..530e160 100755
--- a/gitian/check-prerequisites.sh
+++ b/gitian/check-prerequisites.sh
@@ -17,7 +17,7 @@ then
VERSION=`cat /etc/issue | grep -Eo '[0-9]{2}' | head -1`
if [ "$VERSION" -ge "14" ];
then
- dpkg -s ruby apache2 git apt-cacher-ng qemu-kvm virt-what lxc lxctl fakeroot faketime zip unzip subversion debian-archive-keyring torsocks tor 2>/dev/null >/dev/null
+ dpkg -s ruby apache2 git apt-cacher-ng qemu-kvm virt-what lxc lxctl fakeroot faketime zip unzip subversion debian-archive-keyring curl pkg-config libgtk2.0-dev libglib2.0-dev torsocks tor 2>/dev/null >/dev/null
if [ $? -ne 0 ];
then
@@ -25,7 +25,7 @@ then
echo
echo "Please run:"
echo " sudo apt-get install torsocks tor"
- echo " sudo torsocks apt-get install ruby apache2 git apt-cacher-ng qemu-kvm virt-what lxc lxctl fakeroot faketime zip unzip subversion debian-archive-keyring"
+ echo " sudo torsocks apt-get install ruby apache2 git apt-cacher-ng qemu-kvm virt-what lxc lxctl fakeroot faketime zip unzip subversion debian-archive-keyring curl pkg-config libgtk2.0-dev libglib2.0-dev"
exit 1
fi
else
@@ -34,7 +34,7 @@ then
fi
elif [ $DISTRO = "Debian" ];
then
- dpkg -s ruby git apt-cacher-ng qemu-kvm virt-what lxc lxctl fakeroot zip unzip torsocks tor python-cheetah debootstrap parted kpartx rsync 2>/dev/null >/dev/null
+ dpkg -s ruby git apt-cacher-ng qemu-kvm virt-what lxc lxctl fakeroot zip unzip python-cheetah debootstrap parted kpartx rsync curl pkg-config libgtk2.0-dev libglib2.0-dev torsocks tor 2>/dev/null >/dev/null
if [ $? -ne 0 ];
then
@@ -42,7 +42,7 @@ then
echo
echo "Please run"
echo " sudo apt-get install torsocks tor"
- echo " sudo torsocks apt-get install ruby git apt-cacher-ng qemu-kvm virt-what lxc lxctl fakeroot zip unzip python-cheetah debootstrap parted kpartx rsync"
+ echo " sudo torsocks apt-get install ruby git apt-cacher-ng qemu-kvm virt-what lxc lxctl fakeroot zip unzip python-cheetah debootstrap parted kpartx rsync curl pkg-config libgtk2.0-dev libglib2.0-dev"
exit 1
fi
else
diff --git a/gitian/descriptors/linux/gitian-pluggable-transports.yml b/gitian/descriptors/linux/gitian-pluggable-transports.yml
index 2793a76..31aa9bb 100644
--- a/gitian/descriptors/linux/gitian-pluggable-transports.yml
+++ b/gitian/descriptors/linux/gitian-pluggable-transports.yml
@@ -13,6 +13,8 @@ packages:
- "swig"
- "zip"
- "hardening-wrapper"
+- "pkg-config"
+- "libx11-dev"
reference_datetime: "2000-01-01 00:00:00"
remotes:
- "url": "https://git.torproject.org/pluggable-transports/pyptlib.git"
@@ -39,6 +41,12 @@ remotes:
"dir": "goxnet"
- "url": "https://git.torproject.org/pluggable-transports/obfs4.git"
"dir": "obfs4"
+- "url": "https://github.com/keroserene/go-webrtc.git"
+ "dir": "go-webrtc"
+- "url": "https://git.torproject.org/pluggable-transports/snowflake.git"
+ "dir": "snowflake"
+- "url": "https://github.com/dchest/uniuri.git"
+ "dir": "uniuri"
files:
- "pycrypto.tar.gz"
- "argparse.tar.gz"
@@ -51,6 +59,12 @@ files:
- "dzip.sh"
- "gmp-linux64-utils.zip"
- "openssl-linux64-utils.zip"
+- "binutils-linux32-utils.zip"
+- "binutils-linux64-utils.zip"
+- "gcc-linux32-utils.zip"
+- "gcc-linux64-utils.zip"
+- "webrtc-linux32-gbuilt.zip"
+- "webrtc-linux64-gbuilt.zip"
script: |
INSTDIR="$HOME/install"
PTDIR="$INSTDIR/Tor/PluggableTransports"
@@ -73,6 +87,35 @@ script: |
# FTE only needs libgmp.so.10 and no libgmpxx anymore.
cp $INSTDIR/gmp/lib/libgmp.so.10 $INSTDIR/Tor
+ # Preparing Binutils and GCC for webrtc
+ unzip -d $INSTDIR binutils-linux$GBUILD_BITS-utils.zip
+ # Make sure gold is used with the hardening wrapper for full RELRO, see
+ # #13031.
+ cd $INSTDIR/binutils/bin
+ rm ld
+ cp /usr/bin/hardened-ld ./
+ mv ld.gold ld.gold.real
+ ln -sf hardened-ld ld.gold
+ ln -sf ld.gold ld
+ cd ~/build
+ unzip -d $INSTDIR gcc-linux$GBUILD_BITS-utils.zip
+ # Make sure we use the hardening wrapper when compiling Tor Browser.
+ cd $INSTDIR/gcc/bin
+ cp /usr/bin/hardened-cc ./
+ mv gcc gcc.real
+ mv c++ c++.real
+ ln -sf hardened-cc gcc
+ ln -sf hardened-cc c++
+ cd ~/build
+ export PATH=$INSTDIR/gcc/bin:$INSTDIR/binutils/bin:$PATH
+ ARCH=""
+ if [ $GBUILD_BITS == "64" ];
+ then
+ ARCH="64"
+ fi
+ # Make sure our GCC gets properly used.
+ export LD_LIBRARY_PATH=$INSTDIR/gcc/lib$ARCH
+
# Building go 1.4.x
# This is needed to bootstrap the go that we actually use
# https://golang.org/doc/install/source#go14
@@ -231,6 +274,14 @@ script: |
go install github.com/dchest/siphash
cd ..
+ # Building go uniuri
+ cd uniuri
+ find -type f -print0 | xargs -0 touch --date="$REFERENCE_DATETIME"
+ mkdir -p "$GOPATH/src/github.com/dchest/"
+ ln -sf "$PWD" "$GOPATH/src/github.com/dchest/uniuri"
+ go install github.com/dchest/uniuri
+ cd ..
+
# Building golang.org/x/crypto (obfs4proxy > 0.0.3 || Go >= 1.4)
cd goxcrypto
find -type f -print0 | xargs -0 touch --date="$REFERENCE_DATETIME"
@@ -259,6 +310,34 @@ script: |
cp -a obfs4proxy $PTDIR
cd ../..
+ unzip webrtc-linux$GBUILD_BITS-gbuilt.zip
+
+ # Building go-webrtc
+ cd go-webrtc
+ # Replace the prebuilt webrtc library with our own one.
+ rm -rf include/ lib/
+ ln -sf ../webrtc/{include,lib} .
+ find -type f -print0 | xargs -0 touch --date="$REFERENCE_DATETIME"
+ mkdir -p "$GOPATH/src/github.com/keroserene/"
+ ln -sf "$PWD" "$GOPATH/src/github.com/keroserene/go-webrtc"
+ # The go-webrtc package sets _GLIBCXX_USE_CXX11_ABI=0 for compatibility with
+ # the prebuilt libwebrtc-magic.a libraries. Since we build our own
+ # libwebrtc-magic.a with the C++11 ABI, we have to undo that setting here,
+ # using CGO_CXXFLAGS.
+ CGO_CXXFLAGS=-D_GLIBCXX_USE_CXX11_ABI=1 go install github.com/keroserene/go-webrtc
+ cd ..
+
+ # Building snowflake
+ cd snowflake
+ find -type f -print0 | xargs -0 touch --date="$REFERENCE_DATETIME"
+ cd client
+ go build -ldflags '-s'
+ cp -a client $PTDIR/snowflake-client
+ cd ..
+ mkdir -p $INSTDIR/Docs/snowflake
+ cp -a README.md LICENSE $INSTDIR/Docs/snowflake
+ cd ..
+
# Grabbing the results and making sure timestamps don't spoil them
cd $INSTDIR
~/build/dzip.sh pluggable-transports-linux$GBUILD_BITS-gbuilt.zip Tor/ Docs/
diff --git a/gitian/descriptors/linux/gitian-webrtc.yml b/gitian/descriptors/linux/gitian-webrtc.yml
new file mode 100644
index 0000000..ba654c5
--- /dev/null
+++ b/gitian/descriptors/linux/gitian-webrtc.yml
@@ -0,0 +1,125 @@
+---
+name: "webrtc-linux"
+distro: "debian"
+suites:
+- "wheezy"
+architectures:
+- "i386"
+- "amd64"
+packages:
+- "unzip"
+- "zip"
+- "hardening-wrapper"
+- "libasound2-dev"
+- "libexpat1-dev"
+- "libudev-dev"
+- "libx11-dev"
+- "libxext-dev"
+- "libxrandr-dev"
+- "default-jre-headless"
+- "default-jdk"
+reference_datetime: "2000-01-01 00:00:00"
+remotes:
+- "url": "https://chromium.googlesource.com/chromium/tools/depot_tools.git"
+ "dir": "depot_tools"
+files:
+- "dzip.sh"
+- "binutils-linux32-utils.zip"
+- "binutils-linux64-utils.zip"
+- "gcc-linux32-utils.zip"
+- "gcc-linux64-utils.zip"
+- "webrtc.tar.gz"
+script: |
+ INSTDIR="$HOME/install"
+ export REFERENCE_DATETIME
+ export TZ=UTC
+ export LC_ALL=C
+ umask 0022
+ #
+ mkdir -p $OUTDIR/
+
+ # Config options for hardening-wrapper
+ export DEB_BUILD_HARDENING=1
+ export DEB_BUILD_HARDENING_STACKPROTECTOR=1
+ export DEB_BUILD_HARDENING_FORTIFY=1
+ export DEB_BUILD_HARDENING_FORMAT=1
+ export DEB_BUILD_HARDENING_PIE=1
+
+ # Preparing Binutils and GCC for webrtc
+ unzip -d $INSTDIR binutils-linux$GBUILD_BITS-utils.zip
+ # Make sure gold is used with the hardening wrapper for full RELRO, see
+ # #13031.
+ cd $INSTDIR/binutils/bin
+ rm ld
+ cp /usr/bin/hardened-ld ./
+ mv ld.gold ld.gold.real
+ ln -sf hardened-ld ld.gold
+ ln -sf ld.gold ld
+ cd ~/build
+ unzip -d $INSTDIR gcc-linux$GBUILD_BITS-utils.zip
+ # Make sure we use the hardening wrapper when compiling Tor Browser.
+ cd $INSTDIR/gcc/bin
+ cp /usr/bin/hardened-cc ./
+ mv gcc gcc.real
+ mv c++ c++.real
+ ln -sf hardened-cc gcc
+ ln -sf hardened-cc c++
+ cd ~/build
+ export PATH=$INSTDIR/gcc/bin:$INSTDIR/binutils/bin:$PATH
+ ARCH=""
+ if [ $GBUILD_BITS == "64" ];
+ then
+ ARCH="64"
+ fi
+ # Make sure our GCC gets properly used.
+ export LD_LIBRARY_PATH=$INSTDIR/gcc/lib$ARCH
+
+ # Setting up depot_tools
+ # https://dev.chromium.org/developers/how-tos/install-depot-tools
+ export PATH="$PATH:$PWD/depot_tools"
+ # Disable automatic updating.
+ export DEPOT_TOOLS_UPDATE=0
+
+ # Building webrtc
+ tar xaf webrtc.tar.gz
+ cd webrtc/src
+ export GYP_CROSSCOMPILE=1
+ export GYP_DEFINES="OS=linux target_arch=$(if [ $GBUILD_BITS = 32 ]; then echo ia32; else echo x64; fi)"
+ # Do not use bundled utilities.
+ GYP_DEFINES+=" clang=0 host_clang=0 use_sysroot=0"
+ GYP_DEFINES+=" linux_use_bundled_gold=0 linux_use_gold_flags=0 linux_use_bundled_binutils=0"
+ # Avoid some dependencies. Some of these don't seem to work fully; for
+ # example even with use_alsa=0 we need libasound2-dev.
+ GYP_DEFINES+=" use_x11=0 use_gtk=0 use_gconf=0 use_alsa=0 use_pulseaudio=0 use_libpci=0 include_internal_audio_device=0 enabled_libjingle_device_manager=0"
+ # examples and tests also bring in dependencies.
+ GYP_DEFINES+=" include_examples=0 include_tests=0"
+ # embedded=1 is supposed to turn of various features; see
+ # https://bugs.chromium.org/p/chromium/issues/detail?id=318413.
+ GYP_DEFINES+=" embedded=1"
+ GYP_DEFINES+=" werror="
+ JAVA_HOME=/usr/lib/jvm/default-java webrtc/build/gyp_webrtc.py
+ ninja -C out/Release
+ # Run ninja once more, without include_tests=0, in order to build just the
+ # FakeAudioCaptureModule that go-webrtc uses.
+ GYP_DEFINES="$(echo "$GYP_DEFINES" | sed -e 's/include_tests=0//g')"
+ JAVA_HOME=/usr/lib/jvm/default-java webrtc/build/gyp_webrtc.py
+ ninja -C out/Release obj/webrtc/api/test/peerconnection_unittests.fakeaudiocapturemodule.o
+ # https://github.com/keroserene/go-webrtc/issues/23#issuecomment-175312648
+ # dump_syms_regtest.o is actually an executable, not an object file. If not
+ # excluded, it results in the error:
+ # libwebrtc-linux-386-magic.a(dump_syms_regtest.o): unsupported ELF file type 2
+ ar crs libwebrtc-magic.a $(find . -name '*.o' -not -name '*.main.o' -not -name 'dump_syms_regtest.o' | sort)
+ cd ../..
+
+ # Grabbing the result
+ cd $INSTDIR
+ mkdir -p webrtc/include webrtc/lib
+ cp -f $HOME/build/webrtc/src/libwebrtc-magic.a webrtc/lib/libwebrtc-linux-$(if [ $GBUILD_BITS = 32 ]; then echo 386; else echo amd64; fi)-magic.a
+ INCLUDE_DIR="$PWD/webrtc/include"
+ (cd $HOME/build/webrtc/src && for h in $(find talk/ webrtc/ -type f -name '*.h'); do
+ mkdir -p "$INCLUDE_DIR/$(dirname $h)"
+ cp -f "$h" "$INCLUDE_DIR/$h"
+ done)
+
+ ~/build/dzip.sh webrtc-linux$GBUILD_BITS-gbuilt.zip webrtc
+ cp webrtc-linux$GBUILD_BITS-gbuilt.zip $OUTDIR/
diff --git a/gitian/fetch-inputs.sh b/gitian/fetch-inputs.sh
index 65ebc11..01ec802 100755
--- a/gitian/fetch-inputs.sh
+++ b/gitian/fetch-inputs.sh
@@ -273,6 +273,7 @@ https-everywhere https://git.torproject.org/https-everywhere.git $HTTPSE_TA
torbutton https://git.torproject.org/torbutton.git $TORBUTTON_TAG
tor-launcher https://git.torproject.org/tor-launcher.git $TORLAUNCHER_TAG
tor-browser https://git.torproject.org/tor-browser.git $TORBROWSER_TAG
+libcxx https://github.com/llvm-mirror/libcxx $LIBCXX_TAG
mingw-w64-git http://git.code.sf.net/p/mingw-w64/mingw-w64 $MINGW_TAG
pyptlib https://git.torproject.org/pluggable-transports/pyptlib.git $PYPTLIB_TAG
obfsproxy https://git.torproject.org/pluggable-transports/obfsproxy.git $OBFSPROXY_TAG
@@ -290,6 +291,10 @@ goxnet https://go.googlesource.com/net $GO_X_NET_TAG
obfs4 https://git.torproject.org/pluggable-transports/obfs4.git $OBFS4_TAG
noto-fonts https://github.com/googlei18n/noto-fonts $NOTOFONTS_TAG
selfrando https://github.com/immunant/selfrando.git $SELFRANDO_TAG
+depot_tools https://chromium.googlesource.com/chromium/tools/depot_tools.git $DEPOT_TOOLS_TAG
+go-webrtc https://github.com/keroserene/go-webrtc $GO_WEBRTC_TAG
+snowflake https://git.torproject.org/pluggable-transports/snowflake.git $SNOWFLAKE_TAG
+uniuri https://github.com/dchest/uniuri $UNIURI_TAG
EOF
# HTTPS-Everywhere is special, too. We need to initialize the git submodules and
@@ -299,5 +304,28 @@ git submodule init
git submodule update
cd ..
+# WebRTC is special, having its own build system that brings in lots of Chromium dependencies.
+# https://webrtc.org/native-code/development/
+# depot_tools must have been downloaded before running this code.
+dir=webrtc
+PATH="$PATH:$PWD/depot_tools"
+# GYP_CROSSCOMPILE=1 and GYP_DEFINES="use_x11=0" prevent probing for certain dependencies.
+# Use --no-history because the whole checkout with history is about 12 GB.
+export GYP_CROSSCOMPILE=1
+export GYP_DEFINES="use_x11=0"
+mkdir -p "$dir"
+cd "$dir"
+if [ ! -d "src" ];
+then
+ # "fetch" is part of depot_tools.
+ fetch --nohooks --no-history webrtc
+fi
+# "gclient" is part of depot_tools. This download takes a long time the first time.
+# JAVA_HOME is needed in a hook for libjingle. The readlink line tries to find the current JRE.
+# default-java comes from the package default-jdk-headless.
+JAVA_HOME=/usr/lib/jvm/default-java gclient sync --with_branch_heads --no-history -r $WEBRTC_TAG
+cd ..
+tar --exclude .git -czf webrtc.tar.gz webrtc
+
exit 0
diff --git a/gitian/mkbundle-linux.sh b/gitian/mkbundle-linux.sh
index 48aac24..e5be697 100755
--- a/gitian/mkbundle-linux.sh
+++ b/gitian/mkbundle-linux.sh
@@ -108,7 +108,7 @@ if [ ! -f inputs/binutils-$BINUTILS_VER-linux64-utils.zip -o \
! -f inputs/self-rando-utils.zip ];
then
echo
- echo "****** Starting Utilities Component of Linux Bundle (1/5 for Linux) ******"
+ echo "****** Starting Utilities Component of Linux Bundle (1/6 for Linux) ******"
echo
./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit libevent=$LIBEVENT_TAG,selfrando=$SELFRANDO_TAG $DESCRIPTOR_DIR/linux/gitian-utils.yml
@@ -129,7 +129,7 @@ then
#cp -a result/utils-linux-res.yml inputs/
else
echo
- echo "****** SKIPPING already built Utilities Component of Linux Bundle (1/5 for Linux) ******"
+ echo "****** SKIPPING already built Utilities Component of Linux Bundle (1/6 for Linux) ******"
echo
# We might have built the utilities in the past but maybe the links are
# pointing to the wrong version. Refresh them.
@@ -145,7 +145,7 @@ fi
if [ ! -f inputs/tor-linux64-gbuilt.zip ];
then
echo
- echo "****** Starting Tor Component of Linux Bundle (2/5 for Linux) ******"
+ echo "****** Starting Tor Component of Linux Bundle (2/6 for Linux) ******"
echo
./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit tor=$TOR_TAG $DESCRIPTOR_DIR/linux/gitian-tor.yml
@@ -160,14 +160,14 @@ then
#cp -a result/tor-linux-res.yml inputs/
else
echo
- echo "****** SKIPPING already built Tor Component of Linux Bundle (2/5 for Linux) ******"
+ echo "****** SKIPPING already built Tor Component of Linux Bundle (2/6 for Linux) ******"
echo
fi
if [ ! -f inputs/tor-browser-linux64-gbuilt.zip ];
then
echo
- echo "****** Starting TorBrowser Component of Linux Bundle (3/5 for Linux) ******"
+ echo "****** Starting TorBrowser Component of Linux Bundle (3/6 for Linux) ******"
echo
./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit tor-browser=$TORBROWSER_TAG,faketime=$FAKETIME_TAG,selfrando=$SELFRANDO_TAG $DESCRIPTOR_DIR/linux/gitian-firefox.yml
@@ -183,17 +183,39 @@ then
#cp -a result/torbrowser-linux-res.yml inputs/
else
echo
- echo "****** SKIPPING already built TorBrowser Component of Linux Bundle (3/5 for Linux) ******"
+ echo "****** SKIPPING already built TorBrowser Component of Linux Bundle (3/6 for Linux) ******"
+ echo
+fi
+
+if [ ! -f inputs/webrtc-linux32-gbuilt.zip -o \
+ ! -f inputs/webrtc-linux64-gbuilt.zip ];
+then
+ echo
+ echo "****** Starting WebRTC Component of Linux Bundle (4/6 for Linux) ******"
+ echo
+
+ ./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit depot_tools=$DEPOT_TOOLS_TAG $DESCRIPTOR_DIR/linux/gitian-webrtc.yml
+ if [ $? -ne 0 ];
+ then
+ #mv var/build.log ./webrtc-fail-linux.log.`date +%Y%m%d%H%M%S`
+ exit 1
+ fi
+
+ cp -a build/out/webrtc-linux*-gbuilt.zip inputs/
+ #cp -a result/webrtc-linux-res.yml inputs/
+else
+ echo
+ echo "****** SKIPPING already built WebRTC Component of Linux Bundle (4/6 for Linux) ******"
echo
fi
if [ ! -f inputs/pluggable-transports-linux64-gbuilt.zip ];
then
echo
- echo "****** Starting Pluggable Transports Component of Linux Bundle (4/5 for Linux) ******"
+ echo "****** Starting Pluggable Transports Component of Linux Bundle (5/6 for Linux) ******"
echo
- ./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit pyptlib=$PYPTLIB_TAG,obfsproxy=$OBFSPROXY_TAG,libfte=$LIBFTE_TAG,fteproxy=$FTEPROXY_TAG,txsocksx=$TXSOCKSX_TAG,goptlib=$GOPTLIB_TAG,meek=$MEEK_TAG,ed25519=$GOED25519_TAG,siphash=$GOSIPHASH_TAG,goxcrypto=$GO_X_CRYPTO_TAG,goxnet=$GO_X_NET_TAG,obfs4=$OBFS4_TAG $DESCRIPTOR_DIR/linux/gitian-pluggable-transports.yml
+ ./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit pyptlib=$PYPTLIB_TAG,obfsproxy=$OBFSPROXY_TAG,libfte=$LIBFTE_TAG,fteproxy=$FTEPROXY_TAG,txsocksx=$TXSOCKSX_TAG,goptlib=$GOPTLIB_TAG,meek=$MEEK_TAG,ed25519=$GOED25519_TAG,siphash=$GOSIPHASH_TAG,goxcrypto=$GO_X_CRYPTO_TAG,goxnet=$GO_X_NET_TAG,obfs4=$OBFS4_TAG,go-webrtc=$GO_WEBRTC_TAG,snowflake=$SNOWFLAKE_TAG,uniuri=$UNIURI_TAG $DESCRIPTOR_DIR/linux/gitian-pluggable-transports.yml
if [ $? -ne 0 ];
then
#mv var/build.log ./pluggable-transports-fail-linux.log.`date +%Y%m%d%H%M%S`
@@ -204,14 +226,14 @@ then
#cp -a result/pluggable-transports-linux-res.yml inputs/
else
echo
- echo "****** SKIPPING already built Pluggable Transports Component of Linux Bundle (4/5 for Linux) ******"
+ echo "****** SKIPPING already built Pluggable Transports Component of Linux Bundle (5/6 for Linux) ******"
echo
fi
if [ ! -f inputs/bundle-linux.gbuilt ];
then
echo
- echo "****** Starting Bundling+Localization of Linux Bundle (5/5 for Linux) ******"
+ echo "****** Starting Bundling+Localization of Linux Bundle (6/6 for Linux) ******"
echo
cd $WRAPPER_DIR && ./record-inputs.sh $VERSIONS_FILE && cd $GITIAN_DIR
@@ -231,7 +253,7 @@ then
touch inputs/bundle-linux.gbuilt
else
echo
- echo "****** SKIPPING already built Bundling+Localization of Linux Bundle (5/5 for Linux) ******"
+ echo "****** SKIPPING already built Bundling+Localization of Linux Bundle (6/6 for Linux) ******"
echo
fi
diff --git a/gitian/verify-tags.sh b/gitian/verify-tags.sh
index b7c45c4..575901b 100755
--- a/gitian/verify-tags.sh
+++ b/gitian/verify-tags.sh
@@ -108,6 +108,7 @@ EOF
while read dir commit; do
check_git_hash "$dir" "$commit"
done << EOF
+libcxx $LIBCXX_TAG
mingw-w64-git $MINGW_TAG
libdmg-hfsplus $LIBDMG_TAG
libfte $LIBFTE_TAG
@@ -120,6 +121,10 @@ goxcrypto $GO_X_CRYPTO_TAG
goxnet $GO_X_NET_TAG
noto-fonts $NOTOFONTS_TAG
selfrando $SELFRANDO_TAG
+depot_tools $DEPOT_TOOLS_TAG
+go-webrtc $GO_WEBRTC_TAG
+snowflake $SNOWFLAKE_TAG
+uniuri $UNIURI_TAG
EOF
# Verify signatures on signed packages
@@ -152,6 +157,7 @@ do
fi
done
+# webrtc? Its fetch brings in sources from many repos.
cd "$INPUTS_DIR"
verify_git "." "$WRAPPER_DIR/gpg/torbutton.gpg" "$GITIAN_TAG"
diff --git a/gitian/versions b/gitian/versions
index 3b84b63..1b88910 100755
--- a/gitian/versions
+++ b/gitian/versions
@@ -19,8 +19,12 @@ TORBUTTON_TAG=1.9.3.2
HTTPSE_TAG=5.1.0
NSIS_TAG=v0.3
ZLIB_TAG=v1.2.8
-LIBEVENT_TAG=release-2.0.21-stable
-MINGW_TAG=a883b47a45ff74ced41dfbd9f748d5c2c61f3c01 # due to bug 1156131
+LIBEVENT_TAG=release-2.0.22-stable
+CMAKE_TAG=v2.8.12.2
+LLVM_TAG=8f188e0ea735ac9383a65a0d1c846eb790c2ec74 # r247539
+CLANG_TAG=592b43b609b42cffd1531a700c140e10766bf049 # r247539
+LIBCXX_TAG=af9a44f256be54de6874d1eefd1d282d0671c0cf # r247539
+MINGW_TAG=a0cd5afeb60be3be0860e9a203314c10485bb9b8
PYPTLIB_TAG=pyptlib-0.0.6
OBFSPROXY_TAG=obfsproxy-0.2.12
FLASHPROXY_TAG=1.6
@@ -37,6 +41,11 @@ GO_X_CRYPTO_TAG=4ed45ec682102c643324fae5dff8dab085b6c300
GO_X_NET_TAG=7dbad50ab5b31073856416cdcfeb2796d682f844
OBFS4_TAG=obfs4proxy-0.0.5
NOTOFONTS_TAG=720e34851382ee3c1ef024d8dffb68ffbfb234c2
+DEPOT_TOOLS_TAG=28216cd14b44716db5c83634afbdc6e90492652b
+WEBRTC_TAG=f33698296719f956497d2dbff81b5080864a8804 # https://chromium.googlesource.com/external/webrtc.git/+/refs/branch-heads/52
+GO_WEBRTC_TAG=69c5ca70533142494d145b43ef2f46ca94715557
+SNOWFLAKE_TAG=6cecd31fd896eb26e64ad8bab8a9ea510ec3b21d
+UNIURI_TAG=8902c56451e9b58ff940bbe5fec35d5f9c04584a
GITIAN_TAG=tor-browser-builder-3.x-8
diff --git a/gitian/versions.alpha b/gitian/versions.alpha
index f553468..d9ce0cb 100755
--- a/gitian/versions.alpha
+++ b/gitian/versions.alpha
@@ -29,6 +29,7 @@ LIBEVENT_TAG=release-2.0.22-stable
CMAKE_TAG=v2.8.12.2
LLVM_TAG=8f188e0ea735ac9383a65a0d1c846eb790c2ec74 # r247539
CLANG_TAG=592b43b609b42cffd1531a700c140e10766bf049 # r247539
+LIBCXX_TAG=af9a44f256be54de6874d1eefd1d282d0671c0cf # r247539
MINGW_TAG=a0cd5afeb60be3be0860e9a203314c10485bb9b8
PYPTLIB_TAG=pyptlib-0.0.6
OBFSPROXY_TAG=obfsproxy-0.2.12
@@ -46,6 +47,11 @@ GO_X_NET_TAG=7dbad50ab5b31073856416cdcfeb2796d682f844
OBFS4_TAG=obfs4proxy-0.0.5
NOTOFONTS_TAG=720e34851382ee3c1ef024d8dffb68ffbfb234c2
SELFRANDO_TAG=44ac0df8c0e8eb291f2d913e2dd147000bf54863
+DEPOT_TOOLS_TAG=28216cd14b44716db5c83634afbdc6e90492652b
+WEBRTC_TAG=f33698296719f956497d2dbff81b5080864a8804 # https://chromium.googlesource.com/external/webrtc.git/+/refs/branch-heads/52
+GO_WEBRTC_TAG=69c5ca70533142494d145b43ef2f46ca94715557
+SNOWFLAKE_TAG=6cecd31fd896eb26e64ad8bab8a9ea510ec3b21d
+UNIURI_TAG=8902c56451e9b58ff940bbe5fec35d5f9c04584a
GITIAN_TAG=tor-browser-builder-4-1
diff --git a/gitian/versions.beta b/gitian/versions.beta
index 2bcde03..a9c988e 100755
--- a/gitian/versions.beta
+++ b/gitian/versions.beta
@@ -30,6 +30,11 @@ TXSOCKSX_TAG=216eb0894a1755872f4789f9458aa6cf543b8433 # unsigned habnabit/1.13.0
GOPTLIB_TAG=0.2
MEEK_TAG=0.25
NOTOFONTS_TAG=720e34851382ee3c1ef024d8dffb68ffbfb234c2
+DEPOT_TOOLS_TAG=28216cd14b44716db5c83634afbdc6e90492652b
+WEBRTC_TAG=f33698296719f956497d2dbff81b5080864a8804 # https://chromium.googlesource.com/external/webrtc.git/+/refs/branch-heads/52
+GO_WEBRTC_TAG=69c5ca70533142494d145b43ef2f46ca94715557
+SNOWFLAKE_TAG=6cecd31fd896eb26e64ad8bab8a9ea510ec3b21d
+UNIURI_TAG=8902c56451e9b58ff940bbe5fec35d5f9c04584a
GITIAN_TAG=tor-browser-builder-3.x-6
diff --git a/gitian/versions.nightly b/gitian/versions.nightly
index d606efc..ad3f017 100755
--- a/gitian/versions.nightly
+++ b/gitian/versions.nightly
@@ -32,6 +32,7 @@ LIBEVENT_TAG=release-2.0.22-stable
CMAKE_TAG=v2.8.12.2
LLVM_TAG=8f188e0ea735ac9383a65a0d1c846eb790c2ec74 # r247539
CLANG_TAG=592b43b609b42cffd1531a700c140e10766bf049 # r247539
+LIBCXX_TAG=af9a44f256be54de6874d1eefd1d282d0671c0cf # r247539
MINGW_TAG=a0cd5afeb60be3be0860e9a203314c10485bb9b8
PYPTLIB_TAG=master
OBFSPROXY_TAG=master
@@ -49,6 +50,11 @@ GO_X_NET_TAG=master
OBFS4_TAG=master
NOTOFONTS_TAG=720e34851382ee3c1ef024d8dffb68ffbfb234c2
SELFRANDO_TAG=44ac0df8c0e8eb291f2d913e2dd147000bf54863
+DEPOT_TOOLS_TAG=master
+WEBRTC_TAG=f33698296719f956497d2dbff81b5080864a8804 # https://chromium.googlesource.com/external/webrtc.git/+/refs/branch-heads/52
+GO_WEBRTC_TAG=master
+SNOWFLAKE_TAG=master
+UNIURI_TAG=master
GITIAN_TAG=tor-browser-builder-4
1
0

[tor-browser-bundle/master] Bug 20735: Add snowflake pt to alpha Linux builds
by gk@torproject.org 05 Jan '17
by gk@torproject.org 05 Jan '17
05 Jan '17
commit 761b0dbabd8fd14e8d9149634b52869f0c68375b
Author: David Fifield <david(a)bamsoftware.com>
Date: Mon Dec 19 13:10:04 2016 -0800
Bug 20735: Add snowflake pt to alpha Linux builds
* Snowflake depends on go-webrtc, which in turn depends on libwebrtc,
which adds significantly to the build. webrtc is special, having its
own build system that brings in lots of Chromium dependencies.
* Further, building cgo reproducibly requires go 1.7.3 and a compiler
that supports the following flags,
-gno-record-gcc-switches
-fdebug-prefix-map=$WORK=/tmp/go-build
---
Bundle-Data/PTConfigs/bridge_prefs.js | 2 +
.../PTConfigs/linux/torrc-defaults-appendix | 3 +
gitian/Makefile | 5 +-
gitian/check-prerequisites.sh | 8 +-
.../linux/gitian-pluggable-transports.yml | 79 +++++++++++++
gitian/descriptors/linux/gitian-webrtc.yml | 125 +++++++++++++++++++++
gitian/fetch-inputs.sh | 28 +++++
gitian/mkbundle-linux.sh | 48 +++++---
gitian/verify-tags.sh | 6 +
gitian/versions | 6 +
gitian/versions.alpha | 6 +
gitian/versions.beta | 5 +
gitian/versions.nightly | 6 +
13 files changed, 309 insertions(+), 18 deletions(-)
diff --git a/Bundle-Data/PTConfigs/bridge_prefs.js b/Bundle-Data/PTConfigs/bridge_prefs.js
index 6831555..bd92585 100644
--- a/Bundle-Data/PTConfigs/bridge_prefs.js
+++ b/Bundle-Data/PTConfigs/bridge_prefs.js
@@ -38,3 +38,5 @@ pref("extensions.torlauncher.default_bridge.obfs4.20", "obfs4 85.17.30.79:443 FC
pref("extensions.torlauncher.default_bridge.meek-amazon.1", "meek 0.0.2.0:2 B9E7141C594AF25699E0079C1F0146F409495296 url=https://d2zfqthxsdq309.cloudfront.net/ front=a0.awsstatic.com");
pref("extensions.torlauncher.default_bridge.meek-azure.1", "meek 0.0.2.0:3 A2C13B7DFCAB1CBF3A884B6EB99A98067AB6EF44 url=https://az786092.vo.msecnd.net/ front=ajax.aspnetcdn.com");
+
+pref("extensions.torlauncher.default_bridge.snowflake.1", "snowflake 0.0.3.0:1 B05EC36590AC0374F0E4D36DDA77908FD59D97F3");
diff --git a/Bundle-Data/PTConfigs/linux/torrc-defaults-appendix b/Bundle-Data/PTConfigs/linux/torrc-defaults-appendix
index c79efde..7fbf63c 100644
--- a/Bundle-Data/PTConfigs/linux/torrc-defaults-appendix
+++ b/Bundle-Data/PTConfigs/linux/torrc-defaults-appendix
@@ -6,3 +6,6 @@ ClientTransportPlugin obfs2,obfs3,obfs4,scramblesuit exec ./TorBrowser/Tor/Plugg
## meek configuration
ClientTransportPlugin meek exec ./TorBrowser/Tor/PluggableTransports/meek-client-torbrowser -- ./TorBrowser/Tor/PluggableTransports/meek-client
+
+## snowflake configuration
+ClientTransportPlugin snowflake exec ./TorBrowser/Tor/PluggableTransports/snowflake-client -url https://snowflake-reg.appspot.com/ -front www.google.com -ice stun:stun.l.google.com:19302
diff --git a/gitian/Makefile b/gitian/Makefile
index 5694cbf..666dc53 100644
--- a/gitian/Makefile
+++ b/gitian/Makefile
@@ -101,7 +101,7 @@ prep-alpha:
./check-prerequisites.sh
$(TORSOCKS) ./fetch-inputs.sh ../../gitian-builder/inputs/ versions.alpha
-clean: clean-utils clean-tor clean-browser clean-pt clean-sandbox clean-bundle
+clean: clean-utils clean-tor clean-browser clean-webrtc clean-pt clean-sandbox clean-bundle
rm -f ../../gitian-builder/inputs/*.yml
rm -f ../../gitian-builder/inputs/bundle.inputs
rm -f ../../gitian-builder/inputs/versions*
@@ -120,6 +120,9 @@ clean-browser: clean-bundle
rm -f ../../gitian-builder/inputs/tor-browser-win*
rm -f ../../gitian-builder/inputs/mar-tools-*
+clean-webrtc: clean-bundle
+ rm -f ../../gitian-builder/inputs/webrtc-*-gbuilt.zip
+
clean-pt: clean-bundle
rm -f ../../gitian-builder/inputs/pluggable-transports*
diff --git a/gitian/check-prerequisites.sh b/gitian/check-prerequisites.sh
index 858fd4d..530e160 100755
--- a/gitian/check-prerequisites.sh
+++ b/gitian/check-prerequisites.sh
@@ -17,7 +17,7 @@ then
VERSION=`cat /etc/issue | grep -Eo '[0-9]{2}' | head -1`
if [ "$VERSION" -ge "14" ];
then
- dpkg -s ruby apache2 git apt-cacher-ng qemu-kvm virt-what lxc lxctl fakeroot faketime zip unzip subversion debian-archive-keyring torsocks tor 2>/dev/null >/dev/null
+ dpkg -s ruby apache2 git apt-cacher-ng qemu-kvm virt-what lxc lxctl fakeroot faketime zip unzip subversion debian-archive-keyring curl pkg-config libgtk2.0-dev libglib2.0-dev torsocks tor 2>/dev/null >/dev/null
if [ $? -ne 0 ];
then
@@ -25,7 +25,7 @@ then
echo
echo "Please run:"
echo " sudo apt-get install torsocks tor"
- echo " sudo torsocks apt-get install ruby apache2 git apt-cacher-ng qemu-kvm virt-what lxc lxctl fakeroot faketime zip unzip subversion debian-archive-keyring"
+ echo " sudo torsocks apt-get install ruby apache2 git apt-cacher-ng qemu-kvm virt-what lxc lxctl fakeroot faketime zip unzip subversion debian-archive-keyring curl pkg-config libgtk2.0-dev libglib2.0-dev"
exit 1
fi
else
@@ -34,7 +34,7 @@ then
fi
elif [ $DISTRO = "Debian" ];
then
- dpkg -s ruby git apt-cacher-ng qemu-kvm virt-what lxc lxctl fakeroot zip unzip torsocks tor python-cheetah debootstrap parted kpartx rsync 2>/dev/null >/dev/null
+ dpkg -s ruby git apt-cacher-ng qemu-kvm virt-what lxc lxctl fakeroot zip unzip python-cheetah debootstrap parted kpartx rsync curl pkg-config libgtk2.0-dev libglib2.0-dev torsocks tor 2>/dev/null >/dev/null
if [ $? -ne 0 ];
then
@@ -42,7 +42,7 @@ then
echo
echo "Please run"
echo " sudo apt-get install torsocks tor"
- echo " sudo torsocks apt-get install ruby git apt-cacher-ng qemu-kvm virt-what lxc lxctl fakeroot zip unzip python-cheetah debootstrap parted kpartx rsync"
+ echo " sudo torsocks apt-get install ruby git apt-cacher-ng qemu-kvm virt-what lxc lxctl fakeroot zip unzip python-cheetah debootstrap parted kpartx rsync curl pkg-config libgtk2.0-dev libglib2.0-dev"
exit 1
fi
else
diff --git a/gitian/descriptors/linux/gitian-pluggable-transports.yml b/gitian/descriptors/linux/gitian-pluggable-transports.yml
index c790a9f..ecf49de 100644
--- a/gitian/descriptors/linux/gitian-pluggable-transports.yml
+++ b/gitian/descriptors/linux/gitian-pluggable-transports.yml
@@ -12,6 +12,8 @@ packages:
- "python-dev"
- "zip"
- "hardening-wrapper"
+- "pkg-config"
+- "libx11-dev"
reference_datetime: "2000-01-01 00:00:00"
remotes:
- "url": "https://git.torproject.org/pluggable-transports/pyptlib.git"
@@ -38,6 +40,12 @@ remotes:
"dir": "goxnet"
- "url": "https://git.torproject.org/pluggable-transports/obfs4.git"
"dir": "obfs4"
+- "url": "https://github.com/keroserene/go-webrtc.git"
+ "dir": "go-webrtc"
+- "url": "https://git.torproject.org/pluggable-transports/snowflake.git"
+ "dir": "snowflake"
+- "url": "https://github.com/dchest/uniuri.git"
+ "dir": "uniuri"
files:
- "pycrypto.tar.gz"
- "argparse.tar.gz"
@@ -52,6 +60,12 @@ files:
- "openssl-linux64-utils.zip"
- "go-linux32-utils.zip"
- "go-linux64-utils.zip"
+- "binutils-linux32-utils.zip"
+- "binutils-linux64-utils.zip"
+- "gcc-linux32-utils.zip"
+- "gcc-linux64-utils.zip"
+- "webrtc-linux32-gbuilt.zip"
+- "webrtc-linux64-gbuilt.zip"
script: |
INSTDIR="$HOME/install"
PTDIR="$INSTDIR/Tor/PluggableTransports"
@@ -78,6 +92,35 @@ script: |
# FTE only needs libgmp.so.10 and no libgmpxx anymore.
cp $INSTDIR/gmp/lib/libgmp.so.10 $INSTDIR/Tor
+ # Preparing Binutils and GCC for webrtc
+ unzip -d $INSTDIR binutils-linux$GBUILD_BITS-utils.zip
+ # Make sure gold is used with the hardening wrapper for full RELRO, see
+ # #13031.
+ cd $INSTDIR/binutils/bin
+ rm ld
+ cp /usr/bin/hardened-ld ./
+ mv ld.gold ld.gold.real
+ ln -sf hardened-ld ld.gold
+ ln -sf ld.gold ld
+ cd ~/build
+ unzip -d $INSTDIR gcc-linux$GBUILD_BITS-utils.zip
+ # Make sure we use the hardening wrapper when compiling Tor Browser.
+ cd $INSTDIR/gcc/bin
+ cp /usr/bin/hardened-cc ./
+ mv gcc gcc.real
+ mv c++ c++.real
+ ln -sf hardened-cc gcc
+ ln -sf hardened-cc c++
+ cd ~/build
+ export PATH=$INSTDIR/gcc/bin:$INSTDIR/binutils/bin:$PATH
+ ARCH=""
+ if [ $GBUILD_BITS == "64" ];
+ then
+ ARCH="64"
+ fi
+ # Make sure our GCC gets properly used.
+ export LD_LIBRARY_PATH=$INSTDIR/gcc/lib$ARCH
+
# Building pyptlib
cd pyptlib
find -type f -print0 | xargs -0 touch --date="$REFERENCE_DATETIME"
@@ -216,6 +259,14 @@ script: |
go install github.com/dchest/siphash
cd ..
+ # Building go uniuri
+ cd uniuri
+ find -type f -print0 | xargs -0 touch --date="$REFERENCE_DATETIME"
+ mkdir -p "$GOPATH/src/github.com/dchest/"
+ ln -sf "$PWD" "$GOPATH/src/github.com/dchest/uniuri"
+ go install github.com/dchest/uniuri
+ cd ..
+
# Building golang.org/x/crypto (obfs4proxy > 0.0.3 || Go >= 1.4)
cd goxcrypto
find -type f -print0 | xargs -0 touch --date="$REFERENCE_DATETIME"
@@ -244,6 +295,34 @@ script: |
cp -a obfs4proxy $PTDIR
cd ../..
+ unzip webrtc-linux$GBUILD_BITS-gbuilt.zip
+
+ # Building go-webrtc
+ cd go-webrtc
+ # Replace the prebuilt webrtc library with our own one.
+ rm -rf include/ lib/
+ ln -sf ../webrtc/{include,lib} .
+ find -type f -print0 | xargs -0 touch --date="$REFERENCE_DATETIME"
+ mkdir -p "$GOPATH/src/github.com/keroserene/"
+ ln -sf "$PWD" "$GOPATH/src/github.com/keroserene/go-webrtc"
+ # The go-webrtc package sets _GLIBCXX_USE_CXX11_ABI=0 for compatibility with
+ # the prebuilt libwebrtc-magic.a libraries. Since we build our own
+ # libwebrtc-magic.a with the C++11 ABI, we have to undo that setting here,
+ # using CGO_CXXFLAGS.
+ CGO_CXXFLAGS=-D_GLIBCXX_USE_CXX11_ABI=1 go install github.com/keroserene/go-webrtc
+ cd ..
+
+ # Building snowflake
+ cd snowflake
+ find -type f -print0 | xargs -0 touch --date="$REFERENCE_DATETIME"
+ cd client
+ go build -ldflags '-s'
+ cp -a client $PTDIR/snowflake-client
+ cd ..
+ mkdir -p $INSTDIR/Docs/snowflake
+ cp -a README.md LICENSE $INSTDIR/Docs/snowflake
+ cd ..
+
# Grabbing the results and making sure timestamps don't spoil them
cd $INSTDIR
~/build/dzip.sh pluggable-transports-linux$GBUILD_BITS-gbuilt.zip Tor/ Docs/
diff --git a/gitian/descriptors/linux/gitian-webrtc.yml b/gitian/descriptors/linux/gitian-webrtc.yml
new file mode 100644
index 0000000..ba654c5
--- /dev/null
+++ b/gitian/descriptors/linux/gitian-webrtc.yml
@@ -0,0 +1,125 @@
+---
+name: "webrtc-linux"
+distro: "debian"
+suites:
+- "wheezy"
+architectures:
+- "i386"
+- "amd64"
+packages:
+- "unzip"
+- "zip"
+- "hardening-wrapper"
+- "libasound2-dev"
+- "libexpat1-dev"
+- "libudev-dev"
+- "libx11-dev"
+- "libxext-dev"
+- "libxrandr-dev"
+- "default-jre-headless"
+- "default-jdk"
+reference_datetime: "2000-01-01 00:00:00"
+remotes:
+- "url": "https://chromium.googlesource.com/chromium/tools/depot_tools.git"
+ "dir": "depot_tools"
+files:
+- "dzip.sh"
+- "binutils-linux32-utils.zip"
+- "binutils-linux64-utils.zip"
+- "gcc-linux32-utils.zip"
+- "gcc-linux64-utils.zip"
+- "webrtc.tar.gz"
+script: |
+ INSTDIR="$HOME/install"
+ export REFERENCE_DATETIME
+ export TZ=UTC
+ export LC_ALL=C
+ umask 0022
+ #
+ mkdir -p $OUTDIR/
+
+ # Config options for hardening-wrapper
+ export DEB_BUILD_HARDENING=1
+ export DEB_BUILD_HARDENING_STACKPROTECTOR=1
+ export DEB_BUILD_HARDENING_FORTIFY=1
+ export DEB_BUILD_HARDENING_FORMAT=1
+ export DEB_BUILD_HARDENING_PIE=1
+
+ # Preparing Binutils and GCC for webrtc
+ unzip -d $INSTDIR binutils-linux$GBUILD_BITS-utils.zip
+ # Make sure gold is used with the hardening wrapper for full RELRO, see
+ # #13031.
+ cd $INSTDIR/binutils/bin
+ rm ld
+ cp /usr/bin/hardened-ld ./
+ mv ld.gold ld.gold.real
+ ln -sf hardened-ld ld.gold
+ ln -sf ld.gold ld
+ cd ~/build
+ unzip -d $INSTDIR gcc-linux$GBUILD_BITS-utils.zip
+ # Make sure we use the hardening wrapper when compiling Tor Browser.
+ cd $INSTDIR/gcc/bin
+ cp /usr/bin/hardened-cc ./
+ mv gcc gcc.real
+ mv c++ c++.real
+ ln -sf hardened-cc gcc
+ ln -sf hardened-cc c++
+ cd ~/build
+ export PATH=$INSTDIR/gcc/bin:$INSTDIR/binutils/bin:$PATH
+ ARCH=""
+ if [ $GBUILD_BITS == "64" ];
+ then
+ ARCH="64"
+ fi
+ # Make sure our GCC gets properly used.
+ export LD_LIBRARY_PATH=$INSTDIR/gcc/lib$ARCH
+
+ # Setting up depot_tools
+ # https://dev.chromium.org/developers/how-tos/install-depot-tools
+ export PATH="$PATH:$PWD/depot_tools"
+ # Disable automatic updating.
+ export DEPOT_TOOLS_UPDATE=0
+
+ # Building webrtc
+ tar xaf webrtc.tar.gz
+ cd webrtc/src
+ export GYP_CROSSCOMPILE=1
+ export GYP_DEFINES="OS=linux target_arch=$(if [ $GBUILD_BITS = 32 ]; then echo ia32; else echo x64; fi)"
+ # Do not use bundled utilities.
+ GYP_DEFINES+=" clang=0 host_clang=0 use_sysroot=0"
+ GYP_DEFINES+=" linux_use_bundled_gold=0 linux_use_gold_flags=0 linux_use_bundled_binutils=0"
+ # Avoid some dependencies. Some of these don't seem to work fully; for
+ # example even with use_alsa=0 we need libasound2-dev.
+ GYP_DEFINES+=" use_x11=0 use_gtk=0 use_gconf=0 use_alsa=0 use_pulseaudio=0 use_libpci=0 include_internal_audio_device=0 enabled_libjingle_device_manager=0"
+ # examples and tests also bring in dependencies.
+ GYP_DEFINES+=" include_examples=0 include_tests=0"
+ # embedded=1 is supposed to turn of various features; see
+ # https://bugs.chromium.org/p/chromium/issues/detail?id=318413.
+ GYP_DEFINES+=" embedded=1"
+ GYP_DEFINES+=" werror="
+ JAVA_HOME=/usr/lib/jvm/default-java webrtc/build/gyp_webrtc.py
+ ninja -C out/Release
+ # Run ninja once more, without include_tests=0, in order to build just the
+ # FakeAudioCaptureModule that go-webrtc uses.
+ GYP_DEFINES="$(echo "$GYP_DEFINES" | sed -e 's/include_tests=0//g')"
+ JAVA_HOME=/usr/lib/jvm/default-java webrtc/build/gyp_webrtc.py
+ ninja -C out/Release obj/webrtc/api/test/peerconnection_unittests.fakeaudiocapturemodule.o
+ # https://github.com/keroserene/go-webrtc/issues/23#issuecomment-175312648
+ # dump_syms_regtest.o is actually an executable, not an object file. If not
+ # excluded, it results in the error:
+ # libwebrtc-linux-386-magic.a(dump_syms_regtest.o): unsupported ELF file type 2
+ ar crs libwebrtc-magic.a $(find . -name '*.o' -not -name '*.main.o' -not -name 'dump_syms_regtest.o' | sort)
+ cd ../..
+
+ # Grabbing the result
+ cd $INSTDIR
+ mkdir -p webrtc/include webrtc/lib
+ cp -f $HOME/build/webrtc/src/libwebrtc-magic.a webrtc/lib/libwebrtc-linux-$(if [ $GBUILD_BITS = 32 ]; then echo 386; else echo amd64; fi)-magic.a
+ INCLUDE_DIR="$PWD/webrtc/include"
+ (cd $HOME/build/webrtc/src && for h in $(find talk/ webrtc/ -type f -name '*.h'); do
+ mkdir -p "$INCLUDE_DIR/$(dirname $h)"
+ cp -f "$h" "$INCLUDE_DIR/$h"
+ done)
+
+ ~/build/dzip.sh webrtc-linux$GBUILD_BITS-gbuilt.zip webrtc
+ cp webrtc-linux$GBUILD_BITS-gbuilt.zip $OUTDIR/
diff --git a/gitian/fetch-inputs.sh b/gitian/fetch-inputs.sh
index b3d5c26..729e492 100755
--- a/gitian/fetch-inputs.sh
+++ b/gitian/fetch-inputs.sh
@@ -277,6 +277,7 @@ tor-browser https://git.torproject.org/tor-browser.git $TORBR
cmake https://cmake.org/cmake.git $CMAKE_TAG
llvm https://github.com/llvm-mirror/llvm $LLVM_TAG
clang https://github.com/llvm-mirror/clang $CLANG_TAG
+libcxx https://github.com/llvm-mirror/libcxx $LIBCXX_TAG
mingw-w64-git http://git.code.sf.net/p/mingw-w64/mingw-w64 $MINGW_TAG
pyptlib https://git.torproject.org/pluggable-transports/pyptlib.git $PYPTLIB_TAG
obfsproxy https://git.torproject.org/pluggable-transports/obfsproxy.git $OBFSPROXY_TAG
@@ -296,6 +297,10 @@ noto-fonts https://github.com/googlei18n/noto-fonts $NOTOFONTS_TAG
errors https://github.com/pkg/errors $ERRORS_TAG
gb https://github.com/constabulary/gb $GB_TAG
sandbox https://git.schwanenlied.me/yawning/sandboxed-tor-browser $SANDBOX_TAG
+depot_tools https://chromium.googlesource.com/chromium/tools/depot_tools.git $DEPOT_TOOLS_TAG
+go-webrtc https://github.com/keroserene/go-webrtc $GO_WEBRTC_TAG
+snowflake https://git.torproject.org/pluggable-transports/snowflake.git $SNOWFLAKE_TAG
+uniuri https://github.com/dchest/uniuri $UNIURI_TAG
EOF
# HTTPS-Everywhere is special, too. We need to initialize the git submodules and
@@ -305,5 +310,28 @@ git submodule init
git submodule update
cd ..
+# WebRTC is special, having its own build system that brings in lots of Chromium dependencies.
+# https://webrtc.org/native-code/development/
+# depot_tools must have been downloaded before running this code.
+dir=webrtc
+PATH="$PATH:$PWD/depot_tools"
+# GYP_CROSSCOMPILE=1 and GYP_DEFINES="use_x11=0" prevent probing for certain dependencies.
+# Use --no-history because the whole checkout with history is about 12 GB.
+export GYP_CROSSCOMPILE=1
+export GYP_DEFINES="use_x11=0"
+mkdir -p "$dir"
+cd "$dir"
+if [ ! -d "src" ];
+then
+ # "fetch" is part of depot_tools.
+ fetch --nohooks --no-history webrtc
+fi
+# "gclient" is part of depot_tools. This download takes a long time the first time.
+# JAVA_HOME is needed in a hook for libjingle. The readlink line tries to find the current JRE.
+# default-java comes from the package default-jdk-headless.
+JAVA_HOME=/usr/lib/jvm/default-java gclient sync --with_branch_heads --no-history -r $WEBRTC_TAG
+cd ..
+tar --exclude .git -czf webrtc.tar.gz webrtc
+
exit 0
diff --git a/gitian/mkbundle-linux.sh b/gitian/mkbundle-linux.sh
index 27cccd0..f1da2e0 100755
--- a/gitian/mkbundle-linux.sh
+++ b/gitian/mkbundle-linux.sh
@@ -114,7 +114,7 @@ if [ ! -f inputs/binutils-$BINUTILS_VER-linux32-utils.zip -o \
! -f inputs/go-$GO_VER-linux64-utils.zip ];
then
echo
- echo "****** Starting Utilities Component of Linux Bundle (1/6 for Linux) ******"
+ echo "****** Starting Utilities Component of Linux Bundle (1/7 for Linux) ******"
echo
./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit libevent=$LIBEVENT_TAG $DESCRIPTOR_DIR/linux/gitian-utils.yml
@@ -142,7 +142,7 @@ then
#cp -a result/utils-linux-res.yml inputs/
else
echo
- echo "****** SKIPPING already built Utilities Component of Linux Bundle (1/6 for Linux) ******"
+ echo "****** SKIPPING already built Utilities Component of Linux Bundle (1/7 for Linux) ******"
echo
# We might have built the utilities in the past but maybe the links are
# pointing to the wrong version. Refresh them.
@@ -166,7 +166,7 @@ if [ ! -f inputs/tor-linux32-gbuilt.zip -o \
! -f inputs/tor-linux64-gbuilt.zip ];
then
echo
- echo "****** Starting Tor Component of Linux Bundle (2/6 for Linux) ******"
+ echo "****** Starting Tor Component of Linux Bundle (2/7 for Linux) ******"
echo
./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit tor=$TOR_TAG $DESCRIPTOR_DIR/linux/gitian-tor.yml
@@ -181,7 +181,7 @@ then
#cp -a result/tor-linux-res.yml inputs/
else
echo
- echo "****** SKIPPING already built Tor Component of Linux Bundle (2/6 for Linux) ******"
+ echo "****** SKIPPING already built Tor Component of Linux Bundle (2/7 for Linux) ******"
echo
fi
@@ -190,7 +190,7 @@ if [ ! -f inputs/tor-browser-linux32-gbuilt.zip -o \
! -f inputs/tor-browser-linux64-gbuilt.zip ];
then
echo
- echo "****** Starting TorBrowser Component of Linux Bundle (3/6 for Linux) ******"
+ echo "****** Starting TorBrowser Component of Linux Bundle (3/7 for Linux) ******"
echo
./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit tor-browser=$TORBROWSER_TAG,faketime=$FAKETIME_TAG $DESCRIPTOR_DIR/linux/gitian-firefox.yml
@@ -206,7 +206,29 @@ then
#cp -a result/torbrowser-linux-res.yml inputs/
else
echo
- echo "****** SKIPPING already built TorBrowser Component of Linux Bundle (3/6 for Linux) ******"
+ echo "****** SKIPPING already built TorBrowser Component of Linux Bundle (3/7 for Linux) ******"
+ echo
+fi
+
+if [ ! -f inputs/webrtc-linux32-gbuilt.zip -o \
+ ! -f inputs/webrtc-linux64-gbuilt.zip ];
+then
+ echo
+ echo "****** Starting WebRTC Component of Linux Bundle (4/7 for Linux) ******"
+ echo
+
+ ./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit depot_tools=$DEPOT_TOOLS_TAG $DESCRIPTOR_DIR/linux/gitian-webrtc.yml
+ if [ $? -ne 0 ];
+ then
+ #mv var/build.log ./webrtc-fail-linux.log.`date +%Y%m%d%H%M%S`
+ exit 1
+ fi
+
+ cp -a build/out/webrtc-linux*-gbuilt.zip inputs/
+ #cp -a result/webrtc-linux-res.yml inputs/
+else
+ echo
+ echo "****** SKIPPING already built WebRTC Component of Linux Bundle (4/7 for Linux) ******"
echo
fi
@@ -214,10 +236,10 @@ if [ ! -f inputs/pluggable-transports-linux32-gbuilt.zip -o \
! -f inputs/pluggable-transports-linux64-gbuilt.zip ];
then
echo
- echo "****** Starting Pluggable Transports Component of Linux Bundle (4/6 for Linux) ******"
+ echo "****** Starting Pluggable Transports Component of Linux Bundle (5/7 for Linux) ******"
echo
- ./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit pyptlib=$PYPTLIB_TAG,obfsproxy=$OBFSPROXY_TAG,libfte=$LIBFTE_TAG,fteproxy=$FTEPROXY_TAG,txsocksx=$TXSOCKSX_TAG,goptlib=$GOPTLIB_TAG,meek=$MEEK_TAG,ed25519=$GOED25519_TAG,siphash=$GOSIPHASH_TAG,goxcrypto=$GO_X_CRYPTO_TAG,goxnet=$GO_X_NET_TAG,obfs4=$OBFS4_TAG $DESCRIPTOR_DIR/linux/gitian-pluggable-transports.yml
+ ./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit pyptlib=$PYPTLIB_TAG,obfsproxy=$OBFSPROXY_TAG,libfte=$LIBFTE_TAG,fteproxy=$FTEPROXY_TAG,txsocksx=$TXSOCKSX_TAG,goptlib=$GOPTLIB_TAG,meek=$MEEK_TAG,ed25519=$GOED25519_TAG,siphash=$GOSIPHASH_TAG,goxcrypto=$GO_X_CRYPTO_TAG,goxnet=$GO_X_NET_TAG,obfs4=$OBFS4_TAG,go-webrtc=$GO_WEBRTC_TAG,snowflake=$SNOWFLAKE_TAG,uniuri=$UNIURI_TAG $DESCRIPTOR_DIR/linux/gitian-pluggable-transports.yml
if [ $? -ne 0 ];
then
#mv var/build.log ./pluggable-transports-fail-linux.log.`date +%Y%m%d%H%M%S`
@@ -228,7 +250,7 @@ then
#cp -a result/pluggable-transports-linux-res.yml inputs/
else
echo
- echo "****** SKIPPING already built Pluggable Transports Component of Linux Bundle (4/6 for Linux) ******"
+ echo "****** SKIPPING already built Pluggable Transports Component of Linux Bundle (5/7 for Linux) ******"
echo
fi
@@ -243,7 +265,7 @@ if [ ! -f inputs/sandbox-$SB_TAG-linux32.zip -o \
! -f inputs/sandbox-$SB_TAG-linux64.zip ];
then
echo
- echo "****** Starting Sandbox Component of Linux Bundle (5/6 for Linux) ******"
+ echo "****** Starting Sandbox Component of Linux Bundle (6/7 for Linux) ******"
echo
./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit errors=$ERRORS_TAG,gb=$GB_TAG,sandbox=$SANDBOX_TAG $DESCRIPTOR_DIR/linux/gitian-sandbox.yml
@@ -256,14 +278,14 @@ then
#cp -a result/sandbox-linux-res.yml inputs/
else
echo
- echo "****** SKIPPING already built Sandbox Component of Linux Bundle (5/6 for Linux) ******"
+ echo "****** SKIPPING already built Sandbox Component of Linux Bundle (6/7 for Linux) ******"
echo
fi
if [ ! -f inputs/bundle-linux.gbuilt ];
then
echo
- echo "****** Starting Bundling+Localization of Linux Bundle (6/6 for Linux) ******"
+ echo "****** Starting Bundling+Localization of Linux Bundle (7/7 for Linux) ******"
echo
cd $WRAPPER_DIR && ./record-inputs.sh $VERSIONS_FILE && cd $GITIAN_DIR
@@ -284,7 +306,7 @@ then
touch inputs/bundle-linux.gbuilt
else
echo
- echo "****** SKIPPING already built Bundling+Localization of Linux Bundle (6/6 for Linux) ******"
+ echo "****** SKIPPING already built Bundling+Localization of Linux Bundle (7/7 for Linux) ******"
echo
fi
diff --git a/gitian/verify-tags.sh b/gitian/verify-tags.sh
index d95b0e0..368a990 100755
--- a/gitian/verify-tags.sh
+++ b/gitian/verify-tags.sh
@@ -111,6 +111,7 @@ while read dir commit; do
done << EOF
llvm $LLVM_TAG
clang $CLANG_TAG
+libcxx $LIBCXX_TAG
mingw-w64-git $MINGW_TAG
libdmg-hfsplus $LIBDMG_TAG
libfte $LIBFTE_TAG
@@ -122,6 +123,10 @@ siphash $GOSIPHASH_TAG
goxcrypto $GO_X_CRYPTO_TAG
goxnet $GO_X_NET_TAG
noto-fonts $NOTOFONTS_TAG
+depot_tools $DEPOT_TOOLS_TAG
+go-webrtc $GO_WEBRTC_TAG
+snowflake $SNOWFLAKE_TAG
+uniuri $UNIURI_TAG
EOF
# Verify signatures on signed packages
@@ -154,6 +159,7 @@ do
fi
done
+# webrtc? Its fetch brings in sources from many repos.
cd "$INPUTS_DIR"
verify_git "." "$WRAPPER_DIR/gpg/torbutton.gpg" "$GITIAN_TAG"
diff --git a/gitian/versions b/gitian/versions
index 81963bb..598a945 100755
--- a/gitian/versions
+++ b/gitian/versions
@@ -25,6 +25,7 @@ LIBEVENT_TAG=release-2.0.22-stable
CMAKE_TAG=v2.8.12.2
LLVM_TAG=8f188e0ea735ac9383a65a0d1c846eb790c2ec74 # r247539
CLANG_TAG=592b43b609b42cffd1531a700c140e10766bf049 # r247539
+LIBCXX_TAG=af9a44f256be54de6874d1eefd1d282d0671c0cf # r247539
MINGW_TAG=a0cd5afeb60be3be0860e9a203314c10485bb9b8
PYPTLIB_TAG=pyptlib-0.0.6
OBFSPROXY_TAG=obfsproxy-0.2.12
@@ -41,6 +42,11 @@ GO_X_CRYPTO_TAG=4ed45ec682102c643324fae5dff8dab085b6c300
GO_X_NET_TAG=7dbad50ab5b31073856416cdcfeb2796d682f844
OBFS4_TAG=obfs4proxy-0.0.5
NOTOFONTS_TAG=720e34851382ee3c1ef024d8dffb68ffbfb234c2
+DEPOT_TOOLS_TAG=28216cd14b44716db5c83634afbdc6e90492652b
+WEBRTC_TAG=f33698296719f956497d2dbff81b5080864a8804 # https://chromium.googlesource.com/external/webrtc.git/+/refs/branch-heads/52
+GO_WEBRTC_TAG=69c5ca70533142494d145b43ef2f46ca94715557
+SNOWFLAKE_TAG=6cecd31fd896eb26e64ad8bab8a9ea510ec3b21d
+UNIURI_TAG=8902c56451e9b58ff940bbe5fec35d5f9c04584a
GITIAN_TAG=tor-browser-builder-4-1
diff --git a/gitian/versions.alpha b/gitian/versions.alpha
index a8a08c1..14ed662 100755
--- a/gitian/versions.alpha
+++ b/gitian/versions.alpha
@@ -25,6 +25,7 @@ LIBEVENT_TAG=release-2.0.22-stable
CMAKE_TAG=v2.8.12.2
LLVM_TAG=8f188e0ea735ac9383a65a0d1c846eb790c2ec74 # r247539
CLANG_TAG=592b43b609b42cffd1531a700c140e10766bf049 # r247539
+LIBCXX_TAG=af9a44f256be54de6874d1eefd1d282d0671c0cf # r247539
MINGW_TAG=a0cd5afeb60be3be0860e9a203314c10485bb9b8
PYPTLIB_TAG=pyptlib-0.0.6
OBFSPROXY_TAG=obfsproxy-0.2.12
@@ -44,6 +45,11 @@ NOTOFONTS_TAG=720e34851382ee3c1ef024d8dffb68ffbfb234c2
ERRORS_TAG=248dadf4e9068a0b3e79f02ed0a610d935de5302
GB_TAG=06cc925cce6592e922dcc4839a8b44feb384e71e
SANDBOX_TAG=sandboxed-tor-browser-0.0.2
+DEPOT_TOOLS_TAG=28216cd14b44716db5c83634afbdc6e90492652b
+WEBRTC_TAG=f33698296719f956497d2dbff81b5080864a8804 # https://chromium.googlesource.com/external/webrtc.git/+/refs/branch-heads/52
+GO_WEBRTC_TAG=69c5ca70533142494d145b43ef2f46ca94715557
+SNOWFLAKE_TAG=6cecd31fd896eb26e64ad8bab8a9ea510ec3b21d
+UNIURI_TAG=8902c56451e9b58ff940bbe5fec35d5f9c04584a
GITIAN_TAG=tor-browser-builder-4-2
diff --git a/gitian/versions.beta b/gitian/versions.beta
index 577b802..b1342b9 100755
--- a/gitian/versions.beta
+++ b/gitian/versions.beta
@@ -29,6 +29,11 @@ TXSOCKSX_TAG=216eb0894a1755872f4789f9458aa6cf543b8433 # unsigned habnabit/1.13.0
GOPTLIB_TAG=0.2
MEEK_TAG=0.25
NOTOFONTS_TAG=720e34851382ee3c1ef024d8dffb68ffbfb234c2
+DEPOT_TOOLS_TAG=28216cd14b44716db5c83634afbdc6e90492652b
+WEBRTC_TAG=f33698296719f956497d2dbff81b5080864a8804 # https://chromium.googlesource.com/external/webrtc.git/+/refs/branch-heads/52
+GO_WEBRTC_TAG=69c5ca70533142494d145b43ef2f46ca94715557
+SNOWFLAKE_TAG=6cecd31fd896eb26e64ad8bab8a9ea510ec3b21d
+UNIURI_TAG=8902c56451e9b58ff940bbe5fec35d5f9c04584a
GITIAN_TAG=tor-browser-builder-3.x-6
diff --git a/gitian/versions.nightly b/gitian/versions.nightly
index c661b0e..1b1b346 100755
--- a/gitian/versions.nightly
+++ b/gitian/versions.nightly
@@ -32,6 +32,7 @@ LIBEVENT_TAG=release-2.0.22-stable
CMAKE_TAG=v2.8.12.2
LLVM_TAG=8f188e0ea735ac9383a65a0d1c846eb790c2ec74 # r247539
CLANG_TAG=592b43b609b42cffd1531a700c140e10766bf049 # r247539
+LIBCXX_TAG=af9a44f256be54de6874d1eefd1d282d0671c0cf # r247539
MINGW_TAG=a0cd5afeb60be3be0860e9a203314c10485bb9b8
PYPTLIB_TAG=master
OBFSPROXY_TAG=master
@@ -51,6 +52,11 @@ NOTOFONTS_TAG=720e34851382ee3c1ef024d8dffb68ffbfb234c2
ERRORS_TAG=248dadf4e9068a0b3e79f02ed0a610d935de5302
GB_TAG=06cc925cce6592e922dcc4839a8b44feb384e71e
SANDBOX_TAG=master
+DEPOT_TOOLS_TAG=master
+WEBRTC_TAG=f33698296719f956497d2dbff81b5080864a8804 # https://chromium.googlesource.com/external/webrtc.git/+/refs/branch-heads/52
+GO_WEBRTC_TAG=master
+SNOWFLAKE_TAG=master
+UNIURI_TAG=master
GITIAN_TAG=tor-browser-builder-4
1
0

[tor-browser-bundle/hardened-builds] Bug 20297: Upgrade Go to 1.7.4.
by gk@torproject.org 19 Dec '16
by gk@torproject.org 19 Dec '16
19 Dec '16
commit 53cfa479a398234424cb8311ded98c589c4ebab7
Author: David Fifield <david(a)bamsoftware.com>
Date: Mon Dec 12 17:18:47 2016 -0800
Bug 20297: Upgrade Go to 1.7.4.
---
gitian/versions | 4 ++--
gitian/versions.alpha | 4 ++--
gitian/versions.beta | 4 ++--
gitian/versions.nightly | 4 ++--
4 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/gitian/versions b/gitian/versions
index d1dfa22..3b84b63 100755
--- a/gitian/versions
+++ b/gitian/versions
@@ -58,7 +58,7 @@ SETUPTOOLS_VER=1.4
PARSLEY_VER=1.2
# We need a Go 1.4 to bootstrap later versions; see https://golang.org/doc/install/source#go14
GO14_VER=1.4.3
-GO_VER=1.7.3
+GO_VER=1.7.4
NSIS_VER=2.51
## File names for the source packages
@@ -112,7 +112,7 @@ PY2EXE_HASH=610a8800de3d973ed5ed4ac505ab42ad058add18a68609ac09e6cf3598ef056c
SETUPTOOLS_HASH=75d288687066ed124311d6ca5f40ffa92a0e81adcd7fff318c6e84082713cf39
PARSLEY_HASH=50d30cee70770fd44db7cea421cb2fb75af247c3a1cd54885c06b30a7c85dd23
GO14_HASH=9947fc705b0b841b5938c48b22dc33e9647ec0752bae66e50278df4f23f64959
-GO_HASH=79430a0027a09b0b3ad57e214c4c1acfdd7af290961dd08d322818895af1ef44
+GO_HASH=4c189111e9ba651a2bb3ee868aa881fab36b2f2da3409e80885ca758a6b614cc
NSIS_HASH=43d4c9209847e35eb6e2c7cd5a7586e1445374c056c2c7899e40a080e17a1be7
NSIS_DEBIAN_HASH=1dee6957b4a4b8dfe69bcf28bc7f301a13b96b3fa5a394e36c8926ae781e774a
GCC_HASH=b7dafdf89cbb0e20333dbf5b5349319ae06e3d1a30bf3515b5488f7e89dca5ad
diff --git a/gitian/versions.alpha b/gitian/versions.alpha
index f64f8d7..f553468 100755
--- a/gitian/versions.alpha
+++ b/gitian/versions.alpha
@@ -67,7 +67,7 @@ SETUPTOOLS_VER=1.4
PARSLEY_VER=1.2
# We need a Go 1.4 to bootstrap later versions; see https://golang.org/doc/install/source#go14
GO14_VER=1.4.3
-GO_VER=1.7.3
+GO_VER=1.7.4
NSIS_VER=2.51
ELFUTILS_VER=0.160
@@ -121,7 +121,7 @@ PY2EXE_HASH=610a8800de3d973ed5ed4ac505ab42ad058add18a68609ac09e6cf3598ef056c
SETUPTOOLS_HASH=75d288687066ed124311d6ca5f40ffa92a0e81adcd7fff318c6e84082713cf39
PARSLEY_HASH=50d30cee70770fd44db7cea421cb2fb75af247c3a1cd54885c06b30a7c85dd23
GO14_HASH=9947fc705b0b841b5938c48b22dc33e9647ec0752bae66e50278df4f23f64959
-GO_HASH=79430a0027a09b0b3ad57e214c4c1acfdd7af290961dd08d322818895af1ef44
+GO_HASH=4c189111e9ba651a2bb3ee868aa881fab36b2f2da3409e80885ca758a6b614cc
NSIS_HASH=43d4c9209847e35eb6e2c7cd5a7586e1445374c056c2c7899e40a080e17a1be7
NSIS_DEBIAN_HASH=1dee6957b4a4b8dfe69bcf28bc7f301a13b96b3fa5a394e36c8926ae781e774a
GCC_HASH=608df76dec2d34de6558249d8af4cbee21eceddbcb580d666f7a5a583ca3303a
diff --git a/gitian/versions.beta b/gitian/versions.beta
index 6444915..2bcde03 100755
--- a/gitian/versions.beta
+++ b/gitian/versions.beta
@@ -51,7 +51,7 @@ SETUPTOOLS_VER=1.4
PARSLEY_VER=1.2
# We need a Go 1.4 to bootstrap later versions; see https://golang.org/doc/install/source#go14
GO14_VER=1.4.3
-GO_VER=1.7.3
+GO_VER=1.7.4
## File names for the source packages
OPENSSL_PACKAGE=openssl-${OPENSSL_VER}.tar.gz
@@ -102,7 +102,7 @@ PY2EXE_HASH=610a8800de3d973ed5ed4ac505ab42ad058add18a68609ac09e6cf3598ef056c
SETUPTOOLS_HASH=75d288687066ed124311d6ca5f40ffa92a0e81adcd7fff318c6e84082713cf39
PARSLEY_HASH=50d30cee70770fd44db7cea421cb2fb75af247c3a1cd54885c06b30a7c85dd23
GO14_HASH=9947fc705b0b841b5938c48b22dc33e9647ec0752bae66e50278df4f23f64959
-GO_HASH=79430a0027a09b0b3ad57e214c4c1acfdd7af290961dd08d322818895af1ef44
+GO_HASH=4c189111e9ba651a2bb3ee868aa881fab36b2f2da3409e80885ca758a6b614cc
STIXMATHFONT_HASH=e3b0f712e2644438eee2d0dcd2b10b2d54f1b972039de95b2f8e800bae1adbd8
NOTOEMOJIFONT_HASH=415dc6290378574135b64c808dc640c1df7531973290c4970c51fdeb849cb0c5
NOTOJPFONT_HASH=3e8146c4ce0945f255cb9dbc12b392380af80bd117e0a60eae555c99c7e618da
diff --git a/gitian/versions.nightly b/gitian/versions.nightly
index 10644de..d606efc 100755
--- a/gitian/versions.nightly
+++ b/gitian/versions.nightly
@@ -70,7 +70,7 @@ SETUPTOOLS_VER=1.4
PARSLEY_VER=1.2
# We need a Go 1.4 to bootstrap later versions; see https://golang.org/doc/install/source#go14
GO14_VER=1.4.3
-GO_VER=1.7.3
+GO_VER=1.7.4
NSIS_VER=2.51
ELFUTILS_VER=0.160
@@ -124,7 +124,7 @@ PY2EXE_HASH=610a8800de3d973ed5ed4ac505ab42ad058add18a68609ac09e6cf3598ef056c
SETUPTOOLS_HASH=75d288687066ed124311d6ca5f40ffa92a0e81adcd7fff318c6e84082713cf39
PARSLEY_HASH=50d30cee70770fd44db7cea421cb2fb75af247c3a1cd54885c06b30a7c85dd23
GO14_HASH=9947fc705b0b841b5938c48b22dc33e9647ec0752bae66e50278df4f23f64959
-GO_HASH=79430a0027a09b0b3ad57e214c4c1acfdd7af290961dd08d322818895af1ef44
+GO_HASH=4c189111e9ba651a2bb3ee868aa881fab36b2f2da3409e80885ca758a6b614cc
NSIS_HASH=43d4c9209847e35eb6e2c7cd5a7586e1445374c056c2c7899e40a080e17a1be7
NSIS_DEBIAN_HASH=1dee6957b4a4b8dfe69bcf28bc7f301a13b96b3fa5a394e36c8926ae781e774a
GCC_HASH=608df76dec2d34de6558249d8af4cbee21eceddbcb580d666f7a5a583ca3303a
1
0