Re: chipsec-1.5.0 in EFI Shell
Vorname Nachname <[email protected]> Fri, 29 May 2020 17:16:23 +0200
| Newsgroups | dev.linux.lists.oe-chipsec |
|---|---|
| Message-ID | <CAPwg83jtW4huXZ3Cf12xh7Q-8zS5rjV-VOMpNF3-3kjZ_aG1DA@mail.gmail.com> |
--===============4646498992241321772== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hello, Many thanks for the quick answers. I followed the instructions from the chipsec-manual.pdf of chipsec-1.5.0. In my first test I used python version from chipsec-1.5.0 (chipsec_uefi_x64.zip) and UEFI-Shell from edk2 release 2019-03-08 ( https://github.com/tianocore/edk2/archive/edk2-stable201903.tar.gz). This includes a precompiled UEFI-Shell binary which I used (edk2-edk2-stable201903/ShellBinPkg/UefiShell/X64). With this setup I got this error: OSError: [Errno 22] Invalid argument: 'FS0:FS0:chipsec' Can you tell me your working setup (UEFI-Binary and pyhton version)? Best regards Philipp Am Fr., 29. Mai 2020 um 17:13 Uhr schrieb Vorname Nachname < [email protected]>: > Hello, > > Many thanks for the quick answers. I followed the instructions from the > chipsec-manual.pdf of chipsec-1.5.0. In my first test I used python versi= on > from chipsec-1.5.0 (chipsec_uefi_x64.zip) and UEFI-Shell from edk2 release > 2019-03-08 ( > https://github.com/tianocore/edk2/archive/edk2-stable201903.tar.gz). This > includes a precompiled UEFI-Shell binary which I used > (edk2-edk2-stable201903/ShellBinPkg/UefiShell/X64). With this setup I got > this error: > > OSError: [Errno 22] Invalid argument: 'FS0:FS0:chipsec' > > Can you tell me your working setup (UEFI-Binary and pyhton version)? > > Best regards > Philipp > > Am Fr., 29. Mai 2020 um 00:24 Uhr schrieb Holtsclaw, Brent < > brent.holtsclaw(a)intel.com>: > >> Did you follow the instructions from >> https://github.com/chipsec/chipsec/wiki/Creating-a-Bootable-USB-drive-wi= th-UEFI-Shell? >> They should have enough information to help out. It sounds like UEFI SH= ELL >> is not the problem in this case. Can you elaborate on the python that y= ou >> are using. There is a python.efi module within the chipsec_uefi zipfile. >> Python has been modified to include some chipsec specific commands with >> chipsec. There are steps to reproduce the build, however I'm not sure t= hat >> they work with the latest EDK and you may need to build from an older >> version. To my knowledge the code within chipsec is still compatible wi= th >> python2 at this point and you should be able to use 1.5.0. If you can r= un >> chipsec with the debug flag and let us know where it is failing that wou= ld >> help. >> >> Thanks, >> Brent >> >> -----Original Message----- >> From: Blibbet <[email protected]> >> Sent: Thursday, May 28, 2020 2:55 PM >> To: Vorname Nachname <[email protected]> >> Cc: chipsec(a)lists.01.org >> Subject: [chipsec] Re: chipsec-1.5.0 in EFI Shell >> >> What UEFI Shell are you using? "EFI Shell" may mean an ancient one. I >> think I recall some thread where someone was trying to get CHIPSEC runni= ng >> using an old (1.x?) OEM's shell (Apple?), and they had to provide their = own >> instead. There is an older and a newer UEFI Shell. >> >> You should also include info about other Python code you were able to >> successfully run in this EFI Shell. Maybe CHIPSEC is not the issue, the >> issue is your EFI Shell and Python. >> >> Instead of building your own UEFI Python, what happens when you use the >> CHIPSEC instructions and use their supplied python.efi? Wasn't there some >> special CHIPSEC-centric options needed to build Python with? If so, that >> should be clarified better in build docs. >> >> (Granted, it sucks having a security tool ship a pre-compiled Python >> binary in their source tree, built in an unknown manner, with no checksu= ms, >> and no reproducable builds, and have the tool rely on this for determini= ng >> platform security. But that's another issue...) >> >> Intel has abandoned CPython V2 for UEFI patch, and is instead is working >> on MicroPython for UEFI (which has some Python V3 support). Though Python >> V2 is deprecated and most of world has moved to Python V3, CHIPSEC team = is >> still using/bundling CPython V2, and hasn't switched over to >> using/relying-on/bundling MicroPython for UEFI. >> >> FWIW, I rarely see replies from the team for support questions on this >> mailing list nor the Google Groups lists. It I was looking for a reply, = I'd >> file a Github issue (and include more info), or use Twitter. >> >> You might want to clarify that you're trying to run this on an Intel >> system, not another ISA (like AMD or ARM or RISC-V), as that'd also not >> work. >> >> HTH, >> Lee >> >> On 5/28/20 7:36 AM, Vorname Nachname wrote: >> > Hello, >> > >> > I tried to run chipsec-1.5.0 in EFI Shell without operating system but >> > unfortunately it doesn't run in the EFI Shell. I ran these commands: >> > >> > Shell> fs0: >> > FS0:\> python -^# chipsec_main.py -m debugenabled >> > >> > This results in a traceback with the last file chipsec/defines.py >> > called function get_version(). >> > >> > OSError: [Errno 22] Invalud argument: 'FS0:FS0:chipsec' >> > >> > After that I compiled python 2.7.2 and python 2.7.10 from edk2 package >> > version edk2-stable201903. This is the last package version with >> > pyhton inside. With this version of pyhton I received another error >> > message with the last line: >> > >> > ImportError: No module named expat; use SimpleXMLTreeBuilder instead. >> > >> > What is the best way to start the latest version of chipsec in the EFI >> > Shell? What version of EFI Shell and pyhton is required? >> > >> > best wishes >> > Philipp >> > >> > >> > _______________________________________________ >> > chipsec mailing list -- chipsec(a)lists.01.org To unsubscribe send an >> > email to chipsec-leave(a)lists.01.org >> _______________________________________________ >> chipsec mailing list -- chipsec(a)lists.01.org To unsubscribe send an >> email to chipsec-leave(a)lists.01.org >> _______________________________________________ >> chipsec mailing list -- chipsec(a)lists.01.org >> To unsubscribe send an email to chipsec-leave(a)lists.01.org >> > --===============4646498992241321772== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.htm" PGRpdiBkaXI9Imx0ciI+SGVsbG8sPGJyPjxicj5NYW55IHRoYW5rcyBmb3IgdGhlIHF1aWNrIGFu c3dlcnMuIEkgZm9sbG93ZWQgdGhlIGluc3RydWN0aW9ucyBmcm9tIHRoZSBjaGlwc2VjLW1hbnVh bC5wZGYgb2YgY2hpcHNlYy0xLjUuMC4gSW4gbXkgZmlyc3QgdGVzdCBJIHVzZWQgcHl0aG9uIHZl cnNpb24gZnJvbSBjaGlwc2VjLTEuNS4wIChjaGlwc2VjX3VlZmlfeDY0LnppcCkgYW5kIFVFRkkt U2hlbGwgZnJvbSBlZGsyIHJlbGVhc2UgMjAxOS0wMy0wOCAoPGEgaHJlZj0iaHR0cHM6Ly9naXRo dWIuY29tL3RpYW5vY29yZS9lZGsyL2FyY2hpdmUvZWRrMi1zdGFibGUyMDE5MDMudGFyLmd6Ij5o dHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazIvYXJjaGl2ZS9lZGsyLXN0YWJsZTIwMTkw My50YXIuZ3o8L2E+KS4gVGhpcyBpbmNsdWRlcyBhIHByZWNvbXBpbGVkIFVFRkktU2hlbGwgYmlu YXJ5IHdoaWNoIEkgdXNlZCAoZWRrMi1lZGsyLXN0YWJsZTIwMTkwMy9TaGVsbEJpblBrZy9VZWZp U2hlbGwvWDY0KS4gV2l0aCB0aGlzIHNldHVwIEkgZ290IHRoaXMgZXJyb3I6PGJyPjxicj5PU0Vy cm9yOiBbRXJybm8gMjJdIEludmFsaWQgYXJndW1lbnQ6ICYjMzk7RlMwOkZTMDpjaGlwc2VjJiMz OTs8YnI+PGJyPkNhbiB5b3UgdGVsbCBtZSB5b3VyIHdvcmtpbmcgc2V0dXAgKFVFRkktQmluYXJ5 IGFuZCBweWh0b24gdmVyc2lvbik/PGJyPjxicj5CZXN0IHJlZ2FyZHM8YnI+UGhpbGlwcDxicj48 L2Rpdj48YnI+PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPjxkaXYgZGlyPSJsdHIiIGNsYXNzPSJn bWFpbF9hdHRyIj5BbSBGci4sIDI5LiBNYWkgMjAyMCB1bSAxNzoxM8KgVWhyIHNjaHJpZWIgVm9y bmFtZSBOYWNobmFtZSAmbHQ7PGEgaHJlZj0ibWFpbHRvOmxkZXZsemVyb0BnbWFpbC5jb20iPmxk ZXZsemVyb0BnbWFpbC5jb208L2E+Jmd0Ozo8YnI+PC9kaXY+PGJsb2NrcXVvdGUgY2xhc3M9Imdt YWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjBweCAwcHggMHB4IDAuOGV4O2JvcmRlci1sZWZ0OjFw eCBzb2xpZCByZ2IoMjA0LDIwNCwyMDQpO3BhZGRpbmctbGVmdDoxZXgiPjxkaXYgZGlyPSJsdHIi PkhlbGxvLDxicj48YnI+TWFueSB0aGFua3MgZm9yIHRoZSBxdWljayBhbnN3ZXJzLiBJIGZvbGxv d2VkIHRoZSBpbnN0cnVjdGlvbnMgZnJvbSB0aGUgY2hpcHNlYy1tYW51YWwucGRmIG9mIGNoaXBz ZWMtMS41LjAuIEluIG15IGZpcnN0IHRlc3QgSSB1c2VkIHB5dGhvbiB2ZXJzaW9uIGZyb20gY2hp cHNlYy0xLjUuMCAoY2hpcHNlY191ZWZpX3g2NC56aXApIGFuZCBVRUZJLVNoZWxsIGZyb20gZWRr MiByZWxlYXNlIDIwMTktMDMtMDggKDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90aWFub2Nv cmUvZWRrMi9hcmNoaXZlL2VkazItc3RhYmxlMjAxOTAzLnRhci5neiIgdGFyZ2V0PSJfYmxhbmsi Pmh0dHBzOi8vZ2l0aHViLmNvbS90aWFub2NvcmUvZWRrMi9hcmNoaXZlL2VkazItc3RhYmxlMjAx OTAzLnRhci5nejwvYT4pLiBUaGlzIGluY2x1ZGVzIGEgcHJlY29tcGlsZWQgVUVGSS1TaGVsbCBi aW5hcnkgd2hpY2ggSSB1c2VkIChlZGsyLWVkazItc3RhYmxlMjAxOTAzL1NoZWxsQmluUGtnL1Vl ZmlTaGVsbC9YNjQpLiBXaXRoIHRoaXMgc2V0dXAgSSBnb3QgdGhpcyBlcnJvcjo8YnI+PGJyPk9T RXJyb3I6IFtFcnJubyAyMl0gSW52YWxpZCBhcmd1bWVudDogJiMzOTtGUzA6RlMwOmNoaXBzZWMm IzM5Ozxicj48YnI+Q2FuIHlvdSB0ZWxsIG1lIHlvdXIgd29ya2luZyBzZXR1cCAoVUVGSS1CaW5h cnkgYW5kIHB5aHRvbiB2ZXJzaW9uKT88YnI+PGJyPkJlc3QgcmVnYXJkczxicj5QaGlsaXBwPC9k aXY+PGJyPjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj48ZGl2IGRpcj0ibHRyIiBjbGFzcz0iZ21h aWxfYXR0ciI+QW0gRnIuLCAyOS4gTWFpIDIwMjAgdW0gMDA6MjTCoFVociBzY2hyaWViIEhvbHRz Y2xhdywgQnJlbnQgJmx0OzxhIGhyZWY9Im1haWx0bzpicmVudC5ob2x0c2NsYXdAaW50ZWwuY29t IiB0YXJnZXQ9Il9ibGFuayI+YnJlbnQuaG9sdHNjbGF3QGludGVsLmNvbTwvYT4mZ3Q7Ojxicj48 L2Rpdj48YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MHB4IDBw eCAwcHggMC44ZXg7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHJnYigyMDQsMjA0LDIwNCk7cGFkZGlu Zy1sZWZ0OjFleCI+RGlkIHlvdSBmb2xsb3cgdGhlIGluc3RydWN0aW9ucyBmcm9tIDxhIGhyZWY9 Imh0dHBzOi8vZ2l0aHViLmNvbS9jaGlwc2VjL2NoaXBzZWMvd2lraS9DcmVhdGluZy1hLUJvb3Rh YmxlLVVTQi1kcml2ZS13aXRoLVVFRkktU2hlbGwiIHJlbD0ibm9yZWZlcnJlciIgdGFyZ2V0PSJf YmxhbmsiPmh0dHBzOi8vZ2l0aHViLmNvbS9jaGlwc2VjL2NoaXBzZWMvd2lraS9DcmVhdGluZy1h LUJvb3RhYmxlLVVTQi1kcml2ZS13aXRoLVVFRkktU2hlbGw8L2E+P8KgIFRoZXkgc2hvdWxkIGhh dmUgZW5vdWdoIGluZm9ybWF0aW9uIHRvIGhlbHAgb3V0LsKgIEl0IHNvdW5kcyBsaWtlIFVFRkkg U0hFTEwgaXMgbm90IHRoZSBwcm9ibGVtIGluIHRoaXMgY2FzZS7CoCBDYW4geW91IGVsYWJvcmF0 ZSBvbiB0aGUgcHl0aG9uIHRoYXQgeW91IGFyZSB1c2luZy7CoCBUaGVyZSBpcyBhIHB5dGhvbi5l ZmkgbW9kdWxlIHdpdGhpbiB0aGUgY2hpcHNlY191ZWZpIHppcGZpbGUuwqAgUHl0aG9uIGhhcyBi ZWVuIG1vZGlmaWVkIHRvIGluY2x1ZGUgc29tZSBjaGlwc2VjIHNwZWNpZmljIGNvbW1hbmRzIHdp dGggY2hpcHNlYy7CoCBUaGVyZSBhcmUgc3RlcHMgdG8gcmVwcm9kdWNlIHRoZSBidWlsZCwgaG93 ZXZlciBJJiMzOTttIG5vdCBzdXJlIHRoYXQgdGhleSB3b3JrIHdpdGggdGhlIGxhdGVzdCBFREsg YW5kIHlvdSBtYXkgbmVlZCB0byBidWlsZCBmcm9tIGFuIG9sZGVyIHZlcnNpb24uwqAgVG8gbXkg a25vd2xlZGdlIHRoZSBjb2RlIHdpdGhpbiBjaGlwc2VjIGlzIHN0aWxsIGNvbXBhdGlibGUgd2l0 aCBweXRob24yIGF0IHRoaXMgcG9pbnQgYW5kIHlvdSBzaG91bGQgYmUgYWJsZSB0byB1c2UgMS41 LjAuwqAgSWYgeW91IGNhbiBydW4gY2hpcHNlYyB3aXRoIHRoZSBkZWJ1ZyBmbGFnIGFuZCBsZXQg dXMga25vdyB3aGVyZSBpdCBpcyBmYWlsaW5nIHRoYXQgd291bGQgaGVscC48YnI+Cjxicj4KVGhh bmtzLDxicj4KQnJlbnQ8YnI+Cjxicj4KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS08YnI+CkZy b206IEJsaWJiZXQgJmx0OzxhIGhyZWY9Im1haWx0bzpibGliYmV0QGdtYWlsLmNvbSIgdGFyZ2V0 PSJfYmxhbmsiPmJsaWJiZXRAZ21haWwuY29tPC9hPiZndDsgPGJyPgpTZW50OiBUaHVyc2RheSwg TWF5IDI4LCAyMDIwIDI6NTUgUE08YnI+ClRvOiBWb3JuYW1lIE5hY2huYW1lICZsdDs8YSBocmVm PSJtYWlsdG86bGRldmx6ZXJvQGdtYWlsLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmxkZXZsemVyb0Bn bWFpbC5jb208L2E+Jmd0Ozxicj4KQ2M6IDxhIGhyZWY9Im1haWx0bzpjaGlwc2VjQGxpc3RzLjAx Lm9yZyIgdGFyZ2V0PSJfYmxhbmsiPmNoaXBzZWNAbGlzdHMuMDEub3JnPC9hPjxicj4KU3ViamVj dDogW2NoaXBzZWNdIFJlOiBjaGlwc2VjLTEuNS4wIGluIEVGSSBTaGVsbDxicj4KPGJyPgpXaGF0 IFVFRkkgU2hlbGwgYXJlIHlvdSB1c2luZz8gJnF1b3Q7RUZJIFNoZWxsJnF1b3Q7IG1heSBtZWFu IGFuIGFuY2llbnQgb25lLiBJIHRoaW5rIEkgcmVjYWxsIHNvbWUgdGhyZWFkIHdoZXJlIHNvbWVv bmUgd2FzIHRyeWluZyB0byBnZXQgQ0hJUFNFQyBydW5uaW5nIHVzaW5nIGFuIG9sZCAoMS54Pykg T0VNJiMzOTtzIHNoZWxsIChBcHBsZT8pLCBhbmQgdGhleSBoYWQgdG8gcHJvdmlkZSB0aGVpciBv d24gaW5zdGVhZC4gVGhlcmUgaXMgYW4gb2xkZXIgYW5kIGEgbmV3ZXIgVUVGSSBTaGVsbC48YnI+ Cjxicj4KWW91IHNob3VsZCBhbHNvIGluY2x1ZGUgaW5mbyBhYm91dCBvdGhlciBQeXRob24gY29k ZSB5b3Ugd2VyZSBhYmxlIHRvIHN1Y2Nlc3NmdWxseSBydW4gaW4gdGhpcyBFRkkgU2hlbGwuIE1h eWJlIENISVBTRUMgaXMgbm90IHRoZSBpc3N1ZSwgdGhlIGlzc3VlIGlzIHlvdXIgRUZJIFNoZWxs IGFuZCBQeXRob24uPGJyPgo8YnI+Ckluc3RlYWQgb2YgYnVpbGRpbmcgeW91ciBvd24gVUVGSSBQ eXRob24sIHdoYXQgaGFwcGVucyB3aGVuIHlvdSB1c2UgdGhlIENISVBTRUMgaW5zdHJ1Y3Rpb25z IGFuZCB1c2UgdGhlaXIgc3VwcGxpZWQgcHl0aG9uLmVmaT8gV2FzbiYjMzk7dCB0aGVyZSBzb21l IHNwZWNpYWwgQ0hJUFNFQy1jZW50cmljIG9wdGlvbnMgbmVlZGVkIHRvIGJ1aWxkIFB5dGhvbiB3 aXRoPyBJZiBzbywgdGhhdCBzaG91bGQgYmUgY2xhcmlmaWVkIGJldHRlciBpbiBidWlsZCBkb2Nz Ljxicj4KPGJyPgooR3JhbnRlZCwgaXQgc3Vja3MgaGF2aW5nIGEgc2VjdXJpdHkgdG9vbCBzaGlw IGEgcHJlLWNvbXBpbGVkIFB5dGhvbiBiaW5hcnkgaW4gdGhlaXIgc291cmNlIHRyZWUsIGJ1aWx0 IGluIGFuIHVua25vd24gbWFubmVyLCB3aXRoIG5vIGNoZWNrc3VtcywgYW5kIG5vIHJlcHJvZHVj YWJsZSBidWlsZHMsIGFuZCBoYXZlIHRoZSB0b29sIHJlbHkgb24gdGhpcyBmb3IgZGV0ZXJtaW5p bmcgcGxhdGZvcm0gc2VjdXJpdHkuIEJ1dCB0aGF0JiMzOTtzIGFub3RoZXIgaXNzdWUuLi4pPGJy Pgo8YnI+CkludGVsIGhhcyBhYmFuZG9uZWQgQ1B5dGhvbiBWMiBmb3IgVUVGSSBwYXRjaCwgYW5k IGlzIGluc3RlYWQgaXMgd29ya2luZyBvbiBNaWNyb1B5dGhvbiBmb3IgVUVGSSAod2hpY2ggaGFz IHNvbWUgUHl0aG9uIFYzIHN1cHBvcnQpLiBUaG91Z2ggUHl0aG9uIFYyIGlzIGRlcHJlY2F0ZWQg YW5kIG1vc3Qgb2Ygd29ybGQgaGFzIG1vdmVkIHRvIFB5dGhvbiBWMywgQ0hJUFNFQyB0ZWFtIGlz IHN0aWxsIHVzaW5nL2J1bmRsaW5nIENQeXRob24gVjIsIGFuZCBoYXNuJiMzOTt0IHN3aXRjaGVk IG92ZXIgdG8gdXNpbmcvcmVseWluZy1vbi9idW5kbGluZyBNaWNyb1B5dGhvbiBmb3IgVUVGSS48 YnI+Cjxicj4KRldJVywgSSByYXJlbHkgc2VlIHJlcGxpZXMgZnJvbSB0aGUgdGVhbSBmb3Igc3Vw cG9ydCBxdWVzdGlvbnMgb24gdGhpcyBtYWlsaW5nIGxpc3Qgbm9yIHRoZSBHb29nbGUgR3JvdXBz IGxpc3RzLiBJdCBJIHdhcyBsb29raW5nIGZvciBhIHJlcGx5LCBJJiMzOTtkIGZpbGUgYSBHaXRo dWIgaXNzdWUgKGFuZCBpbmNsdWRlIG1vcmUgaW5mbyksIG9yIHVzZSBUd2l0dGVyLjxicj4KPGJy PgpZb3UgbWlnaHQgd2FudCB0byBjbGFyaWZ5IHRoYXQgeW91JiMzOTtyZSB0cnlpbmcgdG8gcnVu IHRoaXMgb24gYW4gSW50ZWwgc3lzdGVtLCBub3QgYW5vdGhlciBJU0EgKGxpa2UgQU1EIG9yIEFS TSBvciBSSVNDLVYpLCBhcyB0aGF0JiMzOTtkIGFsc28gbm90IHdvcmsuPGJyPgo8YnI+CkhUSCw8 YnI+CkxlZTxicj4KPGJyPgpPbiA1LzI4LzIwIDc6MzYgQU0sIFZvcm5hbWUgTmFjaG5hbWUgd3Jv dGU6PGJyPgomZ3Q7IEhlbGxvLDxicj4KJmd0Ozxicj4KJmd0OyBJIHRyaWVkIHRvIHJ1biBjaGlw c2VjLTEuNS4wIGluIEVGSSBTaGVsbCB3aXRob3V0IG9wZXJhdGluZyBzeXN0ZW0gYnV0IDxicj4K Jmd0OyB1bmZvcnR1bmF0ZWx5IGl0IGRvZXNuJiMzOTt0IHJ1biBpbiB0aGUgRUZJIFNoZWxsLiBJ IHJhbiB0aGVzZSBjb21tYW5kczo8YnI+CiZndDs8YnI+CiZndDsgU2hlbGwmZ3Q7IGZzMDo8YnI+ CiZndDsgRlMwOlwmZ3Q7IHB5dGhvbiAtXiMgY2hpcHNlY19tYWluLnB5IC1tIGRlYnVnZW5hYmxl ZDxicj4KJmd0Ozxicj4KJmd0OyBUaGlzIHJlc3VsdHMgaW4gYSB0cmFjZWJhY2sgd2l0aCB0aGUg bGFzdCBmaWxlIGNoaXBzZWMvZGVmaW5lcy5weSA8YnI+CiZndDsgY2FsbGVkIGZ1bmN0aW9uIGdl dF92ZXJzaW9uKCkuPGJyPgomZ3Q7PGJyPgomZ3Q7IE9TRXJyb3I6IFtFcnJubyAyMl0gSW52YWx1 ZCBhcmd1bWVudDogJiMzOTtGUzA6RlMwOmNoaXBzZWMmIzM5Ozxicj4KJmd0Ozxicj4KJmd0OyBB ZnRlciB0aGF0IEkgY29tcGlsZWQgcHl0aG9uIDIuNy4yIGFuZCBweXRob24gMi43LjEwIGZyb20g ZWRrMiBwYWNrYWdlIDxicj4KJmd0OyB2ZXJzaW9uIGVkazItc3RhYmxlMjAxOTAzLiBUaGlzIGlz IHRoZSBsYXN0IHBhY2thZ2UgdmVyc2lvbiB3aXRoIDxicj4KJmd0OyBweWh0b24gaW5zaWRlLiBX aXRoIHRoaXMgdmVyc2lvbiBvZiBweWh0b24gSSByZWNlaXZlZCBhbm90aGVyIGVycm9yIDxicj4K Jmd0OyBtZXNzYWdlIHdpdGggdGhlIGxhc3QgbGluZTo8YnI+CiZndDs8YnI+CiZndDsgSW1wb3J0 RXJyb3I6IE5vIG1vZHVsZSBuYW1lZCBleHBhdDsgdXNlIFNpbXBsZVhNTFRyZWVCdWlsZGVyIGlu c3RlYWQuPGJyPgomZ3Q7PGJyPgomZ3Q7IFdoYXQgaXMgdGhlIGJlc3Qgd2F5IHRvIHN0YXJ0IHRo ZSBsYXRlc3QgdmVyc2lvbiBvZiBjaGlwc2VjIGluIHRoZSBFRkkgPGJyPgomZ3Q7IFNoZWxsPyBX aGF0IHZlcnNpb24gb2YgRUZJIFNoZWxsIGFuZCBweWh0b24gaXMgcmVxdWlyZWQ/PGJyPgomZ3Q7 PGJyPgomZ3Q7IGJlc3Qgd2lzaGVzPGJyPgomZ3Q7IFBoaWxpcHA8YnI+CiZndDs8YnI+CiZndDs8 YnI+CiZndDsgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX188 YnI+CiZndDsgY2hpcHNlYyBtYWlsaW5nIGxpc3QgLS0gPGEgaHJlZj0ibWFpbHRvOmNoaXBzZWNA bGlzdHMuMDEub3JnIiB0YXJnZXQ9Il9ibGFuayI+Y2hpcHNlY0BsaXN0cy4wMS5vcmc8L2E+IFRv IHVuc3Vic2NyaWJlIHNlbmQgYW4gPGJyPgomZ3Q7IGVtYWlsIHRvIDxhIGhyZWY9Im1haWx0bzpj aGlwc2VjLWxlYXZlQGxpc3RzLjAxLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPmNoaXBzZWMtbGVhdmVA bGlzdHMuMDEub3JnPC9hPjxicj4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX188YnI+CmNoaXBzZWMgbWFpbGluZyBsaXN0IC0tIDxhIGhyZWY9Im1haWx0bzpj aGlwc2VjQGxpc3RzLjAxLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPmNoaXBzZWNAbGlzdHMuMDEub3Jn PC9hPiBUbyB1bnN1YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRvIDxhIGhyZWY9Im1haWx0bzpjaGlw c2VjLWxlYXZlQGxpc3RzLjAxLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPmNoaXBzZWMtbGVhdmVAbGlz dHMuMDEub3JnPC9hPjxicj4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX188YnI+CmNoaXBzZWMgbWFpbGluZyBsaXN0IC0tIDxhIGhyZWY9Im1haWx0bzpjaGlw c2VjQGxpc3RzLjAxLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPmNoaXBzZWNAbGlzdHMuMDEub3JnPC9h Pjxicj4KVG8gdW5zdWJzY3JpYmUgc2VuZCBhbiBlbWFpbCB0byA8YSBocmVmPSJtYWlsdG86Y2hp cHNlYy1sZWF2ZUBsaXN0cy4wMS5vcmciIHRhcmdldD0iX2JsYW5rIj5jaGlwc2VjLWxlYXZlQGxp c3RzLjAxLm9yZzwvYT48YnI+CjwvYmxvY2txdW90ZT48L2Rpdj4KPC9ibG9ja3F1b3RlPjwvZGl2 Pgo= --===============4646498992241321772==--