Browse Source

cleanup 2.57 comm-esr60 part 1

Frank-Rainer Grahl 4 years ago
parent
commit
62c2d70830
40 changed files with 6355 additions and 4379 deletions
  1. 33 30
      comm-esr60/comm-esr60/patches/1048658-66a1.patch
  2. 0 120
      comm-esr60/comm-esr60/patches/1275400.patch
  3. 2225 0
      comm-esr60/comm-esr60/patches/1399756-22-61a1.patch
  4. 171 0
      comm-esr60/comm-esr60/patches/1399756-23-61a1.patch
  5. 892 0
      comm-esr60/comm-esr60/patches/1399756-28-61a1.patch
  6. 167 0
      comm-esr60/comm-esr60/patches/1399756-29-61a1.patch
  7. 127 0
      comm-esr60/comm-esr60/patches/1399756-30-61a1.patch
  8. 457 0
      comm-esr60/comm-esr60/patches/1399756-31-61a1.patch
  9. 63 0
      comm-esr60/comm-esr60/patches/1399756-33-61a1.patch
  10. 0 25
      comm-esr60/comm-esr60/patches/1402006.patch
  11. 3 3
      comm-esr60/comm-esr60/patches/1447907-1-61a1.patch
  12. 126 0
      comm-esr60/comm-esr60/patches/1470716-cc-63a1.patch
  13. 61 124
      comm-esr60/comm-esr60/patches/1481326-1-63a1.patch
  14. 2 2
      comm-esr60/comm-esr60/patches/1481326-2-63a1.patch
  15. 14 123
      comm-esr60/comm-esr60/patches/1481417-5-63a1.patch
  16. 1 1
      comm-esr60/comm-esr60/patches/1512557-65a1.patch
  17. 0 112
      comm-esr60/comm-esr60/patches/1522761-cxx-mail-257.patch
  18. 0 130
      comm-esr60/comm-esr60/patches/1523762-cxx-suite-257.patch
  19. 0 86
      comm-esr60/comm-esr60/patches/1524032-67a1.patch
  20. 0 1164
      comm-esr60/comm-esr60/patches/1530955-whitespace-67a1.patch
  21. 0 52
      comm-esr60/comm-esr60/patches/1531724-66a1.patch
  22. 0 31
      comm-esr60/comm-esr60/patches/1533062-oslibs-67a1.patch
  23. 0 1278
      comm-esr60/comm-esr60/patches/1534028-omni-67a1.patch
  24. 0 54
      comm-esr60/comm-esr60/patches/1534028-omni-cc2-67a1.patch
  25. 0 54
      comm-esr60/comm-esr60/patches/1535845-sse2-68a1.patch
  26. 7 7
      comm-esr60/comm-esr60/patches/1535846-sse2-mail-68a1.patch
  27. 0 32
      comm-esr60/comm-esr60/patches/1540438-indent_fixup.patch
  28. 0 898
      comm-esr60/comm-esr60/patches/594239-1-66a1.patch
  29. 29 0
      comm-esr60/comm-esr60/patches/594239-1fix-66a1.patch
  30. 0 37
      comm-esr60/comm-esr60/patches/594239-2-66a1.patch
  31. 10 15
      comm-esr60/comm-esr60/patches/series
  32. 532 0
      rel-257/comm-esr60/patches/1048658-66a1.patch
  33. 82 0
      rel-257/comm-esr60/patches/1399756-22-61a1.patch
  34. 988 0
      rel-257/comm-esr60/patches/1470716-cc-63a1.patch
  35. 29 0
      rel-257/comm-esr60/patches/1481326-2-63a1.patch
  36. 133 0
      rel-257/comm-esr60/patches/1481417-5-63a1.patch
  37. 113 0
      rel-257/comm-esr60/patches/1512557-65a1.patch
  38. 52 0
      rel-257/comm-esr60/patches/1535846-sse2-mail-68a1.patch
  39. 29 0
      rel-257/comm-esr60/patches/594239-1fix-66a1.patch
  40. 9 1
      rel-257/comm-esr60/patches/series

+ 33 - 30
comm-esr60/comm-esr60/patches/1048658-66a1.patch

@@ -2,7 +2,7 @@
 # User Mike Kaganski <mikekaganski@gmail.com>
 # Date 1547735880 -3600
 # Node ID aaf39a9bd368a7fec19e61ccfadb5179d7fb90e8
-# Parent  4a6d49729273e3485b05a097cb663c3d7bcaf669
+# Parent  e766e150d27c48c795c60ad8fb4ea7460c1f73f6
 Bug 1048658 - Implement MAPISendMailW(). r=jorgk
 
 diff --git a/mailnews/mapi/mapiDll/Mapi32.DEF b/mailnews/mapi/mapiDll/Mapi32.DEF
@@ -23,7 +23,7 @@ diff --git a/mailnews/mapi/mapiDll/Mapi32.DEF b/mailnews/mapi/mapiDll/Mapi32.DEF
 diff --git a/mailnews/mapi/mapiDll/MapiDll.cpp b/mailnews/mapi/mapiDll/MapiDll.cpp
 --- a/mailnews/mapi/mapiDll/MapiDll.cpp
 +++ b/mailnews/mapi/mapiDll/MapiDll.cpp
-@@ -217,16 +217,61 @@ ULONG FAR PASCAL MAPISendMail (LHANDLE l
+@@ -187,16 +187,61 @@ ULONG FAR PASCAL MAPISendMail (LHANDLE l
          hr = SUCCESS_SUCCESS;
  
      if (bTempSession)
@@ -78,8 +78,8 @@ diff --git a/mailnews/mapi/mapiDll/MapiDll.cpp b/mailnews/mapi/mapiDll/MapiDll.c
 +    return hr;
 +}
  
- ULONG FAR PASCAL MAPISendDocuments(ULONG ulUIParam, LPTSTR lpszDelimChar, LPTSTR lpszFilePaths,
-                                 LPTSTR lpszFileNames, ULONG ulReserved)
+ ULONG FAR PASCAL MAPISendDocuments(ULONG ulUIParam, LPSTR lpszDelimChar, LPSTR lpszFilePaths,
+                                    LPSTR lpszFileNames, ULONG ulReserved)
  {
      LHANDLE lhSession ;
      nsIMapi *pNsMapi = NULL;
@@ -88,13 +88,13 @@ diff --git a/mailnews/mapi/mapiDll/MapiDll.cpp b/mailnews/mapi/mapiDll/MapiDll.c
 diff --git a/mailnews/mapi/mapihook/build/msgMapi.idl b/mailnews/mapi/mapihook/build/msgMapi.idl
 --- a/mailnews/mapi/mapihook/build/msgMapi.idl
 +++ b/mailnews/mapi/mapihook/build/msgMapi.idl
-@@ -41,16 +41,52 @@ typedef struct
-     unsigned long    flFlags; /* unread,return receipt */
-     lpnsMapiRecipDesc  lpOriginator;  /* Originator descriptor  */
-     unsigned long      nRecipCount;   /* Number of recipients   */
-     [size_is (nRecipCount)]	lpnsMapiRecipDesc lpRecips;/* Recipient descriptors  */
-     unsigned long      nFileCount;    /* # of file attachments  */
-     [size_is (nFileCount)]	lpnsMapiFileDesc   lpFiles;       /* Attachment descriptors */
+@@ -39,16 +39,52 @@ typedef struct
+     unsigned long     flFlags;                          /* unread,return receipt */
+     lpnsMapiRecipDesc lpOriginator;                     /* Originator descriptor  */
+     unsigned long     nRecipCount;                      /* Number of recipients   */
+     [size_is (nRecipCount)] lpnsMapiRecipDesc lpRecips; /* Recipient descriptors  */
+     unsigned long     nFileCount;                       /* # of file attachments  */
+     [size_is (nFileCount)] lpnsMapiFileDesc lpFiles;    /* Attachment descriptors */
  } nsMapiMessage, * lpnsMapiMessage;
  
 +typedef struct
@@ -141,25 +141,28 @@ diff --git a/mailnews/mapi/mapihook/build/msgMapi.idl b/mailnews/mapi/mapihook/b
  ]
  
  interface nsIMapi : IUnknown
-@@ -78,11 +114,14 @@ interface nsIMapi : IUnknown
+@@ -76,14 +112,17 @@ interface nsIMapi : IUnknown
                       [in] ULONG flFlags, [in] ULONG ulReserved, [out] lpnsMapiMessage *lppMessage);
  
-     HRESULT DeleteMail([in] unsigned long lhSession, [in] ULONG ulUIParam, [in, unique] LPTSTR lpszMessageID,
+     HRESULT DeleteMail([in] unsigned long lhSession, [in] ULONG ulUIParam, [in, unique] LPSTR lpszMessageID,
                         [in] ULONG flFlags, [in] ULONG ulReserved);
  
      HRESULT SaveMail([in] unsigned long lhSession, [in] ULONG ulUIParam, [in, unique] lpnsMapiMessage lppMessage,
-                      [in] ULONG flFlags, [in] ULONG ulReserved, [in, unique] LPTSTR lpszMessageID);
+                      [in] ULONG flFlags, [in] ULONG ulReserved, [in, unique] LPSTR lpszMessageID);
  
 +    HRESULT SendMailW([in] unsigned long aSession, [in, unique] lpnsMapiMessageW aMessage,
 +                      [in] unsigned long aFlags, [in] unsigned long aReserved);
 +
-     HRESULT Logoff (unsigned long aSession);
+     HRESULT Logoff(unsigned long aSession);
      HRESULT CleanUp();
  };
+ 
+ 
+ 
 diff --git a/mailnews/mapi/mapihook/src/msgMapiHook.cpp b/mailnews/mapi/mapihook/src/msgMapiHook.cpp
 --- a/mailnews/mapi/mapihook/src/msgMapiHook.cpp
 +++ b/mailnews/mapi/mapihook/src/msgMapiHook.cpp
-@@ -452,16 +452,126 @@ nsresult nsMapiHook::HandleAttachments (
+@@ -461,16 +461,126 @@ nsresult nsMapiHook::HandleAttachments (
              if (NS_FAILED(rv))
                MOZ_LOG(MAPI, mozilla::LogLevel::Debug, ("nsMapiHook::HandleAttachments: AddAttachment rv =  %lx\n", rv));
          }
@@ -283,10 +286,10 @@ diff --git a/mailnews/mapi/mapihook/src/msgMapiHook.cpp b/mailnews/mapi/mapihook
                                      nsIMsgCompFields * aCompFields)
  {
    nsresult rv = NS_OK;
+   bool isUTF8 = aMessage->ulReserved == CP_UTF8;
  
    if (aMessage->lpOriginator)
-   {
-@@ -553,16 +663,99 @@ nsresult nsMapiHook::PopulateCompFieldsW
+@@ -581,16 +691,99 @@ nsresult nsMapiHook::PopulateCompFieldsW
    printf ("To : %S \n", To.get()) ;
    printf ("CC : %S \n", Cc.get() ) ;
    printf ("BCC : %S \n", Bcc.get() ) ;
@@ -380,10 +383,10 @@ diff --git a/mailnews/mapi/mapihook/src/msgMapiHook.cpp b/mailnews/mapi/mapihook
 +
  // this is used to populate the docs as attachments in the Comp fields for Send Documents
  nsresult nsMapiHook::PopulateCompFieldsForSendDocs(nsIMsgCompFields * aCompFields, ULONG aFlags,
-                                                    LPTSTR aDelimChar, LPTSTR aFilePaths)
+                                                    LPSTR aDelimChar, LPSTR aFilePaths)
  {
-   nsAutoString strDelimChars ;
-   nsString strFilePaths;
+   nsAutoCString strDelimChars;
+   nsAutoCString strFilePaths;
    nsresult rv = NS_OK ;
    bool bExist ;
 diff --git a/mailnews/mapi/mapihook/src/msgMapiHook.h b/mailnews/mapi/mapihook/src/msgMapiHook.h
@@ -391,7 +394,7 @@ diff --git a/mailnews/mapi/mapihook/src/msgMapiHook.h b/mailnews/mapi/mapihook/s
 +++ b/mailnews/mapi/mapihook/src/msgMapiHook.h
 @@ -15,18 +15,21 @@ class nsMapiHook
                          char16_t **aPassword);
-         static bool VerifyUserName(const nsString& aUsername, nsCString& aIdKey);
+         static bool VerifyUserName(const nsCString& aUsername, nsCString& aIdKey);
  
          static bool IsBlindSendAllowed () ;
          static nsresult BlindSendMail (unsigned long aSession, nsIMsgCompFields * aCompFields) ;
@@ -400,9 +403,9 @@ diff --git a/mailnews/mapi/mapihook/src/msgMapiHook.h b/mailnews/mapi/mapihook/s
                                          nsIMsgCompFields * aCompFields) ;
 +        static nsresult PopulateCompFieldsW(lpnsMapiMessageW aMessage, nsIMsgCompFields *aCompFields);
          static nsresult PopulateCompFieldsForSendDocs(nsIMsgCompFields * aCompFields,
-                                         ULONG aFlags, LPTSTR aDelimChar, LPTSTR aFilePaths) ;
-         static nsresult HandleAttachments (nsIMsgCompFields * aCompFields, int32_t aFileCount,
-                                            lpnsMapiFileDesc aFiles) ;
+                                         ULONG aFlags, LPSTR aDelimChar, LPSTR aFilePaths);
+         static nsresult HandleAttachments(nsIMsgCompFields *aCompFields, int32_t aFileCount,
+                                           lpnsMapiFileDesc aFiles, bool aIsUTF8);
 +        static nsresult HandleAttachmentsW(nsIMsgCompFields *aCompFields, int32_t aFileCount,
 +                                           lpnsMapiFileDescW aFiles);
          static void CleanUp();
@@ -431,7 +434,7 @@ diff --git a/mailnews/mapi/mapihook/src/msgMapiImp.cpp b/mailnews/mapi/mapihook/
  #include "msgMapiHook.h"
  #include "nsString.h"
  #include "nsCOMPtr.h"
-@@ -229,16 +229,54 @@ STDMETHODIMP CMapiImp::SendMail( unsigne
+@@ -231,16 +231,54 @@ STDMETHODIMP CMapiImp::SendMail( unsigne
          {
              rv = nsMapiHook::ShowComposerWindow(aSession, pCompFields);
          }
@@ -479,8 +482,8 @@ diff --git a/mailnews/mapi/mapihook/src/msgMapiImp.cpp b/mailnews/mapi/mapihook/
 +    return nsMAPIConfiguration::GetMAPIErrorFromNSError(rv);
 +}
  
- STDMETHODIMP CMapiImp::SendDocuments( unsigned long aSession, LPTSTR aDelimChar,
-                             LPTSTR aFilePaths, LPTSTR aFileNames, ULONG aFlags)
+ STDMETHODIMP CMapiImp::SendDocuments(unsigned long aSession, LPSTR aDelimChar,
+                                      LPSTR aFilePaths, LPSTR aFileNames, ULONG aFlags)
  {
      nsresult rv = NS_OK ;
  
@@ -508,9 +511,9 @@ diff --git a/mailnews/mapi/mapihook/src/msgMapiImp.h b/mailnews/mapi/mapihook/sr
  class MsgMapiListContext;
  
 @@ -53,16 +51,19 @@ public :
-                             unsigned long flFlags, unsigned long ulReserved);
+                           unsigned long flFlags, unsigned long ulReserved);
    STDMETHODIMP SaveMail(unsigned long lhSession, unsigned long ulUIParam, lpnsMapiMessage lppMessage,
-                             unsigned long flFlags, unsigned long ulReserved, LPTSTR lpszMessageID);
+                         unsigned long flFlags, unsigned long ulReserved, LPSTR lpszMessageID);
  
    STDMETHODIMP Initialize();
    STDMETHODIMP IsValid();

+ 0 - 120
comm-esr60/comm-esr60/patches/1275400.patch

@@ -1,120 +0,0 @@
-# HG changeset patch
-# User MakeMyDay <makemyday@gmx-topmail.de>
-# Date 1538055326 -7200
-#      Thu Sep 27 15:35:26 2018 +0200
-# Node ID 4a2171ca49dac042b79ce673444c0e62ebab613f
-# Parent  6fbac9b8d7fd258b31469abe28090ace20c92b53
-Bug 1275400 - Porting upstream fixes for use-after-free vulnerability of libical. r=philipp DONTBUILD
-
-https://github.com/libical/libical/
-
-* Issue 253 / Commit 6b9438d746cec6e4e632d78c5244f4be6314d1c9
-* Issue 251 / Commit 38757abb495ea6cb40faa5418052278bf75040f7
-* Issue 251 / Commit 830d9530817516377c2bc3b532798ce2c6b4765a
-
-diff --git a/calendar/libical/src/libical/icalparser.c b/calendar/libical/src/libical/icalparser.c
---- a/calendar/libical/src/libical/icalparser.c
-+++ b/calendar/libical/src/libical/icalparser.c
-@@ -726,34 +726,20 @@ icalcomponent* icalparser_add_line(icalp
- 	icalcomponent *c;
-         icalcomponent_kind comp_kind;
- 
- 	icalmemory_free_buffer(str);
- 	str = NULL;
- 
- 	parser->level++;
- 	str = parser_get_next_value(end,&end, value_kind);
--	    
--
--        comp_kind = icalenum_string_to_component_kind(str);
--
--
--        if (comp_kind == ICAL_NO_COMPONENT){
--
- 
--	    c = icalcomponent_new(ICAL_XLICINVALID_COMPONENT);
--	    insert_error(c,str,"Parse error in component name",
--			 ICAL_XLICERRORTYPE_COMPONENTPARSEERROR);
--        }
-+    comp_kind = icalenum_string_to_component_kind(str);
- 
--	if (comp_kind != ICAL_X_COMPONENT) {
--	    c  =  icalcomponent_new(comp_kind);
--	} else {
--	    c  =  icalcomponent_new_x(str);
--	}
-+    c  =  icalcomponent_new(comp_kind);
- 
- 	if (c == 0){
- 	    c = icalcomponent_new(ICAL_XLICINVALID_COMPONENT);
- 	    insert_error(c,str,"Parse error in component name",
- 			 ICAL_XLICERRORTYPE_COMPONENTPARSEERROR);
- 	}
- 	    
- 	pvl_push(parser->components,c);
-diff --git a/calendar/libical/src/libical/icaltime.c b/calendar/libical/src/libical/icaltime.c
---- a/calendar/libical/src/libical/icaltime.c
-+++ b/calendar/libical/src/libical/icaltime.c
-@@ -512,30 +512,30 @@ struct icaltimetype icaltime_from_string
-     struct icaltimetype tt = icaltime_null_time();
-     int size;
- 
-     icalerror_check_arg_re(str!=0,"str",icaltime_null_time());
- 
-     size = strlen(str);
-     
-     if ((size == 15) || (size == 19)) { /* floating time with/without separators*/
--	tt.is_utc = 0;
--	tt.is_date = 0;
-+        tt.is_utc = 0;
-+        tt.is_date = 0;
-     } else if ((size == 16) || (size == 20)) { /* UTC time, ends in 'Z'*/
--	if ((str[15] != 'Z') && (str[19] != 'Z'))
--	    goto FAIL;
-+        if ((str[size-1] != 'Z'))
-+            goto FAIL;
- 
--	tt.is_utc = 1;
--	tt.zone = icaltimezone_get_utc_timezone();
--	tt.is_date = 0;
-+        tt.is_utc = 1;
-+        tt.zone = icaltimezone_get_utc_timezone();
-+        tt.is_date = 0;
-     } else if ((size == 8) || (size == 10)) { /* A DATE */
--	tt.is_utc = 0;
--	tt.is_date = 1;
-+        tt.is_utc = 0;
-+        tt.is_date = 1;
-     } else { /* error */
--	goto FAIL;
-+        goto FAIL;
-     }
- 
-     if (tt.is_date == 1){
-         if (size == 10) {
-             char dsep1, dsep2;    
-             if (sscanf(str,"%04d%c%02d%c%02d",&tt.year,&dsep1,&tt.month,&dsep2,&tt.day) < 5)
-                 goto FAIL;
-             if ((dsep1 != '-') || (dsep2 != '-'))
-diff --git a/calendar/libical/src/libical/icaltypes.c b/calendar/libical/src/libical/icaltypes.c
---- a/calendar/libical/src/libical/icaltypes.c
-+++ b/calendar/libical/src/libical/icaltypes.c
-@@ -161,17 +161,17 @@ struct icalreqstattype icalreqstattype_f
- 
-   /* Just ignore the second clause; it will be taken from inside the library 
-    */
- 
- 
- 
-   p2 = strchr(p1+1,';');
-   if (p2 != 0 && *p2 != 0){
--    stat.debug = p2+1;
-+    stat.debug = icalmemory_tmp_copy(p2 + 1);
-   } 
- 
-   return stat;
-   
- }
- 
- const char* icalreqstattype_as_string(struct icalreqstattype stat)
- {

+ 2225 - 0
comm-esr60/comm-esr60/patches/1399756-22-61a1.patch

@@ -0,0 +1,2225 @@
+# HG changeset patch
+# User Jorg K <jorgk@jorgk.com>
+# Date 1521301069 -3600
+# Node ID 4d1bcb81b2f6d604a3458ac02edced8918d5c3cc
+# Parent  32c5c14b4085c6430557e9c6450cb0ba8ec48d3c
+Bug 1399756 - remove trailing spaces in mailnews/ (.xul, .xml, .css, .mm, .cpp). rs=white-space-only
+[skip-blame]
+
+diff --git a/mailnews/addrbook/content/abAddressBookNameDialog.xul b/mailnews/addrbook/content/abAddressBookNameDialog.xul
+--- a/mailnews/addrbook/content/abAddressBookNameDialog.xul
++++ b/mailnews/addrbook/content/abAddressBookNameDialog.xul
+@@ -1,9 +1,9 @@
+-<?xml version="1.0"?> 
++<?xml version="1.0"?>
+ <!-- This Source Code Form is subject to the terms of the Mozilla Public
+    - License, v. 2.0. If a copy of the MPL was not distributed with this
+    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+ 
+ <?xml-stylesheet href="chrome://messenger/skin/dialogs.css" type="text/css"?>
+ 
+ <!DOCTYPE dialog SYSTEM "chrome://messenger/locale/addressbook/abAddressBookNameDialog.dtd">
+ 
+diff --git a/mailnews/addrbook/content/abEditCardDialog.xul b/mailnews/addrbook/content/abEditCardDialog.xul
+--- a/mailnews/addrbook/content/abEditCardDialog.xul
++++ b/mailnews/addrbook/content/abEditCardDialog.xul
+@@ -1,9 +1,9 @@
+-<?xml version="1.0"?> 
++<?xml version="1.0"?>
+ <!-- This Source Code Form is subject to the terms of the Mozilla Public
+    - License, v. 2.0. If a copy of the MPL was not distributed with this
+    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+ 
+ <?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
+ 
+ <?xul-overlay href="chrome://messenger/content/addressbook/abCardOverlay.xul"?>
+ 
+diff --git a/mailnews/addrbook/content/abNewCardDialog.xul b/mailnews/addrbook/content/abNewCardDialog.xul
+--- a/mailnews/addrbook/content/abNewCardDialog.xul
++++ b/mailnews/addrbook/content/abNewCardDialog.xul
+@@ -1,9 +1,9 @@
+-<?xml version="1.0"?> 
++<?xml version="1.0"?>
+ <!-- This Source Code Form is subject to the terms of the Mozilla Public
+    - License, v. 2.0. If a copy of the MPL was not distributed with this
+    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+ 
+ <?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
+ 
+ <?xul-overlay href="chrome://messenger/content/addressbook/abCardOverlay.xul"?>
+ 
+diff --git a/mailnews/addrbook/content/print.css b/mailnews/addrbook/content/print.css
+--- a/mailnews/addrbook/content/print.css
++++ b/mailnews/addrbook/content/print.css
+@@ -2,63 +2,63 @@
+  * 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/. */
+ 
+ directory {
+   display: block;
+ }
+ 
+ section {
+-  display:block; 
++  display:block;
+   margin: 15px 20px;
+ }
+ 
+ sectiontitle {
+-  display:block; 
+-  font-weight:bold; 
+-  font-family:verdana; 
++  display:block;
++  font-weight:bold;
++  font-family:verdana;
+   font-size:small;
+ }
+ 
+ labelrow {
+   display:block;
+ }
+ 
+ label {
+-  display:inline; 
+-  font-family:verdana; 
++  display:inline;
++  font-family:verdana;
+   font-size:small;
+ }
+ 
+ GeneratedName {
+-  display:block; 
+-  font-weight:bold; 
+-  font-family:verdana; 
++  display:block;
++  font-weight:bold;
++  font-family:verdana;
+   margin-top: 20px;
+   margin-bottom: 3px;
+   margin-inline-end: 10px;
+   margin-inline-start: 10px;
+ }
+ 
+-FirstName, LastName, 
++FirstName, LastName,
+ HomeAddress, HomeAddress2, HomeCountry,
+ WorkAddress, WorkAddress2, WorkCountry,
+ JobTitle, Department, Company, Notes {
+-  display: block; 
+-  font-family: verdana; 
++  display: block;
++  font-family: verdana;
+   font-size: small;
+ }
+ 
+ DisplayName, NickName,
+ WorkPhone, HomePhone, FaxNumber, PagerNumber, CellularNumber,
+ HomeCity, HomeState, HomeZipCode,
+-WorkCity, WorkState, WorkZipCode, 
++WorkCity, WorkState, WorkZipCode,
+ Custom1, Custom2, Custom3, Custom4 {
+-  display: inline; 
+-  font-family: verdana; 
++  display: inline;
++  font-family: verdana;
+   font-size: small;
+ }
+ 
+ PrimaryEmail, SecondEmail,
+ WebPage1, WebPage2 {
+   display: block;
+   font-family: verdana;
+   font-size: small;
+@@ -79,16 +79,16 @@ table {
+   display: table;
+ }
+ 
+ tr {
+   display: table-row;
+ }
+ 
+ td {
+-  display: table-cell; 
++  display: table-cell;
+   vertical-align: top;
+ }
+ 
+ PreferMailFormat {
+   display: none;
+ }
+ 
+diff --git a/mailnews/addrbook/prefs/content/pref-directory-add.xul b/mailnews/addrbook/prefs/content/pref-directory-add.xul
+--- a/mailnews/addrbook/prefs/content/pref-directory-add.xul
++++ b/mailnews/addrbook/prefs/content/pref-directory-add.xul
+@@ -24,47 +24,47 @@
+   <vbox id="editDirectory">
+ 
+     <tabbox style="margin:5px">
+       <tabs id="directoryTabBox">
+         <tab label="&General.tab;"/>
+         <tab label="&Offline.tab;"/>
+         <tab label="&Advanced.tab;"/>
+       </tabs>
+-   
++
+       <tabpanels id="directoryTabPanels" flex="1">
+           <vbox>
+              <grid flex="1">
+                  <columns>
+                      <column/>
+                      <column flex="1"/>
+                      <column/>
+                  </columns>
+ 
+                  <rows>
+                      <row align="center">
+-                         <label value="&directoryName.label;" accesskey="&directoryName.accesskey;" 
++                         <label value="&directoryName.label;" accesskey="&directoryName.accesskey;"
+                                 control="description"/>
+                          <textbox id="description" flex="1"/>
+                          <spacer flex="1"/>
+                      </row>
+                      <row align="center">
+                          <label value="&directoryHostname.label;" accesskey="&directoryHostname.accesskey;"
+                                 control="hostname"/>
+                          <textbox id="hostname" flex="1" disableiflocked="true" class="uri-element"/>
+                          <spacer flex="1"/>
+                      </row>
+                      <row align="center">
+-                         <label value="&directoryBaseDN.label;" 
++                         <label value="&directoryBaseDN.label;"
+                                 accesskey="&directoryBaseDN.accesskey;"
+                                 control="basedn"/>
+                          <vbox>
+                            <textbox id="basedn" disableiflocked="true" class="uri-element"/>
+                          </vbox>
+-                         <button label="&findButton.label;" 
++                         <button label="&findButton.label;"
+                                  accesskey="&findButton.accesskey;" disabled="true"/>
+                      </row>
+                      <row align="center">
+                          <label value="&portNumber.label;"
+                                 accesskey="&portNumber.accesskey;"
+                                 control="port"/>
+                          <hbox>
+                              <textbox id="port" type="number" size="5" min="1"
+@@ -89,17 +89,17 @@
+               <description>&offlineText.label;</description>
+               <separator/>
+               <hbox>
+                   <button id="download" oncommand="DownloadNow();"/>
+                   <spacer flex="1"/>
+               </hbox>
+               <description id="downloadWarningMsg" hidden="true" class="error"/>
+               <description id="replicationProgressText" hidden="true"/>
+-              
++
+               <progressmeter id="replicationProgressMeter" mode="normal" value="0" hidden="true"/>
+           </vbox>
+           <grid>
+              <columns>
+                <column/>
+                <column flex="1"/>
+              </columns>
+ 
+@@ -128,25 +128,25 @@
+                         accesskey="&searchFilter.accesskey;"
+                         control="search"/>
+                  <textbox id="search" multiline="true" flex="1" disableiflocked="true"/>
+               </row>
+               <row align="center">
+                 <label value="&saslMechanism.label;" control="saslMechanism" accesskey="&saslMechanism.accesskey;"/>
+                 <menulist id="saslMechanism">
+                   <menupopup>
+-                    <menuitem id="Simple" value="" 
++                    <menuitem id="Simple" value=""
+                               label="&saslOff.label;"
+                               accesskey="&saslOff.accesskey;"/>
+-                    <menuitem id="GSSAPI" value="GSSAPI" 
++                    <menuitem id="GSSAPI" value="GSSAPI"
+                               label="&saslGSSAPI.label;"
+                               accesskey="&saslGSSAPI.accesskey;"/>
+                   </menupopup>
+                 </menulist>
+               </row>
+             </rows>
+           </grid>
+       </tabpanels>
+     </tabbox>
+   </vbox>
+-  
++
+ </dialog>
+-        
++
+diff --git a/mailnews/addrbook/prefs/content/pref-editdirectories.xul b/mailnews/addrbook/prefs/content/pref-editdirectories.xul
+--- a/mailnews/addrbook/prefs/content/pref-editdirectories.xul
++++ b/mailnews/addrbook/prefs/content/pref-editdirectories.xul
+@@ -1,9 +1,9 @@
+-<?xml version="1.0"?> 
++<?xml version="1.0"?>
+ <!-- This Source Code Form is subject to the terms of the Mozilla Public
+    - License, v. 2.0. If a copy of the MPL was not distributed with this
+    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+ 
+ <?xml-stylesheet href="chrome://messenger/skin/" type="text/css"?>
+ 
+ <!DOCTYPE dialog SYSTEM "chrome://messenger/locale/addressbook/pref-directory.dtd">
+ 
+diff --git a/mailnews/addrbook/src/nsAbOSXCard.mm b/mailnews/addrbook/src/nsAbOSXCard.mm
+--- a/mailnews/addrbook/src/nsAbOSXCard.mm
++++ b/mailnews/addrbook/src/nsAbOSXCard.mm
+@@ -67,39 +67,39 @@ SetStringProperty(nsAbOSXCard *aCard, NS
+ static void
+ MapStringProperty(nsAbOSXCard *aCard, ABRecord *aOSXCard, NSString *aProperty,
+                   const char *aMemberName, bool aNotify,
+                   nsIAbManager *aAbManager)
+ {
+   NS_ASSERTION(aProperty, "This is bad! You asked for an unresolved symbol.");
+   NS_ASSERTION(GetPropertType(aOSXCard, aProperty) == kABStringProperty,
+                "Wrong type!");
+-  
++
+   SetStringProperty(aCard, [aOSXCard valueForProperty:aProperty], aMemberName,
+                     aNotify, aAbManager);
+ }
+ 
+ static ABMutableMultiValue*
+ GetMultiValue(ABRecord *aCard, NSString *aProperty)
+ {
+   NS_ASSERTION(aProperty, "This is bad! You asked for an unresolved symbol.");
+   NS_ASSERTION(GetPropertType(aCard, aProperty) & kABMultiValueMask,
+                "Wrong type!");
+-  
++
+   return [aCard valueForProperty:aProperty];
+ }
+ 
+ static void
+ MapDate(nsAbOSXCard *aCard, NSDate *aDate, const char *aYearPropName,
+         const char *aMonthPropName, const char *aDayPropName, bool aNotify,
+         nsIAbManager *aAbManager)
+ {
+   // XXX Should we pass a format and timezone?
+   NSCalendarDate *date = [aDate dateWithCalendarFormat:nil timeZone:nil];
+-  
++
+   nsAutoString value;
+   value.AppendInt(static_cast<int32_t>([date yearOfCommonEra]));
+   SetStringProperty(aCard, value, aYearPropName, aNotify, aAbManager);
+   value.Truncate();
+   value.AppendInt(static_cast<int32_t>([date monthOfYear]));
+   SetStringProperty(aCard, value, aMonthPropName, aNotify, aAbManager);
+   value.Truncate();
+   value.AppendInt(static_cast<int32_t>([date dayOfMonth]));
+@@ -115,28 +115,28 @@ MapMultiValue(nsAbOSXCard *aCard, ABReco
+   if (value) {
+     unsigned int j;
+     unsigned int count = [value count];
+     for (j = 0; j < count; ++j) {
+       if ([[value labelAtIndex:j] isEqualToString:aMap.mOSXLabel]) {
+         NSString *stringValue = (aMap.mOSXKey)
+           ? [[value valueAtIndex:j] objectForKey:aMap.mOSXKey]
+           : [value valueAtIndex:j];
+-        
++
+         SetStringProperty(aCard, stringValue, aMap.mPropertyName, aNotify,
+                           aAbManager);
+-        
++
+         return true;
+       }
+     }
+   }
+   // String wasn't found, set value of card to empty if it was set previously
+   SetStringProperty(aCard, EmptyString(), aMap.mPropertyName, aNotify,
+                     aAbManager);
+-  
++
+   return false;
+ }
+ 
+ // Maps Address Book's instant messenger name to the corresponding nsIAbCard field name.
+ static const char*
+ InstantMessengerFieldName(NSString* aInstantMessengerName)
+ {
+   if ([aInstantMessengerName isEqualToString:@"AIMInstant"]) {
+@@ -217,62 +217,62 @@ nsAbOSXCard::Update(bool aNotify)
+     m_MailListURI.Append(uid);
+     MapStringProperty(this, card, kABGroupNameProperty, "DisplayName", aNotify,
+                       abManager);
+     MapStringProperty(this, card, kABGroupNameProperty, "LastName", aNotify,
+                       abManager);
+ 
+     return NS_OK;
+   }
+-  
++
+   bool foundHome = false, foundWork = false;
+-  
++
+   uint32_t i;
+   for (i = 0; i < nsAbOSXUtils::kPropertyMapSize; ++i) {
+     const nsAbOSXPropertyMap &propertyMap = nsAbOSXUtils::kPropertyMap[i];
+     if (!propertyMap.mOSXProperty)
+       continue;
+-    
++
+     if (propertyMap.mOSXLabel) {
+       if (MapMultiValue(this, card, propertyMap, aNotify,
+                         abManager) && propertyMap.mOSXProperty == kABAddressProperty) {
+-        if (propertyMap.mOSXLabel == kABAddressHomeLabel) 
++        if (propertyMap.mOSXLabel == kABAddressHomeLabel)
+           foundHome = true;
+         else
+           foundWork = true;
+       }
+     }
+     else {
+       MapStringProperty(this, card, propertyMap.mOSXProperty,
+                         propertyMap.mPropertyName, aNotify, abManager);
+     }
+   }
+-  
++
+   int flags = 0;
+   if (kABPersonFlags)
+     flags = [[card valueForProperty:kABPersonFlags] intValue];
+-  
++
+ #define SET_STRING(_value, _name, _notify, _session) \
+   SetStringProperty(this, _value, #_name, _notify, _session)
+-    
++
+     // If kABShowAsCompany is set we use the company name as display name.
+     if (kABPersonFlags && (flags & kABShowAsCompany)) {
+       nsString company;
+       nsresult rv = GetPropertyAsAString(kCompanyProperty, company);
+       if (NS_FAILED(rv))
+         company.Truncate();
+       SET_STRING(company, DisplayName, aNotify, abManager);
+     }
+   else {
+     // Use the order used in the OS X address book to set DisplayName.
+     int order = kABPersonFlags && (flags & kABNameOrderingMask);
+     if (kABPersonFlags && (order == kABDefaultNameOrdering)) {
+       order = [addressBook defaultNameOrdering];
+     }
+-    
++
+     nsAutoString displayName, tempName;
+     if (kABPersonFlags && (order == kABFirstNameFirst)) {
+       GetFirstName(tempName);
+       displayName.Append(tempName);
+ 
+       GetLastName(tempName);
+ 
+       // Only append a space if the last name and the first name are not empty
+@@ -290,46 +290,46 @@ nsAbOSXCard::Update(bool aNotify)
+       // Only append a space if the last name and the first name are not empty
+       if (!tempName.IsEmpty() && !displayName.IsEmpty())
+         displayName.Append(' ');
+ 
+       displayName.Append(tempName);
+     }
+     SET_STRING(displayName, DisplayName, aNotify, abManager);
+   }
+-  
++
+   ABMultiValue *value = GetMultiValue(card, kABEmailProperty);
+   if (value) {
+     unsigned int count = [value count];
+     if (count > 0) {
+       unsigned int j = [value indexForIdentifier:[value primaryIdentifier]];
+-      
++
+       if (j < count)
+         SET_STRING([value valueAtIndex:j], PrimaryEmail, aNotify,
+                    abManager);
+-      
++
+       // If j is 0 (first in the list) we want the second in the list
+       // (index 1), if j is anything else we want the first in the list
+       // (index 0).
+       j = (j == 0);
+       if (j < count)
+         SET_STRING([value valueAtIndex:j], SecondEmail, aNotify,
+                    abManager);
+     }
+   }
+-  
++
+   // We map the first home address we can find and the first work address
+   // we can find. If we find none, we map the primary address to the home
+   // address.
+   if (!foundHome && !foundWork) {
+     value = GetMultiValue(card, kABAddressProperty);
+     if (value) {
+       unsigned int count = [value count];
+       unsigned int j = [value indexForIdentifier:[value primaryIdentifier]];
+-      
++
+       if (j < count) {
+         NSDictionary *address = [value valueAtIndex:j];
+         if (address) {
+           SET_STRING([address objectForKey:kABAddressStreetKey],
+                      HomeAddress, aNotify, abManager);
+           SET_STRING([address objectForKey:kABAddressCityKey],
+                      HomeCity, aNotify, abManager);
+           SET_STRING([address objectForKey:kABAddressStateKey],
+@@ -356,46 +356,46 @@ nsAbOSXCard::Update(bool aNotify)
+       } else if ([imValue isKindOfClass:[NSDictionary class]]) {
+         NSString* instantMessageService = [imValue objectForKey:@"InstantMessageService"];
+         const char* fieldName = InstantMessengerFieldName(instantMessageService);
+         NSString* userName = [imValue objectForKey:@"InstantMessageUsername"];
+         SetStringProperty(this, userName, fieldName, aNotify, abManager);
+       }
+     }
+   }
+-  
++
+ #define MAP_DATE(_date, _name, _notify, _session) \
+   MapDate(this, _date, #_name"Year", #_name"Month", #_name"Day", _notify, \
+   _session)
+-    
++
+     NSDate *date = [card valueForProperty:kABBirthdayProperty];
+   if (date)
+     MAP_DATE(date, Birth, aNotify, abManager);
+-  
++
+   if (kABOtherDatesProperty) {
+     value = GetMultiValue(card, kABOtherDatesProperty);
+     if (value) {
+       unsigned int j, count = [value count];
+       for (j = 0; j < count; ++j) {
+         if ([[value labelAtIndex:j] isEqualToString:kABAnniversaryLabel]) {
+           date = [value valueAtIndex:j];
+           if (date) {
+             MAP_DATE(date, Anniversary, aNotify, abManager);
+-            
++
+             break;
+           }
+         }
+       }
+     }
+   }
+ #undef MAP_DATE
+ #undef SET_STRING
+-  
++
+   date = [card valueForProperty:kABModificationDateProperty];
+-  if (date) 
++  if (date)
+     SetPropertyAsUint32("LastModifiedDate",
+                         uint32_t([date timeIntervalSince1970]));
+     // XXX No way to notify about this?
+ 
+   return NS_OK;
+ 
+   NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT;
+ }
+diff --git a/mailnews/addrbook/src/nsAbOSXDirectory.mm b/mailnews/addrbook/src/nsAbOSXDirectory.mm
+--- a/mailnews/addrbook/src/nsAbOSXDirectory.mm
++++ b/mailnews/addrbook/src/nsAbOSXDirectory.mm
+@@ -109,17 +109,17 @@ Sync(NSString *aUid)
+   ABAddressBook *addressBook = [ABAddressBook sharedAddressBook];
+   ABRecord *card = [addressBook recordForUniqueId:aUid];
+   if ([card isKindOfClass:[ABGroup class]])
+   {
+     nsCOMPtr<nsIAbDirectory> directory;
+     GetOrCreateGroup(aUid, getter_AddRefs(directory));
+     nsCOMPtr<nsIAbOSXDirectory> osxDirectory =
+       do_QueryInterface(directory);
+-    
++
+     if (osxDirectory) {
+       osxDirectory->Update();
+     }
+   }
+   else {
+     nsCOMPtr<nsIAbCard> abCard;
+     nsresult rv;
+ 
+@@ -149,17 +149,17 @@ Sync(NSString *aUid)
+ @interface ABChangedMonitor : NSObject
+ -(void)ABChanged:(NSNotification *)aNotification;
+ @end
+ 
+ @implementation ABChangedMonitor
+ -(void)ABChanged:(NSNotification *)aNotification
+ {
+   NSDictionary *changes = [aNotification userInfo];
+-  
++
+   nsresult rv;
+   NSArray *inserted = [changes objectForKey:kABInsertedRecords];
+ 
+   if (inserted) {
+     nsCOMPtr<nsIAbManager> abManager = do_GetService(NS_ABMANAGER_CONTRACTID, &rv);
+     NS_ENSURE_SUCCESS_VOID(rv);
+ 
+     nsCOMPtr<nsIAbDirectory> directory;
+@@ -190,26 +190,26 @@ Sync(NSString *aUid)
+         // Construct a card
+         nsresult rv = CreateCard(card, getter_AddRefs(abCard));
+         NS_ENSURE_SUCCESS_VOID(rv);
+         rv = osxDirectory->AssertCard(abManager, abCard);
+         NS_ENSURE_SUCCESS_VOID(rv);
+       }
+     }
+   }
+-  
++
+   NSArray *updated = [changes objectForKey:kABUpdatedRecords];
+   if (updated) {
+     unsigned int i, count = [updated count];
+     for (i = 0; i < count; ++i) {
+       NSString *uid = [updated objectAtIndex:i];
+       Sync(uid);
+     }
+   }
+-  
++
+   NSArray *deleted = [changes objectForKey:kABDeletedRecords];
+   if (deleted) {
+ 
+     nsCOMPtr<nsIAbManager> abManager = do_GetService(NS_ABMANAGER_CONTRACTID, &rv);
+     NS_ENSURE_SUCCESS_VOID(rv);
+ 
+     nsCOMPtr<nsIAbDirectory> directory;
+     rv = abManager->GetDirectory(NS_LITERAL_CSTRING(NS_ABOSXDIRECTORY_URI_PREFIX"/"),
+@@ -226,34 +226,34 @@ Sync(NSString *aUid)
+ 
+       nsAutoCString uid;
+       AppendToCString(deletedUid, uid);
+ 
+       rv = osxDirectory->DeleteUid(uid);
+       NS_ENSURE_SUCCESS_VOID(rv);
+     }
+   }
+-  
++
+   if (!inserted && !updated && !deleted) {
+     // XXX This is supposed to mean "everything was updated", but we get
+     //     this whenever something has changed, so not sure what to do.
+   }
+ }
+ @end
+ 
+ static nsresult
+ MapConditionString(nsIAbBooleanConditionString *aCondition, bool aNegate,
+                    bool &aCanHandle, ABSearchElement **aResult)
+ {
+   aCanHandle = false;
+-  
++
+   nsAbBooleanConditionType conditionType = 0;
+   nsresult rv = aCondition->GetCondition(&conditionType);
+   NS_ENSURE_SUCCESS(rv, rv);
+-  
++
+   ABSearchComparison comparison;
+   switch (conditionType) {
+     case nsIAbBooleanConditionTypes::Contains:
+     {
+       if (!aNegate) {
+         comparison = kABContainsSubString;
+         aCanHandle = true;
+       }
+@@ -300,44 +300,44 @@ MapConditionString(nsIAbBooleanCondition
+     }
+     case nsIAbBooleanConditionTypes::GreaterThan:
+     {
+       comparison = aNegate ? kABLessThanOrEqual : kABGreaterThan;
+       aCanHandle = true;
+       break;
+     }
+   }
+-  
++
+   if (!aCanHandle)
+     return NS_OK;
+-  
++
+   nsCString name;
+   rv = aCondition->GetName(getter_Copies(name));
+   NS_ENSURE_SUCCESS(rv, rv);
+-  
++
+   nsString value;
+   rv = aCondition->GetValue(getter_Copies(value));
+   NS_ENSURE_SUCCESS(rv, rv);
+-  
++
+   uint32_t length = value.Length();
+-  
++
+   uint32_t i;
+   for (i = 0; i < nsAbOSXUtils::kPropertyMapSize; ++i) {
+     if (name.Equals(nsAbOSXUtils::kPropertyMap[i].mPropertyName)) {
+       *aResult =
+       [ABPerson searchElementForProperty:nsAbOSXUtils::kPropertyMap[i].mOSXProperty
+                                    label:nsAbOSXUtils::kPropertyMap[i].mOSXLabel
+                                      key:nsAbOSXUtils::kPropertyMap[i].mOSXKey
+                                    value:[NSString stringWithCharacters:reinterpret_cast<const unichar*>(value.get()) length:length]
+                               comparison:comparison];
+-      
++
+       return NS_OK;
+     }
+   }
+-  
++
+   if (name.EqualsLiteral("DisplayName") && comparison == kABContainsSubString) {
+     ABSearchElement *first =
+     [ABPerson searchElementForProperty:kABFirstNameProperty
+                                  label:nil
+                                    key:nil
+                                  value:[NSString stringWithCharacters:reinterpret_cast<const unichar*>(value.get()) length:length]
+                             comparison:comparison];
+     ABSearchElement *second =
+@@ -347,107 +347,107 @@ MapConditionString(nsIAbBooleanCondition
+                                    value:[NSString stringWithCharacters:reinterpret_cast<const unichar*>(value.get()) length:length]
+                               comparison:comparison];
+     ABSearchElement *third =
+       [ABGroup searchElementForProperty:kABGroupNameProperty
+                                   label:nil
+                                     key:nil
+                                   value:[NSString stringWithCharacters:reinterpret_cast<const unichar*>(value.get()) length:length]
+                              comparison:comparison];
+-    
++
+     *aResult = [ABSearchElement searchElementForConjunction:kABSearchOr children:[NSArray arrayWithObjects:first, second, third, nil]];
+-    
++
+     return NS_OK;
+   }
+-  
++
+   aCanHandle = false;
+-  
++
+   return NS_OK;
+ }
+ 
+ static nsresult
+ BuildSearchElements(nsIAbBooleanExpression *aExpression,
+                     bool &aCanHandle,
+                     ABSearchElement **aResult)
+ {
+   aCanHandle = true;
+-  
++
+   nsCOMPtr<nsIArray> expressions;
+   nsresult rv = aExpression->GetExpressions(getter_AddRefs(expressions));
+   NS_ENSURE_SUCCESS(rv, rv);
+-  
++
+   nsAbBooleanOperationType operation;
+   rv = aExpression->GetOperation(&operation);
+   NS_ENSURE_SUCCESS(rv, rv);
+-  
++
+   uint32_t count;
+   rv = expressions->GetLength(&count);
+   NS_ENSURE_SUCCESS(rv, rv);
+-  
++
+   NS_ASSERTION(count > 1 && operation != nsIAbBooleanOperationTypes::NOT,
+                "This doesn't make sense!");
+-  
++
+   NSMutableArray *array = nullptr;
+   if (count > 1)
+     array = [[NSMutableArray alloc] init];
+-  
++
+   uint32_t i;
+   nsCOMPtr<nsIAbBooleanConditionString> condition;
+   nsCOMPtr<nsIAbBooleanExpression> subExpression;
+   for (i = 0; i < count; ++i) {
+     ABSearchElement *element = nullptr;
+-    
++
+     condition = do_QueryElementAt(expressions, i);
+     if (condition) {
+       rv = MapConditionString(condition, operation == nsIAbBooleanOperationTypes::NOT, aCanHandle, &element);
+       if (NS_FAILED(rv))
+         break;
+     }
+     else {
+       subExpression = do_QueryElementAt(expressions, i);
+       if (subExpression) {
+         rv = BuildSearchElements(subExpression, aCanHandle, &element);
+         if (NS_FAILED(rv))
+           break;
+       }
+     }
+-    
++
+     if (!aCanHandle) {
+       // remember to free the array when returning early
+       [array release];
+       return NS_OK;
+     }
+-    
++
+     if (element) {
+       if (array)
+         [array addObject:element];
+-      else 
++      else
+         *aResult = element;
+     }
+   }
+-  
++
+   if (array) {
+     if (NS_SUCCEEDED(rv)) {
+       ABSearchConjunction conjunction = operation == nsIAbBooleanOperationTypes::AND ? kABSearchAnd : kABSearchOr;
+       *aResult = [ABSearchElement searchElementForConjunction:conjunction children:array];
+     }
+     [array release];
+   }
+-  
++
+   return rv;
+ }
+ 
+ static bool
+ Search(nsIAbBooleanExpression *aExpression, NSArray **aResult)
+ {
+   bool canHandle = false;
+   ABSearchElement *searchElement;
+   nsresult rv = BuildSearchElements(aExpression, canHandle, &searchElement);
+   NS_ENSURE_SUCCESS(rv, false);
+-  
++
+   if (canHandle)
+     *aResult = [[ABAddressBook sharedAddressBook] recordsMatchingSearchElement:searchElement];
+ 
+   return canHandle;
+ }
+ 
+ static uint32_t sObserverCount = 0;
+ static ABChangedMonitor *sObserver = nullptr;
+@@ -600,30 +600,30 @@ CheckRedundantCards(nsIAbManager *aManag
+   nsresult rv;
+   nsCOMPtr<nsIAbOSXCard> osxCard = do_QueryInterface(aCard, &rv);
+   NS_ENSURE_SUCCESS(rv, false);
+ 
+   nsAutoCString uri;
+   rv = osxCard->GetURI(uri);
+   NS_ENSURE_SUCCESS(rv, false);
+   NSString *uid = [NSString stringWithUTF8String:(uri.get() + 21)];
+-  
++
+   unsigned int i, count = [aCardList count];
+   for (i = 0; i < count; ++i) {
+     if ([[[aCardList objectAtIndex:i] uniqueId] isEqualToString:uid]) {
+       [aCardList removeObjectAtIndex:i];
+       break;
+     }
+   }
+ 
+   if (i == count) {
+     aManager->NotifyDirectoryItemDeleted(aDirectory, aCard);
+     return true;
+   }
+-  
++
+   return false;
+ }
+ 
+ nsresult
+ nsAbOSXDirectory::GetRootOSXDirectory(nsIAbOSXDirectory **aResult)
+ {
+   if (!mCacheTopLevelOSXAb)
+   {
+@@ -650,21 +650,21 @@ nsAbOSXDirectory::GetRootOSXDirectory(ns
+ nsresult
+ nsAbOSXDirectory::Update()
+ {
+   NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT;
+ 
+   nsresult rv;
+   nsCOMPtr<nsIAbManager> abManager = do_GetService(NS_ABMANAGER_CONTRACTID, &rv);
+   NS_ENSURE_SUCCESS(rv, rv);
+-  
++
+   if (mIsQueryURI) {
+     return NS_OK;
+   }
+-  
++
+   ABAddressBook *addressBook = [ABAddressBook sharedAddressBook];
+   // Due to the horrible way the address book code works wrt mailing lists
+   // we have to use a different list depending on what we are. This pointer
+   // holds a reference to that list.
+   nsIMutableArray* cardList;
+   NSArray *groups, *cards;
+   if (m_IsMailList) {
+     ABGroup *group = (ABGroup*)[addressBook recordForUniqueId:[NSString stringWithUTF8String:nsAutoCString(Substring(mURINoQuery, 21)).get()]];
+@@ -686,60 +686,60 @@ nsAbOSXDirectory::Update()
+     if (!mCardList)
+     {
+       mCardList = do_CreateInstance(NS_ARRAY_CONTRACTID, &rv);
+       NS_ENSURE_SUCCESS(rv, rv);
+     }
+     // For directories, store the cards in mCardList
+     cardList = mCardList;
+   }
+-  
++
+   NSMutableArray *mutableArray = [NSMutableArray arrayWithArray:cards];
+   uint32_t addressCount;
+   rv = cardList->GetLength(&addressCount);
+   NS_ENSURE_SUCCESS(rv, rv);
+ 
+   while (addressCount--)
+   {
+     nsCOMPtr<nsIAbCard> card(do_QueryElementAt(cardList, addressCount, &rv));
+     if (NS_FAILED(rv))
+       break;
+ 
+     if (CheckRedundantCards(abManager, this, card, mutableArray))
+       cardList->RemoveElementAt(addressCount);
+   }
+-  
++
+   NSEnumerator *enumerator = [mutableArray objectEnumerator];
+   ABRecord *card;
+   nsCOMPtr<nsIAbCard> abCard;
+   nsCOMPtr<nsIAbOSXDirectory> rootOSXDirectory;
+   rv = GetRootOSXDirectory(getter_AddRefs(rootOSXDirectory));
+   NS_ENSURE_SUCCESS(rv, rv);
+ 
+   while ((card = [enumerator nextObject]))
+   {
+     rv = GetCard(card, getter_AddRefs(abCard), rootOSXDirectory);
+     if (NS_FAILED(rv))
+       rv = CreateCard(card, getter_AddRefs(abCard));
+     NS_ENSURE_SUCCESS(rv, rv);
+     AssertCard(abManager, abCard);
+   }
+-  
++
+   card = (ABRecord*)[addressBook recordForUniqueId:[NSString stringWithUTF8String:nsAutoCString(Substring(mURINoQuery, 21)).get()]];
+   NSString * stringValue = [card valueForProperty:kABGroupNameProperty];
+   if (![stringValue isEqualToString:WrapString(m_ListDirName)])
+   {
+     nsAutoString oldValue(m_ListDirName);
+     AssignToString(stringValue, m_ListDirName);
+     nsCOMPtr<nsISupports> supports = do_QueryInterface(static_cast<nsIAbDirectory *>(this), &rv);
+     NS_ENSURE_SUCCESS(rv, rv);
+     abManager->NotifyItemPropertyChanged(supports, "DirName",
+                                          oldValue.get(), m_ListDirName.get());
+   }
+-  
++
+   if (groups)
+   {
+     mutableArray = [NSMutableArray arrayWithArray:groups];
+     nsCOMPtr<nsIAbDirectory> directory;
+     // It is ok to use m_AddressList here as only top-level directories have
+     // groups, and they will be in m_AddressList
+     if (m_AddressList)
+     {
+@@ -751,79 +751,79 @@ nsAbOSXDirectory::Update()
+         directory = do_QueryElementAt(m_AddressList, addressCount, &rv);
+         if (NS_FAILED(rv))
+           continue;
+ 
+         nsAutoCString uri;
+         directory->GetURI(uri);
+         uri.Cut(0, 21);
+         NSString *uid = [NSString stringWithUTF8String:uri.get()];
+-        
++
+         unsigned int j, arrayCount = [mutableArray count];
+         for (j = 0; j < arrayCount; ++j) {
+           if ([[[mutableArray objectAtIndex:j] uniqueId] isEqualToString:uid]) {
+             [mutableArray removeObjectAtIndex:j];
+             break;
+           }
+         }
+-        
++
+         if (j == arrayCount) {
+           UnassertDirectory(abManager, directory);
+         }
+       }
+     }
+-    
++
+     enumerator = [mutableArray objectEnumerator];
+     while ((card = [enumerator nextObject])) {
+       rv = GetOrCreateGroup([card uniqueId], getter_AddRefs(directory));
+       NS_ENSURE_SUCCESS(rv, rv);
+-      
++
+       AssertDirectory(abManager, directory);
+     }
+   }
+-  
++
+   return NS_OK;
+ 
+   NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT;
+ }
+ 
+ nsresult
+ nsAbOSXDirectory::AssertChildNodes()
+ {
+   NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT;
+ 
+   // Queries and mailing lists can't have childnodes.
+   if (mIsQueryURI || m_IsMailList) {
+     return NS_OK;
+   }
+-  
++
+   nsresult rv;
+   nsCOMPtr<nsIAbManager> abManager =
+     do_GetService(NS_ABMANAGER_CONTRACTID, &rv);
+   NS_ENSURE_SUCCESS(rv, rv);
+-  
++
+   NSArray *groups = [[ABAddressBook sharedAddressBook] groups];
+-  
++
+   unsigned int i, count = [groups count];
+-  
++
+   if (count > 0 && !m_AddressList) {
+     m_AddressList = do_CreateInstance(NS_ARRAY_CONTRACTID, &rv);
+     NS_ENSURE_SUCCESS(rv, rv);
+   }
+-  
++
+   nsCOMPtr<nsIAbDirectory> directory;
+   for (i = 0; i < count; ++i) {
+     rv = GetOrCreateGroup([[groups objectAtIndex:i] uniqueId],
+                           getter_AddRefs(directory));
+     NS_ENSURE_SUCCESS(rv, rv);
+-    
++
+     rv = AssertDirectory(abManager, directory);
+     NS_ENSURE_SUCCESS(rv, rv);
+   }
+-  
++
+   return NS_OK;
+ 
+   NS_OBJC_END_TRY_ABORT_BLOCK_NSRESULT;
+ }
+ 
+ nsresult
+ nsAbOSXDirectory::AssertDirectory(nsIAbManager *aManager,
+                                   nsIAbDirectory *aDirectory)
+@@ -834,17 +834,17 @@ nsAbOSXDirectory::AssertDirectory(nsIAbM
+     // We already have this directory, so no point in adding it again.
+     return NS_OK;
+ 
+   nsresult rv;
+   if (!m_AddressList) {
+     m_AddressList = do_CreateInstance(NS_ARRAY_CONTRACTID, &rv);
+     NS_ENSURE_SUCCESS(rv, rv);
+   }
+-  
++
+   rv = m_AddressList->AppendElement(aDirectory);
+   NS_ENSURE_SUCCESS(rv, rv);
+ 
+   return aManager->NotifyDirectoryItemAdded(this, aDirectory);
+ }
+ 
+ nsresult
+ nsAbOSXDirectory::AssertCard(nsIAbManager *aManager,
+@@ -874,17 +874,17 @@ nsAbOSXDirectory::AssertCard(nsIAbManage
+ 
+ nsresult
+ nsAbOSXDirectory::UnassertCard(nsIAbManager *aManager,
+                                nsIAbCard *aCard,
+                                nsIMutableArray *aCardList)
+ {
+   nsresult rv;
+   uint32_t pos;
+-  
++
+   if (NS_SUCCEEDED(aCardList->IndexOf(0, aCard, &pos)))
+     rv = aCardList->RemoveElementAt(pos);
+ 
+   return aManager->NotifyDirectoryItemDeleted(this, aCard);
+ }
+ 
+ nsresult
+ nsAbOSXDirectory::UnassertDirectory(nsIAbManager *aManager,
+@@ -901,57 +901,57 @@ nsAbOSXDirectory::UnassertDirectory(nsIA
+ 
+   return aManager->NotifyDirectoryItemDeleted(this, aDirectory);
+ }
+ 
+ NS_IMETHODIMP
+ nsAbOSXDirectory::GetChildNodes(nsISimpleEnumerator **aNodes)
+ {
+   NS_ENSURE_ARG_POINTER(aNodes);
+-  
++
+   // Queries don't have childnodes.
+   if (mIsQueryURI || m_IsMailList || !m_AddressList)
+     return NS_NewEmptyEnumerator(aNodes);
+-  
++
+   return NS_NewArrayEnumerator(aNodes, m_AddressList);
+ }
+ 
+ NS_IMETHODIMP
+ nsAbOSXDirectory::GetChildCards(nsISimpleEnumerator **aCards)
+ {
+   NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NSRESULT;
+ 
+   NS_ENSURE_ARG_POINTER(aCards);
+-  
++
+   nsresult rv;
+   NSArray *cards;
+   if (mIsQueryURI)
+   {
+     nsCOMPtr<nsIAbBooleanExpression> expression;
+     rv = nsAbQueryStringToExpression::Convert(mQueryString,
+                                               getter_AddRefs(expression));
+     NS_ENSURE_SUCCESS(rv, rv);
+-    
++
+     bool canHandle = !m_IsMailList && Search(expression, &cards);
+     if (!canHandle)
+       return FallbackSearch(expression, aCards);
+ 
+     if (!mCardList)
+       mCardList = do_CreateInstance(NS_ARRAY_CONTRACTID, &rv);
+     else
+       mCardList->Clear();
+     NS_ENSURE_SUCCESS(rv, rv);
+-  
++
+     // The uuid for initializing cards
+     nsAutoCString ourUuid;
+     GetUuid(ourUuid);
+ 
+     // Fill the results array and update the card list
+     unsigned int nbCards = [cards count];
+-  
++
+     unsigned int i;
+     nsCOMPtr<nsIAbCard> card;
+     nsCOMPtr<nsIAbOSXDirectory> rootOSXDirectory;
+     rv = GetRootOSXDirectory(getter_AddRefs(rootOSXDirectory));
+     NS_ENSURE_SUCCESS(rv, rv);
+ 
+     for (i = 0; i < nbCards; ++i)
+     {
+@@ -1174,17 +1174,17 @@ nsAbOSXDirectory::HasCard(nsIAbCard *aCa
+ }
+ 
+ NS_IMETHODIMP
+ nsAbOSXDirectory::HasDirectory(nsIAbDirectory *aDirectory,
+                                bool *aHasDirectory)
+ {
+   NS_ENSURE_ARG_POINTER(aDirectory);
+   NS_ENSURE_ARG_POINTER(aHasDirectory);
+-  
++
+   *aHasDirectory = false;
+ 
+   uint32_t pos;
+   if (m_AddressList && NS_SUCCEEDED(m_AddressList->IndexOf(0, aDirectory, &pos)))
+     *aHasDirectory = true;
+ 
+   return NS_OK;
+ }
+@@ -1198,90 +1198,90 @@ nsAbOSXDirectory::OnSearchFinished(int32
+ NS_IMETHODIMP
+ nsAbOSXDirectory::OnSearchFoundCard(nsIAbCard *aCard)
+ {
+   nsresult rv;
+   if (!m_AddressList) {
+     m_AddressList = do_CreateInstance(NS_ARRAY_CONTRACTID, &rv);
+     NS_ENSURE_SUCCESS(rv, rv);
+   }
+-  
++
+   if (!mCardList) {
+     mCardList = do_CreateInstance(NS_ARRAY_CONTRACTID, &rv);
+     NS_ENSURE_SUCCESS(rv, rv);
+   }
+ 
+   rv = m_AddressList->AppendElement(aCard);
+   NS_ENSURE_SUCCESS(rv, rv);
+-  
++
+   rv = mCardList->AppendElement(aCard);
+   NS_ENSURE_SUCCESS(rv, rv);
+ 
+   nsAutoCString ourUuid;
+   GetUuid(ourUuid);
+   aCard->SetDirectoryId(ourUuid);
+-  
++
+   return NS_OK;
+ }
+ 
+ nsresult
+ nsAbOSXDirectory::FallbackSearch(nsIAbBooleanExpression *aExpression,
+                                  nsISimpleEnumerator **aCards)
+ {
+   nsresult rv;
+-  
++
+   if (mCardList)
+     rv = mCardList->Clear();
+   else
+     mCardList = do_CreateInstance(NS_ARRAY_CONTRACTID, &rv);
+   NS_ENSURE_SUCCESS(rv, rv);
+-  
++
+   if (m_AddressList) {
+     m_AddressList->Clear();
+   }
+   else {
+     m_AddressList = do_CreateInstance(NS_ARRAY_CONTRACTID, &rv);
+     NS_ENSURE_SUCCESS(rv, rv);
+   }
+-  
++
+   nsCOMPtr<nsIAbDirectoryQueryArguments> arguments =
+     do_CreateInstance(NS_ABDIRECTORYQUERYARGUMENTS_CONTRACTID, &rv);
+   NS_ENSURE_SUCCESS(rv, rv);
+-  
++
+   rv = arguments->SetExpression(aExpression);
+   NS_ENSURE_SUCCESS(rv, rv);
+-  
++
+   // Don't search the subdirectories. If the current directory is a mailing
+   // list, it won't have any subdirectories. If the current directory is an
+   // addressbook, searching both it and the subdirectories (the mailing
+   // lists), will yield duplicate results because every entry in a mailing
+   // list will be an entry in the parent addressbook.
+   rv = arguments->SetQuerySubDirectories(false);
+   NS_ENSURE_SUCCESS(rv, rv);
+-  
++
+   // Get the directory without the query
+   nsCOMPtr<nsIAbManager> abManager = do_GetService(NS_ABMANAGER_CONTRACTID, &rv);
+   NS_ENSURE_SUCCESS(rv, rv);
+ 
+   nsCOMPtr<nsIAbDirectory> directory;
+   rv = abManager->GetDirectory(mURINoQuery, getter_AddRefs(directory));
+   NS_ENSURE_SUCCESS(rv, rv);
+ 
+   // Initiate the proxy query with the no query directory
+-  nsCOMPtr<nsIAbDirectoryQueryProxy> queryProxy = 
++  nsCOMPtr<nsIAbDirectoryQueryProxy> queryProxy =
+     do_CreateInstance(NS_ABDIRECTORYQUERYPROXY_CONTRACTID, &rv);
+   NS_ENSURE_SUCCESS(rv, rv);
+-  
++
+   rv = queryProxy->Initiate();
+   NS_ENSURE_SUCCESS(rv, rv);
+-  
++
+   int32_t context = 0;
+   rv = queryProxy->DoQuery(directory, arguments, this, -1, 0, &context);
+   NS_ENSURE_SUCCESS(rv, rv);
+-  
++
+   return NS_NewArrayEnumerator(aCards, m_AddressList);
+ }
+ 
+ nsresult nsAbOSXDirectory::DeleteUid(const nsACString &aUid)
+ {
+   if (!m_AddressList)
+     return NS_ERROR_NULL_POINTER;
+ 
+diff --git a/mailnews/base/content/folderWidgets.xml b/mailnews/base/content/folderWidgets.xml
+--- a/mailnews/base/content/folderWidgets.xml
++++ b/mailnews/base/content/folderWidgets.xml
+@@ -209,17 +209,17 @@
+           if (!(aItem instanceof Ci.nsIMsgFolder))
+             return;
+           if (this._filterFunction && !this._filterFunction(aItem)) {
+             return;
+           }
+           //xxx we can optimize this later
+           this._clearMenu(this._menu);
+         },
+-  
++ 
+         OnItemRemoved: function act_remove(aRDFParentItem, aItem) {
+           if (!(aItem instanceof Ci.nsIMsgFolder))
+             return;
+           if (this._filterFunction && !this._filterFunction(aItem)) {
+             return;
+           }
+           //xxx we can optimize this later
+           this._clearMenu(this._menu);
+diff --git a/mailnews/base/content/junkMailInfo.xul b/mailnews/base/content/junkMailInfo.xul
+--- a/mailnews/base/content/junkMailInfo.xul
++++ b/mailnews/base/content/junkMailInfo.xul
+@@ -7,17 +7,17 @@
+ <!DOCTYPE dialog [
+ <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
+ %brandDTD;
+ <!ENTITY % junkMailInfoDTD SYSTEM "chrome://messenger/locale/junkMailInfo.dtd" >
+ %junkMailInfoDTD;
+ ]>
+ 
+ <?xml-stylesheet href="chrome://messenger/skin/messenger.css" type="text/css"?>
+-<?xml-stylesheet href="chrome://messenger/skin/primaryToolbar.css" type="text/css"?> 
++<?xml-stylesheet href="chrome://messenger/skin/primaryToolbar.css" type="text/css"?>
+ 
+ <dialog id="junkMailInfo"
+         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+         title="&window.title;"
+         windowtype="mailnews:junkmailinfo"
+         buttons="accept">
+ 
+   <vbox flex="1" width="&window.width;">
+diff --git a/mailnews/base/content/msgAccountCentral.xul b/mailnews/base/content/msgAccountCentral.xul
+--- a/mailnews/base/content/msgAccountCentral.xul
++++ b/mailnews/base/content/msgAccountCentral.xul
+@@ -1,9 +1,9 @@
+-<?xml version="1.0"?> 
++<?xml version="1.0"?>
+ <!-- This Source Code Form is subject to the terms of the Mozilla Public
+    - License, v. 2.0. If a copy of the MPL was not distributed with this
+    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+ 
+ <?xml-stylesheet href="chrome://messenger/skin/accountCentral.css" type="text/css"?>
+ 
+ <!DOCTYPE page [
+   <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd">
+diff --git a/mailnews/base/content/shutdownWindow.xul b/mailnews/base/content/shutdownWindow.xul
+--- a/mailnews/base/content/shutdownWindow.xul
++++ b/mailnews/base/content/shutdownWindow.xul
+@@ -10,22 +10,22 @@
+ <dialog xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+         style="padding: 20px; width: 350px"
+         onload="onLoad()"
+         buttons="cancel"
+         ondialogcancel="return onCancel();">
+ 
+   <script type="application/javascript" src="chrome://messenger/content/shutdownWindow.js"/>
+   <stringbundle id="bundle_shutdown" src="chrome://messenger/locale/shutdownWindow.properties"/>
+-  
++
+   <vbox align="center">
+     <label id="shutdownStatus_label" value="" />
+     <separator class="thin" />
+   </vbox>
+-  
++
+   <progressmeter id="shutdown_progressmeter" mode="determined" />
+-  
++
+   <vbox align="center">
+     <label id="shutdownTask_label" value="" />
+     <separator class="thick" />
+   </vbox>
+-  
++
+ </dialog>
+diff --git a/mailnews/base/prefs/content/AccountWizard.xul b/mailnews/base/prefs/content/AccountWizard.xul
+--- a/mailnews/base/prefs/content/AccountWizard.xul
++++ b/mailnews/base/prefs/content/AccountWizard.xul
+@@ -57,17 +57,17 @@
+         <radio id="movemailaccount" label="&accountTypeMovemail.label;"
+                accesskey="&accountTypeMovemail.accesskey;"
+                value="movemail" />
+ #endif
+ #ifndef MOZ_THUNDERBIRD
+         <radio id="rssaccount" value="rss" label="&feeds.wizardLongName;"
+                accesskey="&feeds.wizardLongName.accesskey;"/>
+ #endif
+-        <vbox datasources="rdf:ispdefaults" 
++        <vbox datasources="rdf:ispdefaults"
+               containment="http://home.netscape.com/NC-rdf#providers"
+               id="ispBox"
+               ref="NC:ispinfo">
+           <template>
+             <rule nc:wizardShow="true">
+               <radio uri="..."
+                      value="rdf:http://home.netscape.com/NC-rdf#wizardShortName"
+                      label="rdf:http://home.netscape.com/NC-rdf#wizardLongName"
+@@ -91,24 +91,24 @@
+       <separator/>
+       <description>&fullnameDesc.label; &fullnameExample.label;</description>
+       <separator class="thin"/>
+       <hbox align="center">
+         <label class="awIdentityLabel" value="&fullnameLabel.label;"
+                accesskey="&fullnameLabel.accesskey;" control="fullName"/>
+         <textbox mailtype="identity" wsm_persist="true" name="fullName" id="fullName" flex="1" oninput="identityPageValidate();"/>
+       </hbox>
+-      <separator/>  
++      <separator/>
+       <grid>
+         <columns>
+           <column flex="1"/>
+         </columns>
+         <rows>
+           <row>
+-            <description id="emailDescText"/> 
++            <description id="emailDescText"/>
+           </row>
+           <separator class="thin"/>
+           <row>
+             <hbox align="center">
+               <label class="awIdentityLabel" id="emailFieldLabel" value="&emailLabel.label;"
+                      accesskey="&emailLabel.accesskey;" control="email"/>
+               <hbox class="uri-element" align="center" flex="1">
+                 <textbox wsm_persist="true" mailtype="identity" name="email"
+@@ -133,22 +133,22 @@
+               onpageadvanced="return incomingPageUnload();">
+     <vbox flex="1">
+         <vbox id="serverTypeBox">
+         <label control="servertype">&incomingServerTypeDesc.label;</label>
+           <separator class="thin"/>
+           <hbox align="center" class="serverDataBox">
+             <!-- The initial value for the servertype radiogroup is set in onInit() -->
+             <radiogroup id="servertype" wsm_persist="true" orient="horizontal">
+-                <radio group="servertype" value="pop3" id="pop3" label="&popType.label;" 
++                <radio group="servertype" value="pop3" id="pop3" label="&popType.label;"
+                        wsm_persist="true" oncommand="setServerType();" accesskey="&popType.accesskey;"/>
+                 <radio group="servertype" value="imap" id="imap" label="&imapType.label;"
+                        wsm_persist="true" oncommand="setServerType();" accesskey="&imapType.accesskey;"/>
+             </radiogroup>
+-            <label id="serverPortLabel" control="serverPort" 
++            <label id="serverPortLabel" control="serverPort"
+                    accesskey="&portNum.accesskey;"
+                    value="&portNum.label;"/>
+             <textbox id="serverPort" type="number" size="3" max="65535"/>
+             <label id="defaultPortLabel" value="&defaultPortLabel.label;"/>
+             <label id="defaultPortValue" value="&defaultPortValue.label;"/>
+           </hbox>
+           <separator/>
+         </vbox>
+@@ -277,33 +277,33 @@
+                  class="uri-element"
+                  oninput="incomingPageValidate();"/>
+       </hbox>
+     </vbox>
+   </wizardpage>
+ 
+   <!-- Account name page : User gets a choice to enter a pretty name for the account -->
+   <!-- Defaults : Mail account -> Email address, Newsgroup account -> Newsgroup server name -->
+-  <wizardpage id="accnamepage" pageid="accnamepage" 
++  <wizardpage id="accnamepage" pageid="accnamepage"
+               label="&accnameTitle.label;"
+               onpageshow="return acctNamePageInit();"
+               onpageadvanced="return acctNamePageUnload();">
+     <vbox flex="1">
+       <description>&accnameDesc.label;</description>
+       <separator class="thin"/>
+       <hbox align="center">
+         <label class="label" value="&accnameLabel.label;" style="width: 8em;"
+                accesskey="&accnameLabel.accesskey;" control="prettyName"/>
+         <textbox id="prettyName" size="40" wsm_persist="true" flex="1" oninput="acctNamePageValidate();"/>
+       </hbox>
+     </vbox>
+   </wizardpage>
+ 
+   <!-- Done page : this page summarizes information collected to create a mail/news account -->
+-  <wizardpage id="done" pageid="done" 
++  <wizardpage id="done" pageid="done"
+               label="&completionTitle.label;"
+               onpageshow="return donePageInit();">
+     <vbox flex="1">
+       <description>&completionText.label;</description>
+       <separator class="thin"/>
+       <grid>
+         <columns>
+           <column/>
+diff --git a/mailnews/base/prefs/content/am-offline.xul b/mailnews/base/prefs/content/am-offline.xul
+--- a/mailnews/base/prefs/content/am-offline.xul
++++ b/mailnews/base/prefs/content/am-offline.xul
+@@ -6,23 +6,23 @@
+ <?xml-stylesheet href="chrome://messenger/skin/accountManage.css" type="text/css"?>
+ 
+ <!DOCTYPE page SYSTEM "chrome://messenger/locale/am-offline.dtd">
+ 
+ <page xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+       onload="parent.onPanelLoaded('am-offline.xul');">
+ 
+   <vbox flex="1" style="overflow: auto;">
+-    <stringbundle id="bundle_prefs" src="chrome://messenger/locale/prefs.properties"/> 
++    <stringbundle id="bundle_prefs" src="chrome://messenger/locale/prefs.properties"/>
+ 
+     <script type="application/javascript" src="chrome://messenger/content/AccountManager.js"/>
+     <script type="application/javascript" src="chrome://messenger/content/retention.js"/>
+     <script type="application/javascript" src="chrome://messenger/content/am-offline.js"/>
+ 
+-    <label hidden="true" wsm_persist="true" id="server.type"/>  
++    <label hidden="true" wsm_persist="true" id="server.type"/>
+     <label id="imap.autoSyncMaxAgeDays" hidden="true"
+            wsm_persist="true" preftype="int"
+            prefstring="mail.server.%serverkey%.autosync_max_age_days"/>
+ 
+     <dialogheader id="headertitle"/>
+ 
+     <groupbox id="offline.titlebox" hidefor="movemail,pop3,none,rss">
+       <caption label="&syncGroupTitle.label;"/>
+diff --git a/mailnews/base/src/nsMessengerOSXIntegration.mm b/mailnews/base/src/nsMessengerOSXIntegration.mm
+--- a/mailnews/base/src/nsMessengerOSXIntegration.mm
++++ b/mailnews/base/src/nsMessengerOSXIntegration.mm
+@@ -113,17 +113,17 @@ static void openMailWindow(const nsCStri
+         wwatch->OpenWindow(0, "chrome://messenger/content/messageWindow.xul",
+                            "_blank", "all,chrome,dialog=no,status,toolbar", msgUri,
+                            getter_AddRefs(newWindow));
+ #else
+         nsCOMPtr<nsIMessenger> messenger(do_CreateInstance(NS_MESSENGER_CONTRACTID, &rv));
+         if (NS_FAILED(rv))
+           return;
+ 
+-        nsCOMPtr<nsIMsgDBHdr> msgHdr; 
++        nsCOMPtr<nsIMsgDBHdr> msgHdr;
+         messenger->MsgHdrFromURI(aUri, getter_AddRefs(msgHdr));
+         if (msgHdr)
+         {
+           nsCOMPtr<mozIDOMWindowProxy> newWindow;
+           wwatch->OpenWindow(0, "chrome://messenger/content/messageWindow.xul",
+                              "_blank", "all,chrome,dialog=no,status,toolbar", msgHdr,
+                              getter_AddRefs(newWindow));
+         }
+@@ -216,17 +216,17 @@ nsMessengerOSXIntegration::Observe(nsISu
+   if (!strcmp(aTopic, "alertfinished"))
+     return OnAlertFinished();
+ 
+   if (!strcmp(aTopic, "alertclickcallback"))
+     return OnAlertClicked(aData);
+ 
+ #ifdef MOZ_SUITE
+   // SeaMonkey does most of the GUI work in JS code when clicking on a mail
+-  // notification, so it needs an extra function here 
++  // notification, so it needs an extra function here
+   if (!strcmp(aTopic, "alertclicksimplecallback"))
+     return OnAlertClickedSimple();
+ #endif
+ 
+   if (!strcmp(aTopic, "mail-startup-done")) {
+     nsresult rv;
+     nsCOMPtr<nsIObserverService> observerService = do_GetService("@mozilla.org/observer-service;1", &rv);
+     if (NS_SUCCEEDED(rv)) {
+diff --git a/mailnews/build/nsMailModule.cpp b/mailnews/build/nsMailModule.cpp
+--- a/mailnews/build/nsMailModule.cpp
++++ b/mailnews/build/nsMailModule.cpp
+@@ -1,36 +1,36 @@
+ /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+ /* This Source Code Form is subject to the terms of the Mozilla Public
+  * License, v. 2.0. If a copy of the MPL was not distributed with this
+  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+ 
+ /* ****************************************************************************
+  * ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
+  * ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
+- * 
++ *
+  * ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
+  * ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
+- * 
++ *
+  * Dear Mortals,
+- * 
++ *
+  * Please be advised that if you are adding something here, you should also
+  * strongly consider adding it to the other place it goes too!  These can be
+  * found in paths like so: mailnews/.../build/WhateverFactory.cpp
+- * 
++ *
+  * If you do not, your (static) release builds will be quite pleasant, but
+  * (dynamic) debug builds will disappoint you by not having your component in
+  * them.
+- * 
++ *
+  * Yours truly,
+  * The ghost that haunts the MailNews codebase.
+- * 
++ *
+  * ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
+  * ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
+- * 
++ *
+  * ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
+  * ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
+  * ****************************************************************************/
+ 
+ 
+ ////////////////////////////////////////////////////////////////////////////////
+ // Core Module Include Files
+ ////////////////////////////////////////////////////////////////////////////////
+diff --git a/mailnews/compose/content/sendProgress.xul b/mailnews/compose/content/sendProgress.xul
+--- a/mailnews/compose/content/sendProgress.xul
++++ b/mailnews/compose/content/sendProgress.xul
+@@ -1,9 +1,9 @@
+-<?xml version="1.0"?> 
++<?xml version="1.0"?>
+ 
+ <!-- This Source Code Form is subject to the terms of the Mozilla Public
+    - License, v. 2.0. If a copy of the MPL was not distributed with this
+    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+ 
+ <?xml-stylesheet href="chrome://messenger/skin/dialogs.css" type="text/css"?>
+ 
+ <!DOCTYPE dialog SYSTEM "chrome://messenger/locale/messengercompose/sendProgress.dtd">
+diff --git a/mailnews/db/gloda/content/glodacomplete.xml b/mailnews/db/gloda/content/glodacomplete.xml
+--- a/mailnews/db/gloda/content/glodacomplete.xml
++++ b/mailnews/db/gloda/content/glodacomplete.xml
+@@ -300,25 +300,25 @@
+     <implementation implements="nsIDOMXULSelectControlItemElement">
+       <constructor>
+         <![CDATA[
+             this._explanation = document.getAnonymousElementByAttribute(this, "anonid", "explanation");
+ 
+             this._adjustAcItem();
+           ]]>
+       </constructor>
+-      
++
+       <property name="label" readonly="true">
+         <getter>
+           <![CDATA[
+             return "tag " + this.row.item.tag;
+           ]]>
+         </getter>
+       </property>
+-      
++
+       <method name="_adjustAcItem">
+         <body>
+           <![CDATA[
+             let label = gGlodaCompleteStrings.get("glodaComplete.messagesTagged.label");
+             this._explanation.value = label.replace("#1", this.row.item.tag);
+           ]]>
+         </body>
+       </method>
+@@ -334,25 +334,25 @@
+     <implementation implements="nsIDOMXULSelectControlItemElement">
+       <constructor>
+         <![CDATA[
+             this._explanation = document.getAnonymousElementByAttribute(this, "anonid", "explanation");
+ 
+             this._adjustAcItem();
+           ]]>
+       </constructor>
+-      
++
+       <property name="label" readonly="true">
+         <getter>
+           <![CDATA[
+             return "full text search: " + this.row.item;
+           ]]>
+         </getter>
+       </property>
+-      
++
+       <method name="_adjustAcItem">
+         <body>
+           <![CDATA[
+             let label = gGlodaCompleteStrings.get("glodaComplete.messagesMentioning.label");
+             this._explanation.value = label.replace("#1", this.row.item);
+           ]]>
+         </body>
+       </method>
+@@ -365,25 +365,25 @@
+     </content>
+     <implementation implements="nsIDOMXULSelectControlItemElement">
+       <constructor>
+         <![CDATA[
+             this._explanation = document.getAnonymousElementByAttribute(this, "anonid", "explanation");
+             this._adjustAcItem();
+           ]]>
+       </constructor>
+-      
++
+       <property name="label" readonly="true">
+         <getter>
+           <![CDATA[
+             return "full text search: " + this.row.item; // what is this for? l10n?
+           ]]>
+         </getter>
+       </property>
+-      
++
+       <method name="_adjustAcItem">
+         <body>
+           <![CDATA[
+           let label = gGlodaCompleteStrings.get("glodaComplete.messagesMentioningMany.label");
+           this._explanation.value = label.replace("#1", this.row.words.join(", "));
+           ]]>
+         </body>
+       </method>
+@@ -436,43 +436,43 @@
+ 
+             this._typeImage = document.getAnonymousElementByAttribute(this, "anonid", "type-image");
+ 
+             this._identityBox = document.getAnonymousElementByAttribute(this, "anonid", "identity-box");
+             this._identity = document.getAnonymousElementByAttribute(this, "anonid", "identity");
+ 
+             this._nameBox = document.getAnonymousElementByAttribute(this, "anonid", "name-box");
+             this._name = document.getAnonymousElementByAttribute(this, "anonid", "name");
+-            
++
+             this._picture = document.getAnonymousElementByAttribute(this, "anonid", "picture");
+ 
+             this._adjustAcItem();
+           ]]>
+       </constructor>
+-      
++
+       <property name="label" readonly="true">
+         <getter>
+           <![CDATA[
+             var identity = this.row.item;
+             return identity.accessibleLabel;
+           ]]>
+         </getter>
+       </property>
+-      
++
+       <method name="_adjustAcItem">
+         <body>
+           <![CDATA[
+           var identity = this.row.item;
+-          
++
+           if (identity == null)
+             return;
+-          
++
+           // I guess we should get the picture size from CSS or something?
+           this._picture.src = identity.pictureURL(32);
+-          
++
+           // Emphasize the matching search terms for the description
+           this._setUpDescription(this._name, identity.contact.name);
+           this._setUpDescription(this._identity, identity.value);
+ 
+           // Set up overflow on a timeout because the contents of the box
+           // might not have a width yet even though we just changed them
+           setTimeout(this._setUpOverflow, 0, this._nameBox, this._nameOverflowEllipsis);
+           setTimeout(this._setUpOverflow, 0, this._identityBox, this._identityOverflowEllipsis);
+@@ -526,45 +526,45 @@
+ 
+             this._typeImage = document.getAnonymousElementByAttribute(this, "anonid", "type-image");
+ 
+             this._identityBox = document.getAnonymousElementByAttribute(this, "anonid", "identity-box");
+             this._identity = document.getAnonymousElementByAttribute(this, "anonid", "identity");
+ 
+             this._nameBox = document.getAnonymousElementByAttribute(this, "anonid", "name-box");
+             this._name = document.getAnonymousElementByAttribute(this, "anonid", "name");
+-            
++
+             this._picture = document.getAnonymousElementByAttribute(this, "anonid", "picture");
+ 
+             this._adjustAcItem();
+           ]]>
+       </constructor>
+-      
++
+       <property name="label" readonly="true">
+         <getter>
+           <![CDATA[
+             var identity = this.obj;
+             return identity.accessibleLabel;
+           ]]>
+         </getter>
+       </property>
+-      
++
+       <method name="_adjustAcItem">
+         <body>
+           <![CDATA[
+           var contact = this.obj;
+-          
++
+           if (contact == null)
+             return;
+-          
++
+           var identity = contact.identities[0];
+-          
++
+           // I guess we should get the picture size from CSS or something?
+           this._picture.src = identity.pictureURL(32);
+-          
++
+           // Emphasize the matching search terms for the description
+           this._setUpDescription(this._name, contact.name);
+           this._setUpDescription(this._identity, identity.value);
+ 
+           // Set up overflow on a timeout because the contents of the box
+           // might not have a width yet even though we just changed them
+           setTimeout(this._setUpOverflow, 0, this._nameBox, this._nameOverflowEllipsis);
+           setTimeout(this._setUpOverflow, 0, this._identityBox, this._identityOverflowEllipsis);
+@@ -584,54 +584,54 @@
+       <constructor>
+         <![CDATA[
+             this._explanation = document.getAnonymousElementByAttribute(this, "anonid", "explanation");
+             this._identityHolder = document.getAnonymousElementByAttribute(this, "anonid", "identity-holder");
+ 
+             this._adjustAcItem();
+           ]]>
+       </constructor>
+-      
++
+       <property name="label" readonly="true">
+         <getter>
+           <![CDATA[
+             return this._explanation.value;
+           ]]>
+         </getter>
+       </property>
+-      
++
+       <method name="renderItem">
+         <parameter name="aObj"/>
+         <body>
+           var node = document.createElementNS(
+             "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul",
+             "richlistitem");
+-          
++
+           node.obj = aObj;
+           node.setAttribute("type",
+                             "gloda-" + this.row.nounDef.name + "-chunk");
+-          
++
+           this._identityHolder.appendChild(node);
+         </body>
+       </method>
+-      
++
+       <method name="_adjustAcItem">
+         <body>
+           <![CDATA[
+           // clear out any lingering children
+           while (this._identityHolder.hasChildNodes())
+             this._identityHolder.lastChild.remove();
+-          
++
+           var row = this.row;
+           if (row == null)
+             return;
+-          
++
+           this._explanation.value = row.nounDef.name + "s " +
+             row.criteriaType + "ed " + row.criteria;
+-          
++
+           // render anyone already in there
+           for (let item of row.collection.items) {
+             this.renderItem(item);
+           }
+           // listen up, yo.
+           row.renderer = this;
+           ]]>
+         </body>
+diff --git a/mailnews/extensions/dsn/content/am-dsn.xul b/mailnews/extensions/dsn/content/am-dsn.xul
+--- a/mailnews/extensions/dsn/content/am-dsn.xul
++++ b/mailnews/extensions/dsn/content/am-dsn.xul
+@@ -5,42 +5,42 @@
+  This Source Code Form is subject to the terms of the Mozilla Public
+    - License, v. 2.0. If a copy of the MPL was not distributed with this
+    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+ 
+ <?xml-stylesheet href="chrome://messenger/skin/accountManage.css" type="text/css"?>
+ 
+ <!DOCTYPE page SYSTEM "chrome://messenger/locale/am-dsn.dtd">
+ 
+-<page xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" 
++<page xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+       onload="parent.onPanelLoaded('am-dsn.xul');">
+ 
+-  <stringbundle id="bundle_smime" src="chrome://messenger/locale/am-dsn.properties"/> 
++  <stringbundle id="bundle_smime" src="chrome://messenger/locale/am-dsn.properties"/>
+   <script type="application/javascript" src="chrome://messenger/content/AccountManager.js"/>
+   <script type="application/javascript" src="chrome://messenger/content/am-dsn.js"/>
+-  
++
+   <dialogheader title="&pane.title;"/>
+ 
+   <groupbox>
+ 
+     <caption label="&pane.title;"/>
+ 
+     <hbox id="prefChoices" align="center">
+       <radiogroup id="identity.dsn_use_custom_prefs"
+                   wsm_persist="true"
+-                  genericattr="true" 
++                  genericattr="true"
+                   preftype="bool"
+-                  prefstring="mail.identity.%identitykey%.dsn_use_custom_prefs" 
++                  prefstring="mail.identity.%identitykey%.dsn_use_custom_prefs"
+                   oncommand="EnableDisableCustomSettings();">
+-    
++
+         <radio id="identity.select_global_prefs"
+                value="false"
+                label="&useGlobalPrefs.label;"
+                accesskey="&useGlobalPrefs.accesskey;"/>
+-    
++
+         <radio id="identity.select_custom_prefs"
+                value="true"
+                label="&useCustomPrefs.label;"
+                accesskey="&useCustomPrefs.accesskey;"/>
+       </radiogroup>
+     </hbox>
+ 
+     <vbox id="dsnSettings" class="indent" align="start">
+diff --git a/mailnews/extensions/smime/content/certFetchingStatus.xul b/mailnews/extensions/smime/content/certFetchingStatus.xul
+--- a/mailnews/extensions/smime/content/certFetchingStatus.xul
++++ b/mailnews/extensions/smime/content/certFetchingStatus.xul
+@@ -4,17 +4,17 @@
+    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+ 
+ <?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+ <?xml-stylesheet href="chrome://messenger/skin/smime/certFetchingStatus.css" type="text/css"?>
+ 
+ <!DOCTYPE dialog SYSTEM "chrome://messenger-smime/locale/certFetchingStatus.dtd">
+ 
+ <dialog id="certFetchingStatus" title="&title.label;"
+-  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"      
++  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+   style="width: 50em;"
+   buttons="cancel"
+   buttonlabelcancel="&stop.label;"
+   ondialogcancel="return stopFetching();"
+   onload="onLoad();">
+ 
+   <stringbundle id="bundle_ldap" src="chrome://mozldap/locale/ldap.properties"/>
+ <script type="application/javascript" src="chrome://messenger-smime/content/certFetchingStatus.js"/>
+diff --git a/mailnews/extensions/smime/content/msgCompSecurityInfo.xul b/mailnews/extensions/smime/content/msgCompSecurityInfo.xul
+--- a/mailnews/extensions/smime/content/msgCompSecurityInfo.xul
++++ b/mailnews/extensions/smime/content/msgCompSecurityInfo.xul
+@@ -4,25 +4,25 @@
+    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+ 
+ <?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+ <?xml-stylesheet href="chrome://messenger/skin/smime/msgCompSecurityInfo.css" type="text/css"?>
+ 
+ <!DOCTYPE dialog SYSTEM "chrome://messenger-smime/locale/msgCompSecurityInfo.dtd">
+ 
+ <dialog id="msgCompSecurityInfo" title="&title.label;"
+-  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"      
++  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+   style="width: 50em;"
+   persist="width height"
+   buttons="accept"
+   onload="onLoad();">
+ 
+   <script type="application/javascript" src="chrome://messenger-smime/content/msgCompSecurityInfo.js"/>
+ 
+-  <stringbundle id="bundle_smime_comp_info" src="chrome://messenger-smime/locale/msgCompSecurityInfo.properties"/> 
++  <stringbundle id="bundle_smime_comp_info" src="chrome://messenger-smime/locale/msgCompSecurityInfo.properties"/>
+ 
+   <description>&subject.plaintextWarning;</description>
+   <separator class="thin"/>
+   <description>&status.heading;</description>
+   <grid>
+     <columns>
+       <column/>
+       <column/>
+diff --git a/mailnews/extensions/smime/content/msgHdrViewSMIMEOverlay.xul b/mailnews/extensions/smime/content/msgHdrViewSMIMEOverlay.xul
+--- a/mailnews/extensions/smime/content/msgHdrViewSMIMEOverlay.xul
++++ b/mailnews/extensions/smime/content/msgHdrViewSMIMEOverlay.xul
+@@ -1,14 +1,14 @@
+-<?xml version="1.0"?> 
++<?xml version="1.0"?>
+ <!-- This Source Code Form is subject to the terms of the Mozilla Public
+    - License, v. 2.0. If a copy of the MPL was not distributed with this
+    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+ 
+-<?xml-stylesheet href="chrome://messenger/skin/smime/msgHdrViewSMIMEOverlay.css" type="text/css"?> 
++<?xml-stylesheet href="chrome://messenger/skin/smime/msgHdrViewSMIMEOverlay.css" type="text/css"?>
+ 
+ <overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+ 
+   <script type="application/javascript" src="chrome://messenger-smime/content/msgHdrViewSMIMEOverlay.js"/>
+ <!-- These stringbundles are already defined in msgReadSMIMEOverlay.xul!
+   <stringbundleset id="stringbundleset">
+     <stringbundle id="bundle_read_smime" src="chrome://messenger-smime/locale/msgReadSMIMEOverlay.properties"/>
+     <stringbundle id="bundle_brand" src="chrome://branding/locale/brand.properties"/>
+diff --git a/mailnews/extensions/smime/content/msgReadSMIMEOverlay.xul b/mailnews/extensions/smime/content/msgReadSMIMEOverlay.xul
+--- a/mailnews/extensions/smime/content/msgReadSMIMEOverlay.xul
++++ b/mailnews/extensions/smime/content/msgReadSMIMEOverlay.xul
+@@ -1,9 +1,9 @@
+-<?xml version="1.0"?> 
++<?xml version="1.0"?>
+ <!-- This Source Code Form is subject to the terms of the Mozilla Public
+    - License, v. 2.0. If a copy of the MPL was not distributed with this
+    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+ 
+ <?xml-stylesheet href="chrome://messenger/skin/smime/msgReadSMIMEOverlay.css" type="text/css"?>
+ 
+ <!DOCTYPE overlay SYSTEM "chrome://messenger-smime/locale/msgReadSMIMEOverlay.dtd">
+ 
+diff --git a/mailnews/extensions/smime/content/msgReadSecurityInfo.xul b/mailnews/extensions/smime/content/msgReadSecurityInfo.xul
+--- a/mailnews/extensions/smime/content/msgReadSecurityInfo.xul
++++ b/mailnews/extensions/smime/content/msgReadSecurityInfo.xul
+@@ -1,27 +1,27 @@
+ <?xml version="1.0"?>
+ <!-- This Source Code Form is subject to the terms of the Mozilla Public
+    - License, v. 2.0. If a copy of the MPL was not distributed with this
+    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+ 
+ <?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+-<?xml-stylesheet href="chrome://messenger/skin/smime/msgReadSecurityInfo.css" type="text/css"?> 
++<?xml-stylesheet href="chrome://messenger/skin/smime/msgReadSecurityInfo.css" type="text/css"?>
+ 
+ <!DOCTYPE dialog SYSTEM "chrome://messenger-smime/locale/msgReadSecurityInfo.dtd">
+ 
+ <dialog id="msgReadSecurityInfo" title="&status.label;"
+-  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"      
++  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+   style="width: 40em;"
+   buttons="accept"
+   onload="onLoad();">
+ 
+   <script type="application/javascript" src="chrome://messenger-smime/content/msgReadSecurityInfo.js"/>
+ 
+-  <stringbundle id="bundle_smime_read_info" src="chrome://messenger-smime/locale/msgSecurityInfo.properties"/> 
++  <stringbundle id="bundle_smime_read_info" src="chrome://messenger-smime/locale/msgSecurityInfo.properties"/>
+ 
+   <vbox flex="1">
+     <label id="signatureLabel"/>
+     <label id="signatureHeader" collapsed="true"/>
+     <description id="signatureExplanation"/>
+     <vbox id="signatureCert" collapsed="true">
+       <hbox>
+         <label id="signedByLabel">&signer.name;</label>
+diff --git a/mailnews/import/applemail/src/nsEmlxHelperUtils.mm b/mailnews/import/applemail/src/nsEmlxHelperUtils.mm
+--- a/mailnews/import/applemail/src/nsEmlxHelperUtils.mm
++++ b/mailnews/import/applemail/src/nsEmlxHelperUtils.mm
+@@ -16,22 +16,22 @@
+ #include "nsTArray.h"
+ #include "nsAppleMailImport.h"
+ #include "prprf.h"
+ #include "nsIFile.h"
+ 
+ #import <Cocoa/Cocoa.h>
+ 
+ 
+-nsresult nsEmlxHelperUtils::ConvertToMozillaStatusFlags(const char *aXMLBufferStart, 
+-                                                        const char *aXMLBufferEnd, 
++nsresult nsEmlxHelperUtils::ConvertToMozillaStatusFlags(const char *aXMLBufferStart,
++                                                        const char *aXMLBufferEnd,
+                                                         uint32_t *aMozillaStatusFlags)
+ {
+   // create a NSData wrapper around the buffer, so we can use the Cocoa call below
+-  NSData *metadata = 
++  NSData *metadata =
+     [[[NSData alloc] initWithBytesNoCopy:(void *)aXMLBufferStart length:(aXMLBufferEnd-aXMLBufferStart) freeWhenDone:NO] autorelease];
+ 
+   // get the XML data as a dictionary
+   NSPropertyListFormat format;
+   id plist = [NSPropertyListSerialization propertyListWithData:metadata
+                                               options:NSPropertyListImmutable
+                                                         format:&format
+                                               error:NULL];
+@@ -40,17 +40,17 @@ nsresult nsEmlxHelperUtils::ConvertToMoz
+     return NS_ERROR_FAILURE;
+ 
+   // find the <flags>...</flags> value and convert to int
+   const uint32_t emlxMessageFlags = [[(NSDictionary *)plist objectForKey:@"flags"] intValue];
+ 
+   if (emlxMessageFlags == 0)
+     return NS_ERROR_FAILURE;
+ 
+-  if (emlxMessageFlags & nsEmlxHelperUtils::kRead) 
++  if (emlxMessageFlags & nsEmlxHelperUtils::kRead)
+     *aMozillaStatusFlags |= nsMsgMessageFlags::Read;
+   if (emlxMessageFlags & nsEmlxHelperUtils::kForwarded)
+     *aMozillaStatusFlags |= nsMsgMessageFlags::Forwarded;
+   if (emlxMessageFlags & nsEmlxHelperUtils::kAnswered)
+     *aMozillaStatusFlags |= nsMsgMessageFlags::Replied;
+   if (emlxMessageFlags & nsEmlxHelperUtils::kFlagged)
+     *aMozillaStatusFlags |= nsMsgMessageFlags::Marked;
+ 
+@@ -62,17 +62,17 @@ nsresult nsEmlxHelperUtils::ConvertToMbo
+   nsTArray<const char *> foundFromLines;
+ 
+   const char *cur = aMessageBufferStart;
+   while (cur < aMessageBufferEnd) {
+ 
+     const char *foundFromStr = strnstr(cur, "From ", aMessageBufferEnd-cur);
+ 
+     if (foundFromStr) {
+-      // skip all prepending '>' chars 
++      // skip all prepending '>' chars
+       const char *fromLineStart = foundFromStr;
+       while (fromLineStart-- >= aMessageBufferStart) {
+         if (*fromLineStart == '\n' || fromLineStart == aMessageBufferStart) {
+           if (fromLineStart > aMessageBufferStart)
+             fromLineStart++;
+           foundFromLines.AppendElement(fromLineStart);
+           break;
+         }
+@@ -80,17 +80,17 @@ nsresult nsEmlxHelperUtils::ConvertToMbo
+           break;
+       }
+ 
+       // advance past the last found From string.
+       cur = foundFromStr + 5;
+ 
+       // look for more From lines.
+       continue;
+-    } 
++    }
+ 
+     break;
+   }
+ 
+   // go through foundFromLines
+   if (foundFromLines.Length()) {
+ 
+     const char *chunkStart = aMessageBufferStart;
+@@ -114,17 +114,17 @@ nsresult nsEmlxHelperUtils::AddEmlxMessa
+   // in a C++ environment where the main event loop has no autorelease pool (e.g on a XPCOM thread)
+   NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+ 
+   nsresult rv = NS_ERROR_FAILURE;
+ 
+   nsAutoCString path;
+   aMessage->GetNativePath(path);
+ 
+-  NSData *data = [NSData dataWithContentsOfFile:[NSString stringWithUTF8String:path.get()]]; 
++  NSData *data = [NSData dataWithContentsOfFile:[NSString stringWithUTF8String:path.get()]];
+   if (!data) {
+     [pool release];
+     return NS_ERROR_FAILURE;
+   }
+ 
+   char *startOfMessageData = NULL;
+   uint32_t actualBytesWritten = 0;
+ 
+@@ -132,27 +132,27 @@ nsresult nsEmlxHelperUtils::AddEmlxMessa
+   //
+   // -------------------------------
+   // < A number describing how many bytes ahead there is message data >
+   // < Message data >
+   // < XML metadata for this message >
+   // -------------------------------
+ 
+   // read the first line of the emlx file, which is a number of how many bytes ahead the actual
+-  // message data is. 
++  // message data is.
+   uint64_t numberOfBytesToRead = strtol((char *)[data bytes], &startOfMessageData, 10);
+   if (numberOfBytesToRead <= 0 || !startOfMessageData) {
+     [pool release];
+     return NS_ERROR_FAILURE;
+   }
+ 
+   // skip whitespace
+-  while (*startOfMessageData == ' '  || 
+-         *startOfMessageData == '\n' || 
+-         *startOfMessageData == '\r' || 
++  while (*startOfMessageData == ' '  ||
++         *startOfMessageData == '\n' ||
++         *startOfMessageData == '\r' ||
+          *startOfMessageData == '\t')
+     ++startOfMessageData;
+ 
+   NS_NAMED_LITERAL_CSTRING(kBogusFromLine, "From \n");
+   NS_NAMED_LITERAL_CSTRING(kEndOfMessage, "\n\n");
+ 
+   // write the bogus "From " line which is a magic separator in the mbox format
+   rv = aOut->Write(kBogusFromLine.get(), kBogusFromLine.Length(), &actualBytesWritten);
+@@ -177,39 +177,39 @@ nsresult nsEmlxHelperUtils::AddEmlxMessa
+     return rv;
+   }
+ 
+   rv = aOut->Write(buf.get(), buf.Length(), &dummyRv);
+   if (NS_FAILED(rv)) {
+     [pool release];
+     return rv;
+   }
+-  
+-  // write out X-Mozilla-Keywords header as well to reserve some space for it 
++
++  // write out X-Mozilla-Keywords header as well to reserve some space for it
+   // in the mbox file.
+   rv = aOut->Write(X_MOZILLA_KEYWORDS, X_MOZILLA_KEYWORDS_LEN, &dummyRv);
+   if (NS_FAILED(rv)) {
+     [pool release];
+     return rv;
+   }
+-  
++
+   // write out empty X-Mozilla_status2 header
+   buf.Adopt(PR_smprintf(X_MOZILLA_STATUS2_FORMAT MSG_LINEBREAK, 0));
+   NS_ASSERTION(!buf.IsEmpty(), "printf error with X-Mozilla-Status2 header");
+   if (buf.IsEmpty()) {
+     [pool release];
+     return NS_ERROR_OUT_OF_MEMORY;
+   }
+ 
+   rv = aOut->Write(buf.get(), buf.Length(), &dummyRv);
+   if (NS_FAILED(rv)) {
+     [pool release];
+     return rv;
+   }
+-  
++
+   // do any conversion needed for the mbox data to be valid mboxrd.
+   nsCString convertedData;
+   rv = ConvertToMboxRD(startOfMessageData, (startOfMessageData + numberOfBytesToRead), convertedData);
+   if (NS_FAILED(rv)) {
+     [pool release];
+     return rv;
+   }
+ 
+diff --git a/mailnews/import/content/fieldMapImport.xul b/mailnews/import/content/fieldMapImport.xul
+--- a/mailnews/import/content/fieldMapImport.xul
++++ b/mailnews/import/content/fieldMapImport.xul
+@@ -1,14 +1,14 @@
+-<?xml version="1.0"?> 
++<?xml version="1.0"?>
+ <!-- This Source Code Form is subject to the terms of the Mozilla Public
+    - License, v. 2.0. If a copy of the MPL was not distributed with this
+    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+ 
+-<?xml-stylesheet href="chrome://communicator/skin/" type="text/css"?> 
++<?xml-stylesheet href="chrome://communicator/skin/" type="text/css"?>
+ 
+ <!DOCTYPE dialog SYSTEM "chrome://messenger/locale/fieldMapImport.dtd">
+ 
+ <dialog xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+         buttons="accept,cancel"
+         title="&fieldMapImport.title;"
+         style="&fieldMapImport.size;"
+         ondialogaccept="FieldImportOKButton();"
+@@ -18,19 +18,19 @@
+ 
+   <hbox align="center">
+     <label value="&fieldMapImport.recordNumber;"/>
+     <label id="recordNumber"/>
+     <spacer flex="1"/>
+     <button id="previous" oncommand="Browse(-1);"
+             label="&fieldMapImport.previous.label;"
+             accesskey="&fieldMapImport.previous.accesskey;"/>
+-    <button id="next" oncommand="Browse(1);" 
++    <button id="next" oncommand="Browse(1);"
+             label="&fieldMapImport.next.label;"
+-            accesskey="&fieldMapImport.next.accesskey;"/>      
++            accesskey="&fieldMapImport.next.accesskey;"/>
+   </hbox>
+ 
+   <hbox align="center">
+     <checkbox id="skipFirstRecord"
+               label="&fieldMapImport.skipFirstRecord.label;"
+               accesskey="&fieldMapImport.skipFirstRecord.accessKey;"/>
+   </hbox>
+ 

+ 171 - 0
comm-esr60/comm-esr60/patches/1399756-23-61a1.patch

@@ -0,0 +1,171 @@
+# HG changeset patch
+# User Jorg K <jorgk@jorgk.com>
+# Date 1521301300 -3600
+# Node ID cb4a952a64c3622866c490eb2c6c04f96951d624
+# Parent  4d1bcb81b2f6d604a3458ac02edced8918d5c3cc
+Bug 1399756 - convert line endings in feedAccountWizard.xul. rs=white-space-only
+[skip-blame]
+
+diff --git a/mailnews/extensions/newsblog/content/feedAccountWizard.xul b/mailnews/extensions/newsblog/content/feedAccountWizard.xul
+--- a/mailnews/extensions/newsblog/content/feedAccountWizard.xul
++++ b/mailnews/extensions/newsblog/content/feedAccountWizard.xul
+@@ -1,79 +1,79 @@
+-<?xml version="1.0"?>
+-<!-- This Source Code Form is subject to the terms of the Mozilla Public
+-   - License, v. 2.0. If a copy of the MPL was not distributed with this
+-   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+-
+-<?xml-stylesheet href="chrome://messenger/skin/accountWizard.css" type="text/css"?>
+-
+-<!DOCTYPE wizard [
+-  <!ENTITY %  accountDTD SYSTEM "chrome://messenger/locale/AccountWizard.dtd">
+-  %accountDTD;
+-  <!ENTITY % newsblogDTD SYSTEM "chrome://messenger-newsblog/locale/am-newsblog.dtd" >
+-  %newsblogDTD;
+-  <!ENTITY %       imDTD SYSTEM "chrome://messenger/locale/imAccountWizard.dtd" >
+-  %imDTD;
+-]>
+-
+-<wizard id="FeedAccountWizard"
+-        title="&feedWindowTitle.label;"
+-        onwizardcancel="return FeedAccountWizard.onCancel();"
+-        onwizardfinish="return FeedAccountWizard.onFinish();"
+-        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+-
+-  <script type="application/javascript"
+-          src="chrome://messenger-newsblog/content/feedAccountWizard.js"/>
+-
+-  <!-- Account setup page : User gets a choice to enter a name for the account -->
+-  <!-- Defaults : Feed account name -> default string -->
+-  <wizardpage id="accountsetuppage"
+-              pageid="accountsetuppage"
+-              label="&accnameTitle.label;"
+-              onpageshow="return FeedAccountWizard.accountSetupPageInit();"
+-              onpageadvanced="return FeedAccountWizard.accountSetupPageUnload();">
+-    <vbox flex="1">
+-      <description>&accnameDesc.label;</description>
+-      <separator class="thin"/>
+-      <hbox align="center">
+-        <label class="label"
+-               value="&accnameLabel.label;"
+-               accesskey="&accnameLabel.accesskey;"
+-               control="prettyName"/>
+-        <textbox id="prettyName"
+-                 flex="1"
+-                 value="&feeds.accountName;"
+-                 oninput="FeedAccountWizard.accountSetupPageValidate();"/>
+-      </hbox>
+-    </vbox>
+-  </wizardpage>
+-
+-  <!-- Done page : Summarizes information collected to create a feed account -->
+-  <wizardpage id="done"
+-              pageid="done"
+-              label="&accountSummaryTitle.label;"
+-              onpageshow="return FeedAccountWizard.donePageInit();">
+-    <vbox flex="1">
+-      <description>&accountSummaryInfo.label;</description>
+-      <separator class="thin"/>
+-      <grid>
+-        <columns>
+-          <column/>
+-          <column flex="1"/>
+-        </columns>
+-        <rows>
+-          <row id="account.name"
+-               align="center">
+-            <label id="account.name.label"
+-                   class="label"
+-                   flex="1"
+-                   value="&accnameLabel.label;"/>
+-            <label id="account.name.text"
+-                   class="label"/>
+-          </row>
+-        </rows>
+-      </grid>
+-      <separator/>
+-      <spacer flex="1"/>
+-    </vbox>
+-  </wizardpage>
+-
+-</wizard>
++<?xml version="1.0"?>
++<!-- This Source Code Form is subject to the terms of the Mozilla Public
++   - License, v. 2.0. If a copy of the MPL was not distributed with this
++   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
++
++<?xml-stylesheet href="chrome://messenger/skin/accountWizard.css" type="text/css"?>
++
++<!DOCTYPE wizard [
++  <!ENTITY %  accountDTD SYSTEM "chrome://messenger/locale/AccountWizard.dtd">
++  %accountDTD;
++  <!ENTITY % newsblogDTD SYSTEM "chrome://messenger-newsblog/locale/am-newsblog.dtd" >
++  %newsblogDTD;
++  <!ENTITY %       imDTD SYSTEM "chrome://messenger/locale/imAccountWizard.dtd" >
++  %imDTD;
++]>
++
++<wizard id="FeedAccountWizard"
++        title="&feedWindowTitle.label;"
++        onwizardcancel="return FeedAccountWizard.onCancel();"
++        onwizardfinish="return FeedAccountWizard.onFinish();"
++        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
++
++  <script type="application/javascript"
++          src="chrome://messenger-newsblog/content/feedAccountWizard.js"/>
++
++  <!-- Account setup page : User gets a choice to enter a name for the account -->
++  <!-- Defaults : Feed account name -> default string -->
++  <wizardpage id="accountsetuppage"
++              pageid="accountsetuppage"
++              label="&accnameTitle.label;"
++              onpageshow="return FeedAccountWizard.accountSetupPageInit();"
++              onpageadvanced="return FeedAccountWizard.accountSetupPageUnload();">
++    <vbox flex="1">
++      <description>&accnameDesc.label;</description>
++      <separator class="thin"/>
++      <hbox align="center">
++        <label class="label"
++               value="&accnameLabel.label;"
++               accesskey="&accnameLabel.accesskey;"
++               control="prettyName"/>
++        <textbox id="prettyName"
++                 flex="1"
++                 value="&feeds.accountName;"
++                 oninput="FeedAccountWizard.accountSetupPageValidate();"/>
++      </hbox>
++    </vbox>
++  </wizardpage>
++
++  <!-- Done page : Summarizes information collected to create a feed account -->
++  <wizardpage id="done"
++              pageid="done"
++              label="&accountSummaryTitle.label;"
++              onpageshow="return FeedAccountWizard.donePageInit();">
++    <vbox flex="1">
++      <description>&accountSummaryInfo.label;</description>
++      <separator class="thin"/>
++      <grid>
++        <columns>
++          <column/>
++          <column flex="1"/>
++        </columns>
++        <rows>
++          <row id="account.name"
++               align="center">
++            <label id="account.name.label"
++                   class="label"
++                   flex="1"
++                   value="&accnameLabel.label;"/>
++            <label id="account.name.text"
++                   class="label"/>
++          </row>
++        </rows>
++      </grid>
++      <separator/>
++      <spacer flex="1"/>
++    </vbox>
++  </wizardpage>
++
++</wizard>
+

+ 892 - 0
comm-esr60/comm-esr60/patches/1399756-28-61a1.patch

@@ -0,0 +1,892 @@
+# HG changeset patch
+# User Jorg K <jorgk@jorgk.com>
+# Date 1521624369 -3600
+# Node ID 2daea21a0ede6ae5016c2faf87d23c60ca8ac21f
+# Parent  5bad3a176144a11d906a4421ce370f7b76ace806
+Bug 1399756 - remove trailing spaces in mail/ (.css, .dtd, .properties). rs=white-space-only
+[skip-blame]
+
+diff --git a/mail/components/im/messages/papersheets/Variants/White.css b/mail/components/im/messages/papersheets/Variants/White.css
+--- a/mail/components/im/messages/papersheets/Variants/White.css
++++ b/mail/components/im/messages/papersheets/Variants/White.css
+@@ -1,17 +1,17 @@
+ /* This Source Code Form is subject to the terms of the Mozilla Public
+  * License, v. 2.0. If a copy of the MPL was not distributed with this
+  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+ 
+-div.outgoing { 
++div.outgoing {
+   background: -moz-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.1) 15px, rgba(255, 255, 255, 1) 15px, rgba(255, 255, 255, 1)) !important;
+ }
+ 
+-div.incoming { 
++div.incoming {
+   background: -moz-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.1) 15px, rgba(255, 255, 255, 1) 15px, rgba(255, 255, 255, 1)) !important;
+ }
+ 
+ 
+ 
+ /* used by javascript */
+ .outgoing-color {
+   background-color: rgb(255, 255, 255);
+diff --git a/mail/locales/en-US/chrome/messenger-mapi/mapi.properties b/mail/locales/en-US/chrome/messenger-mapi/mapi.properties
+--- a/mail/locales/en-US/chrome/messenger-mapi/mapi.properties
++++ b/mail/locales/en-US/chrome/messenger-mapi/mapi.properties
+@@ -1,28 +1,28 @@
+ # This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ 
+ # Mail Integration Dialog
+ dialogTitle=%S
+-dialogText=Do you want to use %S as the default mail application? 
++dialogText=Do you want to use %S as the default mail application?
+ newsDialogText=Do you want to use %S as the default news application?
+ feedDialogText=Do you want to use %S as the default feed aggregator?
+ checkboxText=Do not display this dialog again
+ setDefaultMail=%S is not currently set as your default mail application.  Would you like to make it your default mail application?
+ setDefaultNews=%S is not currently set as your default news application.  Would you like to make it your default news application?
+ setDefaultFeed=%S is not currently set as your default feed aggregator.  Would you like to make it your default feed aggregator?
+ alreadyDefaultMail=%S is already set as your default mail application.
+ alreadyDefaultNews=%S is already set as your default news application.
+ alreadyDefaultFeed=%S is already set as your default feed aggregator.
+ 
+ # MAPI Messages
+ loginText=Please enter your password for %S:
+-loginTextwithName=Please enter your username and password 
++loginTextwithName=Please enter your username and password
+ loginTitle=%S
+ PasswordTitle=%S
+ 
+ # MAPI Error Messages
+ errorMessage=%S could not be set as the default mail application because a registry key could not be updated. Verify with your system administrator that you have write access to your system registry, and then try again.
+ errorMessageNews=%S could not be set as the default news application because a registry key could not be updated. Verify with your system administrator that you have write access to your system registry, and then try again.
+ errorMessageTitle=%S
+ 
+diff --git a/mail/locales/en-US/chrome/messenger-smime/msgReadSMIMEOverlay.properties b/mail/locales/en-US/chrome/messenger-smime/msgReadSMIMEOverlay.properties
+--- a/mail/locales/en-US/chrome/messenger-smime/msgReadSMIMEOverlay.properties
++++ b/mail/locales/en-US/chrome/messenger-smime/msgReadSMIMEOverlay.properties
+@@ -3,9 +3,9 @@
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ 
+ ImapOnDemand=The displayed message has been digitally signed, but not all its attachments have been downloaded yet. Therefore, the signature cannot be validated. Click OK to download the complete message and validate the signature.
+ #
+ #NOTE To translator, anything between %..% and <..> should not be translated.
+ # the former will be replaced by java script, and the latter is HTML formatting.
+ #
+ CantDecryptTitle=%brand% cannot decrypt this message
+-CantDecryptBody=The sender encrypted this message to you using one of your digital certificates, however %brand% was not able to find this certificate and corresponding private key. <br> Possible solutions: <br><ul><li>If you have a smartcard, please insert it now. <li>If you are using a new machine, or if you are using a new %brand% profile, you will need to restore your certificate and private key from a backup. Certificate backups usually end in ".p12".</ul> 
++CantDecryptBody=The sender encrypted this message to you using one of your digital certificates, however %brand% was not able to find this certificate and corresponding private key. <br> Possible solutions: <br><ul><li>If you have a smartcard, please insert it now. <li>If you are using a new machine, or if you are using a new %brand% profile, you will need to restore your certificate and private key from a backup. Certificate backups usually end in ".p12".</ul>
+diff --git a/mail/locales/en-US/chrome/messenger/FilterListDialog.dtd b/mail/locales/en-US/chrome/messenger/FilterListDialog.dtd
+--- a/mail/locales/en-US/chrome/messenger/FilterListDialog.dtd
++++ b/mail/locales/en-US/chrome/messenger/FilterListDialog.dtd
+@@ -31,13 +31,13 @@
+ <!ENTITY runFilters.label "Run Now">
+ <!ENTITY runFilters.accesskey "R">
+ <!ENTITY stopFilters.label "Stop">
+ <!ENTITY stopFilters.accesskey "S">
+ <!ENTITY folderPickerPrefix.label "Run selected filter(s) on:">
+ <!ENTITY folderPickerPrefix.accesskey "c">
+ <!ENTITY helpButton.label "Help">
+ <!ENTITY helpButton.accesskey "H">
+-<!ENTITY closeCmd.key "W"> 
++<!ENTITY closeCmd.key "W">
+ <!ENTITY searchBox.emptyText "Search filters by name…">
+ 
+ 
+ 
+diff --git a/mail/locales/en-US/chrome/messenger/SearchDialog.dtd b/mail/locales/en-US/chrome/messenger/SearchDialog.dtd
+--- a/mail/locales/en-US/chrome/messenger/SearchDialog.dtd
++++ b/mail/locales/en-US/chrome/messenger/SearchDialog.dtd
+@@ -14,17 +14,17 @@
+ <!ENTITY openButton.label            "Open">
+ <!ENTITY openButton.accesskey        "n">
+ <!ENTITY deleteButton.label          "Delete">
+ <!ENTITY deleteButton.accesskey      "D">
+ <!ENTITY searchDialogTitle.label     "Search Messages">
+ <!ENTITY results.label               "Results">
+ <!ENTITY moveButton.label            "Move To">
+ <!ENTITY moveButton.accesskey        "T">
+-<!ENTITY closeCmd.key                "W"> 
++<!ENTITY closeCmd.key                "W">
+ <!ENTITY openInFolder.label          "Open in Folder">
+ <!ENTITY openInFolder.accesskey      "r">
+ <!ENTITY saveAsVFButton.label        "Save as Search Folder">
+ <!ENTITY saveAsVFButton.accesskey    "v">
+ 
+ <!-- for ABSearchDialog.xul -->
+ <!ENTITY abSearchHeading.label       "Search in:">
+ <!ENTITY abSearchHeading.accesskey   "h">
+diff --git a/mail/locales/en-US/chrome/messenger/addressbook/addressBook.properties b/mail/locales/en-US/chrome/messenger/addressbook/addressBook.properties
+--- a/mail/locales/en-US/chrome/messenger/addressbook/addressBook.properties
++++ b/mail/locales/en-US/chrome/messenger/addressbook/addressBook.properties
+@@ -139,23 +139,23 @@ propertyAIM=AIM
+ propertyYahoo=Yahoo!
+ propertySkype=Skype
+ propertyQQ=QQ
+ propertyMSN=MSN
+ propertyICQ=ICQ
+ propertyXMPP=Jabber ID
+ propertyIRC=IRC Nick
+ 
+-## LOCALIZATION NOTE (cityAndStateAndZip): 
++## LOCALIZATION NOTE (cityAndStateAndZip):
+ ## %1$S is city, %2$S is state, %3$S is zip
+ cityAndStateAndZip=%1$S, %2$S %3$S
+-## LOCALIZATION NOTE (cityAndStateNoZip): 
++## LOCALIZATION NOTE (cityAndStateNoZip):
+ ## %1$S is city, %2$S is state
+ cityAndStateNoZip=%1$S, %2$S
+-## LOCALIZATION NOTE (cityOrStateAndZip): 
++## LOCALIZATION NOTE (cityOrStateAndZip):
+ ## %1$S is city or state, %2$S is zip
+ cityOrStateAndZip=%1$S %2$S
+ 
+ stateZipSeparator=
+ 
+ prefixTo=To
+ prefixCc=Cc
+ prefixBcc=Bcc
+diff --git a/mail/locales/en-US/chrome/messenger/addressbook/ldapAutoCompErrs.properties b/mail/locales/en-US/chrome/messenger/addressbook/ldapAutoCompErrs.properties
+--- a/mail/locales/en-US/chrome/messenger/addressbook/ldapAutoCompErrs.properties
++++ b/mail/locales/en-US/chrome/messenger/addressbook/ldapAutoCompErrs.properties
+@@ -1,15 +1,15 @@
+ # This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ 
+ # These are error strings for problems that happen while in the
+ # various states declared in nsILDAPAutoCompFormatter.idl.  Note that
+-# the number that indexes each error state is the same as the number 
++# the number that indexes each error state is the same as the number
+ # corresponding to that state in nsILDAPAutoCompFormatter.idl.
+ 
+ ## @name ERR_STATE_UNBOUND
+ ## @loc none
+ 0=LDAP initialization problem
+ 
+ ## @name ERR_STATE_INITIALIZING
+ ## @loc none
+@@ -26,17 +26,17 @@ 3=LDAP server communications problem
+ ## @name ERR_STATE_SEARCHING
+ ## @loc none
+ 4=LDAP server search problem
+ 
+ 
+ # The format of the alert dialog itself
+ #
+ ## @name ALERT_FORMAT
+-## @loc None of %1$S, %2$S and %3$S should be localized. 
++## @loc None of %1$S, %2$S and %3$S should be localized.
+ ##      %1$S is the error code itself, %2$S is an LDAP SDK error message from
+ ##      chrome://mozldap/locale/ldap.properties, and %3$S is a hint relating
+ ##      to that specific error, found in this file.
+ errorAlertFormat=Error code %1$S: %2$S\n\n %3$S
+ 
+ ## The following errors are for error codes other than LDAP-specific ones.
+ ## Someday mozilla will actually have a system for mapping nsresults to
+ ## error strings that's actually widely used, unlike nsIErrorService.  But
+diff --git a/mail/locales/en-US/chrome/messenger/addressbook/pref-directory-add.dtd b/mail/locales/en-US/chrome/messenger/addressbook/pref-directory-add.dtd
+--- a/mail/locales/en-US/chrome/messenger/addressbook/pref-directory-add.dtd
++++ b/mail/locales/en-US/chrome/messenger/addressbook/pref-directory-add.dtd
+@@ -33,13 +33,13 @@
+ <!ENTITY offlineText.label                 "You can download a local copy of this directory so that it is available for use when you are working offline.">
+ <!ENTITY saslMechanism.label               "Login method: ">
+ <!ENTITY saslMechanism.accesskey           "m">
+ <!ENTITY saslOff.label                     "Simple">
+ <!ENTITY saslOff.accesskey                 "l">
+ <!ENTITY saslGSSAPI.label                  "Kerberos (GSSAPI)">
+ <!ENTITY saslGSSAPI.accesskey              "K">
+ 
+-<!-- Localization note: this is here because the width of the dialog 
++<!-- Localization note: this is here because the width of the dialog
+      is determined by the width of the base DN box; and that is likely
+      to vary somewhat with the language.
+ -->
+ <!ENTITY newDirectoryWidth                 "36em">
+diff --git a/mail/locales/en-US/chrome/messenger/charsetTitles.properties b/mail/locales/en-US/chrome/messenger/charsetTitles.properties
+--- a/mail/locales/en-US/chrome/messenger/charsetTitles.properties
++++ b/mail/locales/en-US/chrome/messenger/charsetTitles.properties
+@@ -2,17 +2,17 @@
+ # 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/.
+ 
+ ## Rule of this file:
+ ## 1. key should always be in lower case ascii so we can do case insensitive
+ ##    comparison in the code faster.
+ 
+ ## Format of this file:
+-## charset_name.title = a_title  -  specifies the human readable title for 
++## charset_name.title = a_title  -  specifies the human readable title for
+ ## this charset
+ 
+ iso-8859-1.title    = Western (ISO-8859-1)
+ iso-8859-2.title    = Central European (ISO-8859-2)
+ iso-8859-3.title    = South European (ISO-8859-3)
+ iso-8859-4.title    = Baltic (ISO-8859-4)
+ iso-8859-10.title   = Nordic (ISO-8859-10)
+ iso-8859-13.title   = Baltic (ISO-8859-13)
+diff --git a/mail/locales/en-US/chrome/messenger/configEditorOverlay.dtd b/mail/locales/en-US/chrome/messenger/configEditorOverlay.dtd
+--- a/mail/locales/en-US/chrome/messenger/configEditorOverlay.dtd
++++ b/mail/locales/en-US/chrome/messenger/configEditorOverlay.dtd
+@@ -1,5 +1,5 @@
+ <!-- This Source Code Form is subject to the terms of the Mozilla Public
+    - License, v. 2.0. If a copy of the MPL was not distributed with this
+    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+ 
+-<!ENTITY closeCmd.key "W">
++<!ENTITY closeCmd.key "W">
+diff --git a/mail/locales/en-US/chrome/messenger/filter.properties b/mail/locales/en-US/chrome/messenger/filter.properties
+--- a/mail/locales/en-US/chrome/messenger/filter.properties
++++ b/mail/locales/en-US/chrome/messenger/filter.properties
+@@ -44,17 +44,17 @@ filterActionOrderExplanation=When a mess
+ filterActionOrderTitle=Real action order
+ ## LOCALIZATION NOTE(filterActionItem):
+ # %1$S=sequence number of the action, %2$S=action text, %3$S=action argument
+ filterActionItem=%1$S. %2$S %3$S\n
+ 
+ ## LOCALIZATION NOTE(filterCountVisibleOfTotal):
+ # %1$S=number of matching filters, %2$S=total number of filters
+ filterCountVisibleOfTotal=%1$S of %2$S
+-## LOCALIZATION NOTE(filterCountItems): 
++## LOCALIZATION NOTE(filterCountItems):
+ ## Semicolon-separated list of singular and plural forms.
+ ## See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+ ## #1 is the count of items in the list.
+ filterCountItems=#1 item; #1 items
+ # for junk mail logging / mail filter logging
+ # LOCALIZATION NOTE(junkLogDetectStr)
+ # %1$S=author, %2$S=subject, %3$S=date
+ junkLogDetectStr=Detected junk message from %1$S - %2$S at %3$S
+diff --git a/mail/locales/en-US/chrome/messenger/folderpane.dtd b/mail/locales/en-US/chrome/messenger/folderpane.dtd
+--- a/mail/locales/en-US/chrome/messenger/folderpane.dtd
++++ b/mail/locales/en-US/chrome/messenger/folderpane.dtd
+@@ -1,7 +1,7 @@
+ <!-- This Source Code Form is subject to the terms of the Mozilla Public
+    - License, v. 2.0. If a copy of the MPL was not distributed with this
+    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+-<!ENTITY nameColumn.label   "Name"> 
+-<!ENTITY unreadColumn.label "Unread"> 
+-<!ENTITY totalColumn.label "Total"> 
+-<!ENTITY folderSizeColumn.label "Size"> 
++<!ENTITY nameColumn.label   "Name">
++<!ENTITY unreadColumn.label "Unread">
++<!ENTITY totalColumn.label "Total">
++<!ENTITY folderSizeColumn.label "Size">
+diff --git a/mail/locales/en-US/chrome/messenger/imapMsgs.properties b/mail/locales/en-US/chrome/messenger/imapMsgs.properties
+--- a/mail/locales/en-US/chrome/messenger/imapMsgs.properties
++++ b/mail/locales/en-US/chrome/messenger/imapMsgs.properties
+@@ -138,22 +138,22 @@ imapEnterPasswordPromptTitle=Mail Server
+ 
+ imapUnknownHostError=Failed to connect to server %S.
+ imapOAuth2Error=Authentication failure while connecting to server %S.
+ 
+ imapConnectionRefusedError=Could not connect to mail server %S; the connection was refused.
+ 
+ imapNetTimeoutError=Connection to server %S timed out.
+ 
+-# Status - no messages to download 
++# Status - no messages to download
+ imapNoNewMessages=There are no new messages on the server.
+ 
+ imapDefaultAccountName=Mail for %S
+ 
+-imapSpecialChar2=The %S character is reserved on this imap server. Please choose another name. 
++imapSpecialChar2=The %S character is reserved on this imap server. Please choose another name.
+ 
+ imapPersonalSharedFolderTypeName=Personal Folder
+ 
+ imapPublicFolderTypeName=Public Folder
+ 
+ imapOtherUsersFolderTypeName=Other User's Folder
+ 
+ imapPersonalFolderTypeDescription=This is a personal mail folder.  It is not shared.
+@@ -234,20 +234,20 @@ imapAuthChangePlainToEncrypt=The IMAP se
+ imapAuthChangeEncryptToPlainNoSSL=The IMAP server %S does not seem to support encrypted passwords. If you just set up the account, please try changing to 'Password, transmitted insecurely' as the 'Authentication method' in the 'Account Settings | Server settings'. If it used to work and now suddenly fails, this is a common scenario how someone could steal your password.
+ 
+ # LOCALIZATION NOTE (imapAuthMechNotSupported): %S is the server hostname
+ imapAuthMechNotSupported=The IMAP server %S does not support the selected authentication method. Please change the 'Authentication method' in the 'Account Settings | Server settings'.
+ 
+ # LOCALIZATION NOTE (imapAuthGssapiFailed): %S is the server hostname
+ imapAuthGssapiFailed=The Kerberos/GSSAPI ticket was not accepted by the IMAP server %S. Please check that you are logged in to the Kerberos/GSSAPI realm.
+ 
+-# LOCALIZATION NOTE (imapServerCommandFailed): 
++# LOCALIZATION NOTE (imapServerCommandFailed):
+ # Place the word %1$S in your translation where the name of the account name should appear.
+ # Place the word %2$S in your translation where the server response should appear.
+-imapServerCommandFailed=The current command did not succeed. The mail server for account %1$S responded: %2$S 
++imapServerCommandFailed=The current command did not succeed. The mail server for account %1$S responded: %2$S
+ 
+ # LOCALIZATION NOTE (imapFolderCommandFailed): Do not translate the word %S below.
+ # Place the word %1$S in your translation where the name of the account should appear.
+ # Place the word %2$S in your translation where the name of the folder should appear.
+ # Place the word %3$S in your translation where the server response should appear.
+ imapFolderCommandFailed=The current operation on '%2$S' did not succeed. The mail server for account %1$S responded: %3$S
+ 
+ # LOCALIZATION NOTE (imapServerAlert):
+diff --git a/mail/locales/en-US/chrome/messenger/importDialog.dtd b/mail/locales/en-US/chrome/messenger/importDialog.dtd
+--- a/mail/locales/en-US/chrome/messenger/importDialog.dtd
++++ b/mail/locales/en-US/chrome/messenger/importDialog.dtd
+@@ -1,17 +1,17 @@
+ <!-- This Source Code Form is subject to the terms of the Mozilla Public
+    - License, v. 2.0. If a copy of the MPL was not distributed with this
+    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+ 
+ <!--
+-LOCALIZATION NOTE : 'Communicator 4.x' is the used for previous versions of 
+-Netscape Communicator, Please translate using the brandname in respective 
++LOCALIZATION NOTE : 'Communicator 4.x' is the used for previous versions of
++Netscape Communicator, Please translate using the brandname in respective
+ languages for Netscape Communicator 4 releases.
+-LOCALIZATION NOTE : Do not translate any of the occurrences of the word 
++LOCALIZATION NOTE : Do not translate any of the occurrences of the word
+ "&brandShortName;" below.
+ -->
+ 
+ <!ENTITY importDialog.windowTitle "Import">
+ <!ENTITY importAll.label          "Import Everything">
+ <!ENTITY importAll.accesskey      "E">
+ <!ENTITY importMail.label         "Mail">
+ <!ENTITY importMail.accesskey     "M">
+diff --git a/mail/locales/en-US/chrome/messenger/importMsgs.properties b/mail/locales/en-US/chrome/messenger/importMsgs.properties
+--- a/mail/locales/en-US/chrome/messenger/importMsgs.properties
++++ b/mail/locales/en-US/chrome/messenger/importMsgs.properties
+@@ -1,13 +1,13 @@
+ # This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ 
+-# The following are used by the import code to display status/error 
++# The following are used by the import code to display status/error
+ # and informational messages
+ 
+ # Success message when no address books are found to import
+ ## @name IMPORT_NO_ADDRBOOKS
+ ## @loc None
+ 2000=No address books were found to import.
+ 
+ # Error: Address book import not initialized		
+diff --git a/mail/locales/en-US/chrome/messenger/localMsgs.properties b/mail/locales/en-US/chrome/messenger/localMsgs.properties
+--- a/mail/locales/en-US/chrome/messenger/localMsgs.properties
++++ b/mail/locales/en-US/chrome/messenger/localMsgs.properties
+@@ -61,33 +61,33 @@ pop3UsernameFailure=Sending of username 
+ pop3PasswordFailed=Sending of password for user %1$S did not succeed.
+ 
+ # Status - write error occurred
+ pop3MessageWriteError=Unable to write the email to the mailbox. Make sure the file system allows you write privileges, and you have enough disk space to copy the mailbox.
+ 
+ # Status - retr failure from the server
+ pop3RetrFailure=The RETR command did not succeed. Error retrieving a message.
+ 
+-# Status - password undefined 
++# Status - password undefined
+ pop3PasswordUndefined=Error getting mail password.
+ 
+-# Status - username undefined 
++# Status - username undefined
+ pop3UsernameUndefined=You have not supplied a username for this server.  Please provide one in the account setup menu and try again.
+ 
+ # Status - list failure
+ pop3ListFailure=The LIST command did not succeed. Error getting the ID and size of a message.
+ 
+-# Status - delete error 
++# Status - delete error
+ pop3DeleFailure=The DELE command did not succeed. Error marking a message as deleted.
+ 
+ # Status - stat failed
+ pop3StatFail=The STAT command did not succeed. Error getting message number and sizes.
+ 
+ #LOCALIZATION NOTE (pop3ServerSaid): Do not remove the leading space during translation.
+-pop3ServerSaid= Mail server %S responded: 
++pop3ServerSaid= Mail server %S responded:
+ 
+ copyingMessagesStatus=Copying %S of %S messages to %S
+ 
+ movingMessagesStatus=Moving %S of %S messages to %S
+ 
+ # Status - pop3 server or folder busy
+ # LOCALIZATION NOTE (pop3ServerBusy): Do not translate the word "%S" below.
+ # Place %S where the account name should appear.
+diff --git a/mail/locales/en-US/chrome/messenger/mailOverlay.dtd b/mail/locales/en-US/chrome/messenger/mailOverlay.dtd
+--- a/mail/locales/en-US/chrome/messenger/mailOverlay.dtd
++++ b/mail/locales/en-US/chrome/messenger/mailOverlay.dtd
+@@ -1,11 +1,11 @@
+ <!-- This Source Code Form is subject to the terms of the Mozilla Public
+    - License, v. 2.0. If a copy of the MPL was not distributed with this
+    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+ 
+ <!ENTITY  newMessageCmd2.key              "N">
+ <!ENTITY  newMessageCmd.key               "M">
+ <!ENTITY  newMessageCmd.label             "Message">
+ <!ENTITY  newMessageCmd.accesskey         "m">
+- 
++
+ <!ENTITY  newContactCmd.label             "Address Book Contact…">
+ <!ENTITY  newContactCmd.accesskey         "C">
+diff --git a/mail/locales/en-US/chrome/messenger/messengercompose/addressingWidgetOverlay.dtd b/mail/locales/en-US/chrome/messenger/messengercompose/addressingWidgetOverlay.dtd
+--- a/mail/locales/en-US/chrome/messenger/messengercompose/addressingWidgetOverlay.dtd
++++ b/mail/locales/en-US/chrome/messenger/messengercompose/addressingWidgetOverlay.dtd
+@@ -1,13 +1,13 @@
+ <!-- This Source Code Form is subject to the terms of the Mozilla Public
+    - License, v. 2.0. If a copy of the MPL was not distributed with this
+    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+ 
+ <!-- address labels -->
+ <!--LOCALIZATION NOTE addressingWidgetOverlay.dtd The basic mail/news composition headers as they are seen in UI -->
+-<!ENTITY toAddr.label   "To:"> 
+-<!ENTITY ccAddr.label   "Cc:"> 
+-<!ENTITY bccAddr.label  "Bcc:"> 
+-<!ENTITY replyAddr.label   "Reply-To:"> 
+-<!ENTITY newsgroupsAddr.label   "Newsgroup:"> 
+-<!ENTITY followupAddr.label   "Followup-To:"> 
++<!ENTITY toAddr.label   "To:">
++<!ENTITY ccAddr.label   "Cc:">
++<!ENTITY bccAddr.label  "Bcc:">
++<!ENTITY replyAddr.label   "Reply-To:">
++<!ENTITY newsgroupsAddr.label   "Newsgroup:">
++<!ENTITY followupAddr.label   "Followup-To:">
+ 
+diff --git a/mail/locales/en-US/chrome/messenger/messengercompose/askSendFormat.properties b/mail/locales/en-US/chrome/messenger/messengercompose/askSendFormat.properties
+--- a/mail/locales/en-US/chrome/messenger/messengercompose/askSendFormat.properties
++++ b/mail/locales/en-US/chrome/messenger/messengercompose/askSendFormat.properties
+@@ -1,8 +1,8 @@
+ # This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ 
+-convertibleYes=Your message can be converted to plain text without losing information.
+-convertibleAltering=Your message can be converted to plain text without losing important information. However, the plain text version might look different from what you saw in the composer.
+-convertibleNo=However, you used formatting (e.g. colors) that will not be converted to plain text.
+-recommended=(recommended)
++convertibleYes=Your message can be converted to plain text without losing information.
++convertibleAltering=Your message can be converted to plain text without losing important information. However, the plain text version might look different from what you saw in the composer.
++convertibleNo=However, you used formatting (e.g. colors) that will not be converted to plain text.
++recommended=(recommended)
+diff --git a/mail/locales/en-US/chrome/messenger/mime.properties b/mail/locales/en-US/chrome/messenger/mime.properties
+--- a/mail/locales/en-US/chrome/messenger/mime.properties
++++ b/mail/locales/en-US/chrome/messenger/mime.properties
+@@ -8,129 +8,129 @@
+ 
+ # Mail subject
+ ## @name MIME_MHTML_SUBJECT
+ ## @loc None
+ 1000=Subject
+ 
+ # Resent-Comments
+ ## @name MIME_MHTML_RESENT_COMMENTS
+-## @loc 
++## @loc
+ 1001=Resent-Comments
+ 
+ # Resent-Date
+ ## @name MIME_MHTML_RESENT_DATE
+-## @loc 
++## @loc
+ 1002=Resent-Date
+ 
+ # Resent-Sender
+ ## @name MIME_MHTML_RESENT_SENDER
+-## @loc 
++## @loc
+ 1003=Resent-Sender
+ 
+ # Resent-From
+ ## @name MIME_MHTML_RESENT_FROM
+-## @loc 
++## @loc
+ 1004=Resent-From
+ 
+ # Resent-To
+ ## @name MIME_MHTML_RESENT_TO
+-## @loc 
++## @loc
+ 1005=Resent-To
+ 
+ # Resent-CC
+ ## @name MIME_MHTML_RESENT_CC
+-## @loc 
++## @loc
+ 1006=Resent-CC
+ 
+ # Date
+ ## @name MIME_MHTML_DATE
+-## @loc 
++## @loc
+ 1007=Date
+ 
+ # Sender
+ ## @name MIME_MHTML_SENDER
+-## @loc 
++## @loc
+ 1008=Sender
+ 
+ # From
+ ## @name MIME_MHTML_FROM
+-## @loc 
++## @loc
+ 1009=From
+ 
+ # Reply-To
+ ## @name MIME_MHTML_REPLY_TO
+-## @loc 
++## @loc
+ 1010=Reply-To
+ 
+ # Organization
+ ## @name MIME_MHTML_ORGANIZATION
+-## @loc 
++## @loc
+ 1011=Organization
+ 
+ # To
+ ## @name MIME_MHTML_TO
+-## @loc 
++## @loc
+ 1012=To
+ 
+ # CC
+ ## @name MIME_MHTML_CC
+-## @loc 
++## @loc
+ 1013=CC
+ 
+ # Newsgroups
+ ## @name MIME_MHTML_NEWSGROUPS
+-## @loc 
++## @loc
+ 1014=Newsgroups
+ 
+ # Followup-To
+ ## @name MIME_MHTML_FOLLOWUP_TO
+-## @loc 
++## @loc
+ 1015=Followup-To
+ 
+ # References
+ ## @name MIME_MHTML_REFERENCES
+-## @loc 
++## @loc
+ 1016=References
+ 
+ # Message ID
+ ## @name MIME_MHTML_MESSAGE_ID
+-## @loc 
++## @loc
+ 1021=Message-ID
+ 
+ # BCC
+ ## @name MIME_MHTML_BCC
+-## @loc 
++## @loc
+ 1023=BCC
+ 
+ # Link to doc
+ ## @name MIME_MSG_LINK_TO_DOCUMENT
+-## @loc 
++## @loc
+ 1026=Link to Document
+ 
+ # Get Doc info
+ ## @name MIME_MSG_DOCUMENT_INFO
+-## @loc 
++## @loc
+ 1027=<B>Document Info:</B>
+ 
+ # Msg Attachment
+ ## @name MIME_MSG_ATTACHMENT
+-## @loc 
++## @loc
+ 1028=Attachment
+ 
+ # default attachment name
+ ## @name MIME_MSG_DEFAULT_ATTACHMENT_NAME
+-## @loc 
++## @loc
+ # LOCALIZATION NOTE (1040): Do not translate "%s" below.
+ # Place the %s where you wish the part number of the attachment to appear
+ 1040=Part %s
+ 
+ # default forwarded message prefix
+ ## @name MIME_FORWARDED_MESSAGE_HTML_USER_WROTE
+-## @loc 
++## @loc
+ 1041=-------- Original Message --------
+ 
+ # Partial Message Truncated
+ ## @name MIME_MSG_PARTIAL_TRUNCATED
+ ## @loc
+ MIME_MSG_PARTIAL_TRUNCATED=Truncated!
+ 
+ # Partial Message Truncated Explanation
+diff --git a/mail/locales/en-US/chrome/messenger/newFolderDialog.dtd b/mail/locales/en-US/chrome/messenger/newFolderDialog.dtd
+--- a/mail/locales/en-US/chrome/messenger/newFolderDialog.dtd
++++ b/mail/locales/en-US/chrome/messenger/newFolderDialog.dtd
+@@ -1,12 +1,12 @@
+ <!-- This Source Code Form is subject to the terms of the Mozilla Public
+    - License, v. 2.0. If a copy of the MPL was not distributed with this
+    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+-   
++
+ <!-- Labels -->
+ <!ENTITY newFolderDialog.title      "New Folder">
+ <!ENTITY name.label                 "Name:">
+ <!ENTITY name.accesskey             "n">
+ <!ENTITY description.label          "Create as a subfolder of:">
+ <!ENTITY description.accesskey      "c">
+ <!ENTITY folderRestriction1.label   "This server restricts folders to two special kinds.">
+ <!ENTITY folderRestriction2.label   "Allow your new folder to contain:">
+diff --git a/mail/locales/en-US/chrome/messenger/news.properties b/mail/locales/en-US/chrome/messenger/news.properties
+--- a/mail/locales/en-US/chrome/messenger/news.properties
++++ b/mail/locales/en-US/chrome/messenger/news.properties
+@@ -33,17 +33,17 @@ autoUnsubscribeText=The newsgroup %1$S d
+ 
+ # LOCALIZATION NOTE (autoSubscribeText): %1$S is the newsgroup.
+ autoSubscribeText=Would you like to subscribe to %1$S?
+ 
+ # LOCALIZATION NOTE (Error -304): In the following item, don't translate "NNTP"
+ # Error - server error
+ ## @name NNTP_ERROR_MESSAGE
+ ## @loc None
+--304=A News (NNTP) error occurred:  
++-304=A News (NNTP) error occurred:
+ 
+ # Error - newsgroup scan error
+ ## @name NNTP_NEWSGROUP_SCAN_ERROR
+ ## @loc None
+ -305=A News error occurred.  The scan of all newsgroups is incomplete.  Try to View All Newsgroups again
+ 
+ # Error - NNTP authinfo failure
+ ## @name NNTP_AUTH_FAILED
+diff --git a/mail/locales/en-US/chrome/messenger/oeImportMsgs.properties b/mail/locales/en-US/chrome/messenger/oeImportMsgs.properties
+--- a/mail/locales/en-US/chrome/messenger/oeImportMsgs.properties
++++ b/mail/locales/en-US/chrome/messenger/oeImportMsgs.properties
+@@ -1,14 +1,14 @@
+ # This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ 
+ #
+-# The following are used by the outlook express import code to display status/error 
++# The following are used by the outlook express import code to display status/error
+ # and informational messages
+ #
+ 
+ # Short name of import module
+ ## @name OEIMPORT_NAME
+ ## @loc None
+ ## LOCALIZATION NOTE (2000): DONT_TRANSLATE
+ 2000=Outlook Express
+diff --git a/mail/locales/en-US/chrome/messenger/outlookImportMsgs.properties b/mail/locales/en-US/chrome/messenger/outlookImportMsgs.properties
+--- a/mail/locales/en-US/chrome/messenger/outlookImportMsgs.properties
++++ b/mail/locales/en-US/chrome/messenger/outlookImportMsgs.properties
+@@ -1,14 +1,14 @@
+ # This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ 
+ #
+-# The following are used by the outlook express import code to display status/error 
++# The following are used by the outlook express import code to display status/error
+ # and informational messages
+ #
+ 
+ # Short name of import module
+ ## @name OUTLOOKIMPORT_NAME
+ ## @loc None
+ ## LOCALIZATION NOTE (2000): DONT_TRANSLATE
+ 2000=Outlook
+diff --git a/mail/locales/en-US/chrome/messenger/prefs.properties b/mail/locales/en-US/chrome/messenger/prefs.properties
+--- a/mail/locales/en-US/chrome/messenger/prefs.properties
++++ b/mail/locales/en-US/chrome/messenger/prefs.properties
+@@ -40,19 +40,19 @@ confirmDeferAccountTitle=Defer Account?
+ directoryAlreadyUsedByOtherAccount=The directory specified in the Local Directory setting is already used by the "%S" account. Please pick a different directory.
+ directoryParentUsedByOtherAccount=A parent directory of the directory specified in the Local Directory setting is already used by the "%S" account. Please pick a different directory.
+ directoryChildUsedByOtherAccount=A subdirectory of the directory specified in the Local Directory setting is already used by the "%S" account. Please pick a different directory.
+ #Provide default example values for sample email address
+ exampleEmailUserName=user
+ exampleEmailDomain=example.net
+ emailFieldText=Email Address:
+ #LOCALIZATION NOTE: defaultEmailText: %1$S is user name, %2$S is domain
+-defaultEmailText=Enter your email address. This is the address others will use to send email to you (for example, "%1$S@%2$S"). 
++defaultEmailText=Enter your email address. This is the address others will use to send email to you (for example, "%1$S@%2$S").
+ #LOCALIZATION NOTE: customizedEmailText: %1$S is provider, %2$S is email username, %3$S is sample email, %4$S is sample username
+-customizedEmailText=Enter your %1$S %2$S (for example, if your %1$S email address is "%3$S", your %2$S is "%4$S"). 
++customizedEmailText=Enter your %1$S %2$S (for example, if your %1$S email address is "%3$S", your %2$S is "%4$S").
+ 
+ # account manager stuff
+ prefPanel-server=Server Settings
+ prefPanel-copies=Copies & Folders
+ prefPanel-synchronization=Synchronization & Storage
+ prefPanel-diskspace=Disk Space
+ prefPanel-addressing=Composition & Addressing
+ prefPanel-junk=Junk Settings
+diff --git a/mail/locales/en-US/chrome/messenger/renameFolderDialog.dtd b/mail/locales/en-US/chrome/messenger/renameFolderDialog.dtd
+--- a/mail/locales/en-US/chrome/messenger/renameFolderDialog.dtd
++++ b/mail/locales/en-US/chrome/messenger/renameFolderDialog.dtd
+@@ -1,9 +1,9 @@
+ <!-- This Source Code Form is subject to the terms of the Mozilla Public
+    - License, v. 2.0. If a copy of the MPL was not distributed with this
+    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+-   
++
+ <!ENTITY renameFolderDialog.title          "Rename Folder">
+ <!ENTITY rename.label                      "Enter the new name for your folder:">
+ <!ENTITY rename.accesskey                  "E">
+ <!ENTITY accept.label                      "Rename">
+ <!ENTITY accept.accesskey                  "R">
+diff --git a/mail/locales/en-US/chrome/messenger/search-operators.properties b/mail/locales/en-US/chrome/messenger/search-operators.properties
+--- a/mail/locales/en-US/chrome/messenger/search-operators.properties
++++ b/mail/locales/en-US/chrome/messenger/search-operators.properties
+@@ -5,17 +5,17 @@
+ 0=contains
+ 1=doesn't contain
+ 2=is
+ 3=isn't
+ 4=is empty
+ 
+ 5=is before
+ 6=is after
+-    
++  
+ 7=is higher than
+ 8=is lower than
+ 
+ 9=begins with
+ 10=ends with
+ 
+ 11=sounds like
+ 12=LdapDwim
+diff --git a/mail/locales/en-US/chrome/messenger/shutdownWindow.properties b/mail/locales/en-US/chrome/messenger/shutdownWindow.properties
+--- a/mail/locales/en-US/chrome/messenger/shutdownWindow.properties
++++ b/mail/locales/en-US/chrome/messenger/shutdownWindow.properties
+@@ -1,10 +1,10 @@
+ # This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ 
+ 
+ # These strings are loaded and represented by the XUL dialog.
+ shutdownDialogTitle=Shutdown Progress Window
+-taskProgress=Processing %1$S of %2$S Tasks 
++taskProgress=Processing %1$S of %2$S Tasks
+ 
+ # These strings are loaded by the individual shutdown tasks.
+diff --git a/mail/locales/en-US/chrome/messenger/smime.properties b/mail/locales/en-US/chrome/messenger/smime.properties
+--- a/mail/locales/en-US/chrome/messenger/smime.properties
++++ b/mail/locales/en-US/chrome/messenger/smime.properties
+@@ -2,12 +2,12 @@
+ # 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/.
+ 
+ #
+ # The following are used by the smime content type handler
+ #
+ 
+ ## @name NS_MSG_UNABLE_TO_OPEN_FILE
+-## LOCALIZATION NOTE: the text can contain HTML tags. 
++## LOCALIZATION NOTE: the text can contain HTML tags.
+ 1000=This is an <B>ENCRYPTED</B> or <B>SIGNED</B> message.<br> This Mail application does not support encrypted or signed mail.
+ 
+ 
+diff --git a/mail/locales/en-US/chrome/messenger/subscribe.dtd b/mail/locales/en-US/chrome/messenger/subscribe.dtd
+--- a/mail/locales/en-US/chrome/messenger/subscribe.dtd
++++ b/mail/locales/en-US/chrome/messenger/subscribe.dtd
+@@ -11,12 +11,12 @@
+ <!ENTITY newGroupsTab.accesskey       "N">
+ <!ENTITY refreshButton.label          "Refresh">
+ <!ENTITY refreshButton.accesskey      "R">
+ <!ENTITY stopButton.label             "Stop">
+ <!ENTITY stopButton.accesskey         "T">
+ <!ENTITY server.label                 "Account:">
+ <!ENTITY server.accesskey             "A">
+ <!ENTITY subscribedHeader.label       "Subscribe">
+-<!-- commenting out until bug 38906 is fixed 
++<!-- commenting out until bug 38906 is fixed
+ <!ENTITY messagesHeader.label         "Messages"> -->
+ <!ENTITY namefield.label              "Show items that contain:">
+ <!ENTITY namefield.accesskey          "O">
+diff --git a/mail/locales/en-US/chrome/messenger/textImportMsgs.properties b/mail/locales/en-US/chrome/messenger/textImportMsgs.properties
+--- a/mail/locales/en-US/chrome/messenger/textImportMsgs.properties
++++ b/mail/locales/en-US/chrome/messenger/textImportMsgs.properties
+@@ -1,14 +1,14 @@
+ # This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ 
+ #
+-# The following are used by the outlook express import code to display status/error 
++# The following are used by the outlook express import code to display status/error
+ # and informational messages
+ #
+ 
+ # Short name of import module
+ ## @name TEXTIMPORT_NAME
+ ## @loc None
+ 2000=Text file (LDIF, .tab, .csv, .txt)
+ 
+diff --git a/mail/locales/en-US/chrome/mozldap/ldap.properties b/mail/locales/en-US/chrome/mozldap/ldap.properties
+--- a/mail/locales/en-US/chrome/mozldap/ldap.properties
++++ b/mail/locales/en-US/chrome/mozldap/ldap.properties
+@@ -1,9 +1,9 @@
+-# 
++#
+ # This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ 
+ # The following two strings are used when prompting the user for authentication
+ # information:
+ 
+ ## @name AUTH_PROMPT_TITLE
+@@ -11,17 +11,17 @@
+ authPromptTitle=LDAP Server Password Required
+ 
+ ## @name AUTH_PROMPT_TEXT
+ ## @loc %1$S should not be localized.  It is the hostname of the LDAP server.
+ authPromptText=Please enter your password for %1$S.
+ 
+ # These are string versions of all the errors defined in
+ # nsILDAPErrors.idl, as well as the nsresult codes based on those
+-# errors.  See that file for the genesis of these codes, as well as 
++# errors.  See that file for the genesis of these codes, as well as
+ # for info about how to get documentation about their precise
+ # meanings.
+ 
+ ## @name OPERATIONS_ERROR
+ ## @loc none
+ 1=Operations error
+ 
+ ## @name PROTOCOL_ERROR
+diff --git a/mail/test/resources/mozmill/mozmill/extension/locale/en-US/mozmill.dtd b/mail/test/resources/mozmill/mozmill/extension/locale/en-US/mozmill.dtd
+--- a/mail/test/resources/mozmill/mozmill/extension/locale/en-US/mozmill.dtd
++++ b/mail/test/resources/mozmill/mozmill/extension/locale/en-US/mozmill.dtd
+@@ -1,3 +1,3 @@
+-<!ENTITY title.label "MozMill IDE">
+-<!ENTITY separate.label "This is a separate window!">
++<!ENTITY title.label "MozMill IDE">
++<!ENTITY separate.label "This is a separate window!">
+ <!ENTITY close.label "Close">
+\ No newline at end of file
+diff --git a/mail/themes/osx/mail/customizeToolbar.css b/mail/themes/osx/mail/customizeToolbar.css
+--- a/mail/themes/osx/mail/customizeToolbar.css
++++ b/mail/themes/osx/mail/customizeToolbar.css
+@@ -15,17 +15,17 @@
+ 
+ #main-box {
+   padding: 12px;
+ }
+ 
+ #main-box > separator {
+   -moz-appearance: none;
+   border-bottom: none;
+-} 
++}
+ 
+ #instructions {
+   font: menu;
+   font-weight: bold;
+   line-height: 16pt;
+ }
+ 
+ hbox button {
+

+ 167 - 0
comm-esr60/comm-esr60/patches/1399756-29-61a1.patch

@@ -0,0 +1,167 @@
+# HG changeset patch
+# User Onno Ekker <o.e.ekker@gmail.com>
+# Date 1522804620 -7200
+# Node ID c75dc9554a4f39635e79e540cd06180d9bb80fa9
+# Parent  be4b8df49597edf9f8a9533d28702d5632610e4c
+Bug 1399756 - Remove some trailing empty lines in .properties and .dtd files in mail/. r=jorgk
+
+diff --git a/mail/locales/en-US/chrome/messenger-mapi/mapi.properties b/mail/locales/en-US/chrome/messenger-mapi/mapi.properties
+--- a/mail/locales/en-US/chrome/messenger-mapi/mapi.properties
++++ b/mail/locales/en-US/chrome/messenger-mapi/mapi.properties
+@@ -28,9 +28,8 @@ errorMessageTitle=%S
+ 
+ # MAPI Security Messages
+ mapiBlindSendWarning=Another application is attempting to send mail using your user profile. Are you sure you want to send mail?
+ mapiBlindSendDontShowAgain=Warn me whenever other applications try to send mail from me
+ 
+ #Default Mail Display String
+ # localization note, %S is the vendor name
+ defaultMailDisplayTitle=%S
+-
+diff --git a/mail/locales/en-US/chrome/messenger/FilterListDialog.dtd b/mail/locales/en-US/chrome/messenger/FilterListDialog.dtd
+--- a/mail/locales/en-US/chrome/messenger/FilterListDialog.dtd
++++ b/mail/locales/en-US/chrome/messenger/FilterListDialog.dtd
+@@ -33,11 +33,8 @@
+ <!ENTITY stopFilters.label "Stop">
+ <!ENTITY stopFilters.accesskey "S">
+ <!ENTITY folderPickerPrefix.label "Run selected filter(s) on:">
+ <!ENTITY folderPickerPrefix.accesskey "c">
+ <!ENTITY helpButton.label "Help">
+ <!ENTITY helpButton.accesskey "H">
+ <!ENTITY closeCmd.key "W">
+ <!ENTITY searchBox.emptyText "Search filters by name…">
+-
+-
+-
+diff --git a/mail/locales/en-US/chrome/messenger/addressbook/abMailListDialog.dtd b/mail/locales/en-US/chrome/messenger/addressbook/abMailListDialog.dtd
+--- a/mail/locales/en-US/chrome/messenger/addressbook/abMailListDialog.dtd
++++ b/mail/locales/en-US/chrome/messenger/addressbook/abMailListDialog.dtd
+@@ -14,9 +14,8 @@
+ <!ENTITY ListNickName.accesskey         "N">
+ <!ENTITY ListDescription.label          "Description: ">
+ <!ENTITY ListDescription.accesskey      "D">
+ <!-- See bug 58485, when we implement drag and drop, add 'or drag addresses' back in -->
+ <!ENTITY AddressTitle.label             "Type email addresses to add them to the mailing list:">
+ <!ENTITY AddressTitle.accesskey         "m">
+ <!ENTITY UpButton.label                 "Move Up">
+ <!ENTITY DownButton.label               "Move Down">
+-
+diff --git a/mail/locales/en-US/chrome/messenger/appleMailImportMsgs.properties b/mail/locales/en-US/chrome/messenger/appleMailImportMsgs.properties
+--- a/mail/locales/en-US/chrome/messenger/appleMailImportMsgs.properties
++++ b/mail/locales/en-US/chrome/messenger/appleMailImportMsgs.properties
+@@ -13,9 +13,8 @@ ApplemailImportDescription=Import Local 
+ ApplemailImportMailboxSuccess=Local messages were successfully imported from %S
+ 
+ # Error Message
+ ApplemailImportMailboxBadparam=An internal error occurred. Importing failed. Try importing again.
+ 
+ # Error message
+ # LOCALIZATION NOTE(ApplemailImportMailboxConverterror): Do not translate the word "%S" below.
+ ApplemailImportMailboxConverterror=An error occurred while importing messages from %S. Messages were not imported.
+-
+diff --git a/mail/locales/en-US/chrome/messenger/glodaFacetView.properties b/mail/locales/en-US/chrome/messenger/glodaFacetView.properties
+--- a/mail/locales/en-US/chrome/messenger/glodaFacetView.properties
++++ b/mail/locales/en-US/chrome/messenger/glodaFacetView.properties
+@@ -174,9 +174,8 @@ glodaFacetView.results.message.recipient
+ # When a message has too many recipients, we only show the first few and then
+ # display this label to express how many are not displayed.  So if a message
+ # has 5 recipients, we might only show the first 3, and then use this label
+ # to indicate that there are 2 that are not displayed.  This string can be
+ # pluralized; see https://developer.mozilla.org/en/Localization_and_Plurals
+ # for details on how to do that. Note that in English, we use the "serial
+ # comma", but other languages may not need a leading separator there.
+ glodaFacetView.results.message.andOthers=, and #1 other;, and #1 others
+-
+diff --git a/mail/locales/en-US/chrome/messenger/mailViewList.dtd b/mail/locales/en-US/chrome/messenger/mailViewList.dtd
+--- a/mail/locales/en-US/chrome/messenger/mailViewList.dtd
++++ b/mail/locales/en-US/chrome/messenger/mailViewList.dtd
+@@ -1,9 +1,8 @@
+ <!-- This Source Code Form is subject to the terms of the Mozilla Public
+    - License, v. 2.0. If a copy of the MPL was not distributed with this
+    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+ 
+ <!--LOCALIZATION NOTE msgViewPickerOverlay.dtd UI for showing various views on a folder -->
+ 
+ <!ENTITY mailViewListTitle.label "Customize Message Views">
+ <!ENTITY viewName.label "View Name">
+-
+diff --git a/mail/locales/en-US/chrome/messenger/mailViewSetup.dtd b/mail/locales/en-US/chrome/messenger/mailViewSetup.dtd
+--- a/mail/locales/en-US/chrome/messenger/mailViewSetup.dtd
++++ b/mail/locales/en-US/chrome/messenger/mailViewSetup.dtd
+@@ -3,9 +3,8 @@
+    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+ 
+ <!--LOCALIZATION NOTE msgViewPickerOverlay.dtd UI for showing various views on a folder -->
+ 
+ <!ENTITY mailViewSetupTitle.label "Message View Setup">
+ <!ENTITY mailViewHeading.label "Message view name:">
+ <!ENTITY mailViewHeading.accesskey "e">
+ <!ENTITY searchTermCaption.label "When this view is selected, display only messages that:">
+-
+diff --git a/mail/locales/en-US/chrome/messenger/messengercompose/addressingWidgetOverlay.dtd b/mail/locales/en-US/chrome/messenger/messengercompose/addressingWidgetOverlay.dtd
+--- a/mail/locales/en-US/chrome/messenger/messengercompose/addressingWidgetOverlay.dtd
++++ b/mail/locales/en-US/chrome/messenger/messengercompose/addressingWidgetOverlay.dtd
+@@ -5,9 +5,8 @@
+ <!-- address labels -->
+ <!--LOCALIZATION NOTE addressingWidgetOverlay.dtd The basic mail/news composition headers as they are seen in UI -->
+ <!ENTITY toAddr.label   "To:">
+ <!ENTITY ccAddr.label   "Cc:">
+ <!ENTITY bccAddr.label  "Bcc:">
+ <!ENTITY replyAddr.label   "Reply-To:">
+ <!ENTITY newsgroupsAddr.label   "Newsgroup:">
+ <!ENTITY followupAddr.label   "Followup-To:">
+-
+diff --git a/mail/locales/en-US/chrome/messenger/pgpmime.properties b/mail/locales/en-US/chrome/messenger/pgpmime.properties
+--- a/mail/locales/en-US/chrome/messenger/pgpmime.properties
++++ b/mail/locales/en-US/chrome/messenger/pgpmime.properties
+@@ -4,9 +4,8 @@
+ 
+ #
+ # The following are used by the pgpmime content type handler
+ #
+ 
+ # LOCALIZATION NOTE(pgpMimeNeedsAddon): The text can contain HTML tags.
+ # %S is the url to Enigmail on AMO supplied from preferences.
+ pgpMimeNeedsAddon=This is an encrypted OpenPGP message.<br>In order to decrypt this mail, you need to install an <a href="%S">OpenPGP add-on</a>.
+-
+diff --git a/mail/locales/en-US/chrome/messenger/preferences/security.dtd b/mail/locales/en-US/chrome/messenger/preferences/security.dtd
+--- a/mail/locales/en-US/chrome/messenger/preferences/security.dtd
++++ b/mail/locales/en-US/chrome/messenger/preferences/security.dtd
+@@ -40,9 +40,8 @@
+ <!ENTITY changeMasterPassword.accesskey "C">
+ <!ENTITY savedPasswords.label           "Saved Passwords…">
+ <!ENTITY savedPasswords.accesskey       "S">
+ 
+ <!-- Anti Virus -->
+ <!ENTITY antiVirus.intro      "&brandShortName; can make it easy for antivirus software to analyze incoming mail messages for viruses before they are stored locally.">
+ <!ENTITY antiVirus.label      "Allow antivirus clients to quarantine individual incoming messages">
+ <!ENTITY antiVirus.accesskey  "A">
+-
+diff --git a/mail/locales/en-US/chrome/messenger/smime.properties b/mail/locales/en-US/chrome/messenger/smime.properties
+--- a/mail/locales/en-US/chrome/messenger/smime.properties
++++ b/mail/locales/en-US/chrome/messenger/smime.properties
+@@ -4,10 +4,8 @@
+ 
+ #
+ # The following are used by the smime content type handler
+ #
+ 
+ ## @name NS_MSG_UNABLE_TO_OPEN_FILE
+ ## LOCALIZATION NOTE: the text can contain HTML tags.
+ 1000=This is an <B>ENCRYPTED</B> or <B>SIGNED</B> message.<br> This Mail application does not support encrypted or signed mail.
+-
+-
+diff --git a/mail/locales/en-US/chrome/messenger/viewSource.dtd b/mail/locales/en-US/chrome/messenger/viewSource.dtd
+--- a/mail/locales/en-US/chrome/messenger/viewSource.dtd
++++ b/mail/locales/en-US/chrome/messenger/viewSource.dtd
+@@ -79,9 +79,8 @@ you can use these alternative items. Oth
+ <!ENTITY forwardCmd.accesskey "F">
+ <!ENTITY goBackCmd.commandKey "[">
+ <!ENTITY goForwardCmd.commandKey "]">
+ 
+ <!ENTITY copyLinkCmd.label "Copy Link Location">
+ <!ENTITY copyLinkCmd.accesskey "L">
+ <!ENTITY copyEmailCmd.label "Copy Email Address">
+ <!ENTITY copyEmailCmd.accesskey "E">
+-
+

+ 127 - 0
comm-esr60/comm-esr60/patches/1399756-30-61a1.patch

@@ -0,0 +1,127 @@
+# HG changeset patch
+# User Onno Ekker <o.e.ekker@gmail.com>
+# Date 1522803960 -7200
+# Node ID 5e66a21a7abacdcdf32cf4274dbf919b1c1ec914
+# Parent  bc2100db6ce02b55cef11493a659b31143d30901
+Bug 1399756 - Fix some white-space issues in .properties and .dtd files in mail/. r=jorgk
+
+diff --git a/mail/locales/en-US/chrome/messenger/am-server-advanced.dtd b/mail/locales/en-US/chrome/messenger/am-server-advanced.dtd
+--- a/mail/locales/en-US/chrome/messenger/am-server-advanced.dtd
++++ b/mail/locales/en-US/chrome/messenger/am-server-advanced.dtd
+@@ -17,15 +17,15 @@
+ <!ENTITY personalNamespace.label "Personal namespace:">
+ <!ENTITY personalNamespace.accesskey "P">
+ <!ENTITY publicNamespace.label "Public (shared):">
+ <!ENTITY publicNamespace.accesskey "u">
+ <!ENTITY otherUsersNamespace.label "Other Users:">
+ <!ENTITY otherUsersNamespace.accesskey "O">
+ <!ENTITY overrideNamespaces.label "Allow server to override these namespaces">
+ <!ENTITY overrideNamespaces.accesskey "A">
+-<!ENTITY pop3DeferringDesc.label "When downloading mail from this account's server, use the following folder to store new messages:" >
++<!ENTITY pop3DeferringDesc.label "When downloading mail from this account's server, use the following folder to store new messages:">
+ <!ENTITY accountInbox.label "Inbox for this account">
+ <!ENTITY accountInbox.accesskey "s">
+ <!ENTITY deferToServer.label "Inbox for different account">
+ <!ENTITY deferToServer.accesskey "d">
+ <!ENTITY deferGetNewMail.label "Include this server when getting new mail">
+ <!ENTITY deferGetNewMail.accesskey "I">
+diff --git a/mail/locales/en-US/chrome/messenger/am-server-top.dtd b/mail/locales/en-US/chrome/messenger/am-server-top.dtd
+--- a/mail/locales/en-US/chrome/messenger/am-server-top.dtd
++++ b/mail/locales/en-US/chrome/messenger/am-server-top.dtd
+@@ -56,17 +56,17 @@
+ <!ENTITY expungeOnExit.label "Clean up (&quot;Expunge&quot;) Inbox on Exit">
+ <!ENTITY expungeOnExit.accesskey "E">
+ <!ENTITY emptyTrashOnExit.label "Empty Trash on Exit">
+ <!ENTITY emptyTrashOnExit.accesskey "x">
+ <!ENTITY loginAtStartup.label "Check for new messages at startup">
+ <!ENTITY loginAtStartup.accesskey "C">
+ <!-- LOCALIZATION NOTE (maxMessagesStart.label) : translate below 2 lines with grammar dependency
+     maxMessengerStart.label will be followed by maxMessagesEnd.label with the number
+-   of messages between them
++    of messages between them
+ -->
+ <!ENTITY maxMessagesStart.label "Ask me before downloading more than">
+ <!ENTITY maxMessagesStart.accesskey "m">
+ <!-- LOCALIZATION NOTE (maxMessagesEnd.label) : see note for maxMessagesStart.label -->
+ <!ENTITY maxMessagesEnd.label "messages">
+ <!ENTITY alwaysAuthenticate.label "Always request authentication when connecting to this server">
+ <!ENTITY alwaysAuthenticate.accesskey "w">
+ <!ENTITY newsrcFilePath.label "newsrc file:">
+diff --git a/mail/locales/en-US/chrome/messenger/converterDialog.properties b/mail/locales/en-US/chrome/messenger/converterDialog.properties
+--- a/mail/locales/en-US/chrome/messenger/converterDialog.properties
++++ b/mail/locales/en-US/chrome/messenger/converterDialog.properties
+@@ -33,9 +33,9 @@ converterDialog.warningForDeferredToAcco
+ 
+ # LOCALIZATION NOTE (converterDialog.messageForDeferredAccount):
+ # %1$S will be replaced by a comma separated list of names of accounts which are being converted.
+ # %2$S will be replaced by the format into which the accounts will be converted.
+ converterDialog.messageForDeferredAccount=Converting the accounts %1$S to %2$S…
+ 
+ # LOCALIZATION NOTE (converterDialog.percentDone):
+ # %1$S will be replaced by the percentage of conversion that is complete.
+-converterDialog.percentDone=%1$S%% done
+\ No newline at end of file
++converterDialog.percentDone=%1$S%% done
+diff --git a/mail/locales/en-US/chrome/messenger/downloadheaders.dtd b/mail/locales/en-US/chrome/messenger/downloadheaders.dtd
+--- a/mail/locales/en-US/chrome/messenger/downloadheaders.dtd
++++ b/mail/locales/en-US/chrome/messenger/downloadheaders.dtd
+@@ -1,19 +1,19 @@
+ <!-- This Source Code Form is subject to the terms of the Mozilla Public
+    - License, v. 2.0. If a copy of the MPL was not distributed with this
+    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+ 
+ <!ENTITY all.label          "Download all headers">
+ <!ENTITY all.accesskey      "D">
+ <!--LOCALIZATION NOTE (download.label):
+     consider the download.label and headers.label as a single sentence
+-   with the number of headers to be downloaded inserted between them:
+-   EXAMPLE: "Download" <some number> "headers"
+-   Either label could be set to null ("") if required grammatically.
++    with the number of headers to be downloaded inserted between them:
++    EXAMPLE: "Download" <some number> "headers"
++    Either label could be set to null ("") if required grammatically.
+ -->
+ 
+ <!ENTITY download.label     "Download">
+ <!ENTITY download.accesskey "o">
+ <!--LOCALIZATION NOTE (headers.label): see note for download.label -->
+ <!ENTITY headers.label      "headers">
+ <!ENTITY headers.accesskey  "h">
+ <!ENTITY mark.label         "Mark remaining headers as read">
+diff --git a/mail/locales/en-US/chrome/messenger/messenger.dtd b/mail/locales/en-US/chrome/messenger/messenger.dtd
+--- a/mail/locales/en-US/chrome/messenger/messenger.dtd
++++ b/mail/locales/en-US/chrome/messenger/messenger.dtd
+@@ -866,17 +866,17 @@
+ 
+ <!-- Quick Search Bar -->
+ <!-- LOCALIZATION NOTE (quickSearchCmd.key):
+      This is actually the key used for the global message search box; we have
+      not changed
+   -->
+ <!ENTITY quickSearchCmd.key "k">
+ <!-- LOCALIZATION NOTE (search.label.base1):
+-      This is the base of the empty text for the global search box. We replace
++     This is the base of the empty text for the global search box. We replace
+      #1 with the contents of the appropriate search.keyLabel.* value for the
+      platform.
+      The goal is to convey to the user that typing in the box will allow them
+      to search for messages globally and that there is a hotkey they can press
+      to get to the box faster. If the global indexer is disabled, the search
+      box will be collapsed and the user will never see this message.
+   -->
+ <!ENTITY search.label.base1 "Search #1">
+diff --git a/mail/locales/en-US/chrome/messenger/msgSynchronize.dtd b/mail/locales/en-US/chrome/messenger/msgSynchronize.dtd
+--- a/mail/locales/en-US/chrome/messenger/msgSynchronize.dtd
++++ b/mail/locales/en-US/chrome/messenger/msgSynchronize.dtd
+@@ -15,9 +15,9 @@
+ <!ENTITY sendMessage.label "Send Unsent messages">
+ <!ENTITY sendMessage.accesskey "S">
+ <!ENTITY workOffline.label "Work offline once download and/or sync is complete">
+ <!ENTITY workOffline.accesskey "W">
+ <!ENTITY selectButton.label "Select…">
+ <!ENTITY selectButton.accesskey "E">
+ <!ENTITY MsgSelectDesc.label "Choose mail folders and newsgroups for offline use.">
+ <!ENTITY MsgSelectInd.label "Download">
+-<!ENTITY MsgSelectItems.label "Folders and Newsgroups">
+\ No newline at end of file
++<!ENTITY MsgSelectItems.label "Folders and Newsgroups">

+ 457 - 0
comm-esr60/comm-esr60/patches/1399756-31-61a1.patch

@@ -0,0 +1,457 @@
+# HG changeset patch
+# User Jorg K <jorgk@jorgk.com>
+# Date 1521519660 -3600
+# Node ID 2e84d388d2c6fcd28b0dd03152fcf6945713c502
+# Parent  a2a82eb523f6a34b0fe946714e7fc6c9d726b6aa
+Bug 1399756 - fix typos in chat/ using codespell. r=florian
+[skip-blame]
+
+diff --git a/chat/components/src/imAccounts.js b/chat/components/src/imAccounts.js
+--- a/chat/components/src/imAccounts.js
++++ b/chat/components/src/imAccounts.js
+@@ -369,17 +369,17 @@ imAccount.prototype = {
+   _reconnectTimer: null,
+   _startReconnectTimer: function() {
+     if (Services.io.offline) {
+       Cu.reportError("_startReconnectTimer called while offline");
+       return;
+     }
+ 
+     /* If the last successful connection is older than 10 seconds, reset the
+-       number of reconnection attemps. */
++       number of reconnection attempts. */
+     const kTimeBeforeSuccessfulConnection = 10;
+     if (this.timeOfLastConnect &&
+         this.timeOfLastConnect + kTimeBeforeSuccessfulConnection * 1000 < Date.now()) {
+       delete this.reconnectAttempt;
+       delete this.timeOfLastConnect;
+     }
+ 
+     let timers =
+diff --git a/chat/components/src/imContacts.js b/chat/components/src/imContacts.js
+--- a/chat/components/src/imContacts.js
++++ b/chat/components/src/imContacts.js
+@@ -87,17 +87,17 @@ function getDBConnection()
+     "CREATE INDEX IF NOT EXISTS account_buddy_buddyindex " +
+       "ON account_buddy (buddy_id)"
+   ].forEach(conn.executeSimpleSQL);
+ 
+   return conn;
+ }
+ 
+ // Wrap all the usage of DBConn inside a transaction that will be
+-// commited automatically at the end of the event loop spin so that
++// committed automatically at the end of the event loop spin so that
+ // we flush buddy list data to disk only once per event loop spin.
+ var gDBConnWithPendingTransaction = null;
+ Object.defineProperty(this, "DBConn", {
+   configurable: true,
+   enumerable: true,
+ 
+   get() {
+     if (gDBConnWithPendingTransaction)
+@@ -1510,17 +1510,17 @@ ContactsService.prototype = {
+       DBConn.createStatement("DELETE FROM accounts WHERE id = :accountId");
+     try {
+       statement.params.accountId = aId;
+       statement.execute();
+     } finally {
+       statement.finalize();
+     }
+ 
+-    // removing the account from the accounts table is not enought,
++    // removing the account from the accounts table is not enough,
+     // we need to remove all the associated account_buddy entries too
+     statement = DBConn.createStatement("DELETE FROM account_buddy " +
+                                        "WHERE account_id = :accountId");
+     try {
+       statement.params.accountId = aId;
+       statement.execute();
+     } finally {
+       statement.finalize();
+diff --git a/chat/components/src/test/test_commands.js b/chat/components/src/test/test_commands.js
+--- a/chat/components/src/test/test_commands.js
++++ b/chat/components/src/test/test_commands.js
+@@ -68,17 +68,17 @@ function run_test() {
+ 
+   // We test an array of different possible conversations.
+   // cmdlist lists all the available commands for the given conversation.
+   // results is an array which for each testCmd provides an array containing
+   // data with which the return value of _findCommands can be checked. In
+   // particular, the name of the command and whether the first (i.e. preferred)
+   // entry in the returned array of commands is a prpl command. (If the latter
+   // boolean is not given, false is assumed, if the name is not given, that
+-  // corresponds to no commmands being returned.)
++  // corresponds to no commands being returned.)
+   let testData = [
+     {
+       desc: "No conversation argument.",
+       cmdlist: "away, back, busy, dnd, help, offline, raw, say",
+       results: [[], [], ["back"], [], ["back"], ["help"], ["help"], ["offline"], ["offline"]]
+     },
+     {
+       desc: "Disconnected conversation with fakeAccount.",
+diff --git a/chat/content/convbrowser.xml b/chat/content/convbrowser.xml
+--- a/chat/content/convbrowser.xml
++++ b/chat/content/convbrowser.xml
+@@ -754,17 +754,17 @@
+         </body>
+       </method>
+ 
+       <method name="browserScroll">
+         <parameter name="event"/>
+         <body>
+           <![CDATA[
+             if (this._scrollingIntoView) {
+-              // We have explicitely requested a scrollIntoView, ignore the event
++              // We have explicitly requested a scrollIntoView, ignore the event.
+               this._scrollingIntoView = false;
+               this._lastScrollHeight = this.scrollHeight;
+               this._lastScrollWidth = this.scrollWidth;
+               return;
+             }
+ 
+             if (!("_lastScrollHeight" in this) ||
+                 this._lastScrollHeight != this.scrollHeight ||
+diff --git a/chat/locales/en-US/twitter.properties b/chat/locales/en-US/twitter.properties
+--- a/chat/locales/en-US/twitter.properties
++++ b/chat/locales/en-US/twitter.properties
+@@ -12,18 +12,18 @@ error.tooLong=Status is over 140 charact
+ # LOCALIZATION NOTE (error.general, error.retweet, error.delete):
+ #   %1$S will be either the error string returned by the twitter server,
+ #   in English, inside parenthesis, or the empty string if we have no specific
+ #   message for the error.
+ #   %2$S is the message that caused the error.
+ error.general=An error %1$S occurred while sending: %2$S
+ error.retweet=An error %1$S occurred while retweeting: %2$S
+ error.delete=An error %1$S occurred while deleting: %2$S
+-error.like=An error %1$S occured while liking: %2$S
+-error.unlike=An error %1$S occured while unliking: %2$S
++error.like=An error %1$S occurred while liking: %2$S
++error.unlike=An error %1$S occurred while unliking: %2$S
+ # LOCALIZATION NOTE (error.descriptionTooLong)
+ #   %S is the truncated string that was sent to the server.
+ error.descriptionTooLong=Description is over the maximum length (160 characters), it was automatically truncated to: %S.
+ 
+ # LOCALIZATION NOTE (timeline):
+ #   This is the title of the conversation tab, %S will be replaced by
+ #   @<username>.
+ timeline=%S timeline
+diff --git a/chat/modules/imContentSink.jsm b/chat/modules/imContentSink.jsm
+--- a/chat/modules/imContentSink.jsm
++++ b/chat/modules/imContentSink.jsm
+@@ -6,17 +6,17 @@ ChromeUtils.import("resource:///modules/
+ 
+ this.EXPORTED_SYMBOLS = [
+   "cleanupImMarkup", // used to clean up incoming IMs.
+                      // This will use the global ruleset of acceptable stuff
+                      // except if another (custom one) is provided
+   "createDerivedRuleset", // used to create a ruleset that inherits from the
+                           // default one
+                           // useful if you want to allow or forbid
+-                          // an additionnal thing in a specific
++                          // an additional thing in a specific
+                           // conversation but take into account all
+                           // the other global settings.
+   "addGlobalAllowedTag",
+   "removeGlobalAllowedTag",
+   "addGlobalAllowedAttribute",
+   "removeGlobalAllowedAttribute",
+   "addGlobalAllowedStyleRule",
+   "removeGlobalAllowedStyleRule"
+@@ -271,17 +271,17 @@ function cleanupNode(aNode, aRules, aTex
+       }
+ 
+       // we are going to keep this child node, clean up its children
+       cleanupNode(node, aRules, aTextModifiers);
+ 
+       // cleanup attributes
+       let attrs = node.attributes;
+       let acceptFunction = function(aAttrRules, aAttr) {
+-        // an attribute is always accepted if its rule is true, or conditionnaly
++        // an attribute is always accepted if its rule is true, or conditionally
+         // accepted if its rule is a function that evaluates to true
+         // if its rule does not exist, it is refused
+           let localName = aAttr.localName;
+           let rule = localName in aAttrRules && aAttrRules[localName];
+           return (rule === true ||
+                   (typeof rule == "function" && rule(aAttr.value)));
+       };
+       for (let j = 0; j < attrs.length; ++j) {
+diff --git a/chat/modules/imSmileys.jsm b/chat/modules/imSmileys.jsm
+--- a/chat/modules/imSmileys.jsm
++++ b/chat/modules/imSmileys.jsm
+@@ -11,17 +11,17 @@ XPCOMUtils.defineLazyGetter(this, "gText
+ 
+ ChromeUtils.defineModuleGetter(this, "NetUtil",
+                                "resource://gre/modules/NetUtil.jsm");
+ 
+ this.EXPORTED_SYMBOLS = [
+   "smileImMarkup", // used to add smile:// img tags into IM markup.
+   "smileTextNode", // used to add smile:// img tags to the content of a textnode
+   "smileString", // used to add smile:// img tags into a string without parsing it as HTML. Be sure the string doesn't contain HTML tags.
+-  "getSmileRealURI", // used to retrive the chrome URI for a smile:// URI
++  "getSmileRealURI", // used to retrieve the chrome URI for a smile:// URI
+   "getSmileyList" // used to display a list of smileys in the UI
+ ];
+ 
+ var kEmoticonsThemePref = "messenger.options.emoticonsTheme";
+ var kThemeFile = "theme.js";
+ 
+ Object.defineProperty(this, "gTheme", {
+   configurable: true,
+diff --git a/chat/protocols/irc/ircCommands.jsm b/chat/protocols/irc/ircCommands.jsm
+--- a/chat/protocols/irc/ircCommands.jsm
++++ b/chat/protocols/irc/ircCommands.jsm
+@@ -140,17 +140,17 @@ function simpleCommand(aConv, aCommand, 
+   if (!aParams || !aParams.length)
+     getAccount(aConv).sendMessage(aCommand);
+   else
+     getAccount(aConv).sendMessage(aCommand, aParams);
+   return true;
+ }
+ 
+ // Sends a CTCP message to aTarget using the CTCP command aCommand and aMsg as
+-// a CTCP paramter.
++// a CTCP parameter.
+ function ctcpCommand(aConv, aTarget, aCommand, aParams) {
+   return getAccount(aConv).sendCTCPMessage(aTarget, false, aCommand, aParams);
+ }
+ 
+ // Replace the command name in the help string so translators do not attempt to
+ // translate it.
+ var commands = [
+   {
+diff --git a/chat/protocols/irc/ircDCC.jsm b/chat/protocols/irc/ircDCC.jsm
+--- a/chat/protocols/irc/ircDCC.jsm
++++ b/chat/protocols/irc/ircDCC.jsm
+@@ -24,17 +24,17 @@ function DCCMessage(aMessage, aAccount) 
+   if (params.length < 4) {
+     aAccount.ERROR("Not enough DCC parameters:\n" + JSON.stringify(aMessage));
+     return null;
+   }
+ 
+   try {
+     // Address, port and size should be treated as unsigned long, unsigned short
+     // and unsigned long, respectively. The protocol is designed to handle
+-    // further arguements, if necessary.
++    // further arguments, if necessary.
+     message.ctcp.dcc = {
+       type: params[0],
+       argument: params[1],
+       address: Number(params[2]),
+       port: Number(params[3]),
+       size: params.length == 5 ? Number(params[4]) : null,
+       furtherArguments: params.length > 5 ? params.slice(5) : []
+     };
+diff --git a/chat/protocols/irc/ircISUPPORT.jsm b/chat/protocols/irc/ircISUPPORT.jsm
+--- a/chat/protocols/irc/ircISUPPORT.jsm
++++ b/chat/protocols/irc/ircISUPPORT.jsm
+@@ -22,17 +22,17 @@ ChromeUtils.import("resource:///modules/
+  *   <parameter>=<value> or -<value>
+  * The isupport field is added to the message and it has the following fields:
+  *   parameter  What is being configured by this ISUPPORT token.
+  *   useDefault Whether this parameter should be reset to the default value, as
+  *              defined by the RFC.
+  *   value      The new value for the parameter.
+  */
+ function isupportMessage(aMessage) {
+-  // Seperate the ISUPPORT parameters.
++  // Separate the ISUPPORT parameters.
+   let tokens = aMessage.params.slice(1, -1);
+ 
+   let message = aMessage;
+   message.isupport = {};
+ 
+   return tokens.map(function(aToken) {
+     let newMessage = JSON.parse(JSON.stringify(message));
+     newMessage.isupport.useDefault = aToken[0] == "-";
+diff --git a/chat/protocols/irc/ircNonStandard.jsm b/chat/protocols/irc/ircNonStandard.jsm
+--- a/chat/protocols/irc/ircNonStandard.jsm
++++ b/chat/protocols/irc/ircNonStandard.jsm
+@@ -63,17 +63,17 @@ var ircNonStandard = {
+                                _("connection.error.passwordRequired"));
+         }
+ 
+         // All done for ZNC.
+         return true;
+       }
+ 
+       // Some servers, e.g. irc.umich.edu, use NOTICE during connection
+-      // negotation to give directions to users, these MUST be shown to the
++      // negotiation to give directions to users, these MUST be shown to the
+       // user. If the message starts with ***, we assume it is probably an AUTH
+       // message, which falls through to normal NOTICE processing.
+       // Note that if the user's nick is auth this COULD be a notice directed at
+       // them. For reference: moznet sends Auth (previously sent AUTH), freenode
+       // sends *.
+       let isAuth = target == "auth" && this._nickname.toLowerCase() != "auth";
+       if (!aMessage.params[1].startsWith("***") && !isAuth) {
+         this.getConversation(aMessage.origin)
+diff --git a/chat/protocols/irc/ircUtils.jsm b/chat/protocols/irc/ircUtils.jsm
+--- a/chat/protocols/irc/ircUtils.jsm
++++ b/chat/protocols/irc/ircUtils.jsm
+@@ -227,17 +227,17 @@ function conversationErrorMessage(aAccou
+   let conv = aAccount.getConversation(aMessage.params[1]);
+   conv.writeMessage(aMessage.origin, _(aError, aMessage.params[1],
+                                        aMessage.params[2] || undefined),
+                     {error: true, system: true});
+   delete conv._pendingMessage;
+ 
+   // Channels have a couple extra things that can be done to them.
+   if (aAccount.isMUCName(aMessage.params[1])) {
+-    // If a value for joining is explictly given, mark it.
++    // If a value for joining is explicitly given, mark it.
+     if (aJoinFailed)
+       conv.joining = false;
+     // If the conversation cannot be rejoined automatically, delete
+     // chatRoomFields.
+     if (!aRejoinable)
+       delete conv.chatRoomFields;
+   }
+ 
+diff --git a/chat/protocols/skype/skype.js b/chat/protocols/skype/skype.js
+--- a/chat/protocols/skype/skype.js
++++ b/chat/protocols/skype/skype.js
+@@ -414,17 +414,17 @@ SkypeAccount.prototype = {
+     if (!refreshToken) {
+       this.ERROR("skypetoken value not found.")
+       this._disconnectWithAuthFailure();
+       return;
+     }
+ 
+     // All done!
+     this._skypeToken = refreshToken;
+-    this.LOG("Recevied Skype token: " + this._skypeToken);
++    this.LOG("Received Skype token: " + this._skypeToken);
+ 
+     if (this._registrationToken) {
+       // Subscribe to receive particular events.
+       this._subscribe();
+       return;
+     }
+ 
+     this.reportConnecting(_("connecting.registrationToken"));
+diff --git a/chat/protocols/twitter/twitter.js b/chat/protocols/twitter/twitter.js
+--- a/chat/protocols/twitter/twitter.js
++++ b/chat/protocols/twitter/twitter.js
+@@ -147,17 +147,17 @@ var GenericTwitterConversation = {
+     let flags = {system: true};
+     if (aIsError)
+       flags.error = true;
+     if (aDate)
+       flags.time = aDate;
+     this.writeMessage("twitter.com", aMessage, flags);
+   },
+   onSentCallback: function(aMsg, aData) {
+-    // The conversation may have been unitialized in the time it takes for
++    // The conversation may have been uninitialized in the time it takes for
+     // the async callback to fire.  Use `_observers` as a proxy for uninit'd.
+     if (!this._observers)
+       return;
+ 
+     let tweet = JSON.parse(aData);
+     // The OTR extension requires that the protocol not modify the message
+     // (see the notes at `imIOutgoingMessage`).  That's the contract we made.
+     // Unfortunately, Twitter trims tweets and substitutes links.
+diff --git a/chat/protocols/xmpp/xmpp-authmechs.jsm b/chat/protocols/xmpp/xmpp-authmechs.jsm
+--- a/chat/protocols/xmpp/xmpp-authmechs.jsm
++++ b/chat/protocols/xmpp/xmpp-authmechs.jsm
+@@ -230,17 +230,17 @@ const RFC3454 = {
+ [\u{1d552}-\u{1d6a3}]|[\u{1d6a8}-\u{1d7c9}]|[\u{20000}-\u{2a6d6}]|\
+ [\u{2f800}-\u{2fa1d}]|[\u{f0000}-\u{ffffd}]|[\u{100000}-\u{10fffd}]"
+ };
+ 
+ // Generates a random nonce and returns a base64 encoded string.
+ // aLength in bytes.
+ function createNonce(aLength) {
+   // RFC 5802 (5.1): Printable ASCII except ",".
+-  // We guarantee a vaild nonce value using base64 encoding.
++  // We guarantee a valid nonce value using base64 encoding.
+   return btoa(CryptoUtils.generateRandomBytes(aLength));
+ }
+ 
+ // Parses the string of server's response (aChallenge) into an object.
+ function parseChallenge(aChallenge) {
+   let attributes = {};
+   aChallenge.split(",").forEach(value => {
+     let match =  /^(\w)=([\s\S]*)$/.exec(value);
+diff --git a/chat/protocols/xmpp/xmpp.jsm b/chat/protocols/xmpp/xmpp.jsm
+--- a/chat/protocols/xmpp/xmpp.jsm
++++ b/chat/protocols/xmpp/xmpp.jsm
+@@ -417,17 +417,17 @@ var XMPPMUCConversationPrototype = {
+       }
+     }
+     else {
+       this._participants.get(nick).onPresenceStanza(aStanza);
+       this.notifyObservers(this._participants.get(nick), "chat-buddy-update");
+     }
+   },
+ 
+-  /* Called by the account when a messsage is received for this muc */
++  /* Called by the account when a message is received for this muc */
+   incomingMessage: function(aMsg, aStanza, aDate) {
+     let from = this._account._parseJID(aStanza.attributes["from"]).resource;
+     let id = aStanza.attributes["id"];
+     let flags = {};
+     if (!from) {
+       flags.system = true;
+       from = this.name;
+     }
+@@ -752,17 +752,17 @@ var XMPPConversationPrototype = {
+   /* Perform entity escaping before displaying the message. We assume incoming
+      messages have already been escaped, and will otherwise be filtered. */
+   prepareForDisplaying: function(aMsg) {
+     if (aMsg.outgoing && !aMsg.system)
+       aMsg.displayMessage = TXTToHTML(aMsg.displayMessage);
+     GenericConversationPrototype.prepareForDisplaying.apply(this, arguments);
+   },
+ 
+-  /* Called by the account when a messsage is received from the buddy */
++  /* Called by the account when a message is received from the buddy */
+   incomingMessage: function(aMsg, aStanza, aDate) {
+     let from = aStanza.attributes["from"];
+     this._targetResource = this._account._parseJID(from).resource;
+     let flags = {};
+     let error = this._account.parseError(aStanza);
+     if (error) {
+       let norm = this._account.normalize(from);
+       let muc = this._account._mucs.get(norm);
+@@ -2290,17 +2290,17 @@ var XMPPAccountPrototype = {
+     return this._setJID(result.domain, result.node, result.resource);
+   },
+ 
+   // Constructs jid as an object from domain, node and resource parts.
+   // The object has properties (node, domain, resource and jid).
+   // aDomain is required, but aNode and aResource are optional.
+   _setJID: function(aDomain, aNode = null, aResource = null) {
+     if (!aDomain)
+-      throw "aDomain must have a vaule";
++      throw "aDomain must have a value";
+ 
+     let result = {
+       node: aNode,
+       domain: aDomain.toLowerCase(),
+       resource: aResource
+     };
+     let jid = result.domain;
+     if (result.node) {
+@@ -2659,17 +2659,17 @@ var XMPPAccountPrototype = {
+   _sendVCard: function() {
+     if (!this._connection)
+       return;
+ 
+     // We have to download the user's existing vCard before updating it.
+     // This lets us preserve the fields that we don't change or don't know.
+     // Some servers may reject a new vCard if we don't do this first.
+     if (!this.hasOwnProperty("_userVCard")) {
+-      // The download of the vCard is asyncronous and will call _sendVCard back
++      // The download of the vCard is asynchronous and will call _sendVCard back
+       // when the user's vCard has been received.
+       this._downloadUserVCard();
+       return;
+     }
+ 
+     // Read the local user icon asynchronously from the disk.
+     // _cacheUserIcon will call _sendVCard back once the icon is ready.
+     if (!this.hasOwnProperty("_cachedUserIcon")) {

+ 63 - 0
comm-esr60/comm-esr60/patches/1399756-33-61a1.patch

@@ -0,0 +1,63 @@
+# HG changeset patch
+# User Onno Ekker <o.e.ekker@gmail.com>
+# Date 1522892580 -7200
+# Node ID 9852dfc1567514e130c4167d93c004fc21019809
+# Parent  4f7a3fd027b128b5d64dceb3d658b3f14650549e
+Bug 1399756 - remove trailing empty lines in editor/. r=jorgk
+
+diff --git a/editor/ui/locales/en-US/chrome/composer/editorSmileyOverlay.dtd b/editor/ui/locales/en-US/chrome/composer/editorSmileyOverlay.dtd
+--- a/editor/ui/locales/en-US/chrome/composer/editorSmileyOverlay.dtd
++++ b/editor/ui/locales/en-US/chrome/composer/editorSmileyOverlay.dtd
+@@ -50,9 +50,8 @@
+ <!ENTITY smiley14Cmd.tooltip "Insert an innocent face">
+ <!ENTITY smiley15Cmd.label "Cry">
+ <!ENTITY smiley15Cmd.accesskey "r">
+ <!ENTITY smiley15Cmd.tooltip "Insert a crying face">
+ <!ENTITY smiley16Cmd.label "Lips-are-Sealed">
+ <!ENTITY smiley16Cmd.accesskey "a">
+ <!ENTITY smiley16Cmd.tooltip "Insert a lips-are-sealed face">
+ <!ENTITY SmileButton.tooltip "Insert a smiley face">
+-
+diff --git a/editor/ui/locales/en-US/chrome/composer/pref-editing.dtd b/editor/ui/locales/en-US/chrome/composer/pref-editing.dtd
+--- a/editor/ui/locales/en-US/chrome/composer/pref-editing.dtd
++++ b/editor/ui/locales/en-US/chrome/composer/pref-editing.dtd
+@@ -24,9 +24,8 @@
+ <!ENTITY background.label           "Background:">
+ <!ENTITY background.accesskey       "B">
+ <!ENTITY colon.character            ":">
+ 
+ <!ENTITY backgroundImage.label      "Background image:">
+ <!ENTITY backgroundImage.accesskey  "m">
+ <!ENTITY chooseFile.label           "Choose File…">
+ <!ENTITY chooseFile.accesskey       "o">
+-
+diff --git a/editor/ui/locales/en-US/chrome/dialogs/EdNamedAnchorProperties.dtd b/editor/ui/locales/en-US/chrome/dialogs/EdNamedAnchorProperties.dtd
+--- a/editor/ui/locales/en-US/chrome/dialogs/EdNamedAnchorProperties.dtd
++++ b/editor/ui/locales/en-US/chrome/dialogs/EdNamedAnchorProperties.dtd
+@@ -1,10 +1,8 @@
+ <!-- This Source Code Form is subject to the terms of the Mozilla Public
+    - License, v. 2.0. If a copy of the MPL was not distributed with this
+    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+ 
+ <!ENTITY windowTitle.label "Named Anchor Properties">
+ <!ENTITY anchorNameEditField.label "Anchor Name:">
+ <!ENTITY anchorNameEditField.accessKey "N">
+ <!ENTITY nameInput.tooltip "Enter a unique name for this named anchor (target)">
+-
+-
+diff --git a/editor/ui/locales/en-US/chrome/dialogs/EditorSaveAsCharset.dtd b/editor/ui/locales/en-US/chrome/dialogs/EditorSaveAsCharset.dtd
+--- a/editor/ui/locales/en-US/chrome/dialogs/EditorSaveAsCharset.dtd
++++ b/editor/ui/locales/en-US/chrome/dialogs/EditorSaveAsCharset.dtd
+@@ -7,11 +7,8 @@
+ <!-- This button is for the progressive disclosure of additional editing functionality -->
+ 
+ <!-- These strings are for use specifically in the editor's link dialog. -->
+ <!ENTITY windowTitle2.label "Save And Change Text Encoding">
+ <!ENTITY documentTitleTitle.label "Page Title">
+ <!ENTITY documentCharsetTitle2.label "Text Encoding">
+ <!ENTITY documentCharsetDesc2.label "Select the text encoding you want to save a document in:">
+ <!ENTITY documentExportToText.label "Export to Text">
+-
+-
+-
+

+ 0 - 25
comm-esr60/comm-esr60/patches/1402006.patch

@@ -1,25 +0,0 @@
-# HG changeset patch
-# User Tom Prince <mozilla@hocat.ca>
-# Date 1506030048 -7200
-# Node ID 153b971fbc2120fe61da0fe75181a69ba51dabc7
-# Parent  9e56a0557a39da8fb1c259156bd42cb42dfc2171
-Bug 1402006 - Port bug 1398897 to libical: repeat defines from Makefile.in in moz.build. r=jorgk
-
-diff --git a/calendar/libical/src/libical/moz.build b/calendar/libical/src/libical/moz.build
---- a/calendar/libical/src/libical/moz.build
-+++ b/calendar/libical/src/libical/moz.build
-@@ -53,8 +53,14 @@ EXPORTS += [
- # We allow warnings for third-party code that can be updated from upstream.
- AllowCompilerWarnings()
- 
- FINAL_LIBRARY = 'xul'
- 
- LOCAL_INCLUDES += [
-     '../..'
- ]
-+
-+DEFINES['HAVE_CONFIG_H'] = True
-+DEFINES['HAVE_SNPRINTF'] = True
-+
-+if CONFIG['OS_TARGET'] == 'Darwin':
-+    DEFINES['__USE_BSD'] = '1'

+ 3 - 3
comm-esr60/comm-esr60/patches/1447907.patch → comm-esr60/comm-esr60/patches/1447907-1-61a1.patch

@@ -1,9 +1,8 @@
 # HG changeset patch
 # User Philipp Kewisch <philipp@bugzilla.kewis.ch>
 # Date 1521730439 -3600
-#      Thu Mar 22 15:53:59 2018 +0100
 # Node ID f44cfb13e72d37bbe96ea2b5f82514e34150f543
-# Parent  ee0eb2742cbe6b0a4bef7a4644e7694a6d1f1a99
+# Parent  5e1cd8191d43ee71693dc35cee3e1496f633f07e
 Bug 1447907 - Port bug 1429875 to TB: re-write linkage logic in moz.build. rs=bustage-fix DONTBUILD CLOSED TREE
 
 diff --git a/calendar/libical/src/libical/Makefile.in b/calendar/libical/src/libical/Makefile.in
@@ -30,7 +29,7 @@ diff --git a/calendar/libical/src/libical/Makefile.in b/calendar/libical/src/lib
 -	icalrestriction.c \
 -	$(NULL)
 -
- include $(topsrcdir)/config/rules.mk
+ include $(moztopsrcdir)/config/rules.mk
  
  ######################################################################
  #
@@ -80,3 +79,4 @@ diff --git a/calendar/libical/src/libical/moz.build b/calendar/libical/src/libic
  LOCAL_INCLUDES += [
      '../..'
  ]
+

+ 126 - 0
comm-esr60/comm-esr60/patches/1470716-cc-63a1.patch

@@ -0,0 +1,126 @@
+# HG changeset patch
+# User Jorg K <jorgk@jorgk.com>
+# Date 1530400434 -7200
+# Node ID 67e3d766d51549925745cc8353b1686800b61749
+# Parent  864d0a94694073643a960113aacc43b5120007cf
+Bug 1470716 - C-C part: Replace call to LoadExtensibleBundle(). r=kmag DONTBUILD
+
+diff --git a/mailnews/build/nsMailModule.cpp b/mailnews/build/nsMailModule.cpp
+--- a/mailnews/build/nsMailModule.cpp
++++ b/mailnews/build/nsMailModule.cpp
+@@ -1310,22 +1310,16 @@ static const mozilla::Module::CategoryEn
+   // msgdb Entries
+   // Mime Entries
+   { "mime-emitter", NS_HTML_MIME_EMITTER_CONTRACTID, NS_HTML_MIME_EMITTER_CONTRACTID },
+   { "mime-emitter", NS_XML_MIME_EMITTER_CONTRACTID, NS_XML_MIME_EMITTER_CONTRACTID },
+   { "mime-emitter", NS_PLAIN_MIME_EMITTER_CONTRACTID, NS_PLAIN_MIME_EMITTER_CONTRACTID },
+   { "mime-emitter", NS_RAW_MIME_EMITTER_CONTRACTID, NS_RAW_MIME_EMITTER_CONTRACTID },
+   // News Entries
+   { "command-line-handler", "m-news", NS_NEWSSTARTUPHANDLER_CONTRACTID },
+-  // Mail View Entries
+-  // mdn Entries
+-  // i18n Entries
+-  { NS_TITLE_BUNDLE_CATEGORY, "chrome://messenger/locale/charsetTitles.properties", "" },
+-  { NS_DATA_BUNDLE_CATEGORY, "resource://gre-resources/charsetData.properties", "" },
+-  // Tokenizer Entries
+   { NULL }
+ };
+ 
+ static void
+ msgMailNewsModuleDtor()
+ {
+   nsAddrDatabase::CleanupCache();
+ }
+diff --git a/mailnews/intl/nsCharsetConverterManager.cpp b/mailnews/intl/nsCharsetConverterManager.cpp
+--- a/mailnews/intl/nsCharsetConverterManager.cpp
++++ b/mailnews/intl/nsCharsetConverterManager.cpp
+@@ -38,25 +38,24 @@ nsCharsetConverterManager::~nsCharsetCon
+ //static
+ void nsCharsetConverterManager::Shutdown()
+ {
+   NS_IF_RELEASE(sDataBundle);
+   NS_IF_RELEASE(sTitleBundle);
+ }
+ 
+ static
+-nsresult LoadExtensibleBundle(const char* aCategory,
+-                              nsIStringBundle ** aResult)
++nsresult LoadBundle(const char* aBundleURLSpec, nsIStringBundle ** aResult)
+ {
+   nsCOMPtr<nsIStringBundleService> sbServ =
+     mozilla::services::GetStringBundleService();
+   if (!sbServ)
+     return NS_ERROR_FAILURE;
+ 
+-  return sbServ->CreateExtensibleBundle(aCategory, aResult);
++  return sbServ->CreateBundle(aBundleURLSpec, aResult);
+ }
+ 
+ static
+ nsresult GetBundleValueInner(nsIStringBundle * aBundle,
+                         const char * aName,
+                         const nsString& aProp,
+                         nsAString& aResult)
+ {
+@@ -90,17 +89,17 @@ nsresult GetBundleValue(nsIStringBundle 
+ static
+ nsresult GetCharsetDataImpl(const char * aCharset, const char16_t * aProp,
+                             nsAString& aResult)
+ {
+   NS_ENSURE_ARG_POINTER(aCharset);
+   // aProp can be nullptr
+ 
+   if (!sDataBundle) {
+-    nsresult rv = LoadExtensibleBundle(NS_DATA_BUNDLE_CATEGORY, &sDataBundle);
++    nsresult rv = LoadBundle("resource://gre-resources/charsetData.properties", &sDataBundle);
+     if (NS_FAILED(rv))
+       return rv;
+   }
+ 
+   return GetBundleValue(sDataBundle, aCharset, nsDependentString(aProp), aResult);
+ }
+ 
+ //static
+@@ -142,17 +141,17 @@ nsCharsetConverterManager::GetCharsetAli
+ 
+ NS_IMETHODIMP
+ nsCharsetConverterManager::GetCharsetTitle(const char * aCharset,
+                                            nsAString& aResult)
+ {
+   NS_ENSURE_ARG_POINTER(aCharset);
+ 
+   if (!sTitleBundle) {
+-    nsresult rv = LoadExtensibleBundle(NS_TITLE_BUNDLE_CATEGORY, &sTitleBundle);
++    nsresult rv = LoadBundle("chrome://messenger/locale/charsetTitles.properties", &sTitleBundle);
+     NS_ENSURE_SUCCESS(rv, rv);
+   }
+ 
+   return GetBundleValue(sTitleBundle, aCharset, NS_LITERAL_STRING(".title"), aResult);
+ }
+ 
+ NS_IMETHODIMP
+ nsCharsetConverterManager::GetCharsetData(const char * aCharset,
+diff --git a/mailnews/intl/nsCharsetConverterManager.h b/mailnews/intl/nsCharsetConverterManager.h
+--- a/mailnews/intl/nsCharsetConverterManager.h
++++ b/mailnews/intl/nsCharsetConverterManager.h
+@@ -2,19 +2,16 @@
+ /* This Source Code Form is subject to the terms of the Mozilla Public
+  * License, v. 2.0. If a copy of the MPL was not distributed with this
+  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+ #ifndef nsCharsetConverterManager_h__
+ #define nsCharsetConverterManager_h__
+ 
+ #include "nsICharsetConverterManager.h"
+ 
+-#define NS_DATA_BUNDLE_CATEGORY     "uconv-charset-data"
+-#define NS_TITLE_BUNDLE_CATEGORY    "uconv-charset-titles"
+-
+ class nsCharsetAlias;
+ 
+ class nsCharsetConverterManager : public nsICharsetConverterManager
+ {
+   friend class nsCharsetAlias;
+ 
+   NS_DECL_THREADSAFE_ISUPPORTS
+   NS_DECL_NSICHARSETCONVERTERMANAGER
+

+ 61 - 124
comm-esr60/comm-esr60/patches/1481326-1-63a1.patch

@@ -2,7 +2,7 @@
 # User Jorg K <jorgk@jorgk.com>
 # Date 1533628051 -7200
 # Node ID 16a4b760e352c04120cb741dd203051451f00c78
-# Parent  c88692ca543ef98a5f2a2194970b9598ec737f94
+# Parent  651c75c0e077fa76a71a89eb4dc3fa7a336e6724
 Bug 1481326 - fix some clang-cl warnings and allow others. rs=bustage-fix
 
 diff --git a/db/mork/src/moz.build b/db/mork/src/moz.build
@@ -18,7 +18,7 @@ diff --git a/db/mork/src/moz.build b/db/mork/src/moz.build
  FINAL_LIBRARY = 'mork'
  
 +if CONFIG['CC_TYPE'] == 'clang-cl':
-+    ALLOW_COMPILER_WARNINGS = True  # workaround for bug 1090497 / bug 1481326
++    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
 diff --git a/mail/components/build/nsMailComps.cpp b/mail/components/build/nsMailComps.cpp
 --- a/mail/components/build/nsMailComps.cpp
 +++ b/mail/components/build/nsMailComps.cpp
@@ -244,18 +244,18 @@ deleted file mode 100644
 diff --git a/mail/components/search/moz.build b/mail/components/search/moz.build
 --- a/mail/components/search/moz.build
 +++ b/mail/components/search/moz.build
-@@ -14,8 +14,11 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'wi
+@@ -12,8 +12,11 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'wi
+     EXTRA_PP_JS_MODULES += ['WinSearchIntegration.js']
+     FINAL_LIBRARY = 'mailcomps'
  
  DIRS += ['public']
  
  EXTRA_PP_JS_MODULES += [
      'SearchIntegration.js',
  ]
- 
- JAR_MANIFESTS += ['jar.mn']
 +
 +if CONFIG['CC_TYPE'] == 'clang-cl':
-+    ALLOW_COMPILER_WARNINGS = True  # workaround for bug 1090497 / bug 1481326
++    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
 diff --git a/mail/components/search/wsenable/moz.build b/mail/components/search/wsenable/moz.build
 --- a/mail/components/search/wsenable/moz.build
 +++ b/mail/components/search/wsenable/moz.build
@@ -270,7 +270,7 @@ diff --git a/mail/components/search/wsenable/moz.build b/mail/components/search/
  DisableStlWrapping()
 +
 +if CONFIG['CC_TYPE'] == 'clang-cl':
-+    ALLOW_COMPILER_WARNINGS = True  # workaround for bug 1090497 / bug 1481326
++    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
 +
 diff --git a/mail/components/shell/moz.build b/mail/components/shell/moz.build
 --- a/mail/components/shell/moz.build
@@ -286,11 +286,11 @@ diff --git a/mail/components/shell/moz.build b/mail/components/shell/moz.build
  CXXFLAGS += CONFIG['TK_CFLAGS']
 +
 +if CONFIG['CC_TYPE'] == 'clang-cl':
-+    ALLOW_COMPILER_WARNINGS = True  # workaround for bug 1090497 / bug 1481326
++    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
 diff --git a/mail/components/shell/nsMailWinIntegration.cpp b/mail/components/shell/nsMailWinIntegration.cpp
 --- a/mail/components/shell/nsMailWinIntegration.cpp
 +++ b/mail/components/shell/nsMailWinIntegration.cpp
-@@ -101,24 +101,16 @@ static SETTING gNewsSettings[] = {
+@@ -97,24 +97,16 @@ static SETTING gNewsSettings[] = {
     // Protocol Handler Class - for Vista and above
    { MAKE_KEY_NAME1(CLS_NEWSURL, SOP), "", VAL_MAIL_OPEN, APP_PATH_SUBSTITUTION },
  
@@ -315,7 +315,7 @@ diff --git a/mail/components/shell/nsMailWinIntegration.cpp b/mail/components/sh
      do_GetService(NS_DIRECTORY_SERVICE_CONTRACTID, &rv);
    NS_ENSURE_SUCCESS(rv, rv);
  
-@@ -282,17 +274,16 @@ nsWindowsShellService::IsDefaultClient(b
+@@ -205,17 +197,16 @@ nsWindowsShellService::IsDefaultClient(b
      // indicate that this app is the default.
      if (*aIsDefaultClient)
        IsDefaultClientVista(nsIShellService::NEWS, aIsDefaultClient);
@@ -345,7 +345,7 @@ diff --git a/mailnews/addrbook/src/nsAbOutlookDirFactory.cpp b/mailnews/addrbook
  #include "nsAbBaseCID.h"
  #include "mozilla/Logging.h"
  
--static mozilla::LazyLogModule gAbOutlookDirFactoryLog("nsAbOutlookDirFactoryLog");
+-static mozilla::LazyLogModule gAbOutlookDirFactoryLog("AbOutlookDirFactory");
 -
 -#define PRINTF(args) MOZ_LOG(gAbOutlookDirFactoryLog, mozilla::LogLevel::Debug, args)
 -
@@ -379,7 +379,7 @@ diff --git a/mailnews/addrbook/src/nsAbOutlookDirFactory.cpp b/mailnews/addrbook
 diff --git a/mailnews/addrbook/src/nsAbOutlookDirectory.cpp b/mailnews/addrbook/src/nsAbOutlookDirectory.cpp
 --- a/mailnews/addrbook/src/nsAbOutlookDirectory.cpp
 +++ b/mailnews/addrbook/src/nsAbOutlookDirectory.cpp
-@@ -260,17 +260,17 @@ static nsresult ExtractCardEntry(nsIAbCa
+@@ -259,17 +259,17 @@ static nsresult ExtractCardEntry(nsIAbCa
  static nsresult ExtractDirectoryEntry(nsIAbDirectory *aDirectory, nsCString& aEntry)
  {
    aEntry.Truncate();
@@ -478,7 +478,7 @@ diff --git a/mailnews/addrbook/src/nsMapiAddressBook.cpp b/mailnews/addrbook/src
  #include "mozilla/Logging.h"
 +#include "mozilla/DebugOnly.h"
  
- static mozilla::LazyLogModule gMapiAddressBookLog("nsMapiAddressBookLog");
+ static mozilla::LazyLogModule gMapiAddressBookLog("MAPIAddressBook");
  
  #define PRINTF(args) MOZ_LOG(gMapiAddressBookLog, mozilla::LogLevel::Debug, args)
  
@@ -517,15 +517,15 @@ diff --git a/mailnews/addrbook/src/nsWabAddressBook.cpp b/mailnews/addrbook/src/
  #include "nsWabAddressBook.h"
  #include "mozilla/Logging.h"
 +#include "mozilla/DebugOnly.h"
- #include <algorithm>
  
- static mozilla::LazyLogModule gWabAddressBookLog("nsWabAddressBookLog");
+ using namespace mozilla;
  
- #define PRINTF(args) MOZ_LOG(gWabAddressBookLog, mozilla::LogLevel::Debug, args)
+ static LazyLogModule gWabAddressBookLog("WABAddressBook");
  
- using namespace mozilla;
+ #define PRINTF(args) MOZ_LOG(gWabAddressBookLog, mozilla::LogLevel::Debug, args)
  
-@@ -77,17 +78,17 @@ void nsWabAddressBook::FreeWabLibrary(vo
+ HMODULE nsWabAddressBook::mLibrary = NULL ;
+@@ -76,17 +77,17 @@ void nsWabAddressBook::FreeWabLibrary(vo
              mLibrary = NULL ;
          }
      }
@@ -558,7 +558,7 @@ diff --git a/mailnews/base/src/nsMessengerWinIntegration.cpp b/mailnews/base/src
  #include <shellapi.h>
  
  #include "nsMessengerWinIntegration.h"
-@@ -40,16 +40,17 @@
+@@ -41,16 +41,17 @@
  #include "nsISupportsPrimitives.h"
  #include "nsIInterfaceRequestorUtils.h"
  #include "nsIWeakReferenceUtils.h"
@@ -573,10 +573,10 @@ diff --git a/mailnews/base/src/nsMessengerWinIntegration.cpp b/mailnews/base/src
  
  #include "nsToolkitCompsCID.h"
  #include <stdlib.h>
- #define PROFILE_COMMANDLINE_ARG " -profile "
+ #define PROFILE_COMMANDLINE_ARG u" -profile "
  
  #define NOTIFICATIONCLASSNAME "MailBiffNotificationMessageWindow"
-@@ -255,17 +256,17 @@ nsMessengerWinIntegration::nsMessengerWi
+@@ -252,17 +253,17 @@ nsMessengerWinIntegration::nsMessengerWi
  nsMessengerWinIntegration::~nsMessengerWinIntegration()
  {
    if (mUnreadCountUpdateTimer) {
@@ -595,7 +595,7 @@ diff --git a/mailnews/base/src/nsMessengerWinIntegration.cpp b/mailnews/base/src
  NS_IMPL_RELEASE(nsMessengerWinIntegration)
  
  NS_INTERFACE_MAP_BEGIN(nsMessengerWinIntegration)
-@@ -294,17 +295,17 @@ NOTIFYICONDATAW sBiffIconData = { NOTIFY
+@@ -291,17 +292,17 @@ NOTIFYICONDATAW sBiffIconData = { (DWORD
                                    2,
                                    NIF_ICON | NIF_MESSAGE | NIF_TIP | NIF_INFO,
                                    WM_USER,
@@ -614,7 +614,7 @@ diff --git a/mailnews/base/src/nsMessengerWinIntegration.cpp b/mailnews/base/src
  static const uint32_t kMaxBalloonSize = sizeof(sBiffIconData.szInfo) /
                                          sizeof(sBiffIconData.szInfo[0]) - 1;
  static const uint32_t kMaxBalloonTitle = sizeof(sBiffIconData.szInfoTitle) /
-@@ -588,17 +589,17 @@ nsresult nsMessengerWinIntegration::Aler
+@@ -585,17 +586,17 @@ nsresult nsMessengerWinIntegration::Aler
  }
  
  #ifdef MOZ_SUITE
@@ -633,7 +633,7 @@ diff --git a/mailnews/base/src/nsMessengerWinIntegration.cpp b/mailnews/base/src
        return AlertFinished();
  
    if (strcmp(aTopic, "alertclickcallback") == 0)
-@@ -927,17 +928,17 @@ nsMessengerWinIntegration::OnItemIntProp
+@@ -924,17 +925,17 @@ nsMessengerWinIntegration::OnItemIntProp
  }
  
  void
@@ -652,7 +652,7 @@ diff --git a/mailnews/base/src/nsMessengerWinIntegration.cpp b/mailnews/base/src
  {
    // If Windows XP, open the registry and get rid of old account registry entries
    // If there is a email prefix, get it and use it to build the registry key.
-@@ -1014,19 +1015,19 @@ nsMessengerWinIntegration::UpdateRegistr
+@@ -1011,19 +1012,19 @@ nsMessengerWinIntegration::UpdateRegistr
      if (!mEmailPrefix.IsEmpty()) {
        pBuffer.Assign(mEmailPrefix);
        pBuffer.Append(NS_ConvertASCIItoUTF16(mEmail));
@@ -689,7 +689,8 @@ diff --git a/mailnews/base/src/nsMessengerWinIntegration.h b/mailnews/base/src/n
  #define __nsMessengerWinIntegration_h
  
  #include <windows.h>
-@@ -57,17 +57,16 @@ private:
+@@ -55,17 +55,16 @@ private:
+   void FillToolTipInfo();
    void GenericShellNotify(DWORD aMessage);
    void DestroyBiffIcon();
  
@@ -697,7 +698,6 @@ diff --git a/mailnews/base/src/nsMessengerWinIntegration.h b/mailnews/base/src/n
  
    nsresult GetStringBundle(nsIStringBundle **aBundle);
    nsCOMPtr<nsIMutableArray> mFoldersWithNewMail;  // keep track of all the root folders with pending new mail
-   nsCOMPtr<nsIAtom> mBiffStateAtom;
 -  uint32_t mCurrentBiffState;
  
    bool mBiffIconVisible;
@@ -710,39 +710,39 @@ diff --git a/mailnews/base/src/nsMessengerWinIntegration.h b/mailnews/base/src/n
 diff --git a/mailnews/base/src/nsMsgSearchDBView.cpp b/mailnews/base/src/nsMsgSearchDBView.cpp
 --- a/mailnews/base/src/nsMsgSearchDBView.cpp
 +++ b/mailnews/base/src/nsMsgSearchDBView.cpp
-@@ -262,17 +262,17 @@ nsMsgSearchDBView::OnHdrDeleted(nsIMsgDB
-    return NS_OK;
- }
- 
- NS_IMETHODIMP nsMsgSearchDBView::OnHdrFlagsChanged(nsIMsgDBHdr *aHdrChanged, uint32_t aOldFlags,
-                                       uint32_t aNewFlags, nsIDBChangeListener *aInstigator)
+@@ -282,17 +282,17 @@ nsMsgSearchDBView::OnHdrDeleted(nsIMsgDB
+ NS_IMETHODIMP
+ nsMsgSearchDBView::OnHdrFlagsChanged(nsIMsgDBHdr *aHdrChanged,
+                                      uint32_t aOldFlags,
+                                      uint32_t aNewFlags,
+                                      nsIDBChangeListener *aInstigator)
  {
-   // defer to base class if we're grouped or not threaded at all
+   // Defer to base class if we're grouped or not threaded at all.
    if (m_viewFlags & nsMsgViewFlagsType::kGroupBySort ||
 -      !(m_viewFlags && nsMsgViewFlagsType::kThreadedDisplay))
 +      !(m_viewFlags & nsMsgViewFlagsType::kThreadedDisplay))
-     return nsMsgGroupView::OnHdrFlagsChanged(aHdrChanged, aOldFlags, 
+   {
+     return nsMsgGroupView::OnHdrFlagsChanged(aHdrChanged, aOldFlags,
                                               aNewFlags, aInstigator);
+   }
  
    nsCOMPtr <nsIMsgThread> thread;
    bool foundMessageId;
-   // check if the hdr that changed is in a xf thread, and if the read flag
-   // changed, update the thread unread count. GetXFThreadFromMsgHdr returns
-   // the thread the header does or would belong to, so we need to also
+   // Check if the hdr that changed is in a xf thread, and if the read flag
 diff --git a/mailnews/compose/src/moz.build b/mailnews/compose/src/moz.build
 --- a/mailnews/compose/src/moz.build
 +++ b/mailnews/compose/src/moz.build
-@@ -48,8 +48,10 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'coco
+@@ -52,8 +52,10 @@ EXTRA_COMPONENTS += [
+ ]
  
- EXTRA_COMPONENTS += [
-     'nsSMTPProtocolHandler.js',
-     'nsSMTPProtocolHandler.manifest',
+ LOCAL_INCLUDES += [
+   '/%s/dom/base' % CONFIG['mozreltopsrcdir'],
  ]
  
  FINAL_LIBRARY = 'mail'
  
 +if CONFIG['CC_TYPE'] == 'clang-cl':
-+    ALLOW_COMPILER_WARNINGS = True  # workaround for bug 1090497 / bug 1481326
++    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
 diff --git a/mailnews/imap/src/nsImapUtils.cpp b/mailnews/imap/src/nsImapUtils.cpp
 --- a/mailnews/imap/src/nsImapUtils.cpp
 +++ b/mailnews/imap/src/nsImapUtils.cpp
@@ -863,28 +863,28 @@ diff --git a/mailnews/import/outlook/src/moz.build b/mailnews/import/outlook/src
  ]
  
 +if CONFIG['CC_TYPE'] == 'clang-cl':
-+    ALLOW_COMPILER_WARNINGS = True  # workaround for bug 1090497 / bug 1481326
++    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
 diff --git a/mailnews/import/outlook/src/nsOutlookCompose.cpp b/mailnews/import/outlook/src/nsOutlookCompose.cpp
 --- a/mailnews/import/outlook/src/nsOutlookCompose.cpp
 +++ b/mailnews/import/outlook/src/nsOutlookCompose.cpp
 @@ -40,17 +40,16 @@
  
  #include "nsAutoPtr.h"
+ #include "nsIThread.h"
+ #include "nsThreadUtils.h"
  
  #include "nsMsgMessageFlags.h"
  #include "nsMsgLocalFolderHdrs.h"
  
- #include <algorithm>
- 
 -static NS_DEFINE_CID(kMsgSendCID, NS_MSGSEND_CID);
  static NS_DEFINE_CID(kMsgCompFieldsCID, NS_MSGCOMPFIELDS_CID);
  
- // We need to do some calculations to set these numbers to something reasonable!
- // Unless of course, CreateAndSendMessage will NEVER EVER leave us in the lurch
- #define kHungCount 100000
- #define kHungAbortCount 1000
- 
  #ifdef IMPORT_DEBUG
+ static const char *p_test_headers =
+ "Received: from netppl.invalid (IDENT:monitor@get.freebsd.because.microsoftsucks.invalid [209.3.31.115])\n\
+  by mail4.sirius.invalid (8.9.1/8.9.1) with SMTP id PAA27232;\n\
+  Mon, 17 May 1999 15:27:43 -0700 (PDT)\n\
+ Message-ID: <ikGD3jRTsKklU.Ggm2HmE2A1Jsqd0p@netppl.invalid>\n\
 diff --git a/mailnews/import/outlook/src/nsOutlookMail.cpp b/mailnews/import/outlook/src/nsOutlookMail.cpp
 --- a/mailnews/import/outlook/src/nsOutlookMail.cpp
 +++ b/mailnews/import/outlook/src/nsOutlookMail.cpp
@@ -901,7 +901,7 @@ diff --git a/mailnews/import/outlook/src/nsOutlookMail.cpp b/mailnews/import/out
 +#include "nsAbBaseCID.h"
  #include "nsIAbCard.h"
  #include "mdb.h"
- #include "OutlookDebugLog.h"
+ #include "ImportDebug.h"
  #include "nsOutlookMail.h"
  #include "nsUnicharUtils.h"
  #include "nsIInputStream.h"
@@ -910,7 +910,7 @@ diff --git a/mailnews/import/outlook/src/nsOutlookMail.cpp b/mailnews/import/out
 diff --git a/mailnews/import/winlivemail/moz.build b/mailnews/import/winlivemail/moz.build
 --- a/mailnews/import/winlivemail/moz.build
 +++ b/mailnews/import/winlivemail/moz.build
-@@ -7,8 +7,11 @@ SOURCES += [
+@@ -7,8 +7,10 @@ SOURCES += [
      'nsWMImport.cpp',
      'nsWMSettings.cpp',
      'nsWMStringBundle.cpp',
@@ -920,12 +920,11 @@ diff --git a/mailnews/import/winlivemail/moz.build b/mailnews/import/winlivemail
  FINAL_LIBRARY = 'import'
  
 +if CONFIG['CC_TYPE'] == 'clang-cl':
-+    ALLOW_COMPILER_WARNINGS = True  # workaround for bug 1090497 / bug 1481326
-+
++    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
 diff --git a/mailnews/import/winlivemail/nsWMImport.cpp b/mailnews/import/winlivemail/nsWMImport.cpp
 --- a/mailnews/import/winlivemail/nsWMImport.cpp
 +++ b/mailnews/import/winlivemail/nsWMImport.cpp
-@@ -68,17 +68,16 @@ public:
+@@ -66,17 +66,16 @@ public:
  public:
    static void ReportSuccess(nsString& name, int32_t count, nsString *pStream);
    static void ReportError(int32_t errorNum, nsString& name, nsString *pStream);
@@ -946,8 +945,7 @@ diff --git a/mailnews/import/winlivemail/nsWMImport.cpp b/mailnews/import/winliv
 diff --git a/mailnews/mapi/mapiDll/moz.build b/mailnews/mapi/mapiDll/moz.build
 --- a/mailnews/mapi/mapiDll/moz.build
 +++ b/mailnews/mapi/mapiDll/moz.build
-@@ -13,9 +13,12 @@ SOURCES += [
- 
+@@ -15,8 +15,11 @@ SOURCES += [
  OS_LIBS += [
      'ole32',
  ]
@@ -955,15 +953,14 @@ diff --git a/mailnews/mapi/mapiDll/moz.build b/mailnews/mapi/mapiDll/moz.build
  DEFINES['UNICODE'] = True
  DEFINES['_UNICODE'] = True
  
--DEFFILE	= SRCDIR + '/Mapi32.def'
-+DEFFILE = SRCDIR + '/Mapi32.def'
+ DEFFILE = SRCDIR + '/Mapi32.def'
 +
 +if CONFIG['CC_TYPE'] == 'clang-cl':
-+    ALLOW_COMPILER_WARNINGS = True  # workaround for bug 1090497 / bug 1481326
++    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
 diff --git a/mailnews/mapi/mapihook/build/moz.build b/mailnews/mapi/mapihook/build/moz.build
 --- a/mailnews/mapi/mapihook/build/moz.build
 +++ b/mailnews/mapi/mapihook/build/moz.build
-@@ -12,8 +12,18 @@ OS_LIBS += [
+@@ -12,8 +12,10 @@ OS_LIBS += [
  for var in ('REGISTER_PROXY_DLL', 'UNICODE', '_UNICODE'):
      DEFINES[var] = True
  
@@ -972,16 +969,8 @@ diff --git a/mailnews/mapi/mapihook/build/moz.build b/mailnews/mapi/mapihook/bui
  
  DEFFILE = SRCDIR + '/MapiProxy.def'
  
-+# The Windows MIDL code generator creates things like:
-+#
-+#   #endif !_MIDL_USE_GUIDDEF_
-+#
-+# which clang-cl complains about.  MSVC doesn't, so turn this warning off.
-+if CONFIG['CC_TYPE'] == 'clang-cl':
-+    CFLAGS += ['-Wno-extra-tokens']
-+
 +if CONFIG['CC_TYPE'] == 'clang-cl':
-+    ALLOW_COMPILER_WARNINGS = True  # workaround for bug 1090497 / bug 1481326
++    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
 diff --git a/mailnews/mapi/mapihook/src/moz.build b/mailnews/mapi/mapihook/src/moz.build
 --- a/mailnews/mapi/mapihook/src/moz.build
 +++ b/mailnews/mapi/mapihook/src/moz.build
@@ -996,56 +985,4 @@ diff --git a/mailnews/mapi/mapihook/src/moz.build b/mailnews/mapi/mapihook/src/m
  DEFINES['_UNICODE'] = True
 +
 +if CONFIG['CC_TYPE'] == 'clang-cl':
-+    ALLOW_COMPILER_WARNINGS = True  # workaround for bug 1090497 / bug 1481326
-diff --git a/mailnews/mapi/mapihook/src/msgMapiMain.cpp b/mailnews/mapi/mapihook/src/msgMapiMain.cpp
---- a/mailnews/mapi/mapihook/src/msgMapiMain.cpp
-+++ b/mailnews/mapi/mapihook/src/msgMapiMain.cpp
-@@ -260,19 +260,17 @@ HRESULT nsMAPIConfiguration::GetMAPIErro
- 
-   return hr;
- }
- 
- 
- nsMAPISession::nsMAPISession(uint32_t aHwnd, const char16_t *aUserName,
-                              const char16_t *aPassword,
-                              bool aForceDownLoad, const char *aKey)
--: m_bIsForcedDownLoad(aForceDownLoad),
--  m_hAppHandle(aHwnd),
--  m_nShared(1),
-+: m_nShared(1),
-   m_pIdKey(aKey)
- {
-   m_listContext = NULL;
-   m_pProfileName.Assign(aUserName);
-   m_pPassword.Assign(aPassword);
- }
- 
- nsMAPISession::~nsMAPISession()
-diff --git a/mailnews/mapi/mapihook/src/msgMapiMain.h b/mailnews/mapi/mapihook/src/msgMapiMain.h
---- a/mailnews/mapi/mapihook/src/msgMapiMain.h
-+++ b/mailnews/mapi/mapihook/src/msgMapiMain.h
-@@ -53,24 +53,20 @@ public :
-   static HRESULT GetMAPIErrorFromNSError (nsresult res) ;
- };
- 
- class nsMAPISession
- {
-   friend class nsMAPIConfiguration;
- 
-   private :
--    bool     m_bIsForcedDownLoad;
--    bool     m_bApp_or_Service;
--    uint32_t m_hAppHandle;
-     uint32_t m_nShared;
-     nsCString m_pIdKey;
-     nsString m_pProfileName;
-     nsString m_pPassword;
--    int32_t m_messageIndex;
-     void   *m_listContext; // used by findNext
- 
-   public :
-     nsMAPISession(uint32_t aHwnd, const char16_t *aUserName, \
-                   const char16_t *aPassword, \
-                   bool aForceDownLoad, const char *aKey);
-     uint32_t IncrementSession();
-     uint32_t DecrementSession();
++    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326

+ 2 - 2
comm-esr60/comm-esr60/patches/1481326-2-63a1.patch

@@ -2,13 +2,13 @@
 # User Jorg K <jorgk@jorgk.com>
 # Date 1533630944 -7200
 # Node ID f67c130b8d329df8c79c9ca35b5f2ae3822a9776
-# Parent  18d5bf78cfa3ad0735104af1afc31d1d36d4c703
+# Parent  5f5ecedf2e3ec4464ad3ccd4214414aad3b8e648
 Bug 1481326 - Follow-up: Remove another unused variable. rs=bustage-fix DONTBUILD
 
 diff --git a/mailnews/mapi/mapihook/src/msgMapiImp.cpp b/mailnews/mapi/mapihook/src/msgMapiImp.cpp
 --- a/mailnews/mapi/mapihook/src/msgMapiImp.cpp
 +++ b/mailnews/mapi/mapihook/src/msgMapiImp.cpp
-@@ -608,17 +608,17 @@ lpnsMapiMessage MsgMapiListContext::GetM
+@@ -610,17 +610,17 @@ lpnsMapiMessage MsgMapiListContext::GetM
    lpnsMapiMessage message = (lpnsMapiMessage) CoTaskMemAlloc (sizeof(nsMapiMessage));
    memset(message, 0, sizeof(nsMapiMessage));
    if (message)

+ 14 - 123
comm-esr60/comm-esr60/patches/1481417-5-63a1.patch

@@ -2,79 +2,13 @@
 # User aceman <acelists@atlas.sk>
 # Date 1533706697 -7200
 # Node ID 16dc2cb0e5356bb9347bbb638dbb929dbfe8ece0
-# Parent  aaeb59d01496a1fbbf22ac581f74b7be1361ab47
-Bug 1481417 - Part 5: Fix warnings and remove ALLOW_COMPILER_WARNINGS = True or replace it with something more specific in mailnews/mapi. r=jorgk
+# Parent  cb739b4c420031dae7d7ec0d9b100c959023410e
+Bug 1481417 - Part 5: Fix warnings and remove AllowCompilerWarnings() or replace it with something more specific in mailnews/mapi. r=jorgk
 
-diff --git a/mailnews/mapi/mapiDll/MapiDll.cpp b/mailnews/mapi/mapiDll/MapiDll.cpp
---- a/mailnews/mapi/mapiDll/MapiDll.cpp
-+++ b/mailnews/mapi/mapiDll/MapiDll.cpp
-@@ -192,17 +192,17 @@ ULONG FAR PASCAL MAPISendMail (LHANDLE l
-     if (lpMessage->nFileCount > MAX_FILES)
-         return MAPI_E_TOO_MANY_FILES ;
- 
-     if ( (!(flFlags & MAPI_DIALOG)) && (lpMessage->lpRecips == NULL) )
-         return MAPI_E_UNKNOWN_RECIPIENT ;
- 
-     if (!lhSession || pNsMapi->IsValidSession(lhSession) != S_OK)
-     {
--        FLAGS LoginFlag ;
-+        FLAGS LoginFlag = 0;
-         if ( (flFlags & MAPI_LOGON_UI) && (flFlags & MAPI_NEW_SESSION) )
-             LoginFlag = MAPI_LOGON_UI | MAPI_NEW_SESSION ;
-         else if (flFlags & MAPI_LOGON_UI)
-             LoginFlag = MAPI_LOGON_UI ;
- 
-         hr = MAPILogon (ulUIParam, (LPTSTR) NULL, (LPTSTR) NULL, LoginFlag, 0, &lhSession) ;
-         if (hr != SUCCESS_SUCCESS)
-             return MAPI_E_LOGIN_FAILURE ;
-@@ -286,37 +286,32 @@ ULONG FAR PASCAL MAPISendDocuments(ULONG
-     hr = pNsMapi->SendDocuments(lhSession, (LPTSTR) lpszDelimChar, (LPTSTR) lpszFilePaths,
-                                     (LPTSTR) lpszFileNames, ulReserved) ;
- 
-     MAPILogoff (lhSession, ulUIParam, 0,0) ;
- 
-     return hr ;
- }
- 
--ULONG FAR PASCAL MAPIFindNext(LHANDLE lhSession, ULONG ulUIParam, LPTSTR lpszMessageType,
--                              LPTSTR lpszSeedMessageID, FLAGS flFlags, ULONG ulReserved,
-+ULONG FAR PASCAL MAPIFindNext(LHANDLE lhSession, ULONG ulUIParam, const LPTSTR lpszMessageType,
-+                              const LPTSTR lpszSeedMessageID, FLAGS flFlags, ULONG ulReserved,
-                               unsigned char lpszMessageID[64])
- {
-   nsIMapi *pNsMapi = NULL;
- 
-   if (!InitMozillaReference(&pNsMapi))
-     return MAPI_E_FAILURE;
- 
-   if (lhSession == 0)
-     return MAPI_E_INVALID_SESSION;
- 
--  if (!lpszMessageType)
--    lpszMessageType = L"";
--
--  if (!lpszSeedMessageID)
--    lpszSeedMessageID = L"";
--
--  return pNsMapi->FindNext(lhSession, ulUIParam, lpszMessageType,
--                              lpszSeedMessageID, flFlags, ulReserved,
--                              lpszMessageID) ;
-+  const LPTSTR type = lpszMessageType ? lpszMessageType : (const LPTSTR)(L"");
-+  const LPTSTR id = lpszSeedMessageID ? lpszSeedMessageID : (const LPTSTR)(L"");
-+  return pNsMapi->FindNext(lhSession, ulUIParam, type, id,
-+                           flFlags, ulReserved, lpszMessageID);
- }
- 
- 
- ULONG FAR PASCAL MAPIReadMail(LHANDLE lhSession, ULONG ulUIParam, LPTSTR lpszMessageID,
-                               FLAGS flFlags, ULONG ulReserved, nsMapiMessage **lppMessage)
- {
-   nsIMapi *pNsMapi = NULL;
- 
 diff --git a/mailnews/mapi/mapiDll/moz.build b/mailnews/mapi/mapiDll/moz.build
 --- a/mailnews/mapi/mapiDll/moz.build
 +++ b/mailnews/mapi/mapiDll/moz.build
-@@ -14,11 +14,8 @@ SOURCES += [
+@@ -15,11 +15,8 @@ SOURCES += [
  OS_LIBS += [
      'ole32',
  ]
@@ -85,47 +19,23 @@ diff --git a/mailnews/mapi/mapiDll/moz.build b/mailnews/mapi/mapiDll/moz.build
  DEFFILE = SRCDIR + '/Mapi32.def'
 -
 -if CONFIG['CC_TYPE'] == 'clang-cl':
--    ALLOW_COMPILER_WARNINGS = True  # workaround for bug 1090497 / bug 1481326
+-    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
 diff --git a/mailnews/mapi/mapihook/build/moz.build b/mailnews/mapi/mapihook/build/moz.build
 --- a/mailnews/mapi/mapihook/build/moz.build
 +++ b/mailnews/mapi/mapihook/build/moz.build
-@@ -20,10 +20,11 @@ DEFFILE = SRCDIR + '/MapiProxy.def'
- # The Windows MIDL code generator creates things like:
- #
- #   #endif !_MIDL_USE_GUIDDEF_
- #
- # which clang-cl complains about.  MSVC doesn't, so turn this warning off.
- if CONFIG['CC_TYPE'] == 'clang-cl':
-     CFLAGS += ['-Wno-extra-tokens']
+@@ -12,10 +12,11 @@ OS_LIBS += [
+ for var in ('REGISTER_PROXY_DLL', 'UNICODE', '_UNICODE'):
+     DEFINES[var] = True
+ 
+ # This produces a compile warning mozilla-config.h(145): warning C4005: '_WIN32_WINNT': macro redefinition
+ #DEFINES['_WIN32_WINNT'] = '0x400'
+ 
+ DEFFILE = SRCDIR + '/MapiProxy.def'
  
 +# clang-cl complains about these in generated code:
  if CONFIG['CC_TYPE'] == 'clang-cl':
--    ALLOW_COMPILER_WARNINGS = True  # workaround for bug 1090497 / bug 1481326
+-    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
 +    CFLAGS += ['-Wno-error=extern-initializer','-Wno-error=missing-braces','-Wno-error=unused-const-variable']
-diff --git a/mailnews/mapi/mapihook/build/msgMapi.idl b/mailnews/mapi/mapihook/build/msgMapi.idl
---- a/mailnews/mapi/mapihook/build/msgMapi.idl
-+++ b/mailnews/mapi/mapihook/build/msgMapi.idl
-@@ -101,18 +101,18 @@ interface nsIMapi : IUnknown
- 
-     HRESULT SendMail([in] unsigned long aSession, [in, unique] lpnsMapiMessage aMessage,
-                      [in] unsigned long aFlags, [in] unsigned long aReserved) ;
- 
-     HRESULT SendDocuments([in] unsigned long aSession,
-                           [in, unique] LPTSTR aDelimChar, [in, unique] LPTSTR aFilePaths,
-                           [in, unique] LPTSTR aFileNames, [in] ULONG aFlags ) ;
- 
--    HRESULT FindNext([in] unsigned long aSession, [in] ULONG ulUIParam, [in, unique] LPTSTR lpszMessageType,
--                     [in, unique] LPTSTR lpszSeedMessageID, [in] ULONG flFlags, [in] ULONG ulReserved,
-+    HRESULT FindNext([in] unsigned long aSession, [in] ULONG ulUIParam, [in, unique] const LPTSTR lpszMessageType,
-+                     [in, unique] const LPTSTR lpszSeedMessageID, [in] ULONG flFlags, [in] ULONG ulReserved,
-                      [in] [out] char lpszMessageID[64] ) ;
- 
-     HRESULT ReadMail([in] unsigned long lhSession, [in] ULONG ulUIParam, [in, unique] LPTSTR lpszMessageID,
-                      [in] ULONG flFlags, [in] ULONG ulReserved, [out] lpnsMapiMessage *lppMessage);
- 
-     HRESULT DeleteMail([in] unsigned long lhSession, [in] ULONG ulUIParam, [in, unique] LPTSTR lpszMessageID,
-                        [in] ULONG flFlags, [in] ULONG ulReserved);
- 
 diff --git a/mailnews/mapi/mapihook/src/moz.build b/mailnews/mapi/mapihook/src/moz.build
 --- a/mailnews/mapi/mapihook/src/moz.build
 +++ b/mailnews/mapi/mapihook/src/moz.build
@@ -140,7 +50,7 @@ diff --git a/mailnews/mapi/mapihook/src/moz.build b/mailnews/mapi/mapihook/src/m
  
 +# clang-cl rightly complains about switch on nsresult.
  if CONFIG['CC_TYPE'] == 'clang-cl':
--    ALLOW_COMPILER_WARNINGS = True  # workaround for bug 1090497 / bug 1481326
+-    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
 +    CXXFLAGS += ['-Wno-error=switch']
 diff --git a/mailnews/mapi/mapihook/src/msgMapiFactory.h b/mailnews/mapi/mapihook/src/msgMapiFactory.h
 --- a/mailnews/mapi/mapihook/src/msgMapiFactory.h
@@ -201,25 +111,6 @@ diff --git a/mailnews/mapi/mapihook/src/msgMapiMain.h b/mailnews/mapi/mapihook/s
  
  #define MAPI_PROPERTIES_CHROME "chrome://messenger-mapi/locale/mapi.properties"
  #define PREF_MAPI_WARN_PRIOR_TO_BLIND_SEND "mapi.blind-send.warn"
-@@ -66,17 +66,17 @@ class nsMAPISession
- 
-   public :
-     nsMAPISession(uint32_t aHwnd, const char16_t *aUserName, \
-                   const char16_t *aPassword, \
-                   bool aForceDownLoad, const char *aKey);
-     uint32_t IncrementSession();
-     uint32_t DecrementSession();
-     uint32_t GetSessionCount();
--    char16_t *nsMAPISession::GetPassword();
-+    char16_t *GetPassword();
-     void GetIdKey(nsCString& aKey);
-     ~nsMAPISession();
-     // For enumerating Messages...
-     void SetMapiListContext( void *listContext) { m_listContext = listContext; }
-     void *GetMapiListContext( ) { return m_listContext; }
- };
- 
- #endif    // MSG_MAPI_MAIN_H_
 diff --git a/mailnews/mapi/mapihook/src/msgMapiSupport.h b/mailnews/mapi/mapihook/src/msgMapiSupport.h
 --- a/mailnews/mapi/mapihook/src/msgMapiSupport.h
 +++ b/mailnews/mapi/mapihook/src/msgMapiSupport.h

+ 1 - 1
comm-esr60/comm-esr60/patches/1512557-65a1.patch

@@ -2,7 +2,7 @@
 # User Geoff Lankow <geoff@darktrojan.net>
 # Date 1544147900 -46800
 # Node ID 21219ad63ec84a637511fb8b76ddf34a874d51ca
-# Parent  480e2b49c2e91aa750d5ff781e7845f028ef2047
+# Parent  c6dd8c291d4f3aee4ed4df9b77adb7bef9e34733
 Bug 1512557 - Convert nsIStringBundle pointers to nsCOMPtrs and release them when shutting down. r=jorgk DONTBUILD
 
 diff --git a/mailnews/intl/nsCharsetConverterManager.cpp b/mailnews/intl/nsCharsetConverterManager.cpp

+ 0 - 112
comm-esr60/comm-esr60/patches/1522761-cxx-mail-257.patch

@@ -1,112 +0,0 @@
-# HG changeset patch
-# User Frank-Rainer Grahl <frgrahl@gmx.net>
-# Parent  f59489211666a060c99da0189c1850b1c4ef2d00
-Bug 1522761 - Use CC_TYPE in c-c build files. mail mailnews part.
-Ports:
-Bug 1031352 [move most of the _MSC_VER references in Makefile.in to moz.build].
-Bug 1394734 [Replace CONFIG['CLANG_CXX'], CONFIG['GNU_CXX'] by CONFIG['CC_TYPE']].
-
-diff --git a/mail/app/moz.build b/mail/app/moz.build
---- a/mail/app/moz.build
-+++ b/mail/app/moz.build
-@@ -36,30 +36,30 @@ if CONFIG['MOZ_SANDBOX'] and CONFIG['OS_
-         'sandbox_s',
-     ]
- 
-     DELAYLOAD_DLLS += [
-         'winmm.dll',
-         'user32.dll',
-     ]
- 
--if CONFIG['_MSC_VER']:
-+if CONFIG['CC_TYPE'] in ('msvc', 'clang-cl'):
-     # Always enter a Windows program through wmain, whether or not we're
-     # a console application.
-     WIN32_EXE_LDFLAGS += ['-ENTRY:wmainCRTStartup']
- 
- # Control the default heap size.
- # This is the heap returned by GetProcessHeap().
- # As we use the CRT heap, the default size is too large and wastes VM.
- #
- # The default heap size is 1MB on Win32.
- # The heap will grow if need be.
- #
- # Set it to 256k.  See bug 127069.
--if CONFIG['OS_ARCH'] == 'WINNT' and not CONFIG['GNU_CC']:
-+if CONFIG['OS_ARCH'] == 'WINNT' and CONFIG['CC_TYPE'] not in ('clang', 'gcc'):
-     LDFLAGS += ['/HEAP:0x40000']
- 
- DisableStlWrapping()
- 
- if CONFIG['MOZ_LINKER']:
-     OS_LIBS += CONFIG['MOZ_ZLIB_LIBS']
- 
- if CONFIG['HAVE_CLOCK_MONOTONIC']:
-diff --git a/mail/installer/Makefile.in b/mail/installer/Makefile.in
---- a/mail/installer/Makefile.in
-+++ b/mail/installer/Makefile.in
-@@ -44,20 +44,16 @@ endif
- 
- ifneq (,$(filter gtk%,$(MOZ_WIDGET_TOOLKIT)))
- DEFINES += -DMOZ_GTK=1
- ifeq ($(MOZ_WIDGET_TOOLKIT),gtk3)
- DEFINES += -DMOZ_GTK3=1
- endif
- endif
- 
--ifdef _MSC_VER
--DEFINES += -D_MSC_VER=$(_MSC_VER)
--endif
--
- ifdef MOZ_SYSTEM_NSPR
- DEFINES += -DMOZ_SYSTEM_NSPR=1
- endif
- 
- ifdef MOZ_SYSTEM_NSS
- DEFINES += -DMOZ_SYSTEM_NSS=1
- endif
- 
-diff --git a/mailnews/import/build/moz.build b/mailnews/import/build/moz.build
---- a/mailnews/import/build/moz.build
-+++ b/mailnews/import/build/moz.build
-@@ -31,17 +31,17 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'coco
-         '../applemail/src',
-     ]
-     OS_LIBS += CONFIG['TK_LIBS']
-     OS_LIBS += ['-framework Cocoa']
- 
- if CONFIG['OS_ARCH'] == 'WINNT':
-     LOCAL_INCLUDES += [
-     ]
--    if not CONFIG['GNU_CC']:
-+    if CONFIG['CC_TYPE'] in ('msvc', 'clang-cl'):
-         LOCAL_INCLUDES += [
-             '../becky/src',
-             '../outlook/src',
-             '../winlivemail',
-         ]
-     if CONFIG['MOZ_MAPI_SUPPORT']:
-         LOCAL_INCLUDES += [
-             '../outlook/src',
-diff --git a/mailnews/moz.build b/mailnews/moz.build
---- a/mailnews/moz.build
-+++ b/mailnews/moz.build
-@@ -30,17 +30,17 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'coco
-     ]
- 
- if CONFIG['OS_ARCH'] == 'WINNT':
-     DIRS += [ 'import/becky/src' ]
- 
-     if CONFIG['MOZ_MAPI_SUPPORT']:
-         DIRS += ['import/outlook/src']
- 
--    if not CONFIG['GNU_CC']:
-+    if CONFIG['CC_TYPE'] in ('msvc', 'clang-cl'):
-         DIRS += [
-             'import/winlivemail',
-         ]
- 
- TEST_DIRS += [
-     'imap/test',
-     'import/test',
-     'local/test',

+ 0 - 130
comm-esr60/comm-esr60/patches/1523762-cxx-suite-257.patch

@@ -1,130 +0,0 @@
-# HG changeset patch
-# User Frank-Rainer Grahl <frgrahl@gmx.net>
-# Parent  e3bea09a29c0cd6501d033da87fa30e8398d6029
-Bug 1523762 - Fix usage of CC_TYPE in SeaMonkey build files.
-Ports:
-Bug 1333003 part 8 [Include ASan runtime dll and LLVM symbolizer in jsshell package].
-Bug 1031352 [move most of the _MSC_VER references in Makefile.in to moz.build].
-Bug 1394734 [Replace CONFIG['CLANG_CXX'], CONFIG['GNU_CXX'] by CONFIG['CC_TYPE']].
-
-diff --git a/suite/app/moz.build b/suite/app/moz.build
---- a/suite/app/moz.build
-+++ b/suite/app/moz.build
-@@ -18,17 +18,17 @@ if CONFIG['OS_ARCH'] == 'WINNT':
-     DEFINES['MOZ_SUITE'] = True
- 
- if CONFIG['LIBFUZZER']:
-     USE_LIBS += [ 'fuzzer' ]
-     LOCAL_INCLUDES += [
-         '/mozilla//tools/fuzzing/libfuzzer',
-     ]
- 
--if CONFIG['_MSC_VER']:
-+if CONFIG['CC_TYPE'] in ('msvc', 'clang-cl'):
-     # Always enter a Windows program through wmain, whether or not we're
-     # a console application.
-     WIN32_EXE_LDFLAGS += ['-ENTRY:wmainCRTStartup']
- 
- if CONFIG['MOZ_SANDBOX'] and CONFIG['OS_ARCH'] == 'WINNT':
-     # For sandbox includes and the include dependencies those have
-     LOCAL_INCLUDES += [
-         '/mozilla/security/sandbox/chromium',
-@@ -47,17 +47,17 @@ if CONFIG['MOZ_SANDBOX'] and CONFIG['OS_
- # Control the default heap size.
- # This is the heap returned by GetProcessHeap().
- # As we use the CRT heap, the default size is too large and wastes VM.
- #
- # The default heap size is 1MB on Win32.
- # The heap will grow if need be.
- #
- # Set it to 256k.  See bug 127069.
--if CONFIG['OS_ARCH'] == 'WINNT' and not CONFIG['GNU_CC']:
-+if CONFIG['OS_ARCH'] == 'WINNT' and CONFIG['CC_TYPE'] not in ('clang', 'gcc'):
-     LDFLAGS += ['/HEAP:0x40000']
- 
- if CONFIG['MOZ_LINKER']:
-     OS_LIBS += CONFIG['MOZ_ZLIB_LIBS']
- 
- if CONFIG['MOZ_LINUX_32_SSE2_STARTUP_ERROR']:
-     DEFINES['MOZ_LINUX_32_SSE2_STARTUP_ERROR'] = True
- 
-diff --git a/suite/installer/Makefile.in b/suite/installer/Makefile.in
---- a/suite/installer/Makefile.in
-+++ b/suite/installer/Makefile.in
-@@ -75,20 +75,16 @@ endif
- ifdef MOZ_DOMINSPECTOR
- DEFINES += -DMOZ_DOMINSPECTOR=1
- endif
- 
- ifdef NSS_DISABLE_DBM
- DEFINES += -DNSS_DISABLE_DBM=1
- endif
- 
--ifdef _MSC_VER
--DEFINES += -D_MSC_VER=$(_MSC_VER)
--endif
--
- ifdef MOZ_UPDATER
- DEFINES += -DMOZ_UPDATER=1
- endif
- ifdef MOZ_SYSTEM_NSPR
- DEFINES += -DMOZ_SYSTEM_NSPR=1
- endif
- 
- ifdef MOZ_SYSTEM_NSS
-@@ -199,16 +195,23 @@ DEFINES += -DMOZ_ICU_DBG_SUFFIX=$(MOZ_IC
- DEFINES += -DICU_DATA_FILE=$(ICU_DATA_FILE)
- ifdef CLANG_CXX
- DEFINES += -DCLANG_CXX
- endif
- ifdef CLANG_CL
- DEFINES += -DCLANG_CL
- endif
- 
-+ifdef LLVM_SYMBOLIZER
-+DEFINES += -DLLVM_SYMBOLIZER=$(notdir $(LLVM_SYMBOLIZER))
-+endif
-+ifdef MOZ_CLANG_RT_ASAN_LIB_PATH
-+DEFINES += -DMOZ_CLANG_RT_ASAN_LIB=$(notdir $(MOZ_CLANG_RT_ASAN_LIB_PATH))
-+endif
-+
- ifeq ($(MOZ_PACKAGER_FORMAT),omni)
- DEFINES += -DMOZ_OMNIJAR=1
- endif
- 
- libs::
- 	$(MAKE) -C $(DEPTH)/suite/locales langpack
- 
- ifeq (WINNT,$(OS_ARCH))
-diff --git a/suite/installer/package-manifest.in b/suite/installer/package-manifest.in
---- a/suite/installer/package-manifest.in
-+++ b/suite/installer/package-manifest.in
-@@ -881,24 +881,22 @@ bin/libfreebl_32int64_3.so
- @RESPATH@/components/glautocomp.js
- @RESPATH@/components/jsmimeemitter.js
- @RESPATH@/components/gloda.manifest
- 
- ; New message notification
- @RESPATH@/components/newMailNotificationService.js
- 
- ; Address Sanitizer
--#if defined(CLANG_CXX)
--#if defined(MOZ_ASAN) || defined(MOZ_TSAN)
--@BINPATH@/llvm-symbolizer
--#endif
-+#ifdef LLVM_SYMBOLIZER
-+@BINPATH@/@LLVM_SYMBOLIZER@
- #endif
- 
--#if defined(MOZ_ASAN) && defined(CLANG_CL)
--@BINPATH@/clang_rt.asan_dynamic-*.dll
-+#ifdef MOZ_CLANG_RT_ASAN_LIB
-+@BINPATH@/@MOZ_CLANG_RT_ASAN_LIB@
- #endif
- 
- [chatzilla]
- #ifdef MOZ_IRC
- #ifdef MOZ_OMNIJAR
- @RESPATH@/distribution/extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}.xpi
- #else
- @RESPATH@/extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/chatzilla@JAREXT@

+ 0 - 86
comm-esr60/comm-esr60/patches/1524032-67a1.patch

@@ -1,86 +0,0 @@
-# HG changeset patch
-# User Ricardo Palomares <rpmdisguise-nave@yahoo.es>
-# Parent  8450d285ebaadf05deeeb93f872cfb5f82847cc5
-Bug 1524032 - Update SeaMonkey about:right for SeaMonkey e.V. r=IanN a=IanN
-
-diff --git a/suite/branding/nightly/content/aboutRights.xhtml b/suite/branding/nightly/content/aboutRights.xhtml
---- a/suite/branding/nightly/content/aboutRights.xhtml
-+++ b/suite/branding/nightly/content/aboutRights.xhtml
-@@ -34,17 +34,17 @@
- <p>&rights.intro;</p>
- 
- <ul>
-   <li>&rights.intro-point1a;<a href="http://www.mozilla.org/MPL/">&rights.intro-point1b;</a>&rights.intro-point1c;</li>
- <!-- Point 2 discusses Mozilla trademarks, and isn't needed when the build is unbranded.
-    - Point 2d discusses opt-in feedback mechanisms like the Crash Reporter
-    - Point 3 discusses privacy policy, unbranded builds get a placeholder (for the vendor to replace)
-    - Point 4 discusses web service terms, unbranded builds gets a placeholder (for the vendor to replace) -->
--  <li>&rights.intro-point2a;<a href="http://www.mozilla.org/foundation/trademarks/policy.html">&rights.intro-point2b;</a>&rights.intro-point2c;</li>
-+  <li>&rights.intro-point2a;<a href="https://www.seamonkey-project.org/legal/trademark">&rights.intro-point2b;</a>&rights.intro-point2c;</li>
-   <li>&rights.intro-point2d;</li>
-   <li>&rights.intro-point3a;<a href="http://www.seamonkey-project.org/legal/privacy">&rights.intro-point3b;</a>&rights.intro-point3c;</li>
-   <li>&rights2.intro-point4a;<a href="about:rights#webservices" id="link-webservices">&rights.intro-point4b;</a>&rights.intro-point4c;</li>
- </ul>
- 
- <div id="webservices-container" hidden="true">
-   <a name="webservices"/>
-   <h3>&rights.webservices-header;</h3>
-diff --git a/suite/locales/en-US/chrome/branding/aboutRights.dtd b/suite/locales/en-US/chrome/branding/aboutRights.dtd
---- a/suite/locales/en-US/chrome/branding/aboutRights.dtd
-+++ b/suite/locales/en-US/chrome/branding/aboutRights.dtd
-@@ -15,22 +15,22 @@
-      chunk, it can be left blank.
- 
-      Also note the leading/trailing whitespace in strings here, which is
-      deliberate for formatting around the embedded links. -->
- <!ENTITY rights.intro-point1a "&brandShortName; is made available to you under the terms of the ">
- <!ENTITY rights.intro-point1b "Mozilla Public License">
- <!ENTITY rights.intro-point1c ". This means you may use, copy and distribute &brandShortName; to others.  You are also welcome to modify the source code of &brandShortName; as you want to meet your needs. The Mozilla Public License also gives you the right to distribute your modified versions.">
- 
--<!ENTITY rights.intro-point2a "Mozilla does not grant you any rights to the Mozilla and SeaMonkey trademarks or logos. Additional information on Trademarks may be found ">
-+<!ENTITY rights.intro-point2a "SeaMonkey e.V does not grant you any rights to the SeaMonkey trademarks or logos. Additional information on Trademarks may be found ">
- <!ENTITY rights.intro-point2b "here">
- <!ENTITY rights.intro-point2c ".">
- 
- <!-- point 2d is technically point 3. in the list -->
--<!ENTITY rights.intro-point2d "Some features in &brandShortName;, such as the Crash Reporter, give you the option to provide feedback to &vendorShortName;. By choosing to submit feedback, you give &vendorShortName; and Mozilla permission to use the feedback to improve their applications, to publish the feedback on their websites, and to distribute the feedback.">
-+<!ENTITY rights.intro-point2d "Some features in &brandShortName;, such as the Crash Reporter, give you the option to provide feedback to &vendorShortName;. By choosing to submit feedback, you give &vendorShortName; permission to use the feedback to improve their applications, to publish the feedback on their websites, and to distribute the feedback.">
- 
- <!-- point 3 text for official branded builds -->
- <!ENTITY rights.intro-point3a "Privacy policies for &vendorShortName;'s products may be found ">
- <!ENTITY rights.intro-point3b "here">
- <!ENTITY rights.intro-point3c ".">
- 
- <!-- point 4 text for official branded builds -->
- <!ENTITY rights2.intro-point4a "&brandShortName; offers optional website information services, such as Add-on or Safe Browsing services; however, we cannot guarantee that they are 100&#37; accurate or error-free. More details, including information on how to disable the services, can be found in the ">
-@@ -68,16 +68,16 @@
- <!ENTITY rights.locationawarebrowsing-a "Location Aware Browsing: ">
- <!ENTITY rights.locationawarebrowsing-b "is always opt-in.  No location information is ever sent without your permission.  If you wish to disable the feature completely, follow these steps:">
- <!ENTITY rights.locationawarebrowsing-term1 "Open the application preferences">
- <!ENTITY rights.locationawarebrowsing-term2 "Select the main &security.label; panel">
- <!ENTITY rights.locationawarebrowsing-term3 "Select the option to &quot;&geoDisabled.label;&quot;">
- <!ENTITY rights.locationawarebrowsing-term4 "Location Aware Browsing is now disabled">
- 
- <!-- points 0-6 text for branded builds -->
--<!ENTITY rights.webservices-term0 "&vendorShortName; and Mozilla along with their contributors, licensors, and partners work to provide the most accurate and up-to-date Services.  However, we cannot guarantee that this information is comprehensive and error-free.  For example, the Safe Browsing Service may not identify some risky sites and may identify some safe sites in error and the Location Aware Service all locations returned by our service providers are estimates only. Neither we nor our service providers guarantee the accuracy of the locations provided.">
-+<!ENTITY rights.webservices-term0 "&vendorShortName; along with their contributors, licensors, and partners work to provide the most accurate and up-to-date Services.  However, we cannot guarantee that this information is comprehensive and error-free.  For example, the Safe Browsing Service may not identify some risky sites and may identify some safe sites in error and the Location Aware Service all locations returned by our service providers are estimates only. Neither we nor our service providers guarantee the accuracy of the locations provided.">
- <!ENTITY rights.webservices-term1 "&vendorShortName; may discontinue or change the Services at its discretion.">
- <!ENTITY rights.webservices-term2 "You are welcome to use these Services with the accompanying version of &brandShortName;, and you have all the rights necessary to do so. &vendorShortName; and its licensors reserve all other rights in the Services. These terms are not intended to limit any rights granted under open source licenses applicable to &brandShortName; and to corresponding source code versions of &brandShortName;.">
- <!ENTITY rights.webservices-term3 "The Services are provided &quot;as-is.&quot;  &vendorShortName;, its contributors, licensors, and distributors, disclaim all warranties, whether express or implied, including without limitation, warranties that the Services are merchantable and fit for your particular purposes.  You bear the entire risk as to selecting the Services for your purposes and as to the quality and performance of the Services. Some jurisdictions do not allow the exclusion or limitation of implied warranties, so this disclaimer may not apply to you.">
- <!ENTITY rights.webservices-term4 "Except as required by law, &vendorShortName;, its contributors, licensors, and distributors will not be liable for any indirect, special, incidental, consequential, punitive, or exemplary damages arising out of or in any way relating to the use of &brandShortName; and the Services.  The collective liability under these terms will not exceed $500 (five hundred dollars). Some jurisdictions do not allow the exclusion or limitation of certain damages, so this exclusion and limitation may not apply to you.">
- <!ENTITY rights.webservices-term5 "&vendorShortName; may update these terms as necessary from time to time. These terms may not be modified or cancelled without &vendorShortName;'s written agreement.">
--<!ENTITY rights.webservices-term6 "These terms are governed by the laws of the state of California, U.S.A., excluding its conflict of law provisions. If any portion of these terms is held to be invalid or unenforceable, the remaining portions will remain in full force and effect. In the event of a conflict between a translated version of these terms and the English language version, the English language version shall control.">
-+<!ENTITY rights.webservices-term6 "These terms are governed by and construed in accordance with the laws of Germany and all disputes arising in connection with these Terms shall be submitted to the exclusive jurisdiction of the competent court in Germany. If any portion of these terms is held to be invalid or unenforceable, the remaining portions will remain in full force and effect. In the event of a conflict between a translated version of these terms and the English language version, the English language version shall control.">
- 
-diff --git a/suite/locales/en-US/chrome/branding/aboutRights.properties b/suite/locales/en-US/chrome/branding/aboutRights.properties
---- a/suite/locales/en-US/chrome/branding/aboutRights.properties
-+++ b/suite/locales/en-US/chrome/branding/aboutRights.properties
-@@ -1,7 +1,7 @@
- # This Source Code Form is subject to the terms of the Mozilla Public
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
- buttonLabel = Know your rights
- buttonAccessKey = K
--notifyRightsText = %S is free and open software from the non-profit Mozilla Foundation.
-+notifyRightsText = %S is free and open software from the German registered association SeaMonkey e.V.

+ 0 - 1164
comm-esr60/comm-esr60/patches/1530955-whitespace-67a1.patch

@@ -1,1164 +0,0 @@
-# HG changeset patch
-# User Onno Ekker <o.e.ekker@gmail.com>
-# Date 1551305396 -3600
-# Node ID c7115248ceafc294a486999e1c7109e375f4625f
-# Parent  23f8da5c760ad3936e6bff74dee4ca3958a004d7
-Bug 1530955 - Remove trailing whitespace in suite/locales/en-US. r=frg a=IanN
-
-diff --git a/suite/locales/en-US/chrome/common/downloads/downloadmanager.dtd b/suite/locales/en-US/chrome/common/downloads/downloadmanager.dtd
---- a/suite/locales/en-US/chrome/common/downloads/downloadmanager.dtd
-+++ b/suite/locales/en-US/chrome/common/downloads/downloadmanager.dtd
-@@ -88,9 +88,8 @@
- <!ENTITY cmd.copyDownloadLink.accesskey  "L">
- <!ENTITY cmd.properties.label            "Properties…">
- <!ENTITY cmd.properties.accesskey        "s">
- <!-- LOCALIZATION NOTE (cmd.unblock2.label):
-      This command is shown in the context menu when downloads are blocked.
-      -->
- <!ENTITY cmd.unblock2.label               "Allow Download">
- <!ENTITY cmd.unblock2.accesskey           "l">
--
-diff --git a/suite/locales/en-US/chrome/common/help/help-win.rdf b/suite/locales/en-US/chrome/common/help/help-win.rdf
---- a/suite/locales/en-US/chrome/common/help/help-win.rdf
-+++ b/suite/locales/en-US/chrome/common/help/help-win.rdf
-@@ -61,27 +61,27 @@
-    </nc:subheadings>
- </rdf:Description>
- 
- <rdf:Description about="help-indexAZ.rdf#d">
-    <nc:subheadings>
-      <rdf:Seq><rdf:li>
-        <rdf:Description ID="default_browser_preferences"
-          nc:name="default browser preferences"
--	 nc:link="cs_nav_prefs_navigator.xhtml#navigator"/>
-+         nc:link="cs_nav_prefs_navigator.xhtml#navigator"/>
-      </rdf:li></rdf:Seq>
-    </nc:subheadings>
- </rdf:Description>
- 
- <rdf:Description about="help-indexAZ.rdf#i">
-    <nc:subheadings>
-      <rdf:Seq><rdf:li>
-        <rdf:Description ID="ieusers"
-          nc:name="Internet Explorer User Help"
--	 nc:link="forieusers.xhtml"/>
-+         nc:link="forieusers.xhtml"/>
-      </rdf:li></rdf:Seq>
-    </nc:subheadings>
- </rdf:Description>
- 
- <rdf:Description about="#ieusers">
-    <nc:subheadings>
-      <rdf:Seq><rdf:li>
-        <rdf:Description ID="ieusers:terminology-differences"
-@@ -106,14 +106,14 @@
-    </nc:subheadings>
- </rdf:Description>
- 
- <rdf:Description about="help-index1.rdf#preferences">
-    <nc:subheadings>
-      <rdf:Seq><rdf:li>
-        <rdf:Description ID="preferences:default_browser"
-          nc:name="default browser preferences"
--	 nc:link="cs_nav_prefs_navigator.xhtml#navigator"/>
-+         nc:link="cs_nav_prefs_navigator.xhtml#navigator"/>
-      </rdf:li></rdf:Seq>
-    </nc:subheadings>
- </rdf:Description>
- 
- </rdf:RDF>
-diff --git a/suite/locales/en-US/chrome/common/help/helpFileLayout.css b/suite/locales/en-US/chrome/common/help/helpFileLayout.css
---- a/suite/locales/en-US/chrome/common/help/helpFileLayout.css
-+++ b/suite/locales/en-US/chrome/common/help/helpFileLayout.css
-@@ -1,18 +1,18 @@
- /* This Source Code Form is subject to the terms of the Mozilla Public
-  * License, v. 2.0. If a copy of the MPL was not distributed with this
-  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- @import url("chrome://help/content/platformClasses.css");
- 
- body {
--	margin: 2ex;
--	font-family: sans-serif;
--	font-size: 0.75em;
--	max-width: 120ex;
-+  margin: 2ex;
-+  font-family: sans-serif;
-+  font-size: 0.75em;
-+  max-width: 120ex;
- }
- 
- dd { margin-inline-start: 0px; margin-bottom: 1em; }
- dt { font-size: 10pt; font-weight: bold; }
- tt { font-size: 10pt; }
- 
- :link:hover,
- :visited:hover { color: -moz-activehyperlinktext; }
-@@ -42,22 +42,22 @@ kbd { font-family: sans-serif; }
- .osSecondColumn { width: 20%; }
- .osThirdColumn { width: 20%; }
- 
- p:first-child { padding-top: 0; margin-top: 0; }
- 
- .separate > li { margin-bottom: 0.5em; }
- 
- .contentsBox {
--	margin-top: 12px;
--	background-color: #cccccc;
--	border: 1px solid black;
--	width: 300px;
--	padding: 1em;
-+  margin-top: 12px;
-+  background-color: #cccccc;
-+  border: 1px solid black;
-+  width: 300px;
-+  padding: 1em;
- }
- 
- .contentsBox > ul {
--	list-style-type: none;
-+  list-style-type: none;
- }
- 
- a[href^="http://"]:after, a[href^="https://"]:after, a[href^="x-moz-url-link:"]:after {
--	content: url("images/web-links.png");
-+  content: url("images/web-links.png");
- }
-diff --git a/suite/locales/en-US/chrome/common/help/suite-toc.rdf b/suite/locales/en-US/chrome/common/help/suite-toc.rdf
---- a/suite/locales/en-US/chrome/common/help/suite-toc.rdf
-+++ b/suite/locales/en-US/chrome/common/help/suite-toc.rdf
-@@ -514,17 +514,17 @@
-     </nc:subheadings>
-   </rdf:Description>
- 
- <!-- COMPOSER HELP SECTION -->
- 
- <rdf:Description about="#comp">
-     <nc:subheadings>
-       <rdf:Seq>
--        <rdf:li> <rdf:Description ID="comp-doc"	nc:name="Starting a New Page"  nc:link="composer_help.xhtml#starting_a_new_page"/> </rdf:li>
-+        <rdf:li> <rdf:Description ID="comp-doc" nc:name="Starting a New Page"  nc:link="composer_help.xhtml#starting_a_new_page"/> </rdf:li>
-         <rdf:li> <rdf:Description ID="page_change" nc:name="Formatting Your Web Pages"  nc:link="composer_help.xhtml#formatting_your_web_pages"/> </rdf:li>
-         <rdf:li> <rdf:Description ID="comp-doc-table" nc:name="Adding Tables to Your Web Page"  nc:link="composer_help.xhtml#adding_tables_to_your_web_page"/> </rdf:li>
-         <rdf:li> <rdf:Description ID="comp-doc-image" nc:name="Adding Images to Your Web Page"  nc:link="composer_help.xhtml#adding_images_to_your_web_page"/> </rdf:li>
-         <rdf:li> <rdf:Description ID="comp-doc-math" nc:name="Adding Mathematical Formulas to Your Web Page"  nc:link="composer_help.xhtml#adding_mathematical_formulas_to_your_web_page"/> </rdf:li>
-         <rdf:li> <rdf:Description ID="comp-doc-page" nc:name="Setting Page Properties"  nc:link="composer_help.xhtml#setting_page_properties"/> </rdf:li>
-         <rdf:li> <rdf:Description ID="link_properties" nc:name="Creating Links"  nc:link="composer_help.xhtml#creating_links_in_composer"/> </rdf:li>
-         <rdf:li> <rdf:Description ID="comp-doc-publish" nc:name="Publishing Your Pages"  nc:link="composer_help.xhtml#publishing_your_pages_on_the_web"/> </rdf:li>
-         <rdf:li> <rdf:Description ID="comp-doc-prefs" nc:name="Composer Preferences"  nc:link="composer_help.xhtml#composer_preferences"/> </rdf:li>
-@@ -851,21 +851,21 @@
-         <rdf:li><rdf:Description ID="sec_gen" nc:name="Privacy &amp; Security Preferences" nc:link="privsec_help.xhtml"/> </rdf:li>
-       </rdf:Seq>
-     </nc:subheadings>
-   </rdf:Description>
- 
- <rdf:Description about="#privacy-doc">
-     <nc:subheadings>
-       <rdf:Seq>
--        <rdf:li><rdf:Description ID="privacy-doc-visit" nc:name="What Information Does My Browser Give to a Website?"  		nc:link="privacy_help.xhtml#what_information_does_my_browser_give_to_a_website"/> </rdf:li>
--        <rdf:li><rdf:Description ID="privacy-doc-cookies" nc:name="What Are Cookies, and How Do They Work?"  		nc:link="privacy_help.xhtml#what_are_cookies_and_how_do_they_work"/> </rdf:li>
--        <rdf:li><rdf:Description ID="privacy-doc-tracking" nc:name="Why and How Are Websites Tracking Me?"  		nc:link="privacy_help.xhtml#why_and_how_are_websites_tracking_me"/> </rdf:li>
--        <rdf:li><rdf:Description ID="privacy-doc-email" nc:name="How Can I Control Web Pages in Email Messages?"  		nc:link="privacy_help.xhtml#how_can_i_control_web_pages_in_email_messages"/> </rdf:li>
--        <rdf:li><rdf:Description ID="privacy-doc-unauth" nc:name="How Can I Make Sure Unauthorized People Don't Use Information About Me?"  		nc:link="privacy_help.xhtml#how_can_i_make_sure_unauthorized_people_dont_use_information_about_me"/> </rdf:li>
-+        <rdf:li><rdf:Description ID="privacy-doc-visit" nc:name="What Information Does My Browser Give to a Website?" nc:link="privacy_help.xhtml#what_information_does_my_browser_give_to_a_website"/> </rdf:li>
-+        <rdf:li><rdf:Description ID="privacy-doc-cookies" nc:name="What Are Cookies, and How Do They Work?" nc:link="privacy_help.xhtml#what_are_cookies_and_how_do_they_work"/> </rdf:li>
-+        <rdf:li><rdf:Description ID="privacy-doc-tracking" nc:name="Why and How Are Websites Tracking Me?" nc:link="privacy_help.xhtml#why_and_how_are_websites_tracking_me"/> </rdf:li>
-+        <rdf:li><rdf:Description ID="privacy-doc-email" nc:name="How Can I Control Web Pages in Email Messages?" nc:link="privacy_help.xhtml#how_can_i_control_web_pages_in_email_messages"/> </rdf:li>
-+        <rdf:li><rdf:Description ID="privacy-doc-unauth" nc:name="How Can I Make Sure Unauthorized People Don't Use Information About Me?" nc:link="privacy_help.xhtml#how_can_i_make_sure_unauthorized_people_dont_use_information_about_me"/> </rdf:li>
-       </rdf:Seq>
-     </nc:subheadings>
-   </rdf:Description>
- 
- <rdf:Description about="#using-priv-help-cookies">
-     <nc:subheadings>
-       <rdf:Seq>
-         <rdf:li><rdf:Description ID="using-priv-help-cookies-manage" nc:name="Enabling &amp; Disabling Cookies" nc:link="using_priv_help.xhtml#enabling_and_disabling_cookies"/> </rdf:li>
-diff --git a/suite/locales/en-US/chrome/common/pref/mac/platformPrefOverlay.dtd b/suite/locales/en-US/chrome/common/pref/mac/platformPrefOverlay.dtd
---- a/suite/locales/en-US/chrome/common/pref/mac/platformPrefOverlay.dtd
-+++ b/suite/locales/en-US/chrome/common/pref/mac/platformPrefOverlay.dtd
-@@ -1,16 +1,16 @@
- <!-- This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <!-- LOCALIZATION NOTE : this is part of an inline-style attribute on the
-      preference dialog's <window> node, which specifies the width and height
--     in em units of the dialog. Localizers ONLY can increase these widths 
--     if they are having difficulty getting panel content to fit. 1em = the 
-+     in em units of the dialog. Localizers ONLY can increase these widths
-+     if they are having difficulty getting panel content to fit. 1em = the
-      width of the letter 'm' in the selected font.
-      XUL/FE DEVELOPERS: DO NOT MODIFY THIS VALUE. It represents the correct
-      size of this window for en-US. -->
- <!ENTITY  prefWindow.size             "width: 62em; height: 41em;">
- 
- <!-- pref-tabs.xul -->
- <!ENTITY urlbar.label                 "&#8984;+Return in the Location bar">
- <!ENTITY urlbar.accesskey             "L">
-diff --git a/suite/locales/en-US/chrome/common/pref/pref-cookies.dtd b/suite/locales/en-US/chrome/common/pref/pref-cookies.dtd
---- a/suite/locales/en-US/chrome/common/pref/pref-cookies.dtd
-+++ b/suite/locales/en-US/chrome/common/pref/pref-cookies.dtd
-@@ -32,9 +32,8 @@
- <!ENTITY acceptforNDays.accesskey       "f">
- <!ENTITY days.label                     "days">
- 
- <!ENTITY manageCookies.label            "Manage Cookies and Sites">
- <!ENTITY manageCookiesDescription.label "Allows you to view and manage stored cookies and per-website settings for accepting and rejecting cookies. Per-website settings will override the settings above.">
- 
- <!ENTITY viewCookies.label              "Cookie Manager">
- <!ENTITY viewCookies.accesskey          "M">
--
-diff --git a/suite/locales/en-US/chrome/common/pref/pref-images.dtd b/suite/locales/en-US/chrome/common/pref/pref-images.dtd
---- a/suite/locales/en-US/chrome/common/pref/pref-images.dtd
-+++ b/suite/locales/en-US/chrome/common/pref/pref-images.dtd
-@@ -3,17 +3,17 @@
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <!ENTITY pref.images.title              "Images">
- 
- <!ENTITY imageBlocking.label            "Image Acceptance Policy">
- 
- <!--LOCALIZATION NOTE (onStartLegend.label): Don't translate "&brandShortName;".
-     Place "&brandShortName;" in the phrase where the name of the application should
--	 appear
-+    appear
- -->
- <!ENTITY imageDetails                   "Specify how &brandShortName; handles images.">
- 
- <!ENTITY loadAllImagesRadio.label       "Load all images">
- <!ENTITY loadAllImagesRadio.accesskey   "L">
- <!ENTITY loadOrgImagesRadio.label       "Only load images that come from the originating server">
- <!ENTITY loadOrgImagesRadio.accesskey   "n">
- <!ENTITY loadNoImagesRadio.label        "Do not load any images">
-diff --git a/suite/locales/en-US/chrome/common/pref/pref-popups.dtd b/suite/locales/en-US/chrome/common/pref/pref-popups.dtd
---- a/suite/locales/en-US/chrome/common/pref/pref-popups.dtd
-+++ b/suite/locales/en-US/chrome/common/pref/pref-popups.dtd
-@@ -27,9 +27,8 @@
- 
- <!ENTITY displayIcon.label              "Display an icon in the browser status bar">
- <!ENTITY displayIcon.accesskey          "D">
- 
- <!ENTITY displayNotification.label      "Display a notification bar at the top of the content area">
- <!ENTITY displayNotification.accesskey  "N">
- 
- <!ENTITY popupNote.description          "Note: Blocking all popups may prevent important features of some websites from working, such as login windows for banks and shopping websites. For details of how to allow specific websites to use popups while blocking all others, click Help. Even if blocked, websites may use other methods to show popups.">
--
-diff --git a/suite/locales/en-US/chrome/common/pref/unix/platformPrefOverlay.dtd b/suite/locales/en-US/chrome/common/pref/unix/platformPrefOverlay.dtd
---- a/suite/locales/en-US/chrome/common/pref/unix/platformPrefOverlay.dtd
-+++ b/suite/locales/en-US/chrome/common/pref/unix/platformPrefOverlay.dtd
-@@ -1,16 +1,16 @@
- <!-- This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <!-- LOCALIZATION NOTE : this is part of an inline-style attribute on the
-      preference dialog's <window> node, which specifies the width and height
--     in em units of the dialog. Localizers ONLY can increase these widths 
--     if they are having difficulty getting panel content to fit. 1em = the 
-+     in em units of the dialog. Localizers ONLY can increase these widths
-+     if they are having difficulty getting panel content to fit. 1em = the
-      width of the letter 'm' in the selected font.
-      XUL/FE DEVELOPERS: DO NOT MODIFY THIS VALUE. It represents the correct
-      size of this window for en-US. -->
- <!ENTITY  prefWindow.size             "width: 102ch; height: 44em;">
- 
- <!-- pref-tabs.xul -->
- <!ENTITY urlbar.label                 "Ctrl+Enter in the Location bar">
- <!ENTITY urlbar.accesskey             "L">
-diff --git a/suite/locales/en-US/chrome/common/pref/win/platformPrefOverlay.dtd b/suite/locales/en-US/chrome/common/pref/win/platformPrefOverlay.dtd
---- a/suite/locales/en-US/chrome/common/pref/win/platformPrefOverlay.dtd
-+++ b/suite/locales/en-US/chrome/common/pref/win/platformPrefOverlay.dtd
-@@ -1,16 +1,16 @@
- <!-- This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <!-- LOCALIZATION NOTE : this is part of an inline-style attribute on the
-      preference dialog's <window> node, which specifies the width and height
--     in em units of the dialog. Localizers ONLY can increase these widths 
--     if they are having difficulty getting panel content to fit. 1em = the 
-+     in em units of the dialog. Localizers ONLY can increase these widths
-+     if they are having difficulty getting panel content to fit. 1em = the
-      width of the letter 'm' in the selected font.
-      XUL/FE DEVELOPERS: DO NOT MODIFY THIS VALUE. It represents the correct
-      size of this window for en-US. -->
- <!ENTITY  prefWindow.size             "width: 115ch; height: 43em;">
- 
- <!-- pref-tabs.xul -->
- <!ENTITY urlbar.label                 "Ctrl+Enter in the Location bar">
- <!ENTITY urlbar.accesskey             "L">
-diff --git a/suite/locales/en-US/chrome/common/safeBrowsing.dtd b/suite/locales/en-US/chrome/common/safeBrowsing.dtd
---- a/suite/locales/en-US/chrome/common/safeBrowsing.dtd
-+++ b/suite/locales/en-US/chrome/common/safeBrowsing.dtd
-@@ -21,9 +21,8 @@
- <!ENTITY safeb.blocked.phishingPage.shortDesc2 "This web page at <span id='phishing_sitename'/> has been reported as a deceptive site and has been blocked based on your security preferences.">
- <!ENTITY safeb.blocked.phishingPage.longDesc2 "<p>Deceptive sites are designed to trick you into doing something dangerous, like installing software, or revealing your personal information, like passwords, phone numbers or credit cards.</p><p>Entering any information on this web page may result in identity theft or other fraud.</p>">
- 
- <!-- Localization note (reportDeceptiveSite, notADeceptiveSite) - The two button strings will never be shown at the same time, so it's okay for them to have the same access key. -->
- <!ENTITY reportDeceptiveSite.label "Report deceptive site…">
- <!ENTITY reportDeceptiveSite.accesskey "d">
- <!ENTITY notADeceptiveSite.label "This isn't a deceptive site…">
- <!ENTITY notADeceptiveSite.accesskey "d">
--
-diff --git a/suite/locales/en-US/chrome/common/utilityOverlay.dtd b/suite/locales/en-US/chrome/common/utilityOverlay.dtd
---- a/suite/locales/en-US/chrome/common/utilityOverlay.dtd
-+++ b/suite/locales/en-US/chrome/common/utilityOverlay.dtd
-@@ -1,17 +1,17 @@
- <!-- This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <!-- these things need to move into utilityOverlay.xul -->
- <!ENTITY  offlineGoOfflineCmd.label                 "Work Offline">
- <!ENTITY  offlineGoOfflineCmd.accesskey             "k">
- 
--<!-- LOCALIZATION NOTE : FILE This file contains the global menu items --> 
-+<!-- LOCALIZATION NOTE : FILE This file contains the global menu items -->
- 
- <!ENTITY fileMenu.label                   "File">
- <!ENTITY fileMenu.accesskey               "F">
- <!ENTITY newMenu.label                    "New">
- <!ENTITY newMenu.accesskey                "N">
- <!ENTITY newBlankPageCmd.label            "Composer Page">
- <!ENTITY newBlankPageCmd.accesskey        "P">
- <!ENTITY newBlankPageCmd.key              "n">
-@@ -57,23 +57,23 @@
-      search bar equivalent to the url bar's "Paste & Go"  -->
- <!ENTITY pasteSearchCmd.label             "Paste &amp; Search">
- <!ENTITY pasteSearchCmd.accesskey         "e">
- <!ENTITY deleteCmd.label                  "Delete">
- <!ENTITY deleteCmd.accesskey              "D">
- <!ENTITY selectAllCmd.label               "Select All">
- <!ENTITY selectAllCmd.key                 "A">
- <!ENTITY selectAllCmd.accesskey           "A">
--<!ENTITY clearHistoryCmd.label				"Clear Search History">  
--<!ENTITY clearHistoryCmd.accesskey			"H"> 
--<!ENTITY showSuggestionsCmd.label			"Show Suggestions">  
--<!ENTITY showSuggestionsCmd.accesskey		"S"> 
--<!ENTITY preferencesCmd.label				"Preferences…">
--<!ENTITY preferencesCmd.key					"E">  
--<!ENTITY preferencesCmd.accesskey			"e"> 
-+<!ENTITY clearHistoryCmd.label            "Clear Search History">
-+<!ENTITY clearHistoryCmd.accesskey        "H">
-+<!ENTITY showSuggestionsCmd.label         "Show Suggestions">
-+<!ENTITY showSuggestionsCmd.accesskey     "S">
-+<!ENTITY preferencesCmd.label             "Preferences…">
-+<!ENTITY preferencesCmd.key               "E">
-+<!ENTITY preferencesCmd.accesskey         "e">
- <!ENTITY findBarCmd.key "F">
- <!-- LOCALIZATION NOTE (findBarCmd.accesskey): This accesskey should be within
-      findBarCmd.label found in editorOverlay.dtd, findCmd.label in messenger.dtd
-      and messengercompose.dtd and findOnCmd.label found in navigatorOverlay.dtd -->
- <!ENTITY findBarCmd.accesskey "F">
- <!ENTITY findReplaceCmd.accesskey "l">
- <!ENTITY findAgainCmd.label "Find Again">
- <!ENTITY findAgainCmd.key "G">
-@@ -83,52 +83,52 @@
- <!ENTITY findPrevCmd.key "G">
- <!ENTITY findPrevCmd.key2 "VK_F3">
- <!ENTITY findPrevCmd.accesskey "v">
- <!ENTITY findTypeTextCmd.label "Find Text As You Type">
- <!ENTITY findTypeTextCmd.accesskey "x">
- <!ENTITY findTypeLinksCmd.label "Find Links As You Type">
- <!ENTITY findTypeLinksCmd.accesskey "k">
- 
--<!ENTITY viewMenu.label					"View"> 
-+<!ENTITY viewMenu.label                   "View">
- <!ENTITY viewMenu.accesskey               "V">
--<!ENTITY viewToolbarsMenu.label				"Show/Hide"> 
--<!ENTITY viewToolbarsMenu.accesskey			"w"> 
--<!ENTITY showTaskbarCmd.label					"Status Bar">  
--<!ENTITY showTaskbarCmd.accesskey				"S"> 
-+<!ENTITY viewToolbarsMenu.label           "Show/Hide">
-+<!ENTITY viewToolbarsMenu.accesskey       "w">
-+<!ENTITY showTaskbarCmd.label             "Status Bar">
-+<!ENTITY showTaskbarCmd.accesskey         "S">
- 
--<!ENTITY helpMenu.label					"Help"> 
--<!ENTITY helpMenu.accesskey				"h"> 
-+<!ENTITY helpMenu.label                   "Help">
-+<!ENTITY helpMenu.accesskey               "h">
- 
- <!ENTITY helpTroubleshootingInfo.label      "Troubleshooting Information">
- <!ENTITY helpTroubleshootingInfo.accesskey  "T">
- <!ENTITY releaseCmd.label                   "Release Notes">
- <!ENTITY releaseCmd.accesskey               "N">
- <!ENTITY helpSafeMode.label                 "Restart with Add-ons Disabled">
- <!ENTITY helpSafeMode.accesskey             "R">
- <!ENTITY updateCmd.label                    "Check for Updates…">
- <!ENTITY updateCmd.accesskey                "C">
--<!ENTITY aboutCmd.label					"About &brandShortName;">
--<!ENTITY aboutCmd.accesskey				"A">
--<!ENTITY aboutCommPluginsCmd.label			"About Plugins">
--<!ENTITY aboutCommPluginsCmd.accesskey			"p">
-+<!ENTITY aboutCmd.label                     "About &brandShortName;">
-+<!ENTITY aboutCmd.accesskey                 "A">
-+<!ENTITY aboutCommPluginsCmd.label          "About Plugins">
-+<!ENTITY aboutCommPluginsCmd.accesskey      "p">
- 
--<!ENTITY direct.label                                   "Online (Proxy: None)">
--<!ENTITY direct.accesskey                               "N">
--<!ENTITY manual.label                                   "Online (Proxy: Manual)">
--<!ENTITY manual.accesskey                               "M">
--<!ENTITY pac.label                                      "Online (Proxy: Auto URL)">
--<!ENTITY pac.accesskey                                  "A">
--<!ENTITY wpad.label                                     "Online (Proxy: Auto Discover)">
--<!ENTITY wpad.accesskey                                 "D">
--<!ENTITY system.label                                   "Online (Proxy: System Proxy)">
--<!ENTITY system.accesskey                               "S">
-+<!ENTITY direct.label                             "Online (Proxy: None)">
-+<!ENTITY direct.accesskey                         "N">
-+<!ENTITY manual.label                             "Online (Proxy: Manual)">
-+<!ENTITY manual.accesskey                         "M">
-+<!ENTITY pac.label                                "Online (Proxy: Auto URL)">
-+<!ENTITY pac.accesskey                            "A">
-+<!ENTITY wpad.label                               "Online (Proxy: Auto Discover)">
-+<!ENTITY wpad.accesskey                           "D">
-+<!ENTITY system.label                             "Online (Proxy: System Proxy)">
-+<!ENTITY system.accesskey                         "S">
- 
--<!ENTITY proxy.label                                    "Proxy Configuration…">
--<!ENTITY proxy.accesskey                                "C">
-+<!ENTITY proxy.label                              "Proxy Configuration…">
-+<!ENTITY proxy.accesskey                          "C">
- 
- <!ENTITY bidiSwitchTextDirectionItem.label        "Switch Text Direction">
- <!ENTITY bidiSwitchTextDirectionItem.accesskey    "w">
- <!ENTITY bidiSwitchTextDirectionItem.commandkey   "X">
- 
- <!ENTITY customizeToolbarContext.label            "Customize…">
- <!ENTITY customizeToolbarContext.accesskey        "C">
- 
-diff --git a/suite/locales/en-US/chrome/mailnews/addressbook/abMainWindow.dtd b/suite/locales/en-US/chrome/mailnews/addressbook/abMainWindow.dtd
---- a/suite/locales/en-US/chrome/mailnews/addressbook/abMainWindow.dtd
-+++ b/suite/locales/en-US/chrome/mailnews/addressbook/abMainWindow.dtd
-@@ -7,95 +7,95 @@
- 
- <!-- Menus:  the . means that the menu item isn't implemented yet -->
- 
- <!-- File Menu -->
- <!ENTITY newContact.label                               "Contact…">
- <!-- LOCALIZATION NOTE (newContact.accesskey) : DONT_TRANSLATE -->
- <!ENTITY newContact.accesskey                           "C">
- <!ENTITY newListCmd.label                               "Mailing List…">
--<!-- LOCALIZATION NOTE (newListCmd.accesskey) : DONT_TRANSLATE -->  
--<!ENTITY newListCmd.accesskey                           "L">  
--<!ENTITY newAddressBookCmd.label                        "Address Book…"> 
--<!ENTITY newAddressBookCmd.accesskey                    "o">  
-+<!-- LOCALIZATION NOTE (newListCmd.accesskey) : DONT_TRANSLATE -->
-+<!ENTITY newListCmd.accesskey                           "L">
-+<!ENTITY newAddressBookCmd.label                        "Address Book…">
-+<!ENTITY newAddressBookCmd.accesskey                    "o">
- <!ENTITY newLDAPDirectoryCmd.label                      "LDAP Directory…">
- <!-- LOCALIZATION NOTE (newLDAPDirectoryCmd.accesskey) : DONT_TRANSLATE -->
- <!ENTITY newLDAPDirectoryCmd.accesskey                  "D">
- <!ENTITY newIM.label                                    "IM">
- <!ENTITY printContactViewCmd.label                      "Print Contact…">
- <!ENTITY printContactViewCmd.accesskey                  "p">
- <!ENTITY printPreviewContactViewCmd.label               "Print Preview Contact">
- <!ENTITY printPreviewContactViewCmd.accesskey           "v">
- <!ENTITY printContactViewCmd.key                        "P">
--<!ENTITY printAddressBook.label                         "Print Address Book…"> 
--<!ENTITY printAddressBook.accesskey                     "A"> 
--<!ENTITY printPreviewAddressBook.label                  "Print Preview Address Book"> 
-+<!ENTITY printAddressBook.label                         "Print Address Book…">
-+<!ENTITY printAddressBook.accesskey                     "A">
-+<!ENTITY printPreviewAddressBook.label                  "Print Preview Address Book">
- <!ENTITY printPreviewAddressBook.accesskey              "B">
- 
- <!-- Edit Menu -->
--<!ENTITY deleteAbCmd.label                              "Delete Address Book">  
-+<!ENTITY deleteAbCmd.label                              "Delete Address Book">
- <!ENTITY deleteContactCmd.label                         "Delete Contact">
- <!ENTITY deleteContactsCmd.label                        "Delete Selected Contacts">
- <!ENTITY deleteListCmd.label                            "Delete List">
- <!ENTITY deleteListsCmd.label                           "Delete Selected Lists">
- <!ENTITY deleteItemsCmd.label                           "Delete Selected Items">
- <!ENTITY swapFirstNameLastNameCmd.label                 "Swap First/Last Name">
--<!ENTITY swapFirstNameLastNameCmd.accesskey             "w">  
-+<!ENTITY swapFirstNameLastNameCmd.accesskey             "w">
- <!ENTITY propertiesCmd.label                            "Properties…">
--<!-- LOCALIZATION NOTE (propertiesCmd.accesskey) : DONT_TRANSLATE -->  
--<!ENTITY propertiesCmd.accesskey                        "i">  
--<!ENTITY propertiesCmd.key                              "i">  
-+<!-- LOCALIZATION NOTE (propertiesCmd.accesskey) : DONT_TRANSLATE -->
-+<!ENTITY propertiesCmd.accesskey                        "i">
-+<!ENTITY propertiesCmd.key                              "i">
- 
- <!-- View Menu -->
--<!ENTITY showAbToolbarCmd.label                         "Address Book Toolbar"> 
--<!ENTITY showAbToolbarCmd.accesskey                     "o">  
-+<!ENTITY showAbToolbarCmd.label                         "Address Book Toolbar">
-+<!ENTITY showAbToolbarCmd.accesskey                     "o">
- <!ENTITY layoutMenu.label                               "Layout">
- <!ENTITY layoutMenu.accesskey                           "L">
- <!ENTITY showDirectoryPane.label                        "Directory Pane">
- <!ENTITY showDirectoryPane.accesskey                    "D">
- <!ENTITY showContactPane2.label                         "Contact Pane">
- <!ENTITY showContactPane2.accesskey                     "C">
--<!ENTITY menu_ShowNameAs.label                          "Show Name As"> 
--<!ENTITY menu_ShowNameAs.accesskey                      "n"> 
--<!ENTITY firstLastCmd.label                             "First Last">  
--<!ENTITY firstLastCmd.accesskey                         "f"> 
--<!ENTITY lastFirstCmd.label                             "Last, First">  
--<!ENTITY lastFirstCmd.accesskey                         "l"> 
--<!ENTITY displayNameCmd.label                           "Display Name">  
--<!ENTITY displayNameCmd.accesskey                       "d"> 
-+<!ENTITY menu_ShowNameAs.label                          "Show Name As">
-+<!ENTITY menu_ShowNameAs.accesskey                      "n">
-+<!ENTITY firstLastCmd.label                             "First Last">
-+<!ENTITY firstLastCmd.accesskey                         "f">
-+<!ENTITY lastFirstCmd.label                             "Last, First">
-+<!ENTITY lastFirstCmd.accesskey                         "l">
-+<!ENTITY displayNameCmd.label                           "Display Name">
-+<!ENTITY displayNameCmd.accesskey                       "d">
- 
- <!-- Tasks Menu -->
- <!ENTITY importCmd.label                                "Import…">
- <!ENTITY importCmd.accesskey                            "I">
- <!ENTITY exportCmd.label                                "Export…">
- <!ENTITY exportCmd.accesskey                            "E">
- 
--<!-- Toolbar and Popup items -->  
-+<!-- Toolbar and Popup items -->
- <!ENTITY newContactButton.label                         "New Contact">
- <!ENTITY newContactButton.accesskey                     "C">
--<!ENTITY newlistButton.label                            "New List">  
--<!ENTITY newlistButton.accesskey                        "L">  
-+<!ENTITY newlistButton.label                            "New List">
-+<!ENTITY newlistButton.accesskey                        "L">
- <!ENTITY editItemButton.label                           "Properties">
- <!ENTITY editItemButton.accesskey                       "P">
--<!ENTITY newmsgButton.label                             "Compose">  
--<!ENTITY newmsgButton.accesskey                         "C">  
-+<!ENTITY newmsgButton.label                             "Compose">
-+<!ENTITY newmsgButton.accesskey                         "C">
- <!ENTITY deleteItemButton.label                         "Delete">
- <!ENTITY deleteItemButton.accesskey                     "D">
--<!ENTITY newimButton.label                              "Instant Message">  
--<!ENTITY newimButton.accesskey                          "I">  
-+<!ENTITY newimButton.label                              "Instant Message">
-+<!ENTITY newimButton.accesskey                          "I">
- <!ENTITY searchNameAndEmail.placeholder                 "Search Name and Email">
- <!ENTITY searchBox.title                                "Search">
- 
- <!-- Tooltips -->
- <!ENTITY addressbookToolbar.tooltip                     "Address Book Toolbar">
- <!ENTITY newContactButton.tooltip                       "Create a new address book contact">
--<!ENTITY newlistButton.tooltip                          "Create a new list"> 
-+<!ENTITY newlistButton.tooltip                          "Create a new list">
- <!ENTITY editItemButton.tooltip                         "Edit the selected item">
--<!ENTITY newmsgButton.tooltip                           "Send a mail message"> 
--<!ENTITY newIM.tooltip                                  "Send an instant message or chat"> 
-+<!ENTITY newmsgButton.tooltip                           "Send a mail message">
-+<!ENTITY newIM.tooltip                                  "Send an instant message or chat">
- <!ENTITY deleteItemButton.tooltip                       "Delete selected item">
- <!ENTITY throbber.tooltip                               "Go to the &vendorShortName; home page">
- <!ENTITY advancedButton.tooltip                         "Advanced address search">
- 
- <!-- Dir Tree header -->
- <!ENTITY dirTreeHeader.label                            "Address Books">
- 
- <!-- Card Summary Pane -->
-@@ -107,14 +107,14 @@
- <!ENTITY work.heading                                   "Work">
- <!-- Special Box Headings, for mailing lists -->
- <!ENTITY description.heading                            "Description">
- <!ENTITY addresses.heading                              "Addresses">
- <!-- For Map It! -->
- <!ENTITY mapItButton.label                              "Get Map">
- <!ENTITY mapIt.tooltip                                  "Display a map of this address from the Web">
- 
--<!-- Status Bar -->  
-+<!-- Status Bar -->
- <!ENTITY statusText.label                               "">
- 
- <!-- LOCALIZATION NOTE (hideSwapFnLnUI) : DONT_TRANSLATE -->
- <!-- Swap FN/LN UI  Set to "false" to show swap fn/ln UI -->
- <!ENTITY  hideSwapFnLnUI                                "true">
-diff --git a/suite/locales/en-US/chrome/mailnews/addressbook/abSelectAddressesDialog.dtd b/suite/locales/en-US/chrome/mailnews/addressbook/abSelectAddressesDialog.dtd
---- a/suite/locales/en-US/chrome/mailnews/addressbook/abSelectAddressesDialog.dtd
-+++ b/suite/locales/en-US/chrome/mailnews/addressbook/abSelectAddressesDialog.dtd
-@@ -1,31 +1,30 @@
- <!-- This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <!-- Title -->
- <!ENTITY selectAddressWindow.title           "Select Addresses">
- 
- <!-- Buttons -->
--<!ENTITY toButton.label                      "To->"> 
--<!ENTITY toButton.accesskey                  "T"> 
--<!ENTITY ccButton.label                      "Cc->"> 
--<!ENTITY ccButton.accesskey                  "C"> 
--<!ENTITY bccButton.label                     "Bcc->">  
--<!ENTITY bccButton.accesskey                 "B">  
--<!ENTITY newButton.label                     "New…"> 
--<!ENTITY newButton.accesskey                 "N"> 
--<!ENTITY editButton.label                    "Edit…"> 
-+<!ENTITY toButton.label                      "To->">
-+<!ENTITY toButton.accesskey                  "T">
-+<!ENTITY ccButton.label                      "Cc->">
-+<!ENTITY ccButton.accesskey                  "C">
-+<!ENTITY bccButton.label                     "Bcc->">
-+<!ENTITY bccButton.accesskey                 "B">
-+<!ENTITY newButton.label                     "New…">
-+<!ENTITY newButton.accesskey                 "N">
-+<!ENTITY editButton.label                    "Edit…">
- <!ENTITY editButton.accesskey                "E">
--<!ENTITY removeButton.label                  "Remove"> 
--<!ENTITY removeButton.accesskey              "R"> 
--<!ENTITY lookIn.label                        "Look in:"> 
--<!ENTITY lookIn.accesskey                    "L"> 
--<!ENTITY for.label                           "for:"> 
--<!ENTITY for.accesskey                       "f"> 
-+<!ENTITY removeButton.label                  "Remove">
-+<!ENTITY removeButton.accesskey              "R">
-+<!ENTITY lookIn.label                        "Look in:">
-+<!ENTITY lookIn.accesskey                    "L">
-+<!ENTITY for.label                           "for:">
-+<!ENTITY for.accesskey                       "f">
- <!ENTITY for.placeholder                     "Name or Email">
--<!ENTITY addressMessageTo.label              "Address message to:"> 
-+<!ENTITY addressMessageTo.label              "Address message to:">
- 
--<!-- Tooltips items -->  
--<!ENTITY addressPickerNewButton.tooltip      "Create a new address book card"> 
--<!ENTITY addressPickerEditButton.tooltip     "Edit the selected card"> 
--
-+<!-- Tooltips items -->
-+<!ENTITY addressPickerNewButton.tooltip      "Create a new address book card">
-+<!ENTITY addressPickerEditButton.tooltip     "Edit the selected card">
-diff --git a/suite/locales/en-US/chrome/mailnews/compose/addressingWidgetOverlay.dtd b/suite/locales/en-US/chrome/mailnews/compose/addressingWidgetOverlay.dtd
---- a/suite/locales/en-US/chrome/mailnews/compose/addressingWidgetOverlay.dtd
-+++ b/suite/locales/en-US/chrome/mailnews/compose/addressingWidgetOverlay.dtd
-@@ -1,13 +1,12 @@
- <!-- This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <!-- address labels -->
- <!--LOCALIZATION NOTE addressingWidgetOverlay.dtd The basic mail/news composition headers as they are seen in UI -->
--<!ENTITY toAddr.label   "To:"> 
--<!ENTITY ccAddr.label   "Cc:"> 
--<!ENTITY bccAddr.label  "Bcc:"> 
--<!ENTITY replyAddr.label   "Reply-To:"> 
--<!ENTITY newsgroupsAddr.label   "Newsgroup:"> 
--<!ENTITY followupAddr.label   "Followup-To:"> 
--
-+<!ENTITY toAddr.label   "To:">
-+<!ENTITY ccAddr.label   "Cc:">
-+<!ENTITY bccAddr.label  "Bcc:">
-+<!ENTITY replyAddr.label   "Reply-To:">
-+<!ENTITY newsgroupsAddr.label   "Newsgroup:">
-+<!ENTITY followupAddr.label   "Followup-To:">
-diff --git a/suite/locales/en-US/chrome/mailnews/compose/messengercompose.dtd b/suite/locales/en-US/chrome/mailnews/compose/messengercompose.dtd
---- a/suite/locales/en-US/chrome/mailnews/compose/messengercompose.dtd
-+++ b/suite/locales/en-US/chrome/mailnews/compose/messengercompose.dtd
-@@ -109,22 +109,22 @@
- <!ENTITY spellingButton.label "Spelling">
- <!ENTITY saveButton.label "Save">
- <!ENTITY stopButton.label "Stop">
- 
- <!--tooltips-->
- <!-- We already inherit &menuBar.tooltip and &mailToolbar.tooltip from messenger.dtd -->
- <!ENTITY addressBar.tooltip "Address Bar">
- <!ENTITY formatToolbar.tooltip "Formatting Toolbar">
--<!ENTITY sendButton.tooltip "Send this message now"> 
--<!ENTITY sendlaterButton.tooltip "Send this message later"> 
--<!ENTITY addressButton.tooltip "Select a recipient from an Address Book"> 
--<!ENTITY attachButton.tooltip "Include an attachment"> 
--<!ENTITY saveButton.tooltip "Save this message"> 
--<!ENTITY stopButton.tooltip "Stop the current transfer"> 
-+<!ENTITY sendButton.tooltip "Send this message now">
-+<!ENTITY sendlaterButton.tooltip "Send this message later">
-+<!ENTITY addressButton.tooltip "Select a recipient from an Address Book">
-+<!ENTITY attachButton.tooltip "Include an attachment">
-+<!ENTITY saveButton.tooltip "Save this message">
-+<!ENTITY stopButton.tooltip "Stop the current transfer">
- 
- <!-- context menu items -->
- <!ENTITY openAttachment.label "Open">
- <!ENTITY openAttachment.accesskey "O">
- <!ENTITY renameAttachment.label "Rename…">
- <!ENTITY renameAttachment.accesskey "R">
- <!ENTITY deleteAttachment.accesskey "D">
- <!ENTITY selectAllAttachments.accesskey "A">
-diff --git a/suite/locales/en-US/chrome/mailnews/downloadheaders.dtd b/suite/locales/en-US/chrome/mailnews/downloadheaders.dtd
---- a/suite/locales/en-US/chrome/mailnews/downloadheaders.dtd
-+++ b/suite/locales/en-US/chrome/mailnews/downloadheaders.dtd
-@@ -1,19 +1,19 @@
- <!-- This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <!ENTITY all.label          "Download all headers">
- <!ENTITY all.accesskey      "D">
- <!--LOCALIZATION NOTE (download.label):
-     consider the download.label and headers.label as a single sentence
--	 with the number of headers to be downloaded inserted between them:
--	 EXAMPLE: "Download" <some number> "headers"
--	 Either label could be set to null ("") if required grammatically.
-+    with the number of headers to be downloaded inserted between them:
-+    EXAMPLE: "Download" <some number> "headers"
-+    Either label could be set to null ("") if required grammatically.
- -->
- 
- <!ENTITY download.label     "Download">
- <!ENTITY download.accesskey "o">
- <!--LOCALIZATION NOTE (headers.label): see note for download.label -->
- <!ENTITY headers.label      "headers">
- <!ENTITY headers.accesskey  "h">
- <!ENTITY mark.label         "Mark remaining headers as read">
-diff --git a/suite/locales/en-US/chrome/mailnews/fieldMapImport.dtd b/suite/locales/en-US/chrome/mailnews/fieldMapImport.dtd
---- a/suite/locales/en-US/chrome/mailnews/fieldMapImport.dtd
-+++ b/suite/locales/en-US/chrome/mailnews/fieldMapImport.dtd
-@@ -13,10 +13,8 @@
- <!ENTITY fieldMapImport.up.label "Move Up">
- <!ENTITY fieldMapImport.up.accesskey "U">
- <!ENTITY fieldMapImport.down.label "Move Down">
- <!ENTITY fieldMapImport.down.accesskey "D">
- <!ENTITY fieldMapImport.fieldListTitle "Address Book fields">
- <!ENTITY fieldMapImport.dataTitle "Record data to import">
- <!ENTITY fieldMapImport.skipFirstRecord.label "First record contains field names">
- <!ENTITY fieldMapImport.skipFirstRecord.accessKey "F">
--
--
-diff --git a/suite/locales/en-US/chrome/mailnews/folderpane.dtd b/suite/locales/en-US/chrome/mailnews/folderpane.dtd
---- a/suite/locales/en-US/chrome/mailnews/folderpane.dtd
-+++ b/suite/locales/en-US/chrome/mailnews/folderpane.dtd
-@@ -1,11 +1,11 @@
- <!-- This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
--<!ENTITY nameColumn.label   "Name"> 
--<!ENTITY unreadColumn.label "Unread"> 
--<!ENTITY totalColumn.label "Total"> 
--<!ENTITY folderSizeColumn.label "Size"> 
-+<!ENTITY nameColumn.label   "Name">
-+<!ENTITY unreadColumn.label "Unread">
-+<!ENTITY totalColumn.label "Total">
-+<!ENTITY folderSizeColumn.label "Size">
- <!ENTITY folderLocationToolbarItem.title "Folder Location">
- <!ENTITY mailViewsToolbarItem.title "Mail Views">
- <!ENTITY searchToolbarItem.title "Search">
- <!ENTITY searchSubjectOrAddress.placeholder "Search Subject or Address">
-diff --git a/suite/locales/en-US/chrome/mailnews/importMsgs.properties b/suite/locales/en-US/chrome/mailnews/importMsgs.properties
---- a/suite/locales/en-US/chrome/mailnews/importMsgs.properties
-+++ b/suite/locales/en-US/chrome/mailnews/importMsgs.properties
-@@ -1,23 +1,23 @@
- # This Source Code Form is subject to the terms of the Mozilla Public
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
- #
--# The following are used by the import code to display status/error 
-+# The following are used by the import code to display status/error
- # and informational messages
- #
- 
- # Success message when no address books are found to import
- ## @name IMPORT_NO_ADDRBOOKS
- ## @loc None
- 2000=No address books were found to import.
- 
--# Error: Address book import not intialized		
-+# Error: Address book import not intialized
- ## @name IMPORT_ERROR_AB_NOTINITIALIZED
- ## @loc None
- 2001=Unable to import address books: initialization error.
- 
- # Error: Unable to create the import thread
- ## @name IMPORT_ERROR_AB_NOTHREAD
- ## @loc None
- 2002=Unable to import address books: cannot create import thread.
-@@ -28,17 +28,17 @@ 2002=Unable to import address books: can
- # LOCALIZATION NOTE (Error 2003): Do not translate the word "%S" below.
- 2003=Error importing %S: unable to create address book.
- 
- # Success message when no mailboxes are found to import
- ## @name IMPORT_NO_MAILBOXES
- ## @loc None
- 2004=No mailboxes were found to import
- 
--# Error: Mailbox import not intialized		
-+# Error: Mailbox import not intialized
- ## @name IMPORT_ERROR_MB_NOTINITIALIZED
- ## @loc None
- 2005=Unable to import mailboxes, initialization error
- 
- # Error: Unable to create the import thread
- ## @name IMPORT_ERROR_MB_NOTHREAD
- ## @loc None
- 2006=Unable to import mailboxes, cannot create import thread
-diff --git a/suite/locales/en-US/chrome/mailnews/mailOverlay.dtd b/suite/locales/en-US/chrome/mailnews/mailOverlay.dtd
---- a/suite/locales/en-US/chrome/mailnews/mailOverlay.dtd
-+++ b/suite/locales/en-US/chrome/mailnews/mailOverlay.dtd
-@@ -1,14 +1,14 @@
- <!-- This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- 
- <!ENTITY  newMessageCmd.key               "M">
- <!ENTITY  newMessageCmd.label             "Message">
- <!ENTITY  newMessageCmd.accesskey         "m">
-- 
-+
- <!ENTITY  newContactCmd.label             "Contact…">
- <!ENTITY  newContactCmd.accesskey         "C">
-- 
-+
- <!ENTITY printButton.label "Print">
- <!ENTITY printButton.tooltip "Print this message">
-diff --git a/suite/locales/en-US/chrome/mailnews/mailTasksOverlay.dtd b/suite/locales/en-US/chrome/mailnews/mailTasksOverlay.dtd
---- a/suite/locales/en-US/chrome/mailnews/mailTasksOverlay.dtd
-+++ b/suite/locales/en-US/chrome/mailnews/mailTasksOverlay.dtd
-@@ -1,20 +1,20 @@
- <!-- This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- 
- <!-- LOCALIZATION NOTE (messengerCmd.label): DONT_TRANSLATE -->
--<!ENTITY messengerCmd.label					"Mail &amp; Newsgroups">
--<!ENTITY messengerCmd.accesskey				"m">
--<!ENTITY messengerCmd.commandkey			"2">
--<!ENTITY addressBookCmd.label				"Address Book">  
--<!ENTITY addressBookCmd.accesskey			"a">
--<!ENTITY addressBookCmd.commandkey			"5">
-+<!ENTITY messengerCmd.label                             "Mail &amp; Newsgroups">
-+<!ENTITY messengerCmd.accesskey                         "m">
-+<!ENTITY messengerCmd.commandkey                        "2">
-+<!ENTITY addressBookCmd.label                           "Address Book">
-+<!ENTITY addressBookCmd.accesskey                       "a">
-+<!ENTITY addressBookCmd.commandkey                      "5">
- 
- <!ENTITY taskMessenger.tooltip  "Mail &amp; Newsgroups">
- <!ENTITY taskAddressBook.tooltip  "Address Book">
- 
- <!-- searchAddressesCmd is also used by addressbook -->
- <!ENTITY searchAddressesCmd.label                       "Search Addresses…">
- <!ENTITY searchAddressesCmd.accesskey                   "A">
- 
-diff --git a/suite/locales/en-US/chrome/mailnews/mailViewList.dtd b/suite/locales/en-US/chrome/mailnews/mailViewList.dtd
---- a/suite/locales/en-US/chrome/mailnews/mailViewList.dtd
-+++ b/suite/locales/en-US/chrome/mailnews/mailViewList.dtd
-@@ -1,9 +1,8 @@
- <!-- This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <!--LOCALIZATION NOTE msgViewPickerOverlay.dtd UI for showing various views on a folder -->
- 
- <!ENTITY mailViewListTitle.label "Customize Message Views">
- <!ENTITY viewName.label "View Name">
--
-diff --git a/suite/locales/en-US/chrome/mailnews/mailViewSetup.dtd b/suite/locales/en-US/chrome/mailnews/mailViewSetup.dtd
---- a/suite/locales/en-US/chrome/mailnews/mailViewSetup.dtd
-+++ b/suite/locales/en-US/chrome/mailnews/mailViewSetup.dtd
-@@ -3,9 +3,8 @@
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <!--LOCALIZATION NOTE msgViewPickerOverlay.dtd UI for showing various views on a folder -->
- 
- <!ENTITY mailViewSetupTitle.label "Message View Setup">
- <!ENTITY mailViewHeading.label "Message view name:">
- <!ENTITY mailViewHeading.accesskey "e">
- <!ENTITY searchTermCaption.label "When this view is selected, display only messages that:">
--
-diff --git a/suite/locales/en-US/chrome/mailnews/messenger.dtd b/suite/locales/en-US/chrome/mailnews/messenger.dtd
---- a/suite/locales/en-US/chrome/mailnews/messenger.dtd
-+++ b/suite/locales/en-US/chrome/mailnews/messenger.dtd
-@@ -53,19 +53,19 @@
- <!ENTITY getNextNMsgCmd.accesskey "t">
- <!ENTITY sendUnsentCmd.label "Send Unsent Messages">
- <!ENTITY sendUnsentCmd.accesskey "d">
- <!ENTITY subscribeCmd.label "Subscribe…">
- <!ENTITY subscribeCmd.accesskey "b">
- <!ENTITY renameFolder.label "Rename Folder…">
- <!ENTITY renameFolder.accesskey "R">
- <!ENTITY compactFolders.label "Compact Folders">
--<!ENTITY compactFolders.accesskey		"F">
-+<!ENTITY compactFolders.accesskey "F">
- <!ENTITY emptyTrashCmd.label "Empty Trash">
--<!ENTITY emptyTrashCmd.accesskey		"y">
-+<!ENTITY emptyTrashCmd.accesskey "y">
- <!ENTITY offlineMenu.label "Offline">
- <!ENTITY offlineMenu.accesskey "l">
- <!ENTITY synchronizeOfflineCmd.label "Download/Sync Now…">
- <!ENTITY synchronizeOfflineCmd.accesskey "S">
- <!ENTITY settingsOfflineCmd.label "Offline Settings…">
- <!ENTITY settingsOfflineCmd.accesskey "e">
- <!ENTITY downloadSelectedCmd.label "Get Selected Messages">
- <!ENTITY downloadSelectedCmd.accesskey "t">
-@@ -279,33 +279,33 @@
- <!ENTITY msgMenu.label "Message">
- <!ENTITY msgMenu.accesskey "M">
- <!ENTITY newMsgCmd.label "New Message">
- <!ENTITY newMsgCmd.accesskey "N">
- <!ENTITY newNewMsgCmd.label "Message">
- <!ENTITY newNewMsgCmd.accesskey "M">
- <!ENTITY replyMsgCmd.label "Reply">
- <!ENTITY replyMsgCmd.accesskey "R">
--<!ENTITY replyMsgCmd.key	"r">
-+<!ENTITY replyMsgCmd.key "r">
- <!ENTITY replyListCmd.label "Reply to List">
- <!ENTITY replyListCmd.accesskey "y">
- <!ENTITY replyNewsgroupCmd.label "Reply to Newsgroup">
--<!ENTITY replyNewsgroupCmd.accesskey	"y">
-+<!ENTITY replyNewsgroupCmd.accesskey "y">
- <!ENTITY replySenderCmd.label "Reply to Sender Only">
- <!ENTITY replySenderCmd.accesskey "R">
- <!ENTITY replyToAllMsgCmd.label "Reply to All">
--<!ENTITY replyToAllMsgCmd.accesskey	"p">
--<!ENTITY replyToAllMsgCmd.key	"r">
-+<!ENTITY replyToAllMsgCmd.accesskey "p">
-+<!ENTITY replyToAllMsgCmd.key "r">
- <!ENTITY replyToSenderAndNewsgroupCmd.label "Reply to Sender and Newsgroup">
- <!ENTITY replyToSenderAndNewsgroupCmd.accesskey "p">
- <!ENTITY replyToAllRecipientsCmd.label "Reply to All Recipients">
- <!ENTITY replyToAllRecipientsCmd.accesskey "a">
- <!ENTITY forwardMsgCmd.label "Forward">
- <!ENTITY forwardMsgCmd.accesskey "F">
--<!ENTITY forwardMsgCmd.key	"l">
-+<!ENTITY forwardMsgCmd.key "l">
- <!ENTITY forwardAsMenu.label "Forward As">
- <!ENTITY forwardAsMenu.accesskey "o">
- <!ENTITY forwardAsInline.label "Inline">
- <!ENTITY forwardAsInline.accesskey "I">
- <!ENTITY forwardAsAttachmentCmd.label "Attachment">
- <!ENTITY forwardAsAttachmentCmd.accesskey "A">
- <!ENTITY editMsgAsNewCmd.label "Edit Message As New">
- <!ENTITY editMsgAsNewCmd.accesskey "E">
-diff --git a/suite/locales/en-US/chrome/mailnews/msgAccountCentral.dtd b/suite/locales/en-US/chrome/mailnews/msgAccountCentral.dtd
---- a/suite/locales/en-US/chrome/mailnews/msgAccountCentral.dtd
-+++ b/suite/locales/en-US/chrome/mailnews/msgAccountCentral.dtd
-@@ -1,25 +1,24 @@
- <!-- This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
--<!ENTITY emailSectionHdr.label        "Email"> 
--<!ENTITY readMsgsLink.label           "Read messages"> 
--<!ENTITY composeMsgLink.label         "Compose a new message"> 
-+<!ENTITY emailSectionHdr.label        "Email">
-+<!ENTITY readMsgsLink.label           "Read messages">
-+<!ENTITY composeMsgLink.label         "Compose a new message">
- 
--<!ENTITY newsSectionHdr.label         "Newsgroups"> 
--<!ENTITY subscribeNewsLink.label      "Manage newsgroup subscriptions"> 
-+<!ENTITY newsSectionHdr.label         "Newsgroups">
-+<!ENTITY subscribeNewsLink.label      "Manage newsgroup subscriptions">
- 
--<!ENTITY accountsSectionHdr.label     "Accounts"> 
--<!ENTITY subscribeImapFolders.label   "Manage folder subscriptions"> 
--<!ENTITY settingsLink.label           "View settings for this account"> 
--<!ENTITY newAcctLink.label            "Create a new account"> 
-+<!ENTITY accountsSectionHdr.label     "Accounts">
-+<!ENTITY subscribeImapFolders.label   "Manage folder subscriptions">
-+<!ENTITY settingsLink.label           "View settings for this account">
-+<!ENTITY newAcctLink.label            "Create a new account">
- 
--<!ENTITY advFeaturesSectionHdr.label  "Advanced Features"> 
--<!ENTITY searchMsgsLink.label         "Search messages"> 
-+<!ENTITY advFeaturesSectionHdr.label  "Advanced Features">
-+<!ENTITY searchMsgsLink.label         "Search messages">
- <!ENTITY filtersLink.label            "Manage message filters">
- <!ENTITY junkSettings.label           "Junk mail settings">
- <!ENTITY offlineLink.label            "Offline settings">
- 
- <!ENTITY feedsSectionHdr.label        "Feeds">
- <!ENTITY subscribeFeeds.label         "Manage subscriptions">
--
-diff --git a/suite/locales/en-US/chrome/mailnews/msgFolderPickerOverlay.dtd b/suite/locales/en-US/chrome/mailnews/msgFolderPickerOverlay.dtd
---- a/suite/locales/en-US/chrome/mailnews/msgFolderPickerOverlay.dtd
-+++ b/suite/locales/en-US/chrome/mailnews/msgFolderPickerOverlay.dtd
-@@ -1,7 +1,7 @@
- <!-- This Source Code Form is subject to the terms of the Mozilla Public
-    - License, v. 2.0. If a copy of the MPL was not distributed with this
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <!-- Labels -->
--<!ENTITY newfolderchoosethis.label			"choose this for the parent">
--<!ENTITY filemessageschoosethis.label			"choose this folder">
-+<!ENTITY newfolderchoosethis.label                      "choose this for the parent">
-+<!ENTITY filemessageschoosethis.label                   "choose this folder">
-diff --git a/suite/locales/en-US/chrome/mailnews/msgSynchronize.dtd b/suite/locales/en-US/chrome/mailnews/msgSynchronize.dtd
---- a/suite/locales/en-US/chrome/mailnews/msgSynchronize.dtd
-+++ b/suite/locales/en-US/chrome/mailnews/msgSynchronize.dtd
-@@ -15,9 +15,9 @@
- <!ENTITY sendMessage.label "Send Unsent messages">
- <!ENTITY sendMessage.accesskey "S">
- <!ENTITY workOffline.label "Work offline once download and/or sync is complete">
- <!ENTITY workOffline.accesskey "W">
- <!ENTITY selectButton.label "Select…">
- <!ENTITY selectButton.accesskey "E">
- <!ENTITY MsgSelectDesc.label "Choose mail folders and newsgroups for offline use.">
- <!ENTITY MsgSelectInd.label "Download">
--<!ENTITY MsgSelectItems.label "Folders and Newsgroups">
-\ No newline at end of file
-+<!ENTITY MsgSelectItems.label "Folders and Newsgroups">
-diff --git a/suite/locales/en-US/chrome/mailnews/outlookImportMsgs.properties b/suite/locales/en-US/chrome/mailnews/outlookImportMsgs.properties
---- a/suite/locales/en-US/chrome/mailnews/outlookImportMsgs.properties
-+++ b/suite/locales/en-US/chrome/mailnews/outlookImportMsgs.properties
-@@ -1,14 +1,14 @@
- # This Source Code Form is subject to the terms of the Mozilla Public
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
- #
--# The following are used by the outlook express import code to display status/error 
-+# The following are used by the outlook express import code to display status/error
- # and informational messages
- #
- 
- # Short name of import module
- ## @name OUTLOOKIMPORT_NAME
- ## @loc None
- ## LOCALIZATION NOTE (2000): DONT_TRANSLATE
- 2000=Outlook
-@@ -65,13 +65,8 @@ 2007=Bad parameter passed to import addr
- 2008=Error accessing file for address book %S.
- 
- # Error message
- ## @name OUTLOOKIMPORT_ADDRESS_CONVERTERROR
- ## @loc None
- ## LOCALIZATION NOTE (2009): In this item, don't translate "%S"
- ## The variable %S will receive the name of the address book
- 2009=Error importing address book %S, all addresses may not have been imported.
--
--
--
--
--
-diff --git a/suite/locales/en-US/chrome/mailnews/pgpmime.properties b/suite/locales/en-US/chrome/mailnews/pgpmime.properties
---- a/suite/locales/en-US/chrome/mailnews/pgpmime.properties
-+++ b/suite/locales/en-US/chrome/mailnews/pgpmime.properties
-@@ -4,10 +4,8 @@
- 
- #
- # The following are used by the pgpmime content type handler
- #
- 
- # LOCALIZATION NOTE(pgpMimeNeedsAddon): The text can contain HTML tags.
- # %S is the url to Enigmail on AMO supplied from preferences.
- pgpMimeNeedsAddon=This is an encrypted OpenPGP message.<br>In order to decrypt this mail, you need to install an <a href="%S">OpenPGP add-on</a>.
--
--
-diff --git a/suite/locales/en-US/chrome/mailnews/pref/am-server-advanced.dtd b/suite/locales/en-US/chrome/mailnews/pref/am-server-advanced.dtd
---- a/suite/locales/en-US/chrome/mailnews/pref/am-server-advanced.dtd
-+++ b/suite/locales/en-US/chrome/mailnews/pref/am-server-advanced.dtd
-@@ -17,15 +17,15 @@
- <!ENTITY personalNamespace.label "Personal namespace:">
- <!ENTITY personalNamespace.accesskey "P">
- <!ENTITY publicNamespace.label "Public (shared):">
- <!ENTITY publicNamespace.accesskey "u">
- <!ENTITY otherUsersNamespace.label "Other Users:">
- <!ENTITY otherUsersNamespace.accesskey "O">
- <!ENTITY overrideNamespaces.label "Allow server to override these namespaces">
- <!ENTITY overrideNamespaces.accesskey "A">
--<!ENTITY pop3DeferringDesc.label "When downloading mail from this account's server, use the following folder to store new messages:" >
-+<!ENTITY pop3DeferringDesc.label "When downloading mail from this account's server, use the following folder to store new messages:">
- <!ENTITY accountInbox.label "Inbox for this account">
- <!ENTITY accountInbox.accesskey "s">
- <!ENTITY deferToServer.label "Inbox for different account">
- <!ENTITY deferToServer.accesskey "d">
- <!ENTITY deferGetNewMail.label "Include this server when getting new mail">
- <!ENTITY deferGetNewMail.accesskey "I">
-diff --git a/suite/locales/en-US/chrome/mailnews/pref/am-server-top.dtd b/suite/locales/en-US/chrome/mailnews/pref/am-server-top.dtd
---- a/suite/locales/en-US/chrome/mailnews/pref/am-server-top.dtd
-+++ b/suite/locales/en-US/chrome/mailnews/pref/am-server-top.dtd
-@@ -55,18 +55,18 @@
- <!-- LOCALIZATION NOTE (expungeOnExit.label) : do not translate two of "&quot;" in below line -->
- <!ENTITY expungeOnExit.label "Clean up (&quot;Expunge&quot;) Inbox on Exit">
- <!ENTITY expungeOnExit.accesskey "E">
- <!ENTITY emptyTrashOnExit.label "Empty Trash on Exit">
- <!ENTITY emptyTrashOnExit.accesskey "x">
- <!ENTITY loginAtStartup.label "Check for new messages at startup">
- <!ENTITY loginAtStartup.accesskey "C">
- <!-- LOCALIZATION NOTE (maxMessagesStart.label) : translate below 2 lines with grammar dependency
--    maxMessengerStart.label will be followed by maxMessagesEnd.label with the number
--	 of messages between them
-+     maxMessengerStart.label will be followed by maxMessagesEnd.label with the number
-+     of messages between them
- -->
- <!ENTITY maxMessagesStart.label "Ask me before downloading more than">
- <!ENTITY maxMessagesStart.accesskey "m">
- <!-- LOCALIZATION NOTE (maxMessagesEnd.label) : see note for maxMessagesStart.label -->
- <!ENTITY maxMessagesEnd.label "messages">
- <!ENTITY alwaysAuthenticate.label "Always request authentication when connecting to this server">
- <!ENTITY alwaysAuthenticate.accesskey "w">
- <!ENTITY newsrcFilePath.label "newsrc file:">
-diff --git a/suite/locales/en-US/chrome/mailnews/pref/pref-directory-add.dtd b/suite/locales/en-US/chrome/mailnews/pref/pref-directory-add.dtd
---- a/suite/locales/en-US/chrome/mailnews/pref/pref-directory-add.dtd
-+++ b/suite/locales/en-US/chrome/mailnews/pref/pref-directory-add.dtd
-@@ -29,17 +29,17 @@
- <!ENTITY scopeSubtree.accesskey            "S">
- <!ENTITY return.label                      "Don't return more than">
- <!ENTITY return.accesskey                  "r">
- <!ENTITY results.label                     "results">
- <!ENTITY offlineText.label                 "You can download a local copy of this directory so that it is available for use when you are working offline.">
- <!ENTITY saslMechanism.label               "Login method: ">
- <!ENTITY saslMechanism.accesskey           "m">
- <!ENTITY saslOff.label                     "Simple">
--<!ENTITY saslOff.accesskey		   "l">
-+<!ENTITY saslOff.accesskey                 "l">
- <!ENTITY saslGSSAPI.label                  "Kerberos (GSSAPI)">
--<!ENTITY saslGSSAPI.accesskey		   "K">
-+<!ENTITY saslGSSAPI.accesskey              "K">
- 
--<!-- Localization note: this is here because the width of the dialog 
-+<!-- Localization note: this is here because the width of the dialog
-      is determined by the width of the base DN box; and that is likely
-      to vary somewhat with the language.
- -->
- <!ENTITY newDirectoryWidth                 "36em">
-diff --git a/suite/locales/en-US/chrome/mailnews/smime.properties b/suite/locales/en-US/chrome/mailnews/smime.properties
---- a/suite/locales/en-US/chrome/mailnews/smime.properties
-+++ b/suite/locales/en-US/chrome/mailnews/smime.properties
-@@ -2,12 +2,10 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
- #
- # The following are used by the smime content type handler
- #
- 
- ## @name NS_MSG_UNABLE_TO_OPEN_FILE
--## LOCALIZATION NOTE: the text can contain HTML tags. 
-+## LOCALIZATION NOTE: the text can contain HTML tags.
- 1000=This is an <B>ENCRYPTED</B> or <B>SIGNED</B> message.<br> This Mail application does not support encrypted or signed mail.
--
--
-diff --git a/suite/locales/en-US/chrome/mailnews/textImportMsgs.properties b/suite/locales/en-US/chrome/mailnews/textImportMsgs.properties
---- a/suite/locales/en-US/chrome/mailnews/textImportMsgs.properties
-+++ b/suite/locales/en-US/chrome/mailnews/textImportMsgs.properties
-@@ -1,14 +1,14 @@
- # This Source Code Form is subject to the terms of the Mozilla Public
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
- #
--# The following are used by the outlook express import code to display status/error 
-+# The following are used by the outlook express import code to display status/error
- # and informational messages
- #
- 
- # Short name of import module
- ## @name TEXTIMPORT_NAME
- ## @loc None
- 2000=Text file (LDIF, .tab, .csv, .txt)
- 
-@@ -36,11 +36,8 @@ 2004=Bad parameter passed to import addr
- ## @name TEXTIMPORT_ADDRESS_BADSOURCEFILE
- ## @loc None
- 2005=Error accessing file for address book %S.
- 
- # Error message
- ## @name TEXTIMPORT_ADDRESS_CONVERTERROR
- ## @loc None
- 2006=Error importing address book %S, all addresses may not have been imported.
--
--
--

+ 0 - 52
comm-esr60/comm-esr60/patches/1531724-66a1.patch

@@ -1,52 +0,0 @@
-# HG changeset patch
-# User Jorg K <jorgk@jorgk.com>
-# Date 1551470533 -3600
-# Node ID dbe0e592f60ec874de1f70446f6964ca6e749cf6
-# Parent  e900c1711bb83885e2eeac7e7f198f8ac76fcb83
-Bug 1531724 - Revert SupportUTF8 registry setting from bug 1521007. r=me
-
-diff --git a/mail/installer/windows/nsis/shared.nsh b/mail/installer/windows/nsis/shared.nsh
---- a/mail/installer/windows/nsis/shared.nsh
-+++ b/mail/installer/windows/nsis/shared.nsh
-@@ -353,17 +353,17 @@
-   ${GetLongPath} "$INSTDIR\uninstall\helper.exe" $7
-   ${GetLongPath} "$INSTDIR\mozMapi32_InUse.dll" $6
- 
-   StrCpy $0 "Software\Clients\Mail\${ClientsRegName}"
- 
-   WriteRegStr ${RegKey} "$0" "" "${ClientsRegName}"
-   WriteRegStr ${RegKey} "$0\DefaultIcon" "" "$8,0"
-   WriteRegStr ${RegKey} "$0" "DLLPath" "$6"
--  WriteRegDWORD ${RegKey} "$0" "SupportUTF8" 1
-+  WriteRegDWORD ${RegKey} "$0" "SupportUTF8" 0
- 
-   ; The MapiProxy dll can exist in multiple installs of the application.
-   ; Registration occurs as follows with the last action to occur being the one
-   ; that wins:
-   ; On install and software update when helper.exe runs with the /PostUpdate
-   ; argument. On setting the application as the system's default application
-   ; using Window's "Set program access and defaults".
- 
-diff --git a/suite/installer/windows/nsis/shared.nsh b/suite/installer/windows/nsis/shared.nsh
---- a/suite/installer/windows/nsis/shared.nsh
-+++ b/suite/installer/windows/nsis/shared.nsh
-@@ -462,17 +462,17 @@
-   ${GetLongPath} "$INSTDIR\${FileMainEXE}" $8
-   ${GetLongPath} "$INSTDIR\uninstall\helper.exe" $7
-   ${GetLongPath} "$INSTDIR\mozMapi32_InUse.dll" $6
- 
-   StrCpy $0 "Software\Clients\Mail\${BrandFullNameInternal}"
-   WriteRegStr HKLM "$0" "" "${BrandFullNameInternal}"
-   WriteRegStr HKLM "$0\DefaultIcon" "" "$8,0"
-   WriteRegStr HKLM "$0" "DLLPath" "$6"
--  WriteRegDWORD HKLM "$0" "SupportUTF8" 1
-+  WriteRegDWORD HKLM "$0" "SupportUTF8" 0
- 
-   ; The MapiProxy dll can be used by multiple applications but
-   ; is only registered for the last application installed. When the last
-   ; application installed is uninstalled MapiProxy.dll will no longer be
-   ; registered.
-   !ifndef NO_LOG
-     ${LogHeader} "DLL Registration"
-   !endif
-

+ 0 - 31
comm-esr60/comm-esr60/patches/1533062-oslibs-67a1.patch

@@ -1,31 +0,0 @@
-# HG changeset patch
-# User Frank-Rainer Grahl <frgrahl@gmx.net>
-# Parent  c74182e0eb4ead2ad78c34628296f42c4205f678
-Bug 1533062 - Remove os libraries from SeaMonkey Windows shell link step.
-
-diff --git a/suite/components/shell/moz.build b/suite/components/shell/moz.build
---- a/suite/components/shell/moz.build
-+++ b/suite/components/shell/moz.build
-@@ -21,22 +21,16 @@ XPIDL_MODULE = 'shellservice'
- 
- if CONFIG['OS_ARCH'] == 'WINNT':
-     SOURCES += [
-         'nsWindowsShellService.cpp',
-     ]
-     LOCAL_INCLUDES += [
-         '../../../mozilla/other-licenses/nsis/Contrib/CityHash/cityhash',
-     ]
--    OS_LIBS += [
--        'ole32',
--        'version',
--        'uuid',
--        'shell32',
--    ]
- elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
-     SOURCES += ['nsMacShellService.cpp']
- elif 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']:
-     SOURCES += ['nsGNOMEShellService.cpp']
- 
- if SOURCES:
-     EXTRA_COMPONENTS += [
-         'nsSetDefault.js',

+ 0 - 1278
comm-esr60/comm-esr60/patches/1534028-omni-67a1.patch

@@ -1,1278 +0,0 @@
-# HG changeset patch
-# User Frank-Rainer Grahl <frgrahl@gmx.net>
-# Parent  7c758a91b6ce7d1e15a771c0b565a2d57c085066
-Bug 1534028 - Remove MOZ_OMNIJAR defines from suite.
-
-diff --git a/suite/app/Makefile.in b/suite/app/Makefile.in
---- a/suite/app/Makefile.in
-+++ b/suite/app/Makefile.in
-@@ -70,17 +70,16 @@ ifneq (,$(filter-out WINNT Darwin,$(OS_A
- 
- libs:: $(MOZ_APP_NAME).1
- 	$(INSTALL) $< $(DIST)/man/man1
- 
- GARBAGE += $(MOZ_APP_NAME).1
- GARBAGE += $(addprefix $(DIST)/bin/defaults/pref/, browser-prefs.js)
- endif
- 
--ifeq ($(MOZ_PACKAGER_FORMAT),omni)
- # Make extensions end up as XPIs instead of flat chrome when doing omni.jar.
- # Extensions that appear in dist/bin/extensions will get bundled with the
- # application, ones that appear in dist/bin/distribution/extensions will be
- # copied to the profile in installed builds.
- # NOTE: This is a hack to run this at the end of compilation, would be nicer
- # if this was done right away for built-in extensions in omnijar mode.
- 
- ABS_STAGE = $(abspath $(STAGEDIST))
-@@ -103,21 +102,18 @@ DONOTPACK = {e2fda1a4%
- pack-ext: $(STAGEDIST)
- 	@echo "Packaging extensions..."
- 	$(foreach dir,$(filter-out $(DONOTPACK),$(subst $(STAGEDIST)/,,$(wildcard $(STAGEDIST)/*))),$(_PACKAGE_EXTENSIONS))
- 
- tools::
- 	@$(MAKE) pack-ext STAGEDIST="$(DIST)/bin/extensions"
- 	@$(MAKE) pack-ext STAGEDIST="$(DIST)/bin/distribution/extensions"
- 
--endif
--
-+# Additional macOS build steps.
- ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
--# Anything below the above ifdef won't be included in mac builds. So be very
--# careful what you add here.
- 
- MAC_APP_NAME = $(MOZ_APP_DISPLAYNAME)
- 
- ifdef MOZ_DEBUG
- MAC_APP_NAME := $(MAC_APP_NAME)Debug
- endif
- 
- LOWER_MAC_APP_NAME = $(shell echo $(MAC_APP_NAME) | tr '[A-Z]' '[a-z]')
-diff --git a/suite/installer/Makefile.in b/suite/installer/Makefile.in
---- a/suite/installer/Makefile.in
-+++ b/suite/installer/Makefile.in
-@@ -199,20 +199,16 @@ endif
- 
- ifdef LLVM_SYMBOLIZER
- DEFINES += -DLLVM_SYMBOLIZER=$(notdir $(LLVM_SYMBOLIZER))
- endif
- ifdef MOZ_CLANG_RT_ASAN_LIB_PATH
- DEFINES += -DMOZ_CLANG_RT_ASAN_LIB=$(notdir $(MOZ_CLANG_RT_ASAN_LIB_PATH))
- endif
- 
--ifeq ($(MOZ_PACKAGER_FORMAT),omni)
--DEFINES += -DMOZ_OMNIJAR=1
--endif
--
- libs::
- 	$(MAKE) -C $(DEPTH)/suite/locales langpack
- 
- ifeq (WINNT,$(OS_ARCH))
- PKGCOMP_FIND_OPTS =
- else
- PKGCOMP_FIND_OPTS = -L
- endif
-diff --git a/suite/installer/package-manifest.in b/suite/installer/package-manifest.in
---- a/suite/installer/package-manifest.in
-+++ b/suite/installer/package-manifest.in
-@@ -549,35 +549,20 @@
- @RESPATH@/chrome/devtools@JAREXT@
- @RESPATH@/chrome/devtools.manifest
- @RESPATH@/@PREF_DIR@/devtools.js
- @RESPATH@/@PREF_DIR@/debugger.js
- 
- ; classic theme
- @RESPATH@/chrome/classic@JAREXT@
- @RESPATH@/chrome/classic.manifest
--#ifdef MOZ_OMNIJAR
- @RESPATH@/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi
--#else
--@RESPATH@/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/chrome.manifest
--@RESPATH@/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png
--@RESPATH@/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf
--@RESPATH@/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/preview.png
--#endif
- 
- ; modern theme
--#ifdef MOZ_OMNIJAR
- @RESPATH@/extensions/modern@themes.mozilla.org.xpi
--#else
--@RESPATH@/extensions/modern@themes.mozilla.org/chrome/modern@JAREXT@
--@RESPATH@/extensions/modern@themes.mozilla.org/chrome.manifest
--@RESPATH@/extensions/modern@themes.mozilla.org/icon.png
--@RESPATH@/extensions/modern@themes.mozilla.org/install.rdf
--@RESPATH@/extensions/modern@themes.mozilla.org/preview.png
--#endif
- 
- ; shell icons
- #ifdef MOZ_GTK
- @RESPATH@/chrome/icons/default/bookmarkproperties.png
- @RESPATH@/chrome/icons/default/bookmarkproperties16.png
- @RESPATH@/chrome/icons/default/bookmarkproperties48.png
- @RESPATH@/chrome/icons/default/default.png
- @RESPATH@/chrome/icons/default/default16.png
-@@ -891,72 +876,30 @@ bin/libfreebl_32int64_3.so
- #endif
- 
- #ifdef MOZ_CLANG_RT_ASAN_LIB
- @BINPATH@/@MOZ_CLANG_RT_ASAN_LIB@
- #endif
- 
- [chatzilla]
- #ifdef MOZ_IRC
--#ifdef MOZ_OMNIJAR
- @RESPATH@/distribution/extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}.xpi
--#else
--@RESPATH@/extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/chatzilla@JAREXT@
--#ifdef MOZ_GTK
--@RESPATH@/extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/icons/default/chatzilla-window.xpm
--@RESPATH@/extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/icons/default/chatzilla-window16.xpm
--#elifdef XP_WIN32
--@RESPATH@/extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/icons/default/chatzilla-window.ico
--#endif
--@RESPATH@/extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome.manifest
--@RESPATH@/extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/components/chatzilla-service.js
--@RESPATH@/extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/components/components.list
--@RESPATH@/extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/install.rdf
--#endif
- #ifdef LOCALE_BUILD
--#ifdef MOZ_OMNIJAR
- @RESPATH@/distribution/extensions/langpack-@AB_CD@@chatzilla.mozilla.org.xpi
--#else
--@RESPATH@/extensions/langpack-@AB_CD@@chatzilla.mozilla.org/chrome/chatzilla@JAREXT@
--@RESPATH@/extensions/langpack-@AB_CD@@chatzilla.mozilla.org/chrome.manifest
--@RESPATH@/extensions/langpack-@AB_CD@@chatzilla.mozilla.org/install.js
--@RESPATH@/extensions/langpack-@AB_CD@@chatzilla.mozilla.org/install.rdf
--#endif
- #endif
- #endif
- 
- [inspector]
- #ifdef MOZ_DOMINSPECTOR
--#ifdef MOZ_OMNIJAR
- @RESPATH@/distribution/extensions/inspector@mozilla.org.xpi
--#else
--@RESPATH@/extensions/inspector@mozilla.org/install.rdf
--@RESPATH@/extensions/inspector@mozilla.org/chrome.manifest
--@RESPATH@/extensions/inspector@mozilla.org/chrome/inspector@JAREXT@
--#ifdef MOZ_GTK
--@RESPATH@/extensions/inspector@mozilla.org/platform/Linux/chrome/icons/default/winInspectorMain16.xpm
--@RESPATH@/extensions/inspector@mozilla.org/platform/Linux/chrome/icons/default/winInspectorMain.xpm
--#elifdef XP_WIN32
--@RESPATH@/extensions/inspector@mozilla.org/platform/WINNT/chrome/icons/default/winInspectorMain.ico
--#endif
--@RESPATH@/extensions/inspector@mozilla.org/components/components.list
--@RESPATH@/extensions/inspector@mozilla.org/components/inspector-cmdline.js
--@RESPATH@/extensions/inspector@mozilla.org/defaults/preferences/inspector.js
--#endif
- #endif
- 
- [debugqa]
- #ifdef MOZ_PACKAGE_DEBUGQA
--#ifdef MOZ_OMNIJAR
- @RESPATH@/distribution/extensions/debugQA@mozilla.org.xpi
--#else
--@RESPATH@/extensions/debugQA@mozilla.org/install.rdf
--@RESPATH@/extensions/debugQA@mozilla.org/chrome.manifest
--@RESPATH@/extensions/debugQA@mozilla.org/chrome/debugqa@JAREXT@
--#endif
- #endif
- 
- #ifdef MOZ_CALENDAR
- [calendar]
- #ifdef NIGHTLY_BUILD
- @RESPATH@/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/
- #else
- @RESPATH@/distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/
-diff --git a/suite/installer/removed-files.in b/suite/installer/removed-files.in
---- a/suite/installer/removed-files.in
-+++ b/suite/installer/removed-files.in
-@@ -97,22 +97,20 @@
- @DIR_MACOS@chrome/icons/default/main-window16.xpm
- @DIR_MACOS@chrome/icons/default/messengerWindow.xpm
- @DIR_MACOS@chrome/icons/default/messengerWindow16.xpm
- @DIR_MACOS@chrome/icons/default/msgcomposeWindow.xpm
- @DIR_MACOS@chrome/icons/default/msgcomposeWindow16.xpm
- @DIR_MACOS@chrome/icons/default/venkman-window.xpm
- @DIR_MACOS@chrome/icons/default/venkman-window16.xpm
- @DIR_MACOS@chrome/installed-chrome.txt
--#ifdef MOZ_OMNIJAR
- @DIR_MACOS@distribution/extensions/{f13b157f-b174-47e7-a34d-4815ddfdfeb8}.xpi
- #ifdef LOCALE_BUILD
- @DIR_MACOS@distribution/extensions/langpack-@AB_CD@@venkman.mozilla.org.xpi
- #endif
--#endif
- #ifdef MOZ_GTK
- @DIR_MACOS@chrome/icons/default/venkman-window.png
- @DIR_MACOS@chrome/icons/default/venkman-window16.png
- @DIR_MACOS@chrome/icons/default/venkman-window48.png
- #elifdef XP_WIN32
- chrome/icons/default/venkman-window.ico
- #endif
- #ifndef ENABLE_TESTS
-@@ -554,535 +552,523 @@ Throbber-small.gif
-   #endif
-   @DIR_MACOS@updater.ini
- #endif
- @DIR_MACOS@@DLL_PREFIX@xpcom@DLL_SUFFIX@
- @DIR_MACOS@@DLL_PREFIX@xpcom_core@DLL_SUFFIX@
- @DIR_MACOS@xpicleanup@BIN_SUFFIX@
- @DIR_MACOS@@DLL_PREFIX@xpistub@DLL_SUFFIX@
- 
--#ifdef MOZ_OMNIJAR
--  @DIR_MACOS@chrome/be.jar
--  @DIR_MACOS@chrome/ca.jar
--  @DIR_MACOS@chrome/cs.jar
--  @DIR_MACOS@chrome/de.jar
--  @DIR_MACOS@chrome/en-GB.jar
--  @DIR_MACOS@chrome/en-US.jar
--  @DIR_MACOS@chrome/es-AR.jar
--  @DIR_MACOS@chrome/es-ES.jar
--  @DIR_MACOS@chrome/fi.jar
--  @DIR_MACOS@chrome/fr.jar
--  @DIR_MACOS@chrome/gl.jar
--  @DIR_MACOS@chrome/hu.jar
--  @DIR_MACOS@chrome/it.jar
--  @DIR_MACOS@chrome/ja.jar
--  @DIR_MACOS@chrome/ja-JP-mac.jar
--  @DIR_MACOS@chrome/ka.jar
--  @DIR_MACOS@chrome/lt.jar
--  @DIR_MACOS@chrome/nb-NO.jar
--  @DIR_MACOS@chrome/nl.jar
--  @DIR_MACOS@chrome/pl.jar
--  @DIR_MACOS@chrome/pt-BR.jar
--  @DIR_MACOS@chrome/pt-PT.jar
--  @DIR_MACOS@chrome/ro.jar
--  @DIR_MACOS@chrome/ru.jar
--  @DIR_MACOS@chrome/si.jar
--  @DIR_MACOS@chrome/sk.jar
--  @DIR_MACOS@chrome/sv-SE.jar
--  @DIR_MACOS@chrome/tr.jar
--  @DIR_MACOS@chrome/zh-CN.jar
--  @DIR_MACOS@chrome/comm.jar
--  @DIR_MACOS@chrome/toolkit.jar
--  @DIR_MACOS@chrome/classic.jar
--  @DIR_MACOS@chrome/pippki.jar
--  @DIR_MACOS@chrome/messenger.jar
--  @DIR_MACOS@chrome/newsblog.jar
--  @DIR_MACOS@chrome/gloda.jar
--  @DIR_MACOS@chrome/nonlocalized.manifest
--  @DIR_MACOS@chrome/localized.manifest
--  @DIR_MACOS@components/addonManager.js
--  @DIR_MACOS@components/Aitc.js
--  @DIR_MACOS@components/AlarmsManager.js
--  @DIR_MACOS@components/amContentHandler.js
--  @DIR_MACOS@components/amWebInstallListener.js
--  @DIR_MACOS@components/BrowserElementParent.js
--  @DIR_MACOS@components/ColorAnalyzer.js
--  @DIR_MACOS@components/ConsoleAPI.js
--  @DIR_MACOS@components/ContactManager.js
--  @DIR_MACOS@components/contentAreaDropListener.js
--  @DIR_MACOS@components/contentSecurityPolicy.js
--  @DIR_MACOS@components/crypto-SDR.js
--  @DIR_MACOS@components/FeedConverter.js
--  @DIR_MACOS@components/FeedProcessor.js
--  @DIR_MACOS@components/FeedWriter.js
--  @DIR_MACOS@components/glautocomp.js
--  @DIR_MACOS@components/GPSDGeolocationProvider.js
--  @DIR_MACOS@components/jsconsole-clhandler.js
--  @DIR_MACOS@components/jsmimeemitter.js
--  @DIR_MACOS@components/mdn-service.js
--  @DIR_MACOS@components/msgAsyncPrompter.js
--  @DIR_MACOS@components/NetworkGeolocationProvider.js
--  @DIR_MACOS@components/NotificationsComponents.manifest
--  @DIR_MACOS@components/newsblog.js
--  @DIR_MACOS@components/nsAbAutoCompleteMyDomain.js
--  @DIR_MACOS@components/nsAbAutoCompleteSearch.js
--  @DIR_MACOS@components/nsAbLDAPAttributeMap.js
--  @DIR_MACOS@components/nsAbout.js
--  @DIR_MACOS@components/nsAboutCertError.js
--  @DIR_MACOS@components/nsAboutData.js
--  @DIR_MACOS@components/nsAboutFeeds.js
--  @DIR_MACOS@components/nsAboutLife.js
--  @DIR_MACOS@components/nsAboutRights.js
--  @DIR_MACOS@components/nsAboutSessionRestore.js
--  @DIR_MACOS@components/nsBadCertHandler.js
--  @DIR_MACOS@components/nsBlocklistService.js
--  @DIR_MACOS@components/nsBrowserContentHandler.js
--  @DIR_MACOS@components/nsComposerCmdLineHandler.js
--  @DIR_MACOS@components/nsContentDispatchChooser.js
--  @DIR_MACOS@components/nsContentPrefService.js
--  @DIR_MACOS@components/nsDefaultCLH.js
--  @DIR_MACOS@components/nsDOMIdentity.js
--  #ifdef UNIX_BUT_NOT_MAC
--    components/nsFilePicker.js
--  #endif
--  @DIR_MACOS@components/nsFormAutoComplete.js
--  @DIR_MACOS@components/nsFormHistory.js
--  @DIR_MACOS@components/nsHandlerService.js
--  @DIR_MACOS@components/nsHelperAppDlg.js
--  @DIR_MACOS@components/nsIDService.js
--  @DIR_MACOS@components/nsINIProcessor.js
--  @DIR_MACOS@components/nsInputListAutoComplete.js
--  @DIR_MACOS@components/nsLDAPProtocolHandler.js
--  @DIR_MACOS@components/nsLivemarkService.js
--  @DIR_MACOS@components/nsLoginInfo.js
--  @DIR_MACOS@components/nsLoginManager.js
--  @DIR_MACOS@components/nsLoginManagerPrompter.js
--  @DIR_MACOS@components/nsMailNewsCommandLineHandler.js
--  @DIR_MACOS@components/nsMsgTraitService.js
--  @DIR_MACOS@components/nsPlacesAutoComplete.js
--  @DIR_MACOS@components/nsPlacesDBFlush.js
--  @DIR_MACOS@components/nsPlacesExpiration.js
--  @DIR_MACOS@components/nsPrompter.js
--  @DIR_MACOS@components/nsSearchService.js
--  @DIR_MACOS@components/nsSearchSuggestions.js
--  @DIR_MACOS@components/nsSessionStartup.js
--  @DIR_MACOS@components/nsSessionStore.js
--  @DIR_MACOS@components/nsSetDefault.js
--  @DIR_MACOS@components/nsSidebar.js
--  @DIR_MACOS@components/nsSMTPProtocolHandler.js
--  @DIR_MACOS@components/nsSuiteGlue.js
--  @DIR_MACOS@components/nsTaggingService.js
--  @DIR_MACOS@components/nsTryToClose.js
--  @DIR_MACOS@components/nsTypeAheadFind.js
--  @DIR_MACOS@components/nsUpdateService.js
--  @DIR_MACOS@components/nsUpdateServiceStub.js
--  @DIR_MACOS@components/nsUpdateTimerManager.js
--  @DIR_MACOS@components/nsURLFormatter.js
--  @DIR_MACOS@components/nsWebHandlerApp.js
--  @DIR_MACOS@components/offlineStartup.js
--  @DIR_MACOS@components/PlacesCategoriesStarter.js
--  @DIR_MACOS@components/SettingsManager.js
--  @DIR_MACOS@components/SiteSpecificUserAgent.js
--  @DIR_MACOS@components/smileApplication.js
--  @DIR_MACOS@components/smime-service.js
--  @DIR_MACOS@components/storage-Legacy.js
--  @DIR_MACOS@components/storage-mozStorage.js
--  @DIR_MACOS@components/TCPSocket.js
--  @DIR_MACOS@components/txEXSLTRegExFunctions.js
--  @DIR_MACOS@components/WebContentConverter.js
--  @DIR_MACOS@components/browser.xpt
--  @DIR_MACOS@components/binary.manifest
--  @DIR_MACOS@components/interfaces.manifest
--  @DIR_MACOS@components/mail.xpt
--  @DIR_MACOS@defaults/profile/bookmarks.html
--  @DIR_MACOS@defaults/pref/browser-prefs.js
--  @DIR_MACOS@defaults/pref/composer.js
--  @DIR_MACOS@defaults/pref/mailnews.js
--  @DIR_MACOS@defaults/pref/mdn.js
--  @DIR_MACOS@defaults/pref/services-aitc.js
--  @DIR_MACOS@defaults/pref/services-notifications.js
--  @DIR_MACOS@defaults/pref/smime.js
--  @DIR_MACOS@defaults/autoconfig/
--  @DIR_MACOS@defaults/autoconfig/platform.js
--  @DIR_MACOS@defaults/autoconfig/prefcalls.js
--  @DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/
--  @DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/
--  @DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/chatzilla.jar
--  @DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/icons/
--  @DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/icons/default/
--  @DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/icons/default/chatzilla-window.xpm
--  @DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/icons/default/chatzilla-window16.xpm
--  @DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/icons/default/chatzilla-window.ico
--  @DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome.manifest
--  @DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/components/
--  @DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/components/chatzilla-service.js
--  @DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/install.rdf
--  @DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}.xpi
--#ifndef MOZ_OMNIJAR
--  @DIR_MACOS@extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi
--#else
--  @DIR_MACOS@extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/
--  @DIR_MACOS@extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/chrome.manifest
--  @DIR_MACOS@extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png
--  @DIR_MACOS@extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf
--  @DIR_MACOS@extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/preview.png
-+@DIR_MACOS@chrome/be.jar
-+@DIR_MACOS@chrome/ca.jar
-+@DIR_MACOS@chrome/cs.jar
-+@DIR_MACOS@chrome/de.jar
-+@DIR_MACOS@chrome/en-GB.jar
-+@DIR_MACOS@chrome/en-US.jar
-+@DIR_MACOS@chrome/es-AR.jar
-+@DIR_MACOS@chrome/es-ES.jar
-+@DIR_MACOS@chrome/fi.jar
-+@DIR_MACOS@chrome/fr.jar
-+@DIR_MACOS@chrome/gl.jar
-+@DIR_MACOS@chrome/hu.jar
-+@DIR_MACOS@chrome/it.jar
-+@DIR_MACOS@chrome/ja.jar
-+@DIR_MACOS@chrome/ja-JP-mac.jar
-+@DIR_MACOS@chrome/ka.jar
-+@DIR_MACOS@chrome/lt.jar
-+@DIR_MACOS@chrome/nb-NO.jar
-+@DIR_MACOS@chrome/nl.jar
-+@DIR_MACOS@chrome/pl.jar
-+@DIR_MACOS@chrome/pt-BR.jar
-+@DIR_MACOS@chrome/pt-PT.jar
-+@DIR_MACOS@chrome/ro.jar
-+@DIR_MACOS@chrome/ru.jar
-+@DIR_MACOS@chrome/si.jar
-+@DIR_MACOS@chrome/sk.jar
-+@DIR_MACOS@chrome/sv-SE.jar
-+@DIR_MACOS@chrome/tr.jar
-+@DIR_MACOS@chrome/zh-CN.jar
-+@DIR_MACOS@chrome/comm.jar
-+@DIR_MACOS@chrome/toolkit.jar
-+@DIR_MACOS@chrome/classic.jar
-+@DIR_MACOS@chrome/pippki.jar
-+@DIR_MACOS@chrome/messenger.jar
-+@DIR_MACOS@chrome/newsblog.jar
-+@DIR_MACOS@chrome/gloda.jar
-+@DIR_MACOS@chrome/nonlocalized.manifest
-+@DIR_MACOS@chrome/localized.manifest
-+@DIR_MACOS@components/addonManager.js
-+@DIR_MACOS@components/Aitc.js
-+@DIR_MACOS@components/AlarmsManager.js
-+@DIR_MACOS@components/amContentHandler.js
-+@DIR_MACOS@components/amWebInstallListener.js
-+@DIR_MACOS@components/BrowserElementParent.js
-+@DIR_MACOS@components/ColorAnalyzer.js
-+@DIR_MACOS@components/ConsoleAPI.js
-+@DIR_MACOS@components/ContactManager.js
-+@DIR_MACOS@components/contentAreaDropListener.js
-+@DIR_MACOS@components/contentSecurityPolicy.js
-+@DIR_MACOS@components/crypto-SDR.js
-+@DIR_MACOS@components/FeedConverter.js
-+@DIR_MACOS@components/FeedProcessor.js
-+@DIR_MACOS@components/FeedWriter.js
-+@DIR_MACOS@components/glautocomp.js
-+@DIR_MACOS@components/GPSDGeolocationProvider.js
-+@DIR_MACOS@components/jsconsole-clhandler.js
-+@DIR_MACOS@components/jsmimeemitter.js
-+@DIR_MACOS@components/mdn-service.js
-+@DIR_MACOS@components/msgAsyncPrompter.js
-+@DIR_MACOS@components/NetworkGeolocationProvider.js
-+@DIR_MACOS@components/NotificationsComponents.manifest
-+@DIR_MACOS@components/newsblog.js
-+@DIR_MACOS@components/nsAbAutoCompleteMyDomain.js
-+@DIR_MACOS@components/nsAbAutoCompleteSearch.js
-+@DIR_MACOS@components/nsAbLDAPAttributeMap.js
-+@DIR_MACOS@components/nsAbout.js
-+@DIR_MACOS@components/nsAboutCertError.js
-+@DIR_MACOS@components/nsAboutData.js
-+@DIR_MACOS@components/nsAboutFeeds.js
-+@DIR_MACOS@components/nsAboutLife.js
-+@DIR_MACOS@components/nsAboutRights.js
-+@DIR_MACOS@components/nsAboutSessionRestore.js
-+@DIR_MACOS@components/nsBadCertHandler.js
-+@DIR_MACOS@components/nsBlocklistService.js
-+@DIR_MACOS@components/nsBrowserContentHandler.js
-+@DIR_MACOS@components/nsComposerCmdLineHandler.js
-+@DIR_MACOS@components/nsContentDispatchChooser.js
-+@DIR_MACOS@components/nsContentPrefService.js
-+@DIR_MACOS@components/nsDefaultCLH.js
-+@DIR_MACOS@components/nsDOMIdentity.js
-+#ifdef UNIX_BUT_NOT_MAC
-+  components/nsFilePicker.js
- #endif
--  @DIR_MACOS@extensions/{f13b157f-b174-47e7-a34d-4815ddfdfeb8}/
--  @DIR_MACOS@extensions/{f13b157f-b174-47e7-a34d-4815ddfdfeb8}/chrome/
--  @DIR_MACOS@extensions/{f13b157f-b174-47e7-a34d-4815ddfdfeb8}/chrome/venkman.jar
--  @DIR_MACOS@extensions/{f13b157f-b174-47e7-a34d-4815ddfdfeb8}/chrome.manifest
--  @DIR_MACOS@extensions/{f13b157f-b174-47e7-a34d-4815ddfdfeb8}/components/
--  @DIR_MACOS@extensions/{f13b157f-b174-47e7-a34d-4815ddfdfeb8}/components/venkman-service.js
--  @DIR_MACOS@extensions/{f13b157f-b174-47e7-a34d-4815ddfdfeb8}/install.rdf
--  @DIR_MACOS@extensions/{f13b157f-b174-47e7-a34d-4815ddfdfeb8}.xpi
--  @DIR_MACOS@extensions/debugQA@mozilla.org/
--  @DIR_MACOS@extensions/debugQA@mozilla.org/install.rdf
--  @DIR_MACOS@extensions/debugQA@mozilla.org/chrome.manifest
--  @DIR_MACOS@extensions/debugQA@mozilla.org/chrome/
--  @DIR_MACOS@extensions/debugQA@mozilla.org/chrome/debugqa.jar
--  @DIR_MACOS@extensions/debugQA@mozilla.org.xpi
--  @DIR_MACOS@extensions/inspector@mozilla.org/
--  @DIR_MACOS@extensions/inspector@mozilla.org/install.rdf
--  @DIR_MACOS@extensions/inspector@mozilla.org/chrome.manifest
--  @DIR_MACOS@extensions/inspector@mozilla.org/chrome/
--  @DIR_MACOS@extensions/inspector@mozilla.org/chrome/inspector.jar
--  @DIR_MACOS@extensions/inspector@mozilla.org/platform/
--  @DIR_MACOS@extensions/inspector@mozilla.org/platform/Linux/
--  @DIR_MACOS@extensions/inspector@mozilla.org/platform/Linux/chrome/
--  @DIR_MACOS@extensions/inspector@mozilla.org/platform/Linux/chrome/icons/
--  @DIR_MACOS@extensions/inspector@mozilla.org/platform/Linux/chrome/icons/default/
--  @DIR_MACOS@extensions/inspector@mozilla.org/platform/Linux/chrome/icons/default/winInspectorMain16.xpm
--  @DIR_MACOS@extensions/inspector@mozilla.org/platform/Linux/chrome/icons/default/winInspectorMain.xpm
--  @DIR_MACOS@extensions/inspector@mozilla.org/platform/WINNT/chrome/icons/default/winInspectorMain.ico
--  @DIR_MACOS@extensions/inspector@mozilla.org/components/
--  @DIR_MACOS@extensions/inspector@mozilla.org/components/inspector-cmdline.js
--  @DIR_MACOS@extensions/inspector@mozilla.org/defaults/
--  @DIR_MACOS@extensions/inspector@mozilla.org/defaults/preferences/
--  @DIR_MACOS@extensions/inspector@mozilla.org/defaults/preferences/inspector.js
--  @DIR_MACOS@extensions/inspector@mozilla.org.xpi
--  @DIR_MACOS@extensions/langpack-ca@chatzilla.mozilla.org/chrome/chatzilla.jar
--  @DIR_MACOS@extensions/langpack-ca@chatzilla.mozilla.org/chrome/chatzilla.manifest
--  @DIR_MACOS@extensions/langpack-ca@chatzilla.mozilla.org/chrome.manifest
--  @DIR_MACOS@extensions/langpack-ca@chatzilla.mozilla.org/install.js
--  @DIR_MACOS@extensions/langpack-ca@chatzilla.mozilla.org/install.rdf
--  @DIR_MACOS@extensions/langpack-ca@chatzilla.mozilla.org.xpi
--  @DIR_MACOS@extensions/langpack-cs@chatzilla.mozilla.org/chrome/chatzilla.jar
--  @DIR_MACOS@extensions/langpack-cs@chatzilla.mozilla.org/chrome/chatzilla.manifest
--  @DIR_MACOS@extensions/langpack-cs@chatzilla.mozilla.org/chrome.manifest
--  @DIR_MACOS@extensions/langpack-cs@chatzilla.mozilla.org/install.js
--  @DIR_MACOS@extensions/langpack-cs@chatzilla.mozilla.org/install.rdf
--  @DIR_MACOS@extensions/langpack-cs@chatzilla.mozilla.org.xpi
--  @DIR_MACOS@extensions/langpack-de@chatzilla.mozilla.org/chrome/chatzilla.jar
--  @DIR_MACOS@extensions/langpack-de@chatzilla.mozilla.org/chrome/chatzilla.manifest
--  @DIR_MACOS@extensions/langpack-de@chatzilla.mozilla.org/chrome.manifest
--  @DIR_MACOS@extensions/langpack-de@chatzilla.mozilla.org/install.js
--  @DIR_MACOS@extensions/langpack-de@chatzilla.mozilla.org/install.rdf
--  @DIR_MACOS@extensions/langpack-de@chatzilla.mozilla.org.xpi
--  @DIR_MACOS@extensions/langpack-es-ES@chatzilla.mozilla.org/chrome/chatzilla.jar
--  @DIR_MACOS@extensions/langpack-es-ES@chatzilla.mozilla.org/chrome/chatzilla.manifest
--  @DIR_MACOS@extensions/langpack-es-ES@chatzilla.mozilla.org/chrome.manifest
--  @DIR_MACOS@extensions/langpack-es-ES@chatzilla.mozilla.org/install.js
--  @DIR_MACOS@extensions/langpack-es-ES@chatzilla.mozilla.org/install.rdf
--  @DIR_MACOS@extensions/langpack-es-ES@chatzilla.mozilla.org.xpi
--  @DIR_MACOS@extensions/langpack-fi@chatzilla.mozilla.org/install.rdf
--  @DIR_MACOS@extensions/langpack-fi@chatzilla.mozilla.org/chrome/chatzilla.jar
--  @DIR_MACOS@extensions/langpack-fi@chatzilla.mozilla.org/chrome/chatzilla.manifest
--  @DIR_MACOS@extensions/langpack-fi@chatzilla.mozilla.org/chrome.manifest
--  @DIR_MACOS@extensions/langpack-fi@chatzilla.mozilla.org/install.js
--  @DIR_MACOS@extensions/langpack-fi@chatzilla.mozilla.org.xpi
--  @DIR_MACOS@extensions/langpack-fr@chatzilla.mozilla.org/chrome/chatzilla.jar
--  @DIR_MACOS@extensions/langpack-fr@chatzilla.mozilla.org/chrome/chatzilla.manifest
--  @DIR_MACOS@extensions/langpack-fr@chatzilla.mozilla.org/chrome.manifest
--  @DIR_MACOS@extensions/langpack-fr@chatzilla.mozilla.org/install.js
--  @DIR_MACOS@extensions/langpack-fr@chatzilla.mozilla.org/install.rdf
--  @DIR_MACOS@extensions/langpack-fr@chatzilla.mozilla.org.xpi
--  @DIR_MACOS@extensions/langpack-it@chatzilla.mozilla.org/chrome/chatzilla.jar
--  @DIR_MACOS@extensions/langpack-it@chatzilla.mozilla.org/chrome/chatzilla.manifest
--  @DIR_MACOS@extensions/langpack-it@chatzilla.mozilla.org/chrome.manifest
--  @DIR_MACOS@extensions/langpack-it@chatzilla.mozilla.org/install.js
--  @DIR_MACOS@extensions/langpack-it@chatzilla.mozilla.org/install.rdf
--  @DIR_MACOS@extensions/langpack-it@chatzilla.mozilla.org.xpi
--  @DIR_MACOS@extensions/langpack-ja@chatzilla.mozilla.org/chrome/chatzilla.jar
--  @DIR_MACOS@extensions/langpack-ja@chatzilla.mozilla.org/chrome/chatzilla.manifest
--  @DIR_MACOS@extensions/langpack-ja@chatzilla.mozilla.org/chrome.manifest
--  @DIR_MACOS@extensions/langpack-ja@chatzilla.mozilla.org/install.js
--  @DIR_MACOS@extensions/langpack-ja@chatzilla.mozilla.org/install.rdf
--  @DIR_MACOS@extensions/langpack-ja@chatzilla.mozilla.org.xpi
--  @DIR_MACOS@extensions/langpack-ja-JP-mac@chatzilla.mozilla.org/chrome/chatzilla.jar
--  @DIR_MACOS@extensions/langpack-ja-JP-mac@chatzilla.mozilla.org/chrome/chatzilla.manifest
--  @DIR_MACOS@extensions/langpack-ja-JP-mac@chatzilla.mozilla.org/chrome.manifest
--  @DIR_MACOS@extensions/langpack-ja-JP-mac@chatzilla.mozilla.org/install.js
--  @DIR_MACOS@extensions/langpack-ja-JP-mac@chatzilla.mozilla.org/install.rdf
--  @DIR_MACOS@extensions/langpack-ja-JP-mac@chatzilla.mozilla.org.xpi
--  @DIR_MACOS@extensions/langpack-nb-NO@chatzilla.mozilla.org/chrome/chatzilla.jar
--  @DIR_MACOS@extensions/langpack-nb-NO@chatzilla.mozilla.org/chrome/chatzilla.manifest
--  @DIR_MACOS@extensions/langpack-nb-NO@chatzilla.mozilla.org/chrome.manifest
--  @DIR_MACOS@extensions/langpack-nb-NO@chatzilla.mozilla.org/install.js
--  @DIR_MACOS@extensions/langpack-nb-NO@chatzilla.mozilla.org/install.rdf
--  @DIR_MACOS@extensions/langpack-nb-NO@chatzilla.mozilla.org.xpi
--  @DIR_MACOS@extensions/langpack-pl@chatzilla.mozilla.org/install.rdf
--  @DIR_MACOS@extensions/langpack-pl@chatzilla.mozilla.org/chrome/chatzilla.jar
--  @DIR_MACOS@extensions/langpack-pl@chatzilla.mozilla.org/chrome/chatzilla.manifest
--  @DIR_MACOS@extensions/langpack-pl@chatzilla.mozilla.org/chrome.manifest
--  @DIR_MACOS@extensions/langpack-pl@chatzilla.mozilla.org/install.js
--  @DIR_MACOS@extensions/langpack-pl@chatzilla.mozilla.org.xpi
--  @DIR_MACOS@extensions/langpack-pt-BR@chatzilla.mozilla.org/chrome/chatzilla.jar
--  @DIR_MACOS@extensions/langpack-pt-BR@chatzilla.mozilla.org/chrome/chatzilla.manifest
--  @DIR_MACOS@extensions/langpack-pt-BR@chatzilla.mozilla.org/chrome.manifest
--  @DIR_MACOS@extensions/langpack-pt-BR@chatzilla.mozilla.org/install.js
--  @DIR_MACOS@extensions/langpack-pt-BR@chatzilla.mozilla.org/install.rdf
--  @DIR_MACOS@extensions/langpack-pt-BR@chatzilla.mozilla.org.xpi
--  @DIR_MACOS@extensions/langpack-pt-PT@chatzilla.mozilla.org/chrome/chatzilla.jar
--  @DIR_MACOS@extensions/langpack-pt-PT@chatzilla.mozilla.org/chrome/chatzilla.manifest
--  @DIR_MACOS@extensions/langpack-pt-PT@chatzilla.mozilla.org/chrome.manifest
--  @DIR_MACOS@extensions/langpack-pt-PT@chatzilla.mozilla.org/install.js
--  @DIR_MACOS@extensions/langpack-pt-PT@chatzilla.mozilla.org/install.rdf
--  @DIR_MACOS@extensions/langpack-pt-PT@chatzilla.mozilla.org.xpi
--  @DIR_MACOS@extensions/langpack-ru@chatzilla.mozilla.org/chrome/chatzilla.jar
--  @DIR_MACOS@extensions/langpack-ru@chatzilla.mozilla.org/chrome/chatzilla.manifest
--  @DIR_MACOS@extensions/langpack-ru@chatzilla.mozilla.org/chrome.manifest
--  @DIR_MACOS@extensions/langpack-ru@chatzilla.mozilla.org/install.js
--  @DIR_MACOS@extensions/langpack-ru@chatzilla.mozilla.org/install.rdf
--  @DIR_MACOS@extensions/langpack-ru@chatzilla.mozilla.org.xpi
--  @DIR_MACOS@extensions/langpack-si@chatzilla.mozilla.org/chrome/chatzilla.jar
--  @DIR_MACOS@extensions/langpack-si@chatzilla.mozilla.org/chrome/chatzilla.manifest
--  @DIR_MACOS@extensions/langpack-si@chatzilla.mozilla.org/chrome.manifest
--  @DIR_MACOS@extensions/langpack-si@chatzilla.mozilla.org/install.js
--  @DIR_MACOS@extensions/langpack-si@chatzilla.mozilla.org/install.rdf
--  @DIR_MACOS@extensions/langpack-si@chatzilla.mozilla.org.xpi
--  @DIR_MACOS@extensions/langpack-sk@chatzilla.mozilla.org/chrome/chatzilla.jar
--  @DIR_MACOS@extensions/langpack-sk@chatzilla.mozilla.org/chrome/chatzilla.manifest
--  @DIR_MACOS@extensions/langpack-sk@chatzilla.mozilla.org/chrome.manifest
--  @DIR_MACOS@extensions/langpack-sk@chatzilla.mozilla.org/install.js
--  @DIR_MACOS@extensions/langpack-sk@chatzilla.mozilla.org/install.rdf
--  @DIR_MACOS@extensions/langpack-sk@chatzilla.mozilla.org.xpi
--  @DIR_MACOS@extensions/langpack-sv-SE@chatzilla.mozilla.org/chrome/chatzilla.jar
--  @DIR_MACOS@extensions/langpack-sv-SE@chatzilla.mozilla.org/chrome/chatzilla.manifest
--  @DIR_MACOS@extensions/langpack-sv-SE@chatzilla.mozilla.org/chrome.manifest
--  @DIR_MACOS@extensions/langpack-sv-SE@chatzilla.mozilla.org/install.js
--  @DIR_MACOS@extensions/langpack-sv-SE@chatzilla.mozilla.org/install.rdf
--  @DIR_MACOS@extensions/langpack-sv-SE@chatzilla.mozilla.org.xpi
--  @DIR_MACOS@extensions/langpack-ca@venkman.mozilla.org/chrome/venkman.jar
--  @DIR_MACOS@extensions/langpack-ca@venkman.mozilla.org/chrome/venkman.manifest
--  @DIR_MACOS@extensions/langpack-ca@venkman.mozilla.org/chrome.manifest
--  @DIR_MACOS@extensions/langpack-ca@venkman.mozilla.org/install.js
--  @DIR_MACOS@extensions/langpack-ca@venkman.mozilla.org/install.rdf
--  @DIR_MACOS@extensions/langpack-ca@venkman.mozilla.org.xpi
--  @DIR_MACOS@extensions/langpack-de@venkman.mozilla.org/chrome/venkman.jar
--  @DIR_MACOS@extensions/langpack-de@venkman.mozilla.org/chrome/venkman.manifest
--  @DIR_MACOS@extensions/langpack-de@venkman.mozilla.org/chrome.manifest
--  @DIR_MACOS@extensions/langpack-de@venkman.mozilla.org/install.js
--  @DIR_MACOS@extensions/langpack-de@venkman.mozilla.org/install.rdf
--  @DIR_MACOS@extensions/langpack-de@venkman.mozilla.org.xpi
--  @DIR_MACOS@extensions/langpack-es-ES@venkman.mozilla.org/chrome/venkman.jar
--  @DIR_MACOS@extensions/langpack-es-ES@venkman.mozilla.org/chrome/venkman.manifest
--  @DIR_MACOS@extensions/langpack-es-ES@venkman.mozilla.org/chrome.manifest
--  @DIR_MACOS@extensions/langpack-es-ES@venkman.mozilla.org/install.js
--  @DIR_MACOS@extensions/langpack-es-ES@venkman.mozilla.org/install.rdf
--  @DIR_MACOS@extensions/langpack-es-ES@venkman.mozilla.org.xpi
--  @DIR_MACOS@extensions/langpack-fr@venkman.mozilla.org/chrome/venkman.jar
--  @DIR_MACOS@extensions/langpack-fr@venkman.mozilla.org/chrome/venkman.manifest
--  @DIR_MACOS@extensions/langpack-fr@venkman.mozilla.org/chrome.manifest
--  @DIR_MACOS@extensions/langpack-fr@venkman.mozilla.org/install.js
--  @DIR_MACOS@extensions/langpack-fr@venkman.mozilla.org/install.rdf
--  @DIR_MACOS@extensions/langpack-fr@venkman.mozilla.org.xpi
--  @DIR_MACOS@extensions/langpack-it@venkman.mozilla.org/chrome/venkman.jar
--  @DIR_MACOS@extensions/langpack-it@venkman.mozilla.org/chrome/venkman.manifest
--  @DIR_MACOS@extensions/langpack-it@venkman.mozilla.org/chrome.manifest
--  @DIR_MACOS@extensions/langpack-it@venkman.mozilla.org/install.js
--  @DIR_MACOS@extensions/langpack-it@venkman.mozilla.org/install.rdf
--  @DIR_MACOS@extensions/langpack-it@venkman.mozilla.org.xpi
--  @DIR_MACOS@extensions/langpack-ja@venkman.mozilla.org/chrome/venkman.jar
--  @DIR_MACOS@extensions/langpack-ja@venkman.mozilla.org/chrome/venkman.manifest
--  @DIR_MACOS@extensions/langpack-ja@venkman.mozilla.org/chrome.manifest
--  @DIR_MACOS@extensions/langpack-ja@venkman.mozilla.org/install.js
--  @DIR_MACOS@extensions/langpack-ja@venkman.mozilla.org/install.rdf
--  @DIR_MACOS@extensions/langpack-ja@venkman.mozilla.org.xpi
--  @DIR_MACOS@extensions/langpack-ja-JP-mac@venkman.mozilla.org/chrome/venkman.jar
--  @DIR_MACOS@extensions/langpack-ja-JP-mac@venkman.mozilla.org/chrome/venkman.manifest
--  @DIR_MACOS@extensions/langpack-ja-JP-mac@venkman.mozilla.org/chrome.manifest
--  @DIR_MACOS@extensions/langpack-ja-JP-mac@venkman.mozilla.org/install.js
--  @DIR_MACOS@extensions/langpack-ja-JP-mac@venkman.mozilla.org/install.rdf
--  @DIR_MACOS@extensions/langpack-ja-JP-mac@venkman.mozilla.org.xpi
--  @DIR_MACOS@extensions/langpack-nb-NO@venkman.mozilla.org/chrome/venkman.jar
--  @DIR_MACOS@extensions/langpack-nb-NO@venkman.mozilla.org/chrome/venkman.manifest
--  @DIR_MACOS@extensions/langpack-nb-NO@venkman.mozilla.org/chrome.manifest
--  @DIR_MACOS@extensions/langpack-nb-NO@venkman.mozilla.org/install.js
--  @DIR_MACOS@extensions/langpack-nb-NO@venkman.mozilla.org/install.rdf
--  @DIR_MACOS@extensions/langpack-nb-NO@venkman.mozilla.org.xpi
--  @DIR_MACOS@extensions/langpack-pl@venkman.mozilla.org/chrome/venkman.jar
--  @DIR_MACOS@extensions/langpack-pl@venkman.mozilla.org/chrome/venkman.manifest
--  @DIR_MACOS@extensions/langpack-pl@venkman.mozilla.org/chrome.manifest
--  @DIR_MACOS@extensions/langpack-pl@venkman.mozilla.org/install.js
--  @DIR_MACOS@extensions/langpack-pl@venkman.mozilla.org/install.rdf
--  @DIR_MACOS@extensions/langpack-pl@venkman.mozilla.org.xpi
--  @DIR_MACOS@extensions/langpack-ru@venkman.mozilla.org/chrome/venkman.jar
--  @DIR_MACOS@extensions/langpack-ru@venkman.mozilla.org/chrome/venkman.manifest
--  @DIR_MACOS@extensions/langpack-ru@venkman.mozilla.org/chrome.manifest
--  @DIR_MACOS@extensions/langpack-ri@venkman.mozilla.org/install.js
--  @DIR_MACOS@extensions/langpack-ru@venkman.mozilla.org/install.rdf
--  @DIR_MACOS@extensions/langpack-ru@venkman.mozilla.org.xpi
--  @DIR_MACOS@extensions/langpack-sv-SE@venkman.mozilla.org/chrome/venkman.jar
--  @DIR_MACOS@extensions/langpack-sv-SE@venkman.mozilla.org/chrome/venkman.manifest
--  @DIR_MACOS@extensions/langpack-sv-SE@venkman.mozilla.org/chrome.manifest
--  @DIR_MACOS@extensions/langpack-sv-SE@venkman.mozilla.org/install.js
--  @DIR_MACOS@extensions/langpack-sv-SE@venkman.mozilla.org/install.rdf
--  @DIR_MACOS@extensions/langpack-sv-SE@venkman.mozilla.org.xpi
--  @DIR_MACOS@extensions/modern@themes.mozilla.org/
--  @DIR_MACOS@extensions/modern@themes.mozilla.org/chrome/
--  @DIR_MACOS@extensions/modern@themes.mozilla.org/chrome/modern.jar
--  @DIR_MACOS@extensions/modern@themes.mozilla.org/chrome.manifest
--  @DIR_MACOS@extensions/modern@themes.mozilla.org/icon.png
--  @DIR_MACOS@extensions/modern@themes.mozilla.org/install.rdf
--  @DIR_MACOS@extensions/modern@themes.mozilla.org/preview.png
--  @DIR_MACOS@jssubloader/
--  @DIR_MACOS@modules/
--  @DIR_MACOS@modules/AddonLogging.jsm
--  @DIR_MACOS@modules/AddonManager.jsm
--  @DIR_MACOS@modules/AddonRepository.jsm
--  @DIR_MACOS@modules/AddonUpdateChecker.jsm
--  @DIR_MACOS@modules/BrowserElementPromptService.jsm
--  @DIR_MACOS@modules/CertUtils.jsm
--  @DIR_MACOS@modules/CommonDialog.jsm
--  @DIR_MACOS@modules/CrashSubmit.jsm
--  @DIR_MACOS@modules/CSPUtils.jsm
--  @DIR_MACOS@modules/ctypes.jsm
--  @DIR_MACOS@modules/debug.js
--  @DIR_MACOS@modules/dictUtils.js
--  @DIR_MACOS@modules/errUtils.js
--  @DIR_MACOS@modules/FileUtils.jsm
--  @DIR_MACOS@modules/folderUtils.jsm
--  @DIR_MACOS@modules/Geometry.jsm
--  @DIR_MACOS@modules/gloda/
--  @DIR_MACOS@modules/gloda/mimeTypeCategories.js
--  @DIR_MACOS@modules/gloda/log4moz.js
--  @DIR_MACOS@modules/gloda/gloda.js
--  @DIR_MACOS@modules/gloda/datamodel.js
--  @DIR_MACOS@modules/gloda/databind.js
--  @DIR_MACOS@modules/gloda/index_ab.js
--  @DIR_MACOS@modules/gloda/msg_search.js
--  @DIR_MACOS@modules/gloda/public.js
--  @DIR_MACOS@modules/gloda/noun_freetag.js
--  @DIR_MACOS@modules/gloda/utils.js
--  @DIR_MACOS@modules/gloda/suffixtree.js
--  @DIR_MACOS@modules/gloda/indexer.js
--  @DIR_MACOS@modules/gloda/fundattr.js
--  @DIR_MACOS@modules/gloda/dbview.js
--  @DIR_MACOS@modules/gloda/datastore.js
--  @DIR_MACOS@modules/gloda/everybody.js
--  @DIR_MACOS@modules/gloda/collection.js
--  @DIR_MACOS@modules/gloda/query.js
--  @DIR_MACOS@modules/gloda/noun_tag.js
--  @DIR_MACOS@modules/gloda/connotent.js
--  @DIR_MACOS@modules/gloda/noun_mimetype.js
--  @DIR_MACOS@modules/gloda/index_msg.js
--  @DIR_MACOS@modules/gloda/mimemsg.js
--  @DIR_MACOS@modules/gloda/explattr.js
--  @DIR_MACOS@modules/gloda/facet.js
--  @DIR_MACOS@modules/InlineSpellChecker.jsm
--  @DIR_MACOS@modules/IOUtils.js
--  @DIR_MACOS@modules/ISO8601DateUtils.jsm
--  @DIR_MACOS@modules/iteratorUtils.jsm
--  @DIR_MACOS@modules/jsTreeSelection.js
--  @DIR_MACOS@modules/LightweightThemeConsumer.jsm
--  @DIR_MACOS@modules/LightweightThemeManager.jsm
--  @DIR_MACOS@modules/mailnewsMigrator.js
--  @DIR_MACOS@modules/MailUtils.js
--  @DIR_MACOS@modules/Microformats.js
--  @DIR_MACOS@modules/NetUtil.jsm
--  @DIR_MACOS@modules/nsFormAutoCompleteResult.jsm
--  @DIR_MACOS@modules/PerfMeasurement.jsm
--  @DIR_MACOS@modules/PlacesDBUtils.jsm
--  @DIR_MACOS@modules/PlacesUIUtils.jsm
--  @DIR_MACOS@modules/PlacesUtils.jsm
--  @DIR_MACOS@modules/PluginProvider.jsm
--  @DIR_MACOS@modules/PluralForm.jsm
--  @DIR_MACOS@modules/PopupNotifications.jsm
--  @DIR_MACOS@modules/Sanitizer.jsm
--  @DIR_MACOS@modules/Services.jsm
--  @DIR_MACOS@modules/StringBundle.js
--  @DIR_MACOS@modules/services-common/async.js
--  @DIR_MACOS@modules/services-common/log4moz.js
--  @DIR_MACOS@modules/services-common/observers.js
--  @DIR_MACOS@modules/services-common/preferences.js
--  @DIR_MACOS@modules/services-common/rest.js
--  @DIR_MACOS@modules/services-common/stringbundle.js
--  @DIR_MACOS@modules/services-common/tokenserverclient.js
--  @DIR_MACOS@modules/services-common/utils.js
--  @DIR_MACOS@modules/services-crypto/utils.js
--  @DIR_MACOS@modules/services-crypto/WeaveCrypto.js
--  @DIR_MACOS@modules/services-notifications/service.js
--  @DIR_MACOS@modules/templateUtils.js
--  @DIR_MACOS@modules/traceHelper.js
--  @DIR_MACOS@modules/UserAgentOverrides.jsm
--  @DIR_MACOS@modules/utils.js
--  @DIR_MACOS@modules/virtualFolderWrapper.js
--  @DIR_MACOS@modules/WindowDraggingUtils.jsm
--  @DIR_MACOS@modules/WorkerTest.jsm
--  @DIR_MACOS@modules/WorkerTest_subworker.js
--  @DIR_MACOS@modules/WorkerTest_worker.js
--  @DIR_MACOS@modules/XPCOMUtils.jsm
--  @DIR_MACOS@modules/XPIProvider.jsm
--  @DIR_MACOS@greprefs.js
--  @DIR_MACOS@res/contenteditable.css
--  @DIR_MACOS@res/designmode.css
--  @DIR_MACOS@res/EditorOverride.css
--  @DIR_MACOS@res/grabber.gif
--  @DIR_MACOS@res/langGroups.properties
--  @DIR_MACOS@res/language.properties
--  @DIR_MACOS@res/svg.css
--  @DIR_MACOS@res/table-add-column-after-active.gif
--  @DIR_MACOS@res/table-add-column-after-hover.gif
--  @DIR_MACOS@res/table-add-column-after.gif
--  @DIR_MACOS@res/table-add-column-before-active.gif
--  @DIR_MACOS@res/table-add-column-before-hover.gif
--  @DIR_MACOS@res/table-add-column-before.gif
--  @DIR_MACOS@res/table-add-row-after-active.gif
--  @DIR_MACOS@res/table-add-row-after-hover.gif
--  @DIR_MACOS@res/table-add-row-after.gif
--  @DIR_MACOS@res/table-add-row-before-active.gif
--  @DIR_MACOS@res/table-add-row-before-hover.gif
--  @DIR_MACOS@res/table-add-row-before.gif
--  @DIR_MACOS@res/table-remove-column-active.gif
--  @DIR_MACOS@res/table-remove-column-hover.gif
--  @DIR_MACOS@res/table-remove-column.gif
--  @DIR_MACOS@res/table-remove-row-active.gif
--  @DIR_MACOS@res/table-remove-row-hover.gif
--  @DIR_MACOS@res/table-remove-row.gif
--  @DIR_MACOS@res/fonts/
--  @DIR_MACOS@res/fonts/mathfont.properties
--  @DIR_MACOS@res/fonts/mathfontStandardSymbolsL.properties
--  @DIR_MACOS@res/fonts/mathfontSTIXNonUnicode.properties
--  @DIR_MACOS@res/fonts/mathfontSTIXSize1.properties
--  @DIR_MACOS@res/fonts/mathfontSTIXSizeOneSym.properties
--  #ifdef XP_WIN
--    res/fonts/mathfontSymbol.properties
--  #endif
--  @DIR_MACOS@res/fonts/mathfontUnicode.properties
--  @DIR_MACOS@res/dtd/
--  @DIR_MACOS@res/dtd/mathml.dtd
--  @DIR_MACOS@res/dtd/xhtml11.dtd
--  @DIR_MACOS@res/html/
--  @DIR_MACOS@res/html/folder.png
--  @DIR_MACOS@res/entityTables/
--  @DIR_MACOS@res/entityTables/html40Latin1.properties
--  @DIR_MACOS@res/entityTables/html40Special.properties
--  @DIR_MACOS@res/entityTables/html40Symbols.properties
--  @DIR_MACOS@res/entityTables/htmlEntityVersions.properties
--  @DIR_MACOS@res/entityTables/mathml20.properties
--  @DIR_MACOS@res/entityTables/transliterate.properties
--  #ifdef MOZ_UPDATER
--    @DIR_MACOS@update.locale
--  #endif
--#else
--  @DIR_MACOS@components/Aitc.js
--  @DIR_MACOS@components/binary.manifest
--  @DIR_MACOS@defaults/pref/services-aitc.js
--  @DIR_MACOS@defaults/pref/services-notifications.js
--  @DIR_MACOS@omni.ja
-+@DIR_MACOS@components/nsFormAutoComplete.js
-+@DIR_MACOS@components/nsFormHistory.js
-+@DIR_MACOS@components/nsHandlerService.js
-+@DIR_MACOS@components/nsHelperAppDlg.js
-+@DIR_MACOS@components/nsIDService.js
-+@DIR_MACOS@components/nsINIProcessor.js
-+@DIR_MACOS@components/nsInputListAutoComplete.js
-+@DIR_MACOS@components/nsLDAPProtocolHandler.js
-+@DIR_MACOS@components/nsLivemarkService.js
-+@DIR_MACOS@components/nsLoginInfo.js
-+@DIR_MACOS@components/nsLoginManager.js
-+@DIR_MACOS@components/nsLoginManagerPrompter.js
-+@DIR_MACOS@components/nsMailNewsCommandLineHandler.js
-+@DIR_MACOS@components/nsMsgTraitService.js
-+@DIR_MACOS@components/nsPlacesAutoComplete.js
-+@DIR_MACOS@components/nsPlacesDBFlush.js
-+@DIR_MACOS@components/nsPlacesExpiration.js
-+@DIR_MACOS@components/nsPrompter.js
-+@DIR_MACOS@components/nsSearchService.js
-+@DIR_MACOS@components/nsSearchSuggestions.js
-+@DIR_MACOS@components/nsSessionStartup.js
-+@DIR_MACOS@components/nsSessionStore.js
-+@DIR_MACOS@components/nsSetDefault.js
-+@DIR_MACOS@components/nsSidebar.js
-+@DIR_MACOS@components/nsSMTPProtocolHandler.js
-+@DIR_MACOS@components/nsSuiteGlue.js
-+@DIR_MACOS@components/nsTaggingService.js
-+@DIR_MACOS@components/nsTryToClose.js
-+@DIR_MACOS@components/nsTypeAheadFind.js
-+@DIR_MACOS@components/nsUpdateService.js
-+@DIR_MACOS@components/nsUpdateServiceStub.js
-+@DIR_MACOS@components/nsUpdateTimerManager.js
-+@DIR_MACOS@components/nsURLFormatter.js
-+@DIR_MACOS@components/nsWebHandlerApp.js
-+@DIR_MACOS@components/offlineStartup.js
-+@DIR_MACOS@components/PlacesCategoriesStarter.js
-+@DIR_MACOS@components/SettingsManager.js
-+@DIR_MACOS@components/SiteSpecificUserAgent.js
-+@DIR_MACOS@components/smileApplication.js
-+@DIR_MACOS@components/smime-service.js
-+@DIR_MACOS@components/storage-Legacy.js
-+@DIR_MACOS@components/storage-mozStorage.js
-+@DIR_MACOS@components/TCPSocket.js
-+@DIR_MACOS@components/txEXSLTRegExFunctions.js
-+@DIR_MACOS@components/WebContentConverter.js
-+@DIR_MACOS@components/browser.xpt
-+@DIR_MACOS@components/binary.manifest
-+@DIR_MACOS@components/interfaces.manifest
-+@DIR_MACOS@components/mail.xpt
-+@DIR_MACOS@defaults/profile/bookmarks.html
-+@DIR_MACOS@defaults/pref/browser-prefs.js
-+@DIR_MACOS@defaults/pref/composer.js
-+@DIR_MACOS@defaults/pref/mailnews.js
-+@DIR_MACOS@defaults/pref/mdn.js
-+@DIR_MACOS@defaults/pref/services-aitc.js
-+@DIR_MACOS@defaults/pref/services-notifications.js
-+@DIR_MACOS@defaults/pref/smime.js
-+@DIR_MACOS@defaults/autoconfig/
-+@DIR_MACOS@defaults/autoconfig/platform.js
-+@DIR_MACOS@defaults/autoconfig/prefcalls.js
-+@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/
-+@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/
-+@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/chatzilla.jar
-+@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/icons/
-+@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/icons/default/
-+@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/icons/default/chatzilla-window.xpm
-+@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/icons/default/chatzilla-window16.xpm
-+@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/icons/default/chatzilla-window.ico
-+@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome.manifest
-+@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/components/
-+@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/components/chatzilla-service.js
-+@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/install.rdf
-+@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}.xpi
-+@DIR_MACOS@extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/
-+@DIR_MACOS@extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/chrome.manifest
-+@DIR_MACOS@extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png
-+@DIR_MACOS@extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf
-+@DIR_MACOS@extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/preview.png
-+@DIR_MACOS@extensions/{f13b157f-b174-47e7-a34d-4815ddfdfeb8}/
-+@DIR_MACOS@extensions/{f13b157f-b174-47e7-a34d-4815ddfdfeb8}/chrome/
-+@DIR_MACOS@extensions/{f13b157f-b174-47e7-a34d-4815ddfdfeb8}/chrome/venkman.jar
-+@DIR_MACOS@extensions/{f13b157f-b174-47e7-a34d-4815ddfdfeb8}/chrome.manifest
-+@DIR_MACOS@extensions/{f13b157f-b174-47e7-a34d-4815ddfdfeb8}/components/
-+@DIR_MACOS@extensions/{f13b157f-b174-47e7-a34d-4815ddfdfeb8}/components/venkman-service.js
-+@DIR_MACOS@extensions/{f13b157f-b174-47e7-a34d-4815ddfdfeb8}/install.rdf
-+@DIR_MACOS@extensions/{f13b157f-b174-47e7-a34d-4815ddfdfeb8}.xpi
-+@DIR_MACOS@extensions/debugQA@mozilla.org/
-+@DIR_MACOS@extensions/debugQA@mozilla.org/install.rdf
-+@DIR_MACOS@extensions/debugQA@mozilla.org/chrome.manifest
-+@DIR_MACOS@extensions/debugQA@mozilla.org/chrome/
-+@DIR_MACOS@extensions/debugQA@mozilla.org/chrome/debugqa.jar
-+@DIR_MACOS@extensions/debugQA@mozilla.org.xpi
-+@DIR_MACOS@extensions/inspector@mozilla.org/
-+@DIR_MACOS@extensions/inspector@mozilla.org/install.rdf
-+@DIR_MACOS@extensions/inspector@mozilla.org/chrome.manifest
-+@DIR_MACOS@extensions/inspector@mozilla.org/chrome/
-+@DIR_MACOS@extensions/inspector@mozilla.org/chrome/inspector.jar
-+@DIR_MACOS@extensions/inspector@mozilla.org/platform/
-+@DIR_MACOS@extensions/inspector@mozilla.org/platform/Linux/
-+@DIR_MACOS@extensions/inspector@mozilla.org/platform/Linux/chrome/
-+@DIR_MACOS@extensions/inspector@mozilla.org/platform/Linux/chrome/icons/
-+@DIR_MACOS@extensions/inspector@mozilla.org/platform/Linux/chrome/icons/default/
-+@DIR_MACOS@extensions/inspector@mozilla.org/platform/Linux/chrome/icons/default/winInspectorMain16.xpm
-+@DIR_MACOS@extensions/inspector@mozilla.org/platform/Linux/chrome/icons/default/winInspectorMain.xpm
-+@DIR_MACOS@extensions/inspector@mozilla.org/platform/WINNT/chrome/icons/default/winInspectorMain.ico
-+@DIR_MACOS@extensions/inspector@mozilla.org/components/
-+@DIR_MACOS@extensions/inspector@mozilla.org/components/inspector-cmdline.js
-+@DIR_MACOS@extensions/inspector@mozilla.org/defaults/
-+@DIR_MACOS@extensions/inspector@mozilla.org/defaults/preferences/
-+@DIR_MACOS@extensions/inspector@mozilla.org/defaults/preferences/inspector.js
-+@DIR_MACOS@extensions/inspector@mozilla.org.xpi
-+@DIR_MACOS@extensions/langpack-ca@chatzilla.mozilla.org/chrome/chatzilla.jar
-+@DIR_MACOS@extensions/langpack-ca@chatzilla.mozilla.org/chrome/chatzilla.manifest
-+@DIR_MACOS@extensions/langpack-ca@chatzilla.mozilla.org/chrome.manifest
-+@DIR_MACOS@extensions/langpack-ca@chatzilla.mozilla.org/install.js
-+@DIR_MACOS@extensions/langpack-ca@chatzilla.mozilla.org/install.rdf
-+@DIR_MACOS@extensions/langpack-ca@chatzilla.mozilla.org.xpi
-+@DIR_MACOS@extensions/langpack-cs@chatzilla.mozilla.org/chrome/chatzilla.jar
-+@DIR_MACOS@extensions/langpack-cs@chatzilla.mozilla.org/chrome/chatzilla.manifest
-+@DIR_MACOS@extensions/langpack-cs@chatzilla.mozilla.org/chrome.manifest
-+@DIR_MACOS@extensions/langpack-cs@chatzilla.mozilla.org/install.js
-+@DIR_MACOS@extensions/langpack-cs@chatzilla.mozilla.org/install.rdf
-+@DIR_MACOS@extensions/langpack-cs@chatzilla.mozilla.org.xpi
-+@DIR_MACOS@extensions/langpack-de@chatzilla.mozilla.org/chrome/chatzilla.jar
-+@DIR_MACOS@extensions/langpack-de@chatzilla.mozilla.org/chrome/chatzilla.manifest
-+@DIR_MACOS@extensions/langpack-de@chatzilla.mozilla.org/chrome.manifest
-+@DIR_MACOS@extensions/langpack-de@chatzilla.mozilla.org/install.js
-+@DIR_MACOS@extensions/langpack-de@chatzilla.mozilla.org/install.rdf
-+@DIR_MACOS@extensions/langpack-de@chatzilla.mozilla.org.xpi
-+@DIR_MACOS@extensions/langpack-es-ES@chatzilla.mozilla.org/chrome/chatzilla.jar
-+@DIR_MACOS@extensions/langpack-es-ES@chatzilla.mozilla.org/chrome/chatzilla.manifest
-+@DIR_MACOS@extensions/langpack-es-ES@chatzilla.mozilla.org/chrome.manifest
-+@DIR_MACOS@extensions/langpack-es-ES@chatzilla.mozilla.org/install.js
-+@DIR_MACOS@extensions/langpack-es-ES@chatzilla.mozilla.org/install.rdf
-+@DIR_MACOS@extensions/langpack-es-ES@chatzilla.mozilla.org.xpi
-+@DIR_MACOS@extensions/langpack-fi@chatzilla.mozilla.org/install.rdf
-+@DIR_MACOS@extensions/langpack-fi@chatzilla.mozilla.org/chrome/chatzilla.jar
-+@DIR_MACOS@extensions/langpack-fi@chatzilla.mozilla.org/chrome/chatzilla.manifest
-+@DIR_MACOS@extensions/langpack-fi@chatzilla.mozilla.org/chrome.manifest
-+@DIR_MACOS@extensions/langpack-fi@chatzilla.mozilla.org/install.js
-+@DIR_MACOS@extensions/langpack-fi@chatzilla.mozilla.org.xpi
-+@DIR_MACOS@extensions/langpack-fr@chatzilla.mozilla.org/chrome/chatzilla.jar
-+@DIR_MACOS@extensions/langpack-fr@chatzilla.mozilla.org/chrome/chatzilla.manifest
-+@DIR_MACOS@extensions/langpack-fr@chatzilla.mozilla.org/chrome.manifest
-+@DIR_MACOS@extensions/langpack-fr@chatzilla.mozilla.org/install.js
-+@DIR_MACOS@extensions/langpack-fr@chatzilla.mozilla.org/install.rdf
-+@DIR_MACOS@extensions/langpack-fr@chatzilla.mozilla.org.xpi
-+@DIR_MACOS@extensions/langpack-it@chatzilla.mozilla.org/chrome/chatzilla.jar
-+@DIR_MACOS@extensions/langpack-it@chatzilla.mozilla.org/chrome/chatzilla.manifest
-+@DIR_MACOS@extensions/langpack-it@chatzilla.mozilla.org/chrome.manifest
-+@DIR_MACOS@extensions/langpack-it@chatzilla.mozilla.org/install.js
-+@DIR_MACOS@extensions/langpack-it@chatzilla.mozilla.org/install.rdf
-+@DIR_MACOS@extensions/langpack-it@chatzilla.mozilla.org.xpi
-+@DIR_MACOS@extensions/langpack-ja@chatzilla.mozilla.org/chrome/chatzilla.jar
-+@DIR_MACOS@extensions/langpack-ja@chatzilla.mozilla.org/chrome/chatzilla.manifest
-+@DIR_MACOS@extensions/langpack-ja@chatzilla.mozilla.org/chrome.manifest
-+@DIR_MACOS@extensions/langpack-ja@chatzilla.mozilla.org/install.js
-+@DIR_MACOS@extensions/langpack-ja@chatzilla.mozilla.org/install.rdf
-+@DIR_MACOS@extensions/langpack-ja@chatzilla.mozilla.org.xpi
-+@DIR_MACOS@extensions/langpack-ja-JP-mac@chatzilla.mozilla.org/chrome/chatzilla.jar
-+@DIR_MACOS@extensions/langpack-ja-JP-mac@chatzilla.mozilla.org/chrome/chatzilla.manifest
-+@DIR_MACOS@extensions/langpack-ja-JP-mac@chatzilla.mozilla.org/chrome.manifest
-+@DIR_MACOS@extensions/langpack-ja-JP-mac@chatzilla.mozilla.org/install.js
-+@DIR_MACOS@extensions/langpack-ja-JP-mac@chatzilla.mozilla.org/install.rdf
-+@DIR_MACOS@extensions/langpack-ja-JP-mac@chatzilla.mozilla.org.xpi
-+@DIR_MACOS@extensions/langpack-nb-NO@chatzilla.mozilla.org/chrome/chatzilla.jar
-+@DIR_MACOS@extensions/langpack-nb-NO@chatzilla.mozilla.org/chrome/chatzilla.manifest
-+@DIR_MACOS@extensions/langpack-nb-NO@chatzilla.mozilla.org/chrome.manifest
-+@DIR_MACOS@extensions/langpack-nb-NO@chatzilla.mozilla.org/install.js
-+@DIR_MACOS@extensions/langpack-nb-NO@chatzilla.mozilla.org/install.rdf
-+@DIR_MACOS@extensions/langpack-nb-NO@chatzilla.mozilla.org.xpi
-+@DIR_MACOS@extensions/langpack-pl@chatzilla.mozilla.org/install.rdf
-+@DIR_MACOS@extensions/langpack-pl@chatzilla.mozilla.org/chrome/chatzilla.jar
-+@DIR_MACOS@extensions/langpack-pl@chatzilla.mozilla.org/chrome/chatzilla.manifest
-+@DIR_MACOS@extensions/langpack-pl@chatzilla.mozilla.org/chrome.manifest
-+@DIR_MACOS@extensions/langpack-pl@chatzilla.mozilla.org/install.js
-+@DIR_MACOS@extensions/langpack-pl@chatzilla.mozilla.org.xpi
-+@DIR_MACOS@extensions/langpack-pt-BR@chatzilla.mozilla.org/chrome/chatzilla.jar
-+@DIR_MACOS@extensions/langpack-pt-BR@chatzilla.mozilla.org/chrome/chatzilla.manifest
-+@DIR_MACOS@extensions/langpack-pt-BR@chatzilla.mozilla.org/chrome.manifest
-+@DIR_MACOS@extensions/langpack-pt-BR@chatzilla.mozilla.org/install.js
-+@DIR_MACOS@extensions/langpack-pt-BR@chatzilla.mozilla.org/install.rdf
-+@DIR_MACOS@extensions/langpack-pt-BR@chatzilla.mozilla.org.xpi
-+@DIR_MACOS@extensions/langpack-pt-PT@chatzilla.mozilla.org/chrome/chatzilla.jar
-+@DIR_MACOS@extensions/langpack-pt-PT@chatzilla.mozilla.org/chrome/chatzilla.manifest
-+@DIR_MACOS@extensions/langpack-pt-PT@chatzilla.mozilla.org/chrome.manifest
-+@DIR_MACOS@extensions/langpack-pt-PT@chatzilla.mozilla.org/install.js
-+@DIR_MACOS@extensions/langpack-pt-PT@chatzilla.mozilla.org/install.rdf
-+@DIR_MACOS@extensions/langpack-pt-PT@chatzilla.mozilla.org.xpi
-+@DIR_MACOS@extensions/langpack-ru@chatzilla.mozilla.org/chrome/chatzilla.jar
-+@DIR_MACOS@extensions/langpack-ru@chatzilla.mozilla.org/chrome/chatzilla.manifest
-+@DIR_MACOS@extensions/langpack-ru@chatzilla.mozilla.org/chrome.manifest
-+@DIR_MACOS@extensions/langpack-ru@chatzilla.mozilla.org/install.js
-+@DIR_MACOS@extensions/langpack-ru@chatzilla.mozilla.org/install.rdf
-+@DIR_MACOS@extensions/langpack-ru@chatzilla.mozilla.org.xpi
-+@DIR_MACOS@extensions/langpack-si@chatzilla.mozilla.org/chrome/chatzilla.jar
-+@DIR_MACOS@extensions/langpack-si@chatzilla.mozilla.org/chrome/chatzilla.manifest
-+@DIR_MACOS@extensions/langpack-si@chatzilla.mozilla.org/chrome.manifest
-+@DIR_MACOS@extensions/langpack-si@chatzilla.mozilla.org/install.js
-+@DIR_MACOS@extensions/langpack-si@chatzilla.mozilla.org/install.rdf
-+@DIR_MACOS@extensions/langpack-si@chatzilla.mozilla.org.xpi
-+@DIR_MACOS@extensions/langpack-sk@chatzilla.mozilla.org/chrome/chatzilla.jar
-+@DIR_MACOS@extensions/langpack-sk@chatzilla.mozilla.org/chrome/chatzilla.manifest
-+@DIR_MACOS@extensions/langpack-sk@chatzilla.mozilla.org/chrome.manifest
-+@DIR_MACOS@extensions/langpack-sk@chatzilla.mozilla.org/install.js
-+@DIR_MACOS@extensions/langpack-sk@chatzilla.mozilla.org/install.rdf
-+@DIR_MACOS@extensions/langpack-sk@chatzilla.mozilla.org.xpi
-+@DIR_MACOS@extensions/langpack-sv-SE@chatzilla.mozilla.org/chrome/chatzilla.jar
-+@DIR_MACOS@extensions/langpack-sv-SE@chatzilla.mozilla.org/chrome/chatzilla.manifest
-+@DIR_MACOS@extensions/langpack-sv-SE@chatzilla.mozilla.org/chrome.manifest
-+@DIR_MACOS@extensions/langpack-sv-SE@chatzilla.mozilla.org/install.js
-+@DIR_MACOS@extensions/langpack-sv-SE@chatzilla.mozilla.org/install.rdf
-+@DIR_MACOS@extensions/langpack-sv-SE@chatzilla.mozilla.org.xpi
-+@DIR_MACOS@extensions/langpack-ca@venkman.mozilla.org/chrome/venkman.jar
-+@DIR_MACOS@extensions/langpack-ca@venkman.mozilla.org/chrome/venkman.manifest
-+@DIR_MACOS@extensions/langpack-ca@venkman.mozilla.org/chrome.manifest
-+@DIR_MACOS@extensions/langpack-ca@venkman.mozilla.org/install.js
-+@DIR_MACOS@extensions/langpack-ca@venkman.mozilla.org/install.rdf
-+@DIR_MACOS@extensions/langpack-ca@venkman.mozilla.org.xpi
-+@DIR_MACOS@extensions/langpack-de@venkman.mozilla.org/chrome/venkman.jar
-+@DIR_MACOS@extensions/langpack-de@venkman.mozilla.org/chrome/venkman.manifest
-+@DIR_MACOS@extensions/langpack-de@venkman.mozilla.org/chrome.manifest
-+@DIR_MACOS@extensions/langpack-de@venkman.mozilla.org/install.js
-+@DIR_MACOS@extensions/langpack-de@venkman.mozilla.org/install.rdf
-+@DIR_MACOS@extensions/langpack-de@venkman.mozilla.org.xpi
-+@DIR_MACOS@extensions/langpack-es-ES@venkman.mozilla.org/chrome/venkman.jar
-+@DIR_MACOS@extensions/langpack-es-ES@venkman.mozilla.org/chrome/venkman.manifest
-+@DIR_MACOS@extensions/langpack-es-ES@venkman.mozilla.org/chrome.manifest
-+@DIR_MACOS@extensions/langpack-es-ES@venkman.mozilla.org/install.js
-+@DIR_MACOS@extensions/langpack-es-ES@venkman.mozilla.org/install.rdf
-+@DIR_MACOS@extensions/langpack-es-ES@venkman.mozilla.org.xpi
-+@DIR_MACOS@extensions/langpack-fr@venkman.mozilla.org/chrome/venkman.jar
-+@DIR_MACOS@extensions/langpack-fr@venkman.mozilla.org/chrome/venkman.manifest
-+@DIR_MACOS@extensions/langpack-fr@venkman.mozilla.org/chrome.manifest
-+@DIR_MACOS@extensions/langpack-fr@venkman.mozilla.org/install.js
-+@DIR_MACOS@extensions/langpack-fr@venkman.mozilla.org/install.rdf
-+@DIR_MACOS@extensions/langpack-fr@venkman.mozilla.org.xpi
-+@DIR_MACOS@extensions/langpack-it@venkman.mozilla.org/chrome/venkman.jar
-+@DIR_MACOS@extensions/langpack-it@venkman.mozilla.org/chrome/venkman.manifest
-+@DIR_MACOS@extensions/langpack-it@venkman.mozilla.org/chrome.manifest
-+@DIR_MACOS@extensions/langpack-it@venkman.mozilla.org/install.js
-+@DIR_MACOS@extensions/langpack-it@venkman.mozilla.org/install.rdf
-+@DIR_MACOS@extensions/langpack-it@venkman.mozilla.org.xpi
-+@DIR_MACOS@extensions/langpack-ja@venkman.mozilla.org/chrome/venkman.jar
-+@DIR_MACOS@extensions/langpack-ja@venkman.mozilla.org/chrome/venkman.manifest
-+@DIR_MACOS@extensions/langpack-ja@venkman.mozilla.org/chrome.manifest
-+@DIR_MACOS@extensions/langpack-ja@venkman.mozilla.org/install.js
-+@DIR_MACOS@extensions/langpack-ja@venkman.mozilla.org/install.rdf
-+@DIR_MACOS@extensions/langpack-ja@venkman.mozilla.org.xpi
-+@DIR_MACOS@extensions/langpack-ja-JP-mac@venkman.mozilla.org/chrome/venkman.jar
-+@DIR_MACOS@extensions/langpack-ja-JP-mac@venkman.mozilla.org/chrome/venkman.manifest
-+@DIR_MACOS@extensions/langpack-ja-JP-mac@venkman.mozilla.org/chrome.manifest
-+@DIR_MACOS@extensions/langpack-ja-JP-mac@venkman.mozilla.org/install.js
-+@DIR_MACOS@extensions/langpack-ja-JP-mac@venkman.mozilla.org/install.rdf
-+@DIR_MACOS@extensions/langpack-ja-JP-mac@venkman.mozilla.org.xpi
-+@DIR_MACOS@extensions/langpack-nb-NO@venkman.mozilla.org/chrome/venkman.jar
-+@DIR_MACOS@extensions/langpack-nb-NO@venkman.mozilla.org/chrome/venkman.manifest
-+@DIR_MACOS@extensions/langpack-nb-NO@venkman.mozilla.org/chrome.manifest
-+@DIR_MACOS@extensions/langpack-nb-NO@venkman.mozilla.org/install.js
-+@DIR_MACOS@extensions/langpack-nb-NO@venkman.mozilla.org/install.rdf
-+@DIR_MACOS@extensions/langpack-nb-NO@venkman.mozilla.org.xpi
-+@DIR_MACOS@extensions/langpack-pl@venkman.mozilla.org/chrome/venkman.jar
-+@DIR_MACOS@extensions/langpack-pl@venkman.mozilla.org/chrome/venkman.manifest
-+@DIR_MACOS@extensions/langpack-pl@venkman.mozilla.org/chrome.manifest
-+@DIR_MACOS@extensions/langpack-pl@venkman.mozilla.org/install.js
-+@DIR_MACOS@extensions/langpack-pl@venkman.mozilla.org/install.rdf
-+@DIR_MACOS@extensions/langpack-pl@venkman.mozilla.org.xpi
-+@DIR_MACOS@extensions/langpack-ru@venkman.mozilla.org/chrome/venkman.jar
-+@DIR_MACOS@extensions/langpack-ru@venkman.mozilla.org/chrome/venkman.manifest
-+@DIR_MACOS@extensions/langpack-ru@venkman.mozilla.org/chrome.manifest
-+@DIR_MACOS@extensions/langpack-ri@venkman.mozilla.org/install.js
-+@DIR_MACOS@extensions/langpack-ru@venkman.mozilla.org/install.rdf
-+@DIR_MACOS@extensions/langpack-ru@venkman.mozilla.org.xpi
-+@DIR_MACOS@extensions/langpack-sv-SE@venkman.mozilla.org/chrome/venkman.jar
-+@DIR_MACOS@extensions/langpack-sv-SE@venkman.mozilla.org/chrome/venkman.manifest
-+@DIR_MACOS@extensions/langpack-sv-SE@venkman.mozilla.org/chrome.manifest
-+@DIR_MACOS@extensions/langpack-sv-SE@venkman.mozilla.org/install.js
-+@DIR_MACOS@extensions/langpack-sv-SE@venkman.mozilla.org/install.rdf
-+@DIR_MACOS@extensions/langpack-sv-SE@venkman.mozilla.org.xpi
-+@DIR_MACOS@extensions/modern@themes.mozilla.org/
-+@DIR_MACOS@extensions/modern@themes.mozilla.org/chrome/
-+@DIR_MACOS@extensions/modern@themes.mozilla.org/chrome/modern.jar
-+@DIR_MACOS@extensions/modern@themes.mozilla.org/chrome.manifest
-+@DIR_MACOS@extensions/modern@themes.mozilla.org/icon.png
-+@DIR_MACOS@extensions/modern@themes.mozilla.org/install.rdf
-+@DIR_MACOS@extensions/modern@themes.mozilla.org/preview.png
-+@DIR_MACOS@jssubloader/
-+@DIR_MACOS@modules/
-+@DIR_MACOS@modules/AddonLogging.jsm
-+@DIR_MACOS@modules/AddonManager.jsm
-+@DIR_MACOS@modules/AddonRepository.jsm
-+@DIR_MACOS@modules/AddonUpdateChecker.jsm
-+@DIR_MACOS@modules/BrowserElementPromptService.jsm
-+@DIR_MACOS@modules/CertUtils.jsm
-+@DIR_MACOS@modules/CommonDialog.jsm
-+@DIR_MACOS@modules/CrashSubmit.jsm
-+@DIR_MACOS@modules/CSPUtils.jsm
-+@DIR_MACOS@modules/ctypes.jsm
-+@DIR_MACOS@modules/debug.js
-+@DIR_MACOS@modules/dictUtils.js
-+@DIR_MACOS@modules/errUtils.js
-+@DIR_MACOS@modules/FileUtils.jsm
-+@DIR_MACOS@modules/folderUtils.jsm
-+@DIR_MACOS@modules/Geometry.jsm
-+@DIR_MACOS@modules/gloda/
-+@DIR_MACOS@modules/gloda/mimeTypeCategories.js
-+@DIR_MACOS@modules/gloda/log4moz.js
-+@DIR_MACOS@modules/gloda/gloda.js
-+@DIR_MACOS@modules/gloda/datamodel.js
-+@DIR_MACOS@modules/gloda/databind.js
-+@DIR_MACOS@modules/gloda/index_ab.js
-+@DIR_MACOS@modules/gloda/msg_search.js
-+@DIR_MACOS@modules/gloda/public.js
-+@DIR_MACOS@modules/gloda/noun_freetag.js
-+@DIR_MACOS@modules/gloda/utils.js
-+@DIR_MACOS@modules/gloda/suffixtree.js
-+@DIR_MACOS@modules/gloda/indexer.js
-+@DIR_MACOS@modules/gloda/fundattr.js
-+@DIR_MACOS@modules/gloda/dbview.js
-+@DIR_MACOS@modules/gloda/datastore.js
-+@DIR_MACOS@modules/gloda/everybody.js
-+@DIR_MACOS@modules/gloda/collection.js
-+@DIR_MACOS@modules/gloda/query.js
-+@DIR_MACOS@modules/gloda/noun_tag.js
-+@DIR_MACOS@modules/gloda/connotent.js
-+@DIR_MACOS@modules/gloda/noun_mimetype.js
-+@DIR_MACOS@modules/gloda/index_msg.js
-+@DIR_MACOS@modules/gloda/mimemsg.js
-+@DIR_MACOS@modules/gloda/explattr.js
-+@DIR_MACOS@modules/gloda/facet.js
-+@DIR_MACOS@modules/InlineSpellChecker.jsm
-+@DIR_MACOS@modules/IOUtils.js
-+@DIR_MACOS@modules/ISO8601DateUtils.jsm
-+@DIR_MACOS@modules/iteratorUtils.jsm
-+@DIR_MACOS@modules/jsTreeSelection.js
-+@DIR_MACOS@modules/LightweightThemeConsumer.jsm
-+@DIR_MACOS@modules/LightweightThemeManager.jsm
-+@DIR_MACOS@modules/mailnewsMigrator.js
-+@DIR_MACOS@modules/MailUtils.js
-+@DIR_MACOS@modules/Microformats.js
-+@DIR_MACOS@modules/NetUtil.jsm
-+@DIR_MACOS@modules/nsFormAutoCompleteResult.jsm
-+@DIR_MACOS@modules/PerfMeasurement.jsm
-+@DIR_MACOS@modules/PlacesDBUtils.jsm
-+@DIR_MACOS@modules/PlacesUIUtils.jsm
-+@DIR_MACOS@modules/PlacesUtils.jsm
-+@DIR_MACOS@modules/PluginProvider.jsm
-+@DIR_MACOS@modules/PluralForm.jsm
-+@DIR_MACOS@modules/PopupNotifications.jsm
-+@DIR_MACOS@modules/Sanitizer.jsm
-+@DIR_MACOS@modules/Services.jsm
-+@DIR_MACOS@modules/StringBundle.js
-+@DIR_MACOS@modules/services-common/async.js
-+@DIR_MACOS@modules/services-common/log4moz.js
-+@DIR_MACOS@modules/services-common/observers.js
-+@DIR_MACOS@modules/services-common/preferences.js
-+@DIR_MACOS@modules/services-common/rest.js
-+@DIR_MACOS@modules/services-common/stringbundle.js
-+@DIR_MACOS@modules/services-common/tokenserverclient.js
-+@DIR_MACOS@modules/services-common/utils.js
-+@DIR_MACOS@modules/services-crypto/utils.js
-+@DIR_MACOS@modules/services-crypto/WeaveCrypto.js
-+@DIR_MACOS@modules/services-notifications/service.js
-+@DIR_MACOS@modules/templateUtils.js
-+@DIR_MACOS@modules/traceHelper.js
-+@DIR_MACOS@modules/UserAgentOverrides.jsm
-+@DIR_MACOS@modules/utils.js
-+@DIR_MACOS@modules/virtualFolderWrapper.js
-+@DIR_MACOS@modules/WindowDraggingUtils.jsm
-+@DIR_MACOS@modules/WorkerTest.jsm
-+@DIR_MACOS@modules/WorkerTest_subworker.js
-+@DIR_MACOS@modules/WorkerTest_worker.js
-+@DIR_MACOS@modules/XPCOMUtils.jsm
-+@DIR_MACOS@modules/XPIProvider.jsm
-+@DIR_MACOS@greprefs.js
-+@DIR_MACOS@res/contenteditable.css
-+@DIR_MACOS@res/designmode.css
-+@DIR_MACOS@res/EditorOverride.css
-+@DIR_MACOS@res/grabber.gif
-+@DIR_MACOS@res/langGroups.properties
-+@DIR_MACOS@res/language.properties
-+@DIR_MACOS@res/svg.css
-+@DIR_MACOS@res/table-add-column-after-active.gif
-+@DIR_MACOS@res/table-add-column-after-hover.gif
-+@DIR_MACOS@res/table-add-column-after.gif
-+@DIR_MACOS@res/table-add-column-before-active.gif
-+@DIR_MACOS@res/table-add-column-before-hover.gif
-+@DIR_MACOS@res/table-add-column-before.gif
-+@DIR_MACOS@res/table-add-row-after-active.gif
-+@DIR_MACOS@res/table-add-row-after-hover.gif
-+@DIR_MACOS@res/table-add-row-after.gif
-+@DIR_MACOS@res/table-add-row-before-active.gif
-+@DIR_MACOS@res/table-add-row-before-hover.gif
-+@DIR_MACOS@res/table-add-row-before.gif
-+@DIR_MACOS@res/table-remove-column-active.gif
-+@DIR_MACOS@res/table-remove-column-hover.gif
-+@DIR_MACOS@res/table-remove-column.gif
-+@DIR_MACOS@res/table-remove-row-active.gif
-+@DIR_MACOS@res/table-remove-row-hover.gif
-+@DIR_MACOS@res/table-remove-row.gif
-+@DIR_MACOS@res/fonts/
-+@DIR_MACOS@res/fonts/mathfont.properties
-+@DIR_MACOS@res/fonts/mathfontStandardSymbolsL.properties
-+@DIR_MACOS@res/fonts/mathfontSTIXNonUnicode.properties
-+@DIR_MACOS@res/fonts/mathfontSTIXSize1.properties
-+@DIR_MACOS@res/fonts/mathfontSTIXSizeOneSym.properties
-+#ifdef XP_WIN
-+  res/fonts/mathfontSymbol.properties
-+#endif
-+@DIR_MACOS@res/fonts/mathfontUnicode.properties
-+@DIR_MACOS@res/dtd/
-+@DIR_MACOS@res/dtd/mathml.dtd
-+@DIR_MACOS@res/dtd/xhtml11.dtd
-+@DIR_MACOS@res/html/
-+@DIR_MACOS@res/html/folder.png
-+@DIR_MACOS@res/entityTables/
-+@DIR_MACOS@res/entityTables/html40Latin1.properties
-+@DIR_MACOS@res/entityTables/html40Special.properties
-+@DIR_MACOS@res/entityTables/html40Symbols.properties
-+@DIR_MACOS@res/entityTables/htmlEntityVersions.properties
-+@DIR_MACOS@res/entityTables/mathml20.properties
-+@DIR_MACOS@res/entityTables/transliterate.properties
-+#ifdef MOZ_UPDATER
-+  @DIR_MACOS@update.locale
- #endif
- 
- ; pre-libxul static mail library
- @DIR_MACOS@components/@DLL_PREFIX@mail@DLL_SUFFIX@
- ; shared mail libraries
- @DIR_MACOS@components/@DLL_PREFIX@addrbook@DLL_SUFFIX@
- @DIR_MACOS@components/@DLL_PREFIX@bayesflt@DLL_SUFFIX@
- @DIR_MACOS@components/@DLL_PREFIX@fts3tok@DLL_SUFFIX@
-diff --git a/suite/locales/Makefile.in b/suite/locales/Makefile.in
---- a/suite/locales/Makefile.in
-+++ b/suite/locales/Makefile.in
-@@ -141,21 +141,19 @@ endif
- 
- package-win32-installer: $(SUBMAKEFILES)
- 	$(MAKE) -C ../installer/windows CONFIG_DIR=l10ngen ZIP_IN='$(ZIP_OUT)' installer
- 
- repackage-extensions: $(STAGEDIST)
- ifdef MOZ_IRC
- 	$(MAKE) -C $(DEPTH)/extensions/irc/locales repackage-zip-$(AB_CD) STAGEDIST=$(STAGEDIST)
- endif
--ifeq ($(MOZ_PACKAGER_FORMAT),omni)
- 	$(NSINSTALL) -D $(STAGEDIST)/distribution/extensions
- 	$(MAKE) -C ../app pack-ext AB_CD=$(AB_CD) STAGEDIST=$(STAGEDIST)/extensions;
- 	$(MAKE) -C ../app pack-ext AB_CD=$(AB_CD) STAGEDIST=$(STAGEDIST)/distribution/extensions;
--endif
- 
- langpack: langpack-$(AB_CD)
- 
- # This is a generic target that will make a langpack, repack ZIP (+tarball)
- # builds, and repack and installer if applicable. It is called from the
- # tinderbox scripts. Alter it with caution.
- installers-%: IS_LANGUAGE_REPACK=1
- installers-%:

+ 0 - 54
comm-esr60/comm-esr60/patches/1534028-omni-cc2-67a1.patch

@@ -1,54 +0,0 @@
-# HG changeset patch
-# User Frank-Rainer Grahl <frgrahl@gmx.net>
-# Parent  874ad134862c51695fdebfdd616b6dc42d8e78fe
-Bug 1534028 - Remove update.locale unconditionally during install. r=me
-
-diff --git a/suite/installer/removed-files.in b/suite/installer/removed-files.in
---- a/suite/installer/removed-files.in
-+++ b/suite/installer/removed-files.in
-@@ -539,24 +539,24 @@ regxpcom.exe
- #ifdef XP_UNIX
- #ifndef XP_MACOSX
- Throbber-small.gif
- #endif
- #endif
- #endif
- #ifndef MOZ_UPDATER
-   @DIR_MACOS@update-settings.ini
--  @DIR_MACOS@update.locale
-   #ifdef XP_MACOSX
-     @DIR_MACOS@updater.app/
-   #else
-     @DIR_MACOS@updater@BIN_SUFFIX@
-   #endif
-   @DIR_MACOS@updater.ini
- #endif
-+@DIR_MACOS@update.locale
- @DIR_MACOS@@DLL_PREFIX@xpcom@DLL_SUFFIX@
- @DIR_MACOS@@DLL_PREFIX@xpcom_core@DLL_SUFFIX@
- @DIR_MACOS@xpicleanup@BIN_SUFFIX@
- @DIR_MACOS@@DLL_PREFIX@xpistub@DLL_SUFFIX@
- 
- @DIR_MACOS@chrome/be.jar
- @DIR_MACOS@chrome/ca.jar
- @DIR_MACOS@chrome/cs.jar
-@@ -1057,19 +1057,16 @@ Throbber-small.gif
- @DIR_MACOS@res/html/folder.png
- @DIR_MACOS@res/entityTables/
- @DIR_MACOS@res/entityTables/html40Latin1.properties
- @DIR_MACOS@res/entityTables/html40Special.properties
- @DIR_MACOS@res/entityTables/html40Symbols.properties
- @DIR_MACOS@res/entityTables/htmlEntityVersions.properties
- @DIR_MACOS@res/entityTables/mathml20.properties
- @DIR_MACOS@res/entityTables/transliterate.properties
--#ifdef MOZ_UPDATER
--  @DIR_MACOS@update.locale
--#endif
- 
- ; pre-libxul static mail library
- @DIR_MACOS@components/@DLL_PREFIX@mail@DLL_SUFFIX@
- ; shared mail libraries
- @DIR_MACOS@components/@DLL_PREFIX@addrbook@DLL_SUFFIX@
- @DIR_MACOS@components/@DLL_PREFIX@bayesflt@DLL_SUFFIX@
- @DIR_MACOS@components/@DLL_PREFIX@fts3tok@DLL_SUFFIX@
- @DIR_MACOS@components/@DLL_PREFIX@mailview@DLL_SUFFIX@

+ 0 - 54
comm-esr60/comm-esr60/patches/1535845-sse2-68a1.patch

@@ -1,54 +0,0 @@
-# HG changeset patch
-# User Frank-Rainer Grahl <frgrahl@gmx.net>
-# Parent  8f719030c7ad3c3df58021af8dd2092fd9af318a
-Bug 1535845 - Move SeaMonkey sse check to moz.build.
-
-Port Bug 1403346 part 14 [Move remaining compile flags from config.mk to moz.build computed flags].
-
-diff --git a/suite/app/Makefile.in b/suite/app/Makefile.in
---- a/suite/app/Makefile.in
-+++ b/suite/app/Makefile.in
-@@ -24,19 +24,17 @@ endif
- # shouldn't get 755 perms need $(IFLAGS1) for either way of calling nsinstall.
- NSDISTMODE = copy
- 
- include $(topsrcdir)/config/config.mk
- 
- # If we are trying to show an error dialog about the lack of SSE2 support,
- # make sure that code itself doesn't use SSE2.
- ifdef MOZ_LINUX_32_SSE2_STARTUP_ERROR
--CXXFLAGS := $(filter-out -march=% -msse -msse2 -mfpmath=sse,$(CXXFLAGS))
- CXX := $(filter-out -march=% -msse -msse2 -mfpmath=sse,$(CXX))
--CXXFLAGS += -mno-sse -mno-sse2 -mfpmath=387
- CXX += -march=pentiumpro
- endif
- 
- ifeq ($(OS_ARCH),WINNT)
- # Rebuild seamonkey.exe if the manifest changes - it's included by splash.rc.
- # (this dependency should really be just for seamonkey.exe, not other targets)
- # Note the manifest file exists in the tree, so we use the explicit filename
- # here.
-diff --git a/suite/app/moz.build b/suite/app/moz.build
---- a/suite/app/moz.build
-+++ b/suite/app/moz.build
-@@ -55,14 +55,20 @@ if CONFIG['MOZ_SANDBOX'] and CONFIG['OS_
- if CONFIG['OS_ARCH'] == 'WINNT' and CONFIG['CC_TYPE'] not in ('clang', 'gcc'):
-     LDFLAGS += ['/HEAP:0x40000']
- 
- if CONFIG['MOZ_LINKER']:
-     OS_LIBS += CONFIG['MOZ_ZLIB_LIBS']
- 
- if CONFIG['MOZ_LINUX_32_SSE2_STARTUP_ERROR']:
-     DEFINES['MOZ_LINUX_32_SSE2_STARTUP_ERROR'] = True
-+    COMPILE_FLAGS['OS_CXXFLAGS'] = [
-+        f for f in COMPILE_FLAGS.get('OS_CXXFLAGS', [])
-+        if not f.startswith('-march=') and f not in ('-msse', '-msse2', '-mfpmath=sse')
-+    ] + [
-+        '-mno-sse', '-mno-sse2', '-mfpmath=387',
-+    ]
- 
- DEFINES['APP_VERSION'] = CONFIG['MOZ_APP_VERSION']
- 
- DisableStlWrapping()
- 
- FINAL_TARGET_FILES.defaults += ['permissions']

+ 7 - 7
comm-esr60/comm-esr60/patches/1535846-sse2-mail-68a1.patch

@@ -1,6 +1,6 @@
 # HG changeset patch
 # User Frank-Rainer Grahl <frgrahl@gmx.net>
-# Parent  4f11975b888a7f28facd31c40106b2fd8f5894a7
+# Parent  9f91a5874f80ac44e92432399baf4fcfe5f09d91
 Bug 1535845 - Move Thunderbird sse check to moz.build.
 
 Port Bug 1403346 part 14 [Move remaining compile flags from config.mk to moz.build computed flags].
@@ -8,11 +8,11 @@ Port Bug 1403346 part 14 [Move remaining compile flags from config.mk to moz.bui
 diff --git a/mail/app/Makefile.in b/mail/app/Makefile.in
 --- a/mail/app/Makefile.in
 +++ b/mail/app/Makefile.in
-@@ -25,19 +25,17 @@ endif
- # shouldn't get 755 perms need $(IFLAGS1) for either way of calling nsinstall.
- NSDISTMODE = copy
+@@ -21,19 +21,17 @@ MOZ_WINCONSOLE = 0
+ endif
+ endif
  
- include $(topsrcdir)/config/config.mk
+ include $(moztopsrcdir)/config/config.mk
  
  # If we are trying to show an error dialog about the lack of SSE2 support,
  # make sure that code itself doesn't use SSE2.
@@ -25,13 +25,13 @@ diff --git a/mail/app/Makefile.in b/mail/app/Makefile.in
  
  ifeq ($(OS_ARCH),WINNT)
  # Extract the icons we care about embedding into the EXE
- mailtoolbar = $(topsrcdir)/mail/themes/windows/mail/icons/jumplist.png
+ mailtoolbar = $(commtopsrcdir)/mail/themes/windows/mail/icons/jumplist.png
  
  # png to ico converter. The function takes 5 arguments, in order: source png
 diff --git a/mail/app/moz.build b/mail/app/moz.build
 --- a/mail/app/moz.build
 +++ b/mail/app/moz.build
-@@ -70,12 +70,18 @@ DEFINES['APP_VERSION'] = CONFIG['MOZ_APP
+@@ -71,12 +71,18 @@ DEFINES['APP_VERSION'] = CONFIG['MOZ_APP
  if CONFIG['MOZILLA_OFFICIAL']:
      DEFINES['MOZILLA_OFFICIAL'] = True
  

+ 0 - 32
comm-esr60/comm-esr60/patches/1540438-indent_fixup.patch

@@ -1,32 +0,0 @@
-# HG changeset patch
-# User Ben Campbell <benc@thunderbird.net>
-# Date 1554673209 -43200
-#      Mon Apr 08 09:40:09 2019 +1200
-# Node ID 4d8cae9e80f72e11ca2ef372bdd18baac3ecb8cd
-# Parent  fabb02fab198ae888e7da553226bd508d5f590fd
-Bug 1540438 - Fix misleading if/then indent. r=frg a=frg
-
-diff --git a/suite/mailnews/content/mail3PaneWindowCommands.js b/suite/mailnews/content/mail3PaneWindowCommands.js
---- a/suite/mailnews/content/mail3PaneWindowCommands.js
-+++ b/suite/mailnews/content/mail3PaneWindowCommands.js
-@@ -35,18 +35,18 @@ var FolderPaneController =
-         return false;
-       case "cmd_delete":
-       case "cmd_shiftDelete":
-       case "button_delete":
-         // Make sure the button doesn't show "Undelete" for folders.
-         if (command == "button_delete")
-           UpdateDeleteToolbarButton(true);
-       case "button_shiftDelete":
--      if ( command == "cmd_delete" )
--        goSetMenuValue(command, 'valueFolder');
-+        if ( command == "cmd_delete" )
-+          goSetMenuValue(command, 'valueFolder');
-         let folders = GetSelectedMsgFolders();
- 
-         if (folders.length) {
-           var canDeleteThisFolder;
-         var specialFolder = null;
-         var isServer = null;
-         try {
-           let folder = folders[0];

+ 0 - 898
comm-esr60/comm-esr60/patches/594239-1-66a1.patch

@@ -1,898 +0,0 @@
-# HG changeset patch
-# User Hiroyuki Ikezoe <hikezoe@mozilla.com>
-# Date 1547876580 -3600
-#      Sat Jan 19 06:43:00 2019 +0100
-# Node ID ba263124fbff63f1e7808c6780658d8bc2b195b8
-# Parent  8f3ed95b907647c37fded17fa575a4fe837a0ccb
-Bug 594239 - Fix arguments of Simple MAPI functions that should be LPSTR. r=jorgk
-
-diff --git a/mailnews/mapi/mapiDll/MapiDll.cpp b/mailnews/mapi/mapiDll/MapiDll.cpp
---- a/mailnews/mapi/mapiDll/MapiDll.cpp
-+++ b/mailnews/mapi/mapiDll/MapiDll.cpp
-@@ -1,16 +1,15 @@
- /* This Source Code Form is subject to the terms of the Mozilla Public
-  * License, v. 2.0. If a copy of the MPL was not distributed with this
-  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- 
- #pragma warning (disable : 4996) // MAPILogoff is deprecated
- 
- #include <windows.h>
--#include <tchar.h>
- #include <mapidefs.h>
- #include <mapi.h>
- #include "msgMapi.h"
- 
- #define MAX_RECIPS  2000
- #define MAX_FILES   100
- 
- 
-@@ -104,57 +103,28 @@ BOOL InitMozillaReference(nsIMapi **aRet
-     return FALSE;
- }
- 
- ////////////////////////////////////////////////////////////////////////////////////////
- // The MAPILogon function begins a Simple MAPI session, loading the default message ////
- // store and address book providers                            ////
- ////////////////////////////////////////////////////////////////////////////////////////
- 
--ULONG FAR PASCAL MAPILogon(ULONG aUIParam, LPTSTR aProfileName,
--                            LPTSTR aPassword, FLAGS aFlags,
--                            ULONG aReserved, LPLHANDLE aSession)
-+ULONG FAR PASCAL MAPILogon(ULONG aUIParam, LPSTR aProfileName,
-+                           LPSTR aPassword, FLAGS aFlags,
-+                           ULONG aReserved, LPLHANDLE aSession)
- {
-     HRESULT hr = 0;
-     ULONG nSessionId = 0;
-     nsIMapi *pNsMapi = NULL;
- 
-     if (!InitMozillaReference(&pNsMapi))
-         return MAPI_E_FAILURE;
- 
--    if (!(aFlags & MAPI_UNICODE))
--    {
--        // Need to convert the parameters to Unicode.
--
--        char *pUserName = (char *) aProfileName;
--        char *pPassWord = (char *) aPassword;
--
--        TCHAR ProfileName[MAX_NAME_LEN] = {0};
--        TCHAR PassWord[MAX_PW_LEN] = {0};
--
--        if (pUserName != NULL)
--        {
--            if (!MultiByteToWideChar(CP_ACP, 0, pUserName, -1, ProfileName,
--                                                            MAX_NAME_LEN))
--                return MAPI_E_FAILURE;
--        }
--
--        if (pPassWord != NULL)
--        {
--            if (!MultiByteToWideChar(CP_ACP, 0, pPassWord, -1, PassWord,
--                                                            MAX_NAME_LEN))
--                return MAPI_E_FAILURE;
--        }
--
--        hr = pNsMapi->Login(aUIParam, ProfileName, PassWord, aFlags,
--                                                        &nSessionId);
--    }
--    else
--        hr = pNsMapi->Login(aUIParam, aProfileName, aPassword,
--                                                aFlags, &nSessionId);
-+    hr = pNsMapi->Login(aUIParam, aProfileName, aPassword, aFlags, &nSessionId);
-     if (hr == S_OK)
-         (*aSession) = (LHANDLE) nSessionId;
-     else
-         return nSessionId;
- 
-     return SUCCESS_SUCCESS;
- }
- 
-@@ -198,17 +168,17 @@ ULONG FAR PASCAL MAPISendMail (LHANDLE l
-     if (!lhSession || pNsMapi->IsValidSession(lhSession) != S_OK)
-     {
-         FLAGS LoginFlag = 0;
-         if ( (flFlags & MAPI_LOGON_UI) && (flFlags & MAPI_NEW_SESSION) )
-             LoginFlag = MAPI_LOGON_UI | MAPI_NEW_SESSION ;
-         else if (flFlags & MAPI_LOGON_UI)
-             LoginFlag = MAPI_LOGON_UI ;
- 
--        hr = MAPILogon (ulUIParam, (LPTSTR) NULL, (LPTSTR) NULL, LoginFlag, 0, &lhSession) ;
-+        hr = MAPILogon(ulUIParam, nullptr, nullptr, LoginFlag, 0, &lhSession);
-         if (hr != SUCCESS_SUCCESS)
-             return MAPI_E_LOGIN_FAILURE ;
-         bTempSession = TRUE ;
-     }
- 
-     hr = pNsMapi->SendMail(lhSession, lpMessage, flFlags, ulReserved);
- 
-     // we are seeing a problem when using Word, although we return success from the MAPI support
-@@ -244,17 +214,17 @@ ULONG FAR PASCAL MAPISendMailW(LHANDLE l
-     if (!lhSession || pNsMapi->IsValidSession(lhSession) != S_OK)
-     {
-       FLAGS LoginFlag = 0;
-       if ((flFlags & MAPI_LOGON_UI) && (flFlags & MAPI_NEW_SESSION))
-         LoginFlag = MAPI_LOGON_UI | MAPI_NEW_SESSION;
-       else if (flFlags & MAPI_LOGON_UI)
-         LoginFlag = MAPI_LOGON_UI;
- 
--      hr = MAPILogon(ulUIParam, (LPTSTR)NULL, (LPTSTR)NULL, LoginFlag, 0, &lhSession);
-+      hr = MAPILogon(ulUIParam, nullptr, nullptr, LoginFlag, 0, &lhSession);
-       if (hr != SUCCESS_SUCCESS)
-         return MAPI_E_LOGIN_FAILURE;
-       bTempSession = TRUE;
-     }
- 
-     hr = pNsMapi->SendMailW(lhSession, lpMessage, flFlags, ulReserved);
- 
-     // we are seeing a problem when using Word, although we return success from the MAPI support
-@@ -263,59 +233,56 @@ ULONG FAR PASCAL MAPISendMailW(LHANDLE l
-       hr = SUCCESS_SUCCESS;
- 
-     if (bTempSession)
-       MAPILogoff(lhSession, ulUIParam, 0, 0);
- 
-     return hr;
- }
- 
--ULONG FAR PASCAL MAPISendDocuments(ULONG ulUIParam, LPTSTR lpszDelimChar, LPTSTR lpszFilePaths,
--                                LPTSTR lpszFileNames, ULONG ulReserved)
-+ULONG FAR PASCAL MAPISendDocuments(ULONG ulUIParam, LPSTR lpszDelimChar, LPSTR lpszFilePaths,
-+                                   LPSTR lpszFileNames, ULONG ulReserved)
- {
-     LHANDLE lhSession ;
-     nsIMapi *pNsMapi = NULL;
- 
-     if (!InitMozillaReference(&pNsMapi))
-         return MAPI_E_FAILURE;
- 
--    unsigned long result = MAPILogon (ulUIParam, (LPTSTR) NULL, (LPTSTR) NULL, MAPI_LOGON_UI, 0, &lhSession) ;
-+    unsigned long result = MAPILogon(ulUIParam, nullptr, nullptr, MAPI_LOGON_UI, 0, &lhSession);
-     if (result != SUCCESS_SUCCESS)
-         return MAPI_E_LOGIN_FAILURE ;
- 
-     HRESULT hr;
- 
--    hr = pNsMapi->SendDocuments(lhSession, (LPTSTR) lpszDelimChar, (LPTSTR) lpszFilePaths,
--                                    (LPTSTR) lpszFileNames, ulReserved) ;
-+    hr = pNsMapi->SendDocuments(lhSession, lpszDelimChar, lpszFilePaths, lpszFileNames, ulReserved);
- 
-     MAPILogoff (lhSession, ulUIParam, 0,0) ;
- 
-     return hr ;
- }
- 
--ULONG FAR PASCAL MAPIFindNext(LHANDLE lhSession, ULONG ulUIParam, const LPTSTR lpszMessageType,
--                              const LPTSTR lpszSeedMessageID, FLAGS flFlags, ULONG ulReserved,
-+ULONG FAR PASCAL MAPIFindNext(LHANDLE lhSession, ULONG ulUIParam, const LPSTR lpszMessageType,
-+                              const LPSTR lpszSeedMessageID, FLAGS flFlags, ULONG ulReserved,
-                               unsigned char lpszMessageID[64])
- {
-   nsIMapi *pNsMapi = NULL;
- 
-   if (!InitMozillaReference(&pNsMapi))
-     return MAPI_E_FAILURE;
- 
-   if (lhSession == 0)
-     return MAPI_E_INVALID_SESSION;
- 
--  const LPTSTR type = lpszMessageType ? lpszMessageType : (const LPTSTR)(L"");
--  const LPTSTR id = lpszSeedMessageID ? lpszSeedMessageID : (const LPTSTR)(L"");
--  return pNsMapi->FindNext(lhSession, ulUIParam, type, id,
-+  return pNsMapi->FindNext(lhSession, ulUIParam, lpszMessageType, lpszSeedMessageID,
-                            flFlags, ulReserved, lpszMessageID);
- }
- 
- 
--ULONG FAR PASCAL MAPIReadMail(LHANDLE lhSession, ULONG ulUIParam, LPTSTR lpszMessageID,
-+ULONG FAR PASCAL MAPIReadMail(LHANDLE lhSession, ULONG ulUIParam, LPSTR lpszMessageID,
-                               FLAGS flFlags, ULONG ulReserved, nsMapiMessage **lppMessage)
- {
-   nsIMapi *pNsMapi = NULL;
- 
-   if (!InitMozillaReference(&pNsMapi))
-     return MAPI_E_FAILURE;
- 
-   if (lhSession == 0)
-@@ -323,60 +290,60 @@ ULONG FAR PASCAL MAPIReadMail(LHANDLE lh
- 
-   return pNsMapi->ReadMail(lhSession, ulUIParam,
-                               lpszMessageID, flFlags, ulReserved,
-                               lppMessage) ;
- 
- }
- 
- ULONG FAR PASCAL MAPISaveMail(LHANDLE lhSession, ULONG ulUIParam, lpnsMapiMessage lpMessage,
--                              FLAGS flFlags, ULONG ulReserved, LPTSTR lpszMessageID)
-+                              FLAGS flFlags, ULONG ulReserved, LPSTR lpszMessageID)
- {
-   nsIMapi *pNsMapi = NULL;
- 
-   if (lhSession == 0)
-     return MAPI_E_INVALID_SESSION;
- 
-   if (!InitMozillaReference(&pNsMapi))
-     return MAPI_E_FAILURE;
- 
-   return MAPI_E_FAILURE;
- }
- 
--ULONG FAR PASCAL MAPIDeleteMail(LHANDLE lhSession, ULONG ulUIParam, LPTSTR lpszMessageID,
-+ULONG FAR PASCAL MAPIDeleteMail(LHANDLE lhSession, ULONG ulUIParam, LPSTR lpszMessageID,
-                                 FLAGS flFlags, ULONG ulReserved)
- {
-   nsIMapi *pNsMapi = NULL;
- 
-   if (lhSession == 0)
-     return MAPI_E_INVALID_SESSION;
- 
-   if (!InitMozillaReference(&pNsMapi))
-     return MAPI_E_FAILURE;
- 
-   return pNsMapi->DeleteMail(lhSession, ulUIParam,
-                               lpszMessageID, flFlags, ulReserved) ;
- }
- 
--ULONG FAR PASCAL MAPIAddress(LHANDLE lhSession, ULONG ulUIParam, LPTSTR lpszCaption,
--                             ULONG nEditFields, LPTSTR lpszLabels, ULONG nRecips,
-+ULONG FAR PASCAL MAPIAddress(LHANDLE lhSession, ULONG ulUIParam, LPSTR lpszCaption,
-+                             ULONG nEditFields, LPSTR lpszLabels, ULONG nRecips,
-                              lpMapiRecipDesc lpRecips, FLAGS flFlags,
-                              ULONG ulReserved, LPULONG lpnNewRecips,
-                              lpMapiRecipDesc FAR *lppNewRecips)
- {
-     return MAPI_E_NOT_SUPPORTED;
- }
- 
- ULONG FAR PASCAL MAPIDetails(LHANDLE lhSession, ULONG ulUIParam, lpMapiRecipDesc lpRecip,
-                              FLAGS flFlags, ULONG ulReserved)
- {
-     return MAPI_E_NOT_SUPPORTED;
- }
- 
--ULONG FAR PASCAL MAPIResolveName(LHANDLE lhSession, ULONG ulUIParam, LPTSTR lpszName,
-+ULONG FAR PASCAL MAPIResolveName(LHANDLE lhSession, ULONG ulUIParam, LPSTR lpszName,
-                                  FLAGS flFlags, ULONG ulReserved, lpMapiRecipDesc FAR *lppRecip)
- {
-   char* lpszRecipName = new char[(strlen((const char*)lpszName) + 1)];
-   if (lpszRecipName == NULL)
-     return MAPI_E_INSUFFICIENT_MEMORY;
-   char* lpszRecipAddress = new char[(strlen((const char*)lpszName) + 6)];
-   if (!lpszRecipAddress) {
-     delete[] lpszRecipName;
-diff --git a/mailnews/mapi/mapihook/build/msgMapi.idl b/mailnews/mapi/mapihook/build/msgMapi.idl
---- a/mailnews/mapi/mapihook/build/msgMapi.idl
-+++ b/mailnews/mapi/mapihook/build/msgMapi.idl
-@@ -2,18 +2,16 @@
-  * 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/. */
- 
- // This idl will be compiled by MIDL.  MS-COM is used
- // as bridge between MAPI clients and the Mozilla.
- 
- import "unknwn.idl";
- 
--typedef wchar_t LOGIN_PW_TYPE[256];
--
- typedef struct
- {
-     unsigned long     ulReserved;
-     unsigned long     flFlags;               /* Flags */
-     unsigned long     nPosition_NotUsed;     /* character in text to be replaced by attachment */
-     LPSTR             lpszPathName;          /* Full path name including file name */
-     LPSTR             lpszFileName;          /* Real (original) file name */
-     unsigned char *   lpFileType_NotUsed ;
-@@ -86,42 +84,42 @@ typedef struct
-     object,
-     uuid(6EDCD38E-8861-11d5-A3DD-00B0D0F3BAA7),
-     helpstring("nsIMapi Interface"),
-     pointer_default(unique)
- ]
- 
- interface nsIMapi : IUnknown
- {
--    HRESULT Login([in] unsigned long aUIArg, [in, unique] LOGIN_PW_TYPE aLogin,
--                  [in, unique] LOGIN_PW_TYPE aPassWord, [in] unsigned long aFlags,
-+    HRESULT Login([in] unsigned long aUIArg, [in, unique, max_is(256)] LPSTR aLogin,
-+                  [in, unique, max_is(256)] LPSTR aPassWord, [in] unsigned long aFlags,
-                   [out] unsigned long *aSessionId);
- 
-     HRESULT Initialize();
-     HRESULT IsValid();
-     HRESULT IsValidSession([in] unsigned long aSession);
- 
-     HRESULT SendMail([in] unsigned long aSession, [in, unique] lpnsMapiMessage aMessage,
-                      [in] unsigned long aFlags, [in] unsigned long aReserved) ;
- 
-     HRESULT SendDocuments([in] unsigned long aSession,
--                          [in, unique] LPTSTR aDelimChar, [in, unique] LPTSTR aFilePaths,
--                          [in, unique] LPTSTR aFileNames, [in] ULONG aFlags ) ;
-+                          [in, unique] LPSTR aDelimChar, [in, unique] LPSTR aFilePaths,
-+                          [in, unique] LPSTR aFileNames, [in] ULONG aFlags);
- 
--    HRESULT FindNext([in] unsigned long aSession, [in] ULONG ulUIParam, [in, unique] const LPTSTR lpszMessageType,
--                     [in, unique] const LPTSTR lpszSeedMessageID, [in] ULONG flFlags, [in] ULONG ulReserved,
-+    HRESULT FindNext([in] unsigned long aSession, [in] ULONG ulUIParam, [in, unique] const LPSTR lpszMessageType,
-+                     [in, unique] const LPSTR lpszSeedMessageID, [in] ULONG flFlags, [in] ULONG ulReserved,
-                      [in] [out] char lpszMessageID[64] ) ;
- 
--    HRESULT ReadMail([in] unsigned long lhSession, [in] ULONG ulUIParam, [in, unique] LPTSTR lpszMessageID,
-+    HRESULT ReadMail([in] unsigned long lhSession, [in] ULONG ulUIParam, [in, unique] LPSTR lpszMessageID,
-                      [in] ULONG flFlags, [in] ULONG ulReserved, [out] lpnsMapiMessage *lppMessage);
- 
--    HRESULT DeleteMail([in] unsigned long lhSession, [in] ULONG ulUIParam, [in, unique] LPTSTR lpszMessageID,
-+    HRESULT DeleteMail([in] unsigned long lhSession, [in] ULONG ulUIParam, [in, unique] LPSTR lpszMessageID,
-                        [in] ULONG flFlags, [in] ULONG ulReserved);
- 
-     HRESULT SaveMail([in] unsigned long lhSession, [in] ULONG ulUIParam, [in, unique] lpnsMapiMessage lppMessage,
--                     [in] ULONG flFlags, [in] ULONG ulReserved, [in, unique] LPTSTR lpszMessageID);
-+                     [in] ULONG flFlags, [in] ULONG ulReserved, [in, unique] LPSTR lpszMessageID);
- 
-     HRESULT SendMailW([in] unsigned long aSession, [in, unique] lpnsMapiMessageW aMessage,
-                       [in] unsigned long aFlags, [in] unsigned long aReserved);
- 
-     HRESULT Logoff (unsigned long aSession);
-     HRESULT CleanUp();
- };
-diff --git a/mailnews/mapi/mapihook/src/msgMapiHook.cpp b/mailnews/mapi/mapihook/src/msgMapiHook.cpp
---- a/mailnews/mapi/mapihook/src/msgMapiHook.cpp
-+++ b/mailnews/mapi/mapihook/src/msgMapiHook.cpp
-@@ -1,17 +1,16 @@
- /* This Source Code Form is subject to the terms of the Mozilla Public
-  * License, v. 2.0. If a copy of the MPL was not distributed with this
-  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- 
- #define MAPI_STARTUP_ARG       "/MAPIStartUp"
- 
- #include <mapidefs.h>
- #include <mapi.h>
--#include <tchar.h>
- #include <direct.h>
- #include "nsCOMPtr.h"
- #include "nsIComponentManager.h"
- #include "nsIServiceManager.h"
- #include "nsISupports.h"
- #include "nsIPromptService.h"
- #include "nsIAppStartup.h"
- #include "nsIAppShellService.h"
-@@ -174,17 +173,17 @@ bool nsMapiHook::DisplayLoginDialog(bool
-       rv = dlgService->PromptPassword(nullptr, loginTitle.get(), loginText.get(),
-                                       aPassword, nullptr, &dummyValue, &btnResult);
-     }
-   }
- 
-   return btnResult;
- }
- 
--bool nsMapiHook::VerifyUserName(const nsString& aUsername, nsCString& aIdKey)
-+bool nsMapiHook::VerifyUserName(const nsCString& aUsername, nsCString& aIdKey)
- {
-   nsresult rv;
- 
-   if (aUsername.IsEmpty())
-     return false;
- 
-   nsCOMPtr<nsIMsgAccountManager> accountManager(do_GetService(NS_MSGACCOUNTMANAGER_CONTRACTID, &rv));
-   if (NS_FAILED(rv)) return false;
-@@ -204,17 +203,17 @@ bool nsMapiHook::VerifyUserName(const ns
-       rv = thisIdentity->GetEmail(email);
-       if (NS_FAILED(rv)) continue;
- 
-       // get the username from the email and compare with the username
-       int32_t index = email.FindChar('@');
-       if (index != -1)
-         email.SetLength(index);
- 
--      if (aUsername.Equals(NS_ConvertASCIItoUTF16(email)))
-+      if (aUsername.Equals(email))
-         return NS_SUCCEEDED(thisIdentity->GetKey(aIdKey));
-     }
-   }
- 
-   return false;
- }
- 
- bool
-@@ -777,20 +776,20 @@ nsresult nsMapiHook::PopulateCompFieldsW
- 
-     rv = aCompFields->SetBody(Body);
-   }
-   return rv;
- }
- 
- // this is used to populate the docs as attachments in the Comp fields for Send Documents
- nsresult nsMapiHook::PopulateCompFieldsForSendDocs(nsIMsgCompFields * aCompFields, ULONG aFlags,
--                                                   LPTSTR aDelimChar, LPTSTR aFilePaths)
-+                                                   LPSTR aDelimChar, LPSTR aFilePaths)
- {
--  nsAutoString strDelimChars ;
--  nsString strFilePaths;
-+  nsAutoCString strDelimChars;
-+  nsAutoCString strFilePaths;
-   nsresult rv = NS_OK ;
-   bool bExist ;
- 
-   if (aDelimChar)
-     strDelimChars.Assign(aDelimChar);
-   if (aFilePaths)
-     strFilePaths.Assign(aFilePaths);
- 
-@@ -812,34 +811,34 @@ nsresult nsMapiHook::PopulateCompFieldsF
-   if (FilePathsLen)
-   {
-     nsAutoString Subject ;
- 
-     // multiple files to be sent, delim specified
-     nsCOMPtr <nsIFile> pFile = do_CreateInstance (NS_LOCAL_FILE_CONTRACTID, &rv) ;
-     if (NS_FAILED(rv) || (!pFile) ) return rv ;
- 
--    char16_t * newFilePaths = (char16_t *) strFilePaths.get() ;
-+    char *newFilePaths = (char *)strFilePaths.get();
-     while (offset != kNotFound)
-     {
-       //Temp Directory
-       nsCOMPtr <nsIFile> pTempDir;
-       NS_GetSpecialDirectory(NS_OS_TEMP_DIR, getter_AddRefs(pTempDir));
- 
-       // if not already existing, create another temp dir for mapi within Win temp dir
-       // this is windows only so we can do "\\"
-       pTempDir->AppendRelativePath (NS_LITERAL_STRING("moz_mapi"));
-       pTempDir->Exists(&bExist) ;
-       if (!bExist)
-       {
-         rv = pTempDir->Create(nsIFile::DIRECTORY_TYPE, 777) ;
-         if (NS_FAILED(rv)) return rv ;
-       }
- 
--      nsString RemainingPaths ;
-+      nsAutoCString RemainingPaths;
-       RemainingPaths.Assign(newFilePaths) ;
-       offset = RemainingPaths.Find (strDelimChars) ;
-       if (offset != kNotFound)
-       {
-         RemainingPaths.SetLength (offset) ;
-         if ((offset + (int32_t)strDelimChars.Length()) < FilePathsLen)
-           newFilePaths += offset + strDelimChars.Length() ;
-         else
-@@ -847,24 +846,24 @@ nsresult nsMapiHook::PopulateCompFieldsF
-         FilePathsLen -= offset + strDelimChars.Length();
-       }
- 
-       if (RemainingPaths[1] != ':' && RemainingPaths[1] != '\\')
-       {
-         char cwd[MAX_PATH];
-         if (_getdcwd(_getdrive(), cwd, MAX_PATH))
-         {
--          nsAutoString cwdStr;
--          CopyASCIItoUTF16(cwd, cwdStr);
-+          nsAutoCString cwdStr;
-+          cwdStr.Assign(cwd);
-           cwdStr.Append('\\');
-           RemainingPaths.Insert(cwdStr, 0);
-         }
-       }
- 
--      pFile->InitWithPath (RemainingPaths) ;
-+      pFile->InitWithNativePath(RemainingPaths) ;
- 
-       rv = pFile->Exists(&bExist) ;
-       if (NS_FAILED(rv) || (!bExist) ) return NS_ERROR_FILE_TARGET_DOES_NOT_EXIST ;
- 
-       // filename of the file attachment
-       nsAutoString leafName ;
-       pFile->GetLeafName (leafName) ;
-       if(NS_FAILED(rv) || leafName.IsEmpty()) return rv ;
-diff --git a/mailnews/mapi/mapihook/src/msgMapiHook.h b/mailnews/mapi/mapihook/src/msgMapiHook.h
---- a/mailnews/mapi/mapihook/src/msgMapiHook.h
-+++ b/mailnews/mapi/mapihook/src/msgMapiHook.h
-@@ -8,26 +8,26 @@
- #include "prtypes.h"
- 
- class nsMapiHook
- {
-     public :
- 
-         static bool DisplayLoginDialog(bool aLogin, char16_t **aUsername,
-                         char16_t **aPassword);
--        static bool VerifyUserName(const nsString& aUsername, nsCString& aIdKey);
-+        static bool VerifyUserName(const nsCString& aUsername, nsCString& aIdKey);
- 
-         static bool IsBlindSendAllowed () ;
-         static nsresult BlindSendMail (unsigned long aSession, nsIMsgCompFields * aCompFields) ;
-         static nsresult ShowComposerWindow (unsigned long aSession, nsIMsgCompFields * aCompFields) ;
-         static nsresult PopulateCompFieldsWithConversion(lpnsMapiMessage aMessage,
-                                         nsIMsgCompFields * aCompFields) ;
-         static nsresult PopulateCompFieldsW(lpnsMapiMessageW aMessage, nsIMsgCompFields *aCompFields);
-         static nsresult PopulateCompFieldsForSendDocs(nsIMsgCompFields * aCompFields,
--                                        ULONG aFlags, LPTSTR aDelimChar, LPTSTR aFilePaths) ;
-+                                        ULONG aFlags, LPSTR aDelimChar, LPSTR aFilePaths);
-         static nsresult HandleAttachments(nsIMsgCompFields *aCompFields, int32_t aFileCount,
-                                           lpnsMapiFileDesc aFiles, bool aIsUTF8);
-         static nsresult HandleAttachmentsW(nsIMsgCompFields *aCompFields, int32_t aFileCount,
-                                            lpnsMapiFileDescW aFiles);
-         static void CleanUp();
- 
-         static bool isMapiService;
- };
-diff --git a/mailnews/mapi/mapihook/src/msgMapiImp.cpp b/mailnews/mapi/mapihook/src/msgMapiImp.cpp
---- a/mailnews/mapi/mapihook/src/msgMapiImp.cpp
-+++ b/mailnews/mapi/mapihook/src/msgMapiImp.cpp
-@@ -116,31 +116,31 @@ STDMETHODIMP CMapiImp::Initialize()
-     if (pConfig != nullptr)
-       hr = S_OK;
- 
-     PR_Unlock(m_Lock);
- 
-     return hr;
- }
- 
--STDMETHODIMP CMapiImp::Login(unsigned long aUIArg, LOGIN_PW_TYPE aLogin, LOGIN_PW_TYPE aPassWord,
--                unsigned long aFlags, unsigned long *aSessionId)
-+STDMETHODIMP CMapiImp::Login(unsigned long aUIArg, LPSTR aLogin, LPSTR aPassWord,
-+                             unsigned long aFlags, unsigned long *aSessionId)
- {
-     HRESULT hr = E_FAIL;
-      bool bNewSession = false;
-     nsCString id_key;
- 
-     MOZ_LOG(MAPI, mozilla::LogLevel::Debug, ("CMapiImp::Login using flags %d\n", aFlags));
-     if (aFlags & MAPI_NEW_SESSION)
-         bNewSession = true;
- 
-     // Check For Profile Name
-     if (aLogin != nullptr && aLogin[0] != '\0')
-     {
--        if (!nsMapiHook::VerifyUserName(nsString(aLogin), id_key))
-+        if (!nsMapiHook::VerifyUserName(nsDependentCString(aLogin), id_key))
-         {
-             *aSessionId = MAPI_E_LOGIN_FAILURE;
-             MOZ_LOG(MAPI, mozilla::LogLevel::Debug, ("CMapiImp::Login failed for username %s\n", aLogin));
-             NS_ASSERTION(false, "failed verifying user name");
-             return hr;
-         }
-     }
-     else
-@@ -162,17 +162,18 @@ STDMETHODIMP CMapiImp::Login(unsigned lo
-     }
- 
-     // finally register(create) the session.
-     uint32_t nSession_Id;
-     int16_t nResult = 0;
- 
-     nsMAPIConfiguration *pConfig = nsMAPIConfiguration::GetMAPIConfiguration();
-     if (pConfig != nullptr)
--        nResult = pConfig->RegisterSession(aUIArg, char16ptr_t(aLogin), char16ptr_t(aPassWord),
-+        nResult = pConfig->RegisterSession(aUIArg, nsDependentCString(aLogin),
-+                                           nsDependentCString(aPassWord),
-                                            (aFlags & MAPI_FORCE_DOWNLOAD), bNewSession,
-                                            &nSession_Id, id_key.get());
-     switch (nResult)
-     {
-         case -1 :
-         {
-             *aSessionId = MAPI_E_TOO_MANY_SESSIONS;
-             return hr;
-@@ -268,18 +269,18 @@ STDMETHODIMP CMapiImp::SendMailW(unsigne
-       {
-         rv = nsMapiHook::ShowComposerWindow(aSession, pCompFields);
-       }
-     }
- 
-     return nsMAPIConfiguration::GetMAPIErrorFromNSError(rv);
- }
- 
--STDMETHODIMP CMapiImp::SendDocuments( unsigned long aSession, LPTSTR aDelimChar,
--                            LPTSTR aFilePaths, LPTSTR aFileNames, ULONG aFlags)
-+STDMETHODIMP CMapiImp::SendDocuments(unsigned long aSession, LPSTR aDelimChar,
-+                                     LPSTR aFilePaths, LPSTR aFileNames, ULONG aFlags)
- {
-     nsresult rv = NS_OK ;
- 
-     MOZ_LOG(MAPI, mozilla::LogLevel::Debug, ("CMapiImp::SendDocument using flags %d\n", aFlags));
-     /** create nsIMsgCompFields obj and populate it **/
-     nsCOMPtr<nsIMsgCompFields> pCompFields = do_CreateInstance(NS_MSGCOMPFIELDS_CONTRACTID, &rv) ;
-     if (NS_FAILED(rv) || (!pCompFields) ) return MAPI_E_INSUFFICIENT_MEMORY ;
- 
-@@ -398,19 +399,19 @@ LONG CMapiImp::InitContext(unsigned long
-       return MAPI_E_NO_MESSAGES;
-     }
-     else
-       pMapiConfig->SetMapiListContext(session, *listContext);
-   }
-   return SUCCESS_SUCCESS;
- }
- 
--STDMETHODIMP CMapiImp::FindNext(unsigned long aSession, unsigned long ulUIParam, LPTSTR lpszMessageType,
--                              LPTSTR lpszSeedMessageID, unsigned long flFlags, unsigned long ulReserved,
--                              unsigned char lpszMessageID[64])
-+STDMETHODIMP CMapiImp::FindNext(unsigned long aSession, unsigned long ulUIParam, LPSTR lpszMessageType,
-+                                LPSTR lpszSeedMessageID, unsigned long flFlags, unsigned long ulReserved,
-+                                unsigned char lpszMessageID[64])
- 
- {
-   //
-   // If this is true, then this is the first call to this FindNext function
-   // and we should start the enumeration operation.
-   //
- 
-   *lpszMessageID = '\0';
-@@ -443,18 +444,18 @@ STDMETHODIMP CMapiImp::FindNext(unsigned
- 
-     sprintf((char *) lpszMessageID, "%d", nextKey);
-   }
- 
-   MOZ_LOG(MAPI, mozilla::LogLevel::Debug, ("CMapiImp::FindNext returning key %s\n", (char *) lpszMessageID));
-   return(SUCCESS_SUCCESS);
- }
- 
--STDMETHODIMP CMapiImp::ReadMail(unsigned long aSession, unsigned long ulUIParam, LPTSTR lpszMessageID,
--                              unsigned long flFlags, unsigned long ulReserved, lpnsMapiMessage *lppMessage)
-+STDMETHODIMP CMapiImp::ReadMail(unsigned long aSession, unsigned long ulUIParam, LPSTR lpszMessageID,
-+                                unsigned long flFlags, unsigned long ulReserved, lpnsMapiMessage *lppMessage)
- {
-   nsresult irv;
-   nsAutoCString keyString((char *) lpszMessageID);
-   MOZ_LOG(MAPI, mozilla::LogLevel::Debug, ("CMapiImp::ReadMail asking for key %s\n", (char *) lpszMessageID));
-   nsMsgKey msgKey = keyString.ToInteger(&irv);
-   if (NS_FAILED(irv))
-   {
-     NS_ASSERTION(false, "invalid lpszMessageID");
-@@ -469,34 +470,34 @@ STDMETHODIMP CMapiImp::ReadMail(unsigned
-   }
-   *lppMessage = listContext->GetMessage (msgKey, flFlags);
-   NS_ASSERTION(*lppMessage, "get message failed");
- 
-   return (*lppMessage) ? SUCCESS_SUCCESS : E_FAIL;
- }
- 
- 
--STDMETHODIMP CMapiImp::DeleteMail(unsigned long aSession, unsigned long ulUIParam, LPTSTR lpszMessageID,
--                              unsigned long flFlags, unsigned long ulReserved)
-+STDMETHODIMP CMapiImp::DeleteMail(unsigned long aSession, unsigned long ulUIParam, LPSTR lpszMessageID,
-+                                  unsigned long flFlags, unsigned long ulReserved)
- {
-   nsresult irv;
-   nsAutoCString keyString((char *) lpszMessageID);
-   nsMsgKey msgKey = keyString.ToInteger(&irv);
-   // XXX Why do we return success on failure?
-   if (NS_FAILED(irv))
-     return SUCCESS_SUCCESS;
-   MsgMapiListContext *listContext;
-   LONG ret = InitContext(aSession, &listContext);
-   if (ret != SUCCESS_SUCCESS)
-     return ret;
-   return (listContext->DeleteMessage(msgKey)) ? SUCCESS_SUCCESS : MAPI_E_INVALID_MESSAGE;
- }
- 
--STDMETHODIMP CMapiImp::SaveMail(unsigned long aSession, unsigned long ulUIParam,  lpnsMapiMessage lppMessage,
--                              unsigned long flFlags, unsigned long ulReserved, LPTSTR lpszMessageID)
-+STDMETHODIMP CMapiImp::SaveMail(unsigned long aSession, unsigned long ulUIParam, lpnsMapiMessage lppMessage,
-+                                unsigned long flFlags, unsigned long ulReserved, LPSTR lpszMessageID)
- {
-   MsgMapiListContext *listContext;
-   LONG ret = InitContext(aSession, &listContext);
-   if (ret != SUCCESS_SUCCESS)
-     return ret;
-   return S_OK;
- }
- 
-diff --git a/mailnews/mapi/mapihook/src/msgMapiImp.h b/mailnews/mapi/mapihook/src/msgMapiImp.h
---- a/mailnews/mapi/mapihook/src/msgMapiImp.h
-+++ b/mailnews/mapi/mapihook/src/msgMapiImp.h
-@@ -26,36 +26,36 @@ public :
-   // IUnknown
- 
-   STDMETHODIMP            QueryInterface(const IID& aIid, void** aPpv);
-   STDMETHODIMP_(ULONG)    AddRef();
-   STDMETHODIMP_(ULONG)    Release();
- 
-   // Interface INsMapi
- 
--  STDMETHODIMP Login(unsigned long aUIArg, LOGIN_PW_TYPE aLogin,
--                     LOGIN_PW_TYPE aPassWord, unsigned long aFlags,
-+  STDMETHODIMP Login(unsigned long aUIArg, LPSTR aLogin,
-+                     LPSTR aPassWord, unsigned long aFlags,
-                      unsigned long *aSessionId);
- 
--  STDMETHODIMP SendMail( unsigned long aSession, lpnsMapiMessage aMessage,
--       unsigned long aFlags, unsigned long aReserved) ;
-+  STDMETHODIMP SendMail(unsigned long aSession, lpnsMapiMessage aMessage,
-+                        unsigned long aFlags, unsigned long aReserved);
- 
--  STDMETHODIMP SendDocuments( unsigned long aSession, LPTSTR aDelimChar,
--                              LPTSTR aFilePaths, LPTSTR aFileNames, ULONG aFlags);
-+  STDMETHODIMP SendDocuments(unsigned long aSession, LPSTR aDelimChar,
-+                             LPSTR aFilePaths, LPSTR aFileNames, ULONG aFlags);
- 
--  STDMETHODIMP FindNext(  unsigned long aSession, unsigned long ulUIParam, LPTSTR lpszMessageType,
--                            LPTSTR lpszSeedMessageID, unsigned long flFlags, unsigned long ulReserved,
--                            unsigned char lpszMessageID[64] );
-+  STDMETHODIMP FindNext(unsigned long aSession, unsigned long ulUIParam, LPSTR lpszMessageType,
-+                        LPSTR lpszSeedMessageID, unsigned long flFlags, unsigned long ulReserved,
-+                        unsigned char lpszMessageID[64]);
- 
--  STDMETHODIMP ReadMail(unsigned long lhSession, unsigned long ulUIParam, LPTSTR lpszMessageID,
--                            unsigned long flFlags, unsigned long ulReserved, lpnsMapiMessage *lppMessage);
--  STDMETHODIMP DeleteMail(unsigned long lhSession, unsigned long ulUIParam, LPTSTR lpszMessageID,
--                            unsigned long flFlags, unsigned long ulReserved);
-+  STDMETHODIMP ReadMail(unsigned long lhSession, unsigned long ulUIParam, LPSTR lpszMessageID,
-+                        unsigned long flFlags, unsigned long ulReserved, lpnsMapiMessage *lppMessage);
-+  STDMETHODIMP DeleteMail(unsigned long lhSession, unsigned long ulUIParam, LPSTR lpszMessageID,
-+                          unsigned long flFlags, unsigned long ulReserved);
-   STDMETHODIMP SaveMail(unsigned long lhSession, unsigned long ulUIParam, lpnsMapiMessage lppMessage,
--                            unsigned long flFlags, unsigned long ulReserved, LPTSTR lpszMessageID);
-+                        unsigned long flFlags, unsigned long ulReserved, LPSTR lpszMessageID);
- 
-   STDMETHODIMP Initialize();
-   STDMETHODIMP IsValid();
-   STDMETHODIMP IsValidSession(unsigned long aSession);
- 
-   STDMETHODIMP SendMailW(unsigned long aSession, lpnsMapiMessageW aMessage,
-                          unsigned long aFlags, unsigned long aReserved);
- 
-diff --git a/mailnews/mapi/mapihook/src/msgMapiMain.cpp b/mailnews/mapi/mapihook/src/msgMapiMain.cpp
---- a/mailnews/mapi/mapihook/src/msgMapiMain.cpp
-+++ b/mailnews/mapi/mapihook/src/msgMapiMain.cpp
-@@ -41,35 +41,35 @@ void nsMAPIConfiguration::OpenConfigurat
-   // if it is decided to have configuration (registry)
-   // parameter, this function can be used to set the
-   // max sessions;
- 
-   return;
- }
- 
- int16_t nsMAPIConfiguration::RegisterSession(uint32_t aHwnd,
--                const char16_t *aUserName, const char16_t *aPassword,
-+                const nsCString& aUserName, const nsCString& aPassword,
-                 bool aForceDownLoad, bool aNewSession,
-                 uint32_t *aSession, const char *aIdKey)
- {
-   int16_t nResult = 0;
-   uint32_t n_SessionId = 0;
- 
-   PR_Lock(m_Lock);
- 
-   // Check whether max sessions is exceeded
- 
-   if (sessionCount >= m_nMaxSessions)
-   {
-     PR_Unlock(m_Lock);
-     return -1;
-   }
- 
--  if (aUserName != nullptr && aUserName[0] != '\0')
--    m_ProfileMap.Get(nsDependentString(aUserName), &n_SessionId);
-+  if (!aUserName.IsEmpty())
-+    m_ProfileMap.Get(aUserName, &n_SessionId);
- 
-   // try to share a session; if not create a session
-   if (n_SessionId > 0)
-   {
-     nsMAPISession *pTemp = nullptr;
-     m_SessionMap.Get(n_SessionId, &pTemp);
-     if (pTemp != nullptr)
-     {
-@@ -77,31 +77,30 @@ int16_t nsMAPIConfiguration::RegisterSes
-       *aSession = n_SessionId;
-       nResult = 1;
-     }
-   }
-   else if (aNewSession || n_SessionId == 0) // checking for n_SessionId is a concession
-   {
-     // create a new session; if new session is specified OR there is no session
-     nsMAPISession *pTemp = nullptr;
--    pTemp = new nsMAPISession(aHwnd, aUserName,
--                           aPassword, aForceDownLoad, aIdKey);
-+    pTemp = new nsMAPISession(aHwnd, aUserName, aPassword, aForceDownLoad, aIdKey);
- 
-     if (pTemp != nullptr)
-     {
-       session_generator++;
- 
-       // I don't think there will be (2 power 32) sessions alive
-       // in a cycle.  This is an assumption
- 
-       if (session_generator == 0)
-           session_generator++;
-       m_SessionMap.Put(session_generator, pTemp);
--      if (aUserName != nullptr && aUserName[0] != '\0')
--        m_ProfileMap.Put(nsDependentString(aUserName), session_generator);
-+      if (!aUserName.IsEmpty())
-+        m_ProfileMap.Put(aUserName, session_generator);
-       *aSession = session_generator;
-       sessionCount++;
-       nResult = 1;
-     }
-   }
- 
-   PR_Unlock(m_Lock);
-   return nResult;
-@@ -257,25 +256,24 @@ HRESULT nsMAPIConfiguration::GetMAPIErro
-       hr = MAPI_E_FAILURE;
-       break;
-   }
- 
-   return hr;
- }
- 
- 
--nsMAPISession::nsMAPISession(uint32_t aHwnd, const char16_t *aUserName,
--                             const char16_t *aPassword,
-+nsMAPISession::nsMAPISession(uint32_t aHwnd, const nsCString& aUserName, const nsCString& aPassword,
-                              bool aForceDownLoad, const char *aKey)
- : m_nShared(1),
-   m_pIdKey(aKey)
- {
-   m_listContext = NULL;
--  m_pProfileName.Assign(aUserName);
--  m_pPassword.Assign(aPassword);
-+  m_pProfileName = aUserName;
-+  m_pPassword = aPassword;
- }
- 
- nsMAPISession::~nsMAPISession()
- {
- }
- 
- uint32_t nsMAPISession::IncrementSession()
- {
-diff --git a/mailnews/mapi/mapihook/src/msgMapiMain.h b/mailnews/mapi/mapihook/src/msgMapiMain.h
---- a/mailnews/mapi/mapihook/src/msgMapiMain.h
-+++ b/mailnews/mapi/mapihook/src/msgMapiMain.h
-@@ -26,26 +26,26 @@ class nsMAPIConfiguration
- private :
- 
-   static uint32_t session_generator;
-   static uint32_t sessionCount;
-   static nsMAPIConfiguration *m_pSelfRef;
-   PRLock *m_Lock;
-   uint32_t  m_nMaxSessions;
- 
--  nsDataHashtable<nsStringHashKey, uint32_t> m_ProfileMap;
-+  nsDataHashtable<nsCStringHashKey, uint32_t> m_ProfileMap;
-   nsClassHashtable<nsUint32HashKey, nsMAPISession> m_SessionMap;
-   nsMAPIConfiguration();
-   ~nsMAPIConfiguration();
- 
- public :
-   static nsMAPIConfiguration *GetMAPIConfiguration();
-   void OpenConfiguration();
--  int16_t RegisterSession(uint32_t aHwnd, const char16_t *aUserName, \
--                          const char16_t *aPassword, bool aForceDownLoad, \
-+  int16_t RegisterSession(uint32_t aHwnd, const nsCString& aUserName,
-+                          const nsCString& aPassword, bool aForceDownLoad,
-                           bool aNewSession, uint32_t *aSession, const char *aIdKey);
-   bool IsSessionValid(uint32_t aSessionID);
-   bool UnRegisterSession(uint32_t aSessionID);
-   char16_t *GetPassword(uint32_t aSessionID);
-   void GetIdKey(uint32_t aSessionID, nsCString& aKey);
-   void *GetMapiListContext(uint32_t aSessionID);
-   void SetMapiListContext(uint32_t aSessionID, void *mapiListContext);
- 
-@@ -55,23 +55,22 @@ public :
- 
- class nsMAPISession
- {
-   friend class nsMAPIConfiguration;
- 
-   private :
-     uint32_t m_nShared;
-     nsCString m_pIdKey;
--    nsString m_pProfileName;
--    nsString m_pPassword;
-+    nsCString m_pProfileName;
-+    nsCString m_pPassword;
-     void   *m_listContext; // used by findNext
- 
-   public :
--    nsMAPISession(uint32_t aHwnd, const char16_t *aUserName, \
--                  const char16_t *aPassword, \
-+    nsMAPISession(uint32_t aHwnd, const nsCString& aUserName, const nsCString& aPassword,
-                   bool aForceDownLoad, const char *aKey);
-     uint32_t IncrementSession();
-     uint32_t DecrementSession();
-     uint32_t GetSessionCount();
-     char16_t *GetPassword();
-     void GetIdKey(nsCString& aKey);
-     ~nsMAPISession();
-     // For enumerating Messages...

+ 29 - 0
comm-esr60/comm-esr60/patches/594239-1fix-66a1.patch

@@ -0,0 +1,29 @@
+# HG changeset patch
+# User Hiroyuki Ikezoe <hikezoe@mozilla.com>
+# Date 1547876580 -3600
+# Node ID ba263124fbff63f1e7808c6780658d8bc2b195b8
+# Parent  c6e3896ddd4ebd3ca78e342d05550be51d0b2330
+Bug 594239 - Fix arguments of Simple MAPI functions that should be LPSTR. r=jorgk
+
+diff --git a/mailnews/mapi/mapiDll/MapiDll.cpp b/mailnews/mapi/mapiDll/MapiDll.cpp
+--- a/mailnews/mapi/mapiDll/MapiDll.cpp
++++ b/mailnews/mapi/mapiDll/MapiDll.cpp
+@@ -214,17 +214,17 @@ ULONG FAR PASCAL MAPISendMailW(LHANDLE l
+     if (!lhSession || pNsMapi->IsValidSession(lhSession) != S_OK)
+     {
+       FLAGS LoginFlag = 0;
+       if ((flFlags & MAPI_LOGON_UI) && (flFlags & MAPI_NEW_SESSION))
+         LoginFlag = MAPI_LOGON_UI | MAPI_NEW_SESSION;
+       else if (flFlags & MAPI_LOGON_UI)
+         LoginFlag = MAPI_LOGON_UI;
+ 
+-      hr = MAPILogon(ulUIParam, (LPTSTR)NULL, (LPTSTR)NULL, LoginFlag, 0, &lhSession);
++      hr = MAPILogon(ulUIParam, nullptr, nullptr, LoginFlag, 0, &lhSession);
+       if (hr != SUCCESS_SUCCESS)
+         return MAPI_E_LOGIN_FAILURE;
+       bTempSession = TRUE;
+     }
+ 
+     hr = pNsMapi->SendMailW(lhSession, lpMessage, flFlags, ulReserved);
+ 
+     // we are seeing a problem when using Word, although we return success from the MAPI support

+ 0 - 37
comm-esr60/comm-esr60/patches/594239-2-66a1.patch

@@ -1,37 +0,0 @@
-# HG changeset patch
-# User Jorg K <jorgk@jorgk.com>
-# Date 1548027136 -3600
-#      Mon Jan 21 00:32:16 2019 +0100
-# Node ID 0befd65ff82b2f4309a3e6ebdc4a900ea6717c07
-# Parent  852aa6bc36eff6209341e0eb521c7a40d671b2af
-Bug 594239 - Follow-up: Don't pass null to nsDependentCString. r=me DONTBUILD
-
-diff --git a/mailnews/mapi/mapihook/src/msgMapiImp.cpp b/mailnews/mapi/mapihook/src/msgMapiImp.cpp
---- a/mailnews/mapi/mapihook/src/msgMapiImp.cpp
-+++ b/mailnews/mapi/mapihook/src/msgMapiImp.cpp
-@@ -162,20 +162,21 @@ STDMETHODIMP CMapiImp::Login(unsigned lo
-     }
- 
-     // finally register(create) the session.
-     uint32_t nSession_Id;
-     int16_t nResult = 0;
- 
-     nsMAPIConfiguration *pConfig = nsMAPIConfiguration::GetMAPIConfiguration();
-     if (pConfig != nullptr)
--        nResult = pConfig->RegisterSession(aUIArg, nsDependentCString(aLogin),
--                                           nsDependentCString(aPassWord),
--                                           (aFlags & MAPI_FORCE_DOWNLOAD), bNewSession,
--                                           &nSession_Id, id_key.get());
-+        nResult = pConfig->RegisterSession(aUIArg,
-+            aLogin ? nsDependentCString(aLogin) : EmptyCString(),
-+            aPassWord ? nsDependentCString(aPassWord) : EmptyCString(),
-+            (aFlags & MAPI_FORCE_DOWNLOAD), bNewSession, 
-+            &nSession_Id, id_key.get());
-     switch (nResult)
-     {
-         case -1 :
-         {
-             *aSessionId = MAPI_E_TOO_MANY_SESSIONS;
-             return hr;
-         }
-         case 0 :

+ 10 - 15
comm-esr60/comm-esr60/patches/series

@@ -111,32 +111,27 @@ WIP-9999999-rss-cleanup.patch
 1628905-customizeToolbarAttributes-257.patch
 1633729-port-buildconfig-v1_1-257.patch
 1633729-local-repo-check-257.patch
+1399756-22-61a1.patch
+1399756-23-61a1.patch
+1399756-28-61a1.patch
+1399756-29-61a1.patch
+1399756-30-61a1.patch
+1399756-31-61a1.patch
+1399756-33-61a1.patch
+1470716-63a1.patch
 1512557-65a1.patch
 1048658-66a1.patch
 1481326-1-63a1.patch
 1481326-2-63a1.patch
 1481417-5-63a1.patch
-594239-1-66a1.patch
-594239-2-66a1.patch
-1522761-cxx-mail-257.patch
-1523762-cxx-suite-257.patch
-1524032-67a1.patch
-1531724-66a1.patch
-1533062-oslibs-67a1.patch
-1402006.patch
-1447907.patch
-1275400.patch
-1535845-sse2-68a1.patch
+594239-1fix-66a1.patch
+1447907-1-61a1.patch
 1535846-sse2-mail-68a1.patch
 1481417-1-63a1.patch
 1481417-2-63a1.patch
 1481417-3-63a1.patch
 1481417-4-63a1.patch
 1484388-63a1.patch
-1530955-whitespace-67a1.patch
-1534028-omni-67a1.patch
-1534028-omni-cc2-67a1.patch
-1540438-indent_fixup.patch
 1542641-eslintfix.patch
 1543711-getfiledisplayname.patch
 1541006-flatten.patch

+ 532 - 0
rel-257/comm-esr60/patches/1048658-66a1.patch

@@ -0,0 +1,532 @@
+# HG changeset patch
+# User Mike Kaganski <mikekaganski@gmail.com>
+# Date 1547735880 -3600
+# Node ID aaf39a9bd368a7fec19e61ccfadb5179d7fb90e8
+# Parent  e766e150d27c48c795c60ad8fb4ea7460c1f73f6
+Bug 1048658 - Implement MAPISendMailW(). r=jorgk
+
+diff --git a/mailnews/mapi/mapiDll/Mapi32.DEF b/mailnews/mapi/mapiDll/Mapi32.DEF
+--- a/mailnews/mapi/mapiDll/Mapi32.DEF
++++ b/mailnews/mapi/mapiDll/Mapi32.DEF
+@@ -12,10 +12,11 @@ EXPORTS
+         MAPIFindNext
+         MAPIReadMail
+         MAPISaveMail
+         MAPIDeleteMail
+         MAPIAddress
+         MAPIDetails
+         MAPIResolveName
+         MAPIFreeBuffer
++        MAPISendMailW
+         GetMapiDllVersion
+ 
+diff --git a/mailnews/mapi/mapiDll/MapiDll.cpp b/mailnews/mapi/mapiDll/MapiDll.cpp
+--- a/mailnews/mapi/mapiDll/MapiDll.cpp
++++ b/mailnews/mapi/mapiDll/MapiDll.cpp
+@@ -187,16 +187,61 @@ ULONG FAR PASCAL MAPISendMail (LHANDLE l
+         hr = SUCCESS_SUCCESS;
+ 
+     if (bTempSession)
+         MAPILogoff (lhSession, ulUIParam, 0,0) ;
+ 
+     return hr ;
+ }
+ 
++ULONG FAR PASCAL MAPISendMailW(LHANDLE lhSession, ULONG ulUIParam, nsMapiMessageW *lpMessage,
++                               FLAGS flFlags, ULONG ulReserved)
++{
++    HRESULT hr = 0;
++    BOOL bTempSession = FALSE;
++    nsIMapi *pNsMapi = nullptr;
++
++    if (!InitMozillaReference(&pNsMapi))
++      return MAPI_E_FAILURE;
++
++    if (lpMessage->nRecipCount > MAX_RECIPS)
++      return MAPI_E_TOO_MANY_RECIPIENTS;
++
++    if (lpMessage->nFileCount > MAX_FILES)
++      return MAPI_E_TOO_MANY_FILES;
++
++    if ((!(flFlags & MAPI_DIALOG)) && (lpMessage->lpRecips == nullptr))
++      return MAPI_E_UNKNOWN_RECIPIENT;
++
++    if (!lhSession || pNsMapi->IsValidSession(lhSession) != S_OK)
++    {
++      FLAGS LoginFlag = 0;
++      if ((flFlags & MAPI_LOGON_UI) && (flFlags & MAPI_NEW_SESSION))
++        LoginFlag = MAPI_LOGON_UI | MAPI_NEW_SESSION;
++      else if (flFlags & MAPI_LOGON_UI)
++        LoginFlag = MAPI_LOGON_UI;
++
++      hr = MAPILogon(ulUIParam, (LPTSTR)NULL, (LPTSTR)NULL, LoginFlag, 0, &lhSession);
++      if (hr != SUCCESS_SUCCESS)
++        return MAPI_E_LOGIN_FAILURE;
++      bTempSession = TRUE;
++    }
++
++    hr = pNsMapi->SendMailW(lhSession, lpMessage, flFlags, ulReserved);
++
++    // we are seeing a problem when using Word, although we return success from the MAPI support
++    // MS COM interface in mozilla, we are getting this error here. This is a temporary hack !!
++    if (hr == 0x800703e6)
++      hr = SUCCESS_SUCCESS;
++
++    if (bTempSession)
++      MAPILogoff(lhSession, ulUIParam, 0, 0);
++
++    return hr;
++}
+ 
+ ULONG FAR PASCAL MAPISendDocuments(ULONG ulUIParam, LPSTR lpszDelimChar, LPSTR lpszFilePaths,
+                                    LPSTR lpszFileNames, ULONG ulReserved)
+ {
+     LHANDLE lhSession ;
+     nsIMapi *pNsMapi = NULL;
+ 
+     if (!InitMozillaReference(&pNsMapi))
+diff --git a/mailnews/mapi/mapihook/build/msgMapi.idl b/mailnews/mapi/mapihook/build/msgMapi.idl
+--- a/mailnews/mapi/mapihook/build/msgMapi.idl
++++ b/mailnews/mapi/mapihook/build/msgMapi.idl
+@@ -39,16 +39,52 @@ typedef struct
+     unsigned long     flFlags;                          /* unread,return receipt */
+     lpnsMapiRecipDesc lpOriginator;                     /* Originator descriptor  */
+     unsigned long     nRecipCount;                      /* Number of recipients   */
+     [size_is (nRecipCount)] lpnsMapiRecipDesc lpRecips; /* Recipient descriptors  */
+     unsigned long     nFileCount;                       /* # of file attachments  */
+     [size_is (nFileCount)] lpnsMapiFileDesc lpFiles;    /* Attachment descriptors */
+ } nsMapiMessage, * lpnsMapiMessage;
+ 
++typedef struct
++{
++    unsigned long     ulReserved;
++    unsigned long     flFlags;               /* Flags */
++    unsigned long     nPosition_NotUsed;     /* character in text to be replaced by attachment */
++    LPWSTR            lpszPathName;          /* Full path name including file name */
++    LPWSTR            lpszFileName;          /* Real (original) file name */
++    unsigned char*    lpFileType_NotUsed;
++} nsMapiFileDescW, *lpnsMapiFileDescW;
++
++typedef struct
++{
++    unsigned long      ulReserved;
++    unsigned long      ulRecipClass;  /* MAPI_TO, MAPI_CC, MAPI_BCC, MAPI_ORIG    */
++    LPWSTR             lpszName;      /* Recipient name to display */
++    LPWSTR             lpszAddress;   /* Recipient email address */
++    unsigned long      ulEIDSize_NotUsed;
++    unsigned char*     lpEntryID_NotUsed;
++} nsMapiRecipDescW, *lpnsMapiRecipDescW;
++
++typedef struct
++{
++    unsigned long           ulReserved;
++    LPWSTR                  lpszSubject;                 /* Message Subject */
++    LPWSTR                  lpszNoteText;                /* Message Text */
++    LPWSTR                  lpszMessageType;
++    LPWSTR                  lpszDateReceived;            /* in YYYY/MM/DD HH:MM format */
++    LPWSTR                  lpszConversationID_NotUsed;  /* conversation thread ID */
++    unsigned long           flFlags;                     /* unread,return receipt */
++    lpnsMapiRecipDescW      lpOriginator;                /* Originator descriptor  */
++    unsigned long           nRecipCount;                 /* Number of recipients   */
++    [size_is (nRecipCount)] lpnsMapiRecipDescW lpRecips; /* Recipient descriptors  */
++    unsigned long           nFileCount;                  /* # of file attachments  */
++    [size_is (nFileCount)]  lpnsMapiFileDescW lpFiles;   /* Attachment descriptors */
++} nsMapiMessageW, *lpnsMapiMessageW;
++
+ [
+     object,
+     uuid(6EDCD38E-8861-11d5-A3DD-00B0D0F3BAA7),
+     helpstring("nsIMapi Interface"),
+     pointer_default(unique)
+ ]
+ 
+ interface nsIMapi : IUnknown
+@@ -76,14 +112,17 @@ interface nsIMapi : IUnknown
+                      [in] ULONG flFlags, [in] ULONG ulReserved, [out] lpnsMapiMessage *lppMessage);
+ 
+     HRESULT DeleteMail([in] unsigned long lhSession, [in] ULONG ulUIParam, [in, unique] LPSTR lpszMessageID,
+                        [in] ULONG flFlags, [in] ULONG ulReserved);
+ 
+     HRESULT SaveMail([in] unsigned long lhSession, [in] ULONG ulUIParam, [in, unique] lpnsMapiMessage lppMessage,
+                      [in] ULONG flFlags, [in] ULONG ulReserved, [in, unique] LPSTR lpszMessageID);
+ 
++    HRESULT SendMailW([in] unsigned long aSession, [in, unique] lpnsMapiMessageW aMessage,
++                      [in] unsigned long aFlags, [in] unsigned long aReserved);
++
+     HRESULT Logoff(unsigned long aSession);
+     HRESULT CleanUp();
+ };
+ 
+ 
+ 
+diff --git a/mailnews/mapi/mapihook/src/msgMapiHook.cpp b/mailnews/mapi/mapihook/src/msgMapiHook.cpp
+--- a/mailnews/mapi/mapihook/src/msgMapiHook.cpp
++++ b/mailnews/mapi/mapihook/src/msgMapiHook.cpp
+@@ -461,16 +461,126 @@ nsresult nsMapiHook::HandleAttachments (
+             if (NS_FAILED(rv))
+               MOZ_LOG(MAPI, mozilla::LogLevel::Debug, ("nsMapiHook::HandleAttachments: AddAttachment rv =  %lx\n", rv));
+         }
+     }
+     return rv ;
+ }
+ 
+ 
++nsresult nsMapiHook::HandleAttachmentsW(nsIMsgCompFields* aCompFields, int32_t aFileCount,
++                                        lpnsMapiFileDescW aFiles)
++{
++  nsresult rv = NS_OK ;
++  // Do nothing if there are no files to process.
++  if (!aFiles || aFileCount <= 0)
++      return NS_OK;
++
++  nsAutoCString Attachments ;
++  nsAutoCString TempFiles ;
++
++  nsCOMPtr <nsIFile> pFile = do_CreateInstance(NS_LOCAL_FILE_CONTRACTID, &rv) ;
++  if (NS_FAILED(rv) || (!pFile)) return rv ;
++  nsCOMPtr <nsIFile> pTempDir = do_CreateInstance(NS_LOCAL_FILE_CONTRACTID, &rv) ;
++  if (NS_FAILED(rv) || (!pTempDir)) return rv ;
++
++  for (int i=0 ; i < aFileCount ; i++)
++  {
++    if (aFiles[i].lpszPathName)
++    {
++      // Check if attachment exists.
++      pFile->InitWithPath (nsDependentString(aFiles[i].lpszPathName));
++
++      bool bExist ;
++      rv = pFile->Exists(&bExist) ;
++      MOZ_LOG(MAPI, mozilla::LogLevel::Debug,
++        ("nsMapiHook::HandleAttachmentsW: filename: %s path: %s exists = %s \n",
++         NS_ConvertUTF16toUTF8(aFiles[i].lpszFileName).get(),
++         NS_ConvertUTF16toUTF8(aFiles[i].lpszPathName).get(),
++         bExist ? "true" : "false"));
++      if (NS_FAILED(rv) || (!bExist)) return NS_ERROR_FILE_TARGET_DOES_NOT_EXIST ;
++
++      // Temp Directory.
++      nsCOMPtr <nsIFile> pTempDir;
++      NS_GetSpecialDirectory(NS_OS_TEMP_DIR, getter_AddRefs(pTempDir));
++
++      // Create a new sub directory called moz_mapi underneath the temp directory.
++      pTempDir->AppendRelativePath(NS_LITERAL_STRING("moz_mapi"));
++      pTempDir->Exists(&bExist) ;
++      if (!bExist)
++      {
++        rv = pTempDir->Create(nsIFile::DIRECTORY_TYPE, 777) ;
++        if (NS_FAILED(rv)) return rv ;
++      }
++
++      // Rename or copy the existing temp file with the real file name.
++
++      nsAutoString leafName ;
++      // leafName already contains a unicode leafName from lpszPathName. If we were given
++      // a value for lpszFileName, use it. Otherwise stick with leafName.
++      if (aFiles[i].lpszFileName)
++      {
++        nsAutoString wholeFileName(aFiles[i].lpszFileName);
++        // Need to find the last '\' and find the leafname from that.
++        int32_t lastSlash = wholeFileName.RFindChar(char16_t('\\'));
++        if (lastSlash != kNotFound)
++          leafName.Assign(Substring(wholeFileName, lastSlash + 1));
++        else
++          leafName.Assign(wholeFileName);
++      }
++      else
++        pFile->GetLeafName(leafName);
++
++      nsCOMPtr<nsIMsgAttachment> attachment = do_CreateInstance(NS_MSGATTACHMENT_CONTRACTID, &rv);
++      NS_ENSURE_SUCCESS(rv, rv);
++      attachment->SetName(leafName);
++
++      nsCOMPtr<nsIFile> pTempFile;
++      rv = pTempDir->Clone(getter_AddRefs(pTempFile));
++      if (NS_FAILED(rv) || !pTempFile)
++        return rv;
++
++      pTempFile->Append(leafName);
++      pTempFile->Exists(&bExist);
++      if (bExist)
++      {
++        rv = pTempFile->CreateUnique(nsIFile::NORMAL_FILE_TYPE, 0777);
++        NS_ENSURE_SUCCESS(rv, rv);
++        pTempFile->Remove(false); // remove so we can copy over it.
++        pTempFile->GetLeafName(leafName);
++      }
++      // Copy the file to its new location and file name.
++      pFile->CopyTo(pTempDir, leafName);
++      // Point pFile to the new location of the attachment.
++      pFile->InitWithFile(pTempDir);
++      pFile->Append(leafName);
++
++      // Create MsgCompose attachment object.
++      attachment->SetTemporary(true);  // this one is a temp file so set the flag for MsgCompose
++
++      // Now set the attachment object.
++      nsAutoCString pURL ;
++      NS_GetURLSpecFromFile(pFile, pURL);
++      attachment->SetUrl(pURL);
++
++      // Set the file size.
++      int64_t fileSize;
++      pFile->GetFileSize(&fileSize);
++      attachment->SetSize(fileSize);
++
++      // Add the attachment.
++      rv = aCompFields->AddAttachment (attachment);
++      if (NS_FAILED(rv))
++        MOZ_LOG(MAPI, mozilla::LogLevel::Debug,
++          ("nsMapiHook::HandleAttachmentsW: AddAttachment rv =  %lx\n", rv));
++    }
++  }
++  return rv ;
++}
++
+ // this is used to convert non Unicode data and then populate comp fields
+ nsresult nsMapiHook::PopulateCompFieldsWithConversion(lpnsMapiMessage aMessage,
+                                     nsIMsgCompFields * aCompFields)
+ {
+   nsresult rv = NS_OK;
+   bool isUTF8 = aMessage->ulReserved == CP_UTF8;
+ 
+   if (aMessage->lpOriginator)
+@@ -581,16 +691,99 @@ nsresult nsMapiHook::PopulateCompFieldsW
+   printf ("To : %S \n", To.get()) ;
+   printf ("CC : %S \n", Cc.get() ) ;
+   printf ("BCC : %S \n", Bcc.get() ) ;
+ #endif
+ 
+   return rv ;
+ }
+ 
++// This is used to populate comp fields with UTF-16 data from MAPISendMailW function.
++nsresult nsMapiHook::PopulateCompFieldsW(lpnsMapiMessageW aMessage,
++                                         nsIMsgCompFields* aCompFields)
++{
++  nsresult rv = NS_OK;
++
++  if (aMessage->lpOriginator)
++    aCompFields->SetFrom(nsDependentString(aMessage->lpOriginator->lpszAddress));
++
++  nsAutoString To;
++  nsAutoString Cc;
++  nsAutoString Bcc;
++
++  NS_NAMED_LITERAL_STRING(Comma, ",");
++
++  if (aMessage->lpRecips)
++  {
++    for (int i=0 ; i < (int)aMessage->nRecipCount ; i++)
++    {
++      if (aMessage->lpRecips[i].lpszAddress || aMessage->lpRecips[i].lpszName)
++      {
++        const wchar_t *addressWithoutType = (aMessage->lpRecips[i].lpszAddress)
++          ? aMessage->lpRecips[i].lpszAddress : aMessage->lpRecips[i].lpszName;
++        if (nsDependentString(addressWithoutType, 5).EqualsASCII("SMTP:") == 0)
++          addressWithoutType += 5;
++        switch (aMessage->lpRecips[i].ulRecipClass)
++        {
++        case MAPI_TO :
++          if (!To.IsEmpty())
++            To += Comma;
++          To.Append(nsDependentString(addressWithoutType));
++          break;
++
++        case MAPI_CC :
++          if (!Cc.IsEmpty())
++            Cc += Comma;
++          Cc.Append(nsDependentString(addressWithoutType));
++          break;
++
++        case MAPI_BCC :
++          if (!Bcc.IsEmpty())
++            Bcc += Comma;
++          Bcc.Append(nsDependentString(addressWithoutType));
++          break;
++        }
++      }
++    }
++  }
++
++  MOZ_LOG(MAPI, mozilla::LogLevel::Debug,
++    ("to: %s cc: %s bcc: %s \n", NS_ConvertUTF16toUTF8(To).get(),
++                                 NS_ConvertUTF16toUTF8(Cc).get(),
++                                 NS_ConvertUTF16toUTF8(Bcc).get()));
++  // set To, Cc, Bcc
++  aCompFields->SetTo(To);
++  aCompFields->SetCc(Cc);
++  aCompFields->SetBcc(Bcc);
++
++  // Set subject.
++  if (aMessage->lpszSubject)
++    aCompFields->SetSubject(nsDependentString(aMessage->lpszSubject));
++
++  // handle attachments as File URL
++  rv = HandleAttachmentsW(aCompFields, aMessage->nFileCount, aMessage->lpFiles);
++  if (NS_FAILED(rv)) return rv;
++
++  // Set body.
++  if (aMessage->lpszNoteText)
++  {
++    nsString Body(aMessage->lpszNoteText);
++    if (Body.IsEmpty() || Body.Last() != '\n')
++      Body.AppendLiteral(CRLF);
++
++    // This is needed when Simple MAPI is used without a compose window.
++    // See bug 1366196.
++    if (Body.Find("<html>") == kNotFound)
++      aCompFields->SetForcePlainText(true);
++
++    rv = aCompFields->SetBody(Body);
++  }
++  return rv;
++}
++
+ // this is used to populate the docs as attachments in the Comp fields for Send Documents
+ nsresult nsMapiHook::PopulateCompFieldsForSendDocs(nsIMsgCompFields * aCompFields, ULONG aFlags,
+                                                    LPSTR aDelimChar, LPSTR aFilePaths)
+ {
+   nsAutoCString strDelimChars;
+   nsAutoCString strFilePaths;
+   nsresult rv = NS_OK ;
+   bool bExist ;
+diff --git a/mailnews/mapi/mapihook/src/msgMapiHook.h b/mailnews/mapi/mapihook/src/msgMapiHook.h
+--- a/mailnews/mapi/mapihook/src/msgMapiHook.h
++++ b/mailnews/mapi/mapihook/src/msgMapiHook.h
+@@ -15,18 +15,21 @@ class nsMapiHook
+                         char16_t **aPassword);
+         static bool VerifyUserName(const nsCString& aUsername, nsCString& aIdKey);
+ 
+         static bool IsBlindSendAllowed () ;
+         static nsresult BlindSendMail (unsigned long aSession, nsIMsgCompFields * aCompFields) ;
+         static nsresult ShowComposerWindow (unsigned long aSession, nsIMsgCompFields * aCompFields) ;
+         static nsresult PopulateCompFieldsWithConversion(lpnsMapiMessage aMessage,
+                                         nsIMsgCompFields * aCompFields) ;
++        static nsresult PopulateCompFieldsW(lpnsMapiMessageW aMessage, nsIMsgCompFields *aCompFields);
+         static nsresult PopulateCompFieldsForSendDocs(nsIMsgCompFields * aCompFields,
+                                         ULONG aFlags, LPSTR aDelimChar, LPSTR aFilePaths);
+         static nsresult HandleAttachments(nsIMsgCompFields *aCompFields, int32_t aFileCount,
+                                           lpnsMapiFileDesc aFiles, bool aIsUTF8);
++        static nsresult HandleAttachmentsW(nsIMsgCompFields *aCompFields, int32_t aFileCount,
++                                           lpnsMapiFileDescW aFiles);
+         static void CleanUp();
+ 
+         static bool isMapiService;
+ };
+ 
+ #endif  // MSG_MAPI_HOOK_H_
+diff --git a/mailnews/mapi/mapihook/src/msgMapiImp.cpp b/mailnews/mapi/mapihook/src/msgMapiImp.cpp
+--- a/mailnews/mapi/mapihook/src/msgMapiImp.cpp
++++ b/mailnews/mapi/mapihook/src/msgMapiImp.cpp
+@@ -1,15 +1,15 @@
+ /* This Source Code Form is subject to the terms of the Mozilla Public
+  * License, v. 2.0. If a copy of the MPL was not distributed with this
+  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+ 
+ #include <mapidefs.h>
+ #include <mapi.h>
+-#include "msgMapi.h"
++#include <winstring.h>
+ #include "msgMapiImp.h"
+ #include "msgMapiFactory.h"
+ #include "msgMapiMain.h"
+ 
+ #include "nsIMsgCompFields.h"
+ #include "msgMapiHook.h"
+ #include "nsString.h"
+ #include "nsCOMPtr.h"
+@@ -231,16 +231,54 @@ STDMETHODIMP CMapiImp::SendMail( unsigne
+         {
+             rv = nsMapiHook::ShowComposerWindow(aSession, pCompFields);
+         }
+     }
+ 
+     return nsMAPIConfiguration::GetMAPIErrorFromNSError (rv) ;
+ }
+ 
++STDMETHODIMP CMapiImp::SendMailW(unsigned long aSession, lpnsMapiMessageW aMessage,
++                                 unsigned long aFlags, unsigned long aReserved)
++{
++    nsresult rv = NS_OK;
++
++    MOZ_LOG(MAPI, mozilla::LogLevel::Debug, ("CMapiImp::SendMailW using flags %d\n", aFlags));
++
++    // Handle possible nullptr argument.
++    nsMapiMessageW Message{};
++    if (!aMessage)
++      aMessage = &Message;
++
++    MOZ_LOG(MAPI, mozilla::LogLevel::Debug, ("CMapiImp::SendMailW flags=%x subject: %s sender: %s\n",
++            aFlags,
++            NS_ConvertUTF16toUTF8(aMessage->lpszSubject).get(),
++            NS_ConvertUTF16toUTF8((aMessage->lpOriginator) ? aMessage->lpOriginator->lpszAddress : L"").get()));
++
++    // Create nsIMsgCompFields obj and populate it.
++    nsCOMPtr<nsIMsgCompFields> pCompFields = do_CreateInstance(NS_MSGCOMPFIELDS_CONTRACTID, &rv);
++    if (NS_FAILED(rv) || !pCompFields) return MAPI_E_INSUFFICIENT_MEMORY;
++
++    rv = nsMapiHook::PopulateCompFieldsW(aMessage, pCompFields);
++
++    if (NS_SUCCEEDED (rv))
++    {
++      // Check flag to see if UI needs to be brought up.
++      if (!(aFlags & MAPI_DIALOG))
++      {
++        rv = nsMapiHook::BlindSendMail(aSession, pCompFields);
++      }
++      else
++      {
++        rv = nsMapiHook::ShowComposerWindow(aSession, pCompFields);
++      }
++    }
++
++    return nsMAPIConfiguration::GetMAPIErrorFromNSError(rv);
++}
+ 
+ STDMETHODIMP CMapiImp::SendDocuments(unsigned long aSession, LPSTR aDelimChar,
+                                      LPSTR aFilePaths, LPSTR aFileNames, ULONG aFlags)
+ {
+     nsresult rv = NS_OK ;
+ 
+     MOZ_LOG(MAPI, mozilla::LogLevel::Debug, ("CMapiImp::SendDocument using flags %d\n", aFlags));
+     /** create nsIMsgCompFields obj and populate it **/
+diff --git a/mailnews/mapi/mapihook/src/msgMapiImp.h b/mailnews/mapi/mapihook/src/msgMapiImp.h
+--- a/mailnews/mapi/mapihook/src/msgMapiImp.h
++++ b/mailnews/mapi/mapihook/src/msgMapiImp.h
+@@ -1,17 +1,15 @@
+ /* This Source Code Form is subject to the terms of the Mozilla Public
+  * License, v. 2.0. If a copy of the MPL was not distributed with this
+  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+ 
+ #ifndef MSG_MAPI_IMP_H
+ #define MSG_MAPI_IMP_H
+ 
+-#include <windows.h>
+-#include <mapi.h>
+ #include "msgMapi.h"
+ #include "nspr.h"
+ #include "nscore.h"
+ #include "nsISupportsImpl.h" // ThreadSafeAutoRefCnt
+ 
+ class nsIMsgFolder;
+ class MsgMapiListContext;
+ 
+@@ -53,16 +51,19 @@ public :
+                           unsigned long flFlags, unsigned long ulReserved);
+   STDMETHODIMP SaveMail(unsigned long lhSession, unsigned long ulUIParam, lpnsMapiMessage lppMessage,
+                         unsigned long flFlags, unsigned long ulReserved, LPSTR lpszMessageID);
+ 
+   STDMETHODIMP Initialize();
+   STDMETHODIMP IsValid();
+   STDMETHODIMP IsValidSession(unsigned long aSession);
+ 
++  STDMETHODIMP SendMailW(unsigned long aSession, lpnsMapiMessageW aMessage,
++                         unsigned long aFlags, unsigned long aReserved);
++
+   STDMETHODIMP Logoff (unsigned long aSession);
+   STDMETHODIMP CleanUp();
+ 
+   CMapiImp();
+   ~CMapiImp();
+ 
+   LONG InitContext(unsigned long session, MsgMapiListContext **listContext);
+   nsresult GetDefaultInbox(nsIMsgFolder **inboxFolder);

+ 82 - 0
rel-257/comm-esr60/patches/1399756-22-61a1.patch

@@ -0,0 +1,82 @@
+# HG changeset patch
+# User Philipp Kewisch <philipp@bugzilla.kewis.ch>
+# Date 1521730439 -3600
+# Node ID f44cfb13e72d37bbe96ea2b5f82514e34150f543
+# Parent  5e1cd8191d43ee71693dc35cee3e1496f633f07e
+Bug 1447907 - Port bug 1429875 to TB: re-write linkage logic in moz.build. rs=bustage-fix DONTBUILD CLOSED TREE
+
+diff --git a/calendar/libical/src/libical/Makefile.in b/calendar/libical/src/libical/Makefile.in
+--- a/calendar/libical/src/libical/Makefile.in
++++ b/calendar/libical/src/libical/Makefile.in
+@@ -37,28 +37,16 @@
+ 
+ DEFINES += -DHAVE_CONFIG_H
+ DEFINES += -DHAVE_SNPRINTF
+ 
+ ifneq (,$(filter BeOS Darwin OpenVMS NetBSD FreeBSD,$(OS_ARCH)))
+ DEFINES	+= -D__USE_BSD=1
+ endif
+ 
+-INSTALL_TARGETS += ical
+-ical_FILES := ical.h
+-ical_DEST = $(DIST)/include
+-ical_TARGET := export
+-
+-CSRCS += \
+-	icalderivedparameter.c \
+-	icalderivedproperty.c \
+-	icalderivedvalue.c \
+-	icalrestriction.c \
+-	$(NULL)
+-
+ include $(moztopsrcdir)/config/rules.mk
+ 
+ ######################################################################
+ #
+ # Generate files that are automatically generated (*.h.in and *.c.in)
+ # and ical.h
+ #
+ 
+diff --git a/calendar/libical/src/libical/moz.build b/calendar/libical/src/libical/moz.build
+--- a/calendar/libical/src/libical/moz.build
++++ b/calendar/libical/src/libical/moz.build
+@@ -23,16 +23,38 @@ UNIFIED_SOURCES += [
+     'icaltimezone.c',
+     'icaltypes.c',
+     'icalvalue.c',
+     'pvl.c',
+     'sspm.c',
+     'vsnprintf.c',
+ ]
+ 
++SOURCES += [
++    '!icalderivedparameter.c',
++    '!icalderivedproperty.c',
++    '!icalderivedvalue.c',
++    '!icalrestriction.c',
++]
++
++GENERATED_FILES += [
++    'ical.h',
++    'icalderivedparameter.c',
++    'icalderivedparameter.h',
++    'icalderivedproperty.c',
++    'icalderivedproperty.h',
++    'icalderivedvalue.c',
++    'icalderivedvalue.h',
++    'icalrestriction.c',
++]
++
++EXPORTS += [
++    '!ical.h'
++]
++
+ # We allow warnings for third-party code that can be updated from upstream.
+ AllowCompilerWarnings()
+ 
+ FINAL_LIBRARY = 'xul'
+ 
+ LOCAL_INCLUDES += [
+     '../..'
+ ]
+

+ 988 - 0
rel-257/comm-esr60/patches/1470716-cc-63a1.patch

@@ -0,0 +1,988 @@
+# HG changeset patch
+# User Jorg K <jorgk@jorgk.com>
+# Date 1533628051 -7200
+# Node ID 16a4b760e352c04120cb741dd203051451f00c78
+# Parent  651c75c0e077fa76a71a89eb4dc3fa7a336e6724
+Bug 1481326 - fix some clang-cl warnings and allow others. rs=bustage-fix
+
+diff --git a/db/mork/src/moz.build b/db/mork/src/moz.build
+--- a/db/mork/src/moz.build
++++ b/db/mork/src/moz.build
+@@ -48,8 +48,10 @@ SOURCES += [
+     'orkinHeap.cpp',
+ ]
+ 
+ if CONFIG['OS_ARCH'] == 'WINNT':
+     SOURCES += ['morkSearchRowCursor.cpp']
+ 
+ FINAL_LIBRARY = 'mork'
+ 
++if CONFIG['CC_TYPE'] == 'clang-cl':
++    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
+diff --git a/mail/components/build/nsMailComps.cpp b/mail/components/build/nsMailComps.cpp
+--- a/mail/components/build/nsMailComps.cpp
++++ b/mail/components/build/nsMailComps.cpp
+@@ -12,19 +12,16 @@
+ using namespace mozilla::mail;
+ 
+ NS_GENERIC_FACTORY_CONSTRUCTOR(DirectoryProvider)
+ NS_GENERIC_FACTORY_CONSTRUCTOR(nsProfileMigrator)
+ NS_GENERIC_FACTORY_CONSTRUCTOR(nsSeamonkeyProfileMigrator)
+ 
+ #ifdef XP_WIN32
+ 
+-#include "nsOEProfileMigrator.h"
+-NS_GENERIC_FACTORY_CONSTRUCTOR(nsOEProfileMigrator)
+-
+ #include "nsOutlookProfileMigrator.h"
+ NS_GENERIC_FACTORY_CONSTRUCTOR(nsOutlookProfileMigrator)
+ 
+ #include "nsMailWinIntegration.h"
+ NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsWindowsShellService, Init)
+ #endif
+ 
+ #ifdef MOZ_WIDGET_GTK
+diff --git a/mail/components/migration/src/moz.build b/mail/components/migration/src/moz.build
+--- a/mail/components/migration/src/moz.build
++++ b/mail/components/migration/src/moz.build
+@@ -7,17 +7,16 @@ SOURCES += [
+     'nsMailProfileMigratorUtils.cpp',
+     'nsNetscapeProfileMigratorBase.cpp',
+     'nsProfileMigrator.cpp',
+     'nsSeamonkeyProfileMigrator.cpp',
+ ]
+ 
+ if CONFIG['OS_ARCH'] == 'WINNT':
+     SOURCES += [
+-        'nsOEProfileMigrator.cpp',
+         'nsOutlookProfileMigrator.cpp',
+         'nsProfileMigratorBase.cpp',
+     ]
+ 
+ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
+     SOURCES += [
+         'nsProfileMigratorBase.cpp',
+     ]
+diff --git a/mail/components/migration/src/nsOEProfileMigrator.cpp b/mail/components/migration/src/nsOEProfileMigrator.cpp
+deleted file mode 100644
+--- a/mail/components/migration/src/nsOEProfileMigrator.cpp
++++ /dev/null
+@@ -1,136 +0,0 @@
+-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+-/* This Source Code Form is subject to the terms of the Mozilla Public
+- * License, v. 2.0. If a copy of the MPL was not distributed with this
+- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+-
+-#include "nsMailProfileMigratorUtils.h"
+-#include "nsDirectoryServiceDefs.h"
+-#include "nsIObserverService.h"
+-#include "nsIServiceManager.h"
+-#include "nsISupportsPrimitives.h"
+-#include "nsOEProfileMigrator.h"
+-#include "nsIProfileMigrator.h"
+-#include "nsIImportSettings.h"
+-#include "nsIFile.h"
+-#include "nsComponentManagerUtils.h"
+-
+-NS_IMPL_ISUPPORTS(nsOEProfileMigrator, nsIMailProfileMigrator, nsITimerCallback)
+-
+-
+-nsOEProfileMigrator::nsOEProfileMigrator()
+-{
+-  mProcessingMailFolders = false;
+-  // get the import service
+-  mImportModule = do_CreateInstance("@mozilla.org/import/import-oe;1");
+-}
+-
+-nsOEProfileMigrator::~nsOEProfileMigrator()
+-{
+-
+-}
+-
+-nsresult nsOEProfileMigrator::ContinueImport()
+-{
+-  return Notify(nullptr);
+-}
+-
+-///////////////////////////////////////////////////////////////////////////////
+-// nsITimerCallback
+-
+-NS_IMETHODIMP
+-nsOEProfileMigrator::Notify(nsITimer *timer)
+-{
+-  int32_t progress;
+-  mGenericImporter->GetProgress(&progress);
+-
+-  nsAutoString index;
+-  index.AppendInt( progress );
+-  NOTIFY_OBSERVERS(MIGRATION_PROGRESS, index.get());
+-
+-  if (progress == 100) // are we done yet?
+-  {
+-    if (mProcessingMailFolders)
+-      return FinishCopyingMailFolders();
+-    else
+-      return FinishCopyingAddressBookData();
+-  }
+-  else
+-  {
+-    // fire a timer to handle the next one.
+-    mFileIOTimer = do_CreateInstance("@mozilla.org/timer;1");
+-    if (mFileIOTimer)
+-      mFileIOTimer->InitWithCallback(static_cast<nsITimerCallback *>(this), 100, nsITimer::TYPE_ONE_SHOT);
+-  }
+-  return NS_OK;
+-}
+-
+-///////////////////////////////////////////////////////////////////////////////
+-// nsIMailProfileMigrator
+-
+-NS_IMETHODIMP
+-nsOEProfileMigrator::Migrate(uint16_t aItems, nsIProfileStartup* aStartup, const char16_t* aProfile)
+-{
+-  nsresult rv = NS_OK;
+-
+-  if (aStartup)
+-  {
+-    rv = aStartup->DoStartup();
+-    NS_ENSURE_SUCCESS(rv, rv);
+-  }
+-
+-  NOTIFY_OBSERVERS(MIGRATION_STARTED, nullptr);
+-  rv = ImportSettings(mImportModule);
+-
+-  // now import address books
+-  // this routine will asynchronously import address book data and it will then kick off
+-  // the final migration step, copying the mail folders over.
+-  rv = ImportAddressBook(mImportModule);
+-
+-  // don't broadcast an on end migration here. We aren't done until our asynch import process says we are done.
+-  return rv;
+-}
+-
+-NS_IMETHODIMP
+-nsOEProfileMigrator::GetMigrateData(const char16_t* aProfile,
+-                                           bool aReplace,
+-                                           uint16_t* aResult)
+-{
+-  // There's no harm in assuming everything is available.
+-  *aResult = nsIMailProfileMigrator::ACCOUNT_SETTINGS | nsIMailProfileMigrator::ADDRESSBOOK_DATA |
+-             nsIMailProfileMigrator::MAILDATA;
+-  return NS_OK;
+-}
+-
+-NS_IMETHODIMP
+-nsOEProfileMigrator::GetSourceExists(bool* aResult)
+-{
+-  *aResult = false;
+-
+-  nsCOMPtr<nsISupports> supports;
+-  mImportModule->GetImportInterface(NS_IMPORT_SETTINGS_STR, getter_AddRefs(supports));
+-  nsCOMPtr<nsIImportSettings> importSettings = do_QueryInterface(supports);
+-
+-  if (importSettings)
+-  {
+-    nsString description;
+-    nsCOMPtr<nsIFile> location;
+-    importSettings->AutoLocate(getter_Copies(description), getter_AddRefs(location), aResult);
+-  }
+-
+-  return NS_OK;
+-}
+-
+-NS_IMETHODIMP
+-nsOEProfileMigrator::GetSourceHasMultipleProfiles(bool* aResult)
+-{
+-  *aResult = false;
+-  return NS_OK;
+-}
+-
+-NS_IMETHODIMP
+-nsOEProfileMigrator::GetSourceProfiles(nsIArray** aResult)
+-{
+-  *aResult = nullptr;
+-  return NS_OK;
+-}
+-
+diff --git a/mail/components/migration/src/nsOEProfileMigrator.h b/mail/components/migration/src/nsOEProfileMigrator.h
+deleted file mode 100644
+--- a/mail/components/migration/src/nsOEProfileMigrator.h
++++ /dev/null
+@@ -1,32 +0,0 @@
+-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+-/* This Source Code Form is subject to the terms of the Mozilla Public
+- * License, v. 2.0. If a copy of the MPL was not distributed with this
+- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+-
+-#ifndef oeprofilemigrator___h___
+-#define oeprofilemigrator___h___
+-
+-#include "nsIMailProfileMigrator.h"
+-#include "nsITimer.h"
+-#include "nsProfileMigratorBase.h"
+-
+-class nsIFile;
+-class nsIPrefBranch;
+-class nsIPrefService;
+-
+-class nsOEProfileMigrator : public nsIMailProfileMigrator,
+-                            public nsITimerCallback,
+-                            public nsProfileMigratorBase
+-{
+-public:
+-  NS_DECL_NSIMAILPROFILEMIGRATOR
+-  NS_DECL_ISUPPORTS
+-  NS_DECL_NSITIMERCALLBACK
+-  nsOEProfileMigrator();
+-  virtual nsresult ContinueImport();
+-
+-private:
+-  virtual ~nsOEProfileMigrator();
+-};
+-
+-#endif
+diff --git a/mail/components/search/moz.build b/mail/components/search/moz.build
+--- a/mail/components/search/moz.build
++++ b/mail/components/search/moz.build
+@@ -12,8 +12,11 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'wi
+     EXTRA_PP_JS_MODULES += ['WinSearchIntegration.js']
+     FINAL_LIBRARY = 'mailcomps'
+ 
+ DIRS += ['public']
+ 
+ EXTRA_PP_JS_MODULES += [
+     'SearchIntegration.js',
+ ]
++
++if CONFIG['CC_TYPE'] == 'clang-cl':
++    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
+diff --git a/mail/components/search/wsenable/moz.build b/mail/components/search/wsenable/moz.build
+--- a/mail/components/search/wsenable/moz.build
++++ b/mail/components/search/wsenable/moz.build
+@@ -13,8 +13,12 @@ OS_LIBS += [
+     'ole32',
+     'shell32',
+ ]
+ 
+ RCINCLUDE = 'WSEnable.rc'
+ 
+ # This isn't XPCOM code, but it wants to use STL so disable STL wrappers
+ DisableStlWrapping()
++
++if CONFIG['CC_TYPE'] == 'clang-cl':
++    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
++
+diff --git a/mail/components/shell/moz.build b/mail/components/shell/moz.build
+--- a/mail/components/shell/moz.build
++++ b/mail/components/shell/moz.build
+@@ -28,8 +28,11 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'coco
+ EXTRA_COMPONENTS += [
+     'nsSetDefaultMail.js',
+     'shell.manifest',
+ ]
+ 
+ FINAL_LIBRARY = 'mailcomps'
+ 
+ CXXFLAGS += CONFIG['TK_CFLAGS']
++
++if CONFIG['CC_TYPE'] == 'clang-cl':
++    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
+diff --git a/mail/components/shell/nsMailWinIntegration.cpp b/mail/components/shell/nsMailWinIntegration.cpp
+--- a/mail/components/shell/nsMailWinIntegration.cpp
++++ b/mail/components/shell/nsMailWinIntegration.cpp
+@@ -97,24 +97,16 @@ static SETTING gNewsSettings[] = {
+    // Protocol Handler Class - for Vista and above
+   { MAKE_KEY_NAME1(CLS_NEWSURL, SOP), "", VAL_MAIL_OPEN, APP_PATH_SUBSTITUTION },
+ 
+   // Protocol Handlers
+   { MAKE_KEY_NAME1("news", SOP), "", VAL_MAIL_OPEN, APP_PATH_SUBSTITUTION },
+   { MAKE_KEY_NAME1("nntp", SOP), "", VAL_MAIL_OPEN, APP_PATH_SUBSTITUTION },
+ };
+ 
+-static SETTING gFeedSettings[] = {
+-   // Protocol Handler Class - for Vista and above
+-  { MAKE_KEY_NAME1(CLS_FEEDURL, SOP), "", VAL_MAIL_OPEN, APP_PATH_SUBSTITUTION },
+-
+-  // Protocol Handlers
+-  { MAKE_KEY_NAME1("feed", SOP), "", VAL_MAIL_OPEN, APP_PATH_SUBSTITUTION },
+-};
+-
+ nsresult
+ GetHelperPath(nsAutoString& aPath)
+ {
+   nsresult rv;
+   nsCOMPtr<nsIProperties> directoryService =
+     do_GetService(NS_DIRECTORY_SERVICE_CONTRACTID, &rv);
+   NS_ENSURE_SUCCESS(rv, rv);
+ 
+@@ -205,17 +197,16 @@ nsWindowsShellService::IsDefaultClient(b
+     // indicate that this app is the default.
+     if (*aIsDefaultClient)
+       IsDefaultClientVista(nsIShellService::NEWS, aIsDefaultClient);
+   }
+   // RSS / feed protocol shell integration is not working so return true
+   // until it is fixed (bug 445823).
+   if (aApps & nsIShellService::RSS)
+     *aIsDefaultClient &= true;
+-//    *aIsDefaultClient &= TestForDefault(gFeedSettings, sizeof(gFeedSettings)/sizeof(SETTING));
+ 
+   return NS_OK;
+ }
+ 
+ NS_IMETHODIMP
+ nsWindowsShellService::SetDefaultClient(bool aForAllUsers, uint16_t aApps)
+ {
+   nsAutoString appHelperPath;
+diff --git a/mailnews/addrbook/src/nsAbOutlookDirFactory.cpp b/mailnews/addrbook/src/nsAbOutlookDirFactory.cpp
+--- a/mailnews/addrbook/src/nsAbOutlookDirFactory.cpp
++++ b/mailnews/addrbook/src/nsAbOutlookDirFactory.cpp
+@@ -9,21 +9,16 @@
+ #include "nsEnumeratorUtils.h"
+ #include "nsServiceManagerUtils.h"
+ #include "nsComponentManagerUtils.h"
+ #include "nsIMutableArray.h"
+ #include "nsArrayEnumerator.h"
+ #include "nsAbBaseCID.h"
+ #include "mozilla/Logging.h"
+ 
+-static mozilla::LazyLogModule gAbOutlookDirFactoryLog("AbOutlookDirFactory");
+-
+-#define PRINTF(args) MOZ_LOG(gAbOutlookDirFactoryLog, mozilla::LogLevel::Debug, args)
+-
+-
+ NS_IMPL_ISUPPORTS(nsAbOutlookDirFactory, nsIAbDirFactory)
+ 
+ nsAbOutlookDirFactory::nsAbOutlookDirFactory(void)
+ {
+ }
+ 
+ nsAbOutlookDirFactory::~nsAbOutlookDirFactory(void)
+ {
+@@ -46,17 +41,16 @@ nsAbOutlookDirFactory::GetDirectories(co
+   nsAbWinType abType = getAbWinType(kOutlookDirectoryScheme,
+                                     nsCString(aURI).get(), stub, entry);
+ 
+   if (abType == nsAbWinType_Unknown) {
+     return NS_ERROR_FAILURE;
+   }
+   nsAbWinHelperGuard mapiAddBook(abType);
+   nsMapiEntryArray folders;
+-  ULONG nbFolders = 0;
+   nsCOMPtr<nsIMutableArray> directories(do_CreateInstance(NS_ARRAY_CONTRACTID));
+   NS_ENSURE_SUCCESS(rv, rv);
+   if (!mapiAddBook->IsOK() || !mapiAddBook->GetFolders(folders)) {
+     return NS_ERROR_FAILURE;
+   }
+ 
+   nsCOMPtr<nsIAbManager> abManager(do_GetService(NS_ABMANAGER_CONTRACTID, &rv));
+   NS_ENSURE_SUCCESS(rv, rv);
+diff --git a/mailnews/addrbook/src/nsAbOutlookDirectory.cpp b/mailnews/addrbook/src/nsAbOutlookDirectory.cpp
+--- a/mailnews/addrbook/src/nsAbOutlookDirectory.cpp
++++ b/mailnews/addrbook/src/nsAbOutlookDirectory.cpp
+@@ -259,17 +259,17 @@ static nsresult ExtractCardEntry(nsIAbCa
+ static nsresult ExtractDirectoryEntry(nsIAbDirectory *aDirectory, nsCString& aEntry)
+ {
+   aEntry.Truncate();
+   nsCString uri;
+   nsresult rv = aDirectory->GetURI(uri);
+   NS_ENSURE_SUCCESS(rv, rv);
+ 
+   nsAutoCString stub;
+-  nsAbWinType objType = getAbWinType(kOutlookDirectoryScheme, uri.get(), stub, aEntry);
++  getAbWinType(kOutlookDirectoryScheme, uri.get(), stub, aEntry);
+ 
+   return NS_OK;
+ }
+ 
+ NS_IMETHODIMP nsAbOutlookDirectory::DeleteCards(nsIArray *aCardList)
+ {
+     if (mIsQueryURI) { return NS_ERROR_NOT_IMPLEMENTED ; }
+     if (!aCardList) { return NS_ERROR_NULL_POINTER ; }
+diff --git a/mailnews/addrbook/src/nsAbWinHelper.cpp b/mailnews/addrbook/src/nsAbWinHelper.cpp
+--- a/mailnews/addrbook/src/nsAbWinHelper.cpp
++++ b/mailnews/addrbook/src/nsAbWinHelper.cpp
+@@ -67,22 +67,16 @@ nsMapiEntry::~nsMapiEntry(void)
+ }
+ 
+ void nsMapiEntry::Assign(ULONG aByteCount, LPENTRYID aEntryId)
+ {
+     assignEntryID(mEntryId, aEntryId, aByteCount) ;
+     mByteCount = aByteCount ;
+ }
+ 
+-static char UnsignedToChar(unsigned char aUnsigned)
+-{
+-    if (aUnsigned < 0xA) { return '0' + aUnsigned ; }
+-    return 'A' + aUnsigned - 0xA ;
+-}
+-
+ static char kBase64Encoding[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-." ;
+ static const int kARank = 0 ;
+ static const int kaRank = 26 ;
+ static const int k0Rank = 52 ;
+ static const unsigned char kMinusRank = 62 ;
+ static const unsigned char kDotRank = 63 ;
+ 
+ static void UnsignedToBase64(unsigned char *& aUnsigned,
+@@ -108,22 +102,16 @@ static void UnsignedToBase64(unsigned ch
+             }
+         }
+         else {
+             aString.Append(kBase64Encoding[remain0]) ;
+         }
+     }
+ }
+ 
+-static unsigned char CharToUnsigned(char aChar)
+-{
+-    if (aChar >= '0' && aChar <= '9') { return static_cast<unsigned char>(aChar) - '0' ; }
+-    return static_cast<unsigned char>(aChar) - 'A' + 0xA ;
+-}
+-
+ // This function must return the rank in kBase64Encoding of the
+ // character provided.
+ static unsigned char Base64To6Bits(char aBase64)
+ {
+     if (aBase64 >= 'A' && aBase64 <= 'Z') {
+         return static_cast<unsigned char>(aBase64 - 'A' + kARank) ;
+     }
+     if (aBase64 >= 'a' && aBase64 <= 'z') {
+@@ -956,17 +944,16 @@ nsAbWinHelperGuard::~nsAbWinHelperGuard(
+ 
+ const char *kOutlookDirectoryScheme = "moz-aboutlookdirectory://" ;
+ const int kOutlookDirSchemeLength = 21 ;
+ const char *kOutlookStub = "op/" ;
+ const int kOutlookStubLength = 3 ;
+ const char *kOutlookExpStub = "oe/" ;
+ const int kOutlookExpStubLength = 3 ;
+ const char *kOutlookCardScheme = "moz-aboutlookcard://" ;
+-const int kOutlookCardSchemeLength = 16 ;
+ 
+ nsAbWinType getAbWinType(const char *aScheme, const char *aUri, nsCString& aStub, nsCString& aEntry)
+ {
+     aStub.Truncate() ;
+     aEntry.Truncate() ;
+     uint32_t schemeLength = strlen(aScheme) ;
+ 
+     if (strncmp(aUri, aScheme, schemeLength) == 0) {
+diff --git a/mailnews/addrbook/src/nsMapiAddressBook.cpp b/mailnews/addrbook/src/nsMapiAddressBook.cpp
+--- a/mailnews/addrbook/src/nsMapiAddressBook.cpp
++++ b/mailnews/addrbook/src/nsMapiAddressBook.cpp
+@@ -1,15 +1,16 @@
+ /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+ /* This Source Code Form is subject to the terms of the Mozilla Public
+  * License, v. 2.0. If a copy of the MPL was not distributed with this
+  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+ #include "nsMapiAddressBook.h"
+ 
+ #include "mozilla/Logging.h"
++#include "mozilla/DebugOnly.h"
+ 
+ static mozilla::LazyLogModule gMapiAddressBookLog("MAPIAddressBook");
+ 
+ #define PRINTF(args) MOZ_LOG(gMapiAddressBookLog, mozilla::LogLevel::Debug, args)
+ 
+ using namespace mozilla;
+ 
+ HMODULE nsMapiAddressBook::mLibrary = NULL ;
+@@ -96,17 +97,17 @@ void nsMapiAddressBook::FreeMapiLibrary(
+             mLibrary = NULL ;
+         }
+     }
+ }
+ 
+ nsMapiAddressBook::nsMapiAddressBook(void)
+ : nsAbWinHelper()
+ {
+-    BOOL result = Initialize() ;
++    mozilla::DebugOnly<BOOL> result = Initialize() ;
+ 
+     NS_ASSERTION(result == TRUE, "Couldn't initialize Mapi Helper") ;
+     MOZ_COUNT_CTOR(nsMapiAddressBook) ;
+ }
+ 
+ nsMapiAddressBook::~nsMapiAddressBook(void)
+ {
+     MutexAutoLock guard(*mMutex) ;
+diff --git a/mailnews/addrbook/src/nsWabAddressBook.cpp b/mailnews/addrbook/src/nsWabAddressBook.cpp
+--- a/mailnews/addrbook/src/nsWabAddressBook.cpp
++++ b/mailnews/addrbook/src/nsWabAddressBook.cpp
+@@ -1,16 +1,17 @@
+ /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+ /* This Source Code Form is subject to the terms of the Mozilla Public
+  * License, v. 2.0. If a copy of the MPL was not distributed with this
+  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+ 
+ #include <tchar.h>
+ #include "nsWabAddressBook.h"
+ #include "mozilla/Logging.h"
++#include "mozilla/DebugOnly.h"
+ 
+ using namespace mozilla;
+ 
+ static LazyLogModule gWabAddressBookLog("WABAddressBook");
+ 
+ #define PRINTF(args) MOZ_LOG(gWabAddressBookLog, mozilla::LogLevel::Debug, args)
+ 
+ HMODULE nsWabAddressBook::mLibrary = NULL ;
+@@ -76,17 +77,17 @@ void nsWabAddressBook::FreeWabLibrary(vo
+             mLibrary = NULL ;
+         }
+     }
+ }
+ 
+ nsWabAddressBook::nsWabAddressBook(void)
+ : nsAbWinHelper()
+ {
+-    BOOL result = Initialize() ;
++    mozilla::DebugOnly<BOOL> result = Initialize() ;
+ 
+     NS_ASSERTION(result == TRUE, "Couldn't initialize Wab Helper") ;
+     MOZ_COUNT_CTOR(nsWabAddressBook) ;
+ }
+ 
+ nsWabAddressBook::~nsWabAddressBook(void)
+ {
+     MutexAutoLock guard(*mMutex) ;
+diff --git a/mailnews/base/src/nsMessengerWinIntegration.cpp b/mailnews/base/src/nsMessengerWinIntegration.cpp
+--- a/mailnews/base/src/nsMessengerWinIntegration.cpp
++++ b/mailnews/base/src/nsMessengerWinIntegration.cpp
+@@ -1,9 +1,9 @@
+-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+ /* This Source Code Form is subject to the terms of the Mozilla Public
+  * License, v. 2.0. If a copy of the MPL was not distributed with this
+  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+ 
+ #include <windows.h>
+ #include <shellapi.h>
+ 
+ #include "nsMessengerWinIntegration.h"
+@@ -41,16 +41,17 @@
+ #include "nsISupportsPrimitives.h"
+ #include "nsIInterfaceRequestorUtils.h"
+ #include "nsIWeakReferenceUtils.h"
+ #include "nsComponentManagerUtils.h"
+ #include "nsNativeCharsetUtils.h"
+ #include "nsMsgUtils.h"
+ #include "mozilla/LookAndFeel.h"
+ #include "mozilla/Services.h"
++#include "mozilla/DebugOnly.h"
+ #include "nsIMutableArray.h"
+ #include "nsArrayUtils.h"
+ 
+ #include "nsToolkitCompsCID.h"
+ #include <stdlib.h>
+ #define PROFILE_COMMANDLINE_ARG u" -profile "
+ 
+ #define NOTIFICATIONCLASSNAME "MailBiffNotificationMessageWindow"
+@@ -252,17 +253,17 @@ nsMessengerWinIntegration::nsMessengerWi
+ nsMessengerWinIntegration::~nsMessengerWinIntegration()
+ {
+   if (mUnreadCountUpdateTimer) {
+     mUnreadCountUpdateTimer->Cancel();
+     mUnreadCountUpdateTimer = nullptr;
+   }
+ 
+   // one last attempt, update the registry
+-  nsresult rv = UpdateRegistryWithCurrent();
++  mozilla::DebugOnly<nsresult> rv = UpdateRegistryWithCurrent();
+   NS_ASSERTION(NS_SUCCEEDED(rv), "failed to update registry on shutdown");
+   DestroyBiffIcon();
+ }
+ 
+ NS_IMPL_ADDREF(nsMessengerWinIntegration)
+ NS_IMPL_RELEASE(nsMessengerWinIntegration)
+ 
+ NS_INTERFACE_MAP_BEGIN(nsMessengerWinIntegration)
+@@ -291,17 +292,17 @@ NOTIFYICONDATAW sBiffIconData = { (DWORD
+                                   2,
+                                   NIF_ICON | NIF_MESSAGE | NIF_TIP | NIF_INFO,
+                                   WM_USER,
+                                   0,
+                                   L"",
+                                   0,
+                                   0,
+                                   L"",
+-                                  30000,
++                                  { 30000 },
+                                   L"",
+                                   NIIF_USER | NIIF_NOSOUND };
+ // allow for the null terminator
+ static const uint32_t kMaxTooltipSize = sizeof(sBiffIconData.szTip) /
+                                         sizeof(sBiffIconData.szTip[0]) - 1;
+ static const uint32_t kMaxBalloonSize = sizeof(sBiffIconData.szInfo) /
+                                         sizeof(sBiffIconData.szInfo[0]) - 1;
+ static const uint32_t kMaxBalloonTitle = sizeof(sBiffIconData.szInfoTitle) /
+@@ -585,17 +586,17 @@ nsresult nsMessengerWinIntegration::Aler
+ }
+ 
+ #ifdef MOZ_SUITE
+ nsresult nsMessengerWinIntegration::AlertClickedSimple()
+ {
+   mSuppressBiffIcon = true;
+   return NS_OK;
+ }
+-#endif MOZ_SUITE
++#endif
+ 
+ NS_IMETHODIMP
+ nsMessengerWinIntegration::Observe(nsISupports* aSubject, const char* aTopic, const char16_t* aData)
+ {
+   if (strcmp(aTopic, "alertfinished") == 0)
+       return AlertFinished();
+ 
+   if (strcmp(aTopic, "alertclickcallback") == 0)
+@@ -924,17 +925,17 @@ nsMessengerWinIntegration::OnItemIntProp
+ }
+ 
+ void
+ nsMessengerWinIntegration::OnUnreadCountUpdateTimer(nsITimer *timer, void *osIntegration)
+ {
+   nsMessengerWinIntegration *winIntegration = (nsMessengerWinIntegration*)osIntegration;
+ 
+   winIntegration->mUnreadTimerActive = false;
+-  nsresult rv = winIntegration->UpdateUnreadCount();
++  mozilla::DebugOnly<nsresult> rv = winIntegration->UpdateUnreadCount();
+   NS_ASSERTION(NS_SUCCEEDED(rv), "updating unread count failed");
+ }
+ 
+ nsresult
+ nsMessengerWinIntegration::RemoveCurrentFromRegistry()
+ {
+   // If Windows XP, open the registry and get rid of old account registry entries
+   // If there is a email prefix, get it and use it to build the registry key.
+@@ -1011,19 +1012,19 @@ nsMessengerWinIntegration::UpdateRegistr
+     if (!mEmailPrefix.IsEmpty()) {
+       pBuffer.Assign(mEmailPrefix);
+       pBuffer.Append(NS_ConvertASCIItoUTF16(mEmail));
+     }
+     else
+       CopyASCIItoUTF16(mEmail, pBuffer);
+ 
+     // Write the info into the registry
+-    HRESULT hr = SHSetUnreadMailCountW(pBuffer.get(),
+-                                       mCurrentUnreadCount,
+-                                       commandLinerForAppLaunch.get());
++    SHSetUnreadMailCountW(pBuffer.get(),
++                          mCurrentUnreadCount,
++                          commandLinerForAppLaunch.get());
+   }
+ 
+   // do this last
+   mLastUnreadCountWrittenToRegistry = mCurrentUnreadCount;
+ 
+   return NS_OK;
+ }
+ 
+diff --git a/mailnews/base/src/nsMessengerWinIntegration.h b/mailnews/base/src/nsMessengerWinIntegration.h
+--- a/mailnews/base/src/nsMessengerWinIntegration.h
++++ b/mailnews/base/src/nsMessengerWinIntegration.h
+@@ -1,9 +1,9 @@
+-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+ /* This Source Code Form is subject to the terms of the Mozilla Public
+  * License, v. 2.0. If a copy of the MPL was not distributed with this
+  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+ 
+ #ifndef __nsMessengerWinIntegration_h
+ #define __nsMessengerWinIntegration_h
+ 
+ #include <windows.h>
+@@ -55,17 +55,16 @@ private:
+   void FillToolTipInfo();
+   void GenericShellNotify(DWORD aMessage);
+   void DestroyBiffIcon();
+ 
+   nsresult GetFirstFolderWithNewMail(nsACString& aFolderURI);
+ 
+   nsresult GetStringBundle(nsIStringBundle **aBundle);
+   nsCOMPtr<nsIMutableArray> mFoldersWithNewMail;  // keep track of all the root folders with pending new mail
+-  uint32_t mCurrentBiffState;
+ 
+   bool mBiffIconVisible;
+   bool mBiffIconInitialized;
+   bool mSuppressBiffIcon;
+   bool mAlertInProgress;
+ 
+   // "might" because we don't know until we check
+   // what type of server is associated with the default account
+diff --git a/mailnews/base/src/nsMsgSearchDBView.cpp b/mailnews/base/src/nsMsgSearchDBView.cpp
+--- a/mailnews/base/src/nsMsgSearchDBView.cpp
++++ b/mailnews/base/src/nsMsgSearchDBView.cpp
+@@ -282,17 +282,17 @@ nsMsgSearchDBView::OnHdrDeleted(nsIMsgDB
+ NS_IMETHODIMP
+ nsMsgSearchDBView::OnHdrFlagsChanged(nsIMsgDBHdr *aHdrChanged,
+                                      uint32_t aOldFlags,
+                                      uint32_t aNewFlags,
+                                      nsIDBChangeListener *aInstigator)
+ {
+   // Defer to base class if we're grouped or not threaded at all.
+   if (m_viewFlags & nsMsgViewFlagsType::kGroupBySort ||
+-      !(m_viewFlags && nsMsgViewFlagsType::kThreadedDisplay))
++      !(m_viewFlags & nsMsgViewFlagsType::kThreadedDisplay))
+   {
+     return nsMsgGroupView::OnHdrFlagsChanged(aHdrChanged, aOldFlags,
+                                              aNewFlags, aInstigator);
+   }
+ 
+   nsCOMPtr <nsIMsgThread> thread;
+   bool foundMessageId;
+   // Check if the hdr that changed is in a xf thread, and if the read flag
+diff --git a/mailnews/compose/src/moz.build b/mailnews/compose/src/moz.build
+--- a/mailnews/compose/src/moz.build
++++ b/mailnews/compose/src/moz.build
+@@ -52,8 +52,10 @@ EXTRA_COMPONENTS += [
+ ]
+ 
+ LOCAL_INCLUDES += [
+   '/%s/dom/base' % CONFIG['mozreltopsrcdir'],
+ ]
+ 
+ FINAL_LIBRARY = 'mail'
+ 
++if CONFIG['CC_TYPE'] == 'clang-cl':
++    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
+diff --git a/mailnews/imap/src/nsImapUtils.cpp b/mailnews/imap/src/nsImapUtils.cpp
+--- a/mailnews/imap/src/nsImapUtils.cpp
++++ b/mailnews/imap/src/nsImapUtils.cpp
+@@ -176,17 +176,17 @@ NS_IMETHODIMP nsImapMailboxSpec::GetAllo
+ NS_IMETHODIMP nsImapMailboxSpec::SetAllocatedPathName(const nsACString &aAllocatedPathName)
+ {
+   mAllocatedPathName = aAllocatedPathName;
+   return NS_OK;
+ }
+ 
+ NS_IMETHODIMP nsImapMailboxSpec::GetUnicharPathName(nsAString &aUnicharPathName)
+ {
+-  aUnicharPathName = aUnicharPathName;
++  aUnicharPathName = mUnicharPathName;
+   return NS_OK;
+ }
+ 
+ NS_IMETHODIMP nsImapMailboxSpec::SetUnicharPathName(const nsAString &aUnicharPathName)
+ {
+   mUnicharPathName = aUnicharPathName;
+   return NS_OK;
+ }
+diff --git a/mailnews/import/outlook/src/MapiApi.cpp b/mailnews/import/outlook/src/MapiApi.cpp
+--- a/mailnews/import/outlook/src/MapiApi.cpp
++++ b/mailnews/import/outlook/src/MapiApi.cpp
+@@ -1423,17 +1423,17 @@ void CMapiApi::ReportStringProp(const ch
+ }
+ 
+ void CMapiApi::GetPropTagName(ULONG tag, nsCString& s)
+ {
+   char numStr[256];
+   PR_snprintf(numStr, 256, "0x%lx, %ld", tag, tag);
+   s = numStr;
+   switch(tag) {
+-#include "mapitagstrs.cpp"
++#include "MapiTagStrs.cpp"
+   }
+   s += ", data: ";
+   switch(PROP_TYPE(tag)) {
+     case PT_UNSPECIFIED: s += "PT_UNSPECIFIED"; break;
+     case PT_NULL: s += "PT_NULL"; break;
+     case PT_I2: s += "PT_I2"; break;
+     case PT_LONG: s += "PT_LONG"; break;
+     case PT_R4: s += "PT_R4"; break;
+@@ -1723,39 +1723,37 @@ CMsgStore::CMsgStore(ULONG cbEid, LPENTR
+ 
+ CMsgStore::~CMsgStore()
+ {
+   if (m_lpEid)
+     delete m_lpEid;
+ 
+   if (m_lpMdb) {
+     ULONG flags = LOGOFF_NO_WAIT;
+-    HRESULT hr = m_lpMdb->StoreLogoff(&flags);
++    m_lpMdb->StoreLogoff(&flags);
+     m_lpMdb->Release();
+     m_lpMdb = NULL;
+   }
+ }
+ 
+ void CMsgStore::SetEntryID(ULONG cbEid, LPENTRYID lpEid)
+ {
+-  HRESULT    hr;
+-
+   if (m_lpEid)
+     delete m_lpEid;
+ 
+   m_lpEid = NULL;
+   if (cbEid) {
+     m_lpEid = new BYTE[cbEid];
+     memcpy(m_lpEid, lpEid, cbEid);
+   }
+   m_cbEid = cbEid;
+ 
+   if (m_lpMdb) {
+     ULONG flags = LOGOFF_NO_WAIT;
+-    hr = m_lpMdb->StoreLogoff(&flags);
++    m_lpMdb->StoreLogoff(&flags);
+     m_lpMdb->Release();
+     m_lpMdb = NULL;
+   }
+ }
+ 
+ BOOL CMsgStore::Open(LPMAPISESSION pSession, LPMDB *ppMdb)
+ {
+   if (m_lpMdb) {
+diff --git a/mailnews/import/outlook/src/MapiMessage.cpp b/mailnews/import/outlook/src/MapiMessage.cpp
+--- a/mailnews/import/outlook/src/MapiMessage.cpp
++++ b/mailnews/import/outlook/src/MapiMessage.cpp
+@@ -832,17 +832,16 @@ bool CMapiMessage::GetTmpFile(/*out*/ ns
+     return false;
+ 
+   tmpFile.forget(aResult);
+   return true;
+ }
+ 
+ bool CMapiMessage::CopyMsgAttachToFile(LPATTACH lpAttach, /*out*/ nsIFile **tmp_file)
+ {
+-  bool bResult = true;
+   LPMESSAGE  lpMsg;
+   HRESULT hr = lpAttach->OpenProperty(PR_ATTACH_DATA_OBJ, &IID_IMessage, 0, 0,
+                                       reinterpret_cast<LPUNKNOWN *>(&lpMsg));
+   if (HR_FAILED(hr))
+     return false;
+ 
+   if (!GetTmpFile(tmp_file))
+     return false;
+diff --git a/mailnews/import/outlook/src/moz.build b/mailnews/import/outlook/src/moz.build
+--- a/mailnews/import/outlook/src/moz.build
++++ b/mailnews/import/outlook/src/moz.build
+@@ -17,8 +17,10 @@ SOURCES += [
+ ]
+ 
+ FINAL_LIBRARY = 'import'
+ 
+ LOCAL_INCLUDES += [
+     '../../src'
+ ]
+ 
++if CONFIG['CC_TYPE'] == 'clang-cl':
++    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
+diff --git a/mailnews/import/outlook/src/nsOutlookCompose.cpp b/mailnews/import/outlook/src/nsOutlookCompose.cpp
+--- a/mailnews/import/outlook/src/nsOutlookCompose.cpp
++++ b/mailnews/import/outlook/src/nsOutlookCompose.cpp
+@@ -40,17 +40,16 @@
+ 
+ #include "nsAutoPtr.h"
+ #include "nsIThread.h"
+ #include "nsThreadUtils.h"
+ 
+ #include "nsMsgMessageFlags.h"
+ #include "nsMsgLocalFolderHdrs.h"
+ 
+-static NS_DEFINE_CID(kMsgSendCID, NS_MSGSEND_CID);
+ static NS_DEFINE_CID(kMsgCompFieldsCID, NS_MSGCOMPFIELDS_CID);
+ 
+ #ifdef IMPORT_DEBUG
+ static const char *p_test_headers =
+ "Received: from netppl.invalid (IDENT:monitor@get.freebsd.because.microsoftsucks.invalid [209.3.31.115])\n\
+  by mail4.sirius.invalid (8.9.1/8.9.1) with SMTP id PAA27232;\n\
+  Mon, 17 May 1999 15:27:43 -0700 (PDT)\n\
+ Message-ID: <ikGD3jRTsKklU.Ggm2HmE2A1Jsqd0p@netppl.invalid>\n\
+diff --git a/mailnews/import/outlook/src/nsOutlookMail.cpp b/mailnews/import/outlook/src/nsOutlookMail.cpp
+--- a/mailnews/import/outlook/src/nsOutlookMail.cpp
++++ b/mailnews/import/outlook/src/nsOutlookMail.cpp
+@@ -12,17 +12,17 @@
+ #include "nsMsgUtils.h"
+ #include "nsIServiceManager.h"
+ #include "nsIImportService.h"
+ #include "nsIImportFieldMap.h"
+ #include "nsIImportMailboxDescriptor.h"
+ #include "nsIImportABDescriptor.h"
+ #include "nsIMutableArray.h"
+ #include "nsOutlookStringBundle.h"
+-#include "nsABBaseCID.h"
++#include "nsAbBaseCID.h"
+ #include "nsIAbCard.h"
+ #include "mdb.h"
+ #include "ImportDebug.h"
+ #include "nsOutlookMail.h"
+ #include "nsUnicharUtils.h"
+ #include "nsIInputStream.h"
+ #include "nsIOutputStream.h"
+ #include "nsIMsgPluggableStore.h"
+diff --git a/mailnews/import/winlivemail/moz.build b/mailnews/import/winlivemail/moz.build
+--- a/mailnews/import/winlivemail/moz.build
++++ b/mailnews/import/winlivemail/moz.build
+@@ -7,8 +7,10 @@ SOURCES += [
+     'nsWMImport.cpp',
+     'nsWMSettings.cpp',
+     'nsWMStringBundle.cpp',
+     'nsWMUtils.cpp',
+ ]
+ 
+ FINAL_LIBRARY = 'import'
+ 
++if CONFIG['CC_TYPE'] == 'clang-cl':
++    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
+diff --git a/mailnews/import/winlivemail/nsWMImport.cpp b/mailnews/import/winlivemail/nsWMImport.cpp
+--- a/mailnews/import/winlivemail/nsWMImport.cpp
++++ b/mailnews/import/winlivemail/nsWMImport.cpp
+@@ -66,17 +66,16 @@ public:
+ public:
+   static void ReportSuccess(nsString& name, int32_t count, nsString *pStream);
+   static void ReportError(int32_t errorNum, nsString& name, nsString *pStream);
+   static void AddLinebreak(nsString *pStream);
+   static void SetLogs(nsString& success, nsString& error, char16_t **pError, char16_t **pSuccess);
+ 
+ private:
+   virtual ~ImportWMMailImpl();
+-  uint32_t m_bytesDone;
+ };
+ 
+ nsWMImport::nsWMImport()
+ {
+   IMPORT_LOG0("nsWMImport Module Created\n");
+   nsWMStringBundle::GetStringBundle();
+ }
+ 
+diff --git a/mailnews/mapi/mapiDll/moz.build b/mailnews/mapi/mapiDll/moz.build
+--- a/mailnews/mapi/mapiDll/moz.build
++++ b/mailnews/mapi/mapiDll/moz.build
+@@ -15,8 +15,11 @@ SOURCES += [
+ OS_LIBS += [
+     'ole32',
+ ]
+ 
+ DEFINES['UNICODE'] = True
+ DEFINES['_UNICODE'] = True
+ 
+ DEFFILE = SRCDIR + '/Mapi32.def'
++
++if CONFIG['CC_TYPE'] == 'clang-cl':
++    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
+diff --git a/mailnews/mapi/mapihook/build/moz.build b/mailnews/mapi/mapihook/build/moz.build
+--- a/mailnews/mapi/mapihook/build/moz.build
++++ b/mailnews/mapi/mapihook/build/moz.build
+@@ -12,8 +12,10 @@ OS_LIBS += [
+ for var in ('REGISTER_PROXY_DLL', 'UNICODE', '_UNICODE'):
+     DEFINES[var] = True
+ 
+ # This produces a compile warning mozilla-config.h(145): warning C4005: '_WIN32_WINNT': macro redefinition
+ #DEFINES['_WIN32_WINNT'] = '0x400'
+ 
+ DEFFILE = SRCDIR + '/MapiProxy.def'
+ 
++if CONFIG['CC_TYPE'] == 'clang-cl':
++    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
+diff --git a/mailnews/mapi/mapihook/src/moz.build b/mailnews/mapi/mapihook/src/moz.build
+--- a/mailnews/mapi/mapihook/src/moz.build
++++ b/mailnews/mapi/mapihook/src/moz.build
+@@ -15,8 +15,11 @@ SOURCES += [
+ FINAL_LIBRARY = 'xul'
+ 
+ OS_LIBS += [
+     'ole32',
+ ]
+ 
+ DEFINES['UNICODE'] = True
+ DEFINES['_UNICODE'] = True
++
++if CONFIG['CC_TYPE'] == 'clang-cl':
++    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326

+ 29 - 0
rel-257/comm-esr60/patches/1481326-2-63a1.patch

@@ -0,0 +1,29 @@
+# HG changeset patch
+# User Jorg K <jorgk@jorgk.com>
+# Date 1533630944 -7200
+# Node ID f67c130b8d329df8c79c9ca35b5f2ae3822a9776
+# Parent  5f5ecedf2e3ec4464ad3ccd4214414aad3b8e648
+Bug 1481326 - Follow-up: Remove another unused variable. rs=bustage-fix DONTBUILD
+
+diff --git a/mailnews/mapi/mapihook/src/msgMapiImp.cpp b/mailnews/mapi/mapihook/src/msgMapiImp.cpp
+--- a/mailnews/mapi/mapihook/src/msgMapiImp.cpp
++++ b/mailnews/mapi/mapihook/src/msgMapiImp.cpp
+@@ -610,17 +610,17 @@ lpnsMapiMessage MsgMapiListContext::GetM
+   lpnsMapiMessage message = (lpnsMapiMessage) CoTaskMemAlloc (sizeof(nsMapiMessage));
+   memset(message, 0, sizeof(nsMapiMessage));
+   if (message)
+   {
+     nsCString subject;
+     nsCString author;
+     nsCOMPtr <nsIMsgDBHdr> msgHdr;
+ 
+-    nsresult rv = m_db->GetMsgHdrForKey (key, getter_AddRefs(msgHdr));
++    m_db->GetMsgHdrForKey (key, getter_AddRefs(msgHdr));
+     if (msgHdr)
+     {
+       msgHdr->GetSubject (getter_Copies(subject));
+       message->lpszSubject = (char *) CoTaskMemAlloc(subject.Length() + 1);
+       strcpy((char *) message->lpszSubject, subject.get());
+       uint32_t date;
+       (void) msgHdr->GetDateInSeconds(&date);
+       message->lpszDateReceived = ConvertDateToMapiFormat (date);

+ 133 - 0
rel-257/comm-esr60/patches/1481417-5-63a1.patch

@@ -0,0 +1,133 @@
+# HG changeset patch
+# User aceman <acelists@atlas.sk>
+# Date 1533706697 -7200
+# Node ID 16dc2cb0e5356bb9347bbb638dbb929dbfe8ece0
+# Parent  cb739b4c420031dae7d7ec0d9b100c959023410e
+Bug 1481417 - Part 5: Fix warnings and remove AllowCompilerWarnings() or replace it with something more specific in mailnews/mapi. r=jorgk
+
+diff --git a/mailnews/mapi/mapiDll/moz.build b/mailnews/mapi/mapiDll/moz.build
+--- a/mailnews/mapi/mapiDll/moz.build
++++ b/mailnews/mapi/mapiDll/moz.build
+@@ -15,11 +15,8 @@ SOURCES += [
+ OS_LIBS += [
+     'ole32',
+ ]
+ 
+ DEFINES['UNICODE'] = True
+ DEFINES['_UNICODE'] = True
+ 
+ DEFFILE = SRCDIR + '/Mapi32.def'
+-
+-if CONFIG['CC_TYPE'] == 'clang-cl':
+-    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
+diff --git a/mailnews/mapi/mapihook/build/moz.build b/mailnews/mapi/mapihook/build/moz.build
+--- a/mailnews/mapi/mapihook/build/moz.build
++++ b/mailnews/mapi/mapihook/build/moz.build
+@@ -12,10 +12,11 @@ OS_LIBS += [
+ for var in ('REGISTER_PROXY_DLL', 'UNICODE', '_UNICODE'):
+     DEFINES[var] = True
+ 
+ # This produces a compile warning mozilla-config.h(145): warning C4005: '_WIN32_WINNT': macro redefinition
+ #DEFINES['_WIN32_WINNT'] = '0x400'
+ 
+ DEFFILE = SRCDIR + '/MapiProxy.def'
+ 
++# clang-cl complains about these in generated code:
+ if CONFIG['CC_TYPE'] == 'clang-cl':
+-    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
++    CFLAGS += ['-Wno-error=extern-initializer','-Wno-error=missing-braces','-Wno-error=unused-const-variable']
+diff --git a/mailnews/mapi/mapihook/src/moz.build b/mailnews/mapi/mapihook/src/moz.build
+--- a/mailnews/mapi/mapihook/src/moz.build
++++ b/mailnews/mapi/mapihook/src/moz.build
+@@ -16,10 +16,11 @@ FINAL_LIBRARY = 'xul'
+ 
+ OS_LIBS += [
+     'ole32',
+ ]
+ 
+ DEFINES['UNICODE'] = True
+ DEFINES['_UNICODE'] = True
+ 
++# clang-cl rightly complains about switch on nsresult.
+ if CONFIG['CC_TYPE'] == 'clang-cl':
+-    AllowCompilerWarnings()  # workaround for bug 1090497 / bug 1481326
++    CXXFLAGS += ['-Wno-error=switch']
+diff --git a/mailnews/mapi/mapihook/src/msgMapiFactory.h b/mailnews/mapi/mapihook/src/msgMapiFactory.h
+--- a/mailnews/mapi/mapihook/src/msgMapiFactory.h
++++ b/mailnews/mapi/mapihook/src/msgMapiFactory.h
+@@ -27,13 +27,13 @@ public :
+     STDMETHODIMP        CreateInstance (LPUNKNOWN aUnkOuter, REFIID aIid, void **aPpv);
+     STDMETHODIMP        LockServer (BOOL aLock);
+ 
+     CMapiFactory ();
+ 
+ private:
+     mozilla::ThreadSafeAutoRefCnt m_cRef;
+ 
+-    ~CMapiFactory ();
++    virtual ~CMapiFactory ();
+ };
+ 
+ #endif  // MSG_MAPI_FACTORY_H
+ 
+diff --git a/mailnews/mapi/mapihook/src/msgMapiImp.h b/mailnews/mapi/mapihook/src/msgMapiImp.h
+--- a/mailnews/mapi/mapihook/src/msgMapiImp.h
++++ b/mailnews/mapi/mapihook/src/msgMapiImp.h
+@@ -58,17 +58,17 @@ public :
+ 
+   STDMETHODIMP SendMailW(unsigned long aSession, lpnsMapiMessageW aMessage,
+                          unsigned long aFlags, unsigned long aReserved);
+ 
+   STDMETHODIMP Logoff (unsigned long aSession);
+   STDMETHODIMP CleanUp();
+ 
+   CMapiImp();
+-  ~CMapiImp();
++  virtual ~CMapiImp();
+ 
+   LONG InitContext(unsigned long session, MsgMapiListContext **listContext);
+   nsresult GetDefaultInbox(nsIMsgFolder **inboxFolder);
+ 
+ private :
+   PRLock *m_Lock;
+   mozilla::ThreadSafeAutoRefCnt m_cRef;
+ };
+diff --git a/mailnews/mapi/mapihook/src/msgMapiMain.h b/mailnews/mapi/mapihook/src/msgMapiMain.h
+--- a/mailnews/mapi/mapihook/src/msgMapiMain.h
++++ b/mailnews/mapi/mapihook/src/msgMapiMain.h
+@@ -1,14 +1,14 @@
+ /* This Source Code Form is subject to the terms of the Mozilla Public
+  * License, v. 2.0. If a copy of the MPL was not distributed with this
+  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+ 
+ #ifndef MSG_MAPI_MAIN_H_
+-#define NSG_MAPI_MAIN_H_
++#define MSG_MAPI_MAIN_H_
+ 
+ #define        MAX_NAME_LEN    256
+ #define        MAX_PW_LEN      256
+ #define        MAX_SESSIONS    50
+ #define        MAPI_SENDCOMPLETE_EVENT   "SendCompletionEvent"
+ 
+ #define MAPI_PROPERTIES_CHROME "chrome://messenger-mapi/locale/mapi.properties"
+ #define PREF_MAPI_WARN_PRIOR_TO_BLIND_SEND "mapi.blind-send.warn"
+diff --git a/mailnews/mapi/mapihook/src/msgMapiSupport.h b/mailnews/mapi/mapihook/src/msgMapiSupport.h
+--- a/mailnews/mapi/mapihook/src/msgMapiSupport.h
++++ b/mailnews/mapi/mapihook/src/msgMapiSupport.h
+@@ -20,15 +20,15 @@ class nsMapiSupport : public nsIMapiSupp
+         nsMapiSupport();
+ 
+         // Declare all interface methods we must implement.
+         NS_DECL_THREADSAFE_ISUPPORTS
+         NS_DECL_NSIOBSERVER
+         NS_DECL_NSIMAPISUPPORT
+ 
+     private :
+-        ~nsMapiSupport();
++        virtual ~nsMapiSupport();
+ 
+         DWORD   m_dwRegister;
+         CMapiFactory *m_nsMapiFactory;
+ };
+ 
+ #endif  // MSG_MAPI_SUPPORT_H_

+ 113 - 0
rel-257/comm-esr60/patches/1512557-65a1.patch

@@ -0,0 +1,113 @@
+# HG changeset patch
+# User Geoff Lankow <geoff@darktrojan.net>
+# Date 1544147900 -46800
+# Node ID 21219ad63ec84a637511fb8b76ddf34a874d51ca
+# Parent  c6dd8c291d4f3aee4ed4df9b77adb7bef9e34733
+Bug 1512557 - Convert nsIStringBundle pointers to nsCOMPtrs and release them when shutting down. r=jorgk DONTBUILD
+
+diff --git a/mailnews/intl/nsCharsetConverterManager.cpp b/mailnews/intl/nsCharsetConverterManager.cpp
+--- a/mailnews/intl/nsCharsetConverterManager.cpp
++++ b/mailnews/intl/nsCharsetConverterManager.cpp
+@@ -15,36 +15,31 @@
+ 
+ #include "nsComponentManagerUtils.h"
+ #include "nsServiceManagerUtils.h"
+ #include "../base/util/nsMsgI18N.h"
+ 
+ // just for CONTRACTIDs
+ #include "nsCharsetConverterManager.h"
+ 
+-static nsIStringBundle * sDataBundle;
+-static nsIStringBundle * sTitleBundle;
++static nsCOMPtr<nsIStringBundle> sDataBundle;
++static nsCOMPtr<nsIStringBundle> sTitleBundle;
+ 
+ // Class nsCharsetConverterManager [implementation]
+ 
+ NS_IMPL_ISUPPORTS(nsCharsetConverterManager, nsICharsetConverterManager)
+ 
+ nsCharsetConverterManager::nsCharsetConverterManager()
+ {
+ }
+ 
+ nsCharsetConverterManager::~nsCharsetConverterManager()
+ {
+-}
+-
+-//static
+-void nsCharsetConverterManager::Shutdown()
+-{
+-  NS_IF_RELEASE(sDataBundle);
+-  NS_IF_RELEASE(sTitleBundle);
++  sDataBundle = nullptr;
++  sTitleBundle = nullptr;
+ }
+ 
+ static
+ nsresult LoadBundle(const char* aBundleURLSpec, nsIStringBundle ** aResult)
+ {
+   nsCOMPtr<nsIStringBundleService> sbServ =
+     mozilla::services::GetStringBundleService();
+   if (!sbServ)
+@@ -89,17 +84,18 @@ nsresult GetBundleValue(nsIStringBundle 
+ static
+ nsresult GetCharsetDataImpl(const char * aCharset, const char16_t * aProp,
+                             nsAString& aResult)
+ {
+   NS_ENSURE_ARG_POINTER(aCharset);
+   // aProp can be nullptr
+ 
+   if (!sDataBundle) {
+-    nsresult rv = LoadBundle("resource://gre-resources/charsetData.properties", &sDataBundle);
++    nsresult rv = LoadBundle("resource://gre-resources/charsetData.properties",
++                             getter_AddRefs(sDataBundle));
+     if (NS_FAILED(rv))
+       return rv;
+   }
+ 
+   return GetBundleValue(sDataBundle, aCharset, nsDependentString(aProp), aResult);
+ }
+ 
+ //static
+@@ -141,17 +137,18 @@ nsCharsetConverterManager::GetCharsetAli
+ 
+ NS_IMETHODIMP
+ nsCharsetConverterManager::GetCharsetTitle(const char * aCharset,
+                                            nsAString& aResult)
+ {
+   NS_ENSURE_ARG_POINTER(aCharset);
+ 
+   if (!sTitleBundle) {
+-    nsresult rv = LoadBundle("chrome://messenger/locale/charsetTitles.properties", &sTitleBundle);
++    nsresult rv = LoadBundle("chrome://messenger/locale/charsetTitles.properties",
++                             getter_AddRefs(sTitleBundle));
+     NS_ENSURE_SUCCESS(rv, rv);
+   }
+ 
+   return GetBundleValue(sTitleBundle, aCharset, NS_LITERAL_STRING(".title"), aResult);
+ }
+ 
+ NS_IMETHODIMP
+ nsCharsetConverterManager::GetCharsetData(const char * aCharset,
+diff --git a/mailnews/intl/nsCharsetConverterManager.h b/mailnews/intl/nsCharsetConverterManager.h
+--- a/mailnews/intl/nsCharsetConverterManager.h
++++ b/mailnews/intl/nsCharsetConverterManager.h
+@@ -14,18 +14,16 @@ class nsCharsetConverterManager : public
+   friend class nsCharsetAlias;
+ 
+   NS_DECL_THREADSAFE_ISUPPORTS
+   NS_DECL_NSICHARSETCONVERTERMANAGER
+ 
+ public:
+   nsCharsetConverterManager();
+ 
+-  static void Shutdown();
+-
+ private:
+   virtual ~nsCharsetConverterManager();
+ 
+   static bool IsInternal(const nsACString& aCharset);
+ };
+ 
+ #endif // nsCharsetConverterManager_h__
+ 

+ 52 - 0
rel-257/comm-esr60/patches/1535846-sse2-mail-68a1.patch

@@ -0,0 +1,52 @@
+# HG changeset patch
+# User Frank-Rainer Grahl <frgrahl@gmx.net>
+# Parent  9f91a5874f80ac44e92432399baf4fcfe5f09d91
+Bug 1535845 - Move Thunderbird sse check to moz.build.
+
+Port Bug 1403346 part 14 [Move remaining compile flags from config.mk to moz.build computed flags].
+
+diff --git a/mail/app/Makefile.in b/mail/app/Makefile.in
+--- a/mail/app/Makefile.in
++++ b/mail/app/Makefile.in
+@@ -21,19 +21,17 @@ MOZ_WINCONSOLE = 0
+ endif
+ endif
+ 
+ include $(moztopsrcdir)/config/config.mk
+ 
+ # If we are trying to show an error dialog about the lack of SSE2 support,
+ # make sure that code itself doesn't use SSE2.
+ ifdef MOZ_LINUX_32_SSE2_STARTUP_ERROR
+-CXXFLAGS := $(filter-out -march=% -msse -msse2 -mfpmath=sse,$(CXXFLAGS))
+ CXX := $(filter-out -march=% -msse -msse2 -mfpmath=sse,$(CXX))
+-CXXFLAGS += -mno-sse -mno-sse2 -mfpmath=387
+ CXX += -march=pentiumpro
+ endif
+ 
+ ifeq ($(OS_ARCH),WINNT)
+ # Extract the icons we care about embedding into the EXE
+ mailtoolbar = $(commtopsrcdir)/mail/themes/windows/mail/icons/jumplist.png
+ 
+ # png to ico converter. The function takes 5 arguments, in order: source png
+diff --git a/mail/app/moz.build b/mail/app/moz.build
+--- a/mail/app/moz.build
++++ b/mail/app/moz.build
+@@ -71,12 +71,18 @@ DEFINES['APP_VERSION'] = CONFIG['MOZ_APP
+ if CONFIG['MOZILLA_OFFICIAL']:
+     DEFINES['MOZILLA_OFFICIAL'] = True
+ 
+ if CONFIG['MOZ_GPSD']:
+     DEFINES['MOZ_GPSD'] = True
+ 
+ if CONFIG['MOZ_LINUX_32_SSE2_STARTUP_ERROR']:
+     DEFINES['MOZ_LINUX_32_SSE2_STARTUP_ERROR'] = True
++    COMPILE_FLAGS['OS_CXXFLAGS'] = [
++        f for f in COMPILE_FLAGS.get('OS_CXXFLAGS', [])
++        if not f.startswith('-march=') and f not in ('-msse', '-msse2', '-mfpmath=sse')
++    ] + [
++        '-mno-sse', '-mno-sse2', '-mfpmath=387',
++    ]
+ 
+ JS_PREFERENCE_PP_FILES += [
+     'profile/all-thunderbird.js',
+ ]

+ 29 - 0
rel-257/comm-esr60/patches/594239-1fix-66a1.patch

@@ -0,0 +1,29 @@
+# HG changeset patch
+# User Hiroyuki Ikezoe <hikezoe@mozilla.com>
+# Date 1547876580 -3600
+# Node ID ba263124fbff63f1e7808c6780658d8bc2b195b8
+# Parent  c6e3896ddd4ebd3ca78e342d05550be51d0b2330
+Bug 594239 - Fix arguments of Simple MAPI functions that should be LPSTR. r=jorgk
+
+diff --git a/mailnews/mapi/mapiDll/MapiDll.cpp b/mailnews/mapi/mapiDll/MapiDll.cpp
+--- a/mailnews/mapi/mapiDll/MapiDll.cpp
++++ b/mailnews/mapi/mapiDll/MapiDll.cpp
+@@ -214,17 +214,17 @@ ULONG FAR PASCAL MAPISendMailW(LHANDLE l
+     if (!lhSession || pNsMapi->IsValidSession(lhSession) != S_OK)
+     {
+       FLAGS LoginFlag = 0;
+       if ((flFlags & MAPI_LOGON_UI) && (flFlags & MAPI_NEW_SESSION))
+         LoginFlag = MAPI_LOGON_UI | MAPI_NEW_SESSION;
+       else if (flFlags & MAPI_LOGON_UI)
+         LoginFlag = MAPI_LOGON_UI;
+ 
+-      hr = MAPILogon(ulUIParam, (LPTSTR)NULL, (LPTSTR)NULL, LoginFlag, 0, &lhSession);
++      hr = MAPILogon(ulUIParam, nullptr, nullptr, LoginFlag, 0, &lhSession);
+       if (hr != SUCCESS_SUCCESS)
+         return MAPI_E_LOGIN_FAILURE;
+       bTempSession = TRUE;
+     }
+ 
+     hr = pNsMapi->SendMailW(lhSession, lpMessage, flFlags, ulReserved);
+ 
+     // we are seeing a problem when using Word, although we return success from the MAPI support

+ 9 - 1
rel-257/comm-esr60/patches/series

@@ -5,4 +5,12 @@
 1399756-30-61a1.patch
 1399756-31-61a1.patch
 1399756-33-61a1.patch
-1470716-cc-63a1.patch
+1470716-63a1.patch
+1512557-65a1.patch
+1048658-66a1.patch
+1481326-1-63a1.patch
+1481326-2-63a1.patch
+1481417-5-63a1.patch
+594239-1fix-66a1.patch
+1447907-1-61a1.patch
+1535846-sse2-mail-68a1.patch