QNX-style scheduler v1.02

Adam McKee (amckee@poboxes.com)
Mon, 28 Jul 1997 20:10:40 -0600 (CST)


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.

--12583424-1887318598-870142240=:662
Content-Type: TEXT/PLAIN; charset=US-ASCII

I decided that I had been a little over-zealous in throwing out all
remains of the original scheduler. I think this version works a little
better. Please let me know how well it works for you, and if you have SMP
let me know *if* it works for you... :)

-- Adam

--12583424-1887318598-870142240=:662
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="QNX-scheduler-2.0.31-pre2-2.patch.README"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.3.95.970728201040.662E@titan.acua.org>
Content-Description:

ICAgICAgICAgICAgICAgICAgIFFOWC1zdHlsZSBTY2hlZHVsaW5nIHYxLjAy
IGZvciBMaW51eCAyLjANCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnkNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBZGFtIE1jS2VlDQoNCg0KSU5UUk9EVUNUSU9ODQoNClRoaXMgcGF0Y2gg
cHJvdmlkZXMgUU5YLXN0eWxlIHNjaGVkdWxpbmcgZm9yIExpbnV4IDIuMC4g
IFRoZSBpbnRlbnQgaXMgdG8NCnByb3ZpZGUgbW9yZSBmbGV4aWJsZSBhbmQg
cG93ZXJmdWwgc2NoZWR1bGluZywgYW5kIHRvIHByb3ZpZGUgaW1wcm92ZWQN
CmludGVyYWN0aXZlIHBlcmZvcm1hbmNlIHVuZGVyIGhlYXZ5IENQVSBsb2Fk
LiAgVGhpcyBzY2hlZHVsZXIgZG9lcyBub3QgcHJvdmlkZQ0KaW5jcmVhc2Vk
IHRocm91Z2hwdXQgaG93ZXZlci4gIEluIGZhY3QsIHRoZXJlIGlzIGEgdmVy
eSBzbWFsbCBwcmljZSB0byBwYXkgaW4NCnRlcm1zIG9mIHRocm91Z2hwdXQg
aW4gb3JkZXIgdG8gYWNoaWV2ZSB0aGUgYWZvcmVtZW50aW9uZWQgZ29hbHMu
ICBTbyB0aGF0IHlvdQ0KY2FuIGFwcHJlY2lhdGUgZXhhY3RseSB3aGF0IHRo
ZSBwYXRjaCBkb2VzLCBJIHdpbGwgZ2l2ZSBhIChvdmVyc2ltcGxpZmllZCkN
CmV4cGxhbmF0aW9uIG9mIGhvdyBzY2hlZHVsaW5nIGlzIG5vcm1hbGx5IGRv
bmUgdW5kZXIgTGludXggMi4wLCBmb2xsb3dlZCBieSBhDQpkZXNjcmlwdGlv
biBvZiB0aGUgUU5YIHNjaGVkdWxlciAoYXMgaW1wbGVtZW50ZWQpLiAgSWYg
eW91IHVzZSB0aGlzIHBhdGNoLCB5b3UNCndpbGwgbmVlZCB0byByZS10aGlu
ayBob3cgeW91IHJlLW5pY2UgdGFza3MsIHNvIGEgYnJpZWYgZGlzY3Vzc2lv
biBvZg0KcmUtbmljaW5nIHRhc2tzIGlzIGdpdmVuLg0KDQoNCk5PUk1BTCBT
Q0hFRFVMSU5HIFVOREVSIExJTlVYIDIuMA0KDQpUaGVyZSBpcyBhIHNpbmds
ZSBydW4tcXVldWUuICBFYWNoIHRhc2sgbWF5IGJlIGFzc2lnbmVkIGEgcHJp
b3JpdHkgb3INCiJuaWNlbmVzcyIgd2hpY2ggd2lsbCBkZXRlcm1pbmUgaG93
IGxvbmcgYSB0aW1lc2xpY2UgaXQgZ2V0cy4gIEZvciBleGFtcGxlLCBpZg0K
eW91IGdpdmUgYSB0YXNrIGEgbmljZW5lc3Mgb2YgLTIwLCB0aGUga2VybmVs
IHdpbGwgbm90IGRpcmVjdGx5IHVzZSB0aGUgLTIwLg0KYnV0IHdpbGwgaW5z
dGVhZCB1c2UgdGhpcyBudW1iZXIgdG8gZGV0ZXJtaW5lIGhvdyBsb25nL29m
dGVuIHRoZSB0YXNrIHNob3VsZA0KYmUgYWxsb3dlZCB0byBydW4uICBUaGUg
ImNvdW50ZXIiIGF0dHJpYnV0ZSBvZiBlYWNoIHRhc2sgZGV0ZXJtaW5lcyBo
b3cgbXVjaA0KdGltZSBpdCBoYXMgbGVmdCBpbiBpdHMgdGltZXNsaWNlLiAg
QWZ0ZXIgZXZlcnkgdGFzayBvbiB0aGUgcnVuLXF1ZXVlIGhhcyB1c2VkDQp1
cCBpdHMgdGltZXNsaWNlIChjb3VudGVyID0gMCksIHRoZSBjb3VudGVyIGZv
ciBlYWNoIHRhc2sgaXMgcmVzZXQgdG8gdGhlDQpvcmlnaW5hbCBwcmlvcml0
eS4gIFRoaXMgc2NoZWR1bGVyIGhhcyBzb21lIG5pY2UgcHJvcGVydGllczoN
Cg0KCW8gSXQgb2JleXMgdGhlIEtJU1MgcHJpbmNpcGxlIChLZWVwIEl0IFNp
bXBsZSwgU3R1cGlkISkuICBUaGVyZSBpcw0KICAgICAgICAgIGFsd2F5cyBh
IGRhbmdlciB0aGF0IHRyeWluZyB0byBnZXQgInRvbyBjbGV2ZXIiIHdpbGwg
aW50cm9kdWNlDQogICAgICAgICAgdW5leHBlY3RlZCBwcm9ibGVtcy4NCg0K
CW8gSXQgZ3VhcmFudGVlcyB0aGF0IG5vIHRhc2sgd2lsbCBzdGFydmUuDQoN
CglvIEl0IGFsbG93cyB0aGUgdXNlciB0byBoYXZlIHNvbWUgY29udHJvbCBv
dmVyIHRoZSBzY2hlZHVsaW5nLg0KDQpTb21lIGRyYXdiYWNrczoNCg0KCW8g
SW50ZXJhY3RpdmUgcGVyZm9ybWFuY2UgdW5kZXIgaGVhdnkgQ1BVIGxvYWQg
aXMgbm90IGdvb2QuDQoNCglvIExpbWl0ZWQgY29udHJvbCBvdmVyIHNjaGVk
dWxpbmcgLS0gZm9yIGV4YW1wbGUsIGl0IGlzIG5vdCBwb3NzaWJsZQ0KICAg
ICAgICAgIHRvIHRlbGwgdGhlIHNjaGVkdWxlciB0byAqbmV2ZXIqIHJ1biBh
IHBhcnRpY3VsYXIgdGFzayB1bmxlc3MNCiAgICAgICAgICAqbm90aGluZyog
ZWxzZSB3YW50cyB0byBydW4gKCJpZGxlLWVhdGluZyB0YXNrIikuICBUaG9z
ZSBvZiB5b3Ugd2hvDQoJICBoYXZlIGJlZW4gcGFydGljaXBhdGluZyBpbiB0
aGUgUkM1IGNvbnRlc3QgY2FuIGFwcHJlY2lhdGUgdGhlIG5lZWQNCgkgIGZv
ciBzb21ldGhpbmcgbGlrZSB0aGlzIDotKQ0KDQoNClRIRSBRTlggU0NIRURV
TEVSDQoNCk15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIFFOWCBzY2hlZHVsZXIg
aXMgYmFzZWQgZW50aXJlbHkgb24gYSBzaG9ydCBibHVyYiBJDQpyZWFkIGFi
b3V0IGl0LCBzbyBJIHdvdWxkIG5vdCBiZSBzdXJwcmlzZWQgdG8gZmluZCB0
aGF0IHRoZSBmb2xsb3dpbmcNCmRpc2N1c3Npb24gY29udGFpbnMgZXJyb3Jz
IGFuZC9vciBvbWlzc2lvbnMuICBIb3dldmVyLCBwbGVhc2UgZG8gcmVhZA0K
b24uLi4gOi0pDQoNClRoZXJlIGFyZSAzMiBzZXBhcmF0ZSBydW4tcXVldWVz
LCBudW1iZXJlZCAwLTMxLiAgV2hlbiB0aGUgc2NoZWR1bGVyIGlzDQpsb29r
aW5nIGZvciBhIHRhc2sgdG8gcnVuLCBpdCB3aWxsIHNlbGVjdCBhIHRhc2sg
ZnJvbSB0aGUgbG93ZXN0LW51bWJlcmVkDQpydW4tcXVldWUgdGhhdCBoYXMg
YSBydW5uYWJsZSB0YXNrIG9uIGl0LiAgVGhpcyBtZWFucyB0aGF0LCBmb3Ig
ZXhhbXBsZSwgYQ0KdGFzayBvbiBydW4tcXVldWUgMSB3aWxsICpub3QqIHJ1
biB1bnRpbCB0aGVyZSBhcmUgbm8gdGFza3Mgb24gcnVuLXF1ZXVlIDANCnRo
YXQgd2FudCB0byBydW4uICBUaGUgaW5pdCB0YXNrIGhhcyBhIG1pbmltdW0g
cnVuLXF1ZXVlIG9mIDE1LiAgTmV3bHkNCmNyZWF0ZWQgdGFza3MgaW5oZXJp
dCB0aGVpciBtaW5pbXVtIHJ1bi1xdWV1ZSBmcm9tIHRoZWlyIHBhcmVudC4N
Cg0KVGhyZWUgc2NoZWR1bGluZyBwb2xpY2llcyBhcmUgc3VwcG9ydGVkOg0K
DQotLS0gRklGTw0KDQpUaGUgc2VsZWN0ZWQgdGFzayB3aWxsIHJ1biB1bnRp
bDoNCg0KCW8gaXQgYmxvY2tzDQoJICAtT1ItDQoJbyBhIHRhc2sgb24gYSBs
b3dlci1udW1iZXJlZCBydW4tcXVldWUgd2FudHMgdG8gcnVuDQoNCi0tLSBS
b3VuZC1Sb2Jpbg0KDQpUaGUgc2VsZWN0ZWQgdGFzayB3aWxsIHJ1biB1bnRp
bDoNCg0KCW8gaXQgYmxvY2tzDQoJICAtT1ItDQoJbyBhIHRhc2sgb24gYSBs
b3dlci1udW1iZXJlZCBydW4tcXVldWUgd2FudHMgdG8gcnVuDQoJICAtT1IN
CglvIDIwMG1zIGhhdmUgcGFzc2VkDQoNCi0tLSBBZGFwdGl2ZQ0KDQpUaGlz
IGlzIHRoZSBkZWZhdWx0IHBvbGljeSwgYW5kIHRoZSBtb3N0IGludGVyZXN0
aW5nIHBvbGljeS4gIEFkYXB0aXZlDQpzY2hlZHVsaW5nIGlzIGxpa2UgUm91
bmQtUm9iaW4sIGJ1dCBpdCBhbHNvIHRyaWVzIHRvICJpbnRlbGxpZ2VudGx5
IiBtb3ZlDQp0YXNrcyBiZXR3ZWVuIHJ1bi1xdWV1ZXMgaW4gb3JkZXIgdG8g
cHJvdmlkZSBnb29kIGludGVyYWN0aXZlIHJlc3BvbnNlLg0KSGVyZSBhcmUg
dGhlIHJ1bGVzIGZvciBhZGFwdGl2ZSBzY2hlZHVsaW5nOg0KDQoJbyBFYWNo
IHRhc2sgaGFzIGEgJ21pbmltdW0gcnVuLXF1ZXVlJyBhdHRyaWJ1dGUgdGhh
dCB0ZWxscyB0aGUNCgkgIHNjaGVkdWxlciB0aGUgbG93ZXN0LW51bWJlcmVk
IHJ1bi1xdWV1ZSB0aGUgdGFzayBjYW4gYmUgb24uDQoJICAiTm9ybWFsIiB0
YXNrcyBoYXZlIG1pbmltdW0gcnVuLXF1ZXVlID0gMTUuDQoNCglvIFdoZW4g
YSB0YXNrIGlzIGluaXRpYWxseSBzdGFydGVkLCBpdCBpcyBwbGFjZWQgb24g
aXRzIG1pbmltdW0NCgkgIHJ1bi1xdWV1ZS4NCg0KCW8gSWYgYSB0YXNrIGJs
b2NrcyAoZG9lcyBub3QgdXNlIGFsbCBvZiBpdHMgdGltZXNsaWNlKSwgaXQg
d2lsbA0KCSAgYmUgcGxhY2VkIG9uIGl0cyBtaW5pbXVtIHJ1bi1xdWV1ZSB3
aGVuIGl0IGJlY29tZXMgcnVubmFibGUgYWdhaW4uDQoNCglvIElmIGEgdGFz
ayB1c2VzIHVwIGFsbCBvZiBpdHMgdGltZXNsaWNlLCBhbmQgdGhlcmUgaXMg
YXQgbGVhc3Qgb25lDQoJICBvdGhlciB0YXNrIG9uIHRoZSBzYW1lIHJ1bi1x
dWV1ZSB0aGF0IHdhbnRzIHRvIHJ1biwgaXRzIHJ1bi1xdWV1ZQ0KCSAgd2ls
bCBiZSBpbmNyZW1lbnRlZCAoImRlbW90aW9uIikuDQoNCglvIElmIGEgdGFz
ayBoYXMgYmVlbiBzdGFydmluZyBmb3Igb25lIHNlY29uZCwgYW5kIGl0cyBj
dXJyZW50IHJ1bi1xdWV1ZQ0KCSAgaXMgZ3JlYXRlciB0aGFuIGl0cyBtaW5p
bXVtIHJ1bi1xdWV1ZSwgaXRzIHJ1bi1xdWV1ZSB3aWxsIGJlDQoJICBkZWNy
ZW1lbnRlZCAoInByb21vdGlvbiIpLg0KDQpUaGUgcmVzdWx0IG9mIGFwcGx5
aW5nIHRoZXNlIHJ1bGVzIGlzIHRoYXQgdGFza3Mgd2l0aCBoZWF2eSBDUFUg
cmVxdWlyZW1lbnRzDQp3aWxsIHRlbmQgdG8gbWlncmF0ZSB0byBoaWdoZXIt
bnVtYmVyZWQgcnVuLXF1ZXVlcywgd2hlcmVhcyB0YXNrcyB3aXRoIGxpZ2h0
DQpDUFUgcmVxdWlyZW1lbnRzIHdpbGwgdGVuZCB0byBzdGF5IG9uIGxvd2Vy
LW51bWJlcmVkIHJ1bi1xdWV1ZXMuICBUaGlzIGlzDQoqZ29vZCogZm9yIGlu
dGVyYWN0aXZlIHBlcmZvcm1hbmNlIQ0KDQoNClJFLU5JQ0lORyBPRiBUQVNL
UyBXSVRIIFFOWCBTQ0hFRFVMSU5HDQoNCldoZW4geW91IHJlLW5pY2UgYSB0
YXNrLCB5b3UgYXJlIGFjdHVhbGx5IGNoYW5naW5nIGl0cyBtaW5pbXVtIHJ1
bi1xdWV1ZS4gIEZvcg0KZXhhbXBsZSwgaWYgeW91IGdpdmUgeW91ciBYLXNl
cnZlciBhIG5pY2VuZXNzIG9mIC0yMCwgeW91IGFyZSBhY3R1YWxseSBzZXR0
aW5nDQppdHMgbWluaW11bSBydW4tcXVldWUgdG8gMC4gIElmIHlvdSBnaXZl
IGl0IGEgbmljZW5lc3Mgb2YgMjAsIHlvdSBhcmUgc2V0dGluZw0KaXRzIG1p
bmltdW0gcnVuLXF1ZXVlIHRvIDMxLiAgVGhlIHByaW9yaXR5IG9mIGEgdGFz
ayBpcyBpdHMgKmN1cnJlbnQqDQpydW4tcXVldWUgKHdoaWNoIG1heSBiZSBs
YXJnZXIgdGhhbiBpdHMgbWluaW11bSBydW4tcXVldWUgaW4gdGhlIGNhc2Ug
b2YgYW4NCmFkYXB0aXZlbHkgc2NoZWR1bGVkIHRhc2spLg0KDQpZb3UgbXVz
dCB0YWtlIGNhcmUgd2hlbiByZS1uaWNpbmcgdGFza3MuICBVbmxpa2UgdGhl
IG5vcm1hbCBMaW51eCBzY2hlZHVsZXIsDQp0aGUgUU5YIHNjaGVkdWxlciBk
b2VzIG5vdCBndWFyYW50ZWUgdGFza3Mgd2lsbCBub3Qgc3RhcnZlLiAgV2hl
biB5b3UgcmUtbmljZQ0KYSB0YXNrLCB5b3UgbWF5IGNyZWF0ZSBvbmUgb2Yg
dGhlIGZvbGxvd2luZyBwcm9ibGVtczoNCg0KCW8gVGhlIHRhc2sgaG9ncyB0
aGUgQ1BVLCBhbmQgc3RhcnZlcyBvdXQgb3RoZXIgdGFza3MgKGluIHRoZSBj
YXNlIG9mDQoJICBhIG5lZ2F0aXZlIG5pY2VuZXNzKS4NCg0KCW8gVGhlIHRh
c2sgaXMgc3RhcnZlZCBvdXQgYnkgaGlnaGVyLXByaW9yaXR5IHRhc2tzIChp
biB0aGUgY2FzZSBvZiBhDQoJICBwb3NpdGl2ZSBuaWNlbmVzcykuDQoNCkhl
cmUgYXJlIGEgZmV3IGdlbmVyYWwgdGlwcyBmb3IgcmUtbmljaW5nIHRhc2tz
Og0KDQoJbyBPbiBhIG1hY2hpbmUgd2hvc2UgcHJpbWFyeSBmdW5jdGlvbiBp
cyB3ZWItc2VydmluZyBvciBuZXdzLXNlcnZpbmcsDQoJICB5b3UgbWF5IHdh
bnQgdG8gZ2l2ZSB0aGUgaHR0cGQgb3IgaW5uZCB0YXNrIGEgbmVnYXRpdmUg
bmljZW5lc3MuDQoJICBPdGhlciB0YXNrcyB3b3VsZCB0aGVuIG9ubHkgYmUg
YWxsb3dlZCB0byBjb25zdW1lICJsZWZ0LW92ZXIiIENQVQ0KCSAgdGltZS4N
Cg0KCW8gSXQncyBwcm9iYWJseSBhIGdvb2QgaWRlYSB0byBnaXZlIHlvdXIg
WC1zZXJ2ZXIgYSBuZWdhdGl2ZSBuaWNlbmVzcy4NCgkgIEludGVyYWN0aXZl
IHBlcmZvcm1hbmNlIHdpbGwgbGlrZWx5IGJlbmVmaXQgZnJvbSB0aGlzLg0K
DQoJbyBXaGVuIHN0YXJ0aW5nIGEgQ1BVLWludGVuc2l2ZSBqb2IgdGhhdCBt
YXkgdGFrZSBhd2hpbGUgdG8gY29tcGxldGUsDQoJICB5b3UgbWF5IHdhbnQg
dG8gZ2l2ZSBpdCBhIHBvc2l0aXZlIG5pY2VuZXNzIHRvIGVuc3VyZSB0aGUg
YWJzb2x1dGUNCgkgIG1pbmltdW0gaW1wYWN0IG9uIGludGVyYWN0aXZlIHBl
cmZvcm1hbmNlLiAgV2hlbiBjb21waWxpbmcgYSBrZXJuZWwsDQoJICB5b3Ug
bWlnaHQgZG8gJ25pY2UgbWFrZSB6bGlsbycgLS0gdXNlcnMgb2YgdGhlIHN5
c3RlbSB3b3VsZCBwcm9iYWJseQ0KCSAgbm90IGV2ZW4gbm90aWNlIGFueSBz
bG93ZG93biENCg0KICAgICAgICBvIEl0J3MgYWxtb3N0IG5ldmVyIGEgZ29v
ZCBpZGVhIHRvIGdpdmUgYSB0b3RhbGx5IENQVS1pbnRlbnNpdmUgdGFzaw0K
ICAgICAgICAgIGEgbmVnYXRpdmUgbmljZW5lc3MuICBEb2luZyB0aGlzIHdp
dGggdGhlIG5vcm1hbCBMaW51eCBzY2hlZHVsZXINCiAgICAgICAgICBjYW4g
cmVzdWx0IGluIGEgc2x1Z2dpc2ggc3lzdGVtIC0tIHdpdGggdGhpcyBzY2hl
ZHVsZXIgaXQgY2FuIHJlc3VsdA0KICAgICAgICAgIGluIGFuICp1bnVzYWJs
ZSogc3lzdGVtLg0KDQpJbiBnZW5lcmFsLCBkb24ndCByZS1uaWNlIGEgdGFz
ayB1bmxlc3MgeW91IHVuZGVyc3RhbmQgaG93IHRoZSBzY2hlZHVsZXINCndv
cmtzLCBhbmQgeW91IGNhbiByZWFsbHkgY29udmluY2UgeW91cnNlbGYgdGhh
dCBpdCdzIGEgZ29vZCBpZGVhLg0KDQoNCkNPTkNMVVNJT04NCg0KUGxlYXNl
IGxldCBtZSBrbm93IGhvdyB3ZWxsIHRoaXMgcGF0Y2ggd29ya3MgZm9yIHlv
dS4gIEkgYW0gcGFydGljdWxhcmx5DQppbnRlcmVzdGVkIHRvIGhlYXIgZnJv
bSBTTVAgdXNlcnMsIGFzIEkgZG8gbm90IGhhdmUgU01QIG15c2VsZiBhbmQg
dGhlIHBhdGNoDQppcyBjdXJyZW50bHkgKnVudGVzdGVkKiB3aXRoIFNNUC4g
IEFsc28sIGlmIHlvdSBmaW5kIG15IGltcGxlbWVudGF0aW9uIG9mIFFOWA0K
c2NoZWR1bGluZyBpcyBpbmNvcnJlY3Qgb3IgaW5jb21wbGV0ZSwgSSB3b3Vs
ZCBiZSB2ZXJ5IGdsYWQgdG8gaGVhciBmcm9tIHlvdS4NCg0KSGFwcHkgdGFz
ay1zd2l0Y2hpbmcgOi0pDQoNCgktLSBBZGFtIE1jS2VlCQk8YW1ja2VlQHBv
Ym94ZXMuY29tPg0K
--12583424-1887318598-870142240=:662
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="QNX-scheduler-2.0.31-pre2-2.patch"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.3.95.970728201040.662F@titan.acua.org>
Content-Description:

