Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 23 Oct 2010 21:05:43 -0700
From:      Garrett Cooper <gcooper@FreeBSD.org>
To:        =?ISO-8859-1?Q?Dag=2DErling_Sm=F8rgrav?= <des@des.no>
Cc:        freebsd-hackers@freebsd.org, Ivan Voras <ivoras@freebsd.org>
Subject:   Re: Why is TUNABLE_INT discouraged?
Message-ID:  <AANLkTim-XVhm-RLUo7rwwJ%2B3=tCHMKNsk9DbtrSezxHo@mail.gmail.com>
In-Reply-To: <8662wz4twb.fsf@ds4.des.no>
References:  <AANLkTinKaiGFhKRgqQ%2BFjm=02VfWCxULe0a68y-PkJx6@mail.gmail.com> <86fwyq8rsc.fsf@ds4.des.no> <i3kbis$73l$1@dough.gmane.org> <86d3tujh72.fsf@ds4.des.no> <AANLkTi=puD%2B-WeZ%2BFGdtZtw1v%2BNnGD_htwNa%2BEn9fcML@mail.gmail.com> <864of680wv.fsf@ds4.des.no> <AANLkTinraF50O%2Bcp_h1m6TODnoz_7R3WXfjTanh-86mn@mail.gmail.com> <AANLkTikU6fLzWL-n6fCtvaTsXWGis7ydKM1qJaV=WRJ%2B@mail.gmail.com> <8662zkurx9.fsf@ds4.des.no> <AANLkTimbkTQiNgYCYFnTXMpRe9koJGrq1%2BYoq5-fVmFD@mail.gmail.com> <8662zg586z.fsf@ds4.des.no> <AANLkTim1E94qWq1TF1111-sYo2dj35Y-XnPq3DT4kpoL@mail.gmail.com> <AANLkTik-zV67LYAbwStXPJ5YoK2j-rDwvyEAc3H5nGD0@mail.gmail.com> <8662wz4twb.fsf@ds4.des.no>

next in thread | previous in thread | raw e-mail | index | archive | help
--000e0cdfc900503d80049354fd59
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

2010/10/18 Dag-Erling Sm=F8rgrav <des@des.no>:
> Garrett Cooper <gcooper@FreeBSD.org> writes:
>> PS I added uquad_t for consistency in the APIs, even though quad_t was
>> deprecated, but I didn't bump __FreeBSD_version__ -- wasn't sure if I
>> should have done that).
>
> You should bump __FreeBSD_version__ anyway so third-party or shared code
> can use the new API if it is available and the old one if it isn't.
>
>> Let's try with the patch attached...
>
> Mailman strips binary attachments. =A0The correct MIME type is
> text/x-patch.

    Ok. Let's retry with a .patch extension and by bumping __FreeBSD_versio=
n__.
Thanks!
-Garrett

--000e0cdfc900503d80049354fd59
Content-Type: text/x-patch; charset=US-ASCII; name="tunables-enhancement.patch"
Content-Disposition: attachment; filename="tunables-enhancement.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gfne3kym1

