Re: chipsec integrity check

cod <[email protected]> Wed, 29 Nov 2017 08:48:08 +0100
Newsgroups dev.linux.lists.oe-chipsec
Message-ID <CAJtESw5-CEgWNSe2HMX0SFAAcaGvt_TXa1v0j4QBpra29+u8Pg@mail.gmail.com>
--===============1944966328588497690==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable

If a "malware" is inside your bios, you need to enumerate files inside
every EFI firmware volumes checking hash files with a backup copy of
firmware (or a copy from vendor)

On Tue, Nov 28, 2017 at 12:07 AM, Healer64 <[email protected]> wrot=
e:

> I have been using chipsec as an integrity verification tool.  I know its
> not how it was intended to be used, but I'm not aware of any other tools
> that will do the kind of deep dive into BIOS and UEFI that chipsec does.
> In theory any malware should leave some type of traces that would show up
> as changes in chipsec results.  The problem is that ordinary use may also
> make some changes, and I am having a hard time determining what types of
> changes should be expected from ordinary use.  I would appreciate any
> advice.
>
> I have written some test scripts below:
>
> #!/bin/bash
> OUTPUT=3D/root/verify_certs.log
> chipsec_util uefi var-read db d719b2cb-3d3a-4596-a3bc-dad00e67656f db.bin
> >> db.ascii
> diff db.bin ./current/db.bin >> $OUTPUT
> hexdump db.bin | diff - ./current/db.hex >> $OUTPUT
> rm db.bin
> rm db.ascii
>
>
> #!/bin/bash
> OUTPUT=3D/root/verify_efivars.log
> chipsec_util uefi var-list
> for x in `cat dir2`
> do
> sha256sum $x >> shasums.1
> done
> cat shasums.1 | sed s/\\/root\\/efi_variables.dir\\///g |  awk '{ print
> $2 , $1 }' | sort > shasums.tmp
> rm shasums.1
> diff shasums shasums.tmp >> $OUTPUT
> diff efi_variables.lst ./current/efi_variables.lst >> $OUTPUT
>
>
> #!/bin/bash
> OUTPUT=3D/root/verify_chipsec
> cd tmp
> chipsec_util acpi list > acpi_list
> chipsec_util acpi table APIC > acpi_table_APIC
> chipsec_util acpi table BATB > acpi_table_BATB
> chipsec_util acpi table BGRT > acpi_table_BGRT
> chipsec_util acpi table CRAT > acpi_table_CRAT
> chipsec_util acpi table DSDT > acpi_table_DSDT
> chipsec_util acpi table FACP > acpi_table_FACP
> chipsec_util acpi table FPDT > acpi_table_FPDT
> chipsec_util acpi table HPET > acpi_table_HPET
> chipsec_util acpi table MCFG > acpi_table_MCFG
> chipsec_util acpi table MSDM > acpi_table_MSDM
> chipsec_util acpi table SBST > acpi_table_SBST
> chipsec_util acpi table SSDT > acpi_table_SSDT
> chipsec_util acpi table TCPA > acpi_table_TCPA
> chipsec_util acpi table TPM2 > acpi_table_TPM2
> chipsec_util acpi table UEFI > acpi_table_UEFI
> chipsec_util acpi table VFCT > acpi_table_VFCT
> chipsec_util acpi table XSDT > acpi_table_XSDT
> chipsec_util cmos dump > cmos_dump
> chipsec_util ec dump > ec_dump
> chipsec_util gdt > gdt
> chipsec_util io list > io_list
> chipsec_util iommu config GFXVTD > iommu_config_GFXVTD
> chipsec_util iommu config VTD > iommu_config_VTD
> chipsec_util iommu list > iommu_list
> chipsec_util iommu status GFXVTD > iommu_status_GFXVTD
> chipsec_util iommu status VTD > iommu_status_VTD
> chipsec_util mmcfg > mmcfg
> chipsec_util mmio dump DMIBAR > mmio_dump_DMIBAR
> chipsec_util mmio dump GFXVTBAR > mmio_dump_GFXVTBAR
> chipsec_util mmio dump GMADR > mmio_dump_GMADR
> chipsec_util mmio dump GTTMMADR > mmio_dump_GTTMMADR
> chipsec_util mmio dump HDABAR > mmio_dump_HDABAR
> chipsec_util mmio dump HDBAR > mmio_dump_HDBAR
> chipsec_util mmio dump MCHBAR > mmio_dump_MCHBAR
> chipsec_util mmio dump MMCFG > mmio_dump_MMCFG
> chipsec_util mmio dump PXPEPBAR > mmio_dump_PXPEPBAR
> chipsec_util mmio dump RCBA > mmio_dump_RCBA
> chipsec_util mmio dump RCBA_RTC > mmio_dump_RCBA_RTC
> chipsec_util mmio dump SPIBAR > mmio_dump_SPIBAR
> chipsec_util mmio dump VTBAR > mmio_dump_VTBAR
> chipsec_util mmio list > mmio_list
> chipsec_util pci dump > pci_dump
> chipsec_util pci enumerate > pci_enumerate
> chipsec_util pci xrom > pci_xrom
> chipsec_util platform > chipsec_platform
> chipsec_util spi info > spi_info
> chipsec_util ucode id > ucode_id
> for x in `cat testfiles`
> do
> echo -e "#####  $x  #####\\n" >> $OUTPUT
> diff $x /root/current/$x >> $OUTPUT
> grep -v elapsed $OUTPUT > $OUTPUT.log
> rm $OUTPUT
> done
>
>
> The output log files are here:
> https://pastebin.com/wV4wdPeW
> https://pastebin.com/nBa3BwLb
>
>
> Sent with ProtonMail <https://protonmail.com> Secure Email.
>
>
> _______________________________________________
> chipsec mailing list
> chipsec(a)lists.01.org
> https://lists.01.org/mailman/listinfo/chipsec
>
>

