From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============4527508327978809762==" MIME-Version: 1.0 From: Oza Oza Subject: Re: [SPDK] PCI hotplug and SPDK Date: Wed, 30 Aug 2017 20:40:34 +0530 Message-ID: In-Reply-To: 47464713-CCA7-4AD5-B6A6-5D556A590FC9@intel.com List-ID: To: spdk@lists.01.org --===============4527508327978809762== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable root(a)bcm958742k:~# lspci 0001:00:00.0 PCI bridge: Broadcom Corporation Device 0000 0001:01:00.0 Non-Volatile memory controller: Intel Corporation PCIe Data Center SSD (rev 01) 0008:00:00.0 PCI bridge: Broadcom Corporation Device 16f0 (rev 01) 0008:01:00.0 Ethernet controller: Broadcom Corporation Device 16f0 (rev 01) 0008:01:00.1 Ethernet controller: Broadcom Corporation Device 16f0 (rev 01) 0008:01:00.2 Ethernet controller: Broadcom Corporation Device 16f0 (rev 01) 0008:01:00.3 Ethernet controller: Broadcom Corporation Device 16f0 (rev 01) root(a)bcm958742k:~# /usr/share/spdk/scripts/setup.sh 0001:01:00.0 (8086 0953): nvme -> vfio-pci grep: /usr/share/spdk/scripts/../include/spdk/pci_ids.h: No such[ 1520.258498] pci 0008:00:00.0: PCI bridge to [bus 01] file or directory [ 1520.267436] pci 0008:00:00.0: bridge window [mem 0x10000000-0x104fffff 64bit pref] [ 1520.277225] pci 0000:00:00.0: ignoring class 0x020000 (doesn't match header type 01) >> it is looking to unbind on empty slot as well. [ 1520.285324] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring [ 1535.911738] Bad mode in Error handler detected on CPU7, code 0xbf000002 -- SError [ 1535.919460] Internal error: Oops - bad mode: 0 [#1] SMP [ 1535.924850] Modules linked in: [ 1535.928001] CPU: 7 PID: 2108 Comm: lighttpd Not tainted 4.12.0-01624-gbbd4086-dirty #97 [ 1535.936257] Hardware name: Stingray Combo SVK w/PCIe IOMMU (BCM958742K) (DT) [ 1535.943527] task: ffff80a1642ce000 task.stack: ffff80a162790000 [ 1535.949634] PC is at 0xffff8baadca0 [ 1535.953230] LR is at 0x40aca8 [ 1535.956290] pc : [<0000ffff8baadca0>] lr : [<000000000040aca8>] pstate: 80000000 [ 1535.963919] sp : 0000ffffca61a970 [ 1535.967337] x29: 0000ffffca61a970 x28: 0000000000000000 [ 1535.972816] x27: 00000000283a9a00 x26: 0000000000000000 [ 1535.978296] x25: 000000000042a3a8 x24: 000000000042a3a0 [ 1535.983775] x23: 0000000000429000 x22: 000000000042a2b8 [ 1535.989254] x21: 000000000042a000 x20: 0000000058edd444 [ 1535.994734] x19: 00000000283a9010 x18: 0000000000000014 [ 1536.000213] x17: 0000ffff8baada88 x16: 0000000000442c08 [ 1536.005693] x15: 00002162cc000000 x14: 000bcd3d80000000 [ 1536.011173] x13: 00000001f4000000 x12: 0000000000000017 [ 1536.016653] x11: 0000000000061bf7 x10: 0000000058edd444 [ 1536.022131] x9 : 001dcd6500000000 x8 : 0000000000000016 [ 1536.027611] x7 : 000000000000dfda x6 : 0000ffff8bdc5000 [ 1536.033090] x5 : 0000000000000008 x4 : 0000000000000000 [ 1536.038570] x3 : 00000000000003e8 x2 : 0000000000000401 [ 1536.044049] x1 : 00000000283bd050 x0 : 0000000000000000 [ 1536.049529] Process lighttpd (pid: 2108, stack limit =3D 0xffff80a162790000) Please find attached status script. Regards, Oza. *From:* SPDK [mailto:spdk-bounces(a)lists.01.org] *On Behalf Of *Harris, James R *Sent:* Tuesday, August 29, 2017 11:30 PM *To:* Storage Performance Development Kit *Subject:* Re: [SPDK] PCI hotplug and SPDK So to clarify, you have your system booted with no NVMe endpoint connected, and then when you run the SPDK setup.sh script, you see all of these kernel messages from trying to bind vfio to PCIe devices and system eventually crashes? If so, we need to determine what PCIe devices setup.sh is trying to bind to vfio. It should only be trying to bind NVMe devices but if there is no NVMe device connected then it shouldn=E2=80=99t be trying to bind anything. Can you send lspci =E2=80=93vvvx output from your system before running set= up.sh? Thanks, -Jim *From: *SPDK on behalf of Oza Oza < oza.oza(a)broadcom.com> *Reply-To: *Storage Performance Development Kit *Date: *Tuesday, August 29, 2017 at 9:45 AM *To: *Storage Performance Development Kit *Subject: *Re: [SPDK] PCI hotplug and SPDK In my opinion, this has nothing to do with platform. Though our platform is ARMv8. (but, I can not test on any other, because we don=E2=80=99t know how the ke= rnel driver is written) If kernel driver supports hotplug, which means they are allowing pci_create_root_bus irrespective of whether EP is plugged or not. In other words. Following APIs are never called. pci_stop_root_bus(bus); pci_remove_root_bus(bus); and in that case, if PCIe slots is empty, running SPDK resulting in stalls. (10-15 seconds) followed by crash. Regards, Oza. *From:* SPDK [mailto:spdk-bounces(a)lists.01.org] *On Behalf Of *Harris, James R *Sent:* Tuesday, August 29, 2017 6:20 PM *To:* Storage Performance Development Kit *Subject:* Re: [SPDK] PCI hotplug and SPDK Hi Oza, Do you see this issue only on your armv8 platform or do you also see it on amd64? -Jim *From: *SPDK on behalf of Oza Oza < oza.oza(a)broadcom.com> *Reply-To: *Storage Performance Development Kit *Date: *Tuesday, August 29, 2017 at 1:51 AM *To: *Storage Performance Development Kit *Subject: *Re: [SPDK] PCI hotplug and SPDK Sorry If I was unclear. I am not talking about hotplug feature of SPDK. =C3=98 PCI hotplug feature is implemented in kernel driver and working fin= e. =C3=98 But the moment I run SPDK and try to bind vfio driver it stalls completely. The reason is: kernel driver will not remove the root bus (when PCIe endpoint is not connected, during boot-time) So SPDK tries to bind driver thinking host bridge is there. Without PCI hotplug host bridge will not be there because of following API call in kernel driver. pci_stop_root_bus(bus); pci_remove_root_bus(bus); =C3=98 since now we allow host bridge creation (API: pci_create_root_bus) irrespective of EP is connected or not. And then if I run SPDK (with no Endpoint connected/Empty slot) I get stalls. Regards, Oza. *From:* SPDK [mailto:spdk-bounces(a)lists.01.org] *On Behalf Of *Chang, Cun= yin *Sent:* Tuesday, August 29, 2017 2:14 PM *To:* Storage Performance Development Kit *Subject:* Re: [SPDK] PCI hotplug and SPDK Hi Oza, Could you please provide some details steps to reproduce the issue? SPDK take in charge for hotplug only after you bind the device to uio or vfio driver, so for the new insert deivce, it will handled by kernel driver first. -Cunyin *From:* SPDK [mailto:spdk-bounces(a)lists.01.org ] *On Behalf Of *Oza Oza *Sent:* Tuesday, August 29, 2017 4:22 PM *To:* Storage Performance Development Kit *Subject:* [SPDK] PCI hotplug and SPDK Hi All, PCI hotplug support; requires creation of root bus and probe to go ahead with all PCIe configuration. Which means following APIs ae not called. pci_stop_root_bus(bus); pci_remove_root_bus(bus); And then If I run SPDK, It makes system crash with following info. Note: if the disk is connected then SPDK is fine. Otherwise it stalls the system with following crash. root(a)bcm958742k:~# echo 2048 > /proc/sys/vm/nr_hugepages; /usr/share/spdk/scripts/setup.sh grep: /usr/share/spdk/scripts/../include/spdk/pci_ids.h: No such[ 34.621325] pci 0008:00:00.0: PCI bridge to [bus 01] file or directory [ 34.640586] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring [ 50.267056] pci 0000:00:00.0: PCI bridge to [bus 01] [ 50.272337] pci 0001:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring [ 65.898762] pci 0001:00:00.0: PCI bridge to [bus 01] [ 65.904015] pci 0006:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring [ 81.530437] pci 0006:00:00.0: PCI bridge to [bus 01] [ 81.535680] pci 0007:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring [ 97.162103] pci 0007:00:00.0: PCI bridge to [bus 01] [ 97.167255] Bad mode in Error handler detected on CPU6, code 0xbf000002 -- SError [ 97.174974] Internal error: Oops - bad mode: 0 [#1] SMP [ 97.180364] Modules linked in: [ 97.183515] CPU: 6 PID: 2104 Comm: bash Not tainted 4.12.0-01560-gc83093d-dirty #89 [ 97.191413] Hardware name: Stingray Combo SVK w/PCIe IOMMU (BCM958742K) (DT) [ 97.198683] task: ffff80a163a40000 task.stack: ffff80a1612b4000 [ 97.204790] PC is at 0xffff7cbdfba8 [ 97.208387] LR is at 0xffff7cb8f288 [ 97.211983] pc : [<0000ffff7cbdfba8>] lr : [<0000ffff7cb8f288>] pstate: 20000000 [ 97.219612] sp : 0000fffffe564040 [ 97.223029] x29: 0000fffffe564040 x28: 000000001054ce60 [ 97.228509] x27: 0000000000000000 x26: 00000000004e2000 [ 97.233989] x25: 00000000004e5000 x24: 0000000000000002 [ 97.239468] x23: 0000ffff7cc63638 x22: 0000000000000002 [ 97.244947] x21: 0000ffff7cc67480 x20: 000000001054db10 [ 97.250427] x19: 0000000000000002 x18: 0000000000000000 [ 97.255906] x17: 00000000004daac8 x16: 0000000000000000 [ 97.261386] x15: 0000000000000096 x14: 0000000000000000 [ 97.266865] x13: 0000000000000000 x12: 0000000000000000 [ 97.272344] x11: 0000000000000020 x10: 0101010101010101 [ 97.277824] x9 : ffffff80ffffffc8 x8 : 0000000000000040 [ 97.283303] x7 : 0000000000000001 x6 : 0000ffff7cc669f0 [ 97.288782] x5 : 0000000000015551 x4 : 0000000000000888 [ 97.294261] x3 : 0000000000000000 x2 : 0000000000000002 [ 97.299741] x1 : 000000001054db10 x0 : 0000000000000002 [ 97.305220] Process bash (pid: 2104, stack limit =3D 0xffff80a1612b4000) [ 97.311960] ---[ end trace a1f48abe30820241 ]--- Regards, Oza. --===============4527508327978809762== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0 L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPjxtZXRhIG5hbWU9IkdlbmVyYXRvciIgY29udGVudD0iTWlj cm9zb2Z0IFdvcmQgMTQgKGZpbHRlcmVkIG1lZGl1bSkiPjxzdHlsZT48IS0tCi8qIEZvbnQgRGVm aW5pdGlvbnMgKi8KQGZvbnQtZmFjZQoJe2ZvbnQtZmFtaWx5OldpbmdkaW5nczsKCXBhbm9zZS0x OjUgMCAwIDAgMCAwIDAgMCAwIDA7fQpAZm9udC1mYWNlCgl7Zm9udC1mYW1pbHk6V2luZ2Rpbmdz OwoJcGFub3NlLTE6NSAwIDAgMCAwIDAgMCAwIDAgMDt9CkBmb250LWZhY2UKCXtmb250LWZhbWls eTpDYWxpYnJpOwoJcGFub3NlLTE6MiAxNSA1IDIgMiAyIDQgMyAyIDQ7fQpAZm9udC1mYWNlCgl7 Zm9udC1mYW1pbHk6VGFob21hOwoJcGFub3NlLTE6MiAxMSA2IDQgMyA1IDQgNCAyIDQ7fQovKiBT dHlsZSBEZWZpbml0aW9ucyAqLwpwLk1zb05vcm1hbCwgbGkuTXNvTm9ybWFsLCBkaXYuTXNvTm9y bWFsCgl7bWFyZ2luOjBpbjsKCW1hcmdpbi1ib3R0b206LjAwMDFwdDsKCWZvbnQtc2l6ZToxMS4w cHQ7Cglmb250LWZhbWlseToiQ2FsaWJyaSIsInNhbnMtc2VyaWYiO30KYTpsaW5rLCBzcGFuLk1z b0h5cGVybGluawoJe21zby1zdHlsZS1wcmlvcml0eTo5OTsKCWNvbG9yOmJsdWU7Cgl0ZXh0LWRl Y29yYXRpb246dW5kZXJsaW5lO30KYTp2aXNpdGVkLCBzcGFuLk1zb0h5cGVybGlua0ZvbGxvd2Vk Cgl7bXNvLXN0eWxlLXByaW9yaXR5Ojk5OwoJY29sb3I6cHVycGxlOwoJdGV4dC1kZWNvcmF0aW9u OnVuZGVybGluZTt9CnAuTXNvQWNldGF0ZSwgbGkuTXNvQWNldGF0ZSwgZGl2Lk1zb0FjZXRhdGUK CXttc28tc3R5bGUtcHJpb3JpdHk6OTk7Cgltc28tc3R5bGUtbGluazoiQmFsbG9vbiBUZXh0IENo YXIiOwoJbWFyZ2luOjBpbjsKCW1hcmdpbi1ib3R0b206LjAwMDFwdDsKCWZvbnQtc2l6ZTo4LjBw dDsKCWZvbnQtZmFtaWx5OiJUYWhvbWEiLCJzYW5zLXNlcmlmIjt9CnAuTXNvTGlzdFBhcmFncmFw aCwgbGkuTXNvTGlzdFBhcmFncmFwaCwgZGl2Lk1zb0xpc3RQYXJhZ3JhcGgKCXttc28tc3R5bGUt cHJpb3JpdHk6MzQ7CgltYXJnaW4tdG9wOjBpbjsKCW1hcmdpbi1yaWdodDowaW47CgltYXJnaW4t Ym90dG9tOjBpbjsKCW1hcmdpbi1sZWZ0Oi41aW47CgltYXJnaW4tYm90dG9tOi4wMDAxcHQ7Cglm b250LXNpemU6MTEuMHB0OwoJZm9udC1mYW1pbHk6IkNhbGlicmkiLCJzYW5zLXNlcmlmIjt9CnNw YW4uQmFsbG9vblRleHRDaGFyCgl7bXNvLXN0eWxlLW5hbWU6IkJhbGxvb24gVGV4dCBDaGFyIjsK CW1zby1zdHlsZS1wcmlvcml0eTo5OTsKCW1zby1zdHlsZS1saW5rOiJCYWxsb29uIFRleHQiOwoJ Zm9udC1mYW1pbHk6IlRhaG9tYSIsInNhbnMtc2VyaWYiO30Kc3Bhbi5FbWFpbFN0eWxlMjAKCXtt c28tc3R5bGUtdHlwZTpwZXJzb25hbDsKCWZvbnQtZmFtaWx5OiJDYWxpYnJpIiwic2Fucy1zZXJp ZiI7Cgljb2xvcjp3aW5kb3d0ZXh0O30Kc3Bhbi5FbWFpbFN0eWxlMjEKCXttc28tc3R5bGUtdHlw ZTpwZXJzb25hbDsKCWZvbnQtZmFtaWx5OiJDYWxpYnJpIiwic2Fucy1zZXJpZiI7Cgljb2xvcjoj MUY0OTdEO30Kc3Bhbi5FbWFpbFN0eWxlMjIKCXttc28tc3R5bGUtdHlwZTpwZXJzb25hbDsKCWZv bnQtZmFtaWx5OiJDYWxpYnJpIiwic2Fucy1zZXJpZiI7Cgljb2xvcjojMUY0OTdEO30Kc3Bhbi5F bWFpbFN0eWxlMjMKCXttc28tc3R5bGUtdHlwZTpwZXJzb25hbDsKCWZvbnQtZmFtaWx5OiJDYWxp YnJpIiwic2Fucy1zZXJpZiI7Cgljb2xvcjp3aW5kb3d0ZXh0O30Kc3Bhbi5FbWFpbFN0eWxlMjQK CXttc28tc3R5bGUtdHlwZTpwZXJzb25hbDsKCWZvbnQtZmFtaWx5OiJDYWxpYnJpIiwic2Fucy1z ZXJpZiI7Cgljb2xvcjojMUY0OTdEO30Kc3Bhbi5FbWFpbFN0eWxlMjUKCXttc28tc3R5bGUtdHlw ZTpwZXJzb25hbDsKCWZvbnQtZmFtaWx5OiJDYWxpYnJpIiwic2Fucy1zZXJpZiI7Cgljb2xvcjp3 aW5kb3d0ZXh0O30Kc3Bhbi5FbWFpbFN0eWxlMjYKCXttc28tc3R5bGUtdHlwZTpwZXJzb25hbC1y ZXBseTsKCWZvbnQtZmFtaWx5OiJDYWxpYnJpIiwic2Fucy1zZXJpZiI7Cgljb2xvcjojMUY0OTdE O30KLk1zb0NocERlZmF1bHQKCXttc28tc3R5bGUtdHlwZTpleHBvcnQtb25seTsKCWZvbnQtc2l6 ZToxMC4wcHQ7fQpAcGFnZSBXb3JkU2VjdGlvbjEKCXtzaXplOjguNWluIDExLjBpbjsKCW1hcmdp bjoxLjBpbiAxLjBpbiAxLjBpbiAxLjBpbjt9CmRpdi5Xb3JkU2VjdGlvbjEKCXtwYWdlOldvcmRT ZWN0aW9uMTt9Ci0tPjwvc3R5bGU+PC9oZWFkPjxib2R5IGJnY29sb3I9IndoaXRlIiBsYW5nPSJF Ti1VUyIgbGluaz0iYmx1ZSIgdmxpbms9InB1cnBsZSI+PGRpdiBjbGFzcz0iV29yZFNlY3Rpb24x Ij48cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iY29sb3I6IzFmNDk3ZCI+cm9vdEBi Y205NTg3NDJrOn4jIGxzcGNpPC9zcGFuPjwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBz dHlsZT0iY29sb3I6IzFmNDk3ZCI+MDAwMTowMDowMC4wIFBDSSBicmlkZ2U6IEJyb2FkY29tIENv cnBvcmF0aW9uIERldmljZSAwMDAwPC9zcGFuPjwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIj48c3Bh biBzdHlsZT0iY29sb3I6IzFmNDk3ZCI+MDAwMTowMTowMC4wIE5vbi1Wb2xhdGlsZSBtZW1vcnkg Y29udHJvbGxlcjogSW50ZWwgQ29ycG9yYXRpb24gUENJZSBEYXRhIENlbnRlciBTU0QgKHJldiAw MSk8L3NwYW4+PC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJjb2xvcjojMWY0 OTdkIj4wMDA4OjAwOjAwLjAgUENJIGJyaWRnZTogQnJvYWRjb20gQ29ycG9yYXRpb24gRGV2aWNl IDE2ZjAgKHJldiAwMSk8L3NwYW4+PC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxl PSJjb2xvcjojMWY0OTdkIj4wMDA4OjAxOjAwLjAgRXRoZXJuZXQgY29udHJvbGxlcjogQnJvYWRj b20gQ29ycG9yYXRpb24gRGV2aWNlIDE2ZjAgKHJldiAwMSk8L3NwYW4+PC9wPjxwIGNsYXNzPSJN c29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJjb2xvcjojMWY0OTdkIj4wMDA4OjAxOjAwLjEgRXRoZXJu ZXQgY29udHJvbGxlcjogQnJvYWRjb20gQ29ycG9yYXRpb24gRGV2aWNlIDE2ZjAgKHJldiAwMSk8 L3NwYW4+PC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJjb2xvcjojMWY0OTdk Ij4wMDA4OjAxOjAwLjIgRXRoZXJuZXQgY29udHJvbGxlcjogQnJvYWRjb20gQ29ycG9yYXRpb24g RGV2aWNlIDE2ZjAgKHJldiAwMSk8L3NwYW4+PC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFu IHN0eWxlPSJjb2xvcjojMWY0OTdkIj4wMDA4OjAxOjAwLjMgRXRoZXJuZXQgY29udHJvbGxlcjog QnJvYWRjb20gQ29ycG9yYXRpb24gRGV2aWNlIDE2ZjAgKHJldiAwMSk8L3NwYW4+PC9wPjxwIGNs YXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJjb2xvcjojMWY0OTdkIj7CoDwvc3Bhbj48L3A+ PHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImNvbG9yOiMxZjQ5N2QiPnJvb3RAYmNt OTU4NzQyazp+IyAvdXNyL3NoYXJlL3NwZGsvc2NyaXB0cy9zZXR1cC5zaDwvc3Bhbj48L3A+PHAg Y2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImNvbG9yOiMxZjQ5N2QiPjAwMDE6MDE6MDAu MCAoODA4NiAwOTUzKTogbnZtZSAtJmd0OyB2ZmlvLXBjaTwvc3Bhbj48L3A+PHAgY2xhc3M9Ik1z b05vcm1hbCI+PHNwYW4gc3R5bGU9ImNvbG9yOiMxZjQ5N2QiPmdyZXA6IC91c3Ivc2hhcmUvc3Bk ay9zY3JpcHRzLy4uL2luY2x1ZGUvc3Bkay9wY2lfaWRzLmg6IE5vIHN1Y2hbIDE1MjAuMjU4NDk4 XSBwY2kgMDAwODowMDowMC4wOiBQQ0kgYnJpZGdlIHRvIFtidXMgMDFdPC9zcGFuPjwvcD48cCBj bGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iY29sb3I6IzFmNDk3ZCI+IGZpbGUgb3IgZGly ZWN0b3J5PC9zcGFuPjwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iY29sb3I6 IzFmNDk3ZCI+WyAxNTIwLjI2NzQzNl0gcGNpIDAwMDg6MDA6MDAuMDrCoMKgIGJyaWRnZSB3aW5k b3cgW21lbSAweDEwMDAwMDAwLTB4MTA0ZmZmZmYgNjRiaXQgcHJlZl08L3NwYW4+PC9wPjxwIGNs YXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJjb2xvcjpyZWQiPlsgMTUyMC4yNzcyMjVdIHBj aSAwMDAwOjAwOjAwLjA6IGlnbm9yaW5nIGNsYXNzIDB4MDIwMDAwIChkb2VzbiYjMzk7dCBtYXRj aCBoZWFkZXIgdHlwZSAwMSnCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmZ3Q7Jmd0 OyBpdCBpcyBsb29raW5nIHRvIHVuYmluZCBvbiBlbXB0eSBzbG90IGFzIHdlbGwuPC9zcGFuPjwv cD48cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iY29sb3I6cmVkIj5bIDE1MjAuMjg1 MzI0XSBwY2kgMDAwMDowMDowMC4wOiBicmlkZ2UgY29uZmlndXJhdGlvbiBpbnZhbGlkIChbYnVz IDAwLTAwXSksIHJlY29uZmlndXJpbmc8L3NwYW4+PC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxz cGFuIHN0eWxlPSJjb2xvcjojMWY0OTdkIj5bIDE1MzUuOTExNzM4XSBCYWQgbW9kZSBpbiBFcnJv ciBoYW5kbGVyIGRldGVjdGVkIG9uIENQVTcsIGNvZGUgMHhiZjAwMDAwMiAtLSBTRXJyb3I8L3Nw YW4+PC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJjb2xvcjojMWY0OTdkIj5b IDE1MzUuOTE5NDYwXSBJbnRlcm5hbCBlcnJvcjogT29wcyAtIGJhZCBtb2RlOiAwIFsjMV0gU01Q PC9zcGFuPjwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iY29sb3I6IzFmNDk3 ZCI+WyAxNTM1LjkyNDg1MF0gTW9kdWxlcyBsaW5rZWQgaW46PC9zcGFuPjwvcD48cCBjbGFzcz0i TXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iY29sb3I6IzFmNDk3ZCI+WyAxNTM1LjkyODAwMV0gQ1BV OiA3IFBJRDogMjEwOCBDb21tOiBsaWdodHRwZCBOb3QgdGFpbnRlZCA0LjEyLjAtMDE2MjQtZ2Ji ZDQwODYtZGlydHkgIzk3PC9zcGFuPjwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHls ZT0iY29sb3I6IzFmNDk3ZCI+WyAxNTM1LjkzNjI1N10gSGFyZHdhcmUgbmFtZTogU3RpbmdyYXkg Q29tYm8gU1ZLIHcvUENJZSBJT01NVSAoQkNNOTU4NzQySykgKERUKTwvc3Bhbj48L3A+PHAgY2xh c3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImNvbG9yOiMxZjQ5N2QiPlsgMTUzNS45NDM1Mjdd IHRhc2s6IGZmZmY4MGExNjQyY2UwMDAgdGFzay5zdGFjazogZmZmZjgwYTE2Mjc5MDAwMDwvc3Bh bj48L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImNvbG9yOiMxZjQ5N2QiPlsg MTUzNS45NDk2MzRdIFBDIGlzIGF0IDB4ZmZmZjhiYWFkY2EwPC9zcGFuPjwvcD48cCBjbGFzcz0i TXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iY29sb3I6IzFmNDk3ZCI+WyAxNTM1Ljk1MzIzMF0gTFIg aXMgYXQgMHg0MGFjYTg8L3NwYW4+PC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxl PSJjb2xvcjojMWY0OTdkIj5bIDE1MzUuOTU2MjkwXSBwYyA6IFsmbHQ7MDAwMGZmZmY4YmFhZGNh MCZndDtdIGxyIDogWyZsdDswMDAwMDAwMDAwNDBhY2E4Jmd0O10gcHN0YXRlOiA4MDAwMDAwMDwv c3Bhbj48L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImNvbG9yOiMxZjQ5N2Qi PlsgMTUzNS45NjM5MTldIHNwIDogMDAwMGZmZmZjYTYxYTk3MDwvc3Bhbj48L3A+PHAgY2xhc3M9 Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImNvbG9yOiMxZjQ5N2QiPlsgMTUzNS45NjczMzddIHgy OTogMDAwMGZmZmZjYTYxYTk3MCB4Mjg6IDAwMDAwMDAwMDAwMDAwMDA8L3NwYW4+PC9wPjxwIGNs YXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJjb2xvcjojMWY0OTdkIj5bIDE1MzUuOTcyODE2 XSB4Mjc6IDAwMDAwMDAwMjgzYTlhMDAgeDI2OiAwMDAwMDAwMDAwMDAwMDAwPC9zcGFuPjwvcD48 cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iY29sb3I6IzFmNDk3ZCI+WyAxNTM1Ljk3 ODI5Nl0geDI1OiAwMDAwMDAwMDAwNDJhM2E4IHgyNDogMDAwMDAwMDAwMDQyYTNhMDwvc3Bhbj48 L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImNvbG9yOiMxZjQ5N2QiPlsgMTUz NS45ODM3NzVdIHgyMzogMDAwMDAwMDAwMDQyOTAwMCB4MjI6IDAwMDAwMDAwMDA0MmEyYjg8L3Nw YW4+PC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJjb2xvcjojMWY0OTdkIj5b IDE1MzUuOTg5MjU0XSB4MjE6IDAwMDAwMDAwMDA0MmEwMDAgeDIwOiAwMDAwMDAwMDU4ZWRkNDQ0 PC9zcGFuPjwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iY29sb3I6IzFmNDk3 ZCI+WyAxNTM1Ljk5NDczNF0geDE5OiAwMDAwMDAwMDI4M2E5MDEwIHgxODogMDAwMDAwMDAwMDAw MDAxNDwvc3Bhbj48L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImNvbG9yOiMx ZjQ5N2QiPlsgMTUzNi4wMDAyMTNdIHgxNzogMDAwMGZmZmY4YmFhZGE4OCB4MTY6IDAwMDAwMDAw MDA0NDJjMDg8L3NwYW4+PC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJjb2xv cjojMWY0OTdkIj5bIDE1MzYuMDA1NjkzXSB4MTU6IDAwMDAyMTYyY2MwMDAwMDAgeDE0OiAwMDBi Y2QzZDgwMDAwMDAwPC9zcGFuPjwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0i Y29sb3I6IzFmNDk3ZCI+WyAxNTM2LjAxMTE3M10geDEzOiAwMDAwMDAwMWY0MDAwMDAwIHgxMjog MDAwMDAwMDAwMDAwMDAxNzwvc3Bhbj48L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5 bGU9ImNvbG9yOiMxZjQ5N2QiPlsgMTUzNi4wMTY2NTNdIHgxMTogMDAwMDAwMDAwMDA2MWJmNyB4 MTA6IDAwMDAwMDAwNThlZGQ0NDQ8L3NwYW4+PC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFu IHN0eWxlPSJjb2xvcjojMWY0OTdkIj5bIDE1MzYuMDIyMTMxXSB4OSA6IDAwMWRjZDY1MDAwMDAw MDAgeDggOiAwMDAwMDAwMDAwMDAwMDE2PC9zcGFuPjwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIj48 c3BhbiBzdHlsZT0iY29sb3I6IzFmNDk3ZCI+WyAxNTM2LjAyNzYxMV0geDcgOiAwMDAwMDAwMDAw MDBkZmRhIHg2IDogMDAwMGZmZmY4YmRjNTAwMDwvc3Bhbj48L3A+PHAgY2xhc3M9Ik1zb05vcm1h bCI+PHNwYW4gc3R5bGU9ImNvbG9yOiMxZjQ5N2QiPlsgMTUzNi4wMzMwOTBdIHg1IDogMDAwMDAw MDAwMDAwMDAwOCB4NCA6IDAwMDAwMDAwMDAwMDAwMDA8L3NwYW4+PC9wPjxwIGNsYXNzPSJNc29O b3JtYWwiPjxzcGFuIHN0eWxlPSJjb2xvcjojMWY0OTdkIj5bIDE1MzYuMDM4NTcwXSB4MyA6IDAw MDAwMDAwMDAwMDAzZTggeDIgOiAwMDAwMDAwMDAwMDAwNDAxPC9zcGFuPjwvcD48cCBjbGFzcz0i TXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iY29sb3I6IzFmNDk3ZCI+WyAxNTM2LjA0NDA0OV0geDEg OiAwMDAwMDAwMDI4M2JkMDUwIHgwIDogMDAwMDAwMDAwMDAwMDAwMDwvc3Bhbj48L3A+PHAgY2xh c3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImNvbG9yOiMxZjQ5N2QiPlsgMTUzNi4wNDk1Mjld IFByb2Nlc3MgbGlnaHR0cGQgKHBpZDogMjEwOCwgc3RhY2sgbGltaXQgPSAweGZmZmY4MGExNjI3 OTAwMDApPC9zcGFuPjwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iY29sb3I6 IzFmNDk3ZCI+wqA8L3NwYW4+PC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJj b2xvcjojMWY0OTdkIj5QbGVhc2UgZmluZCBhdHRhY2hlZCBzdGF0dXMgc2NyaXB0Ljwvc3Bhbj48 L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImNvbG9yOiMxZjQ5N2QiPsKgPC9z cGFuPjwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iY29sb3I6IzFmNDk3ZCI+ UmVnYXJkcyw8L3NwYW4+PC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJjb2xv cjojMWY0OTdkIj5PemEuPC9zcGFuPjwvcD48ZGl2PjxkaXYgc3R5bGU9ImJvcmRlcjpub25lO2Jv cmRlci10b3A6c29saWQgI2I1YzRkZiAxLjBwdDtwYWRkaW5nOjMuMHB0IDBpbiAwaW4gMGluIj48 cCBjbGFzcz0iTXNvTm9ybWFsIj48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250 LWZhbWlseTomcXVvdDtUYWhvbWEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OyI+RnJvbTo8 L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0O2ZvbnQtZmFtaWx5OiZxdW90 O1RhaG9tYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7Ij4gU1BESyBbbWFpbHRvOjxhIGhy ZWY9Im1haWx0bzpzcGRrLWJvdW5jZXNAbGlzdHMuMDEub3JnIj5zcGRrLWJvdW5jZXNAbGlzdHMu MDEub3JnPC9hPl0gPGI+T24gQmVoYWxmIE9mIDwvYj5IYXJyaXMsIEphbWVzIFI8YnI+PGI+U2Vu dDo8L2I+IFR1ZXNkYXksIEF1Z3VzdCAyOSwgMjAxNyAxMTozMCBQTTxicj48Yj5Ubzo8L2I+IFN0 b3JhZ2UgUGVyZm9ybWFuY2UgRGV2ZWxvcG1lbnQgS2l0PGJyPjxiPlN1YmplY3Q6PC9iPiBSZTog W1NQREtdIFBDSSBob3RwbHVnIGFuZCBTUERLPC9zcGFuPjwvcD48L2Rpdj48L2Rpdj48cCBjbGFz cz0iTXNvTm9ybWFsIj7CoDwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIj5TbyB0byBjbGFyaWZ5LCB5 b3UgaGF2ZSB5b3VyIHN5c3RlbSBib290ZWQgd2l0aCBubyBOVk1lIGVuZHBvaW50IGNvbm5lY3Rl ZCwgYW5kIHRoZW4gd2hlbiB5b3UgcnVuIHRoZSBTUERLIHNldHVwLnNoIHNjcmlwdCwgeW91IHNl ZSBhbGwgb2YgdGhlc2Uga2VybmVsIG1lc3NhZ2VzIGZyb20gdHJ5aW5nIHRvIGJpbmQgdmZpbyB0 byBQQ0llIGRldmljZXMgYW5kIHN5c3RlbSBldmVudHVhbGx5IGNyYXNoZXM/PC9wPjxwIGNsYXNz PSJNc29Ob3JtYWwiPsKgPC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiPklmIHNvLCB3ZSBuZWVkIHRv IGRldGVybWluZSB3aGF0IFBDSWUgZGV2aWNlcyBzZXR1cC5zaCBpcyB0cnlpbmcgdG8gYmluZCB0 byB2ZmlvLsKgIEl0IHNob3VsZCBvbmx5IGJlIHRyeWluZyB0byBiaW5kIE5WTWUgZGV2aWNlcyBi dXQgaWYgdGhlcmUgaXMgbm8gTlZNZSBkZXZpY2UgY29ubmVjdGVkIHRoZW4gaXQgc2hvdWxkbuKA mXQgYmUgdHJ5aW5nIHRvIGJpbmQgYW55dGhpbmcuPC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiPsKg PC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiPkNhbiB5b3Ugc2VuZCBsc3BjaSDigJN2dnZ4IG91dHB1 dCBmcm9tIHlvdXIgc3lzdGVtIGJlZm9yZSBydW5uaW5nIHNldHVwLnNoPzwvcD48cCBjbGFzcz0i TXNvTm9ybWFsIj7CoDwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIj5UaGFua3MsPC9wPjxwIGNsYXNz PSJNc29Ob3JtYWwiPsKgPC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiPi1KaW08L3A+PHAgY2xhc3M9 Ik1zb05vcm1hbCI+wqA8L3A+PGRpdiBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9yZGVyLXRvcDpzb2xp ZCAjYjVjNGRmIDEuMHB0O3BhZGRpbmc6My4wcHQgMGluIDBpbiAwaW4iPjxwIGNsYXNzPSJNc29O b3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluIj48Yj48c3BhbiBzdHlsZT0iY29sb3I6Ymxh Y2siPkZyb206IDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImNvbG9yOmJsYWNrIj5TUERLICZsdDs8 YSBocmVmPSJtYWlsdG86c3Bkay1ib3VuY2VzQGxpc3RzLjAxLm9yZyI+c3Bkay1ib3VuY2VzQGxp c3RzLjAxLm9yZzwvYT4mZ3Q7IG9uIGJlaGFsZiBvZiBPemEgT3phICZsdDs8YSBocmVmPSJtYWls dG86b3phLm96YUBicm9hZGNvbS5jb20iPm96YS5vemFAYnJvYWRjb20uY29tPC9hPiZndDs8YnI+ PGI+UmVwbHktVG86IDwvYj5TdG9yYWdlIFBlcmZvcm1hbmNlIERldmVsb3BtZW50IEtpdCAmbHQ7 PGEgaHJlZj0ibWFpbHRvOnNwZGtAbGlzdHMuMDEub3JnIj5zcGRrQGxpc3RzLjAxLm9yZzwvYT4m Z3Q7PGJyPjxiPkRhdGU6IDwvYj5UdWVzZGF5LCBBdWd1c3QgMjksIDIwMTcgYXQgOTo0NSBBTTxi cj48Yj5UbzogPC9iPlN0b3JhZ2UgUGVyZm9ybWFuY2UgRGV2ZWxvcG1lbnQgS2l0ICZsdDs8YSBo cmVmPSJtYWlsdG86c3Bka0BsaXN0cy4wMS5vcmciPnNwZGtAbGlzdHMuMDEub3JnPC9hPiZndDs8 YnI+PGI+U3ViamVjdDogPC9iPlJlOiBbU1BES10gUENJIGhvdHBsdWcgYW5kIFNQREs8L3NwYW4+ PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMi4wcHQ7Y29sb3I6YmxhY2siPjwvc3Bhbj48L3A+PC9k aXY+PGRpdj48cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVpbiI+PHNw YW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OywmcXVvdDtz ZXJpZiZxdW90OyI+wqA8L3NwYW4+PC9wPjwvZGl2PjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxl PSJtYXJnaW4tbGVmdDouNWluIj48c3BhbiBzdHlsZT0iY29sb3I6IzFmNDk3ZCI+SW4gbXkgb3Bp bmlvbiwgdGhpcyBoYXMgbm90aGluZyB0byBkbyB3aXRoIHBsYXRmb3JtLiBUaG91Z2ggb3VyIHBs YXRmb3JtIGlzIEFSTXY4LiA8L3NwYW4+PC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJt YXJnaW4tbGVmdDouNWluIj48c3BhbiBzdHlsZT0iY29sb3I6IzFmNDk3ZCI+KGJ1dCwgSSBjYW4g bm90IHRlc3Qgb24gYW55IG90aGVyLCBiZWNhdXNlIHdlIGRvbuKAmXQga25vdyBob3cgdGhlIGtl cm5lbCBkcml2ZXIgaXMgd3JpdHRlbik8L3NwYW4+PC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0 eWxlPSJtYXJnaW4tbGVmdDouNWluIj48c3BhbiBzdHlsZT0iY29sb3I6IzFmNDk3ZCI+wqA8L3Nw YW4+PC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluIj48c3Bh biBzdHlsZT0iY29sb3I6IzFmNDk3ZCI+SWYga2VybmVsIGRyaXZlciBzdXBwb3J0cyBob3RwbHVn LCB3aGljaCBtZWFucyB0aGV5IGFyZSBhbGxvd2luZyBwY2lfY3JlYXRlX3Jvb3RfYnVzIGlycmVz cGVjdGl2ZSBvZiB3aGV0aGVyIEVQIGlzIHBsdWdnZWQgb3Igbm90Ljwvc3Bhbj48L3A+PHAgY2xh c3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW4iPjxzcGFuIHN0eWxlPSJjb2xv cjojMWY0OTdkIj5JbiBvdGhlciB3b3Jkcy4gRm9sbG93aW5nIEFQSXMgYXJlIG5ldmVyIGNhbGxl ZC48L3NwYW4+PC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWlu Ij48c3BhbiBzdHlsZT0iY29sb3I6IzFmNDk3ZCI+cGNpX3N0b3Bfcm9vdF9idXMoYnVzKTs8L3Nw YW4+PC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDouNWluIj48c3Bh biBzdHlsZT0iY29sb3I6IzFmNDk3ZCI+cGNpX3JlbW92ZV9yb290X2J1cyhidXMpOzwvc3Bhbj48 L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW4iPjxzcGFuIHN0 eWxlPSJjb2xvcjojMWY0OTdkIj7CoDwvc3Bhbj48L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5 bGU9Im1hcmdpbi1sZWZ0Oi41aW4iPjxzcGFuIHN0eWxlPSJjb2xvcjojMWY0OTdkIj5hbmQgaW4g dGhhdCBjYXNlLCBpZiBQQ0llIHNsb3RzIGlzIGVtcHR5LCBydW5uaW5nIFNQREsgcmVzdWx0aW5n IGluIHN0YWxscy4gKDEwLTE1IHNlY29uZHMpIGZvbGxvd2VkIGJ5IGNyYXNoLjwvc3Bhbj48L3A+ PHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW4iPjxzcGFuIHN0eWxl PSJjb2xvcjojMWY0OTdkIj7CoDwvc3Bhbj48L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9 Im1hcmdpbi1sZWZ0Oi41aW4iPjxzcGFuIHN0eWxlPSJjb2xvcjojMWY0OTdkIj5SZWdhcmRzLDwv c3Bhbj48L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW4iPjxz cGFuIHN0eWxlPSJjb2xvcjojMWY0OTdkIj5PemEuPC9zcGFuPjwvcD48ZGl2PjxkaXYgc3R5bGU9 ImJvcmRlcjpub25lO2JvcmRlci10b3A6c29saWQgI2I1YzRkZiAxLjBwdDtwYWRkaW5nOjMuMHB0 IDBpbiAwaW4gMGluIj48cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LjVp biI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VGFo b21hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDsiPkZyb206PC9zcGFuPjwvYj48c3BhbiBz dHlsZT0iZm9udC1zaXplOjEwLjBwdDtmb250LWZhbWlseTomcXVvdDtUYWhvbWEmcXVvdDssJnF1 b3Q7c2Fucy1zZXJpZiZxdW90OyI+IFNQREsgW21haWx0bzo8YSBocmVmPSJtYWlsdG86c3Bkay1i b3VuY2VzQGxpc3RzLjAxLm9yZyI+c3Bkay1ib3VuY2VzQGxpc3RzLjAxLm9yZzwvYT5dIDxiPk9u IEJlaGFsZiBPZiA8L2I+SGFycmlzLCBKYW1lcyBSPGJyPjxiPlNlbnQ6PC9iPiBUdWVzZGF5LCBB dWd1c3QgMjksIDIwMTcgNjoyMCBQTTxicj48Yj5Ubzo8L2I+IFN0b3JhZ2UgUGVyZm9ybWFuY2Ug RGV2ZWxvcG1lbnQgS2l0PGJyPjxiPlN1YmplY3Q6PC9iPiBSZTogW1NQREtdIFBDSSBob3RwbHVn IGFuZCBTUERLPC9zcGFuPjwvcD48L2Rpdj48L2Rpdj48cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHls ZT0ibWFyZ2luLWxlZnQ6LjVpbiI+wqA8L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1h cmdpbi1sZWZ0Oi41aW4iPkhpIE96YSw8L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1h cmdpbi1sZWZ0Oi41aW4iPsKgPC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4t bGVmdDouNWluIj5EbyB5b3Ugc2VlIHRoaXMgaXNzdWUgb25seSBvbiB5b3VyIGFybXY4IHBsYXRm b3JtIG9yIGRvIHlvdSBhbHNvIHNlZSBpdCBvbiBhbWQ2ND88L3A+PHAgY2xhc3M9Ik1zb05vcm1h bCIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi41aW4iPsKgPC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0 eWxlPSJtYXJnaW4tbGVmdDouNWluIj4tSmltPC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxl PSJtYXJnaW4tbGVmdDouNWluIj7CoDwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFy Z2luLWxlZnQ6LjVpbiI+wqA8L3A+PGRpdiBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9yZGVyLXRvcDpz b2xpZCAjYjVjNGRmIDEuMHB0O3BhZGRpbmc6My4wcHQgMGluIDBpbiAwaW4iPjxwIGNsYXNzPSJN c29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+PGI+PHNwYW4gc3R5bGU9ImNvbG9y OmJsYWNrIj5Gcm9tOiA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJjb2xvcjpibGFjayI+U1BESyAm bHQ7PGEgaHJlZj0ibWFpbHRvOnNwZGstYm91bmNlc0BsaXN0cy4wMS5vcmciPnNwZGstYm91bmNl c0BsaXN0cy4wMS5vcmc8L2E+Jmd0OyBvbiBiZWhhbGYgb2YgT3phIE96YSAmbHQ7PGEgaHJlZj0i bWFpbHRvOm96YS5vemFAYnJvYWRjb20uY29tIj5vemEub3phQGJyb2FkY29tLmNvbTwvYT4mZ3Q7 PGJyPjxiPlJlcGx5LVRvOiA8L2I+U3RvcmFnZSBQZXJmb3JtYW5jZSBEZXZlbG9wbWVudCBLaXQg Jmx0OzxhIGhyZWY9Im1haWx0bzpzcGRrQGxpc3RzLjAxLm9yZyI+c3Bka0BsaXN0cy4wMS5vcmc8 L2E+Jmd0Ozxicj48Yj5EYXRlOiA8L2I+VHVlc2RheSwgQXVndXN0IDI5LCAyMDE3IGF0IDE6NTEg QU08YnI+PGI+VG86IDwvYj5TdG9yYWdlIFBlcmZvcm1hbmNlIERldmVsb3BtZW50IEtpdCAmbHQ7 PGEgaHJlZj0ibWFpbHRvOnNwZGtAbGlzdHMuMDEub3JnIj5zcGRrQGxpc3RzLjAxLm9yZzwvYT4m Z3Q7PGJyPjxiPlN1YmplY3Q6IDwvYj5SZTogW1NQREtdIFBDSSBob3RwbHVnIGFuZCBTUERLPC9z cGFuPjwvcD48L2Rpdj48ZGl2PjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVm dDoxLjBpbiI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O1RpbWVzIE5ldyBSb21hbiZx dW90OywmcXVvdDtzZXJpZiZxdW90OyI+wqA8L3NwYW4+PC9wPjwvZGl2PjxwIGNsYXNzPSJNc29O b3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+PHNwYW4gc3R5bGU9ImNvbG9yOiMxZjQ5 N2QiPlNvcnJ5IElmIEkgd2FzIHVuY2xlYXIuPC9zcGFuPjwvcD48cCBjbGFzcz0iTXNvTm9ybWFs IiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4waW4iPjxzcGFuIHN0eWxlPSJjb2xvcjojMWY0OTdkIj5J IGFtIG5vdCB0YWxraW5nIGFib3V0IGhvdHBsdWcgZmVhdHVyZSBvZiBTUERLLjwvc3Bhbj48L3A+ PHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGluIj48c3BhbiBzdHls ZT0iY29sb3I6IzFmNDk3ZCI+wqA8L3NwYW4+PC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxl PSJtYXJnaW4tbGVmdDoxLjBpbiI+PHNwYW4gc3R5bGU9ImNvbG9yOiMxZjQ5N2QiPsKgPC9zcGFu PjwvcD48cCBjbGFzcz0iTXNvTGlzdFBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjEuNWlu Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6V2luZ2RpbmdzIj7DmDwvc3Bhbj48c3BhbiBzdHls ZT0iZm9udC1zaXplOjcuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90 OywmcXVvdDtzZXJpZiZxdW90OyI+wqAgPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjojMWY0OTdk Ij5QQ0kgaG90cGx1ZyBmZWF0dXJlIGlzIGltcGxlbWVudGVkIGluIGtlcm5lbCBkcml2ZXIgYW5k IHdvcmtpbmcgZmluZS48L3NwYW4+PC9wPjxwIGNsYXNzPSJNc29MaXN0UGFyYWdyYXBoIiBzdHls ZT0ibWFyZ2luLWxlZnQ6MS41aW4iPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpXaW5nZGluZ3Mi PsOYPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6Ny4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7 VGltZXMgTmV3IFJvbWFuJnF1b3Q7LCZxdW90O3NlcmlmJnF1b3Q7Ij7CoCA8L3NwYW4+PHNwYW4g c3R5bGU9ImNvbG9yOiMxZjQ5N2QiPkJ1dCB0aGUgbW9tZW50IEkgcnVuIFNQREsgYW5kIHRyeSB0 byBiaW5kIHZmaW8gZHJpdmVyIGl0IHN0YWxscyBjb21wbGV0ZWx5Ljwvc3Bhbj48L3A+PHAgY2xh c3M9Ik1zb0xpc3RQYXJhZ3JhcGgiIHN0eWxlPSJtYXJnaW4tbGVmdDoyLjBpbiI+PHNwYW4gc3R5 bGU9ImNvbG9yOiMxZjQ5N2QiPlRoZSByZWFzb24gaXM6IGtlcm5lbCBkcml2ZXIgd2lsbCBub3Qg cmVtb3ZlIHRoZSByb290IGJ1cyAod2hlbiBQQ0llIGVuZHBvaW50IGlzIG5vdCBjb25uZWN0ZWQs IGR1cmluZyBib290LXRpbWUpPC9zcGFuPjwvcD48cCBjbGFzcz0iTXNvTGlzdFBhcmFncmFwaCIg c3R5bGU9Im1hcmdpbi1sZWZ0OjIuMGluIj48c3BhbiBzdHlsZT0iY29sb3I6IzFmNDk3ZCI+U28g U1BESyB0cmllcyB0byBiaW5kIGRyaXZlciB0aGlua2luZyBob3N0IGJyaWRnZSBpcyB0aGVyZS48 L3NwYW4+PC9wPjxwIGNsYXNzPSJNc29MaXN0UGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luLWxlZnQ6 Mi41aW4iPjxzcGFuIHN0eWxlPSJjb2xvcjojMWY0OTdkIj5XaXRob3V0IFBDSSBob3RwbHVnIGhv c3QgYnJpZGdlIHdpbGwgbm90IGJlIHRoZXJlIGJlY2F1c2Ugb2YgZm9sbG93aW5nIEFQSSBjYWxs IGluIGtlcm5lbCBkcml2ZXIuPC9zcGFuPjwvcD48cCBjbGFzcz0iTXNvTGlzdFBhcmFncmFwaCIg c3R5bGU9Im1hcmdpbi1sZWZ0OjMuMGluIj5wY2lfc3RvcF9yb290X2J1cyhidXMpOzwvcD48cCBj bGFzcz0iTXNvTGlzdFBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjMuMGluIj5wY2lfcmVt b3ZlX3Jvb3RfYnVzKGJ1cyk7PC9wPjxwIGNsYXNzPSJNc29MaXN0UGFyYWdyYXBoIiBzdHlsZT0i bWFyZ2luLWxlZnQ6MS41aW4iPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTpXaW5nZGluZ3MiPsOY PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6Ny4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q7VGlt ZXMgTmV3IFJvbWFuJnF1b3Q7LCZxdW90O3NlcmlmJnF1b3Q7Ij7CoCA8L3NwYW4+c2luY2Ugbm93 IHdlIGFsbG93IGhvc3QgYnJpZGdlIGNyZWF0aW9uwqAgKEFQSTogcGNpX2NyZWF0ZV9yb290X2J1 cykgaXJyZXNwZWN0aXZlIG9mIEVQIGlzIGNvbm5lY3RlZCBvciBub3QuPC9wPjxwIGNsYXNzPSJN c29MaXN0UGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luLWxlZnQ6Mi4waW4iPkFuZCB0aGVuIGlmIEkg cnVuIFNQREsgKHdpdGggbm8gRW5kcG9pbnQgY29ubmVjdGVkL0VtcHR5IHNsb3QpIEkgZ2V0IHN0 YWxscy48L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGluIj7C oDwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4waW4iPlJlZ2Fy ZHMsPC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+T3ph LjwvcD48ZGl2PjxkaXYgc3R5bGU9ImJvcmRlcjpub25lO2JvcmRlci10b3A6c29saWQgI2I1YzRk ZiAxLjBwdDtwYWRkaW5nOjMuMHB0IDBpbiAwaW4gMGluIj48cCBjbGFzcz0iTXNvTm9ybWFsIiBz dHlsZT0ibWFyZ2luLWxlZnQ6MS4waW4iPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTAuMHB0 O2ZvbnQtZmFtaWx5OiZxdW90O1RhaG9tYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7Ij5G cm9tOjwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMC4wcHQ7Zm9udC1mYW1pbHk6 JnF1b3Q7VGFob21hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDsiPiBTUERLIFttYWlsdG86 PGEgaHJlZj0ibWFpbHRvOnNwZGstYm91bmNlc0BsaXN0cy4wMS5vcmciPnNwZGstYm91bmNlc0Bs aXN0cy4wMS5vcmc8L2E+XSA8Yj5PbiBCZWhhbGYgT2YgPC9iPkNoYW5nLCBDdW55aW48YnI+PGI+ U2VudDo8L2I+IFR1ZXNkYXksIEF1Z3VzdCAyOSwgMjAxNyAyOjE0IFBNPGJyPjxiPlRvOjwvYj4g U3RvcmFnZSBQZXJmb3JtYW5jZSBEZXZlbG9wbWVudCBLaXQ8YnI+PGI+U3ViamVjdDo8L2I+IFJl OiBbU1BES10gUENJIGhvdHBsdWcgYW5kIFNQREs8L3NwYW4+PC9wPjwvZGl2PjwvZGl2PjxwIGNs YXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+wqA8L3A+PHAgY2xhc3M9 Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGluIj48c3BhbiBzdHlsZT0iY29sb3I6 IzFmNDk3ZCI+SGkgT3phLDwvc3Bhbj48L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1h cmdpbi1sZWZ0OjEuMGluIj48c3BhbiBzdHlsZT0iY29sb3I6IzFmNDk3ZCI+wqA8L3NwYW4+PC9w PjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+PHNwYW4gc3R5 bGU9ImNvbG9yOiMxZjQ5N2QiPkNvdWxkIHlvdSBwbGVhc2UgcHJvdmlkZSBzb21lIGRldGFpbHMg c3RlcHMgdG8gcmVwcm9kdWNlIHRoZSBpc3N1ZT88L3NwYW4+PC9wPjxwIGNsYXNzPSJNc29Ob3Jt YWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+PHNwYW4gc3R5bGU9ImNvbG9yOiMxZjQ5N2Qi PlNQREsgdGFrZSBpbiBjaGFyZ2UgwqBmb3IgaG90cGx1ZyBvbmx5IGFmdGVyIHlvdSBiaW5kIHRo ZSBkZXZpY2UgdG8gdWlvIG9yIHZmaW8gZHJpdmVyLDwvc3Bhbj48L3A+PHAgY2xhc3M9Ik1zb05v cm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGluIj48c3BhbiBzdHlsZT0iY29sb3I6IzFmNDk3 ZCI+c28gZm9yIHRoZSBuZXcgaW5zZXJ0IGRlaXZjZSwgaXQgd2lsbCBoYW5kbGVkIGJ5IGtlcm5l bCBkcml2ZXIgZmlyc3QuPC9zcGFuPjwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFy Z2luLWxlZnQ6MS4waW4iPjxzcGFuIHN0eWxlPSJjb2xvcjojMWY0OTdkIj7CoDwvc3Bhbj48L3A+ PHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGluIj48c3BhbiBzdHls ZT0iY29sb3I6IzFmNDk3ZCI+LUN1bnlpbjwvc3Bhbj48L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCIg c3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGluIj48YSBuYW1lPSJfTWFpbEVuZENvbXBvc2UiPjwvYT48 c3BhbiBzdHlsZT0iY29sb3I6IzFmNDk3ZCI+wqA8L3NwYW4+PC9wPjxkaXYgc3R5bGU9ImJvcmRl cjpub25lO2JvcmRlci1sZWZ0OnNvbGlkIGJsdWUgMS41cHQ7cGFkZGluZzowaW4gMGluIDBpbiA0 LjBwdCI+PGRpdj48ZGl2IHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItdG9wOnNvbGlkICNlMWUx ZTEgMS4wcHQ7cGFkZGluZzozLjBwdCAwaW4gMGluIDBpbiI+PHAgY2xhc3M9Ik1zb05vcm1hbCIg c3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGluIj48YSBuYW1lPSJfX19fX3JlcGx5c2VwYXJhdG9yIj48 L2E+PGI+RnJvbTo8L2I+IFNQREsgWzxhIGhyZWY9Im1haWx0bzpzcGRrLWJvdW5jZXNAbGlzdHMu MDEub3JnIj5tYWlsdG86c3Bkay1ib3VuY2VzQGxpc3RzLjAxLm9yZzwvYT5dIDxiPk9uIEJlaGFs ZiBPZiA8L2I+T3phIE96YTxicj48Yj5TZW50OjwvYj4gVHVlc2RheSwgQXVndXN0IDI5LCAyMDE3 IDQ6MjIgUE08YnI+PGI+VG86PC9iPiBTdG9yYWdlIFBlcmZvcm1hbmNlIERldmVsb3BtZW50IEtp dCAmbHQ7PGEgaHJlZj0ibWFpbHRvOnNwZGtAbGlzdHMuMDEub3JnIj5zcGRrQGxpc3RzLjAxLm9y ZzwvYT4mZ3Q7PGJyPjxiPlN1YmplY3Q6PC9iPiBbU1BES10gUENJIGhvdHBsdWcgYW5kIFNQREs8 L3A+PC9kaXY+PC9kaXY+PHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjEu MGluIj7CoDwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4waW4i PkhpIEFsbCw8L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGlu Ij7CoDwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4waW4iPlBD SSBob3RwbHVnIHN1cHBvcnQ7IHJlcXVpcmVzIGNyZWF0aW9uIG9mIHJvb3QgYnVzIGFuZCBwcm9i ZSB0byBnbyBhaGVhZCB3aXRoIGFsbCBQQ0llIGNvbmZpZ3VyYXRpb24uPC9wPjxwIGNsYXNzPSJN c29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+wqA8L3A+PHAgY2xhc3M9Ik1zb05v cm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGluIj5XaGljaCBtZWFucyBmb2xsb3dpbmcgQVBJ cyBhZSBub3QgY2FsbGVkLjwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxl ZnQ6MS4waW4iPsKgwqAgcGNpX3N0b3Bfcm9vdF9idXMoYnVzKTs8L3A+PHAgY2xhc3M9Ik1zb05v cm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGluIj7CoMKgIHBjaV9yZW1vdmVfcm9vdF9idXMo YnVzKTs8L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGluIj7C oDwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4waW4iPsKgPC9w PjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+QW5kIHRoZW4g SWYgSSBydW4gU1BESywgSXQgbWFrZXMgc3lzdGVtIGNyYXNoIHdpdGggZm9sbG93aW5nIGluZm8u PC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+wqA8L3A+ PHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGluIj5Ob3RlOiBpZiB0 aGUgZGlzayBpcyBjb25uZWN0ZWQgdGhlbiBTUERLIGlzIGZpbmUuPC9wPjxwIGNsYXNzPSJNc29O b3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+wqA8L3A+PHAgY2xhc3M9Ik1zb05vcm1h bCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGluIj5PdGhlcndpc2UgaXQgc3RhbGxzIHRoZSBzeXN0 ZW0gd2l0aCBmb2xsb3dpbmcgY3Jhc2guPC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJt YXJnaW4tbGVmdDoxLjBpbiI+wqA8L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdp bi1sZWZ0OjEuMGluIj5yb290QGJjbTk1ODc0Mms6fiMgZWNobyAyMDQ4ICZndDsgL3Byb2Mvc3lz L3ZtL25yX2h1Z2VwYWdlczsgL3Vzci9zaGFyZS9zcGRrL3NjcmlwdHMvc2V0dXAuc2g8L3A+PHAg Y2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGluIj5ncmVwOiAvdXNyL3No YXJlL3NwZGsvc2NyaXB0cy8uLi9pbmNsdWRlL3NwZGsvcGNpX2lkcy5oOiBObyBzdWNoW8KgwqAg MzQuNjIxMzI1XSBwY2kgMDAwODowMDowMC4wOiBQQ0kgYnJpZGdlIHRvIFtidXMgMDFdPC9wPjxw IGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+ZmlsZSBvciBkaXJl Y3Rvcnk8L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGluIj5b wqDCoCAzNC42NDA1ODZdIHBjaSAwMDAwOjAwOjAwLjA6IGJyaWRnZSBjb25maWd1cmF0aW9uIGlu dmFsaWQgKFtidXMgMDAtMDBdKSwgcmVjb25maWd1cmluZzwvcD48cCBjbGFzcz0iTXNvTm9ybWFs IiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4waW4iPlvCoMKgIDUwLjI2NzA1Nl0gcGNpIDAwMDA6MDA6 MDAuMDogUENJIGJyaWRnZSB0byBbYnVzIDAxXTwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHls ZT0ibWFyZ2luLWxlZnQ6MS4waW4iPlvCoMKgIDUwLjI3MjMzN10gcGNpIDAwMDE6MDA6MDAuMDog YnJpZGdlIGNvbmZpZ3VyYXRpb24gaW52YWxpZCAoW2J1cyAwMC0wMF0pLCByZWNvbmZpZ3VyaW5n PC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+W8KgwqAg NjUuODk4NzYyXSBwY2kgMDAwMTowMDowMC4wOiBQQ0kgYnJpZGdlIHRvIFtidXMgMDFdPC9wPjxw IGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+W8KgwqAgNjUuOTA0 MDE1XSBwY2kgMDAwNjowMDowMC4wOiBicmlkZ2UgY29uZmlndXJhdGlvbiBpbnZhbGlkIChbYnVz IDAwLTAwXSksIHJlY29uZmlndXJpbmc8L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1h cmdpbi1sZWZ0OjEuMGluIj5bwqDCoCA4MS41MzA0MzddIHBjaSAwMDA2OjAwOjAwLjA6IFBDSSBi cmlkZ2UgdG8gW2J1cyAwMV08L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1s ZWZ0OjEuMGluIj5bwqDCoCA4MS41MzU2ODBdIHBjaSAwMDA3OjAwOjAwLjA6IGJyaWRnZSBjb25m aWd1cmF0aW9uIGludmFsaWQgKFtidXMgMDAtMDBdKSwgcmVjb25maWd1cmluZzwvcD48cCBjbGFz cz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4waW4iPlvCoMKgIDk3LjE2MjEwM10g cGNpIDAwMDc6MDA6MDAuMDogUENJIGJyaWRnZSB0byBbYnVzIDAxXTwvcD48cCBjbGFzcz0iTXNv Tm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4waW4iPlvCoMKgIDk3LjE2NzI1NV0gQmFkIG1v ZGUgaW4gRXJyb3IgaGFuZGxlciBkZXRlY3RlZCBvbiBDUFU2LCBjb2RlIDB4YmYwMDAwMDIgLS0g U0Vycm9yPC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+ W8KgwqAgOTcuMTc0OTc0XSBJbnRlcm5hbCBlcnJvcjogT29wcyAtIGJhZCBtb2RlOiAwIFsjMV0g U01QPC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+W8Kg wqAgOTcuMTgwMzY0XSBNb2R1bGVzIGxpbmtlZCBpbjo8L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCIg c3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGluIj5bwqDCoCA5Ny4xODM1MTVdIENQVTogNiBQSUQ6IDIx MDQgQ29tbTogYmFzaCBOb3QgdGFpbnRlZCA0LjEyLjAtMDE1NjAtZ2M4MzA5M2QtZGlydHkgIzg5 PC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+W8KgwqAg OTcuMTkxNDEzXSBIYXJkd2FyZSBuYW1lOiBTdGluZ3JheSBDb21ibyBTVksgdy9QQ0llIElPTU1V IChCQ005NTg3NDJLKSAoRFQpPC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4t bGVmdDoxLjBpbiI+W8KgwqAgOTcuMTk4NjgzXSB0YXNrOiBmZmZmODBhMTYzYTQwMDAwIHRhc2su c3RhY2s6IGZmZmY4MGExNjEyYjQwMDA8L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1h cmdpbi1sZWZ0OjEuMGluIj5bwqDCoCA5Ny4yMDQ3OTBdIFBDIGlzIGF0IDB4ZmZmZjdjYmRmYmE4 PC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+W8KgwqAg OTcuMjA4Mzg3XSBMUiBpcyBhdCAweGZmZmY3Y2I4ZjI4ODwvcD48cCBjbGFzcz0iTXNvTm9ybWFs IiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4waW4iPlvCoMKgIDk3LjIxMTk4M10gcGMgOiBbJmx0OzAw MDBmZmZmN2NiZGZiYTgmZ3Q7XSBsciA6IFsmbHQ7MDAwMGZmZmY3Y2I4ZjI4OCZndDtdIHBzdGF0 ZTogMjAwMDAwMDA8L3A+PHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjEu MGluIj5bwqDCoCA5Ny4yMTk2MTJdIHNwIDogMDAwMGZmZmZmZTU2NDA0MDwvcD48cCBjbGFzcz0i TXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4waW4iPlvCoMKgIDk3LjIyMzAyOV0geDI5 OiAwMDAwZmZmZmZlNTY0MDQwIHgyODogMDAwMDAwMDAxMDU0Y2U2MDwvcD48cCBjbGFzcz0iTXNv Tm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4waW4iPlvCoMKgIDk3LjIyODUwOV0geDI3OiAw MDAwMDAwMDAwMDAwMDAwIHgyNjogMDAwMDAwMDAwMDRlMjAwMDwvcD48cCBjbGFzcz0iTXNvTm9y bWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4waW4iPlvCoMKgIDk3LjIzMzk4OV0geDI1OiAwMDAw MDAwMDAwNGU1MDAwIHgyNDogMDAwMDAwMDAwMDAwMDAwMjwvcD48cCBjbGFzcz0iTXNvTm9ybWFs IiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4waW4iPlvCoMKgIDk3LjIzOTQ2OF0geDIzOiAwMDAwZmZm ZjdjYzYzNjM4IHgyMjogMDAwMDAwMDAwMDAwMDAwMjwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIiBz dHlsZT0ibWFyZ2luLWxlZnQ6MS4waW4iPlvCoMKgIDk3LjI0NDk0N10geDIxOiAwMDAwZmZmZjdj YzY3NDgwIHgyMDogMDAwMDAwMDAxMDU0ZGIxMDwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHls ZT0ibWFyZ2luLWxlZnQ6MS4waW4iPlvCoMKgIDk3LjI1MDQyN10geDE5OiAwMDAwMDAwMDAwMDAw MDAyIHgxODogMDAwMDAwMDAwMDAwMDAwMDwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0i bWFyZ2luLWxlZnQ6MS4waW4iPlvCoMKgIDk3LjI1NTkwNl0geDE3OiAwMDAwMDAwMDAwNGRhYWM4 IHgxNjogMDAwMDAwMDAwMDAwMDAwMDwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFy Z2luLWxlZnQ6MS4waW4iPlvCoMKgIDk3LjI2MTM4Nl0geDE1OiAwMDAwMDAwMDAwMDAwMDk2IHgx NDogMDAwMDAwMDAwMDAwMDAwMDwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2lu LWxlZnQ6MS4waW4iPlvCoMKgIDk3LjI2Njg2NV0geDEzOiAwMDAwMDAwMDAwMDAwMDAwIHgxMjog MDAwMDAwMDAwMDAwMDAwMDwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxl ZnQ6MS4waW4iPlvCoMKgIDk3LjI3MjM0NF0geDExOiAwMDAwMDAwMDAwMDAwMDIwIHgxMDogMDEw MTAxMDEwMTAxMDEwMTwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6 MS4waW4iPlvCoMKgIDk3LjI3NzgyNF0geDkgOiBmZmZmZmY4MGZmZmZmZmM4IHg4IDogMDAwMDAw MDAwMDAwMDA0MDwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4w aW4iPlvCoMKgIDk3LjI4MzMwM10geDcgOiAwMDAwMDAwMDAwMDAwMDAxIHg2IDogMDAwMGZmZmY3 Y2M2NjlmMDwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4waW4i PlvCoMKgIDk3LjI4ODc4Ml0geDUgOiAwMDAwMDAwMDAwMDE1NTUxIHg0IDogMDAwMDAwMDAwMDAw MDg4ODwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4waW4iPlvC oMKgIDk3LjI5NDI2MV0geDMgOiAwMDAwMDAwMDAwMDAwMDAwIHgyIDogMDAwMDAwMDAwMDAwMDAw MjwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4waW4iPlvCoMKg IDk3LjI5OTc0MV0geDEgOiAwMDAwMDAwMDEwNTRkYjEwIHgwIDogMDAwMDAwMDAwMDAwMDAwMjwv cD48cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4waW4iPlvCoMKgIDk3 LjMwNTIyMF0gUHJvY2VzcyBiYXNoIChwaWQ6IDIxMDQsIHN0YWNrIGxpbWl0ID0gMHhmZmZmODBh MTYxMmI0MDAwKTwvcD48cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4w aW4iPlvCoMKgIDk3LjMxMTk2MF0gLS0tWyBlbmQgdHJhY2UgYTFmNDhhYmUzMDgyMDI0MSBdLS0t PC9wPjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDoxLjBpbiI+wqA8L3A+ PHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjEuMGluIj5SZWdhcmRzLDwv cD48cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MS4waW4iPk96YS48L3A+ PC9kaXY+PC9kaXY+PC9ib2R5PjwvaHRtbD4K --===============4527508327978809762== Content-Type: application/octet-stream MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="setup.sh" IyEvdXNyL2Jpbi9lbnYgYmFzaAoKc2V0IC1lCgpyb290ZGlyPSQocmVhZGxpbmsgLWYgJChkaXJu YW1lICQwKSkvLi4KCmZ1bmN0aW9uIGxpbnV4X2l0ZXJfcGNpIHsKCSMgQXJndW1lbnQgaXMgdGhl IGNsYXNzIGNvZGUKCSMgVE9ETzogTW9yZSBzcGVjaWZpY2FsbHkgbWF0Y2ggYWdhaW5zdCBvbmx5 IGNsYXNzIGNvZGVzIGluIHRoZSBncmVwCgkjIHN0ZXAuCgkjbHNwY2kgLUQgLW1tIC1uIHwgZ3Jl cCAkMSB8IHRyIC1kICciJyB8IGF3ayAtRiAiICIgJ3twcmludCAkMX0nCglsc3BjaSAtbW0gLW4g fCBncmVwICQxIHwgdHIgLWQgJyInIHwgYXdrIC1GICIgIiAne3ByaW50ICQxfScKfQoKZnVuY3Rp b24gbGludXhfYmluZF9kcml2ZXIoKSB7CgliZGY9IiQxIgoJZHJpdmVyX25hbWU9IiQyIgoJb2xk X2RyaXZlcl9uYW1lPSJubyBkcml2ZXIiCgl2ZW5fZGV2X2lkPSQobHNwY2kgLW4gLXMgJGJkZiB8 IGN1dCAtZCcgJyAtZjMgfCBzZWQgJ3MvOi8gLycpCgoJaWYgWyAtZSAiL3N5cy9idXMvcGNpL2Rl dmljZXMvJGJkZi9kcml2ZXIiIF07IHRoZW4KCQlvbGRfZHJpdmVyX25hbWU9JChiYXNlbmFtZSAk KHJlYWRsaW5rIC9zeXMvYnVzL3BjaS9kZXZpY2VzLyRiZGYvZHJpdmVyKSkKCgkJaWYgWyAiJGRy aXZlcl9uYW1lIiA9ICIkb2xkX2RyaXZlcl9uYW1lIiBdOyB0aGVuCgkJCXJldHVybiAwCgkJZmkK CgkJZWNobyAiJHZlbl9kZXZfaWQiID4gIi9zeXMvYnVzL3BjaS9kZXZpY2VzLyRiZGYvZHJpdmVy L3JlbW92ZV9pZCIgMj4gL2Rldi9udWxsIHx8IHRydWUKCQllY2hvICIkYmRmIiA+ICIvc3lzL2J1 cy9wY2kvZGV2aWNlcy8kYmRmL2RyaXZlci91bmJpbmQiCglmaQoKCWVjaG8gIiRiZGYgKCR2ZW5f ZGV2X2lkKTogJG9sZF9kcml2ZXJfbmFtZSAtPiAkZHJpdmVyX25hbWUiCgoJZWNobyAiJHZlbl9k ZXZfaWQiID4gIi9zeXMvYnVzL3BjaS9kcml2ZXJzLyRkcml2ZXJfbmFtZS9uZXdfaWQiIDI+IC9k ZXYvbnVsbCB8fCB0cnVlCgllY2hvICIkYmRmIiA+ICIvc3lzL2J1cy9wY2kvZHJpdmVycy8kZHJp dmVyX25hbWUvYmluZCIgMj4gL2Rldi9udWxsIHx8IHRydWUKCglpb21tdV9ncm91cD0kKGJhc2Vu YW1lICQocmVhZGxpbmsgLWYgL3N5cy9idXMvcGNpL2RldmljZXMvJGJkZi9pb21tdV9ncm91cCkp CglpZiBbIC1lICIvZGV2L3ZmaW8vJGlvbW11X2dyb3VwIiBdOyB0aGVuCgkJaWYgWyAiJHVzZXJu YW1lIiAhPSAiIiBdOyB0aGVuCgkJCWNob3duICIkdXNlcm5hbWUiICIvZGV2L3ZmaW8vJGlvbW11 X2dyb3VwIgoJCWZpCglmaQp9CgpmdW5jdGlvbiBsaW51eF9odWdldGxiZnNfbW91bnQoKSB7Cglt b3VudCB8IGdyZXAgJ15odWdldGxiZnMgJyB8IGF3ayAneyBwcmludCAkMyB9Jwp9CgpmdW5jdGlv biBjb25maWd1cmVfbGludXggewoJZHJpdmVyX25hbWU9dmZpby1wY2kKCWlmIFsgLXogIiQobHMg L3N5cy9rZXJuZWwvaW9tbXVfZ3JvdXBzKSIgXTsgdGhlbgoJCSMgTm8gSU9NTVUuIFVzZSB1aW8u CgkJZHJpdmVyX25hbWU9dWlvX3BjaV9nZW5lcmljCglmaQoKCSMgTlZNZQoJaWYgWyAhIC1kIC9z eXMvbW9kdWxlL3ZmaW9fcGNpIF07IHRoZW4KCQltb2Rwcm9iZSAkZHJpdmVyX25hbWUgfHwgdHJ1 ZQoJZmkKCglmb3IgYmRmIGluICQobGludXhfaXRlcl9wY2kgMDEwOCk7IGRvCgkJbGludXhfYmlu ZF9kcml2ZXIgIiRiZGYiICIkZHJpdmVyX25hbWUiCglkb25lCgoKCSMgSU9BVAoJVE1QPWBta3Rl bXBgCgkjY29sbGVjdCBhbGwgdGhlIGRldmljZV9pZCBpbmZvIG9mIGlvYXQgZGV2aWNlcy4KCWdy ZXAgIlBDSV9ERVZJQ0VfSURfSU5URUxfSU9BVCIgJHJvb3RkaXIvaW5jbHVkZS9zcGRrL3BjaV9p ZHMuaCBcCgl8IGF3ayAtRiJ4IiAne3ByaW50ICQyfScgPiAkVE1QCgoJZm9yIGRldl9pZCBpbiBg Y2F0ICRUTVBgOyBkbwoJCSMgQWJ1c2UgbGludXhfaXRlcl9wY2kgYnkgZ2l2aW5nIGl0IGEgZGV2 aWNlIElEIGluc3RlYWQgb2YgYSBjbGFzcyBjb2RlCgkJZm9yIGJkZiBpbiAkKGxpbnV4X2l0ZXJf cGNpICRkZXZfaWQpOyBkbwoJCQlsaW51eF9iaW5kX2RyaXZlciAiJGJkZiIgIiRkcml2ZXJfbmFt ZSIKCQlkb25lCglkb25lCglybSAkVE1QCgoJZWNobyAiMSIgPiAiL3N5cy9idXMvcGNpL3Jlc2Nh biIKCglodWdldGxiZnNfbW91bnQ9JChsaW51eF9odWdldGxiZnNfbW91bnQpCgoJaWYgWyAteiAi JGh1Z2V0bGJmc19tb3VudCIgXTsgdGhlbgoJCWh1Z2V0bGJmc19tb3VudD0vbW50L2h1Z2UKCQll Y2hvICJNb3VudGluZyBodWdldGxiZnMgYXQgJGh1Z2V0bGJmc19tb3VudCIKCQlta2RpciAtcCAi JGh1Z2V0bGJmc19tb3VudCIKCQltb3VudCAtdCBodWdldGxiZnMgbm9kZXYgIiRodWdldGxiZnNf bW91bnQiCglmaQoJZWNobyAiJE5SSFVHRSIgPiAvcHJvYy9zeXMvdm0vbnJfaHVnZXBhZ2VzCgoJ IyBpbmNyZWFzZSB0aGUgY3VycmVudCBtZW1sb2NrIGxpbWl0CQoJdWxpbWl0IC1sIHVubGltaXRl ZAoKCWlmIFsgIiRkcml2ZXJfbmFtZSIgPSAidmZpby1wY2kiIF07IHRoZW4KCQlpZiBbICIkdXNl cm5hbWUiICE9ICIiIF07IHRoZW4KCQkJY2hvd24gIiR1c2VybmFtZSIgIiRodWdldGxiZnNfbW91 bnQiCgkJZmkKCgkJTUVNTE9DS19BTU5UPWB1bGltaXQgLWxgCgkJaWYgWyAiJE1FTUxPQ0tfQU1O VCIgIT0gInVubGltaXRlZCIgXSA7IHRoZW4KCQkJTUVNTE9DS19NQj0kKCggJE1FTUxPQ0tfQU1O VCAvIDEwMjQgKSkKCQkJZWNobyAiIgoJCQllY2hvICJDdXJyZW50IHVzZXIgbWVtbG9jayBsaW1p dDogJHtNRU1MT0NLX01CfSBNQiIKCQkJZWNobyAiIgoJCQllY2hvICJUaGlzIGlzIHRoZSBtYXhp bXVtIGFtb3VudCBvZiBtZW1vcnkgeW91IHdpbGwgYmUiCgkJCWVjaG8gImFibGUgdG8gdXNlIHdp dGggRFBESyBhbmQgVkZJTyBpZiBydW4gYXMgY3VycmVudCB1c2VyLiIKCQkJZWNobyAtbiAiVG8g Y2hhbmdlIHRoaXMsIHBsZWFzZSBhZGp1c3QgbGltaXRzLmNvbmYgbWVtbG9jayAiCgkJCWVjaG8g ImxpbWl0IGZvciBjdXJyZW50IHVzZXIuIgoKCQkJaWYgWyAkTUVNTE9DS19BTU5UIC1sdCA2NTUz NiBdIDsgdGhlbgoJCQkJZWNobyAiIgoJCQkJZWNobyAiIyMgV0FSTklORzogbWVtbG9jayBsaW1p dCBpcyBsZXNzIHRoYW4gNjRNQiIKCQkJCWVjaG8gLW4gIiMjIERQREsgd2l0aCBWRklPIG1heSBu b3QgYmUgYWJsZSB0byBpbml0aWFsaXplICIKCQkJCWVjaG8gImlmIHJ1biBhcyBjdXJyZW50IHVz ZXIuIgoJCQlmaQoJCWZpCglmaQp9CgpmdW5jdGlvbiByZXNldF9saW51eCB7CgkjIE5WTWUKCW1v ZHByb2JlIG52bWUgfHwgdHJ1ZQoJZm9yIGJkZiBpbiAkKGxpbnV4X2l0ZXJfcGNpIDAxMDgpOyBk bwoJCWxpbnV4X2JpbmRfZHJpdmVyICIkYmRmIiBudm1lCglkb25lCgoKCSMgSU9BVAoJVE1QPWBt a3RlbXBgCgkjY29sbGVjdCBhbGwgdGhlIGRldmljZV9pZCBpbmZvIG9mIGlvYXQgZGV2aWNlcy4K CWdyZXAgIlBDSV9ERVZJQ0VfSURfSU5URUxfSU9BVCIgJHJvb3RkaXIvaW5jbHVkZS9zcGRrL3Bj aV9pZHMuaCBcCgl8IGF3ayAtRiJ4IiAne3ByaW50ICQyfScgPiAkVE1QCgoJbW9kcHJvYmUgaW9h dGRtYSB8fCB0cnVlCglmb3IgZGV2X2lkIGluIGBjYXQgJFRNUGA7IGRvCgkJIyBBYnVzZSBsaW51 eF9pdGVyX3BjaSBieSBnaXZpbmcgaXQgYSBkZXZpY2UgSUQgaW5zdGVhZCBvZiBhIGNsYXNzIGNv ZGUKCQlmb3IgYmRmIGluICQobGludXhfaXRlcl9wY2kgJGRldl9pZCk7IGRvCgkJCWxpbnV4X2Jp bmRfZHJpdmVyICIkYmRmIiBpb2F0ZG1hCgkJZG9uZQoJZG9uZQoJcm0gJFRNUAoKCWVjaG8gIjEi ID4gIi9zeXMvYnVzL3BjaS9yZXNjYW4iCgoJaHVnZXRsYmZzX21vdW50PSQobGludXhfaHVnZXRs YmZzX21vdW50KQoJcm0gLWYgIiRodWdldGxiZnNfbW91bnQiL3NwZGsqbWFwXyoKfQoKZnVuY3Rp b24gc3RhdHVzX2xpbnV4IHsKCWVjaG8gIk5WTWUgZGV2aWNlcyIKCgllY2hvIC1lICJCREZcdFx0 TnVtYSBOb2RlXHREcml2ZXIgbmFtZVx0XHREZXZpY2UgbmFtZSIKCWZvciBiZGYgaW4gJChsaW51 eF9pdGVyX3BjaSAwMTA4KTsgZG8KCQlkcml2ZXI9YGdyZXAgRFJJVkVSIC9zeXMvYnVzL3BjaS9k ZXZpY2VzLyRiZGYvdWV2ZW50IHxhd2sgLUYiPSIgJ3twcmludCAkMn0nYAoJCW5vZGU9YGNhdCAv c3lzL2J1cy9wY2kvZGV2aWNlcy8kYmRmL251bWFfbm9kZWA7CgkJaWYgWyAiJGRyaXZlciIgPSAi bnZtZSIgXTsgdGhlbgoJCQluYW1lPSJcdCJgbHMgL3N5cy9idXMvcGNpL2RldmljZXMvJGJkZi9u dm1lYDsKCQllbHNlCgkJCW5hbWU9Ii0iOwoJCWZpCgkJZWNobyAtZSAiJGJkZlx0JG5vZGVcdFx0 JGRyaXZlclx0XHQkbmFtZSI7Cglkb25lCgoJZWNobyAiSS9PQVQgRE1BIgoKCSNjb2xsZWN0IGFs bCB0aGUgZGV2aWNlX2lkIGluZm8gb2YgaW9hdCBkZXZpY2VzLgoJVE1QPWBncmVwICJQQ0lfREVW SUNFX0lEX0lOVEVMX0lPQVQiICRyb290ZGlyL2luY2x1ZGUvc3Bkay9wY2lfaWRzLmggXAoJfCBh d2sgLUYieCIgJ3twcmludCAkMn0nYAoJZWNobyAtZSAiQkRGXHRcdE51bWEgTm9kZVx0RHJpdmVy IE5hbWUiCglmb3IgZGV2X2lkIGluICRUTVA7IGRvCgkJIyBBYnVzZSBsaW51eF9pdGVyX3BjaSBi eSBnaXZpbmcgaXQgYSBkZXZpY2UgSUQgaW5zdGVhZCBvZiBhIGNsYXNzIGNvZGUKCQlmb3IgYmRm IGluICQobGludXhfaXRlcl9wY2kgJGRldl9pZCk7IGRvCgkJCWRyaXZlcj1gZ3JlcCBEUklWRVIg L3N5cy9idXMvcGNpL2RldmljZXMvJGJkZi91ZXZlbnQgfGF3ayAtRiI9IiAne3ByaW50ICQyfSdg CgkJCW5vZGU9YGNhdCAvc3lzL2J1cy9wY2kvZGV2aWNlcy8kYmRmL251bWFfbm9kZWA7CgkJCWVj aG8gLWUgIiRiZGZcdCRub2RlXHRcdCRkcml2ZXIiCgkJZG9uZQoJZG9uZQp9CgpmdW5jdGlvbiBj b25maWd1cmVfZnJlZWJzZCB7CglUTVA9YG1rdGVtcGAKCgkjIE5WTWUKCUdSRVBfU1RSPSJjbGFz cz0weDAxMDgwMiIKCgkjIElPQVQKCWdyZXAgIlBDSV9ERVZJQ0VfSURfSU5URUxfSU9BVCIgJHJv b3RkaXIvaW5jbHVkZS9zcGRrL3BjaV9pZHMuaCBcCgl8IGF3ayAtRiJ4IiAne3ByaW50ICQyfScg PiAkVE1QCglmb3IgZGV2X2lkIGluIGBjYXQgJFRNUGA7IGRvCgkJR1JFUF9TVFI9IiR7R1JFUF9T VFJ9XHxjaGlwPTB4JHtkZXZfaWR9ODA4NiIKCWRvbmUKCglBV0tfUFJPRz0ie2lmIChjb3VudCA+ IDApIHByaW50ZiBcIixcIjsgcHJpbnRmIFwiJXM6JXM6JXNcIixcJDIsXCQzLFwkNDsgY291bnQr K30iCgllY2hvICRBV0tfUFJPRyA+ICRUTVAKCglCREZTPWBwY2ljb25mIC1sIHwgZ3JlcCAiJHtH UkVQX1NUUn0iIHwgYXdrIC1GOiAtZiAkVE1QYAoKCWtsZHVubG9hZCBuaWNfdWlvLmtvIHx8IHRy dWUKCWtlbnYgaHcubmljX3Vpby5iZGZzPSRCREZTCglrbGRsb2FkIG5pY191aW8ua28KCXJtICRU TVAKCglrbGR1bmxvYWQgY29udGlnbWVtLmtvIHx8IHRydWUKCWtlbnYgaHcuY29udGlnbWVtLm51 bV9idWZmZXJzPSQoKE5SSFVHRSAqIDIgLyAyNTYpKQoJa2VudiBody5jb250aWdtZW0uYnVmZmVy X3NpemU9JCgoMjU2ICogMTAyNCAqIDEwMjQpKQoJa2xkbG9hZCBjb250aWdtZW0ua28KfQoKZnVu Y3Rpb24gcmVzZXRfZnJlZWJzZCB7CglrbGR1bmxvYWQgY29udGlnbWVtLmtvIHx8IHRydWUKCWts ZHVubG9hZCBuaWNfdWlvLmtvIHx8IHRydWUKfQoKOiAke05SSFVHRTo9MTAyNH0KCnVzZXJuYW1l PSQxCm1vZGU9JDIKCmlmIFsgIiR1c2VybmFtZSIgPSAicmVzZXQiIC1vICIkdXNlcm5hbWUiID0g ImNvbmZpZyIgLW8gIiR1c2VybmFtZSIgPSAic3RhdHVzIiBdOyB0aGVuCgltb2RlPSIkdXNlcm5h bWUiCgl1c2VybmFtZT0iIgpmaQoKaWYgWyAiJG1vZGUiID09ICIiIF07IHRoZW4KCW1vZGU9ImNv bmZpZyIKZmkKCmlmIFsgIiR1c2VybmFtZSIgPSAiIiBdOyB0aGVuCgl1c2VybmFtZT0iJFNVRE9f VVNFUiIKCWlmIFsgIiR1c2VybmFtZSIgPSAiIiBdOyB0aGVuCgkJdXNlcm5hbWU9YGxvZ25hbWUg Mj4vZGV2L251bGxgIHx8IHRydWUKCWZpCmZpCgppZiBbIGB1bmFtZWAgPSBMaW51eCBdOyB0aGVu CglpZiBbICIkbW9kZSIgPT0gImNvbmZpZyIgXTsgdGhlbgoJCWNvbmZpZ3VyZV9saW51eAoJZWxp ZiBbICIkbW9kZSIgPT0gInJlc2V0IiBdOyB0aGVuCgkJcmVzZXRfbGludXgKCWVsaWYgWyAiJG1v ZGUiID09ICJzdGF0dXMiIF07IHRoZW4KCQlzdGF0dXNfbGludXgKCWZpCmVsc2UKCWlmIFsgIiRt b2RlIiA9PSAiY29uZmlnIiBdOyB0aGVuCgkJY29uZmlndXJlX2ZyZWVic2QKCWVsaWYgWyAiJG1v ZGUiID09ICJyZXNldCIgXTsgdGhlbgoJCXJlc2V0X2ZyZWVic2QKCWZpCmZpCg== --===============4527508327978809762==--