[ltp] Anyone got Suspend-to-Ram with fglrx driver works?

Osho GG linux-thinkpad@linux-thinkpad.org
Fri, 11 Nov 2005 15:34:26 -0800


------=_Part_1865_26516682.1131752066750
Content-Type: multipart/alternative; 
	boundary="----=_Part_1866_29466340.1131752066751"

------=_Part_1866_29466340.1131752066751
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

On 11/11/05, Jiang Qian <qian2@fas.harvard.edu> wrote:
>
> Hi Osho:
> suspend-to-ram with radeon driver works flawlessly for my system. I
> follow what you wrote and compiled vbetool. And I modified the script
> exactly as you said, and put the full path of new vbetool in it. But it
> still failed to resume. Same symptom.
>
> AFAIK T42p use AGP interface for graphics card whereas T43 use
> pci-express. Maybe it's a difference between pci-express and agp
> interface? Anyone get this to work on a T43 or T43p?


I am aware that there are some issues with pci-express and vbetool.

Also could you please send me a copy of your xorg.conf? Maybe I used
> some wrong xorg.conf options? What version of xorg and fglrx you're
> using? I'm using xorg 6.8.2 and fglrx 8.18.8. on kernel 2.12.4.


I am also using xorg 6.8.2, fglrx 8.18.8 and kernel 2.6.14 (I presume you
meant 2.6.12.4 <http://2.6.12.4>). I have attached my xorg.conf.

Also did you ever shift from fglrx back to radeon driver without
> rebooting? Does that give you screen corruption?


Yes it does give me corruption. My *guess* is the crash is related with the
fglrx and kernel agp modules being present.
Try the following which may or may not work.

Do init 3 (or kill X somehow).
do
modprobe -r fglrx
lsmod | grep agp
find all agp modules that were loaded (like intel_agp, agpgart etc.) and
then do modprobe -r for each of these.
Start X against with radeon driver.

Osho

Thanks a lot for helping out.
>
> Jiang
>
> On Fri, Nov 11, 2005 at 11:14:55AM -0800, Osho GG wrote:
> > Yes, susend-to-ram works with fglrx driver using vbetool work-around.
> > Here is a cheat-sheet that I have written for it. It has been 100%
> > reliable on my T42p.
> > 0. First, make sure that ACPI suspend/resume works well with radeon
> > [1]X.org
> > driver. This is necessary to make sure that all non-graphics driver
> > related
> > issues are resolved. I presume you have already got this working.
> > 1. Download and compile the vbetool
> > [2]http://freshmeat.net/projects/vbetool/
> > You will need to download two files:
> > [3]http://www.srcf.ucam.org/~mjg59/vbetool/vbetool_0.2.orig.tar.gz
> > [4]http://www.srcf.ucam.org/~mjg59/vbetool/vbetool_0.2-1.diff.gz
> > Untar and unzip the first file and apply the patch from the second
> > file.
> > Compile vbetool and put vbetool binary somewhere in the system
> > PATH
>
> > 2. Modify ACPI suspend/resume scripts to include vbetool in it. This
> > depends
> > on your distribution. Whatever function is called when ACPI suspend is
> > called, add the following to it.
> > chvt 2
> > /usr/sbin/vbetool vbestate save > /var/tmp/vbestate
> > sync
> > 3. Next, Whatever function is called when ACPI resume is called, put
> > the
> > following into it.
> > /usr/sbin/vbetool post
> > /usr/sbin/vbetool vbestate restore < /var/tmp/vbestate
> > chvt 7
> > This presumes that 7 is the virtual terminal on which you have the X
> > window
> > running. You can make this more robust by using fgconsole.
> > Osho
> --
> The linux-thinkpad mailing list home page is at:
> http://mailman.linux-thinkpad.org/mailman/listinfo/linux-thinkpad
>

------=_Part_1866_29466340.1131752066751
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

<br><br><div><span class=3D"gmail_quote">On 11/11/05, <b class=3D"gmail_sen=
dername">Jiang Qian</b> &lt;<a href=3D"mailto:qian2@fas.harvard.edu">qian2@=
fas.harvard.edu</a>&gt; wrote:</span><blockquote class=3D"gmail_quote" styl=
e=3D"border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; =
padding-left: 1ex;">
Hi Osho:<br>suspend-to-ram with radeon driver works flawlessly for my syste=
m. I<br>follow what you wrote and compiled vbetool. And I modified the scri=
pt<br>exactly as you said, and put the full path of new vbetool in it. But =
it
<br>still failed to resume. Same symptom.<br><br>AFAIK T42p use AGP interfa=
ce for graphics card whereas T43 use<br>pci-express. Maybe it's a differenc=
e between pci-express and agp<br>interface? Anyone get this to work on a T4=
3 or T43p?
</blockquote><div><br>
I am aware that there are some issues with pci-express and vbetool.<br>
</div><br><blockquote class=3D"gmail_quote" style=3D"border-left: 1px solid=
 rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Also co=
uld you please send me a copy of your xorg.conf?&nbsp;&nbsp;Maybe I used<br=
>some wrong=20
xorg.conf options? What version of xorg and fglrx you're<br>using? I'm usin=
g xorg 6.8.2 and fglrx 8.18.8. on kernel 2.12.4.</blockquote><div><br>
I am also using xorg 6.8.2, fglrx 8.18.8 and kernel 2.6.14 (I presume you m=
eant <a href=3D"http://2.6.12.4">2.6.12.4</a>). I have attached my xorg.con=
f.<br>
</div><br><blockquote class=3D"gmail_quote" style=3D"border-left: 1px solid=
 rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Also di=
d you ever shift from fglrx back to radeon driver without<br>rebooting? Doe=
s that give you screen corruption?
</blockquote><div><br>
Yes it does give me corruption. My *guess* is the crash is related with the=
 fglrx and kernel agp modules being present.<br>
Try the following which may or may not work.<br>
<br>
Do init 3 (or kill X somehow).<br>
do<br>
modprobe -r fglrx<br>
lsmod | grep agp<br>
find all agp modules that were loaded (like intel_agp, agpgart etc.) and th=
en do modprobe -r for each of these.<br>
Start X against with radeon driver.<br>
<br>
Osho<br>
</div><br><blockquote class=3D"gmail_quote" style=3D"border-left: 1px solid=
 rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Thanks =
a lot for helping out.<br><br>Jiang<br><br>On Fri, Nov 11, 2005 at 11:14:55=
AM -0800, Osho GG wrote:
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;Yes,&nbsp;&nbsp;susend-to-ram works with fg=
lrx driver using vbetool work-around.<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;Here&n=
bsp;&nbsp;is&nbsp;&nbsp;a&nbsp;&nbsp;cheat-sheet&nbsp;&nbsp;that
I have written for it. It has been 100%<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;reli=
able on my T42p.<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;0.&nbsp;&nbsp;First,&nbsp;&=
nbsp;make&nbsp;&nbsp;sure that ACPI suspend/resume works well with radeon<b=
r>&gt;&nbsp;&nbsp;&nbsp;&nbsp;[1]X.org<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;drive=
r.&nbsp;&nbsp;This&nbsp;&nbsp;is&nbsp;&nbsp;necessary to make sure that all=
 non-graphics driver
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;related<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;issu=
es are resolved. I presume you have already got this working.<br>&gt;&nbsp;=
&nbsp;&nbsp;&nbsp;1. Download and compile the vbetool<br>&gt;&nbsp;&nbsp;&n=
bsp;&nbsp;[2]http://freshmeat.net/projects/vbetool/<br>&gt;&nbsp;&nbsp;&nbs=
p;&nbsp;You will need to download two files:
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;[3]http://www.srcf.ucam.org/~mjg59/vbetool/=
vbetool_0.2.orig.tar.gz<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;[4]http://www.srcf.u=
cam.org/~mjg59/vbetool/vbetool_0.2-1.diff.gz<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp=
;Untar&nbsp;&nbsp;and&nbsp;&nbsp;unzip&nbsp;&nbsp;the&nbsp;&nbsp;first
file and apply the patch from the second<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;fil=
e.<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;Compile vbetool and put vbetool binary so=
mewhere in the system<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;PATH<br><br>&gt;&nbsp;=
&nbsp;&nbsp;&nbsp;2.&nbsp;&nbsp;Modify&nbsp;&nbsp;ACPI suspend/resume scrip=
ts to include vbetool in it. This
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;depends<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;on y=
our distribution. Whatever function is called when ACPI suspend is<br>&gt;&=
nbsp;&nbsp;&nbsp;&nbsp;called, add the following to it.<br>&gt;&nbsp;&nbsp;=
&nbsp;&nbsp;chvt 2<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;/usr/sbin/vbetool vbestat=
e save &gt; /var/tmp/vbestate
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;sync<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;3.&nbsp=
;&nbsp;Next,&nbsp;&nbsp;Whatever function is called when ACPI resume is cal=
led, put<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;the<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;=
following into it.<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;/usr/sbin/vbetool post<br=
>&gt;&nbsp;&nbsp;&nbsp;&nbsp;/usr/sbin/vbetool vbestate restore &lt; /var/t=
mp/vbestate
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;chvt 7<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;This&=
nbsp;&nbsp;presumes&nbsp;&nbsp;that 7 is the virtual terminal on which you =
have the X<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;window<br>&gt;&nbsp;&nbsp;&nbsp;&=
nbsp;running. You can make this more robust by using fgconsole.<br>&gt;&nbs=
p;&nbsp;&nbsp;&nbsp;Osho<br>--<br>The linux-thinkpad mailing list home page=
 is at:
<br><a href=3D"http://mailman.linux-thinkpad.org/mailman/listinfo/linux-thi=
nkpad">http://mailman.linux-thinkpad.org/mailman/listinfo/linux-thinkpad</a=
><br></blockquote></div><br><br>

------=_Part_1866_29466340.1131752066751--

------=_Part_1865_26516682.1131752066750
Content-Type: application/octet-stream; name="xorg.conf"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="xorg.conf"

CiMgRmlsZTogeG9yZy5jb25mCiMgRmlsZSBnZW5lcmF0ZWQgYnkgZmdscnhjb25maWcgKEMpIEFU
SSBUZWNobm9sb2dpZXMsIGEgc3Vic3RpdHV0ZSBmb3IgeGY4NmNvbmZpZy4KIyBOb3RlIGJ5IEFU
STogdGhlIGJlbG93IGNvcHlyaWdodCBub3RpY2UgaXMgdGhlcmUgZm9yIHNlcnZpY2luZyBwb3Nz
aWJseQojIHBlbmRpbmcgdGhpcmQgcGFydHkgcmlnaHRzIG9uIHRoZSBmaWxlIGZvcm1hdCBhbmQg
dGhlIGluc3RhbmNlIG9mIHRoaXMgZmlsZS4KIwojIENvcHlyaWdodCAoYykgMTk5OSBieSBUaGUg
WEZyZWU4NiBQcm9qZWN0LCBJbmMuCiMKIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBm
cmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQojIGNvcHkgb2YgdGhpcyBz
b2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJl
IiksCiMgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVk
aW5nIHdpdGhvdXQgbGltaXRhdGlvbgojIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnks
IG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAojIGFuZC9vciBzZWxsIGNv
cGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQoj
IFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnM6CiMgCiMgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVy
bWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KIyBhbGwgY29waWVzIG9yIHN1YnN0
YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KIyAKIyBUSEUgU09GVFdBUkUgSVMgUFJP
VklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgoj
IElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZLAojIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBO
T05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAojIFRIRSBYRlJFRTg2IFBST0pFQ1Qg
QkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLAojIFdI
RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lO
RyBGUk9NLCBPVVQgT0YKIyBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRI
RSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCiMgU09GVFdBUkUuCiMgCiMgRXhjZXB0IGFz
IGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUgb2YgdGhlIFhGcmVlODYgUHJvamVj
dCBzaGFsbAojIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9t
b3RlIHRoZSBzYWxlLCB1c2Ugb3Igb3RoZXIKIyBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdp
dGhvdXQgcHJpb3Igd3JpdHRlbiBhdXRob3JpemF0aW9uIGZyb20gdGhlCiMgWEZyZWU4NiBQcm9q
ZWN0LgojCiMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKgojIFJlZmVyIHRvIHRoZSBYRjg2Q29uZmlnKDQvNSkgbWFu
IHBhZ2UgZm9yIGRldGFpbHMgYWJvdXQgdGhlIGZvcm1hdCBvZiAKIyB0aGlzIGZpbGUuCiMgKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKgojICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioKIyBEUkkgU2VjdGlvbgojICoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK
IyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqCiMgTW9kdWxlIHNlY3Rpb24gLS0gdGhpcyAgc2VjdGlvbiAgaXMgdXNl
ZCB0byBzcGVjaWZ5CiMgd2hpY2ggZHluYW1pY2FsbHkgbG9hZGFibGUgbW9kdWxlcyB0byBsb2Fk
LgojICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioKIwojICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIyBGaWxlcyBzZWN0aW9uLiAgVGhp
cyBhbGxvd3MgZGVmYXVsdCBmb250IGFuZCByZ2IgcGF0aHMgdG8gYmUgc2V0CiMgKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKgojICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioKIyBTZXJ2ZXIgZmxhZ3Mgc2VjdGlvbi4KIyAqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqCiMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKgojIElucHV0IGRldmljZXMKIyAqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiMgKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKgojIENvcmUga2V5Ym9hcmQncyBJbnB1dERldmljZSBzZWN0aW9uCiMgKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKgojICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioKIyBDb3JlIFBvaW50ZXIncyBJbnB1dERldmljZSBzZWN0
aW9uCiMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKgojICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIyBPdGhlciBpbnB1dCBkZXZpY2Ug
c2VjdGlvbnMgCiMgdGhpcyBpcyBvcHRpb25hbCBhbmQgaXMgcmVxdWlyZWQgb25seSBpZiB5b3UK
IyBhcmUgdXNpbmcgZXh0ZW5kZWQgaW5wdXQgZGV2aWNlcy4gIFRoaXMgaXMgZm9yIGV4YW1wbGUg
b25seS4gIFJlZmVyCiMgdG8gdGhlIFhGODZDb25maWcgbWFuIHBhZ2UgZm9yIGEgZGVzY3JpcHRp
b24gb2YgdGhlIG9wdGlvbnMuCiMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgojCiMgU2VjdGlvbiAiSW5wdXREZXZp
Y2UiIAojICAgIElkZW50aWZpZXIgICJNb3VzZTIiCiMgICAgRHJpdmVyICAgICAgIm1vdXNlIgoj
ICAgIE9wdGlvbiAgICAgICJQcm90b2NvbCIgICAgICAiTW91c2VNYW4iCiMgICAgT3B0aW9uICAg
ICAgIkRldmljZSIgICAgICAgICIvZGV2L21vdXNlMiIKIyBFbmRTZWN0aW9uCiMKIyBTZWN0aW9u
ICJJbnB1dERldmljZSIKIyAgICBJZGVudGlmaWVyICJzcGFjZWJhbGwiCiMgICAgRHJpdmVyICAg
ICAibWFnZWxsYW4iCiMgICAgT3B0aW9uICAgICAiRGV2aWNlIiAgICAgICAgICIvZGV2L2N1YTAi
CiMgRW5kU2VjdGlvbgojCiMgU2VjdGlvbiAiSW5wdXREZXZpY2UiCiMgICAgSWRlbnRpZmllciAi
c3BhY2ViYWxsMiIKIyAgICBEcml2ZXIgICAgICJzcGFjZW9yYiIKIyAgICBPcHRpb24gICAgICJE
ZXZpY2UiICAgICAgICAgIi9kZXYvY3VhMCIKIyBFbmRTZWN0aW9uCiMKIyBTZWN0aW9uICJJbnB1
dERldmljZSIKIyAgICBJZGVudGlmaWVyICJ0b3VjaHNjcmVlbjAiCiMgICAgRHJpdmVyICAgICAi
bWljcm90b3VjaCIKIyAgICBPcHRpb24gICAgICJEZXZpY2UiICAgICAgICAgIi9kZXYvdHR5UzAi
CiMgICAgT3B0aW9uICAgICAiTWluWCIgICAgICAgICAgICIxNDEyIgojICAgIE9wdGlvbiAgICAg
Ik1heFgiICAgICAgICAgICAiMTUxODQiCiMgICAgT3B0aW9uICAgICAiTWluWSIgICAgICAgICAg
ICIxNTM3MiIKIyAgICBPcHRpb24gICAgICJNYXhZIiAgICAgICAgICAgIjEyMzAiCiMgICAgT3B0
aW9uICAgICAiU2NyZWVuTnVtYmVyIiAgICIwIgojICAgIE9wdGlvbiAgICAgIlJlcG9ydGluZ01v
ZGUiICAiU2NhbGVkIgojICAgIE9wdGlvbiAgICAgIkJ1dHRvbk51bWJlciIgICAiMSIKIyAgICBP
cHRpb24gICAgICJTZW5kQ29yZUV2ZW50cyIKIyBFbmRTZWN0aW9uCiMKIyBTZWN0aW9uICJJbnB1
dERldmljZSIKIyAgICBJZGVudGlmaWVyICJ0b3VjaHNjcmVlbjEiCiMgICAgRHJpdmVyICAgICAi
ZWxvMjMwMCIKIyAgICBPcHRpb24gICAgICJEZXZpY2UiICAgICAgICAgIi9kZXYvdHR5UzAiCiMg
ICAgT3B0aW9uICAgICAiTWluWCIgICAgICAgICAgICIyMzEiCiMgICAgT3B0aW9uICAgICAiTWF4
WCIgICAgICAgICAgICIzODY4IgojICAgIE9wdGlvbiAgICAgIk1pblkiICAgICAgICAgICAiMzg1
OCIKIyAgICBPcHRpb24gICAgICJNYXhZIiAgICAgICAgICAgIjI3MiIKIyAgICBPcHRpb24gICAg
ICJTY3JlZW5OdW1iZXIiICAgIjAiCiMgICAgT3B0aW9uICAgICAiUmVwb3J0aW5nTW9kZSIgICJT
Y2FsZWQiCiMgICAgT3B0aW9uICAgICAiQnV0dG9uVGhyZXNob2xkIiAgICAiMTciCiMgICAgT3B0
aW9uICAgICAiQnV0dG9uTnVtYmVyIiAgICIxIgojICAgIE9wdGlvbiAgICAgIlNlbmRDb3JlRXZl
bnRzIgojIEVuZFNlY3Rpb24KIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiMgTW9uaXRvciBzZWN0aW9uCiMgKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKgojIEFueSBudW1iZXIgb2YgbW9uaXRvciBzZWN0aW9ucyBtYXkgYmUgcHJlc2Vu
dAojICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioKIyBHcmFwaGljcyBkZXZpY2Ugc2VjdGlvbgojICoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioKIyBBbnkgbnVtYmVyIG9mIGdyYXBoaWNzIGRldmljZSBzZWN0aW9ucyBtYXkgYmUgcHJlc2Vu
dAojIFN0YW5kYXJkIFZHQSBEZXZpY2U6CiMgPT09IEFUSSBkZXZpY2Ugc2VjdGlvbiA9PT0KIyAq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqCiMgU2NyZWVuIHNlY3Rpb25zCiMgKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgojIEFueSBudW1i
ZXIgb2Ygc2NyZWVuIHNlY3Rpb25zIG1heSBiZSBwcmVzZW50LiAgRWFjaCBkZXNjcmliZXMKIyB0
aGUgY29uZmlndXJhdGlvbiBvZiBhIHNpbmdsZSBzY3JlZW4uICBBIHNpbmdsZSBzcGVjaWZpYyBz
Y3JlZW4gc2VjdGlvbgojIG1heSBiZSBzcGVjaWZpZWQgZnJvbSB0aGUgWCBzZXJ2ZXIgY29tbWFu
ZCBsaW5lIHdpdGggdGhlICItc2NyZWVuIgojIG9wdGlvbi4KIyAqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiMgU2Vy
dmVyTGF5b3V0IHNlY3Rpb25zLgojICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIyBBbnkgbnVtYmVyIG9mIFNlcnZl
ckxheW91dCBzZWN0aW9ucyBtYXkgYmUgcHJlc2VudC4gIEVhY2ggZGVzY3JpYmVzCiMgdGhlIHdh
eSBtdWx0aXBsZSBzY3JlZW5zIGFyZSBvcmdhbmlzZWQuICBBIHNwZWNpZmljIFNlcnZlckxheW91
dAojIHNlY3Rpb24gbWF5IGJlIHNwZWNpZmllZCBmcm9tIHRoZSBYIHNlcnZlciBjb21tYW5kIGxp
bmUgd2l0aCB0aGUKIyAiLWxheW91dCIgb3B0aW9uLiAgSW4gdGhlIGFic2VuY2Ugb2YgdGhpcywg
dGhlIGZpcnN0IHNlY3Rpb24gaXMgdXNlZC4KIyBXaGVuIG5vdyBTZXJ2ZXJMYXlvdXQgc2VjdGlv
biBpcyBwcmVzZW50LCB0aGUgZmlyc3QgU2NyZWVuIHNlY3Rpb24KIyBpcyB1c2VkIGFsb25lLgoj
IyMgRU9GICMjIwoKU2VjdGlvbiAiU2VydmVyTGF5b3V0IgoKIyBUaGUgSWRlbnRpZmllciBsaW5l
IG11c3QgYmUgcHJlc2VudAojIEVhY2ggU2NyZWVuIGxpbmUgc3BlY2lmaWVzIGEgU2NyZWVuIHNl
Y3Rpb24gbmFtZSwgYW5kIG9wdGlvbmFsbHkKIyB0aGUgcmVsYXRpdmUgcG9zaXRpb24gb2Ygb3Ro
ZXIgc2NyZWVucy4gIFRoZSBmb3VyIG5hbWVzIGFmdGVyCiMgcHJpbWFyeSBzY3JlZW4gbmFtZSBh
cmUgdGhlIHNjcmVlbnMgdG8gdGhlIHRvcCwgYm90dG9tLCBsZWZ0IGFuZCByaWdodAojIG9mIHRo
ZSBwcmltYXJ5IHNjcmVlbi4KIyBFYWNoIElucHV0RGV2aWNlIGxpbmUgc3BlY2lmaWVzIGFuIElu
cHV0RGV2aWNlIHNlY3Rpb24gbmFtZSBhbmQKIyBvcHRpb25hbGx5IHNvbWUgb3B0aW9ucyB0byBz
cGVjaWZ5IHRoZSB3YXkgdGhlIGRldmljZSBpcyB0byBiZQojIHVzZWQuICBUaG9zZSBvcHRpb25z
IGluY2x1ZGUgIkNvcmVQb2ludGVyIiwgIkNvcmVLZXlib2FyZCIgYW5kCiMgIlNlbmRDb3JlRXZl
bnRzIi4KCUlkZW50aWZpZXIgICAgICJTZXJ2ZXIgTGF5b3V0IgoJU2NyZWVuICAgICAgICAgIlNj
cmVlbjAiIDAgMAoJSW5wdXREZXZpY2UgICAgIk1vdXNlMSIgIkNvcmVQb2ludGVyIgoJSW5wdXRE
ZXZpY2UgICAgIktleWJvYXJkMSIgIkNvcmVLZXlib2FyZCIKCUlucHV0RGV2aWNlICAgICJTeW5h
cHRpY3MgTW91c2UiICJBbHdheXNDb3JlIgpFbmRTZWN0aW9uCgpTZWN0aW9uICJGaWxlcyIKCiMg
VGhlIGxvY2F0aW9uIG9mIHRoZSBSR0IgZGF0YWJhc2UuICBOb3RlLCB0aGlzIGlzIHRoZSBuYW1l
IG9mIHRoZQojIGZpbGUgbWludXMgdGhlIGV4dGVuc2lvbiAobGlrZSAiLnR4dCIgb3IgIi5kYiIp
LiAgVGhlcmUgaXMgbm9ybWFsbHkKIyBubyBuZWVkIHRvIGNoYW5nZSB0aGUgZGVmYXVsdC4KIyBN
dWx0aXBsZSBGb250UGF0aCBlbnRyaWVzIGFyZSBhbGxvd2VkICh3aGljaCBhcmUgY29uY2F0ZW5h
dGVkIHRvZ2V0aGVyKSwKIyBhcyB3ZWxsIGFzIHNwZWNpZnlpbmcgbXVsdGlwbGUgY29tbWEtc2Vw
YXJhdGVkIGVudHJpZXMgaW4gb25lIEZvbnRQYXRoCiMgY29tbWFuZCAob3IgYSBjb21iaW5hdGlv
biBvZiBib3RoIG1ldGhvZHMpCiMgCiMgSWYgeW91IGRvbid0IGhhdmUgYSBmbG9hdGluZyBwb2lu
dCBjb3Byb2Nlc3NvciBhbmQgZW1hY3MsIE1vc2FpYyBvciBvdGhlcgojIHByb2dyYW1zIHRha2Ug
bG9uZyB0byBzdGFydCB1cCwgdHJ5IG1vdmluZyB0aGUgVHlwZTEgYW5kIFNwZWVkbyBkaXJlY3Rv
cnkKIyB0byB0aGUgZW5kIG9mIHRoaXMgbGlzdCAob3IgY29tbWVudCB0aGVtIG91dCkuCiMgCiMg
VGhlIG1vZHVsZSBzZWFyY2ggcGF0aC4gIFRoZSBkZWZhdWx0IHBhdGggaXMgc2hvd24gaGVyZS4K
IyAgICBNb2R1bGVQYXRoICIvdXNyL1gxMVI2L2xpYi9tb2R1bGVzIgoJUmdiUGF0aCAgICAgICIv
dXNyL1gxMVI2L2xpYi9YMTEvcmdiIgoJRm9udFBhdGggICAgICIvdXNyL1gxMVI2L2xpYi9YMTEv
Zm9udHMvbG9jYWwvIgoJRm9udFBhdGggICAgICIvdXNyL1gxMVI2L2xpYi9YMTEvZm9udHMvbWlz
Yy8iCglGb250UGF0aCAgICAgIi91c3IvWDExUjYvbGliL1gxMS9mb250cy83NWRwaS86dW5zY2Fs
ZWQiCglGb250UGF0aCAgICAgIi91c3IvWDExUjYvbGliL1gxMS9mb250cy8xMDBkcGkvOnVuc2Nh
bGVkIgoJRm9udFBhdGggICAgICIvdXNyL1gxMVI2L2xpYi9YMTEvZm9udHMvVHlwZTEvIgoJRm9u
dFBhdGggICAgICIvdXNyL1gxMVI2L2xpYi9YMTEvZm9udHMvU3BlZWRvLyIKCUZvbnRQYXRoICAg
ICAiL3Vzci9YMTFSNi9saWIvWDExL2ZvbnRzLzc1ZHBpLyIKCUZvbnRQYXRoICAgICAiL3Vzci9Y
MTFSNi9saWIvWDExL2ZvbnRzLzEwMGRwaS8iCglGb250UGF0aCAgICAgIi91c3IvWDExUjYvbGli
L1gxMS9mb250cy9sb2NhbC8iCglGb250UGF0aCAgICAgIi91c3IvWDExUjYvbGliL1gxMS9mb250
cy9TcGVlZG8vIgoJRm9udFBhdGggICAgICIvdXNyL1gxMVI2L2xpYi9YMTEvZm9udHMvdHJ1ZXR5
cGUvIgoJRm9udFBhdGggICAgICIvdXNyL1gxMVI2L2xpYi9YMTEvZm9udHMvVVJXLyIKCUZvbnRQ
YXRoICAgICAiL3Vzci9YMTFSNi9saWIvWDExL2ZvbnRzL2VuY29kaW5ncy8iCkVuZFNlY3Rpb24K
ClNlY3Rpb24gIk1vZHVsZSIKCiMgVGhpcyBsb2FkcyB0aGUgREJFIGV4dGVuc2lvbiBtb2R1bGUu
CiMgVGhpcyBsb2FkcyB0aGUgbWlzY2VsbGFuZW91cyBleHRlbnNpb25zIG1vZHVsZSwgYW5kIGRp
c2FibGVzCiMgaW5pdGlhbGlzYXRpb24gb2YgdGhlIFhGcmVlODYtREdBIGV4dGVuc2lvbiB3aXRo
aW4gdGhhdCBtb2R1bGUuCiMgVGhpcyBsb2FkcyB0aGUgVHlwZTEgYW5kIEZyZWVUeXBlIGZvbnQg
bW9kdWxlcwoJTG9hZCAgImRiZSIgIAkjIERvdWJsZSBidWZmZXIgZXh0ZW5zaW9uCglMb2FkICAi
ZXh0bW9kIgogICAgICAjT3B0aW9uICAgICJvbWl0IHhmcmVlODYtZGdhIiAgICMgZG9uJ3QgaW5p
dGlhbGlzZSB0aGUgREdBIGV4dGVuc2lvbgoJTG9hZCAgInR5cGUxIgoJTG9hZCAgImZyZWV0eXBl
IgojIFRoaXMgbG9hZHMgdGhlIEdMWCBtb2R1bGUKCUxvYWQgICJnbHgiICAgIyBsaWJnbHguYQoJ
TG9hZCAgImRyaSIgICAjIGxpYmRyaS5hCglMb2FkICAic3luYXB0aWNzIgpFbmRTZWN0aW9uCgpT
ZWN0aW9uICJJbnB1dERldmljZSIKCiMgRm9yIG1vc3QgT1NzIHRoZSBwcm90b2NvbCBjYW4gYmUg
b21pdHRlZCAoaXQgZGVmYXVsdHMgdG8gIlN0YW5kYXJkIikuCiMgV2hlbiB1c2luZyBYUVVFVUUg
KG9ubHkgZm9yIFNWUjMgYW5kIFNWUjQsIGJ1dCBub3QgU29sYXJpcyksCiMgdW5jb21tZW50IHRo
ZSBmb2xsb3dpbmcgbGluZS4KIyAgICBPcHRpb24gIlByb3RvY29sIiAgICJYcXVldWUiCiMgICAg
T3B0aW9uICJYbGVkcyIgICAgICAiMSAyIDMiCiMgICAgT3B0aW9uICJMZWZ0QWx0IiAgICAiTWV0
YSIKIyAgICBPcHRpb24gIlJpZ2h0QWx0IiAgICJNb2RlU2hpZnQiCiMgVG8gY3VzdG9taXNlIHRo
ZSBYS0Igc2V0dGluZ3MgdG8gc3VpdCB5b3VyIGtleWJvYXJkLCBtb2RpZnkgdGhlCiMgbGluZXMg
YmVsb3cgKHdoaWNoIGFyZSB0aGUgZGVmYXVsdHMpLiAgRm9yIGV4YW1wbGUsIGZvciBhIG5vbi1V
LlMuCiMga2V5Ym9hcmQsIHlvdSB3aWxsIHByb2JhYmx5IHdhbnQgdG8gdXNlOgojICAgIE9wdGlv
biAiWGtiTW9kZWwiICAgInBjMTAyIgojIElmIHlvdSBoYXZlIGEgVVMgTWljcm9zb2Z0IE5hdHVy
YWwga2V5Ym9hcmQsIHlvdSBjYW4gdXNlOgojICAgIE9wdGlvbiAiWGtiTW9kZWwiICAgIm1pY3Jv
c29mdCIKIwojIFRoZW4gdG8gY2hhbmdlIHRoZSBsYW5ndWFnZSwgY2hhbmdlIHRoZSBMYXlvdXQg
c2V0dGluZy4KIyBGb3IgZXhhbXBsZSwgYSBnZXJtYW4gbGF5b3V0IGNhbiBiZSBvYnRhaW5lZCB3
aXRoOgojICAgIE9wdGlvbiAiWGtiTGF5b3V0IiAgImRlIgojIG9yOgojICAgIE9wdGlvbiAiWGti
TGF5b3V0IiAgImRlIgojICAgIE9wdGlvbiAiWGtiVmFyaWFudCIgIm5vZGVhZGtleXMiCiMKIyBJ
ZiB5b3UnZCBsaWtlIHRvIHN3aXRjaCB0aGUgcG9zaXRpb25zIG9mIHlvdXIgY2Fwc2xvY2sgYW5k
CiMgY29udHJvbCBrZXlzLCB1c2U6CiMgICAgT3B0aW9uICJYa2JSdWxlcyIgICAieGZyZWU4NiIK
IyAgICBPcHRpb24gIlhrYk1vZGVsIiAgICJwYzEwMSIKIyAgICBPcHRpb24gIlhrYkxheW91dCIg
ICJ1cyIKIyAgICBPcHRpb24gIlhrYlZhcmlhbnQiICIiCiMgICAgT3B0aW9uICJYa2JPcHRpb25z
IiAiIgojICAgIE9wdGlvbiAiWGtiRGlzYWJsZSIKCUlkZW50aWZpZXIgICJLZXlib2FyZDEiCglE
cml2ZXIgICAgICAia2JkIgoJT3B0aW9uCSAgICAiQXV0b1JlcGVhdCIgIjUwMCAzMCIKIyBTcGVj
aWZ5IHdoaWNoIGtleWJvYXJkIExFRHMgY2FuIGJlIHVzZXItY29udHJvbGxlZCAoZWcsIHdpdGgg
eHNldCgxKSkKCU9wdGlvbgkgICAgIlhrYk9wdGlvbnMiICJjdHJsOnN3YXBjYXBzIgojIFRoZXNl
IGFyZSB0aGUgZGVmYXVsdCBYS0Igc2V0dGluZ3MgZm9yIFhGcmVlODYKCU9wdGlvbgkgICAgIlhr
YlJ1bGVzIiAieGZyZWU4NiIKCU9wdGlvbgkgICAgIlhrYk1vZGVsIiAicGMxMDEiCglPcHRpb24J
ICAgICJYa2JMYXlvdXQiICJ1cyIKRW5kU2VjdGlvbgoKU2VjdGlvbiAiSW5wdXREZXZpY2UiCgoj
IElkZW50aWZpZXIgYW5kIGRyaXZlcgojIHRoZSBmb2xsb3dpbmcgbGluZS4KIyAgICBPcHRpb24g
IlByb3RvY29sIiAgICJYcXVldWUiCiMgQmF1ZHJhdGUgYW5kIFNhbXBsZVJhdGUgYXJlIG9ubHkg
Zm9yIHNvbWUgTG9naXRlY2ggbWljZS4gSW4KIyBhbG1vc3QgZXZlcnkgY2FzZSB0aGVzZSBsaW5l
cyBzaG91bGQgYmUgb21pdHRlZC4KIyAgICBPcHRpb24gIkJhdWRSYXRlIiAgICI5NjAwIgojICAg
IE9wdGlvbiAiU2FtcGxlUmF0ZSIgIjE1MCIKIyBFbXVsYXRlM0J1dHRvbnMgaXMgYW4gb3B0aW9u
IGZvciAyLWJ1dHRvbiBNaWNyb3NvZnQgbWljZQojIEVtdWxhdGUzVGltZW91dCBpcyB0aGUgdGlt
ZW91dCBpbiBtaWxsaXNlY29uZHMgKGRlZmF1bHQgaXMgNTBtcykKIyAgICBPcHRpb24gIkVtdWxh
dGUzQnV0dG9ucyIKIyAgICBPcHRpb24gIkVtdWxhdGUzVGltZW91dCIgICAgIjUwIgojIENob3Jk
TWlkZGxlIGlzIGFuIG9wdGlvbiBmb3Igc29tZSAzLWJ1dHRvbiBMb2dpdGVjaCBtaWNlCiMgICAg
T3B0aW9uICJDaG9yZE1pZGRsZSIKCUlkZW50aWZpZXIgICJNb3VzZTEiCglEcml2ZXIgICAgICAi
bW91c2UiCglPcHRpb24JICAgICJQcm90b2NvbCIgIkltUFMvMiIKCU9wdGlvbgkgICAgIlpBeGlz
TWFwcGluZyIgIjQgNSIKCU9wdGlvbgkgICAgIkRldmljZSIgIi9kZXYvaW5wdXQvbWljZSIKIyBX
aGVuIHVzaW5nIFhRVUVVRSwgY29tbWVudCBvdXQgdGhlIGFib3ZlIHR3byBsaW5lcywgYW5kIHVu
Y29tbWVudAoJT3B0aW9uCSAgICAiQnV0dG9ucyIgIjciCkVuZFNlY3Rpb24KClNlY3Rpb24gIklu
cHV0RGV2aWNlIgoJSWRlbnRpZmllciAgIlN5bmFwdGljcyBNb3VzZSIKCURyaXZlciAgICAgICJz
eW5hcHRpY3MiCglPcHRpb24JICAgICJEZXZpY2UiICIvZGV2L3BzYXV4IgoJT3B0aW9uCSAgICAi
UHJvdG9jb2wiICJhdXRvLWRldiIKCU9wdGlvbgkgICAgIkxlZnRFZGdlIiAiMTcwMCIKCU9wdGlv
bgkgICAgIlJpZ2h0RWRnZSIgIjUzMDAiCglPcHRpb24JICAgICJUb3BFZGdlIiAiMTcwMCIKCU9w
dGlvbgkgICAgIkJvdHRvbUVkZ2UiICI0MjAwIgoJT3B0aW9uCSAgICAiRmluZ2VyTG93IiAiMjUi
CglPcHRpb24JICAgICJGaW5nZXJIaWdoIiAiMzAiCglPcHRpb24JICAgICJNYXhUYXBUaW1lIiAi
MTgwIgoJT3B0aW9uCSAgICAiTWF4VGFwTW92ZSIgIjIyMCIKCU9wdGlvbgkgICAgIlZlcnRTY3Jv
bGxEZWx0YSIgIjEwMCIKCU9wdGlvbgkgICAgIk1pblNwZWVkIiAiMC4wNiIKCU9wdGlvbgkgICAg
Ik1heFNwZWVkIiAiMC4xMiIKCU9wdGlvbgkgICAgIkFjY2VsRmFjdG9yIiAiMC4wMDEwIgoJT3B0
aW9uCSAgICAiU0hNQ29uZmlnIiAib24iCiMgIE9wdGlvbgkiUmVwZWF0ZXIiCSIvZGV2L3BzMm1v
dXNlIgpFbmRTZWN0aW9uCgpTZWN0aW9uICJNb25pdG9yIgoKIyA9PT0gbW9kZSBsaW5lcyBiYXNl
ZCBvbiBHVEYgPT09CiMgVkdBIEAgMTAwSHoKIyBNb2RlbGluZSAiNjQweDQ4MEAxMDAiIDQzLjE2
MyA2NDAgNjgwIDc0NCA4NDggNDgwIDQ4MSA0ODQgNTA5ICtoc3luYyArdnN5bmMKIyBTVkdBIEAg
MTAwSHoKIyBNb2RlbGluZSAiODAweDYwMEAxMDAiIDY4LjE3OSA4MDAgODQ4IDkzNiAxMDcyIDYw
MCA2MDEgNjA0IDYzNiAraHN5bmMgK3ZzeW5jCiMgWFZHQSBAIDEwMEh6CiMgTW9kZWxpbmUgIjEw
MjR4NzY4QDEwMCIgMTEzLjMwOSAxMDI0IDEwOTYgMTIwOCAxMzkyIDc2OCA3NjkgNzcyIDgxNCAr
aHN5bmMgK3ZzeW5jCiMgMTE1Mng4NjQgQCA2MEh6CiMgTW9kZWxpbmUgIjExNTJ4ODY0QDYwIiA4
MS42NDIgMTE1MiAxMjE2IDEzMzYgMTUyMCA4NjQgODY1IDg2OCA4OTUgK2hzeW5jICt2c3luYwoj
IDExNTJ4ODY0IEAgODVIegojIE1vZGVsaW5lICIxMTUyeDg2NEA4NSIgMTE5LjY1MSAxMTUyIDEy
MjQgMTM1MiAxNTUyIDg2NCA4NjUgODY4IDkwNyAraHN5bmMgK3ZzeW5jCiMgMTE1Mng4NjQgQCAx
MDBIegojIE1vZGVsaW5lICIxMTUyeDg2NEAxMDAiIDE0My40NzIgMTE1MiAxMjMyIDEzNjAgMTU2
OCA4NjQgODY1IDg2OCA5MTUgK2hzeW5jICt2c3luYwojIDEyODB4OTYwIEAgNzVIegojIE1vZGVs
aW5lICIxMjgweDk2MEA3NSIgMTI5Ljg1OSAxMjgwIDEzNjggMTUwNCAxNzI4IDk2MCA5NjEgOTY0
IDEwMDIgK2hzeW5jICt2c3luYwojIDEyODB4OTYwIEAgMTAwSHoKIyBNb2RlbGluZSAiMTI4MHg5
NjBAMTAwIiAxNzguOTkyIDEyODAgMTM3NiAxNTIwIDE3NjAgOTYwIDk2MSA5NjQgMTAxNyAgK2hz
eW5jICt2c3luYwojIFNYR0EgQCAxMDBIegojIE1vZGVsaW5lICIxMjgweDEwMjRAMTAwIiAxOTAu
OTYwIDEyODAgMTM3NiAxNTIwIDE3NjAgMTAyNCAxMDI1IDEwMjggMTA4NSAraHN5bmMgK3ZzeW5j
CiMgU1BFQSBHRE0tMTk1MCAoNjBIeiw2NGtIeiwxMTBNSHosLSwtKTogMTI4MHgxMDI0IEAgVi1m
cmVxOiA2MC4wMCBIeiwgSC1mcmVxOiA2My43MyBLSHoKIyBNb2RlbGluZSAiR0RNLTE5NTAiICAx
MDkuNjIgIDEyODAgMTMzNiAxNDcyIDE3MjAgIDEwMjQgMTAyNCAxMDI2IDEwNjIgLWhzeW5jIC12
c3luYwojIDE2MDB4MTAwMCBAIDYwSHoKIyBNb2RlbGluZSAiMTYwMHgxMDAwIiAxMzMuMTQyIDE2
MDAgMTcwNCAxODcyIDIxNDQgMTAwMCAxMDAxIDEwMDQgMTAzNSAraHN5bmMgK3ZzeW5jCiMgMTYw
MHgxMDAwIEAgNzVIegojIE1vZGVsaW5lICIxNjAweDEwMDAiIDE2OS4xMjggMTYwMCAxNzA0IDE4
ODAgMjE2MCAxMDAwIDEwMDEgMTAwNCAxMDQ0ICtoc3luYyArdnN5bmMKIyAxNjAweDEwMDAgQCA4
NUh6CiMgTW9kZWxpbmUgIjE2MDB4MTAwMCIgMTk0LjIwMiAxNjAwIDE3MTIgMTg4OCAyMTc2IDEw
MDAgMTAwMSAxMDA0IDEwNTAgK2hzeW5jICt2c3luYwojIDE2MDB4MTAwMCBAIDEwMEh6CiMgTW9k
ZWxpbmUgIjE2MDB4MTAwMCIgMjMyLjEzMyAxNjAwIDE3MjAgMTg5NiAyMTkyIDEwMDAgMTAwMSAx
MDA0IDEwNTkgK2hzeW5jICt2c3luYwojIDE2MDB4MTAyNCBAIDYwSHoKIyBNb2RlbGluZSAiMTYw
MHgxMDI0IiAxMzYuMzg1IDE2MDAgMTcwNCAxODcyIDIxNDQgMTAyNCAxMDI3IDEwMzAgMTA2MCAr
aHN5bmMgK3ZzeW5jCiMgMTYwMHgxMDI0IEAgNzVIegojIE1vZGVsaW5lICIxNjAweDEwMjQiIDE3
NC40MTYgMTYwMCAxNzEyIDE4ODggMjE3NiAxMDI0IDEwMjUgMTAyOCAxMDY5ICtoc3luYyArdnN5
bmMKIyAxNjAweDEwMjQgQCA3Nkh6CiMgTW9kZWxpbmUgIjE2MDB4MTAyNCIgMTcwLjQ1MCAxNjAw
IDE2MzIgMTc5MiAyMDk2IDEwMjQgMTAyNyAxMDMwIDEwNzAgK2hzeW5jICt2c3luYwojIDE2MDB4
MTAyNCBAIDg1SHoKIyBNb2RlbGluZSAiMTYwMHgxMDI0IiAxOTguODMyIDE2MDAgMTcxMiAxODg4
IDIxNzYgMTAyNCAxMDI3IDEwMzAgMTA3NSAraHN5bmMgK3ZzeW5jCiMgMTkyMHgxMDgwIEAgNjBI
egojIE1vZGVsaW5lICIxOTIweDEwODAiIDE3Mi43OTggMTkyMCAyMDQwIDIyNDggMjU3NiAxMDgw
IDEwODEgMTA4NCAxMTE4IC1oc3luYyAtdnN5bmMKIyAxOTIweDEwODAgQCA3NUh6CiMgTW9kZWxp
bmUgIjE5MjB4MTA4MCIgMjExLjQzNiAxOTIwIDIwNTYgMjI2NCAyNjA4IDEwODAgMTA4MSAxMDg0
IDExMjYgK2hzeW5jICt2c3luYwojIDE5MjB4MTIwMCBAIDYwSHoKIyBNb2RlbGluZSAiMTkyMHgx
MjAwIiAxOTMuMTU2IDE5MjAgMjA0OCAyMjU2IDI1OTIgMTIwMCAxMjAxIDEyMDMgMTI0MiAraHN5
bmMgK3ZzeW5jCiMgMTkyMHgxMjAwIEAgNzVIegojIE1vZGVsaW5lICIxOTIweDEyMDAiIDI0Ni41
OTAgMTkyMCAyMDY0IDIyNzIgMjYyNCAxMjAwIDEyMDEgMTIwMyAxMjUzICtoc3luYyArdnN5bmMK
IyAyMDQ4eDE1MzYgQCA2MAojIE1vZGVsaW5lICIyMDQ4eDE1MzYiIDI2Ni45NTIgMjA0OCAyMjAw
IDI0MjQgMjgwMCAxNTM2IDE1MzcgMTU0MCAxNTg5ICtoc3luYyArdnN5bmMKIyAyMDQ4eDE1MzYg
QCA2MAojIE1vZGVsaW5lICIyMDQ4eDE1MzYiIDI2Ni45NTIgMjA0OCAyMjAwIDI0MjQgMjgwMCAx
NTM2IDE1MzcgMTU0MCAxNTg5ICtoc3luYyArdnN5bmMKIyAxNDAweDEwNTAgQCA2MEh6IE05IExh
cHRvcCBtb2RlIAojIE1vZGVMaW5lICIxNDAweDEwNTAiIDEyMi4wMDAgMTQwMCAxNDg4IDE2NDAg
MTg4MCAxMDUwIDEwNTIgMTA2NCAxMDgyICtoc3luYyArdnN5bmMKIyAxOTIweDI0MDAgQCAyNUh6
IGZvciBJQk0gVDIyMSwgVlMgVlAyMjkwIGFuZCBjb21wYXRpYmxlIGRpc3BsYXkgZGV2aWNlcwoj
IE1vZGVsaW5lICIxOTIweDI0MDBAMjUiIDEyNC42MjAgMTkyMCAxOTI4IDE5ODAgMjA0OCAyNDAw
IDI0MDEgMjQwMyAyNDM0ICtoc3luYyArdnN5bmMKIyAxOTIweDI0MDAgQCAzMEh6IGZvciBJQk0g
VDIyMSwgVlMgVlAyMjkwIGFuZCBjb21wYXRpYmxlIGRpc3BsYXkgZGV2aWNlcwojIE1vZGVsaW5l
ICIxOTIweDI0MDBAMzAiIDE0OS4yNTAgMTkyMCAxOTI4IDE5ODIgMjA0NCAyNDAwIDI0MDIgMjQw
NCAyNDM0ICtoc3luYyArdnN5bmMKTW9kZWxpbmUgIjE2MDB4MTIwMCIgIDEzMC44OSAgMTYwMCAx
NjIwIDE3MDAgMTc4MCAgMTIwMCAxMjAxIDEyMDQgMTIyNQoJSWRlbnRpZmllciAgICJNb25pdG9y
MCIKCURpc3BsYXlTaXplICA0MjAJMzE1CglIb3JpelN5bmMgICAgMjguMCAtIDgyLjAKCVZlcnRS
ZWZyZXNoICA0MC4wIC0gNjAuMAoJT3B0aW9uCSAgICAiRFBNUyIKRW5kU2VjdGlvbgoKU2VjdGlv
biAiRGV2aWNlIgoKIyBUaGUgY2hpcHNldCBsaW5lIGlzIG9wdGlvbmFsIGluIG1vc3QgY2FzZXMu
ICBJdCBjYW4gYmUgdXNlZCB0byBvdmVycmlkZQojIHRoZSBkcml2ZXIncyBjaGlwc2V0IGRldGVj
dGlvbiwgYW5kIHNob3VsZCBub3Qgbm9ybWFsbHkgYmUgc3BlY2lmaWVkLgojICAgIENoaXBzZXQg
ICAgICJnZW5lcmljIgojIFRoZSBEcml2ZXIgbGluZSBtdXN0IGJlIHByZXNlbnQuICBXaGVuIHVz
aW5nIHJ1bi10aW1lIGxvYWRhYmxlIGRyaXZlcgojIG1vZHVsZXMsIHRoaXMgbGluZSBpbnN0cnVj
dHMgdGhlIHNlcnZlciB0byBsb2FkIHRoZSBzcGVjaWZpZWQgZHJpdmVyCiMgbW9kdWxlLiAgRXZl
biB3aGVuIG5vdCB1c2luZyBsb2FkYWJsZSBkcml2ZXIgbW9kdWxlcywgdGhpcyBsaW5lCiMgaW5k
aWNhdGVzIHdoaWNoIGRyaXZlciBzaG91bGQgaW50ZXJwcmV0IHRoZSBpbmZvcm1hdGlvbiBpbiB0
aGlzIHNlY3Rpb24uCiMgVGhlIEJ1c0lEIGxpbmUgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIG9m
IHBvc3NpYmx5IG11bHRpcGxlIGRldmljZXMKIyB0aGlzIHNlY3Rpb24gaXMgaW50ZW5kZWQgZm9y
LiAgV2hlbiB0aGlzIGxpbmUgaXNuJ3QgcHJlc2VudCwgYSBkZXZpY2UKIyBzZWN0aW9uIGNhbiBv
bmx5IG1hdGNoIHVwIHdpdGggdGhlIHByaW1hcnkgdmlkZW8gZGV2aWNlLiAgRm9yIFBDSQojIGRl
dmljZXMgYSBsaW5lIGxpa2UgdGhlIGZvbGxvd2luZyBjb3VsZCBiZSB1c2VkLiAgVGhpcyBsaW5l
IHNob3VsZCBub3QKIyBub3JtYWxseSBiZSBpbmNsdWRlZCB1bmxlc3MgdGhlcmUgaXMgbW9yZSB0
aGFuIG9uZSB2aWRlbyBkZXZpY2UKIyBpbnN0YWxsZWQuCiMgICAgQnVzSUQgICAgICAgIlBDSTow
OjEwOjAiCiMgICAgVmlkZW9SYW0gICAgMjU2CiMgICAgQ2xvY2tzICAgICAgMjUuMiAyOC4zCglJ
ZGVudGlmaWVyICAiU3RhbmRhcmQgVkdBIgoJRHJpdmVyICAgICAgInZnYSIKCVZlbmRvck5hbWUg
ICJVbmtub3duIgoJQm9hcmROYW1lICAgIlVua25vd24iCkVuZFNlY3Rpb24KClNlY3Rpb24gIkRl
dmljZSIKCiMgIyMjIGdlbmVyaWMgRFJJIHNldHRpbmdzICMjIwojID09PSBkaXNhYmxlIFBuUCBN
b25pdG9yICA9PT0KICAgICNPcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm9E
REMiCiMgPT09IGRpc2FibGUvZW5hYmxlIFhBQS9EUkkgPT09CiMgIyMjIEZpcmVHTCBERFggZHJp
dmVyIG1vZHVsZSBzcGVjaWZpYyBzZXR0aW5ncyAjIyMKIyA9PT0gU2NyZWVuIE1hbmFnZW1lbnQg
PT09CiMgTm90ZTogV2hlbiBPcGVuR0wgT3ZlcmxheSBpcyBlbmFibGVkLCBWaWRlbyBPdmVybGF5
CiMgICAgICAgd2lsbCBiZSBkaXNhYmxlZCBhdXRvbWF0aWNhbGx5CiAgICAjIHZlbmRvcj0xMDAy
LCBkZXZpY2U9NGU1NAoJSWRlbnRpZmllciAgIkFUSSBHcmFwaGljcyBBZGFwdGVyIgoJRHJpdmVy
ICAgICAgImZnbHJ4IgoJT3B0aW9uCSAgICAibm9fYWNjZWwiICJubyIKCU9wdGlvbgkgICAgIm5v
X2RyaSIgIm5vIgojID09PSBtaXNjIERSSSBzZXR0aW5ncyA9PT0KCU9wdGlvbgkgICAgIm10cnIi
ICJvZmYiICMgZGlzYWJsZSBEUkkgbXRyciBtYXBwZXIsIGRyaXZlciBoYXMgaXRzIG93biBjb2Rl
IGZvciBtdHJyCglPcHRpb24JICAgICJEZXNrdG9wU2V0dXAiICJjbG9uZSIKICAgIE9wdGlvbiAg
ICAgICJGb3JjZU1vbml0b3JzIiAibHZkcyx0bWRzMSIKCU9wdGlvbiAgICAgICJIU3luYzIiICIz
MS04MCIKCU9wdGlvbiAgICAgICJWUmVmcmVzaDIiICIyMC02MCIKCU9wdGlvbgkgICAgIlNjcmVl
bk92ZXJsYXAiICIwIgoJT3B0aW9uCSAgICAiR2FtbWFDb3JyZWN0aW9uSSIgIjB4MDAwMDAwMDAi
CglPcHRpb24JICAgICJHYW1tYUNvcnJlY3Rpb25JSSIgIjB4MDAwMDAwMDAiCiMgPT09IE9wZW5H
TCBzcGVjaWZpYyBwcm9maWxlcy9zZXR0aW5ncyA9PT0KCU9wdGlvbgkgICAgIkNhcGFiaWxpdGll
cyIgIjB4MDAwMDAwMDAiCiMgPT09IFZpZGVvIE92ZXJsYXkgZm9yIHRoZSBYdiBleHRlbnNpb24g
PT09CglPcHRpb24JICAgICJWaWRlb092ZXJsYXkiICJvbiIKIyA9PT0gT3BlbkdMIE92ZXJsYXkg
PT09CglPcHRpb24JICAgICJPcGVuR0xPdmVybGF5IiAib2ZmIgojID09PSBDZW50ZXIgTW9kZSAo
TGFwdG9wcyBvbmx5KSA9PT0KCU9wdGlvbgkgICAgIkNlbnRlck1vZGUiICJvZmYiCiMgPT09IFBz
ZXVkbyBDb2xvciBWaXN1YWxzICg4LWJpdCB2aXN1YWxzKSA9PT0KCU9wdGlvbgkgICAgIlBzZXVk
b0NvbG9yVmlzdWFscyIgIm9mZiIKIyA9PT0gUUJTIE1hbmFnZW1lbnQgPT09CglPcHRpb24JICAg
ICJTdGVyZW8iICJvZmYiCglPcHRpb24JICAgICJTdGVyZW9TeW5jRW5hYmxlIiAiMSIKIyA9PT0g
RlNBQSBNYW5hZ2VtZW50ID09PQoJT3B0aW9uCSAgICAiRlNBQUVuYWJsZSIgIm5vIgoJT3B0aW9u
CSAgICAiRlNBQVNjYWxlIiAiMSIKCU9wdGlvbgkgICAgIkZTQUFEaXNhYmxlR2FtbWEiICJubyIK
CU9wdGlvbgkgICAgIkZTQUFDdXN0b21pemVNU1BvcyIgIm5vIgoJT3B0aW9uCSAgICAiRlNBQU1T
UG9zWDAiICIwLjAwMDAwMCIKCU9wdGlvbgkgICAgIkZTQUFNU1Bvc1kwIiAiMC4wMDAwMDAiCglP
cHRpb24JICAgICJGU0FBTVNQb3NYMSIgIjAuMDAwMDAwIgoJT3B0aW9uCSAgICAiRlNBQU1TUG9z
WTEiICIwLjAwMDAwMCIKCU9wdGlvbgkgICAgIkZTQUFNU1Bvc1gyIiAiMC4wMDAwMDAiCglPcHRp
b24JICAgICJGU0FBTVNQb3NZMiIgIjAuMDAwMDAwIgoJT3B0aW9uCSAgICAiRlNBQU1TUG9zWDMi
ICIwLjAwMDAwMCIKCU9wdGlvbgkgICAgIkZTQUFNU1Bvc1kzIiAiMC4wMDAwMDAiCglPcHRpb24J
ICAgICJGU0FBTVNQb3NYNCIgIjAuMDAwMDAwIgoJT3B0aW9uCSAgICAiRlNBQU1TUG9zWTQiICIw
LjAwMDAwMCIKCU9wdGlvbgkgICAgIkZTQUFNU1Bvc1g1IiAiMC4wMDAwMDAiCglPcHRpb24JICAg
ICJGU0FBTVNQb3NZNSIgIjAuMDAwMDAwIgojID09PSBNaXNjIE9wdGlvbnMgPT09CglPcHRpb24J
ICAgICJVc2VGYXN0VExTIiAiMCIKCU9wdGlvbgkgICAgIkJsb2NrU2lnbmFsc09uTG9jayIgIm9u
IgoJT3B0aW9uCSAgICAiVXNlSW50ZXJuYWxBR1BHQVJUIiAibm8iCglPcHRpb24JICAgICJGb3Jj
ZUdlbmVyaWNDUFUiICJubyIKCU9wdGlvbgkgICAgIlBvd2VyU3RhdGUiICIyIgoJQnVzSUQgICAg
ICAgIlBDSToxOjA6MCIKRW5kU2VjdGlvbgoKU2VjdGlvbiAiU2NyZWVuIgoKICAgICNPcHRpb24g
ImJhY2tpbmdzdG9yZSIKCUlkZW50aWZpZXIgIlNjcmVlbjAiCglEZXZpY2UgICAgICJBVEkgR3Jh
cGhpY3MgQWRhcHRlciIKCU1vbml0b3IgICAgIk1vbml0b3IwIgoJRGVmYXVsdERlcHRoICAgICAy
NAoJU3ViU2VjdGlvbiAiRGlzcGxheSIKCiAgIyBpbml0aWFsIG9yaWdpbiBpZiBtb2RlIGlzIHNt
YWxsZXIgdGhhbiBkZXNrdG9wCiMgICAgICAgIFZpcnR1YWwgICAgIDEyODAgMTAyNAoJCVZpZXdw
b3J0ICAgMCAwCgkJRGVwdGggICAgIDI0CgkJTW9kZXMgICAgIjE2MDB4MTIwMCIgIjEyODB4MTAy
NCIgIjExNTJ4ODY0IiAiMTAyNHg3NjgiICI4MDB4NjAwIiAiNjQweDQ4MCIKCUVuZFN1YlNlY3Rp
b24KRW5kU2VjdGlvbgoKU2VjdGlvbiAiRFJJIgoKIyBBY2Nlc3MgdG8gT3BlbkdMIElDRCBpcyBh
bGxvd2VkIGZvciBhbGwgdXNlcnM6CiMgQWNjZXNzIHRvIE9wZW5HTCBJQ0QgaXMgcmVzdHJpY3Rl
ZCB0byBhIHNwZWNpZmljIHVzZXIgZ3JvdXA6CiMgICAgR3JvdXAgMTAwICAgICMgdXNlcnMKIyAg
ICBNb2RlIDA2NjAKCU1vZGUgICAgICAgICAwNjY2CkVuZFNlY3Rpb24KClNlY3Rpb24gIkV4dGVu
c2lvbnMiCgoJI09wdGlvbiAiQ29tcG9zaXRlIiAiRW5hYmxlIgoJT3B0aW9uICJSRU5ERVIiICJF
bmFibGUiCkVuZFNlY3Rpb24KCg==
------=_Part_1865_26516682.1131752066750--