[Pkg-mozext-commits] [noscript] 01/06: New upstream version 5.0.9

David Prévot taffit at moszumanska.debian.org
Tue Aug 22 20:58:04 UTC 2017


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository noscript.

commit 962200de84e58ff2001da73d8ff3e52ed30dcfe6
Author: David Prévot <david at tilapin.org>
Date:   Tue Aug 22 08:51:22 2017 -1000

    New upstream version 5.0.9
---
 META-INF/manifest.mf                               |  47 ++++++++++----
 META-INF/mozilla.rsa                               | Bin 4196 -> 4196 bytes
 META-INF/mozilla.sf                                |   4 +-
 chrome/noscript.jar!/content/noscript/ABE.g        |   2 +-
 chrome/noscript.jar!/content/noscript/ABE.js       |   4 +-
 .../content/noscript/ClearClickHandler.js          |   4 +-
 .../content/noscript/ExternalFilters.js            |   2 +-
 chrome/noscript.jar!/content/noscript/IOUtil.js    |   2 +-
 .../content/noscript/InjectionChecker.js           |  53 ++++++++--------
 chrome/noscript.jar!/content/noscript/JSURL.js     |   2 +-
 chrome/noscript.jar!/content/noscript/Main.js      |  54 +++-------------
 .../noscript.jar!/content/noscript/MainParent.js   |  44 +++++++++++++
 chrome/noscript.jar!/content/noscript/Policy.js    |   4 +-
 .../content/noscript/ScriptSurrogate.js            |   4 +-
 .../content/noscript/SyntaxChecker.js              |   2 +-
 .../noscript.jar!/content/noscript/URIValidator.js |   2 +-
 chrome/noscript.jar!/content/noscript/WebExt.js    |  21 ++++++-
 chrome/noscript.jar!/content/noscript/about.xul    |   6 +-
 .../content/noscript/noscriptOptions.xul           |   8 +--
 .../content/noscript/noscriptOverlay.js            |   4 +-
 .../content/noscript/noscriptOverlay.xul           |   4 +-
 .../locale/bg-BG/noscript/noscript.dtd             |   2 +-
 .../locale/ca-AD/noscript/noscript.dtd             |   2 +-
 .../locale/cs-CZ/noscript/noscript.dtd             |   2 +-
 .../locale/cy-GB/noscript/noscript.dtd             |   2 +-
 .../noscript.jar!/locale/da/noscript/noscript.dtd  |   2 +-
 .../noscript.jar!/locale/de/noscript/noscript.dtd  |   2 +-
 .../noscript.jar!/locale/el/noscript/noscript.dtd  |   2 +-
 .../locale/en-GB/noscript/noscript.dtd             |   2 +-
 .../locale/en-US/noscript/noscript.dtd             |   2 +-
 .../noscript.jar!/locale/eo/noscript/noscript.dtd  |   2 +-
 .../locale/es-AR/noscript/noscript.dtd             |   2 +-
 .../locale/es-CL/noscript/noscript.dtd             |   2 +-
 .../locale/es-ES/noscript/noscript.dtd             |   2 +-
 .../locale/et-EE/noscript/noscript.dtd             |   2 +-
 .../noscript.jar!/locale/eu/noscript/noscript.dtd  |   2 +-
 .../locale/fa-IR/noscript/noscript.dtd             |   2 +-
 .../noscript.jar!/locale/fi/noscript/noscript.dtd  |   2 +-
 .../noscript.jar!/locale/fr/noscript/noscript.dtd  |   2 +-
 .../locale/gl-ES/noscript/noscript.dtd             |   2 +-
 .../locale/he-IL/noscript/noscript.dtd             |   2 +-
 .../locale/hr-HR/noscript/noscript.dtd             |   2 +-
 .../noscript.jar!/locale/hsb/noscript/noscript.dtd |   2 +-
 .../locale/hu-HU/noscript/noscript.dtd             |   2 +-
 .../locale/id-ID/noscript/noscript.dtd             |   2 +-
 .../noscript.jar!/locale/it/noscript/noscript.dtd  |   2 +-
 .../locale/ja-JP/noscript/noscript.dtd             |   2 +-
 .../locale/kk-KZ/noscript/noscript.dtd             |   2 +-
 .../locale/km-KH/noscript/noscript.dtd             |   2 +-
 .../locale/ko-KR/noscript/noscript.dtd             |   2 +-
 .../noscript.jar!/locale/lt/noscript/noscript.dtd  |   2 +-
 .../locale/mk-MK/noscript/noscript.dtd             |   2 +-
 .../locale/ms-MY/noscript/noscript.dtd             |   2 +-
 .../locale/nb-NO/noscript/noscript.dtd             |   2 +-
 .../noscript.jar!/locale/nl/noscript/noscript.dtd  |   2 +-
 .../noscript.jar!/locale/pl/noscript/noscript.dtd  |   2 +-
 .../locale/pt-BR/noscript/noscript.dtd             |   2 +-
 .../locale/pt-PT/noscript/noscript.dtd             |   2 +-
 .../noscript.jar!/locale/ro/noscript/noscript.dtd  |   2 +-
 .../locale/sk-SK/noscript/noscript.dtd             |   2 +-
 .../locale/sl-SI/noscript/noscript.dtd             |   2 +-
 .../locale/sr-RS/noscript/noscript.dtd             |   2 +-
 .../locale/sv-SE/noscript/noscript.dtd             |   2 +-
 .../locale/te-IN/noscript/noscript.dtd             |   2 +-
 .../noscript.jar!/locale/th/noscript/noscript.dtd  |   2 +-
 .../noscript.jar!/locale/tr/noscript/noscript.dtd  |   2 +-
 .../noscript.jar!/locale/vi/noscript/noscript.dtd  |   2 +-
 .../locale/zh-CN/noscript/noscript.dtd             |   2 +-
 .../locale/zh-TW/noscript/noscript.dtd             |   2 +-
 .../noscript.jar!/webextension/lib/noscript/tld.js |  31 +++++++++
 defaults/preferences/noscript.js                   |   2 +-
 install.rdf                                        |   2 +-
 webextension/Policy.js                             |  19 ++++++
 webextension/WebRequest.js                         |  59 +++++++++++++++++
 webextension/background.html                       |  11 ++++
 webextension/background.js                         |  70 ---------------------
 webextension/legacy.js                             |  28 +++++++++
 webextension/lib/tld.js                            |  31 +++++++++
 webextension/manifest.json                         |  18 +++++-
 webextension/noscript.js                           |  44 +++++++++++++
 80 files changed, 449 insertions(+), 235 deletions(-)

diff --git a/META-INF/manifest.mf b/META-INF/manifest.mf
index 23a7483..78cbdf4 100644
--- a/META-INF/manifest.mf
+++ b/META-INF/manifest.mf
@@ -2,8 +2,8 @@ Manifest-Version: 1.0
 
 Name: install.rdf
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: lVvLO2aI7uSHlqRyKu1r/Q==
-SHA1-Digest: wZdNfcW09flTIAKTuy/HAAFeZ4E=
+MD5-Digest: AzfTtJdDvo7SzNFyYTjWXA==
+SHA1-Digest: ywOWrVRk0VhPWojrWnqI5dl8z3E=
 
 Name: chrome.manifest
 Digest-Algorithms: MD5 SHA1
@@ -27,8 +27,8 @@ SHA1-Digest: 624YpFdNjCFbDE7kLhN+vbF9hgM=
 
 Name: chrome/noscript.jar
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: L7rk1WghDL50vZDdMJQbxA==
-SHA1-Digest: IoFGE5nm/ZKJCx1nszPCOWkIzBI=
+MD5-Digest: z8f4KtYWTzJmFZ4AJ6yHMg==
+SHA1-Digest: m3Mn6yxdcaOl4zSsQnMoaQeZQJk=
 
 Name: components/noscriptService.js
 Digest-Algorithms: MD5 SHA1
@@ -37,16 +37,41 @@ SHA1-Digest: CST2HsndXBM/v2zddWR+BmatjQc=
 
 Name: defaults/preferences/noscript.js
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: 3yV/nDojJnVmeY9iN7AIuQ==
-SHA1-Digest: fd1EJ8c2cgXcI90q/A/GB8ltqqo=
+MD5-Digest: d7tpN5VR9K4GaZCCciYujA==
+SHA1-Digest: ailLVA8P/iqJdMzJ3IrhX7owZPs=
 
-Name: webextension/background.js
+Name: webextension/background.html
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: jGrIPCJYL7AeKRiDAm4dUg==
-SHA1-Digest: wVxE8Pl4vQarPR3kbtPE53w077E=
+MD5-Digest: rcv4U05os99N6ckCs2opDg==
+SHA1-Digest: JBcekwfoEoqK8XvDXxsQzGUeoGI=
+
+Name: webextension/legacy.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: /k5vGS0PYEgudQGaAYyGuQ==
+SHA1-Digest: 5hmZhseA3Yl58RK4feBuyYTNvo8=
 
 Name: webextension/manifest.json
 Digest-Algorithms: MD5 SHA1
-MD5-Digest: 2h5QeobYFUtfVOGAIlN4SA==
-SHA1-Digest: KIdo2Ytov7HDjqhoUmOJ/Ghg7xs=
+MD5-Digest: eQ22YMnCZIK4V0GWs7wzqQ==
+SHA1-Digest: XRKdwWItWXQwh+KrWk+Qh5HuaWk=
+
+Name: webextension/noscript.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: Tllgl/Dq4QQimcnNVTw+NA==
+SHA1-Digest: 3uVjMfwtGmAuT7O5yeLcow+gKDs=
+
+Name: webextension/Policy.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: 1R0QYhT2L+afl0qM9mLSuw==
+SHA1-Digest: Aoyq//RKyeHBYQFW+uYZYIDKo08=
+
+Name: webextension/WebRequest.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: FAB+DraIG6d+DqhS5AFwFw==
+SHA1-Digest: YC3niw8+JJeK/n6KRNRNO2VYGxE=
+
+Name: webextension/lib/tld.js
+Digest-Algorithms: MD5 SHA1
+MD5-Digest: gblX7qMvkSwb6Mp4RkAHgg==
+SHA1-Digest: lkpBHisY+nSR/micPlmCb4/j/pY=
 
diff --git a/META-INF/mozilla.rsa b/META-INF/mozilla.rsa
index 39e512c..8653d85 100644
Binary files a/META-INF/mozilla.rsa and b/META-INF/mozilla.rsa differ
diff --git a/META-INF/mozilla.sf b/META-INF/mozilla.sf
index ce90b10..8f45645 100644
--- a/META-INF/mozilla.sf
+++ b/META-INF/mozilla.sf
@@ -1,4 +1,4 @@
 Signature-Version: 1.0
-MD5-Digest-Manifest: O7S4akQjenJ1qD3va4JVBg==
-SHA1-Digest-Manifest: 3AOlSGmqlieLUT55pSHcRuskbG8=
+MD5-Digest-Manifest: RO+4Ki+b1Umfs6XrPRXAWQ==
+SHA1-Digest-Manifest: qyOnOrO5hs8KRHVbT7Xq33wauKk=
 
diff --git a/chrome/noscript.jar!/content/noscript/ABE.g b/chrome/noscript.jar!/content/noscript/ABE.g
index bd9e4a3..a6fe7f6 100644
--- a/chrome/noscript.jar!/content/noscript/ABE.g
+++ b/chrome/noscript.jar!/content/noscript/ABE.g
@@ -43,7 +43,7 @@ REGEXP    : '^' ~'\n'+ ;
 ALL       : 'ALL' ;
 SUB       : 'SUB' ;
 INC       : 'INC' 'LUSION'? ;
-HTTPVERB  : 'GET' | 'POST' | 'PUT' | 'HEAD' | 'PATCH' | 'DELETE' | 'TRACE' | 'OPTIONS';
+HTTPVERB  : 'GET' | 'POST' | 'PUT' | 'HEAD' | 'PATCH' | 'DELETE' | 'TRACE' | 'OPTIONS';nsI
 INC_TYPE  : 'A'..'Z' ('A'..'Z' | 'A'..'Z' '_' 'A'..'Z')+ ;
 
 
