RE: [PATCH v9 2/2] media: i2c: add driver for ITE IT6625/IT6626

<[email protected]> Mon, 3 Aug 2026 11:25:31 +0000
Newsgroups org.kernel.vger.linux-media,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
SGkgSGFucywNCg0KPi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+RnJvbTogSGFucyBWZXJr
dWlsIDxodmVya3VpbCtjaXNjb0BrZXJuZWwub3JnPiANCj5TZW50OiBGcmlkYXksIEp1bHkgMzEs
IDIwMjYgNzo1NyBQTQ0KPlRvOiBIZXJtZXMgV3UgKOWQs+S9s+WujykgPEhlcm1lcy5XdUBpdGUu
Y29tLnR3PjsgTWF1cm8gQ2FydmFsaG8gQ2hlaGFiIDxtY2hlaGFiQGtlcm5lbC5vcmc+OyBSb2Ig
SGVycmluZyA8cm9iaEBrZXJuZWwub3JnPjsgS3J6eXN6dG9mIEtvemxvd3NraSA8a3J6aytkdEBr
ZXJuZWwub3JnPjsgQ29ub3IgRG9vbGV5IDxjb25vcitkdEBrZXJuZWwub3JnPg0KPkNjOiBsaW51
eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmc7IGRldmljZXRyZWVAdmdlci5rZXJuZWwub3JnOyBsaW51
eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnDQo+U3ViamVjdDogUmU6IFtQQVRDSCB2OSAyLzJdIG1l
ZGlhOiBpMmM6IGFkZCBkcml2ZXIgZm9yIElURSBJVDY2MjUvSVQ2NjI2DQo+DQo+SGkgSGVybWVz
LA0KPg0KPlRoYW5rIHlvdSBmb3IgcG9zdGluZyB0aGlzIGRyaXZlciENCj4NCj5TZWUgYmVsb3cg
Zm9yIG15IGNvZGUgcmV2aWV3Lg0KPg0KPk9uZSBoaWdoLWxldmVsIHF1ZXN0aW9uOiBob3cgaXMg
dGhpcyBkcml2ZXIgdGVzdGVkLCBzcGVjaWZpY2FsbHkgd2l0aCB3aGF0IENTSS9jYXB0dXJlDQo+
ZHJpdmVyPw0KPg0KPkNhbiB5b3UgcHJvdmlkZSB0aGUgJ3Y0bDItY29tcGxpYW5jZSBvdXRwdXQg
LXMnIHdpdGggdGhhdCBkcml2ZXI/DQo+DQo+SSBzdXNwZWN0IHRoYXQgdGhlIElUNjYyNiBpcyBj
dXJyZW50bHkgbGltaXRlZCB0byBIRE1JIDIuMCwgaXMgdGhhdCBjb3JyZWN0PyBJZiBzbywNCj50
aGVuIHRoYXQgc2hvdWxkIGJlIGRvY3VtZW50ZWQgc29tZXdoZXJlIGluIHRoZSBjb2RlIChpdCBt
aWdodCBiZSB0aGVyZSBhbHJlYWR5LA0KPmluIHRoYXQgY2FzZSBJIG1pc3NlZCBpdCkuDQo+DQo+
T24gMzAvMDcvMjAyNiAwODo1NSwgSGVybWVzIFd1IHZpYSBCNCBSZWxheSB3cm90ZToNCj4+IEZy
b206IEhlcm1lcyBXdSA8SGVybWVzLnd1QGl0ZS5jb20udHc+DQo+PiANCj4+IEFkZCBhIFY0TDIg
c3ViZGV2aWNlIGRyaXZlciBmb3IgdGhlIElURSBJVDY2MjUvSVQ2NjI2IEhETUktdG8tTUlQSQ0K
Pj4gQ1NJLTIgYnJpZGdlIGNoaXBzLiBJVDY2MjUgYWNjZXB0cyBhbiBIRE1JIDIuMCBpbnB1dCBh
bmQgSVQ2NjI2IGFuDQo+PiBIRE1JIDIuMSBpbnB1dCwgY29udmVydGluZyBpdCB0byBhIEQtUEhZ
IChvciBDL0QtUEhZIG9uIElUNjYyNikNCj4+IE1JUEkgQ1NJLTIgb3V0cHV0LiBUaGUgYnJpZGdl
IGlzIGNvbmZpZ3VyZWQgb3ZlciBJMkMsIGV4cG9zZXMgYW4NCj4+IEhETUkgQ0VDIGFkYXB0ZXIs
IGFuZCBzdXBwb3J0cyBFRElEIHJlYWQvd3JpdGUsIERWIHRpbWluZ3MNCj4+IGRldGVjdGlvbi9j
b25maWd1cmF0aW9uLCBhbmQgSFBEIGNvbnRyb2wgdmlhIHRoZSBzdGFuZGFyZCBWNEwyDQo+PiBz
dWJkZXZpY2UgcGFkIGFuZCB2aWRlbyBvcHMuDQo+PiANCj4+IFNpZ25lZC1vZmYtYnk6IEhlcm1l
cyBXdSA8SGVybWVzLnd1QGl0ZS5jb20udHc+DQo+PiAtLS0NCj4+IENoYW5nZXMgaW4gdjk6DQo+
PiAtIENoYW5nZSBpdDY2MjVfaW50ZXJydXB0X2hhbmRsZXIoKSB0byByZXR1cm4gYm9vbCBhbmQN
Cj4+ICAgaXQ2NjI1X2lycV9oYW5kbGVyKCkgdG8gdHJhbnNsYXRlIHRoYXQgaW50byBJUlFfSEFO
RExFRC9JUlFfTk9ORToNCj4+ICAgdGhlIGhhbmRsZXIgcmV0dXJuZWQgZWFybHkgd2l0aG91dCBj
bGVhcmluZyBSRUdfTUNVX0lOVEVSUlVQVA0KPj4gICB3aGVuZXZlciB0aGUgcmVhZCB3YXMgc3B1
cmlvdXMgKHZhbCA9PSAwKSBvciBmYWlsZWQgKHZhbCA8IDApLCB5ZXQNCj4+ICAgdGhlIElSUSBo
YW5kbGVyIHVuY29uZGl0aW9uYWxseSByZXR1cm5lZCBJUlFfSEFORExFRC4gT24gdGhhdCBwYXRo
DQo+PiAgIG5vIElUNjYyNSBpbnRlcnJ1cHQgc291cmNlIHdhcyBvYnNlcnZlZCBmb3IgdGhpcyBp
bnZvY2F0aW9uLCBzbw0KPj4gICBhbHdheXMgcmVwb3J0aW5nIElSUV9IQU5ETEVEIHJlZ2FyZGxl
c3MgZGVmZWF0cyB0aGUga2VybmVsJ3MNCj4+ICAgc3B1cmlvdXMtSVJRIHN0b3JtIHByb3RlY3Rp
b24sIHdoaWNoIHJlbGllcyBvbiBJUlFfTk9ORSB0byBpZGVudGlmeQ0KPj4gICBhbmQgZGlzYWJs
ZSBtaXNiZWhhdmluZyBsaW5lcy4gTWF0Y2hlcyB0aGUgcGF0dGVybiBhbHJlYWR5IHVzZWQgYnkN
Cj4+ICAgdGMzNTg3NDMuYyBhbmQgYWR2NzYwNC5jLiBGb3VuZCBieSB0aGUgc2FzaGlrby5kZXYg
YXV0b21hdGVkIHJldmlldw0KPj4gICBvZiB2OC4NCj4+IC0gVGFrZSBpdDY2MjVfbG9jayBpbiBp
dDY2MjVfaW5pdGlhbF9zZXR1cCgpOiBpdCB3cm90ZQ0KPj4gICBCX0NPTkZJR19VUERBVEUgdG8g
UkVHX0hPU1RfQ1RSTF9JTlQgYW5kIHBvbGxlZCBmb3IgaXQgdG8gY2xlYXINCj4+ICAgd2l0aG91
dCBob2xkaW5nIHRoZSBsb2NrLCBidXQgaXQgcnVucyBmcm9tIHByb2JlKCkgYWZ0ZXINCj4+ICAg
Y2VjX3JlZ2lzdGVyX2FkYXB0ZXIoKSBoYXMgYWxyZWFkeSBleHBvc2VkIC9kZXYvY2VjWCB0byB1
c2Vyc3BhY2UsDQo+PiAgIGFuZCBpdDY2MjVfY2VjX2FkYXBfdHJhbnNtaXQoKSAocmVhY2hhYmxl
IGltbWVkaWF0ZWx5IHZpYSBhIENFQw0KPj4gICBpb2N0bCkgc2V0cyBCX0NFQ19TRU5EX0RBVEEg
aW4gdGhlIHNhbWUgcmVnaXN0ZXIgdW5kZXIgdGhlIGxvY2suDQo+PiAgIEV2ZXJ5IG90aGVyIGFj
Y2Vzc29yIG9mIFJFR19IT1NUX0NUUkxfSU5UIGFscmVhZHkgdG9vayB0aGUgbG9jazsNCj4+ICAg
dGhpcyB3YXMgdGhlIHNvbGUgZXhjZXB0aW9uLiBTaW5nbGUgY2FsbCBzaXRlLCBsb2NrIGFscmVh
ZHkNCj4+ICAgaW5pdGlhbGl6ZWQgYmVmb3JlIGl0LCBzbyBubyBkZWFkbG9jayBpcyBpbnRyb2R1
Y2VkLiBGb3VuZCBieSB0aGUNCj4+ICAgc2FzaGlrby5kZXYgYXV0b21hdGVkIHJldmlldyBvZiB2
OC4NCj4+IA0KPj4gT25lIG90aGVyIHY4IHJldmlldyBmaW5kaW5nIHdhcyBjaGVja2VkIGFuZCBp
cyBub3QgYmVpbmcgYWN0ZWQgb246DQo+PiAtIGZwc19mcm9tX2J0X3RpbWluZ3MoKSBjb21wdXRp
bmcNCj4+ICAgVjRMMl9EVl9CVF9GUkFNRV9IRUlHSFQodCkgKiBWNEwyX0RWX0JUX0ZSQU1FX1dJ
RFRIKHQpIGFzIGEgMzItYml0DQo+PiAgIHByb2R1Y3QsIHdoaWNoIHRoZSByZXZpZXcgY2xhaW1z
IGNhbiBvdmVyZmxvdyB0byAwIGdpdmVuDQo+PiAgIFY0TDJfRFZfQlRfQ0FQX0NVU1RPTSdzIHJl
bGF4ZWQgbWF0Y2hpbmcuIENoZWNrZWQ6IGl0NjYyNS0+dGltaW5ncywNCj4+ICAgdGhlIG9ubHkg
dmFsdWUgdGhpcyBmdW5jdGlvbiBpcyBldmVyIGNhbGxlZCBvbiwgaXMgcG9wdWxhdGVkIG9ubHkN
Cj4+ICAgYnkgaXQ2NjI1X3VwZGF0ZV90aW1pbmdzX2lmX2NoYW5nZWQoKSwgd2hpY2ggcmVqZWN0
cyBhbnl0aGluZw0KPj4gICBmYWlsaW5nIHY0bDJfdmFsaWRfZHZfdGltaW5ncygpIGFnYWluc3Qg
aXQ2NjI1X3RpbWluZ3NfY2FwICh3aWR0aA0KPj4gICA2NDAtMzg0MCwgaGVpZ2h0IDQ4MC0yMTYw
KSwgb3IgYnkgYSBzdGF0aWMgZGVmYXVsdC4NCj4+ICAgdjRsMl92YWxpZF9kdl90aW1pbmdzKCkg
YWRkaXRpb25hbGx5IGJvdW5kcyBldmVyeSBwb3JjaCBmaWVsZA0KPj4gICAoaGZyb250cG9yY2gv
aHN5bmMvaGJhY2twb3JjaCA8PSAzeCB3aWR0aDsNCj4+ICAgdmZyb250cG9yY2gvdnN5bmMvdmJh
Y2twb3JjaC9pbF8qIDw9IDEwMjQwKS4gR2l2ZW4gdGhvc2UgY2FwcyB0aGUNCj4+ICAgbWF4aW11
bSBwb3NzaWJsZSBGUkFNRV9XSURUSCAqIEZSQU1FX0hFSUdIVCBpcw0KPj4gICAzODQwMCB4IDYz
NjAwIH49IDIuNDR4MTBeOSwgc2FmZWx5IHVuZGVyIDJeMzIgfj0gNC4yOXgxMF45IC0tIHRoZQ0K
Pj4gICBjbGFpbWVkIG92ZXJmbG93IGlucHV0IGlzIG1hdGhlbWF0aWNhbGx5IHVucmVhY2hhYmxl
IHRocm91Z2ggdGhpcw0KPj4gICBkcml2ZXIncyB2YWxpZGF0ZWQgdGltaW5ncyBwYXRoLg0KPj4g
DQo+PiBDaGFuZ2VzIGluIHY4Og0KPj4gLSBEcm9wIG9mX21hdGNoX3B0cigpIGFyb3VuZCBpdDY2
MjVfb2ZfbWF0Y2ggaW4gdGhlIGkyY19kcml2ZXI6IHRoZQ0KPj4gICB0YWJsZSBpcyB1bmNvbmRp
dGlvbmFsbHkgY29tcGlsZWQgaW4sIHNvIHdyYXBwaW5nIGl0IGlzIHVubmVjZXNzYXJ5DQo+PiAg
IGFuZCByaXNrcyBhbiB1bnVzZWQtdmFyaWFibGUgd2FybmluZyBvbiBjb25maWdzIHdpdGhvdXQg
Q09ORklHX09GLg0KPj4gICBGb3VuZCBieSBLcnp5c3p0b2YgS296bG93c2tpJ3Mgb24tbGlzdCBy
ZXZpZXcgb2YgdjcuDQo+PiAtIFN0b3AgaGFsdmluZyBidC0+cGl4ZWxjbG9jayBmb3IgaW50ZXJs
YWNlZCBzaWduYWxzIGluDQo+PiAgIGl0NjYyNV9nZXRfZGV0ZWN0ZWRfdGltaW5ncygpLiBDaGVj
a2VkIGFnYWluc3QgdGhlIElUNjYyNSBzcGVjOiBmb3INCj4+ICAgYW4gaW50ZXJsYWNlZCBzb3Vy
Y2UgKGUuZy4gMTA4MGkpIHRoZSBjaGlwJ3MgYnVpbHQtaW4gTUNVIGFscmVhZHkNCj4+ICAgcmVw
b3J0cyBSRUdfVklEX1BDTEsgYXMgdGhlIGNvcnJlY3QsIHJlYWwgcGl4ZWwgY2xvY2sgKDc0LjI1
IE1IeiBmb3INCj4+ICAgMTA4MGksIG5vdCBhIGhhbGYtcmF0ZS9maWVsZCBjbG9jayksIHdoaWxl
IHRoZSBoZWlnaHQgaXQgcmVwb3J0cyBpcw0KPj4gICB0aGUgcGVyLWZpZWxkIGFjdGl2ZSBoZWln
aHQgKDU0MCksIHdoaWNoIHRoZSBleGlzdGluZw0KPj4gICAiYnQtPmhlaWdodCAqPSAyIiBjb3Jy
ZWN0bHkgdHVybnMgaW50byB0aGUgdHJ1ZSBmdWxsLWZyYW1lIGhlaWdodC4NCj4+ICAgRGl2aWRp
bmcgdGhlIGFscmVhZHktY29ycmVjdCBwaXhlbCBjbG9jayBieSAyIG9uIHRvcCBvZiB0aGF0IG1h
bmdsZWQNCj4+ICAgaXQgdG8gMzcuMTI1IE1IeiwgdW5kZXJzdGF0aW5nIHRoZSByZXBvcnRlZCBm
cmFtZSByYXRlIGJ5IGhhbGYuDQo+PiAgIEZvdW5kIGJ5IHRoZSBzYXNoaWtvLmRldiBhdXRvbWF0
ZWQgcmV2aWV3IG9mIHY3LiBpbF92ZnJvbnRwb3JjaC8NCj4+ICAgaWxfdmJhY2twb3JjaCBhcmUg
c3RpbGwgbGVmdCB1bnNldCBmb3IgaW50ZXJsYWNlZCBzaWduYWxzIC0tIHRoZQ0KPj4gICBJVDY2
MjUgTUNVIGhhcyBubyBzZXBhcmF0ZSBzZWNvbmQtZmllbGQgcG9yY2ggcmVnaXN0ZXJzLCBzbyB0
aGVyZSdzDQo+PiAgIG5vdGhpbmcgdG8gcmVhZCBmb3IgdGhlbTsgbm90IGZpeGVkLCBzaW5jZSB0
aGVyZSdzIG5vdGhpbmcgdG8gZml4IGluDQo+PiAgIHNvZnR3YXJlLg0KPj4gDQo+PiBPbmUgb3Ro
ZXIgdjcgcmV2aWV3IGZpbmRpbmcgd2FzIGNoZWNrZWQgYW5kIGlzIG5vdCBiZWluZyBhY3RlZCBv
bjoNCj4+IC0gaXQ2NjI1X2dldF9mbXQoKSB1bmNvbmRpdGlvbmFsbHkgd3JpdGVzIHRoZSBsaXZl
IGRldGVjdGVkIHRpbWluZ3MNCj4+ICAgaW50byBmb3JtYXQtPmZvcm1hdC53aWR0aC9oZWlnaHQv
ZmllbGQgcmVnYXJkbGVzcyBvZiBUUlkgdnMgQUNUSVZFLA0KPj4gICBhbmQgaXQ2NjI1X3NldF9m
bXQoKSdzIFRSWSBicmFuY2ggb25seSBwZXJzaXN0cyBjb2RlL2NvbG9yc3BhY2UgaW50bw0KPj4g
ICBzZF9zdGF0ZS4gVGhpcyBleGFjdGx5IG1hdGNoZXMgdGMzNTg3NDNfZ2V0X2ZtdCgpL3RjMzU4
NzQzX3NldF9mbXQoKQ0KPj4gICBpbiB0YzM1ODc0My5jLCB3aGljaCBuZXZlciBjb25zdWx0IHNk
X3N0YXRlIGZvciB3aWR0aC9oZWlnaHQvZmllbGQNCj4+ICAgaW4gZWl0aGVyIFRSWSBvciBBQ1RJ
VkUgZWl0aGVyLiBGb3IgdGhpcyBjbGFzcyBvZiBIRE1JLXJlY2VpdmVyDQo+PiAgIGJyaWRnZSwg
ZnJhbWUgZGltZW5zaW9ucyBhcmUgZGljdGF0ZWQgYnkgdGhlIGRldGVjdGVkIGV4dGVybmFsDQo+
PiAgIHNpZ25hbCwgbm90IGluZGVwZW5kZW50bHkgbmVnb3RpYWJsZSB2aWEgVFJZIC0tIG9ubHkg
dGhlIHBpeGVsDQo+PiAgIGZvcm1hdCAoY29kZS9jb2xvcnNwYWNlKSBpcyBtZWFuaW5nZnVsbHkg
VFJZLWlzb2xhdGFibGUsIGFuZCB0aGF0J3MNCj4+ICAgZXhhY3RseSB3aGF0IGJvdGggZHJpdmVy
cyBpc29sYXRlLiBGb3VuZCBieSB0aGUgc2FzaGlrby5kZXYNCj4+ICAgYXV0b21hdGVkIHJldmll
dyBvZiB2Ny4NCj4+IA0KPj4gQWxzbywgcGVyIEtyenlzenRvZiBLb3psb3dza2kncyBvbi1saXN0
IHJldmlldzogdGhlIGl0NjYyNS9pdDY2MjYNCj4+IG9mX2RldmljZV9pZCBlbnRyaWVzIGRvIGVu
Y29kZSBhIHJlYWwgYmVoYXZpb3JhbCBkaWZmZXJlbmNlIC0tDQo+PiBpdDY2MjVfcGFyc2VfZW5k
cG9pbnQoKSByZWplY3RzIEMtUEhZIGVuZHBvaW50cyB1bmxlc3MNCj4+IGNoaXBfdHlwZSA9PSBJ
VDY2MjZfQ0hJUCwgc28gIml0ZSxpdDY2MjUiIGJvYXJkcyBhcmUgY29ycmVjdGx5DQo+PiByZXN0
cmljdGVkIHRvIEQtUEhZLiBSZXBseWluZyBvbi1saXN0IHRvIHBvaW50IHRoaXMgb3V0LCBub3Qg
YSBjb2RlDQo+PiBjaGFuZ2UuDQo+PiANCj4+IENoYW5nZXMgaW4gdjc6DQo+PiAtIEZpeCB0aHJl
ZSBjb3JyZWN0bmVzcyBpc3N1ZXMgZm91bmQgYnkgdGhlIGF1dG9tYXRlZCByZXZpZXcgb2YgdjY6
DQo+PiAgIGl0NjYyNV9wYXJzZV9lbmRwb2ludCgpIGxlZnQgdGhlIGZ3bm9kZSBlbmRwb2ludCdz
IGJ1c190eXBlIGFzDQo+PiAgIFY0TDJfTUJVU19VTktOT1dOIHNvIHY0bDJfZndub2RlX2VuZHBv
aW50X2FsbG9jX3BhcnNlKCkgY291bGQNCj4+ICAgYXV0b2RldGVjdCBDLVBIWSB2cyBELVBIWSwg
YnV0IGlmIHRoZSBlbmRwb2ludCBub2RlIGhhcyBub25lIG9mIHRoZQ0KPj4gICBDU0ktMi1zcGVj
aWZpYyBwcm9wZXJ0aWVzLCB0aGUgcGFyc2VyIHNpbGVudGx5IGZhbGxzIGJhY2sgdG8NCj4+ICAg
VjRMMl9NQlVTX1BBUkFMTEVML0JUNjU2IGluc3RlYWQgLS0gdGhlIGRyaXZlciB0aGVuIHJlYWQN
Cj4+ICAgZW5kcG9pbnQuYnVzLm1pcGlfY3NpMi5udW1fZGF0YV9sYW5lcyB1bmNvbmRpdGlvbmFs
bHksIHRyZWF0aW5nDQo+PiAgIG1lbW9yeSBwb3B1bGF0ZWQgYXMgYSBkaWZmZXJlbnQgdW5pb24g
bWVtYmVyIGFzIGEgbGFuZSBjb3VudC4NCj4+ICAgaXQ2NjI1X3NldF9mbXQoKSdzIFY0TDJfU1VC
REVWX0ZPUk1BVF9BQ1RJVkUgYnJhbmNoIGFwcGxpZWQgdGhlIG5ldw0KPj4gICBmb3JtYXQgdG8g
aGFyZHdhcmUgYnV0IG5ldmVyIHVwZGF0ZWQgZm9ybWF0LT5mb3JtYXQuY29sb3JzcGFjZSBsaWtl
DQo+PiAgIHRoZSBUUlkgYnJhbmNoIGRvZXMsIHNvIFZJRElPQ19TVUJERVZfU19GTVQgY2FsbGVy
cyBnb3QgYmFjayB0aGUNCj4+ICAgc3RhbGUgY29sb3JzcGFjZSBmcm9tIGJlZm9yZSB0aGUgY2Fs
bC4gaXQ2NjI1X3NfZWRpZCgpIG5ldmVyDQo+PiAgIGNoZWNrZWQgZWRpZC0+c3RhcnRfYmxvY2ss
IGNvbnRyYXJ5IHRvIHRoZSBWSURJT0NfU19FRElEIHNwZWMNCj4+ICAgKERvY3VtZW50YXRpb24v
dXNlcnNwYWNlLWFwaS9tZWRpYS92NGwvdmlkaW9jLWctZWRpZC5yc3QpLCB3aGljaA0KPj4gICBy
ZXF1aXJlcyAtRUlOVkFMIGZvciBhbnkgc3RhcnRfYmxvY2sgb3RoZXIgdGhhbiAwIHNpbmNlIHNl
dHRpbmcgYW4NCj4+ICAgRURJRCBpcyBhbGwtb3Itbm90aGluZzsgYWRkZWQgdGhlIHNhbWUgY2hl
Y2sgYWxyZWFkeSBwcmVzZW50IGluDQo+PiAgIGFkdjc2MDRfc19lZGlkKCksIHRjMzU4NzQzX3Nf
ZWRpZCgpIGFuZCBhZHY3ODQyX3NfZWRpZCgpIGZvciB0aGUNCj4+ICAgc2FtZSByZXF1aXJlbWVu
dC4NCj4+IA0KPj4gQ2hhbmdlcyBpbiB2NjoNCj4+IC0gRml4IHR3byBjb3JyZWN0bmVzcyBpc3N1
ZXMgZm91bmQgYnkgdGhlIGF1dG9tYXRlZCByZXZpZXcgb2YgdjU6DQo+PiAgIGl0NjYyNV9zX2Vk
aWQoKSBjYWxsZWQgdjRsMl9waHlzX2FkZHJfdmFsaWRhdGUoKSBidXQgZGlzY2FyZGVkIGl0cw0K
Pj4gICByZXR1cm4gdmFsdWUsIHNvIGEgQ0VDIHBoeXNpY2FsIGFkZHJlc3MgdGhhdCBmYWlsZWQg
dG9wb2xvZ3kNCj4+ICAgdmFsaWRhdGlvbiAoZS5nLiBhIGdhcCBsaWtlIDEuMC4xLjApIHN0aWxs
IHJlYWNoZWQNCj4+ICAgY2VjX3NfcGh5c19hZGRyKCkgYW5kIGdvdCBicm9hZGNhc3Qgb24gdGhl
IENFQyBidXMgaW5zdGVhZCBvZiBiZWluZw0KPj4gICByZWplY3RlZDsgYW5kIGl0NjYyNV9wYXJz
ZV9lbmRwb2ludCgpIHByZS1zZXQgdGhlIGZ3bm9kZSBlbmRwb2ludCdzDQo+PiAgIGJ1c190eXBl
IHRvIEQtUEhZIGJlZm9yZSBwYXJzaW5nLCB3aGljaCAocGVyDQo+PiAgIGluY2x1ZGUvbWVkaWEv
djRsMi1md25vZGUuaCkgbWFrZXMgdGhlIHBhcnNlciB0cmVhdCBpdCBhcyBhIGhhcmQNCj4+ICAg
cmVxdWlyZW1lbnQgYW5kIHJlamVjdCBhbnkgZW5kcG9pbnQgd2hvc2UgRFQgYnVzLXR5cGUgZGlz
YWdyZWVzIC0tDQo+PiAgIGV2ZXJ5IElUNjYyNiBDLVBIWSBkZXZpY2UgdHJlZSBmYWlsZWQgdG8g
cHJvYmUgYXMgYSByZXN1bHQuDQo+PiANCj4+IE9uZSBvdGhlciB2NSByZXZpZXcgZmluZGluZyB3
YXMgY2hlY2tlZCBhbmQgaXMgbm90IGJlaW5nIGFjdGVkIG9uOg0KPj4gLSBBIGNvbmN1cnJlbnQg
VklESU9DX1NVQkRFVl9TX0VESUQgaW9jdGwgcmFjaW5nIGl0NjYyNV9yZW1vdmUoKSdzDQo+PiAg
IGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygpIGNvdWxkIGluIHByaW5jaXBsZSBzY2hlZHVsZQ0K
Pj4gICBocGRfZGVsYXllZF93b3JrIGFmdGVyIHRlYXJkb3duIGZyZWVzIHRoZSBkcml2ZXIgc3Rh
dGUuIFJlYWwgaW4gdGhlDQo+PiAgIGFic3RyYWN0IC0tIG5vIGxvY2sgc2VyaWFsaXplcyBhbiBp
bi1mbGlnaHQgaW9jdGwgYWdhaW5zdA0KPj4gICB2aWRlb191bnJlZ2lzdGVyX2RldmljZSgpIC0t
IGJ1dCB0aGUgaWRlbnRpY2FsIHVubG9ja2VkIHBhdHRlcm4NCj4+ICAgKGRlbGF5ZWQgd29yayBz
Y2hlZHVsZWQgZnJvbSB0aGUgc19lZGlkIHBhdGgsIHJlbW92ZSgpIGRvaW5nIG9ubHkNCj4+ICAg
Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCkpIGV4aXN0cyB1bmZpeGVkIGluIHRjMzU4NzQzLmMg
YW5kDQo+PiAgIGFkdjc2MDQuYywgYW5kIHRoaXMgaXMgdGhlIHNhbWUgcmVzaWR1YWwgcmlzayBh
bHJlYWR5IGRpc21pc3NlZCBpbg0KPj4gICB0aGUgdjIvdjMvdjQgcm91bmRzIG9mIHRoaXMgc2Vy
aWVzIGZvciB0aGUgc2FtZSByZWFzb246IG5vIHBlZXINCj4+ICAgZHJpdmVyIGFkZHMgZXh0cmEg
c3luY2hyb25pemF0aW9uIGZvciBpdCBlaXRoZXIuDQo+PiANCj4+IENoYW5nZXMgaW4gdjU6DQo+
PiAtIEZpeCBhIGtlcm5lbC1zdGFjay1tZW1vcnkgbGVhayBpbiBpdDY2MjVfZWRpZF9yYW1fc2hv
dygpIGFuZA0KPj4gICBpdDY2MjVfbWlwaV9yZWdfc2hvdygpOiBib3RoIHByaW50ZWQgYW4gdW5p
bml0aWFsaXplZCBvbi1zdGFjaw0KPj4gICByZWdpc3RlciBidWZmZXIgdG8gdXNlcnNwYWNlIHZp
YSBkZWJ1Z2ZzIHdpdGhvdXQgY2hlY2tpbmcgd2hldGhlcg0KPj4gICB0aGUgcHJlY2VkaW5nIEky
QyBidWxrIHJlYWQgYWN0dWFsbHkgc3VjY2VlZGVkLg0KPj4gLSBGaXggdHdvIHJlbGF0ZWQgZm9y
bWF0LW5lZ290aWF0aW9uIGJ1Z3M6IGl0NjYyNV9zZXRfZm10KCkncw0KPj4gICBWNEwyX1NVQkRF
Vl9GT1JNQVRfVFJZIGJyYW5jaCBuZXZlciB1cGRhdGVkIGZtdC0+Y29sb3JzcGFjZSB0bw0KPj4g
ICBtYXRjaCB0aGUgbmV3IGZtdC0+Y29kZSwgYW5kIGl0NjYyNV9nZXRfZm10KCkncyBUUlkgYnJh
bmNoIGNvbXB1dGVkDQo+PiAgIHRoZSByZXR1cm5lZCBjb2xvcnNwYWNlIGZyb20gdGhlIGFjdGl2
ZSBoYXJkd2FyZSBzdGF0ZSBpbnN0ZWFkIG9mDQo+PiAgIHRoZSBUUlkgc3RhdGUncyBvd24gZm9y
bWF0LCBsZWFraW5nIGFjdGl2ZSBzdGF0ZSBpbnRvIHdoYXQgc2hvdWxkDQo+PiAgIGJlIGFuIGlz
b2xhdGVkIFRSWSBidWZmZXIgLS0gc3RvcmUgYW5kIHJlYWQgY29kZSBhbmQgY29sb3JzcGFjZQ0K
Pj4gICB0b2dldGhlciBpbiBzZF9zdGF0ZSBpbnN0ZWFkLiBTZXBhcmF0ZWx5LCBpdDY2MjVfc2V0
X2ZtdCgpJ3MNCj4+ICAgYWN0aXZlLWZvcm1hdCBwYXRoIHJlbGVhc2VkIGl0NjYyNV9sb2NrIGJl
Zm9yZSBwcm9ncmFtbWluZyB0aGUNCj4+ICAgaGFyZHdhcmUsIGxldHRpbmcgdHdvIGNvbmN1cnJl
bnQgU19GTVQgY2FsbHMgaW50ZXJsZWF2ZSBhbmQgbGVhdmUNCj4+ICAgdGhlIGhhcmR3YXJlIHBy
b2dyYW1tZWQgZm9yIHRoZSB3cm9uZyB0aHJlYWQncyBmb3JtYXQ7IGFkZCBfbG9ja2VkDQo+PiAg
IHZhcmlhbnRzIG9mIGl0NjYyNV9lbmFibGVfc3RyZWFtKCkvaXQ2NjI1X3NldF9taXBpX2NvbmZp
ZygpIGFuZCBjYWxsDQo+PiAgIHRoZW0gZnJvbSBpbnNpZGUgc2V0X2ZtdCgpJ3MgZXhpc3Rpbmcg
bG9jayBzY29wZSBzbyB0aGUgd2hvbGUNCj4+ICAgdXBkYXRlIGlzIG5vdyBhdG9taWMuDQo+PiAt
IEZpeCBpdDY2MjVfc19lZGlkKCk6IHBlciB0aGUgVklESU9DX1NfRURJRCBzcGVjLCBibG9ja3Mg
PT0gMCBtdXN0DQo+PiAgIGxlYXZlIHRoZSBFRElEIGRpc2FibGVkICgibm8gbG9uZ2VyIGF2YWls
YWJsZSIpLCBidXQgdGhlIGRyaXZlcg0KPj4gICBkaXNhYmxlZCBIUEQgYW5kIHRoZW4gZmVsbCB0
aHJvdWdoIHRvIHRoZSBub3JtYWwgY29tcGxldGlvbiBwYXRoLA0KPj4gICB3aGljaCB1bmNvbmRp
dGlvbmFsbHkgcmUtZW5hYmxlZCBpdCAtLSByZXR1cm4gaW1tZWRpYXRlbHkgaW5zdGVhZC4NCj4+
ICAgQWxzbyBzdG9wIGEgZmFpbGVkIGl0NjYyNV93cml0ZV9lZGlkKCkgZnJvbSBza2lwcGluZyB0
aGUgSFBEDQo+PiAgIHJlLWVuYWJsZSBlbnRpcmVseSwgd2hpY2ggbGVmdCBIUEQgZGlzYWJsZWQg
cGVybWFuZW50bHkgYWZ0ZXIgYW55DQo+PiAgIHNpbmdsZSBmYWlsZWQgU19FRElEIGNhbGwuDQo+
PiAtIFRha2UgaXQ2NjI1X2xvY2sgYXJvdW5kIGl0NjYyNV9taXBpX3JlZ193cml0ZSgpJ3MgSTJD
IHdyaXRlLA0KPj4gICBtYXRjaGluZyBldmVyeSBvdGhlciByZWdpc3RlciBhY2Nlc3MgaW4gdGhl
IGRyaXZlci4NCj4+IC0gRGVyaXZlIElUNjYyNV9DSURfSERNSV9JTkZPJ3Mgc3RyaW5nIGZyb20g
cmVhbCBzdGF0ZQ0KPj4gICAoaXQ2NjI1LT5jc2lfZm9ybWF0IGFuZCBmcHNfZnJvbV9idF90aW1p
bmdzKCkpIGluc3RlYWQgb2YgcmV0dXJuaW5nDQo+PiAgIGEgaGFyZGNvZGVkICJSR0I0NDQgMTBi
aXQgQCA2MEh6IiByZWdhcmRsZXNzIG9mIGFjdHVhbCBzaWduYWwuDQo+PiAtIFdpcmUgdXAgdGhl
IHByZXZpb3VzbHktdW51c2VkIHJlc2V0LWdwaW9zIGxpbmUgaW4gcHJvYmUoKTogYWNxdWlyZQ0K
Pj4gICBpdCB2aWEgZGV2bV9ncGlvZF9nZXRfb3B0aW9uYWwoKSBhbmQgdG9nZ2xlIGl0IChhc3Nl
cnQgYnJpZWZseSwgdGhlbg0KPj4gICBkZWFzc2VydCBhbmQgbGV0IGl0IHNldHRsZSkgYmVmb3Jl
IHRoZSBmaXJzdCBJMkMgYWNjZXNzLg0KPj4gDQo+PiBBbGwgZm91bmQgYnkgdGhlIHNhc2hpa28u
ZGV2IGF1dG9tYXRlZCByZXZpZXcgb2YgdjQuIFRocmVlIG90aGVyIHY0DQo+PiByZXZpZXcgZmlu
ZGluZ3Mgd2VyZSBjaGVja2VkIGFuZCBhcmUgbm90IGJlaW5nIGFjdGVkIG9uOg0KPj4gLSBpdDY2
MjVfbWlwaV9yZWdfc2hvdygpJ3MgcmF3IHJlZ2lzdGVyIGR1bXAgY291bGQgZGVzdHJ1Y3RpdmVs
eQ0KPj4gICBjb25zdW1lIGEgcGVuZGluZyBDRUMgUlggbWVzc2FnZSB2aWEgUkVHX0NFQ19SWF9E
QVRBICgweDIwKSAtLQ0KPj4gICBjaGVja2VkIHdpdGggdGhlIGhhcmR3YXJlIGF1dGhvcjogcmVh
ZGluZyBSRUdfQ0VDX1JYX0RBVEEgaXMgbm90DQo+PiAgIGRlc3RydWN0aXZlLCBvbmx5IHRoZSBl
eHBsaWNpdCB3cml0ZS0wIHRvIFJFR19DRUNfUlhfREFUQV9MRU4NCj4+ICAgY2xlYXJzIHN0YXRl
LiBUaGUgdjQgY2hhbmdlbG9nJ3MgImxpa2VseSBjbGVhci1vbi1yZWFkIiBhc3N1bXB0aW9uDQo+
PiAgIGZvciB0aGlzIHNhbWUgcmVnaXN0ZXIgd2FzIHdyb25nLg0KPj4gLSBkZXZtX2t6YWxsb2Mn
ZCBzdGF0ZSArIHN1YmRldiBkZXZub2RlIFVBRi1pbi10aGUtYWJzdHJhY3Qgb24gdW5iaW5kDQo+
PiAgIC0tIHNhbWUgcmVhc29uaW5nIGFzIHRoZSB2Mi92MyByb3VuZHM6IG1hdGNoZXMgdGMzNTg3
NDMuYy9hZHY3NjA0LmMvDQo+PiAgIGFkdjc4NDIuYyBleGFjdGx5LCBhbiBhY2NlcHRlZCBWNEwy
LXN1YnN5c3RlbS13aWRlIHBhdHRlcm4sIG5vdCBhDQo+PiAgIGRlZmVjdCB1bmlxdWUgdG8gdGhp
cyBkcml2ZXIuDQo+PiAtIENvbmN1cnJlbnQgVklESU9DX1NVQkRFVl9TX0VESUQgcmFjaW5nIGl0
NjYyNV9yZW1vdmUoKSdzDQo+PiAgIGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygpL211dGV4X2Rl
c3Ryb3koKSAtLSB0aGUgc2FtZSByZXNpZHVhbCByaXNrDQo+PiAgIGRpc21pc3NlZCBpbiB0aGUg
djMgcm91bmQ6IHJlYWwgaW4gdGhlIGFic3RyYWN0LCBidXQgbm8gcGVlciBkcml2ZXINCj4+ICAg
YWRkcyBleHRyYSBzeW5jaHJvbml6YXRpb24gZm9yIGl0IGVpdGhlciwgYW5kIHRoZSB2MiByb3Vu
ZCdzIGZpeA0KPj4gICAodW5yZWdpc3RlciB0aGUgc3ViZGV2IGZpcnN0IGluIHJlbW92ZSgpKSBh
bHJlYWR5IG5hcnJvd2VkIHRoaXMgdG8NCj4+ICAgdGhlIHNhbWUgcmVzaWR1YWwgcmlzayBsZXZl
bCBldmVyeSBwZWVyIGRyaXZlciBjYXJyaWVzLg0KPj4gDQo+PiBDaGFuZ2VzIGluIHY0Og0KPj4g
LSBBbHdheXMgYWNrbm93bGVkZ2UgdGhlIENFQyBSWCBsZW5ndGggcmVnaXN0ZXIgb25jZSB0aGUg
UlggaW50ZXJydXB0DQo+PiAgIGJyYW5jaCBpcyBlbnRlcmVkLCBldmVuIHdoZW4gdGhlIHJlcG9y
dGVkIGxlbmd0aCBpcyBpbnZhbGlkIC0tDQo+PiAgIHByZXZpb3VzbHkgdGhlIGFjayB3cml0ZSBv
bmx5IGhhcHBlbmVkIG9uIHZhbGlkIGxlbmd0aHMsIHNvIGFuDQo+PiAgIGludmFsaWQgbGVuZ3Ro
IGxlZnQgdGhlIGludGVycnVwdCBhc3NlcnRlZCwgd2hpY2ggY291bGQgc3Rvcm0gdGhlDQo+PiAg
IElSUSBsaW5lLg0KPj4gLSBGYWxsIGJhY2sgdG8gYSBkZWZhdWx0IGZvcm1hdCBpbnN0ZWFkIG9m
IHJldHVybmluZyAtRUlOVkFMIGZyb20NCj4+ICAgaXQ2NjI1X3NldF9mbXQoKSB3aGVuIHRoZSBy
ZXF1ZXN0ZWQgbWJ1cyBjb2RlIGlzbid0IHJlY29nbml6ZWQsDQo+PiAgIG1hdGNoaW5nIHRoZSBW
NEwyIHN1YmRldiBzZXRfZm10IGNvbnZlbnRpb24gKGNmLiBhZHY3NjA0LmMpLiBUYWtlDQo+PiAg
IGl0NjYyNV9sb2NrIGFyb3VuZCBpdDY2MjVfZ2V0X2ZtdCgpJ3MgQUNUSVZFLXBhdGggcmVhZHMg
b2YNCj4+ICAgY3NpX2Zvcm1hdC9tYnVzX2ZtdF9jb2RlLCB3aGljaCBjb3VsZCBvdGhlcndpc2Ug
b2JzZXJ2ZSBhIHRvcm4NCj4+ICAgdXBkYXRlIGZyb20gYSBjb25jdXJyZW50IHNldF9mbXQoKS4N
Cj4+IC0gRml4IEVESUQgaW9jdGwgc3BlYyBjb25mb3JtYW5jZTogaXQ2NjI1X2dfZWRpZCgpIG5v
dyBjbGFtcHMgdGhlDQo+PiAgIHJlcXVlc3RlZCBibG9jayBjb3VudCBhbmQgcmV0dXJucyBzdWNj
ZXNzIGluc3RlYWQgb2YgcHJvcGFnYXRpbmcgYW4NCj4+ICAgZXJyb3Igd2hlbiB0aGUgcmVxdWVz
dCBleGNlZWRzIGNhcGFjaXR5OyBpdDY2MjVfc19lZGlkKCkgbm93IHJldHVybnMNCj4+ICAgLUUy
QklHIChub3QgLUVJTlZBTCkgd2l0aCBibG9ja3Mgc2V0IHRvIHRoZSBtYXhpbXVtLCB3aXRob3V0
DQo+PiAgIGF0dGVtcHRpbmcgdGhlIHdyaXRlLCB3aGVuIHRoZSByZXF1ZXN0IGV4Y2VlZHMgY2Fw
YWNpdHk7IGFuZA0KPj4gICBpdDY2MjVfcmVhZF9lZGlkKCkvaXQ2NjI1X3dyaXRlX2VkaWQoKSdz
IGxvdy1sZXZlbCBib3VuZHMgY2hlY2sgbm93DQo+PiAgIHRlc3RzIHN0YXJ0X2Jsb2NrIGFuZCBu
dW1fYmxvY2tzIGluZGl2aWR1YWxseSBiZWZvcmUgc3VtbWluZyB0aGVtLA0KPj4gICBzaW5jZSB0
aGUgc3VtIGNvdWxkIG90aGVyd2lzZSBvdmVyZmxvdyBnaXZlbiB0aGUgdW5zaWduZWQgX191MzIN
Cj4+ICAgZmllbGRzIG9mIHN0cnVjdCB2NGwyX2VkaWQuDQo+PiAtIEhhcmRlbiB0aGUgbWlwaV9y
ZWcgZGVidWdmcyBoYW5kbGVyczogaXQ2NjI1X21pcGlfcmVnX3dyaXRlKCkgbm93DQo+PiAgIGFs
d2F5cyBwYXJzZXMgZnJvbSBhIGxvY2FsIG9mZnNldCB0aGF0IHN0YXJ0cyBhdCAwIGluc3RlYWQg
b2YgdGhlDQo+PiAgIHJlYWwgZmlsZSBvZmZzZXQsIHNpbmNlIHRoaXMgaXMgYSBzdGF0ZWxlc3Mg
b25lLXdyaXRlLW9uZS1jb21tYW5kDQo+PiAgIGludGVyZmFjZSwgbm90IGEgc2Vla2FibGUgc3Ry
ZWFtOyBpdDY2MjVfbWlwaV9yZWdfc2hvdygpIG5vdyB0YWtlcw0KPj4gICBpdDY2MjVfbG9jayBh
cm91bmQgaXRzIHJhdyByZWdpc3Rlci1iYW5rIHJlYWQsIG1hdGNoaW5nIGV2ZXJ5IG90aGVyDQo+
PiAgIGJhbmtlZC1yZWdpc3RlciBhY2Nlc3MgaW4gdGhlIGRyaXZlciAodGhlIGR1bXBlZCByYW5n
ZSBhbHNvIGluY2x1ZGVzDQo+PiAgIFJFR19DRUNfUlhfREFUQSwgd2hpY2ggdGhlIENFQyBoYW5k
bGVyIHRyZWF0cyBhcyBjbGVhci1vbi1yZWFkLCBzbyBhbg0KPj4gICB1bmxvY2tlZCByZWFkIGNv
dWxkIHNpbGVudGx5IHN0ZWFsIGEgcGVuZGluZyBDRUMgUlggbWVzc2FnZSkuDQo+PiAtIE1hcmsg
dGhlIEhETUkgaW5mbyBjb250cm9sIChJVDY2MjVfQ0lEX0hETUlfSU5GTykgdm9sYXRpbGU6DQo+
PiAgIGl0NjYyNV9nX3ZvbGF0aWxlX2N0cmwoKSBhbHJlYWR5IGhhZCBhIGxpdmUgY2FzZSBmb3Ig
aXQsIGJ1dCB0aGUNCj4+ICAgY29udHJvbCdzIHY0bDJfY3RybF9jb25maWcgd2FzIG1pc3Npbmcg
VjRMMl9DVFJMX0ZMQUdfVk9MQVRJTEUsIHNvDQo+PiAgIHRoYXQgY2FzZSB3YXMgbmV2ZXIgYWN0
dWFsbHkgcmVhY2hlZCBhbmQgdGhlIGNvbnRyb2wncyB2YWx1ZSB3YXMNCj4+ICAgbmV2ZXIgcmVm
cmVzaGVkLg0KPj4gDQo+PiBBbGwgZm91bmQgYnkgdGhlIHNhc2hpa28uZGV2IGF1dG9tYXRlZCBy
ZXZpZXcgb2YgdjMuDQo+PiANCj4+IFNlcGFyYXRlbHksIG5vdCBhIHJldmlldyBmaW5kaW5nOiBy
ZW1vdmUgYSByZWR1bmRhbnQgRlctc3RhcnQgcmVnaXN0ZXINCj4+IHRyaWdnZXIgZnJvbSBpdDY2
MjVfaW5pdGlhbF9zZXR1cCgpIC0tIHRoZSBjaGlwJ3MgZmlybXdhcmUgc3RhcnRzDQo+PiBhdXRv
bWF0aWNhbGx5IG9uIHBvd2VyLW9uLCBzbyB0aGUgZXhwbGljaXQgc29mdHdhcmUgdHJpZ2dlciB3
YXMgZGVhZA0KPj4gd2VpZ2h0Lg0KPj4gDQo+PiBDaGFuZ2VzIGluIHYzOg0KPj4gLSBGaW5pc2gg
dGhlIGJhbmtlZC1yZWdpc3RlciBsb2NraW5nIGZyb20gdjI6IGl0NjYyNV9pcnFfaW5mb2ZyYW1l
X2xhdGNoKCkNCj4+ICAgYW5kIGdldF9hdWRpb19zYW1wbGluZ19yYXRlKCkgYWxzbyByZWFkIGJh
bmtlZCByZWdpc3RlcnMgd2l0aG91dA0KPj4gICBpdDY2MjVfbG9jazsgdGFrZSB0aGUgbG9jayBp
bnNpZGUgdGhlIENFQyBSWCBicmFuY2ggYWNyb3NzIHRoZQ0KPj4gICBsZW5ndGggcmVhZCwgZGF0
YSByZWFkIGFuZCBsZW5ndGgtY2xlYXIgdG9nZXRoZXIgKGNsb3NpbmcgYSBUT0NUT1UNCj4+ICAg
d2hlcmUgdGhlIGxlbmd0aCBjb3VsZCBnbyBzdGFsZSB1bmRlciBsb2NrIGNvbnRlbnRpb24pLCBh
bmQgc3RvcCB0aGUNCj4+ICAgUlggYnJhbmNoIGZyb20gdXNpbmcgYW4gZWFybHkgcmV0dXJuIHRo
YXQgc2tpcHBlZCBhIHNpbXVsdGFuZW91cyBDRUMNCj4+ICAgVFggaW50ZXJydXB0Lg0KPj4gLSBG
aXggaXQ2NjI1X3NfZWRpZCgpIGluY29ycmVjdGx5IHRyZWF0aW5nIGEgc3VjY2Vzc2Z1bCBFRElE
IHdyaXRlIGFzDQo+PiAgIGEgZmFpbHVyZTogaXQ2NjI1X3dyaXRlX2VkaWQoKSByZXR1cm5zIGEg
cG9zaXRpdmUgYmxvY2sgY291bnQgb24NCj4+ICAgc3VjY2Vzcywgbm90IDAsIHNvIGBpZiAoZXJy
KWAgc2tpcHBlZCB0aGUgQ0VDIHBoeXMtYWRkciB1cGRhdGUgYW5kDQo+PiAgIEhQRCByZS1lbmFi
bGUgb24gZXZlcnkgc3VjY2Vzc2Z1bCB3cml0ZS4gUHJlLWV4aXN0aW5nIHNpbmNlIHYxLCBub3QN
Cj4+ICAgaW50cm9kdWNlZCBieSB0aGUgdjIgYmxvY2tzPT0wIGhhbmRsaW5nLg0KPj4gLSBBZGQg
cmVhbCBWNEwyX1NVQkRFVl9GT1JNQVRfVFJZIHN1cHBvcnQgaW4gZ2V0X2ZtdC9zZXRfZm10IHZp
YQ0KPj4gICBzZF9zdGF0ZSwgbWF0Y2hpbmcgdGhlIHBhdHRlcm4gdXNlZCBieSBhZHY3NjA0LmMs
IGFuZCBsb2NrIHRoZQ0KPj4gICBjc2lfZm9ybWF0L21idXNfZm10X2NvZGUgY29tbWl0IGluIHRo
ZSBBQ1RJVkUgcGF0aCBhZ2FpbnN0DQo+PiAgIGNvbmN1cnJlbnQgU19GTVQgY2FsbHMuDQo+PiAt
IFJlYWQgdGhlIGNoaXAncyByZWFsIHBvcmNoL3N5bmMtd2lkdGggcmVnaXN0ZXJzDQo+PiAgIChS
RUdfSF9GUF8xLi5SRUdfVl9CUF8wKSBpbiBpdDY2MjVfZ2V0X2RldGVjdGVkX3RpbWluZ3MoKSBp
bnN0ZWFkIG9mDQo+PiAgIGx1bXBpbmcgdGhlIHdob2xlIGJsYW5raW5nIGludGVydmFsIGludG8g
aHN5bmMvdnN5bmMsIHNvIGRldGVjdGVkDQo+PiAgIHRpbWluZ3MgY2FuIGFjdHVhbGx5IG1hdGNo
IHRoZSBzdGFuZGFyZCBDRUEvVkVTQSB0YWJsZXMuDQo+PiANCj4+IEFsbCBmb3VuZCBieSB0aGUg
c2FzaGlrby5kZXYgYXV0b21hdGVkIHJldmlldyBvZiB2Mi4gRm91ciBvdGhlciB2Mg0KPj4gcmV2
aWV3IGZpbmRpbmdzIHdlcmUgY2hlY2tlZCBhZ2FpbnN0IHRoZSBjb2RlIGFuZCBhcmUgbm90IGJl
aW5nIGFjdGVkDQo+PiBvbjoNCj4+IC0gInRpbWVyX2NvbnRhaW5lcl9vZigpIGRvZXNuJ3QgZXhp
c3QiIC0tIGl0IGRvZXMNCj4+ICAgKGluY2x1ZGUvbGludXgvdGltZXIuaCksIHRoZSBkcml2ZXIg
YWxyZWFkeSBidWlsZHMgY2xlYW4gd2l0aCBpdC4NCj4+IC0gImRldm1fa3phbGxvYydkIHN0YXRl
ICsgc3ViZGV2IGRldm5vZGUgcmlza3MgYSBVQUYgb24gdW5iaW5kIiAtLQ0KPj4gICB0cnVlIGlu
IHRoZSBhYnN0cmFjdCwgYnV0IGl0J3MgdGhlIGV4YWN0IHBhdHRlcm4gdXNlZCBieSBldmVyeQ0K
Pj4gICBjb21wYXJhYmxlIGluLXRyZWUgZHJpdmVyICh0YzM1ODc0My5jLCBhZHY3NjA0LmMsIGFk
djc4NDIuYyBhbGwNCj4+ICAgZGV2bV9remFsbG9jIHRoZWlyIG1haW4gc3RhdGUgc3RydWN0IGRl
c3BpdGUgc2V0dGluZw0KPj4gICBWNEwyX1NVQkRFVl9GTF9IQVNfREVWTk9ERSB0b28pLg0KPj4g
LSAidW5yZWdpc3RlcmluZyB0aGUgc3ViZGV2IGJlZm9yZSBkaXNhYmxpbmcgSVJRL3dvcmsgaW4g
cmVtb3ZlKCkNCj4+ICAgbGVhdmVzIHNkLT5kZXZub2RlIGRhbmdsaW5nIiAtLSBjaGVja2VkIHRo
ZSBjb3JlOg0KPj4gICB2NGwyX2RldmljZV91bnJlZ2lzdGVyX3N1YmRldigpIG9ubHkgbWFya3Mg
c2QtPmRldm5vZGUgdW5yZWdpc3RlcmVkDQo+PiAgIHZpYSB2aWRlb191bnJlZ2lzdGVyX2Rldmlj
ZSgpLCBpdCBkb2VzIG5vdCBmcmVlIGl0OyB0aGUgc3RydWN0IGlzDQo+PiAgIGZyZWVkIGxhdGVy
IHZpYSBrcmVmIG9uIGxhc3QgY2xvc2UsIHNvIHRoZSBwb2ludGVyIHN0YXlzIHZhbGlkLg0KPj4g
LSB0aGUgcmVzaWR1YWwgImlvY3RsIHJlc2NoZWR1bGVzIGhwZF9kZWxheWVkX3dvcmsgY29uY3Vy
cmVudGx5IHdpdGgNCj4+ICAgcmVtb3ZlKCkiIHJhY2UgLS0gcmVhbCBpbiB0aGUgYWJzdHJhY3Qg
KHJlcXVpcmVzIGFuIGlvY3RsIGFscmVhZHkNCj4+ICAgaW4gZmxpZ2h0IGF0IHRoZSBleGFjdCBt
b21lbnQgb2YgdW5iaW5kKSwgYnV0IG5vIHBlZXIgZHJpdmVyIGFkZHMNCj4+ICAgZXh0cmEgc3lu
Y2hyb25pemF0aW9uIGZvciB0aGlzIGVpdGhlciAobm9uZSBzZXQgc2QtPmRldm5vZGUtPmxvY2sp
LA0KPj4gICBhbmQgdGhlIHYyIGZpeCAodW5yZWdpc3RlciBmaXJzdCBpbiByZW1vdmUoKSkgYWxy
ZWFkeSBuYXJyb3dlZCB0aGlzDQo+PiAgIGRvd24gdG8gdGhlIHNhbWUgcmVzaWR1YWwgcmlzayBs
ZXZlbCBldmVyeSBwZWVyIGRyaXZlciBjYXJyaWVzLg0KPj4gDQo+PiBDaGFuZ2VzIGluIHYyOg0K
Pj4gLSBGaXggcHJlbWF0dXJlIHY0bDJfYXN5bmNfcmVnaXN0ZXJfc3ViZGV2KCk6IG1vdmUgaXQg
dG8gdGhlIGVuZCBvZg0KPj4gICBwcm9iZSgpIChhZnRlciBjdHJsIGhhbmRsZXIsIENFQyBhbmQg
aW5pdGlhbCBoYXJkd2FyZSBzZXR1cCksIGFuZA0KPj4gICBtaXJyb3IgdGhlIHVucmVnaXN0ZXIg
b3JkZXIgYXQgdGhlIHRvcCBvZiByZW1vdmUoKSwgY2xvc2luZyBhDQo+PiAgIHVzZS1hZnRlci1m
cmVlIHdpbmRvdyB3aGVyZSBhIGNvbmN1cnJlbnQgaW9jdGwgY291bGQgcmVzY2hlZHVsZQ0KPj4g
ICBocGRfZGVsYXllZF93b3JrIGR1cmluZyB0ZWFyZG93bi4NCj4+IC0gVGFrZSBpdDY2MjVfbG9j
ayBhcm91bmQgdGhlIGJhbmtlZCByZWdpc3RlciByZWFkcyBpbg0KPj4gICBpdDY2MjVfZ2V0X2Rl
dGVjdGVkX3RpbWluZ3MoKSBhbmQgdGhlIENFQyBSWCBwYXRoIGluDQo+PiAgIGl0NjYyNV9jZWNf
aGFuZGxlcigpLCB3aGljaCBjb3VsZCBvdGhlcndpc2UgcmFjZSB3aXRoIGFuIGluLXByb2dyZXNz
DQo+PiAgIEVESUQgcmVhZC93cml0ZSBhbmQgb2JzZXJ2ZSB0aGUgd3JvbmcgYmFuay4NCj4+IC0g
Rml4IGl0NjYyNV93YWl0X2Zvcl9zdGF0dXMoKSdzIHBvbGwgaW50ZXJ2YWwgZXhjZWVkaW5nIHRo
ZSB0aW1lb3V0DQo+PiAgIGJ1ZGdldCwgc3BsaXQgdGhlIENFQyBSWC9UWCBpbnRlcnJ1cHQgaGFu
ZGxpbmcgb3V0IG9mIGFuIGVsc2UtaWYgc28NCj4+ICAgc2ltdWx0YW5lb3VzIGV2ZW50cyBhcmVu
J3QgZHJvcHBlZCwgYW5kIHdhaXQgZm9yIGhhcmR3YXJlIHRvIGxhdGNoDQo+PiAgIHRoZSBDRUMg
dHJhbnNtaXQgdHJpZ2dlciBiaXQgYmVmb3JlIHJlbGVhc2luZyB0aGUgbG9jay4NCj4+IC0gU3Rv
cCBpdDY2MjVfc2V0X2ZtdCgpIGZyb20gbXV0YXRpbmcgYWN0aXZlIHN0YXRlIG9uDQo+PiAgIFY0
TDJfU1VCREVWX0ZPUk1BVF9UUlksIGFuZCBoYW5kbGUgZWRpZC0+YmxvY2tzID09IDAgaW4gZ19l
ZGlkL3NfZWRpZA0KPj4gICBwZXIgdGhlIFY0TDIgc3BlYyAoY2FwYWNpdHkgcXVlcnkgLyBFRElE
IGNsZWFyKS4NCj4+IC0gWmVyby1pbml0aWFsaXplIHRoZSBDRUMgcnhtc2cgYW5kIGRlYnVnZnMg
bWlwaV9yZWcgd3JpdGUgYnVmZmVyIHRvDQo+PiAgIGF2b2lkIGxlYWtpbmcgdW5pbml0aWFsaXpl
ZCBzdGFjayBieXRlcywgYW5kIHVzZSBkZXNpZ25hdGVkDQo+PiAgIGluaXRpYWxpemVycyBpbiB0
aGUgaTJjX2RldmljZV9pZCB0YWJsZS4NCj4+IA0KPj4gQWxsIGZvdW5kIGJ5IHRoZSBzYXNoaWtv
LmRldiBhdXRvbWF0ZWQgcmV2aWV3IG9mIHYxLg0KPj4gLS0tDQo+PiAgTUFJTlRBSU5FUlMgICAg
ICAgICAgICAgICAgfCAgICA3ICsNCj4+ICBkcml2ZXJzL21lZGlhL2kyYy9LY29uZmlnICB8ICAg
MTggKw0KPj4gIGRyaXZlcnMvbWVkaWEvaTJjL01ha2VmaWxlIHwgICAgMSArDQo+PiAgZHJpdmVy
cy9tZWRpYS9pMmMvaXQ2NjI1LmMgfCAyMjMxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrDQo+PiAgNCBmaWxlcyBjaGFuZ2VkLCAyMjU3IGluc2VydGlvbnMoKykN
Cj4+IA0KPj4gZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMNCj4+IGluZGV4
IDE1MDExZjU3NTJhOTk0Y2YxYjM1NGY0OTBkNmM0ZTQxMTU4OGRmODguLjJkNWIwZWUxMDdmOWUz
MjU1YTUzNjVlYzBhMjUxNjdhNzE2YjFlNmUgMTAwNjQ0DQo+PiAtLS0gYS9NQUlOVEFJTkVSUw0K
Pj4gKysrIGIvTUFJTlRBSU5FUlMNCj4+IEBAIC0xMzg0Nyw2ICsxMzg0NywxMyBAQCBUOglnaXQg
aHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2RybS9taXNjL2tlcm5lbC5naXQNCj4+ICBG
OglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9icmlkZ2UvaXRlLGl0
NjYxMjEueWFtbA0KPj4gIEY6CWRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvaXRlLWl0NjYxMjEuYw0K
Pj4gIA0KPj4gK0lURSBJVDY2MjUgSERNSSB0byBNSVBJIE1FRElBIERSSVZFUg0KPj4gK006CUhl
cm1lcyBXdSA8SGVybWVzLld1QGl0ZS5jb20udHc+DQo+PiArUzoJTWFpbnRhaW5lZA0KPj4gK1Q6
CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQNCj4+ICtGOglEb2N1bWVudGF0aW9uL2Rl
dmljZXRyZWUvYmluZGluZ3MvbWVkaWEvaTJjL2l0ZSxpdDY2MjUueWFtbA0KPj4gK0Y6CWRyaXZl
cnMvbWVkaWEvaTJjL2l0NjYyNS5jDQo+PiArDQo+PiAgSVZUViBWSURFTzRMSU5VWCBEUklWRVIN
Cj4+ICBNOglBbmR5IFdhbGxzIDxhd2FsbHNAbWQubWV0cm9jYXN0Lm5ldD4NCj4+ICBMOglsaW51
eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcNCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2ky
Yy9LY29uZmlnIGIvZHJpdmVycy9tZWRpYS9pMmMvS2NvbmZpZw0KPj4gaW5kZXggNWQxNzNlMGVj
ZjQyNGYyZjIwNGY4ZDQyNmJlODE4ZTQ0MzU3ZjhlNC4uZmI0YjI0Njg0Zjc3MTBmOTBlYjM5OTk3
NmQxMWY1NzcwMTQ4OGQyNiAxMDA2NDQNCj4+IC0tLSBhL2RyaXZlcnMvbWVkaWEvaTJjL0tjb25m
aWcNCj4+ICsrKyBiL2RyaXZlcnMvbWVkaWEvaTJjL0tjb25maWcNCj4+IEBAIC0xMjc4LDYgKzEy
NzgsMjQgQEAgY29uZmlnIFZJREVPX0lTTDc5OThYDQo+PiAgCSAgU3VwcG9ydCBmb3IgSW50ZXJz
aWwgSVNMNzk5OHggYW5hbG9nIHRvIE1JUEktQ1NJMiBvcg0KPj4gIAkgIEJULjY1NiBkZWNvZGVy
Lg0KPj4gIA0KPj4gK2NvbmZpZyBWSURFT19JVDY2MjUNCj4+ICsJdHJpc3RhdGUgIklUNjYyNSBI
RE1JIHRvIE1JUEkgQ1NJIGJyaWRnZSINCj4+ICsJZGVwZW5kcyBvbiBWSURFT19ERVYgJiYgSTJD
DQo+PiArCWRlcGVuZHMgb24gT0YNCj4+ICsJc2VsZWN0IENFQ19DT1JFDQo+PiArCXNlbGVjdCBN
RURJQV9DT05UUk9MTEVSDQo+PiArCXNlbGVjdCBSRUdNQVBfSTJDDQo+PiArCXNlbGVjdCBWNEwy
X0ZXTk9ERQ0KPj4gKwlzZWxlY3QgVklERU9fVjRMMl9TVUJERVZfQVBJDQo+PiArCWhlbHANCj4+
ICsJICBWNEwyIHN1YmRldmljZSBkcml2ZXIgZm9yIHRoZSBJVEUgSVQ2NjI1L0lUNjYyNiBIRE1J
IHRvIE1JUEkNCj4+ICsJICBDU0ktMiBicmlkZ2UgY2hpcHMuIElUNjYyNSBhY2NlcHRzIGFuIEhE
TUkgMi4wIGlucHV0IGFuZA0KPj4gKwkgIElUNjYyNiBhbiBIRE1JIDIuMSBpbnB1dCwgY29udmVy
dGluZyBpdCB0byBhIE1JUEkgQ1NJLTINCj4+ICsJICBvdXRwdXQuIFRoZSBkcml2ZXIgYWxzbyBl
eHBvc2VzIGFuIEhETUkgQ0VDIGFkYXB0ZXIuDQo+PiArDQo+PiArCSAgVG8gY29tcGlsZSB0aGlz
IGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlDQo+PiArCSAgbW9kdWxlIHdp
bGwgYmUgY2FsbGVkIGl0NjYyNS4NCj4+ICsNCj4+ICBjb25maWcgVklERU9fTFQ2OTExVVhFDQo+
PiAgCXRyaXN0YXRlICJMb250aXVtIExUNjkxMVVYRSBkZWNvZGVyIg0KPj4gIAlkZXBlbmRzIG9u
IEFDUEkgJiYgVklERU9fREVWICYmIEkyQw0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEv
aTJjL01ha2VmaWxlIGIvZHJpdmVycy9tZWRpYS9pMmMvTWFrZWZpbGUNCj4+IGluZGV4IGU0NTM1
OWVmZTBlNDFlMTNlM2MwODY5ZTVlYWQ3ZDZjZjRhY2EzYTcuLjliYmNlYWEzZDA3NTczOTU4ZWRi
OGEzNmJjN2YwOTQyZjE0MTBhMzkgMTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJzL21lZGlhL2kyYy9N
YWtlZmlsZQ0KPj4gKysrIGIvZHJpdmVycy9tZWRpYS9pMmMvTWFrZWZpbGUNCj4+IEBAIC02Myw2
ICs2Myw3IEBAIG9iai0kKENPTkZJR19WSURFT19JTVg0MTIpICs9IGlteDQxMi5vDQo+PiAgb2Jq
LSQoQ09ORklHX1ZJREVPX0lNWDQxNSkgKz0gaW14NDE1Lm8NCj4+ICBvYmotJChDT05GSUdfVklE
RU9fSVJfSTJDKSArPSBpci1rYmQtaTJjLm8NCj4+ICBvYmotJChDT05GSUdfVklERU9fSVNMNzk5
OFgpICs9IGlzbDc5OTh4Lm8NCj4+ICtvYmotJChDT05GSUdfVklERU9fSVQ2NjI1KSArPSBpdDY2
MjUubw0KPj4gIG9iai0kKENPTkZJR19WSURFT19LUzAxMjcpICs9IGtzMDEyNy5vDQo+PiAgb2Jq
LSQoQ09ORklHX1ZJREVPX0xNMzU2MCkgKz0gbG0zNTYwLm8NCj4+ICBvYmotJChDT05GSUdfVklE
RU9fTE0zNjQ2KSArPSBsbTM2NDYubw0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvaTJj
L2l0NjYyNS5jIGIvZHJpdmVycy9tZWRpYS9pMmMvaXQ2NjI1LmMNCj4+IG5ldyBmaWxlIG1vZGUg
MTAwNjQ0DQo+PiBpbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jNDc0MjJlZGViYTc5NjllYzNjOTQ1OTRhOTVhOTdjNjE3MGY0OWYyDQo+PiAtLS0gL2Rldi9u
dWxsDQo+PiArKysgYi9kcml2ZXJzL21lZGlhL2kyYy9pdDY2MjUuYw0KPj4gQEAgLTAsMCArMSwy
MjMxIEBADQo+PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQ0KPj4g
Ky8qDQo+PiArICogaXQ2NjI1IC0gaXRlIEhETUkgdG8gTUlQSSBicmlkZ2UNCj4+ICsgKi8NCj4+
ICsjaW5jbHVkZSA8bGludXgvYml0ZmllbGQuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvY2xrLmg+
DQo+PiArI2luY2x1ZGUgPGxpbnV4L2RlYnVnZnMuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvZGVs
YXkuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvZ3Bpby9jb25zdW1lci5oPg0KPj4gKyNpbmNsdWRl
IDxsaW51eC9oZG1pLmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L2kyYy5oPg0KPj4gKyNpbmNsdWRl
IDxsaW51eC9pbnRlcnJ1cHQuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgva2VybmVsLmg+DQo+PiAr
I2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9vZl9ncmFwaC5o
Pg0KPj4gKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvc2xh
Yi5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC90aW1lci5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC92
NGwyLWR2LXRpbWluZ3MuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvdmlkZW9kZXYyLmg+DQo+PiAr
I2luY2x1ZGUgPGxpbnV4L3dvcmtxdWV1ZS5oPg0KPj4gKw0KPj4gKyNpbmNsdWRlIDxtZWRpYS9j
ZWMuaD4NCj4+ICsjaW5jbHVkZSA8bWVkaWEvdjRsMi1jdHJscy5oPg0KPj4gKyNpbmNsdWRlIDxt
ZWRpYS92NGwyLWRldmljZS5oPg0KPj4gKyNpbmNsdWRlIDxtZWRpYS92NGwyLWR2LXRpbWluZ3Mu
aD4NCj4+ICsjaW5jbHVkZSA8bWVkaWEvdjRsMi1ldmVudC5oPg0KPj4gKyNpbmNsdWRlIDxtZWRp
YS92NGwyLWZ3bm9kZS5oPg0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgZGVidWcgPSAzOw0KPj4gK21v
ZHVsZV9wYXJhbShkZWJ1ZywgaW50LCAwNjQ0KTsNCj4+ICtNT0RVTEVfUEFSTV9ERVNDKGRlYnVn
LCAiZGVidWcgbGV2ZWwgKDAtMykiKTsNCj4+ICsNCj4+ICsjZGVmaW5lIFJFR19DSElQX0lEXzAg
MHgwMA0KPj4gKyNkZWZpbmUgUkVHX0NISVBfSURfMSAweDAxDQo+PiArI2RlZmluZSBSRUdfRldf
VkVSX01BSk9SIDB4MDMNCj4+ICsjZGVmaW5lIFJFR19GV19WRVJfTUlOT1IgMHgwNA0KPj4gKyNk
ZWZpbmUgUkVHX1BST1RPQ09MX1ZFUlNJT04gMHgwNQ0KPj4gKyNkZWZpbmUgQl9QVkVSX01JTk9S
ICBCSVQoMCkNCj4+ICsjZGVmaW5lIEJfUFZFUl9NQUpPUiAgQklUKDQpDQo+PiArDQo+PiArI2Rl
ZmluZSBSRUdfQ01EX1NFVCAweDEwDQo+PiArI2RlZmluZSBDTURfU0VUX0NFQ19MQSAweEMwDQo+
PiArI2RlZmluZSBDTURfU0VUX0NFQ19FTkFCTEUgMHhDMQ0KPj4gKw0KPj4gKyNkZWZpbmUgUkVH
X0VESURfU1RBUlQgMHgyMA0KPj4gKyNkZWZpbmUgUkVHX0NFQ19SWF9EQVRBIDB4MjANCj4+ICsj
ZGVmaW5lIFJFR19DRUNfVFhfREFUQSAweDMwDQo+PiArDQo+PiArI2RlZmluZSBSRUdfSF9BQ1RJ
VkVfMSAweDUwDQo+PiArI2RlZmluZSBSRUdfSF9BQ1RJVkVfMCAweDUxDQo+PiArI2RlZmluZSBS
RUdfVl9BQ1RJVkVfMSAweDUyDQo+PiArI2RlZmluZSBSRUdfVl9BQ1RJVkVfMCAweDUzDQo+PiAr
I2RlZmluZSBSRUdfSF9UT1RBTF8xIDB4NTQNCj4+ICsjZGVmaW5lIFJFR19IX1RPVEFMXzAgMHg1
NQ0KPj4gKyNkZWZpbmUgUkVHX1ZfVE9UQUxfMSAweDU2DQo+PiArI2RlZmluZSBSRUdfVl9UT1RB
TF8wIDB4NTcNCj4+ICsjZGVmaW5lIFJFR19WSURfUENMSyAweDU4DQo+PiArI2RlZmluZSBSRUdf
SF9GUF8xIDB4NUMNCj4+ICsjZGVmaW5lIFJFR19IX0ZQXzAgMHg1RA0KPj4gKyNkZWZpbmUgUkVH
X0hfU1dfMSAweDVFDQo+PiArI2RlZmluZSBSRUdfSF9TV18wIDB4NUYNCj4+ICsjZGVmaW5lIFJF
R19IX0JQXzEgMHg2MA0KPj4gKyNkZWZpbmUgUkVHX0hfQlBfMCAweDYxDQo+PiArI2RlZmluZSBS
RUdfVl9GUF8xIDB4NjINCj4+ICsjZGVmaW5lIFJFR19WX0ZQXzAgMHg2Mw0KPj4gKyNkZWZpbmUg
UkVHX1ZfU1dfMSAweDY0DQo+PiArI2RlZmluZSBSRUdfVl9TV18wIDB4NjUNCj4+ICsjZGVmaW5l
IFJFR19WX0JQXzEgMHg2Ng0KPj4gKyNkZWZpbmUgUkVHX1ZfQlBfMCAweDY3DQo+PiArI2RlZmlu
ZSBSRUdfVklEX0lORk8gMHg2OA0KPj4gKyNkZWZpbmUgQl9JTlRFUkxBQ0UgIEJJVCgwKQ0KPj4g
KyNkZWZpbmUgQl9IU1dQT0wgIEJJVCgxKQ0KPj4gKyNkZWZpbmUgQl9WU1dQT0wgIEJJVCgyKQ0K
Pj4gKyNkZWZpbmUgQl9QSVhFTF9SRVAgIEJJVCg0KQ0KPj4gKw0KPj4gKyNkZWZpbmUgUkVHX1ZJ
QyAweDY5DQo+PiArI2RlZmluZSBSRUdfSERNSV9WSURFT19JTkZPIDB4NkENCj4+ICsjZGVmaW5l
IEJfQ09MT1JfTU9ERSAgQklUKDApDQo+PiArI2RlZmluZSBCX0NPTE9SX0RFUFRIICBCSVQoNCkN
Cj4+ICsjZGVmaW5lIFJFR19IRE1JX0FVRElPX0lORk8xIDB4NkINCj4+ICsjZGVmaW5lIEJfQVVE
X0ZTICBCSVQoMCkNCj4+ICsNCj4+ICsjZGVmaW5lIFJFR19IRE1JX0FVRElPX0lORk8yIDB4NkMN
Cj4+ICsjZGVmaW5lIEJfQVVEX0NIICBCSVQoMCkNCj4+ICsjZGVmaW5lIEJfQVVEX1dMICBCSVQo
NCkNCj4+ICsNCj4+ICsjZGVmaW5lIFJFR19IRE1JX0FVRElPX0lORk8zIDB4NkQNCj4+ICsjZGVm
aW5lIEJfQVVEX1RZUEUgIEJJVCgwKQ0KPj4gKyNkZWZpbmUgQl9BVURfTVMgIEJJVCgyKQ0KPj4g
KyNkZWZpbmUgQl9BVURfM0QgIEJJVCgzKQ0KPj4gKw0KPj4gKyNkZWZpbmUgUkVHX0FVRElPX0ZN
VCAweDZFDQo+PiArI2RlZmluZSBCX0kyU19XTCAgQklUKDApDQo+PiArI2RlZmluZSBCX0kyU19B
TE4gQklUKDIpDQo+PiArI2RlZmluZSBCX0kyU19ETFkgQklUKDMpDQo+PiArI2RlZmluZSBCX0ky
U19MUiAgQklUKDQpDQo+PiArI2RlZmluZSBCX0kyU19TRlQgQklUKDUpDQo+PiArI2RlZmluZSBC
X0FVRF9PVVRfSUYgIEJJVCg2KQ0KPj4gKw0KPj4gKyNkZWZpbmUgUkVHX0lGX0xBVENIX0hCIDB4
NkYNCj4+ICsjZGVmaW5lIFJFR19JRl9EQVRBIDB4NzANCj4+ICsjZGVmaW5lIFJFR19FTVBfREFU
QSAweEEwDQo+PiArI2RlZmluZSBSRUdfQVZJX0RBVEEgMHhBRQ0KPj4gKw0KPj4gKyNkZWZpbmUg
UkVHX1RYX1NUQVRVUyAweEUwDQo+PiArDQo+PiArI2RlZmluZSBSRUdfUlhfU1RBVFVTIDB4RTIN
Cj4+ICsjZGVmaW5lIEJfUlhfNVYgQklUKDApDQo+PiArI2RlZmluZSBCX1JYX0hQRCBCSVQoMSkN
Cj4+ICsjZGVmaW5lIEJfUlhfU1RBQkxFIEJJVCgyKQ0KPj4gKyNkZWZpbmUgQl9SWF9IRE1JIEJJ
VCgzKQ0KPj4gKyNkZWZpbmUgQl9SWF9BVk1VVEUgQklUKDQpDQo+PiArI2RlZmluZSBCX1JYX0FV
RF9PTiBCSVQoNSkNCj4+ICsNCj4+ICsjZGVmaW5lIFJFR19SWF9IRENQX1NUUyAweEUzDQo+PiAr
I2RlZmluZSBCX0hEQ1AxX0FVVEhfU1RBUlQgQklUKDApDQo+PiArI2RlZmluZSBCX0hEQ1AyX0FV
VEhfU1RBUlQgQklUKDEpDQo+PiArI2RlZmluZSBCX0hEQ1BfQVVUSF9ET05FIEJJVCgyKQ0KPj4g
KyNkZWZpbmUgQl9IRENQX0VOQyBCSVQoMykNCj4+ICsNCj4+ICsjZGVmaW5lIFJFR19DRUNfU1RB
VFVTIDB4RTQNCj4+ICsjZGVmaW5lIEJfQ0VDX1RYX0RPTkUgQklUKDApDQo+PiArI2RlZmluZSBC
X0NFQ19UWF9OQUNLIEJJVCgxKQ0KPj4gKw0KPj4gKyNkZWZpbmUgUkVHX0NFQ19SWF9EQVRBX0xF
TiAweEU1DQo+PiArI2RlZmluZSBSRUdfQ0VDX1RYX0RBVEFfTEVOIDB4RTYNCj4+ICsNCj4+ICsj
ZGVmaW5lIFJFR19TWVNfTUlQSV9JTlQgMHhFQg0KPj4gKyNkZWZpbmUgQl9NSVBJX09VVFBVVF9F
TkFCTEUgQklUKDApDQo+PiArI2RlZmluZSBCX01JUElfVklERU9fVU5TVEFCTEUgQklUKDEpDQo+
PiArDQo+PiArI2RlZmluZSBSRUdfUlhfSU5UX1NUQVRVUzEgMHhFQw0KPj4gKyNkZWZpbmUgQl9I
RE1JXzVWX0NIRyAgIEJJVCgwKQ0KPj4gKyNkZWZpbmUgQl9IRE1JX1ZJRF9DSEcgIEJJVCgxKQ0K
Pj4gKyNkZWZpbmUgQl9IRE1JX0FVRF9DSEcgIEJJVCgyKQ0KPj4gKyNkZWZpbmUgQl9IRE1JX0NQ
X0NIRyAgIEJJVCgzKQ0KPj4gKyNkZWZpbmUgQl9IRE1JX0lGX0xBVENIIEJJVCg0KQ0KPj4gKyNk
ZWZpbmUgQl9IRE1JX05PX0lGX0xBVENIICBCSVQoNSkNCj4+ICsjZGVmaW5lIEJfSERNSV9FTVAg
ICAgICBCSVQoNikNCj4+ICsjZGVmaW5lIEJfSERNSV9OT19FTVAgICBCSVQoNykNCj4+ICsNCj4+
ICsjZGVmaW5lIFJFR19SWF9JTlRfU1RBVFVTMiAweEVEDQo+PiArI2RlZmluZSBCX0hETUlfQVZJ
ICAgICAgQklUKDApDQo+PiArI2RlZmluZSBCX0hETUlfTk9fQVZJICAgQklUKDEpDQo+PiArI2Rl
ZmluZSBCX0hETUlfVlNJRiAgICAgQklUKDIpDQo+PiArI2RlZmluZSBCX0hETUlfTk9fVlNJRiAg
QklUKDMpDQo+PiArI2RlZmluZSBCX0hETUlfQVZNVVRFX0NIRyAgQklUKDQpDQo+PiArDQo+PiAr
I2RlZmluZSBSRUdfQ0hJUF9DT05UUk9MIDB4RjANCj4+ICsjZGVmaW5lIEJfSERNSV9SRVNFVCAg
QklUKDUpDQo+PiArI2RlZmluZSBCX0ZXX1NUQVJUICBCSVQoNikNCj4+ICsNCj4+ICsjZGVmaW5l
IFJFR19NSVBJX0NGRyAweEYxDQo+PiArI2RlZmluZSBNX01JUElfTEFORSAgMHgwMw0KPj4gKyNk
ZWZpbmUgQl9NSVBJX1NQTElUICBCSVQoMikNCj4+ICsjZGVmaW5lIEJfTUlQSV9TUExJVF9DRkcg
IEJJVCgzKQ0KPj4gKyNkZWZpbmUgQl9NSVBJX0RQSFkgIEJJVCg0KQ0KPj4gKyNkZWZpbmUgQl9N
SVBJX1VTRV9EU0kgIEJJVCg1KQ0KPj4gKyNkZWZpbmUgQl9NSVBJX0NPTlRJTlVfQ0xLICBCSVQo
NikNCj4+ICsNCj4+ICsjZGVmaW5lIFJFR19NSVBJX0RBVEFfVFlQRSAweEYyDQo+PiArI2RlZmlu
ZSBDU0lfUkdCNDQ0ICAgICAgICAgIDB4MjANCj4+ICsjZGVmaW5lIENTSV9SR0I1NTUgICAgICAg
ICAgMHgyMQ0KPj4gKyNkZWZpbmUgQ1NJX1JHQjU2NSAgICAgICAgICAweDIyDQo+PiArI2RlZmlu
ZSBDU0lfUkdCNjY2ICAgICAgICAgIDB4MjMNCj4+ICsjZGVmaW5lIENTSV9SR0I4ODggICAgICAg
ICAgMHgyNA0KPj4gKyNkZWZpbmUgQ1NJX1lVVjQyMF84Yl9MICAgICAweDFBDQo+PiArI2RlZmlu
ZSBDU0lfWVVWNDIwXzhiICAgICAgIDB4MUMNCj4+ICsjZGVmaW5lIENTSV9ZVVY0MjBfMTBiICAg
ICAgMHgxRA0KPj4gKyNkZWZpbmUgQ1NJX1lVVjQyMl84YiAgICAgICAweDFFDQo+PiArI2RlZmlu
ZSBDU0lfWVVWNDIyXzEwYiAgICAgIDB4MUYNCj4+ICsjZGVmaW5lIENTSV9SR0JfMTBiICAgICAg
ICAgMHgzMA0KPj4gKyNkZWZpbmUgQ1NJX1JHQl8xMmIgICAgICAgICAweDMxDQo+PiArI2RlZmlu
ZSBDU0lfWVVWNDIyXzEyYiAgICAgIDB4MzINCj4+ICsjZGVmaW5lIENTSV9ZVVY0MjBfMTBiX0wg
ICAgMHgzMw0KPj4gKyNkZWZpbmUgQ1NJX1lVVjQyMF8xMmIgICAgICAweDM0DQo+PiArI2RlZmlu
ZSBDU0lfWVVWNDQ0XzhiICAgICAgIDB4MzUNCj4+ICsjZGVmaW5lIENTSV9ZVVY0NDRfMTBiICAg
ICAgMHgzNg0KPj4gKyNkZWZpbmUgQ1NJX1lVVjQ0NF8xMmIgICAgICAweDM3DQo+PiArDQo+PiAr
I2RlZmluZSBSRUdfTUlQSV9DT05UUk9MIDB4RjMNCj4+ICsjZGVmaW5lIEJfTUlQSV9PVVRQVVQg
ICAgQklUKDApDQo+PiArDQo+PiArI2RlZmluZSBSRUdfUlhfQ0ZHIDB4RjQNCj4+ICsjZGVmaW5l
IEJfTUFOVUFMX0hQRCAgICBCSVQoMCkNCj4+ICsjZGVmaW5lIEJfSFBEX0hJR0ggICAgQklUKDEp
DQo+PiArI2RlZmluZSBCX0hQRF9UT0dHTEUgICAgQklUKDMpDQo+PiArDQo+PiArI2RlZmluZSBS
RUdfQ1NDX0NGRyAweEY1DQo+PiArI2RlZmluZSBCX0RZTkFNSUNfUkFOR0UgQklUKDApDQo+PiAr
DQo+PiArI2RlZmluZSBSRUdfTUlTQ19DRkcgMHhGNg0KPj4gKyNkZWZpbmUgQl9CQVVEX1JBVEUg
QklUKDApDQo+PiArI2RlZmluZSBCX0RFQlVHX01TRyBCSVQoMSkNCj4+ICsNCj4+ICsjZGVmaW5l
IFJFR19IUERfREVMQVkgMHhGNw0KPj4gKyNkZWZpbmUgQl9ERUxBWV9DT1VOVCBCSVQoMCkNCj4+
ICsjZGVmaW5lIEJfREVMQVlfVU5JVCBCSVQoNykNCj4+ICsNCj4+ICsjZGVmaW5lIFJFR19JTkZP
X0JBTktfU0VMIDB4RkQNCj4+ICsjZGVmaW5lIENUTF9CQU5LX0VESURfUkVBRCAxDQo+PiArI2Rl
ZmluZSBDVExfQkFOS19FRElEX1dSSVRFIDUNCj4+ICsNCj4+ICsjZGVmaW5lIFJFR19IT1NUX0NU
UkxfSU5UIDB4RkUNCj4+ICsjZGVmaW5lIEJfQ01EX1NFVCBCSVQoNCkNCj4+ICsjZGVmaW5lIEJf
Q0VDX1NFTkRfREFUQSBCSVQoNSkNCj4+ICsjZGVmaW5lIEJfQ09ORklHX1VQREFURSBCSVQoNikN
Cj4+ICsjZGVmaW5lIEJfSUZfQkFOSyBCSVQoNykNCj4+ICsNCj4+ICsjZGVmaW5lIFJFR19NQ1Vf
SU5URVJSVVBUIDB4RkYNCj4+ICsjZGVmaW5lIEJfU1lTX0lOVF9BQ1RJVkUgQklUKDApDQo+PiAr
I2RlZmluZSBCX0NFQ19SWF9SRUNFSVZFRCBCSVQoMSkNCj4+ICsjZGVmaW5lIEJfQ0VDX1RYX1VQ
REFURSBCSVQoMikNCj4+ICsNCj4+ICsjZGVmaW5lIEVESURfTlVNX0JMT0NLU19NQVggNA0KPj4g
KyNkZWZpbmUgRURJRF9CTE9DS19TSVpFIDEyOA0KPj4gKw0KPj4gKyNkZWZpbmUgSTJDX01BWF9Y
RkVSX1NJWkUgIDgNCj4+ICsjZGVmaW5lIFBPTExfSU5URVJWQUxfQ0VDX01TCTEwDQo+PiArI2Rl
ZmluZSBQT0xMX0lOVEVSVkFMX01TCTQwDQo+PiArDQo+PiArI2RlZmluZSBBVUQzMksgICAweDAz
DQo+PiArI2RlZmluZSBBVUQ0NEsgICAweDAwDQo+PiArI2RlZmluZSBBVUQ0OEsgICAweDAyDQo+
PiArI2RlZmluZSBBVUQ2NEsgICAweDBCDQo+PiArI2RlZmluZSBBVUQ4OEsgICAweDA4DQo+PiAr
I2RlZmluZSBBVUQ5NksgICAweDBBDQo+PiArI2RlZmluZSBBVUQxMjhLICAweDJCDQo+PiArI2Rl
ZmluZSBBVUQxNzZLICAweDBDDQo+PiArI2RlZmluZSBBVUQxOTJLICAweDBFDQo+PiArI2RlZmlu
ZSBBVUQyNTZLICAweDFCDQo+PiArI2RlZmluZSBBVUQzNTJLICAweDBEDQo+PiArI2RlZmluZSBB
VUQzODRLICAweDA1DQo+PiArI2RlZmluZSBBVUQ1MTJLICAweDNCDQo+PiArI2RlZmluZSBBVUQ3
MDVLICAweDJEDQo+PiArI2RlZmluZSBBVUQ3NjhLICAweDA5DQo+PiArI2RlZmluZSBBVUQxMDI0
SyAweDM1DQo+PiArI2RlZmluZSBBVUQxNDExSyAweDFEDQo+PiArI2RlZmluZSBBVUQxNTM2SyAw
eDE1DQo+PiArDQo+PiArZW51bSBpdDY2MjVfY2hpcF90eXBlIHsNCj4+ICsJSVQ2NjI1X0NISVAg
PSAwLA0KPj4gKwlJVDY2MjZfQ0hJUCA9IDEsDQo+PiArfTsNCj4+ICsNCj4+ICtzdHJ1Y3QgaXQ2
NjI1IHsNCj4+ICsJc3RydWN0IGRldmljZSAqZGV2Ow0KPj4gKwlzdHJ1Y3QgaTJjX2NsaWVudCAq
aTJjX2NsaWVudDsNCj4+ICsJc3RydWN0IHJlZ21hcCAqaXQ2NjI1X3JlZ21hcDsNCj4+ICsJZW51
bSBpdDY2MjVfY2hpcF90eXBlIGNoaXBfdHlwZTsNCj4+ICsNCj4+ICsJLyogcHJvdGVjdHMgY29u
Y3VycmVudCBhY2Nlc3MgdG8gdGhlIGNoaXAncyByZWdpc3RlcnMgYW5kIHN0YXRlICovDQo+PiAr
CXN0cnVjdCBtdXRleCBpdDY2MjVfbG9jazsNCj4+ICsNCj4+ICsJc3RydWN0IHY0bDJfc3ViZGV2
IHNkOw0KPj4gKwlzdHJ1Y3QgdjRsMl9tYnVzX2NvbmZpZ19taXBpX2NzaTIgYnVzOw0KPj4gKwlz
dHJ1Y3QgdmlkZW9fZGV2aWNlICp2ZGV2Ow0KPj4gKwlzdHJ1Y3QgbWVkaWFfcGFkIHBhZDsNCj4+
ICsJc3RydWN0IHY0bDJfY3RybF9oYW5kbGVyIGhkbDsNCj4+ICsNCj4+ICsJLyogY29udHJvbHMg
Ki8NCj4+ICsJc3RydWN0IHY0bDJfY3RybCAqY3RybF81dl9kZXRlY3Q7DQo+PiArCXN0cnVjdCB2
NGwyX2N0cmwgKmN0cmxfYXVkaW9fc2FtcGxpbmdfcmF0ZTsNCj4+ICsJc3RydWN0IHY0bDJfY3Ry
bCAqY3RybF9hdWRpb19wcmVzZW50Ow0KPj4gKwlzdHJ1Y3QgdjRsMl9jdHJsICpjdHJsX2xpbmtf
ZnJlcTsNCj4+ICsJc3RydWN0IHY0bDJfY3RybCAqY3RybF9nZXRfaGRtaV9pbmZvOw0KPj4gKwlz
dHJ1Y3QgdjRsMl9jdHJsICpjdHJsX21pcGlfY29uZmlnOw0KPj4gKw0KPj4gKwlzdHJ1Y3QgZGVs
YXllZF93b3JrIGhwZF9kZWxheWVkX3dvcms7DQo+PiArDQo+PiArCXN0cnVjdCB0aW1lcl9saXN0
IHRpbWVyOw0KPj4gKwlzdHJ1Y3Qgd29ya19zdHJ1Y3QgcG9sbGluZ193b3JrOw0KPj4gKw0KPj4g
KwlzdHJ1Y3QgdjRsMl9kdl90aW1pbmdzIHRpbWluZ3M7DQo+PiArDQo+PiArCXU4IGNzaV9sYW5l
czsNCj4+ICsJdTggcG9ydF9udW07DQo+PiArCWVudW0gdjRsMl9tYnVzX3R5cGUgYnVzX3R5cGU7
DQo+PiArCXU4IGNzaV9mb3JtYXQ7DQo+PiArCXUzMiBtYnVzX2ZtdF9jb2RlOw0KPj4gKw0KPj4g
KwlzdHJ1Y3QgZ3Bpb19kZXNjICpyZXNldF9ncGlvOw0KPj4gKw0KPj4gKwlzdHJ1Y3QgY2VjX2Fk
YXB0ZXIgKmNlY19hZGFwOw0KPj4gKw0KPj4gKwlzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX2RpcjsN
Cj4+ICt9Ow0KPj4gKw0KPj4gK3N0YXRpYyBjb25zdCBzNjQgaXQ2NjI1X2xpbmtfZnJlcVtdID0g
eyA0NDU1MDAwMDAgfTsNCj4+ICsNCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfZHZfdGlt
aW5nc19jYXAgaXQ2NjI1X3RpbWluZ3NfY2FwID0gew0KPj4gKwkudHlwZSA9IFY0TDJfRFZfQlRf
NjU2XzExMjAsDQo+PiArCS8qIGtlZXAgdGhpcyBpbml0aWFsaXphdGlvbiBmb3IgY29tcGF0aWJp
bGl0eSB3aXRoIEdDQyA8IDQuNC42ICovDQo+PiArCS5yZXNlcnZlZCA9IHsgMCB9LA0KPj4gKw0K
Pj4gKwlWNEwyX0lOSVRfQlRfVElNSU5HUyg2NDAsIDM4NDAsIDQ4MCwgMjE2MCwgMjcwMDAwMDAs
IDMwMDAwMDAwMCwNCj4+ICsJCQkgICAgIFY0TDJfRFZfQlRfU1REX0NFQTg2MSB8IFY0TDJfRFZf
QlRfU1REX0RNVCB8DQo+PiArCQkJICAgICBWNEwyX0RWX0JUX1NURF9HVEYgfCBWNEwyX0RWX0JU
X1NURF9DVlQsDQo+PiArCQkJICAgICBWNEwyX0RWX0JUX0NBUF9QUk9HUkVTU0lWRSB8IFY0TDJf
RFZfQlRfQ0FQX0lOVEVSTEFDRUQgfA0KPj4gKwkJCSAgICAgVjRMMl9EVl9CVF9DQVBfUkVEVUNF
RF9CTEFOS0lORyB8IFY0TDJfRFZfQlRfQ0FQX0NVU1RPTSkNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0
YXRpYyBjb25zdCBzdHJ1Y3QgaXQ2NjI1X2Zvcm1hdF9pbmZvIHsNCj4+ICsJdTggY3NpX2Zvcm1h
dDsNCj4+ICsJdTMyIG1idXNfZm10X2NvZGU7DQo+PiArfSBpdDY2MjVfZm9ybWF0c1tdID0gew0K
Pj4gKwl7IENTSV9ZVVY0MjJfOGIsIE1FRElBX0JVU19GTVRfVVlWWThfMVgxNiB9LA0KPj4gKwl7
IENTSV9SR0I4ODgsIE1FRElBX0JVU19GTVRfUkdCODg4XzFYMjQgfSwNCj4+ICsJeyBDU0lfWVVW
NDQ0XzhiLCBNRURJQV9CVVNfRk1UX1lVVjhfMVgyNCB9LA0KPj4gK307DQo+PiArDQo+PiArc3Rh
dGljIGlubGluZSBpbnQgaXQ2NjI1X2NzaV9mb3JtYXRfaWR4KHU4IGNzaV9mb3JtYXQpDQo+PiAr
ew0KPj4gKwlpbnQgaTsNCj4+ICsNCj4+ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoaXQ2
NjI1X2Zvcm1hdHMpOyBpKyspIHsNCj4+ICsJCWlmIChpdDY2MjVfZm9ybWF0c1tpXS5jc2lfZm9y
bWF0ID09IGNzaV9mb3JtYXQpDQo+PiArCQkJcmV0dXJuIGk7DQo+PiArCX0NCj4+ICsNCj4+ICsJ
cmV0dXJuIC1FSU5WQUw7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbmxpbmUgaW50IGl0NjYy
NV9jc2lfbWJ1c19jb2RlX2lkeCh1MzIgbWJ1c19mbXRfY29kZSkNCj4+ICt7DQo+PiArCWludCBp
Ow0KPj4gKw0KPj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShpdDY2MjVfZm9ybWF0cyk7
IGkrKykgew0KPj4gKwkJaWYgKGl0NjYyNV9mb3JtYXRzW2ldLm1idXNfZm10X2NvZGUgPT0gbWJ1
c19mbXRfY29kZSkNCj4+ICsJCQlyZXR1cm4gaTsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlyZXR1cm4g
LUVJTlZBTDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGlubGluZSBzdHJ1Y3QgaXQ2NjI1ICpz
ZF90b182NjI1KHN0cnVjdCB2NGwyX3N1YmRldiAqc2QpDQo+PiArew0KPj4gKwlyZXR1cm4gY29u
dGFpbmVyX29mKHNkLCBzdHJ1Y3QgaXQ2NjI1LCBzZCk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRp
YyBpbmxpbmUgc3RydWN0IGl0NjYyNSAqaGRsX3RvXzY2MjUoc3RydWN0IHY0bDJfY3RybF9oYW5k
bGVyICpoZGwpDQo+PiArew0KPj4gKwlyZXR1cm4gY29udGFpbmVyX29mKGhkbCwgc3RydWN0IGl0
NjYyNSwgaGRsKTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBf
Y29uZmlnIGl0NjYyNV9yZWdtYXBfY29uZmlnID0gew0KPj4gKwkucmVnX2JpdHMgPSA4LA0KPj4g
KwkudmFsX2JpdHMgPSA4LA0KPj4gKwkubWF4X3JlZ2lzdGVyID0gMHhmZiwNCj4+ICsJLmNhY2hl
X3R5cGUgPSBSRUdDQUNIRV9OT05FLA0KPj4gKwkubWF4X3Jhd19yZWFkID0gSTJDX01BWF9YRkVS
X1NJWkUsDQo+PiArCS5tYXhfcmF3X3dyaXRlID0gSTJDX01BWF9YRkVSX1NJWkUsDQo+PiArfTsN
Cj4+ICsNCj4+ICtzdGF0aWMgaW50IGl0NjYyNV9yZWdtYXBfaTJjX2luaXQoc3RydWN0IGkyY19j
bGllbnQgKmNsaWVudCwNCj4+ICsJCQkJICBzdHJ1Y3QgaXQ2NjI1ICppdDY2MjUpDQo+PiArew0K
Pj4gKwlpdDY2MjUtPmkyY19jbGllbnQgPSBjbGllbnQ7DQo+PiArCWl0NjYyNS0+ZGV2ID0gJmNs
aWVudC0+ZGV2Ow0KPj4gKw0KPj4gKwlpdDY2MjUtPml0NjYyNV9yZWdtYXAgPSBkZXZtX3JlZ21h
cF9pbml0X2kyYyhpdDY2MjUtPmkyY19jbGllbnQsDQo+PiArCQkJCQkJICAgICAmaXQ2NjI1X3Jl
Z21hcF9jb25maWcpOw0KPj4gKwlpZiAoSVNfRVJSKGl0NjYyNS0+aXQ2NjI1X3JlZ21hcCkpDQo+
PiArCQlyZXR1cm4gUFRSX0VSUihpdDY2MjUtPml0NjYyNV9yZWdtYXApOw0KPj4gKw0KPj4gKwly
ZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBpdDY2MjVfcmVhZF9ieXRlKHN0
cnVjdCBpdDY2MjUgKml0NjYyNSwgdTggcmVnKQ0KPj4gK3sNCj4+ICsJdW5zaWduZWQgaW50IHZh
bDsNCj4+ICsJaW50IGVycjsNCj4+ICsJc3RydWN0IGRldmljZSAqZGV2ID0gaXQ2NjI1LT5kZXY7
DQo+PiArDQo+PiArCWVyciA9IHJlZ21hcF9yZWFkKGl0NjYyNS0+aXQ2NjI1X3JlZ21hcCwgcmVn
LCAmdmFsKTsNCj4+ICsJaWYgKGVyciA8IDApIHsNCj4+ICsJCWRldl9lcnIoZGV2LCAicmVnWzB4
JXhdIHJlYWQgZmFpbGVkIGVycjogJWQiLCByZWcsIGVycik7DQo+PiArCQlyZXR1cm4gZXJyOw0K
Pj4gKwl9DQo+PiArDQo+PiArCXJldHVybiB2YWw7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBp
bnQgaXQ2NjI1X3dyaXRlX2J5dGUoc3RydWN0IGl0NjYyNSAqaXQ2NjI1LCB1OCByZWcsIHU4IHZh
bCkNCj4+ICt7DQo+PiArCWludCBlcnI7DQo+PiArCXN0cnVjdCBkZXZpY2UgKmRldiA9IGl0NjYy
NS0+ZGV2Ow0KPj4gKw0KPj4gKwllcnIgPSByZWdtYXBfd3JpdGUoaXQ2NjI1LT5pdDY2MjVfcmVn
bWFwLCByZWcsIHZhbCk7DQo+PiArCWlmIChlcnIgPCAwKSB7DQo+PiArCQlkZXZfZXJyKGRldiwg
InJlZ1sweCV4XSB3cml0ZSBmYWlsZWQgZXJyOiAlZCIsIHJlZywgZXJyKTsNCj4+ICsJCXJldHVy
biBlcnI7DQo+PiArCX0NCj4+ICsNCj4+ICsJcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0
YXRpYyBpbnQgaXQ2NjI1X3NldF9iaXRzKHN0cnVjdCBpdDY2MjUgKml0NjYyNSwgdTggcmVnLCB1
OCBtYXNrLCB1OCB2YWwpDQo+PiArew0KPj4gKwlpbnQgZXJyOw0KPj4gKwlzdHJ1Y3QgZGV2aWNl
ICpkZXYgPSBpdDY2MjUtPmRldjsNCj4+ICsNCj4+ICsJZXJyID0gcmVnbWFwX3VwZGF0ZV9iaXRz
KGl0NjYyNS0+aXQ2NjI1X3JlZ21hcCwgcmVnLCBtYXNrLCB2YWwpOw0KPj4gKwlpZiAoZXJyIDwg
MCkgew0KPj4gKwkJZGV2X2VycihkZXYsICJyZWdbMHgleF0gc2V0IGJpdHMgZmFpbGVkIGVycjog
JWQiLCByZWcsIGVycik7DQo+PiArCQlyZXR1cm4gZXJyOw0KPj4gKwl9DQo+PiArDQo+PiArCXJl
dHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IGl0NjYyNV9yZWFkX2J5dGVzKHN0
cnVjdCBpdDY2MjUgKml0NjYyNSwgdTggcmVnLCB1OCAqYnVmLCBpbnQgbGVuKQ0KPj4gK3sNCj4+
ICsJaW50IGVycjsNCj4+ICsJc3RydWN0IGRldmljZSAqZGV2ID0gaXQ2NjI1LT5kZXY7DQo+PiAr
DQo+PiArCWVyciA9IHJlZ21hcF9idWxrX3JlYWQoaXQ2NjI1LT5pdDY2MjVfcmVnbWFwLCByZWcs
IGJ1ZiwgbGVuKTsNCj4+ICsJaWYgKGVyciA8IDApIHsNCj4+ICsJCWRldl9lcnIoZGV2LCAicmVn
WzB4JXhdIHJlYWQgZmFpbGVkIGVycjogJWQiLCByZWcsIGVycik7DQo+PiArCQlyZXR1cm4gZXJy
Ow0KPj4gKwl9DQo+PiArDQo+PiArCXJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMg
aW50IGl0NjYyNV93cml0ZV9ieXRlcyhzdHJ1Y3QgaXQ2NjI1ICppdDY2MjUsIHU4IHJlZywgdTgg
KmJ1ZiwgaW50IGxlbikNCj4+ICt7DQo+PiArCWludCBlcnI7DQo+PiArCXN0cnVjdCBkZXZpY2Ug
KmRldiA9IGl0NjYyNS0+ZGV2Ow0KPj4gKw0KPj4gKwllcnIgPSByZWdtYXBfYnVsa193cml0ZShp
dDY2MjUtPml0NjYyNV9yZWdtYXAsIHJlZywgYnVmLCBsZW4pOw0KPj4gKwlpZiAoZXJyIDwgMCkg
ew0KPj4gKwkJZGV2X2VycihkZXYsICJyZWdbMHgleF0gd3JpdGUgZmFpbGVkIGVycjogJWQiLCBy
ZWcsIGVycik7DQo+PiArCQlyZXR1cm4gZXJyOw0KPj4gKwl9DQo+PiArDQo+PiArCXJldHVybiAw
Ow0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IGl0NjYyNV93YWl0X2Zvcl9zdGF0dXMoc3Ry
dWN0IGl0NjYyNSAqaXQ2NjI1LCB1OCByZWcsIHU4IHZhbCwNCj4+ICsJCQkJICBpbnQgdGltZW91
dF9tcykNCj4+ICt7DQo+PiArCXN0cnVjdCBkZXZpY2UgKmRldiA9IGl0NjYyNS0+ZGV2Ow0KPj4g
KwlpbnQgc3RhdHVzOw0KPj4gKwlpbnQgcnZhbDsNCj4+ICsJaW50IHNsZWVwX21zID0gMTA7DQo+
PiArCWludCB0aW1lb3V0X3JvdW5kX21zID0gRElWX1JPVU5EX1VQKHRpbWVvdXRfbXMsIHNsZWVw
X21zKSAqIHNsZWVwX21zOw0KPj4gKw0KPj4gKwlzdGF0dXMgPSByZWFkX3BvbGxfdGltZW91dChp
dDY2MjVfcmVhZF9ieXRlLCBydmFsLCBydmFsID09IHZhbCwNCj4+ICsJCQkJICAgc2xlZXBfbXMg
KiAxMDAwLA0KPj4gKwkJCQkgICB0aW1lb3V0X3JvdW5kX21zICogMTAwMCwNCj4+ICsJCQkJICAg
ZmFsc2UsIGl0NjYyNSwgcmVnKTsNCj4+ICsNCj4+ICsJZGV2X2luZm8oZGV2LCAiJXMgc3RhdHVz
ID0gJWQgJWQiLCBfX2Z1bmNfXywgc3RhdHVzLCAoaW50KXJ2YWwpOw0KPj4gKwlpZiAoc3RhdHVz
IDwgMCkgew0KPj4gKwkJZGV2X2VycihkZXYsICIlcyBlcnIgc3RhdHVzID0gJWQiLCBfX2Z1bmNf
Xywgc3RhdHVzKTsNCj4+ICsJCXJldHVybiAtRVRJTUVET1VUOw0KPj4gKwl9DQo+PiArDQo+PiAr
CXJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCBpdDY2MjVfd3JpdGVfY29t
bWFuZChzdHJ1Y3QgaXQ2NjI1ICppdDY2MjUsIHU4ICpjbWRzLCBpbnQgY21kX2xlbikNCj4+ICt7
DQo+PiArCWl0NjYyNV93cml0ZV9ieXRlcyhpdDY2MjUsIFJFR19DTURfU0VULCBjbWRzLCBjbWRf
bGVuKTsNCj4+ICsJaXQ2NjI1X3dyaXRlX2J5dGUoaXQ2NjI1LCBSRUdfSE9TVF9DVFJMX0lOVCwg
Ql9DTURfU0VUKTsNCj4+ICsJaXQ2NjI1X3dhaXRfZm9yX3N0YXR1cyhpdDY2MjUsIFJFR19IT1NU
X0NUUkxfSU5ULCAweDAwLCAyNSk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgaXQ2NjI1
X3VwZGF0ZV9jb25maWcoc3RydWN0IGl0NjYyNSAqaXQ2NjI1KQ0KPj4gK3sNCj4+ICsJaW50IGVy
cjsNCj4+ICsNCj4+ICsJZXJyID0gaXQ2NjI1X3NldF9iaXRzKGl0NjYyNSwgUkVHX0hPU1RfQ1RS
TF9JTlQsDQo+PiArCQkJICAgICAgQl9DT05GSUdfVVBEQVRFLCBCX0NPTkZJR19VUERBVEUpOw0K
Pj4gKwlpZiAoZXJyIDwgMCkNCj4+ICsJCXJldHVybiBlcnI7DQo+PiArDQo+PiArCXJldHVybiBp
dDY2MjVfd2FpdF9mb3Jfc3RhdHVzKGl0NjYyNSwgUkVHX0hPU1RfQ1RSTF9JTlQsIDB4MDAsIDI1
KTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBpdDY2MjVfc2V0X2Jhbmsoc3RydWN0IGl0
NjYyNSAqaXQ2NjI1LCB1OCBiYW5rKQ0KPj4gK3sNCj4+ICsJaW50IGVycjsNCj4+ICsNCj4+ICsJ
ZXJyID0gaXQ2NjI1X3dyaXRlX2J5dGUoaXQ2NjI1LCBSRUdfSU5GT19CQU5LX1NFTCwgYmFuayk7
DQo+PiArCWlmIChlcnIgPCAwKQ0KPj4gKwkJcmV0dXJuIGVycjsNCj4+ICsNCj4+ICsJZXJyID0g
aXQ2NjI1X3dyaXRlX2J5dGUoaXQ2NjI1LCBSRUdfSE9TVF9DVFJMX0lOVCwgQl9JRl9CQU5LKTsN
Cj4+ICsJaWYgKGVyciA8IDApDQo+PiArCQlyZXR1cm4gZXJyOw0KPj4gKw0KPj4gKwlyZXR1cm4g
aXQ2NjI1X3dhaXRfZm9yX3N0YXR1cyhpdDY2MjUsIFJFR19IT1NUX0NUUkxfSU5ULCAweDAwLCAy
NSk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBpc19oZG1pKHN0cnVjdCBp
dDY2MjUgKml0NjYyNSkNCj4+ICt7DQo+PiArCWludCB2YWw7DQo+PiArDQo+PiArCXZhbCA9IGl0
NjYyNV9yZWFkX2J5dGUoaXQ2NjI1LCBSRUdfUlhfU1RBVFVTKTsNCj4+ICsJcmV0dXJuICh2YWwg
PCAwKSA/IGZhbHNlIDogKHZhbCAmIEJfUlhfSERNSSk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRp
YyBpbmxpbmUgYm9vbCBoZG1pXzV2X3Bvd2VyX3ByZXNlbnQoc3RydWN0IGl0NjYyNSAqaXQ2NjI1
KQ0KPj4gK3sNCj4+ICsJaW50IHZhbDsNCj4+ICsNCj4+ICsJdmFsID0gaXQ2NjI1X3JlYWRfYnl0
ZShpdDY2MjUsIFJFR19SWF9TVEFUVVMpOw0KPj4gKwlyZXR1cm4gKHZhbCA8IDApID8gZmFsc2Ug
OiAodmFsICYgQl9SWF81Vik7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBu
b19zaWduYWwoc3RydWN0IGl0NjYyNSAqaXQ2NjI1KQ0KPj4gK3sNCj4+ICsJaW50IHZhbDsNCj4+
ICsNCj4+ICsJdmFsID0gaXQ2NjI1X3JlYWRfYnl0ZShpdDY2MjUsIFJFR19SWF9TVEFUVVMpOw0K
Pj4gKwlyZXR1cm4gKHZhbCA8IDApID8gdHJ1ZSA6ICEodmFsICYgQl9SWF9TVEFCTEUpOw0KPj4g
K30NCj4+ICsNCj4+ICtzdGF0aWMgaW5saW5lIGJvb2wgYXVkaW9fcHJlc2VudChzdHJ1Y3QgaXQ2
NjI1ICppdDY2MjUpDQo+PiArew0KPj4gKwlpbnQgdmFsOw0KPj4gKw0KPj4gKwl2YWwgPSBpdDY2
MjVfcmVhZF9ieXRlKGl0NjYyNSwgUkVHX1JYX1NUQVRVUyk7DQo+PiArCXJldHVybiAodmFsIDwg
MCkgPyBmYWxzZSA6ICh2YWwgJiBCX1JYX0FVRF9PTik7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRp
YyBpbnQgZ2V0X2F1ZGlvX3NhbXBsaW5nX3JhdGUoc3RydWN0IGl0NjYyNSAqaXQ2NjI1KQ0KPj4g
K3sNCj4+ICsJdTggZnNfaWQ7DQo+PiArCWludCBpLCBmcmVxID0gMDsNCj4+ICsJY29uc3Qgc3Ry
dWN0IGZzX2lkX21hcCB7DQo+PiArCQl1OCBmc19pZDsNCj4+ICsJCXUxNiBmcmVxOw0KPj4gKwl9
IHNfZnNpZF9tYXBbXSA9IHsNCj4+ICsJCXsgQVVEMzJLLCAzMiB9LA0KPj4gKwkJeyBBVUQ0NEss
IDQ0IH0sDQo+PiArCQl7IEFVRDQ4SywgNDggfSwNCj4+ICsJCXsgQVVENjRLLCA2NCB9LA0KPj4g
KwkJeyBBVUQ4OEssIDg4IH0sDQo+PiArCQl7IEFVRDk2SywgOTYgfSwNCj4+ICsNCj4+ICsJCXsg
QVVEMTI4SywgMTI4IH0sDQo+PiArCQl7IEFVRDE3NkssIDE3NiB9LA0KPj4gKwkJeyBBVUQxOTJL
LCAxOTIgfSwNCj4+ICsJCXsgQVVEMjU2SywgMjU2IH0sDQo+PiArCQl7IEFVRDM1MkssIDM1MiB9
LA0KPj4gKwkJeyBBVUQzODRLLCAzODQgfSwNCj4+ICsNCj4+ICsJCXsgQVVENTEySywgNTEyIH0s
DQo+PiArCQl7IEFVRDcwNUssIDcwNSB9LA0KPj4gKwkJeyBBVUQ3NjhLLCA3NjggfSwNCj4+ICsJ
CXsgQVVEMTAyNEssIDEwMjQgfSwNCj4+ICsJCXsgQVVEMTQxMUssIDE0MTEgfSwNCj4+ICsJCXsg
QVVEMTUzNkssIDE1MzYgfSwNCj4+ICsJfTsNCj4+ICsNCj4+ICsJaWYgKG5vX3NpZ25hbChpdDY2
MjUpIHx8ICFhdWRpb19wcmVzZW50KGl0NjYyNSkpDQo+PiArCQlyZXR1cm4gMDsNCj4+ICsNCj4+
ICsJZ3VhcmQobXV0ZXgpKCZpdDY2MjUtPml0NjYyNV9sb2NrKTsNCj4+ICsNCj4+ICsJZnNfaWQg
PSBpdDY2MjVfcmVhZF9ieXRlKGl0NjYyNSwgUkVHX0hETUlfQVVESU9fSU5GTzEpOw0KPj4gKw0K
Pj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShzX2ZzaWRfbWFwKTsgaSsrKSB7DQo+PiAr
CQlpZiAoc19mc2lkX21hcFtpXS5mc19pZCA9PSBmc19pZCkgew0KPj4gKwkJCWZyZXEgPSBzX2Zz
aWRfbWFwW2ldLmZyZXEgKiAxMDAwOw0KPj4gKwkJCWJyZWFrOw0KPj4gKwkJfQ0KPj4gKwl9DQo+
PiArDQo+PiArCXJldHVybiBmcmVxOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgdTY0IGl0NjYy
NV9nZXRfcGNsayhzdHJ1Y3QgaXQ2NjI1ICppdDY2MjUpDQo+PiArew0KPj4gKwl1MzIgcGNsazsN
Cj4+ICsJdTggY2tbNF07DQo+PiArCWludCByZXQ7DQo+PiArDQo+PiArCXJldCA9IGl0NjYyNV9y
ZWFkX2J5dGVzKGl0NjYyNSwgUkVHX1ZJRF9QQ0xLLCBjaywgNCk7DQo+PiArCWlmIChyZXQgPCAw
KSB7DQo+PiArCQlkZXZfZXJyKGl0NjYyNS0+ZGV2LCAiZmFpbGVkIHRvIHJlYWQgcGl4ZWwgY2xv
Y2siKTsNCj4+ICsJCXJldHVybiAwOw0KPj4gKwl9DQo+PiArDQo+PiArCXBjbGsgPSBja1swXTsN
Cj4+ICsJcGNsayA8PD0gODsNCj4+ICsJcGNsayB8PSBja1sxXTsNCj4+ICsJcGNsayA8PD0gODsN
Cj4+ICsJcGNsayB8PSBja1syXTsNCj4+ICsJcGNsayA8PD0gODsNCj4+ICsJcGNsayB8PSBja1sz
XTsNCj4+ICsNCj4+ICsJdjRsMl9kYmcoMSwgZGVidWcsICZpdDY2MjUtPnNkLCAiJXM6IHBjbGs9
JXUgKCUwOHgpIiwNCj4+ICsJCSBfX2Z1bmNfXywgcGNsaywgcGNsayk7DQo+PiArDQo+PiArCXJl
dHVybiAodTY0KXBjbGsgKiAxMDAwOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IGl0NjYy
NV9yZWFkX2VkaWQoc3RydWN0IGl0NjYyNSAqaXQ2NjI1LCB1OCAqZWRpZCwgaW50IHN0YXJ0X2Js
b2NrLA0KPj4gKwkJCSAgICBpbnQgbnVtX2Jsb2NrcykNCj4+ICt7DQo+PiArCWludCBpLCBiYW5r
X2N0cmwsIGVyciA9IDA7DQo+PiArCXN0cnVjdCBkZXZpY2UgKmRldiA9IGl0NjYyNS0+ZGV2Ow0K
Pj4gKw0KPj4gKwlpZiAoIWVkaWQpIHsNCj4+ICsJCWRldl9lcnIoZGV2LCAiZWRpZCBidWZmZXIg
aXMgTlVMTCIpOw0KPj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+PiArCX0NCj4+ICsNCj4+ICsJaWYg
KHN0YXJ0X2Jsb2NrIDwgMCB8fCBudW1fYmxvY2tzIDw9IDAgfHwNCj4+ICsJICAgIHN0YXJ0X2Js
b2NrID4gRURJRF9OVU1fQkxPQ0tTX01BWCB8fA0KPj4gKwkgICAgbnVtX2Jsb2NrcyA+IEVESURf
TlVNX0JMT0NLU19NQVggfHwNCj4+ICsJICAgIHN0YXJ0X2Jsb2NrICsgbnVtX2Jsb2NrcyA+IEVE
SURfTlVNX0JMT0NLU19NQVgpIHsNCj4+ICsJCWRldl9lcnIoZGV2LA0KPj4gKwkJCSJpbnZhbGlk
IGJsb2NrIHJhbmdlOiBzdGFydF9ibG9jaz0lZCwgbnVtX2Jsb2Nrcz0lZCIsDQo+PiArCQkJc3Rh
cnRfYmxvY2ssIG51bV9ibG9ja3MpOw0KPj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+PiArCX0NCj4+
ICsNCj4+ICsJZ3VhcmQobXV0ZXgpKCZpdDY2MjUtPml0NjYyNV9sb2NrKTsNCj4+ICsJZm9yIChp
ID0gMDsgaSA8IG51bV9ibG9ja3M7IGkrKykgew0KPj4gKwkJYmFua19jdHJsID0gQ1RMX0JBTktf
RURJRF9SRUFEICsgc3RhcnRfYmxvY2sgKyBpOw0KPj4gKwkJZXJyID0gaXQ2NjI1X3NldF9iYW5r
KGl0NjYyNSwgYmFua19jdHJsKTsNCj4+ICsJCWlmIChlcnIgPCAwKQ0KPj4gKwkJCWJyZWFrOw0K
Pj4gKw0KPj4gKwkJZXJyID0gaXQ2NjI1X3JlYWRfYnl0ZXMoaXQ2NjI1LCBSRUdfRURJRF9TVEFS
VCwNCj4+ICsJCQkJCWVkaWQgKyAoaSAqIDEyOCksIDEyOCk7DQo+PiArCQlpZiAoZXJyIDwgMCkN
Cj4+ICsJCQlicmVhazsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlpdDY2MjVfc2V0X2JhbmsoaXQ2NjI1
LCAwKTsNCj4+ICsNCj4+ICsJcmV0dXJuIGVyciA8IDAgPyBlcnIgOiBudW1fYmxvY2tzOw0KPj4g
K30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IGl0NjYyNV93cml0ZV9lZGlkKHN0cnVjdCBpdDY2MjUg
Kml0NjYyNSwgdTggKmVkaWQsIGludCBzdGFydF9ibG9jaywNCj4+ICsJCQkgICAgIGludCBudW1f
YmxvY2tzKQ0KPj4gK3sNCj4+ICsJaW50IGksIGJhbmtfY3RybCwgZXJyID0gMDsNCj4+ICsJc3Ry
dWN0IGRldmljZSAqZGV2ID0gaXQ2NjI1LT5kZXY7DQo+PiArDQo+PiArCWlmIChzdGFydF9ibG9j
ayA8IDAgfHwgbnVtX2Jsb2NrcyA8PSAwIHx8DQo+PiArCSAgICBzdGFydF9ibG9jayA+IEVESURf
TlVNX0JMT0NLU19NQVggfHwNCj4+ICsJICAgIG51bV9ibG9ja3MgPiBFRElEX05VTV9CTE9DS1Nf
TUFYIHx8DQo+PiArCSAgICBzdGFydF9ibG9jayArIG51bV9ibG9ja3MgPiBFRElEX05VTV9CTE9D
S1NfTUFYKSB7DQo+PiArCQlkZXZfZXJyKGRldiwNCj4+ICsJCQkiaW52YWxpZCBibG9jayByYW5n
ZTogc3RhcnRfYmxvY2s9JWQsIG51bV9ibG9ja3M9JWQiLA0KPj4gKwkJCXN0YXJ0X2Jsb2NrLCBu
dW1fYmxvY2tzKTsNCj4+ICsJCXJldHVybiAtRUlOVkFMOw0KPj4gKwl9DQo+PiArDQo+PiArCWd1
YXJkKG11dGV4KSgmaXQ2NjI1LT5pdDY2MjVfbG9jayk7DQo+PiArCWZvciAoaSA9IDA7IGkgPCBu
dW1fYmxvY2tzOyBpKyspIHsNCj4+ICsJCWJhbmtfY3RybCA9IENUTF9CQU5LX0VESURfV1JJVEUg
KyBzdGFydF9ibG9jayArIGk7DQo+PiArCQllcnIgPSBpdDY2MjVfc2V0X2JhbmsoaXQ2NjI1LCBi
YW5rX2N0cmwpOw0KPj4gKwkJaWYgKGVyciA8IDApDQo+PiArCQkJYnJlYWs7DQo+PiArDQo+PiAr
CQllcnIgPSBpdDY2MjVfd3JpdGVfYnl0ZXMoaXQ2NjI1LCBSRUdfRURJRF9TVEFSVCwNCj4+ICsJ
CQkJCSBlZGlkICsgKGkgKiAxMjgpLCAxMjgpOw0KPj4gKwkJaWYgKGVyciA8IDApDQo+PiArCQkJ
YnJlYWs7DQo+PiArDQo+PiArCQllcnIgPSBpdDY2MjVfdXBkYXRlX2NvbmZpZyhpdDY2MjUpOw0K
Pj4gKwkJaWYgKGVyciA8IDApDQo+PiArCQkJYnJlYWs7DQo+PiArCX0NCj4+ICsNCj4+ICsJaXQ2
NjI1X3NldF9iYW5rKGl0NjYyNSwgMCk7DQo+PiArDQo+PiArCXJldHVybiBlcnIgPCAwID8gZXJy
IDogbnVtX2Jsb2NrczsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHZvaWQgaXQ2NjI1X2VuYWJs
ZV9hdXRvX2hwZChzdHJ1Y3QgaXQ2NjI1ICppdDY2MjUpDQo+PiArew0KPj4gKwlkZXZfZGJnKGl0
NjYyNS0+ZGV2LCAiJXM6IGF1dG8gSFBEIiwgX19mdW5jX18pOw0KPj4gKwlndWFyZChtdXRleCko
Jml0NjYyNS0+aXQ2NjI1X2xvY2spOw0KPj4gKwlpdDY2MjVfc2V0X2JpdHMoaXQ2NjI1LCBSRUdf
UlhfQ0ZHLCAweDAzLCAweDAwKTsNCj4+ICsJaXQ2NjI1X3VwZGF0ZV9jb25maWcoaXQ2NjI1KTsN
Cj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHZvaWQgaXQ2NjI1X2Rpc2FibGVfaHBkKHN0cnVjdCBp
dDY2MjUgKml0NjYyNSkNCj4+ICt7DQo+PiArCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmaXQ2
NjI1LT5ocGRfZGVsYXllZF93b3JrKTsNCj4+ICsNCj4+ICsJZ3VhcmQobXV0ZXgpKCZpdDY2MjUt
Pml0NjYyNV9sb2NrKTsNCj4+ICsJaXQ2NjI1X3NldF9iaXRzKGl0NjYyNSwgUkVHX1JYX0NGRywg
MHgwMywgMHgwMSk7DQo+PiArCWl0NjYyNV91cGRhdGVfY29uZmlnKGl0NjYyNSk7DQo+PiArfQ0K
Pj4gKw0KPj4gK3N0YXRpYyB2b2lkIGl0NjYyNV9lbmFibGVfaHBkKHN0cnVjdCBpdDY2MjUgKml0
NjYyNSkNCj4+ICt7DQo+PiArCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmaXQ2NjI1LT5ocGRfZGVs
YXllZF93b3JrLA0KPj4gKwkJCSAgICAgIG1zZWNzX3RvX2ppZmZpZXMoMTAwKSk7DQo+DQo+SSBy
ZWNvbW1lbmQgdG8gdXNlICdIWiAvIDcnIGhlcmUuIE9mdGVuIHZpZGVvIHNvdXJjZXMgYXJlIG5v
dCB2ZXJ5IGFjY3VyYXRlDQo+aW4gbWVhc3VyaW5nIGhvdyBsb25nIHRoZSBIUEQgaXMgbG93LiAn
SFogLyA3JyBoYXMgcHJvdmVuIHRvIGJlIGEgcmVsaWFibGUgdmFsdWUuDQo+DQo+PiArfQ0KPj4g
Kw0KPj4gK3N0YXRpYyB2b2lkIGl0NjYyNV9ocGRfZGVsYXllZF93b3JrKHN0cnVjdCB3b3JrX3N0
cnVjdCAqd29yaykNCj4+ICt7DQo+PiArCXN0cnVjdCBpdDY2MjUgKml0NjYyNSA9IGNvbnRhaW5l
cl9vZih3b3JrLA0KPj4gKwkJCXN0cnVjdCBpdDY2MjUsIGhwZF9kZWxheWVkX3dvcmsud29yayk7
DQo+PiArCWludCB2YWwgPSAwOw0KPj4gKw0KPj4gKwlndWFyZChtdXRleCkoJml0NjYyNS0+aXQ2
NjI1X2xvY2spOw0KPj4gKwlpdDY2MjVfc2V0X2JpdHMoaXQ2NjI1LCBSRUdfUlhfQ0ZHLCAweDAz
LCB2YWwpOw0KPj4gKwlpdDY2MjVfdXBkYXRlX2NvbmZpZyhpdDY2MjUpOw0KPj4gK30NCj4+ICsN
Cj4+ICtzdGF0aWMgaW50IGl0NjYyNV9nZXRfZGV0ZWN0ZWRfdGltaW5ncyhzdHJ1Y3QgaXQ2NjI1
ICppdDY2MjUsDQo+PiArCQkJCSAgICAgICBzdHJ1Y3QgdjRsMl9kdl90aW1pbmdzICp0aW1pbmdz
KQ0KPj4gK3sNCj4+ICsJc3RydWN0IHY0bDJfYnRfdGltaW5ncyAqYnQgPSAmdGltaW5ncy0+YnQ7
DQo+PiArCWludCB2YWw7DQo+PiArCXVuc2lnbmVkIGludCB3aWR0aCwgaGVpZ2h0Ow0KPj4gKwl1
OCBidWZmZXJbNF07DQo+PiArCXU4IGJ1ZmZlcjJbMTJdOw0KPj4gKw0KPj4gKwlpZiAobm9fc2ln
bmFsKGl0NjYyNSkpIHsNCj4+ICsJCWRldl9lcnIoaXQ2NjI1LT5kZXYsICJubyBzaWduYWwgZGV0
ZWN0ZWQiKTsNCj4+ICsJCXJldHVybiAtRU5PTElOSzsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlndWFy
ZChtdXRleCkoJml0NjYyNS0+aXQ2NjI1X2xvY2spOw0KPj4gKw0KPj4gKwltZW1zZXQodGltaW5n
cywgMCwgc2l6ZW9mKHN0cnVjdCB2NGwyX2R2X3RpbWluZ3MpKTsNCj4+ICsJdGltaW5ncy0+dHlw
ZSA9IFY0TDJfRFZfQlRfNjU2XzExMjA7DQo+PiArCXZhbCA9IGl0NjYyNV9yZWFkX2J5dGUoaXQ2
NjI1LCBSRUdfVklEX0lORk8pOw0KPj4gKwlpZiAodmFsIDwgMCkgew0KPj4gKwkJZGV2X2Vycihp
dDY2MjUtPmRldiwgImZhaWxlZCB0byByZWFkIHZpZGVvIGluZm8iKTsNCj4+ICsJCXJldHVybiAt
RUlPOw0KPj4gKwl9DQo+PiArDQo+PiArCWJ0LT5pbnRlcmxhY2VkID0gdmFsICYgQl9JTlRFUkxB
Q0UgPw0KPj4gKwkJCSBWNEwyX0RWX0lOVEVSTEFDRUQgOiBWNEwyX0RWX1BST0dSRVNTSVZFOw0K
Pj4gKw0KPj4gKwlpZiAoaXQ2NjI1X3JlYWRfYnl0ZXMoaXQ2NjI1LCBSRUdfSF9BQ1RJVkVfMSwg
YnVmZmVyLCA0KSA8IDApDQo+PiArCQlyZXR1cm4gLUVJTzsNCj4+ICsNCj4+ICsJd2lkdGggPSAo
KGJ1ZmZlclswXSAmIDB4ZmYpIDw8IDgpICsgYnVmZmVyWzFdOw0KPj4gKwloZWlnaHQgPSAoKGJ1
ZmZlclsyXSAmIDB4ZmYpIDw8IDgpICsgYnVmZmVyWzNdOw0KPj4gKw0KPj4gKwlidC0+d2lkdGgg
PSB3aWR0aDsNCj4+ICsJYnQtPmhlaWdodCA9IGhlaWdodDsNCj4+ICsNCj4+ICsJaWYgKGl0NjYy
NV9yZWFkX2J5dGVzKGl0NjYyNSwgUkVHX0hfRlBfMSwgYnVmZmVyMiwgMTIpIDwgMCkNCj4+ICsJ
CXJldHVybiAtRUlPOw0KPj4gKw0KPj4gKwlidC0+aGZyb250cG9yY2ggPSAoKGJ1ZmZlcjJbMF0g
JiAweGZmKSA8PCA4KSArIGJ1ZmZlcjJbMV07DQo+PiArCWJ0LT5oc3luYyA9ICgoYnVmZmVyMlsy
XSAmIDB4ZmYpIDw8IDgpICsgYnVmZmVyMlszXTsNCj4+ICsJYnQtPmhiYWNrcG9yY2ggPSAoKGJ1
ZmZlcjJbNF0gJiAweGZmKSA8PCA4KSArIGJ1ZmZlcjJbNV07DQo+PiArCWJ0LT52ZnJvbnRwb3Jj
aCA9ICgoYnVmZmVyMls2XSAmIDB4ZmYpIDw8IDgpICsgYnVmZmVyMls3XTsNCj4+ICsJYnQtPnZz
eW5jID0gKChidWZmZXIyWzhdICYgMHhmZikgPDwgOCkgKyBidWZmZXIyWzldOw0KPj4gKwlidC0+
dmJhY2twb3JjaCA9ICgoYnVmZmVyMlsxMF0gJiAweGZmKSA8PCA4KSArIGJ1ZmZlcjJbMTFdOw0K
Pj4gKw0KPj4gKwlidC0+cGl4ZWxjbG9jayA9IGl0NjYyNV9nZXRfcGNsayhpdDY2MjUpOw0KPj4g
KwlpZiAoYnQtPmludGVybGFjZWQgPT0gVjRMMl9EVl9JTlRFUkxBQ0VEKSB7DQo+PiArCQlidC0+
aGVpZ2h0ICo9IDI7DQo+PiArCQlidC0+aWxfdnN5bmMgPSBidC0+dnN5bmMgKyAxOw0KPj4gKwl9
DQo+PiArDQo+PiArCXJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCBpdDY2
MjVfc2hvd19hdmlfaW5mb2ZyYW1lKHN0cnVjdCBpdDY2MjUgKml0NjYyNSkNCj4+ICt7DQo+PiAr
CXN0cnVjdCBkZXZpY2UgKmRldiA9IGl0NjYyNS0+ZGV2Ow0KPj4gKwl1bmlvbiBoZG1pX2luZm9m
cmFtZSBmcmFtZTsNCj4+ICsJdTggYnVmZmVyW0hETUlfSU5GT0ZSQU1FX1NJWkUoQVZJKV07DQo+
PiArCXU4IHZlciwgbGVuOw0KPj4gKwlpbnQgcmV0Ow0KPj4gKw0KPj4gKwlpZiAoIWlzX2hkbWko
aXQ2NjI1KSkgew0KPj4gKwkJZGV2X2VycihkZXYsICJub3QgSERNSSBzaWduYWwsIHNraXAgQVZJ
IGluZm9mcmFtZSBsb2ciKTsNCj4+ICsJCXJldHVybjsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlyZXQg
PSBpdDY2MjVfcmVhZF9ieXRlcyhpdDY2MjUsIFJFR19BVklfREFUQSwgYnVmZmVyICsgMSwNCj4+
ICsJCQkJSERNSV9JTkZPRlJBTUVfU0laRShBVkkpIC0gMSk7DQo+PiArCWlmIChyZXQgPCAwKSB7
DQo+PiArCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byByZWFkIEFWSSBpbmZvZnJhbWUgZGF0YSIp
Ow0KPj4gKwkJcmV0dXJuOw0KPj4gKwl9DQo+PiArDQo+PiArCWxlbiA9IGJ1ZmZlclsxXTsNCj4+
ICsJdmVyID0gYnVmZmVyWzJdOw0KPj4gKw0KPj4gKwlidWZmZXJbMF0gPSBIRE1JX0lORk9GUkFN
RV9UWVBFX0FWSTsNCj4+ICsJYnVmZmVyWzFdID0gdmVyOw0KPj4gKwlidWZmZXJbMl0gPSBsZW47
DQo+PiArDQo+PiArCXJldCA9IGhkbWlfaW5mb2ZyYW1lX3VucGFjaygmZnJhbWUsIGJ1ZmZlciwg
c2l6ZW9mKGJ1ZmZlcikpOw0KPj4gKwlpZiAocmV0IDwgMCkgew0KPj4gKwkJZGV2X2VycihkZXYs
ICJ1bnBhY2sgb2YgQVZJIGluZm9mcmFtZSBmYWlsZWQiKTsNCj4+ICsJCXJldHVybjsNCj4+ICsJ
fQ0KPj4gKw0KPj4gKwloZG1pX2luZm9mcmFtZV9sb2coS0VSTl9JTkZPLCBkZXYsICZmcmFtZSk7
DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgaXQ2NjI1X3NfY3RybF9kZXRlY3RfaGRtaV81
dihzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkKQ0KPj4gK3sNCj4+ICsJc3RydWN0IGl0NjYyNSAqaXQ2
NjI1ID0gc2RfdG9fNjYyNShzZCk7DQo+PiArDQo+PiArCXJldHVybiB2NGwyX2N0cmxfc19jdHJs
KGl0NjYyNS0+Y3RybF81dl9kZXRlY3QsDQo+PiArCQkJCWhkbWlfNXZfcG93ZXJfcHJlc2VudChp
dDY2MjUpKTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBpdDY2MjVfc19jdHJsX2F1ZGlv
X3NhbXBsaW5nX3JhdGUoc3RydWN0IHY0bDJfc3ViZGV2ICpzZCkNCj4+ICt7DQo+PiArCXN0cnVj
dCBpdDY2MjUgKml0NjYyNSA9IHNkX3RvXzY2MjUoc2QpOw0KPj4gKw0KPj4gKwlyZXR1cm4gdjRs
Ml9jdHJsX3NfY3RybChpdDY2MjUtPmN0cmxfYXVkaW9fc2FtcGxpbmdfcmF0ZSwNCj4+ICsJCQkJ
Z2V0X2F1ZGlvX3NhbXBsaW5nX3JhdGUoaXQ2NjI1KSk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRp
YyBpbnQgaXQ2NjI1X3NfY3RybF9hdWRpb19wcmVzZW50KHN0cnVjdCB2NGwyX3N1YmRldiAqc2Qp
DQo+PiArew0KPj4gKwlzdHJ1Y3QgaXQ2NjI1ICppdDY2MjUgPSBzZF90b182NjI1KHNkKTsNCj4+
ICsNCj4+ICsJcmV0dXJuIHY0bDJfY3RybF9zX2N0cmwoaXQ2NjI1LT5jdHJsX2F1ZGlvX3ByZXNl
bnQsDQo+PiArCQkJCWF1ZGlvX3ByZXNlbnQoaXQ2NjI1KSk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0
YXRpYyBpbnQgaXQ2NjI1X3Y0bDJfc2RfY3RybF91cGRhdGUoc3RydWN0IHY0bDJfc3ViZGV2ICpz
ZCkNCj4+ICt7DQo+PiArCWludCByZXQgPSAwOw0KPj4gKw0KPj4gKwlyZXQgfD0gaXQ2NjI1X3Nf
Y3RybF9kZXRlY3RfaGRtaV81dihzZCk7DQo+PiArCXJldCB8PSBpdDY2MjVfc19jdHJsX2F1ZGlv
X3NhbXBsaW5nX3JhdGUoc2QpOw0KPj4gKwlyZXQgfD0gaXQ2NjI1X3NfY3RybF9hdWRpb19wcmVz
ZW50KHNkKTsNCj4+ICsNCj4+ICsJcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2
b2lkIGl0NjYyNV9lbmFibGVfc3RyZWFtX2xvY2tlZChzdHJ1Y3QgaXQ2NjI1ICppdDY2MjUsIGJv
b2wgZW5hYmxlKQ0KPj4gK3sNCj4+ICsJc3RydWN0IHY0bDJfc3ViZGV2ICpzZCA9ICZpdDY2MjUt
PnNkOw0KPj4gKwlpbnQgdmFsOw0KPj4gKw0KPj4gKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpdDY2
MjUtPml0NjYyNV9sb2NrKTsNCj4+ICsNCj4+ICsJdjRsMl9kYmcoMywgZGVidWcsIHNkLCAiJXM6
ICVzYWJsZSIsDQo+PiArCQkgX19mdW5jX18sIGVuYWJsZSA/ICJlbiIgOiAiZGlzIik7DQo+PiAr
DQo+PiArCXZhbCA9IGVuYWJsZSA/IEJfTUlQSV9PVVRQVVQgOiAwOw0KPj4gKwlpdDY2MjVfc2V0
X2JpdHMoaXQ2NjI1LCBSRUdfTUlQSV9DT05UUk9MLCBCX01JUElfT1VUUFVULCB2YWwpOw0KPj4g
KwlpdDY2MjVfdXBkYXRlX2NvbmZpZyhpdDY2MjUpOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMg
dm9pZCBpdDY2MjVfZW5hYmxlX3N0cmVhbShzdHJ1Y3QgaXQ2NjI1ICppdDY2MjUsIGJvb2wgZW5h
YmxlKQ0KPj4gK3sNCj4+ICsJZ3VhcmQobXV0ZXgpKCZpdDY2MjUtPml0NjYyNV9sb2NrKTsNCj4+
ICsJaXQ2NjI1X2VuYWJsZV9zdHJlYW1fbG9ja2VkKGl0NjYyNSwgZW5hYmxlKTsNCj4+ICt9DQo+
PiArDQo+PiArc3RhdGljIHZvaWQgaXQ2NjI1X3NldF9taXBpX2NvbmZpZ19sb2NrZWQoc3RydWN0
IGl0NjYyNSAqaXQ2NjI1LCB1MzIgY2ZnX3ZhbCkNCj4+ICt7DQo+PiArCXU4IG1pcGlfZGF0YV90
eXBlOw0KPj4gKw0KPj4gKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpdDY2MjUtPml0NjYyNV9sb2Nr
KTsNCj4+ICsNCj4+ICsJZGV2X2RiZyhpdDY2MjUtPmRldiwgIm1pcGlfZGF0YV90eXBlID0gMHgl
eCIsIGNmZ192YWwpOw0KPj4gKw0KPj4gKwltaXBpX2RhdGFfdHlwZSA9IGNmZ192YWwgJiAweEZG
Ow0KPj4gKwlpdDY2MjVfd3JpdGVfYnl0ZShpdDY2MjUsIFJFR19NSVBJX0RBVEFfVFlQRSwgbWlw
aV9kYXRhX3R5cGUpOw0KPj4gKwlpdDY2MjVfdXBkYXRlX2NvbmZpZyhpdDY2MjUpOw0KPj4gK30N
Cj4+ICsNCj4+ICtzdGF0aWMgdm9pZCBpdDY2MjVfc2V0X21pcGlfY29uZmlnKHN0cnVjdCBpdDY2
MjUgKml0NjYyNSwgdTMyIGNmZ192YWwpDQo+PiArew0KPj4gKwlndWFyZChtdXRleCkoJml0NjYy
NS0+aXQ2NjI1X2xvY2spOw0KPj4gKwlpdDY2MjVfc2V0X21pcGlfY29uZmlnX2xvY2tlZChpdDY2
MjUsIGNmZ192YWwpOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGlu
dCBmcHNfZnJvbV9idF90aW1pbmdzKGNvbnN0IHN0cnVjdCB2NGwyX2J0X3RpbWluZ3MgKnQpDQo+
PiArew0KPj4gKwlpZiAoIVY0TDJfRFZfQlRfRlJBTUVfSEVJR0hUKHQpIHx8ICFWNEwyX0RWX0JU
X0ZSQU1FX1dJRFRIKHQpKQ0KPj4gKwkJcmV0dXJuIDA7DQo+PiArDQo+PiArCXJldHVybiBESVZf
Uk9VTkRfQ0xPU0VTVCgodW5zaWduZWQgaW50KXQtPnBpeGVsY2xvY2ssDQo+PiArCQkJCSBWNEwy
X0RWX0JUX0ZSQU1FX0hFSUdIVCh0KSAqDQo+PiArCQkJCSBWNEwyX0RWX0JUX0ZSQU1FX1dJRFRI
KHQpKTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHZvaWQgaXQ2NjI1X2luaXRpYWxfc2V0dXAo
c3RydWN0IGl0NjYyNSAqaXQ2NjI1KQ0KPj4gK3sNCj4+ICsJaW50IHZhbCA9IDA7DQo+PiArDQo+
PiArCWd1YXJkKG11dGV4KSgmaXQ2NjI1LT5pdDY2MjVfbG9jayk7DQo+PiArDQo+PiArCS8qDQo+
PiArCSAqIFJFR19NSVBJX0NGR1swOjJdIGxhbmUgY291bnQgZmllbGQ6IDEgbGFuZSAtPiAwLCAy
IGxhbmVzIC0+IDEsDQo+PiArCSAqIDMgbGFuZXMgKEMtUEhZIG9ubHkpIC0+IDMsIDQgbGFuZXMg
KEQtUEhZIG9ubHkpIC0+IDMuDQo+PiArCSAqLw0KPj4gKwlzd2l0Y2ggKGl0NjYyNS0+Y3NpX2xh
bmVzKSB7DQo+PiArCWNhc2UgMToNCj4+ICsJCXZhbCA9IEZJRUxEX1BSRVAoTV9NSVBJX0xBTkUs
IDApOw0KPj4gKwkJYnJlYWs7DQo+PiArCWNhc2UgMjoNCj4+ICsJCXZhbCA9IEZJRUxEX1BSRVAo
TV9NSVBJX0xBTkUsIDEpOw0KPj4gKwkJYnJlYWs7DQo+PiArCWRlZmF1bHQ6DQo+PiArCQl2YWwg
PSBGSUVMRF9QUkVQKE1fTUlQSV9MQU5FLCAzKTsNCj4+ICsJCWJyZWFrOw0KPj4gKwl9DQo+PiAr
DQo+PiArCWlmIChpdDY2MjUtPmJ1c190eXBlID09IFY0TDJfTUJVU19DU0kyX0RQSFkpDQo+PiAr
CQl2YWwgfD0gRklFTERfUFJFUChCX01JUElfRFBIWSwgMSk7DQo+PiArDQo+PiArCWlmIChpdDY2
MjUtPnBvcnRfbnVtID09IDIpDQo+PiArCQl2YWwgfD0gRklFTERfUFJFUChCX01JUElfU1BMSVQs
IDEpOw0KPj4gKw0KPj4gKwlpdDY2MjVfd3JpdGVfYnl0ZShpdDY2MjUsIFJFR19NSVBJX0NGRywg
dmFsKTsNCj4+ICsJaXQ2NjI1X3dyaXRlX2J5dGUoaXQ2NjI1LCBSRUdfTUlQSV9EQVRBX1RZUEUs
IGl0NjYyNS0+Y3NpX2Zvcm1hdCk7DQo+PiArCWl0NjYyNV93cml0ZV9ieXRlKGl0NjYyNSwgUkVH
X01JUElfQ09OVFJPTCwgMHgwMCk7DQo+PiArCWl0NjYyNV93cml0ZV9ieXRlKGl0NjYyNSwgUkVH
X1JYX0NGRywgMHgwMCk7DQo+PiArDQo+PiArCWl0NjYyNV9zZXRfYml0cyhpdDY2MjUsIFJFR19I
T1NUX0NUUkxfSU5ULCBCX0NPTkZJR19VUERBVEUsIEJfQ09ORklHX1VQREFURSk7DQo+PiArCWl0
NjYyNV93YWl0X2Zvcl9zdGF0dXMoaXQ2NjI1LCBSRUdfSE9TVF9DVFJMX0lOVCwgMHgwMCwgMjUp
Ow0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCBkdW1wX2NlY19tc2coc3RydWN0IGl0NjYy
NSAqaXQ2NjI1LCBzdHJ1Y3QgY2VjX21zZyAqbXNnLCBjaGFyICpzdHIpDQo+PiArew0KPj4gKwlp
bnQgaTsNCj4+ICsNCj4+ICsJZGV2X2RiZyhpdDY2MjUtPmRldiwgIiVzOiBmcm9tICVkIHRvICVk
IGxlbj0lZCIsIHN0ciwNCj4+ICsJCW1zZy0+bXNnWzBdID4+IDQsIG1zZy0+bXNnWzBdICYgMHgw
ZiwgbXNnLT5sZW4pOw0KPj4gKwlmb3IgKGkgPSAxOyBpIDwgbXNnLT5sZW47IGkrKykNCj4+ICsJ
CWRldl9kYmcoaXQ2NjI1LT5kZXYsICIgJTAyeCIsIG1zZy0+bXNnW2ldKTsNCj4+ICt9DQo+DQo+
VGhpcyBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5OiB0aGUgY2VjIGNvZGUgYWxyZWFkeSBoYXMgQ0VD
IGRlYnVnZ2luZyBpbiBwbGFjZS4NCj4NCj4+ICsNCj4+ICtzdGF0aWMgaW50IGl0NjYyNV9jZWNf
YWRhcF9lbmFibGUoc3RydWN0IGNlY19hZGFwdGVyICphZGFwLCBib29sIGVuYWJsZSkNCj4+ICt7
DQo+PiArCXN0cnVjdCBpdDY2MjUgKml0NjYyNSA9IGFkYXAtPnByaXY7DQo+PiArCXU4IGNtZHNb
Ml07DQo+PiArDQo+PiArCWNtZHNbMF0gPSBDTURfU0VUX0NFQ19FTkFCTEU7DQo+PiArCWNtZHNb
MV0gPSBlbmFibGUgPyAxIDogMDsNCj4+ICsJZ3VhcmQobXV0ZXgpKCZpdDY2MjUtPml0NjYyNV9s
b2NrKTsNCj4+ICsJaXQ2NjI1X3dyaXRlX2NvbW1hbmQoaXQ2NjI1LCBjbWRzLCBzaXplb2YoY21k
cykpOw0KPj4gKw0KPj4gKwlyZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBp
dDY2MjVfY2VjX2FkYXBfbG9nX2FkZHIoc3RydWN0IGNlY19hZGFwdGVyICphZGFwLCB1OCBsb2df
YWRkcikNCj4+ICt7DQo+PiArCXN0cnVjdCBpdDY2MjUgKml0NjYyNSA9IGFkYXAtPnByaXY7DQo+
PiArDQo+PiArCWRldl9kYmcoaXQ2NjI1LT5kZXYsICIlczogbGE9JWQiLCBfX2Z1bmNfXywgbG9n
X2FkZHIpOw0KPj4gKw0KPj4gKwlpZiAobG9nX2FkZHIgIT0gQ0VDX0xPR19BRERSX0lOVkFMSUQp
IHsNCj4+ICsJCXU4IGNtZHNbMl0gPSB7Q01EX1NFVF9DRUNfTEEsIGxvZ19hZGRyfTsNCj4+ICsN
Cj4+ICsJCWd1YXJkKG11dGV4KSgmaXQ2NjI1LT5pdDY2MjVfbG9jayk7DQo+PiArCQlpdDY2MjVf
d3JpdGVfY29tbWFuZChpdDY2MjUsIGNtZHMsIHNpemVvZihjbWRzKSk7DQo+DQo+SG93IGRvIHlv
dSBjbGVhciB0aGUgbG9naWNhbCBhZGRyZXNzPyBJZiBsb2dfYWRkciBpcyBjYWxsZWQgd2l0aCBD
RUNfTE9HX0FERFJfSU5WQUxJRCwNCj50aGVuIHRoYXQgc2hvdWxkIGNsZWFyIHRoZSBjdXJyZW50
IExBLg0KPg0KPkkgc3VzcGVjdCB0aGF0IGZvciB0aGlzIEhXIHRoZSBMQSBzaG91bGQgYmUgc2V0
IHRvIDB4ZiwgYnV0IEkgY2FuJ3QgYmUgY2VydGFpbi4NCj4NCj4+ICsJfQ0KPj4gKw0KPj4gKwly
ZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBpdDY2MjVfY2VjX2FkYXBfdHJh
bnNtaXQoc3RydWN0IGNlY19hZGFwdGVyICphZGFwLCB1OCBhdHRlbXB0cywNCj4+ICsJCQkJICAg
IHUzMiBzaWduYWxfZnJlZV90aW1lLCBzdHJ1Y3QgY2VjX21zZyAqbXNnKQ0KPj4gK3sNCj4+ICsJ
c3RydWN0IGl0NjYyNSAqaXQ2NjI1ID0gYWRhcC0+cHJpdjsNCj4+ICsNCj4+ICsJZHVtcF9jZWNf
bXNnKGl0NjYyNSwgbXNnLCAiQ0VDX1RYIik7DQo+PiArDQo+PiArCWd1YXJkKG11dGV4KSgmaXQ2
NjI1LT5pdDY2MjVfbG9jayk7DQo+PiArCWl0NjYyNV93cml0ZV9ieXRlcyhpdDY2MjUsIFJFR19D
RUNfVFhfREFUQSwgbXNnLT5tc2csIG1zZy0+bGVuKTsNCj4+ICsJaXQ2NjI1X3dyaXRlX2J5dGUo
aXQ2NjI1LCBSRUdfQ0VDX1RYX0RBVEFfTEVOLCBtc2ctPmxlbik7DQo+PiArCWl0NjYyNV9zZXRf
Yml0cyhpdDY2MjUsIFJFR19IT1NUX0NUUkxfSU5ULCBCX0NFQ19TRU5EX0RBVEEsIEJfQ0VDX1NF
TkRfREFUQSk7DQo+PiArCWl0NjYyNV93YWl0X2Zvcl9zdGF0dXMoaXQ2NjI1LCBSRUdfSE9TVF9D
VFJMX0lOVCwgMHgwMCwgMjUpOw0KPj4gKw0KPj4gKwlyZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+
PiArc3RhdGljIGNvbnN0IHN0cnVjdCBjZWNfYWRhcF9vcHMgaXQ2NjI1X2NlY19hZGFwX29wcyA9
IHsNCj4+ICsJLmFkYXBfZW5hYmxlID0gaXQ2NjI1X2NlY19hZGFwX2VuYWJsZSwNCj4+ICsJLmFk
YXBfbG9nX2FkZHIgPSBpdDY2MjVfY2VjX2FkYXBfbG9nX2FkZHIsDQo+PiArCS5hZGFwX3RyYW5z
bWl0ID0gaXQ2NjI1X2NlY19hZGFwX3RyYW5zbWl0LA0KPj4gK307DQo+PiArDQo+PiArc3RhdGlj
IHZvaWQgaXQ2NjI1X2NlY19oYW5kbGVyKHN0cnVjdCBpdDY2MjUgKml0NjYyNSwgdTggaW50c3Rh
dHVzKQ0KPj4gK3sNCj4+ICsJc3RydWN0IGNlY19tc2cgcnhtc2cgPSB7fTsNCj4+ICsJaW50IHZh
bCA9IDA7DQo+PiArDQo+PiArCWlmIChpbnRzdGF0dXMgJiBCX0NFQ19SWF9SRUNFSVZFRCkgew0K
Pj4gKwkJc2NvcGVkX2d1YXJkKG11dGV4LCAmaXQ2NjI1LT5pdDY2MjVfbG9jaykgew0KPj4gKwkJ
CXZhbCA9IGl0NjYyNV9yZWFkX2J5dGUoaXQ2NjI1LCBSRUdfQ0VDX1JYX0RBVEFfTEVOKTsNCj4+
ICsJCQlpZiAodmFsID4gMCAmJiB2YWwgPD0gMTYpDQo+DQo+VXNlIENFQ19NQVhfTVNHX1NJWkUg
aW5zdGVhZCBvZiBoYXJkY29kaW5nICcxNicuIFNhbWUgZWxzZXdoZXJlIGluIHRoaXMgZnVuY3Rp
b24uDQo+DQo+PiArCQkJCWl0NjYyNV9yZWFkX2J5dGVzKGl0NjYyNSwgUkVHX0NFQ19SWF9EQVRB
LCAmcnhtc2cubXNnWzBdLCB2YWwpOw0KPj4gKwkJCWl0NjYyNV93cml0ZV9ieXRlKGl0NjYyNSwg
UkVHX0NFQ19SWF9EQVRBX0xFTiwgMCk7DQo+PiArCQl9DQo+PiArDQo+PiArCQlpZiAodmFsID4g
MCAmJiB2YWwgPD0gMTYpIHsNCj4+ICsJCQlyeG1zZy5sZW4gPSB2YWw7DQo+PiArCQkJY2VjX3Jl
Y2VpdmVkX21zZyhpdDY2MjUtPmNlY19hZGFwLCAmcnhtc2cpOw0KPj4gKwkJCWR1bXBfY2VjX21z
ZyhpdDY2MjUsICZyeG1zZywgIkNFQ19SWCIpOw0KPj4gKwkJfSBlbHNlIHsNCj4+ICsJCQlkZXZf
ZXJyKGl0NjYyNS0+ZGV2LCAiaW52YWxpZCBDRUMgUlggbGVuZ3RoICVkIiwgdmFsKTsNCj4+ICsJ
CX0NCj4+ICsJfQ0KPj4gKw0KPj4gKwlpZiAoaW50c3RhdHVzICYgQl9DRUNfVFhfVVBEQVRFKSB7
DQo+PiArCQl2YWwgPSBpdDY2MjVfcmVhZF9ieXRlKGl0NjYyNSwgUkVHX0NFQ19TVEFUVVMpOw0K
Pj4gKwkJaWYgKHZhbCA8IDApIHsNCj4+ICsJCQlkZXZfZXJyKGl0NjYyNS0+ZGV2LCAicmVhZCBD
RUMgc3RhdHVzIGZhaWxlZCIpOw0KPj4gKwkJCXJldHVybjsNCj4+ICsJCX0NCj4+ICsNCj4+ICsJ
CWlmICh2YWwgJiBCSVQoMCkpIHsNCj4+ICsJCQljZWNfdHJhbnNtaXRfYXR0ZW1wdF9kb25lKGl0
NjYyNS0+Y2VjX2FkYXAsDQo+PiArCQkJCQkJICBDRUNfVFhfU1RBVFVTX09LKTsNCj4+ICsJCX0g
ZWxzZSBpZiAodmFsICYgQklUKDEpKSB7DQo+PiArCQkJY2VjX3RyYW5zbWl0X2F0dGVtcHRfZG9u
ZShpdDY2MjUtPmNlY19hZGFwLA0KPj4gKwkJCQkJCSAgQ0VDX1RYX1NUQVRVU19OQUNLKTsNCj4+
ICsJCX0gZWxzZSB7DQo+PiArCQkJZGV2X2VycihpdDY2MjUtPmRldiwgInVua25vd24gQ0VDIHN0
YXR1cyAlMDJYIiwgdmFsKTsNCj4NCj5UaGlzIHByb2JhYmx5IHNob3VsZCBiZSBkZXZfaW5mby4g
SWYgdGhlIGhhcmR3YXJlIHJldHVybnMgYSBrbm93biBiYWQgdmFsdWUsDQo+dGhlbiB0aGlzIHdv
dWxkIGJlIGFuIGVycm9yLiBCdXQgaWYgaXQgaXMgYSB2YWxpZCB2YWx1ZSwgYnV0IHlvdSBqdXN0
IGRvIG5vdA0KPmtub3cgd2hhdCBpdCBtZWFucywgdGhlbiBkZXZfaW5mbyBpcyBtb3JlIGFwcHJv
cHJpYXRlLg0KPg0KPj4gKwkJCWNlY190cmFuc21pdF9hdHRlbXB0X2RvbmUoaXQ2NjI1LT5jZWNf
YWRhcCwNCj4+ICsJCQkJCQkgIENFQ19UWF9TVEFUVVNfTkFDSyk7DQo+PiArCQl9DQo+PiArCX0N
Cj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHZvaWQgaXQ2NjI1X2lycV9mb3JtYXRfY2hhbmdlKHN0
cnVjdCBpdDY2MjUgKml0NjYyNSkNCj4+ICt7DQo+PiArCXN0cnVjdCB2NGwyX3N1YmRldiAqc2Qg
PSAmaXQ2NjI1LT5zZDsNCj4+ICsJc3RydWN0IHY0bDJfZHZfdGltaW5ncyB0aW1pbmdzOw0KPj4g
Kwljb25zdCBzdHJ1Y3QgdjRsMl9ldmVudCBpdDY2MjVfZXZfZm10ID0gew0KPj4gKwkJLnR5cGUg
PSBWNEwyX0VWRU5UX1NPVVJDRV9DSEFOR0UsDQo+PiArCQkudS5zcmNfY2hhbmdlLmNoYW5nZXMg
PSBWNEwyX0VWRU5UX1NSQ19DSF9SRVNPTFVUSU9OLA0KPj4gKwl9Ow0KPj4gKwlpbnQgcmV0Ow0K
Pj4gKw0KPj4gKwlpZiAobm9fc2lnbmFsKGl0NjYyNSkpDQo+DQo+SWYgdGhlIHNpZ25hbCBkaXNh
cHBlYXJzLCB0aGVuIGFsc28gcmFpc2UgdGhlIFNPVVJDRV9DSEFOR0UgZXZlbnQuDQo+SSB0aGlu
ayB0aGF0IGlzIG1pc3NpbmcgaGVyZS4NCj4NCj4+ICsJCXJldHVybjsNCj4+ICsNCj4+ICsJcmV0
ID0gaXQ2NjI1X2dldF9kZXRlY3RlZF90aW1pbmdzKGl0NjYyNSwgJnRpbWluZ3MpOw0KPj4gKwlp
ZiAocmV0IDwgMCkgew0KPj4gKwkJdjRsMl9kYmcoMSwgZGVidWcsIHNkLCAiRmFpbGVkIHRvIGdl
dCBkZXRlY3RlZCB0aW1pbmdzIik7DQo+PiArCQlyZXR1cm47DQo+PiArCX0NCj4+ICsNCj4+ICsJ
aWYgKHNkLT5kZXZub2RlKQ0KPj4gKwkJdjRsMl9zdWJkZXZfbm90aWZ5X2V2ZW50KHNkLCAmaXQ2
NjI1X2V2X2ZtdCk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIGl0NjYyNV9pcnFfaGRt
aV9hdWRpb19jaGFuZ2Uoc3RydWN0IGl0NjYyNSAqaXQ2NjI1KQ0KPj4gK3sNCj4+ICsJc3RydWN0
IHY0bDJfc3ViZGV2ICpzZCA9ICZpdDY2MjUtPnNkOw0KPj4gKw0KPj4gKwlpdDY2MjVfc19jdHJs
X2F1ZGlvX3NhbXBsaW5nX3JhdGUoc2QpOw0KPj4gKwlpdDY2MjVfc19jdHJsX2F1ZGlvX3ByZXNl
bnQoc2QpOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCBpdDY2MjVfZ2V0X3RpbWluZ3Mo
c3RydWN0IGl0NjYyNSAqaXQ2NjI1LA0KPj4gKwkJCSAgICAgICBzdHJ1Y3QgdjRsMl9kdl90aW1p
bmdzICp0aW1pbmdzKQ0KPj4gK3sNCj4+ICsJZ3VhcmQobXV0ZXgpKCZpdDY2MjUtPml0NjYyNV9s
b2NrKTsNCj4+ICsJKnRpbWluZ3MgPSBpdDY2MjUtPnRpbWluZ3M7DQo+PiArfQ0KPj4gKw0KPj4g
K3N0YXRpYyB2b2lkIGl0NjYyNV9jbGVhcl90aW1pbmdzKHN0cnVjdCBpdDY2MjUgKml0NjYyNSkN
Cj4+ICt7DQo+PiArCWd1YXJkKG11dGV4KSgmaXQ2NjI1LT5pdDY2MjVfbG9jayk7DQo+PiArCW1l
bXNldCgmaXQ2NjI1LT50aW1pbmdzLCAwLCBzaXplb2YoaXQ2NjI1LT50aW1pbmdzKSk7DQo+PiAr
fQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIGl0NjYyNV9pcnFfaGRtaV81dl9jaGFuZ2Uoc3RydWN0
IGl0NjYyNSAqaXQ2NjI1KQ0KPj4gK3sNCj4+ICsJc3RydWN0IHY0bDJfc3ViZGV2ICpzZCA9ICZp
dDY2MjUtPnNkOw0KPj4gKw0KPj4gKwlpdDY2MjVfY2xlYXJfdGltaW5ncyhpdDY2MjUpOw0KPj4g
KwlpdDY2MjVfdjRsMl9zZF9jdHJsX3VwZGF0ZShzZCk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRp
YyB2b2lkIGl0NjYyNV9pcnFfaGRjcF9jaGFuZ2Uoc3RydWN0IGl0NjYyNSAqaXQ2NjI1KQ0KPj4g
K3sNCj4+ICsJc3RydWN0IHY0bDJfc3ViZGV2ICpzZCA9ICZpdDY2MjUtPnNkOw0KPj4gKwl1OCBj
cF9zdHM7DQo+PiArDQo+PiArCWNwX3N0cyA9IGl0NjYyNV9yZWFkX2J5dGUoaXQ2NjI1LCBSRUdf
UlhfSERDUF9TVFMpOw0KPj4gKwl2NGwyX2luZm8oc2QsICJIRENQIGNoYW5nZSB0byAlMDJYIiwg
Y3Bfc3RzKTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHZvaWQgaXQ2NjI1X2lycV9pbmZvZnJh
bWVfbGF0Y2goc3RydWN0IGl0NjYyNSAqaXQ2NjI1KQ0KPj4gK3sNCj4+ICsJdTggaW5mb19mcmFt
ZVszMl07DQo+PiArDQo+PiArCWd1YXJkKG11dGV4KSgmaXQ2NjI1LT5pdDY2MjVfbG9jayk7DQo+
PiArDQo+PiArCWl0NjYyNV9yZWFkX2J5dGVzKGl0NjYyNSwgUkVHX0lGX0RBVEEsIGluZm9fZnJh
bWUsIDMxKTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHZvaWQgaXQ2NjI1X2lycV9lbWF0YV9w
YWNrZXRfbGF0Y2goc3RydWN0IGl0NjYyNSAqaXQ2NjI1KQ0KPj4gK3sNCj4+ICsJdTggZXh0ZW5k
X3BhY2tldFsxNF07DQo+PiArDQo+PiArCWl0NjYyNV9yZWFkX2J5dGVzKGl0NjYyNSwgUkVHX0VN
UF9EQVRBLCBleHRlbmRfcGFja2V0LCAxMyk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lk
IGl0NjYyNV9pcnFfYXZtdXRlX2NoYW5nZShzdHJ1Y3QgaXQ2NjI1ICppdDY2MjUpDQo+PiArew0K
Pj4gKwlzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkID0gJml0NjYyNS0+c2Q7DQo+PiArCWludCB2YWw7
DQo+PiArCXU4IGF2bXV0ZTsNCj4+ICsNCj4+ICsJdmFsID0gaXQ2NjI1X3JlYWRfYnl0ZShpdDY2
MjUsIFJFR19SWF9TVEFUVVMpOw0KPj4gKwlpZiAodmFsIDwgMCkNCj4+ICsJCXJldHVybjsNCj4+
ICsNCj4+ICsJYXZtdXRlID0gKHZhbCAmIEJfUlhfQVZNVVRFKSA/IDEgOiAwOw0KPj4gKwl2NGwy
X2luZm8oc2QsICJBVk11dGUgY2hhbmdlIHRvICVkIiwgYXZtdXRlKTsNCj4+ICt9DQo+PiArDQo+
PiArc3RhdGljIGJvb2wgaXQ2NjI1X2ludGVycnVwdF9oYW5kbGVyKHN0cnVjdCBpdDY2MjUgKml0
NjYyNSkNCj4+ICt7DQo+PiArCXN0cnVjdCB2NGwyX3N1YmRldiAqc2QgPSAmaXQ2NjI1LT5zZDsN
Cj4+ICsJaW50IHZhbCwgaW50X3N0czEgPSAwLCBpbnRfc3RzMiA9IDA7DQo+PiArDQo+PiArCXZh
bCA9IGl0NjYyNV9yZWFkX2J5dGUoaXQ2NjI1LCBSRUdfTUNVX0lOVEVSUlVQVCk7DQo+PiArCWlm
ICh2YWwgPD0gMCkNCj4+ICsJCXJldHVybiBmYWxzZTsNCj4+ICsNCj4+ICsJaXQ2NjI1X3dyaXRl
X2J5dGUoaXQ2NjI1LCBSRUdfTUNVX0lOVEVSUlVQVCwgdmFsKTsNCj4+ICsNCj4+ICsJdjRsMl9k
YmcoMSwgZGVidWcsIHNkLCAiJXM6IElOVCA9IDB4JTAyWCIsIF9fZnVuY19fLCB2YWwpOw0KPj4g
Kw0KPj4gKwlpZiAodmFsICYgKEJfQ0VDX1JYX1JFQ0VJVkVEIHwgQl9DRUNfVFhfVVBEQVRFKSAm
JiBpdDY2MjUtPmNlY19hZGFwKQ0KPj4gKwkJaXQ2NjI1X2NlY19oYW5kbGVyKGl0NjYyNSwgdmFs
ICYgKEJfQ0VDX1JYX1JFQ0VJVkVEIHwgQl9DRUNfVFhfVVBEQVRFKSk7DQo+PiArDQo+PiArCWlm
ICh2YWwgJiBCX1NZU19JTlRfQUNUSVZFKSB7DQo+PiArCQlpbnRfc3RzMSA9IGl0NjYyNV9yZWFk
X2J5dGUoaXQ2NjI1LCBSRUdfUlhfSU5UX1NUQVRVUzEpOw0KPj4gKwkJaW50X3N0czIgPSBpdDY2
MjVfcmVhZF9ieXRlKGl0NjYyNSwgUkVHX1JYX0lOVF9TVEFUVVMyKTsNCj4+ICsJCXY0bDJfZGJn
KDEsIGRlYnVnLCBzZCwgIiVzOiBoZG1pX2ludCA9IDB4JTAyWCAweCUwMlgiLA0KPj4gKwkJCSBf
X2Z1bmNfXywgaW50X3N0czEsIGludF9zdHMyKTsNCj4+ICsNCj4+ICsJCWlmIChpbnRfc3RzMSA+
PSAwKSB7DQo+PiArCQkJaXQ2NjI1X3dyaXRlX2J5dGUoaXQ2NjI1LCBSRUdfUlhfSU5UX1NUQVRV
UzEsIDB4MDApOw0KPj4gKwkJCWlmIChpbnRfc3RzMSAmIEJfSERNSV81Vl9DSEcpDQo+PiArCQkJ
CWl0NjYyNV9pcnFfaGRtaV81dl9jaGFuZ2UoaXQ2NjI1KTsNCj4+ICsNCj4+ICsJCQlpZiAoaW50
X3N0czEgJiBCX0hETUlfVklEX0NIRykNCj4+ICsJCQkJaXQ2NjI1X2lycV9mb3JtYXRfY2hhbmdl
KGl0NjYyNSk7DQo+PiArDQo+PiArCQkJaWYgKGludF9zdHMxICYgQl9IRE1JX0FVRF9DSEcpDQo+
PiArCQkJCWl0NjYyNV9pcnFfaGRtaV9hdWRpb19jaGFuZ2UoaXQ2NjI1KTsNCj4+ICsNCj4+ICsJ
CQlpZiAoaW50X3N0czEgJiBCX0hETUlfQ1BfQ0hHKQ0KPj4gKwkJCQlpdDY2MjVfaXJxX2hkY3Bf
Y2hhbmdlKGl0NjYyNSk7DQo+PiArDQo+PiArCQkJaWYgKGludF9zdHMxICYgQl9IRE1JX0lGX0xB
VENIKQ0KPj4gKwkJCQlpdDY2MjVfaXJxX2luZm9mcmFtZV9sYXRjaChpdDY2MjUpOw0KPj4gKw0K
Pj4gKwkJCWlmIChpbnRfc3RzMSAmIEJfSERNSV9FTVApDQo+PiArCQkJCWl0NjYyNV9pcnFfZW1h
dGFfcGFja2V0X2xhdGNoKGl0NjYyNSk7DQo+PiArCQl9DQo+PiArDQo+PiArCQlpZiAoaW50X3N0
czIgPj0gMCkgew0KPj4gKwkJCWl0NjYyNV93cml0ZV9ieXRlKGl0NjYyNSwgUkVHX1JYX0lOVF9T
VEFUVVMyLCAweDAwKTsNCj4+ICsNCj4+ICsJCQlpZiAoaW50X3N0czIgJiBCX0hETUlfQVZJKQ0K
Pj4gKwkJCQlpdDY2MjVfc2hvd19hdmlfaW5mb2ZyYW1lKGl0NjYyNSk7DQo+PiArDQo+PiArCQkJ
aWYgKGludF9zdHMyICYgQl9IRE1JX05PX0FWSSkNCj4+ICsJCQkJdjRsMl9pbmZvKHNkLCAiQVZJ
LWluZm8gc3RvcHBlZCIpOw0KPj4gKw0KPj4gKwkJCWlmIChpbnRfc3RzMiAmIEJfSERNSV9BVk1V
VEVfQ0hHKQ0KPj4gKwkJCQlpdDY2MjVfaXJxX2F2bXV0ZV9jaGFuZ2UoaXQ2NjI1KTsNCj4+ICsJ
CX0NCj4+ICsJfQ0KPj4gKw0KPj4gKwlyZXR1cm4gdHJ1ZTsNCj4+ICt9DQo+PiArDQo+PiArc3Rh
dGljIGlycXJldHVybl90IGl0NjYyNV9pcnFfaGFuZGxlcihpbnQgdW51c2VkLCB2b2lkICpkYXRh
KQ0KPj4gK3sNCj4+ICsJc3RydWN0IGl0NjYyNSAqaXQ2NjI1ID0gZGF0YTsNCj4+ICsNCj4+ICsJ
cmV0dXJuIGl0NjYyNV9pbnRlcnJ1cHRfaGFuZGxlcihpdDY2MjUpID8gSVJRX0hBTkRMRUQgOiBJ
UlFfTk9ORTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHZvaWQgaXQ2NjI1X2lycV9wb2xsX3Rp
bWVyKHN0cnVjdCB0aW1lcl9saXN0ICp0KQ0KPj4gK3sNCj4+ICsJc3RydWN0IGl0NjYyNSAqaXQ2
NjI1ID0gdGltZXJfY29udGFpbmVyX29mKGl0NjYyNSwgdCwgdGltZXIpOw0KPj4gKwl1bnNpZ25l
ZCBpbnQgbXNlY3M7DQo+PiArDQo+PiArCXNjaGVkdWxlX3dvcmsoJml0NjYyNS0+cG9sbGluZ193
b3JrKTsNCj4+ICsJLyoNCj4+ICsJICogSWYgQ0VDIGlzIHByZXNlbnQsIHRoZW4gd2UgbmVlZCB0
byBwb2xsIG1vcmUgZnJlcXVlbnRseSwNCj4+ICsJICogb3RoZXJ3aXNlIHdlIHdpbGwgbWlzcyBD
RUMgbWVzc2FnZXMuDQo+PiArCSAqLw0KPj4gKwltc2VjcyA9IGl0NjYyNS0+Y2VjX2FkYXAgPyBQ
T0xMX0lOVEVSVkFMX0NFQ19NUyA6IFBPTExfSU5URVJWQUxfTVM7DQo+PiArCW1vZF90aW1lcigm
aXQ2NjI1LT50aW1lciwgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMobXNlY3MpKTsNCj4+ICt9
DQo+PiArDQo+PiArc3RhdGljIHZvaWQgaXQ2NjI1X3BvbGxpbmdfd29yayhzdHJ1Y3Qgd29ya19z
dHJ1Y3QgKndvcmspDQo+PiArew0KPj4gKwlzdHJ1Y3QgaXQ2NjI1ICppdDY2MjUgPSBjb250YWlu
ZXJfb2Yod29yaywgc3RydWN0IGl0NjYyNSwNCj4+ICsJCQkJCXBvbGxpbmdfd29yayk7DQo+PiAr
DQo+PiArCWl0NjYyNV9pbnRlcnJ1cHRfaGFuZGxlcihpdDY2MjUpOw0KPj4gK30NCj4+ICsNCj4+
ICtzdGF0aWMgaW50IGl0NjYyNV9sb2dfc3RhdHVzKHN0cnVjdCB2NGwyX3N1YmRldiAqc2QpDQo+
PiArew0KPj4gKwlzdHJ1Y3QgaXQ2NjI1ICppdDY2MjUgPSBzZF90b182NjI1KHNkKTsNCj4+ICsJ
c3RydWN0IHY0bDJfZHZfdGltaW5ncyB0aW1pbmdzLCBjb25maWd1cmVkX3RpbWluZ3M7DQo+PiAr
DQo+PiArCWlmIChpdDY2MjVfZ2V0X2RldGVjdGVkX3RpbWluZ3MoaXQ2NjI1LCAmdGltaW5ncykp
DQo+PiArCQl2NGwyX2luZm8oc2QsICJObyB2aWRlbyBkZXRlY3RlZCIpOw0KPj4gKwllbHNlDQo+
PiArCQl2NGwyX3ByaW50X2R2X3RpbWluZ3Moc2QtPm5hbWUsICJEZXRlY3RlZCBmb3JtYXQ6ICIs
ICZ0aW1pbmdzLA0KPj4gKwkJCQkgICAgICB0cnVlKTsNCj4+ICsNCj4+ICsJaXQ2NjI1X2dldF90
aW1pbmdzKGl0NjYyNSwgJmNvbmZpZ3VyZWRfdGltaW5ncyk7DQo+PiArCXY0bDJfcHJpbnRfZHZf
dGltaW5ncyhzZC0+bmFtZSwgIkNvbmZpZ3VyZWQgZm9ybWF0OiAiLA0KPj4gKwkJCSAgICAgICZj
b25maWd1cmVkX3RpbWluZ3MsIHRydWUpOw0KPj4gKw0KPj4gKwlpdDY2MjVfc2hvd19hdmlfaW5m
b2ZyYW1lKGl0NjYyNSk7DQo+PiArDQo+PiArCXJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICtz
dGF0aWMgaW50IGl0NjYyNV9pc3Ioc3RydWN0IHY0bDJfc3ViZGV2ICpzZCwgdTMyIHN0YXR1cywg
Ym9vbCAqaGFuZGxlZCkNCj4+ICt7DQo+PiArCXN0cnVjdCBpdDY2MjUgKml0NjYyNSA9IHNkX3Rv
XzY2MjUoc2QpOw0KPj4gKw0KPj4gKwlzY2hlZHVsZV93b3JrKCZpdDY2MjUtPnBvbGxpbmdfd29y
ayk7DQo+PiArCSpoYW5kbGVkID0gdHJ1ZTsNCj4+ICsNCj4+ICsJcmV0dXJuIDA7DQo+PiArfQ0K
Pj4gKw0KPj4gK3N0YXRpYyBpbnQgaXQ2NjI1X3N1YnNjcmliZV9ldmVudChzdHJ1Y3QgdjRsMl9z
dWJkZXYgKnNkLCBzdHJ1Y3QgdjRsMl9maCAqZmgsDQo+PiArCQkJCSAgc3RydWN0IHY0bDJfZXZl
bnRfc3Vic2NyaXB0aW9uICpzdWIpDQo+PiArew0KPj4gKwlzd2l0Y2ggKHN1Yi0+dHlwZSkgew0K
Pj4gKwljYXNlIFY0TDJfRVZFTlRfU09VUkNFX0NIQU5HRToNCj4+ICsJCXJldHVybiB2NGwyX3Ny
Y19jaGFuZ2VfZXZlbnRfc3ViZGV2X3N1YnNjcmliZShzZCwgZmgsIHN1Yik7DQo+PiArCWNhc2Ug
VjRMMl9FVkVOVF9DVFJMOg0KPj4gKwkJcmV0dXJuIHY0bDJfY3RybF9zdWJkZXZfc3Vic2NyaWJl
X2V2ZW50KHNkLCBmaCwgc3ViKTsNCj4+ICsJZGVmYXVsdDoNCj4+ICsJCXJldHVybiAtRUlOVkFM
Ow0KPj4gKwl9DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgaXQ2NjI1X2dfaW5wdXRfc3Rh
dHVzKHN0cnVjdCB2NGwyX3N1YmRldiAqc2QsIHUzMiAqc3RhdHVzKQ0KPj4gK3sNCj4+ICsJc3Ry
dWN0IGl0NjYyNSAqaXQ2NjI1ID0gc2RfdG9fNjYyNShzZCk7DQo+PiArCWJvb2wgdmFsOw0KPj4g
Kw0KPj4gKwl2YWwgPSBub19zaWduYWwoaXQ2NjI1KTsNCj4+ICsJKnN0YXR1cyA9IDA7DQo+PiAr
CSpzdGF0dXMgfD0gdmFsID8gVjRMMl9JTl9TVF9OT19TSUdOQUwgOiAwOw0KPj4gKwkqc3RhdHVz
IHw9IHZhbCA/IFY0TDJfSU5fU1RfTk9fU1lOQyA6IDA7DQo+PiArDQo+PiArCXY0bDJfZGJnKDEs
IGRlYnVnLCBzZCwgIiVzOiBzdGF0dXMgPSAweCV4IiwgX19mdW5jX18sICpzdGF0dXMpOw0KPj4g
Kw0KPj4gKwlyZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludA0KPj4gK2l0NjYy
NV91cGRhdGVfdGltaW5nc19pZl9jaGFuZ2VkKHN0cnVjdCBpdDY2MjUgKml0NjYyNSwNCj4+ICsJ
CQkJIGNvbnN0IHN0cnVjdCB2NGwyX2R2X3RpbWluZ3MgKnRpbWluZ3MpDQo+PiArew0KPj4gKwlp
bnQgcmV0Ow0KPj4gKw0KPj4gKwlndWFyZChtdXRleCkoJml0NjYyNS0+aXQ2NjI1X2xvY2spOw0K
Pj4gKwlpZiAodjRsMl9tYXRjaF9kdl90aW1pbmdzKCZpdDY2MjUtPnRpbWluZ3MsIHRpbWluZ3Ms
IDAsIGZhbHNlKSkgew0KPj4gKwkJcmV0ID0gMDsNCj4+ICsJfSBlbHNlIGlmICghdjRsMl92YWxp
ZF9kdl90aW1pbmdzKHRpbWluZ3MsICZpdDY2MjVfdGltaW5nc19jYXAsDQo+PiArCQkJCQkgIE5V
TEwsIE5VTEwpKSB7DQo+PiArCQlyZXQgPSAtRVJBTkdFOw0KPj4gKwl9IGVsc2Ugew0KPj4gKwkJ
aXQ2NjI1LT50aW1pbmdzID0gKnRpbWluZ3M7DQo+PiArCQlyZXQgPSAxOw0KPj4gKwl9DQo+PiAr
DQo+PiArCXJldHVybiByZXQ7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgaXQ2NjI1X3Nf
ZHZfdGltaW5ncyhzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkLA0KPj4gKwkJCSAgICAgICBzdHJ1Y3Qg
djRsMl9kdl90aW1pbmdzICp0aW1pbmdzKQ0KPj4gK3sNCj4+ICsJc3RydWN0IGl0NjYyNSAqaXQ2
NjI1ID0gc2RfdG9fNjYyNShzZCk7DQo+PiArCWludCByZXQ7DQo+PiArDQo+PiArCWlmICghdGlt
aW5ncykNCj4+ICsJCXJldHVybiAtRUlOVkFMOw0KPj4gKw0KPj4gKwlpZiAoZGVidWcpDQo+PiAr
CQl2NGwyX3ByaW50X2R2X3RpbWluZ3Moc2QtPm5hbWUsIF9fZnVuY19fLCB0aW1pbmdzLCBmYWxz
ZSk7DQo+PiArDQo+PiArCXJldCA9IGl0NjYyNV91cGRhdGVfdGltaW5nc19pZl9jaGFuZ2VkKGl0
NjYyNSwgdGltaW5ncyk7DQo+PiArCWlmIChyZXQgPT0gLUVSQU5HRSkgew0KPj4gKwkJdjRsMl9k
YmcoMSwgZGVidWcsIHNkLCAiJXM6IHRpbWluZ3Mgb3V0IG9mIHJhbmdlIiwgX19mdW5jX18pOw0K
Pj4gKwkJcmV0dXJuIHJldDsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlpZiAocmV0ID09IDApIHsNCj4+
ICsJCXY0bDJfZGJnKDEsIGRlYnVnLCBzZCwgIiVzOiBubyBjaGFuZ2UiLCBfX2Z1bmNfXyk7DQo+
PiArCQlyZXR1cm4gMDsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlpdDY2MjVfZW5hYmxlX3N0cmVhbShp
dDY2MjUsIGZhbHNlKTsNCj4NCj5UaGlzIGRvZXNuJ3QgbG9vayByaWdodC4gVmlkZW8gb3V0cHV0
IHNob3VsZCBvbmx5IGJlIGVuYWJsZWQgd2hlbiB0aGUgYnJpZGdlIGRyaXZlcg0KPmNhbGxzIHRo
ZSBzX3N0cmVhbSBvcC4gRG9pbmcgaXQgaGVyZSBjYW4gY2F1c2UgcHJvYmxlbXMgaWYgdGhlIHJl
bWFpbmRlciBvZiB0aGUNCj52aWRlbyBwaXBlbGluZSBpc24ndCBwcm9wZXJseSBjb25maWd1cmVk
Lg0KPg0KPj4gKw0KPj4gKwlyZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBp
dDY2MjVfZ19kdl90aW1pbmdzKHN0cnVjdCB2NGwyX3N1YmRldiAqc2QsDQo+PiArCQkJICAgICAg
IHN0cnVjdCB2NGwyX2R2X3RpbWluZ3MgKnRpbWluZ3MpDQo+PiArew0KPj4gKwlzdHJ1Y3QgaXQ2
NjI1ICppdDY2MjUgPSBzZF90b182NjI1KHNkKTsNCj4+ICsNCj4+ICsJaXQ2NjI1X2dldF90aW1p
bmdzKGl0NjYyNSwgdGltaW5ncyk7DQo+PiArDQo+PiArCXJldHVybiAwOw0KPj4gK30NCj4+ICsN
Cj4+ICtzdGF0aWMgaW50IGl0NjYyNV9lbnVtX2R2X3RpbWluZ3Moc3RydWN0IHY0bDJfc3ViZGV2
ICpzZCwNCj4+ICsJCQkJICBzdHJ1Y3QgdjRsMl9lbnVtX2R2X3RpbWluZ3MgKnRpbWluZ3MpDQo+
PiArew0KPj4gKwlpZiAodGltaW5ncy0+cGFkICE9IDApDQo+PiArCQlyZXR1cm4gLUVJTlZBTDsN
Cj4+ICsNCj4+ICsJcmV0dXJuIHY0bDJfZW51bV9kdl90aW1pbmdzX2NhcCh0aW1pbmdzLA0KPj4g
KwkJCQkJJml0NjYyNV90aW1pbmdzX2NhcCwgTlVMTCwgTlVMTCk7DQo+PiArfQ0KPj4gKw0KPj4g
K3N0YXRpYyBpbnQgaXQ2NjI1X3F1ZXJ5X2R2X3RpbWluZ3Moc3RydWN0IHY0bDJfc3ViZGV2ICpz
ZCwNCj4+ICsJCQkJICAgc3RydWN0IHY0bDJfZHZfdGltaW5ncyAqdGltaW5ncykNCj4+ICt7DQo+
PiArCXN0cnVjdCBpdDY2MjUgKml0NjYyNSA9IHNkX3RvXzY2MjUoc2QpOw0KPj4gKwlpbnQgcmV0
Ow0KPj4gKw0KPj4gKwlyZXQgPSBpdDY2MjVfZ2V0X2RldGVjdGVkX3RpbWluZ3MoaXQ2NjI1LCB0
aW1pbmdzKTsNCj4+ICsJaWYgKHJldCkNCj4+ICsJCXJldHVybiByZXQ7DQo+PiArDQo+PiArCWlm
IChkZWJ1ZykNCj4+ICsJCXY0bDJfcHJpbnRfZHZfdGltaW5ncyhzZC0+bmFtZSwgX19mdW5jX18s
IHRpbWluZ3MsIGZhbHNlKTsNCj4+ICsNCj4+ICsJaWYgKCF2NGwyX3ZhbGlkX2R2X3RpbWluZ3Mo
dGltaW5ncywgJml0NjYyNV90aW1pbmdzX2NhcCwgTlVMTCwgTlVMTCkpIHsNCj4+ICsJCXY0bDJf
ZGJnKDEsIGRlYnVnLCBzZCwgIiVzOiB0aW1pbmdzIG91dCBvZiByYW5nZSIsIF9fZnVuY19fKTsN
Cj4+ICsJCXJldHVybiAtRVJBTkdFOw0KPj4gKwl9DQo+PiArDQo+PiArCXJldHVybiAwOw0KPj4g
K30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IGl0NjYyNV9kdl90aW1pbmdzX2NhcChzdHJ1Y3QgdjRs
Ml9zdWJkZXYgKnNkLA0KPj4gKwkJCQkgc3RydWN0IHY0bDJfZHZfdGltaW5nc19jYXAgKmNhcCkN
Cj4+ICt7DQo+PiArCWlmIChjYXAtPnBhZCAhPSAwKQ0KPj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+
PiArDQo+PiArCSpjYXAgPSBpdDY2MjVfdGltaW5nc19jYXA7DQo+PiArDQo+PiArCXJldHVybiAw
Ow0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IGl0NjYyNV9zX3N0cmVhbShzdHJ1Y3QgdjRs
Ml9zdWJkZXYgKnNkLCBpbnQgZW5hYmxlKQ0KPj4gK3sNCj4+ICsJc3RydWN0IGl0NjYyNSAqaXQ2
NjI1ID0gc2RfdG9fNjYyNShzZCk7DQo+PiArDQo+PiArCWl0NjYyNV9lbmFibGVfc3RyZWFtKGl0
NjYyNSwgZW5hYmxlKTsNCj4+ICsJcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBp
bnQgaXQ2NjI1X2VudW1fbWJ1c19jb2RlKHN0cnVjdCB2NGwyX3N1YmRldiAqc2QsDQo+PiArCQkJ
CSBzdHJ1Y3QgdjRsMl9zdWJkZXZfc3RhdGUgKnNkX3N0YXRlLA0KPj4gKwkJCQkgc3RydWN0IHY0
bDJfc3ViZGV2X21idXNfY29kZV9lbnVtICpjb2RlKQ0KPj4gK3sNCj4+ICsJZGV2X2RiZyhzZC0+
ZGV2LCAiJXM6IGluZGV4PSVkIiwgX19mdW5jX18sIGNvZGUtPmluZGV4KTsNCj4+ICsNCj4+ICsJ
aWYgKGNvZGUtPmluZGV4ID49IEFSUkFZX1NJWkUoaXQ2NjI1X2Zvcm1hdHMpKQ0KPj4gKwkJcmV0
dXJuIC1FSU5WQUw7DQo+PiArDQo+PiArCWRldl9kYmcoc2QtPmRldiwgIiVzOiBjb2RlPTB4JTA4
eCIsIF9fZnVuY19fLA0KPj4gKwkJaXQ2NjI1X2Zvcm1hdHNbY29kZS0+aW5kZXhdLm1idXNfZm10
X2NvZGUpOw0KPj4gKwljb2RlLT5jb2RlID0gaXQ2NjI1X2Zvcm1hdHNbY29kZS0+aW5kZXhdLm1i
dXNfZm10X2NvZGU7DQo+PiArDQo+PiArCXJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0
aWMgaW50IGl0NjYyNV9nZXRfbWJ1c19jb25maWcoc3RydWN0IHY0bDJfc3ViZGV2ICpzZCwNCj4+
ICsJCQkJICB1bnNpZ25lZCBpbnQgcGFkLA0KPj4gKwkJCQkgIHN0cnVjdCB2NGwyX21idXNfY29u
ZmlnICpjZmcpDQo+PiArew0KPj4gKwlzdHJ1Y3QgaXQ2NjI1ICppdDY2MjUgPSBzZF90b182NjI1
KHNkKTsNCj4+ICsNCj4+ICsJaWYgKHBhZCAhPSAwKQ0KPj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+
PiArDQo+PiArCWNmZy0+dHlwZSA9IGl0NjYyNS0+YnVzX3R5cGU7DQo+PiArCWNmZy0+YnVzLm1p
cGlfY3NpMi5mbGFncyA9IDA7DQo+PiArCWNmZy0+YnVzLm1pcGlfY3NpMi5udW1fZGF0YV9sYW5l
cyA9IGl0NjYyNS0+Y3NpX2xhbmVzOw0KPj4gKw0KPj4gKwlyZXR1cm4gMDsNCj4+ICt9DQo+PiAr
DQo+PiArc3RhdGljIGludCBpdDY2MjVfcGFkX3NfZHZfdGltaW5ncyhzdHJ1Y3QgdjRsMl9zdWJk
ZXYgKnNkLCB1bnNpZ25lZCBpbnQgcGFkLA0KPj4gKwkJCQkgICBzdHJ1Y3QgdjRsMl9kdl90aW1p
bmdzICp0aW1pbmdzKQ0KPj4gK3sNCj4+ICsJaWYgKHBhZCAhPSAwKQ0KPj4gKwkJcmV0dXJuIC1F
SU5WQUw7DQo+PiArDQo+PiArCXJldHVybiBpdDY2MjVfc19kdl90aW1pbmdzKHNkLCB0aW1pbmdz
KTsNCj4NCj5XaHkgbm90IGp1c3QgbW92ZSB0aGUgaXQ2NjI1X3NfZHZfdGltaW5ncyBjb2RlIGhl
cmU/IERpdHRvIGZvciB0aGUgbmV4dCB0d28gZnVuY3Rpb25zLg0KPg0KPj4gK30NCj4+ICsNCj4+
ICtzdGF0aWMgaW50IGl0NjYyNV9wYWRfZ19kdl90aW1pbmdzKHN0cnVjdCB2NGwyX3N1YmRldiAq
c2QsIHVuc2lnbmVkIGludCBwYWQsDQo+PiArCQkJCSAgIHN0cnVjdCB2NGwyX2R2X3RpbWluZ3Mg
KnRpbWluZ3MpDQo+PiArew0KPj4gKwlpZiAocGFkICE9IDApDQo+PiArCQlyZXR1cm4gLUVJTlZB
TDsNCj4+ICsNCj4+ICsJcmV0dXJuIGl0NjYyNV9nX2R2X3RpbWluZ3Moc2QsIHRpbWluZ3MpOw0K
Pj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IGl0NjYyNV9wYWRfcXVlcnlfZHZfdGltaW5ncyhz
dHJ1Y3QgdjRsMl9zdWJkZXYgKnNkLA0KPj4gKwkJCQkgICAgICAgdW5zaWduZWQgaW50IHBhZCwN
Cj4+ICsJCQkJICAgICAgIHN0cnVjdCB2NGwyX2R2X3RpbWluZ3MgKnRpbWluZ3MpDQo+PiArew0K
Pj4gKwlpZiAocGFkICE9IDApDQo+PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4+ICsNCj4+ICsJcmV0
dXJuIGl0NjYyNV9xdWVyeV9kdl90aW1pbmdzKHNkLCB0aW1pbmdzKTsNCj4+ICt9DQo+PiArDQo+
PiArc3RhdGljIGlubGluZSB1MzIgZm9ybWF0X3RvX2NvbG9yc3BhY2UodTggY3NpX2Zvcm1hdCkN
Cj4+ICt7DQo+PiArCXN3aXRjaCAoY3NpX2Zvcm1hdCkgew0KPj4gKwljYXNlIENTSV9SR0I0NDQ6
DQo+PiArCWNhc2UgQ1NJX1JHQjU1NToNCj4+ICsJY2FzZSBDU0lfUkdCNTY1Og0KPj4gKwljYXNl
IENTSV9SR0I2NjY6DQo+PiArCWNhc2UgQ1NJX1JHQjg4ODoNCj4+ICsJY2FzZSBDU0lfUkdCXzEw
YjoNCj4+ICsJY2FzZSBDU0lfUkdCXzEyYjoNCj4+ICsJCXJldHVybiBWNEwyX0NPTE9SU1BBQ0Vf
U1JHQjsNCj4+ICsJY2FzZSBDU0lfWVVWNDIwXzhiX0w6DQo+PiArCWNhc2UgQ1NJX1lVVjQyMF84
YjoNCj4+ICsJY2FzZSBDU0lfWVVWNDIwXzEwYjoNCj4+ICsJY2FzZSBDU0lfWVVWNDIyXzhiOg0K
Pj4gKwljYXNlIENTSV9ZVVY0MjJfMTBiOg0KPj4gKwljYXNlIENTSV9ZVVY0MjJfMTJiOg0KPj4g
KwljYXNlIENTSV9ZVVY0MjBfMTBiX0w6DQo+PiArCWNhc2UgQ1NJX1lVVjQyMF8xMmI6DQo+PiAr
CWNhc2UgQ1NJX1lVVjQ0NF84YjoNCj4+ICsJY2FzZSBDU0lfWVVWNDQ0XzEwYjoNCj4+ICsJY2Fz
ZSBDU0lfWVVWNDQ0XzEyYjoNCj4+ICsJCXJldHVybiBWNEwyX0NPTE9SU1BBQ0VfUkVDNzA5Ow0K
Pj4gKwlkZWZhdWx0Og0KPj4gKwkJcmV0dXJuIDA7DQo+PiArCX0NCj4+ICt9DQo+PiArDQo+PiAr
c3RhdGljIGNvbnN0IGNoYXIgKml0NjYyNV9jc2lfZm9ybWF0X25hbWUodTggY3NpX2Zvcm1hdCkN
Cj4+ICt7DQo+PiArCXN3aXRjaCAoY3NpX2Zvcm1hdCkgew0KPj4gKwljYXNlIENTSV9ZVVY0MjJf
OGI6DQo+PiArCQlyZXR1cm4gIllVVjQyMiA4Yml0IjsNCj4+ICsJY2FzZSBDU0lfUkdCODg4Og0K
Pj4gKwkJcmV0dXJuICJSR0I4ODggOGJpdCI7DQo+PiArCWNhc2UgQ1NJX1lVVjQ0NF84YjoNCj4+
ICsJCXJldHVybiAiWVVWNDQ0IDhiaXQiOw0KPj4gKwlkZWZhdWx0Og0KPj4gKwkJcmV0dXJuICJ1
bmtub3duIjsNCj4+ICsJfQ0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IGl0NjYyNV9nZXRf
Zm10KHN0cnVjdCB2NGwyX3N1YmRldiAqc2QsDQo+PiArCQkJICBzdHJ1Y3QgdjRsMl9zdWJkZXZf
c3RhdGUgKnNkX3N0YXRlLA0KPj4gKwkJCSAgc3RydWN0IHY0bDJfc3ViZGV2X2Zvcm1hdCAqZm9y
bWF0KQ0KPj4gK3sNCj4+ICsJc3RydWN0IGl0NjYyNSAqaXQ2NjI1ID0gc2RfdG9fNjYyNShzZCk7
DQo+PiArCXN0cnVjdCB2NGwyX2R2X3RpbWluZ3MgdGltaW5nczsNCj4+ICsNCj4+ICsJaWYgKGZv
cm1hdC0+cGFkICE9IDApDQo+PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4+ICsNCj4+ICsJaXQ2NjI1
X2dldF90aW1pbmdzKGl0NjYyNSwgJnRpbWluZ3MpOw0KPj4gKwlmb3JtYXQtPmZvcm1hdC53aWR0
aCA9IHRpbWluZ3MuYnQud2lkdGg7DQo+PiArCWZvcm1hdC0+Zm9ybWF0LmhlaWdodCA9IHRpbWlu
Z3MuYnQuaGVpZ2h0Ow0KPj4gKwlmb3JtYXQtPmZvcm1hdC5maWVsZCA9IHRpbWluZ3MuYnQuaW50
ZXJsYWNlZCA9PSBWNEwyX0RWX0lOVEVSTEFDRUQgPw0KPj4gKwkJCSAgICAgICBWNEwyX0ZJRUxE
X0lOVEVSTEFDRUQgOiBWNEwyX0ZJRUxEX05PTkU7DQo+PiArDQo+PiArCWlmIChmb3JtYXQtPndo
aWNoID09IFY0TDJfU1VCREVWX0ZPUk1BVF9UUlkpIHsNCj4+ICsJCXN0cnVjdCB2NGwyX21idXNf
ZnJhbWVmbXQgKmZtdDsNCj4+ICsNCj4+ICsJCWZtdCA9IHY0bDJfc3ViZGV2X3N0YXRlX2dldF9m
b3JtYXQoc2Rfc3RhdGUsIGZvcm1hdC0+cGFkKTsNCj4+ICsJCWZvcm1hdC0+Zm9ybWF0LmNvZGUg
PSBmbXQtPmNvZGU7DQo+PiArCQlmb3JtYXQtPmZvcm1hdC5jb2xvcnNwYWNlID0gZm10LT5jb2xv
cnNwYWNlOw0KPj4gKwl9IGVsc2Ugew0KPj4gKwkJc2NvcGVkX2d1YXJkKG11dGV4LCAmaXQ2NjI1
LT5pdDY2MjVfbG9jaykgew0KPj4gKwkJCWZvcm1hdC0+Zm9ybWF0LmNvbG9yc3BhY2UgPQ0KPj4g
KwkJCQlmb3JtYXRfdG9fY29sb3JzcGFjZShpdDY2MjUtPmNzaV9mb3JtYXQpOw0KPj4gKwkJCWZv
cm1hdC0+Zm9ybWF0LmNvZGUgPSBpdDY2MjUtPm1idXNfZm10X2NvZGU7DQo+PiArCQl9DQo+PiAr
CX0NCj4+ICsNCj4+ICsJcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgaXQ2
NjI1X3NldF9mbXQoc3RydWN0IHY0bDJfc3ViZGV2ICpzZCwNCj4+ICsJCQkgIHN0cnVjdCB2NGwy
X3N1YmRldl9zdGF0ZSAqc2Rfc3RhdGUsDQo+PiArCQkJICBzdHJ1Y3QgdjRsMl9zdWJkZXZfZm9y
bWF0ICpmb3JtYXQpDQo+PiArew0KPj4gKwlzdHJ1Y3QgaXQ2NjI1ICppdDY2MjUgPSBzZF90b182
NjI1KHNkKTsNCj4+ICsJaW50IHJldDsNCj4+ICsJdTMyIG1idXNfZm10X2NvZGUgPSBmb3JtYXQt
PmZvcm1hdC5jb2RlOw0KPj4gKw0KPj4gKwlyZXQgPSBpdDY2MjVfZ2V0X2ZtdChzZCwgc2Rfc3Rh
dGUsIGZvcm1hdCk7DQo+PiArCWZvcm1hdC0+Zm9ybWF0LmNvZGUgPSBtYnVzX2ZtdF9jb2RlOw0K
Pj4gKw0KPj4gKwlpZiAocmV0KQ0KPj4gKwkJcmV0dXJuIHJldDsNCj4+ICsNCj4+ICsJcmV0ID0g
aXQ2NjI1X2NzaV9tYnVzX2NvZGVfaWR4KG1idXNfZm10X2NvZGUpOw0KPj4gKw0KPj4gKwlpZiAo
cmV0IDwgMCkgew0KPj4gKwkJdjRsMl9kYmcoMSwgZGVidWcsIHNkLA0KPj4gKwkJCSAiJXM6IHVu
c3VwcG9ydGVkIGZvcm1hdCBjb2RlIDB4JXgsIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0IiwNCj4+
ICsJCQkgX19mdW5jX18sIG1idXNfZm10X2NvZGUpOw0KPj4gKwkJcmV0ID0gMDsNCj4+ICsJCW1i
dXNfZm10X2NvZGUgPSBpdDY2MjVfZm9ybWF0c1tyZXRdLm1idXNfZm10X2NvZGU7DQo+PiArCQlm
b3JtYXQtPmZvcm1hdC5jb2RlID0gbWJ1c19mbXRfY29kZTsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlp
ZiAoZm9ybWF0LT53aGljaCA9PSBWNEwyX1NVQkRFVl9GT1JNQVRfVFJZKSB7DQo+PiArCQlzdHJ1
Y3QgdjRsMl9tYnVzX2ZyYW1lZm10ICpmbXQ7DQo+PiArDQo+PiArCQlmbXQgPSB2NGwyX3N1YmRl
dl9zdGF0ZV9nZXRfZm9ybWF0KHNkX3N0YXRlLCBmb3JtYXQtPnBhZCk7DQo+PiArCQlmbXQtPmNv
ZGUgPSBmb3JtYXQtPmZvcm1hdC5jb2RlOw0KPj4gKwkJZm10LT5jb2xvcnNwYWNlID0gZm9ybWF0
X3RvX2NvbG9yc3BhY2UoaXQ2NjI1X2Zvcm1hdHNbcmV0XS5jc2lfZm9ybWF0KTsNCj4+ICsJCWZv
cm1hdC0+Zm9ybWF0LmNvbG9yc3BhY2UgPSBmbXQtPmNvbG9yc3BhY2U7DQo+PiArCQl2NGwyX2Ri
ZygxLCBkZWJ1Zywgc2QsICIlczogdHJ5IGZvcm1hdCBjb2RlID0gMHgleCIsDQo+PiArCQkJIF9f
ZnVuY19fLCBmb3JtYXQtPmZvcm1hdC5jb2RlKTsNCj4+ICsJCXJldHVybiAwOw0KPj4gKwl9DQo+
PiArDQo+PiArCXNjb3BlZF9ndWFyZChtdXRleCwgJml0NjYyNS0+aXQ2NjI1X2xvY2spIHsNCj4+
ICsJCWl0NjYyNS0+Y3NpX2Zvcm1hdCA9IGl0NjYyNV9mb3JtYXRzW3JldF0uY3NpX2Zvcm1hdDsN
Cj4+ICsJCWl0NjYyNS0+bWJ1c19mbXRfY29kZSA9IGZvcm1hdC0+Zm9ybWF0LmNvZGU7DQo+PiAr
CQlpdDY2MjVfZW5hYmxlX3N0cmVhbV9sb2NrZWQoaXQ2NjI1LCBmYWxzZSk7DQo+PiArCQlpdDY2
MjVfc2V0X21pcGlfY29uZmlnX2xvY2tlZChpdDY2MjUsIGl0NjYyNS0+Y3NpX2Zvcm1hdCk7DQo+
PiArCX0NCj4+ICsNCj4+ICsJZm9ybWF0LT5mb3JtYXQuY29sb3JzcGFjZSA9IGZvcm1hdF90b19j
b2xvcnNwYWNlKGl0NjYyNV9mb3JtYXRzW3JldF0uY3NpX2Zvcm1hdCk7DQo+PiArDQo+PiArCXJl
dHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IGl0NjYyNV9nX2VkaWQoc3RydWN0
IHY0bDJfc3ViZGV2ICpzZCwNCj4+ICsJCQkgc3RydWN0IHY0bDJfc3ViZGV2X2VkaWQgKmVkaWQp
DQo+PiArew0KPj4gKwlzdHJ1Y3QgaXQ2NjI1ICppdDY2MjUgPSBzZF90b182NjI1KHNkKTsNCj4+
ICsJaW50IGVycjsNCj4+ICsNCj4+ICsJaWYgKGVkaWQtPnBhZCAhPSAwKQ0KPj4gKwkJcmV0dXJu
IC1FSU5WQUw7DQo+PiArDQo+PiArCW1lbXNldChlZGlkLT5yZXNlcnZlZCwgMCwgc2l6ZW9mKGVk
aWQtPnJlc2VydmVkKSk7DQo+PiArDQo+PiArCWlmIChlZGlkLT5ibG9ja3MgPT0gMCkgew0KPj4g
KwkJZWRpZC0+YmxvY2tzID0gRURJRF9OVU1fQkxPQ0tTX01BWDsNCj4+ICsJCXJldHVybiAwOw0K
Pj4gKwl9DQo+PiArDQo+PiArCWlmIChlZGlkLT5zdGFydF9ibG9jayA+PSBFRElEX05VTV9CTE9D
S1NfTUFYKSB7DQo+PiArCQllZGlkLT5ibG9ja3MgPSAwOw0KPj4gKwkJcmV0dXJuIDA7DQo+PiAr
CX0NCj4+ICsNCj4+ICsJaWYgKGVkaWQtPmJsb2NrcyA+IEVESURfTlVNX0JMT0NLU19NQVggLSBl
ZGlkLT5zdGFydF9ibG9jaykNCj4+ICsJCWVkaWQtPmJsb2NrcyA9IEVESURfTlVNX0JMT0NLU19N
QVggLSBlZGlkLT5zdGFydF9ibG9jazsNCj4+ICsNCj4+ICsJZXJyID0gaXQ2NjI1X3JlYWRfZWRp
ZChpdDY2MjUsIGVkaWQtPmVkaWQsIGVkaWQtPnN0YXJ0X2Jsb2NrLA0KPj4gKwkJCSAgICAgICBl
ZGlkLT5ibG9ja3MpOw0KPg0KPlRoaXMgYWx3YXlzIHJlYWRzIDQgRURJRCBibG9ja3MsIGV2ZW4g
aWYgdGhlIEVESUQgaGFzIGZld2VyIGJsb2Nrcy4NCj4NCj5Zb3Ugc2hvdWxkIGRldGVybWluZSB0
aGUgYWN0dWFsIG51bWJlciBvZiBibG9ja3MuIEVhc2llc3QgaXMganVzdCB0bw0KPnN0b3JlIHRo
YXQgd2hlbiBzX2VkaWQgaXMgY2FsbGVkIHNvIHlvdSBrbm93IGhvdyBtYW55IGJsb2NrcyB0aGUg
RURJRA0KPmhhcy4NCj4NCj4+ICsNCj4+ICsJcmV0dXJuIChlcnIgPCAwKSA/IGVyciA6IDA7DQo+
PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgaXQ2NjI1X3NfZWRpZChzdHJ1Y3QgdjRsMl9zdWJk
ZXYgKnNkLA0KPj4gKwkJCSBzdHJ1Y3QgdjRsMl9zdWJkZXZfZWRpZCAqZWRpZCkNCj4+ICt7DQo+
PiArCXN0cnVjdCBpdDY2MjUgKml0NjYyNSA9IHNkX3RvXzY2MjUoc2QpOw0KPj4gKwlpbnQgZXJy
ID0gMDsNCj4+ICsJdTE2IHBhOw0KPj4gKwlpbnQgcGFfZXJyOw0KPj4gKw0KPj4gKwlpZiAoZWRp
ZC0+cGFkICE9IDApIHsNCj4+ICsJCXY0bDJfZXJyKHNkLCAiaW52YWxpZCBwYWQgJWQiLCBlZGlk
LT5wYWQpOw0KPj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+PiArCX0NCj4+ICsNCj4+ICsJbWVtc2V0
KGVkaWQtPnJlc2VydmVkLCAwLCBzaXplb2YoZWRpZC0+cmVzZXJ2ZWQpKTsNCj4+ICsNCj4+ICsJ
aWYgKGVkaWQtPnN0YXJ0X2Jsb2NrICE9IDApIHsNCj4+ICsJCXY0bDJfZXJyKHNkLCAic3RhcnRf
YmxvY2sgbXVzdCBiZSAwIGZvciBzZXQgZWRpZCIpOw0KPj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+
PiArCX0NCj4+ICsNCj4+ICsJaWYgKGVkaWQtPmJsb2NrcyA+IEVESURfTlVNX0JMT0NLU19NQVgp
IHsNCj4+ICsJCXY0bDJfZXJyKHNkLCAidG9vIG1hbnkgZWRpZCBibG9ja3M6ICVkIiwgZWRpZC0+
YmxvY2tzKTsNCj4+ICsJCWVkaWQtPmJsb2NrcyA9IEVESURfTlVNX0JMT0NLU19NQVg7DQo+PiAr
CQlyZXR1cm4gLUUyQklHOw0KPj4gKwl9DQo+PiArDQo+PiArCWl0NjYyNV9kaXNhYmxlX2hwZChp
dDY2MjUpOw0KPj4gKw0KPj4gKwlpZiAoZWRpZC0+YmxvY2tzID09IDApIHsNCj4+ICsJCWNlY19w
aHlzX2FkZHJfaW52YWxpZGF0ZShpdDY2MjUtPmNlY19hZGFwKTsNCj4+ICsJCXJldHVybiAwOw0K
Pj4gKwl9DQo+PiArDQo+PiArCWVyciA9IGl0NjYyNV93cml0ZV9lZGlkKGl0NjYyNSwgZWRpZC0+
ZWRpZCwNCj4+ICsJCQkJZWRpZC0+c3RhcnRfYmxvY2ssIGVkaWQtPmJsb2Nrcyk7DQo+PiArCWlm
IChlcnIgPCAwKSB7DQo+PiArCQl2NGwyX2VycihzZCwgIndyaXRlIGVkaWQgZmFpbGVkIik7DQo+
PiArCX0gZWxzZSB7DQo+PiArCQlwYSA9IGNlY19nZXRfZWRpZF9waHlzX2FkZHIoZWRpZC0+ZWRp
ZCwgZWRpZC0+YmxvY2tzICogMTI4LCBOVUxMKTsNCj4NCj5UaGlzIGNvZGUgaXMgd3JvbmcuIFVz
ZSB0aGlzOg0KPg0KPiAgICAgICAgcGEgPSB2NGwyX2dldF9lZGlkX3BoeXNfYWRkcihlZGlkLT5l
ZGlkLCBlZGlkLT5ibG9ja3MgKiAxMjgsIE5VTEwpOw0KPiAgICAgICAgZXJyID0gdjRsMl9waHlz
X2FkZHJfdmFsaWRhdGUocGEsICZwYXJlbnRfcGEsIE5VTEwpOw0KPiAgICAgICAgaWYgKGVycikN
Cj4gICAgICAgICAgICAgICAgcmV0dXJuIGVycjsNCj4NCj5UaGlzIHZhbGlkYXRlIGNoZWNrIG11
c3QgYmUgZG9uZSBiZWZvcmUgeW91IHdyaXRlIHRoZSBuZXcgRURJRC4NCj4NCj4JY2VjX3NfcGh5
c19hZGRyKGl0NjYyNS0+Y2VjX2FkYXAsIHBhcmVudF9wYSwgZmFsc2UpOw0KPg0KPkFuZCB0aGlz
IGNlY19zX3BoeXNfYWRkciBjYWxsIHNob3VsZCBiZSBkb25lIGFmdGVyIHRoZSBFRElEIHdhcyB3
cml0dGVuLg0KPg0KPj4gKwkJcGFfZXJyID0gcGEgPT0gQ0VDX1BIWVNfQUREUl9JTlZBTElEID8g
LUVJTlZBTCA6DQo+PiArCQkJIHY0bDJfcGh5c19hZGRyX3ZhbGlkYXRlKHBhLCBOVUxMLCBOVUxM
KTsNCj4+ICsJCWlmIChwYV9lcnIpIHsNCj4+ICsJCQl2NGwyX3dhcm4oc2QsICJpbnZhbGlkIENF
QyBwaHlzaWNhbCBhZGRyZXNzIGluIEVESUQiKTsNCj4+ICsJCQljZWNfcGh5c19hZGRyX2ludmFs
aWRhdGUoaXQ2NjI1LT5jZWNfYWRhcCk7DQo+PiArCQl9IGVsc2Ugew0KPj4gKwkJCWNlY19zX3Bo
eXNfYWRkcihpdDY2MjUtPmNlY19hZGFwLCBwYSwgZmFsc2UpOw0KPj4gKwkJfQ0KPj4gKwl9DQo+
PiArDQo+PiArCWlmIChoZG1pXzV2X3Bvd2VyX3ByZXNlbnQoaXQ2NjI1KSkgew0KPj4gKwkJaXQ2
NjI1X2VuYWJsZV9ocGQoaXQ2NjI1KTsNCj4+ICsJCWl0NjYyNV9zX2N0cmxfZGV0ZWN0X2hkbWlf
NXYoc2QpOw0KPj4gKwl9IGVsc2Ugew0KPj4gKwkJaXQ2NjI1X2VuYWJsZV9hdXRvX2hwZChpdDY2
MjUpOw0KPj4gKwl9DQo+PiArDQo+PiArCXJldHVybiBlcnIgPCAwID8gZXJyIDogMDsNCj4+ICt9
DQo+PiArDQo+PiArI2RlZmluZSBWNEwyX0NJRF9VU0VSX0lUNjYyNV9CQVNFCShWNEwyX0NJRF9V
U0VSX0JBU0UgKyAweDExYjApDQo+DQo+Q3VzdG9tIGRyaXZlciBjb250cm9scyBtdXN0IGJlIHJl
c2VydmVkIGluIGluY2x1ZGUvdWFwaS9saW51eC92NGwyLWNvbnRyb2xzLmguDQo+DQo+PiArI2Rl
ZmluZSBJVDY2MjVfQ0lEX0FVRElPX1NBTVBMSU5HX1JBVEUgIChWNEwyX0NJRF9VU0VSX0lUNjYy
NV9CQVNFICsgMCkNCj4+ICsjZGVmaW5lIElUNjYyNV9DSURfQVVESU9fUFJFU0VOVCAgICAgICAg
KFY0TDJfQ0lEX1VTRVJfSVQ2NjI1X0JBU0UgKyAxKQ0KPj4gKyNkZWZpbmUgSVQ2NjI1X0NJRF9I
RE1JX0lORk8gICAgICAgICAgICAoVjRMMl9DSURfVVNFUl9JVDY2MjVfQkFTRSArIDIpDQo+PiAr
I2RlZmluZSBJVDY2MjVfQ0lEX01JUElfQ09ORklHICAgICAgICAgIChWNEwyX0NJRF9VU0VSX0lU
NjYyNV9CQVNFICsgMykNCj4NCj5UeXBpY2FsbHkgYSBuZXcgcHVibGljIGhlYWRlciBpcyBjcmVh
dGVkIGZvciB0aGUgZHJpdmVyIGNvbnRyb2xzLiBTZWUgZS5nLg0KPmluY2x1ZGUvdWFwaS9saW51
eC9ucGNtLXZpZGVvLmguIFRoZXNlIGNvbnRyb2xzIHNob3VsZCBiZSBkb2N1bWVudGVkIGluDQo+
dGhhdCBoZWFkZXIuDQo+DQo+PiArc3RhdGljIGludCBpdDY2MjVfZ192b2xhdGlsZV9jdHJsKHN0
cnVjdCB2NGwyX2N0cmwgKmN0cmwpDQo+PiArew0KPj4gKwlzdHJ1Y3QgaXQ2NjI1ICppdDY2MjUg
PSBoZGxfdG9fNjYyNShjdHJsLT5oYW5kbGVyKTsNCj4+ICsJc3RydWN0IHY0bDJfc3ViZGV2ICpz
ZCA9ICZpdDY2MjUtPnNkOw0KPj4gKw0KPj4gKwl2NGwyX2RiZygxLCBkZWJ1Zywgc2QsICIlcywg
aWQ9MHgleCwgdmFsPSVkIiwNCj4+ICsJCSBfX2Z1bmNfXywgY3RybC0+aWQsIGN0cmwtPnZhbCk7
DQo+PiArDQo+PiArCXN3aXRjaCAoY3RybC0+aWQpIHsNCj4+ICsJY2FzZSBJVDY2MjVfQ0lEX0hE
TUlfSU5GTzoNCj4+ICsJCXNjb3BlZF9ndWFyZChtdXRleCwgJml0NjYyNS0+aXQ2NjI1X2xvY2sp
IHsNCj4+ICsJCQlzbnByaW50ZihjdHJsLT5wX25ldy5wX2NoYXIsIGN0cmwtPm1heGltdW0sICIl
cyBAICV1SHoiLA0KPj4gKwkJCQkgaXQ2NjI1X2NzaV9mb3JtYXRfbmFtZShpdDY2MjUtPmNzaV9m
b3JtYXQpLA0KPj4gKwkJCQkgZnBzX2Zyb21fYnRfdGltaW5ncygmaXQ2NjI1LT50aW1pbmdzLmJ0
KSk7DQo+DQo+VGhpcyBpc24ndCBhIHZvbGF0aWxlIGNvbnRyb2w6IGluc3RlYWQsIHdoZW4gY3Np
X2Zvcm1hdCBvciB0aW1pbmdzLmJ0IGNoYW5nZSwNCj5qdXN0IHVwZGF0ZSB0aGlzIGNvbnRyb2wg
d2l0aCB0aGUgbmV3IHZhbHVlLg0KPg0KPkJ1dCBJIHRoaW5rIHRoaXMgY29udHJvbCBzaG91bGQg
YmUgZHJvcHBlZCBhcyBkb24ndCBzZWUgYW55IHZhbHVlIGluIGl0Lg0KPg0KPklmIHlvdSBsaWtl
LCB5b3UgY2FuIHJlcG9ydCB0aGlzIGluIGl0NjYyNV9sb2dfc3RhdHVzLCB0aGF0J3MgYSBtb3Jl
IGFwcHJvcHJpYXRlDQo+cGxhY2UuDQo+DQo+PiArCQl9DQo+PiArCQlicmVhazsNCj4+ICsJY2Fz
ZSBJVDY2MjVfQ0lEX01JUElfQ09ORklHOg0KPj4gKwkJY3RybC0+dmFsID0gaXQ2NjI1X3JlYWRf
Ynl0ZShpdDY2MjUsIFJFR19NSVBJX0RBVEFfVFlQRSk7DQo+DQo+SSB3b25kZXIgYWJvdXQgdGhp
cyBjb250cm9sIGFzIHdlbGw6IHZvbGF0aWxlIGNvbnRyb2xzIGFyZSBtZWFudCBmb3IgY29udHJv
bHMgd2hlcmUNCj50aGUgdmFsdWUgaGFzIHRvIGJlIHJlYWQgZnJvbSB0aGUgaGFyZHdhcmUgYW5k
IHRoYXQgdmFsdWUgY2FuIGNoYW5nZSBhdCBhbnkgbW9tZW50Lg0KPg0KPkEgdHlwaWNhbCBleGFt
cGxlIGlzIGlmIEFVVE9HQUlOIGlzIGVuYWJsZWQsIGFuZCB5b3UgcmVhZCB0aGUgY3VycmVudCBH
QUlOIHZhbHVlIGZyb20NCj50aGUgaGFyZHdhcmUuDQo+DQo+VGhlIE1JUElfREFUQV9UWVBFIGlz
LCBJIHRoaW5rLCBjb250cm9sbGVkIGJ5IHRoZSBkcml2ZXIgYW5kIGRvZXMgbm90IHJhbmRvbWx5
IGNoYW5nZS4NCj4NCj4+ICsJCWJyZWFrOw0KPj4gKwlkZWZhdWx0Og0KPj4gKwkJYnJlYWs7DQo+
PiArCX0NCj4+ICsNCj4+ICsJcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQg
aXQ2NjI1X3NfY3RybChzdHJ1Y3QgdjRsMl9jdHJsICpjdHJsKQ0KPj4gK3sNCj4+ICsJc3RydWN0
IGl0NjYyNSAqaXQ2NjI1ID0gaGRsX3RvXzY2MjUoY3RybC0+aGFuZGxlcik7DQo+PiArCXN0cnVj
dCB2NGwyX3N1YmRldiAqc2QgPSAmaXQ2NjI1LT5zZDsNCj4+ICsNCj4+ICsJdjRsMl9kYmcoMSwg
ZGVidWcsIHNkLCAiJXMsIGlkPTB4JXgsIHZhbD0lZCIsDQo+PiArCQkgX19mdW5jX18sIGN0cmwt
PmlkLCBjdHJsLT52YWwpOw0KPj4gKw0KPj4gKwlzd2l0Y2ggKGN0cmwtPmlkKSB7DQo+PiArCWNh
c2UgSVQ2NjI1X0NJRF9NSVBJX0NPTkZJRzoNCj4+ICsJCWl0NjYyNV9zZXRfbWlwaV9jb25maWco
aXQ2NjI1LCBjdHJsLT52YWwpOw0KPg0KPldoeSBpcyB0aGlzIHNldHRhYmxlPyBJc24ndCB0aGlz
IGRlcml2ZWQgZnJvbSB0aGUgbWJ1c19jb2RlPyBUaGlzIGRvZXNuJ3QNCj5sb29rIHJpZ2h0Lg0K
Pg0KPj4gKwkJYnJlYWs7DQo+PiArCWRlZmF1bHQ6DQo+PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4+
ICsJfQ0KPj4gKw0KPj4gKwlyZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGNvbnN0
IHN0cnVjdCB2NGwyX3N1YmRldl9jb3JlX29wcyBpdDY2MjVfY29yZV9vcHMgPSB7DQo+PiArCS5s
b2dfc3RhdHVzID0gaXQ2NjI1X2xvZ19zdGF0dXMsDQo+PiArCS5pbnRlcnJ1cHRfc2VydmljZV9y
b3V0aW5lID0gaXQ2NjI1X2lzciwNCj4+ICsJLnN1YnNjcmliZV9ldmVudCA9IGl0NjYyNV9zdWJz
Y3JpYmVfZXZlbnQsDQo+PiArCS51bnN1YnNjcmliZV9ldmVudCA9IHY0bDJfZXZlbnRfc3ViZGV2
X3Vuc3Vic2NyaWJlLA0KPj4gK307DQo+PiArDQo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwy
X3N1YmRldl92aWRlb19vcHMgaXQ2NjI1X3ZpZGVvX29wcyA9IHsNCj4+ICsJLmdfaW5wdXRfc3Rh
dHVzID0gaXQ2NjI1X2dfaW5wdXRfc3RhdHVzLA0KPj4gKwkuc19zdHJlYW0gPSBpdDY2MjVfc19z
dHJlYW0sDQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfc3ViZGV2
X3BhZF9vcHMgaXQ2NjI1X3BhZF9vcHMgPSB7DQo+PiArCS5lbnVtX21idXNfY29kZSA9IGl0NjYy
NV9lbnVtX21idXNfY29kZSwNCj4+ICsJLnNldF9mbXQgPSBpdDY2MjVfc2V0X2ZtdCwNCj4+ICsJ
LmdldF9mbXQgPSBpdDY2MjVfZ2V0X2ZtdCwNCj4+ICsJLmdldF9lZGlkID0gaXQ2NjI1X2dfZWRp
ZCwNCj4+ICsJLnNldF9lZGlkID0gaXQ2NjI1X3NfZWRpZCwNCj4+ICsJLmVudW1fZHZfdGltaW5n
cyA9IGl0NjYyNV9lbnVtX2R2X3RpbWluZ3MsDQo+PiArCS5kdl90aW1pbmdzX2NhcCA9IGl0NjYy
NV9kdl90aW1pbmdzX2NhcCwNCj4+ICsJLmdldF9tYnVzX2NvbmZpZyA9IGl0NjYyNV9nZXRfbWJ1
c19jb25maWcsDQo+PiArCS5zX2R2X3RpbWluZ3MgPSBpdDY2MjVfcGFkX3NfZHZfdGltaW5ncywN
Cj4+ICsJLmdfZHZfdGltaW5ncyA9IGl0NjYyNV9wYWRfZ19kdl90aW1pbmdzLA0KPj4gKwkucXVl
cnlfZHZfdGltaW5ncyA9IGl0NjYyNV9wYWRfcXVlcnlfZHZfdGltaW5ncywNCj4+ICt9Ow0KPj4g
Kw0KPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdjRsMl9zdWJkZXZfb3BzIGl0NjYyNV9vcHMgPSB7
DQo+PiArCS5jb3JlID0gJml0NjYyNV9jb3JlX29wcywNCj4+ICsJLnZpZGVvID0gJml0NjYyNV92
aWRlb19vcHMsDQo+PiArCS5wYWQgPSAmaXQ2NjI1X3BhZF9vcHMsDQo+PiArfTsNCj4+ICsNCj4+
ICtzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfY3RybF9vcHMgaXQ2NjI1X2N0cmxfb3BzID0gew0K
Pj4gKwkuZ192b2xhdGlsZV9jdHJsID0gaXQ2NjI1X2dfdm9sYXRpbGVfY3RybCwNCj4+ICsJLnNf
Y3RybCA9IGl0NjYyNV9zX2N0cmwsDQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMgY29uc3Qgc3Ry
dWN0IHY0bDJfY3RybF9jb25maWcgaXQ2NjI1X2N0cmxfYXVkaW9fc2FtcGxpbmdfcmF0ZSA9IHsN
Cj4+ICsJLmlkID0gSVQ2NjI1X0NJRF9BVURJT19TQU1QTElOR19SQVRFLA0KPj4gKwkubmFtZSA9
ICJBdWRpbyBzYW1wbGluZyByYXRlIiwNCj4NCj4iQXVkaW8gU2FtcGxpbmcgUmF0ZSINCj4NCj4+
ICsJLnR5cGUgPSBWNEwyX0NUUkxfVFlQRV9JTlRFR0VSLA0KPj4gKwkubWluID0gMCwNCj4+ICsJ
Lm1heCA9IDc2ODAwMCwNCj4+ICsJLnN0ZXAgPSAxLA0KPj4gKwkuZGVmID0gMCwNCj4+ICsJLmZs
YWdzID0gVjRMMl9DVFJMX0ZMQUdfUkVBRF9PTkxZLA0KPj4gK307DQo+PiArDQo+PiArc3RhdGlj
IGNvbnN0IHN0cnVjdCB2NGwyX2N0cmxfY29uZmlnIGl0NjYyNV9jdHJsX2F1ZGlvX3ByZXNlbnQg
PSB7DQo+PiArCS5pZCA9IElUNjYyNV9DSURfQVVESU9fUFJFU0VOVCwNCj4+ICsJLm5hbWUgPSAi
QXVkaW8gcHJlc2VudCIsDQo+DQo+IkF1ZGlvIFByZXNlbnQiDQo+DQo+QnV0IHJhdGhlciB0aGFu
IG1ha2luZyB0aGVzZSB0d28gYXVkaW8gY29udHJvbHMgc3BlY2lmaWMgZm9yIHRoaXMgZHJpdmVy
LCB0aGV5IHNob3VsZA0KPmJlIG1hZGUgc3RhbmRhcmQgY29udHJvbHMuIFRoZSB0YzM1ODc0My5j
IGRyaXZlciBoYXMgdGhlIHNhbWUgY29udHJvbHMuIEFuZCB0aGV5IGFyZQ0KPnR5cGljYWwgZm9y
IEhETUkgZHJpdmVycy4NCj4NCj5UaGV5IGNhbiBiZSBwYXJ0IG9mIHRoZSBEaWdpdGFsIFZpZGVv
IENvbnRyb2xzLg0KDQpGb3IgdGhlIHR3byByZWFkLW9ubHkgYXVkaW8gY29udHJvbHMsIEF1ZGlv
IFNhbXBsaW5nIFJhdGUgYW5kIEF1ZGlvDQpQcmVzZW50LCB3b3VsZCBpdCBiZSBhY2NlcHRhYmxl
IHRvIGtlZXAgdGhlbSBhcyBwcm9wZXJseSByZXNlcnZlZA0KZHJpdmVyLXNwZWNpZmljIGNvbnRy
b2xzLCBmb2xsb3dpbmcgdGhlIHRjMzU4NzQzIG1vZGVsPw0KDQpodHRwczovL2dpdC5rZXJuZWwu
b3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC90b3J2YWxkcy9saW51eC5naXQvdHJlZS9kcml2
ZXJzL21lZGlhL2kyYy90YzM1ODc0My5jI24xOTczDQoNCkkgd2lsbCByZXNlcnZlIFY0TDJfQ0lE
X1VTRVJfSVQ2NjI1X0JBU0UgaW4NCmluY2x1ZGUvdWFwaS9saW51eC92NGwyLWNvbnRyb2xzLmgg
YW5kIGFkZCBhIGRvY3VtZW50ZWQgcHVibGljDQppbmNsdWRlL3VhcGkvbGludXgvaXQ2NjI1Lg0K
DQpIRE1JIEluZm8gYW5kIE1JUEkgQ29uZmlnIHdpbGwgYmUgcmVtb3ZlZC4NCg0KPj4gKwkudHlw
ZSA9IFY0TDJfQ1RSTF9UWVBFX0JPT0xFQU4sDQo+PiArCS5taW4gPSAwLA0KPj4gKwkubWF4ID0g
MSwNCj4+ICsJLnN0ZXAgPSAxLA0KPj4gKwkuZGVmID0gMCwNCj4+ICsJLmZsYWdzID0gVjRMMl9D
VFJMX0ZMQUdfUkVBRF9PTkxZLA0KPj4gK307DQo+PiArDQo+PiArc3RhdGljIGNvbnN0IHN0cnVj
dCB2NGwyX2N0cmxfY29uZmlnIGl0NjYyNV9jdHJsX2dldF9oZG1pX2luZm8gPSB7DQo+PiArCS5v
cHMgPSAmaXQ2NjI1X2N0cmxfb3BzLA0KPj4gKwkuaWQgPSBJVDY2MjVfQ0lEX0hETUlfSU5GTywN
Cj4+ICsJLm5hbWUgPSAiSERNSSBJbmZvIiwNCj4+ICsJLnR5cGUgPSBWNEwyX0NUUkxfVFlQRV9T
VFJJTkcsDQo+PiArCS5tYXggPSAxMjgsDQo+PiArCS5zdGVwID0gMSwNCj4+ICsJLmZsYWdzID0g
VjRMMl9DVFJMX0ZMQUdfUkVBRF9PTkxZIHwgVjRMMl9DVFJMX0ZMQUdfVk9MQVRJTEUsDQo+PiAr
fTsNCj4+ICsNCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfY3RybF9jb25maWcgaXQ2NjI1
X2N0cmxfbWlwaV9jb25maWcgPSB7DQo+PiArCS5vcHMgPSAmaXQ2NjI1X2N0cmxfb3BzLA0KPj4g
KwkuaWQgPSBJVDY2MjVfQ0lEX01JUElfQ09ORklHLA0KPj4gKwkubmFtZSA9ICJNSVBJIGNvbmZp
ZyIsDQo+DQo+Ik1JUEkgQ29uZmlnIg0KPg0KPj4gKwkudHlwZSA9IFY0TDJfQ1RSTF9UWVBFX0lO
VEVHRVIsDQo+PiArCS5taW4gPSAwLA0KPj4gKwkubWF4ID0gMHg3RkZGRkZGRiwNCj4+ICsJLnN0
ZXAgPSAxLA0KPj4gKwkuZGVmID0gMHgzRSwNCj4+ICsJLmZsYWdzID0gVjRMMl9DVFJMX0ZMQUdf
Vk9MQVRJTEUsDQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMgaW50IGl0NjYyNV92NGwyX2luaXRf
Y29udHJvbHMoc3RydWN0IHY0bDJfc3ViZGV2ICpzZCkNCj4+ICt7DQo+PiArCXN0cnVjdCBpdDY2
MjUgKml0NjYyNSA9IHNkX3RvXzY2MjUoc2QpOw0KPj4gKwlzdHJ1Y3QgdjRsMl9jdHJsX2hhbmRs
ZXIgKmhkbCA9ICZpdDY2MjUtPmhkbDsNCj4+ICsNCj4+ICsJdjRsMl9jdHJsX2hhbmRsZXJfaW5p
dChoZGwsIDQpOw0KPj4gKwlpdDY2MjUtPmN0cmxfNXZfZGV0ZWN0ID0NCj4+ICsJCXY0bDJfY3Ry
bF9uZXdfc3RkKGhkbCwgTlVMTCwgVjRMMl9DSURfRFZfUlhfUE9XRVJfUFJFU0VOVCwNCj4+ICsJ
CQkJICAwLCAxLCAwLCAwKTsNCj4+ICsNCj4+ICsJaXQ2NjI1LT5jdHJsX2F1ZGlvX3NhbXBsaW5n
X3JhdGUgPQ0KPj4gKwkJdjRsMl9jdHJsX25ld19jdXN0b20oaGRsLA0KPj4gKwkJCQkgICAgICZp
dDY2MjVfY3RybF9hdWRpb19zYW1wbGluZ19yYXRlLA0KPj4gKwkJCQkgICAgIE5VTEwpOw0KPj4g
KwlpdDY2MjUtPmN0cmxfYXVkaW9fcHJlc2VudCA9DQo+PiArCQl2NGwyX2N0cmxfbmV3X2N1c3Rv
bShoZGwsICZpdDY2MjVfY3RybF9hdWRpb19wcmVzZW50LCBOVUxMKTsNCj4+ICsJaXQ2NjI1LT5j
dHJsX2xpbmtfZnJlcSA9DQo+PiArCQl2NGwyX2N0cmxfbmV3X2ludF9tZW51KGhkbCwgTlVMTCwg
VjRMMl9DSURfTElOS19GUkVRLA0KPj4gKwkJCQkgICAgICAgQVJSQVlfU0laRShpdDY2MjVfbGlu
a19mcmVxKSAtIDEsDQo+PiArCQkJCSAgICAgICAwLCBpdDY2MjVfbGlua19mcmVxKTsNCj4+ICsJ
aXQ2NjI1LT5jdHJsX2dldF9oZG1pX2luZm8gPQ0KPj4gKwkJdjRsMl9jdHJsX25ld19jdXN0b20o
aGRsLCAmaXQ2NjI1X2N0cmxfZ2V0X2hkbWlfaW5mbywgTlVMTCk7DQo+PiArCWl0NjYyNS0+Y3Ry
bF9taXBpX2NvbmZpZyA9DQo+PiArCQl2NGwyX2N0cmxfbmV3X2N1c3RvbShoZGwsICZpdDY2MjVf
Y3RybF9taXBpX2NvbmZpZywgTlVMTCk7DQo+PiArCWlmIChoZGwtPmVycm9yKSB7DQo+PiArCQl2
NGwyX2VycihzZCwgIkZhaWxlZCB0byBpbml0aWFsaXplIGNvbnRyb2xzIik7DQo+PiArCQl2NGwy
X2N0cmxfaGFuZGxlcl9mcmVlKGhkbCk7DQo+PiArCQlyZXR1cm4gaGRsLT5lcnJvcjsNCj4+ICsJ
fQ0KPj4gKw0KPj4gKwlzZC0+Y3RybF9oYW5kbGVyID0gaGRsOw0KPj4gKw0KPj4gKwlyZXR1cm4g
MDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHZvaWQgaXQ2NjI1X3JlZ2R1bXBfcHJpbnQoc3Ry
dWN0IHNlcV9maWxlICpzLCBjb25zdCB1OCAqcmVnX2J1ZikNCj4+ICt7DQo+PiArCWludCBpOw0K
Pj4gKw0KPj4gKwlzZXFfcHV0cyhzLCAiICAgICAweDAwIDB4MDEgMHgwMiAweDAzIDB4MDQgMHgw
NSAweDA2IDB4MDcgMHgwOCAweDA5IDB4MEEgMHgwQiAweDBDIDB4MEQgMHgwRSAweDBGXG4iKTsN
Cj4+ICsNCj4+ICsJZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKSB7DQo+PiArCQlpZiAoaSAlIDE2
ID09IDApDQo+PiArCQkJc2VxX3ByaW50ZihzLCAiWyUwMlhdICIsIGkgJiAweEYwKTsNCj4+ICsJ
CXNlcV9wcmludGYocywgIjB4JTAyWCAiLCByZWdfYnVmW2ldKTsNCj4+ICsJCWlmIChpICUgMTYg
PT0gMTUpDQo+PiArCQkJc2VxX3B1dGMocywgJ1xuJyk7DQo+PiArCX0NCj4+ICt9DQo+PiArDQo+
PiArc3RhdGljIGludCBpdDY2MjVfZWRpZF9yYW1fc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZv
aWQgKmRhdGEpDQo+PiArew0KPj4gKwlzdHJ1Y3QgaXQ2NjI1ICppdDY2MjUgPSBzLT5wcml2YXRl
Ow0KPj4gKwl1OCByZWdfYnVmWzI1Nl07DQo+PiArCWludCByZXQ7DQo+PiArDQo+PiArCXJldCA9
IGl0NjYyNV9yZWFkX2VkaWQoaXQ2NjI1LCByZWdfYnVmLCAwLCAyKTsNCj4+ICsJaWYgKHJldCA8
IDApDQo+PiArCQlyZXR1cm4gcmV0Ow0KPj4gKwlpdDY2MjVfcmVnZHVtcF9wcmludChzLCByZWdf
YnVmKTsNCj4+ICsNCj4+ICsJcmV0dXJuIDA7DQo+PiArfQ0KPj4gK0RFRklORV9TSE9XX0FUVFJJ
QlVURShpdDY2MjVfZWRpZF9yYW0pOw0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgaXQ2NjI1X21pcGlf
cmVnX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKQ0KPj4gK3sNCj4+ICsJc3Ry
dWN0IGl0NjYyNSAqaXQ2NjI1ID0gcy0+cHJpdmF0ZTsNCj4+ICsJdTggcmVnX2J1ZlsyNTZdOw0K
Pj4gKwlpbnQgcmV0Ow0KPj4gKw0KPj4gKwlzY29wZWRfZ3VhcmQobXV0ZXgsICZpdDY2MjUtPml0
NjYyNV9sb2NrKQ0KPj4gKwkJcmV0ID0gaXQ2NjI1X3JlYWRfYnl0ZXMoaXQ2NjI1LCAweDAwLCBy
ZWdfYnVmLCBzaXplb2YocmVnX2J1ZikpOw0KPj4gKwlpZiAocmV0IDwgMCkNCj4+ICsJCXJldHVy
biByZXQ7DQo+PiArCWl0NjYyNV9yZWdkdW1wX3ByaW50KHMsIHJlZ19idWYpOw0KPj4gKw0KPj4g
KwlyZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBpdDY2MjVfbWlwaV9yZWdf
b3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkNCj4+ICt7DQo+PiAr
CXJldHVybiBzaW5nbGVfb3BlbihmaWxlLCBpdDY2MjVfbWlwaV9yZWdfc2hvdywgaW5vZGUtPmlf
cHJpdmF0ZSk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBzc2l6ZV90IGl0NjYyNV9taXBpX3Jl
Z193cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwNCj4+ICsJCQkJICAgICBjb25zdCBjaGFyIF9fdXNl
ciAqdXNlcl9idWYsDQo+PiArCQkJCSAgICAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpDQo+
PiArew0KPj4gKwlzdHJ1Y3QgaXQ2NjI1ICppdDY2MjUgPSBmaWxlX2lub2RlKGZpbGUpLT5pX3By
aXZhdGU7DQo+PiArCWNoYXIgYnVmWzMyXSA9IHt9Ow0KPj4gKwl1bnNpZ25lZCBpbnQgYWRkciwg
dmFsOw0KPj4gKwlzc2l6ZV90IGxlbjsNCj4+ICsJbG9mZl90IHBvcyA9IDA7DQo+PiArDQo+PiAr
CWxlbiA9IHNpbXBsZV93cml0ZV90b19idWZmZXIoYnVmLCBzaXplb2YoYnVmKSAtIDEsICZwb3Ms
IHVzZXJfYnVmLCBjb3VudCk7DQo+PiArCWlmIChsZW4gPCAwKQ0KPj4gKwkJcmV0dXJuIGxlbjsN
Cj4+ICsJYnVmW2xlbl0gPSAnXDAnOw0KPj4gKw0KPj4gKwlpZiAoc3NjYW5mKGJ1ZiwgIiVYICVY
IiwgJmFkZHIsICZ2YWwpICE9IDIpDQo+PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4+ICsNCj4+ICsJ
c2NvcGVkX2d1YXJkKG11dGV4LCAmaXQ2NjI1LT5pdDY2MjVfbG9jaykNCj4+ICsJCWl0NjYyNV93
cml0ZV9ieXRlKGl0NjYyNSwgYWRkciwgdmFsKTsNCj4+ICsNCj4+ICsJcmV0dXJuIGNvdW50Ow0K
Pj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBpdDY2
MjVfbWlwaV9yZWdfZm9wcyA9IHsNCj4+ICsJLm93bmVyID0gVEhJU19NT0RVTEUsDQo+PiArCS5v
cGVuID0gaXQ2NjI1X21pcGlfcmVnX29wZW4sDQo+PiArCS5yZWFkID0gc2VxX3JlYWQsDQo+PiAr
CS53cml0ZSA9IGl0NjYyNV9taXBpX3JlZ193cml0ZSwNCj4+ICsJLmxsc2VlayA9IHNlcV9sc2Vl
aywNCj4+ICsJLnJlbGVhc2UgPSBzaW5nbGVfcmVsZWFzZSwNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0
YXRpYyB2b2lkIGl0NjYyNV9kZWJ1Z2ZzX2luaXQoc3RydWN0IGl0NjYyNSAqaXQ2NjI1LCBzdHJ1
Y3QgaTJjX2NsaWVudCAqY2xpZW50KQ0KPj4gK3sNCj4+ICsJaXQ2NjI1LT5kZWJ1Z2ZzX2RpciA9
IGRlYnVnZnNfY3JlYXRlX2RpcihkZXZfbmFtZSgmY2xpZW50LT5kZXYpLCBOVUxMKTsNCj4+ICsN
Cj4+ICsJZGVidWdmc19jcmVhdGVfZmlsZSgibWlwaV9yZWciLCAwNjAwLCBpdDY2MjUtPmRlYnVn
ZnNfZGlyLCBpdDY2MjUsDQo+PiArCQkJICAgICZpdDY2MjVfbWlwaV9yZWdfZm9wcyk7DQo+PiAr
CWRlYnVnZnNfY3JlYXRlX2ZpbGUoImVkaWRfcmFtIiwgMDQwMCwgaXQ2NjI1LT5kZWJ1Z2ZzX2Rp
ciwgaXQ2NjI1LA0KPj4gKwkJCSAgICAmaXQ2NjI1X2VkaWRfcmFtX2ZvcHMpOw0KPg0KPkR1bXBp
bmcgdGhlIEVESUQgUkFNIHNlZW1zIHBvaW50bGVzcyB0byBtZSwgZ2l2ZW4gdGhhdCB5b3UgY2Fu
IGdldCB0aGUgRURJRCBkYXRhDQo+d2l0aCBhbiBpb2N0bCBjYWxsIGF0IGFueSB0aW1lLiBJcyB0
aGVyZSBhIHBhcnRpY3VsYXIgcmVhc29uIGZvciBhZGRpbmcgdGhpcz8NCj4NCj5XaGF0IHNob3Vs
ZCBiZSBhZGRlZCBoZXJlIGlzIGNvZGUgdG8gZXhwb3J0IEluZm9GcmFtZXMgdG8gZGVidWdmcy4g
U2VhcmNoIGZvcg0KPnY0bDJfZGVidWdmc19pZl9hbGxvYyBpbiBkcml2ZXJzL21lZGlhLg0KPg0K
PkFsbCBuZXcgSERNSSByZWNlaXZlcnMgbXVzdCBzdXBwb3J0IHRoYXQuDQo+DQo+PiArfQ0KPj4g
Kw0KPj4gK3N0YXRpYyB2b2lkIGl0NjYyNV9pbml0X2RhdGEoc3RydWN0IGl0NjYyNSAqaXQ2NjI1
KQ0KPj4gK3sNCj4+ICsJc3RhdGljIHN0cnVjdCB2NGwyX2R2X3RpbWluZ3MgZGVmYXVsdF90aW1p
bmcgPQ0KPj4gKwkJCVY0TDJfRFZfQlRfQ0VBXzE5MjBYMTA4MFA2MDsNCj4+ICsNCj4+ICsJaXQ2
NjI1LT5jc2lfbGFuZXMgPSA0Ow0KPj4gKwlpdDY2MjUtPnBvcnRfbnVtID0gMTsNCj4+ICsJaXQ2
NjI1LT5idXNfdHlwZSA9IFY0TDJfTUJVU19DU0kyX0RQSFk7DQo+PiArCWl0NjYyNS0+Y3NpX2Zv
cm1hdCA9IGl0NjYyNV9mb3JtYXRzWzBdLmNzaV9mb3JtYXQ7DQo+PiArCWl0NjYyNS0+bWJ1c19m
bXRfY29kZSA9IGl0NjYyNV9mb3JtYXRzWzBdLm1idXNfZm10X2NvZGU7DQo+PiArCWl0NjYyNS0+
dGltaW5ncyA9IGRlZmF1bHRfdGltaW5nOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IGl0
NjYyNV9wYXJzZV9lbmRwb2ludChzdHJ1Y3QgaXQ2NjI1ICppdDY2MjUpDQo+PiArew0KPj4gKwlz
dHJ1Y3QgZGV2aWNlICpkZXYgPSBpdDY2MjUtPmRldjsNCj4+ICsJLyoNCj4+ICsJICogUHJlLXNl
dHRpbmcgYnVzX3R5cGUgaGVyZSBtYWtlcyB2NGwyX2Z3bm9kZV9lbmRwb2ludF9hbGxvY19wYXJz
ZSgpDQo+PiArCSAqIHRyZWF0IGl0IGFzIGEgaGFyZCByZXF1aXJlbWVudCBhbmQgcmVqZWN0IGFu
eSBlbmRwb2ludCB3aG9zZSBEVA0KPj4gKwkgKiBidXMtdHlwZSBkaXNhZ3JlZXMsIHNvIHRoaXMg
bXVzdCBzdGF5IFY0TDJfTUJVU19VTktOT1dOIHRvIGxldCBpdA0KPj4gKwkgKiBhdXRvZGV0ZWN0
IEMtUEhZIHZzIEQtUEhZIGZyb20gdGhlIGVuZHBvaW50IGl0c2VsZi4NCj4+ICsJICovDQo+PiAr
CXN0cnVjdCB2NGwyX2Z3bm9kZV9lbmRwb2ludCBlbmRwb2ludCA9IHsgLmJ1c190eXBlID0gVjRM
Ml9NQlVTX1VOS05PV04gfTsNCj4+ICsJc3RydWN0IGRldmljZV9ub2RlICplcCA9IE5VTEw7DQo+
PiArCXVuc2lnbmVkIGludCBtYXhfbGFuZXM7DQo+PiArCXVuc2lnbmVkIGludCBwb3J0Ow0KPj4g
KwlpbnQgcmV0Ow0KPj4gKw0KPj4gKwkvKg0KPj4gKwkgKiBwb3J0QDAgYW5kIHBvcnRAMSBhcmUg
dGhlIHR3byBDU0ktMiBvdXRwdXQgcG9ydHMgTUlQSTAvTUlQSTENCj4+ICsJICogKHBvcnRAMiBp
cyB0aGUgSERNSSBpbnB1dCkuIFRoaXMgY2hpcCBzZXJpZXMgY2FuIGRyaXZlIGJvdGgNCj4+ICsJ
ICogc2ltdWx0YW5lb3VzbHkgaW4gc3BsaXQgb3IgbWlycm9yIG1vZGUsIHNvIHBvcnRfbnVtIGNv
dW50cyBob3cNCj4+ICsJICogbWFueSBvZiBNSVBJMC9NSVBJMSBoYXZlIGFuIGVuZHBvaW50IHdp
cmVkIHVwLiBUaGlzIGRyaXZlciBvbmx5DQo+PiArCSAqIHdpcmVzIHVwIGEgc2luZ2xlIHNvdXJj
ZSBwYWQsIHNvIGxhbmUvYnVzLXR5cGUgY29uZmlndXJhdGlvbiBpcw0KPj4gKwkgKiBwYXJzZWQg
ZnJvbSB3aGljaGV2ZXIgb2YgdGhlIHR3byBpcyBmb3VuZCBmaXJzdC4NCj4+ICsJICovDQo+PiAr
CWl0NjYyNS0+cG9ydF9udW0gPSAwOw0KPj4gKwlmb3IgKHBvcnQgPSAwOyBwb3J0IDwgMjsgcG9y
dCsrKSB7DQo+PiArCQlzdHJ1Y3QgZGV2aWNlX25vZGUgKnBvcnRfZXAgPQ0KPj4gKwkJCW9mX2dy
YXBoX2dldF9lbmRwb2ludF9ieV9yZWdzKGRldi0+b2Zfbm9kZSwgcG9ydCwgLTEpOw0KPj4gKw0K
Pj4gKwkJaWYgKCFwb3J0X2VwKQ0KPj4gKwkJCWNvbnRpbnVlOw0KPj4gKw0KPj4gKwkJaXQ2NjI1
LT5wb3J0X251bSsrOw0KPj4gKwkJaWYgKCFlcCkNCj4+ICsJCQllcCA9IHBvcnRfZXA7DQo+PiAr
CQllbHNlDQo+PiArCQkJb2Zfbm9kZV9wdXQocG9ydF9lcCk7DQo+PiArCX0NCj4+ICsNCj4+ICsJ
aWYgKCFlcCkgew0KPj4gKwkJaXQ2NjI1LT5wb3J0X251bSA9IDE7DQo+PiArCQlkZXZfZGJnKGRl
diwgIm5vIENTSS0yIGVuZHBvaW50IG5vZGUgZm91bmQsIHVzaW5nIGRlZmF1bHQgJXUgQ1NJIGxh
bmVzIiwNCj4+ICsJCQlpdDY2MjUtPmNzaV9sYW5lcyk7DQo+PiArCQlyZXR1cm4gMDsNCj4+ICsJ
fQ0KPj4gKw0KPj4gKwlyZXQgPSB2NGwyX2Z3bm9kZV9lbmRwb2ludF9hbGxvY19wYXJzZShvZl9m
d25vZGVfaGFuZGxlKGVwKSwgJmVuZHBvaW50KTsNCj4+ICsJb2Zfbm9kZV9wdXQoZXApOw0KPj4g
KwlpZiAocmV0KSB7DQo+PiArCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBwYXJzZSBlbmRwb2lu
dDogJWQiLCByZXQpOw0KPj4gKwkJcmV0dXJuIHJldDsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlpZiAo
ZW5kcG9pbnQuYnVzX3R5cGUgIT0gVjRMMl9NQlVTX0NTSTJfRFBIWSAmJg0KPj4gKwkgICAgZW5k
cG9pbnQuYnVzX3R5cGUgIT0gVjRMMl9NQlVTX0NTSTJfQ1BIWSkgew0KPj4gKwkJZGV2X2Vycihk
ZXYsICJ1bnN1cHBvcnRlZCBidXMgdHlwZSAlZCwgZXhwZWN0ZWQgQ1NJLTIgRC1QSFkgb3IgQy1Q
SFkiLA0KPj4gKwkJCWVuZHBvaW50LmJ1c190eXBlKTsNCj4+ICsJCXY0bDJfZndub2RlX2VuZHBv
aW50X2ZyZWUoJmVuZHBvaW50KTsNCj4+ICsJCXJldHVybiAtRUlOVkFMOw0KPj4gKwl9DQo+PiAr
DQo+PiArCWlmIChlbmRwb2ludC5idXNfdHlwZSA9PSBWNEwyX01CVVNfQ1NJMl9DUEhZICYmDQo+
PiArCSAgICBpdDY2MjUtPmNoaXBfdHlwZSAhPSBJVDY2MjZfQ0hJUCkgew0KPj4gKwkJZGV2X2Vy
cihkZXYsICJJVDY2MjUgZG9lcyBub3Qgc3VwcG9ydCBDLVBIWSwgb25seSBJVDY2MjYgZG9lcyIp
Ow0KPj4gKwkJdjRsMl9md25vZGVfZW5kcG9pbnRfZnJlZSgmZW5kcG9pbnQpOw0KPj4gKwkJcmV0
dXJuIC1FSU5WQUw7DQo+PiArCX0NCj4+ICsNCj4+ICsJbWF4X2xhbmVzID0gKGVuZHBvaW50LmJ1
c190eXBlID09IFY0TDJfTUJVU19DU0kyX0NQSFkpID8gMyA6IDQ7DQo+PiArDQo+PiArCWlmIChl
bmRwb2ludC5idXMubWlwaV9jc2kyLm51bV9kYXRhX2xhbmVzID09IDAgfHwNCj4+ICsJICAgIGVu
ZHBvaW50LmJ1cy5taXBpX2NzaTIubnVtX2RhdGFfbGFuZXMgPiBtYXhfbGFuZXMpIHsNCj4+ICsJ
CWRldl9lcnIoZGV2LA0KPj4gKwkJCSJpbnZhbGlkIG51bWJlciBvZiBDU0kgZGF0YSBsYW5lczog
JXUgKG1heCAldSBmb3IgdGhpcyBidXMgdHlwZSkiLA0KPj4gKwkJCWVuZHBvaW50LmJ1cy5taXBp
X2NzaTIubnVtX2RhdGFfbGFuZXMsIG1heF9sYW5lcyk7DQo+PiArCQl2NGwyX2Z3bm9kZV9lbmRw
b2ludF9mcmVlKCZlbmRwb2ludCk7DQo+PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4+ICsJfQ0KPj4g
Kw0KPj4gKwlpdDY2MjUtPmNzaV9sYW5lcyA9IGVuZHBvaW50LmJ1cy5taXBpX2NzaTIubnVtX2Rh
dGFfbGFuZXM7DQo+PiArCWl0NjYyNS0+YnVzX3R5cGUgPSBlbmRwb2ludC5idXNfdHlwZTsNCj4+
ICsJdjRsMl9md25vZGVfZW5kcG9pbnRfZnJlZSgmZW5kcG9pbnQpOw0KPj4gKw0KPj4gKwlyZXR1
cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBpdDY2MjVfcGFyc2VfZHQoc3RydWN0
IGl0NjYyNSAqaXQ2NjI1KQ0KPj4gK3sNCj4+ICsJcmV0dXJuIGl0NjYyNV9wYXJzZV9lbmRwb2lu
dChpdDY2MjUpOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IGl0NjYyNV9pbml0X3Y0bDJf
c3ViZGV2KHN0cnVjdCBpdDY2MjUgKml0NjYyNSkNCj4+ICt7DQo+PiArCXN0cnVjdCB2NGwyX3N1
YmRldiAqc2QgPSAmaXQ2NjI1LT5zZDsNCj4+ICsJaW50IGVycjsNCj4+ICsNCj4+ICsJc2QtPmRl
diA9IGl0NjYyNS0+ZGV2Ow0KPj4gKw0KPj4gKwl2NGwyX2kyY19zdWJkZXZfaW5pdChzZCwgaXQ2
NjI1LT5pMmNfY2xpZW50LCAmaXQ2NjI1X29wcyk7DQo+PiArCXNkLT5mbGFncyB8PSBWNEwyX1NV
QkRFVl9GTF9IQVNfREVWTk9ERSB8IFY0TDJfU1VCREVWX0ZMX0hBU19FVkVOVFM7DQo+PiArCWlm
IChpdDY2MjVfdjRsMl9pbml0X2NvbnRyb2xzKHNkKSkgew0KPj4gKwkJZGV2X2VycihpdDY2MjUt
PmRldiwgIkZhaWxlZCB0byBpbml0aWFsaXplIHY0bDIgY29udHJvbHMiKTsNCj4+ICsJCXJldHVy
biAtRU5PTUVNOw0KPj4gKwl9DQo+PiArDQo+PiArCWl0NjYyNS0+cGFkLmZsYWdzID0gTUVESUFf
UEFEX0ZMX1NPVVJDRTsNCj4+ICsJc2QtPmVudGl0eS5mdW5jdGlvbiA9IE1FRElBX0VOVF9GX0NB
TV9TRU5TT1I7DQo+PiArCWVyciA9IG1lZGlhX2VudGl0eV9wYWRzX2luaXQoJnNkLT5lbnRpdHks
IDEsICZpdDY2MjUtPnBhZCk7DQo+PiArCWlmIChlcnIgPCAwKSB7DQo+PiArCQlkZXZfZXJyKGl0
NjYyNS0+ZGV2LCAiJXMgJWQgZXJyPSVkIiwgX19mdW5jX18sIF9fTElORV9fLCBlcnIpOw0KPj4g
KwkJdjRsMl9jdHJsX2hhbmRsZXJfZnJlZShzZC0+Y3RybF9oYW5kbGVyKTsNCj4+ICsJCXJldHVy
biBlcnI7DQo+PiArCX0NCj4+ICsNCj4+ICsJcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0
YXRpYyBpbnQgaXQ2NjI1X2NoZWNrX2RldmljZShzdHJ1Y3QgaXQ2NjI1ICppdDY2MjUpDQo+PiAr
ew0KPj4gKwlzdGF0aWMgY29uc3QgdTggY2hpcF9pZHNbXVsyXSA9IHsNCj4+ICsJCXsgMHg2Niwg
MHgyNSB9LA0KPj4gKwkJeyAweDY2LCAweDI2IH0sDQo+PiArCX07DQo+PiArCWludCBjaGlwX2lk
MCwgY2hpcF9pZDE7DQo+PiArDQo+PiArCWNoaXBfaWQwID0gaXQ2NjI1X3JlYWRfYnl0ZShpdDY2
MjUsIFJFR19DSElQX0lEXzApOw0KPj4gKwljaGlwX2lkMSA9IGl0NjYyNV9yZWFkX2J5dGUoaXQ2
NjI1LCBSRUdfQ0hJUF9JRF8xKTsNCj4+ICsJaWYgKGNoaXBfaWQwICE9IGNoaXBfaWRzW2l0NjYy
NS0+Y2hpcF90eXBlXVswXSB8fA0KPj4gKwkgICAgY2hpcF9pZDEgIT0gY2hpcF9pZHNbaXQ2NjI1
LT5jaGlwX3R5cGVdWzFdKSB7DQo+PiArCQlkZXZfZXJyKGl0NjYyNS0+ZGV2LA0KPj4gKwkJCSJj
aGlwIElEIG1pc21hdGNoOiBnb3QgMHglMDJ4JTAyeCwgZXhwZWN0ZWQgMHglMDJ4JTAyeCIsDQo+
PiArCQkJY2hpcF9pZDAsIGNoaXBfaWQxLA0KPj4gKwkJCWNoaXBfaWRzW2l0NjYyNS0+Y2hpcF90
eXBlXVswXSwNCj4+ICsJCQljaGlwX2lkc1tpdDY2MjUtPmNoaXBfdHlwZV1bMV0pOw0KPj4gKwkJ
cmV0dXJuIC1FTk9ERVY7DQo+PiArCX0NCj4+ICsNCj4+ICsJcmV0dXJuIDA7DQo+PiArfQ0KPj4g
Kw0KPj4gK3N0YXRpYyBpbnQgaXQ2NjI1X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQp
DQo+PiArew0KPj4gKwlzdHJ1Y3QgaXQ2NjI1ICppdDY2MjU7DQo+PiArCXN0cnVjdCB2NGwyX3N1
YmRldiAqc2Q7DQo+PiArCWludCBlcnI7DQo+PiArDQo+PiArCWlmICghaTJjX2NoZWNrX2Z1bmN0
aW9uYWxpdHkoY2xpZW50LT5hZGFwdGVyLCBJMkNfRlVOQ19TTUJVU19CWVRFX0RBVEEpKQ0KPj4g
KwkJcmV0dXJuIC1FSU87DQo+PiArDQo+PiArCWl0NjYyNSA9IGRldm1fa3phbGxvYygmY2xpZW50
LT5kZXYsIHNpemVvZihzdHJ1Y3QgaXQ2NjI1KSwgR0ZQX0tFUk5FTCk7DQo+PiArCWlmICghaXQ2
NjI1KQ0KPj4gKwkJcmV0dXJuIC1FTk9NRU07DQo+PiArDQo+PiArCWl0NjYyNS0+Y2hpcF90eXBl
ID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTsNCj4+ICsNCj4+ICsJaXQ2
NjI1LT5yZXNldF9ncGlvID0gZGV2bV9ncGlvZF9nZXRfb3B0aW9uYWwoJmNsaWVudC0+ZGV2LCAi
cmVzZXQiLA0KPj4gKwkJCQkJCSAgICAgR1BJT0RfT1VUX0hJR0gpOw0KPj4gKwlpZiAoSVNfRVJS
KGl0NjYyNS0+cmVzZXRfZ3BpbykpDQo+PiArCQlyZXR1cm4gUFRSX0VSUihpdDY2MjUtPnJlc2V0
X2dwaW8pOw0KPj4gKw0KPj4gKwlpZiAoaXQ2NjI1LT5yZXNldF9ncGlvKSB7DQo+PiArCQl1c2xl
ZXBfcmFuZ2UoMTAwMCwgMjAwMCk7DQo+PiArCQlncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAoaXQ2
NjI1LT5yZXNldF9ncGlvLCAwKTsNCj4+ICsJCXVzbGVlcF9yYW5nZSgxMDAwMCwgMTEwMDApOw0K
Pj4gKwl9DQo+PiArDQo+PiArCWVyciA9IGl0NjYyNV9yZWdtYXBfaTJjX2luaXQoY2xpZW50LCBp
dDY2MjUpOw0KPj4gKwlpZiAoZXJyKQ0KPj4gKwkJcmV0dXJuIGVycjsNCj4+ICsNCj4+ICsJZXJy
ID0gaXQ2NjI1X2NoZWNrX2RldmljZShpdDY2MjUpOw0KPj4gKwlpZiAoZXJyKQ0KPj4gKwkJcmV0
dXJuIGVycjsNCj4+ICsNCj4+ICsJaXQ2NjI1X2luaXRfZGF0YShpdDY2MjUpOw0KPj4gKw0KPj4g
KwllcnIgPSBpdDY2MjVfcGFyc2VfZHQoaXQ2NjI1KTsNCj4+ICsJaWYgKGVycikNCj4+ICsJCXJl
dHVybiBlcnI7DQo+PiArDQo+PiArCW11dGV4X2luaXQoJml0NjYyNS0+aXQ2NjI1X2xvY2spOw0K
Pj4gKwlJTklUX0RFTEFZRURfV09SSygmaXQ2NjI1LT5ocGRfZGVsYXllZF93b3JrLCBpdDY2MjVf
aHBkX2RlbGF5ZWRfd29yayk7DQo+PiArCUlOSVRfV09SSygmaXQ2NjI1LT5wb2xsaW5nX3dvcmss
IGl0NjYyNV9wb2xsaW5nX3dvcmspOw0KPj4gKw0KPj4gKwlpZiAoY2xpZW50LT5pcnEpIHsNCj4+
ICsJCWVyciA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEoJmNsaWVudC0+ZGV2LCBjbGllbnQt
PmlycSwNCj4+ICsJCQkJCQlOVUxMLCBpdDY2MjVfaXJxX2hhbmRsZXIsDQo+PiArCQkJCQkJSVJR
Rl9UUklHR0VSX0xPVyB8DQo+PiArCQkJCQkJSVJRRl9PTkVTSE9UIHwNCj4+ICsJCQkJCQlJUlFG
X05PX0FVVE9FTiwNCj4+ICsJCQkJCQkiaXQ2NjI1IiwgaXQ2NjI1KTsNCj4+ICsJCWlmIChlcnIp
DQo+PiArCQkJcmV0dXJuIGVycjsNCj4+ICsJfSBlbHNlIHsNCj4+ICsJCWRldl9pbmZvKGl0NjYy
NS0+ZGV2LCAibm8gSVJRLCBmYWxsaW5nIGJhY2sgdG8gcG9sbGluZyIpOw0KPj4gKwkJdGltZXJf
c2V0dXAoJml0NjYyNS0+dGltZXIsIGl0NjYyNV9pcnFfcG9sbF90aW1lciwgMCk7DQo+PiArCX0N
Cj4+ICsNCj4+ICsJc2QgPSAmaXQ2NjI1LT5zZDsNCj4+ICsJZXJyID0gaXQ2NjI1X2luaXRfdjRs
Ml9zdWJkZXYoaXQ2NjI1KTsNCj4+ICsJaWYgKGVycikNCj4+ICsJCWdvdG8gZXJyX2NsZWFuX3dv
cmtfcXVldWVzOw0KPj4gKw0KPj4gKwllcnIgPSB2NGwyX2N0cmxfaGFuZGxlcl9zZXR1cChzZC0+
Y3RybF9oYW5kbGVyKTsNCj4+ICsJaWYgKGVycikNCj4+ICsJCWdvdG8gZXJyX2NsZWFuX2hkbDsN
Cj4+ICsNCj4+ICsJaXQ2NjI1LT5jZWNfYWRhcCA9IGNlY19hbGxvY2F0ZV9hZGFwdGVyKCZpdDY2
MjVfY2VjX2FkYXBfb3BzLA0KPj4gKwkJCQkJCWl0NjYyNSwgZGV2X25hbWUoaXQ2NjI1LT5kZXYp
LA0KPj4gKwkJCQkJCUNFQ19DQVBfREVGQVVMVFMgfA0KPj4gKwkJCQkJCUNFQ19DQVBfTU9OSVRP
Ul9BTEwgfA0KPj4gKwkJCQkJCUNFQ19DQVBfUEhZU19BRERSLA0KPj4gKwkJCQkJCUNFQ19NQVhf
TE9HX0FERFJTKTsNCj4+ICsJaWYgKElTX0VSUihpdDY2MjUtPmNlY19hZGFwKSkgew0KPj4gKwkJ
ZXJyID0gUFRSX0VSUihpdDY2MjUtPmNlY19hZGFwKTsNCj4+ICsJCWRldl9lcnIoaXQ2NjI1LT5k
ZXYsICIlcyAlZCIsIF9fZnVuY19fLCBfX0xJTkVfXyk7DQo+PiArCQlnb3RvIGVycl9jbGVhbl9o
ZGw7DQo+PiArCX0NCj4+ICsNCj4+ICsJZXJyID0gY2VjX3JlZ2lzdGVyX2FkYXB0ZXIoaXQ2NjI1
LT5jZWNfYWRhcCwgJmNsaWVudC0+ZGV2KTsNCj4+ICsJaWYgKGVyciA8IDApIHsNCj4+ICsJCWRl
dl9lcnIoaXQ2NjI1LT5kZXYsICIlczogZmFpbGVkIHRvIHJlZ2lzdGVyIHRoZSBjZWMgZGV2aWNl
IiwgX19mdW5jX18pOw0KPj4gKwkJY2VjX2RlbGV0ZV9hZGFwdGVyKGl0NjYyNS0+Y2VjX2FkYXAp
Ow0KPj4gKwkJaXQ2NjI1LT5jZWNfYWRhcCA9IE5VTEw7DQo+PiArCQlnb3RvIGVycl9jbGVhbl9o
ZGw7DQo+PiArCX0NCj4+ICsNCj4+ICsJaXQ2NjI1X2RlYnVnZnNfaW5pdChpdDY2MjUsIGNsaWVu
dCk7DQo+PiArDQo+PiArCWl0NjYyNV9pbml0aWFsX3NldHVwKGl0NjYyNSk7DQo+PiArCWl0NjYy
NV92NGwyX3NkX2N0cmxfdXBkYXRlKHNkKTsNCj4+ICsNCj4+ICsJZXJyID0gdjRsMl9hc3luY19y
ZWdpc3Rlcl9zdWJkZXYoc2QpOw0KPj4gKwlpZiAoZXJyIDwgMCkgew0KPj4gKwkJZGV2X2Vycihp
dDY2MjUtPmRldiwgIiVzICVkIGVycj0lZCIsIF9fZnVuY19fLCBfX0xJTkVfXywgZXJyKTsNCj4+
ICsJCWdvdG8gZXJyX2NsZWFuX2RlYnVnZnM7DQo+PiArCX0NCj4+ICsNCj4+ICsJaWYgKGNsaWVu
dC0+aXJxKQ0KPj4gKwkJZW5hYmxlX2lycShjbGllbnQtPmlycSk7DQo+PiArCWVsc2UNCj4+ICsJ
CW1vZF90aW1lcigmaXQ2NjI1LT50aW1lciwgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoUE9M
TF9JTlRFUlZBTF9NUykpOw0KPj4gKw0KPj4gKwlyZXR1cm4gMDsNCj4+ICsNCj4+ICtlcnJfY2xl
YW5fZGVidWdmczoNCj4+ICsJZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKGl0NjYyNS0+ZGVidWdm
c19kaXIpOw0KPj4gKwljZWNfdW5yZWdpc3Rlcl9hZGFwdGVyKGl0NjYyNS0+Y2VjX2FkYXApOw0K
Pj4gK2Vycl9jbGVhbl9oZGw6DQo+PiArCW1lZGlhX2VudGl0eV9jbGVhbnVwKCZzZC0+ZW50aXR5
KTsNCj4+ICsJdjRsMl9jdHJsX2hhbmRsZXJfZnJlZSgmaXQ2NjI1LT5oZGwpOw0KPj4gKw0KPj4g
K2Vycl9jbGVhbl93b3JrX3F1ZXVlczoNCj4+ICsJaWYgKCFjbGllbnQtPmlycSkNCj4+ICsJCXRp
bWVyX3NodXRkb3duX3N5bmMoJml0NjYyNS0+dGltZXIpOw0KPj4gKwljYW5jZWxfd29ya19zeW5j
KCZpdDY2MjUtPnBvbGxpbmdfd29yayk7DQo+PiArCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygm
aXQ2NjI1LT5ocGRfZGVsYXllZF93b3JrKTsNCj4+ICsJbXV0ZXhfZGVzdHJveSgmaXQ2NjI1LT5p
dDY2MjVfbG9jayk7DQo+PiArCXJldHVybiBlcnI7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2
b2lkIGl0NjYyNV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkNCj4+ICt7DQo+PiAr
CXN0cnVjdCB2NGwyX3N1YmRldiAqc2QgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsNCj4+
ICsJc3RydWN0IGl0NjYyNSAqaXQ2NjI1ID0gc2RfdG9fNjYyNShzZCk7DQo+PiArDQo+PiArCXY0
bDJfYXN5bmNfdW5yZWdpc3Rlcl9zdWJkZXYoc2QpOw0KPj4gKwl2NGwyX2RldmljZV91bnJlZ2lz
dGVyX3N1YmRldihzZCk7DQo+PiArDQo+PiArCWlmIChjbGllbnQtPmlycSkNCj4+ICsJCWRpc2Fi
bGVfaXJxKGNsaWVudC0+aXJxKTsNCj4+ICsJZWxzZQ0KPj4gKwkJdGltZXJfc2h1dGRvd25fc3lu
YygmaXQ2NjI1LT50aW1lcik7DQo+PiArDQo+PiArCWNhbmNlbF93b3JrX3N5bmMoJml0NjYyNS0+
cG9sbGluZ193b3JrKTsNCj4+ICsJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZpdDY2MjUtPmhw
ZF9kZWxheWVkX3dvcmspOw0KPj4gKwlkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoaXQ2NjI1LT5k
ZWJ1Z2ZzX2Rpcik7DQo+PiArCWNlY191bnJlZ2lzdGVyX2FkYXB0ZXIoaXQ2NjI1LT5jZWNfYWRh
cCk7DQo+PiArCW11dGV4X2Rlc3Ryb3koJml0NjYyNS0+aXQ2NjI1X2xvY2spOw0KPj4gKwltZWRp
YV9lbnRpdHlfY2xlYW51cCgmc2QtPmVudGl0eSk7DQo+PiArCXY0bDJfY3RybF9oYW5kbGVyX2Zy
ZWUoJml0NjYyNS0+aGRsKTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBp
MmNfZGV2aWNlX2lkIGl0NjYyNV9pZFtdID0gew0KPj4gKwl7IC5uYW1lID0gIml0NjYyNSIsIC5k
cml2ZXJfZGF0YSA9IElUNjYyNV9DSElQIH0sDQo+PiArCXsgLm5hbWUgPSAiaXQ2NjI2IiwgLmRy
aXZlcl9kYXRhID0gSVQ2NjI2X0NISVAgfSwNCj4+ICsJe30NCj4+ICt9Ow0KPj4gK01PRFVMRV9E
RVZJQ0VfVEFCTEUoaTJjLCBpdDY2MjVfaWQpOw0KPj4gKw0KPj4gK3N0YXRpYyBjb25zdCBzdHJ1
Y3Qgb2ZfZGV2aWNlX2lkIGl0NjYyNV9vZl9tYXRjaFtdID0gew0KPj4gKwl7IC5jb21wYXRpYmxl
ID0gIml0ZSxpdDY2MjUiLCAuZGF0YSA9ICh2b2lkICopSVQ2NjI1X0NISVAgfSwNCj4+ICsJeyAu
Y29tcGF0aWJsZSA9ICJpdGUsaXQ2NjI2IiwgLmRhdGEgPSAodm9pZCAqKUlUNjYyNl9DSElQIH0s
DQo+PiArCXt9LA0KPj4gK307DQo+PiArTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgaXQ2NjI1X29m
X21hdGNoKTsNCj4+ICsNCj4+ICtzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgaXQ2NjI1X2RyaXZl
ciA9IHsNCj4+ICsJLmRyaXZlciA9IHsNCj4+ICsJCS5uYW1lID0gIml0NjYyNSIsDQo+PiArCQku
b2ZfbWF0Y2hfdGFibGUgPSBpdDY2MjVfb2ZfbWF0Y2gsDQo+PiArCX0sDQo+PiArCS5wcm9iZSA9
IGl0NjYyNV9wcm9iZSwNCj4+ICsJLnJlbW92ZSA9IGl0NjYyNV9yZW1vdmUsDQo+PiArCS5pZF90
YWJsZSA9IGl0NjYyNV9pZCwNCj4+ICt9Ow0KPj4gK21vZHVsZV9pMmNfZHJpdmVyKGl0NjYyNV9k
cml2ZXIpOw0KPj4gKw0KPj4gK01PRFVMRV9ERVNDUklQVElPTigiaVRFIGl0NjYyNS9pdDY2MjYg
SERNSSB0byBNSVBJIENTSSBicmlkZ2UgZHJpdmVyIik7DQo+PiArTU9EVUxFX0FVVEhPUigiSGVy
bWVzIFd1IDxIZXJtZXMud3VAaXRlLmNvbS50dz4iKTsNCj4+ICtNT0RVTEVfTElDRU5TRSgiR1BM
Iik7DQo+PiANCj4NCj5SZWdhcmRzLA0KPg0KPglIYW5zDQo+DQpUaGFua3MsDQpIZXJtZXMNCg==