Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 28 Jul 1998 09:36:03 -0400 (EDT)
From:      The Hermit Hacker <scrappy@hub.org>
To:        Karl Denninger <karl@mcs.net>
Cc:        scsi@FreeBSD.ORG
Subject:   Re: New problem - Adaptec cards with REV E on the sequencer chipset
Message-ID:  <Pine.BSF.3.96.980728093345.15349H-200000@hub.org>
In-Reply-To: <19980728071337.07188@mcs.net>

next in thread | previous in thread | raw e-mail | index | archive | help
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

--0-1801550913-901632963=:15349
Content-Type: TEXT/PLAIN; charset=US-ASCII


When I reported this problem on Friday, I was sent out the attached file
which appears to have fixed the problem for me.  This will supposedly be
in the next SNAPSHOT, but it should fix your problems too...

Disclaimer: I'm not one of hte SCSI developers, nor do I even presume to
understand the code.  I just use 3.0-CURRENT+CAM on my own production
server and know that this worked for me.

On Tue, 28 Jul 1998, Karl Denninger wrote:

> Hi folks,
> 
> A new problem with CAM...
> 
> The most recent CAM snapshot fails miserably with Adaptec 2940 UW cards that
> have an "E" subtype on the sequencer chip sticker.
> 
> Cards with a "C" subtype on the sticker work fine.
> 
> The symptom is that the card generates "TIMEOUT WHEN IDLE" errors (and gets
> reset) on a nearly-continuous basis.  Needless to say, this is pretty
> serious.
> 
> The problem DOES NOT APPEAR with the CAM code from mid-April.  With the 
> most recent CAM snapshot patches, it DOES happen.
> 
> There is something in the CAM comments about problems with REV B chipsets 
> being fixed in the 980712 snapshot.  It appears that at the same time REV B 
> was fixed, REV E was broken by those same changes.
> 
> Note that the boards both show "REV C" on the solder mask.  The only
> physical difference I can see between the two is the sticker on the
> sequencer chip as noted above.
> 
> The cards which work id as:
> 
> ahc0: <Adaptec 2940 Ultra SCSI adapter> rev 0x00 int a irq 11 on pci0.13.0
> ahc0: aic7880 Wide Channel A, SCSI Id=7, 16/255 SCBs
> 
> The cards which FAIL ID as:
> 
> ahc0: <Adaptec 2940 Ultra SCSI adapter> rev 0x01 int a irq 11 on pci0.12.0
> ahc0: aic7880 Wide Channel A, SCSI Id=7, 16/255 SCBs
> 
> Note the different "rev 0x0?" string.
> 
> Again, the rev 0x01 cards work fine with PRE-980712 CAM.
> 
> --
> -- 
> Karl Denninger (karl@MCS.Net)| MCSNet - Serving Chicagoland and Wisconsin
> http://www.mcs.net/          | T1's from $600 monthly / All Lines K56Flex/DOV
> 			     | NEW! Corporate ISDN Prices dropped by up to 50%!
> Voice: [+1 312 803-MCS1 x219]| EXCLUSIVE NEW FEATURE ON ALL PERSONAL ACCOUNTS
> Fax:   [+1 312 803-4929]     | *SPAMBLOCK* Technology now included at no cost
> 
> To Unsubscribe: send mail to majordomo@FreeBSD.org
> with "unsubscribe freebsd-scsi" in the body of the message
> 

--0-1801550913-901632963=:15349
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="aic7xxx.seq"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.BSF.3.96.980728093602.15349I@hub.org>
Content-Description: 

