From 8b71672e8069a0af6c1df8bfcdc41b2fbfdfc33a Mon Sep 17 00:00:00 2001 From: Philipp von Weitershausen Date: Wed, 7 Dec 2011 07:52:26 +0800 Subject: [PATCH] Bug 699876 - Import the initial b2g/ directory. r=cjones --HG-- rename : mobile/xul/LICENSE => b2g/LICENSE rename : mobile/xul/Makefile.in => b2g/Makefile.in rename : mobile/xul/app/Makefile.in => b2g/app/Makefile.in rename : mobile/xul/app/macbuild/Contents/Info.plist.in => b2g/app/macbuild/Contents/Info.plist.in rename : mobile/xul/app/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in => b2g/app/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in rename : mobile/xul/app/nsBrowserApp.cpp => b2g/app/nsBrowserApp.cpp rename : mobile/xul/branding/official/Makefile.in => b2g/branding/official/Makefile.in rename : mobile/xul/branding/official/android-resources.mn => b2g/branding/official/android-resources.mn rename : mobile/xul/branding/official/configure.sh => b2g/branding/official/configure.sh rename : mobile/xul/branding/official/content/Makefile.in => b2g/branding/official/content/Makefile.in rename : mobile/xul/branding/official/content/about.png => b2g/branding/official/content/about.png rename : mobile/xul/branding/official/content/favicon32.png => b2g/branding/official/content/favicon32.png rename : mobile/xul/branding/official/content/jar.mn => b2g/branding/official/content/jar.mn rename : mobile/xul/branding/official/content/logo.png => b2g/branding/official/content/logo.png rename : mobile/xul/branding/official/content/logoWordmark.png => b2g/branding/official/content/logoWordmark.png rename : mobile/xul/branding/official/content/splash.png => b2g/branding/official/content/splash.png rename : mobile/xul/branding/official/locales/Makefile.in => b2g/branding/official/locales/Makefile.in rename : mobile/xul/branding/official/locales/en-US/brand.dtd => b2g/branding/official/locales/en-US/brand.dtd rename : mobile/xul/branding/official/locales/en-US/brand.properties => b2g/branding/official/locales/en-US/brand.properties rename : mobile/xul/branding/official/locales/jar.mn => b2g/branding/official/locales/jar.mn rename : mobile/xul/branding/unofficial/Makefile.in => b2g/branding/unofficial/Makefile.in rename : mobile/xul/branding/unofficial/android-resources.mn => b2g/branding/unofficial/android-resources.mn rename : mobile/xul/branding/unofficial/configure.sh => b2g/branding/unofficial/configure.sh rename : mobile/xul/branding/unofficial/content/Makefile.in => b2g/branding/unofficial/content/Makefile.in rename : mobile/xul/branding/unofficial/content/about.png => b2g/branding/unofficial/content/about.png rename : mobile/xul/branding/unofficial/content/favicon32.png => b2g/branding/unofficial/content/favicon32.png rename : mobile/xul/branding/unofficial/content/jar.mn => b2g/branding/unofficial/content/jar.mn rename : mobile/xul/branding/unofficial/content/logo.png => b2g/branding/unofficial/content/logo.png rename : mobile/xul/branding/unofficial/content/logoWordmark.png => b2g/branding/unofficial/content/logoWordmark.png rename : mobile/xul/branding/unofficial/content/splash.png => b2g/branding/unofficial/content/splash.png rename : mobile/xul/branding/unofficial/locales/Makefile.in => b2g/branding/unofficial/locales/Makefile.in rename : mobile/xul/branding/unofficial/locales/en-US/brand.dtd => b2g/branding/unofficial/locales/en-US/brand.dtd rename : mobile/xul/branding/unofficial/locales/en-US/brand.properties => b2g/branding/unofficial/locales/en-US/brand.properties rename : mobile/xul/branding/unofficial/locales/jar.mn => b2g/branding/unofficial/locales/jar.mn rename : mobile/xul/build.mk => b2g/build.mk rename : mobile/xul/chrome/Makefile.in => b2g/chrome/Makefile.in rename : mobile/xul/chrome/content/commandUtil.js => b2g/chrome/content/commandUtil.js rename : mobile/xul/chrome/content/netError.xhtml => b2g/chrome/content/netError.xhtml rename : mobile/xul/chrome/jar.mn => b2g/chrome/jar.mn rename : mobile/xul/confvars.sh => b2g/confvars.sh rename : mobile/xul/installer/Makefile.in => b2g/installer/Makefile.in rename : mobile/xul/installer/package-manifest.in => b2g/installer/package-manifest.in rename : mobile/xul/installer/removed-files.in => b2g/installer/removed-files.in rename : mobile/xul/locales/Makefile.in => b2g/locales/Makefile.in rename : mobile/xul/locales/all-locales => b2g/locales/all-locales rename : mobile/xul/locales/en-US/chrome/about.dtd => b2g/locales/en-US/chrome/about.dtd rename : mobile/xul/locales/en-US/chrome/aboutCertError.dtd => b2g/locales/en-US/chrome/aboutCertError.dtd rename : mobile/xul/locales/en-US/chrome/notification.dtd => b2g/locales/en-US/chrome/notification.dtd rename : mobile/xul/locales/en-US/chrome/overrides/appstrings.properties => b2g/locales/en-US/chrome/overrides/appstrings.properties rename : mobile/xul/locales/en-US/chrome/overrides/netError.dtd => b2g/locales/en-US/chrome/overrides/netError.dtd rename : mobile/xul/locales/en-US/chrome/overrides/passwordmgr.properties => b2g/locales/en-US/chrome/overrides/passwordmgr.properties rename : mobile/xul/locales/en-US/chrome/phishing.dtd => b2g/locales/en-US/chrome/phishing.dtd rename : mobile/xul/locales/en-US/chrome/webapps.dtd => b2g/locales/en-US/chrome/webapps.dtd rename : mobile/xul/locales/en-US/crashreporter/crashreporter-override.ini => b2g/locales/en-US/crashreporter/crashreporter-override.ini rename : mobile/xul/locales/en-US/defines.inc => b2g/locales/en-US/defines.inc rename : mobile/xul/locales/en-US/installer/setup.ini => b2g/locales/en-US/installer/setup.ini rename : mobile/xul/locales/en-US/updater/updater.ini => b2g/locales/en-US/updater/updater.ini rename : mobile/xul/locales/filter.py => b2g/locales/filter.py rename : mobile/xul/locales/generic/install.rdf => b2g/locales/generic/install.rdf rename : mobile/xul/locales/jar.mn => b2g/locales/jar.mn rename : mobile/xul/locales/l10n.ini => b2g/locales/l10n.ini rename : mobile/xul/makefiles.sh => b2g/makefiles.sh --- b2g/LICENSE | 1333 +++++++++++++++++ b2g/Makefile.in | 48 + b2g/app/Makefile.in | 168 +++ b2g/app/b2g.ico | Bin 0 -> 4286 bytes b2g/app/b2g.js | 395 +++++ b2g/app/macbuild/Contents/Info.plist.in | 138 ++ .../English.lproj/InfoPlist.strings.in | 1 + b2g/app/nsBrowserApp.cpp | 292 ++++ b2g/branding/official/Makefile.in | 49 + b2g/branding/official/android-resources.mn | 1 + b2g/branding/official/configure.sh | 3 + b2g/branding/official/content/Makefile.in | 12 + b2g/branding/official/content/about.png | Bin 0 -> 25842 bytes b2g/branding/official/content/favicon32.png | Bin 0 -> 2670 bytes b2g/branding/official/content/icon48.png | Bin 0 -> 5302 bytes b2g/branding/official/content/icon64.png | Bin 0 -> 8267 bytes b2g/branding/official/content/jar.mn | 6 + b2g/branding/official/content/logo.png | Bin 0 -> 19488 bytes .../official/content/logoWordmark.png | Bin 0 -> 14021 bytes b2g/branding/official/content/splash.png | Bin 0 -> 19610 bytes b2g/branding/official/locales/Makefile.in | 47 + b2g/branding/official/locales/en-US/brand.dtd | 4 + .../official/locales/en-US/brand.properties | 2 + b2g/branding/official/locales/jar.mn | 7 + b2g/branding/unofficial/Makefile.in | 49 + b2g/branding/unofficial/android-resources.mn | 1 + b2g/branding/unofficial/configure.sh | 3 + b2g/branding/unofficial/content/Makefile.in | 11 + b2g/branding/unofficial/content/about.png | Bin 0 -> 16858 bytes b2g/branding/unofficial/content/favicon32.png | Bin 0 -> 1761 bytes b2g/branding/unofficial/content/icon48.png | Bin 0 -> 4053 bytes b2g/branding/unofficial/content/icon64.png | Bin 0 -> 5897 bytes b2g/branding/unofficial/content/jar.mn | 6 + b2g/branding/unofficial/content/logo.png | Bin 0 -> 19844 bytes .../unofficial/content/logoWordmark.png | Bin 0 -> 15088 bytes b2g/branding/unofficial/content/splash.png | Bin 0 -> 19766 bytes b2g/branding/unofficial/locales/Makefile.in | 48 + .../unofficial/locales/en-US/brand.dtd | 4 + .../unofficial/locales/en-US/brand.properties | 2 + b2g/branding/unofficial/locales/jar.mn | 7 + b2g/build.mk | 88 ++ b2g/chrome/Makefile.in | 50 + b2g/chrome/content/commandUtil.js | 197 +++ b2g/chrome/content/netError.xhtml | 400 +++++ b2g/chrome/content/shell.js | 220 +++ b2g/chrome/content/shell.xul | 60 + b2g/chrome/content/touch.js | 240 +++ b2g/chrome/jar.mn | 13 + b2g/confvars.sh | 69 + b2g/installer/Makefile.in | 126 ++ b2g/installer/package-manifest.in | 588 ++++++++ b2g/installer/removed-files.in | 1 + b2g/locales/Makefile.in | 227 +++ b2g/locales/all-locales | 45 + b2g/locales/en-US/b2g-l10n.js | 39 + b2g/locales/en-US/chrome/about.dtd | 18 + b2g/locales/en-US/chrome/aboutCertError.dtd | 34 + b2g/locales/en-US/chrome/notification.dtd | 8 + .../chrome/overrides/appstrings.properties | 68 + .../en-US/chrome/overrides/netError.dtd | 172 +++ .../chrome/overrides/passwordmgr.properties | 72 + b2g/locales/en-US/chrome/phishing.dtd | 25 + b2g/locales/en-US/chrome/webapps.dtd | 7 + .../crashreporter/crashreporter-override.ini | 10 + b2g/locales/en-US/defines.inc | 9 + b2g/locales/en-US/installer/setup.ini | 17 + b2g/locales/en-US/updater/updater.ini | 4 + b2g/locales/filter.py | 68 + b2g/locales/generic/install.rdf | 62 + b2g/locales/jar.mn | 12 + b2g/locales/l10n.ini | 10 + b2g/makefiles.sh | 53 + 72 files changed, 5649 insertions(+) create mode 100644 b2g/LICENSE create mode 100644 b2g/Makefile.in create mode 100644 b2g/app/Makefile.in create mode 100644 b2g/app/b2g.ico create mode 100644 b2g/app/b2g.js create mode 100644 b2g/app/macbuild/Contents/Info.plist.in create mode 100644 b2g/app/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in create mode 100644 b2g/app/nsBrowserApp.cpp create mode 100644 b2g/branding/official/Makefile.in create mode 100644 b2g/branding/official/android-resources.mn create mode 100644 b2g/branding/official/configure.sh create mode 100644 b2g/branding/official/content/Makefile.in create mode 100644 b2g/branding/official/content/about.png create mode 100644 b2g/branding/official/content/favicon32.png create mode 100644 b2g/branding/official/content/icon48.png create mode 100644 b2g/branding/official/content/icon64.png create mode 100644 b2g/branding/official/content/jar.mn create mode 100644 b2g/branding/official/content/logo.png create mode 100644 b2g/branding/official/content/logoWordmark.png create mode 100644 b2g/branding/official/content/splash.png create mode 100644 b2g/branding/official/locales/Makefile.in create mode 100644 b2g/branding/official/locales/en-US/brand.dtd create mode 100644 b2g/branding/official/locales/en-US/brand.properties create mode 100644 b2g/branding/official/locales/jar.mn create mode 100644 b2g/branding/unofficial/Makefile.in create mode 100644 b2g/branding/unofficial/android-resources.mn create mode 100644 b2g/branding/unofficial/configure.sh create mode 100644 b2g/branding/unofficial/content/Makefile.in create mode 100644 b2g/branding/unofficial/content/about.png create mode 100644 b2g/branding/unofficial/content/favicon32.png create mode 100644 b2g/branding/unofficial/content/icon48.png create mode 100644 b2g/branding/unofficial/content/icon64.png create mode 100644 b2g/branding/unofficial/content/jar.mn create mode 100644 b2g/branding/unofficial/content/logo.png create mode 100644 b2g/branding/unofficial/content/logoWordmark.png create mode 100644 b2g/branding/unofficial/content/splash.png create mode 100644 b2g/branding/unofficial/locales/Makefile.in create mode 100644 b2g/branding/unofficial/locales/en-US/brand.dtd create mode 100644 b2g/branding/unofficial/locales/en-US/brand.properties create mode 100644 b2g/branding/unofficial/locales/jar.mn create mode 100644 b2g/build.mk create mode 100644 b2g/chrome/Makefile.in create mode 100644 b2g/chrome/content/commandUtil.js create mode 100644 b2g/chrome/content/netError.xhtml create mode 100644 b2g/chrome/content/shell.js create mode 100644 b2g/chrome/content/shell.xul create mode 100644 b2g/chrome/content/touch.js create mode 100644 b2g/chrome/jar.mn create mode 100644 b2g/confvars.sh create mode 100644 b2g/installer/Makefile.in create mode 100644 b2g/installer/package-manifest.in create mode 100644 b2g/installer/removed-files.in create mode 100644 b2g/locales/Makefile.in create mode 100644 b2g/locales/all-locales create mode 100644 b2g/locales/en-US/b2g-l10n.js create mode 100644 b2g/locales/en-US/chrome/about.dtd create mode 100644 b2g/locales/en-US/chrome/aboutCertError.dtd create mode 100644 b2g/locales/en-US/chrome/notification.dtd create mode 100644 b2g/locales/en-US/chrome/overrides/appstrings.properties create mode 100644 b2g/locales/en-US/chrome/overrides/netError.dtd create mode 100644 b2g/locales/en-US/chrome/overrides/passwordmgr.properties create mode 100644 b2g/locales/en-US/chrome/phishing.dtd create mode 100644 b2g/locales/en-US/chrome/webapps.dtd create mode 100644 b2g/locales/en-US/crashreporter/crashreporter-override.ini create mode 100644 b2g/locales/en-US/defines.inc create mode 100644 b2g/locales/en-US/installer/setup.ini create mode 100644 b2g/locales/en-US/updater/updater.ini create mode 100644 b2g/locales/filter.py create mode 100644 b2g/locales/generic/install.rdf create mode 100644 b2g/locales/jar.mn create mode 100644 b2g/locales/l10n.ini create mode 100644 b2g/makefiles.sh diff --git a/b2g/LICENSE b/b2g/LICENSE new file mode 100644 index 000000000000..875cfbeb9a72 --- /dev/null +++ b/b2g/LICENSE @@ -0,0 +1,1333 @@ +This code may be used and redistributed under your choice of: + + * Mozilla Public License, version 1.1 or later + * GNU General Public License, version 2.0 or later + * GNU Lesser General Public License, version 2.1 or later + +The terms of these licenses are included here for reference: + + MOZILLA PUBLIC LICENSE + Version 1.1 + + --------------- + +1. Definitions. + + 1.0.1. "Commercial Use" means distribution or otherwise making the + Covered Code available to a third party. + + 1.1. "Contributor" means each entity that creates or contributes to + the creation of Modifications. + + 1.2. "Contributor Version" means the combination of the Original + Code, prior Modifications used by a Contributor, and the Modifications + made by that particular Contributor. + + 1.3. "Covered Code" means the Original Code or Modifications or the + combination of the Original Code and Modifications, in each case + including portions thereof. + + 1.4. "Electronic Distribution Mechanism" means a mechanism generally + accepted in the software development community for the electronic + transfer of data. + + 1.5. "Executable" means Covered Code in any form other than Source + Code. + + 1.6. "Initial Developer" means the individual or entity identified + as the Initial Developer in the Source Code notice required by Exhibit + A. + + 1.7. "Larger Work" means a work which combines Covered Code or + portions thereof with code not governed by the terms of this License. + + 1.8. "License" means this document. + + 1.8.1. "Licensable" means having the right to grant, to the maximum + extent possible, whether at the time of the initial grant or + subsequently acquired, any and all of the rights conveyed herein. + + 1.9. "Modifications" means any addition to or deletion from the + substance or structure of either the Original Code or any previous + Modifications. When Covered Code is released as a series of files, a + Modification is: + A. Any addition to or deletion from the contents of a file + containing Original Code or previous Modifications. + + B. Any new file that contains any part of the Original Code or + previous Modifications. + + 1.10. "Original Code" means Source Code of computer software code + which is described in the Source Code notice required by Exhibit A as + Original Code, and which, at the time of its release under this + License is not already Covered Code governed by this License. + + 1.10.1. "Patent Claims" means any patent claim(s), now owned or + hereafter acquired, including without limitation, method, process, + and apparatus claims, in any patent Licensable by grantor. + + 1.11. "Source Code" means the preferred form of the Covered Code for + making modifications to it, including all modules it contains, plus + any associated interface definition files, scripts used to control + compilation and installation of an Executable, or source code + differential comparisons against either the Original Code or another + well known, available Covered Code of the Contributor's choice. The + Source Code can be in a compressed or archival form, provided the + appropriate decompression or de-archiving software is widely available + for no charge. + + 1.12. "You" (or "Your") means an individual or a legal entity + exercising rights under, and complying with all of the terms of, this + License or a future version of this License issued under Section 6.1. + For legal entities, "You" includes any entity which controls, is + controlled by, or is under common control with You. For purposes of + this definition, "control" means (a) the power, direct or indirect, + to cause the direction or management of such entity, whether by + contract or otherwise, or (b) ownership of more than fifty percent + (50%) of the outstanding shares or beneficial ownership of such + entity. + +2. Source Code License. + + 2.1. The Initial Developer Grant. + The Initial Developer hereby grants You a world-wide, royalty-free, + non-exclusive license, subject to third party intellectual property + claims: + (a) under intellectual property rights (other than patent or + trademark) Licensable by Initial Developer to use, reproduce, + modify, display, perform, sublicense and distribute the Original + Code (or portions thereof) with or without Modifications, and/or + as part of a Larger Work; and + + (b) under Patents Claims infringed by the making, using or + selling of Original Code, to make, have made, use, practice, + sell, and offer for sale, and/or otherwise dispose of the + Original Code (or portions thereof). + + (c) the licenses granted in this Section 2.1(a) and (b) are + effective on the date Initial Developer first distributes + Original Code under the terms of this License. + + (d) Notwithstanding Section 2.1(b) above, no patent license is + granted: 1) for code that You delete from the Original Code; 2) + separate from the Original Code; or 3) for infringements caused + by: i) the modification of the Original Code or ii) the + combination of the Original Code with other software or devices. + + 2.2. Contributor Grant. + Subject to third party intellectual property claims, each Contributor + hereby grants You a world-wide, royalty-free, non-exclusive license + + (a) under intellectual property rights (other than patent or + trademark) Licensable by Contributor, to use, reproduce, modify, + display, perform, sublicense and distribute the Modifications + created by such Contributor (or portions thereof) either on an + unmodified basis, with other Modifications, as Covered Code + and/or as part of a Larger Work; and + + (b) under Patent Claims infringed by the making, using, or + selling of Modifications made by that Contributor either alone + and/or in combination with its Contributor Version (or portions + of such combination), to make, use, sell, offer for sale, have + made, and/or otherwise dispose of: 1) Modifications made by that + Contributor (or portions thereof); and 2) the combination of + Modifications made by that Contributor with its Contributor + Version (or portions of such combination). + + (c) the licenses granted in Sections 2.2(a) and 2.2(b) are + effective on the date Contributor first makes Commercial Use of + the Covered Code. + + (d) Notwithstanding Section 2.2(b) above, no patent license is + granted: 1) for any code that Contributor has deleted from the + Contributor Version; 2) separate from the Contributor Version; + 3) for infringements caused by: i) third party modifications of + Contributor Version or ii) the combination of Modifications made + by that Contributor with other software (except as part of the + Contributor Version) or other devices; or 4) under Patent Claims + infringed by Covered Code in the absence of Modifications made by + that Contributor. + +3. Distribution Obligations. + + 3.1. Application of License. + The Modifications which You create or to which You contribute are + governed by the terms of this License, including without limitation + Section 2.2. The Source Code version of Covered Code may be + distributed only under the terms of this License or a future version + of this License released under Section 6.1, and You must include a + copy of this License with every copy of the Source Code You + distribute. You may not offer or impose any terms on any Source Code + version that alters or restricts the applicable version of this + License or the recipients' rights hereunder. However, You may include + an additional document offering the additional rights described in + Section 3.5. + + 3.2. Availability of Source Code. + Any Modification which You create or to which You contribute must be + made available in Source Code form under the terms of this License + either on the same media as an Executable version or via an accepted + Electronic Distribution Mechanism to anyone to whom you made an + Executable version available; and if made available via Electronic + Distribution Mechanism, must remain available for at least twelve (12) + months after the date it initially became available, or at least six + (6) months after a subsequent version of that particular Modification + has been made available to such recipients. You are responsible for + ensuring that the Source Code version remains available even if the + Electronic Distribution Mechanism is maintained by a third party. + + 3.3. Description of Modifications. + You must cause all Covered Code to which You contribute to contain a + file documenting the changes You made to create that Covered Code and + the date of any change. You must include a prominent statement that + the Modification is derived, directly or indirectly, from Original + Code provided by the Initial Developer and including the name of the + Initial Developer in (a) the Source Code, and (b) in any notice in an + Executable version or related documentation in which You describe the + origin or ownership of the Covered Code. + + 3.4. Intellectual Property Matters + (a) Third Party Claims. + If Contributor has knowledge that a license under a third party's + intellectual property rights is required to exercise the rights + granted by such Contributor under Sections 2.1 or 2.2, + Contributor must include a text file with the Source Code + distribution titled "LEGAL" which describes the claim and the + party making the claim in sufficient detail that a recipient will + know whom to contact. If Contributor obtains such knowledge after + the Modification is made available as described in Section 3.2, + Contributor shall promptly modify the LEGAL file in all copies + Contributor makes available thereafter and shall take other steps + (such as notifying appropriate mailing lists or newsgroups) + reasonably calculated to inform those who received the Covered + Code that new knowledge has been obtained. + + (b) Contributor APIs. + If Contributor's Modifications include an application programming + interface and Contributor has knowledge of patent licenses which + are reasonably necessary to implement that API, Contributor must + also include this information in the LEGAL file. + + (c) Representations. + Contributor represents that, except as disclosed pursuant to + Section 3.4(a) above, Contributor believes that Contributor's + Modifications are Contributor's original creation(s) and/or + Contributor has sufficient rights to grant the rights conveyed by + this License. + + 3.5. Required Notices. + You must duplicate the notice in Exhibit A in each file of the Source + Code. If it is not possible to put such notice in a particular Source + Code file due to its structure, then You must include such notice in a + location (such as a relevant directory) where a user would be likely + to look for such a notice. If You created one or more Modification(s) + You may add your name as a Contributor to the notice described in + Exhibit A. You must also duplicate this License in any documentation + for the Source Code where You describe recipients' rights or ownership + rights relating to Covered Code. You may choose to offer, and to + charge a fee for, warranty, support, indemnity or liability + obligations to one or more recipients of Covered Code. However, You + may do so only on Your own behalf, and not on behalf of the Initial + Developer or any Contributor. You must make it absolutely clear than + any such warranty, support, indemnity or liability obligation is + offered by You alone, and You hereby agree to indemnify the Initial + Developer and every Contributor for any liability incurred by the + Initial Developer or such Contributor as a result of warranty, + support, indemnity or liability terms You offer. + + 3.6. Distribution of Executable Versions. + You may distribute Covered Code in Executable form only if the + requirements of Section 3.1-3.5 have been met for that Covered Code, + and if You include a notice stating that the Source Code version of + the Covered Code is available under the terms of this License, + including a description of how and where You have fulfilled the + obligations of Section 3.2. The notice must be conspicuously included + in any notice in an Executable version, related documentation or + collateral in which You describe recipients' rights relating to the + Covered Code. You may distribute the Executable version of Covered + Code or ownership rights under a license of Your choice, which may + contain terms different from this License, provided that You are in + compliance with the terms of this License and that the license for the + Executable version does not attempt to limit or alter the recipient's + rights in the Source Code version from the rights set forth in this + License. If You distribute the Executable version under a different + license You must make it absolutely clear that any terms which differ + from this License are offered by You alone, not by the Initial + Developer or any Contributor. You hereby agree to indemnify the + Initial Developer and every Contributor for any liability incurred by + the Initial Developer or such Contributor as a result of any such + terms You offer. + + 3.7. Larger Works. + You may create a Larger Work by combining Covered Code with other code + not governed by the terms of this License and distribute the Larger + Work as a single product. In such a case, You must make sure the + requirements of this License are fulfilled for the Covered Code. + +4. Inability to Comply Due to Statute or Regulation. + + If it is impossible for You to comply with any of the terms of this + License with respect to some or all of the Covered Code due to + statute, judicial order, or regulation then You must: (a) comply with + the terms of this License to the maximum extent possible; and (b) + describe the limitations and the code they affect. Such description + must be included in the LEGAL file described in Section 3.4 and must + be included with all distributions of the Source Code. Except to the + extent prohibited by statute or regulation, such description must be + sufficiently detailed for a recipient of ordinary skill to be able to + understand it. + +5. Application of this License. + + This License applies to code to which the Initial Developer has + attached the notice in Exhibit A and to related Covered Code. + +6. Versions of the License. + + 6.1. New Versions. + Netscape Communications Corporation ("Netscape") may publish revised + and/or new versions of the License from time to time. Each version + will be given a distinguishing version number. + + 6.2. Effect of New Versions. + Once Covered Code has been published under a particular version of the + License, You may always continue to use it under the terms of that + version. You may also choose to use such Covered Code under the terms + of any subsequent version of the License published by Netscape. No one + other than Netscape has the right to modify the terms applicable to + Covered Code created under this License. + + 6.3. Derivative Works. + If You create or use a modified version of this License (which you may + only do in order to apply it to code which is not already Covered Code + governed by this License), You must (a) rename Your license so that + the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", + "MPL", "NPL" or any confusingly similar phrase do not appear in your + license (except to note that your license differs from this License) + and (b) otherwise make it clear that Your version of the license + contains terms which differ from the Mozilla Public License and + Netscape Public License. (Filling in the name of the Initial + Developer, Original Code or Contributor in the notice described in + Exhibit A shall not of themselves be deemed to be modifications of + this License.) + +7. DISCLAIMER OF WARRANTY. + + COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF + DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. + THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE + IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, + YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE + COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER + OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF + ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + +8. TERMINATION. + + 8.1. This License and the rights granted hereunder will terminate + automatically if You fail to comply with terms herein and fail to cure + such breach within 30 days of becoming aware of the breach. All + sublicenses to the Covered Code which are properly granted shall + survive any termination of this License. Provisions which, by their + nature, must remain in effect beyond the termination of this License + shall survive. + + 8.2. If You initiate litigation by asserting a patent infringement + claim (excluding declatory judgment actions) against Initial Developer + or a Contributor (the Initial Developer or Contributor against whom + You file such action is referred to as "Participant") alleging that: + + (a) such Participant's Contributor Version directly or indirectly + infringes any patent, then any and all rights granted by such + Participant to You under Sections 2.1 and/or 2.2 of this License + shall, upon 60 days notice from Participant terminate prospectively, + unless if within 60 days after receipt of notice You either: (i) + agree in writing to pay Participant a mutually agreeable reasonable + royalty for Your past and future use of Modifications made by such + Participant, or (ii) withdraw Your litigation claim with respect to + the Contributor Version against such Participant. If within 60 days + of notice, a reasonable royalty and payment arrangement are not + mutually agreed upon in writing by the parties or the litigation claim + is not withdrawn, the rights granted by Participant to You under + Sections 2.1 and/or 2.2 automatically terminate at the expiration of + the 60 day notice period specified above. + + (b) any software, hardware, or device, other than such Participant's + Contributor Version, directly or indirectly infringes any patent, then + any rights granted to You by such Participant under Sections 2.1(b) + and 2.2(b) are revoked effective as of the date You first made, used, + sold, distributed, or had made, Modifications made by that + Participant. + + 8.3. If You assert a patent infringement claim against Participant + alleging that such Participant's Contributor Version directly or + indirectly infringes any patent where such claim is resolved (such as + by license or settlement) prior to the initiation of patent + infringement litigation, then the reasonable value of the licenses + granted by such Participant under Sections 2.1 or 2.2 shall be taken + into account in determining the amount or value of any payment or + license. + + 8.4. In the event of termination under Sections 8.1 or 8.2 above, + all end user license agreements (excluding distributors and resellers) + which have been validly granted by You or any distributor hereunder + prior to termination shall survive termination. + +9. LIMITATION OF LIABILITY. + + UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT + (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL + DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, + OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR + ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY + CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, + WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER + COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN + INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF + LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY + RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW + PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE + EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO + THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. + +10. U.S. GOVERNMENT END USERS. + + The Covered Code is a "commercial item," as that term is defined in + 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer + software" and "commercial computer software documentation," as such + terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 + C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), + all U.S. Government End Users acquire Covered Code with only those + rights set forth herein. + +11. MISCELLANEOUS. + + This License represents the complete agreement concerning subject + matter hereof. If any provision of this License is held to be + unenforceable, such provision shall be reformed only to the extent + necessary to make it enforceable. This License shall be governed by + California law provisions (except to the extent applicable law, if + any, provides otherwise), excluding its conflict-of-law provisions. + With respect to disputes in which at least one party is a citizen of, + or an entity chartered or registered to do business in the United + States of America, any litigation relating to this License shall be + subject to the jurisdiction of the Federal Courts of the Northern + District of California, with venue lying in Santa Clara County, + California, with the losing party responsible for costs, including + without limitation, court costs and reasonable attorneys' fees and + expenses. The application of the United Nations Convention on + Contracts for the International Sale of Goods is expressly excluded. + Any law or regulation which provides that the language of a contract + shall be construed against the drafter shall not apply to this + License. + +12. RESPONSIBILITY FOR CLAIMS. + + As between Initial Developer and the Contributors, each party is + responsible for claims and damages arising, directly or indirectly, + out of its utilization of rights under this License and You agree to + work with Initial Developer and Contributors to distribute such + responsibility on an equitable basis. Nothing herein is intended or + shall be deemed to constitute any admission of liability. + +13. MULTIPLE-LICENSED CODE. + + Initial Developer may designate portions of the Covered Code as + "Multiple-Licensed". "Multiple-Licensed" means that the Initial + Developer permits you to utilize portions of the Covered Code under + Your choice of the NPL or the alternative licenses, if any, specified + by the Initial Developer in the file described in Exhibit A. + +EXHIBIT A -Mozilla Public License. + + ``The contents of this file are subject to the Mozilla Public License + Version 1.1 (the "License"); you may not use this file except in + compliance with the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + License for the specific language governing rights and limitations + under the License. + + The Original Code is ______________________________________. + + The Initial Developer of the Original Code is ________________________. + Portions created by ______________________ are Copyright (C) ______ + _______________________. All Rights Reserved. + + Contributor(s): ______________________________________. + + Alternatively, the contents of this file may be used under the terms + of the _____ license (the "[___] License"), in which case the + provisions of [______] License are applicable instead of those + above. If you wish to allow use of your version of this file only + under the terms of the [____] License and not to allow others to use + your version of this file under the MPL, indicate your decision by + deleting the provisions above and replace them with the notice and + other provisions required by the [___] License. If you do not delete + the provisions above, a recipient may use your version of this file + under either the MPL or the [___] License." + + [NOTE: The text of this Exhibit A may differ slightly from the text of + the notices in the Source Code files of the Original Code. You should + use the text of this Exhibit A rather than the text found in the + Original Code Source Code for Your Modifications.] + + + + + + + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. + + + + + + + + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! diff --git a/b2g/Makefile.in b/b2g/Makefile.in new file mode 100644 index 000000000000..f28113192bba --- /dev/null +++ b/b2g/Makefile.in @@ -0,0 +1,48 @@ +# ***** BEGIN LICENSE BLOCK ***** +# Version: MPL 1.1/GPL 2.0/LGPL 2.1 +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# The Original Code is Mozilla. +# +# The Initial Developer of the Original Code is +# the Mozilla Foundation . +# Portions created by the Initial Developer are Copyright (C) 2011 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Chris Jones +# +# Alternatively, the contents of this file may be used under the terms of +# either the GNU General Public License Version 2 or later (the "GPL"), or +# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +# in which case the provisions of the GPL or the LGPL are applicable instead +# of those above. If you wish to allow use of your version of this file only +# under the terms of either the GPL or the LGPL, and not to allow others to +# use your version of this file under the terms of the MPL, indicate your +# decision by deleting the provisions above and replace them with the notice +# and other provisions required by the GPL or the LGPL. If you do not delete +# the provisions above, a recipient may use your version of this file under +# the terms of any one of the MPL, the GPL or the LGPL. +# +# ***** END LICENSE BLOCK ***** + +DEPTH = .. +topsrcdir = @top_srcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +include $(DEPTH)/config/autoconf.mk + +DIRS = chrome locales app + +include $(topsrcdir)/config/rules.mk +include $(topsrcdir)/testing/testsuite-targets.mk diff --git a/b2g/app/Makefile.in b/b2g/app/Makefile.in new file mode 100644 index 000000000000..85764cb0e7d6 --- /dev/null +++ b/b2g/app/Makefile.in @@ -0,0 +1,168 @@ +# ***** BEGIN LICENSE BLOCK ***** +# Version: MPL 1.1/GPL 2.0/LGPL 2.1 +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# The Original Code is Mozilla. +# +# The Initial Developer of the Original Code is +# the Mozilla Foundation . +# Portions created by the Initial Developer are Copyright (C) 2011 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Chris Jones +# +# Alternatively, the contents of this file may be used under the terms of +# either the GNU General Public License Version 2 or later (the "GPL"), or +# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +# in which case the provisions of the GPL or the LGPL are applicable instead +# of those above. If you wish to allow use of your version of this file only +# under the terms of either the GPL or the LGPL, and not to allow others to +# use your version of this file under the terms of the MPL, indicate your +# decision by deleting the provisions above and replace them with the notice +# and other provisions required by the GPL or the LGPL. If you do not delete +# the provisions above, a recipient may use your version of this file under +# the terms of any one of the MPL, the GPL or the LGPL. +# +# ***** END LICENSE BLOCK ***** + +DEPTH = ../.. +topsrcdir = @top_srcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +include $(DEPTH)/config/autoconf.mk + +PREF_JS_EXPORTS = $(srcdir)/b2g.js + +ifndef LIBXUL_SDK +PROGRAM=$(MOZ_APP_NAME)$(BIN_SUFFIX) + +CPPSRCS = nsBrowserApp.cpp + +LOCAL_INCLUDES += -I$(topsrcdir)/toolkit/xre +LOCAL_INCLUDES += -I$(topsrcdir)/xpcom/base +LOCAL_INCLUDES += -I$(topsrcdir)/xpcom/build +LOCAL_INCLUDES += -I$(DEPTH)/build + +DEFINES += -DXPCOM_GLUE +STL_FLAGS= + +LIBS += $(JEMALLOC_LIBS) + +LIBS += \ + $(EXTRA_DSO_LIBS) \ + $(XPCOM_STANDALONE_GLUE_LDOPTS) \ + $(NULL) + +ifeq ($(OS_ARCH),WINNT) +OS_LIBS += $(call EXPAND_LIBNAME,version) +endif + +ifdef _MSC_VER +# Always enter a Windows program through wmain, whether or not we're +# a console application. +WIN32_EXE_LDFLAGS += -ENTRY:wmainCRTStartup +endif +endif #LIBXUL_SDK + +# Make sure the standalone glue doesn't try to get libxpcom.so from b2g/app. +NSDISTMODE = copy + +include $(topsrcdir)/config/rules.mk + +APP_ICON = b2g + +DEFINES += \ + -DAPP_NAME=$(MOZ_APP_NAME) \ + -DAPP_VERSION=$(MOZ_APP_VERSION) \ + -DMOZ_UPDATER=$(MOZ_UPDATER) \ + $(NULL) + +# strip a trailing slash from the repo URL because it's not always present, +# and we want to construct a working URL in buildconfig.html +# make+shell+sed = awful +_dollar=$$ +SOURCE_REPO := $(shell cd $(srcdir)/.. && hg showconfig paths.default 2>/dev/null | head -n1 | sed -e "s/^ssh:/http:/" -e "s/\/$(_dollar)//" ) +# extra sanity check for old versions of hg +# that don't support showconfig +ifeq (http,$(patsubst http%,http,$(SOURCE_REPO))) +DEFINES += -DMOZ_SOURCE_REPO="$(SOURCE_REPO)" +endif + +ifeq ($(OS_ARCH),WINNT) +REDIT_PATH = $(LIBXUL_DIST)/bin +endif + +APP_BINARY = $(MOZ_APP_NAME)$(BIN_SUFFIX) + +ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT)) + +APP_NAME = $(MOZ_APP_DISPLAYNAME) +APP_VERSION = $(MOZ_APP_VERSION) + +ifdef MOZ_DEBUG +APP_NAME := $(APP_NAME)Debug +endif + +AB_CD = $(MOZ_UI_LOCALE) + +AB := $(firstword $(subst -, ,$(AB_CD))) + +clean clobber repackage:: + rm -rf $(DIST)/$(APP_NAME).app + +ifdef LIBXUL_SDK +APPFILES = Resources +else +APPFILES = MacOS +endif + +libs repackage:: + mkdir -p $(DIST)/$(APP_NAME).app/Contents/MacOS + rsync -a --exclude "*.in" $(srcdir)/macbuild/Contents $(DIST)/$(APP_NAME).app --exclude English.lproj + mkdir -p $(DIST)/$(APP_NAME).app/Contents/Resources/$(AB).lproj + rsync -a --exclude "*.in" $(srcdir)/macbuild/Contents/Resources/English.lproj/ $(DIST)/$(APP_NAME).app/Contents/Resources/$(AB).lproj + sed -e "s/%MOZ_APP_VERSION%/$(MOZ_APP_VERSION)/" -e "s/%MOZ_APP_NAME%/$(MOZ_APP_NAME)/" -e "s/%APP_VERSION%/$(APP_VERSION)/" -e "s/%APP_NAME%/$(APP_NAME)/" -e "s/%APP_BINARY%/$(APP_BINARY)/" $(srcdir)/macbuild/Contents/Info.plist.in > $(DIST)/$(APP_NAME).app/Contents/Info.plist + sed -e "s/%APP_VERSION%/$(APP_VERSION)/" -e "s/%APP_NAME%/$(APP_NAME)/" $(srcdir)/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in | iconv -f UTF-8 -t UTF-16 > $(DIST)/$(APP_NAME).app/Contents/Resources/$(AB).lproj/InfoPlist.strings + rsync -a $(DIST)/bin/ $(DIST)/$(APP_NAME).app/Contents/$(APPFILES) + $(RM) $(DIST)/$(APP_NAME).app/Contents/$(APPFILES)/mangle $(DIST)/$(APP_NAME).app/Contents/$(APPFILES)/shlibsign +ifdef LIBXUL_SDK + cp $(LIBXUL_DIST)/bin/xulrunner$(BIN_SUFFIX) $(DIST)/$(APP_NAME).app/Contents/MacOS/$(APP_BINARY) + rsync -a --exclude nsinstall --copy-unsafe-links $(LIBXUL_DIST)/XUL.framework $(DIST)/$(APP_NAME).app/Contents/Frameworks +else + rm -f $(DIST)/$(APP_NAME).app/Contents/MacOS/$(PROGRAM) + rsync -aL $(PROGRAM) $(DIST)/$(APP_NAME).app/Contents/MacOS +endif + printf "APPLMOZB" > $(DIST)/$(APP_NAME).app/Contents/PkgInfo + +else # MOZ_WIDGET_TOOLKIT != cocoa + +libs:: +ifdef LIBXUL_SDK + cp $(LIBXUL_DIST)/bin/xulrunner-stub$(BIN_SUFFIX) $(DIST)/bin/$(APP_BINARY) +endif +ifndef SKIP_COPY_XULRUNNER +ifdef LIBXUL_SDK + $(NSINSTALL) -D $(DIST)/bin/xulrunner + (cd $(LIBXUL_SDK)/bin && tar $(TAR_CREATE_FLAGS) - .) | (cd $(DIST)/bin/xulrunner && tar -xf -) +endif +endif # SKIP_COPY_XULRUNNER + + $(NSINSTALL) -D $(DIST)/bin/chrome/icons/default + +ifeq ($(OS_ARCH),WINNT) + cp $(srcdir)/$(APP_ICON).ico $(DIST)/bin/chrome/icons/default/$(APP_ICON).ico + $(REDIT_PATH)/redit$(HOST_BIN_SUFFIX) $(DIST)/bin/$(APP_BINARY) $(srcdir)/$(APP_ICON).ico +endif + +endif diff --git a/b2g/app/b2g.ico b/b2g/app/b2g.ico new file mode 100644 index 0000000000000000000000000000000000000000..38312abac42830818edef700470cf1c59b25bb81 GIT binary patch literal 4286 zcmeHLYiyHM82$`Vh(ww9$PcZE@$QB=<0X+{gop|PA`u-oFHtmuIZyZr#>(9o>c~Cd9{czA=JCjShbJgVQ|UIX&O^ zzR&Z%?>Xm7%P=>P4~N6hD91l$q;dq@i7^j(z@1|@aWH6N}82h21%un4x?&&C%44ZLU!M^ zZ$(;rf>3GEipZS|^aG zAy%D+FBn3Rq#RQ9DeNmyU|+rhO09{^m7%+L0Ef%8;PMOb$rkQ4sY%SVX>oT>pB_#A zCI{9QH$F}N0&|{@C%ke9BsDBP+m?ygr{b`C{~^e<^;oq&33uIcYjoy4Gp|a+EjQj2 z^T6}U=eaK3 zjrUO>ldZ$7d+wET`T5vQ>YP(h0a4{Ci1khsY3#^XHH_CKw@ZSwNO3B4NZ_3TX4eM zhLiOjsBP+kSgyva3l||~>NJoXaQ>@?S6+BYl$x<0<&|1^Jzekz0x+}(plI~4TBP-z zP!K&QEgdXm4V|d4yV2n8L1>^KUauD?6k6=a7=ov#AG&4_Ouk|0Jz=;)Bk+XB;2Io-H4uTW zYY;~75ITcljE#=68aiBV=uGtx5MR_M_5Dv8$T~~NI8*|$RL$BMPFc~^9fYNOkgc~h zbPh_J6S;+XP?_tXJw1+!nkuAz`z@**9XQoH0=qASP$YtZ{yzA7d*SNoBj-~$1jki$ zEhqeyhMYo0Otw%KJy2YYVx0r!mUdYBM&TGf4<*U3$v+Gmi8+1iDtx~B8KkU@$L4kM z*s?wzpS&H5=VsrD<%{N_dGrFDXMSUQ*YH_*`a*OeLwFE6LClH8Z$ z;0Y~`D9osJk@^PCz}P*+`V&j|*p>Ve_H0SO-mUYo?<WbXQg zeU|E=pfTvWLZoJcY+RJ%fVlck>+y$j9q0QJ4ftXe_{VG5*zJ*DVGI8PWwVdWA}WF=HZtDrre2;GU* z(3h=&zI+W7M^`}h<6B7oU@qjjD^Mv~3wyu|`_Qk*l^apv@StJfEE+;*$+(N;p%I75 zbeGO0VU;DCC$A%#^!UD113B5pmcB98-sbm0Rj?j9aUv{=4Y1XGhQ`_?G#NIc#YC|Q z&Bje=(r<)An}njwWhmag7*)b?4d$LRM1zUVE%i;$EApO3q1qay@e?ge3)MD|_bZBP z8&OBr*`?Zfd!xHQT!7T&v5@lL#<3l5pvABqowjti9U16yQtX7gF#~RU2F%hFWUgI; zl@D@|k@!4Rh3jGQ1bmLjdE{4H*!XCil#6l_zNJJ9kLH@L4_o*go9~PK+>alAJZ9(0 zxz6-uvrv+@5O&E1bgI8Vr)o3045#t!(T3hXxnRg z8YA(SOc14OX@Yw^53M3iM=)CH>_*K`z3kp4&xr^))Q&c);k)-{IW;>UgWr^e9t-~x zB7Ic|`%jYZ0(6@Na3~L=;3EI~u@CF1?YI|KLk#iDB{32me)b(wZt3vVx&~0+Kc*-5 zs7B7j^OyJ3PiYc|r_Xv8KGS{#Z9*22el5b@3U(Z55Ta7B0V(qz$Lfb>b1%2Qa!h!Z zlA7?yzGm}t<^8|=E?6;}Lv?7gUh&!T*PxB$y`}Vh7zJ;l;_JE2?6+pqnsNTl{`&m& z4E*0R!2Wo+{PKGmaA6)WG6Ue=Fb;;n?+lYhae-mxQJiO(`$rgNhM!@k8W?5@1(*EQ YFac(~ai=hhVFq`~dHAPZ&T?t|2VGXAwEzGB literal 0 HcmV?d00001 diff --git a/b2g/app/b2g.js b/b2g/app/b2g.js new file mode 100644 index 000000000000..230de4f418da --- /dev/null +++ b/b2g/app/b2g.js @@ -0,0 +1,395 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Mozilla Mobile Browser. + * + * The Initial Developer of the Original Code is + * Mozilla Corporation. + * Portions created by the Initial Developer are Copyright (C) 2008 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Matt Brubeck + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#filter substitution + +pref("toolkit.defaultChromeURI", "chrome://browser/content/shell.xul"); +pref("general.useragent.compatMode.firefox", true); +pref("browser.chromeURL", "chrome://browser/content/"); +#ifdef MOZ_OFFICIAL_BRANDING +pref("browser.homescreenURL", "file:///system/home/homescreen.html"); +#else +pref("browser.homescreenURL", "file:///data/local/homescreen.html,file:///system/home/homescreen.html"); +#endif + +// Device pixel to CSS px ratio, in percent. Set to -1 to calculate based on display density. +pref("browser.viewport.scaleRatio", -1); + +/* allow scrollbars to float above chrome ui */ +pref("ui.scrollbarsCanOverlapContent", 1); + +/* cache prefs */ +pref("browser.cache.disk.enable", false); +pref("browser.cache.disk.capacity", 0); // kilobytes +pref("browser.cache.disk.smart_size.enabled", false); +pref("browser.cache.disk.smart_size.first_run", false); + +pref("browser.cache.memory.enable", true); +pref("browser.cache.memory.capacity", 1024); // kilobytes + +/* image cache prefs */ +pref("image.cache.size", 1048576); // bytes + +/* offline cache prefs */ +pref("browser.offline-apps.notify", true); +pref("browser.cache.offline.enable", true); +pref("browser.cache.offline.capacity", 5120); // kilobytes +pref("offline-apps.quota.max", 2048); // kilobytes +pref("offline-apps.quota.warn", 1024); // kilobytes + +/* protocol warning prefs */ +pref("network.protocol-handler.warn-external.tel", false); +pref("network.protocol-handler.warn-external.mailto", false); +pref("network.protocol-handler.warn-external.vnd.youtube", false); + +/* http prefs */ +pref("network.http.pipelining", true); +pref("network.http.pipelining.ssl", true); +pref("network.http.proxy.pipelining", true); +pref("network.http.pipelining.maxrequests" , 6); +pref("network.http.keep-alive.timeout", 600); +pref("network.http.max-connections", 6); +pref("network.http.max-connections-per-server", 4); +pref("network.http.max-persistent-connections-per-server", 4); +pref("network.http.max-persistent-connections-per-proxy", 4); + +// See bug 545869 for details on why these are set the way they are +pref("network.buffer.cache.count", 24); +pref("network.buffer.cache.size", 16384); + +/* session history */ +pref("browser.sessionhistory.max_total_viewers", 1); +pref("browser.sessionhistory.max_entries", 50); + +/* session store */ +pref("browser.sessionstore.resume_session_once", false); +pref("browser.sessionstore.resume_from_crash", true); +pref("browser.sessionstore.resume_from_crash_timeout", 60); // minutes +pref("browser.sessionstore.interval", 10000); // milliseconds +pref("browser.sessionstore.max_tabs_undo", 1); + +/* these should help performance */ +pref("mozilla.widget.force-24bpp", true); +pref("mozilla.widget.use-buffer-pixmap", true); +pref("mozilla.widget.disable-native-theme", true); +pref("layout.reflow.synthMouseMove", false); + +/* download manager (don't show the window or alert) */ +pref("browser.download.useDownloadDir", true); +pref("browser.download.folderList", 1); // Default to ~/Downloads +pref("browser.download.manager.showAlertOnComplete", false); +pref("browser.download.manager.showAlertInterval", 2000); +pref("browser.download.manager.retention", 2); +pref("browser.download.manager.showWhenStarting", false); +pref("browser.download.manager.closeWhenDone", true); +pref("browser.download.manager.openDelay", 0); +pref("browser.download.manager.focusWhenStarting", false); +pref("browser.download.manager.flashCount", 2); +pref("browser.download.manager.displayedHistoryDays", 7); + +/* download alerts (disabled above) */ +pref("alerts.slideIncrement", 1); +pref("alerts.slideIncrementTime", 10); +pref("alerts.totalOpenTime", 6000); +pref("alerts.height", 50); + +/* download helper */ +pref("browser.helperApps.deleteTempFileOnExit", false); + +/* password manager */ +pref("signon.rememberSignons", true); +pref("signon.expireMasterPassword", false); +pref("signon.SignonFileName", "signons.txt"); + +/* autocomplete */ +pref("browser.formfill.enable", true); + +/* spellcheck */ +pref("layout.spellcheckDefault", 0); + +/* block popups by default, and notify the user about blocked popups */ +pref("dom.disable_open_during_load", true); +pref("privacy.popups.showBrowserMessage", true); + +pref("keyword.enabled", true); +pref("keyword.URL", "http://www.google.com/m?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q="); + +pref("accessibility.typeaheadfind", false); +pref("accessibility.typeaheadfind.timeout", 5000); +pref("accessibility.typeaheadfind.flashBar", 1); +pref("accessibility.typeaheadfind.linksonly", false); +pref("accessibility.typeaheadfind.casesensitive", 0); + +// pointer to the default engine name +pref("browser.search.defaultenginename", "chrome://browser/locale/region.properties"); + +// SSL error page behaviour +pref("browser.ssl_override_behavior", 2); +pref("browser.xul.error_pages.expert_bad_cert", false); + +// disable logging for the search service by default +pref("browser.search.log", false); + +// disable updating +pref("browser.search.update", false); +pref("browser.search.update.log", false); +pref("browser.search.updateinterval", 6); + +// enable search suggestions by default +pref("browser.search.suggest.enabled", true); + +// tell the search service that we don't really expose the "current engine" +pref("browser.search.noCurrentEngine", true); + +// enable xul error pages +pref("browser.xul.error_pages.enabled", true); + +// disable color management +pref("gfx.color_management.mode", 0); + +// don't allow JS to move and resize existing windows +pref("dom.disable_window_move_resize", true); + +// prevent click image resizing for nsImageDocument +pref("browser.enable_click_image_resizing", false); + +// controls which bits of private data to clear. by default we clear them all. +pref("privacy.item.cache", true); +pref("privacy.item.cookies", true); +pref("privacy.item.offlineApps", true); +pref("privacy.item.history", true); +pref("privacy.item.formdata", true); +pref("privacy.item.downloads", true); +pref("privacy.item.passwords", true); +pref("privacy.item.sessions", true); +pref("privacy.item.geolocation", true); +pref("privacy.item.siteSettings", true); +pref("privacy.item.syncAccount", true); + +// URL to the Learn More link XXX this is the firefox one. Bug 495578 fixes this. +pref("browser.geolocation.warning.infoURL", "http://www.mozilla.com/%LOCALE%/firefox/geolocation/"); + +// base url for the wifi geolocation network provider +pref("geo.wifi.uri", "https://maps.googleapis.com/maps/api/browserlocation/json"); + +// enable geo +pref("geo.enabled", true); + +// content sink control -- controls responsiveness during page load +// see https://bugzilla.mozilla.org/show_bug.cgi?id=481566#c9 +pref("content.sink.enable_perf_mode", 2); // 0 - switch, 1 - interactive, 2 - perf +pref("content.sink.pending_event_mode", 0); +pref("content.sink.perf_deflect_count", 1000000); +pref("content.sink.perf_parse_time", 50000000); + +pref("javascript.options.mem.high_water_mark", 32); + +// Maximum scripts runtime before showing an alert +pref("dom.max_chrome_script_run_time", 0); // disable slow script dialog for chrome +pref("dom.max_script_run_time", 20); + +// plugins +pref("plugin.disable", true); +pref("dom.ipc.plugins.enabled", true); + +// product URLs +// The breakpad report server to link to in about:crashes +pref("breakpad.reportURL", "http://crash-stats.mozilla.com/report/index/"); +pref("app.releaseNotesURL", "http://www.mozilla.com/%LOCALE%/b2g/%VERSION%/releasenotes/"); +pref("app.support.baseURL", "http://support.mozilla.com/b2g"); +pref("app.feedbackURL", "http://input.mozilla.com/feedback/"); +pref("app.privacyURL", "http://www.mozilla.com/%LOCALE%/m/privacy.html"); +pref("app.creditsURL", "http://www.mozilla.org/credits/"); +pref("app.featuresURL", "http://www.mozilla.com/%LOCALE%/b2g/features/"); +pref("app.faqURL", "http://www.mozilla.com/%LOCALE%/b2g/faq/"); + +// Name of alternate about: page for certificate errors (when undefined, defaults to about:neterror) +pref("security.alternate_certificate_error_page", "certerror"); + +pref("security.warn_viewing_mixed", false); // Warning is disabled. See Bug 616712. + +// Override some named colors to avoid inverse OS themes +pref("ui.-moz-dialog", "#efebe7"); +pref("ui.-moz-dialogtext", "#101010"); +pref("ui.-moz-field", "#fff"); +pref("ui.-moz-fieldtext", "#1a1a1a"); +pref("ui.-moz-buttonhoverface", "#f3f0ed"); +pref("ui.-moz-buttonhovertext", "#101010"); +pref("ui.-moz-combobox", "#fff"); +pref("ui.-moz-comboboxtext", "#101010"); +pref("ui.buttonface", "#ece7e2"); +pref("ui.buttonhighlight", "#fff"); +pref("ui.buttonshadow", "#aea194"); +pref("ui.buttontext", "#101010"); +pref("ui.captiontext", "#101010"); +pref("ui.graytext", "#b1a598"); +pref("ui.highlight", "#fad184"); +pref("ui.highlighttext", "#1a1a1a"); +pref("ui.infobackground", "#f5f5b5"); +pref("ui.infotext", "#000"); +pref("ui.menu", "#f7f5f3"); +pref("ui.menutext", "#101010"); +pref("ui.threeddarkshadow", "#000"); +pref("ui.threedface", "#ece7e2"); +pref("ui.threedhighlight", "#fff"); +pref("ui.threedlightshadow", "#ece7e2"); +pref("ui.threedshadow", "#aea194"); +pref("ui.window", "#efebe7"); +pref("ui.windowtext", "#101010"); +pref("ui.windowframe", "#efebe7"); + +// replace newlines with spaces on paste into single-line text boxes +pref("editor.singleLine.pasteNewlines", 2); + +// threshold where a tap becomes a drag, in 1/240" reference pixels +// The names of the preferences are to be in sync with nsEventStateManager.cpp +pref("ui.dragThresholdX", 25); +pref("ui.dragThresholdY", 25); + +// Layers Acceleration +pref("layers.acceleration.disabled", false); + +// Web Notifications +pref("notification.feature.enabled", true); + +// IndexedDB +pref("indexedDB.feature.enabled", true); +pref("dom.indexedDB.warningQuota", 5); + +// prevent video elements from preloading too much data +pref("media.preload.default", 1); // default to preload none +pref("media.preload.auto", 2); // preload metadata if preload=auto + +// 0: don't show fullscreen keyboard +// 1: always show fullscreen keyboard +// -1: show fullscreen keyboard based on threshold pref +pref("widget.ime.android.landscape_fullscreen", -1); +pref("widget.ime.android.fullscreen_threshold", 250); // in hundreths of inches + +// optimize images memory usage +pref("image.mem.decodeondraw", true); +pref("content.image.allow_locking", false); +pref("image.mem.min_discard_timeout_ms", 10000); + +// enable touch events interfaces +pref("dom.w3c_touch_events.enabled", true); +pref("dom.w3c_touch_events.safetyX", 0); // escape borders in units of 1/240" +pref("dom.w3c_touch_events.safetyY", 120); // escape borders in units of 1/240" + +#ifdef MOZ_SAFE_BROWSING +// Safe browsing does nothing unless this pref is set +pref("browser.safebrowsing.enabled", true); + +// Prevent loading of pages identified as malware +pref("browser.safebrowsing.malware.enabled", true); + +// Non-enhanced mode (local url lists) URL list to check for updates +pref("browser.safebrowsing.provider.0.updateURL", "http://safebrowsing.clients.google.com/safebrowsing/downloads?client={moz:client}&appver={moz:version}&pver=2.2"); + +pref("browser.safebrowsing.dataProvider", 0); + +// Does the provider name need to be localizable? +pref("browser.safebrowsing.provider.0.name", "Google"); +pref("browser.safebrowsing.provider.0.keyURL", "https://sb-ssl.google.com/safebrowsing/newkey?client={moz:client}&appver={moz:version}&pver=2.2"); +pref("browser.safebrowsing.provider.0.reportURL", "http://safebrowsing.clients.google.com/safebrowsing/report?"); +pref("browser.safebrowsing.provider.0.gethashURL", "http://safebrowsing.clients.google.com/safebrowsing/gethash?client={moz:client}&appver={moz:version}&pver=2.2"); + +// HTML report pages +pref("browser.safebrowsing.provider.0.reportGenericURL", "http://{moz:locale}.phish-generic.mozilla.com/?hl={moz:locale}"); +pref("browser.safebrowsing.provider.0.reportErrorURL", "http://{moz:locale}.phish-error.mozilla.com/?hl={moz:locale}"); +pref("browser.safebrowsing.provider.0.reportPhishURL", "http://{moz:locale}.phish-report.mozilla.com/?hl={moz:locale}"); +pref("browser.safebrowsing.provider.0.reportMalwareURL", "http://{moz:locale}.malware-report.mozilla.com/?hl={moz:locale}"); +pref("browser.safebrowsing.provider.0.reportMalwareErrorURL", "http://{moz:locale}.malware-error.mozilla.com/?hl={moz:locale}"); + +// FAQ URLs +pref("browser.safebrowsing.warning.infoURL", "http://www.mozilla.com/%LOCALE%/%APP%/phishing-protection/"); +pref("browser.geolocation.warning.infoURL", "http://www.mozilla.com/%LOCALE%/%APP%/geolocation/"); + +// Name of the about: page contributed by safebrowsing to handle display of error +// pages on phishing/malware hits. (bug 399233) +pref("urlclassifier.alternate_error_page", "blocked"); + +// The number of random entries to send with a gethash request. +pref("urlclassifier.gethashnoise", 4); + +// The list of tables that use the gethash request to confirm partial results. +pref("urlclassifier.gethashtables", "goog-phish-shavar,goog-malware-shavar"); + +// If an urlclassifier table has not been updated in this number of seconds, +// a gethash request will be forced to check that the result is still in +// the database. +pref("urlclassifier.confirm-age", 2700); + +// Maximum size of the sqlite3 cache during an update, in bytes +pref("urlclassifier.updatecachemax", 4194304); + +// URL for checking the reason for a malware warning. +pref("browser.safebrowsing.malware.reportURL", "http://safebrowsing.clients.google.com/safebrowsing/diagnostic?client=%NAME%&hl=%LOCALE%&site="); +#endif + +// True if this is the first time we are showing about:firstrun +pref("browser.firstrun.show.uidiscovery", true); +pref("browser.firstrun.show.localepicker", true); + +// initiated by a user +pref("content.ime.strict_policy", true); + +// True if you always want dump() to work +// +// On Android, you also need to do the following for the output +// to show up in logcat: +// +// $ adb shell stop +// $ adb shell setprop log.redirect-stdio true +// $ adb shell start +pref("browser.dom.window.dump.enabled", false); + + + +// Temporarily relax file:// origin checks so that we can use s +// from other dirs as webgl textures and more. Remove me when we have +// installable apps or wifi support. +pref("security.fileuri.strict_origin_policy", false); + +// Temporarily force-enable GL compositing. This is default-disabled +// deep within the bowels of the widgetry system. Remove me when GL +// compositing isn't default disabled in widget/src/android. +pref("layers.acceleration.force-enabled", true); + +// screen.enabled and screen.brightness properties. +pref("dom.screenEnabledProperty.enabled", true); +pref("dom.screenBrightnessProperty.enabled", true); diff --git a/b2g/app/macbuild/Contents/Info.plist.in b/b2g/app/macbuild/Contents/Info.plist.in new file mode 100644 index 000000000000..3c556a74d904 --- /dev/null +++ b/b2g/app/macbuild/Contents/Info.plist.in @@ -0,0 +1,138 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleDocumentTypes + + + CFBundleTypeExtensions + + html + htm + shtml + xht + xhtml + + CFBundleTypeIconFile + document.icns + CFBundleTypeName + HTML Document + CFBundleTypeOSTypes + + HTML + + CFBundleTypeRole + Viewer + + + CFBundleTypeExtensions + + text + txt + js + log + css + xul + rdf + + CFBundleTypeIconFile + document.icns + CFBundleTypeName + Text Document + CFBundleTypeOSTypes + + TEXT + utxt + + CFBundleTypeRole + Viewer + + + CFBundleTypeExtensions + + jpeg + jpg + png + gif + + CFBundleTypeIconFile + fileBookmark.icns + CFBundleTypeName + document.icns + CFBundleTypeOSTypes + + GIFf + JPEG + PNGf + + CFBundleTypeRole + Viewer + + + CFBundleExecutable + %MOZ_APP_NAME% + CFBundleGetInfoString + %APP_NAME% %APP_VERSION% + CFBundleIconFile + %MOZ_APP_NAME% + CFBundleIdentifier + org.mozilla.b2g + CFBundleInfoDictionaryVersion + %MOZ_APP_VERSION% + CFBundleName + %APP_NAME% + CFBundlePackageType + APPL + CFBundleShortVersionString + %APP_VERSION% + CFBundleSignature + MOZB + CFBundleURLTypes + + + CFBundleURLIconFile + document.icns + CFBundleURLName + http URL + CFBundleURLSchemes + + http + + + + CFBundleURLIconFile + document.icns + CFBundleURLName + https URL + CFBundleURLSchemes + + https + + + + CFBundleURLName + ftp URL + CFBundleURLSchemes + + ftp + + + + CFBundleURLName + file URL + CFBundleURLSchemes + + file + + + + CFBundleVersion + %APP_VERSION% + NSAppleScriptEnabled + + CGDisableCoalescedUpdates + + + diff --git a/b2g/app/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in b/b2g/app/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in new file mode 100644 index 000000000000..39e694876821 --- /dev/null +++ b/b2g/app/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in @@ -0,0 +1 @@ +CFBundleName = "%APP_NAME%"; diff --git a/b2g/app/nsBrowserApp.cpp b/b2g/app/nsBrowserApp.cpp new file mode 100644 index 000000000000..5df1289b8ccc --- /dev/null +++ b/b2g/app/nsBrowserApp.cpp @@ -0,0 +1,292 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is mozilla.org code. + * + * The Initial Developer of the Original Code is + * Netscape Communications Corporation. + * Portions created by the Initial Developer are Copyright (C) 2002 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Brian Ryner + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#include "application.ini.h" +#include "nsXPCOMGlue.h" +#if defined(XP_WIN) +#include +#include +#elif defined(XP_UNIX) +#include +#include +#endif + +#include +#include +#include + +#include "plstr.h" +#include "prprf.h" +#include "prenv.h" + +#include "nsCOMPtr.h" +#include "nsILocalFile.h" +#include "nsStringGlue.h" + +#ifdef XP_WIN +// we want a wmain entry point +#include "nsWindowsWMain.cpp" +#define snprintf _snprintf +#define strcasecmp _stricmp +#endif +#include "BinaryPath.h" + +#include "nsXPCOMPrivate.h" // for MAXPATHLEN and XPCOM_DLL + +#include "mozilla/Telemetry.h" + +static void Output(const char *fmt, ... ) +{ + va_list ap; + va_start(ap, fmt); + +#if defined(XP_WIN) && !MOZ_WINCONSOLE + PRUnichar msg[2048]; + _vsnwprintf(msg, sizeof(msg)/sizeof(msg[0]), NS_ConvertUTF8toUTF16(fmt).get(), ap); + MessageBoxW(NULL, msg, L"XULRunner", MB_OK | MB_ICONERROR); +#else + vfprintf(stderr, fmt, ap); +#endif + + va_end(ap); +} + +/** + * Return true if |arg| matches the given argument name. + */ +static bool IsArg(const char* arg, const char* s) +{ + if (*arg == '-') + { + if (*++arg == '-') + ++arg; + return !strcasecmp(arg, s); + } + +#if defined(XP_WIN) || defined(XP_OS2) + if (*arg == '/') + return !strcasecmp(++arg, s); +#endif + + return false; +} + +/** + * A helper class which calls NS_LogInit/NS_LogTerm in its scope. + */ +class ScopedLogging +{ +public: + ScopedLogging() { NS_LogInit(); } + ~ScopedLogging() { NS_LogTerm(); } +}; + +XRE_GetFileFromPathType XRE_GetFileFromPath; +XRE_CreateAppDataType XRE_CreateAppData; +XRE_FreeAppDataType XRE_FreeAppData; +#ifdef XRE_HAS_DLL_BLOCKLIST +XRE_SetupDllBlocklistType XRE_SetupDllBlocklist; +#endif +XRE_TelemetryAccumulateType XRE_TelemetryAccumulate; +XRE_mainType XRE_main; + +static const nsDynamicFunctionLoad kXULFuncs[] = { + { "XRE_GetFileFromPath", (NSFuncPtr*) &XRE_GetFileFromPath }, + { "XRE_CreateAppData", (NSFuncPtr*) &XRE_CreateAppData }, + { "XRE_FreeAppData", (NSFuncPtr*) &XRE_FreeAppData }, +#ifdef XRE_HAS_DLL_BLOCKLIST + { "XRE_SetupDllBlocklist", (NSFuncPtr*) &XRE_SetupDllBlocklist }, +#endif + { "XRE_TelemetryAccumulate", (NSFuncPtr*) &XRE_TelemetryAccumulate }, + { "XRE_main", (NSFuncPtr*) &XRE_main }, + { nsnull, nsnull } +}; + +static int do_main(const char *exePath, int argc, char* argv[]) +{ + nsCOMPtr appini; + nsresult rv; + + // Allow firefox.exe to launch XULRunner apps via -app + // Note that -app must be the *first* argument. + const char *appDataFile = getenv("XUL_APP_FILE"); + if (appDataFile && *appDataFile) { + rv = XRE_GetFileFromPath(appDataFile, getter_AddRefs(appini)); + if (NS_FAILED(rv)) { + Output("Invalid path found: '%s'", appDataFile); + return 255; + } + } + else if (argc > 1 && IsArg(argv[1], "app")) { + if (argc == 2) { + Output("Incorrect number of arguments passed to -app"); + return 255; + } + + rv = XRE_GetFileFromPath(argv[2], getter_AddRefs(appini)); + if (NS_FAILED(rv)) { + Output("application.ini path not recognized: '%s'", argv[2]); + return 255; + } + + char appEnv[MAXPATHLEN]; + snprintf(appEnv, MAXPATHLEN, "XUL_APP_FILE=%s", argv[2]); + if (putenv(appEnv)) { + Output("Couldn't set %s.\n", appEnv); + return 255; + } + argv[2] = argv[0]; + argv += 2; + argc -= 2; + } + + int result; + if (appini) { + nsXREAppData *appData; + rv = XRE_CreateAppData(appini, &appData); + if (NS_FAILED(rv)) { + Output("Couldn't read application.ini"); + return 255; + } + result = XRE_main(argc, argv, appData); + XRE_FreeAppData(appData); + } else { +#ifdef XP_WIN + // exePath comes from mozilla::BinaryPath::Get, which returns a UTF-8 + // encoded path, so it is safe to convert it + rv = NS_NewLocalFile(NS_ConvertUTF8toUTF16(exePath), PR_FALSE, + getter_AddRefs(appini)); +#else + rv = NS_NewNativeLocalFile(nsDependentCString(exePath), PR_FALSE, + getter_AddRefs(appini)); +#endif + if (NS_FAILED(rv)) { + return 255; + } + result = XRE_main(argc, argv, &sAppData); + } + + return result; +} + +int main(int argc, char* argv[]) +{ + char exePath[MAXPATHLEN]; + + nsresult rv = mozilla::BinaryPath::Get(argv[0], exePath); + if (NS_FAILED(rv)) { + Output("Couldn't calculate the application directory.\n"); + return 255; + } + + char *lastSlash = strrchr(exePath, XPCOM_FILE_PATH_SEPARATOR[0]); + if (!lastSlash || (lastSlash - exePath > MAXPATHLEN - sizeof(XPCOM_DLL) - 1)) + return 255; + + strcpy(++lastSlash, XPCOM_DLL); + + int gotCounters; +#if defined(XP_UNIX) + struct rusage initialRUsage; + gotCounters = !getrusage(RUSAGE_SELF, &initialRUsage); +#elif defined(XP_WIN) + // GetProcessIoCounters().ReadOperationCount seems to have little to + // do with actual read operations. It reports 0 or 1 at this stage + // in the program. Luckily 1 coincides with when prefetch is + // enabled. If Windows prefetch didn't happen we can do our own + // faster dll preloading. + IO_COUNTERS ioCounters; + gotCounters = GetProcessIoCounters(GetCurrentProcess(), &ioCounters); + if (gotCounters && !ioCounters.ReadOperationCount) +#endif + { + XPCOMGlueEnablePreload(); + } + + + rv = XPCOMGlueStartup(exePath); + if (NS_FAILED(rv)) { + Output("Couldn't load XPCOM.\n"); + return 255; + } + // Reset exePath so that it is the directory name and not the xpcom dll name + *lastSlash = 0; + + rv = XPCOMGlueLoadXULFunctions(kXULFuncs); + if (NS_FAILED(rv)) { + Output("Couldn't load XRE functions.\n"); + return 255; + } + +#ifdef XRE_HAS_DLL_BLOCKLIST + XRE_SetupDllBlocklist(); +#endif + + if (gotCounters) { +#if defined(XP_WIN) + XRE_TelemetryAccumulate(mozilla::Telemetry::EARLY_GLUESTARTUP_READ_OPS, + int(ioCounters.ReadOperationCount)); + XRE_TelemetryAccumulate(mozilla::Telemetry::EARLY_GLUESTARTUP_READ_TRANSFER, + int(ioCounters.ReadTransferCount / 1024)); + IO_COUNTERS newIoCounters; + if (GetProcessIoCounters(GetCurrentProcess(), &newIoCounters)) { + XRE_TelemetryAccumulate(mozilla::Telemetry::GLUESTARTUP_READ_OPS, + int(newIoCounters.ReadOperationCount - ioCounters.ReadOperationCount)); + XRE_TelemetryAccumulate(mozilla::Telemetry::GLUESTARTUP_READ_TRANSFER, + int((newIoCounters.ReadTransferCount - ioCounters.ReadTransferCount) / 1024)); + } +#elif defined(XP_UNIX) + XRE_TelemetryAccumulate(mozilla::Telemetry::EARLY_GLUESTARTUP_HARD_FAULTS, + int(initialRUsage.ru_majflt)); + struct rusage newRUsage; + if (!getrusage(RUSAGE_SELF, &newRUsage)) { + XRE_TelemetryAccumulate(mozilla::Telemetry::GLUESTARTUP_HARD_FAULTS, + int(newRUsage.ru_majflt - initialRUsage.ru_majflt)); + } +#endif + } + + int result; + { + ScopedLogging log; + result = do_main(exePath, argc, argv); + } + + XPCOMGlueShutdown(); + return result; +} diff --git a/b2g/branding/official/Makefile.in b/b2g/branding/official/Makefile.in new file mode 100644 index 000000000000..bdf28e61f920 --- /dev/null +++ b/b2g/branding/official/Makefile.in @@ -0,0 +1,49 @@ +# ***** BEGIN LICENSE BLOCK ***** +# Version: MPL 1.1/GPL 2.0/LGPL 2.1 +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is Mozilla Corporation. +# Portions created by the Initial Developer are Copyright (C) 2009 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Justin Dolske (original author) +# +# Alternatively, the contents of this file may be used under the terms of +# either the GNU General Public License Version 2 or later (the "GPL"), or +# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +# in which case the provisions of the GPL or the LGPL are applicable instead +# of those above. If you wish to allow use of your version of this file only +# under the terms of either the GPL or the LGPL, and not to allow others to +# use your version of this file under the terms of the MPL, indicate your +# decision by deleting the provisions above and replace them with the notice +# and other provisions required by the GPL or the LGPL. If you do not delete +# the provisions above, a recipient may use your version of this file under +# the terms of any one of the MPL, the GPL or the LGPL. +# +# ***** END LICENSE BLOCK ***** + +DEPTH = ../../.. +topsrcdir = @top_srcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +include $(DEPTH)/config/autoconf.mk + +DIRS = \ + content \ + locales \ + $(NULL) + +include $(topsrcdir)/config/rules.mk diff --git a/b2g/branding/official/android-resources.mn b/b2g/branding/official/android-resources.mn new file mode 100644 index 000000000000..c63d273869f7 --- /dev/null +++ b/b2g/branding/official/android-resources.mn @@ -0,0 +1 @@ +b2g/branding/official/content/splash.png diff --git a/b2g/branding/official/configure.sh b/b2g/branding/official/configure.sh new file mode 100644 index 000000000000..b4ac2509ceb7 --- /dev/null +++ b/b2g/branding/official/configure.sh @@ -0,0 +1,3 @@ +MOZ_APP_DISPLAYNAME=B2G +ANDROID_PACKAGE_NAME=org.mozilla.b2g +MOZ_UPDATER= diff --git a/b2g/branding/official/content/Makefile.in b/b2g/branding/official/content/Makefile.in new file mode 100644 index 000000000000..2d4ab84865db --- /dev/null +++ b/b2g/branding/official/content/Makefile.in @@ -0,0 +1,12 @@ +# Branding Makefile +# - jars chrome artwork + +DEPTH = ../../../.. +topsrcdir = @top_srcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +include $(DEPTH)/config/autoconf.mk + +include $(topsrcdir)/config/rules.mk + diff --git a/b2g/branding/official/content/about.png b/b2g/branding/official/content/about.png new file mode 100644 index 0000000000000000000000000000000000000000..3cc1444f645b1a36a885816ffd6caa799482ea7a GIT binary patch literal 25842 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 z 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 DSx3k5 literal 0 HcmV?d00001 diff --git a/b2g/branding/official/content/logoWordmark.png b/b2g/branding/official/content/logoWordmark.png new file mode 100644 index 0000000000000000000000000000000000000000..878363181ace30dda780d211d8c3ee54153dbc84 GIT binary patch literal 14021 zcmV;$Haf|PP)OcRhjmC*V?+O_f9%V zcV{O%AgiE=;D#dNAdjenI?lr4j2n#O=qNYQfaC>Aqhf4pXd4dcGa!BRh{>|-*&#EIXAx?O`E0xx(?d_ zwv6jo^2JVg!l1VdXod-mwTYr1@uZFw7ivy4acUpZSPz*a}B+>P5?XIJ%w!f;WZG@VDTq)z&7dL=pEbA z5QZU!b1n+P#5m&kQsr0p`%AW>m=N%@c@#HSU=Pef>uENEa!BIvEgy2z<0i6qZpHZR zTcIbO!GTll1=9=>;J*eg#c-?}rtlSfw0--{XY0a3pp!0hG6HddWr|nD+EcyBu9o)B zSsnWH{w{R%v>=sAAQrP=7#eH>=ghbTt0jR^Uts%K8AAm(pR0t~vAFecm`vUl<_Ztl zhOxHp{-@ehJ0_a>EC6h|uHiCU7jH>)#OI{?JJEmg0Ol_xnc0Pb&I~#d76A*GPUH}y zV?q*#Btc@45YCYI+b~@9GTV!8X8l-e|N6exH*L6MbuPDU@9&aH<0d;{+(iUeocal; z+6xP4LY%GZ+SRs&OVS;wSbE+}%sgWuR=j8~md)%&JE>n50ceI9fve;*-73|LBu)}A z$kgfLq#yPtW9TJW)S1H8{x>&z zX>BRIDhWj-3_P2lI5VbWVQ&w-S1f{k(r!HV(C~^USMR+sS<>G%z18|Of&AwZsZ(vL z9m_zAnc_f1MD1M!vX8`LVs0{%MC-tEWCr@NiHeG=@;A1cwkN8XK~xQ!HAom zppy-o^2n(+)t*01Kgj;2By(8DTSMJ9@b|snM)FN!rfn@g5@$&C*huKIJu;YR?m(>B2`tfp0>D-_SI1R*Cez zfB9_+o~wagFQemrLm+#XWrav2ThY>eGUCZLq+1Nk=PqpU((8#cPny^t7h>J+hw0vjoQ|levvsQx< z6ECJ?Zqv2!RD)P97E2)6KAW~Nc}%J$fxrz>E)bhJ0kWZu?Za94!#kiqeh;*#?pN$Z zwpkddge*b*R=!^YU?>6SGT=yxbZ$YfL)SxVM+;6l|1|vXx^`Utp@*US8}Xh?UHswm zu}sIJ%oneHWZ}hs`r+vJy`2B|x;e#cQ|-BFH{5W86jH7@4E!`{2`c_|{%8>xFJ9^w zD{&CGL@0hjJ-wgfSQfEVJT(orMIeJmB4m7wLde+_BliRqVu#5gn_uw%eu=% z*@I{L%gus)tB&vl>gzqGCSVW`nsyq7l_1;&q+zn}FhI2`FkZ3nq9?zDQ=a%Xy0aUg z8zC_vFm(Cn;GFkP#7UhbULu5R(g{MU=sq6{VQb%(ogof`PC8FQVmnO&E>8d}R|8@- zz^!<&3==)`=itYWlKu7{YjOQQ3?YLYZhGGd_;A++`1HrdwNE^J-{%MP_E-B0J3g&h zSUJ@NrrNXJZoKiv16~^+eML86B-|$&vq!e_@nF2NB*<6bkiFIG=I85frTzCK9n|4t z(BcWSwvtVjv|&(3cZH3LnSp6&xM0(bIPZbaB2gKGAB!WN@bT1(ufXsnABWA}lrWTj zMnOOeH5|aByeCj>#w^D}K;8|oHCu&7MxjRb)@as2q2R$O2N)SHVVXOHi&mJ>?IgbW zlQHxdd7QR%94Lyp?#VZ|HLoUwdEe*7$9PI2`ibqbp3MU8;6#{ZV z9Xw88G6_hA0vkIAC7Tgz1xj^vXL{`e=)vr!yr!V3vt$pEUBui@aex^jBCf=h@X7t2YBhwU|;L0i@%$h5j&5V zd=Cx9Ac_XwP)B&msGI>k%<8<5Pg9Yz{&e46LXk-aikV^;sYIHL^1CCl4+uIRv*4~Uk*X_L44uE zr{bKYXW-Ub%9z)^3mvH(oq8=k`QADB;P!K{^4mW~{MW-vPyP79f5q;>%MTvi;CyKf zezt(L3-(dnxPc#Ui`afsPevr01s)R0PKMc<`yS z2kg1fq7)BeKmuDFg&_|`hdQDzU?nu9Qvo)o=3!{wIar)B;1Xbj9)V0~`-9OogIj3Q zZu3>92&<0|Ac;g>+U^RKId0>$6IF7 zTj^dayUC6lmodEeT{{h*d1wjRZ+#dG|8CJ=w#4oK_6wz7$*BO7HICEkK{O&fx0xp= zk(@}9Bl#W4_%Ylc`DZ_uKJ46{ z03lJ%+?Tf_*&RoP0OsaMbt9FHofObbsqYCwMCkc&iv{Y?x}17q(Jm{gBNhvYm69kY zJEVHZHW%xMtR6;cqRMTQ2`6G-Hb~9mXp-tVqbrGA*+WRz+PRaiK>+j0Azj))&!SeI zD}x;?hfvK1XzT06b>G;HvzM>N{AF|_9Wzn+lL>!lGm2XU=AWS94IerIKfmlxc*TYS z+Rp2`&M#H(fo@bMWi*@Yvvng7?sJxHLb?IIK=O8yqK`!Yc-(n)#Ax zWIh$4Aw;-uz8bTOp@njs(rLdP*Wuf7^sjjsb65TtBd1-1HX|Cc*q7jIk=U9bHVY%v zDQ_c#ERb^M!+jI-(H@0!e3Gicx_JUoJs z1{pnh(79;+ByYr#S#wOWn@E1DUVoD0$_bxYO!8gD3hR!cK6n+$S1@_%A6pb>kjy6e z{;>$OhN@$_uk`>%bDf|(FxNo3(?oVl5nkStuJlmo((@NmM-Q2LsB;Qkc{0MNLmC7O z_R8^AkfBE0gO}g>Q4F<=VeGuO!mwRXwMrn5e zu>^4GJ38>-@AGsm_JCTK`$Ib>1zN~pU#Ow@gb~FaCWjCM;7dp0cezOcZ4nQUO+GV? z8SKkA^!(a?AsIeyoFU6DIpF}!u`)LLcCVO2VMi5i){TJ0u76S&g~zj* zgUD9WB3nz2zXUd!R>)f;B09l#6=?=GsoJO9`Y%X4@D*5bOI}3Khl=rT{5WwIo|t!pP2xN{AQ4PsH5i-UWRz2yAkYqp|UeqKIO7#@`90)a4lpQ8sG7dfP5EM(K z%9WrM^O!lh7W41a0thJuIDLUj0|GsZ zsP<@9W|n5PqN&)NKix8M*21&hHmL0$?4P37s2wX4U;9YTZnAHiV(piayp7~;lFyNh z9S=;#V3Uki-MM=|DzxyQh&~KAOP$amZXrX8J&YQuY*Kw>3`vtJa$bmiDIH3q;%pBA zr3Ny)DKCiYvwt%RP!pT^1R%dNgXQmh6=sER!tk&Q&G(`_MiIrdLw2;Vy%s>GYDLZy zA=Ocz?@L%1Te|_HYt|9yT_pPZkeI&!>8;za@$sElvs1@u(`lI8TSbh1=43yCHJ64k z3G9B6?u`alQAz9R)O=0THa0^NyZ1xQ`*X(7m|b_O|Jf;U56LSVe2#rdzdT0zTMtQl zlV|-a^^DveBKhI*==L{-=hc*?lStoriI)#akqRYCv8u!!je4gnfD zsAT#Tor8fE)TYib*oZm3YCx<;uL-vSX?yvdg9zNJWKE;93tp)LGag4Jw6JzV5vTQ< z@W;zAS~MiO>3r1+^dy5VOW@b#SOBLqEy#{Y`?Dd?ILc5`nKMU*wyF~SAdZl2%FSK# zz`a*>zGV~6^)Zs)9wYs%t%+^6r%p|-SHF*o#>BxHNX%+x?Pu2w<4RwjdcpxsS?b#E*b=A&?pjvvK|^%+Dm&w zl&i`8s&75eRGOI9O=|S+f{L&oR{J-S?;HZq7(^p=@3AYNOO^d4$vi}HwA)A?IEMOM zvoGzqpP^d=o5=xZ`Wjj^p}*QEcJruX`&CGny%smAlNqwp15r?UU*fNJ;MXTRqvS{f zItSATY#npjk($*DXX_5cvOD0nw&Uh|^7zVc3fNjnV)mjwbT61gtfiCv7og_p=j()Y z0k7<0eBCD6R*A&|80j>DhyamkBU{af-9HDR9YbODWAFwCWuh`WO_)tL>afnsp{aB#JxUOkFWLQ0 zAk#?n7?*Oa!rOQ!GMU*}wcf^c4`*@rNISY_&&M)iyUfh#l6@+b2x0q~Qj>NXtB8mv z$+jwzis+y`J`NDj5(^SirQ~^O?w(;b=;WwTE#z_fl5RYhH?fOM>2i@QI*-&%dM5T9 znyHFpB;nEEQ7K8Ujs$k{u*ZC^fa&_2!ZcAPShfYS7roPU=IvXLf9q8+cG_1<;zY;AAeS zl)9&my1{6>y3R9g8IqThJVmngDE&^c`e!3X)A@-m47ETHq!U7m(whu@Uq*c`bxMk| zWn`HEnTDlFJ5IOBCbKQtS}@`^%tTz;XDNFW_YU{sUBBx`xwRJy&Y6R@S<^|4OG+?T zi9wa(83CFz_X}mIMrz3<%o#Ib5}Q>?H4Ny+f?N(_*KX+PRutE)hM&(zTuR6s-#v^A z-#Q)VpEMVryZ$kh3qH~@29*at>oM7~pOvngK#(u6DjQa^=q-Fx1ttd2OO%6!i;aDh z+&_;P4XHYh3CWvIb1Z&YgZ3gu*ptM?i7dr4N4{D9<^gA76(^E_8Mn)rK~gD8Ia*G)jr@ye4M z3`h*9`^d_=KFWE*e3DDmKED6&@!&-0FjCat779ZXp+{DV7kT_R1B97M)PmD~#9nMg zXbNCZ0c*o%24jF(q@r1p)fjYUOA>MV8dh%$k?$P9!c!I?-cEKF&+8@|ive;#teD>S za(NWiZ-}ZAcXz=r5}O5NXR(^+`jXk)EgPYk7J)1$DT1EhCoZ+)Ow6EUU-5aCdFSQfJIrVP`O4XTrTAX#6z`8i07F_H&T# z_!g3nH+X;7gb|;;dOuR2vL}3Ysj}_H}pg- zbVC`O4eQxk6}i#)&>Fxvp_l{Iq%NAoU`E1%m5jk^i4)*rv`>dY^dRg6PMK$7Mv4Z- zcmi&vDuJr=jOUsPy3g^T5tuyc%%KFLvw0J-Yd}B?WY9b$8#3U4x#L7J00x=w(LO&q z7uj_qW5iVY27KoI2CP*k%x<0R!xTzuM(Ox?G$4@?s`&yX53&0<+vhARIW&@_=NM-A zNZ3S)i9#07N%np-FWf}T7nGW4H({2m8-R@4ZpBQs#-RShGq^unu|S{d;HA2K-eErT zw^zw) zE@O!yJoW^0D&A{JK2O5sKWz3Zwo5O1RoD!&fV1o+lc^3?JDmbol(DbNoJNzt6-&ou za<5OFyiB&%@L(AQVh_Wn&t+O*B?9`N>?yMQcuJ02ami-#NZd#WP<}Pqy5%YY(%}5gvqPzh zpE%6>WTyFS1N-iowz0an8kAc1gJ%e`dX}%{gx1=q8W>7Vj$w`94Rx>2S88~p_9U~c zr|B56JGlNnClJh3gTxNyMP_wAFvDuFjUg1enihDGi=C&=>;synn8y&3>6p=2g)%sZ zP4Dm6S|X{STnZxFjzCn7x8TnCuSGf2gTFj!6pxqN>8VOE*&gJWo2=iV?enM9IsHd1NFB71mjMr;@U(_-tfFFBg*;X5^la9V(XSNwr=9Ga-noI znAFi*iM{S@KMl7VXTcgT;elVbqP;VT#NrBkC;Gj0EmA)1BBKDXd+6BIeb!k!-SD?V%w}b>5%|!=Rx-KDD_JfBsP?z<@aje zN0q|^4OG&%s@R>VV;P>tvZw)|-&+T?+myYvQ~^3U;qyGF?vlFu)+aCxr(~VcKtI%tphz9qicRNCrqHby+XOB(otN)3CGq z1a!=wjTTdoI#`x$qZ3m}hEnqYj3A z^-wxPSf17RY7s}CQ8`(D;4b9>{BeVQ^CxjKd{(hcePfpTh#DC52DVYZa<%*Fx$*~j z?nXJAy0R;q9dkt;$e^4(?;|;tRw3m&wL6X@KZLSSZ4;_z{EZu4G2eOy+#cJ04A7+R0s5 z{KgcjgSkO2S>WfI3zP@;dE6?KI8NTv1Y|X~%``b*vwX@s6qwK;Mt4pFCquK=Y~PtG zRMDvY22sXLBNg|jO^)elz)pWq4AiKxUH7gg`#z{b2{jJ}5`lxsqO7{`V0&378F0!K z=NATARQg-r@7kBDqXHTW2bewTybP=qY2S&MK$5iS1WBgN#Ou4(BP=H0;jX_`lcgfL$IbxjBCe+hIIYp^=1D@oZ=CAB`0b z{Yg~Dp-GNAx5@iM%HVItD%+dvTX+bqU!>Qw|;pxrC6O&XTD=2$0pI4r+4LJpc)hsKaM-B!(s!k={`pO;ekt$~CLdMAK z7#FADV)n=bpAkred5 z1A10D-)48#z~`^ojSB|GQCRP8q$l0oEDKS$G?dm6OBX`<{}Ff{ohCn?j%R-+u{lX+ znlT9zz8H5h5Ma<5H+}2+o;sSOp_q>#Fkg_wqG?-6DNj3K7_-_(KI>h zid3^d5~H1~x7Zf+f7`gW z<5%b<`|1m&H<88LhJ@k4B=9ic_A&u!(O8c_m9lPAIHg- zwBm@lqi~0|A*__6S|uXf4>Gw4<;;SZ6-qYiY9U6;739nVL(j_YU=ZVSsd9E`a89L1 zjJ&ijz!|9`a%-6J!fk~1Qd8#VY#APij*QWG*Oa#HNbljTZBWOhW2$-_@5tPX zGh-WYW8qb}-(8Avk(RTrQ(6iA`d+*y_D5WpS%tZ+C9>nv&^tR}b>-o-WO3h)L45eO z0c>(x5$mGg%^rn6x?81!g)+mxc2m`=kHy^;yzHdCn42j=>|yVr4$U8ioesFN7lOPe z2O_^LQ(q+Gjg5rT(W3?7N>wGOaUe@O(tKjs_SU(rpHHm?`_q^jvEAXUq1S$d_rxk= z*ChKVtB}P#y;;6vT(NMY0qs-DR-H3R%&g(8Z;qoaENsD?%ytYWdSQo8zdh3#_wuAk zJ>dHyt2tqsRYVS31(Fezil%y7?caEUz>?IsgA$WOYGaImXY)etY)4fHYB3#oJ%zc6 zF?=reJ?!z**zR?qENt``SO1v zV5{2$)2>D~oQO=0T8$C5BZFcU)8pf~>UDcz6^h6YdeFNG^==7fjBLb`AG!HSNFg>Bh*chCMTpmEXFvYOBu5YXr|I%lkC;t`_RCnxnV z(6KJD-*LJ~Mu?;D=1Cpl@dA^_6SafvYxYZdP0qVOc^?y#oHwpMbDy%+4(uZukxx*? zY2&MKSI^m`N*c8wb~GQYxHC^SnO~(2yCx|3C&gN0az=BR41X&rWG#MXIi9{{7*VYd zgV-w35hwM{gC%@Y8KcTq9Ah&GbAc8gd=N5Jc(!PuYHML^Nnkr76} zbhSd3U&)abu5RC%!j?aB%CnE(SGo~rHZ$mY)r$0BM%rVPB_b;s2PM361*zp+VP#$l53DIn;C!6@jhz^8X;zZxi7pBQM`C*C-h~Zh=;u#5QDm=k~*3$jwIx zUIxS1K^Su~K(tH}{wOt2Q@L*Dp%glrO>#Y={K=<#yQq)9DElPlmUiG5)6XY0ayp$n z0-HJd#0a9PGTI$MHGHebHSLo+in##kE>pU;xx9wPDOfyDEr`kt$f+o zhjPk{ff>C58y~D9H|k?rUkvR%7E);gR*cO)J<6t%rM*?jI0A@8jP+!x9XI68!XLB~ zA?&n7c9K+5!{c1Y3IU`bgVIsXVx&IuiZ^}T1-yJw86K&FZjqQOCa0@{Ll&$aN|jN~ zdD9K99pXiWhir@mq4@TsUo8X8Q%gP_pKD~ZJ(HWn%l4M%;GTl|I8}p|oMd0;BtYBI zz`oZ~1V~am%sQnO=wR<_dY4A4OH0Lt8=mj&I$?kJC2kS1OY2%e~zdfF@ zFt(|Pj&cm96{1R7TMK7~1S%!V7twsQR6GJ#B^nTUWto6FWGbU$*)kpX-|wJ8>gC8z z6Y-3R1ZR*i^XZXyg+Y+ieR+lDhX^$-}11Ouxs6epvI__7RcG5S#(kuI~l9T!g4f(8(j&2*{Lk?mbkv0&;!2C!B z<6%BX#3M#@U0J1yGw5BizxoDDoLJSdc69}sLmfNsqgvKrS(=QuX|#293xD*d<0r*M zSjn|#G97XsPmz&n!nHEu^6q(w-WFo80)36sA~#@mH&UrGt~!4V&X^~wW3i(n)}q0e zUPd7S=9g5tMO{eXaXl2SYvK$oU5_w6xt7EAEVCQw@L_om$7$nfB$qXKpR+tpevW|l zYee~pje^!(y6(m%$DKZjjrPa{6_eLjN;moJ$JHS7w+;67DX?AMu**>29JSlv=r$6n zWT@%a_c0;9rEA)&s-%L&Qx?WYT(oxBQoSpV2WTS{@RTf>t0;lSaWMj$ZAaw`e2>r^ z#mbye$D*ZixUm?1@>mM(nhy@rl>?iGfi#A~47T{4*d(~5cNg>oJ4OPsxdOEihRSA^ znIOu3)ol7&`XLK|RI~I%)9@E(?7@oG9LB2|0z5HiTSbD2pHH`hR7*oQkoU?pgS=cI zZLZDPe$3R{&L&{~=j5uRNlbp+0<6|Jor-e+XEksvykFUAm4nz!+%dVt!B>ycJ#q1& zb!eQ1#d(>%4V)7EL%p)e`8H0lH?KkST9a%aeqDj^txXv6Eoy*jSRRk(VzSOvE1+ry z2YMmzpw7610N3ZqqNM`kq-G^ZZyX-1BHh8odUP1JCf)y0l1DV3hI1gn6F%7uF2TlC zhBd5MYTz-w9iO;&fDoRNlRshF5m?w|$zDmBUKK=)Aw4ymWxt2aR$`Hsne_AhL8eck zeIY&aVmfhAs^J}}LHzSe*Q2*I}ezUs= z`dBBHykSn&T-YyDzMA4J9!Ke(ESxpFB+if1Hll2fYZ~n1yhWZt&Dj$ZQ?A%c$Ei}+ zs!qFCb>@vn;hxx*;z97=o2ZUF&E?%Va8;cTBbravsQp*nXU|lhZPqw=y+;Wr8N8>7 z)8}863VG1dCgkc%jJM5r$RuZMMi`-~{_8!i{SJOfD2@|xW z=TVm`Wvyg*Nb20*EFH$|jDzbQUW9d(*2tFSC_2+)ZHh~k1`&r>>Ku&rRp__($moib z*5YJkkQqa3arP;B6ucHZwIhvxyYzna(|1>GA3(gb1(h9}5tajaPmEbI|D=P2lcnW^ z06NE`yHdDy>r!0Pu^X)yzH~$Slx1YgIn6c4SO&YctweRzW5+YlpgeDvD9_r&c8LPg zgUZg)l}mgH4xB2}tyC(mnQ=7gGxAgvo(gkP6Gq`o{ks)_I92RrP0q8rj%hOrNX;B7 z+b6Ix1O07iJn?jvvhkjld>j%6ZvN_*_e0}pGd~1w(zWpFcub$p3rTRiYww5yi`2$l zJE~}DH6^3*O75&aih7e;ZP`Povy(-SDh}iw9p}x;;?$m%ST~-+s?iqwdV3F^Do(?= zPiBCXhz5w^M~QaS%9;`>%xt4-o=%9jy*P)jT{etc@3&!}?Ps9<&r!H1cE$gdQf<4N#J?6C5>{9B0*v53`5B@RsMGHZX& zE*HH6F`3o`p75!u!boC&suJUa1Ip}u(N!^@LRE)F061e>4l6oxbS@9Yii^USOJGh$ zbx1T)iN%Pj%@N3OO3d~#BNgJ*IS#&l885-);{2YfT)oCMGf4Hcz#l1+?NuQ)(TmC~ z7*Q=oo*BSFYQ6_i4e+ri&xOdPapB7X%)a{U&HC7?RUBuV)ajT>L32i5D9h^Jp*qgj z(0o?&!5Ys@UU?Mn>2bwg-%)niGihvVy%YPZbg`Oy)g+(i={MhR@cw@&R$J28FD>&} zA5eBKT+-^^{NvRJ0f<#2jM$XwsvBcI;drvC|5kGTkaxTE!AQmL-rc0kg_gR zOsRnKjFLBHyoyPR3!!SV;xXhDoP1!&l&yE4G>o?`+KWerx8dHMF%0EMHO*)!SBprJ z3fh(sn3)Oi+C{$9B$xL2a7H|g4ts<{3oRWM;%OcJ-XgSE0B1NK-46lBm^od}q;|)v zQf+Kag!tMM^Ks|UiTKtXU&)`0J);6zw_U$J3m2C11hmr=siOpOhfD7lm?hx;X z>yB`y{ln@t&jz>&&8Obf%B=fMSdkg+drgj=qts3I+*TUROEa6OL^(eYAF(w2lvFOG z#1krsAzUw%%O-8!RKcQni(GHabE3pt!_s8{*^v2%nv8Qv$D|>>>QVBp9;I_J8&(K( zNh823`p5C=fv5zyr^qMRB`pidHe3EW9P*id`pVVy8hB>pB&D}rmJ0}VS-3~e&E!eZoX~4VYNRZKphsJ+R`^?soGB7ifgm97&&X%je8}Yx zxMFh1?)gww+46{(Ij<6Sw6c6*xGEhknWbHb&&t5fS5X}*!frFrGTTOKb{qp47dof6 z?9xNOtX-)I{lQqmIC%V-fyPPDIGz(j4yg^}`M3IJ0msm?yV@&alPoLC)?|qJA80e~ zNeFG$U@3^wp97xkX~++>koq`pejM?HF12l0iq6ub_2l_~RRSTZMxYo?S6ZwDTEt+{ zLh?c~psa>$L`>&bNqv)<91Jia8I@-_Yl0_mIQjKK58A_epS9?UOtuZh5yU+J6Z4o(5 zq*2G~qPe`_OLUy{UK){VX%M@aF}i-c1-m^4VVV$x?2taByW=plK(3+9$F-$(l!P|= zzVB79{=q};4`ZgLW@aDKI3(}uwOzpVOLd+cFx95ovjVi*3|nuxp}pZBTaBA_p|=e= zfh>Z`&I{J!SX<dJaO`VpdEb-lD;3i3+%~hlSNfO_t%Z5O9@Z&yi)y?Sv*vBRoDNo_x>uovR+) z9NdS)oQ%lN_@mQxEYE1DPJwNz9R}DA1!%T1Jk1jfy!^ds^K;#XK5MtbD}X9!ggnzM zilt@J26|`2rTd?4GwCRyo>~K(%-%O5fJx8=Q2|t`mW4`{R1Ol3l^JvnW=GTJ*ZRJ7 z0KzaT8pKOQ2`(yBDM2F&)ae@WB)gl8(sv#UZ@vCb?@PIg*rGg8WgKS4!t17K`09x| z%Ki)9UYlyq0?>5jWn#|`r=XY}8s=Y}u|9Zu!Z>}%@o9t?veb7VXG(|i00vV#sgXSd zxD?q+tnTqVGO1FMeI)_McAO>Gsfaw2n({cZ=TX~VzeCiVBca&04nVZg<$Iij?2}y< z)9L)|JT~GeS6a*Oylw2CAKK~tLAhd!%Ees55mW;H$>|1`(Kq2tvD#ES6irA3Sa^5T zYY*mktErB)q9&ON^|Sk28IOpc(xT0e>$+a`0+_sxG`sT=c@=pjrTmx&ryA{x#SIyY zlT%l?#=jdCPvr@q!jmh)%dB5n4VdSU@q|sDi{?co3*_R6P(_J-Evgv_7jfN1=m@N< zOvB*FG<0TX;%kqDKf7hi=+D)C^RU7(sEPvFVV4`u)0r-sPS*~nI?+@+c;jkuo$vU> zApxz%YL;R)RwH>S2>S^)+_2FRzxq@3OOI;yeEOf zrNJ#OeZY*SMYbJBskJa-MBZw(a$B6YDAXeKT!5J8mWe1polLu6KgrKFoq$_*oQ6Gv zZ8$9v;=%mb6W2en{U-V-gUZGJ>Febq1=LVkai{r}FSNxjVqvy_Imgt%>A`E&8+;Q_~o5x*4s1R$KYSG9y=`TMbbqz*R`R zN+74&u=`zBs8SV@xe$)$3REjXmc3)Clme8A!F*nM(~%0Gi zi%-~syGkP~Km5?%ZxkGv*zK?(!cQ|w_j_^g6st|OLj&6Cwk0T9EeFki z6RLmJI<2Kx&{PZ;FN7GrF&o}?Uqx(rd%J!HsgpCo$k$$ApmVy3kDs^-C#DCnevdcy!QYAB z+_Ku|l~Km)?6Ly(7oRyIHmkL)7kOEayv*ZNdqLT2hd7Y?sH-_)tESe_I! zl9td4ft(Z?wwQ)4IG)DteK`|5lo=z*xQ2vnMax53QTB&iHI%jiuV7_)B~b70= z$rLe{O=n&|CW?ce$nw;bK-U5~nVSp3@~A5cJIf-wyAf#hG zrrI$Bv|6h%M5sD{t zRiqxW`W{*?HXh#QZq@)vD;EoEkfM{ht+l4Lxs|W$sI@2n0B>Wjt?!|)sv>OZ;>2nG zA0AF0C+I(E06?k= zwJrS|EQPFS#ovKMeT4r3I9Yp`gM6GEo!y0f#AyEuSNLE1KaaU+LI1_#;UGr)-$v=H zs)M9m+^j)-oL~-1Fh3Z?58;IH@CpbBu!Fe45HJ^*n+w9t0TB@9;T8siLI11J{?q1W zWh1O9Blo{_{iDQa?L0i7!dzV5-rk(vJe)3Wwp+> zC#V1P>%X|&Jv6QVe`fq2x!tvWq1IfQ*6uEzZkGSX!-npEg#Y>O|5?$082?!#tmbC_ zZ&1t~Wn3&hovfWb6lKI{|GnX~vbPfEg>cL9@W{w=b900F1tAb22v|stN19ifn@{Q= zDfmAa|0h`)X*qsDZU{Gok6Q);kp&Av_;`e5__<{y<^G}a^8SykqO-e)xwED9|LC>< zr&n4)TJj%{EQIf${QsS-u(X@Cxrd9Jwu_77|3rYgor{NyyPXRZB(22@QZ=`eg;e~11*;(sTPwe!D>ar>7Vp-r(#|1u7suA(jbFTJiBn1AWxjR+w8mPc98Lxu40 zv#@cfHXNa#pr#z$Ka6re%qmaGpdTecFfcHI+>vm2+Se6iKp?P;1OW>R+tB2Lr961i z3Srla5C<2R+^(KTCSuzMbw>;7_1bwv9_RH)clhRoodcXrfbg$0Ga_hLE?+cBZ(5@g z5E3CVS}F2FaExk^kdX2|8PXc0??s|>s<_5})TQ_9o6^K@Ms(74W?oY^YRrM*Xe5$rXyOdO*=f_z~Fw6BX``4FJGBS!SpC(JhC=n4!q61{zog4(BT{gqf?>(J2C8VWiILVS)iD74AX2rw9 zM?*swim4X}8(ww5C8MDHsgAk^MWUx?qyo_Zfb{3hHsdNhL?k3F31B3djEeIoyZI|T z0s?-kWD+6A$d!xxzez|)C|Ec+ezPZhKJA1`U*}Y@Tu1l4R&LJo2qLt(&@eC%5Ri_N zv8GBnP1`qMdk@YW6C~;Ro*z3<9vnI!^#?PPoL6@;q?9c`TBqSES?>ry7 z-xV&+#Su%E?A-h2ml}g!l)G-xBoXeF<%%J!BMVL?>nqC z5Dsa`94WI8D-CGOik6j`@okZI%!3jYN4~S)5a)e%4Lyhgiv$M?BN-b$q+@h*Sc=Q6 zKF6AFb8n=h-jSWkSpkn*t<}sO0Fdocl#$f-SsVz&_9575J)@^Fh{8eQCdHG(!xO+a z>%mP@rwQQ$Y04gaK*+EvCx=X}2D$V09fgDcS>W1T*57ZKk{6~=41b@O9J|);y1MUv3aoW- z4F`77)XU#0n&5Qkj7(@PVBl6K@*)Btw#U&Z5ET zJUX1nob*Nj!RMF?N(|s7#|DcSv`8#$BP|ddkjt_GaVOOn(z;_58gQ*PB6|E`g3tk4 z!@Hk^XXVe0=NMY7Gwln!Tnu{I9qD(XIhgVnoD!0pn``0gnR?&u-6itm2d^68nV51o z(zi*cg$*ZAU)OOo1F$TCr504ch3o8AfTp1xlS+K zJGbrM7{rZ!`;KNqZvYl{XM73HVYHkr3{Q*=7yqevZJFt{dPQ*S5pic%^0aAM9r`tP zUGzL7Vc;AX~cr<{QNimil1lS@EA)gF3c9&tI_JBwOBoXA?*`Znyy>X({Iw|dUJULtD$kUFd~ii_s_O$>q9hld?6ZYawKVo{ zhn-4AbPX+Pf5SN{(Ub-VLyn62+}|$=Gn@5QP8+vdqTB|*QQ@w~h5N-~mdO3P(#zmX zKc)_4Re>7t3P*(`lr65Kmkuc(A^IZ@nGf!2Pj_QwC<0-|Adr2RK&HkRP3D0@g=M81TiZUUc7hmG~X>PXyB2()YunYIZM9c?YKjN zNW=*ADo~OJTE@a@TCcXyNeC!I2&ndrGz3uMqoZA4bhsyUa|pE0_tPv@(U6X>463DM zChMJ?VHuwTax{$T%<~jd6s+(e%m(A%T7NehEY%1Nu zAbQ`#&~AkedM9E=LUkivc(}`HEd}t5MmG^WO=K|8;H9v`dk3Nd5OSOjxzSK^vv~=& zgOV+<4vb$k?`NYo-Syf3U<*H?Ip$wl@%Z9JhI=VM?2 zdh8JF=TU^PD7S4(r74U$;wdMz5`J*A0PS4ieK%`2q1++G`>YZxb;yp_o?)W-Lv#v< z(N^9}RVN$Dk0w#5(L;%-sw}r5FGrwjC=WxDYQ&9K_>@;hZ<@j#9nez<_)rkNyeCU5 z+>3*Lr{cB_^c6rC;>>SLS3u!G{E=D!n?dQX>@!dP(I5FlX{J@6k*uZ3l8pbOG(>Zr zk)cqJ{)%Z4s5jw&_O2z}BapvfkDx~PVgiwIX0gYx;DH98Fs5hV-v@9Gnj=M0YHno~ znSt^1FDam)-1mfVzvEa)toXhZ#N#@huG_rqWO>0OOPwwzjhg#>x zp34@9DBO!`8KPkc8SKP-gUQFqKs5>h^4MXqR%WkK?2K+3d1DM)t_h!pojCClp$|UB z8y1oo_@R=xI3WlHq)ArvtcCVN=Yz8bwL>YP^iOFimJatnty<73$Arqrezf7>Yb;i2 zO616R$R#b@aPN{M1I+_|e`2D4~b?Jab zgmKD5qinRR-8p+In7%RVw@vmtl&}`$#fXsT3fiZ5l06Iiqar%4m5fJ7C zK!G7E1RR-YL1FgU&puLe36JQCDRaB1D`Mm*KXG>qs24Q#|YphmJ&= zRE5l3f3pG2ffC2OI+RpF-CV;Q2u_VR%s}i$9kA1bN5{4EFh-3 zcG7Sid0fUCty!{4WflRh3~eKtDlWzXOi72M1WFD?Eop^uVFJ$SBB_gi5{D#KrYgv^ zO3+58Xu!CHnS?ZxAr#8V!Lm1++F?#>3=B;3JcDY=_du~_aU$zj++NS=VmJnJU6N() z=V0`kepn-Bx)KP+mb1?NE|=))VW8z_6zKA}KWU@?@d4LpDVZy6ekICEk(4YLK) zzTX)C6xqw4#4#FkJ+bjagnFnwL7hOqsC0zLsj33$a-c7mL5@dQ3I5m)fq*_LJb?jE zX=>K!-FTx_<|c@{H29_6RTnh7$tv%K&mJ$eXmK`UKe;7)1rL5DA=k zlt*KTV(MW3=K{-TpFZN1;@w>vpg-nd!Et7yjG4WgIWI&GLsak{o%C6zr$O?8FP97S z_>8)GrZy53%)5)Nn6J)EjW%d`jtbszq3@>VN_Isc#{r$}o_G>JmXkGRMBV17l!+=U{m=JXmx7wBB3)9J6 zzxKCo2oXicP49Wx5k&Ycm`$a{2ppatGXzEJ|c zm)9|cJUEVduRwmrMu?o$_mfHG=%GxK9f4H}12)OAG0!{`djZ}8{3k53JS}CGDAf~)rP#Pz% z=A2H!M@rHsGZSSdx9C!Vop9w-lALm7fnpQ|lalTNzqXB&RfadduGX_)KZBnm(HZx* zv<$XwQppK|Og7AkPm%1{VdyFYvgc&N>@{k)QO~fxG_0BH7YxKWgw8GOfOC}GzI@hS zLYsKl%k?VMB&Wt?Lf9d$;c95m#F!;R)_`3~fY=@fL@XbG41Jls zAgR_t`e7D*j2gvU(e&eDU$7~WNff8kj1Xb8H4okuRbwUZ&xGx?XecLgNKS|ho&@Yn z+5sIM!x4+Y?r%kTb=%=ZJELl*$MLD!a_jb>fEGr`S;Ebg*p@>aC32EnbtbXVTzq1dM!G~GM%XJTLIl4O zVa7!V6v8V$ykh7XkD!&<;?*iFFCRWL1d`Zzb$g6+aCOu={;elYeYw6_Q+-%@C3bGT zDlaetzLu+#Ea0VS^wTO3M$^OlMt6ngwP#Z%&|=L@kvV2La+R0kCWz#1_hA1hOP!4{pT2n^sNPXIq*`7~Uee6EJ46d1#6ph%E z^vQ*2FY>g|RHC}S5JrJYbu+1^U}74QHM|gb+)5IJH;h+df{T#%a5!r^dK?DzRqMsS{qeT*@kiL)Xk zQ$o&mXXV=He6eblesw(9tnKQXecgiAsHQI4VFn45@|ra#47!pwgGVAOw0W*)ax;Xf zoJ!G-Zv}bm{luC1>CBXaG|hznZp>-T*NjmjBXAiPZ4ntyDM`(273fS=R1mVP(_lD5 z;48~vub+T}gdizGjPa;=Az#2Eqz=-h50y9%dqf*2Kya`?03N^<`J$aL#lj0EfKP!W zPjExV)1~9;NFNAb@I%WpHD}${HhXm$36aSa2>JKZbHjrQeKVX2nxJ}gd6taN^^wQv z8fELmo#rF83!MN4WHsBhg-A(ql~FsvF`mv%nnVS9$MfA+y8&GJ(!=-?XMJw+FCWL6 zL{3{S$JowVEIB{^vOZn1#!C3a*}f&x{j~CmE+Qh?n;x)QT>C8|fjdeY^7LvggzZ8wsCp6|NYS(- zs{IZl+fRjWXN&3lP)EGs!}bJ*?A;(zhD-k-VajY2Q_XJP; z;cibS`1P@_ih9B(VGS2;U1AIw$*dDPjxwRbm_4R};LtKd*OP?cRJ30n{&>&sO|FO( zYDdA-!9vAMtyc1bwn)9}o~K=c!kl_`EB?TxqZi7))D-yC_gz0TB2zEL5_b@KMAJ$ zH~(b#A-L@j$X#zMs5!Tb_n=CrLic62jaa;;{B`)I=U#@e5`&)SwZ$%MdQK>sBCHo< z@huxSrgW-~9_n1|oogky(Q8Ba6)R3!6Y8ZzmrUU7AbF1;w9bWmbtZN>l3;ze9Hw5)z792OVWyzKUUeP5by_OvxZbSzW9&XzUPHO$xAnPs zMW)vZ=ki~AXqvTw?!xbda|+O_W=eCs3oysWh*xBsW!f1&+El|3ORMYkmB)cg=fFxV zzwc~H7#@O-i7T}mJ{a@o<-S+ypwC@*Oi3f~V4Sf)ck1Wn;HTzKQ&b4>(B-<5n-jh6 z+O5H(YJ;}x%r)cY#@AnKCZFcfzp|xb!@Oic8>s7?5LRhM$2ydL?q%lm;;cVYq%XTy z&VD19`jH#iI5AS{@iD^ss~(yNT4!%|{R?&NI zY94x*H<(EhM5rh_ovv^FPh0)|qKgcfG<#fbJER5$9{o${_NG`AVqIywwh_n>ELCy( z;1@vas*;A7lQaE$0Cf&)tdJz@fTb^C3XZU*O;5#vXo>Z-*+t~r{X(GSoryTz^^hn@ zp8n@9c{~IDoe(i>F{qPjuqx(y`qA%NS}bVV(y8xDj{hyYk=J&zYYnGUM#pt#jZoFsTO~Vws(XT;Ne6_pSEs#m6UrAGIMg!xxezBa(({OpwhJ~;QiL!B&)U> zMDdjk{jHaJ?jA~u6TPKlDU^*Wzf8Ga^ifeMCV5tAg6oVAkcrS+;LfTh8>x^U7^;k2 zYO!!u6C5u$=b(n4;;PKJ5-5;jHTPXj_ZJ3V^If+;_AU(~GnK335*FM=Df1t||be)2)L5Y18e_!jfa?`n|B^_~ zB}q)Jw2c{E6$rsME86PK8+%_Es>O4eb0iQ7c56YD8^2;h`F0aM)wEmC>m%$OV?jW& ziEYT{ha)prszIoF=1d_%q;e67>Czo|^fR}Tlnh8AmUaq zvKA(&{)02;dZAp$Wiq(YdLo_gb6U{J#jf~k-45f#j*fP9_*e$cJEcWoH_wM zMX)*#Po6OxN_=7`%!aw-qwn`ZjtZCw99B+5ngX1ReMxj!}1#J2g+(8}T z`tjFB;1gr@TE|0A1AGn5m%Yp^T=|CvY#`#ZA@yussUgP|5`ay|SJoAp?aQ0CWq2cRAoN=Ya^GbDd{)z!0n{Qs* zp(FCnOcX+|O|&k6kc}1DHm;n+v%CPc2;%zEmy?t8!RN@JAsWh?CfRo-Puvy5!>0>`Ff5b zvADG4pKD~~3LOi)i@!zLQIe-h7wubk{q~3Yamu^vW?CA1rQ_{;TEgU$GCFOm=ix8x zKMj?>P0nuPT#)!bP71^!^sZSLcHq>}qHU=j!K7wugZp%2y$u>zvmF&Y+a#Tp0UNPE^&9?yI%7u4dU{s2p(wYQ4VXo+UlFSk|{N`6YuOExgm ziRk$Q>C5~|6T9zYf=mLe3GTqVMuTdn-i66LvT4vF6j69!gn0ZizFc#ChTrYf5imr+~I{*)6@L=2%2T+q;f zl*hz7toa>vr)#!enhACx3gV2so}Ny5;xi^nW-R-iMV472aXqYYgmo8*6+lQ3iwu8{ZQVvhDOdn$ME)7V?dFeL8jW6QHM;YA{{u; z>qIg{YOJK!%iBvYWQ8U5c=V!!6}zwF2{RaxY}f-A`-tu~Q^wq9%?|4Hp9LISJP*?k zQ&W5ShAX5y@W2hpN1ix?Vw1k~fy&9BO=aRf2tW^Cci ze^-;l&sS#(@ioXWqCORU3zw3>(*1QU(2H-T;_yiQ!~Ql$1K?&c#g_Q4&3?DY*G07& ziJrq@=+)~`8=%=)yt+rXa>?X@X;JA&p@^qEYB(C;v_vE~;rW$fA(S5BX>ff;Me3D$ zm=gJSI0YFAUb#40tn4KTqW+_NtJxxYxh!4?v=Z;#2mjsFr>>jF<`2R9p0%3TCNI;I z_o(K}&->Zpp5A9I&tFe1=OmklKq+<2)fvK`ZsY6eSx`O1`VXiX39e}LXNa~~3BXGz zn|&6wx2(2g7Qk4qw}o)wJpmkzk=ugl4HYvH7y){HM~8D?%5q*rJmG?@VD*J9d3e?E zc3K)ME~>gK!=4~szTFfUn(cEvP)EM|LbSYLraT@+o|>BfF}`Eko$$6{Uu%XMYB5X%6NvqaD-ZeA)J+Oaau#d$ zLaCfDmHl%E8*nzc**ogG=#iEs5IAc!!w!YH7PPnf?+V;@yKOF{_y!wjVHP)AL;GFE ziklj;soX_cZU6_VYs6-)(Tw^AAk@g7+mY9>xOszajY~z!7A%4o*%aSeCoht%RrUSC zz?#mcBm}8h5U4Oyp6`x_z7v_KvH9ixB)7`&=A_xhr17v$B=ICYlnfD^F6t~73!k9Z zW;=D9;|mm5%?wsVZ|U#tO)XoaawikK+&FQ3!d(_QUBgiL7^{$idZef&bVSR!V1ilG zpFG2TC7L^@G+B#eE*YmmPpKQxfpKwju_KQwk7M`1-*|qygel zX&=ICND6}1_g>l(3EiwH4A!6ilc}W`=_#1TY2P~zS|>_TB9(Ew#Ys@-69Z578^(&! z@DwodQDO&@N8Eo_nY7>9ia-6eOcZN6tfQU?x;V`cDaMHu16ck<)Z*`~-P%yCIYtI` zcRl}M5*86j+!((8YdKwmognmbGFoDUR8esz_F)IziaP-g2}Jsv-0H%2sfit|?DbAy zGhb_D88M?J=XX^RJw{9W7r$%`dIDg%S|z<(k`07{55ZDd1l4Nhu}<9o>7+T>>nOa+ z`{(g$-7(MtkzC%Z$LHXC8h&5f5AF|ph<;f8*am& zl!7ppdHoUpH9uDe+q(qfTea36o?90`pW%M4&R;L*Y~Al%H~*LlMS^WUc=uyo0fvwe z>TNE~_yDbeLyZ^;qM=Jv#a0K&B*_R1)keVJ*XFxu(Pv1j^fHnXJvXF3g>J)7!Kp+i zwHG?w{uH>g0*V}^PktSCawrdL>(M1G*=RF(P`aI%WqW+u97=coD|E4poHhM1K7a&sW&oYw zqHuE2yP+gX{rb;z0xeG`mLwKCZHVIn*xz`sKZ`T?dWI#DXsDiUoNDE5zfh!Y=GZIj z1En;@y3A|G;l;&Wfx=jEfy~gCuR3ej*G@Mv>R&BkEG%&44ts)W5u}{cWYj+R3tWmo zj5*#6$kq9Z(sxP_IpowjbH~D**_h%Jf5J+wYk#C7v3S7t*Ow>P-KhnHf|loz{xoq6 zu#K13)WN%OK1!juT1UlNYjUPZ zY&%(G;Jo1Q9-@LA`=+o}lyE@mPSL=eJ;mH?*y|R#z^Q*#NjB~0pk4GVmIw@JJ*h}4T!vx$U9or& zvErt(t?RH>*dQXE^?@Hh*$^Oo!I=RL7<}sPVfO9H3vbSN-7iujJVpAPIr;I9pUPxy z?krOOgpaRUaQd7!A>I;hbV;lGm0CV1uvO$kZ=&i-IM57~@LrzkGb0D-Tcd+v(9>0Q zYHAs|18LH?-|a!y!%H;oKLHSm-xlZ=6TqDvVRaW zzx}Qi40fLqFav{6_t}#p!@^(~!01$n|8N{fm;^fgEZ^ImXSd1#oga5rl;qo5#<;}P zH!4-aE!I7970*Tr1CBWLlmts#ikLwqZ8ikRa{>H^7LJpY1_46Pg6ci&z{AylAuX~%Uczj`PM;09z~&pJpGXTS8) z+QMn#Sggg1Vc`s22aTbPM*-xIM9vzzeyo3EAoeyD{c&}gfiY5h5$_BTEMvy%soO?M zQMe%iXzKC{3br&mx;VW&cLyiZr$i5jNg4;D>KwVRr6sa{B#+ETPCO%T>?-R36m{kz z)LZms@SHU?aoU;Gu5TB8>c0G1W9+jLaW06wwo8CJ)9lWfy&VB3u^J`QjPdV>jyRSj zqo%9B4{xGATnaRWwm*<$wsvjnbiNd$jF6=J@oSYE-u%()h|EcXD>D}{*vZqc0%1~| zeCCwH$bk%BMHl*`YOx@N(a&m{G(|#Tp(ltj0dFr4X;_;&EtfG z1vux0?FGvE#DV0;KdeOjtrD5?`5Us4uwGgc+pH$)2a!nD+hokPYOSxjJQvpvD;aLg|VoD(qK5L=Fokkdm1UId5_QGi?UI< z!=K7BjtUO=>SILE&$zeq>s6EC7nMc~e)|RuZhe;6YS?kg6{5jzcJa5LFQ>6AfTgfk zb)7&hS^Rx%WX13}7nd`9>F~|<(1e79*c*JV&ig*xVZCLp1P<4T5J6|3EmegD2c!98 z_M=7r$LkNUxtp`Q9HhR_GS3%r=IOh8^bY{8Q91gp3%VQC64()6$s-GkW3kES4@gDu zt{7FO!S}PDxVl=}2?hoQvul`E)+OP98LzvYVb=d9nz5nzP*H%w$=#WliIM-lk9~BC zBB^4?n};=$3;mx5=xwX4&x8b-Yz{1i1jO~>km8ErOl43R{q|+l&jNf;5k4Nih2mp zbD=fBQzewpEf0Z@A@7!J(B=!y+Z0jW)!c-IE3+xNOQ`7VQjfM681n7@gOdMWE zzM6Ct@`crI{ZU)zcW-|C3>RIy3QetGfTdlJ6-{imOf3B0-T^``*AU{-b-qsZm%{|K zbvYyC&(ZJ*U&{*%iVKP(VU@W)_lCy76!_KOd`{*x?pK!(sfdWx-s?wl8HR1t2Cyi+z{0{X)D;?-`q9RC}yv$?)mvQV?YRe;>-r&kOoEg zYt}k^-TQar$(_Fmn;#8wz4uGbhe2M~B)_+%av@XnK&LCJrK7y=_@)+5>~ux5_I!BC zA`4}MOUE9rTDTNR&4^c_rsFUlSQU(!M3U(_5b0NWM^$x|4NA=hck=b-tqXp8lRH$F z3(jCWq%P=c5q_t0u9!0Y{`0>L@~1HDoXjaRm_$M@r+Y|}F6H71Uqwyb#nW&F+Ppxq z@Lr-SDK~U^aNe^&WzwCYy~jr@k7O`~;pd=(EZ71u1tGMnNvnia?f38B7{40??nETU zD1CYPR4eSn7G9SPwX2Uz=p6*^nrcdoHQu5GsHmH7POGTdUDbPht{A5)cktW6eT#nw z?N*WT9#FpHo~sXReq!g)ttnwfjpbKi7kJ-s`N-96jwRLGQS+LWbu)W z=#Qt5tXp0R)?aP@8(vlay@}C$!W~3JBmeat{1dj!r`()(r?Mp8@G0cGLg3x_VCrM- zlYw{9%MRmSREwSdLZE{%$;=(KGP8d(7kP{!ga1Oy6;>n>SG|y~zI#FS1|GNdwFV6pn_yS0|>O7=Xo7(ICtx3T}8opQ!jt8r`H!wrs3@SKX3g_TAqAPpN=9Ug%|gu0WsSElbw@; zgN&wg5TgP5dn!>M=>B@_XX*2@-GhUp5A0Y-R-zraZsJ>e_2k5b!Qr z;gm>fuGT$wnU@}Qz9&~-#X%#Y(%4lBuKViXR6P}eNP@aI@8y@u5(Ynsd=x&+%v$=^ z36jzL%Y(T_#3?Af zgGrF(fLsTzwR`fT-M^Y_JB@>?nIaMej0;kmA#}-~mR5?%Ea_vc5iwmHD%#$(jaJlG zHrs608;M67a;R`d`|QyLxCEs)&U?dfWU)*xo;y4R;w(|J>zr5bJ)?Ig6K_M;^j8&- zDu|Ym1(SxxBD)G|rioARzE>=4ATMgfcS; zbq+51{Iy-^67+7#_Z-o z9xEROuVsJktV6yVlDbg}j899vXW5QRphCdHs|x_zanRuWab?h9>v{!!a5@p&o!$o+{sM@4Z(+BploMd4U4}Ee*MwzE#MWO zA?zT~74jERe&Nr;^!0PR+A4nt=~_7Zn0bN1G?X=G32ErumfZZJ(!>|BG~Chqr_d;Y z01{?MKN*V8cQKNH;!}d?B2Vk3-mg{C4BY1G^ZiRR-nqHR`V?T7t_M}`b-kIoo2@m| z?siw*n_t{E6#xR^zApQ_pKqsS)XV$c%YHooXF2AwSOr==uu1vH;N#x{;Lavv!Ae9c zfqiaTG7O$jBoeh3AoiNQgAoR;0jjQ#q`M?ze-ed>|4EJ4%Dtc@>6_}AkIi1bX;sdR z+gfG)VOgV9g&9slKhxft&ta2ko&^J)f}&}Ux?r>(iv{}t3oX}%;%9fW-m9Kf9#*nd zA-wo$Ng@_mb0vB%CiPaEU*CX}A5H!mHoIL+D=46hJ@(`02E9Jm?zKy-vac_Aw_HFi zrRj<_$H~bv{+>AOJJ>CAzha9E-z-%4)QW!Dok3^9L#+fMnX}nMwQ=}iPbt`%66(0w zHHxOKToDzu8)SX0!75}!Wt9E=KIftT?cqt75ih{SMpCcWi!h(v@NISOX9ClfPSQ~K zyQ`Y05AT+don3VGPNwRt<3}!b%)B<30x^FkJnd0e83@ziST*U*)x&wv;^t850@9(weiypwof1P^HO~1JblX{ z<9Wb~CjM+*-|186MZl7Rm%Vg^DORDx5K_gzj$qiYRv^)Uf?IFY%$*V1le}^nNhD~d zkp3a!w5Eb?$Iy3oVlzxOqeY5kp{CJ+M$PzsAl9^3f5!j*ymBbbcBAqsVam^UzB156 z<^uB^6|vsp^*J}2DqA=VNbpXUKx0FE%W10ai}Wp=qR#J)sC|NyN?wyNvu7v0hdQY}(0zzf@2K7_FGQcsfzaSS0Ls%6LxuS~ zoIrygO9S5i#+Rs_b&f{uVM@PK?$7#xZ{K#MFYmIiB!!=%%Uu&NF{5HFkrZpI?ylH@ ziIk`o&27T~iTQDHifc-={jRXO8Ve$ddiH49+5dbLX@67@aTyVh>^|{Am&N~ z-2%%+V~&rvk&&~qk!R|zA%Jg#s0Yl~#VlV1xi%-W4lvlfa-?jTiQqYng#XwZOipAC zx+8X2TX`C=)gqvjgwG(9&^KJ<2g@b1ztfVKJ(fCPc(Kq2V1#p^SX!+0b;Sf`k)KCH z`*-cLo&di$>|uo!l@6As);p<@2G%7s*=vgJOt>-CyP?E&=fyeTio>G5Hb%ahuaq0J z1*Kn?Q7sM2H>|8|5cCVKeE4%tYwN*Y*Va;Jc?wWKx~|HPOff0f*3E=Sc(Kl%9izqO zFLSsaIB3yDHEznLdQN(JTd8ARD~v=44Go7||`-*HJ8fJQYr0<<5h|-&@@M1}2*B}&8 zie-N@Cl_m9YiXB$xFp5?)Uly&jg|sld{e^VET{uLEuNHpD`eek>)O1X`gL+WU&f%Z zAI2nZX6G&|k#96ik_~mHshRwq`!0_wOtS8hgE`neO}^cqxfudr@k9;qg087o{bMG1_WJa$o~3 z;+yTMwVmI7ett9Z7YFp%;^utfg_Rb6p}2Sx9B>zgE1g+cNxf*kI?fs9;L<9A7^N-7 zXxTajL-TD7eOitKMbIAA2UM12r{og`*#y~#JnFQ;|FMh2A}_r;I4yc&7M54<1ILlPE10RQLnh=cJUF0Ul=j6l6iUf&h2( zv}npF`H$=59q?#H{!ghKm|5hus*c%$uCxjWmISfE;=&2v*`@NWh|X&2W#LKiwn(K5 zDwz^YI`FfJ0MNo|>GdB0tL2|U&{nxp&m$Unnf2Ipb#9(5h*5`3S`>dB zBi)v&p&;#cBO=kjH2#9CYFudr@$T(9f_$lWv;YxJ_2=*3)Db?N-)nQGDb7u{;d~D- zd>;chs_f}nL<`UGJ}1g-wRIFNn|3AHKGG7Ru8ZkDSVV$w5-Zc|_7LP#T#Xf%O7~^3 zD(RW_3r7R$Uuk$u9siwFrRkC!`~CMsw=+w-G5F-P`px0$%|w*e7POwq&)Jjgd- zXFUkNfL!|DxzJRv98X5WS3GwSH(xL}dIY)om09y>BNGi5Tr(>I4H^|mkBDOFdnu4Q z;iDMd&IBon9ufQ(9#83)NnRL+#09+A_PqHjZ2i11<{Gg;A0;P-KQ-iKsxg~M9Q2|Eg+QNVPKL&UF^?CmZVFixRV*M?pVWSsfiHS1U2s9 z`GQ2Z#9&29%H9c)Bpt{_^3mnYrP}^f9v=}8F1OBiL#hXcQ_PV)FW|J%Hwi1ruMdG; zFY99elE`_g3qo8~A|*iPHuDW3l@jb%!mt~y+_0g`1bxjeBj4ytNFOKug|$ERstFT? zeN+j>OcmsyQW)UnHPIj?rAC?bDRGu$gNMU~NFH#xtj#X3C1#ga9_LrJr_@1t!u4>x zRN2;UR+e5*1;19JKGaQoN=(D|FzP}pMm$O>+pr7w4lR~SDBV$R-j8$=1^AvBwof$>49uc2g@hr`Sb7q(H{na<-%EBLQusE6(u5^qb)YpM=3VRQ;-%VCv1gUQ znLgUw@Vy)kk#|3BJMln?m62WPr=#h8DnVaHT_5zp3VfHI`tn{C)z*af`RT=8&R0h4 zl7mqts}6 zUPEIp!TYnM!Yr?op%(n343uspj-z7lZDUCMo$q=l>G>ZPUJCs#CPX9%?ue_w2$>np zj!NXm7`s&GbY}`X2fE+$q%q+AkAlq}ID?b4MdJ!WY>~f_HQMR1ypepgBk0)@>L2CN z4-bubql*d)F_AwoM?kb8;b+p5+bT`j0k;>ZY<^_6FWW8RuriK;7~D$wg4jA4(6@d~ zD@X`yv7A96u%CmfXj@E$nusZN-iMU=e5FC3;a><(2VUqh;%g|h*Y3Zk?K#rV#|ck) zAEu1D(ha!Nyr{zZjh?SP9fH!KuO#1uDzk$RO1UFT?0UYuWYV=nq{oq083bn4W22w$ zhX9Du63yXc%bV$btiqMICsu8D-l^tRz=}1`Qwxls%*ed?x>y_F=t26E&~17!C{MgM zP!&(9^zi;{X;GqtXd2m0mt2apz@dweuTU=8RKD@hKaoFV)&J3ld1?SRrS>_CnTet^ z)+EAL^OCsc)=|+^H!@M>QOT z=qIQ$sfe-i7ea`}@DmVw3%S$uLv?AhW~J$X7_iV=iB#juuojtQAQW~u_sAUMq#_{9 zo5KCDRaYQM_yF+*hg7-*oE1J&Z;H+8X!~)8YomW!f2W;r@D(>sw)WiRi_V`=vzdc= z>!rbu?}c_gR|FINR&U@KQ!q2A-&UzT&cl;F(WDU`Brgx6T`*@ODd_X*dEC0oJ>D1e zm6a!_(vXbANAqAzG84NvRr5N@gmeAA}&kp|YNq187)SFSK$;h(3L z(Lr?9C!KarL%gn)bAPBFQIzwhbExz4V~Ib^LDeT0s7_aSKw*q8HLvt56DP`aeH&%7 zsqEUMr))mhZvhU^sfl;C1r1$ny^XR86=>2l2c#G8aDaDk%n&zeONO`fW8Q`R4(}zc zZ>ubrSR`1-BZjX^w!r7I900EI4cj@e&LFT+SnT0A3givU+N)wnu~!0i9@5up#z4OS@;55+62gNqGoZ{0(F&*i zN>H1WH&?0p?Jd5;D-nh0*%xj~vlN|r?L4lG-bGj$Xs#NC=%=6n0EJwOvHF{g+i5Mi+zMzVWj zsOU{Y&fTD(SP;;`bNLNMnH zlYvuR790)%6+i>Aq9In!woyN^&OAhlQLJz$MyUR$NyTi@+BorvP++?9aph%)6JB(c zkx#Pn?MV_cpTdR^W(GTQMB{0msxQM-(rCZ(VLw%jP5P)BuFt9Wt5%`Qbbk^7^;6+V za?0;BOe|y$SuOQ2P_Y(r2J6>SwQ_|O7zU~*o%X|$S-gAllTQ6|!%D4lrtEZ8pz45% z9sw#URM=Y%29sFgDT{6%))n~b^Ikjg zxM(^~WzP-lvg8tkby!F`8;rp8qRslaEA8UhC9&P|;H+l6Q*=9vrPehF>p2mNr7M9z zkibB6AIbatVNm@HtLBaMu&E|?7Q_%BhzK>oVS(?6FJUW*M355#X&q}!rpR2`h$O;l z;InG1itX})H_xLewud)`;{SOk47M%SCW+L`#ts*pjtw_tlwAoA?P0DSP_ zvp{evRrC)Bs2Fw(T`cy*!Gg$~5si=sVf($ZQ`nn#6ALk?orlR9rhcZQk^*Z3lBXs~ zpkCM*jEon!6a}kk0_W3l?ER3W3jG1_3~8$3pTJ7~BCF)D1GACc5z&{(V6l8ORVtQp z&T}?84>6U|sm+bWiayhF+73T7VW41F&-a-BaL1Tu(oVRVw7J5`Ktgahvf|v>$Q%aB)22i6~R_sL?usdgZY~ zc65MKGSuxUXko^c2NerrvXTQoi55vM^dO1B2ZDfKVmApDtD=frCJvS=icO*HFfNTs zY9+9^L~sHux1m+BGuJ0~9P;2OY$7>+l}VWOSV&TD!z}jGN`^rvWRglSgT%MF6zfA` znpg`SD|V-;BTO1Wi1foSz}2uZgn;Fo1?+MmQtKtws0XYH>+#HN46LPlfgtxOTEaML zSO|m_uY4uS(o9k>!RZQPV~;HhTuP7{s<8Gp*jvcNt{eyi+uDH6fxie~_aOt^Xk6jK zK?D0mQByehDo4%wc%ABbC*3A0S}79c(->bb;a!K~NSCLExtxl{u0-meC#7`k-j-3& z4WLx8#SONu!p1ejyC!LvkKu2$IHsA{?@Gp2ECbY^CrN5$vj!K8ket(O1J?6XcTp+P zKo^H5IOX&u7RFKItSq(8#Jo|(4s>cJ%NE$Ao+R-swXQ1kv67Gy@pzI;#)BO7>k=^? zfVhfUFJay2tj<%b4yqt!IZSu1?iBm;D4(IRm>UTzjtyrmpfvg)nxkF@^|H!wBDP$B zj9$aS$=Df9b~}sl)SZi`FF>29SDJ-AtSodJGWD>cM2DxQm5OSy0E_u_x5I_<>5+)T zJ)_%SG0!$ESu`wT9u1*AUIM}nRAw}VWo=W~3Bzz&)PdWlUT+rqe>Q)ewSfa`tAX2~ zu3|_HnPRIXU6SHiMRAuO?hQSkp=sT4qPPvA8BbW7G-l-Utj{bp*NjrPAQ@Y@Nf^aq zy9ZDAJ^Dh5g|TfFEO`VqO2^$d!T>8Gy1gpFqG)X0oJ%77Faz`{8*UZ}@AxCO|EM?} zqlt{F!3+(yyFoV)jpDh2Ft%``Mq5cwKg2Kyg4!h7OrtEc6o%6h5?qHwrkn%4wdv>I6Q!X2=+sz zUbX1RWu3YUk=d154;U8PIZFpIMu8rm1;{WQ18x*bFUES5$||Kl7DZs#xhX;|0WlRu z?_%JU01-5{)B!b#0fI)YT&XFq(`gv8Aa+T^aUTWm{27pl!#ty7 zG!#~jnh`Na-ccgfXK_JQ)`=GFDO%;I+r>2(rGBWGZD3Srr39xZEl&X`^`mAzhB=d^ zwSwRTisCSOeAaH8Vqxb(^q3IQc6u)|*X1f1>u*e*S#^BCMy)KA2U>>6! zPR&w}IuyeIYY@yDQ;JT%J?$)_e?}y(DBVu3&OsZeSs|TCAhuA)VxDz@bGtRugIMTv zObknhR3L;sHd% zT1-cblD5;4LQ`r(r)N`~lO$oV-sUFDuAS_>WC=fCxB1~j8SuI&jh0SHG9Sjeh;nXg zc811n1TK;q6*0(#*5{l}!eC0u45H{BOwvk~>T@A+1>zE(^GKcX(WISB+aj?@G)c_6 zP-7UHVg1>YtS=}oh026Mt=HIvF}4GzIhEecVMPD@K$KyGXG+ZMFlE7_BNmLvtR&}j zo7XVlV4bPyK{njqD6E+|Yd%Y2V2y5h!RyME;q>^tNL-mZL~#s>t6$U&h>}Nv#9}dp zDJU6Pq#_WW5)BGF2dHyHo+!?KI*3`Qntyvk>mWIBi|oKVw}ASqo%}T{M~< z#TX`b5zy!|kvi;qi2_`bqv#Z;XIhmnF}h!zQk7V)lE`boF_Oh5_X?fc;c0=%KbscS zsx&G7Cm@RZE1n`XK`wI5)hf-iSYISPJVYsZZPE1DNR5&oo@h^&N2CBbZ&A!)x|Uj_ z+1u=p%m8VmSkO)<8d03f>A7L4#}|jBKorp<7m+3Oj4muzwV6lI+yz&X1yxcQykyZv zFyF_Bk#m+tDcRUnxG#E?62)0D)^OZeOi3%uO=H5LD3D?&fo4yU052C&Glns-I;2y+ z6ncyh3zrx$-lGo8yC_V{$fOE+5)O4-mkU4?3T!o-=_FeS(c^91tW^1OfRrkjOBCLd zKr-oQ%uAB-v5WI&$e3kf_i{)|QI@9Sd9^~g&3&0j#1alVaxp#jhWRq~NLTK>K=Oo- z#kGtWj&J3?FXs|m;l8{vT*15!m<1G!{cM(!QqZ-WR3rmK$#y?o=PHgM3sL;ifrurS zj5H5PT{l@YsESb3I7j=;BC#ARu6bXnAd)W;NGTr8`^mA#jsapE9{#B0&w}8D3Aqx2 zf4THHrzLi-xQazJD}i&4M+bsdVygZMN;MMWy#jIc+qv5*SF}PU5KIpv*i#)@I9e+H z)s*U-cpSOpyl}MQOkD_GQfVcr&X;egK1sn!2&$bmQ%6)@MmVz2ynm?tEkrSr1=GB8 z(LCzn%$N5fRL=gBzl~Cz6OZVXiz1!{q~u2<%0m2G;}Fl*bZ6FH@{}l`8}58T2>!nS Z0{|AVu5bG-AkqK;002ovPDHLkV1ikw85RHl literal 0 HcmV?d00001 diff --git a/b2g/branding/official/locales/Makefile.in b/b2g/branding/official/locales/Makefile.in new file mode 100644 index 000000000000..affadaa114b0 --- /dev/null +++ b/b2g/branding/official/locales/Makefile.in @@ -0,0 +1,47 @@ +# ***** BEGIN LICENSE BLOCK ***** +# Version: MPL 1.1/GPL 2.0/LGPL 2.1 +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# The Original Code is the Mozilla Browser code. +# +# The Initial Developer of the Original Code is +# Benjamin Smedberg +# Portions created by the Initial Developer are Copyright (C) 2004 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# +# Alternatively, the contents of this file may be used under the terms of +# either the GNU General Public License Version 2 or later (the "GPL"), or +# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +# in which case the provisions of the GPL or the LGPL are applicable instead +# of those above. If you wish to allow use of your version of this file only +# under the terms of either the GPL or the LGPL, and not to allow others to +# use your version of this file under the terms of the MPL, indicate your +# decision by deleting the provisions above and replace them with the notice +# and other provisions required by the GPL or the LGPL. If you do not delete +# the provisions above, a recipient may use your version of this file under +# the terms of any one of the MPL, the GPL or the LGPL. +# +# ***** END LICENSE BLOCK ***** + +DEPTH = ../../../.. +topsrcdir = @top_srcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ +relativesrcdir = b2g/branding/official/locales + +include $(DEPTH)/config/autoconf.mk + +DEFINES += -DAB_CD=$(AB_CD) + +include $(topsrcdir)/config/rules.mk diff --git a/b2g/branding/official/locales/en-US/brand.dtd b/b2g/branding/official/locales/en-US/brand.dtd new file mode 100644 index 000000000000..e377c74ef5d6 --- /dev/null +++ b/b2g/branding/official/locales/en-US/brand.dtd @@ -0,0 +1,4 @@ + + + + diff --git a/b2g/branding/official/locales/en-US/brand.properties b/b2g/branding/official/locales/en-US/brand.properties new file mode 100644 index 000000000000..295ceeae2f5c --- /dev/null +++ b/b2g/branding/official/locales/en-US/brand.properties @@ -0,0 +1,2 @@ +brandShortName=B2G +brandFullName=Mozilla B2G diff --git a/b2g/branding/official/locales/jar.mn b/b2g/branding/official/locales/jar.mn new file mode 100644 index 000000000000..b9ad682dc04f --- /dev/null +++ b/b2g/branding/official/locales/jar.mn @@ -0,0 +1,7 @@ +#filter substitution + +@AB_CD@.jar: +% locale branding @AB_CD@ %locale/branding/ +# Branding only exists in en-US + locale/branding/brand.dtd (en-US/brand.dtd) +* locale/branding/brand.properties (en-US/brand.properties) diff --git a/b2g/branding/unofficial/Makefile.in b/b2g/branding/unofficial/Makefile.in new file mode 100644 index 000000000000..bdf28e61f920 --- /dev/null +++ b/b2g/branding/unofficial/Makefile.in @@ -0,0 +1,49 @@ +# ***** BEGIN LICENSE BLOCK ***** +# Version: MPL 1.1/GPL 2.0/LGPL 2.1 +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# The Original Code is mozilla.org code. +# +# The Initial Developer of the Original Code is Mozilla Corporation. +# Portions created by the Initial Developer are Copyright (C) 2009 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Justin Dolske (original author) +# +# Alternatively, the contents of this file may be used under the terms of +# either the GNU General Public License Version 2 or later (the "GPL"), or +# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +# in which case the provisions of the GPL or the LGPL are applicable instead +# of those above. If you wish to allow use of your version of this file only +# under the terms of either the GPL or the LGPL, and not to allow others to +# use your version of this file under the terms of the MPL, indicate your +# decision by deleting the provisions above and replace them with the notice +# and other provisions required by the GPL or the LGPL. If you do not delete +# the provisions above, a recipient may use your version of this file under +# the terms of any one of the MPL, the GPL or the LGPL. +# +# ***** END LICENSE BLOCK ***** + +DEPTH = ../../.. +topsrcdir = @top_srcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +include $(DEPTH)/config/autoconf.mk + +DIRS = \ + content \ + locales \ + $(NULL) + +include $(topsrcdir)/config/rules.mk diff --git a/b2g/branding/unofficial/android-resources.mn b/b2g/branding/unofficial/android-resources.mn new file mode 100644 index 000000000000..4a11453afad7 --- /dev/null +++ b/b2g/branding/unofficial/android-resources.mn @@ -0,0 +1 @@ +b2g/branding/unofficial/content/splash.png diff --git a/b2g/branding/unofficial/configure.sh b/b2g/branding/unofficial/configure.sh new file mode 100644 index 000000000000..593059c2bff8 --- /dev/null +++ b/b2g/branding/unofficial/configure.sh @@ -0,0 +1,3 @@ +ANDROID_PACKAGE_NAME=org.mozilla.b2g_`echo $USER` +MOZ_APP_DISPLAYNAME=B2G +MOZ_UPDATER= diff --git a/b2g/branding/unofficial/content/Makefile.in b/b2g/branding/unofficial/content/Makefile.in new file mode 100644 index 000000000000..827181f9b49f --- /dev/null +++ b/b2g/branding/unofficial/content/Makefile.in @@ -0,0 +1,11 @@ +# Branding Makefile +# - jars chrome artwork + +DEPTH = ../../../.. +topsrcdir = @top_srcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +include $(DEPTH)/config/autoconf.mk + +include $(topsrcdir)/config/rules.mk diff --git a/b2g/branding/unofficial/content/about.png b/b2g/branding/unofficial/content/about.png new file mode 100644 index 0000000000000000000000000000000000000000..3819f6337a171cf8ab8e5171bbab6f787b5f77ae GIT binary patch literal 16858 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 W8+~_f-T>S@$KdJe=d#Wzp$Py9N-@;{ literal 0 HcmV?d00001 diff --git a/b2g/branding/unofficial/content/favicon32.png b/b2g/branding/unofficial/content/favicon32.png new file mode 100644 index 0000000000000000000000000000000000000000..3f04acd50d303235149c6a2822003ed94f8a51a7 GIT binary patch literal 1761 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 Hu0mjfcGdKw literal 0 HcmV?d00001 diff --git a/b2g/branding/unofficial/content/icon64.png b/b2g/branding/unofficial/content/icon64.png new file mode 100644 index 0000000000000000000000000000000000000000..fe980153be29d7d4d01066de16a0fd28ae0e223c GIT binary patch literal 5897 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 literal 0 HcmV?d00001 diff --git a/b2g/branding/unofficial/content/logoWordmark.png b/b2g/branding/unofficial/content/logoWordmark.png new file mode 100644 index 0000000000000000000000000000000000000000..a3017f59ecf02808ee8793f118d02bd04b2bae8a GIT binary patch literal 15088 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 Q8vy_yE2$(=4K)7of2pjRH~;_u literal 0 HcmV?d00001 diff --git a/b2g/branding/unofficial/content/splash.png b/b2g/branding/unofficial/content/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..25a0830eac7003d6dec6992b18b9f17a0f27d723 GIT binary patch literal 19766 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 +# Portions created by the Initial Developer are Copyright (C) 2011 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Matt Brubeck +# +# Alternatively, the contents of this file may be used under the terms of +# either the GNU General Public License Version 2 or later (the "GPL"), or +# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +# in which case the provisions of the GPL or the LGPL are applicable instead +# of those above. If you wish to allow use of your version of this file only +# under the terms of either the GPL or the LGPL, and not to allow others to +# use your version of this file under the terms of the MPL, indicate your +# decision by deleting the provisions above and replace them with the notice +# and other provisions required by the GPL or the LGPL. If you do not delete +# the provisions above, a recipient may use your version of this file under +# the terms of any one of the MPL, the GPL or the LGPL. +# +# ***** END LICENSE BLOCK ***** + +DEPTH = ../../../.. +topsrcdir = @top_srcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ +relativesrcdir = b2g/branding/unofficial/locales + +include $(DEPTH)/config/autoconf.mk + +DEFINES += -DAB_CD=$(AB_CD) + +include $(topsrcdir)/config/rules.mk diff --git a/b2g/branding/unofficial/locales/en-US/brand.dtd b/b2g/branding/unofficial/locales/en-US/brand.dtd new file mode 100644 index 000000000000..e58c9e7db9ce --- /dev/null +++ b/b2g/branding/unofficial/locales/en-US/brand.dtd @@ -0,0 +1,4 @@ + + + + diff --git a/b2g/branding/unofficial/locales/en-US/brand.properties b/b2g/branding/unofficial/locales/en-US/brand.properties new file mode 100644 index 000000000000..02996fd6e231 --- /dev/null +++ b/b2g/branding/unofficial/locales/en-US/brand.properties @@ -0,0 +1,2 @@ +brandShortName=B2G +brandFullName=Mozilla B2G diff --git a/b2g/branding/unofficial/locales/jar.mn b/b2g/branding/unofficial/locales/jar.mn new file mode 100644 index 000000000000..de3d979b7751 --- /dev/null +++ b/b2g/branding/unofficial/locales/jar.mn @@ -0,0 +1,7 @@ +#filter substitution + +@AB_CD@.jar: +% locale branding @AB_CD@ %locale/branding/ +# Nightly branding only exists in en-US + locale/branding/brand.dtd (en-US/brand.dtd) +* locale/branding/brand.properties (en-US/brand.properties) diff --git a/b2g/build.mk b/b2g/build.mk new file mode 100644 index 000000000000..26afd041c592 --- /dev/null +++ b/b2g/build.mk @@ -0,0 +1,88 @@ +# ***** BEGIN LICENSE BLOCK ***** +# Version: MPL 1.1/GPL 2.0/LGPL 2.1 +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# The Original Code is Mozilla. +# +# The Initial Developer of the Original Code is +# the Mozilla Foundation . +# Portions created by the Initial Developer are Copyright (C) 2007 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Finkle +# +# Alternatively, the contents of this file may be used under the terms of +# either the GNU General Public License Version 2 or later (the "GPL"), or +# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +# in which case the provisions of the GPL or the LGPL are applicable instead +# of those above. If you wish to allow use of your version of this file only +# under the terms of either the GPL or the LGPL, and not to allow others to +# use your version of this file under the terms of the MPL, indicate your +# decision by deleting the provisions above and replace them with the notice +# and other provisions required by the GPL or the LGPL. If you do not delete +# the provisions above, a recipient may use your version of this file under +# the terms of any one of the MPL, the GPL or the LGPL. +# +# ***** END LICENSE BLOCK ***** + +ifndef LIBXUL_SDK +include $(topsrcdir)/toolkit/toolkit-tiers.mk +else +ifdef ENABLE_TESTS +tier_testharness_dirs += \ + testing/mochitest \ + $(NULL) +endif +endif + +TIERS += app + +ifdef MOZ_EXTENSIONS +tier_app_dirs += extensions +endif + +ifdef MOZ_SERVICES_SYNC +tier_app_dirs += services +endif + +tier_app_dirs += \ + $(MOZ_BRANDING_DIRECTORY) \ + b2g \ + $(NULL) + + +installer: + @$(MAKE) -C b2g/installer installer + +package: + @$(MAKE) -C b2g/installer + +install:: + @echo "B2G can't be installed directly." + @exit 1 + +upload:: + @$(MAKE) -C b2g/installer upload + +ifdef ENABLE_TESTS +# Implemented in testing/testsuite-targets.mk + +mochitest-browser-chrome: + $(RUN_MOCHITEST) --browser-chrome + $(CHECK_TEST_ERROR) + +mochitest:: mochitest-browser-chrome + +.PHONY: mochitest-browser-chrome +endif + diff --git a/b2g/chrome/Makefile.in b/b2g/chrome/Makefile.in new file mode 100644 index 000000000000..3d3ddf027d91 --- /dev/null +++ b/b2g/chrome/Makefile.in @@ -0,0 +1,50 @@ +# ***** BEGIN LICENSE BLOCK ***** +# Version: MPL 1.1/GPL 2.0/LGPL 2.1 +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# The Original Code is Mozilla. +# +# The Initial Developer of the Original Code is +# the Mozilla Foundation . +# Portions created by the Initial Developer are Copyright (C) 2007 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Mark Finkle +# +# Alternatively, the contents of this file may be used under the terms of +# either the GNU General Public License Version 2 or later (the "GPL"), or +# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +# in which case the provisions of the GPL or the LGPL are applicable instead +# of those above. If you wish to allow use of your version of this file only +# under the terms of either the GPL or the LGPL, and not to allow others to +# use your version of this file under the terms of the MPL, indicate your +# decision by deleting the provisions above and replace them with the notice +# and other provisions required by the GPL or the LGPL. If you do not delete +# the provisions above, a recipient may use your version of this file under +# the terms of any one of the MPL, the GPL or the LGPL. +# +# ***** END LICENSE BLOCK ***** + +DEPTH = ../.. +topsrcdir = @top_srcdir@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +include $(DEPTH)/config/autoconf.mk + +DEFINES += -DAB_CD=$(MOZ_UI_LOCALE) \ + -DPACKAGE=browser \ + -DMOZ_APP_VERSION=$(MOZ_APP_VERSION) \ + $(NULL) + +include $(topsrcdir)/config/rules.mk diff --git a/b2g/chrome/content/commandUtil.js b/b2g/chrome/content/commandUtil.js new file mode 100644 index 000000000000..4ce08ee3ade3 --- /dev/null +++ b/b2g/chrome/content/commandUtil.js @@ -0,0 +1,197 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Mozilla Mobile Browser. + * + * The Initial Developer of the Original Code is + * Mozilla Corporation. + * Portions created by the Initial Developer are Copyright (C) 2008 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Mark Finkle + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + + +/** + * Command Updater + */ +let CommandUpdater = { + /** + * Gets a controller that can handle a particular command. + * @param {string} command + * A command to locate a controller for, preferring controllers that + * show the command as enabled. + * @return {object} In this order of precedence: + * - the first controller supporting the specified command + * associated with the focused element that advertises the + * command as ENABLED. + * - the first controller supporting the specified command + * associated with the global window that advertises the + * command as ENABLED. + * - the first controller supporting the specified command + * associated with the focused element. + * - the first controller supporting the specified command + * associated with the global window. + */ + _getControllerForCommand: function(command) { + try { + let commandDispatcher = top.document.commandDispatcher; + let controller = commandDispatcher.getControllerForCommand(command); + if (controller && controller.isCommandEnabled(command)) + return controller; + } + catch (e) { } + + let controllerCount = window.controllers.getControllerCount(); + for (let i = 0; i < controllerCount; ++i) { + let current = window.controllers.getControllerAt(i); + try { + if (current.supportsCommand(command) && + current.isCommandEnabled(command)) + return current; + } + catch (e) { } + } + return controller || window.controllers.getControllerForCommand(command); + }, + + /** + * Updates the state of a XUL element for the specified command + * depending on its state. + * @param {string} command + * The name of the command to update the XUL element for. + */ + updateCommand: function(command) { + let enabled = false; + try { + let controller = this._getControllerForCommand(command); + if (controller) { + enabled = controller.isCommandEnabled(command); + } + } + catch (ex) { } + + this.enableCommand(command, enabled); + }, + + /** + * Updates the state of a XUL element for the specified command + * depending on its state. + * @param {string} command + * The name of the command to update the XUL element for. + */ + updateCommands: function(_commands) { + let commands = _commands.split(','); + for (let command in commands) { + this.updateCommand(commands[command]); + } + }, + + /** + * Enables or disables a XUL element. + * @param {string} command + * The name of the command to enable or disable. + * @param {bool} enabled + * true if the command should be enabled, false otherwise. + */ + enableCommand: function(command, enabled) { + let element = document.getElementById(command); + if (!element) + return; + + if (enabled) + element.removeAttribute('disabled'); + else + element.setAttribute('disabled', 'true'); + }, + + /** + * Performs the action associated with a specified command using the most + * relevant controller. + * @param {string} command + * The command to perform. + */ + doCommand: function(command) { + let controller = this._getControllerForCommand(command); + if (!controller) + return; + controller.doCommand(command); + }, + + /** + * Changes the label attribute for the specified command. + * @param {string} command + * The command to update. + * @param {string} labelAttribute + * The label value to use. + */ + setMenuValue: function(command, labelAttribute) { + let commandNode = top.document.getElementById(command); + if (commandNode) { + let label = commandNode.getAttribute(labelAttribute); + if (label) + commandNode.setAttribute('label', label); + } + }, + + /** + * Changes the accesskey attribute for the specified command. + * @param {string} command + * The command to update. + * @param {string} valueAttribute + * The value attribute to use. + */ + setAccessKey: function(command, valueAttribute) { + let commandNode = top.document.getElementById(command); + if (commandNode) { + let value = commandNode.getAttribute(valueAttribute); + if (value) + commandNode.setAttribute('accesskey', value); + } + }, + + /** + * Inform all the controllers attached to a node that an event has occurred + * (e.g. the tree controllers need to be informed of blur events so that they + * can change some of the menu items back to their default values) + * @param {node} node + * The node receiving the event. + * @param {event} event + * The event. + */ + onEvent: function(node, event) { + let numControllers = node.controllers.getControllerCount(); + let controller; + + for (let i = 0; i < numControllers; i++) { + controller = node.controllers.getControllerAt(i); + if (controller) + controller.onEvent(event); + } + } +}; + diff --git a/b2g/chrome/content/netError.xhtml b/b2g/chrome/content/netError.xhtml new file mode 100644 index 000000000000..9a601ef4730b --- /dev/null +++ b/b2g/chrome/content/netError.xhtml @@ -0,0 +1,400 @@ + + + + %htmlDTD; + + %netErrorDTD; + + %globalDTD; +]> + + + + + + + &loadError.label; + + + + + + + + + + +
+
+

&generic.title;

+

&dnsNotFound.title;

+

&fileNotFound.title;

+

&malformedURI.title;

+

&protocolNotFound.title;

+

&connectionFailure.title;

+

&netTimeout.title;

+

&redirectLoop.title;

+

&unknownSocketType.title;

+

&netReset.title;

+

&netOffline.title;

+

&netInterrupt.title;

+

&deniedPortAccess.title;

+

&proxyResolveFailure.title;

+

&proxyConnectFailure.title;

+

&contentEncodingError.title;

+

&unsafeContentType.title;

+

&nssFailure2.title;

+

&nssBadCert.title;

+

&cspFrameAncestorBlocked.title;

+

&remoteXUL.title;

+

&corruptedContentError.title;

+
+
+
&generic.longDesc;
+
&dnsNotFound.longDesc2;
+
&fileNotFound.longDesc;
+
&malformedURI.longDesc;
+
&protocolNotFound.longDesc;
+
&connectionFailure.longDesc;
+
&netTimeout.longDesc;
+
&redirectLoop.longDesc;
+
&unknownSocketType.longDesc;
+
&netReset.longDesc;
+
&netOffline.longDesc2;
+
&netInterrupt.longDesc;
+
&deniedPortAccess.longDesc;
+
&proxyResolveFailure.longDesc2;
+
&proxyConnectFailure.longDesc;
+
&contentEncodingError.longDesc;
+
&unsafeContentType.longDesc;
+
&nssFailure2.longDesc;
+
&nssBadCert.longDesc2;
+
&cspFrameAncestorBlocked.longDesc;
+
&remoteXUL.longDesc;
+
&corruptedContentError.longDesc;
+
+
+ + +
+

+

+ + +
+ + +
+ + +
+

+

+ + +
+ + +
+ &securityOverride.linkText; + +
+
+ + + + +
+ + + + + + diff --git a/b2g/chrome/content/shell.js b/b2g/chrome/content/shell.js new file mode 100644 index 000000000000..14e1558349c7 --- /dev/null +++ b/b2g/chrome/content/shell.js @@ -0,0 +1,220 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is B2G. + * + * The Initial Developer of the Original Code is + * Mozilla Foundation. + * Portions created by the Initial Developer are Copyright (C) 2011 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +const Cc = Components.classes; +const Ci = Components.interfaces; +const Cu = Components.utils; +const CC = Components.Constructor; + +Cu.import('resource://gre/modules/Services.jsm'); + +const LocalFile = CC('@mozilla.org/file/local;1', + 'nsILocalFile', + 'initWithPath'); +var shell = { + get home() { + delete this.home; + return this.home = document.getElementById('homescreen'); + }, + + get homeSrc() { + try { + let homeSrc = Cc['@mozilla.org/process/environment;1'] + .getService(Ci.nsIEnvironment) + .get('B2G_HOMESCREEN'); + if (homeSrc) + return homeSrc; + } catch (e) {} + + let urls = Services.prefs.getCharPref('browser.homescreenURL').split(','); + for (let i = 0; i < urls.length; i++) { + let url = urls[i]; + if (url.substring(0, 7) != 'file://') + return url; + + let file = new LocalFile(url.substring(7, url.length)); + if (file.exists()) + return url; + } + return null; + }, + + start: function shell_init() { + window.controllers.appendController(this); + window.addEventListener('keypress', this); + this.home.addEventListener('load', this, true); + + let ioService = Cc['@mozilla.org/network/io-service;1'] + .getService(Ci.nsIIOService2); + ioService.offline = false; + + let browser = this.home; + browser.homePage = this.homeSrc; + browser.goHome(); + }, + + stop: function shell_stop() { + window.controllers.removeController(this); + window.removeEventListener('keypress', this); + }, + + supportsCommand: function shell_supportsCommand(cmd) { + let isSupported = false; + switch (cmd) { + case 'cmd_close': + isSupported = true; + break; + default: + isSupported = false; + break; + } + return isSupported; + }, + + isCommandEnabled: function shell_isCommandEnabled(cmd) { + return true; + }, + + doCommand: function shell_doCommand(cmd) { + switch (cmd) { + case 'cmd_close': + this.sendEvent(this.home.contentWindow, 'appclose'); + break; + } + }, + + handleEvent: function shell_handleEvent(evt) { + switch (evt.type) { + case 'keypress': + switch (evt.keyCode) { + case evt.DOM_VK_HOME: + this.sendEvent(this.home.contentWindow, 'home'); + break; + case evt.DOM_VK_SLEEP: + screen.mozEnabled = !screen.mozEnabled; + break; + case evt.DOM_VK_ESCAPE: + if (evt.getPreventDefault()) + return; + this.doCommand('cmd_close'); + break; + } + break; + case 'load': + this.home.removeEventListener('load', this, true); + this.sendEvent(window, 'ContentStart'); + break; + } + }, + sendEvent: function shell_sendEvent(content, type, details) { + let event = content.document.createEvent('CustomEvent'); + event.initCustomEvent(type, true, true, details ? details : {}); + content.dispatchEvent(event); + } +}; + +(function VirtualKeyboardManager() { + let activeElement = null; + let isKeyboardOpened = false; + + let constructor = { + handleEvent: function vkm_handleEvent(evt) { + let contentWindow = shell.home.contentWindow.wrappedJSObject; + + switch (evt.type) { + case 'ContentStart': + contentWindow.navigator.mozKeyboard = new MozKeyboard(); + break; + case 'keypress': + if (evt.keyCode != evt.DOM_VK_ESCAPE || !isKeyboardOpened) + return; + + shell.sendEvent(contentWindow, 'hideime'); + isKeyboardOpened = false; + + evt.preventDefault(); + evt.stopPropagation(); + break; + case 'mousedown': + if (evt.target != activeElement || isKeyboardOpened) + return; + + let type = activeElement.type; + shell.sendEvent(contentWindow, 'showime', { type: type }); + isKeyboardOpened = true; + break; + } + }, + observe: function vkm_observe(subject, topic, data) { + let contentWindow = shell.home.contentWindow; + + let shouldOpen = parseInt(data); + if (shouldOpen && !isKeyboardOpened) { + activeElement = Cc['@mozilla.org/focus-manager;1'] + .getService(Ci.nsIFocusManager) + .focusedElement; + if (!activeElement) + return; + + let type = activeElement.type; + shell.sendEvent(contentWindow, 'showime', { type: type }); + } else if (!shouldOpen && isKeyboardOpened) { + shell.sendEvent(contentWindow, 'hideime'); + } + isKeyboardOpened = shouldOpen; + } + }; + + Services.obs.addObserver(constructor, "ime-enabled-state-changed", false); + ['ContentStart', 'keypress', 'mousedown'].forEach(function vkm_events(type) { + window.addEventListener(type, constructor, true); + }); +})(); + + +function MozKeyboard() { +} + +MozKeyboard.prototype = { + sendKey: function mozKeyboardSendKey(keyCode) { + var utils = window.QueryInterface(Ci.nsIInterfaceRequestor) + .getInterface(Ci.nsIDOMWindowUtils); + ['keydown', 'keypress', 'keyup'].forEach(function sendKeyEvents(type) { + utils.sendKeyEvent(type, keyCode, keyCode, null); + }); + } +}; + diff --git a/b2g/chrome/content/shell.xul b/b2g/chrome/content/shell.xul new file mode 100644 index 000000000000..44909e3b5d8c --- /dev/null +++ b/b2g/chrome/content/shell.xul @@ -0,0 +1,60 @@ + + + + + + +