LS0tIGxpbnV4L2ZzL3Byb2MvYXJyYXkuYy5vcmlnCU1vbiBKdWwgMjggMTM6
MTM6NTAgMTk5Nw0KKysrIGxpbnV4L2ZzL3Byb2MvYXJyYXkuYwlNb24gSnVs
IDI4IDAwOjQ0OjA5IDE5OTcNCkBAIC02ODIsMTIgKzY4MiwzNCBAQA0KIAll
bHNlDQogCQl0dHlfcGdycCA9IC0xOw0KIA0KLQkvKiBzY2FsZSBwcmlvcml0
eSBhbmQgbmljZSB2YWx1ZXMgZnJvbSB0aW1lc2xpY2VzIHRvIC0yMC4uMjAg
Ki8NCisJLyogc2NhbGUgcHJpb3JpdHkgYW5kIG5pY2UgdmFsdWVzIGZyb20g
cnVuLXF1ZXVlICMgdG8gLTIwLi4yMCAqLw0KIAkvKiB0byBtYWtlIGl0IGxv
b2sgbGlrZSBhICJub3JtYWwiIHVuaXggcHJpb3JpdHkvbmljZSB2YWx1ZSAg
Ki8NCi0JcHJpb3JpdHkgPSB0c2stPmNvdW50ZXI7DQotCXByaW9yaXR5ID0g
MjAgLSAocHJpb3JpdHkgKiAxMCArIERFRl9QUklPUklUWSAvIDIpIC8gREVG
X1BSSU9SSVRZOw0KLQluaWNlID0gdHNrLT5wcmlvcml0eTsNCi0JbmljZSA9
IDIwIC0gKG5pY2UgKiAyMCArIERFRl9QUklPUklUWSAvIDIpIC8gREVGX1BS
SU9SSVRZOw0KKwlwcmlvcml0eSA9IHRzay0+cnVuX3E7DQorCWlmIChwcmlv
cml0eSA8IERFRl9SVU5fUVVFVUUpIHsNCisJICAgICAgICBwcmlvcml0eSAq
PSAxOTsNCisJCXByaW9yaXR5IC89IChERUZfUlVOX1FVRVVFIC0gMSk7DQor
CQlwcmlvcml0eSA9IC0yMCArIHByaW9yaXR5Ow0KKwl9IGVsc2UgaWYgKHBy
aW9yaXR5ID09IERFRl9SVU5fUVVFVUUpIHsNCisJICAgICAgICBwcmlvcml0
eSA9IDA7DQorCX0gZWxzZSB7DQorCSAgICAgICAgcHJpb3JpdHkgLT0gKERF
Rl9SVU5fUVVFVUUgKyAxKTsNCisJCXByaW9yaXR5ICo9IDE5Ow0KKwkJcHJp
b3JpdHkgLz0gKE5SX1JVTl9RVUVVRVMgLSBERUZfUlVOX1FVRVVFIC0gMik7
DQorCQlwcmlvcml0eSArPSAxOw0KKwl9DQorCW5pY2UgPSB0c2stPnJ1bl9x
X21pbjsNCisJaWYgKG5pY2UgPCBERUZfUlVOX1FVRVVFKSB7DQorCSAgICAg
ICAgbmljZSAqPSAxOTsNCisJCW5pY2UgLz0gKERFRl9SVU5fUVVFVUUgLSAx
KTsNCisJCW5pY2UgPSAtMjAgKyBuaWNlOw0KKwl9IGVsc2UgaWYgKG5pY2Ug
PT0gREVGX1JVTl9RVUVVRSkgew0KKwkgICAgICAgIG5pY2UgPSAwOw0KKwl9
IGVsc2Ugew0KKwkgICAgICAgIG5pY2UgLT0gKERFRl9SVU5fUVVFVUUgKyAx
KTsNCisJCW5pY2UgKj0gMTk7DQorCQluaWNlIC89IChOUl9SVU5fUVVFVUVT
IC0gREVGX1JVTl9RVUVVRSAtIDIpOw0KKwkJbmljZSArPSAxOw0KKwl9DQog
DQogCXJldHVybiBzcHJpbnRmKGJ1ZmZlciwiJWQgKCVzKSAlYyAlZCAlZCAl
ZCAlZCAlZCAlbHUgJWx1IFwNCiAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsZCAl
bGQgJWxkICVsZCAlbGQgJWxkICVsdSAlbHUgJWxkICVsdSAlbHUgJWx1ICVs
dSAlbHUgXA0KLS0tIGxpbnV4L2tlcm5lbC9zeXMuYy5vcmlnCU1vbiBKdWwg
MjggMTM6MTM6MTYgMTk5Nw0KKysrIGxpbnV4L2tlcm5lbC9zeXMuYwlNb24g
SnVsIDI4IDAwOjQ0OjA5IDE5OTcNCkBAIC02NywyMyArNjcsMjUgQEANCiB7
DQogCXN0cnVjdCB0YXNrX3N0cnVjdCAqcDsNCiAJaW50IGVycm9yID0gRVNS
Q0g7DQotCXVuc2lnbmVkIGludCBwcmlvcml0eTsNCisJdW5zaWduZWQgaW50
IHJ1bl9xOw0KIA0KIAlpZiAod2hpY2ggPiAyIHx8IHdoaWNoIDwgMCkNCiAJ
CXJldHVybiAtRUlOVkFMOw0KIA0KLQkvKiBub3JtYWxpemU6IGF2b2lkIHNp
Z25lZCBkaXZpc2lvbiAocm91bmRpbmcgcHJvYmxlbXMpICovDQotCXByaW9y
aXR5ID0gbmljZXZhbDsNCi0JaWYgKG5pY2V2YWwgPCAwKQ0KLQkJcHJpb3Jp
dHkgPSAtbmljZXZhbDsNCi0JaWYgKHByaW9yaXR5ID4gMjApDQotCQlwcmlv
cml0eSA9IDIwOw0KLQlwcmlvcml0eSA9IChwcmlvcml0eSAqIERFRl9QUklP
UklUWSArIDEwKSAvIDIwICsgREVGX1BSSU9SSVRZOw0KLQ0KLQlpZiAobmlj
ZXZhbCA+PSAwKSB7DQotCQlwcmlvcml0eSA9IDIqREVGX1BSSU9SSVRZIC0g
cHJpb3JpdHk7DQotCQlpZiAoIXByaW9yaXR5KQ0KLQkJCXByaW9yaXR5ID0g
MTsNCisJaWYgKG5pY2V2YWwgPCAtMjApIG5pY2V2YWwgPSAtMjA7DQorCWVs
c2UgaWYgKG5pY2V2YWwgPiAyMCkgbmljZXZhbCA9IDIwOw0KKwlpZiAobmlj
ZXZhbCA8IDApIHsNCisJICBydW5fcSA9IC1uaWNldmFsIC0gMTsNCisJICBy
dW5fcSAqPSAoREVGX1JVTl9RVUVVRSAtIDEpOw0KKwkgIHJ1bl9xIC89IDE5
OyANCisJICBydW5fcSA9IERFRl9SVU5fUVVFVUUgLSAxIC0gcnVuX3E7DQor
CX0gZWxzZSBpZiAoIW5pY2V2YWwpIHsNCisJICBydW5fcSA9IERFRl9SVU5f
UVVFVUU7DQorCX0gZWxzZSB7DQorCSAgcnVuX3EgPSBuaWNldmFsIC0gMTsN
CisJICBydW5fcSAqPSAoTlJfUlVOX1FVRVVFUyAtIERFRl9SVU5fUVVFVUUg
LSAyKTsNCisJICBydW5fcSAvPSAxOTsNCisJICBydW5fcSA9IERFRl9SVU5f
UVVFVUUgKyAxICsgcnVuX3E7DQogCX0NCiANCiAJZm9yX2VhY2hfdGFzayhw
KSB7DQpAQCAtOTYsMTAgKzk4LDEwIEBADQogCQl9DQogCQlpZiAoZXJyb3Ig
PT0gRVNSQ0gpDQogCQkJZXJyb3IgPSAwOw0KLQkJaWYgKHByaW9yaXR5ID4g
cC0+cHJpb3JpdHkgJiYgIXN1c2VyKCkpDQotCQkJZXJyb3IgPSBFQUNDRVM7
DQorCQlpZiAocnVuX3EgPCBwLT5ydW5fcV9taW4gJiYgIXN1c2VyKCkpDQor
CQkgICAgICAgIGVycm9yID0gRUFDQ0VTOw0KIAkJZWxzZQ0KLQkJCXAtPnBy
aW9yaXR5ID0gcHJpb3JpdHk7DQorCQkgICAgICAgIHAtPnJ1bl9xX3N3ID0g
cnVuX3E7DQogCX0NCiAJcmV0dXJuIC1lcnJvcjsNCiB9DQpAQCAtMTEyLDcg
KzExNCw3IEBADQogYXNtbGlua2FnZSBpbnQgc3lzX2dldHByaW9yaXR5KGlu
dCB3aGljaCwgaW50IHdobykNCiB7DQogCXN0cnVjdCB0YXNrX3N0cnVjdCAq
cDsNCi0JbG9uZyBtYXhfcHJpbyA9IC1FU1JDSDsNCisJdW5zaWduZWQgaW50
IHJ1bl9xX21pbiA9IE5SX1JVTl9RVUVVRVM7DQogDQogCWlmICh3aGljaCA+
IDIgfHwgd2hpY2ggPCAwKQ0KIAkJcmV0dXJuIC1FSU5WQUw7DQpAQCAtMTIw
LDE0ICsxMjIsMjcgQEANCiAJZm9yX2VhY2hfdGFzayAocCkgew0KIAkJaWYg
KCFwcm9jX3NlbChwLCB3aGljaCwgd2hvKSkNCiAJCQljb250aW51ZTsNCi0J
CWlmIChwLT5wcmlvcml0eSA+IG1heF9wcmlvKQ0KLQkJCW1heF9wcmlvID0g
cC0+cHJpb3JpdHk7DQorCQlpZiAocC0+cnVuX3FfbWluIDwgcnVuX3FfbWlu
KQ0KKwkJCXJ1bl9xX21pbiA9IHAtPnJ1bl9xX21pbjsNCiAJfQ0KIA0KLQkv
KiBzY2FsZSB0aGUgcHJpb3JpdHkgZnJvbSB0aW1lc2xpY2UgdG8gMC4uNDAg
Ki8NCi0JaWYgKG1heF9wcmlvID4gMCkNCi0JCW1heF9wcmlvID0gKG1heF9w
cmlvICogMjAgKyBERUZfUFJJT1JJVFkvMikgLyBERUZfUFJJT1JJVFk7DQot
CXJldHVybiBtYXhfcHJpbzsNCisgICAgICAgIGlmIChydW5fcV9taW4gPT0g
TlJfUlVOX1FVRVVFUykNCisgICAgICAgICAgICAgICAgcmV0dXJuIC1FU1JD
SDsNCisNCisJLyogc2NhbGUgdGhlIHJ1bl9xIHRvIDAuLjQwICovDQorCWlm
IChydW5fcV9taW4gPCBERUZfUlVOX1FVRVVFKSB7DQorCSAgICAgICAgcnVu
X3FfbWluICo9IDE5Ow0KKwkJcnVuX3FfbWluIC89IChERUZfUlVOX1FVRVVF
IC0gMSk7DQorCX0gZWxzZSBpZiAocnVuX3FfbWluID09IERFRl9SVU5fUVVF
VUUpIHsNCisJICAgICAgICBydW5fcV9taW4gPSAyMDsNCisJfSBlbHNlIHsN
CisJICAgICAgICBydW5fcV9taW4gLT0gKERFRl9SVU5fUVVFVUUgKyAxKTsN
CisJCXJ1bl9xX21pbiAqPSAxOTsNCisJCXJ1bl9xX21pbiAvPSAoTlJfUlVO
X1FVRVVFUyAtIERFRl9SVU5fUVVFVUUgLSAyKTsNCisJCXJ1bl9xX21pbiAr
PSAyMTsNCisJfQ0KKyAgICAgICAgcnVuX3FfbWluID0gNDAgLSBydW5fcV9t
aW47DQorCXJldHVybiBydW5fcV9taW47DQogfQ0KIA0KICNpZm5kZWYgX19h
bHBoYV9fDQotLS0gbGludXgva2VybmVsL3NjaGVkLmMub3JpZwlNb24gSnVs
IDI4IDEzOjEzOjI4IDE5OTcNCisrKyBsaW51eC9rZXJuZWwvc2NoZWQuYwlN
b24gSnVsIDI4IDE4OjAyOjM5IDE5OTcNCkBAIC03LDYgKzcsNyBAQA0KICAq
ICAxOTk2LTEyLTIzICBNb2RpZmllZCBieSBEYXZlIEdyb3RoZSB0byBmaXgg
YnVncyBpbiBzZW1hcGhvcmVzIGFuZA0KICAqICAgICAgICAgICAgICBtYWtl
IHNlbWFwaG9yZXMgU01QIHNhZmUNCiAgKiAgMTk5Ny0wMS0yOCAgTW9kaWZp
ZWQgYnkgRmlubiBBcm5lIEdhbmdzdGFkIHRvIG1ha2UgdGltZXJzIHNjYWxl
IGJldHRlci4NCisgKiAgMTk5Ny0wNy0zMCAgTW9kaWZpZWQgYnkgQWRhbSBN
Y0tlZSB0byB1c2UgbXVsdGlsZXZlbCBmZWVkYmFjayBzY2hlZHVsaW5nLg0K
ICAqLw0KIA0KIC8qDQpAQCAtOTIsNiArOTMsNyBAQA0KIHN0YXRpYyBzdHJ1
Y3QgZnNfc3RydWN0IGluaXRfZnMgPSBJTklUX0ZTOw0KIHN0YXRpYyBzdHJ1
Y3QgZmlsZXNfc3RydWN0IGluaXRfZmlsZXMgPSBJTklUX0ZJTEVTOw0KIHN0
YXRpYyBzdHJ1Y3Qgc2lnbmFsX3N0cnVjdCBpbml0X3NpZ25hbHMgPSBJTklU
X1NJR05BTFM7DQorc3RhdGljIHN0cnVjdCB0YXNrX3N0cnVjdCAqIHJ1bl9x
W05SX1JVTl9RVUVVRVNdOw0KIA0KIHN0cnVjdCBtbV9zdHJ1Y3QgaW5pdF9t
bSA9IElOSVRfTU07DQogc3RydWN0IHRhc2tfc3RydWN0IGluaXRfdGFzayA9
IElOSVRfVEFTSzsNCkBAIC0xMDcsNiArMTA5LDcgQEANCiANCiBzdGF0aWMg
aW5saW5lIHZvaWQgYWRkX3RvX3J1bnF1ZXVlKHN0cnVjdCB0YXNrX3N0cnVj
dCAqIHApDQogew0KKyAgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICpxX2hl
YWQgPSBydW5fcVtwLT5ydW5fcV07DQogI2lmZGVmIF9fU01QX18NCiAJaW50
IGNwdT1zbXBfcHJvY2Vzc29yX2lkKCk7DQogI2VuZGlmCQ0KQEAgLTExNiwx
MiArMTE5LDI0IEBADQogCQlyZXR1cm47DQogCX0NCiAjZW5kaWYNCi0JaWYg
KHAtPmNvdW50ZXIgPiBjdXJyZW50LT5jb3VudGVyICsgMykNCisJaWYgKChw
LT5ydW5fcSA8IGN1cnJlbnQtPnJ1bl9xKSB8fA0KKwkgICAgKChwLT5ydW5f
cSA9PSBjdXJyZW50LT5ydW5fcSkgJiYNCisJICAgICAocC0+Y291bnRlciA+
IGN1cnJlbnQtPmNvdW50ZXIgKyAzKSkpDQogCQluZWVkX3Jlc2NoZWQgPSAx
Ow0KIAlucl9ydW5uaW5nKys7DQotCShwLT5wcmV2X3J1biA9IGluaXRfdGFz
ay5wcmV2X3J1biktPm5leHRfcnVuID0gcDsNCi0JcC0+bmV4dF9ydW4gPSAm
aW5pdF90YXNrOw0KLQlpbml0X3Rhc2sucHJldl9ydW4gPSBwOw0KKw0KKwlp
ZiAocV9oZWFkID09IE5VTEwpIHsNCisJICBydW5fcVtwLT5ydW5fcV0gPSBw
Ow0KKwkgIHAtPnByZXZfcnVuID0gcDsNCisJICBwLT5uZXh0X3J1biA9IHA7
DQorCX0gZWxzZSB7DQorCSAgcC0+cHJldl9ydW4gPSBxX2hlYWQtPnByZXZf
cnVuOw0KKwkgIHAtPm5leHRfcnVuID0gcV9oZWFkOw0KKwkgIHFfaGVhZC0+
cHJldl9ydW4tPm5leHRfcnVuID0gcDsNCisJICBxX2hlYWQtPnByZXZfcnVu
ID0gcDsNCisJfQ0KKwlwLT5sYXN0X3J1biA9IGppZmZpZXM7DQorDQogI2lm
ZGVmIF9fU01QX18NCiAJLyogdGhpcyBpcyBzYWZlIG9ubHkgaWYgY2FsbGVk
IHdpdGggY2xpKCkqLw0KIAl3aGlsZShzZXRfYml0KDMxLCZzbXBfcHJvY2Vz
c19hdmFpbGFibGUpKQ0KQEAgLTE1NCw4ICsxNjksOSBAQA0KIA0KIHN0YXRp
YyBpbmxpbmUgdm9pZCBkZWxfZnJvbV9ydW5xdWV1ZShzdHJ1Y3QgdGFza19z
dHJ1Y3QgKiBwKQ0KIHsNCi0Jc3RydWN0IHRhc2tfc3RydWN0ICpuZXh0ID0g
cC0+bmV4dF9ydW47DQogCXN0cnVjdCB0YXNrX3N0cnVjdCAqcHJldiA9IHAt
PnByZXZfcnVuOw0KKwlzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQgPSBwLT5u
ZXh0X3J1bjsNCisJc3RydWN0IHRhc2tfc3RydWN0ICpxX2hlYWQgPSBydW5f
cVtwLT5ydW5fcV07DQogDQogI2lmIDEJLyogc2FuaXR5IHRlc3RzICovDQog
CWlmICghbmV4dCB8fCAhcHJldikgew0KQEAgLTE3MiwyNiArMTg4LDUzIEBA
DQogCQlyZXR1cm47DQogCX0NCiAJbnJfcnVubmluZy0tOw0KLQluZXh0LT5w
cmV2X3J1biA9IHByZXY7DQorDQorCS8qIHJlbW92ZSBsaW5rcyB0byBwICov
DQogCXByZXYtPm5leHRfcnVuID0gbmV4dDsNCi0JcC0+bmV4dF9ydW4gPSBO
VUxMOw0KKwluZXh0LT5wcmV2X3J1biA9IHByZXY7DQorCS8qIHNldCBwJ3Mg
bGlua3MgKi8NCiAJcC0+cHJldl9ydW4gPSBOVUxMOw0KKwlwLT5uZXh0X3J1
biA9IE5VTEw7DQorICAgICAgIAkvKiBpZiBwIHdhcyB0aGUgcV9oZWFkLCBy
ZXNldCBxX2hlYWQgKi8NCisJaWYgKHAgPT0gcV9oZWFkKSB7DQorCSAgICAg
ICAgaWYgKG5leHQgPT0gcCkNCisJICAgICAgICAgICAgICAgIHJ1bl9xW3At
PnJ1bl9xXSA9IE5VTEw7DQorCQllbHNlDQorCQkgICAgICAgIHJ1bl9xW3At
PnJ1bl9xXSA9IG5leHQ7DQorCX0NCiB9DQogDQotc3RhdGljIGlubGluZSB2
b2lkIG1vdmVfbGFzdF9ydW5xdWV1ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKiBw
KQ0KK3N0YXRpYyBpbmxpbmUgdm9pZCBzd2l0Y2hfcnVucXVldWVzKHN0cnVj
dCB0YXNrX3N0cnVjdCAqIHAsIHVuc2lnbmVkIGludCBuZXdfcnVuX3EpDQog
ew0KLQlzdHJ1Y3QgdGFza19zdHJ1Y3QgKm5leHQgPSBwLT5uZXh0X3J1bjsN
CiAJc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2ID0gcC0+cHJldl9ydW47DQor
CXN0cnVjdCB0YXNrX3N0cnVjdCAqbmV4dCA9IHAtPm5leHRfcnVuOw0KKwlz
dHJ1Y3QgdGFza19zdHJ1Y3QgKnFfaGVhZCA9IHJ1bl9xW3AtPnJ1bl9xXTsN
CiANCi0JLyogcmVtb3ZlIGZyb20gbGlzdCAqLw0KLQluZXh0LT5wcmV2X3J1
biA9IHByZXY7DQorCS8qIHJlbW92ZSBsaW5rcyB0byBwICovDQogCXByZXYt
Pm5leHRfcnVuID0gbmV4dDsNCi0JLyogYWRkIGJhY2sgdG8gbGlzdCAqLw0K
LQlwLT5uZXh0X3J1biA9ICZpbml0X3Rhc2s7DQotCXByZXYgPSBpbml0X3Rh
c2sucHJldl9ydW47DQotCWluaXRfdGFzay5wcmV2X3J1biA9IHA7DQotCXAt
PnByZXZfcnVuID0gcHJldjsNCi0JcHJldi0+bmV4dF9ydW4gPSBwOw0KKwlu
ZXh0LT5wcmV2X3J1biA9IHByZXY7DQorICAgICAgIAkvKiBpZiBwIHdhcyB0
aGUgcV9oZWFkLCByZXNldCBxX2hlYWQgKi8NCisJaWYgKHAgPT0gcV9oZWFk
KSB7DQorCSAgICAgICAgaWYgKG5leHQgPT0gcCkNCisJICAgICAgICAgICAg
ICAgIHJ1bl9xW3AtPnJ1bl9xXSA9IE5VTEw7DQorCQllbHNlDQorCQkgICAg
ICAgIHJ1bl9xW3AtPnJ1bl9xXSA9IG5leHQ7DQorCX0NCisNCisJcC0+cnVu
X3EgPSBuZXdfcnVuX3E7DQorCXFfaGVhZCA9IHJ1bl9xW3AtPnJ1bl9xXTsN
CisJaWYgKHFfaGVhZCA9PSBOVUxMKSB7DQorCSAgcnVuX3FbcC0+cnVuX3Fd
ID0gcDsNCisJICBwLT5wcmV2X3J1biA9IHA7DQorCSAgcC0+bmV4dF9ydW4g
PSBwOw0KKwl9IGVsc2Ugew0KKwkgIHAtPnByZXZfcnVuID0gcV9oZWFkLT5w
cmV2X3J1bjsNCisJICBwLT5uZXh0X3J1biA9IHFfaGVhZDsNCisJICBxX2hl
YWQtPnByZXZfcnVuLT5uZXh0X3J1biA9IHA7DQorCSAgcV9oZWFkLT5wcmV2
X3J1biA9IHA7DQorCX0NCisJcC0+bGFzdF9ydW4gPSBqaWZmaWVzOw0KKwlw
LT5jb3VudGVyID0gMDsNCiB9DQogDQogLyoNCkBAIC0yMDQsNyArMjQ3LDcg
QEANCiAgKi8NCiBpbmxpbmUgdm9pZCB3YWtlX3VwX3Byb2Nlc3Moc3RydWN0
IHRhc2tfc3RydWN0ICogcCkNCiB7DQotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7
DQorICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOw0KIA0KIAlzYXZlX2Zs
YWdzKGZsYWdzKTsNCiAJY2xpKCk7DQpAQCAtMjU1LDggKzI5OCw4IEBADQog
CSAqIHJ1bnF1ZXVlICh0YWtpbmcgcHJpb3JpdGllcyB3aXRoaW4gcHJvY2Vz
c2VzDQogCSAqIGludG8gYWNjb3VudCkuDQogCSAqLw0KLQlpZiAocC0+cG9s
aWN5ICE9IFNDSEVEX09USEVSKQ0KLQkJcmV0dXJuIDEwMDAgKyBwLT5ydF9w
cmlvcml0eTsNCisJaWYgKHAtPnBvbGljeSAhPSBTQ0hFRF9BREFQVElWRSkN
CisJICAgICAgICByZXR1cm4gMTAwMCArIHAtPnJ0X3ByaW9yaXR5Ow0KIA0K
IAkvKg0KIAkgKiBHaXZlIHRoZSBwcm9jZXNzIGEgZmlyc3QtYXBwcm94aW1h
dGlvbiBnb29kbmVzcyB2YWx1ZQ0KQEAgLTI4NCwyNSArMzI3LDE5IEBADQog
fQ0KIA0KIC8qDQotICogICdzY2hlZHVsZSgpJyBpcyB0aGUgc2NoZWR1bGVy
IGZ1bmN0aW9uLiBJdCdzIGEgdmVyeSBzaW1wbGUgYW5kIG5pY2UNCi0gKiBz
Y2hlZHVsZXI6IGl0J3Mgbm90IHBlcmZlY3QsIGJ1dCBjZXJ0YWlubHkgd29y
a3MgZm9yIG1vc3QgdGhpbmdzLg0KLSAqDQotICogVGhlIGdvdG8gaXMgImlu
dGVyZXN0aW5nIi4NCi0gKg0KLSAqICAgTk9URSEhICBUYXNrIDAgaXMgdGhl
ICdpZGxlJyB0YXNrLCB3aGljaCBnZXRzIGNhbGxlZCB3aGVuIG5vIG90aGVy
DQotICogdGFza3MgY2FuIHJ1bi4gSXQgY2FuIG5vdCBiZSBraWxsZWQsIGFu
ZCBpdCBjYW5ub3Qgc2xlZXAuIFRoZSAnc3RhdGUnDQotICogaW5mb3JtYXRp
b24gaW4gdGFza1swXSBpcyBuZXZlciB1c2VkLg0KKyAqICBzY2hlZHVsZSgp
IGRvZXMgcnVuLXF1ZXVlIG1haW50ZW5hbmNlLCBhbmQgcGlja3MgYSBwcm9j
ZXNzIHRvIHJ1bi4NCisgKiAgSXQgaXMgYSBRTlgtbGlrZSBzY2hlZHVsZXIg
dGhhdCB1c2VzIDMyIHNlcGFyYXRlIHJ1bi1xdWV1ZXMuDQogICovDQogYXNt
bGlua2FnZSB2b2lkIHNjaGVkdWxlKHZvaWQpDQogew0KLQlpbnQgYzsNCisJ
c3RhdGljIGludCBuZXh0X21haW50ZW5hbmNlID0gMDsNCisJaW50IGMsIHE7
DQogCXN0cnVjdCB0YXNrX3N0cnVjdCAqIHA7DQogCXN0cnVjdCB0YXNrX3N0
cnVjdCAqIHByZXYsICogbmV4dDsNCiAJdW5zaWduZWQgbG9uZyB0aW1lb3V0
ID0gMDsNCiAJaW50IHRoaXNfY3B1PXNtcF9wcm9jZXNzb3JfaWQoKTsNCiAN
Ci0vKiBjaGVjayBhbGFybSwgd2FrZSB1cCBhbnkgaW50ZXJydXB0aWJsZSB0
YXNrcyB0aGF0IGhhdmUgZ290IGEgc2lnbmFsICovDQotDQorCS8qIGNoZWNr
IGFsYXJtLCB3YWtlIHVwIGFueSBpbnRlcnJ1cHRpYmxlIHRhc2tzIHRoYXQg
aGF2ZSBnb3QgYSBzaWduYWwgKi8NCiAJaWYgKGludHJfY291bnQpDQogCQln
b3RvIHNjaGVkdWxpbmdfaW5faW50ZXJydXB0Ow0KIA0KQEAgLTMyMCw4ICsz
NTcsMTEgQEANCiAJLyogbW92ZSBhbiBleGhhdXN0ZWQgUlIgcHJvY2VzcyB0
byBiZSBsYXN0Li4gKi8NCiAJaWYgKCFwcmV2LT5jb3VudGVyICYmIHByZXYt
PnBvbGljeSA9PSBTQ0hFRF9SUikgew0KIAkJcHJldi0+Y291bnRlciA9IHBy
ZXYtPnByaW9yaXR5Ow0KLQkJbW92ZV9sYXN0X3J1bnF1ZXVlKHByZXYpOw0K
KwkgICAgICAgIHJ1bl9xW3ByZXYtPnJ1bl9xXSA9IHByZXYtPm5leHRfcnVu
Ow0KIAl9DQorCS8qIG1vdmUgdGhlIGxhc3QgcHJvY2VzcyBydW4gdG8gdGhl
IGVuZCBvZiB0aGUgcXVldWUgKi8NCisJaWYgKHByZXYtPnBpZCAmJiBwcmV2
LT5wb2xpY3kgIT0gU0NIRURfRklGTykNCisJICAgICAgICBydW5fcVtwcmV2
LT5ydW5fcV0gPSBwcmV2LT5uZXh0X3J1bjsNCiAJc3dpdGNoIChwcmV2LT5z
dGF0ZSkgew0KIAkJY2FzZSBUQVNLX0lOVEVSUlVQVElCTEU6DQogCQkJaWYg
KHByZXYtPnNpZ25hbCAmIH5wcmV2LT5ibG9ja2VkKQ0KQEAgLTMzNiwxMSAr
Mzc2LDQyIEBADQogCQkJfQ0KIAkJZGVmYXVsdDoNCiAJCQlkZWxfZnJvbV9y
dW5xdWV1ZShwcmV2KTsNCisJCQlwcmV2LT5ydW5fcSA9IHByZXYtPnJ1bl9x
X21pbjsNCisJCQlwcmV2LT5jb3VudGVyID0gREVGX1BSSU9SSVRZOw0KIAkJ
Y2FzZSBUQVNLX1JVTk5JTkc6DQogCX0NCi0JcCA9IGluaXRfdGFzay5uZXh0
X3J1bjsNCiAJc3RpKCk7DQotCQ0KKw0KKwkvKg0KKwkgKiBUYWtlIGNhcmUg
b2YgcmUtbmljZWQgcHJvY2Vzc2VzLCBwcm9tb3RlIHN0YXJ2aW5nIHByb2Nl
c3Nlcw0KKwkgKi8NCisJaWYgKGppZmZpZXMgPj0gbmV4dF9tYWludGVuYW5j
ZSkgew0KKwkgICAgICAgIGZvcl9lYWNoX3Rhc2socCkgew0KKwkJICAgICAg
ICBpZiAocC0+cnVuX3Ffc3cgPCBOUl9SVU5fUVVFVUVTKSB7DQorCQkJICAg
ICAgICBjbGkoKTsNCisJCQkJaWYgKHAtPm5leHRfcnVuKSB7DQorCQkJCSAg
ICAgICAgcC0+cnVuX3FfbWluID0gcC0+cnVuX3Ffc3c7DQorCQkJCSAgICAg
ICAgaWYgKHAtPnJ1bl9xICE9IHAtPnJ1bl9xX3N3KQ0KKwkJCQkJICAgICAg
ICBzd2l0Y2hfcnVucXVldWVzKHAsIHAtPnJ1bl9xX3N3KTsNCisJCQkJfSBl
bHNlIHsNCisJCQkJCXAtPnJ1bl9xX21pbiA9IHAtPnJ1bl9xID0gcC0+cnVu
X3Ffc3c7DQorCQkJCX0NCisJCQkJcC0+cnVuX3Ffc3cgPSBOUl9SVU5fUVVF
VUVTOw0KKwkJCQlzdGkoKTsNCisJCSAgICAgICAgfSBlbHNlIGlmIChwLT5u
ZXh0X3J1biAmJg0KKwkJCQkgICAoamlmZmllcyAtIHAtPmxhc3RfcnVuID49
IEhaKSAmJg0KKwkJCQkgICAocC0+cnVuX3EgPiBwLT5ydW5fcV9taW4pICYm
DQorCQkJCSAgIHByZXYtPnBpZCAmJg0KKwkJCQkgICAocHJldi0+cnVuX3Eg
PCBwLT5ydW5fcSkpDQorCQkJew0KKwkJCSAgICAgICAgY2xpKCk7DQorCQkJ
CXN3aXRjaF9ydW5xdWV1ZXMocCwgcC0+cnVuX3EgLSAxKTsNCisJCQkJc3Rp
KCk7DQorCQkJfQ0KKwkJfQ0KKwkJbmV4dF9tYWludGVuYW5jZSA9IGppZmZp
ZXMgKyAoNTAwKkhaLzEwMDApOw0KKwl9DQorDQogI2lmZGVmIF9fU01QX18N
CiAJLyoNCiAJICoJVGhpcyBpcyBzYWZlIGFzIHdlIGRvIG5vdCBwZXJtaXQg
cmUtZW50cnkgb2Ygc2NoZWR1bGUoKQ0KQEAgLTM0OSwzNSArNDIwLDU3IEBA
DQogI2RlZmluZSBpZGxlX3Rhc2sgKHRhc2tbY3B1X251bWJlcl9tYXBbdGhp
c19jcHVdXSkNCiAjZWxzZQ0KICNkZWZpbmUgaWRsZV90YXNrICgmaW5pdF90
YXNrKQ0KLSNlbmRpZgkNCisjZW5kaWYNCiANCiAvKg0KICAqIE5vdGUhIHRo
ZXJlIG1heSBhcHBlYXIgbmV3IHRhc2tzIG9uIHRoZSBydW4tcXVldWUgZHVy
aW5nIHRoaXMsIGFzDQogICogaW50ZXJydXB0cyBhcmUgZW5hYmxlZC4gSG93
ZXZlciwgdGhleSB3aWxsIGJlIHB1dCBvbiBmcm9udCBvZiB0aGUNCiAgKiBs
aXN0LCBzbyBvdXIgbGlzdCBzdGFydGluZyBhdCAicCIgaXMgZXNzZW50aWFs
bHkgZml4ZWQuDQogICovDQotLyogdGhpcyBpcyB0aGUgc2NoZWR1bGVyIHBy
b3BlcjogKi8NCisgICAgICAgIC8qIHBpY2sgYSBwcm9jZXNzICovDQogCWMg
PSAtMTAwMDsNCiAJbmV4dCA9IGlkbGVfdGFzazsNCi0Jd2hpbGUgKHAgIT0g
JmluaXRfdGFzaykgew0KLQkJaW50IHdlaWdodCA9IGdvb2RuZXNzKHAsIHBy
ZXYsIHRoaXNfY3B1KTsNCi0JCWlmICh3ZWlnaHQgPiBjKQ0KLQkJCWMgPSB3
ZWlnaHQsIG5leHQgPSBwOw0KLQkJcCA9IHAtPm5leHRfcnVuOw0KKwlmb3Ig
KHEgPSAwOyBxIDwgTlJfUlVOX1FVRVVFUzsgcSsrKSB7DQorCSAgICAgICAg
cCA9IHJ1bl9xW3FdOw0KKwkJaWYgKCFwKSBjb250aW51ZTsNCisJCWRvIHsN
CisJCSAgICAgICAgaW50IHdlaWdodCA9IGdvb2RuZXNzKHAsIHByZXYsIHRo
aXNfY3B1KTsNCisJCSAgICAgICAgaWYgKHdlaWdodCA+IGMpIHsNCisJCQkJ
YyA9IHdlaWdodDsNCisJCQkgICAgICAgIG5leHQgPSBwOw0KKwkJICAgICAg
ICB9DQorCQkJcCA9IHAtPm5leHRfcnVuOw0KKwkJfSB3aGlsZSAocCAhPSBy
dW5fcVtxXSk7DQorCQlpZiAoIWMpIHsNCisJCSAgICAgICAgcCA9IHJ1bl9x
W3FdOw0KKwkJCWRvIHsNCisJCQkgICAgICAgIHAtPmNvdW50ZXIgPSBERUZf
UFJJT1JJVFk7DQorCQkJCXAgPSBwLT5uZXh0X3J1bjsNCisJCQl9IHdoaWxl
IChwICE9IHJ1bl9xW3FdKTsNCisJCX0NCisJCWlmIChjID4gLTEwMDApIGJy
ZWFrOw0KIAl9DQotDQotCS8qIGlmIGFsbCBydW5uYWJsZSBwcm9jZXNzZXMg
aGF2ZSAiY291bnRlciA9PSAwIiwgcmUtY2FsY3VsYXRlIGNvdW50ZXJzICov
DQotCWlmICghYykgew0KLQkJZm9yX2VhY2hfdGFzayhwKQ0KLQkJCXAtPmNv
dW50ZXIgPSAocC0+Y291bnRlciA+PiAxKSArIHAtPnByaW9yaXR5Ow0KKwlu
ZXh0LT5sYXN0X3J1biA9IGppZmZpZXM7DQorCS8qIFBvc3NpYmx5IGRlbW90
ZSB0aGUgcHJldmlvdXMgdGFzayAqLw0KKwlpZiAocHJldi0+cGlkICYmIG5l
eHQtPnBpZCAmJg0KKwkgICAgcHJldi0+bmV4dF9ydW4gJiYNCisJICAgICFw
cmV2LT5jb3VudGVyICYmDQorCSAgICAobmV4dCAhPSBwcmV2KSAmJg0KKwkg
ICAgKHEgPT0gcHJldi0+cnVuX3EpICYmDQorCSAgICAocSA8IE5SX1JVTl9R
VUVVRVMgLSAyKSAmJg0KKwkgICAgKHByZXYtPnBvbGljeSA9PSBTQ0hFRF9B
REFQVElWRSkpDQorCXsNCisJICAgICAgICBjbGkoKTsNCisJCXN3aXRjaF9y
dW5xdWV1ZXMocHJldiwgcHJldi0+cnVuX3EgKyAxKTsNCisJCXN0aSgpOw0K
IAl9DQorDQogI2lmZGVmIF9fU01QX18NCiAJLyoNCiAJICoJQWxsb2NhdGUg
cHJvY2VzcyB0byBDUFUNCiAJICovDQotCSANCi0JIG5leHQtPnByb2Nlc3Nv
ciA9IHRoaXNfY3B1Ow0KLQkgbmV4dC0+bGFzdF9wcm9jZXNzb3IgPSB0aGlz
X2NwdTsNCisJbmV4dC0+cHJvY2Vzc29yID0gdGhpc19jcHU7DQorCW5leHQt
Pmxhc3RfcHJvY2Vzc29yID0gdGhpc19jcHU7DQogI2VuZGlmCSANCiAjaWZk
ZWYgX19TTVBfUFJPRl9fIA0KIAkvKiBtYXJrIHByb2Nlc3NvciBydW5uaW5n
IGFuIGlkbGUgdGhyZWFkICovDQpAQCAtMTEyMSw3ICsxMjE0LDcgQEANCiAJ
ZG9fcHJvY2Vzc190aW1lcyhwLCB1c2VyLCBzeXN0ZW0pOw0KIAlkb19pdF92
aXJ0KHAsIHVzZXIpOw0KIAlkb19pdF9wcm9mKHAsIHRpY2tzKTsNCi19CQ0K
K30NCiANCiBzdGF0aWMgdm9pZCB1cGRhdGVfcHJvY2Vzc190aW1lcyh1bnNp
Z25lZCBsb25nIHRpY2tzLCB1bnNpZ25lZCBsb25nIHN5c3RlbSkNCiB7DQpA
QCAtMTEzNCw3ICsxMjI3LDcgQEANCiAJCQlwLT5jb3VudGVyID0gMDsNCiAJ
CQluZWVkX3Jlc2NoZWQgPSAxOw0KIAkJfQ0KLQkJaWYgKHAtPnByaW9yaXR5
IDwgREVGX1BSSU9SSVRZKQ0KKwkJaWYgKHAtPnJ1bl9xID4gREVGX1JVTl9R
VUVVRSkNCiAJCQlrc3RhdC5jcHVfbmljZSArPSB1c2VyOw0KIAkJZWxzZQ0K
IAkJCWtzdGF0LmNwdV91c2VyICs9IHVzZXI7DQpAQCAtMTM4MCwxNiArMTQ3
MywxNiBAQA0KIAlpZiAocG9saWN5IDwgMCkNCiAJCXBvbGljeSA9IHAtPnBv
bGljeTsNCiAJZWxzZSBpZiAocG9saWN5ICE9IFNDSEVEX0ZJRk8gJiYgcG9s
aWN5ICE9IFNDSEVEX1JSICYmDQotCQkgcG9saWN5ICE9IFNDSEVEX09USEVS
KQ0KKwkJIHBvbGljeSAhPSBTQ0hFRF9BREFQVElWRSkNCiAJCXJldHVybiAt
RUlOVkFMOw0KIAkNCiAJLyoNCiAJICogVmFsaWQgcHJpb3JpdGllcyBmb3Ig
U0NIRURfRklGTyBhbmQgU0NIRURfUlIgYXJlIDEuLjk5LCB2YWxpZA0KLQkg
KiBwcmlvcml0eSBmb3IgU0NIRURfT1RIRVIgaXMgMC4NCisJICogcHJpb3Jp
dHkgZm9yIFNDSEVEX0FEQVBUSVZFIGlzIDAuDQogCSAqLw0KIAlpZiAobHAu
c2NoZWRfcHJpb3JpdHkgPCAwIHx8IGxwLnNjaGVkX3ByaW9yaXR5ID4gOTkp
DQogCQlyZXR1cm4gLUVJTlZBTDsNCi0JaWYgKChwb2xpY3kgPT0gU0NIRURf
T1RIRVIpICE9IChscC5zY2hlZF9wcmlvcml0eSA9PSAwKSkNCisJaWYgKChw
b2xpY3kgPT0gU0NIRURfQURBUFRJVkUpICE9IChscC5zY2hlZF9wcmlvcml0
eSA9PSAwKSkNCiAJCXJldHVybiAtRUlOVkFMOw0KIA0KIAlpZiAoKHBvbGlj
eSA9PSBTQ0hFRF9GSUZPIHx8IHBvbGljeSA9PSBTQ0hFRF9SUikgJiYgIXN1
c2VyKCkpDQpAQCAtMTQwMCw5ICsxNDkzLDEwIEBADQogDQogCXAtPnBvbGlj
eSA9IHBvbGljeTsNCiAJcC0+cnRfcHJpb3JpdHkgPSBscC5zY2hlZF9wcmlv
cml0eTsNCisJcC0+cnVuX3Ffc3cgPSBwLT5ydW5fcV9taW47DQogCWNsaSgp
Ow0KLQlpZiAocC0+bmV4dF9ydW4pDQotCQltb3ZlX2xhc3RfcnVucXVldWUo
cCk7DQorICAgICAgICBpZiAocC0+bmV4dF9ydW4pDQorICAgICAgICAgICAg
ICAgIHJ1bl9xW3AtPnJ1bl9xXSA9IHAtPm5leHRfcnVuOw0KIAlzdGkoKTsN
CiAJbmVlZF9yZXNjaGVkID0gMTsNCiAJcmV0dXJuIDA7DQpAQCAtMTQ2MCwx
MCArMTU1NCwxMCBAQA0KIHsNCiAJY2xpKCk7DQogCWlmIChjdXJyZW50LT5u
ZXh0X3J1bikgew0KLQkJbW92ZV9sYXN0X3J1bnF1ZXVlKGN1cnJlbnQpOyAN
Ci0JCWN1cnJlbnQtPmNvdW50ZXIgPSAwOw0KLQkJbmVlZF9yZXNjaGVkID0g
MTsNCi0JfQ0KKyAgICAgICAgICAgICAgICBydW5fcVtjdXJyZW50LT5ydW5f
cV0gPSBjdXJyZW50LT5uZXh0X3J1bjsNCisgICAgICAgICAgICAgICAgY3Vy
cmVudC0+Y291bnRlciA9IDA7DQorICAgICAgICAgICAgICAgIG5lZWRfcmVz
Y2hlZCA9IDE7DQorICAgICAgICB9DQogCXN0aSgpOw0KIAlyZXR1cm4gMDsN
CiB9DQpAQCAtMTQ3MSwxMSArMTU2NSwxMSBAQA0KIGFzbWxpbmthZ2UgaW50
IHN5c19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4KGludCBwb2xpY3kpDQogew0K
IAlzd2l0Y2ggKHBvbGljeSkgew0KKwkgICAgICBjYXNlIFNDSEVEX0FEQVBU
SVZFOg0KKwkJcmV0dXJuIDA7DQogCSAgICAgIGNhc2UgU0NIRURfRklGTzoN
CiAJICAgICAgY2FzZSBTQ0hFRF9SUjoNCiAJCXJldHVybiA5OTsNCi0JICAg
ICAgY2FzZSBTQ0hFRF9PVEhFUjoNCi0JCXJldHVybiAwOw0KIAl9DQogDQog
CXJldHVybiAtRUlOVkFMOw0KQEAgLTE0ODQsMTEgKzE1NzgsMTEgQEANCiBh
c21saW5rYWdlIGludCBzeXNfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbihpbnQg
cG9saWN5KQ0KIHsNCiAJc3dpdGNoIChwb2xpY3kpIHsNCisJICAgICAgY2Fz
ZSBTQ0hFRF9BREFQVElWRToNCisJCXJldHVybiAwOw0KIAkgICAgICBjYXNl
IFNDSEVEX0ZJRk86DQogCSAgICAgIGNhc2UgU0NIRURfUlI6DQogCQlyZXR1
cm4gMTsNCi0JICAgICAgY2FzZSBTQ0hFRF9PVEhFUjoNCi0JCXJldHVybiAw
Ow0KIAl9DQogDQogCXJldHVybiAtRUlOVkFMOw0KQEAgLTE1NTUsNyArMTY0
OSw3IEBADQogCQlyZXR1cm4gLUVJTlZBTDsNCiANCiAJaWYgKHQudHZfc2Vj
ID09IDAgJiYgdC50dl9uc2VjIDw9IDIwMDAwMDBMICYmDQotCSAgICBjdXJy
ZW50LT5wb2xpY3kgIT0gU0NIRURfT1RIRVIpIHsNCisJICAgIGN1cnJlbnQt
PnBvbGljeSAhPSBTQ0hFRF9BREFQVElWRSkgew0KIAkJLyoNCiAJCSAqIFNo
b3J0IGRlbGF5IHJlcXVlc3RzIHVwIHRvIDIgbXMgd2lsbCBiZSBoYW5kbGVk
IHdpdGgNCiAJCSAqIGhpZ2ggcHJlY2lzaW9uIGJ5IGEgYnVzeSB3YWl0IGZv
ciBhbGwgcmVhbC10aW1lIHByb2Nlc3Nlcy4NCkBAIC0xNjQ1LDcgKzE3Mzks
NyBAQA0KIAkgKglXZSBoYXZlIHRvIGRvIGEgbGl0dGxlIG1hZ2ljIHRvIGdl
dCB0aGUgZmlyc3QNCiAJICoJcHJvY2VzcyByaWdodCBpbiBTTVAgbW9kZS4N
CiAJICovDQotCWludCBjcHU9c21wX3Byb2Nlc3Nvcl9pZCgpOw0KKwlpbnQg
aSwgY3B1PXNtcF9wcm9jZXNzb3JfaWQoKTsNCiAjaWZuZGVmIF9fU01QX18J
DQogCWN1cnJlbnRfc2V0W2NwdV09JmluaXRfdGFzazsNCiAjZWxzZQ0KQEAg
LTE2NTYsNCArMTc1MCw4IEBADQogCWluaXRfYmgoVElNRVJfQkgsIHRpbWVy
X2JoKTsNCiAJaW5pdF9iaChUUVVFVUVfQkgsIHRxdWV1ZV9iaCk7DQogCWlu
aXRfYmgoSU1NRURJQVRFX0JILCBpbW1lZGlhdGVfYmgpOw0KKw0KKwlmb3Ig
KGkgPSAwOyBpIDwgTlJfUlVOX1FVRVVFUzsgaSsrKQ0KKwkgICAgICAgIHJ1
bl9xW2ldID0gTlVMTDsNCisJcHJpbnRrKCJRTlgtc3R5bGUgc2NoZWR1bGlu
ZyB2MS4wMiA8YW1ja2VlQHBvYm94ZXMuY29tPlxuIik7DQogfQ0KLS0tIGxp
bnV4L2tlcm5lbC9mb3JrLmMub3JpZwlNb24gSnVsIDI4IDEzOjEzOjM1IDE5
OTcNCisrKyBsaW51eC9rZXJuZWwvZm9yay5jCU1vbiBKdWwgMjggMTQ6MDE6
MzkgMTk5Nw0KQEAgLTI2NCw2ICsyNjQsOCBAQA0KIAlwLT5sb2NrX2RlcHRo
ID0gMTsNCiAjZW5kaWYNCiAJcC0+c3RhcnRfdGltZSA9IGppZmZpZXM7DQor
ICAgICAgICBwLT5wb2xpY3kgPSBTQ0hFRF9BREFQVElWRTsNCisJcC0+cnVu
X3Ffc3cgPSBOUl9SVU5fUVVFVUVTOw0KIAl0YXNrW25yXSA9IHA7DQogCVNF
VF9MSU5LUyhwKTsNCiAJbnJfdGFza3MrKzsNCi0tLSBsaW51eC9pbmNsdWRl
L2xpbnV4L3NjaGVkLmgub3JpZwlNb24gSnVsIDI4IDEzOjE2OjExIDE5OTcN
CisrKyBsaW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgJTW9uIEp1bCAyOCAw
MjoxNjo1NCAxOTk3DQpAQCAtODcsMTAgKzg3LDEzIEBADQogI2RlZmluZSBU
QVNLX1NUT1BQRUQJCTQNCiAjZGVmaW5lIFRBU0tfU1dBUFBJTkcJCTUNCiAN
CisjZGVmaW5lIE5SX1JVTl9RVUVVRVMJCTMyCS8qIHRoZSBzY2hlZHVsZXIg
dXNlcyAzMiBydW4tcXVldWVzICovDQorI2RlZmluZSBERUZfUlVOX1FVRVVF
CQkxNQkvKiBkZWZhdWx0IHJ1bi1xdWV1ZSAqLw0KKw0KIC8qDQogICogU2No
ZWR1bGluZyBwb2xpY2llcw0KICAqLw0KLSNkZWZpbmUgU0NIRURfT1RIRVIJ
CTANCisjZGVmaW5lIFNDSEVEX0FEQVBUSVZFCQkwDQogI2RlZmluZSBTQ0hF
RF9GSUZPCQkxDQogI2RlZmluZSBTQ0hFRF9SUgkJMg0KIA0KQEAgLTI0NCw2
ICsyNDcsOSBAQA0KIAlzdHJ1Y3QgbW1fc3RydWN0ICptbTsNCiAvKiBzaWdu
YWwgaGFuZGxlcnMgKi8NCiAJc3RydWN0IHNpZ25hbF9zdHJ1Y3QgKnNpZzsN
CisvKiBRTlgtc3R5bGUgc2NoZWR1bGVyICovDQorICAgICAgICB1bnNpZ25l
ZCBsb25nIGxhc3RfcnVuOw0KKyAgICAgICAgdW5zaWduZWQgaW50IHJ1bl9x
LCBydW5fcV9taW4sIHJ1bl9xX3N3Ow0KICNpZmRlZiBfX1NNUF9fDQogCWlu
dCBwcm9jZXNzb3I7DQogCWludCBsYXN0X3Byb2Nlc3NvcjsNCkBAIC0yNzUs
NyArMjgxLDcgQEANCiAgKi8NCiAjZGVmaW5lIF9TVEtfTElNCSg4KjEwMjQq
MTAyNCkNCiANCi0jZGVmaW5lIERFRl9QUklPUklUWQkoMjAqSFovMTAwKQkv
KiAyMDAgbXMgdGltZSBzbGljZXMgKi8NCisjZGVmaW5lIERFRl9QUklPUklU
WQkoMjAwKkhaLzEwMDApCS8qIDIwMCBtcyB0aW1lIHNsaWNlcyAqLw0KIA0K
IC8qDQogICogIElOSVRfVEFTSyBpcyB1c2VkIHRvIHNldCB1cCB0aGUgZmly
c3QgdGFzayB0YWJsZSwgdG91Y2ggYXQNCkBAIC0yOTMsNyArMjk5LDcgQEAN
CiAvKiBzdXBwbCBncnBzKi8ge05PR1JPVVAsfSwgXA0KIC8qIHByb2MgbGlu
a3MqLyAmaW5pdF90YXNrLCZpbml0X3Rhc2ssTlVMTCxOVUxMLE5VTEwsTlVM
TCwgXA0KIC8qIHVpZCBldGMgKi8JMCwwLDAsMCwwLDAsMCwwLCBcDQotLyog
dGltZW91dCAqLwkwLFNDSEVEX09USEVSLDAsMCwwLDAsMCwwLDAsIFwNCisv
KiB0aW1lb3V0ICovCTAsU0NIRURfQURBUFRJVkUsMCwwLDAsMCwwLDAsMCwg
XA0KIC8qIHRpbWVyICovCXsgTlVMTCwgTlVMTCwgMCwgMCwgaXRfcmVhbF9m
biB9LCBcDQogLyogdXRpbWUgKi8JMCwwLDAsMCwwLCBcDQogLyogZmx0ICov
CTAsMCwwLDAsMCwwLCBcDQpAQCAtMzA5LDYgKzMxNSw3IEBADQogLyogZmls
ZXMgKi8JJmluaXRfZmlsZXMsIFwNCiAvKiBtbSAqLwkmaW5pdF9tbSwgXA0K
IC8qIHNpZ25hbHMgKi8JJmluaXRfc2lnbmFscywgXA0KKy8qIFFOWCBzY2hl
ZCAqLyAwLCBERUZfUlVOX1FVRVVFLCBERUZfUlVOX1FVRVVFLCBOUl9SVU5f
UVVFVUVTIFwNCiB9DQogDQogZXh0ZXJuIHN0cnVjdCAgIG1tX3N0cnVjdCBp
bml0X21tOw0K
--12583424-1887318598-870142240=:662--