svn commit: r253680 - in head: lib/libfetch usr.bin/fetch
QXV0aG9yOiBkZXMKRGF0ZTogRnJpIEp1bCAyNiAxNTo1Mzo0MyAyMDEzCk5ldyBSZXZpc2lvbjog
MjUzNjgwClVSTDogaHR0cDovL3N2bndlYi5mcmVlYnNkLm9yZy9jaGFuZ2VzZXQvYmFzZS8yNTM2
ODAKCkxvZzoKICBJbXBsZW1lbnQgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uLCBhbmQgbWFueSBv
dGhlciBTU0wtcmVsYXRlZAogIGltcm92ZW1lbnRzOyBjb21wbGV0ZSBkZXRhaWxzIGluIHRoZSBQ
Ui4KICAKICBQUjoJCWtlcm4vMTc1NTE0CiAgU3VibWl0dGVkIGJ5OglNaWNoYWVsIEdtZWxpbiA8
ZnJlZWJzZEBncmVtLmRlPgogIE1GQyBhZnRlcjoJMSB3ZWVrCgpNb2RpZmllZDoKICBoZWFkL2xp
Yi9saWJmZXRjaC9jb21tb24uYwogIGhlYWQvbGliL2xpYmZldGNoL2NvbW1vbi5oCiAgaGVhZC9s
aWIvbGliZmV0Y2gvZmV0Y2guMwogIGhlYWQvbGliL2xpYmZldGNoL2h0dHAuYwogIGhlYWQvdXNy
LmJpbi9mZXRjaC9mZXRjaC4xCiAgaGVhZC91c3IuYmluL2ZldGNoL2ZldGNoLmMKCk1vZGlmaWVk
OiBoZWFkL2xpYi9saWJmZXRjaC9jb21tb24uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGhl
YWQvbGliL2xpYmZldGNoL2NvbW1vbi5jCUZyaSBKdWwgMjYgMTQ6NDM6MzggMjAxMwkocjI1MzY3
OSkKKysrIGhlYWQvbGliL2xpYmZldGNoL2NvbW1vbi5jCUZyaSBKdWwgMjYgMTU6NTM6NDMgMjAx
MwkocjI1MzY4MCkKQEAgLTEsNSArMSw2IEBACiAvKi0KICAqIENvcHlyaWdodCAoYykgMTk5OC0y
MDExIERhZy1FcmxpbmcgU23DuHJncmF2CisgKiBDb3B5cmlnaHQgKGMpIDIwMTMgTWljaGFlbCBH
bWVsaW4gPGZyZWVic2RAZ3JlbS5kZT4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CkBAIC00Nyw2ICs0OCwxMCBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAjaW5j
bHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAKKyNpZmRlZiBXSVRIX1NTTAor
I2luY2x1ZGUgPG9wZW5zc2wveDUwOXYzLmg+CisjZW5kaWYKKwogI2luY2x1ZGUgImZldGNoLmgi
CiAjaW5jbHVkZSAiY29tbW9uLmgiCiAKQEAgLTMxNywxNSArMzIyLDQ4OCBAQCBmZXRjaF9jb25u
ZWN0KGNvbnN0IGNoYXIgKmhvc3QsIGludCBwb3J0CiAJcmV0dXJuIChjb25uKTsKIH0KIAorI2lm
ZGVmIFdJVEhfU1NMCisvKgorICogQ29udmVydCBjaGFyYWN0ZXJzIEEtWiB0byBsb3dlcmNhc2Ug
KGludGVudGlvbmFsbHkgYXZvaWQgYW55IGxvY2FsZQorICogc3BlY2lmaWMgY29udmVyc2lvbnMp
LgorICovCitzdGF0aWMgY2hhcgorZmV0Y2hfc3NsX3RvbG93ZXIoY2hhciBpbikKK3sKKwlpZiAo
aW4gPj0gJ0EnICYmIGluIDw9ICdaJykKKwkJcmV0dXJuIChpbiArIDMyKTsKKwllbHNlCisJCXJl
dHVybiAoaW4pOworfQorCisvKgorICogaXNhbHBoYSBpbXBsZW1lbnRhdGlvbiB0aGF0IGludGVu
dGlvbmFsbHkgYXZvaWRzIGFueSBsb2NhbGUgc3BlY2lmaWMKKyAqIGNvbnZlcnNpb25zLgorICov
CitzdGF0aWMgaW50CitmZXRjaF9zc2xfaXNhbHBoYShjaGFyIGluKQoreworCXJldHVybiAoKGlu
ID49ICdBJyAmJiBpbiA8PSAnWicpIHx8IChpbiA+PSAnYScgJiYgaW4gPD0gJ3onKSk7Cit9CisK
Ky8qCisgKiBDaGVjayBpZiBwYXNzZWQgaG9zdG5hbWVzIGEgYW5kIGIgYXJlIGVxdWFsLgorICov
CitzdGF0aWMgaW50CitmZXRjaF9zc2xfaG5hbWVfZXF1YWwoY29uc3QgY2hhciAqYSwgc2l6ZV90
IGFsZW4sIGNvbnN0IGNoYXIgKmIsCisgICAgc2l6ZV90IGJsZW4pCit7CisJc2l6ZV90IGk7CisK
KwlpZiAoYWxlbiAhPSBibGVuKQorCQlyZXR1cm4gKDApOworCWZvciAoaSA9IDA7IGkgPCBhbGVu
OyArK2kpIHsKKwkJaWYgKGZldGNoX3NzbF90b2xvd2VyKGFbaV0pICE9IGZldGNoX3NzbF90b2xv
d2VyKGJbaV0pKQorCQkJcmV0dXJuICgwKTsKKwl9CisJcmV0dXJuICgxKTsKK30KKworLyoKKyAq
IENoZWNrIGlmIGRvbWFpbiBsYWJlbCBpcyB0cmFkaXRpb25hbCwgbWVhbmluZyB0aGF0IG9ubHkg
QS1aLCBhLXosIDAtOQorICogYW5kICctJyAoaHlwaGVuKSBhcmUgYWxsb3dlZC4gSHlwaGVucyBo
YXZlIHRvIGJlIHN1cnJvdW5kZWQgYnkgYWxwaGEtCisgKiBudW1lcmljIGNoYXJhY3RlcnMuIERv
dWJsZSBoeXBoZW5zIChsaWtlIHRoZXkncmUgZm91bmQgaW4gSUROIGEtbGFiZWxzCisgKiAneG4t
LScpIGFyZSBub3QgYWxsb3dlZC4gRW1wdHkgbGFiZWxzIGFyZSBpbnZhbGlkLgorICovCitzdGF0
aWMgaW50CitmZXRjaF9zc2xfaXNfdHJhZF9kb21haW5fbGFiZWwoY29uc3QgY2hhciAqbCwgc2l6
ZV90IGxlbiwgaW50IHdjb2spCit7CisJc2l6ZV90IGk7CisKKwlpZiAoIWxlbiB8fCBsWzBdID09
ICctJyB8fCBsW2xlbi0xXSA9PSAnLScpCisJCXJldHVybiAoMCk7CisJZm9yIChpID0gMDsgaSA8
IGxlbjsgKytpKSB7CisJCWlmICghaXNkaWdpdChsW2ldKSAmJgorCQkgICAgIWZldGNoX3NzbF9p
c2FscGhhKGxbaV0pICYmCisJCSAgICAhKGxbaV0gPT0gJyonICYmIHdjb2spICYmCisJCSAgICAh
KGxbaV0gPT0gJy0nICYmIGxbaSAtIDFdICE9ICctJykpCisJCQlyZXR1cm4gKDApOworCX0KKwly
ZXR1cm4gKDEpOworfQorCisvKgorICogQ2hlY2sgaWYgaG9zdCBuYW1lIGNvbnNpc3RzIG9ubHkg
b2YgbnVtYmVycy4gVGhpcyBtaWdodCBpbmRpY2F0ZSBhbiBJUAorICogYWRkcmVzcywgd2hpY2gg
aXMgbm90IGEgZ29vZCBpZGVhIGZvciBDTiB3aWxkY2FyZCBjb21wYXJpc29uLgorICovCitzdGF0
aWMgaW50CitmZXRjaF9zc2xfaG5hbWVfaXNfb25seV9udW1iZXJzKGNvbnN0IGNoYXIgKmhvc3Ru
YW1lLCBzaXplX3QgbGVuKQoreworCXNpemVfdCBpOworCisJZm9yIChpID0gMDsgaSA8IGxlbjsg
KytpKSB7CisJCWlmICghKChob3N0bmFtZVtpXSA+PSAnMCcgJiYgaG9zdG5hbWVbaV0gPD0gJzkn
KSB8fAorCQkgICAgaG9zdG5hbWVbaV0gPT0gJy4nKSkKKwkJCXJldHVybiAoMCk7CisJfQorCXJl
dHVybiAoMSk7Cit9CisKKy8qCisgKiBDaGVjayBpZiB0aGUgaG9zdCBuYW1lIGggcGFzc2VkIG1h
dGNoZXMgdGhlIHBhdHRlcm4gcGFzc2VkIGluIG0gd2hpY2gKKyAqIGlzIHVzdWFsbHkgcGFydCBv
ZiBzdWJqZWN0QWx0TmFtZSBvciBDTiBvZiBhIGNlcnRpZmljYXRlIHByZXNlbnRlZCB0bworICog
dGhlIGNsaWVudC4gVGhpcyBpbmNsdWRlcyB3aWxkY2FyZCBtYXRjaGluZy4gVGhlIGFsZ29yaXRo
bSBpcyBiYXNlZCBvbgorICogUkZDNjEyNSwgc2VjdGlvbnMgNi40LjMgYW5kIDcuMiwgd2hpY2gg
Y2xhcmlmaWVzIFJGQzI4MTggYW5kIFJGQzMyODAuCisgKi8KK3N0YXRpYyBpbnQKK2ZldGNoX3Nz
bF9obmFtZV9tYXRjaChjb25zdCBjaGFyICpoLCBzaXplX3QgaGxlbiwgY29uc3QgY2hhciAqbSwK
KyAgICBzaXplX3QgbWxlbikKK3sKKwlpbnQgZGVsdGEsIGhkb3RpZHgsIG1kb3QxaWR4LCB3Y2lk
eDsKKwljb25zdCBjaGFyICpoZG90LCAqbWRvdDEsICptZG90MjsKKwljb25zdCBjaGFyICp3Yzsg
Lyogd2lsZGNhcmQgKi8KKworCWlmICghKGggJiYgKmggJiYgbSAmJiAqbSkpCisJCXJldHVybiAo
MCk7CisJaWYgKCh3YyA9IHN0cm5zdHIobSwgIioiLCBtbGVuKSkgPT0gTlVMTCkKKwkJcmV0dXJu
IChmZXRjaF9zc2xfaG5hbWVfZXF1YWwoaCwgaGxlbiwgbSwgbWxlbikpOworCXdjaWR4ID0gd2Mg
LSBtOworCS8qIGhvc3RuYW1lIHNob3VsZCBub3QgYmUganVzdCBkb3RzIGFuZCBudW1iZXJzICov
CisJaWYgKGZldGNoX3NzbF9obmFtZV9pc19vbmx5X251bWJlcnMoaCwgaGxlbikpCisJCXJldHVy
biAoMCk7CisJLyogb25seSBvbmUgd2lsZGNhcmQgYWxsb3dlZCBpbiBwYXR0ZXJuICovCisJaWYg
KHN0cm5zdHIod2MgKyAxLCAiKiIsIG1sZW4gLSB3Y2lkeCAtIDEpICE9IE5VTEwpCisJCXJldHVy
biAoMCk7CisJLyoKKwkgKiB0aGVyZSBtdXN0IGJlIGF0IGxlYXN0IHR3byBtb3JlIGRvbWFpbiBs
YWJlbHMgYW5kCisJICogd2lsZGNhcmQgaGFzIHRvIGJlIGluIHRoZSBsZWZ0bW9zdCBsYWJlbCAo
UkZDNjEyNSkKKwkgKi8KKwltZG90MSA9IHN0cm5zdHIobSwgIi4iLCBtbGVuKTsKKwlpZiAobWRv
dDEgPT0gTlVMTCB8fCBtZG90MSA8IHdjIHx8IChtbGVuIC0gKG1kb3QxIC0gbSkpIDwgNCkKKwkJ
cmV0dXJuICgwKTsKKwltZG90MWlkeCA9IG1kb3QxIC0gbTsKKwltZG90MiA9IHN0cm5zdHIobWRv
dDEgKyAxLCAiLiIsIG1sZW4gLSBtZG90MWlkeCAtIDEpOworCWlmIChtZG90MiA9PSBOVUxMIHx8
IChtbGVuIC0gKG1kb3QyIC0gbSkpIDwgMikKKwkJcmV0dXJuICgwKTsKKwkvKiBob3N0bmFtZSBt
dXN0IGNvbnRhaW4gYSBkb3QgYW5kIG5vdCBiZSB0aGUgMXN0IGNoYXIgKi8KKwloZG90ID0gc3Ry
bnN0cihoLCAiLiIsIGhsZW4pOworCWlmIChoZG90ID09IE5VTEwgfHwgaGRvdCA9PSBoKQorCQly
ZXR1cm4gKDApOworCWhkb3RpZHggPSBoZG90IC0gaDsKKwkvKgorCSAqIGhvc3QgcGFydCBvZiBo
b3N0bmFtZSBtdXN0IGJlIGF0IGxlYXN0IGFzIGxvbmcgYXMKKwkgKiBwYXR0ZXJuIGl0J3Mgc3Vw
cG9zZWQgdG8gbWF0Y2gKKwkgKi8KKwlpZiAoaGRvdGlkeCA8IG1kb3QxaWR4KQorCQlyZXR1cm4g
KDApOworCS8qCisJICogZG9uJ3QgYWxsb3cgd2lsZGNhcmRzIGluIG5vbi10cmFkaXRpb25hbCBk
b21haW4gbmFtZXMKKwkgKiAoSUROLCBBLWxhYmVsLCBVLWxhYmVsLi4uKQorCSAqLworCWlmICgh
ZmV0Y2hfc3NsX2lzX3RyYWRfZG9tYWluX2xhYmVsKGgsIGhkb3RpZHgsIDApIHx8CisJICAgICFm
ZXRjaF9zc2xfaXNfdHJhZF9kb21haW5fbGFiZWwobSwgbWRvdDFpZHgsIDEpKQorCQlyZXR1cm4g
KDApOworCS8qIG1hdGNoIGRvbWFpbiBwYXJ0IChwYXJ0IGFmdGVyIGZpcnN0IGRvdCkgKi8KKwlp
ZiAoIWZldGNoX3NzbF9obmFtZV9lcXVhbChoZG90LCBobGVuIC0gaGRvdGlkeCwgbWRvdDEsCisJ
ICAgIG1sZW4gLSBtZG90MWlkeCkpCisJCXJldHVybiAoMCk7CisJLyogbWF0Y2ggcGFydCBsZWZ0
IG9mIHdpbGRjYXJkICovCisJaWYgKCFmZXRjaF9zc2xfaG5hbWVfZXF1YWwoaCwgd2NpZHgsIG0s
IHdjaWR4KSkKKwkJcmV0dXJuICgwKTsKKwkvKiBtYXRjaCBwYXJ0IHJpZ2h0IG9mIHdpbGRjYXJk
ICovCisJZGVsdGEgPSBtZG90MWlkeCAtIHdjaWR4IC0gMTsKKwlpZiAoIWZldGNoX3NzbF9obmFt
ZV9lcXVhbChoZG90IC0gZGVsdGEsIGRlbHRhLAorCSAgICBtZG90MSAtIGRlbHRhLCBkZWx0YSkp
CisJCXJldHVybiAoMCk7CisJLyogYWxsIHRlc3RzIHN1Y2NlZGVkLCBpdCdzIGEgbWF0Y2ggKi8K
KwlyZXR1cm4gKDEpOworfQorCisvKgorICogR2V0IG51bWVyaWMgaG9zdCBhZGRyZXNzIGluZm8g
LSByZXR1cm5zIE5VTEwgaWYgaG9zdCB3YXMgbm90IGFuIElQCisgKiBhZGRyZXNzLiBUaGUgY2Fs
bGVyIGlzIHJlc3BvbnNpYmxlIGZvciBkZWFsbG9jYXRpb24gdXNpbmcKKyAqIGZyZWVhZGRyaW5m
bygzKS4KKyAqLworc3RhdGljIHN0cnVjdCBhZGRyaW5mbyAqCitmZXRjaF9zc2xfZ2V0X251bWVy
aWNfYWRkcmluZm8oY29uc3QgY2hhciAqaG9zdG5hbWUsIHNpemVfdCBsZW4pCit7CisJc3RydWN0
IGFkZHJpbmZvIGhpbnRzLCAqcmVzOworCWNoYXIgKmhvc3Q7CisKKwlob3N0ID0gKGNoYXIgKilt
YWxsb2MobGVuICsgMSk7CisJbWVtY3B5KGhvc3QsIGhvc3RuYW1lLCBsZW4pOworCWhvc3RbbGVu
XSA9ICdcMCc7CisJbWVtc2V0KCZoaW50cywgMCwgc2l6ZW9mKGhpbnRzKSk7CisJaGludHMuYWlf
ZmFtaWx5ID0gUEZfVU5TUEVDOworCWhpbnRzLmFpX3NvY2t0eXBlID0gU09DS19TVFJFQU07CisJ
aGludHMuYWlfcHJvdG9jb2wgPSAwOworCWhpbnRzLmFpX2ZsYWdzID0gQUlfTlVNRVJJQ0hPU1Q7
CisJLyogcG9ydCBpcyBub3QgcmVsZXZhbnQgZm9yIHRoaXMgcHVycG9zZSAqLworCWdldGFkZHJp
bmZvKGhvc3QsICI0NDMiLCAmaGludHMsICZyZXMpOworCWZyZWUoaG9zdCk7CisJcmV0dXJuIHJl
czsKK30KKworLyoKKyAqIENvbXBhcmUgaXAgYWRkcmVzcyBpbiBhZGRyaW5mbyB3aXRoIGFkZHJl
c3MgcGFzc2VzLgorICovCitzdGF0aWMgaW50CitmZXRjaF9zc2xfaXBhZGRyX21hdGNoX2Jpbihj
b25zdCBzdHJ1Y3QgYWRkcmluZm8gKmxob3N0LCBjb25zdCBjaGFyICpyaG9zdCwKKyAgICBzaXpl
X3Qgcmhvc3RsZW4pCit7CisJY29uc3Qgdm9pZCAqbGVmdDsKKworCWlmIChsaG9zdC0+YWlfZmFt
aWx5ID09IEFGX0lORVQgJiYgcmhvc3RsZW4gPT0gNCkgeworCQlsZWZ0ID0gKHZvaWQgKikmKChz
dHJ1Y3Qgc29ja2FkZHJfaW4qKSh2b2lkICopCisJCSAgICBsaG9zdC0+YWlfYWRkciktPnNpbl9h
ZGRyLnNfYWRkcjsKKyNpZmRlZiBJTkVUNgorCX0gZWxzZSBpZiAobGhvc3QtPmFpX2ZhbWlseSA9
PSBBRl9JTkVUNiAmJiByaG9zdGxlbiA9PSAxNikgeworCQlsZWZ0ID0gKHZvaWQgKikmKChzdHJ1
Y3Qgc29ja2FkZHJfaW42ICopKHZvaWQgKikKKwkJICAgIGxob3N0LT5haV9hZGRyKS0+c2luNl9h
ZGRyOworI2VuZGlmCisJfSBlbHNlCisJCXJldHVybiAoMCk7CisJcmV0dXJuICghbWVtY21wKGxl
ZnQsIChjb25zdCB2b2lkICopcmhvc3QsIHJob3N0bGVuKSA/IDEgOiAwKTsKK30KKworLyoKKyAq
IENvbXBhcmUgaXAgYWRkcmVzcyBpbiBhZGRyaW5mbyB3aXRoIGhvc3QgcGFzc2VkLiBJZiBob3N0
IGlzIG5vdCBhbiBJUAorICogYWRkcmVzcywgY29tcGFyaXNvbiB3aWxsIGZhaWwuCisgKi8KK3N0
YXRpYyBpbnQKK2ZldGNoX3NzbF9pcGFkZHJfbWF0Y2goY29uc3Qgc3RydWN0IGFkZHJpbmZvICps
YWRkciwgY29uc3QgY2hhciAqciwKKyAgICBzaXplX3QgcmxlbikKK3sKKwlzdHJ1Y3QgYWRkcmlu
Zm8gKnJhZGRyOworCWludCByZXQ7CisJY2hhciAqcmlwOworCisJcmV0ID0gMDsKKwlpZiAoKHJh
ZGRyID0gZmV0Y2hfc3NsX2dldF9udW1lcmljX2FkZHJpbmZvKHIsIHJsZW4pKSA9PSBOVUxMKQor
CQlyZXR1cm4gMDsgLyogbm90IGEgbnVtZXJpYyBob3N0ICovCisKKwlpZiAobGFkZHItPmFpX2Zh
bWlseSA9PSByYWRkci0+YWlfZmFtaWx5KSB7CisJCWlmIChsYWRkci0+YWlfZmFtaWx5ID09IEFG
X0lORVQpIHsKKwkJCXJpcCA9IChjaGFyICopJigoc3RydWN0IHNvY2thZGRyX2luICopKHZvaWQg
KikKKwkJCSAgICByYWRkci0+YWlfYWRkciktPnNpbl9hZGRyLnNfYWRkcjsKKwkJCXJldCA9IGZl
dGNoX3NzbF9pcGFkZHJfbWF0Y2hfYmluKGxhZGRyLCByaXAsIDQpOworI2lmZGVmIElORVQ2CisJ
CX0gZWxzZSBpZiAobGFkZHItPmFpX2ZhbWlseSA9PSBBRl9JTkVUNikgeworCQkJcmlwID0gKGNo
YXIgKikmKChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopKHZvaWQgKikKKwkJCSAgICByYWRkci0+YWlf
YWRkciktPnNpbjZfYWRkcjsKKwkJCXJldCA9IGZldGNoX3NzbF9pcGFkZHJfbWF0Y2hfYmluKGxh
ZGRyLCByaXAsIDE2KTsKKyNlbmRpZgorCQl9CisKKwl9CisJZnJlZWFkZHJpbmZvKHJhZGRyKTsK
KwlyZXR1cm4gKHJldCk7Cit9CisKKy8qCisgKiBWZXJpZnkgc2VydmVyIGNlcnRpZmljYXRlIGJ5
IHN1YmplY3RBbHROYW1lLgorICovCitzdGF0aWMgaW50CitmZXRjaF9zc2xfdmVyaWZ5X2FsdG5h
bWUoU1RBQ0tfT0YoR0VORVJBTF9OQU1FKSAqYWx0bmFtZXMsCisgICAgY29uc3QgY2hhciAqaG9z
dCwgc3RydWN0IGFkZHJpbmZvICppcCkKK3sKKwljb25zdCBHRU5FUkFMX05BTUUgKm5hbWU7CisJ
c2l6ZV90IG5zbGVuOworCWludCBpOworCWNvbnN0IGNoYXIgKm5zOworCisJZm9yIChpID0gMDsg
aSA8IHNrX0dFTkVSQUxfTkFNRV9udW0oYWx0bmFtZXMpOyArK2kpIHsKKyNpZiBPUEVOU1NMX1ZF
UlNJT05fTlVNQkVSIDwgMHgxMDAwMDAwMEwKKwkJLyoKKwkJICogVGhpcyBpcyBhIHdvcmthcm91
bmQsIHNpbmNlIHRoZSBmb2xsb3dpbmcgbGluZSBjYXVzZXMKKwkJICogYWxpZ25tZW50IGlzc3Vl
cyBpbiBjbGFuZzoKKwkJICogbmFtZSA9IHNrX0dFTkVSQUxfTkFNRV92YWx1ZShhbHRuYW1lcywg
aSk7CisJCSAqIE9wZW5TU0wgZXhwbGljaXRseSB3YXJucyBub3QgdG8gdXNlIHRob3NlIG1hY3Jv
cworCQkgKiBkaXJlY3RseSwgYnV0IHRoZXJlIGlzbid0IG11Y2ggY2hvaWNlIChhbmQgdGhlcmUK
KwkJICogc2hvdWxkbid0IGJlIGFueSBpbGwgc2lkZSBlZmZlY3RzKQorCQkgKi8KKwkJbmFtZSA9
IChHRU5FUkFMX05BTUUgKilTS01fc2tfdmFsdWUodm9pZCwgYWx0bmFtZXMsIGkpOworI2Vsc2UK
KwkJbmFtZSA9IHNrX0dFTkVSQUxfTkFNRV92YWx1ZShhbHRuYW1lcywgaSk7CisjZW5kaWYKKwkJ
bnMgPSAoY29uc3QgY2hhciAqKUFTTjFfU1RSSU5HX2RhdGEobmFtZS0+ZC5pYTUpOworCQluc2xl
biA9IChzaXplX3QpQVNOMV9TVFJJTkdfbGVuZ3RoKG5hbWUtPmQuaWE1KTsKKworCQlpZiAobmFt
ZS0+dHlwZSA9PSBHRU5fRE5TICYmIGlwID09IE5VTEwgJiYKKwkJICAgIGZldGNoX3NzbF9obmFt
ZV9tYXRjaChob3N0LCBzdHJsZW4oaG9zdCksIG5zLCBuc2xlbikpCisJCQlyZXR1cm4gKDEpOwor
CQllbHNlIGlmIChuYW1lLT50eXBlID09IEdFTl9JUEFERCAmJiBpcCAhPSBOVUxMICYmCisJCSAg
ICBmZXRjaF9zc2xfaXBhZGRyX21hdGNoX2JpbihpcCwgbnMsIG5zbGVuKSkKKwkJCXJldHVybiAo
MSk7CisJfQorCXJldHVybiAoMCk7Cit9CisKKy8qCisgKiBWZXJpZnkgc2VydmVyIGNlcnRpZmlj
YXRlIGJ5IENOLgorICovCitzdGF0aWMgaW50CitmZXRjaF9zc2xfdmVyaWZ5X2NuKFg1MDlfTkFN
RSAqc3ViamVjdCwgY29uc3QgY2hhciAqaG9zdCwKKyAgICBzdHJ1Y3QgYWRkcmluZm8gKmlwKQor
eworCUFTTjFfU1RSSU5HICpuYW1lZGF0YTsKKwlYNTA5X05BTUVfRU5UUlkgKm5hbWVlbnRyeTsK
KwlpbnQgY25sZW4sIGxhc3Rwb3MsIGxvYywgcmV0OworCXVuc2lnbmVkIGNoYXIgKmNuOworCisJ
cmV0ID0gMDsKKwlsYXN0cG9zID0gLTE7CisJbG9jID0gLTE7CisJY24gPSBOVUxMOworCS8qIGdl
dCBtb3N0IHNwZWNpZmljIENOIChsYXN0IGVudHJ5IGluIGxpc3QpIGFuZCBjb21wYXJlICovCisJ
d2hpbGUgKChsYXN0cG9zID0gWDUwOV9OQU1FX2dldF9pbmRleF9ieV9OSUQoc3ViamVjdCwKKwkg
ICAgTklEX2NvbW1vbk5hbWUsIGxhc3Rwb3MpKSAhPSAtMSkKKwkJbG9jID0gbGFzdHBvczsKKwor
CWlmIChsb2MgPiAtMSkgeworCQluYW1lZW50cnkgPSBYNTA5X05BTUVfZ2V0X2VudHJ5KHN1Ympl
Y3QsIGxvYyk7CisJCW5hbWVkYXRhID0gWDUwOV9OQU1FX0VOVFJZX2dldF9kYXRhKG5hbWVlbnRy
eSk7CisJCWNubGVuID0gQVNOMV9TVFJJTkdfdG9fVVRGOCgmY24sIG5hbWVkYXRhKTsKKwkJaWYg
KGlwID09IE5VTEwgJiYKKwkJICAgIGZldGNoX3NzbF9obmFtZV9tYXRjaChob3N0LCBzdHJsZW4o
aG9zdCksIGNuLCBjbmxlbikpCisJCQlyZXQgPSAxOworCQllbHNlIGlmIChpcCAhPSBOVUxMICYm
IGZldGNoX3NzbF9pcGFkZHJfbWF0Y2goaXAsIGNuLCBjbmxlbikpCisJCQlyZXQgPSAxOworCQlP
UEVOU1NMX2ZyZWUoY24pOworCX0KKwlyZXR1cm4gKHJldCk7Cit9CisKKy8qCisgKiBWZXJpZnkg
dGhhdCBzZXJ2ZXIgY2VydGlmaWNhdGUgc3ViamVjdEFsdE5hbWUvQ04gbWF0Y2hlcworICogaG9z
dG5hbWUuIEZpcnN0IGNoZWNrLCBpZiB0aGVyZSBhcmUgYWx0ZXJuYXRpdmUgc3ViamVjdCBuYW1l
cy4gSWYgeWVzLAorICogdGhvc2UgaGF2ZSB0byBtYXRjaC4gT25seSBpZiB0aG9zZSBkb24ndCBl
eGlzdCBpdCBmYWxscyBiYWNrIHRvCisgKiBjaGVja2luZyB0aGUgc3ViamVjdCdzIENOLgorICov
CitzdGF0aWMgaW50CitmZXRjaF9zc2xfdmVyaWZ5X2huYW1lKFg1MDkgKmNlcnQsIGNvbnN0IGNo
YXIgKmhvc3QpCit7CisJc3RydWN0IGFkZHJpbmZvICppcDsKKwlTVEFDS19PRihHRU5FUkFMX05B
TUUpICphbHRuYW1lczsKKwlYNTA5X05BTUUgKnN1YmplY3Q7CisJaW50IHJldDsJCisKKwlyZXQg
PSAwOworCWlwID0gZmV0Y2hfc3NsX2dldF9udW1lcmljX2FkZHJpbmZvKGhvc3QsIHN0cmxlbiho
b3N0KSk7CisJYWx0bmFtZXMgPSBYNTA5X2dldF9leHRfZDJpKGNlcnQsIE5JRF9zdWJqZWN0X2Fs
dF9uYW1lLAorCSAgICBOVUxMLCBOVUxMKTsKKworCWlmIChhbHRuYW1lcyAhPSBOVUxMKSB7CisJ
CXJldCA9IGZldGNoX3NzbF92ZXJpZnlfYWx0bmFtZShhbHRuYW1lcywgaG9zdCwgaXApOworCX0g
ZWxzZSB7CisJCXN1YmplY3QgPSBYNTA5X2dldF9zdWJqZWN0X25hbWUoY2VydCk7CisJCWlmIChz
dWJqZWN0ICE9IE5VTEwpCisJCQlyZXQgPSBmZXRjaF9zc2xfdmVyaWZ5X2NuKHN1YmplY3QsIGhv
c3QsIGlwKTsKKwl9CisKKwlpZiAoaXAgIT0gTlVMTCkKKwkJZnJlZWFkZHJpbmZvKGlwKTsKKwlp
ZiAoYWx0bmFtZXMgIT0gTlVMTCkKKwkJR0VORVJBTF9OQU1FU19mcmVlKGFsdG5hbWVzKTsKKwly
ZXR1cm4gKHJldCk7Cit9CisKKy8qCisgKiBDb25maWd1cmUgdHJhbnNwb3J0IHNlY3VyaXR5IGxh
eWVyIGJhc2VkIG9uIGVudmlyb25tZW50LgorICovCitzdGF0aWMgdm9pZAorZmV0Y2hfc3NsX3Nl
dHVwX3RyYW5zcG9ydF9sYXllcihTU0xfQ1RYICpjdHgsIGludCB2ZXJib3NlKQoreworCWxvbmcg
c3NsX2N0eF9vcHRpb25zOworCisJc3NsX2N0eF9vcHRpb25zID0gU1NMX09QX0FMTCB8IFNTTF9P
UF9OT19USUNLRVQ7CisJaWYgKGdldGVudigiU1NMX0FMTE9XX1NTTDIiKSA9PSBOVUxMKQorCQlz
c2xfY3R4X29wdGlvbnMgfD0gU1NMX09QX05PX1NTTHYyOworCWlmIChnZXRlbnYoIlNTTF9OT19T
U0wzIikgIT0gTlVMTCkKKwkJc3NsX2N0eF9vcHRpb25zIHw9IFNTTF9PUF9OT19TU0x2MzsKKwlp
ZiAoZ2V0ZW52KCJTU0xfTk9fVExTMSIpICE9IE5VTEwpCisJCXNzbF9jdHhfb3B0aW9ucyB8PSBT
U0xfT1BfTk9fVExTdjE7CisJaWYgKHZlcmJvc2UpCisJCWZldGNoX2luZm8oIlNTTCBvcHRpb25z
OiAleCIsIHNzbF9jdHhfb3B0aW9ucyk7CisJU1NMX0NUWF9zZXRfb3B0aW9ucyhjdHgsIHNzbF9j
dHhfb3B0aW9ucyk7Cit9CisKKworLyoKKyAqIENvbmZpZ3VyZSBwZWVyIHZlcmlmaWNhdGlvbiBi
YXNlZCBvbiBlbnZpcm9ubWVudC4KKyAqLworc3RhdGljIGludAorZmV0Y2hfc3NsX3NldHVwX3Bl
ZXJfdmVyaWZpY2F0aW9uKFNTTF9DVFggKmN0eCwgaW50IHZlcmJvc2UpCit7CisJWDUwOV9MT09L
VVAgKmNybF9sb29rdXA7CisJWDUwOV9TVE9SRSAqY3JsX3N0b3JlOworCWNvbnN0IGNoYXIgKmNh
X2NlcnRfZmlsZSwgKmNhX2NlcnRfcGF0aCwgKmNybF9maWxlOworCisJaWYgKGdldGVudigiU1NM
X05PX1ZFUklGWV9QRUVSIikgPT0gTlVMTCkgeworCQljYV9jZXJ0X2ZpbGUgPSBnZXRlbnYoIlNT
TF9DQV9DRVJUX0ZJTEUiKSAhPSBOVUxMID8KKwkJICAgIGdldGVudigiU1NMX0NBX0NFUlRfRklM
RSIpIDogIi9ldGMvc3NsL2NlcnQucGVtIjsKKwkJY2FfY2VydF9wYXRoID0gZ2V0ZW52KCJTU0xf
Q0FfQ0VSVF9QQVRIIik7CisJCWlmICh2ZXJib3NlKSB7CisJCQlmZXRjaF9pbmZvKCJQZWVyIHZl
cmlmaWNhdGlvbiBlbmFibGVkIik7CisJCQlpZiAoY2FfY2VydF9maWxlICE9IE5VTEwpCisJCQkJ
ZmV0Y2hfaW5mbygiVXNpbmcgQ0EgY2VydCBmaWxlOiAlcyIsCisJCQkJICAgIGNhX2NlcnRfZmls
ZSk7CisJCQlpZiAoY2FfY2VydF9wYXRoICE9IE5VTEwpCisJCQkJZmV0Y2hfaW5mbygiVXNpbmcg
Q0EgY2VydCBwYXRoOiAlcyIsCisJCQkJICAgIGNhX2NlcnRfcGF0aCk7CisJCX0KKwkJU1NMX0NU
WF9zZXRfdmVyaWZ5KGN0eCwgU1NMX1ZFUklGWV9QRUVSLAorCQkgICAgZmV0Y2hfc3NsX2NiX3Zl
cmlmeV9jcnQpOworCQlTU0xfQ1RYX2xvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjdHgsIGNhX2NlcnRf
ZmlsZSwKKwkJICAgIGNhX2NlcnRfcGF0aCk7CisJCWlmICgoY3JsX2ZpbGUgPSBnZXRlbnYoIlNT
TF9DUkxfRklMRSIpKSAhPSBOVUxMKSB7CisJCQlpZiAodmVyYm9zZSkKKwkJCQlmZXRjaF9pbmZv
KCJVc2luZyBDUkwgZmlsZTogJXMiLCBjcmxfZmlsZSk7CisJCQljcmxfc3RvcmUgPSBTU0xfQ1RY
X2dldF9jZXJ0X3N0b3JlKGN0eCk7CisJCQljcmxfbG9va3VwID0gWDUwOV9TVE9SRV9hZGRfbG9v
a3VwKGNybF9zdG9yZSwKKwkJCSAgICBYNTA5X0xPT0tVUF9maWxlKCkpOworCQkJaWYgKGNybF9s
b29rdXAgPT0gTlVMTCB8fAorCQkJICAgICFYNTA5X2xvYWRfY3JsX2ZpbGUoY3JsX2xvb2t1cCwg
Y3JsX2ZpbGUsCisJCQkJWDUwOV9GSUxFVFlQRV9QRU0pKSB7CisJCQkJZnByaW50ZihzdGRlcnIs
CisJCQkJICAgICJDb3VsZCBub3QgbG9hZCBDUkwgZmlsZSAlc1xuIiwKKwkJCQkgICAgY3JsX2Zp
bGUpOworCQkJCXJldHVybiAoMCk7CisJCQl9CisJCQlYNTA5X1NUT1JFX3NldF9mbGFncyhjcmxf
c3RvcmUsCisJCQkgICAgWDUwOV9WX0ZMQUdfQ1JMX0NIRUNLIHwKKwkJCSAgICBYNTA5X1ZfRkxB
R19DUkxfQ0hFQ0tfQUxMKTsKKwkJfQorCX0KKwlyZXR1cm4gKDEpOworfQorCisvKgorICogQ29u
ZmlndXJlIGNsaWVudCBjZXJ0aWZpY2F0ZSBiYXNlZCBvbiBlbnZpcm9ubWVudC4KKyAqLworc3Rh
dGljIGludAorZmV0Y2hfc3NsX3NldHVwX2NsaWVudF9jZXJ0aWZpY2F0ZShTU0xfQ1RYICpjdHgs
IGludCB2ZXJib3NlKQoreworCWNvbnN0IGNoYXIgKmNsaWVudF9jZXJ0X2ZpbGUsICpjbGllbnRf
a2V5X2ZpbGU7CisKKwlpZiAoKGNsaWVudF9jZXJ0X2ZpbGUgPSBnZXRlbnYoIlNTTF9DTElFTlRf
Q0VSVF9GSUxFIikpICE9IE5VTEwpIHsKKwkJY2xpZW50X2tleV9maWxlID0gZ2V0ZW52KCJTU0xf
Q0xJRU5UX0tFWV9GSUxFIikgIT0gTlVMTCA/CisJCSAgICBnZXRlbnYoIlNTTF9DTElFTlRfS0VZ
X0ZJTEUiKSA6IGNsaWVudF9jZXJ0X2ZpbGU7CisJCWlmICh2ZXJib3NlKSB7CisJCQlmZXRjaF9p
bmZvKCJVc2luZyBjbGllbnQgY2VydCBmaWxlOiAlcyIsCisJCQkgICAgY2xpZW50X2NlcnRfZmls
ZSk7CisJCQlmZXRjaF9pbmZvKCJVc2luZyBjbGllbnQga2V5IGZpbGU6ICVzIiwKKwkJCSAgICBj
bGllbnRfa2V5X2ZpbGUpOworCQl9CisJCWlmIChTU0xfQ1RYX3VzZV9jZXJ0aWZpY2F0ZV9jaGFp
bl9maWxlKGN0eCwKKwkJCWNsaWVudF9jZXJ0X2ZpbGUpICE9IDEpIHsKKwkJCWZwcmludGYoc3Rk
ZXJyLAorCQkJICAgICJDb3VsZCBub3QgbG9hZCBjbGllbnQgY2VydGlmaWNhdGUgJXNcbiIsCisJ
CQkgICAgY2xpZW50X2NlcnRfZmlsZSk7CisJCQlyZXR1cm4gKDApOworCQl9CisJCWlmIChTU0xf
Q1RYX3VzZV9Qcml2YXRlS2V5X2ZpbGUoY3R4LCBjbGllbnRfa2V5X2ZpbGUsCisJCQlTU0xfRklM
RVRZUEVfUEVNKSAhPSAxKSB7CisJCQlmcHJpbnRmKHN0ZGVyciwKKwkJCSAgICAiQ291bGQgbm90
IGxvYWQgY2xpZW50IGtleSAlc1xuIiwKKwkJCSAgICBjbGllbnRfa2V5X2ZpbGUpOworCQkJcmV0
dXJuICgwKTsKKwkJfQorCX0KKwlyZXR1cm4gKDEpOworfQorCisvKgorICogQ2FsbGJhY2sgZm9y
IFNTTCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24sIHRoaXMgaXMgY2FsbGVkIG9uIHNlcnZlcgor
ICogY2VydCB2ZXJpZmljYXRpb24uIEl0IHRha2VzIG5vIGRlY2lzaW9uLCBidXQgaW5mb3JtcyB0
aGUgdXNlciBpbiBjYXNlCisgKiB2ZXJpZmljYXRpb24gZmFpbGVkLgorICovCitpbnQKK2ZldGNo
X3NzbF9jYl92ZXJpZnlfY3J0KGludCB2ZXJpZmllZCwgWDUwOV9TVE9SRV9DVFggKmN0eCkKK3sK
KwlYNTA5ICpjcnQ7CisJWDUwOV9OQU1FICpuYW1lOworCWNoYXIgKnN0cjsKKworCXN0ciA9IE5V
TEw7CisJaWYgKCF2ZXJpZmllZCkgeworCQlpZiAoKGNydCA9IFg1MDlfU1RPUkVfQ1RYX2dldF9j
dXJyZW50X2NlcnQoY3R4KSkgIT0gTlVMTCAmJgorCQkgICAgKG5hbWUgPSBYNTA5X2dldF9zdWJq
ZWN0X25hbWUoY3J0KSkgIT0gTlVMTCkKKwkJCXN0ciA9IFg1MDlfTkFNRV9vbmVsaW5lKG5hbWUs
IDAsIDApOworCQlmcHJpbnRmKHN0ZGVyciwgIkNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiBmYWls
ZWQgZm9yICVzXG4iLAorCQkgICAgc3RyICE9IE5VTEwgPyBzdHIgOiAibm8gcmVsZXZhbnQgY2Vy
dGlmaWNhdGUiKTsKKwkJT1BFTlNTTF9mcmVlKHN0cik7CisJfQorCXJldHVybiAodmVyaWZpZWQp
OworfQorCisjZW5kaWYKIAogLyoKICAqIEVuYWJsZSBTU0wgb24gYSBjb25uZWN0aW9uLgogICov
CiBpbnQKLWZldGNoX3NzbChjb25uX3QgKmNvbm4sIGludCB2ZXJib3NlKQorZmV0Y2hfc3NsKGNv
bm5fdCAqY29ubiwgY29uc3Qgc3RydWN0IHVybCAqVVJMLCBpbnQgdmVyYm9zZSkKIHsKICNpZmRl
ZiBXSVRIX1NTTAogCWludCByZXQsIHNzbF9lcnI7CisJWDUwOV9OQU1FICpuYW1lOworCWNoYXIg
KnN0cjsKIAogCS8qIEluaXQgdGhlIFNTTCBsaWJyYXJ5IGFuZCBjb250ZXh0ICovCiAJaWYgKCFT
U0xfbGlicmFyeV9pbml0KCkpewpAQCAtMzM5LDggKzgxNywxNCBAQCBmZXRjaF9zc2woY29ubl90
ICpjb25uLCBpbnQgdmVyYm9zZSkKIAljb25uLT5zc2xfY3R4ID0gU1NMX0NUWF9uZXcoY29ubi0+
c3NsX21ldGgpOwogCVNTTF9DVFhfc2V0X21vZGUoY29ubi0+c3NsX2N0eCwgU1NMX01PREVfQVVU
T19SRVRSWSk7CiAKKwlmZXRjaF9zc2xfc2V0dXBfdHJhbnNwb3J0X2xheWVyKGNvbm4tPnNzbF9j
dHgsIHZlcmJvc2UpOworCWlmICghZmV0Y2hfc3NsX3NldHVwX3BlZXJfdmVyaWZpY2F0aW9uKGNv
bm4tPnNzbF9jdHgsIHZlcmJvc2UpKQorCQlyZXR1cm4gKC0xKTsKKwlpZiAoIWZldGNoX3NzbF9z
ZXR1cF9jbGllbnRfY2VydGlmaWNhdGUoY29ubi0+c3NsX2N0eCwgdmVyYm9zZSkpCisJCXJldHVy
biAoLTEpOworCiAJY29ubi0+c3NsID0gU1NMX25ldyhjb25uLT5zc2xfY3R4KTsKLQlpZiAoY29u
bi0+c3NsID09IE5VTEwpeworCWlmIChjb25uLT5zc2wgPT0gTlVMTCkgewogCQlmcHJpbnRmKHN0
ZGVyciwgIlNTTCBjb250ZXh0IGNyZWF0aW9uIGZhaWxlZFxuIik7CiAJCXJldHVybiAoLTEpOwog
CX0KQEAgLTM1MywyMiArODM3LDM1IEBAIGZldGNoX3NzbChjb25uX3QgKmNvbm4sIGludCB2ZXJi
b3NlKQogCQkJcmV0dXJuICgtMSk7CiAJCX0KIAl9CisJY29ubi0+c3NsX2NlcnQgPSBTU0xfZ2V0
X3BlZXJfY2VydGlmaWNhdGUoY29ubi0+c3NsKTsKIAotCWlmICh2ZXJib3NlKSB7Ci0JCVg1MDlf
TkFNRSAqbmFtZTsKLQkJY2hhciAqc3RyOworCWlmIChjb25uLT5zc2xfY2VydCA9PSBOVUxMKSB7
CisJCWZwcmludGYoc3RkZXJyLCAiTm8gc2VydmVyIFNTTCBjZXJ0aWZpY2F0ZVxuIik7CisJCXJl
dHVybiAoLTEpOworCX0KIAotCQlmcHJpbnRmKHN0ZGVyciwgIlNTTCBjb25uZWN0aW9uIGVzdGFi
bGlzaGVkIHVzaW5nICVzXG4iLAorCWlmIChnZXRlbnYoIlNTTF9OT19WRVJJRllfSE9TVE5BTUUi
KSA9PSBOVUxMKSB7CisJCWlmICh2ZXJib3NlKQorCQkJZmV0Y2hfaW5mbygiVmVyaWZ5IGhvc3Ru
YW1lIik7CisJCWlmICghZmV0Y2hfc3NsX3ZlcmlmeV9obmFtZShjb25uLT5zc2xfY2VydCwgVVJM
LT5ob3N0KSkgeworCQkJZnByaW50ZihzdGRlcnIsCisJCQkgICAgIlNTTCBjZXJ0aWZpY2F0ZSBz
dWJqZWN0IGRvZXNuJ3QgbWF0Y2ggaG9zdCAlc1xuIiwKKwkJCSAgICBVUkwtPmhvc3QpOworCQkJ
cmV0dXJuICgtMSk7CisJCX0KKwl9CisKKwlpZiAodmVyYm9zZSkgeworCQlmZXRjaF9pbmZvKCJT
U0wgY29ubmVjdGlvbiBlc3RhYmxpc2hlZCB1c2luZyAlcyIsCiAJCSAgICBTU0xfZ2V0X2NpcGhl
cihjb25uLT5zc2wpKTsKLQkJY29ubi0+c3NsX2NlcnQgPSBTU0xfZ2V0X3BlZXJfY2VydGlmaWNh
dGUoY29ubi0+c3NsKTsKIAkJbmFtZSA9IFg1MDlfZ2V0X3N1YmplY3RfbmFtZShjb25uLT5zc2xf
Y2VydCk7CiAJCXN0ciA9IFg1MDlfTkFNRV9vbmVsaW5lKG5hbWUsIDAsIDApOwotCQlwcmludGYo
IkNlcnRpZmljYXRlIHN1YmplY3Q6ICVzXG4iLCBzdHIpOwotCQlmcmVlKHN0cik7CisJCWZldGNo
X2luZm8oIkNlcnRpZmljYXRlIHN1YmplY3Q6ICVzIiwgc3RyKTsKKwkJT1BFTlNTTF9mcmVlKHN0
cik7CiAJCW5hbWUgPSBYNTA5X2dldF9pc3N1ZXJfbmFtZShjb25uLT5zc2xfY2VydCk7CiAJCXN0
ciA9IFg1MDlfTkFNRV9vbmVsaW5lKG5hbWUsIDAsIDApOwotCQlwcmludGYoIkNlcnRpZmljYXRl
IGlzc3VlcjogJXNcbiIsIHN0cik7Ci0JCWZyZWUoc3RyKTsKKwkJZmV0Y2hfaW5mbygiQ2VydGlm
aWNhdGUgaXNzdWVyOiAlcyIsIHN0cik7CisJCU9QRU5TU0xfZnJlZShzdHIpOwogCX0KIAogCXJl
dHVybiAoMCk7CkBAIC03MjYsNiArMTIyMywyMiBAQCBmZXRjaF9jbG9zZShjb25uX3QgKmNvbm4p
CiAKIAlpZiAoLS1jb25uLT5yZWYgPiAwKQogCQlyZXR1cm4gKDApOworI2lmZGVmIFdJVEhfU1NM
CisJaWYgKGNvbm4tPnNzbCkgeworCQlTU0xfc2h1dGRvd24oY29ubi0+c3NsKTsKKwkJU1NMX3Nl
dF9jb25uZWN0X3N0YXRlKGNvbm4tPnNzbCk7CisJCVNTTF9mcmVlKGNvbm4tPnNzbCk7CisJCWNv
bm4tPnNzbCA9IE5VTEw7CisJfQorCWlmIChjb25uLT5zc2xfY3R4KSB7CisJCVNTTF9DVFhfZnJl
ZShjb25uLT5zc2xfY3R4KTsKKwkJY29ubi0+c3NsX2N0eCA9IE5VTEw7CisJfQorCWlmIChjb25u
LT5zc2xfY2VydCkgeworCQlYNTA5X2ZyZWUoY29ubi0+c3NsX2NlcnQpOworCQljb25uLT5zc2xf
Y2VydCA9IE5VTEw7CisJfQorI2VuZGlmCiAJcmV0ID0gY2xvc2UoY29ubi0+c2QpOwogCWZyZWUo
Y29ubi0+Y2FjaGUuYnVmKTsKIAlmcmVlKGNvbm4tPmJ1Zik7CgpNb2RpZmllZDogaGVhZC9saWIv
bGliZmV0Y2gvY29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBoZWFkL2xpYi9saWJm
ZXRjaC9jb21tb24uaAlGcmkgSnVsIDI2IDE0OjQzOjM4IDIwMTMJKHIyNTM2NzkpCisrKyBoZWFk
L2xpYi9saWJmZXRjaC9jb21tb24uaAlGcmkgSnVsIDI2IDE1OjUzOjQzIDIwMTMJKHIyNTM2ODAp
CkBAIC04Nyw3ICs4NywxMCBAQCBpbnQJCSBmZXRjaF9iaW5kKGludCwgaW50LCBjb25zdCBjaGFy
ICopCiBjb25uX3QJCSpmZXRjaF9jb25uZWN0KGNvbnN0IGNoYXIgKiwgaW50LCBpbnQsIGludCk7
CiBjb25uX3QJCSpmZXRjaF9yZW9wZW4oaW50KTsKIGNvbm5fdAkJKmZldGNoX3JlZihjb25uX3Qg
Kik7Ci1pbnQJCSBmZXRjaF9zc2woY29ubl90ICosIGludCk7CisjaWZkZWYgV0lUSF9TU0wKK2lu
dAkJIGZldGNoX3NzbF9jYl92ZXJpZnlfY3J0KGludCwgWDUwOV9TVE9SRV9DVFgqKTsKKyNlbmRp
ZgoraW50CQkgZmV0Y2hfc3NsKGNvbm5fdCAqLCBjb25zdCBzdHJ1Y3QgdXJsICosIGludCk7CiBz
c2l6ZV90CQkgZmV0Y2hfcmVhZChjb25uX3QgKiwgY2hhciAqLCBzaXplX3QpOwogaW50CQkgZmV0
Y2hfZ2V0bG4oY29ubl90ICopOwogc3NpemVfdAkJIGZldGNoX3dyaXRlKGNvbm5fdCAqLCBjb25z
dCBjaGFyICosIHNpemVfdCk7CgpNb2RpZmllZDogaGVhZC9saWIvbGliZmV0Y2gvZmV0Y2guMwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIGhlYWQvbGliL2xpYmZldGNoL2ZldGNoLjMJRnJpIEp1
bCAyNiAxNDo0MzozOCAyMDEzCShyMjUzNjc5KQorKysgaGVhZC9saWIvbGliZmV0Y2gvZmV0Y2gu
MwlGcmkgSnVsIDI2IDE1OjUzOjQzIDIwMTMJKHIyNTM2ODApCkBAIC0xLDUgKzEsNiBAQAogLlwi
LQogLlwiIENvcHlyaWdodCAoYykgMTk5OC0yMDExIERhZy1FcmxpbmcgU23DuHJncmF2CisuXCIg
Q29weXJpZ2h0IChjKSAyMDEzIE1pY2hhZWwgR21lbGluIDxmcmVlYnNkQGdyZW0uZGU+CiAuXCIg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KIC5cIgogLlwiIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjUsNyArMjYsNyBA
QAogLlwiCiAuXCIgJEZyZWVCU0QkCiAuXCIKLS5EZCBTZXB0ZW1iZXIgMjcsIDIwMTEKKy5EZCBK
YW51YXJ5IDI1LCAyMDEzCiAuRHQgRkVUQ0ggMwogLk9zCiAuU2ggTkFNRQpAQCAtMzkyLDYgKzM5
Myw2MCBAQCBtZXRob2QgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHRoZSByCiBsaWJyYXJ5
LAogLkZuIGZldGNoUHV0SFRUUAogaXMgY3VycmVudGx5IHVuaW1wbGVtZW50ZWQuCisuU2ggSFRU
UFMgU0NIRU1FCitCYXNlZCBvbiBIVFRQIFNDSEVNRS4KK0J5IGRlZmF1bHQgdGhlIHBlZXIgaXMg
dmVyaWZpZWQgdXNpbmcgdGhlIENBIGJ1bmRsZSBsb2NhdGVkIGluCisuUGEgL2V0Yy9zc2wvY2Vy
dC5wZW0gLgorVGhlIGZpbGUgbWF5IGNvbnRhaW4gbXVsdGlwbGUgQ0EgY2VydGlmaWNhdGVzLgor
QSBjb21tb24gc291cmNlIG9mIGEgY3VycmVudCBDQSBidW5kbGUgaXMKKy5QYSBcJXNlY3VyaXR5
L2NhX3Jvb3RfbnNzIC4KKy5QcAorVGhlIENBIGJ1bmRsZSB1c2VkIGZvciBwZWVyIHZlcmlmaWNh
dGlvbiBjYW4gYmUgY2hhbmdlZCBieSBzZXR0aW5nIHRoZQorZW52aXJvbm1lbnQgdmFyaWFibGVz
CisuRXYgU1NMX0NBX0NFUlRfRklMRQordG8gcG9pbnQgdG8gYSBjb25jYXRlbmF0ZWQgYnVuZGxl
IG9mIHRydXN0ZWQgY2VydGlmaWNhdGVzIGFuZAorLkV2IFNTTF9DQV9DRVJUX1BBVEgKK3RvIHBv
aW50IHRvIGEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgaGFzaGVzIG9mIHRydXN0ZWQgQ0FzIChzZWUK
Ky5YciB2ZXJpZnkgMSApIC4KKy5QcAorQSBjZXJ0aWZpY2F0ZSByZXZvY2F0aW9uIGxpc3QgKENS
TCkgY2FuIGJlIHVzZWQgYnkgc2V0dGluZyB0aGUKK2Vudmlyb25tZW50IHZhcmlhYmxlCisuRXYg
U1NMX0NSTF9GSUxFCisoc2VlCisuWHIgY3JsIDEgKSAuCisuUHAKK1BlZXIgdmVyaWZpY2F0aW9u
IGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZQorLkV2
IFNTTF9OT19WRVJJRllfUEVFUiAuCitOb3RlIHRoYXQgdGhpcyBhbHNvIGRpc2FibGVzIENSTCBj
aGVja2luZy4KKy5QcAorQnkgZGVmYXVsdCB0aGUgc2VydmljZSBpZGVudGl0eSBpcyB2ZXJpZmll
ZCBhY2NvcmRpbmcgdG8gdGhlIHJ1bGVzCitkZXRhaWxlZCBpbiBSRkM2MTI1IChhbHNvIGtub3du
IGFzIGhvc3RuYW1lIHZlcmlmaWNhdGlvbikuCitUaGlzIGZlYXR1cmUgY2FuIGJlIGRpc2FibGVk
IGJ5IHNldHRpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCisuRXYgU1NMX05PX1ZFUklGWV9I
T1NUTkFNRSAuCisuUHAKK0NsaWVudCBjZXJ0aWZpY2F0ZSBiYXNlZCBhdXRoZW50aWNhdGlvbiBp
cyBzdXBwb3J0ZWQuCitUaGUgZW52aXJvbm1lbnQgdmFyaWFibGUKKy5FdiBTU0xfQ0xJRU5UX0NF
UlRfRklMRQorc2hvdWxkIGJlIHNldCB0byBwb2ludCB0byBhIGZpbGUgY29udGFpbmluZyBrZXkg
YW5kIGNsaWVudCBjZXJ0aWZpY2F0ZQordG8gYmUgdXNlZCBpbiBQRU0gZm9ybWF0LiBJbiBjYXNl
IHRoZSBrZXkgaXMgc3RvcmVkIGluIGEgc2VwYXJhdGUKK2ZpbGUsIHRoZSBlbnZpcm9ubWVudCB2
YXJpYWJsZQorLkV2IFNTTF9DTElFTlRfS0VZX0ZJTEUKK2NhbiBiZSBzZXQgdG8gcG9pbnQgdG8g
dGhlIGtleSBpbiBQRU0gZm9ybWF0LgorSW4gY2FzZSB0aGUga2V5IHVzZXMgYSBwYXNzd29yZCwg
dGhlIHVzZXIgd2lsbCBiZSBwcm9tcHRlZCBvbiBzdGFuZGFyZAoraW5wdXQgKHNlZQorLlhyIFBF
TSAzICkgLgorLlBwCitCeSBkZWZhdWx0CisuTm0gbGliZmV0Y2gKK2FsbG93cyBTU0x2MyBhbmQg
VExTdjEgd2hlbiBuZWdvdGlhdGluZyB0aGUgY29ubmVjdGluZyB3aXRoIHRoZSByZW1vdGUKK3Bl
ZXIuCitZb3UgY2FuIGNoYW5nZSB0aGlzIGJlaGF2aW9yIGJ5IHNldHRpbmcgdGhlIGVudmlyb25t
ZW50IHZhcmlhYmxlCisuRXYgU1NMX0FMTE9XX1NTTDIKK3RvIGFsbG93IFNTTHYyIChub3QgcmVj
b21tZW5kZWQpIGFuZAorLkV2IFNTTF9OT19TU0wzCitvcgorLkV2IFNTTF9OT19UTFMxCit0byBk
aXNhYmxlIHRoZSByZXNwZWN0aXZlIG1ldGhvZHMuCiAuU2ggQVVUSEVOVElDQVRJT04KIEFwYXJ0
IGZyb20gc2V0dGluZyB0aGUgYXBwcm9wcmlhdGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFuZAog
c3BlY2lmeWluZyB0aGUgdXNlciBuYW1lIGFuZCBwYXNzd29yZCBpbiB0aGUgVVJMIG9yIHRoZQpA
QCAtNTc5LDYgKzYzNCwzMSBAQCB3aGljaCBwcm94aWVzIHNob3VsZCBub3QgYmUgdXNlZC4KIFNh
bWUgYXMKIC5FdiBOT19QUk9YWSAsCiBmb3IgY29tcGF0aWJpbGl0eS4KKy5JdCBFdiBTU0xfQUxM
T1dfU1NMMgorQWxsb3cgU1NMIHZlcnNpb24gMiB3aGVuIG5lZ290aWF0aW5nIHRoZSBjb25uZWN0
aW9uIChub3QgcmVjb21tZW5kZWQpLgorLkl0IEV2IFNTTF9DQV9DRVJUX0ZJTEUKK0NBIGNlcnRp
ZmljYXRlIGJ1bmRsZSBjb250YWluaW5nIHRydXN0ZWQgQ0EgY2VydGlmaWNhdGVzLgorRGVmYXVs
dCB2YWx1ZToKKy5QYSAvZXRjL3NzbC9jZXJ0LnBlbSAuCisuSXQgRXYgU1NMX0NBX0NFUlRfUEFU
SAorUGF0aCBjb250YWluaW5nIHRydXN0ZWQgQ0EgaGFzaGVzLgorLkl0IEV2IFNTTF9DTElFTlRf
Q0VSVF9GSUxFCitQRU0gZW5jb2RlZCBjbGllbnQgY2VydGlmaWNhdGUva2V5IHdoaWNoIHdpbGwg
YmUgdXNlZCBpbgorY2xpZW50IGNlcnRpZmljYXRlIGF1dGhlbnRpY2F0aW9uLgorLkl0IEV2IFNT
TF9DTElFTlRfS0VZX0ZJTEUKK1BFTSBlbmNvZGVkIGNsaWVudCBrZXkgaW4gY2FzZSBrZXkgYW5k
IGNsaWVudCBjZXJ0aWZpY2F0ZQorYXJlIHN0b3JlZCBzZXBhcmF0ZWx5LgorLkl0IEV2IFNTTF9D
UkxfRklMRQorRmlsZSBjb250YWluaW5nIGNlcnRpZmljYXRlIHJldm9jYXRpb24gbGlzdC4KKy5J
dCBFdiBTU0xfTk9fU1NMMworRG9uJ3QgYWxsb3cgU1NMIHZlcnNpb24gMyB3aGVuIG5lZ290aWF0
aW5nIHRoZSBjb25uZWN0aW9uLgorLkl0IEV2IFNTTF9OT19UTFMxCitEb24ndCBhbGxvdyBUTFYg
dmVyc2lvbiAxIHdoZW4gbmVnb3RpYXRpbmcgdGhlIGNvbm5lY3Rpb24uCisuSXQgRXYgU1NMX05P
X1ZFUklGWV9IT1NUTkFNRQorSWYgc2V0LCBkbyBub3QgdmVyaWZ5IHRoYXQgdGhlIGhvc3RuYW1l
IG1hdGNoZXMgdGhlIHN1YmplY3Qgb2YgdGhlCitjZXJ0aWZpY2F0ZSBwcmVzZW50ZWQgYnkgdGhl
IHNlcnZlci4KKy5JdCBFdiBTU0xfTk9fVkVSSUZZX1BFRVIKK0lmIHNldCwgZG8gbm90IHZlcmlm
eSB0aGUgcGVlciBjZXJ0aWZpY2F0ZSBhZ2FpbnN0IHRydXN0ZWQgQ0FzLgogLkVsCiAuU2ggRVhB
TVBMRVMKIFRvIGFjY2VzcyBhIHByb3h5IHNlcnZlciBvbgpAQCAtNjEwLDYgKzY5MCwxOSBAQCBh
cyBmb2xsb3dzOgogLkJkIC1saXRlcmFsIC1vZmZzZXQgaW5kZW50CiBOT19QUk9YWT1sb2NhbGhv
c3QsMTI3LjAuMC4xCiAuRWQKKy5QcAorQWNjZXNzIEhUVFBTIHdlYnNpdGUgd2l0aG91dCBhbnkg
Y2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIHdoYXRzb2V2ZXI6CisuQmQgLWxpdGVyYWwgLW9mZnNl
dCBpbmRlbnQKK1NTTF9OT19WRVJJRllfUEVFUj0xCitTU0xfTk9fVkVSSUZZX0hPU1ROQU1FPTEK
Ky5FZAorLlBwCitBY2Nlc3MgSFRUUFMgd2Vic2l0ZSB1c2luZyBjbGllbnQgY2VydGlmaWNhdGUg
YmFzZWQgYXV0aGVudGljYXRpb24KK2FuZCBhIHByaXZhdGUgQ0E6CisuQmQgLWxpdGVyYWwgLW9m
ZnNldCBpbmRlbnQKK1NTTF9DTElFTlRfQ0VSVF9GSUxFPS9wYXRoL3RvL2NsaWVudC5wZW0KK1NT
TF9DQV9DRVJUX0ZJTEU9L3BhdGgvdG8vbXljYS5wZW0KKy5FZAogLlNoIFNFRSBBTFNPCiAuWHIg
ZmV0Y2ggMSAsCiAuWHIgZnRwaW8gMyAsCkBAIC02NzgsNyArNzcxLDggQEAgd2l0aCBudW1lcm91
cyBzdWdnZXN0aW9ucyBhbmQgY29udHJpYnV0aQogLkFuIEhhamltdSBVbWVtb3RvIEFxIHVtZUBG
cmVlQlNELm9yZyAsCiAuQW4gSGVucnkgV2hpbmN1cCBBcSBoZW5yeUB0ZWNoaWVib2QuY29tICwK
IC5BbiBKdWtrYSBBLiBVa2tvbmVuIEFxIGphdUBpa2kuZmkgLAotLkFuIEplYW4tRnJhblwoLGNv
aXMgRG9ja2VzIEFxIGpmQGRvY2tlcy5vcmcKKy5BbiBKZWFuLUZyYW5cKCxjb2lzIERvY2tlcyBB
cSBqZkBkb2NrZXMub3JnICwKKy5BbiBNaWNoYWVsIEdtZWxpbiBBcSBmcmVlYnNkQGdyZW0uZGUK
IGFuZCBvdGhlcnMuCiBJdCByZXBsYWNlcyB0aGUgb2xkZXIKIC5ObSBmdHBpbwpAQCAtNjg4LDcg
Kzc4Miw5IEBAIGFuZAogLkFuIEpvcmRhbiBLLiBIdWJiYXJkIEFxIGpraEBGcmVlQlNELm9yZyAu
CiAuUHAKIFRoaXMgbWFudWFsIHBhZ2Ugd2FzIHdyaXR0ZW4gYnkKLS5BbiBEYWctRXJsaW5nIFNt
XCgvb3JncmF2IEFxIGRlc0BGcmVlQlNELm9yZyAuCisuQW4gRGFnLUVybGluZyBTbVwoL29yZ3Jh
diBBcSBkZXNARnJlZUJTRC5vcmcKK2FuZAorLkFuIE1pY2hhZWwgR21lbGluIEFxIGZyZWVic2RA
Z3JlbS5kZSAuCiAuU2ggQlVHUwogU29tZSBwYXJ0cyBvZiB0aGUgbGlicmFyeSBhcmUgbm90IHll
dCBpbXBsZW1lbnRlZC4KIFRoZSBtb3N0IG5vdGFibGUKQEAgLTcxNyw2ICs4MTMsMTAgQEAgaW1w
bGVtZW50ZWQsIHN1cGVyZmx1b3VzIGF0IHRoaXMgc2l0ZSIgaQogLkZuIGZldGNoU3RhdEZUUAog
ZG9lcyBub3QgY2hlY2sgdGhhdCB0aGUgcmVzdWx0IG9mIGFuIE1EVE0gY29tbWFuZCBpcyBhIHZh
bGlkIGRhdGUuCiAuUHAKK0luIGNhc2UgcGFzc3dvcmQgcHJvdGVjdGVkIGtleXMgYXJlIHVzZWQg
Zm9yIGNsaWVudCBjZXJ0aWZpY2F0ZSBiYXNlZAorYXV0aGVudGljYXRpb24gdGhlIHVzZXIgaXMg
cHJvbXB0ZWQgZm9yIHRoZSBwYXNzd29yZCBvbiBlYWNoIGFuZCBldmVyeQorZmV0Y2ggb3BlcmF0
aW9uLgorLlBwCiBUaGUgbWFuIHBhZ2UgaXMgaW5jb21wbGV0ZSwgcG9vcmx5IHdyaXR0ZW4gYW5k
IHByb2R1Y2VzIGJhZGx5CiBmb3JtYXR0ZWQgdGV4dC4KIC5QcAoKTW9kaWZpZWQ6IGhlYWQvbGli
L2xpYmZldGNoL2h0dHAuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGhlYWQvbGliL2xpYmZl
dGNoL2h0dHAuYwlGcmkgSnVsIDI2IDE0OjQzOjM4IDIwMTMJKHIyNTM2NzkpCisrKyBoZWFkL2xp
Yi9saWJmZXRjaC9odHRwLmMJRnJpIEp1bCAyNiAxNTo1Mzo0MyAyMDEzCShyMjUzNjgwKQpAQCAt
MTQwOCw3ICsxNDA4LDcgQEAgaHR0cF9jb25uZWN0KHN0cnVjdCB1cmwgKlVSTCwgc3RydWN0IHVy
bAogCQlodHRwX2dldF9yZXBseShjb25uKTsKIAl9CiAJaWYgKHN0cmNhc2VjbXAoVVJMLT5zY2hl
bWUsIFNDSEVNRV9IVFRQUykgPT0gMCAmJgotCSAgICBmZXRjaF9zc2woY29ubiwgdmVyYm9zZSkg
PT0gLTEpIHsKKwkgICAgZmV0Y2hfc3NsKGNvbm4sIFVSTCwgdmVyYm9zZSkgPT0gLTEpIHsKIAkJ
ZmV0Y2hfY2xvc2UoY29ubik7CiAJCS8qIGdycnIgKi8KIAkJZXJybm8gPSBFQVVUSDsKCk1vZGlm
aWVkOiBoZWFkL3Vzci5iaW4vZmV0Y2gvZmV0Y2guMQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IGhlYWQvdXNyLmJpbi9mZXRjaC9mZXRjaC4xCUZyaSBKdWwgMjYgMTQ6NDM6MzggMjAxMwkocjI1
MzY3OSkKKysrIGhlYWQvdXNyLmJpbi9mZXRjaC9mZXRjaC4xCUZyaSBKdWwgMjYgMTU6NTM6NDMg
MjAxMwkocjI1MzY4MCkKQEAgLTM4LDIyICszOCw1MSBAQAogLlNoIFNZTk9QU0lTCiAuTm0KIC5P
cCBGbCAxNDZBYWRGbE1tblBwcVJyc1V2CisuT3AgRmwgLWFsbG93LXNzbHYyCiAuT3AgRmwgQiBB
ciBieXRlcworLk9wIEZsIC1iaW5kLWFkZHJlc3M9IE5zIEFyIGhvc3QKKy5PcCBGbCAtY2EtY2Vy
dD0gTnMgQXIgZmlsZQorLk9wIEZsIC1jYS1wYXRoPSBOcyBBciBkaXIKKy5PcCBGbCAtY2VydD0g
TnMgQXIgZmlsZQorLk9wIEZsIC1jcmw9IE5zIEFyIGZpbGUKIC5PcCBGbCBpIEFyIGZpbGUKKy5P
cCBGbCAta2V5PSBOcyBBciBmaWxlCiAuT3AgRmwgTiBBciBmaWxlCisuT3AgRmwgLW5vLXBhc3Np
dmUKKy5PcCBGbCAtbm8tcHJveHk9IE5zIEFyIGxpc3QKKy5PcCBGbCAtbm8tc3NsdjMKKy5PcCBG
bCAtbm8tdGxzdjEKKy5PcCBGbCAtbm8tdmVyaWZ5LWhvc3RuYW1lCisuT3AgRmwgLW5vLXZlcmlm
eS1wZWVyCiAuT3AgRmwgbyBBciBmaWxlCisuT3AgRmwgLXJlZmVyZXI9IE5zIEFyIFVSTAogLk9w
IEZsIFMgQXIgYnl0ZXMKIC5PcCBGbCBUIEFyIHNlY29uZHMKKy5PcCBGbCAtdXNlci1hZ2VudD0g
TnMgQXIgYWdlbnQtc3RyaW5nCiAuT3AgRmwgdyBBciBzZWNvbmRzCiAuQXIgVVJMIC4uLgogLk5t
CiAuT3AgRmwgMTQ2QWFkRmxNbW5QcHFScnNVdgogLk9wIEZsIEIgQXIgYnl0ZXMKKy5PcCBGbCAt
YmluZC1hZGRyZXNzPSBOcyBBciBob3N0CisuT3AgRmwgLWNhLWNlcnQ9IE5zIEFyIGZpbGUKKy5P
cCBGbCAtY2EtcGF0aD0gTnMgQXIgZGlyCisuT3AgRmwgLWNlcnQ9IE5zIEFyIGZpbGUKKy5PcCBG
bCAtY3JsPSBOcyBBciBmaWxlCiAuT3AgRmwgaSBBciBmaWxlCisuT3AgRmwgLWtleT0gTnMgQXIg
ZmlsZQogLk9wIEZsIE4gQXIgZmlsZQorLk9wIEZsIC1uby1wYXNzaXZlCisuT3AgRmwgLW5vLXBy
b3h5PSBOcyBBciBsaXN0CisuT3AgRmwgLW5vLXNzbHYzCisuT3AgRmwgLW5vLXRsc3YxCisuT3Ag
RmwgLW5vLXZlcmlmeS1ob3N0bmFtZQorLk9wIEZsIC1uby12ZXJpZnktcGVlcgogLk9wIEZsIG8g
QXIgZmlsZQorLk9wIEZsIC1yZWZlcmVyPSBOcyBBciBVUkwKIC5PcCBGbCBTIEFyIGJ5dGVzCiAu
T3AgRmwgVCBBciBzZWNvbmRzCisuT3AgRmwgLXVzZXItYWdlbnQ9IE5zIEFyIGFnZW50LXN0cmlu
ZwogLk9wIEZsIHcgQXIgc2Vjb25kcwogLkZsIGggQXIgaG9zdCBGbCBmIEFyIGZpbGUgT28gRmwg
YyBBciBkaXIgT2MKIC5TaCBERVNDUklQVElPTgpAQCAtNjcsMjMgKzk2LDI2IEBAIGNvbW1hbmQg
bGluZS4KIC5QcAogVGhlIGZvbGxvd2luZyBvcHRpb25zIGFyZSBhdmFpbGFibGU6CiAuQmwgLXRh
ZyAtd2lkdGggRmwKLS5JdCBGbCAxCisuSXQgRmwgMSAsIC1vbmUtZmlsZQogU3RvcCBhbmQgcmV0
dXJuIGV4aXQgY29kZSAwIGF0IHRoZSBmaXJzdCBzdWNjZXNzZnVsbHkgcmV0cmlldmVkIGZpbGUu
Ci0uSXQgRmwgNAorLkl0IEZsIDQgLCAtaXB2NC1vbmx5CiBGb3JjZXMKIC5ObQogdG8gdXNlIElQ
djQgYWRkcmVzc2VzIG9ubHkuCi0uSXQgRmwgNgorLkl0IEZsIDYgLCAtaXB2Ni1vbmx5CiBGb3Jj
ZXMKIC5ObQogdG8gdXNlIElQdjYgYWRkcmVzc2VzIG9ubHkuCi0uSXQgRmwgQQorLkl0IEZsIEEg
LCAtbm8tcmVkaXJlY3QKIERvIG5vdCBhdXRvbWF0aWNhbGx5IGZvbGxvdyBgYHRlbXBvcmFyeScn
ICgzMDIpIHJlZGlyZWN0cy4KIFNvbWUgYnJva2VuIFdlYiBzaXRlcyB3aWxsIHJldHVybiBhIHJl
ZGlyZWN0IGluc3RlYWQgb2YgYSBub3QtZm91bmQKIGVycm9yIHdoZW4gdGhlIHJlcXVlc3RlZCBv
YmplY3QgZG9lcyBub3QgZXhpc3QuCi0uSXQgRmwgYQorLkl0IEZsIGEgLCAtcmV0cnkKIEF1dG9t
YXRpY2FsbHkgcmV0cnkgdGhlIHRyYW5zZmVyIHVwb24gc29mdCBmYWlsdXJlcy4KLS5JdCBGbCBC
IEFyIGJ5dGVzCisuSXQgRmwgLWFsbG93LXNzbHYyCitbU1NMXQorQWxsb3cgU1NMIHZlcnNpb24g
MiB3aGVuIG5lZ290aWF0aW5nIHRoZSBjb25uZWN0aW9uLgorLkl0IEZsIEIgQXIgYnl0ZXMgLCBG
bCAtYnVmZmVyLXNpemU9IE5zIEFyIGJ5dGVzCiBTcGVjaWZ5IHRoZSByZWFkIGJ1ZmZlciBzaXpl
IGluIGJ5dGVzLgogVGhlIGRlZmF1bHQgaXMgNDA5NiBieXRlcy4KIEF0dGVtcHRzIHRvIHNldCBh
IGJ1ZmZlciBzaXplIGxvd2VyIHRoYW4gdGhpcyB3aWxsIGJlIHNpbGVudGx5CkBAIC05MiwxNSAr
MTI0LDQzIEBAIFRoZSBudW1iZXIgb2YgcmVhZHMgYWN0dWFsbHkgcGVyZm9ybWVkIGkKIHR3byBv
ciBoaWdoZXIgKHNlZSB0aGUKIC5GbCB2CiBmbGFnKS4KKy5JdCBGbCAtYmluZC1hZGRyZXNzPSBO
cyBBciBob3N0CitTcGVjaWZpZXMgYSBob3N0bmFtZSBvciBJUCBhZGRyZXNzIHRvIHdoaWNoIHNv
Y2tldHMgdXNlZCBmb3Igb3V0Z29pbmcKK2Nvbm5lY3Rpb25zIHdpbGwgYmUgYm91bmQuCiAuSXQg
RmwgYyBBciBkaXIKIFRoZSBmaWxlIHRvIHJldHJpZXZlIGlzIGluIGRpcmVjdG9yeQogLkFyIGRp
cgogb24gdGhlIHJlbW90ZSBob3N0LgogVGhpcyBvcHRpb24gaXMgZGVwcmVjYXRlZCBhbmQgaXMg
cHJvdmlkZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKIG9ubHkuCi0uSXQgRmwgZAorLkl0
IEZsIC1jYS1jZXJ0PSBOcyBBciBmaWxlCitbU1NMXQorUGF0aCB0byBjZXJ0aWZpY2F0ZSBidW5k
bGUgY29udGFpbmluZyB0cnVzdGVkIENBIGNlcnRpZmljYXRlcy4gCitJZiBub3Qgc3BlY2lmaWVk
LAorLlBhIC9ldGMvc3NsL2NlcnQucGVtCitpcyB1c2VkLgorVGhlIGZpbGUgbWF5IGNvbnRhaW4g
bXVsdGlwbGUgQ0EgY2VydGlmaWNhdGVzLiBUaGUgcG9ydAorLlBhIHNlY3VyaXR5L2NhX3Jvb3Rf
bnNzCitpcyBhIGNvbW1vbiBzb3VyY2Ugb2YgYSBjdXJyZW50IENBIGJ1bmRsZS4KKy5JdCBGbCAt
Y2EtcGF0aD0gTnMgQXIgZGlyCitbU1NMXQorVGhlIGRpcmVjdG9yeQorLkFyIGRpcgorY29udGFp
bnMgdHJ1c3RlZCBDQSBoYXNoZXMuCisuSXQgRmwgLWNlcnQ9IE5zIEFyIGZpbGUKK1tTU0xdCisu
QXIgZmlsZQoraXMgYSBQRU0gZW5jb2RlZCBjbGllbnQgY2VydGlmaWNhdGUva2V5IHdoaWNoIHdp
bGwgYmUgdXNlZCBpbgorY2xpZW50IGNlcnRpZmljYXRlIGF1dGhlbnRpY2F0aW9uLgorLkl0IEZs
IC1jcmw9IE5zIEFyIGZpbGUKK1tTU0xdCitQb2ludHMgdG8gY2VydGlmaWNhdGUgcmV2b2NhdGlv
biBsaXN0CisuQXIgZmlsZSAsCit3aGljaCBoYXMgdG8gYmUgaW4gUEVNIGZvcm1hdCBhbmQgbWF5
IGNvbnRhaW4gcGVlciBjZXJ0aWZpY2F0ZXMgdGhhdCBoYXZlCitiZWVuIHJldm9rZWQuCisuSXQg
RmwgZCAsIC1kaXJlY3QKIFVzZSBhIGRpcmVjdCBjb25uZWN0aW9uIGV2ZW4gaWYgYSBwcm94eSBp
cyBjb25maWd1cmVkLgotLkl0IEZsIEYKKy5JdCBGbCBGICwgLWZvcmNlLXJlc3RhcnQKIEluIGNv
bWJpbmF0aW9uIHdpdGggdGhlCiAuRmwgcgogZmxhZywgZm9yY2VzIGEgcmVzdGFydCBldmVuIGlm
IHRoZSBsb2NhbCBhbmQgcmVtb3RlIGZpbGVzIGhhdmUKQEAgLTExOCwxNyArMTc4LDIyIEBAIFRo
ZSBmaWxlIHRvIHJldHJpZXZlIGlzIGxvY2F0ZWQgb24gdGhlIGgKIC5BciBob3N0IC4KIFRoaXMg
b3B0aW9uIGlzIGRlcHJlY2F0ZWQgYW5kIGlzIHByb3ZpZGVkIGZvciBiYWNrd2FyZCBjb21wYXRp
YmlsaXR5CiBvbmx5LgotLkl0IEZsIGkgQXIgZmlsZQorLkl0IEZsIGkgQXIgZmlsZSAsIEZsIC1p
Zi1tb2RpZmllZC1zaW5jZT0gTnMgQXIgZmlsZQogSWYtTW9kaWZpZWQtU2luY2UgbW9kZTogdGhl
IHJlbW90ZSBmaWxlIHdpbGwgb25seSBiZSByZXRyaWV2ZWQgaWYgaXQKIGlzIG5ld2VyIHRoYW4K
IC5BciBmaWxlCiBvbiB0aGUgbG9jYWwgaG9zdC4KIChIVFRQIG9ubHkpCi0uSXQgRmwgbAorLkl0
IEZsIC1rZXk9IE5zIEFyIGZpbGUKK1tTU0xdCisuQXIgZmlsZQoraXMgYSBQRU0gZW5jb2RlZCBj
bGllbnQga2V5IHRoYXQgd2lsbCBiZSB1c2VkIGluIGNsaWVudCBjZXJ0aWZpY2F0ZQorYXV0aGVu
dGljYXRpb24gaW4gY2FzZSBrZXkgYW5kIGNsaWVudCBjZXJ0aWZpY2F0ZSBhcmUgc3RvcmVkIHNl
cGFyYXRlbHkuCisuSXQgRmwgbCAsIC1zeW1saW5rCiBJZiB0aGUgdGFyZ2V0IGlzIGEgZmlsZS1z
Y2hlbWUgVVJMLCBtYWtlIGEgc3ltYm9saWMgbGluayB0byB0aGUgdGFyZ2V0CiByYXRoZXIgdGhh
biB0cnlpbmcgdG8gY29weSBpdC4KIC5JdCBGbCBNCi0uSXQgRmwgbQorLkl0IEZsIG0gLCAtbWly
cm9yCiBNaXJyb3IgbW9kZTogaWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMgbG9jYWxseSBhbmQg
aGFzIHRoZSBzYW1lIHNpemUKIGFuZCBtb2RpZmljYXRpb24gdGltZSBhcyB0aGUgcmVtb3RlIGZp
bGUsIGl0IHdpbGwgbm90IGJlIGZldGNoZWQuCiBOb3RlIHRoYXQgdGhlCkBAIC0xMzYsNyArMjAx
LDcgQEAgTm90ZSB0aGF0IHRoZQogYW5kCiAuRmwgcgogZmxhZ3MgYXJlIG11dHVhbGx5IGV4Y2x1
c2l2ZS4KLS5JdCBGbCBOIEFyIGZpbGUKKy5JdCBGbCBOIEFyIGZpbGUgLCBGbCAtbmV0cmM9IE5z
IEFyIGZpbGUKIFVzZQogLkFyIGZpbGUKIGluc3RlYWQgb2YKQEAgLTE0Niw5ICsyMTEsMjggQEAg
U2VlCiAuWHIgZnRwIDEKIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBmaWxlIGZvcm1hdC4KIFRo
aXMgZmVhdHVyZSBpcyBleHBlcmltZW50YWwuCi0uSXQgRmwgbgorLkl0IEZsIG4gLCAtbm8tbXRp
bWUKIERvIG5vdCBwcmVzZXJ2ZSB0aGUgbW9kaWZpY2F0aW9uIHRpbWUgb2YgdGhlIHRyYW5zZmVy
cmVkIGZpbGUuCi0uSXQgRmwgbyBBciBmaWxlCisuSXQgRmwgLW5vLXBhc3NpdmUKK0ZvcmNlcyB0
aGUgRlRQIGNvZGUgdG8gdXNlIGFjdGl2ZSBtb2RlLgorLkl0IEZsIC1uby1wcm94eT0gTnMgQXIg
bGlzdAorRWl0aGVyIGEgc2luZ2xlIGFzdGVyaXNrLCB3aGljaCBkaXNhYmxlcyB0aGUgdXNlIG9m
IHByb3hpZXMKK2FsdG9nZXRoZXIsIG9yIGEgY29tbWEtIG9yIHdoaXRlc3BhY2Utc2VwYXJhdGVk
IGxpc3Qgb2YgaG9zdHMgZm9yCit3aGljaCBwcm94aWVzIHNob3VsZCBub3QgYmUgdXNlZC4KKy5J
dCBGbCAtbm8tc3NsdjMKK1tTU0xdCitEb24ndCBhbGxvdyBTU0wgdmVyc2lvbiAzIHdoZW4gbmVn
b3RpYXRpbmcgdGhlIGNvbm5lY3Rpb24uCisuSXQgRmwgLW5vLXRsc3YxCitbU1NMXQorRG9uJ3Qg
YWxsb3cgVExTIHZlcnNpb24gMSB3aGVuIG5lZ290aWF0aW5nIHRoZSBjb25uZWN0aW9uLgorLkl0
IEZsIC1uby12ZXJpZnktaG9zdG5hbWUKK1tTU0xdCitEbyBub3QgdmVyaWZ5IHRoYXQgdGhlIGhv
c3RuYW1lIG1hdGNoZXMgdGhlIHN1YmplY3Qgb2YgdGhlCitjZXJ0aWZpY2F0ZSBwcmVzZW50ZWQg
YnkgdGhlIHNlcnZlci4KKy5JdCBGbCAtbm8tdmVyaWZ5LXBlZXIKK1tTU0xdCitEbyBub3QgdmVy
aWZ5IHRoZSBwZWVyIGNlcnRpZmljYXRlIGFnYWluc3QgdHJ1c3RlZCBDQXMuCisuSXQgRmwgbyBB
ciBmaWxlICwgRmwgb3V0cHV0PSBOcyBBciBmaWxlCiBTZXQgdGhlIG91dHB1dCBmaWxlIG5hbWUg
dG8KIC5BciBmaWxlIC4KIEJ5IGRlZmF1bHQsIGEgYGBwYXRobmFtZScnIGlzIGV4dHJhY3RlZCBm
cm9tIHRoZSBzcGVjaWZpZWQgVVJJLCBhbmQKQEAgLTE2MywzNiArMjQ3LDQ1IEBAIElmIHRoZQog
YXJndW1lbnQgaXMgYSBkaXJlY3RvcnksIGZldGNoZWQgZmlsZShzKSB3aWxsIGJlIHBsYWNlZCB3
aXRoaW4gdGhlCiBkaXJlY3RvcnksIHdpdGggbmFtZShzKSBzZWxlY3RlZCBhcyBpbiB0aGUgZGVm
YXVsdCBiZWhhdmlvdXIuCiAuSXQgRmwgUAotLkl0IEZsIHAKKy5JdCBGbCBwICwgLXBhc3NpdmUK
IFVzZSBwYXNzaXZlIEZUUC4KIFRoZXNlIGZsYWdzIGhhdmUgbm8gZWZmZWN0LCBzaW5jZSBwYXNz
aXZlIEZUUCBpcyB0aGUgZGVmYXVsdCwgYnV0IGFyZQogcHJvdmlkZWQgZm9yIGNvbXBhdGliaWxp
dHkgd2l0aCBlYXJsaWVyIHZlcnNpb25zIHdoZXJlIGFjdGl2ZSBGVFAgd2FzCiB0aGUgZGVmYXVs
dC4KLVRvIGZvcmNlIGFjdGl2ZSBtb2RlLCBzZXQgdGhlCitUbyBmb3JjZSBhY3RpdmUgbW9kZSwg
dXNlIHRoZQorLkZsIC1uby1wYXNzaXZlCitmbGFnIG9yIHNldCB0aGUKIC5FdiBGVFBfUEFTU0lW
RV9NT0RFCiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0bwogLlFsIE5PIC4KLS5JdCBGbCBxCisuSXQg
RmwgLXJlZmVyZXI9IE5zIEFyIFVSTAoKKioqIERJRkYgT1VUUFVUIFRSVU5DQVRFRCBBVCAxMDAw
IExJTkVTICoqKgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Xwpzdm4tc3JjLWFsbEBmcmVlYnNkLm9yZyBtYWlsaW5nIGxpc3QKaHR0cDovL2xpc3RzLmZyZWVi
c2Qub3JnL21haWxtYW4vbGlzdGluZm8vc3ZuLXNyYy1hbGwKVG8gdW5zdWJzY3JpYmUsIHNlbmQg
YW55IG1haWwgdG8gInN2bi1zcmMtYWxsLXVuc3Vic2NyaWJlQGZyZWVic2Qub3JnIg==
討論串 (同標題文章)
完整討論串 (本文為第 1 之 3 篇):