Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 10 Mar 2005 00:24:30 -0500
From:      David Sze <dsze@alumni.uwaterloo.ca>
To:        freebsd-stable@freebsd.org
Subject:   Re: Can FreeBSD be installed on DellPowerEdge2800 ?
Message-ID:  <6.2.1.2.2.20050310000250.05746d80@mail.distrust.net>
In-Reply-To: <6.2.1.2.2.20050308215231.0537dff0@mail.distrust.net>
References:  <BA84A761ED41C54893BED691A4A574CF977226@EXCH5.eurowings.com> <4224F19C.2090207@rackspace.com> <6.2.1.2.2.20050301234017.03e93e68@pop3.tellurian.com> <4225CCE4.3080304@rackspace.com> <20050308235853.GA81150@mail.distrust.net> <422E4986.6080409@samsco.org> <6.2.1.2.2.20050308215231.0537dff0@mail.distrust.net>

next in thread | previous in thread | raw e-mail | index | archive | help
--=====================_-2029056031==_
Content-Type: text/plain; charset="us-ascii"; format=flowed

At 09:15 PM 08/03/2005 -0600, David Sze wrote this to All:
>At 05:55 PM 08/03/2005 -0700, Scott Long wrote this to All:
> >>David Sze wrote:
> >>On my 2850 the upper 1GB of RAM cannot be addressed without PAE support
> >>in the kernel.  However, amr in 4.11-RELEASE does indeed seem to have
> >>trouble with PAE.  The result being that with the option in the kernel,
> >>the root device (ufs:/dev/amrd0s1a) cannot be found.
> >>
> >>I backported scottl's amr PAE fixes from RELENG_5; the diffs applied
> >>cleanly (with offsets).  I'm happy to report that my 2850 can now
> >>address its full 4GB and see its amr volumes.
> >>
> >>The diff against 4.11-RELEASE is attached, hopefully someone will be
> >>willing to commit it to RELENG_4.
> >
> >I don't have the cycles to watch after RELENG_4, so I'll have to take
> >your word that this works.  What date is this patch against?  I
> >committed some follow-up fixes last week that are required for
> >management apps to work (and yes, LSI is getting ready to support
> >FreeBSD with management apps).
>
>The patch is against 4.11-RELEASE, and is just a backport of your commit
>from Dec. 5th
>(http://lists.freebsd.org/pipermail/cvs-all/2004-December/094923.html).
>There haven't been any changes to amr since release, so it should apply
>directly to RELENG_4 as well.
>
>I left out the subsequent ioctl fixes and LSI 320-2E support.  They look
>straightforward, but I don't have the software or hardware to test them.
>If you'd like them in there before committing to RELENG_4, I can take a
>stab at it and post a new patch.

A new patch is attached to this message that synchronizes the RELENG_4 amr 
driver with CURRENT, minus the SMPng locking and amd64/ia64 ioctl 
compatibility stuff.  The fixes and their corresponding file revisions are:

Greater than 4GB support
         amr.c           1.55, 1.56, 1.59
         amr_cam.c       1.10
         amr_pci.c       1.24
         amrvar.h        1.23

ioctl fixes for LSI management tools
         amr.c           1.60, 1.61

Fix module unloading
         amr_cam.c       1.12
         amrvar.h        1.24

Check for NULL amrd_sc in amrd_dump
         amr_disk.c      1.32

Support for LSI 320-2E PCI Express controller
         amr_pci.c       1.27
         amrreg.h        1.8
         amrvar.h        1.26

The only part of the patch I've tested is the >4GB support.  The rest 
compiles but I can't vouch for its validity because I don't have the 
software or hardware to test.


--=====================_-2029056031==_
Content-Type: application/octet-stream; name="amr-4.x-MFC.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="amr-4.x-MFC.patch"

KioqIHN5cy9kZXYvYW1yL2Ftci5jLm9yaWcJVGh1IEp1bCAyMiAwOTozNToxOCAyMDA0Ci0tLSBz
eXMvZGV2L2Ftci9hbXIuYwlXZWQgTWFyICA5IDA4OjM2OjI4IDIwMDUKKioqKioqKioqKioqKioq
CioqKiAxLDYgKioqKgotLS0gMSw3IC0tLS0KICAvKi0KICAgKiBDb3B5cmlnaHQgKGMpIDE5OTks
MjAwMCBNaWNoYWVsIFNtaXRoCiAgICogQ29weXJpZ2h0IChjKSAyMDAwIEJTRGkKKyAgKiBDb3B5
cmlnaHQgKGMpIDIwMDUgU2NvdHQgTG9uZwogICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICoK
ICAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKioqKioqKioqKioqKioqCioqKiAyNSwzMSAqKioqCiAgICogU1VDSCBE
QU1BR0UuCiAgICoKICAgKiBDb3B5cmlnaHQgKGMpIDIwMDIgRXJpYyBNb29yZQohICAqIENvcHly
aWdodCAoYykgMjAwMiBMU0kgTG9naWMgQ29ycG9yYXRpb24KICAgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICAqCiAgICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0tLSAyNiwzMiAtLS0tCiAgICogU1VDSCBEQU1BR0Uu
CiAgICoKICAgKiBDb3B5cmlnaHQgKGMpIDIwMDIgRXJpYyBNb29yZQohICAqIENvcHlyaWdodCAo
YykgMjAwMiwgMjAwNCBMU0kgTG9naWMgQ29ycG9yYXRpb24KICAgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICAqCiAgICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CioqKioqKioqKioqKioqKgoqKiogMTMyLDE0MyAqKioq
CiAgICogQ29tbWFuZCBwcm9jZXNzaW5nLgogICAqLwogIHN0YXRpYyBpbnQJYW1yX2Jpb19jb21t
YW5kKHN0cnVjdCBhbXJfc29mdGMgKnNjLCBzdHJ1Y3QgYW1yX2NvbW1hbmQgKiphY3ApOwohIHN0
YXRpYyBpbnQJYW1yX3dhaXRfY29tbWFuZChzdHJ1Y3QgYW1yX2NvbW1hbmQgKmFjKTsKICBzdGF0
aWMgaW50CWFtcl9nZXRzbG90KHN0cnVjdCBhbXJfY29tbWFuZCAqYWMpOwohIHN0YXRpYyB2b2lk
CWFtcl9tYXBjbWQoc3RydWN0IGFtcl9jb21tYW5kICphYyk7CiAgc3RhdGljIHZvaWQJYW1yX3Vu
bWFwY21kKHN0cnVjdCBhbXJfY29tbWFuZCAqYWMpOwogIHN0YXRpYyBpbnQJYW1yX3N0YXJ0KHN0
cnVjdCBhbXJfY29tbWFuZCAqYWMpOwogIHN0YXRpYyB2b2lkCWFtcl9jb21wbGV0ZSh2b2lkICpj
b250ZXh0LCBpbnQgcGVuZGluZyk7CiAgCiAgLyoKICAgKiBTdGF0dXMgbW9uaXRvcmluZwotLS0g
MTMzLDE0NyAtLS0tCiAgICogQ29tbWFuZCBwcm9jZXNzaW5nLgogICAqLwogIHN0YXRpYyBpbnQJ
YW1yX2Jpb19jb21tYW5kKHN0cnVjdCBhbXJfc29mdGMgKnNjLCBzdHJ1Y3QgYW1yX2NvbW1hbmQg
KiphY3ApOwohIHN0YXRpYyBpbnQJYW1yX3dhaXRfY29tbWFuZChzdHJ1Y3QgYW1yX2NvbW1hbmQg
KmFjKSBfX3VudXNlZDsKICBzdGF0aWMgaW50CWFtcl9nZXRzbG90KHN0cnVjdCBhbXJfY29tbWFu
ZCAqYWMpOwohIHN0YXRpYyBpbnQJYW1yX21hcGNtZChzdHJ1Y3QgYW1yX2NvbW1hbmQgKmFjKTsK
ICBzdGF0aWMgdm9pZAlhbXJfdW5tYXBjbWQoc3RydWN0IGFtcl9jb21tYW5kICphYyk7CiAgc3Rh
dGljIGludAlhbXJfc3RhcnQoc3RydWN0IGFtcl9jb21tYW5kICphYyk7Cisgc3RhdGljIGludAlh
bXJfc3RhcnQxKHN0cnVjdCBhbXJfc29mdGMgKnNjLCBzdHJ1Y3QgYW1yX2NvbW1hbmQgKmFjKTsK
ICBzdGF0aWMgdm9pZAlhbXJfY29tcGxldGUodm9pZCAqY29udGV4dCwgaW50IHBlbmRpbmcpOwor
IHN0YXRpYyB2b2lkCWFtcl9zZXR1cF9kbWFtYXAodm9pZCAqYXJnLCBidXNfZG1hX3NlZ21lbnRf
dCAqc2VncywgaW50IG5zZWdtZW50cywgaW50IGVycm9yKTsKKyBzdGF0aWMgdm9pZAlhbXJfc2V0
dXBfZGF0YV9kbWFtYXAodm9pZCAqYXJnLCBidXNfZG1hX3NlZ21lbnRfdCAqc2VncywgaW50IG5z
ZWdtZW50cywgaW50IGVycm9yKTsKICAKICAvKgogICAqIFN0YXR1cyBtb25pdG9yaW5nCioqKioq
KioqKioqKioqKgoqKiogMTUwLDE1NSAqKioqCi0tLSAxNTQsMTYwIC0tLS0KICBzdGF0aWMgaW50
CWFtcl9xdWFydHpfc3VibWl0X2NvbW1hbmQoc3RydWN0IGFtcl9zb2Z0YyAqc2MpOwogIHN0YXRp
YyBpbnQJYW1yX3F1YXJ0el9nZXRfd29yayhzdHJ1Y3QgYW1yX3NvZnRjICpzYywgc3RydWN0IGFt
cl9tYWlsYm94ICptYnNhdmUpOwogIHN0YXRpYyBpbnQJYW1yX3F1YXJ0el9wb2xsX2NvbW1hbmQo
c3RydWN0IGFtcl9jb21tYW5kICphYyk7Cisgc3RhdGljIGludAlhbXJfcXVhcnR6X3BvbGxfY29t
bWFuZDEoc3RydWN0IGFtcl9zb2Z0YyAqc2MsIHN0cnVjdCBhbXJfY29tbWFuZCAqYWMpOwogIAog
IHN0YXRpYyBpbnQJYW1yX3N0ZF9zdWJtaXRfY29tbWFuZChzdHJ1Y3QgYW1yX3NvZnRjICpzYyk7
CiAgc3RhdGljIGludAlhbXJfc3RkX2dldF93b3JrKHN0cnVjdCBhbXJfc29mdGMgKnNjLCBzdHJ1
Y3QgYW1yX21haWxib3ggKm1ic2F2ZSk7CioqKioqKioqKioqKioqKgoqKiogMjE3LDIyMiAqKioq
Ci0tLSAyMjIsMjI4IC0tLS0KICAJc2MtPmFtcl9zdWJtaXRfY29tbWFuZCA9IGFtcl9xdWFydHpf
c3VibWl0X2NvbW1hbmQ7CiAgCXNjLT5hbXJfZ2V0X3dvcmsgICAgICAgPSBhbXJfcXVhcnR6X2dl
dF93b3JrOwogIAlzYy0+YW1yX3BvbGxfY29tbWFuZCAgID0gYW1yX3F1YXJ0el9wb2xsX2NvbW1h
bmQ7CisgCXNjLT5hbXJfcG9sbF9jb21tYW5kMSAgPSBhbXJfcXVhcnR6X3BvbGxfY29tbWFuZDE7
CiAgICAgIH0gZWxzZSB7CiAgCXNjLT5hbXJfc3VibWl0X2NvbW1hbmQgPSBhbXJfc3RkX3N1Ym1p
dF9jb21tYW5kOwogIAlzYy0+YW1yX2dldF93b3JrICAgICAgID0gYW1yX3N0ZF9nZXRfd29yazsK
KioqKioqKioqKioqKioqCioqKiA0MzAsNDM3ICoqKioKICAKICAgICAgY2FzZSBBTVJfSU9fQ09N
TUFORDoKICAJZGVidWcoMSwgIkFNUl9JT19DT01NQU5EICAweCV4IiwgYXUtPmF1X2NtZFswXSk7
CiAgCS8qIGhhbmRsZSBpbmJvdW5kIGRhdGEgYnVmZmVyICovCiEgCWlmIChhdS0+YXVfbGVuZ3Ro
ICE9IDApIHsKICAJICAgIGlmICgoZHAgPSBtYWxsb2MoYXUtPmF1X2xlbmd0aCwgTV9ERVZCVUYs
IE1fV0FJVE9LKSkgPT0gTlVMTCkgewogIAkJZXJyb3IgPSBFTk9NRU07CiAgCQlicmVhazsKLS0t
IDQzNiw0NDcgLS0tLQogIAogICAgICBjYXNlIEFNUl9JT19DT01NQU5EOgogIAlkZWJ1ZygxLCAi
QU1SX0lPX0NPTU1BTkQgIDB4JXgiLCBhdS0+YXVfY21kWzBdKTsKKyAJLyogTG9naWNhbCBEcml2
ZSBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBkcml2ZXIgKi8KKyAJaWYgKGF1LT5hdV9jbWRbMF0gPT0g
MHhhNCAmJiBhdS0+YXVfY21kWzFdID09IDB4MWMpCisgCSAgICByZXR1cm4gKEVOT0lPQ1RMKTsK
KyAKICAJLyogaGFuZGxlIGluYm91bmQgZGF0YSBidWZmZXIgKi8KISAJaWYgKGF1LT5hdV9sZW5n
dGggIT0gMCAmJiBhdS0+YXVfY21kWzBdICE9IDB4MDYpIHsKICAJICAgIGlmICgoZHAgPSBtYWxs
b2MoYXUtPmF1X2xlbmd0aCwgTV9ERVZCVUYsIE1fV0FJVE9LKSkgPT0gTlVMTCkgewogIAkJZXJy
b3IgPSBFTk9NRU07CiAgCQlicmVhazsKKioqKioqKioqKioqKioqCioqKiA2ODEsNjkwICoqKioK
ICAgICAgaWYgKChhYyA9IGFtcl9hbGxvY2NtZChzYykpID09IE5VTEwpCiAgCWdvdG8gb3V0Owog
ICAgICAvKiBhbGxvY2F0ZSB0aGUgcmVzcG9uc2Ugc3RydWN0dXJlICovCiEgICAgIGlmICgocmVz
dWx0ID0gbWFsbG9jKGJ1ZnNpemUsIE1fREVWQlVGLCBNX05PV0FJVCkpID09IE5VTEwpCiAgCWdv
dG8gb3V0OwogICAgICAvKiBzZXQgY29tbWFuZCBmbGFncyAqLwohICAgICBhYy0+YWNfZmxhZ3Mg
fD0gQU1SX0NNRF9QUklPUklUWSB8IEFNUl9DTURfREFUQU9VVDsKICAgICAgCiAgICAgIC8qIHBv
aW50IHRoZSBjb21tYW5kIGF0IG91ciBkYXRhICovCiAgICAgIGFjLT5hY19kYXRhID0gcmVzdWx0
OwotLS0gNjkxLDcwMSAtLS0tCiAgICAgIGlmICgoYWMgPSBhbXJfYWxsb2NjbWQoc2MpKSA9PSBO
VUxMKQogIAlnb3RvIG91dDsKICAgICAgLyogYWxsb2NhdGUgdGhlIHJlc3BvbnNlIHN0cnVjdHVy
ZSAqLwohICAgICBpZiAoKHJlc3VsdCA9IG1hbGxvYyhidWZzaXplLCBNX0RFVkJVRiwgTV9aRVJP
fE1fTk9XQUlUKSkgPT0gTlVMTCkKICAJZ290byBvdXQ7CiAgICAgIC8qIHNldCBjb21tYW5kIGZs
YWdzICovCiEgCiEgICAgIGFjLT5hY19mbGFncyB8PSBBTVJfQ01EX1BSSU9SSVRZIHwgQU1SX0NN
RF9EQVRBSU47CiAgICAgIAogICAgICAvKiBwb2ludCB0aGUgY29tbWFuZCBhdCBvdXIgZGF0YSAq
LwogICAgICBhYy0+YWNfZGF0YSA9IHJlc3VsdDsKKioqKioqKioqKioqKioqCioqKiA3OTQsNzk5
ICoqKioKLS0tIDgwNSw4MTQgLS0tLQogICAgICAvKiBzcGluIHVudGlsIHNvbWV0aGluZyBwcmV2
ZW50cyB1cyBmcm9tIGRvaW5nIGFueSB3b3JrICovCiAgICAgIGZvciAoOzspIHsKICAKKyAJLyog
RG9uJ3QgYm90aGVyIHRvIHF1ZXVlIGNvbW1hbmRzIG5vIGJvdW5jZSBidWZmZXJzIGFyZSBhdmFp
bGFibGUuICovCisgCWlmIChzYy0+YW1yX3N0YXRlICYgQU1SX1NUQVRFX1FVRVVFX0ZSWk4pCisg
CSAgICBicmVhazsKKyAKICAJLyogdHJ5IHRvIGdldCBhIHJlYWR5IGNvbW1hbmQgKi8KICAJYWMg
PSBhbXJfZGVxdWV1ZV9yZWFkeShzYyk7CiAgCioqKioqKioqKioqKioqKgoqKiogOTY3LDk3MiAq
KioqCi0tLSA5ODIsOTk4IC0tLS0KICAgICAgcmV0dXJuKGVycm9yKTsKICB9CiAgCisgc3RhdGlj
IHZvaWQKKyBhbXJfc2V0dXBfcG9sbGVkX2RtYW1hcCh2b2lkICphcmcsIGJ1c19kbWFfc2VnbWVu
dF90ICpzZWdzLCBpbnQgbnNlZ3MsIGludCBlcnIpCisgeworICAgICBzdHJ1Y3QgYW1yX2NvbW1h
bmQgKmFjID0gYXJnOworICAgICBzdHJ1Y3QgYW1yX3NvZnRjICpzYyA9IGFjLT5hY19zYzsKKyAK
KyAgICAgYW1yX3NldHVwX2RtYW1hcChhcmcsIHNlZ3MsIG5zZWdzLCBlcnIpOworICAgICBidXNf
ZG1hbWFwX3N5bmMoc2MtPmFtcl9idWZmZXJfZG1hdCxhYy0+YWNfZG1hbWFwLEJVU19ETUFTWU5D
X1BSRVJFQUQpOworICAgICBzYy0+YW1yX3BvbGxfY29tbWFuZDEoc2MsIGFjKTsKKyB9CisgCiAg
LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqCiAgICogVGFrZSBhIGNvbW1hbmQsIHN1Ym1pdCBpdCB0
byB0aGUgY29udHJvbGxlciBhbmQgYnVzeS13YWl0IGZvciBpdCB0byByZXR1cm4uCiAgICogUmV0
dXJucyBub256ZXJvIG9uIGVycm9yLiAgQ2FuIGJlIHNhZmVseSBjYWxsZWQgd2l0aCBpbnRlcnJ1
cHRzIGVuYWJsZWQuCioqKioqKioqKioqKioqKgoqKiogOTc1LDk5MSAqKioqCiAgYW1yX3F1YXJ0
el9wb2xsX2NvbW1hbmQoc3RydWN0IGFtcl9jb21tYW5kICphYykKICB7CiAgICAgIHN0cnVjdCBh
bXJfc29mdGMJKnNjID0gYWMtPmFjX3NjOwohICAgICBpbnQJCQlzOwohICAgICBpbnQJCQllcnJv
cixjb3VudDsKICAKICAgICAgZGVidWdfY2FsbGVkKDIpOwogIAogICAgICAvKiBub3cgd2UgaGF2
ZSBhIHNsb3QsIHdlIGNhbiBtYXAgdGhlIGNvbW1hbmQgKHVubWFwcGVkIGluIGFtcl9jb21wbGV0
ZSkgKi8KISAgICAgYW1yX21hcGNtZChhYyk7CiAgCiEgICAgIHMgPSBzcGxiaW8oKTsKICAKISAg
ICAgaWYgKChzYy0+YW1yX3N0YXRlICYgQU1SX1NUQVRFX0NSQVNIRFVNUCkgPT0gMCkgewogIAlj
b3VudD0wOwogIAl3aGlsZSAoc2MtPmFtcl9idXN5c2xvdHMpewogIAkgICAgdHNsZWVwKHNjLCBQ
UklCSU8gfCBQQ0FUQ0gsICJhbXJwb2xsIiwgaHopOwotLS0gMTAwMSwxMDMzIC0tLS0KICBhbXJf
cXVhcnR6X3BvbGxfY29tbWFuZChzdHJ1Y3QgYW1yX2NvbW1hbmQgKmFjKQogIHsKICAgICAgc3Ry
dWN0IGFtcl9zb2Z0Ywkqc2MgPSBhYy0+YWNfc2M7CiEgICAgIGludAkJCXMsIGVycm9yOwogIAog
ICAgICBkZWJ1Z19jYWxsZWQoMik7CiAgCisgICAgIHMgPSBzcGxiaW8oKTsKKyAgICAgZXJyb3Ig
PSAwOworIAogICAgICAvKiBub3cgd2UgaGF2ZSBhIHNsb3QsIHdlIGNhbiBtYXAgdGhlIGNvbW1h
bmQgKHVubWFwcGVkIGluIGFtcl9jb21wbGV0ZSkgKi8KISAgICAgaWYgKGFjLT5hY19kYXRhICE9
IDApIHsKISAJaWYgKGJ1c19kbWFtYXBfbG9hZChzYy0+YW1yX2J1ZmZlcl9kbWF0LCBhYy0+YWNf
ZG1hbWFwLCBhYy0+YWNfZGF0YSwKISAJICAgIGFjLT5hY19sZW5ndGgsIGFtcl9zZXR1cF9wb2xs
ZWRfZG1hbWFwLCBhYywgQlVTX0RNQV9OT1dBSVQpICE9IDApIHsKISAJICAgIGVycm9yID0gMTsK
ISAJfQohICAgICB9IGVsc2UgewohIAllcnJvciA9IGFtcl9xdWFydHpfcG9sbF9jb21tYW5kMShz
YywgYWMpOwohICAgICB9CiAgCiEgICAgIHNwbHgocyk7CiEgICAgIHJldHVybiAoZXJyb3IpOwoh
IH0KISAKISBzdGF0aWMgaW50CiEgYW1yX3F1YXJ0el9wb2xsX2NvbW1hbmQxKHN0cnVjdCBhbXJf
c29mdGMgKnNjLCBzdHJ1Y3QgYW1yX2NvbW1hbmQgKmFjKQohIHsKISAgICAgaW50IGNvdW50LCBl
cnJvcjsKICAKISAgICAgaWYgKChzYy0+YW1yX3N0YXRlICYgQU1SX1NUQVRFX0lOVEVOKSA9PSAw
KSB7CiAgCWNvdW50PTA7CiAgCXdoaWxlIChzYy0+YW1yX2J1c3lzbG90cyl7CiAgCSAgICB0c2xl
ZXAoc2MsIFBSSUJJTyB8IFBDQVRDSCwgImFtcnBvbGwiLCBoeik7CioqKioqKioqKioqKioqKgoq
KiogOTk2LDEwMDMgKioqKgogIAogIAlpZihzYy0+YW1yX2J1c3lzbG90cykgewogIAkgICAgZGV2
aWNlX3ByaW50ZihzYy0+YW1yX2RldiwgImFkYXB0ZXIgaXMgYnVzeVxuIik7CiEgCSAgICBzcGx4
KHMpOwohIAkgICAgYW1yX3VubWFwY21kKGFjKTsKICAgICAgCSAgICBhYy0+YWNfc3RhdHVzPTA7
CiAgCSAgICByZXR1cm4oMSk7CiAgICAgICAgICB9Ci0tLSAxMDM4LDEwNDUgLS0tLQogIAogIAlp
ZihzYy0+YW1yX2J1c3lzbG90cykgewogIAkgICAgZGV2aWNlX3ByaW50ZihzYy0+YW1yX2Rldiwg
ImFkYXB0ZXIgaXMgYnVzeVxuIik7CiEgCSAgICBpZiAoYWMtPmFjX2RhdGEgIT0gTlVMTCkKISAJ
CWJ1c19kbWFtYXBfdW5sb2FkKHNjLT5hbXJfYnVmZmVyX2RtYXQsIGFjLT5hY19kbWFtYXApOwog
ICAgICAJICAgIGFjLT5hY19zdGF0dXM9MDsKICAJICAgIHJldHVybigxKTsKICAgICAgICAgIH0K
KioqKioqKioqKioqKioqCioqKiAxMDI3LDEwMzYgKioqKgogICAgICBBTVJfUVBVVF9JREIoc2Ms
IHNjLT5hbXJfbWFpbGJveHBoeXMgfCBBTVJfUUlEQl9BQ0spOwogICAgICB3aGlsZShBTVJfUUdF
VF9JREIoc2MpICYgQU1SX1FJREJfQUNLKTsKICAKLSAgICAgc3BseChzKTsKLSAKICAgICAgLyog
dW5tYXAgdGhlIGNvbW1hbmQncyBkYXRhIGJ1ZmZlciAqLwohICAgICBhbXJfdW5tYXBjbWQoYWMp
OwogIAogICAgICByZXR1cm4oZXJyb3IpOwogIH0KLS0tIDEwNjksMTA3NyAtLS0tCiAgICAgIEFN
Ul9RUFVUX0lEQihzYywgc2MtPmFtcl9tYWlsYm94cGh5cyB8IEFNUl9RSURCX0FDSyk7CiAgICAg
IHdoaWxlKEFNUl9RR0VUX0lEQihzYykgJiBBTVJfUUlEQl9BQ0spOwogIAogICAgICAvKiB1bm1h
cCB0aGUgY29tbWFuZCdzIGRhdGEgYnVmZmVyICovCiEgICAgIGJ1c19kbWFtYXBfc3luYyhzYy0+
YW1yX2J1ZmZlcl9kbWF0LCBhYy0+YWNfZG1hbWFwLCBCVVNfRE1BU1lOQ19QT1NUUkVBRCk7CiEg
ICAgIGJ1c19kbWFtYXBfdW5sb2FkKHNjLT5hbXJfYnVmZmVyX2RtYXQsIGFjLT5hY19kbWFtYXAp
OwogIAogICAgICByZXR1cm4oZXJyb3IpOwogIH0KKioqKioqKioqKioqKioqCioqKiAxMTEzLDEx
MjQgKioqKgogICAgICB9IGVsc2UgewogICAgICAgICAgYWMtPmFjX21haWxib3gubWJfbnNnZWxl
bSA9IG5zZWdtZW50czsKICAJKnNnYyA9IG5zZWdtZW50czsKISAJYWMtPmFjX21haWxib3gubWJf
cGh5c2FkZHIgPSBzYy0+YW1yX3NnYnVzYWRkciArIChhYy0+YWNfc2xvdCAqIEFNUl9OU0VHICog
c2l6ZW9mKHN0cnVjdCBhbXJfc2dlbnRyeSkpOwogIAlmb3IgKGkgPSAwOyBpIDwgbnNlZ21lbnRz
OyBpKyssIHNnKyspIHsKICAJICAgIHNnLT5zZ19hZGRyID0gc2Vnc1tpXS5kc19hZGRyOwogIAkg
ICAgc2ctPnNnX2NvdW50ID0gc2Vnc1tpXS5kc19sZW47CiAgCX0KICAgICAgfQogIH0KICAKICBz
dGF0aWMgdm9pZAotLS0gMTE1NCwxMTY3IC0tLS0KICAgICAgfSBlbHNlIHsKICAgICAgICAgIGFj
LT5hY19tYWlsYm94Lm1iX25zZ2VsZW0gPSBuc2VnbWVudHM7CiAgCSpzZ2MgPSBuc2VnbWVudHM7
CiEgCWFjLT5hY19tYWlsYm94Lm1iX3BoeXNhZGRyID0gc2MtPmFtcl9zZ2J1c2FkZHIgKwohIAkg
ICAgKGFjLT5hY19zbG90ICogQU1SX05TRUcgKiBzaXplb2Yoc3RydWN0IGFtcl9zZ2VudHJ5KSk7
CiAgCWZvciAoaSA9IDA7IGkgPCBuc2VnbWVudHM7IGkrKywgc2crKykgewogIAkgICAgc2ctPnNn
X2FkZHIgPSBzZWdzW2ldLmRzX2FkZHI7CiAgCSAgICBzZy0+c2dfY291bnQgPSBzZWdzW2ldLmRz
X2xlbjsKICAJfQogICAgICB9CisgCiAgfQogIAogIHN0YXRpYyB2b2lkCioqKioqKioqKioqKioq
KgoqKiogMTE0MiwxMTU3ICoqKioKICAJfSBlbHNlIHsKICAJICAgIC8qIHNhdmUgcy9nIHRhYmxl
IGluZm9ybWF0aW9uIGluIHBhc3N0aHJvdWdoICovCiAgCSAgICBhZXAtPmFwX25vX3NnX2VsZW1l
bnRzID0gbnNlZ21lbnRzOwohIAkgICAgYWVwLT5hcF9kYXRhX3RyYW5zZmVyX2FkZHJlc3MgPSBz
Yy0+YW1yX3NnYnVzYWRkciArIChhYy0+YWNfc2xvdCAqIEFNUl9OU0VHICogc2l6ZW9mKHN0cnVj
dCBhbXJfc2dlbnRyeSkpOwohIAkgICAgLyogcG9wdWxhdGUgcy9nIHRhYmxlIChvdmVyd3JpdGVz
IHByZXZpb3VzIGNhbGwgd2hpY2ggbWFwcGVkIHRoZSBwYXNzdGhyb3VnaCkgKi8KICAJICAgIGZv
ciAoaSA9IDA7IGkgPCBuc2VnbWVudHM7IGkrKywgc2crKykgewogIAkJc2ctPnNnX2FkZHIgPSBz
ZWdzW2ldLmRzX2FkZHI7CiAgCQlzZy0+c2dfY291bnQgPSBzZWdzW2ldLmRzX2xlbjsKICAJCWRl
YnVnKDMsICIgJWQ6IDB4JXgvJWQiLCBpLCBzZy0+c2dfYWRkciwgc2ctPnNnX2NvdW50KTsKICAJ
ICAgIH0KICAJfQohIAlkZWJ1ZygzLCAic2xvdCAlZCAgJWQgc2VnbWVudHMgYXQgMHgleCwgcGFz
c3Rocm91Z2ggYXQgMHgleCIsIGFjLT5hY19zbG90LAohIAkgICAgYWVwLT5hcF9ub19zZ19lbGVt
ZW50cywgYWVwLT5hcF9kYXRhX3RyYW5zZmVyX2FkZHJlc3MsIGFjLT5hY19kYXRhcGh5cyk7CiAg
ICAgIH0gZWxzZSB7CiAgCWlmIChuc2VnbWVudHMgPCAyKSB7CiAgCSAgICBhcC0+YXBfbm9fc2df
ZWxlbWVudHMgPSAwOwotLS0gMTE4NSwxMjA1IC0tLS0KICAJfSBlbHNlIHsKICAJICAgIC8qIHNh
dmUgcy9nIHRhYmxlIGluZm9ybWF0aW9uIGluIHBhc3N0aHJvdWdoICovCiAgCSAgICBhZXAtPmFw
X25vX3NnX2VsZW1lbnRzID0gbnNlZ21lbnRzOwohIAkgICAgYWVwLT5hcF9kYXRhX3RyYW5zZmVy
X2FkZHJlc3MgPSBzYy0+YW1yX3NnYnVzYWRkciArCiEgCQkoYWMtPmFjX3Nsb3QgKiBBTVJfTlNF
RyAqIHNpemVvZihzdHJ1Y3QgYW1yX3NnZW50cnkpKTsKISAJICAgIC8qCiEgCSAgICAgKiBwb3B1
bGF0ZSBzL2cgdGFibGUgKG92ZXJ3cml0ZXMgcHJldmlvdXMgY2FsbCB3aGljaCBtYXBwZWQgdGhl
CiEgCSAgICAgKiBwYXNzdGhyb3VnaCkKISAJICAgICAqLwogIAkgICAgZm9yIChpID0gMDsgaSA8
IG5zZWdtZW50czsgaSsrLCBzZysrKSB7CiAgCQlzZy0+c2dfYWRkciA9IHNlZ3NbaV0uZHNfYWRk
cjsKICAJCXNnLT5zZ19jb3VudCA9IHNlZ3NbaV0uZHNfbGVuOwogIAkJZGVidWcoMywgIiAlZDog
MHgleC8lZCIsIGksIHNnLT5zZ19hZGRyLCBzZy0+c2dfY291bnQpOwogIAkgICAgfQogIAl9CiEg
CWRlYnVnKDMsICJzbG90ICVkICAlZCBzZWdtZW50cyBhdCAweCV4LCBwYXNzdGhyb3VnaCBhdCAw
eCV4XG4iLAohIAkgICAgYWMtPmFjX3Nsb3QsIGFlcC0+YXBfbm9fc2dfZWxlbWVudHMsIGFlcC0+
YXBfZGF0YV90cmFuc2Zlcl9hZGRyZXNzLAohIAkgICAgYWMtPmFjX2RhdGFwaHlzKTsKICAgICAg
fSBlbHNlIHsKICAJaWYgKG5zZWdtZW50cyA8IDIpIHsKICAJICAgIGFwLT5hcF9ub19zZ19lbGVt
ZW50cyA9IDA7CioqKioqKioqKioqKioqKgoqKiogMTE1OSwxMTc4ICoqKioKICAJfSBlbHNlIHsK
ICAJICAgIC8qIHNhdmUgcy9nIHRhYmxlIGluZm9ybWF0aW9uIGluIHBhc3N0aHJvdWdoICovCiAg
CSAgICBhcC0+YXBfbm9fc2dfZWxlbWVudHMgPSBuc2VnbWVudHM7CiEgCSAgICBhcC0+YXBfZGF0
YV90cmFuc2Zlcl9hZGRyZXNzID0gc2MtPmFtcl9zZ2J1c2FkZHIgKyAoYWMtPmFjX3Nsb3QgKiBB
TVJfTlNFRyAqIHNpemVvZihzdHJ1Y3QgYW1yX3NnZW50cnkpKTsKISAJICAgIC8qIHBvcHVsYXRl
IHMvZyB0YWJsZSAob3ZlcndyaXRlcyBwcmV2aW91cyBjYWxsIHdoaWNoIG1hcHBlZCB0aGUgcGFz
c3Rocm91Z2gpICovCiAgCSAgICBmb3IgKGkgPSAwOyBpIDwgbnNlZ21lbnRzOyBpKyssIHNnKysp
IHsKICAJCXNnLT5zZ19hZGRyID0gc2Vnc1tpXS5kc19hZGRyOwogIAkJc2ctPnNnX2NvdW50ID0g
c2Vnc1tpXS5kc19sZW47CiAgCQlkZWJ1ZygzLCAiICVkOiAweCV4LyVkIiwgaSwgc2ctPnNnX2Fk
ZHIsIHNnLT5zZ19jb3VudCk7CiAgCSAgICB9CiAgCX0KISAJZGVidWcoMywgInNsb3QgJWQgICVk
IHNlZ21lbnRzIGF0IDB4JXgsIHBhc3N0aHJvdWdoIGF0IDB4JXgiLCBhYy0+YWNfc2xvdCwKISAJ
ICAgIGFwLT5hcF9ub19zZ19lbGVtZW50cywgYXAtPmFwX2RhdGFfdHJhbnNmZXJfYWRkcmVzcywg
YWMtPmFjX2RhdGFwaHlzKTsKISAgICAgfQogIH0KICAKISBzdGF0aWMgdm9pZAogIGFtcl9tYXBj
bWQoc3RydWN0IGFtcl9jb21tYW5kICphYykKICB7CiAgICAgIHN0cnVjdCBhbXJfc29mdGMJKnNj
ID0gYWMtPmFjX3NjOwotLS0gMTIwNywxMjQ4IC0tLS0KICAJfSBlbHNlIHsKICAJICAgIC8qIHNh
dmUgcy9nIHRhYmxlIGluZm9ybWF0aW9uIGluIHBhc3N0aHJvdWdoICovCiAgCSAgICBhcC0+YXBf
bm9fc2dfZWxlbWVudHMgPSBuc2VnbWVudHM7CiEgCSAgICBhcC0+YXBfZGF0YV90cmFuc2Zlcl9h
ZGRyZXNzID0gc2MtPmFtcl9zZ2J1c2FkZHIgKwohIAkJKGFjLT5hY19zbG90ICogQU1SX05TRUcg
KiBzaXplb2Yoc3RydWN0IGFtcl9zZ2VudHJ5KSk7CiEgCSAgICAvKgohIAkgICAgICogcG9wdWxh
dGUgcy9nIHRhYmxlIChvdmVyd3JpdGVzIHByZXZpb3VzIGNhbGwgd2hpY2ggbWFwcGVkIHRoZQoh
IAkgICAgICogcGFzc3Rocm91Z2gpCiEgCSAgICAgKi8KICAJICAgIGZvciAoaSA9IDA7IGkgPCBu
c2VnbWVudHM7IGkrKywgc2crKykgewogIAkJc2ctPnNnX2FkZHIgPSBzZWdzW2ldLmRzX2FkZHI7
CiAgCQlzZy0+c2dfY291bnQgPSBzZWdzW2ldLmRzX2xlbjsKICAJCWRlYnVnKDMsICIgJWQ6IDB4
JXgvJWQiLCBpLCBzZy0+c2dfYWRkciwgc2ctPnNnX2NvdW50KTsKICAJICAgIH0KICAJfQohIAlk
ZWJ1ZygzLCAic2xvdCAlZCAgJWQgc2VnbWVudHMgYXQgMHgleCwgcGFzc3Rocm91Z2ggYXQgMHgl
eCIsCiEgCSAgICBhYy0+YWNfc2xvdCwgYXAtPmFwX25vX3NnX2VsZW1lbnRzLCBhcC0+YXBfZGF0
YV90cmFuc2Zlcl9hZGRyZXNzLAohIAkgICAgYWMtPmFjX2RhdGFwaHlzKTsKISAgICAgfQohICAg
ICBpZiAoYWMtPmFjX2ZsYWdzICYgQU1SX0NNRF9DQ0JfREFUQUlOKQohIAlidXNfZG1hbWFwX3N5
bmMoc2MtPmFtcl9idWZmZXJfZG1hdCwgYWMtPmFjX2NjYl9kbWFtYXAsCiEgCSAgICBCVVNfRE1B
U1lOQ19QUkVSRUFEKTsKISAgICAgaWYgKGFjLT5hY19mbGFncyAmIEFNUl9DTURfQ0NCX0RBVEFP
VVQpCiEgCWJ1c19kbWFtYXBfc3luYyhzYy0+YW1yX2J1ZmZlcl9kbWF0LCBhYy0+YWNfY2NiX2Rt
YW1hcCwKISAJICAgIEJVU19ETUFTWU5DX1BSRVdSSVRFKTsKISAgICAgaWYgKChhYy0+YWNfZmxh
Z3MgJiAoQU1SX0NNRF9DQ0JfREFUQUlOIHwgQU1SX0NNRF9DQ0JfREFUQU9VVCkpID09IDApCiEg
CXBhbmljKCJubyBkaXJlY3Rpb24gZm9yIGNjYj9cbiIpOwohIAohICAgICBpZiAoYWMtPmFjX2Zs
YWdzICYgQU1SX0NNRF9EQVRBSU4pCiEgCWJ1c19kbWFtYXBfc3luYyhzYy0+YW1yX2J1ZmZlcl9k
bWF0LGFjLT5hY19kbWFtYXAsQlVTX0RNQVNZTkNfUFJFUkVBRCk7CiEgICAgIGlmIChhYy0+YWNf
ZmxhZ3MgJiBBTVJfQ01EX0RBVEFPVVQpCiEgCWJ1c19kbWFtYXBfc3luYyhzYy0+YW1yX2J1ZmZl
cl9kbWF0LGFjLT5hY19kbWFtYXAsQlVTX0RNQVNZTkNfUFJFV1JJVEUpOwohIAohICAgICBhYy0+
YWNfZmxhZ3MgfD0gQU1SX0NNRF9NQVBQRUQ7CiEgCiEgICAgIGFtcl9zdGFydDEoc2MsIGFjKTsK
ICB9CiAgCiEgc3RhdGljIGludAogIGFtcl9tYXBjbWQoc3RydWN0IGFtcl9jb21tYW5kICphYykK
ICB7CiAgICAgIHN0cnVjdCBhbXJfc29mdGMJKnNjID0gYWMtPmFjX3NjOwoqKioqKioqKioqKioq
KioKKioqIDExODAsMTIwNyAqKioqCiAgICAgIGRlYnVnX2NhbGxlZCgzKTsKICAKICAgICAgLyog
aWYgdGhlIGNvbW1hbmQgaW52b2x2ZXMgZGF0YSBhdCBhbGwsIGFuZCBoYXNuJ3QgYmVlbiBtYXBw
ZWQgKi8KISAgICAgaWYgKCEoYWMtPmFjX2ZsYWdzICYgQU1SX0NNRF9NQVBQRUQpKSB7CiEgCiEg
CWlmIChhYy0+YWNfZGF0YSAhPSBOVUxMKSB7CiAgCSAgICAvKiBtYXAgdGhlIGRhdGEgYnVmZmVy
cyBpbnRvIGJ1cyBzcGFjZSBhbmQgYnVpbGQgdGhlIHMvZyBsaXN0ICovCiEgCSAgICBidXNfZG1h
bWFwX2xvYWQoc2MtPmFtcl9idWZmZXJfZG1hdCwgYWMtPmFjX2RtYW1hcCwgYWMtPmFjX2RhdGEs
IGFjLT5hY19sZW5ndGgsCiEgCQkJICAgIGFtcl9zZXR1cF9kbWFtYXAsIGFjLCAwKTsKISAJICAg
IGlmIChhYy0+YWNfZmxhZ3MgJiBBTVJfQ01EX0RBVEFJTikKISAJCWJ1c19kbWFtYXBfc3luYyhz
Yy0+YW1yX2J1ZmZlcl9kbWF0LCBhYy0+YWNfZG1hbWFwLCBCVVNfRE1BU1lOQ19QUkVSRUFEKTsK
ISAJICAgIGlmIChhYy0+YWNfZmxhZ3MgJiBBTVJfQ01EX0RBVEFPVVQpCiEgCQlidXNfZG1hbWFw
X3N5bmMoc2MtPmFtcl9idWZmZXJfZG1hdCwgYWMtPmFjX2RtYW1hcCwgQlVTX0RNQVNZTkNfUFJF
V1JJVEUpOwohIAl9CiAgCiEgCWlmIChhYy0+YWNfY2NiX2RhdGEgIT0gTlVMTCkgewohIAkgICAg
YnVzX2RtYW1hcF9sb2FkKHNjLT5hbXJfYnVmZmVyX2RtYXQsIGFjLT5hY19jY2JfZG1hbWFwLCBh
Yy0+YWNfY2NiX2RhdGEsIGFjLT5hY19jY2JfbGVuZ3RoLAohIAkJCSAgICBhbXJfc2V0dXBfY2Ni
bWFwLCBhYywgMCk7CiEgCSAgICBpZiAoYWMtPmFjX2ZsYWdzICYgQU1SX0NNRF9DQ0JfREFUQUlO
KQohIAkJYnVzX2RtYW1hcF9zeW5jKHNjLT5hbXJfYnVmZmVyX2RtYXQsIGFjLT5hY19jY2JfZG1h
bWFwLCBCVVNfRE1BU1lOQ19QUkVSRUFEKTsKISAJICAgIGlmIChhYy0+YWNfZmxhZ3MgJiBBTVJf
Q01EX0NDQl9EQVRBT1VUKQohIAkJYnVzX2RtYW1hcF9zeW5jKHNjLT5hbXJfYnVmZmVyX2RtYXQs
IGFjLT5hY19jY2JfZG1hbWFwLCBCVVNfRE1BU1lOQ19QUkVXUklURSk7CiEgCX0KISAJYWMtPmFj
X2ZsYWdzIHw9IEFNUl9DTURfTUFQUEVEOwohICAgICB9CiAgfQogIAogIHN0YXRpYyB2b2lkCi0t
LSAxMjUwLDEyNzggLS0tLQogICAgICBkZWJ1Z19jYWxsZWQoMyk7CiAgCiAgICAgIC8qIGlmIHRo
ZSBjb21tYW5kIGludm9sdmVzIGRhdGEgYXQgYWxsLCBhbmQgaGFzbid0IGJlZW4gbWFwcGVkICov
CiEgICAgIGlmICgoYWMtPmFjX2ZsYWdzICYgQU1SX0NNRF9NQVBQRUQpID09IDAgJiYgKGFjLT5h
Y19kYXRhICE9IE5VTEwpKSB7CiEgCWlmIChhYy0+YWNfY2NiX2RhdGEgPT0gTlVMTCkgewogIAkg
ICAgLyogbWFwIHRoZSBkYXRhIGJ1ZmZlcnMgaW50byBidXMgc3BhY2UgYW5kIGJ1aWxkIHRoZSBz
L2cgbGlzdCAqLwohIAkgICAgaWYgKGJ1c19kbWFtYXBfbG9hZChzYy0+YW1yX2J1ZmZlcl9kbWF0
LCBhYy0+YWNfZG1hbWFwLCBhYy0+YWNfZGF0YSwKISAJCWFjLT5hY19sZW5ndGgsIGFtcl9zZXR1
cF9kYXRhX2RtYW1hcCwgYWMsIDApID09IEVJTlBST0dSRVNTKSB7CiEgCQlzYy0+YW1yX3N0YXRl
IHw9IEFNUl9TVEFURV9RVUVVRV9GUlpOOwohIAkgICAgfQohIAl9IGVsc2UgewohIAkgICAgaWYg
KGJ1c19kbWFtYXBfbG9hZChzYy0+YW1yX2J1ZmZlcl9kbWF0LCBhYy0+YWNfZG1hbWFwLCBhYy0+
YWNfZGF0YSwKISAJCWFjLT5hY19sZW5ndGgsIGFtcl9zZXR1cF9kbWFtYXAsIGFjLCBCVVNfRE1B
X05PV0FJVCkgIT0gMCl7CiEgCQlyZXR1cm4gKEVOT01FTSk7CiEgCSAgICB9CiEgCSAgICBpZiAo
YnVzX2RtYW1hcF9sb2FkKHNjLT5hbXJfYnVmZmVyX2RtYXQsIGFjLT5hY19jY2JfZG1hbWFwLAoh
IAkJYWMtPmFjX2NjYl9kYXRhLCBhYy0+YWNfY2NiX2xlbmd0aCwgYW1yX3NldHVwX2NjYm1hcCwg
YWMsCiEgCQkwKSA9PSBFSU5QUk9HUkVTUykgewohIAkJc2MtPmFtcl9zdGF0ZSB8PSBBTVJfU1RB
VEVfUVVFVUVfRlJaTjsKISAJICAgIH0KISAgICAgIH0KISAgICB9IGVsc2UgaWYgKChhYy0+YWNf
ZmxhZ3MgJiBBTVJfQ01EX01BUFBFRCkgPT0gMCkgewohICAgICAJYW1yX3N0YXJ0MShzYywgYWMp
OwohICAgIH0KICAKISAgICAgcmV0dXJuICgwKTsKICB9CiAgCiAgc3RhdGljIHZvaWQKKioqKioq
KioqKioqKioqCioqKiAxMjE2LDEyMzggKioqKgogIAogIAlpZiAoYWMtPmFjX2RhdGEgIT0gTlVM
TCkgewogIAkgICAgaWYgKGFjLT5hY19mbGFncyAmIEFNUl9DTURfREFUQUlOKQohIAkJYnVzX2Rt
YW1hcF9zeW5jKHNjLT5hbXJfYnVmZmVyX2RtYXQsIGFjLT5hY19kbWFtYXAsIEJVU19ETUFTWU5D
X1BPU1RSRUFEKTsKICAJICAgIGlmIChhYy0+YWNfZmxhZ3MgJiBBTVJfQ01EX0RBVEFPVVQpCiEg
CQlidXNfZG1hbWFwX3N5bmMoc2MtPmFtcl9idWZmZXJfZG1hdCwgYWMtPmFjX2RtYW1hcCwgQlVT
X0RNQVNZTkNfUE9TVFdSSVRFKTsKICAJICAgIGJ1c19kbWFtYXBfdW5sb2FkKHNjLT5hbXJfYnVm
ZmVyX2RtYXQsIGFjLT5hY19kbWFtYXApOwogIAl9CiAgCiAgCWlmIChhYy0+YWNfY2NiX2RhdGEg
IT0gTlVMTCkgewogIAkgICAgaWYgKGFjLT5hY19mbGFncyAmIEFNUl9DTURfQ0NCX0RBVEFJTikK
ISAJCWJ1c19kbWFtYXBfc3luYyhzYy0+YW1yX2J1ZmZlcl9kbWF0LCBhYy0+YWNfY2NiX2RtYW1h
cCwgQlVTX0RNQVNZTkNfUE9TVFJFQUQpOwogIAkgICAgaWYgKGFjLT5hY19mbGFncyAmIEFNUl9D
TURfQ0NCX0RBVEFPVVQpCiEgCQlidXNfZG1hbWFwX3N5bmMoc2MtPmFtcl9idWZmZXJfZG1hdCwg
YWMtPmFjX2NjYl9kbWFtYXAsIEJVU19ETUFTWU5DX1BPU1RXUklURSk7CiAgCSAgICBidXNfZG1h
bWFwX3VubG9hZChzYy0+YW1yX2J1ZmZlcl9kbWF0LCBhYy0+YWNfY2NiX2RtYW1hcCk7CiAgCX0K
ICAJYWMtPmFjX2ZsYWdzICY9IH5BTVJfQ01EX01BUFBFRDsKICAgICAgfQogIH0KICAKICAvKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioKICAgKiBUYWtlIGEgY29tbWFuZCBhbmQgZ2l2ZSBpdCB0byB0
aGUgY29udHJvbGxlciwgcmV0dXJucyAwIGlmIHN1Y2Nlc3NmdWwsIG9yCiAgICogRUJVU1kgaWYg
dGhlIGNvbW1hbmQgc2hvdWxkIGJlIHJldHJpZWQgbGF0ZXIuCi0tLSAxMjg3LDEzMzAgLS0tLQog
IAogIAlpZiAoYWMtPmFjX2RhdGEgIT0gTlVMTCkgewogIAkgICAgaWYgKGFjLT5hY19mbGFncyAm
IEFNUl9DTURfREFUQUlOKQohIAkJYnVzX2RtYW1hcF9zeW5jKHNjLT5hbXJfYnVmZmVyX2RtYXQs
IGFjLT5hY19kbWFtYXAsCiEgCQkgICAgQlVTX0RNQVNZTkNfUE9TVFJFQUQpOwogIAkgICAgaWYg
KGFjLT5hY19mbGFncyAmIEFNUl9DTURfREFUQU9VVCkKISAJCWJ1c19kbWFtYXBfc3luYyhzYy0+
YW1yX2J1ZmZlcl9kbWF0LCBhYy0+YWNfZG1hbWFwLAohIAkJICAgIEJVU19ETUFTWU5DX1BPU1RX
UklURSk7CiAgCSAgICBidXNfZG1hbWFwX3VubG9hZChzYy0+YW1yX2J1ZmZlcl9kbWF0LCBhYy0+
YWNfZG1hbWFwKTsKICAJfQogIAogIAlpZiAoYWMtPmFjX2NjYl9kYXRhICE9IE5VTEwpIHsKICAJ
ICAgIGlmIChhYy0+YWNfZmxhZ3MgJiBBTVJfQ01EX0NDQl9EQVRBSU4pCiEgCQlidXNfZG1hbWFw
X3N5bmMoc2MtPmFtcl9idWZmZXJfZG1hdCwgYWMtPmFjX2NjYl9kbWFtYXAsCiEgCQkgICAgQlVT
X0RNQVNZTkNfUE9TVFJFQUQpOwogIAkgICAgaWYgKGFjLT5hY19mbGFncyAmIEFNUl9DTURfQ0NC
X0RBVEFPVVQpCiEgCQlidXNfZG1hbWFwX3N5bmMoc2MtPmFtcl9idWZmZXJfZG1hdCwgYWMtPmFj
X2NjYl9kbWFtYXAsCiEgCQkgICAgQlVTX0RNQVNZTkNfUE9TVFdSSVRFKTsKICAJICAgIGJ1c19k
bWFtYXBfdW5sb2FkKHNjLT5hbXJfYnVmZmVyX2RtYXQsIGFjLT5hY19jY2JfZG1hbWFwKTsKICAJ
fQogIAlhYy0+YWNfZmxhZ3MgJj0gfkFNUl9DTURfTUFQUEVEOwogICAgICB9CiAgfQogIAorIHN0
YXRpYyB2b2lkCisgYW1yX3NldHVwX2RhdGFfZG1hbWFwKHZvaWQgKmFyZywgYnVzX2RtYV9zZWdt
ZW50X3QgKnNlZ3MsIGludCBuc2VncywgaW50IGVycikKKyB7CisgICAgIHN0cnVjdCBhbXJfY29t
bWFuZCAqYWMgPSBhcmc7CisgICAgIHN0cnVjdCBhbXJfc29mdGMgKnNjID0gYWMtPmFjX3NjOwor
IAorICAgICBhbXJfc2V0dXBfZG1hbWFwKGFyZywgc2VncywgbnNlZ3MsIGVycik7CisgCisgICAg
IGlmIChhYy0+YWNfZmxhZ3MgJiBBTVJfQ01EX0RBVEFJTikKKyAJYnVzX2RtYW1hcF9zeW5jKHNj
LT5hbXJfYnVmZmVyX2RtYXQsYWMtPmFjX2RtYW1hcCxCVVNfRE1BU1lOQ19QUkVSRUFEKTsKKyAg
ICAgaWYgKGFjLT5hY19mbGFncyAmIEFNUl9DTURfREFUQU9VVCkKKyAJYnVzX2RtYW1hcF9zeW5j
KHNjLT5hbXJfYnVmZmVyX2RtYXQsYWMtPmFjX2RtYW1hcCxCVVNfRE1BU1lOQ19QUkVXUklURSk7
CisgICAgIGFjLT5hY19mbGFncyB8PSBBTVJfQ01EX01BUFBFRDsKKyAKKyAgICAgYW1yX3N0YXJ0
MShzYywgYWMpOworIH0KKyAgICAKICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgKiBUYWtl
IGEgY29tbWFuZCBhbmQgZ2l2ZSBpdCB0byB0aGUgY29udHJvbGxlciwgcmV0dXJucyAwIGlmIHN1
Y2Nlc3NmdWwsIG9yCiAgICogRUJVU1kgaWYgdGhlIGNvbW1hbmQgc2hvdWxkIGJlIHJldHJpZWQg
bGF0ZXIuCioqKioqKioqKioqKioqKgoqKiogMTI0MCwxMjU5ICoqKioKICBzdGF0aWMgaW50CiAg
YW1yX3N0YXJ0KHN0cnVjdCBhbXJfY29tbWFuZCAqYWMpCiAgewohICAgICBzdHJ1Y3QgYW1yX3Nv
ZnRjCSpzYyA9IGFjLT5hY19zYzsKISAgICAgaW50CQkJZG9uZSwgcywgaTsKICAKICAgICAgZGVi
dWdfY2FsbGVkKDMpOwogIAogICAgICAvKiBtYXJrIGNvbW1hbmQgYXMgYnVzeSBzbyB0aGF0IHBv
bGxpbmcgY29uc3VtZXIgY2FuIHRlbGwgKi8KICAgICAgYWMtPmFjX2ZsYWdzIHw9IEFNUl9DTURf
QlVTWTsKICAKICAgICAgLyogZ2V0IGEgY29tbWFuZCBzbG90IChmcmVlZCBpbiBhbXJfZG9uZSkg
Ki8KICAgICAgaWYgKGFtcl9nZXRzbG90KGFjKSkKICAJcmV0dXJuKEVCVVNZKTsKICAKISAgICAg
Lyogbm93IHdlIGhhdmUgYSBzbG90LCB3ZSBjYW4gbWFwIHRoZSBjb21tYW5kICh1bm1hcHBlZCBp
biBhbXJfY29tcGxldGUpICovCiEgICAgIGFtcl9tYXBjbWQoYWMpOwogIAogICAgICAvKiBtYXJr
IHRoZSBuZXcgbWFpbGJveCB3ZSBhcmUgZ29pbmcgdG8gY29weSBpbiBhcyBidXN5ICovCiAgICAg
IGFjLT5hY19tYWlsYm94Lm1iX2J1c3kgPSAxOwotLS0gMTMzMiwxMzY4IC0tLS0KICBzdGF0aWMg
aW50CiAgYW1yX3N0YXJ0KHN0cnVjdCBhbXJfY29tbWFuZCAqYWMpCiAgewohICAgICBzdHJ1Y3Qg
YW1yX3NvZnRjICpzYzsKISAgICAgaW50IGVycm9yID0gMDsKICAKICAgICAgZGVidWdfY2FsbGVk
KDMpOwogIAogICAgICAvKiBtYXJrIGNvbW1hbmQgYXMgYnVzeSBzbyB0aGF0IHBvbGxpbmcgY29u
c3VtZXIgY2FuIHRlbGwgKi8KKyAgICAgc2MgPSBhYy0+YWNfc2M7CiAgICAgIGFjLT5hY19mbGFn
cyB8PSBBTVJfQ01EX0JVU1k7CiAgCiAgICAgIC8qIGdldCBhIGNvbW1hbmQgc2xvdCAoZnJlZWQg
aW4gYW1yX2RvbmUpICovCiAgICAgIGlmIChhbXJfZ2V0c2xvdChhYykpCiAgCXJldHVybihFQlVT
WSk7CiAgCiEgICAgIC8qIE5vdyB3ZSBoYXZlIGEgc2xvdCwgd2UgY2FuIG1hcCB0aGUgY29tbWFu
ZCAodW5tYXBwZWQgaW4gYW1yX2NvbXBsZXRlKS4gKi8KISAgICAgaWYgKChlcnJvciA9IGFtcl9t
YXBjbWQoYWMpKSA9PSBFTk9NRU0pIHsKISAJLyoKISAJICogTWVtcm95IHJlc291cmNlcyBhcmUg
c2hvcnQsIHNvIGZyZWUgdGhlIHNsb3QgYW5kIGxldCB0aGlzIGJlIHRyaWVkCiEgCSAqIGxhdGVy
LgohIAkgKi8KISAJc2MtPmFtcl9idXN5Y21kW2FjLT5hY19zbG90XSA9IE5VTEw7CiEgCXNjLT5h
bXJfYnVzeXNsb3RzLS07CiEgICAgIH0KISAKISAgICAgcmV0dXJuIChlcnJvcik7CiEgfQohIAoh
IAohIHN0YXRpYyBpbnQKISBhbXJfc3RhcnQxKHN0cnVjdCBhbXJfc29mdGMgKnNjLCBzdHJ1Y3Qg
YW1yX2NvbW1hbmQgKmFjKQohIHsKISAgICAgaW50CQkJZG9uZSwgcywgaTsKICAKICAgICAgLyog
bWFyayB0aGUgbmV3IG1haWxib3ggd2UgYXJlIGdvaW5nIHRvIGNvcHkgaW4gYXMgYnVzeSAqLwog
ICAgICBhYy0+YWNfbWFpbGJveC5tYl9idXN5ID0gMTsKKioqKioqKioqKioqKioqCioqKiAxMzYz
LDEzNzAgKioqKgogIAkgICAgYnJlYWs7CS8qIG5vIHdvcmsgKi8KICAJfQogICAgICB9CiEgICAg
IAogICAgICAvKiBpZiB3ZSd2ZSBjb21wbGV0ZWQgYW55IGNvbW1hbmRzLCB0cnkgcG9zdGluZyBz
b21lIG1vcmUgKi8KICAgICAgaWYgKHJlc3VsdCkKICAJYW1yX3N0YXJ0aW8oc2MpOwogICAgICAK
LS0tIDE0NzIsMTQ4MCAtLS0tCiAgCSAgICBicmVhazsJLyogbm8gd29yayAqLwogIAl9CiAgICAg
IH0KISAKICAgICAgLyogaWYgd2UndmUgY29tcGxldGVkIGFueSBjb21tYW5kcywgdHJ5IHBvc3Rp
bmcgc29tZSBtb3JlICovCisgICAgIHNjLT5hbXJfc3RhdGUgJj0gfkFNUl9TVEFURV9RVUVVRV9G
UlpOOwogICAgICBpZiAocmVzdWx0KQogIAlhbXJfc3RhcnRpbyhzYyk7CiAgICAgIAoqKioqKioq
KioqKioqKioKKioqIDEzNzUsMTM4MSAqKioqCiAgICAgIGVsc2UKICAjZW5kaWYKICAJYW1yX2Nv
bXBsZXRlKHNjLCAwKTsKISAgICAgCiAgICAgIHJldHVybihyZXN1bHQpOwogIH0KICAKLS0tIDE0
ODUsMTQ5MSAtLS0tCiAgICAgIGVsc2UKICAjZW5kaWYKICAJYW1yX2NvbXBsZXRlKHNjLCAwKTsK
ISAKICAgICAgcmV0dXJuKHJlc3VsdCk7CiAgfQogIAoqKioqKioqKioqKioqKioKKioqIDE0MTks
MTQyNCAqKioqCi0tLSAxNTI5LDE1MzUgLS0tLQogIAkgICAgd2FrZXVwKHNjKTsKICAJfQogICAg
ICB9CisgICAgYW1yX3N0YXJ0aW8oc2MpOwogIH0KICAKICAvKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioKKioqKioqKioqKioqKioqCioqKiAxNzk4LDE4MDQgKioqKgogIAogICAgICBkZWJ1Z19jYWxs
ZWQoMSk7CiAgCiEgICAgIHNjLT5hbXJfc3RhdGUgfD0gQU1SX1NUQVRFX0NSQVNIRFVNUDsKICAK
ICAgICAgLyogZ2V0IG91cnNlbHZlcyBhIGNvbW1hbmQgYnVmZmVyICovCiAgICAgIGlmICgoYWMg
PSBhbXJfYWxsb2NjbWQoc2MpKSA9PSBOVUxMKQotLS0gMTkwOSwxOTE1IC0tLS0KICAKICAgICAg
ZGVidWdfY2FsbGVkKDEpOwogIAohICAgICBzYy0+YW1yX3N0YXRlIHw9IEFNUl9TVEFURV9JTlRF
TjsKICAKICAgICAgLyogZ2V0IG91cnNlbHZlcyBhIGNvbW1hbmQgYnVmZmVyICovCiAgICAgIGlm
ICgoYWMgPSBhbXJfYWxsb2NjbWQoc2MpKSA9PSBOVUxMKQoqKioqKioqKioqKioqKioKKioqIDE4
MjUsMTgzMSAqKioqCiAgICAgIGlmIChhYyAhPSBOVUxMKQogIAlhbXJfcmVsZWFzZWNtZChhYyk7
CiAgCiEgICAgIHNjLT5hbXJfc3RhdGUgJj0gfkFNUl9TVEFURV9DUkFTSERVTVA7CiAgCiAgICAg
IHJldHVybiAoZXJyb3IpOwkKICB9Ci0tLSAxOTM2LDE5NDIgLS0tLQogICAgICBpZiAoYWMgIT0g
TlVMTCkKICAJYW1yX3JlbGVhc2VjbWQoYWMpOwogIAohICAgICBzYy0+YW1yX3N0YXRlICY9IH5B
TVJfU1RBVEVfSU5URU47CiAgCiAgICAgIHJldHVybiAoZXJyb3IpOwkKICB9CioqKiBzeXMvZGV2
L2Ftci9hbXJfY2FtLmMub3JpZwlNb24gTm92IDExIDA1OjE5OjEwIDIwMDIKLS0tIHN5cy9kZXYv
YW1yL2Ftcl9jYW0uYwlXZWQgTWFyICA5IDA4OjU0OjI1IDIwMDUKKioqKioqKioqKioqKioqCioq
KiAxMzksMTQ4ICoqKioKICAgICAgLyoKICAgICAgICogQWxsb2NhdGUgYSBkZXZxIGZvciBhbGwg
b3VyIGNoYW5uZWxzIGNvbWJpbmVkLiAgVGhpcyBzaG91bGQKICAgICAgICogYWxsb3cgZm9yIHRo
ZSBtYXhpbXVtIG51bWJlciBvZiBTQ1NJIGNvbW1hbmRzIHdlIHdpbGwgYWNjZXB0CiEgICAgICAq
IGF0IG9uZSB0aW1lLgogICAgICAgKi8KICAgICAgaWYgKChkZXZxID0gY2FtX3NpbXFfYWxsb2Mo
QU1SX01BWF9TQ1NJX0NNRFMpKSA9PSBOVUxMKQogIAlyZXR1cm4oRU5PTUVNKTsKICAKICAgICAg
LyoKICAgICAgICogSXRlcmF0ZSBvdmVyIG91ciBjaGFubmVscywgcmVnaXN0ZXJpbmcgdGhlbSB3
aXRoIENBTQotLS0gMTM5LDE1MCAtLS0tCiAgICAgIC8qCiAgICAgICAqIEFsbG9jYXRlIGEgZGV2
cSBmb3IgYWxsIG91ciBjaGFubmVscyBjb21iaW5lZC4gIFRoaXMgc2hvdWxkCiAgICAgICAqIGFs
bG93IGZvciB0aGUgbWF4aW11bSBudW1iZXIgb2YgU0NTSSBjb21tYW5kcyB3ZSB3aWxsIGFjY2Vw
dAohICAgICAgKiBhdCBvbmUgdGltZS4gU2F2ZSB0aGUgcG9pbnRlciBpbiB0aGUgc29mdGMgc28g
d2UgY2FuIGZpbmQgaXQgbGF0ZXIKISAgICAgICogZHVyaW5nIGRldGFjaC4KICAgICAgICovCiAg
ICAgIGlmICgoZGV2cSA9IGNhbV9zaW1xX2FsbG9jKEFNUl9NQVhfU0NTSV9DTURTKSkgPT0gTlVM
TCkKICAJcmV0dXJuKEVOT01FTSk7CisgICAgIHNjLT5hbXJfY2FtX2RldnEgPSBkZXZxOwogIAog
ICAgICAvKgogICAgICAgKiBJdGVyYXRlIG92ZXIgb3VyIGNoYW5uZWxzLCByZWdpc3RlcmluZyB0
aGVtIHdpdGggQ0FNCioqKioqKioqKioqKioqKgoqKiogMTgyLDIwMCAqKioqCiAgdm9pZAogIGFt
cl9jYW1fZGV0YWNoKHN0cnVjdCBhbXJfc29mdGMgKnNjKQogIHsKISAgICAgaW50CQljaG4sIGZp
cnN0OwogIAohICAgICBmb3IgKGNobiA9IDAsIGZpcnN0ID0gMTsgY2huIDwgc2MtPmFtcl9tYXhj
aGFuOyBjaG4rKykgewogIAogIAkvKgogIAkgKiBJZiBhIHNpbSB3YXMgYWxsb2NhdGVkIGZvciB0
aGlzIGNoYW5uZWwsIGZyZWUgaXQKICAJICovCiAgCWlmIChzYy0+YW1yX2NhbV9zaW1bY2huXSAh
PSBOVUxMKSB7CiAgCSAgICB4cHRfYnVzX2RlcmVnaXN0ZXIoY2FtX3NpbV9wYXRoKHNjLT5hbXJf
Y2FtX3NpbVtjaG5dKSk7CiEgCSAgICBjYW1fc2ltX2ZyZWUoc2MtPmFtcl9jYW1fc2ltW2Nobl0s
IGZpcnN0ID8gVFJVRSA6IEZBTFNFKTsKISAJICAgIGZpcnN0ID0gMDsKICAJfQogICAgICB9CiAg
fQogIAogIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotLS0gMTg0LDIwNSAtLS0tCiAgdm9pZAog
IGFtcl9jYW1fZGV0YWNoKHN0cnVjdCBhbXJfc29mdGMgKnNjKQogIHsKISAgICAgaW50CQljaG47
CiAgCiEgICAgIGZvciAoY2huID0gMDsgY2huIDwgc2MtPmFtcl9tYXhjaGFuOyBjaG4rKykgewog
IAogIAkvKgogIAkgKiBJZiBhIHNpbSB3YXMgYWxsb2NhdGVkIGZvciB0aGlzIGNoYW5uZWwsIGZy
ZWUgaXQKICAJICovCiAgCWlmIChzYy0+YW1yX2NhbV9zaW1bY2huXSAhPSBOVUxMKSB7CiAgCSAg
ICB4cHRfYnVzX2RlcmVnaXN0ZXIoY2FtX3NpbV9wYXRoKHNjLT5hbXJfY2FtX3NpbVtjaG5dKSk7
CiEgCSAgICBjYW1fc2ltX2ZyZWUoc2MtPmFtcl9jYW1fc2ltW2Nobl0sIEZBTFNFKTsKICAJfQog
ICAgICB9CisgCisgICAgIC8qIE5vdyBmcmVlIHRoZSBkZXZxICovCisgICAgIGlmIChzYy0+YW1y
X2NhbV9kZXZxICE9IE5VTEwpCisgCWNhbV9zaW1xX2ZyZWUoc2MtPmFtcl9jYW1fZGV2cSk7CiAg
fQogIAogIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqKioqKioqKioqKioqKioKKioqIDQ1OCw0
NjQgKioqKgogIAlnb3RvIG91dDsKICAgICAgfQogIAohICAgICBhYy0+YWNfZmxhZ3MgfD0gQU1S
X0NNRF9EQVRBT1VUOwogIAogICAgICBhYy0+YWNfY2NiX2RhdGEgPSBjc2lvLT5kYXRhX3B0cjsK
ICAgICAgYWMtPmFjX2NjYl9sZW5ndGggPSBjc2lvLT5keGZlcl9sZW47Ci0tLSA0NjMsNDY5IC0t
LS0KICAJZ290byBvdXQ7CiAgICAgIH0KICAKISAgICAgYWMtPmFjX2ZsYWdzIHw9IEFNUl9DTURf
REFUQU9VVCB8IEFNUl9DTURfREFUQUlOOwogIAogICAgICBhYy0+YWNfY2NiX2RhdGEgPSBjc2lv
LT5kYXRhX3B0cjsKICAgICAgYWMtPmFjX2NjYl9sZW5ndGggPSBjc2lvLT5keGZlcl9sZW47Cioq
KioqKioqKioqKioqKgoqKiogNTE2LDUyMiAqKioqCiAgCiAgICAgIC8qIFhYWCBub3RlIHRoYXQg
d2UncmUgaWdub3JpbmcgYWMtPmFjX3N0YXR1cyAtIGdvb2QgaWRlYT8gKi8KICAKISAgICAgZGVi
dWcoMSwgInN0YXR1cyAweCV4ICBzY3NpX3N0YXR1cyAweCV4IiwgYWMtPmFjX3N0YXR1cywgYXAt
PmFwX3Njc2lfc3RhdHVzKTsKICAKICAgICAgLyoKICAgICAgICogSGlkZSBkaXNrcyBmcm9tIENB
TSBzbyB0aGF0IHRoZXkncmUgbm90IHBpY2tlZCB1cCBhbmQgdHJlYXRlZCBhcyAnbm9ybWFsJyBk
aXNrcy4KLS0tIDUyMSw1MjcgLS0tLQogIAogICAgICAvKiBYWFggbm90ZSB0aGF0IHdlJ3JlIGln
bm9yaW5nIGFjLT5hY19zdGF0dXMgLSBnb29kIGlkZWE/ICovCiAgCiEgICAgIGRlYnVnKDEsICJz
dGF0dXMgMHgleCAgQVAgc2NzaV9zdGF0dXMgMHgleCIsIGFjLT5hY19zdGF0dXMsIGFwLT5hcF9z
Y3NpX3N0YXR1cyk7CiAgCiAgICAgIC8qCiAgICAgICAqIEhpZGUgZGlza3MgZnJvbSBDQU0gc28g
dGhhdCB0aGV5J3JlIG5vdCBwaWNrZWQgdXAgYW5kIHRyZWF0ZWQgYXMgJ25vcm1hbCcgZGlza3Mu
CioqKioqKioqKioqKioqKgoqKiogNTc5LDU4NSAqKioqCiAgCiAgICAgIC8qIFhYWCBub3RlIHRo
YXQgd2UncmUgaWdub3JpbmcgYWMtPmFjX3N0YXR1cyAtIGdvb2QgaWRlYT8gKi8KICAKISAgICAg
ZGVidWcoMSwgInN0YXR1cyAweCV4ICBzY3NpX3N0YXR1cyAweCV4IiwgYWMtPmFjX3N0YXR1cywg
YWVwLT5hcF9zY3NpX3N0YXR1cyk7CiAgCiAgICAgIC8qCiAgICAgICAqIEhpZGUgZGlza3MgZnJv
bSBDQU0gc28gdGhhdCB0aGV5J3JlIG5vdCBwaWNrZWQgdXAgYW5kIHRyZWF0ZWQgYXMgJ25vcm1h
bCcgZGlza3MuCi0tLSA1ODQsNTkwIC0tLS0KICAKICAgICAgLyogWFhYIG5vdGUgdGhhdCB3ZSdy
ZSBpZ25vcmluZyBhYy0+YWNfc3RhdHVzIC0gZ29vZCBpZGVhPyAqLwogIAohICAgICBkZWJ1Zygx
LCAic3RhdHVzIDB4JXggIEFFUCBzY3NpX3N0YXR1cyAweCV4IiwgYWMtPmFjX3N0YXR1cywgYWVw
LT5hcF9zY3NpX3N0YXR1cyk7CiAgCiAgICAgIC8qCiAgICAgICAqIEhpZGUgZGlza3MgZnJvbSBD
QU0gc28gdGhhdCB0aGV5J3JlIG5vdCBwaWNrZWQgdXAgYW5kIHRyZWF0ZWQgYXMgJ25vcm1hbCcg
ZGlza3MuCioqKiBzeXMvZGV2L2Ftci9hbXJfZGlzay5jLm9yaWcJV2VkIE9jdCAyOSAwMToxMToz
OCAyMDAzCi0tLSBzeXMvZGV2L2Ftci9hbXJfZGlzay5jCVdlZCBNYXIgIDkgMDk6MDI6NDQgMjAw
NQoqKioqKioqKioqKioqKioKKioqIDUzLDU5ICoqKioKICAgKiBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCiAgICog
U1VDSCBEQU1BR0UuCiAgICoKISAgKiAkRnJlZUJTRDogL3JlcG9tYW4vci9uY3ZzL3NyYy9zeXMv
ZGV2L2Ftci9hbXJfZGlzay5jLHYgMS41LjIuNiAyMDAzLzEwLzI5IDA5OjExOjM4IHBzIEV4cCAk
CiAgICovCiAgCiAgLyoKLS0tIDUzLDU5IC0tLS0KICAgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCiAgICogU1VD
SCBEQU1BR0UuCiAgICoKISAgKiAkRnJlZUJTRDogc3JjL3N5cy9kZXYvYW1yL2Ftcl9kaXNrLmMs
diAxLjUuMi42IDIwMDMvMTAvMjkgMDk6MTE6MzggcHMgRXhwICQKICAgKi8KICAKICAvKgoqKioq
KioqKioqKioqKioKKioqIDIxNSwyMjQgKioqKgogICAgICBpZiAoKGVycm9yID0gZGlza19kdW1w
Y2hlY2soZGV2LCAmY291bnQsICZibGtubywgJnNlY3NpemUpKSkKICAgICAgICAgIHJldHVybihl
cnJvcik7CiAgCiEgICAgIGFtcl9zYyAgPSAoc3RydWN0IGFtcl9zb2Z0YyAqKWFtcmRfc2MtPmFt
cmRfY29udHJvbGxlcjsKISAKISAgICAgaWYgKCFhbXJkX3NjIHx8ICFhbXJfc2MpCiAgCXJldHVy
bihFTlhJTyk7CiAgCiAgICAgIGJsa2NudCA9IGhvd21hbnkoUEFHRV9TSVpFLCBzZWNzaXplKTsK
ICAKLS0tIDIxNSwyMjMgLS0tLQogICAgICBpZiAoKGVycm9yID0gZGlza19kdW1wY2hlY2soZGV2
LCAmY291bnQsICZibGtubywgJnNlY3NpemUpKSkKICAgICAgICAgIHJldHVybihlcnJvcik7CiAg
CiEgICAgIGlmIChhbXJkX3NjID09IE5VTEwpCiAgCXJldHVybihFTlhJTyk7CisgICAgIGFtcl9z
YyAgPSAoc3RydWN0IGFtcl9zb2Z0YyAqKWFtcmRfc2MtPmFtcmRfY29udHJvbGxlcjsKICAKICAg
ICAgYmxrY250ID0gaG93bWFueShQQUdFX1NJWkUsIHNlY3NpemUpOwogIAoqKiogc3lzL2Rldi9h
bXIvYW1yX3BjaS5jLm9yaWcJV2VkIERlYyAgOCAxMDo1MzoyMyAyMDA0Ci0tLSBzeXMvZGV2L2Ft
ci9hbXJfcGNpLmMJV2VkIE1hciAgOSAwOTowOTo1OCAyMDA1CioqKioqKioqKioqKioqKgoqKiog
MjUsMzEgKioqKgogICAqIFNVQ0ggREFNQUdFLgogICAqCiAgICogQ29weXJpZ2h0IChjKSAyMDAy
IEVyaWMgTW9vcmUKISAgKiBDb3B5cmlnaHQgKGMpIDIwMDIgTFNJIExvZ2ljIENvcnBvcmF0aW9u
CiAgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgogICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLS0gMjUsMzEg
LS0tLQogICAqIFNVQ0ggREFNQUdFLgogICAqCiAgICogQ29weXJpZ2h0IChjKSAyMDAyIEVyaWMg
TW9vcmUKISAgKiBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDQgTFNJIExvZ2ljIENvcnBvcmF0aW9u
CiAgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgKgogICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAoqKioqKioqKioq
KioqKioKKioqIDEyNywxMzIgKioqKgotLS0gMTI3LDEzNCAtLS0tCiAgICAgIHsweDEwMWUsIDB4
MTk2MCwgMH0sCiAgICAgIHsweDEwMDAsIDB4MTk2MCwgUFJPQkVfU0lHTkFUVVJFfSwKICAgICAg
ezB4MTAwMCwgMHgwNDA3LCAwfSwKKyAgICAgezB4MTAwMCwgMHgwNDA4LCAwfSwKKyAgICAgezB4
MTAwMCwgMHgwNDA5LCAwfSwKICAgICAgezB4MTAyOCwgMHgwMDBlLCBQUk9CRV9TSUdOQVRVUkV9
LCAvKiBwZXJjNC9kaSBpOTYwICovCiAgICAgIHsweDEwMjgsIDB4MDAwZiwgMH0sIC8qIHBlcmM0
L2RpIFZlcmRlKi8KICAgICAgezB4MTAyOCwgMHgwMDEzLCAwfSwgLyogcGVyYzQvZGkgKi8KKioq
KioqKioqKioqKioqCioqKiAxNTAsMTU2ICoqKioKICAJCWlmICgoc2lnICE9IEFNUl9TSUdOQVRV
UkVfMSkgJiYgKHNpZyAhPSBBTVJfU0lHTkFUVVJFXzIpKQogIAkJICAgIGNvbnRpbnVlOwogIAkg
ICAgfQohIAkgICAgZGV2aWNlX3NldF9kZXNjKGRldiwgIkxTSUxvZ2ljIE1lZ2FSQUlEIik7CiAg
CSAgICByZXR1cm4oLTEwKTsJLyogYWxsb3cgcm9vbSB0byBiZSBvdmVycmlkZGVuICovCiAgCX0K
ICAgICAgfQotLS0gMTUyLDE1OCAtLS0tCiAgCQlpZiAoKHNpZyAhPSBBTVJfU0lHTkFUVVJFXzEp
ICYmIChzaWcgIT0gQU1SX1NJR05BVFVSRV8yKSkKICAJCSAgICBjb250aW51ZTsKICAJICAgIH0K
ISAJICAgIGRldmljZV9zZXRfZGVzYyhkZXYsIExTSV9ERVNDX1BDSSk7CiAgCSAgICByZXR1cm4o
LTEwKTsJLyogYWxsb3cgcm9vbSB0byBiZSBvdmVycmlkZGVuICovCiAgCX0KICAgICAgfQoqKioq
KioqKioqKioqKioKKioqIDE4MSwxODYgKioqKgotLS0gMTgzLDE4OSAtLS0tCiAgICAgICAqLwog
ICAgICBjb21tYW5kID0gcGNpX3JlYWRfY29uZmlnKGRldiwgUENJUl9DT01NQU5ELCAxKTsKICAg
ICAgaWYgKChwY2lfZ2V0X2RldmljZShkZXYpID09IDB4MTk2MCkgfHwgKHBjaV9nZXRfZGV2aWNl
KGRldikgPT0gMHgwNDA3KSB8fAorIAkocGNpX2dldF9kZXZpY2UoZGV2KSA9PSAweDA0MDgpIHx8
IChwY2lfZ2V0X2RldmljZShkZXYpID09IDB4MDQwOSkgfHwKICAJKHBjaV9nZXRfZGV2aWNlKGRl
dikgPT0gMHgwMDBlKSB8fCAocGNpX2dldF9kZXZpY2UoZGV2KSA9PSAweDAwMGYpIHx8CiAgCShw
Y2lfZ2V0X2RldmljZShkZXYpID09IDB4MDAxMykpIHsKICAJLyoKKioqKioqKioqKioqKioqCioq
KiAyNTEsMjU3ICoqKioKICAJCQkgICBOVUxMLCBOVUxMLCAJCQkvKiBmaWx0ZXIsIGZpbHRlcmFy
ZyAqLwogIAkJCSAgIE1BWEJTSVpFLCBBTVJfTlNFRywJCS8qIG1heHNpemUsIG5zZWdtZW50cyAq
LwogIAkJCSAgIEJVU19TUEFDRV9NQVhTSVpFXzMyQklULAkvKiBtYXhzZWdzaXplICovCiEgCQkJ
ICAgQlVTX0RNQV9BTExPQ05PVywJCS8qIGZsYWdzICovCiAgCQkJICAgJnNjLT5hbXJfcGFyZW50
X2RtYXQpKSB7CiAgCWRldmljZV9wcmludGYoZGV2LCAiY2FuJ3QgYWxsb2NhdGUgcGFyZW50IERN
QSB0YWdcbiIpOwogIAlnb3RvIG91dDsKLS0tIDI1NCwyNjAgLS0tLQogIAkJCSAgIE5VTEwsIE5V
TEwsIAkJCS8qIGZpbHRlciwgZmlsdGVyYXJnICovCiAgCQkJICAgTUFYQlNJWkUsIEFNUl9OU0VH
LAkJLyogbWF4c2l6ZSwgbnNlZ21lbnRzICovCiAgCQkJICAgQlVTX1NQQUNFX01BWFNJWkVfMzJC
SVQsCS8qIG1heHNlZ3NpemUgKi8KISAJCQkgICAwLAkJCQkvKiBmbGFncyAqLwogIAkJCSAgICZz
Yy0+YW1yX3BhcmVudF9kbWF0KSkgewogIAlkZXZpY2VfcHJpbnRmKGRldiwgImNhbid0IGFsbG9j
YXRlIHBhcmVudCBETUEgdGFnXG4iKTsKICAJZ290byBvdXQ7CioqKioqKioqKioqKioqKgoqKiog
MjYyLDI3MyAqKioqCiAgICAgICAqLwogICAgICBpZiAoYnVzX2RtYV90YWdfY3JlYXRlKHNjLT5h
bXJfcGFyZW50X2RtYXQsCQkvKiBwYXJlbnQgKi8KICAJCQkgICAxLCAwLAkJCS8qIGFsaWdubWVu
dCwgYm91bmRhcnkgKi8KISAJCQkgICBCVVNfU1BBQ0VfTUFYQUREUiwJCS8qIGxvd2FkZHIgKi8K
ICAJCQkgICBCVVNfU1BBQ0VfTUFYQUREUiwJCS8qIGhpZ2hhZGRyICovCiAgCQkJICAgTlVMTCwg
TlVMTCwJCQkvKiBmaWx0ZXIsIGZpbHRlcmFyZyAqLwogIAkJCSAgIE1BWEJTSVpFLCBBTVJfTlNF
RywJCS8qIG1heHNpemUsIG5zZWdtZW50cyAqLwohIAkJCSAgIEJVU19TUEFDRV9NQVhTSVpFXzMy
QklULAkvKiBtYXhzZWdzaXplICovCiEgCQkJICAgMCwJCQkJLyogZmxhZ3MgKi8KICAJCQkgICAm
c2MtPmFtcl9idWZmZXJfZG1hdCkpIHsKICAgICAgICAgIGRldmljZV9wcmludGYoc2MtPmFtcl9k
ZXYsICJjYW4ndCBhbGxvY2F0ZSBidWZmZXIgRE1BIHRhZ1xuIik7CiAgCWdvdG8gb3V0OwotLS0g
MjY1LDI3NiAtLS0tCiAgICAgICAqLwogICAgICBpZiAoYnVzX2RtYV90YWdfY3JlYXRlKHNjLT5h
bXJfcGFyZW50X2RtYXQsCQkvKiBwYXJlbnQgKi8KICAJCQkgICAxLCAwLAkJCS8qIGFsaWdubWVu
dCwgYm91bmRhcnkgKi8KISAJCQkgICBCVVNfU1BBQ0VfTUFYQUREUl8zMkJJVCwJLyogbG93YWRk
ciAqLwogIAkJCSAgIEJVU19TUEFDRV9NQVhBRERSLAkJLyogaGlnaGFkZHIgKi8KICAJCQkgICBO
VUxMLCBOVUxMLAkJCS8qIGZpbHRlciwgZmlsdGVyYXJnICovCiAgCQkJICAgTUFYQlNJWkUsIEFN
Ul9OU0VHLAkJLyogbWF4c2l6ZSwgbnNlZ21lbnRzICovCiEgCQkJICAgTUFYQlNJWkUsCQkJLyog
bWF4c2Vnc2l6ZSAqLwohIAkJCSAgIEJVU19ETUFfQUxMT0NOT1csCQkvKiBmbGFncyAqLwogIAkJ
CSAgICZzYy0+YW1yX2J1ZmZlcl9kbWF0KSkgewogICAgICAgICAgZGV2aWNlX3ByaW50ZihzYy0+
YW1yX2RldiwgImNhbid0IGFsbG9jYXRlIGJ1ZmZlciBETUEgdGFnXG4iKTsKICAJZ290byBvdXQ7
CioqKioqKioqKioqKioqKgoqKiogNTAyLDUwOCAqKioqCiAgICAgIHNlZ3NpemUgPSBzaXplb2Yo
c3RydWN0IGFtcl9zZ2VudHJ5KSAqIEFNUl9OU0VHICogQU1SX01BWENNRDsKICAgICAgZXJyb3Ig
PSBidXNfZG1hX3RhZ19jcmVhdGUoc2MtPmFtcl9wYXJlbnRfZG1hdCwgCS8qIHBhcmVudCAqLwog
IAkJCSAgICAgICAxLCAwLCAJCQkvKiBhbGlnbm1lbnQsIGJvdW5kYXJ5ICovCiEgCQkJICAgICAg
IEJVU19TUEFDRV9NQVhBRERSLAkvKiBsb3dhZGRyICovCiAgCQkJICAgICAgIEJVU19TUEFDRV9N
QVhBRERSLCAJLyogaGlnaGFkZHIgKi8KICAJCQkgICAgICAgTlVMTCwgTlVMTCwgCQkvKiBmaWx0
ZXIsIGZpbHRlcmFyZyAqLwogIAkJCSAgICAgICBzZWdzaXplLCAxLAkJLyogbWF4c2l6ZSwgbnNl
Z21lbnRzICovCi0tLSA1MDUsNTExIC0tLS0KICAgICAgc2Vnc2l6ZSA9IHNpemVvZihzdHJ1Y3Qg
YW1yX3NnZW50cnkpICogQU1SX05TRUcgKiBBTVJfTUFYQ01EOwogICAgICBlcnJvciA9IGJ1c19k
bWFfdGFnX2NyZWF0ZShzYy0+YW1yX3BhcmVudF9kbWF0LCAJLyogcGFyZW50ICovCiAgCQkJICAg
ICAgIDEsIDAsIAkJCS8qIGFsaWdubWVudCwgYm91bmRhcnkgKi8KISAJCQkgICAgICAgQlVTX1NQ
QUNFX01BWEFERFJfMzJCSVQsCS8qIGxvd2FkZHIgKi8KICAJCQkgICAgICAgQlVTX1NQQUNFX01B
WEFERFIsIAkvKiBoaWdoYWRkciAqLwogIAkJCSAgICAgICBOVUxMLCBOVUxMLCAJCS8qIGZpbHRl
ciwgZmlsdGVyYXJnICovCiAgCQkJICAgICAgIHNlZ3NpemUsIDEsCQkvKiBtYXhzaXplLCBuc2Vn
bWVudHMgKi8KKioqKioqKioqKioqKioqCioqKiA1NzIsNTc4ICoqKioKICAgICAgICovCiAgICAg
IGVycm9yID0gYnVzX2RtYV90YWdfY3JlYXRlKHNjLT5hbXJfcGFyZW50X2RtYXQsCS8qIHBhcmVu
dCAqLwogIAkJCSAgICAgICAxNiwgMCwJCQkvKiBhbGlnbm1lbnQsIGJvdW5kYXJ5ICovCiEgCQkJ
ICAgICAgIEJVU19TUEFDRV9NQVhBRERSLAkvKiBsb3dhZGRyICovCiAgCQkJICAgICAgIEJVU19T
UEFDRV9NQVhBRERSLAkvKiBoaWdoYWRkciAqLwogIAkJCSAgICAgICBOVUxMLCBOVUxMLAkJLyog
ZmlsdGVyLCBmaWx0ZXJhcmcgKi8KICAJCQkgICAgICAgc2l6ZW9mKHN0cnVjdCBhbXJfbWFpbGJv
eCkgKyAxNiwgMSwgLyogbWF4c2l6ZSwgbnNlZ21lbnRzICovCi0tLSA1NzUsNTgxIC0tLS0KICAg
ICAgICovCiAgICAgIGVycm9yID0gYnVzX2RtYV90YWdfY3JlYXRlKHNjLT5hbXJfcGFyZW50X2Rt
YXQsCS8qIHBhcmVudCAqLwogIAkJCSAgICAgICAxNiwgMCwJCQkvKiBhbGlnbm1lbnQsIGJvdW5k
YXJ5ICovCiEgCQkJICAgICAgIEJVU19TUEFDRV9NQVhBRERSXzMyQklULAkvKiBsb3dhZGRyICov
CiAgCQkJICAgICAgIEJVU19TUEFDRV9NQVhBRERSLAkvKiBoaWdoYWRkciAqLwogIAkJCSAgICAg
ICBOVUxMLCBOVUxMLAkJLyogZmlsdGVyLCBmaWx0ZXJhcmcgKi8KICAJCQkgICAgICAgc2l6ZW9m
KHN0cnVjdCBhbXJfbWFpbGJveCkgKyAxNiwgMSwgLyogbWF4c2l6ZSwgbnNlZ21lbnRzICovCioq
KiBzeXMvZGV2L2Ftci9hbXJyZWcuaC5vcmlnCU1vbiBOb3YgMTEgMDU6MTk6MTAgMjAwMgotLS0g
c3lzL2Rldi9hbXIvYW1ycmVnLmgJV2VkIE1hciAgOSAwOToxNDozNSAyMDA1CioqKioqKioqKioq
KioqKgoqKiogNTIsNTggKioqKgogICAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKICAgKiBTVUNIIERBTUFHRS4K
ICAgKgohICAqICAgICAgJEZyZWVCU0Q6IC9yZXBvbWFuL3IvbmN2cy9zcmMvc3lzL2Rldi9hbXIv
YW1ycmVnLmgsdiAxLjEuMi40IDIwMDIvMTEvMTEgMTM6MTk6MTAgZW1vb3JlIEV4cCAkCiAgICov
CiAgCiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tLSA1Miw1OCAtLS0tCiAgICogT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRgogICAqIFNVQ0ggREFNQUdFLgogICAqCiEgICogICAgICAkRnJlZUJTRDogc3JjL3N5
cy9kZXYvYW1yL2FtcnJlZy5oLHYgMS4xLjIuNCAyMDAyLzExLzExIDEzOjE5OjEwIGVtb29yZSBF
eHAgJAogICAqLwogIAogIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqKioqKioqKioqKioqKioK
KioqIDgxLDg3ICoqKioKICAjZGVmaW5lIEFNUl9MSU1JVENNRAkJMTIwCQkvKiBtYXhpbXVtIGNv
dW50IG9mIG91dHN0YW5kaW5nIGNvbW1hbmRzICovCiAgI2RlZmluZSBBTVJfTUFYTEQgICAgICAJ
CTQwCiAgCiEgI2RlZmluZSBBTVJfTUFYX0NIQU5ORUxTCTQKICAjZGVmaW5lIEFNUl9NQVhfVEFS
R0VUUwkJMTUKICAjZGVmaW5lIEFNUl9NQVhfTFVOUwkJNwogICNkZWZpbmUgQU1SX01BWF9TQ1NJ
X0NNRFMJKDE1ICogQU1SX01BWF9DSEFOTkVMUykJLyogb25lIGZvciBldmVyeSB0YXJnZXQ/ICov
Ci0tLSA4MSw4NyAtLS0tCiAgI2RlZmluZSBBTVJfTElNSVRDTUQJCTEyMAkJLyogbWF4aW11bSBj
b3VudCBvZiBvdXRzdGFuZGluZyBjb21tYW5kcyAqLwogICNkZWZpbmUgQU1SX01BWExEICAgICAg
CQk0MAogIAohICNkZWZpbmUgQU1SX01BWF9DSEFOTkVMUwk4CiAgI2RlZmluZSBBTVJfTUFYX1RB
UkdFVFMJCTE1CiAgI2RlZmluZSBBTVJfTUFYX0xVTlMJCTcKICAjZGVmaW5lIEFNUl9NQVhfU0NT
SV9DTURTCSgxNSAqIEFNUl9NQVhfQ0hBTk5FTFMpCS8qIG9uZSBmb3IgZXZlcnkgdGFyZ2V0PyAq
LwoqKiogc3lzL2Rldi9hbXIvYW1ydmFyLmgub3JpZwlUaHUgSnVsIDIyIDA5OjM1OjE4IDIwMDQK
LS0tIHN5cy9kZXYvYW1yL2FtcnZhci5oCVdlZCBNYXIgIDkgMDk6MTk6MjAgMjAwNQoqKioqKioq
KioqKioqKioKKioqIDU5LDY0ICoqKioKLS0tIDU5LDY2IC0tLS0KICAjIGluY2x1ZGUgPHN5cy90
YXNrcXVldWUuaD4KICAjZW5kaWYKICAKKyAjZGVmaW5lIExTSV9ERVNDX1BDSSAiTFNJTG9naWMg
TWVnYVJBSUQgMS41MSIKKyAKICAjaWZkZWYgQU1SX0RFQlVHCiAgIyBkZWZpbmUgZGVidWcobGV2
ZWwsIGZtdCwgYXJncy4uLikJZG8ge2lmIChsZXZlbCA8PSBBTVJfREVCVUcpIHByaW50ZigiJXM6
ICIgZm10ICJcbiIsIF9fZnVuY19fICwgIyNhcmdzKTt9IHdoaWxlKDApCiAgIyBkZWZpbmUgZGVi
dWdfY2FsbGVkKGxldmVsKQkJZG8ge2lmIChsZXZlbCA8PSBBTVJfREVCVUcpIHByaW50ZigiJXM6
IGNhbGxlZFxuIiwgX19mdW5jX18pO30gd2hpbGUoMCkKKioqKioqKioqKioqKioqCioqKiAxODYs
MTkxICoqKioKLS0tIDE4OCwxOTQgLS0tLQogICNkZWZpbmUgQU1SX1NUQVRFX0lOVEVOCQkoMTw8
MikKICAjZGVmaW5lIEFNUl9TVEFURV9TSFVURE9XTgkoMTw8MykKICAjZGVmaW5lIEFNUl9TVEFU
RV9DUkFTSERVTVAJKDE8PDQpCisgI2RlZmluZSBBTVJfU1RBVEVfUVVFVUVfRlJaTgkoMTw8NSkK
ICAKICAgICAgLyogcGVyLWNvbnRyb2xsZXIgcXVldWVzICovCiAgICAgIHN0cnVjdCBiaW9fcXVl
dWVfaGVhZCAJYW1yX2Jpb3E7CQkvKiBwZW5kaW5nIEkvTyB3aXRoIG5vIGNvbW1hbmRzICovCioq
KioqKioqKioqKioqKgoqKiogMTk5LDIwNCAqKioqCi0tLSAyMDIsMjA4IC0tLS0KICAgICAgLyog
Q0FNIGF0dGFjaG1lbnRzIGZvciBwYXNzdGhyb3VnaCAqLwogICAgICBzdHJ1Y3QgY2FtX3NpbQkJ
KmFtcl9jYW1fc2ltW0FNUl9NQVhfQ0hBTk5FTFNdOwogICAgICBUQUlMUV9IRUFEKCwgY2NiX2hk
cikJYW1yX2NhbV9jY2JxOworICAgICBzdHJ1Y3QgY2FtX2RldnEJCSphbXJfY2FtX2RldnE7CiAg
CiAgICAgIC8qIGNvbnRyb2wgZGV2aWNlICovCiAgICAgIGRldl90CQkJYW1yX2Rldl90OwoqKioq
KioqKioqKioqKioKKioqIDIxMiwyMTcgKioqKgotLS0gMjE2LDIyMiAtLS0tCiAgICAgIGludAkJ
CQkoKiBhbXJfc3VibWl0X2NvbW1hbmQpKHN0cnVjdCBhbXJfc29mdGMgKnNjKTsKICAgICAgaW50
CQkJCSgqIGFtcl9nZXRfd29yaykoc3RydWN0IGFtcl9zb2Z0YyAqc2MsIHN0cnVjdCBhbXJfbWFp
bGJveCAqbWJzYXZlKTsKICAgICAgaW50CQkJCSgqYW1yX3BvbGxfY29tbWFuZCkoc3RydWN0IGFt
cl9jb21tYW5kICphYyk7CisgICAgIGludAkJCQkoKmFtcl9wb2xsX2NvbW1hbmQxKShzdHJ1Y3Qg
YW1yX3NvZnRjICpzYywgc3RydWN0IGFtcl9jb21tYW5kICphYyk7CiAgICAgIGludCAJCQlzdXBw
b3J0X2V4dF9jZGI7CS8qIGdyZWF0ZXIgdGhhbiAxMCBieXRlIGNkYiBzdXBwb3J0ICovCiAgCiAg
ICAgIC8qIG1pc2MgZ2x1ZSAqLwo=
--=====================_-2029056031==_--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6.2.1.2.2.20050310000250.05746d80>