LyoNCiAqIEFkYXB0ZWMgMjc0eC8yODR4LzI5NHggZGV2aWNlIGRyaXZlciBm
aXJtd2FyZSBmb3IgTGludXggYW5kIEZyZWVCU0QuDQogKg0KICogQ29weXJp
Z2h0IChjKSAxOTk0LTE5OTggSnVzdGluIEdpYmJzLg0KICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4NCiAqDQogKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCiAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KICogYXJlIG1ldDoNCiAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0DQogKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zLCBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLA0KICog
ICAgd2l0aG91dCBtb2RpZmljYXRpb24sIGltbWVkaWF0ZWx5IGF0IHRoZSBi
ZWdpbm5pbmcgb2YgdGhlIGZpbGUuDQogKiAyLiBUaGUgbmFtZSBvZiB0aGUg
YXV0aG9yIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMNCiAqICAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KICoN
CiAqIFdoZXJlIHRoaXMgU29mdHdhcmUgaXMgY29tYmluZWQgd2l0aCBzb2Z0
d2FyZSByZWxlYXNlZCB1bmRlciB0aGUgdGVybXMgb2YgDQogKiB0aGUgR05V
IFB1YmxpYyBMaWNlbnNlIChHUEwpIGFuZCB0aGUgdGVybXMgb2YgdGhlIEdQ
TCB3b3VsZCByZXF1aXJlIHRoZSANCiAqIGNvbWJpbmVkIHdvcmsgdG8gYWxz
byBiZSByZWxlYXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdQTCwgdGhl
IHRlcm1zDQogKiBhbmQgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2Ugd2ls
bCBhcHBseSBpbiBhZGRpdGlvbiB0byB0aG9zZSBvZiB0aGUNCiAqIEdQTCB3
aXRoIHRoZSBleGNlcHRpb24gb2YgYW55IHRlcm1zIG9yIGNvbmRpdGlvbnMg
b2YgdGhpcyBMaWNlbnNlIHRoYXQNCiAqIGNvbmZsaWN0IHdpdGgsIG9yIGFy
ZSBleHByZXNzbHkgcHJvaGliaXRlZCBieSwgdGhlIEdQTC4NCiAqDQogKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5EDQogKiBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUNCiAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQog
KiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhP
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUg0KICogQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTA0KICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMNCiAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQ0KICogSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QNCiAqIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkNCiAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YNCiAqIFNV
Q0ggREFNQUdFLg0KICoNCiAqCSRJZDogYWljN3h4eC5zZXEsdiAxLjc3IDE5
OTgvMDYvMjggMDI6NTg6NTcgZ2liYnMgRXhwICQNCiAqLw0KDQojaW5jbHVk
ZSA8ZGV2L2FpYzd4eHgvYWljN3h4eC5yZWc+DQojaW5jbHVkZSA8Y2FtL3Nj
c2kvc2NzaV9tZXNzYWdlLmg+DQoNCi8qDQogKiBBIGZldyB3b3JkcyBvbiB0
aGUgd2FpdGluZyBTQ0IgbGlzdDoNCiAqIEFmdGVyIHN0YXJ0aW5nIHRoZSBz
ZWxlY3Rpb24gaGFyZHdhcmUsIHdlIGNoZWNrIGZvciByZWNvbm5lY3Rpbmcg
dGFyZ2V0cw0KICogYXMgd2VsbCBhcyBmb3Igb3VyIHNlbGVjdGlvbiB0byBj
b21wbGV0ZSBqdXN0IGluIGNhc2UgdGhlIHJlc2VsZWN0aW9uIHdpbnMNCiAq
IGJ1cyBhcmJpdHJhdGlvbi4gIFRoZSBwcm9ibGVtIHdpdGggdGhpcyBpcyB0
aGF0IHdlIG11c3Qga2VlcCB0cmFjayBvZiB0aGUNCiAqIFNDQiB0aGF0IHdl
J3ZlIGFscmVhZHkgcHVsbGVkIGZyb20gdGhlIFFJTkZJRk8gYW5kIHN0YXJ0
ZWQgdGhlIHNlbGVjdGlvbg0KICogb24ganVzdCBpbiBjYXNlIHRoZSByZXNl
bGVjdGlvbiB3aW5zIHNvIHRoYXQgd2UgY2FuIHJldHJ5IHRoZSBzZWxlY3Rp
b24gYXQNCiAqIGEgbGF0ZXIgdGltZS4gIFRoaXMgcHJvYmxlbSBjYW5ub3Qg
YmUgcmVzb2x2ZWQgYnkgaG9sZGluZyBhIHNpbmdsZSBlbnRyeQ0KICogaW4g
c2NyYXRjaCByYW0gc2luY2UgYSByZWNvbm5lY3RpbmcgdGFyZ2V0IGNhbiBy
ZXF1ZXN0IHNlbnNlIGFuZCB0aGlzIHdpbGwNCiAqIGNyZWF0ZSB5ZXQgYW5v
dGhlciBTQ0Igd2FpdGluZyBmb3Igc2VsZWN0aW9uLiAgVGhlIHNvbHV0aW9u
IHVzZWQgaGVyZSBpcyB0byANCiAqIHVzZSBieXRlIDI3IG9mIHRoZSBTQ0Ig
YXMgYSBwc3VlZG8tbmV4dCBwb2ludGVyIGFuZCB0byB0aHJlYWQgYSBsaXN0
DQogKiBvZiBTQ0JzIHRoYXQgYXJlIGF3YWl0aW5nIHNlbGVjdGlvbi4gIFNp
bmNlIDAtMHhmZSBhcmUgdmFsaWQgU0NCIGluZGV4ZXMsIA0KICogU0NCX0xJ
U1RfTlVMTCBpcyAweGZmIHdoaWNoIGlzIG91dCBvZiByYW5nZS4gIEFuIGVu
dHJ5IGlzIGFsc28gYWRkZWQgdG8NCiAqIHRoaXMgbGlzdCBldmVyeXRpbWUg
YSByZXF1ZXN0IHNlbnNlIG9jY3VycyBvciBhZnRlciBjb21wbGV0aW5nIGEg
bm9uLXRhZ2dlZA0KICogY29tbWFuZCBmb3Igd2hpY2ggYSBzZWNvbmQgU0NC
IGhhcyBiZWVuIHF1ZXVlZC4gIFRoZSBzZXF1ZW5jZXIgd2lsbA0KICogYXV0
b21hdGljYWxseSBjb25zdW1lIHRoZSBlbnRyaWVzLg0KICovDQoNCnJlc2V0
Og0KCWNscglTQ1NJU0lHTzsJCS8qIERlLWFzc2VydCBCU1kgKi8NCgkvKiBB
bHdheXMgYWxsb3cgcmVzZWxlY3Rpb24gKi8NCglpZiAoKGFoYy0+ZmxhZ3Mg
JiBBSENfVEFSR0VUTU9ERSkgIT0gMCkgew0KCQltdmkJU0NTSVNFUSwgRU5T
RUxJfEVOUlNFTEl8RU5BVVRPQVROUDsNCgl9IGVsc2Ugew0KCQltdmkJU0NT
SVNFUSwgRU5SU0VMSXxFTkFVVE9BVE5QOw0KCX0NCg0KCWlmICgoYWhjLT5m
ZWF0dXJlcyAmIEFIQ19DTURfQ0hBTikgIT0gMCkgew0KCQkvKiBFbnN1cmUg
dGhhdCBubyBETUEgb3BlcmF0aW9ucyBhcmUgaW4gcHJvZ3Jlc3MgKi8NCgkJ
Y2xyCUNDU0dDVEw7DQoJCWNscglDQ1NDQkNUTDsNCgl9DQoNCgljYWxsCWNs
ZWFyX3RhcmdldF9zdGF0ZTsNCglhbmQJU1hGUkNUTDAsIH5TUElPRU47DQpw
b2xsX2Zvcl93b3JrOg0KCWlmICgoYWhjLT5mZWF0dXJlcyAmIEFIQ19RVUVV
RV9SRUdTKSA9PSAwKSB7DQoJCW1vdglBLCBRSU5QT1M7DQoJfQ0KcG9sbF9m
b3Jfd29ya19sb29wOg0KCWlmICgoYWhjLT5mZWF0dXJlcyAmIEFIQ19RVUVV
RV9SRUdTKSA9PSAwKSB7DQoJCWFuZAlTRVFDVEwsIH5QQVVTRURJUzsNCgl9
DQoJdGVzdAlTU1RBVDAsIFNFTERPfFNFTERJCWpueiBzZWxlY3Rpb247DQoJ
dGVzdAlTQ1NJU0VRLCBFTlNFTE8Jam56IHBvbGxfZm9yX3dvcms7DQoJaWYg
KChhaGMtPmZlYXR1cmVzICYgQUhDX1RXSU4pICE9IDApIHsNCgkJLyoNCgkJ
ICogVHdpbiBjaGFubmVsIGRldmljZXMgY2Fubm90IGhhbmRsZSB0aGluZ3Mg
bGlrZSBTRUxUTw0KCQkgKiBpbnRlcnJ1cHRzIG9uIHRoZSAiYmFja2dyb3Vu
ZCIgY2hhbm5lbC4gIFNvLCBpZiB3ZQ0KCQkgKiBhcmUgc2VsZWN0aW5nLCBr
ZWVwIHBvbGxpbmcgdGhlIGN1cnJlbnQgY2hhbm5lbCB1dGlsDQoJCSAqIGVp
dGhlciBhIHNlbGVjdGlvbiBvciByZXNlbGVjdGlvbiBvY2N1cnMuDQoJCSAq
Lw0KCQl4b3IJU0JMS0NUTCxTRUxCVVNCOwkvKiBUb2dnbGUgdG8gdGhlIG90
aGVyIGJ1cyAqLw0KCQl0ZXN0CVNTVEFUMCwgU0VMRE98U0VMREkJam56IHNl
bGVjdGlvbjsNCgkJdGVzdAlTQ1NJU0VRLCBFTlNFTE8Jam56IHBvbGxfZm9y
X3dvcms7DQoJCXhvcglTQkxLQ1RMLFNFTEJVU0I7CS8qIFRvZ2dsZSBiYWNr
ICovDQoJfQ0KCWNtcAlXQUlUSU5HX1NDQkgsU0NCX0xJU1RfTlVMTCBqbmUg
c3RhcnRfd2FpdGluZzsNCnRlc3RfcXVldWU6DQoJLyogSGFzIHRoZSBkcml2
ZXIgcG9zdGVkIGFueSB3b3JrIGZvciB1cz8gKi8NCglpZiAoKGFoYy0+ZmVh
dHVyZXMgJiBBSENfUVVFVUVfUkVHUykgIT0gMCkgew0KCQl0ZXN0CVFPRkZf
Q1RMU1RBLCBTQ0JfQVZBSUwganogcG9sbF9mb3Jfd29ya19sb29wOw0KCQlt
b3YJTk9ORSwgU05TQ0JfUU9GRjsNCgkJaW5jCVFJTlBPUzsNCgl9IGVsc2Ug
ew0KCQlvcglTRVFDVEwsIFBBVVNFRElTOw0KCQljbXAJS0VSTkVMX1FJTlBP
UywgQSBqZSBwb2xsX2Zvcl93b3JrX2xvb3A7DQoJCWluYwlRSU5QT1M7DQoJ
CWFuZAlTRVFDVEwsIH5QQVVTRURJUzsNCgl9DQoNCi8qDQogKiBXZSBoYXZl
IGF0IGxlYXN0IG9uZSBxdWV1ZWQgU0NCIG5vdyBhbmQgd2UgZG9uJ3QgaGF2
ZSBhbnkgDQogKiBTQ0JzIGluIHRoZSBsaXN0IG9mIFNDQnMgYXdhaXRpbmcg
c2VsZWN0aW9uLiAgSWYgd2UgaGF2ZQ0KICogYW55IFNDQnMgYXZhaWxhYmxl
IGZvciB1c2UsIHB1bGwgdGhlIHRhZyBmcm9tIHRoZSBRSU5GSUZPDQogKiBh
bmQgZ2V0IHRvIHdvcmsgb24gaXQuDQogKi8NCglpZiAoKGFoYy0+ZmxhZ3Mg
JiBBSENfUEFHRVNDQlMpICE9IDApIHsNCgkJbW92CUFMTFpFUk9TCWNhbGwJ
Z2V0X2ZyZWVfb3JfZGlzY19zY2I7DQoJfQ0KDQpkZXF1ZXVlX3NjYjoNCglh
ZGQJQSwgLTEsIFFJTlBPUzsNCgltdmkJUUlORklGT19PRkZTRVQgY2FsbCBm
ZXRjaF9ieXRlOw0KDQoJaWYgKChhaGMtPmZsYWdzICYgQUhDX1BBR0VTQ0JT
KSA9PSAwKSB7DQoJCS8qIEluIHRoZSBub24tcGFnaW5nIGNhc2UsIHRoZSBT
Q0JJRCA9PSBoYXJkd2FyZSBTQ0IgaW5kZXggKi8NCgkJbW92CVNDQlBUUiwg
UkVUVVJOXzI7DQoJfQ0KZG1hX3F1ZXVlZF9zY2I6DQovKg0KICogRE1BIHRo
ZSBTQ0IgZnJvbSBob3N0IHJhbSBpbnRvIHRoZSBjdXJyZW50IFNDQiBsb2Nh
dGlvbi4NCiAqLw0KCW12aQlETUFQQVJBTVMsIEhETUFFTnxESVJFQ1RJT058
RklGT1JFU0VUOw0KCW1vdglSRVRVUk5fMgkgY2FsbCBkbWFfc2NiOw0KDQpz
dGFydF9zY2I6DQoJLyoNCgkgKiBQbGFjZSB1cyBvbiB0aGUgd2FpdGluZyBs
aXN0IGluIGNhc2Ugb3VyIHNlbGVjdGlvbg0KCSAqIGRvZXNuJ3Qgd2luIGR1
cmluZyBidXMgYXJiaXRyYXRpb24uDQoJICovDQoJbW92CVNDQl9ORVhULFdB
SVRJTkdfU0NCSDsNCgltb3YJV0FJVElOR19TQ0JILCBTQ0JQVFI7DQpzdGFy
dF93YWl0aW5nOg0KCS8qDQoJICogUHVsbCB0aGUgZmlyc3QgZW50cnkgb2Zm
IG9mIHRoZSB3YWl0aW5nIFNDQiBsaXN0Lg0KCSAqLw0KCW1vdglTQ0JQVFIs
IFdBSVRJTkdfU0NCSDsNCgljYWxsCXN0YXJ0X3NlbGVjdGlvbjsNCglqbXAJ
cG9sbF9mb3Jfd29yazsNCg0Kc3RhcnRfc2VsZWN0aW9uOg0KCWlmICgoYWhj
LT5mZWF0dXJlcyAmIEFIQ19UV0lOKSAhPSAwKSB7DQoJCWFuZAlTSU5ERVgs
flNFTEJVU0IsU0JMS0NUTDsvKiBDbGVhciBjaGFubmVsIHNlbGVjdCBiaXQg
Ki8NCgkJYW5kCUEsU0VMQlVTQixTQ0JfVENMOwkvKiBHZXQgbmV3IGNoYW5u
ZWwgYml0ICovDQoJCW9yCVNJTkRFWCxBOw0KCQltb3YJU0JMS0NUTCxTSU5E
RVg7CQkvKiBzZWxlY3QgY2hhbm5lbCAqLw0KCX0NCmluaXRpYWxpemVfc2Nz
aWlkOg0KCWlmICgoYWhjLT5mZWF0dXJlcyAmIEFIQ19VTFRSQTIpICE9IDAp
IHsNCgkJYW5kCUEsIFRJRCwgU0NCX1RDTDsJLyogR2V0IHRhcmdldCBJRCAq
Lw0KCQlhbmQJU0NTSUlEX1VMVFJBMiwgT0lEOwkvKiBDbGVhciBvbGQgdGFy
Z2V0ICovDQoJCW9yCVNDU0lJRF9VTFRSQTIsIEE7DQoJfSBlbHNlIHsNCgkJ
YW5kCUEsIFRJRCwgU0NCX1RDTDsJLyogR2V0IHRhcmdldCBJRCAqLw0KCQlh
bmQJU0NTSUlELCBPSUQ7CQkvKiBDbGVhciBvbGQgdGFyZ2V0ICovDQoJCW9y
CVNDU0lJRCwgQTsNCgl9DQoJbXZpCVNDU0lTRVEsIEVOU0VMT3xFTkFVVE9B
VE5PfEVOUlNFTEl8RU5BVVRPQVROUCByZXQ7DQoNCi8qDQogKiBJbml0aWFs
aXplIFVsdHJhIG1vZGUgc2V0dGluZyBhbmQgY2xlYXIgdGhlIFNDU0kgY2hh
bm5lbC4NCiAqIFNJTkRFWCBzaG91bGQgY29udGFpbiBhbnkgYWRkaXRpb25h
bCBiaXQncyB0aGUgY2xpZW50IHdhbnRzDQogKiBzZXQgaW4gU1hGUkNUTDAu
DQogKi8NCmluaXRpYWxpemVfY2hhbm5lbDoNCglvcglBLCBDTFJTVENOVHxD
TFJDSE4sIFNJTkRFWDsNCglvcglTWEZSQ1RMMCwgQTsNCglpZiAoKGFoYy0+
ZmVhdHVyZXMgJiBBSENfVUxUUkEpICE9IDApIHsNCnVsdHJhOg0KCQltdmkJ
U0lOREVYLCBVTFRSQV9FTkIrMTsNCgkJdGVzdAlTQVZFRF9UQ0wsIDB4ODAJ
CWpueiB1bHRyYV8yOyAvKiBUYXJnZXQgSUQgPiA3ICovDQoJCWRlYwlTSU5E
RVg7DQp1bHRyYV8yOg0KCQltb3YgICAgIEZVTkNUSU9OMSxTQVZFRF9UQ0w7
DQoJCW1vdiAgICAgQSxGVU5DVElPTjE7DQoJCXRlc3QJU0lORElSLCBBCWp6
IG5keF9kdHI7DQoJCW9yCVNYRlJDVEwwLCBGQVNUMjA7DQoJfSANCi8qDQog
KiBJbml0aWFsaXplIFNDU0lSQVRFIHdpdGggdGhlIGFwcHJvcHJpYXRlIHZh
bHVlIGZvciB0aGlzIHRhcmdldC4NCiAqIFRoZSBTQ1NJUkFURSBzZXR0aW5n
cyBmb3IgZWFjaCB0YXJnZXQgYXJlIHN0b3JlZCBpbiBhbiBhcnJheQ0KICog
YmFzZWQgYXQgVEFSR19TQ1NJUkFURS4NCiAqLw0KbmR4X2R0cjoNCglzaHIJ
QSw0LFNBVkVEX1RDTDsNCglpZiAoKGFoYy0+ZmVhdHVyZXMgJiBBSENfVFdJ
TikgIT0gMCkgew0KCQl0ZXN0CVNCTEtDVEwsU0VMQlVTQglqeiBuZHhfZHRy
XzI7DQoJCW9yCVNBVkVEX1RDTCwgU0VMQlVTQjsgDQoJCW9yCUEsMHgwODsJ
CQkvKiBDaGFubmVsIEIgZW50cmllcyBhZGQgOCAqLw0KbmR4X2R0cl8yOg0K
CX0NCg0KCWlmICgoYWhjLT5mZWF0dXJlcyAmIEFIQ19VTFRSQTIpICE9IDAp
IHsNCgkJYWRkCVNJTkRFWCwgVEFSR19PRkZTRVQsIEE7DQoJCW1vdglTQ1NJ
T0ZGU0VULCBTSU5ESVI7DQoJfQ0KDQoJYWRkCVNJTkRFWCxUQVJHX1NDU0lS
QVRFLEE7DQoJbW92CVNDU0lSQVRFLFNJTkRJUiByZXQ7DQoNCg0Kc2VsZWN0
aW9uOg0KCXRlc3QJU1NUQVQwLFNFTERPCWpueiBzZWxlY3Rfb3V0Ow0Kc2Vs
ZWN0X2luOg0KCWlmICgoYWhjLT5mbGFncyAmIEFIQ19UQVJHRVRNT0RFKSAh
PSAwKSB7DQoJCXRlc3QJU1NUQVQwLCBUQVJHRVQJanogaW5pdGlhdG9yX3Jl
c2VsZWN0Ow0KCQkvKg0KCQkgKiBXZSd2ZSBqdXN0IGJlZW4gc2VsZWN0ZWQu
ICBBc3NlcnQgQlNZIGFuZA0KCQkgKiBzZXR1cCB0aGUgcGhhc2UgZm9yIHJl
Y2VpdmluZyB0aGUgbWVzc2FnZXMNCgkJICogZnJvbSB0aGUgdGFyZ2V0Lg0K
CQkgKi8NCgkJbXZpCVNDU0lTSUdPLCBQX01FU0dPVVR8QlNZTzsNCgkJbXZp
CUNMUlNJTlQwLCBDTFJTRUxETzsNCg0KCQkvKg0KCQkgKiBJZiBBVE4gaXNu
J3QgYXNzZXJ0ZWQsIGdvIGRpcmVjdGx5IHRvIGJ1cyBmcmVlLg0KCQkgKi8N
CgkJdGVzdAlTQ1NJU0lHSSwgQVROSQlqegl0YXJnZXRfYnVzZnJlZTsNCg0K
CQkvKg0KCQkgKiBTZXR1cCB0aGUgRE1BIGZvciBzZW5kaW5nIHRoZSBpZGVu
dGlmeSBhbmQNCgkJICogY29tbWFuZCBpbmZvcm1hdGlvbi4NCgkJICovDQoJ
CW1vdglBLCBUTU9ERV9DTURBRERSX05FWFQ7DQoJCW12aQlESU5ERVgsIEhB
RERSOw0KCQltdmkJVE1PREVfQ01EQUREUiBjYWxsIHNldF8zMmJ5dGVfYWRk
cjsNCgkJbXZpCURGQ05UUkwsIEZJRk9SRVNFVDsNCg0KCQljbHIJU0lOREVY
Ow0KCQkvKiBXYXRjaCBBVE4gY2xvc2VseSBub3cgKi8NCm1lc3NhZ2VfbG9v
cDoNCgkJb3IJU1hGUkNUTDAsIFNQSU9FTjsNCgkJdGVzdAlTU1RBVDAsIFNQ
SU9SRFkganogLjsNCgkJYW5kCVNYRlJDVEwwLCB+U1BJT0VOOw0KCQltb3YJ
RElOREVYLCBTQ1NJREFUTDsNCgkJbW92CURGREFULCBESU5ERVg7DQoJCWlu
YwlTSU5ERVg7DQoNCgkJLyogTWVzc2FnZSBUZXN0aW5nLi4uICovDQoJCXRl
c3QJRElOREVYLCBNU0dfSURFTlRJRllGTEFHIGp6IC4gKyAyOw0KCQltb3YJ
QVJHXzEsIERJTkRFWDsNCg0KCQl0ZXN0CVNDU0lTSUdJLCBBVE5JCWpueglt
ZXNzYWdlX2xvb3A7DQoJCWFkZAlBLCAtNCwgU0lOREVYOw0KCQlqYwl0YXJn
ZXRfY21kcGhhc2U7DQoJCW12aQlERkRBVCwgU0NCX0xJU1RfTlVMTDsJLyog
VGVybWluYXRlIHRoZSBtZXNzYWdlIGxpc3QgKi8NCg0KdGFyZ2V0X2NtZHBo
YXNlOg0KCQlhZGQJSENOVFswXSwgMSwgQTsNCgkJY2xyCUhDTlRbMV07DQoJ
CWNscglIQ05UWzJdOw0KCQltdmkJU0NTSVNJR08sIFBfQ09NTUFORHxCU1lP
Ow0KCQlvcglTWEZSQ1RMMCwgU1BJT0VOOw0KCQl0ZXN0CVNTVEFUMCwgU1BJ
T1JEWSBqeiAuOw0KCQltb3YJQSwgU0NTSURBVEw7DQoJCW1vdglERkRBVCwg
QTsJLyogU3RvcmUgZm9yIGhvc3QgKi8NCg0KCQkvKg0KCQkgKiBEZXRlcm1p
bmUgdGhlIG51bWJlciBvZiBieXRlcyB0byByZWFkDQoJCSAqIGJhc2VkIG9u
IHRoZSBjb21tYW5kIGdyb3VwIGNvZGUuICBDb3VudCBpcw0KCQkgKiBvbmUg
bGVzcyB0aGFuIHRoZSB0b3RhbCBzaW5jZSB3ZSd2ZSBhbHJlYWR5DQoJCSAq
IGZldGNoZWQgdGhlIGZpcnN0IGJ5dGUuDQoJCSAqLw0KCQljbHIJU0lOREVY
Ow0KCQlzaHIJQSwgQ01EX0dST1VQX0NPREVfU0hJRlQ7DQoJCWFkZAlTRVFB
RERSMCwgQTsNCg0KCQlhZGQJU0lOREVYLCBDTURfR1JPVVAwX0JZVEVfREVM
VEE7DQoJCW5vcDsJLyogR3JvdXAgMSBhbmQgMiBhcmUgdGhlIHNhbWUgKi8N
CgkJYWRkCVNJTkRFWCwgQ01EX0dST1VQMl9CWVRFX0RFTFRBOw0KCQlub3A7
CS8qIEdyb3VwIDMgaXMgcmVzZXJ2ZWQgKi8NCgkJYWRkCVNJTkRFWCwgQ01E
X0dST1VQNF9CWVRFX0RFTFRBOw0KCQlhZGQJU0lOREVYLCBDTURfR1JPVVA1
X0JZVEVfREVMVEE7DQoJCS8qIEdyb3VwIDYgYW5kIDcgYXJlIG5vdCBoYW5k
bGVkIHlldCAqLw0KDQoJCW1vdglBLCBTSU5ERVg7DQoJCWFkZAlIQ05UWzBd
LCBBOw0KDQpjb21tYW5kX2xvb3A6DQoJCXRlc3QJU1NUQVQwLCBTUElPUkRZ
IGp6IC47DQoJCWNtcAlTSU5ERVgsIDEgam5lIC4gKyAyOw0KCQlhbmQJU1hG
UkNUTDAsIH5TUElPRU47CS8qIExhc3QgQnl0ZSAqLw0KCQltb3YJREZEQVQs
IFNDU0lEQVRMOw0KCQlkZWMJU0lOREVYOw0KCQl0ZXN0CVNJTkRFWCwgMHhG
RiBqbnogY29tbWFuZF9sb29wOw0KDQoJCW9yCURGQ05UUkwsIEhETUFFTnxG
SUZPRkxVU0g7DQoJDQoJCWNhbGwJZG1hX2ZpbmlzaDsNCg0KCQl0ZXN0CUFS
R18xLCBNU0dfSURFTlRJRllfRElTQ0ZMQUcganogc2VsZWN0aW5fcG9zdDsN
Cg0KCQltdmkJU0NTSVNJR08sIFBfTUVTR0lOfEJTWU87DQoNCgkJb3IJU1hG
UkNUTDAsIFNQSU9FTjsNCg0KCQltdmkJTVNHX0RJU0NPTk5FQ1QgY2FsbCB0
YXJnZXRfb3V0YjsNCgkNCnNlbGVjdGluX3Bvc3Q6DQoJCWluYwlUTU9ERV9D
TURBRERSX05FWFQ7DQoJCWNtcAlUTU9ERV9DTURBRERSX05FWFQsIFRNT0RF
X05VTUNNRFMgam5lIC4gKyAyOw0KCQljbHIJVE1PREVfQ01EQUREUl9ORVhU
Ow0KCQltdmkJUU9VVEZJRk8sIFNDQl9MSVNUX05VTEw7DQoJCW12aQlJTlRT
VEFULENNRENNUExUOw0KDQoJCXRlc3QJQVJHXzEsIE1TR19JREVOVElGWV9E
SVNDRkxBRyBqbnogdGFyZ2V0X2J1c2ZyZWU7DQoNCgkJLyogQnVzeSBsb29w
IG9uIHNvbWV0aGluZyB0aGVuIGdvIHRvIGRhdGEgb3Igc3RhdHVzIHBoYXNl
ICovDQoNCnRhcmdldF9idXNmcmVlOg0KCQljbHIJU0NTSVNJR087DQoJCWpt
cAlwb2xsX2Zvcl93b3JrOw0KDQoJfQ0KDQovKg0KICogUmVzZWxlY3Rpb24g
aGFzIGJlZW4gaW5pdGlhdGVkIGJ5IGEgdGFyZ2V0LiBNYWtlIGEgbm90ZSB0
aGF0IHdlJ3ZlIGJlZW4NCiAqIHJlc2VsZWN0ZWQsIGJ1dCBoYXZlbid0IHNl
ZW4gYW4gSURFTlRJRlkgbWVzc2FnZSBmcm9tIHRoZSB0YXJnZXQgeWV0Lg0K
ICovDQppbml0aWF0b3JfcmVzZWxlY3Q6DQoJbXZpCUNMUlNJTlQwLCBDTFJT
RUxESTsNCgkvKiBYWFggdGVzdCBmb3IgYW5kIGhhbmRsZSBPTkUgQklUIGNv
bmRpdGlvbiAqLw0KCWFuZAlTQVZFRF9UQ0wsIFNFTElEX01BU0ssIFNFTElE
Ow0KCW12aQlDTFJTSU5UMSxDTFJCVVNGUkVFOw0KCW9yCVNJTU9ERTEsIEVO
QlVTRlJFRTsJCS8qDQoJCQkJCQkgKiBXZSBhcmVuJ3QgZXhwZWN0aW5nIGEN
CgkJCQkJCSAqIGJ1cyBmcmVlLCBzbyBpbnRlcnJ1cHQNCgkJCQkJCSAqIHRo
ZSBrZXJuZWwgZHJpdmVyIGlmIGl0DQoJCQkJCQkgKiBoYXBwZW5zLg0KCQkJ
CQkJICovDQoJbXZpCVNQSU9FTiBjYWxsCWluaXRpYWxpemVfY2hhbm5lbDsN
CgltdmkJTVNHX09VVCwgTVNHX05PT1A7CQkvKiBObyBtZXNzYWdlIHRvIHNl
bmQgKi8NCglqbXAJSVRsb29wOw0KDQovKg0KICogQWZ0ZXIgdGhlIHNlbGVj
dGlvbiwgcmVtb3ZlIHRoaXMgU0NCIGZyb20gdGhlICJ3YWl0aW5nIFNDQiIN
CiAqIGxpc3QuICBUaGlzIGlzIGFjaGlldmVkIGJ5IHNpbXBseSBtb3Zpbmcg
b3VyICJuZXh0IiBwb2ludGVyIGludG8NCiAqIFdBSVRJTkdfU0NCSC4gIE91
ciBuZXh0IHBvaW50ZXIgd2lsbCBiZSBzZXQgdG8gbnVsbCB0aGUgbmV4dCB0
aW1lIHRoaXMNCiAqIFNDQiBpcyB1c2VkLCBzbyBkb24ndCBib3RoZXIgd2l0
aCBpdCBub3cuDQogKi8NCnNlbGVjdF9vdXQ6DQoJLyogVHVybiBvZmYgdGhl
IHNlbGVjdGlvbiBoYXJkd2FyZSAqLw0KCW12aQlTQ1NJU0VRLCBFTlJTRUxJ
fEVOQVVUT0FUTlA7CS8qDQoJCQkJCQkgKiBBVE4gb24gcGFyaXR5IGVycm9y
cw0KCQkJCQkJICogZm9yICJpbiIgcGhhc2VzDQoJCQkJCQkgKi8NCgltdmkJ
Q0xSU0lOVDAsIENMUlNFTERPOw0KCW1vdglTQ0JQVFIsIFdBSVRJTkdfU0NC
SDsNCgltb3YJV0FJVElOR19TQ0JILFNDQl9ORVhUOw0KCW1vdglTQVZFRF9U
Q0wsIFNDQl9UQ0w7DQoJbXZpCUNMUlNJTlQxLENMUkJVU0ZSRUU7DQoJb3IJ
U0lNT0RFMSwgRU5CVVNGUkVFOwkJLyoNCgkJCQkJCSAqIFdlIGFyZW4ndCBl
eHBlY3RpbmcgYQ0KCQkJCQkJICogYnVzIGZyZWUsIHNvIGludGVycnVwdA0K
CQkJCQkJICogdGhlIGtlcm5lbCBkcml2ZXIgaWYgaXQNCgkJCQkJCSAqIGhh
cHBlbnMuDQoJCQkJCQkgKi8NCgltdmkJU1BJT0VOIGNhbGwJaW5pdGlhbGl6
ZV9jaGFubmVsOw0KLyoNCiAqIEFzIHNvb24gYXMgd2UgZ2V0IGEgc3VjY2Vz
c2Z1bCBzZWxlY3Rpb24sIHRoZSB0YXJnZXQgc2hvdWxkIGdvDQogKiBpbnRv
IHRoZSBtZXNzYWdlIG91dCBwaGFzZSBzaW5jZSB3ZSBoYXZlIEFUTiBhc3Nl
cnRlZC4NCiAqLw0KCW12aQlNU0dfT1VULCBNU0dfSURFTlRJRllGTEFHOw0K
CW9yCVNFUV9GTEFHUywgSURFTlRJRllfU0VFTjsNCg0KLyoNCiAqIE1haW4g
bG9vcCBmb3IgaW5mb3JtYXRpb24gdHJhbnNmZXIgcGhhc2VzLiAgV2FpdCBm
b3IgdGhlIHRhcmdldA0KICogdG8gYXNzZXJ0IFJFUSBiZWZvcmUgY2hlY2tp
bmcgTVNHLCBDL0QgYW5kIEkvTyBmb3IgdGhlIGJ1cyBwaGFzZS4NCiAqLw0K
SVRsb29wOg0KCWNhbGwJcGhhc2VfbG9jazsNCg0KCW1vdglBLCBMQVNUUEhB
U0U7DQoNCgl0ZXN0CUEsIH5QX0RBVEFJTglqeiBwX2RhdGE7DQoJY21wCUEs
UF9DT01NQU5ECWplIHBfY29tbWFuZDsNCgljbXAJQSxQX01FU0dPVVQJamUg
cF9tZXNnb3V0Ow0KCWNtcAlBLFBfU1RBVFVTCWplIHBfc3RhdHVzOw0KCWNt
cAlBLFBfTUVTR0lOCWplIHBfbWVzZ2luOw0KDQoJbXZpCUlOVFNUQVQsQkFE
X1BIQVNFOwkvKiB1bmtub3duIHBoYXNlIC0gc2lnbmFsIGRyaXZlciAqLw0K
CWptcAlJVGxvb3A7CQkJLyogVHJ5IHJlYWRpbmcgdGhlIGJ1cyBhZ2Fpbi4g
Ki8NCg0KYXdhaXRfYnVzZnJlZToNCglhbmQJU0lNT0RFMSwgfkVOQlVTRlJF
RTsNCgljYWxsCWNsZWFyX3RhcmdldF9zdGF0ZTsNCgltb3YJTk9ORSwgU0NT
SURBVEw7CQkvKiBBY2sgdGhlIGxhc3QgYnl0ZSAqLw0KCWFuZAlTWEZSQ1RM
MCwgflNQSU9FTjsNCgl0ZXN0CVNTVEFUMSxSRVFJTklUfEJVU0ZSRUUJanog
LjsNCgl0ZXN0CVNTVEFUMSwgQlVTRlJFRSBqbnogcG9sbF9mb3Jfd29yazsN
CgltdmkJSU5UU1RBVCwgQkFEX1BIQVNFOw0KCQ0KY2xlYXJfdGFyZ2V0X3N0
YXRlOg0KCWNscglERkNOVFJMOwkJLyoNCgkJCQkJICogV2UgYXNzdW1lIHRo
YXQgdGhlIGtlcm5lbCBkcml2ZXINCgkJCQkJICogbWF5IHJlc2V0IHVzIGF0
IGFueSB0aW1lLCBldmVuDQoJCQkJCSAqIGluIHRoZSBtaWRkbGUgb2YgYSBE
TUEsIHNvIGNsZWFyDQoJCQkJCSAqIERGQ05UUkwgdG9vLg0KCQkJCQkgKi8N
CgljbHIJU0NTSVJBVEU7CQkvKg0KCQkJCQkgKiBXZSBkb24ndCBrbm93IHRo
ZSB0YXJnZXQgd2Ugd2lsbA0KCQkJCQkgKiBjb25uZWN0IHRvLCBzbyBkZWZh
dWx0IHRvIG5hcnJvdw0KCQkJCQkgKiB0cmFuc2ZlcnMgdG8gYXZvaWQgcGFy
aXR5IHByb2JsZW1zLg0KCQkJCQkgKi8NCglhbmQJU1hGUkNUTDAsIH4oRkFT
VDIwKTsNCgltdmkJTEFTVFBIQVNFLCBQX0JVU0ZSRUU7DQoJLyogY2xlYXIg
dGFyZ2V0IHNwZWNpZmljIGZsYWdzICovDQoJYW5kCVNFUV9GTEFHUywgKFdJ
REVfQlVTfFRXSU5fQlVTKSByZXQ7DQoNCi8qDQogKiBJZiB3ZSByZS1lbnRl
ciB0aGUgZGF0YSBwaGFzZSBhZnRlciBnb2luZyB0aHJvdWdoIGFub3RoZXIg
cGhhc2UsIHRoZQ0KICogU1RDTlQgbWF5IGhhdmUgYmVlbiBjbGVhcmVkLCBz
byByZXN0b3JlIGl0IGZyb20gdGhlIHJlc2lkdWFsIGZpZWxkLg0KICovDQpk
YXRhX3BoYXNlX3JlaW5pdDoNCgltdmkJRElOREVYLCBTVENOVDsNCgltdmkJ
U0NCX1JFU0lEX0RDTlQJY2FsbCBiY29weV8zOw0KCWptcAlkYXRhX3BoYXNl
X2xvb3A7DQoNCnBfZGF0YToNCglpZiAoKGFoYy0+ZmVhdHVyZXMgJiBBSENf
VUxUUkEyKSAhPSAwKSB7DQoJCW12aQlETUFQQVJBTVMsIFBSRUxPQURFTnxT
Q1NJRU58SERNQUVOOw0KCX0gZWxzZSB7DQoJCW12aQlETUFQQVJBTVMsIFdJ
REVPRER8U0NTSUVOfFNETUFFTnxIRE1BRU58RklGT1JFU0VUOw0KCX0NCgl0
ZXN0CUxBU1RQSEFTRSwgSU9JIGpueiAuICsgMjsNCglvcglETUFQQVJBTVMs
IERJUkVDVElPTjsNCgljYWxsCWFzc2VydDsJCQkvKg0KCQkJCQkgKiBFbnN1
cmUgZW50ZXJpbmcgYSBkYXRhDQoJCQkJCSAqIHBoYXNlIGlzIG9rYXkgLSBz
ZWVuIGlkZW50aWZ5LCBldGMuDQoJCQkJCSAqLw0KCWlmICgoYWhjLT5mZWF0
dXJlcyAmIEFIQ19DTURfQ0hBTikgIT0gMCkgew0KCQltdmkJQ0NTR0FERFIs
IENDU0dBRERSX01BWDsNCgl9DQoJdGVzdAlTRVFfRkxBR1MsIERQSEFTRQlq
bnogZGF0YV9waGFzZV9yZWluaXQ7DQoNCgkvKiBXZSBoYXZlIHNlZW4gYSBk
YXRhIHBoYXNlICovDQoJb3IJU0VRX0ZMQUdTLCBEUEhBU0U7DQoNCgkvKg0K
CSAqIEluaXRpYWxpemUgdGhlIERNQSBhZGRyZXNzIGFuZCBjb3VudGVyIGZy
b20gdGhlIFNDQi4NCgkgKiBBbHNvIHNldCBTR19DT1VOVCBhbmQgU0dfTkVY
VCBpbiBtZW1vcnkgc2luY2Ugd2UgY2Fubm90DQoJICogbW9kaWZ5IHRoZSB2
YWx1ZXMgaW4gdGhlIFNDQiBpdHNlbGYgdW50aWwgd2Ugc2VlIGENCgkgKiBz
YXZlIGRhdGEgcG9pbnRlcnMgbWVzc2FnZS4NCgkgKi8NCglpZiAoKGFoYy0+
ZmVhdHVyZXMgJiBBSENfQ01EX0NIQU4pICE9IDApIHsNCgkJYm1vdglIQURE
UiwgU0NCX0RBVEFQVFIsIDc7DQoJfSBlbHNlIHsNCgkJbXZpCURJTkRFWCwg
SEFERFI7DQoJCW12aQlTQ0JfREFUQVBUUgljYWxsIGJjb3B5Xzc7DQoJfQ0K
DQoJaWYgKChhaGMtPmZlYXR1cmVzICYgQUhDX1VMVFJBMikgPT0gMCkgew0K
CQljYWxsCXNldF9zdGNudF9mcm9tX2hjbnQ7DQoJfQ0KDQoJbW92CVNHX0NP
VU5ULFNDQl9TR0NPVU5UOw0KDQoJbXZpCURJTkRFWCwgU0dfTkVYVDsNCglt
dmkJU0NCX1NHUFRSCWNhbGwgYmNvcHlfNDsNCg0KZGF0YV9waGFzZV9sb29w
Og0KLyogR3VhcmQgYWdhaW5zdCBvdmVycnVucyAqLw0KCXRlc3QJU0dfQ09V
TlQsIDB4ZmYgam56IGRhdGFfcGhhc2VfaW5ib3VuZHM7DQovKg0KICogVHVy
biBvbiAnQml0IEJ1Y2tldCcgbW9kZSwgc2V0IHRoZSB0cmFuc2ZlciBjb3Vu
dCB0bw0KICogMTZtZWcgYW5kIGxldCB0aGUgdGFyZ2V0IHJ1biB1bnRpbCBp
dCBjaGFuZ2VzIHBoYXNlLg0KICogV2hlbiB0aGUgdHJhbnNmZXIgY29tcGxl
dGVzLCBub3RpZnkgdGhlIGhvc3QgdGhhdCB3ZQ0KICogaGFkIGFuIG92ZXJy
dW4uDQogKi8NCglvcglTWEZSQ1RMMSxCSVRCVUNLRVQ7DQoJYW5kCURNQVBB
UkFNUywgfihIRE1BRU58U0RNQUVOKTsNCglpZiAoKGFoYy0+ZmVhdHVyZXMg
JiBBSENfVUxUUkEyKSAhPSAwKSB7DQoJCWJtb3YJSENOVCwgQUxMT05FUywg
MzsNCgl9IGVsc2Ugew0KCQltdmkJU1RDTlRbMF0sIDB4RkY7DQoJCW12aQlT
VENOVFsxXSwgMHhGRjsNCgkJbXZpCVNUQ05UWzJdLCAweEZGOw0KCX0NCmRh
dGFfcGhhc2VfaW5ib3VuZHM6DQovKiBJZiB3ZSBhcmUgdGhlIGxhc3QgU0cg
YmxvY2ssIHRlbGwgdGhlIGhhcmR3YXJlLiAqLw0KCWNtcAlTR19DT1VOVCww
eDAxIGpuZSBkYXRhX3BoYXNlX3dpZGVvZGQ7DQoJaWYgKChhaGMtPmZlYXR1
cmVzICYgQUhDX1VMVFJBMikgIT0gMCkgew0KCQlvcglTR19DQUNIRVBUUiwg
TEFTVF9TRUc7DQoJfSBlbHNlIHsNCgkJYW5kCURNQVBBUkFNUywgfldJREVP
REQ7DQoJfQ0KZGF0YV9waGFzZV93aWRlb2RkOg0KCWlmICgoYWhjLT5mZWF0
dXJlcyAmIEFIQ19VTFRSQTIpICE9IDApIHsNCgkJbW92CVNJTkRFWCwgQUxM
T05FUzsNCgkJbW92CURGQ05UUkwsIERNQVBBUkFNUzsNCgkJdGVzdAlTU1RB
VDAsIFNET05FIGpueiAuOy8qIFdhaXQgZm9yIHByZWxvYWQgdG8gY29tcGxl
dGUgKi8NCmRhdGFfcGhhc2VfZG1hX2xvb3A6DQoJCXRlc3QJU1NUQVQwLAlT
RE9ORSBqbnogZGF0YV9waGFzZV9kbWFfZG9uZTsNCgkJdGVzdAlTU1RBVDEs
UEhBU0VNSVMJanogZGF0YV9waGFzZV9kbWFfbG9vcDsJLyogaWUuIHVuZGVy
cnVuICovDQpkYXRhX3BoYXNlX2RtYV9waGFzZW1pczoNCgkJdGVzdAlTU1RB
VDAsU0RPTkUJam56IC4gKyAyOw0KCQltb3YJU0lOREVYLEFMTFpFUk9TOwkv
KiBSZW1lYmVyIHRoZSBwaGFzZW1pc3MgKi8NCgl9IGVsc2Ugew0KCQltb3YJ
RE1BUEFSQU1TICBjYWxsIGRtYTsNCgl9DQoNCmRhdGFfcGhhc2VfZG1hX2Rv
bmU6DQovKiBHbyB0ZWxsIHRoZSBob3N0IGFib3V0IGFueSBvdmVycnVucyAq
Lw0KCXRlc3QJU1hGUkNUTDEsQklUQlVDS0VUIGpueiBkYXRhX3BoYXNlX292
ZXJydW47DQoNCi8qIEV4aXQgaWYgd2UgaGFkIGFuIHVuZGVycnVuLiAgZG1h
IGNsZWFycyBTSU5ERVggaW4gdGhpcyBjYXNlLiAqLw0KCXRlc3QJU0lOREVY
LDB4ZmYJanogZGF0YV9waGFzZV9maW5pc2g7DQoNCi8qDQogKiBBZHZhbmNl
IHRoZSBzY2F0dGVyLWdhdGhlciBwb2ludGVycyBpZiBuZWVkZWQgDQogKi8N
CnNnX2FkdmFuY2U6DQoJZGVjCVNHX0NPVU5UOwkvKiBvbmUgbGVzcyBzZWdt
ZW50IHRvIGdvICovDQoNCgl0ZXN0CVNHX0NPVU5ULCAweGZmCWp6IGRhdGFf
cGhhc2VfZmluaXNoOyAvKiBBcmUgd2UgZG9uZT8gKi8NCi8qDQogKiBMb2Fk
IGEgc3RydWN0IHNjYXR0ZXIgYW5kIHNldCB1cCB0aGUgZGF0YSBhZGRyZXNz
IGFuZCBsZW5ndGguDQogKiBJZiB0aGUgd29ya2luZyB2YWx1ZSBvZiB0aGUg
U0cgY291bnQgaXMgbm9uemVybywgdGhlbg0KICogd2UgbmVlZCB0byBsb2Fk
IGEgbmV3IHNldCBvZiB2YWx1ZXMuDQogKg0KICogVGhpcywgbGlrZSBhbGwg
RE1BJ3MsIGFzc3VtZXMgbGl0dGxlLWVuZGlhbiBob3N0IGRhdGEgc3RvcmFn
ZS4NCiAqLw0Kc2dfbG9hZDoNCglpZiAoKGFoYy0+ZmVhdHVyZXMgJiBBSENf
Q01EX0NIQU4pICE9IDApIHsNCgkJLyoNCgkJICogRG8gd2UgaGF2ZSBhbnkg
cHJlZmV0Y2ggbGVmdD8/Pw0KCQkgKi8NCgkJY21wCUNDU0dBRERSLCBDQ1NH
QUREUl9NQVggam5lIHByZWZldGNoZWRfc2Vnc19hdmFpbDsNCg0KCQkvKg0K
CQkgKiBGZXRjaCBNSU4oQ0NTR0FERFJfTUFYLCAoU0dfQ09VTlQgKiA4KSkg
Ynl0ZXMuDQoJCSAqLw0KCQlhZGQJQSwgLShDQ1NHUkFNX01BWFNFR1MgKyAx
KSwgU0dfQ09VTlQ7DQoJCW12aQlBLCBDQ1NHQUREUl9NQVg7DQoJCWpjCS4g
KyAyOw0KCQlzaGwJQSwgMywgU0dfQ09VTlQ7DQoJCW1vdglDQ0hDTlQsIEE7
DQoJCWJtb3YJQ0NIQUREUiwgU0dfTkVYVCwgNDsNCgkJbXZpCUNDU0dDVEws
IENDU0dFTnxDQ1NHUkVTRVQ7DQoJCXRlc3QJQ0NTR0NUTCwgQ0NTR0RPTkUg
anogLjsNCgkJYW5kCUNDU0dDVEwsIH5DQ1NHRU47DQoJCXRlc3QJQ0NTR0NU
TCwgQ0NTR0VOIGpueiAuOw0KCQltdmkJQ0NTR0NUTCwgQ0NTR1JFU0VUOw0K
cHJlZmV0Y2hlZF9zZWdzX2F2YWlsOg0KCQlibW92IAlIQUREUiwgQ0NTR1JB
TSwgODsNCgl9IGVsc2Ugew0KCQltdmkJRElOREVYLCBIQUREUjsNCgkJbXZp
CVNHX05FWFQJY2FsbCBiY29weV80Ow0KDQoJCW12aQlIQ05UWzBdLFNHX1NJ
WkVPRjsNCgkJY2xyCUhDTlRbMV07DQoJCWNscglIQ05UWzJdOw0KDQoJCW9y
CURGQ05UUkwsIEhETUFFTnxESVJFQ1RJT058RklGT1JFU0VUOw0KDQoJCWNh
bGwJZG1hX2ZpbmlzaDsNCg0KCQkvKg0KCQkgKiBDb3B5IGRhdGEgZnJvbSBG
SUZPIGludG8gU0NCIGRhdGEgcG9pbnRlciBhbmQgZGF0YSBjb3VudC4NCgkJ
ICogVGhpcyBhc3N1bWVzIHRoYXQgdGhlIFNHIHNlZ21lbnRzIGFyZSBvZiB0
aGUgZm9ybToNCgkJICogc3RydWN0IGFoY19kbWFfc2VnIHsNCgkJICoJdV9p
bnQzMl90CWFkZHI7CWZvdXIgYnl0ZXMsIGxpdHRsZS1lbmRpYW4gb3JkZXIN
CgkJICoJdV9pbnQzMl90CWxlbjsJZm91ciBieXRlcywgbGl0dGxlIGVuZGlh
biBvcmRlcg0KCQkgKiB9Ow0KCQkgKi8NCgkJbXZpCUhBRERSCWNhbGwgZGZk
YXRfaW5fNzsNCgl9DQoNCglpZiAoKGFoYy0+ZmVhdHVyZXMgJiBBSENfVUxU
UkEyKSA9PSAwKSB7DQoJCS8qIExvYWQgU1RDTlQgYXMgd2VsbC4gIEl0IGlz
IGEgbWlycm9yIG9mIEhDTlQgKi8NCgkJY2FsbAlzZXRfc3RjbnRfZnJvbV9o
Y250Ow0KCX0NCg0KLyogQWR2YW5jZSB0aGUgU0cgcG9pbnRlciAqLw0KCWNs
cglBOwkJCS8qIGFkZCBzaXplb2Yoc3RydWN0IHNjYXR0ZXIpICovDQoJYWRk
CVNHX05FWFRbMF0sU0dfU0laRU9GOw0KCWFkYwlTR19ORVhUWzFdLEE7DQoN
Cgl0ZXN0CVNTVEFUMSxQSEFTRU1JUwlqeiBkYXRhX3BoYXNlX2xvb3A7DQoJ
LyogRW5zdXJlIHRoZSBsYXN0IHNlZyBpcyB2aXNhYmxlIGF0IHRoZSBzaGFk
ZG93IGxheWVyICovDQoJaWYgKChhaGMtPmZlYXR1cmVzICYgQUhDX1VMVFJB
MikgIT0gMCkgew0KCQlvcglERkNOVFJMLCBQUkVMT0FERU47DQoJfQ0KDQpk
YXRhX3BoYXNlX2ZpbmlzaDoNCglpZiAoKGFoYy0+ZmVhdHVyZXMgJiBBSENf
VUxUUkEyKSAhPSAwKSB7DQoJCWNhbGwJdWx0cmEyX2RtYWZpbmlzaDsNCgl9
DQovKg0KICogQWZ0ZXIgYSBETUEgZmluaXNoZXMsIHNhdmUgdGhlIFNHIGFu
ZCBTVENOVCByZXNpZHVhbHMgYmFjayBpbnRvIHRoZSBTQ0INCiAqIFdlIHVz
ZSBTVENOVCBpbnN0ZWFkIG9mIEhDTlQsIHNpbmNlIGl0J3MgYSByZWZsZWN0
aW9uIG9mIGhvdyBtYW55IGJ5dGVzIA0KICogd2VyZSB0cmFuc2ZlcnJlZCBv
biB0aGUgU0NTSSAoYXMgb3Bwb3NlZCB0byB0aGUgaG9zdCkgYnVzLg0KICov
DQoJbW92CVNDQl9SRVNJRF9EQ05UWzBdLFNUQ05UWzBdOw0KCW1vdglTQ0Jf
UkVTSURfRENOVFsxXSxTVENOVFsxXTsNCgltb3YJU0NCX1JFU0lEX0RDTlRb
Ml0sU1RDTlRbMl07DQoJbW92CVNDQl9SRVNJRF9TR0NOVCwgU0dfQ09VTlQ7
DQoNCglpZiAoKGFoYy0+ZmVhdHVyZXMgJiBBSENfVUxUUkEyKSAhPSAwKSB7
DQoJCW9yCVNYRlJDVEwwLCBDTFJTVENOVHxDTFJDSE47DQoJfQ0KDQoJam1w
CUlUbG9vcDsNCg0KZGF0YV9waGFzZV9vdmVycnVuOg0KCWlmICgoYWhjLT5m
ZWF0dXJlcyAmIEFIQ19VTFRSQTIpICE9IDApIHsNCgkJY2FsbAl1bHRyYTJf
ZG1hZmluaXNoOw0KCQlvcglTWEZSQ1RMMCwgQ0xSU1RDTlR8Q0xSQ0hOOw0K
CX0NCi8qDQogKiBUdXJuIG9mZiBCSVRCVUNLRVQgbW9kZSBhbmQgbm90aWZ5
IHRoZSBob3N0DQogKi8NCglhbmQJU1hGUkNUTDEsIH5CSVRCVUNLRVQ7DQoJ
bXZpCUlOVFNUQVQsREFUQV9PVkVSUlVOOw0KCWptcAlJVGxvb3A7DQoNCnVs
dHJhMl9kbWFmaW5pc2g6DQoJaWYgKChhaGMtPmZlYXR1cmVzICYgQUhDX1VM
VFJBMikgIT0gMCkgew0KCQl0ZXN0CURGQ05UUkwsIERJUkVDVElPTiBqbnog
dWx0cmEyX2RtYWhhbHQ7DQoJCWFuZAlERkNOVFJMLCB+U0NTSUVOOw0KCQl0
ZXN0CURGQ05UUkwsIFNDU0lFTiBqbnogLjsNCgkJb3IJREZDTlRSTCwgRklG
T0ZMVVNIOw0KCQl0ZXN0CURGU1RBVFVTLCBGSUZPRU1QIGp6IC4gLSAxOw0K
dWx0cmEyX2RtYWhhbHQ6DQoJCWFuZCAgICAgREZDTlRSTCwgfihTQ1NJRU58
SERNQUVOKTsNCgkJdGVzdAlERkNOVFJMLCBIRE1BRU4gam56IC47DQoJCXJl
dDsNCgl9DQoNCi8qDQogKiBDb21tYW5kIHBoYXNlLiAgU2V0IHVwIHRoZSBE
TUEgcmVnaXN0ZXJzIGFuZCBsZXQgJ2VyIHJpcC4NCiAqLw0KcF9jb21tYW5k
Og0KCWNhbGwJYXNzZXJ0Ow0KDQovKg0KICogTG9hZCBIQUREUiBhbmQgSENO
VC4NCiAqLw0KCWlmICgoYWhjLT5mZWF0dXJlcyAmIEFIQ19VTFRSQTIpICE9
IDApIHsNCgkJb3IJU0dfQ0FDSEVQVFIsIExBU1RfU0VHOw0KCX0NCg0KCWlm
ICgoYWhjLT5mZWF0dXJlcyAmIEFIQ19DTURfQ0hBTikgIT0gMCkgew0KCQli
bW92CUhBRERSLCBTQ0JfQ01EUFRSLCA1Ow0KCQlibW92CUhDTlRbMV0sIEFM
TFpFUk9TLCAyOw0KCX0gZWxzZSB7DQoJCW12aQlESU5ERVgsIEhBRERSOw0K
CQltdmkJU0NCX0NNRFBUUgljYWxsIGJjb3B5XzU7DQoJCWNscglIQ05UWzFd
Ow0KCQljbHIJSENOVFsyXTsNCgl9DQoNCglpZiAoKGFoYy0+ZmVhdHVyZXMg
JiBBSENfVUxUUkEyKSA9PSAwKSB7DQoJCWNhbGwJc2V0X3N0Y250X2Zyb21f
aGNudDsNCgkJbXZpCShTQ1NJRU58U0RNQUVOfEhETUFFTnxESVJFQ1RJT058
RklGT1JFU0VUKSBjYWxsIGRtYTsNCgl9IGVsc2Ugew0KCQltdmkJKFBSRUxP
QURFTnxTQ1NJRU58SERNQUVOfERJUkVDVElPTikgY2FsbCBkbWE7DQoJfQ0K
CWptcAlJVGxvb3A7DQoNCi8qDQogKiBTdGF0dXMgcGhhc2UuICBXYWl0IGZv
ciB0aGUgZGF0YSBieXRlIHRvIGFwcGVhciwgdGhlbiByZWFkIGl0DQogKiBh
bmQgc3RvcmUgaXQgaW50byB0aGUgU0NCLg0KICovDQpwX3N0YXR1czoNCglj
YWxsCWFzc2VydDsNCg0KCW1vdglTQ0JfVEFSR0VUX1NUQVRVUywgU0NTSURB
VEw7DQoJam1wCUlUbG9vcDsNCg0KLyoNCiAqIE1lc3NhZ2Ugb3V0IHBoYXNl
LiAgSWYgTVNHX09VVCBpcyAweDgwLCBidWlsZCBJIGZ1bGwgaW5kZW50aWZ5
IG1lc3NhZ2UNCiAqIHNlcXVlbmNlIGFuZCBzZW5kIGl0IHRvIHRoZSB0YXJn
ZXQuICBJbiBhZGRpdGlvbiwgaWYgdGhlIE1LX01FU1NBR0UgYml0DQogKiBp
cyBzZXQgaW4gdGhlIFNDQl9DT05UUk9MIGJ5dGUsIGludGVycnVwdCB0aGUg
aG9zdCBhbmQgYWxsb3cgaXQgdG8gc2VuZA0KICogaXQncyBvd24gbWVzc2Fn
ZS4NCiAqIA0KICogSWYgTVNHX09VVCBpcyA9PSBIT1NUX01TRywgYWxzbyBp
bnRlcnJ1cHQgdGhlIGhvc3QgYW5kIHRha2UgYSBtZXNzYWdlLg0KICogVGhp
cyBpcyBkb25lIHRvIGFsbG93IHRoZSBoc290IHRvIHNlbmQgbWVzc2FnZXMg
b3V0c2lkZSBvZiBhbiBpZGVudGlmeQ0KICogc2VxdWVuY2Ugd2hpbGUgcHJv
dGVjdGluZyB0aGUgc2VxZW5jZXIgZnJvbSB0ZXN0aW5nIHRoZSBNS19NRVNT
QUdFIGJpdA0KICogb24gYW4gU0NCIHRoYXQgbWlnaHQgbm90IGJlIGZvciB0
aGUgY3VycmVudCBuZXh1cy4gKEZvciBleGFtcGxlLCBhDQogKiBCRFIgbWVz
c2FnZSBpbiByZXNwb25jZSB0byBhIGJhZCByZXNlbGVjdGlvbiB3b3VsZCBs
ZWF2ZSB1cyBwb2ludGVkIHRvDQogKiBhbiBTQ0IgdGhhdCBkb2Vzbid0IGhh
dmUgYW55dGhpbmcgdG8gZG8gd2l0aCB0aGUgY3VycmVudCB0YXJnZXQpLg0K
ICogT3RoZXJ3aXNlLCB0cmVhdCBNU0dfT1VUIGFzIGEgMSBieXRlIG1lc3Nh
Z2UgdG8gc2VuZCAoYWJvcnQsIGFib3J0IHRhZywNCiAqIGJ1cyBkZXZpY2Ug
cmVzZXQpLg0KICoNCiAqIFdoZW4gdGhlcmUgYXJlIG5vIG1lc3NhZ2VzIHRv
IHNlbmQsIE1TR19PVVQgc2hvdWxkIGJlIHNldCB0byBNU0dfTk9PUCwNCiAq
IGluIGNhc2UgdGhlIHRhcmdldCBkZWNpZGVzIHRvIHB1dCB1cyBpbiB0aGlz
IHBoYXNlIGZvciBzb21lIHN0cmFuZ2UNCiAqIHJlYXNvbi4NCiAqLw0KcF9t
ZXNnb3V0Og0KCW1vdglTSU5ERVgsIE1TR19PVVQ7DQoJY21wCVNJTkRFWCwg
TVNHX0lERU5USUZZRkxBRyBqbmUgcF9tZXNnb3V0X2Zyb21faG9zdDsNCnBf
bWVzZ291dF9pZGVudGlmeToNCglpZiAoKGFoYy0+ZmVhdHVyZXMgJiBBSENf
V0lERSkgIT0gMCkgew0KCQlhbmQJU0lOREVYLDB4ZixTQ0JfVENMOwkvKiBs
dW4gKi8NCgl9IGVsc2Ugew0KCQlhbmQJU0lOREVYLDB4NyxTQ0JfVENMOwkv
KiBsdW4gKi8NCgl9DQoJYW5kCUEsRElTQ0VOQixTQ0JfQ09OVFJPTDsJLyog
bWFzayBvZmYgZGlzY29ubmVjdCBwcml2bGVkZ2UgKi8NCglvcglTSU5ERVgs
QTsJCS8qIG9yIGluIGRpc2Nvbm5lY3QgcHJpdmxlZGdlICovDQoJb3IJU0lO
REVYLE1TR19JREVOVElGWUZMQUc7DQpwX21lc2dvdXRfbWtfbWVzc2FnZToN
Cgl0ZXN0CVNDQl9DT05UUk9MLE1LX01FU1NBR0UgIGp6IHBfbWVzZ291dF90
YWc7DQoJbW92CVNDU0lEQVRMLCBTSU5ERVg7CS8qIFNlbmQgdGhlIGxhc3Qg
Ynl0ZSAqLw0KCWptcAlwX21lc2dvdXRfZnJvbV9ob3N0ICsgMTsvKiBTa2lw
IEhPU1RfTVNHIHRlc3QgKi8NCi8qDQogKiBTZW5kIGEgdGFnIG1lc3NhZ2Ug
aWYgVEFHX0VOQiBpcyBzZXQgaW4gdGhlIFNDQiBjb250cm9sIGJsb2NrLg0K
ICogVXNlIFNDQl9UQUcgKHRoZSBwb3NpdGlvbiBpbiB0aGUga2VybmVsJ3Mg
U0NCIGFycmF5KSBhcyB0aGUgdGFnIHZhbHVlLg0KICovDQpwX21lc2dvdXRf
dGFnOg0KCXRlc3QJU0NCX0NPTlRST0wsVEFHX0VOQiBqeiAgcF9tZXNnb3V0
X29uZWJ5dGU7DQoJbW92CVNDU0lEQVRMLCBTSU5ERVg7CS8qIFNlbmQgdGhl
IGlkZW50aWZ5IG1lc3NhZ2UgKi8NCgljYWxsCXBoYXNlX2xvY2s7DQoJY21w
CUxBU1RQSEFTRSwgUF9NRVNHT1VUCWpuZSBwX21lc2dvdXRfZG9uZTsNCglh
bmQJU0NTSURBVEwsVEFHX0VOQnxTQ0JfVEFHX1RZUEUsU0NCX0NPTlRST0w7
DQoJY2FsbAlwaGFzZV9sb2NrOw0KCWNtcAlMQVNUUEhBU0UsIFBfTUVTR09V
VAlqbmUgcF9tZXNnb3V0X2RvbmU7DQoJbW92CVNDQl9UQUcJam1wIHBfbWVz
Z291dF9vbmVieXRlOw0KLyoNCiAqIEludGVycnVwdCB0aGUgZHJpdmVyLCBh
bmQgYWxsb3cgaXQgdG8gc2VuZCBhIG1lc3NhZ2UNCiAqIGlmIGl0IGFza3Mu
DQogKi8NCnBfbWVzZ291dF9mcm9tX2hvc3Q6DQoJY21wCVNJTkRFWCwgSE9T
VF9NU0cJam5lIHBfbWVzZ291dF9vbmVieXRlOw0KCW12aSAgICAgSU5UU1RB
VCxBV0FJVElOR19NU0c7DQoJbm9wOw0KCS8qDQoJICogRGlkIHRoZSBob3N0
IGRldGVjdCBhIHBoYXNlIGNoYW5nZT8NCgkgKi8NCgljbXAJUkVUVVJOXzEs
IE1TR09VVF9QSEFTRU1JUyBqZSBwX21lc2dvdXRfZG9uZTsNCg0KcF9tZXNn
b3V0X29uZWJ5dGU6DQoJbXZpCUNMUlNJTlQxLCBDTFJBVE5POw0KCW1vdglT
Q1NJREFUTCwgU0lOREVYOw0KDQovKg0KICogSWYgdGhlIG5leHQgYnVzIHBo
YXNlIGFmdGVyIEFUTiBkcm9wcyBpcyBhIG1lc3NhZ2Ugb3V0LCBpdCBtZWFu
cw0KICogdGhhdCB0aGUgdGFyZ2V0IGlzIHJlcXVlc3RpbmcgdGhhdCB0aGUg
bGFzdCBtZXNzYWdlKHMpIGJlIHJlc2VudC4NCiAqLw0KCWNhbGwJcGhhc2Vf
bG9jazsNCgljbXAJTEFTVFBIQVNFLCBQX01FU0dPVVQJam5lIHBfbWVzZ291
dF9kb25lOw0KCW9yCVNDU0lTSUdPLEFUTk8sTEFTVFBIQVNFOy8qIHR1cm4g
b24gQVROIGZvciB0aGUgcmV0cnkgKi8NCglqbXAJcF9tZXNnb3V0Ow0KDQpw
X21lc2dvdXRfZG9uZToNCgltdmkJQ0xSU0lOVDEsQ0xSQVROTzsJLyogQmUg
c3VyZSB0byB0dXJuIEFUTk8gb2ZmICovDQoJbW92CUxBU1RfTVNHLCBNU0df
T1VUOw0KCWNtcAlNU0dfT1VULCBNU0dfSURFTlRJRllGTEFHIGpuZSAuICsg
MjsNCglhbmQJU0NCX0NPTlRST0wsIH5NS19NRVNTQUdFOw0KCW12aQlNU0df
T1VULCBNU0dfTk9PUDsJLyogTm8gbWVzc2FnZSBsZWZ0ICovDQoJam1wCUlU
bG9vcDsNCg0KLyoNCiAqIE1lc3NhZ2UgaW4gcGhhc2UuICBCeXRlcyBhcmUg
cmVhZCB1c2luZyBBdXRvbWF0aWMgUElPIG1vZGUuDQogKi8NCnBfbWVzZ2lu
Og0KCW12aQlBQ0NVTQkJY2FsbCBpbmJfZmlyc3Q7CS8qIHJlYWQgdGhlIDFz
dCBtZXNzYWdlIGJ5dGUgKi8NCg0KCXRlc3QJQSxNU0dfSURFTlRJRllGTEFH
CWpueiBtZXNnaW5faWRlbnRpZnk7DQoJY21wCUEsTVNHX0RJU0NPTk5FQ1QJ
amUgbWVzZ2luX2Rpc2Nvbm5lY3Q7DQoJY21wCUEsTVNHX1NBVkVEQVRBUE9J
TlRFUglqZSBtZXNnaW5fc2RwdHJzOw0KCWNtcAlBTExaRVJPUyxBCQlqZSBt
ZXNnaW5fY29tcGxldGU7DQoJY21wCUEsTVNHX1JFU1RPUkVQT0lOVEVSUwlq
ZSBtZXNnaW5fcmRwdHJzOw0KCWNtcAlBLE1TR19FWFRFTkRFRAkJamUgbWVz
Z2luX2V4dGVuZGVkOw0KCWNtcAlBLE1TR19NRVNTQUdFX1JFSkVDVAlqZSBt
ZXNnaW5fcmVqZWN0Ow0KCWNtcAlBLE1TR19OT09QCQlqZSBtZXNnaW5fZG9u
ZTsNCg0KcmVqX21lc2dpbjoNCi8qDQogKiBXZSBoYXZlIG5vIGlkZWEgd2hh
dCB0aGlzIG1lc3NhZ2UgaW4gaXMsIHNvIHdlIGlzc3VlIGEgbWVzc2FnZSBy
ZWplY3QNCiAqIGFuZCBob3BlIGZvciB0aGUgYmVzdC4gIEluIGFueSBjYXNl
LCByZWplY3Rpb24gc2hvdWxkIGJlIGEgcmFyZQ0KICogb2NjdXJyZW5jZSAt
IHNpZ25hbCB0aGUgZHJpdmVyIHdoZW4gaXQgaGFwcGVucy4NCiAqLw0KCW12
aQlJTlRTVEFULFNFTkRfUkVKRUNUOwkJLyogbGV0IGRyaXZlciBrbm93ICov
DQoNCgltdmkJTVNHX01FU1NBR0VfUkVKRUNUCWNhbGwgbWtfbWVzZzsNCg0K
bWVzZ2luX2RvbmU6DQoJbW92CU5PTkUsU0NTSURBVEw7CQkvKmR1bW15IHJl
YWQgZnJvbSBsYXRjaCB0byBBQ0sqLw0KCWptcAlJVGxvb3A7DQoNCg0KbWVz
Z2luX2NvbXBsZXRlOg0KLyoNCiAqIFdlIGdvdCBhICJjb21tYW5kIGNvbXBs
ZXRlIiBtZXNzYWdlLCBzbyBwdXQgdGhlIFNDQl9UQUcgaW50byB0aGUgUU9V
VEZJRk8sDQogKiBhbmQgdHJpZ2dlciBhIGNvbXBsZXRpb24gaW50ZXJydXB0
LiAgQmVmb3JlIGRvaW5nIHNvLCBjaGVjayB0byBzZWUgaWYgdGhlcmUNCiAq
IGlzIGEgcmVzaWR1YWwgb3IgdGhlIHN0YXR1cyBieXRlIGlzIHNvbWV0aGlu
ZyBvdGhlciB0aGFuIFNUQVRVU19HT09EICgwKS4NCiAqIEluIGVpdGhlciBv
ZiB0aGVzZSBjb25kaXRpb25zLCB3ZSB1cGxvYWQgdGhlIFNDQiBiYWNrIHRv
IHRoZSBob3N0IHNvIGl0IGNhbg0KICogcHJvY2VzcyB0aGlzIGluZm9ybWF0
aW9uLiAgSW4gdGhlIGNhc2Ugb2YgYSBub24gemVybyBzdGF0dXMgYnl0ZSwg
d2UgDQogKiBhZGRpdGlvbmFsbHkgaW50ZXJydXB0IHRoZSBrZXJuZWwgZHJp
dmVyIHN5bmNocm9ub3VzbHksIGFsbG93aW5nIGl0IHRvDQogKiBkZWNpZGUg
aWYgc2Vuc2Ugc2hvdWxkIGJlIHJldHJpZXZlZC4gIElmIHRoZSBrZXJuZWwg
ZHJpdmVyIHdpc2hlcyB0byByZXF1ZXN0DQogKiBzZW5zZSwgaXQgd2lsbCBm
aWxsIHRoZSBrZXJuZWwgU0NCIHdpdGggYSByZXF1ZXN0IHNlbnNlIGNvbW1h
bmQgYW5kIHNldA0KICogUkVUVVJOXzEgdG8gU0VORF9TRU5TRS4gIElmIFJF
VFVSTl8xIGlzIHNldCB0byBTRU5EX1NFTlNFIHdlIHJlZG93bmxvYWQNCiAq
IHRoZSBTQ0IsIGFuZCBwcm9jZXNzIGl0IGFzIHRoZSBuZXh0IGNvbW1hbmQg
YnkgYWRkaW5nIGl0IHRvIHRoZSB3YWl0aW5nIGxpc3QuDQogKiBJZiB0aGUg
a2VybmVsIGRyaXZlciBkb2VzIG5vdCB3aXNoIHRvIHJlcXVlc3Qgc2Vuc2Us
IGl0IG5lZWQgb25seSBjbGVhcg0KICogUkVUVVJOXzEsIGFuZCB0aGUgY29t
bWFuZCBpcyBhbGxvd2VkIHRvIGNvbXBsZXRlIG5vcm1hbGx5LiAgV2UgZG9u
J3QgYm90aGVyDQogKiB0byBwb3N0IHRvIHRoZSBRT1VURklGTyBpbiB0aGUg
ZXJyb3IgY2FzZXMgc2luY2UgaXQgd291bGQgcmVxdWlyZSBleHRyYQ0KICog
d29yayBpbiB0aGUga2VybmVsIGRyaXZlciB0byBlbnN1cmUgdGhhdCB0aGUg
ZW50cnkgd2FzIHJlbW92ZWQgYmVmb3JlIHRoZQ0KICogY29tbWFuZCBjb21w
bGV0ZSBjb2RlIHRyaWVkIHByb2Nlc3NpbmcgaXQuDQogKi8NCg0KLyoNCiAq
IEZpcnN0IGNoZWNrIGZvciByZXNpZHVhbHMNCiAqLw0KCXRlc3QJU0NCX1JF
U0lEX1NHQ05ULDB4ZmYJam56IHVwbG9hZF9zY2I7DQoJdGVzdAlTQ0JfVEFS
R0VUX1NUQVRVUywweGZmCWp6IGNvbXBsZXRlOwkvKiBHb29kIFN0YXR1cz8g
Ki8NCnVwbG9hZF9zY2I6DQoJbXZpCURNQVBBUkFNUywgRklGT1JFU0VUOw0K
CW1vdglTQ0JfVEFHCQljYWxsIGRtYV9zY2I7DQpjaGVja19zdGF0dXM6DQoJ
dGVzdAlTQ0JfVEFSR0VUX1NUQVRVUywweGZmCWp6IGNvbXBsZXRlOwkvKiBK
dXN0IGEgcmVzaWR1YWw/ICovDQoJbXZpCUlOVFNUQVQsQkFEX1NUQVRVUzsJ
CQkvKiBsZXQgZHJpdmVyIGtub3cgKi8NCglub3A7DQoJY21wCVJFVFVSTl8x
LCBTRU5EX1NFTlNFCWpuZSBjb21wbGV0ZTsNCgkvKiBUaGlzIFNDQiBiZWNv
bWVzIHRoZSBuZXh0IHRvIGV4ZWN1dGUgYXMgaXQgd2lsbCByZXRyaWV2ZSBz
ZW5zZSAqLw0KCW12aQlETUFQQVJBTVMsIEhETUFFTnxESVJFQ1RJT058RklG
T1JFU0VUOw0KCW1vdglTQ0JfVEFHCQljYWxsIGRtYV9zY2I7DQphZGRfdG9f
d2FpdGluZ19saXN0Og0KCW1vdglTQ0JfTkVYVCxXQUlUSU5HX1NDQkg7DQoJ
bW92CVdBSVRJTkdfU0NCSCwgU0NCUFRSOw0KCS8qDQoJICogUHJlcGFyZSBv
dXIgc2VsZWN0aW9uIGhhcmR3YXJlIGJlZm9yZSB0aGUgYnVzZnJlZSBzbyB3
ZSBoYXZlIGENCgkgKiBoaWdoIHByb2JhYmlsaXR5IG9mIHdpbm5pbmcgYXJi
aXRyYXRpb24uDQoJICovDQoJY2FsbAlzdGFydF9zZWxlY3Rpb247DQoJam1w
CWF3YWl0X2J1c2ZyZWU7DQoNCmNvbXBsZXRlOg0KCS8qIElmIHdlIGFyZSB1
bnRhZ2dlZCwgY2xlYXIgb3VyIGFkZHJlc3MgdXAgaW4gaG9zdCByYW0gKi8N
Cgl0ZXN0CVNDQl9DT05UUk9MLCBUQUdfRU5CIGpueiBjb21wbGV0ZV9wb3N0
Ow0KCW1vdglBLCBTQVZFRF9UQ0w7DQoJbXZpCVVOVEFHR0VEU0NCX09GRlNF
VCBjYWxsIHBvc3RfYnl0ZV9zZXR1cDsNCgltdmkJU0NCX0xJU1RfTlVMTCBj
YWxsIHBvc3RfYnl0ZTsNCg0KY29tcGxldGVfcG9zdDoNCgkvKiBQb3N0IHRo
ZSBTQ0IgYW5kIGlzc3VlIGFuIGludGVycnVwdCAqLw0KCWlmICgoYWhjLT5m
ZWF0dXJlcyAmIEFIQ19RVUVVRV9SRUdTKSAhPSAwKSB7DQoJCW1vdglBLCBT
RFNDQl9RT0ZGOw0KCX0gZWxzZSB7DQoJCW1vdglBLCBRT1VUUE9TOw0KCX0N
CgltdmkJUU9VVEZJRk9fT0ZGU0VUIGNhbGwgcG9zdF9ieXRlX3NldHVwOw0K
CW1vdglTQ0JfVEFHIGNhbGwgcG9zdF9ieXRlOw0KCWlmICgoYWhjLT5mZWF0
dXJlcyAmIEFIQ19RVUVVRV9SRUdTKSA9PSAwKSB7DQoJCWluYyAJUU9VVFBP
UzsNCgl9DQoJbXZpCUlOVFNUQVQsQ01EQ01QTFQ7DQoNCmFkZF90b19mcmVl
X2xpc3Q6DQoJY2FsbAlhZGRfc2NiX3RvX2ZyZWVfbGlzdDsNCglqbXAJYXdh
aXRfYnVzZnJlZTsNCg0KLyoNCiAqIElzIGl0IGFuIGV4dGVuZGVkIG1lc3Nh
Z2U/ICBDb3B5IHRoZSBtZXNzYWdlIHRvIG91ciBtZXNzYWdlIGJ1ZmZlciBh
bmQNCiAqIG5vdGlmeSB0aGUgaG9zdC4gIFRoZSBob3N0IHdpbGwgdGVsbCB1
cyB3aGV0aGVyIHRvIHJlamVjdCB0aGlzIG1lc3NhZ2UsDQogKiByZXNwb25k
IHRvIGl0IHdpdGggdGhlIG1lc3NhZ2UgdGhhdCB0aGUgaG9zdCBwbGFjZWQg
aW4gb3VyIG1lc3NhZ2UgYnVmZmVyLA0KICogb3Igc2ltcGx5IHRvIGRvIG5v
dGhpbmcuDQogKi8NCm1lc2dpbl9leHRlbmRlZDoNCgltdmkJSU5UU1RBVCxF
WFRFTkRFRF9NU0c7CQkvKiBsZXQgZHJpdmVyIGtub3cgKi8NCglqbXAJSVRs
b29wOw0KDQovKg0KICogSXMgaXQgYSBkaXNjb25uZWN0IG1lc3NhZ2U/ICBT
ZXQgYSBmbGFnIGluIHRoZSBTQ0IgdG8gcmVtaW5kIHVzDQogKiBhbmQgYXdh
aXQgdGhlIGJ1cyBnb2luZyBmcmVlLg0KICovDQptZXNnaW5fZGlzY29ubmVj
dDoNCglvcglTQ0JfQ09OVFJPTCxESVNDT05ORUNURUQ7DQoJY2FsbAlhZGRf
c2NiX3RvX2Rpc2NfbGlzdDsNCglqbXAJYXdhaXRfYnVzZnJlZTsNCg0KLyoN
CiAqIFNhdmUgZGF0YSBwb2ludGVycyBtZXNzYWdlOg0KICogQ29weWluZyBS
QU0gdmFsdWVzIGJhY2sgdG8gU0NCLCBmb3IgU2F2ZSBEYXRhIFBvaW50ZXJz
IG1lc3NhZ2UsIGJ1dA0KICogb25seSBpZiB3ZSd2ZSBhY3R1YWxseSBiZWVu
IGludG8gYSBkYXRhIHBoYXNlIHRvIGNoYW5nZSB0aGVtLiAgVGhpcw0KICog
cHJvdGVjdHMgYWdhaW5zdCBib2d1cyBkYXRhIGluIHNjcmF0Y2ggcmFtIGFu
ZCB0aGUgcmVzaWR1YWwgY291bnRzDQogKiBzaW5jZSB0aGV5IGFyZSBvbmx5
IGluaXRpYWxpemVkIHdoZW4gd2UgZ28gaW50byBkYXRhX2luIG9yIGRhdGFf
b3V0Lg0KICovDQptZXNnaW5fc2RwdHJzOg0KCXRlc3QJU0VRX0ZMQUdTLCBE
UEhBU0UJanogbWVzZ2luX2RvbmU7DQoJbW92CVNDQl9TR0NPVU5ULFNHX0NP
VU5UOw0KDQoJLyogVGhlIFNDQiBTR1BUUiBiZWNvbWVzIHRoZSBuZXh0IG9u
ZSB3ZSdsbCBkb3dubG9hZCAqLw0KCW12aQlESU5ERVgsIFNDQl9TR1BUUjsN
CgltdmkJU0dfTkVYVAljYWxsIGJjb3B5XzQ7DQoJDQoJLyogVGhlIFNDQiBE
QVRBUFRSMCBiZWNvbWVzIHRoZSBjdXJyZW50IFNIQUREUiAqLw0KCW12aQlE
SU5ERVgsIFNDQl9EQVRBUFRSOw0KCW12aQlTSEFERFIJCWNhbGwgYmNvcHlf
NDsNCg0KLyoNCiAqIFVzZSB0aGUgcmVzaWR1YWwgbnVtYmVyIHNpbmNlIFNU
Q05UIGlzIGNvcnJ1cHRlZCBieSBhbnkgbWVzc2FnZSB0cmFuc2Zlci4NCiAq
Lw0KCW12aQlTQ0JfUkVTSURfRENOVAljYWxsCWJjb3B5XzM7DQoNCglqbXAJ
bWVzZ2luX2RvbmU7DQoNCi8qDQogKiBSZXN0b3JlIHBvaW50ZXJzIG1lc3Nh
Z2U/ICBEYXRhIHBvaW50ZXJzIGFyZSByZWNvcGllZCBmcm9tIHRoZQ0KICog
U0NCIGFueXRpbWUgd2UgZW50ZXIgYSBkYXRhIHBoYXNlIGZvciB0aGUgZmly
c3QgdGltZSwgc28gYWxsDQogKiB3ZSBuZWVkIHRvIGRvIGlzIGNsZWFyIHRo
ZSBEUEhBU0UgZmxhZyBhbmQgbGV0IHRoZSBkYXRhIHBoYXNlDQogKiBjb2Rl
IGRvIHRoZSByZXN0Lg0KICovDQptZXNnaW5fcmRwdHJzOg0KCWFuZAlTRVFf
RkxBR1MsIH5EUEhBU0U7CQkvKg0KCQkJCQkJICogV2UnbGwgcmVsb2FkIHRo
ZW0NCgkJCQkJCSAqIHRoZSBuZXh0IHRpbWUgdGhyb3VnaA0KCQkJCQkJICog
dGhlIGRhdGFwaGFzZS4NCgkJCQkJCSAqLw0KCWptcAltZXNnaW5fZG9uZTsN
Cg0KLyoNCiAqIElkZW50aWZ5IG1lc3NhZ2U/ICBGb3IgYSByZWNvbm5lY3Rp
bmcgdGFyZ2V0LCB0aGlzIHRlbGxzIHVzIHRoZSBsdW4NCiAqIHRoYXQgdGhl
IHJlY29ubmVjdGlvbiBpcyBmb3IgLSBmaW5kIHRoZSBjb3JyZWN0IFNDQiBh
bmQgc3dpdGNoIHRvIGl0LA0KICogY2xlYXJpbmcgdGhlICJkaXNjb25uZWN0
ZWQiIGJpdCBzbyB3ZSBkb24ndCAiZmluZCIgaXQgYnkgYWNjaWRlbnQgbGF0
ZXIuDQogKi8NCm1lc2dpbl9pZGVudGlmeToNCgkNCglpZiAoKGFoYy0+ZmVh
dHVyZXMgJiBBSENfV0lERSkgIT0gMCkgew0KCQlhbmQJQSwweDBmOwkJLyog
bHVuIGluIGxvd2VyIGZvdXIgYml0cyAqLw0KCX0gZWxzZSB7DQoJCWFuZAlB
LDB4MDc7CQkvKiBsdW4gaW4gbG93ZXIgdGhyZWUgYml0cyAqLw0KCX0NCglv
ciAgICAgIFNBVkVEX1RDTCxBOwkJLyogU0FWRURfVENMIHNob3VsZCBiZSBj
b21wbGV0ZSBub3cgKi8NCg0KCWNhbGwJZ2V0X3VudGFnZ2VkX1NDQklEOw0K
CWNtcAlBUkdfMSwgU0NCX0xJU1RfTlVMTAlqZSBzbm9vcF90YWc7DQoJaWYg
KChhaGMtPmZsYWdzICYgQUhDX1BBR0VTQ0JTKSAhPSAwKSB7DQoJCXRlc3QJ
U0VRX0ZMQUdTLCBTQ0JQVFJfVkFMSUQJanogdXNlX3JldHJpZXZlU0NCOw0K
CX0NCgkvKg0KCSAqIElmIHRoZSBTQ0Igd2FzIGZvdW5kIGluIHRoZSBkaXNj
b25uZWN0ZWQgbGlzdCAoYXMgaXMNCgkgKiBhbHdheXMgdGhlIGNhc2UgaW4g
bm9uLXBhZ2luZyBzY2VuYXJpb3MpLCBTQ0JQVFIgaXMgYWxyZWFkeQ0KCSAq
IHNldCB0byB0aGUgY29ycmVjdCBTQ0IuICBTbywgc2ltcGx5IHNldHVwIHRo
ZSBTQ0IgYW5kIGdldA0KCSAqIG9uIHdpdGggdGhpbmdzLg0KCSAqLw0KCW1v
dglTQ0JQVFIJY2FsbCByZW1fc2NiX2Zyb21fZGlzY19saXN0Ow0KCWptcAlz
ZXR1cF9TQ0I7DQovKg0KICogSGVyZSB3ZSAic25vb3AiIHRoZSBidXMgbG9v
a2luZyBmb3IgYSBTSU1QTEUgUVVFVUUgVEFHIG1lc3NhZ2UuDQogKiBJZiB3
ZSBnZXQgb25lLCB3ZSB1c2UgdGhlIHRhZyByZXR1cm5lZCB0byBmaW5kIHRo
ZSBwcm9wZXINCiAqIFNDQi4gIFdpdGggU0NCIHBhZ2luZywgdGhpcyByZXF1
aXJlcyB1c2luZyBzZWFyY2ggZm9yIGJvdGggdGFnZ2VkDQogKiBhbmQgbm9u
LXRhZ2dlZCB0cmFuc2FjdGlvbnMgc2luY2UgdGhlIFNDQiBtYXkgZXhpc3Qg
aW4gYW55IHNsb3QuDQogKiBJZiB3ZSdyZSBub3QgdXNpbmcgU0NCIHBhZ2lu
Zywgd2UgY2FuIHVzZSB0aGUgdGFnIGFzIHRoZSBkaXJlY3QNCiAqIGluZGV4
IHRvIHRoZSBTQ0IuDQogKi8NCnNub29wX3RhZzoNCgltb3YJTk9ORSxTQ1NJ
REFUTDsJCS8qIEFDSyBJZGVudGlmeSBNU0cgKi8NCnNub29wX3RhZ19sb29w
Og0KCWNhbGwJcGhhc2VfbG9jazsNCgljbXAJTEFTVFBIQVNFLCBQX01FU0dJ
TglqbmUgbm90X2ZvdW5kOw0KCWNtcAlTQ1NJQlVTTCxNU0dfU0lNUExFX1Ff
VEFHIGpuZSBub3RfZm91bmQ7DQpnZXRfdGFnOg0KCW12aQlBUkdfMQljYWxs
IGluYl9uZXh0OwkvKiB0YWcgdmFsdWUgKi8NCg0KCWlmICgoYWhjLT5mbGFn
cyAmIEFIQ19QQUdFU0NCUykgPT0gMCkgew0KaW5kZXhfYnlfdGFnOg0KCQlt
b3YJU0NCUFRSLEFSR18xOw0KCQl0ZXN0CVNDQl9DT05UUk9MLFRBR19FTkIJ
anogIG5vdF9mb3VuZDsNCgkJbW92CVNDQlBUUgljYWxsIHJlbV9zY2JfZnJv
bV9kaXNjX2xpc3Q7DQoJfSBlbHNlIHsNCgkJLyoNCgkJICogRW5zdXJlIHRo
YXQgdGhlIFNDQiB0aGUgdGFnIHBvaW50cyB0byBpcyBmb3INCgkJICogYW4g
U0NCIHRyYW5zYWN0aW9uIHRvIHRoZSByZWNvbm5lY3RpbmcgdGFyZ2V0Lg0K
CQkgKi8NCnVzZV9yZXRyaWV2ZVNDQjoNCgkJY2FsbAlyZXRyaWV2ZVNDQjsN
Cgl9DQpzZXR1cF9TQ0I6DQoJbW92CUEsIFNBVkVEX1RDTDsNCgljbXAJU0NC
X1RDTCwgQQlqbmUgbm90X2ZvdW5kX2NsZWFudXBfc2NiOw0KCXRlc3QJU0NC
X0NPTlRST0wsRElTQ09OTkVDVEVEIGp6IG5vdF9mb3VuZF9jbGVhbnVwX3Nj
YjsNCglhbmQJU0NCX0NPTlRST0wsfkRJU0NPTk5FQ1RFRDsNCglvcglTRVFf
RkxBR1MsSURFTlRJRllfU0VFTjsJICAvKiBtYWtlIG5vdGUgb2YgSURFTlRJ
RlkgKi8NCgkvKiBTZWUgaWYgdGhlIGhvc3Qgd2FudHMgdG8gc2VuZCBhIG1l
c3NhZ2UgdXBvbiByZWNvbm5lY3Rpb24gKi8NCgl0ZXN0CVNDQl9DT05UUk9M
LCBNS19NRVNTQUdFIGp6IG1lc2dpbl9kb25lOw0KCWFuZAlTQ0JfQ09OVFJP
TCwgfk1LX01FU1NBR0U7DQoJbXZpCUhPU1RfTVNHCWNhbGwgbWtfbWVzZzsN
CglqbXAJbWVzZ2luX2RvbmU7DQoNCm5vdF9mb3VuZF9jbGVhbnVwX3NjYjoN
Cgl0ZXN0CVNDQl9DT05UUk9MLCBESVNDT05ORUNURUQganogLiArIDM7DQoJ
Y2FsbAlhZGRfc2NiX3RvX2Rpc2NfbGlzdDsNCglqbXAJbm90X2ZvdW5kOw0K
CWNhbGwJYWRkX3NjYl90b19mcmVlX2xpc3Q7DQpub3RfZm91bmQ6DQoJbXZp
CUlOVFNUQVQsIE5PX01BVENIOw0KCW12aQlNU0dfQlVTX0RFVl9SRVNFVAlj
YWxsIG1rX21lc2c7DQoJam1wCW1lc2dpbl9kb25lOw0KDQovKg0KICogTWVz
c2FnZSByZWplY3Q/ICBMZXQgdGhlIGtlcm5lbCBkcml2ZXIgaGFuZGxlIHRo
aXMuICBJZiB3ZSBoYXZlIGFuIA0KICogb3V0c3RhbmRpbmcgV0RUUiBvciBT
RFRSIG5lZ290aWF0aW9uLCBhc3N1bWUgdGhhdCBpdCdzIGEgcmVzcG9uc2Ug
ZnJvbSANCiAqIHRoZSB0YXJnZXQgc2VsZWN0aW5nIDhiaXQgb3IgYXN5bmNo
cm9ub3VzIHRyYW5zZmVyLCBvdGhlcndpc2UganVzdCBpZ25vcmUgDQogKiBp
dCBzaW5jZSB3ZSBoYXZlIG5vIGNsdWUgd2hhdCBpdCBwZXJ0YWlucyB0by4N
CiAqLw0KbWVzZ2luX3JlamVjdDoNCgltdmkJSU5UU1RBVCwgUkVKRUNUX01T
RzsNCglqbXAJbWVzZ2luX2RvbmU7DQoNCi8qDQogKiBbIEFERCBNT1JFIE1F
U1NBR0UgSEFORExJTkcgSEVSRSBdDQogKi8NCg0KLyoNCiAqIExvY2tpbmcg
dGhlIGRyaXZlciBvdXQsIGJ1aWxkIGEgb25lLWJ5dGUgbWVzc2FnZSBwYXNz
ZWQgaW4gU0lOREVYDQogKiBpZiB0aGVyZSBpcyBubyBhY3RpdmUgbWVzc2Fn
ZSBhbHJlYWR5LiAgU0lOREVYIGlzIHJldHVybmVkIGludGFjdC4NCiAqLw0K
bWtfbWVzZzoNCglvcglTQ1NJU0lHTyxBVE5PLExBU1RQSEFTRTsvKiB0dXJu
IG9uIEFUTk8gKi8NCgltb3YJTVNHX09VVCxTSU5ERVggcmV0Ow0KDQovKg0K
ICogRnVuY3Rpb25zIHRvIHJlYWQgZGF0YSBpbiBBdXRvbWF0aWMgUElPIG1v
ZGUuDQogKg0KICogQWNjb3JkaW5nIHRvIEFkYXB0ZWMncyBkb2N1bWVudGF0
aW9uLCBhbiBBQ0sgaXMgbm90IHNlbnQgb24gaW5wdXQgZnJvbQ0KICogdGhl
IHRhcmdldCB1bnRpbCBTQ1NJREFUTCBpcyByZWFkIGZyb20uICBTbyB3ZSB3
YWl0IHVudGlsIFNDU0lEQVRMIGlzDQogKiBsYXRjaGVkICh0aGUgdXN1YWwg
d2F5KSwgdGhlbiByZWFkIHRoZSBkYXRhIGJ5dGUgZGlyZWN0bHkgb2ZmIHRo
ZSBidXMNCiAqIHVzaW5nIFNDU0lCVVNMLiAgV2hlbiB3ZSBoYXZlIHB1bGxl
ZCB0aGUgQVROIGxpbmUsIG9yIHdlIGp1c3Qgd2FudCB0bw0KICogYWNrbm93
bGVkZ2UgdGhlIGJ5dGUsIHRoZW4gd2UgZG8gYSBkdW1teSByZWFkIGZyb20g
U0NJU0RBVEwuICBUaGUgU0NTSQ0KICogc3BlYyBndWFyYW50ZWVzIHRoYXQg
dGhlIHRhcmdldCB3aWxsIGhvbGQgdGhlIGRhdGEgYnl0ZSBvbiB0aGUgYnVz
IHVudGlsDQogKiB3ZSBzZW5kIG91ciBBQ0suDQogKg0KICogVGhlIGFzc3Vt
cHRpb24gaGVyZSBpcyB0aGF0IHRoZXNlIGFyZSBjYWxsZWQgaW4gYSBwYXJ0
aWN1bGFyIHNlcXVlbmNlLA0KICogYW5kIHRoYXQgUkVRIGlzIGFscmVhZHkg
c2V0IHdoZW4gaW5iX2ZpcnN0IGlzIGNhbGxlZC4gIGluYl97Zmlyc3QsbmV4
dH0NCiAqIHVzZSB0aGUgc2FtZSBjYWxsaW5nIGNvbnZlbnRpb24gYXMgaW5i
Lg0KICovDQoNCmluYl9uZXh0Og0KCW1vdglOT05FLFNDU0lEQVRMOwkJLypk
dW1teSByZWFkIGZyb20gbGF0Y2ggdG8gQUNLKi8NCmluYl9uZXh0X3dhaXQ6
DQoJLyoNCgkgKiBJZiB0aGVyZSBpcyBhIHBhcml0eSBlcnJvciwgd2FpdCBm
b3IgdGhlIGtlcm5lbCB0bw0KCSAqIHNlZSB0aGUgaW50ZXJydXB0IGFuZCBw
cmVwYXJlIG91ciBtZXNzYWdlIHJlc3BvbnNlDQoJICogYmVmb3JlIGNvbnRp
bnVpbmcuDQoJICovDQoJdGVzdAlTU1RBVDEsIFJFUUlOSVQJanogaW5iX25l
eHRfd2FpdDsNCgl0ZXN0CVNTVEFUMSwgU0NTSVBFUlIgam56IGluYl9uZXh0
X3dhaXQ7DQoJYW5kCUxBU1RQSEFTRSwgUEhBU0VfTUFTSywgU0NTSVNJR0k7
DQoJY21wCUxBU1RQSEFTRSwgUF9NRVNHSU4gam5lIG1lc2dpbl9waGFzZW1p
czsNCmluYl9maXJzdDoNCgltb3YJRElOREVYLFNJTkRFWDsNCgltb3YJRElO
RElSLFNDU0lCVVNMCXJldDsJCS8qcmVhZCBieXRlIGRpcmVjdGx5IGZyb20g
YnVzKi8NCmluYl9sYXN0Og0KCW1vdglOT05FLFNDU0lEQVRMIHJldDsJCS8q
ZHVtbXkgcmVhZCBmcm9tIGxhdGNoIHRvIEFDSyovDQoNCmlmICgoYWhjLT5m
bGFncyAmIEFIQ19UQVJHRVRNT0RFKSAhPSAwKSB7DQoJLyoNCgkgKiBTZW5k
IGEgYnl0ZSB0byBhbiBpbml0aWF0b3IgaW4gQXV0b21hdGljIFBJTyBtb2Rl
Lg0KCSAqIFNQSU9FTiBtdXN0IGJlIG9uIHByaW9yIHRvIGNhbGxpbmcgdGhp
cyByb3V0aW5lLg0KCSAqLw0KdGFyZ2V0X291dGI6DQoJbW92CVNDU0lEQVRM
LCBTSU5ERVg7DQoJdGVzdAlTU1RBVDAsIFNQSU9SRFkJanogLjsNCglyZXQ7
DQp9DQoJDQptZXNnaW5fcGhhc2VtaXM6DQovKg0KICogV2UgZXhwZWN0ZWQg
dG8gcmVjZWl2ZSBhbm90aGVyIGJ5dGUsIGJ1dCB0aGUgdGFyZ2V0IGNoYW5n
ZWQgcGhhc2UNCiAqLw0KCW12aQlJTlRTVEFULCBNU0dJTl9QSEFTRU1JUzsN
CglqbXAJSVRsb29wOw0KDQovKg0KICogRE1BIGRhdGEgdHJhbnNmZXIuICBI
QUREUiBhbmQgSENOVCBtdXN0IGJlIGxvYWRlZCBmaXJzdCwgYW5kDQogKiBT
SU5ERVggc2hvdWxkIGNvbnRhaW4gdGhlIHZhbHVlIHRvIGxvYWQgREZDTlRS
TCB3aXRoIC0gMHgzZCBmb3INCiAqIGhvc3QtPnNjc2ksIG9yIDB4MzkgZm9y
IHNjc2ktPmhvc3QuICBUaGUgU0NTSSBjaGFubmVsIGlzIGNsZWFyZWQNCiAq
IGR1cmluZyBpbml0aWFsaXphdGlvbi4NCiAqLw0KZG1hOg0KCW1vdglERkNO
VFJMLFNJTkRFWDsNCmRtYV9sb29wOg0KCXRlc3QJU1NUQVQwLERNQURPTkUJ
am56IGRtYV9kbWFkb25lOw0KCXRlc3QJU1NUQVQxLFBIQVNFTUlTCWp6IGRt
YV9sb29wOwkvKiBpZS4gdW5kZXJydW4gKi8NCmRtYV9waGFzZW1pczoNCgl0
ZXN0CVNTVEFUMCxTRE9ORQlqbnogZG1hX2NoZWNrZmlmbzsNCgltb3YJU0lO
REVYLEFMTFpFUk9TOwkJLyogTm90aWZ5IGNhbGxlciBvZiBwaGFzZW1pc3Mg
Ki8NCg0KLyoNCiAqIFdlIHdpbGwgYmUgImRvbmUiIERNQWluZyB3aGVuIHRo
ZSB0cmFuc2ZlciBjb3VudCBnb2VzIHRvIHplcm8sIG9yDQogKiB0aGUgdGFy
Z2V0IGNoYW5nZXMgdGhlIHBoYXNlIChpbiBsaWdodCBvZiB0aGlzLCBpdCBt
YWtlcyBzZW5zZSB0aGF0DQogKiB0aGUgRE1BIGNpcmN1aXRyeSBkb2Vzbid0
IEFDSyB3aGVuIFBIQVNFTUlTIGlzIGFjdGl2ZSkuICBJZiB3ZSBhcmUNCiAq
IGRvaW5nIGEgU0NTSS0+SG9zdCB0cmFuc2ZlciwgdGhlIGRhdGEgRklGTyBz
aG91bGQgYmUgZmx1c2hlZCBhdXRvLQ0KICogbWFnaWNhbGx5IG9uIFNUQ05U
PTAgb3IgYSBwaGFzZSBjaGFuZ2UsIHNvIGp1c3Qgd2FpdCBmb3IgRklGTyBl
bXB0eQ0KICogc3RhdHVzLg0KICovDQpkbWFfY2hlY2tmaWZvOg0KCXRlc3QJ
REZDTlRSTCxESVJFQ1RJT04Jam56IGRtYV9maWZvZW1wdHk7DQpkbWFfZmlm
b2ZsdXNoOg0KCXRlc3QJREZTVEFUVVMsRklGT0VNUAlqeiBkbWFfZmlmb2Zs
dXNoOw0KDQpkbWFfZmlmb2VtcHR5Og0KCS8qIERvbid0IGNsb2JiZXIgYW4g
aW5wcm9ncmVzcyBob3N0IGRhdGEgdHJhbnNmZXIgKi8NCgl0ZXN0CURGU1RB
VFVTLCBNUkVRUEVORAlqbnogZG1hX2ZpZm9lbXB0eTsNCi8qDQogKiBOb3cg
c2h1dCB0aGUgRE1BIGVuYWJsZXMgb2ZmIGFuZCBtYWtlIHN1cmUgdGhhdCB0
aGUgRE1BIGVuYWJsZXMgYXJlIA0KICogYWN0dWFsbHkgb2ZmIGZpcnN0IGxl
c3Qgd2UgZ2V0IGFuIElMTFNBRERSLg0KICovDQpkbWFfZG1hZG9uZToNCglh
bmQJREZDTlRSTCwgfihTQ1NJRU58U0RNQUVOfEhETUFFTik7DQpkbWFfaGFs
dDoNCgkvKg0KCSAqIFNvbWUgcmV2aXNpb25zIG9mIHRoZSBhaWM3ODgwIGhh
dmUgYSBwcm9ibGVtIHdoZXJlLCBpZiB0aGUNCgkgKiBkYXRhIGZpZm8gaXMg
ZnVsbCwgYnV0IHRoZSBQQ0kgaW5wdXQgbGF0Y2ggaXMgbm90IGVtcHR5LCAN
CgkgKiBIRE1BRU4gY2Fubm90IGJlIGNsZWFyZWQuICBUaGUgZml4IHVzZWQg
aGVyZSBpcyB0byBhdHRlbXB0DQoJICogdG8gZHJhaW4gdGhlIGRhdGEgZmlm
byB1bnRpbCB0aGVyZSBpcyBzcGFjZSBmb3IgdGhlIGlucHV0DQoJICogbGF0
Y2ggdG8gZHJhaW4gYW5kIEhETUFFTiBkZS1hc3NlcnRzLg0KCSAqLw0KCWlm
ICgoYWhjLT5mZWF0dXJlcyAmIEFIQ19VTFRSQTIpID09IDApIHsNCgkJbW92
CU5PTkUsIERGREFUOw0KCX0NCgl0ZXN0CURGQ05UUkwsIEhETUFFTiBqbnog
ZG1hX2hhbHQ7DQpyZXR1cm46DQoJcmV0Ow0KDQovKg0KICogQXNzZXJ0IHRo
YXQgaWYgd2UndmUgYmVlbiByZXNlbGVjdGVkLCB0aGVuIHdlJ3ZlIHNlZW4g
YW4gSURFTlRJRlkNCiAqIG1lc3NhZ2UuDQogKi8NCmFzc2VydDoNCgl0ZXN0
CVNFUV9GTEFHUyxJREVOVElGWV9TRUVOCWpueiByZXR1cm47CS8qIHNlZW4g
SURFTlRJRlk/ICovDQoNCgltdmkJSU5UU1RBVCxOT19JREVOVCAJcmV0Owkv
KiBubyAtIHRlbGwgdGhlIGtlcm5lbCAqLw0KDQovKg0KICogTG9jYXRlIGEg
ZGlzY29ubmVjdGVkIFNDQiBlaXRoZXIgYnkgU0FWRURfVENMIChBUkdfMSBp
cyBTQ0JfTElTVF9OVUxMKQ0KICogb3IgYnkgdGhlIFNDQklEIEFSR18xLiAg
VGhlIHNlYXJjaCBiZWdpbnMgYXQgdGhlIFNDQiBpbmRleCBwYXNzZWQgaW4N
CiAqIHZpYSBTSU5ERVggd2hpY2ggaXMgYW4gU0NCIHRoYXQgbXVzdCBiZSBv
biB0aGUgZGlzY29ubmVjdGVkIGxpc3QuICBJZg0KICogdGhlIFNDQiBjYW5u
b3QgYmUgZm91bmQsIFNJTkRFWCB3aWxsIGJlIFNDQl9MSVNUX05VTEwsIG90
aGVyd2lzZSwgU0NCUFRSDQogKiBpcyBzZXQgdG8gdGhlIHByb3BlciBTQ0Iu
DQogKi8NCmZpbmRTQ0I6DQoJbW92CVNDQlBUUixTSU5ERVg7CQkJLyogSW5p
dGlhbGl6ZSBTQ0JQVFIgKi8NCgljbXAJQVJHXzEsIFNDQl9MSVNUX05VTEwJ
am5lIGZpbmRTQ0JfYnlfU0NCSUQ7DQoJbW92CUEsIFNBVkVEX1RDTDsNCglt
dmkJU0NCX1RDTAlqbXAgZmluZFNDQl9sb29wOwkvKiAmU0NCX1RDTCAtPiBT
SU5ERVggKi8NCmZpbmRTQ0JfYnlfU0NCSUQ6DQoJbW92CUEsIEFSR18xOwkJ
CS8qIFRhZyBwYXNzZWQgaW4gQVJHXzEgKi8NCgltdmkJU0NCX1RBRwlqbXAg
ZmluZFNDQl9sb29wOwkvKiAmU0NCX1RBRyAtPiBTSU5ERVggKi8NCmZpbmRT
Q0JfbmV4dDoNCgljbXAJU0NCX05FWFQsIFNDQl9MSVNUX05VTEwgamUgbm90
Rm91bmQ7DQoJbW92CVNDQlBUUixTQ0JfTkVYVDsNCglkZWMJU0lOREVYOwkJ
LyogTGFzdCBjb21wYXJpc29uIG1vdmVkIHVzIHRvbyBmYXIgKi8NCmZpbmRT
Q0JfbG9vcDoNCgljbXAJU0lORElSLCBBCWpuZSBmaW5kU0NCX25leHQ7DQoJ
bW92CVNJTkRFWCwgU0NCUFRSIAlyZXQ7DQpub3RGb3VuZDoNCgltdmkJU0lO
REVYLCBTQ0JfTElTVF9OVUxMCXJldDsNCg0KLyoNCiAqIFJldHJpZXZlIGFu
IFNDQiBieSBTQ0JJRCBmaXJzdCBzZWFyY2hpbmcgdGhlIGRpc2Nvbm5lY3Rl
ZCBsaXN0IGZhbGxpbmcNCiAqIGJhY2sgdG8gRE1BJ2luZyB0aGUgU0NCIGRv
d24gZnJvbSB0aGUgaG9zdC4gIFRoaXMgcm91dGluZSBhc3N1bWVzIHRoYXQN
CiAqIEFSR18xIGlzIHRoZSBTQ0JJRCBvZiBpbnRlcnJlc3QgYW5kIHRoYXQg
U0lOREVYIGlzIHRoZSBwb3NpdGlvbiBpbiB0aGUNCiAqIGRpc2Nvbm5lY3Rl
ZCBsaXN0IHRvIHN0YXJ0IHRoZSBzZWFyY2ggZnJvbS4gIElmIFNJTkRFWCBp
cyBTQ0JfTElTVF9OVUxMLA0KICogd2UgZ28gZGlyZWN0bHkgdG8gdGhlIGhv
c3QgZm9yIHRoZSBTQ0IuDQogKi8NCnJldHJpZXZlU0NCOg0KCXRlc3QJU0VR
X0ZMQUdTLCBTQ0JQVFJfVkFMSUQJanogcmV0cmlldmVfZnJvbV9ob3N0Ow0K
CW1vdglTQ0JQVFIJY2FsbCBmaW5kU0NCOwkvKiBDb250aW51ZSB0aGUgc2Vh
cmNoICovDQoJY21wCVNJTkRFWCwgU0NCX0xJU1RfTlVMTAlqZSByZXRyaWV2
ZV9mcm9tX2hvc3Q7DQoNCi8qDQogKiBUaGlzIHJvdXRpbmUgZXhwZWN0cyBT
SU5ERVggdG8gY29udGFpbiB0aGUgaW5kZXggb2YgdGhlIFNDQiB0byBiZQ0K
ICogcmVtb3ZlZCBhbmQgU0NCUFRSIHRvIGJlIHBvaW50aW5nIHRvIHRoYXQg
U0NCLg0KICovDQpyZW1fc2NiX2Zyb21fZGlzY19saXN0Og0KLyogUmVtb3Zl
IHRoaXMgU0NCIGZyb20gdGhlIGRpc2Nvbm5lY3Rpb24gbGlzdCAqLw0KCWNt
cAlTQ0JfTkVYVCxTQ0JfTElTVF9OVUxMIGplIHVubGlua19wcmV2Ow0KCW1v
dglESU5ERVgsIFNDQl9QUkVWOw0KCW1vdglTQ0JQVFIsIFNDQl9ORVhUOw0K
CW1vdglTQ0JfUFJFViwgRElOREVYOw0KCW1vdglTQ0JQVFIsIFNJTkRFWDsN
CnVubGlua19wcmV2Og0KCWNtcAlTQ0JfUFJFVixTQ0JfTElTVF9OVUxMCWpl
IHJIZWFkOy8qIEF0IHRoZSBoZWFkIG9mIHRoZSBsaXN0ICovDQoJbW92CURJ
TkRFWCwgU0NCX05FWFQ7DQoJbW92CVNDQlBUUiwgU0NCX1BSRVY7DQoJbW92
CVNDQl9ORVhULCBESU5ERVg7DQoJbW92CVNDQlBUUiwgU0lOREVYIHJldDsN
CnJIZWFkOg0KCW1vdglESVNDT05ORUNURURfU0NCSCxTQ0JfTkVYVCByZXQ7
DQoNCnJldHJpZXZlX2Zyb21faG9zdDoNCi8qDQogKiBXZSBkaWRuJ3QgZmlu
ZCBpdC4gIFB1bGwgYW4gU0NCIGFuZCBETUEgZG93biB0aGUgb25lIHdlIHdh
bnQuDQogKiBXZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUgaW4gdGhlIG5vbi1w
YWdpbmcgY2FzZS4NCiAqLw0KCW1vdglBTExaRVJPUwljYWxsCWdldF9mcmVl
X29yX2Rpc2Nfc2NiOw0KCW12aQlETUFQQVJBTVMsIEhETUFFTnxESVJFQ1RJ
T058RklGT1JFU0VUOw0KCS8qIEp1bXAgaW5zdGVhZCBvZiBjYWxsIGFzIHdl
IHdhbnQgdG8gcmV0dXJuIGFueXdheSAqLw0KCW1vdglBUkdfMQlqbXAgZG1h
X3NjYjsNCg0KLyoNCiAqIERldGVybWluZSB3aGV0aGVyIGEgdGFyZ2V0IGlz
IHVzaW5nIHRhZ2dlZCBvciBub24tdGFnZ2VkIHRyYW5zYWN0aW9ucw0KICog
YnkgZmlyc3QgbG9va2luZyBmb3IgYSBtYXRjaGluZyB0cmFuc2FjdGlvbiBi
YXNlZCBvbiB0aGUgVENMIGFuZCBpZg0KICogdGhhdCBmYWlscywgbG9va2lu
ZyB1cCB0aGlzIGRldmljZSBpbiB0aGUgaG9zdCdzIHVudGFnZ2VkIFNDQiBh
cnJheS4NCiAqIFRoZSBUQ0wgdG8gc2VhcmNoIGZvciBpcyBhc3N1bWVkIHRv
IGJlIGluIFNBVkVEX1RDTC4gIFRoZSB2YWx1ZSBpcw0KICogcmV0dXJuZWQg
aW4gQVJHXzEgKFNDQl9MSVNUX05VTEwgZm9yIHRhZ2dlZCwgU0NCSUQgZm9y
IG5vbi10YWdnZWQpLg0KICogVGhlIFNDQlBUUl9WQUxJRCBiaXQgaXMgc2V0
IGluIFNFUV9GTEFHUyBpZiB3ZSBmb3VuZCB0aGUgaW5mb3JtYXRpb24NCiAq
IGluIGFuIFNDQiBpbnN0ZWFkIG9mIGhhdmluZyB0byBnbyB0byB0aGUgaG9z
dC4NCiAqLw0KZ2V0X3VudGFnZ2VkX1NDQklEOg0KCWNtcAlESVNDT05ORUNU
RURfU0NCSCwgU0NCX0xJU1RfTlVMTCBqZSBnZXRfU0NCSURfZnJvbV9ob3N0
Ow0KCW12aQlBUkdfMSwgU0NCX0xJU1RfTlVMTDsNCgltb3YJRElTQ09OTkVD
VEVEX1NDQkggY2FsbCBmaW5kU0NCOw0KCWNtcAlTSU5ERVgsIFNDQl9MSVNU
X05VTEwJamUgZ2V0X1NDQklEX2Zyb21faG9zdDsNCglvcglTRVFfRkxBR1Ms
IFNDQlBUUl9WQUxJRDsvKiBXYXMgaW4gZGlzY29ubmVjdGVkIGxpc3QgKi8N
Cgl0ZXN0CVNDQl9DT05UUk9MLCBUQUdfRU5CCWpueiAuICsgMjsNCgltb3YJ
QVJHXzEsIFNDQl9UQUcJcmV0Ow0KCW12aQlBUkdfMSwgU0NCX0xJU1RfTlVM
TCByZXQ7DQoNCi8qDQogKiBGZXRjaCBhIGJ5dGUgZnJvbSBob3N0IG1lbW9y
eSBnaXZlbiBhbiBpbmRleCBvZiAoQSArICgyNTYgKiBTSU5ERVgpKQ0KICog
YW5kIGEgYmFzZSBhZGRyZXNzIG9mIFNDQklEX0FERFIuICBUaGUgYnl0ZSBp
cyByZXR1cm5lZCBpbiBSRVRVUk5fMi4NCiAqLw0KZmV0Y2hfYnl0ZToNCglt
b3YJQVJHXzIsIFNJTkRFWDsNCglpZiAoKGFoYy0+ZmVhdHVyZXMgJiBBSENf
Q01EX0NIQU4pICE9IDApIHsNCgkJbXZpCURJTkRFWCwgQ0NIQUREUjsNCgkJ
bXZpCVNDQklEX0FERFIgY2FsbCBzZXRfMWJ5dGVfYWRkcjsNCgkJbXZpCUND
SENOVCwgMTsNCgkJbXZpCUNDU0dDVEwsIENDU0dFTnxDQ1NHUkVTRVQ7DQoJ
CXRlc3QJQ0NTR0NUTCwgQ0NTR0RPTkUganogLjsNCgkJbXZpCUNDU0dDVEws
IENDU0dSRVNFVDsNCgkJYm1vdglSRVRVUk5fMiwgQ0NTR1JBTSwgMSByZXQ7
DQoJfSBlbHNlIHsNCgkJbXZpCURJTkRFWCwgSEFERFI7DQoJCW12aQlTQ0JJ
RF9BRERSIGNhbGwgc2V0XzFieXRlX2FkZHI7DQoJCW12aQlIQ05UWzBdLCAx
Ow0KCQljbHIJSENOVFsxXTsNCgkJY2xyCUhDTlRbMl07DQoJCW12aQlERkNO
VFJMLCBIRE1BRU58RElSRUNUSU9OfEZJRk9SRVNFVDsNCgkJY2FsbAlkbWFf
ZmluaXNoOw0KCQltb3YJUkVUVVJOXzIsIERGREFUIHJldDsNCgl9DQoNCi8q
DQogKiBQcmVwYXJlIHRoZSBoYXJkd2FyZSB0byBwb3N0IGEgYnl0ZSB0byBo
b3N0IG1lbW9yeSBnaXZlbiBhbg0KICogaW5kZXggb2YgKEEgKyAoMjU2ICog
U0lOREVYKSkgYW5kIGEgYmFzZSBhZGRyZXNzIG9mIFNDQklEX0FERFIuDQog
Ki8NCnBvc3RfYnl0ZV9zZXR1cDoNCgltb3YJQVJHXzIsIFNJTkRFWDsNCglp
ZiAoKGFoYy0+ZmVhdHVyZXMgJiBBSENfQ01EX0NIQU4pICE9IDApIHsNCgkJ
bXZpCURJTkRFWCwgQ0NIQUREUjsNCgkJbXZpCVNDQklEX0FERFIgY2FsbAlz
ZXRfMWJ5dGVfYWRkcjsNCgkJbXZpCUNDSENOVCwgMTsNCgkJbXZpCUNDU0NC
Q1RMLCBDQ1NDQlJFU0VUIHJldDsNCgl9IGVsc2Ugew0KCQltdmkJRElOREVY
LCBIQUREUjsNCgkJbXZpCVNDQklEX0FERFIgY2FsbAlzZXRfMWJ5dGVfYWRk
cjsNCgkJbXZpCUhDTlRbMF0sIDE7DQoJCWNscglIQ05UWzFdOw0KCQljbHIJ
SENOVFsyXTsNCgkJbXZpCURGQ05UUkwsIEZJRk9SRVNFVCByZXQ7DQoJfQ0K
DQpwb3N0X2J5dGU6DQoJaWYgKChhaGMtPmZlYXR1cmVzICYgQUhDX0NNRF9D
SEFOKSAhPSAwKSB7DQoJCWJtb3YJQ0NTQ0JSQU0sIFNJTkRFWCwgMTsNCgkJ
b3IJQ0NTQ0JDVEwsIENDU0NCRU58Q0NTQ0JSRVNFVDsNCgkJdGVzdAlDQ1ND
QkNUTCwgQ0NTQ0JET05FIGp6IC47DQoJCWNscglDQ1NDQkNUTCByZXQ7DQoJ
fSBlbHNlIHsNCgkJbW92CURGREFULCBTSU5ERVg7DQoJCW9yCURGQ05UUkws
IEhETUFFTnxGSUZPRkxVU0g7DQoJCWptcAlkbWFfZmluaXNoOw0KCX0NCg0K
Z2V0X1NDQklEX2Zyb21faG9zdDoNCgltb3YJQSwgU0FWRURfVENMOw0KCW12
aQlVTlRBR0dFRFNDQl9PRkZTRVQgY2FsbCBmZXRjaF9ieXRlOw0KCW1vdglS
RVRVUk5fMSwgIFJFVFVSTl8yIHJldDsNCg0KcGhhc2VfbG9jazogICAgIA0K
CXRlc3QJU1NUQVQxLCBSRVFJTklUIGp6IHBoYXNlX2xvY2s7DQoJdGVzdAlT
U1RBVDEsIFNDU0lQRVJSIGpueiBwaGFzZV9sb2NrOw0KCWFuZAlMQVNUUEhB
U0UsIFBIQVNFX01BU0ssIFNDU0lTSUdJOw0KCW1vdglTQ1NJU0lHTywgTEFT
VFBIQVNFIHJldDsNCg0Kc2V0X3N0Y250X2Zyb21faGNudDoNCgltb3YJU1RD
TlRbMF0sIEhDTlRbMF07DQoJbW92CVNUQ05UWzFdLCBIQ05UWzFdOw0KCW1v
dglTVENOVFsyXSwgSENOVFsyXSByZXQ7DQoNCmJjb3B5Xzc6DQoJbW92CURJ
TkRJUiwgU0lORElSOw0KCW1vdglESU5ESVIsIFNJTkRJUjsNCmJjb3B5XzU6
DQoJbW92CURJTkRJUiwgU0lORElSOw0KYmNvcHlfNDoNCgltb3YJRElORElS
LCBTSU5ESVI7DQpiY29weV8zOg0KCW1vdglESU5ESVIsIFNJTkRJUjsNCglt
b3YJRElORElSLCBTSU5ESVI7DQoJbW92CURJTkRJUiwgU0lORElSIHJldDsN
Cg0KLyoNCiAqIFNldHVwIGFkZHIgYXNzdW1pbmcgdGhhdCBBIGlzIGFuIGlu
ZGV4IGludG8NCiAqIGFuIGFycmF5IG9mIDMyYnl0ZSBvYmplY3RzLCBTSU5E
RVggY29udGFpbnMNCiAqIHRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhhdCBhcnJh
eSwgYW5kIERJTkRFWA0KICogY29udGFpbnMgdGhlIGJhc2UgYWRkcmVzcyBv
ZiB0aGUgbG9jYXRpb24NCiAqIHRvIHN0b3JlIHRoZSBpbmRleGVkIGFkZHJl
c3MuDQogKi8NCnNldF8zMmJ5dGVfYWRkcjoNCglzaHIJQVJHXzIsIDMsIEE7
DQoJc2hsCUEsIDU7DQovKg0KICogU2V0dXAgYWRkciBhc3N1bWluZyB0aGF0
IEEgKyAoQVJHXzEgKiAyNTYpIGlzIGFuDQogKiBpbmRleCBpbnRvIGFuIGFy
cmF5IG9mIDFieXRlIG9iamVjdHMsIFNJTkRFWCBjb250YWlucw0KICogdGhl
IGJhc2UgYWRkcmVzcyBvZiB0aGF0IGFycmF5LCBhbmQgRElOREVYIGNvbnRh
aW5zDQogKiB0aGUgYmFzZSBhZGRyZXNzIG9mIHRoZSBsb2NhdGlvbiB0byBz
dG9yZSB0aGUgY29tcHV0ZWQNCiAqIGFkZHJlc3MuDQogKi8NCnNldF8xYnl0
ZV9hZGRyOg0KCWFkZAlESU5ESVIsIEEsIFNJTkRJUjsNCgltb3YJQSwgQVJH
XzI7DQoJYWRjCURJTkRJUiwgQSwgU0lORElSOw0KCWNscglBOw0KCWFkYwlE
SU5ESVIsIEEsIFNJTkRJUjsNCglhZGMJRElORElSLCBBLCBTSU5ESVIgcmV0
Ow0KDQovKg0KICogRWl0aGVyIHBvc3Qgb3IgZmV0Y2ggYW5kIFNDQiBmcm9t
IGhvc3QgbWVtb3J5IGJhc2VkIG9uIHRoZQ0KICogRElSRUNUSU9OIGJpdCBp
biBETUFQQVJBTVMuIFRoZSBob3N0IFNDQiBpbmRleCBpcyBpbiBTSU5ERVgu
DQogKi8NCmRtYV9zY2I6DQoJbW92CUEsIFNJTkRFWDsNCglpZiAoKGFoYy0+
ZmVhdHVyZXMgJiBBSENfQ01EX0NIQU4pICE9IDApIHsNCgkJbXZpCURJTkRF
WCwgQ0NIQUREUjsNCgkJbXZpCUhTQ0JfQUREUiBjYWxsIHNldF8zMmJ5dGVf
YWRkcjsNCgkJbW92CUNDU0NCUFRSLCBTQ0JQVFI7DQoJCW12aQlDQ0hDTlQs
IDI4Ow0KCQl0ZXN0CURNQVBBUkFNUywgRElSRUNUSU9OIGp6IGRtYV9zY2Jf
dG9ob3N0Ow0KCQltdmkJQ0NTQ0JDVEwsIENDQVJSRU58Q0NTQ0JFTnxDQ1ND
QkRJUnxDQ1NDQlJFU0VUOw0KCQljbXAJQ0NTQ0JDVEwsIENDU0NCRE9ORXxB
UlJET05FfENDQVJSRU58Q0NTQ0JFTnxDQ1NDQkRJUiBqbmUgLjsNCgkJam1w
CWRtYV9zY2JfZmluaXNoOw0KZG1hX3NjYl90b2hvc3Q6DQoJCWlmICgoYWhj
LT5jaGlwICYgQUhDX0NISVBJRF9NQVNLKSA9PSBBSENfQUlDNzg5NSkgew0K
CQkJbXZpCUNDU0NCQ1RMLCBDQ1NDQlJFU0VUOw0KCQkJYm1vdglDQ1NDQlJB
TSwgU0NCX0NPTlRST0wsIDI4Ow0KCQkJb3IJQ0NTQ0JDVEwsIENDU0NCRU58
Q0NTQ0JSRVNFVDsNCgkJCXRlc3QJQ0NTQ0JDVEwsIENDU0NCRE9ORSBqeiAu
Ow0KCQl9IGVsc2Ugew0KCQkJbXZpCUNDU0NCQ1RMLCBDQ0FSUkVOfENDU0NC
RU58Q0NTQ0JSRVNFVDsNCgkJCWNtcAlDQ1NDQkNUTCwgQ0NTQ0JET05FfEFS
UkRPTkV8Q0NBUlJFTnxDQ1NDQkVOIGpuZSAuOw0KCQl9DQpkbWFfc2NiX2Zp
bmlzaDoNCgkJY2xyCUNDU0NCQ1RMOw0KCQl0ZXN0CUNDU0NCQ1RMLCBDQ0FS
UkVOfENDU0NCRU4gam56IC47DQoJCXJldDsNCgl9IGVsc2Ugew0KCQltdmkJ
RElOREVYLCBIQUREUjsNCgkJbXZpCUhTQ0JfQUREUiBjYWxsIHNldF8zMmJ5
dGVfYWRkcjsNCgkJbXZpCUhDTlRbMF0sIDI4Ow0KCQljbHIJSENOVFsxXTsN
CgkJY2xyCUhDTlRbMl07DQoJCW1vdglERkNOVFJMLCBETUFQQVJBTVM7DQoJ
CXRlc3QJRE1BUEFSQU1TLCBESVJFQ1RJT04Jam56IGRtYV9zY2JfZnJvbWhv
c3Q7DQoJCS8qIEZpbGwgaXQgd2l0aCB0aGUgU0NCIGRhdGEgKi8NCmNvcHlf
c2NiX3RvZmlmbzoNCgkJbXZpCVNJTkRFWCwgU0NCX0NPTlRST0w7DQoJCWFk
ZAlBLCAyOCwgU0lOREVYOw0KY29weV9zY2JfdG9maWZvX2xvb3A6DQoJCW1v
dglERkRBVCxTSU5ESVI7DQoJCW1vdglERkRBVCxTSU5ESVI7DQoJCW1vdglE
RkRBVCxTSU5ESVI7DQoJCW1vdglERkRBVCxTSU5ESVI7DQoJCW1vdglERkRB
VCxTSU5ESVI7DQoJCW1vdglERkRBVCxTSU5ESVI7DQoJCW1vdglERkRBVCxT
SU5ESVI7DQoJCWNtcAlTSU5ERVgsIEEgam5lIGNvcHlfc2NiX3RvZmlmb19s
b29wOw0KCQlvcglERkNOVFJMLCBIRE1BRU58RklGT0ZMVVNIOw0KZG1hX3Nj
Yl9mcm9taG9zdDoNCgkJY2FsbAlkbWFfZmluaXNoOw0KCQkvKiBJZiB3ZSB3
ZXJlIHB1dHRpbmcgdGhlIFNDQiwgd2UgYXJlIGRvbmUgKi8NCgkJdGVzdAlE
TUFQQVJBTVMsIERJUkVDVElPTglqeglyZXR1cm47DQoJCW12aQlTQ0JfQ09O
VFJPTCAgY2FsbCBkZmRhdF9pbl83Ow0KCQljYWxsCWRmZGF0X2luXzdfY29u
dGludWVkOw0KCQljYWxsCWRmZGF0X2luXzdfY29udGludWVkOw0KCQlqbXAJ
ZGZkYXRfaW5fN19jb250aW51ZWQ7DQpkZmRhdF9pbl83Og0KCQltb3YgICAg
IERJTkRFWCxTSU5ERVg7DQpkZmRhdF9pbl83X2NvbnRpbnVlZDoNCgkJbW92
CURJTkRJUixERkRBVDsNCgkJbW92CURJTkRJUixERkRBVDsNCgkJbW92CURJ
TkRJUixERkRBVDsNCgkJbW92CURJTkRJUixERkRBVDsNCgkJbW92CURJTkRJ
UixERkRBVDsNCgkJbW92CURJTkRJUixERkRBVDsNCgkJbW92CURJTkRJUixE
RkRBVCByZXQ7DQoJfQ0KDQoNCi8qDQogKiBXYWl0IGZvciBETUEgZnJvbSBo
b3N0IG1lbW9yeSB0byBkYXRhIEZJRk8gdG8gY29tcGxldGUsIHRoZW4gZGlz
YWJsZQ0KICogRE1BIGFuZCB3YWl0IGZvciBpdCB0byBhY2tub3dsZWRnZSB0
aGF0IGl0J3Mgb2ZmLg0KICovDQpkbWFfZmluaXNoOg0KCXRlc3QJREZTVEFU
VVMsSERPTkUJanogZG1hX2ZpbmlzaDsNCgkvKiBUdXJuIG9mZiBETUEgKi8N
CglhbmQJREZDTlRSTCwgfkhETUFFTjsNCgl0ZXN0CURGQ05UUkwsIEhETUFF
TiBqbnogLjsNCglyZXQ7DQoNCmFkZF9zY2JfdG9fZnJlZV9saXN0Og0KCWlm
ICgoYWhjLT5mbGFncyAmIEFIQ19QQUdFU0NCUykgIT0gMCkgew0KCQltb3YJ
U0NCX05FWFQsIEZSRUVfU0NCSDsNCgkJbW92CUZSRUVfU0NCSCwgU0NCUFRS
Ow0KCX0NCgltdmkJU0NCX1RBRywgU0NCX0xJU1RfTlVMTCByZXQ7DQoNCmlm
ICgoYWhjLT5mbGFncyAmIEFIQ19QQUdFU0NCUykgIT0gMCkgew0KZ2V0X2Zy
ZWVfb3JfZGlzY19zY2I6DQoJY21wCUZSRUVfU0NCSCwgU0NCX0xJU1RfTlVM
TCBqbmUgZGVxdWV1ZV9mcmVlX3NjYjsNCgljbXAJRElTQ09OTkVDVEVEX1ND
QkgsIFNDQl9MSVNUX05VTEwgam5lIGRlcXVldWVfZGlzY19zY2I7DQpyZXR1
cm5fZXJyb3I6DQoJbXZpCVNJTkRFWCwgU0NCX0xJU1RfTlVMTAlyZXQ7DQpk
ZXF1ZXVlX2Rpc2Nfc2NiOg0KCW1vdglTQ0JQVFIsIERJU0NPTk5FQ1RFRF9T
Q0JIOw0KZG1hX3VwX3NjYjoNCgltdmkJRE1BUEFSQU1TLCBGSUZPUkVTRVQ7
DQoJbW92CVNDQl9UQUcJCWNhbGwgZG1hX3NjYjsNCnVubGlua19kaXNjX3Nj
YjoNCgkvKiBqbXAgaW5zdGVhZCBvZiBjYWxsIHNpbmNlIHdlIHdhbnQgdG8g
cmV0dXJuIGFueXdheSAqLw0KCW1vdglTQ0JQVFIJam1wIHJlbV9zY2JfZnJv
bV9kaXNjX2xpc3Q7DQpkZXF1ZXVlX2ZyZWVfc2NiOg0KCW1vdglTQ0JQVFIs
IEZSRUVfU0NCSDsNCgltb3YJRlJFRV9TQ0JILCBTQ0JfTkVYVCByZXQ7DQp9
DQoNCmFkZF9zY2JfdG9fZGlzY19saXN0Og0KLyoNCiAqIExpbmsgdGhpcyBT
Q0IgaW50byB0aGUgRElTQ09OTkVDVEVEIGxpc3QuICBUaGlzIGxpc3QgaG9s
ZHMgdGhlDQogKiBjYW5kaWRhdGVzIGZvciBwYWdpbmcgb3V0IGFuIFNDQiBp
ZiBvbmUgaXMgbmVlZGVkIGZvciBhIG5ldyBjb21tYW5kLg0KICogTW9kaWZ5
aW5nIHRoZSBkaXNjb25uZWN0ZWQgbGlzdCBpcyBhIGNyaXRpY2FsKHBhdXNl
IGRpc3NhYmxlZCkgc2VjdGlvbi4NCiAqLw0KCW12aQlTQ0JfUFJFViwgU0NC
X0xJU1RfTlVMTDsNCgltb3YJU0NCX05FWFQsIERJU0NPTk5FQ1RFRF9TQ0JI
Ow0KCW1vdglESVNDT05ORUNURURfU0NCSCwgU0NCUFRSOw0KCWNtcAlTQ0Jf
TkVYVCxTQ0JfTElTVF9OVUxMIGplIHJldHVybjsNCgltb3YJU0NCUFRSLFND
Ql9ORVhUOw0KCW1vdglTQ0JfUFJFVixESVNDT05ORUNURURfU0NCSDsNCglt
b3YJU0NCUFRSLERJU0NPTk5FQ1RFRF9TQ0JIIHJldDsNCg0KDQo=
--0-1801550913-901632963=:15349--

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-scsi" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.3.96.980728093345.15349H-200000>