diff --git a/chrome/noscript.jar!/content/noscript/ABE.js b/chrome/noscript.jar!/content/noscript/ABE.js
index 6697761..994c024 100644
--- a/chrome/noscript.jar!/content/noscript/ABE.js
+++ b/chrome/noscript.jar!/content/noscript/ABE.js
@@ -26,8 +26,8 @@ var ABE = {
   init: function(prefParent) {
     const ps = this.prefService = Cc["@mozilla.org/preferences-service;1"]
       .getService(Ci.nsIPrefService).QueryInterface(Ci.nsIPrefBranch);
-    ABEStorage.init(ps.getBranch(prefParent+ "ABE.").QueryInterface(Ci.nsIPrefBranch2));
-    DoNotTrack.init(ps.getBranch(prefParent+ "doNotTrack.").QueryInterface(Ci.nsIPrefBranch2));
+    ABEStorage.init(ps.getBranch(prefParent+ "ABE."));
+    DoNotTrack.init(ps.getBranch(prefParent+ "doNotTrack."));
   },
 
   siteMap: Object.create(null),
diff --git a/chrome/noscript.jar!/content/noscript/ClearClickHandler.js b/chrome/noscript.jar!/content/noscript/ClearClickHandler.js
index fbb8d5d..51f97ff 100644
--- a/chrome/noscript.jar!/content/noscript/ClearClickHandler.js
+++ b/chrome/noscript.jar!/content/noscript/ClearClickHandler.js
@@ -167,8 +167,8 @@ ClearClickHandler.prototype = {
     this._whitelist = {};
     this.whitelistLen = 0;
   },
-
-  isEmbed: (o) => (o instanceof Ci.nsIDOMHTMLObjectElement || o instanceof Ci.nsIDOMHTMLEmbedElement) &&
+  isEmbed: (o) => (o instanceof Ci.nsIDOMHTMLObjectElement ||
+                   (Ci.nsIDOMHTMLEmbedElement && o instanceof Ci.nsIDOMHTMLEmbedElement)) &&
                     !o.contentDocument && ns.getExpando(o, "site") != ns.getSite(o.ownerDocument.documentURI),
 
   swallowEvent: function(ev) {
diff --git a/chrome/noscript.jar!/content/noscript/ExternalFilters.js b/chrome/noscript.jar!/content/noscript/ExternalFilters.js
index 63aee13..a20c317 100644
--- a/chrome/noscript.jar!/content/noscript/ExternalFilters.js
+++ b/chrome/noscript.jar!/content/noscript/ExternalFilters.js
@@ -156,7 +156,7 @@ var ExternalFilters = {
   
   initFromPrefs: function(prefRoot) {
     this.prefs = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefService)
-      .getBranch(prefRoot).QueryInterface(Ci.nsIPrefBranch2);
+      .getBranch(prefRoot).QueryInterface(Ci.nsIPrefBranch);
     this._syncPrefs();
     
   },
diff --git a/chrome/noscript.jar!/content/noscript/IOUtil.js b/chrome/noscript.jar!/content/noscript/IOUtil.js
index e95ef19..5e02e9f 100644
--- a/chrome/noscript.jar!/content/noscript/IOUtil.js
+++ b/chrome/noscript.jar!/content/noscript/IOUtil.js
@@ -191,7 +191,7 @@ var IOUtil = {
 
       switch (url.scheme) {
         case "view-source":
-          return this.unwrapURL(url.path);
+          return this.unwrapURL(url.spec.replace(/^.*?:/, ''));
         case "feed":
         case "pcast":
           let u = url.spec.substring(url.scheme.length + 1);
diff --git a/chrome/noscript.jar!/content/noscript/InjectionChecker.js b/chrome/noscript.jar!/content/noscript/InjectionChecker.js
index b90c2c0..b93becc 100644
--- a/chrome/noscript.jar!/content/noscript/InjectionChecker.js
+++ b/chrome/noscript.jar!/content/noscript/InjectionChecker.js
@@ -1,10 +1,10 @@
 
 const wordCharRx = /\w/g;
 function fuzzify(s) {
-  return s.replace(wordCharRx, '\\W*(?:/[*/][\\s\\S]*)?$&');
+  return s.replace(wordCharRx, '\\W*(?:/[*/][^]*)?$&');
 }
 
-const IC_COMMENT_PATTERN = '\\s*(?:\\/[\\/\\*][\\s\\S]+)?';
+const IC_COMMENT_PATTERN = '\\s*(?:\\/[\\/\\*][^]+)?';
 const IC_WINDOW_OPENER_PATTERN = fuzzify("alert|confirm|prompt|open(?:URL)?|print|show") + "\\w*" + fuzzify("Dialog");
 const IC_EVAL_PATTERN = "\\b(?:" +
   fuzzify('eval|set(?:Timeout|Interval)|(?:f|F)unction|Script|toString|Worker|document|constructor|generateCRMFRequest|jQuery|fetch|write(?:ln)?|__(?:define(?:S|G)etter|noSuchMethod)__|definePropert(?:y|ies)') +
@@ -13,8 +13,8 @@ const IC_EVENT_PATTERN = "on(?:c(?:o(?:n(?:nect(?:i(?:on(?:statechanged|availabl
   // autogenerated from nsHtml5AtomList.h and nsGkAtomList.h
   ;
 const IC_EVENT_DOS_PATTERN =
-      "\\b(?:" + IC_EVENT_PATTERN + ")[\\s\\S]*=[\\s\\S]*\\b(?:" + IC_WINDOW_OPENER_PATTERN + ")\\b" +
-      "|\\b(?:" + IC_WINDOW_OPENER_PATTERN + ")\\b[\\s\\S]+\\b(?:" + IC_EVENT_PATTERN + ")[\\s\\S]*=";
+      "\\b(?:" + IC_EVENT_PATTERN + ")[^]*=[^]*\\b(?:" + IC_WINDOW_OPENER_PATTERN + ")\\b" +
+      "|\\b(?:" + IC_WINDOW_OPENER_PATTERN + ")\\b[^]+\\b(?:" + IC_EVENT_PATTERN + ")[^]*=";
 
 var InjectionChecker = {
   reset: function () {
@@ -86,12 +86,12 @@ var InjectionChecker = {
   checkTemplates(script) {
     let templateExpressions = script.replace(/[[\]{}]/g, ";");
     return templateExpressions !== script &&
-        this.maybeMavo(script) ||
+        (this.maybeMavo(script) ||
         (this.maybeJS(templateExpressions, true) &&
         (this.syntax.check(templateExpressions) ||
           /[^><=]=[^=]/.test(templateExpressions) && this.syntax.check(
             templateExpressions.replace(/([^><=])=(?=[^=])/g, '$1=='))
-        ));
+        )));
   },
 
   maybeMavo(s) {
@@ -243,37 +243,36 @@ var InjectionChecker = {
 ,
 
   _singleAssignmentRx: new RegExp(
-    "(?:\\b" + fuzzify('document') + "\\b[\\s\\S]*\\.|\\s" + fuzzify('setter') + "\\b[\\s\\S]*=)|/.*/[\\s\\S]*(?:\\.(?:" +
-     "\\b" + fuzzify("onerror") + "\\b[\\s\\S]*=|" +
+    "(?:\\b" + fuzzify('document') + "\\b[^]*\\.|\\s" + fuzzify('setter') + "\\b[^]*=)|/.*/[^]*(?:\\.(?:" +
+     "\\b" + fuzzify("onerror") + "\\b[^]*=|" +
       + fuzzify('source|toString') + ")|\\[)|" + IC_EVENT_DOS_PATTERN
   ),
   _riskyAssignmentRx: new RegExp(
-    "\\b(?:" + fuzzify('location|innerHTML|outerHTML') + ")\\b[\\s\\S]*="
+    "\\b(?:" + fuzzify('location|innerHTML|outerHTML') + ")\\b[^]*="
   ),
   _nameRx: new RegExp(
-    "=[\\s\\S]*\\b" + fuzzify('name') + "\\b|" +
-    fuzzify("hostname") + "[\\s\\S]*=[\\s\\S]*(?:\\b\\d|[\"'{}~^|<*/+-])"
+    "=[^]*\\b" + fuzzify('name') + "\\b|" +
+    fuzzify("hostname") + "[^]*=[^]*(?:\\b\\d|[\"'{}~^|<*/+-])"
   ),
   _evalAliasingRx: new RegExp(
-    "=[\\s\\S]+\\[" + IC_EVAL_PATTERN + "\\W*\\]" // TODO: check if it can be coalesced into _maybeJSRx
+    "=[^]+\\[" + IC_EVAL_PATTERN + "\\W*\\]" // TODO: check if it can be coalesced into _maybeJSRx
   ),
 
   _maybeJSRx: new RegExp(
-    // accessor followed by function call or assignment.
-    '(?:(?:\\[[\\s\\S]*\\]|\\.\\D)[\\s\\S]*(?:\\([\\s\\S]*\\)|`[\\s\\S]+`|=[\\s\\S]*\\S)' +
+    '(?:(?:\\[[^]+\\]|\\.\\D)(?:[^]*\\([^]*\\)|[^*]`[^]+`|[^=]*=[^=][^]*\\S)' +
     // double function call
-    '|\\([\\s\\S]*\\([\\s\\S]*\\)' +
+    '|\\([^]*\\([^]*\\)' +
     ')|(?:^|\\W)(?:' + IC_EVAL_PATTERN +
-    ')(?:\\W+[\\s\\S]*|)[(`]|(?:[=(]|\\{[\\s\\S]+:)[\\s\\S]*(?:' + // calling eval-like functions directly or...
+    ')(?:\\W+[^]*|)[(`]|(?:[=(]|\\{[^]+:)[^]*(?:' + // calling eval-like functions directly or...
     IC_EVAL_PATTERN + // ... assigning them to another function possibly called by the victim later
-    ')[\\s\\S]*[\\n,;:|]|\\b(?:' +
+    ')[^]*[\\n,;:|]|\\b(?:' +
     fuzzify('setter|location|innerHTML|outerHTML') +  // eval-like assignments
-    ')\\b[\\s\\S]*=|' +
+    ')\\b[^]*=|' +
     '.' + IC_COMMENT_PATTERN + "src" + IC_COMMENT_PATTERN + '=' +
     IC_EVENT_DOS_PATTERN +
-    "|\\b" + fuzzify("onerror") + "\\b[\\s\\S]*=" +
+    "|\\b" + fuzzify("onerror") + "\\b[^]*=" +
     "|=[s\\\\[ux]?\d{2}" + // escape (unicode/ascii/octal)
-    "|\\b(?:toString|valueOf)\\b" + IC_COMMENT_PATTERN + "=[\\s\\S]*(?:" + IC_EVAL_PATTERN + ")" +
+    "|\\b(?:toString|valueOf)\\b" + IC_COMMENT_PATTERN + "=[^]*(?:" + IC_EVAL_PATTERN + ")" +
     "|(?:\\)|(?:[^\\w$]|^)[$a-zA-Z_\\u0ff-\\uffff][$\\w\\u0ff-\\uffff]*)" + IC_COMMENT_PATTERN + '=>' + // concise function definition
     "|(?:[^\\w$]|^)" + IC_EVENT_PATTERN + IC_COMMENT_PATTERN + "="
   )
@@ -281,8 +280,8 @@ var InjectionChecker = {
 
   _riskyParensRx: new RegExp(
     "(?:^|\\W)(?:(?:" + IC_EVAL_PATTERN + "|on\\w+)\\s*[(`]|" +
-    fuzzify("with") + "\\b[\\s\\S]*\\(|" +
-    fuzzify("for") + "\\b[\\s\\S]*\\([\\s\\S]*[\\w$\\u0080-\\uffff]+[\\s\\S]*\\b(?:" +
+    fuzzify("with") + "\\b[^]*\\(|" +
+    fuzzify("for") + "\\b[^]*\\([^]*[\\w$\\u0080-\\uffff]+[^]*\\b(?:" +
     fuzzify ("in|of") + ")\\b)"
   ),
 
@@ -798,10 +797,10 @@ var InjectionChecker = {
   },
 
   AttributesChecker: new RegExp(
-    "(?:\\W|^)(?:javascript:(?:[\\s\\S]+[=\\\\\\(`\\[\\.<]|[\\s\\S]*(?:\\bname\\b|\\\\[ux]\\d))|" +
-    "data:(?:(?:[a-z]\\w+/\\w[\\w+-]+\\w)?[;,]|[\\s\\S]*;[\\s\\S]*\\b(?:base64|charset=)|[\\s\\S]*,[\\s\\S]*<[\\s\\S]*\\w[\\s\\S]*>))|@" +
-    ("import\\W*(?:\\/\\*[\\s\\S]*)?(?:[\"']|url[\\s\\S]*\\()" +
-      "|-moz-binding[\\s\\S]*:[\\s\\S]*url[\\s\\S]*\\(|\\{\\{[\\s\\S]+\\}\\}")
+    "(?:\\W|^)(?:javascript:(?:[^]+[=\\\\\\(`\\[\\.<]|[^]*(?:\\bname\\b|\\\\[ux]\\d))|" +
+    "data:(?:(?:[a-z]\\w+/\\w[\\w+-]+\\w)?[;,]|[^]*;[^]*\\b(?:base64|charset=)|[^]*,[^]*<[^]*\\w[^]*>))|@" +
+    ("import\\W*(?:\\/\\*[^]*)?(?:[\"']|url[^]*\\()" +
+      "|-moz-binding[^]*:[^]*url[^]*\\(|\\{\\{[^]+\\}\\}")
       .replace(/[a-rt-z\-]/g, "\\W*$&"),
     "i"),
   checkAttributes: function(s) {
@@ -821,7 +820,7 @@ var InjectionChecker = {
   HTMLChecker: new RegExp("<[^\\w<>]*(?:[^<>\"'\\s]*:)?[^\\w<>]*(?:" + // take in account quirks and namespaces
    fuzzify("script|form|style|svg|marquee|(?:link|object|embed|applet|param|i?frame|base|body|meta|ima?ge?|video|audio|bindings|set|isindex|animate|template") +
     ")[^>\\w])|['\"\\s\\0/](?:formaction|style|background|src|lowsrc|ping|innerhtml|data-bind|(?:data-)?mv-(?:\\w+[\\w-]*)|" + IC_EVENT_PATTERN +
-     ")[\\s\\0]*=|<%[\\s\\S]+[=(][\\s\\S]+%>", "i"),
+     ")[\\s\\0]*=|<%[^]+[=(][^]+%>", "i"),
 
   checkHTML: function(s) {
     let links = s.match(/\b(?:href|src|(?:form)?action|\w+-\w+)[\s\0]*=[\s\0]*(?:(["'])[\s\S]*?\1|[^'"<>][^>\s]*)/ig);
diff --git a/chrome/noscript.jar!/content/noscript/JSURL.js b/chrome/noscript.jar!/content/noscript/JSURL.js
index f841433..2119609 100644
--- a/chrome/noscript.jar!/content/noscript/JSURL.js
+++ b/chrome/noscript.jar!/content/noscript/JSURL.js
@@ -67,7 +67,7 @@ var JSURL = {
         sandboxPrototype: w,
         wantXrays: false,
       });
-    var e = (script) =>  Cu.evalInSandbox("with(window) {" + script + "}", s, JSURL.JS_VERSION);
+    var e = (script) =>  Cu.evalInSandbox("with(window) {" + script + "}", s);
     e(this._patch);
     var ret;
     try {
diff --git a/chrome/noscript.jar!/content/noscript/Main.js b/chrome/noscript.jar!/content/noscript/Main.js
index 634ec8c..9ad6f49 100644
--- a/chrome/noscript.jar!/content/noscript/Main.js
+++ b/chrome/noscript.jar!/content/noscript/Main.js
@@ -108,7 +108,7 @@ this.__defineGetter__("ABE", function() {
 });
 
 const ns = {
-  VERSION: "5.0.8.1",
+  VERSION: "5.0.9",
   classDescription: CLASS_NAME,
 	classID: Components.ID(SERVICE_ID),
 	contractID: SERVICE_CTRID,
@@ -135,7 +135,7 @@ const ns = {
         return;
     }
 
-    if (subject instanceof Ci.nsIPrefBranch2) {
+    if (subject instanceof Ci.nsIPrefBranch) {
       this.syncPrefs(subject, data);
     } else {
       switch (topic) {
@@ -705,17 +705,16 @@ const ns = {
     const prefSrv = this.prefService = Cc["@mozilla.org/preferences-service;1"]
       .getService(Ci.nsIPrefService).QueryInterface(Ci.nsIPrefBranch);
 
-    const PBI = Ci.nsIPrefBranch2;
-    this.caps = prefSrv.getBranch("capability.policy.").QueryInterface(PBI);
+    this.caps = prefSrv.getBranch("capability.policy.");
     this.defaultCaps = prefSrv.getDefaultBranch(this.caps.root);
 
-    this.policyPB = prefSrv.getBranch("capability.policy." + this.POLICY_NAME + ".").QueryInterface(PBI);
-    this.prefs = prefSrv.getBranch("noscript.").QueryInterface(PBI);
+    this.policyPB = prefSrv.getBranch("capability.policy." + this.POLICY_NAME + ".");
+    this.prefs = prefSrv.getBranch("noscript.");
 
     this.policyPB.addObserver("sites", this, true);
 
     this.prefs.addObserver("", this, true);
-    this.mozJSPref = prefSrv.getBranch("javascript.").QueryInterface(PBI);
+    this.mozJSPref = prefSrv.getBranch("javascript.");
     this.mozJSPref.addObserver("enabled", this, true);
 
     this.mandatorySites.sitesString = this.getPref("mandatory", "chrome: about: resource: [System Principal]");
@@ -2359,7 +2358,7 @@ const ns = {
         if (this.getExpando(embed, "processed")) continue;
         this.setExpando(embed, "processed", true);
 
-        if (embed instanceof OBJECT || embed instanceof EMBED) {
+        if (embed instanceof OBJECT || EMBED && embed instanceof EMBED) {
           let node = embed;
           while ((node = node.parentNode) && !node.__noscriptBlocked)
             //  if (node instanceof OBJECT) o.embed = embed = node
@@ -2791,7 +2790,7 @@ const ns = {
     if (isLegacyFrame || (mime == doc.contentType && doc.body &&
         (a === doc.body.firstChild &&
          a === doc.body.lastChild ||
-         (ctx.object instanceof Ci.nsIDOMHTMLEmbedElement) && ctx.object.src != url))
+         (Ci.nsIDOMHTMLEmbedElement && ctx.object instanceof Ci.nsIDOMHTMLEmbedElement) && ctx.object.src != url))
       ) { // stand-alone plugin or frame
         doc.body.removeChild(a); // TODO: add a throbber
         if (isLegacyFrame) {
@@ -4480,43 +4479,6 @@ const ns = {
     if(this.consoleLog && !noConsole) this.log(msg);
   },
 
-  ensureUIVisibility: function() {
-    const window =  DOM.mostRecentBrowserWindow;
-    try {
-      const document = window.document;
-      const addonBar = document.getElementById("addon-bar");
-      if (!addonBar) return false;
-
-      const tbbId = "noscript-tbb";
-      let tbb = document.getElementById(tbbId);
-      if (tbb) return false;
-
-      let navBar = document.getElementById("nav-bar");
-
-      let [bar, refId] =
-        addonBar.collapsed && navBar && !navBar.collapsed || !this.getPref("statusIcon", true)
-        ? [navBar, "urlbar-container"]
-        : [addonBar, "status-bar"];
-
-      set = bar.currentSet.split(/\s*,\s*/);
-      if (set.indexOf(tbbId) > -1) return false;
-
-      set.splice(set.indexOf(refId), 0, tbbId);
-
-      bar.setAttribute("currentset", bar.currentSet = set.join(","));
-      document.persist(bar.id, "currentset");
-      try {
-        window.BrowserToolboxCustomizeDone(true);
-      } catch (e) {}
-      try {
-        window.noscriptOverlay.initPopups();
-      } catch(e) {}
-      return true;
-    } catch(e) {
-      this.dump(e);
-      return false;
-    }
-  },
 
 
 }
diff --git a/chrome/noscript.jar!/content/noscript/MainParent.js b/chrome/noscript.jar!/content/noscript/MainParent.js
index ef39d09..377cb6a 100644
--- a/chrome/noscript.jar!/content/noscript/MainParent.js
+++ b/chrome/noscript.jar!/content/noscript/MainParent.js
@@ -153,6 +153,50 @@ var MainParent = {
     }
   },
 
+  ensureUIVisibility: function() {
+
+    try {
+      let window =  DOM.mostRecentBrowserWindow;
+      let document = window.document;
+      const tbbId = "noscript-tbb";
+      let tbb = document.getElementById(tbbId);
+      if (tbb) return false;
+
+       try {
+        let cui = window.CustomizableUI;
+        if (cui) cui.addWidgetToArea(tbbId, cui.AREA_NAVBAR);
+      } catch (e) { // super-legacy
+        let addonBar = document.getElementById("addon-bar");
+        if (!addonBar) return false;
+
+        let navBar = document.getElementById("nav-bar");
+
+        let [bar, refId] =
+          addonBar.collapsed && navBar && !navBar.collapsed || !this.getPref("statusIcon", true)
+          ? [navBar, "urlbar-container"]
+          : [addonBar, "status-bar"];
+
+        let set = bar.currentSet.split(/\s*,\s*/);
+        if (set.indexOf(tbbId) > -1) return false;
+
+        set.splice(set.indexOf(refId), 0, tbbId);
+
+        bar.setAttribute("currentset", bar.currentSet = set.join(","));
+        document.persist(bar.id, "currentset");
+      }
+      try {
+        window.BrowserToolboxCustomizeDone(true);
+      } catch (e) {}
+      try {
+        window.noscriptOverlay.initPopups();
+      } catch(e) {}
+      return true;
+    } catch(e) {
+      this.dump(e);
+      return false;
+    }
+  },
+
   checkSubscriptions: function() {
     var lastCheck = this.getPref("subscription.last_check");
     var checkInterval = this.getPref("subscription.checkInterval", 24) * 60000;
diff --git a/chrome/noscript.jar!/content/noscript/Policy.js b/chrome/noscript.jar!/content/noscript/Policy.js
index 7953928..4d96a62 100644
--- a/chrome/noscript.jar!/content/noscript/Policy.js
+++ b/chrome/noscript.jar!/content/noscript/Policy.js
@@ -244,7 +244,7 @@ var MainContentPolicy = {
           aContentLocation = IOS.newURI(codeBase, cs, aRequestOrigin);
         } catch (e) {}
 
-        if (aContext instanceof Ci.nsIDOMHTMLEmbedElement) {
+        if (Ci.nsIDOMHTMLEmbedElement && aContext instanceof Ci.nsIDOMHTMLEmbedElement) {
           code = aContext.getAttribute("code");
           if (code && /\bjava\b/.test(aMimeTypeGuess)) {
             archive = archive ? code + " " + archive : code;
@@ -439,7 +439,7 @@ var MainContentPolicy = {
               (locationURL = aContentLocation.spec) == (originURL = aRequestOrigin.spec) &&
               aMimeTypeGuess) {
 
-            if ((aContext instanceof Ci.nsIDOMHTMLEmbedElement) &&
+            if (Ci.nsIDOMHTMLEmbedElement && (aContext instanceof Ci.nsIDOMHTMLEmbedElement) &&
               this.isAllowedObject(locationURL, aMimeTypeGuess)
               ) {
               if (logIntercept) this.dump("Plugin document " + locationURL);
diff --git a/chrome/noscript.jar!/content/noscript/ScriptSurrogate.js b/chrome/noscript.jar!/content/noscript/ScriptSurrogate.js
index 3ad5d2c..286e03c 100644
--- a/chrome/noscript.jar!/content/noscript/ScriptSurrogate.js
+++ b/chrome/noscript.jar!/content/noscript/ScriptSurrogate.js
@@ -19,7 +19,7 @@ var ScriptSurrogate = {
 
   _init: function() {
     this.prefs = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefService)
-      .getBranch("noscript.surrogate.").QueryInterface(Ci.nsIPrefBranch2);
+      .getBranch("noscript.surrogate.");
     this._syncPrefs();
 
   },
@@ -319,7 +319,7 @@ var ScriptSurrogate = {
       }
       let code = "with(window){" + scriptBlock + "}delete this.env;";
       if ("keys" in Object) code += "Object.keys(this).forEach(function(p) { window[p] = this[p] }, this);";
-      Cu.evalInSandbox(code, s, this.JS_VERSION);
+      Cu.evalInSandbox(code, s);
     } catch (e) {
       if (ns.consoleDump) {
         ns.dump(e);
diff --git a/chrome/noscript.jar!/content/noscript/SyntaxChecker.js b/chrome/noscript.jar!/content/noscript/SyntaxChecker.js
index b73d31f..3797d45 100644
--- a/chrome/noscript.jar!/content/noscript/SyntaxChecker.js
+++ b/chrome/noscript.jar!/content/noscript/SyntaxChecker.js
@@ -26,6 +26,6 @@ SyntaxChecker.prototype = {
     return null;
   },
   ev: function(s) {
-    return Cu.evalInSandbox(s, this.sandbox, this.version);
+    return Cu.evalInSandbox(s, this.sandbox);
   }
 };
diff --git a/chrome/noscript.jar!/content/noscript/URIValidator.js b/chrome/noscript.jar!/content/noscript/URIValidator.js
index 2bcea5c..b7cb757 100644
--- a/chrome/noscript.jar!/content/noscript/URIValidator.js
+++ b/chrome/noscript.jar!/content/noscript/URIValidator.js
@@ -30,7 +30,7 @@ var URIValidator = {
   _init: function() {
     this.validators = {};
     this.prefs = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefService)
-      .getBranch("noscript.urivalid.").QueryInterface(Ci.nsIPrefBranch2);
+      .getBranch("noscript.urivalid.");
     for (var key  of this.prefs.getChildList("", {})) {
       this.parseValidator(key);
     }
diff --git a/chrome/noscript.jar!/content/noscript/WebExt.js b/chrome/noscript.jar!/content/noscript/WebExt.js
index 6c6ac5c..82f97e4 100644
--- a/chrome/noscript.jar!/content/noscript/WebExt.js
+++ b/chrome/noscript.jar!/content/noscript/WebExt.js
@@ -4,8 +4,17 @@ var WebExt = {
   running: false,
   port: null,
   saveData(json = ns.conf2JSON()) {
+    this.tell("saveData", json);
+  },
+  start(policy = null) {
+    this.tell("start", policy);
+  },
+  stop() {
+    this.tell("stop");
+  },
+  tell(type, data) {
     if (this.port) {
-      this.port.postMessage({ type: "saveData", data: json });
+      this.port.postMessage({ type, data });
     }
   }
 };
@@ -31,13 +40,21 @@ try {
       WebExt.started = true;
       ns.dump(`${addonId} - embedded webext started`);
       browser.runtime.onMessage.addListener(msg => {
-        WebExt.running = true;
+        switch(msg) {
+          case "STARTED":
+            WebExt.running = true;
+            break;
+          case "STOPPED":
+            WebExt.running = false;
+            break;
+        }
         ns.dump(`${addonId} - received message from embedded webext ${msg}`);
       });
       browser.runtime.onConnect.addListener(port => {
         ns.dump(`${addonId} - webext connected`);
         WebExt.port = port;
         WebExt.saveData();
+        WebExt.stop();
       });
     }).catch(err => {
       Components.utils.reportError(
diff --git a/chrome/noscript.jar!/content/noscript/about.xul b/chrome/noscript.jar!/content/noscript/about.xul
index f0e296e..19da246 100644
--- a/chrome/noscript.jar!/content/noscript/about.xul
+++ b/chrome/noscript.jar!/content/noscript/about.xul
@@ -48,7 +48,7 @@ function about_onload() {
   
   var str = getString("aboutTitle",["NoScript"]);
   if(str) document.title = str;
-  str = getString("version", ["5.0.8.1"]);
+  str = getString("version", ["5.0.9"]);
   if(str) document.getElementById("extensionVersion").setAttribute("value", str);
   
   setString("extensionDescription",null,"extensions.{73a6fe31-595d-460b-a920-fcc0f8843232}.description");
@@ -86,7 +86,7 @@ function about_open(url, features) {
 <hbox id="headBox" align="end">
 <vbox flex="1">
 <label value="NoScript" id="extensionName" crop="right"/>
-<label value="Version 5.0.8.1" id="extensionVersion" crop="right"/>
+<label value="Version 5.0.9" id="extensionVersion" crop="right"/>
 </vbox>
 <vbox flex="1" align="end">
 <hbox align="end">
@@ -164,7 +164,7 @@ function about_open(url, features) {
 <hbox>
 <label id="license" class="text-link" tooltiptext="Read end-user license" onclick="about_open('chrome://noscript/content/NoScript_License.txt')">License</label>
 <spacer flex="1"/>
-<label id="changelog" class="text-link" align="center" tooltiptext="See Changelog" onclick="about_open('https://noscript.net/changelog#5.0.8.1')">Changelog</label>
+<label id="changelog" class="text-link" align="center" tooltiptext="See Changelog" onclick="about_open('https://noscript.net/changelog#5.0.9')">Changelog</label>
 <spacer flex="1"/>
 <label id="extensionHomepage" class="text-link" tooltiptext="Visit Extension Home Page" onclick="about_open('https://noscript.net')">https://noscript.net</label>
 </hbox>
diff --git a/chrome/noscript.jar!/content/noscript/noscriptOptions.xul b/chrome/noscript.jar!/content/noscript/noscriptOptions.xul
index 3fd08f2..3a53470 100644
--- a/chrome/noscript.jar!/content/noscript/noscriptOptions.xul
+++ b/chrome/noscript.jar!/content/noscript/noscriptOptions.xul
@@ -22,10 +22,10 @@
   persist="screenX screenY"
   xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
 
-  <script type="application/x-javascript;version=1.8" src="noscript.js" />
-  <script type="application/x-javascript;version=1.8" src="iaUI.js" />
-  <script type="application/x-javascript;version=1.8" src="tree-copy.js" />
-  <script type="application/x-javascript;version=1.8" src="noscriptOptions.js" />
+  <script type="application/x-javascript" src="noscript.js" />
+  <script type="application/x-javascript" src="iaUI.js" />
+  <script type="application/x-javascript" src="tree-copy.js" />
+  <script type="application/x-javascript" src="noscriptOptions.js" />
 
   <vbox style="width: &noscriptOptionsWidth;">
   <tabbox id="nsopt-tabsMain">
diff --git a/chrome/noscript.jar!/content/noscript/noscriptOverlay.js b/chrome/noscript.jar!/content/noscript/noscriptOverlay.js
index a61409d..851f10b 100644
--- a/chrome/noscript.jar!/content/noscript/noscriptOverlay.js
+++ b/chrome/noscript.jar!/content/noscript/noscriptOverlay.js
@@ -1400,7 +1400,9 @@ return noscriptUtil.service ? {
 
   get statusIcon() {
     var statusIcon = $("noscript-statusIcon") || $("noscript-tbb");
-    if (!statusIcon) return null; // avoid mess with early calls
+    if (!statusIcon) {
+      return this._fakeIcon || (this._fakeIcon = document.createElement("toolbar-button")); // ugly hack for Firefox 57
+    }
     delete this.statusIcon;
     return (this.statusIcon = statusIcon);
   },
diff --git a/chrome/noscript.jar!/content/noscript/noscriptOverlay.xul b/chrome/noscript.jar!/content/noscript/noscriptOverlay.xul
index a39964d..6145cbb 100644
--- a/chrome/noscript.jar!/content/noscript/noscriptOverlay.xul
+++ b/chrome/noscript.jar!/content/noscript/noscriptOverlay.xul
@@ -6,8 +6,8 @@
 <overlay id="noscriptOverlay" 
   xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
 
-  <script type="application/x-javascript;version=1.8" src="noscript.js" />
-  <script type="application/x-javascript;version=1.8" src="noscriptOverlay.js"/>
+  <script type="application/x-javascript" src="noscript.js" />
+  <script type="application/x-javascript" src="noscriptOverlay.js"/>
   
   <toolbarpalette id="BrowserToolbarPalette">
     <toolbarbutton id="noscript-tbb" 
diff --git a/chrome/noscript.jar!/locale/bg-BG/noscript/noscript.dtd b/chrome/noscript.jar!/locale/bg-BG/noscript/noscript.dtd
index 975f03b..546922d 100644
--- a/chrome/noscript.jar!/locale/bg-BG/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/bg-BG/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Настройки…">
 <!ENTITY noscriptOptions.accesskey "Н">
 <!ENTITY noscriptOptionsLong "Настройки на NoScript">
-<!ENTITY noscriptAbout "За NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "За NoScript 5.0.9">
 <!ENTITY noscriptPermissionsText "Можете да зададете в кои уеб-сайтове е позволено да се използват скриптовете. Напишете адреса или домейна (например "http://www.site.com" или "site.com") на сайта, който искате да разрешите и натиснете Разреши.">
 <!ENTITY noscriptWebAddress "Адрес на уеб-сайта:">
 <!ENTITY noscriptAllow "Разреши">
diff --git a/chrome/noscript.jar!/locale/ca-AD/noscript/noscript.dtd b/chrome/noscript.jar!/locale/ca-AD/noscript/noscript.dtd
index 9db5e9c..162bba6 100644
--- a/chrome/noscript.jar!/locale/ca-AD/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/ca-AD/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opcions...">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Opcions de NoScript">
-<!ENTITY noscriptAbout "Quant a NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "Quant a NoScript 5.0.9">
 <!ENTITY noscriptPermissionsText "Podeu especificar quins llocs web poden executar seqüències. El tipus d'adreça o el domini (p.ex. "http://www.site.com" o "site.com") del lloc al qual voleu donar permissos i feu clic a Permet.">
 <!ENTITY noscriptWebAddress "Adreça del lloc web:">
 <!ENTITY noscriptAllow "Permet">
diff --git a/chrome/noscript.jar!/locale/cs-CZ/noscript/noscript.dtd b/chrome/noscript.jar!/locale/cs-CZ/noscript/noscript.dtd
index c2c7049..b206a32 100644
--- a/chrome/noscript.jar!/locale/cs-CZ/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/cs-CZ/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Nastavení...">
 <!ENTITY noscriptOptions.accesskey "N">
 <!ENTITY noscriptOptionsLong "Nastavení NoScript">
-<!ENTITY noscriptAbout "O rozšíření NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "O rozšíření NoScript 5.0.9">
 <!ENTITY noscriptPermissionsText "Můžete si zvolit, které webové stránky mají povoleno spouštět skripty. Zadejte adresu (např. http://www.site.com nebo site.com) na které se nachází stránka, pro kterou chcete skripty povolit a klepněte na Povolit.">
 <!ENTITY noscriptWebAddress "Adresa webové stránky:">
 <!ENTITY noscriptAllow "Povolit">
diff --git a/chrome/noscript.jar!/locale/cy-GB/noscript/noscript.dtd b/chrome/noscript.jar!/locale/cy-GB/noscript/noscript.dtd
index cc311a2..fbaeda0 100644
--- a/chrome/noscript.jar!/locale/cy-GB/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/cy-GB/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opsiynau">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Opsiynau NoScript">
-<!ENTITY noscriptAbout "Yngylch NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "Yngylch NoScript 5.0.9">
 <!ENTITY noscriptPermissionsText "Cewch enwi pa wefannau sy'n cael rhedeg sgriptiau. Teipiwch gyfeiriad neu barth (e.e. "http://www.site.com" neu "site.com") y safle rydych eisiau ei ganiatau ac wedyn cliciwch Caniatau.">
 <!ENTITY noscriptWebAddress "Cyfeiriad wefan">
 <!ENTITY noscriptAllow "Caniatau">
diff --git a/chrome/noscript.jar!/locale/da/noscript/noscript.dtd b/chrome/noscript.jar!/locale/da/noscript/noscript.dtd
index c07db9e..0cb6311 100644
--- a/chrome/noscript.jar!/locale/da/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/da/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Indstillinger…">
 <!ENTITY noscriptOptions.accesskey "I">
 <!ENTITY noscriptOptionsLong "NoScript Indstillinger">
-<!ENTITY noscriptAbout "Om NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "Om NoScript 5.0.9">
 <!ENTITY noscriptPermissionsText "Du kan angive hvilke websteder der må udføre scripts. Indtast adresse eller domæne (f.eks. "http://www.site.com" eller "site.com") på det websted du ønsker at tillade og klik på Tillad.">
 <!ENTITY noscriptWebAddress "Webstedets adresse:">
 <!ENTITY noscriptAllow "Tillad">
diff --git a/chrome/noscript.jar!/locale/de/noscript/noscript.dtd b/chrome/noscript.jar!/locale/de/noscript/noscript.dtd
index 7827664..4f35962 100644
--- a/chrome/noscript.jar!/locale/de/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/de/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Einstellungen…">
 <!ENTITY noscriptOptions.accesskey "E">
 <!ENTITY noscriptOptionsLong "NoScript - Einstellungen">
-<!ENTITY noscriptAbout "Über NoScript 5.0.8.1…">
+<!ENTITY noscriptAbout "Über NoScript 5.0.9…">
 <!ENTITY noscriptPermissionsText "Sie können festlegen, welchen Websites Sie das Ausführen von Skripten erlauben möchten. Geben Sie bitte die exakte Adresse oder die Domain der Website ein (z.B. "http://www.site.com" oder "site.com"), für die Sie dies zulassen möchten, und klicken Sie dann auf "Erlauben".">
 <!ENTITY noscriptWebAddress "Adresse der Website:">
 <!ENTITY noscriptAllow "Erlauben">
diff --git a/chrome/noscript.jar!/locale/el/noscript/noscript.dtd b/chrome/noscript.jar!/locale/el/noscript/noscript.dtd
index 3efc066..c97ad2e 100644
--- a/chrome/noscript.jar!/locale/el/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/el/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Επιλογές">
 <!ENTITY noscriptOptions.accesskey "Ε">
 <!ENTITY noscriptOptionsLong "Επιλογές NoScript">
-<!ENTITY noscriptAbout "Περί NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "Περί NoScript 5.0.9">
 <!ENTITY noscriptPermissionsText "Μπορείτε να καθορίσετε για ποιους ιστότοπους θα επιτρέπεται η εκτέλεση σεναρίων εντολών. Πληκτρολογήστε τη διεύθυνση τομέα (πχ. "http://www.site.com" or "site.com") του ιστότοπου που θέλετε και μετά κάντε κλικ στο «Να επιτρέπεται»">
 <!ENTITY noscriptWebAddress "Διεύθυνση ιστότοπου">
 <!ENTITY noscriptAllow "Να επιτρέπεται">
diff --git a/chrome/noscript.jar!/locale/en-GB/noscript/noscript.dtd b/chrome/noscript.jar!/locale/en-GB/noscript/noscript.dtd
index a86176f..d50efaf 100644
--- a/chrome/noscript.jar!/locale/en-GB/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/en-GB/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Options…">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "NoScript Options">
-<!ENTITY noscriptAbout "About NoScript 5.0.8.1…">
+<!ENTITY noscriptAbout "About NoScript 5.0.9…">
 <!ENTITY noscriptPermissionsText "You can specify which web sites are allowed to execute scripts. Type the address or the domain (e.g. "http://www.site.com" or "site.com") of the site you want to allow and then click Allow.">
 <!ENTITY noscriptWebAddress "Address of web site:">
 <!ENTITY noscriptAllow "Allow">
diff --git a/chrome/noscript.jar!/locale/en-US/noscript/noscript.dtd b/chrome/noscript.jar!/locale/en-US/noscript/noscript.dtd
index ed01da5..17eafc3 100644
--- a/chrome/noscript.jar!/locale/en-US/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/en-US/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Options…">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "NoScript Options">
-<!ENTITY noscriptAbout "About NoScript 5.0.8.1…">
+<!ENTITY noscriptAbout "About NoScript 5.0.9…">
 <!ENTITY noscriptPermissionsText "You can specify which web sites are allowed to execute scripts. Type the address or the domain (e.g. "http://www.site.com" or "site.com") of the site you want to allow and then click Allow.">
 <!ENTITY noscriptWebAddress "Address of web site:">
 <!ENTITY noscriptAllow "Allow">
diff --git a/chrome/noscript.jar!/locale/eo/noscript/noscript.dtd b/chrome/noscript.jar!/locale/eo/noscript/noscript.dtd
index c542cab..eac5321 100644
--- a/chrome/noscript.jar!/locale/eo/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/eo/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opcioj…">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Opcioj de NoScript">
-<!ENTITY noscriptAbout "Pri NoScript 5.0.8.1…">
+<!ENTITY noscriptAbout "Pri NoScript 5.0.9…">
 <!ENTITY noscriptPermissionsText "Vi povas specifi, kiuj ttt-ejoj rajtu plenumigi skriptojn. Entajpu la adreson aŭ la domajnonomon (ekz. “http://www.retejo.org” aŭ “retejo.org”) de la ttt-ejo, kiun vi volas rajtigi, kaj poste alklaku “Rajtigi”.">
 <!ENTITY noscriptWebAddress "Adreso de retpaĝaro:">
 <!ENTITY noscriptAllow "Rajtigi">
diff --git a/chrome/noscript.jar!/locale/es-AR/noscript/noscript.dtd b/chrome/noscript.jar!/locale/es-AR/noscript/noscript.dtd
index 38a4c5c..6395c77 100644
--- a/chrome/noscript.jar!/locale/es-AR/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/es-AR/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opciones…">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Opciones de NoScript">
-<!ENTITY noscriptAbout "Acerca de NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "Acerca de NoScript 5.0.9">
 <!ENTITY noscriptPermissionsText "Puede especificar a cuáles sitios web le permitirá ejecutar scripts. Escriba la dirección o el dominio (por ejemplo, "http://www.sitio.com" o "sitio.com") del sitio y luego haga clic en Permitir.">
 <!ENTITY noscriptWebAddress "Dirección del sitio web:">
 <!ENTITY noscriptAllow "Permitir">
diff --git a/chrome/noscript.jar!/locale/es-CL/noscript/noscript.dtd b/chrome/noscript.jar!/locale/es-CL/noscript/noscript.dtd
index 293b640..9aa5f0f 100644
--- a/chrome/noscript.jar!/locale/es-CL/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/es-CL/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Options…">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Opciones de NoScript">
-<!ENTITY noscriptAbout "About NoScript 5.0.8.1…">
+<!ENTITY noscriptAbout "About NoScript 5.0.9…">
 <!ENTITY noscriptPermissionsText "You can specify which web sites are allowed to execute scripts. Type the address or the domain (e.g. "http://www.site.com" or "site.com") of the site you want to allow and then click Allow.">
 <!ENTITY noscriptWebAddress "Address of web site:">
 <!ENTITY noscriptAllow "Allow">
diff --git a/chrome/noscript.jar!/locale/es-ES/noscript/noscript.dtd b/chrome/noscript.jar!/locale/es-ES/noscript/noscript.dtd
index b97991d..0932ad8 100644
--- a/chrome/noscript.jar!/locale/es-ES/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/es-ES/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opciones…">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Configuración de NoScript">
-<!ENTITY noscriptAbout "Acerca de NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "Acerca de NoScript 5.0.9">
 <!ENTITY noscriptPermissionsText "Aquí puede especificar las páginas web a las que va a permitir ejecutar código JavaScript. Escriba la dirección de la web que quiera incluir (ej. "http://www.paginaweb.com" o "paginaweb.com") y después pulse "Permitir".">
 <!ENTITY noscriptWebAddress "Dirección de la página web:">
 <!ENTITY noscriptAllow "Permitir">
diff --git a/chrome/noscript.jar!/locale/et-EE/noscript/noscript.dtd b/chrome/noscript.jar!/locale/et-EE/noscript/noscript.dtd
index e5ab06a..e99d431 100644
--- a/chrome/noscript.jar!/locale/et-EE/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/et-EE/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Sätted…">
 <!ENTITY noscriptOptions.accesskey "S">
 <!ENTITY noscriptOptionsLong "NoScripti sätted">
-<!ENTITY noscriptAbout "Täpsemalt lisast NoScript 5.0.8.1…">
+<!ENTITY noscriptAbout "Täpsemalt lisast NoScript 5.0.9…">
 <!ENTITY noscriptPermissionsText "Sa saad määrata, millistel veebilehtedel lubatakse skripte käivitada. Kirjuta veebilehe aadress või domeeni, mida soovid lubada (nt "http://www.site.com" või "site.com") ja klõpsa Luba nuppu">
 <!ENTITY noscriptWebAddress "Veebilehe aadress:">
 <!ENTITY noscriptAllow "Luba">
diff --git a/chrome/noscript.jar!/locale/eu/noscript/noscript.dtd b/chrome/noscript.jar!/locale/eu/noscript/noscript.dtd
index 5cc37b5..6b22bc2 100644
--- a/chrome/noscript.jar!/locale/eu/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/eu/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Aukerak:">
 <!ENTITY noscriptOptions.accesskey "A">
 <!ENTITY noscriptOptionsLong "NoScript aukerak">
-<!ENTITY noscriptAbout "NoScript 5.0.8.1-eri buruz:">
+<!ENTITY noscriptAbout "NoScript 5.0.9-eri buruz:">
 <!ENTITY noscriptPermissionsText "Zein webgunek script-ak exekuta ditzakeen zehaztu dezakezu. Idatzi script-ak erabiltzea onartzea nahi duzun domeinuaren izena (adib. "http://www.gunea.org" or "gunea.org") eta Onartu sakatu.">
 <!ENTITY noscriptWebAddress "Webgunearen helbidea:">
 <!ENTITY noscriptAllow "Onartu">
diff --git a/chrome/noscript.jar!/locale/fa-IR/noscript/noscript.dtd b/chrome/noscript.jar!/locale/fa-IR/noscript/noscript.dtd
index 01b2eae..40abc80 100644
--- a/chrome/noscript.jar!/locale/fa-IR/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/fa-IR/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "تنظیمات...">
 <!ENTITY noscriptOptions.accesskey "ت">
 <!ENTITY noscriptOptionsLong "تنظیمات NoScript">
-<!ENTITY noscriptAbout "درباره NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "درباره NoScript 5.0.9">
 <!ENTITY noscriptPermissionsText "شما می توانید سایت هایی را که اجازه اجرای اسکریپت دارند را مشخص کنید.آدرس سایت یا نام دامنه را وارد کنید.(به عنوان مثال "http://www.site.com" یا "site.com")">
 <!ENTITY noscriptWebAddress "آدرس وب سایت :">
 <!ENTITY noscriptAllow "اجازه دادن">
diff --git a/chrome/noscript.jar!/locale/fi/noscript/noscript.dtd b/chrome/noscript.jar!/locale/fi/noscript/noscript.dtd
index afad65c..fece1b6 100644
--- a/chrome/noscript.jar!/locale/fi/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/fi/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Asetukset…">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "NoScript asetukset">
-<!ENTITY noscriptAbout "Tietoja NoScript 5.0.8.1istä…">
+<!ENTITY noscriptAbout "Tietoja NoScript 5.0.9istä…">
 <!ENTITY noscriptPermissionsText "Voit määrittää verkkosivut joiden sallitaan suorittaa scriptejä. Kirjoita verkko-osoite tai verkkonimi (esim. "http://www.site.com" tai "site.com") jonka haluat sallia ja paina Salli.">
 <!ENTITY noscriptWebAddress "Verkkosivun osoite:">
 <!ENTITY noscriptAllow "Salli">
diff --git a/chrome/noscript.jar!/locale/fr/noscript/noscript.dtd b/chrome/noscript.jar!/locale/fr/noscript/noscript.dtd
index 9e42ed5..a067f11 100644
--- a/chrome/noscript.jar!/locale/fr/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/fr/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Options">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Options de NoScript">
-<!ENTITY noscriptAbout "À propos de NoScript 5.0.8.1…">
+<!ENTITY noscriptAbout "À propos de NoScript 5.0.9…">
 <!ENTITY noscriptPermissionsText "Il est possible de spécifier quels sites Web sont autorisés à exécuter des scripts. Saisissez l'adresse exacte du site que vous désirez autoriser puis cliquez sur Autoriser.">
 <!ENTITY noscriptWebAddress "Adresse du site Web :">
 <!ENTITY noscriptAllow "Autoriser">
diff --git a/chrome/noscript.jar!/locale/gl-ES/noscript/noscript.dtd b/chrome/noscript.jar!/locale/gl-ES/noscript/noscript.dtd
index dbf1e3e..91ee11e 100644
--- a/chrome/noscript.jar!/locale/gl-ES/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/gl-ES/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opcións...">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Opcións de NoScript">
-<!ENTITY noscriptAbout "Acerca de NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "Acerca de NoScript 5.0.9">
 <!ENTITY noscriptPermissionsText "Podes especificar que páxinas web poden executar scripts. Teclea o enderezo ou o dominio (por exemplo "http://www.paxina.com" ou "paxina.com") do sitio que queres autorizar e despois preme en "Permitir".">
 <!ENTITY noscriptWebAddress "Enderezo web:">
 <!ENTITY noscriptAllow "Permitir">
diff --git a/chrome/noscript.jar!/locale/he-IL/noscript/noscript.dtd b/chrome/noscript.jar!/locale/he-IL/noscript/noscript.dtd
index ffb6277..0406793 100644
--- a/chrome/noscript.jar!/locale/he-IL/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/he-IL/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "הגדרות...">
 <!ENTITY noscriptOptions.accesskey "">
 <!ENTITY noscriptOptionsLong "NoScript הגדרות של">
-<!ENTITY noscriptAbout "אודות NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "אודות NoScript 5.0.9">
 <!ENTITY noscriptPermissionsText "ציין אילו אתרים יכולים לקבל היתר להפעלת קבצי Script. הקלד את כתובת האתר או את שם התחום (כגון: "http://www.site.com" או "site.com") ולאחר מכן לחץ על התר.">
 <!ENTITY noscriptWebAddress "כתובת/תחום:">
 <!ENTITY noscriptAllow "התר">
diff --git a/chrome/noscript.jar!/locale/hr-HR/noscript/noscript.dtd b/chrome/noscript.jar!/locale/hr-HR/noscript/noscript.dtd
index 0315bac..684b87b 100644
--- a/chrome/noscript.jar!/locale/hr-HR/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/hr-HR/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opcije...">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "NoScript Opcije">
-<!ENTITY noscriptAbout "O NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "O NoScript 5.0.9">
 <!ENTITY noscriptPermissionsText "Možete odrediti koje web stranice imaju dopuštenje za izvođenje skripti. Upišite adresu ili domenu (npr. "http://www.stranica.hr" ili "stranica.hr") stranice kojoj želite dopustiti i kliknite na Dopusti.">
 <!ENTITY noscriptWebAddress "Adresa web stranice:">
 <!ENTITY noscriptAllow "Dopusti">
diff --git a/chrome/noscript.jar!/locale/hsb/noscript/noscript.dtd b/chrome/noscript.jar!/locale/hsb/noscript/noscript.dtd
index 340280e..cd13abf 100644
--- a/chrome/noscript.jar!/locale/hsb/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/hsb/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opcije…">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Opcije NoScript">
-<!ENTITY noscriptAbout "Wo NoScript 5.0.8.1…">
+<!ENTITY noscriptAbout "Wo NoScript 5.0.9…">
 <!ENTITY noscriptPermissionsText "Móžeće podać, kotre websydła smědźa skripty wuwjesć. Zapisajće adresu abo domenu  (na př. "http://www.site.com" abo "site.com") websydła, kotremuž chceće to dowolić a klikńće potom na "Dowolić".">
 <!ENTITY noscriptWebAddress "Adresa websydła:">
 <!ENTITY noscriptAllow "Dowolić">
diff --git a/chrome/noscript.jar!/locale/hu-HU/noscript/noscript.dtd b/chrome/noscript.jar!/locale/hu-HU/noscript/noscript.dtd
index d7971f7..ec93859 100644
--- a/chrome/noscript.jar!/locale/hu-HU/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/hu-HU/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Beállítások…">
 <!ENTITY noscriptOptions.accesskey "B">
 <!ENTITY noscriptOptionsLong "A NoScript beállításai">
-<!ENTITY noscriptAbout "A NoScript 5.0.8.1 névjegye">
+<!ENTITY noscriptAbout "A NoScript 5.0.9 névjegye">
 <!ENTITY noscriptPermissionsText "Megadhatja, hogy mely webhelyek számára engedélyezi a parancsfájlok futtatását. Írja be az engedélyezni kívánt webhely címét vagy tartomány nevét (pl. "http://www.webhely.hu" vagy "webhely.hu"), majd kattintson az Engedélyezés gombra.">
 <!ENTITY noscriptWebAddress "A webhely címe:">
 <!ENTITY noscriptAllow "Engedélyezés">
diff --git a/chrome/noscript.jar!/locale/id-ID/noscript/noscript.dtd b/chrome/noscript.jar!/locale/id-ID/noscript/noscript.dtd
index 925d02d..04b8384 100644
--- a/chrome/noscript.jar!/locale/id-ID/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/id-ID/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Pilihan...">
 <!ENTITY noscriptOptions.accesskey "P">
 <!ENTITY noscriptOptionsLong "Pilihan NoScript">
-<!ENTITY noscriptAbout "Tentang NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "Tentang NoScript 5.0.9">
 <!ENTITY noscriptPermissionsText "Anda dapat menentukan situs web mana yang diijinkan menjalankan naskah. Masukkan alamat atau domain (contoh: "http://www.site.com" atau "site.com") yang akan diberi ijin kemudian klik Ijinkan.">
 <!ENTITY noscriptWebAddress "Alamat situs web:">
 <!ENTITY noscriptAllow "Ijinkan">
diff --git a/chrome/noscript.jar!/locale/it/noscript/noscript.dtd b/chrome/noscript.jar!/locale/it/noscript/noscript.dtd
index b247264..c01fc7f 100644
--- a/chrome/noscript.jar!/locale/it/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/it/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opzioni…">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Opzioni NoScript">
-<!ENTITY noscriptAbout "Informazioni su NoScript 5.0.8.1…">
+<!ENTITY noscriptAbout "Informazioni su NoScript 5.0.9…">
 <!ENTITY noscriptPermissionsText "Qui si possono indicare i siti per i quali l'esecuzione degli script è consentita. Digitare l'indirizzo o il dominio (es. "http://www.sito.com" oppure "sito.com")  e fare clic su Permetti.">
 <!ENTITY noscriptWebAddress "Indirizzo del sito:">
 <!ENTITY noscriptAllow "Permetti">
diff --git a/chrome/noscript.jar!/locale/ja-JP/noscript/noscript.dtd b/chrome/noscript.jar!/locale/ja-JP/noscript/noscript.dtd
index 5bd4ce8..9a0e951 100644
--- a/chrome/noscript.jar!/locale/ja-JP/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/ja-JP/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "オプション...">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "NoScript オプション">
-<!ENTITY noscriptAbout "NoScript 5.0.8.1について...">
+<!ENTITY noscriptAbout "NoScript 5.0.9について...">
 <!ENTITY noscriptPermissionsText "JavaScriptを許可するサイトを指定する事ができます。許可したいサイトのアドレスかドメインを入力して、ボタンを押してください。(例: "http://www.site.com" または "site.com")">
 <!ENTITY noscriptWebAddress "ウェブサイトのアドレス:">
 <!ENTITY noscriptAllow "許可する">
diff --git a/chrome/noscript.jar!/locale/kk-KZ/noscript/noscript.dtd b/chrome/noscript.jar!/locale/kk-KZ/noscript/noscript.dtd
index 6564789..a82275a 100644
--- a/chrome/noscript.jar!/locale/kk-KZ/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/kk-KZ/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Баптаулары">
 <!ENTITY noscriptOptions.accesskey "Б">
 <!ENTITY noscriptOptionsLong "NoScript баптаулары">
-<!ENTITY noscriptAbout "NoScript 5.0.8.1 туралы...">
+<!ENTITY noscriptAbout "NoScript 5.0.9 туралы...">
 <!ENTITY noscriptPermissionsText "Қай сайттарға JavaScript орындауға рұқсат екенін көрсете аласыз. Рұқсат етілетін сайттың домен адресін енгізіңіз (мысалы, "http://www.site.com" немесе "site.com"), содан кейін Рұқсат ету басыңыз.">
 <!ENTITY noscriptWebAddress "Веб-сайт адресі:">
 <!ENTITY noscriptAllow "Рұқсат ету">
diff --git a/chrome/noscript.jar!/locale/km-KH/noscript/noscript.dtd b/chrome/noscript.jar!/locale/km-KH/noscript/noscript.dtd
index 3d3b992..aea4d15 100644
--- a/chrome/noscript.jar!/locale/km-KH/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/km-KH/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Options...">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "NoScript Options">
-<!ENTITY noscriptAbout "About NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "About NoScript 5.0.9">
 <!ENTITY noscriptPermissionsText "You can specify which web sites are allowed to execute scripts. Type the address or the domain (e.g. "http://www.site.com" or "site.com") of the site you want to allow and then click Allow.">
 <!ENTITY noscriptWebAddress "Address of web site:">
 <!ENTITY noscriptAllow "Allow">
diff --git a/chrome/noscript.jar!/locale/ko-KR/noscript/noscript.dtd b/chrome/noscript.jar!/locale/ko-KR/noscript/noscript.dtd
index ca439e8..430fd4e 100644
--- a/chrome/noscript.jar!/locale/ko-KR/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/ko-KR/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "옵션...">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "NoScript 옵션">
-<!ENTITY noscriptAbout "NoScript 5.0.8.1 정보...">
+<!ENTITY noscriptAbout "NoScript 5.0.9 정보...">
 <!ENTITY noscriptPermissionsText "스크립트 실행을 허용할 웹 사이트를 지정할 수 있습니다. 스크립트를 허용할 사이트의 주소나 도메인 (예를 들면, "http://www.site.com" 또는 "site.com")을 입력한 후 [허용] 버튼을 클릭합니다.">
 <!ENTITY noscriptWebAddress "웹 사이트 주소">
 <!ENTITY noscriptAllow "허용">
diff --git a/chrome/noscript.jar!/locale/lt/noscript/noscript.dtd b/chrome/noscript.jar!/locale/lt/noscript/noscript.dtd
index 456ef8e..9cbec04 100644
--- a/chrome/noscript.jar!/locale/lt/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/lt/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Nuostatos...">
 <!ENTITY noscriptOptions.accesskey "N">
 <!ENTITY noscriptOptionsLong "NoScript nuostatos">
-<!ENTITY noscriptAbout "Apie NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "Apie NoScript 5.0.9">
 <!ENTITY noscriptPermissionsText "Jūs galite nurodyti, kurioms interneto svetainėms suteikiamas leidimas vykdyti programinius kodus. Įveskite adresą arba domeną (pvz., "http://www.svetaine.lt" arba "svetaine.lt") svetainės, kuriai norite suteikti leidimą ir spauskite Leisti.">
 <!ENTITY noscriptWebAddress "Interneto svetainės adresas:">
 <!ENTITY noscriptAllow "Leisti">
diff --git a/chrome/noscript.jar!/locale/mk-MK/noscript/noscript.dtd b/chrome/noscript.jar!/locale/mk-MK/noscript/noscript.dtd
index 574bd68..8d5a9fa 100644
--- a/chrome/noscript.jar!/locale/mk-MK/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/mk-MK/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Опции...">
 <!ENTITY noscriptOptions.accesskey "О">
 <!ENTITY noscriptOptionsLong "NoScript Опции">
-<!ENTITY noscriptAbout "За NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "За NoScript 5.0.9">
 <!ENTITY noscriptPermissionsText "Можете да ги назначите страните, на кои што скриптите ќе бидат дозволени. Напишете ја дозволената адреса (на пример http://www.site.com или site.com) и кликнете „Дозволи“">
 <!ENTITY noscriptWebAddress "Адреса на дозволената веб страна:">
 <!ENTITY noscriptAllow "Дозволи">
diff --git a/chrome/noscript.jar!/locale/ms-MY/noscript/noscript.dtd b/chrome/noscript.jar!/locale/ms-MY/noscript/noscript.dtd
index c8f11c5..7efeaab 100644
--- a/chrome/noscript.jar!/locale/ms-MY/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/ms-MY/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Tetapan...">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Tetapan NoScript">
-<!ENTITY noscriptAbout "Tentang NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "Tentang NoScript 5.0.9">
 <!ENTITY noscriptPermissionsText "Anda boleh menentukan laman web yang anda benarkan skripnya diproses. Taipkan alamat atau domain(contoh:"http://www.tapak.com" atau "tapak.com") laman web yang diingini dan klik Benarkan">
 <!ENTITY noscriptWebAddress "Alamat laman web:">
 <!ENTITY noscriptAllow "Benarkan">
diff --git a/chrome/noscript.jar!/locale/nb-NO/noscript/noscript.dtd b/chrome/noscript.jar!/locale/nb-NO/noscript/noscript.dtd
index 3e2e6db..4b45306 100644
--- a/chrome/noscript.jar!/locale/nb-NO/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/nb-NO/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Innstillinger">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "NoScript Innstillinger">
-<!ENTITY noscriptAbout "Om NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "Om NoScript 5.0.9">
 <!ENTITY noscriptPermissionsText "Du kan spesifisere hvilke websider som har tillatelse til å kjøre scritper. Skriv inn adresse, eller domene (F.eks: "http://www.side.no", eller &quotside.no") du ønsker å gi tillatelse til, og klikk Tillat.">
 <!ENTITY noscriptWebAddress "Webadresse:">
 <!ENTITY noscriptAllow "Tillat">
diff --git a/chrome/noscript.jar!/locale/nl/noscript/noscript.dtd b/chrome/noscript.jar!/locale/nl/noscript/noscript.dtd
index 4d4e9b6..d1d4750 100644
--- a/chrome/noscript.jar!/locale/nl/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/nl/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opties…">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "NoScript-opties">
-<!ENTITY noscriptAbout "Over NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "Over NoScript 5.0.9">
 <!ENTITY noscriptPermissionsText "U kunt opgeven welke websites scripts mogen gebruiken. Typ het adres of domein (bv. ‘http://www.website.com’ of ‘website.com’) van de website die u wilt toestaan, en klik daarna op Toestaan.">
 <!ENTITY noscriptWebAddress "Adres van website:">
 <!ENTITY noscriptAllow "Toestaan">
diff --git a/chrome/noscript.jar!/locale/pl/noscript/noscript.dtd b/chrome/noscript.jar!/locale/pl/noscript/noscript.dtd
index 8ce6d9f..8d0de6d 100644
--- a/chrome/noscript.jar!/locale/pl/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/pl/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Ustawienia">
 <!ENTITY noscriptOptions.accesskey "U">
 <!ENTITY noscriptOptionsLong "NoScript – ustawienia">
-<!ENTITY noscriptAbout "NoScript 5.0.8.1 – informacje">
+<!ENTITY noscriptAbout "NoScript 5.0.9 – informacje">
 <!ENTITY noscriptPermissionsText "Tutaj można określić witryny internetowe, które będą mogły uruchamiać skrypty. Proszę wprowadzić adres lub domenę witryny (np: „http://www.witryna.pl” lub „witryna.pl”) i nacisnąć przycisk Pozwól.">
 <!ENTITY noscriptWebAddress "Adres witryny:">
 <!ENTITY noscriptAllow "Pozwól">
diff --git a/chrome/noscript.jar!/locale/pt-BR/noscript/noscript.dtd b/chrome/noscript.jar!/locale/pt-BR/noscript/noscript.dtd
index ffdc9d7..f9d8f4a 100644
--- a/chrome/noscript.jar!/locale/pt-BR/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/pt-BR/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opções">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Opções do NoScript">
-<!ENTITY noscriptAbout "Sobre o NoScript 5.0.8.1…">
+<!ENTITY noscriptAbout "Sobre o NoScript 5.0.9…">
 <!ENTITY noscriptPermissionsText "Você pode especificar os sites que podem executar JavaScripts. Escreva o endereço ou o domínio (ex "http://www.site.com" ou "site.com") do site que deseja permitir e depois clique em Permitir.">
 <!ENTITY noscriptWebAddress "Endereço:">
 <!ENTITY noscriptAllow "Permitir">
diff --git a/chrome/noscript.jar!/locale/pt-PT/noscript/noscript.dtd b/chrome/noscript.jar!/locale/pt-PT/noscript/noscript.dtd
index b483fe8..c7c1b65 100644
--- a/chrome/noscript.jar!/locale/pt-PT/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/pt-PT/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opções">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Opções do NoScript">
-<!ENTITY noscriptAbout "Sobre o NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "Sobre o NoScript 5.0.9">
 <!ENTITY noscriptPermissionsText "Pode especificar os sítios que podem executar scripts. Escreva o endereço ou o domínio (ex: "http://www.sitio.com" ou "sitio.com") do sítio que deseja permitir e depois pressione em Permitir.">
 <!ENTITY noscriptWebAddress "Endereço:">
 <!ENTITY noscriptAllow "Permitir">
diff --git a/chrome/noscript.jar!/locale/ro/noscript/noscript.dtd b/chrome/noscript.jar!/locale/ro/noscript/noscript.dtd
index 803cb5c..efd50b3 100644
--- a/chrome/noscript.jar!/locale/ro/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/ro/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Opțiuni...">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "Opțiuni NoScript">
-<!ENTITY noscriptAbout "Despre NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "Despre NoScript 5.0.9">
 <!ENTITY noscriptPermissionsText "Puteți specifica saiturile cărora li se permite să execute scripturi. Scrieți adresa sau domeniul paginii (exemplu: „http://www.sait.ro“ sau „sait.ro“), apoi apăsați pe butonul „Permite“.">
 <!ENTITY noscriptWebAddress "Adresă sait:">
 <!ENTITY noscriptAllow "Permite">
diff --git a/chrome/noscript.jar!/locale/sk-SK/noscript/noscript.dtd b/chrome/noscript.jar!/locale/sk-SK/noscript/noscript.dtd
index 15bc236..a3bae2e 100644
--- a/chrome/noscript.jar!/locale/sk-SK/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/sk-SK/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Možnosti...">
 <!ENTITY noscriptOptions.accesskey "M">
 <!ENTITY noscriptOptionsLong "NoScript – Možnosti">
-<!ENTITY noscriptAbout "O rozšírení NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "O rozšírení NoScript 5.0.9">
 <!ENTITY noscriptPermissionsText "Môžete určiť, ktoré webové stránky majú povolené spúšťať JavaScript. Zadajte adresu alebo doménu (napríklad "http://www.site.com" alebo "site.com") stránky, ktorú chcete povoliť, a potom kliknite na tlačidlo Povoliť.">
 <!ENTITY noscriptWebAddress "Adresa webovej stránky:">
 <!ENTITY noscriptAllow "Povoliť">
diff --git a/chrome/noscript.jar!/locale/sl-SI/noscript/noscript.dtd b/chrome/noscript.jar!/locale/sl-SI/noscript/noscript.dtd
index 6a44a1b..f3ce91d 100644
--- a/chrome/noscript.jar!/locale/sl-SI/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/sl-SI/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Možnosti...">
 <!ENTITY noscriptOptions.accesskey "M">
 <!ENTITY noscriptOptionsLong "NoScript Možnosti">
-<!ENTITY noscriptAbout "O NoScript 5.0.8.1 programu...">
+<!ENTITY noscriptAbout "O NoScript 5.0.9 programu...">
 <!ENTITY noscriptPermissionsText "Določite lahko na katerih straneh bo izvajanje skript dovoljeno. Vnesite naslov ali domeno (pr. "http://www.domena.com" or "domena.com") strani, na kateri želite omogočiti izvajanje skript in kliknite Dovoli.">
 <!ENTITY noscriptWebAddress "Naslov strani:">
 <!ENTITY noscriptAllow "Dovoli">
diff --git a/chrome/noscript.jar!/locale/sr-RS/noscript/noscript.dtd b/chrome/noscript.jar!/locale/sr-RS/noscript/noscript.dtd
index f581ef5..34bd9e1 100644
--- a/chrome/noscript.jar!/locale/sr-RS/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/sr-RS/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Подешавања...">
 <!ENTITY noscriptOptions.accesskey "П">
 <!ENTITY noscriptOptionsLong "NoScript подешавања">
-<!ENTITY noscriptAbout "О NoScript 5.0.8.1-у">
+<!ENTITY noscriptAbout "О NoScript 5.0.9-у">
 <!ENTITY noscriptPermissionsText "Можете да наведете којим веб странама је дозвољено да извршавају скриптове. Унесите адресу или домен (нпр. "http://www.site.com" или "site.com") стране којој желите да дате дозволу и онда кликните Дозволи.">
 <!ENTITY noscriptWebAddress "Адреса веб стране:">
 <!ENTITY noscriptAllow "Дозволи">
diff --git a/chrome/noscript.jar!/locale/sv-SE/noscript/noscript.dtd b/chrome/noscript.jar!/locale/sv-SE/noscript/noscript.dtd
index 82bab6f..58ddd71 100644
--- a/chrome/noscript.jar!/locale/sv-SE/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/sv-SE/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Alternativ...">
 <!ENTITY noscriptOptions.accesskey "A">
 <!ENTITY noscriptOptionsLong "NoScript-alternativ">
-<!ENTITY noscriptAbout "Om NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "Om NoScript 5.0.9">
 <!ENTITY noscriptPermissionsText "Ange vilka webbplatser som får köra skript. Skriv webbadressen eller domänen (t ex. "http://www.webbplats.se" eller "webbplats.se") för den webbplats där skript ska tillåtas. Klicka sedan på "Tillåt".">
 <!ENTITY noscriptWebAddress "Sidans adress:">
 <!ENTITY noscriptAllow "Tillåt">
diff --git a/chrome/noscript.jar!/locale/te-IN/noscript/noscript.dtd b/chrome/noscript.jar!/locale/te-IN/noscript/noscript.dtd
index 405da24..9d49c78 100644
--- a/chrome/noscript.jar!/locale/te-IN/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/te-IN/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Options…">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "NoScript Options">
-<!ENTITY noscriptAbout "About NoScript 5.0.8.1…">
+<!ENTITY noscriptAbout "About NoScript 5.0.9…">
 <!ENTITY noscriptPermissionsText "You can specify which web sites are allowed to execute scripts. Type the address or the domain (e.g. "http://www.site.com" or "site.com") of the site you want to allow and then click Allow.">
 <!ENTITY noscriptWebAddress "Address of web site:">
 <!ENTITY noscriptAllow "Allow">
diff --git a/chrome/noscript.jar!/locale/th/noscript/noscript.dtd b/chrome/noscript.jar!/locale/th/noscript/noscript.dtd
index f9f5625..dc41f3b 100644
--- a/chrome/noscript.jar!/locale/th/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/th/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "ตัวเลือก...">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "ตัวเลือก NoScript">
-<!ENTITY noscriptAbout "เกี่ยวกับ NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "เกี่ยวกับ NoScript 5.0.9">
 <!ENTITY noscriptPermissionsText "คุณสามารถกำหนดเว็บไซต์ที่จะอนุญาตดำเนินการสคริปต์ พิมพ์ที่อยู่หรือโดเมน (เช่น "http://www.site.com" หรือ "site.com") ของไซต์ที่คุณต้องการอนุญาตและคลิกอนุญาต">
 <!ENTITY noscriptWebAddress "ที่อยู่เว็บไซต์:">
 <!ENTITY noscriptAllow "อนุญาต">
diff --git a/chrome/noscript.jar!/locale/tr/noscript/noscript.dtd b/chrome/noscript.jar!/locale/tr/noscript/noscript.dtd
index 3b9d9ac..fb505ce 100644
--- a/chrome/noscript.jar!/locale/tr/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/tr/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Seçenekler">
 <!ENTITY noscriptOptions.accesskey "S">
 <!ENTITY noscriptOptionsLong "NoScript Seçenekleri">
-<!ENTITY noscriptAbout "NoScript 5.0.8.1 @VERSION@ Hakkında">
+<!ENTITY noscriptAbout "NoScript 5.0.9 @VERSION@ Hakkında">
 <!ENTITY noscriptPermissionsText "Hangi web sayfalarında JavaScript'e izni vereceğinizi kolayca seçebilirsiniz. Lütfen adresi tam olarak girin (örn. "http://www.site.com" veya "site.com") ve 'İzin ver' düğmesine tıklayarak sayfanın JavaScript kullanmasına izin verin.">
 <!ENTITY noscriptWebAddress "Site adresi:">
 <!ENTITY noscriptAllow "İzin ver">
diff --git a/chrome/noscript.jar!/locale/vi/noscript/noscript.dtd b/chrome/noscript.jar!/locale/vi/noscript/noscript.dtd
index 98807ed..bb3234a 100644
--- a/chrome/noscript.jar!/locale/vi/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/vi/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "Tùy chọn">
 <!ENTITY noscriptOptions.accesskey "y">
 <!ENTITY noscriptOptionsLong "Tùy chọn cho NoScript">
-<!ENTITY noscriptAbout "Thông tin về NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "Thông tin về NoScript 5.0.9">
 <!ENTITY noscriptPermissionsText "Bạn có thể chỉ định trang web nào được phép chạy script. Gõ địa chỉ hay tên miền (v.d. "http://www.nhaccodien.com" hay "nhaccodien.com") của trang mà bạn muốn cho phép, rồi nhấn Cho phép.">
 <!ENTITY noscriptWebAddress "Địa chỉ của trang web:">
 <!ENTITY noscriptAllow "Cho phép">
diff --git a/chrome/noscript.jar!/locale/zh-CN/noscript/noscript.dtd b/chrome/noscript.jar!/locale/zh-CN/noscript/noscript.dtd
index 7333ed8..7f8ecc6 100644
--- a/chrome/noscript.jar!/locale/zh-CN/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/zh-CN/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "选项...">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "NoScript 选项">
-<!ENTITY noscriptAbout "关于 NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "关于 NoScript 5.0.9">
 <!ENTITY noscriptPermissionsText "您可以指定允许执行脚本的网站。请输入您想要允许的网站地址或域名(例如: “http://www.site.com”或者“site.com”)然后单击“允许”。">
 <!ENTITY noscriptWebAddress "网站地址:">
 <!ENTITY noscriptAllow "允许">
diff --git a/chrome/noscript.jar!/locale/zh-TW/noscript/noscript.dtd b/chrome/noscript.jar!/locale/zh-TW/noscript/noscript.dtd
index 8ddbf71..35d9625 100644
--- a/chrome/noscript.jar!/locale/zh-TW/noscript/noscript.dtd
+++ b/chrome/noscript.jar!/locale/zh-TW/noscript/noscript.dtd
@@ -1,7 +1,7 @@
 <!ENTITY noscriptOptions "選項…">
 <!ENTITY noscriptOptions.accesskey "O">
 <!ENTITY noscriptOptionsLong "NoScript 選項">
-<!ENTITY noscriptAbout "關於 NoScript 5.0.8.1">
+<!ENTITY noscriptAbout "關於 NoScript 5.0.9">
 <!ENTITY noscriptPermissionsText "您可以指定允許執行 JavaScript 的網站。輸入您要允許的網址或網域(例如 "http://www.site.com" 或 "site.com"),然後按下允許.">
 <!ENTITY noscriptWebAddress "網址:">
 <!ENTITY noscriptAllow "允許">
diff --git a/chrome/noscript.jar!/webextension/lib/noscript/tld.js b/chrome/noscript.jar!/webextension/lib/noscript/tld.js
new file mode 100644
index 0000000..67acd94
--- /dev/null
+++ b/chrome/noscript.jar!/webextension/lib/noscript/tld.js
@@ -0,0 +1,31 @@
+var tld = {
+  normalize(d) { return d; },
+
+  getDomain(domain) {
+    domain = this.normalize(domain);
+    var pos = domain.search(this._tldEx);
+    if(pos < 0) {
+      pos = domain.search(this._tldRx);
+      if(pos >= 0) pos = domain.lastIndexOf(".", pos - 1) + 1;
+    } else if(domain[pos] == ".") {
+      ++pos;
+    }
+    return pos < 0 ? domain : domain.substring(pos);
+  },
+
+  getPublicSuffix(domain) {
+    domain = this.normalize(domain);
+    var pos = domain.search(this._tldEx);
+    if(pos < 0) {
+      pos = domain.search(this._tldRx);
+      if(pos >= 0 && domain[pos] == ".") pos++;
+    } else {
+      pos = domain.indexOf(".", pos + 1) + 1;
+    }
+    return pos < 0 ? "" : domain.substring(pos);
+  },
+  
+  _tldRx: /(?:\.|^)(?:s(?:[gj]|h(?:i(?:(?:m(?:o(?:(?:go\.fukushim|fusa\.chib|ji\.okinaw|ichi\.nar)a|k(?:awa\.hokkaido|itayama\.nara)|n(?:oseki\.yamaguchi|ita\.gunma)|tsu(?:ke\.tochig|ma\.ibarak)i|da(?:te\.ibaraki|\.shizuoka)|suwa\.nagano)|a(?:m(?:aki\.hokkaido|oto\.osaka)|(?:(?:ne\.shima)?n|\.mi)e|bara\.nagasaki|da\.shizuoka)|izu\.(?:hokkaido|shizuoka))|n(?:(?:a(?:nomachi\.nagan|gawa\.toky)|onsen\.hyog)o|g(?:u\.(?:(?:wakayam|fukuok)a|hyogo)|o\.aomori)|j(?:o\.(?:yamagat|okayam|nar)a|uku\. [...]
+  ,
+  _tldEx: /(?:\.|^)(?:city\.(?:k(?:itakyushu|awasaki|obe)|(?:yokoham|nagoy)a|s(?:apporo|endai))\.jp|www\.ck)$/
+}
diff --git a/defaults/preferences/noscript.js b/defaults/preferences/noscript.js
index 087c1ed..5fae5ab 100644
--- a/defaults/preferences/noscript.js
+++ b/defaults/preferences/noscript.js
@@ -268,7 +268,7 @@ pref("noscript.surrogate.digg.replacement", "window.location.href=document.query
 pref("noscript.surrogate.dimtus.sources", "!@^http://(?:dimtus|imageteam)\\.(?:com|org)/img-");
 pref("noscript.surrogate.dimtus.replacement", "document.querySelector('.overlay_ad').style.display='none'");
 pref("noscript.surrogate.ga.sources", "*.google-analytics.com");
-pref("noscript.surrogate.ga.replacement", "(function(){var _0=$S(function()_0),_u=function(){};_0.__noSuchMethod__=_0;('ga'in window)||(ga=_u);window.urchinTracker=window._u||_u;window._gaq=$S({__noSuchMethod__:_0,push:function(f){if(typeof f=='function')f();else if(f&&f.shift&&f[0]in this)this[f.shift()].apply(this,f)},_set:function(a,b){if(typeof b=='function')b()},_link:function(h){if(h)location.href=h},_linkByPost:function(f){if(f&&f.submit)f.submit();return true},_getLinkerUrl:funct [...]
+pref("noscript.surrogate.ga.replacement", "(function(){var _0=$S(function()_0),_u=function(){};_0.__noSuchMethod__=_0;('ga'in window)||(ga=_u);window.urchinTracker=window._u||_u;window._gaq=$S({__noSuchMethod__:_0,push:function(f){if(typeof f=='function')f();else if(f&&f.shift&&f[0]in this)this[f.shift()].apply(this,f)},_set:function(a,b){if(typeof b=='function')b()},_link:function(h){if(h)location.href=h},_linkByPost:function(f){if(f&&f.submit)f.submit();return true},_getLinkerUrl:funct [...]
 pref("noscript.surrogate.glinks.replacement", "['focus','mouseover','mousedown','click'].forEach(function(et){addEventListener(et,function(e){var a=e.target,href=a.href&&a.getAttribute&&a.getAttribute('href');if(href&&/^(?:http|\\/url)/.test(href)&&!a._href){a._href=a.href=a.href.replace(/.*\\/url.*[?&](?:url|q)=(http[^&]+).*/,function(a,b)decodeURIComponent(b));do{if(/\\brwt\\(/.test(a.getAttribute('onmousedown')))a.removeAttribute('onmousedown')}while((a=a.parentElement))}},true)})");
 pref("noscript.surrogate.glinks.sources", "!@^https?://[^/]+google\\..*/search");
 pref("noscript.surrogate.googletag.replacement", "if(typeof googletag==='undefined'){googletag={slots:{},cmd:$S({__noSuchMethod__:function(){return $S(this)},push:function(f){return f()}})};}googletag.defineSlot=function(){return $S({__noSuchMethod__:function(){return $S(this)}})};let _gt=googletag;googletag=new Proxy(_gt,{get:function(s,w,e){return w in s?s[w]:function(){return $S({__noSuchMethod__:function(){return googletag;}})};}});let _renderedAds=new Proxy({},{get:function(a,b){ret [...]
diff --git a/install.rdf b/install.rdf
index b1b75e1..0064fbb 100644
--- a/install.rdf
+++ b/install.rdf
@@ -5,7 +5,7 @@
 
    <em:id>{73a6fe31-595d-460b-a920-fcc0f8843232}</em:id>
    <em:name>NoScript</em:name>
-   <em:version>5.0.8.1</em:version>
+   <em:version>5.0.9</em:version>
    <em:description>Extra protection for your Firefox: NoScript allows JavaScript, Java (and other plugins) only for trusted domains of your choice (e.g. your home-banking web site). This whitelist based pre-emptive blocking approach  prevents exploitation of security vulnerabilities (known and even unknown!) with no loss of functionality... Experts will agree: Firefox is really safer with NoScript :-)</em:description>
    <em:creator>Giorgio Maone</em:creator>
    <em:type>2</em:type>
diff --git a/webextension/Policy.js b/webextension/Policy.js
new file mode 100644
index 0000000..7fbb985
--- /dev/null
+++ b/webextension/Policy.js
@@ -0,0 +1,19 @@
+"use strict";
+
+class Policy {
+  constructor(settings = {}) {
+    this.settings = settings;
+  }
+
+  getPermissionsFor(url) {
+  }
+
+  isAllowed(url, type) {
+    if (!(policy && policy.enforced)) {
+        return true;
+      }
+      let url = new URL(urlString);
+      return url.origin in policy.origins && policy.origins[url.origin].js;
+  }
+}
+
diff --git a/webextension/WebRequest.js b/webextension/WebRequest.js
new file mode 100644
index 0000000..9320d65
--- /dev/null
+++ b/webextension/WebRequest.js
@@ -0,0 +1,59 @@
+{
+  let CSP = {
+    name: "Content-Security-Policy",
+    value: "x-NoScript-start; script-src 'none'; x-NoScript-stop;",
+  };
+
+  var WebRequest = {
+    start() {
+      let wr = browser.webRequest;
+      let listeners = this.listeners;
+      wr.onBeforeRequest.addListener(listeners.onBeforeRequest,
+        {urls: ["<all_urls>"]},
+        ["blocking"]
+      );
+      wr.onHeadersReceived.addListener(listeners.onHeadersReceived,
+        {urls: ["<all_urls>"]},
+        ["blocking", "responseHeaders"]
+      );
+
+    },
+
+    stop() {
+      let wr = browser.webRequest;
+      for (let [name, listener] of Object.entries(this.listeners)) {
+        wr[name].removeListener(listener);
+      }
+    },
+    listeners: {
+      async onBeforeRequest(e) {
+        // suspend every request until we've got a policy
+        let policy = await ns.retrievePolicy();
+        return policy.isAllowed(e.url, e.type);
+      },
+      onHeadersReceived(e) {
+        let header;
+        let responseHeaders = e.responseHeaders;
+        for (let h of responseHeaders) {
+          if (h.name === CSP.name) {
+            while(h.value.includes(CSP.value)) {
+              h.value = h.value.replace(CSP.value, '');
+              if (/^\s*$/.test(h.value)) {
+                header = h;
+                h.value = "";
+              }
+            }
+          }
+        }
+        if (!ns.isJSEnabled(e.url)) {
+          if (header) {
+            header.value = CSP.value;
+          } else {
+            responseHeaders.push(header = CSP);
+          }
+        }
+        return header ? {responseHeaders} : null;
+      },
+    }
+  };
+}
diff --git a/webextension/background.html b/webextension/background.html
new file mode 100644
index 0000000..375c94d
--- /dev/null
+++ b/webextension/background.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>NoScript</title>
+<script src="legacy.js"></script>
+<script src="WebRequest.js"></script>
+<script src="lib/tld.js"></script>
+<script src="noscript.js"></script>
+</head>
+</html>
diff --git a/webextension/background.js b/webextension/background.js
deleted file mode 100644
index 849fac1..0000000
--- a/webextension/background.js
+++ /dev/null
@@ -1,70 +0,0 @@
-var policy;
-var webRequestInitialized = false;
-
-function initWebRequest() {
-  if (webRequestInitialized) return;
-  webRequestInitialized = true;
-  browser.webRequest.onHeadersReceived.addListener(setCSP,
-    {urls: ["<all_urls>"]},
-    ["blocking", "responseHeaders"]
-  );
-  console.log(`NoScript WebExt webRequest initialized`);
-}
-var legacyPort = browser.runtime.connect({name: "legacy"});
-legacyPort.onMessage.addListener(msg => {
-
-  switch(msg.type) {
-    case "configure":
-      initWebRequest();
-      policy = msg.policy;
-    break;
-    case "saveData":
-      browser.storage.local.set(msg.data);
-    break;
-
-    case "dumpData":
-      browser.storage.local.get(null, items => console.log(items));
-    break;
-  }
-});
-
-const CSP = {
-  name: "Content-Security-Policy",
-  value: "x-NoScript-start; script-src 'none'; x-NoScript-stop;"
-};
-
-function isJSEnabled(urlString) {
-  if (!(policy && policy.enforced)) {
-    return true;
-  }
-  let url = new URL(urlString);
-  return url.origin in policy.origins && policy.origins[url.origin].js;
-}
-
-function setCSP(e) {
-  let header;
-  for (let h of e.responseHeaders) {
-    if (h.name === CSP.name) {
-      while(e.value.includes(CSP.value)) {
-        h.value = h.value.replace(CSP.value, '');
-        if (/^\s*$/.test(h.value)) {
-          header = h;
-          h.value = "";
-        }
-      }
-    }
-  }
-  if (!isJSEnabled(e.url)) {
-    if (header) {
-      header.value = CSP.value;
-    } else {
-      e.responseHeaders.push(header = CSP);
-    }
-  }
-  return header ? {responseHeaders: e.responseHeaders} : null;
-}
-
-
-browser.runtime.sendMessage("READY");
-console.log("NoScript WebExt Ready");
-
diff --git a/webextension/legacy.js b/webextension/legacy.js
new file mode 100644
index 0000000..337effe
--- /dev/null
+++ b/webextension/legacy.js
@@ -0,0 +1,28 @@
+var legacyPort;
+try {
+  legacyPort = browser.runtime.connect({name: "legacy"});
+  legacyPort.onMessage.addListener(msg => {
+    switch(msg.type) {
+
+      case "start":
+        ns.start(msg.data);
+      break;
+
+      case "stop":
+        ns.stop();
+      break;
+
+      case "saveData":
+        browser.storage.local.set(msg.data);
+        console.log("NoScript preferences backed on the WebExtension side");
+      break;
+
+      case "dumpData":
+        browser.storage.local.get(null, items => console.log(items));
+      break;
+    }
+  });
+} catch(e) {
+  legacyPort = null;
+}
+
diff --git a/webextension/lib/tld.js b/webextension/lib/tld.js
new file mode 100644
index 0000000..714945b
--- /dev/null
+++ b/webextension/lib/tld.js
@@ -0,0 +1,31 @@
+var tld = {
+  normalize(d) { return d; },
+
+  getDomain(domain) {
+    domain = this.normalize(domain);
+    var pos = domain.search(this._tldEx);
+    if(pos < 0) {
+      pos = domain.search(this._tldRx);
+      if(pos >= 0) pos = domain.lastIndexOf(".", pos - 1) + 1;
+    } else if(domain[pos] == ".") {
+      ++pos;
+    }
+    return pos < 0 ? domain : domain.substring(pos);
+  },
+
+  getPublicSuffix(domain) {
+    domain = this.normalize(domain);
+    var pos = domain.search(this._tldEx);
+    if(pos < 0) {
+      pos = domain.search(this._tldRx);
+      if(pos >= 0 && domain[pos] == ".") pos++;
+    } else {
+      pos = domain.indexOf(".", pos + 1) + 1;
+    }
+    return pos < 0 ? "" : domain.substring(pos);
+  },
+  
+  _tldRx: /(?:\.|^)(?:s(?:[gj]|h(?:i(?:(?:m(?:o(?:(?:go\.fukushim|fusa\.chib|ji\.okinaw|ichi\.nar)a|k(?:awa\.hokkaido|itayama\.nara)|n(?:oseki\.yamaguchi|ita\.gunma)|tsu(?:ke\.tochig|ma\.ibarak)i|da(?:te\.ibaraki|\.shizuoka)|suwa\.nagano)|a(?:m(?:aki\.hokkaido|oto\.osaka)|(?:(?:ne\.shima)?n|\.mi)e|bara\.nagasaki|da\.shizuoka)|izu\.(?:hokkaido|shizuoka))|n(?:(?:a(?:nomachi\.nagan|gawa\.toky)|onsen\.hyog)o|g(?:u\.(?:(?:wakayam|fukuok)a|hyogo)|o\.aomori)|j(?:o\.(?:yamagat|okayam|nar)a|uku\. [...]
+  ,
+  _tldEx: /(?:\.|^)(?:city\.(?:k(?:itakyushu|awasaki|obe)|(?:yokoham|nagoy)a|s(?:apporo|endai))\.jp|www\.ck)$/
+}
diff --git a/webextension/manifest.json b/webextension/manifest.json
index 7c665df..25fd27a 100644
--- a/webextension/manifest.json
+++ b/webextension/manifest.json
@@ -1,15 +1,27 @@
 {
   "manifest_version": 2,
   "name": "NoScript",
+  "applications": {
+    "gecko": {
+      "id":  "{73a6fe31-595d-460b-a920-fcc0f8843232}",
+      "strict_min_version": "52.0"
+    }
+  },
   "version": "10.1.0",
   "description": "NoScript Security Suite",
 
   "permissions": [
-    "storage", "webNavigation",
-    "webRequest", "webRequestBlocking", "<all_urls>"
+      "contextMenus",
+      "privacy",
+      "storage",
+      "tabs",
+      "webNavigation",
+      "webRequest",
+      "webRequestBlocking",
+      "<all_urls>"
   ],
 
   "background": {
-    "scripts": ["background.js"]
+    "page": "background.html"
   }
 }
diff --git a/webextension/noscript.js b/webextension/noscript.js
new file mode 100644
index 0000000..4a5a7dc
--- /dev/null
+++ b/webextension/noscript.js
@@ -0,0 +1,44 @@
+"use strict";
+
+{
+  let policy = null;
+
+  var ns = {
+    running: false,
+
+    start(settings = null) {
+      if (this.running) return;
+      this.running = true;
+      if (settings) policy = new Policy(settings);
+
+      browser.runtime.sendMessage("STARTED");
+    },
+
+    stop() {
+      if (!this.running) return;
+      this.running= false;
+      WebRequest.stop();
+      browser.runtime.sendMessage("STOPPED");
+    },
+
+    async retrievePolicy() {
+      return this.policy || (this.policy = new Policy(await browser.storage.get("policy")));
+    },
+
+    isJSEnabled(urlString) {
+      return this.retrievePolicy().isAllowed(urlString, "script");
+    },
+
+  };
+}
+
+if (legacyPort) {
+  browser.runtime.sendMessage("LEGACY MODE");
+} else {
+  browser.storage.local.get(null, items => console.log(`NoScript imported preferences: ${JSON.stringify(items)}`));
+  ns.start();
+}
+
+browser.runtime.sendMessage("READY");
+console.log("NoScript WebExt Ready");
+

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/noscript.git



More information about the Pkg-mozext-commits mailing list