T24gV2VkbmVzZGF5LCBKdW5lIDE4LCAyMDE0IDI6NDY6MDkgcG0gRWR3YXJkIFRvbWFzeiBOYXBp
ZXJhxYJhIHdyb3RlOgo+IE9uIDA2MThUMTMwMywgSm9obiBCYWxkd2luIHdyb3RlOgo+ID4gT24g
V2VkbmVzZGF5LCBKdW5lIDE4LCAyMDE0IDEyOjEzOjE1IHBtIEVkd2FyZCBUb21hc3ogTmFwaWVy
YcWCYSB3cm90ZToKPiA+ID4gT24gMDYxOFQwOTQ3LCBKb2huIEJhbGR3aW4gd3JvdGU6Cj4gPiA+
ID4gT24gTW9uZGF5LCBKdW5lIDE2LCAyMDE0IDM6MjE6NTUgcG0gRWR3YXJkIFRvbWFzeiBOYXBp
ZXJhxYJhIHdyb3RlOgo+ID4gPiA+ID4gSGkuICBQYXRjaCBiZWxvdyBzaG91bGQgZml4IGEgcHJv
YmxlbSB3aGVyZSBVU0Igc3RvcHMgd29ya2luZyBhZnRlcgo+ID4gPiA+ID4gX3NlY29uZF8gc3Vz
cGVuZC9yZXN1bWUsIHdoaWNoIGhhcHBlbnMgb24gdmFyaW91cyBUaGlua1BhZCBtb2RlbHMuCj4g
PiA+ID4gPiBQbGVhc2UgdGVzdCwgYW5kIHJlcG9ydCBib3RoIHN1Y2Nlc3Mgc3RvcmllcyBhbmQg
ZmFpbHVyZXMuICBJZiBub3RoaW5nCj4gPiA+ID4gPiBjb21lcyB1cCwgSSdsbCBjb21taXQgaXQg
aW4gYSB3ZWVrIG9yIHNvLgo+ID4gPiA+IAo+ID4gPiA+IEdvb2QgZmluZC4gIEhhdmUgeW91IHRo
b3VnaHQgYWJvdXQgYSBtb3JlIGdlbmVyaWMgZml4IGZvciB0aGlzIHdoZXJlaW4geW91IAo+ID4g
PiA+IHRyYWNrIHBvd2VyIHJlc291cmNlcyBhbmQgZmxpcCB0aGVtIG9uIGR1cmluZyByZXN1bWUg
aW4gQUNQSSBiZWZvcmUgZG9pbmcKPiA+ID4gPiBERVZJQ0VfUkVTVU1FKCkgb24gdGhlIHJvb3Qg
YnVzPwo+ID4gPiAKPiA+ID4gVGhpbmcgaXMsIGFmdGVyIHJlc3VtZSB0aGlzIGRldmljZSBjbGFp
bXMgdG8gYmUgb24gYWxyZWFkeS4gIFRoZSBmb2xsb3dpbmcKPiA+ID4gc2ltcGxlIGhhY2sgd2Fz
IGVub3VnaCB0byBtYWtlIGl0IHdvcms6Cj4gPiAKPiA+IEFoaCwgSSB0aGluayBJIHNlZS4gIFRy
eSB0aGlzIGluc3RlYWQ6Cj4gPiAKPiA+IEluZGV4OiBzeXMvZGV2L2FjcGljYS9hY3BpX3Bvd2Vy
cmVzLmMKPiA+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KPiA+IC0tLSBhY3BpX3Bvd2VycmVzLmMJKHJldmlzaW9uIDI2
NzU1MCkKPiA+ICsrKyBhY3BpX3Bvd2VycmVzLmMJKHdvcmtpbmcgY29weSkKPiA+IEBAIC02NDUs
NyArNjQ1LDcgQEAgYWNwaV9wd3Jfc3dpdGNoX3Bvd2VyKHZvaWQpCj4gPiAgCQkJICAgICAgYWNw
aV9uYW1lKHJwLT5hcF9yZXNvdXJjZSksIHN0YXR1cykpOwo+ID4gIAkgICAgLyogWFhYIGlzIHRo
aXMgY29ycmVjdD8gIEFsd2F5cyBzd2l0Y2ggaWYgaW4gZG91YnQ/ICovCj4gPiAgCSAgICBjb250
aW51ZTsKPiA+IC0JfSBlbHNlIGlmIChycC0+YXBfc3RhdGUgPT0gQUNQSV9QV1JfVU5LKQo+ID4g
Kwl9IGVsc2UKPiA+ICAJICAgIHJwLT5hcF9zdGF0ZSA9IGN1cjsKPiA+ICAKPiA+ICAJLyoKPiA+
IEBAIC02ODksNyArNjg5LDcgQEAgYWNwaV9wd3Jfc3dpdGNoX3Bvd2VyKHZvaWQpCj4gPiAgCQkJ
ICAgICAgYWNwaV9uYW1lKHJwLT5hcF9yZXNvdXJjZSksIHN0YXR1cykpOwo+ID4gIAkgICAgLyog
WFhYIGlzIHRoaXMgY29ycmVjdD8gIEFsd2F5cyBzd2l0Y2ggaWYgaW4gZG91YnQ/ICovCj4gPiAg
CSAgICBjb250aW51ZTsKPiA+IC0JfSBlbHNlIGlmIChycC0+YXBfc3RhdGUgPT0gQUNQSV9QV1Jf
VU5LKQo+ID4gKwl9IGVsc2UKPiA+ICAJICAgIHJwLT5hcF9zdGF0ZSA9IGN1cjsKPiA+ICAKPiA+
ICAJLyoKPiA+IAo+ID4gKFdlIHdlcmUgaWdub3Jpbmcgd2hhdCBfU1RBIHRvbGQgdXMgYW5kIGJl
bGlldmVkIGl0IHdhcyBPTiBiZWNhdXNlIHdlIGhhZAo+ID4gIGNhY2hlZCB0aGF0IHN0YXRlIHBy
ZXZpb3VzbHkuKQo+IAo+IFdvcmtzIQoKSG1tbS4gIElmIHdlIGdvIHRoaXMgcm91dGUsIGFwX3N0
YXRlIGlzIGFjdHVhbGx5IHVzZWxlc3MgYW5kIHNob3VsZCBqdXN0IGJlCnJlbW92ZWQuICBIZXJl
IGlzIGFuIHVwZGF0ZWQgdmVyc2lvbiB0aGF0IGRvZXMgdGhhdC4gIElmIHRoaXMgd29ya3MgYXMg
d2VsbAp0aGVuIHRoaXMgaXMgcHJvYmFibHkgYSBjb21taXQgY2FuZGlkYXRlLgoKSW5kZXg6IGFj
cGlfcG93ZXJyZXMuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBhY3BpX3Bvd2VycmVzLmMJKHJldmlzaW9uIDI2
NzU1MCkKKysrIGFjcGlfcG93ZXJyZXMuYwkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNiBA
QCBBQ1BJX01PRFVMRV9OQU1FKCJQT1dFUlJFUyIpCiAvKiBSZXR1cm4gdmFsdWVzIGZyb20gX1NU
QSBvbiBhIHBvd2VyIHJlc291cmNlICovCiAjZGVmaW5lIEFDUElfUFdSX09GRgkwCiAjZGVmaW5l
IEFDUElfUFdSX09OCTEKLSNkZWZpbmUgQUNQSV9QV1JfVU5LCSgtMSkKIAogLyogQSByZWxhdGlv
bnNoaXAgYmV0d2VlbiBhIHBvd2VyIHJlc291cmNlIGFuZCBhIGNvbnN1bWVyLiAqLwogc3RydWN0
IGFjcGlfcG93ZXJyZWZlcmVuY2UgewpAQCAtOTAsNyArODksNiBAQCBzdHJ1Y3QgYWNwaV9wb3dl
cnJlc291cmNlIHsKICAgICBBQ1BJX0hBTkRMRQkJCQlhcF9yZXNvdXJjZTsKICAgICBVSU5UNjQJ
CQkJYXBfc3lzdGVtbGV2ZWw7CiAgICAgVUlOVDY0CQkJCWFwX29yZGVyOwotICAgIGludAkJCQkJ
YXBfc3RhdGU7CiB9OwogCiBzdGF0aWMgVEFJTFFfSEVBRChhY3BpX3Bvd2VycmVzb3VyY2VfbGlz
dCwgYWNwaV9wb3dlcnJlc291cmNlKQpAQCAtMTczLDcgKzE3MSw2IEBAIGFjcGlfcHdyX3JlZ2lz
dGVyX3Jlc291cmNlKEFDUElfSEFORExFIHJlcykKICAgICB9CiAgICAgcnAtPmFwX3N5c3RlbWxl
dmVsID0gb2JqLT5Qb3dlclJlc291cmNlLlN5c3RlbUxldmVsOwogICAgIHJwLT5hcF9vcmRlciA9
IG9iai0+UG93ZXJSZXNvdXJjZS5SZXNvdXJjZU9yZGVyOwotICAgIHJwLT5hcF9zdGF0ZSA9IEFD
UElfUFdSX1VOSzsKICAgICAKICAgICAvKiBTb3J0IHRoZSByZXNvdXJjZSBpbnRvIHRoZSBsaXN0
ICovCiAgICAgc3RhdHVzID0gQUVfT0s7CkBAIC02MzgsNyArNjM1LDYgQEAgYWNwaV9wd3Jfc3dp
dGNoX3Bvd2VyKHZvaWQpCiAJICAgIGNvbnRpbnVlOwogCX0KIAotCS8qIFdlIGNvdWxkIGNhY2hl
IHRoaXMgaWYgd2UgdHJ1c3RlZCBpdCBub3QgdG8gY2hhbmdlIHVuZGVyIHVzICovCiAJc3RhdHVz
ID0gYWNwaV9HZXRJbnRlZ2VyKHJwLT5hcF9yZXNvdXJjZSwgIl9TVEEiLCAmY3VyKTsKIAlpZiAo
QUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKIAkgICAgQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9P
QkpFQ1RTLCAiY2FuJ3QgZ2V0IHN0YXR1cyBvZiAlcyAtICVkXG4iLApAQCAtNjQ1LDggKzY0MSw3
IEBAIGFjcGlfcHdyX3N3aXRjaF9wb3dlcih2b2lkKQogCQkJICAgICAgYWNwaV9uYW1lKHJwLT5h
cF9yZXNvdXJjZSksIHN0YXR1cykpOwogCSAgICAvKiBYWFggaXMgdGhpcyBjb3JyZWN0PyAgQWx3
YXlzIHN3aXRjaCBpZiBpbiBkb3VidD8gKi8KIAkgICAgY29udGludWU7Ci0JfSBlbHNlIGlmIChy
cC0+YXBfc3RhdGUgPT0gQUNQSV9QV1JfVU5LKQotCSAgICBycC0+YXBfc3RhdGUgPSBjdXI7CisJ
fQogCiAJLyoKIAkgKiBTd2l0Y2ggaWYgcmVxdWlyZWQuICBOb3RlIHRoYXQgd2UgaWdub3JlIHRo
ZSByZXN1bHQgb2YgdGhlIHN3aXRjaApAQCAtNjUzLDcgKzY0OCw3IEBAIGFjcGlfcHdyX3N3aXRj
aF9wb3dlcih2b2lkKQogCSAqIGVmZm9ydDsgd2UgZG9uJ3Qga25vdyB3aGF0IHRvIGRvIGlmIGl0
IGZhaWxzLCBzbyBjaGVja2luZyB3b3VsZG4ndAogCSAqIGhlbHAgbXVjaC4KIAkgKi8KLQlpZiAo
cnAtPmFwX3N0YXRlICE9IEFDUElfUFdSX09OKSB7CisJaWYgKGN1ciAhPSBBQ1BJX1BXUl9PTikg
ewogCSAgICBzdGF0dXMgPSBBY3BpRXZhbHVhdGVPYmplY3QocnAtPmFwX3Jlc291cmNlLCAiX09O
IiwgTlVMTCwgTlVMTCk7CiAJICAgIGlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewogCQlBQ1BJ
X0RFQlVHX1BSSU5UKChBQ1BJX0RCX09CSkVDVFMsCkBAIC02NjEsNyArNjU2LDYgQEAgYWNwaV9w
d3Jfc3dpdGNoX3Bvd2VyKHZvaWQpCiAJCQkJIGFjcGlfbmFtZShycC0+YXBfcmVzb3VyY2UpLAog
CQkJCSBBY3BpRm9ybWF0RXhjZXB0aW9uKHN0YXR1cykpKTsKIAkgICAgfSBlbHNlIHsKLQkJcnAt
PmFwX3N0YXRlID0gQUNQSV9QV1JfT047CiAJCUFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfT0JK
RUNUUywgInN3aXRjaGVkICVzIG9uXG4iLAogCQkJCSBhY3BpX25hbWUocnAtPmFwX3Jlc291cmNl
KSkpOwogCSAgICB9CkBAIC02ODIsNyArNjc2LDYgQEAgYWNwaV9wd3Jfc3dpdGNoX3Bvd2VyKHZv
aWQpCiAJICAgIGNvbnRpbnVlOwogCX0KIAotCS8qIFdlIGNvdWxkIGNhY2hlIHRoaXMgaWYgd2Ug
dHJ1c3RlZCBpdCBub3QgdG8gY2hhbmdlIHVuZGVyIHVzICovCiAJc3RhdHVzID0gYWNwaV9HZXRJ
bnRlZ2VyKHJwLT5hcF9yZXNvdXJjZSwgIl9TVEEiLCAmY3VyKTsKIAlpZiAoQUNQSV9GQUlMVVJF
KHN0YXR1cykpIHsKIAkgICAgQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9PQkpFQ1RTLCAiY2Fu
J3QgZ2V0IHN0YXR1cyBvZiAlcyAtICVkXG4iLApAQCAtNjg5LDggKzY4Miw3IEBAIGFjcGlfcHdy
X3N3aXRjaF9wb3dlcih2b2lkKQogCQkJICAgICAgYWNwaV9uYW1lKHJwLT5hcF9yZXNvdXJjZSks
IHN0YXR1cykpOwogCSAgICAvKiBYWFggaXMgdGhpcyBjb3JyZWN0PyAgQWx3YXlzIHN3aXRjaCBp
ZiBpbiBkb3VidD8gKi8KIAkgICAgY29udGludWU7Ci0JfSBlbHNlIGlmIChycC0+YXBfc3RhdGUg
PT0gQUNQSV9QV1JfVU5LKQotCSAgICBycC0+YXBfc3RhdGUgPSBjdXI7CisJfQogCiAJLyoKIAkg
KiBTd2l0Y2ggaWYgcmVxdWlyZWQuICBOb3RlIHRoYXQgd2UgaWdub3JlIHRoZSByZXN1bHQgb2Yg
dGhlIHN3aXRjaApAQCAtNjk3LDcgKzY4OSw3IEBAIGFjcGlfcHdyX3N3aXRjaF9wb3dlcih2b2lk
KQogCSAqIGVmZm9ydDsgd2UgZG9uJ3Qga25vdyB3aGF0IHRvIGRvIGlmIGl0IGZhaWxzLCBzbyBj
aGVja2luZyB3b3VsZG4ndAogCSAqIGhlbHAgbXVjaC4KIAkgKi8KLQlpZiAocnAtPmFwX3N0YXRl
ICE9IEFDUElfUFdSX09GRikgeworCWlmIChjdXIgIT0gQUNQSV9QV1JfT0ZGKSB7CiAJICAgIHN0
YXR1cyA9IEFjcGlFdmFsdWF0ZU9iamVjdChycC0+YXBfcmVzb3VyY2UsICJfT0ZGIiwgTlVMTCwg
TlVMTCk7CiAJICAgIGlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkgewogCQlBQ1BJX0RFQlVHX1BS
SU5UKChBQ1BJX0RCX09CSkVDVFMsCkBAIC03MDUsNyArNjk3LDYgQEAgYWNwaV9wd3Jfc3dpdGNo
X3Bvd2VyKHZvaWQpCiAJCQkJIGFjcGlfbmFtZShycC0+YXBfcmVzb3VyY2UpLAogCQkJCSBBY3Bp
Rm9ybWF0RXhjZXB0aW9uKHN0YXR1cykpKTsKIAkgICAgfSBlbHNlIHsKLQkJcnAtPmFwX3N0YXRl
ID0gQUNQSV9QV1JfT0ZGOwogCQlBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX09CSkVDVFMsICJz
d2l0Y2hlZCAlcyBvZmZcbiIsCiAJCQkJIGFjcGlfbmFtZShycC0+YXBfcmVzb3VyY2UpKSk7CiAJ
ICAgIH0KCgotLSAKSm9obiBCYWxkd2luCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCmZyZWVic2QtY3VycmVudEBmcmVlYnNkLm9yZyBtYWlsaW5nIGxpc3QK
aHR0cDovL2xpc3RzLmZyZWVic2Qub3JnL21haWxtYW4vbGlzdGluZm8vZnJlZWJzZC1jdXJyZW50
ClRvIHVuc3Vic2NyaWJlLCBzZW5kIGFueSBtYWlsIHRvICJmcmVlYnNkLWN1cnJlbnQtdW5zdWJz
Y3JpYmVAZnJlZWJzZC5vcmci