--===============1944966328588497690==
Content-Type: text/html
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="attachment.html"

PGRpdiBkaXI9Imx0ciI+SWYgYSAmcXVvdDttYWx3YXJlJnF1b3Q7IGlzIGluc2lkZSB5b3VyIGJp
b3MsIHlvdSBuZWVkIHRvIGVudW1lcmF0ZSBmaWxlcyBpbnNpZGUgZXZlcnkgRUZJIGZpcm13YXJl
IHZvbHVtZXMgY2hlY2tpbmcgaGFzaCBmaWxlcyB3aXRoIGEgYmFja3VwIGNvcHkgb2bCoCBmaXJt
d2FyZSAob3IgYSBjb3B5IGZyb20gdmVuZG9yKTxicj48L2Rpdj48ZGl2IGNsYXNzPSJnbWFpbF9l
eHRyYSI+PGJyPjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj5PbiBUdWUsIE5vdiAyOCwgMjAxNyBh
dCAxMjowNyBBTSwgSGVhbGVyNjQgPHNwYW4gZGlyPSJsdHIiPiZsdDs8YSBocmVmPSJtYWlsdG86
SGVhbGVyNjRAcHJvdG9ubWFpbC5jb20iIHRhcmdldD0iX2JsYW5rIj5IZWFsZXI2NEBwcm90b25t
YWlsLmNvbTwvYT4mZ3Q7PC9zcGFuPiB3cm90ZTo8YnI+PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWls
X3F1b3RlIiBzdHlsZT0ibWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxlZnQ6MXB4ICNjY2Mgc29s
aWQ7cGFkZGluZy1sZWZ0OjFleCI+PGRpdj5JIGhhdmUgYmVlbiB1c2luZyBjaGlwc2VjIGFzIGFu
IGludGVncml0eSB2ZXJpZmljYXRpb24gdG9vbC7CoCBJIGtub3cgaXRzIG5vdCBob3cgaXQgd2Fz
IGludGVuZGVkIHRvIGJlIHVzZWQsIGJ1dCBJJiMzOTttIG5vdCBhd2FyZSBvZiBhbnkgb3RoZXIg
dG9vbHMgdGhhdCB3aWxsIGRvIHRoZSBraW5kIG9mIGRlZXAgZGl2ZSBpbnRvIEJJT1MgYW5kIFVF
RkkgdGhhdCBjaGlwc2VjIGRvZXMuwqAgSW4gdGhlb3J5IGFueSBtYWx3YXJlIHNob3VsZCBsZWF2
ZSBzb21lIHR5cGUgb2YgdHJhY2VzIHRoYXQgd291bGQgc2hvdyB1cCBhcyBjaGFuZ2VzIGluIGNo
aXBzZWMgcmVzdWx0cy7CoCBUaGUgcHJvYmxlbSBpcyB0aGF0IG9yZGluYXJ5IHVzZSBtYXkgYWxz
byBtYWtlIHNvbWUgY2hhbmdlcywgYW5kIEkgYW0gaGF2aW5nIGEgaGFyZCB0aW1lIGRldGVybWlu
aW5nIHdoYXQgdHlwZXMgb2YgY2hhbmdlcyBzaG91bGQgYmUgZXhwZWN0ZWQgZnJvbSBvcmRpbmFy
eSB1c2UuwqAgSSB3b3VsZCBhcHByZWNpYXRlIGFueSBhZHZpY2UuPGJyPjwvZGl2PjxkaXY+PGJy
PjwvZGl2PjxkaXY+SSBoYXZlIHdyaXR0ZW4gc29tZSB0ZXN0IHNjcmlwdHMgYmVsb3c6PGJyPjwv
ZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+IyEvYmluL2Jhc2g8YnI+PC9kaXY+PGRpdj5PVVRQVVQ9
L3Jvb3QvdmVyaWZ5X2NlcnRzLmxvZzxicj48L2Rpdj48ZGl2PmNoaXBzZWNfdXRpbCB1ZWZpIHZh
ci1yZWFkIGRiIGQ3MTliMmNiLTNkM2EtNDU5Ni1hM2JjLTx3YnI+ZGFkMDBlNjc2NTZmIGRiLmJp
biAmZ3Q7Jmd0OyBkYi5hc2NpaTxicj48L2Rpdj48ZGl2PmRpZmYgZGIuYmluIC4vY3VycmVudC9k
Yi5iaW4gJmd0OyZndDsgJE9VVFBVVDxicj48L2Rpdj48ZGl2PmhleGR1bXAgZGIuYmluIHwgZGlm
ZiAtIC4vY3VycmVudC9kYi5oZXggJmd0OyZndDsgJE9VVFBVVDxicj48L2Rpdj48ZGl2PnJtIGRi
LmJpbjxicj48L2Rpdj48ZGl2PnJtIGRiLmFzY2lpPGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2Pjxk
aXY+PGJyPjwvZGl2PjxkaXY+IyEvYmluL2Jhc2g8YnI+PC9kaXY+PGRpdj5PVVRQVVQ9L3Jvb3Qv
dmVyaWZ5X2VmaXZhcnMuPHdicj5sb2c8YnI+PC9kaXY+PGRpdj5jaGlwc2VjX3V0aWwgdWVmaSB2
YXItbGlzdDxicj48L2Rpdj48ZGl2PmZvciB4IGluIGBjYXQgZGlyMmA8YnI+PC9kaXY+PGRpdj5k
bzxicj48L2Rpdj48ZGl2PnNoYTI1NnN1bSAkeCAmZ3Q7Jmd0OyBzaGFzdW1zLjE8YnI+PC9kaXY+
PGRpdj5kb25lPGJyPjwvZGl2PjxkaXY+Y2F0IHNoYXN1bXMuMSB8IHNlZCBzL1xcL3Jvb3RcXC9l
ZmlfdmFyaWFibGVzLmRpclw8d2JyPlwvLy9nIHzCoCBhd2sgJiMzOTt7IHByaW50ICQyICwgJDEg
fSYjMzk7IHwgc29ydCAmZ3Q7IHNoYXN1bXMudG1wPGJyPjwvZGl2PjxkaXY+cm0gc2hhc3Vtcy4x
PGJyPjwvZGl2PjxkaXY+ZGlmZiBzaGFzdW1zIHNoYXN1bXMudG1wICZndDsmZ3Q7ICRPVVRQVVQ8
YnI+PC9kaXY+PGRpdj5kaWZmIGVmaV92YXJpYWJsZXMubHN0IC4vY3VycmVudC9lZmlfdmFyaWFi
bGVzLmxzdCAmZ3Q7Jmd0OyAkT1VUUFVUPGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGJy
PjwvZGl2PjxkaXY+IyEvYmluL2Jhc2g8YnI+PC9kaXY+PGRpdj5PVVRQVVQ9L3Jvb3QvdmVyaWZ5
X2NoaXBzZWM8YnI+PC9kaXY+PGRpdj5jZCB0bXA8YnI+PC9kaXY+PGRpdj5jaGlwc2VjX3V0aWwg
YWNwaSBsaXN0ICZndDsgYWNwaV9saXN0PGJyPjwvZGl2PjxkaXY+Y2hpcHNlY191dGlsIGFjcGkg
dGFibGUgQVBJQyAmZ3Q7IGFjcGlfdGFibGVfQVBJQzxicj48L2Rpdj48ZGl2PmNoaXBzZWNfdXRp
bCBhY3BpIHRhYmxlIEJBVEIgJmd0OyBhY3BpX3RhYmxlX0JBVEI8YnI+PC9kaXY+PGRpdj5jaGlw
c2VjX3V0aWwgYWNwaSB0YWJsZSBCR1JUICZndDsgYWNwaV90YWJsZV9CR1JUPGJyPjwvZGl2Pjxk
aXY+Y2hpcHNlY191dGlsIGFjcGkgdGFibGUgQ1JBVCAmZ3Q7IGFjcGlfdGFibGVfQ1JBVDxicj48
L2Rpdj48ZGl2PmNoaXBzZWNfdXRpbCBhY3BpIHRhYmxlIERTRFQgJmd0OyBhY3BpX3RhYmxlX0RT
RFQ8YnI+PC9kaXY+PGRpdj5jaGlwc2VjX3V0aWwgYWNwaSB0YWJsZSBGQUNQICZndDsgYWNwaV90
YWJsZV9GQUNQPGJyPjwvZGl2PjxkaXY+Y2hpcHNlY191dGlsIGFjcGkgdGFibGUgRlBEVCAmZ3Q7
IGFjcGlfdGFibGVfRlBEVDxicj48L2Rpdj48ZGl2PmNoaXBzZWNfdXRpbCBhY3BpIHRhYmxlIEhQ
RVQgJmd0OyBhY3BpX3RhYmxlX0hQRVQ8YnI+PC9kaXY+PGRpdj5jaGlwc2VjX3V0aWwgYWNwaSB0
YWJsZSBNQ0ZHICZndDsgYWNwaV90YWJsZV9NQ0ZHPGJyPjwvZGl2PjxkaXY+Y2hpcHNlY191dGls
IGFjcGkgdGFibGUgTVNETSAmZ3Q7IGFjcGlfdGFibGVfTVNETTxicj48L2Rpdj48ZGl2PmNoaXBz
ZWNfdXRpbCBhY3BpIHRhYmxlIFNCU1QgJmd0OyBhY3BpX3RhYmxlX1NCU1Q8YnI+PC9kaXY+PGRp
dj5jaGlwc2VjX3V0aWwgYWNwaSB0YWJsZSBTU0RUICZndDsgYWNwaV90YWJsZV9TU0RUPGJyPjwv
ZGl2PjxkaXY+Y2hpcHNlY191dGlsIGFjcGkgdGFibGUgVENQQSAmZ3Q7IGFjcGlfdGFibGVfVENQ
QTxicj48L2Rpdj48ZGl2PmNoaXBzZWNfdXRpbCBhY3BpIHRhYmxlIFRQTTIgJmd0OyBhY3BpX3Rh
YmxlX1RQTTI8YnI+PC9kaXY+PGRpdj5jaGlwc2VjX3V0aWwgYWNwaSB0YWJsZSBVRUZJICZndDsg
YWNwaV90YWJsZV9VRUZJPGJyPjwvZGl2PjxkaXY+Y2hpcHNlY191dGlsIGFjcGkgdGFibGUgVkZD
VCAmZ3Q7IGFjcGlfdGFibGVfVkZDVDxicj48L2Rpdj48ZGl2PmNoaXBzZWNfdXRpbCBhY3BpIHRh
YmxlIFhTRFQgJmd0OyBhY3BpX3RhYmxlX1hTRFQ8YnI+PC9kaXY+PGRpdj5jaGlwc2VjX3V0aWwg
Y21vcyBkdW1wICZndDsgY21vc19kdW1wPGJyPjwvZGl2PjxkaXY+Y2hpcHNlY191dGlsIGVjIGR1
bXAgJmd0OyBlY19kdW1wPGJyPjwvZGl2PjxkaXY+Y2hpcHNlY191dGlsIGdkdCAmZ3Q7IGdkdDxi
cj48L2Rpdj48ZGl2PmNoaXBzZWNfdXRpbCBpbyBsaXN0ICZndDsgaW9fbGlzdDxicj48L2Rpdj48
ZGl2PmNoaXBzZWNfdXRpbCBpb21tdSBjb25maWcgR0ZYVlREICZndDsgaW9tbXVfY29uZmlnX0dG
WFZURDxicj48L2Rpdj48ZGl2PmNoaXBzZWNfdXRpbCBpb21tdSBjb25maWcgVlREICZndDsgaW9t
bXVfY29uZmlnX1ZURDxicj48L2Rpdj48ZGl2PmNoaXBzZWNfdXRpbCBpb21tdSBsaXN0ICZndDsg
aW9tbXVfbGlzdDxicj48L2Rpdj48ZGl2PmNoaXBzZWNfdXRpbCBpb21tdSBzdGF0dXMgR0ZYVlRE
ICZndDsgaW9tbXVfc3RhdHVzX0dGWFZURDxicj48L2Rpdj48ZGl2PmNoaXBzZWNfdXRpbCBpb21t
dSBzdGF0dXMgVlREICZndDsgaW9tbXVfc3RhdHVzX1ZURDxicj48L2Rpdj48ZGl2PmNoaXBzZWNf
dXRpbCBtbWNmZyAmZ3Q7IG1tY2ZnPGJyPjwvZGl2PjxkaXY+Y2hpcHNlY191dGlsIG1taW8gZHVt
cCBETUlCQVIgJmd0OyBtbWlvX2R1bXBfRE1JQkFSPGJyPjwvZGl2PjxkaXY+Y2hpcHNlY191dGls
IG1taW8gZHVtcCBHRlhWVEJBUiAmZ3Q7IG1taW9fZHVtcF9HRlhWVEJBUjxicj48L2Rpdj48ZGl2
PmNoaXBzZWNfdXRpbCBtbWlvIGR1bXAgR01BRFIgJmd0OyBtbWlvX2R1bXBfR01BRFI8YnI+PC9k
aXY+PGRpdj5jaGlwc2VjX3V0aWwgbW1pbyBkdW1wIEdUVE1NQURSICZndDsgbW1pb19kdW1wX0dU
VE1NQURSPGJyPjwvZGl2PjxkaXY+Y2hpcHNlY191dGlsIG1taW8gZHVtcCBIREFCQVIgJmd0OyBt
bWlvX2R1bXBfSERBQkFSPGJyPjwvZGl2PjxkaXY+Y2hpcHNlY191dGlsIG1taW8gZHVtcCBIREJB
UiAmZ3Q7IG1taW9fZHVtcF9IREJBUjxicj48L2Rpdj48ZGl2PmNoaXBzZWNfdXRpbCBtbWlvIGR1
bXAgTUNIQkFSICZndDsgbW1pb19kdW1wX01DSEJBUjxicj48L2Rpdj48ZGl2PmNoaXBzZWNfdXRp
bCBtbWlvIGR1bXAgTU1DRkcgJmd0OyBtbWlvX2R1bXBfTU1DRkc8YnI+PC9kaXY+PGRpdj5jaGlw
c2VjX3V0aWwgbW1pbyBkdW1wIFBYUEVQQkFSICZndDsgbW1pb19kdW1wX1BYUEVQQkFSPGJyPjwv
ZGl2PjxkaXY+Y2hpcHNlY191dGlsIG1taW8gZHVtcCBSQ0JBICZndDsgbW1pb19kdW1wX1JDQkE8
YnI+PC9kaXY+PGRpdj5jaGlwc2VjX3V0aWwgbW1pbyBkdW1wIFJDQkFfUlRDICZndDsgbW1pb19k
dW1wX1JDQkFfUlRDPGJyPjwvZGl2PjxkaXY+Y2hpcHNlY191dGlsIG1taW8gZHVtcCBTUElCQVIg
Jmd0OyBtbWlvX2R1bXBfU1BJQkFSPGJyPjwvZGl2PjxkaXY+Y2hpcHNlY191dGlsIG1taW8gZHVt
cCBWVEJBUiAmZ3Q7IG1taW9fZHVtcF9WVEJBUjxicj48L2Rpdj48ZGl2PmNoaXBzZWNfdXRpbCBt
bWlvIGxpc3QgJmd0OyBtbWlvX2xpc3Q8YnI+PC9kaXY+PGRpdj5jaGlwc2VjX3V0aWwgcGNpIGR1
bXAgJmd0OyBwY2lfZHVtcDxicj48L2Rpdj48ZGl2PmNoaXBzZWNfdXRpbCBwY2kgZW51bWVyYXRl
ICZndDsgcGNpX2VudW1lcmF0ZTxicj48L2Rpdj48ZGl2PmNoaXBzZWNfdXRpbCBwY2kgeHJvbSAm
Z3Q7IHBjaV94cm9tPGJyPjwvZGl2PjxkaXY+Y2hpcHNlY191dGlsIHBsYXRmb3JtICZndDsgY2hp
cHNlY19wbGF0Zm9ybTxicj48L2Rpdj48ZGl2PmNoaXBzZWNfdXRpbCBzcGkgaW5mbyAmZ3Q7IHNw
aV9pbmZvPGJyPjwvZGl2PjxkaXY+Y2hpcHNlY191dGlsIHVjb2RlIGlkICZndDsgdWNvZGVfaWQ8
YnI+PC9kaXY+PGRpdj5mb3IgeCBpbiBgY2F0IHRlc3RmaWxlc2A8YnI+PC9kaXY+PGRpdj5kbzxi
cj48L2Rpdj48ZGl2PmVjaG8gLWUgJnF1b3Q7IyMjIyPCoCAkeMKgICMjIyMjXFxuJnF1b3Q7ICZn
dDsmZ3Q7ICRPVVRQVVQ8YnI+PC9kaXY+PGRpdj5kaWZmICR4IC9yb290L2N1cnJlbnQvJHggJmd0
OyZndDsgJE9VVFBVVDxicj48L2Rpdj48ZGl2PmdyZXAgLXYgZWxhcHNlZCAkT1VUUFVUICZndDsg
JE9VVFBVVC5sb2c8YnI+PC9kaXY+PGRpdj5ybSAkT1VUUFVUPGJyPjwvZGl2PjxkaXY+ZG9uZTxi
cj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PlRoZSBvdXRwdXQgbG9n
IGZpbGVzIGFyZSBoZXJlOjxicj48L2Rpdj48ZGl2PjxhIGhyZWY9Imh0dHBzOi8vcGFzdGViaW4u
Y29tL3dWNHdkUGVXIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9wYXN0ZWJpbi5jb20vd1Y0d2RQ
ZVc8L2E+PGJyPjwvZGl2PjxkaXY+PGEgaHJlZj0iaHR0cHM6Ly9wYXN0ZWJpbi5jb20vbkJhM0J3
TGIiIHRhcmdldD0iX2JsYW5rIj5odHRwczovL3Bhc3RlYmluLmNvbS9uQmEzQndMYjwvYT48YnI+
PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdiBjbGFzcz0ibV8tNTY0MTM0NTEwMDA4MDE0MDE4OXBy
b3Rvbm1haWxfc2lnbmF0dXJlX2Jsb2NrIj48ZGl2IGNsYXNzPSJtXy01NjQxMzQ1MTAwMDgwMTQw
MTg5cHJvdG9ubWFpbF9zaWduYXR1cmVfYmxvY2stdXNlciBtXy01NjQxMzQ1MTAwMDgwMTQwMTg5
cHJvdG9ubWFpbF9zaWduYXR1cmVfYmxvY2stZW1wdHkiPjxicj48L2Rpdj48ZGl2IGNsYXNzPSJt
Xy01NjQxMzQ1MTAwMDgwMTQwMTg5cHJvdG9ubWFpbF9zaWduYXR1cmVfYmxvY2stcHJvdG9uIj5T
ZW50IHdpdGggPGEgaHJlZj0iaHR0cHM6Ly9wcm90b25tYWlsLmNvbSIgdGFyZ2V0PSJfYmxhbmsi
PlByb3Rvbk1haWw8L2E+IFNlY3VyZSBFbWFpbC48YnI+PC9kaXY+PC9kaXY+PGRpdj48YnI+PC9k
aXY+PGJyPl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fXzx3YnI+X19fX19fX19fX19fX19f
X188YnI+CmNoaXBzZWMgbWFpbGluZyBsaXN0PGJyPgo8YSBocmVmPSJtYWlsdG86Y2hpcHNlY0Bs
aXN0cy4wMS5vcmciPmNoaXBzZWNAbGlzdHMuMDEub3JnPC9hPjxicj4KPGEgaHJlZj0iaHR0cHM6
Ly9saXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9jaGlwc2VjIiByZWw9Im5vcmVmZXJyZXIi
IHRhcmdldD0iX2JsYW5rIj5odHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuLzx3YnI+bGlzdGlu
Zm8vY2hpcHNlYzwvYT48YnI+Cjxicj48L2Jsb2NrcXVvdGU+PC9kaXY+PGJyPjwvZGl2Pgo=

--===============1944966328588497690==--