mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-25 22:01:30 +00:00
Merge m-c to fx-team a=merge CLOSED TREE
This commit is contained in:
commit
73800cd3df
1
.hgtags
1
.hgtags
@ -116,3 +116,4 @@ b297a6727acfd21e757ddd38cd61894812666265 FIREFOX_AURORA_36_BASE
|
||||
0000000000000000000000000000000000000000 FIREFOX_AURORA_37_BASE
|
||||
2c951493eef5b50b8085ef78ffe0d7902ff3d593 FIREFOX_AURORA_37_BASE
|
||||
98086da94ccdc88f6de86774ce3d1fa258dc7c44 FIREFOX_AURORA_38_BASE
|
||||
1b6bf6612c0f4d4fee81d18bf18016e692f874e1 FIREFOX_AURORA_39_BASE
|
||||
|
2
CLOBBER
2
CLOBBER
@ -22,4 +22,4 @@
|
||||
# changes to stick? As of bug 928195, this shouldn't be necessary! Please
|
||||
# don't change CLOBBER for WebIDL changes any more.
|
||||
|
||||
Bug 1137470 NSS update required a clobber to fully rebuild
|
||||
Merge day clobber
|
@ -58,7 +58,7 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk':
|
||||
'cutils',
|
||||
]
|
||||
OS_LIBS += CONFIG['MOZ_ZLIB_LIBS']
|
||||
if CONFIG['ANDROID_VERSION'] in ('17', '18', '19', '21'):
|
||||
if CONFIG['ANDROID_VERSION'] in ('17', '18', '19', '21', '22'):
|
||||
OS_LIBS += [
|
||||
'gui',
|
||||
'suspend',
|
||||
|
@ -15,7 +15,7 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="ef937d1aca7c4cf89ecb5cc43ae8c21c2000a9db">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="be25b16efa19bab8d54be08f8fe45dcc93bf93d0"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="a249df8f4c84fe0a139741f05a534d36996ea7b8"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="2aa4a75c63cd6e93870a8bddbba45f863cbfd9a3"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
@ -23,7 +23,7 @@
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="47503b5ec80f00630548023efb5ea4f830e1527d"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="d99ab92d0b829a6c78b5284481d5b236d3901f11"/>
|
||||
<!-- Stock Android things -->
|
||||
<project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" revision="95bb5b66b3ec5769c3de8d3f25d681787418e7d2"/>
|
||||
<project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6" revision="ebdad82e61c16772f6cd47e9f11936bf6ebe9aa0"/>
|
||||
|
@ -19,7 +19,7 @@
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="be25b16efa19bab8d54be08f8fe45dcc93bf93d0"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="a249df8f4c84fe0a139741f05a534d36996ea7b8"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="2aa4a75c63cd6e93870a8bddbba45f863cbfd9a3"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="93f9ba577f68d772093987c2f1c0a4ae293e1802"/>
|
||||
|
@ -17,10 +17,10 @@
|
||||
</project>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="be25b16efa19bab8d54be08f8fe45dcc93bf93d0"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="a249df8f4c84fe0a139741f05a534d36996ea7b8"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="2aa4a75c63cd6e93870a8bddbba45f863cbfd9a3"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="ed2cf97a6c37a4bbd0bbbbffe06ec7136d8c79ff"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="47503b5ec80f00630548023efb5ea4f830e1527d"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="d99ab92d0b829a6c78b5284481d5b236d3901f11"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
|
||||
<!-- Stock Android things -->
|
||||
|
@ -15,7 +15,7 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="ef937d1aca7c4cf89ecb5cc43ae8c21c2000a9db">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="be25b16efa19bab8d54be08f8fe45dcc93bf93d0"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="a249df8f4c84fe0a139741f05a534d36996ea7b8"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="2aa4a75c63cd6e93870a8bddbba45f863cbfd9a3"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
@ -23,7 +23,7 @@
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="47503b5ec80f00630548023efb5ea4f830e1527d"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="d99ab92d0b829a6c78b5284481d5b236d3901f11"/>
|
||||
<!-- Stock Android things -->
|
||||
<project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" revision="f92a936f2aa97526d4593386754bdbf02db07a12"/>
|
||||
<project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6" revision="6e47ff2790f5656b5b074407829ceecf3e6188c4"/>
|
||||
|
@ -15,7 +15,7 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="52775e03a2d8532429dff579cb2cd56718e488c3">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="be25b16efa19bab8d54be08f8fe45dcc93bf93d0"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="a249df8f4c84fe0a139741f05a534d36996ea7b8"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="2aa4a75c63cd6e93870a8bddbba45f863cbfd9a3"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
@ -23,7 +23,7 @@
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="47503b5ec80f00630548023efb5ea4f830e1527d"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="d99ab92d0b829a6c78b5284481d5b236d3901f11"/>
|
||||
<!-- Stock Android things -->
|
||||
<project groups="pdk,linux" name="platform/prebuilts/clang/linux-x86/host/3.5" path="prebuilts/clang/linux-x86/host/3.5" revision="50d1ca4ab8add54523b7bc692860d57e8ee4c0d1"/>
|
||||
<project groups="pdk,linux,arm" name="platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.8" path="prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.8" revision="fb3845864573857677f9b500040a8f011eaf5078"/>
|
||||
|
@ -19,7 +19,7 @@
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="be25b16efa19bab8d54be08f8fe45dcc93bf93d0"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="a249df8f4c84fe0a139741f05a534d36996ea7b8"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="2aa4a75c63cd6e93870a8bddbba45f863cbfd9a3"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="93f9ba577f68d772093987c2f1c0a4ae293e1802"/>
|
||||
|
@ -15,7 +15,7 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="ef937d1aca7c4cf89ecb5cc43ae8c21c2000a9db">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="be25b16efa19bab8d54be08f8fe45dcc93bf93d0"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="a249df8f4c84fe0a139741f05a534d36996ea7b8"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="2aa4a75c63cd6e93870a8bddbba45f863cbfd9a3"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
@ -23,7 +23,7 @@
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="47503b5ec80f00630548023efb5ea4f830e1527d"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="d99ab92d0b829a6c78b5284481d5b236d3901f11"/>
|
||||
<!-- Stock Android things -->
|
||||
<project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" revision="95bb5b66b3ec5769c3de8d3f25d681787418e7d2"/>
|
||||
<project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6" revision="ebdad82e61c16772f6cd47e9f11936bf6ebe9aa0"/>
|
||||
|
@ -17,10 +17,10 @@
|
||||
</project>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="be25b16efa19bab8d54be08f8fe45dcc93bf93d0"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="a249df8f4c84fe0a139741f05a534d36996ea7b8"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="2aa4a75c63cd6e93870a8bddbba45f863cbfd9a3"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="ed2cf97a6c37a4bbd0bbbbffe06ec7136d8c79ff"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="47503b5ec80f00630548023efb5ea4f830e1527d"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="d99ab92d0b829a6c78b5284481d5b236d3901f11"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
|
||||
<!-- Stock Android things -->
|
||||
|
@ -1,9 +1,9 @@
|
||||
{
|
||||
"git": {
|
||||
"git_revision": "be25b16efa19bab8d54be08f8fe45dcc93bf93d0",
|
||||
"git_revision": "a249df8f4c84fe0a139741f05a534d36996ea7b8",
|
||||
"remote": "https://git.mozilla.org/releases/gaia.git",
|
||||
"branch": ""
|
||||
},
|
||||
"revision": "1b729ede1a2a5333b6dd65bb15ba75e4a2d25282",
|
||||
"revision": "12cf6177ae0c2f63c267fc816d6c18c337b24a61",
|
||||
"repo_path": "integration/gaia-central"
|
||||
}
|
||||
|
@ -17,10 +17,10 @@
|
||||
</project>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="be25b16efa19bab8d54be08f8fe45dcc93bf93d0"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="a249df8f4c84fe0a139741f05a534d36996ea7b8"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="2aa4a75c63cd6e93870a8bddbba45f863cbfd9a3"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="ed2cf97a6c37a4bbd0bbbbffe06ec7136d8c79ff"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="47503b5ec80f00630548023efb5ea4f830e1527d"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="d99ab92d0b829a6c78b5284481d5b236d3901f11"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
|
||||
<!-- Stock Android things -->
|
||||
|
@ -15,7 +15,7 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="52775e03a2d8532429dff579cb2cd56718e488c3">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="be25b16efa19bab8d54be08f8fe45dcc93bf93d0"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="a249df8f4c84fe0a139741f05a534d36996ea7b8"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="2aa4a75c63cd6e93870a8bddbba45f863cbfd9a3"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
@ -23,7 +23,7 @@
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="47503b5ec80f00630548023efb5ea4f830e1527d"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="d99ab92d0b829a6c78b5284481d5b236d3901f11"/>
|
||||
<!-- Stock Android things -->
|
||||
<project groups="pdk,linux" name="platform/prebuilts/clang/linux-x86/host/3.5" path="prebuilts/clang/linux-x86/host/3.5" revision="50d1ca4ab8add54523b7bc692860d57e8ee4c0d1"/>
|
||||
<project groups="pdk,linux,arm" name="platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.8" path="prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.8" revision="fb3845864573857677f9b500040a8f011eaf5078"/>
|
||||
|
@ -5,7 +5,7 @@
|
||||
MOZ_APP_BASENAME=B2G
|
||||
MOZ_APP_VENDOR=Mozilla
|
||||
|
||||
MOZ_APP_VERSION=39.0a1
|
||||
MOZ_APP_VERSION=40.0a1
|
||||
MOZ_APP_UA_NAME=Firefox
|
||||
|
||||
MOZ_UA_OS_AGNOSTIC=1
|
||||
|
@ -1328,8 +1328,11 @@ pref("services.sync.prefs.sync.xpinstall.whitelist.required", true);
|
||||
|
||||
// Developer edition preferences
|
||||
#ifdef MOZ_DEV_EDITION
|
||||
pref("lightweightThemes.selectedThemeID", "firefox-devedition@mozilla.org");
|
||||
pref("browser.devedition.theme.enabled", true);
|
||||
pref("browser.devedition.theme.showCustomizeButton", true);
|
||||
#else
|
||||
pref("browser.devedition.theme.enabled", false);
|
||||
pref("browser.devedition.theme.showCustomizeButton", false);
|
||||
#endif
|
||||
|
||||
// Developer edition promo preferences
|
||||
|
@ -7,37 +7,46 @@
|
||||
* to browser.xul if a pref is set and no other themes are applied.
|
||||
*/
|
||||
let DevEdition = {
|
||||
_prefName: "browser.devedition.theme.enabled",
|
||||
_themePrefName: "general.skins.selectedSkin",
|
||||
_lwThemePrefName: "lightweightThemes.selectedThemeID",
|
||||
_devtoolsThemePrefName: "devtools.theme",
|
||||
|
||||
styleSheetLocation: "chrome://browser/skin/devedition.css",
|
||||
styleSheet: null,
|
||||
|
||||
get isThemeCurrentlyApplied() {
|
||||
let theme = LightweightThemeManager.currentTheme;
|
||||
return theme && theme.id == "firefox-devedition@mozilla.org";
|
||||
},
|
||||
|
||||
init: function () {
|
||||
this._updateDevtoolsThemeAttribute();
|
||||
this._updateStyleSheetFromPrefs();
|
||||
|
||||
// Listen for changes to all prefs except for complete themes.
|
||||
// No need for this since changing a complete theme requires a
|
||||
// restart.
|
||||
Services.prefs.addObserver(this._lwThemePrefName, this, false);
|
||||
Services.prefs.addObserver(this._prefName, this, false);
|
||||
Services.prefs.addObserver(this._devtoolsThemePrefName, this, false);
|
||||
Services.obs.addObserver(this, "lightweight-theme-styling-update", false);
|
||||
this._updateDevtoolsThemeAttribute();
|
||||
|
||||
if (this.isThemeCurrentlyApplied) {
|
||||
this._toggleStyleSheet(true);
|
||||
}
|
||||
},
|
||||
|
||||
observe: function (subject, topic, data) {
|
||||
if (topic == "lightweight-theme-styling-update") {
|
||||
let newTheme = JSON.parse(data);
|
||||
if (newTheme && newTheme.id == "firefox-devedition@mozilla.org") {
|
||||
this._toggleStyleSheet(true);
|
||||
if (!newTheme) {
|
||||
// A lightweight theme has been unapplied, so just re-read prefs.
|
||||
this._updateStyleSheetFromPrefs();
|
||||
} else {
|
||||
// A lightweight theme has been applied, but the pref may not be
|
||||
// set yet if this happened from customize menu or addons page.
|
||||
this._toggleStyleSheet(false);
|
||||
}
|
||||
}
|
||||
|
||||
if (topic == "nsPref:changed" && data == this._devtoolsThemePrefName) {
|
||||
this._updateDevtoolsThemeAttribute();
|
||||
if (topic == "nsPref:changed") {
|
||||
if (data == this._devtoolsThemePrefName) {
|
||||
this._updateDevtoolsThemeAttribute();
|
||||
} else {
|
||||
this._updateStyleSheetFromPrefs();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -61,6 +70,24 @@ let DevEdition = {
|
||||
}
|
||||
document.documentElement.setAttribute("devtoolstheme", devtoolsTheme);
|
||||
this._inferBrightness();
|
||||
this._updateStyleSheetFromPrefs();
|
||||
},
|
||||
|
||||
_updateStyleSheetFromPrefs: function() {
|
||||
let lightweightThemeSelected = false;
|
||||
try {
|
||||
lightweightThemeSelected = !!Services.prefs.getCharPref(this._lwThemePrefName);
|
||||
} catch(e) {}
|
||||
|
||||
let defaultThemeSelected = false;
|
||||
try {
|
||||
defaultThemeSelected = Services.prefs.getCharPref(this._themePrefName) == "classic/1.0";
|
||||
} catch(e) {}
|
||||
|
||||
let deveditionThemeEnabled = Services.prefs.getBoolPref(this._prefName) &&
|
||||
!lightweightThemeSelected && defaultThemeSelected;
|
||||
|
||||
this._toggleStyleSheet(deveditionThemeEnabled);
|
||||
},
|
||||
|
||||
handleEvent: function(e) {
|
||||
@ -68,6 +95,7 @@ let DevEdition = {
|
||||
this.styleSheet.removeEventListener("load", this);
|
||||
gBrowser.tabContainer._positionPinnedTabs();
|
||||
this._inferBrightness();
|
||||
Services.obs.notifyObservers(window, "devedition-theme-state-changed", true);
|
||||
}
|
||||
},
|
||||
|
||||
@ -86,10 +114,13 @@ let DevEdition = {
|
||||
this.styleSheet = null;
|
||||
gBrowser.tabContainer._positionPinnedTabs();
|
||||
this._inferBrightness();
|
||||
Services.obs.notifyObservers(window, "devedition-theme-state-changed", false);
|
||||
}
|
||||
},
|
||||
|
||||
uninit: function () {
|
||||
Services.prefs.removeObserver(this._lwThemePrefName, this);
|
||||
Services.prefs.removeObserver(this._prefName, this);
|
||||
Services.prefs.removeObserver(this._devtoolsThemePrefName, this);
|
||||
Services.obs.removeObserver(this, "lightweight-theme-styling-update", false);
|
||||
if (this.styleSheet) {
|
||||
|
@ -45,8 +45,6 @@ XPCOMUtils.defineLazyServiceGetter(this, "Favicons",
|
||||
XPCOMUtils.defineLazyServiceGetter(this, "gDNSService",
|
||||
"@mozilla.org/network/dns-service;1",
|
||||
"nsIDNSService");
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "LightweightThemeManager",
|
||||
"resource://gre/modules/LightweightThemeManager.jsm");
|
||||
|
||||
const nsIWebNavigation = Ci.nsIWebNavigation;
|
||||
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 95 B |
Binary file not shown.
Before Width: | Height: | Size: 2.3 KiB |
@ -5,56 +5,63 @@
|
||||
* are applied.
|
||||
*/
|
||||
|
||||
const PREF_DEVEDITION_THEME = "browser.devedition.theme.enabled";
|
||||
const PREF_LWTHEME = "lightweightThemes.selectedThemeID";
|
||||
const PREF_LWTHEME_USED_THEMES = "lightweightThemes.usedThemes";
|
||||
const PREF_DEVTOOLS_THEME = "devtools.theme";
|
||||
const {LightweightThemeManager} = Components.utils.import("resource://gre/modules/LightweightThemeManager.jsm", {});
|
||||
|
||||
LightweightThemeManager.clearBuiltInThemes();
|
||||
LightweightThemeManager.addBuiltInTheme(dummyLightweightTheme("firefox-devedition@mozilla.org"));
|
||||
|
||||
registerCleanupFunction(() => {
|
||||
// Set preferences back to their original values
|
||||
LightweightThemeManager.currentTheme = null;
|
||||
Services.prefs.clearUserPref(PREF_DEVEDITION_THEME);
|
||||
Services.prefs.clearUserPref(PREF_LWTHEME);
|
||||
Services.prefs.clearUserPref(PREF_DEVTOOLS_THEME);
|
||||
Services.prefs.clearUserPref(PREF_LWTHEME_USED_THEMES);
|
||||
|
||||
LightweightThemeManager.currentTheme = null;
|
||||
LightweightThemeManager.clearBuiltInThemes();
|
||||
});
|
||||
|
||||
add_task(function* startTests() {
|
||||
Services.prefs.setCharPref(PREF_DEVTOOLS_THEME, "dark");
|
||||
|
||||
info ("Setting the current theme to null");
|
||||
LightweightThemeManager.currentTheme = null;
|
||||
ok (!DevEdition.styleSheet, "There is no devedition style sheet when no lw theme is applied.");
|
||||
info ("Setting browser.devedition.theme.enabled to false.");
|
||||
Services.prefs.setBoolPref(PREF_DEVEDITION_THEME, false);
|
||||
ok (!DevEdition.styleSheet, "There is no devedition style sheet when the pref is false.");
|
||||
|
||||
info ("Setting browser.devedition.theme.enabled to true.");
|
||||
Services.prefs.setBoolPref(PREF_DEVEDITION_THEME, true);
|
||||
ok (DevEdition.styleSheet, "There is a devedition stylesheet when no themes are applied and pref is set.");
|
||||
|
||||
info ("Adding a lightweight theme.");
|
||||
LightweightThemeManager.currentTheme = dummyLightweightTheme("preview0");
|
||||
ok (!DevEdition.styleSheet, "The devedition stylesheet has been removed when a lightweight theme is applied.");
|
||||
|
||||
info ("Applying the devedition lightweight theme.");
|
||||
info ("Removing a lightweight theme.");
|
||||
let onAttributeAdded = waitForBrightTitlebarAttribute();
|
||||
LightweightThemeManager.currentTheme = LightweightThemeManager.getUsedTheme("firefox-devedition@mozilla.org");
|
||||
ok (DevEdition.styleSheet, "The devedition stylesheet has been added when the devedition lightweight theme is applied");
|
||||
LightweightThemeManager.currentTheme = null;
|
||||
ok (DevEdition.styleSheet, "The devedition stylesheet has been added when a lightweight theme is removed.");
|
||||
yield onAttributeAdded;
|
||||
|
||||
is (document.documentElement.getAttribute("brighttitlebarforeground"), "true",
|
||||
"The brighttitlebarforeground attribute is set on the window.");
|
||||
|
||||
info ("Unapplying all themes.");
|
||||
LightweightThemeManager.currentTheme = null;
|
||||
ok (!DevEdition.styleSheet, "There is no devedition style sheet when no lw theme is applied.");
|
||||
info ("Setting browser.devedition.theme.enabled to false.");
|
||||
Services.prefs.setBoolPref(PREF_DEVEDITION_THEME, false);
|
||||
ok (!DevEdition.styleSheet, "The devedition stylesheet has been removed.");
|
||||
|
||||
info ("Applying the devedition lightweight theme.");
|
||||
onAttributeAdded = waitForBrightTitlebarAttribute();
|
||||
LightweightThemeManager.currentTheme = LightweightThemeManager.getUsedTheme("firefox-devedition@mozilla.org");
|
||||
ok (DevEdition.styleSheet, "The devedition stylesheet has been added when the devedition lightweight theme is applied");
|
||||
yield onAttributeAdded;
|
||||
ok (document.documentElement.hasAttribute("brighttitlebarforeground"),
|
||||
"The brighttitlebarforeground attribute is set on the window with dark devtools theme.");
|
||||
ok (!document.documentElement.hasAttribute("brighttitlebarforeground"),
|
||||
"The brighttitlebarforeground attribute is not set on the window after devedition.theme is false.");
|
||||
});
|
||||
|
||||
add_task(function* testDevtoolsTheme() {
|
||||
info ("Checking that Australis is shown when the light devtools theme is applied.");
|
||||
|
||||
let onAttributeAdded = waitForBrightTitlebarAttribute();
|
||||
Services.prefs.setBoolPref(PREF_DEVEDITION_THEME, true);
|
||||
ok (DevEdition.styleSheet, "The devedition stylesheet exists.");
|
||||
yield onAttributeAdded;
|
||||
ok (document.documentElement.hasAttribute("brighttitlebarforeground"),
|
||||
"The brighttitlebarforeground attribute is set on the window with dark devtools theme.");
|
||||
|
||||
info ("Checking stylesheet and :root attributes based on devtools theme.");
|
||||
Services.prefs.setCharPref(PREF_DEVTOOLS_THEME, "light");
|
||||
is (document.documentElement.getAttribute("devtoolstheme"), "light",
|
||||
@ -82,16 +89,16 @@ function dummyLightweightTheme(id) {
|
||||
return {
|
||||
id: id,
|
||||
name: id,
|
||||
headerURL: "resource:///chrome/browser/content/browser/defaultthemes/devedition.header.png",
|
||||
iconURL: "resource:///chrome/browser/content/browser/defaultthemes/devedition.icon.png",
|
||||
headerURL: "resource:///chrome/browser/content/browser/defaultthemes/1.header.jpg",
|
||||
iconURL: "resource:///chrome/browser/content/browser/defaultthemes/1.icon.jpg",
|
||||
textcolor: "red",
|
||||
accentcolor: "blue"
|
||||
};
|
||||
}
|
||||
|
||||
add_task(function* testLightweightThemePreview() {
|
||||
info ("Setting devedition to current and the previewing others");
|
||||
LightweightThemeManager.currentTheme = LightweightThemeManager.getUsedTheme("firefox-devedition@mozilla.org");
|
||||
info ("Turning the pref on, then previewing lightweight themes");
|
||||
Services.prefs.setBoolPref(PREF_DEVEDITION_THEME, true);
|
||||
ok (DevEdition.styleSheet, "The devedition stylesheet is enabled.");
|
||||
LightweightThemeManager.previewTheme(dummyLightweightTheme("preview0"));
|
||||
ok (!DevEdition.styleSheet, "The devedition stylesheet is not enabled after a lightweight theme preview.");
|
||||
@ -100,15 +107,24 @@ add_task(function* testLightweightThemePreview() {
|
||||
ok (!DevEdition.styleSheet, "The devedition stylesheet is not enabled after a second lightweight theme preview.");
|
||||
LightweightThemeManager.resetPreview();
|
||||
ok (DevEdition.styleSheet, "The devedition stylesheet is enabled again after resetting the preview.");
|
||||
LightweightThemeManager.currentTheme = null;
|
||||
ok (!DevEdition.styleSheet, "The devedition stylesheet is gone after removing the current theme.");
|
||||
|
||||
info ("Previewing the devedition theme");
|
||||
LightweightThemeManager.previewTheme(LightweightThemeManager.getUsedTheme("firefox-devedition@mozilla.org"));
|
||||
info ("Turning the pref on, then previewing a theme, turning it off and resetting the preview");
|
||||
Services.prefs.setBoolPref(PREF_DEVEDITION_THEME, true);
|
||||
ok (DevEdition.styleSheet, "The devedition stylesheet is enabled.");
|
||||
LightweightThemeManager.previewTheme(dummyLightweightTheme("preview2"));
|
||||
ok (!DevEdition.styleSheet, "The devedition stylesheet is not enabled after a lightweight theme preview.");
|
||||
Services.prefs.setBoolPref(PREF_DEVEDITION_THEME, false);
|
||||
ok (!DevEdition.styleSheet, "The devedition stylesheet is not enabled after pref is turned off.");
|
||||
LightweightThemeManager.resetPreview();
|
||||
ok (!DevEdition.styleSheet, "The devedition stylesheet is now disabled after resetting the preview.");
|
||||
ok (!DevEdition.styleSheet, "The devedition stylesheet is still disabled after resetting the preview.");
|
||||
|
||||
info ("Turning the pref on, then previewing the default theme, turning it off and resetting the preview");
|
||||
Services.prefs.setBoolPref(PREF_DEVEDITION_THEME, true);
|
||||
ok (DevEdition.styleSheet, "The devedition stylesheet is enabled.");
|
||||
LightweightThemeManager.previewTheme(null);
|
||||
ok (DevEdition.styleSheet, "The devedition stylesheet is still enabled after the default theme is applied.");
|
||||
LightweightThemeManager.resetPreview();
|
||||
ok (DevEdition.styleSheet, "The devedition stylesheet is still enabled after resetting the preview.");
|
||||
});
|
||||
|
||||
// Use a mutation observer to wait for the brighttitlebarforeground
|
||||
|
@ -98,8 +98,6 @@ browser.jar:
|
||||
content/browser/defaultthemes/5.header.png (content/defaultthemes/5.header.png)
|
||||
content/browser/defaultthemes/5.icon.jpg (content/defaultthemes/5.icon.jpg)
|
||||
content/browser/defaultthemes/5.preview.jpg (content/defaultthemes/5.preview.jpg)
|
||||
content/browser/defaultthemes/devedition.header.png (content/defaultthemes/devedition.header.png)
|
||||
content/browser/defaultthemes/devedition.icon.png (content/defaultthemes/devedition.icon.png)
|
||||
content/browser/newtab/newTab.xul (content/newtab/newTab.xul)
|
||||
* content/browser/newtab/newTab.js (content/newtab/newTab.js)
|
||||
content/browser/newtab/newTab.css (content/newtab/newTab.css)
|
||||
|
@ -37,6 +37,7 @@ const kPrefCustomizationState = "browser.uiCustomization.state";
|
||||
const kPrefCustomizationAutoAdd = "browser.uiCustomization.autoAdd";
|
||||
const kPrefCustomizationDebug = "browser.uiCustomization.debug";
|
||||
const kPrefDrawInTitlebar = "browser.tabs.drawInTitlebar";
|
||||
const kPrefDeveditionTheme = "browser.devedition.theme.enabled";
|
||||
const kPrefWebIDEInNavbar = "devtools.webide.widget.inNavbarByDefault";
|
||||
|
||||
/**
|
||||
@ -2331,6 +2332,7 @@ let CustomizableUIInternal = {
|
||||
_resetUIState: function() {
|
||||
try {
|
||||
gUIStateBeforeReset.drawInTitlebar = Services.prefs.getBoolPref(kPrefDrawInTitlebar);
|
||||
gUIStateBeforeReset.deveditionTheme = Services.prefs.getBoolPref(kPrefDeveditionTheme);
|
||||
gUIStateBeforeReset.uiCustomizationState = Services.prefs.getCharPref(kPrefCustomizationState);
|
||||
} catch(e) { }
|
||||
|
||||
@ -2338,6 +2340,7 @@ let CustomizableUIInternal = {
|
||||
|
||||
Services.prefs.clearUserPref(kPrefCustomizationState);
|
||||
Services.prefs.clearUserPref(kPrefDrawInTitlebar);
|
||||
Services.prefs.clearUserPref(kPrefDeveditionTheme);
|
||||
LOG("State reset");
|
||||
|
||||
// Reset placements to make restoring default placements possible.
|
||||
@ -2399,13 +2402,15 @@ let CustomizableUIInternal = {
|
||||
*/
|
||||
undoReset: function() {
|
||||
if (gUIStateBeforeReset.uiCustomizationState == null ||
|
||||
gUIStateBeforeReset.drawInTitlebar == null) {
|
||||
gUIStateBeforeReset.drawInTitlebar == null ||
|
||||
gUIStateBeforeReset.deveditionTheme == null) {
|
||||
return;
|
||||
}
|
||||
gUndoResetting = true;
|
||||
|
||||
let uiCustomizationState = gUIStateBeforeReset.uiCustomizationState;
|
||||
let drawInTitlebar = gUIStateBeforeReset.drawInTitlebar;
|
||||
let deveditionTheme = gUIStateBeforeReset.deveditionTheme;
|
||||
|
||||
// Need to clear the previous state before setting the prefs
|
||||
// because pref observers may check if there is a previous UI state.
|
||||
@ -2413,6 +2418,7 @@ let CustomizableUIInternal = {
|
||||
|
||||
Services.prefs.setCharPref(kPrefCustomizationState, uiCustomizationState);
|
||||
Services.prefs.setBoolPref(kPrefDrawInTitlebar, drawInTitlebar);
|
||||
Services.prefs.setBoolPref(kPrefDeveditionTheme, deveditionTheme);
|
||||
this.loadSavedState();
|
||||
// If the user just customizes toolbar/titlebar visibility, gSavedState will be null
|
||||
// and we don't need to do anything else here:
|
||||
@ -2590,6 +2596,10 @@ let CustomizableUIInternal = {
|
||||
LOG(kPrefDrawInTitlebar + " pref is non-default");
|
||||
return false;
|
||||
}
|
||||
if (Services.prefs.prefHasUserValue(kPrefDeveditionTheme)) {
|
||||
LOG(kPrefDeveditionTheme + " pref is non-default");
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
},
|
||||
@ -3290,7 +3300,8 @@ this.CustomizableUI = {
|
||||
*/
|
||||
get canUndoReset() {
|
||||
return gUIStateBeforeReset.uiCustomizationState != null ||
|
||||
gUIStateBeforeReset.drawInTitlebar != null;
|
||||
gUIStateBeforeReset.drawInTitlebar != null ||
|
||||
gUIStateBeforeReset.deveditionTheme != null;
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -17,6 +17,9 @@ const kPlaceholderClass = "panel-customization-placeholder";
|
||||
const kSkipSourceNodePref = "browser.uiCustomization.skipSourceNodeCheck";
|
||||
const kToolbarVisibilityBtn = "customization-toolbar-visibility-button";
|
||||
const kDrawInTitlebarPref = "browser.tabs.drawInTitlebar";
|
||||
const kDeveditionThemePref = "browser.devedition.theme.enabled";
|
||||
const kDeveditionButtonPref = "browser.devedition.theme.showCustomizeButton";
|
||||
const kDeveditionChangedNotification = "devedition-theme-state-changed";
|
||||
const kMaxTransitionDurationMs = 2000;
|
||||
|
||||
const kPanelItemContextMenu = "customizationPanelItemContextMenu";
|
||||
@ -64,12 +67,17 @@ function CustomizeMode(aWindow) {
|
||||
this.tipPanel = this.document.getElementById("customization-tipPanel");
|
||||
if (Services.prefs.getCharPref("general.skins.selectedSkin") != "classic/1.0") {
|
||||
let lwthemeButton = this.document.getElementById("customization-lwtheme-button");
|
||||
let deveditionButton = this.document.getElementById("customization-devedition-theme-button");
|
||||
lwthemeButton.setAttribute("hidden", "true");
|
||||
deveditionButton.setAttribute("hidden", "true");
|
||||
}
|
||||
#ifdef CAN_DRAW_IN_TITLEBAR
|
||||
this._updateTitlebarButton();
|
||||
Services.prefs.addObserver(kDrawInTitlebarPref, this, false);
|
||||
#endif
|
||||
this._updateDevEditionThemeButton();
|
||||
Services.prefs.addObserver(kDeveditionButtonPref, this, false);
|
||||
Services.obs.addObserver(this, kDeveditionChangedNotification, false);
|
||||
this.window.addEventListener("unload", this);
|
||||
};
|
||||
|
||||
@ -105,6 +113,8 @@ CustomizeMode.prototype = {
|
||||
#ifdef CAN_DRAW_IN_TITLEBAR
|
||||
Services.prefs.removeObserver(kDrawInTitlebarPref, this);
|
||||
#endif
|
||||
Services.prefs.removeObserver(kDeveditionButtonPref, this);
|
||||
Services.obs.removeObserver(this, kDeveditionChangedNotification);
|
||||
},
|
||||
|
||||
toggle: function() {
|
||||
@ -1497,6 +1507,13 @@ CustomizeMode.prototype = {
|
||||
}
|
||||
}
|
||||
break;
|
||||
case kDeveditionChangedNotification:
|
||||
if (aSubject == this.window) {
|
||||
this._updateDevEditionThemeButton();
|
||||
this._updateResetButton();
|
||||
this._updateUndoResetButton();
|
||||
}
|
||||
break;
|
||||
}
|
||||
},
|
||||
|
||||
@ -1521,6 +1538,44 @@ CustomizeMode.prototype = {
|
||||
},
|
||||
#endif
|
||||
|
||||
_updateDevEditionThemeButton: function() {
|
||||
let button = this.document.getElementById("customization-devedition-theme-button");
|
||||
|
||||
let themeEnabled = !!this.window.DevEdition.styleSheet;
|
||||
if (themeEnabled) {
|
||||
button.setAttribute("checked", "true");
|
||||
} else {
|
||||
button.removeAttribute("checked");
|
||||
}
|
||||
|
||||
let buttonVisible = Services.prefs.getBoolPref(kDeveditionButtonPref);
|
||||
if (buttonVisible) {
|
||||
button.removeAttribute("hidden");
|
||||
} else {
|
||||
button.setAttribute("hidden", "true");
|
||||
}
|
||||
},
|
||||
|
||||
toggleDevEditionTheme: function(shouldEnable) {
|
||||
const DEFAULT_THEME_ID = "{972ce4c6-7e08-4474-a285-3208198ce6fd}";
|
||||
|
||||
Services.prefs.setBoolPref(kDeveditionThemePref, shouldEnable);
|
||||
|
||||
let currentLWT = LightweightThemeManager.currentTheme;
|
||||
if (currentLWT && shouldEnable) {
|
||||
this._lastLightweightTheme = currentLWT;
|
||||
AddonManager.getAddonByID(DEFAULT_THEME_ID, function(aDefaultTheme) {
|
||||
// Theoretically, this could race if people are /very/ quick in switching
|
||||
// something else here, so doublecheck:
|
||||
if (Services.prefs.getBoolPref(kDeveditionThemePref)) {
|
||||
aDefaultTheme.userDisabled = false;
|
||||
}
|
||||
});
|
||||
} else if (!currentLWT && !shouldEnable && this._lastLightweightTheme) {
|
||||
LightweightThemeManager.currentTheme = this._lastLightweightTheme;
|
||||
}
|
||||
},
|
||||
|
||||
_onDragStart: function(aEvent) {
|
||||
__dumpDragData(aEvent);
|
||||
let item = aEvent.target;
|
||||
|
@ -53,6 +53,13 @@
|
||||
</panel>
|
||||
</button>
|
||||
|
||||
<button id="customization-devedition-theme-button"
|
||||
class="customizationmode-button"
|
||||
hidden="true"
|
||||
label="&customizeMode.deveditionTheme.label2;"
|
||||
oncommand="gCustomizeMode.toggleDevEditionTheme(this.hasAttribute('checked'))"
|
||||
type="checkbox" />
|
||||
|
||||
<spacer id="customization-footer-spacer"/>
|
||||
<button id="customization-undo-reset-button"
|
||||
class="customizationmode-button"
|
||||
|
@ -5,12 +5,10 @@
|
||||
"use strict";
|
||||
|
||||
const DEFAULT_THEME_ID = "{972ce4c6-7e08-4474-a285-3208198ce6fd}";
|
||||
const {LightweightThemeManager} = Components.utils.import("resource://gre/modules/LightweightThemeManager.jsm", {});
|
||||
|
||||
add_task(function () {
|
||||
Services.prefs.clearUserPref("lightweightThemes.usedThemes");
|
||||
Services.prefs.clearUserPref("lightweightThemes.recommendedThemes");
|
||||
LightweightThemeManager.clearBuiltInThemes();
|
||||
|
||||
yield startCustomizing();
|
||||
|
||||
|
@ -101,6 +101,48 @@ add_task(function() {
|
||||
is(undoResetButton.hidden, true, "Undo reset button should be hidden at end of test");
|
||||
});
|
||||
|
||||
// Bug 1082108 - Restore Defaults should clear user pref for devedition theme
|
||||
add_task(function() {
|
||||
let prefName = "browser.devedition.theme.enabled";
|
||||
Services.prefs.setBoolPref("browser.devedition.theme.showCustomizeButton", true);
|
||||
let defaultValue = Services.prefs.getBoolPref(prefName);
|
||||
let restoreDefaultsButton = document.getElementById("customization-reset-button");
|
||||
let deveditionThemeButton = document.getElementById("customization-devedition-theme-button");
|
||||
let undoResetButton = document.getElementById("customization-undo-reset-button");
|
||||
ok(CustomizableUI.inDefaultState, "Should be in default state at start of test");
|
||||
ok(restoreDefaultsButton.disabled, "Restore defaults button should be disabled when in default state");
|
||||
is(deveditionThemeButton.hasAttribute("checked"), defaultValue, "Devedition theme button should reflect pref value");
|
||||
is(undoResetButton.hidden, true, "Undo reset button should be hidden at start of test");
|
||||
Services.prefs.setBoolPref(prefName, !defaultValue);
|
||||
|
||||
yield waitForCondition(() => !restoreDefaultsButton.disabled);
|
||||
ok(!restoreDefaultsButton.disabled, "Restore defaults button should be enabled when pref changed");
|
||||
is(deveditionThemeButton.hasAttribute("checked"), !defaultValue, "Devedition theme button should reflect changed pref value");
|
||||
ok(!CustomizableUI.inDefaultState, "With devedition theme flipped, no longer default");
|
||||
is(undoResetButton.hidden, true, "Undo reset button should be hidden after pref change");
|
||||
|
||||
yield gCustomizeMode.reset();
|
||||
ok(restoreDefaultsButton.disabled, "Restore defaults button should be disabled after reset");
|
||||
is(deveditionThemeButton.hasAttribute("checked"), defaultValue, "devedition theme button should reflect default value after reset");
|
||||
is(Services.prefs.getBoolPref(prefName), defaultValue, "Reset should reset devedition.theme.enabled");
|
||||
ok(CustomizableUI.inDefaultState, "In default state after devedition theme reset");
|
||||
is(undoResetButton.hidden, false, "Undo reset button should be visible after reset");
|
||||
ok(!undoResetButton.disabled, "Undo reset button should be enabled after reset");
|
||||
|
||||
yield gCustomizeMode.undoReset();
|
||||
ok(!restoreDefaultsButton.disabled, "Restore defaults button should be enabled after undo-reset");
|
||||
is(deveditionThemeButton.hasAttribute("checked"), !defaultValue, "devedition theme button should reflect undo-reset value");
|
||||
ok(!CustomizableUI.inDefaultState, "No longer in default state after undo");
|
||||
is(Services.prefs.getBoolPref(prefName), !defaultValue, "Undo-reset goes back to previous pref value");
|
||||
is(undoResetButton.hidden, true, "Undo reset button should be hidden after undo-reset clicked");
|
||||
|
||||
//XXXgijs this line should be removed once bug 1094509 lands
|
||||
Services.prefs.clearUserPref("devtools.theme");
|
||||
Services.prefs.clearUserPref(prefName);
|
||||
ok(CustomizableUI.inDefaultState, "In default state after pref cleared");
|
||||
is(undoResetButton.hidden, true, "Undo reset button should be hidden at end of test");
|
||||
});
|
||||
|
||||
add_task(function asyncCleanup() {
|
||||
yield gCustomizeMode.reset();
|
||||
yield endCustomizing();
|
||||
|
@ -151,9 +151,6 @@ XPCOMUtils.defineLazyModuleGetter(this, "ReaderParent",
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "AddonWatcher",
|
||||
"resource://gre/modules/AddonWatcher.jsm");
|
||||
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "LightweightThemeManager",
|
||||
"resource://gre/modules/LightweightThemeManager.jsm");
|
||||
|
||||
const PREF_PLUGINS_NOTIFYUSER = "plugins.update.notifyUser";
|
||||
const PREF_PLUGINS_UPDATEURL = "plugins.update.url";
|
||||
|
||||
@ -718,21 +715,6 @@ BrowserGlue.prototype = {
|
||||
DebugUserAgent.init();
|
||||
#endif
|
||||
|
||||
#ifndef RELEASE_BUILD
|
||||
let browserBundle = Services.strings.createBundle("chrome://browser/locale/browser.properties");
|
||||
let brandBundle = Services.strings.createBundle("chrome://branding/locale/brand.properties");
|
||||
let themeName = browserBundle.GetStringFromName("deveditionTheme.name");
|
||||
let vendorShortName = brandBundle.GetStringFromName("vendorShortName");
|
||||
|
||||
LightweightThemeManager.addBuiltInTheme({
|
||||
id: "firefox-devedition@mozilla.org",
|
||||
name: themeName,
|
||||
headerURL: "resource:///chrome/browser/content/browser/defaultthemes/devedition.header.png",
|
||||
iconURL: "resource:///chrome/browser/content/browser/defaultthemes/devedition.icon.png",
|
||||
author: vendorShortName,
|
||||
});
|
||||
#endif
|
||||
|
||||
Services.obs.notifyObservers(null, "browser-ui-startup-complete", "");
|
||||
|
||||
AddonWatcher.init(this._notifySlowAddon);
|
||||
@ -1980,42 +1962,6 @@ BrowserGlue.prototype = {
|
||||
}
|
||||
}
|
||||
|
||||
if (currentUIVersion < 28) {
|
||||
// Convert old devedition theme pref to lightweight theme storage
|
||||
let lightweightThemeSelected = false;
|
||||
let selectedThemeID = null;
|
||||
try {
|
||||
lightweightThemeSelected = Services.prefs.prefHasUserValue("lightweightThemes.selectedThemeID");
|
||||
selectedThemeID = Services.prefs.getCharPref("lightweightThemes.selectedThemeID");
|
||||
} catch(e) {}
|
||||
|
||||
let defaultThemeSelected = false;
|
||||
try {
|
||||
defaultThemeSelected = Services.prefs.getCharPref("general.skins.selectedSkin") == "classic/1.0";
|
||||
} catch(e) {}
|
||||
|
||||
let deveditionThemeEnabled = false;
|
||||
try {
|
||||
deveditionThemeEnabled = Services.prefs.getBoolPref("browser.devedition.theme.enabled");
|
||||
} catch(e) {}
|
||||
|
||||
// If we are on the devedition channel, the devedition theme is on by
|
||||
// default. But we need to handle the case where they didn't want it
|
||||
// applied, and unapply the theme.
|
||||
let userChoseToNotUseDeveditionTheme =
|
||||
!deveditionThemeEnabled ||
|
||||
!defaultThemeSelected ||
|
||||
(lightweightThemeSelected && selectedThemeID != "firefox-devedition@mozilla.org");
|
||||
|
||||
if (userChoseToNotUseDeveditionTheme && selectedThemeID == "firefox-devedition@mozilla.org") {
|
||||
Services.prefs.setCharPref("lightweightThemes.selectedThemeID", "");
|
||||
}
|
||||
|
||||
// Not clearing browser.devedition.theme.enabled, to preserve user's pref
|
||||
// if for some reason this function runs again (even though it shouldn't)
|
||||
Services.prefs.clearUserPref("browser.devedition.showCustomizeButton");
|
||||
}
|
||||
|
||||
if (currentUIVersion < 29) {
|
||||
let group = null;
|
||||
try {
|
||||
|
@ -1 +1 @@
|
||||
39.0a1
|
||||
40.0a1
|
||||
|
@ -26,6 +26,7 @@ support-files =
|
||||
[browser_toolbox_hosts.js]
|
||||
[browser_toolbox_hosts_size.js]
|
||||
[browser_toolbox_options.js]
|
||||
[browser_toolbox_options_devedition.js]
|
||||
[browser_toolbox_options_disable_buttons.js]
|
||||
[browser_toolbox_options_disable_cache-01.js]
|
||||
skip-if = e10s # Bug 1030318
|
||||
|
@ -0,0 +1,59 @@
|
||||
/* Any copyright is dedicated to the Public Domain.
|
||||
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
// Tests that changing preferences in the options panel updates the prefs
|
||||
// and toggles appropriate things in the toolbox.
|
||||
|
||||
let doc = null, toolbox = null, panelWin = null;
|
||||
|
||||
const PREF_ENABLED = "browser.devedition.theme.enabled";
|
||||
const PREF_SHOW = "browser.devedition.theme.showCustomizeButton";
|
||||
|
||||
const URL = "data:text/html;charset=utf8,test for toggling dev edition browser theme toggling";
|
||||
|
||||
add_task(function*() {
|
||||
// Set preference to false by default so this could
|
||||
// run in Developer Edition which has it on by default.
|
||||
Services.prefs.setBoolPref(PREF_ENABLED, false);
|
||||
Services.prefs.setBoolPref(PREF_SHOW, true);
|
||||
|
||||
let tab = yield addTab(URL);
|
||||
let target = TargetFactory.forTab(tab);
|
||||
toolbox = yield gDevTools.showToolbox(target);
|
||||
let tool = yield toolbox.selectTool("options");
|
||||
panelWin = tool.panelWin;
|
||||
|
||||
let checkbox = tool.panelDoc.getElementById("devtools-browser-theme");
|
||||
|
||||
ise(Services.prefs.getBoolPref(PREF_ENABLED), false, "Dev Theme pref off on start");
|
||||
|
||||
let themeStatus = yield clickAndWaitForThemeChange(checkbox, panelWin);
|
||||
ise(themeStatus, true, "Theme has been toggled on.");
|
||||
|
||||
themeStatus = yield clickAndWaitForThemeChange(checkbox, panelWin);
|
||||
ise(themeStatus, false, "Theme has been toggled off.");
|
||||
|
||||
yield cleanup();
|
||||
});
|
||||
|
||||
function clickAndWaitForThemeChange (el, win) {
|
||||
let deferred = promise.defer();
|
||||
gDevTools.on("pref-changed", function handler (event, {pref}) {
|
||||
if (pref === PREF_ENABLED) {
|
||||
gDevTools.off("pref-changed", handler);
|
||||
deferred.resolve(Services.prefs.getBoolPref(PREF_ENABLED));
|
||||
}
|
||||
});
|
||||
|
||||
EventUtils.synthesizeMouseAtCenter(el, {}, win);
|
||||
|
||||
return deferred.promise;
|
||||
}
|
||||
|
||||
function* cleanup() {
|
||||
yield toolbox.destroy();
|
||||
gBrowser.removeCurrentTab();
|
||||
Services.prefs.clearUserPref(PREF_ENABLED);
|
||||
Services.prefs.clearUserPref(PREF_SHOW);
|
||||
toolbox = doc = panelWin = null;
|
||||
}
|
@ -9,6 +9,9 @@ const Services = require("Services");
|
||||
const promise = require("promise");
|
||||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "gDevTools", "resource:///modules/devtools/gDevTools.jsm");
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "CustomizeMode", "resource:///modules/CustomizeMode.jsm");
|
||||
const kDeveditionChangedNotification = "devedition-theme-state-changed";
|
||||
const DEVEDITION_THEME_PREF = "browser.devedition.theme.enabled";
|
||||
|
||||
exports.OptionsPanel = OptionsPanel;
|
||||
|
||||
@ -84,6 +87,7 @@ function OptionsPanel(iframeWindow, toolbox) {
|
||||
|
||||
this._addListeners();
|
||||
|
||||
Services.obs.addObserver(this, kDeveditionChangedNotification, false);
|
||||
const EventEmitter = require("devtools/toolkit/event-emitter");
|
||||
EventEmitter.decorate(this);
|
||||
}
|
||||
@ -108,6 +112,7 @@ OptionsPanel.prototype = {
|
||||
this.setupToolsList();
|
||||
this.setupToolbarButtonsList();
|
||||
this.setupThemeList();
|
||||
this.setupBrowserThemeButton();
|
||||
this.populatePreferences();
|
||||
this.updateDefaultTheme();
|
||||
}).then(() => {
|
||||
@ -141,6 +146,8 @@ OptionsPanel.prototype = {
|
||||
}
|
||||
else if (data.pref === "devtools.theme") {
|
||||
this.updateCurrentTheme();
|
||||
} else if (data.pref === "browser.devedition.theme.enabled") {
|
||||
this.updateBrowserTheme();
|
||||
}
|
||||
},
|
||||
|
||||
@ -276,6 +283,52 @@ OptionsPanel.prototype = {
|
||||
this.updateCurrentTheme();
|
||||
},
|
||||
|
||||
/**
|
||||
* Similar to `populatePrefs`, except we want more
|
||||
* special rules for the browser theme button.
|
||||
*/
|
||||
setupBrowserThemeButton: function() {
|
||||
let checkbox = this.panelDoc.getElementById("devtools-browser-theme");
|
||||
|
||||
checkbox.addEventListener("command", function() {
|
||||
setPrefAndEmit(DEVEDITION_THEME_PREF, this.checked);
|
||||
}.bind(checkbox));
|
||||
|
||||
this.updateBrowserThemeButton();
|
||||
},
|
||||
|
||||
/**
|
||||
* Called on theme changed via observer of "devedition-theme-state-changed".
|
||||
*/
|
||||
updateBrowserThemeButton: function() {
|
||||
let checkbox = this.panelDoc.getElementById("devtools-browser-theme");
|
||||
|
||||
// Check if the dev edition style sheet is applied -- will not
|
||||
// be applied when dev edition theme is disabled, or when there's
|
||||
// a LWT applied.
|
||||
if (this._isDevEditionThemeOn()) {
|
||||
checkbox.setAttribute("checked", "true");
|
||||
} else {
|
||||
checkbox.removeAttribute("checked");
|
||||
}
|
||||
|
||||
// Should the button be shown
|
||||
if (GetPref("browser.devedition.theme.showCustomizeButton")) {
|
||||
checkbox.removeAttribute("hidden");
|
||||
} else {
|
||||
checkbox.setAttribute("hidden", "true");
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Called when clicking the browser theme button to enable/disable
|
||||
* the dev edition browser theme.
|
||||
*/
|
||||
updateBrowserTheme: function() {
|
||||
let enabled = GetPref("browser.devedition.theme.enabled");
|
||||
CustomizeMode.prototype.toggleDevEditionTheme.call(this, enabled);
|
||||
},
|
||||
|
||||
populatePreferences: function() {
|
||||
let prefCheckboxes = this.panelDoc.querySelectorAll("checkbox[data-pref]");
|
||||
for (let checkbox of prefCheckboxes) {
|
||||
@ -364,6 +417,25 @@ OptionsPanel.prototype = {
|
||||
this.target.activeTab.reconfigure(options);
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns a boolean indicating whether or not the dev edition
|
||||
* browser theme is applied.
|
||||
*/
|
||||
_isDevEditionThemeOn: function() {
|
||||
let win = Services.wm.getMostRecentWindow("navigator:browser");
|
||||
return !!(win && win.DevEdition.styleSheet);
|
||||
},
|
||||
|
||||
/**
|
||||
* Called on observer notification for "devedition-theme-state-changed"
|
||||
* to possibly change the state of the dev edition button
|
||||
*/
|
||||
observe: function(aSubject, aTopic, aData) {
|
||||
if (aTopic === kDeveditionChangedNotification) {
|
||||
this.updateBrowserThemeButton();
|
||||
}
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
if (this.destroyPromise) {
|
||||
return this.destroyPromise;
|
||||
@ -388,6 +460,8 @@ OptionsPanel.prototype = {
|
||||
|
||||
this.panelWin = this.panelDoc = this.disableJSNode = null;
|
||||
|
||||
Services.obs.removeObserver(this, kDeveditionChangedNotification);
|
||||
|
||||
return deferred.promise;
|
||||
}
|
||||
};
|
||||
|
@ -35,6 +35,9 @@
|
||||
data-pref="devtools.theme"
|
||||
orient="horizontal">
|
||||
</radiogroup>
|
||||
<checkbox id="devtools-browser-theme"
|
||||
label="&options.usedeveditiontheme.label;"
|
||||
tooltiptext="&options.usedeveditiontheme.tooltip;"/>
|
||||
</vbox>
|
||||
<label>&options.commonPrefs.label;</label>
|
||||
<vbox id="commonprefs-options" class="options-groupbox">
|
||||
|
@ -52,6 +52,7 @@ let connect = Task.async(function*() {
|
||||
function setPrefDefaults() {
|
||||
Services.prefs.setBoolPref("devtools.inspector.showUserAgentStyles", true);
|
||||
Services.prefs.setBoolPref("devtools.profiler.ui.show-platform-data", true);
|
||||
Services.prefs.setBoolPref("browser.devedition.theme.showCustomizeButton", false);
|
||||
Services.prefs.setBoolPref("devtools.inspector.showAllAnonymousContent", true);
|
||||
Services.prefs.setBoolPref("browser.dom.window.dump.enabled", true);
|
||||
Services.prefs.setBoolPref("devtools.command-button-frames.enabled", true);
|
||||
|
@ -742,6 +742,7 @@ just addresses the organization to follow, e.g. "This site is run by " -->
|
||||
<!ENTITY customizeMode.lwthemes.menuManage.accessKey "M">
|
||||
<!ENTITY customizeMode.lwthemes.menuGetMore "Get More Themes">
|
||||
<!ENTITY customizeMode.lwthemes.menuGetMore.accessKey "G">
|
||||
<!ENTITY customizeMode.deveditionTheme.label2 "Use Developer Edition Theme">
|
||||
|
||||
<!ENTITY social.chatBar.commandkey "c">
|
||||
<!ENTITY social.chatBar.label "Focus chats">
|
||||
|
@ -141,6 +141,7 @@ let ReaderParent = {
|
||||
button.setAttribute("tooltiptext", closeText);
|
||||
command.setAttribute("label", closeText);
|
||||
command.setAttribute("hidden", false);
|
||||
command.setAttribute("accesskey", gStringBundle.GetStringFromName("readerView.close.accesskey"));
|
||||
} else {
|
||||
button.removeAttribute("readeractive");
|
||||
button.hidden = !browser.isArticle;
|
||||
@ -148,8 +149,8 @@ let ReaderParent = {
|
||||
button.setAttribute("tooltiptext", enterText);
|
||||
command.setAttribute("label", enterText);
|
||||
command.setAttribute("hidden", !browser.isArticle);
|
||||
command.setAttribute("accesskey", gStringBundle.GetStringFromName("readerView.enter.accesskey"));
|
||||
}
|
||||
command.setAttribute("accesskey", gStringBundle.GetStringFromName("readerView.accesskey"));
|
||||
},
|
||||
|
||||
toggleReaderMode: function(event) {
|
||||
|
@ -10,4 +10,4 @@
|
||||
# hardcoded milestones in the tree from these two files.
|
||||
#--------------------------------------------------------
|
||||
|
||||
39.0a1
|
||||
40.0a1
|
||||
|
@ -288,7 +288,7 @@ if test -n "$gonkdir" ; then
|
||||
AC_DEFINE(MOZ_AUDIO_OFFLOAD)
|
||||
MOZ_FMP4=1
|
||||
;;
|
||||
21)
|
||||
21|22)
|
||||
GONK_INCLUDES="-I$gonkdir/frameworks/native/include -I$gonkdir/frameworks/av/include -I$gonkdir/frameworks/av/include/media -I$gonkdir/frameworks/av/include/camera -I$gonkdir/frameworks/native/include/media/openmax -I$gonkdir/frameworks/av/media/libstagefright/include"
|
||||
MOZ_AUDIO_OFFLOAD=1
|
||||
MOZ_OMX_DECODER=1
|
||||
|
@ -334,6 +334,8 @@ private:
|
||||
|
||||
bool mIsWatchingFile;
|
||||
bool mAllowedToWatchFile;
|
||||
bool mIsDefaultLocation;
|
||||
void DispatchDefaultChangeEvent();
|
||||
|
||||
nsresult Notify(const char* aReason, class DeviceStorageFile* aFile);
|
||||
|
||||
|
@ -76,6 +76,7 @@
|
||||
#define DEFAULT_THREAD_TIMEOUT_MS 30000
|
||||
#define PREF_STORAGE_WRITABLE_NAME \
|
||||
"device.storage.writable.name"
|
||||
#define STORAGE_CHANGE_EVENT "change"
|
||||
|
||||
using namespace mozilla;
|
||||
using namespace mozilla::dom;
|
||||
@ -3366,6 +3367,8 @@ nsDOMDeviceStorage::Init(nsPIDOMWindow* aWindow, const nsAString &aType,
|
||||
return NS_ERROR_NOT_AVAILABLE;
|
||||
}
|
||||
if (!mStorageName.IsEmpty()) {
|
||||
Preferences::AddStrongObserver(this, PREF_STORAGE_WRITABLE_NAME);
|
||||
mIsDefaultLocation = Default();
|
||||
RegisterForSDCardChanges(this);
|
||||
|
||||
#ifdef MOZ_WIDGET_GONK
|
||||
@ -3439,6 +3442,7 @@ nsDOMDeviceStorage::Shutdown()
|
||||
}
|
||||
|
||||
if (!mStorageName.IsEmpty()) {
|
||||
Preferences::RemoveObserver(this, PREF_STORAGE_WRITABLE_NAME);
|
||||
UnregisterForSDCardChanges(this);
|
||||
}
|
||||
|
||||
@ -4330,6 +4334,34 @@ nsDOMDeviceStorage::EnumerateInternal(const nsAString& aPath,
|
||||
return cursor.forget();
|
||||
}
|
||||
|
||||
void
|
||||
nsDOMDeviceStorage::DispatchDefaultChangeEvent()
|
||||
{
|
||||
nsAdoptingString DefaultLocation;
|
||||
GetDefaultStorageName(mStorageType, DefaultLocation);
|
||||
|
||||
DeviceStorageChangeEventInit init;
|
||||
init.mBubbles = true;
|
||||
init.mCancelable = false;
|
||||
init.mPath = DefaultLocation;
|
||||
|
||||
if (mIsDefaultLocation) {
|
||||
init.mReason.AssignLiteral("default-location-changed");
|
||||
} else {
|
||||
init.mReason.AssignLiteral("became-default-location");
|
||||
}
|
||||
|
||||
nsRefPtr<DeviceStorageChangeEvent> event =
|
||||
DeviceStorageChangeEvent::Constructor(this,
|
||||
NS_LITERAL_STRING(STORAGE_CHANGE_EVENT),
|
||||
init);
|
||||
event->SetTrusted(true);
|
||||
|
||||
bool ignore;
|
||||
DispatchEvent(event, &ignore);
|
||||
mIsDefaultLocation = Default();
|
||||
}
|
||||
|
||||
#ifdef MOZ_WIDGET_GONK
|
||||
void
|
||||
nsDOMDeviceStorage::DispatchStatusChangeEvent(nsAString& aStatus)
|
||||
@ -4347,7 +4379,8 @@ nsDOMDeviceStorage::DispatchStatusChangeEvent(nsAString& aStatus)
|
||||
init.mReason = aStatus;
|
||||
|
||||
nsRefPtr<DeviceStorageChangeEvent> event =
|
||||
DeviceStorageChangeEvent::Constructor(this, NS_LITERAL_STRING("change"),
|
||||
DeviceStorageChangeEvent::Constructor(this,
|
||||
NS_LITERAL_STRING(STORAGE_CHANGE_EVENT),
|
||||
init);
|
||||
event->SetTrusted(true);
|
||||
|
||||
@ -4408,6 +4441,14 @@ nsDOMDeviceStorage::Observe(nsISupports *aSubject,
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
if (!strcmp(aTopic, NS_PREFBRANCH_PREFCHANGE_TOPIC_ID) &&
|
||||
aData &&
|
||||
nsDependentString(aData).Equals(NS_LITERAL_STRING(PREF_STORAGE_WRITABLE_NAME)))
|
||||
{
|
||||
DispatchDefaultChangeEvent();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
#ifdef MOZ_WIDGET_GONK
|
||||
else if (!strcmp(aTopic, NS_VOLUME_STATE_CHANGED)) {
|
||||
// We invalidate the used space cache for the volume that actually changed
|
||||
@ -4465,7 +4506,8 @@ nsDOMDeviceStorage::Notify(const char* aReason, DeviceStorageFile* aFile)
|
||||
init.mReason.AssignWithConversion(aReason);
|
||||
|
||||
nsRefPtr<DeviceStorageChangeEvent> event =
|
||||
DeviceStorageChangeEvent::Constructor(this, NS_LITERAL_STRING("change"),
|
||||
DeviceStorageChangeEvent::Constructor(this,
|
||||
NS_LITERAL_STRING(STORAGE_CHANGE_EVENT),
|
||||
init);
|
||||
event->SetTrusted(true);
|
||||
|
||||
|
@ -31,8 +31,10 @@ this.WifiNetUtil = function(controlMessage) {
|
||||
var util = {};
|
||||
|
||||
util.runDhcp = function (ifname, callback) {
|
||||
gNetworkService.dhcpRequest(ifname, function(success, dhcpInfo) {
|
||||
util.runIpConfig(ifname, dhcpInfo, callback);
|
||||
util.stopDhcp(ifname, function() {
|
||||
gNetworkService.dhcpRequest(ifname, function(success, dhcpInfo) {
|
||||
util.runIpConfig(ifname, dhcpInfo, callback);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
@ -44,7 +46,16 @@ this.WifiNetUtil = function(controlMessage) {
|
||||
let dhcpService = DHCP_PROP + "_" + ifname;
|
||||
let suffix = (ifname.substr(0, 3) === "p2p") ? "p2p" : ifname;
|
||||
let processName = DHCP + "_" + suffix;
|
||||
stopProcess(dhcpService, processName, callback);
|
||||
|
||||
// The implementation of |dhcp_do_request| would wait until the
|
||||
// |result_prop_name| (e.g. dhcp.wlan0.result) to be non-null
|
||||
// or 30 second timeout. So we manually change the result property
|
||||
// to 'ko' to avoid timeout.
|
||||
//
|
||||
// http://androidxref.com/4.4.4_r1/xref/system/core/libnetutils/dhcp_utils.c#234
|
||||
setProperty('dhcp.' + suffix + '.result', 'ko', function() {
|
||||
stopProcess(dhcpService, processName, callback);
|
||||
});
|
||||
};
|
||||
|
||||
util.startDhcpServer = function (config, callback) {
|
||||
|
@ -3279,23 +3279,7 @@ WifiWorker.prototype = {
|
||||
WifiManager.reconnect(function (ok) {
|
||||
self._sendMessage(message, ok, ok, msg);
|
||||
});
|
||||
} else if (WifiManager.state == "INACTIVE") {
|
||||
// If AP info didn't clear, then call associate function.
|
||||
// That maybe occurs wpa supplicant that suppose already associated.
|
||||
// To avoid this case, need to clear AP info and call reassoiate
|
||||
// in INACTIVE state.
|
||||
let networkKey = getNetworkKey(network);
|
||||
if (!(networkKey in this.configuredNetworks)) {
|
||||
self._sendMessage(message, false, "Trying to forget an unknown network", msg);
|
||||
return;
|
||||
}
|
||||
let configured = this.configuredNetworks[networkKey];
|
||||
WifiManager.removeNetwork(configured.netId, function() {
|
||||
WifiManager.reassociate(function() {
|
||||
self._sendMessage(message, ok, ok, msg);
|
||||
});
|
||||
});
|
||||
}else {
|
||||
} else {
|
||||
self._sendMessage(message, ok, ok, msg);
|
||||
}
|
||||
});
|
||||
|
@ -835,10 +835,21 @@ let gTestSuite = (function() {
|
||||
* @return A deferred promise.
|
||||
*/
|
||||
function writeFile(aFilePath, aContent) {
|
||||
if (-1 === aContent.indexOf(' ')) {
|
||||
aContent = '"' + aContent + '"';
|
||||
const CONTENT_MAX_LENGTH = 900;
|
||||
var commands = [];
|
||||
for (var i = 0; i < aContent.length; i += CONTENT_MAX_LENGTH) {
|
||||
var content = aContent.substr(i, CONTENT_MAX_LENGTH);
|
||||
if (-1 === content.indexOf(' ')) {
|
||||
content = '"' + content + '"';
|
||||
}
|
||||
commands.push(['echo', '-n', content, i === 0 ? '>' : '>>', aFilePath]);
|
||||
}
|
||||
return runEmulatorShellSafe(['echo', aContent, '>', aFilePath]);
|
||||
|
||||
let chain = Promise.resolve();
|
||||
commands.forEach(function (command) {
|
||||
chain = chain.then(() => runEmulatorShellSafe(command));
|
||||
});
|
||||
return chain;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1242,6 +1253,7 @@ let gTestSuite = (function() {
|
||||
suite.importCert = importCert;
|
||||
suite.getImportedCerts = getImportedCerts;
|
||||
suite.deleteCert = deleteCert;
|
||||
suite.writeFile = writeFile;
|
||||
|
||||
/**
|
||||
* Common test routine.
|
||||
@ -1364,7 +1376,7 @@ let gTestSuite = (function() {
|
||||
* @return A deferred promise.
|
||||
*/
|
||||
suite.doTestWithCertificate = function(certBlob, password, nickname, usage, aTestCaseChain) {
|
||||
return suite.doTest(function() {
|
||||
return suite.doTestWithoutStockAp(function() {
|
||||
return ensureWifiEnabled(true)
|
||||
// Import test certificate.
|
||||
.then(() => importCert(certBlob, password, nickname))
|
||||
|
@ -14,4 +14,7 @@ qemu = true
|
||||
[test_wifi_manage_server_certificate.js]
|
||||
[test_wifi_manage_user_certificate.js]
|
||||
[test_wifi_manage_pkcs12_certificate.js]
|
||||
[test_wifi_associate_WPA_EAP_PEAP.js]
|
||||
[test_wifi_associate_WPA_EAP_TTLS.js]
|
||||
[test_wifi_associate_WPA_EAP_TLS.js]
|
||||
[test_wifi_enable_api.js]
|
||||
|
623
dom/wifi/test/marionette/test_wifi_associate_WPA_EAP_PEAP.js
Normal file
623
dom/wifi/test/marionette/test_wifi_associate_WPA_EAP_PEAP.js
Normal file
@ -0,0 +1,623 @@
|
||||
/* Any copyright is dedicated to the Public Domain.
|
||||
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
MARIONETTE_TIMEOUT = 60000;
|
||||
MARIONETTE_HEAD_JS = 'head.js';
|
||||
|
||||
const SCAN_RETRY_CNT = 5;
|
||||
|
||||
const EAP_USERNAME = 'username';
|
||||
const EAP_PASSWORD = 'password';
|
||||
|
||||
const SERVER_EAP_USER_CONF = {
|
||||
path: HOSTAPD_CONFIG_PATH + 'hostapd.eap_user',
|
||||
content: '* PEAP,TTLS,TLS\n' +
|
||||
'"' + EAP_USERNAME + '" MSCHAPV2,TTLS-MSCHAPV2 "' + EAP_PASSWORD + '" [2]\n'
|
||||
};
|
||||
const CA_CERT = {
|
||||
path: HOSTAPD_CONFIG_PATH + 'ca.pem',
|
||||
content: '-----BEGIN CERTIFICATE-----\n' +
|
||||
'MIIDsTCCApmgAwIBAgIJAKxTf+8X8qngMA0GCSqGSIb3DQEBCwUAMG4xCzAJBgNV\n' +
|
||||
'BAYTAlRXMRMwEQYDVQQIDApTb21lLVN0YXRlMREwDwYDVQQKDAhjaHVja2xlZTER\n' +
|
||||
'MA8GA1UEAwwIY2h1Y2tsZWUxJDAiBgkqhkiG9w0BCQEWFWNodWNrbGkwNzA2QGdt\n' +
|
||||
'YWlsLmNvbTAgFw0xNDEyMjQxMTI4NTBaGA8yMjg4MTAwNzExMjg1MFowbjELMAkG\n' +
|
||||
'A1UEBhMCVFcxEzARBgNVBAgMClNvbWUtU3RhdGUxETAPBgNVBAoMCGNodWNrbGVl\n' +
|
||||
'MREwDwYDVQQDDAhjaHVja2xlZTEkMCIGCSqGSIb3DQEJARYVY2h1Y2tsaTA3MDZA\n' +
|
||||
'Z21haWwuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAo3c2yFxY\n' +
|
||||
'o6gGg0I83jy00ME+MAfzCd+4ShL45ZLqysQP93jRBfPzU9ZuZ29ysVwgWIdqkZao\n' +
|
||||
'XTuV/NAW2GMGd8W1jQJ3J81fjb9wvhlny3rrACwvUn1N1S1BnM+BAAiDLGxEmvAQ\n' +
|
||||
'onp2aaa6HsHsYS8ONX+d2Qh4LEA4vupeSGAqJychCZv/l+aq/ErFZhFYB3CPUQEt\n' +
|
||||
'cClO24ucsIYP95lA0zhscnmAj06qplFD4Bv6IVrdDqujy1zNwCQwsJq/8OQdaTN/\n' +
|
||||
'h3y9pWvNKMBMM2niOUAjtuNpqsSK/lTS1WAT3PdtVECX9fYBi0Bg+HM92xs/6gt6\n' +
|
||||
'kh9jPV8keXHvSwIDAQABo1AwTjAdBgNVHQ4EFgQU7hBqhuG04xeCzrQ3ngx18ZJ3\n' +
|
||||
'lUswHwYDVR0jBBgwFoAU7hBqhuG04xeCzrQ3ngx18ZJ3lUswDAYDVR0TBAUwAwEB\n' +
|
||||
'/zANBgkqhkiG9w0BAQsFAAOCAQEAFYX2iy680GAnBTttk0gyX6gk+8pYr3D22k/G\n' +
|
||||
'6rvcjefzS7ELQPRKr6mfmwXq3mMf/4jiS2zI5zmXsestPYzHYxf2viQ6t7vr9XiJ\n' +
|
||||
'3WfFjNw4ERlRisAvg0aqqTNNQq5v2VME4sdFZagy217f73C7azwCHl0bqOLH05rl\n' +
|
||||
'8RubOxiHEj7ZybJqnRciK/bht4D+rZkwf4bBBmoloqH7xT0+rFQclpYXDGGjNUQB\n' +
|
||||
'LcHLF10xcr7g3ZVVu82fe6+d85gIGOIMR9+TKhdw6gO3CNcnDAj6gxksghgtcxmh\n' +
|
||||
'OzOggCn7nlIwImtsg2sZkpWB4lEi9hdv4lkNuyFjOL3bnuc+NA==\n' +
|
||||
'-----END CERTIFICATE-----\n'
|
||||
};
|
||||
|
||||
const SERVER_CERT = {
|
||||
path: HOSTAPD_CONFIG_PATH + 'server.pem',
|
||||
content: '-----BEGIN CERTIFICATE-----\n' +
|
||||
'MIID1DCCArygAwIBAgIBADANBgkqhkiG9w0BAQsFADBuMQswCQYDVQQGEwJUVzET\n' +
|
||||
'MBEGA1UECAwKU29tZS1TdGF0ZTERMA8GA1UECgwIY2h1Y2tsZWUxETAPBgNVBAMM\n' +
|
||||
'CGNodWNrbGVlMSQwIgYJKoZIhvcNAQkBFhVjaHVja2xpMDcwNkBnbWFpbC5jb20w\n' +
|
||||
'IBcNMTQxMjI0MTEyOTQ5WhgPMjI4ODEwMDcxMTI5NDlaMG4xCzAJBgNVBAYTAlRX\n' +
|
||||
'MRMwEQYDVQQIDApTb21lLVN0YXRlMREwDwYDVQQKDAhjaHVja2xlZTERMA8GA1UE\n' +
|
||||
'AwwIY2h1Y2tsZWUxJDAiBgkqhkiG9w0BCQEWFWNodWNrbGkwNzA2QGdtYWlsLmNv\n' +
|
||||
'bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMdhQmKilTJbWZRxTiSV\n' +
|
||||
'rqIU+LYW1RKghx5o+0JpNRJVLuz5kBMaNskbbfUSNuHbEq0QA9BDKAZWIc4LSotk\n' +
|
||||
'lCo8TbcO9CJvJPQGGjGdHcohWX5vy6BE/OVE46CUteMFyZF6F8R2fNUww08iR/u1\n' +
|
||||
'YZebL5pWO1j43sPpAzEy6Tij2ACPt6EZcFaZG3SF2mVJWkCQnBqrojP65WUvZQqp\n' +
|
||||
'seUhW2YAS8Nu0Yrohgxz6VYk+cNDuDZVGs6qWRStZzJfYrfc76DtkHof5B14M+xp\n' +
|
||||
'XJaBLxN+whvnYkDTfinaCxnW1O7eXUltr87fLc5zmeBkgwaiaQuIdcfZm7vDUiz8\n' +
|
||||
'vnUCAwEAAaN7MHkwCQYDVR0TBAIwADAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBH\n' +
|
||||
'ZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFKK4f9/YavTHOfEiAB83Deac\n' +
|
||||
'6gT5MB8GA1UdIwQYMBaAFO4QaobhtOMXgs60N54MdfGSd5VLMA0GCSqGSIb3DQEB\n' +
|
||||
'CwUAA4IBAQBWnO9o9KSJIqjoz5Nwll63ULOdcvgGdOeJIw1fcKQ817Rsp+TVcjcH\n' +
|
||||
'IrIADsT/QZGXRO/l6p1750e2iFtJEo1hsRaxtA1wWn2I9HO3+av2spQhr3jpYGPf\n' +
|
||||
'zpsMTp4RNYV7Q8+q1kZIz9PY4V1T0p6lveK8+fUj2hSLnxSj0QiGSJJtnEC3w4Rv\n' +
|
||||
'C9T6oUwIeToULmi+8FXQFdEqwKRU98DPq3eLzN28ZxUgoPE1C8+42D2UW8uyp/Gm\n' +
|
||||
'tGOa/k7nzkCdVqZI7lX7f0AjEvQgjtAMQ/k7Mhxx7TzW2HO+1YPMoKji6Z4WkNwt\n' +
|
||||
'JEj9ZUBSNt8B26UksJMBDkcvSegF3a7o\n' +
|
||||
'-----END CERTIFICATE-----\n'
|
||||
};
|
||||
|
||||
const SERVER_KEY = {
|
||||
path: HOSTAPD_CONFIG_PATH + 'server.key',
|
||||
content: '-----BEGIN RSA PRIVATE KEY-----\n' +
|
||||
'MIIEpAIBAAKCAQEAx2FCYqKVMltZlHFOJJWuohT4thbVEqCHHmj7Qmk1ElUu7PmQ\n' +
|
||||
'Exo2yRtt9RI24dsSrRAD0EMoBlYhzgtKi2SUKjxNtw70Im8k9AYaMZ0dyiFZfm/L\n' +
|
||||
'oET85UTjoJS14wXJkXoXxHZ81TDDTyJH+7Vhl5svmlY7WPjew+kDMTLpOKPYAI+3\n' +
|
||||
'oRlwVpkbdIXaZUlaQJCcGquiM/rlZS9lCqmx5SFbZgBLw27RiuiGDHPpViT5w0O4\n' +
|
||||
'NlUazqpZFK1nMl9it9zvoO2Qeh/kHXgz7GlcloEvE37CG+diQNN+KdoLGdbU7t5d\n' +
|
||||
'SW2vzt8tznOZ4GSDBqJpC4h1x9mbu8NSLPy+dQIDAQABAoIBAASG4Mr8hgaurEoC\n' +
|
||||
'iJOsElr7vunjetMBcg/uskW/vcS8ymP3Bp5oafYG+WgnEbfvEW18f5mq7K24JuxW\n' +
|
||||
'tUqU7ghHdjxByqk9fMlNmiqmNpbwSufkAeuRpWxPNBvhRH/zEbCL5R5A0nTEtqqF\n' +
|
||||
'TL0aUSzwCRSoAJD0lZo9ICVt0n3GsDyM9rqQg/uZmh1qsRdwPsRuYORND9g48rKq\n' +
|
||||
'6WN9leskSxhhsYE2D9ocOFd9bNt8Zxejh9ppVSnG/KsIdt18iBzcabatgAQ046fb\n' +
|
||||
'Z3vprcZJLg93Sg2gSuVqlSTs3M2W8VQnm22/EBMb1y0M48MSRCgnbPLG/CcCLLfF\n' +
|
||||
'LwxCOgECgYEA/eYt67xyJ6JeAdxdwOZuT1WWGbFpLiG9+2OgiHumyRQ5969XMTWo\n' +
|
||||
'fIhMKchDdjoy9RR236\/\/EFCs7UEyB7+a7ODRzNiK2zCD8Smjp+21fUPSthEeQesk\n' +
|
||||
'eiMYICIu5Ay35x9sxIX+XOUVvRhPOGcD29GVeRnKh1inTHOz2dje8LkCgYEAyQeY\n' +
|
||||
'STi9jjCEcHkM1E/UeDiLfHHepLXi8wS41JNRHl5Jacp7XB5djAjKu/jf367/VpFy\n' +
|
||||
'GDDMetE7n8eWkrnAvovxOwZ000YDMtL1sUYSjL+XtBS5s6VY1p4qaSAY9nUUGrJh\n' +
|
||||
'JvtvsuI7SKTtL+60vjBOH7zDnvOdBgAp0utLhZ0CgYEAuLzzqrPKB8afShFSchn4\n' +
|
||||
'J2dpuLYahsNsXW7HDqeR2nsKFosRETAusLXnXPtnAq4kB6jlOarwFqnsuRCX24Vx\n' +
|
||||
'r2uBm9/vYL7zMdUPTA+s30ErHuhjsKjsOKYyVqcooSwT32pBFNk+E89nutfmRG7I\n' +
|
||||
'IvhjHuNCNqqtx/Xj5d1jkZkCgYBQicppC2Jl5OoqZVTOem0U/RJk+PnJ41TZJ7sk\n' +
|
||||
'7yBAmmWvDH\/\/l+rCf4M5a6vFYcbKV9rt9h711X2dtciNX/3oWQh8LUoAmrwNUJc+\n' +
|
||||
'PmSQHvIYI3WCk2vUD+nN1B4sHxu+1lg11eYaNKiroeeknG2tBI1ICcgVlmQCU25u\n' +
|
||||
'IfZPwQKBgQCdO6QHhPLtcHUDNFA6FQ1jKL1iEd7G0JLVRz4Xkpkn1Vrr5MD6JFDa\n' +
|
||||
'5ccabADyl0lpFqDIVJQIzLku2hOD2i9aBNCY0pL391HeOS7CkZX+TdOY1tquoBq5\n' +
|
||||
'MnmixZjDCVd2VcrVyTA6ntOBoharKFW0rH1PqU+qu7dZF7CBPbAdEw==\n' +
|
||||
'-----END RSA PRIVATE KEY-----\n'
|
||||
};
|
||||
|
||||
const WPA_EAP_AP_LIST = [
|
||||
{
|
||||
ssid: 'WPA-EAP-PEAP',
|
||||
ieee8021x: 1,
|
||||
eapol_version: 1,
|
||||
eap_server: 1,
|
||||
eapol_key_index_workaround: 0,
|
||||
eap_user_file: SERVER_EAP_USER_CONF.path,
|
||||
ca_cert: CA_CERT.path,
|
||||
server_cert: SERVER_CERT.path,
|
||||
private_key: SERVER_KEY.path,
|
||||
wpa: 3,
|
||||
wpa_key_mgmt: 'WPA-EAP'
|
||||
}
|
||||
];
|
||||
|
||||
const CLIENT_PKCS12_CERT = {
|
||||
nickname: 'client',
|
||||
password: 'password',
|
||||
usage: ['UserCert', 'ServerCert'],
|
||||
content: [0x30, 0x82, 0x0E, 0x01, 0x02, 0x01, 0x03, 0x30,
|
||||
0x82, 0x0D, 0xC7, 0x06, 0x09, 0x2A, 0x86, 0x48,
|
||||
0x86, 0xF7, 0x0D, 0x01, 0x07, 0x01, 0xA0, 0x82,
|
||||
0x0D, 0xB8, 0x04, 0x82, 0x0D, 0xB4, 0x30, 0x82,
|
||||
0x0D, 0xB0, 0x30, 0x82, 0x08, 0x67, 0x06, 0x09,
|
||||
0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x07,
|
||||
0x06, 0xA0, 0x82, 0x08, 0x58, 0x30, 0x82, 0x08,
|
||||
0x54, 0x02, 0x01, 0x00, 0x30, 0x82, 0x08, 0x4D,
|
||||
0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D,
|
||||
0x01, 0x07, 0x01, 0x30, 0x1C, 0x06, 0x0A, 0x2A,
|
||||
0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x0C, 0x01,
|
||||
0x06, 0x30, 0x0E, 0x04, 0x08, 0x67, 0x7A, 0xF3,
|
||||
0x61, 0xBE, 0xE0, 0x51, 0xC1, 0x02, 0x02, 0x08,
|
||||
0x00, 0x80, 0x82, 0x08, 0x20, 0xFC, 0x6A, 0x79,
|
||||
0xA1, 0x6C, 0xAF, 0xBE, 0xEE, 0x62, 0x45, 0x33,
|
||||
0xB8, 0x48, 0xE1, 0x68, 0xA1, 0x15, 0x11, 0x4B,
|
||||
0x95, 0xCB, 0x77, 0xC0, 0x5D, 0xA2, 0xCB, 0xDB,
|
||||
0xD1, 0x83, 0x74, 0x60, 0xD7, 0xEC, 0x42, 0xA6,
|
||||
0x3A, 0x23, 0xF7, 0x85, 0xEB, 0xC1, 0xFE, 0x6A,
|
||||
0x57, 0x8E, 0xC1, 0x44, 0xF3, 0x1F, 0xFE, 0xB8,
|
||||
0x2D, 0x8C, 0x4D, 0xC9, 0x5B, 0xAE, 0x21, 0x2E,
|
||||
0x4C, 0x1A, 0xEB, 0x84, 0x09, 0xF3, 0x40, 0x92,
|
||||
0x39, 0x7F, 0x56, 0x02, 0x46, 0x61, 0x16, 0xDE,
|
||||
0x5C, 0x48, 0xB6, 0x0C, 0x1D, 0xD3, 0x5F, 0x10,
|
||||
0x9A, 0x39, 0xB8, 0x66, 0x31, 0xFC, 0x39, 0x71,
|
||||
0x87, 0x23, 0x46, 0x9D, 0xE8, 0x3C, 0x2B, 0xA1,
|
||||
0x39, 0x8A, 0xD3, 0xFF, 0xD9, 0x43, 0xB6, 0x61,
|
||||
0xC6, 0x67, 0x70, 0x40, 0xBD, 0xFE, 0xD3, 0xC1,
|
||||
0x68, 0xF5, 0xF7, 0xC8, 0x89, 0xD8, 0x17, 0xC5,
|
||||
0xE8, 0x3D, 0x29, 0xD5, 0x91, 0xDF, 0x1F, 0x56,
|
||||
0x74, 0x5A, 0xC4, 0xA8, 0x14, 0xBA, 0xD4, 0xFA,
|
||||
0x13, 0x49, 0x2A, 0x9F, 0x63, 0xF1, 0xB2, 0x45,
|
||||
0xF1, 0xF0, 0x2A, 0xDD, 0x75, 0x66, 0x8A, 0xF7,
|
||||
0xAB, 0x73, 0x86, 0x26, 0x9D, 0x1F, 0x07, 0xAD,
|
||||
0xD3, 0xFE, 0xE0, 0xA3, 0xED, 0xA0, 0x96, 0x3E,
|
||||
0x1E, 0x89, 0x86, 0x02, 0x4C, 0x28, 0xFD, 0x57,
|
||||
0xA1, 0x67, 0x55, 0xF0, 0x82, 0x3B, 0x7F, 0xCC,
|
||||
0x2A, 0x32, 0x01, 0x93, 0x1D, 0x8B, 0x66, 0x8A,
|
||||
0x20, 0x52, 0x84, 0xDD, 0x2C, 0xFD, 0xEE, 0x72,
|
||||
0xF3, 0x8C, 0x58, 0xB9, 0x99, 0xE5, 0xC1, 0x22,
|
||||
0x63, 0x59, 0x00, 0xE2, 0x76, 0xC5, 0x3A, 0x17,
|
||||
0x7F, 0x93, 0xE9, 0x67, 0x61, 0xAA, 0x10, 0xC3,
|
||||
0xD9, 0xC8, 0x24, 0x46, 0x5B, 0xBE, 0x8C, 0x1F,
|
||||
0x2D, 0x66, 0x48, 0xD2, 0x02, 0x11, 0xFB, 0x74,
|
||||
0x14, 0x76, 0x76, 0x5A, 0x98, 0x54, 0x35, 0xA7,
|
||||
0x85, 0x66, 0x20, 0x26, 0x8B, 0x13, 0x6F, 0x68,
|
||||
0xE3, 0xC9, 0x58, 0x7D, 0x1C, 0x3E, 0x01, 0x8D,
|
||||
0xF8, 0xD6, 0x7F, 0xCF, 0xA2, 0x07, 0xB7, 0x95,
|
||||
0xFD, 0xF0, 0x02, 0x34, 0x32, 0x30, 0xE8, 0xD4,
|
||||
0x57, 0x5E, 0x53, 0xFB, 0x54, 0xE2, 0x03, 0x32,
|
||||
0xCC, 0x52, 0x2E, 0xD2, 0x35, 0xD9, 0x58, 0x85,
|
||||
0x2D, 0xEC, 0x2D, 0x71, 0xD1, 0x8A, 0x29, 0xD0,
|
||||
0xB0, 0x24, 0xBD, 0x24, 0xDC, 0x1A, 0x28, 0x3F,
|
||||
0xA0, 0x12, 0x81, 0x15, 0x24, 0xC9, 0xB5, 0x4A,
|
||||
0x23, 0xB6, 0xA3, 0x45, 0x50, 0x2D, 0x73, 0x99,
|
||||
0x6B, 0x1C, 0xFB, 0xA4, 0x53, 0xD7, 0x5C, 0xF4,
|
||||
0x6C, 0xB0, 0xE5, 0x74, 0xB3, 0x76, 0xF8, 0xB1,
|
||||
0x0D, 0x59, 0x70, 0x9F, 0xCA, 0xDE, 0xF2, 0xAA,
|
||||
0x4C, 0x7D, 0x11, 0x54, 0xC4, 0x19, 0x0F, 0x36,
|
||||
0x4A, 0x62, 0xFF, 0x8B, 0x10, 0xCB, 0x93, 0x50,
|
||||
0xDA, 0x79, 0x5E, 0x4E, 0x09, 0x1F, 0x22, 0xC8,
|
||||
0x19, 0x85, 0xE9, 0xEE, 0xB7, 0x71, 0x65, 0xB9,
|
||||
0x10, 0xD2, 0x0A, 0x73, 0x5B, 0xA6, 0xDA, 0x37,
|
||||
0x46, 0x02, 0x00, 0x98, 0x9E, 0x20, 0x6C, 0x7D,
|
||||
0xC7, 0x69, 0xBB, 0xC2, 0x00, 0x40, 0x9C, 0x57,
|
||||
0x00, 0xC2, 0x36, 0x76, 0xE8, 0x2A, 0x8D, 0xAD,
|
||||
0x62, 0x57, 0xC8, 0xD0, 0x9D, 0x66, 0x27, 0x5A,
|
||||
0xD8, 0x0D, 0x35, 0x60, 0x28, 0x38, 0x62, 0x94,
|
||||
0x78, 0x36, 0x25, 0x58, 0xFD, 0xF8, 0x66, 0x1F,
|
||||
0x68, 0x04, 0x0F, 0xD8, 0x00, 0xDF, 0xA0, 0x6C,
|
||||
0x25, 0x42, 0x9A, 0x4C, 0xEB, 0x80, 0x13, 0x51,
|
||||
0x7D, 0x2D, 0xA8, 0x89, 0xD6, 0x1B, 0x67, 0x72,
|
||||
0x01, 0xF3, 0x2D, 0x16, 0x77, 0xFE, 0x22, 0xBC,
|
||||
0x8A, 0x45, 0x09, 0x1F, 0x9C, 0x2F, 0x2A, 0xA9,
|
||||
0x61, 0x5B, 0x4A, 0xE6, 0x64, 0x2C, 0x62, 0x1A,
|
||||
0x3A, 0x96, 0xE6, 0x0A, 0xAE, 0x05, 0x1A, 0xC8,
|
||||
0xCB, 0xD6, 0x8F, 0x3A, 0x4B, 0xE0, 0x7F, 0x82,
|
||||
0xB4, 0x98, 0xF1, 0x9D, 0xD7, 0x14, 0x76, 0x5E,
|
||||
0x77, 0x85, 0x87, 0xEC, 0x13, 0xDA, 0xFD, 0xAF,
|
||||
0xCB, 0xA3, 0x1C, 0x99, 0xC1, 0xFE, 0x17, 0x0C,
|
||||
0x40, 0x4D, 0x3C, 0x8F, 0x70, 0x86, 0x63, 0x64,
|
||||
0xB7, 0x75, 0xA8, 0x71, 0x36, 0xDC, 0x54, 0x10,
|
||||
0x57, 0x0C, 0xA8, 0xF2, 0xA1, 0xBB, 0xED, 0x03,
|
||||
0x41, 0x57, 0x34, 0x2C, 0x8F, 0x7C, 0xA0, 0x09,
|
||||
0xF3, 0x9E, 0x41, 0xB7, 0xA8, 0xD4, 0x66, 0x0D,
|
||||
0x0D, 0xC0, 0x6A, 0xFC, 0x6A, 0xA2, 0xAC, 0xE2,
|
||||
0x60, 0x00, 0xE3, 0xF7, 0x75, 0x43, 0x23, 0xEB,
|
||||
0xC8, 0x61, 0xFA, 0xB3, 0xB8, 0x28, 0xCE, 0xCA,
|
||||
0xF4, 0x47, 0x7F, 0x30, 0x6D, 0x61, 0x89, 0x47,
|
||||
0xA1, 0x4A, 0xFE, 0xD1, 0x21, 0x0B, 0x6D, 0xF4,
|
||||
0x3F, 0x00, 0x86, 0x30, 0x8E, 0x33, 0x21, 0x6F,
|
||||
0xDA, 0x15, 0xFD, 0x5F, 0xEC, 0x8E, 0xF1, 0x12,
|
||||
0x3F, 0xC9, 0x83, 0x0C, 0xCA, 0x22, 0x01, 0xF1,
|
||||
0x70, 0x5F, 0x1F, 0x66, 0xB5, 0xF8, 0x3E, 0x7A,
|
||||
0x6F, 0xDE, 0xDB, 0xA7, 0x8D, 0x18, 0x9E, 0xBE,
|
||||
0xDB, 0xAD, 0x3D, 0x66, 0x30, 0xC1, 0x6C, 0x0C,
|
||||
0x87, 0xB4, 0x65, 0x75, 0xE0, 0x9D, 0xEA, 0x16,
|
||||
0x0D, 0x07, 0x37, 0x33, 0xC5, 0xEC, 0x97, 0x93,
|
||||
0x37, 0xEB, 0x8E, 0x65, 0x9C, 0x40, 0x63, 0x6C,
|
||||
0x43, 0x60, 0xB0, 0x40, 0x4D, 0x85, 0xEF, 0xC2,
|
||||
0x47, 0x5F, 0xE7, 0x6B, 0xCB, 0x40, 0xE8, 0xEA,
|
||||
0xD8, 0xAB, 0xB1, 0x9A, 0x72, 0xDC, 0x4C, 0x14,
|
||||
0xFA, 0x43, 0x61, 0x5F, 0xA6, 0x5C, 0x3A, 0x05,
|
||||
0x17, 0x2E, 0x74, 0xF3, 0x5E, 0x45, 0xD9, 0x47,
|
||||
0xAA, 0x59, 0xB6, 0x8F, 0x42, 0x66, 0x42, 0x29,
|
||||
0x90, 0x95, 0x48, 0x46, 0x91, 0x88, 0x3C, 0x8C,
|
||||
0xDE, 0xCC, 0xED, 0xB3, 0xAA, 0x62, 0xEA, 0xBC,
|
||||
0xB4, 0x0C, 0x48, 0x4C, 0x53, 0x23, 0x5E, 0x24,
|
||||
0x85, 0xBF, 0x92, 0xDA, 0x14, 0xDB, 0x1A, 0x3D,
|
||||
0xEF, 0x30, 0xD9, 0x49, 0x64, 0x4D, 0xE5, 0x01,
|
||||
0xFC, 0xA4, 0x4B, 0xD1, 0x9F, 0xDE, 0x96, 0x7F,
|
||||
0x50, 0xBC, 0x4D, 0x38, 0x44, 0xE9, 0x23, 0x5F,
|
||||
0x37, 0x57, 0x1A, 0xA6, 0x52, 0x5A, 0x0F, 0x4F,
|
||||
0x87, 0x33, 0x4A, 0x7B, 0x66, 0xEE, 0x3D, 0x66,
|
||||
0x0A, 0x63, 0x39, 0x1F, 0x23, 0x38, 0x35, 0x73,
|
||||
0x60, 0x5E, 0x47, 0x20, 0x4F, 0xC0, 0xC8, 0x3C,
|
||||
0x09, 0xF9, 0x29, 0x4F, 0x5E, 0x55, 0x69, 0xC4,
|
||||
0x6B, 0xE8, 0xF8, 0x91, 0xC0, 0x22, 0x65, 0x15,
|
||||
0x1E, 0xFB, 0xB9, 0x61, 0xCE, 0x45, 0xBE, 0x2B,
|
||||
0xEE, 0xB9, 0x04, 0x2B, 0xFD, 0xAE, 0x61, 0x1C,
|
||||
0x3D, 0x3D, 0x7C, 0xBF, 0xC1, 0xF7, 0x3C, 0x4E,
|
||||
0x9E, 0x0E, 0x54, 0xC8, 0xAD, 0xA9, 0xDF, 0x43,
|
||||
0x49, 0xB9, 0x41, 0x05, 0xE5, 0xF1, 0x49, 0xAA,
|
||||
0x77, 0x6C, 0x34, 0x5B, 0x93, 0x24, 0x24, 0x23,
|
||||
0x74, 0x68, 0x11, 0xCE, 0x15, 0x80, 0xA1, 0xA4,
|
||||
0x1F, 0x8D, 0x81, 0xCD, 0xB2, 0x98, 0xCA, 0x14,
|
||||
0x0B, 0x0C, 0x61, 0x50, 0x69, 0x72, 0xAE, 0xFA,
|
||||
0x8B, 0xC0, 0x3F, 0x0D, 0xE7, 0xF2, 0x0F, 0xEB,
|
||||
0xC1, 0x11, 0xB9, 0x10, 0x03, 0x6A, 0xF5, 0x97,
|
||||
0x3C, 0x53, 0x2F, 0x67, 0x86, 0x09, 0x6A, 0xE3,
|
||||
0x28, 0xC0, 0x78, 0xC8, 0xB4, 0x39, 0x8E, 0xD1,
|
||||
0xCE, 0x25, 0xE8, 0x66, 0xF7, 0x09, 0x40, 0x7D,
|
||||
0x81, 0xFB, 0xAF, 0xFA, 0x59, 0xC4, 0x9B, 0x2B,
|
||||
0x83, 0x45, 0x5B, 0xA8, 0x66, 0x9E, 0x38, 0xC8,
|
||||
0xFD, 0xAC, 0xF2, 0x2D, 0x21, 0xDE, 0x50, 0x4C,
|
||||
0x03, 0xCB, 0x88, 0x42, 0xDD, 0x84, 0x09, 0x99,
|
||||
0x8E, 0x8B, 0x40, 0x97, 0x1B, 0x14, 0x85, 0x37,
|
||||
0x11, 0x01, 0xE0, 0x74, 0x6B, 0x33, 0x52, 0x8C,
|
||||
0x68, 0x3A, 0x89, 0xB2, 0xAF, 0x35, 0xE6, 0x65,
|
||||
0xC3, 0x58, 0x70, 0xD2, 0xE7, 0x1F, 0x1F, 0xF6,
|
||||
0xE5, 0x0A, 0xB1, 0xFE, 0xD0, 0xC9, 0x51, 0x50,
|
||||
0xE7, 0xFD, 0x58, 0xF5, 0xC4, 0x58, 0x65, 0x94,
|
||||
0xD1, 0x57, 0x55, 0x5E, 0xD2, 0x27, 0x98, 0xAF,
|
||||
0xE7, 0x55, 0x0B, 0x87, 0x50, 0x9B, 0xEF, 0xE8,
|
||||
0x2B, 0xFC, 0xE7, 0x3B, 0x4E, 0xD7, 0xB7, 0x4D,
|
||||
0xF4, 0xBC, 0xF4, 0x88, 0x63, 0xE4, 0x8A, 0x20,
|
||||
0x4B, 0x22, 0xB0, 0xA0, 0x53, 0x7F, 0xA8, 0xC9,
|
||||
0x0C, 0xF8, 0xD7, 0xBD, 0x46, 0x39, 0xA7, 0x7D,
|
||||
0xDD, 0x10, 0x91, 0x50, 0x54, 0x06, 0x47, 0xF0,
|
||||
0x3C, 0xAA, 0x43, 0x40, 0xF8, 0x54, 0xDD, 0x8A,
|
||||
0xEA, 0x8A, 0x0B, 0xA5, 0x7F, 0xCD, 0x5E, 0xAA,
|
||||
0x02, 0x2E, 0x1F, 0xC6, 0x50, 0x15, 0xF8, 0x0A,
|
||||
0x0C, 0x1B, 0x3C, 0x55, 0x3A, 0xC3, 0x6F, 0x88,
|
||||
0xD7, 0xBF, 0xB1, 0x02, 0xCC, 0xE0, 0x08, 0x29,
|
||||
0x97, 0xD2, 0xAA, 0x23, 0xC4, 0x6D, 0xE3, 0xE3,
|
||||
0x76, 0x39, 0x92, 0xC3, 0x2E, 0x7A, 0xE2, 0x98,
|
||||
0xD1, 0xFC, 0xAE, 0xCC, 0x95, 0xD8, 0xB4, 0xDC,
|
||||
0x92, 0xEA, 0x6A, 0x5F, 0xF2, 0x92, 0x17, 0x0B,
|
||||
0x8D, 0xC3, 0xFA, 0x9C, 0x62, 0xCE, 0x44, 0x8D,
|
||||
0xC3, 0x1E, 0xC3, 0xB2, 0xD5, 0x00, 0xCD, 0xB4,
|
||||
0x9E, 0x2D, 0x7B, 0xF2, 0x98, 0xA3, 0x00, 0x8B,
|
||||
0x81, 0x30, 0x77, 0x5B, 0x02, 0x99, 0xB1, 0xCD,
|
||||
0xC3, 0x1D, 0x74, 0x74, 0xEF, 0x41, 0xCB, 0x69,
|
||||
0x63, 0x8E, 0xA6, 0xD3, 0x2D, 0x3E, 0x1F, 0x1D,
|
||||
0x12, 0x9E, 0xD9, 0x18, 0x67, 0x06, 0xAF, 0x37,
|
||||
0x29, 0xAD, 0x65, 0xD8, 0xEB, 0x71, 0xC4, 0x7D,
|
||||
0x94, 0x3D, 0xEA, 0xCC, 0xDF, 0x72, 0x41, 0x51,
|
||||
0x3C, 0xA1, 0x66, 0x98, 0x32, 0x32, 0x40, 0x54,
|
||||
0xB0, 0x2F, 0xEB, 0xCE, 0xDF, 0x4A, 0x64, 0xFB,
|
||||
0x9A, 0x90, 0xDC, 0xF6, 0x6F, 0xA9, 0xD4, 0xCA,
|
||||
0xCB, 0x91, 0xC4, 0xFE, 0xEE, 0x9C, 0x01, 0x50,
|
||||
0x2E, 0xAC, 0xCC, 0x5F, 0x89, 0xD0, 0x91, 0xA3,
|
||||
0xD9, 0xF9, 0x4B, 0x8D, 0xDE, 0x6C, 0x60, 0x21,
|
||||
0x19, 0xB1, 0xD3, 0x4D, 0x75, 0x56, 0x6F, 0xB8,
|
||||
0x25, 0xA4, 0x92, 0x4F, 0x12, 0xF5, 0x8F, 0xC1,
|
||||
0x17, 0x4B, 0xB3, 0x34, 0x21, 0x22, 0xAC, 0x52,
|
||||
0xD2, 0x64, 0xC9, 0x9A, 0x7D, 0xFC, 0xC0, 0x0A,
|
||||
0x89, 0x34, 0xFF, 0x08, 0xD3, 0x04, 0xDC, 0xFE,
|
||||
0x7C, 0xB3, 0xB8, 0xFD, 0x85, 0xDD, 0x79, 0x51,
|
||||
0xA7, 0x89, 0xE8, 0xF1, 0x23, 0xB1, 0xDF, 0xD7,
|
||||
0x1F, 0x7B, 0xB1, 0x5D, 0x42, 0xF9, 0x61, 0xF8,
|
||||
0xDC, 0x81, 0x04, 0xF1, 0xCC, 0xFA, 0xD7, 0xED,
|
||||
0xBF, 0x47, 0xAC, 0xBD, 0xE5, 0xFA, 0xAC, 0xB3,
|
||||
0x1C, 0xD9, 0xA1, 0xB3, 0x60, 0xEE, 0x9C, 0x8A,
|
||||
0x36, 0x57, 0xB4, 0x2F, 0xA1, 0xA2, 0xF3, 0xE2,
|
||||
0x09, 0x9A, 0x6E, 0x43, 0x9B, 0xE5, 0x93, 0xB8,
|
||||
0x3D, 0x9E, 0x9F, 0xC1, 0xC6, 0x0D, 0x02, 0xEB,
|
||||
0x4D, 0x38, 0xE9, 0xB4, 0x9F, 0xEA, 0x33, 0x8C,
|
||||
0x07, 0xD8, 0xB4, 0x71, 0xAD, 0xE5, 0x43, 0xB2,
|
||||
0xCC, 0x55, 0x93, 0x6A, 0xDB, 0x1E, 0x80, 0xDB,
|
||||
0xC2, 0xEA, 0x42, 0x8E, 0xFC, 0x86, 0x44, 0xC9,
|
||||
0x8A, 0xC4, 0xF2, 0x46, 0xA7, 0x39, 0x50, 0x0D,
|
||||
0x1A, 0xAA, 0x07, 0x04, 0xBE, 0xD4, 0xCE, 0x62,
|
||||
0x4D, 0x0F, 0x91, 0x7D, 0x29, 0x88, 0x9C, 0x4C,
|
||||
0xAF, 0xF7, 0xD8, 0x40, 0x93, 0x88, 0xC7, 0x20,
|
||||
0xD2, 0x17, 0x2A, 0xC4, 0x92, 0x72, 0xD0, 0xC0,
|
||||
0x4E, 0x56, 0x47, 0xB1, 0x27, 0x02, 0xE6, 0x61,
|
||||
0x82, 0x5E, 0xC8, 0x2E, 0x90, 0xD2, 0x31, 0x22,
|
||||
0xE2, 0xA9, 0x4A, 0x91, 0x45, 0x69, 0xB1, 0xA5,
|
||||
0x0F, 0x66, 0x2C, 0x30, 0xAD, 0x7F, 0x1B, 0x0E,
|
||||
0x22, 0x17, 0x60, 0x2E, 0x3D, 0x7F, 0x7F, 0x8C,
|
||||
0x33, 0x51, 0xA0, 0x25, 0xDE, 0xFD, 0x75, 0xBC,
|
||||
0xEF, 0xE6, 0xE7, 0x20, 0x04, 0x5A, 0xEC, 0x50,
|
||||
0x21, 0x48, 0x56, 0x98, 0xE2, 0x33, 0x6D, 0x22,
|
||||
0x5C, 0xC3, 0xFB, 0xFC, 0x6F, 0xB3, 0xA7, 0x8E,
|
||||
0x6F, 0x67, 0x70, 0x9D, 0xDA, 0x02, 0x01, 0x59,
|
||||
0x7B, 0x3D, 0x2B, 0x38, 0xCC, 0x0F, 0x44, 0x3D,
|
||||
0xFB, 0x9A, 0xB3, 0x23, 0x15, 0x50, 0x6E, 0xBF,
|
||||
0x8B, 0xA1, 0x94, 0x33, 0xE5, 0x7B, 0x88, 0x4E,
|
||||
0xCB, 0x6D, 0x9F, 0xBF, 0xBC, 0x7A, 0xA8, 0x1E,
|
||||
0x68, 0x25, 0xED, 0x8E, 0x53, 0x21, 0x72, 0xC5,
|
||||
0x70, 0xB3, 0xE4, 0xA6, 0xA1, 0x5A, 0x2D, 0xC8,
|
||||
0x43, 0x9D, 0x60, 0x77, 0x78, 0xE0, 0xC4, 0xAF,
|
||||
0xC8, 0x29, 0xBA, 0xD0, 0x4D, 0x39, 0x83, 0x51,
|
||||
0xA7, 0x10, 0x7F, 0x0C, 0x34, 0x0E, 0x6C, 0x75,
|
||||
0x26, 0xD7, 0xD6, 0xC7, 0x32, 0x53, 0xAF, 0x4E,
|
||||
0xBE, 0xF2, 0xC2, 0x0F, 0x99, 0x23, 0xB9, 0xE1,
|
||||
0xC8, 0xB4, 0xBC, 0x5A, 0xC6, 0xCB, 0xEB, 0x4D,
|
||||
0x28, 0x56, 0x72, 0xFE, 0x1B, 0x2C, 0x5D, 0xE3,
|
||||
0xBC, 0xC7, 0xA3, 0xC0, 0x7D, 0x27, 0xF0, 0xD0,
|
||||
0x4F, 0x3F, 0x1F, 0xF7, 0x87, 0x15, 0xF2, 0xEA,
|
||||
0xD4, 0x03, 0x6D, 0x2F, 0xD4, 0x8E, 0x50, 0x4B,
|
||||
0x05, 0xBF, 0xF7, 0x8C, 0x67, 0x5A, 0xDC, 0x4D,
|
||||
0xCD, 0xCF, 0x9D, 0x02, 0xB6, 0xE7, 0xAE, 0x49,
|
||||
0xD1, 0x7C, 0x00, 0xE7, 0x3B, 0xEA, 0xFB, 0x0D,
|
||||
0x2A, 0x7B, 0x41, 0x33, 0x66, 0xD0, 0x29, 0x9F,
|
||||
0xB3, 0x8A, 0x71, 0xB0, 0xE2, 0x76, 0xA9, 0xDB,
|
||||
0xFD, 0x64, 0x04, 0x69, 0xDF, 0x89, 0x1F, 0x56,
|
||||
0x86, 0x92, 0xD9, 0xD9, 0xB9, 0xF3, 0x4F, 0xAC,
|
||||
0xAE, 0x61, 0x48, 0x20, 0xCE, 0x3C, 0x2B, 0x44,
|
||||
0xAB, 0x42, 0xFA, 0xAB, 0x2E, 0x94, 0x82, 0xC8,
|
||||
0xD9, 0x97, 0xCF, 0x27, 0xDF, 0xAC, 0xAC, 0xE7,
|
||||
0xCA, 0xB2, 0x84, 0xAB, 0xF2, 0x5D, 0xDF, 0x56,
|
||||
0x0C, 0x8C, 0x07, 0x3C, 0x3D, 0xA8, 0xDD, 0xBE,
|
||||
0xFF, 0x4E, 0x28, 0x0D, 0xB2, 0x2D, 0xE6, 0x9D,
|
||||
0x44, 0x21, 0xCB, 0xE7, 0x33, 0x63, 0x22, 0x8F,
|
||||
0x4C, 0xFF, 0xB6, 0x1D, 0x9A, 0x71, 0x3F, 0xB1,
|
||||
0x29, 0xAE, 0x3A, 0x35, 0xEE, 0x9C, 0x97, 0x68,
|
||||
0xA7, 0x52, 0x66, 0x01, 0xD8, 0x9A, 0x5D, 0xF4,
|
||||
0xB3, 0x2F, 0x5C, 0xD4, 0x0E, 0xF9, 0xCF, 0x07,
|
||||
0xF6, 0x8C, 0xBA, 0xA6, 0x8D, 0x6B, 0xC6, 0x01,
|
||||
0xC2, 0x69, 0xAE, 0x60, 0x08, 0x1A, 0x0E, 0x3F,
|
||||
0xAE, 0x60, 0x29, 0xF3, 0x48, 0x0D, 0xE0, 0xD0,
|
||||
0xAE, 0x52, 0x44, 0xE9, 0x7F, 0x1F, 0x92, 0x5F,
|
||||
0x71, 0xAD, 0xEC, 0x6B, 0x47, 0x66, 0x92, 0x22,
|
||||
0x27, 0xAE, 0x6E, 0x25, 0xCD, 0xF3, 0x5F, 0x55,
|
||||
0x59, 0xBD, 0x73, 0xCE, 0x2B, 0x7E, 0x99, 0x44,
|
||||
0x56, 0x70, 0xA3, 0xE7, 0x7A, 0x59, 0x75, 0xD8,
|
||||
0x48, 0x0C, 0x39, 0x2B, 0xD7, 0x53, 0xC6, 0xAD,
|
||||
0x4A, 0x6F, 0xB4, 0x14, 0x96, 0xDF, 0xF2, 0x4A,
|
||||
0x0C, 0xA2, 0xD5, 0x29, 0x98, 0x7C, 0x42, 0x87,
|
||||
0xD9, 0x1F, 0x97, 0x61, 0xD9, 0xBF, 0x99, 0x4F,
|
||||
0x2C, 0x4C, 0x75, 0xAC, 0xB8, 0x06, 0x75, 0xD6,
|
||||
0x87, 0x76, 0x7E, 0xE3, 0x23, 0x4B, 0xEA, 0x1A,
|
||||
0x1A, 0xF4, 0xB7, 0x09, 0xAF, 0x53, 0xEB, 0xA6,
|
||||
0x39, 0x10, 0xFE, 0xD4, 0xEB, 0x1B, 0xAE, 0x38,
|
||||
0x31, 0x33, 0xBA, 0x68, 0xEE, 0xC7, 0x65, 0x76,
|
||||
0xFB, 0x49, 0x77, 0xD4, 0x19, 0xC4, 0xE6, 0xA7,
|
||||
0x05, 0xFE, 0x2A, 0xDA, 0x39, 0x99, 0x1A, 0x92,
|
||||
0xD2, 0xF0, 0x61, 0x97, 0xF6, 0x06, 0x6C, 0x88,
|
||||
0x7B, 0x6F, 0x60, 0xE6, 0x70, 0x08, 0xF0, 0xB4,
|
||||
0x6B, 0x39, 0x6F, 0x05, 0x41, 0x81, 0xF9, 0xBE,
|
||||
0x7A, 0x51, 0xC4, 0x75, 0xB0, 0x6A, 0x89, 0xA0,
|
||||
0xA6, 0x9A, 0x5B, 0xEE, 0x7D, 0x78, 0x17, 0x5F,
|
||||
0x9F, 0x3B, 0x7D, 0xDD, 0x8A, 0x9E, 0xAA, 0x1A,
|
||||
0xDA, 0x49, 0x08, 0xE9, 0xFD, 0x91, 0xA6, 0xFA,
|
||||
0xCE, 0xCF, 0x67, 0xDF, 0x0F, 0xC9, 0xD6, 0x38,
|
||||
0xD9, 0xD5, 0xD1, 0xC0, 0x76, 0x59, 0x42, 0x53,
|
||||
0xBF, 0x48, 0xE9, 0x11, 0x74, 0xC7, 0x11, 0xD8,
|
||||
0xE7, 0x8E, 0xD3, 0xC8, 0x25, 0xA1, 0x26, 0x50,
|
||||
0xBB, 0xB4, 0x35, 0xAF, 0xAF, 0x06, 0x23, 0x69,
|
||||
0x3E, 0x30, 0xFD, 0x7B, 0x34, 0x83, 0x07, 0xD0,
|
||||
0xF0, 0x0F, 0x6C, 0x9A, 0x13, 0x5D, 0xC2, 0x7B,
|
||||
0xDF, 0x6F, 0xDD, 0x8E, 0xF4, 0x30, 0x82, 0x05,
|
||||
0x41, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7,
|
||||
0x0D, 0x01, 0x07, 0x01, 0xA0, 0x82, 0x05, 0x32,
|
||||
0x04, 0x82, 0x05, 0x2E, 0x30, 0x82, 0x05, 0x2A,
|
||||
0x30, 0x82, 0x05, 0x26, 0x06, 0x0B, 0x2A, 0x86,
|
||||
0x48, 0x86, 0xF7, 0x0D, 0x01, 0x0C, 0x0A, 0x01,
|
||||
0x02, 0xA0, 0x82, 0x04, 0xEE, 0x30, 0x82, 0x04,
|
||||
0xEA, 0x30, 0x1C, 0x06, 0x0A, 0x2A, 0x86, 0x48,
|
||||
0x86, 0xF7, 0x0D, 0x01, 0x0C, 0x01, 0x03, 0x30,
|
||||
0x0E, 0x04, 0x08, 0x74, 0xC0, 0x84, 0x8F, 0xC7,
|
||||
0x74, 0x5E, 0x21, 0x02, 0x02, 0x08, 0x00, 0x04,
|
||||
0x82, 0x04, 0xC8, 0x1E, 0xF4, 0xE9, 0x07, 0x27,
|
||||
0x9E, 0x5A, 0xC9, 0x39, 0x1D, 0x37, 0x2C, 0x06,
|
||||
0x4B, 0x57, 0xEA, 0xC5, 0x42, 0x9A, 0x60, 0xD5,
|
||||
0x42, 0xB2, 0x34, 0x2D, 0xD3, 0x88, 0x7C, 0x78,
|
||||
0x87, 0xB6, 0xE9, 0x42, 0x44, 0x1F, 0x67, 0x32,
|
||||
0x92, 0x54, 0x22, 0xDA, 0xB2, 0x43, 0xE7, 0x40,
|
||||
0xBE, 0x1F, 0xAF, 0x3A, 0xCD, 0x2A, 0x9F, 0xD7,
|
||||
0x44, 0x5B, 0x37, 0x69, 0x85, 0xDF, 0xEB, 0x2A,
|
||||
0xB9, 0xE2, 0x92, 0x3B, 0xEA, 0xD5, 0x42, 0x53,
|
||||
0x95, 0x4A, 0xB0, 0x1B, 0xA5, 0xEF, 0xA6, 0x0D,
|
||||
0x29, 0xF4, 0x33, 0xFE, 0xD7, 0x49, 0x04, 0x1E,
|
||||
0x8C, 0xAD, 0x63, 0x1E, 0x79, 0x63, 0x74, 0x0C,
|
||||
0xE5, 0x5E, 0xA2, 0x2C, 0xBE, 0xB8, 0x90, 0xCE,
|
||||
0x06, 0x25, 0xBF, 0xD1, 0x5A, 0x50, 0xCF, 0x3B,
|
||||
0x52, 0xE2, 0xA7, 0xFF, 0x19, 0x02, 0xCF, 0xD0,
|
||||
0x9B, 0xD9, 0xF7, 0x28, 0x07, 0x38, 0x1F, 0xF2,
|
||||
0xAF, 0x44, 0x91, 0x3F, 0x0F, 0xB6, 0x6E, 0x8C,
|
||||
0xC0, 0x32, 0x92, 0xC0, 0xCD, 0x25, 0x98, 0x67,
|
||||
0xF1, 0x47, 0x52, 0x50, 0xF0, 0xA3, 0x7B, 0xE6,
|
||||
0x74, 0xDC, 0x72, 0x28, 0xC8, 0xAB, 0xB3, 0x31,
|
||||
0x7D, 0xA3, 0xF7, 0xC7, 0xD1, 0xE6, 0x99, 0xB4,
|
||||
0xB6, 0x5A, 0x3A, 0x4D, 0x83, 0x4F, 0xB8, 0xB5,
|
||||
0x86, 0xF8, 0x37, 0x7F, 0xA0, 0x16, 0x2F, 0x3C,
|
||||
0x62, 0x7A, 0xD4, 0x3A, 0xEB, 0xC2, 0xE8, 0x03,
|
||||
0x49, 0x17, 0x9E, 0xFB, 0xD7, 0xAF, 0x91, 0x32,
|
||||
0xFD, 0xEA, 0x4F, 0x64, 0xC6, 0x6E, 0x02, 0xEA,
|
||||
0xC4, 0xC8, 0x1F, 0x16, 0xC5, 0x4C, 0xFB, 0xC5,
|
||||
0x42, 0xF5, 0x85, 0x05, 0x92, 0x59, 0x4B, 0x31,
|
||||
0xE5, 0xE9, 0x69, 0xE7, 0x02, 0x98, 0x33, 0xBA,
|
||||
0x4C, 0x17, 0x09, 0xEF, 0x89, 0x20, 0xFA, 0x83,
|
||||
0x9F, 0xAE, 0x0E, 0x1B, 0x7D, 0x98, 0xB9, 0xF2,
|
||||
0x3C, 0x0F, 0xB7, 0x1C, 0x72, 0xDF, 0x17, 0x84,
|
||||
0x7F, 0x0A, 0xFD, 0x12, 0x3C, 0x6F, 0x68, 0x5D,
|
||||
0x45, 0xEB, 0xB8, 0xD6, 0x24, 0x65, 0x42, 0x75,
|
||||
0x5C, 0xC2, 0xF3, 0x3A, 0x6A, 0x4E, 0x51, 0x34,
|
||||
0x1B, 0xB6, 0x81, 0xB2, 0x8A, 0xEF, 0x28, 0xA4,
|
||||
0xC5, 0x88, 0x9A, 0x97, 0xE0, 0xEF, 0x31, 0x12,
|
||||
0x01, 0x7E, 0x1B, 0x43, 0x0F, 0x27, 0x80, 0x87,
|
||||
0x98, 0xC5, 0xD5, 0x83, 0xCB, 0x4B, 0xB7, 0x01,
|
||||
0x79, 0x60, 0xA1, 0x1A, 0x03, 0x05, 0xC6, 0x36,
|
||||
0x04, 0x31, 0x3C, 0x06, 0xDB, 0x08, 0xA8, 0xDA,
|
||||
0x8E, 0x32, 0x19, 0x91, 0xF1, 0x0D, 0x61, 0x6F,
|
||||
0xE4, 0xB2, 0x79, 0x8A, 0xDE, 0xF4, 0xF7, 0xFB,
|
||||
0x2C, 0x23, 0x5B, 0xD9, 0x64, 0x2F, 0xB7, 0xB3,
|
||||
0x8B, 0xCA, 0xB8, 0x8C, 0x1D, 0x3B, 0x49, 0x05,
|
||||
0x38, 0xA1, 0xE5, 0x8C, 0x1A, 0xDC, 0xA5, 0x61,
|
||||
0xFE, 0xF4, 0x2B, 0xDC, 0x77, 0x28, 0xF6, 0x19,
|
||||
0xE7, 0xB7, 0x8F, 0x4D, 0x27, 0x2D, 0xED, 0x8A,
|
||||
0x3F, 0x3D, 0xDC, 0x9F, 0xD1, 0x30, 0xFF, 0xD6,
|
||||
0xC3, 0xBE, 0x41, 0x25, 0xE3, 0xA5, 0x9B, 0x73,
|
||||
0xDF, 0x6A, 0xD9, 0xF9, 0x70, 0x84, 0x02, 0x4C,
|
||||
0x35, 0xD4, 0x3E, 0x05, 0x76, 0x3A, 0xDC, 0x6D,
|
||||
0x5A, 0x81, 0xB3, 0x94, 0xF7, 0x22, 0xF7, 0xDC,
|
||||
0xC1, 0x43, 0x31, 0x57, 0x5B, 0x42, 0x9A, 0x0B,
|
||||
0xF4, 0x95, 0x30, 0xA9, 0xBB, 0xD8, 0x06, 0xFB,
|
||||
0x1D, 0x6F, 0x9B, 0xC3, 0xBB, 0xF3, 0xBF, 0xFB,
|
||||
0xB4, 0x9F, 0x35, 0x64, 0x0A, 0x69, 0xB7, 0xD1,
|
||||
0x3E, 0xCA, 0x78, 0x07, 0x04, 0x03, 0x79, 0xD4,
|
||||
0xF3, 0xA8, 0xEC, 0x18, 0xDB, 0x03, 0x5E, 0x47,
|
||||
0xD7, 0xD0, 0x56, 0x2C, 0x74, 0x94, 0x86, 0x04,
|
||||
0x46, 0xB8, 0xD4, 0x35, 0x0A, 0x7B, 0xE6, 0x78,
|
||||
0xC4, 0x43, 0x3C, 0x56, 0xCC, 0x37, 0x8B, 0xFD,
|
||||
0xE8, 0xF4, 0x57, 0xEA, 0xAE, 0xCF, 0x36, 0x97,
|
||||
0x12, 0xAC, 0x39, 0xCF, 0x7C, 0xEF, 0x22, 0x67,
|
||||
0x01, 0xEC, 0xD8, 0x09, 0x49, 0x4E, 0xE3, 0x74,
|
||||
0xDD, 0x39, 0xE1, 0x39, 0xD7, 0x0C, 0x5F, 0x1B,
|
||||
0xCE, 0x69, 0xBC, 0x72, 0x44, 0x87, 0x64, 0x1C,
|
||||
0x08, 0x05, 0x93, 0x69, 0x6D, 0x7F, 0x90, 0x0A,
|
||||
0x2C, 0xCB, 0x8A, 0xBB, 0x7F, 0xE3, 0xE0, 0x80,
|
||||
0x31, 0xD0, 0x0A, 0x3A, 0x95, 0xFF, 0xF7, 0xB4,
|
||||
0x36, 0x38, 0x93, 0xE0, 0x0C, 0x11, 0x37, 0x12,
|
||||
0x06, 0xF6, 0xAD, 0xE9, 0xB1, 0x7A, 0x00, 0xF5,
|
||||
0xD2, 0x32, 0x6B, 0xD0, 0x27, 0xA5, 0x1B, 0x3D,
|
||||
0xE8, 0xDB, 0xCC, 0xA9, 0x1F, 0x1F, 0xB1, 0x99,
|
||||
0x3D, 0x7C, 0xB7, 0xCA, 0xDA, 0x27, 0x2C, 0x64,
|
||||
0x1C, 0x49, 0xB6, 0x87, 0x44, 0x06, 0x94, 0x9D,
|
||||
0xBC, 0x6B, 0x20, 0xA2, 0x68, 0x15, 0x1F, 0xE2,
|
||||
0xF2, 0xAD, 0x6D, 0x23, 0x2E, 0x2B, 0x74, 0xE2,
|
||||
0x5D, 0xE4, 0xB0, 0xC7, 0x84, 0xCB, 0x64, 0xBF,
|
||||
0xE0, 0xA8, 0x18, 0x83, 0xB4, 0xC9, 0xD9, 0x73,
|
||||
0xA8, 0xE6, 0xA9, 0x36, 0xD5, 0x63, 0x1E, 0x2C,
|
||||
0x2A, 0x55, 0x09, 0x77, 0x5E, 0xB3, 0x4B, 0xEA,
|
||||
0xB5, 0xD0, 0x14, 0x5F, 0xEB, 0x50, 0x7B, 0xAA,
|
||||
0xEF, 0x94, 0xBA, 0x2B, 0xD7, 0x8A, 0x07, 0xF1,
|
||||
0xF9, 0x5E, 0x12, 0x12, 0x21, 0x52, 0xE5, 0x0A,
|
||||
0x3E, 0xC0, 0xBC, 0x5D, 0x4C, 0xE2, 0x12, 0x7C,
|
||||
0x39, 0xF9, 0x16, 0x9D, 0xBD, 0x96, 0x83, 0x3B,
|
||||
0x7F, 0x3D, 0x6A, 0xEC, 0xF1, 0x25, 0xD2, 0xB0,
|
||||
0xB0, 0xEB, 0x20, 0x06, 0x07, 0xD6, 0xD9, 0x4C,
|
||||
0x07, 0x9A, 0x82, 0xC1, 0xFC, 0xF7, 0x66, 0x15,
|
||||
0xBD, 0x62, 0x65, 0xD8, 0x6C, 0xF6, 0x33, 0x7B,
|
||||
0x5A, 0x28, 0xEC, 0x90, 0xA1, 0x26, 0x9F, 0xC3,
|
||||
0x28, 0x4A, 0x64, 0x50, 0x5F, 0xCA, 0xE2, 0x6D,
|
||||
0xB8, 0x0F, 0xE2, 0x94, 0xB5, 0x8E, 0x1F, 0x8A,
|
||||
0x8F, 0x6B, 0xA6, 0x86, 0x1F, 0xEE, 0xDC, 0x24,
|
||||
0xB4, 0xB8, 0x25, 0xEC, 0x28, 0x2D, 0xF9, 0xCB,
|
||||
0x7D, 0x38, 0xFF, 0xC7, 0x74, 0x2E, 0xD3, 0x10,
|
||||
0xEC, 0x03, 0x31, 0xEE, 0x83, 0xE7, 0xA4, 0xF7,
|
||||
0xBA, 0x28, 0x21, 0xE0, 0x7F, 0xB4, 0xB7, 0xE1,
|
||||
0x7A, 0xF9, 0x2B, 0xB0, 0x2C, 0x3B, 0x80, 0x5F,
|
||||
0xE0, 0x5D, 0xB2, 0x7E, 0x59, 0xFF, 0x59, 0x07,
|
||||
0x58, 0x42, 0x57, 0xEE, 0x44, 0xF1, 0xB1, 0xAD,
|
||||
0xBA, 0xDE, 0xCB, 0x1D, 0x8A, 0x36, 0x67, 0xE8,
|
||||
0x45, 0xFF, 0x07, 0x8D, 0xEE, 0xA4, 0x51, 0x9C,
|
||||
0x4C, 0x83, 0x5D, 0x2E, 0x2F, 0xE1, 0x5B, 0x75,
|
||||
0xE8, 0x29, 0xCD, 0x0B, 0x07, 0x62, 0xE0, 0xC3,
|
||||
0x0D, 0x1D, 0xEA, 0xCF, 0xF0, 0x8A, 0x65, 0x27,
|
||||
0x70, 0x42, 0x9F, 0x26, 0x00, 0x15, 0x70, 0xC5,
|
||||
0x4A, 0xF6, 0x25, 0xD0, 0x40, 0x72, 0xE9, 0xC1,
|
||||
0x73, 0xFD, 0x48, 0x94, 0xA3, 0x8D, 0x66, 0x63,
|
||||
0x96, 0x4F, 0xF7, 0xEE, 0xFB, 0x4C, 0xC7, 0xB8,
|
||||
0x6B, 0xE9, 0x90, 0xE1, 0x2A, 0x66, 0x80, 0x99,
|
||||
0x3B, 0xB0, 0x1A, 0x6C, 0xF9, 0x0E, 0x72, 0xDA,
|
||||
0x8E, 0x4F, 0x46, 0xC2, 0x6A, 0x4B, 0x7A, 0x16,
|
||||
0xE5, 0x26, 0x0B, 0x5C, 0xD4, 0x47, 0x34, 0xE5,
|
||||
0x37, 0xBE, 0x68, 0x6C, 0xDA, 0xD3, 0x9B, 0x6F,
|
||||
0xAE, 0x51, 0x9C, 0x99, 0x0A, 0x5B, 0xF8, 0x37,
|
||||
0xBC, 0xDE, 0xFC, 0x93, 0xC5, 0xE7, 0x0F, 0xEF,
|
||||
0x0B, 0xA6, 0x07, 0xC2, 0xA6, 0xE6, 0xDA, 0x2D,
|
||||
0x1B, 0x49, 0xC9, 0xDE, 0x6B, 0x27, 0xDC, 0x00,
|
||||
0xEF, 0x23, 0x87, 0x0E, 0xEB, 0xD1, 0x48, 0x7D,
|
||||
0xB4, 0xF2, 0x58, 0xC6, 0x3C, 0xE2, 0x89, 0xBA,
|
||||
0xB0, 0x05, 0xAC, 0x94, 0x41, 0x9A, 0xA8, 0xFF,
|
||||
0x3E, 0xBC, 0x3A, 0x52, 0x9C, 0xF9, 0x7F, 0x07,
|
||||
0x8B, 0xB0, 0x2C, 0x71, 0x83, 0x7B, 0xCF, 0x2E,
|
||||
0x7F, 0x7C, 0x96, 0x65, 0xD9, 0x08, 0x17, 0xEC,
|
||||
0xFA, 0xDE, 0x4E, 0x40, 0x12, 0x26, 0x70, 0x71,
|
||||
0x65, 0xA5, 0xDC, 0x98, 0x47, 0xA3, 0xFC, 0xE0,
|
||||
0x9A, 0x16, 0xED, 0x45, 0x56, 0x72, 0x50, 0x05,
|
||||
0x28, 0x2C, 0x99, 0xEC, 0x20, 0x2E, 0x40, 0xC0,
|
||||
0x26, 0x69, 0xCD, 0x49, 0x45, 0x17, 0xA4, 0xA3,
|
||||
0x42, 0x0D, 0x14, 0x65, 0x87, 0x33, 0x8C, 0x92,
|
||||
0xC5, 0xC4, 0x61, 0xFD, 0xE8, 0x68, 0x56, 0x20,
|
||||
0x57, 0xF5, 0x8E, 0x5F, 0xCF, 0x7E, 0x97, 0xF6,
|
||||
0x49, 0x97, 0x0A, 0xFE, 0xD3, 0x60, 0x1A, 0x5B,
|
||||
0x0C, 0x75, 0xDD, 0x8E, 0x31, 0x78, 0x29, 0xA6,
|
||||
0xB1, 0x4D, 0xAA, 0xDF, 0x8A, 0xD1, 0xE6, 0x91,
|
||||
0xE3, 0x32, 0x3F, 0xEC, 0x8A, 0x1F, 0x0E, 0x35,
|
||||
0x07, 0x6E, 0x4B, 0x83, 0x3B, 0xE5, 0x67, 0x34,
|
||||
0x1F, 0x0C, 0x81, 0xD8, 0xD5, 0x25, 0x68, 0xE5,
|
||||
0x28, 0x1B, 0x5C, 0x81, 0x3E, 0xE3, 0x5C, 0xB4,
|
||||
0xB6, 0xBD, 0x62, 0x6A, 0x70, 0x33, 0xC2, 0xC5,
|
||||
0x75, 0x27, 0xF4, 0x30, 0xE1, 0x1D, 0xC1, 0x4C,
|
||||
0xC5, 0x02, 0x12, 0x46, 0xAC, 0xEC, 0xF9, 0xE8,
|
||||
0xE7, 0x58, 0x24, 0x11, 0xB1, 0xF3, 0xB7, 0x8C,
|
||||
0x3C, 0xA4, 0x0A, 0x94, 0xA6, 0x7C, 0x68, 0x54,
|
||||
0x5B, 0xB9, 0x4D, 0x57, 0x9C, 0xE7, 0x28, 0x09,
|
||||
0x6B, 0x89, 0x26, 0x5D, 0xE7, 0x50, 0xA9, 0x95,
|
||||
0x90, 0x91, 0x8E, 0x00, 0x59, 0xF8, 0x3A, 0x70,
|
||||
0xAF, 0x48, 0x2E, 0xE8, 0xC4, 0x34, 0x8C, 0xF4,
|
||||
0x5F, 0x7F, 0xCB, 0x07, 0xAA, 0xF0, 0xD9, 0xFB,
|
||||
0x5C, 0x32, 0x90, 0x22, 0x1A, 0xD2, 0x1A, 0xCF,
|
||||
0x92, 0x06, 0x02, 0xCF, 0x10, 0x18, 0x7B, 0x93,
|
||||
0xCC, 0x07, 0x4A, 0x31, 0x25, 0x30, 0x23, 0x06,
|
||||
0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01,
|
||||
0x09, 0x15, 0x31, 0x16, 0x04, 0x14, 0xD1, 0xDE,
|
||||
0x23, 0x16, 0x9F, 0x6E, 0xF4, 0x42, 0x21, 0x23,
|
||||
0xE1, 0x11, 0xAA, 0xC8, 0x7C, 0x60, 0x4A, 0x78,
|
||||
0x9D, 0x24, 0x30, 0x31, 0x30, 0x21, 0x30, 0x09,
|
||||
0x06, 0x05, 0x2B, 0x0E, 0x03, 0x02, 0x1A, 0x05,
|
||||
0x00, 0x04, 0x14, 0xD6, 0x4A, 0xBB, 0x75, 0xB1,
|
||||
0xF9, 0x9E, 0xD3, 0x58, 0x6D, 0xD1, 0x74, 0x9F,
|
||||
0x00, 0x8A, 0xF2, 0xC8, 0xAA, 0x52, 0x4D, 0x04,
|
||||
0x08, 0x77, 0x46, 0xE7, 0xBA, 0x25, 0x4B, 0xDA,
|
||||
0x41, 0x02, 0x02, 0x08, 0x00]
|
||||
};
|
||||
|
||||
const WPA_EAP_CLIENT_LIST = [
|
||||
{
|
||||
ssid: 'WPA-EAP-PEAP',
|
||||
keyManagement: 'WPA-EAP',
|
||||
eap: 'PEAP',
|
||||
identity: EAP_USERNAME,
|
||||
password: EAP_PASSWORD,
|
||||
serverCertificate: CLIENT_PKCS12_CERT.nickname,
|
||||
phase2: 'MSCHAPV2'
|
||||
}
|
||||
];
|
||||
|
||||
/**
|
||||
* Convert the given MozWifiNetwork object array to testAssociate chain.
|
||||
*
|
||||
* @param aNetworks
|
||||
* An array of MozWifiNetwork which we want to convert.
|
||||
*
|
||||
* @return A promise chain which "then"s testAssociate accordingly.
|
||||
*/
|
||||
function convertToTestAssociateChain(aNetworks) {
|
||||
let chain = Promise.resolve();
|
||||
|
||||
aNetworks.forEach(function (aNetwork) {
|
||||
network = new window.MozWifiNetwork(aNetwork);
|
||||
chain = chain.then(() => gTestSuite.testAssociate(network));
|
||||
});
|
||||
|
||||
return chain;
|
||||
}
|
||||
|
||||
gTestSuite.doTestWithCertificate(
|
||||
new Blob([new Uint8Array(CLIENT_PKCS12_CERT.content)]),
|
||||
CLIENT_PKCS12_CERT.password,
|
||||
CLIENT_PKCS12_CERT.nickname,
|
||||
CLIENT_PKCS12_CERT.usage,
|
||||
function() {
|
||||
return gTestSuite.ensureWifiEnabled(true)
|
||||
// Load required server files.
|
||||
.then(() => gTestSuite.writeFile(SERVER_EAP_USER_CONF.path, SERVER_EAP_USER_CONF.content))
|
||||
.then(() => gTestSuite.writeFile(CA_CERT.path, CA_CERT.content))
|
||||
.then(() => gTestSuite.writeFile(SERVER_CERT.path, SERVER_CERT.content))
|
||||
.then(() => gTestSuite.writeFile(SERVER_KEY.path, SERVER_KEY.content))
|
||||
// Start AP.
|
||||
.then(() => gTestSuite.startHostapds(WPA_EAP_AP_LIST))
|
||||
// Scan test.
|
||||
.then(() => gTestSuite.testWifiScanWithRetry(SCAN_RETRY_CNT, WPA_EAP_AP_LIST))
|
||||
// Associate test.
|
||||
.then(() => convertToTestAssociateChain(WPA_EAP_CLIENT_LIST))
|
||||
// Tear down.
|
||||
.then(gTestSuite.killAllHostapd)
|
||||
});
|
622
dom/wifi/test/marionette/test_wifi_associate_WPA_EAP_TLS.js
Normal file
622
dom/wifi/test/marionette/test_wifi_associate_WPA_EAP_TLS.js
Normal file
@ -0,0 +1,622 @@
|
||||
/* Any copyright is dedicated to the Public Domain.
|
||||
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
MARIONETTE_TIMEOUT = 60000;
|
||||
MARIONETTE_HEAD_JS = 'head.js';
|
||||
|
||||
const SCAN_RETRY_CNT = 5;
|
||||
|
||||
const EAP_USERNAME = 'username';
|
||||
const EAP_PASSWORD = 'password';
|
||||
|
||||
const SERVER_EAP_USER_CONF = {
|
||||
path: HOSTAPD_CONFIG_PATH + 'hostapd.eap_user',
|
||||
content: '* PEAP,TTLS,TLS\n' +
|
||||
'"' + EAP_USERNAME + '" MSCHAPV2,TTLS-MSCHAPV2 "' + EAP_PASSWORD + '" [2]\n'
|
||||
};
|
||||
const CA_CERT = {
|
||||
path: HOSTAPD_CONFIG_PATH + 'ca.pem',
|
||||
content: '-----BEGIN CERTIFICATE-----\n' +
|
||||
'MIIDsTCCApmgAwIBAgIJAKxTf+8X8qngMA0GCSqGSIb3DQEBCwUAMG4xCzAJBgNV\n' +
|
||||
'BAYTAlRXMRMwEQYDVQQIDApTb21lLVN0YXRlMREwDwYDVQQKDAhjaHVja2xlZTER\n' +
|
||||
'MA8GA1UEAwwIY2h1Y2tsZWUxJDAiBgkqhkiG9w0BCQEWFWNodWNrbGkwNzA2QGdt\n' +
|
||||
'YWlsLmNvbTAgFw0xNDEyMjQxMTI4NTBaGA8yMjg4MTAwNzExMjg1MFowbjELMAkG\n' +
|
||||
'A1UEBhMCVFcxEzARBgNVBAgMClNvbWUtU3RhdGUxETAPBgNVBAoMCGNodWNrbGVl\n' +
|
||||
'MREwDwYDVQQDDAhjaHVja2xlZTEkMCIGCSqGSIb3DQEJARYVY2h1Y2tsaTA3MDZA\n' +
|
||||
'Z21haWwuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAo3c2yFxY\n' +
|
||||
'o6gGg0I83jy00ME+MAfzCd+4ShL45ZLqysQP93jRBfPzU9ZuZ29ysVwgWIdqkZao\n' +
|
||||
'XTuV/NAW2GMGd8W1jQJ3J81fjb9wvhlny3rrACwvUn1N1S1BnM+BAAiDLGxEmvAQ\n' +
|
||||
'onp2aaa6HsHsYS8ONX+d2Qh4LEA4vupeSGAqJychCZv/l+aq/ErFZhFYB3CPUQEt\n' +
|
||||
'cClO24ucsIYP95lA0zhscnmAj06qplFD4Bv6IVrdDqujy1zNwCQwsJq/8OQdaTN/\n' +
|
||||
'h3y9pWvNKMBMM2niOUAjtuNpqsSK/lTS1WAT3PdtVECX9fYBi0Bg+HM92xs/6gt6\n' +
|
||||
'kh9jPV8keXHvSwIDAQABo1AwTjAdBgNVHQ4EFgQU7hBqhuG04xeCzrQ3ngx18ZJ3\n' +
|
||||
'lUswHwYDVR0jBBgwFoAU7hBqhuG04xeCzrQ3ngx18ZJ3lUswDAYDVR0TBAUwAwEB\n' +
|
||||
'/zANBgkqhkiG9w0BAQsFAAOCAQEAFYX2iy680GAnBTttk0gyX6gk+8pYr3D22k/G\n' +
|
||||
'6rvcjefzS7ELQPRKr6mfmwXq3mMf/4jiS2zI5zmXsestPYzHYxf2viQ6t7vr9XiJ\n' +
|
||||
'3WfFjNw4ERlRisAvg0aqqTNNQq5v2VME4sdFZagy217f73C7azwCHl0bqOLH05rl\n' +
|
||||
'8RubOxiHEj7ZybJqnRciK/bht4D+rZkwf4bBBmoloqH7xT0+rFQclpYXDGGjNUQB\n' +
|
||||
'LcHLF10xcr7g3ZVVu82fe6+d85gIGOIMR9+TKhdw6gO3CNcnDAj6gxksghgtcxmh\n' +
|
||||
'OzOggCn7nlIwImtsg2sZkpWB4lEi9hdv4lkNuyFjOL3bnuc+NA==\n' +
|
||||
'-----END CERTIFICATE-----\n'
|
||||
};
|
||||
|
||||
const SERVER_CERT = {
|
||||
path: HOSTAPD_CONFIG_PATH + 'server.pem',
|
||||
content: '-----BEGIN CERTIFICATE-----\n' +
|
||||
'MIID1DCCArygAwIBAgIBADANBgkqhkiG9w0BAQsFADBuMQswCQYDVQQGEwJUVzET\n' +
|
||||
'MBEGA1UECAwKU29tZS1TdGF0ZTERMA8GA1UECgwIY2h1Y2tsZWUxETAPBgNVBAMM\n' +
|
||||
'CGNodWNrbGVlMSQwIgYJKoZIhvcNAQkBFhVjaHVja2xpMDcwNkBnbWFpbC5jb20w\n' +
|
||||
'IBcNMTQxMjI0MTEyOTQ5WhgPMjI4ODEwMDcxMTI5NDlaMG4xCzAJBgNVBAYTAlRX\n' +
|
||||
'MRMwEQYDVQQIDApTb21lLVN0YXRlMREwDwYDVQQKDAhjaHVja2xlZTERMA8GA1UE\n' +
|
||||
'AwwIY2h1Y2tsZWUxJDAiBgkqhkiG9w0BCQEWFWNodWNrbGkwNzA2QGdtYWlsLmNv\n' +
|
||||
'bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMdhQmKilTJbWZRxTiSV\n' +
|
||||
'rqIU+LYW1RKghx5o+0JpNRJVLuz5kBMaNskbbfUSNuHbEq0QA9BDKAZWIc4LSotk\n' +
|
||||
'lCo8TbcO9CJvJPQGGjGdHcohWX5vy6BE/OVE46CUteMFyZF6F8R2fNUww08iR/u1\n' +
|
||||
'YZebL5pWO1j43sPpAzEy6Tij2ACPt6EZcFaZG3SF2mVJWkCQnBqrojP65WUvZQqp\n' +
|
||||
'seUhW2YAS8Nu0Yrohgxz6VYk+cNDuDZVGs6qWRStZzJfYrfc76DtkHof5B14M+xp\n' +
|
||||
'XJaBLxN+whvnYkDTfinaCxnW1O7eXUltr87fLc5zmeBkgwaiaQuIdcfZm7vDUiz8\n' +
|
||||
'vnUCAwEAAaN7MHkwCQYDVR0TBAIwADAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBH\n' +
|
||||
'ZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFKK4f9/YavTHOfEiAB83Deac\n' +
|
||||
'6gT5MB8GA1UdIwQYMBaAFO4QaobhtOMXgs60N54MdfGSd5VLMA0GCSqGSIb3DQEB\n' +
|
||||
'CwUAA4IBAQBWnO9o9KSJIqjoz5Nwll63ULOdcvgGdOeJIw1fcKQ817Rsp+TVcjcH\n' +
|
||||
'IrIADsT/QZGXRO/l6p1750e2iFtJEo1hsRaxtA1wWn2I9HO3+av2spQhr3jpYGPf\n' +
|
||||
'zpsMTp4RNYV7Q8+q1kZIz9PY4V1T0p6lveK8+fUj2hSLnxSj0QiGSJJtnEC3w4Rv\n' +
|
||||
'C9T6oUwIeToULmi+8FXQFdEqwKRU98DPq3eLzN28ZxUgoPE1C8+42D2UW8uyp/Gm\n' +
|
||||
'tGOa/k7nzkCdVqZI7lX7f0AjEvQgjtAMQ/k7Mhxx7TzW2HO+1YPMoKji6Z4WkNwt\n' +
|
||||
'JEj9ZUBSNt8B26UksJMBDkcvSegF3a7o\n' +
|
||||
'-----END CERTIFICATE-----\n'
|
||||
};
|
||||
|
||||
const SERVER_KEY = {
|
||||
path: HOSTAPD_CONFIG_PATH + 'server.key',
|
||||
content: '-----BEGIN RSA PRIVATE KEY-----\n' +
|
||||
'MIIEpAIBAAKCAQEAx2FCYqKVMltZlHFOJJWuohT4thbVEqCHHmj7Qmk1ElUu7PmQ\n' +
|
||||
'Exo2yRtt9RI24dsSrRAD0EMoBlYhzgtKi2SUKjxNtw70Im8k9AYaMZ0dyiFZfm/L\n' +
|
||||
'oET85UTjoJS14wXJkXoXxHZ81TDDTyJH+7Vhl5svmlY7WPjew+kDMTLpOKPYAI+3\n' +
|
||||
'oRlwVpkbdIXaZUlaQJCcGquiM/rlZS9lCqmx5SFbZgBLw27RiuiGDHPpViT5w0O4\n' +
|
||||
'NlUazqpZFK1nMl9it9zvoO2Qeh/kHXgz7GlcloEvE37CG+diQNN+KdoLGdbU7t5d\n' +
|
||||
'SW2vzt8tznOZ4GSDBqJpC4h1x9mbu8NSLPy+dQIDAQABAoIBAASG4Mr8hgaurEoC\n' +
|
||||
'iJOsElr7vunjetMBcg/uskW/vcS8ymP3Bp5oafYG+WgnEbfvEW18f5mq7K24JuxW\n' +
|
||||
'tUqU7ghHdjxByqk9fMlNmiqmNpbwSufkAeuRpWxPNBvhRH/zEbCL5R5A0nTEtqqF\n' +
|
||||
'TL0aUSzwCRSoAJD0lZo9ICVt0n3GsDyM9rqQg/uZmh1qsRdwPsRuYORND9g48rKq\n' +
|
||||
'6WN9leskSxhhsYE2D9ocOFd9bNt8Zxejh9ppVSnG/KsIdt18iBzcabatgAQ046fb\n' +
|
||||
'Z3vprcZJLg93Sg2gSuVqlSTs3M2W8VQnm22/EBMb1y0M48MSRCgnbPLG/CcCLLfF\n' +
|
||||
'LwxCOgECgYEA/eYt67xyJ6JeAdxdwOZuT1WWGbFpLiG9+2OgiHumyRQ5969XMTWo\n' +
|
||||
'fIhMKchDdjoy9RR236\/\/EFCs7UEyB7+a7ODRzNiK2zCD8Smjp+21fUPSthEeQesk\n' +
|
||||
'eiMYICIu5Ay35x9sxIX+XOUVvRhPOGcD29GVeRnKh1inTHOz2dje8LkCgYEAyQeY\n' +
|
||||
'STi9jjCEcHkM1E/UeDiLfHHepLXi8wS41JNRHl5Jacp7XB5djAjKu/jf367/VpFy\n' +
|
||||
'GDDMetE7n8eWkrnAvovxOwZ000YDMtL1sUYSjL+XtBS5s6VY1p4qaSAY9nUUGrJh\n' +
|
||||
'JvtvsuI7SKTtL+60vjBOH7zDnvOdBgAp0utLhZ0CgYEAuLzzqrPKB8afShFSchn4\n' +
|
||||
'J2dpuLYahsNsXW7HDqeR2nsKFosRETAusLXnXPtnAq4kB6jlOarwFqnsuRCX24Vx\n' +
|
||||
'r2uBm9/vYL7zMdUPTA+s30ErHuhjsKjsOKYyVqcooSwT32pBFNk+E89nutfmRG7I\n' +
|
||||
'IvhjHuNCNqqtx/Xj5d1jkZkCgYBQicppC2Jl5OoqZVTOem0U/RJk+PnJ41TZJ7sk\n' +
|
||||
'7yBAmmWvDH\/\/l+rCf4M5a6vFYcbKV9rt9h711X2dtciNX/3oWQh8LUoAmrwNUJc+\n' +
|
||||
'PmSQHvIYI3WCk2vUD+nN1B4sHxu+1lg11eYaNKiroeeknG2tBI1ICcgVlmQCU25u\n' +
|
||||
'IfZPwQKBgQCdO6QHhPLtcHUDNFA6FQ1jKL1iEd7G0JLVRz4Xkpkn1Vrr5MD6JFDa\n' +
|
||||
'5ccabADyl0lpFqDIVJQIzLku2hOD2i9aBNCY0pL391HeOS7CkZX+TdOY1tquoBq5\n' +
|
||||
'MnmixZjDCVd2VcrVyTA6ntOBoharKFW0rH1PqU+qu7dZF7CBPbAdEw==\n' +
|
||||
'-----END RSA PRIVATE KEY-----\n'
|
||||
};
|
||||
|
||||
const WPA_EAP_AP_LIST = [
|
||||
{
|
||||
ssid: 'WPA-EAP-TLS',
|
||||
ieee8021x: 1,
|
||||
eapol_version: 1,
|
||||
eap_server: 1,
|
||||
eapol_key_index_workaround: 0,
|
||||
eap_user_file: SERVER_EAP_USER_CONF.path,
|
||||
ca_cert: CA_CERT.path,
|
||||
server_cert: SERVER_CERT.path,
|
||||
private_key: SERVER_KEY.path,
|
||||
wpa: 2,
|
||||
wpa_key_mgmt: 'WPA-EAP'
|
||||
}
|
||||
];
|
||||
|
||||
const CLIENT_PKCS12_CERT = {
|
||||
nickname: 'client',
|
||||
password: 'password',
|
||||
usage: ['UserCert', 'ServerCert'],
|
||||
content: [0x30, 0x82, 0x0E, 0x01, 0x02, 0x01, 0x03, 0x30,
|
||||
0x82, 0x0D, 0xC7, 0x06, 0x09, 0x2A, 0x86, 0x48,
|
||||
0x86, 0xF7, 0x0D, 0x01, 0x07, 0x01, 0xA0, 0x82,
|
||||
0x0D, 0xB8, 0x04, 0x82, 0x0D, 0xB4, 0x30, 0x82,
|
||||
0x0D, 0xB0, 0x30, 0x82, 0x08, 0x67, 0x06, 0x09,
|
||||
0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x07,
|
||||
0x06, 0xA0, 0x82, 0x08, 0x58, 0x30, 0x82, 0x08,
|
||||
0x54, 0x02, 0x01, 0x00, 0x30, 0x82, 0x08, 0x4D,
|
||||
0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D,
|
||||
0x01, 0x07, 0x01, 0x30, 0x1C, 0x06, 0x0A, 0x2A,
|
||||
0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x0C, 0x01,
|
||||
0x06, 0x30, 0x0E, 0x04, 0x08, 0x67, 0x7A, 0xF3,
|
||||
0x61, 0xBE, 0xE0, 0x51, 0xC1, 0x02, 0x02, 0x08,
|
||||
0x00, 0x80, 0x82, 0x08, 0x20, 0xFC, 0x6A, 0x79,
|
||||
0xA1, 0x6C, 0xAF, 0xBE, 0xEE, 0x62, 0x45, 0x33,
|
||||
0xB8, 0x48, 0xE1, 0x68, 0xA1, 0x15, 0x11, 0x4B,
|
||||
0x95, 0xCB, 0x77, 0xC0, 0x5D, 0xA2, 0xCB, 0xDB,
|
||||
0xD1, 0x83, 0x74, 0x60, 0xD7, 0xEC, 0x42, 0xA6,
|
||||
0x3A, 0x23, 0xF7, 0x85, 0xEB, 0xC1, 0xFE, 0x6A,
|
||||
0x57, 0x8E, 0xC1, 0x44, 0xF3, 0x1F, 0xFE, 0xB8,
|
||||
0x2D, 0x8C, 0x4D, 0xC9, 0x5B, 0xAE, 0x21, 0x2E,
|
||||
0x4C, 0x1A, 0xEB, 0x84, 0x09, 0xF3, 0x40, 0x92,
|
||||
0x39, 0x7F, 0x56, 0x02, 0x46, 0x61, 0x16, 0xDE,
|
||||
0x5C, 0x48, 0xB6, 0x0C, 0x1D, 0xD3, 0x5F, 0x10,
|
||||
0x9A, 0x39, 0xB8, 0x66, 0x31, 0xFC, 0x39, 0x71,
|
||||
0x87, 0x23, 0x46, 0x9D, 0xE8, 0x3C, 0x2B, 0xA1,
|
||||
0x39, 0x8A, 0xD3, 0xFF, 0xD9, 0x43, 0xB6, 0x61,
|
||||
0xC6, 0x67, 0x70, 0x40, 0xBD, 0xFE, 0xD3, 0xC1,
|
||||
0x68, 0xF5, 0xF7, 0xC8, 0x89, 0xD8, 0x17, 0xC5,
|
||||
0xE8, 0x3D, 0x29, 0xD5, 0x91, 0xDF, 0x1F, 0x56,
|
||||
0x74, 0x5A, 0xC4, 0xA8, 0x14, 0xBA, 0xD4, 0xFA,
|
||||
0x13, 0x49, 0x2A, 0x9F, 0x63, 0xF1, 0xB2, 0x45,
|
||||
0xF1, 0xF0, 0x2A, 0xDD, 0x75, 0x66, 0x8A, 0xF7,
|
||||
0xAB, 0x73, 0x86, 0x26, 0x9D, 0x1F, 0x07, 0xAD,
|
||||
0xD3, 0xFE, 0xE0, 0xA3, 0xED, 0xA0, 0x96, 0x3E,
|
||||
0x1E, 0x89, 0x86, 0x02, 0x4C, 0x28, 0xFD, 0x57,
|
||||
0xA1, 0x67, 0x55, 0xF0, 0x82, 0x3B, 0x7F, 0xCC,
|
||||
0x2A, 0x32, 0x01, 0x93, 0x1D, 0x8B, 0x66, 0x8A,
|
||||
0x20, 0x52, 0x84, 0xDD, 0x2C, 0xFD, 0xEE, 0x72,
|
||||
0xF3, 0x8C, 0x58, 0xB9, 0x99, 0xE5, 0xC1, 0x22,
|
||||
0x63, 0x59, 0x00, 0xE2, 0x76, 0xC5, 0x3A, 0x17,
|
||||
0x7F, 0x93, 0xE9, 0x67, 0x61, 0xAA, 0x10, 0xC3,
|
||||
0xD9, 0xC8, 0x24, 0x46, 0x5B, 0xBE, 0x8C, 0x1F,
|
||||
0x2D, 0x66, 0x48, 0xD2, 0x02, 0x11, 0xFB, 0x74,
|
||||
0x14, 0x76, 0x76, 0x5A, 0x98, 0x54, 0x35, 0xA7,
|
||||
0x85, 0x66, 0x20, 0x26, 0x8B, 0x13, 0x6F, 0x68,
|
||||
0xE3, 0xC9, 0x58, 0x7D, 0x1C, 0x3E, 0x01, 0x8D,
|
||||
0xF8, 0xD6, 0x7F, 0xCF, 0xA2, 0x07, 0xB7, 0x95,
|
||||
0xFD, 0xF0, 0x02, 0x34, 0x32, 0x30, 0xE8, 0xD4,
|
||||
0x57, 0x5E, 0x53, 0xFB, 0x54, 0xE2, 0x03, 0x32,
|
||||
0xCC, 0x52, 0x2E, 0xD2, 0x35, 0xD9, 0x58, 0x85,
|
||||
0x2D, 0xEC, 0x2D, 0x71, 0xD1, 0x8A, 0x29, 0xD0,
|
||||
0xB0, 0x24, 0xBD, 0x24, 0xDC, 0x1A, 0x28, 0x3F,
|
||||
0xA0, 0x12, 0x81, 0x15, 0x24, 0xC9, 0xB5, 0x4A,
|
||||
0x23, 0xB6, 0xA3, 0x45, 0x50, 0x2D, 0x73, 0x99,
|
||||
0x6B, 0x1C, 0xFB, 0xA4, 0x53, 0xD7, 0x5C, 0xF4,
|
||||
0x6C, 0xB0, 0xE5, 0x74, 0xB3, 0x76, 0xF8, 0xB1,
|
||||
0x0D, 0x59, 0x70, 0x9F, 0xCA, 0xDE, 0xF2, 0xAA,
|
||||
0x4C, 0x7D, 0x11, 0x54, 0xC4, 0x19, 0x0F, 0x36,
|
||||
0x4A, 0x62, 0xFF, 0x8B, 0x10, 0xCB, 0x93, 0x50,
|
||||
0xDA, 0x79, 0x5E, 0x4E, 0x09, 0x1F, 0x22, 0xC8,
|
||||
0x19, 0x85, 0xE9, 0xEE, 0xB7, 0x71, 0x65, 0xB9,
|
||||
0x10, 0xD2, 0x0A, 0x73, 0x5B, 0xA6, 0xDA, 0x37,
|
||||
0x46, 0x02, 0x00, 0x98, 0x9E, 0x20, 0x6C, 0x7D,
|
||||
0xC7, 0x69, 0xBB, 0xC2, 0x00, 0x40, 0x9C, 0x57,
|
||||
0x00, 0xC2, 0x36, 0x76, 0xE8, 0x2A, 0x8D, 0xAD,
|
||||
0x62, 0x57, 0xC8, 0xD0, 0x9D, 0x66, 0x27, 0x5A,
|
||||
0xD8, 0x0D, 0x35, 0x60, 0x28, 0x38, 0x62, 0x94,
|
||||
0x78, 0x36, 0x25, 0x58, 0xFD, 0xF8, 0x66, 0x1F,
|
||||
0x68, 0x04, 0x0F, 0xD8, 0x00, 0xDF, 0xA0, 0x6C,
|
||||
0x25, 0x42, 0x9A, 0x4C, 0xEB, 0x80, 0x13, 0x51,
|
||||
0x7D, 0x2D, 0xA8, 0x89, 0xD6, 0x1B, 0x67, 0x72,
|
||||
0x01, 0xF3, 0x2D, 0x16, 0x77, 0xFE, 0x22, 0xBC,
|
||||
0x8A, 0x45, 0x09, 0x1F, 0x9C, 0x2F, 0x2A, 0xA9,
|
||||
0x61, 0x5B, 0x4A, 0xE6, 0x64, 0x2C, 0x62, 0x1A,
|
||||
0x3A, 0x96, 0xE6, 0x0A, 0xAE, 0x05, 0x1A, 0xC8,
|
||||
0xCB, 0xD6, 0x8F, 0x3A, 0x4B, 0xE0, 0x7F, 0x82,
|
||||
0xB4, 0x98, 0xF1, 0x9D, 0xD7, 0x14, 0x76, 0x5E,
|
||||
0x77, 0x85, 0x87, 0xEC, 0x13, 0xDA, 0xFD, 0xAF,
|
||||
0xCB, 0xA3, 0x1C, 0x99, 0xC1, 0xFE, 0x17, 0x0C,
|
||||
0x40, 0x4D, 0x3C, 0x8F, 0x70, 0x86, 0x63, 0x64,
|
||||
0xB7, 0x75, 0xA8, 0x71, 0x36, 0xDC, 0x54, 0x10,
|
||||
0x57, 0x0C, 0xA8, 0xF2, 0xA1, 0xBB, 0xED, 0x03,
|
||||
0x41, 0x57, 0x34, 0x2C, 0x8F, 0x7C, 0xA0, 0x09,
|
||||
0xF3, 0x9E, 0x41, 0xB7, 0xA8, 0xD4, 0x66, 0x0D,
|
||||
0x0D, 0xC0, 0x6A, 0xFC, 0x6A, 0xA2, 0xAC, 0xE2,
|
||||
0x60, 0x00, 0xE3, 0xF7, 0x75, 0x43, 0x23, 0xEB,
|
||||
0xC8, 0x61, 0xFA, 0xB3, 0xB8, 0x28, 0xCE, 0xCA,
|
||||
0xF4, 0x47, 0x7F, 0x30, 0x6D, 0x61, 0x89, 0x47,
|
||||
0xA1, 0x4A, 0xFE, 0xD1, 0x21, 0x0B, 0x6D, 0xF4,
|
||||
0x3F, 0x00, 0x86, 0x30, 0x8E, 0x33, 0x21, 0x6F,
|
||||
0xDA, 0x15, 0xFD, 0x5F, 0xEC, 0x8E, 0xF1, 0x12,
|
||||
0x3F, 0xC9, 0x83, 0x0C, 0xCA, 0x22, 0x01, 0xF1,
|
||||
0x70, 0x5F, 0x1F, 0x66, 0xB5, 0xF8, 0x3E, 0x7A,
|
||||
0x6F, 0xDE, 0xDB, 0xA7, 0x8D, 0x18, 0x9E, 0xBE,
|
||||
0xDB, 0xAD, 0x3D, 0x66, 0x30, 0xC1, 0x6C, 0x0C,
|
||||
0x87, 0xB4, 0x65, 0x75, 0xE0, 0x9D, 0xEA, 0x16,
|
||||
0x0D, 0x07, 0x37, 0x33, 0xC5, 0xEC, 0x97, 0x93,
|
||||
0x37, 0xEB, 0x8E, 0x65, 0x9C, 0x40, 0x63, 0x6C,
|
||||
0x43, 0x60, 0xB0, 0x40, 0x4D, 0x85, 0xEF, 0xC2,
|
||||
0x47, 0x5F, 0xE7, 0x6B, 0xCB, 0x40, 0xE8, 0xEA,
|
||||
0xD8, 0xAB, 0xB1, 0x9A, 0x72, 0xDC, 0x4C, 0x14,
|
||||
0xFA, 0x43, 0x61, 0x5F, 0xA6, 0x5C, 0x3A, 0x05,
|
||||
0x17, 0x2E, 0x74, 0xF3, 0x5E, 0x45, 0xD9, 0x47,
|
||||
0xAA, 0x59, 0xB6, 0x8F, 0x42, 0x66, 0x42, 0x29,
|
||||
0x90, 0x95, 0x48, 0x46, 0x91, 0x88, 0x3C, 0x8C,
|
||||
0xDE, 0xCC, 0xED, 0xB3, 0xAA, 0x62, 0xEA, 0xBC,
|
||||
0xB4, 0x0C, 0x48, 0x4C, 0x53, 0x23, 0x5E, 0x24,
|
||||
0x85, 0xBF, 0x92, 0xDA, 0x14, 0xDB, 0x1A, 0x3D,
|
||||
0xEF, 0x30, 0xD9, 0x49, 0x64, 0x4D, 0xE5, 0x01,
|
||||
0xFC, 0xA4, 0x4B, 0xD1, 0x9F, 0xDE, 0x96, 0x7F,
|
||||
0x50, 0xBC, 0x4D, 0x38, 0x44, 0xE9, 0x23, 0x5F,
|
||||
0x37, 0x57, 0x1A, 0xA6, 0x52, 0x5A, 0x0F, 0x4F,
|
||||
0x87, 0x33, 0x4A, 0x7B, 0x66, 0xEE, 0x3D, 0x66,
|
||||
0x0A, 0x63, 0x39, 0x1F, 0x23, 0x38, 0x35, 0x73,
|
||||
0x60, 0x5E, 0x47, 0x20, 0x4F, 0xC0, 0xC8, 0x3C,
|
||||
0x09, 0xF9, 0x29, 0x4F, 0x5E, 0x55, 0x69, 0xC4,
|
||||
0x6B, 0xE8, 0xF8, 0x91, 0xC0, 0x22, 0x65, 0x15,
|
||||
0x1E, 0xFB, 0xB9, 0x61, 0xCE, 0x45, 0xBE, 0x2B,
|
||||
0xEE, 0xB9, 0x04, 0x2B, 0xFD, 0xAE, 0x61, 0x1C,
|
||||
0x3D, 0x3D, 0x7C, 0xBF, 0xC1, 0xF7, 0x3C, 0x4E,
|
||||
0x9E, 0x0E, 0x54, 0xC8, 0xAD, 0xA9, 0xDF, 0x43,
|
||||
0x49, 0xB9, 0x41, 0x05, 0xE5, 0xF1, 0x49, 0xAA,
|
||||
0x77, 0x6C, 0x34, 0x5B, 0x93, 0x24, 0x24, 0x23,
|
||||
0x74, 0x68, 0x11, 0xCE, 0x15, 0x80, 0xA1, 0xA4,
|
||||
0x1F, 0x8D, 0x81, 0xCD, 0xB2, 0x98, 0xCA, 0x14,
|
||||
0x0B, 0x0C, 0x61, 0x50, 0x69, 0x72, 0xAE, 0xFA,
|
||||
0x8B, 0xC0, 0x3F, 0x0D, 0xE7, 0xF2, 0x0F, 0xEB,
|
||||
0xC1, 0x11, 0xB9, 0x10, 0x03, 0x6A, 0xF5, 0x97,
|
||||
0x3C, 0x53, 0x2F, 0x67, 0x86, 0x09, 0x6A, 0xE3,
|
||||
0x28, 0xC0, 0x78, 0xC8, 0xB4, 0x39, 0x8E, 0xD1,
|
||||
0xCE, 0x25, 0xE8, 0x66, 0xF7, 0x09, 0x40, 0x7D,
|
||||
0x81, 0xFB, 0xAF, 0xFA, 0x59, 0xC4, 0x9B, 0x2B,
|
||||
0x83, 0x45, 0x5B, 0xA8, 0x66, 0x9E, 0x38, 0xC8,
|
||||
0xFD, 0xAC, 0xF2, 0x2D, 0x21, 0xDE, 0x50, 0x4C,
|
||||
0x03, 0xCB, 0x88, 0x42, 0xDD, 0x84, 0x09, 0x99,
|
||||
0x8E, 0x8B, 0x40, 0x97, 0x1B, 0x14, 0x85, 0x37,
|
||||
0x11, 0x01, 0xE0, 0x74, 0x6B, 0x33, 0x52, 0x8C,
|
||||
0x68, 0x3A, 0x89, 0xB2, 0xAF, 0x35, 0xE6, 0x65,
|
||||
0xC3, 0x58, 0x70, 0xD2, 0xE7, 0x1F, 0x1F, 0xF6,
|
||||
0xE5, 0x0A, 0xB1, 0xFE, 0xD0, 0xC9, 0x51, 0x50,
|
||||
0xE7, 0xFD, 0x58, 0xF5, 0xC4, 0x58, 0x65, 0x94,
|
||||
0xD1, 0x57, 0x55, 0x5E, 0xD2, 0x27, 0x98, 0xAF,
|
||||
0xE7, 0x55, 0x0B, 0x87, 0x50, 0x9B, 0xEF, 0xE8,
|
||||
0x2B, 0xFC, 0xE7, 0x3B, 0x4E, 0xD7, 0xB7, 0x4D,
|
||||
0xF4, 0xBC, 0xF4, 0x88, 0x63, 0xE4, 0x8A, 0x20,
|
||||
0x4B, 0x22, 0xB0, 0xA0, 0x53, 0x7F, 0xA8, 0xC9,
|
||||
0x0C, 0xF8, 0xD7, 0xBD, 0x46, 0x39, 0xA7, 0x7D,
|
||||
0xDD, 0x10, 0x91, 0x50, 0x54, 0x06, 0x47, 0xF0,
|
||||
0x3C, 0xAA, 0x43, 0x40, 0xF8, 0x54, 0xDD, 0x8A,
|
||||
0xEA, 0x8A, 0x0B, 0xA5, 0x7F, 0xCD, 0x5E, 0xAA,
|
||||
0x02, 0x2E, 0x1F, 0xC6, 0x50, 0x15, 0xF8, 0x0A,
|
||||
0x0C, 0x1B, 0x3C, 0x55, 0x3A, 0xC3, 0x6F, 0x88,
|
||||
0xD7, 0xBF, 0xB1, 0x02, 0xCC, 0xE0, 0x08, 0x29,
|
||||
0x97, 0xD2, 0xAA, 0x23, 0xC4, 0x6D, 0xE3, 0xE3,
|
||||
0x76, 0x39, 0x92, 0xC3, 0x2E, 0x7A, 0xE2, 0x98,
|
||||
0xD1, 0xFC, 0xAE, 0xCC, 0x95, 0xD8, 0xB4, 0xDC,
|
||||
0x92, 0xEA, 0x6A, 0x5F, 0xF2, 0x92, 0x17, 0x0B,
|
||||
0x8D, 0xC3, 0xFA, 0x9C, 0x62, 0xCE, 0x44, 0x8D,
|
||||
0xC3, 0x1E, 0xC3, 0xB2, 0xD5, 0x00, 0xCD, 0xB4,
|
||||
0x9E, 0x2D, 0x7B, 0xF2, 0x98, 0xA3, 0x00, 0x8B,
|
||||
0x81, 0x30, 0x77, 0x5B, 0x02, 0x99, 0xB1, 0xCD,
|
||||
0xC3, 0x1D, 0x74, 0x74, 0xEF, 0x41, 0xCB, 0x69,
|
||||
0x63, 0x8E, 0xA6, 0xD3, 0x2D, 0x3E, 0x1F, 0x1D,
|
||||
0x12, 0x9E, 0xD9, 0x18, 0x67, 0x06, 0xAF, 0x37,
|
||||
0x29, 0xAD, 0x65, 0xD8, 0xEB, 0x71, 0xC4, 0x7D,
|
||||
0x94, 0x3D, 0xEA, 0xCC, 0xDF, 0x72, 0x41, 0x51,
|
||||
0x3C, 0xA1, 0x66, 0x98, 0x32, 0x32, 0x40, 0x54,
|
||||
0xB0, 0x2F, 0xEB, 0xCE, 0xDF, 0x4A, 0x64, 0xFB,
|
||||
0x9A, 0x90, 0xDC, 0xF6, 0x6F, 0xA9, 0xD4, 0xCA,
|
||||
0xCB, 0x91, 0xC4, 0xFE, 0xEE, 0x9C, 0x01, 0x50,
|
||||
0x2E, 0xAC, 0xCC, 0x5F, 0x89, 0xD0, 0x91, 0xA3,
|
||||
0xD9, 0xF9, 0x4B, 0x8D, 0xDE, 0x6C, 0x60, 0x21,
|
||||
0x19, 0xB1, 0xD3, 0x4D, 0x75, 0x56, 0x6F, 0xB8,
|
||||
0x25, 0xA4, 0x92, 0x4F, 0x12, 0xF5, 0x8F, 0xC1,
|
||||
0x17, 0x4B, 0xB3, 0x34, 0x21, 0x22, 0xAC, 0x52,
|
||||
0xD2, 0x64, 0xC9, 0x9A, 0x7D, 0xFC, 0xC0, 0x0A,
|
||||
0x89, 0x34, 0xFF, 0x08, 0xD3, 0x04, 0xDC, 0xFE,
|
||||
0x7C, 0xB3, 0xB8, 0xFD, 0x85, 0xDD, 0x79, 0x51,
|
||||
0xA7, 0x89, 0xE8, 0xF1, 0x23, 0xB1, 0xDF, 0xD7,
|
||||
0x1F, 0x7B, 0xB1, 0x5D, 0x42, 0xF9, 0x61, 0xF8,
|
||||
0xDC, 0x81, 0x04, 0xF1, 0xCC, 0xFA, 0xD7, 0xED,
|
||||
0xBF, 0x47, 0xAC, 0xBD, 0xE5, 0xFA, 0xAC, 0xB3,
|
||||
0x1C, 0xD9, 0xA1, 0xB3, 0x60, 0xEE, 0x9C, 0x8A,
|
||||
0x36, 0x57, 0xB4, 0x2F, 0xA1, 0xA2, 0xF3, 0xE2,
|
||||
0x09, 0x9A, 0x6E, 0x43, 0x9B, 0xE5, 0x93, 0xB8,
|
||||
0x3D, 0x9E, 0x9F, 0xC1, 0xC6, 0x0D, 0x02, 0xEB,
|
||||
0x4D, 0x38, 0xE9, 0xB4, 0x9F, 0xEA, 0x33, 0x8C,
|
||||
0x07, 0xD8, 0xB4, 0x71, 0xAD, 0xE5, 0x43, 0xB2,
|
||||
0xCC, 0x55, 0x93, 0x6A, 0xDB, 0x1E, 0x80, 0xDB,
|
||||
0xC2, 0xEA, 0x42, 0x8E, 0xFC, 0x86, 0x44, 0xC9,
|
||||
0x8A, 0xC4, 0xF2, 0x46, 0xA7, 0x39, 0x50, 0x0D,
|
||||
0x1A, 0xAA, 0x07, 0x04, 0xBE, 0xD4, 0xCE, 0x62,
|
||||
0x4D, 0x0F, 0x91, 0x7D, 0x29, 0x88, 0x9C, 0x4C,
|
||||
0xAF, 0xF7, 0xD8, 0x40, 0x93, 0x88, 0xC7, 0x20,
|
||||
0xD2, 0x17, 0x2A, 0xC4, 0x92, 0x72, 0xD0, 0xC0,
|
||||
0x4E, 0x56, 0x47, 0xB1, 0x27, 0x02, 0xE6, 0x61,
|
||||
0x82, 0x5E, 0xC8, 0x2E, 0x90, 0xD2, 0x31, 0x22,
|
||||
0xE2, 0xA9, 0x4A, 0x91, 0x45, 0x69, 0xB1, 0xA5,
|
||||
0x0F, 0x66, 0x2C, 0x30, 0xAD, 0x7F, 0x1B, 0x0E,
|
||||
0x22, 0x17, 0x60, 0x2E, 0x3D, 0x7F, 0x7F, 0x8C,
|
||||
0x33, 0x51, 0xA0, 0x25, 0xDE, 0xFD, 0x75, 0xBC,
|
||||
0xEF, 0xE6, 0xE7, 0x20, 0x04, 0x5A, 0xEC, 0x50,
|
||||
0x21, 0x48, 0x56, 0x98, 0xE2, 0x33, 0x6D, 0x22,
|
||||
0x5C, 0xC3, 0xFB, 0xFC, 0x6F, 0xB3, 0xA7, 0x8E,
|
||||
0x6F, 0x67, 0x70, 0x9D, 0xDA, 0x02, 0x01, 0x59,
|
||||
0x7B, 0x3D, 0x2B, 0x38, 0xCC, 0x0F, 0x44, 0x3D,
|
||||
0xFB, 0x9A, 0xB3, 0x23, 0x15, 0x50, 0x6E, 0xBF,
|
||||
0x8B, 0xA1, 0x94, 0x33, 0xE5, 0x7B, 0x88, 0x4E,
|
||||
0xCB, 0x6D, 0x9F, 0xBF, 0xBC, 0x7A, 0xA8, 0x1E,
|
||||
0x68, 0x25, 0xED, 0x8E, 0x53, 0x21, 0x72, 0xC5,
|
||||
0x70, 0xB3, 0xE4, 0xA6, 0xA1, 0x5A, 0x2D, 0xC8,
|
||||
0x43, 0x9D, 0x60, 0x77, 0x78, 0xE0, 0xC4, 0xAF,
|
||||
0xC8, 0x29, 0xBA, 0xD0, 0x4D, 0x39, 0x83, 0x51,
|
||||
0xA7, 0x10, 0x7F, 0x0C, 0x34, 0x0E, 0x6C, 0x75,
|
||||
0x26, 0xD7, 0xD6, 0xC7, 0x32, 0x53, 0xAF, 0x4E,
|
||||
0xBE, 0xF2, 0xC2, 0x0F, 0x99, 0x23, 0xB9, 0xE1,
|
||||
0xC8, 0xB4, 0xBC, 0x5A, 0xC6, 0xCB, 0xEB, 0x4D,
|
||||
0x28, 0x56, 0x72, 0xFE, 0x1B, 0x2C, 0x5D, 0xE3,
|
||||
0xBC, 0xC7, 0xA3, 0xC0, 0x7D, 0x27, 0xF0, 0xD0,
|
||||
0x4F, 0x3F, 0x1F, 0xF7, 0x87, 0x15, 0xF2, 0xEA,
|
||||
0xD4, 0x03, 0x6D, 0x2F, 0xD4, 0x8E, 0x50, 0x4B,
|
||||
0x05, 0xBF, 0xF7, 0x8C, 0x67, 0x5A, 0xDC, 0x4D,
|
||||
0xCD, 0xCF, 0x9D, 0x02, 0xB6, 0xE7, 0xAE, 0x49,
|
||||
0xD1, 0x7C, 0x00, 0xE7, 0x3B, 0xEA, 0xFB, 0x0D,
|
||||
0x2A, 0x7B, 0x41, 0x33, 0x66, 0xD0, 0x29, 0x9F,
|
||||
0xB3, 0x8A, 0x71, 0xB0, 0xE2, 0x76, 0xA9, 0xDB,
|
||||
0xFD, 0x64, 0x04, 0x69, 0xDF, 0x89, 0x1F, 0x56,
|
||||
0x86, 0x92, 0xD9, 0xD9, 0xB9, 0xF3, 0x4F, 0xAC,
|
||||
0xAE, 0x61, 0x48, 0x20, 0xCE, 0x3C, 0x2B, 0x44,
|
||||
0xAB, 0x42, 0xFA, 0xAB, 0x2E, 0x94, 0x82, 0xC8,
|
||||
0xD9, 0x97, 0xCF, 0x27, 0xDF, 0xAC, 0xAC, 0xE7,
|
||||
0xCA, 0xB2, 0x84, 0xAB, 0xF2, 0x5D, 0xDF, 0x56,
|
||||
0x0C, 0x8C, 0x07, 0x3C, 0x3D, 0xA8, 0xDD, 0xBE,
|
||||
0xFF, 0x4E, 0x28, 0x0D, 0xB2, 0x2D, 0xE6, 0x9D,
|
||||
0x44, 0x21, 0xCB, 0xE7, 0x33, 0x63, 0x22, 0x8F,
|
||||
0x4C, 0xFF, 0xB6, 0x1D, 0x9A, 0x71, 0x3F, 0xB1,
|
||||
0x29, 0xAE, 0x3A, 0x35, 0xEE, 0x9C, 0x97, 0x68,
|
||||
0xA7, 0x52, 0x66, 0x01, 0xD8, 0x9A, 0x5D, 0xF4,
|
||||
0xB3, 0x2F, 0x5C, 0xD4, 0x0E, 0xF9, 0xCF, 0x07,
|
||||
0xF6, 0x8C, 0xBA, 0xA6, 0x8D, 0x6B, 0xC6, 0x01,
|
||||
0xC2, 0x69, 0xAE, 0x60, 0x08, 0x1A, 0x0E, 0x3F,
|
||||
0xAE, 0x60, 0x29, 0xF3, 0x48, 0x0D, 0xE0, 0xD0,
|
||||
0xAE, 0x52, 0x44, 0xE9, 0x7F, 0x1F, 0x92, 0x5F,
|
||||
0x71, 0xAD, 0xEC, 0x6B, 0x47, 0x66, 0x92, 0x22,
|
||||
0x27, 0xAE, 0x6E, 0x25, 0xCD, 0xF3, 0x5F, 0x55,
|
||||
0x59, 0xBD, 0x73, 0xCE, 0x2B, 0x7E, 0x99, 0x44,
|
||||
0x56, 0x70, 0xA3, 0xE7, 0x7A, 0x59, 0x75, 0xD8,
|
||||
0x48, 0x0C, 0x39, 0x2B, 0xD7, 0x53, 0xC6, 0xAD,
|
||||
0x4A, 0x6F, 0xB4, 0x14, 0x96, 0xDF, 0xF2, 0x4A,
|
||||
0x0C, 0xA2, 0xD5, 0x29, 0x98, 0x7C, 0x42, 0x87,
|
||||
0xD9, 0x1F, 0x97, 0x61, 0xD9, 0xBF, 0x99, 0x4F,
|
||||
0x2C, 0x4C, 0x75, 0xAC, 0xB8, 0x06, 0x75, 0xD6,
|
||||
0x87, 0x76, 0x7E, 0xE3, 0x23, 0x4B, 0xEA, 0x1A,
|
||||
0x1A, 0xF4, 0xB7, 0x09, 0xAF, 0x53, 0xEB, 0xA6,
|
||||
0x39, 0x10, 0xFE, 0xD4, 0xEB, 0x1B, 0xAE, 0x38,
|
||||
0x31, 0x33, 0xBA, 0x68, 0xEE, 0xC7, 0x65, 0x76,
|
||||
0xFB, 0x49, 0x77, 0xD4, 0x19, 0xC4, 0xE6, 0xA7,
|
||||
0x05, 0xFE, 0x2A, 0xDA, 0x39, 0x99, 0x1A, 0x92,
|
||||
0xD2, 0xF0, 0x61, 0x97, 0xF6, 0x06, 0x6C, 0x88,
|
||||
0x7B, 0x6F, 0x60, 0xE6, 0x70, 0x08, 0xF0, 0xB4,
|
||||
0x6B, 0x39, 0x6F, 0x05, 0x41, 0x81, 0xF9, 0xBE,
|
||||
0x7A, 0x51, 0xC4, 0x75, 0xB0, 0x6A, 0x89, 0xA0,
|
||||
0xA6, 0x9A, 0x5B, 0xEE, 0x7D, 0x78, 0x17, 0x5F,
|
||||
0x9F, 0x3B, 0x7D, 0xDD, 0x8A, 0x9E, 0xAA, 0x1A,
|
||||
0xDA, 0x49, 0x08, 0xE9, 0xFD, 0x91, 0xA6, 0xFA,
|
||||
0xCE, 0xCF, 0x67, 0xDF, 0x0F, 0xC9, 0xD6, 0x38,
|
||||
0xD9, 0xD5, 0xD1, 0xC0, 0x76, 0x59, 0x42, 0x53,
|
||||
0xBF, 0x48, 0xE9, 0x11, 0x74, 0xC7, 0x11, 0xD8,
|
||||
0xE7, 0x8E, 0xD3, 0xC8, 0x25, 0xA1, 0x26, 0x50,
|
||||
0xBB, 0xB4, 0x35, 0xAF, 0xAF, 0x06, 0x23, 0x69,
|
||||
0x3E, 0x30, 0xFD, 0x7B, 0x34, 0x83, 0x07, 0xD0,
|
||||
0xF0, 0x0F, 0x6C, 0x9A, 0x13, 0x5D, 0xC2, 0x7B,
|
||||
0xDF, 0x6F, 0xDD, 0x8E, 0xF4, 0x30, 0x82, 0x05,
|
||||
0x41, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7,
|
||||
0x0D, 0x01, 0x07, 0x01, 0xA0, 0x82, 0x05, 0x32,
|
||||
0x04, 0x82, 0x05, 0x2E, 0x30, 0x82, 0x05, 0x2A,
|
||||
0x30, 0x82, 0x05, 0x26, 0x06, 0x0B, 0x2A, 0x86,
|
||||
0x48, 0x86, 0xF7, 0x0D, 0x01, 0x0C, 0x0A, 0x01,
|
||||
0x02, 0xA0, 0x82, 0x04, 0xEE, 0x30, 0x82, 0x04,
|
||||
0xEA, 0x30, 0x1C, 0x06, 0x0A, 0x2A, 0x86, 0x48,
|
||||
0x86, 0xF7, 0x0D, 0x01, 0x0C, 0x01, 0x03, 0x30,
|
||||
0x0E, 0x04, 0x08, 0x74, 0xC0, 0x84, 0x8F, 0xC7,
|
||||
0x74, 0x5E, 0x21, 0x02, 0x02, 0x08, 0x00, 0x04,
|
||||
0x82, 0x04, 0xC8, 0x1E, 0xF4, 0xE9, 0x07, 0x27,
|
||||
0x9E, 0x5A, 0xC9, 0x39, 0x1D, 0x37, 0x2C, 0x06,
|
||||
0x4B, 0x57, 0xEA, 0xC5, 0x42, 0x9A, 0x60, 0xD5,
|
||||
0x42, 0xB2, 0x34, 0x2D, 0xD3, 0x88, 0x7C, 0x78,
|
||||
0x87, 0xB6, 0xE9, 0x42, 0x44, 0x1F, 0x67, 0x32,
|
||||
0x92, 0x54, 0x22, 0xDA, 0xB2, 0x43, 0xE7, 0x40,
|
||||
0xBE, 0x1F, 0xAF, 0x3A, 0xCD, 0x2A, 0x9F, 0xD7,
|
||||
0x44, 0x5B, 0x37, 0x69, 0x85, 0xDF, 0xEB, 0x2A,
|
||||
0xB9, 0xE2, 0x92, 0x3B, 0xEA, 0xD5, 0x42, 0x53,
|
||||
0x95, 0x4A, 0xB0, 0x1B, 0xA5, 0xEF, 0xA6, 0x0D,
|
||||
0x29, 0xF4, 0x33, 0xFE, 0xD7, 0x49, 0x04, 0x1E,
|
||||
0x8C, 0xAD, 0x63, 0x1E, 0x79, 0x63, 0x74, 0x0C,
|
||||
0xE5, 0x5E, 0xA2, 0x2C, 0xBE, 0xB8, 0x90, 0xCE,
|
||||
0x06, 0x25, 0xBF, 0xD1, 0x5A, 0x50, 0xCF, 0x3B,
|
||||
0x52, 0xE2, 0xA7, 0xFF, 0x19, 0x02, 0xCF, 0xD0,
|
||||
0x9B, 0xD9, 0xF7, 0x28, 0x07, 0x38, 0x1F, 0xF2,
|
||||
0xAF, 0x44, 0x91, 0x3F, 0x0F, 0xB6, 0x6E, 0x8C,
|
||||
0xC0, 0x32, 0x92, 0xC0, 0xCD, 0x25, 0x98, 0x67,
|
||||
0xF1, 0x47, 0x52, 0x50, 0xF0, 0xA3, 0x7B, 0xE6,
|
||||
0x74, 0xDC, 0x72, 0x28, 0xC8, 0xAB, 0xB3, 0x31,
|
||||
0x7D, 0xA3, 0xF7, 0xC7, 0xD1, 0xE6, 0x99, 0xB4,
|
||||
0xB6, 0x5A, 0x3A, 0x4D, 0x83, 0x4F, 0xB8, 0xB5,
|
||||
0x86, 0xF8, 0x37, 0x7F, 0xA0, 0x16, 0x2F, 0x3C,
|
||||
0x62, 0x7A, 0xD4, 0x3A, 0xEB, 0xC2, 0xE8, 0x03,
|
||||
0x49, 0x17, 0x9E, 0xFB, 0xD7, 0xAF, 0x91, 0x32,
|
||||
0xFD, 0xEA, 0x4F, 0x64, 0xC6, 0x6E, 0x02, 0xEA,
|
||||
0xC4, 0xC8, 0x1F, 0x16, 0xC5, 0x4C, 0xFB, 0xC5,
|
||||
0x42, 0xF5, 0x85, 0x05, 0x92, 0x59, 0x4B, 0x31,
|
||||
0xE5, 0xE9, 0x69, 0xE7, 0x02, 0x98, 0x33, 0xBA,
|
||||
0x4C, 0x17, 0x09, 0xEF, 0x89, 0x20, 0xFA, 0x83,
|
||||
0x9F, 0xAE, 0x0E, 0x1B, 0x7D, 0x98, 0xB9, 0xF2,
|
||||
0x3C, 0x0F, 0xB7, 0x1C, 0x72, 0xDF, 0x17, 0x84,
|
||||
0x7F, 0x0A, 0xFD, 0x12, 0x3C, 0x6F, 0x68, 0x5D,
|
||||
0x45, 0xEB, 0xB8, 0xD6, 0x24, 0x65, 0x42, 0x75,
|
||||
0x5C, 0xC2, 0xF3, 0x3A, 0x6A, 0x4E, 0x51, 0x34,
|
||||
0x1B, 0xB6, 0x81, 0xB2, 0x8A, 0xEF, 0x28, 0xA4,
|
||||
0xC5, 0x88, 0x9A, 0x97, 0xE0, 0xEF, 0x31, 0x12,
|
||||
0x01, 0x7E, 0x1B, 0x43, 0x0F, 0x27, 0x80, 0x87,
|
||||
0x98, 0xC5, 0xD5, 0x83, 0xCB, 0x4B, 0xB7, 0x01,
|
||||
0x79, 0x60, 0xA1, 0x1A, 0x03, 0x05, 0xC6, 0x36,
|
||||
0x04, 0x31, 0x3C, 0x06, 0xDB, 0x08, 0xA8, 0xDA,
|
||||
0x8E, 0x32, 0x19, 0x91, 0xF1, 0x0D, 0x61, 0x6F,
|
||||
0xE4, 0xB2, 0x79, 0x8A, 0xDE, 0xF4, 0xF7, 0xFB,
|
||||
0x2C, 0x23, 0x5B, 0xD9, 0x64, 0x2F, 0xB7, 0xB3,
|
||||
0x8B, 0xCA, 0xB8, 0x8C, 0x1D, 0x3B, 0x49, 0x05,
|
||||
0x38, 0xA1, 0xE5, 0x8C, 0x1A, 0xDC, 0xA5, 0x61,
|
||||
0xFE, 0xF4, 0x2B, 0xDC, 0x77, 0x28, 0xF6, 0x19,
|
||||
0xE7, 0xB7, 0x8F, 0x4D, 0x27, 0x2D, 0xED, 0x8A,
|
||||
0x3F, 0x3D, 0xDC, 0x9F, 0xD1, 0x30, 0xFF, 0xD6,
|
||||
0xC3, 0xBE, 0x41, 0x25, 0xE3, 0xA5, 0x9B, 0x73,
|
||||
0xDF, 0x6A, 0xD9, 0xF9, 0x70, 0x84, 0x02, 0x4C,
|
||||
0x35, 0xD4, 0x3E, 0x05, 0x76, 0x3A, 0xDC, 0x6D,
|
||||
0x5A, 0x81, 0xB3, 0x94, 0xF7, 0x22, 0xF7, 0xDC,
|
||||
0xC1, 0x43, 0x31, 0x57, 0x5B, 0x42, 0x9A, 0x0B,
|
||||
0xF4, 0x95, 0x30, 0xA9, 0xBB, 0xD8, 0x06, 0xFB,
|
||||
0x1D, 0x6F, 0x9B, 0xC3, 0xBB, 0xF3, 0xBF, 0xFB,
|
||||
0xB4, 0x9F, 0x35, 0x64, 0x0A, 0x69, 0xB7, 0xD1,
|
||||
0x3E, 0xCA, 0x78, 0x07, 0x04, 0x03, 0x79, 0xD4,
|
||||
0xF3, 0xA8, 0xEC, 0x18, 0xDB, 0x03, 0x5E, 0x47,
|
||||
0xD7, 0xD0, 0x56, 0x2C, 0x74, 0x94, 0x86, 0x04,
|
||||
0x46, 0xB8, 0xD4, 0x35, 0x0A, 0x7B, 0xE6, 0x78,
|
||||
0xC4, 0x43, 0x3C, 0x56, 0xCC, 0x37, 0x8B, 0xFD,
|
||||
0xE8, 0xF4, 0x57, 0xEA, 0xAE, 0xCF, 0x36, 0x97,
|
||||
0x12, 0xAC, 0x39, 0xCF, 0x7C, 0xEF, 0x22, 0x67,
|
||||
0x01, 0xEC, 0xD8, 0x09, 0x49, 0x4E, 0xE3, 0x74,
|
||||
0xDD, 0x39, 0xE1, 0x39, 0xD7, 0x0C, 0x5F, 0x1B,
|
||||
0xCE, 0x69, 0xBC, 0x72, 0x44, 0x87, 0x64, 0x1C,
|
||||
0x08, 0x05, 0x93, 0x69, 0x6D, 0x7F, 0x90, 0x0A,
|
||||
0x2C, 0xCB, 0x8A, 0xBB, 0x7F, 0xE3, 0xE0, 0x80,
|
||||
0x31, 0xD0, 0x0A, 0x3A, 0x95, 0xFF, 0xF7, 0xB4,
|
||||
0x36, 0x38, 0x93, 0xE0, 0x0C, 0x11, 0x37, 0x12,
|
||||
0x06, 0xF6, 0xAD, 0xE9, 0xB1, 0x7A, 0x00, 0xF5,
|
||||
0xD2, 0x32, 0x6B, 0xD0, 0x27, 0xA5, 0x1B, 0x3D,
|
||||
0xE8, 0xDB, 0xCC, 0xA9, 0x1F, 0x1F, 0xB1, 0x99,
|
||||
0x3D, 0x7C, 0xB7, 0xCA, 0xDA, 0x27, 0x2C, 0x64,
|
||||
0x1C, 0x49, 0xB6, 0x87, 0x44, 0x06, 0x94, 0x9D,
|
||||
0xBC, 0x6B, 0x20, 0xA2, 0x68, 0x15, 0x1F, 0xE2,
|
||||
0xF2, 0xAD, 0x6D, 0x23, 0x2E, 0x2B, 0x74, 0xE2,
|
||||
0x5D, 0xE4, 0xB0, 0xC7, 0x84, 0xCB, 0x64, 0xBF,
|
||||
0xE0, 0xA8, 0x18, 0x83, 0xB4, 0xC9, 0xD9, 0x73,
|
||||
0xA8, 0xE6, 0xA9, 0x36, 0xD5, 0x63, 0x1E, 0x2C,
|
||||
0x2A, 0x55, 0x09, 0x77, 0x5E, 0xB3, 0x4B, 0xEA,
|
||||
0xB5, 0xD0, 0x14, 0x5F, 0xEB, 0x50, 0x7B, 0xAA,
|
||||
0xEF, 0x94, 0xBA, 0x2B, 0xD7, 0x8A, 0x07, 0xF1,
|
||||
0xF9, 0x5E, 0x12, 0x12, 0x21, 0x52, 0xE5, 0x0A,
|
||||
0x3E, 0xC0, 0xBC, 0x5D, 0x4C, 0xE2, 0x12, 0x7C,
|
||||
0x39, 0xF9, 0x16, 0x9D, 0xBD, 0x96, 0x83, 0x3B,
|
||||
0x7F, 0x3D, 0x6A, 0xEC, 0xF1, 0x25, 0xD2, 0xB0,
|
||||
0xB0, 0xEB, 0x20, 0x06, 0x07, 0xD6, 0xD9, 0x4C,
|
||||
0x07, 0x9A, 0x82, 0xC1, 0xFC, 0xF7, 0x66, 0x15,
|
||||
0xBD, 0x62, 0x65, 0xD8, 0x6C, 0xF6, 0x33, 0x7B,
|
||||
0x5A, 0x28, 0xEC, 0x90, 0xA1, 0x26, 0x9F, 0xC3,
|
||||
0x28, 0x4A, 0x64, 0x50, 0x5F, 0xCA, 0xE2, 0x6D,
|
||||
0xB8, 0x0F, 0xE2, 0x94, 0xB5, 0x8E, 0x1F, 0x8A,
|
||||
0x8F, 0x6B, 0xA6, 0x86, 0x1F, 0xEE, 0xDC, 0x24,
|
||||
0xB4, 0xB8, 0x25, 0xEC, 0x28, 0x2D, 0xF9, 0xCB,
|
||||
0x7D, 0x38, 0xFF, 0xC7, 0x74, 0x2E, 0xD3, 0x10,
|
||||
0xEC, 0x03, 0x31, 0xEE, 0x83, 0xE7, 0xA4, 0xF7,
|
||||
0xBA, 0x28, 0x21, 0xE0, 0x7F, 0xB4, 0xB7, 0xE1,
|
||||
0x7A, 0xF9, 0x2B, 0xB0, 0x2C, 0x3B, 0x80, 0x5F,
|
||||
0xE0, 0x5D, 0xB2, 0x7E, 0x59, 0xFF, 0x59, 0x07,
|
||||
0x58, 0x42, 0x57, 0xEE, 0x44, 0xF1, 0xB1, 0xAD,
|
||||
0xBA, 0xDE, 0xCB, 0x1D, 0x8A, 0x36, 0x67, 0xE8,
|
||||
0x45, 0xFF, 0x07, 0x8D, 0xEE, 0xA4, 0x51, 0x9C,
|
||||
0x4C, 0x83, 0x5D, 0x2E, 0x2F, 0xE1, 0x5B, 0x75,
|
||||
0xE8, 0x29, 0xCD, 0x0B, 0x07, 0x62, 0xE0, 0xC3,
|
||||
0x0D, 0x1D, 0xEA, 0xCF, 0xF0, 0x8A, 0x65, 0x27,
|
||||
0x70, 0x42, 0x9F, 0x26, 0x00, 0x15, 0x70, 0xC5,
|
||||
0x4A, 0xF6, 0x25, 0xD0, 0x40, 0x72, 0xE9, 0xC1,
|
||||
0x73, 0xFD, 0x48, 0x94, 0xA3, 0x8D, 0x66, 0x63,
|
||||
0x96, 0x4F, 0xF7, 0xEE, 0xFB, 0x4C, 0xC7, 0xB8,
|
||||
0x6B, 0xE9, 0x90, 0xE1, 0x2A, 0x66, 0x80, 0x99,
|
||||
0x3B, 0xB0, 0x1A, 0x6C, 0xF9, 0x0E, 0x72, 0xDA,
|
||||
0x8E, 0x4F, 0x46, 0xC2, 0x6A, 0x4B, 0x7A, 0x16,
|
||||
0xE5, 0x26, 0x0B, 0x5C, 0xD4, 0x47, 0x34, 0xE5,
|
||||
0x37, 0xBE, 0x68, 0x6C, 0xDA, 0xD3, 0x9B, 0x6F,
|
||||
0xAE, 0x51, 0x9C, 0x99, 0x0A, 0x5B, 0xF8, 0x37,
|
||||
0xBC, 0xDE, 0xFC, 0x93, 0xC5, 0xE7, 0x0F, 0xEF,
|
||||
0x0B, 0xA6, 0x07, 0xC2, 0xA6, 0xE6, 0xDA, 0x2D,
|
||||
0x1B, 0x49, 0xC9, 0xDE, 0x6B, 0x27, 0xDC, 0x00,
|
||||
0xEF, 0x23, 0x87, 0x0E, 0xEB, 0xD1, 0x48, 0x7D,
|
||||
0xB4, 0xF2, 0x58, 0xC6, 0x3C, 0xE2, 0x89, 0xBA,
|
||||
0xB0, 0x05, 0xAC, 0x94, 0x41, 0x9A, 0xA8, 0xFF,
|
||||
0x3E, 0xBC, 0x3A, 0x52, 0x9C, 0xF9, 0x7F, 0x07,
|
||||
0x8B, 0xB0, 0x2C, 0x71, 0x83, 0x7B, 0xCF, 0x2E,
|
||||
0x7F, 0x7C, 0x96, 0x65, 0xD9, 0x08, 0x17, 0xEC,
|
||||
0xFA, 0xDE, 0x4E, 0x40, 0x12, 0x26, 0x70, 0x71,
|
||||
0x65, 0xA5, 0xDC, 0x98, 0x47, 0xA3, 0xFC, 0xE0,
|
||||
0x9A, 0x16, 0xED, 0x45, 0x56, 0x72, 0x50, 0x05,
|
||||
0x28, 0x2C, 0x99, 0xEC, 0x20, 0x2E, 0x40, 0xC0,
|
||||
0x26, 0x69, 0xCD, 0x49, 0x45, 0x17, 0xA4, 0xA3,
|
||||
0x42, 0x0D, 0x14, 0x65, 0x87, 0x33, 0x8C, 0x92,
|
||||
0xC5, 0xC4, 0x61, 0xFD, 0xE8, 0x68, 0x56, 0x20,
|
||||
0x57, 0xF5, 0x8E, 0x5F, 0xCF, 0x7E, 0x97, 0xF6,
|
||||
0x49, 0x97, 0x0A, 0xFE, 0xD3, 0x60, 0x1A, 0x5B,
|
||||
0x0C, 0x75, 0xDD, 0x8E, 0x31, 0x78, 0x29, 0xA6,
|
||||
0xB1, 0x4D, 0xAA, 0xDF, 0x8A, 0xD1, 0xE6, 0x91,
|
||||
0xE3, 0x32, 0x3F, 0xEC, 0x8A, 0x1F, 0x0E, 0x35,
|
||||
0x07, 0x6E, 0x4B, 0x83, 0x3B, 0xE5, 0x67, 0x34,
|
||||
0x1F, 0x0C, 0x81, 0xD8, 0xD5, 0x25, 0x68, 0xE5,
|
||||
0x28, 0x1B, 0x5C, 0x81, 0x3E, 0xE3, 0x5C, 0xB4,
|
||||
0xB6, 0xBD, 0x62, 0x6A, 0x70, 0x33, 0xC2, 0xC5,
|
||||
0x75, 0x27, 0xF4, 0x30, 0xE1, 0x1D, 0xC1, 0x4C,
|
||||
0xC5, 0x02, 0x12, 0x46, 0xAC, 0xEC, 0xF9, 0xE8,
|
||||
0xE7, 0x58, 0x24, 0x11, 0xB1, 0xF3, 0xB7, 0x8C,
|
||||
0x3C, 0xA4, 0x0A, 0x94, 0xA6, 0x7C, 0x68, 0x54,
|
||||
0x5B, 0xB9, 0x4D, 0x57, 0x9C, 0xE7, 0x28, 0x09,
|
||||
0x6B, 0x89, 0x26, 0x5D, 0xE7, 0x50, 0xA9, 0x95,
|
||||
0x90, 0x91, 0x8E, 0x00, 0x59, 0xF8, 0x3A, 0x70,
|
||||
0xAF, 0x48, 0x2E, 0xE8, 0xC4, 0x34, 0x8C, 0xF4,
|
||||
0x5F, 0x7F, 0xCB, 0x07, 0xAA, 0xF0, 0xD9, 0xFB,
|
||||
0x5C, 0x32, 0x90, 0x22, 0x1A, 0xD2, 0x1A, 0xCF,
|
||||
0x92, 0x06, 0x02, 0xCF, 0x10, 0x18, 0x7B, 0x93,
|
||||
0xCC, 0x07, 0x4A, 0x31, 0x25, 0x30, 0x23, 0x06,
|
||||
0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01,
|
||||
0x09, 0x15, 0x31, 0x16, 0x04, 0x14, 0xD1, 0xDE,
|
||||
0x23, 0x16, 0x9F, 0x6E, 0xF4, 0x42, 0x21, 0x23,
|
||||
0xE1, 0x11, 0xAA, 0xC8, 0x7C, 0x60, 0x4A, 0x78,
|
||||
0x9D, 0x24, 0x30, 0x31, 0x30, 0x21, 0x30, 0x09,
|
||||
0x06, 0x05, 0x2B, 0x0E, 0x03, 0x02, 0x1A, 0x05,
|
||||
0x00, 0x04, 0x14, 0xD6, 0x4A, 0xBB, 0x75, 0xB1,
|
||||
0xF9, 0x9E, 0xD3, 0x58, 0x6D, 0xD1, 0x74, 0x9F,
|
||||
0x00, 0x8A, 0xF2, 0xC8, 0xAA, 0x52, 0x4D, 0x04,
|
||||
0x08, 0x77, 0x46, 0xE7, 0xBA, 0x25, 0x4B, 0xDA,
|
||||
0x41, 0x02, 0x02, 0x08, 0x00]
|
||||
};
|
||||
|
||||
const WPA_EAP_CLIENT_LIST = [
|
||||
{
|
||||
ssid: 'WPA-EAP-TLS',
|
||||
keyManagement: 'WPA-EAP',
|
||||
eap: 'TLS',
|
||||
identity: EAP_USERNAME,
|
||||
serverCertificate: CLIENT_PKCS12_CERT.nickname,
|
||||
userCertificate: CLIENT_PKCS12_CERT.nickname
|
||||
}
|
||||
];
|
||||
|
||||
/**
|
||||
* Convert the given MozWifiNetwork object array to testAssociate chain.
|
||||
*
|
||||
* @param aNetworks
|
||||
* An array of MozWifiNetwork which we want to convert.
|
||||
*
|
||||
* @return A promise chain which "then"s testAssociate accordingly.
|
||||
*/
|
||||
function convertToTestAssociateChain(aNetworks) {
|
||||
let chain = Promise.resolve();
|
||||
|
||||
aNetworks.forEach(function (aNetwork) {
|
||||
network = new window.MozWifiNetwork(aNetwork);
|
||||
chain = chain.then(() => gTestSuite.testAssociate(network));
|
||||
});
|
||||
|
||||
return chain;
|
||||
}
|
||||
|
||||
gTestSuite.doTestWithCertificate(
|
||||
new Blob([new Uint8Array(CLIENT_PKCS12_CERT.content)]),
|
||||
CLIENT_PKCS12_CERT.password,
|
||||
CLIENT_PKCS12_CERT.nickname,
|
||||
CLIENT_PKCS12_CERT.usage,
|
||||
function() {
|
||||
return gTestSuite.ensureWifiEnabled(true)
|
||||
// Load required server files.
|
||||
.then(() => gTestSuite.writeFile(SERVER_EAP_USER_CONF.path, SERVER_EAP_USER_CONF.content))
|
||||
.then(() => gTestSuite.writeFile(CA_CERT.path, CA_CERT.content))
|
||||
.then(() => gTestSuite.writeFile(SERVER_CERT.path, SERVER_CERT.content))
|
||||
.then(() => gTestSuite.writeFile(SERVER_KEY.path, SERVER_KEY.content))
|
||||
// Start AP.
|
||||
.then(() => gTestSuite.startHostapds(WPA_EAP_AP_LIST))
|
||||
// Scan test.
|
||||
.then(() => gTestSuite.testWifiScanWithRetry(SCAN_RETRY_CNT, WPA_EAP_AP_LIST))
|
||||
// Associate test.
|
||||
.then(() => convertToTestAssociateChain(WPA_EAP_CLIENT_LIST))
|
||||
// Tear down.
|
||||
.then(gTestSuite.killAllHostapd)
|
||||
});
|
623
dom/wifi/test/marionette/test_wifi_associate_WPA_EAP_TTLS.js
Normal file
623
dom/wifi/test/marionette/test_wifi_associate_WPA_EAP_TTLS.js
Normal file
@ -0,0 +1,623 @@
|
||||
/* Any copyright is dedicated to the Public Domain.
|
||||
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
MARIONETTE_TIMEOUT = 60000;
|
||||
MARIONETTE_HEAD_JS = 'head.js';
|
||||
|
||||
const SCAN_RETRY_CNT = 5;
|
||||
|
||||
const EAP_USERNAME = 'username';
|
||||
const EAP_PASSWORD = 'password';
|
||||
|
||||
const SERVER_EAP_USER_CONF = {
|
||||
path: HOSTAPD_CONFIG_PATH + 'hostapd.eap_user',
|
||||
content: '* PEAP,TTLS,TLS\n' +
|
||||
'"' + EAP_USERNAME + '" MSCHAPV2,TTLS-MSCHAPV2 "' + EAP_PASSWORD + '" [2]\n'
|
||||
};
|
||||
const CA_CERT = {
|
||||
path: HOSTAPD_CONFIG_PATH + 'ca.pem',
|
||||
content: '-----BEGIN CERTIFICATE-----\n' +
|
||||
'MIIDsTCCApmgAwIBAgIJAKxTf+8X8qngMA0GCSqGSIb3DQEBCwUAMG4xCzAJBgNV\n' +
|
||||
'BAYTAlRXMRMwEQYDVQQIDApTb21lLVN0YXRlMREwDwYDVQQKDAhjaHVja2xlZTER\n' +
|
||||
'MA8GA1UEAwwIY2h1Y2tsZWUxJDAiBgkqhkiG9w0BCQEWFWNodWNrbGkwNzA2QGdt\n' +
|
||||
'YWlsLmNvbTAgFw0xNDEyMjQxMTI4NTBaGA8yMjg4MTAwNzExMjg1MFowbjELMAkG\n' +
|
||||
'A1UEBhMCVFcxEzARBgNVBAgMClNvbWUtU3RhdGUxETAPBgNVBAoMCGNodWNrbGVl\n' +
|
||||
'MREwDwYDVQQDDAhjaHVja2xlZTEkMCIGCSqGSIb3DQEJARYVY2h1Y2tsaTA3MDZA\n' +
|
||||
'Z21haWwuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAo3c2yFxY\n' +
|
||||
'o6gGg0I83jy00ME+MAfzCd+4ShL45ZLqysQP93jRBfPzU9ZuZ29ysVwgWIdqkZao\n' +
|
||||
'XTuV/NAW2GMGd8W1jQJ3J81fjb9wvhlny3rrACwvUn1N1S1BnM+BAAiDLGxEmvAQ\n' +
|
||||
'onp2aaa6HsHsYS8ONX+d2Qh4LEA4vupeSGAqJychCZv/l+aq/ErFZhFYB3CPUQEt\n' +
|
||||
'cClO24ucsIYP95lA0zhscnmAj06qplFD4Bv6IVrdDqujy1zNwCQwsJq/8OQdaTN/\n' +
|
||||
'h3y9pWvNKMBMM2niOUAjtuNpqsSK/lTS1WAT3PdtVECX9fYBi0Bg+HM92xs/6gt6\n' +
|
||||
'kh9jPV8keXHvSwIDAQABo1AwTjAdBgNVHQ4EFgQU7hBqhuG04xeCzrQ3ngx18ZJ3\n' +
|
||||
'lUswHwYDVR0jBBgwFoAU7hBqhuG04xeCzrQ3ngx18ZJ3lUswDAYDVR0TBAUwAwEB\n' +
|
||||
'/zANBgkqhkiG9w0BAQsFAAOCAQEAFYX2iy680GAnBTttk0gyX6gk+8pYr3D22k/G\n' +
|
||||
'6rvcjefzS7ELQPRKr6mfmwXq3mMf/4jiS2zI5zmXsestPYzHYxf2viQ6t7vr9XiJ\n' +
|
||||
'3WfFjNw4ERlRisAvg0aqqTNNQq5v2VME4sdFZagy217f73C7azwCHl0bqOLH05rl\n' +
|
||||
'8RubOxiHEj7ZybJqnRciK/bht4D+rZkwf4bBBmoloqH7xT0+rFQclpYXDGGjNUQB\n' +
|
||||
'LcHLF10xcr7g3ZVVu82fe6+d85gIGOIMR9+TKhdw6gO3CNcnDAj6gxksghgtcxmh\n' +
|
||||
'OzOggCn7nlIwImtsg2sZkpWB4lEi9hdv4lkNuyFjOL3bnuc+NA==\n' +
|
||||
'-----END CERTIFICATE-----\n'
|
||||
};
|
||||
|
||||
const SERVER_CERT = {
|
||||
path: HOSTAPD_CONFIG_PATH + 'server.pem',
|
||||
content: '-----BEGIN CERTIFICATE-----\n' +
|
||||
'MIID1DCCArygAwIBAgIBADANBgkqhkiG9w0BAQsFADBuMQswCQYDVQQGEwJUVzET\n' +
|
||||
'MBEGA1UECAwKU29tZS1TdGF0ZTERMA8GA1UECgwIY2h1Y2tsZWUxETAPBgNVBAMM\n' +
|
||||
'CGNodWNrbGVlMSQwIgYJKoZIhvcNAQkBFhVjaHVja2xpMDcwNkBnbWFpbC5jb20w\n' +
|
||||
'IBcNMTQxMjI0MTEyOTQ5WhgPMjI4ODEwMDcxMTI5NDlaMG4xCzAJBgNVBAYTAlRX\n' +
|
||||
'MRMwEQYDVQQIDApTb21lLVN0YXRlMREwDwYDVQQKDAhjaHVja2xlZTERMA8GA1UE\n' +
|
||||
'AwwIY2h1Y2tsZWUxJDAiBgkqhkiG9w0BCQEWFWNodWNrbGkwNzA2QGdtYWlsLmNv\n' +
|
||||
'bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMdhQmKilTJbWZRxTiSV\n' +
|
||||
'rqIU+LYW1RKghx5o+0JpNRJVLuz5kBMaNskbbfUSNuHbEq0QA9BDKAZWIc4LSotk\n' +
|
||||
'lCo8TbcO9CJvJPQGGjGdHcohWX5vy6BE/OVE46CUteMFyZF6F8R2fNUww08iR/u1\n' +
|
||||
'YZebL5pWO1j43sPpAzEy6Tij2ACPt6EZcFaZG3SF2mVJWkCQnBqrojP65WUvZQqp\n' +
|
||||
'seUhW2YAS8Nu0Yrohgxz6VYk+cNDuDZVGs6qWRStZzJfYrfc76DtkHof5B14M+xp\n' +
|
||||
'XJaBLxN+whvnYkDTfinaCxnW1O7eXUltr87fLc5zmeBkgwaiaQuIdcfZm7vDUiz8\n' +
|
||||
'vnUCAwEAAaN7MHkwCQYDVR0TBAIwADAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBH\n' +
|
||||
'ZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFKK4f9/YavTHOfEiAB83Deac\n' +
|
||||
'6gT5MB8GA1UdIwQYMBaAFO4QaobhtOMXgs60N54MdfGSd5VLMA0GCSqGSIb3DQEB\n' +
|
||||
'CwUAA4IBAQBWnO9o9KSJIqjoz5Nwll63ULOdcvgGdOeJIw1fcKQ817Rsp+TVcjcH\n' +
|
||||
'IrIADsT/QZGXRO/l6p1750e2iFtJEo1hsRaxtA1wWn2I9HO3+av2spQhr3jpYGPf\n' +
|
||||
'zpsMTp4RNYV7Q8+q1kZIz9PY4V1T0p6lveK8+fUj2hSLnxSj0QiGSJJtnEC3w4Rv\n' +
|
||||
'C9T6oUwIeToULmi+8FXQFdEqwKRU98DPq3eLzN28ZxUgoPE1C8+42D2UW8uyp/Gm\n' +
|
||||
'tGOa/k7nzkCdVqZI7lX7f0AjEvQgjtAMQ/k7Mhxx7TzW2HO+1YPMoKji6Z4WkNwt\n' +
|
||||
'JEj9ZUBSNt8B26UksJMBDkcvSegF3a7o\n' +
|
||||
'-----END CERTIFICATE-----\n'
|
||||
};
|
||||
|
||||
const SERVER_KEY = {
|
||||
path: HOSTAPD_CONFIG_PATH + 'server.key',
|
||||
content: '-----BEGIN RSA PRIVATE KEY-----\n' +
|
||||
'MIIEpAIBAAKCAQEAx2FCYqKVMltZlHFOJJWuohT4thbVEqCHHmj7Qmk1ElUu7PmQ\n' +
|
||||
'Exo2yRtt9RI24dsSrRAD0EMoBlYhzgtKi2SUKjxNtw70Im8k9AYaMZ0dyiFZfm/L\n' +
|
||||
'oET85UTjoJS14wXJkXoXxHZ81TDDTyJH+7Vhl5svmlY7WPjew+kDMTLpOKPYAI+3\n' +
|
||||
'oRlwVpkbdIXaZUlaQJCcGquiM/rlZS9lCqmx5SFbZgBLw27RiuiGDHPpViT5w0O4\n' +
|
||||
'NlUazqpZFK1nMl9it9zvoO2Qeh/kHXgz7GlcloEvE37CG+diQNN+KdoLGdbU7t5d\n' +
|
||||
'SW2vzt8tznOZ4GSDBqJpC4h1x9mbu8NSLPy+dQIDAQABAoIBAASG4Mr8hgaurEoC\n' +
|
||||
'iJOsElr7vunjetMBcg/uskW/vcS8ymP3Bp5oafYG+WgnEbfvEW18f5mq7K24JuxW\n' +
|
||||
'tUqU7ghHdjxByqk9fMlNmiqmNpbwSufkAeuRpWxPNBvhRH/zEbCL5R5A0nTEtqqF\n' +
|
||||
'TL0aUSzwCRSoAJD0lZo9ICVt0n3GsDyM9rqQg/uZmh1qsRdwPsRuYORND9g48rKq\n' +
|
||||
'6WN9leskSxhhsYE2D9ocOFd9bNt8Zxejh9ppVSnG/KsIdt18iBzcabatgAQ046fb\n' +
|
||||
'Z3vprcZJLg93Sg2gSuVqlSTs3M2W8VQnm22/EBMb1y0M48MSRCgnbPLG/CcCLLfF\n' +
|
||||
'LwxCOgECgYEA/eYt67xyJ6JeAdxdwOZuT1WWGbFpLiG9+2OgiHumyRQ5969XMTWo\n' +
|
||||
'fIhMKchDdjoy9RR236\/\/EFCs7UEyB7+a7ODRzNiK2zCD8Smjp+21fUPSthEeQesk\n' +
|
||||
'eiMYICIu5Ay35x9sxIX+XOUVvRhPOGcD29GVeRnKh1inTHOz2dje8LkCgYEAyQeY\n' +
|
||||
'STi9jjCEcHkM1E/UeDiLfHHepLXi8wS41JNRHl5Jacp7XB5djAjKu/jf367/VpFy\n' +
|
||||
'GDDMetE7n8eWkrnAvovxOwZ000YDMtL1sUYSjL+XtBS5s6VY1p4qaSAY9nUUGrJh\n' +
|
||||
'JvtvsuI7SKTtL+60vjBOH7zDnvOdBgAp0utLhZ0CgYEAuLzzqrPKB8afShFSchn4\n' +
|
||||
'J2dpuLYahsNsXW7HDqeR2nsKFosRETAusLXnXPtnAq4kB6jlOarwFqnsuRCX24Vx\n' +
|
||||
'r2uBm9/vYL7zMdUPTA+s30ErHuhjsKjsOKYyVqcooSwT32pBFNk+E89nutfmRG7I\n' +
|
||||
'IvhjHuNCNqqtx/Xj5d1jkZkCgYBQicppC2Jl5OoqZVTOem0U/RJk+PnJ41TZJ7sk\n' +
|
||||
'7yBAmmWvDH\/\/l+rCf4M5a6vFYcbKV9rt9h711X2dtciNX/3oWQh8LUoAmrwNUJc+\n' +
|
||||
'PmSQHvIYI3WCk2vUD+nN1B4sHxu+1lg11eYaNKiroeeknG2tBI1ICcgVlmQCU25u\n' +
|
||||
'IfZPwQKBgQCdO6QHhPLtcHUDNFA6FQ1jKL1iEd7G0JLVRz4Xkpkn1Vrr5MD6JFDa\n' +
|
||||
'5ccabADyl0lpFqDIVJQIzLku2hOD2i9aBNCY0pL391HeOS7CkZX+TdOY1tquoBq5\n' +
|
||||
'MnmixZjDCVd2VcrVyTA6ntOBoharKFW0rH1PqU+qu7dZF7CBPbAdEw==\n' +
|
||||
'-----END RSA PRIVATE KEY-----\n'
|
||||
};
|
||||
|
||||
const WPA_EAP_AP_LIST = [
|
||||
{
|
||||
ssid: 'WPA-EAP-TTLS',
|
||||
ieee8021x: 1,
|
||||
eapol_version: 1,
|
||||
eap_server: 1,
|
||||
eapol_key_index_workaround: 0,
|
||||
eap_user_file: SERVER_EAP_USER_CONF.path,
|
||||
ca_cert: CA_CERT.path,
|
||||
server_cert: SERVER_CERT.path,
|
||||
private_key: SERVER_KEY.path,
|
||||
wpa: 3,
|
||||
wpa_key_mgmt: 'WPA-EAP'
|
||||
}
|
||||
];
|
||||
|
||||
const CLIENT_PKCS12_CERT = {
|
||||
nickname: 'client',
|
||||
password: 'password',
|
||||
usage: ['UserCert', 'ServerCert'],
|
||||
content: [0x30, 0x82, 0x0E, 0x01, 0x02, 0x01, 0x03, 0x30,
|
||||
0x82, 0x0D, 0xC7, 0x06, 0x09, 0x2A, 0x86, 0x48,
|
||||
0x86, 0xF7, 0x0D, 0x01, 0x07, 0x01, 0xA0, 0x82,
|
||||
0x0D, 0xB8, 0x04, 0x82, 0x0D, 0xB4, 0x30, 0x82,
|
||||
0x0D, 0xB0, 0x30, 0x82, 0x08, 0x67, 0x06, 0x09,
|
||||
0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x07,
|
||||
0x06, 0xA0, 0x82, 0x08, 0x58, 0x30, 0x82, 0x08,
|
||||
0x54, 0x02, 0x01, 0x00, 0x30, 0x82, 0x08, 0x4D,
|
||||
0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D,
|
||||
0x01, 0x07, 0x01, 0x30, 0x1C, 0x06, 0x0A, 0x2A,
|
||||
0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x0C, 0x01,
|
||||
0x06, 0x30, 0x0E, 0x04, 0x08, 0x67, 0x7A, 0xF3,
|
||||
0x61, 0xBE, 0xE0, 0x51, 0xC1, 0x02, 0x02, 0x08,
|
||||
0x00, 0x80, 0x82, 0x08, 0x20, 0xFC, 0x6A, 0x79,
|
||||
0xA1, 0x6C, 0xAF, 0xBE, 0xEE, 0x62, 0x45, 0x33,
|
||||
0xB8, 0x48, 0xE1, 0x68, 0xA1, 0x15, 0x11, 0x4B,
|
||||
0x95, 0xCB, 0x77, 0xC0, 0x5D, 0xA2, 0xCB, 0xDB,
|
||||
0xD1, 0x83, 0x74, 0x60, 0xD7, 0xEC, 0x42, 0xA6,
|
||||
0x3A, 0x23, 0xF7, 0x85, 0xEB, 0xC1, 0xFE, 0x6A,
|
||||
0x57, 0x8E, 0xC1, 0x44, 0xF3, 0x1F, 0xFE, 0xB8,
|
||||
0x2D, 0x8C, 0x4D, 0xC9, 0x5B, 0xAE, 0x21, 0x2E,
|
||||
0x4C, 0x1A, 0xEB, 0x84, 0x09, 0xF3, 0x40, 0x92,
|
||||
0x39, 0x7F, 0x56, 0x02, 0x46, 0x61, 0x16, 0xDE,
|
||||
0x5C, 0x48, 0xB6, 0x0C, 0x1D, 0xD3, 0x5F, 0x10,
|
||||
0x9A, 0x39, 0xB8, 0x66, 0x31, 0xFC, 0x39, 0x71,
|
||||
0x87, 0x23, 0x46, 0x9D, 0xE8, 0x3C, 0x2B, 0xA1,
|
||||
0x39, 0x8A, 0xD3, 0xFF, 0xD9, 0x43, 0xB6, 0x61,
|
||||
0xC6, 0x67, 0x70, 0x40, 0xBD, 0xFE, 0xD3, 0xC1,
|
||||
0x68, 0xF5, 0xF7, 0xC8, 0x89, 0xD8, 0x17, 0xC5,
|
||||
0xE8, 0x3D, 0x29, 0xD5, 0x91, 0xDF, 0x1F, 0x56,
|
||||
0x74, 0x5A, 0xC4, 0xA8, 0x14, 0xBA, 0xD4, 0xFA,
|
||||
0x13, 0x49, 0x2A, 0x9F, 0x63, 0xF1, 0xB2, 0x45,
|
||||
0xF1, 0xF0, 0x2A, 0xDD, 0x75, 0x66, 0x8A, 0xF7,
|
||||
0xAB, 0x73, 0x86, 0x26, 0x9D, 0x1F, 0x07, 0xAD,
|
||||
0xD3, 0xFE, 0xE0, 0xA3, 0xED, 0xA0, 0x96, 0x3E,
|
||||
0x1E, 0x89, 0x86, 0x02, 0x4C, 0x28, 0xFD, 0x57,
|
||||
0xA1, 0x67, 0x55, 0xF0, 0x82, 0x3B, 0x7F, 0xCC,
|
||||
0x2A, 0x32, 0x01, 0x93, 0x1D, 0x8B, 0x66, 0x8A,
|
||||
0x20, 0x52, 0x84, 0xDD, 0x2C, 0xFD, 0xEE, 0x72,
|
||||
0xF3, 0x8C, 0x58, 0xB9, 0x99, 0xE5, 0xC1, 0x22,
|
||||
0x63, 0x59, 0x00, 0xE2, 0x76, 0xC5, 0x3A, 0x17,
|
||||
0x7F, 0x93, 0xE9, 0x67, 0x61, 0xAA, 0x10, 0xC3,
|
||||
0xD9, 0xC8, 0x24, 0x46, 0x5B, 0xBE, 0x8C, 0x1F,
|
||||
0x2D, 0x66, 0x48, 0xD2, 0x02, 0x11, 0xFB, 0x74,
|
||||
0x14, 0x76, 0x76, 0x5A, 0x98, 0x54, 0x35, 0xA7,
|
||||
0x85, 0x66, 0x20, 0x26, 0x8B, 0x13, 0x6F, 0x68,
|
||||
0xE3, 0xC9, 0x58, 0x7D, 0x1C, 0x3E, 0x01, 0x8D,
|
||||
0xF8, 0xD6, 0x7F, 0xCF, 0xA2, 0x07, 0xB7, 0x95,
|
||||
0xFD, 0xF0, 0x02, 0x34, 0x32, 0x30, 0xE8, 0xD4,
|
||||
0x57, 0x5E, 0x53, 0xFB, 0x54, 0xE2, 0x03, 0x32,
|
||||
0xCC, 0x52, 0x2E, 0xD2, 0x35, 0xD9, 0x58, 0x85,
|
||||
0x2D, 0xEC, 0x2D, 0x71, 0xD1, 0x8A, 0x29, 0xD0,
|
||||
0xB0, 0x24, 0xBD, 0x24, 0xDC, 0x1A, 0x28, 0x3F,
|
||||
0xA0, 0x12, 0x81, 0x15, 0x24, 0xC9, 0xB5, 0x4A,
|
||||
0x23, 0xB6, 0xA3, 0x45, 0x50, 0x2D, 0x73, 0x99,
|
||||
0x6B, 0x1C, 0xFB, 0xA4, 0x53, 0xD7, 0x5C, 0xF4,
|
||||
0x6C, 0xB0, 0xE5, 0x74, 0xB3, 0x76, 0xF8, 0xB1,
|
||||
0x0D, 0x59, 0x70, 0x9F, 0xCA, 0xDE, 0xF2, 0xAA,
|
||||
0x4C, 0x7D, 0x11, 0x54, 0xC4, 0x19, 0x0F, 0x36,
|
||||
0x4A, 0x62, 0xFF, 0x8B, 0x10, 0xCB, 0x93, 0x50,
|
||||
0xDA, 0x79, 0x5E, 0x4E, 0x09, 0x1F, 0x22, 0xC8,
|
||||
0x19, 0x85, 0xE9, 0xEE, 0xB7, 0x71, 0x65, 0xB9,
|
||||
0x10, 0xD2, 0x0A, 0x73, 0x5B, 0xA6, 0xDA, 0x37,
|
||||
0x46, 0x02, 0x00, 0x98, 0x9E, 0x20, 0x6C, 0x7D,
|
||||
0xC7, 0x69, 0xBB, 0xC2, 0x00, 0x40, 0x9C, 0x57,
|
||||
0x00, 0xC2, 0x36, 0x76, 0xE8, 0x2A, 0x8D, 0xAD,
|
||||
0x62, 0x57, 0xC8, 0xD0, 0x9D, 0x66, 0x27, 0x5A,
|
||||
0xD8, 0x0D, 0x35, 0x60, 0x28, 0x38, 0x62, 0x94,
|
||||
0x78, 0x36, 0x25, 0x58, 0xFD, 0xF8, 0x66, 0x1F,
|
||||
0x68, 0x04, 0x0F, 0xD8, 0x00, 0xDF, 0xA0, 0x6C,
|
||||
0x25, 0x42, 0x9A, 0x4C, 0xEB, 0x80, 0x13, 0x51,
|
||||
0x7D, 0x2D, 0xA8, 0x89, 0xD6, 0x1B, 0x67, 0x72,
|
||||
0x01, 0xF3, 0x2D, 0x16, 0x77, 0xFE, 0x22, 0xBC,
|
||||
0x8A, 0x45, 0x09, 0x1F, 0x9C, 0x2F, 0x2A, 0xA9,
|
||||
0x61, 0x5B, 0x4A, 0xE6, 0x64, 0x2C, 0x62, 0x1A,
|
||||
0x3A, 0x96, 0xE6, 0x0A, 0xAE, 0x05, 0x1A, 0xC8,
|
||||
0xCB, 0xD6, 0x8F, 0x3A, 0x4B, 0xE0, 0x7F, 0x82,
|
||||
0xB4, 0x98, 0xF1, 0x9D, 0xD7, 0x14, 0x76, 0x5E,
|
||||
0x77, 0x85, 0x87, 0xEC, 0x13, 0xDA, 0xFD, 0xAF,
|
||||
0xCB, 0xA3, 0x1C, 0x99, 0xC1, 0xFE, 0x17, 0x0C,
|
||||
0x40, 0x4D, 0x3C, 0x8F, 0x70, 0x86, 0x63, 0x64,
|
||||
0xB7, 0x75, 0xA8, 0x71, 0x36, 0xDC, 0x54, 0x10,
|
||||
0x57, 0x0C, 0xA8, 0xF2, 0xA1, 0xBB, 0xED, 0x03,
|
||||
0x41, 0x57, 0x34, 0x2C, 0x8F, 0x7C, 0xA0, 0x09,
|
||||
0xF3, 0x9E, 0x41, 0xB7, 0xA8, 0xD4, 0x66, 0x0D,
|
||||
0x0D, 0xC0, 0x6A, 0xFC, 0x6A, 0xA2, 0xAC, 0xE2,
|
||||
0x60, 0x00, 0xE3, 0xF7, 0x75, 0x43, 0x23, 0xEB,
|
||||
0xC8, 0x61, 0xFA, 0xB3, 0xB8, 0x28, 0xCE, 0xCA,
|
||||
0xF4, 0x47, 0x7F, 0x30, 0x6D, 0x61, 0x89, 0x47,
|
||||
0xA1, 0x4A, 0xFE, 0xD1, 0x21, 0x0B, 0x6D, 0xF4,
|
||||
0x3F, 0x00, 0x86, 0x30, 0x8E, 0x33, 0x21, 0x6F,
|
||||
0xDA, 0x15, 0xFD, 0x5F, 0xEC, 0x8E, 0xF1, 0x12,
|
||||
0x3F, 0xC9, 0x83, 0x0C, 0xCA, 0x22, 0x01, 0xF1,
|
||||
0x70, 0x5F, 0x1F, 0x66, 0xB5, 0xF8, 0x3E, 0x7A,
|
||||
0x6F, 0xDE, 0xDB, 0xA7, 0x8D, 0x18, 0x9E, 0xBE,
|
||||
0xDB, 0xAD, 0x3D, 0x66, 0x30, 0xC1, 0x6C, 0x0C,
|
||||
0x87, 0xB4, 0x65, 0x75, 0xE0, 0x9D, 0xEA, 0x16,
|
||||
0x0D, 0x07, 0x37, 0x33, 0xC5, 0xEC, 0x97, 0x93,
|
||||
0x37, 0xEB, 0x8E, 0x65, 0x9C, 0x40, 0x63, 0x6C,
|
||||
0x43, 0x60, 0xB0, 0x40, 0x4D, 0x85, 0xEF, 0xC2,
|
||||
0x47, 0x5F, 0xE7, 0x6B, 0xCB, 0x40, 0xE8, 0xEA,
|
||||
0xD8, 0xAB, 0xB1, 0x9A, 0x72, 0xDC, 0x4C, 0x14,
|
||||
0xFA, 0x43, 0x61, 0x5F, 0xA6, 0x5C, 0x3A, 0x05,
|
||||
0x17, 0x2E, 0x74, 0xF3, 0x5E, 0x45, 0xD9, 0x47,
|
||||
0xAA, 0x59, 0xB6, 0x8F, 0x42, 0x66, 0x42, 0x29,
|
||||
0x90, 0x95, 0x48, 0x46, 0x91, 0x88, 0x3C, 0x8C,
|
||||
0xDE, 0xCC, 0xED, 0xB3, 0xAA, 0x62, 0xEA, 0xBC,
|
||||
0xB4, 0x0C, 0x48, 0x4C, 0x53, 0x23, 0x5E, 0x24,
|
||||
0x85, 0xBF, 0x92, 0xDA, 0x14, 0xDB, 0x1A, 0x3D,
|
||||
0xEF, 0x30, 0xD9, 0x49, 0x64, 0x4D, 0xE5, 0x01,
|
||||
0xFC, 0xA4, 0x4B, 0xD1, 0x9F, 0xDE, 0x96, 0x7F,
|
||||
0x50, 0xBC, 0x4D, 0x38, 0x44, 0xE9, 0x23, 0x5F,
|
||||
0x37, 0x57, 0x1A, 0xA6, 0x52, 0x5A, 0x0F, 0x4F,
|
||||
0x87, 0x33, 0x4A, 0x7B, 0x66, 0xEE, 0x3D, 0x66,
|
||||
0x0A, 0x63, 0x39, 0x1F, 0x23, 0x38, 0x35, 0x73,
|
||||
0x60, 0x5E, 0x47, 0x20, 0x4F, 0xC0, 0xC8, 0x3C,
|
||||
0x09, 0xF9, 0x29, 0x4F, 0x5E, 0x55, 0x69, 0xC4,
|
||||
0x6B, 0xE8, 0xF8, 0x91, 0xC0, 0x22, 0x65, 0x15,
|
||||
0x1E, 0xFB, 0xB9, 0x61, 0xCE, 0x45, 0xBE, 0x2B,
|
||||
0xEE, 0xB9, 0x04, 0x2B, 0xFD, 0xAE, 0x61, 0x1C,
|
||||
0x3D, 0x3D, 0x7C, 0xBF, 0xC1, 0xF7, 0x3C, 0x4E,
|
||||
0x9E, 0x0E, 0x54, 0xC8, 0xAD, 0xA9, 0xDF, 0x43,
|
||||
0x49, 0xB9, 0x41, 0x05, 0xE5, 0xF1, 0x49, 0xAA,
|
||||
0x77, 0x6C, 0x34, 0x5B, 0x93, 0x24, 0x24, 0x23,
|
||||
0x74, 0x68, 0x11, 0xCE, 0x15, 0x80, 0xA1, 0xA4,
|
||||
0x1F, 0x8D, 0x81, 0xCD, 0xB2, 0x98, 0xCA, 0x14,
|
||||
0x0B, 0x0C, 0x61, 0x50, 0x69, 0x72, 0xAE, 0xFA,
|
||||
0x8B, 0xC0, 0x3F, 0x0D, 0xE7, 0xF2, 0x0F, 0xEB,
|
||||
0xC1, 0x11, 0xB9, 0x10, 0x03, 0x6A, 0xF5, 0x97,
|
||||
0x3C, 0x53, 0x2F, 0x67, 0x86, 0x09, 0x6A, 0xE3,
|
||||
0x28, 0xC0, 0x78, 0xC8, 0xB4, 0x39, 0x8E, 0xD1,
|
||||
0xCE, 0x25, 0xE8, 0x66, 0xF7, 0x09, 0x40, 0x7D,
|
||||
0x81, 0xFB, 0xAF, 0xFA, 0x59, 0xC4, 0x9B, 0x2B,
|
||||
0x83, 0x45, 0x5B, 0xA8, 0x66, 0x9E, 0x38, 0xC8,
|
||||
0xFD, 0xAC, 0xF2, 0x2D, 0x21, 0xDE, 0x50, 0x4C,
|
||||
0x03, 0xCB, 0x88, 0x42, 0xDD, 0x84, 0x09, 0x99,
|
||||
0x8E, 0x8B, 0x40, 0x97, 0x1B, 0x14, 0x85, 0x37,
|
||||
0x11, 0x01, 0xE0, 0x74, 0x6B, 0x33, 0x52, 0x8C,
|
||||
0x68, 0x3A, 0x89, 0xB2, 0xAF, 0x35, 0xE6, 0x65,
|
||||
0xC3, 0x58, 0x70, 0xD2, 0xE7, 0x1F, 0x1F, 0xF6,
|
||||
0xE5, 0x0A, 0xB1, 0xFE, 0xD0, 0xC9, 0x51, 0x50,
|
||||
0xE7, 0xFD, 0x58, 0xF5, 0xC4, 0x58, 0x65, 0x94,
|
||||
0xD1, 0x57, 0x55, 0x5E, 0xD2, 0x27, 0x98, 0xAF,
|
||||
0xE7, 0x55, 0x0B, 0x87, 0x50, 0x9B, 0xEF, 0xE8,
|
||||
0x2B, 0xFC, 0xE7, 0x3B, 0x4E, 0xD7, 0xB7, 0x4D,
|
||||
0xF4, 0xBC, 0xF4, 0x88, 0x63, 0xE4, 0x8A, 0x20,
|
||||
0x4B, 0x22, 0xB0, 0xA0, 0x53, 0x7F, 0xA8, 0xC9,
|
||||
0x0C, 0xF8, 0xD7, 0xBD, 0x46, 0x39, 0xA7, 0x7D,
|
||||
0xDD, 0x10, 0x91, 0x50, 0x54, 0x06, 0x47, 0xF0,
|
||||
0x3C, 0xAA, 0x43, 0x40, 0xF8, 0x54, 0xDD, 0x8A,
|
||||
0xEA, 0x8A, 0x0B, 0xA5, 0x7F, 0xCD, 0x5E, 0xAA,
|
||||
0x02, 0x2E, 0x1F, 0xC6, 0x50, 0x15, 0xF8, 0x0A,
|
||||
0x0C, 0x1B, 0x3C, 0x55, 0x3A, 0xC3, 0x6F, 0x88,
|
||||
0xD7, 0xBF, 0xB1, 0x02, 0xCC, 0xE0, 0x08, 0x29,
|
||||
0x97, 0xD2, 0xAA, 0x23, 0xC4, 0x6D, 0xE3, 0xE3,
|
||||
0x76, 0x39, 0x92, 0xC3, 0x2E, 0x7A, 0xE2, 0x98,
|
||||
0xD1, 0xFC, 0xAE, 0xCC, 0x95, 0xD8, 0xB4, 0xDC,
|
||||
0x92, 0xEA, 0x6A, 0x5F, 0xF2, 0x92, 0x17, 0x0B,
|
||||
0x8D, 0xC3, 0xFA, 0x9C, 0x62, 0xCE, 0x44, 0x8D,
|
||||
0xC3, 0x1E, 0xC3, 0xB2, 0xD5, 0x00, 0xCD, 0xB4,
|
||||
0x9E, 0x2D, 0x7B, 0xF2, 0x98, 0xA3, 0x00, 0x8B,
|
||||
0x81, 0x30, 0x77, 0x5B, 0x02, 0x99, 0xB1, 0xCD,
|
||||
0xC3, 0x1D, 0x74, 0x74, 0xEF, 0x41, 0xCB, 0x69,
|
||||
0x63, 0x8E, 0xA6, 0xD3, 0x2D, 0x3E, 0x1F, 0x1D,
|
||||
0x12, 0x9E, 0xD9, 0x18, 0x67, 0x06, 0xAF, 0x37,
|
||||
0x29, 0xAD, 0x65, 0xD8, 0xEB, 0x71, 0xC4, 0x7D,
|
||||
0x94, 0x3D, 0xEA, 0xCC, 0xDF, 0x72, 0x41, 0x51,
|
||||
0x3C, 0xA1, 0x66, 0x98, 0x32, 0x32, 0x40, 0x54,
|
||||
0xB0, 0x2F, 0xEB, 0xCE, 0xDF, 0x4A, 0x64, 0xFB,
|
||||
0x9A, 0x90, 0xDC, 0xF6, 0x6F, 0xA9, 0xD4, 0xCA,
|
||||
0xCB, 0x91, 0xC4, 0xFE, 0xEE, 0x9C, 0x01, 0x50,
|
||||
0x2E, 0xAC, 0xCC, 0x5F, 0x89, 0xD0, 0x91, 0xA3,
|
||||
0xD9, 0xF9, 0x4B, 0x8D, 0xDE, 0x6C, 0x60, 0x21,
|
||||
0x19, 0xB1, 0xD3, 0x4D, 0x75, 0x56, 0x6F, 0xB8,
|
||||
0x25, 0xA4, 0x92, 0x4F, 0x12, 0xF5, 0x8F, 0xC1,
|
||||
0x17, 0x4B, 0xB3, 0x34, 0x21, 0x22, 0xAC, 0x52,
|
||||
0xD2, 0x64, 0xC9, 0x9A, 0x7D, 0xFC, 0xC0, 0x0A,
|
||||
0x89, 0x34, 0xFF, 0x08, 0xD3, 0x04, 0xDC, 0xFE,
|
||||
0x7C, 0xB3, 0xB8, 0xFD, 0x85, 0xDD, 0x79, 0x51,
|
||||
0xA7, 0x89, 0xE8, 0xF1, 0x23, 0xB1, 0xDF, 0xD7,
|
||||
0x1F, 0x7B, 0xB1, 0x5D, 0x42, 0xF9, 0x61, 0xF8,
|
||||
0xDC, 0x81, 0x04, 0xF1, 0xCC, 0xFA, 0xD7, 0xED,
|
||||
0xBF, 0x47, 0xAC, 0xBD, 0xE5, 0xFA, 0xAC, 0xB3,
|
||||
0x1C, 0xD9, 0xA1, 0xB3, 0x60, 0xEE, 0x9C, 0x8A,
|
||||
0x36, 0x57, 0xB4, 0x2F, 0xA1, 0xA2, 0xF3, 0xE2,
|
||||
0x09, 0x9A, 0x6E, 0x43, 0x9B, 0xE5, 0x93, 0xB8,
|
||||
0x3D, 0x9E, 0x9F, 0xC1, 0xC6, 0x0D, 0x02, 0xEB,
|
||||
0x4D, 0x38, 0xE9, 0xB4, 0x9F, 0xEA, 0x33, 0x8C,
|
||||
0x07, 0xD8, 0xB4, 0x71, 0xAD, 0xE5, 0x43, 0xB2,
|
||||
0xCC, 0x55, 0x93, 0x6A, 0xDB, 0x1E, 0x80, 0xDB,
|
||||
0xC2, 0xEA, 0x42, 0x8E, 0xFC, 0x86, 0x44, 0xC9,
|
||||
0x8A, 0xC4, 0xF2, 0x46, 0xA7, 0x39, 0x50, 0x0D,
|
||||
0x1A, 0xAA, 0x07, 0x04, 0xBE, 0xD4, 0xCE, 0x62,
|
||||
0x4D, 0x0F, 0x91, 0x7D, 0x29, 0x88, 0x9C, 0x4C,
|
||||
0xAF, 0xF7, 0xD8, 0x40, 0x93, 0x88, 0xC7, 0x20,
|
||||
0xD2, 0x17, 0x2A, 0xC4, 0x92, 0x72, 0xD0, 0xC0,
|
||||
0x4E, 0x56, 0x47, 0xB1, 0x27, 0x02, 0xE6, 0x61,
|
||||
0x82, 0x5E, 0xC8, 0x2E, 0x90, 0xD2, 0x31, 0x22,
|
||||
0xE2, 0xA9, 0x4A, 0x91, 0x45, 0x69, 0xB1, 0xA5,
|
||||
0x0F, 0x66, 0x2C, 0x30, 0xAD, 0x7F, 0x1B, 0x0E,
|
||||
0x22, 0x17, 0x60, 0x2E, 0x3D, 0x7F, 0x7F, 0x8C,
|
||||
0x33, 0x51, 0xA0, 0x25, 0xDE, 0xFD, 0x75, 0xBC,
|
||||
0xEF, 0xE6, 0xE7, 0x20, 0x04, 0x5A, 0xEC, 0x50,
|
||||
0x21, 0x48, 0x56, 0x98, 0xE2, 0x33, 0x6D, 0x22,
|
||||
0x5C, 0xC3, 0xFB, 0xFC, 0x6F, 0xB3, 0xA7, 0x8E,
|
||||
0x6F, 0x67, 0x70, 0x9D, 0xDA, 0x02, 0x01, 0x59,
|
||||
0x7B, 0x3D, 0x2B, 0x38, 0xCC, 0x0F, 0x44, 0x3D,
|
||||
0xFB, 0x9A, 0xB3, 0x23, 0x15, 0x50, 0x6E, 0xBF,
|
||||
0x8B, 0xA1, 0x94, 0x33, 0xE5, 0x7B, 0x88, 0x4E,
|
||||
0xCB, 0x6D, 0x9F, 0xBF, 0xBC, 0x7A, 0xA8, 0x1E,
|
||||
0x68, 0x25, 0xED, 0x8E, 0x53, 0x21, 0x72, 0xC5,
|
||||
0x70, 0xB3, 0xE4, 0xA6, 0xA1, 0x5A, 0x2D, 0xC8,
|
||||
0x43, 0x9D, 0x60, 0x77, 0x78, 0xE0, 0xC4, 0xAF,
|
||||
0xC8, 0x29, 0xBA, 0xD0, 0x4D, 0x39, 0x83, 0x51,
|
||||
0xA7, 0x10, 0x7F, 0x0C, 0x34, 0x0E, 0x6C, 0x75,
|
||||
0x26, 0xD7, 0xD6, 0xC7, 0x32, 0x53, 0xAF, 0x4E,
|
||||
0xBE, 0xF2, 0xC2, 0x0F, 0x99, 0x23, 0xB9, 0xE1,
|
||||
0xC8, 0xB4, 0xBC, 0x5A, 0xC6, 0xCB, 0xEB, 0x4D,
|
||||
0x28, 0x56, 0x72, 0xFE, 0x1B, 0x2C, 0x5D, 0xE3,
|
||||
0xBC, 0xC7, 0xA3, 0xC0, 0x7D, 0x27, 0xF0, 0xD0,
|
||||
0x4F, 0x3F, 0x1F, 0xF7, 0x87, 0x15, 0xF2, 0xEA,
|
||||
0xD4, 0x03, 0x6D, 0x2F, 0xD4, 0x8E, 0x50, 0x4B,
|
||||
0x05, 0xBF, 0xF7, 0x8C, 0x67, 0x5A, 0xDC, 0x4D,
|
||||
0xCD, 0xCF, 0x9D, 0x02, 0xB6, 0xE7, 0xAE, 0x49,
|
||||
0xD1, 0x7C, 0x00, 0xE7, 0x3B, 0xEA, 0xFB, 0x0D,
|
||||
0x2A, 0x7B, 0x41, 0x33, 0x66, 0xD0, 0x29, 0x9F,
|
||||
0xB3, 0x8A, 0x71, 0xB0, 0xE2, 0x76, 0xA9, 0xDB,
|
||||
0xFD, 0x64, 0x04, 0x69, 0xDF, 0x89, 0x1F, 0x56,
|
||||
0x86, 0x92, 0xD9, 0xD9, 0xB9, 0xF3, 0x4F, 0xAC,
|
||||
0xAE, 0x61, 0x48, 0x20, 0xCE, 0x3C, 0x2B, 0x44,
|
||||
0xAB, 0x42, 0xFA, 0xAB, 0x2E, 0x94, 0x82, 0xC8,
|
||||
0xD9, 0x97, 0xCF, 0x27, 0xDF, 0xAC, 0xAC, 0xE7,
|
||||
0xCA, 0xB2, 0x84, 0xAB, 0xF2, 0x5D, 0xDF, 0x56,
|
||||
0x0C, 0x8C, 0x07, 0x3C, 0x3D, 0xA8, 0xDD, 0xBE,
|
||||
0xFF, 0x4E, 0x28, 0x0D, 0xB2, 0x2D, 0xE6, 0x9D,
|
||||
0x44, 0x21, 0xCB, 0xE7, 0x33, 0x63, 0x22, 0x8F,
|
||||
0x4C, 0xFF, 0xB6, 0x1D, 0x9A, 0x71, 0x3F, 0xB1,
|
||||
0x29, 0xAE, 0x3A, 0x35, 0xEE, 0x9C, 0x97, 0x68,
|
||||
0xA7, 0x52, 0x66, 0x01, 0xD8, 0x9A, 0x5D, 0xF4,
|
||||
0xB3, 0x2F, 0x5C, 0xD4, 0x0E, 0xF9, 0xCF, 0x07,
|
||||
0xF6, 0x8C, 0xBA, 0xA6, 0x8D, 0x6B, 0xC6, 0x01,
|
||||
0xC2, 0x69, 0xAE, 0x60, 0x08, 0x1A, 0x0E, 0x3F,
|
||||
0xAE, 0x60, 0x29, 0xF3, 0x48, 0x0D, 0xE0, 0xD0,
|
||||
0xAE, 0x52, 0x44, 0xE9, 0x7F, 0x1F, 0x92, 0x5F,
|
||||
0x71, 0xAD, 0xEC, 0x6B, 0x47, 0x66, 0x92, 0x22,
|
||||
0x27, 0xAE, 0x6E, 0x25, 0xCD, 0xF3, 0x5F, 0x55,
|
||||
0x59, 0xBD, 0x73, 0xCE, 0x2B, 0x7E, 0x99, 0x44,
|
||||
0x56, 0x70, 0xA3, 0xE7, 0x7A, 0x59, 0x75, 0xD8,
|
||||
0x48, 0x0C, 0x39, 0x2B, 0xD7, 0x53, 0xC6, 0xAD,
|
||||
0x4A, 0x6F, 0xB4, 0x14, 0x96, 0xDF, 0xF2, 0x4A,
|
||||
0x0C, 0xA2, 0xD5, 0x29, 0x98, 0x7C, 0x42, 0x87,
|
||||
0xD9, 0x1F, 0x97, 0x61, 0xD9, 0xBF, 0x99, 0x4F,
|
||||
0x2C, 0x4C, 0x75, 0xAC, 0xB8, 0x06, 0x75, 0xD6,
|
||||
0x87, 0x76, 0x7E, 0xE3, 0x23, 0x4B, 0xEA, 0x1A,
|
||||
0x1A, 0xF4, 0xB7, 0x09, 0xAF, 0x53, 0xEB, 0xA6,
|
||||
0x39, 0x10, 0xFE, 0xD4, 0xEB, 0x1B, 0xAE, 0x38,
|
||||
0x31, 0x33, 0xBA, 0x68, 0xEE, 0xC7, 0x65, 0x76,
|
||||
0xFB, 0x49, 0x77, 0xD4, 0x19, 0xC4, 0xE6, 0xA7,
|
||||
0x05, 0xFE, 0x2A, 0xDA, 0x39, 0x99, 0x1A, 0x92,
|
||||
0xD2, 0xF0, 0x61, 0x97, 0xF6, 0x06, 0x6C, 0x88,
|
||||
0x7B, 0x6F, 0x60, 0xE6, 0x70, 0x08, 0xF0, 0xB4,
|
||||
0x6B, 0x39, 0x6F, 0x05, 0x41, 0x81, 0xF9, 0xBE,
|
||||
0x7A, 0x51, 0xC4, 0x75, 0xB0, 0x6A, 0x89, 0xA0,
|
||||
0xA6, 0x9A, 0x5B, 0xEE, 0x7D, 0x78, 0x17, 0x5F,
|
||||
0x9F, 0x3B, 0x7D, 0xDD, 0x8A, 0x9E, 0xAA, 0x1A,
|
||||
0xDA, 0x49, 0x08, 0xE9, 0xFD, 0x91, 0xA6, 0xFA,
|
||||
0xCE, 0xCF, 0x67, 0xDF, 0x0F, 0xC9, 0xD6, 0x38,
|
||||
0xD9, 0xD5, 0xD1, 0xC0, 0x76, 0x59, 0x42, 0x53,
|
||||
0xBF, 0x48, 0xE9, 0x11, 0x74, 0xC7, 0x11, 0xD8,
|
||||
0xE7, 0x8E, 0xD3, 0xC8, 0x25, 0xA1, 0x26, 0x50,
|
||||
0xBB, 0xB4, 0x35, 0xAF, 0xAF, 0x06, 0x23, 0x69,
|
||||
0x3E, 0x30, 0xFD, 0x7B, 0x34, 0x83, 0x07, 0xD0,
|
||||
0xF0, 0x0F, 0x6C, 0x9A, 0x13, 0x5D, 0xC2, 0x7B,
|
||||
0xDF, 0x6F, 0xDD, 0x8E, 0xF4, 0x30, 0x82, 0x05,
|
||||
0x41, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7,
|
||||
0x0D, 0x01, 0x07, 0x01, 0xA0, 0x82, 0x05, 0x32,
|
||||
0x04, 0x82, 0x05, 0x2E, 0x30, 0x82, 0x05, 0x2A,
|
||||
0x30, 0x82, 0x05, 0x26, 0x06, 0x0B, 0x2A, 0x86,
|
||||
0x48, 0x86, 0xF7, 0x0D, 0x01, 0x0C, 0x0A, 0x01,
|
||||
0x02, 0xA0, 0x82, 0x04, 0xEE, 0x30, 0x82, 0x04,
|
||||
0xEA, 0x30, 0x1C, 0x06, 0x0A, 0x2A, 0x86, 0x48,
|
||||
0x86, 0xF7, 0x0D, 0x01, 0x0C, 0x01, 0x03, 0x30,
|
||||
0x0E, 0x04, 0x08, 0x74, 0xC0, 0x84, 0x8F, 0xC7,
|
||||
0x74, 0x5E, 0x21, 0x02, 0x02, 0x08, 0x00, 0x04,
|
||||
0x82, 0x04, 0xC8, 0x1E, 0xF4, 0xE9, 0x07, 0x27,
|
||||
0x9E, 0x5A, 0xC9, 0x39, 0x1D, 0x37, 0x2C, 0x06,
|
||||
0x4B, 0x57, 0xEA, 0xC5, 0x42, 0x9A, 0x60, 0xD5,
|
||||
0x42, 0xB2, 0x34, 0x2D, 0xD3, 0x88, 0x7C, 0x78,
|
||||
0x87, 0xB6, 0xE9, 0x42, 0x44, 0x1F, 0x67, 0x32,
|
||||
0x92, 0x54, 0x22, 0xDA, 0xB2, 0x43, 0xE7, 0x40,
|
||||
0xBE, 0x1F, 0xAF, 0x3A, 0xCD, 0x2A, 0x9F, 0xD7,
|
||||
0x44, 0x5B, 0x37, 0x69, 0x85, 0xDF, 0xEB, 0x2A,
|
||||
0xB9, 0xE2, 0x92, 0x3B, 0xEA, 0xD5, 0x42, 0x53,
|
||||
0x95, 0x4A, 0xB0, 0x1B, 0xA5, 0xEF, 0xA6, 0x0D,
|
||||
0x29, 0xF4, 0x33, 0xFE, 0xD7, 0x49, 0x04, 0x1E,
|
||||
0x8C, 0xAD, 0x63, 0x1E, 0x79, 0x63, 0x74, 0x0C,
|
||||
0xE5, 0x5E, 0xA2, 0x2C, 0xBE, 0xB8, 0x90, 0xCE,
|
||||
0x06, 0x25, 0xBF, 0xD1, 0x5A, 0x50, 0xCF, 0x3B,
|
||||
0x52, 0xE2, 0xA7, 0xFF, 0x19, 0x02, 0xCF, 0xD0,
|
||||
0x9B, 0xD9, 0xF7, 0x28, 0x07, 0x38, 0x1F, 0xF2,
|
||||
0xAF, 0x44, 0x91, 0x3F, 0x0F, 0xB6, 0x6E, 0x8C,
|
||||
0xC0, 0x32, 0x92, 0xC0, 0xCD, 0x25, 0x98, 0x67,
|
||||
0xF1, 0x47, 0x52, 0x50, 0xF0, 0xA3, 0x7B, 0xE6,
|
||||
0x74, 0xDC, 0x72, 0x28, 0xC8, 0xAB, 0xB3, 0x31,
|
||||
0x7D, 0xA3, 0xF7, 0xC7, 0xD1, 0xE6, 0x99, 0xB4,
|
||||
0xB6, 0x5A, 0x3A, 0x4D, 0x83, 0x4F, 0xB8, 0xB5,
|
||||
0x86, 0xF8, 0x37, 0x7F, 0xA0, 0x16, 0x2F, 0x3C,
|
||||
0x62, 0x7A, 0xD4, 0x3A, 0xEB, 0xC2, 0xE8, 0x03,
|
||||
0x49, 0x17, 0x9E, 0xFB, 0xD7, 0xAF, 0x91, 0x32,
|
||||
0xFD, 0xEA, 0x4F, 0x64, 0xC6, 0x6E, 0x02, 0xEA,
|
||||
0xC4, 0xC8, 0x1F, 0x16, 0xC5, 0x4C, 0xFB, 0xC5,
|
||||
0x42, 0xF5, 0x85, 0x05, 0x92, 0x59, 0x4B, 0x31,
|
||||
0xE5, 0xE9, 0x69, 0xE7, 0x02, 0x98, 0x33, 0xBA,
|
||||
0x4C, 0x17, 0x09, 0xEF, 0x89, 0x20, 0xFA, 0x83,
|
||||
0x9F, 0xAE, 0x0E, 0x1B, 0x7D, 0x98, 0xB9, 0xF2,
|
||||
0x3C, 0x0F, 0xB7, 0x1C, 0x72, 0xDF, 0x17, 0x84,
|
||||
0x7F, 0x0A, 0xFD, 0x12, 0x3C, 0x6F, 0x68, 0x5D,
|
||||
0x45, 0xEB, 0xB8, 0xD6, 0x24, 0x65, 0x42, 0x75,
|
||||
0x5C, 0xC2, 0xF3, 0x3A, 0x6A, 0x4E, 0x51, 0x34,
|
||||
0x1B, 0xB6, 0x81, 0xB2, 0x8A, 0xEF, 0x28, 0xA4,
|
||||
0xC5, 0x88, 0x9A, 0x97, 0xE0, 0xEF, 0x31, 0x12,
|
||||
0x01, 0x7E, 0x1B, 0x43, 0x0F, 0x27, 0x80, 0x87,
|
||||
0x98, 0xC5, 0xD5, 0x83, 0xCB, 0x4B, 0xB7, 0x01,
|
||||
0x79, 0x60, 0xA1, 0x1A, 0x03, 0x05, 0xC6, 0x36,
|
||||
0x04, 0x31, 0x3C, 0x06, 0xDB, 0x08, 0xA8, 0xDA,
|
||||
0x8E, 0x32, 0x19, 0x91, 0xF1, 0x0D, 0x61, 0x6F,
|
||||
0xE4, 0xB2, 0x79, 0x8A, 0xDE, 0xF4, 0xF7, 0xFB,
|
||||
0x2C, 0x23, 0x5B, 0xD9, 0x64, 0x2F, 0xB7, 0xB3,
|
||||
0x8B, 0xCA, 0xB8, 0x8C, 0x1D, 0x3B, 0x49, 0x05,
|
||||
0x38, 0xA1, 0xE5, 0x8C, 0x1A, 0xDC, 0xA5, 0x61,
|
||||
0xFE, 0xF4, 0x2B, 0xDC, 0x77, 0x28, 0xF6, 0x19,
|
||||
0xE7, 0xB7, 0x8F, 0x4D, 0x27, 0x2D, 0xED, 0x8A,
|
||||
0x3F, 0x3D, 0xDC, 0x9F, 0xD1, 0x30, 0xFF, 0xD6,
|
||||
0xC3, 0xBE, 0x41, 0x25, 0xE3, 0xA5, 0x9B, 0x73,
|
||||
0xDF, 0x6A, 0xD9, 0xF9, 0x70, 0x84, 0x02, 0x4C,
|
||||
0x35, 0xD4, 0x3E, 0x05, 0x76, 0x3A, 0xDC, 0x6D,
|
||||
0x5A, 0x81, 0xB3, 0x94, 0xF7, 0x22, 0xF7, 0xDC,
|
||||
0xC1, 0x43, 0x31, 0x57, 0x5B, 0x42, 0x9A, 0x0B,
|
||||
0xF4, 0x95, 0x30, 0xA9, 0xBB, 0xD8, 0x06, 0xFB,
|
||||
0x1D, 0x6F, 0x9B, 0xC3, 0xBB, 0xF3, 0xBF, 0xFB,
|
||||
0xB4, 0x9F, 0x35, 0x64, 0x0A, 0x69, 0xB7, 0xD1,
|
||||
0x3E, 0xCA, 0x78, 0x07, 0x04, 0x03, 0x79, 0xD4,
|
||||
0xF3, 0xA8, 0xEC, 0x18, 0xDB, 0x03, 0x5E, 0x47,
|
||||
0xD7, 0xD0, 0x56, 0x2C, 0x74, 0x94, 0x86, 0x04,
|
||||
0x46, 0xB8, 0xD4, 0x35, 0x0A, 0x7B, 0xE6, 0x78,
|
||||
0xC4, 0x43, 0x3C, 0x56, 0xCC, 0x37, 0x8B, 0xFD,
|
||||
0xE8, 0xF4, 0x57, 0xEA, 0xAE, 0xCF, 0x36, 0x97,
|
||||
0x12, 0xAC, 0x39, 0xCF, 0x7C, 0xEF, 0x22, 0x67,
|
||||
0x01, 0xEC, 0xD8, 0x09, 0x49, 0x4E, 0xE3, 0x74,
|
||||
0xDD, 0x39, 0xE1, 0x39, 0xD7, 0x0C, 0x5F, 0x1B,
|
||||
0xCE, 0x69, 0xBC, 0x72, 0x44, 0x87, 0x64, 0x1C,
|
||||
0x08, 0x05, 0x93, 0x69, 0x6D, 0x7F, 0x90, 0x0A,
|
||||
0x2C, 0xCB, 0x8A, 0xBB, 0x7F, 0xE3, 0xE0, 0x80,
|
||||
0x31, 0xD0, 0x0A, 0x3A, 0x95, 0xFF, 0xF7, 0xB4,
|
||||
0x36, 0x38, 0x93, 0xE0, 0x0C, 0x11, 0x37, 0x12,
|
||||
0x06, 0xF6, 0xAD, 0xE9, 0xB1, 0x7A, 0x00, 0xF5,
|
||||
0xD2, 0x32, 0x6B, 0xD0, 0x27, 0xA5, 0x1B, 0x3D,
|
||||
0xE8, 0xDB, 0xCC, 0xA9, 0x1F, 0x1F, 0xB1, 0x99,
|
||||
0x3D, 0x7C, 0xB7, 0xCA, 0xDA, 0x27, 0x2C, 0x64,
|
||||
0x1C, 0x49, 0xB6, 0x87, 0x44, 0x06, 0x94, 0x9D,
|
||||
0xBC, 0x6B, 0x20, 0xA2, 0x68, 0x15, 0x1F, 0xE2,
|
||||
0xF2, 0xAD, 0x6D, 0x23, 0x2E, 0x2B, 0x74, 0xE2,
|
||||
0x5D, 0xE4, 0xB0, 0xC7, 0x84, 0xCB, 0x64, 0xBF,
|
||||
0xE0, 0xA8, 0x18, 0x83, 0xB4, 0xC9, 0xD9, 0x73,
|
||||
0xA8, 0xE6, 0xA9, 0x36, 0xD5, 0x63, 0x1E, 0x2C,
|
||||
0x2A, 0x55, 0x09, 0x77, 0x5E, 0xB3, 0x4B, 0xEA,
|
||||
0xB5, 0xD0, 0x14, 0x5F, 0xEB, 0x50, 0x7B, 0xAA,
|
||||
0xEF, 0x94, 0xBA, 0x2B, 0xD7, 0x8A, 0x07, 0xF1,
|
||||
0xF9, 0x5E, 0x12, 0x12, 0x21, 0x52, 0xE5, 0x0A,
|
||||
0x3E, 0xC0, 0xBC, 0x5D, 0x4C, 0xE2, 0x12, 0x7C,
|
||||
0x39, 0xF9, 0x16, 0x9D, 0xBD, 0x96, 0x83, 0x3B,
|
||||
0x7F, 0x3D, 0x6A, 0xEC, 0xF1, 0x25, 0xD2, 0xB0,
|
||||
0xB0, 0xEB, 0x20, 0x06, 0x07, 0xD6, 0xD9, 0x4C,
|
||||
0x07, 0x9A, 0x82, 0xC1, 0xFC, 0xF7, 0x66, 0x15,
|
||||
0xBD, 0x62, 0x65, 0xD8, 0x6C, 0xF6, 0x33, 0x7B,
|
||||
0x5A, 0x28, 0xEC, 0x90, 0xA1, 0x26, 0x9F, 0xC3,
|
||||
0x28, 0x4A, 0x64, 0x50, 0x5F, 0xCA, 0xE2, 0x6D,
|
||||
0xB8, 0x0F, 0xE2, 0x94, 0xB5, 0x8E, 0x1F, 0x8A,
|
||||
0x8F, 0x6B, 0xA6, 0x86, 0x1F, 0xEE, 0xDC, 0x24,
|
||||
0xB4, 0xB8, 0x25, 0xEC, 0x28, 0x2D, 0xF9, 0xCB,
|
||||
0x7D, 0x38, 0xFF, 0xC7, 0x74, 0x2E, 0xD3, 0x10,
|
||||
0xEC, 0x03, 0x31, 0xEE, 0x83, 0xE7, 0xA4, 0xF7,
|
||||
0xBA, 0x28, 0x21, 0xE0, 0x7F, 0xB4, 0xB7, 0xE1,
|
||||
0x7A, 0xF9, 0x2B, 0xB0, 0x2C, 0x3B, 0x80, 0x5F,
|
||||
0xE0, 0x5D, 0xB2, 0x7E, 0x59, 0xFF, 0x59, 0x07,
|
||||
0x58, 0x42, 0x57, 0xEE, 0x44, 0xF1, 0xB1, 0xAD,
|
||||
0xBA, 0xDE, 0xCB, 0x1D, 0x8A, 0x36, 0x67, 0xE8,
|
||||
0x45, 0xFF, 0x07, 0x8D, 0xEE, 0xA4, 0x51, 0x9C,
|
||||
0x4C, 0x83, 0x5D, 0x2E, 0x2F, 0xE1, 0x5B, 0x75,
|
||||
0xE8, 0x29, 0xCD, 0x0B, 0x07, 0x62, 0xE0, 0xC3,
|
||||
0x0D, 0x1D, 0xEA, 0xCF, 0xF0, 0x8A, 0x65, 0x27,
|
||||
0x70, 0x42, 0x9F, 0x26, 0x00, 0x15, 0x70, 0xC5,
|
||||
0x4A, 0xF6, 0x25, 0xD0, 0x40, 0x72, 0xE9, 0xC1,
|
||||
0x73, 0xFD, 0x48, 0x94, 0xA3, 0x8D, 0x66, 0x63,
|
||||
0x96, 0x4F, 0xF7, 0xEE, 0xFB, 0x4C, 0xC7, 0xB8,
|
||||
0x6B, 0xE9, 0x90, 0xE1, 0x2A, 0x66, 0x80, 0x99,
|
||||
0x3B, 0xB0, 0x1A, 0x6C, 0xF9, 0x0E, 0x72, 0xDA,
|
||||
0x8E, 0x4F, 0x46, 0xC2, 0x6A, 0x4B, 0x7A, 0x16,
|
||||
0xE5, 0x26, 0x0B, 0x5C, 0xD4, 0x47, 0x34, 0xE5,
|
||||
0x37, 0xBE, 0x68, 0x6C, 0xDA, 0xD3, 0x9B, 0x6F,
|
||||
0xAE, 0x51, 0x9C, 0x99, 0x0A, 0x5B, 0xF8, 0x37,
|
||||
0xBC, 0xDE, 0xFC, 0x93, 0xC5, 0xE7, 0x0F, 0xEF,
|
||||
0x0B, 0xA6, 0x07, 0xC2, 0xA6, 0xE6, 0xDA, 0x2D,
|
||||
0x1B, 0x49, 0xC9, 0xDE, 0x6B, 0x27, 0xDC, 0x00,
|
||||
0xEF, 0x23, 0x87, 0x0E, 0xEB, 0xD1, 0x48, 0x7D,
|
||||
0xB4, 0xF2, 0x58, 0xC6, 0x3C, 0xE2, 0x89, 0xBA,
|
||||
0xB0, 0x05, 0xAC, 0x94, 0x41, 0x9A, 0xA8, 0xFF,
|
||||
0x3E, 0xBC, 0x3A, 0x52, 0x9C, 0xF9, 0x7F, 0x07,
|
||||
0x8B, 0xB0, 0x2C, 0x71, 0x83, 0x7B, 0xCF, 0x2E,
|
||||
0x7F, 0x7C, 0x96, 0x65, 0xD9, 0x08, 0x17, 0xEC,
|
||||
0xFA, 0xDE, 0x4E, 0x40, 0x12, 0x26, 0x70, 0x71,
|
||||
0x65, 0xA5, 0xDC, 0x98, 0x47, 0xA3, 0xFC, 0xE0,
|
||||
0x9A, 0x16, 0xED, 0x45, 0x56, 0x72, 0x50, 0x05,
|
||||
0x28, 0x2C, 0x99, 0xEC, 0x20, 0x2E, 0x40, 0xC0,
|
||||
0x26, 0x69, 0xCD, 0x49, 0x45, 0x17, 0xA4, 0xA3,
|
||||
0x42, 0x0D, 0x14, 0x65, 0x87, 0x33, 0x8C, 0x92,
|
||||
0xC5, 0xC4, 0x61, 0xFD, 0xE8, 0x68, 0x56, 0x20,
|
||||
0x57, 0xF5, 0x8E, 0x5F, 0xCF, 0x7E, 0x97, 0xF6,
|
||||
0x49, 0x97, 0x0A, 0xFE, 0xD3, 0x60, 0x1A, 0x5B,
|
||||
0x0C, 0x75, 0xDD, 0x8E, 0x31, 0x78, 0x29, 0xA6,
|
||||
0xB1, 0x4D, 0xAA, 0xDF, 0x8A, 0xD1, 0xE6, 0x91,
|
||||
0xE3, 0x32, 0x3F, 0xEC, 0x8A, 0x1F, 0x0E, 0x35,
|
||||
0x07, 0x6E, 0x4B, 0x83, 0x3B, 0xE5, 0x67, 0x34,
|
||||
0x1F, 0x0C, 0x81, 0xD8, 0xD5, 0x25, 0x68, 0xE5,
|
||||
0x28, 0x1B, 0x5C, 0x81, 0x3E, 0xE3, 0x5C, 0xB4,
|
||||
0xB6, 0xBD, 0x62, 0x6A, 0x70, 0x33, 0xC2, 0xC5,
|
||||
0x75, 0x27, 0xF4, 0x30, 0xE1, 0x1D, 0xC1, 0x4C,
|
||||
0xC5, 0x02, 0x12, 0x46, 0xAC, 0xEC, 0xF9, 0xE8,
|
||||
0xE7, 0x58, 0x24, 0x11, 0xB1, 0xF3, 0xB7, 0x8C,
|
||||
0x3C, 0xA4, 0x0A, 0x94, 0xA6, 0x7C, 0x68, 0x54,
|
||||
0x5B, 0xB9, 0x4D, 0x57, 0x9C, 0xE7, 0x28, 0x09,
|
||||
0x6B, 0x89, 0x26, 0x5D, 0xE7, 0x50, 0xA9, 0x95,
|
||||
0x90, 0x91, 0x8E, 0x00, 0x59, 0xF8, 0x3A, 0x70,
|
||||
0xAF, 0x48, 0x2E, 0xE8, 0xC4, 0x34, 0x8C, 0xF4,
|
||||
0x5F, 0x7F, 0xCB, 0x07, 0xAA, 0xF0, 0xD9, 0xFB,
|
||||
0x5C, 0x32, 0x90, 0x22, 0x1A, 0xD2, 0x1A, 0xCF,
|
||||
0x92, 0x06, 0x02, 0xCF, 0x10, 0x18, 0x7B, 0x93,
|
||||
0xCC, 0x07, 0x4A, 0x31, 0x25, 0x30, 0x23, 0x06,
|
||||
0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01,
|
||||
0x09, 0x15, 0x31, 0x16, 0x04, 0x14, 0xD1, 0xDE,
|
||||
0x23, 0x16, 0x9F, 0x6E, 0xF4, 0x42, 0x21, 0x23,
|
||||
0xE1, 0x11, 0xAA, 0xC8, 0x7C, 0x60, 0x4A, 0x78,
|
||||
0x9D, 0x24, 0x30, 0x31, 0x30, 0x21, 0x30, 0x09,
|
||||
0x06, 0x05, 0x2B, 0x0E, 0x03, 0x02, 0x1A, 0x05,
|
||||
0x00, 0x04, 0x14, 0xD6, 0x4A, 0xBB, 0x75, 0xB1,
|
||||
0xF9, 0x9E, 0xD3, 0x58, 0x6D, 0xD1, 0x74, 0x9F,
|
||||
0x00, 0x8A, 0xF2, 0xC8, 0xAA, 0x52, 0x4D, 0x04,
|
||||
0x08, 0x77, 0x46, 0xE7, 0xBA, 0x25, 0x4B, 0xDA,
|
||||
0x41, 0x02, 0x02, 0x08, 0x00]
|
||||
};
|
||||
|
||||
const WPA_EAP_CLIENT_LIST = [
|
||||
{
|
||||
ssid: 'WPA-EAP-TTLS',
|
||||
keyManagement: 'WPA-EAP',
|
||||
eap: 'TTLS',
|
||||
identity: EAP_USERNAME,
|
||||
password: EAP_PASSWORD,
|
||||
serverCertificate: CLIENT_PKCS12_CERT.nickname,
|
||||
phase2: 'MSCHAPV2'
|
||||
}
|
||||
];
|
||||
|
||||
/**
|
||||
* Convert the given MozWifiNetwork object array to testAssociate chain.
|
||||
*
|
||||
* @param aNetworks
|
||||
* An array of MozWifiNetwork which we want to convert.
|
||||
*
|
||||
* @return A promise chain which "then"s testAssociate accordingly.
|
||||
*/
|
||||
function convertToTestAssociateChain(aNetworks) {
|
||||
let chain = Promise.resolve();
|
||||
|
||||
aNetworks.forEach(function (aNetwork) {
|
||||
network = new window.MozWifiNetwork(aNetwork);
|
||||
chain = chain.then(() => gTestSuite.testAssociate(network));
|
||||
});
|
||||
|
||||
return chain;
|
||||
}
|
||||
|
||||
gTestSuite.doTestWithCertificate(
|
||||
new Blob([new Uint8Array(CLIENT_PKCS12_CERT.content)]),
|
||||
CLIENT_PKCS12_CERT.password,
|
||||
CLIENT_PKCS12_CERT.nickname,
|
||||
CLIENT_PKCS12_CERT.usage,
|
||||
function() {
|
||||
return gTestSuite.ensureWifiEnabled(true)
|
||||
// Load required server files.
|
||||
.then(() => gTestSuite.writeFile(SERVER_EAP_USER_CONF.path, SERVER_EAP_USER_CONF.content))
|
||||
.then(() => gTestSuite.writeFile(CA_CERT.path, CA_CERT.content))
|
||||
.then(() => gTestSuite.writeFile(SERVER_CERT.path, SERVER_CERT.content))
|
||||
.then(() => gTestSuite.writeFile(SERVER_KEY.path, SERVER_KEY.content))
|
||||
// Start AP.
|
||||
.then(() => gTestSuite.startHostapds(WPA_EAP_AP_LIST))
|
||||
// Scan test.
|
||||
.then(() => gTestSuite.testWifiScanWithRetry(SCAN_RETRY_CNT, WPA_EAP_AP_LIST))
|
||||
// Associate test.
|
||||
.then(() => convertToTestAssociateChain(WPA_EAP_CLIENT_LIST))
|
||||
// Tear down.
|
||||
.then(gTestSuite.killAllHostapd)
|
||||
});
|
@ -332,6 +332,8 @@ CompositorVsyncObserver::Composite(TimeStamp aVsyncTimestamp)
|
||||
mCurrentCompositeTask = nullptr;
|
||||
}
|
||||
|
||||
DispatchTouchEvents(aVsyncTimestamp);
|
||||
|
||||
if (mNeedsComposite && mCompositorParent) {
|
||||
mNeedsComposite = false;
|
||||
mCompositorParent->CompositeCallback(aVsyncTimestamp);
|
||||
@ -339,8 +341,6 @@ CompositorVsyncObserver::Composite(TimeStamp aVsyncTimestamp)
|
||||
} else if (mVsyncNotificationsSkipped++ > gfxPrefs::CompositorUnobserveCount()) {
|
||||
UnobserveVsync();
|
||||
}
|
||||
|
||||
DispatchTouchEvents(aVsyncTimestamp);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -5,7 +5,7 @@
|
||||
MOZ_APP_BASENAME=Fennec
|
||||
MOZ_APP_VENDOR=Mozilla
|
||||
|
||||
MOZ_APP_VERSION=39.0a1
|
||||
MOZ_APP_VERSION=40.0a1
|
||||
MOZ_APP_UA_NAME=Firefox
|
||||
|
||||
MOZ_BRANDING_DIRECTORY=mobile/android/branding/unofficial
|
||||
|
@ -9,7 +9,7 @@ interface nsIURI;
|
||||
interface nsIChannel;
|
||||
interface nsILoadInfo;
|
||||
|
||||
[scriptable, uuid(cdef9e4e-b731-450c-871a-8015a95fa54c)]
|
||||
[scriptable, uuid(c0c19db9-1b5a-4ac5-b656-ed6f8149fa48)]
|
||||
interface nsIAboutModule : nsISupports
|
||||
{
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
# Definitions used by constants.js.
|
||||
weave_version := 1.41.0
|
||||
weave_version := 1.42.0
|
||||
weave_id := {340c2bbc-ce74-4362-90b5-7c26312808ef}
|
||||
|
||||
# Preprocess files.
|
||||
|
@ -11,6 +11,7 @@ RUN yum install -y epel-release && \
|
||||
GConf2-devel \
|
||||
alsa-lib-devel \
|
||||
autoconf213 \
|
||||
bc \
|
||||
bison \
|
||||
bzip2 \
|
||||
ccache \
|
||||
|
@ -1 +1 @@
|
||||
0.2.6
|
||||
0.2.7
|
||||
|
@ -1,4 +1,4 @@
|
||||
FROM quay.io/mozilla/b2g-build:0.2.6
|
||||
FROM quay.io/mozilla/b2g-build:0.2.7
|
||||
MAINTAINER Dustin J. Mitchell <dustin@mozilla.com>
|
||||
|
||||
ENV PYTHONPATH /tools/tools/lib/python:$PYTHONPATH
|
||||
|
@ -1 +1 @@
|
||||
0.5.3
|
||||
0.5.4
|
||||
|
@ -1 +1 @@
|
||||
0.0.2
|
||||
0.0.3
|
||||
|
@ -5,9 +5,16 @@ python /home/worker/bin/validate_task.py
|
||||
|
||||
echo "Retrieving device"
|
||||
res=`curl --request POST -H "Content-Type: application/json" -d "$DEVICE_CAPABILITIES" http://$CLOUD_HOST/device`
|
||||
error=`echo $res | jq .error`
|
||||
|
||||
if [ "$error" != "null" ]; then
|
||||
echo $error
|
||||
exit -1
|
||||
fi
|
||||
|
||||
status=`echo $res | jq .session`
|
||||
|
||||
if [[ $status == 'null' ]]; then
|
||||
if [ "$status" == "null" ]; then
|
||||
echo "Session could not be created with a device."
|
||||
exit -1
|
||||
fi
|
||||
|
@ -18,6 +18,10 @@ flags:
|
||||
- win32_gecko # b2g desktop win 32 bit
|
||||
- flame-kk # b2g flame kitkat
|
||||
- flame-kk-eng # b2g flame eng build
|
||||
- dolphin
|
||||
- dolphin-eng
|
||||
- dolphin-512
|
||||
- dolphin-512-eng
|
||||
|
||||
tests:
|
||||
- cppunit
|
||||
|
@ -76,6 +76,30 @@ builds:
|
||||
types:
|
||||
opt:
|
||||
task: tasks/builds/b2g_flame_kk_eng.yml
|
||||
dolphin:
|
||||
platforms:
|
||||
- b2g
|
||||
types:
|
||||
opt:
|
||||
task: tasks/builds/b2g_dolphin_opt.yml
|
||||
dolphin-eng:
|
||||
platforms:
|
||||
- b2g
|
||||
types:
|
||||
opt:
|
||||
task: tasks/builds/b2g_dolphin_eng.yml
|
||||
dolphin-512:
|
||||
platforms:
|
||||
- b2g
|
||||
types:
|
||||
opt:
|
||||
task: tasks/builds/b2g_dolphin_512_opt.yml
|
||||
dolphin-512-eng:
|
||||
platforms:
|
||||
- b2g
|
||||
types:
|
||||
opt:
|
||||
task: tasks/builds/b2g_dolphin_512_eng.yml
|
||||
|
||||
tests:
|
||||
cppunit:
|
||||
|
@ -1,18 +1,23 @@
|
||||
$inherits:
|
||||
from: 'tasks/builds/b2g_phone_base.yml'
|
||||
from: 'tasks/builds/b2g_dolphin_base.yml'
|
||||
task:
|
||||
scopes:
|
||||
- 'docker-worker:cache:build-dolphin-eng'
|
||||
metadata:
|
||||
name: B2G Dolphin Eng
|
||||
name: '[TC] B2G Dolphin Eng'
|
||||
|
||||
extra:
|
||||
treeherder:
|
||||
symbol: Be
|
||||
groupSymbol: Dolphin
|
||||
groupName: Dolphin Device Image
|
||||
machine:
|
||||
platform: b2g-device-image
|
||||
|
||||
payload:
|
||||
cache:
|
||||
build-hamachi-eng: /home/worker/object-folder
|
||||
build-dolphin-eng: /home/worker/object-folder
|
||||
env:
|
||||
TARGET: 'dolphin'
|
||||
DEBUG: 0
|
||||
VARIANT: eng
|
||||
extra:
|
||||
locations:
|
||||
img: 'private/build/dolphin.zip'
|
||||
|
||||
|
@ -1,17 +0,0 @@
|
||||
$inherits:
|
||||
from: 'tasks/builds/b2g_phone_base.yml'
|
||||
task:
|
||||
scopes:
|
||||
- 'docker-worker:cache:build-dolphin-user'
|
||||
metadata:
|
||||
name: B2G Dolphin User
|
||||
payload:
|
||||
cache:
|
||||
build-hamachi-user: /home/worker/object-folder
|
||||
env:
|
||||
TARGET: 'dolphin'
|
||||
DEBUG: 0
|
||||
extra:
|
||||
locations:
|
||||
img: 'private/build/dolphin.zip'
|
||||
|
@ -16,11 +16,14 @@ task:
|
||||
- 'queue:define-task:aws-provisioner/test-c4-2xlarge'
|
||||
- 'queue:create-task:aws-provisioner/test-c4-2xlarge'
|
||||
- 'docker-worker:cache:tc-vcs'
|
||||
- 'docker-worker:cache:linux-cache'
|
||||
|
||||
payload:
|
||||
image: '{{#docker_image}}tester{{/docker_image}}'
|
||||
maxRunTime: 3600
|
||||
cache:
|
||||
# So pip installs are cached...
|
||||
linux-cache: /home/worker/.cache
|
||||
tc-vcs: '/home/worker/.tc-vcs'
|
||||
env:
|
||||
GAIA_HEAD_REPOSITORY: '{{{gaia_head_repository}}}'
|
||||
|
@ -38,10 +38,12 @@ skip-if = android_version == "18"
|
||||
# Bug 1144395: crash on Android 4.3
|
||||
skip-if = android_version == "18"
|
||||
[test_ThirdPartyCookieProbe.js]
|
||||
skip-if = true # Bug 1149284
|
||||
[test_TelemetrySendOldPings.js]
|
||||
skip-if = debug == true || os == "android" # Disabled due to intermittent orange on Android
|
||||
[test_TelemetrySession.js]
|
||||
# Bug 1144395: crash on Android 4.3
|
||||
skip-if = android_version == "18"
|
||||
#skip-if = android_version == "18"
|
||||
skip-if = true # Bug 1149284
|
||||
[test_ThreadHangStats.js]
|
||||
run-sequentially = Bug 1046307, test can fail intermittently when CPU load is high
|
||||
|
@ -31,5 +31,6 @@ aboutReader.footer.deleteThisArticle=Delete this article
|
||||
# These are used for the Reader View toolbar button and the menuitem within the
|
||||
# View menu.
|
||||
readerView.enter=Enter Reader View
|
||||
readerView.enter.accesskey=R
|
||||
readerView.close=Close Reader View
|
||||
readerView.accesskey=R
|
||||
readerView.close.accesskey=R
|
||||
|
@ -132,7 +132,7 @@ GeckoTouchDispatcher::NotifyTouch(MultiTouchInput& aTouch, TimeStamp aEventTime)
|
||||
layers::APZThreadUtils::RunOnControllerThread(NewRunnableMethod(
|
||||
this, &GeckoTouchDispatcher::DispatchTouchMoveEvents, TimeStamp::Now()));
|
||||
} else {
|
||||
if (mResamplingEnabled) {
|
||||
{ // scope lock
|
||||
MutexAutoLock lock(mTouchQueueLock);
|
||||
mInflightNonMoveEvents++;
|
||||
}
|
||||
@ -154,7 +154,7 @@ GeckoTouchDispatcher::DispatchTouchNonMoveEvent(MultiTouchInput aInput)
|
||||
}
|
||||
DispatchTouchEvent(aInput);
|
||||
|
||||
if (mResamplingEnabled) {
|
||||
{ // scope lock
|
||||
MutexAutoLock lock(mTouchQueueLock);
|
||||
mInflightNonMoveEvents--;
|
||||
MOZ_ASSERT(mInflightNonMoveEvents >= 0);
|
||||
@ -169,6 +169,7 @@ GeckoTouchDispatcher::DispatchTouchMoveEvents(TimeStamp aVsyncTime)
|
||||
{
|
||||
MutexAutoLock lock(mTouchQueueLock);
|
||||
if (!mHavePendingTouchMoves) {
|
||||
MOZ_ASSERT(mTouchMoveEvents.empty());
|
||||
return;
|
||||
}
|
||||
mHavePendingTouchMoves = false;
|
||||
|
@ -129,7 +129,11 @@ status_t FramebufferSurface::nextBuffer(sp<GraphicBuffer>& outBuffer, sp<Fence>&
|
||||
}
|
||||
|
||||
// Overrides ConsumerBase::onFrameAvailable(), does not call base class impl.
|
||||
#if ANDROID_VERSION >= 22
|
||||
void FramebufferSurface::onFrameAvailable(const ::android::BufferItem &item) {
|
||||
#else
|
||||
void FramebufferSurface::onFrameAvailable() {
|
||||
#endif
|
||||
sp<GraphicBuffer> buf;
|
||||
sp<Fence> acquireFence;
|
||||
status_t err = nextBuffer(buf, acquireFence);
|
||||
|
@ -63,7 +63,11 @@ public:
|
||||
private:
|
||||
virtual ~FramebufferSurface() { }; // this class cannot be overloaded
|
||||
|
||||
#if ANDROID_VERSION >= 22
|
||||
virtual void onFrameAvailable(const ::android::BufferItem &item);
|
||||
#else
|
||||
virtual void onFrameAvailable();
|
||||
#endif
|
||||
virtual void freeBufferLocked(int slotIndex);
|
||||
|
||||
// nextBuffer waits for and then latches the next buffer from the
|
||||
|
@ -32,12 +32,28 @@ GonkBufferQueue::ProxyConsumerListener::ProxyConsumerListener(
|
||||
|
||||
GonkBufferQueue::ProxyConsumerListener::~ProxyConsumerListener() {}
|
||||
|
||||
#if ANDROID_VERSION == 21
|
||||
void GonkBufferQueue::ProxyConsumerListener::onFrameAvailable() {
|
||||
sp<ConsumerListener> listener(mConsumerListener.promote());
|
||||
if (listener != NULL) {
|
||||
listener->onFrameAvailable();
|
||||
}
|
||||
}
|
||||
#else
|
||||
void GonkBufferQueue::ProxyConsumerListener::onFrameAvailable(const ::android::BufferItem& item) {
|
||||
sp<ConsumerListener> listener(mConsumerListener.promote());
|
||||
if (listener != NULL) {
|
||||
listener->onFrameAvailable(item);
|
||||
}
|
||||
}
|
||||
|
||||
void GonkBufferQueue::ProxyConsumerListener::onFrameReplaced(const ::android::BufferItem& item) {
|
||||
sp<ConsumerListener> listener(mConsumerListener.promote());
|
||||
if (listener != NULL) {
|
||||
listener->onFrameReplaced(item);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void GonkBufferQueue::ProxyConsumerListener::onBuffersReleased() {
|
||||
sp<ConsumerListener> listener(mConsumerListener.promote());
|
||||
|
@ -63,7 +63,12 @@ public:
|
||||
public:
|
||||
ProxyConsumerListener(const wp<ConsumerListener>& consumerListener);
|
||||
virtual ~ProxyConsumerListener();
|
||||
#if ANDROID_VERSION == 21
|
||||
virtual void onFrameAvailable();
|
||||
#else
|
||||
virtual void onFrameAvailable(const ::android::BufferItem& item);
|
||||
virtual void onFrameReplaced(const ::android::BufferItem& item);
|
||||
#endif
|
||||
virtual void onBuffersReleased();
|
||||
virtual void onSidebandStreamChanged();
|
||||
private:
|
||||
|
@ -554,6 +554,7 @@ status_t GonkBufferQueueProducer::queueBuffer(int slot,
|
||||
return BAD_VALUE;
|
||||
}
|
||||
|
||||
GonkBufferItem item;
|
||||
sp<IConsumerListener> listener;
|
||||
{ // Autolock scope
|
||||
Mutex::Autolock lock(mCore->mMutex);
|
||||
@ -610,7 +611,6 @@ status_t GonkBufferQueueProducer::queueBuffer(int slot,
|
||||
++mCore->mFrameCounter;
|
||||
mSlots[slot].mFrameNumber = mCore->mFrameCounter;
|
||||
|
||||
GonkBufferItem item;
|
||||
item.mAcquireCalled = mSlots[slot].mAcquireCalled;
|
||||
item.mGraphicBuffer = mSlots[slot].mGraphicBuffer;
|
||||
item.mCrop = crop;
|
||||
@ -659,11 +659,18 @@ status_t GonkBufferQueueProducer::queueBuffer(int slot,
|
||||
|
||||
output->inflate(mCore->mDefaultWidth, mCore->mDefaultHeight,
|
||||
mCore->mTransformHint, mCore->mQueue.size());
|
||||
|
||||
item.mGraphicBuffer.clear();
|
||||
item.mSlot = GonkBufferItem::INVALID_BUFFER_SLOT;
|
||||
} // Autolock scope
|
||||
|
||||
// Call back without lock held
|
||||
if (listener != NULL) {
|
||||
#if ANDROID_VERSION == 21
|
||||
listener->onFrameAvailable();
|
||||
#else
|
||||
listener->onFrameAvailable(reinterpret_cast<::android::BufferItem&>(item));
|
||||
#endif
|
||||
}
|
||||
|
||||
return NO_ERROR;
|
||||
|
@ -85,7 +85,11 @@ void GonkConsumerBase::freeBufferLocked(int slotIndex) {
|
||||
mSlots[slotIndex].mFrameNumber = 0;
|
||||
}
|
||||
|
||||
#if ANDROID_VERSION == 21
|
||||
void GonkConsumerBase::onFrameAvailable() {
|
||||
#else
|
||||
void GonkConsumerBase::onFrameAvailable(const ::android::BufferItem& item) {
|
||||
#endif
|
||||
ALOGV("onFrameAvailable");
|
||||
|
||||
sp<FrameAvailableListener> listener;
|
||||
|
@ -107,7 +107,12 @@ protected:
|
||||
// the GonkConsumerBase implementation must be called from the derived class.
|
||||
// The GonkConsumerBase version of onSidebandStreamChanged does nothing and can
|
||||
// be overriden by derived classes if they want the notification.
|
||||
#if ANDROID_VERSION == 21
|
||||
virtual void onFrameAvailable();
|
||||
#else
|
||||
virtual void onFrameAvailable(const ::android::BufferItem& item);
|
||||
virtual void onFrameReplaced(const ::android::BufferItem& item) {};
|
||||
#endif
|
||||
virtual void onBuffersReleased();
|
||||
virtual void onSidebandStreamChanged();
|
||||
|
||||
|
@ -188,8 +188,13 @@ void GonkNativeWindow::setNewFrameCallback(
|
||||
mNewFrameCallback = callback;
|
||||
}
|
||||
|
||||
#if ANDROID_VERSION == 21
|
||||
void GonkNativeWindow::onFrameAvailable() {
|
||||
GonkConsumerBase::onFrameAvailable();
|
||||
#else
|
||||
void GonkNativeWindow::onFrameAvailable(const ::android::BufferItem &item) {
|
||||
GonkConsumerBase::onFrameAvailable(item);
|
||||
#endif
|
||||
|
||||
if (mNewFrameCallback) {
|
||||
mNewFrameCallback->OnNewFrame();
|
||||
|
@ -118,7 +118,11 @@ class GonkNativeWindow: public GonkConsumerBase
|
||||
static void RecycleCallback(TextureClient* client, void* closure);
|
||||
|
||||
protected:
|
||||
#if ANDROID_VERSION == 21
|
||||
virtual void onFrameAvailable();
|
||||
#else
|
||||
virtual void onFrameAvailable(const ::android::BufferItem &item);
|
||||
#endif
|
||||
|
||||
private:
|
||||
GonkNativeWindowNewFrameCallback* mNewFrameCallback;
|
||||
|
@ -21,7 +21,7 @@ namespace mozilla {
|
||||
*/
|
||||
struct Module
|
||||
{
|
||||
static const unsigned int kVersion = 39;
|
||||
static const unsigned int kVersion = 40;
|
||||
|
||||
struct CIDEntry;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user