From mbosma@svn.reactos.com Mon May 16 12:54:13 2005
From: mbosma@svn.reactos.com
To: ros-diffs@reactos.org
Subject: [ros-diffs] [mbosma] 15332: PackageManager: German Translation and
CreateOptions()
Date: Mon, 16 May 2005 12:53:49 +0200
Message-ID: <000001c55a05$8a76e070$6b01a8c0@PENELOPE>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="===============5436661252116257231=="
--===============5436661252116257231==
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
PackageManager: German Translation and CreateOptions()
Deleted: trunk/rosapps/packmgr/cmd-line/options.xml
Deleted: trunk/rosapps/packmgr/gui/options.xml
Modified: trunk/rosapps/packmgr/gui/res/blank.ico
Modified: trunk/rosapps/packmgr/lib/cz.rc
Modified: trunk/rosapps/packmgr/lib/en.rc
Modified: trunk/rosapps/packmgr/lib/es.rc
Modified: trunk/rosapps/packmgr/lib/log.cpp
Modified: trunk/rosapps/packmgr/lib/options.cpp
Modified: trunk/rosapps/packmgr/lib/package.rc
_____
Deleted: trunk/rosapps/packmgr/cmd-line/options.xml
--- trunk/rosapps/packmgr/cmd-line/options.xml 2005-05-16 10:30:13 UTC
(rev 15331)
+++ trunk/rosapps/packmgr/cmd-line/options.xml 2005-05-16 10:53:46 UTC
(rev 15332)
@@ -1,3 +0,0 @@
-
-
http://svn.reactos.com/viewcvs/*checkout*/trunk/rosapps/packmgr/
tree/
-
\ No newline at end of file
_____
Deleted: trunk/rosapps/packmgr/gui/options.xml
--- trunk/rosapps/packmgr/gui/options.xml 2005-05-16 10:30:13 UTC
(rev 15331)
+++ trunk/rosapps/packmgr/gui/options.xml 2005-05-16 10:53:46 UTC
(rev 15332)
@@ -1,3 +0,0 @@
-
-
http://svn.reactos.com/viewcvs/*checkout*/trunk/rosapps/packmgr/
tree/
-
\ No newline at end of file
_____
Modified: trunk/rosapps/packmgr/gui/res/blank.ico
(Binary files differ)
_____
Modified: trunk/rosapps/packmgr/lib/cz.rc
--- trunk/rosapps/packmgr/lib/cz.rc 2005-05-16 10:30:13 UTC (rev
15331)
+++ trunk/rosapps/packmgr/lib/cz.rc 2005-05-16 10:53:46 UTC (rev
15332)
@@ -20,4 +20,6 @@
ERR_READY "Zvolili jste si instalaci %d balÝÞk·. Aby jste je
nainstalovali je t°eba abyste p°eÞetli a souhlasili s jejich licencemi.
\n\nChcete nadßle pokraÞovat ?"
END
+123 RCDATA "options.xml"
+
/* EOF */
_____
Modified: trunk/rosapps/packmgr/lib/en.rc
--- trunk/rosapps/packmgr/lib/en.rc 2005-05-16 10:30:13 UTC (rev
15331)
+++ trunk/rosapps/packmgr/lib/en.rc 2005-05-16 10:53:46 UTC (rev
15332)
@@ -20,4 +20,6 @@
ERR_READY "You choosen to install %d package(s). To install
them you have to read and agree with each of thier licences. \n\nDo you
want still want to ?"
END
+123 RCDATA "options.xml"
+
/* EOF */
_____
Modified: trunk/rosapps/packmgr/lib/es.rc
--- trunk/rosapps/packmgr/lib/es.rc 2005-05-16 10:30:13 UTC (rev
15331)
+++ trunk/rosapps/packmgr/lib/es.rc 2005-05-16 10:53:46 UTC (rev
15332)
@@ -20,4 +20,6 @@
ERR_READY "You choosen to install %d package(s). To install
them you have to read and agree with each of thier licences.\n\n Do you
want still want to ?"
END
+123 RCDATA "options.xml"
+
/* EOF */
_____
Modified: trunk/rosapps/packmgr/lib/log.cpp
--- trunk/rosapps/packmgr/lib/log.cpp 2005-05-16 10:30:13 UTC (rev
15331)
+++ trunk/rosapps/packmgr/lib/log.cpp 2005-05-16 10:53:46 UTC (rev
15332)
@@ -34,7 +34,7 @@
LogCreated = true;
//HTML Header
- fputs("
Logfile",
file);
+
fputs("Logfile\n", file);
// date and time
time_t now;
@@ -53,15 +53,19 @@
KERNEL_VERSION_MINOR,
KERNEL_VERSION_PATCH_LEVEL);
- fputs("ReactOS Package Manager - Log
File
\n", file);
- fputs("WARNING: This is still pre-alpha
software.
\n", file);
+ // write the head
+ fputs("ReactOS Package Manager - Log File
\n",
file);
+ //fputs("WARNING: This is still pre-alpha
software.
\n", file);
fputs("Date: ", file);
fputs(GTime, file);
fputs("
\n", file);
+ fputs("Version: ", file);
fputs(version, file);
fputs("
\n", file);
+
+ fputs("OS: ", file);
fputs(versionos, file);
fputs("
\n", file);
}
@@ -84,11 +88,11 @@
time_t now;
now = time(NULL);
- strftime(GTime,sizeof GTime,"%I:%M:%S %p
",localtime(&now));
+ strftime(GTime,sizeof GTime,"%I:%M:%S
%p",localtime(&now));
fputs("", file);
fputs(GTime, file);
- fputs("", file);
+ fputs(" ", file);
fputs(message, file);
fclose(file);
_____
Modified: trunk/rosapps/packmgr/lib/options.cpp
--- trunk/rosapps/packmgr/lib/options.cpp 2005-05-16 10:30:13 UTC
(rev 15331)
+++ trunk/rosapps/packmgr/lib/options.cpp 2005-05-16 10:53:46 UTC
(rev 15332)
@@ -14,7 +14,9 @@
#include "log.h"
#include "expat.h"
+#include
+
int PML_XmlDownload (pTree tree, const char* url, void* usrdata,
XML_StartElementHandler
start, XML_EndElementHandler end, XML_CharacterDataHandler text) ;
@@ -53,16 +55,39 @@
}
+ // ! ! ! F I X M E
! ! ! //
+/*
int CreateOptions (TREE* tree)
{
-// string source;
+ ofstream file ("options.xml");
-// ifstream file ("help.txt", ios_base::in);
- Log("* Creating options,xml");
+ Log("* Creating options.xml from Resources");
+ HRSRC hres = FindResource(GetModuleHandle(L"package"),
MAKEINTRESOURCE(123), RT_RCDATA);
+ if (!hres)
+ {
+ Log("! ERROR: Could not load it !");
+ return ERR_GENERIC;
+ }
+
+ MessageBox(0,(WCHAR*)LockResource(LoadResource(NULL, hres)), 0,
0); // is empty
+ //file << (WCHAR*)LockResource(LoadResource(NULL, hres));
+
return ERR_OK;
}
+*/
+char* PML_Download (pTree, const char* url, const char* server, const
char* filename);
+
+int CreateOptions (TREE* tree)
+{
+ Log("* Load options.xml from the Internet (Temporary Hack)");
+
+ CopyFileA( PML_Download(tree,
"http://svn.reactos.com/viewcvs/*checkout*/trunk/rosapps/packmgr/gui/opt
ions.xml", NULL, "options.xml"), "options.xml", TRUE);
+
+ return ERR_OK;
+}
+
int LoadOptions (TREE* tree)
{
int error;
_____
Modified: trunk/rosapps/packmgr/lib/package.rc
--- trunk/rosapps/packmgr/lib/package.rc 2005-05-16 10:30:13 UTC
(rev 15331)
+++ trunk/rosapps/packmgr/lib/package.rc 2005-05-16 10:53:46 UTC
(rev 15332)
@@ -11,6 +11,7 @@
/* Language specific */
#include "en.rc"
+#include "de.rc"
#include "cz.rc"
#include "es.rc"
--===============5436661252116257231==
Content-Type: text/html
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="attachment.html"
MIME-Version: 1.0
PGh0bWw+CjxoZWFkPgo8c3R5bGU+CjwhLS0KYm9keSB7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZm
ZiB9Ci5maWxlIHsgYm9yZGVyOjFweCBzb2xpZCAjZWVlZWVlOyBtYXJnaW4tdG9wOjFlbTsgbWFy
Z2luLWJvdHRvbToxZW0gfQoucGF0aG5hbWUgeyBmb250LWZhbWlseTptb25vc3BhY2U7IGZsb2F0
OnJpZ2h0IH0KLmZpbGVoZWFkZXIgeyBtYXJnaW4tYm90dG9tOi41ZW0gfQouZGlmZiB7IG1hcmdp
bjowIH0KLnRhc2tsaXN0IHsgcGFkZGluZzo0cHg7IGJvcmRlcjoxcHggZGFzaGVkICMwMDAwMDA7
IG1hcmdpbi10b3A6MWVtIH0KLnRhc2tsaXN0IHVsIHsgbWFyZ2luLXRvcDowOyBtYXJnaW4tYm90
dG9tOjAgfQp0ci5hbHQgeyBiYWNrZ3JvdW5kLWNvbG9yOiNlZWVlZWUgfQojYWRkZWQgeyBiYWNr
Z3JvdW5kLWNvbG9yOiNkZGZmZGQgfQojYWRkZWRjaGFycyB7IGJhY2tncm91bmQtY29sb3I6Izk5
ZmY5OTsgZm9udC13ZWlnaHQ6Ym9sZGVyIH0KdHIuYWx0ICNhZGRlZCB7IGJhY2tncm91bmQtY29s
b3I6I2NjZjdjYyB9CiNyZW1vdmVkIHsgYmFja2dyb3VuZC1jb2xvcjojZmZkZGRkIH0KI3JlbW92
ZWRjaGFycyB7IGJhY2tncm91bmQtY29sb3I6I2ZmOTk5OTsgZm9udC13ZWlnaHQ6Ym9sZGVyIH0K
dHIuYWx0ICNyZW1vdmVkIHsgYmFja2dyb3VuZC1jb2xvcjojZjdjY2NjIH0KI2luZm8geyBjb2xv
cjojODg4ODg4IH0KI2NvbnRleHQgeyBiYWNrZ3JvdW5kLWNvbG9yOiNlZWVlZWUgfQp0ZCB7cGFk
ZGluZy1sZWZ0Oi4zZW07IHBhZGRpbmctcmlnaHQ6LjNlbSB9CnRyLmhlYWQgeyBib3JkZXItYm90
dG9tLXdpZHRoOjFweDsgYm9yZGVyLWJvdHRvbS1zdHlsZTpzb2xpZCB9CnRyLmhlYWQgdGQgeyBw
YWRkaW5nOjA7IHBhZGRpbmctdG9wOi4yZW0gfQoudGFzayB7IGJhY2tncm91bmQtY29sb3I6I2Zm
ZmYwMCB9Ci5jb21tZW50IHsgcGFkZGluZzo0cHg7IGJvcmRlcjoxcHggZGFzaGVkICMwMDAwMDA7
IGJhY2tncm91bmQtY29sb3I6I2ZmZmZkZCB9Ci5lcnJvciB7IGNvbG9yOnJlZCB9CmhyIHsgYm9y
ZGVyLXdpZHRoOjBweDsgaGVpZ2h0OjJweDsgYmFja2dyb3VuZDpibGFjayB9Ci0tPgo8L3N0eWxl
Pgo8L2hlYWQ+Cjxib2R5Pgo8cHJlIGNsYXNzPSJjb21tZW50Ij5QYWNrYWdlTWFuYWdlcjogR2Vy
bWFuIFRyYW5zbGF0aW9uIGFuZCBDcmVhdGVPcHRpb25zKCk8L3ByZT48cHJlIGNsYXNzPSJkaWZm
IiBpZD0icmVtb3ZlZCI+RGVsZXRlZDogdHJ1bmsvcm9zYXBwcy9wYWNrbWdyL2NtZC1saW5lL29w
dGlvbnMueG1sCkRlbGV0ZWQ6IHRydW5rL3Jvc2FwcHMvcGFja21nci9ndWkvb3B0aW9ucy54bWwK
PC9wcmU+PHByZSBjbGFzcz0iZGlmZiIgaWQ9ImNvbnRleHQiPk1vZGlmaWVkOiB0cnVuay9yb3Nh
cHBzL3BhY2ttZ3IvZ3VpL3Jlcy9ibGFuay5pY28KTW9kaWZpZWQ6IHRydW5rL3Jvc2FwcHMvcGFj
a21nci9saWIvY3oucmMKTW9kaWZpZWQ6IHRydW5rL3Jvc2FwcHMvcGFja21nci9saWIvZW4ucmMK
TW9kaWZpZWQ6IHRydW5rL3Jvc2FwcHMvcGFja21nci9saWIvZXMucmMKTW9kaWZpZWQ6IHRydW5r
L3Jvc2FwcHMvcGFja21nci9saWIvbG9nLmNwcApNb2RpZmllZDogdHJ1bmsvcm9zYXBwcy9wYWNr
bWdyL2xpYi9vcHRpb25zLmNwcApNb2RpZmllZDogdHJ1bmsvcm9zYXBwcy9wYWNrbWdyL2xpYi9w
YWNrYWdlLnJjCjwvcHJlPjxociAvPjxkaXYgY2xhc3M9ImZpbGUiPgo8ZGl2IGNsYXNzPSJmaWxl
aGVhZGVyIj48YmlnPjxiPkRlbGV0ZWQ6IHRydW5rL3Jvc2FwcHMvcGFja21nci9jbWQtbGluZS9v
cHRpb25zLnhtbDwvYj48L2JpZz48L2Rpdj4KPHByZSBjbGFzcz0iZGlmZiI+PHNtYWxsIGlkPSJp
bmZvIj4tLS0gdHJ1bmsvcm9zYXBwcy9wYWNrbWdyL2NtZC1saW5lL29wdGlvbnMueG1sCTIwMDUt
MDUtMTYgMTA6MzA6MTMgVVRDIChyZXYgMTUzMzEpCisrKyB0cnVuay9yb3NhcHBzL3BhY2ttZ3Iv
Y21kLWxpbmUvb3B0aW9ucy54bWwJMjAwNS0wNS0xNiAxMDo1Mzo0NiBVVEMgKHJldiAxNTMzMikK
QEAgLTEsMyArMCwwIEBACjwvc21hbGw+PC9wcmU+PHByZSBjbGFzcz0iZGlmZiIgaWQ9InJlbW92
ZWQiPi0mbHQ7b3B0aW9ucyZndDsKLSAmbmJzcDsmbHQ7c291cmNlJmd0O2h0dHA6Ly9zdm4ucmVh
Y3Rvcy5jb20vdmlld2N2cy8qY2hlY2tvdXQqL3RydW5rL3Jvc2FwcHMvcGFja21nci90cmVlLyZs
dDsvc291cmNlJmd0OwotJmx0Oy9vcHRpb25zJmd0Owo8L3ByZT48cHJlIGNsYXNzPSJkaWZmIiBp
ZD0iY29udGV4dCI+XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCjwvcHJlPjwvZGl2Pgo8aHIg
Lz48ZGl2IGNsYXNzPSJmaWxlIj4KPGRpdiBjbGFzcz0iZmlsZWhlYWRlciI+PGJpZz48Yj5EZWxl
dGVkOiB0cnVuay9yb3NhcHBzL3BhY2ttZ3IvZ3VpL29wdGlvbnMueG1sPC9iPjwvYmlnPjwvZGl2
Pgo8cHJlIGNsYXNzPSJkaWZmIj48c21hbGwgaWQ9ImluZm8iPi0tLSB0cnVuay9yb3NhcHBzL3Bh
Y2ttZ3IvZ3VpL29wdGlvbnMueG1sCTIwMDUtMDUtMTYgMTA6MzA6MTMgVVRDIChyZXYgMTUzMzEp
CisrKyB0cnVuay9yb3NhcHBzL3BhY2ttZ3IvZ3VpL29wdGlvbnMueG1sCTIwMDUtMDUtMTYgMTA6
NTM6NDYgVVRDIChyZXYgMTUzMzIpCkBAIC0xLDMgKzAsMCBAQAo8L3NtYWxsPjwvcHJlPjxwcmUg
Y2xhc3M9ImRpZmYiIGlkPSJyZW1vdmVkIj4tJmx0O29wdGlvbnMmZ3Q7Ci0gJm5ic3A7Jmx0O3Nv
dXJjZSZndDtodHRwOi8vc3ZuLnJlYWN0b3MuY29tL3ZpZXdjdnMvKmNoZWNrb3V0Ki90cnVuay9y
b3NhcHBzL3BhY2ttZ3IvdHJlZS8mbHQ7L3NvdXJjZSZndDsKLSZsdDsvb3B0aW9ucyZndDsKPC9w
cmU+PHByZSBjbGFzcz0iZGlmZiIgaWQ9ImNvbnRleHQiPlwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQo8L3ByZT48L2Rpdj4KPGhyIC8+PGRpdiBjbGFzcz0iZmlsZSI+CjxkaXYgY2xhc3M9ImZp
bGVoZWFkZXIiPjxiaWc+PGI+TW9kaWZpZWQ6IHRydW5rL3Jvc2FwcHMvcGFja21nci9ndWkvcmVz
L2JsYW5rLmljbzwvYj48L2JpZz48L2Rpdj4KPHByZSBjbGFzcz0iZGlmZiI+PHNtYWxsIGlkPSJp
bmZvIj48L3NtYWxsPjwvcHJlPjxwcmUgY2xhc3M9ImRpZmYiIGlkPSJjb250ZXh0Ij4oQmluYXJ5
IGZpbGVzIGRpZmZlcikKPC9wcmU+PC9kaXY+CjxociAvPjxkaXYgY2xhc3M9ImZpbGUiPgo8ZGl2
IGNsYXNzPSJmaWxlaGVhZGVyIj48YmlnPjxiPk1vZGlmaWVkOiB0cnVuay9yb3NhcHBzL3BhY2tt
Z3IvbGliL2N6LnJjPC9iPjwvYmlnPjwvZGl2Pgo8cHJlIGNsYXNzPSJkaWZmIj48c21hbGwgaWQ9
ImluZm8iPi0tLSB0cnVuay9yb3NhcHBzL3BhY2ttZ3IvbGliL2N6LnJjCTIwMDUtMDUtMTYgMTA6
MzA6MTMgVVRDIChyZXYgMTUzMzEpCisrKyB0cnVuay9yb3NhcHBzL3BhY2ttZ3IvbGliL2N6LnJj
CTIwMDUtMDUtMTYgMTA6NTM6NDYgVVRDIChyZXYgMTUzMzIpCkBAIC0yMCw0ICsyMCw2IEBACjwv
c21hbGw+PC9wcmU+PHByZSBjbGFzcz0iZGlmZiIgaWQ9ImNvbnRleHQiPiAmbmJzcDsgRVJSX1JF
QURZCSAmbmJzcDsgJnF1b3Q7WnZvbGlsaSBqc3RlIHNpIGluc3RhbGFjaSAlZCBiYWwmIzIyMTsm
IzIyMjtrJiMxODM7LiBBYnkganN0ZSBqZSBuYWluc3RhbG92YWxpIGplIHQmIzE3NjtlYmEgYWJ5
c3RlIHAmIzE3NjtlJiMyMjI7ZXRsaSBhIHNvdWhsYXNpbGkgcyBqZWppY2ggbGljZW5jZW1pLiBc
blxuQ2hjZXRlIG5hZCYjMjIzO2xlIHBva3JhJiMyMjI7b3ZhdCA/JnF1b3Q7CiBFTkQKIAo8L3By
ZT48cHJlIGNsYXNzPSJkaWZmIiBpZD0iYWRkZWQiPisxMjMgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IFJDREFUQSAJJnF1b3Q7b3B0aW9ucy54bWwmcXVv
dDsKKwo8L3ByZT48cHJlIGNsYXNzPSJkaWZmIiBpZD0iY29udGV4dCI+IC8qIEVPRiAqLwo8L3By
ZT48L2Rpdj4KPGhyIC8+PGRpdiBjbGFzcz0iZmlsZSI+CjxkaXYgY2xhc3M9ImZpbGVoZWFkZXIi
PjxiaWc+PGI+TW9kaWZpZWQ6IHRydW5rL3Jvc2FwcHMvcGFja21nci9saWIvZW4ucmM8L2I+PC9i
aWc+PC9kaXY+CjxwcmUgY2xhc3M9ImRpZmYiPjxzbWFsbCBpZD0iaW5mbyI+LS0tIHRydW5rL3Jv
c2FwcHMvcGFja21nci9saWIvZW4ucmMJMjAwNS0wNS0xNiAxMDozMDoxMyBVVEMgKHJldiAxNTMz
MSkKKysrIHRydW5rL3Jvc2FwcHMvcGFja21nci9saWIvZW4ucmMJMjAwNS0wNS0xNiAxMDo1Mzo0
NiBVVEMgKHJldiAxNTMzMikKQEAgLTIwLDQgKzIwLDYgQEAKPC9zbWFsbD48L3ByZT48cHJlIGNs
YXNzPSJkaWZmIiBpZD0iY29udGV4dCI+ICZuYnNwOyBFUlJfUkVBRFkJICZuYnNwOyAmcXVvdDtZ
b3UgY2hvb3NlbiB0byBpbnN0YWxsICVkIHBhY2thZ2UocykuIFRvIGluc3RhbGwgdGhlbSB5b3Ug
aGF2ZSB0byByZWFkIGFuZCBhZ3JlZSB3aXRoIGVhY2ggb2YgdGhpZXIgbGljZW5jZXMuIFxuXG5E
byB5b3Ugd2FudCBzdGlsbCB3YW50IHRvID8mcXVvdDsKIEVORAogCjwvcHJlPjxwcmUgY2xhc3M9
ImRpZmYiIGlkPSJhZGRlZCI+KzEyMyBSQ0RBVEEJICZuYnNwOyAmcXVvdDtvcHRpb25zLnhtbCZx
dW90OworCjwvcHJlPjxwcmUgY2xhc3M9ImRpZmYiIGlkPSJjb250ZXh0Ij4gLyogRU9GICovCjwv
cHJlPjwvZGl2Pgo8aHIgLz48ZGl2IGNsYXNzPSJmaWxlIj4KPGRpdiBjbGFzcz0iZmlsZWhlYWRl
ciI+PGJpZz48Yj5Nb2RpZmllZDogdHJ1bmsvcm9zYXBwcy9wYWNrbWdyL2xpYi9lcy5yYzwvYj48
L2JpZz48L2Rpdj4KPHByZSBjbGFzcz0iZGlmZiI+PHNtYWxsIGlkPSJpbmZvIj4tLS0gdHJ1bmsv
cm9zYXBwcy9wYWNrbWdyL2xpYi9lcy5yYwkyMDA1LTA1LTE2IDEwOjMwOjEzIFVUQyAocmV2IDE1
MzMxKQorKysgdHJ1bmsvcm9zYXBwcy9wYWNrbWdyL2xpYi9lcy5yYwkyMDA1LTA1LTE2IDEwOjUz
OjQ2IFVUQyAocmV2IDE1MzMyKQpAQCAtMjAsNCArMjAsNiBAQAo8L3NtYWxsPjwvcHJlPjxwcmUg
Y2xhc3M9ImRpZmYiIGlkPSJjb250ZXh0Ij4gJm5ic3A7IEVSUl9SRUFEWQkgJm5ic3A7ICZxdW90
O1lvdSBjaG9vc2VuIHRvIGluc3RhbGwgJWQgcGFja2FnZShzKS4gVG8gaW5zdGFsbCB0aGVtIHlv
dSBoYXZlIHRvIHJlYWQgYW5kIGFncmVlIHdpdGggZWFjaCBvZiB0aGllciBsaWNlbmNlcy5cblxu
IERvIHlvdSB3YW50IHN0aWxsIHdhbnQgdG8gPyZxdW90OwogRU5ECiAKPC9wcmU+PHByZSBjbGFz
cz0iZGlmZiIgaWQ9ImFkZGVkIj4rMTIzICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyBSQ0RBVEEgCSZxdW90O29wdGlvbnMueG1sJnF1b3Q7CisKPC9wcmU+
PHByZSBjbGFzcz0iZGlmZiIgaWQ9ImNvbnRleHQiPiAvKiBFT0YgKi8KPC9wcmU+PC9kaXY+Cjxo
ciAvPjxkaXYgY2xhc3M9ImZpbGUiPgo8ZGl2IGNsYXNzPSJmaWxlaGVhZGVyIj48YmlnPjxiPk1v
ZGlmaWVkOiB0cnVuay9yb3NhcHBzL3BhY2ttZ3IvbGliL2xvZy5jcHA8L2I+PC9iaWc+PC9kaXY+
CjxwcmUgY2xhc3M9ImRpZmYiPjxzbWFsbCBpZD0iaW5mbyI+LS0tIHRydW5rL3Jvc2FwcHMvcGFj
a21nci9saWIvbG9nLmNwcAkyMDA1LTA1LTE2IDEwOjMwOjEzIFVUQyAocmV2IDE1MzMxKQorKysg
dHJ1bmsvcm9zYXBwcy9wYWNrbWdyL2xpYi9sb2cuY3BwCTIwMDUtMDUtMTYgMTA6NTM6NDYgVVRD
IChyZXYgMTUzMzIpCkBAIC0zNCw3ICszNCw3IEBACjwvc21hbGw+PC9wcmU+PHByZSBjbGFzcz0i
ZGlmZiIgaWQ9ImNvbnRleHQiPiAJCUxvZ0NyZWF0ZWQgPSB0cnVlOwogCiAJCS8vSFRNTCBIZWFk
ZXIKPC9wcmU+PHByZSBjbGFzcz0iZGlmZiIgaWQ9InJlbW92ZWQiPi0JCWZwdXRzKCZxdW90OyZs
dDtodG1sJmd0OyZsdDtoZWFkJmd0OyZsdDt0aXRsZSZndDtMb2dmaWxlJmx0Oy90aXRsZSZndDsm
bHQ7L2hlYWQmZ3Q7Jmx0O2JvZHkmZ3Q7JnF1b3Q7LCBmaWxlKTsKPC9wcmU+PHByZSBjbGFzcz0i
ZGlmZiIgaWQ9ImFkZGVkIj4rCQlmcHV0cygmcXVvdDsmbHQ7aHRtbCZndDsmbHQ7aGVhZCZndDsm
bHQ7dGl0bGUmZ3Q7TG9nZmlsZSZsdDsvdGl0bGUmZ3Q7Jmx0Oy9oZWFkJmd0OyZsdDtib2R5Jmd0
OzxzcGFuIGlkPSJhZGRlZGNoYXJzIj5cbjwvc3Bhbj4mcXVvdDssIGZpbGUpOwo8L3ByZT48cHJl
IGNsYXNzPSJkaWZmIiBpZD0iY29udGV4dCI+IAkJCiAJCS8vIGRhdGUgYW5kIHRpbWUKIAkJdGlt
ZV90IG5vdzsKQEAgLTUzLDE1ICs1MywxOSBAQAo8L3ByZT48cHJlIGNsYXNzPSJkaWZmIiBpZD0i
Y29udGV4dCI+IAkJCUtFUk5FTF9WRVJTSU9OX01JTk9SLAogCQkJS0VSTkVMX1ZFUlNJT05fUEFU
Q0hfTEVWRUwpOwogCjwvcHJlPjxwcmUgY2xhc3M9ImRpZmYiIGlkPSJyZW1vdmVkIj4tCQlmcHV0
cygmcXVvdDsmbHQ7aDImZ3Q7UmVhY3RPUyBQYWNrYWdlIE1hbmFnZXIgLSBMb2cgRmlsZSZsdDsv
aDImZ3Q7Jmx0O2JyJmd0O1xuJnF1b3Q7LCBmaWxlKTsKLQkJPHNwYW4gaWQ9InJlbW92ZWRjaGFy
cyI+ZnB1dHMoJnF1b3Q7V0FSTklORzogVGhpcyBpcyBzdGlsbCBwcmUtYWxwaGEgc29mdHdhcmUu
Jmx0O2JyJmd0O1xuJnF1b3Q7LCBmaWxlKTs8L3NwYW4+CjwvcHJlPjxwcmUgY2xhc3M9ImRpZmYi
IGlkPSJhZGRlZCI+KwkJPHNwYW4gaWQ9ImFkZGVkY2hhcnMiPi8vIHdyaXRlIHRoZSBoZWFkPC9z
cGFuPgorCQlmcHV0cygmcXVvdDsmbHQ7aDImZ3Q7UmVhY3RPUyBQYWNrYWdlIE1hbmFnZXIgLSBM
b2cgRmlsZSZsdDsvaDImZ3Q7XG4mcXVvdDssIGZpbGUpOworCQkvL2ZwdXRzKCZxdW90O1dBUk5J
Tkc6IFRoaXMgaXMgc3RpbGwgcHJlLWFscGhhIHNvZnR3YXJlLiZsdDticiZndDtcbiZxdW90Oywg
ZmlsZSk7CjwvcHJlPjxwcmUgY2xhc3M9ImRpZmYiIGlkPSJjb250ZXh0Ij4gCiAJCWZwdXRzKCZx
dW90O0RhdGU6ICZxdW90OywgZmlsZSk7IAogCQlmcHV0cyhHVGltZSwgZmlsZSk7CiAJCWZwdXRz
KCZxdW90OyZsdDticiZndDtcbiZxdW90OywgZmlsZSk7CiAKPC9wcmU+PHByZSBjbGFzcz0iZGlm
ZiIgaWQ9ImFkZGVkIj4rCQlmcHV0cygmcXVvdDtWZXJzaW9uOiAmcXVvdDssIGZpbGUpOwo8L3By
ZT48cHJlIGNsYXNzPSJkaWZmIiBpZD0iY29udGV4dCI+IAkJZnB1dHModmVyc2lvbiwgZmlsZSk7
IAogCQlmcHV0cygmcXVvdDsmbHQ7YnImZ3Q7XG4mcXVvdDssIGZpbGUpOwo8L3ByZT48cHJlIGNs
YXNzPSJkaWZmIiBpZD0iYWRkZWQiPisKKwkJZnB1dHMoJnF1b3Q7T1M6ICZxdW90OywgZmlsZSk7
CjwvcHJlPjxwcmUgY2xhc3M9ImRpZmYiIGlkPSJjb250ZXh0Ij4gCQlmcHV0cyh2ZXJzaW9ub3Ms
IGZpbGUpOyAKIAkJZnB1dHMoJnF1b3Q7Jmx0O2JyJmd0O1xuJnF1b3Q7LCBmaWxlKTsKIAl9CkBA
IC04NCwxMSArODgsMTEgQEAKPC9wcmU+PHByZSBjbGFzcz0iZGlmZiIgaWQ9ImNvbnRleHQiPiAK
IAkJdGltZV90IG5vdzsKIAkJbm93ID0gdGltZShOVUxMKTsKPC9wcmU+PHByZSBjbGFzcz0iZGlm
ZiIgaWQ9InJlbW92ZWQiPi0JCXN0cmZ0aW1lKEdUaW1lLHNpemVvZiBHVGltZSwmcXVvdDslSTol
TTolUyAlcDxzcGFuIGlkPSJyZW1vdmVkY2hhcnMiPiAmbmJzcDs8L3NwYW4+JnF1b3Q7LGxvY2Fs
dGltZSgmYW1wO25vdykpOwo8L3ByZT48cHJlIGNsYXNzPSJkaWZmIiBpZD0iYWRkZWQiPisJCXN0
cmZ0aW1lKEdUaW1lLHNpemVvZiBHVGltZSwmcXVvdDslSTolTTolUyAlcCZxdW90Oyxsb2NhbHRp
bWUoJmFtcDtub3cpKTsKPC9wcmU+PHByZSBjbGFzcz0iZGlmZiIgaWQ9ImNvbnRleHQiPiAKIAkJ
ZnB1dHMoJnF1b3Q7Jmx0O2ImZ3Q7JnF1b3Q7LCBmaWxlKTsKIAkJZnB1dHMoR1RpbWUsIGZpbGUp
Owo8L3ByZT48cHJlIGNsYXNzPSJkaWZmIiBpZD0icmVtb3ZlZCI+LQkJZnB1dHMoJnF1b3Q7Jmx0
Oy9iJmd0OyZxdW90OywgZmlsZSk7CjwvcHJlPjxwcmUgY2xhc3M9ImRpZmYiIGlkPSJhZGRlZCI+
KwkJZnB1dHMoJnF1b3Q7Jmx0Oy9iJmd0OzxzcGFuIGlkPSJhZGRlZGNoYXJzIj4gPC9zcGFuPiZx
dW90OywgZmlsZSk7CjwvcHJlPjxwcmUgY2xhc3M9ImRpZmYiIGlkPSJjb250ZXh0Ij4gCiAJCWZw
dXRzKG1lc3NhZ2UsIGZpbGUpOwogCQlmY2xvc2UoZmlsZSk7CjwvcHJlPjwvZGl2Pgo8aHIgLz48
ZGl2IGNsYXNzPSJmaWxlIj4KPGRpdiBjbGFzcz0iZmlsZWhlYWRlciI+PGJpZz48Yj5Nb2RpZmll
ZDogdHJ1bmsvcm9zYXBwcy9wYWNrbWdyL2xpYi9vcHRpb25zLmNwcDwvYj48L2JpZz48L2Rpdj4K
PHByZSBjbGFzcz0iZGlmZiI+PHNtYWxsIGlkPSJpbmZvIj4tLS0gdHJ1bmsvcm9zYXBwcy9wYWNr
bWdyL2xpYi9vcHRpb25zLmNwcAkyMDA1LTA1LTE2IDEwOjMwOjEzIFVUQyAocmV2IDE1MzMxKQor
KysgdHJ1bmsvcm9zYXBwcy9wYWNrbWdyL2xpYi9vcHRpb25zLmNwcAkyMDA1LTA1LTE2IDEwOjUz
OjQ2IFVUQyAocmV2IDE1MzMyKQpAQCAtMTQsNyArMTQsOSBAQAo8L3NtYWxsPjwvcHJlPjxwcmUg
Y2xhc3M9ImRpZmYiIGlkPSJjb250ZXh0Ij4gI2luY2x1ZGUgJnF1b3Q7bG9nLmgmcXVvdDsKICNp
bmNsdWRlICZxdW90O2V4cGF0LmgmcXVvdDsKIAo8L3ByZT48cHJlIGNsYXNzPSJkaWZmIiBpZD0i
YWRkZWQiPisjaW5jbHVkZSAmbHQ7ZnN0cmVhbSZndDsKPC9wcmU+PHByZSBjbGFzcz0iZGlmZiIg
aWQ9ImNvbnRleHQiPiAKPC9wcmU+PHByZSBjbGFzcz0iZGlmZiIgaWQ9ImFkZGVkIj4rCjwvcHJl
PjxwcmUgY2xhc3M9ImRpZmYiIGlkPSJjb250ZXh0Ij4gaW50IFBNTF9YbWxEb3dubG9hZCAocFRy
ZWUgdHJlZSwgY29uc3QgY2hhciogdXJsLCB2b2lkKiB1c3JkYXRhLAogCQkJCQkJIFhNTF9TdGFy
dEVsZW1lbnRIYW5kbGVyIHN0YXJ0LCBYTUxfRW5kRWxlbWVudEhhbmRsZXIgZW5kLCBYTUxfQ2hh
cmFjdGVyRGF0YUhhbmRsZXIgdGV4dCkgOwogCkBAIC01MywxNiArNTUsMzkgQEAKPC9wcmU+PHBy
ZSBjbGFzcz0iZGlmZiIgaWQ9ImNvbnRleHQiPiB9CiAKIAo8L3ByZT48cHJlIGNsYXNzPSJkaWZm
IiBpZD0iYWRkZWQiPisJLy8gIQkhCSEJRglJCVgJTQlFCSEJIQkhIC8vCisvKgo8L3ByZT48cHJl
IGNsYXNzPSJkaWZmIiBpZD0iY29udGV4dCI+IGludCBDcmVhdGVPcHRpb25zIChUUkVFKiB0cmVl
KQogewo8L3ByZT48cHJlIGNsYXNzPSJkaWZmIiBpZD0icmVtb3ZlZCI+LTxzcGFuIGlkPSJyZW1v
dmVkY2hhcnMiPi8vCXN0cmluZyBzb3VyY2U8L3NwYW4+Owo8L3ByZT48cHJlIGNsYXNzPSJkaWZm
IiBpZD0iYWRkZWQiPis8c3BhbiBpZD0iYWRkZWRjaGFycyI+CW9mc3RyZWFtIGZpbGUgKCZxdW90
O29wdGlvbnMueG1sJnF1b3Q7KTwvc3Bhbj47CjwvcHJlPjxwcmUgY2xhc3M9ImRpZmYiIGlkPSJj
b250ZXh0Ij4gCjwvcHJlPjxwcmUgY2xhc3M9ImRpZmYiIGlkPSJyZW1vdmVkIj4tLy8JaWZzdHJl
YW0gZmlsZSAoJnF1b3Q7aGVscC50eHQmcXVvdDssIGlvc19iYXNlOjppbik7Ci0JTG9nKCZxdW90
OyogQ3JlYXRpbmcgb3B0aW9uczxzcGFuIGlkPSJyZW1vdmVkY2hhcnMiPix4bWw8L3NwYW4+JnF1
b3Q7KTsKPC9wcmU+PHByZSBjbGFzcz0iZGlmZiIgaWQ9ImFkZGVkIj4rCUxvZygmcXVvdDsqIENy
ZWF0aW5nIG9wdGlvbnM8c3BhbiBpZD0iYWRkZWRjaGFycyI+LnhtbCBmcm9tIFJlc291cmNlczwv
c3Bhbj4mcXVvdDspOwo8L3ByZT48cHJlIGNsYXNzPSJkaWZmIiBpZD0iY29udGV4dCI+IAo8L3By
ZT48cHJlIGNsYXNzPSJkaWZmIiBpZD0iYWRkZWQiPisJSFJTUkMgaHJlcyA9IEZpbmRSZXNvdXJj
ZShHZXRNb2R1bGVIYW5kbGUoTCZxdW90O3BhY2thZ2UmcXVvdDspLCBNQUtFSU5UUkVTT1VSQ0Uo
MTIzKSwgUlRfUkNEQVRBKTsKKwlpZiAoIWhyZXMpCisJeworCQlMb2coJnF1b3Q7ISBFUlJPUjog
Q291bGQgbm90IGxvYWQgaXQgISZxdW90Oyk7CisJCXJldHVybiBFUlJfR0VORVJJQzsKKwl9CisJ
CisJTWVzc2FnZUJveCgwLChXQ0hBUiopTG9ja1Jlc291cmNlKExvYWRSZXNvdXJjZShOVUxMLCBo
cmVzKSksIDAsIDApOwkvLyBpcyBlbXB0eQorCS8vZmlsZSAmbHQ7Jmx0OyAoV0NIQVIqKUxvY2tS
ZXNvdXJjZShMb2FkUmVzb3VyY2UoTlVMTCwgaHJlcykpOworCjwvcHJlPjxwcmUgY2xhc3M9ImRp
ZmYiIGlkPSJjb250ZXh0Ij4gCXJldHVybiBFUlJfT0s7CiB9CjwvcHJlPjxwcmUgY2xhc3M9ImRp
ZmYiIGlkPSJhZGRlZCI+KyovCjwvcHJlPjxwcmUgY2xhc3M9ImRpZmYiIGlkPSJjb250ZXh0Ij4g
CjwvcHJlPjxwcmUgY2xhc3M9ImRpZmYiIGlkPSJhZGRlZCI+K2NoYXIqIFBNTF9Eb3dubG9hZCAo
cFRyZWUsIGNvbnN0IGNoYXIqIHVybCwgY29uc3QgY2hhciogc2VydmVyLCBjb25zdCBjaGFyKiBm
aWxlbmFtZSk7CisKK2ludCBDcmVhdGVPcHRpb25zIChUUkVFKiB0cmVlKQoreworCUxvZygmcXVv
dDsqIExvYWQgb3B0aW9ucy54bWwgZnJvbSB0aGUgSW50ZXJuZXQgKFRlbXBvcmFyeSBIYWNrKSZx
dW90Oyk7CisKKwlDb3B5RmlsZUEoIFBNTF9Eb3dubG9hZCh0cmVlLCAmcXVvdDtodHRwOi8vc3Zu
LnJlYWN0b3MuY29tL3ZpZXdjdnMvKmNoZWNrb3V0Ki90cnVuay9yb3NhcHBzL3BhY2ttZ3IvZ3Vp
L29wdGlvbnMueG1sJnF1b3Q7LCBOVUxMLCAmcXVvdDtvcHRpb25zLnhtbCZxdW90OyksICZxdW90
O29wdGlvbnMueG1sJnF1b3Q7LCBUUlVFKTsKKwkKKwlyZXR1cm4gRVJSX09LOworfQorCjwvcHJl
PjxwcmUgY2xhc3M9ImRpZmYiIGlkPSJjb250ZXh0Ij4gaW50IExvYWRPcHRpb25zIChUUkVFKiB0
cmVlKQogewogCWludCBlcnJvcjsKPC9wcmU+PC9kaXY+CjxociAvPjxkaXYgY2xhc3M9ImZpbGUi
Pgo8ZGl2IGNsYXNzPSJmaWxlaGVhZGVyIj48YmlnPjxiPk1vZGlmaWVkOiB0cnVuay9yb3NhcHBz
L3BhY2ttZ3IvbGliL3BhY2thZ2UucmM8L2I+PC9iaWc+PC9kaXY+CjxwcmUgY2xhc3M9ImRpZmYi
PjxzbWFsbCBpZD0iaW5mbyI+LS0tIHRydW5rL3Jvc2FwcHMvcGFja21nci9saWIvcGFja2FnZS5y
YwkyMDA1LTA1LTE2IDEwOjMwOjEzIFVUQyAocmV2IDE1MzMxKQorKysgdHJ1bmsvcm9zYXBwcy9w
YWNrbWdyL2xpYi9wYWNrYWdlLnJjCTIwMDUtMDUtMTYgMTA6NTM6NDYgVVRDIChyZXYgMTUzMzIp
CkBAIC0xMSw2ICsxMSw3IEBACjwvc21hbGw+PC9wcmU+PHByZSBjbGFzcz0iZGlmZiIgaWQ9ImNv
bnRleHQiPiAvKiBMYW5ndWFnZSBzcGVjaWZpYyAqLwogCiAjaW5jbHVkZSAmcXVvdDtlbi5yYyZx
dW90Owo8L3ByZT48cHJlIGNsYXNzPSJkaWZmIiBpZD0iYWRkZWQiPisjaW5jbHVkZSAmcXVvdDtk
ZS5yYyZxdW90Owo8L3ByZT48cHJlIGNsYXNzPSJkaWZmIiBpZD0iY29udGV4dCI+ICNpbmNsdWRl
ICZxdW90O2N6LnJjJnF1b3Q7CiAjaW5jbHVkZSAmcXVvdDtlcy5yYyZxdW90OwogCjwvcHJlPgo8
L2Rpdj4KCjwvYm9keT4KPC9odG1sPgo=
--===============5436661252116257231==--