SW5kZXg6IHN5cy9rZXJuL2tlcm5fZW52aXJvbm1lbnQuYwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMva2Vy
bi9rZXJuX2Vudmlyb25tZW50LmMJKHJldmlzaW9uIDIxNDI1OCkKKysrIHN5cy9rZXJuL2tlcm5f
ZW52aXJvbm1lbnQuYwkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQAogI2luY2x1ZGUg
PHN5cy9zeXNlbnQuaD4KICNpbmNsdWRlIDxzeXMvc3lzcHJvdG8uaD4KICNpbmNsdWRlIDxzeXMv
bGlia2Vybi5oPgorI2luY2x1ZGUgPHN5cy9saW1pdHMuaD4KICNpbmNsdWRlIDxzeXMva2Vudi5o
PgogCiAjaW5jbHVkZSA8c2VjdXJpdHkvbWFjL21hY19mcmFtZXdvcmsuaD4KQEAgLTQ0MiwzMiAr
NDQzLDExNSBAQAogfQogCiAvKgotICogUmV0dXJuIGEgc3RyaW5nIHZhbHVlIGZyb20gYW4gZW52
aXJvbm1lbnQgdmFyaWFibGUuCisgKiBSZXR1cm4gdGhlIG11bHRpcGxpZXIgZm9yIGEgdXNlciBz
cGVjaWZpZWQgc3VmZml4IGZyb20gYSBnZXRlbnYgY2FsbC4KICAqLwordWludG1heF90CitnZXRl
bnZfcGFyc2Vfc3VmZml4KGNvbnN0IGNoYXIgc3VmZml4KQoreworCXVpbnRtYXhfdCBtdWx0aXBs
aWVyID0gMTsKKworCXN3aXRjaCAoc3VmZml4KSB7CisJY2FzZSAndCc6IGNhc2UgJ1QnOgorCQlt
dWx0aXBsaWVyICo9IDEwMjQ7CisJY2FzZSAnZyc6IGNhc2UgJ0cnOgorCQltdWx0aXBsaWVyICo9
IDEwMjQ7CisJY2FzZSAnbSc6IGNhc2UgJ00nOgorCQltdWx0aXBsaWVyICo9IDEwMjQ7CisJY2Fz
ZSAnayc6IGNhc2UgJ0snOgorCQltdWx0aXBsaWVyICo9IDEwMjQ7CisJY2FzZSAnXDAnOgorCQli
cmVhazsKKwlkZWZhdWx0OgorCQltdWx0aXBsaWVyID0gMDsKKwl9CisKKwlyZXR1cm4gKG11bHRp
cGxpZXIpOworfQorCisvKgorICogUmV0dXJuIGEgc2lnbmVkIHF1YW50aXR5IGZyb20gYW4gZW52
aXJvbm1lbnQgdmFyaWFibGUuCisgKi8KIGludAotZ2V0ZW52X3N0cmluZyhjb25zdCBjaGFyICpu
YW1lLCBjaGFyICpkYXRhLCBpbnQgc2l6ZSkKK2dldGVudl9zaWduZWQoY29uc3QgY2hhciAqbmFt
ZSwgaW50bWF4X3QgKmRhdGEsIGNvbnN0IGludG1heF90IG1pbiwKKyAgICBjb25zdCBpbnRtYXhf
dCBtYXgpCiB7Ci0JY2hhciAqdG1wOworCXVpbnRtYXhfdAltdWx0aXBsaWVyOworCWludG1heF90
CWl2OworCWludAkJcmV0X2NvZGU7CisJY2hhcgkJKnZhbHVlOworCWNoYXIJCSp2dHA7CiAKLQl0
bXAgPSBnZXRlbnYobmFtZSk7Ci0JaWYgKHRtcCAhPSBOVUxMKSB7Ci0JCXN0cmxjcHkoZGF0YSwg
dG1wLCBzaXplKTsKLQkJZnJlZWVudih0bXApOwotCQlyZXR1cm4gKDEpOwotCX0gZWxzZQotCQly
ZXR1cm4gKDApOworCXJldF9jb2RlID0gMDsKKworCXZhbHVlID0gZ2V0ZW52KG5hbWUpOworCWlm
ICh2YWx1ZSA9PSBOVUxMKQorCQlyZXR1cm4gKHJldF9jb2RlKTsKKwlpdiA9IHN0cnRvcSh2YWx1
ZSwgJnZ0cCwgMCk7CisJaWYgKHZ0cCA9PSB2YWx1ZSB8fCAodnRwWzBdICE9ICdcMCcgJiYgdnRw
WzFdICE9ICdcMCcpIHx8CisJICAgIChtdWx0aXBsaWVyID0gZ2V0ZW52X3BhcnNlX3N1ZmZpeCh2
dHBbMF0pKSA9PSAwKSB7CisJCS8qIAorCQkgKiBDYXRjaCBlcnJvcnMgaW4gcGFyc2luZyB0aGUg
bnVtYmVyLCBiYWQgaW5wdXQsIG9yIHRoZQorCQkgKiBzdWZmaXggaWYgb25lIHdhcyBzcGVjaWZp
ZWQuCisJCSAqLworCQk7CisJfSBlbHNlIHsKKwkJaXYgKj0gbXVsdGlwbGllcjsKKwkJaWYgKG1p
biA8PSBpdiAmJiBpdiA8PSBtYXgpIHsKKwkJCSpkYXRhID0gaXY7CisJCQlyZXRfY29kZSA9IDE7
CisJCX0KKwl9CisJZnJlZWVudih2YWx1ZSk7CisJcmV0dXJuIChyZXRfY29kZSk7CiB9CiAKIC8q
CisgKiBSZXR1cm4gYW4gdW5zaWduZWQgcXVhbnRpdHkgZnJvbSBhbiBlbnZpcm9ubWVudCB2YXJp
YWJsZS4KKyAqLworaW50CitnZXRlbnZfdW5zaWduZWQoY29uc3QgY2hhciAqbmFtZSwgdWludG1h
eF90ICpkYXRhLCBjb25zdCB1aW50bWF4X3QgbWluLAorICAgIGNvbnN0IHVpbnRtYXhfdCBtYXgp
Cit7CisJdWludG1heF90CW11bHRpcGxpZXI7CisJdWludG1heF90CXVpdjsKKwlpbnQJCXJldF9j
b2RlOworCWNoYXIJCSp2YWx1ZTsKKwljaGFyCQkqdnRwOworCisJcmV0X2NvZGUgPSAwOworCisJ
dmFsdWUgPSBnZXRlbnYobmFtZSk7CisJaWYgKHZhbHVlID09IE5VTEwpCisJCXJldHVybiAocmV0
X2NvZGUpOworCXVpdiA9IHN0cnRvdXEodmFsdWUsICZ2dHAsIDApOworCWlmICh2dHAgPT0gdmFs
dWUgfHwgKHZ0cFswXSAhPSAnXDAnICYmIHZ0cFsxXSAhPSAnXDAnKSB8fAorCSAgICAobXVsdGlw
bGllciA9IGdldGVudl9wYXJzZV9zdWZmaXgodnRwWzBdKSkgPT0gMCkgeworCQkvKiAKKwkJICog
Q2F0Y2ggZXJyb3JzIGluIHBhcnNpbmcgdGhlIG51bWJlciwgYmFkIGlucHV0LCBvciB0aGUKKwkJ
ICogc3VmZml4IGlmIG9uZSB3YXMgc3BlY2lmaWVkLgorCQkgKi8KKwkJOworCX0gZWxzZSB7CisJ
CXVpdiAqPSBtdWx0aXBsaWVyOworCQlpZiAobWluIDw9IHVpdiAmJiB1aXYgPD0gbWF4KSB7CisJ
CQkqZGF0YSA9IHVpdjsKKwkJCXJldF9jb2RlID0gMTsKKwkJfQorCX0KKwlmcmVlZW52KHZhbHVl
KTsKKwlyZXR1cm4gKHJldF9jb2RlKTsKK30KKworLyoKICAqIFJldHVybiBhbiBpbnRlZ2VyIHZh
bHVlIGZyb20gYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuCiAgKi8KIGludAogZ2V0ZW52X2ludChj
b25zdCBjaGFyICpuYW1lLCBpbnQgKmRhdGEpCiB7Ci0JcXVhZF90IHRtcDsKKwlpbnRtYXhfdCB0
bXA7CiAJaW50IHJ2YWw7CiAKLQlydmFsID0gZ2V0ZW52X3F1YWQobmFtZSwgJnRtcCk7CisJcnZh
bCA9IGdldGVudl9zaWduZWQobmFtZSwgJnRtcCwgSU5UX01JTiwgSU5UX01BWCk7CiAJaWYgKHJ2
YWwpCiAJCSpkYXRhID0gKGludCkgdG1wOwogCXJldHVybiAocnZhbCk7CkBAIC00NzksMTAgKzU2
MywxMCBAQAogaW50CiBnZXRlbnZfdWludChjb25zdCBjaGFyICpuYW1lLCB1bnNpZ25lZCBpbnQg
KmRhdGEpCiB7Ci0JcXVhZF90IHRtcDsKKwlpbnRtYXhfdCB0bXA7CiAJaW50IHJ2YWw7CiAKLQly
dmFsID0gZ2V0ZW52X3F1YWQobmFtZSwgJnRtcCk7CisJcnZhbCA9IGdldGVudl91bnNpZ25lZChu
YW1lLCAmdG1wLCAwLCBVSU5UX01BWCk7CiAJaWYgKHJ2YWwpCiAJCSpkYXRhID0gKHVuc2lnbmVk
IGludCkgdG1wOwogCXJldHVybiAocnZhbCk7CkBAIC00OTQsMTAgKzU3OCwxMCBAQAogaW50CiBn
ZXRlbnZfbG9uZyhjb25zdCBjaGFyICpuYW1lLCBsb25nICpkYXRhKQogewotCXF1YWRfdCB0bXA7
CisJaW50bWF4X3QgdG1wOwogCWludCBydmFsOwogCi0JcnZhbCA9IGdldGVudl9xdWFkKG5hbWUs
ICZ0bXApOworCXJ2YWwgPSBnZXRlbnZfc2lnbmVkKG5hbWUsICZ0bXAsIExPTkdfTUlOLCBMT05H
X01BWCk7CiAJaWYgKHJ2YWwpCiAJCSpkYXRhID0gKGxvbmcpIHRtcDsKIAlyZXR1cm4gKHJ2YWwp
OwpAQCAtNTA5LDUxICs1OTMsOTAgQEAKIGludAogZ2V0ZW52X3Vsb25nKGNvbnN0IGNoYXIgKm5h
bWUsIHVuc2lnbmVkIGxvbmcgKmRhdGEpCiB7Ci0JcXVhZF90IHRtcDsKKwlpbnRtYXhfdCB0bXA7
CiAJaW50IHJ2YWw7CiAKLQlydmFsID0gZ2V0ZW52X3F1YWQobmFtZSwgJnRtcCk7CisJcnZhbCA9
IGdldGVudl91bnNpZ25lZChuYW1lLCAmdG1wLCAwLCBVTE9OR19NQVgpOwogCWlmIChydmFsKQog
CQkqZGF0YSA9ICh1bnNpZ25lZCBsb25nKSB0bXA7CiAJcmV0dXJuIChydmFsKTsKIH0KIAogLyoK
KyAqIFJldHVybiBhIHBvaW50ZXIgZnJvbSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZS4KKyAqLwor
aW50CitnZXRlbnZfcG9pbnRlcihjb25zdCBjaGFyICpuYW1lLCB1aW50cHRyX3QgKmRhdGEpCit7
CisJaW50bWF4X3QgdG1wOworCWludCBydmFsOworCisJcnZhbCA9IGdldGVudl91bnNpZ25lZChu
YW1lLCAmdG1wLCAwLCBVSU5UUFRSX01BWCk7CisJaWYgKHJ2YWwpCisJCSpkYXRhID0gKHVpbnRw
dHJfdCkgdG1wOworCXJldHVybiAocnZhbCk7Cit9CisKKy8qCiAgKiBSZXR1cm4gYSBxdWFkX3Qg
dmFsdWUgZnJvbSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZS4KICAqLwogaW50CiBnZXRlbnZfcXVh
ZChjb25zdCBjaGFyICpuYW1lLCBxdWFkX3QgKmRhdGEpCiB7Ci0JY2hhcgkqdmFsdWU7Ci0JY2hh
cgkqdnRwOwotCXF1YWRfdAlpdjsKKwlpbnRtYXhfdCB0bXA7CisJaW50IHJ2YWw7CiAKLQl2YWx1
ZSA9IGdldGVudihuYW1lKTsKLQlpZiAodmFsdWUgPT0gTlVMTCkKKwlydmFsID0gZ2V0ZW52X3Np
Z25lZChuYW1lLCAmdG1wLCBRVUFEX01JTiwgUVVBRF9NQVgpOworCWlmIChydmFsKQorCQkqZGF0
YSA9IChxdWFkX3QpIHRtcDsKKwlyZXR1cm4gKHJ2YWwpOworfQorCisvKgorICogUmV0dXJuIGEg
dXF1YWRfdCB2YWx1ZSBmcm9tIGFuIGVudmlyb25tZW50IHZhcmlhYmxlLgorICovCitpbnQKK2dl
dGVudl91cXVhZChjb25zdCBjaGFyICpuYW1lLCB1cXVhZF90ICpkYXRhKQoreworCWludG1heF90
IHRtcDsKKwlpbnQgcnZhbDsKKworCXJ2YWwgPSBnZXRlbnZfdW5zaWduZWQobmFtZSwgJnRtcCwg
MCwgVVFVQURfTUFYKTsKKwlpZiAocnZhbCkKKwkJKmRhdGEgPSAodXF1YWRfdCkgdG1wOworCXJl
dHVybiAocnZhbCk7Cit9CisKKy8qCisgKiBSZXR1cm4gYSBzaXplX3QgdmFsdWUgZnJvbSBhbiBl
bnZpcm9ubWVudCB2YXJpYWJsZS4KKyAqLworaW50CitnZXRlbnZfc2l6ZShjb25zdCBjaGFyICpu
YW1lLCBzaXplX3QgKmRhdGEpCit7CisJaW50bWF4X3QgdG1wOworCWludCBydmFsOworCisJcnZh
bCA9IGdldGVudl91bnNpZ25lZChuYW1lLCAmdG1wLCAwLCBTSVpFX01BWCk7CisJaWYgKHJ2YWwp
CisJCSpkYXRhID0gKHNpemVfdCkgdG1wOworCXJldHVybiAocnZhbCk7Cit9CisKKy8qCisgKiBS
ZXR1cm4gYSBzdHJpbmcgdmFsdWUgZnJvbSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZS4KKyAqLwor
aW50CitnZXRlbnZfc3RyaW5nKGNvbnN0IGNoYXIgKm5hbWUsIGNoYXIgKmRhdGEsIHNpemVfdCBz
aXplKQoreworCWNoYXIgKnRtcDsKKworCXRtcCA9IGdldGVudihuYW1lKTsKKwlpZiAodG1wICE9
IE5VTEwpIHsKKwkJc3RybGNweShkYXRhLCB0bXAsIHNpemUpOworCQlmcmVlZW52KHRtcCk7CisJ
CXJldHVybiAoMSk7CisJfSBlbHNlCiAJCXJldHVybiAoMCk7Ci0JaXYgPSBzdHJ0b3EodmFsdWUs
ICZ2dHAsIDApOwotCWlmICh2dHAgPT0gdmFsdWUgfHwgKHZ0cFswXSAhPSAnXDAnICYmIHZ0cFsx
XSAhPSAnXDAnKSkgewotCQlmcmVlZW52KHZhbHVlKTsKLQkJcmV0dXJuICgwKTsKLQl9Ci0Jc3dp
dGNoICh2dHBbMF0pIHsKLQljYXNlICd0JzogY2FzZSAnVCc6Ci0JCWl2ICo9IDEwMjQ7Ci0JY2Fz
ZSAnZyc6IGNhc2UgJ0cnOgotCQlpdiAqPSAxMDI0OwotCWNhc2UgJ20nOiBjYXNlICdNJzoKLQkJ
aXYgKj0gMTAyNDsKLQljYXNlICdrJzogY2FzZSAnSyc6Ci0JCWl2ICo9IDEwMjQ7Ci0JY2FzZSAn
XDAnOgotCQlicmVhazsKLQlkZWZhdWx0OgotCQlmcmVlZW52KHZhbHVlKTsKLQkJcmV0dXJuICgw
KTsKLQl9Ci0JKmRhdGEgPSBpdjsKLQlmcmVlZW52KHZhbHVlKTsKLQlyZXR1cm4gKDEpOwogfQog
CiAvKgpAQCAtNTgzLDYgKzcwNiwxNCBAQAogfQogCiB2b2lkCit0dW5hYmxlX3VpbnRfaW5pdCh2
b2lkICpkYXRhKQoreworCXN0cnVjdCB0dW5hYmxlX3VpbnQgKmQgPSAoc3RydWN0IHR1bmFibGVf
dWludCAqKWRhdGE7CisKKwlUVU5BQkxFX1VJTlRfRkVUQ0goZC0+cGF0aCwgZC0+dmFyKTsKK30K
Kwordm9pZAogdHVuYWJsZV9sb25nX2luaXQodm9pZCAqZGF0YSkKIHsKIAlzdHJ1Y3QgdHVuYWJs
ZV9sb25nICpkID0gKHN0cnVjdCB0dW5hYmxlX2xvbmcgKilkYXRhOwpAQCAtNTk5LDYgKzczMCwx
NCBAQAogfQogCiB2b2lkCit0dW5hYmxlX3BvaW50ZXJfaW5pdCh2b2lkICpkYXRhKQoreworCXN0
cnVjdCB0dW5hYmxlX3BvaW50ZXIgKmQgPSAoc3RydWN0IHR1bmFibGVfcG9pbnRlciAqKWRhdGE7
CisKKwlUVU5BQkxFX1BPSU5URVJfRkVUQ0goZC0+cGF0aCwgZC0+dmFyKTsKK30KKwordm9pZAog
dHVuYWJsZV9xdWFkX2luaXQodm9pZCAqZGF0YSkKIHsKIAlzdHJ1Y3QgdHVuYWJsZV9xdWFkICpk
ID0gKHN0cnVjdCB0dW5hYmxlX3F1YWQgKilkYXRhOwpAQCAtNjA3LDYgKzc0NiwyMiBAQAogfQog
CiB2b2lkCit0dW5hYmxlX3VxdWFkX2luaXQodm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgdHVuYWJs
ZV91cXVhZCAqZCA9IChzdHJ1Y3QgdHVuYWJsZV91cXVhZCAqKWRhdGE7CisKKwlUVU5BQkxFX1VR
VUFEX0ZFVENIKGQtPnBhdGgsIGQtPnZhcik7Cit9CisKK3ZvaWQKK3R1bmFibGVfc2l6ZV9pbml0
KHZvaWQgKmRhdGEpCit7CisJc3RydWN0IHR1bmFibGVfc2l6ZSAqZCA9IChzdHJ1Y3QgdHVuYWJs
ZV9zaXplICopZGF0YTsKKworCVRVTkFCTEVfU0laRV9GRVRDSChkLT5wYXRoLCBkLT52YXIpOwor
fQorCit2b2lkCiB0dW5hYmxlX3N0cl9pbml0KHZvaWQgKmRhdGEpCiB7CiAJc3RydWN0IHR1bmFi
bGVfc3RyICpkID0gKHN0cnVjdCB0dW5hYmxlX3N0ciAqKWRhdGE7CkluZGV4OiBzeXMvc3lzL2tl
cm5lbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9zeXMva2VybmVsLmgJKHJldmlzaW9uIDIxNDI1OCkK
KysrIHN5cy9zeXMva2VybmVsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3NSw3ICsyNzUsOSBAQAog
CiAvKgogICogaW50Ci0gKiBwbGVhc2UgYXZvaWQgdXNpbmcgZm9yIG5ldyB0dW5hYmxlcyEKKyAq
CisgKiBQbGVhc2UgZG8gbm90IHVzZSBmb3IgYWRkcmVzc2VzIG9yIHBvaW50ZXJzICh1c2UgdGhl
IHBvaW50ZXIgdHVuYWJsZQorICogaW5zdGVhZCksIG9yIHNpemVzICh1c2UgdGhlIHNpemUgdHVu
YWJsZSBpbnN0ZWFkKS4KICAqLwogZXh0ZXJuIHZvaWQgdHVuYWJsZV9pbnRfaW5pdCh2b2lkICop
Owogc3RydWN0IHR1bmFibGVfaW50IHsKQEAgLTI5NCw2ICsyOTYsMjggQEAKICNkZWZpbmUJVFVO
QUJMRV9JTlRfRkVUQ0gocGF0aCwgdmFyKQlnZXRlbnZfaW50KChwYXRoKSwgKHZhcikpCiAKIC8q
CisgKiB1bnNpZ25lZCBpbnQKKyAqCisgKiBQbGVhc2UgZG8gbm90IHVzZSBmb3IgYWRkcmVzc2Vz
IG9yIHBvaW50ZXJzICh1c2UgdGhlIHBvaW50ZXIgdHVuYWJsZQorICogaW5zdGVhZCksIG9yIHNp
emVzICh1c2UgdGhlIHNpemUgdHVuYWJsZSBpbnN0ZWFkKS4KKyAqLworZXh0ZXJuIHZvaWQgdHVu
YWJsZV91aW50X2luaXQodm9pZCAqKTsKK3N0cnVjdCB0dW5hYmxlX3VpbnQgeworCWNvbnN0IGNo
YXIgKnBhdGg7CisJdW5zaWduZWQgaW50ICp2YXI7Cit9OworI2RlZmluZQlUVU5BQkxFX1VJTlQo
cGF0aCwgdmFyKQkJCQkJXAorCXN0YXRpYyBzdHJ1Y3QgdHVuYWJsZV91aW50IF9fQ09OQ0FUKF9f
dHVuYWJsZV91aW50XywgX19MSU5FX18pID0geyBcCisJCShwYXRoKSwJCQkJCQlcCisJCSh2YXIp
LAkJCQkJCVwKKwl9OwkJCQkJCQlcCisJU1lTSU5JVChfX0NPTkNBVChfX1R1bmFibGVfaW5pdF8s
IF9fTElORV9fKSwJCVwKKwkgICAgU0lfU1VCX1RVTkFCTEVTLCBTSV9PUkRFUl9NSURETEUsIHR1
bmFibGVfdWludF9pbml0LCBcCisJICAgICZfX0NPTkNBVChfX3R1bmFibGVfdWludF8sIF9fTElO
RV9fKSkKKworI2RlZmluZQlUVU5BQkxFX1VJTlRfRkVUQ0gocGF0aCwgdmFyKQlnZXRlbnZfdWlu
dCgocGF0aCksICh2YXIpKQorCisvKgogICogbG9uZwogICovCiBleHRlcm4gdm9pZCB0dW5hYmxl
X2xvbmdfaW5pdCh2b2lkICopOwpAQCAtMzMyLDggKzM1NiwyOCBAQAogI2RlZmluZQlUVU5BQkxF
X1VMT05HX0ZFVENIKHBhdGgsIHZhcikJZ2V0ZW52X3Vsb25nKChwYXRoKSwgKHZhcikpCiAKIC8q
Ci0gKiBxdWFkCisgKiBwb2ludGVyCiAgKi8KK2V4dGVybiB2b2lkIHR1bmFibGVfcG9pbnRlcl9p
bml0KHZvaWQgKik7CitzdHJ1Y3QgdHVuYWJsZV9wb2ludGVyIHsKKwljb25zdCBjaGFyICpwYXRo
OworCXVpbnRwdHJfdCAqdmFyOworfTsKKyNkZWZpbmUJVFVOQUJMRV9QT0lOVEVSKHBhdGgsIHZh
cikJCQkJXAorCXN0YXRpYyBzdHJ1Y3QgdHVuYWJsZV9wb2ludGVyIF9fQ09OQ0FUKF9fdHVuYWJs
ZV9wb2ludGVyXywgX19MSU5FX18pID0geyBcCisJCShwYXRoKSwJCQkJCQlcCisJCSh2YXIpLAkJ
CQkJCVwKKwl9OwkJCQkJCQlcCisJU1lTSU5JVChfX0NPTkNBVChfX1R1bmFibGVfaW5pdF8sIF9f
TElORV9fKSwJCVwKKwkgICAgU0lfU1VCX1RVTkFCTEVTLCBTSV9PUkRFUl9NSURETEUsIHR1bmFi
bGVfcG9pbnRlcl9pbml0LCBcCisJICAgICZfX0NPTkNBVChfX3R1bmFibGVfcG9pbnRlcl8sIF9f
TElORV9fKSkKKworI2RlZmluZQlUVU5BQkxFX1BPSU5URVJfRkVUQ0gocGF0aCwgdmFyKQkJCVwK
KwlnZXRlbnZfcG9pbnRlcigocGF0aCksICh2YXIpKQorCisvKgorICogcXVhZF90CisgKi8KIGV4
dGVybiB2b2lkIHR1bmFibGVfcXVhZF9pbml0KHZvaWQgKik7CiBzdHJ1Y3QgdHVuYWJsZV9xdWFk
IHsKIAljb25zdCBjaGFyICpwYXRoOwpAQCAtMzUwLDYgKzM5NCwyOCBAQAogCiAjZGVmaW5lCVRV
TkFCTEVfUVVBRF9GRVRDSChwYXRoLCB2YXIpCWdldGVudl9xdWFkKChwYXRoKSwgKHZhcikpCiAK
Ky8qCisgKiBzaXplX3QKKyAqLworZXh0ZXJuIHZvaWQgdHVuYWJsZV9zaXplX2luaXQodm9pZCAq
KTsKK3N0cnVjdCB0dW5hYmxlX3NpemUgeworCWNvbnN0IGNoYXIgKnBhdGg7CisJc2l6ZV90ICp2
YXI7Cit9OworI2RlZmluZQlUVU5BQkxFX1NJWkUocGF0aCwgdmFyKQkJCQkJXAorCXN0YXRpYyBz
dHJ1Y3QgdHVuYWJsZV9zaXplIF9fQ09OQ0FUKF9fdHVuYWJsZV9zaXplXywgX19MSU5FX18pID0g
eyBcCisJCShwYXRoKSwJCQkJCQlcCisJCSh2YXIpLAkJCQkJCVwKKwl9OwkJCQkJCQlcCisJU1lT
SU5JVChfX0NPTkNBVChfX1R1bmFibGVfaW5pdF8sIF9fTElORV9fKSwJCVwKKwkgICAgU0lfU1VC
X1RVTkFCTEVTLCBTSV9PUkRFUl9NSURETEUsIHR1bmFibGVfc2l6ZV9pbml0LCBcCisJICAgICZf
X0NPTkNBVChfX3R1bmFibGVfc2l6ZV8sIF9fTElORV9fKSkKKworI2RlZmluZQlUVU5BQkxFX1NJ
WkVfRkVUQ0gocGF0aCwgdmFyKQlnZXRlbnZfc2l6ZSgocGF0aCksICh2YXIpKQorCisvKgorICog
c3RyaW5ncworICovCiBleHRlcm4gdm9pZCB0dW5hYmxlX3N0cl9pbml0KHZvaWQgKik7CiBzdHJ1
Y3QgdHVuYWJsZV9zdHIgewogCWNvbnN0IGNoYXIgKnBhdGg7CkBAIC0zNjksNiArNDM1LDI1IEBA
CiAjZGVmaW5lCVRVTkFCTEVfU1RSX0ZFVENIKHBhdGgsIHZhciwgc2l6ZSkJCQlcCiAJZ2V0ZW52
X3N0cmluZygocGF0aCksICh2YXIpLCAoc2l6ZSkpCiAKKy8qCisgKiB1cXVhZF90CisgKi8KK2V4
dGVybiB2b2lkIHR1bmFibGVfdXF1YWRfaW5pdCh2b2lkICopOworc3RydWN0IHR1bmFibGVfdXF1
YWQgeworCWNvbnN0IGNoYXIgKnBhdGg7CisJdXF1YWRfdCAqdmFyOworfTsKKyNkZWZpbmUJVFVO
QUJMRV9VUVVBRChwYXRoLCB2YXIpCQkJCQlcCisJc3RhdGljIHN0cnVjdCB0dW5hYmxlX3VxdWFk
IF9fQ09OQ0FUKF9fdHVuYWJsZV91cXVhZF8sIF9fTElORV9fKSA9IHsgXAorCQkocGF0aCksCQkJ
CQkJXAorCQkodmFyKSwJCQkJCQlcCisJfTsJCQkJCQkJXAorCVNZU0lOSVQoX19DT05DQVQoX19U
dW5hYmxlX2luaXRfLCBfX0xJTkVfXyksCQlcCisJICAgIFNJX1NVQl9UVU5BQkxFUywgU0lfT1JE
RVJfTUlERExFLCB0dW5hYmxlX3VxdWFkX2luaXQsIFwKKwkgICAgJl9fQ09OQ0FUKF9fdHVuYWJs
ZV91cXVhZF8sIF9fTElORV9fKSkKKworI2RlZmluZQlUVU5BQkxFX1VRVUFEX0ZFVENIKHBhdGgs
IHZhcikJZ2V0ZW52X3VxdWFkKChwYXRoKSwgKHZhcikpCisKIHN0cnVjdCBpbnRyX2NvbmZpZ19o
b29rIHsKIAlUQUlMUV9FTlRSWShpbnRyX2NvbmZpZ19ob29rKSBpY2hfbGlua3M7CiAJdm9pZAko
KmljaF9mdW5jKSh2b2lkICphcmcpOwpJbmRleDogc3lzL3N5cy9wYXJhbS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIHN5cy9zeXMvcGFyYW0uaAkocmV2aXNpb24gMjE0MjU4KQorKysgc3lzL3N5cy9wYXJhbS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBACiAgKgkJaW4gdGhlIHJhbmdlIDUgdG8g
OS4KICAqLwogI3VuZGVmIF9fRnJlZUJTRF92ZXJzaW9uCi0jZGVmaW5lIF9fRnJlZUJTRF92ZXJz
aW9uIDkwMDAyMwkvKiBNYXN0ZXIsIHByb3BhZ2F0ZWQgdG8gbmV3dmVycyAqLworI2RlZmluZSBf
X0ZyZWVCU0RfdmVyc2lvbiA5MDAwMjQJLyogTWFzdGVyLCBwcm9wYWdhdGVkIHRvIG5ld3ZlcnMg
Ki8KIAogI2lmbmRlZiBMT0NPUkUKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KSW5kZXg6IHN5cy9z
eXMvc3lzdG0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvc3lzL3N5c3RtLmgJKHJldmlzaW9uIDIxNDI1
OCkKKysrIHN5cy9zeXMvc3lzdG0uaAkod29ya2luZyBjb3B5KQpAQCAtMjYwLDEyICsyNjAsMjAg
QEAKIAogY2hhcgkqZ2V0ZW52KGNvbnN0IGNoYXIgKm5hbWUpOwogdm9pZAlmcmVlZW52KGNoYXIg
KmVudik7Cit1aW50bWF4X3QgZ2V0ZW52X3BhcnNlX3N1ZmZpeChjb25zdCBjaGFyIHN1ZmZpeCk7
CitpbnQJZ2V0ZW52X3NpZ25lZChjb25zdCBjaGFyICpuYW1lLCBpbnRtYXhfdCAqZGF0YSwgY29u
c3QgaW50bWF4X3QgbWluLAorCSAgICBjb25zdCBpbnRtYXhfdCBtYXgpOworaW50CWdldGVudl91
bnNpZ25lZChjb25zdCBjaGFyICpuYW1lLCB1aW50bWF4X3QgKmRhdGEsCisJICAgIGNvbnN0IHVp
bnRtYXhfdCBtaW4sIGNvbnN0IHVpbnRtYXhfdCBtYXgpOwogaW50CWdldGVudl9pbnQoY29uc3Qg
Y2hhciAqbmFtZSwgaW50ICpkYXRhKTsKIGludAlnZXRlbnZfdWludChjb25zdCBjaGFyICpuYW1l
LCB1bnNpZ25lZCBpbnQgKmRhdGEpOwogaW50CWdldGVudl9sb25nKGNvbnN0IGNoYXIgKm5hbWUs
IGxvbmcgKmRhdGEpOwogaW50CWdldGVudl91bG9uZyhjb25zdCBjaGFyICpuYW1lLCB1bnNpZ25l
ZCBsb25nICpkYXRhKTsKLWludAlnZXRlbnZfc3RyaW5nKGNvbnN0IGNoYXIgKm5hbWUsIGNoYXIg
KmRhdGEsIGludCBzaXplKTsKK2ludAlnZXRlbnZfcG9pbnRlcihjb25zdCBjaGFyICpuYW1lLCB1
aW50cHRyX3QgKmRhdGEpOwogaW50CWdldGVudl9xdWFkKGNvbnN0IGNoYXIgKm5hbWUsIHF1YWRf
dCAqZGF0YSk7CitpbnQJZ2V0ZW52X3VxdWFkKGNvbnN0IGNoYXIgKm5hbWUsIHVxdWFkX3QgKmRh
dGEpOworaW50CWdldGVudl9zaXplKGNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCAqZGF0YSk7Citp
bnQJZ2V0ZW52X3N0cmluZyhjb25zdCBjaGFyICpuYW1lLCBjaGFyICpkYXRhLCBzaXplX3Qgc2l6
ZSk7CiBpbnQJc2V0ZW52KGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKTsKIGlu
dAl1bnNldGVudihjb25zdCBjaGFyICpuYW1lKTsKIGludAl0ZXN0ZW52KGNvbnN0IGNoYXIgKm5h
bWUpOwpJbmRleDogdG9vbHMvcmVncmVzc2lvbi90dW5hYmxlcy91cXVhZC90ZXN0X3VxdWFkX3R1
bmFibGUuc2gKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gdG9vbHMvcmVncmVzc2lvbi90dW5hYmxlcy91cXVhZC90
ZXN0X3VxdWFkX3R1bmFibGUuc2gJKHJldmlzaW9uIDApCisrKyB0b29scy9yZWdyZXNzaW9uL3R1
bmFibGVzL3VxdWFkL3Rlc3RfdXF1YWRfdHVuYWJsZS5zaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwzOCBAQAorIyEvYmluL3NoCisjCisjIEV4cGVjdGVkIHZhbHVlczoKKyMgKHVuc2V0KSAgICA6
ICAgICAgICAgICAwCisjICAgICAgLTEgICAgOiAgIFVMT05HX01BWAorIyAgICAgICAwICAgIDog
ICAgICAgICAgIDAKKyMgICAgICA0MiAgICA6ICAgICAgICAgIDQyCisjIGFzZGYxMjM0ICAgOiAg
ICAgICAgICAgMCAocmVqZWN0KQorIyBMT05HX01BWCsxIDogIExPTkdfTUFYKzEKKyMgVUxPTkdf
TUFYLTE6IFVMT05HX01BWC0xCisjIFVMT05HX01BWCsxOiAgIFVMT05HX01BWAorIworCitNT0RO
QU1FPSIkKGJhc2VuYW1lICIkMCIgLnNoKSIKKwordGVzdF9tb2R1bGUoKSB7CisJa2xkbG9hZCAu
LyRNT0ROQU1FLmtvCisJa2xkdW5sb2FkIC4vJE1PRE5BTUUua28KK30KKworY2FzZSAiJCgkKGRp
cm5hbWUgIiQwIikvLi4vdG9vbHMvZ2V0d29yZHNpemUpIiBpbgorMzIpCisJTE9OR19NQVhfUExV
U18xPTIxNDc0ODM2NDkKKwlVTE9OR19NQVhfTUlOVVNfMT00Mjk0OTY3Mjk1CisJVUxPTkdfTUFY
X1BMVVNfMT00Mjk0OTY3Mjk3CisJOzsKKzY0KQorCUxPTkdfTUFYX1BMVVNfMT05MjIzMzcyMDM2
ODU0Nzc1ODA4CisJVUxPTkdfTUFYX01JTlVTXzE9MTg0NDY3NDQwNzM3MDk1NTE2MTQKKwlVTE9O
R19NQVhfUExVU18xPTE4NDQ2NzQ0MDczNzA5NTUxNjE2CisJOzsKK2VzYWMKK2tlbnYgLXUgJE1P
RE5BTUUudHVuYWJsZSAyPi9kZXYvbnVsbAordGVzdF9tb2R1bGUKK2ZvciBpIGluIC0xIDAgNDIg
YXNkZjEyMzQgJExPTkdfTUFYX1BMVVNfMSAkVUxPTkdfTUFYX01JTlVTXzEgJFVMT05HX01BWF9Q
TFVTXzE7IGRvCisJa2VudiAkTU9ETkFNRS50dW5hYmxlPSIkaSIKKwl0ZXN0X21vZHVsZQorZG9u
ZQpJbmRleDogdG9vbHMvcmVncmVzc2lvbi90dW5hYmxlcy91cXVhZC90ZXN0X3VxdWFkX3R1bmFi
bGUuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSB0b29scy9yZWdyZXNzaW9uL3R1bmFibGVzL3VxdWFkL3Rlc3Rf
dXF1YWRfdHVuYWJsZS5jCShyZXZpc2lvbiAwKQorKysgdG9vbHMvcmVncmVzc2lvbi90dW5hYmxl
cy91cXVhZC90ZXN0X3VxdWFkX3R1bmFibGUuYwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMSBA
QAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1
ZGUgPHN5cy9wcm9jLmg+CisjaW5jbHVkZSA8c3lzL21vZHVsZS5oPgorI2luY2x1ZGUgPHN5cy9r
ZXJuZWwuaD4KKyNpbmNsdWRlIDxzeXMvc3lzdG0uaD4KKworI2RlZmluZSBNT0RVTEVfTkFNRQki
dGVzdF91cXVhZF90dW5hYmxlIgorCitzdGF0aWMgdXF1YWRfdCB0dW5hYmxlID0gMDsKKworVFVO
QUJMRV9VUVVBRCgidGVzdF91cXVhZF90dW5hYmxlLnR1bmFibGUiLCAmdHVuYWJsZSk7CisKK3N0
YXRpYyBpbnQKK2xvYWQgKG1vZHVsZV90IG0sIGludCB3aGF0LCB2b2lkICphcmcpCit7CisJc3dp
dGNoICh3aGF0KSB7CisJY2FzZSBNT0RfTE9BRDoKKwkJcHJpbnRmKCIlczogJWx1XG4iLCBNT0RV
TEVfTkFNRSwgdHVuYWJsZSk7CisJCWJyZWFrOworCX0KKwlyZXR1cm4gKDApOworfQorCitzdGF0
aWMgbW9kdWxlZGF0YV90IHRlc3RfdXF1YWRfdHVuYWJsZV9tb2QgPSB7CisJTU9EVUxFX05BTUUs
CisJbG9hZCwKK307CitERUNMQVJFX01PRFVMRSh0ZXN0X3VxdWFkX3R1bmFibGUsIHRlc3RfdXF1
YWRfdHVuYWJsZV9tb2QsIFNJX1NVQl9LTEQsCisgICAgU0lfT1JERVJfQU5ZKTsKK01PRFVMRV9W
RVJTSU9OKHRlc3RfdXF1YWRfdHVuYWJsZSwgMSk7CkluZGV4OiB0b29scy9yZWdyZXNzaW9uL3R1
bmFibGVzL3VxdWFkL01ha2VmaWxlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRvb2xzL3JlZ3Jlc3Npb24vdHVu
YWJsZXMvdXF1YWQvTWFrZWZpbGUJKHJldmlzaW9uIDApCisrKyB0b29scy9yZWdyZXNzaW9uL3R1
bmFibGVzL3VxdWFkL01ha2VmaWxlCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKK0tNT0Q9
CXRlc3RfdXF1YWRfdHVuYWJsZQorU1JDUz0JdGVzdF91cXVhZF90dW5hYmxlLmMKKworLmluY2x1
ZGUgPGJzZC5rbW9kLm1rPgpJbmRleDogdG9vbHMvcmVncmVzc2lvbi90dW5hYmxlcy91aW50L3Rl
c3RfdWludF90dW5hYmxlLnNoCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJs
ZXMvdWludC90ZXN0X3VpbnRfdHVuYWJsZS5zaAkocmV2aXNpb24gMCkKKysrIHRvb2xzL3JlZ3Jl
c3Npb24vdHVuYWJsZXMvdWludC90ZXN0X3VpbnRfdHVuYWJsZS5zaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyOSBAQAorIyEvYmluL3NoCisjCisjIEV4cGVjdGVkIHZhbHVlczoKKyMgKHVuc2V0
KSAgIDogICAgICAgICAgMAorIyAgICAgIC0xICAgOiAgICAgICAgICAwIChyZWplY3QpIAorIyAg
ICAgICAwICAgOiAgICAgICAgICAwCisjICAgICAgNDIgICA6ICAgICAgICAgNDIKKyMgYXNkZjEy
MzQgIDogICAgICAgICAgMCAocmVqZWN0KQorIyBJTlRfTUFYKzEgOiAgSU5UX01BWCsxCisjIFVJ
TlRfTUFYLTE6IFVJTlRfTUFYLTEKKyMgVUlOVF9NQVgrMTogICAgICAgICAgMCAocmVqZWN0KQor
IworCitNT0ROQU1FPSIkKGJhc2VuYW1lICIkMCIgLnNoKSIKKwordGVzdF9tb2R1bGUoKSB7CisJ
a2xkbG9hZCAuLyRNT0ROQU1FLmtvCisJa2xkdW5sb2FkIC4vJE1PRE5BTUUua28KK30KKworSU5U
X01BWF9QTFVTX09ORT0yMTQ3NDgzNjQ4CitVSU5UX01BWF9NSU5VU19PTkU9NDI5NDk2NzI5NAor
VUlOVF9NQVhfUExVU19PTkU9NDI5NDk2NzI5Ngora2VudiAtdSAkTU9ETkFNRS50dW5hYmxlIDI+
L2Rldi9udWxsCit0ZXN0X21vZHVsZQorZm9yIGkgaW4gLTEgMCA0MiBhc2RmMTIzNCAkSU5UX01B
WF9QTFVTX09ORSAkVUlOVF9NQVhfTUlOVVNfT05FICRVSU5UX01BWF9QTFVTX09ORTsgZG8KKwlr
ZW52ICRNT0ROQU1FLnR1bmFibGU9IiRpIgorCXRlc3RfbW9kdWxlCitkb25lCkluZGV4OiB0b29s
cy9yZWdyZXNzaW9uL3R1bmFibGVzL3VpbnQvdGVzdF91aW50X3R1bmFibGUuYwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSB0b29scy9yZWdyZXNzaW9uL3R1bmFibGVzL3VpbnQvdGVzdF91aW50X3R1bmFibGUuYwko
cmV2aXNpb24gMCkKKysrIHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvdWludC90ZXN0X3VpbnRf
dHVuYWJsZS5jCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMxIEBACisjaW5jbHVkZSA8c3lzL3Bh
cmFtLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3Byb2MuaD4KKyNp
bmNsdWRlIDxzeXMvbW9kdWxlLmg+CisjaW5jbHVkZSA8c3lzL2tlcm5lbC5oPgorI2luY2x1ZGUg
PHN5cy9zeXN0bS5oPgorCisjZGVmaW5lIE1PRFVMRV9OQU1FCSJ0ZXN0X3VpbnRfdHVuYWJsZSIK
Kworc3RhdGljIHVuc2lnbmVkIGludCB0dW5hYmxlID0gMDsKKworVFVOQUJMRV9VSU5UKCJ0ZXN0
X3VpbnRfdHVuYWJsZS50dW5hYmxlIiwgJnR1bmFibGUpOworCitzdGF0aWMgaW50Citsb2FkICht
b2R1bGVfdCBtLCBpbnQgd2hhdCwgdm9pZCAqYXJnKQoreworCXN3aXRjaCAod2hhdCkgeworCWNh
c2UgTU9EX0xPQUQ6CisJCXByaW50ZigiJXM6ICV1XG4iLCBNT0RVTEVfTkFNRSwgdHVuYWJsZSk7
CisJCWJyZWFrOworCX0KKwlyZXR1cm4gKDApOworfQorCitzdGF0aWMgbW9kdWxlZGF0YV90IHRl
c3RfdWludF90dW5hYmxlX21vZCA9IHsKKwlNT0RVTEVfTkFNRSwKKwlsb2FkLAorfTsKK0RFQ0xB
UkVfTU9EVUxFKHRlc3RfdWludF90dW5hYmxlLCB0ZXN0X3VpbnRfdHVuYWJsZV9tb2QsIFNJX1NV
Ql9LTEQsCisgICAgU0lfT1JERVJfQU5ZKTsKK01PRFVMRV9WRVJTSU9OKHRlc3RfdWludF90dW5h
YmxlLCAxKTsKSW5kZXg6IHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvdWludC9NYWtlZmlsZQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSB0b29scy9yZWdyZXNzaW9uL3R1bmFibGVzL3VpbnQvTWFrZWZpbGUJKHJl
dmlzaW9uIDApCisrKyB0b29scy9yZWdyZXNzaW9uL3R1bmFibGVzL3VpbnQvTWFrZWZpbGUJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorS01PRD0JdGVzdF91aW50X3R1bmFibGUKK1NSQ1M9
CXRlc3RfdWludF90dW5hYmxlLmMKKworLmluY2x1ZGUgPGJzZC5rbW9kLm1rPgpJbmRleDogdG9v
bHMvcmVncmVzc2lvbi90dW5hYmxlcy90b29scy9nZXR3b3Jkc2l6ZS5jCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvdG9vbHMvZ2V0d29yZHNpemUuYwkocmV2aXNpb24g
MCkKKysrIHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvdG9vbHMvZ2V0d29yZHNpemUuYwkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw5IEBACisjaW5jbHVkZSA8c3lzL2VsZi5oPgorI2luY2x1ZGUg
PHN0ZGlvLmg+CisKK2ludAorbWFpbih2b2lkKQoreworCXByaW50ZigiJWRcbiIsIF9fRUxGX1dP
UkRfU0laRSk7CisJcmV0dXJuICgwKTsKK30KSW5kZXg6IHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJs
ZXMvdG9vbHMvTWFrZWZpbGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdG9vbHMvcmVncmVzc2lvbi90dW5hYmxl
cy90b29scy9NYWtlZmlsZQkocmV2aXNpb24gMCkKKysrIHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJs
ZXMvdG9vbHMvTWFrZWZpbGUJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNyBAQAorUFJPRz0JCWdl
dHdvcmRzaXplCisKK1NSQ1M9CQlnZXR3b3Jkc2l6ZS5jCisKK05PX01BTj0JCTEKKworLmluY2x1
ZGUgPGJzZC5wcm9nLm1rPgpJbmRleDogdG9vbHMvcmVncmVzc2lvbi90dW5hYmxlcy91bG9uZy90
ZXN0X3Vsb25nX3R1bmFibGUuc2gKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdG9vbHMvcmVncmVzc2lvbi90dW5h
Ymxlcy91bG9uZy90ZXN0X3Vsb25nX3R1bmFibGUuc2gJKHJldmlzaW9uIDApCisrKyB0b29scy9y
ZWdyZXNzaW9uL3R1bmFibGVzL3Vsb25nL3Rlc3RfdWxvbmdfdHVuYWJsZS5zaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwzOCBAQAorIyEvYmluL3NoCisjCisjIEV4cGVjdGVkIHZhbHVlczoKKyMg
KHVuc2V0KSAgICA6ICAgICAgICAgICAwCisjICAgICAgLTEgICAgOiAgIFVMT05HX01BWAorIyAg
ICAgICAwICAgIDogICAgICAgICAgIDAKKyMgICAgICA0MiAgICA6ICAgICAgICAgIDQyCisjIGFz
ZGYxMjM0ICAgOiAgICAgICAgICAgMCAocmVqZWN0KQorIyBMT05HX01BWCsxIDogIExPTkdfTUFY
KzEKKyMgVUxPTkdfTUFYLTE6IFVMT05HX01BWC0xCisjIFVMT05HX01BWCsxOiAgIFVMT05HX01B
WAorIworCitNT0ROQU1FPSIkKGJhc2VuYW1lICIkMCIgLnNoKSIKKwordGVzdF9tb2R1bGUoKSB7
CisJa2xkbG9hZCAuLyRNT0ROQU1FLmtvCisJa2xkdW5sb2FkIC4vJE1PRE5BTUUua28KK30KKwor
Y2FzZSAiJCgkKGRpcm5hbWUgIiQwIikvLi4vdG9vbHMvZ2V0d29yZHNpemUpIiBpbgorMzIpCisJ
TE9OR19NQVhfUExVU18xPTIxNDc0ODM2NDkKKwlVTE9OR19NQVhfTUlOVVNfMT00Mjk0OTY3Mjk1
CisJVUxPTkdfTUFYX1BMVVNfMT00Mjk0OTY3Mjk3CisJOzsKKzY0KQorCUxPTkdfTUFYX1BMVVNf
MT05MjIzMzcyMDM2ODU0Nzc1ODA4CisJVUxPTkdfTUFYX01JTlVTXzE9MTg0NDY3NDQwNzM3MDk1
NTE2MTQKKwlVTE9OR19NQVhfUExVU18xPTE4NDQ2NzQ0MDczNzA5NTUxNjE2CisJOzsKK2VzYWMK
K2tlbnYgLXUgJE1PRE5BTUUudHVuYWJsZSAyPi9kZXYvbnVsbAordGVzdF9tb2R1bGUKK2ZvciBp
IGluIC0xIDAgNDIgYXNkZjEyMzQgJExPTkdfTUFYX1BMVVNfMSAkVUxPTkdfTUFYX01JTlVTXzEg
JFVMT05HX01BWF9QTFVTXzE7IGRvCisJa2VudiAkTU9ETkFNRS50dW5hYmxlPSIkaSIKKwl0ZXN0
X21vZHVsZQorZG9uZQpJbmRleDogdG9vbHMvcmVncmVzc2lvbi90dW5hYmxlcy91bG9uZy9NYWtl
ZmlsZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSB0b29scy9yZWdyZXNzaW9uL3R1bmFibGVzL3Vsb25nL01ha2Vm
aWxlCShyZXZpc2lvbiAwKQorKysgdG9vbHMvcmVncmVzc2lvbi90dW5hYmxlcy91bG9uZy9NYWtl
ZmlsZQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACitLTU9EPQl0ZXN0X3Vsb25nX3R1bmFi
bGUKK1NSQ1M9CXRlc3RfdWxvbmdfdHVuYWJsZS5jCisKKy5pbmNsdWRlIDxic2Qua21vZC5taz4K
SW5kZXg6IHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvdWxvbmcvdGVzdF91bG9uZ190dW5hYmxl
LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gdG9vbHMvcmVncmVzc2lvbi90dW5hYmxlcy91bG9uZy90ZXN0X3Vs
b25nX3R1bmFibGUuYwkocmV2aXNpb24gMCkKKysrIHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMv
dWxvbmcvdGVzdF91bG9uZ190dW5hYmxlLmMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzEgQEAK
KyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRl
IDxzeXMvcHJvYy5oPgorI2luY2x1ZGUgPHN5cy9tb2R1bGUuaD4KKyNpbmNsdWRlIDxzeXMva2Vy
bmVsLmg+CisjaW5jbHVkZSA8c3lzL3N5c3RtLmg+CisKKyNkZWZpbmUgTU9EVUxFX05BTUUJInRl
c3RfdWxvbmdfdHVuYWJsZSIKKworc3RhdGljIHVuc2lnbmVkIGxvbmcgdHVuYWJsZSA9IDA7CisK
K1RVTkFCTEVfVUxPTkcoInRlc3RfdWxvbmdfdHVuYWJsZS50dW5hYmxlIiwgJnR1bmFibGUpOwor
CitzdGF0aWMgaW50Citsb2FkIChtb2R1bGVfdCBtLCBpbnQgd2hhdCwgdm9pZCAqYXJnKQorewor
CXN3aXRjaCAod2hhdCkgeworCWNhc2UgTU9EX0xPQUQ6CisJCXByaW50ZigiJXM6ICVsdVxuIiwg
TU9EVUxFX05BTUUsIHR1bmFibGUpOworCQlicmVhazsKKwl9CisJcmV0dXJuICgwKTsKK30KKwor
c3RhdGljIG1vZHVsZWRhdGFfdCB0ZXN0X3Vsb25nX3R1bmFibGVfbW9kID0geworCU1PRFVMRV9O
QU1FLAorCWxvYWQsCit9OworREVDTEFSRV9NT0RVTEUodGVzdF91bG9uZ190dW5hYmxlLCB0ZXN0
X3Vsb25nX3R1bmFibGVfbW9kLCBTSV9TVUJfS0xELAorICAgIFNJX09SREVSX0FOWSk7CitNT0RV
TEVfVkVSU0lPTih0ZXN0X3Vsb25nX3R1bmFibGUsIDEpOwpJbmRleDogdG9vbHMvcmVncmVzc2lv
bi90dW5hYmxlcy9zdWZmaXgvdGVzdF90dW5hYmxlX3N1ZmZpeGVzLmMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
dG9vbHMvcmVncmVzc2lvbi90dW5hYmxlcy9zdWZmaXgvdGVzdF90dW5hYmxlX3N1ZmZpeGVzLmMJ
KHJldmlzaW9uIDApCisrKyB0b29scy9yZWdyZXNzaW9uL3R1bmFibGVzL3N1ZmZpeC90ZXN0X3R1
bmFibGVfc3VmZml4ZXMuYwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMSBAQAorI2luY2x1ZGUg
PHN5cy9wYXJhbS5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9wcm9j
Lmg+CisjaW5jbHVkZSA8c3lzL21vZHVsZS5oPgorI2luY2x1ZGUgPHN5cy9rZXJuZWwuaD4KKyNp
bmNsdWRlIDxzeXMvc3lzdG0uaD4KKworI2RlZmluZSBNT0RVTEVfTkFNRQkidGVzdF90dW5hYmxl
X3N1ZmZpeGVzIgorCitzdGF0aWMgbG9uZyB0dW5hYmxlID0gMDsKKworVFVOQUJMRV9MT05HKCJ0
ZXN0X3R1bmFibGVfc3VmZml4ZXMudHVuYWJsZSIsICZ0dW5hYmxlKTsKKworc3RhdGljIGludAor
bG9hZCAoc3RydWN0IG1vZHVsZSAqbSwgaW50IHdoYXQsIHZvaWQgKmFyZykKK3sKKwlzd2l0Y2gg
KHdoYXQpIHsKKwljYXNlIE1PRF9MT0FEOgorCQlwcmludGYoIiVzOiAlbGRcbiIsIE1PRFVMRV9O
QU1FLCB0dW5hYmxlKTsKKwkJYnJlYWs7CisJfQorCXJldHVybiAoMCk7Cit9CisKK3N0YXRpYyBt
b2R1bGVkYXRhX3QgdGVzdF90dW5hYmxlX3N1ZmZpeGVzX21vZCA9IHsKKwlNT0RVTEVfTkFNRSwK
Kwlsb2FkLAorfTsKK0RFQ0xBUkVfTU9EVUxFKHRlc3RfdHVuYWJsZV9zdWZmaXhlcywgdGVzdF90
dW5hYmxlX3N1ZmZpeGVzX21vZCwgU0lfU1VCX0tMRCwKKyAgICBTSV9PUkRFUl9BTlkpOworTU9E
VUxFX1ZFUlNJT04odGVzdF90dW5hYmxlX3N1ZmZpeGVzLCAxKTsKSW5kZXg6IHRvb2xzL3JlZ3Jl
c3Npb24vdHVuYWJsZXMvc3VmZml4L01ha2VmaWxlCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRvb2xzL3JlZ3Jl
c3Npb24vdHVuYWJsZXMvc3VmZml4L01ha2VmaWxlCShyZXZpc2lvbiAwKQorKysgdG9vbHMvcmVn
cmVzc2lvbi90dW5hYmxlcy9zdWZmaXgvTWFrZWZpbGUJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NCBAQAorS01PRD0JdGVzdF90dW5hYmxlX3N1ZmZpeGVzCitTUkNTPQl0ZXN0X3R1bmFibGVfc3Vm
Zml4ZXMuYworCisuaW5jbHVkZSA8YnNkLmttb2QubWs+CkluZGV4OiB0b29scy9yZWdyZXNzaW9u
L3R1bmFibGVzL3N1ZmZpeC90ZXN0X3R1bmFibGVfc3VmZml4ZXMuc2gKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
dG9vbHMvcmVncmVzc2lvbi90dW5hYmxlcy9zdWZmaXgvdGVzdF90dW5hYmxlX3N1ZmZpeGVzLnNo
CShyZXZpc2lvbiAwKQorKysgdG9vbHMvcmVncmVzc2lvbi90dW5hYmxlcy9zdWZmaXgvdGVzdF90
dW5hYmxlX3N1ZmZpeGVzLnNoCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQxIEBACisjIS9iaW4v
c2gKKyMKKyMgRXhwZWN0ZWQgdmFsdWVzOgorIyAodW5zZXQpICAgOiAgICAgICAgICAgMAorIyAg
ICAgICAgIC0xOiAgICAgICAgICAtMQorIyAgICAgICAgLTFnOiAgICAgLTEwMjReMworIyAgICAg
ICAgLTFHOiAgICAgLTEwMjReMyAoc2FtZSBhcyAxZykgCisjICAgICAgICAtMWs6ICAgICAgIC0x
MDI0CisjICAgICAgICAtMUs6ICAgICAgIC0xMDI0IChzYW1lIGFzIDFLKQorIyAgICAgICAgLTFt
OiAgICAgLTEwMjReMgorIyAgICAgICAgLTFNOiAgICAgLTEwMjReMiAoc2FtZSBhcyAxbSkKKyMg
ICAgICAgIC0xdDogICAgIC0xMDI0XjQKKyMgICAgICAgIC0xVDogICAgIC0xMDI0XjQgKHNhbWUg
YXMgMXQpCisjICAgICAgICAtMXo6ICAgICAgICAgICAwIChyZWplY3QpCisjICAgICAgICAgIDE6
ICAgICAgICAgICAxCisjICAgICAgICAgMWc6ICAgICAgMTAyNF4zCisjICAgICAgICAgMUc6ICAg
ICAgMTAyNF4zIChzYW1lIGFzIDFnKSAKKyMgICAgICAgICAxazogICAgICAgIDEwMjQKKyMgICAg
ICAgICAxSzogICAgICAgIDEwMjQgKHNhbWUgYXMgMUspCisjICAgICAgICAgMW06ICAgICAgMTAy
NF4yCisjICAgICAgICAgMU06ICAgICAgMTAyNF4yIChzYW1lIGFzIDFtKQorIyAgICAgICAgIDF0
OiAgICAgIDEwMjReNAorIyAgICAgICAgIDFUOiAgICAgIDEwMjReNCAoc2FtZSBhcyAxdCkKKyMg
ICAgICAgICAxejogICAgICAgICAgIDAgKHJlamVjdCkKKyMgICAgICAgICAxVDogICAgICAgICAg
IDAgKHJlamVjdCkKKworTU9ETkFNRT0iJChiYXNlbmFtZSAiJDAiIC5zaCkiCisKK3Rlc3RfbW9k
dWxlKCkgeworCWtsZGxvYWQgLi8kTU9ETkFNRS5rbworCWtsZHVubG9hZCAuLyRNT0ROQU1FLmtv
Cit9CisKK2tlbnYgLXUgJE1PRE5BTUUudHVuYWJsZSAyPi9kZXYvbnVsbAordGVzdF9tb2R1bGUK
K2ZvciBpIGluIC0xIDAgMTsgZG8KKwlmb3IgaiBpbiAnJyBnIEcgayBLIG0gTSB0IFQgeiBaOyBk
bworCQlrZW52ICRNT0ROQU1FLnR1bmFibGU9IiRpJGoiCisJCXRlc3RfbW9kdWxlCisJZG9uZQor
ZG9uZQpJbmRleDogdG9vbHMvcmVncmVzc2lvbi90dW5hYmxlcy9zdHJpbmcvdGVzdF9zdHJpbmdf
dHVuYWJsZS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvc3RyaW5n
L3Rlc3Rfc3RyaW5nX3R1bmFibGUuYwkocmV2aXNpb24gMCkKKysrIHRvb2xzL3JlZ3Jlc3Npb24v
dHVuYWJsZXMvc3RyaW5nL3Rlc3Rfc3RyaW5nX3R1bmFibGUuYwkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwzMSBAQAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5o
PgorI2luY2x1ZGUgPHN5cy9wcm9jLmg+CisjaW5jbHVkZSA8c3lzL21vZHVsZS5oPgorI2luY2x1
ZGUgPHN5cy9rZXJuZWwuaD4KKyNpbmNsdWRlIDxzeXMvc3lzdG0uaD4KKworI2RlZmluZSBNT0RV
TEVfTkFNRQkidGVzdF9zdHJpbmdfdHVuYWJsZSIKKworc3RhdGljIGNoYXIgdHVuYWJsZVsxMF07
CisKK1RVTkFCTEVfU1RSKCJ0ZXN0X3N0cmluZ190dW5hYmxlLnR1bmFibGUiLCB0dW5hYmxlLCBz
aXplb2YodHVuYWJsZSkpOworCitzdGF0aWMgaW50Citsb2FkIChtb2R1bGVfdCBtLCBpbnQgd2hh
dCwgdm9pZCAqYXJnKQoreworCXN3aXRjaCAod2hhdCkgeworCWNhc2UgTU9EX0xPQUQ6CisJCXBy
aW50ZigiJXM6ICVzXG4iLCBNT0RVTEVfTkFNRSwgdHVuYWJsZSk7CisJCWJyZWFrOworCX0KKwly
ZXR1cm4gKDApOworfQorCitzdGF0aWMgbW9kdWxlZGF0YV90IHRlc3Rfc3RyaW5nX3R1bmFibGVf
bW9kID0geworCU1PRFVMRV9OQU1FLAorCWxvYWQsCit9OworREVDTEFSRV9NT0RVTEUodGVzdF9z
dHJpbmdfdHVuYWJsZSwgdGVzdF9zdHJpbmdfdHVuYWJsZV9tb2QsIFNJX1NVQl9LTEQsCisgICAg
U0lfT1JERVJfQU5ZKTsKK01PRFVMRV9WRVJTSU9OKHRlc3Rfc3RyaW5nX3R1bmFibGUsIDEpOwpJ
bmRleDogdG9vbHMvcmVncmVzc2lvbi90dW5hYmxlcy9zdHJpbmcvdGVzdF9zdHJpbmdfdHVuYWJs
ZS5zaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSB0b29scy9yZWdyZXNzaW9uL3R1bmFibGVzL3N0cmluZy90ZXN0
X3N0cmluZ190dW5hYmxlLnNoCShyZXZpc2lvbiAwKQorKysgdG9vbHMvcmVncmVzc2lvbi90dW5h
Ymxlcy9zdHJpbmcvdGVzdF9zdHJpbmdfdHVuYWJsZS5zaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwyMiBAQAorIyEvYmluL3NoCisjCisjIEV4cGVjdGVkIHZhbHVlczoKKyMgKHVuc2V0KSAgICAg
ICAgICAgICAgOiAgICAgICAgICAiIgorIyAiIiAgICAgICAgICAgICAgICAgICA6ICAgICAgICAg
ICIiCisjIGFzZGYxMjM0ICAgICAgICAgICAgIDogICAgYXNkZjEyMzQKKyMgY2hhcmFjdGVyICAg
ICAgICAgICAgOiAgIGNoYXJhY3RlcgorIyBhc29ydG9mbG9uZ2lzaHN0cmluZyA6ICAgYXNvcnRv
ZmxvCisjCisKK01PRE5BTUU9IiQoYmFzZW5hbWUgIiQwIiAuc2gpIgorCit0ZXN0X21vZHVsZSgp
IHsKKwlrbGRsb2FkIC4vJE1PRE5BTUUua28KKwlrbGR1bmxvYWQgLi8kTU9ETkFNRS5rbworfQor
Cit0ZXN0X21vZHVsZQorZm9yIGkgaW4gIiIgYXNkZjEyMzQgY2hhcmFjdGVyIGFzb3J0b2Zsb25n
aXNoc3RyaW5nOyBkbworCWtlbnYgJE1PRE5BTUUudHVuYWJsZT0iJGkiCisJdGVzdF9tb2R1bGUK
K2RvbmUKSW5kZXg6IHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvc3RyaW5nL01ha2VmaWxlCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvc3RyaW5nL01ha2VmaWxlCShy
ZXZpc2lvbiAwKQorKysgdG9vbHMvcmVncmVzc2lvbi90dW5hYmxlcy9zdHJpbmcvTWFrZWZpbGUJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorS01PRD0JdGVzdF9zdHJpbmdfdHVuYWJsZQor
U1JDUz0JdGVzdF9zdHJpbmdfdHVuYWJsZS5jCisKKy5pbmNsdWRlIDxic2Qua21vZC5taz4KSW5k
ZXg6IHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvc2l6ZS90ZXN0X3NpemVfdHVuYWJsZS5jCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvc2l6ZS90ZXN0X3NpemVfdHVu
YWJsZS5jCShyZXZpc2lvbiAwKQorKysgdG9vbHMvcmVncmVzc2lvbi90dW5hYmxlcy9zaXplL3Rl
c3Rfc2l6ZV90dW5hYmxlLmMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzEgQEAKKyNpbmNsdWRl
IDxzeXMvcGFyYW0uaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvcHJv
Yy5oPgorI2luY2x1ZGUgPHN5cy9tb2R1bGUuaD4KKyNpbmNsdWRlIDxzeXMva2VybmVsLmg+Cisj
aW5jbHVkZSA8c3lzL3N5c3RtLmg+CisKKyNkZWZpbmUgTU9EVUxFX05BTUUJInRlc3Rfc2l6ZV90
dW5hYmxlIgorCitzdGF0aWMgc2l6ZV90IHR1bmFibGUgPSAwOworCitUVU5BQkxFX1NJWkUoInRl
c3Rfc2l6ZV90dW5hYmxlLnR1bmFibGUiLCAmdHVuYWJsZSk7CisKK3N0YXRpYyBpbnQKK2xvYWQg
KG1vZHVsZV90IG0sIGludCB3aGF0LCB2b2lkICphcmcpCit7CisJc3dpdGNoICh3aGF0KSB7CisJ
Y2FzZSBNT0RfTE9BRDoKKwkJcHJpbnRmKCIlczogJXp1XG4iLCBNT0RVTEVfTkFNRSwgdHVuYWJs
ZSk7CisJCWJyZWFrOworCX0KKwlyZXR1cm4gKDApOworfQorCitzdGF0aWMgbW9kdWxlZGF0YV90
IHRlc3Rfc2l6ZV90dW5hYmxlX21vZCA9IHsKKwlNT0RVTEVfTkFNRSwKKwlsb2FkLAorfTsKK0RF
Q0xBUkVfTU9EVUxFKHRlc3Rfc2l6ZV90dW5hYmxlLCB0ZXN0X3NpemVfdHVuYWJsZV9tb2QsIFNJ
X1NVQl9LTEQsCisgICAgU0lfT1JERVJfQU5ZKTsKK01PRFVMRV9WRVJTSU9OKHRlc3Rfc2l6ZV90
dW5hYmxlLCAxKTsKSW5kZXg6IHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvc2l6ZS90ZXN0X3Np
emVfdHVuYWJsZS5zaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0b29scy9yZWdyZXNzaW9uL3R1bmFibGVzL3Np
emUvdGVzdF9zaXplX3R1bmFibGUuc2gJKHJldmlzaW9uIDApCisrKyB0b29scy9yZWdyZXNzaW9u
L3R1bmFibGVzL3NpemUvdGVzdF9zaXplX3R1bmFibGUuc2gJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMzggQEAKKyMhL2Jpbi9zaAorIworIyBFeHBlY3RlZCB2YWx1ZXM6CisjICh1bnNldCkgICAg
OiAgICAgICAgICAgMAorIyAgICAgIC0xICAgIDogICBVTE9OR19NQVgKKyMgICAgICAgMCAgICA6
ICAgICAgICAgICAwCisjICAgICAgNDIgICAgOiAgICAgICAgICA0MgorIyBhc2RmMTIzNCAgIDog
ICAgICAgICAgIDAgKHJlamVjdCkKKyMgTE9OR19NQVgrMSA6ICBMT05HX01BWCsxCisjIFVMT05H
X01BWC0xOiBVTE9OR19NQVgtMQorIyBVTE9OR19NQVgrMTogICBVTE9OR19NQVgKKyMKKworTU9E
TkFNRT0iJChiYXNlbmFtZSAiJDAiIC5zaCkiCisKK3Rlc3RfbW9kdWxlKCkgeworCWtsZGxvYWQg
Li8kTU9ETkFNRS5rbworCWtsZHVubG9hZCAuLyRNT0ROQU1FLmtvCit9CisKK2Nhc2UgIiQoJChk
aXJuYW1lICIkMCIpLy4uL3Rvb2xzL2dldHdvcmRzaXplKSIgaW4KKzMyKQorCUxPTkdfTUFYX1BM
VVNfMT0yMTQ3NDgzNjQ5CisJVUxPTkdfTUFYX01JTlVTXzE9NDI5NDk2NzI5NQorCVVMT05HX01B
WF9QTFVTXzE9NDI5NDk2NzI5NworCTs7Cis2NCkKKwlMT05HX01BWF9QTFVTXzE9OTIyMzM3MjAz
Njg1NDc3NTgwOAorCVVMT05HX01BWF9NSU5VU18xPTE4NDQ2NzQ0MDczNzA5NTUxNjE0CisJVUxP
TkdfTUFYX1BMVVNfMT0xODQ0Njc0NDA3MzcwOTU1MTYxNgorCTs7Citlc2FjCitrZW52IC11ICRN
T0ROQU1FLnR1bmFibGUgMj4vZGV2L251bGwKK3Rlc3RfbW9kdWxlCitmb3IgaSBpbiAtMSAwIDQy
IGFzZGYxMjM0ICRMT05HX01BWF9QTFVTXzEgJFVMT05HX01BWF9NSU5VU18xICRVTE9OR19NQVhf
UExVU18xOyBkbworCWtlbnYgJE1PRE5BTUUudHVuYWJsZT0iJGkiCisJdGVzdF9tb2R1bGUKK2Rv
bmUKSW5kZXg6IHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvc2l6ZS9NYWtlZmlsZQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSB0b29scy9yZWdyZXNzaW9uL3R1bmFibGVzL3NpemUvTWFrZWZpbGUJKHJldmlzaW9u
IDApCisrKyB0b29scy9yZWdyZXNzaW9uL3R1bmFibGVzL3NpemUvTWFrZWZpbGUJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNCBAQAorS01PRD0JdGVzdF9zaXplX3R1bmFibGUKK1NSQ1M9CXRlc3Rf
c2l6ZV90dW5hYmxlLmMKKworLmluY2x1ZGUgPGJzZC5rbW9kLm1rPgpJbmRleDogdG9vbHMvcmVn
cmVzc2lvbi90dW5hYmxlcy9xdWFkL3Rlc3RfcXVhZF90dW5hYmxlLmMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
dG9vbHMvcmVncmVzc2lvbi90dW5hYmxlcy9xdWFkL3Rlc3RfcXVhZF90dW5hYmxlLmMJKHJldmlz
aW9uIDApCisrKyB0b29scy9yZWdyZXNzaW9uL3R1bmFibGVzL3F1YWQvdGVzdF9xdWFkX3R1bmFi
bGUuYwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMSBAQAorI2luY2x1ZGUgPHN5cy9wYXJhbS5o
PgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9wcm9jLmg+CisjaW5jbHVk
ZSA8c3lzL21vZHVsZS5oPgorI2luY2x1ZGUgPHN5cy9rZXJuZWwuaD4KKyNpbmNsdWRlIDxzeXMv
c3lzdG0uaD4KKworI2RlZmluZSBNT0RVTEVfTkFNRQkidGVzdF9xdWFkX3R1bmFibGUiCisKK3N0
YXRpYyBxdWFkX3QgdHVuYWJsZSA9IDA7CisKK1RVTkFCTEVfUVVBRCgidGVzdF9xdWFkX3R1bmFi
bGUudHVuYWJsZSIsICZ0dW5hYmxlKTsKKworc3RhdGljIGludAorbG9hZCAobW9kdWxlX3QgbSwg
aW50IHdoYXQsIHZvaWQgKmFyZykKK3sKKwlzd2l0Y2ggKHdoYXQpIHsKKwljYXNlIE1PRF9MT0FE
OgorCQlwcmludGYoIiVzOiAlbGRcbiIsIE1PRFVMRV9OQU1FLCB0dW5hYmxlKTsKKwkJYnJlYWs7
CisJfQorCXJldHVybiAoMCk7Cit9CisKK3N0YXRpYyBtb2R1bGVkYXRhX3QgdGVzdF9xdWFkX3R1
bmFibGVfbW9kID0geworCU1PRFVMRV9OQU1FLAorCWxvYWQsCit9OworREVDTEFSRV9NT0RVTEUo
dGVzdF9xdWFkX3R1bmFibGUsIHRlc3RfcXVhZF90dW5hYmxlX21vZCwgU0lfU1VCX0tMRCwKKyAg
ICBTSV9PUkRFUl9BTlkpOworTU9EVUxFX1ZFUlNJT04odGVzdF9xdWFkX3R1bmFibGUsIDEpOwpJ
bmRleDogdG9vbHMvcmVncmVzc2lvbi90dW5hYmxlcy9xdWFkL3Rlc3RfcXVhZF90dW5hYmxlLnNo
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvcXVhZC90ZXN0X3F1YWRf
dHVuYWJsZS5zaAkocmV2aXNpb24gMCkKKysrIHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvcXVh
ZC90ZXN0X3F1YWRfdHVuYWJsZS5zaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MCBAQAorIyEv
YmluL3NoCisjCisjIEV4cGVjdGVkIHZhbHVlczoKKyMgKHVuc2V0KSAgICA6ICAgICAgICAgICAw
CisjICAgICAgIDAgICAgOiAgICAgICAgICAgMAorIyAgICAgIDQyICAgIDogICAgICAgICAgNDIK
KyMgYXNkZjEyMzQgICA6ICAgICAgICAgICAwIChyZWplY3QpCisjIExPTkdfTUlOLTEgOiAgTE9O
R19NSU4KKyMgTE9OR19NSU4rMSA6ICBMT05HX01JTisxCisjIExPTkdfTUFYLTEgOiAgTE9OR19N
QVgtMQorIyBMT05HX01BWCsxIDogIExPTkdfTUFYCisjCisKK01PRE5BTUU9IiQoYmFzZW5hbWUg
IiQwIiAuc2gpIgorCit0ZXN0X21vZHVsZSgpIHsKKwlrbGRsb2FkIC4vJE1PRE5BTUUua28KKwlr
bGR1bmxvYWQgLi8kTU9ETkFNRS5rbworfQorCitjYXNlICIkKCQoZGlybmFtZSAiJDAiKS8uLi90
b29scy9nZXR3b3Jkc2l6ZSkiIGluCiszMikKKwlMT05HX01JTl9NSU5VU18xPSItMjE0NzQ4MzY0
OSIKKwlMT05HX01JTl9QTFVTXzE9Ii0yMTQ3NDgzNjQ3IgorCUxPTkdfTUFYX01JTlVTXzE9MjE0
NzQ4MzY0NworCUxPTkdfTUFYX1BMVVNfMT0yMTQ3NDgzNjQ5CisJOzsKKzY0KQorCUxPTkdfTUlO
X01JTlVTXzE9Ii05MjIzMzcyMDM2ODU0Nzc1ODA5IgorCUxPTkdfTUlOX1BMVVNfMT0iLTkyMjMz
NzIwMzY4NTQ3NzU4MDciCisJTE9OR19NQVhfTUlOVVNfMT05MjIzMzcyMDM2ODU0Nzc1ODA2CisJ
TE9OR19NQVhfUExVU18xPTkyMjMzNzIwMzY4NTQ3NzU4MDgKKwk7OworZXNhYwora2VudiAtdSAk
TU9ETkFNRS50dW5hYmxlIDI+L2Rldi9udWxsCit0ZXN0X21vZHVsZQorZm9yIGkgaW4gMCA0MiBh
c2RmMTIzNCAkTE9OR19NSU5fTUlOVVNfMSAkTE9OR19NSU5fUExVU18xICRMT05HX01BWF9NSU5V
U18xICRMT05HX01BWF9QTFVTXzEgOyBkbworCWtlbnYgJE1PRE5BTUUudHVuYWJsZT0iJGkiCisJ
dGVzdF9tb2R1bGUKK2RvbmUKSW5kZXg6IHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvcXVhZC9N
YWtlZmlsZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSB0b29scy9yZWdyZXNzaW9uL3R1bmFibGVzL3F1YWQvTWFr
ZWZpbGUJKHJldmlzaW9uIDApCisrKyB0b29scy9yZWdyZXNzaW9uL3R1bmFibGVzL3F1YWQvTWFr
ZWZpbGUJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorS01PRD0JdGVzdF9xdWFkX3R1bmFi
bGUKK1NSQ1M9CXRlc3RfcXVhZF90dW5hYmxlLmMKKworLmluY2x1ZGUgPGJzZC5rbW9kLm1rPgpJ
bmRleDogdG9vbHMvcmVncmVzc2lvbi90dW5hYmxlcy9pbnQvdGVzdF9pbnRfdHVuYWJsZS5jCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvaW50L3Rlc3RfaW50X3R1bmFi
bGUuYwkocmV2aXNpb24gMCkKKysrIHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvaW50L3Rlc3Rf
aW50X3R1bmFibGUuYwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMSBAQAorI2luY2x1ZGUgPHN5
cy9wYXJhbS5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9wcm9jLmg+
CisjaW5jbHVkZSA8c3lzL2tlcm5lbC5oPgorI2luY2x1ZGUgPHN5cy9zeXN0bS5oPgorI2luY2x1
ZGUgPHN5cy9tb2R1bGUuaD4KKworI2RlZmluZSBNT0RVTEVfTkFNRQkidGVzdF9pbnRfdHVuYWJs
ZSIKKworc3RhdGljIGludCB0dW5hYmxlID0gMDsKKworVFVOQUJMRV9JTlQoInRlc3RfaW50X3R1
bmFibGUudHVuYWJsZSIsICZ0dW5hYmxlKTsKKworc3RhdGljIGludAorbG9hZCAobW9kdWxlX3Qg
bSwgaW50IHdoYXQsIHZvaWQgKmFyZykKK3sKKwlzd2l0Y2ggKHdoYXQpIHsKKwljYXNlIE1PRF9M
T0FEOgorCQlwcmludGYoIiVzOiAlZFxuIiwgTU9EVUxFX05BTUUsIHR1bmFibGUpOworCQlicmVh
azsKKwl9CisJcmV0dXJuICgwKTsKK30KKworc3RhdGljIG1vZHVsZWRhdGFfdCB0ZXN0X2ludF90
dW5hYmxlX21vZCA9IHsKKwlNT0RVTEVfTkFNRSwKKwlsb2FkLAorfTsKK0RFQ0xBUkVfTU9EVUxF
KHRlc3RfaW50X3R1bmFibGUsIHRlc3RfaW50X3R1bmFibGVfbW9kLCBTSV9TVUJfS0xELAorICAg
IFNJX09SREVSX0FOWSk7CitNT0RVTEVfVkVSU0lPTih0ZXN0X2ludF90dW5hYmxlLCAxKTsKSW5k
ZXg6IHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvaW50L3Rlc3RfaW50X3R1bmFibGUuc2gKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gdG9vbHMvcmVncmVzc2lvbi90dW5hYmxlcy9pbnQvdGVzdF9pbnRfdHVuYWJs
ZS5zaAkocmV2aXNpb24gMCkKKysrIHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvaW50L3Rlc3Rf
aW50X3R1bmFibGUuc2gJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzEgQEAKKyMhL2Jpbi9zaAor
IworIyBFeHBlY3RlZCB2YWx1ZXM6CisjICh1bnNldCkgICA6ICAgICAgICAgICAwCisjICAgICAg
LTEgICA6ICAgICAgICAgIC0xCisjICAgICAgIDAgICA6ICAgICAgICAgICAwCisjICAgICAgNDIg
ICA6ICAgICAgICAgIDQyCisjIGFzZGYxMjM0ICA6ICAgICAgICAgICAwIChyZWplY3QpCisjIElO
VF9NSU4rMSA6ICAgSU5UX01JTisxCisjIElOVF9NSU4tMSA6ICAgICAgICAgICAwIChyZWplY3Qp
CisjIElOVF9NQVgtMSA6ICAgSU5UX01BWC0xCisjIElOVF9NQVgrMSA6ICAgICAgICAgICAwIChy
ZWplY3QpCisjCisKK01PRE5BTUU9IiQoYmFzZW5hbWUgIiQwIiAuc2gpIgorCit0ZXN0X21vZHVs
ZSgpIHsKKwlrbGRsb2FkIC4vJE1PRE5BTUUua28KKwlrbGR1bmxvYWQgLi8kTU9ETkFNRS5rbwor
fQorCitJTlRfTUlOX1BMVVNfT05FPS0yMTQ3NDgzNjQ3CitJTlRfTUlOX01JTlVTX09ORT0tMjE0
NzQ4MzY0OQorSU5UX01BWF9NSU5VU19PTkU9MjE0NzQ4MzY0NgorSU5UX01BWF9QTFVTX09ORT0y
MTQ3NDgzNjQ4CitrZW52IC11ICRNT0ROQU1FLnR1bmFibGUgMj4vZGV2L251bGwKK3Rlc3RfbW9k
dWxlCitmb3IgaSBpbiAtMSAwIDQyIGFzZGYxMjM0ICRJTlRfTUlOX1BMVVNfT05FICRJTlRfTUlO
X01JTlVTX09ORSAkSU5UX01BWF9NSU5VU19PTkUgJElOVF9NQVhfUExVU19PTkU7IGRvCisJa2Vu
diAkTU9ETkFNRS50dW5hYmxlPSIkaSIKKwl0ZXN0X21vZHVsZQorZG9uZQpJbmRleDogdG9vbHMv
cmVncmVzc2lvbi90dW5hYmxlcy9pbnQvTWFrZWZpbGUKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdG9vbHMvcmVn
cmVzc2lvbi90dW5hYmxlcy9pbnQvTWFrZWZpbGUJKHJldmlzaW9uIDApCisrKyB0b29scy9yZWdy
ZXNzaW9uL3R1bmFibGVzL2ludC9NYWtlZmlsZQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBA
CitLTU9EPQl0ZXN0X2ludF90dW5hYmxlCitTUkNTPQl0ZXN0X2ludF90dW5hYmxlLmMKKworLmlu
Y2x1ZGUgPGJzZC5rbW9kLm1rPgpJbmRleDogdG9vbHMvcmVncmVzc2lvbi90dW5hYmxlcy9NYWtl
ZmlsZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSB0b29scy9yZWdyZXNzaW9uL3R1bmFibGVzL01ha2VmaWxlCShy
ZXZpc2lvbiAwKQorKysgdG9vbHMvcmVncmVzc2lvbi90dW5hYmxlcy9NYWtlZmlsZQkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxMCBAQAorU1VCRElSPQkJdG9vbHMJCVwKKwkJaW50IHVpbnQJXAor
CQlsb25nIHVsb25nCVwKKwkJcG9pbnRlcgkJXAorCQlxdWFkIHVxdWFkCVwKKwkJc2l6ZQkJXAor
CQlzdHJpbmcJCVwKKwkJc3VmZml4CQlcCisKKy5pbmNsdWRlIDxic2Quc3ViZGlyLm1rPgo=
--000e0cdfc900503d80049354fd59--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTim-XVhm-RLUo7rwwJ%2B3=tCHMKNsk9DbtrSezxHo>