Re: [f2fs-dev] [PATCH v6] f2fs: support dynamic reserve/release for device aliasing

Daeho Jeong <[email protected]> Mon, 3 Aug 2026 09:18:33 -0700
Newsgroups net.sourceforge.lists.linux-f2fs-devel,org.kernel.vger.linux-kernel
Message-ID <CACOAw_w_ksEhi+56ENJqq9GTpPZvJhR3Q7v9GCVTaNQkf7YWnQ@mail.gmail.com>
T24gU3VuLCBBdWcgMiwgMjAyNiBhdCA3OjAw4oCvUE0gQ2hhbyBZdSA8Y2hhb0BrZXJuZWwub3Jn
PiB3cm90ZToKPgo+IE9uIDcvMzAvMjYgMjM6NDYsIERhZWhvIEplb25nIHdyb3RlOgo+ID4gRnJv
bTogRGFlaG8gSmVvbmcgPGRhZWhvamVvbmdAZ29vZ2xlLmNvbT4KPiA+Cj4gPiBUaGlzIHBhdGNo
IGFkZHMgYSBkeW5hbWljIG1hbmFnZW1lbnQgZmVhdHVyZSB0byB0aGUgZXhpc3RpbmcgZGV2aWNl
Cj4gPiBhbGlhc2luZyBmdW5jdGlvbmFsaXR5LiBJdCBhbGxvd3MgdXNlcnMgdG8gZHluYW1pY2Fs
bHkgcmVzZXJ2ZSBvcgo+ID4gcmVsZWFzZSBzcGVjaWZpYyBkZXZpY2VzIGZyb20gdGhlIGZpbGVz
eXN0ZW0ncyBmcmVlIHBvb2wgYXQgcnVudGltZQo+ID4gdGhyb3VnaCBuZXcgaW9jdGxzLgo+ID4K
PiA+IFRvIHN1cHBvcnQgdGhpcywgdGhyZWUgbmV3IGlvY3RscyBhcmUgaW50cm9kdWNlZDoKPiA+
IC0gRjJGU19JT0NfUkVTRVJWRV9ERVZfQUxJQVM6IFRoaXMgcmVjbGFpbXMgdGhlIHNwYWNlIG9j
Y3VwaWVkIGJ5IGEKPiA+ICAgIGRldmljZSBhbGlhc2luZyBmaWxlLiBJdCBmaXJzdCBwZXJmb3Jt
cyBhIGNhcGFjaXR5IGNoZWNrLCByZXNldHMgR0MKPiA+ICAgIHZpY3RpbSBpbmZvcm1hdGlvbiBm
b3IgdGhlIHRhcmdldCByYW5nZSwgbWFya3MgdGhlIHNlZ21lbnRzIGFzIGluLXVzZQo+ID4gICAg
dG8gcHJldmVudCBuZXcgYWxsb2NhdGlvbnMsIGFuZCB0aGVuIHRyaWdnZXJzIEdDIHRvIG1pZ3Jh
dGUgZXhpc3RpbmcKPiA+ICAgIHZhbGlkIGRhdGEgb3V0IG9mIHRoZSByYW5nZS4gRmluYWxseSwg
aXQgcmVzZXJ2ZXMgdGhlc2UgYmxvY2tzIGluIHRoZQo+ID4gICAgU0lUIHRvIGVmZmVjdGl2ZWx5
IGV4Y2x1ZGUgdGhlIGRldmljZSBmcm9tIHRoZSB1c2FibGUgY2FwYWNpdHkuCj4gPgo+ID4gLSBG
MkZTX0lPQ19SRUxFQVNFX0RFVl9BTElBUzogVGhpcyByZWxlYXNlcyB0aGUgcmVzZXJ2ZWQgc3Bh
Y2Ugb2YgYQo+ID4gICAgcHJldmlvdXNseSByZXNlcnZlZCBkZXZpY2UgYWxpYXNpbmcgZmlsZS4g
SXQgdHJ1bmNhdGVzIHRoZSBibG9ja3MKPiA+ICAgIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmlsZSwg
d2hpY2ggbWFrZXMgdGhlbSBhdmFpbGFibGUgZm9yIGdlbmVyYWwKPiA+ICAgIGZpbGVzeXN0ZW0g
YWxsb2NhdGlvbiBhZ2Fpbi4KPiA+Cj4gPiAtIEYyRlNfSU9DX0dFVF9ERVZfQUxJQVNfU1RBVFVT
OiBUaGlzIHJldHJpZXZlcyB0aGUgY3VycmVudCBhbGlhc2luZwo+ID4gICAgc3RhdHVzIG9mIGEg
ZGV2aWNlIGFsaWFzaW5nIGZpbGUsIHJldHVybmluZyB3aGV0aGVyIHRoZSBmaWxlIGlzCj4gPiAg
ICByZWxlYXNlZCAoaW5hY3RpdmUgYWxpYXMpIG9yIHJlc2VydmVkIChhY3RpdmUgYWxpYXMsIHdp
dGggYmxvY2tzCj4gPiAgICBmdWxseSBhbGxvY2F0ZWQgb24gdGhlIGRldmljZSkuCj4gPgo+ID4g
U2lnbmVkLW9mZi1ieTogRGFlaG8gSmVvbmcgPGRhZWhvamVvbmdAZ29vZ2xlLmNvbT4KPiA+IC0t
LQo+ID4gdjY6IGZpeGVkIGR1cGxpY2F0ZWQgYmxvY2sgcmVzZXJ2YXRpb25zIGFuZCByYWNpbmcg
dy8gbW1hcC4KPiA+ICAgICAgYWRkZWQgdGhlIGV4dGVudCBhbGlnbm1lbnQgY2hlY2sgZm9yIGRl
dmljZSBhbGlhc2luZyBhcmVhcy4KPiA+IHY1OiBwcmV2ZW50ZWQgbmV3IHNlZ21lbnQgYWxsb2Nh
dGlvbiBvbiBkZXZpY2VzIHVuZGVyZ29pbmcgcmVzZXJ2YXRpb24KPiA+ICAgICAgb3Igd2l0aCBh
Y3RpdmUgYWxpYXNlcy4KPiA+ICAgICAgdXNlZCBpbi1tZW1vcnkgc3RydWN0IHRvIHJlc2VydmUg
YmxvY2tzIGZvciBkZXZpY2UgYWxpYXNpbmcuCj4gPiAgICAgIGNsZWFyZWQgcHJlZnJlZSAoUFJF
KSBkaXJ0eSBzZWdtZW50IGJpdG1hcC4KPiA+IHY0OiByZW5hbWVkIGludGVyZmFjZXMuCj4gPiAg
ICAgIGZpeGVkIHJhY2UgY29uZGl0aW9ucyBiZXR3ZWVuIGNoZWNrcG9pbnQ9ZGlzYWJsZSBtb3Vu
dCBhbmQgaW9jdGxzLgo+ID4gICAgICByZWZhY3RvcmVkIHNlZ21lbnQgcmVzZXJ2YXRpb24gcGFy
dC4KPiA+ICAgICAgbW9kaWZpZWQgbG9jayB1c2FnZS4KPiA+IHYzOiBhZGQgQ0FQX1NZU19BRE1J
TiBhbmQgY2hlY2twb2ludD1kaXNhYmxlZCBjaGVjay4KPiA+ICAgICAgcmVtb3ZlIGEgZjJmcyBz
cGVjaWZpYyBmbGFnIGV4cG9zZWQgd2l0aCBnZXRmbGFncy4KPiA+IHYyOiBwcmV2ZW50IG9wZXJh
dGlvbnMgZHVyaW5nIGNoZWNrcG9pbnQ9ZGlzYWJsZWQuCj4gPiAtLS0KPiA+IC0tLQo+ID4gICBE
b2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2YyZnMucnN0IHwgIDM1ICsrKysKPiA+ICAgZnMvZjJm
cy9kYXRhLmMgICAgICAgICAgICAgICAgICAgICB8ICAgNCArLQo+ID4gICBmcy9mMmZzL2V4dGVu
dF9jYWNoZS5jICAgICAgICAgICAgIHwgICA3ICsKPiA+ICAgZnMvZjJmcy9mMmZzLmggICAgICAg
ICAgICAgICAgICAgICB8ICAxOSArLQo+ID4gICBmcy9mMmZzL2ZpbGUuYyAgICAgICAgICAgICAg
ICAgICAgIHwgMjczICsrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4gPiAgIGZzL2YyZnMv
Z2MuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMzAgKystLQo+ID4gICBmcy9mMmZzL25hbWVp
LmMgICAgICAgICAgICAgICAgICAgIHwgIDE0ICsrCj4gPiAgIGZzL2YyZnMvc2VnbWVudC5jICAg
ICAgICAgICAgICAgICAgfCAxNzYgKysrKysrKysrKysrKy0tLS0tLQo+ID4gICBmcy9mMmZzL3Nl
Z21lbnQuaCAgICAgICAgICAgICAgICAgIHwgIDIyICsrKwo+ID4gICBmcy9mMmZzL3N1cGVyLmMg
ICAgICAgICAgICAgICAgICAgIHwgIDM2ICsrKysKPiA+ICAgaW5jbHVkZS91YXBpL2xpbnV4L2Yy
ZnMuaCAgICAgICAgICB8ICAgNyArCj4gPiAgIDExIGZpbGVzIGNoYW5nZWQsIDU1NSBpbnNlcnRp
b25zKCspLCA2OCBkZWxldGlvbnMoLSkKPiA+Cj4gPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlv
bi9maWxlc3lzdGVtcy9mMmZzLnJzdCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZjJmcy5y
c3QKPiA+IGluZGV4IDhjNGExNGFlNDQ0Zi4uMWE1ZmQ0YWZlNjA5IDEwMDY0NAo+ID4gLS0tIGEv
RG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mMmZzLnJzdAo+ID4gKysrIGIvRG9jdW1lbnRhdGlv
bi9maWxlc3lzdGVtcy9mMmZzLnJzdAo+ID4gQEAgLTEwNDUsNiArMTA0NSw0MSBAQCBTbywgdGhl
IGtleSBpZGVhIGlzLCB1c2VyIGNhbiBkbyBhbnkgZmlsZSBvcGVyYXRpb25zIG9uIC9kZXYvdmRj
LCBhbmQKPiA+ICAgcmVjbGFpbSB0aGUgc3BhY2UgYWZ0ZXIgdGhlIHVzZSwgd2hpbGUgdGhlIHNw
YWNlIGlzIGNvdW50ZWQgYXMgL2RhdGEuCj4gPiAgIFRoYXQgZG9lc24ndCByZXF1aXJlIG1vZGlm
eWluZyBwYXJ0aXRpb24gc2l6ZSBhbmQgZmlsZXN5c3RlbSBmb3JtYXQuCj4gPgo+ID4gK0R5bmFt
aWMgRGV2aWNlIEFsaWFzaW5nIE1hbmFnZW1lbnQKPiA+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCj4gPiArCj4gPiArSW4gYWRkaXRpb24gdG8gc3RhdGljIGRldmljZSBhbGlh
c2luZyBieSBkZWxldGluZyB0aGUgYWxpYXNpbmcgZmlsZSwgRjJGUwo+ID4gK3N1cHBvcnRzIGR5
bmFtaWMgbWFuYWdlbWVudCBvZiBkZXZpY2UgYWxpYXNpbmcuIFRoaXMgbWVjaGFuaXNtIGFsbG93
cyB0aGUgc3lzdGVtCj4gPiArdG8gZHluYW1pY2FsbHkgdHJhbnNpdGlvbiBwYXJ0aXRpb24gb3du
ZXJzaGlwIGJldHdlZW4gRjJGUyB1c2VyZGF0YSBhbmQgZXh0ZXJuYWwKPiA+ICtlbnRpdGllcyAo
ZS5nLiwgelJBTSwgcmF3IHBhcnRpdGlvbikgYmFzZWQgb24gc3lzdGVtIHJlcXVpcmVtZW50cyB3
aXRob3V0Cj4gPiArZGVsZXRpbmcgdGhlIG1hc3RlciBhbGlhc2luZyBmaWxlIG9yIHJlcXVpcmlu
ZyB1bm1vdW50L3JlbW91bnQuCj4gPiArCj4gPiArVGhlIG1hc3RlciBhbGlhc2luZyBmaWxlIGlz
IGNyZWF0ZWQgZHVyaW5nIHRoZSBpbml0aWFsIGZvcm1hdCBvZiB0aGUgZmlsZSBzeXN0ZW0KPiA+
ICthbmQgcmVtYWlucyBhcyBhIHBlcnNpc3RlbnQgY29udHJvbCBlbnRpdHkgKGlvY3RsIGdhdGV3
YXkpIGluIHRoZSByb290IGRpcmVjdG9yeS4KPiA+ICsKPiA+ICstIFBhcnRpdGlvbiBSZXNlcnZh
dGlvbiAoSW4tc2VydmljZSB0byBBbGlhc2VkKQo+ID4gKyAgV2hlbiBhIHNwZWNpZmljIHBhcnRp
dGlvbiBuZWVkcyB0byBiZSBkZWRpY2F0ZWQgdG8gZXh0ZXJuYWwgc2VydmljZXMgKGUuZy4sIHpS
QU0pLAo+ID4gKyAgYSB1c2VyIGNhbiByZXNlcnZlIHRoZSBkZXZpY2UgYWxpYXMgcmFuZ2Ugdmlh
IGlvY3RsLiBUaGUga2VybmVsIHJlc2V0cyBHQyB2aWN0aW0KPiA+ICsgIGluZm9ybWF0aW9uIGZv
ciB0aGUgdGFyZ2V0IHJhbmdlLCBtYXJrcyBzZWdtZW50cyBhcyBpbi11c2UgdG8gcHJldmVudCBu
ZXcKPiA+ICsgIGFsbG9jYXRpb25zLCBhbmQgdHJpZ2dlcnMgZm9yY2VkIEdDIHRvIG1pZ3JhdGUg
ZXhpc3RpbmcgdmFsaWQgZGF0YSBvdXQgb2YgdGhlCj4gPiArICByYW5nZS4gRmluYWxseSwgaXQg
cmVzZXJ2ZXMgdGhlc2UgYmxvY2tzIGluIHRoZSBTSVQgdG8gZWZmZWN0aXZlbHkgZXhjbHVkZSB0
aGUKPiA+ICsgIGRldmljZSBmcm9tIHRoZSB1c2FibGUgY2FwYWNpdHkuCj4gPiArCj4gPiArLSBQ
YXJ0aXRpb24gUmVsZWFzZSAoQWxpYXNlZCB0byBJbi1zZXJ2aWNlKQo+ID4gKyAgV2hlbiBleHRl
cm5hbCB1c2FnZSBjb25jbHVkZXMsIHRoZSBzcGFjZSBpcyByZWNsYWltZWQgbm90IGJ5IGRlbGV0
aW5nIHRoZSBmaWxlLAo+ID4gKyAgYnV0IHRocm91Z2ggdGhlIHJlbGVhc2UgaW9jdGwuIFRoZSBr
ZXJuZWwgdHJ1bmNhdGVzIGJsb2NrcyBhc3NvY2lhdGVkIHdpdGgKPiA+ICsgIHRoZSBmaWxlLCBy
ZWxlYXNpbmcgdGhlbSBiYWNrIHRvIGdlbmVyYWwgZmlsZXN5c3RlbSBhbGxvY2F0aW9uLgo+ID4g
Kwo+ID4gKy4uIGNvZGUtYmxvY2s6Ogo+ID4gKwo+ID4gKyAgICMgZjJmc19pbyBkZXZfYWxpYXMg
cmVsZWFzZSAvbW50L2YyZnMvdmRjLmZpbGUKPiA+ICsgICAjIGRmIC1oCj4gPiArICAgL2Rldi92
ZGIgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjRHICA3NTNNICAgNjRHICAgMiUgL21udC9m
MmZzCj4gPiArCj4gPiArICAgIyBmMmZzX2lvIGRldl9hbGlhcyByZXNlcnZlIC9tbnQvZjJmcy92
ZGMuZmlsZQo+ID4gKyAgICMgZGYgLWgKPiA+ICsgICAvZGV2L3ZkYiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA2NEcgICAzM0cgICAzMkcgIDUyJSAvbW50L2YyZnMKPiA+ICsKPiA+ICAgUGVy
LWZpbGUgUmVhZC1Pbmx5IExhcmdlIEZvbGlvIFN1cHBvcnQKPiA+ICAgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+Cj4gPiBkaWZmIC0tZ2l0IGEvZnMvZjJmcy9kYXRh
LmMgYi9mcy9mMmZzL2RhdGEuYwo+ID4gaW5kZXggYWMxY2Y0ZGUzZDYyLi44OTJkNTk0MDQ4Yjcg
MTAwNjQ0Cj4gPiAtLS0gYS9mcy9mMmZzL2RhdGEuYwo+ID4gKysrIGIvZnMvZjJmcy9kYXRhLmMK
PiA+IEBAIC0xMjcwLDcgKzEyNzAsNyBAQCBpbnQgZjJmc19yZXNlcnZlX25ld19ibG9ja3Moc3Ry
dWN0IGRub2RlX29mX2RhdGEgKmRuLCBibGtjbnRfdCBjb3VudCkKPiA+Cj4gPiAgICAgICBpZiAo
dW5saWtlbHkoaXNfaW5vZGVfZmxhZ19zZXQoZG4tPmlub2RlLCBGSV9OT19BTExPQykpKQo+ID4g
ICAgICAgICAgICAgICByZXR1cm4gLUVQRVJNOwo+ID4gLSAgICAgZXJyID0gaW5jX3ZhbGlkX2Js
b2NrX2NvdW50KHNiaSwgZG4tPmlub2RlLCAmY291bnQsIHRydWUpOwo+ID4gKyAgICAgZXJyID0g
aW5jX3ZhbGlkX2Jsb2NrX2NvdW50KHNiaSwgZG4tPmlub2RlLCAmY291bnQsIHRydWUsIGZhbHNl
KTsKPiA+ICAgICAgIGlmICh1bmxpa2VseShlcnIpKQo+ID4gICAgICAgICAgICAgICByZXR1cm4g
ZXJyOwo+ID4KPiA+IEBAIC0xNTQyLDcgKzE1NDIsNyBAQCBzdGF0aWMgaW50IF9fYWxsb2NhdGVf
ZGF0YV9ibG9jayhzdHJ1Y3QgZG5vZGVfb2ZfZGF0YSAqZG4sIGludCBzZWdfdHlwZSkKPiA+Cj4g
PiAgICAgICBkbi0+ZGF0YV9ibGthZGRyID0gZjJmc19kYXRhX2Jsa2FkZHIoZG4pOwo+ID4gICAg
ICAgaWYgKGRuLT5kYXRhX2Jsa2FkZHIgPT0gTlVMTF9BRERSKSB7Cj4gPiAtICAgICAgICAgICAg
IGVyciA9IGluY192YWxpZF9ibG9ja19jb3VudChzYmksIGRuLT5pbm9kZSwgJmNvdW50LCB0cnVl
KTsKPiA+ICsgICAgICAgICAgICAgZXJyID0gaW5jX3ZhbGlkX2Jsb2NrX2NvdW50KHNiaSwgZG4t
Pmlub2RlLCAmY291bnQsIHRydWUsIGZhbHNlKTsKPiA+ICAgICAgICAgICAgICAgaWYgKHVubGlr
ZWx5KGVycikpCj4gPiAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKPiA+ICAgICAg
IH0KPiA+IGRpZmYgLS1naXQgYS9mcy9mMmZzL2V4dGVudF9jYWNoZS5jIGIvZnMvZjJmcy9leHRl
bnRfY2FjaGUuYwo+ID4gaW5kZXggNjFmNmI5NzE0MzY2Li4zYTczN2RiMGM5ZTEgMTAwNjQ0Cj4g
PiAtLS0gYS9mcy9mMmZzL2V4dGVudF9jYWNoZS5jCj4gPiArKysgYi9mcy9mMmZzL2V4dGVudF9j
YWNoZS5jCj4gPiBAQCAtNjIsNiArNjIsMTMgQEAgYm9vbCBzYW5pdHlfY2hlY2tfZXh0ZW50X2Nh
Y2hlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmb2xpbyAqaWZvbGlvKQo+ID4gICAgICAg
ICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgaW5vZGUtPmlfaW5vLCBlaS5ibGssIGVpLmZv
ZnMsIGVpLmxlbik7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwo+ID4g
ICAgICAgICAgICAgICB9Cj4gPiArCj4gPiArICAgICAgICAgICAgIGlmICgoZWkuYmxrICUgQkxL
U19QRVJfU0VDKHNiaSkpIHx8IChlaS5sZW4gJSBCTEtTX1BFUl9TRUMoc2JpKSkpIHsKPiA+ICsg
ICAgICAgICAgICAgICAgICAgICBmMmZzX3dhcm4oc2JpLCAiJXM6IGRldmljZSBhbGlhcyBpbm9k
ZSAoaW5vPSVsbHgpJ3MgZXh0ZW50IGluZm8gWyV1LCAldSwgJXVdIGlzIG5vdCBhbGlnbmVkIHRv
IHNlY3Rpb24gc2l6ZSAldSIsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f
ZnVuY19fLCBpbm9kZS0+aV9pbm8sIGVpLmJsaywgZWkuZm9mcywgZWkubGVuLAo+ID4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBCTEtTX1BFUl9TRUMoc2JpKSk7Cj4gPiArICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwo+ID4gKyAgICAgICAgICAgICB9Cj4gPiAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwo+ID4gICAgICAgfQo+ID4KPiA+IGRpZmYgLS1naXQgYS9m
cy9mMmZzL2YyZnMuaCBiL2ZzL2YyZnMvZjJmcy5oCj4gPiBpbmRleCBmMTc3NGQ0ZTE4ZDIuLmYy
NGUzMGJiNWMzZCAxMDA2NDQKPiA+IC0tLSBhL2ZzL2YyZnMvZjJmcy5oCj4gPiArKysgYi9mcy9m
MmZzL2YyZnMuaAo+ID4gQEAgLTE0MDQsNiArMTQwNCw4IEBAIHN0cnVjdCBmMmZzX2Rldl9pbmZv
IHsKPiA+ICAgICAgIHVuc2lnbmVkIGludCB0b3RhbF9zZWdtZW50czsKPiA+ICAgICAgIGJsb2Nr
X3Qgc3RhcnRfYmxrOwo+ID4gICAgICAgYmxvY2tfdCBlbmRfYmxrOwo+ID4gKyAgICAgYm9vbCBo
YXNfYWxpYXM7Cj4gPiArICAgICBib29sIGlzX3Jlc2VydmluZzsKPiA+ICAgI2lmZGVmIENPTkZJ
R19CTEtfREVWX1pPTkVECj4gPiAgICAgICB1bnNpZ25lZCBpbnQgbnJfYmxrejsgICAgICAgICAg
IC8qIFRvdGFsIG51bWJlciBvZiB6b25lcyAqLwo+ID4gICAgICAgdW5zaWduZWQgbG9uZyAqYmxr
el9zZXE7ICAgICAgICAvKiBCaXRtYXAgaW5kaWNhdGluZyBzZXF1ZW50aWFsIHpvbmVzICovCj4g
PiBAQCAtMTg1Nyw2ICsxODU5LDcgQEAgc3RydWN0IGYyZnNfc2JfaW5mbyB7Cj4gPiAgICAgICBi
bG9ja190IGxhc3RfdmFsaWRfYmxvY2tfY291bnQ7ICAgICAgICAgLyogZm9yIHJlY292ZXJ5ICov
Cj4gPiAgICAgICBibG9ja190IHJlc2VydmVkX2Jsb2NrczsgICAgICAgICAgICAgICAgLyogY29u
ZmlndXJhYmxlIHJlc2VydmVkIGJsb2NrcyAqLwo+ID4gICAgICAgYmxvY2tfdCBjdXJyZW50X3Jl
c2VydmVkX2Jsb2NrczsgICAgICAgIC8qIGN1cnJlbnQgcmVzZXJ2ZWQgYmxvY2tzICovCj4gPiAr
ICAgICBibG9ja190IGFsaWFzX3Jlc2VydmVkX2Jsb2NrczsgICAgICAgICAgLyogcmVzZXJ2ZWQg
YmxvY2tzIGZvciBkZXZpY2UgYWxpYXMgKi8KPiA+Cj4gPiAgICAgICAvKiBBZGRpdGlvbmFsIHRy
YWNraW5nIGZvciBubyBjaGVja3BvaW50IG1vZGUgKi8KPiA+ICAgICAgIGJsb2NrX3QgdW51c2Fi
bGVfYmxvY2tfY291bnQ7ICAgICAgICAgICAvKiAjIG9mIGJsb2NrcyBzYXZlZCBieSBsYXN0IGNw
ICovCj4gPiBAQCAtMjU1OSw3ICsyNTYyLDggQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQg
Z2V0X2F2YWlsYWJsZV9ibG9ja19jb3VudChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPiAg
ICAgICBibG9ja190IGF2YWlsX3VzZXJfYmxvY2tfY291bnQ7Cj4gPgo+ID4gICAgICAgYXZhaWxf
dXNlcl9ibG9ja19jb3VudCA9IHNiaS0+dXNlcl9ibG9ja19jb3VudCAtCj4gPiAtICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNiaS0+Y3VycmVudF9yZXNlcnZlZF9ibG9ja3M7
Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNiaS0+Y3VycmVudF9y
ZXNlcnZlZF9ibG9ja3MgLQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzYmktPmFsaWFzX3Jlc2VydmVkX2Jsb2NrczsKPiA+Cj4gPiAgICAgICBpZiAodGVzdF9vcHQo
c2JpLCBSRVNFUlZFX1JPT1QpICYmICFfX2FsbG93X3Jlc2VydmVkX3Jvb3Qoc2JpLCBpbm9kZSwg
Y2FwKSkKPiA+ICAgICAgICAgICAgICAgYXZhaWxfdXNlcl9ibG9ja19jb3VudCAtPSBGMkZTX09Q
VElPTihzYmkpLnJvb3RfcmVzZXJ2ZWRfYmxvY2tzOwo+ID4gQEAgLTI1NzYsNyArMjU4MCw4IEBA
IHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGdldF9hdmFpbGFibGVfYmxvY2tfY291bnQoc3Ry
dWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4KPiA+ICAgc3RhdGljIGlubGluZSB2b2lkIGYyZnNf
aV9ibG9ja3Nfd3JpdGUoc3RydWN0IGlub2RlICosIGJsb2NrX3QsIGJvb2wsIGJvb2wpOwo+ID4g
ICBzdGF0aWMgaW5saW5lIGludCBpbmNfdmFsaWRfYmxvY2tfY291bnQoc3RydWN0IGYyZnNfc2Jf
aW5mbyAqc2JpLAo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbm9k
ZSAqaW5vZGUsIGJsa2NudF90ICpjb3VudCwgYm9vbCBwYXJ0aWFsKQo+ID4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUsIGJsa2NudF90ICpjb3VudCwK
PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHBhcnRpYWwsIGJvb2wgYWxp
YXNfcmVzZXJ2ZWQpCj4gPiAgIHsKPiA+ICAgICAgIGxvbmcgbG9uZyBkaWZmID0gMCwgcmVsZWFz
ZSA9IDA7Cj4gPiAgICAgICBibG9ja190IGF2YWlsX3VzZXJfYmxvY2tfY291bnQ7Cj4gPiBAQCAt
MjU5OSwxMCArMjYwNCwxNiBAQCBzdGF0aWMgaW5saW5lIGludCBpbmNfdmFsaWRfYmxvY2tfY291
bnQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4KPiA+ICAgICAgIHNwaW5fbG9jaygmc2Jp
LT5zdGF0X2xvY2spOwo+ID4KPiA+ICsgICAgIGlmIChhbGlhc19yZXNlcnZlZCkKPiA+ICsgICAg
ICAgICAgICAgc2JpLT5hbGlhc19yZXNlcnZlZF9ibG9ja3MgLT0gKmNvdW50Owo+ID4gKwo+ID4g
ICAgICAgYXZhaWxfdXNlcl9ibG9ja19jb3VudCA9IGdldF9hdmFpbGFibGVfYmxvY2tfY291bnQo
c2JpLCBpbm9kZSwgdHJ1ZSk7Cj4gPiAgICAgICBkaWZmID0gKGxvbmcgbG9uZylzYmktPnRvdGFs
X3ZhbGlkX2Jsb2NrX2NvdW50ICsgKmNvdW50IC0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhdmFpbF91c2VyX2Jsb2NrX2NvdW50Owo+ID4gICAgICAg
aWYgKHVubGlrZWx5KGRpZmYgPiAwKSkgewo+ID4gKyAgICAgICAgICAgICBpZiAoYWxpYXNfcmVz
ZXJ2ZWQpCj4gPiArICAgICAgICAgICAgICAgICAgICAgc2JpLT5hbGlhc19yZXNlcnZlZF9ibG9j
a3MgKz0gKmNvdW50Owo+ID4gKwo+ID4gICAgICAgICAgICAgICBpZiAoIXBhcnRpYWwpIHsKPiA+
ICAgICAgICAgICAgICAgICAgICAgICBzcGluX3VubG9jaygmc2JpLT5zdGF0X2xvY2spOwo+ID4g
ICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2UgPSAqY291bnQ7Cj4gPiBAQCAtNDAxMCw2ICs0
MDIxLDggQEAgaW50IGYyZnNfZmx1c2hfZGV2aWNlX2NhY2hlKHN0cnVjdCBmMmZzX3NiX2luZm8g
KnNiaSk7Cj4gPiAgIHZvaWQgZjJmc19kZXN0cm95X2ZsdXNoX2NtZF9jb250cm9sKHN0cnVjdCBm
MmZzX3NiX2luZm8gKnNiaSwgYm9vbCBmcmVlKTsKPiA+ICAgdm9pZCBmMmZzX2ludmFsaWRhdGVf
YmxvY2tzKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgYmxvY2tfdCBhZGRyLAo+ID4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsZW4p
Owo+ID4gK3ZvaWQgZjJmc19yZXNlcnZlX2RldmljZV9hbGlhcyhzdHJ1Y3QgZjJmc19zYl9pbmZv
ICpzYmksIGJsb2NrX3QgYWRkciwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGVuKTsKPiA+ICAgYm9vbCBmMmZzX2lzX2NoZWNr
cG9pbnRlZF9kYXRhKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgYmxvY2tfdCBibGthZGRyKTsK
PiA+ICAgaW50IGYyZnNfc3RhcnRfZGlzY2FyZF90aHJlYWQoc3RydWN0IGYyZnNfc2JfaW5mbyAq
c2JpKTsKPiA+ICAgdm9pZCBmMmZzX2Ryb3BfZGlzY2FyZF9jbWQoc3RydWN0IGYyZnNfc2JfaW5m
byAqc2JpKTsKPiA+IEBAIC00MjMxLDYgKzQyNDQsOCBAQCB2b2lkIGYyZnNfYnVpbGRfZ2NfbWFu
YWdlcihzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkpOwo+ID4gICBpbnQgZjJmc19nY19yYW5nZShz
dHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPiAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBz
dGFydF9zZWcsIHVuc2lnbmVkIGludCBlbmRfc2VnLAo+ID4gICAgICAgICAgICAgICBib29sIGRy
eV9ydW4sIHVuc2lnbmVkIGludCBkcnlfcnVuX3NlY3Rpb25zKTsKPiA+ICt2b2lkIGYyZnNfcmVz
ZXRfZ2NfdmljdGltX3Jlc291cmNlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+ICsgICAg
ICAgICAgICAgdW5zaWduZWQgaW50IHN0YXJ0LCB1bnNpZ25lZCBpbnQgZW5kKTsKPiA+ICAgaW50
IGYyZnNfcmVzaXplX2ZzKHN0cnVjdCBmaWxlICpmaWxwLCBfX3U2NCBibG9ja19jb3VudCk7Cj4g
PiAgIGludCBfX2luaXQgZjJmc19jcmVhdGVfZ2FyYmFnZV9jb2xsZWN0aW9uX2NhY2hlKHZvaWQp
Owo+ID4gICB2b2lkIGYyZnNfZGVzdHJveV9nYXJiYWdlX2NvbGxlY3Rpb25fY2FjaGUodm9pZCk7
Cj4gPiBkaWZmIC0tZ2l0IGEvZnMvZjJmcy9maWxlLmMgYi9mcy9mMmZzL2ZpbGUuYwo+ID4gaW5k
ZXggNGI1MmM1NmQ3MWYwLi44MzVmMTBiYzU5YjUgMTAwNjQ0Cj4gPiAtLS0gYS9mcy9mMmZzL2Zp
bGUuYwo+ID4gKysrIGIvZnMvZjJmcy9maWxlLmMKPiA+IEBAIC04MTMsMTMgKzgxMywxOSBAQCBp
bnQgZjJmc19kb190cnVuY2F0ZV9ibG9ja3Moc3RydWN0IGlub2RlICppbm9kZSwgdTY0IGZyb20s
IGJvb2wgbG9jaykKPiA+Cj4gPiAgICAgICBpZiAoSVNfREVWSUNFX0FMSUFTSU5HKGlub2RlKSkg
ewo+ID4gICAgICAgICAgICAgICBzdHJ1Y3QgZXh0ZW50X3RyZWUgKmV0ID0gRjJGU19JKGlub2Rl
KS0+ZXh0ZW50X3RyZWVbRVhfUkVBRF07Cj4gPiAtICAgICAgICAgICAgIHN0cnVjdCBleHRlbnRf
aW5mbyBlaSA9IGV0LT5sYXJnZXN0Owo+ID4gKyAgICAgICAgICAgICBzdHJ1Y3QgZXh0ZW50X2lu
Zm8gZWk7Cj4gPiArCj4gPiArICAgICAgICAgICAgIHJlYWRfbG9jaygmZXQtPmxvY2spOwo+ID4g
KyAgICAgICAgICAgICBlaSA9IGV0LT5sYXJnZXN0Owo+ID4gKyAgICAgICAgICAgICByZWFkX3Vu
bG9jaygmZXQtPmxvY2spOwo+ID4KPiA+ICAgICAgICAgICAgICAgZjJmc19pbnZhbGlkYXRlX2Js
b2NrcyhzYmksIGVpLmJsaywgZWkubGVuKTsKPiA+Cj4gPiAgICAgICAgICAgICAgIGRlY192YWxp
ZF9ibG9ja19jb3VudChzYmksIGlub2RlLCBlaS5sZW4pOwo+ID4gICAgICAgICAgICAgICBmMmZz
X3VwZGF0ZV90aW1lKHNiaSwgUkVRX1RJTUUpOwo+ID4KPiA+ICsgICAgICAgICAgICAgZjJmc19k
cm9wX2V4dGVudF90cmVlKGlub2RlKTsKPiA+ICsKPiA+ICAgICAgICAgICAgICAgZjJmc19mb2xp
b19wdXQoaWZvbGlvLCB0cnVlKTsKPiA+ICAgICAgICAgICAgICAgZ290byBvdXQ7Cj4gPiAgICAg
ICB9Cj4gPiBAQCAtMTEwMCw4ICsxMTA2LDkgQEAgaW50IGYyZnNfc2V0YXR0cihzdHJ1Y3QgbW50
X2lkbWFwICppZG1hcCwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LAo+ID4gICAgICAgaWYgKChhdHRy
LT5pYV92YWxpZCAmIEFUVFJfU0laRSkpIHsKPiA+ICAgICAgICAgICAgICAgaWYgKG1hcHBpbmdf
bGFyZ2VfZm9saW9fc3VwcG9ydChpbm9kZS0+aV9tYXBwaW5nKSkKPiA+ICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7Cj4gPiAtICAgICAgICAgICAgIGlmICghZjJmc19p
c19jb21wcmVzc19iYWNrZW5kX3JlYWR5KGlub2RlKSB8fAo+ID4gLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSVNfREVWSUNFX0FMSUFTSU5HKGlub2RlKSkKPiA+ICsgICAgICAgICAgICAg
aWYgKElTX0RFVklDRV9BTElBU0lORyhpbm9kZSkpCj4gPiArICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIC1FUEVSTTsKPiA+ICsgICAgICAgICAgICAgaWYgKCFmMmZzX2lzX2NvbXByZXNzX2Jh
Y2tlbmRfcmVhZHkoaW5vZGUpKQo+ID4gICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRU9Q
Tk9UU1VQUDsKPiA+ICAgICAgICAgICAgICAgaWYgKGlzX2lub2RlX2ZsYWdfc2V0KGlub2RlLCBG
SV9DT01QUkVTU19SRUxFQVNFRCkgJiYKPiA+ICAgICAgICAgICAgICAgICAgICAgICAhSVNfQUxJ
R05FRChhdHRyLT5pYV9zaXplLAo+ID4gQEAgLTIxMzAsNiArMjEzNyw5IEBAIHN0YXRpYyBpbnQg
ZjJmc19zZXRmbGFnc19jb21tb24oc3RydWN0IGlub2RlICppbm9kZSwgdTMyIGlmbGFncywgdTMy
IG1hc2spCj4gPiAgICAgICBpZiAoSVNfTk9RVU9UQShpbm9kZSkpCj4gPiAgICAgICAgICAgICAg
IHJldHVybiAtRVBFUk07Cj4gPgo+ID4gKyAgICAgaWYgKElTX0RFVklDRV9BTElBU0lORyhpbm9k
ZSkpCj4gPiArICAgICAgICAgICAgIHJldHVybiAtRVBFUk07Cj4gPiArCj4gPiAgICAgICBpZiAo
KGlmbGFncyBeIG1hc2tlZF9mbGFncykgJiBGMkZTX0NBU0VGT0xEX0ZMKSB7Cj4gPiAgICAgICAg
ICAgICAgIGlmICghZjJmc19zYl9oYXNfY2FzZWZvbGQoRjJGU19JX1NCKGlub2RlKSkpCj4gPiAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOwo+ID4gQEAgLTI2NzgsNiAr
MjY4OCwxNyBAQCBzdGF0aWMgaW50IGYyZnNfaW9jX2dldF9lbmNyeXB0aW9uX3BvbGljeShzdHJ1
Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgbG9uZyBhcmcpCj4gPiAgICAgICByZXR1cm4gZnNjcnlw
dF9pb2N0bF9nZXRfcG9saWN5KGZpbHAsICh2b2lkIF9fdXNlciAqKWFyZyk7Cj4gPiAgIH0KPiA+
Cj4gPiArc3RhdGljIGludCBmMmZzX2lvY19nZXRfZGV2X2FsaWFzX3N0YXR1cyhzdHJ1Y3QgZmls
ZSAqZmlscCwgdW5zaWduZWQgbG9uZyBhcmcpCj4gPiArewo+ID4gKyAgICAgc3RydWN0IGlub2Rl
ICppbm9kZSA9IGZpbGVfaW5vZGUoZmlscCk7Cj4gPiArCj4gPiArICAgICBpZiAoIUlTX0RFVklD
RV9BTElBU0lORyhpbm9kZSkpCj4gPiArICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4g
Kwo+ID4gKyAgICAgcmV0dXJuIHB1dF91c2VyKEYyRlNfSEFTX0JMT0NLUyhpbm9kZSkgPyBGMkZT
X0RFVl9BTElBU19TVEFUVVNfUkVTRVJWRUQgOgo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRjJGU19ERVZfQUxJQVNfU1RBVFVTX1JFTEVBU0VELCAodTMyIF9fdXNlciAqKWFyZyk7
Cj4gPiArfQo+ID4gKwo+ID4gICBzdGF0aWMgaW50IGYyZnNfaW9jX2dldF9lbmNyeXB0aW9uX3B3
c2FsdChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgbG9uZyBhcmcpCj4gPiAgIHsKPiA+ICAg
ICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlX2lub2RlKGZpbHApOwo+ID4gQEAgLTM2MTYs
NiArMzYzNywyNDEgQEAgc3RhdGljIGludCBmMmZzX2lvY19nZXRfZGV2X2FsaWFzX2ZpbGUoc3Ry
dWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGxvbmcgYXJnKQo+ID4gICAgICAgICAgICAgICAgICAg
ICAgICh1MzIgX191c2VyICopYXJnKTsKPiA+ICAgfQo+ID4KPiA+ICtzdGF0aWMgYm9vbCBmMmZz
X2dldF9kZXZfYWxpYXNfZXh0ZW50KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiA+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksCj4g
PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGV4dGVudF9pbmZv
ICplaSkKPiA+ICt7Cj4gPiArICAgICBpbnQgaTsKPiA+ICsKPiA+ICsgICAgIGZvciAoaSA9IDE7
IGkgPCBzYmktPnNfbmRldnM7IGkrKykgewo+ID4gKyAgICAgICAgICAgICBjaGFyICpuYW1lID0g
c3RycmNocihGREVWKGkpLnBhdGgsICcvJyk7Cj4gPiArCj4gPiArICAgICAgICAgICAgIG5hbWUg
PSBuYW1lID8gbmFtZSArIDEgOiBGREVWKGkpLnBhdGg7Cj4gPiArICAgICAgICAgICAgIGlmIChz
dHJjbXAobmFtZSwgZGVudHJ5LT5kX25hbWUubmFtZSkpCj4gPiArICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7Cj4gPiArCj4gPiArICAgICAgICAgICAgIGVpLT5ibGsgPSBGREVWKGkpLnN0
YXJ0X2JsazsKPiA+ICsgICAgICAgICAgICAgZWktPmxlbiA9IEZERVYoaSkudG90YWxfc2VnbWVu
dHMgPDwgc2JpLT5sb2dfYmxvY2tzX3Blcl9zZWc7Cj4gPiArICAgICAgICAgICAgIGVpLT5mb2Zz
ID0gMDsKPiA+ICsgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cj4gPiArICAgICB9Cj4gPiArICAg
ICByZXR1cm4gZmFsc2U7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgZjJmc19pb2NfcmVz
ZXJ2ZV9kZXZfYWxpYXMoc3RydWN0IGZpbGUgKmZpbHApCj4gPiArewo+ID4gKyAgICAgc3RydWN0
IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUoZmlscCk7Cj4gPiArICAgICBzdHJ1Y3QgZjJmc19z
Yl9pbmZvICpzYmkgPSBGMkZTX0lfU0IoaW5vZGUpOwo+ID4gKyAgICAgc3RydWN0IGV4dGVudF90
cmVlICpldCA9IEYyRlNfSShpbm9kZSktPmV4dGVudF90cmVlW0VYX1JFQURdOwo+ID4gKyAgICAg
c3RydWN0IGV4dGVudF9pbmZvIGVpOwo+ID4gKyAgICAgc3RydWN0IGNwX2NvbnRyb2wgY3BjID0g
eyBDUF9TWU5DLCAwLCAwLCAwIH07Cj4gPiArICAgICBzdHJ1Y3QgZjJmc19sb2NrX2NvbnRleHQg
bGMsIGdsYzsKPiA+ICsgICAgIGJsa2NudF90IGNvdW50Owo+ID4gKyAgICAgdW5zaWduZWQgaW50
IHN0YXJ0LCBlbmQ7Cj4gPiArICAgICBpbnQgdHlwZSwgZXJyOwo+ID4gKwo+ID4gKyAgICAgaWYg
KCFjYXBhYmxlKENBUF9TWVNfQURNSU4pKQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVQRVJN
Owo+ID4gKwo+ID4gKyAgICAgaWYgKHVubGlrZWx5KGlzX3NiaV9mbGFnX3NldChzYmksIFNCSV9D
UF9ESVNBQkxFRCkpKQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiA+ICsKPiA+
ICsgICAgIGVyciA9IG1udF93YW50X3dyaXRlX2ZpbGUoZmlscCk7Cj4gPiArICAgICBpZiAoZXJy
KQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gZXJyOwo+ID4gKwo+ID4gKyAgICAgaW5vZGVfbG9j
ayhpbm9kZSk7Cj4gPiArCj4gPiArICAgICBpZiAoIUlTX0RFVklDRV9BTElBU0lORyhpbm9kZSkp
IHsKPiA+ICsgICAgICAgICAgICAgZXJyID0gLUVJTlZBTDsKPiA+ICsgICAgICAgICAgICAgZ290
byBvdXRfaW5vZGVfdW5sb2NrOwo+ID4gKyAgICAgfQo+ID4gKwo+ID4gKyAgICAgaWYgKEYyRlNf
SEFTX0JMT0NLUyhpbm9kZSkpIHsKPiA+ICsgICAgICAgICAgICAgZXJyID0gMDsKPiA+ICsgICAg
ICAgICAgICAgZ290byBvdXRfaW5vZGVfdW5sb2NrOwo+ID4gKyAgICAgfQo+ID4gKwo+ID4gKyAg
ICAgaWYgKCFmMmZzX2dldF9kZXZfYWxpYXNfZXh0ZW50KHNiaSwgZmlscC0+Zl9wYXRoLmRlbnRy
eSwgJmVpKSkgewo+ID4gKyAgICAgICAgICAgICBmMmZzX3dhcm4oc2JpLCAiZGV2aWNlIGFsaWFz
IGZpbGUgKCVzLCBpbm89JWxsdSkgaGFzIG5vIG1hdGNoaW5nIGRldmljZSIsCj4gPiArICAgICAg
ICAgICAgICAgICAgICAgICBmaWxwLT5mX3BhdGguZGVudHJ5LT5kX25hbWUubmFtZSwKPiA+ICsg
ICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpaW5vZGUtPmlfaW5vKTsK
PiA+ICsgICAgICAgICAgICAgc2V0X3NiaV9mbGFnKHNiaSwgU0JJX05FRURfRlNDSyk7Cj4gPiAr
ICAgICAgICAgICAgIGYyZnNfaGFuZGxlX2Vycm9yKHNiaSwgRVJST1JfQ09SUlVQVEVEX0lOT0RF
KTsKPiA+ICsgICAgICAgICAgICAgZXJyID0gLUVGU0NPUlJVUFRFRDsKPiA+ICsgICAgICAgICAg
ICAgZ290byBvdXRfaW5vZGVfdW5sb2NrOwo+ID4gKyAgICAgfQo+ID4gKwo+ID4gKyAgICAgc3Bp
bl9sb2NrKCZzYmktPnN0YXRfbG9jayk7Cj4gPiArICAgICBpZiAoc2JpLT50b3RhbF92YWxpZF9i
bG9ja19jb3VudCArIGVpLmxlbiA+Cj4gPiArICAgICAgICAgICAgICAgICAgICAgZ2V0X2F2YWls
YWJsZV9ibG9ja19jb3VudChzYmksIGlub2RlLCB0cnVlKSkgewo+ID4gKyAgICAgICAgICAgICBz
cGluX3VubG9jaygmc2JpLT5zdGF0X2xvY2spOwo+ID4gKyAgICAgICAgICAgICBlcnIgPSAtRU5P
U1BDOwo+ID4gKyAgICAgICAgICAgICBnb3RvIG91dF9pbm9kZV91bmxvY2s7Cj4gPiArICAgICB9
Cj4gPiArICAgICBzYmktPmFsaWFzX3Jlc2VydmVkX2Jsb2NrcyArPSBlaS5sZW47Cj4gPiArICAg
ICBzcGluX3VubG9jaygmc2JpLT5zdGF0X2xvY2spOwo+ID4gKwo+ID4gKyAgICAgc3Bpbl9sb2Nr
KCZGUkVFX0koc2JpKS0+c2VnbWFwX2xvY2spOwo+ID4gKyAgICAgRkRFVihmMmZzX3RhcmdldF9k
ZXZpY2VfaW5kZXgoc2JpLCBlaS5ibGspKS5pc19yZXNlcnZpbmcgPSB0cnVlOwo+ID4gKyAgICAg
c3Bpbl91bmxvY2soJkZSRUVfSShzYmkpLT5zZWdtYXBfbG9jayk7Cj4gPiArCj4gPiArICAgICBz
dGFydCA9IEdFVF9TRUdOTyhzYmksIGVpLmJsayk7Cj4gPiArICAgICBlbmQgPSBHRVRfU0VHTk8o
c2JpLCBlaS5ibGsgKyBlaS5sZW4gLSAxKTsKPiA+ICsKPiA+ICsgICAgIC8qIEFjcXVpcmUgZ2Nf
bG9jayBmb3IgdmljdGltIHJlc2V0LCBjdXJzZWcgcmVzaXplLCBhbmQgcmFuZ2UgR0MgKi8KPiA+
ICsgICAgIGYyZnNfZG93bl93cml0ZV90cmFjZSgmc2JpLT5nY19sb2NrLCAmZ2xjKTsKPiA+ICsK
PiA+ICsgICAgIC8qIFJlc2V0IHRoZSB2aWN0aW0gaW5mb3JtYXRpb24gdG8gcHJldmVudCBHQyBm
cm9tIHRhcmdldGluZyB0aGUgcmFuZ2UgKi8KPiA+ICsgICAgIGYyZnNfcmVzZXRfZ2NfdmljdGlt
X3Jlc291cmNlKHNiaSwgc3RhcnQsIGVuZCk7Cj4gPiArCj4gPiArICAgICAvKiBNb3ZlIG91dCBj
dXJzZWdzIGZyb20gdGhlIHRhcmdldCByYW5nZSAqLwo+ID4gKyAgICAgZm9yICh0eXBlID0gQ1VS
U0VHX0hPVF9EQVRBOyB0eXBlIDwgTlJfQ1VSU0VHX1BFUlNJU1RfVFlQRTsgdHlwZSsrKSB7Cj4g
PiArICAgICAgICAgICAgIGVyciA9IGYyZnNfYWxsb2NhdGVfc2VnbWVudF9mb3JfcmVzaXplKHNi
aSwgdHlwZSwgc3RhcnQsIGVuZCk7Cj4gPiArICAgICAgICAgICAgIGlmIChlcnIpCj4gPiArICAg
ICAgICAgICAgICAgICAgICAgZ290byBvdXRfZ2NfdW5sb2NrOwo+ID4gKyAgICAgfQo+ID4gKwo+
ID4gKyAgICAgZjJmc19sb2NrX29wKHNiaSwgJmxjKTsKPiA+ICsKPiA+ICsgICAgIGlmICh1bmxp
a2VseShpc19zYmlfZmxhZ19zZXQoc2JpLCBTQklfQ1BfRElTQUJMRUQpKSkgewo+ID4gKyAgICAg
ICAgICAgICBlcnIgPSAtRUlOVkFMOwo+ID4gKyAgICAgICAgICAgICBmMmZzX3VubG9ja19vcChz
YmksICZsYyk7Cj4gPiArICAgICAgICAgICAgIGdvdG8gb3V0X2djX3VubG9jazsKPiA+ICsgICAg
IH0KPiA+ICsKPiA+ICsgICAgIC8qIGRvIEdDIHRvIG1vdmUgb3V0IHZhbGlkIGJsb2NrcyBpbiB0
aGUgcmFuZ2UgYWxsIGF0IG9uY2UhICovCj4gPiArICAgICBlcnIgPSBmMmZzX2djX3JhbmdlKHNi
aSwgc3RhcnQsIGVuZCwgZmFsc2UsIDApOwo+ID4gKyAgICAgaWYgKGVycikgewo+ID4gKyAgICAg
ICAgICAgICBmMmZzX3VubG9ja19vcChzYmksICZsYyk7Cj4gPiArICAgICAgICAgICAgIGdvdG8g
b3V0X2djX3VubG9jazsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ICsgICAgIGNvdW50ID0gZWkubGVu
Owo+ID4gKyAgICAgZXJyID0gaW5jX3ZhbGlkX2Jsb2NrX2NvdW50KHNiaSwgaW5vZGUsICZjb3Vu
dCwgZmFsc2UsIHRydWUpOwo+ID4gKyAgICAgaWYgKGVycikgewo+ID4gKyAgICAgICAgICAgICBm
MmZzX3VubG9ja19vcChzYmksICZsYyk7Cj4gPiArICAgICAgICAgICAgIGdvdG8gb3V0X2djX3Vu
bG9jazsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ICsgICAgIHdyaXRlX2xvY2soJmV0LT5sb2NrKTsK
PiA+ICsgICAgIGV0LT5sYXJnZXN0ID0gZWk7Cj4gPiArICAgICB3cml0ZV91bmxvY2soJmV0LT5s
b2NrKTsKPiA+ICsgICAgIGNsZWFyX2lub2RlX2ZsYWcoaW5vZGUsIEZJX05PX0VYVEVOVCk7Cj4g
PiArCj4gPiArICAgICBmMmZzX3Jlc2VydmVfZGV2aWNlX2FsaWFzKHNiaSwgZWkuYmxrLCBlaS5s
ZW4pOwo+ID4gKwo+ID4gKyAgICAgaV9zaXplX3dyaXRlKGlub2RlLCAobG9mZl90KWVpLmxlbiA8
PCBzYmktPmxvZ19ibG9ja3NpemUpOwo+ID4gKyAgICAgZjJmc191cGRhdGVfaW5vZGVfcGFnZShp
bm9kZSk7Cj4gPiArCj4gPiArICAgICBzcGluX2xvY2soJkZSRUVfSShzYmkpLT5zZWdtYXBfbG9j
ayk7Cj4gPiArICAgICBGREVWKGYyZnNfdGFyZ2V0X2RldmljZV9pbmRleChzYmksIGVpLmJsaykp
LmlzX3Jlc2VydmluZyA9IGZhbHNlOwo+ID4gKyAgICAgc3Bpbl91bmxvY2soJkZSRUVfSShzYmkp
LT5zZWdtYXBfbG9jayk7Cj4gPiArCj4gPiArICAgICBmMmZzX3VubG9ja19vcChzYmksICZsYyk7
Cj4gPiArICAgICBmMmZzX3VwX3dyaXRlX3RyYWNlKCZzYmktPmdjX2xvY2ssICZnbGMpOwo+Cj4g
RG8gd2UgbmVlZCB0byBjYWxsIGYyZnNfd3JpdGVfY2hlY2twb2ludChzYmksICZjcGMpIGhlcmUg
dG8gbWFrZSBzdXJlIHBlcnNpc3QKPiBkZXZpY2UgYWxpYXMgZmlsZSBmaXJzdD8gdG8gYXZvaWQg
Zm9sbG93aW5nIGYyZnNfaW9jX3JlbGVhc2VfZGV2X2FsaWFzKCkgcmFjaW4KPiAgIHcvIGYyZnNf
aW9jX3Jlc2VydmVfZGV2X2FsaWFzKCk/Cj4KPiAtIGYyZnNfaW9jX3Jlc2VydmVfZGV2X2FsaWFz
ICAgICAgICAgICAgLSBmMmZzX2lvY19yZWxlYXNlX2Rldl9hbGlhcwo+IC4uLgo+ICAgLSBmMmZz
X3VubG9ja19vcAo+ICAgLSBmMmZzX3VwX3dyaXRlX3RyYWNlKGdjX2xvY2spCj4gICAtIGlub2Rl
X3VubG9jawo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBpbm9k
ZV9sb2NrCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4KPiAg
IC0gZjJmc193cml0ZV9jaGVja3BvaW50CgpIaSBDaGFvLAoKSSBjb3VsZG4ndCBnZXQgeW91ciBw
b2ludC4gQ291bGQgeW91IGVsYWJvcmF0ZSBtb3JlLCBpZiBJIG1pc3NlZCBpdD8KCjEuIEluLW1l
bW9yeSBzdGF0ZSBpcyBhbHJlYWR5IGF0b21pYyAoTm8gUmFjZSk6CiAgICBCZWZvcmUgaW5vZGVf
dW5sb2NrKCksIGFsbCBpbi1tZW1vcnkgbWV0YWRhdGEgKGV4dGVudF90cmVlLCBTSVQKc2VnbWVu
dCBiaXRtYXBzLCBpX3NpemUsIGFuZCBkaXJ0eSBpbm9kZSBwYWdlKSBhcmUgZnVsbHkgdXBkYXRl
ZCB1bmRlcgppbm9kZV9sb2NrICsgZjJmc19sb2NrX29wLiBBIHN1YnNlcXVlbnQgZjJmc19pb2Nf
cmVsZWFzZV9kZXZfYWxpYXMoKQp3aWxsIG9ic2VydmUgYSBjb21wbGV0ZSwgY29uc2lzdGVudCBz
dGF0ZS4KCjIuIE9uLWRpc2sgY29uc2lzdGVuY3kgJiBjcmFzaCBzYWZldHk6CiAgICBDaGVja3Bv
aW50cyBhcmUgc2VyaWFsaXplZCBpbnRlcm5hbGx5IHZpYSBjcF9tdXRleCAvCmYyZnNfbG9ja19h
bGwoKS4gUmVnYXJkbGVzcyBvZiB0aGUgY2hlY2twb2ludCBleGVjdXRpb24gdGltaW5nIG9yIGFu
eQpzdWRkZW4gcG93ZXItb2ZmIChTUE8pIGJldHdlZW4gdGhlIHR3byBpb2N0bHMsIHRoZSBmaWxl
c3lzdGVtIGFsd2F5cwpyZWNvdmVycyB0byB0aGUgbGFzdCBjb21taXR0ZWQgYXRvbWljIGNoZWNr
cG9pbnQgd2l0aG91dCBtZXRhZGF0YQpjb3JydXB0aW9uLgoKVGhhbmtzLAoKPgo+ID4gKwo+ID4g
KyAgICAgaW5vZGVfdW5sb2NrKGlub2RlKTsKPiA+ICsgICAgIG1udF9kcm9wX3dyaXRlX2ZpbGUo
ZmlscCk7Cj4gPiArCj4gPiArICAgICByZXR1cm4gZjJmc193cml0ZV9jaGVja3BvaW50KHNiaSwg
JmNwYyk7Cj4gPiArCj4gPiArb3V0X2djX3VubG9jazoKPiA+ICsgICAgIHNwaW5fbG9jaygmc2Jp
LT5zdGF0X2xvY2spOwo+ID4gKyAgICAgc2JpLT5hbGlhc19yZXNlcnZlZF9ibG9ja3MgLT0gZWku
bGVuOwo+ID4gKyAgICAgc3Bpbl91bmxvY2soJnNiaS0+c3RhdF9sb2NrKTsKPiA+ICsKPiA+ICsg
ICAgIHNwaW5fbG9jaygmRlJFRV9JKHNiaSktPnNlZ21hcF9sb2NrKTsKPiA+ICsgICAgIEZERVYo
ZjJmc190YXJnZXRfZGV2aWNlX2luZGV4KHNiaSwgZWkuYmxrKSkuaXNfcmVzZXJ2aW5nID0gZmFs
c2U7Cj4gPiArICAgICBzcGluX3VubG9jaygmRlJFRV9JKHNiaSktPnNlZ21hcF9sb2NrKTsKPiA+
ICsgICAgIGYyZnNfdXBfd3JpdGVfdHJhY2UoJnNiaS0+Z2NfbG9jaywgJmdsYyk7Cj4gPiArCj4g
PiArb3V0X2lub2RlX3VubG9jazoKPiA+ICsgICAgIGlub2RlX3VubG9jayhpbm9kZSk7Cj4gPiAr
ICAgICBtbnRfZHJvcF93cml0ZV9maWxlKGZpbHApOwo+ID4gKyAgICAgcmV0dXJuIGVycjsKPiA+
ICt9Cj4gPiArCj4gPiArc3RhdGljIGludCBmMmZzX2lvY19yZWxlYXNlX2Rldl9hbGlhcyhzdHJ1
Y3QgZmlsZSAqZmlscCkKPiA+ICt7Cj4gPiArICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmls
ZV9pbm9kZShmaWxwKTsKPiA+ICsgICAgIHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSA9IEYyRlNf
SV9TQihpbm9kZSk7Cj4gPiArICAgICBzdHJ1Y3QgZXh0ZW50X3RyZWUgKmV0ID0gRjJGU19JKGlu
b2RlKS0+ZXh0ZW50X3RyZWVbRVhfUkVBRF07Cj4gPiArICAgICBzdHJ1Y3QgZXh0ZW50X2luZm8g
ZWkgPSB7MCwgfTsKPiA+ICsgICAgIHN0cnVjdCBjcF9jb250cm9sIGNwYyA9IHsgQ1BfU1lOQywg
MCwgMCwgMCB9Owo+ID4gKyAgICAgc3RydWN0IGYyZnNfbG9ja19jb250ZXh0IGxjLCBnbGM7Cj4g
PiArICAgICBpbnQgZXJyOwo+ID4gKwo+ID4gKyAgICAgaWYgKCFjYXBhYmxlKENBUF9TWVNfQURN
SU4pKQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVQRVJNOwo+ID4gKwo+ID4gKyAgICAgaWYg
KHVubGlrZWx5KGlzX3NiaV9mbGFnX3NldChzYmksIFNCSV9DUF9ESVNBQkxFRCkpKQo+ID4gKyAg
ICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiA+ICsKPiA+ICsgICAgIGVyciA9IG1udF93YW50
X3dyaXRlX2ZpbGUoZmlscCk7Cj4gPiArICAgICBpZiAoZXJyKQo+ID4gKyAgICAgICAgICAgICBy
ZXR1cm4gZXJyOwo+ID4gKwo+ID4gKyAgICAgaW5vZGVfbG9jayhpbm9kZSk7Cj4gPiArCj4gPiAr
ICAgICBpZiAoIUlTX0RFVklDRV9BTElBU0lORyhpbm9kZSkpIHsKPiA+ICsgICAgICAgICAgICAg
ZXJyID0gLUVJTlZBTDsKPiA+ICsgICAgICAgICAgICAgZ290byBvdXRfaW5vZGVfdW5sb2NrOwo+
ID4gKyAgICAgfQo+ID4gKwo+ID4gKyAgICAgaWYgKCFGMkZTX0hBU19CTE9DS1MoaW5vZGUpKSB7
Cj4gPiArICAgICAgICAgICAgIGVyciA9IDA7Cj4gPiArICAgICAgICAgICAgIGdvdG8gb3V0X2lu
b2RlX3VubG9jazsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ICsgICAgIGVyciA9IGZpbGVtYXBfd3Jp
dGVfYW5kX3dhaXQoaW5vZGUtPmlfbWFwcGluZyk7Cj4gPiArICAgICBpZiAoZXJyKQo+ID4gKyAg
ICAgICAgICAgICBnb3RvIG91dF9pbm9kZV91bmxvY2s7Cj4gPiArCj4gPiArICAgICByZWFkX2xv
Y2soJmV0LT5sb2NrKTsKPiA+ICsgICAgIGVpID0gZXQtPmxhcmdlc3Q7Cj4gPiArICAgICByZWFk
X3VubG9jaygmZXQtPmxvY2spOwo+ID4gKwo+ID4gKyAgICAgZjJmc19kb3duX3dyaXRlX3RyYWNl
KCZzYmktPmdjX2xvY2ssICZnbGMpOwo+ID4gKyAgICAgZjJmc19sb2NrX29wKHNiaSwgJmxjKTsK
PiA+ICsKPiA+ICsgICAgIGlmICh1bmxpa2VseShpc19zYmlfZmxhZ19zZXQoc2JpLCBTQklfQ1Bf
RElTQUJMRUQpKSkgewo+ID4gKyAgICAgICAgICAgICBlcnIgPSAtRUlOVkFMOwo+ID4gKyAgICAg
ICAgICAgICBmMmZzX3VubG9ja19vcChzYmksICZsYyk7Cj4gPiArICAgICAgICAgICAgIGYyZnNf
dXBfd3JpdGVfdHJhY2UoJnNiaS0+Z2NfbG9jaywgJmdsYyk7Cj4gPiArICAgICAgICAgICAgIGdv
dG8gb3V0X2lub2RlX3VubG9jazsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ICsgICAgIGZpbGVtYXBf
aW52YWxpZGF0ZV9sb2NrKGlub2RlLT5pX21hcHBpbmcpOwo+ID4gKyAgICAgdHJ1bmNhdGVfc2V0
c2l6ZShpbm9kZSwgMCk7Cj4gPiArCj4gPiArICAgICBlcnIgPSBmMmZzX3RydW5jYXRlX2Jsb2Nr
cyhpbm9kZSwgMCwgZmFsc2UpOwo+ID4gKyAgICAgaWYgKGVycikKPiA+ICsgICAgICAgICAgICAg
aV9zaXplX3dyaXRlKGlub2RlLCAobG9mZl90KWVpLmxlbiA8PCBzYmktPmxvZ19ibG9ja3NpemUp
Owo+ID4gKyAgICAgZmlsZW1hcF9pbnZhbGlkYXRlX3VubG9jayhpbm9kZS0+aV9tYXBwaW5nKTsK
PiA+ICsKPiA+ICsgICAgIGlmIChlcnIpIHsKPiA+ICsgICAgICAgICAgICAgZjJmc191bmxvY2tf
b3Aoc2JpLCAmbGMpOwo+ID4gKyAgICAgICAgICAgICBmMmZzX3VwX3dyaXRlX3RyYWNlKCZzYmkt
PmdjX2xvY2ssICZnbGMpOwo+ID4gKyAgICAgICAgICAgICBnb3RvIG91dF9pbm9kZV91bmxvY2s7
Cj4gPiArICAgICB9Cj4gPiArCj4gPiArICAgICBmMmZzX3VwZGF0ZV9pbm9kZV9wYWdlKGlub2Rl
KTsKPiA+ICsKPiA+ICsgICAgIGYyZnNfdW5sb2NrX29wKHNiaSwgJmxjKTsKPiA+ICsgICAgIGYy
ZnNfdXBfd3JpdGVfdHJhY2UoJnNiaS0+Z2NfbG9jaywgJmdsYyk7Cj4KPiAgICAgICAgIGVyciA9
IGYyZnNfd3JpdGVfY2hlY2twb2ludChzYmksICZjcGMpOwo+Cj4gVGhhbmtzLAo+Cj4gPiArCj4g
PiArICAgICBpbm9kZV91bmxvY2soaW5vZGUpOwo+ID4gKyAgICAgbW50X2Ryb3Bfd3JpdGVfZmls
ZShmaWxwKTsKPiA+ICsKPiA+ICsgICAgIHJldHVybiBmMmZzX3dyaXRlX2NoZWNrcG9pbnQoc2Jp
LCAmY3BjKTsKPiA+ICsKPiA+ICtvdXRfaW5vZGVfdW5sb2NrOgo+ID4gKyAgICAgaW5vZGVfdW5s
b2NrKGlub2RlKTsKPiA+ICsgICAgIG1udF9kcm9wX3dyaXRlX2ZpbGUoZmlscCk7Cj4gPiArICAg
ICByZXR1cm4gZXJyOwo+ID4gK30KPiA+ICsKPiA+ICAgc3RhdGljIGludCBmMmZzX2lvY19pb19w
cmlvKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBsb25nIGFyZykKPiA+ICAgewo+ID4gICAg
ICAgc3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5vZGUoZmlscCk7Cj4gPiBAQCAtNDA0MSw3
ICs0Mjk3LDcgQEAgc3RhdGljIGludCByZXNlcnZlX2NvbXByZXNzX2Jsb2NrcyhzdHJ1Y3QgZG5v
ZGVfb2ZfZGF0YSAqZG4sIHBnb2ZmX3QgY291bnQsCj4gPiAgICAgICAgICAgICAgIH0KPiA+Cj4g
PiAgICAgICAgICAgICAgIHJldCA9IGluY192YWxpZF9ibG9ja19jb3VudChzYmksIGRuLT5pbm9k
ZSwKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdG9f
cmVzZXJ2ZWQsIGZhbHNlKTsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmdG9fcmVzZXJ2ZWQsIGZhbHNlLCBmYWxzZSk7Cj4gPiAgICAgICAgICAgICAg
IGlmICh1bmxpa2VseShyZXQpKQo+ID4gICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7
Cj4gPgo+ID4gQEAgLTQ3NDIsOCArNDk5OCwxNCBAQCBzdGF0aWMgbG9uZyBfX2YyZnNfaW9jdGwo
c3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKQo+
ID4gICAgICAgICAgICAgICByZXR1cm4gZjJmc19pb2NfY29tcHJlc3NfZmlsZShmaWxwKTsKPiA+
ICAgICAgIGNhc2UgRjJGU19JT0NfR0VUX0RFVl9BTElBU19GSUxFOgo+ID4gICAgICAgICAgICAg
ICByZXR1cm4gZjJmc19pb2NfZ2V0X2Rldl9hbGlhc19maWxlKGZpbHAsIGFyZyk7Cj4gPiArICAg
ICBjYXNlIEYyRlNfSU9DX0dFVF9ERVZfQUxJQVNfU1RBVFVTOgo+ID4gKyAgICAgICAgICAgICBy
ZXR1cm4gZjJmc19pb2NfZ2V0X2Rldl9hbGlhc19zdGF0dXMoZmlscCwgYXJnKTsKPiA+ICAgICAg
IGNhc2UgRjJGU19JT0NfSU9fUFJJTzoKPiA+ICAgICAgICAgICAgICAgcmV0dXJuIGYyZnNfaW9j
X2lvX3ByaW8oZmlscCwgYXJnKTsKPiA+ICsgICAgIGNhc2UgRjJGU19JT0NfUkVTRVJWRV9ERVZf
QUxJQVM6Cj4gPiArICAgICAgICAgICAgIHJldHVybiBmMmZzX2lvY19yZXNlcnZlX2Rldl9hbGlh
cyhmaWxwKTsKPiA+ICsgICAgIGNhc2UgRjJGU19JT0NfUkVMRUFTRV9ERVZfQUxJQVM6Cj4gPiAr
ICAgICAgICAgICAgIHJldHVybiBmMmZzX2lvY19yZWxlYXNlX2Rldl9hbGlhcyhmaWxwKTsKPiA+
ICAgICAgIGRlZmF1bHQ6Cj4gPiAgICAgICAgICAgICAgIHJldHVybiAtRU5PVFRZOwo+ID4gICAg
ICAgfQo+ID4gQEAgLTU1MzAsNyArNTc5MiwxMCBAQCBsb25nIGYyZnNfY29tcGF0X2lvY3RsKHN0
cnVjdCBmaWxlICpmaWxlLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKPiA+
ICAgICAgIGNhc2UgRjJGU19JT0NfREVDT01QUkVTU19GSUxFOgo+ID4gICAgICAgY2FzZSBGMkZT
X0lPQ19DT01QUkVTU19GSUxFOgo+ID4gICAgICAgY2FzZSBGMkZTX0lPQ19HRVRfREVWX0FMSUFT
X0ZJTEU6Cj4gPiArICAgICBjYXNlIEYyRlNfSU9DX0dFVF9ERVZfQUxJQVNfU1RBVFVTOgo+ID4g
ICAgICAgY2FzZSBGMkZTX0lPQ19JT19QUklPOgo+ID4gKyAgICAgY2FzZSBGMkZTX0lPQ19SRVNF
UlZFX0RFVl9BTElBUzoKPiA+ICsgICAgIGNhc2UgRjJGU19JT0NfUkVMRUFTRV9ERVZfQUxJQVM6
Cj4gPiAgICAgICAgICAgICAgIGJyZWFrOwo+ID4gICAgICAgZGVmYXVsdDoKPiA+ICAgICAgICAg
ICAgICAgcmV0dXJuIC1FTk9JT0NUTENNRDsKPiA+IGRpZmYgLS1naXQgYS9mcy9mMmZzL2djLmMg
Yi9mcy9mMmZzL2djLmMKPiA+IGluZGV4IGZmYWE3YmE3NmExYi4uOTNiY2IzNWE1YjVkIDEwMDY0
NAo+ID4gLS0tIGEvZnMvZjJmcy9nYy5jCj4gPiArKysgYi9mcy9mMmZzL2djLmMKPiA+IEBAIC0y
MTk3LDI5ICsyMTk3LDM3IEBAIGludCBmMmZzX2djX3JhbmdlKHN0cnVjdCBmMmZzX3NiX2luZm8g
KnNiaSwKPiA+ICAgICAgIHJldHVybiAwOwo+ID4gICB9Cj4gPgo+ID4gK3ZvaWQgZjJmc19yZXNl
dF9nY192aWN0aW1fcmVzb3VyY2Uoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4gKyAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzdGFydCwgdW5zaWduZWQgaW50IGVuZCkKPiA+
ICt7Cj4gPiArICAgICBpbnQgaTsKPiA+ICsKPiA+ICsgICAgIG11dGV4X2xvY2soJkRJUlRZX0ko
c2JpKS0+c2VnbGlzdF9sb2NrKTsKPiA+ICsgICAgIGZvciAoaSA9IDA7IGkgPCBNQVhfR0NfUE9M
SUNZOyBpKyspCj4gPiArICAgICAgICAgICAgIGlmIChTSVRfSShzYmkpLT5sYXN0X3ZpY3RpbVtp
XSA+PSBzdGFydCAmJgo+ID4gKyAgICAgICAgICAgICAgICAgICAgIFNJVF9JKHNiaSktPmxhc3Rf
dmljdGltW2ldIDw9IGVuZCkKPiA+ICsgICAgICAgICAgICAgICAgICAgICBTSVRfSShzYmkpLT5s
YXN0X3ZpY3RpbVtpXSA9IDA7Cj4gPiArCj4gPiArICAgICBmb3IgKGkgPSBCR19HQzsgaSA8PSBG
R19HQzsgaSsrKQo+ID4gKyAgICAgICAgICAgICBpZiAoc2JpLT5uZXh0X3ZpY3RpbV9zZWdbaV0g
Pj0gc3RhcnQgJiYKPiA+ICsgICAgICAgICAgICAgICAgICAgICBzYmktPm5leHRfdmljdGltX3Nl
Z1tpXSA8PSBlbmQpCj4gPiArICAgICAgICAgICAgICAgICAgICAgc2JpLT5uZXh0X3ZpY3RpbV9z
ZWdbaV0gPSBOVUxMX1NFR05POwo+ID4gKyAgICAgbXV0ZXhfdW5sb2NrKCZESVJUWV9JKHNiaSkt
PnNlZ2xpc3RfbG9jayk7Cj4gPiArfQo+ID4gKwo+ID4gICBzdGF0aWMgaW50IGZyZWVfc2VnbWVu
dF9yYW5nZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2VjcywgYm9vbCBkcnlfcnVuKQo+ID4gICB7Cj4gPiAg
ICAgICB1bnNpZ25lZCBpbnQgbmV4dF9pbnVzZSwgc3RhcnQsIGVuZDsKPiA+ICAgICAgIHN0cnVj
dCBjcF9jb250cm9sIGNwYyA9IHsgQ1BfUkVTSVpFLCAwLCAwLCAwIH07Cj4gPiAtICAgICBpbnQg
Z2NfbW9kZSwgZ2NfdHlwZTsKPiA+ICAgICAgIGludCBlcnIgPSAwOwo+ID4gICAgICAgaW50IHR5
cGU7Cj4gPgo+ID4gLSAgICAgLyogRm9yY2UgYmxvY2sgYWxsb2NhdGlvbiBmb3IgR0MgKi8KPiA+
ICAgICAgIE1BSU5fU0VDUyhzYmkpIC09IHNlY3M7Cj4gPiAgICAgICBzdGFydCA9IE1BSU5fU0VD
UyhzYmkpICogU0VHU19QRVJfU0VDKHNiaSk7Cj4gPiAgICAgICBlbmQgPSBNQUlOX1NFR1Moc2Jp
KSAtIDE7Cj4gPgo+ID4gLSAgICAgbXV0ZXhfbG9jaygmRElSVFlfSShzYmkpLT5zZWdsaXN0X2xv
Y2spOwo+ID4gLSAgICAgZm9yIChnY19tb2RlID0gMDsgZ2NfbW9kZSA8IE1BWF9HQ19QT0xJQ1k7
IGdjX21vZGUrKykKPiA+IC0gICAgICAgICAgICAgaWYgKFNJVF9JKHNiaSktPmxhc3RfdmljdGlt
W2djX21vZGVdID49IHN0YXJ0KQo+ID4gLSAgICAgICAgICAgICAgICAgICAgIFNJVF9JKHNiaSkt
Pmxhc3RfdmljdGltW2djX21vZGVdID0gMDsKPiA+IC0KPiA+IC0gICAgIGZvciAoZ2NfdHlwZSA9
IEJHX0dDOyBnY190eXBlIDw9IEZHX0dDOyBnY190eXBlKyspCj4gPiAtICAgICAgICAgICAgIGlm
IChzYmktPm5leHRfdmljdGltX3NlZ1tnY190eXBlXSA+PSBzdGFydCkKPiA+IC0gICAgICAgICAg
ICAgICAgICAgICBzYmktPm5leHRfdmljdGltX3NlZ1tnY190eXBlXSA9IE5VTExfU0VHTk87Cj4g
PiAtICAgICBtdXRleF91bmxvY2soJkRJUlRZX0koc2JpKS0+c2VnbGlzdF9sb2NrKTsKPiA+ICsg
ICAgIGYyZnNfcmVzZXRfZ2NfdmljdGltX3Jlc291cmNlKHNiaSwgc3RhcnQsIGVuZCk7Cj4gPgo+
ID4gICAgICAgLyogTW92ZSBvdXQgY3Vyc2VncyBmcm9tIHRoZSB0YXJnZXQgcmFuZ2UgKi8KPiA+
ICAgICAgIGZvciAodHlwZSA9IENVUlNFR19IT1RfREFUQTsgdHlwZSA8IE5SX0NVUlNFR19QRVJT
SVNUX1RZUEU7IHR5cGUrKykgewo+ID4gZGlmZiAtLWdpdCBhL2ZzL2YyZnMvbmFtZWkuYyBiL2Zz
L2YyZnMvbmFtZWkuYwo+ID4gaW5kZXggY2FjMDNiOGU5MWExLi44YzNiNTc5ODdmNmMgMTAwNjQ0
Cj4gPiAtLS0gYS9mcy9mMmZzL25hbWVpLmMKPiA+ICsrKyBiL2ZzL2YyZnMvbmFtZWkuYwo+ID4g
QEAgLTQyNSw2ICs0MjUsOSBAQCBzdGF0aWMgaW50IGYyZnNfbGluayhzdHJ1Y3QgZGVudHJ5ICpv
bGRfZGVudHJ5LCBzdHJ1Y3QgaW5vZGUgKmRpciwKPiA+ICAgICAgIGlmICghZjJmc19pc19jaGVj
a3BvaW50X3JlYWR5KHNiaSkpCj4gPiAgICAgICAgICAgICAgIHJldHVybiAtRU5PU1BDOwo+ID4K
PiA+ICsgICAgIGlmIChJU19ERVZJQ0VfQUxJQVNJTkcoaW5vZGUpKQo+ID4gKyAgICAgICAgICAg
ICByZXR1cm4gLUVQRVJNOwo+ID4gKwo+ID4gICAgICAgZXJyID0gZnNjcnlwdF9wcmVwYXJlX2xp
bmsob2xkX2RlbnRyeSwgZGlyLCBkZW50cnkpOwo+ID4gICAgICAgaWYgKGVycikKPiA+ICAgICAg
ICAgICAgICAgcmV0dXJuIGVycjsKPiA+IEBAIC01NjgsNiArNTcxLDkgQEAgc3RhdGljIGludCBm
MmZzX3VubGluayhzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQo+ID4K
PiA+ICAgICAgIHRyYWNlX2YyZnNfdW5saW5rX2VudGVyKGRpciwgZGVudHJ5KTsKPiA+Cj4gPiAr
ICAgICBpZiAoSVNfREVWSUNFX0FMSUFTSU5HKGlub2RlKSkKPiA+ICsgICAgICAgICAgICAgcmV0
dXJuIC1FUEVSTTsKPiA+ICsKPiA+ICAgICAgIGlmICh1bmxpa2VseShmMmZzX2NwX2Vycm9yKHNi
aSkpKSB7Cj4gPiAgICAgICAgICAgICAgIGVyciA9IC1FSU87Cj4gPiAgICAgICAgICAgICAgIGdv
dG8gb3V0Owo+ID4gQEAgLTk0Niw2ICs5NTIsOSBAQCBzdGF0aWMgaW50IGYyZnNfcmVuYW1lKHN0
cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKm9sZF9kaXIsCj4gPiAgICAgICBi
b29sIG9sZF9pc19kaXIgPSBTX0lTRElSKG9sZF9pbm9kZS0+aV9tb2RlKTsKPiA+ICAgICAgIGlu
dCBlcnI7Cj4gPgo+ID4gKyAgICAgaWYgKElTX0RFVklDRV9BTElBU0lORyhvbGRfaW5vZGUpKQo+
ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVQRVJNOwo+ID4gKwo+ID4gICAgICAgaWYgKHVubGlr
ZWx5KGYyZnNfY3BfZXJyb3Ioc2JpKSkpCj4gPiAgICAgICAgICAgICAgIHJldHVybiAtRUlPOwo+
ID4gICAgICAgaWYgKCFmMmZzX2lzX2NoZWNrcG9pbnRfcmVhZHkoc2JpKSkKPiA+IEBAIC0xMDE2
LDYgKzEwMjUsOCBAQCBzdGF0aWMgaW50IGYyZnNfcmVuYW1lKHN0cnVjdCBtbnRfaWRtYXAgKmlk
bWFwLCBzdHJ1Y3QgaW5vZGUgKm9sZF9kaXIsCj4gPiAgICAgICB9Cj4gPgo+ID4gICAgICAgaWYg
KG5ld19pbm9kZSkgewo+ID4gKyAgICAgICAgICAgICBpZiAoSVNfREVWSUNFX0FMSUFTSU5HKG5l
d19pbm9kZSkpCj4gPiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FUEVSTTsKPiA+Cj4g
PiAgICAgICAgICAgICAgIGVyciA9IC1FTk9URU1QVFk7Cj4gPiAgICAgICAgICAgICAgIGlmIChv
bGRfaXNfZGlyICYmICFmMmZzX2VtcHR5X2RpcihuZXdfaW5vZGUpKQo+ID4gQEAgLTExNDMsNiAr
MTE1NCw5IEBAIHN0YXRpYyBpbnQgZjJmc19jcm9zc19yZW5hbWUoc3RydWN0IGlub2RlICpvbGRf
ZGlyLCBzdHJ1Y3QgZGVudHJ5ICpvbGRfZGVudHJ5LAo+ID4gICAgICAgaW50IG9sZF9ubGluayA9
IDAsIG5ld19ubGluayA9IDA7Cj4gPiAgICAgICBpbnQgZXJyOwo+ID4KPiA+ICsgICAgIGlmIChJ
U19ERVZJQ0VfQUxJQVNJTkcob2xkX2lub2RlKSB8fCBJU19ERVZJQ0VfQUxJQVNJTkcobmV3X2lu
b2RlKSkKPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FUEVSTTsKPiA+ICsKPiA+ICAgICAgIGlm
ICh1bmxpa2VseShmMmZzX2NwX2Vycm9yKHNiaSkpKQo+ID4gICAgICAgICAgICAgICByZXR1cm4g
LUVJTzsKPiA+ICAgICAgIGlmICghZjJmc19pc19jaGVja3BvaW50X3JlYWR5KHNiaSkpCj4gPiBk
aWZmIC0tZ2l0IGEvZnMvZjJmcy9zZWdtZW50LmMgYi9mcy9mMmZzL3NlZ21lbnQuYwo+ID4gaW5k
ZXggZDcxZGRiM2VlOTE4Li5kNzBkYzVlZjNkZTQgMTAwNjQ0Cj4gPiAtLS0gYS9mcy9mMmZzL3Nl
Z21lbnQuYwo+ID4gKysrIGIvZnMvZjJmcy9zZWdtZW50LmMKPiA+IEBAIC0yNjEsNyArMjYxLDcg
QEAgc3RhdGljIGludCBfX3JlcGxhY2VfYXRvbWljX3dyaXRlX2Jsb2NrKHN0cnVjdCBpbm9kZSAq
aW5vZGUsIHBnb2ZmX3QgaW5kZXgsCj4gPiAgICAgICB9IGVsc2Ugewo+ID4gICAgICAgICAgICAg
ICBibGtjbnRfdCBjb3VudCA9IDE7Cj4gPgo+ID4gLSAgICAgICAgICAgICBlcnIgPSBpbmNfdmFs
aWRfYmxvY2tfY291bnQoc2JpLCBpbm9kZSwgJmNvdW50LCB0cnVlKTsKPiA+ICsgICAgICAgICAg
ICAgZXJyID0gaW5jX3ZhbGlkX2Jsb2NrX2NvdW50KHNiaSwgaW5vZGUsICZjb3VudCwgdHJ1ZSwg
ZmFsc2UpOwo+ID4gICAgICAgICAgICAgICBpZiAoZXJyKSB7Cj4gPiAgICAgICAgICAgICAgICAg
ICAgICAgZjJmc19wdXRfZG5vZGUoJmRuKTsKPiA+ICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZXJyOwo+ID4gQEAgLTI1MDIsMzUgKzI1MDIsNDIgQEAgc3RhdGljIGludCB1cGRhdGVfc2l0
X2VudHJ5X2Zvcl9hbGxvYyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIHN0cnVjdCBzZWdfZW50
cnkKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzZWdubywg
YmxvY2tfdCBibGthZGRyLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCBpbnQgZGVsKQo+ID4gICB7Cj4g
PiAgICAgICBib29sIGV4aXN0Owo+ID4gKyAgICAgaW50IGRlbF9jb3VudCA9IGRlbDsKPiA+ICsg
ICAgIGludCBpOwo+ID4KPiA+IC0gICAgIGV4aXN0ID0gZjJmc190ZXN0X2FuZF9zZXRfYml0KG9m
ZnNldCwgc2UtPmN1cl92YWxpZF9tYXApOwo+ID4gLSAgICAgaWYgKHVubGlrZWx5KGV4aXN0KSkg
ewo+ID4gLSAgICAgICAgICAgICBmMmZzX2VycihzYmksICJCaXRtYXAgd2FzIHdyb25nbHkgc2V0
LCBibGs6JXUiLCBibGthZGRyKTsKPiA+IC0gICAgICAgICAgICAgZjJmc19idWdfb24oc2JpLCAx
KTsKPiA+IC0gICAgICAgICAgICAgc2UtPnZhbGlkX2Jsb2Nrcy0tOwo+ID4gLSAgICAgICAgICAg
ICBkZWwgPSAwOwo+ID4gLSAgICAgfQo+ID4gKyAgICAgZjJmc19idWdfb24oc2JpLCBHRVRfU0VH
Tk8oc2JpLCBibGthZGRyKSAhPSBHRVRfU0VHTk8oc2JpLCBibGthZGRyICsgZGVsX2NvdW50IC0g
MSkpOwo+ID4KPiA+IC0gICAgIGlmIChmMmZzX2Jsb2NrX3VuaXRfZGlzY2FyZChzYmkpICYmCj4g
PiAtICAgICAgICAgICAgICAgICAgICAgIWYyZnNfdGVzdF9hbmRfc2V0X2JpdChvZmZzZXQsIHNl
LT5kaXNjYXJkX21hcCkpCj4gPiAtICAgICAgICAgICAgIHNiaS0+ZGlzY2FyZF9ibGtzLS07Cj4g
PiArICAgICBmb3IgKGkgPSAwOyBpIDwgZGVsX2NvdW50OyBpKyspIHsKPiA+ICsgICAgICAgICAg
ICAgZXhpc3QgPSBmMmZzX3Rlc3RfYW5kX3NldF9iaXQob2Zmc2V0ICsgaSwgc2UtPmN1cl92YWxp
ZF9tYXApOwo+ID4gKyAgICAgICAgICAgICBpZiAodW5saWtlbHkoZXhpc3QpKSB7Cj4gPiArICAg
ICAgICAgICAgICAgICAgICAgZjJmc19lcnIoc2JpLCAiQml0bWFwIHdhcyB3cm9uZ2x5IHNldCwg
YmxrOiV1IiwgYmxrYWRkciArIGkpOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGYyZnNfYnVn
X29uKHNiaSwgMSk7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgc2UtPnZhbGlkX2Jsb2Nrcy0t
Owo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGRlbCAtPSAxOwo+ID4gKyAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwo+ID4gKyAgICAgICAgICAgICB9Cj4gPgo+ID4gLSAgICAgLyoKPiA+
IC0gICAgICAqIFNTUiBzaG91bGQgbmV2ZXIgcmV1c2UgYmxvY2sgd2hpY2ggaXMgY2hlY2twb2lu
dGVkCj4gPiAtICAgICAgKiBvciBuZXdseSBpbnZhbGlkYXRlZC4KPiA+IC0gICAgICAqLwo+ID4g
LSAgICAgaWYgKCFpc19zYmlfZmxhZ19zZXQoc2JpLCBTQklfQ1BfRElTQUJMRUQpKSB7Cj4gPiAt
ICAgICAgICAgICAgIGlmICghZjJmc190ZXN0X2FuZF9zZXRfYml0KG9mZnNldCwgc2UtPmNrcHRf
dmFsaWRfbWFwKSkgewo+ID4gLSAgICAgICAgICAgICAgICAgICAgIHNlLT5ja3B0X3ZhbGlkX2Js
b2NrcysrOwo+ID4gLSAgICAgICAgICAgICAgICAgICAgIGlmIChfX2lzX2xhcmdlX3NlY3Rpb24o
c2JpKSkKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9zZWNfZW50cnkoc2Jp
LCBzZWdubyktPmNrcHRfdmFsaWRfYmxvY2tzKys7Cj4gPiArICAgICAgICAgICAgIGlmIChmMmZz
X2Jsb2NrX3VuaXRfZGlzY2FyZChzYmkpICYmCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAhZjJmc190ZXN0X2FuZF9zZXRfYml0KG9mZnNldCArIGksIHNlLT5kaXNjYXJkX21hcCkp
Cj4gPiArICAgICAgICAgICAgICAgICAgICAgc2JpLT5kaXNjYXJkX2Jsa3MtLTsKPiA+ICsKPiA+
ICsgICAgICAgICAgICAgLyoKPiA+ICsgICAgICAgICAgICAgICogU1NSIHNob3VsZCBuZXZlciBy
ZXVzZSBibG9jayB3aGljaCBpcyBjaGVja3BvaW50ZWQKPiA+ICsgICAgICAgICAgICAgICogb3Ig
bmV3bHkgaW52YWxpZGF0ZWQuCj4gPiArICAgICAgICAgICAgICAqLwo+ID4gKyAgICAgICAgICAg
ICBpZiAoIWlzX3NiaV9mbGFnX3NldChzYmksIFNCSV9DUF9ESVNBQkxFRCkpIHsKPiA+ICsgICAg
ICAgICAgICAgICAgICAgICBpZiAoIWYyZnNfdGVzdF9hbmRfc2V0X2JpdChvZmZzZXQgKyBpLCBz
ZS0+Y2twdF92YWxpZF9tYXApKSB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZS0+Y2twdF92YWxpZF9ibG9ja3MrKzsKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChfX2lzX2xhcmdlX3NlY3Rpb24oc2JpKSkKPiA+ICsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2V0X3NlY19lbnRyeShzYmksIHNlZ25vKS0+Y2twdF92YWxpZF9ibG9j
a3MrKzsKPiA+ICsgICAgICAgICAgICAgICAgICAgICB9Cj4gPiAgICAgICAgICAgICAgIH0KPiA+
IC0gICAgIH0KPiA+Cj4gPiAtICAgICBpZiAoIWYyZnNfdGVzdF9iaXQob2Zmc2V0LCBzZS0+Y2tw
dF92YWxpZF9tYXApKSB7Cj4gPiAtICAgICAgICAgICAgIHNlLT5ja3B0X3ZhbGlkX2Jsb2NrcyAr
PSBkZWw7Cj4gPiAtICAgICAgICAgICAgIGlmIChfX2lzX2xhcmdlX3NlY3Rpb24oc2JpKSkKPiA+
IC0gICAgICAgICAgICAgICAgICAgICBnZXRfc2VjX2VudHJ5KHNiaSwgc2Vnbm8pLT5ja3B0X3Zh
bGlkX2Jsb2NrcyArPSBkZWw7Cj4gPiArICAgICAgICAgICAgIGlmICghZjJmc190ZXN0X2JpdChv
ZmZzZXQgKyBpLCBzZS0+Y2twdF92YWxpZF9tYXApKSB7Cj4gPiArICAgICAgICAgICAgICAgICAg
ICAgc2UtPmNrcHRfdmFsaWRfYmxvY2tzICs9IDE7Cj4gPiArICAgICAgICAgICAgICAgICAgICAg
aWYgKF9faXNfbGFyZ2Vfc2VjdGlvbihzYmkpKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2V0X3NlY19lbnRyeShzYmksIHNlZ25vKS0+Y2twdF92YWxpZF9ibG9ja3MgKz0gMTsK
PiA+ICsgICAgICAgICAgICAgfQo+ID4gICAgICAgfQo+ID4KPiA+ICAgICAgIGlmIChfX2lzX2xh
cmdlX3NlY3Rpb24oc2JpKSkKPiA+IEBAIC0yNTg1LDkgKzI1OTIsMTQgQEAgdm9pZCBmMmZzX2lu
dmFsaWRhdGVfYmxvY2tzKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgYmxvY2tfdCBhZGRyLAo+
ID4gICAgICAgdW5zaWduZWQgaW50IHNlZ25vID0gR0VUX1NFR05PKHNiaSwgYWRkcik7Cj4gPiAg
ICAgICBzdHJ1Y3Qgc2l0X2luZm8gKnNpdF9pID0gU0lUX0koc2JpKTsKPiA+ICAgICAgIGJsb2Nr
X3QgYWRkcl9zdGFydCA9IGFkZHIsIGFkZHJfZW5kID0gYWRkciArIGxlbiAtIDE7Cj4gPiAtICAg
ICB1bnNpZ25lZCBpbnQgc2VnX251bSA9IEdFVF9TRUdOTyhzYmksIGFkZHJfZW5kKSAtIHNlZ25v
ICsgMTsKPiA+ICsgICAgIHVuc2lnbmVkIGludCBzZWdfbnVtOwo+ID4gICAgICAgdW5zaWduZWQg
aW50IGkgPSAxLCBtYXhfYmxvY2tzID0gc2JpLT5ibG9ja3NfcGVyX3NlZywgY250Owo+ID4KPiA+
ICsgICAgIGlmIChsZW4gPT0gMCkKPiA+ICsgICAgICAgICAgICAgcmV0dXJuOwo+ID4gKwo+ID4g
KyAgICAgc2VnX251bSA9IEdFVF9TRUdOTyhzYmksIGFkZHJfZW5kKSAtIHNlZ25vICsgMTsKPiA+
ICsKPiA+ICAgICAgIGYyZnNfYnVnX29uKHNiaSwgYWRkciA9PSBOVUxMX0FERFIpOwo+ID4gICAg
ICAgaWYgKGFkZHIgPT0gTkVXX0FERFIgfHwgYWRkciA9PSBDT01QUkVTU19BRERSKQo+ID4gICAg
ICAgICAgICAgICByZXR1cm47Cj4gPiBAQCAtMjYyMCw2ICsyNjMyLDUyIEBAIHZvaWQgZjJmc19p
bnZhbGlkYXRlX2Jsb2NrcyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIGJsb2NrX3QgYWRkciwK
PiA+ICAgICAgIHVwX3dyaXRlKCZzaXRfaS0+c2VudHJ5X2xvY2spOwo+ID4gICB9Cj4gPgo+ID4g
K3ZvaWQgZjJmc19yZXNlcnZlX2RldmljZV9hbGlhcyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmks
IGJsb2NrX3QgYWRkciwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCBsZW4pCj4gPiArewo+ID4gKyAgICAgdW5zaWduZWQgaW50IHNlZ25vID0gR0VUX1NFR05P
KHNiaSwgYWRkcik7Cj4gPiArICAgICBzdHJ1Y3Qgc2l0X2luZm8gKnNpdF9pID0gU0lUX0koc2Jp
KTsKPiA+ICsgICAgIGJsb2NrX3QgYWRkcl9zdGFydCA9IGFkZHIsIGFkZHJfZW5kID0gYWRkciAr
IGxlbiAtIDE7Cj4gPiArICAgICB1bnNpZ25lZCBpbnQgc2VnX251bTsKPiA+ICsgICAgIHVuc2ln
bmVkIGludCBpID0gMSwgbWF4X2Jsb2NrcyA9IHNiaS0+YmxvY2tzX3Blcl9zZWcsIGNudDsKPiA+
ICsKPiA+ICsgICAgIGlmIChsZW4gPT0gMCkKPiA+ICsgICAgICAgICAgICAgcmV0dXJuOwo+ID4g
Kwo+ID4gKyAgICAgc2VnX251bSA9IEdFVF9TRUdOTyhzYmksIGFkZHJfZW5kKSAtIHNlZ25vICsg
MTsKPiA+ICsKPiA+ICsgICAgIGRvd25fd3JpdGUoJnNpdF9pLT5zZW50cnlfbG9jayk7Cj4gPiAr
Cj4gPiArICAgICBpZiAoc2VnX251bSA9PSAxKQo+ID4gKyAgICAgICAgICAgICBjbnQgPSBsZW47
Cj4gPiArICAgICBlbHNlCj4gPiArICAgICAgICAgICAgIGNudCA9IG1heF9ibG9ja3MgLSBHRVRf
QkxLT0ZGX0ZST01fU0VHMChzYmksIGFkZHIpOwo+ID4gKwo+ID4gKyAgICAgZG8gewo+ID4gKyAg
ICAgICAgICAgICB1cGRhdGVfc2VnbWVudF9tdGltZShzYmksIGFkZHJfc3RhcnQsIDApOwo+ID4g
KyAgICAgICAgICAgICB1cGRhdGVfc2l0X2VudHJ5KHNiaSwgYWRkcl9zdGFydCwgY250KTsKPiA+
ICsgICAgICAgICAgICAgX19zZXRfdGVzdF9hbmRfaW51c2Uoc2JpLCBzZWdubyk7Cj4gPiArCj4g
PiArICAgICAgICAgICAgIC8qIFJlbW92ZSB0aGUgc2VnbWVudCBmcm9tIFBSRSAocHJlZnJlZSkg
dG8gcHJldmVudCBjaGVja3BvaW50IGZyb20gZnJlZWluZyBpdCEgKi8KPiA+ICsgICAgICAgICAg
ICAgbXV0ZXhfbG9jaygmRElSVFlfSShzYmkpLT5zZWdsaXN0X2xvY2spOwo+ID4gKyAgICAgICAg
ICAgICBpZiAodGVzdF9hbmRfY2xlYXJfYml0KHNlZ25vLCBESVJUWV9JKHNiaSktPmRpcnR5X3Nl
Z21hcFtQUkVdKSkKPiA+ICsgICAgICAgICAgICAgICAgICAgICBESVJUWV9JKHNiaSktPm5yX2Rp
cnR5W1BSRV0tLTsKPiA+ICsgICAgICAgICAgICAgbXV0ZXhfdW5sb2NrKCZESVJUWV9JKHNiaSkt
PnNlZ2xpc3RfbG9jayk7Cj4gPiArCj4gPiArICAgICAgICAgICAgIC8qIGFkZCBpdCBpbnRvIGRp
cnR5IHNlZ2xpc3QgKi8KPiA+ICsgICAgICAgICAgICAgbG9jYXRlX2RpcnR5X3NlZ21lbnQoc2Jp
LCBzZWdubyk7Cj4gPiArCj4gPiArICAgICAgICAgICAgIC8qIHVwZGF0ZSBAYWRkcl9zdGFydCBh
bmQgQGNudCBhbmQgQHNlZ25vICovCj4gPiArICAgICAgICAgICAgIGFkZHJfc3RhcnQgPSBTVEFS
VF9CTE9DSyhzYmksICsrc2Vnbm8pOwo+ID4gKyAgICAgICAgICAgICBpZiAoKytpID09IHNlZ19u
dW0pCj4gPiArICAgICAgICAgICAgICAgICAgICAgY250ID0gR0VUX0JMS09GRl9GUk9NX1NFRzAo
c2JpLCBhZGRyX2VuZCkgKyAxOwo+ID4gKyAgICAgICAgICAgICBlbHNlCj4gPiArICAgICAgICAg
ICAgICAgICAgICAgY250ID0gbWF4X2Jsb2NrczsKPiA+ICsgICAgIH0gd2hpbGUgKGkgPD0gc2Vn
X251bSk7Cj4gPiArCj4gPiArICAgICB1cF93cml0ZSgmc2l0X2ktPnNlbnRyeV9sb2NrKTsKPiA+
ICt9Cj4gPiArCj4gPiAgIGJvb2wgZjJmc19pc19jaGVja3BvaW50ZWRfZGF0YShzdHJ1Y3QgZjJm
c19zYl9pbmZvICpzYmksIGJsb2NrX3QgYmxrYWRkcikKPiA+ICAgewo+ID4gICAgICAgc3RydWN0
IHNpdF9pbmZvICpzaXRfaSA9IFNJVF9JKHNiaSk7Cj4gPiBAQCAtMjc1OCw4ICsyODE2LDEzIEBA
IHN0YXRpYyBpbnQgaXNfbmV4dF9zZWdtZW50X2ZyZWUoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2Jp
LAo+ID4gICAgICAgdW5zaWduZWQgaW50IHNlZ25vID0gY3Vyc2VnLT5zZWdubyArIDE7Cj4gPiAg
ICAgICBzdHJ1Y3QgZnJlZV9zZWdtYXBfaW5mbyAqZnJlZV9pID0gRlJFRV9JKHNiaSk7Cj4gPgo+
ID4gLSAgICAgaWYgKHNlZ25vIDwgTUFJTl9TRUdTKHNiaSkgJiYgc2Vnbm8gJSBTRUdTX1BFUl9T
RUMoc2JpKSkKPiA+ICsgICAgIGlmIChzZWdubyA8IE1BSU5fU0VHUyhzYmkpICYmIHNlZ25vICUg
U0VHU19QRVJfU0VDKHNiaSkpIHsKPiA+ICsgICAgICAgICAgICAgaW50IGRldmkgPSBmMmZzX3Rh
cmdldF9kZXZpY2VfaW5kZXgoc2JpLCBTVEFSVF9CTE9DSyhzYmksIHNlZ25vKSk7Cj4gPiArCj4g
PiArICAgICAgICAgICAgIGlmIChmMmZzX2Rldl9pc19yZXNlcnZpbmcoc2JpLCBkZXZpKSkKPiA+
ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKPiA+ICAgICAgICAgICAgICAgcmV0dXJu
ICF0ZXN0X2JpdChzZWdubywgZnJlZV9pLT5mcmVlX3NlZ21hcCk7Cj4gPiArICAgICB9Cj4gPiAg
ICAgICByZXR1cm4gMDsKPiA+ICAgfQo+ID4KPiA+IEBAIC0yNzc4LDcgKzI4NDEsOCBAQCBzdGF0
aWMgaW50IGdldF9uZXdfc2VnbWVudChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPiAgICAg
ICB1bnNpZ25lZCBpbnQgYWxsb2NfcG9saWN5ID0gc2JpLT5hbGxvY2F0ZV9zZWN0aW9uX3BvbGlj
eTsKPiA+ICAgICAgIHVuc2lnbmVkIGludCBhbGxvY19oaW50ID0gc2JpLT5hbGxvY2F0ZV9zZWN0
aW9uX2hpbnQ7Cj4gPiAgICAgICBib29sIGluaXQgPSB0cnVlOwo+ID4gLSAgICAgaW50IGk7Cj4g
PiArICAgICBib29sIGxvb3BlZCA9IGZhbHNlOwo+ID4gKyAgICAgaW50IGksIGRldmk7Cj4gPiAg
ICAgICBpbnQgcmV0ID0gMDsKPiA+Cj4gPiAgICAgICBzcGluX2xvY2soJmZyZWVfaS0+c2VnbWFw
X2xvY2spOwo+ID4gQEAgLTI3OTEsOCArMjg1NSwxMyBAQCBzdGF0aWMgaW50IGdldF9uZXdfc2Vn
bWVudChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPiAgICAgICBpZiAoIW5ld19zZWMgJiYg
KCgqbmV3c2VnICsgMSkgJSBTRUdTX1BFUl9TRUMoc2JpKSkpIHsKPiA+ICAgICAgICAgICAgICAg
c2Vnbm8gPSBmaW5kX25leHRfemVyb19iaXQoZnJlZV9pLT5mcmVlX3NlZ21hcCwKPiA+ICAgICAg
ICAgICAgICAgICAgICAgICBHRVRfU0VHX0ZST01fU0VDKHNiaSwgaGludCArIDEpLCAqbmV3c2Vn
ICsgMSk7Cj4gPiAtICAgICAgICAgICAgIGlmIChzZWdubyA8IEdFVF9TRUdfRlJPTV9TRUMoc2Jp
LCBoaW50ICsgMSkpCj4gPiArICAgICAgICAgICAgIGlmIChzZWdubyA8IEdFVF9TRUdfRlJPTV9T
RUMoc2JpLCBoaW50ICsgMSkpIHsKPiA+ICsgICAgICAgICAgICAgICAgICAgICBkZXZpID0gZjJm
c190YXJnZXRfZGV2aWNlX2luZGV4KHNiaSwgU1RBUlRfQkxPQ0soc2JpLCBzZWdubykpOwo+ID4g
Kwo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGlmIChmMmZzX2Rldl9pc19hbGxvY19ibG9ja2Vk
KHNiaSwgZGV2aSwgcGlubmluZykpCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
b3RvIGZpbmRfb3RoZXJfem9uZTsKPiA+ICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGdvdF9p
dDsKPiA+ICsgICAgICAgICAgICAgfQo+ID4gICAgICAgfQo+ID4KPiA+ICAgI2lmZGVmIENPTkZJ
R19CTEtfREVWX1pPTkVECj4gPiBAQCAtMjgyOCwzMyArMjg5Nyw0MiBAQCBzdGF0aWMgaW50IGdl
dF9uZXdfc2VnbWVudChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4gPiAgIGZpbmRfb3RoZXJf
em9uZToKPiA+ICAgICAgIHNlY25vID0gZmluZF9uZXh0X3plcm9fYml0KGZyZWVfaS0+ZnJlZV9z
ZWNtYXAsIE1BSU5fU0VDUyhzYmkpLCBoaW50KTsKPiA+Cj4gPiAtI2lmZGVmIENPTkZJR19CTEtf
REVWX1pPTkVECj4gPiAtICAgICBpZiAoc2Vjbm8gPj0gTUFJTl9TRUNTKHNiaSkgJiYgZjJmc19z
Yl9oYXNfYmxrem9uZWQoc2JpKSkgewo+ID4gLSAgICAgICAgICAgICAvKiBXcml0ZSBvbmx5IHRv
IHNlcXVlbnRpYWwgem9uZXMgKi8KPiA+IC0gICAgICAgICAgICAgaWYgKHNiaS0+Ymxrem9uZV9h
bGxvY19wb2xpY3kgPT0gQkxLWk9ORV9BTExPQ19PTkxZX1NFUSkgewo+ID4gLSAgICAgICAgICAg
ICAgICAgICAgIGhpbnQgPSBHRVRfU0VDX0ZST01fU0VHKHNiaSwgc2JpLT5maXJzdF9zZXFfem9u
ZV9zZWdubyk7Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgc2Vjbm8gPSBmaW5kX25leHRfemVy
b19iaXQoZnJlZV9pLT5mcmVlX3NlY21hcCwgTUFJTl9TRUNTKHNiaSksIGhpbnQpOwo+ID4gLSAg
ICAgICAgICAgICB9IGVsc2UKPiA+IC0gICAgICAgICAgICAgICAgICAgICBzZWNubyA9IGZpbmRf
Zmlyc3RfemVyb19iaXQoZnJlZV9pLT5mcmVlX3NlY21hcCwKPiA+IC0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFJTl9TRUNTKHNi
aSkpOwo+ID4gLSAgICAgICAgICAgICBpZiAoc2Vjbm8gPj0gTUFJTl9TRUNTKHNiaSkpIHsKPiA+
IC0gICAgICAgICAgICAgICAgICAgICByZXQgPSAtRU5PU1BDOwo+ID4gLSAgICAgICAgICAgICAg
ICAgICAgIGYyZnNfYnVnX29uKHNiaSwgMSk7Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgZ290
byBvdXRfdW5sb2NrOwo+ID4gLSAgICAgICAgICAgICB9Cj4gPiAtICAgICB9Cj4gPiAtI2VuZGlm
Cj4gPiAtCj4gPiAgICAgICBpZiAoc2Vjbm8gPj0gTUFJTl9TRUNTKHNiaSkpIHsKPiA+IC0gICAg
ICAgICAgICAgc2Vjbm8gPSBmaW5kX2ZpcnN0X3plcm9fYml0KGZyZWVfaS0+ZnJlZV9zZWNtYXAs
Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBNQUlOX1NFQ1Moc2JpKSk7Cj4gPiAtICAgICAgICAgICAgIGlmIChzZWNubyA+PSBNQUlOX1NF
Q1Moc2JpKSkgewo+ID4gKyAgICAgICAgICAgICBpZiAobG9vcGVkKSB7Cj4gPiAgICAgICAgICAg
ICAgICAgICAgICAgcmV0ID0gLUVOT1NQQzsKPiA+ICAgICAgICAgICAgICAgICAgICAgICBmMmZz
X2J1Z19vbihzYmksICFwaW5uaW5nKTsKPiA+ICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91
dF91bmxvY2s7Cj4gPiAgICAgICAgICAgICAgIH0KPiA+ICsgICAgICAgICAgICAgaGludCA9IDA7
Cj4gPiArI2lmZGVmIENPTkZJR19CTEtfREVWX1pPTkVECj4gPiArICAgICAgICAgICAgIC8qIFdy
aXRlIG9ubHkgdG8gc2VxdWVudGlhbCB6b25lcyAqLwo+ID4gKyAgICAgICAgICAgICBpZiAoZjJm
c19zYl9oYXNfYmxrem9uZWQoc2JpKSAmJgo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHNiaS0+
Ymxrem9uZV9hbGxvY19wb2xpY3kgPT0gQkxLWk9ORV9BTExPQ19PTkxZX1NFUSkKPiA+ICsgICAg
ICAgICAgICAgICAgICAgICBoaW50ID0gR0VUX1NFQ19GUk9NX1NFRyhzYmksIHNiaS0+Zmlyc3Rf
c2VxX3pvbmVfc2Vnbm8pOwo+ID4gKyNlbmRpZgo+ID4gKyAgICAgICAgICAgICBsb29wZWQgPSB0
cnVlOwo+ID4gKyAgICAgICAgICAgICBnb3RvIGZpbmRfb3RoZXJfem9uZTsKPiA+ICAgICAgIH0K
PiA+ICsKPiA+ICAgICAgIHNlZ25vID0gR0VUX1NFR19GUk9NX1NFQyhzYmksIHNlY25vKTsKPiA+
ICsKPiA+ICsgICAgIGRldmkgPSBmMmZzX3RhcmdldF9kZXZpY2VfaW5kZXgoc2JpLCBTVEFSVF9C
TE9DSyhzYmksIHNlZ25vKSk7Cj4gPiArCj4gPiArICAgICBpZiAoZjJmc19kZXZfaXNfYWxsb2Nf
YmxvY2tlZChzYmksIGRldmksIHBpbm5pbmcpKSB7Cj4gPiArICAgICAgICAgICAgIHdoaWxlIChk
ZXZpIDwgc2JpLT5zX25kZXZzICYmCj4gPiArICAgICAgICAgICAgICAgICAgICAgZjJmc19kZXZf
aXNfYWxsb2NfYmxvY2tlZChzYmksIGRldmksIHBpbm5pbmcpKSB7Cj4gPiArICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW50IGVuZF9zZWdubyA9IEdFVF9TRUdOTyhzYmksIEZERVYoZGV2
aSkuZW5kX2Jsayk7Cj4gPiArCj4gPiArICAgICAgICAgICAgICAgICAgICAgaGludCA9IEdFVF9T
RUNfRlJPTV9TRUcoc2JpLCBlbmRfc2Vnbm8pICsgMTsKPiA+ICsgICAgICAgICAgICAgICAgICAg
ICBkZXZpKys7Cj4gPiArICAgICAgICAgICAgIH0KPiA+ICsgICAgICAgICAgICAgZ290byBmaW5k
X290aGVyX3pvbmU7Cj4gPiArICAgICB9Cj4gPiArCj4gPiArICAgICBpZiAoc2VjX3VzYWdlX2No
ZWNrKHNiaSwgc2Vjbm8pKSB7Cj4gPiArICAgICAgICAgICAgIGhpbnQgPSBzZWNubyArIDE7Cj4g
PiArICAgICAgICAgICAgIGdvdG8gZmluZF9vdGhlcl96b25lOwo+ID4gKyAgICAgfQo+ID4gICAg
ICAgem9uZW5vID0gR0VUX1pPTkVfRlJPTV9TRUMoc2JpLCBzZWNubyk7Cj4gPgo+ID4gICAgICAg
LyogZ2l2ZSB1cCBvbiBmaW5kaW5nIGFub3RoZXIgem9uZSAqLwo+ID4gZGlmZiAtLWdpdCBhL2Zz
L2YyZnMvc2VnbWVudC5oIGIvZnMvZjJmcy9zZWdtZW50LmgKPiA+IGluZGV4IGIwYzA2YjM1ODBi
NC4uMTA3NTA4YWU3ZWIzIDEwMDY0NAo+ID4gLS0tIGEvZnMvZjJmcy9zZWdtZW50LmgKPiA+ICsr
KyBiL2ZzL2YyZnMvc2VnbWVudC5oCj4gPiBAQCAtOTU0LDEwICs5NTQsMzIgQEAgc3RhdGljIGlu
bGluZSBibG9ja190IHN1bV9ibGtfYWRkcihzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIGludCBi
YXNlLCBpbnQgdHlwZSkKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gKGJhc2Ug
KyAxKSArIHR5cGU7Cj4gPiAgIH0KPiA+Cj4gPiArc3RhdGljIGlubGluZSBib29sIGYyZnNfZGV2
X2lzX3Jlc2VydmluZyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIGludCBkZXZpKQo+ID4gK3sK
PiA+ICsgICAgIGlmICghZjJmc19zYl9oYXNfZGV2aWNlX2FsaWFzKHNiaSkpCj4gPiArICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKPiA+ICsgICAgIHJldHVybiBGREVWKGRldmkpLmlzX3Jlc2Vy
dmluZzsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGlubGluZSBib29sIGYyZnNfZGV2X2lzX2Fs
bG9jX2Jsb2NrZWQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ID4gKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGV2aSwgYm9vbCBwaW5uaW5nKQo+ID4gK3sKPiA+
ICsgICAgIGlmICghZjJmc19zYl9oYXNfZGV2aWNlX2FsaWFzKHNiaSkpCj4gPiArICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKPiA+ICsgICAgIHJldHVybiAocGlubmluZyAmJiBGREVWKGRldmkp
Lmhhc19hbGlhcykgfHwgRkRFVihkZXZpKS5pc19yZXNlcnZpbmc7Cj4gPiArfQo+ID4gKwo+ID4g
ICBzdGF0aWMgaW5saW5lIGJvb2wgc2VjX3VzYWdlX2NoZWNrKHN0cnVjdCBmMmZzX3NiX2luZm8g
KnNiaSwgdW5zaWduZWQgaW50IHNlY25vKQo+ID4gICB7Cj4gPiAgICAgICBpZiAoaXNfY3Vyc2Vj
KHNiaSwgc2Vjbm8pIHx8IChzYmktPmN1cl92aWN0aW1fc2VjID09IHNlY25vKSkKPiA+ICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Cj4gPiArICAgICBpZiAoZjJmc19zYl9oYXNfZGV2aWNlX2Fs
aWFzKHNiaSkpIHsKPiA+ICsgICAgICAgICAgICAgYmxvY2tfdCBzdGFydF9ibGsgPSBTVEFSVF9C
TE9DSyhzYmksIEdFVF9TRUdfRlJPTV9TRUMoc2JpLCBzZWNubykpOwo+ID4gKyAgICAgICAgICAg
ICBpbnQgZGV2aSA9IGYyZnNfdGFyZ2V0X2RldmljZV9pbmRleChzYmksIHN0YXJ0X2Jsayk7Cj4g
PiArCj4gPiArICAgICAgICAgICAgIGlmIChmMmZzX2Rldl9pc19yZXNlcnZpbmcoc2JpLCBkZXZp
KSkKPiA+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKPiA+ICsgICAgIH0KPiA+
ICAgICAgIHJldHVybiBmYWxzZTsKPiA+ICAgfQo+ID4KPiA+IGRpZmYgLS1naXQgYS9mcy9mMmZz
L3N1cGVyLmMgYi9mcy9mMmZzL3N1cGVyLmMKPiA+IGluZGV4IGM0NDhkOTkyZmYyYS4uZDVkYzgz
ZTYxM2UyIDEwMDY0NAo+ID4gLS0tIGEvZnMvZjJmcy9zdXBlci5jCj4gPiArKysgYi9mcy9mMmZz
L3N1cGVyLmMKPiA+IEBAIC01MDAxLDYgKzUwMDEsMzkgQEAgc3RhdGljIHZvaWQgZjJmc190dW5p
bmdfcGFyYW1ldGVycyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkpCj4gPiAgICAgICBzYmktPnJl
YWRkaXJfcmEgPSB0cnVlOwo+ID4gICB9Cj4gPgo+ID4gK3N0YXRpYyB2b2lkIGYyZnNfcmVzdG9y
ZV9kZXZpY2VfYWxpYXMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKQo+ID4gK3sKPiA+ICsgICAg
IHN0cnVjdCBpbm9kZSAqcm9vdCA9IGRfaW5vZGUoc2JpLT5zYi0+c19yb290KTsKPiA+ICsgICAg
IHN0cnVjdCBmMmZzX2Rpcl9lbnRyeSAqZGU7Cj4gPiArICAgICBzdHJ1Y3QgZm9saW8gKmZvbGlv
Owo+ID4gKyAgICAgaW50IGk7Cj4gPiArCj4gPiArICAgICBpZiAoIWYyZnNfc2JfaGFzX2Rldmlj
ZV9hbGlhcyhzYmkpKQo+ID4gKyAgICAgICAgICAgICByZXR1cm47Cj4gPiArCj4gPiArICAgICBm
b3IgKGkgPSAxOyBpIDwgc2JpLT5zX25kZXZzOyBpKyspIHsKPiA+ICsgICAgICAgICAgICAgY2hh
ciAqbmFtZSA9IHN0cnJjaHIoRkRFVihpKS5wYXRoLCAnLycpOwo+ID4gKyAgICAgICAgICAgICBz
dHJ1Y3QgaW5vZGUgKmlub2RlOwo+ID4gKyAgICAgICAgICAgICBzdHJ1Y3QgcXN0ciBxc3RyOwo+
ID4gKwo+ID4gKyAgICAgICAgICAgICBuYW1lID0gbmFtZSA/IG5hbWUgKyAxIDogRkRFVihpKS5w
YXRoOwo+ID4gKyAgICAgICAgICAgICBxc3RyLm5hbWUgPSBuYW1lOwo+ID4gKyAgICAgICAgICAg
ICBxc3RyLmxlbiA9IHN0cmxlbihuYW1lKTsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgZGUgPSBm
MmZzX2ZpbmRfZW50cnkocm9vdCwgJnFzdHIsICZmb2xpbyk7Cj4gPiArICAgICAgICAgICAgIGlm
ICghZGUpCj4gPiArICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gPiArCj4gPiArICAg
ICAgICAgICAgIGlub2RlID0gZjJmc19pZ2V0KHNiaS0+c2IsIGxlMzJfdG9fY3B1KGRlLT5pbm8p
KTsKPiA+ICsgICAgICAgICAgICAgaWYgKCFJU19FUlIoaW5vZGUpKSB7Cj4gPiArICAgICAgICAg
ICAgICAgICAgICAgaWYgKElTX0RFVklDRV9BTElBU0lORyhpbm9kZSkpCj4gPiArICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBGREVWKGkpLmhhc19hbGlhcyA9IHRydWU7Cj4gPiArICAgICAg
ICAgICAgICAgICAgICAgaXB1dChpbm9kZSk7Cj4gPiArICAgICAgICAgICAgIH0KPiA+ICsgICAg
ICAgICAgICAgZjJmc19mb2xpb19wdXQoZm9saW8sIDApOwo+ID4gKyAgICAgfQo+ID4gK30KPiA+
ICsKPiA+ICAgc3RhdGljIGludCBmMmZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpz
Yiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKQo+ID4gICB7Cj4gPiAgICAgICBzdHJ1Y3QgZjJmc19m
c19jb250ZXh0ICpjdHggPSBmYy0+ZnNfcHJpdmF0ZTsKPiA+IEBAIC01MjA5LDYgKzUyNDIsNyBA
QCBzdGF0aWMgaW50IGYyZnNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1
Y3QgZnNfY29udGV4dCAqZmMpCj4gPiAgICAgICBzYmktPmxhc3RfdmFsaWRfYmxvY2tfY291bnQg
PSBzYmktPnRvdGFsX3ZhbGlkX2Jsb2NrX2NvdW50Owo+ID4gICAgICAgc2JpLT5yZXNlcnZlZF9i
bG9ja3MgPSAwOwo+ID4gICAgICAgc2JpLT5jdXJyZW50X3Jlc2VydmVkX2Jsb2NrcyA9IDA7Cj4g
PiArICAgICBzYmktPmFsaWFzX3Jlc2VydmVkX2Jsb2NrcyA9IDA7Cj4gPiAgICAgICBsaW1pdF9y
ZXNlcnZlX3Jvb3Qoc2JpKTsKPiA+ICAgICAgIGFkanVzdF91bnVzYWJsZV9jYXBfcGVyYyhzYmkp
Owo+ID4KPiA+IEBAIC01NDM2LDYgKzU0NzAsOCBAQCBzdGF0aWMgaW50IGYyZnNfZmlsbF9zdXBl
cihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpCj4gPiAgICAg
ICBmMmZzX3VwZGF0ZV90aW1lKHNiaSwgUkVRX1RJTUUpOwo+ID4gICAgICAgY2xlYXJfc2JpX2Zs
YWcoc2JpLCBTQklfQ1BfRElTQUJMRURfUVVJQ0spOwo+ID4KPiA+ICsgICAgIGYyZnNfcmVzdG9y
ZV9kZXZpY2VfYWxpYXMoc2JpKTsKPiA+ICsKPiA+ICAgICAgIHNiaS0+dW1vdW50X2xvY2tfaG9s
ZGVyID0gTlVMTDsKPiA+ICAgICAgIHJldHVybiAwOwo+ID4KPiA+IGRpZmYgLS1naXQgYS9pbmNs
dWRlL3VhcGkvbGludXgvZjJmcy5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2YyZnMuaAo+ID4gaW5k
ZXggNzk1ZTI2MjU4MzU1Li40NDA5YWRhMmZlY2IgMTAwNjQ0Cj4gPiAtLS0gYS9pbmNsdWRlL3Vh
cGkvbGludXgvZjJmcy5oCj4gPiArKysgYi9pbmNsdWRlL3VhcGkvbGludXgvZjJmcy5oCj4gPiBA
QCAtNDUsNiArNDUsOSBAQAo+ID4gICAjZGVmaW5lIEYyRlNfSU9DX1NUQVJUX0FUT01JQ19SRVBM
QUNFICAgICAgIF9JTyhGMkZTX0lPQ1RMX01BR0lDLCAyNSkKPiA+ICAgI2RlZmluZSBGMkZTX0lP
Q19HRVRfREVWX0FMSUFTX0ZJTEUgX0lPUihGMkZTX0lPQ1RMX01BR0lDLCAyNiwgX191MzIpCj4g
PiAgICNkZWZpbmUgRjJGU19JT0NfSU9fUFJJTyAgICAgICAgICAgIF9JT1coRjJGU19JT0NUTF9N
QUdJQywgMjcsIF9fdTMyKQo+ID4gKyNkZWZpbmUgRjJGU19JT0NfUkVTRVJWRV9ERVZfQUxJQVMg
ICBfSU8oRjJGU19JT0NUTF9NQUdJQywgMjgpCj4gPiArI2RlZmluZSBGMkZTX0lPQ19SRUxFQVNF
X0RFVl9BTElBUyAgIF9JTyhGMkZTX0lPQ1RMX01BR0lDLCAyOSkKPiA+ICsjZGVmaW5lIEYyRlNf
SU9DX0dFVF9ERVZfQUxJQVNfU1RBVFVTICAgICAgICBfSU9SKEYyRlNfSU9DVExfTUFHSUMsIDMw
LCBfX3UzMikKPiA+Cj4gPiAgIC8qCj4gPiAgICAqIHNob3VsZCBiZSBzYW1lIGFzIFhGU19JT0Nf
R09JTkdET1dOLgo+ID4gQEAgLTcwLDYgKzczLDEwIEBAIGVudW0gewo+ID4gICAgICAgRjJGU19J
T1BSSU9fTUFYLAo+ID4gICB9Owo+ID4KPiA+ICsvKiBmb3IgRjJGU19JT0NfR0VUX0RFVl9BTElB
U19TVEFUVVMgKi8KPiA+ICsjZGVmaW5lIEYyRlNfREVWX0FMSUFTX1NUQVRVU19SRUxFQVNFRCAg
ICAgICAwCj4gPiArI2RlZmluZSBGMkZTX0RFVl9BTElBU19TVEFUVVNfUkVTRVJWRUQgICAgICAg
MQo+ID4gKwo+ID4gICBzdHJ1Y3QgZjJmc19nY19yYW5nZSB7Cj4gPiAgICAgICBfX3UzMiBzeW5j
Owo+ID4gICAgICAgX191NjQgc3RhcnQ7Cj4KCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpMaW51eC1mMmZzLWRldmVsIG1haWxpbmcgbGlzdApMaW51eC1m
MmZzLWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldApodHRwczovL2xpc3RzLnNvdXJjZWZvcmdl
Lm5ldC9saXN0cy9saXN0aW5mby9saW51eC1mMmZzLWRldmVsCg==