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
- 18443 discussions

09 Nov '16
commit 6af7c834e9f79af974625d0f925d064a098bbee8
Author: Georg Koppen <gk(a)torproject.org>
Date: Wed Nov 9 10:35:36 2016 +0000
Activate donation banner for tr locale
---
src/chrome/content/aboutTor/donation_banner.js | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/chrome/content/aboutTor/donation_banner.js b/src/chrome/content/aboutTor/donation_banner.js
index 1087815..7ff3a98 100644
--- a/src/chrome/content/aboutTor/donation_banner.js
+++ b/src/chrome/content/aboutTor/donation_banner.js
@@ -8,6 +8,7 @@ let kBannerLocales = [
"fa",
"it",
"nl",
+ "tr",
"vi",
"zh",
];
1
0
commit 4e436580c010c5ed670302bfd872e10297ed2d11
Author: Georg Koppen <gk(a)torproject.org>
Date: Wed Nov 9 10:03:48 2016 +0000
Update translations
---
src/chrome/locale/ar/aboutDialog.dtd | 2 +-
src/chrome/locale/ar/aboutTor.properties | 13 ++++--
src/chrome/locale/ar/torbutton.dtd | 33 ++++++++------
src/chrome/locale/ar/torbutton.properties | 8 ++--
src/chrome/locale/de/aboutTor.properties | 7 +++
src/chrome/locale/de/torbutton.dtd | 51 +++++++++++++---------
src/chrome/locale/de/torbutton.properties | 2 +-
src/chrome/locale/es/aboutTor.properties | 7 +++
src/chrome/locale/es/torbutton.dtd | 19 ++++++--
src/chrome/locale/eu/aboutTor.properties | 7 +++
src/chrome/locale/eu/torbutton.dtd | 15 +++++--
src/chrome/locale/fa/aboutTor.properties | 7 +++
src/chrome/locale/fa/torbutton.dtd | 15 +++++--
src/chrome/locale/fr/aboutTor.properties | 7 +++
src/chrome/locale/fr/torbutton.dtd | 15 +++++--
src/chrome/locale/it/aboutTor.properties | 7 +++
src/chrome/locale/it/torbutton.dtd | 15 +++++--
src/chrome/locale/ja/aboutTor.properties | 7 +++
src/chrome/locale/ja/torbutton.dtd | 15 +++++--
src/chrome/locale/ko/aboutTor.properties | 7 +++
src/chrome/locale/ko/torbutton.dtd | 15 +++++--
src/chrome/locale/nl/aboutDialog.dtd | 2 +-
src/chrome/locale/nl/aboutTBUpdate.dtd | 8 ++--
src/chrome/locale/nl/aboutTor.dtd | 28 ++++++------
src/chrome/locale/nl/aboutTor.properties | 7 +++
src/chrome/locale/nl/brand.properties | 14 +++---
src/chrome/locale/nl/torbutton.dtd | 67 ++++++++++++++++-------------
src/chrome/locale/pl/aboutTor.properties | 7 +++
src/chrome/locale/pl/torbutton.dtd | 15 +++++--
src/chrome/locale/pt/aboutTor.properties | 7 +++
src/chrome/locale/pt/torbutton.dtd | 15 +++++--
src/chrome/locale/ru/aboutTor.properties | 7 +++
src/chrome/locale/ru/brand.properties | 2 +-
src/chrome/locale/ru/torbutton.dtd | 15 +++++--
src/chrome/locale/sv/aboutTor.properties | 7 +++
src/chrome/locale/sv/torbutton.dtd | 15 +++++--
src/chrome/locale/tr/aboutTor.properties | 7 +++
src/chrome/locale/tr/torbutton.dtd | 15 +++++--
src/chrome/locale/vi/aboutDialog.dtd | 18 ++++----
src/chrome/locale/vi/aboutTBUpdate.dtd | 8 ++--
src/chrome/locale/vi/aboutTor.dtd | 32 +++++++-------
src/chrome/locale/vi/aboutTor.properties | 13 ++++--
src/chrome/locale/vi/brand.dtd | 10 ++---
src/chrome/locale/vi/brand.properties | 4 +-
src/chrome/locale/vi/torbutton.dtd | 59 ++++++++++++++-----------
src/chrome/locale/vi/torbutton.properties | 56 ++++++++++++------------
src/chrome/locale/zh-CN/aboutTor.properties | 7 +++
src/chrome/locale/zh-CN/torbutton.dtd | 15 +++++--
48 files changed, 504 insertions(+), 230 deletions(-)
diff --git a/src/chrome/locale/ar/aboutDialog.dtd b/src/chrome/locale/ar/aboutDialog.dtd
index 7297ce3..fa1ebec 100644
--- a/src/chrome/locale/ar/aboutDialog.dtd
+++ b/src/chrome/locale/ar/aboutDialog.dtd
@@ -1,6 +1,6 @@
<!ENTITY project.start "مطوْر من طرف &brandShortName;">
<!-- LOCALIZATION NOTE (project.tpoLink): This is a link title that links to https://www.torproject.org -->
-<!ENTITY project.tpoLink "the &vendorShortName;">
+<!ENTITY project.tpoLink "ال&vendorShortName؛">
<!ENTITY project.end "لاتهدف للربح تعمل على حماية خصوصيتك وحريتك على الأنترنت">
<!ENTITY help.start "هل ترغب في المساعدة؟">
diff --git a/src/chrome/locale/ar/aboutTor.properties b/src/chrome/locale/ar/aboutTor.properties
index d607324..8befe26 100644
--- a/src/chrome/locale/ar/aboutTor.properties
+++ b/src/chrome/locale/ar/aboutTor.properties
@@ -2,20 +2,27 @@
# See LICENSE for licensing information.
# vim: set sw=2 sts=2 ts=8 et:
-aboutTor.searchSP.privacy=Search <a href="%1$S">securely</a> with <a href="%2$S">Startpage</a>.
+aboutTor.searchSP.privacy=ابحث <a href="%1$S">آمنا</a> مع <a href="%2$S">Startpage</a>.
# The following string is a link which replaces %1$S above.
aboutTor.searchSP.privacy.link=https://startpage.com/eng/protect-privacy.ht…
# The following string is a link which replaces %2$S above.
aboutTor.searchSP.search.link=https://startpage.com/
-aboutTor.searchDDG.privacy=Search <a href="%1$S">securely</a> with <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=Search <a href="%1$S">securely</a> with <a href="%2$S">Disconnect.me</a>.
+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/ar/torbutton.dtd b/src/chrome/locale/ar/torbutton.dtd
index e86ca90..feb367b 100644
--- a/src/chrome/locale/ar/torbutton.dtd
+++ b/src/chrome/locale/ar/torbutton.dtd
@@ -2,13 +2,18 @@
<!ENTITY torbutton.context_menu.new_identity_key "I">
<!ENTITY torbutton.context_menu.new_circuit "دائرة تور جديدة لهذا الموقع">
<!ENTITY torbutton.context_menu.new_circuit_key "C">
+<!ENTITY torbutton.context_menu.preferences "Security Settings…">
+<!ENTITY torbutton.context_menu.preferences.key "S">
<!ENTITY torbutton.context_menu.networksettings "إعدادات شبكة تور...">
+<!ENTITY torbutton.context_menu.networksettings.key "N">
<!ENTITY torbutton.context_menu.downloadUpdate "تحقق من تحديثات متصفح تور...">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
<!ENTITY torbutton.context_menu.cookieProtections "إعدادات أمان ملفات تعريف الارتباط...">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.button.tooltip "انقر لبدء زر تور">
-<!ENTITY torbutton.prefs.restore_defaults "استعادة الافتراضيات">
+<!ENTITY torbutton.prefs.security_settings "Tor Browser Security Settings">
+<!ENTITY torbutton.prefs.restore_defaults "Restore Defaults">
+<!ENTITY torbutton.prefs.custom_warning "Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels.">
<!ENTITY torbutton.cookiedialog.title "إدارة إعدادت الحماية لملفات تعريف الارتباط">
<!ENTITY torbutton.cookiedialog.lockCol "محمية">
<!ENTITY torbutton.cookiedialog.domainCol "استضافة">
@@ -21,33 +26,37 @@
<!ENTITY torbutton.cookiedialog.saveAllCookies "احم ملفات تعريف الارتباط الجديدة">
<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "لا تحم ملفات تعريف الارتباط الجديدة">
<!ENTITY torbutton.prefs.restrict_thirdparty "تقييد الـCookies الخاصة بالطرف الثالث و بيانات التتبع الأخري.">
+<!ENTITY torbutton.prefs.restrict_thirdparty.accesskey "R">
+<!ENTITY torbutton.prefs.restrict_thirdparty_tooltip "Keep this box checked to prevent various browser features from being abused to track you as you browse the web. Modified features include blob URLs, broadcast channels, the browser cache, cookies, favicons, HTTP Auth headers, link preconnects, localStorage, mediaSource URLs, OCSP requests, SharedWorkers, and TLS session tickets.">
<!ENTITY torbutton.prefs.resist_fingerprinting "تغيير التفاصيل التي تميزك عن المستخدمين الآخرين لمتصفح تور">
+<!ENTITY torbutton.prefs.resist_fingerprinting.accesskey "F">
+<!ENTITY torbutton.prefs.resist_fingerprinting_tooltip "Keep this box checked to hide things from websites that could be unique about you, including your battery status, computer performance, keyboard layout, locale, the location of installed plugins, the list of installed plugins, your network status, screen orientation, screen size, site-specific zoom levels, supported file types, system colors, and WebGL capabilities.">
<!ENTITY torbutton.prefs.sec_caption "مستوى الأمان">
+<!ENTITY torbutton.prefs.sec_caption_tooltip "The Security Slider lets you disable certain browser features that may make your browser more vulnerable to hacking attempts.">
<!ENTITY torbutton.prefs.sec_low "منخفض (افتراضي)">
<!ENTITY torbutton.prefs.sec_low_usable_desc "هذا يوفر أفضل خبرة للإستخدام">
<!ENTITY torbutton.prefs.sec_low_desc "طبقاً لهذا المستوى من إعدادات الأمان سوف يتم تفعيل كل صفات المتصفح">
-<!ENTITY torbutton.prefs.sec_font_rend_svg_tooltip "The SVG OpenType font rendering mechanism is disabled.">
+<!ENTITY torbutton.prefs.sec_font_rend_svg_tooltip "آلية تجسيد الخط SVG OpenType معطلة.">
<!ENTITY torbutton.prefs.sec_med_low "شبه منخفض">
<!ENTITY torbutton.prefs.sec_gen_desc "طبقاً لهذا المستوى من إعدادات الأمان سوف يتم تفعيل هذه التغيرات ( لمزيد من التفاصيل مرر الفأرة فوق)">
<!ENTITY torbutton.prefs.sec_html5_desc "HTML5 video and audio media become click-to-play via NoScript.">
-<!ENTITY torbutton.prefs.sec_html5_tooltip "في بعض المواقع من الممكن أن تحتاج لإستخدام زر تعطيل النصوص في شرط الأدوات لتفعل المحتويات المرئية">
+<!ENTITY torbutton.prefs.sec_html5_tooltip "في بعض المواقع من الممكن أن تحتاج لإستخدام زر تعطيل السكريبتات في شرط الأدوات لتفعل المحتويات المرئية.">
<!ENTITY torbutton.prefs.sec_some_jit_desc "بعض محسنات نصوص الجافا معطلة">
<!ENTITY torbutton.prefs.sec_jit_desc_tooltip "ION JIT, Type Inference, ASM.JS.">
<!ENTITY torbutton.prefs.sec_baseline_jit_desc_tooltip "Baseline JIT.">
<!ENTITY torbutton.prefs.sec_jit_slower_desc "سكربت في بعض المواقع قد تعمل بشكل بطيئ">
-<!ENTITY torbutton.prefs.sec_mathml_desc "Some mechanisms of displaying math equations are disabled.">
+<!ENTITY torbutton.prefs.sec_mathml_desc "بعض الآليات لعرض معادلات رياضية معطلة.">
<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML is disabled.">
<!ENTITY torbutton.prefs.sec_med_high "شبه عالٍ">
-<!ENTITY torbutton.prefs.sec_all_jit_desc "All JavaScript performance optimizations are disabled.">
+<!ENTITY torbutton.prefs.sec_all_jit_desc "في المواقع التي تشغل جافا سكريبت، يكون تطوير الأداء معطل.">
<!ENTITY torbutton.prefs.sec_font_rend_desc "بعض ميزات إظهار الخطوط معطلة ">
-<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "The Graphite font rendering mechanism is disabled.">
+<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "آلية تجسيد الخط Graphite معطلة.">
<!ENTITY torbutton.prefs.sec_svg_desc "بعض الانواع من الصور معطله">
-<!ENTITY torbutton.prefs.sec_svg_desc_tooltip "SVG images are disabled.">
-<!ENTITY torbutton.prefs.sec_js_https_desc "JavaScript is disabled by default on all non-HTTPS sites.">
-<!ENTITY torbutton.prefs.sec_js_desc_tooltip "JavaScript can be enabled on a per-site basis via the NoScript toolbar button.">
+<!ENTITY torbutton.prefs.sec_svg_desc_tooltip "الصور SVG معطلة.">
+<!ENTITY torbutton.prefs.sec_js_https_desc "تعطيل جافا سكريبت افتراضيا على جميع المواقع غير HTTPS.">
+<!ENTITY torbutton.prefs.sec_js_desc_tooltip "يمكن تفعيل جافا سكريبت حسب كل موقع عن طريق زر تعطيل السكريبتات الموجود على شريط الأدوات.">
<!ENTITY torbutton.prefs.sec_high "عالٍ">
-<!ENTITY torbutton.prefs.sec_all_js_desc "JavaScript is disabled by default on all sites.">
+<!ENTITY torbutton.prefs.sec_all_js_desc "جافا سكريبت معطل بشكل افتراضي على جميع المواقع.">
<!ENTITY torbutton.prefs.sec_webfonts_desc "من الممكن أن بعض الخطوط والايقونات معروضة خطأ">
-<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "Website-provided font files are blocked.">
-<!ENTITY torbutton.prefs.sec_custom "قيم مخصصة">
+<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "ملفات الخط المقدمة من طرف المواقع الإلكترونية محظورة.">
<!ENTITY torbutton.circuit_display.title "دائرة تور لهذا الموقع">
diff --git a/src/chrome/locale/ar/torbutton.properties b/src/chrome/locale/ar/torbutton.properties
index fd7e4b4..fb18bee 100644
--- a/src/chrome/locale/ar/torbutton.properties
+++ b/src/chrome/locale/ar/torbutton.properties
@@ -28,8 +28,8 @@ torbutton.popup.confirm_plugins = البرامج الإضافية مثل فلا
torbutton.popup.never_ask_again = لا تسألني مرة اخري
torbutton.popup.confirm_newnym = متصفح تور
-torbutton.slider_notification = The green onion menu now has a security slider which lets you adjust your security level. Check it out!
-torbutton.slider_notification_button = Open security settings
+torbutton.slider_notification = قائمة البصلة الخضراء لديها الآن منزلق أمني الذي يمكنك من ضبط مستوى أمانك. تحقق من ذلك!
+torbutton.slider_notification_button = فتح إعدادات الأمان
torbutton.maximize_warning = تكبير متصفح تور قد يسمح لبعض المواقع بالتعرف على حجم شاشتك، واستخدام هذه المعلومات لتقفيك. نوصي بابقاء نافذه متصف تور على حجمها الافتراضي.
@@ -45,7 +45,7 @@ canvas.neverAccessKey=ط
# Profile/startup error messages. Strings are kept here for ease of translation.
# LOCALIZATION NOTE: %S is the application name.
profileProblemTitle=%Sمشكله في ملف شخصي
-profileReadOnly=You cannot run %S from a read-only file system. Please copy %S to another location before trying to use it.
-profileReadOnlyMac=You cannot run %S from a read-only file system. Please copy %S to your Desktop or Applications folder before trying to use it.
+profileReadOnly=لا يمكنك تشغيل %S من نظام ملفات خاص بالقراءة فقط. يرجى نسخ %S إلى موقع آخر قبل محاولة استخدامها.
+profileReadOnlyMac=لا يمكنك تشغيل %S من نظام ملفات خاص بالقراءة فقط. يرجى نسخ %S إلى سطح المكتب أو مجلد التطبيقات قبل محاولة استخدامها.
profileAccessDenied=%S does not have permission to access the profile. Please adjust your file system permissions and try again.
profileMigrationFailed=Migration of your existing %S profile failed.\nNew settings will be used.
diff --git a/src/chrome/locale/de/aboutTor.properties b/src/chrome/locale/de/aboutTor.properties
index b7fc4bf..cb7a1fe 100644
--- a/src/chrome/locale/de/aboutTor.properties
+++ b/src/chrome/locale/de/aboutTor.properties
@@ -19,3 +19,10 @@ aboutTor.searchDC.privacy=<a href="%1$S">Sicheres</a> Suchen mit <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=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 aff98bf..56253fe 100644
--- a/src/chrome/locale/de/torbutton.dtd
+++ b/src/chrome/locale/de/torbutton.dtd
@@ -1,14 +1,19 @@
<!ENTITY torbutton.context_menu.new_identity "Neue Identität">
-<!ENTITY torbutton.context_menu.new_identity_key "N">
+<!ENTITY torbutton.context_menu.new_identity_key "I">
<!ENTITY torbutton.context_menu.new_circuit "Neuer Kanal für diese Seite">
-<!ENTITY torbutton.context_menu.new_circuit_key "B">
-<!ENTITY torbutton.context_menu.networksettings "Tor-Netzwerk-Einstellungen...">
-<!ENTITY torbutton.context_menu.downloadUpdate "Suche nach Tor-Browser-Aktualisierungen...">
+<!ENTITY torbutton.context_menu.new_circuit_key "K">
+<!ENTITY torbutton.context_menu.preferences "Sicherheitseinstellungen …">
+<!ENTITY torbutton.context_menu.preferences.key "S">
+<!ENTITY torbutton.context_menu.networksettings "Tor-Netzwerk-Einstellungen …">
+<!ENTITY torbutton.context_menu.networksettings.key "N">
+<!ENTITY torbutton.context_menu.downloadUpdate "Auf Tor-Browser-Aktualisierungen prüfen …">
<!ENTITY torbutton.context_menu.downloadUpdate.key "A">
-<!ENTITY torbutton.context_menu.cookieProtections "Cookie-Schutz...">
+<!ENTITY torbutton.context_menu.cookieProtections "Cookie-Schutz …">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.button.tooltip "Klicken, um Torbutton zu aktivieren">
-<!ENTITY torbutton.prefs.restore_defaults "Vorgabeeinstellungen wiederherstellen">
+<!ENTITY torbutton.prefs.security_settings "Tor Browser Security Settings">
+<!ENTITY torbutton.prefs.restore_defaults "Restore Defaults">
+<!ENTITY torbutton.prefs.custom_warning "Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels.">
<!ENTITY torbutton.cookiedialog.title "Cookie-Schutz verwalten">
<!ENTITY torbutton.cookiedialog.lockCol "Geschützt">
<!ENTITY torbutton.cookiedialog.domainCol "Rechner">
@@ -21,33 +26,37 @@
<!ENTITY torbutton.cookiedialog.saveAllCookies "Neue Cookies schützen">
<!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.resist_fingerprinting "Details ändern, die Sie von anderen Tor-Browser-Benutzern unterscheiden">
-<!ENTITY torbutton.prefs.sec_caption "Sicherheitslevel">
-<!ENTITY torbutton.prefs.sec_low "gering (Standard)">
+<!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.">
+<!ENTITY torbutton.prefs.sec_caption "Sicherheitsstufe">
+<!ENTITY torbutton.prefs.sec_caption_tooltip "Der Sicherheitsschieberegler gestattet Ihnen bestimmte Browserfunktionen, die Ihren Browser für mögliche Attacken anfälliger machen, zu deaktivieren.">
+<!ENTITY torbutton.prefs.sec_low "Gering (Standard)">
<!ENTITY torbutton.prefs.sec_low_usable_desc "Dies liefert die am meisten nutzbaren Erfahrungen.">
-<!ENTITY torbutton.prefs.sec_low_desc "Auf diesem Sicherheitsniveau sind alle Merkmale des Browsers freigegeben.">
-<!ENTITY torbutton.prefs.sec_font_rend_svg_tooltip "Der SVG-OpenType-Schriftart-Renderingvorgang ist deaktiviert.">
-<!ENTITY torbutton.prefs.sec_med_low "unteres Mittel">
+<!ENTITY torbutton.prefs.sec_low_desc "Auf dieser Sicherheitsstufe sind alle Browserfunktionen aktiviert.">
+<!ENTITY torbutton.prefs.sec_font_rend_svg_tooltip "Der SVG-OpenType-Schriftdarstellungsvorgang ist deaktiviert.">
+<!ENTITY torbutton.prefs.sec_med_low "Unteres Mittel">
<!ENTITY torbutton.prefs.sec_gen_desc "Auf dieser Sicherheitsstufe gelten die folgenden Änderungen (für weitere Details mit der Maus überfahren):">
<!ENTITY torbutton.prefs.sec_html5_desc "HTML5-Video- und Audiomedien werden per Click-to-Play über NoScript abspielbar.">
<!ENTITY torbutton.prefs.sec_html5_tooltip "Auf manchen Webseiten müssen Sie möglicherweise die NoScript-Schaltfläche in der Werkzeugleiste verwenden, um diese Medienobjekte zu aktivieren.">
-<!ENTITY torbutton.prefs.sec_some_jit_desc "Einige JavaScript Ausführungsoptimierungen sind unterbunden.">
+<!ENTITY torbutton.prefs.sec_some_jit_desc "Einige JavaScript-Ausführungsoptimierungen sind deaktiviert.">
<!ENTITY torbutton.prefs.sec_jit_desc_tooltip "ION JIT, Typinferenz, ASM.JS.">
<!ENTITY torbutton.prefs.sec_baseline_jit_desc_tooltip "JIT-Basis.">
<!ENTITY torbutton.prefs.sec_jit_slower_desc "Scripts können auf manchen Seiten langsamer laufen.">
<!ENTITY torbutton.prefs.sec_mathml_desc "Manche Vorgänge zur Anzeige von mathematischen Gleichungen sind deaktiviert.">
-<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML ist blockiert.">
-<!ENTITY torbutton.prefs.sec_med_high "oberes Mittel">
-<!ENTITY torbutton.prefs.sec_all_jit_desc "Alle JavaScript-Leistungsoptimierungen sind deaktiviert.">
-<!ENTITY torbutton.prefs.sec_font_rend_desc "Einige Schriftabbildungseigenschaften sind blockiert.">
-<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "Der Graphite-Schriftart-Renderingvorgang ist deaktiviert.">
-<!ENTITY torbutton.prefs.sec_svg_desc "Einige Arten von Bilddateien sind blockiert.">
-<!ENTITY torbutton.prefs.sec_svg_desc_tooltip "SVG-Bilder sind blockiert.">
+<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML ist deaktiviert.">
+<!ENTITY torbutton.prefs.sec_med_high "Oberes Mittel">
+<!ENTITY torbutton.prefs.sec_all_jit_desc "Auf Seiten wo JavaScript aktiviert ist, sind Leistungsoptimierungen deaktiviert.">
+<!ENTITY torbutton.prefs.sec_font_rend_desc "Einige Schriftabbildungseigenschaften sind deaktiviert.">
+<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "Der Graphite-Schriftdarstellungsvorgang ist deaktiviert.">
+<!ENTITY torbutton.prefs.sec_svg_desc "Einige Arten von Bilddateien sind deaktiviert.">
+<!ENTITY torbutton.prefs.sec_svg_desc_tooltip "SVG-Bilder sind deaktiviert.">
<!ENTITY torbutton.prefs.sec_js_https_desc "JavaScript ist standardmäßig auf allen Nicht-HTTPS-Webseiten deaktiviert.">
<!ENTITY torbutton.prefs.sec_js_desc_tooltip "JavaScript kann über die NoScript-Schaltfläche in der Werkzeugleiste für jede Webseite einzeln aktiviert werden.">
-<!ENTITY torbutton.prefs.sec_high "hoch">
+<!ENTITY torbutton.prefs.sec_high "Hoch">
<!ENTITY torbutton.prefs.sec_all_js_desc "JavaScript ist standardmäßig auf allen Webseiten deaktiviert.">
<!ENTITY torbutton.prefs.sec_webfonts_desc "Manche Schriftarten und Symbole könnten falsch angezeigt werden.">
<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "Von Webseiten bereitgestellte Schriftartdateien sind gesperrt.">
-<!ENTITY torbutton.prefs.sec_custom "Eigene Werte">
<!ENTITY torbutton.circuit_display.title "Tor-Kanal für diese Seite">
diff --git a/src/chrome/locale/de/torbutton.properties b/src/chrome/locale/de/torbutton.properties
index c6cdcfe..1e38c45 100644
--- a/src/chrome/locale/de/torbutton.properties
+++ b/src/chrome/locale/de/torbutton.properties
@@ -29,7 +29,7 @@ torbutton.popup.never_ask_again = Nicht mehr nachfragen
torbutton.popup.confirm_newnym = Tor-Browser wird alle Fenster und Reiter schließen. Alle Internetseitensitzungen gehen verloren.\n\nTor-Browser jetzt neu starten, um Ihre Identität zurückzusetzen?\n\n
torbutton.slider_notification = Das grüne Onion-Menü hat jetzt einen Sicherheitsschieberegler, mit dem Sie Ihre Sicherheitsstufe anpassen können. Probieren Sie es aus!
-torbutton.slider_notification_button = Öffne Sicherheits-Einstellungen
+torbutton.slider_notification_button = Sicherheitseinstellungen öffnen
torbutton.maximize_warning = Die Maximierung des Tor-Browsers kann Webseiten die Bestimmung Ihrer Bildschirmgröße ermöglichen, um damit Ihre Spur zu verfolgen. Wir empfehlen Ihnen, das Tor-Browser-Fenster in seiner ursprünglichen Standardgröße zu belassen.
diff --git a/src/chrome/locale/es/aboutTor.properties b/src/chrome/locale/es/aboutTor.properties
index fb92251..fe998a0 100644
--- a/src/chrome/locale/es/aboutTor.properties
+++ b/src/chrome/locale/es/aboutTor.properties
@@ -19,3 +19,10 @@ aboutTor.searchDC.privacy=Busque <a href="%1$S">de forma segura</a> con <a href=
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/es/torbutton.dtd b/src/chrome/locale/es/torbutton.dtd
index a945042..fad96e0 100644
--- a/src/chrome/locale/es/torbutton.dtd
+++ b/src/chrome/locale/es/torbutton.dtd
@@ -2,13 +2,18 @@
<!ENTITY torbutton.context_menu.new_identity_key "I">
<!ENTITY torbutton.context_menu.new_circuit "Nuevo circuito Tor para este sitio">
<!ENTITY torbutton.context_menu.new_circuit_key "C">
+<!ENTITY torbutton.context_menu.preferences "Configuración de seguridad...">
+<!ENTITY torbutton.context_menu.preferences.key "C">
<!ENTITY torbutton.context_menu.networksettings "Configuración de red Tor...">
+<!ENTITY torbutton.context_menu.networksettings.key "R">
<!ENTITY torbutton.context_menu.downloadUpdate "Comprobar actualización del Navegador Tor...">
<!ENTITY torbutton.context_menu.downloadUpdate.key "a">
<!ENTITY torbutton.context_menu.cookieProtections "Protecciones de cookie...">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.button.tooltip "Haga clic para inicializar Torbutton">
-<!ENTITY torbutton.prefs.restore_defaults "Restablecer valores predeterminados ">
+<!ENTITY torbutton.prefs.security_settings "Configuración de seguridad del Navegador Tor">
+<!ENTITY torbutton.prefs.restore_defaults "Restaurar valores predeterminados">
+<!ENTITY torbutton.prefs.custom_warning "Sus preferencias personalizadas para el navegador han resultado en una configuración de seguridad inusual. Por motivos de seguridad y privacidad, le recomendamos uno de los de los niveles de seguridad predeterminados.">
<!ENTITY torbutton.cookiedialog.title "Administrar protecciones de cookie">
<!ENTITY torbutton.cookiedialog.lockCol "Protegidas">
<!ENTITY torbutton.cookiedialog.domainCol "Servidor (host)">
@@ -21,8 +26,15 @@
<!ENTITY torbutton.cookiedialog.saveAllCookies "Proteger las nuevas cookies">
<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "No proteger las nuevas cookies">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restringir cookies de terceros y otros datos de seguimiento">
+<!ENTITY torbutton.prefs.restrict_thirdparty.accesskey "T">
+<!ENTITY torbutton.prefs.restrict_thirdparty_tooltip "
+Mantenga marcada esta casilla para evitar que diversas características del navegador sean explotadas para rastrear su navegación por la web. Las características modificadas incluyen URLs blob (a objetos binarios internos), BroadcastChannel (comunicación interna dentro del mismo origen), caché del navegador, cookies, favicons, cabeceras Auth de HTTP (autentificación básica), preconexiones de enlaces, objetos localStorage (almacenamiento local para aplicaciones web), URLs de objetos MediaSource (audiovisuales), peticiones OCSP (estado de certificados), SharedWorkers (subprocesos compartidos), y tickets de sesión TLS.">
<!ENTITY torbutton.prefs.resist_fingerprinting "Cambiar los detalles que le distinguen de otros usuarios del Navegador Tor">
-<!ENTITY torbutton.prefs.sec_caption "Nivel de Seguridad">
+<!ENTITY torbutton.prefs.resist_fingerprinting.accesskey "H">
+<!ENTITY torbutton.prefs.resist_fingerprinting_tooltip "
+Mantenga marcada esta casilla para ocultar a los sitios web detalles que pudieran ser únicos acerca de usted, incluyendo el estado de su batería, el rendimiento del equipo, la distribución del teclado, la configuración regional, la ubicación y la lista de los plugins instalados, el estado de la red, la orientación y el tamaño de la pantalla, niveles de zoom específicos para sitios web, tipos de fichero soportados, los colores del sistema, y las capacidades gráficas WebGL.">
+<!ENTITY torbutton.prefs.sec_caption "Nivel de seguridad">
+<!ENTITY torbutton.prefs.sec_caption_tooltip "El control deslizante del nivel de seguridad le permite deshabilitar ciertas características del navegador que pueden hacerlo más vulnerable a tentativas de hackeo.">
<!ENTITY torbutton.prefs.sec_low "Bajo (por defecto)">
<!ENTITY torbutton.prefs.sec_low_usable_desc "Esto proporciona la mejor experiencia de usabilidad.">
<!ENTITY torbutton.prefs.sec_low_desc "En este nivel de seguridad, todas las funciones del navegador están habilitadas.">
@@ -38,7 +50,7 @@
<!ENTITY torbutton.prefs.sec_mathml_desc "Algunos mecanismos de representación de ecuaciones matemáticas están deshabilitados.">
<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML está deshabilitado.">
<!ENTITY torbutton.prefs.sec_med_high "Medio-Alto">
-<!ENTITY torbutton.prefs.sec_all_jit_desc "Todas las optimizaciones de rendimiento de JavaScript están deshabilitadas.">
+<!ENTITY torbutton.prefs.sec_all_jit_desc "En sitios donde JavaScript esté habilitado, las optimizaciones de rendimiento están deshabilitadas.">
<!ENTITY torbutton.prefs.sec_font_rend_desc "Algunas características de representación de fuentes están deshabilitadas.">
<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "El mecanismo de representación de fuentes Graphite está deshabilitado.">
<!ENTITY torbutton.prefs.sec_svg_desc "Algunos tipos de imágenes están deshabilitados.">
@@ -49,5 +61,4 @@
<!ENTITY torbutton.prefs.sec_all_js_desc "JavaScript está deshabilitado por defecto en todos los sitios.">
<!ENTITY torbutton.prefs.sec_webfonts_desc "Algunas fuentes e iconos pueden mostrarse de forma incorrecta.">
<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "Los ficheros de fuentes proporcionados por el sitio web están bloqueados.">
-<!ENTITY torbutton.prefs.sec_custom "Valores Personalizados">
<!ENTITY torbutton.circuit_display.title "Circuito Tor para este sitio">
diff --git a/src/chrome/locale/eu/aboutTor.properties b/src/chrome/locale/eu/aboutTor.properties
index 30a7858..81d4c44 100644
--- a/src/chrome/locale/eu/aboutTor.properties
+++ b/src/chrome/locale/eu/aboutTor.properties
@@ -19,3 +19,10 @@ aboutTor.searchDC.privacy=Bilatu<a href="%1$S">modu seguruan</a> ondokoarekin: <
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/eu/torbutton.dtd b/src/chrome/locale/eu/torbutton.dtd
index 9d745a5..3a73531 100644
--- a/src/chrome/locale/eu/torbutton.dtd
+++ b/src/chrome/locale/eu/torbutton.dtd
@@ -2,13 +2,18 @@
<!ENTITY torbutton.context_menu.new_identity_key "I">
<!ENTITY torbutton.context_menu.new_circuit "Tor zirkuitu berria gune honetarako">
<!ENTITY torbutton.context_menu.new_circuit_key "C">
+<!ENTITY torbutton.context_menu.preferences "Security Settings…">
+<!ENTITY torbutton.context_menu.preferences.key "S">
<!ENTITY torbutton.context_menu.networksettings "Tor Sarearen Ezarpenak...">
+<!ENTITY torbutton.context_menu.networksettings.key "N">
<!ENTITY torbutton.context_menu.downloadUpdate "Tor Browser eguneraketa egiaztatu">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
<!ENTITY torbutton.context_menu.cookieProtections "Cookie babesak...">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.button.tooltip "Sakatu Torbutton abiarazteko">
-<!ENTITY torbutton.prefs.restore_defaults "Lehenetsiak berrezarri">
+<!ENTITY torbutton.prefs.security_settings "Tor Browser Security Settings">
+<!ENTITY torbutton.prefs.restore_defaults "Restore Defaults">
+<!ENTITY torbutton.prefs.custom_warning "Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels.">
<!ENTITY torbutton.cookiedialog.title "Cookie Babesak kudeatu">
<!ENTITY torbutton.cookiedialog.lockCol "Babestuta">
<!ENTITY torbutton.cookiedialog.domainCol "Ostalaria">
@@ -21,8 +26,13 @@
<!ENTITY torbutton.cookiedialog.saveAllCookies "Cookie berriak babestu">
<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "Ez babestu cookie berririk">
<!ENTITY torbutton.prefs.restrict_thirdparty "Hirugarrenen cookie-ak eta beste jarraipen datuak murriztu">
+<!ENTITY torbutton.prefs.restrict_thirdparty.accesskey "R">
+<!ENTITY torbutton.prefs.restrict_thirdparty_tooltip "Keep this box checked to prevent various browser features from being abused to track you as you browse the web. Modified features include blob URLs, broadcast channels, the browser cache, cookies, favicons, HTTP Auth headers, link preconnects, localStorage, mediaSource URLs, OCSP requests, SharedWorkers, and TLS session tickets.">
<!ENTITY torbutton.prefs.resist_fingerprinting "Zu beste Tor Browser erabiltzaileengandik nabarmentzen zaituzten xehetasunak aldatu">
+<!ENTITY torbutton.prefs.resist_fingerprinting.accesskey "F">
+<!ENTITY torbutton.prefs.resist_fingerprinting_tooltip "Keep this box checked to hide things from websites that could be unique about you, including your battery status, computer performance, keyboard layout, locale, the location of installed plugins, the list of installed plugins, your network status, screen orientation, screen size, site-specific zoom levels, supported file types, system colors, and WebGL capabilities.">
<!ENTITY torbutton.prefs.sec_caption "Segurtasun maila">
+<!ENTITY torbutton.prefs.sec_caption_tooltip "The Security Slider lets you disable certain browser features that may make your browser more vulnerable to hacking attempts.">
<!ENTITY torbutton.prefs.sec_low "Baxua (lehentsia)">
<!ENTITY torbutton.prefs.sec_low_usable_desc "This provides the most usable experience.">
<!ENTITY torbutton.prefs.sec_low_desc "At this security level, all browser features are enabled.">
@@ -38,7 +48,7 @@
<!ENTITY torbutton.prefs.sec_mathml_desc "Some mechanisms of displaying math equations are disabled.">
<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML ezgaituta dago.">
<!ENTITY torbutton.prefs.sec_med_high "Ertaina-altua">
-<!ENTITY torbutton.prefs.sec_all_jit_desc "All JavaScript performance optimizations are disabled.">
+<!ENTITY torbutton.prefs.sec_all_jit_desc "On sites where JavaScript is enabled, performance optimizations are disabled.">
<!ENTITY torbutton.prefs.sec_font_rend_desc "Some font rendering features are disabled.">
<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "The Graphite font rendering mechanism is disabled.">
<!ENTITY torbutton.prefs.sec_svg_desc "Some types of images are disabled.">
@@ -49,5 +59,4 @@
<!ENTITY torbutton.prefs.sec_all_js_desc "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_webfonts_desc "Some fonts and icons may display incorrectly.">
<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "Webguneak hornitutako letra fitxategiak blokeatuta daude.">
-<!ENTITY torbutton.prefs.sec_custom "Balio pertsonalizatuak">
<!ENTITY torbutton.circuit_display.title "Gune honetako Tor zirkuitua">
diff --git a/src/chrome/locale/fa/aboutTor.properties b/src/chrome/locale/fa/aboutTor.properties
index 54e04d9..a591490 100644
--- a/src/chrome/locale/fa/aboutTor.properties
+++ b/src/chrome/locale/fa/aboutTor.properties
@@ -19,3 +19,10 @@ aboutTor.searchDC.privacy=جستجو <a href="%1$S">ایمن</a> با <a href="%
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/fa/torbutton.dtd b/src/chrome/locale/fa/torbutton.dtd
index cfe1f66..b7edae6 100644
--- a/src/chrome/locale/fa/torbutton.dtd
+++ b/src/chrome/locale/fa/torbutton.dtd
@@ -2,13 +2,18 @@
<!ENTITY torbutton.context_menu.new_identity_key "I">
<!ENTITY torbutton.context_menu.new_circuit "شبکه جدید Tor برای این سایت">
<!ENTITY torbutton.context_menu.new_circuit_key "C">
+<!ENTITY torbutton.context_menu.preferences "تنظیمات امنیتی…">
+<!ENTITY torbutton.context_menu.preferences.key "S">
<!ENTITY torbutton.context_menu.networksettings "تنظیمات شبکه تور">
+<!ENTITY torbutton.context_menu.networksettings.key "N">
<!ENTITY torbutton.context_menu.downloadUpdate "بررسی بروز رسانی Tor Browser ...">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
<!ENTITY torbutton.context_menu.cookieProtections "حفاظت کوکی ها...">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.button.tooltip "جهت شروع دكمه تُرکليک کنيد">
-<!ENTITY torbutton.prefs.restore_defaults "بازگرداندن تنظیمات به حالت پیشفرض">
+<!ENTITY torbutton.prefs.security_settings "Tor Browser Security Settings">
+<!ENTITY torbutton.prefs.restore_defaults "Restore Defaults">
+<!ENTITY torbutton.prefs.custom_warning "Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels.">
<!ENTITY torbutton.cookiedialog.title "مديريت حفاظت کلوچکها">
<!ENTITY torbutton.cookiedialog.lockCol "حفاظت شده">
<!ENTITY torbutton.cookiedialog.domainCol "ميزبان">
@@ -21,8 +26,13 @@
<!ENTITY torbutton.cookiedialog.saveAllCookies "حفاظت از کلوچکهای جديد">
<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "عدم حفاظت از کلوچکهای جديد">
<!ENTITY torbutton.prefs.restrict_thirdparty "محدودكردن كوكىهاى طرف سوم و دادههاى پيگردى ديگر">
+<!ENTITY torbutton.prefs.restrict_thirdparty.accesskey "R">
+<!ENTITY torbutton.prefs.restrict_thirdparty_tooltip "Keep this box checked to prevent various browser features from being abused to track you as you browse the web. Modified features include blob URLs, broadcast channels, the browser cache, cookies, favicons, HTTP Auth headers, link preconnects, localStorage, mediaSource URLs, OCSP requests, SharedWorkers, and TLS session tickets.">
<!ENTITY torbutton.prefs.resist_fingerprinting "تغييردادن جزئياتى كه شمارا از كاربران ديگر تُر تميزمىكند">
+<!ENTITY torbutton.prefs.resist_fingerprinting.accesskey "F">
+<!ENTITY torbutton.prefs.resist_fingerprinting_tooltip "Keep this box checked to hide things from websites that could be unique about you, including your battery status, computer performance, keyboard layout, locale, the location of installed plugins, the list of installed plugins, your network status, screen orientation, screen size, site-specific zoom levels, supported file types, system colors, and WebGL capabilities.">
<!ENTITY torbutton.prefs.sec_caption "سطح امنیت">
+<!ENTITY torbutton.prefs.sec_caption_tooltip "The Security Slider lets you disable certain browser features that may make your browser more vulnerable to hacking attempts.">
<!ENTITY torbutton.prefs.sec_low "پایین (به طور پیش فرض)">
<!ENTITY torbutton.prefs.sec_low_usable_desc "این فراهم می کند بیشترین تجربه قابل استفاده.">
<!ENTITY torbutton.prefs.sec_low_desc "در این سطح امنیتی، تمام ویژگی های مرورگر ها فعال است.">
@@ -38,7 +48,7 @@
<!ENTITY torbutton.prefs.sec_mathml_desc "برخی مکانیسم ها نمایش معادلات ریاضی غیر فعال می باشد.">
<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML غیر فعال است.">
<!ENTITY torbutton.prefs.sec_med_high "متوسط - بالا">
-<!ENTITY torbutton.prefs.sec_all_jit_desc "همه بهینه سازی عملکرد جاوا اسکریپت غیر فعال شده است.">
+<!ENTITY torbutton.prefs.sec_all_jit_desc "On sites where JavaScript is enabled, performance optimizations are disabled.">
<!ENTITY torbutton.prefs.sec_font_rend_desc "برخی از ویژگی های رندر فونت غیر فعال می باشد.">
<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "مکانیسم گرافیت رندر فونت غیر فعال است.">
<!ENTITY torbutton.prefs.sec_svg_desc "برخی از انواع تصاویر غیر فعال هستند.">
@@ -49,5 +59,4 @@
<!ENTITY torbutton.prefs.sec_all_js_desc "جاوا اسکریپت به طور پیش فرض در تمامی سایت ها غیر فعال است.">
<!ENTITY torbutton.prefs.sec_webfonts_desc "برخی از فونت ها و آیکون های ممکن است نمایش نادرست داشته باشند.">
<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "فایل های فونتی که در وب سایت ارائه می شوند مسدود شده است.">
-<!ENTITY torbutton.prefs.sec_custom "تنظیم سفارشی">
<!ENTITY torbutton.circuit_display.title "مدار Tor برای این سایت">
diff --git a/src/chrome/locale/fr/aboutTor.properties b/src/chrome/locale/fr/aboutTor.properties
index ec59d81..5842c54 100644
--- a/src/chrome/locale/fr/aboutTor.properties
+++ b/src/chrome/locale/fr/aboutTor.properties
@@ -19,3 +19,10 @@ aboutTor.searchDC.privacy=Rechercher <a href="%1$S">de manière sécurisée</a>
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/fr/torbutton.dtd b/src/chrome/locale/fr/torbutton.dtd
index 184a9a6..035203b 100644
--- a/src/chrome/locale/fr/torbutton.dtd
+++ b/src/chrome/locale/fr/torbutton.dtd
@@ -2,13 +2,18 @@
<!ENTITY torbutton.context_menu.new_identity_key "I">
<!ENTITY torbutton.context_menu.new_circuit "Nouveau circuit Tor pour ce site">
<!ENTITY torbutton.context_menu.new_circuit_key "C">
+<!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.downloadUpdate "Vérifier les mises à jour du Navigateur Tor">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
<!ENTITY torbutton.context_menu.cookieProtections "Protections contre les cookies">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.button.tooltip "Cliquez pour lancer Torbutton">
-<!ENTITY torbutton.prefs.restore_defaults "Valeurs par défaut">
+<!ENTITY torbutton.prefs.security_settings "Tor Browser Security Settings">
+<!ENTITY torbutton.prefs.restore_defaults "Restore Defaults">
+<!ENTITY torbutton.prefs.custom_warning "Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels.">
<!ENTITY torbutton.cookiedialog.title "Gérer les protections de cookies">
<!ENTITY torbutton.cookiedialog.lockCol "Protégé">
<!ENTITY torbutton.cookiedialog.domainCol "Hôte">
@@ -21,8 +26,13 @@
<!ENTITY torbutton.cookiedialog.saveAllCookies "Protéger les nouveaux cookies">
<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "Ne pas protéger les nouveaux cookies">
<!ENTITY torbutton.prefs.restrict_thirdparty "Limiter les cookies tiers ainsi que les autres données de traçage">
+<!ENTITY torbutton.prefs.restrict_thirdparty.accesskey "R">
+<!ENTITY torbutton.prefs.restrict_thirdparty_tooltip "Keep this box checked to prevent various browser features from being abused to track you as you browse the web. Modified features include blob URLs, broadcast channels, the browser cache, cookies, favicons, HTTP Auth headers, link preconnects, localStorage, mediaSource URLs, OCSP requests, SharedWorkers, and TLS session tickets.">
<!ENTITY torbutton.prefs.resist_fingerprinting "Modifier les détails qui vous distinguent des autres utilisateurs du Navigateur Tor">
+<!ENTITY torbutton.prefs.resist_fingerprinting.accesskey "F">
+<!ENTITY torbutton.prefs.resist_fingerprinting_tooltip "Keep this box checked to hide things from websites that could be unique about you, including your battery status, computer performance, keyboard layout, locale, the location of installed plugins, the list of installed plugins, your network status, screen orientation, screen size, site-specific zoom levels, supported file types, system colors, and WebGL capabilities.">
<!ENTITY torbutton.prefs.sec_caption "Niveau de sécurité">
+<!ENTITY torbutton.prefs.sec_caption_tooltip "Le curseur de sécurité vous laisse mettre hors de service certaines fonctions de navigateur qui peuvent rendre votre navigateur plus vulnérable aux tentatives de piratage informatique.">
<!ENTITY torbutton.prefs.sec_low "Faible (par défaut)">
<!ENTITY torbutton.prefs.sec_low_usable_desc "Cela offre l'expérience la plus agréable.">
<!ENTITY torbutton.prefs.sec_low_desc "A ce niveau de sécurité, toutes les fonctions de navigation sont activées.">
@@ -38,7 +48,7 @@
<!ENTITY torbutton.prefs.sec_mathml_desc "Quelques mécanismes d'affichage d'équations mathématiques sont désactivés.">
<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML est désactivé.">
<!ENTITY torbutton.prefs.sec_med_high "Moyennement haut">
-<!ENTITY torbutton.prefs.sec_all_jit_desc "Toutes les optimisations de performance de Javascript sont désactivées.">
+<!ENTITY torbutton.prefs.sec_all_jit_desc "Sur les sites où Javascript est permis, les optimisations de performance sont désactivées.">
<!ENTITY torbutton.prefs.sec_font_rend_desc "Certaines fonctionnalités de rendu de police sont désactivées.">
<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "Le mécanisme de rendu de police de caractères Graphite est désactivé.">
<!ENTITY torbutton.prefs.sec_svg_desc "Certains formats d'images sont désactivés.">
@@ -49,5 +59,4 @@
<!ENTITY torbutton.prefs.sec_all_js_desc "JavaScript est désactivé par défaut sur tous les sites.">
<!ENTITY torbutton.prefs.sec_webfonts_desc "Certaines polices de caractères et icônes peuvent être affichées de façon incorrecte.">
<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "Les fichiers de police de caractères fournis par des sites Web sont bloqués.">
-<!ENTITY torbutton.prefs.sec_custom "Valeurs personnalisées">
<!ENTITY torbutton.circuit_display.title "Circuit Tor pour ce site">
diff --git a/src/chrome/locale/it/aboutTor.properties b/src/chrome/locale/it/aboutTor.properties
index db49b15..58592a6 100644
--- a/src/chrome/locale/it/aboutTor.properties
+++ b/src/chrome/locale/it/aboutTor.properties
@@ -19,3 +19,10 @@ aboutTor.searchDC.privacy=Cerca <a href="%1$S"> in sicurezza </a> con <a href="%
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 307f6a7..eb1090a 100644
--- a/src/chrome/locale/it/torbutton.dtd
+++ b/src/chrome/locale/it/torbutton.dtd
@@ -2,13 +2,18 @@
<!ENTITY torbutton.context_menu.new_identity_key "I">
<!ENTITY torbutton.context_menu.new_circuit "Nuovo Circuito Tor per questo Sito">
<!ENTITY torbutton.context_menu.new_circuit_key "C">
+<!ENTITY torbutton.context_menu.preferences "Impostazioni di sicurezza...">
+<!ENTITY torbutton.context_menu.preferences.key "S">
<!ENTITY torbutton.context_menu.networksettings "Impostazioni di rete di Tor...">
+<!ENTITY torbutton.context_menu.networksettings.key "N">
<!ENTITY torbutton.context_menu.downloadUpdate "Controllo per aggiornamento Tor Browser...">
<!ENTITY torbutton.context_menu.downloadUpdate.key "A">
<!ENTITY torbutton.context_menu.cookieProtections "Protezioni dei Cookie...">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.button.tooltip "Fai clic per inizializzare Torbutton">
-<!ENTITY torbutton.prefs.restore_defaults "Reimposta i valori di default">
+<!ENTITY torbutton.prefs.security_settings "Tor Browser Security Settings">
+<!ENTITY torbutton.prefs.restore_defaults "Restore Defaults">
+<!ENTITY torbutton.prefs.custom_warning "Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels.">
<!ENTITY torbutton.cookiedialog.title "Gestisci protezione Cookies">
<!ENTITY torbutton.cookiedialog.lockCol "Protetto">
<!ENTITY torbutton.cookiedialog.domainCol "Host">
@@ -21,8 +26,13 @@
<!ENTITY torbutton.cookiedialog.saveAllCookies "Proteggi i nuovi cookie">
<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "Non proteggere i nuovi cookie">
<!ENTITY torbutton.prefs.restrict_thirdparty "Limita i cookie di terze parti e altri dati di tracciamento">
+<!ENTITY torbutton.prefs.restrict_thirdparty.accesskey "R">
+<!ENTITY torbutton.prefs.restrict_thirdparty_tooltip "Mantieni questo box selezionato per evitare che diverse funzionalità del browser possano essere utilizzate per tracciare la tua navigazione. Le funzionalità modificate includono URL blob, canali di trasmissione, la cache del browser, cookie, favicon, intestazioni di Auth HTTP, link a cui ti sei connesso, localStorage, URL mediaSource, richieste OCSP, SharedWorkers, a ticket di sessioni TLS.">
<!ENTITY torbutton.prefs.resist_fingerprinting "Cambia i dettagli che ti distinguono dagli altri utenti di Tor Browser">
+<!ENTITY torbutton.prefs.resist_fingerprinting.accesskey "F">
+<!ENTITY torbutton.prefs.resist_fingerprinting_tooltip "Mantieni questo box selezionato per nascondere ai siti informazioni univoche su di te, incluse lo stato della batteria, le performance del computer, il layout della tastiera, locale, il luogo di installazione dei plugin, la lista dei plugin installati, lo stato della tua rete, l'orientamento dello schermo, le dimensioni dello schermo, livelli di zoom specifici per i siti, le tipologie di file supportati, i colori del sistema, and le capacità di gestire WebGL.">
<!ENTITY torbutton.prefs.sec_caption "Livello di Sicurezza">
+<!ENTITY torbutton.prefs.sec_caption_tooltip "Il Security Slider ti permette di disabilitare determinate funzionalità del browser che potrebbero renderlo più vulnerabile a tentativi di attacco.">
<!ENTITY torbutton.prefs.sec_low "Basso (default)">
<!ENTITY torbutton.prefs.sec_low_usable_desc "Questo permette la migliore esperienza di usablità.">
<!ENTITY torbutton.prefs.sec_low_desc "A questo livello di sicurezza, tutte le features del browser sono abilitate.">
@@ -38,7 +48,7 @@
<!ENTITY torbutton.prefs.sec_mathml_desc "Alcuni meccanismi di visualizzazione di equazioni matematiche sono disabilitati.">
<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML è disabilitato.">
<!ENTITY torbutton.prefs.sec_med_high "Medio-Alto">
-<!ENTITY torbutton.prefs.sec_all_jit_desc "Tutte le ottimizzazioni di JavaScript per le performance sono disattivate.">
+<!ENTITY torbutton.prefs.sec_all_jit_desc "Nei siti dove è attivato JavaScript le ottimizzazioni sono disabilitate">
<!ENTITY torbutton.prefs.sec_font_rend_desc "Alcuni rendering dei font sono disabilitati.">
<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "Il meccanismo di rendering font Graphite è disabilitato.">
<!ENTITY torbutton.prefs.sec_svg_desc "Alcuni tipi di immagini sono disabilitati.">
@@ -49,5 +59,4 @@
<!ENTITY torbutton.prefs.sec_all_js_desc "JavaScript è disabilitato di default su tutti i siti.">
<!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.prefs.sec_custom "Valori personalizzati">
<!ENTITY torbutton.circuit_display.title "Circuito Tor per questo sito">
diff --git a/src/chrome/locale/ja/aboutTor.properties b/src/chrome/locale/ja/aboutTor.properties
index ed1ecc6..317071d 100644
--- a/src/chrome/locale/ja/aboutTor.properties
+++ b/src/chrome/locale/ja/aboutTor.properties
@@ -19,3 +19,10 @@ aboutTor.searchDC.privacy=<a href="%2$S">Disconnect.me</a>で<a href="%1$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=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/ja/torbutton.dtd b/src/chrome/locale/ja/torbutton.dtd
index 37c4c68..6a82835 100644
--- a/src/chrome/locale/ja/torbutton.dtd
+++ b/src/chrome/locale/ja/torbutton.dtd
@@ -2,13 +2,18 @@
<!ENTITY torbutton.context_menu.new_identity_key "I">
<!ENTITY torbutton.context_menu.new_circuit "このサイト用の新しい Tor サーキット">
<!ENTITY torbutton.context_menu.new_circuit_key "C">
+<!ENTITY torbutton.context_menu.preferences "Security Settings…">
+<!ENTITY torbutton.context_menu.preferences.key "S">
<!ENTITY torbutton.context_menu.networksettings "Torネットワークの設定...">
+<!ENTITY torbutton.context_menu.networksettings.key "N">
<!ENTITY torbutton.context_menu.downloadUpdate "TorBrowserのアップデートを確認">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
<!ENTITY torbutton.context_menu.cookieProtections "Cookie の防御">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.button.tooltip "Torbuttonを初期状態に戻す">
-<!ENTITY torbutton.prefs.restore_defaults "デフォルト設定に戻す">
+<!ENTITY torbutton.prefs.security_settings "Tor Browser Security Settings">
+<!ENTITY torbutton.prefs.restore_defaults "Restore Defaults">
+<!ENTITY torbutton.prefs.custom_warning "Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels.">
<!ENTITY torbutton.cookiedialog.title "Cookie保護を管理">
<!ENTITY torbutton.cookiedialog.lockCol "保護済み">
<!ENTITY torbutton.cookiedialog.domainCol "ホスト">
@@ -21,8 +26,13 @@
<!ENTITY torbutton.cookiedialog.saveAllCookies "新しいCookieを保護">
<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "新しいCookieを保護しない">
<!ENTITY torbutton.prefs.restrict_thirdparty "サードパーティーのCookieやその他のトラッキングデータを制限">
+<!ENTITY torbutton.prefs.restrict_thirdparty.accesskey "R">
+<!ENTITY torbutton.prefs.restrict_thirdparty_tooltip "このボックスをチェックしたままにすることで、様々なブラウザーの機能が悪用されウェブの閲覧中に追跡されることを防ぐ。影響を受ける機能:blob URL、ブロードキャスト・チャンネル、ブラウザー・キャッシュ、クッキー、favicon、HTTP認証ヘッダー、link preconnects、ローカルストレージ、mediaSource URL、OCSPリクエスト、共有ワーカー、TLSセッション・チケットなど。">
<!ENTITY torbutton.prefs.resist_fingerprinting "あなたとほかのTorブラウザのユーザーを区別する詳細を変更">
+<!ENTITY torbutton.prefs.resist_fingerprinting.accesskey "F">
+<!ENTITY torbutton.prefs.resist_fingerprinting_tooltip "このボックスをチェックしたままにすることで、ウェブサイトからあなたを識別する内容を隠す:バッテリー状態、コンピューターの性能、キーボードの配列、地域設定、インストールされたプラグインの場所、インストールされたプラグインの一覧、あなたのネットワーク状態、画面の向き、画面の大きさ、サイトごとのズームレベル、対応するファイルの種類、システムの色、WebGL能力など。">
<!ENTITY torbutton.prefs.sec_caption "セキュリティレベル">
+<!ENTITY torbutton.prefs.sec_caption_tooltip "セキュリティ・スライダーを使って、あなたのブラウザーをハッキングの試みに対してより脆弱にする可能性のあるブラウザーの機能を無効にできます。">
<!ENTITY torbutton.prefs.sec_low "低い(デフォルト)">
<!ENTITY torbutton.prefs.sec_low_usable_desc "最大の利便性を提供します。">
<!ENTITY torbutton.prefs.sec_low_desc "このレベルでは、全てのブラウザーの機能が有効化されます。">
@@ -38,7 +48,7 @@
<!ENTITY torbutton.prefs.sec_mathml_desc "数式を表示するためのいくつかの機能が無効化されます。">
<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML が無効化されます。">
<!ENTITY torbutton.prefs.sec_med_high "高中">
-<!ENTITY torbutton.prefs.sec_all_jit_desc "全ての JavaScript のパフォーマンス最適化機能が無効化されます。">
+<!ENTITY torbutton.prefs.sec_all_jit_desc "JavaScriptが有効になっているサイトで、パフォーマンスの最適化が無効になります。">
<!ENTITY torbutton.prefs.sec_font_rend_desc "いくつかのフォントレンダリング機能が無効化されます。">
<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "Graphite フォントレンダリング機能は無効化されます。">
<!ENTITY torbutton.prefs.sec_svg_desc "いくつかの画像の種類が無効化されます。">
@@ -49,5 +59,4 @@
<!ENTITY torbutton.prefs.sec_all_js_desc "全てのサイトの JavaScript はデフォルトで無効化されます。">
<!ENTITY torbutton.prefs.sec_webfonts_desc "いくつかのフォントとアイコンは正常に表示されません。">
<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "Web サイトが提供するフォントはブロックされます。">
-<!ENTITY torbutton.prefs.sec_custom "カスタム値">
<!ENTITY torbutton.circuit_display.title "このサイト用の Tor サーキット">
diff --git a/src/chrome/locale/ko/aboutTor.properties b/src/chrome/locale/ko/aboutTor.properties
index 69c53da..0f526d8 100644
--- a/src/chrome/locale/ko/aboutTor.properties
+++ b/src/chrome/locale/ko/aboutTor.properties
@@ -19,3 +19,10 @@ aboutTor.searchDC.privacy=<a href="%2$S">Diconnect.me</a>를 통해 <a href="%1$
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/torbutton.dtd b/src/chrome/locale/ko/torbutton.dtd
index 61b4d53..df64398 100644
--- a/src/chrome/locale/ko/torbutton.dtd
+++ b/src/chrome/locale/ko/torbutton.dtd
@@ -2,13 +2,18 @@
<!ENTITY torbutton.context_menu.new_identity_key "I">
<!ENTITY torbutton.context_menu.new_circuit "Tor 서킷 재구축">
<!ENTITY torbutton.context_menu.new_circuit_key "C">
+<!ENTITY torbutton.context_menu.preferences "Security Settings…">
+<!ENTITY torbutton.context_menu.preferences.key "S">
<!ENTITY torbutton.context_menu.networksettings "토르 네트워크 설정...">
+<!ENTITY torbutton.context_menu.networksettings.key "N">
<!ENTITY torbutton.context_menu.downloadUpdate "토르 브라우저 업데이트 체크하기...">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
<!ENTITY torbutton.context_menu.cookieProtections "쿠키 보호....">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.button.tooltip "Torbutton 설정 초기화">
-<!ENTITY torbutton.prefs.restore_defaults "설정 초기화">
+<!ENTITY torbutton.prefs.security_settings "Tor Browser Security Settings">
+<!ENTITY torbutton.prefs.restore_defaults "Restore Defaults">
+<!ENTITY torbutton.prefs.custom_warning "Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels.">
<!ENTITY torbutton.cookiedialog.title "쿠키 보호 관리">
<!ENTITY torbutton.cookiedialog.lockCol "보호됨">
<!ENTITY torbutton.cookiedialog.domainCol "Host">
@@ -21,8 +26,13 @@
<!ENTITY torbutton.cookiedialog.saveAllCookies "새로운 쿠키 보호">
<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "새로운 쿠키를 보호하지 않음">
<!ENTITY torbutton.prefs.restrict_thirdparty "제 3자 쿠키와 다른 추적 데이터 제한">
+<!ENTITY torbutton.prefs.restrict_thirdparty.accesskey "R">
+<!ENTITY torbutton.prefs.restrict_thirdparty_tooltip "Keep this box checked to prevent various browser features from being abused to track you as you browse the web. Modified features include blob URLs, broadcast channels, the browser cache, cookies, favicons, HTTP Auth headers, link preconnects, localStorage, mediaSource URLs, OCSP requests, SharedWorkers, and TLS session tickets.">
<!ENTITY torbutton.prefs.resist_fingerprinting "다른 Tor browser 사용자로부터 구별되는 세부 사항 변경">
+<!ENTITY torbutton.prefs.resist_fingerprinting.accesskey "F">
+<!ENTITY torbutton.prefs.resist_fingerprinting_tooltip "Keep this box checked to hide things from websites that could be unique about you, including your battery status, computer performance, keyboard layout, locale, the location of installed plugins, the list of installed plugins, your network status, screen orientation, screen size, site-specific zoom levels, supported file types, system colors, and WebGL capabilities.">
<!ENTITY torbutton.prefs.sec_caption "보안 등급">
+<!ENTITY torbutton.prefs.sec_caption_tooltip "The Security Slider lets you disable certain browser features that may make your browser more vulnerable to hacking attempts.">
<!ENTITY torbutton.prefs.sec_low "낮음 (기본)">
<!ENTITY torbutton.prefs.sec_low_usable_desc "This provides the most usable experience.">
<!ENTITY torbutton.prefs.sec_low_desc "At this security level, all browser features are enabled.">
@@ -38,7 +48,7 @@
<!ENTITY torbutton.prefs.sec_mathml_desc "Some mechanisms of displaying math equations are disabled.">
<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML가 비활성화 되었습니다.">
<!ENTITY torbutton.prefs.sec_med_high "중간 높음">
-<!ENTITY torbutton.prefs.sec_all_jit_desc "모든 JavaScript 의 성능 최적화가 비활성화되었습니다.">
+<!ENTITY torbutton.prefs.sec_all_jit_desc "On sites where JavaScript is enabled, performance optimizations are disabled.">
<!ENTITY torbutton.prefs.sec_font_rend_desc "일부 폰트의 렌터링이 비활성화되었습니다.">
<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "The Graphite font rendering mechanism is disabled.">
<!ENTITY torbutton.prefs.sec_svg_desc "몇몇 종류의 이미지가 비활성화 되었습니다.">
@@ -49,5 +59,4 @@
<!ENTITY torbutton.prefs.sec_all_js_desc "자바 스크립트는 기본 설정으로 모든 사이트에서 비활성화 되어 있습니다.">
<!ENTITY torbutton.prefs.sec_webfonts_desc "어떤 글씨체나 아이콘은 올바르지 않게 표시될 수 있습니다.">
<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "사이트 내장 폰트가 차단되었습니다.">
-<!ENTITY torbutton.prefs.sec_custom "맞춤 값">
<!ENTITY torbutton.circuit_display.title "Tor circuit for this site">
diff --git a/src/chrome/locale/nl/aboutDialog.dtd b/src/chrome/locale/nl/aboutDialog.dtd
index 33e7e78..b173adb 100644
--- a/src/chrome/locale/nl/aboutDialog.dtd
+++ b/src/chrome/locale/nl/aboutDialog.dtd
@@ -1,7 +1,7 @@
<!ENTITY project.start "&brandShortName; wordt ontwikkeld door">
<!-- LOCALIZATION NOTE (project.tpoLink): This is a link title that links to https://www.torproject.org -->
<!ENTITY project.tpoLink "het &vendorShortName;">
-<!ENTITY project.end ", een non-profit die zich inzet om uw privacy en vrijheid online te verdedigen.">
+<!ENTITY project.end ", een non-profit die zich inzet om je privacy en vrijheid online te verdedigen.">
<!ENTITY help.start "Wil je meehelpen?">
<!-- LOCALIZATION NOTE (help.donate): This is a link title that links to https://www.torproject.org/donate/donate.html.en -->
diff --git a/src/chrome/locale/nl/aboutTBUpdate.dtd b/src/chrome/locale/nl/aboutTBUpdate.dtd
index 57a8c54..e773a68 100644
--- a/src/chrome/locale/nl/aboutTBUpdate.dtd
+++ b/src/chrome/locale/nl/aboutTBUpdate.dtd
@@ -1,6 +1,6 @@
-<!ENTITY aboutTBUpdate.title "Tor Browser Update">
-<!ENTITY aboutTBUpdate.updated "Tor Browser is bijgewerkt.">
-<!ENTITY aboutTBUpdate.linkPrefix "Voor meer info over deze release,">
-<!ENTITY aboutTBUpdate.linkLabel "bekijk onze website">
+<!ENTITY aboutTBUpdate.title "Tor-browserupdate">
+<!ENTITY aboutTBUpdate.updated "Tor-browser is bijgewerkt.">
+<!ENTITY aboutTBUpdate.linkPrefix "Bezoek voor meer info over deze uitgave">
+<!ENTITY aboutTBUpdate.linkLabel "onze website">
<!ENTITY aboutTBUpdate.linkSuffix ".">
<!ENTITY aboutTBUpdate.changeLogHeading "Wijzigingslogboek:">
diff --git a/src/chrome/locale/nl/aboutTor.dtd b/src/chrome/locale/nl/aboutTor.dtd
index 9c6068b..023457e 100644
--- a/src/chrome/locale/nl/aboutTor.dtd
+++ b/src/chrome/locale/nl/aboutTor.dtd
@@ -6,18 +6,18 @@
<!ENTITY aboutTor.title "Over Tor">
-<!ENTITY aboutTor.outOfDateTorOn.label "Waarschuwing: Deze browser is verouderd!">
+<!ENTITY aboutTor.outOfDateTorOn.label "Waarschuwing: deze browser is verouderd!">
<!ENTITY aboutTor.outOfDateTorOff.label "BOVENDIEN is deze browser verouderd.">
-<!ENTITY aboutTor.outOfDate2.label "Klik op de ui en kies Controleer op Tor Browser Update">
+<!ENTITY aboutTor.outOfDate2.label "Klik op de ui en kies Controleer op Tor-browserupdate.">
-<!ENTITY aboutTor.check.label "Test Tor Netwerkinstellingen">
+<!ENTITY aboutTor.check.label "Test Tor-netwerkinstellingen">
-<!ENTITY aboutTor.success.label "Welkom bij Tor Browser">
-<!ENTITY aboutTor.success2.label "Verbonden met het Tor netwerk.">
+<!ENTITY aboutTor.success.label "Welkom bij Tor-browser">
+<!ENTITY aboutTor.success2.label "Verbonden met het Tor-netwerk.">
<!ENTITY aboutTor.success3.label "Je kan nu anoniem over het internet browsen.">
<!ENTITY aboutTor.failure.label "Er ging iets mis!">
<!ENTITY aboutTor.failure2.label "Tor werkt niet in deze browser.">
-<!ENTITY aboutTor.failure3prefix.label "Voor hulp, contacteer">
+<!ENTITY aboutTor.failure3prefix.label "Contacteer voor hulp">
<!ENTITY aboutTor.failure3Link "help(a)rt.torproject.org">
<!ENTITY aboutTor.failure3suffix.label ".">
@@ -29,21 +29,21 @@
<!ENTITY aboutTor.torInfo1.label "Bijkomende informatie:">
<!ENTITY aboutTor.torInfo2.label "Land & IP-adres:">
-<!ENTITY aboutTor.torInfo3.label "Exit Node:">
-<!ENTITY aboutTor.torInfo4.label "Deze server logt geen enkele informatie over bezoekers.">
+<!ENTITY aboutTor.torInfo3.label "Exitnode:">
+<!ENTITY aboutTor.torInfo4.label "Deze server houdt geen enkele informatie over bezoekers bij.">
<!ENTITY aboutTor.whatnextQuestion.label "Wat nu?">
-<!ENTITY aboutTor.whatnextAnswer.label "Tor is NIET alles wat je nodig hebt om anoniem te kunnen browsen. Mogelijk is het nodig dat je bepaalde browsing-gewoontes veranderen om te verzekeren dat je identiteit veilig blijft.">
+<!ENTITY aboutTor.whatnextAnswer.label "Tor is NIET alles wat je nodig hebt om anoniem te kunnen browsen. Mogelijk is het nodig dat je bepaalde browsegewoontes verandert om te verzekeren dat je identiteit veilig blijft.">
<!ENTITY aboutTor.whatnext.label "Tips om anoniem te blijven »">
<!ENTITY aboutTor.whatnext.link "https://www.torproject.org/download/download.html.en#warning">
<!ENTITY aboutTor.helpInfo1.label "Jij kan helpen!">
-<!ENTITY aboutTor.helpInfo2.label "Er zijn veel verschillende manieren hoe jij kan helpen het Tor Netwerk sneller en sterker te maken:">
-<!ENTITY aboutTor.helpInfo3.label "Draai een Tor Relay Node »">
+<!ENTITY aboutTor.helpInfo2.label "Er zijn veel verschillende manieren hoe jij kan helpen het Tor-netwerk sneller en sterker te maken:">
+<!ENTITY aboutTor.helpInfo3.label "Draai een Tor-relaynode »">
<!ENTITY aboutTor.helpInfo3.link "https://www.torproject.org/docs/tor-doc-relay.html.en">
<!ENTITY aboutTor.helpInfo4.label "Word vrijwilliger">
<!ENTITY aboutTor.helpInfo4.link "https://www.torproject.org/getinvolved/volunteer.html.en">
-<!ENTITY aboutTor.helpInfo5.label "Maak een donatie »">
+<!ENTITY aboutTor.helpInfo5.label "Doneer »">
<!ENTITY aboutTor.helpInfo5.link "https://www.torproject.org/donate/donate.html.en">
-<!ENTITY aboutTor.footer.label "Het Tor Project is een US 501(c)(3) non-profit voor onderzoek, ontwikkeling, onderwijs in online anonimiteit en privacy.">
-<!ENTITY aboutTor.learnMore.label "Leer meer over Het Tor Project » ">
+<!ENTITY aboutTor.footer.label "Het Tor Project is een US 501(c)(3) non-profit voor onderzoek, ontwikkeling en onderwijs in online anonimiteit en privacy.">
+<!ENTITY aboutTor.learnMore.label "Leer meer over het Tor-project » ">
<!ENTITY aboutTor.learnMore.link "https://www.torproject.org/about/overview.html.en">
diff --git a/src/chrome/locale/nl/aboutTor.properties b/src/chrome/locale/nl/aboutTor.properties
index 63c49fa..83c190a 100644
--- a/src/chrome/locale/nl/aboutTor.properties
+++ b/src/chrome/locale/nl/aboutTor.properties
@@ -19,3 +19,10 @@ aboutTor.searchDC.privacy=<a href="%1$S">Veilig</a> zoeken met <a href="%2$S">Di
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/nl/brand.properties b/src/chrome/locale/nl/brand.properties
index 036f97a..43f4361 100644
--- a/src/chrome/locale/nl/brand.properties
+++ b/src/chrome/locale/nl/brand.properties
@@ -2,15 +2,15 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-brandShorterName=Tor Browser
-brandShortName=Tor Browser
-brandFullName=Tor Browser
-vendorShortName=Tor Project
+brandShorterName=Tor-browser
+brandShortName=Tor-browser
+brandFullName=Tor-browser
+vendorShortName=Tor-project
homePageSingleStartMain=Firefox Start, een snelle startpagina met ingebouwde zoekfunctie
homePageImport=Importeer je startpagina uit %S
-homePageMigrationPageTitle=Startpagina selectie
-homePageMigrationDescription=Selecteer de startpagina die jij wil gebruiken:
+homePageMigrationPageTitle=Startpaginakeuze
+homePageMigrationDescription=Selecteer de startpagina die je wil gebruiken:
-syncBrandShortName=Sync
+syncBrandShortName=Synchronisatie
diff --git a/src/chrome/locale/nl/torbutton.dtd b/src/chrome/locale/nl/torbutton.dtd
index 710a24b..79d0113 100644
--- a/src/chrome/locale/nl/torbutton.dtd
+++ b/src/chrome/locale/nl/torbutton.dtd
@@ -1,53 +1,62 @@
<!ENTITY torbutton.context_menu.new_identity "Nieuwe identiteit">
<!ENTITY torbutton.context_menu.new_identity_key "I">
-<!ENTITY torbutton.context_menu.new_circuit "Nieuw tor circuit voor deze website">
+<!ENTITY torbutton.context_menu.new_circuit "Nieuw Tor-circuit voor deze website">
<!ENTITY torbutton.context_menu.new_circuit_key "C">
-<!ENTITY torbutton.context_menu.networksettings "Tor netwerk instellingen">
-<!ENTITY torbutton.context_menu.downloadUpdate "Controleer op updates voor de Tor Browser...">
+<!ENTITY torbutton.context_menu.preferences "Beveiligingsinstellingen…">
+<!ENTITY torbutton.context_menu.preferences.key "S">
+<!ENTITY torbutton.context_menu.networksettings "Tor-netwerkinstellingen…">
+<!ENTITY torbutton.context_menu.networksettings.key "N">
+<!ENTITY torbutton.context_menu.downloadUpdate "Controleer op updates voor de Tor-browser...">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
-<!ENTITY torbutton.context_menu.cookieProtections "Cookie beveiligingen...">
+<!ENTITY torbutton.context_menu.cookieProtections "Cookiebeveiligingen...">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.button.tooltip "Klik hier om Torbutton te initialiseren">
-<!ENTITY torbutton.prefs.restore_defaults "Terugzetten op begintoestand">
-<!ENTITY torbutton.cookiedialog.title "Beheer Cookie Beveiligingen">
+<!ENTITY torbutton.prefs.security_settings "Tor-browserbeveiligingsinstellingen">
+<!ENTITY torbutton.prefs.restore_defaults "Standaardwaarden herstellen">
+<!ENTITY torbutton.prefs.custom_warning "Je aangepaste browservoorkeuren hebben geleid tot ongebruikelijke beveiligingsinstellingen. Uit veiligheids- en privacy-overwegen raden we je aan een van de standaardbeveiligingsniveau's te kiezen.">
+<!ENTITY torbutton.cookiedialog.title "Beheer cookiebeveiligingen">
<!ENTITY torbutton.cookiedialog.lockCol "Beveiligd">
<!ENTITY torbutton.cookiedialog.domainCol "Host">
<!ENTITY torbutton.cookiedialog.nameCol "Naam">
<!ENTITY torbutton.cookiedialog.pathCol "Pad">
-<!ENTITY torbutton.cookiedialog.protectCookie "Beveilig Cookie">
-<!ENTITY torbutton.cookiedialog.removeCookie "Verwijder Cookie">
-<!ENTITY torbutton.cookiedialog.unprotectCookie "Hef Cookie beveiliging op.">
-<!ENTITY torbutton.cookiedialog.removeAllBut "Verwijder alle behalve beveiligde">
-<!ENTITY torbutton.cookiedialog.saveAllCookies "Beveilig nieuwe Cookies">
-<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "Beveilig nieuwe Cookies niet">
+<!ENTITY torbutton.cookiedialog.protectCookie "Cookie beveiligen">
+<!ENTITY torbutton.cookiedialog.removeCookie "Cookie verwijderen">
+<!ENTITY torbutton.cookiedialog.unprotectCookie "Cookiebeveiliging opheffen">
+<!ENTITY torbutton.cookiedialog.removeAllBut "Alle cookies behalve beveiligde verwijderen">
+<!ENTITY torbutton.cookiedialog.saveAllCookies "Beveilig nieuwe cookies">
+<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "Beveilig nieuwe cookies niet">
<!ENTITY torbutton.prefs.restrict_thirdparty "Beperk cookies en andere tracking-gegevens van derden">
+<!ENTITY torbutton.prefs.restrict_thirdparty.accesskey "R">
+<!ENTITY torbutton.prefs.restrict_thirdparty_tooltip "Vink dit vakje aan om te voorkomen dat functies van je browser worden misbruikt om je te volgen op het internet. Gemodificeerde functies zijn o.a. URL's, uitzendingskanalen, de browsercache, cookies, favicons, HTTP-auth-hoofdingen, koppelingsvoorverbindingen, localStorage, mediaSource-URL's, OCSP-verzoeken, SharedWorkers en TLS-sessietickets.">
<!ENTITY torbutton.prefs.resist_fingerprinting "Verander details die je onderscheiden van andere Tor Browser gebruikers">
+<!ENTITY torbutton.prefs.resist_fingerprinting.accesskey "F">
+<!ENTITY torbutton.prefs.resist_fingerprinting_tooltip "Vink dit vakje aan om websites geen inzicht te geven in dingen die uniek aan je zijn, zoals je batterijstatus, computersnelheid, toetsenbordindeling, taal, geïnstalleerde plug-ins en hun locatie, netwerkstatus, schermoriëntatie, schermgrootte, zoomniveaus per site, ondersteunde bestandstypes, systeemkleuren en WebGL-mogelijkheden.">
<!ENTITY torbutton.prefs.sec_caption "Beveiligingsniveau">
+<!ENTITY torbutton.prefs.sec_caption_tooltip "De beveiligingsschuifbalk laat je toe sommige functies uit te schakelen die je browser mogelijk blootstellen aan beveiligingsrisico's.">
<!ENTITY torbutton.prefs.sec_low "Laag (standaard)">
-<!ENTITY torbutton.prefs.sec_low_usable_desc "Dit verschaft de meest bruikbare ervaring">
+<!ENTITY torbutton.prefs.sec_low_usable_desc "Dit biedt de meest bruikbare ervaring.">
<!ENTITY torbutton.prefs.sec_low_desc "Op dit beveiligingsniveau worden alle browserfuncties ingeschakeld.">
-<!ENTITY torbutton.prefs.sec_font_rend_svg_tooltip "De SVG OpenType font rendering mechanisme is uitgeschakeld.">
-<!ENTITY torbutton.prefs.sec_med_low "Medium-Laag">
-<!ENTITY torbutton.prefs.sec_gen_desc "Op dit beveiligingsniveau gelden de volgende wijzigingen (beweeg de muis over de items voor meer informatie)">
-<!ENTITY torbutton.prefs.sec_html5_desc "HTML5 video en audio media geworden click-to-play via NoScript.">
-<!ENTITY torbutton.prefs.sec_html5_tooltip "Op sommige sites zou je de NoScript werkbalk knop moeten gebruiken om deze media -objecten mogelijk te maken.">
+<!ENTITY torbutton.prefs.sec_font_rend_svg_tooltip "Het SVG OpenType-mechanisme voor weergave van lettertypen is uitgeschakeld.">
+<!ENTITY torbutton.prefs.sec_med_low "Medium-laag">
+<!ENTITY torbutton.prefs.sec_gen_desc "Op dit beveiligingsniveau gelden de volgende wijzigingen (beweeg de muis over de items voor meer informatie):">
+<!ENTITY torbutton.prefs.sec_html5_desc "HTML5-video en -audio worden klik-om-af-te-spelen via NoScript.">
+<!ENTITY torbutton.prefs.sec_html5_tooltip "Op sommige sites moet je de NoScript-werkbalkknop gebruiken om deze media-objecten in te schakelen.">
<!ENTITY torbutton.prefs.sec_some_jit_desc "Sommige JavaScript-prestatieverbeteringen zijn uitgeschakeld.">
<!ENTITY torbutton.prefs.sec_jit_desc_tooltip "ION JIT, Type Inference, ASM.JS.">
<!ENTITY torbutton.prefs.sec_baseline_jit_desc_tooltip "Baseline JIT.">
<!ENTITY torbutton.prefs.sec_jit_slower_desc "Scripts kunnen op sommige websites trager zijn.">
-<!ENTITY torbutton.prefs.sec_mathml_desc "Sommige mechanismen van het weergeven van wiskundige vergelijkingen zijn uitgeschakeld.">
+<!ENTITY torbutton.prefs.sec_mathml_desc "Sommige mechanismen voor het weergeven van wiskundige vergelijkingen zijn uitgeschakeld.">
<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML is uitgeschakeld.">
-<!ENTITY torbutton.prefs.sec_med_high "Medium-Hoog">
-<!ENTITY torbutton.prefs.sec_all_jit_desc "Alle JavaScript-prestatieverbeteringen zijn uitgeschakeld.">
-<!ENTITY torbutton.prefs.sec_font_rend_desc "Sommige lettertype-weergavefuncties zijn uitgeschakeld.">
-<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "De Graphite lettertype rendering mechanisme is uitgeschakeld.">
-<!ENTITY torbutton.prefs.sec_svg_desc "Sommige afbeeldingtypes zijn uitgeschakeld.">
+<!ENTITY torbutton.prefs.sec_med_high "Medium-hoog">
+<!ENTITY torbutton.prefs.sec_all_jit_desc "Op sites die JavaScript toestaan zijn de prestatieverbeteringen uitgeschakeld.">
+<!ENTITY torbutton.prefs.sec_font_rend_desc "Sommige functies voor weergave van lettertypen zijn uitgeschakeld.">
+<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "Het Graphite-weergavemechanisme voor lettertypen is uitgeschakeld.">
+<!ENTITY torbutton.prefs.sec_svg_desc "Sommige afbeeldingstypen zijn uitgeschakeld.">
<!ENTITY torbutton.prefs.sec_svg_desc_tooltip "SVG afbeeldingen zijn uitgeschakeld.">
-<!ENTITY torbutton.prefs.sec_js_https_desc "JavaScript is standaard uitgeschakeld op alle niet-HTTPS websites.">
-<!ENTITY torbutton.prefs.sec_js_desc_tooltip "JavaScript kan worden ingeschakeld op een basis per - site via de NoScript werkbalk knop.">
+<!ENTITY torbutton.prefs.sec_js_https_desc "JavaScript is standaard uitgeschakeld op alle niet-HTTPS-websites.">
+<!ENTITY torbutton.prefs.sec_js_desc_tooltip "JavaScript kan worden ingeschakeld op een site-basis via de NoScript-werkbalkknop.">
<!ENTITY torbutton.prefs.sec_high "Hoog">
<!ENTITY torbutton.prefs.sec_all_js_desc "JavaScript is standaard uitgeschakeld op alle websites.">
<!ENTITY torbutton.prefs.sec_webfonts_desc "Sommige lettertypen en pictogrammen worden mogelijk niet goed weergegeven. ">
-<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "Door websites aangeleverde lettertypes worden geblokkeerd.">
-<!ENTITY torbutton.prefs.sec_custom "Aangepaste waarden">
-<!ENTITY torbutton.circuit_display.title "Tor circuit voor deze website">
+<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "Door websites aangeleverde lettertypen worden geblokkeerd.">
+<!ENTITY torbutton.circuit_display.title "Tor-circuit voor deze website">
diff --git a/src/chrome/locale/pl/aboutTor.properties b/src/chrome/locale/pl/aboutTor.properties
index 9bf0dcd..5a66e6a 100644
--- a/src/chrome/locale/pl/aboutTor.properties
+++ b/src/chrome/locale/pl/aboutTor.properties
@@ -19,3 +19,10 @@ aboutTor.searchDC.privacy=Szukaj <a href="%1$S">bezpiecznie</a> używając wyszu
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 6a42d11..fff7438 100644
--- a/src/chrome/locale/pl/torbutton.dtd
+++ b/src/chrome/locale/pl/torbutton.dtd
@@ -2,13 +2,18 @@
<!ENTITY torbutton.context_menu.new_identity_key "o">
<!ENTITY torbutton.context_menu.new_circuit "Nowy obwód dla tej strony">
<!ENTITY torbutton.context_menu.new_circuit_key "c">
+<!ENTITY torbutton.context_menu.preferences "Security Settings…">
+<!ENTITY torbutton.context_menu.preferences.key "S">
<!ENTITY torbutton.context_menu.networksettings "Ustawienia Sieci Tor...">
+<!ENTITY torbutton.context_menu.networksettings.key "N">
<!ENTITY torbutton.context_menu.downloadUpdate "Sprawdź czy są aktualizacje Tor Browser...">
<!ENTITY torbutton.context_menu.downloadUpdate.key "u">
<!ENTITY torbutton.context_menu.cookieProtections "Ochrona plików cookie...">
<!ENTITY torbutton.context_menu.cookieProtections.key "c">
<!ENTITY torbutton.button.tooltip "Kliknij tutaj, aby uruchomić Torbutton">
-<!ENTITY torbutton.prefs.restore_defaults "Ustawienia domyślne">
+<!ENTITY torbutton.prefs.security_settings "Tor Browser Security Settings">
+<!ENTITY torbutton.prefs.restore_defaults "Restore Defaults">
+<!ENTITY torbutton.prefs.custom_warning "Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels.">
<!ENTITY torbutton.cookiedialog.title "Zarządzaj ochroną ciasteczek">
<!ENTITY torbutton.cookiedialog.lockCol "Chronione">
<!ENTITY torbutton.cookiedialog.domainCol "Host">
@@ -21,8 +26,13 @@
<!ENTITY torbutton.cookiedialog.saveAllCookies "Chroń nowe ciasteczka">
<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "Nie chroń nowych ciasteczek">
<!ENTITY torbutton.prefs.restrict_thirdparty "Ograniczaj ciasteczka firm trzecich i inne dane służące do śledzenia">
+<!ENTITY torbutton.prefs.restrict_thirdparty.accesskey "R">
+<!ENTITY torbutton.prefs.restrict_thirdparty_tooltip "Keep this box checked to prevent various browser features from being abused to track you as you browse the web. Modified features include blob URLs, broadcast channels, the browser cache, cookies, favicons, HTTP Auth headers, link preconnects, localStorage, mediaSource URLs, OCSP requests, SharedWorkers, and TLS session tickets.">
<!ENTITY torbutton.prefs.resist_fingerprinting "Zmień szczegóły odróżniające Cię od innych użytkowników Przeglądarki Tora">
+<!ENTITY torbutton.prefs.resist_fingerprinting.accesskey "F">
+<!ENTITY torbutton.prefs.resist_fingerprinting_tooltip "Keep this box checked to hide things from websites that could be unique about you, including your battery status, computer performance, keyboard layout, locale, the location of installed plugins, the list of installed plugins, your network status, screen orientation, screen size, site-specific zoom levels, supported file types, system colors, and WebGL capabilities.">
<!ENTITY torbutton.prefs.sec_caption "Poziom bezpieczeństwa">
+<!ENTITY torbutton.prefs.sec_caption_tooltip "The Security Slider lets you disable certain browser features that may make your browser more vulnerable to hacking attempts.">
<!ENTITY torbutton.prefs.sec_low "Niski (domyślny)">
<!ENTITY torbutton.prefs.sec_low_usable_desc "To zapewnia najbardziej przyjazdne dla użytkownika ustawienia.">
<!ENTITY torbutton.prefs.sec_low_desc "Na tym poziomie zabezpieczeń, wszystkie funkcje przeglądarki są włączone.">
@@ -38,7 +48,7 @@
<!ENTITY torbutton.prefs.sec_mathml_desc "Niektóre mechanizmy wyświetlania równań matematycznych są wyłączone.">
<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML jest wyłączony.">
<!ENTITY torbutton.prefs.sec_med_high "Średni-Wysoki">
-<!ENTITY torbutton.prefs.sec_all_jit_desc "Wszystkie optymalizacje wydajności JavaScript są wyłączone.">
+<!ENTITY torbutton.prefs.sec_all_jit_desc "Na stronach, na których włączony jest JavaScript optymalizacje wydajności są wyłączone.">
<!ENTITY torbutton.prefs.sec_font_rend_desc "Niektóre funkcje renderingu czcionki są wyłączone.">
<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "Mechanizm Graphite do renderowania czcionki jest wyłączony.">
<!ENTITY torbutton.prefs.sec_svg_desc "Niektóre typy obrazów są wyłączone.">
@@ -49,5 +59,4 @@
<!ENTITY torbutton.prefs.sec_all_js_desc "JavaScript jest domyślnie wyłączona na wszystkich stronach.">
<!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.prefs.sec_custom "Wartości niestandardowe">
<!ENTITY torbutton.circuit_display.title "Obwód Tor dla tej strony">
diff --git a/src/chrome/locale/pt/aboutTor.properties b/src/chrome/locale/pt/aboutTor.properties
index 7bf9d5d..f9b6dbf 100644
--- a/src/chrome/locale/pt/aboutTor.properties
+++ b/src/chrome/locale/pt/aboutTor.properties
@@ -19,3 +19,10 @@ aboutTor.searchDC.privacy=Procurar com <a href="%1$S">segurança</a> com <a href
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/pt/torbutton.dtd b/src/chrome/locale/pt/torbutton.dtd
index e0247b5..f0bd467 100644
--- a/src/chrome/locale/pt/torbutton.dtd
+++ b/src/chrome/locale/pt/torbutton.dtd
@@ -2,13 +2,18 @@
<!ENTITY torbutton.context_menu.new_identity_key "I">
<!ENTITY torbutton.context_menu.new_circuit "Novo Circuito Tor para este Site">
<!ENTITY torbutton.context_menu.new_circuit_key "C">
+<!ENTITY torbutton.context_menu.preferences "Security Settings…">
+<!ENTITY torbutton.context_menu.preferences.key "S">
<!ENTITY torbutton.context_menu.networksettings "Configurações da Rede Tor...">
+<!ENTITY torbutton.context_menu.networksettings.key "N">
<!ENTITY torbutton.context_menu.downloadUpdate "Procurar por atualizações do Navegador Tor...">
<!ENTITY torbutton.context_menu.downloadUpdate.key "A">
<!ENTITY torbutton.context_menu.cookieProtections "Proteções de Cookies...">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.button.tooltip "Clique para inicializar o Torbutton">
-<!ENTITY torbutton.prefs.restore_defaults "Restaurar Predefinições">
+<!ENTITY torbutton.prefs.security_settings "Tor Browser Security Settings">
+<!ENTITY torbutton.prefs.restore_defaults "Restore Defaults">
+<!ENTITY torbutton.prefs.custom_warning "Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels.">
<!ENTITY torbutton.cookiedialog.title "Gerir Proteções dos Cookies">
<!ENTITY torbutton.cookiedialog.lockCol "Protegido">
<!ENTITY torbutton.cookiedialog.domainCol "Hospedeiro">
@@ -21,8 +26,13 @@
<!ENTITY torbutton.cookiedialog.saveAllCookies "Proteger Novos Cookies">
<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "Não Proteger Novos Cookies">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restringir os cookies de terceiros e outros dados de rastreamento">
+<!ENTITY torbutton.prefs.restrict_thirdparty.accesskey "R">
+<!ENTITY torbutton.prefs.restrict_thirdparty_tooltip "Keep this box checked to prevent various browser features from being abused to track you as you browse the web. Modified features include blob URLs, broadcast channels, the browser cache, cookies, favicons, HTTP Auth headers, link preconnects, localStorage, mediaSource URLs, OCSP requests, SharedWorkers, and TLS session tickets.">
<!ENTITY torbutton.prefs.resist_fingerprinting "Alterar os detalhes que o diferencia dos outros utilizadores do Navegador Tor">
+<!ENTITY torbutton.prefs.resist_fingerprinting.accesskey "F">
+<!ENTITY torbutton.prefs.resist_fingerprinting_tooltip "Keep this box checked to hide things from websites that could be unique about you, including your battery status, computer performance, keyboard layout, locale, the location of installed plugins, the list of installed plugins, your network status, screen orientation, screen size, site-specific zoom levels, supported file types, system colors, and WebGL capabilities.">
<!ENTITY torbutton.prefs.sec_caption "Nível de Segurança">
+<!ENTITY torbutton.prefs.sec_caption_tooltip "The Security Slider lets you disable certain browser features that may make your browser more vulnerable to hacking attempts.">
<!ENTITY torbutton.prefs.sec_low "Baixo (predefinição)">
<!ENTITY torbutton.prefs.sec_low_usable_desc "Isto proporciona a melhor experiência usável.">
<!ENTITY torbutton.prefs.sec_low_desc "Neste nível de segurança, as funções do navegador estão ativadas.">
@@ -38,7 +48,7 @@
<!ENTITY torbutton.prefs.sec_mathml_desc "Alguns mecanismos de visualização de equações matemáticas estão desativados.">
<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML está desativado.">
<!ENTITY torbutton.prefs.sec_med_high "Médio-Alto">
-<!ENTITY torbutton.prefs.sec_all_jit_desc "Todas as otimizações de desempenho da JavaScript estão desativadas.">
+<!ENTITY torbutton.prefs.sec_all_jit_desc "On sites where JavaScript is enabled, performance optimizations are disabled.">
<!ENTITY torbutton.prefs.sec_font_rend_desc "Algumas funções de renderização do tipo de letra estão desativadas.">
<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "O mecanismo de renderização do tipo de letra Graphite está desativado.">
<!ENTITY torbutton.prefs.sec_svg_desc "Alguns tipos de imagens estão desativados.">
@@ -49,5 +59,4 @@
<!ENTITY torbutton.prefs.sec_all_js_desc "JavaScript está desativada por predefinição em todos os sites.">
<!ENTITY torbutton.prefs.sec_webfonts_desc "Alguns tipos de letra e ícones poderão ser visualizados incorretamente.">
<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "Os ficheiros dos tipos de letra fornecidos pelo site da Web estão bloqueados.">
-<!ENTITY torbutton.prefs.sec_custom "Valores Personalizados">
<!ENTITY torbutton.circuit_display.title "Circuito Tor para este site">
diff --git a/src/chrome/locale/ru/aboutTor.properties b/src/chrome/locale/ru/aboutTor.properties
index 07d591c..4d33808 100644
--- a/src/chrome/locale/ru/aboutTor.properties
+++ b/src/chrome/locale/ru/aboutTor.properties
@@ -19,3 +19,10 @@ aboutTor.searchDC.privacy=Ищите <a href="%1$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=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/ru/brand.properties b/src/chrome/locale/ru/brand.properties
index 5f0d9a8..91aef01 100644
--- a/src/chrome/locale/ru/brand.properties
+++ b/src/chrome/locale/ru/brand.properties
@@ -2,7 +2,7 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-brandShorterName=Tor Browser
+brandShorterName=Обозреватель Tor
brandShortName=Tor Browser
brandFullName=Tor Browser
vendorShortName=Проект Tor
diff --git a/src/chrome/locale/ru/torbutton.dtd b/src/chrome/locale/ru/torbutton.dtd
index d13ff00..de02dd2 100644
--- a/src/chrome/locale/ru/torbutton.dtd
+++ b/src/chrome/locale/ru/torbutton.dtd
@@ -2,13 +2,18 @@
<!ENTITY torbutton.context_menu.new_identity_key "Я">
<!ENTITY torbutton.context_menu.new_circuit "Новая цепочка Tor для этого cайта">
<!ENTITY torbutton.context_menu.new_circuit_key "C">
+<!ENTITY torbutton.context_menu.preferences "Настройки безопасности...">
+<!ENTITY torbutton.context_menu.preferences.key "S">
<!ENTITY torbutton.context_menu.networksettings "Настройки сети Tor">
+<!ENTITY torbutton.context_menu.networksettings.key "N">
<!ENTITY torbutton.context_menu.downloadUpdate "Проверить на наличие обновлений Tor Browser">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
<!ENTITY torbutton.context_menu.cookieProtections "Защита куки-файла">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.button.tooltip "Нажмите, чтобы инициализировать Torbutton">
-<!ENTITY torbutton.prefs.restore_defaults "Восстановить значения по умолчанию">
+<!ENTITY torbutton.prefs.security_settings "Tor Browser Security Settings">
+<!ENTITY torbutton.prefs.restore_defaults "Restore Defaults">
+<!ENTITY torbutton.prefs.custom_warning "Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels.">
<!ENTITY torbutton.cookiedialog.title "Управление защитой куки-файлов">
<!ENTITY torbutton.cookiedialog.lockCol "Защищено">
<!ENTITY torbutton.cookiedialog.domainCol "Ведущий узел">
@@ -21,8 +26,13 @@
<!ENTITY torbutton.cookiedialog.saveAllCookies "Защищать новые куки-файлы">
<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "Не защищать новые куки-файлы">
<!ENTITY torbutton.prefs.restrict_thirdparty "Блокировать сторонние куки-файлы и другие данные слежения">
+<!ENTITY torbutton.prefs.restrict_thirdparty.accesskey "R">
+<!ENTITY torbutton.prefs.restrict_thirdparty_tooltip "Оставьте флажок напротив этой опции отмеченным, чтобы защитить многие функции обозревателя от элементов отслеживания ваших действий во время сёрфинга в сети. Модифицированные компоненты включают в себя ссылки на блобы, транслируемые каналы, кэш браузера, файлы куки, значки, заголовки аутентификации HTTP, ссылки предпросмотра, локальное хранилище, ссылки на медиаконтент, запросы OCSP, SharedWorkers и объявления сессии TLS.">
<!ENTITY torbutton.prefs.resist_fingerprinting "Изменить сведения, отличающие вас от других пользователей Tor Browser">
+<!ENTITY torbutton.prefs.resist_fingerprinting.accesskey "F">
+<!ENTITY torbutton.prefs.resist_fingerprinting_tooltip "Оставьте флажок напротив этой опции отмеченным, чтобы скрывать те сведения, которые могли бы быть уникальными о вас, такие как: статус вашей батареи, производительность компьютера, раскладка клавиатуры, локализация, путь к установленным плагинам, список инсталлированных плагинов, статус вашей сети, ориентация дисплея, размер экрана, масштаб для конерктного сайта, поддерживаемые типы файлов, системная палитра и возможности WebGL.">
<!ENTITY torbutton.prefs.sec_caption "Уровень безопасности">
+<!ENTITY torbutton.prefs.sec_caption_tooltip "Ползунок безопасности позволяет вам запретить некоторые особенности обозревателя, которые могут сделать ваш браузер более уязвимым к попыткам взлома.">
<!ENTITY torbutton.prefs.sec_low "Низкий (по умолчанию)">
<!ENTITY torbutton.prefs.sec_low_usable_desc "Наиболее простой вариант использования.">
<!ENTITY torbutton.prefs.sec_low_desc "На этом уровне безопасности, все функции браузера включены.">
@@ -38,7 +48,7 @@
<!ENTITY torbutton.prefs.sec_mathml_desc "Некоторые механизмы отображения математических уравнений отключены.">
<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML отключен.">
<!ENTITY torbutton.prefs.sec_med_high "Умеренно высокий">
-<!ENTITY torbutton.prefs.sec_all_jit_desc "Все оптимизации производительности JavaScript отключены.">
+<!ENTITY torbutton.prefs.sec_all_jit_desc "На сайтах с применением JavaScript оптимизация отключена.">
<!ENTITY torbutton.prefs.sec_font_rend_desc "Некоторые функции отрисовки шрифтов отключены.">
<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "Механизм визуализации шрифта Graphite отключен.">
<!ENTITY torbutton.prefs.sec_svg_desc "Некоторые типы изображений отключены.">
@@ -49,5 +59,4 @@
<!ENTITY torbutton.prefs.sec_all_js_desc "JavaScript отключен по умолчанию на всех сайтах.">
<!ENTITY torbutton.prefs.sec_webfonts_desc "Некоторые шрифты и значки могут отображаться некорректно.">
<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "Файлы шрифтов, предоставленные сайтом, заблокированы">
-<!ENTITY torbutton.prefs.sec_custom "Собственные значения">
<!ENTITY torbutton.circuit_display.title "Цепочка Tor для этого сайта">
diff --git a/src/chrome/locale/sv/aboutTor.properties b/src/chrome/locale/sv/aboutTor.properties
index fafe44a..3b0ddcd 100644
--- a/src/chrome/locale/sv/aboutTor.properties
+++ b/src/chrome/locale/sv/aboutTor.properties
@@ -19,3 +19,10 @@ aboutTor.searchDC.privacy=Sök <a href="%1$S">säkert</a> med <a href="%2$S">Dis
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/sv/torbutton.dtd b/src/chrome/locale/sv/torbutton.dtd
index e9d9a27..7452ae3 100644
--- a/src/chrome/locale/sv/torbutton.dtd
+++ b/src/chrome/locale/sv/torbutton.dtd
@@ -2,13 +2,18 @@
<!ENTITY torbutton.context_menu.new_identity_key "N">
<!ENTITY torbutton.context_menu.new_circuit "Ny Tor-krets för den här webbsidan">
<!ENTITY torbutton.context_menu.new_circuit_key "S">
+<!ENTITY torbutton.context_menu.preferences "Säkerhetsinställningar...">
+<!ENTITY torbutton.context_menu.preferences.key "S">
<!ENTITY torbutton.context_menu.networksettings "Tor nätverksinställningar...">
+<!ENTITY torbutton.context_menu.networksettings.key "N">
<!ENTITY torbutton.context_menu.downloadUpdate "Sök efter uppdateringar för Tor webbläsare...">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
<!ENTITY torbutton.context_menu.cookieProtections "Skydd mot Cookies...">
<!ENTITY torbutton.context_menu.cookieProtections.key "S">
<!ENTITY torbutton.button.tooltip "Klicka för att installera Torbutton">
-<!ENTITY torbutton.prefs.restore_defaults "Återställ till standard">
+<!ENTITY torbutton.prefs.security_settings "Tor-webbläsares säkerhetsinställningar">
+<!ENTITY torbutton.prefs.restore_defaults "Återställ standard">
+<!ENTITY torbutton.prefs.custom_warning "Dina anpassade webbläsarinställningar har resulterat i ovanliga säkerhetsinställningar. Av säkerhets- och integritetsskäl rekommenderar vi att du använder en av de fördefinierade säkerhetsnivåerna.">
<!ENTITY torbutton.cookiedialog.title "Hantera skyddade kakor">
<!ENTITY torbutton.cookiedialog.lockCol "Skyddad">
<!ENTITY torbutton.cookiedialog.domainCol "Värd">
@@ -21,8 +26,13 @@
<!ENTITY torbutton.cookiedialog.saveAllCookies "Skydda nya kakor">
<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "Skydda inte nya kakor">
<!ENTITY torbutton.prefs.restrict_thirdparty "Begränsa tredjepartskakor och annan tracking data">
+<!ENTITY torbutton.prefs.restrict_thirdparty.accesskey "R">
+<!ENTITY torbutton.prefs.restrict_thirdparty_tooltip "Behåll det här alternativet valt för att förhindra olika webbläsarfunktioner från att missbrukas för att spåra dig när du surfar på nätet. Ändrade funktioner inkluderar blog-URLer, broadcastkanaler, webbläsar-cache, kakor, favicons, HTTP-Auth-huvuden, länk-föranslutningar, localStorage, mediaSource URLer, OCSP-förfrågningar, SharedWorkers och TLS-sessionstickets.">
<!ENTITY torbutton.prefs.resist_fingerprinting "Ändra detailjer som utmärker dig ifrån andra Tor Browser användare">
+<!ENTITY torbutton.prefs.resist_fingerprinting.accesskey "F">
+<!ENTITY torbutton.prefs.resist_fingerprinting_tooltip "Behåll det här alternativet valt för att dölja saker från webbsidor som kan vara unika för dig, inklusive din batteristatus, datorprestanda, tangentbordslayout, språk, platser insticksmoduler är installerade på, lista över installerade insticksmoduler, din nätverksstatus, skärmorientering, skärmstorlek, platsspecifika zoom-nivåer, filtypsstöd, systemfärger och WebGL-stöd.">
<!ENTITY torbutton.prefs.sec_caption "Säkerhetsnivå">
+<!ENTITY torbutton.prefs.sec_caption_tooltip "Säkerhetsreglaget låter dig stänga av vissa webbläsarfunktioner som kan göra din webbläsare mer sårbar mot intrångsförsök.">
<!ENTITY torbutton.prefs.sec_low "Låg (förvald)">
<!ENTITY torbutton.prefs.sec_low_usable_desc "Detta skapar den mest användbara upplevelsen.">
<!ENTITY torbutton.prefs.sec_low_desc "På den här säkerhetsnivån är webbläsarens alla funktioner aktiverade.">
@@ -38,7 +48,7 @@
<!ENTITY torbutton.prefs.sec_mathml_desc "Vissa funktioner för att visa matematiska formler är avaktiverade.">
<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML är inaktiverat.">
<!ENTITY torbutton.prefs.sec_med_high "Medium-hög">
-<!ENTITY torbutton.prefs.sec_all_jit_desc "Alla prestandaoptimeringar av JavaScript är inaktiverade.">
+<!ENTITY torbutton.prefs.sec_all_jit_desc "På sidor där JavaScript är aktiverat, är prestandaoptimeringar inaktiverade.">
<!ENTITY torbutton.prefs.sec_font_rend_desc "Vissa funktioner för gestaltning av typsnitt är avaktiverad.">
<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "Användande av Graphite-typsnitt är avaktiverad.">
<!ENTITY torbutton.prefs.sec_svg_desc "Vissa typer av bilder är inaktiverade.">
@@ -49,5 +59,4 @@
<!ENTITY torbutton.prefs.sec_all_js_desc "JavaScript är normalt avaktiverat på alla webbsidor.">
<!ENTITY torbutton.prefs.sec_webfonts_desc "Vissa typsnitt ock ikoner kan visas felaktigt.">
<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "Typsnitt som tillhandahålls av webbsidor är blockerade.">
-<!ENTITY torbutton.prefs.sec_custom "Anpassad nivå">
<!ENTITY torbutton.circuit_display.title "Tor-krets för den här webbsidan">
diff --git a/src/chrome/locale/tr/aboutTor.properties b/src/chrome/locale/tr/aboutTor.properties
index 686b883..322cc2e 100644
--- a/src/chrome/locale/tr/aboutTor.properties
+++ b/src/chrome/locale/tr/aboutTor.properties
@@ -19,3 +19,10 @@ aboutTor.searchDC.privacy=<a href="%2$S">Disconnect.me</a> kullanarak <a href="%
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/tr/torbutton.dtd b/src/chrome/locale/tr/torbutton.dtd
index d6c87d1..0edfc51 100644
--- a/src/chrome/locale/tr/torbutton.dtd
+++ b/src/chrome/locale/tr/torbutton.dtd
@@ -2,13 +2,18 @@
<!ENTITY torbutton.context_menu.new_identity_key "I">
<!ENTITY torbutton.context_menu.new_circuit "Bu site için Tor devresini yenile">
<!ENTITY torbutton.context_menu.new_circuit_key "C">
+<!ENTITY torbutton.context_menu.preferences "Güvenlik Ayarları...">
+<!ENTITY torbutton.context_menu.preferences.key "S">
<!ENTITY torbutton.context_menu.networksettings "Tor Ağ Ayarları...">
+<!ENTITY torbutton.context_menu.networksettings.key "N">
<!ENTITY torbutton.context_menu.downloadUpdate "Tor Browser Güncelleme Denetimi...">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
<!ENTITY torbutton.context_menu.cookieProtections "Çerez Koruması...">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.button.tooltip "Torbutton uygulamasını başlatmak için tıklayın">
-<!ENTITY torbutton.prefs.restore_defaults "Varsayılanları Yükle">
+<!ENTITY torbutton.prefs.security_settings "Tor Browser Güvenlik Ayarları">
+<!ENTITY torbutton.prefs.restore_defaults "Varsayılanlara Sıfırla">
+<!ENTITY torbutton.prefs.custom_warning "Özel tarayıcı tercihleriniz alışılmadık güvenlik ayarları ile sonuçlandı. Güvenlik ve gizlilik nedenleri ile, aşağıdaki varsayılan güvenlik seviyelerinden birini seçmenizi öneriyoruz.">
<!ENTITY torbutton.cookiedialog.title "Çerez Koruması Yönetimi">
<!ENTITY torbutton.cookiedialog.lockCol "Korunmuş">
<!ENTITY torbutton.cookiedialog.domainCol "Sunucu">
@@ -21,8 +26,13 @@
<!ENTITY torbutton.cookiedialog.saveAllCookies "Yeni Çerezleri Koru">
<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "Yeni Çerezleri Koruma">
<!ENTITY torbutton.prefs.restrict_thirdparty "3. taraf çerez ve diğer iz sürücü bilgiler engellensin">
+<!ENTITY torbutton.prefs.restrict_thirdparty.accesskey "R">
+<!ENTITY torbutton.prefs.restrict_thirdparty_tooltip "Bu seçeneği işaretleyerek, çeşitli web tarayıcıların, web sitelerinde yaptığınız işlemleri izlemesini engelleyebilirsiniz. Değiştirilen özellikler içinde blob İnternet adresleri, yayın kanalları, web tarayıcı ön belleği, çerezler, favicon dosyaları, HTTP Auth başlık bilgileri, ön bağlantı bilgileri, localStorage, mediaSource adresleri, OCSP istekleri, SharedWorkers ve TLS oturumu bulunur.">
<!ENTITY torbutton.prefs.resist_fingerprinting "Diğer Tor Browser kullanıcılarından sizi ayıran ayrıntılar değiştirilsin">
+<!ENTITY torbutton.prefs.resist_fingerprinting.accesskey "F">
+<!ENTITY torbutton.prefs.resist_fingerprinting_tooltip "Bu seçeneği işaretleyerek, web sitelerinden pil durumu, bilgisayar performansı, tuş takımı düzeni, yerel ayarlar, yüklü uygulama eklerinin konumu, yüklü uygulama eklerinin listesi, ağ durumunuz, ekran doğrultusu, ekran boyutu, siteye özel yakınlaştırma düzeyi, desteklenen dosya tipleri, sistem renkleri ve WebGL yetenekleri gibi sizin için önemli olabilecek bilgileri gizleyebilirsiniz. ">
<!ENTITY torbutton.prefs.sec_caption "Güvenlik Düzeyi">
+<!ENTITY torbutton.prefs.sec_caption_tooltip "Güvenlik ayarı ile belirli web tarayıcı özeliklerini kapatabilirsiniz. Ancak bu durumda web tarayıcınız saldırılara karşı daha korumasız olur.">
<!ENTITY torbutton.prefs.sec_low "Düşük (varsayılan)">
<!ENTITY torbutton.prefs.sec_low_usable_desc "Bu seçenek en kullanılabilir deneyimi sunar.">
<!ENTITY torbutton.prefs.sec_low_desc "Bu güvenlik düzeyinde tüm tarayıcı özellikleri kullanılabilir.">
@@ -38,7 +48,7 @@
<!ENTITY torbutton.prefs.sec_mathml_desc "Matematik denklemlerini görüntüleyen bazı düzenekler devre dışı bırakılır.">
<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML devre dışı bırakılır.">
<!ENTITY torbutton.prefs.sec_med_high "Orta-Yüksek">
-<!ENTITY torbutton.prefs.sec_all_jit_desc "Tüm JavaScript başarım iyileştirmeleri devre dışı bırakılır.">
+<!ENTITY torbutton.prefs.sec_all_jit_desc "JavaScript kullanılan web sitelerinde başarım iyileştirmeleri devre dışı bırakılır.">
<!ENTITY torbutton.prefs.sec_font_rend_desc "Bazı yazı tipi işleme özellikleri devre dışı bırakılır.">
<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "Graphite yazı tipi görüntüleme düzeneği devre dışı bırakılır.">
<!ENTITY torbutton.prefs.sec_svg_desc "Bazı görsel türleri devre dışı bırakılır.">
@@ -49,5 +59,4 @@
<!ENTITY torbutton.prefs.sec_all_js_desc "JavaScript varsayılan olarak tüm sitelerde devre dışı bırakılır.">
<!ENTITY torbutton.prefs.sec_webfonts_desc "Bazı yazı tipi ve simgeler düzgün görüntülenemeyebilir.">
<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "Web sitesi tarafından sunulan yazı tipi dosyaları engellenir.">
-<!ENTITY torbutton.prefs.sec_custom "Özel Değerler">
<!ENTITY torbutton.circuit_display.title "Bu site için Tor devresi">
diff --git a/src/chrome/locale/vi/aboutDialog.dtd b/src/chrome/locale/vi/aboutDialog.dtd
index d6693ed..9f90c6e 100644
--- a/src/chrome/locale/vi/aboutDialog.dtd
+++ b/src/chrome/locale/vi/aboutDialog.dtd
@@ -1,19 +1,19 @@
<!ENTITY project.start "&brandShortName; được phát triển bởi">
<!-- LOCALIZATION NOTE (project.tpoLink): This is a link title that links to https://www.torproject.org -->
<!ENTITY project.tpoLink "the &vendorShortName;">
-<!ENTITY project.end ", a nonprofit working to defend your privacy and freedom online.">
+<!ENTITY project.end ", một công viêc phi lợi nhuận để bảo vệ sự riêng tư và tự do trực tuyến của bạn.">
-<!ENTITY help.start "Want to help? ">
+<!ENTITY help.start "Muốn giúp đỡ?">
<!-- LOCALIZATION NOTE (help.donate): This is a link title that links to https://www.torproject.org/donate/donate.html.en -->
-<!ENTITY help.donateLink "Donate">
-<!ENTITY help.or " or ">
+<!ENTITY help.donateLink "Quyên góp">
+<!ENTITY help.or "hoặc">
<!-- LOCALIZATION NOTE (help.getInvolvedLink): This is a link title that links to https://www.torproject.org/getinvolved/volunteer.html.en -->
-<!ENTITY help.getInvolvedLink "get involved">
+<!ENTITY help.getInvolvedLink "tham gia">
<!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 "Questions?">
+<!ENTITY bottomLinks.questions "Những câu hỏi?">
<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to https://www.torproject.org/getinvolved/relays -->
-<!ENTITY bottomLinks.grow "Help the Tor Network Grow!">
+<!ENTITY bottomLinks.grow "Giúp đỡ mạng lưới Tor phát triển!">
<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to about:license -->
-<!ENTITY bottomLinks.license "Licensing Information">
-<!ENTITY tor.TrademarkStatement "'Tor' and the 'Onion Logo' are registered trademarks of the Tor Project, Inc.">
+<!ENTITY bottomLinks.license "Thông tin bản quyền">
+<!ENTITY tor.TrademarkStatement "'Tor' và logo Củ hành là thương hiệu đã được đăng ký của Tor Project, Inc.">
diff --git a/src/chrome/locale/vi/aboutTBUpdate.dtd b/src/chrome/locale/vi/aboutTBUpdate.dtd
index 4f0a9d4..3086fe2 100644
--- a/src/chrome/locale/vi/aboutTBUpdate.dtd
+++ b/src/chrome/locale/vi/aboutTBUpdate.dtd
@@ -1,6 +1,6 @@
<!ENTITY aboutTBUpdate.title "Cập nhật về Trình duyệt Tor">
-<!ENTITY aboutTBUpdate.updated "Tor Browser has been updated.">
-<!ENTITY aboutTBUpdate.linkPrefix "For the most up-to-date information about this release, ">
-<!ENTITY aboutTBUpdate.linkLabel "visit our website">
+<!ENTITY aboutTBUpdate.updated "Trình duyệt Tor đã được cập nhật">
+<!ENTITY aboutTBUpdate.linkPrefix "Dành cho những thông tin cập nhật mới nhất về bản phát hành này,">
+<!ENTITY aboutTBUpdate.linkLabel "đến thăm trang của chúng tôi">
<!ENTITY aboutTBUpdate.linkSuffix ".">
-<!ENTITY aboutTBUpdate.changeLogHeading "Changelog:">
+<!ENTITY aboutTBUpdate.changeLogHeading "Nhật ký thay đổi:">
diff --git a/src/chrome/locale/vi/aboutTor.dtd b/src/chrome/locale/vi/aboutTor.dtd
index 8a349b5..951f44c 100644
--- a/src/chrome/locale/vi/aboutTor.dtd
+++ b/src/chrome/locale/vi/aboutTor.dtd
@@ -6,18 +6,18 @@
<!ENTITY aboutTor.title "Thông tin về Tor">
-<!ENTITY aboutTor.outOfDateTorOn.label "WARNING: this browser is out of date.">
+<!ENTITY aboutTor.outOfDateTorOn.label "CẢNH BÁO: trình duyệt này đã lỗi thời">
<!ENTITY aboutTor.outOfDateTorOff.label "Thêm nữa, trình duyệt này đã lỗi thời.">
-<!ENTITY aboutTor.outOfDate2.label "Click on the onion and then choose Check for Tor Browser Update.">
+<!ENTITY aboutTor.outOfDate2.label "Bấm chuột vào củ hành và sau đó chọn Kiểm tra bản cập nhật của Trình duyệt Tor">
-<!ENTITY aboutTor.check.label "Test Tor Network Settings">
+<!ENTITY aboutTor.check.label "Thử cài đặt mạng lưới Tor">
-<!ENTITY aboutTor.success.label "Welcome to Tor Browser">
-<!ENTITY aboutTor.success2.label "Connected to the Tor network.">
+<!ENTITY aboutTor.success.label "Chào mừng đến với Trình duyệt Tor">
+<!ENTITY aboutTor.success2.label "Đã kết nối với mạng lưới Tor.">
<!ENTITY aboutTor.success3.label "Bây giờ bạn sẽ tự do lướt web ẩn danh.">
-<!ENTITY aboutTor.failure.label "Có sai sót gì đó!">
+<!ENTITY aboutTor.failure.label "Có gì đó đã sai!">
<!ENTITY aboutTor.failure2.label "Tor không hoạt động trên trình duyệt này.">
-<!ENTITY aboutTor.failure3prefix.label "Để trợ giúp, vui lòng liên lạc">
+<!ENTITY aboutTor.failure3prefix.label "Để được trợ giúp, vui lòng liên lạc">
<!ENTITY aboutTor.failure3Link "help(a)rt.torproject.org">
<!ENTITY aboutTor.failure3suffix.label ".">
@@ -27,23 +27,23 @@
<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com/html/">
<!ENTITY aboutTor.searchDCPost.link "https://search.disconnect.me/searchTerms/search?ses=Google&location_opt…">
-<!ENTITY aboutTor.torInfo1.label "Additional Info:">
+<!ENTITY aboutTor.torInfo1.label "Thông tin thêm:">
<!ENTITY aboutTor.torInfo2.label "Quốc gia & Địa chỉ IP:">
-<!ENTITY aboutTor.torInfo3.label "Exit Node:">
+<!ENTITY aboutTor.torInfo3.label "Thoát khỏi giao điểm:">
<!ENTITY aboutTor.torInfo4.label "Máy chủ này không ghi lại bất kỳ thông tin nào của khách truy cập.">
<!ENTITY aboutTor.whatnextQuestion.label "Điều gì tiếp theo?">
-<!ENTITY aboutTor.whatnextAnswer.label "Tor KHÔNG phải là tất cả những gì bạn cần để ẩn danh! Bạn cần nên thay đổi một vài thói quen lướt net để chắc chắn rằng danh tính của mình sẽ an toàn.">
-<!ENTITY aboutTor.whatnext.label "Tips On Staying Anonymous »">
+<!ENTITY aboutTor.whatnextAnswer.label "Tor KHÔNG phải là tất cả những gì bạn cần để ẩn danh! Bạn cần nên thay đổi một vài thói quen lướt net để chắc chắn rằng xác minh danh tính sẽ an toàn.">
+<!ENTITY aboutTor.whatnext.label "Gợi ý cho việc ẩn danh »">
<!ENTITY aboutTor.whatnext.link "https://www.torproject.org/download/download.html.en#warning">
-<!ENTITY aboutTor.helpInfo1.label "You Can Help!">
+<!ENTITY aboutTor.helpInfo1.label "Bạn có thể giúp đỡ!">
<!ENTITY aboutTor.helpInfo2.label "Có nhiều cách mà bạn có thể giúp mạng Tor nhanh hơn và tốt hơn.">
-<!ENTITY aboutTor.helpInfo3.label "Run a Tor Relay Node »">
+<!ENTITY aboutTor.helpInfo3.label "Chạy một đầu mối tiếp sức Tor »">
<!ENTITY aboutTor.helpInfo3.link "https://www.torproject.org/docs/tor-doc-relay.html.en">
-<!ENTITY aboutTor.helpInfo4.label "Volunteer Your Services »">
+<!ENTITY aboutTor.helpInfo4.label "Tình nguyện những dịch vụ của bạn »">
<!ENTITY aboutTor.helpInfo4.link "https://www.torproject.org/getinvolved/volunteer.html.en">
-<!ENTITY aboutTor.helpInfo5.label "Make a Donation »">
+<!ENTITY aboutTor.helpInfo5.label "Ủng hộ »">
<!ENTITY aboutTor.helpInfo5.link "https://www.torproject.org/donate/donate.html.en">
-<!ENTITY aboutTor.footer.label "Dự án Tor là một US 501(c)(3) không lợi nhuận chuyên dùng cho nghiên cứu, phát triển và giao dục về vô danh và riêng tư trực tuyến">
+<!ENTITY aboutTor.footer.label "Dự án Tor là một tổ chức không lợi nhuận theo US 501(c)(3) chuyên về nghiên cứu, phát triển và giáo dục về vô danh vàjavascript:; riêng tư trực tuyến.">
<!ENTITY aboutTor.learnMore.label "Tìm hiểu thêm về Tor Project">
<!ENTITY aboutTor.learnMore.link "https://www.torproject.org/about/overview.html.en">
diff --git a/src/chrome/locale/vi/aboutTor.properties b/src/chrome/locale/vi/aboutTor.properties
index d607324..7984d21 100644
--- a/src/chrome/locale/vi/aboutTor.properties
+++ b/src/chrome/locale/vi/aboutTor.properties
@@ -2,20 +2,27 @@
# See LICENSE for licensing information.
# vim: set sw=2 sts=2 ts=8 et:
-aboutTor.searchSP.privacy=Search <a href="%1$S">securely</a> with <a href="%2$S">Startpage</a>.
+aboutTor.searchSP.privacy=Tìm kiếm <a href="%1$S">một cách an toàn</a>với <a href="%2$S"> Trang bắt đầu</a>.
# The following string is a link which replaces %1$S above.
aboutTor.searchSP.privacy.link=https://startpage.com/eng/protect-privacy.ht…
# The following string is a link which replaces %2$S above.
aboutTor.searchSP.search.link=https://startpage.com/
-aboutTor.searchDDG.privacy=Search <a href="%1$S">securely</a> with <a href="%2$S">DuckDuckGo</a>.
+aboutTor.searchDDG.privacy=Tìm kiếm <a href="%1$S">một cách an toàn</a>với <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=Search <a href="%1$S">securely</a> with <a href="%2$S">Disconnect.me</a>.
+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/vi/brand.dtd b/src/chrome/locale/vi/brand.dtd
index 6664eca..0667b7e 100644
--- a/src/chrome/locale/vi/brand.dtd
+++ b/src/chrome/locale/vi/brand.dtd
@@ -6,10 +6,10 @@
<!ENTITY brandShortName "Trình duyệt Tor">
<!ENTITY brandFullName "Trình duyệt Tor">
<!ENTITY vendorShortName "Dự án Tor">
-<!ENTITY trademarkInfo.part1 "Firefox and the Firefox logos are trademarks of the Mozilla Foundation.">
+<!ENTITY trademarkInfo.part1 "Firefox và logo của Firefox là thương hiệu của Tổ chức Mozilla">
<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
-<!ENTITY plugins.installed.find "Click to load installed system plugins">
-<!ENTITY plugins.installed.enable "Enable plugins">
-<!ENTITY plugins.installed.disable "Disable plugins">
-<!ENTITY plugins.installed.disable.tip "Click to prevent loading system plugins">
+<!ENTITY plugins.installed.find "Bấm chuột để tải những những chương trình gắn thêm vào hệ thống đã được cài đặt">
+<!ENTITY plugins.installed.enable "Cho phép những chương trình gắn thêm">
+<!ENTITY plugins.installed.disable "Vô hiệu những chương trình gắn thêm">
+<!ENTITY plugins.installed.disable.tip "Bấm chuột để ngăn chặn việc tải những những chương trình gắn thêm vào hệ thống">
diff --git a/src/chrome/locale/vi/brand.properties b/src/chrome/locale/vi/brand.properties
index bb1ea2d..73a728e 100644
--- a/src/chrome/locale/vi/brand.properties
+++ b/src/chrome/locale/vi/brand.properties
@@ -7,8 +7,8 @@ brandShortName=Trình duyệt Tor
brandFullName=Trình duyệt Tor
vendorShortName=Dự án Tor
-homePageSingleStartMain=Firefox Start, a fast home page with built-in search
-homePageImport=Import your home page from %S
+homePageSingleStartMain=Firefox Start, một trang chủ nhanh với trình tìm kiếm được tích hợp sẵn
+homePageImport=Nhập trang chủ của bạn từ %S
homePageMigrationPageTitle=Lựa chọn trang chủ
homePageMigrationDescription=Vui lòng chọn trang chủ mà bạn muốn dùng:
diff --git a/src/chrome/locale/vi/torbutton.dtd b/src/chrome/locale/vi/torbutton.dtd
index 25fbcec..04ec66b 100644
--- a/src/chrome/locale/vi/torbutton.dtd
+++ b/src/chrome/locale/vi/torbutton.dtd
@@ -1,14 +1,19 @@
-<!ENTITY torbutton.context_menu.new_identity "Định danh mới">
+<!ENTITY torbutton.context_menu.new_identity "Danh tính mới">
<!ENTITY torbutton.context_menu.new_identity_key "I">
-<!ENTITY torbutton.context_menu.new_circuit "Vòng Tor mới cho trang này">
+<!ENTITY torbutton.context_menu.new_circuit "Mạch nối Tor mới cho trang này">
<!ENTITY torbutton.context_menu.new_circuit_key "C">
-<!ENTITY torbutton.context_menu.networksettings "Cài đặt Mạng Tor...">
-<!ENTITY torbutton.context_menu.downloadUpdate "Kiểm tra việc cập nhật trình duyệt Tor">
+<!ENTITY torbutton.context_menu.preferences "Những cài đặt về an ninh...">
+<!ENTITY torbutton.context_menu.preferences.key "S">
+<!ENTITY torbutton.context_menu.networksettings "Những cài đặt Mạng Tor...">
+<!ENTITY torbutton.context_menu.networksettings.key "N">
+<!ENTITY torbutton.context_menu.downloadUpdate "Kiểm tra Bản cập nhật của trình duyệt Tor...">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
-<!ENTITY torbutton.context_menu.cookieProtections "Bảo vệ Cookie...">
+<!ENTITY torbutton.context_menu.cookieProtections "Những sự bảo vệ Cookie...">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
-<!ENTITY torbutton.button.tooltip "Nhấp để nhận diện Torbutton">
-<!ENTITY torbutton.prefs.restore_defaults "Khôi phục Mặc định">
+<!ENTITY torbutton.button.tooltip "Bấm chuột để khởi chạy Torbutton">
+<!ENTITY torbutton.prefs.security_settings "Tor Browser Security Settings">
+<!ENTITY torbutton.prefs.restore_defaults "Restore Defaults">
+<!ENTITY torbutton.prefs.custom_warning "Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels.">
<!ENTITY torbutton.cookiedialog.title "Manage Cookie Protections">
<!ENTITY torbutton.cookiedialog.lockCol "Protected">
<!ENTITY torbutton.cookiedialog.domainCol "Host">
@@ -21,33 +26,37 @@
<!ENTITY torbutton.cookiedialog.saveAllCookies "Protect New Cookies">
<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "Do Not Protect New Cookies">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
+<!ENTITY torbutton.prefs.restrict_thirdparty.accesskey "R">
+<!ENTITY torbutton.prefs.restrict_thirdparty_tooltip "Bảo đảm hộp này được đánh dấu để ngăn những tính năng khác nhau của trình duyệt không bị làm dụng để theo dõi bạn khi bạn duyệt web. Những tính năng được sửa đổi bao gồm những blob URL, những đường dẫn được kết nối trước, nơi lưu trữ nội bộ, URL nguồn trung gian, những yêu cầu OCSP, SharedWorkers, và vé của phiên TLS.">
<!ENTITY torbutton.prefs.resist_fingerprinting "Change details that distinguish you from other Tor Browser users">
+<!ENTITY torbutton.prefs.resist_fingerprinting.accesskey "F">
+<!ENTITY torbutton.prefs.resist_fingerprinting_tooltip "Bảo đảm hộp này được đánh dấu để ẩn những thứ từ trang web mà có thể là duy nhất về bạn bao gồm tình trạng pin, hiệu suất máy tính, nền bàn phím, nơi xảy ra, địa điểm của những thứ gắn thêm được cài đặt, danh sách những thứ gắn thêm được cài đặt, tình trạng mạng lưới của bạn, hướng xoay màn hình, kích cỡ màn hình, những mức độ phóng đại riêng của trang, những loại tập tin được hỗ trợ, những màu sắc hệ thống, và những khả năng WebGL.">
<!ENTITY torbutton.prefs.sec_caption "Mức độ Bảo mật">
+<!ENTITY torbutton.prefs.sec_caption_tooltip "Những Người điều chỉnh an ninh để cho bạn vô hiệu một vài tính năng của trình duyệt mà có thể làm trình duyệt của bạn dễ bị tổn thương đổi với những cố gắng tấn công.">
<!ENTITY torbutton.prefs.sec_low "Thấp (mặc định)">
<!ENTITY torbutton.prefs.sec_low_usable_desc "Điều này cung cấp trải nghiệm tiện lợi nhất">
<!ENTITY torbutton.prefs.sec_low_desc "Ở mức này, tất cả tính năng của trình duyệt đều được kích hoạt.">
<!ENTITY torbutton.prefs.sec_font_rend_svg_tooltip "Cơ chế kết xuất font SVG OpenType bị vô hiệu.">
<!ENTITY torbutton.prefs.sec_med_low "Trung bình-Thấp">
<!ENTITY torbutton.prefs.sec_gen_desc "Ở mức bảo mật này, những thay đổi sau sẽ được áp dụng (rê chuột vào để xem chi tiết):">
-<!ENTITY torbutton.prefs.sec_html5_desc "Video và âm thanh HTML5 có thể nhấp để phát qua NoScript.">
+<!ENTITY torbutton.prefs.sec_html5_desc "Video và âm thanh truyền thông HTML5 có thể trở thành nhấp để phát qua NoScript.">
<!ENTITY torbutton.prefs.sec_html5_tooltip "Trên một số trang, có thể bạn cần phải dùng nút thanh công cụ NoScript để kích hoạt những đối tượng đa phương tiện này.">
<!ENTITY torbutton.prefs.sec_some_jit_desc "Một số tối ưu hoá JavaScript bị vô hiệu.">
<!ENTITY torbutton.prefs.sec_jit_desc_tooltip "ION JIT, Type Inference, ASM.JS.">
<!ENTITY torbutton.prefs.sec_baseline_jit_desc_tooltip "Baseline JIT.">
-<!ENTITY torbutton.prefs.sec_jit_slower_desc "Scripts on some sites may run slower.">
-<!ENTITY torbutton.prefs.sec_mathml_desc "Some mechanisms of displaying math equations are disabled.">
-<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML is disabled.">
-<!ENTITY torbutton.prefs.sec_med_high "Medium-High">
-<!ENTITY torbutton.prefs.sec_all_jit_desc "All JavaScript performance optimizations are disabled.">
-<!ENTITY torbutton.prefs.sec_font_rend_desc "Some font rendering features are disabled.">
-<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "The Graphite font rendering mechanism is disabled.">
-<!ENTITY torbutton.prefs.sec_svg_desc "Some types of images are disabled.">
-<!ENTITY torbutton.prefs.sec_svg_desc_tooltip "SVG images are disabled.">
-<!ENTITY torbutton.prefs.sec_js_https_desc "JavaScript is disabled by default on all non-HTTPS sites.">
-<!ENTITY torbutton.prefs.sec_js_desc_tooltip "JavaScript can be enabled on a per-site basis via the NoScript toolbar button.">
-<!ENTITY torbutton.prefs.sec_high "High">
-<!ENTITY torbutton.prefs.sec_all_js_desc "JavaScript is disabled by default on all sites.">
-<!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.prefs.sec_custom "Custom Values">
-<!ENTITY torbutton.circuit_display.title "Tor circuit for this site">
+<!ENTITY torbutton.prefs.sec_jit_slower_desc "Những đoạn mã trên một số trang có thể chạy chậm hơn.">
+<!ENTITY torbutton.prefs.sec_mathml_desc "Một vài cơ chế hiển thị công thức toán học bị vô hiệu.">
+<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathMK bị vô hiệu">
+<!ENTITY torbutton.prefs.sec_med_high "Trung bình-Cao">
+<!ENTITY torbutton.prefs.sec_all_jit_desc "Trên những trang nơi JavaScript được cho phép, việc tối ưu hóa hiệu suất bị vô hiệu.">
+<!ENTITY torbutton.prefs.sec_font_rend_desc "Một vài chức năng tô vẽ phông chữ bị vô hiệu.">
+<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "Cơ chế tô vẽ phông chữ Graphite bị vô hiệu.">
+<!ENTITY torbutton.prefs.sec_svg_desc "Một vài loại hình ảnh bị vô hiệu.">
+<!ENTITY torbutton.prefs.sec_svg_desc_tooltip "Hình ảnh SVG bị vô hiệu.">
+<!ENTITY torbutton.prefs.sec_js_https_desc "JavaScript mặc định bị vô hiệu trên tất cả các trang non-HTTPS.">
+<!ENTITY torbutton.prefs.sec_js_desc_tooltip "JavaScript có thể được cho phép trên nền tảng mỗi trang thông qua nút NoScript trên thanh công cụ.">
+<!ENTITY torbutton.prefs.sec_high "Cao">
+<!ENTITY torbutton.prefs.sec_all_js_desc "JavaScript mặc định bị vô hiệu trên tất cả các trang.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc "Một vài phông chữ và biểu tượng có thể hiển thị không đúng.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "Những tập tin phông chữ do trang web cung cấp bị chặn.">
+<!ENTITY torbutton.circuit_display.title "Đầu nối Tor dành cho trang này.">
diff --git a/src/chrome/locale/vi/torbutton.properties b/src/chrome/locale/vi/torbutton.properties
index 34169dc..34a800c 100644
--- a/src/chrome/locale/vi/torbutton.properties
+++ b/src/chrome/locale/vi/torbutton.properties
@@ -1,51 +1,51 @@
torbutton.circuit_display.internet = Internet
-torbutton.circuit_display.ip_unknown = IP unknown
-torbutton.circuit_display.onion_site = Onion site
-torbutton.circuit_display.this_browser = This browser
-torbutton.circuit_display.relay = relay
-torbutton.circuit_display.tor_bridge = Bridge
-torbutton.circuit_display.unknown_country = Unknown country
-torbutton.content_sizer.margin_tooltip = Tor Browser adds this margin to make the width and height of your window less distinctive, and thus reduces the ability of people to track you online.
+torbutton.circuit_display.ip_unknown = Địa chỉ IP không biết đến
+torbutton.circuit_display.onion_site = Trang củ hành
+torbutton.circuit_display.this_browser = Trình duyệt này
+torbutton.circuit_display.relay = tiếp sức
+torbutton.circuit_display.tor_bridge = Cầu nối
+torbutton.circuit_display.unknown_country = Đất nước không được biết đến
+torbutton.content_sizer.margin_tooltip = Trình duyệt Tor thêm lề này để làm cho chiều rộng và chiều cao của màn hình của bạn ít dễ bị phân biệt hơn, và vì thế giảm khả năng của những người theo dõi bạn trực tuyến.
torbutton.panel.tooltip.disabled = Nhấn để bật Tor
torbutton.panel.tooltip.enabled = Nhấn để tắt Tor
torbutton.panel.label.disabled = Tor bị tắt
torbutton.panel.label.enabled = Tor được bật
extensions.torbutton(a)torproject.org.description = Torbutton provides a button to configure Tor settings and quickly and easily clear private browsing data.
-torbutton.popup.external.title = Download an external file type?
-torbutton.popup.external.app = Tor Browser cannot display this file. You will need to open it with another application.\n\n
-torbutton.popup.external.note = Some types of files can cause applications to connect to the Internet without using Tor.\n\n
-torbutton.popup.external.suggest = To be safe, you should only open downloaded files while offline, or use a Tor Live CD such as Tails.\n
-torbutton.popup.launch = Download file
+torbutton.popup.external.title = Tải về một loại tập tin bên ngoài?
+torbutton.popup.external.app = Trình duyệt Tor không thể hiển thị tập tin này. Bạn cần mở nó với một ứng dụng khác.\n\n
+torbutton.popup.external.note = Môộtiài loại tập tin có thể làm những ứng dụng kết nối tới Internet mà không dùng Tor.\n\n
+torbutton.popup.external.suggest = Để an toàn, bạn chỉ nên mở những tập tin được tải về khi đang offline, hoặc sử dụng một Tor Live CD như là Tails.\n
+torbutton.popup.launch = Tải tập tin
torbutton.popup.cancel = Hủy bỏ
-torbutton.popup.dontask = Automatically download files from now on
-torbutton.popup.prompted_language = Để bạn có thêm sư riêng tư, Torbutton có thể yêu cầu trang mạng sử dụng phiên bản Tiếng Anh. Đây có thể là nguyên nhân trang mạng mà bạn đề nghị hiển thị tiến bản địa lại hiển thị Tiếng Anh.\n\nBạn có muốn yêu cầu trang mạng tiếng anh để có thêm sự riêng tư?
-torbutton.popup.no_newnym = Torbutton có thể đưa bạn một danh tính mới một cách không an toàn. Nó không hề truy cập vào Tor Control Port.\n\nCó phải bạn đang dùng Tor Browser Bundle?
+torbutton.popup.dontask = Tự động tải những tập tin kể từ bây giờ
+torbutton.popup.prompted_language = Để bạn có thêm sư riêng tư, Torbutton có thể yêu cầu trang mạng sử dụng phiên bản Tiếng Anh. Việc này có thể gây ra việc những trang bạn muốn đọc bằng tiếng mẹ đẻ lại hiển thị bằng tiếng Anh thay vào đó.\n\nBạn có muốn yêu cầu trang mạng bằng tiếng Anh để có thêm sự riêng tư?
+torbutton.popup.no_newnym = Torbutton không thể đưa bạn một danh tính mới một cách an toàn. Nó không có đường truy cập vào Tor Control Port.\n\nCó phải bạn đang dùng Tor Browser Bundle?
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
torbutton.popup.confirm_plugins = Plugins such as Flash can harm your privacy and anonymity.\n\nThey can also bypass Tor to reveal your current location and IP address.\n\nAre you sure you want to enable plugins?\n\n
torbutton.popup.never_ask_again = Never ask me again
-torbutton.popup.confirm_newnym = Tor Browser will close all windows and tabs. All website sessions will be lost.\n\nRestart Tor Browser now to reset your identity?\n\n
+torbutton.popup.confirm_newnym = Trình duyệt Tor sẽ đóng tất cả cửa sổ và các thẻ. Mọi trang phiên của trang web sẽ mất.\n\nKhởi động lại Trình duyệt Tor bây giờ để đặt lại danh tính của bạn?\n\n
-torbutton.slider_notification = The green onion menu now has a security slider which lets you adjust your security level. Check it out!
-torbutton.slider_notification_button = Open security settings
+torbutton.slider_notification = Trình đơn Củ hành màu xanh bây giờ có một trình điều chỉnh an ninh thứ cho phép bạn điều chỉnh mức độ an ninh của bạn. Thử ngay bây giờ!
+torbutton.slider_notification_button = Mở cài đặt an ninh
-torbutton.maximize_warning = Maximizing Tor Browser can allow websites to determine your monitor size, which can be used to track you. We recommend that you leave Tor Browser windows in their original default size.
+torbutton.maximize_warning = Mở rộng tối đa Trình duyệt Tor có thể cho phép trang web xác định kích cỡ màn hình của bạn, thứ có thể được dùng để theo dõi bạn. Chúng tôi khuyên bạn để của sổ Trình duyệt Tor ở kích cỡ mặc định gốc.
# Canvas permission prompt. Strings are kept here for ease of translation.
-canvas.siteprompt=This website (%S) attempted to extract HTML5 canvas image data, which may be used to uniquely identify your computer.\n\nShould Tor Browser allow this website to extract HTML5 canvas image data?
-canvas.notNow=Not Now
+canvas.siteprompt=Trang web này (%S) đã cố gắng trích xuất dữ liệu bức vẽ hình ảnh HTML5, thứ có thể sử dụng để xác định một cách duy nhất máy tính của bạn.\n\nTrình duyệt Tor có nên cho phép trang web này trích xuất dữ liệu bức vẽ hình ảnh HTML5?
+canvas.notNow=Không phải bây giờ
canvas.notNowAccessKey=N
-canvas.allow=Allow in the future
+canvas.allow=Cho phép trong tương lai
canvas.allowAccessKey=T
-canvas.never=Never for this site (recommended)
+canvas.never=Không bao giờ đối với trang này (được khuyến khích)
canvas.neverAccessKey=e
# Profile/startup error messages. Strings are kept here for ease of translation.
# LOCALIZATION NOTE: %S is the application name.
-profileProblemTitle=%S Profile Problem
-profileReadOnly=You cannot run %S from a read-only file system. Please copy %S to another location before trying to use it.
-profileReadOnlyMac=You cannot run %S from a read-only file system. Please copy %S to your Desktop or Applications folder before trying to use it.
-profileAccessDenied=%S does not have permission to access the profile. Please adjust your file system permissions and try again.
-profileMigrationFailed=Migration of your existing %S profile failed.\nNew settings will be used.
+profileProblemTitle=%S Vấn đề về cấu hình
+profileReadOnly=Bạn không thể chạy %S từ một tập tin hệ thống chỉ cho đọc. Vui lòng chép %S tới một vị trí khác trước khi sử dụng nó.
+profileReadOnlyMac=Bạn không thể chạy %S từ một tập tin hệ thống chỉ cho đọc. Vui lòng chép %S tới Desktop hoặc ứng dụng thư mục trước khi cố gắng sử dụng nó.
+profileAccessDenied=%S không được phép truy cập cấu hình. Vui lòng điều chỉnh sự cho phép của tập tin hệ thống và thử lại.
+profileMigrationFailed=Việc di chuyển hồ sơ %S hiện tại của bạn đã thất bại.\nNhững cài đặt mới sẽ được sử dụng.
diff --git a/src/chrome/locale/zh-CN/aboutTor.properties b/src/chrome/locale/zh-CN/aboutTor.properties
index 39dbd19..4d017c3 100644
--- a/src/chrome/locale/zh-CN/aboutTor.properties
+++ b/src/chrome/locale/zh-CN/aboutTor.properties
@@ -19,3 +19,10 @@ aboutTor.searchDC.privacy=使用<a href="%2$S">Disconnect.me</a><a href="%1$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=立即捐助!
+aboutTor.donationBanner.heart=Tor 是互联网自由的核心
+aboutTor.donationBanner.tagline1=数百万人依靠 Tor 安全、私密地上网
+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/zh-CN/torbutton.dtd b/src/chrome/locale/zh-CN/torbutton.dtd
index a73d4dd..d435c6f 100644
--- a/src/chrome/locale/zh-CN/torbutton.dtd
+++ b/src/chrome/locale/zh-CN/torbutton.dtd
@@ -2,13 +2,18 @@
<!ENTITY torbutton.context_menu.new_identity_key "I">
<!ENTITY torbutton.context_menu.new_circuit "为此站点使用新 Tor 线路">
<!ENTITY torbutton.context_menu.new_circuit_key "C">
+<!ENTITY torbutton.context_menu.preferences "安全设置…">
+<!ENTITY torbutton.context_menu.preferences.key "S">
<!ENTITY torbutton.context_menu.networksettings "Tor 网络设置…">
+<!ENTITY torbutton.context_menu.networksettings.key "N">
<!ENTITY torbutton.context_menu.downloadUpdate "Tor Browser 检查更新…">
<!ENTITY torbutton.context_menu.downloadUpdate.key "U">
<!ENTITY torbutton.context_menu.cookieProtections "Cookie 保护…">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.button.tooltip "点此初始化 Torbutton">
-<!ENTITY torbutton.prefs.restore_defaults "恢复默认设置">
+<!ENTITY torbutton.prefs.security_settings "Tor 浏览器安全设置">
+<!ENTITY torbutton.prefs.restore_defaults "恢复默认值">
+<!ENTITY torbutton.prefs.custom_warning "您自定义的浏览器设置导致了不安全的安全设置。出于安全和隐私考虑,我们建议您选择一个默认的安全级别。">
<!ENTITY torbutton.cookiedialog.title "管理受保护的 Cookie">
<!ENTITY torbutton.cookiedialog.lockCol "受保护">
<!ENTITY torbutton.cookiedialog.domainCol "主机">
@@ -21,8 +26,13 @@
<!ENTITY torbutton.cookiedialog.saveAllCookies "保护新的 Cookie">
<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "不保护新的 Cookie">
<!ENTITY torbutton.prefs.restrict_thirdparty "限制第三方 cookie 和其他数据跟踪程序">
+<!ENTITY torbutton.prefs.restrict_thirdparty.accesskey "R">
+<!ENTITY torbutton.prefs.restrict_thirdparty_tooltip "该选项用于防止滥用浏览器功能跟踪用户。修改的功能包括:blob 网址,广播通道,浏览器缓存,cookie,收藏夹图标,HTTP 验证头部,预连接,localStorage,mediaSource 网址,OCSP 请求,SharedWorker 和 TLS 会话票证。">
<!ENTITY torbutton.prefs.resist_fingerprinting "修改 Tor 浏览器中可区分你与其他 Tor 用户的细节信息">
+<!ENTITY torbutton.prefs.resist_fingerprinting.accesskey "F">
+<!ENTITY torbutton.prefs.resist_fingerprinting_tooltip "该选项可防止网站参看可识别用户的信息,包括电池状态,计算机性能,键盘布局,区域,插件安装位置,插件列表,网络状态,屏幕方向和大小,特定网站缩放比例,支持文件类型,系统颜色,以及 WebGL 功能。 ">
<!ENTITY torbutton.prefs.sec_caption "安全等级">
+<!ENTITY torbutton.prefs.sec_caption_tooltip "安全滑块可禁用某些浏览器功能,避免因这些功能导致的漏洞而受到攻击。">
<!ENTITY torbutton.prefs.sec_low "低(默认)">
<!ENTITY torbutton.prefs.sec_low_usable_desc "该选项可提供最佳的用户体验。">
<!ENTITY torbutton.prefs.sec_low_desc "该安全级别将启用所有浏览器功能。">
@@ -38,7 +48,7 @@
<!ENTITY torbutton.prefs.sec_mathml_desc "禁用数学方程式的某些显示机制。">
<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "禁用 MathML。">
<!ENTITY torbutton.prefs.sec_med_high "中高">
-<!ENTITY torbutton.prefs.sec_all_jit_desc "禁用全部 JavaScript 性能优化。">
+<!ENTITY torbutton.prefs.sec_all_jit_desc "在开启 JavaScript 的站点上禁用性能优化。">
<!ENTITY torbutton.prefs.sec_font_rend_desc "禁用某些字体渲染功能。">
<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "禁用 Graphite 字体渲染。">
<!ENTITY torbutton.prefs.sec_svg_desc "禁用某些图像类型。">
@@ -49,5 +59,4 @@
<!ENTITY torbutton.prefs.sec_all_js_desc "默认禁用所有网站 JavaScript。">
<!ENTITY torbutton.prefs.sec_webfonts_desc "某些字体和图标可能无法正确显示。">
<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "禁用网站提供的字体文件。">
-<!ENTITY torbutton.prefs.sec_custom "自定义">
<!ENTITY torbutton.circuit_display.title "为此站点使用的 Tor 线路">
1
0
commit c8ec31a111cf15971a341df02bca04fe09dd3bed
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Tue Nov 8 09:22:31 2016 -0800
Bug 20414.2: Tor Donation Banner 2016
---
src/chrome/content/aboutTor/aboutTor.xhtml | 26 +-
src/chrome/content/aboutTor/donation_banner.js | 184 ++
src/chrome/content/aboutTor/onion-heart.svg | 142 ++
src/chrome/content/aboutTor/tor-roots-only.svg | 2716 ++++++++++++++++++++++++
src/chrome/skin/donation_banner.css | 148 ++
5 files changed, 3215 insertions(+), 1 deletion(-)
diff --git a/src/chrome/content/aboutTor/aboutTor.xhtml b/src/chrome/content/aboutTor/aboutTor.xhtml
index dbb8a89..1ecae65 100644
--- a/src/chrome/content/aboutTor/aboutTor.xhtml
+++ b/src/chrome/content/aboutTor/aboutTor.xhtml
@@ -21,6 +21,8 @@
<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()
@@ -164,6 +166,28 @@ 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"></div>
+ <div id="banner-donate-button-arrow"></div>
+ </div>
+ </div>
+ </a>
+ </div>
+ </div>
+ <div id="banner-spacer"></div>
<div id="torstatus" class="top">
<div id="torstatus-version"/>
<div id="torstatus-image"/>
@@ -237,6 +261,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
new file mode 100644
index 0000000..1087815
--- /dev/null
+++ b/src/chrome/content/aboutTor/donation_banner.js
@@ -0,0 +1,184 @@
+/* jshint esnext:true */
+
+// A list of locales for which the banner has been translated.
+let kBannerLocales = [
+ "de",
+ "en",
+ "es",
+ "fa",
+ "it",
+ "nl",
+ "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 15 and 2017 Jan 25.
+ let now = new Date();
+ let start = new Date(2016, 10, 15);
+ 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 10 times.
+ let count = 0;
+ if (Services.prefs.prefHasUserValue(shownCountPref)) {
+ count = Services.prefs.getIntPref(shownCountPref);
+ }
+ if (count >= 10) {
+ 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"));
+ avoidWidows(sel("#banner-tagline span"));
+};
+
+// 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").innerHTML =
+ gStringBundle.GetStringFromName("aboutTor.donationBanner.donate");
+ sel("#banner-donate-button-arrow").innerHTML = "▶";
+ 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(document.body, { 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
new file mode 100644
index 0000000..300002a
--- /dev/null
+++ b/src/chrome/content/aboutTor/onion-heart.svg
@@ -0,0 +1,142 @@
+<?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
new file mode 100644
index 0000000..bb84b1b
--- /dev/null
+++ b/src/chrome/content/aboutTor/tor-roots-only.svg
@@ -0,0 +1,2716 @@
+<?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/skin/donation_banner.css b/src/chrome/skin/donation_banner.css
new file mode 100644
index 0000000..8ad3f88
--- /dev/null
+++ b/src/chrome/skin/donation_banner.css
@@ -0,0 +1,148 @@
+#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-bottom: 5px;
+ padding-left: 15px;
+ padding-right: 15px;
+ padding-top: 5px;
+ width: 80px;
+}
+#banner-donate-button-container:hover {
+ border-color: #610;
+}
+#banner-donate-button-container:active {
+ border-color: #A20;
+}
+#banner-donate-button {
+ align-items: center;
+ display: flex;
+ font-family: sans-serif;
+ font-size: 12px;
+ font-weight: bold;
+ height: 100%;
+ text-align: start;
+ width: 100%;
+}
+#banner-donate-button-arrow {
+ font-size: 14px;
+ margin-inline-start: 5px;
+}
+#banner-donate-button-arrow:-moz-dir(rtl) {
+ transform: scaleX(-1);
+}
+#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 20347.1: Apply torbutton security_slider pref at startup
by gk@torproject.org 08 Nov '16
by gk@torproject.org 08 Nov '16
08 Nov '16
commit 595b01456eaa3b0759f1f80d562ebf6520c8c182
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Tue Nov 8 07:57:10 2016 -0800
Bug 20347.1: Apply torbutton security_slider pref at startup
Fixes bug in the main 20347 patch, reported at
https://trac.torproject.org/projects/tor/ticket/20347#comment:13
---
src/modules/security-prefs.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/modules/security-prefs.js b/src/modules/security-prefs.js
index 3710862..fa30aba 100644
--- a/src/modules/security-prefs.js
+++ b/src/modules/security-prefs.js
@@ -78,7 +78,7 @@ var watch_security_prefs = function (onSettingChanged) {
let prefNames = Object.keys(kSecuritySettings);
let unbindFuncs = [];
for (let prefName of prefNames) {
- unbindFuncs.push(bindPref(
+ unbindFuncs.push(bindPrefAndInit(
prefName, () => onSettingChanged(read_setting_from_prefs())));
}
// Call all the unbind functions.
@@ -102,7 +102,7 @@ var initialize = function () {
initialized = true;
// When security_custom is set to false, apply security_slider setting
// to the security-sensitive prefs.
- bindPref(kCustomPref, function (custom) {
+ bindPrefAndInit(kCustomPref, function (custom) {
if (custom === false) {
write_setting_to_prefs(getIntPref(kSliderPref));
}
1
0
commit 3dee56db1330daa8df7e4d0c90d88bff17b80fec
Author: David Fifield <david(a)bamsoftware.com>
Date: Sun Apr 10 08:32:54 2016 +0000
Upgrade Go to 1.6.3.
This commit is a combination of two commits from master:
778fd2d0 Bug 18333: Upgrade go to 1.6.2.
1aa712a5 Bug 19703: Upgrade Go to 1.6.3.
---
.../linux/gitian-pluggable-transports.yml | 12 ++++++++++
.../mac/gitian-pluggable-transports.yml | 27 ++++++++++++++++-----
.../windows/gitian-pluggable-transports.yml | 28 +++++++++++++++++-----
gitian/fetch-inputs.sh | 5 ++--
gitian/verify-tags.sh | 2 +-
gitian/versions | 9 +++++--
gitian/versions.alpha | 9 +++++--
gitian/versions.beta | 9 +++++--
gitian/versions.nightly | 9 +++++--
9 files changed, 87 insertions(+), 23 deletions(-)
diff --git a/gitian/descriptors/linux/gitian-pluggable-transports.yml b/gitian/descriptors/linux/gitian-pluggable-transports.yml
index 38ae561..a1cdc48 100644
--- a/gitian/descriptors/linux/gitian-pluggable-transports.yml
+++ b/gitian/descriptors/linux/gitian-pluggable-transports.yml
@@ -46,6 +46,7 @@ files:
- "zope.interface.zip"
- "twisted.tar.bz2"
- "parsley.tar.gz"
+- "go14.tar.gz"
- "go.tar.gz"
- "dzip.sh"
- "gmp-linux32-utils.zip"
@@ -74,6 +75,17 @@ script: |
# FTE only needs libgmp.so.10 and no libgmpxx anymore.
cp $INSTDIR/gmp/lib/libgmp.so.10 $INSTDIR/Tor
+ # Building go 1.4.x
+ # This is needed to bootstrap the go that we actually use
+ # https://golang.org/doc/install/source#go14
+ tar xvf go14.tar.gz --transform='s,^go\>,go1.4,'
+ cd go1.4/src
+ # Disable cgo to avoid conflicts with newer GCC. cgo is not needed for the bootstrap go.
+ # https://github.com/golang/go/issues/13114#issuecomment-186922245
+ CGO_ENABLED=0 ./make.bash
+ cd ../..
+ export GOROOT_BOOTSTRAP="$PWD/go1.4"
+
# Building go
# http://golang.org/doc/install/source#environment
export GOPATH="$HOME/go"
diff --git a/gitian/descriptors/mac/gitian-pluggable-transports.yml b/gitian/descriptors/mac/gitian-pluggable-transports.yml
index fbf38c2..33b134e 100644
--- a/gitian/descriptors/mac/gitian-pluggable-transports.yml
+++ b/gitian/descriptors/mac/gitian-pluggable-transports.yml
@@ -45,6 +45,7 @@ files:
- "zope.interface.zip"
- "twisted.tar.bz2"
- "parsley.tar.gz"
+- "go14.tar.gz"
- "go.tar.gz"
- "apple-uni-sdk-10.6_20110407-0.flosoft1_i386.deb"
- "multiarch-darwin11-cctools127.2-gcc42-5666.3-llvmgcc42-2336.1-Linux-120724.tar.xz"
@@ -103,19 +104,33 @@ script: |
export CXXFLAGS="-m64 -I/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/include/ -I/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/ -I. -L/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/ -L/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/system/ -F/usr/lib/apple/SDKs/MacOSX10.6.sdk/System/Library/Frameworks -mmacosx-version-min=10.5 -L/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/i686-apple-darwin10/4.2.1$FTE_EXTRA_CFLAGS"
export LDFLAGS="-L/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/ -L/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/system/ -F/usr/lib/apple/SDKs/MacOSX10.6.sdk/System/Library/Frameworks -mmacosx-version-min=10.5"
+ # Building go 1.4.x
+ # This is needed to bootstrap the go that we actually use
+ # https://golang.org/doc/install/source#go14
+ tar xvf go14.tar.gz --transform='s,^go\>,go1.4,'
+ cd go1.4/src
+ # Disable cgo to avoid conflicts with newer GCC. cgo is not needed for the bootstrap go.
+ # https://github.com/golang/go/issues/13114#issuecomment-186922245
+ # Disable CC etc. that are set up for cross builds.
+ CGO_ENABLED=0 CC= CFLAGS= LDFLAGS= ./make.bash
+ cd ../..
+ export GOROOT_BOOTSTRAP="$PWD/go1.4"
+
# Building go
+ # Create a cc-for-target script that closes over CC, CFLAGS, and LDFLAGS.
+ # Go's CC_FOR_TARGET only allows a command name, not a command with arguments.
+ # https://github.com/golang/go/issues/15457
+ CC_FOR_TARGET="$(pwd)/cc-for-target"
+ echo "#!/bin/sh" > "$CC_FOR_TARGET"
+ echo "exec $CC $CFLAGS $LDFLAGS \"\$@\"" >> "$CC_FOR_TARGET"
+ chmod +x "$CC_FOR_TARGET"
# http://golang.org/doc/install/source#environment
export GOPATH="$HOME/go"
export GOOS=darwin
export GOARCH=386
tar xvf go.tar.gz
cd go/src
- # http://golang.org/cmd/cgo/:
- # "To enable cgo during cross compiling builds, set the CGO_ENABLED
- # environment variable to 1 when building the Go tools with make.bash. Also,
- # set CC_FOR_TARGET to the C cross compiler for the target. CC will be used
- # for compiling for the host."
- CGO_ENABLED=1 CC_FOR_TARGET="$CC $CFLAGS $LDFLAGS" CC= CFLAGS= LDFLAGS= ./make.bash
+ CGO_ENABLED=1 CC_FOR_TARGET="$CC_FOR_TARGET" CC= CFLAGS= LDFLAGS= ./make.bash
cd ../..
export PATH="$PATH:$PWD/go/bin"
diff --git a/gitian/descriptors/windows/gitian-pluggable-transports.yml b/gitian/descriptors/windows/gitian-pluggable-transports.yml
index f073fd1..7e8a349 100644
--- a/gitian/descriptors/windows/gitian-pluggable-transports.yml
+++ b/gitian/descriptors/windows/gitian-pluggable-transports.yml
@@ -47,6 +47,7 @@ files:
- "wine-wrappers"
- "python.msi"
- "py2exe.exe"
+- "go14.tar.gz"
- "go.tar.gz"
- "dzip.sh"
- "pyc-timestamp.sh"
@@ -139,19 +140,34 @@ script: |
cp -a dist/gcc.exe dist/g++.exe dist/dllwrap.exe $WINEROOT/windows/
cd ..
+ # Building go 1.4.x
+ # This is needed to bootstrap the go that we actually use
+ # https://golang.org/doc/install/source#go14
+ tar xvf go14.tar.gz --transform='s,^go\>,go1.4,'
+ cd go1.4/src
+ # Disable cgo to avoid conflicts with newer GCC. cgo is not needed for the bootstrap go.
+ # https://github.com/golang/go/issues/13114#issuecomment-186922245
+ # Disable CC etc. that are set up for cross builds.
+ CGO_ENABLED=0 CC= CFLAGS= LDFLAGS= ./make.bash
+ cd ../..
+ export GOROOT_BOOTSTRAP="$PWD/go1.4"
+
# Building go
+ CC=i686-w64-mingw32-gcc
+ # Create a cc-for-target script that closes over CC, CFLAGS, and LDFLAGS.
+ # Go's CC_FOR_TARGET only allows a command name, not a command with arguments.
+ # https://github.com/golang/go/issues/15457
+ CC_FOR_TARGET="$(pwd)/cc-for-target"
+ echo "#!/bin/sh" > "$CC_FOR_TARGET"
+ echo "exec $CC $CFLAGS $LDFLAGS \"\$@\"" >> "$CC_FOR_TARGET"
+ chmod +x "$CC_FOR_TARGET"
# http://golang.org/doc/install/source#environment
export GOPATH="$HOME/go"
export GOOS=windows
export GOARCH=386
tar xvf go.tar.gz
cd go/src
- # http://golang.org/cmd/cgo/:
- # "To enable cgo during cross compiling builds, set the CGO_ENABLED
- # environment variable to 1 when building the Go tools with make.bash. Also,
- # set CC_FOR_TARGET to the C cross compiler for the target. CC will be used
- # for compiling for the host."
- CGO_ENABLED=1 CC_FOR_TARGET="i686-w64-mingw32-gcc" CC= CFLAGS= LDFLAGS= ./make.bash
+ CGO_ENABLED=1 CC_FOR_TARGET="$CC_FOR_TARGET" CC= CFLAGS= LDFLAGS= ./make.bash
cd ../..
export PATH="$PATH:$PWD/go/bin"
diff --git a/gitian/fetch-inputs.sh b/gitian/fetch-inputs.sh
index b5adfc2..50daec0 100755
--- a/gitian/fetch-inputs.sh
+++ b/gitian/fetch-inputs.sh
@@ -162,7 +162,7 @@ do
get "${!PACKAGE}" "${MIRROR_URL_ASN}${!PACKAGE}"
done
-for i in ZOPEINTERFACE TWISTED PY2EXE SETUPTOOLS PARSLEY GO STIXMATHFONT NOTOEMOJIFONT NOTOJPFONT NOTOKRFONT NOTOSCFONT NOTOTCFONT NSIS NSIS_DEBIAN PYCRYPTO
+for i in ZOPEINTERFACE TWISTED PY2EXE SETUPTOOLS PARSLEY GO14 GO STIXMATHFONT NOTOEMOJIFONT NOTOJPFONT NOTOKRFONT NOTOSCFONT NOTOTCFONT NSIS NSIS_DEBIAN PYCRYPTO
do
URL="${i}_URL"
PACKAGE="${i}_PACKAGE"
@@ -174,7 +174,7 @@ wget -U "" -N ${NOSCRIPT_URL}
# Verify packages with weak or no signatures via direct sha256 check
# (OpenSSL is signed with MD5, and OSXSDK + OSXSDK_OLD are not signed at all)
-for i in OSXSDK OSXSDK_OLD TOOLCHAIN4_OLD CCTOOLS NOSCRIPT MSVCR100 PYCRYPTO ARGPARSE PYYAML ZOPEINTERFACE TWISTED SETUPTOOLS OPENSSL GMP PARSLEY GO GCC STIXMATHFONT NOTOEMOJIFONT NOTOJPFONT NOTOKRFONT NOTOSCFONT NOTOTCFONT NSIS NSIS_DEBIAN
+for i in OSXSDK OSXSDK_OLD TOOLCHAIN4_OLD CCTOOLS NOSCRIPT MSVCR100 PYCRYPTO ARGPARSE PYYAML ZOPEINTERFACE TWISTED SETUPTOOLS OPENSSL GMP PARSLEY GO14 GO GCC STIXMATHFONT NOTOEMOJIFONT NOTOJPFONT NOTOKRFONT NOTOSCFONT NOTOTCFONT NSIS NSIS_DEBIAN
do
PACKAGE="${i}_PACKAGE"
HASH="${i}_HASH"
@@ -243,6 +243,7 @@ ln -sf "$PY2EXE_PACKAGE" py2exe.exe
ln -sf "$SETUPTOOLS_PACKAGE" setuptools.tar.gz
ln -sf "$GMP_PACKAGE" gmp.tar.bz2
ln -sf "$PARSLEY_PACKAGE" parsley.tar.gz
+ln -sf "$GO14_PACKAGE" go14.tar.gz
ln -sf "$GO_PACKAGE" go.tar.gz
ln -sf "$NSIS_PACKAGE" nsis.tar.bz2
ln -sf "$NSIS_DEBIAN_PACKAGE" nsis-debian.tar.xz
diff --git a/gitian/verify-tags.sh b/gitian/verify-tags.sh
index 33b54a4..d95b0e0 100755
--- a/gitian/verify-tags.sh
+++ b/gitian/verify-tags.sh
@@ -144,7 +144,7 @@ done
# Verify packages with weak or no signatures via direct sha256 check
# (OpenSSL is signed with MD5, and OSXSDK + OSXSDK_OLD are not signed at all)
-for i in OSXSDK OSXSDK_OLD TOOLCHAIN4_OLD CCTOOLS NOSCRIPT MSVCR100 PYCRYPTO ARGPARSE PYYAML ZOPEINTERFACE TWISTED SETUPTOOLS OPENSSL GMP PARSLEY GO GCC STIXMATHFONT NOTOEMOJIFONT NOTOJPFONT NOTOKRFONT NOTOSCFONT NOTOTCFONT NSIS NSIS_DEBIAN
+for i in OSXSDK OSXSDK_OLD TOOLCHAIN4_OLD CCTOOLS NOSCRIPT MSVCR100 PYCRYPTO ARGPARSE PYYAML ZOPEINTERFACE TWISTED SETUPTOOLS OPENSSL GMP PARSLEY GO14 GO GCC STIXMATHFONT NOTOEMOJIFONT NOTOJPFONT NOTOKRFONT NOTOSCFONT NOTOTCFONT NSIS NSIS_DEBIAN
do
PACKAGE="${i}_PACKAGE"
HASH="${i}_HASH"
diff --git a/gitian/versions b/gitian/versions
index de92243..784b7ea 100755
--- a/gitian/versions
+++ b/gitian/versions
@@ -60,7 +60,9 @@ TWISTED_VER=13.2.0
PY2EXE_VER=0.6.9
SETUPTOOLS_VER=1.4
PARSLEY_VER=1.2
-GO_VER=1.4.3
+# 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.6.3
NSIS_VER=2.51
## File names for the source packages
@@ -83,6 +85,7 @@ TWISTED_PACKAGE=Twisted-${TWISTED_VER}.tar.bz2
PY2EXE_PACKAGE=py2exe-${PY2EXE_VER}.win32-py2.7.exe
SETUPTOOLS_PACKAGE=setuptools-${SETUPTOOLS_VER}.tar.gz
PARSLEY_PACKAGE=Parsley-${PARSLEY_VER}.tar.gz
+GO14_PACKAGE=go${GO14_VER}.src.tar.gz
GO_PACKAGE=go${GO_VER}.src.tar.gz
NSIS_PACKAGE=nsis-${NSIS_VER}-src.tar.bz2
NSIS_DEBIAN_PACKAGE=nsis_${NSIS_VER}-1.debian.tar.xz
@@ -110,7 +113,8 @@ TWISTED_HASH=095175638c019ac7c0604f4c291724a16ff1acd062e181b01293bf4dcbc62cf3
PY2EXE_HASH=610a8800de3d973ed5ed4ac505ab42ad058add18a68609ac09e6cf3598ef056c
SETUPTOOLS_HASH=75d288687066ed124311d6ca5f40ffa92a0e81adcd7fff318c6e84082713cf39
PARSLEY_HASH=50d30cee70770fd44db7cea421cb2fb75af247c3a1cd54885c06b30a7c85dd23
-GO_HASH=9947fc705b0b841b5938c48b22dc33e9647ec0752bae66e50278df4f23f64959
+GO14_HASH=9947fc705b0b841b5938c48b22dc33e9647ec0752bae66e50278df4f23f64959
+GO_HASH=6326aeed5f86cf18f16d6dc831405614f855e2d416a91fd3fdc334f772345b00
NSIS_HASH=43d4c9209847e35eb6e2c7cd5a7586e1445374c056c2c7899e40a080e17a1be7
NSIS_DEBIAN_HASH=1dee6957b4a4b8dfe69bcf28bc7f301a13b96b3fa5a394e36c8926ae781e774a
GCC_HASH=b7dafdf89cbb0e20333dbf5b5349319ae06e3d1a30bf3515b5488f7e89dca5ad
@@ -140,6 +144,7 @@ TWISTED_URL=https://pypi.python.org/packages/source/T/Twisted/${TWISTED_PAC…
PY2EXE_URL=http://downloads.sourceforge.net/py2exe/${PY2EXE_VER}/${PY2EXE_P…
SETUPTOOLS_URL=https://pypi.python.org/packages/source/s/setuptools/${SETUP…
PARSLEY_URL=https://pypi.python.org/packages/source/P/Parsley/${PARSLEY_PAC…
+GO14_URL=https://golang.org/dl/${GO14_PACKAGE}
GO_URL=https://golang.org/dl/${GO_PACKAGE}
NSIS_URL=http://downloads.sourceforge.net/nsis/${NSIS_PACKAGE}
NSIS_DEBIAN_URL=http://http.debian.net/debian/pool/main/n/nsis/${NSIS_DEBIA…
diff --git a/gitian/versions.alpha b/gitian/versions.alpha
index 65acf45..d6044ce 100755
--- a/gitian/versions.alpha
+++ b/gitian/versions.alpha
@@ -60,7 +60,9 @@ TWISTED_VER=13.2.0
PY2EXE_VER=0.6.9
SETUPTOOLS_VER=1.4
PARSLEY_VER=1.2
-GO_VER=1.4.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.6.3
NSIS_VER=2.51
## File names for the source packages
@@ -83,6 +85,7 @@ TWISTED_PACKAGE=Twisted-${TWISTED_VER}.tar.bz2
PY2EXE_PACKAGE=py2exe-${PY2EXE_VER}.win32-py2.7.exe
SETUPTOOLS_PACKAGE=setuptools-${SETUPTOOLS_VER}.tar.gz
PARSLEY_PACKAGE=Parsley-${PARSLEY_VER}.tar.gz
+GO14_PACKAGE=go${GO14_VER}.src.tar.gz
GO_PACKAGE=go${GO_VER}.src.tar.gz
NSIS_PACKAGE=nsis-${NSIS_VER}-src.tar.bz2
NSIS_DEBIAN_PACKAGE=nsis_${NSIS_VER}-1.debian.tar.xz
@@ -110,7 +113,8 @@ TWISTED_HASH=095175638c019ac7c0604f4c291724a16ff1acd062e181b01293bf4dcbc62cf3
PY2EXE_HASH=610a8800de3d973ed5ed4ac505ab42ad058add18a68609ac09e6cf3598ef056c
SETUPTOOLS_HASH=75d288687066ed124311d6ca5f40ffa92a0e81adcd7fff318c6e84082713cf39
PARSLEY_HASH=50d30cee70770fd44db7cea421cb2fb75af247c3a1cd54885c06b30a7c85dd23
-GO_HASH=299a6fd8f8adfdce15bc06bde926e7b252ae8e24dd5b16b7d8791ed79e7b5e9b
+GO14_HASH=9947fc705b0b841b5938c48b22dc33e9647ec0752bae66e50278df4f23f64959
+GO_HASH=6326aeed5f86cf18f16d6dc831405614f855e2d416a91fd3fdc334f772345b00
NSIS_HASH=43d4c9209847e35eb6e2c7cd5a7586e1445374c056c2c7899e40a080e17a1be7
NSIS_DEBIAN_HASH=1dee6957b4a4b8dfe69bcf28bc7f301a13b96b3fa5a394e36c8926ae781e774a
GCC_HASH=b7dafdf89cbb0e20333dbf5b5349319ae06e3d1a30bf3515b5488f7e89dca5ad
@@ -140,6 +144,7 @@ TWISTED_URL=https://pypi.python.org/packages/source/T/Twisted/${TWISTED_PAC…
PY2EXE_URL=http://downloads.sourceforge.net/py2exe/${PY2EXE_VER}/${PY2EXE_P…
SETUPTOOLS_URL=https://pypi.python.org/packages/source/s/setuptools/${SETUP…
PARSLEY_URL=https://pypi.python.org/packages/source/P/Parsley/${PARSLEY_PAC…
+GO14_URL=https://golang.org/dl/${GO14_PACKAGE}
GO_URL=https://golang.org/dl/${GO_PACKAGE}
NSIS_URL=http://downloads.sourceforge.net/nsis/${NSIS_PACKAGE}
NSIS_DEBIAN_URL=http://http.debian.net/debian/pool/main/n/nsis/${NSIS_DEBIA…
diff --git a/gitian/versions.beta b/gitian/versions.beta
index 2564e41..1ff14b8 100755
--- a/gitian/versions.beta
+++ b/gitian/versions.beta
@@ -47,7 +47,9 @@ TWISTED_VER=13.2.0
PY2EXE_VER=0.6.9
SETUPTOOLS_VER=1.4
PARSLEY_VER=1.2
-GO_VER=1.4.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.6.3
## File names for the source packages
OPENSSL_PACKAGE=openssl-${OPENSSL_VER}.tar.gz
@@ -68,6 +70,7 @@ TWISTED_PACKAGE=Twisted-${TWISTED_VER}.tar.bz2
PY2EXE_PACKAGE=py2exe-${PY2EXE_VER}.win32-py2.7.exe
SETUPTOOLS_PACKAGE=setuptools-${SETUPTOOLS_VER}.tar.gz
PARSLEY_PACKAGE=Parsley-${PARSLEY_VER}.tar.gz
+GO14_PACKAGE=go${GO14_VER}.src.tar.gz
GO_PACKAGE=go${GO_VER}.src.tar.gz
STIXMATHFONT_PACKAGE=STIXv1.1.1-latex.zip
NOTOEMOJIFONT_PACKAGE=NotoEmoji-Regular.ttf
@@ -92,7 +95,8 @@ TWISTED_HASH=095175638c019ac7c0604f4c291724a16ff1acd062e181b01293bf4dcbc62cf3
PY2EXE_HASH=610a8800de3d973ed5ed4ac505ab42ad058add18a68609ac09e6cf3598ef056c
SETUPTOOLS_HASH=75d288687066ed124311d6ca5f40ffa92a0e81adcd7fff318c6e84082713cf39
PARSLEY_HASH=50d30cee70770fd44db7cea421cb2fb75af247c3a1cd54885c06b30a7c85dd23
-GO_HASH=299a6fd8f8adfdce15bc06bde926e7b252ae8e24dd5b16b7d8791ed79e7b5e9b
+GO14_HASH=9947fc705b0b841b5938c48b22dc33e9647ec0752bae66e50278df4f23f64959
+GO_HASH=6326aeed5f86cf18f16d6dc831405614f855e2d416a91fd3fdc334f772345b00
STIXMATHFONT_HASH=e3b0f712e2644438eee2d0dcd2b10b2d54f1b972039de95b2f8e800bae1adbd8
NOTOEMOJIFONT_HASH=415dc6290378574135b64c808dc640c1df7531973290c4970c51fdeb849cb0c5
NOTOJPFONT_HASH=3e8146c4ce0945f255cb9dbc12b392380af80bd117e0a60eae555c99c7e618da
@@ -118,6 +122,7 @@ TWISTED_URL=https://pypi.python.org/packages/source/T/Twisted/${TWISTED_PAC…
PY2EXE_URL=http://downloads.sourceforge.net/py2exe/${PY2EXE_VER}/${PY2EXE_P…
SETUPTOOLS_URL=https://pypi.python.org/packages/source/s/setuptools/${SETUP…
PARSLEY_URL=https://pypi.python.org/packages/source/P/Parsley/${PARSLEY_PAC…
+GO14_URL=https://golang.org/dl/${GO14_PACKAGE}
GO_URL=https://golang.org/dl/${GO_PACKAGE}
STIXMATHFONT_URL=http://iweb.dl.sourceforge.net/project/stixfonts/Current%2…
NOTOEMOJIFONT_URL=https://github.com/googlei18n/noto-emoji/raw/2f1ffdd6fbbd…
diff --git a/gitian/versions.nightly b/gitian/versions.nightly
index 781d4ae..f4475bc 100755
--- a/gitian/versions.nightly
+++ b/gitian/versions.nightly
@@ -67,7 +67,9 @@ TWISTED_VER=13.2.0
PY2EXE_VER=0.6.9
SETUPTOOLS_VER=1.4
PARSLEY_VER=1.2
-GO_VER=1.4.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.6.3
NSIS_VER=2.51
## File names for the source packages
@@ -90,6 +92,7 @@ TWISTED_PACKAGE=Twisted-${TWISTED_VER}.tar.bz2
PY2EXE_PACKAGE=py2exe-${PY2EXE_VER}.win32-py2.7.exe
SETUPTOOLS_PACKAGE=setuptools-${SETUPTOOLS_VER}.tar.gz
PARSLEY_PACKAGE=Parsley-${PARSLEY_VER}.tar.gz
+GO14_PACKAGE=go${GO14_VER}.src.tar.gz
GO_PACKAGE=go${GO_VER}.src.tar.gz
NSIS_PACKAGE=nsis-${NSIS_VER}-src.tar.bz2
NSIS_DEBIAN_PACKAGE=nsis_${NSIS_VER}-1.debian.tar.xz
@@ -117,7 +120,8 @@ TWISTED_HASH=095175638c019ac7c0604f4c291724a16ff1acd062e181b01293bf4dcbc62cf3
PY2EXE_HASH=610a8800de3d973ed5ed4ac505ab42ad058add18a68609ac09e6cf3598ef056c
SETUPTOOLS_HASH=75d288687066ed124311d6ca5f40ffa92a0e81adcd7fff318c6e84082713cf39
PARSLEY_HASH=50d30cee70770fd44db7cea421cb2fb75af247c3a1cd54885c06b30a7c85dd23
-GO_HASH=299a6fd8f8adfdce15bc06bde926e7b252ae8e24dd5b16b7d8791ed79e7b5e9b
+GO14_HASH=9947fc705b0b841b5938c48b22dc33e9647ec0752bae66e50278df4f23f64959
+GO_HASH=6326aeed5f86cf18f16d6dc831405614f855e2d416a91fd3fdc334f772345b00
NSIS_HASH=43d4c9209847e35eb6e2c7cd5a7586e1445374c056c2c7899e40a080e17a1be7
NSIS_DEBIAN_HASH=1dee6957b4a4b8dfe69bcf28bc7f301a13b96b3fa5a394e36c8926ae781e774a
GCC_HASH=b7dafdf89cbb0e20333dbf5b5349319ae06e3d1a30bf3515b5488f7e89dca5ad
@@ -147,6 +151,7 @@ TWISTED_URL=https://pypi.python.org/packages/source/T/Twisted/${TWISTED_PAC…
PY2EXE_URL=http://downloads.sourceforge.net/py2exe/${PY2EXE_VER}/${PY2EXE_P…
SETUPTOOLS_URL=https://pypi.python.org/packages/source/s/setuptools/${SETUP…
PARSLEY_URL=https://pypi.python.org/packages/source/P/Parsley/${PARSLEY_PAC…
+GO14_URL=https://golang.org/dl/${GO14_PACKAGE}
GO_URL=https://golang.org/dl/${GO_PACKAGE}
NSIS_URL=http://downloads.sourceforge.net/nsis/${NSIS_PACKAGE}
NSIS_DEBIAN_URL=http://http.debian.net/debian/pool/main/n/nsis/${NSIS_DEBIA…
1
0

08 Nov '16
commit 4a0bf1ed2578e3e742e00f95385f914a241904fd
Author: David Fifield <david(a)bamsoftware.com>
Date: Sun Apr 10 08:32:54 2016 +0000
Bug 20023: Upgrade Go to 1.7.3.
Go 1.7 has a necessary fix for macOS Sierra that is not in Go 1.6.3 or
earlier:
https://github.com/golang/go/commit/2da5633eb9091608047881953f75b489a3134cdc
meek was unstable on macOS Sierra when compiled with Go 1.4.3 or 1.6.3.
Reported by tordevSZ0: https://bugs.torproject.org/20250.
We need to use the Mac OS X 10.7 SDK (not 10.6) to build Go 1.7 and
later:
https://bugs.torproject.org/20023#comment:6
We add -std=gnu99 to CFLAGS when building Go. A piece of new C code uses
c99 features. Other code uses "asm", which requires gnu99.
https://bugs.torproject.org/20023#comment:6
https://trac.macports.org/ticket/52506
We hack one of the source files with sed to remove -D__MAC_OS_X_VERSION_MAX_ALLOWED=1060,
which otherwise causes the build to fail, thinking a couple of functions
are unavailable.
https://github.com/golang/go/issues/17732
---
gitian/descriptors/mac/gitian-pluggable-transports.yml | 12 +++++++-----
gitian/versions | 4 ++--
gitian/versions.alpha | 4 ++--
gitian/versions.beta | 4 ++--
gitian/versions.nightly | 4 ++--
5 files changed, 15 insertions(+), 13 deletions(-)
diff --git a/gitian/descriptors/mac/gitian-pluggable-transports.yml b/gitian/descriptors/mac/gitian-pluggable-transports.yml
index 33b134e..519a3ee 100644
--- a/gitian/descriptors/mac/gitian-pluggable-transports.yml
+++ b/gitian/descriptors/mac/gitian-pluggable-transports.yml
@@ -48,6 +48,7 @@ files:
- "go14.tar.gz"
- "go.tar.gz"
- "apple-uni-sdk-10.6_20110407-0.flosoft1_i386.deb"
+- "MacOSX10.7.sdk.tar.gz"
- "multiarch-darwin11-cctools127.2-gcc42-5666.3-llvmgcc42-2336.1-Linux-120724.tar.xz"
- "dzip.sh"
- "gmp-mac64-utils.zip"
@@ -82,6 +83,8 @@ script: |
export PATH="/usr/sbin:/sbin:$PATH"
sudo dpkg -i *.deb
tar xaf multiarch-darwin*tar.xz
+ # The 10.7 SDK is needed for Go: https://bugs.torproject.org/20023#comment:6
+ tar xaf MacOSX10.7.sdk.tar.gz
export PATH="$PATH:$HOME/build/apple-osx/bin/"
if [ "z$INCLUDE_FTE" = "z1" ]; then
unzip -d $INSTDIR gmp-mac64-utils.zip
@@ -99,10 +102,6 @@ script: |
export CXX=$HOME/build/apple-osx/bin/i686-apple-darwin11-g++
# http://bugs.python.org/issue9437
export LDSHARED="$CC -pthread -shared"
- # XXX Clean up these flags?
- export CFLAGS="-m64 -I/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/include/ -I/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/ -I. -L/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/ -L/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/system/ -F/usr/lib/apple/SDKs/MacOSX10.6.sdk/System/Library/Frameworks -mmacosx-version-min=10.5 -L/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/i686-apple-darwin10/4.2.1$FTE_EXTRA_CFLAGS"
- export CXXFLAGS="-m64 -I/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/include/ -I/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/ -I. -L/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/ -L/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/system/ -F/usr/lib/apple/SDKs/MacOSX10.6.sdk/System/Library/Frameworks -mmacosx-version-min=10.5 -L/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/i686-apple-darwin10/4.2.1$FTE_EXTRA_CFLAGS"
- export LDFLAGS="-L/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/ -L/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/system/ -F/usr/lib/apple/SDKs/MacOSX10.6.sdk/System/Library/Frameworks -mmacosx-version-min=10.5"
# Building go 1.4.x
# This is needed to bootstrap the go that we actually use
@@ -122,7 +121,7 @@ script: |
# https://github.com/golang/go/issues/15457
CC_FOR_TARGET="$(pwd)/cc-for-target"
echo "#!/bin/sh" > "$CC_FOR_TARGET"
- echo "exec $CC $CFLAGS $LDFLAGS \"\$@\"" >> "$CC_FOR_TARGET"
+ echo "exec $CC $CFLAGS $LDFLAGS -isysroot $HOME/build/MacOSX10.7.sdk -std=gnu99 \"\$@\"" >> "$CC_FOR_TARGET"
chmod +x "$CC_FOR_TARGET"
# http://golang.org/doc/install/source#environment
export GOPATH="$HOME/go"
@@ -130,6 +129,9 @@ script: |
export GOARCH=386
tar xvf go.tar.gz
cd go/src
+ # Remove a preprocessor directive that causes problems when building with the 10.7 SDK.
+ # https://github.com/golang/go/issues/17732
+ sed -i -e '/^#cgo CFLAGS:/s/-D__MAC_OS_X_VERSION_MAX_ALLOWED=1060//' crypto/x509/root_cgo_darwin.go
CGO_ENABLED=1 CC_FOR_TARGET="$CC_FOR_TARGET" CC= CFLAGS= LDFLAGS= ./make.bash
cd ../..
export PATH="$PATH:$PWD/go/bin"
diff --git a/gitian/versions b/gitian/versions
index 784b7ea..92d7125 100755
--- a/gitian/versions
+++ b/gitian/versions
@@ -62,7 +62,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.6.3
+GO_VER=1.7.3
NSIS_VER=2.51
## File names for the source packages
@@ -114,7 +114,7 @@ PY2EXE_HASH=610a8800de3d973ed5ed4ac505ab42ad058add18a68609ac09e6cf3598ef056c
SETUPTOOLS_HASH=75d288687066ed124311d6ca5f40ffa92a0e81adcd7fff318c6e84082713cf39
PARSLEY_HASH=50d30cee70770fd44db7cea421cb2fb75af247c3a1cd54885c06b30a7c85dd23
GO14_HASH=9947fc705b0b841b5938c48b22dc33e9647ec0752bae66e50278df4f23f64959
-GO_HASH=6326aeed5f86cf18f16d6dc831405614f855e2d416a91fd3fdc334f772345b00
+GO_HASH=79430a0027a09b0b3ad57e214c4c1acfdd7af290961dd08d322818895af1ef44
NSIS_HASH=43d4c9209847e35eb6e2c7cd5a7586e1445374c056c2c7899e40a080e17a1be7
NSIS_DEBIAN_HASH=1dee6957b4a4b8dfe69bcf28bc7f301a13b96b3fa5a394e36c8926ae781e774a
GCC_HASH=b7dafdf89cbb0e20333dbf5b5349319ae06e3d1a30bf3515b5488f7e89dca5ad
diff --git a/gitian/versions.alpha b/gitian/versions.alpha
index d6044ce..68be3f3 100755
--- a/gitian/versions.alpha
+++ b/gitian/versions.alpha
@@ -62,7 +62,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.6.3
+GO_VER=1.7.3
NSIS_VER=2.51
## File names for the source packages
@@ -114,7 +114,7 @@ PY2EXE_HASH=610a8800de3d973ed5ed4ac505ab42ad058add18a68609ac09e6cf3598ef056c
SETUPTOOLS_HASH=75d288687066ed124311d6ca5f40ffa92a0e81adcd7fff318c6e84082713cf39
PARSLEY_HASH=50d30cee70770fd44db7cea421cb2fb75af247c3a1cd54885c06b30a7c85dd23
GO14_HASH=9947fc705b0b841b5938c48b22dc33e9647ec0752bae66e50278df4f23f64959
-GO_HASH=6326aeed5f86cf18f16d6dc831405614f855e2d416a91fd3fdc334f772345b00
+GO_HASH=79430a0027a09b0b3ad57e214c4c1acfdd7af290961dd08d322818895af1ef44
NSIS_HASH=43d4c9209847e35eb6e2c7cd5a7586e1445374c056c2c7899e40a080e17a1be7
NSIS_DEBIAN_HASH=1dee6957b4a4b8dfe69bcf28bc7f301a13b96b3fa5a394e36c8926ae781e774a
GCC_HASH=b7dafdf89cbb0e20333dbf5b5349319ae06e3d1a30bf3515b5488f7e89dca5ad
diff --git a/gitian/versions.beta b/gitian/versions.beta
index 1ff14b8..e19f53b 100755
--- a/gitian/versions.beta
+++ b/gitian/versions.beta
@@ -49,7 +49,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.6.3
+GO_VER=1.7.3
## File names for the source packages
OPENSSL_PACKAGE=openssl-${OPENSSL_VER}.tar.gz
@@ -96,7 +96,7 @@ PY2EXE_HASH=610a8800de3d973ed5ed4ac505ab42ad058add18a68609ac09e6cf3598ef056c
SETUPTOOLS_HASH=75d288687066ed124311d6ca5f40ffa92a0e81adcd7fff318c6e84082713cf39
PARSLEY_HASH=50d30cee70770fd44db7cea421cb2fb75af247c3a1cd54885c06b30a7c85dd23
GO14_HASH=9947fc705b0b841b5938c48b22dc33e9647ec0752bae66e50278df4f23f64959
-GO_HASH=6326aeed5f86cf18f16d6dc831405614f855e2d416a91fd3fdc334f772345b00
+GO_HASH=79430a0027a09b0b3ad57e214c4c1acfdd7af290961dd08d322818895af1ef44
STIXMATHFONT_HASH=e3b0f712e2644438eee2d0dcd2b10b2d54f1b972039de95b2f8e800bae1adbd8
NOTOEMOJIFONT_HASH=415dc6290378574135b64c808dc640c1df7531973290c4970c51fdeb849cb0c5
NOTOJPFONT_HASH=3e8146c4ce0945f255cb9dbc12b392380af80bd117e0a60eae555c99c7e618da
diff --git a/gitian/versions.nightly b/gitian/versions.nightly
index f4475bc..75cb02b 100755
--- a/gitian/versions.nightly
+++ b/gitian/versions.nightly
@@ -69,7 +69,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.6.3
+GO_VER=1.7.3
NSIS_VER=2.51
## File names for the source packages
@@ -121,7 +121,7 @@ PY2EXE_HASH=610a8800de3d973ed5ed4ac505ab42ad058add18a68609ac09e6cf3598ef056c
SETUPTOOLS_HASH=75d288687066ed124311d6ca5f40ffa92a0e81adcd7fff318c6e84082713cf39
PARSLEY_HASH=50d30cee70770fd44db7cea421cb2fb75af247c3a1cd54885c06b30a7c85dd23
GO14_HASH=9947fc705b0b841b5938c48b22dc33e9647ec0752bae66e50278df4f23f64959
-GO_HASH=6326aeed5f86cf18f16d6dc831405614f855e2d416a91fd3fdc334f772345b00
+GO_HASH=79430a0027a09b0b3ad57e214c4c1acfdd7af290961dd08d322818895af1ef44
NSIS_HASH=43d4c9209847e35eb6e2c7cd5a7586e1445374c056c2c7899e40a080e17a1be7
NSIS_DEBIAN_HASH=1dee6957b4a4b8dfe69bcf28bc7f301a13b96b3fa5a394e36c8926ae781e774a
GCC_HASH=b7dafdf89cbb0e20333dbf5b5349319ae06e3d1a30bf3515b5488f7e89dca5ad
1
0

[tor-browser-bundle/hardened-builds] Bug 19646: Bump meek tag to 0.25
by gk@torproject.org 08 Nov '16
by gk@torproject.org 08 Nov '16
08 Nov '16
commit 0502b7aa79e336d826c80ed78800388ff573a60a
Author: Georg Koppen <gk(a)torproject.org>
Date: Tue Nov 8 13:33:24 2016 +0000
Bug 19646: Bump meek tag to 0.25
---
gitian/versions | 2 +-
gitian/versions.alpha | 2 +-
gitian/versions.beta | 2 +-
gitian/versions.nightly | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/gitian/versions b/gitian/versions
index 6118eac..d1dfa22 100755
--- a/gitian/versions
+++ b/gitian/versions
@@ -29,7 +29,7 @@ FTEPROXY_TAG=597f8378f6f4f3de570b8e1064c2e4cb8d67fbd0 # tag 0.2.19
LIBDMG_TAG=dfd5e5cc3dc1191e37d3c3a6118975afdd1d7014
TXSOCKSX_TAG=216eb0894a1755872f4789f9458aa6cf543b8433 # unsigned habnabit/1.13.0.2
GOPTLIB_TAG=0.5
-MEEK_TAG=0.24
+MEEK_TAG=0.25
FAKETIME_TAG=70aa6b394d9341522dffe8a5a5cf5929e82cc6b9 # unsigned v0.9.6
GOED25519_TAG=c4161f4c7483313562781c61b9a20aba73daf9de
GOSIPHASH_TAG=42ba037e748c9062a75e0924705c43b893edefcd
diff --git a/gitian/versions.alpha b/gitian/versions.alpha
index 8018692..02e2bbd 100755
--- a/gitian/versions.alpha
+++ b/gitian/versions.alpha
@@ -37,7 +37,7 @@ FTEPROXY_TAG=597f8378f6f4f3de570b8e1064c2e4cb8d67fbd0 # tag 0.2.19
LIBDMG_TAG=dfd5e5cc3dc1191e37d3c3a6118975afdd1d7014
TXSOCKSX_TAG=216eb0894a1755872f4789f9458aa6cf543b8433 # unsigned habnabit/1.13.0.2
GOPTLIB_TAG=0.5
-MEEK_TAG=0.24
+MEEK_TAG=0.25
FAKETIME_TAG=70aa6b394d9341522dffe8a5a5cf5929e82cc6b9 # unsigned v0.9.6
GOED25519_TAG=c4161f4c7483313562781c61b9a20aba73daf9de
GOSIPHASH_TAG=42ba037e748c9062a75e0924705c43b893edefcd
diff --git a/gitian/versions.beta b/gitian/versions.beta
index f9fb037..6444915 100755
--- a/gitian/versions.beta
+++ b/gitian/versions.beta
@@ -28,7 +28,7 @@ FTEPROXY_TAG=597f8378f6f4f3de570b8e1064c2e4cb8d67fbd0 # tag 0.2.19
LIBDMG_TAG=dfd5e5cc3dc1191e37d3c3a6118975afdd1d7014
TXSOCKSX_TAG=216eb0894a1755872f4789f9458aa6cf543b8433 # unsigned habnabit/1.13.0.2
GOPTLIB_TAG=0.2
-MEEK_TAG=0.18
+MEEK_TAG=0.25
NOTOFONTS_TAG=720e34851382ee3c1ef024d8dffb68ffbfb234c2
GITIAN_TAG=tor-browser-builder-3.x-6
diff --git a/gitian/versions.nightly b/gitian/versions.nightly
index b3ec60f..ffa3809 100755
--- a/gitian/versions.nightly
+++ b/gitian/versions.nightly
@@ -40,7 +40,7 @@ FTEPROXY_TAG=master
LIBDMG_TAG=dfd5e5cc3dc1191e37d3c3a6118975afdd1d7014
TXSOCKSX_TAG=216eb0894a1755872f4789f9458aa6cf543b8433 # unsigned habnabit/1.13.0.2
GOPTLIB_TAG=master
-MEEK_TAG=0.24
+MEEK_TAG=0.25
FAKETIME_TAG=70aa6b394d9341522dffe8a5a5cf5929e82cc6b9 # unsigned v0.9.6
GOED25519_TAG=c4161f4c7483313562781c61b9a20aba73daf9de
GOSIPHASH_TAG=42ba037e748c9062a75e0924705c43b893edefcd
1
0

08 Nov '16
commit bd1da40b8ac70aabc1c1793d649430a1dcbbc1f8
Author: Georg Koppen <gk(a)torproject.org>
Date: Tue Nov 8 13:33:24 2016 +0000
Bug 19646: Bump meek tag to 0.25
---
gitian/versions | 2 +-
gitian/versions.alpha | 2 +-
gitian/versions.beta | 2 +-
gitian/versions.nightly | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/gitian/versions b/gitian/versions
index 85b2a7a..de92243 100755
--- a/gitian/versions
+++ b/gitian/versions
@@ -33,7 +33,7 @@ FTEPROXY_TAG=597f8378f6f4f3de570b8e1064c2e4cb8d67fbd0 # tag 0.2.19
LIBDMG_TAG=dfd5e5cc3dc1191e37d3c3a6118975afdd1d7014
TXSOCKSX_TAG=216eb0894a1755872f4789f9458aa6cf543b8433 # unsigned habnabit/1.13.0.2
GOPTLIB_TAG=0.5
-MEEK_TAG=0.24
+MEEK_TAG=0.25
FAKETIME_TAG=70aa6b394d9341522dffe8a5a5cf5929e82cc6b9 # unsigned v0.9.6
GOED25519_TAG=c4161f4c7483313562781c61b9a20aba73daf9de
GOSIPHASH_TAG=42ba037e748c9062a75e0924705c43b893edefcd
diff --git a/gitian/versions.alpha b/gitian/versions.alpha
index 97cf78f..65acf45 100755
--- a/gitian/versions.alpha
+++ b/gitian/versions.alpha
@@ -33,7 +33,7 @@ FTEPROXY_TAG=597f8378f6f4f3de570b8e1064c2e4cb8d67fbd0 # tag 0.2.19
LIBDMG_TAG=dfd5e5cc3dc1191e37d3c3a6118975afdd1d7014
TXSOCKSX_TAG=216eb0894a1755872f4789f9458aa6cf543b8433 # unsigned habnabit/1.13.0.2
GOPTLIB_TAG=0.5
-MEEK_TAG=0.24
+MEEK_TAG=0.25
FAKETIME_TAG=70aa6b394d9341522dffe8a5a5cf5929e82cc6b9 # unsigned v0.9.6
GOED25519_TAG=c4161f4c7483313562781c61b9a20aba73daf9de
GOSIPHASH_TAG=42ba037e748c9062a75e0924705c43b893edefcd
diff --git a/gitian/versions.beta b/gitian/versions.beta
index 8452954..2564e41 100755
--- a/gitian/versions.beta
+++ b/gitian/versions.beta
@@ -27,7 +27,7 @@ FTEPROXY_TAG=597f8378f6f4f3de570b8e1064c2e4cb8d67fbd0 # tag 0.2.19
LIBDMG_TAG=dfd5e5cc3dc1191e37d3c3a6118975afdd1d7014
TXSOCKSX_TAG=216eb0894a1755872f4789f9458aa6cf543b8433 # unsigned habnabit/1.13.0.2
GOPTLIB_TAG=0.2
-MEEK_TAG=0.18
+MEEK_TAG=0.25
NOTOFONTS_TAG=720e34851382ee3c1ef024d8dffb68ffbfb234c2
GITIAN_TAG=tor-browser-builder-3.x-6
diff --git a/gitian/versions.nightly b/gitian/versions.nightly
index 22e9742..781d4ae 100755
--- a/gitian/versions.nightly
+++ b/gitian/versions.nightly
@@ -40,7 +40,7 @@ FTEPROXY_TAG=master
LIBDMG_TAG=dfd5e5cc3dc1191e37d3c3a6118975afdd1d7014
TXSOCKSX_TAG=216eb0894a1755872f4789f9458aa6cf543b8433 # unsigned habnabit/1.13.0.2
GOPTLIB_TAG=master
-MEEK_TAG=0.24
+MEEK_TAG=0.25
FAKETIME_TAG=70aa6b394d9341522dffe8a5a5cf5929e82cc6b9 # unsigned v0.9.6
GOED25519_TAG=c4161f4c7483313562781c61b9a20aba73daf9de
GOSIPHASH_TAG=42ba037e748c9062a75e0924705c43b893edefcd
1
0

08 Nov '16
commit 3308ef8028c10c900ee5c914cf9bb653ec498167
Author: Georg Koppen <gk(a)torproject.org>
Date: Tue Nov 8 13:33:24 2016 +0000
Bug 19646: Bump meek tag to 0.25
---
gitian/versions | 2 +-
gitian/versions.alpha | 2 +-
gitian/versions.beta | 2 +-
gitian/versions.nightly | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/gitian/versions b/gitian/versions
index a61c4aa..71faeff 100755
--- a/gitian/versions
+++ b/gitian/versions
@@ -33,7 +33,7 @@ FTEPROXY_TAG=597f8378f6f4f3de570b8e1064c2e4cb8d67fbd0 # tag 0.2.19
LIBDMG_TAG=dfd5e5cc3dc1191e37d3c3a6118975afdd1d7014
TXSOCKSX_TAG=216eb0894a1755872f4789f9458aa6cf543b8433 # unsigned habnabit/1.13.0.2
GOPTLIB_TAG=0.5
-MEEK_TAG=0.24
+MEEK_TAG=0.25
FAKETIME_TAG=70aa6b394d9341522dffe8a5a5cf5929e82cc6b9 # unsigned v0.9.6
GOED25519_TAG=c4161f4c7483313562781c61b9a20aba73daf9de
GOSIPHASH_TAG=42ba037e748c9062a75e0924705c43b893edefcd
diff --git a/gitian/versions.alpha b/gitian/versions.alpha
index 90f8d4a..5dd5488 100755
--- a/gitian/versions.alpha
+++ b/gitian/versions.alpha
@@ -33,7 +33,7 @@ FTEPROXY_TAG=597f8378f6f4f3de570b8e1064c2e4cb8d67fbd0 # tag 0.2.19
LIBDMG_TAG=dfd5e5cc3dc1191e37d3c3a6118975afdd1d7014
TXSOCKSX_TAG=216eb0894a1755872f4789f9458aa6cf543b8433 # unsigned habnabit/1.13.0.2
GOPTLIB_TAG=0.5
-MEEK_TAG=0.24
+MEEK_TAG=0.25
FAKETIME_TAG=70aa6b394d9341522dffe8a5a5cf5929e82cc6b9 # unsigned v0.9.6
GOED25519_TAG=c4161f4c7483313562781c61b9a20aba73daf9de
GOSIPHASH_TAG=42ba037e748c9062a75e0924705c43b893edefcd
diff --git a/gitian/versions.beta b/gitian/versions.beta
index 6226f77..222f529 100755
--- a/gitian/versions.beta
+++ b/gitian/versions.beta
@@ -27,7 +27,7 @@ FTEPROXY_TAG=597f8378f6f4f3de570b8e1064c2e4cb8d67fbd0 # tag 0.2.19
LIBDMG_TAG=dfd5e5cc3dc1191e37d3c3a6118975afdd1d7014
TXSOCKSX_TAG=216eb0894a1755872f4789f9458aa6cf543b8433 # unsigned habnabit/1.13.0.2
GOPTLIB_TAG=0.2
-MEEK_TAG=0.18
+MEEK_TAG=0.25
NOTOFONTS_TAG=720e34851382ee3c1ef024d8dffb68ffbfb234c2
GITIAN_TAG=tor-browser-builder-3.x-6
diff --git a/gitian/versions.nightly b/gitian/versions.nightly
index eaf1a28..f9cfbfb 100755
--- a/gitian/versions.nightly
+++ b/gitian/versions.nightly
@@ -40,7 +40,7 @@ FTEPROXY_TAG=master
LIBDMG_TAG=dfd5e5cc3dc1191e37d3c3a6118975afdd1d7014
TXSOCKSX_TAG=216eb0894a1755872f4789f9458aa6cf543b8433 # unsigned habnabit/1.13.0.2
GOPTLIB_TAG=master
-MEEK_TAG=0.24
+MEEK_TAG=0.25
FAKETIME_TAG=70aa6b394d9341522dffe8a5a5cf5929e82cc6b9 # unsigned v0.9.6
GOED25519_TAG=c4161f4c7483313562781c61b9a20aba73daf9de
GOSIPHASH_TAG=42ba037e748c9062a75e0924705c43b893edefcd
1
0

08 Nov '16
commit 0194cfb1ce4019d9d34ac3fa32a05ae242bd4c55
Author: Georg Koppen <gk(a)torproject.org>
Date: Tue Nov 8 11:44:49 2016 +0000
Updating dgoulet's bridge
---
Bundle-Data/PTConfigs/bridge_prefs.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Bundle-Data/PTConfigs/bridge_prefs.js b/Bundle-Data/PTConfigs/bridge_prefs.js
index c4752c1..e188c26 100644
--- a/Bundle-Data/PTConfigs/bridge_prefs.js
+++ b/Bundle-Data/PTConfigs/bridge_prefs.js
@@ -33,7 +33,7 @@ pref("extensions.torlauncher.default_bridge.obfs4.15", "obfs4 154.35.22.9:80 C73
pref("extensions.torlauncher.default_bridge.obfs4.16", "obfs4 154.35.22.9:443 C73ADBAC8ADFDBF0FC0F3F4E8091C0107D093716 cert=gEGKc5WN/bSjFa6UkG9hOcft1tuK+cV8hbZ0H6cqXiMPLqSbCh2Q3PHe5OOr6oMVORhoJA iat-mode=0");
pref("extensions.torlauncher.default_bridge.obfs4.17", "obfs4 154.35.22.12:4148 00DC6C4FA49A65BD1472993CF6730D54F11E0DBB cert=N86E9hKXXXVz6G7w2z8wFfhIDztDAzZ/3poxVePHEYjbKDWzjkRDccFMAnhK75fc65pYSg iat-mode=0");
pref("extensions.torlauncher.default_bridge.obfs4.18", "obfs4 154.35.22.13:6041 FE7840FE1E21FE0A0639ED176EDA00A3ECA1E34D cert=fKnzxr+m+jWXXQGCaXe4f2gGoPXMzbL+bTBbXMYXuK0tMotd+nXyS33y2mONZWU29l81CA iat-mode=0");
-pref("extensions.torlauncher.default_bridge.obfs4.19", "obfs4 192.95.36.142:443 445AAA9309486821673F1BAD2F5DA31D57BA14A1 cert=G2f9hXO446LRm6zZo6i5ayMwk7q9PzcGu5ZNCbx+rYsoyJvWLl/RenYJeOZfsNc4m+KcSw iat-mode=0");
+pref("extensions.torlauncher.default_bridge.obfs4.19", "obfs4 192.95.36.142:443 CDF2E852BF539B82BD10E27E9115A31734E378C2 cert=qUVQ0srL1JI/vO6V6m/24anYXiJD3QP2HgzUKQtQ7GRqqUvs7P+tG43RtAqdhLOALP7DJQ iat-mode=0");
// Not used yet
// pref("extensions.torlauncher.default_bridge.obfs4.20", "obfs4 85.17.30.79:443 FC259A04A328A07FED1413E9FC6526530D9FD87A cert=RutxZlu8BtyP+y0NX7bAVD41+J/qXNhHUrKjFkRSdiBAhIHIQLhKQ2HxESAKZprn/lR3KA iat-mode=0");
1
0
commit 08da98bfd734581660db11e0cc599a5a362fdccf
Author: Georg Koppen <gk(a)torproject.org>
Date: Tue Nov 8 11:44:49 2016 +0000
Updating dgoulet's bridge
---
Bundle-Data/PTConfigs/bridge_prefs.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Bundle-Data/PTConfigs/bridge_prefs.js b/Bundle-Data/PTConfigs/bridge_prefs.js
index c4752c1..e188c26 100644
--- a/Bundle-Data/PTConfigs/bridge_prefs.js
+++ b/Bundle-Data/PTConfigs/bridge_prefs.js
@@ -33,7 +33,7 @@ pref("extensions.torlauncher.default_bridge.obfs4.15", "obfs4 154.35.22.9:80 C73
pref("extensions.torlauncher.default_bridge.obfs4.16", "obfs4 154.35.22.9:443 C73ADBAC8ADFDBF0FC0F3F4E8091C0107D093716 cert=gEGKc5WN/bSjFa6UkG9hOcft1tuK+cV8hbZ0H6cqXiMPLqSbCh2Q3PHe5OOr6oMVORhoJA iat-mode=0");
pref("extensions.torlauncher.default_bridge.obfs4.17", "obfs4 154.35.22.12:4148 00DC6C4FA49A65BD1472993CF6730D54F11E0DBB cert=N86E9hKXXXVz6G7w2z8wFfhIDztDAzZ/3poxVePHEYjbKDWzjkRDccFMAnhK75fc65pYSg iat-mode=0");
pref("extensions.torlauncher.default_bridge.obfs4.18", "obfs4 154.35.22.13:6041 FE7840FE1E21FE0A0639ED176EDA00A3ECA1E34D cert=fKnzxr+m+jWXXQGCaXe4f2gGoPXMzbL+bTBbXMYXuK0tMotd+nXyS33y2mONZWU29l81CA iat-mode=0");
-pref("extensions.torlauncher.default_bridge.obfs4.19", "obfs4 192.95.36.142:443 445AAA9309486821673F1BAD2F5DA31D57BA14A1 cert=G2f9hXO446LRm6zZo6i5ayMwk7q9PzcGu5ZNCbx+rYsoyJvWLl/RenYJeOZfsNc4m+KcSw iat-mode=0");
+pref("extensions.torlauncher.default_bridge.obfs4.19", "obfs4 192.95.36.142:443 CDF2E852BF539B82BD10E27E9115A31734E378C2 cert=qUVQ0srL1JI/vO6V6m/24anYXiJD3QP2HgzUKQtQ7GRqqUvs7P+tG43RtAqdhLOALP7DJQ iat-mode=0");
// Not used yet
// pref("extensions.torlauncher.default_bridge.obfs4.20", "obfs4 85.17.30.79:443 FC259A04A328A07FED1413E9FC6526530D9FD87A cert=RutxZlu8BtyP+y0NX7bAVD41+J/qXNhHUrKjFkRSdiBAhIHIQLhKQ2HxESAKZprn/lR3KA iat-mode=0");
1
0
commit 6f0f3056e1cc896ee56ff03d5e306a672b17b75a
Author: Georg Koppen <gk(a)torproject.org>
Date: Tue Nov 8 11:44:49 2016 +0000
Updating dgoulet's bridge
---
Bundle-Data/PTConfigs/bridge_prefs.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Bundle-Data/PTConfigs/bridge_prefs.js b/Bundle-Data/PTConfigs/bridge_prefs.js
index c4752c1..e188c26 100644
--- a/Bundle-Data/PTConfigs/bridge_prefs.js
+++ b/Bundle-Data/PTConfigs/bridge_prefs.js
@@ -33,7 +33,7 @@ pref("extensions.torlauncher.default_bridge.obfs4.15", "obfs4 154.35.22.9:80 C73
pref("extensions.torlauncher.default_bridge.obfs4.16", "obfs4 154.35.22.9:443 C73ADBAC8ADFDBF0FC0F3F4E8091C0107D093716 cert=gEGKc5WN/bSjFa6UkG9hOcft1tuK+cV8hbZ0H6cqXiMPLqSbCh2Q3PHe5OOr6oMVORhoJA iat-mode=0");
pref("extensions.torlauncher.default_bridge.obfs4.17", "obfs4 154.35.22.12:4148 00DC6C4FA49A65BD1472993CF6730D54F11E0DBB cert=N86E9hKXXXVz6G7w2z8wFfhIDztDAzZ/3poxVePHEYjbKDWzjkRDccFMAnhK75fc65pYSg iat-mode=0");
pref("extensions.torlauncher.default_bridge.obfs4.18", "obfs4 154.35.22.13:6041 FE7840FE1E21FE0A0639ED176EDA00A3ECA1E34D cert=fKnzxr+m+jWXXQGCaXe4f2gGoPXMzbL+bTBbXMYXuK0tMotd+nXyS33y2mONZWU29l81CA iat-mode=0");
-pref("extensions.torlauncher.default_bridge.obfs4.19", "obfs4 192.95.36.142:443 445AAA9309486821673F1BAD2F5DA31D57BA14A1 cert=G2f9hXO446LRm6zZo6i5ayMwk7q9PzcGu5ZNCbx+rYsoyJvWLl/RenYJeOZfsNc4m+KcSw iat-mode=0");
+pref("extensions.torlauncher.default_bridge.obfs4.19", "obfs4 192.95.36.142:443 CDF2E852BF539B82BD10E27E9115A31734E378C2 cert=qUVQ0srL1JI/vO6V6m/24anYXiJD3QP2HgzUKQtQ7GRqqUvs7P+tG43RtAqdhLOALP7DJQ iat-mode=0");
// Not used yet
// pref("extensions.torlauncher.default_bridge.obfs4.20", "obfs4 85.17.30.79:443 FC259A04A328A07FED1413E9FC6526530D9FD87A cert=RutxZlu8BtyP+y0NX7bAVD41+J/qXNhHUrKjFkRSdiBAhIHIQLhKQ2HxESAKZprn/lR3KA iat-mode=0");
1
0

[tor-browser-bundle/hardened-builds] Bug 20582: move tor-browser specific strings to config.yml
by gk@torproject.org 08 Nov '16
by gk@torproject.org 08 Nov '16
08 Nov '16
commit 4fb93b748090ae3e13201f76dac033a0350116e9
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Sat Nov 5 20:23:02 2016 +0100
Bug 20582: move tor-browser specific strings to config.yml
---
tools/update-responses/config.yml | 5 +++++
tools/update-responses/update_responses | 26 +++++++++++++++-----------
2 files changed, 20 insertions(+), 11 deletions(-)
diff --git a/tools/update-responses/config.yml b/tools/update-responses/config.yml
index f7edb24..022cea2 100644
--- a/tools/update-responses/config.yml
+++ b/tools/update-responses/config.yml
@@ -1,4 +1,9 @@
---
+appname_marfile: tor-browser
+appname_bundle_osx: TorBrowser
+appname_bundle_linux: tor-browser
+appname_bundle_win: torbrowser-install
+appdir_osx: TorBrowser.app
releases_dir: ../../gitian
download:
archive_url: https://archive.torproject.org/tor-package-archive/torbrowser
diff --git a/tools/update-responses/update_responses b/tools/update-responses/update_responses
index 69535c9..bef5615 100755
--- a/tools/update-responses/update_responses
+++ b/tools/update-responses/update_responses
@@ -82,13 +82,14 @@ sub get_sha512_hex_of_file {
sub get_version_files {
my ($config, $version) = @_;
return if $config->{versions}{$version}{files};
+ my $appname = $config->{appname_marfile};
my $files = {};
my $vdir = "$releases_dir/$version";
my $download_url = "$config->{download}{mars_url}/$version";
opendir(my $d, $vdir) or exit_error "Error opening directory $vdir";
foreach my $file (readdir $d) {
next unless -f "$vdir/$file";
- if ($file =~ m/^tor-browser-([^-]+)-${version}_(.+)\.mar$/) {
+ if ($file =~ m/^$appname-([^-]+)-${version}_(.+)\.mar$/) {
my ($os, $lang) = ($1, $2);
$files->{$os}{$lang}{complete} = {
type => 'complete',
@@ -99,7 +100,7 @@ sub get_version_files {
};
next;
}
- if ($file =~ m/^tor-browser-([^-]+)-(.+)-${version}_(.+)\.incremental\.mar$/) {
+ if ($file =~ m/^$appname-([^-]+)-(.+)-${version}_(.+)\.incremental\.mar$/) {
my ($os, $from_version, $lang) = ($1, $2, $3);
$files->{$os}{$lang}{partial}{$from_version} = {
type => 'partial',
@@ -123,11 +124,11 @@ sub get_version_downloads {
foreach my $file (readdir $d) {
next unless -f "$vdir/$file";
my ($os, $lang);
- if ($file =~ m/^TorBrowser-$version-osx64_(.+).dmg$/) {
+ if ($file =~ m/^$config->{appname_bundle_osx}-$version-osx64_(.+).dmg$/) {
($os, $lang) = ('osx64', $1);
- } elsif ($file =~ m/^tor-browser-(linux32|linux64)-${version}_(.+).tar.xz$/) {
+ } elsif ($file =~ m/^$config->{appname_bundle_linux}-(linux32|linux64)-${version}_(.+).tar.xz$/) {
($os, $lang) = ($1, $2);
- } elsif ($file =~ m/^torbrowser-install-${version}_(.+).exe$/) {
+ } elsif ($file =~ m/^$config->{appname_bundle_win}-${version}_(.+).exe$/) {
($os, $lang) = ('win32', $1);
} else {
next;
@@ -168,13 +169,14 @@ sub extract_mar {
}
sub mar_filename {
- my ($version, $os, $lang) = @_;
- "$releases_dir/$version/tor-browser-$os-${version}_$lang.mar";
+ my ($appname, $version, $os, $lang) = @_;
+ "$releases_dir/$version/$appname-$os-${version}_$lang.mar";
}
sub create_incremental_mar {
my ($config, $pm, $from_version, $new_version, $os, $lang) = @_;
- my $mar_file = "tor-browser-$os-${from_version}-${new_version}_$lang.incremental.mar";
+ my $appname = $config->{appname_marfile};
+ my $mar_file = "$appname-$os-${from_version}-${new_version}_$lang.incremental.mar";
print "Starting $mar_file\n";
my $mar_file_path = "$releases_dir/$new_version/$mar_file";
my $download_url = "$config->{download}{mars_url}/$new_version";
@@ -191,8 +193,8 @@ sub create_incremental_mar {
};
return if $pm->start($finished_file);
my $tmpdir = File::Temp->newdir();
- extract_mar(mar_filename($from_version, $os, $lang), "$tmpdir/A");
- extract_mar(mar_filename($new_version, $os, $lang), "$tmpdir/B");
+ extract_mar(mar_filename($appname, $from_version, $os, $lang), "$tmpdir/A");
+ extract_mar(mar_filename($appname, $new_version, $os, $lang), "$tmpdir/B");
my ($out, $err, $success) = capture_exec('make_incremental_update.sh',
$mar_file_path, "$tmpdir/A", "$tmpdir/B");
if (!$success) {
@@ -246,7 +248,9 @@ sub get_buildinfos {
foreach my $lang (keys %{$files->{$os}}) {
next unless $files->{$os}{$lang}{complete};
my $tmpdir = File::Temp->newdir();
- extract_mar(mar_filename($version, $os, $lang), "$tmpdir");
+ extract_mar(
+ mar_filename($config->{appname_marfile}, $version, $os, $lang),
+ "$tmpdir");
my $appfile = "$tmpdir/application.ini" if -f "$tmpdir/application.ini";
$appfile = "$tmpdir/Contents/Resources/application.ini"
if -f "$tmpdir/Contents/Resources/application.ini";
1
0

[tor-browser-bundle/master] Bug 20582: move tor-browser specific strings to config.yml
by gk@torproject.org 08 Nov '16
by gk@torproject.org 08 Nov '16
08 Nov '16
commit 7cf56c0d1732a6eccb6bdf93fe0f1fdb0749b4a2
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Sat Nov 5 20:23:02 2016 +0100
Bug 20582: move tor-browser specific strings to config.yml
---
tools/update-responses/config.yml | 5 +++++
tools/update-responses/update_responses | 30 +++++++++++++++++-------------
2 files changed, 22 insertions(+), 13 deletions(-)
diff --git a/tools/update-responses/config.yml b/tools/update-responses/config.yml
index 8c047b5..0305733 100644
--- a/tools/update-responses/config.yml
+++ b/tools/update-responses/config.yml
@@ -1,4 +1,9 @@
---
+appname_marfile: tor-browser
+appname_bundle_osx: TorBrowser
+appname_bundle_linux: tor-browser
+appname_bundle_win: torbrowser-install
+appdir_osx: TorBrowser.app
releases_dir: ../../gitian
download:
archive_url: https://archive.torproject.org/tor-package-archive/torbrowser
diff --git a/tools/update-responses/update_responses b/tools/update-responses/update_responses
index bca3386..a89a18a 100755
--- a/tools/update-responses/update_responses
+++ b/tools/update-responses/update_responses
@@ -82,13 +82,14 @@ sub get_sha512_hex_of_file {
sub get_version_files {
my ($config, $version) = @_;
return if $config->{versions}{$version}{files};
+ my $appname = $config->{appname_marfile};
my $files = {};
my $vdir = "$releases_dir/$version";
my $download_url = "$config->{download}{mars_url}/$version";
opendir(my $d, $vdir) or exit_error "Error opening directory $vdir";
foreach my $file (readdir $d) {
next unless -f "$vdir/$file";
- if ($file =~ m/^tor-browser-([^-]+)-${version}_(.+)\.mar$/) {
+ if ($file =~ m/^$appname-([^-]+)-${version}_(.+)\.mar$/) {
my ($os, $lang) = ($1, $2);
$files->{$os}{$lang}{complete} = {
type => 'complete',
@@ -99,7 +100,7 @@ sub get_version_files {
};
next;
}
- if ($file =~ m/^tor-browser-([^-]+)-(.+)-${version}_(.+)\.incremental\.mar$/) {
+ if ($file =~ m/^$appname-([^-]+)-(.+)-${version}_(.+)\.incremental\.mar$/) {
my ($os, $from_version, $lang) = ($1, $2, $3);
$files->{$os}{$lang}{partial}{$from_version} = {
type => 'partial',
@@ -123,11 +124,11 @@ sub get_version_downloads {
foreach my $file (readdir $d) {
next unless -f "$vdir/$file";
my ($os, $lang);
- if ($file =~ m/^TorBrowser-$version-osx64_(.+).dmg$/) {
+ if ($file =~ m/^$config->{appname_bundle_osx}-$version-osx64_(.+).dmg$/) {
($os, $lang) = ('osx64', $1);
- } elsif ($file =~ m/^tor-browser-(linux32|linux64)-${version}_(.+).tar.xz$/) {
+ } elsif ($file =~ m/^$config->{appname_bundle_linux}-(linux32|linux64)-${version}_(.+).tar.xz$/) {
($os, $lang) = ($1, $2);
- } elsif ($file =~ m/^torbrowser-install-${version}_(.+).exe$/) {
+ } elsif ($file =~ m/^$config->{appname_bundle_win}-${version}_(.+).exe$/) {
($os, $lang) = ('win32', $1);
} else {
next;
@@ -168,13 +169,14 @@ sub extract_mar {
}
sub mar_filename {
- my ($version, $os, $lang) = @_;
- "$releases_dir/$version/tor-browser-$os-${version}_$lang.mar";
+ my ($appname, $version, $os, $lang) = @_;
+ "$releases_dir/$version/$appname-$os-${version}_$lang.mar";
}
sub create_incremental_mar {
my ($config, $pm, $from_version, $new_version, $os, $lang) = @_;
- my $mar_file = "tor-browser-$os-${from_version}-${new_version}_$lang.incremental.mar";
+ my $appname = $config->{appname_marfile};
+ my $mar_file = "$appname-$os-${from_version}-${new_version}_$lang.incremental.mar";
my $mar_file_path = "$releases_dir/$new_version/$mar_file";
if ($ENV{MAR_SKIP_EXISTING} && -f $mar_file_path) {
print "Skipping $mar_file\n";
@@ -195,11 +197,11 @@ sub create_incremental_mar {
};
return if $pm->start($finished_file);
my $tmpdir = File::Temp->newdir();
- extract_mar(mar_filename($from_version, $os, $lang), "$tmpdir/A");
- extract_mar(mar_filename($new_version, $os, $lang), "$tmpdir/B");
+ extract_mar(mar_filename($appname, $from_version, $os, $lang), "$tmpdir/A");
+ extract_mar(mar_filename($appname, $new_version, $os, $lang), "$tmpdir/B");
if ($ENV{CHECK_CODESIGNATURE_EXISTS}) {
- unless (-f "$tmpdir/A/TorBrowser.app/Contents/_CodeSignature/CodeResources"
- && -f "$tmpdir/B/TorBrowser.app/Contents/_CodeSignature/CodeResources") {
+ unless (-f "$tmpdir/A/$config->{appdir_osx}/Contents/_CodeSignature/CodeResources"
+ && -f "$tmpdir/B/$config->{appdir_osx}/Contents/_CodeSignature/CodeResources") {
exit_error "Missing code signature while creating $mar_file";
}
}
@@ -256,7 +258,9 @@ sub get_buildinfos {
foreach my $lang (keys %{$files->{$os}}) {
next unless $files->{$os}{$lang}{complete};
my $tmpdir = File::Temp->newdir();
- extract_mar(mar_filename($version, $os, $lang), "$tmpdir");
+ extract_mar(
+ mar_filename($config->{appname_marfile}, $version, $os, $lang),
+ "$tmpdir");
my $appfile = "$tmpdir/application.ini" if -f "$tmpdir/application.ini";
$appfile = "$tmpdir/Contents/Resources/application.ini"
if -f "$tmpdir/Contents/Resources/application.ini";
1
0

[tor-browser/tor-browser-45.4.0esr-6.0-1] fixup! Regression tests for "Omnibox: Add DDG, Startpage, Disconnect, Youtube, Twitter; remove Amazon, eBay, bing"
by gk@torproject.org 08 Nov '16
by gk@torproject.org 08 Nov '16
08 Nov '16
commit 91b048b4a146b32467206f13729a24cc13d506bc
Author: difw <something@something>
Date: Fri Jul 29 09:32:22 2016 -0700
fixup! Regression tests for "Omnibox: Add DDG, Startpage, Disconnect, Youtube, Twitter; remove Amazon, eBay, bing"
Update tests.
---
tbb-tests/browser_tor_omnibox.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tbb-tests/browser_tor_omnibox.js b/tbb-tests/browser_tor_omnibox.js
index 8648551..082dd84 100644
--- a/tbb-tests/browser_tor_omnibox.js
+++ b/tbb-tests/browser_tor_omnibox.js
@@ -8,7 +8,7 @@ function test() {
engineIDs = browserSearchService.getEngines().map(e => e.identifier);
// Check that we have the correct engines installed, in the right order.
- is(engineIDs[0], "disconnect", "Default search engine is disconnect");
+ is(engineIDs[0], "ddg", "Default search engine is disconnect");
is(engineIDs[1], "youtube", "Secondary search engine is youtube");
is(engineIDs[2], "google", "Google is third search engine");
}
1
0

[tor-browser/tor-browser-45.4.0esr-6.0-1] fixup! fixup! Regression tests for "Omnibox: Add DDG, Startpage, Disconnect, Youtube, Twitter; remove Amazon, eBay, bing"
by gk@torproject.org 08 Nov '16
by gk@torproject.org 08 Nov '16
08 Nov '16
commit b21cda730fcbb6a1d6ca7a2dff8533598c01f9db
Author: Georg Koppen <gk(a)torproject.org>
Date: Sat Jul 30 10:36:40 2016 +0000
fixup! fixup! Regression tests for "Omnibox: Add DDG, Startpage, Disconnect, Youtube, Twitter; remove Amazon, eBay, bing"
Fixup typo.
---
tbb-tests/browser_tor_omnibox.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tbb-tests/browser_tor_omnibox.js b/tbb-tests/browser_tor_omnibox.js
index 082dd84..e18b2a8 100644
--- a/tbb-tests/browser_tor_omnibox.js
+++ b/tbb-tests/browser_tor_omnibox.js
@@ -8,7 +8,7 @@ function test() {
engineIDs = browserSearchService.getEngines().map(e => e.identifier);
// Check that we have the correct engines installed, in the right order.
- is(engineIDs[0], "ddg", "Default search engine is disconnect");
+ is(engineIDs[0], "ddg", "Default search engine is duckduckgo");
is(engineIDs[1], "youtube", "Secondary search engine is youtube");
is(engineIDs[2], "google", "Google is third search engine");
}
1
0

[tor-browser/tor-browser-45.4.0esr-6.0-1] fixup! Omnibox: Add DDG, Startpage, Disconnect, Youtube, Twitter; remove Amazon, eBay, bing
by gk@torproject.org 08 Nov '16
by gk@torproject.org 08 Nov '16
08 Nov '16
commit 9e41f6e33dd6798617928768ca20c6525caa0e73
Author: difw <something@something>
Date: Thu Jul 28 12:15:05 2016 -0700
fixup! Omnibox: Add DDG, Startpage, Disconnect, Youtube, Twitter; remove Amazon, eBay, bing
Switch Default to DuckDuckGo HTTPS. Add .onion.
---
browser/app/profile/000-tor-browser.js | 4 ++--
browser/locales/en-US/searchplugins/ddg-onion.xml | 11 +++++++++++
browser/locales/en-US/searchplugins/ddg.xml | 4 ++--
browser/locales/en-US/searchplugins/list.txt | 1 +
4 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/browser/app/profile/000-tor-browser.js b/browser/app/profile/000-tor-browser.js
index c60b341..a5c0e7f 100644
--- a/browser/app/profile/000-tor-browser.js
+++ b/browser/app/profile/000-tor-browser.js
@@ -268,7 +268,7 @@ pref("browser.uiCustomization.state", "{\"placements\":{\"PanelUI-contents\":[\"
// Putting the search engine prefs into this file to fix #11236.
// Default search engine
-pref("browser.search.defaultenginename", "Disconnect");
+pref("browser.search.defaultenginename", "DuckDuckGo");
// Make sure we use the same search engine regardless of locale
pref("browser.search.geoSpecificDefaults", false);
@@ -276,7 +276,7 @@ pref("browser.search.geoSpecificDefaults", false);
// Somewhat surprisingly we get some random behavior if we specify more than
// two search engines as below. See
// https://bugzilla.mozilla.org/show_bug.cgi?id=1126722 for details.
-pref("browser.search.order.extra.1", "Disconnect");
+pref("browser.search.order.extra.1", "DuckDuckGo");
pref("browser.search.order.extra.2", "YouTube");
// Hacks/workarounds: Direct2D seems to crash w/ lots of video cards w/ MinGW?
diff --git a/browser/locales/en-US/searchplugins/ddg-onion.xml b/browser/locales/en-US/searchplugins/ddg-onion.xml
new file mode 100644
index 0000000..009da7e
--- /dev/null
+++ b/browser/locales/en-US/searchplugins/ddg-onion.xml
@@ -0,0 +1,11 @@
+<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
+<ShortName>DuckDuckGoOnion</ShortName>
+<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/html/">
+ <Param name="q" value="{searchTerms}"/>
+</Url>
+<SearchForm>http://3g2upl4pq6kufc4m.onion/html/</SearchForm>
+</SearchPlugin>
+
diff --git a/browser/locales/en-US/searchplugins/ddg.xml b/browser/locales/en-US/searchplugins/ddg.xml
index d82cdbd..aceb0ac 100644
--- a/browser/locales/en-US/searchplugins/ddg.xml
+++ b/browser/locales/en-US/searchplugins/ddg.xml
@@ -22,9 +22,9 @@ AScg7HAnIOz2JyDs/ycg7P8nIOz/JyDs/ycg7P8nIOz/JyDs9icg7HAnIOwBAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAJyDsJicg7IAnIOyzJyDs5icg7OYnIOyzJyDsgCcg7CYAAAAAAAAAAAAAAAAA
AAAA+B8AAPAPAADAAwAAwAMAAIABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAACAAQAAwAMAAMAD
AADwDwAA+B8AAA==</Image>
-<Url type="text/html" method="POST" template="http://3g2upl4pq6kufc4m.onion/html/">
+<Url type="text/html" method="POST" template="https://duckduckgo.com/">
<Param name="q" value="{searchTerms}"/>
</Url>
-<SearchForm>http://3g2upl4pq6kufc4m.onion/html/</SearchForm>
+<SearchForm>https://duckduckgo.com/</SearchForm>
</SearchPlugin>
diff --git a/browser/locales/en-US/searchplugins/list.txt b/browser/locales/en-US/searchplugins/list.txt
index 71b6c0f..0b4f1fb 100644
--- a/browser/locales/en-US/searchplugins/list.txt
+++ b/browser/locales/en-US/searchplugins/list.txt
@@ -2,6 +2,7 @@ disconnect
youtube
twitter
wikipedia
+ddg-onion
startpage
yahoo
google
1
0

[tor-browser-bundle/maint-6.0] Bug 20118: Don't unpack HTTPS Everywhere anymore
by gk@torproject.org 08 Nov '16
by gk@torproject.org 08 Nov '16
08 Nov '16
commit b373d46c616682000ff07029eaa4a113e29b286e
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Sep 9 17:30:44 2016 +0000
Bug 20118: Don't unpack HTTPS Everywhere anymore
Starting with version 5.2.2 HTTPS Everywhere is not unpacked anymore.
We should keep it unpacked as well, especially as that fixes usability
issues like #20033.
---
gitian/descriptors/linux/gitian-bundle.yml | 9 +++------
gitian/descriptors/mac/gitian-bundle.yml | 9 +++------
gitian/descriptors/windows/gitian-bundle.yml | 9 +++------
3 files changed, 9 insertions(+), 18 deletions(-)
diff --git a/gitian/descriptors/linux/gitian-bundle.yml b/gitian/descriptors/linux/gitian-bundle.yml
index 0316148..8086bf5 100644
--- a/gitian/descriptors/linux/gitian-bundle.yml
+++ b/gitian/descriptors/linux/gitian-bundle.yml
@@ -81,7 +81,7 @@ script: |
# directory named tor-browser (instead of tor-browser_en-US). Therefore we
# stage everything under tor-browser-stage to avoid a conflict.
TB_STAGE_DIR=tor-browser-stage
- mkdir -p ${TB_STAGE_DIR}/Browser/TorBrowser/Data/Browser/profile.default/extensions/https-everywhere-eff(a)eff.org
+ mkdir -p ${TB_STAGE_DIR}/Browser/TorBrowser/Data/Browser/profile.default/extensions
mkdir -p ${TB_STAGE_DIR}/Browser/TorBrowser/Data/Browser/profile.meek-http-helper/extensions
mkdir -p ${TB_STAGE_DIR}/Browser/TorBrowser/Data/Browser/Caches
mkdir -p ${TB_STAGE_DIR}/Browser/TorBrowser/Docs/sources/
@@ -119,16 +119,13 @@ script: |
rm -f .git/refs/heads/master
./makexpi.sh
# Since 5.0.2 a .xpi for AMO is built, too. We don't need it.
- rm ./pkg/*-amo.xpi
- cp pkg/*.xpi ../${TB_STAGE_DIR}/Browser/TorBrowser/Data/Browser/profile.default/extensions/https-everywhere(a)eff.org.xpi
+ rm pkg/*-amo.xpi
+ cp pkg/*.xpi ../${TB_STAGE_DIR}/Browser/TorBrowser/Data/Browser/profile.default/extensions/https-everywhere-eff(a)eff.org.xpi
cd ..
#
cp *.xpi ${TB_STAGE_DIR}/Browser/TorBrowser/Data/Browser/profile.default/extensions/
cd ${TB_STAGE_DIR}/Browser/TorBrowser/Data/Browser/profile.default/extensions
mv noscript(a)noscript.net.xpi {73a6fe31-595d-460b-a920-fcc0f8843232}.xpi
- cd https-everywhere-eff(a)eff.org/
- unzip ../https-everywhere(a)eff.org.xpi
- rm ../https-everywhere(a)eff.org.xpi
cd ~/build
#
cd meek/firefox
diff --git a/gitian/descriptors/mac/gitian-bundle.yml b/gitian/descriptors/mac/gitian-bundle.yml
index d644a56..4f12174 100644
--- a/gitian/descriptors/mac/gitian-bundle.yml
+++ b/gitian/descriptors/mac/gitian-bundle.yml
@@ -104,7 +104,7 @@ script: |
MARTOOLS=~/build/mar-tools
#
mkdir -p $OUTDIR/
- mkdir -p $TORBROWSER_NAME.app/$EXTSPATH/https-everywhere-eff(a)eff.org
+ mkdir -p $TORBROWSER_NAME.app/$EXTSPATH
mkdir -p $TORBROWSER_NAME.app/$MEEKPROFILEPATH/extensions
mkdir -p $TORBROWSER_NAME.app/$DOCSPATH/sources
mkdir -p $TORBROWSER_NAME.app/Contents/MacOS
@@ -139,16 +139,13 @@ script: |
rm -f .git/refs/heads/master
./makexpi.sh
# Since 5.0.2 a .xpi for AMO is built, too. We don't need it.
- rm ./pkg/*-amo.xpi
- cp pkg/*.xpi ../$TORBROWSER_NAME.app/$EXTSPATH/https-everywhere(a)eff.org.xpi
+ rm pkg/*-amo.xpi
+ cp pkg/*.xpi ../$TORBROWSER_NAME.app/$EXTSPATH/https-everywhere-eff(a)eff.org.xpi
cd ..
#
cp *.xpi ./$TORBROWSER_NAME.app/$EXTSPATH/
cd $TORBROWSER_NAME.app/$EXTSPATH/
mv noscript(a)noscript.net.xpi {73a6fe31-595d-460b-a920-fcc0f8843232}.xpi
- cd https-everywhere-eff(a)eff.org
- unzip ../https-everywhere(a)eff.org.xpi
- rm ../https-everywhere(a)eff.org.xpi
cd ~/build/
#
cd meek/firefox
diff --git a/gitian/descriptors/windows/gitian-bundle.yml b/gitian/descriptors/windows/gitian-bundle.yml
index d065f60..e563308 100644
--- a/gitian/descriptors/windows/gitian-bundle.yml
+++ b/gitian/descriptors/windows/gitian-bundle.yml
@@ -76,7 +76,7 @@ script: |
export PATH=$INSTDIR/nsis/bin:$PATH
#
mkdir -p $OUTDIR/
- mkdir -p tbb-windows-installer/"Tor Browser"/Browser/TorBrowser/Data/Browser/profile.default/extensions/https-everywhere-eff(a)eff.org
+ mkdir -p tbb-windows-installer/"Tor Browser"/Browser/TorBrowser/Data/Browser/profile.default/extensions
mkdir -p tbb-windows-installer/"Tor Browser"/Browser/TorBrowser/Data/Browser/profile.meek-http-helper/extensions
mkdir -p tbb-windows-installer/"Tor Browser"/Browser/TorBrowser/Data/Browser/Caches
mkdir -p tbb-windows-installer/"Tor Browser"/Browser/TorBrowser/Docs/sources
@@ -109,16 +109,13 @@ script: |
rm -f .git/refs/heads/master
./makexpi.sh
# Since 5.0.2 a .xpi for AMO is built, too. We don't need it.
- rm ./pkg/*-amo.xpi
- cp ./pkg/*.xpi ../tbb-windows-installer/"Tor Browser"/Browser/TorBrowser/Data/Browser/profile.default/extensions/https-everywhere(a)eff.org.xpi
+ rm pkg/*-amo.xpi
+ cp pkg/*.xpi ../tbb-windows-installer/"Tor Browser"/Browser/TorBrowser/Data/Browser/profile.default/extensions/https-everywhere-eff(a)eff.org.xpi
cd ..
#
cp *.xpi tbb-windows-installer/"Tor Browser"/Browser/TorBrowser/Data/Browser/profile.default/extensions
cd tbb-windows-installer/"Tor Browser"/Browser/TorBrowser/Data/Browser/profile.default/extensions
mv noscript(a)noscript.net.xpi {73a6fe31-595d-460b-a920-fcc0f8843232}.xpi
- cd https-everywhere-eff(a)eff.org
- unzip ../https-everywhere(a)eff.org.xpi
- rm ../https-everywhere(a)eff.org.xpi
cd ~/build/
#
cd meek/firefox
1
0

[tor-browser-bundle/hardened-builds] Bug 20583: make the downloads.json file reproducible
by gk@torproject.org 07 Nov '16
by gk@torproject.org 07 Nov '16
07 Nov '16
commit 4df28e4afbd833126d4f9c3409795c6890b31b74
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Sat Nov 5 19:46:09 2016 +0100
Bug 20583: make the downloads.json file reproducible
---
tools/update-responses/update_responses | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/tools/update-responses/update_responses b/tools/update-responses/update_responses
index 498132e..69535c9 100755
--- a/tools/update-responses/update_responses
+++ b/tools/update-responses/update_responses
@@ -369,7 +369,8 @@ sub write_downloads_json {
version => $version,
downloads => get_version_downloads($config, $version),
};
- write_htdocs($channel, 'downloads.json', encode_json($data));
+ write_htdocs($channel, 'downloads.json',
+ JSON->new->utf8->canonical->encode($data));
}
}
1
0

[tor-browser-bundle/maint-6.0] Bug 20583: make the downloads.json file reproducible
by gk@torproject.org 07 Nov '16
by gk@torproject.org 07 Nov '16
07 Nov '16
commit 5d9099aa9406a0084aa89df85fe165488b151e60
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Sat Nov 5 19:46:09 2016 +0100
Bug 20583: make the downloads.json file reproducible
---
tools/update-responses/update_responses | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/tools/update-responses/update_responses b/tools/update-responses/update_responses
index faa1037..6f6d8b1 100755
--- a/tools/update-responses/update_responses
+++ b/tools/update-responses/update_responses
@@ -344,7 +344,8 @@ sub write_downloads_json {
version => $version,
downloads => get_version_downloads($config, $version),
};
- write_htdocs($channel, 'downloads.json', encode_json($data));
+ write_htdocs($channel, 'downloads.json',
+ JSON->new->utf8->canonical->encode($data));
}
}
1
0

[tor-browser-bundle/master] Bug 20583: make the downloads.json file reproducible
by gk@torproject.org 07 Nov '16
by gk@torproject.org 07 Nov '16
07 Nov '16
commit a442c22cd7771bd717558b0d7d41ee478f7a190f
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Sat Nov 5 19:46:09 2016 +0100
Bug 20583: make the downloads.json file reproducible
---
tools/update-responses/update_responses | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/tools/update-responses/update_responses b/tools/update-responses/update_responses
index ceba144..bca3386 100755
--- a/tools/update-responses/update_responses
+++ b/tools/update-responses/update_responses
@@ -379,7 +379,8 @@ sub write_downloads_json {
version => $version,
downloads => get_version_downloads($config, $version),
};
- write_htdocs($channel, 'downloads.json', encode_json($data));
+ write_htdocs($channel, 'downloads.json',
+ JSON->new->utf8->canonical->encode($data));
}
}
1
0

[tor-browser-bundle/hardened-builds] Bug 20023: Upgrade Go to 1.7.3.
by gk@torproject.org 07 Nov '16
by gk@torproject.org 07 Nov '16
07 Nov '16
commit a10116149af502d483bea0a347a880eb2c7faf42
Author: David Fifield <david(a)bamsoftware.com>
Date: Sun Apr 10 08:32:54 2016 +0000
Bug 20023: Upgrade Go to 1.7.3.
Go 1.7 has a necessary fix for macOS Sierra that is not in Go 1.6.3 or
earlier:
https://github.com/golang/go/commit/2da5633eb9091608047881953f75b489a3134cdc
meek was unstable on macOS Sierra when compiled with Go 1.4.3 or 1.6.3.
Reported by tordevSZ0: https://bugs.torproject.org/20250.
We need to use the Mac OS X 10.7 SDK (not 10.6) to build Go 1.7 and
later:
https://bugs.torproject.org/20023#comment:6
We add -std=gnu99 to CFLAGS when building Go. A piece of new C code uses
c99 features. Other code uses "asm", which requires gnu99.
https://bugs.torproject.org/20023#comment:6
https://trac.macports.org/ticket/52506
We hack one of the source files with sed to remove -D__MAC_OS_X_VERSION_MAX_ALLOWED=1060,
which otherwise causes the build to fail, thinking a couple of functions
are unavailable.
https://github.com/golang/go/issues/17732
---
gitian/descriptors/mac/gitian-pluggable-transports.yml | 12 +++++++-----
gitian/versions | 4 ++--
gitian/versions.alpha | 4 ++--
gitian/versions.beta | 4 ++--
gitian/versions.nightly | 4 ++--
5 files changed, 15 insertions(+), 13 deletions(-)
diff --git a/gitian/descriptors/mac/gitian-pluggable-transports.yml b/gitian/descriptors/mac/gitian-pluggable-transports.yml
index d6a71f2..bae9dbe 100644
--- a/gitian/descriptors/mac/gitian-pluggable-transports.yml
+++ b/gitian/descriptors/mac/gitian-pluggable-transports.yml
@@ -47,6 +47,7 @@ files:
- "go14.tar.gz"
- "go.tar.gz"
- "apple-uni-sdk-10.6_20110407-0.flosoft1_i386.deb"
+- "MacOSX10.7.sdk.tar.gz"
- "multiarch-darwin11-cctools127.2-gcc42-5666.3-llvmgcc42-2336.1-Linux-120724.tar.xz"
- "dzip.sh"
- "gmp-mac64-utils.zip"
@@ -66,6 +67,8 @@ script: |
#
sudo dpkg -i *.deb
tar xaf multiarch-darwin*tar.xz
+ # The 10.7 SDK is needed for Go: https://bugs.torproject.org/20023#comment:6
+ tar xaf MacOSX10.7.sdk.tar.gz
export PATH="$PATH:$HOME/build/apple-osx/bin/"
unzip -d $INSTDIR gmp-mac64-utils.zip
unzip -d $INSTDIR openssl-mac64-utils.zip
@@ -78,10 +81,6 @@ script: |
export CXX=$HOME/build/apple-osx/bin/i686-apple-darwin11-g++
# http://bugs.python.org/issue9437
export LDSHARED="$CC -pthread -shared"
- # XXX Clean up these flags?
- export CFLAGS="-m64 -I/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/include/ -I/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/ -I. -L/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/ -L/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/system/ -F/usr/lib/apple/SDKs/MacOSX10.6.sdk/System/Library/Frameworks -mmacosx-version-min=10.5 -L/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/i686-apple-darwin10/4.2.1 -I$INSTDIR/gmp/include -L$INSTDIR/gmp/lib"
- export CXXFLAGS="-m64 -I/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/include/ -I/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/ -I. -L/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/ -L/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/system/ -F/usr/lib/apple/SDKs/MacOSX10.6.sdk/System/Library/Frameworks -mmacosx-version-min=10.5 -L/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/i686-apple-darwin10/4.2.1 -I$INSTDIR/gmp/include -L$INSTDIR/gmp/lib"
- export LDFLAGS="-L/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/ -L/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/system/ -F/usr/lib/apple/SDKs/MacOSX10.6.sdk/System/Library/Frameworks -mmacosx-version-min=10.5"
# Building go 1.4.x
# This is needed to bootstrap the go that we actually use
@@ -101,7 +100,7 @@ script: |
# https://github.com/golang/go/issues/15457
CC_FOR_TARGET="$(pwd)/cc-for-target"
echo "#!/bin/sh" > "$CC_FOR_TARGET"
- echo "exec $CC $CFLAGS $LDFLAGS \"\$@\"" >> "$CC_FOR_TARGET"
+ echo "exec $CC $CFLAGS $LDFLAGS -isysroot $HOME/build/MacOSX10.7.sdk -std=gnu99 \"\$@\"" >> "$CC_FOR_TARGET"
chmod +x "$CC_FOR_TARGET"
# http://golang.org/doc/install/source#environment
export GOPATH="$HOME/go"
@@ -109,6 +108,9 @@ script: |
export GOARCH=386
tar xvf go.tar.gz
cd go/src
+ # Remove a preprocessor directive that causes problems when building with the 10.7 SDK.
+ # https://github.com/golang/go/issues/17732
+ sed -i -e '/^#cgo CFLAGS:/s/-D__MAC_OS_X_VERSION_MAX_ALLOWED=1060//' crypto/x509/root_cgo_darwin.go
CGO_ENABLED=1 CC_FOR_TARGET="$CC_FOR_TARGET" CC= CFLAGS= LDFLAGS= ./make.bash
cd ../..
export PATH="$PATH:$PWD/go/bin"
diff --git a/gitian/versions b/gitian/versions
index d276d33..6118eac 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.6.3
+GO_VER=1.7.3
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=6326aeed5f86cf18f16d6dc831405614f855e2d416a91fd3fdc334f772345b00
+GO_HASH=79430a0027a09b0b3ad57e214c4c1acfdd7af290961dd08d322818895af1ef44
NSIS_HASH=43d4c9209847e35eb6e2c7cd5a7586e1445374c056c2c7899e40a080e17a1be7
NSIS_DEBIAN_HASH=1dee6957b4a4b8dfe69bcf28bc7f301a13b96b3fa5a394e36c8926ae781e774a
GCC_HASH=b7dafdf89cbb0e20333dbf5b5349319ae06e3d1a30bf3515b5488f7e89dca5ad
diff --git a/gitian/versions.alpha b/gitian/versions.alpha
index 295439e..8018692 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.6.3
+GO_VER=1.7.3
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=6326aeed5f86cf18f16d6dc831405614f855e2d416a91fd3fdc334f772345b00
+GO_HASH=79430a0027a09b0b3ad57e214c4c1acfdd7af290961dd08d322818895af1ef44
NSIS_HASH=43d4c9209847e35eb6e2c7cd5a7586e1445374c056c2c7899e40a080e17a1be7
NSIS_DEBIAN_HASH=1dee6957b4a4b8dfe69bcf28bc7f301a13b96b3fa5a394e36c8926ae781e774a
GCC_HASH=608df76dec2d34de6558249d8af4cbee21eceddbcb580d666f7a5a583ca3303a
diff --git a/gitian/versions.beta b/gitian/versions.beta
index 2a78a8c..f9fb037 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.6.3
+GO_VER=1.7.3
## 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=6326aeed5f86cf18f16d6dc831405614f855e2d416a91fd3fdc334f772345b00
+GO_HASH=79430a0027a09b0b3ad57e214c4c1acfdd7af290961dd08d322818895af1ef44
STIXMATHFONT_HASH=e3b0f712e2644438eee2d0dcd2b10b2d54f1b972039de95b2f8e800bae1adbd8
NOTOEMOJIFONT_HASH=415dc6290378574135b64c808dc640c1df7531973290c4970c51fdeb849cb0c5
NOTOJPFONT_HASH=3e8146c4ce0945f255cb9dbc12b392380af80bd117e0a60eae555c99c7e618da
diff --git a/gitian/versions.nightly b/gitian/versions.nightly
index ab47af1..b3ec60f 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.6.3
+GO_VER=1.7.3
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=6326aeed5f86cf18f16d6dc831405614f855e2d416a91fd3fdc334f772345b00
+GO_HASH=79430a0027a09b0b3ad57e214c4c1acfdd7af290961dd08d322818895af1ef44
NSIS_HASH=43d4c9209847e35eb6e2c7cd5a7586e1445374c056c2c7899e40a080e17a1be7
NSIS_DEBIAN_HASH=1dee6957b4a4b8dfe69bcf28bc7f301a13b96b3fa5a394e36c8926ae781e774a
GCC_HASH=608df76dec2d34de6558249d8af4cbee21eceddbcb580d666f7a5a583ca3303a
1
0

07 Nov '16
commit 824043e9b60c322c4c95b91478acadd0412a2e6d
Author: David Fifield <david(a)bamsoftware.com>
Date: Sun Apr 10 08:32:54 2016 +0000
Bug 20023: Upgrade Go to 1.7.3.
Go 1.7 has a necessary fix for macOS Sierra that is not in Go 1.6.3 or
earlier:
https://github.com/golang/go/commit/2da5633eb9091608047881953f75b489a3134cdc
meek was unstable on macOS Sierra when compiled with Go 1.4.3 or 1.6.3.
Reported by tordevSZ0: https://bugs.torproject.org/20250.
We need to use the Mac OS X 10.7 SDK (not 10.6) to build Go 1.7 and
later:
https://bugs.torproject.org/20023#comment:6
We add -std=gnu99 to CFLAGS when building Go. A piece of new C code uses
c99 features. Other code uses "asm", which requires gnu99.
https://bugs.torproject.org/20023#comment:6
https://trac.macports.org/ticket/52506
We hack one of the source files with sed to remove -D__MAC_OS_X_VERSION_MAX_ALLOWED=1060,
which otherwise causes the build to fail, thinking a couple of functions
are unavailable.
https://github.com/golang/go/issues/17732
---
gitian/descriptors/mac/gitian-pluggable-transports.yml | 12 +++++++-----
gitian/versions | 4 ++--
gitian/versions.alpha | 4 ++--
gitian/versions.beta | 4 ++--
gitian/versions.nightly | 4 ++--
5 files changed, 15 insertions(+), 13 deletions(-)
diff --git a/gitian/descriptors/mac/gitian-pluggable-transports.yml b/gitian/descriptors/mac/gitian-pluggable-transports.yml
index cb7ac5c..8fc4df7 100644
--- a/gitian/descriptors/mac/gitian-pluggable-transports.yml
+++ b/gitian/descriptors/mac/gitian-pluggable-transports.yml
@@ -47,6 +47,7 @@ files:
- "go14.tar.gz"
- "go.tar.gz"
- "apple-uni-sdk-10.6_20110407-0.flosoft1_i386.deb"
+- "MacOSX10.7.sdk.tar.gz"
- "multiarch-darwin11-cctools127.2-gcc42-5666.3-llvmgcc42-2336.1-Linux-120724.tar.xz"
- "dzip.sh"
- "gmp-mac64-utils.zip"
@@ -80,6 +81,8 @@ script: |
export PATH="/usr/sbin:/sbin:$PATH"
sudo dpkg -i *.deb
tar xaf multiarch-darwin*tar.xz
+ # The 10.7 SDK is needed for Go: https://bugs.torproject.org/20023#comment:6
+ tar xaf MacOSX10.7.sdk.tar.gz
export PATH="$PATH:$HOME/build/apple-osx/bin/"
if [ "z$INCLUDE_FTE" = "z1" ]; then
unzip -d $INSTDIR gmp-mac64-utils.zip
@@ -97,10 +100,6 @@ script: |
export CXX=$HOME/build/apple-osx/bin/i686-apple-darwin11-g++
# http://bugs.python.org/issue9437
export LDSHARED="$CC -pthread -shared"
- # XXX Clean up these flags?
- export CFLAGS="-m64 -I/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/include/ -I/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/ -I. -L/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/ -L/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/system/ -F/usr/lib/apple/SDKs/MacOSX10.6.sdk/System/Library/Frameworks -mmacosx-version-min=10.5 -L/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/i686-apple-darwin10/4.2.1$FTE_EXTRA_CFLAGS"
- export CXXFLAGS="-m64 -I/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/include/ -I/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/ -I. -L/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/ -L/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/system/ -F/usr/lib/apple/SDKs/MacOSX10.6.sdk/System/Library/Frameworks -mmacosx-version-min=10.5 -L/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/i686-apple-darwin10/4.2.1$FTE_EXTRA_CFLAGS"
- export LDFLAGS="-L/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/ -L/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/system/ -F/usr/lib/apple/SDKs/MacOSX10.6.sdk/System/Library/Frameworks -mmacosx-version-min=10.5"
# Building go 1.4.x
# This is needed to bootstrap the go that we actually use
@@ -120,7 +119,7 @@ script: |
# https://github.com/golang/go/issues/15457
CC_FOR_TARGET="$(pwd)/cc-for-target"
echo "#!/bin/sh" > "$CC_FOR_TARGET"
- echo "exec $CC $CFLAGS $LDFLAGS \"\$@\"" >> "$CC_FOR_TARGET"
+ echo "exec $CC $CFLAGS $LDFLAGS -isysroot $HOME/build/MacOSX10.7.sdk -std=gnu99 \"\$@\"" >> "$CC_FOR_TARGET"
chmod +x "$CC_FOR_TARGET"
# http://golang.org/doc/install/source#environment
export GOPATH="$HOME/go"
@@ -128,6 +127,9 @@ script: |
export GOARCH=386
tar xvf go.tar.gz
cd go/src
+ # Remove a preprocessor directive that causes problems when building with the 10.7 SDK.
+ # https://github.com/golang/go/issues/17732
+ sed -i -e '/^#cgo CFLAGS:/s/-D__MAC_OS_X_VERSION_MAX_ALLOWED=1060//' crypto/x509/root_cgo_darwin.go
CGO_ENABLED=1 CC_FOR_TARGET="$CC_FOR_TARGET" CC= CFLAGS= LDFLAGS= ./make.bash
cd ../..
export PATH="$PATH:$PWD/go/bin"
diff --git a/gitian/versions b/gitian/versions
index ef57d6a..a61c4aa 100755
--- a/gitian/versions
+++ b/gitian/versions
@@ -62,7 +62,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.6.3
+GO_VER=1.7.3
NSIS_VER=2.51
## File names for the source packages
@@ -114,7 +114,7 @@ PY2EXE_HASH=610a8800de3d973ed5ed4ac505ab42ad058add18a68609ac09e6cf3598ef056c
SETUPTOOLS_HASH=75d288687066ed124311d6ca5f40ffa92a0e81adcd7fff318c6e84082713cf39
PARSLEY_HASH=50d30cee70770fd44db7cea421cb2fb75af247c3a1cd54885c06b30a7c85dd23
GO14_HASH=9947fc705b0b841b5938c48b22dc33e9647ec0752bae66e50278df4f23f64959
-GO_HASH=6326aeed5f86cf18f16d6dc831405614f855e2d416a91fd3fdc334f772345b00
+GO_HASH=79430a0027a09b0b3ad57e214c4c1acfdd7af290961dd08d322818895af1ef44
NSIS_HASH=43d4c9209847e35eb6e2c7cd5a7586e1445374c056c2c7899e40a080e17a1be7
NSIS_DEBIAN_HASH=1dee6957b4a4b8dfe69bcf28bc7f301a13b96b3fa5a394e36c8926ae781e774a
GCC_HASH=b7dafdf89cbb0e20333dbf5b5349319ae06e3d1a30bf3515b5488f7e89dca5ad
diff --git a/gitian/versions.alpha b/gitian/versions.alpha
index 898e781..90f8d4a 100755
--- a/gitian/versions.alpha
+++ b/gitian/versions.alpha
@@ -62,7 +62,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.6.3
+GO_VER=1.7.3
NSIS_VER=2.51
## File names for the source packages
@@ -114,7 +114,7 @@ PY2EXE_HASH=610a8800de3d973ed5ed4ac505ab42ad058add18a68609ac09e6cf3598ef056c
SETUPTOOLS_HASH=75d288687066ed124311d6ca5f40ffa92a0e81adcd7fff318c6e84082713cf39
PARSLEY_HASH=50d30cee70770fd44db7cea421cb2fb75af247c3a1cd54885c06b30a7c85dd23
GO14_HASH=9947fc705b0b841b5938c48b22dc33e9647ec0752bae66e50278df4f23f64959
-GO_HASH=6326aeed5f86cf18f16d6dc831405614f855e2d416a91fd3fdc334f772345b00
+GO_HASH=79430a0027a09b0b3ad57e214c4c1acfdd7af290961dd08d322818895af1ef44
NSIS_HASH=43d4c9209847e35eb6e2c7cd5a7586e1445374c056c2c7899e40a080e17a1be7
NSIS_DEBIAN_HASH=1dee6957b4a4b8dfe69bcf28bc7f301a13b96b3fa5a394e36c8926ae781e774a
GCC_HASH=b7dafdf89cbb0e20333dbf5b5349319ae06e3d1a30bf3515b5488f7e89dca5ad
diff --git a/gitian/versions.beta b/gitian/versions.beta
index 8ac35ae..6226f77 100755
--- a/gitian/versions.beta
+++ b/gitian/versions.beta
@@ -49,7 +49,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.6.3
+GO_VER=1.7.3
## File names for the source packages
OPENSSL_PACKAGE=openssl-${OPENSSL_VER}.tar.gz
@@ -96,7 +96,7 @@ PY2EXE_HASH=610a8800de3d973ed5ed4ac505ab42ad058add18a68609ac09e6cf3598ef056c
SETUPTOOLS_HASH=75d288687066ed124311d6ca5f40ffa92a0e81adcd7fff318c6e84082713cf39
PARSLEY_HASH=50d30cee70770fd44db7cea421cb2fb75af247c3a1cd54885c06b30a7c85dd23
GO14_HASH=9947fc705b0b841b5938c48b22dc33e9647ec0752bae66e50278df4f23f64959
-GO_HASH=6326aeed5f86cf18f16d6dc831405614f855e2d416a91fd3fdc334f772345b00
+GO_HASH=79430a0027a09b0b3ad57e214c4c1acfdd7af290961dd08d322818895af1ef44
STIXMATHFONT_HASH=e3b0f712e2644438eee2d0dcd2b10b2d54f1b972039de95b2f8e800bae1adbd8
NOTOEMOJIFONT_HASH=415dc6290378574135b64c808dc640c1df7531973290c4970c51fdeb849cb0c5
NOTOJPFONT_HASH=3e8146c4ce0945f255cb9dbc12b392380af80bd117e0a60eae555c99c7e618da
diff --git a/gitian/versions.nightly b/gitian/versions.nightly
index f6dbb68..eaf1a28 100755
--- a/gitian/versions.nightly
+++ b/gitian/versions.nightly
@@ -69,7 +69,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.6.3
+GO_VER=1.7.3
NSIS_VER=2.51
## File names for the source packages
@@ -121,7 +121,7 @@ PY2EXE_HASH=610a8800de3d973ed5ed4ac505ab42ad058add18a68609ac09e6cf3598ef056c
SETUPTOOLS_HASH=75d288687066ed124311d6ca5f40ffa92a0e81adcd7fff318c6e84082713cf39
PARSLEY_HASH=50d30cee70770fd44db7cea421cb2fb75af247c3a1cd54885c06b30a7c85dd23
GO14_HASH=9947fc705b0b841b5938c48b22dc33e9647ec0752bae66e50278df4f23f64959
-GO_HASH=6326aeed5f86cf18f16d6dc831405614f855e2d416a91fd3fdc334f772345b00
+GO_HASH=79430a0027a09b0b3ad57e214c4c1acfdd7af290961dd08d322818895af1ef44
NSIS_HASH=43d4c9209847e35eb6e2c7cd5a7586e1445374c056c2c7899e40a080e17a1be7
NSIS_DEBIAN_HASH=1dee6957b4a4b8dfe69bcf28bc7f301a13b96b3fa5a394e36c8926ae781e774a
GCC_HASH=b7dafdf89cbb0e20333dbf5b5349319ae06e3d1a30bf3515b5488f7e89dca5ad
1
0

[torbutton/master] Bug 20347: Remove "Custom" checkbox; show "Restore defaults" button
by gk@torproject.org 07 Nov '16
by gk@torproject.org 07 Nov '16
07 Nov '16
commit e59f6df84dcfde500f41eefb608dd878a7fc9d6b
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Mon Oct 17 17:25:59 2016 -0700
Bug 20347: Remove "Custom" checkbox; show "Restore defaults" button
This patch moves the security slider code from torbutton.js
to its own file (security-prefs.js) and refactors it.
---
src/chrome/content/preferences.js | 149 ++++++------------
src/chrome/content/preferences.xul | 53 ++++---
src/chrome/content/torbutton.js | 309 ++++---------------------------------
src/chrome/locale/en/torbutton.dtd | 5 +-
src/modules/security-prefs.js | 130 ++++++++++++++++
src/modules/utils.js | 21 ++-
6 files changed, 256 insertions(+), 411 deletions(-)
diff --git a/src/chrome/content/preferences.js b/src/chrome/content/preferences.js
index 1d85cde..7856ef1 100644
--- a/src/chrome/content/preferences.js
+++ b/src/chrome/content/preferences.js
@@ -1,105 +1,44 @@
-// Bug 1506 P1: Most of this code needs to go away. See also Bug 3100.
-
-// PREFERences dialog functions
-// torbutton_prefs_init() -- on dialog load
-// torbutton_prefs_save() -- on dialog save
-
-const Cc = Components.classes, Ci = Components.interfaces;
-
-
-function torbutton_prefs_init(doc) {
- torbutton_log(2, "called prefs_init()");
-
- var o_torprefs = torbutton_get_prefbranch('extensions.torbutton.');
-
- let sec_slider = doc.getElementById('torbutton_sec_slider');
- let sec_custom = doc.getElementById('torbutton_sec_custom');
- let custom_values = o_torprefs.getBoolPref('security_custom');
- sec_slider.value = o_torprefs.getIntPref('security_slider');
- sec_custom.checked = custom_values;
- sec_custom.disabled = !custom_values;
- torbutton_set_slider_text(doc, sec_custom.checked);
- // If the custom checkbox is checked and the user is done with dragging
- // uncheck the checkbox to allow setting the (newly) chosen security level.
- sec_slider.dragStateChanged = function(isDragging) {
- if (!isDragging && sec_custom.checked) {
- sec_custom.checked = false;
- sec_custom.disabled = true;
- }
- }
- sec_slider.valueChanged = function(which, newValue, userChanged) {
- torbutton_set_slider_text(doc, false);
- }
-}
-
-function torbutton_prefs_save(doc) {
- // Disable the Accept button once the user clicked on it as clicking on
- // our active Accept button more than once can lead to all sort of weird
- // behavior. See bug 11763 for an example.
- doc.documentElement.getButton("accept").disabled = true;
- torbutton_log(2, "called prefs_save()");
- var o_torprefs = torbutton_get_prefbranch('extensions.torbutton.');
-
- o_torprefs.setBoolPref('security_custom',
- doc.getElementById('torbutton_sec_custom').checked);
- o_torprefs.setIntPref('security_slider',
- doc.getElementById('torbutton_sec_slider').value);
-
- // If we have non-custom Security Slider settings update them now.
- if (!o_torprefs.getBoolPref('security_custom')) {
- let wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
- .getService(Components.interfaces.nsIWindowMediator);
- let win = wm.getMostRecentWindow("navigator:browser");
- win.torbutton_update_security_slider();
- }
-}
-
-function torbutton_toggle_slider(doc, pos) {
- doc.getElementById("torbutton_sec_slider").value = pos;
- // Make sure the custom checkbox is unchecked as the user seems to want one
- // of the defined security levels.
- let sec_custom = doc.getElementById("torbutton_sec_custom");
- if (sec_custom.checked) {
- sec_custom.checked = false;
- }
- torbutton_set_slider_text(doc, false);
-}
-
-function torbutton_set_slider_text(doc, custom) {
- let level = doc.getElementById("torbutton_sec_slider").value;
- if (custom) {
- level = 5;
- }
- switch (level) {
- case (1):
- doc.getElementById("desc_low").collapsed = true;
- doc.getElementById("desc_medium_low").collapsed = true;
- doc.getElementById("desc_medium_high").collapsed = true;
- doc.getElementById("desc_high").collapsed = false;
- break;
- case (2):
- doc.getElementById("desc_low").collapsed = true;
- doc.getElementById("desc_medium_low").collapsed = true;
- doc.getElementById("desc_medium_high").collapsed = false;
- doc.getElementById("desc_high").collapsed = true;
- break;
- case (3):
- doc.getElementById("desc_low").collapsed = true;
- doc.getElementById("desc_medium_low").collapsed = false;
- doc.getElementById("desc_medium_high").collapsed = true;
- doc.getElementById("desc_high").collapsed = true;
- break;
- case (4):
- doc.getElementById("desc_low").collapsed = false;
- doc.getElementById("desc_medium_low").collapsed = true;
- doc.getElementById("desc_medium_high").collapsed = true;
- doc.getElementById("desc_high").collapsed = true;
- break;
- case (5):
- doc.getElementById("desc_low").collapsed = true;
- doc.getElementById("desc_medium_low").collapsed = true;
- doc.getElementById("desc_medium_high").collapsed = true;
- doc.getElementById("desc_high").collapsed = true;
- break;
- }
-}
+// # Security Settings User Interface
+
+// Utilities
+let { utils: Cu } = Components;
+let { getBoolPref, getIntPref, setBoolPref, setIntPref } =
+ Cu.import("resource://gre/modules/Services.jsm").Services.prefs;
+
+// Description elements have the follow names.
+const descNames =
+ [, "desc_high", "desc_medium_high", "desc_medium_low", "desc_low"];
+
+// A single `state` object that reflects the user settings in this UI.
+let state = { slider : 0, custom : false};
+
+// Set the desired slider value and update UI.
+function torbutton_set_slider(sliderPosition) {
+ state.slider = sliderPosition;
+ let slider = document.getElementById("torbutton_sec_slider");
+ slider.value = sliderPosition;
+ let descs = descNames.map(name => document.getElementById(name));
+ descs.forEach((desc, i) => desc.collapsed = sliderPosition !== i);
+};
+
+// Set the desired custom value and update UI.
+function torbutton_set_custom(customValue) {
+ state.custom = customValue;
+ let sliderSettings = document.getElementById("torbutton_slider_settings");
+ let customSettings = document.getElementById("torbutton_custom_settings");
+ sliderSettings.hidden = customValue;
+ customSettings.hidden = !customValue;
+};
+
+// Read prefs 'extensions.torbutton.security_slider' and
+// 'extensions.torbutton.security_custom', and initialize the UI.
+function torbutton_init_security_ui() {
+ torbutton_set_slider(getIntPref("extensions.torbutton.security_slider"));
+ torbutton_set_custom(getBoolPref("extensions.torbutton.security_custom"));
+};
+
+// Write the two prefs from the current settings.
+function torbutton_save_security_settings() {
+ setIntPref("extensions.torbutton.security_slider", state.slider);
+ setBoolPref("extensions.torbutton.security_custom", state.custom);
+};
diff --git a/src/chrome/content/preferences.xul b/src/chrome/content/preferences.xul
index 574932e..53abd7f 100644
--- a/src/chrome/content/preferences.xul
+++ b/src/chrome/content/preferences.xul
@@ -10,64 +10,59 @@
title="&torbutton.prefs.security_settings;"
buttons="accept,cancel"
persist="screenX screenY width height"
- onload="torbutton_prefs_init(document)"
+ onload="torbutton_init_security_ui()"
align="stretch"
pack="center"
- maxheight="350"
+ maxheight="300"
+ minwidth="300"
maxwidth="400"
- ondialogaccept="torbutton_prefs_save(document)" >
+ ondialogaccept="torbutton_save_security_settings()"
+ width="400" >
<script type="application/x-javascript" src="torbutton_util.js"/>
<script type="application/x-javascript" src="preferences.js"/>
<vbox flex="1" align="stretch">
<groupbox align="stretch" flex="1"> <!-- security settings container -->
<caption label="&torbutton.prefs.sec_caption;"/>
- <hbox flex="1" align="stretch">
+ <hbox id="torbutton_slider_settings" flex="1" align="stretch" hidden="false">
<vbox>
<hbox height="200">
<vbox>
<scale id="torbutton_sec_slider" flex="1" min="1" max="4"
- movetoclick="true" orient="vertical"/>
+ movetoclick="true" orient="vertical"
+ onchange="torbutton_set_slider(this.value)"/>
</vbox>
<vbox>
<hbox flex="1" align="start">
<description id="torbutton_sec_high"
- tooltip="high_preview"
- onclick="torbutton_toggle_slider(document, 1);">
+ onclick="torbutton_set_slider(1);"
+ tooltip="high_preview">
&torbutton.prefs.sec_high;
</description>
</hbox>
<hbox flex="1" align="center">
<description id="torbutton_sec_med_high"
- tooltip="mh_preview"
- onclick="torbutton_toggle_slider(document, 2);">
+ onclick="torbutton_set_slider(2);"
+ tooltip="mh_preview">
&torbutton.prefs.sec_med_high;
</description>
</hbox>
<hbox flex="1" align="center">
<description id="torbutton_sec_med_low"
- tooltip="ml_preview"
- onclick="torbutton_toggle_slider(document, 3);">
+ onclick="torbutton_set_slider(3);"
+ tooltip="ml_preview">
&torbutton.prefs.sec_med_low;
</description>
</hbox>
<hbox flex="1" align="end">
<description id="torbutton_sec_low"
- tooltip="low_preview"
- onclick="torbutton_toggle_slider(document, 4);">
+ onclick="torbutton_set_slider(4);"
+ tooltip="low_preview">
&torbutton.prefs.sec_low;
</description>
</hbox>
</vbox>
</hbox>
- <hbox>
- <!-- We are using |oncommand| instead of |onclick| as the former does
- not fire if the checkbox is disabled and it does fire after the
- checkbox adapted its state. -->
- <checkbox id="torbutton_sec_custom" flex="1"
- oncommand="torbutton_set_slider_text(document, event.target.checked);"
- label="&torbutton.prefs.sec_custom;"/>
- </hbox>
</vbox>
<!-- A width of 400 is already too much for OS X it seems. The above
spacer tag would basically be useless and the layout ugly. -->
@@ -161,6 +156,20 @@
</vbox>
</vbox>
</hbox>
+ <vbox id="torbutton_custom_settings"
+ hidden="true"
+ width="300"
+ height="200"
+ style="overflow:auto;">
+ <description>
+ &torbutton.prefs.custom_warning;
+ </description>
+ <hbox>
+ <button id="torbutton_restore_defaults_button"
+ oncommand="torbutton_set_custom(false);"
+ label="&torbutton.prefs.restore_defaults;"/>
+ </hbox>
+ </vbox>
</groupbox>
</vbox>
@@ -200,4 +209,4 @@
<html:br></html:br>
<html:div>&torbutton.prefs.sec_low_usable_desc;</html:div>
</tooltip>
-</dialog>
+ </dialog>
diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js
index 9a8b9e2..60f12d6 100644
--- a/src/chrome/content/torbutton.js
+++ b/src/chrome/content/torbutton.js
@@ -11,6 +11,7 @@ let { LoadContextInfo } = Cu.import('resource://gre/modules/LoadContextInfo.jsm'
let { Services } = Cu.import("resource://gre/modules/Services.jsm");
let { showDialog } = Cu.import("resource://torbutton/modules/utils.js");
let { unescapeTorString } = Cu.import("resource://torbutton/modules/utils.js");
+let SecurityPrefs = Cu.import("resource://torbutton/modules/security-prefs.js");
const k_tb_last_browser_version_pref = "extensions.torbutton.lastBrowserVersion";
const k_tb_browser_update_needed_pref = "extensions.torbutton.updateNeeded";
@@ -45,8 +46,6 @@ var m_tb_orig_BrowserOnAboutPageLoad = null;
var m_tb_domWindowUtils = window.QueryInterface(Ci.nsIInterfaceRequestor).
getInterface(Ci.nsIDOMWindowUtils);
-var m_tb_sliderUpdate = false;
-
// Bug 1506 P1: This object is only for updating the UI for toggling and style
var torbutton_window_pref_observer =
{
@@ -86,11 +85,7 @@ var torbutton_unique_pref_observer =
m_tb_prefs.addObserver("network.cookie", this, false);
m_tb_prefs.addObserver("browser.privatebrowsing.autostart", this, false);
m_tb_prefs.addObserver("javascript", this, false);
- m_tb_prefs.addObserver("gfx", this, false);
m_tb_prefs.addObserver("noscript", this, false);
- m_tb_prefs.addObserver("media", this, false);
- m_tb_prefs.addObserver("mathml", this, false);
- m_tb_prefs.addObserver("svg", this, false);
m_tb_prefs.addObserver("plugin.disable", this, false);
m_tb_prefs.addObserver("privacy.thirdparty.isolate", this, false);
m_tb_prefs.addObserver("privacy.resistFingerprinting", this, false);
@@ -107,11 +102,10 @@ var torbutton_unique_pref_observer =
m_tb_prefs.removeObserver("network.cookie", this);
m_tb_prefs.removeObserver("browser.privatebrowsing.autostart", this);
m_tb_prefs.removeObserver("javascript", this);
- m_tb_prefs.removeObserver("gfx", this);
m_tb_prefs.removeObserver("noscript", this);
- m_tb_prefs.removeObserver("media", this);
- m_tb_prefs.removeObserver("mathml", this);
- m_tb_prefs.removeObserver("svg", this);
+ m_tb_prefs.removeObserver("plugin.disable", this);
+ m_tb_prefs.removeObserver("privacy.thirdparty.isolate", this);
+ m_tb_prefs.removeObserver("privacy.resistFingerprinting", this);
var observerService = Cc["@mozilla.org/observer-service;1"].
getService(Ci.nsIObserverService);
@@ -149,7 +143,9 @@ var torbutton_unique_pref_observer =
}
if (topic != "nsPref:changed") return;
-
+ if (data.startsWith("noscript.")) {
+ torbutton_update_noscript_button();
+ }
switch (data) {
case "network.cookie.cookieBehavior":
var val = m_tb_prefs.getIntPref("network.cookie.cookieBehavior");
@@ -180,42 +176,6 @@ var torbutton_unique_pref_observer =
case "extensions.torbutton.hide_sync_ui":
torbutton_update_sync_ui();
break;
- case "gfx.font_rendering.opentype_svg.enabled":
- case "javascript.options.ion.content":
- case "javascript.options.typeinference":
- case "noscript.forbidMedia":
- case "media.webaudio.enabled":
- case "mathml.disabled":
- case "javascript.options.baselinejit.content":
- case "noscript.forbidFonts":
- case "noscript.globalHttpsWhitelist":
- case "noscript.global":
- case "svg.in-content.enabled":
- // |m_tb_slider_update| is only set if the user updated a
- // preference under control of the security slider via the
- // slider on the Torbutton dialog. This in turn means we can
- // skip the code dealing with setting/unsetting the custom mode
- // in this case.
- if (!m_tb_sliderUpdate) {
- // Do we already have custom settings?
- let customSlider = m_tb_prefs.
- getBoolPref("extensions.torbutton.security_custom");
- // A preference governed by the security slider got changed
- // but we are not in custom mode yet. Change that.
- if (!customSlider) {
- m_tb_prefs.
- setBoolPref("extensions.torbutton.security_custom",
- true);
- } else {
- // We are in custom mode. Check whether all prefs are
- // reset and reset the mode if so. Otherwise we remain
- // in custom mode.
- torbutton_log(4, "custom mode and we got: " + data);
- torbutton_security_slider_custom_check(m_tb_prefs.
- getIntPref("extensions.torbutton.security_slider"));
- }
- }
- break;
}
}
}
@@ -269,7 +229,9 @@ function torbutton_init_toolbutton()
// called once per browser window.. This might belong in a component.
function torbutton_init() {
torbutton_log(3, 'called init()');
-
+
+ SecurityPrefs.initialize();
+
if (m_tb_wasinited) {
return;
}
@@ -372,12 +334,6 @@ function torbutton_init() {
torbutton_on_abouttor_load(aEvent.target);
}, false, true);
- // Set some important security prefs according to the chosen security level
- // if there are no custom settings to respect.
- if (!m_tb_prefs.getBoolPref("extensions.torbutton.security_custom")) {
- torbutton_update_security_slider();
- }
-
// XXX: Get rid of the cached asmjs (or IndexedDB) files on disk in case we
// don't allow things saved to disk. This is an ad-hoc fix to work around
// #19417. Once this is properly solved we should remove this code again.
@@ -1805,228 +1761,6 @@ function torbutton_update_thirdparty_prefs() {
m_tb_prefs.savePrefFile(null);
}
-var torbutton_sec_ml_bool_prefs = {
- "javascript.options.ion.content" : false,
- "javascript.options.typeinference" : false,
- "noscript.forbidMedia" : true,
- "media.webaudio.enabled" : false,
- "mathml.disabled" : true
-};
-
-var torbutton_sec_mh_bool_prefs = {
- "javascript.options.baselinejit.content" : false,
- "gfx.font_rendering.opentype_svg.enabled" : false,
- "noscript.global" : false,
- "noscript.globalHttpsWhitelist" : true
-};
-
-var torbutton_sec_h_bool_prefs = {
- "noscript.forbidFonts" : true,
- "noscript.global" : false,
- "svg.in-content.enabled" : false
-};
-
-function torbutton_update_security_slider() {
- // Avoid checking the custom settings checkbox.
- m_tb_sliderUpdate = true;
- let mode = m_tb_prefs.getIntPref("extensions.torbutton.security_slider");
- let capValue = m_tb_prefs.getCharPref("capability.policy.maonoscript.sites");
- switch (mode) {
- case 1:
- for (p in torbutton_sec_ml_bool_prefs) {
- m_tb_prefs.setBoolPref(p, torbutton_sec_ml_bool_prefs[p])
- }
- for (p in torbutton_sec_mh_bool_prefs) {
- m_tb_prefs.setBoolPref(p, torbutton_sec_mh_bool_prefs[p])
- // noscript.globalHttpsWhitelist is special: We don't want it in this
- // mode.
- if (p === "noscript.globalHttpsWhitelist") {
- m_tb_prefs.setBoolPref(p, !torbutton_sec_mh_bool_prefs[p])
- }
- }
- for (p in torbutton_sec_h_bool_prefs) {
- m_tb_prefs.setBoolPref(p, torbutton_sec_h_bool_prefs[p])
- }
- // Removing "https:" is needed due to a bug in older Noscript versions.
- // We leave that in for a while as there may be users that were affected
- // by this bug. Removing it immediately and having the auto-updater might
- // leave users exposed to the problem.
- if (capValue.indexOf(" https:") >= 0) {
- m_tb_prefs.setCharPref("capability.policy.maonoscript.sites",
- capValue.replace(" https:", ""));
- }
- break;
- case 2:
- for (p in torbutton_sec_ml_bool_prefs) {
- m_tb_prefs.setBoolPref(p, torbutton_sec_ml_bool_prefs[p])
- }
- // Order matters here as both the high mode and the medium-high mode
- // share some preferences/values. So, let's revert the high mode
- // preferences first and set the medium-high mode ones afterwards.
- for (p in torbutton_sec_h_bool_prefs) {
- m_tb_prefs.setBoolPref(p, !torbutton_sec_h_bool_prefs[p])
- }
- for (p in torbutton_sec_mh_bool_prefs) {
- m_tb_prefs.setBoolPref(p, torbutton_sec_mh_bool_prefs[p])
- }
- break;
- case 3:
- for (p in torbutton_sec_ml_bool_prefs) {
- m_tb_prefs.setBoolPref(p, torbutton_sec_ml_bool_prefs[p])
- }
- for (p in torbutton_sec_mh_bool_prefs) {
- m_tb_prefs.setBoolPref(p, !torbutton_sec_mh_bool_prefs[p])
- }
- for (p in torbutton_sec_h_bool_prefs) {
- m_tb_prefs.setBoolPref(p, !torbutton_sec_h_bool_prefs[p])
- }
- // Removing "https:" is needed due to a bug in older Noscript versions.
- // We leave that in for a while as there may be users that were affected
- // by this bug. Removing it immediately and having the auto-updater might
- // leave users exposed to the problem.
- if (capValue.indexOf(" https:") >= 0) {
- m_tb_prefs.setCharPref("capability.policy.maonoscript.sites",
- capValue.replace(" https:", ""));
- }
- break;
- case 4:
- for (p in torbutton_sec_ml_bool_prefs) {
- m_tb_prefs.setBoolPref(p, !torbutton_sec_ml_bool_prefs[p])
- }
- for (p in torbutton_sec_mh_bool_prefs) {
- m_tb_prefs.setBoolPref(p, !torbutton_sec_mh_bool_prefs[p])
- }
- for (p in torbutton_sec_h_bool_prefs) {
- m_tb_prefs.setBoolPref(p, !torbutton_sec_h_bool_prefs[p])
- }
- // Removing "https:" is needed due to a bug in older Noscript versions.
- // We leave that in for a while as there may be users that were affected
- // by this bug. Removing it immediately and having the auto-updater might
- // leave users exposed to the problem.
- if (capValue.indexOf(" https:") >= 0) {
- m_tb_prefs.setCharPref("capability.policy.maonoscript.sites",
- capValue.replace(" https:", ""));
- }
- break;
- }
- /* Update the NoScript button to reflect any changes */
- try {
- let wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
- .getService(Components.interfaces.nsIWindowMediator);
- let browserEnumerator = wm.getEnumerator("navigator:browser");
-
- // Update every window's NoScript status...
- while (browserEnumerator.hasMoreElements()) {
- let win = browserEnumerator.getNext();
- win.noscriptOverlay._syncUINow();
- }
- torbutton_log(3, 'Updated NoScript status for security slider');
- } catch(e) {
- torbutton_log(4, 'Failed to update NoScript status for security slider: '+e);
- }
- torbutton_log(3, 'Security Slider Pref Update Complete');
- m_tb_sliderUpdate = false;
-}
-
-// The user (re)set a pref which is relevant to the security slider while she
-// was in custom mode. Check whether the preference values fit to the mode which
-// is still on the slider. Iff so, we are leaving the custom mode.
-function torbutton_security_slider_custom_check(mode) {
- let capValue = m_tb_prefs.getCharPref("capability.policy.maonoscript.sites");
- switch (mode) {
- case 1:
- for (p in torbutton_sec_ml_bool_prefs) {
- if (m_tb_prefs.getBoolPref(p) !== torbutton_sec_ml_bool_prefs[p]) {
- return;
- }
- }
- for (p in torbutton_sec_mh_bool_prefs) {
- if (m_tb_prefs.getBoolPref(p) !== torbutton_sec_mh_bool_prefs[p]) {
- // We don't want to have the whitelist in high mode. JavaScript is
- // disabled globally.
- if (p === "noscript.globalHttpsWhitelist") {
- continue;
- }
- return;
- }
- }
- for (p in torbutton_sec_h_bool_prefs) {
- if (m_tb_prefs.getBoolPref(p) !== torbutton_sec_h_bool_prefs[p]) {
- return;
- }
- }
- // We are still here which means all preferences are properly reset. Leave
- // custom mode.
- m_tb_prefs.setBoolPref("extensions.torbutton.security_custom", false);
- break;
- case 2:
- for (p in torbutton_sec_ml_bool_prefs) {
- if (m_tb_prefs.getBoolPref(p) !== torbutton_sec_ml_bool_prefs[p]) {
- return;
- }
- }
- for (p in torbutton_sec_mh_bool_prefs) {
- if (m_tb_prefs.getBoolPref(p) !== torbutton_sec_mh_bool_prefs[p]) {
- return;
- }
- }
- for (p in torbutton_sec_h_bool_prefs) {
- if (m_tb_prefs.getBoolPref(p) === torbutton_sec_h_bool_prefs[p]) {
- // We have the whitelist and JavaScript is disabled in medium-high
- // mode as well.
- if (p === "noscript.global") {
- continue;
- }
- return;
- }
- }
- // We are still here which means all preferences are properly reset. Leave
- // custom mode.
- m_tb_prefs.setBoolPref("extensions.torbutton.security_custom", false);
- break;
- case 3:
- for (p in torbutton_sec_ml_bool_prefs) {
- if (m_tb_prefs.getBoolPref(p) !== torbutton_sec_ml_bool_prefs[p]) {
- return;
- }
- }
- for (p in torbutton_sec_mh_bool_prefs) {
- if (m_tb_prefs.getBoolPref(p) === torbutton_sec_mh_bool_prefs[p]) {
- return;
- }
- }
- for (p in torbutton_sec_h_bool_prefs) {
- if (m_tb_prefs.getBoolPref(p) === torbutton_sec_h_bool_prefs[p]) {
- return;
- }
- }
- // We are still here which means all preferences are properly reset. Leave
- // custom mode.
- m_tb_prefs.setBoolPref("extensions.torbutton.security_custom", false);
- break;
- case 4:
- for (p in torbutton_sec_ml_bool_prefs) {
- if (m_tb_prefs.getBoolPref(p) === torbutton_sec_ml_bool_prefs[p]) {
- return;
- }
- }
- for (p in torbutton_sec_mh_bool_prefs) {
- if (m_tb_prefs.getBoolPref(p) === torbutton_sec_mh_bool_prefs[p]) {
- return;
- }
- }
- for (p in torbutton_sec_h_bool_prefs) {
- if (m_tb_prefs.getBoolPref(p) === torbutton_sec_h_bool_prefs[p]) {
- return;
- }
- }
- // We are still here which means all preferences are properly reset. Leave
- // custom mode.
- m_tb_prefs.setBoolPref("extensions.torbutton.security_custom", false);
- break;
- }
-}
-
function torbutton_close_tabs_on_new_identity() {
var close_newnym = m_tb_prefs.getBoolPref("extensions.torbutton.close_newnym");
if (!close_newnym) {
@@ -2829,4 +2563,27 @@ function torbutton_update_sync_ui()
}
}
+// Update the NoScript button to reflect any changes to noscript prefs
+function torbutton_update_noscript_button()
+{
+ // Make sure pref values have fully propagated inside NoScript before
+ // we sync the UI.
+ setTimeout(() => {
+ try {
+ let wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
+ .getService(Components.interfaces.nsIWindowMediator);
+ let browserEnumerator = wm.getEnumerator("navigator:browser");
+ // Update every window's NoScript status...
+ while (browserEnumerator.hasMoreElements()) {
+ let win = browserEnumerator.getNext();
+ win.noscriptOverlay._syncUINow();
+ }
+ torbutton_log(3, 'Updated NoScript status for security settings');
+ } catch (e) {
+ torbutton_log(4, 'Failed to update NoScript status for security setings: '+e);
+ }
+ }, 0);
+}
+
+
//vim:set ts=4
diff --git a/src/chrome/locale/en/torbutton.dtd b/src/chrome/locale/en/torbutton.dtd
index 56f663e..0c10406 100644
--- a/src/chrome/locale/en/torbutton.dtd
+++ b/src/chrome/locale/en/torbutton.dtd
@@ -11,7 +11,9 @@
<!ENTITY torbutton.context_menu.cookieProtections "Cookie Protections…">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.button.tooltip "Click to initialize Torbutton">
-<!ENTITY torbutton.prefs.security_settings "Security Settings">
+<!ENTITY torbutton.prefs.security_settings "Tor Browser Security Settings">
+<!ENTITY torbutton.prefs.restore_defaults "Restore Defaults">
+<!ENTITY torbutton.prefs.custom_warning "Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels.">
<!ENTITY torbutton.cookiedialog.title "Manage Cookie Protections">
<!ENTITY torbutton.cookiedialog.lockCol "Protected">
<!ENTITY torbutton.cookiedialog.domainCol "Host">
@@ -57,5 +59,4 @@
<!ENTITY torbutton.prefs.sec_all_js_desc "JavaScript is disabled by default on all sites.">
<!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.prefs.sec_custom "Custom Values">
<!ENTITY torbutton.circuit_display.title "Tor circuit for this site">
diff --git a/src/modules/security-prefs.js b/src/modules/security-prefs.js
new file mode 100644
index 0000000..3710862
--- /dev/null
+++ b/src/modules/security-prefs.js
@@ -0,0 +1,130 @@
+// # Security Settings prefs (as controlled by the Security Slider)
+
+// ### Utilities
+
+let {classes: Cc, utils: Cu } = Components;
+let { getBoolPref, setBoolPref, getIntPref, setIntPref } =
+ Cu.import("resource://gre/modules/Services.jsm").Services.prefs;
+let { bindPref } =
+ Cu.import("resource://torbutton/modules/utils.js");
+let logger = Components.classes["@torproject.org/torbutton-logger;1"]
+ .getService(Components.interfaces.nsISupports).wrappedJSObject;
+let log = (level, msg) => logger.log(level, msg);
+
+// ### Constants
+
+// __kSecuritySettings__.
+// A table of all prefs bound to the security slider, and the value
+// for each security setting.
+const kSecuritySettings = {
+ // Preference name : [0, 1-high 2-mh 3-ml 4-low]
+ "javascript.options.ion.content" : [, false, false, false, true ],
+ "javascript.options.typeinference" : [, false, false, false, true ],
+ "noscript.forbidMedia" : [, true, true, true, false],
+ "media.webaudio.enabled" : [, false, false, false, true ],
+ "mathml.disabled" : [, true, true, true, false],
+ "javascript.options.baselinejit.content" : [, false, false, true, true ],
+ "gfx.font_rendering.opentype_svg.enabled" : [, false, false, true, true ],
+ "noscript.global" : [, false, false, true, true ],
+ "noscript.globalHttpsWhitelist" : [, false, true, false, false],
+ "noscript.forbidFonts" : [, true, false, false, false],
+ "svg.in-content.enabled" : [, false, true, true, true ],
+};
+
+// The Security Settings prefs in question.
+const kSliderPref = "extensions.torbutton.security_slider";
+const kCustomPref = "extensions.torbutton.security_custom";
+
+// ### Prefs
+
+// __write_setting_to_prefs(settingIndex)__.
+// Take a given setting index and write the appropriate pref values
+// to the pref database.
+var write_setting_to_prefs = function (settingIndex) {
+ Object.keys(kSecuritySettings).forEach(
+ prefName => setBoolPref(
+ prefName, kSecuritySettings[prefName][settingIndex]));
+};
+
+// __read_setting_from_prefs()__.
+// Read the current pref values, and decide if any of our
+// security settings matches. Otherwise return null.
+var read_setting_from_prefs = function () {
+ let prefNames = Object.keys(kSecuritySettings);
+ for (let settingIndex of [1, 2, 3, 4]) {
+ let possibleSetting = true;
+ // For the given settingIndex, check if all current pref values
+ // match the setting.
+ for (let prefName of prefNames) {
+ if (kSecuritySettings[prefName][settingIndex] !==
+ getBoolPref(prefName)) {
+ possibleSetting = false;
+ }
+ }
+ if (possibleSetting) {
+ // We have a match!
+ return settingIndex;
+ }
+ }
+ // No matching setting; return null.
+ return null;
+};
+
+// __watch_security_prefs(onSettingChanged)__.
+// Whenever a pref bound to the security slider changes, onSettingChanged
+// is called with the new security setting value (1,2,3,4 or null).
+// Returns a zero-arg function that ends this binding.
+var watch_security_prefs = function (onSettingChanged) {
+ let prefNames = Object.keys(kSecuritySettings);
+ let unbindFuncs = [];
+ for (let prefName of prefNames) {
+ unbindFuncs.push(bindPref(
+ prefName, () => onSettingChanged(read_setting_from_prefs())));
+ }
+ // Call all the unbind functions.
+ return () => unbindFuncs.forEach(unbind => unbind());
+};
+
+// __initialized__.
+// Have we called initialize() yet?
+var initialized = false;
+
+// __initialize()__.
+// Defines the behavior of "extensions.torbutton.security_custom",
+// "extensions.torbutton.security_slider", and the security-sensitive
+// prefs declared in kSecuritySettings.
+var initialize = function () {
+ // Only run once.
+ if (initialized) {
+ return;
+ }
+ log(4, "Initializing security-prefs.js");
+ initialized = true;
+ // When security_custom is set to false, apply security_slider setting
+ // to the security-sensitive prefs.
+ bindPref(kCustomPref, function (custom) {
+ if (custom === false) {
+ write_setting_to_prefs(getIntPref(kSliderPref));
+ }
+ });
+ // If security_slider is given a new value, then security_custom should
+ // be set to false.
+ bindPref(kSliderPref, function (prefIndex) {
+ setBoolPref(kCustomPref, false);
+ write_setting_to_prefs(prefIndex);
+ });
+ // If a security-sensitive pref changes, then decide if the set of pref values
+ // constitutes a security_slider setting or a custom value.
+ watch_security_prefs(settingIndex => {
+ if (settingIndex === null) {
+ setBoolPref(kCustomPref, true);
+ } else {
+ setIntPref(kSliderPref, settingIndex);
+ setBoolPref(kCustomPref, false);
+ }
+ });
+ log(4, "security-prefs.js initialization complete");
+};
+
+// Export initialize() function for external use.
+let EXPORTED_SYMBOLS = ["initialize"];
diff --git a/src/modules/utils.js b/src/modules/utils.js
index b303485..507f008 100644
--- a/src/modules/utils.js
+++ b/src/modules/utils.js
@@ -23,11 +23,11 @@ var getPrefValue = function (prefName) {
}
};
-// __bindPrefAndInit(prefName, prefHandler)__
-// Applies prefHandler to the current value of pref specified by prefName.
-// Re-applies prefHandler whenever the value of the pref changes.
+// __bindPref(prefName, prefHandler, init)__
+// Applies prefHandler whenever the value of the pref changes.
+// If init is true, applies prefHandler to the current value.
// Returns a zero-arg function that unbinds the pref.
-var bindPrefAndInit = function (prefName, prefHandler) {
+var bindPref = function (prefName, prefHandler, init = false) {
let update = () => { prefHandler(getPrefValue(prefName)); },
observer = { observe : function (subject, topic, data) {
if (data === prefName) {
@@ -35,10 +35,19 @@ var bindPrefAndInit = function (prefName, prefHandler) {
}
} };
prefs.addObserver(prefName, observer, false);
- update();
+ if (init) {
+ update();
+ }
return () => { prefs.removeObserver(prefName, observer); };
};
+// __bindPrefAndInit(prefName, prefHandler)__
+// Applies prefHandler to the current value of pref specified by prefName.
+// Re-applies prefHandler whenever the value of the pref changes.
+// Returns a zero-arg function that unbinds the pref.
+var bindPrefAndInit = (prefName, prefHandler) =>
+ bindPref(prefName, prefHandler, true);
+
// ## Environment variables
// __env__.
@@ -173,5 +182,5 @@ var unescapeTorString = function(str) {
};
// Export utility functions for external use.
-let EXPORTED_SYMBOLS = ["bindPrefAndInit", "getPrefValue", "getEnv",
+let EXPORTED_SYMBOLS = ["bindPref", "bindPrefAndInit", "getEnv", "getPrefValue",
"showDialog", "unescapeTorString"];
1
0

[torbutton/maint-1.9.5] Bug 20414.1: Strings for 2016 Tor Browser donation banner
by gk@torproject.org 07 Nov '16
by gk@torproject.org 07 Nov '16
07 Nov '16
commit 9e479e559d65297f5ae322eb89f6740f0156cd1d
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Fri Oct 28 12:49:15 2016 -0700
Bug 20414.1: Strings for 2016 Tor Browser donation banner
---
src/chrome/locale/en/aboutTor.properties | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/src/chrome/locale/en/aboutTor.properties b/src/chrome/locale/en/aboutTor.properties
index d607324..76192f4 100644
--- a/src/chrome/locale/en/aboutTor.properties
+++ b/src/chrome/locale/en/aboutTor.properties
@@ -19,3 +19,10 @@ 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=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
1
0