From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Ondrej Holy To: git-commits@fedoraproject.org Subject: [rpms/freerdp2] f43: Backport several CVE fixes Date: Tue, 01 Sep 2026 12:58:08 GMT Message-ID: <178826748857.1.8103620497736443628.rpms-freerdp2-4dbe5f4cac50@fedoraproject.org> List-ID: X-Git-Repo: rpms/freerdp2 X-Git-Branch: f43 X-Git-Rev: 4dbe5f4cac5039c804b879ae01e1fcfd2502e050 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZnJlZXJkcDIKICAgICAgICAgICAgQnJhbmNoIDogZjQzCiAgICAgICAgICAg IENvbW1pdCA6IDRkYmU1ZjRjYWM1MDM5YzgwNGI4NzlhZTAxZTFmY2ZkMjUwMmUwNTAKICAgICAg ICAgICAgQXV0aG9yIDogT25kcmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5jb20+CiAgICAgICAgICAg IERhdGUgICA6IDIwMjYtMDktMDFUMTI6MzQ6MzMrMDA6MDAKICAgICAgICAgICAgU3RhdHMgIDog KzQ3MDgvLTEgaW4gNTMgZmlsZShzKQogICAgICAgICAgICBVUkwgICAgOiBodHRwczovL3NyYy5m ZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2ZyZWVyZHAyL2MvNGRiZTVmNGNhYzUwMzljODA0Yjg3OWFl MDFlMWZjZmQyNTAyZTA1MD9icmFuY2g9ZjQzCgogICAgICAgICAgICBMb2c6CiAgICAgICAgICAg IEJhY2twb3J0IHNldmVyYWwgQ1ZFIGZpeGVzCgpJdCBmaXhlcyBDVkUtMjAyNi0yMjg1MiwgQ1ZF LTIwMjYtMjI4NTQsIENWRS0yMDI2LTIyODU1LCBDVkUtMjAyNi0yMjg1NiwKQ1ZFLTIwMjYtMjI4 NTgsIENWRS0yMDI2LTIyODU5LCBDVkUtMjAyNi0yMzUzMCwgQ1ZFLTIwMjYtMjM1MzEsIENWRS0y MDI2LTIzNTMyLApDVkUtMjAyNi0yMzUzMywgQ1ZFLTIwMjYtMjM1MzQsIENWRS0yMDI2LTIzNzMy LCBDVkUtMjAyNi0yMzg4MywgQ1ZFLTIwMjYtMjM4ODQsCkNWRS0yMDI2LTIzOTQ4LCBDVkUtMjAy Ni0yNDQ5MSwgQ1ZFLTIwMjYtMjQ2NzUsIENWRS0yMDI2LTI0Njc2LCBDVkUtMjAyNi0yNDY3OSwK Q1ZFLTIwMjYtMjQ2ODEsIENWRS0yMDI2LTI0NjgzLCBDVkUtMjAyNi0yNDY4NCwgQ1ZFLTIwMjYt MjU5NTIsIENWRS0yMDI2LTI2OTU1LApDVkUtMjAyNi0yNjk2NSwgQ1ZFLTIwMjYtMjY5ODYsIENW RS0yMDI2LTI3OTUxLCBDVkUtMjAyNi0yOTc3NSwgQ1ZFLTIwMjYtMzE4MDYsCkNWRS0yMDI2LTMx ODgzLCBDVkUtMjAyNi0zMTg4NCwgQ1ZFLTIwMjYtMzE4ODUsIENWRS0yMDI2LTMzOTgzLCBDVkUt MjAyNi0zMzk4NCwKQ1ZFLTIwMjYtMzM5ODUsIENWRS0yMDI2LTQ1NzAwLCBDVkUtMjAyNi02NDYy NCwgQ1ZFLTIwMjYtNjcyODksIENWRS0yMDI2LTY3Mjk5IGFuZApDVkUtMjAyNi02ODU4MC4KClJl c29sdmVzOiByaGJ6IzI0MzA5MTksIHJoYnojMjQzMDkwOCwgcmhieiMyNDMwODk4LCByaGJ6IzI0 MzA5MTQsIHJoYnojMjQzMDkwMwpSZXNvbHZlczogcmhieiMyNDMwOTI0LCByaGJ6IzI0MzA5MzMs IHJoYnojMjQyOTgwOCwgcmhieiMyNDI5ODIzLCByaGJ6IzI0Mjk3OTQKUmVzb2x2ZXM6IHJoYnoj MjQ0MzE0NiwgcmhieiMyNDQyOTc1LCByaGJ6IzI0Mjk3OTksIHJoYnojMjQyOTgxNCwgcmhieiMy NDI5ODIxClJlc29sdmVzOiByaGJ6IzI0MzgzMDksIHJoYnojMjQzODMyMSwgcmhieiMyNDM4MzA4 LCByaGJ6IzI0MzgzMjgsIHJoYnojMjQzODMyNApSZXNvbHZlczogcmhieiMyNDM4MzAyLCByaGJ6 IzI0MzgzMTAsIHJoYnojMjQzODMwMCwgcmhieiMyNDQ3Mzk0LCByaGJ6IzI0NTMyNDMKUmVzb2x2 ZXM6IHJoYnojMjQ1MzI0MCwgcmhieiMyNDQyODM3LCByaGJ6IzI0NDI4MTAsIHJoYnojMjQ0NzQy NiwgcmhieiMyNDQ3NDIyClJlc29sdmVzOiByaGJ6IzI0NDc0MTMsIHJoYnojMjQ0NzQxNiwgcmhi eiMyNDUzMjQ3LCByaGJ6IzI0NDI4NTcsIHJoYnojMjQ5MTY4MwpSZXNvbHZlczogcmhieiMyNTEw Mjk1LCByaGJ6IzI1MTA2NDMsIHJoYnojMjUwMzY0NiwgcmhieiMyNTEwNDQ4CgpDby1BdXRob3Jl ZC1CeTogQ2xhdWRlIFNvbm5ldCA0LjYgKDFNIGNvbnRleHQpIDxub3JlcGx5QGFudGhyb3BpYy5j b20+CgotLS0KZGlmZiAtLWdpdCBhL2FsbG9jYXRpb25zLWZpeC1ncm93dGgtb2YtcHJlYWxsb2Nh dGVkLWJ1ZmZlcnMucGF0Y2ggYi9hbGxvY2F0aW9ucy1maXgtZ3Jvd3RoLW9mLXByZWFsbG9jYXRl ZC1idWZmZXJzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzNDgz OWQKLS0tIC9kZXYvbnVsbAorKysgYi9hbGxvY2F0aW9ucy1maXgtZ3Jvd3RoLW9mLXByZWFsbG9j YXRlZC1idWZmZXJzLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK0Zyb20gNTYzYTE5YTY4M2Q2ZTBl N2IxMjE4ZTQ1NThhMGZiNzUzMzNiNWIzNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206 IE9uZHJlaiBIb2x5IDxvaG9seUByZWRoYXQuY29tPgorRGF0ZTogVHVlLCAyOCBBcHIgMjAyNiAw NDoxNDoyMyArMDAwMAorU3ViamVjdDogW1BBVENIXSBbYWxsb2NhdGlvbnNdIGZpeCBncm93dGgg b2YgcHJlYWxsb2NhdGVkIGJ1ZmZlcnMKKworUGFydGlhbCBiYWNrcG9ydCBvZiBjb21taXQgMTE4 YWZjMGI5NTRiYTlkNTYzMmI3ODM2YWQyNGU0NTQ1NTVlZDExMy4KKworT25seSB0aGUgYFN0cmVh bV9FbnN1cmVDYXBhY2l0eWAgZml4IGlzIGluY2x1ZGVkLiBPdGhlciBjaGFuZ2VzIGZyb20KK3Ro ZSB1cHN0cmVhbSBjb21taXQgKGBzaXplb2YoV0NIQVIpYCByZXBsYWNlbWVudHMsIGNvbGxlY3Rp b24gZ3Jvd3RoCitwYXR0ZXJucywgZW52aXJvbm1lbnQgYmxvY2sgaGFuZGxpbmcpIGFyZSB1bnJl bGF0ZWQgdG8gQ1ZFLTIwMjYtMjc5NTEuCisKK01hZGUtd2l0aDogQ3Vyc29yCistLS0KKyB3aW5w ci9saWJ3aW5wci91dGlscy9zdHJlYW0uYyB8IDYgKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDQg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3dpbnByL2xpYndp bnByL3V0aWxzL3N0cmVhbS5jIGIvd2lucHIvbGlid2lucHIvdXRpbHMvc3RyZWFtLmMKK2luZGV4 IGNjMTE5YzcuLmNiMTQ1YjAgMTAwNjQ0CistLS0gYS93aW5wci9saWJ3aW5wci91dGlscy9zdHJl YW0uYworKysrIGIvd2lucHIvbGlid2lucHIvdXRpbHMvc3RyZWFtLmMKK0BAIC00MCw4ICs0MCwx MCBAQCBCT09MIFN0cmVhbV9FbnN1cmVDYXBhY2l0eSh3U3RyZWFtKiBzLCBzaXplX3Qgc2l6ZSkK KyAKKyAJCWRvCisgCQl7CistCQkJbmV3X2NhcGFjaXR5ICo9IDI7CistCQl9IHdoaWxlIChuZXdf Y2FwYWNpdHkgPCBzaXplKTsKKysJCQlpZiAobmV3X2NhcGFjaXR5ID4gU0laRV9NQVggLSAxMjh1 bGwpCisrCQkJCXJldHVybiBGQUxTRTsKKysJCQluZXdfY2FwYWNpdHkgKz0gMTI4dWxsOworKwkJ fSB3aGlsZSAobmV3X2NhcGFjaXR5IDw9IHNpemUpOworIAorIAkJcG9zaXRpb24gPSBTdHJlYW1f R2V0UG9zaXRpb24ocyk7CisgCistLSAKKzIuNTMuMAorCgpkaWZmIC0tZ2l0IGEvY2FjaGUtYml0 bWFwLWluaXRpYWxpemUtb3ZlcmFsbG9jYXRlZC1iaXRtYXAtY2FjaGUtZXh0cmEtc2xvdC5wYXRj aCBiL2NhY2hlLWJpdG1hcC1pbml0aWFsaXplLW92ZXJhbGxvY2F0ZWQtYml0bWFwLWNhY2hlLWV4 dHJhLXNsb3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjMwMWZi NwotLS0gL2Rldi9udWxsCisrKyBiL2NhY2hlLWJpdG1hcC1pbml0aWFsaXplLW92ZXJhbGxvY2F0 ZWQtYml0bWFwLWNhY2hlLWV4dHJhLXNsb3QucGF0Y2gKQEAgLTAsMCArMSw1MiBAQAorRnJvbSAy MzMyMGE2ZDVmMmUxYzhhOWI3ZDZmNGUzYzJhMWIwOTg3NjU0MzIxIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQorRnJvbTogT25kcmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5jb20+CitEYXRlOiBUdWUs IDI4IEFwciAyMDI2IDA0OjI1OjU4ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIFtjYWNoZSxiaXRt YXBdIGluaXRpYWxpemUgb3ZlcmFsbG9jYXRlZCBiaXRtYXAgY2FjaGUgZXh0cmEKKyBzbG90CisK K0JhY2twb3J0IG9mIGNvbW1pdCA4MjcwZTBiYjNkNjcyNmM5NDdkNTdjOTNiYTljYWE5MmEwNTJi NTU3LgorCitBZGp1c3RlZCBodW5rIG9mZnNldHMgZm9yIDIuMTEuNy4KKworTWFkZS13aXRoOiBD dXJzb3IKKy0tLQorIGxpYmZyZWVyZHAvY2FjaGUvYml0bWFwLmMgfCAxNiArKysrKysrKysrKysr KystCisgMSBmaWxlIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKwor ZGlmZiAtLWdpdCBhL2xpYmZyZWVyZHAvY2FjaGUvYml0bWFwLmMgYi9saWJmcmVlcmRwL2NhY2hl L2JpdG1hcC5jCitpbmRleCBiOGE0ZjIxLi4yMzMyMGE2IDEwMDY0NAorLS0tIGEvbGliZnJlZXJk cC9jYWNoZS9iaXRtYXAuYworKysrIGIvbGliZnJlZXJkcC9jYWNoZS9iaXRtYXAuYworQEAgLTMw Myw2ICszMDMsMTkgQEAgcmRwQml0bWFwQ2FjaGUqIGJpdG1hcF9jYWNoZV9uZXcocmRwU2V0dGlu Z3MqIHNldHRpbmdzKQorIAkJY2VsbC0+bnVtYmVyID0gbnI7CisgCX0KKyAKKysJLyogaW5pdGlh bGl6ZSB0aGUgb3ZlcmFsbG9jYXRlZCBleHRyYSBzbG90IGZvciBvbGQgUkRQIHNlcnZlcnMgdGhh dCBzZW5kCisrCSAqIGNhY2hlSWQgPT0gbWF4Q2VsbHM7IHVzZSBhIG1pbmltYWwgYWxsb2NhdGlv biBzaW5jZSBubyBwcm90b2NvbC1uZWdvdGlhdGVkCisrCSAqIGNhcGFjaXR5IGV4aXN0cyBmb3Ig dGhpcyBzbG90ICovCisrCXsKKysJCUJJVE1BUF9WMl9DRUxMKiBleHRyYSA9ICZiaXRtYXBDYWNo ZS0+Y2VsbHNbYml0bWFwQ2FjaGUtPm1heENlbGxzXTsKKysJCS8qIGFsbG9jYXRlIGFuIGV4dHJh IGVudHJ5IGZvciBCSVRNQVBfQ0FDSEVfV0FJVElOR19MSVNUX0lOREVYICovCisrCQlleHRyYS0+ ZW50cmllcyA9IChyZHBCaXRtYXAqKiljYWxsb2MoMSwgc2l6ZW9mKHJkcEJpdG1hcCopKTsKKysK KysJCWlmICghZXh0cmEtPmVudHJpZXMpCisrCQkJZ290byBmYWlsOworKwkJZXh0cmEtPm51bWJl ciA9IDA7CisrCX0KKysKKyAJcmV0dXJuIGJpdG1hcENhY2hlOworIGZhaWw6CisgCitAQCAtMzE1 LDcgKzMyOCw4IEBAIHZvaWQgYml0bWFwX2NhY2hlX2ZyZWUocmRwQml0bWFwQ2FjaGUqIGJpdG1h cENhY2hlKQorIAlpZiAoYml0bWFwQ2FjaGUpCisgCXsKKyAJCVVJTlQzMiBpOworLQkJZm9yIChp ID0gMDsgaSA8IGJpdG1hcENhY2hlLT5tYXhDZWxsczsgaSsrKQorKwkJLyogaXRlcmF0ZSB0aHJv dWdoIG1heENlbGxzICsgMSB0byBhbHNvIGZyZWUgdGhlIG92ZXJhbGxvY2F0ZWQgZXh0cmEgc2xv dCAqLworKwkJZm9yIChpID0gMDsgaSA8PSBiaXRtYXBDYWNoZS0+bWF4Q2VsbHM7IGkrKykKKyAJ CXsKKyAJCQlVSU5UMzIgajsKKyAJCQlCSVRNQVBfVjJfQ0VMTCogY2VsbCA9ICZiaXRtYXBDYWNo ZS0+Y2VsbHNbaV07CistLSAKKzIuNTMuMAorCgpkaWZmIC0tZ2l0IGEvY2FjaGUtYml0bWFwLW92 ZXJhbGxvY2F0ZS1iaXRtYXAtY2FjaGUucGF0Y2ggYi9jYWNoZS1iaXRtYXAtb3ZlcmFsbG9jYXRl LWJpdG1hcC1jYWNoZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5k NWYwZWRjCi0tLSAvZGV2L251bGwKKysrIGIvY2FjaGUtYml0bWFwLW92ZXJhbGxvY2F0ZS1iaXRt YXAtY2FjaGUucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSA2MDhjNWQ0MGY2YWI0Y2FiZDRk NTc5M2IyZDY0MWY0MDFlMTQ2MjMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT25k cmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5jb20+CitEYXRlOiBUdWUsIDI4IEFwciAyMDI2IDA0OjI1 OjUyICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIFtjYWNoZSxiaXRtYXBdIG92ZXJhbGxvY2F0ZSBi aXRtYXAgY2FjaGUKKworQmFja3BvcnQgb2YgY29tbWl0IGZmYWQ1OGZkMmIzMjllZmQ4MWEzMjM5 ZTlkN2UzYzkyN2I4ZTUwM2YuCisKK0FkanVzdGVkIGh1bmsgb2Zmc2V0cyBmb3IgMi4xMS43Lgor CitNYWRlLXdpdGg6IEN1cnNvcgorLS0tCisgbGliZnJlZXJkcC9jYWNoZS9iaXRtYXAuYyB8IDUg KysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisK K2RpZmYgLS1naXQgYS9saWJmcmVlcmRwL2NhY2hlL2JpdG1hcC5jIGIvbGliZnJlZXJkcC9jYWNo ZS9iaXRtYXAuYworaW5kZXggMGNlMjU5OS4uYjhhNGYyMSAxMDA2NDQKKy0tLSBhL2xpYmZyZWVy ZHAvY2FjaGUvYml0bWFwLmMKKysrKyBiL2xpYmZyZWVyZHAvY2FjaGUvYml0bWFwLmMKK0BAIC0y ODEsOCArMjgxLDEwIEBAIHJkcEJpdG1hcENhY2hlKiBiaXRtYXBfY2FjaGVfbmV3KHJkcFNldHRp bmdzKiBzZXR0aW5ncykKKyAJYml0bWFwQ2FjaGUtPnNldHRpbmdzID0gc2V0dGluZ3M7CisgCWJp dG1hcENhY2hlLT51cGRhdGUgPSAoKGZyZWVyZHAqKXNldHRpbmdzLT5pbnN0YW5jZSktPnVwZGF0 ZTsKKyAJYml0bWFwQ2FjaGUtPmNvbnRleHQgPSBiaXRtYXBDYWNoZS0+dXBkYXRlLT5jb250ZXh0 OworKworKwkvKiBvdmVyYWxsb2NhdGUgYnkgMS4gb2xkZXIgUkRQIHNlcnZlcnMgZG8gc2VuZCBh IG9mZiBieSAxIGNhY2hlIGluZGV4LiAqLworIAliaXRtYXBDYWNoZS0+Y2VsbHMgPQorLQkgICAg KEJJVE1BUF9WMl9DRUxMKiljYWxsb2Moc2V0dGluZ3MtPkJpdG1hcENhY2hlVjJOdW1DZWxscywg c2l6ZW9mKEJJVE1BUF9WMl9DRUxMKSk7CisrCSAgICAoQklUTUFQX1YyX0NFTEwqKWNhbGxvYyhz ZXR0aW5ncy0+Qml0bWFwQ2FjaGVWMk51bUNlbGxzICsgMXVsbCwgc2l6ZW9mKEJJVE1BUF9WMl9D RUxMKSk7CisgCisgCWlmICghYml0bWFwQ2FjaGUtPmNlbGxzKQorIAkJZ290byBmYWlsOworLS0g CisyLjUzLjAKKwoKZGlmZiAtLWdpdCBhL2NhY2hlLW9mZnNjcmVlbi1pbnZhbGlkYXRlLWJpdG1h cC1iZWZvcmUtZnJlZS5wYXRjaCBiL2NhY2hlLW9mZnNjcmVlbi1pbnZhbGlkYXRlLWJpdG1hcC1i ZWZvcmUtZnJlZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2Uw OTRkCi0tLSAvZGV2L251bGwKKysrIGIvY2FjaGUtb2Zmc2NyZWVuLWludmFsaWRhdGUtYml0bWFw LWJlZm9yZS1mcmVlLnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK0Zyb20gNGE0MTI2MzgwNDMwYTM1 MTdkMTAxNWI2Mjg0NzViODE2NzA1Y2ViNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206 IE9uZHJlaiBIb2x5IDxvaG9seUByZWRoYXQuY29tPgorRGF0ZTogVGh1LCAyMiBKYW4gMjAyNiAx Mjo1MjoxNiArMDEwMAorU3ViamVjdDogW1BBVENIXSBbY2FjaGUsb2Zmc2NyZWVuXSBpbnZhbGlk YXRlIGJpdG1hcCBiZWZvcmUgZnJlZQorCitCYWNrcG9ydCBvZiBjb21taXQgNTIxMDZhMjY3MjZh MmFiYTc3YWE2ZDg2MDE0ZDJlYjM1MDdmMDc4My4KKworQ28tQXV0aG9yZWQtQnk6IENsYXVkZSA8 bm9yZXBseUBhbnRocm9waWMuY29tPgorLS0tCisgbGliZnJlZXJkcC9jYWNoZS9vZmZzY3JlZW4u YyB8IDEwICsrKysrKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRl bGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliZnJlZXJkcC9jYWNoZS9vZmZzY3JlZW4uYyBi L2xpYmZyZWVyZHAvY2FjaGUvb2Zmc2NyZWVuLmMKK2luZGV4IGNkYWQ1NmI0ZC4uMTFlNmNhZjIx IDEwMDY0NAorLS0tIGEvbGliZnJlZXJkcC9jYWNoZS9vZmZzY3JlZW4uYworKysrIGIvbGliZnJl ZXJkcC9jYWNoZS9vZmZzY3JlZW4uYworQEAgLTE2MCw3ICsxNjAsNyBAQCB2b2lkIG9mZnNjcmVl bl9jYWNoZV9wdXQocmRwT2Zmc2NyZWVuQ2FjaGUqIG9mZnNjcmVlbkNhY2hlLCBVSU5UMzIgaW5k ZXgsIHJkcEJpdAorIAorIHZvaWQgb2Zmc2NyZWVuX2NhY2hlX2RlbGV0ZShyZHBPZmZzY3JlZW5D YWNoZSogb2Zmc2NyZWVuQ2FjaGUsIFVJTlQzMiBpbmRleCkKKyB7CistCXJkcEJpdG1hcCogcHJl dkJpdG1hcDsKKysJV0lOUFJfQVNTRVJUKG9mZnNjcmVlbkNhY2hlKTsKKyAKKyAJaWYgKGluZGV4 ID49IG9mZnNjcmVlbkNhY2hlLT5tYXhFbnRyaWVzKQorIAl7CitAQCAtMTY4LDEwICsxNjgsMTYg QEAgdm9pZCBvZmZzY3JlZW5fY2FjaGVfZGVsZXRlKHJkcE9mZnNjcmVlbkNhY2hlKiBvZmZzY3Jl ZW5DYWNoZSwgVUlOVDMyIGluZGV4KQorIAkJcmV0dXJuOworIAl9CisgCistCXByZXZCaXRtYXAg PSBvZmZzY3JlZW5DYWNoZS0+ZW50cmllc1tpbmRleF07CisrCXJkcEJpdG1hcCogcHJldkJpdG1h cCA9IG9mZnNjcmVlbkNhY2hlLT5lbnRyaWVzW2luZGV4XTsKKyAKKyAJaWYgKHByZXZCaXRtYXAg IT0gTlVMTCkKKysJeworKwkJV0lOUFJfQVNTRVJUKG9mZnNjcmVlbkNhY2hlLT51cGRhdGUtPmNv bnRleHQpOworKworKwkJLyogRW5zdXJlIHRoYXQgdGhlIGJpdG1hcCBpcyBubyBsb25nZXIgdXNl ZCBpbiBHREkgKi8KKysJCUlGQ0FMTChwcmV2Qml0bWFwLT5TZXRTdXJmYWNlLCBvZmZzY3JlZW5D YWNoZS0+dXBkYXRlLT5jb250ZXh0LCBOVUxMLCBGQUxTRSk7CisgCQlCaXRtYXBfRnJlZShvZmZz Y3JlZW5DYWNoZS0+dXBkYXRlLT5jb250ZXh0LCBwcmV2Qml0bWFwKTsKKysJfQorIAorIAlvZmZz Y3JlZW5DYWNoZS0+ZW50cmllc1tpbmRleF0gPSBOVUxMOworIH0KKy0tIAorMi41Mi4wCisKCmRp ZmYgLS1naXQgYS9jaGFubmVsLXJkcHNuZC1vbmx5LWNsZWFuLXVwLXRocmVhZC1iZWZvcmUtZnJl ZS5wYXRjaCBiL2NoYW5uZWwtcmRwc25kLW9ubHktY2xlYW4tdXAtdGhyZWFkLWJlZm9yZS1mcmVl LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhZTk4MWEKLS0tIC9k ZXYvbnVsbAorKysgYi9jaGFubmVsLXJkcHNuZC1vbmx5LWNsZWFuLXVwLXRocmVhZC1iZWZvcmUt ZnJlZS5wYXRjaApAQCAtMCwwICsxLDExNyBAQAorRnJvbSBiOTZiZmE0ODVhMjg2MzM1YmNiNGM2 OThmYTY0OTBmYjRhOThiOWU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT25kcmVq IEhvbHkgPG9ob2x5QHJlZGhhdC5jb20+CitEYXRlOiBGcmksIDEzIE1hciAyMDI2IDE1OjQ3OjEx ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFtjaGFubmVsLHJkcHNuZF0gb25seSBjbGVhbiB1cCB0 aHJlYWQgYmVmb3JlIGZyZWUKKworQmFja3BvcnQgb2YgY29tbWl0IGFmYTY4NTFkYzgwODM1ZDMx MDFlNDBmY2VmNTFiNmM1YzBmNDNlYTUuCisKK01hZGUtd2l0aDogQ3Vyc29yCistLS0KKyBjaGFu bmVscy9yZHBzbmQvY2xpZW50L3JkcHNuZF9tYWluLmMgfCAzNyArKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9u cygtKQorCitkaWZmIC0tZ2l0IGEvY2hhbm5lbHMvcmRwc25kL2NsaWVudC9yZHBzbmRfbWFpbi5j IGIvY2hhbm5lbHMvcmRwc25kL2NsaWVudC9yZHBzbmRfbWFpbi5jCitpbmRleCBjNzY2MGE4NTcu LjU3NmUwNjVkMiAxMDA2NDQKKy0tLSBhL2NoYW5uZWxzL3JkcHNuZC9jbGllbnQvcmRwc25kX21h aW4uYworKysrIGIvY2hhbm5lbHMvcmRwc25kL2NsaWVudC9yZHBzbmRfbWFpbi5jCitAQCAtMTMz LDYgKzEzMyw4IEBAIHN0cnVjdCByZHBzbmRfcGx1Z2luCisgCUJPT0wgYXBwbHlWb2x1bWU7Cisg fTsKKyAKKytzdGF0aWMgRFdPUkQgV0lOQVBJIHBsYXlfdGhyZWFkKExQVk9JRCBhcmcpOworKwor IHN0YXRpYyBjb25zdCBjaGFyKiByZHBzbmRfaXNfZHluX3N0cihCT09MIGR5bmFtaWMpCisgewor IAlpZiAoZHluYW1pYykKK0BAIC0xMjY3LDcgKzEyNjksNiBAQCBzdGF0aWMgdm9pZCBjbGVhbnVw X2ludGVybmFscyhyZHBzbmRQbHVnaW4qIHJkcHNuZCkKKyAJaWYgKCFyZHBzbmQpCisgCQlyZXR1 cm47CisgCistCXJkcHNuZF90ZXJtaW5hdGVfdGhyZWFkKHJkcHNuZCk7CisgCWlmIChyZHBzbmQt PnBvb2wpCisgCQlTdHJlYW1Qb29sX1JldHVybihyZHBzbmQtPnBvb2wsIHJkcHNuZC0+ZGF0YV9p bik7CisgCitAQCAtMTMzMSw2ICsxMzMyLDcgQEAgc3RhdGljIHZvaWQgZnJlZV9pbnRlcm5hbHMo cmRwc25kUGx1Z2luKiByZHBzbmQpCisgCWlmICghcmRwc25kKQorIAkJcmV0dXJuOworIAorKwly ZHBzbmRfdGVybWluYXRlX3RocmVhZChyZHBzbmQpOworIAlmcmVlcmRwX2RzcF9jb250ZXh0X2Zy ZWUocmRwc25kLT5kc3BfY29udGV4dCk7CisgCVN0cmVhbVBvb2xfRnJlZShyZHBzbmQtPnBvb2wp OworIAlyZHBzbmQtPnBvb2wgPSBOVUxMOworQEAgLTEzNTMsNiArMTM1NSwyMyBAQCBzdGF0aWMg Qk9PTCBhbGxvY2F0ZV9pbnRlcm5hbHMocmRwc25kUGx1Z2luKiByZHBzbmQpCisgCQkJcmV0dXJu IEZBTFNFOworIAl9CisgCisrCWlmICghcmRwc25kLT5xdWV1ZSkKKysJeworKwkJd09iamVjdCBv YmogPSB7IDAgfTsKKysKKysJCW9iai5mbk9iamVjdEZyZWUgPSBfcXVldWVfZnJlZTsKKysJCXJk cHNuZC0+cXVldWUgPSBNZXNzYWdlUXVldWVfTmV3KCZvYmopOworKwkJaWYgKCFyZHBzbmQtPnF1 ZXVlKQorKwkJCXJldHVybiBGQUxTRTsKKysJfQorKworKwlpZiAoIXJkcHNuZC0+dGhyZWFkKQor Kwl7CisrCQlyZHBzbmQtPnRocmVhZCA9IENyZWF0ZVRocmVhZChOVUxMLCAwLCBwbGF5X3RocmVh ZCwgcmRwc25kLCAwLCBOVUxMKTsKKysJCWlmICghcmRwc25kLT50aHJlYWQpCisrCQkJcmV0dXJu IEZBTFNFOworKwl9CisrCisgCXJldHVybiBUUlVFOworIH0KKyAKK0BAIC0xMzkxLDIzICsxNDEw LDEyIEBAIHN0YXRpYyBEV09SRCBXSU5BUEkgcGxheV90aHJlYWQoTFBWT0lEIGFyZykKKyAKKyBz dGF0aWMgVUlOVCByZHBzbmRfdmlydHVhbF9jaGFubmVsX2V2ZW50X2luaXRpYWxpemVkKHJkcHNu ZFBsdWdpbiogcmRwc25kKQorIHsKKy0Jd09iamVjdCBvYmogPSB7IDAgfTsKKy0KKyAJaWYgKCFy ZHBzbmQpCisgCQlyZXR1cm4gRVJST1JfSU5WQUxJRF9QQVJBTUVURVI7CisgCistCW9iai5mbk9i amVjdEZyZWUgPSBfcXVldWVfZnJlZTsKKy0JcmRwc25kLT5xdWV1ZSA9IE1lc3NhZ2VRdWV1ZV9O ZXcoJm9iaik7CistCWlmICghcmRwc25kLT5xdWV1ZSkKKy0JCXJldHVybiBDSEFOTkVMX1JDX05P X01FTU9SWTsKKy0KKyAJaWYgKCFhbGxvY2F0ZV9pbnRlcm5hbHMocmRwc25kKSkKKyAJCXJldHVy biBDSEFOTkVMX1JDX05PX01FTU9SWTsKKyAKKy0JcmRwc25kLT50aHJlYWQgPSBDcmVhdGVUaHJl YWQoTlVMTCwgMCwgcGxheV90aHJlYWQsIHJkcHNuZCwgMCwgTlVMTCk7CistCWlmICghcmRwc25k LT50aHJlYWQpCistCQlyZXR1cm4gQ0hBTk5FTF9SQ19JTklUSUFMSVpBVElPTl9FUlJPUjsKKy0K KyAJcmV0dXJuIENIQU5ORUxfUkNfT0s7CisgfQorIAorQEAgLTE0MTUsOCArMTQyMyw2IEBAIHZv aWQgcmRwc25kX3ZpcnR1YWxfY2hhbm5lbF9ldmVudF90ZXJtaW5hdGVkKHJkcHNuZFBsdWdpbiog cmRwc25kKQorIHsKKyAJaWYgKHJkcHNuZCkKKyAJeworLQkJcmRwc25kX3Rlcm1pbmF0ZV90aHJl YWQocmRwc25kKTsKKy0KKyAJCWZyZWVfaW50ZXJuYWxzKHJkcHNuZCk7CisgCQlhdWRpb19mb3Jt YXRzX2ZyZWUocmRwc25kLT5maXhlZF9mb3JtYXQsIDEpOworIAkJZnJlZShyZHBzbmQtPnN1YnN5 c3RlbSk7CitAQCAtMTYwNCwxNCArMTYxMCwxMyBAQCBzdGF0aWMgVUlOVCByZHBzbmRfb25fY2xv c2UoSVdUU1ZpcnR1YWxDaGFubmVsQ2FsbGJhY2sqIHBDaGFubmVsQ2FsbGJhY2spCisgCQlJRkNB TEwocmRwc25kLT5kZXZpY2UtPkNsb3NlLCByZHBzbmQtPmRldmljZSk7CisgCisgCWNsZWFudXBf aW50ZXJuYWxzKHJkcHNuZCk7CistCisrCWZyZWVfaW50ZXJuYWxzKHJkcHNuZCk7CisgCWlmIChy ZHBzbmQtPmRldmljZSkKKyAJeworIAkJSUZDQUxMKHJkcHNuZC0+ZGV2aWNlLT5GcmVlLCByZHBz bmQtPmRldmljZSk7CisgCQlyZHBzbmQtPmRldmljZSA9IE5VTEw7CisgCX0KKyAKKy0JZnJlZV9p bnRlcm5hbHMocmRwc25kKTsKKyAJZnJlZShwQ2hhbm5lbENhbGxiYWNrKTsKKyAJcmV0dXJuIENI QU5ORUxfUkNfT0s7CisgfQorLS0gCisyLjUzLjAKKwoKZGlmZiAtLWdpdCBhL2NoYW5uZWxzLWFp bnB1dC1sb2NrLWNvbnRleHQtd2hlbi11cGRhdGluZy1saXN0ZW5lci5wYXRjaCBiL2NoYW5uZWxz LWFpbnB1dC1sb2NrLWNvbnRleHQtd2hlbi11cGRhdGluZy1saXN0ZW5lci5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTJiMDdhCi0tLSAvZGV2L251bGwKKysrIGIv Y2hhbm5lbHMtYWlucHV0LWxvY2stY29udGV4dC13aGVuLXVwZGF0aW5nLWxpc3RlbmVyLnBhdGNo CkBAIC0wLDAgKzEsMTMyIEBACitGcm9tIDZiZjRlMjU1ODg2MWUwNmZkNjhlZjgwMzY3OTZmZjQ3 NWExYzIzZmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPbmRyZWogSG9seSA8b2hv bHlAcmVkaGF0LmNvbT4KK0RhdGU6IEZyaSwgMTMgTWFyIDIwMjYgMTU6MjQ6MDkgKzAxMDAKK1N1 YmplY3Q6IFtQQVRDSF0gW2NoYW5uZWxzLGFpbnB1dF0gbG9jayBjb250ZXh0IHdoZW4gdXBkYXRp bmcgbGlzdGVuZXIKKworQmFja3BvcnQgb2YgY29tbWl0IGQ5Y2EyNzJkY2U3YTc3NmFiNDc1ZTli MWE4ZThjM2QyOTY4Yzg0ODYuCisKK01hZGUtd2l0aDogQ3Vyc29yCistLS0KKyBjaGFubmVscy9h aW5wdXQvY2xpZW50L2FpbnB1dF9tYWluLmMgfCAzOCArKysrKysrKysrKysrKysrKysrKy0tLS0t LS0tCisgMSBmaWxlIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQor CitkaWZmIC0tZ2l0IGEvY2hhbm5lbHMvYWlucHV0L2NsaWVudC9haW5wdXRfbWFpbi5jIGIvY2hh bm5lbHMvYWlucHV0L2NsaWVudC9haW5wdXRfbWFpbi5jCitpbmRleCBkOGViOGVjNTkuLmZmOTAx ZDJhMCAxMDA2NDQKKy0tLSBhL2NoYW5uZWxzL2FpbnB1dC9jbGllbnQvYWlucHV0X21haW4uYwor KysrIGIvY2hhbm5lbHMvYWlucHV0L2NsaWVudC9haW5wdXRfbWFpbi5jCitAQCAtMjgsNiArMjgs NyBAQAorICNpbmNsdWRlIDx3aW5wci9jcnQuaD4KKyAjaW5jbHVkZSA8d2lucHIvYXNzZXJ0Lmg+ CisgI2luY2x1ZGUgPHdpbnByL3N0cmVhbS5oPgorKyNpbmNsdWRlIDx3aW5wci9zeW5jaC5oPgor ICNpbmNsdWRlIDx3aW5wci9zeXNpbmZvLmg+CisgCisgI2luY2x1ZGUgImFpbnB1dF9tYWluLmgi CitAQCAtNjksNiArNzAsNyBAQCBzdHJ1Y3QgQUlOUFVUX1BMVUdJTl8KKyAJVUlOVDMyIE1ham9y VmVyc2lvbjsKKyAJVUlOVDMyIE1pbm9yVmVyc2lvbjsKKyAJQk9PTCBpbml0aWFsaXplZDsKKysJ Q1JJVElDQUxfU0VDVElPTiBsb2NrOworIH07CisgCisgLyoqCitAQCAtMTA5LDEwICsxMTEsNyBA QCBzdGF0aWMgVUlOVCBhaW5wdXRfb25fZGF0YV9yZWNlaXZlZChJV1RTVmlydHVhbENoYW5uZWxD YWxsYmFjayogcENoYW5uZWxDYWxsYmFjaworIAorIHN0YXRpYyBVSU5UIGFpbnB1dF9zZW5kX2lu cHV0X2V2ZW50KEFJbnB1dENsaWVudENvbnRleHQqIGNvbnRleHQsIFVJTlQ2NCBmbGFncywgSU5U MzIgeCwgSU5UMzIgeSkKKyB7CistCUFJTlBVVF9QTFVHSU4qIGFpbnB1dDsKKy0JQUlOUFVUX0NI QU5ORUxfQ0FMTEJBQ0sqIGNhbGxiYWNrOworIAlCWVRFIGJ1ZmZlclszMl0gPSB7IDAgfTsKKy0J VUlOVDY0IHRpbWU7CisgCXdTdHJlYW0gc2J1ZmZlciA9IHsgMCB9OworIAl3U3RyZWFtKiBzID0g JnNidWZmZXI7CisgCitAQCAtMTIxLDggKzEyMCw4IEBAIHN0YXRpYyBVSU5UIGFpbnB1dF9zZW5k X2lucHV0X2V2ZW50KEFJbnB1dENsaWVudENvbnRleHQqIGNvbnRleHQsIFVJTlQ2NCBmbGFncywK KyAJV0lOUFJfQVNTRVJUKHMpOworIAlXSU5QUl9BU1NFUlQoY29udGV4dCk7CisgCistCXRpbWUg PSBHZXRUaWNrQ291bnQ2NCgpOworLQlhaW5wdXQgPSAoQUlOUFVUX1BMVUdJTiopY29udGV4dC0+ aGFuZGxlOworKwljb25zdCBVSU5UNjQgdGltZSA9IEdldFRpY2tDb3VudDY0KCk7CisrCUFJTlBV VF9QTFVHSU4qIGFpbnB1dCA9IChBSU5QVVRfUExVR0lOKiljb250ZXh0LT5oYW5kbGU7CisgCVdJ TlBSX0FTU0VSVChhaW5wdXQpOworIAlXSU5QUl9BU1NFUlQoYWlucHV0LT5saXN0ZW5lcl9jYWxs YmFjayk7CisgCitAQCAtMTMyLDggKzEzMSw2IEBAIHN0YXRpYyBVSU5UIGFpbnB1dF9zZW5kX2lu cHV0X2V2ZW50KEFJbnB1dENsaWVudENvbnRleHQqIGNvbnRleHQsIFVJTlQ2NCBmbGFncywKKyAJ CSAgICAgICAgICBhaW5wdXQtPk1ham9yVmVyc2lvbiwgYWlucHV0LT5NaW5vclZlcnNpb24pOwor IAkJcmV0dXJuIENIQU5ORUxfUkNfVU5TVVBQT1JURURfVkVSU0lPTjsKKyAJfQorLQljYWxsYmFj ayA9IGFpbnB1dC0+bGlzdGVuZXJfY2FsbGJhY2stPmNoYW5uZWxfY2FsbGJhY2s7CistCVdJTlBS X0FTU0VSVChjYWxsYmFjayk7CisgCisgCXsKKyAJCWNoYXIgYnVmZmVyWzEyOF0gPSB7IDAgfTsK K0BAIC0xNTIsMTAgKzE0OSwxNSBAQCBzdGF0aWMgVUlOVCBhaW5wdXRfc2VuZF9pbnB1dF9ldmVu dChBSW5wdXRDbGllbnRDb250ZXh0KiBjb250ZXh0LCBVSU5UNjQgZmxhZ3MsCisgCVN0cmVhbV9T ZWFsTGVuZ3RoKHMpOworIAorIAkvKiBhaW5wdXQgYmFjayB3aGF0IHdlIGhhdmUgcmVjZWl2ZWQu IEFJTlBVVCBkb2VzIG5vdCBoYXZlIGFueSBtZXNzYWdlIElEcy4gKi8KKysJRW50ZXJDcml0aWNh bFNlY3Rpb24oJmFpbnB1dC0+bG9jayk7CisrCUFJTlBVVF9DSEFOTkVMX0NBTExCQUNLKiBjYWxs YmFjayA9IGFpbnB1dC0+bGlzdGVuZXJfY2FsbGJhY2stPmNoYW5uZWxfY2FsbGJhY2s7CisrCVdJ TlBSX0FTU0VSVChjYWxsYmFjayk7CisgCVdJTlBSX0FTU0VSVChjYWxsYmFjay0+Y2hhbm5lbCk7 CisgCVdJTlBSX0FTU0VSVChjYWxsYmFjay0+Y2hhbm5lbC0+V3JpdGUpOworLQlyZXR1cm4gY2Fs bGJhY2stPmNoYW5uZWwtPldyaXRlKGNhbGxiYWNrLT5jaGFubmVsLCAoVUxPTkcpU3RyZWFtX0xl bmd0aChzKSwgU3RyZWFtX0J1ZmZlcihzKSwKKy0JICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBOVUxMKTsKKysJY29uc3QgVUlOVCByYyA9IGNhbGxiYWNrLT5jaGFubmVsLT5Xcml0ZShj YWxsYmFjay0+Y2hhbm5lbCwgKFVMT05HKVN0cmVhbV9MZW5ndGgocyksCisrCSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyZWFtX0J1ZmZlcihzKSwgTlVMTCk7Cisr CUxlYXZlQ3JpdGljYWxTZWN0aW9uKCZhaW5wdXQtPmxvY2spOworKwlyZXR1cm4gcmM7CisgfQor IAorIC8qKgorQEAgLTE2Nyw4ICsxNjksMTYgQEAgc3RhdGljIFVJTlQgYWlucHV0X29uX2Nsb3Nl KElXVFNWaXJ0dWFsQ2hhbm5lbENhbGxiYWNrKiBwQ2hhbm5lbENhbGxiYWNrKQorIHsKKyAJQUlO UFVUX0NIQU5ORUxfQ0FMTEJBQ0sqIGNhbGxiYWNrID0gKEFJTlBVVF9DSEFOTkVMX0NBTExCQUNL KilwQ2hhbm5lbENhbGxiYWNrOworIAorLQlmcmVlKGNhbGxiYWNrKTsKKysJaWYgKGNhbGxiYWNr KQorKwl7CisrCQlBSU5QVVRfUExVR0lOKiBhaW5wdXQgPSAoQUlOUFVUX1BMVUdJTiopY2FsbGJh Y2stPnBsdWdpbjsKKysJCVdJTlBSX0FTU0VSVChhaW5wdXQpOworIAorKwkJLyogTG9jayBoZXJl IHRvIGVuc3VyZSB0aGF0IG5vIGFpbnB1dF9zZW5kX2lucHV0X2V2ZW50IGlzIGluIHByb2dyZXNz LiAqLworKwkJRW50ZXJDcml0aWNhbFNlY3Rpb24oJmFpbnB1dC0+bG9jayk7CisrCQlmcmVlKGNh bGxiYWNrKTsKKysJCUxlYXZlQ3JpdGljYWxTZWN0aW9uKCZhaW5wdXQtPmxvY2spOworKwl9Cisg CXJldHVybiBDSEFOTkVMX1JDX09LOworIH0KKyAKK0BAIC0yNTUsNiArMjY1LDcgQEAgc3RhdGlj IFVJTlQgYWlucHV0X3BsdWdpbl9pbml0aWFsaXplKElXVFNQbHVnaW4qIHBQbHVnaW4sIElXVFNW aXJ0dWFsQ2hhbm5lbE1hbmEKKyBzdGF0aWMgVUlOVCBhaW5wdXRfcGx1Z2luX3Rlcm1pbmF0ZWQo SVdUU1BsdWdpbiogcFBsdWdpbikKKyB7CisgCUFJTlBVVF9QTFVHSU4qIGFpbnB1dCA9IChBSU5Q VVRfUExVR0lOKilwUGx1Z2luOworKworIAlpZiAoYWlucHV0ICYmIGFpbnB1dC0+bGlzdGVuZXJf Y2FsbGJhY2spCisgCXsKKyAJCUlXVFNWaXJ0dWFsQ2hhbm5lbE1hbmFnZXIqIG1nciA9IGFpbnB1 dC0+bGlzdGVuZXJfY2FsbGJhY2stPmNoYW5uZWxfbWdyOworQEAgLTI2Myw2ICsyNzQsNyBAQCBz dGF0aWMgVUlOVCBhaW5wdXRfcGx1Z2luX3Rlcm1pbmF0ZWQoSVdUU1BsdWdpbiogcFBsdWdpbikK KyAJfQorIAlpZiAoYWlucHV0KQorIAl7CisrCQlEZWxldGVDcml0aWNhbFNlY3Rpb24oJmFpbnB1 dC0+bG9jayk7CisgCQlmcmVlKGFpbnB1dC0+bGlzdGVuZXJfY2FsbGJhY2spOworIAkJZnJlZShh aW5wdXQtPmlmYWNlLnBJbnRlcmZhY2UpOworIAl9CitAQCAtMzA2LDggKzMxOCwxMiBAQCBVSU5U IERWQ1BsdWdpbkVudHJ5KElEUkRZTlZDX0VOVFJZX1BPSU5UUyogcEVudHJ5UG9pbnRzKQorIAor IAkJY29udGV4dC0+aGFuZGxlID0gKHZvaWQqKWFpbnB1dDsKKyAJCWNvbnRleHQtPkFJbnB1dFNl bmRJbnB1dEV2ZW50ID0gYWlucHV0X3NlbmRfaW5wdXRfZXZlbnQ7CistCQlhaW5wdXQtPmlmYWNl LnBJbnRlcmZhY2UgPSAodm9pZCopY29udGV4dDsKKyAKKysJCUluaXRpYWxpemVDcml0aWNhbFNl Y3Rpb24oJmFpbnB1dC0+bG9jayk7CisrCisrCQlFbnRlckNyaXRpY2FsU2VjdGlvbigmYWlucHV0 LT5sb2NrKTsKKysJCWFpbnB1dC0+aWZhY2UucEludGVyZmFjZSA9ICh2b2lkKiljb250ZXh0Owor KwkJTGVhdmVDcml0aWNhbFNlY3Rpb24oJmFpbnB1dC0+bG9jayk7CisgCQlzdGF0dXMgPSBwRW50 cnlQb2ludHMtPlJlZ2lzdGVyUGx1Z2luKHBFbnRyeVBvaW50cywgQUlOUFVUX0NIQU5ORUxfTkFN RSwgJmFpbnB1dC0+aWZhY2UpOworIAl9CisgCistLSAKKzIuNTMuMAorCgpkaWZmIC0tZ2l0IGEv Y2hhbm5lbHMtYXVkaW4tZnJlZS11cC1vbGQtYXVkaW8tZm9ybWF0cy5wYXRjaCBiL2NoYW5uZWxz LWF1ZGluLWZyZWUtdXAtb2xkLWF1ZGlvLWZvcm1hdHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uYjNjY2MwYgotLS0gL2Rldi9udWxsCisrKyBiL2NoYW5uZWxzLWF1 ZGluLWZyZWUtdXAtb2xkLWF1ZGlvLWZvcm1hdHMucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJv bSBjZDFmZmExMTJjZmJlMWI0MGE5ZmQ1N2UyOTlhOGVhMTJlMjNkZjBkIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQorRnJvbTogYWthbGxhYmV0aCA8YWthbGxhYmV0aEBwb3N0ZW8ubmV0PgorRGF0 ZTogU2F0LCAxMCBKYW4gMjAyNiAwODozNjozOCArMDEwMAorU3ViamVjdDogW1BBVENIXSBbY2hh bm5lbHMsYXVkaW5dIGZyZWUgdXAgb2xkIGF1ZGlvIGZvcm1hdHMKKworLS0tCisgY2hhbm5lbHMv YXVkaW4vY2xpZW50L2F1ZGluX21haW4uYyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGlu c2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2NoYW5uZWxzL2F1ZGluL2NsaWVudC9hdWRpbl9t YWluLmMgYi9jaGFubmVscy9hdWRpbi9jbGllbnQvYXVkaW5fbWFpbi5jCitpbmRleCBiY2FmMWE2 NDYuLmI0YzhiYTU4MCAxMDA2NDQKKy0tLSBhL2NoYW5uZWxzL2F1ZGluL2NsaWVudC9hdWRpbl9t YWluLmMKKysrKyBiL2NoYW5uZWxzL2F1ZGluL2NsaWVudC9hdWRpbl9tYWluLmMKK0BAIC0yMDYs NiArMjA2LDEwIEBAIHN0YXRpYyBVSU5UIGF1ZGluX3Byb2Nlc3NfZm9ybWF0cyhBVURJTl9QTFVH SU4qIGF1ZGluLCBBVURJTl9DSEFOTkVMX0NBTExCQUNLKiBjCisgCX0KKyAKKyAJU3RyZWFtX1Nl ZWtfVUlOVDMyKHMpOyAvKiBjYlNpemVGb3JtYXRzUGFja2V0ICovCisrCisrCWF1ZGlvX2Zvcm1h dHNfZnJlZShjYWxsYmFjay0+Zm9ybWF0cywgY2FsbGJhY2stPmZvcm1hdHNfY291bnQpOworKwlj YWxsYmFjay0+Zm9ybWF0c19jb3VudCA9IDA7CisrCisgCWNhbGxiYWNrLT5mb3JtYXRzID0gYXVk aW9fZm9ybWF0c19uZXcoTnVtRm9ybWF0cyk7CisgCisgCWlmICghY2FsbGJhY2stPmZvcm1hdHMp CistLSAKKzIuNTMuMAorCgpkaWZmIC0tZ2l0IGEvY2hhbm5lbHMtYXVkaW4tbGltaXQtRnJhbWVz UGVyUGFja2V0LnBhdGNoIGIvY2hhbm5lbHMtYXVkaW4tbGltaXQtRnJhbWVzUGVyUGFja2V0LnBh dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxMTk1OWYKLS0tIC9kZXYv bnVsbAorKysgYi9jaGFubmVscy1hdWRpbi1saW1pdC1GcmFtZXNQZXJQYWNrZXQucGF0Y2gKQEAg LTAsMCArMSwzNyBAQAorRnJvbSA5N2U5ZDkwNTI4NjkwZjY5NzMzOThjOWQ3ZTRmOGRhNTIxNDVm NjY5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQXJtaW4gTm92YWsgPGFybWluLm5v dmFrQHRoaW5jYXN0LmNvbT4KK0RhdGU6IFN1biwgMTIgSnVsIDIwMjYgMTc6Mzc6NDggKzAyMDAK K1N1YmplY3Q6IFtQQVRDSF0gW2NoYW5uZWxzLGF1ZGluXSBsaW1pdCBGcmFtZXNQZXJQYWNrZXQK KworLS0tCisgY2hhbm5lbHMvYXVkaW4vY2xpZW50L2F1ZGluX21haW4uYyB8IDEwICsrKysrKysr Ky0KKyAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2Rp ZmYgLS1naXQgYS9jaGFubmVscy9hdWRpbi9jbGllbnQvYXVkaW5fbWFpbi5jIGIvY2hhbm5lbHMv YXVkaW4vY2xpZW50L2F1ZGluX21haW4uYworaW5kZXggMzMyYWVmOWRhLi4xODZlMzU2Y2QgMTAw NjQ0CistLS0gYS9jaGFubmVscy9hdWRpbi9jbGllbnQvYXVkaW5fbWFpbi5jCisrKysgYi9jaGFu bmVscy9hdWRpbi9jbGllbnQvYXVkaW5fbWFpbi5jCitAQCAtNDg4LDcgKzQ4OCw2IEBAIHN0YXRp YyBVSU5UIGF1ZGluX3Byb2Nlc3Nfb3BlbihBVURJTl9QTFVHSU4qIGF1ZGluLCBBVURJTl9DSEFO TkVMX0NBTExCQUNLKiBjYWwKKyAJU3RyZWFtX1JlYWRfVUlOVDMyKHMsIGluaXRpYWxGb3JtYXQp OworIAlXTG9nX1ByaW50KGF1ZGluLT5sb2csIFdMT0dfREVCVUcsICJGcmFtZXNQZXJQYWNrZXQ9 JSIgUFJJdTMyICIgaW5pdGlhbEZvcm1hdD0lIiBQUkl1MzIgIiIsCisgCSAgICAgICAgICAgRnJh bWVzUGVyUGFja2V0LCBpbml0aWFsRm9ybWF0KTsKKy0JYXVkaW4tPkZyYW1lc1BlclBhY2tldCA9 IEZyYW1lc1BlclBhY2tldDsKKworIAlpZiAoaW5pdGlhbEZvcm1hdCA+PSBjYWxsYmFjay0+Zm9y bWF0c19jb3VudCkKKyAJeworQEAgLTQ5Niw2ICs0OTYsMTUgQEAgc3RhdGljIFVJTlQgYXVkaW5f cHJvY2Vzc19vcGVuKEFVRElOX1BMVUdJTiogYXVkaW4sIEFVRElOX0NIQU5ORUxfQ0FMTEJBQ0sq IGNhbAorIAkJcmV0dXJuIEVSUk9SX0lOVkFMSURfREFUQTsKKyAJfQorCisrCS8qIFRoZSBSRFAg cHJvdG9jb2wgZmllbGQgYWxsb3dzIFVJTlQzMl9NQVgsIGJ1dCBtb3N0IGJhY2tlbmQgQVBJIHVz ZSBJTlQzMiBhcyBpbnB1dCBwYXJhbWV0ZXIKKysJICogb3IgZG8gc29tZSBtYXRoIHdpdGggaXQs IHNvIGVuc3VyZSB0aGF0IHRoZSB2YWx1ZSBkb2VzIG5vdCBleGNlZWQgcmVhc29uYWJsZSBsaW1p dHMgKi8KKysJaWYgKEZyYW1lc1BlclBhY2tldCA+PSBJTlQzMl9NQVgpCisrCXsKKysJCVdMb2df UHJpbnQoYXVkaW4tPmxvZywgV0xPR19FUlJPUiwgImludmFsaWQgZnJhbWVzIHBlciBwYWNrZXQg JSIgUFJJdTMyLCBGcmFtZXNQZXJQYWNrZXQpOworKwkJcmV0dXJuIEVSUk9SX0lOVkFMSURfREFU QTsKKysJfQorKworKwlhdWRpbi0+RnJhbWVzUGVyUGFja2V0ID0gRnJhbWVzUGVyUGFja2V0Owor IAlhdWRpbi0+Zm9ybWF0ID0gJmNhbGxiYWNrLT5mb3JtYXRzW2luaXRpYWxGb3JtYXRdOworCisg CWlmICghYXVkaW5fb3Blbl9kZXZpY2UoYXVkaW4sIGNhbGxiYWNrKSkKCmRpZmYgLS1naXQgYS9j aGFubmVscy1hdWRpbi1yZXNldC1hdWRpbi1mb3JtYXQucGF0Y2ggYi9jaGFubmVscy1hdWRpbi1y ZXNldC1hdWRpbi1mb3JtYXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uYTA0Y2VlNAotLS0gL2Rldi9udWxsCisrKyBiL2NoYW5uZWxzLWF1ZGluLXJlc2V0LWF1ZGlu LWZvcm1hdC5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIGZhMzNlZGY1M2EyMDg3YzEwNmIy ODAxNzQ1YmRmZjBmNGE1ODk0MjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBha2Fs bGFiZXRoIDxha2FsbGFiZXRoQHBvc3Rlby5uZXQ+CitEYXRlOiBNb24sIDI2IEphbiAyMDI2IDEw OjIwOjIzICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFtjaGFubmVscyxhdWRpbl0gcmVzZXQgYXVk aW4tPmZvcm1hdAorCitXaGVuZXZlciB0aGUgdW5kZXJseWluZyBzdHJ1Y3R1cmUgY2hhbmdlcyBy ZXNldCB0aGUgcG9pbnRlciB0byBOVUxMCistLS0KKyBjaGFubmVscy9hdWRpbi9jbGllbnQvYXVk aW5fbWFpbi5jIHwgMiArKworIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworZGlm ZiAtLWdpdCBhL2NoYW5uZWxzL2F1ZGluL2NsaWVudC9hdWRpbl9tYWluLmMgYi9jaGFubmVscy9h dWRpbi9jbGllbnQvYXVkaW5fbWFpbi5jCitpbmRleCA1ZmZlMDkxMjcuLjMzMmFlZjlkYSAxMDA2 NDQKKy0tLSBhL2NoYW5uZWxzL2F1ZGluL2NsaWVudC9hdWRpbl9tYWluLmMKKysrKyBiL2NoYW5u ZWxzL2F1ZGluL2NsaWVudC9hdWRpbl9tYWluLmMKK0BAIC0yMjAsNiArMjIwLDcgQEAgc3RhdGlj IFVJTlQgYXVkaW5fcHJvY2Vzc19mb3JtYXRzKEFVRElOX1BMVUdJTiogYXVkaW4sIEFVRElOX0NI QU5ORUxfQ0FMTEJBQ0sqIGMKKyAKKyAJU3RyZWFtX1NlZWtfVUlOVDMyKHMpOyAvKiBjYlNpemVG b3JtYXRzUGFja2V0ICovCisgCisrCWF1ZGluLT5mb3JtYXQgPSBOVUxMOworIAlhdWRpb19mb3Jt YXRzX2ZyZWUoY2FsbGJhY2stPmZvcm1hdHMsIGNhbGxiYWNrLT5mb3JtYXRzX2NvdW50KTsKKyAJ Y2FsbGJhY2stPmZvcm1hdHNfY291bnQgPSAwOworIAorQEAgLTI5Nyw2ICsyOTgsNyBAQCBvdXQ6 CisgCisgCWlmIChlcnJvciAhPSBDSEFOTkVMX1JDX09LKQorIAl7CisrCQlhdWRpbi0+Zm9ybWF0 ID0gTlVMTDsKKyAJCWF1ZGlvX2Zvcm1hdHNfZnJlZShjYWxsYmFjay0+Zm9ybWF0cywgTnVtRm9y bWF0cyk7CisgCQljYWxsYmFjay0+Zm9ybWF0cyA9IE5VTEw7CisgCX0KKy0tIAorMi41My4wCisK CmRpZmYgLS1naXQgYS9jaGFubmVscy1kcmR5bnZjLXJlc2V0LWNoYW5uZWxfY2FsbGJhY2stYmVm b3JlLWNsb3NlLnBhdGNoIGIvY2hhbm5lbHMtZHJkeW52Yy1yZXNldC1jaGFubmVsX2NhbGxiYWNr LWJlZm9yZS1jbG9zZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42 YzM2ZGRkCi0tLSAvZGV2L251bGwKKysrIGIvY2hhbm5lbHMtZHJkeW52Yy1yZXNldC1jaGFubmVs X2NhbGxiYWNrLWJlZm9yZS1jbG9zZS5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIDc4NjVh MjgzMmViZGZkMDQzNzRjNzg3YzkxN2IzZWE3ZjA3OGJhMmMgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCitGcm9tOiBPbmRyZWogSG9seSA8b2hvbHlAcmVkaGF0LmNvbT4KK0RhdGU6IFdlZCwgMTEg TWFyIDIwMjYgMTY6NTU6NDQgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gW2NoYW5uZWxzLGRyZHlu dmNdIHJlc2V0IGNoYW5uZWxfY2FsbGJhY2sgYmVmb3JlIGNsb3NlCisKK0JhY2twb3J0IG9mIGNv bW1pdCBlMDJlMDUyZjY2OTI1NTBlNTM5ZDEwZjk5ZGU5YzM1YTIzNDkyZGIyLgorCitNYWRlLXdp dGg6IEN1cnNvcgorLS0tCisgY2hhbm5lbHMvZHJkeW52Yy9jbGllbnQvZHJkeW52Y19tYWluLmMg fCA3ICsrKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9u cygtKQorCitkaWZmIC0tZ2l0IGEvY2hhbm5lbHMvZHJkeW52Yy9jbGllbnQvZHJkeW52Y19tYWlu LmMgYi9jaGFubmVscy9kcmR5bnZjL2NsaWVudC9kcmR5bnZjX21haW4uYworaW5kZXggYjIwMDVh OTAzLi4wYTRhZjcxNzkgMTAwNjQ0CistLS0gYS9jaGFubmVscy9kcmR5bnZjL2NsaWVudC9kcmR5 bnZjX21haW4uYworKysrIGIvY2hhbm5lbHMvZHJkeW52Yy9jbGllbnQvZHJkeW52Y19tYWluLmMK K0BAIC0zNDYsMTAgKzM0NiwxMSBAQCBzdGF0aWMgdm9pZCBkdmNtYW5fY2hhbm5lbF9mcmVlKHZv aWQqIGFyZykKKyAKKyAJaWYgKGNoYW5uZWwpCisgCXsKKy0JCWlmIChjaGFubmVsLT5jaGFubmVs X2NhbGxiYWNrKQorKwkJSVdUU1ZpcnR1YWxDaGFubmVsQ2FsbGJhY2sqIGNiID0gY2hhbm5lbC0+ Y2hhbm5lbF9jYWxsYmFjazsKKysJCWNoYW5uZWwtPmNoYW5uZWxfY2FsbGJhY2sgPSBOVUxMOwor KwkJaWYgKGNiKQorIAkJeworLQkJCUlGQ0FMTChjaGFubmVsLT5jaGFubmVsX2NhbGxiYWNrLT5P bkNsb3NlLCBjaGFubmVsLT5jaGFubmVsX2NhbGxiYWNrKTsKKy0JCQljaGFubmVsLT5jaGFubmVs X2NhbGxiYWNrID0gTlVMTDsKKysJCQlJRkNBTEwoY2ItPk9uQ2xvc2UsIGNiKTsKKyAJCX0KKyAK KyAJCWlmIChjaGFubmVsLT5zdGF0dXMgPT0gQ0hBTk5FTF9SQ19PSykKKy0tIAorMi41My4wCisK CmRpZmYgLS1naXQgYS9jaGFubmVscy1kcml2ZS1maXgtY29uc3RhbnQtdHlwZS5wYXRjaCBiL2No YW5uZWxzLWRyaXZlLWZpeC1jb25zdGFudC10eXBlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjliZjBjOGEKLS0tIC9kZXYvbnVsbAorKysgYi9jaGFubmVscy1kcml2 ZS1maXgtY29uc3RhbnQtdHlwZS5wYXRjaApAQCAtMCwwICsxLDI2IEBACitGcm9tIDNkYTMxOTU3 MGM4YTZiZTBhNzliMzMwNmYxZWQzNTRjNGE5NDMyNTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CitGcm9tOiBha2FsbGFiZXRoIDxha2FsbGFiZXRoQHBvc3Rlby5uZXQ+CitEYXRlOiBNb24sIDEy IEphbiAyMDI2IDAzOjQ0OjA2ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFtjaGFubmVscyxkcml2 ZV0gZml4IGNvbnN0YW50IHR5cGUKKworZW5zdXJlIGNvbnN0YW50IGlzIG9mIDY0Yml0IGludGVn ZXIgdHlwZQorLS0tCisgY2hhbm5lbHMvZHJpdmUvY2xpZW50L2RyaXZlX21haW4uYyB8IDIgKy0K KyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAt LWdpdCBhL2NoYW5uZWxzL2RyaXZlL2NsaWVudC9kcml2ZV9tYWluLmMgYi9jaGFubmVscy9kcml2 ZS9jbGllbnQvZHJpdmVfbWFpbi5jCitpbmRleCAxZGNlNWMzNDguLjEzMTg4ZmJjNiAxMDA2NDQK Ky0tLSBhL2NoYW5uZWxzL2RyaXZlL2NsaWVudC9kcml2ZV9tYWluLmMKKysrKyBiL2NoYW5uZWxz L2RyaXZlL2NsaWVudC9kcml2ZV9tYWluLmMKK0BAIC0zMDIsNyArMzAyLDcgQEAgc3RhdGljIFVJ TlQgZHJpdmVfcHJvY2Vzc19pcnBfcmVhZChEUklWRV9ERVZJQ0UqIGRyaXZlLCBJUlAqIGlycCkK KyAJCUxlbmd0aCA9IDA7CisgCX0KKyAKKy0JaWYgKCFTdHJlYW1fRW5zdXJlUmVtYWluaW5nQ2Fw YWNpdHkoaXJwLT5vdXRwdXQsIExlbmd0aCArIDQpKQorKwlpZiAoIVN0cmVhbV9FbnN1cmVSZW1h aW5pbmdDYXBhY2l0eShpcnAtPm91dHB1dCwgNHVsbCArIExlbmd0aCkpCisgCXsKKyAJCVdMb2df RVJSKFRBRywgIlN0cmVhbV9FbnN1cmVSZW1haW5pbmdDYXBhY2l0eSBmYWlsZWQhIik7CisgCQly ZXR1cm4gRVJST1JfSU5URVJOQUxfRVJST1I7CistLSAKKzIuNTMuMAorCgpkaWZmIC0tZ2l0IGEv Y2hhbm5lbHMtcmRwc25kLXRlcm1pbmF0ZS10aHJlYWQtYmVmb3JlLWZyZWUucGF0Y2ggYi9jaGFu bmVscy1yZHBzbmQtdGVybWluYXRlLXRocmVhZC1iZWZvcmUtZnJlZS5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmIzZjI3Ci0tLSAvZGV2L251bGwKKysrIGIvY2hh bm5lbHMtcmRwc25kLXRlcm1pbmF0ZS10aHJlYWQtYmVmb3JlLWZyZWUucGF0Y2gKQEAgLTAsMCAr MSw3MyBAQAorRnJvbSBjOWYyYjQyMjJjZjUxYTI1OWI3N2VkNGU4M2M0NWY2YTA4ODg0Y2I4IE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT25kcmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5j b20+CitEYXRlOiBGcmksIDEzIE1hciAyMDI2IDE1OjQ2OjE3ICswMTAwCitTdWJqZWN0OiBbUEFU Q0hdIFtjaGFubmVscyxyZHBzbmRdIHRlcm1pbmF0ZSB0aHJlYWQgYmVmb3JlIGZyZWUKKworQmFj a3BvcnQgb2YgY29tbWl0IDYyMmJiN2I0NDAyNDkxY2EwMDNmNDc0NzJkMGU0NzgxMzI2NzM2OTYu CisKK01hZGUtd2l0aDogQ3Vyc29yCistLS0KKyBjaGFubmVscy9yZHBzbmQvY2xpZW50L3JkcHNu ZF9tYWluLmMgfCAyOCArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCisgMSBmaWxlIGNoYW5n ZWQsIDIwIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jaGFu bmVscy9yZHBzbmQvY2xpZW50L3JkcHNuZF9tYWluLmMgYi9jaGFubmVscy9yZHBzbmQvY2xpZW50 L3JkcHNuZF9tYWluLmMKK2luZGV4IDNkZTRjYmM2Ni4uYzc2NjBhODU3IDEwMDY0NAorLS0tIGEv Y2hhbm5lbHMvcmRwc25kL2NsaWVudC9yZHBzbmRfbWFpbi5jCisrKysgYi9jaGFubmVscy9yZHBz bmQvY2xpZW50L3JkcHNuZF9tYWluLmMKK0BAIC0zNiw2ICszNiw3IEBACisgI2luY2x1ZGUgPHN0 cmluZy5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorIAorKyNpbmNsdWRlIDx3aW5wci9hc3NlcnQu aD4KKyAjaW5jbHVkZSA8d2lucHIvY3J0Lmg+CisgI2luY2x1ZGUgPHdpbnByL3dsb2cuaD4KKyAj aW5jbHVkZSA8d2lucHIvc3RyZWFtLmg+CitAQCAtMTI0NCwxMSArMTI0NSwyOSBAQCBmYWlsOgor IAlyZXR1cm4gQ0hBTk5FTF9SQ19OT19NRU1PUlk7CisgfQorIAorK3N0YXRpYyB2b2lkIHJkcHNu ZF90ZXJtaW5hdGVfdGhyZWFkKHJkcHNuZFBsdWdpbiogcmRwc25kKQorK3sKKysJV0lOUFJfQVNT RVJUKHJkcHNuZCk7CisrCWlmIChyZHBzbmQtPnF1ZXVlKQorKwkJTWVzc2FnZVF1ZXVlX1Bvc3RR dWl0KHJkcHNuZC0+cXVldWUsIDApOworKworKwlpZiAocmRwc25kLT50aHJlYWQpCisrCXsKKysJ CSh2b2lkKVdhaXRGb3JTaW5nbGVPYmplY3QocmRwc25kLT50aHJlYWQsIElORklOSVRFKTsKKysJ CSh2b2lkKUNsb3NlSGFuZGxlKHJkcHNuZC0+dGhyZWFkKTsKKysJfQorKworKwlNZXNzYWdlUXVl dWVfRnJlZShyZHBzbmQtPnF1ZXVlKTsKKysJcmRwc25kLT50aHJlYWQgPSBOVUxMOworKwlyZHBz bmQtPnF1ZXVlID0gTlVMTDsKKyt9CisrCisgc3RhdGljIHZvaWQgY2xlYW51cF9pbnRlcm5hbHMo cmRwc25kUGx1Z2luKiByZHBzbmQpCisgeworIAlpZiAoIXJkcHNuZCkKKyAJCXJldHVybjsKKyAK KysJcmRwc25kX3Rlcm1pbmF0ZV90aHJlYWQocmRwc25kKTsKKyAJaWYgKHJkcHNuZC0+cG9vbCkK KyAJCVN0cmVhbVBvb2xfUmV0dXJuKHJkcHNuZC0+cG9vbCwgcmRwc25kLT5kYXRhX2luKTsKKyAK K0BAIC0xMzk2LDE0ICsxNDE1LDcgQEAgdm9pZCByZHBzbmRfdmlydHVhbF9jaGFubmVsX2V2ZW50 X3Rlcm1pbmF0ZWQocmRwc25kUGx1Z2luKiByZHBzbmQpCisgeworIAlpZiAocmRwc25kKQorIAl7 CistCQlpZiAocmRwc25kLT5xdWV1ZSkKKy0JCQlNZXNzYWdlUXVldWVfUG9zdFF1aXQocmRwc25k LT5xdWV1ZSwgMCk7CistCQlpZiAocmRwc25kLT50aHJlYWQpCistCQl7CistCQkJV2FpdEZvclNp bmdsZU9iamVjdChyZHBzbmQtPnRocmVhZCwgSU5GSU5JVEUpOworLQkJCUNsb3NlSGFuZGxlKHJk cHNuZC0+dGhyZWFkKTsKKy0JCX0KKy0JCU1lc3NhZ2VRdWV1ZV9GcmVlKHJkcHNuZC0+cXVldWUp OworKwkJcmRwc25kX3Rlcm1pbmF0ZV90aHJlYWQocmRwc25kKTsKKyAKKyAJCWZyZWVfaW50ZXJu YWxzKHJkcHNuZCk7CisgCQlhdWRpb19mb3JtYXRzX2ZyZWUocmRwc25kLT5maXhlZF9mb3JtYXQs IDEpOworLS0gCisyLjUzLjAKKwoKZGlmZiAtLWdpdCBhL2NoYW5uZWxzLXNlcmlhbC1leHBsaWNp dGx5LWxvY2stc2VyaWFsLUlycFRocmVhZHMucGF0Y2ggYi9jaGFubmVscy1zZXJpYWwtZXhwbGlj aXRseS1sb2NrLXNlcmlhbC1JcnBUaHJlYWRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjJlNDExY2YKLS0tIC9kZXYvbnVsbAorKysgYi9jaGFubmVscy1zZXJpYWwt ZXhwbGljaXRseS1sb2NrLXNlcmlhbC1JcnBUaHJlYWRzLnBhdGNoCkBAIC0wLDAgKzEsNTUgQEAK K0Zyb20gYzAyODM4MTJjOTE4Yzc3MzhmYWNhZmFjNTJjZjUxZDkxNjUzNjEzOCBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9uZHJlaiBIb2x5IDxvaG9seUByZWRoYXQuY29tPgorRGF0 ZTogVHVlLCAxMCBNYXIgMjAyNiAwODo0Nzo1NyArMDEwMAorU3ViamVjdDogW1BBVENIXSBbY2hh bm5lbHMsc2VyaWFsXSBleHBsaWNpdGx5IGxvY2sgc2VyaWFsLT5JcnBUaHJlYWRzCisKK0JhY2tw b3J0IG9mIGNvbW1pdCA2NzVjMjBmMDhmMzJjYTVlYzA2Mjk3MTA4YmRmMzAxNDdkNmUyY2Q5Lgor CitNYWRlLXdpdGg6IEN1cnNvcgorLS0tCisgY2hhbm5lbHMvc2VyaWFsL2NsaWVudC9zZXJpYWxf bWFpbi5jIHwgNyArKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMSBk ZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY2hhbm5lbHMvc2VyaWFsL2NsaWVudC9zZXJpYWxf bWFpbi5jIGIvY2hhbm5lbHMvc2VyaWFsL2NsaWVudC9zZXJpYWxfbWFpbi5jCitpbmRleCBkNzZk NzI1ZjEuLmM4YTI3YzQ2YyAxMDA2NDQKKy0tLSBhL2NoYW5uZWxzL3NlcmlhbC9jbGllbnQvc2Vy aWFsX21haW4uYworKysrIGIvY2hhbm5lbHMvc2VyaWFsL2NsaWVudC9zZXJpYWxfbWFpbi5jCitA QCAtNTk3LDcgKzU5NywxMCBAQCBzdGF0aWMgdm9pZCBjcmVhdGVfaXJwX3RocmVhZChTRVJJQUxf REVWSUNFKiBzZXJpYWwsIElSUCogaXJwKQorIAkgKiBvYnNlcnZlZCB3aXRoIEZyZWVSRFApLgor IAkgKi8KKyAJa2V5ID0gaXJwLT5Db21wbGV0aW9uSWQ7CisrCisrCUxpc3REaWN0aW9uYXJ5X0xv Y2soc2VyaWFsLT5JcnBUaHJlYWRzKTsKKyAJcHJldmlvdXNJcnBUaHJlYWQgPSBMaXN0RGljdGlv bmFyeV9HZXRJdGVtVmFsdWUoc2VyaWFsLT5JcnBUaHJlYWRzLCAodm9pZCopa2V5KTsKKysJTGlz dERpY3Rpb25hcnlfVW5sb2NrKHNlcmlhbC0+SXJwVGhyZWFkcyk7CisgCisgCWlmIChwcmV2aW91 c0lycFRocmVhZCkKKyAJeworQEAgLTY3OCw2ICs2ODEsNyBAQCBzdGF0aWMgdm9pZCB0ZXJtaW5h dGVfcGVuZGluZ19pcnBfdGhyZWFkcyhTRVJJQUxfREVWSUNFKiBzZXJpYWwpCisgeworIAlVTE9O R19QVFIqIGlkczsKKyAJaW50IGksIG5iSWRzOworKwlMaXN0RGljdGlvbmFyeV9Mb2NrKHNlcmlh bC0+SXJwVGhyZWFkcyk7CisgCW5iSWRzID0gTGlzdERpY3Rpb25hcnlfR2V0S2V5cyhzZXJpYWwt PklycFRocmVhZHMsICZpZHMpOworIAlXTG9nX1ByaW50KHNlcmlhbC0+bG9nLCBXTE9HX0RFQlVH LCAiVGVybWluYXRpbmcgJWQgSVJQIHRocmVhZChzKSIsIG5iSWRzKTsKKyAKK0BAIC02OTksNiAr NzAzLDcgQEAgc3RhdGljIHZvaWQgdGVybWluYXRlX3BlbmRpbmdfaXJwX3RocmVhZHMoU0VSSUFM X0RFVklDRSogc2VyaWFsKQorIAl9CisgCisgCUxpc3REaWN0aW9uYXJ5X0NsZWFyKHNlcmlhbC0+ SXJwVGhyZWFkcyk7CisrCUxpc3REaWN0aW9uYXJ5X1VubG9jayhzZXJpYWwtPklycFRocmVhZHMp OworIAlmcmVlKGlkcyk7CisgfQorIAorQEAgLTkzMiw3ICs5MzcsNyBAQCBVSU5UIERldmljZVNl cnZpY2VFbnRyeShQREVWSUNFX1NFUlZJQ0VfRU5UUllfUE9JTlRTIHBFbnRyeVBvaW50cykKKyAJ CX0KKyAKKyAJCS8qIElycFRocmVhZHMgY29udGVudCBvbmx5IG1vZGlmaWVkIGJ5IGNyZWF0ZV9p cnBfdGhyZWFkKCkgKi8KKy0JCXNlcmlhbC0+SXJwVGhyZWFkcyA9IExpc3REaWN0aW9uYXJ5X05l dyhUUlVFKTsKKysJCXNlcmlhbC0+SXJwVGhyZWFkcyA9IExpc3REaWN0aW9uYXJ5X05ldyhGQUxT RSk7CisgCisgCQlpZiAoIXNlcmlhbC0+SXJwVGhyZWFkcykKKyAJCXsKKy0tIAorMi41My4wCisK CmRpZmYgLS1naXQgYS9jaGFubmVscy1zZXJpYWwtbG9jay1saXN0LWRpY3Rpb25hcnkucGF0Y2gg Yi9jaGFubmVscy1zZXJpYWwtbG9jay1saXN0LWRpY3Rpb25hcnkucGF0Y2gKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFiYzMzMQotLS0gL2Rldi9udWxsCisrKyBiL2NoYW5u ZWxzLXNlcmlhbC1sb2NrLWxpc3QtZGljdGlvbmFyeS5wYXRjaApAQCAtMCwwICsxLDg5IEBACitG cm9tIDdjZjc0MjE1OWJkMjY3NTM2NmM3MTg3YzRiYzUxMDE4YjU0OGQyMjggTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCitGcm9tOiBPbmRyZWogSG9seSA8b2hvbHlAcmVkaGF0LmNvbT4KK0RhdGU6 IFR1ZSwgMTAgTWFyIDIwMjYgMDg6NDc6NDUgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gW2NoYW5u ZWxzLHNlcmlhbF0gbG9jayBsaXN0IGRpY3Rpb25hcnkKKworQmFja3BvcnQgb2YgY29tbWl0IGIz NWFhMzYxNGQzMmJmZjNmYzEyNzJjZDdjNDYxN2Y3MTFmY2ExYTQuCisKK01hZGUtd2l0aDogQ3Vy c29yCistLS0KKyBjaGFubmVscy9zZXJpYWwvY2xpZW50L3NlcmlhbF9tYWluLmMgfCAzNSArKysr KysrKysrKysrKysrLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDIwIGluc2VydGlvbnMo KyksIDE1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY2hhbm5lbHMvc2VyaWFsL2NsaWVu dC9zZXJpYWxfbWFpbi5jIGIvY2hhbm5lbHMvc2VyaWFsL2NsaWVudC9zZXJpYWxfbWFpbi5jCitp bmRleCBhZmU2N2I0ZDMuLmQ3NmQ3MjVmMSAxMDA2NDQKKy0tLSBhL2NoYW5uZWxzL3NlcmlhbC9j bGllbnQvc2VyaWFsX21haW4uYworKysrIGIvY2hhbm5lbHMvc2VyaWFsL2NsaWVudC9zZXJpYWxf bWFpbi5jCitAQCAtNTQwLDYgKzU0MCw3IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZV9pcnBfdGhyZWFk KFNFUklBTF9ERVZJQ0UqIHNlcmlhbCwgSVJQKiBpcnApCisgCQlIQU5ETEUgaXJwVGhyZWFkOwor IAkJVUxPTkdfUFRSKiBpZHM7CisgCQlpbnQgaSwgbmJJZHM7CisrCQlMaXN0RGljdGlvbmFyeV9M b2NrKHNlcmlhbC0+SXJwVGhyZWFkcyk7CisgCQluYklkcyA9IExpc3REaWN0aW9uYXJ5X0dldEtl eXMoc2VyaWFsLT5JcnBUaHJlYWRzLCAmaWRzKTsKKyAKKyAJCWZvciAoaSA9IDA7IGkgPCBuYklk czsgaSsrKQorQEAgLTU4MSw2ICs1ODIsNyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVfaXJwX3RocmVh ZChTRVJJQUxfREVWSUNFKiBzZXJpYWwsIElSUCogaXJwKQorIAkJfQorIAorIAkJZnJlZShpZHMp OworKwkJTGlzdERpY3Rpb25hcnlfVW5sb2NrKHNlcmlhbC0+SXJwVGhyZWFkcyk7CisgCX0KKyAK KyAJTGVhdmVDcml0aWNhbFNlY3Rpb24oJnNlcmlhbC0+VGVybWluYXRpbmdJcnBUaHJlYWRzTG9j ayk7CitAQCAtNjIxLDE5ICs2MjMsNiBAQCBzdGF0aWMgdm9pZCBjcmVhdGVfaXJwX3RocmVhZChT RVJJQUxfREVWSUNFKiBzZXJpYWwsIElSUCogaXJwKQorIAkJcmV0dXJuOworIAl9CisgCistCWlm IChMaXN0RGljdGlvbmFyeV9Db3VudChzZXJpYWwtPklycFRocmVhZHMpID49IE1BWF9JUlBfVEhS RUFEUykKKy0JeworLQkJV0xvZ19QcmludChzZXJpYWwtPmxvZywgV0xPR19XQVJOLAorLQkJICAg ICAgICAgICAiTnVtYmVyIG9mIElSUCB0aHJlYWRzIHRocmVzaG9sZCByZWFjaGVkOiAlZCwga2Vl cCBvbiBhbnl3YXkiLAorLQkJICAgICAgICAgICBMaXN0RGljdGlvbmFyeV9Db3VudChzZXJpYWwt PklycFRocmVhZHMpKTsKKy0JCWFzc2VydChGQUxTRSk7IC8qIHVuaW1wbGVtZW50ZWQgKi8KKy0J CSAgICAgICAgICAgICAgIC8qIFRPRE86IE1BWF9JUlBfVEhSRUFEUyBoYXMgYmVlbiB0aG91Z2h0 IHRvIGF2b2lkIGEKKy0JCSAgICAgICAgICAgICAgICAqIGZsb29kaW5nIG9mIHBlbmRpbmcgcmVx dWVzdHMuIFVzZQorLQkJICAgICAgICAgICAgICAgICogV2FpdEZvck11bHRpcGxlT2JqZWN0cygp IHdoZW4gYXZhaWxhYmxlIGluIHdpbnByCistCQkgICAgICAgICAgICAgICAgKiBmb3IgdGhyZWFk cy4KKy0JCSAgICAgICAgICAgICAgICAqLworLQl9CistCisgCS8qIGVycm9yX2hhbmRsZSB0byBi ZSB1c2VkIC4uLiAqLworIAlkYXRhID0gKElSUF9USFJFQURfREFUQSopY2FsbG9jKDEsIHNpemVv ZihJUlBfVEhSRUFEX0RBVEEpKTsKKyAKK0BAIC02NTYsNyArNjQ1LDIzIEBAIHN0YXRpYyB2b2lk IGNyZWF0ZV9pcnBfdGhyZWFkKFNFUklBTF9ERVZJQ0UqIHNlcmlhbCwgSVJQKiBpcnApCisgCisg CWtleSA9IGlycC0+Q29tcGxldGlvbklkOworIAorLQlpZiAoIUxpc3REaWN0aW9uYXJ5X0FkZChz ZXJpYWwtPklycFRocmVhZHMsICh2b2lkKilrZXksIGlycFRocmVhZCkpCisrCUxpc3REaWN0aW9u YXJ5X0xvY2soc2VyaWFsLT5JcnBUaHJlYWRzKTsKKysJaWYgKExpc3REaWN0aW9uYXJ5X0NvdW50 KHNlcmlhbC0+SXJwVGhyZWFkcykgPj0gTUFYX0lSUF9USFJFQURTKQorKwl7CisrCQlXTG9nX1By aW50KHNlcmlhbC0+bG9nLCBXTE9HX1dBUk4sCisrCQkgICAgICAgICAgICJOdW1iZXIgb2YgSVJQ IHRocmVhZHMgdGhyZXNob2xkIHJlYWNoZWQ6ICVkLCBrZWVwIG9uIGFueXdheSIsCisrCQkgICAg ICAgICAgIExpc3REaWN0aW9uYXJ5X0NvdW50KHNlcmlhbC0+SXJwVGhyZWFkcykpOworKwkJYXNz ZXJ0KEZBTFNFKTsgLyogdW5pbXBsZW1lbnRlZCAqLworKwkJICAgICAgICAgICAgICAgLyogVE9E TzogTUFYX0lSUF9USFJFQURTIGhhcyBiZWVuIHRob3VnaHQgdG8gYXZvaWQgYQorKwkJICAgICAg ICAgICAgICAgICogZmxvb2Rpbmcgb2YgcGVuZGluZyByZXF1ZXN0cy4gVXNlCisrCQkgICAgICAg ICAgICAgICAgKiBXYWl0Rm9yTXVsdGlwbGVPYmplY3RzKCkgd2hlbiBhdmFpbGFibGUgaW4gd2lu cHIKKysJCSAgICAgICAgICAgICAgICAqIGZvciB0aHJlYWRzLgorKwkJICAgICAgICAgICAgICAg ICovCisrCX0KKysJY29uc3QgQk9PTCBhZGRlZCA9IExpc3REaWN0aW9uYXJ5X0FkZChzZXJpYWwt PklycFRocmVhZHMsICh2b2lkKilrZXksIGlycFRocmVhZCk7CisrCUxpc3REaWN0aW9uYXJ5X1Vu bG9jayhzZXJpYWwtPklycFRocmVhZHMpOworKworKwlpZiAoIWFkZGVkKQorIAl7CisgCQlXTG9n X0VSUihUQUcsICJMaXN0RGljdGlvbmFyeV9BZGQgZmFpbGVkISIpOworIAkJZ290byBlcnJvcl9o YW5kbGU7CitAQCAtOTI3LDcgKzkzMiw3IEBAIFVJTlQgRGV2aWNlU2VydmljZUVudHJ5KFBERVZJ Q0VfU0VSVklDRV9FTlRSWV9QT0lOVFMgcEVudHJ5UG9pbnRzKQorIAkJfQorIAorIAkJLyogSXJw VGhyZWFkcyBjb250ZW50IG9ubHkgbW9kaWZpZWQgYnkgY3JlYXRlX2lycF90aHJlYWQoKSAqLwor LQkJc2VyaWFsLT5JcnBUaHJlYWRzID0gTGlzdERpY3Rpb25hcnlfTmV3KEZBTFNFKTsKKysJCXNl cmlhbC0+SXJwVGhyZWFkcyA9IExpc3REaWN0aW9uYXJ5X05ldyhUUlVFKTsKKyAKKyAJCWlmICgh c2VyaWFsLT5JcnBUaHJlYWRzKQorIAkJeworLS0gCisyLjUzLjAKKwoKZGlmZiAtLWdpdCBhL2No YW5uZWxzLXVyYmRyYy1jYW5jZWwtYWxsLXVzYi10cmFuc2ZlcnMtb24tY2hhbm5lbC0ucGF0Y2gg Yi9jaGFubmVscy11cmJkcmMtY2FuY2VsLWFsbC11c2ItdHJhbnNmZXJzLW9uLWNoYW5uZWwtLnBh dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmY2NiN2QKLS0tIC9kZXYv bnVsbAorKysgYi9jaGFubmVscy11cmJkcmMtY2FuY2VsLWFsbC11c2ItdHJhbnNmZXJzLW9uLWNo YW5uZWwtLnBhdGNoCkBAIC0wLDAgKzEsMjQgQEAKK0Zyb20gNDE0ZjcwMTQ2NDkyOWMyMTdmMjUw OWJjYmQ2ZDJjMWYwMGY3ZWQ3MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IGFrYWxs YWJldGggPGFrYWxsYWJldGhAcG9zdGVvLm5ldD4KK0RhdGU6IE1vbiwgMjYgSmFuIDIwMjYgMTE6 MDc6MjUgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gW2NoYW5uZWxzLHVyYmRyY10gY2FuY2VsIGFs bCB1c2IgdHJhbnNmZXJzIG9uIGNoYW5uZWwgY2xvc2UKKworLS0tCisgY2hhbm5lbHMvdXJiZHJj L2NsaWVudC9saWJ1c2IvbGlidXNiX3VkZXZpY2UuYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAx IGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvY2hhbm5lbHMvdXJiZHJjL2NsaWVudC9saWJ1 c2IvbGlidXNiX3VkZXZpY2UuYyBiL2NoYW5uZWxzL3VyYmRyYy9jbGllbnQvbGlidXNiL2xpYnVz Yl91ZGV2aWNlLmMKK2luZGV4IDUzNDEyNDhlYy4uOWUyZDNlYzVhIDEwMDY0NAorLS0tIGEvY2hh bm5lbHMvdXJiZHJjL2NsaWVudC9saWJ1c2IvbGlidXNiX3VkZXZpY2UuYworKysrIGIvY2hhbm5l bHMvdXJiZHJjL2NsaWVudC9saWJ1c2IvbGlidXNiX3VkZXZpY2UuYworQEAgLTExNjUsNiArMTE2 NSw3IEBAIHN0YXRpYyB2b2lkIGxpYnVzYl91ZGV2X21hcmtfY2hhbm5lbF9jbG9zZWQoSVVERVZJ Q0UqIGlkZXYpCisgCQljb25zdCB1aW50OF90IGRldk5yID0gaWRldi0+Z2V0X2Rldl9udW1iZXIo aWRldik7CisgCisgCQlwZGV2LT5zdGF0dXMgfD0gVVJCRFJDX0RFVklDRV9DSEFOTkVMX0NMT1NF RDsKKysJCXBkZXYtPmlmYWNlLmNhbmNlbF9hbGxfdHJhbnNmZXJfcmVxdWVzdCgmcGRldi0+aWZh Y2UpOworIAkJdXJiZHJjLT51ZGV2bWFuLT51bnJlZ2lzdGVyX3VkZXZpY2UodXJiZHJjLT51ZGV2 bWFuLCBidXNOciwgZGV2TnIpOworIAl9CisgfQorLS0gCisyLjUzLjAKKwoKZGlmZiAtLWdpdCBh L2NoYW5uZWxzLXVyYmRyYy1jaGVjay1pbnRlcmZhY2UtaW5kaWNlcy1iZWZvcmUtdXNlLnBhdGNo IGIvY2hhbm5lbHMtdXJiZHJjLWNoZWNrLWludGVyZmFjZS1pbmRpY2VzLWJlZm9yZS11c2UucGF0 Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2MxODcxNwotLS0gL2Rldi9u dWxsCisrKyBiL2NoYW5uZWxzLXVyYmRyYy1jaGVjay1pbnRlcmZhY2UtaW5kaWNlcy1iZWZvcmUt dXNlLnBhdGNoCkBAIC0wLDAgKzEsNzAgQEAKK0Zyb20gZjg0NTNiZGE1MDY5MzE0ZDI3MTk3M2Vm ZjY5ZGMyZTA0ZjZkZjk4MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9uZHJlaiBI b2x5IDxvaG9seUByZWRoYXQuY29tPgorRGF0ZTogVHVlLCAxNyBGZWIgMjAyNiAxMzowMTozNyAr MDEwMAorU3ViamVjdDogW1BBVENIXSBbY2hhbm5lbHMsdXJiZHJjXSBjaGVjayBpbnRlcmZhY2Ug aW5kaWNlcyBiZWZvcmUgdXNlCisKK0JhY2twb3J0IG9mIGNvbW1pdCA3YjdlNmRlOGZlNDI3YTJm MDFkMzMxMDU2Nzc0YWVjNjk3MTA1OTBiIChmdW5jdGlvbmFsIGNoYW5nZXMgb25seSkuCisKK0Nv LWF1dGhvcmVkLWJ5OiBDdXJzb3IgPGN1cnNvcmFnZW50QGN1cnNvci5jb20+CistLS0KKyAuLi4v dXJiZHJjL2NsaWVudC9saWJ1c2IvbGlidXNiX3VkZXZpY2UuYyAgICAgfCAyNSArKysrKysrKysr KysrKysrKysrCisgY2hhbm5lbHMvdXJiZHJjL2NvbW1vbi9tc3VzYi5jICAgICAgICAgICAgICAg IHwgIDIgKysKKyAyIGZpbGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdp dCBhL2NoYW5uZWxzL3VyYmRyYy9jbGllbnQvbGlidXNiL2xpYnVzYl91ZGV2aWNlLmMgYi9jaGFu bmVscy91cmJkcmMvY2xpZW50L2xpYnVzYi9saWJ1c2JfdWRldmljZS5jCitpbmRleCBlZjg3ZjE5 NWYuLmIyZDgwMjQzYiAxMDA2NDQKKy0tLSBhL2NoYW5uZWxzL3VyYmRyYy9jbGllbnQvbGlidXNi L2xpYnVzYl91ZGV2aWNlLmMKKysrKyBiL2NoYW5uZWxzL3VyYmRyYy9jbGllbnQvbGlidXNiL2xp YnVzYl91ZGV2aWNlLmMKK0BAIC01OTcsMTEgKzU5NywzNiBAQCBsaWJ1c2JfdWRldl9jb21wbGV0 ZV9tc2NvbmZpZ19zZXR1cChJVURFVklDRSogaWRldiwgTVNVU0JfQ09ORklHX0RFU0NSSVBUT1Iq IE1zQworIAkJICAgICAgICAgICAiU2VsZWN0IENvbmZpZ3VyYXRpb246IExpYnVzYiBOdW1iZXJJ bnRlcmZhY2VzKCUiIFBSSXU4ICIpIGlzIGRpZmZlcmVudCAiCisgCQkgICAgICAgICAgICJ3aXRo IE1zQ29uZmlnIE51bWJlckludGVyZmFjZXMoJSIgUFJJdTMyICIpIiwKKyAJCSAgICAgICAgICAg TGlidXNiQ29uZmlnLT5iTnVtSW50ZXJmYWNlcywgTXNDb25maWctPk51bUludGVyZmFjZXMpOwor KwkJcmV0dXJuIE5VTEw7CisgCX0KKyAKKyAJLyogcmVwbGFjZSBNc1BpcGVzIGZvciBsaWJ1c2Ig Ki8KKyAJTXNJbnRlcmZhY2VzID0gTXNDb25maWctPk1zSW50ZXJmYWNlczsKKyAKKysJLyogY2hl Y2sgaW50ZXJmYWNlIGluZGljZXMgYmVmb3JlIHVzZSAqLworKwlmb3IgKGludW0gPSAwOyBpbnVt IDwgTXNDb25maWctPk51bUludGVyZmFjZXM7IGludW0rKykKKysJeworKwkJTXNJbnRlcmZhY2Ug PSBNc0ludGVyZmFjZXNbaW51bV07CisrCQlpZiAoTXNJbnRlcmZhY2UtPkludGVyZmFjZU51bWJl ciA+PSBNc0NvbmZpZy0+TnVtSW50ZXJmYWNlcykKKysJCXsKKysJCQlXTG9nX1ByaW50KHVyYmRy Yy0+bG9nLCBXTE9HX0VSUk9SLAorKwkJCSAgICAgICAgICAgIk1TVVNCX0NPTkZJR19ERVNDUklQ VE9SOjpOdW1JbnRlcmZhY2VzICglIiBQUkl1MzIKKysJCQkgICAgICAgICAgICIgPD0gTVNVU0Jf SU5URVJGQUNFX0RFU0NSSVBUT1I6OkludGVyZmFjZU51bWJlciggJSIgUFJJdTggIikiLAorKwkJ CSAgICAgICAgICAgTXNDb25maWctPk51bUludGVyZmFjZXMsIE1zSW50ZXJmYWNlLT5JbnRlcmZh Y2VOdW1iZXIpOworKwkJCXJldHVybiBOVUxMOworKwkJfQorKworKwkJTGlidXNiSW50ZXJmYWNl ID0gJkxpYnVzYkNvbmZpZy0+aW50ZXJmYWNlW01zSW50ZXJmYWNlLT5JbnRlcmZhY2VOdW1iZXJd OworKwkJaWYgKE1zSW50ZXJmYWNlLT5BbHRlcm5hdGVTZXR0aW5nID49IExpYnVzYkludGVyZmFj ZS0+bnVtX2FsdHNldHRpbmcpCisrCQl7CisrCQkJV0xvZ19QcmludCh1cmJkcmMtPmxvZywgV0xP R19FUlJPUiwKKysJCQkgICAgICAgICAgICJMSUJVU0JfSU5URVJGQUNFOjpudW1fYWx0c2V0dGlu ZyAoJSIgUFJJZDMyCisrCQkJICAgICAgICAgICAiIDw9IE1TVVNCX0lOVEVSRkFDRV9ERVNDUklQ VE9SOjpBbHRlcm5hdGVTZXR0aW5nKCAlIiBQUkl1OCAiKSIsCisrCQkJICAgICAgICAgICBMaWJ1 c2JJbnRlcmZhY2UtPm51bV9hbHRzZXR0aW5nLCBNc0ludGVyZmFjZS0+QWx0ZXJuYXRlU2V0dGlu Zyk7CisrCQkJcmV0dXJuIE5VTEw7CisrCQl9CisrCX0KKysKKyAJZm9yIChpbnVtID0gMDsgaW51 bSA8IE1zQ29uZmlnLT5OdW1JbnRlcmZhY2VzOyBpbnVtKyspCisgCXsKKyAJCU1zSW50ZXJmYWNl ID0gTXNJbnRlcmZhY2VzW2ludW1dOworZGlmZiAtLWdpdCBhL2NoYW5uZWxzL3VyYmRyYy9jb21t b24vbXN1c2IuYyBiL2NoYW5uZWxzL3VyYmRyYy9jb21tb24vbXN1c2IuYworaW5kZXggYmI1MTdj ZTVkLi4xMTNiN2M5NmIgMTAwNjQ0CistLS0gYS9jaGFubmVscy91cmJkcmMvY29tbW9uL21zdXNi LmMKKysrKyBiL2NoYW5uZWxzL3VyYmRyYy9jb21tb24vbXN1c2IuYworQEAgLTEzOSw2ICsxMzks OCBAQCBCT09MIG1zdXNiX21zaW50ZXJmYWNlX3JlcGxhY2UoTVNVU0JfQ09ORklHX0RFU0NSSVBU T1IqIE1zQ29uZmlnLCBCWVRFIEludGVyZmFjZQorIHsKKyAJaWYgKCFNc0NvbmZpZyB8fCAhTXND b25maWctPk1zSW50ZXJmYWNlcykKKyAJCXJldHVybiBGQUxTRTsKKysJaWYgKE1zQ29uZmlnLT5O dW1JbnRlcmZhY2VzIDw9IEludGVyZmFjZU51bWJlcikKKysJCXJldHVybiBGQUxTRTsKKyAKKyAJ bXN1c2JfbXNpbnRlcmZhY2VfZnJlZShNc0NvbmZpZy0+TXNJbnRlcmZhY2VzW0ludGVyZmFjZU51 bWJlcl0pOworIAlNc0NvbmZpZy0+TXNJbnRlcmZhY2VzW0ludGVyZmFjZU51bWJlcl0gPSBOZXdN c0ludGVyZmFjZTsKKy0tIAorMi41Mi4wCisKCmRpZmYgLS1naXQgYS9jaGFubmVscy11cmJkcmMt ZG8tbm90LWZyZWUtTXNDb25maWctb24tZmFpbHVyZS5wYXRjaCBiL2NoYW5uZWxzLXVyYmRyYy1k by1ub3QtZnJlZS1Nc0NvbmZpZy1vbi1mYWlsdXJlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjAwNzcxZmUKLS0tIC9kZXYvbnVsbAorKysgYi9jaGFubmVscy11cmJk cmMtZG8tbm90LWZyZWUtTXNDb25maWctb24tZmFpbHVyZS5wYXRjaApAQCAtMCwwICsxLDMxIEBA CitGcm9tIGFhYWQ0NzE4ZDgwYjAzNTRmZDgwN2Q2ODBiMTIzOTAwNzVmZTRmYTAgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCitGcm9tOiBPbmRyZWogSG9seSA8b2hvbHlAcmVkaGF0LmNvbT4KK0Rh dGU6IFdlZCwgMTEgTWFyIDIwMjYgMTI6Mjc6NDcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gW2No YW5uZWxzLHVyYmRyY10gZG8gbm90IGZyZWUgTXNDb25maWcgb24gZmFpbHVyZQorCitCYWNrcG9y dCBvZiBjb21taXQgZDY3NjUxODgwOWMzMTllZWMxNTkxMWM3MDVjMTM1MzYwMzZhZjJhZS4KKwor TWFkZS13aXRoOiBDdXJzb3IKKy0tLQorIGNoYW5uZWxzL3VyYmRyYy9jbGllbnQvZGF0YV90cmFu c2Zlci5jIHwgNCArLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAzIGRlbGV0 aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY2hhbm5lbHMvdXJiZHJjL2NsaWVudC9kYXRhX3RyYW5z ZmVyLmMgYi9jaGFubmVscy91cmJkcmMvY2xpZW50L2RhdGFfdHJhbnNmZXIuYworaW5kZXggZWQ2 Y2NmMzJkLi5jNTQ3ZDUyZDcgMTAwNjQ0CistLS0gYS9jaGFubmVscy91cmJkcmMvY2xpZW50L2Rh dGFfdHJhbnNmZXIuYworKysrIGIvY2hhbm5lbHMvdXJiZHJjL2NsaWVudC9kYXRhX3RyYW5zZmVy LmMKK0BAIC01NzAsMTAgKzU3MCw4IEBAIHN0YXRpYyBVSU5UIHVyYl9zZWxlY3RfaW50ZXJmYWNl KElVREVWSUNFKiBwZGV2LCBVUkJEUkNfQ0hBTk5FTF9DQUxMQkFDSyogY2FsbGJhCisgCU1zQ29u ZmlnID0gcGRldi0+Z2V0X01zQ29uZmlnKHBkZXYpOworIAlJbnRlcmZhY2VOdW1iZXIgPSBNc0lu dGVyZmFjZS0+SW50ZXJmYWNlTnVtYmVyOworIAlpZiAoIW1zdXNiX21zaW50ZXJmYWNlX3JlcGxh Y2UoTXNDb25maWcsIEludGVyZmFjZU51bWJlciwgTXNJbnRlcmZhY2UpKQorLQl7CistCQltc3Vz Yl9tc2NvbmZpZ19mcmVlKE1zQ29uZmlnKTsKKyAJCXJldHVybiBFUlJPUl9CQURfQ09ORklHVVJB VElPTjsKKy0JfQorKworIAkvKiBjb21wbGV0ZSBjb25maWd1cmF0aW9uIHNldHVwICovCisgCWlm ICghcGRldi0+Y29tcGxldGVfbXNjb25maWdfc2V0dXAocGRldiwgTXNDb25maWcpKQorIAl7Cist LSAKKzIuNTMuMAorCgpkaWZmIC0tZ2l0IGEvY2hhbm5lbHMtdXJiZHJjLWVuc3VyZS1JbnRlcmZh Y2VOdW1iZXItaXMtd2l0aGluLXJhbi5wYXRjaCBiL2NoYW5uZWxzLXVyYmRyYy1lbnN1cmUtSW50 ZXJmYWNlTnVtYmVyLWlzLXdpdGhpbi1yYW4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uMWMyMTRhMAotLS0gL2Rldi9udWxsCisrKyBiL2NoYW5uZWxzLXVyYmRyYy1l bnN1cmUtSW50ZXJmYWNlTnVtYmVyLWlzLXdpdGhpbi1yYW4ucGF0Y2gKQEAgLTAsMCArMSw0NSBA QAorRnJvbSBlYTQ5MzkxYjM0NjNiN2RmMThlYjljMzU4Y2RlYzA0ZWRmOWM0MDAxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT25kcmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5jb20+CitE YXRlOiBUaHUsIDEyIE1hciAyMDI2IDExOjAzOjIwICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFtj aGFubmVscyx1cmJkcmNdIGVuc3VyZSBJbnRlcmZhY2VOdW1iZXIgaXMgd2l0aGluIHJhbmdlCisK K0JhY2twb3J0IG9mIGNvbW1pdCAyZDU2M2E1MGJlMTdjMWI0MDdjYTQ0OGIxMzIxMzc4YzA3MjZk ZDMxLgorCitNYWRlLXdpdGg6IEN1cnNvcgorLS0tCisgY2hhbm5lbHMvdXJiZHJjL2NsaWVudC9s aWJ1c2IvbGlidXNiX3VkZXZpY2UuYyB8IDEyICsrKysrKy0tLS0tLQorIDEgZmlsZSBjaGFuZ2Vk LCA2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jaGFubmVs cy91cmJkcmMvY2xpZW50L2xpYnVzYi9saWJ1c2JfdWRldmljZS5jIGIvY2hhbm5lbHMvdXJiZHJj L2NsaWVudC9saWJ1c2IvbGlidXNiX3VkZXZpY2UuYworaW5kZXggYjJkODAyNDNiLi5hZThiYmI0 YzUgMTAwNjQ0CistLS0gYS9jaGFubmVscy91cmJkcmMvY2xpZW50L2xpYnVzYi9saWJ1c2JfdWRl dmljZS5jCisrKysgYi9jaGFubmVscy91cmJkcmMvY2xpZW50L2xpYnVzYi9saWJ1c2JfdWRldmlj ZS5jCitAQCAtNTI4LDE5ICs1MjgsMTkgQEAgc3RhdGljIGludCBsaWJ1c2JfdWRldl9zZWxlY3Rf aW50ZXJmYWNlKElVREVWSUNFKiBpZGV2LCBCWVRFIEludGVyZmFjZU51bWJlciwgQlkKKyB7Cisg CWludCBlcnJvciA9IDAsIGRpZmYgPSAwOworIAlVREVWSUNFKiBwZGV2ID0gKFVERVZJQ0UqKWlk ZXY7CistCVVSQkRSQ19QTFVHSU4qIHVyYmRyYzsKKy0JTVNVU0JfQ09ORklHX0RFU0NSSVBUT1Iq IE1zQ29uZmlnOworLQlNU1VTQl9JTlRFUkZBQ0VfREVTQ1JJUFRPUioqIE1zSW50ZXJmYWNlczsK KyAKKyAJaWYgKCFwZGV2IHx8ICFwZGV2LT51cmJkcmMpCisgCQlyZXR1cm4gLTE7CisgCistCXVy YmRyYyA9IHBkZXYtPnVyYmRyYzsKKy0JTXNDb25maWcgPSBwZGV2LT5Nc0NvbmZpZzsKKysJVVJC RFJDX1BMVUdJTiogdXJiZHJjID0gcGRldi0+dXJiZHJjOworKwlNU1VTQl9DT05GSUdfREVTQ1JJ UFRPUiogTXNDb25maWcgPSBwZGV2LT5Nc0NvbmZpZzsKKyAKKyAJaWYgKE1zQ29uZmlnKQorIAl7 CistCQlNc0ludGVyZmFjZXMgPSBNc0NvbmZpZy0+TXNJbnRlcmZhY2VzOworKwkJaWYgKEludGVy ZmFjZU51bWJlciA+PSBNc0NvbmZpZy0+TnVtSW50ZXJmYWNlcykKKysJCQlyZXR1cm4gLTI7Cisr CisrCQlNU1VTQl9JTlRFUkZBQ0VfREVTQ1JJUFRPUioqIE1zSW50ZXJmYWNlcyA9IE1zQ29uZmln LT5Nc0ludGVyZmFjZXM7CisgCQlpZiAoTXNJbnRlcmZhY2VzKQorIAkJeworIAkJCVdMb2dfUHJp bnQodXJiZHJjLT5sb2csIFdMT0dfSU5GTywKKy0tIAorMi41My4wCisKCmRpZmYgLS1naXQgYS9j aGFubmVscy12aWRlby1maXgtd3JvbmctY2FzdC5wYXRjaCBiL2NoYW5uZWxzLXZpZGVvLWZpeC13 cm9uZy1jYXN0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4YmFi MWIKLS0tIC9kZXYvbnVsbAorKysgYi9jaGFubmVscy12aWRlby1maXgtd3JvbmctY2FzdC5wYXRj aApAQCAtMCwwICsxLDM3IEBACitGcm9tIDk3MGFkMjMxMWU2OTU4OTAwNGQ2YTg0OTYxYWE5ZDFl M2IzM2MwODUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPbmRyZWogSG9seSA8b2hv bHlAcmVkaGF0LmNvbT4KK0RhdGU6IFRodSwgMjYgTWFyIDIwMjYgMTU6NTc6MzQgKzAxMDAKK1N1 YmplY3Q6IFtQQVRDSF0gW2NoYW5uZWxzLHZpZGVvXSBmaXggd3JvbmcgY2FzdAorCitCYWNrcG9y dCBvZiBjb21taXQgZTAxY2Q4NWM4MDAzYTI0NWVmOTc3OGYwZWRhNGI5MjM1NTE0YzIwMS4KKwor TWFkZS13aXRoOiBDdXJzb3IKKy0tLQorIGNoYW5uZWxzL3ZpZGVvL2NsaWVudC92aWRlb19tYWlu LmMgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9u cygtKQorCitkaWZmIC0tZ2l0IGEvY2hhbm5lbHMvdmlkZW8vY2xpZW50L3ZpZGVvX21haW4uYyBi L2NoYW5uZWxzL3ZpZGVvL2NsaWVudC92aWRlb19tYWluLmMKK2luZGV4IDY0MTIzMWIxZC4uMGFm NzgxNDBlIDEwMDY0NAorLS0tIGEvY2hhbm5lbHMvdmlkZW8vY2xpZW50L3ZpZGVvX21haW4uYwor KysrIGIvY2hhbm5lbHMvdmlkZW8vY2xpZW50L3ZpZGVvX21haW4uYworQEAgLTk1OSw3ICs5NTks NyBAQCBzdGF0aWMgVUlOVCB2aWRlb19jb250cm9sX29uX2Nsb3NlKElXVFNWaXJ0dWFsQ2hhbm5l bENhbGxiYWNrKiBwQ2hhbm5lbENhbGxiYWNrKQorIHsKKyAJaWYgKHBDaGFubmVsQ2FsbGJhY2sp CisgCXsKKy0JCVZJREVPX0xJU1RFTkVSX0NBTExCQUNLKiBsaXN0ZW5lcl9jYWxsYmFjayA9IChW SURFT19MSVNURU5FUl9DQUxMQkFDSyopcENoYW5uZWxDYWxsYmFjazsKKysJCVZJREVPX0NIQU5O RUxfQ0FMTEJBQ0sqIGxpc3RlbmVyX2NhbGxiYWNrID0gKFZJREVPX0NIQU5ORUxfQ0FMTEJBQ0sq KXBDaGFubmVsQ2FsbGJhY2s7CisgCQlWSURFT19QTFVHSU4qIHZpZGVvID0gKFZJREVPX1BMVUdJ TiopbGlzdGVuZXJfY2FsbGJhY2stPnBsdWdpbjsKKyAJCWlmICh2aWRlbyAmJiB2aWRlby0+Y29u dHJvbF9jYWxsYmFjaykKKyAJCXsKK0BAIC05NzQsNyArOTc0LDcgQEAgc3RhdGljIFVJTlQgdmlk ZW9fZGF0YV9vbl9jbG9zZShJV1RTVmlydHVhbENoYW5uZWxDYWxsYmFjayogcENoYW5uZWxDYWxs YmFjaykKKyB7CisgCWlmIChwQ2hhbm5lbENhbGxiYWNrKQorIAl7CistCQlWSURFT19MSVNURU5F Ul9DQUxMQkFDSyogbGlzdGVuZXJfY2FsbGJhY2sgPSAoVklERU9fTElTVEVORVJfQ0FMTEJBQ0sq KXBDaGFubmVsQ2FsbGJhY2s7CisrCQlWSURFT19DSEFOTkVMX0NBTExCQUNLKiBsaXN0ZW5lcl9j YWxsYmFjayA9IChWSURFT19DSEFOTkVMX0NBTExCQUNLKilwQ2hhbm5lbENhbGxiYWNrOworIAkJ VklERU9fUExVR0lOKiB2aWRlbyA9IChWSURFT19QTFVHSU4qKWxpc3RlbmVyX2NhbGxiYWNrLT5w bHVnaW47CisgCQlpZiAodmlkZW8gJiYgdmlkZW8tPmRhdGFfY2FsbGJhY2spCisgCQl7CistLSAK KzIuNTMuMAorCgpkaWZmIC0tZ2l0IGEvY2hhbm5lbHMtdmlkZW8tdW5pZnktZXJyb3ItaGFuZGxp bmcucGF0Y2ggYi9jaGFubmVscy12aWRlby11bmlmeS1lcnJvci1oYW5kbGluZy5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZWFhOTkyCi0tLSAvZGV2L251bGwKKysr IGIvY2hhbm5lbHMtdmlkZW8tdW5pZnktZXJyb3ItaGFuZGxpbmcucGF0Y2gKQEAgLTAsMCArMSwx MjEgQEAKK0Zyb20gMmNmZGMxNmZhZWQ5M2E4ZDVkMWVjMzkxNzg4NTQ3NDA5ZGY5ODZkZSBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9uZHJlaiBIb2x5IDxvaG9seUByZWRoYXQuY29t PgorRGF0ZTogVGh1LCAyNiBNYXIgMjAyNiAxNTo1NzoyOCArMDEwMAorU3ViamVjdDogW1BBVENI XSBbY2hhbm5lbHMsdmlkZW9dIHVuaWZ5IGVycm9yIGhhbmRsaW5nCisKK1BhcnRpYWwgYmFja3Bv cnQgb2YgY29tbWl0IDYzNWFlM2M4MTkzMjU2ZGIwMTc3NGZhYjVmZjExYmNhZTU3YWVkNmIuCisK K01hZGUtd2l0aDogQ3Vyc29yCistLS0KKyBjaGFubmVscy92aWRlby9jbGllbnQvdmlkZW9fbWFp bi5jIHwgNDUgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQs IDM0IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY2hhbm5l bHMvdmlkZW8vY2xpZW50L3ZpZGVvX21haW4uYyBiL2NoYW5uZWxzL3ZpZGVvL2NsaWVudC92aWRl b19tYWluLmMKK2luZGV4IGE4MDMxZmM4Ni4uNjQxMjMxYjFkIDEwMDY0NAorLS0tIGEvY2hhbm5l bHMvdmlkZW8vY2xpZW50L3ZpZGVvX21haW4uYworKysrIGIvY2hhbm5lbHMvdmlkZW8vY2xpZW50 L3ZpZGVvX21haW4uYworQEAgLTI1LDcgKzI1LDkgQEAKKyAjaW5jbHVkZSA8c3RkbGliLmg+Cisg I2luY2x1ZGUgPHN0cmluZy5oPgorIAorKyNpbmNsdWRlIDx3aW5wci9hc3NlcnQuaD4KKyAjaW5j bHVkZSA8d2lucHIvY3J0Lmg+CisrI2luY2x1ZGUgPHdpbnByL2Vycm9yLmg+CisgI2luY2x1ZGUg PHdpbnByL3N5bmNoLmg+CisgI2luY2x1ZGUgPHdpbnByL3ByaW50Lmg+CisgI2luY2x1ZGUgPHdp bnByL3N0cmVhbS5oPgorQEAgLTM1MSwxNCArMzUzLDI0IEBAIHN0YXRpYyB2b2lkIFZpZGVvQ2xp ZW50Q29udGV4dFByaXZfZnJlZShWaWRlb0NsaWVudENvbnRleHRQcml2KiBwcml2KQorIAlmcmVl KHByaXYpOworIH0KKyAKKytzdGF0aWMgVUlOVCB2aWRlb19jaGFubmVsX3dyaXRlKFZJREVPX1BM VUdJTiogdmlkZW8sIGNvbnN0IEJZVEUqIGRhdGEsIFVJTlQzMiBsZW5ndGgpCisreworKwlXSU5Q Ul9BU1NFUlQodmlkZW8pOworKworKwlpZiAoIXZpZGVvLT5jb250cm9sX2NhbGxiYWNrIHx8ICF2 aWRlby0+Y29udHJvbF9jYWxsYmFjay0+Y2hhbm5lbF9jYWxsYmFjaykKKysJCXJldHVybiBFUlJP Ul9CQURfQ09ORklHVVJBVElPTjsKKysJSVdUU1ZpcnR1YWxDaGFubmVsKiBjaGFubmVsID0gdmlk ZW8tPmNvbnRyb2xfY2FsbGJhY2stPmNoYW5uZWxfY2FsbGJhY2stPmNoYW5uZWw7CisrCWlmICgh Y2hhbm5lbCB8fCAhY2hhbm5lbC0+V3JpdGUpCisrCQlyZXR1cm4gRVJST1JfQkFEX0NPTkZJR1VS QVRJT047CisrCXJldHVybiBjaGFubmVsLT5Xcml0ZShjaGFubmVsLCBsZW5ndGgsIGRhdGEsIE5V TEwpOworK30KKysKKyBzdGF0aWMgVUlOVCB2aWRlb19jb250cm9sX3NlbmRfcHJlc2VudGF0aW9u X3Jlc3BvbnNlKFZpZGVvQ2xpZW50Q29udGV4dCogY29udGV4dCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRTTU1fUFJFU0VOVEFUSU9OX1JF U1BPTlNFKiByZXNwKQorIHsKKyAJQllURSBidWZbMTJdOworIAl3U3RyZWFtKiBzOworIAlWSURF T19QTFVHSU4qIHZpZGVvID0gKFZJREVPX1BMVUdJTiopY29udGV4dC0+aGFuZGxlOworLQlJV1RT VmlydHVhbENoYW5uZWwqIGNoYW5uZWw7CistCVVJTlQgcmV0OworIAorIAlzID0gU3RyZWFtX05l dyhidWYsIDEyKTsKKyAJaWYgKCFzKQorQEAgLTM3MCwxMSArMzgyLDkgQEAgc3RhdGljIFVJTlQg dmlkZW9fY29udHJvbF9zZW5kX3ByZXNlbnRhdGlvbl9yZXNwb25zZShWaWRlb0NsaWVudENvbnRl eHQqIGNvbnRleHQKKyAJU3RyZWFtX1plcm8ocywgMyk7CisgCVN0cmVhbV9TZWFsTGVuZ3RoKHMp OworIAorLQljaGFubmVsID0gdmlkZW8tPmNvbnRyb2xfY2FsbGJhY2stPmNoYW5uZWxfY2FsbGJh Y2stPmNoYW5uZWw7CistCXJldCA9IGNoYW5uZWwtPldyaXRlKGNoYW5uZWwsIDEyLCBidWYsIE5V TEwpOworIAlTdHJlYW1fRnJlZShzLCBGQUxTRSk7CisgCistCXJldHVybiByZXQ7CisrCXJldHVy biB2aWRlb19jaGFubmVsX3dyaXRlKHZpZGVvLCBidWYsIHNpemVvZihidWYpKTsKKyB9CisgCisg c3RhdGljIEJPT0wgdmlkZW9fb25NYXBwZWRHZW9tZXRyeVVwZGF0ZShNQVBQRURfR0VPTUVUUlkq IGdlb21ldHJ5KQorQEAgLTU5Miw4ICs2MDIsNiBAQCBzdGF0aWMgVUlOVCB2aWRlb19jb250cm9s X3NlbmRfY2xpZW50X25vdGlmaWNhdGlvbihWaWRlb0NsaWVudENvbnRleHQqIGNvbnRleHQsCisg CUJZVEUgYnVmWzEwMF07CisgCXdTdHJlYW0qIHM7CisgCVZJREVPX1BMVUdJTiogdmlkZW8gPSAo VklERU9fUExVR0lOKiljb250ZXh0LT5oYW5kbGU7CistCUlXVFNWaXJ0dWFsQ2hhbm5lbCogY2hh bm5lbDsKKy0JVUlOVCByZXQ7CisgCVVJTlQzMiBjYlNpemU7CisgCisgCXMgPSBTdHJlYW1fTmV3 KGJ1ZiwgMzApOworQEAgLTYyNywxMCArNjM1LDcgQEAgc3RhdGljIFVJTlQgdmlkZW9fY29udHJv bF9zZW5kX2NsaWVudF9ub3RpZmljYXRpb24oVmlkZW9DbGllbnRDb250ZXh0KiBjb250ZXh0LAor IAlTdHJlYW1fV3JpdGVfVUlOVDMyKHMsIGNiU2l6ZSk7CisgCVN0cmVhbV9GcmVlKHMsIEZBTFNF KTsKKyAKKy0JY2hhbm5lbCA9IHZpZGVvLT5jb250cm9sX2NhbGxiYWNrLT5jaGFubmVsX2NhbGxi YWNrLT5jaGFubmVsOworLQlyZXQgPSBjaGFubmVsLT5Xcml0ZShjaGFubmVsLCBjYlNpemUsIGJ1 ZiwgTlVMTCk7CistCistCXJldHVybiByZXQ7CisrCXJldHVybiB2aWRlb19jaGFubmVsX3dyaXRl KHZpZGVvLCBidWYsIGNiU2l6ZSk7CisgfQorIAorIHN0YXRpYyB2b2lkIHZpZGVvX3RpbWVyKFZp ZGVvQ2xpZW50Q29udGV4dCogdmlkZW8sIFVJTlQ2NCBub3cpCitAQCAtOTUyLDEyICs5NTcsMzAg QEAgc3RhdGljIFVJTlQgdmlkZW9fZGF0YV9vbl9kYXRhX3JlY2VpdmVkKElXVFNWaXJ0dWFsQ2hh bm5lbENhbGxiYWNrKiBwQ2hhbm5lbENhbGwKKyAgKi8KKyBzdGF0aWMgVUlOVCB2aWRlb19jb250 cm9sX29uX2Nsb3NlKElXVFNWaXJ0dWFsQ2hhbm5lbENhbGxiYWNrKiBwQ2hhbm5lbENhbGxiYWNr KQorIHsKKysJaWYgKHBDaGFubmVsQ2FsbGJhY2spCisrCXsKKysJCVZJREVPX0xJU1RFTkVSX0NB TExCQUNLKiBsaXN0ZW5lcl9jYWxsYmFjayA9IChWSURFT19MSVNURU5FUl9DQUxMQkFDSyopcENo YW5uZWxDYWxsYmFjazsKKysJCVZJREVPX1BMVUdJTiogdmlkZW8gPSAoVklERU9fUExVR0lOKils aXN0ZW5lcl9jYWxsYmFjay0+cGx1Z2luOworKwkJaWYgKHZpZGVvICYmIHZpZGVvLT5jb250cm9s X2NhbGxiYWNrKQorKwkJeworKwkJCXZpZGVvLT5jb250cm9sX2NhbGxiYWNrLT5jaGFubmVsX2Nh bGxiYWNrID0gTlVMTDsKKysJCX0KKysJfQorIAlmcmVlKHBDaGFubmVsQ2FsbGJhY2spOworIAly ZXR1cm4gQ0hBTk5FTF9SQ19PSzsKKyB9CisgCisgc3RhdGljIFVJTlQgdmlkZW9fZGF0YV9vbl9j bG9zZShJV1RTVmlydHVhbENoYW5uZWxDYWxsYmFjayogcENoYW5uZWxDYWxsYmFjaykKKyB7Cisr CWlmIChwQ2hhbm5lbENhbGxiYWNrKQorKwl7CisrCQlWSURFT19MSVNURU5FUl9DQUxMQkFDSyog bGlzdGVuZXJfY2FsbGJhY2sgPSAoVklERU9fTElTVEVORVJfQ0FMTEJBQ0sqKXBDaGFubmVsQ2Fs bGJhY2s7CisrCQlWSURFT19QTFVHSU4qIHZpZGVvID0gKFZJREVPX1BMVUdJTiopbGlzdGVuZXJf Y2FsbGJhY2stPnBsdWdpbjsKKysJCWlmICh2aWRlbyAmJiB2aWRlby0+ZGF0YV9jYWxsYmFjaykK KysJCXsKKysJCQl2aWRlby0+ZGF0YV9jYWxsYmFjay0+Y2hhbm5lbF9jYWxsYmFjayA9IE5VTEw7 CisrCQl9CisrCX0KKyAJZnJlZShwQ2hhbm5lbENhbGxiYWNrKTsKKyAJcmV0dXJuIENIQU5ORUxf UkNfT0s7CisgfQorLS0gCisyLjUzLjAKKwoKZGlmZiAtLWdpdCBhL2NsaWVudC1jb21tb24tZGVh Y3RpdmF0ZS1jbGktcGFyc2luZy1pbi1yZHAtZmlsZXMucGF0Y2ggYi9jbGllbnQtY29tbW9uLWRl YWN0aXZhdGUtY2xpLXBhcnNpbmctaW4tcmRwLWZpbGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjg3NGIxYTMKLS0tIC9kZXYvbnVsbAorKysgYi9jbGllbnQtY29t bW9uLWRlYWN0aXZhdGUtY2xpLXBhcnNpbmctaW4tcmRwLWZpbGVzLnBhdGNoCkBAIC0wLDAgKzEs NjUgQEAKK0Zyb20gMjBhMzQ4OWMyMzc2M2Y5NGQzMWRjZjhmZDdlZDg4MGUwN2NiYjJlOCBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFybWluIE5vdmFrIDxhcm1pbi5ub3Zha0B0aGlu Y2FzdC5jb20+CitEYXRlOiBUaHUsIDIgSnVsIDIwMjYgMTA6MjE6NTQgKzAyMDAKK1N1YmplY3Q6 IFtQQVRDSF0gW2NsaWVudCxjb21tb25dIGRlYWN0aXZhdGUgY2xpIHBhcnNpbmcgaW4gUkRQIGZp bGVzCisKK1RoaXMgZmVhdHVyZSB3YXMgdW5jb2R1bWVudGVkIGFuZCBtaWdodCBoYXZlIHVuaW50 ZW5kZWQgc2lkZSBlZmZlY3RzLgorRGVhY3RpdmF0ZSBpdCBieSBkZWZhdWx0IGFuZCAoZm9yIHRo ZSB0aW1lIGJlaW5nKSBrZWVwIGFuIG9wdGlvbiB0bworZW5hYmxlIGl0IGF0IGNvbXBpbGUgdGlt ZS4KKy0tLQorIGNsaWVudC9jb21tb24vQ01ha2VMaXN0cy50eHQgfCA1ICsrKysrCisgY2xpZW50 L2NvbW1vbi9maWxlLmMgICAgICAgICB8IDQgKysrKworIDIgZmlsZXMgY2hhbmdlZCwgOSBpbnNl cnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9jbGllbnQvY29tbW9uL0NNYWtlTGlzdHMudHh0IGIv Y2xpZW50L2NvbW1vbi9DTWFrZUxpc3RzLnR4dAoraW5kZXggYjQ2NWE2MzExLi43YmM3Y2YwODMg MTAwNjQ0CistLS0gYS9jbGllbnQvY29tbW9uL0NNYWtlTGlzdHMudHh0CisrKysgYi9jbGllbnQv Y29tbW9uL0NNYWtlTGlzdHMudHh0CitAQCAtODUsNiArODUsMTEgQEAgaWYgKFdJVEhfREVCVUdf U1lNQk9MUyBBTkQgTVNWQyBBTkQgQlVJTERfU0hBUkVEX0xJQlMpCisgCWluc3RhbGwoRklMRVMg JHtDTUFLRV9QREJfQklOQVJZX0RJUn0vJHtPVVRQVVRfRklMRU5BTUV9LnBkYiBERVNUSU5BVElP TiAke0NNQUtFX0lOU1RBTExfTElCRElSfSBDT01QT05FTlQgc3ltYm9scykKKyBlbmRpZigpCisK KytvcHRpb24oV0lUSF9FTUJFRERFRF9DTElfSU5fUkRQX0ZJTEVTICJbZGFuZ3JvdXNdIGFsbG93 IGVtYmVkZGVkIGNsaSBhcmd1bWVudHMgaW4gcmRwIGZpbGVzIiBPRkYpCisraWYoV0lUSF9FTUJF RERFRF9DTElfSU5fUkRQX0ZJTEVTKQorKyAgYWRkX2NvbXBpbGVfZGVmaW5pdGlvbnMoV0lUSF9F TUJFRERFRF9DTElfSU5fUkRQX0ZJTEVTKQorK2VuZGlmKCkKKysKKyBzZXRfcHJvcGVydHkoVEFS R0VUICR7TU9EVUxFX05BTUV9IFBST1BFUlRZIEZPTERFUiAiQ2xpZW50L0NvbW1vbiIpCisKKyBp ZihCVUlMRF9URVNUSU5HKQorZGlmZiAtLWdpdCBhL2NsaWVudC9jb21tb24vZmlsZS5jIGIvY2xp ZW50L2NvbW1vbi9maWxlLmMKK2luZGV4IGI1NmZlNmYwNi4uYmZmOTRiYWQwIDEwMDY0NAorLS0t IGEvY2xpZW50L2NvbW1vbi9maWxlLmMKKysrKyBiL2NsaWVudC9jb21tb24vZmlsZS5jCitAQCAt MjYsNiArMjYsNyBAQAorCisgI2luY2x1ZGUgPHdpbnByL2ZpbGUuaD4KKworKworICNpbmNsdWRl IDxmcmVlcmRwL2NsaWVudC9maWxlLmg+CisgI2luY2x1ZGUgPGZyZWVyZHAvY2xpZW50L2NtZGxp bmUuaD4KKworQEAgLTY2MSw2ICs2NjIsNyBAQCBzdGF0aWMgQk9PTCB0cmltX3N0cmluZ3MocmRw RmlsZSogZmlsZSkKKyAJCXJldHVybiBGQUxTRTsKKyAJaWYgKCF0cmltKCZmaWxlLT5LZGNQcm94 eU5hbWUpKQorIAkJcmV0dXJuIEZBTFNFOworKworIAlyZXR1cm4gVFJVRTsKKyB9CisKK0BAIC03 MjEsNiArNzIzLDcgQEAgQk9PTCBmcmVlcmRwX2NsaWVudF9wYXJzZV9yZHBfZmlsZV9idWZmZXJf ZXgocmRwRmlsZSogZmlsZSwgY29uc3QgQllURSogYnVmZmVyLAorIAkJCWlmIChmcmVlcmRwX2Ns aWVudF9wYXJzZV9yZHBfZmlsZV9hZGRfbGluZShmaWxlLCBsaW5lLCBpbmRleCkgPT0gLTEpCisg CQkJCWdvdG8gZmFpbDsKKworKyNpZiBkZWZpbmVkKFdJVEhfRU1CRURERURfQ0xJX0lOX1JEUF9G SUxFUykKKyAJCQlpZiAoYmVnWzBdID09ICcvJykKKyAJCQl7CisgCQkJCWlmICghZnJlZXJkcF9j bGllbnRfcGFyc2VfcmRwX2ZpbGVfb3B0aW9uKGZpbGUsIGxpbmUsIGluZGV4KSkKK0BAIC03Mjgs NiArNzMxLDcgQEAgQk9PTCBmcmVlcmRwX2NsaWVudF9wYXJzZV9yZHBfZmlsZV9idWZmZXJfZXgo cmRwRmlsZSogZmlsZSwgY29uc3QgQllURSogYnVmZmVyLAorCisgCQkJCWdvdG8gbmV4dF9saW5l OyAvKiBGcmVlUkRQIG9wdGlvbiAqLworIAkJCX0KKysjZW5kaWYKKworIAkJCWQxID0gc3RyY2hy KGxpbmUsICc6Jyk7CisKCmRpZmYgLS1naXQgYS9jbGllbnQteDExLWZpeC1kZWFkbG9jay1vbi1v dXRwdXQtZXhwb3NlLnBhdGNoIGIvY2xpZW50LXgxMS1maXgtZGVhZGxvY2stb24tb3V0cHV0LWV4 cG9zZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTU3MzU2Ci0t LSAvZGV2L251bGwKKysrIGIvY2xpZW50LXgxMS1maXgtZGVhZGxvY2stb24tb3V0cHV0LWV4cG9z ZS5wYXRjaApAQCAtMCwwICsxLDE3MCBAQAorRnJvbSBhMjVhNmI4YzUzNjAyZDIwMjNkZDBhZDY4 NTAwMGRjMDA2MTc5ZTk0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT25kcmVqIEhv bHkgPG9ob2x5QHJlZGhhdC5jb20+CitEYXRlOiBNb24sIDI3IEFwciAyMDI2IDIwOjEyOjQyICsw MDAwCitTdWJqZWN0OiBbUEFUQ0hdIFtjbGllbnQseDExXSBmaXggZGVhZGxvY2sgb24gb3V0cHV0 IGV4cG9zZQorCitEZWZlciBzY3JlZW4gdXBkYXRlIGZyb20geGZfZXZlbnRfRXhwb3NlIHRvIGFm dGVyIFgxMSBsb2NrIGlzIHJlbGVhc2VkLAorcHJldmVudGluZyBhIGRlYWRsb2NrIGJldHdlZW4g WDExIGxvY2sgYW5kIHJhaWxXaW5kb3dzIGxvY2suCisKK0JhY2twb3J0IG9mIGNvbW1pdCBhMjc4 ZmY3NDExNzQ0NGM2MzVjNTBmZmE1MDg0ZWNmNTE3MTcxZjVhLgorCitBZGp1c3RlZCBodW5rIG9m ZnNldHMgZm9yIDIuMTEuNy4KKworTWFkZS13aXRoOiBDdXJzb3IKKy0tLQorIGNsaWVudC9YMTEv eGZfY2xpZW50LmMgfCAgMyArKworIGNsaWVudC9YMTEveGZfZXZlbnQuYyAgfCA3NyArKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KKyBjbGllbnQvWDExL3hmX2V2ZW50 LmggIHwgIDIgKysKKyBjbGllbnQvWDExL3hmcmVlcmRwLmggIHwgIDQgKysrCisgNCBmaWxlcyBj aGFuZ2VkLCA2MCBpbnNlcnRpb25zKCspLCAyNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBh L2NsaWVudC9YMTEveGZfY2xpZW50LmMgYi9jbGllbnQvWDExL3hmX2NsaWVudC5jCitpbmRleCBi ZDNlYjBkLi5mMTRjYjU1IDEwMDY0NAorLS0tIGEvY2xpZW50L1gxMS94Zl9jbGllbnQuYworKysr IGIvY2xpZW50L1gxMS94Zl9jbGllbnQuYworQEAgLTUxNiw2ICs1MTYsOSBAQCBzdGF0aWMgQk9P TCB4Zl9wcm9jZXNzX3hfZXZlbnRzKGZyZWVyZHAqIGluc3RhbmNlKQorIAkJeGZfdW5sb2NrX3gx MSh4ZmMpOworIAkJaWYgKCFzdGF0dXMpCisgCQkJYnJlYWs7CisrCQlzdGF0dXMgPSB4Zl9ldmVu dF91cGRhdGVfc2NyZWVuKGluc3RhbmNlKTsKKysJCWlmICghc3RhdHVzKQorKwkJCWJyZWFrOwor IAl9CisgCisgCXJldHVybiBzdGF0dXM7CitkaWZmIC0tZ2l0IGEvY2xpZW50L1gxMS94Zl9ldmVu dC5jIGIvY2xpZW50L1gxMS94Zl9ldmVudC5jCitpbmRleCBlMTQyMWFkLi41MjRlNWUzIDEwMDY0 NAorLS0tIGEvY2xpZW50L1gxMS94Zl9ldmVudC5jCisrKysgYi9jbGllbnQvWDExL3hmX2V2ZW50 LmMKK0BAIC0zMjQsNDUgKzMyNCwzNCBAQCB2b2lkIHhmX2V2ZW50X2FkanVzdF9jb29yZGluYXRl cyh4ZkNvbnRleHQqIHhmYywgaW50KiB4LCBpbnQqIHkpCisgfQorIHN0YXRpYyBCT09MIHhmX2V2 ZW50X0V4cG9zZSh4ZkNvbnRleHQqIHhmYywgY29uc3QgWEV4cG9zZUV2ZW50KiBldmVudCwgQk9P TCBhcHApCisgeworLQlpbnQgeCwgeTsKKy0JaW50IHcsIGg7CisrCVdJTlBSX0FTU0VSVCh4ZmMp OworKwlXSU5QUl9BU1NFUlQoZXZlbnQpOworKworIAlyZHBTZXR0aW5ncyogc2V0dGluZ3MgPSB4 ZmMtPmNvbnRleHQuc2V0dGluZ3M7CisrCVdJTlBSX0FTU0VSVChzZXR0aW5ncyk7CisgCisgCWlm ICghYXBwICYmIChzZXR0aW5ncy0+U21hcnRTaXppbmcgfHwgc2V0dGluZ3MtPk11bHRpVG91Y2hH ZXN0dXJlcykpCisgCXsKKy0JCXggPSAwOworLQkJeSA9IDA7CistCQl3ID0gc2V0dGluZ3MtPkRl c2t0b3BXaWR0aDsKKy0JCWggPSBzZXR0aW5ncy0+RGVza3RvcEhlaWdodDsKKysJCXhmYy0+ZXhw b3NlZEFyZWEueCA9IDA7CisrCQl4ZmMtPmV4cG9zZWRBcmVhLnkgPSAwOworKwkJeGZjLT5leHBv c2VkQXJlYS53ID0gc2V0dGluZ3MtPkRlc2t0b3BXaWR0aDsKKysJCXhmYy0+ZXhwb3NlZEFyZWEu aCA9IHNldHRpbmdzLT5EZXNrdG9wSGVpZ2h0OworIAl9CisgCWVsc2UKKyAJeworLQkJeCA9IGV2 ZW50LT54OworLQkJeSA9IGV2ZW50LT55OworLQkJdyA9IGV2ZW50LT53aWR0aDsKKy0JCWggPSBl dmVudC0+aGVpZ2h0OworKwkJeGZjLT5leHBvc2VkQXJlYS54ID0gZXZlbnQtPng7CisrCQl4ZmMt PmV4cG9zZWRBcmVhLnkgPSBldmVudC0+eTsKKysJCXhmYy0+ZXhwb3NlZEFyZWEudyA9IGV2ZW50 LT53aWR0aDsKKysJCXhmYy0+ZXhwb3NlZEFyZWEuaCA9IGV2ZW50LT5oZWlnaHQ7CisgCX0KKyAK Ky0JaWYgKCFhcHApCistCXsKKy0JCWlmICh4ZmMtPmNvbnRleHQuZ2RpLT5nZngpCistCQl7Cist CQkJeGZfT3V0cHV0RXhwb3NlKHhmYywgeCwgeSwgdywgaCk7CistCQkJcmV0dXJuIFRSVUU7Cist CQl9CistCQl4Zl9kcmF3X3NjcmVlbih4ZmMsIHgsIHksIHcsIGgpOworLQl9CistCWVsc2UKKy0J eworLQkJeGZBcHBXaW5kb3cqIGFwcFdpbmRvdyA9IHhmX0FwcFdpbmRvd0Zyb21YMTFXaW5kb3co eGZjLCBldmVudC0+d2luZG93KTsKKy0JCWlmIChhcHBXaW5kb3cpCistCQkJeGZfVXBkYXRlV2lu ZG93QXJlYSh4ZmMsIGFwcFdpbmRvdywgeCwgeSwgdywgaCk7CistCQl4Zl9yYWlsX3JldHVybl93 aW5kb3coYXBwV2luZG93LCBGQUxTRSk7CistCX0KKysJeGZjLT5leHBvc2VkV2luZG93ID0gZXZl bnQtPndpbmRvdzsKKysJeGZjLT5leHBvc2VSZXF1ZXN0ZWQgPSBUUlVFOworIAorIAlyZXR1cm4g VFJVRTsKKyB9CisgCisrCisgc3RhdGljIEJPT0wgeGZfZXZlbnRfVmlzaWJpbGl0eU5vdGlmeSh4 ZkNvbnRleHQqIHhmYywgY29uc3QgWFZpc2liaWxpdHlFdmVudCogZXZlbnQsIEJPT0wgYXBwKQor IHsKKyAJV0lOUFJfVU5VU0VEKGFwcCk7CitAQCAtMTE4MCwzICsxMTY5LDM5IEBAIEJPT0wgeGZf ZXZlbnRfcHJvY2VzcyhmcmVlcmRwKiBpbnN0YW5jZSwgY29uc3QgWEV2ZW50KiBldmVudCkKKyAJ WFN5bmMoeGZjLT5kaXNwbGF5LCBGQUxTRSk7CisgCXJldHVybiBzdGF0dXM7CisgfQorKworK0JP T0wgeGZfZXZlbnRfdXBkYXRlX3NjcmVlbihmcmVlcmRwKiBpbnN0YW5jZSkKKyt7CisrCVdJTlBS X0FTU0VSVChpbnN0YW5jZSk7CisrCisrCXhmQ29udGV4dCogeGZjID0gKHhmQ29udGV4dCopaW5z dGFuY2UtPmNvbnRleHQ7CisrCVdJTlBSX0FTU0VSVCh4ZmMpOworKworKwlyZHBTZXR0aW5ncyog c2V0dGluZ3MgPSB4ZmMtPmNvbnRleHQuc2V0dGluZ3M7CisrCVdJTlBSX0FTU0VSVChzZXR0aW5n cyk7CisrCisrCWlmICgheGZjLT5leHBvc2VSZXF1ZXN0ZWQpCisrCQlyZXR1cm4gVFJVRTsKKysJ eGZjLT5leHBvc2VSZXF1ZXN0ZWQgPSBGQUxTRTsKKysKKysJaWYgKCF4ZmMtPnJlbW90ZV9hcHAp CisrCXsKKysJCWlmICh4ZmMtPmNvbnRleHQuZ2RpLT5nZngpCisrCQl7CisrCQkJeGZfT3V0cHV0 RXhwb3NlKHhmYywgeGZjLT5leHBvc2VkQXJlYS54LCB4ZmMtPmV4cG9zZWRBcmVhLnksCisrCQkJ ICAgICAgICAgICAgICAgIHhmYy0+ZXhwb3NlZEFyZWEudywgeGZjLT5leHBvc2VkQXJlYS5oKTsK KysJCQlyZXR1cm4gVFJVRTsKKysJCX0KKysJCXhmX2RyYXdfc2NyZWVuKHhmYywgeGZjLT5leHBv c2VkQXJlYS54LCB4ZmMtPmV4cG9zZWRBcmVhLnksIHhmYy0+ZXhwb3NlZEFyZWEudywKKysJCSAg ICAgICAgICAgICAgIHhmYy0+ZXhwb3NlZEFyZWEuaCk7CisrCX0KKysJZWxzZQorKwl7CisrCQl4 ZkFwcFdpbmRvdyogYXBwV2luZG93ID0geGZfQXBwV2luZG93RnJvbVgxMVdpbmRvdyh4ZmMsIHhm Yy0+ZXhwb3NlZFdpbmRvdyk7CisrCQlpZiAoYXBwV2luZG93KQorKwkJCXhmX1VwZGF0ZVdpbmRv d0FyZWEoeGZjLCBhcHBXaW5kb3csIHhmYy0+ZXhwb3NlZEFyZWEueCwgeGZjLT5leHBvc2VkQXJl YS55LAorKwkJCSAgICAgICAgICAgICAgICAgICAgeGZjLT5leHBvc2VkQXJlYS53LCB4ZmMtPmV4 cG9zZWRBcmVhLmgpOworKwkJeGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdywgRkFMU0Up OworKwl9CisrCXJldHVybiBUUlVFOworK30KK2RpZmYgLS1naXQgYS9jbGllbnQvWDExL3hmX2V2 ZW50LmggYi9jbGllbnQvWDExL3hmX2V2ZW50LmgKK2luZGV4IDIyNjlkM2UuLmUwMjVkMTkgMTAw NjQ0CistLS0gYS9jbGllbnQvWDExL3hmX2V2ZW50LmgKKysrKyBiL2NsaWVudC9YMTEveGZfZXZl bnQuaAorQEAgLTI5LDYgKzI5LDggQEAgQk9PTCB4Zl9ldmVudF9hY3Rpb25fc2NyaXB0X2luaXQo eGZDb250ZXh0KiB4ZmMpOworIHZvaWQgeGZfZXZlbnRfYWN0aW9uX3NjcmlwdF9mcmVlKHhmQ29u dGV4dCogeGZjKTsKKyAKKyBCT09MIHhmX2V2ZW50X3Byb2Nlc3MoZnJlZXJkcCogaW5zdGFuY2Us IGNvbnN0IFhFdmVudCogZXZlbnQpOworKworK0JPT0wgeGZfZXZlbnRfdXBkYXRlX3NjcmVlbihm cmVlcmRwKiBpbnN0YW5jZSk7Cisgdm9pZCB4Zl9ldmVudF9TZW5kQ2xpZW50RXZlbnQoeGZDb250 ZXh0KiB4ZmMsIHhmV2luZG93KiB3aW5kb3csIEF0b20gYXRvbSwgdW5zaWduZWQgaW50IG51bUFy Z3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKKyAKK2RpZmYgLS1naXQg YS9jbGllbnQvWDExL3hmcmVlcmRwLmggYi9jbGllbnQvWDExL3hmcmVlcmRwLmgKK2luZGV4IDYz NmU2MGEuLmExYTMzYjIgMTAwNjQ0CistLS0gYS9jbGllbnQvWDExL3hmcmVlcmRwLmgKKysrKyBi L2NsaWVudC9YMTEveGZyZWVyZHAuaAorQEAgLTI2MSw2ICsyNjEsMTAgQEAgc3RydWN0IHhmX2Nv bnRleHQKKyAJd0hhc2hUYWJsZSogcmFpbFdpbmRvd3M7CisgCXhmUmFpbEljb25DYWNoZSogcmFp bEljb25DYWNoZTsKKyAKKysJQk9PTCBleHBvc2VSZXF1ZXN0ZWQ7CisrCUdESV9SR04gZXhwb3Nl ZEFyZWE7CisrCVdpbmRvdyBleHBvc2VkV2luZG93OworKworIAlCT09MIHhrYkF2YWlsYWJsZTsK KyAJQk9PTCB4cmVuZGVyQXZhaWxhYmxlOworIAorLS0gCisyLjUzLjAKKwoKZGlmZiAtLWdpdCBh L2NsaWVudC14MTEtZml4LWRvdWJsZS1mcmVlLWluLWNhc2Utb2YtaW52YWxpZC1wb2ludGUucGF0 Y2ggYi9jbGllbnQteDExLWZpeC1kb3VibGUtZnJlZS1pbi1jYXNlLW9mLWludmFsaWQtcG9pbnRl LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzMDc0ZWMKLS0tIC9k ZXYvbnVsbAorKysgYi9jbGllbnQteDExLWZpeC1kb3VibGUtZnJlZS1pbi1jYXNlLW9mLWludmFs aWQtcG9pbnRlLnBhdGNoCkBAIC0wLDAgKzEsNTMgQEAKK0Zyb20gYzBlODVkOTJlNDVkZmY2Yzlh MTJlNmFmNWJlMmU5ZWQxMGI0OTkwYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9u ZHJlaiBIb2x5IDxvaG9seUByZWRoYXQuY29tPgorRGF0ZTogVGh1LCAyMiBKYW4gMjAyNiAxMjo1 MTowOCArMDEwMAorU3ViamVjdDogW1BBVENIXSBbY2xpZW50LHgxMV0gZml4IGRvdWJsZSBmcmVl IGluIGNhc2Ugb2YgaW52YWxpZCBwb2ludGVyCisKK0JhY2twb3J0IG9mIGNvbW1pdCAwNDIxYjUz ZmNiNGE4MGM5NWY1MTM0MmU0YTJjNDBjNjhhNDEwMWQzLgorCitDby1BdXRob3JlZC1CeTogQ2xh dWRlIDxub3JlcGx5QGFudGhyb3BpYy5jb20+CistLS0KKyBjbGllbnQvWDExL3hmX2dyYXBoaWNz LmMgfCAxMyArKysrKystLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwg NyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NsaWVudC9YMTEveGZfZ3JhcGhpY3MuYyBi L2NsaWVudC9YMTEveGZfZ3JhcGhpY3MuYworaW5kZXggNWFhMWZkNDhiLi5kNTk2YjIzZGEgMTAw NjQ0CistLS0gYS9jbGllbnQvWDExL3hmX2dyYXBoaWNzLmMKKysrKyBiL2NsaWVudC9YMTEveGZf Z3JhcGhpY3MuYworQEAgLTQwNiw3ICs0MDYsNiBAQCBzdGF0aWMgQk9PTCB4Zl9Qb2ludGVyX05l dyhyZHBDb250ZXh0KiBjb250ZXh0LCByZHBQb2ludGVyKiBwb2ludGVyKQorIAlCT09MIHJjID0g RkFMU0U7CisgI2lmZGVmIFdJVEhfWENVUlNPUgorIAlVSU5UMzIgQ3Vyc29yRm9ybWF0OworLQlz aXplX3Qgc2l6ZTsKKyAJeGZDb250ZXh0KiB4ZmMgPSAoeGZDb250ZXh0Kiljb250ZXh0OworIAl4 ZlBvaW50ZXIqIHhwb2ludGVyID0gKHhmUG9pbnRlciopcG9pbnRlcjsKKyAKK0BAIC00MjEsMTkg KzQyMCwxOSBAQCBzdGF0aWMgQk9PTCB4Zl9Qb2ludGVyX05ldyhyZHBDb250ZXh0KiBjb250ZXh0 LCByZHBQb2ludGVyKiBwb2ludGVyKQorIAl4cG9pbnRlci0+bkN1cnNvcnMgPSAwOworIAl4cG9p bnRlci0+bUN1cnNvcnMgPSAwOworIAorLQlzaXplID0gMXVsbCAqIHBvaW50ZXItPmhlaWdodCAq IHBvaW50ZXItPndpZHRoICogR2V0Qnl0ZXNQZXJQaXhlbChDdXJzb3JGb3JtYXQpOworKwljb25z dCBzaXplX3Qgc2l6ZSA9CisrCSAgICAxdWxsICogcG9pbnRlci0+aGVpZ2h0ICogcG9pbnRlci0+ d2lkdGggKiBHZXRCeXRlc1BlclBpeGVsKEN1cnNvckZvcm1hdCk7CisgCistCWlmICghKHhwb2lu dGVyLT5jdXJzb3JQaXhlbHMgPSAoWGN1cnNvclBpeGVsKilfYWxpZ25lZF9tYWxsb2Moc2l6ZSwg MTYpKSkKKysJeHBvaW50ZXItPmN1cnNvclBpeGVscyA9IChYY3Vyc29yUGl4ZWwqKV9hbGlnbmVk X21hbGxvYyhzaXplLCAxNik7CisrCWlmICgheHBvaW50ZXItPmN1cnNvclBpeGVscykKKyAJCWdv dG8gZmFpbDsKKyAKKyAJaWYgKCFmcmVlcmRwX2ltYWdlX2NvcHlfZnJvbV9wb2ludGVyX2RhdGEo CisgCSAgICAgICAgKEJZVEUqKXhwb2ludGVyLT5jdXJzb3JQaXhlbHMsIEN1cnNvckZvcm1hdCwg MCwgMCwgMCwgcG9pbnRlci0+d2lkdGgsIHBvaW50ZXItPmhlaWdodCwKKyAJICAgICAgICBwb2lu dGVyLT54b3JNYXNrRGF0YSwgcG9pbnRlci0+bGVuZ3RoWG9yTWFzaywgcG9pbnRlci0+YW5kTWFz a0RhdGEsCisgCSAgICAgICAgcG9pbnRlci0+bGVuZ3RoQW5kTWFzaywgcG9pbnRlci0+eG9yQnBw LCAmY29udGV4dC0+Z2RpLT5wYWxldHRlKSkKKy0JeworLQkJX2FsaWduZWRfZnJlZSh4cG9pbnRl ci0+Y3Vyc29yUGl4ZWxzKTsKKy0JCXJldHVybiBGQUxTRTsKKy0JfQorKwkJZ290byBmYWlsOwor KworIAlyYyA9IFRSVUU7CisgCisgI2VuZGlmCistLSAKKzIuNTIuMAorCgpkaWZmIC0tZ2l0IGEv Y2xpZW50LXgxMS1maXgteGZfcmFpbF93aW5kb3dfY29tbW9uLWNsZWFudXAucGF0Y2ggYi9jbGll bnQteDExLWZpeC14Zl9yYWlsX3dpbmRvd19jb21tb24tY2xlYW51cC5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTRiMTU1Ci0tLSAvZGV2L251bGwKKysrIGIvY2xp ZW50LXgxMS1maXgteGZfcmFpbF93aW5kb3dfY29tbW9uLWNsZWFudXAucGF0Y2gKQEAgLTAsMCAr MSw0NSBAQAorRnJvbSA1NjJjYzRiMzMyNTcwNzRkMWQ1MDUzNTEzODk5OGJjODE3OTZkNDQ3IE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT25kcmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5j b20+CitEYXRlOiBNb24sIDI3IEFwciAyMDI2IDE5OjAwOjAwICswMDAwCitTdWJqZWN0OiBbUEFU Q0hdIFtjbGllbnQseDExXSBmaXggeGZfcmFpbF93aW5kb3dfY29tbW9uIGNsZWFudXAKKworQmFj a3BvcnQgb2YgY29tbWl0IGI0ZjBmMGExOGZlNTNhYThkNDdkMDYyZjkxNDcxZjRlOWM1ZTBkNTEu CisKK0FkanVzdGVkIGh1bmsgb2Zmc2V0cyBmb3IgMi4xMS43LgorCitNYWRlLXdpdGg6IEN1cnNv cgorLS0tCisgY2xpZW50L1gxMS94Zl9yYWlsLmMgfCA2ICstLS0tLQorIDEgZmlsZSBjaGFuZ2Vk LCAxIGluc2VydGlvbigrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NsaWVudC9Y MTEveGZfcmFpbC5jIGIvY2xpZW50L1gxMS94Zl9yYWlsLmMKK2luZGV4IDI0MmM1NGIuLjRjNGY0 N2QgMTAwNjQ0CistLS0gYS9jbGllbnQvWDExL3hmX3JhaWwuYworKysrIGIvY2xpZW50L1gxMS94 Zl9yYWlsLmMKK0BAIC0yNjAsMTEgKzI2MCwxMCBAQCBzdGF0aWMgdm9pZCB3aW5kb3dfc3RhdGVf bG9nX3N0eWxlKHdMb2cqIGxvZywgY29uc3QgV0lORE9XX1NUQVRFX09SREVSKiB3aW5kb3dTdAor IHN0YXRpYyBCT09MIHhmX3JhaWxfd2luZG93X2NvbW1vbihyZHBDb250ZXh0KiBjb250ZXh0LCBj b25zdCBXSU5ET1dfT1JERVJfSU5GTyogb3JkZXJJbmZvLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBXSU5ET1dfU1RBVEVfT1JERVIqIHdpbmRvd1N0YXRlKQorIHsK Ky0JeGZBcHBXaW5kb3cqIGFwcFdpbmRvdyA9IE5VTEw7CisgCXhmQ29udGV4dCogeGZjID0gKHhm Q29udGV4dCopY29udGV4dDsKKyAJVUlOVDMyIGZpZWxkRmxhZ3MgPSBvcmRlckluZm8tPmZpZWxk RmxhZ3M7CisgCUJPT0wgcG9zaXRpb25fb3Jfc2l6ZV91cGRhdGVkID0gRkFMU0U7CistCWFwcFdp bmRvdyA9IHhmX3JhaWxfZ2V0X3dpbmRvdyh4ZmMsIG9yZGVySW5mby0+d2luZG93SWQpOworKwl4 ZkFwcFdpbmRvdyogYXBwV2luZG93ID0geGZfcmFpbF9nZXRfd2luZG93KHhmYywgb3JkZXJJbmZv LT53aW5kb3dJZCk7CisgCisgCWlmIChmaWVsZEZsYWdzICYgV0lORE9XX09SREVSX1NUQVRFX05F VykKKyAJeworQEAgLTMxMCwxMCArMzA5LDcgQEAgc3RhdGljIEJPT0wgeGZfcmFpbF93aW5kb3df Y29tbW9uKHJkcENvbnRleHQqIGNvbnRleHQsIGNvbnN0IFdJTkRPV19PUkRFUl9JTkZPKgorIAkJ fQorIAorIAkJaWYgKCFhcHBXaW5kb3ctPnRpdGxlKQorLQkJeworLQkJCWZyZWUoYXBwV2luZG93 KTsKKyAJCQlyZXR1cm4gRkFMU0U7CistCQl9CisgCisgCQl4Zl9BcHBXaW5kb3dJbml0KHhmYywg YXBwV2luZG93KTsKKyAJfQorLS0gCisyLjUzLjAKKwoKZGlmZiAtLWdpdCBhL2NsaWVudC14MTEt aW1wcm92ZS1yYWlscy13aW5kb3ctbG9ja2luZy5wYXRjaCBiL2NsaWVudC14MTEtaW1wcm92ZS1y YWlscy13aW5kb3ctbG9ja2luZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi4yMmRjNzYyCi0tLSAvZGV2L251bGwKKysrIGIvY2xpZW50LXgxMS1pbXByb3ZlLXJhaWxz LXdpbmRvdy1sb2NraW5nLnBhdGNoCkBAIC0wLDAgKzEsMzMxIEBACitGcm9tIGU2ZWRhYmU2OTBh ZDhkZTYzYWYzMjc0MDNlODM3MWI2ZWYxMzE5ZTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitG cm9tOiBPbmRyZWogSG9seSA8b2hvbHlAcmVkaGF0LmNvbT4KK0RhdGU6IE1vbiwgMjcgQXByIDIw MjYgMTk6Mzg6NDcgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gW2NsaWVudCx4MTFdIGltcHJvdmUg cmFpbHMgd2luZG93IGxvY2tpbmcKKworQmFja3BvcnQgb2YgY29tbWl0IDc4ZmQ3ZjU4MGQ1Zjll NmQ5ZDU4MmQ4MmU1ZWE5NjAwMzg0NGZiZGYuCisKK0FkYXB0ZWQgZm9yIDIuMTEuNzogQzg5IGRl Y2xhcmF0aW9uIHN0eWxlLCBzaW1wbGlmaWVkCitgeGZBcHBXaW5kb3dzTG9ja0Zyb21gL2BVbmxv Y2tGcm9tYCBzaWduYXR1cmVzIChubworYFdJTlBSX0FUVFJfVU5VU0VEYCksIGBYU2V0VHJhbnNp ZW50Rm9ySGludGAgaW5saW5lIGVycm9yIGhhbmRsaW5nLgorCitNYWRlLXdpdGg6IEN1cnNvcgor LS0tCisgY2xpZW50L1gxMS94Zl9ldmVudC5jICAgIHwgIDcgKystLS0tCisgY2xpZW50L1gxMS94 Zl9ncmFwaGljcy5jIHwgIDQgKy0tCisgY2xpZW50L1gxMS94Zl9yYWlsLmMgICAgIHwgNTMgKysr KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgY2xpZW50L1gxMS94Zl9yYWls LmggICAgIHwgMTAgKysrKysrLS0KKyBjbGllbnQvWDExL3hmX3dpbmRvdy5jICAgfCA1NCArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCisgY2xpZW50L1gxMS94Zl93aW5k b3cuaCAgIHwgMTEgKysrKysrLS0KKyA2IGZpbGVzIGNoYW5nZWQsIDg5IGluc2VydGlvbnMoKyks IDUwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY2xpZW50L1gxMS94Zl9ldmVudC5jIGIv Y2xpZW50L1gxMS94Zl9ldmVudC5jCitpbmRleCA4YmViY2Q0Li44ODAxZmJkIDEwMDY0NAorLS0t IGEvY2xpZW50L1gxMS94Zl9ldmVudC5jCisrKysgYi9jbGllbnQvWDExL3hmX2V2ZW50LmMKK0BA IC0zNTQsMTMgKzM1NCwxMCBAQCBzdGF0aWMgQk9PTCB4Zl9ldmVudF9FeHBvc2UoeGZDb250ZXh0 KiB4ZmMsIGNvbnN0IFhFeHBvc2VFdmVudCogZXZlbnQsIEJPT0wgYXBwKQorIAl9CisgCWVsc2UK KyAJeworLQkJeGZBcHBXaW5kb3cqIGFwcFdpbmRvdzsKKy0JCWFwcFdpbmRvdyA9IHhmX0FwcFdp bmRvd0Zyb21YMTFXaW5kb3coeGZjLCBldmVudC0+d2luZG93KTsKKy0KKysJCXhmQXBwV2luZG93 KiBhcHBXaW5kb3cgPSB4Zl9BcHBXaW5kb3dGcm9tWDExV2luZG93KHhmYywgZXZlbnQtPndpbmRv dyk7CisgCQlpZiAoYXBwV2luZG93KQorLQkJeworIAkJCXhmX1VwZGF0ZVdpbmRvd0FyZWEoeGZj LCBhcHBXaW5kb3csIHgsIHksIHcsIGgpOworLQkJfQorKwkJeGZfcmFpbF9yZXR1cm5fd2luZG93 KGFwcFdpbmRvdyk7CisgCX0KKyAKKyAJcmV0dXJuIFRSVUU7CitkaWZmIC0tZ2l0IGEvY2xpZW50 L1gxMS94Zl9ncmFwaGljcy5jIGIvY2xpZW50L1gxMS94Zl9ncmFwaGljcy5jCitpbmRleCA3MDk3 OWJkLi5mNWI0ZjNkIDEwMDY0NAorLS0tIGEvY2xpZW50L1gxMS94Zl9ncmFwaGljcy5jCisrKysg Yi9jbGllbnQvWDExL3hmX2dyYXBoaWNzLmMKK0BAIC0zNzIsMTIgKzM3MiwxMiBAQCBzdGF0aWMg V2luZG93IHhmX1BvaW50ZXJfZ2V0X3dpbmRvdyh4ZkNvbnRleHQqIHhmYykKKyAJaWYgKHhmYy0+ cmVtb3RlX2FwcCkKKyAJeworIAkJV2luZG93IHcgPSAwOworLQkJRW50ZXJDcml0aWNhbFNlY3Rp b24oJnhmYy0+cmFpbFdpbmRvd3MtPmxvY2spOworKwkJeGZfQXBwV2luZG93c0xvY2soeGZjKTsK KyAJCWlmICgheGZjLT5hcHBXaW5kb3cpCisgCQkJV0xvZ19XQVJOKFRBRywgInhmX1BvaW50ZXI6 IEludmFsaWQgYXBwV2luZG93Iik7CisgCQllbHNlCisgCQkJdyA9IHhmYy0+YXBwV2luZG93LT5o YW5kbGU7CistCQlMZWF2ZUNyaXRpY2FsU2VjdGlvbigmeGZjLT5yYWlsV2luZG93cy0+bG9jayk7 CisrCQl4Zl9BcHBXaW5kb3dzVW5sb2NrKHhmYyk7CisgCQlyZXR1cm4gdzsKKyAJfQorIAllbHNl CitkaWZmIC0tZ2l0IGEvY2xpZW50L1gxMS94Zl9yYWlsLmMgYi9jbGllbnQvWDExL3hmX3JhaWwu YworaW5kZXggMTkzOGJkZC4uMWU1NzA0NiAxMDA2NDQKKy0tLSBhL2NsaWVudC9YMTEveGZfcmFp bC5jCisrKysgYi9jbGllbnQvWDExL3hmX3JhaWwuYworQEAgLTEwMSw5ICsxMDEsMTAgQEAgdm9p ZCB4Zl9yYWlsX3NlbmRfYWN0aXZhdGUoeGZDb250ZXh0KiB4ZmMsIFdpbmRvdyB4d2luZG93LCBC T09MIGVuYWJsZWQpCisgCQl4Zl9TZXRXaW5kb3dTdHlsZSh4ZmMsIGFwcFdpbmRvdywgMCwgMCk7 CisgCisgCWFjdGl2YXRlLndpbmRvd0lkID0gYXBwV2luZG93LT53aW5kb3dJZDsKKysJeGZfcmFp bF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdyk7CisrCisgCWFjdGl2YXRlLmVuYWJsZWQgPSBlbmFi bGVkOworIAl4ZmMtPnJhaWwtPkNsaWVudEFjdGl2YXRlKHhmYy0+cmFpbCwgJmFjdGl2YXRlKTsK Ky0JeGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdyk7CisgfQorIAorIHZvaWQgeGZfcmFp bF9zZW5kX2NsaWVudF9zeXN0ZW1fY29tbWFuZCh4ZkNvbnRleHQqIHhmYywgVUlOVDMyIHdpbmRv d0lkLCBVSU5UMTYgY29tbWFuZCkKK0BAIC0yNjAsNiArMjYxLDcgQEAgdm9pZCB4Zl9yYWlsX3Bh aW50KHhmQ29udGV4dCogeGZjLCBJTlQzMiB1bGVmdCwgSU5UMzIgdXRvcCwgVUlOVDMyIHVyaWdo dCwgVUlOVDMKKyBzdGF0aWMgQk9PTCB4Zl9yYWlsX3dpbmRvd19jb21tb24ocmRwQ29udGV4dCog Y29udGV4dCwgY29uc3QgV0lORE9XX09SREVSX0lORk8qIG9yZGVySW5mbywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV0lORE9XX1NUQVRFX09SREVSKiB3aW5kb3dT dGF0ZSkKKyB7CisrCUJPT0wgcmMgPSBGQUxTRTsKKyAJeGZDb250ZXh0KiB4ZmMgPSAoeGZDb250 ZXh0Kiljb250ZXh0OworIAlVSU5UMzIgZmllbGRGbGFncyA9IG9yZGVySW5mby0+ZmllbGRGbGFn czsKKyAJQk9PTCBwb3NpdGlvbl9vcl9zaXplX3VwZGF0ZWQgPSBGQUxTRTsKK0BAIC0zNzksMTQg KzM4MSwxNCBAQCBzdGF0aWMgQk9PTCB4Zl9yYWlsX3dpbmRvd19jb21tb24ocmRwQ29udGV4dCog Y29udGV4dCwgY29uc3QgV0lORE9XX09SREVSX0lORk8qCisgCQkJaWYgKCEodGl0bGUgPSBfc3Ry ZHVwKCIiKSkpCisgCQkJeworIAkJCQlXTG9nX0VSUihUQUcsICJmYWlsZWQgdG8gZHVwbGljYXRl IGVtcHR5IHdpbmRvdyB0aXRsZSBzdHJpbmciKTsKKy0JCQkJcmV0dXJuIEZBTFNFOworKwkJCQln b3RvIGZhaWw7CisgCQkJfQorIAkJfQorIAkJZWxzZSBpZiAoQ29udmVydEZyb21Vbmljb2RlKENQ X1VURjgsIDAsIChXQ0hBUiopd2luZG93U3RhdGUtPnRpdGxlSW5mby5zdHJpbmcsCisgCQkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93U3RhdGUtPnRpdGxlSW5mby5sZW5ndGggLyAy LCAmdGl0bGUsIDAsIE5VTEwsIE5VTEwpIDwgMSkKKyAJCXsKKyAJCQlXTG9nX0VSUihUQUcsICJm YWlsZWQgdG8gY29udmVydCB3aW5kb3cgdGl0bGUiKTsKKy0JCQlyZXR1cm4gRkFMU0U7CisrCQkJ Z290byBmYWlsOworIAkJfQorIAorIAkJZnJlZShhcHBXaW5kb3ctPnRpdGxlKTsKK0BAIC00Mjcs NyArNDI5LDcgQEAgc3RhdGljIEJPT0wgeGZfcmFpbF93aW5kb3dfY29tbW9uKHJkcENvbnRleHQq IGNvbnRleHQsIGNvbnN0IFdJTkRPV19PUkRFUl9JTkZPKgorIAkJCSAgICAoUkVDVEFOR0xFXzE2 KiljYWxsb2MoYXBwV2luZG93LT5udW1XaW5kb3dSZWN0cywgc2l6ZW9mKFJFQ1RBTkdMRV8xNikp OworIAorIAkJCWlmICghYXBwV2luZG93LT53aW5kb3dSZWN0cykKKy0JCQkJcmV0dXJuIEZBTFNF OworKwkJCQlnb3RvIGZhaWw7CisgCisgCQkJQ29weU1lbW9yeShhcHBXaW5kb3ctPndpbmRvd1Jl Y3RzLCB3aW5kb3dTdGF0ZS0+d2luZG93UmVjdHMsCisgCQkJICAgICAgICAgICBhcHBXaW5kb3ct Pm51bVdpbmRvd1JlY3RzICogc2l6ZW9mKFJFQ1RBTkdMRV8xNikpOworQEAgLTQ1Niw3ICs0NTgs NyBAQCBzdGF0aWMgQk9PTCB4Zl9yYWlsX3dpbmRvd19jb21tb24ocmRwQ29udGV4dCogY29udGV4 dCwgY29uc3QgV0lORE9XX09SREVSX0lORk8qCisgCQkJICAgIChSRUNUQU5HTEVfMTYqKWNhbGxv YyhhcHBXaW5kb3ctPm51bVZpc2liaWxpdHlSZWN0cywgc2l6ZW9mKFJFQ1RBTkdMRV8xNikpOwor IAorIAkJCWlmICghYXBwV2luZG93LT52aXNpYmlsaXR5UmVjdHMpCistCQkJCXJldHVybiBGQUxT RTsKKysJCQkJZ290byBmYWlsOworIAorIAkJCUNvcHlNZW1vcnkoYXBwV2luZG93LT52aXNpYmls aXR5UmVjdHMsIHdpbmRvd1N0YXRlLT52aXNpYmlsaXR5UmVjdHMsCisgCQkJICAgICAgICAgICBh cHBXaW5kb3ctPm51bVZpc2liaWxpdHlSZWN0cyAqIHNpemVvZihSRUNUQU5HTEVfMTYpKTsKK0BA IC01MjIsNyArNTI0LDEwIEBAIHN0YXRpYyBCT09MIHhmX3JhaWxfd2luZG93X2NvbW1vbihyZHBD b250ZXh0KiBjb250ZXh0LCBjb25zdCBXSU5ET1dfT1JERVJfSU5GTyoKKyAJeworIAkgICAgeGZf U2V0V2luZG93UmVjdHMoeGZjLCBhcHBXaW5kb3csIGFwcFdpbmRvdy0+d2luZG93UmVjdHMsIGFw cFdpbmRvdy0+bnVtV2luZG93UmVjdHMpOworIAl9Ki8KKy0JcmV0dXJuIFRSVUU7CisrCXJjID0g VFJVRTsKKytmYWlsOgorKwl4Zl9yYWlsX3JldHVybl93aW5kb3coYXBwV2luZG93KTsKKysJcmV0 dXJuIHJjOworIH0KKyAKKyBzdGF0aWMgQk9PTCB4Zl9yYWlsX3dpbmRvd19kZWxldGUocmRwQ29u dGV4dCogY29udGV4dCwgY29uc3QgV0lORE9XX09SREVSX0lORk8qIG9yZGVySW5mbykKK0BAIC0x MDAwLDE0ICsxMDA1LDE0IEBAIHN0YXRpYyBVSU5UIHhmX3JhaWxfc2VydmVyX2xvY2FsX21vdmVf c2l6ZShSYWlsQ2xpZW50Q29udGV4dCogY29udGV4dCwKKyAJCQl4ID0gbG9jYWxNb3ZlU2l6ZS0+ cG9zWDsKKyAJCQl5ID0gbG9jYWxNb3ZlU2l6ZS0+cG9zWTsKKyAJCQkvKiBGSVhNRTogbG9jYWwg a2V5Ym9hcmQgbW92ZXMgbm90IHdvcmtpbmcgKi8KKy0JCQlyZXR1cm4gQ0hBTk5FTF9SQ19PSzsK KysJCQlicmVhazsKKyAKKyAJCWNhc2UgUkFJTF9XTVNaX0tFWVNJWkU6CisgCQkJZGlyZWN0aW9u ID0gX05FVF9XTV9NT1ZFUkVTSVpFX1NJWkVfS0VZQk9BUkQ7CisgCQkJeCA9IGxvY2FsTW92ZVNp emUtPnBvc1g7CisgCQkJeSA9IGxvY2FsTW92ZVNpemUtPnBvc1k7CisgCQkJLyogRklYTUU6IGxv Y2FsIGtleWJvYXJkIG1vdmVzIG5vdCB3b3JraW5nICovCistCQkJcmV0dXJuIENIQU5ORUxfUkNf T0s7CisrCQkJYnJlYWs7CisgCX0KKyAKKyAJaWYgKGxvY2FsTW92ZVNpemUtPmlzTW92ZVNpemVT dGFydCkKK0BAIC0xMTczLDkgKzExNzgsMTcgQEAgeGZBcHBXaW5kb3cqIHhmX3JhaWxfYWRkX3dp bmRvdyh4ZkNvbnRleHQqIHhmYywgVUlOVDY0IGlkLCBVSU5UMzIgeCwgVUlOVDMyIHksIFUKKyAJ YXBwV2luZG93LT55ID0geTsKKyAJYXBwV2luZG93LT53aWR0aCA9IHdpZHRoOworIAlhcHBXaW5k b3ctPmhlaWdodCA9IGhlaWdodDsKKy0JeGZfQXBwV2luZG93Q3JlYXRlKHhmYywgYXBwV2luZG93 KTsKKy0JSGFzaFRhYmxlX0FkZCh4ZmMtPnJhaWxXaW5kb3dzLCAmYXBwV2luZG93LT53aW5kb3dJ ZCwgKHZvaWQqKWFwcFdpbmRvdyk7CisrCXhmX0FwcFdpbmRvd3NMb2NrKHhmYyk7CisrCWlmICh4 Zl9BcHBXaW5kb3dDcmVhdGUoeGZjLCBhcHBXaW5kb3cpIDwgMCkKKysJCWdvdG8gZmFpbDsKKysK KysJaWYgKEhhc2hUYWJsZV9BZGQoeGZjLT5yYWlsV2luZG93cywgJmFwcFdpbmRvdy0+d2luZG93 SWQsICh2b2lkKilhcHBXaW5kb3cpIDwgMCkKKysJCWdvdG8gZmFpbDsKKyAJcmV0dXJuIGFwcFdp bmRvdzsKKytmYWlsOgorKwlmcmVlKGFwcFdpbmRvdyk7CisrCXhmX0FwcFdpbmRvd3NVbmxvY2so eGZjKTsKKysJcmV0dXJuIE5VTEw7CisgfQorIAorIEJPT0wgeGZfcmFpbF9kZWxfd2luZG93KHhm Q29udGV4dCogeGZjLCBVSU5UNjQgaWQpCitAQCAtMTE4OSwyNiArMTIwMiwxMCBAQCBCT09MIHhm X3JhaWxfZGVsX3dpbmRvdyh4ZkNvbnRleHQqIHhmYywgVUlOVDY0IGlkKQorIAlyZXR1cm4gSGFz aFRhYmxlX1JlbW92ZSh4ZmMtPnJhaWxXaW5kb3dzLCAmaWQpOworIH0KKyAKKy14ZkFwcFdpbmRv dyogeGZfcmFpbF9nZXRfd2luZG93KHhmQ29udGV4dCogeGZjLCBVSU5UNjQgaWQpCisteworLQlp ZiAoIXhmYykKKy0JCXJldHVybiBOVUxMOworLQorLQlpZiAoIXhmYy0+cmFpbFdpbmRvd3MpCist CQlyZXR1cm4gTlVMTDsKKy0KKy0JRW50ZXJDcml0aWNhbFNlY3Rpb24oJnhmYy0+cmFpbFdpbmRv d3MtPmxvY2spOworLQl4ZkFwcFdpbmRvdyogd2luZG93ID0gSGFzaFRhYmxlX0dldEl0ZW1WYWx1 ZSh4ZmMtPnJhaWxXaW5kb3dzLCAmaWQpOworLQlpZiAoIXdpbmRvdykKKy0JCUxlYXZlQ3JpdGlj YWxTZWN0aW9uKCZ4ZmMtPnJhaWxXaW5kb3dzLT5sb2NrKTsKKy0KKy0JcmV0dXJuIHdpbmRvdzsK Ky19CistCistdm9pZCB4Zl9yYWlsX3JldHVybl93aW5kb3coeGZBcHBXaW5kb3cqIHdpbmRvdykK Kyt2b2lkIHhmX3JhaWxfcmV0dXJuX3dpbmRvd0Zyb20oeGZBcHBXaW5kb3cqIHdpbmRvdywgY29u c3QgY2hhciogZmlsZSwgY29uc3QgY2hhciogZmt0LCBzaXplX3QgbGluZSkKKyB7CisgCWlmICgh d2luZG93KQorIAkJcmV0dXJuOworIAorLQlMZWF2ZUNyaXRpY2FsU2VjdGlvbigmd2luZG93LT54 ZmMtPnJhaWxXaW5kb3dzLT5sb2NrKTsKKysJeGZBcHBXaW5kb3dzVW5sb2NrRnJvbSh3aW5kb3ct PnhmYywgZmlsZSwgZmt0LCBsaW5lKTsKKyB9CitkaWZmIC0tZ2l0IGEvY2xpZW50L1gxMS94Zl9y YWlsLmggYi9jbGllbnQvWDExL3hmX3JhaWwuaAoraW5kZXggNWZiYzMxNi4uODNkNWZmZiAxMDA2 NDQKKy0tLSBhL2NsaWVudC9YMTEveGZfcmFpbC5oCisrKysgYi9jbGllbnQvWDExL3hmX3JhaWwu aAorQEAgLTM2LDkgKzM2LDE1IEBAIHZvaWQgeGZfcmFpbF9kaXNhYmxlX3JlbW90ZWFwcF9tb2Rl KHhmQ29udGV4dCogeGZjKTsKKyB4ZkFwcFdpbmRvdyogeGZfcmFpbF9hZGRfd2luZG93KHhmQ29u dGV4dCogeGZjLCBVSU5UNjQgaWQsIFVJTlQzMiB4LCBVSU5UMzIgeSwgVUlOVDMyIHdpZHRoLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUlOVDMyIGhlaWdodCwgVUlOVDMyIHN1 cmZhY2VJZCk7CisgCistdm9pZCB4Zl9yYWlsX3JldHVybl93aW5kb3coeGZBcHBXaW5kb3cqIHdp bmRvdyk7CisrI2RlZmluZSB4Zl9yYWlsX3JldHVybl93aW5kb3cod2luZG93KSBcCisrCXhmX3Jh aWxfcmV0dXJuX3dpbmRvd0Zyb20oKHdpbmRvdyksIF9fRklMRV9fLCBfX2Z1bmNfXywgX19MSU5F X18pCisrdm9pZCB4Zl9yYWlsX3JldHVybl93aW5kb3dGcm9tKHhmQXBwV2luZG93KiB3aW5kb3cs IGNvbnN0IGNoYXIqIGZpbGUsIGNvbnN0IGNoYXIqIGZrdCwgc2l6ZV90IGxpbmUpOworIAorLXhm QXBwV2luZG93KiB4Zl9yYWlsX2dldF93aW5kb3coeGZDb250ZXh0KiB4ZmMsIFVJTlQ2NCBpZCk7 CisrI2RlZmluZSB4Zl9yYWlsX2dldF93aW5kb3coeGZjLCBpZCkgXAorKwl4Zl9yYWlsX2dldF93 aW5kb3dGcm9tKCh4ZmMpLCAoaWQpLCBfX0ZJTEVfXywgX19mdW5jX18sIF9fTElORV9fKQorKwor K3hmQXBwV2luZG93KiB4Zl9yYWlsX2dldF93aW5kb3dGcm9tKHhmQ29udGV4dCogeGZjLCBVSU5U NjQgaWQsIGNvbnN0IGNoYXIqIGZpbGUsIGNvbnN0IGNoYXIqIGZrdCwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGluZSk7CisgCisgQk9PTCB4Zl9yYWlsX2Rl bF93aW5kb3coeGZDb250ZXh0KiB4ZmMsIFVJTlQ2NCBpZCk7CisgCitkaWZmIC0tZ2l0IGEvY2xp ZW50L1gxMS94Zl93aW5kb3cuYyBiL2NsaWVudC9YMTEveGZfd2luZG93LmMKK2luZGV4IDdlOTM2 ZmUuLjA5YjRhODEgMTAwNjQ0CistLS0gYS9jbGllbnQvWDExL3hmX3dpbmRvdy5jCisrKysgYi9j bGllbnQvWDExL3hmX3dpbmRvdy5jCitAQCAtMTExNiwzOSArMTExNiw3MSBAQCB2b2lkIHhmX0Rl c3Ryb3lXaW5kb3coeGZDb250ZXh0KiB4ZmMsIHhmQXBwV2luZG93KiBhcHBXaW5kb3cpCisgCWZy ZWUoYXBwV2luZG93KTsKKyB9CisgCisteGZBcHBXaW5kb3cqIHhmX0FwcFdpbmRvd0Zyb21YMTFX aW5kb3coeGZDb250ZXh0KiB4ZmMsIFdpbmRvdyB3bmQpCisrc3RhdGljIHhmQXBwV2luZG93KiBn ZXRfd2luZG93VW5sb2NrZWQoeGZDb250ZXh0KiB4ZmMsIFVJTlQ2NCBpZCkKKyt7CisrCVdJTlBS X0FTU0VSVCh4ZmMpOworKwlyZXR1cm4gSGFzaFRhYmxlX0dldEl0ZW1WYWx1ZSh4ZmMtPnJhaWxX aW5kb3dzLCAmaWQpOworK30KKysKKyt4ZkFwcFdpbmRvdyogeGZfcmFpbF9nZXRfd2luZG93RnJv bSh4ZkNvbnRleHQqIHhmYywgVUlOVDY0IGlkLCBjb25zdCBjaGFyKiBmaWxlLCBjb25zdCBjaGFy KiBma3QsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxpbmUp CisreworKwlpZiAoIXhmYykKKysJCXJldHVybiBOVUxMOworKworKwlpZiAoIXhmYy0+cmFpbFdp bmRvd3MpCisrCQlyZXR1cm4gTlVMTDsKKysKKysJeGZBcHBXaW5kb3dzTG9ja0Zyb20oeGZjLCBm aWxlLCBma3QsIGxpbmUpOworKwl4ZkFwcFdpbmRvdyogd2luZG93ID0gZ2V0X3dpbmRvd1VubG9j a2VkKHhmYywgaWQpOworKwlpZiAoIXdpbmRvdykKKysJCXhmQXBwV2luZG93c1VubG9ja0Zyb20o eGZjLCBmaWxlLCBma3QsIGxpbmUpOworKworKwlyZXR1cm4gd2luZG93OworK30KKysKKyt4ZkFw cFdpbmRvdyogeGZfQXBwV2luZG93RnJvbVgxMVdpbmRvd0Zyb20oeGZDb250ZXh0KiB4ZmMsIFdp bmRvdyB3bmQsIGNvbnN0IGNoYXIqIGZpbGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZrdCwgc2l6ZV90IGxpbmUpCisgeworLQlpbnQg aW5kZXg7CistCWludCBjb3VudDsKKyAJVUxPTkdfUFRSKiBwS2V5cyA9IE5VTEw7CistCXhmQXBw V2luZG93KiBhcHBXaW5kb3c7CisgCisgCWlmICgheGZjLT5yYWlsV2luZG93cykKKyAJCXJldHVy biBOVUxMOworIAorLQlFbnRlckNyaXRpY2FsU2VjdGlvbigmeGZjLT5yYWlsV2luZG93cy0+bG9j ayk7CistCWNvdW50ID0gSGFzaFRhYmxlX0dldEtleXMoeGZjLT5yYWlsV2luZG93cywgJnBLZXlz KTsKKysJeGZBcHBXaW5kb3dzTG9ja0Zyb20oeGZjLCBmaWxlLCBma3QsIGxpbmUpOworKwlzaXpl X3QgY291bnQgPSBIYXNoVGFibGVfR2V0S2V5cyh4ZmMtPnJhaWxXaW5kb3dzLCAmcEtleXMpOwor IAorLQlmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgaW5kZXgrKykKKysJZm9yIChzaXpl X3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyBpbmRleCsrKQorIAl7CistCQlhcHBXaW5kb3cg PSBIYXNoVGFibGVfR2V0SXRlbVZhbHVlKHhmYy0+cmFpbFdpbmRvd3MsICh2b2lkKilwS2V5c1tp bmRleF0pOworKwkJeGZBcHBXaW5kb3cqIGFwcFdpbmRvdyA9IGdldF93aW5kb3dVbmxvY2tlZCh4 ZmMsICooVUlOVDY0KilwS2V5c1tpbmRleF0pOworIAorIAkJaWYgKCFhcHBXaW5kb3cpCisgCQl7 CistCQkJTGVhdmVDcml0aWNhbFNlY3Rpb24oJnhmYy0+cmFpbFdpbmRvd3MtPmxvY2spOworKwkJ CXhmQXBwV2luZG93c1VubG9ja0Zyb20oeGZjLCBmaWxlLCBma3QsIGxpbmUpOworIAkJCWZyZWUo cEtleXMpOworIAkJCXJldHVybiBOVUxMOworIAkJfQorIAorIAkJaWYgKGFwcFdpbmRvdy0+aGFu ZGxlID09IHduZCkKKyAJCXsKKy0JCQlMZWF2ZUNyaXRpY2FsU2VjdGlvbigmeGZjLT5yYWlsV2lu ZG93cy0+bG9jayk7CisgCQkJZnJlZShwS2V5cyk7CisgCQkJcmV0dXJuIGFwcFdpbmRvdzsKKyAJ CX0KKyAJfQorIAorLQlMZWF2ZUNyaXRpY2FsU2VjdGlvbigmeGZjLT5yYWlsV2luZG93cy0+bG9j ayk7CisrCXhmQXBwV2luZG93c1VubG9ja0Zyb20oeGZjLCBmaWxlLCBma3QsIGxpbmUpOworIAlm cmVlKHBLZXlzKTsKKyAJcmV0dXJuIE5VTEw7CisgfQorKworK3ZvaWQgeGZBcHBXaW5kb3dzTG9j a0Zyb20oeGZDb250ZXh0KiB4ZmMsIGNvbnN0IGNoYXIqIGZpbGUsIGNvbnN0IGNoYXIqIGZrdCwg c2l6ZV90IGxpbmUpCisreworKwlXSU5QUl9BU1NFUlQoeGZjKTsKKysJRW50ZXJDcml0aWNhbFNl Y3Rpb24oJnhmYy0+cmFpbFdpbmRvd3MtPmxvY2spOworK30KKysKKyt2b2lkIHhmQXBwV2luZG93 c1VubG9ja0Zyb20oeGZDb250ZXh0KiB4ZmMsIGNvbnN0IGNoYXIqIGZpbGUsIGNvbnN0IGNoYXIq IGZrdCwgc2l6ZV90IGxpbmUpCisreworKwlXSU5QUl9BU1NFUlQoeGZjKTsKKysJTGVhdmVDcml0 aWNhbFNlY3Rpb24oJnhmYy0+cmFpbFdpbmRvd3MtPmxvY2spOworK30KK2RpZmYgLS1naXQgYS9j bGllbnQvWDExL3hmX3dpbmRvdy5oIGIvY2xpZW50L1gxMS94Zl93aW5kb3cuaAoraW5kZXggYzc3 MDJlZC4uNDVkNDBiYiAxMDA2NDQKKy0tLSBhL2NsaWVudC9YMTEveGZfd2luZG93LmgKKysrKyBi L2NsaWVudC9YMTEveGZfd2luZG93LmgKK0BAIC0xODcsOCArMTg3LDE1IEBAIHZvaWQgeGZfU2V0 V2luZG93TWluTWF4SW5mbyh4ZkNvbnRleHQqIHhmYywgeGZBcHBXaW5kb3cqIGFwcFdpbmRvdywg aW50IG1heFdpZHRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYXhUcmFja1dp ZHRoLCBpbnQgbWF4VHJhY2tIZWlnaHQpOworIHZvaWQgeGZfU3RhcnRMb2NhbE1vdmVTaXplKHhm Q29udGV4dCogeGZjLCB4ZkFwcFdpbmRvdyogYXBwV2luZG93LCBpbnQgZGlyZWN0aW9uLCBpbnQg eCwgaW50IHkpOworIHZvaWQgeGZfRW5kTG9jYWxNb3ZlU2l6ZSh4ZkNvbnRleHQqIHhmYywgeGZB cHBXaW5kb3cqIGFwcFdpbmRvdyk7Cistdm9pZCB4Zl9yYWlsX3JldHVybl93aW5kb3coeGZBcHBX aW5kb3cqIHdpbmRvdyk7CisrI2RlZmluZSB4Zl9BcHBXaW5kb3dGcm9tWDExV2luZG93KHhmYywg d25kKSBcCisrCXhmX0FwcFdpbmRvd0Zyb21YMTFXaW5kb3dGcm9tKCh4ZmMpLCAod25kKSwgX19G SUxFX18sIF9fZnVuY19fLCBfX0xJTkVfXykKKyt4ZkFwcFdpbmRvdyogeGZfQXBwV2luZG93RnJv bVgxMVdpbmRvd0Zyb20oeGZDb250ZXh0KiB4ZmMsIFdpbmRvdyB3bmQsIGNvbnN0IGNoYXIqIGZp bGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo YXIqIGZrdCwgc2l6ZV90IGxpbmUpOworIAorLXhmQXBwV2luZG93KiB4Zl9BcHBXaW5kb3dGcm9t WDExV2luZG93KHhmQ29udGV4dCogeGZjLCBXaW5kb3cgd25kKTsKKysjZGVmaW5lIHhmX0FwcFdp bmRvd3NMb2NrKHhmYykgeGZBcHBXaW5kb3dzTG9ja0Zyb20oKHhmYyksIF9fRklMRV9fLCBfX2Z1 bmNfXywgX19MSU5FX18pCisrdm9pZCB4ZkFwcFdpbmRvd3NMb2NrRnJvbSh4ZkNvbnRleHQqIHhm YywgY29uc3QgY2hhciogZmlsZSwgY29uc3QgY2hhciogZmt0LCBzaXplX3QgbGluZSk7CisrCisr I2RlZmluZSB4Zl9BcHBXaW5kb3dzVW5sb2NrKHhmYykgeGZBcHBXaW5kb3dzVW5sb2NrRnJvbSgo eGZjKSwgX19GSUxFX18sIF9fZnVuY19fLCBfX0xJTkVfXykKKyt2b2lkIHhmQXBwV2luZG93c1Vu bG9ja0Zyb20oeGZDb250ZXh0KiB4ZmMsIGNvbnN0IGNoYXIqIGZpbGUsIGNvbnN0IGNoYXIqIGZr dCwgc2l6ZV90IGxpbmUpOworIAorICNlbmRpZiAvKiBGUkVFUkRQX0NMSUVOVF9YMTFfV0lORE9X X0ggKi8KKy0tIAorMi41My4wCisKCmRpZmYgLS1naXQgYS9jbGllbnQteDExLWxvY2stYXBwd2lu ZG93LnBhdGNoIGIvY2xpZW50LXgxMS1sb2NrLWFwcHdpbmRvdy5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDk4OGEzCi0tLSAvZGV2L251bGwKKysrIGIvY2xpZW50 LXgxMS1sb2NrLWFwcHdpbmRvdy5wYXRjaApAQCAtMCwwICsxLDQwNCBAQAorRnJvbSA4MTUyYzM0 N2U5NmMxZTNhZjE1Y2IyNTUxZDRlZmI2NzQwZmU5Zjg3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQorRnJvbTogT25kcmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5jb20+CitEYXRlOiBNb24sIDI3IEFw ciAyMDI2IDE5OjM3OjQwICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIFtjbGllbnQseDExXSBsb2Nr IGFwcFdpbmRvdworCitCYWNrcG9ydCBvZiBjb21taXQgMTk5NGU5ODQ0MjEyYTZkZmUwZmYxMjMw OWZlZjUyMGU4ODg5ODZiNS4KKworQWRhcHRlZCBmb3IgMi4xMS43OiBDODkgZGVjbGFyYXRpb24g c3R5bGUsIGAoQXRvbSlgIGNhc3QgZm9yCitgeGZjLT5fTkVUX1dNX1NUQVRFYCBjb21wYXJpc29u LCBgeGZfcmFpbF9zZW5kX2NsaWVudF9zeXN0ZW1fY29tbWFuZGAKK3JldHVybiB2YWx1ZSBoYW5k bGluZyBhZGFwdGVkIChubyBkaXJlY3QgcmV0dXJuKSwgYEhhc2hUYWJsZV9HZXRLZXlzYAordmFy aWFibGUgcHJlLWRlY2xhcmVkLCBgeGZfQXBwV2luZG93RnJvbVgxMVdpbmRvd2AgbG9vcCBhZGFw dGVkLgorCitNYWRlLXdpdGg6IEN1cnNvcgorLS0tCisgY2xpZW50L1gxMS94Zl9ldmVudC5jICAg IHwgNDYgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCisgY2xpZW50L1gxMS94Zl9ncmFwaGlj cy5jIHwgMTAgKysrLS0tCisgY2xpZW50L1gxMS94Zl9yYWlsLmMgICAgIHwgNjggKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQorIGNsaWVudC9YMTEveGZfcmFpbC5oICAg ICB8ICAzICsrCisgY2xpZW50L1gxMS94Zl93aW5kb3cuYyAgIHwgMTMgKysrKysrKy0KKyBjbGll bnQvWDExL3hmX3dpbmRvdy5oICAgfCAgMiArKworIDYgZmlsZXMgY2hhbmdlZCwgOTQgaW5zZXJ0 aW9ucygrKSwgNDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jbGllbnQvWDExL3hmX2V2 ZW50LmMgYi9jbGllbnQvWDExL3hmX2V2ZW50LmMKK2luZGV4IGViNTBlZjEuLjhiZWJjZDQgMTAw NjQ0CistLS0gYS9jbGllbnQvWDExL3hmX2V2ZW50LmMKKysrKyBiL2NsaWVudC9YMTEveGZfZXZl bnQuYworQEAgLTM4OCw3ICszODgsOSBAQCBCT09MIHhmX2dlbmVyaWNfTW90aW9uTm90aWZ5KHhm Q29udGV4dCogeGZjLCBpbnQgeCwgaW50IHksIGludCBzdGF0ZSwgV2luZG93IHdpbgorIAlpZiAo YXBwKQorIAl7CisgCQkvKiBtYWtlIHN1cmUgd2luZG93IGV4aXN0cyAqLworLQkJaWYgKCF4Zl9B cHBXaW5kb3dGcm9tWDExV2luZG93KHhmYywgd2luZG93KSkKKysJCXhmQXBwV2luZG93KiBhcHBX aW5kb3cgPSB4Zl9BcHBXaW5kb3dGcm9tWDExV2luZG93KHhmYywgd2luZG93KTsKKysJCXhmX3Jh aWxfcmV0dXJuX3dpbmRvdyhhcHBXaW5kb3cpOworKwkJaWYgKCFhcHBXaW5kb3cpCisgCQkJcmV0 dXJuIFRSVUU7CisgCisgCQkvKiBUcmFuc2xhdGUgdG8gZGVza3RvcCBjb29yZGluYXRlcyAqLwor QEAgLTQ2NSw3ICs0NjcsOSBAQCBCT09MIHhmX2dlbmVyaWNfQnV0dG9uRXZlbnQoeGZDb250ZXh0 KiB4ZmMsIGludCB4LCBpbnQgeSwgaW50IGJ1dHRvbiwgV2luZG93IHdpbgorIAkJCWlmIChhcHAp CisgCQkJeworIAkJCQkvKiBtYWtlIHN1cmUgd2luZG93IGV4aXN0cyAqLworLQkJCQlpZiAoIXhm X0FwcFdpbmRvd0Zyb21YMTFXaW5kb3coeGZjLCB3aW5kb3cpKQorKwkJCQl4ZkFwcFdpbmRvdyog YXBwV2luZG93ID0geGZfQXBwV2luZG93RnJvbVgxMVdpbmRvdyh4ZmMsIHdpbmRvdyk7CisrCQkJ CXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhhcHBXaW5kb3cpOworKwkJCQlpZiAoIWFwcFdpbmRvdykK KyAJCQkJCXJldHVybiBUUlVFOworIAorIAkJCQkvKiBUcmFuc2xhdGUgdG8gZGVza3RvcCBjb29y ZGluYXRlcyAqLworQEAgLTU3NCw5ICs1NzgsOCBAQCBzdGF0aWMgQk9PTCB4Zl9ldmVudF9Gb2N1 c0luKHhmQ29udGV4dCogeGZjLCBjb25zdCBYRm9jdXNJbkV2ZW50KiBldmVudCwgQk9PTCBhcAor IAkJLyogVXBkYXRlIHRoZSBzZXJ2ZXIgd2l0aCBhbnkgd2luZG93IGNoYW5nZXMgdGhhdCBvY2N1 cnJlZCB3aGlsZSB0aGUgd2luZG93IHdhcyBub3QgZm9jdXNlZC4KKyAJCSAqLworIAkJaWYgKGFw cFdpbmRvdykKKy0JCXsKKyAJCQl4Zl9yYWlsX2FkanVzdF9wb3NpdGlvbih4ZmMsIGFwcFdpbmRv dyk7CistCQl9CisrCQl4Zl9yYWlsX3JldHVybl93aW5kb3coYXBwV2luZG93KTsKKyAJfQorIAor IAl4Zl9rZXlib2FyZF9mb2N1c19pbih4ZmMpOworQEAgLTYyMywxNSArNjI2LDEzIEBAIHN0YXRp YyBCT09MIHhmX2V2ZW50X0NsaWVudE1lc3NhZ2UoeGZDb250ZXh0KiB4ZmMsIGNvbnN0IFhDbGll bnRNZXNzYWdlRXZlbnQqIGV2CisgCXsKKyAJCWlmIChhcHApCisgCQl7CistCQkJeGZBcHBXaW5k b3cqIGFwcFdpbmRvdzsKKy0JCQlhcHBXaW5kb3cgPSB4Zl9BcHBXaW5kb3dGcm9tWDExV2luZG93 KHhmYywgZXZlbnQtPndpbmRvdyk7CisrCQkJQk9PTCByYyA9IFRSVUU7CisrCQkJeGZBcHBXaW5k b3cqIGFwcFdpbmRvdyA9IHhmX0FwcFdpbmRvd0Zyb21YMTFXaW5kb3coeGZjLCBldmVudC0+d2lu ZG93KTsKKyAKKyAJCQlpZiAoYXBwV2luZG93KQorLQkJCXsKKyAJCQkJeGZfcmFpbF9zZW5kX2Ns aWVudF9zeXN0ZW1fY29tbWFuZCh4ZmMsIGFwcFdpbmRvdy0+d2luZG93SWQsIFNDX0NMT1NFKTsK Ky0JCQl9CistCistCQkJcmV0dXJuIFRSVUU7CisrCQkJeGZfcmFpbF9yZXR1cm5fd2luZG93KGFw cFdpbmRvdyk7CisrCQkJcmV0dXJuIHJjOworIAkJfQorIAkJZWxzZQorIAkJeworQEAgLTY2NSw2 ICs2NjYsNyBAQCBzdGF0aWMgQk9PTCB4Zl9ldmVudF9FbnRlck5vdGlmeSh4ZkNvbnRleHQqIHhm YywgY29uc3QgWEVudGVyV2luZG93RXZlbnQqIGV2ZW50LAorIAorIAkJLyoga2VlcCB0cmFjayBv ZiB3aGljaCB3aW5kb3cgaGFzIGZvY3VzIHNvIHRoYXQgd2UgY2FuIGFwcGx5IHBvaW50ZXIgdXBk YXRlcyAqLworIAkJeGZjLT5hcHBXaW5kb3cgPSBhcHBXaW5kb3c7CisrCQl4Zl9yYWlsX3JldHVy bl93aW5kb3coYXBwV2luZG93KTsKKyAJfQorIAorIAlyZXR1cm4gVFJVRTsKK0BAIC02ODQsNiAr Njg2LDcgQEAgc3RhdGljIEJPT0wgeGZfZXZlbnRfTGVhdmVOb3RpZnkoeGZDb250ZXh0KiB4ZmMs IGNvbnN0IFhMZWF2ZVdpbmRvd0V2ZW50KiBldmVudCwKKyAJCS8qIGtlZXAgdHJhY2sgb2Ygd2hp Y2ggd2luZG93IGhhcyBmb2N1cyBzbyB0aGF0IHdlIGNhbiBhcHBseSBwb2ludGVyIHVwZGF0ZXMg Ki8KKyAJCWlmICh4ZmMtPmFwcFdpbmRvdyA9PSBhcHBXaW5kb3cpCisgCQkJeGZjLT5hcHBXaW5k b3cgPSBOVUxMOworKwkJeGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdyk7CisgCX0KKyAJ cmV0dXJuIFRSVUU7CisgfQorQEAgLTc3NCw2ICs3NzcsNyBAQCBzdGF0aWMgQk9PTCB4Zl9ldmVu dF9Db25maWd1cmVOb3RpZnkoeGZDb250ZXh0KiB4ZmMsIGNvbnN0IFhDb25maWd1cmVFdmVudCog ZXZlbgorIAkJCQkJeGZfcmFpbF9hZGp1c3RfcG9zaXRpb24oeGZjLCBhcHBXaW5kb3cpOworIAkJ CX0KKyAJCX0KKysJCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhhcHBXaW5kb3cpOworIAl9CisgCXJl dHVybiB4Zl9wb2ludGVyX3VwZGF0ZV9zY2FsZSh4ZmMpOworIH0KK0BAIC03OTgsNiArODAyLDcg QEAgc3RhdGljIEJPT0wgeGZfZXZlbnRfTWFwTm90aWZ5KHhmQ29udGV4dCogeGZjLCBjb25zdCBY TWFwRXZlbnQqIGV2ZW50LCBCT09MIGFwcCkKKyAJCQkvLyB4Zl9yYWlsX3NlbmRfY2xpZW50X3N5 c3RlbV9jb21tYW5kKHhmYywgYXBwV2luZG93LT53aW5kb3dJZCwgU0NfUkVTVE9SRSk7CisgCQkJ YXBwV2luZG93LT5pc19tYXBwZWQgPSBUUlVFOworIAkJfQorKwkJeGZfcmFpbF9yZXR1cm5fd2lu ZG93KGFwcFdpbmRvdyk7CisgCX0KKyAKKyAJcmV0dXJuIFRSVUU7CitAQCAtODEzLDE1ICs4MTgs MTQgQEAgc3RhdGljIEJPT0wgeGZfZXZlbnRfVW5tYXBOb3RpZnkoeGZDb250ZXh0KiB4ZmMsIGNv bnN0IFhVbm1hcEV2ZW50KiBldmVudCwgQk9PTAorIAl4Zl9rZXlib2FyZF9yZWxlYXNlX2FsbF9r ZXlwcmVzcyh4ZmMpOworIAorIAlpZiAoIWFwcCkKKy0JCWdkaV9zZW5kX3N1cHByZXNzX291dHB1 dCh4ZmMtPmNvbnRleHQuZ2RpLCBUUlVFKTsKKy0JZWxzZQorKwkJcmV0dXJuIGdkaV9zZW5kX3N1 cHByZXNzX291dHB1dCh4ZmMtPmNvbnRleHQuZ2RpLCBUUlVFKTsKKysKKyAJeworIAkJYXBwV2lu ZG93ID0geGZfQXBwV2luZG93RnJvbVgxMVdpbmRvdyh4ZmMsIGV2ZW50LT53aW5kb3cpOworIAor IAkJaWYgKGFwcFdpbmRvdykKKy0JCXsKKyAJCQlhcHBXaW5kb3ctPmlzX21hcHBlZCA9IEZBTFNF OworLQkJfQorKwkJeGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdyk7CisgCX0KKyAKKyAJ cmV0dXJuIFRSVUU7CitAQCAtODI5LDYgKzgzMyw3IEBAIHN0YXRpYyBCT09MIHhmX2V2ZW50X1Vu bWFwTm90aWZ5KHhmQ29udGV4dCogeGZjLCBjb25zdCBYVW5tYXBFdmVudCogZXZlbnQsIEJPT0wK KyAKKyBzdGF0aWMgQk9PTCB4Zl9ldmVudF9Qcm9wZXJ0eU5vdGlmeSh4ZkNvbnRleHQqIHhmYywg Y29uc3QgWFByb3BlcnR5RXZlbnQqIGV2ZW50LCBCT09MIGFwcCkKKyB7CisrCUJPT0wgcmMgPSBU UlVFOworIAlXSU5QUl9BU1NFUlQoeGZjKTsKKyAJV0lOUFJfQVNTRVJUKGV2ZW50KTsKKyAKK0BA IC04NTYsNyArODYxLDcgQEAgc3RhdGljIEJPT0wgeGZfZXZlbnRfUHJvcGVydHlOb3RpZnkoeGZD b250ZXh0KiB4ZmMsIGNvbnN0IFhQcm9wZXJ0eUV2ZW50KiBldmVudCwKKyAJCQlhcHBXaW5kb3cg PSB4Zl9BcHBXaW5kb3dGcm9tWDExV2luZG93KHhmYywgZXZlbnQtPndpbmRvdyk7CisgCisgCQkJ aWYgKCFhcHBXaW5kb3cpCistCQkJCXJldHVybiBUUlVFOworKwkJCQlnb3RvIGZhaWw7CisgCQl9 CisgCisgCQlpZiAoKEF0b20pZXZlbnQtPmF0b20gPT0geGZjLT5fTkVUX1dNX1NUQVRFKQorQEAg LTk0OSwxMCArOTU0LDEzIEBAIHN0YXRpYyBCT09MIHhmX2V2ZW50X1Byb3BlcnR5Tm90aWZ5KHhm Q29udGV4dCogeGZjLCBjb25zdCBYUHJvcGVydHlFdmVudCogZXZlbnQsCisgCQkJfQorIAkJfQor IAkJZWxzZSBpZiAobWluaW1pemVkQ2hhbmdlZCkKKy0JCQlnZGlfc2VuZF9zdXBwcmVzc19vdXRw dXQoeGZjLT5jb250ZXh0LmdkaSwgbWluaW1pemVkKTsKKysJCQlyYyA9IGdkaV9zZW5kX3N1cHBy ZXNzX291dHB1dCh4ZmMtPmNvbnRleHQuZ2RpLCBtaW5pbWl6ZWQpOworKworKwlmYWlsOgorKwkJ eGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdyk7CisgCX0KKyAKKy0JcmV0dXJuIFRSVUU7 CisrCXJldHVybiByYzsKKyB9CisgCisgc3RhdGljIEJPT0wgeGZfZXZlbnRfc3VwcHJlc3NfZXZl bnRzKHhmQ29udGV4dCogeGZjLCB4ZkFwcFdpbmRvdyogYXBwV2luZG93LCBjb25zdCBYRXZlbnQq IGV2ZW50KQorQEAgLTEwNjAsNyArMTA2OCw5IEBAIEJPT0wgeGZfZXZlbnRfcHJvY2VzcyhmcmVl cmRwKiBpbnN0YW5jZSwgY29uc3QgWEV2ZW50KiBldmVudCkKKyAJCQkvKiBVcGRhdGUgImN1cnJl bnQiIHdpbmRvdyBmb3IgY3Vyc29yIGNoYW5nZSBvcmRlcnMgKi8KKyAJCQl4ZmMtPmFwcFdpbmRv dyA9IGFwcFdpbmRvdzsKKyAKKy0JCQlpZiAoeGZfZXZlbnRfc3VwcHJlc3NfZXZlbnRzKHhmYywg YXBwV2luZG93LCBldmVudCkpCisrCQkJQk9PTCBzdXBwcmVzcyA9IHhmX2V2ZW50X3N1cHByZXNz X2V2ZW50cyh4ZmMsIGFwcFdpbmRvdywgZXZlbnQpOworKwkJCXhmX3JhaWxfcmV0dXJuX3dpbmRv dyhhcHBXaW5kb3cpOworKwkJCWlmIChzdXBwcmVzcykKKyAJCQkJcmV0dXJuIFRSVUU7CisgCQl9 CisgCX0KK2RpZmYgLS1naXQgYS9jbGllbnQvWDExL3hmX2dyYXBoaWNzLmMgYi9jbGllbnQvWDEx L3hmX2dyYXBoaWNzLmMKK2luZGV4IGQ1OTZiMjMuLjcwOTc5YmQgMTAwNjQ0CistLS0gYS9jbGll bnQvWDExL3hmX2dyYXBoaWNzLmMKKysrKyBiL2NsaWVudC9YMTEveGZfZ3JhcGhpY3MuYworQEAg LTM3MSwxMiArMzcxLDE0IEBAIHN0YXRpYyBXaW5kb3cgeGZfUG9pbnRlcl9nZXRfd2luZG93KHhm Q29udGV4dCogeGZjKQorIAl9CisgCWlmICh4ZmMtPnJlbW90ZV9hcHApCisgCXsKKysJCVdpbmRv dyB3ID0gMDsKKysJCUVudGVyQ3JpdGljYWxTZWN0aW9uKCZ4ZmMtPnJhaWxXaW5kb3dzLT5sb2Nr KTsKKyAJCWlmICgheGZjLT5hcHBXaW5kb3cpCistCQl7CisgCQkJV0xvZ19XQVJOKFRBRywgInhm X1BvaW50ZXI6IEludmFsaWQgYXBwV2luZG93Iik7CistCQkJcmV0dXJuIDA7CistCQl9CistCQly ZXR1cm4geGZjLT5hcHBXaW5kb3ctPmhhbmRsZTsKKysJCWVsc2UKKysJCQl3ID0geGZjLT5hcHBX aW5kb3ctPmhhbmRsZTsKKysJCUxlYXZlQ3JpdGljYWxTZWN0aW9uKCZ4ZmMtPnJhaWxXaW5kb3dz LT5sb2NrKTsKKysJCXJldHVybiB3OworIAl9CisgCWVsc2UKKyAJeworZGlmZiAtLWdpdCBhL2Ns aWVudC9YMTEveGZfcmFpbC5jIGIvY2xpZW50L1gxMS94Zl9yYWlsLmMKK2luZGV4IGZkYzIyNDQu LjE5MzhiZGQgMTAwNjQ0CistLS0gYS9jbGllbnQvWDExL3hmX3JhaWwuYworKysrIGIvY2xpZW50 L1gxMS94Zl9yYWlsLmMKK0BAIC0xMDMsNiArMTAzLDcgQEAgdm9pZCB4Zl9yYWlsX3NlbmRfYWN0 aXZhdGUoeGZDb250ZXh0KiB4ZmMsIFdpbmRvdyB4d2luZG93LCBCT09MIGVuYWJsZWQpCisgCWFj dGl2YXRlLndpbmRvd0lkID0gYXBwV2luZG93LT53aW5kb3dJZDsKKyAJYWN0aXZhdGUuZW5hYmxl ZCA9IGVuYWJsZWQ7CisgCXhmYy0+cmFpbC0+Q2xpZW50QWN0aXZhdGUoeGZjLT5yYWlsLCAmYWN0 aXZhdGUpOworKwl4Zl9yYWlsX3JldHVybl93aW5kb3coYXBwV2luZG93KTsKKyB9CisgCisgdm9p ZCB4Zl9yYWlsX3NlbmRfY2xpZW50X3N5c3RlbV9jb21tYW5kKHhmQ29udGV4dCogeGZjLCBVSU5U MzIgd2luZG93SWQsIFVJTlQxNiBjb21tYW5kKQorQEAgLTY1OCw2MSArNjU5LDYzIEBAIHN0YXRp YyB2b2lkIHhmX3JhaWxfc2V0X3dpbmRvd19pY29uKHhmQ29udGV4dCogeGZjLCB4ZkFwcFdpbmRv dyogcmFpbFdpbmRvdywgeGZSCisgc3RhdGljIEJPT0wgeGZfcmFpbF93aW5kb3dfaWNvbihyZHBD b250ZXh0KiBjb250ZXh0LCBjb25zdCBXSU5ET1dfT1JERVJfSU5GTyogb3JkZXJJbmZvLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV0lORE9XX0lDT05fT1JERVIqIHdp bmRvd0ljb24pCisgeworKwlCT09MIHJjID0gRkFMU0U7CisgCXhmQ29udGV4dCogeGZjID0gKHhm Q29udGV4dCopY29udGV4dDsKKy0JeGZBcHBXaW5kb3cqIHJhaWxXaW5kb3c7CistCXhmUmFpbElj b24qIGljb247CistCUJPT0wgcmVwbGFjZUljb247CistCXJhaWxXaW5kb3cgPSB4Zl9yYWlsX2dl dF93aW5kb3coeGZjLCBvcmRlckluZm8tPndpbmRvd0lkKTsKKysJQk9PTCByZXBsYWNlSWNvbiA9 IDA7CisrCXhmQXBwV2luZG93KiByYWlsV2luZG93ID0geGZfcmFpbF9nZXRfd2luZG93KHhmYywg b3JkZXJJbmZvLT53aW5kb3dJZCk7CisgCisgCWlmICghcmFpbFdpbmRvdykKKyAJCXJldHVybiBU UlVFOworIAorLQlpY29uID0gUmFpbEljb25DYWNoZV9Mb29rdXAoeGZjLT5yYWlsSWNvbkNhY2hl LCB3aW5kb3dJY29uLT5pY29uSW5mby0+Y2FjaGVJZCwKKysJeGZSYWlsSWNvbiogaWNvbiA9IFJh aWxJY29uQ2FjaGVfTG9va3VwKHhmYy0+cmFpbEljb25DYWNoZSwgd2luZG93SWNvbi0+aWNvbklu Zm8tPmNhY2hlSWQsCisgCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dJY29uLT5p Y29uSW5mby0+Y2FjaGVFbnRyeSk7CisgCisgCWlmICghaWNvbikKKyAJeworIAkJV0xvZ19XQVJO KFRBRywgImZhaWxlZCB0byBnZXQgaWNvbiBmcm9tIGNhY2hlICUwMlg6JTA0WCIsIHdpbmRvd0lj b24tPmljb25JbmZvLT5jYWNoZUlkLAorIAkJICAgICAgICAgIHdpbmRvd0ljb24tPmljb25JbmZv LT5jYWNoZUVudHJ5KTsKKy0JCXJldHVybiBGQUxTRTsKKyAJfQorLQorLQlpZiAoIWNvbnZlcnRf cmFpbF9pY29uKHdpbmRvd0ljb24tPmljb25JbmZvLCBpY29uKSkKKysJZWxzZSBpZiAoIWNvbnZl cnRfcmFpbF9pY29uKHdpbmRvd0ljb24tPmljb25JbmZvLCBpY29uKSkKKyAJeworIAkJV0xvZ19X QVJOKFRBRywgImZhaWxlZCB0byBjb252ZXJ0IGljb24gZm9yIHdpbmRvdyAlMDhYIiwgb3JkZXJJ bmZvLT53aW5kb3dJZCk7CistCQlyZXR1cm4gRkFMU0U7CisgCX0KKy0KKy0JcmVwbGFjZUljb24g PSAhIShvcmRlckluZm8tPmZpZWxkRmxhZ3MgJiBXSU5ET1dfT1JERVJfU1RBVEVfTkVXKTsKKy0J eGZfcmFpbF9zZXRfd2luZG93X2ljb24oeGZjLCByYWlsV2luZG93LCBpY29uLCByZXBsYWNlSWNv bik7CistCXJldHVybiBUUlVFOworKwllbHNlCisrCXsKKysJCXJlcGxhY2VJY29uID0gISEob3Jk ZXJJbmZvLT5maWVsZEZsYWdzICYgV0lORE9XX09SREVSX1NUQVRFX05FVyk7CisrCQl4Zl9yYWls X3NldF93aW5kb3dfaWNvbih4ZmMsIHJhaWxXaW5kb3csIGljb24sIHJlcGxhY2VJY29uKTsKKysJ CXJjID0gVFJVRTsKKysJfQorKwl4Zl9yYWlsX3JldHVybl93aW5kb3cocmFpbFdpbmRvdyk7Cisr CXJldHVybiByYzsKKyB9CisgCisgc3RhdGljIEJPT0wgeGZfcmFpbF93aW5kb3dfY2FjaGVkX2lj b24ocmRwQ29udGV4dCogY29udGV4dCwgY29uc3QgV0lORE9XX09SREVSX0lORk8qIG9yZGVySW5m bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXSU5ET1df Q0FDSEVEX0lDT05fT1JERVIqIHdpbmRvd0NhY2hlZEljb24pCisgeworKwlCT09MIHJjID0gRkFM U0U7CisgCXhmQ29udGV4dCogeGZjID0gKHhmQ29udGV4dCopY29udGV4dDsKKy0JeGZBcHBXaW5k b3cqIHJhaWxXaW5kb3c7CistCXhmUmFpbEljb24qIGljb247CistCUJPT0wgcmVwbGFjZUljb247 CistCXJhaWxXaW5kb3cgPSB4Zl9yYWlsX2dldF93aW5kb3coeGZjLCBvcmRlckluZm8tPndpbmRv d0lkKTsKKysJQk9PTCByZXBsYWNlSWNvbiA9IDA7CisrCXhmQXBwV2luZG93KiByYWlsV2luZG93 ID0geGZfcmFpbF9nZXRfd2luZG93KHhmYywgb3JkZXJJbmZvLT53aW5kb3dJZCk7CisgCisgCWlm ICghcmFpbFdpbmRvdykKKyAJCXJldHVybiBUUlVFOworIAorLQlpY29uID0gUmFpbEljb25DYWNo ZV9Mb29rdXAoeGZjLT5yYWlsSWNvbkNhY2hlLCB3aW5kb3dDYWNoZWRJY29uLT5jYWNoZWRJY29u LmNhY2hlSWQsCisrCXhmUmFpbEljb24qIGljb24gPSBSYWlsSWNvbkNhY2hlX0xvb2t1cCh4ZmMt PnJhaWxJY29uQ2FjaGUsIHdpbmRvd0NhY2hlZEljb24tPmNhY2hlZEljb24uY2FjaGVJZCwKKyAJ ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd0NhY2hlZEljb24tPmNhY2hlZEljb24u Y2FjaGVFbnRyeSk7CisgCisgCWlmICghaWNvbikKKyAJeworIAkJV0xvZ19XQVJOKFRBRywgImZh aWxlZCB0byBnZXQgaWNvbiBmcm9tIGNhY2hlICUwMlg6JTA0WCIsCisgCQkgICAgICAgICAgd2lu ZG93Q2FjaGVkSWNvbi0+Y2FjaGVkSWNvbi5jYWNoZUlkLCB3aW5kb3dDYWNoZWRJY29uLT5jYWNo ZWRJY29uLmNhY2hlRW50cnkpOworLQkJcmV0dXJuIEZBTFNFOworIAl9CistCistCXJlcGxhY2VJ Y29uID0gISEob3JkZXJJbmZvLT5maWVsZEZsYWdzICYgV0lORE9XX09SREVSX1NUQVRFX05FVyk7 CistCXhmX3JhaWxfc2V0X3dpbmRvd19pY29uKHhmYywgcmFpbFdpbmRvdywgaWNvbiwgcmVwbGFj ZUljb24pOworLQlyZXR1cm4gVFJVRTsKKysJZWxzZQorKwl7CisrCQlyZXBsYWNlSWNvbiA9ICEh KG9yZGVySW5mby0+ZmllbGRGbGFncyAmIFdJTkRPV19PUkRFUl9TVEFURV9ORVcpOworKwkJeGZf cmFpbF9zZXRfd2luZG93X2ljb24oeGZjLCByYWlsV2luZG93LCBpY29uLCByZXBsYWNlSWNvbik7 CisrCQlyYyA9IFRSVUU7CisrCX0KKysJeGZfcmFpbF9yZXR1cm5fd2luZG93KHJhaWxXaW5kb3cp OworKwlyZXR1cm4gcmM7CisgfQorIAorIHN0YXRpYyBCT09MIHhmX3JhaWxfbm90aWZ5X2ljb25f Y29tbW9uKHJkcENvbnRleHQqIGNvbnRleHQsIGNvbnN0IFdJTkRPV19PUkRFUl9JTkZPKiBvcmRl ckluZm8sCitAQCAtMTAxMiw2ICsxMDE1LDcgQEAgc3RhdGljIFVJTlQgeGZfcmFpbF9zZXJ2ZXJf bG9jYWxfbW92ZV9zaXplKFJhaWxDbGllbnRDb250ZXh0KiBjb250ZXh0LAorIAllbHNlCisgCQl4 Zl9FbmRMb2NhbE1vdmVTaXplKHhmYywgYXBwV2luZG93KTsKKyAKKysJeGZfcmFpbF9yZXR1cm5f d2luZG93KGFwcFdpbmRvdyk7CisgCXJldHVybiBDSEFOTkVMX1JDX09LOworIH0KKyAKK0BAIC0x MDMzLDYgKzEwMzcsNyBAQCBzdGF0aWMgVUlOVCB4Zl9yYWlsX3NlcnZlcl9taW5fbWF4X2luZm8o UmFpbENsaWVudENvbnRleHQqIGNvbnRleHQsCisgCQkgICAgICAgICAgICAgICAgICAgICAgIG1p bk1heEluZm8tPm1pblRyYWNrSGVpZ2h0LCBtaW5NYXhJbmZvLT5tYXhUcmFja1dpZHRoLAorIAkJ ICAgICAgICAgICAgICAgICAgICAgICBtaW5NYXhJbmZvLT5tYXhUcmFja0hlaWdodCk7CisgCX0K KysJeGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdyk7CisgCisgCXJldHVybiBDSEFOTkVM X1JDX09LOworIH0KK0BAIC0xMTkwLDcgKzExOTUsMjAgQEAgeGZBcHBXaW5kb3cqIHhmX3JhaWxf Z2V0X3dpbmRvdyh4ZkNvbnRleHQqIHhmYywgVUlOVDY0IGlkKQorIAkJcmV0dXJuIE5VTEw7Cisg CisgCWlmICgheGZjLT5yYWlsV2luZG93cykKKy0JCXJldHVybiBGQUxTRTsKKysJCXJldHVybiBO VUxMOworKworKwlFbnRlckNyaXRpY2FsU2VjdGlvbigmeGZjLT5yYWlsV2luZG93cy0+bG9jayk7 CisrCXhmQXBwV2luZG93KiB3aW5kb3cgPSBIYXNoVGFibGVfR2V0SXRlbVZhbHVlKHhmYy0+cmFp bFdpbmRvd3MsICZpZCk7CisrCWlmICghd2luZG93KQorKwkJTGVhdmVDcml0aWNhbFNlY3Rpb24o JnhmYy0+cmFpbFdpbmRvd3MtPmxvY2spOworKworKwlyZXR1cm4gd2luZG93OworK30KKysKKyt2 b2lkIHhmX3JhaWxfcmV0dXJuX3dpbmRvdyh4ZkFwcFdpbmRvdyogd2luZG93KQorK3sKKysJaWYg KCF3aW5kb3cpCisrCQlyZXR1cm47CisgCistCXJldHVybiBIYXNoVGFibGVfR2V0SXRlbVZhbHVl KHhmYy0+cmFpbFdpbmRvd3MsICZpZCk7CisrCUxlYXZlQ3JpdGljYWxTZWN0aW9uKCZ3aW5kb3ct PnhmYy0+cmFpbFdpbmRvd3MtPmxvY2spOworIH0KK2RpZmYgLS1naXQgYS9jbGllbnQvWDExL3hm X3JhaWwuaCBiL2NsaWVudC9YMTEveGZfcmFpbC5oCitpbmRleCBjOTllZDcwLi41ZmJjMzE2IDEw MDY0NAorLS0tIGEvY2xpZW50L1gxMS94Zl9yYWlsLmgKKysrKyBiL2NsaWVudC9YMTEveGZfcmFp bC5oCitAQCAtMzUsNiArMzUsOSBAQCB2b2lkIHhmX3JhaWxfZGlzYWJsZV9yZW1vdGVhcHBfbW9k ZSh4ZkNvbnRleHQqIHhmYyk7CisgCisgeGZBcHBXaW5kb3cqIHhmX3JhaWxfYWRkX3dpbmRvdyh4 ZkNvbnRleHQqIHhmYywgVUlOVDY0IGlkLCBVSU5UMzIgeCwgVUlOVDMyIHksIFVJTlQzMiB3aWR0 aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJTlQzMiBoZWlnaHQsIFVJTlQz MiBzdXJmYWNlSWQpOworKworK3ZvaWQgeGZfcmFpbF9yZXR1cm5fd2luZG93KHhmQXBwV2luZG93 KiB3aW5kb3cpOworKworIHhmQXBwV2luZG93KiB4Zl9yYWlsX2dldF93aW5kb3coeGZDb250ZXh0 KiB4ZmMsIFVJTlQ2NCBpZCk7CisgCisgQk9PTCB4Zl9yYWlsX2RlbF93aW5kb3coeGZDb250ZXh0 KiB4ZmMsIFVJTlQ2NCBpZCk7CitkaWZmIC0tZ2l0IGEvY2xpZW50L1gxMS94Zl93aW5kb3cuYyBi L2NsaWVudC9YMTEveGZfd2luZG93LmMKK2luZGV4IDliNWIxYzQuLjdlOTM2ZmUgMTAwNjQ0Cist LS0gYS9jbGllbnQvWDExL3hmX3dpbmRvdy5jCisrKysgYi9jbGllbnQvWDExL3hmX3dpbmRvdy5j CitAQCAtMTEyMiwyMiArMTEyMiwzMyBAQCB4ZkFwcFdpbmRvdyogeGZfQXBwV2luZG93RnJvbVgx MVdpbmRvdyh4ZkNvbnRleHQqIHhmYywgV2luZG93IHduZCkKKyAJaW50IGNvdW50OworIAlVTE9O R19QVFIqIHBLZXlzID0gTlVMTDsKKyAJeGZBcHBXaW5kb3cqIGFwcFdpbmRvdzsKKysKKysJaWYg KCF4ZmMtPnJhaWxXaW5kb3dzKQorKwkJcmV0dXJuIE5VTEw7CisrCisrCUVudGVyQ3JpdGljYWxT ZWN0aW9uKCZ4ZmMtPnJhaWxXaW5kb3dzLT5sb2NrKTsKKyAJY291bnQgPSBIYXNoVGFibGVfR2V0 S2V5cyh4ZmMtPnJhaWxXaW5kb3dzLCAmcEtleXMpOworIAorIAlmb3IgKGluZGV4ID0gMDsgaW5k ZXggPCBjb3VudDsgaW5kZXgrKykKKyAJeworLQkJYXBwV2luZG93ID0geGZfcmFpbF9nZXRfd2lu ZG93KHhmYywgKihVSU5UNjQqKXBLZXlzW2luZGV4XSk7CisrCQlhcHBXaW5kb3cgPSBIYXNoVGFi bGVfR2V0SXRlbVZhbHVlKHhmYy0+cmFpbFdpbmRvd3MsICh2b2lkKilwS2V5c1tpbmRleF0pOwor IAorIAkJaWYgKCFhcHBXaW5kb3cpCisrCQl7CisrCQkJTGVhdmVDcml0aWNhbFNlY3Rpb24oJnhm Yy0+cmFpbFdpbmRvd3MtPmxvY2spOworKwkJCWZyZWUocEtleXMpOworIAkJCXJldHVybiBOVUxM OworKwkJfQorIAorIAkJaWYgKGFwcFdpbmRvdy0+aGFuZGxlID09IHduZCkKKyAJCXsKKysJCQlM ZWF2ZUNyaXRpY2FsU2VjdGlvbigmeGZjLT5yYWlsV2luZG93cy0+bG9jayk7CisgCQkJZnJlZShw S2V5cyk7CisgCQkJcmV0dXJuIGFwcFdpbmRvdzsKKyAJCX0KKyAJfQorIAorKwlMZWF2ZUNyaXRp Y2FsU2VjdGlvbigmeGZjLT5yYWlsV2luZG93cy0+bG9jayk7CisgCWZyZWUocEtleXMpOworIAly ZXR1cm4gTlVMTDsKKyB9CitkaWZmIC0tZ2l0IGEvY2xpZW50L1gxMS94Zl93aW5kb3cuaCBiL2Ns aWVudC9YMTEveGZfd2luZG93LmgKK2luZGV4IDBmODVhZjEuLmM3NzAyZWQgMTAwNjQ0CistLS0g YS9jbGllbnQvWDExL3hmX3dpbmRvdy5oCisrKysgYi9jbGllbnQvWDExL3hmX3dpbmRvdy5oCitA QCAtMTg3LDYgKzE4Nyw4IEBAIHZvaWQgeGZfU2V0V2luZG93TWluTWF4SW5mbyh4ZkNvbnRleHQq IHhmYywgeGZBcHBXaW5kb3cqIGFwcFdpbmRvdywgaW50IG1heFdpZHRoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCBtYXhUcmFja1dpZHRoLCBpbnQgbWF4VHJhY2tIZWlnaHQpOwor IHZvaWQgeGZfU3RhcnRMb2NhbE1vdmVTaXplKHhmQ29udGV4dCogeGZjLCB4ZkFwcFdpbmRvdyog YXBwV2luZG93LCBpbnQgZGlyZWN0aW9uLCBpbnQgeCwgaW50IHkpOworIHZvaWQgeGZfRW5kTG9j YWxNb3ZlU2l6ZSh4ZkNvbnRleHQqIHhmYywgeGZBcHBXaW5kb3cqIGFwcFdpbmRvdyk7Cisrdm9p ZCB4Zl9yYWlsX3JldHVybl93aW5kb3coeGZBcHBXaW5kb3cqIHdpbmRvdyk7CisrCisgeGZBcHBX aW5kb3cqIHhmX0FwcFdpbmRvd0Zyb21YMTFXaW5kb3coeGZDb250ZXh0KiB4ZmMsIFdpbmRvdyB3 bmQpOworIAorICNlbmRpZiAvKiBGUkVFUkRQX0NMSUVOVF9YMTFfV0lORE9XX0ggKi8KKy0tIAor Mi41My4wCisKCmRpZmYgLS1naXQgYS9jbGllbnQteDExLXJlZmFjdG9yLWxvY2tpbmcucGF0Y2gg Yi9jbGllbnQteDExLXJlZmFjdG9yLWxvY2tpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uYTk0NWEzOQotLS0gL2Rldi9udWxsCisrKyBiL2NsaWVudC14MTEtcmVm YWN0b3ItbG9ja2luZy5wYXRjaApAQCAtMCwwICsxLDM2MCBAQAorRnJvbSBlZWIzOGMzNTY1NDcz YzQ2ZGE1ZGVhNmI0M2Y1OTcwNjRlODliNzE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJv bTogT25kcmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5jb20+CitEYXRlOiBNb24sIDI3IEFwciAyMDI2 IDIwOjEyOjExICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIFtjbGllbnQseDExXSByZWZhY3RvciBs b2NraW5nCisKK1gxMSBhbmQgcmFpbFdpbmRvd3MgbG9jayBtdXN0IGJlIGhlbGQgYXQgdGhlIHNh bWUgdGltZSB0byBhdm9pZAorZGVhZGxvY2tpbmcuCisKK0JhY2twb3J0IG9mIGNvbW1pdCA0ZmY1 N2I2OGMyOTYwZmE0MTRkMDNjNzhmZjBlMDY2MGJlMWNjNWJkLgorCitBZGFwdGVkIGZvciAyLjEx Ljc6IEM4OSBkZWNsYXJhdGlvbiBzdHlsZSwgZGlyZWN0IFgxMSBjYWxscyBpbnN0ZWFkCitvZiBg TG9nRHluQW5kKmAgd3JhcHBlcnMsIGBXSU5QUl9BVFRSX1VOVVNFRGAgcmVtb3ZlZCBmcm9tCitg eGZBcHBXaW5kb3dzTG9ja0Zyb21gL2BVbmxvY2tGcm9tYC4KKworTWFkZS13aXRoOiBDdXJzb3IK Ky0tLQorIGNsaWVudC9YMTEveGZfZXZlbnQuYyAgfCAyNCArKysrKysrKysrKystLS0tLS0tLS0t LS0KKyBjbGllbnQvWDExL3hmX3JhaWwuYyAgIHwgMzUgKysrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0KKyBjbGllbnQvWDExL3hmX3JhaWwuaCAgIHwgMTQgKysrKysrKystLS0tLS0K KyBjbGllbnQvWDExL3hmX3dpbmRvdy5jIHwgMTYgKysrKysrKysrLS0tLS0tLQorIDQgZmlsZXMg Y2hhbmdlZCwgNTAgaW5zZXJ0aW9ucygrKSwgMzkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQg YS9jbGllbnQvWDExL3hmX2V2ZW50LmMgYi9jbGllbnQvWDExL3hmX2V2ZW50LmMKK2luZGV4IDg4 MDFmYmQuLmUxNDIxYWQgMTAwNjQ0CistLS0gYS9jbGllbnQvWDExL3hmX2V2ZW50LmMKKysrKyBi L2NsaWVudC9YMTEveGZfZXZlbnQuYworQEAgLTM1Nyw3ICszNTcsNyBAQCBzdGF0aWMgQk9PTCB4 Zl9ldmVudF9FeHBvc2UoeGZDb250ZXh0KiB4ZmMsIGNvbnN0IFhFeHBvc2VFdmVudCogZXZlbnQs IEJPT0wgYXBwKQorIAkJeGZBcHBXaW5kb3cqIGFwcFdpbmRvdyA9IHhmX0FwcFdpbmRvd0Zyb21Y MTFXaW5kb3coeGZjLCBldmVudC0+d2luZG93KTsKKyAJCWlmIChhcHBXaW5kb3cpCisgCQkJeGZf VXBkYXRlV2luZG93QXJlYSh4ZmMsIGFwcFdpbmRvdywgeCwgeSwgdywgaCk7CistCQl4Zl9yYWls X3JldHVybl93aW5kb3coYXBwV2luZG93KTsKKysJCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhhcHBX aW5kb3csIEZBTFNFKTsKKyAJfQorIAorIAlyZXR1cm4gVFJVRTsKK0BAIC0zODYsNyArMzg2LDcg QEAgQk9PTCB4Zl9nZW5lcmljX01vdGlvbk5vdGlmeSh4ZkNvbnRleHQqIHhmYywgaW50IHgsIGlu dCB5LCBpbnQgc3RhdGUsIFdpbmRvdyB3aW4KKyAJeworIAkJLyogbWFrZSBzdXJlIHdpbmRvdyBl eGlzdHMgKi8KKyAJCXhmQXBwV2luZG93KiBhcHBXaW5kb3cgPSB4Zl9BcHBXaW5kb3dGcm9tWDEx V2luZG93KHhmYywgd2luZG93KTsKKy0JCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhhcHBXaW5kb3cp OworKwkJeGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdywgRkFMU0UpOworIAkJaWYgKCFh cHBXaW5kb3cpCisgCQkJcmV0dXJuIFRSVUU7CisgCitAQCAtNDY1LDcgKzQ2NSw3IEBAIEJPT0wg eGZfZ2VuZXJpY19CdXR0b25FdmVudCh4ZkNvbnRleHQqIHhmYywgaW50IHgsIGludCB5LCBpbnQg YnV0dG9uLCBXaW5kb3cgd2luCisgCQkJeworIAkJCQkvKiBtYWtlIHN1cmUgd2luZG93IGV4aXN0 cyAqLworIAkJCQl4ZkFwcFdpbmRvdyogYXBwV2luZG93ID0geGZfQXBwV2luZG93RnJvbVgxMVdp bmRvdyh4ZmMsIHdpbmRvdyk7CistCQkJCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhhcHBXaW5kb3cp OworKwkJCQl4Zl9yYWlsX3JldHVybl93aW5kb3coYXBwV2luZG93LCBGQUxTRSk7CisgCQkJCWlm ICghYXBwV2luZG93KQorIAkJCQkJcmV0dXJuIFRSVUU7CisgCitAQCAtNTc2LDcgKzU3Niw3IEBA IHN0YXRpYyBCT09MIHhmX2V2ZW50X0ZvY3VzSW4oeGZDb250ZXh0KiB4ZmMsIGNvbnN0IFhGb2N1 c0luRXZlbnQqIGV2ZW50LCBCT09MIGFwCisgCQkgKi8KKyAJCWlmIChhcHBXaW5kb3cpCisgCQkJ eGZfcmFpbF9hZGp1c3RfcG9zaXRpb24oeGZjLCBhcHBXaW5kb3cpOworLQkJeGZfcmFpbF9yZXR1 cm5fd2luZG93KGFwcFdpbmRvdyk7CisrCQl4Zl9yYWlsX3JldHVybl93aW5kb3coYXBwV2luZG93 LCBGQUxTRSk7CisgCX0KKyAKKyAJeGZfa2V5Ym9hcmRfZm9jdXNfaW4oeGZjKTsKK0BAIC02Mjgs NyArNjI4LDcgQEAgc3RhdGljIEJPT0wgeGZfZXZlbnRfQ2xpZW50TWVzc2FnZSh4ZkNvbnRleHQq IHhmYywgY29uc3QgWENsaWVudE1lc3NhZ2VFdmVudCogZXYKKyAKKyAJCQlpZiAoYXBwV2luZG93 KQorIAkJCQl4Zl9yYWlsX3NlbmRfY2xpZW50X3N5c3RlbV9jb21tYW5kKHhmYywgYXBwV2luZG93 LT53aW5kb3dJZCwgU0NfQ0xPU0UpOworLQkJCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhhcHBXaW5k b3cpOworKwkJCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhhcHBXaW5kb3csIEZBTFNFKTsKKyAJCQly ZXR1cm4gcmM7CisgCQl9CisgCQllbHNlCitAQCAtNjYzLDcgKzY2Myw3IEBAIHN0YXRpYyBCT09M IHhmX2V2ZW50X0VudGVyTm90aWZ5KHhmQ29udGV4dCogeGZjLCBjb25zdCBYRW50ZXJXaW5kb3dF dmVudCogZXZlbnQsCisgCisgCQkvKiBrZWVwIHRyYWNrIG9mIHdoaWNoIHdpbmRvdyBoYXMgZm9j dXMgc28gdGhhdCB3ZSBjYW4gYXBwbHkgcG9pbnRlciB1cGRhdGVzICovCisgCQl4ZmMtPmFwcFdp bmRvdyA9IGFwcFdpbmRvdzsKKy0JCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhhcHBXaW5kb3cpOwor KwkJeGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdywgRkFMU0UpOworIAl9CisgCisgCXJl dHVybiBUUlVFOworQEAgLTY4Myw3ICs2ODMsNyBAQCBzdGF0aWMgQk9PTCB4Zl9ldmVudF9MZWF2 ZU5vdGlmeSh4ZkNvbnRleHQqIHhmYywgY29uc3QgWExlYXZlV2luZG93RXZlbnQqIGV2ZW50LAor IAkJLyoga2VlcCB0cmFjayBvZiB3aGljaCB3aW5kb3cgaGFzIGZvY3VzIHNvIHRoYXQgd2UgY2Fu IGFwcGx5IHBvaW50ZXIgdXBkYXRlcyAqLworIAkJaWYgKHhmYy0+YXBwV2luZG93ID09IGFwcFdp bmRvdykKKyAJCQl4ZmMtPmFwcFdpbmRvdyA9IE5VTEw7CistCQl4Zl9yYWlsX3JldHVybl93aW5k b3coYXBwV2luZG93KTsKKysJCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhhcHBXaW5kb3csIEZBTFNF KTsKKyAJfQorIAlyZXR1cm4gVFJVRTsKKyB9CitAQCAtNzc0LDcgKzc3NCw3IEBAIHN0YXRpYyBC T09MIHhmX2V2ZW50X0NvbmZpZ3VyZU5vdGlmeSh4ZkNvbnRleHQqIHhmYywgY29uc3QgWENvbmZp Z3VyZUV2ZW50KiBldmVuCisgCQkJCQl4Zl9yYWlsX2FkanVzdF9wb3NpdGlvbih4ZmMsIGFwcFdp bmRvdyk7CisgCQkJfQorIAkJfQorLQkJeGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdyk7 CisrCQl4Zl9yYWlsX3JldHVybl93aW5kb3coYXBwV2luZG93LCBGQUxTRSk7CisgCX0KKyAJcmV0 dXJuIHhmX3BvaW50ZXJfdXBkYXRlX3NjYWxlKHhmYyk7CisgfQorQEAgLTc5OSw3ICs3OTksNyBA QCBzdGF0aWMgQk9PTCB4Zl9ldmVudF9NYXBOb3RpZnkoeGZDb250ZXh0KiB4ZmMsIGNvbnN0IFhN YXBFdmVudCogZXZlbnQsIEJPT0wgYXBwKQorIAkJCS8vIHhmX3JhaWxfc2VuZF9jbGllbnRfc3lz dGVtX2NvbW1hbmQoeGZjLCBhcHBXaW5kb3ctPndpbmRvd0lkLCBTQ19SRVNUT1JFKTsKKyAJCQlh cHBXaW5kb3ctPmlzX21hcHBlZCA9IFRSVUU7CisgCQl9CistCQl4Zl9yYWlsX3JldHVybl93aW5k b3coYXBwV2luZG93KTsKKysJCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhhcHBXaW5kb3csIEZBTFNF KTsKKyAJfQorIAorIAlyZXR1cm4gVFJVRTsKK0BAIC04MjIsNyArODIyLDcgQEAgc3RhdGljIEJP T0wgeGZfZXZlbnRfVW5tYXBOb3RpZnkoeGZDb250ZXh0KiB4ZmMsIGNvbnN0IFhVbm1hcEV2ZW50 KiBldmVudCwgQk9PTAorIAorIAkJaWYgKGFwcFdpbmRvdykKKyAJCQlhcHBXaW5kb3ctPmlzX21h cHBlZCA9IEZBTFNFOworLQkJeGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdyk7CisrCQl4 Zl9yYWlsX3JldHVybl93aW5kb3coYXBwV2luZG93LCBGQUxTRSk7CisgCX0KKyAKKyAJcmV0dXJu IFRSVUU7CitAQCAtOTU0LDcgKzk1NCw3IEBAIHN0YXRpYyBCT09MIHhmX2V2ZW50X1Byb3BlcnR5 Tm90aWZ5KHhmQ29udGV4dCogeGZjLCBjb25zdCBYUHJvcGVydHlFdmVudCogZXZlbnQsCisgCQkJ cmMgPSBnZGlfc2VuZF9zdXBwcmVzc19vdXRwdXQoeGZjLT5jb250ZXh0LmdkaSwgbWluaW1pemVk KTsKKyAKKyAJZmFpbDoKKy0JCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhhcHBXaW5kb3cpOworKwkJ eGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdywgRkFMU0UpOworIAl9CisgCisgCXJldHVy biByYzsKK0BAIC0xMDY2LDcgKzEwNjYsNyBAQCBCT09MIHhmX2V2ZW50X3Byb2Nlc3MoZnJlZXJk cCogaW5zdGFuY2UsIGNvbnN0IFhFdmVudCogZXZlbnQpCisgCQkJeGZjLT5hcHBXaW5kb3cgPSBh cHBXaW5kb3c7CisgCisgCQkJQk9PTCBzdXBwcmVzcyA9IHhmX2V2ZW50X3N1cHByZXNzX2V2ZW50 cyh4ZmMsIGFwcFdpbmRvdywgZXZlbnQpOworLQkJCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhhcHBX aW5kb3cpOworKwkJCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhhcHBXaW5kb3csIEZBTFNFKTsKKyAJ CQlpZiAoc3VwcHJlc3MpCisgCQkJCXJldHVybiBUUlVFOworIAkJfQorZGlmZiAtLWdpdCBhL2Ns aWVudC9YMTEveGZfcmFpbC5jIGIvY2xpZW50L1gxMS94Zl9yYWlsLmMKK2luZGV4IDFlNTcwNDYu LmQ0MmI4NjQgMTAwNjQ0CistLS0gYS9jbGllbnQvWDExL3hmX3JhaWwuYworKysrIGIvY2xpZW50 L1gxMS94Zl9yYWlsLmMKK0BAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCB4Zl9yYWlsX3NlbmRfYWN0 aXZhdGUoeGZDb250ZXh0KiB4ZmMsIFdpbmRvdyB4d2luZG93LCBCT09MIGVuYWJsZWQpCisgCQl4 Zl9TZXRXaW5kb3dTdHlsZSh4ZmMsIGFwcFdpbmRvdywgMCwgMCk7CisgCisgCWFjdGl2YXRlLndp bmRvd0lkID0gYXBwV2luZG93LT53aW5kb3dJZDsKKy0JeGZfcmFpbF9yZXR1cm5fd2luZG93KGFw cFdpbmRvdyk7CisrCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhhcHBXaW5kb3csIEZBTFNFKTsKKyAK KyAJYWN0aXZhdGUuZW5hYmxlZCA9IGVuYWJsZWQ7CisgCXhmYy0+cmFpbC0+Q2xpZW50QWN0aXZh dGUoeGZjLT5yYWlsLCAmYWN0aXZhdGUpOworQEAgLTIxMyw3ICsyMTMsNyBAQCBzdGF0aWMgdm9p ZCB4Zl9yYWlsX2ludmFsaWRhdGVfcmVnaW9uKHhmQ29udGV4dCogeGZjLCBSRUdJT04xNiogaW52 YWxpZFJlZ2lvbikKKyAKKyAJZm9yIChpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7IGluZGV4Kysp CisgCXsKKy0JCWFwcFdpbmRvdyA9IHhmX3JhaWxfZ2V0X3dpbmRvdyh4ZmMsICooVUlOVDY0Kilw S2V5c1tpbmRleF0pOworKwkJYXBwV2luZG93ID0geGZfcmFpbF9nZXRfd2luZG93KHhmYywgKihV SU5UNjQqKXBLZXlzW2luZGV4XSwgRkFMU0UpOworIAorIAkJaWYgKGFwcFdpbmRvdykKKyAJCXsK K0BAIC0yNjUsNyArMjY1LDcgQEAgc3RhdGljIEJPT0wgeGZfcmFpbF93aW5kb3dfY29tbW9uKHJk cENvbnRleHQqIGNvbnRleHQsIGNvbnN0IFdJTkRPV19PUkRFUl9JTkZPKgorIAl4ZkNvbnRleHQq IHhmYyA9ICh4ZkNvbnRleHQqKWNvbnRleHQ7CisgCVVJTlQzMiBmaWVsZEZsYWdzID0gb3JkZXJJ bmZvLT5maWVsZEZsYWdzOworIAlCT09MIHBvc2l0aW9uX29yX3NpemVfdXBkYXRlZCA9IEZBTFNF OworLQl4ZkFwcFdpbmRvdyogYXBwV2luZG93ID0geGZfcmFpbF9nZXRfd2luZG93KHhmYywgb3Jk ZXJJbmZvLT53aW5kb3dJZCk7CisrCXhmQXBwV2luZG93KiBhcHBXaW5kb3cgPSB4Zl9yYWlsX2dl dF93aW5kb3coeGZjLCBvcmRlckluZm8tPndpbmRvd0lkLCBGQUxTRSk7CisgCisgCWlmIChmaWVs ZEZsYWdzICYgV0lORE9XX09SREVSX1NUQVRFX05FVykKKyAJeworQEAgLTUyNiw3ICs1MjYsNyBA QCBzdGF0aWMgQk9PTCB4Zl9yYWlsX3dpbmRvd19jb21tb24ocmRwQ29udGV4dCogY29udGV4dCwg Y29uc3QgV0lORE9XX09SREVSX0lORk8qCisgCX0qLworIAlyYyA9IFRSVUU7CisgZmFpbDoKKy0J eGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdyk7CisrCXhmX3JhaWxfcmV0dXJuX3dpbmRv dyhhcHBXaW5kb3csIEZBTFNFKTsKKyAJcmV0dXJuIHJjOworIH0KKyAKK0BAIC02NjcsNyArNjY3 LDcgQEAgc3RhdGljIEJPT0wgeGZfcmFpbF93aW5kb3dfaWNvbihyZHBDb250ZXh0KiBjb250ZXh0 LCBjb25zdCBXSU5ET1dfT1JERVJfSU5GTyogb3IKKyAJQk9PTCByYyA9IEZBTFNFOworIAl4ZkNv bnRleHQqIHhmYyA9ICh4ZkNvbnRleHQqKWNvbnRleHQ7CisgCUJPT0wgcmVwbGFjZUljb24gPSAw OworLQl4ZkFwcFdpbmRvdyogcmFpbFdpbmRvdyA9IHhmX3JhaWxfZ2V0X3dpbmRvdyh4ZmMsIG9y ZGVySW5mby0+d2luZG93SWQpOworKwl4ZkFwcFdpbmRvdyogcmFpbFdpbmRvdyA9IHhmX3JhaWxf Z2V0X3dpbmRvdyh4ZmMsIG9yZGVySW5mby0+d2luZG93SWQsIEZBTFNFKTsKKyAKKyAJaWYgKCFy YWlsV2luZG93KQorIAkJcmV0dXJuIFRSVUU7CitAQCAtNjkwLDcgKzY5MCw3IEBAIHN0YXRpYyBC T09MIHhmX3JhaWxfd2luZG93X2ljb24ocmRwQ29udGV4dCogY29udGV4dCwgY29uc3QgV0lORE9X X09SREVSX0lORk8qIG9yCisgCQl4Zl9yYWlsX3NldF93aW5kb3dfaWNvbih4ZmMsIHJhaWxXaW5k b3csIGljb24sIHJlcGxhY2VJY29uKTsKKyAJCXJjID0gVFJVRTsKKyAJfQorLQl4Zl9yYWlsX3Jl dHVybl93aW5kb3cocmFpbFdpbmRvdyk7CisrCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhyYWlsV2lu ZG93LCBGQUxTRSk7CisgCXJldHVybiByYzsKKyB9CisgCitAQCAtNzAwLDcgKzcwMCw3IEBAIHN0 YXRpYyBCT09MIHhmX3JhaWxfd2luZG93X2NhY2hlZF9pY29uKHJkcENvbnRleHQqIGNvbnRleHQs IGNvbnN0IFdJTkRPV19PUkRFUl9JCisgCUJPT0wgcmMgPSBGQUxTRTsKKyAJeGZDb250ZXh0KiB4 ZmMgPSAoeGZDb250ZXh0Kiljb250ZXh0OworIAlCT09MIHJlcGxhY2VJY29uID0gMDsKKy0JeGZB cHBXaW5kb3cqIHJhaWxXaW5kb3cgPSB4Zl9yYWlsX2dldF93aW5kb3coeGZjLCBvcmRlckluZm8t PndpbmRvd0lkKTsKKysJeGZBcHBXaW5kb3cqIHJhaWxXaW5kb3cgPSB4Zl9yYWlsX2dldF93aW5k b3coeGZjLCBvcmRlckluZm8tPndpbmRvd0lkLCBGQUxTRSk7CisgCisgCWlmICghcmFpbFdpbmRv dykKKyAJCXJldHVybiBUUlVFOworQEAgLTcxOSw3ICs3MTksNyBAQCBzdGF0aWMgQk9PTCB4Zl9y YWlsX3dpbmRvd19jYWNoZWRfaWNvbihyZHBDb250ZXh0KiBjb250ZXh0LCBjb25zdCBXSU5ET1df T1JERVJfSQorIAkJeGZfcmFpbF9zZXRfd2luZG93X2ljb24oeGZjLCByYWlsV2luZG93LCBpY29u LCByZXBsYWNlSWNvbik7CisgCQlyYyA9IFRSVUU7CisgCX0KKy0JeGZfcmFpbF9yZXR1cm5fd2lu ZG93KHJhaWxXaW5kb3cpOworKwl4Zl9yYWlsX3JldHVybl93aW5kb3cocmFpbFdpbmRvdywgRkFM U0UpOworIAlyZXR1cm4gcmM7CisgfQorIAorQEAgLTkzOSw3ICs5MzksNyBAQCBzdGF0aWMgVUlO VCB4Zl9yYWlsX3NlcnZlcl9sb2NhbF9tb3ZlX3NpemUoUmFpbENsaWVudENvbnRleHQqIGNvbnRl eHQsCisgCWludCBkaXJlY3Rpb24gPSAwOworIAlXaW5kb3cgY2hpbGRfd2luZG93OworIAl4ZkNv bnRleHQqIHhmYyA9ICh4ZkNvbnRleHQqKWNvbnRleHQtPmN1c3RvbTsKKy0JeGZBcHBXaW5kb3cq IGFwcFdpbmRvdyA9IHhmX3JhaWxfZ2V0X3dpbmRvdyh4ZmMsIGxvY2FsTW92ZVNpemUtPndpbmRv d0lkKTsKKysJeGZBcHBXaW5kb3cqIGFwcFdpbmRvdyA9IHhmX3JhaWxfZ2V0X3dpbmRvdyh4ZmMs IGxvY2FsTW92ZVNpemUtPndpbmRvd0lkLCBGQUxTRSk7CisgCisgCWlmICghYXBwV2luZG93KQor IAkJcmV0dXJuIEVSUk9SX0lOVEVSTkFMX0VSUk9SOworQEAgLTEwMjAsNyArMTAyMCw3IEBAIHN0 YXRpYyBVSU5UIHhmX3JhaWxfc2VydmVyX2xvY2FsX21vdmVfc2l6ZShSYWlsQ2xpZW50Q29udGV4 dCogY29udGV4dCwKKyAJZWxzZQorIAkJeGZfRW5kTG9jYWxNb3ZlU2l6ZSh4ZmMsIGFwcFdpbmRv dyk7CisgCistCXhmX3JhaWxfcmV0dXJuX3dpbmRvdyhhcHBXaW5kb3cpOworKwl4Zl9yYWlsX3Jl dHVybl93aW5kb3coYXBwV2luZG93LCBGQUxTRSk7CisgCXJldHVybiBDSEFOTkVMX1JDX09LOwor IH0KKyAKK0BAIC0xMDMzLDcgKzEwMzMsNyBAQCBzdGF0aWMgVUlOVCB4Zl9yYWlsX3NlcnZlcl9t aW5fbWF4X2luZm8oUmFpbENsaWVudENvbnRleHQqIGNvbnRleHQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJBSUxfTUlOTUFYSU5GT19PUkRFUiogbWlu TWF4SW5mbykKKyB7CisgCXhmQ29udGV4dCogeGZjID0gKHhmQ29udGV4dCopY29udGV4dC0+Y3Vz dG9tOworLQl4ZkFwcFdpbmRvdyogYXBwV2luZG93ID0geGZfcmFpbF9nZXRfd2luZG93KHhmYywg bWluTWF4SW5mby0+d2luZG93SWQpOworKwl4ZkFwcFdpbmRvdyogYXBwV2luZG93ID0geGZfcmFp bF9nZXRfd2luZG93KHhmYywgbWluTWF4SW5mby0+d2luZG93SWQsIEZBTFNFKTsKKyAKKyAJaWYg KGFwcFdpbmRvdykKKyAJeworQEAgLTEwNDIsNyArMTA0Miw3IEBAIHN0YXRpYyBVSU5UIHhmX3Jh aWxfc2VydmVyX21pbl9tYXhfaW5mbyhSYWlsQ2xpZW50Q29udGV4dCogY29udGV4dCwKKyAJCSAg ICAgICAgICAgICAgICAgICAgICAgbWluTWF4SW5mby0+bWluVHJhY2tIZWlnaHQsIG1pbk1heElu Zm8tPm1heFRyYWNrV2lkdGgsCisgCQkgICAgICAgICAgICAgICAgICAgICAgIG1pbk1heEluZm8t Pm1heFRyYWNrSGVpZ2h0KTsKKyAJfQorLQl4Zl9yYWlsX3JldHVybl93aW5kb3coYXBwV2luZG93 KTsKKysJeGZfcmFpbF9yZXR1cm5fd2luZG93KGFwcFdpbmRvdywgRkFMU0UpOworIAorIAlyZXR1 cm4gQ0hBTk5FTF9SQ19PSzsKKyB9CitAQCAtMTE5OSwxMyArMTE5OSwyMCBAQCBCT09MIHhmX3Jh aWxfZGVsX3dpbmRvdyh4ZkNvbnRleHQqIHhmYywgVUlOVDY0IGlkKQorIAlpZiAoIXhmYy0+cmFp bFdpbmRvd3MpCisgCQlyZXR1cm4gRkFMU0U7CisgCistCXJldHVybiBIYXNoVGFibGVfUmVtb3Zl KHhmYy0+cmFpbFdpbmRvd3MsICZpZCk7CisrCXhmX2xvY2tfeDExKHhmYyk7CisrCWNvbnN0IEJP T0wgcmVzID0gSGFzaFRhYmxlX1JlbW92ZSh4ZmMtPnJhaWxXaW5kb3dzLCAmaWQpOworKwl4Zl91 bmxvY2tfeDExKHhmYyk7CisrCXJldHVybiByZXM7CisgfQorIAorLXZvaWQgeGZfcmFpbF9yZXR1 cm5fd2luZG93RnJvbSh4ZkFwcFdpbmRvdyogd2luZG93LCBjb25zdCBjaGFyKiBmaWxlLCBjb25z dCBjaGFyKiBma3QsIHNpemVfdCBsaW5lKQorK3ZvaWQgeGZfcmFpbF9yZXR1cm5fd2luZG93RnJv bSh4ZkFwcFdpbmRvdyogd2luZG93LCBCT09MIGFscmVhZHlMb2NrZWQsIGNvbnN0IGNoYXIqIGZp bGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZrdCwgc2l6 ZV90IGxpbmUpCisgeworIAlpZiAoIXdpbmRvdykKKyAJCXJldHVybjsKKyAKKysJaWYgKGFscmVh ZHlMb2NrZWQpCisrCQlyZXR1cm47CisrCisgCXhmQXBwV2luZG93c1VubG9ja0Zyb20od2luZG93 LT54ZmMsIGZpbGUsIGZrdCwgbGluZSk7CisgfQorZGlmZiAtLWdpdCBhL2NsaWVudC9YMTEveGZf cmFpbC5oIGIvY2xpZW50L1gxMS94Zl9yYWlsLmgKK2luZGV4IDgzZDVmZmYuLmE5MWMxYmYgMTAw NjQ0CistLS0gYS9jbGllbnQvWDExL3hmX3JhaWwuaAorKysrIGIvY2xpZW50L1gxMS94Zl9yYWls LmgKK0BAIC0zNiwxNCArMzYsMTYgQEAgdm9pZCB4Zl9yYWlsX2Rpc2FibGVfcmVtb3RlYXBwX21v ZGUoeGZDb250ZXh0KiB4ZmMpOworIHhmQXBwV2luZG93KiB4Zl9yYWlsX2FkZF93aW5kb3coeGZD b250ZXh0KiB4ZmMsIFVJTlQ2NCBpZCwgVUlOVDMyIHgsIFVJTlQzMiB5LCBVSU5UMzIgd2lkdGgs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSU5UMzIgaGVpZ2h0LCBVSU5UMzIg c3VyZmFjZUlkKTsKKyAKKy0jZGVmaW5lIHhmX3JhaWxfcmV0dXJuX3dpbmRvdyh3aW5kb3cpIFwK Ky0JeGZfcmFpbF9yZXR1cm5fd2luZG93RnJvbSgod2luZG93KSwgX19GSUxFX18sIF9fZnVuY19f LCBfX0xJTkVfXykKKy12b2lkIHhmX3JhaWxfcmV0dXJuX3dpbmRvd0Zyb20oeGZBcHBXaW5kb3cq IHdpbmRvdywgY29uc3QgY2hhciogZmlsZSwgY29uc3QgY2hhciogZmt0LCBzaXplX3QgbGluZSk7 CisrI2RlZmluZSB4Zl9yYWlsX3JldHVybl93aW5kb3cod2luZG93LCBhbHJlYWR5TG9ja2VkKSBc CisrCXhmX3JhaWxfcmV0dXJuX3dpbmRvd0Zyb20oKHdpbmRvdyksIChhbHJlYWR5TG9ja2VkKSwg X19GSUxFX18sIF9fZnVuY19fLCBfX0xJTkVfXykKKyt2b2lkIHhmX3JhaWxfcmV0dXJuX3dpbmRv d0Zyb20oeGZBcHBXaW5kb3cqIHdpbmRvdywgQk9PTCBhbHJlYWR5TG9ja2VkLCBjb25zdCBjaGFy KiBmaWxlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBma3Qs IHNpemVfdCBsaW5lKTsKKyAKKy0jZGVmaW5lIHhmX3JhaWxfZ2V0X3dpbmRvdyh4ZmMsIGlkKSBc CistCXhmX3JhaWxfZ2V0X3dpbmRvd0Zyb20oKHhmYyksIChpZCksIF9fRklMRV9fLCBfX2Z1bmNf XywgX19MSU5FX18pCisrI2RlZmluZSB4Zl9yYWlsX2dldF93aW5kb3coeGZjLCBpZCwgYWxyZWFk eUxvY2tlZCkgXAorKwl4Zl9yYWlsX2dldF93aW5kb3dGcm9tKCh4ZmMpLCAoaWQpLCAoYWxyZWFk eUxvY2tlZCksIF9fRklMRV9fLCBfX2Z1bmNfXywgX19MSU5FX18pCisgCisteGZBcHBXaW5kb3cq IHhmX3JhaWxfZ2V0X3dpbmRvd0Zyb20oeGZDb250ZXh0KiB4ZmMsIFVJTlQ2NCBpZCwgY29uc3Qg Y2hhciogZmlsZSwgY29uc3QgY2hhciogZmt0LAorK3hmQXBwV2luZG93KiB4Zl9yYWlsX2dldF93 aW5kb3dGcm9tKHhmQ29udGV4dCogeGZjLCBVSU5UNjQgaWQsIEJPT0wgYWxyZWFkeUxvY2tlZCwg Y29uc3QgY2hhciogZmlsZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBjaGFyKiBma3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6 ZV90IGxpbmUpOworIAorIEJPT0wgeGZfcmFpbF9kZWxfd2luZG93KHhmQ29udGV4dCogeGZjLCBV SU5UNjQgaWQpOworZGlmZiAtLWdpdCBhL2NsaWVudC9YMTEveGZfd2luZG93LmMgYi9jbGllbnQv WDExL3hmX3dpbmRvdy5jCitpbmRleCAwOWI0YTgxLi44ZDA5Y2VkIDEwMDY0NAorLS0tIGEvY2xp ZW50L1gxMS94Zl93aW5kb3cuYworKysrIGIvY2xpZW50L1gxMS94Zl93aW5kb3cuYworQEAgLTEw NzAsOCArMTA3MCw2IEBAIHZvaWQgeGZfVXBkYXRlV2luZG93QXJlYSh4ZkNvbnRleHQqIHhmYywg eGZBcHBXaW5kb3cqIGFwcFdpbmRvdywgaW50IHgsIGludCB5LCBpCisgCWlmIChheSArIGhlaWdo dCA+IGFwcFdpbmRvdy0+d2luZG93T2Zmc2V0WSArIGFwcFdpbmRvdy0+aGVpZ2h0KQorIAkJaGVp Z2h0ID0gKGFwcFdpbmRvdy0+d2luZG93T2Zmc2V0WSArIGFwcFdpbmRvdy0+aGVpZ2h0IC0gMSkg LSBheTsKKyAKKy0JeGZfbG9ja194MTEoeGZjKTsKKy0KKyAJaWYgKHhmYy0+Y29udGV4dC5zZXR0 aW5ncy0+U29mdHdhcmVHZGkpCisgCXsKKyAJCVhQdXRJbWFnZSh4ZmMtPmRpc3BsYXksIHhmYy0+ cHJpbWFyeSwgYXBwV2luZG93LT5nYywgeGZjLT5pbWFnZSwgYXgsIGF5LCBheCwgYXksIHdpZHRo LAorQEAgLTEwODEsNyArMTA3OSw2IEBAIHZvaWQgeGZfVXBkYXRlV2luZG93QXJlYSh4ZkNvbnRl eHQqIHhmYywgeGZBcHBXaW5kb3cqIGFwcFdpbmRvdywgaW50IHgsIGludCB5LCBpCisgCVhDb3B5 QXJlYSh4ZmMtPmRpc3BsYXksIHhmYy0+cHJpbWFyeSwgYXBwV2luZG93LT5oYW5kbGUsIGFwcFdp bmRvdy0+Z2MsIGF4LCBheSwgd2lkdGgsIGhlaWdodCwKKyAJICAgICAgICAgIHgsIHkpOworIAlY Rmx1c2goeGZjLT5kaXNwbGF5KTsKKy0JeGZfdW5sb2NrX3gxMSh4ZmMpOworIH0KKyAKKyB2b2lk IHhmX0Rlc3Ryb3lXaW5kb3coeGZDb250ZXh0KiB4ZmMsIHhmQXBwV2luZG93KiBhcHBXaW5kb3cp CitAQCAtMTEyMiw4ICsxMTE5LDggQEAgc3RhdGljIHhmQXBwV2luZG93KiBnZXRfd2luZG93VW5s b2NrZWQoeGZDb250ZXh0KiB4ZmMsIFVJTlQ2NCBpZCkKKyAJcmV0dXJuIEhhc2hUYWJsZV9HZXRJ dGVtVmFsdWUoeGZjLT5yYWlsV2luZG93cywgJmlkKTsKKyB9CisgCisteGZBcHBXaW5kb3cqIHhm X3JhaWxfZ2V0X3dpbmRvd0Zyb20oeGZDb250ZXh0KiB4ZmMsIFVJTlQ2NCBpZCwgY29uc3QgY2hh ciogZmlsZSwgY29uc3QgY2hhciogZmt0LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNpemVfdCBsaW5lKQorK3hmQXBwV2luZG93KiB4Zl9yYWlsX2dldF93aW5kb3dGcm9t KHhmQ29udGV4dCogeGZjLCBVSU5UNjQgaWQsIEJPT0wgYWxyZWFkeUxvY2tlZCwgY29uc3QgY2hh ciogZmlsZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy KiBma3QsIHNpemVfdCBsaW5lKQorIHsKKyAJaWYgKCF4ZmMpCisgCQlyZXR1cm4gTlVMTDsKK0BA IC0xMTMxLDkgKzExMjgsMTIgQEAgeGZBcHBXaW5kb3cqIHhmX3JhaWxfZ2V0X3dpbmRvd0Zyb20o eGZDb250ZXh0KiB4ZmMsIFVJTlQ2NCBpZCwgY29uc3QgY2hhciogZmlsZSwKKyAJaWYgKCF4ZmMt PnJhaWxXaW5kb3dzKQorIAkJcmV0dXJuIE5VTEw7CisgCistCXhmQXBwV2luZG93c0xvY2tGcm9t KHhmYywgZmlsZSwgZmt0LCBsaW5lKTsKKysJaWYgKCFhbHJlYWR5TG9ja2VkKQorKwkJeGZBcHBX aW5kb3dzTG9ja0Zyb20oeGZjLCBmaWxlLCBma3QsIGxpbmUpOworKworIAl4ZkFwcFdpbmRvdyog d2luZG93ID0gZ2V0X3dpbmRvd1VubG9ja2VkKHhmYywgaWQpOworLQlpZiAoIXdpbmRvdykKKysK KysJaWYgKCF3aW5kb3cgJiYgIWFscmVhZHlMb2NrZWQpCisgCQl4ZkFwcFdpbmRvd3NVbmxvY2tG cm9tKHhmYywgZmlsZSwgZmt0LCBsaW5lKTsKKyAKKyAJcmV0dXJuIHdpbmRvdzsKK0BAIC0xMTc2 LDYgKzExNzYsNyBAQCB4ZkFwcFdpbmRvdyogeGZfQXBwV2luZG93RnJvbVgxMVdpbmRvd0Zyb20o eGZDb250ZXh0KiB4ZmMsIFdpbmRvdyB3bmQsIGNvbnN0IGNoYQorIHZvaWQgeGZBcHBXaW5kb3dz TG9ja0Zyb20oeGZDb250ZXh0KiB4ZmMsIGNvbnN0IGNoYXIqIGZpbGUsIGNvbnN0IGNoYXIqIGZr dCwgc2l6ZV90IGxpbmUpCisgeworIAlXSU5QUl9BU1NFUlQoeGZjKTsKKysJeGZfbG9ja194MTEo eGZjKTsKKyAJRW50ZXJDcml0aWNhbFNlY3Rpb24oJnhmYy0+cmFpbFdpbmRvd3MtPmxvY2spOwor IH0KKyAKK0BAIC0xMTgzLDQgKzExODQsNSBAQCB2b2lkIHhmQXBwV2luZG93c1VubG9ja0Zyb20o eGZDb250ZXh0KiB4ZmMsIGNvbnN0IGNoYXIqIGZpbGUsIGNvbnN0IGNoYXIqIGZrdCwgcworIHsK KyAJV0lOUFJfQVNTRVJUKHhmYyk7CisgCUxlYXZlQ3JpdGljYWxTZWN0aW9uKCZ4ZmMtPnJhaWxX aW5kb3dzLT5sb2NrKTsKKysJeGZfdW5sb2NrX3gxMSh4ZmMpOworIH0KKy0tIAorMi41My4wCisK CmRpZmYgLS1naXQgYS9jb2RlYy1jbGVhci1jaGVjay1jbGVhcl9kZWNvbXJlc3MtZ2x5cGhEYXRh LnBhdGNoIGIvY29kZWMtY2xlYXItY2hlY2stY2xlYXJfZGVjb21yZXNzLWdseXBoRGF0YS5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODI4OTE5Ci0tLSAvZGV2L251 bGwKKysrIGIvY29kZWMtY2xlYXItY2hlY2stY2xlYXJfZGVjb21yZXNzLWdseXBoRGF0YS5wYXRj aApAQCAtMCwwICsxLDc2IEBACitGcm9tIDNhNGVlM2YwMDIwOTc3MzIwMDY2Yjk5ZGExNjQ1NmI2 MzY0YzEzNjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPbmRyZWogSG9seSA8b2hv bHlAcmVkaGF0LmNvbT4KK0RhdGU6IFRodSwgMjIgSmFuIDIwMjYgMTI6NTA6MjIgKzAxMDAKK1N1 YmplY3Q6IFtQQVRDSF0gW2NvZGVjLGNsZWFyXSBjaGVjayBjbGVhcl9kZWNvbXJlc3MgZ2x5cGhE YXRhCisKK0JhY2twb3J0IG9mIGNvbW1pdCAyNDNlY2Y4MDRiYjEyMmU4ZTY0M2E1YzE0MmFkNWE0 OWQ3YWExOWVlLgorCitDby1BdXRob3JlZC1CeTogQ2xhdWRlIDxub3JlcGx5QGFudGhyb3BpYy5j b20+CistLS0KKyBsaWJmcmVlcmRwL2NvZGVjL2NsZWFyLmMgfCA1MCArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMo KyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYmZyZWVyZHAvY29kZWMvY2xlYXIu YyBiL2xpYmZyZWVyZHAvY29kZWMvY2xlYXIuYworaW5kZXggNGYwYWVhZDEwLi5mY2FmYjkyMzUg MTAwNjQ0CistLS0gYS9saWJmcmVlcmRwL2NvZGVjL2NsZWFyLmMKKysrKyBiL2xpYmZyZWVyZHAv Y29kZWMvY2xlYXIuYworQEAgLTExNDUsNyArMTE0NSw1NSBAQCBJTlQzMiBjbGVhcl9kZWNvbXBy ZXNzKENMRUFSX0NPTlRFWFQqIGNsZWFyLCBjb25zdCBCWVRFKiBwU3JjRGF0YSwgVUlOVDMyIFNy Y1NpegorIAorIAlpZiAoZ2x5cGhEYXRhKQorIAl7CistCQlpZiAoIWZyZWVyZHBfaW1hZ2VfY29w eShnbHlwaERhdGEsIGNsZWFyLT5mb3JtYXQsIDAsIDAsIDAsIG5XaWR0aCwgbkhlaWdodCwgcERz dERhdGEsCisrCQl1aW50MzJfdCB3ID0gTUlOKG5XaWR0aCwgbkRzdFdpZHRoKTsKKysJCWlmIChu WERzdCA+IG5Ec3RXaWR0aCkKKysJCXsKKysJCQlXTG9nX1dBUk4oVEFHLCAiZ2x5cGhEYXRhIGNv cHkgYXJlYSB4IGV4Y2VlZHMgZGVzdGluYXRpb246IHg9JSIgUFJJdTMyICIgPiAlIiBQUkl1MzIs CisrCQkJICAgICAgICAgIG5YRHN0LCBuRHN0V2lkdGgpOworKwkJCXcgPSAwOworKwkJfQorKwkJ ZWxzZSBpZiAoblhEc3QgKyB3ID4gbkRzdFdpZHRoKQorKwkJeworKwkJCVdMb2dfV0FSTihUQUcs CisrCQkJICAgICAgICAgICJnbHlwaERhdGEgY29weSBhcmVhIHggKyB3aWR0aCBleGNlZWRzIGRl c3RpbmF0aW9uOiB4PSUiIFBSSXUzMiAiICsgJSIgUFJJdTMyCisrCQkJICAgICAgICAgICIgPiAl IiBQUkl1MzIsCisrCQkJICAgICAgICAgIG5YRHN0LCB3LCBuRHN0V2lkdGgpOworKwkJCXcgPSBu RHN0V2lkdGggLSBuWERzdDsKKysJCX0KKysKKysJCWlmICh3ICE9IG5XaWR0aCkKKysJCXsKKysJ CQlXTG9nX1dBUk4oVEFHLAorKwkJCSAgICAgICAgICAiZ2x5cGhEYXRhIGNvcHkgYXJlYSB3aWR0 aCB0cnVuY2F0ZWQ6IHJlcXVlc3RlZD0lIiBQUkl1MzIKKysJCQkgICAgICAgICAgIiwgdHJ1bmNh dGVkIHRvICUiIFBSSXUzMiwKKysJCQkgICAgICAgICAgbldpZHRoLCB3KTsKKysJCX0KKysKKysJ CXVpbnQzMl90IGggPSBNSU4obkhlaWdodCwgbkRzdEhlaWdodCk7CisrCQlpZiAobllEc3QgPiBu RHN0SGVpZ2h0KQorKwkJeworKwkJCVdMb2dfV0FSTihUQUcsICJnbHlwaERhdGEgY29weSBhcmVh IHkgZXhjZWVkcyBkZXN0aW5hdGlvbjogeT0lIiBQUkl1MzIgIiA+ICUiIFBSSXUzMiwKKysJCQkg ICAgICAgICAgbllEc3QsIG5Ec3RIZWlnaHQpOworKwkJCWggPSAwOworKwkJfQorKwkJZWxzZSBp ZiAobllEc3QgKyBoID4gbkRzdEhlaWdodCkKKysJCXsKKysJCQlXTG9nX1dBUk4oVEFHLAorKwkJ CSAgICAgICAgICAiZ2x5cGhEYXRhIGNvcHkgYXJlYSB5ICsgaGVpZ2h0IGV4Y2VlZHMgZGVzdGlu YXRpb246IHg9JSIgUFJJdTMyICIgKyAlIiBQUkl1MzIKKysJCQkgICAgICAgICAgIiA+ICUiIFBS SXUzMiwKKysJCQkgICAgICAgICAgbllEc3QsIGgsIG5Ec3RIZWlnaHQpOworKwkJCWggPSBuRHN0 SGVpZ2h0IC0gbllEc3Q7CisrCQl9CisrCisrCQlpZiAoaCAhPSBuSGVpZ2h0KQorKwkJeworKwkJ CVdMb2dfV0FSTihUQUcsCisrCQkJICAgICAgICAgICJnbHlwaERhdGEgY29weSBhcmVhIGhlaWdo dCB0cnVuY2F0ZWQ6IHJlcXVlc3RlZD0lIiBQUkl1MzIKKysJCQkgICAgICAgICAgIiwgdHJ1bmNh dGVkIHRvICUiIFBSSXUzMiwKKysJCQkgICAgICAgICAgbkhlaWdodCwgaCk7CisrCQl9CisrCisr CQlpZiAoIWZyZWVyZHBfaW1hZ2VfY29weShnbHlwaERhdGEsIGNsZWFyLT5mb3JtYXQsIDAsIDAs IDAsIHcsIGgsIHBEc3REYXRhLAorIAkJICAgICAgICAgICAgICAgICAgICAgICAgRHN0Rm9ybWF0 LCBuRHN0U3RlcCwgblhEc3QsIG5ZRHN0LCBwYWxldHRlLCBGUkVFUkRQX0ZMSVBfTk9ORSkpCisg CQkJZ290byBmYWlsOworIAl9CistLSAKKzIuNTIuMAorCgpkaWZmIC0tZ2l0IGEvY29kZWMtY2xl YXItZml4LWNsZWFyX3Jlc2l6ZV9idWZmZXItY2hlY2tzLnBhdGNoIGIvY29kZWMtY2xlYXItZml4 LWNsZWFyX3Jlc2l6ZV9idWZmZXItY2hlY2tzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmU3OWY4MDEKLS0tIC9kZXYvbnVsbAorKysgYi9jb2RlYy1jbGVhci1maXgt Y2xlYXJfcmVzaXplX2J1ZmZlci1jaGVja3MucGF0Y2gKQEAgLTAsMCArMSw2MSBAQAorRnJvbSAw MGE1OTNmOWVkYTY3MjEyNTM5ZTRkY2FjNjhlYTVhNjk5ZWIzZTkzIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQorRnJvbTogT25kcmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5jb20+CitEYXRlOiBUaHUs IDIyIEphbiAyMDI2IDEyOjQ4OjM3ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFtjb2RlYyxjbGVh cl0gZml4IGNsZWFyX3Jlc2l6ZV9idWZmZXIgY2hlY2tzCisKK0JhY2twb3J0IG9mIGNvbW1pdCBj NDM5MTgyN2Q3ZmFjZmM4NzRjYTdmNjFhOTJhZmI4MjIzMmE1NzQ4LgorCitDby1BdXRob3JlZC1C eTogQ2xhdWRlIDxub3JlcGx5QGFudGhyb3BpYy5jb20+CistLS0KKyBsaWJmcmVlcmRwL2NvZGVj L2NsZWFyLmMgfCAxNyArKysrKysrKystLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2Vy dGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJmcmVlcmRwL2NvZGVj L2NsZWFyLmMgYi9saWJmcmVlcmRwL2NvZGVjL2NsZWFyLmMKK2luZGV4IGUzOGZhMGRjZi4uMjk5 YWNlZjJlIDEwMDY0NAorLS0tIGEvbGliZnJlZXJkcC9jb2RlYy9jbGVhci5jCisrKysgYi9saWJm cmVlcmRwL2NvZGVjL2NsZWFyLmMKK0BAIC02Miw3ICs2Miw3IEBAIHN0cnVjdCBfQ0xFQVJfQ09O VEVYVAorIAlOU0NfQ09OVEVYVCogbnNjOworIAlVSU5UMzIgc2VxTnVtYmVyOworIAlCWVRFKiBU ZW1wQnVmZmVyOworLQlVSU5UMzIgVGVtcFNpemU7CisrCXNpemVfdCBUZW1wU2l6ZTsKKyAJVUlO VDMyIG5UZW1wU3RlcDsKKyAJVUlOVDMyIFRlbXBGb3JtYXQ7CisgCVVJTlQzMiBmb3JtYXQ7CitA QCAtMzEzLDI0ICszMTMsMjUgQEAgc3RhdGljIEJPT0wgY2xlYXJfZGVjb21wcmVzc19zdWJjb2Rl X3JsZXgod1N0cmVhbSogcywgVUlOVDMyIGJpdG1hcERhdGFCeXRlQ291bnQKKyAKKyBzdGF0aWMg Qk9PTCBjbGVhcl9yZXNpemVfYnVmZmVyKENMRUFSX0NPTlRFWFQqIGNsZWFyLCBVSU5UMzIgd2lk dGgsIFVJTlQzMiBoZWlnaHQpCisgeworLQlVSU5UMzIgc2l6ZTsKKy0KKyAJaWYgKCFjbGVhcikK KyAJCXJldHVybiBGQUxTRTsKKyAKKy0Jc2l6ZSA9ICgod2lkdGggKyAxNikgKiAoaGVpZ2h0ICsg MTYpICogR2V0Qnl0ZXNQZXJQaXhlbChjbGVhci0+Zm9ybWF0KSk7CisrCWNvbnN0IFVJTlQ2NCBz aXplID0gMXVsbCAqICh3aWR0aCArIDE2dWxsKSAqIChoZWlnaHQgKyAxNnVsbCk7CisrCWNvbnN0 IHNpemVfdCBicHAgPSBHZXRCeXRlc1BlclBpeGVsKGNsZWFyLT5mb3JtYXQpOworKwlpZiAoc2l6 ZSA+IFVJTlQzMl9NQVggLyBicHApCisrCQlyZXR1cm4gRkFMU0U7CisgCistCWlmIChzaXplID4g Y2xlYXItPlRlbXBTaXplKQorKwlpZiAoc2l6ZSA+IGNsZWFyLT5UZW1wU2l6ZSAvIGJwcCkKKyAJ eworLQkJQllURSogdG1wID0gKEJZVEUqKXJlYWxsb2MoY2xlYXItPlRlbXBCdWZmZXIsIHNpemUp OworKwkJQllURSogdG1wID0gKEJZVEUqKXJlYWxsb2MoY2xlYXItPlRlbXBCdWZmZXIsIHNpemUg KiBicHApOworIAorIAkJaWYgKCF0bXApCisgCQl7CistCQkJV0xvZ19FUlIoVEFHLCAiY2xlYXIt PlRlbXBCdWZmZXIgcmVhbGxvYyBmYWlsZWQgZm9yICUiIFBSSXUzMiAiIGJ5dGVzIiwgc2l6ZSk7 CisrCQkJV0xvZ19FUlIoVEFHLCAiY2xlYXItPlRlbXBCdWZmZXIgcmVhbGxvYyBmYWlsZWQgZm9y ICUiIFBSSXU2NCAiIGJ5dGVzIiwgc2l6ZSk7CisgCQkJcmV0dXJuIEZBTFNFOworIAkJfQorIAor LQkJY2xlYXItPlRlbXBTaXplID0gc2l6ZTsKKysJCWNsZWFyLT5UZW1wU2l6ZSA9IHNpemUgKiBi cHA7CisgCQljbGVhci0+VGVtcEJ1ZmZlciA9IHRtcDsKKyAJfQorIAorLS0gCisyLjUyLjAKKwoK ZGlmZiAtLWdpdCBhL2NvZGVjLWNsZWFyLWZpeC1kZXN0aW5hdGlvbi1jaGVja3MucGF0Y2ggYi9j b2RlYy1jbGVhci1maXgtZGVzdGluYXRpb24tY2hlY2tzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmU4M2I3NTEKLS0tIC9kZXYvbnVsbAorKysgYi9jb2RlYy1jbGVh ci1maXgtZGVzdGluYXRpb24tY2hlY2tzLnBhdGNoCkBAIC0wLDAgKzEsNDEgQEAKK0Zyb20gNzE3 OGE1NTU0ZDcxNDdhNDdmYjdhODViYmE4YzY4MWY1OWUyYTcxNCBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKK0Zyb206IE9uZHJlaiBIb2x5IDxvaG9seUByZWRoYXQuY29tPgorRGF0ZTogTW9uLCA5 IE1hciAyMDI2IDEzOjU1OjI5ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFtjb2RlYyxjbGVhcl0g Zml4IGRlc3RpbmF0aW9uIGNoZWNrcworCitCYWNrcG9ydCBvZiBjb21taXQgN2Q4ZmRjZTJkMGVm MzM3Y2I4NmNiMzdmYzBjNDM2YzkwNWUwNGQ3Ny4KKworTWFkZS13aXRoOiBDdXJzb3IKKy0tLQor IGxpYmZyZWVyZHAvY29kZWMvY2xlYXIuYyB8IDExICsrKysrKy0tLS0tCisgMSBmaWxlIGNoYW5n ZWQsIDYgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmZy ZWVyZHAvY29kZWMvY2xlYXIuYyBiL2xpYmZyZWVyZHAvY29kZWMvY2xlYXIuYworaW5kZXggYTk4 OWE5YmZmLi40ZGJlNzIzNzYgMTAwNjQ0CistLS0gYS9saWJmcmVlcmRwL2NvZGVjL2NsZWFyLmMK KysrKyBiL2xpYmZyZWVyZHAvY29kZWMvY2xlYXIuYworQEAgLTQ5NCwxNSArNDk0LDE2IEBAIHN0 YXRpYyBCT09MIGNsZWFyX2RlY29tcHJlc3Nfc3ViY29kZWNzX2RhdGEoQ0xFQVJfQ09OVEVYVCog Y2xlYXIsIHdTdHJlYW0qIHMsCisgCQluWERzdFJlbCA9IG5YRHN0ICsgeFN0YXJ0OworIAkJbllE c3RSZWwgPSBuWURzdCArIHlTdGFydDsKKyAKKy0JCWlmICh3aWR0aCA+IG5XaWR0aCkKKysJCWlm ICgxdWxsICogblhEc3RSZWwgKyB3aWR0aCA+IG5Ec3RXaWR0aCkKKyAJCXsKKy0JCQlXTG9nX0VS UihUQUcsICJ3aWR0aCAlIiBQUkl1MTYgIiA+IG5XaWR0aCAlIiBQUkl1MzIgIiIsIHdpZHRoLCBu V2lkdGgpOworKwkJCVdMb2dfRVJSKFRBRywgIm5YRHN0UmVsICUiIFBSSXUzMiAiICsgd2lkdGgg JSIgUFJJdTE2ICIgPiBuRHN0V2lkdGggJSIgUFJJdTMyICIiLAorKwkJCSAgICAgICAgIG5YRHN0 UmVsLCB3aWR0aCwgbkRzdFdpZHRoKTsKKyAJCQlyZXR1cm4gRkFMU0U7CisgCQl9CistCistCQlp ZiAoaGVpZ2h0ID4gbkhlaWdodCkKKysJCWlmICgxdWxsICogbllEc3RSZWwgKyBoZWlnaHQgPiBu RHN0SGVpZ2h0KQorIAkJeworLQkJCVdMb2dfRVJSKFRBRywgImhlaWdodCAlIiBQUkl1MTYgIiA+ IG5IZWlnaHQgJSIgUFJJdTMyICIiLCBoZWlnaHQsIG5IZWlnaHQpOworKwkJCVdMb2dfRVJSKFRB RywgIm5ZRHN0UmVsICUiIFBSSXUzMiAiICsgaGVpZ2h0ICUiIFBSSXUxNiAiID4gbkRzdEhlaWdo dCAlIiBQUkl1MzIgIiIsCisrCQkJICAgICAgICAgbllEc3RSZWwsIGhlaWdodCwgbkRzdEhlaWdo dCk7CisgCQkJcmV0dXJuIEZBTFNFOworIAkJfQorIAorLS0gCisyLjUzLjAKKwoKZGlmZiAtLWdp dCBhL2NvZGVjLWNsZWFyLWZpeC1vZmYtYnktb25lLWxlbmd0aC1jaGVjay5wYXRjaCBiL2NvZGVj LWNsZWFyLWZpeC1vZmYtYnktb25lLWxlbmd0aC1jaGVjay5wYXRjaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi5kMzAwYzFkCi0tLSAvZGV2L251bGwKKysrIGIvY29kZWMtY2xl YXItZml4LW9mZi1ieS1vbmUtbGVuZ3RoLWNoZWNrLnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK0Zy b20gNWIwM2RiMzkyNmJkN2JjMWJmNTgxOWRlMDY4ZWQ3MWE3M2IyNTIzNiBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKK0Zyb206IE9uZHJlaiBIb2x5IDxvaG9seUByZWRoYXQuY29tPgorRGF0ZTog VGh1LCAyMiBKYW4gMjAyNiAxMjo0OToyOCArMDEwMAorU3ViamVjdDogW1BBVENIXSBbY29kZWMs Y2xlYXJdIGZpeCBvZmYgYnkgb25lIGxlbmd0aCBjaGVjaworCitCYWNrcG9ydCBvZiBjb21taXQg Zjg2ODhiNTdmNmNmYWQ5YTBiMDU0NzVhNmFmYmRlMzU1ZmZhYjcyMC4KKworQ28tQXV0aG9yZWQt Qnk6IENsYXVkZSA8bm9yZXBseUBhbnRocm9waWMuY29tPgorLS0tCisgbGliZnJlZXJkcC9jb2Rl Yy9jbGVhci5jIHwgNSArKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEg ZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYmZyZWVyZHAvY29kZWMvY2xlYXIuYyBiL2xp YmZyZWVyZHAvY29kZWMvY2xlYXIuYworaW5kZXggMDlmNWRhZDZkLi40ZjBhZWFkMTAgMTAwNjQ0 CistLS0gYS9saWJmcmVlcmRwL2NvZGVjL2NsZWFyLmMKKysrKyBiL2xpYmZyZWVyZHAvY29kZWMv Y2xlYXIuYworQEAgLTg4MSwxMSArODgxLDE0IEBAIHN0YXRpYyBCT09MIGNsZWFyX2RlY29tcHJl c3NfYmFuZHNfZGF0YShDTEVBUl9DT05URVhUKiBjbGVhciwgd1N0cmVhbSogcywgVUlOVDMyCisg CQkJCWlmIChjb3VudCA+IG5IZWlnaHQpCisgCQkJCQljb3VudCA9IG5IZWlnaHQ7CisgCistCQkJ CWlmIChuWERzdFJlbCArIGkgPiBuRHN0V2lkdGgpCisrCQkJCWlmIChuWERzdFJlbCArIGkgPj0g bkRzdFdpZHRoKQorIAkJCQkJcmV0dXJuIEZBTFNFOworIAorIAkJCQlmb3IgKFVJTlQzMiB5ID0g MDsgeSA8IGNvdW50OyB5KyspCisgCQkJCXsKKysJCQkJCWlmIChuWURzdFJlbCArIHkgPj0gbkRz dEhlaWdodCkKKysJCQkJCQlyZXR1cm4gRkFMU0U7CisrCisgCQkJCQlCWVRFKiBwRHN0UGl4ZWw4 ID0gJnBEc3REYXRhWygobllEc3RSZWwgKyB5KSAqIG5Ec3RTdGVwKSArCisgCQkJCQkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICgoblhEc3RSZWwgKyBpKSAqIEdldEJ5dGVzUGVyUGl4ZWwo RHN0Rm9ybWF0KSldOworIAkJCQkJVUlOVDMyIGNvbG9yID0gUmVhZENvbG9yKGNwU3JjUGl4ZWws IGNsZWFyLT5mb3JtYXQpOworLS0gCisyLjUyLjAKKwoKZGlmZiAtLWdpdCBhL2NvZGVjLWNsZWFy LXVwZGF0ZS1DTEVBUl9WQkFSX0VOVFJZLXNpemUtYWZ0ZXItYWxsb2MucGF0Y2ggYi9jb2RlYy1j bGVhci11cGRhdGUtQ0xFQVJfVkJBUl9FTlRSWS1zaXplLWFmdGVyLWFsbG9jLnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmZmU4NGEKLS0tIC9kZXYvbnVsbAorKysg Yi9jb2RlYy1jbGVhci11cGRhdGUtQ0xFQVJfVkJBUl9FTlRSWS1zaXplLWFmdGVyLWFsbG9jLnBh dGNoCkBAIC0wLDAgKzEsMzUgQEAKK0Zyb20gYTJkZGU2ZDk4MzJjYjAzMmU4Y2YxMmNhYjNkYTg0 ZGFmYmFiOTAwNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9uZHJlaiBIb2x5IDxv aG9seUByZWRoYXQuY29tPgorRGF0ZTogRnJpLCAxMCBBcHIgMjAyNiAxMTozMjowOSArMDIwMAor U3ViamVjdDogW1BBVENIXSBbY29kZWMsY2xlYXJdIHVwZGF0ZSBDTEVBUl9WQkFSX0VOVFJZOjpz aXplIGFmdGVyIGFsbG9jCisKK0JhY2twb3J0IG9mIGNvbW1pdCBhMmRkZTZkOTgzMmNiMDMyZThj ZjEyY2FiM2RhODRkYWZiYWI5MDA2LgorCitNYWRlLXdpdGg6IEN1cnNvcgorLS0tCisgbGliZnJl ZXJkcC9jb2RlYy9jbGVhci5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliZnJlZXJkcC9jb2RlYy9jbGVhci5j IGIvbGliZnJlZXJkcC9jb2RlYy9jbGVhci5jCitpbmRleCBlMzhmYTBkLi5lZGEzMGFkIDEwMDY0 NAorLS0tIGEvbGliZnJlZXJkcC9jb2RlYy9jbGVhci5jCisrKysgYi9saWJmcmVlcmRwL2NvZGVj L2NsZWFyLmMKK0BAIC01NjUsNyArNTY1LDYgQEAgc3RhdGljIEJPT0wgcmVzaXplX3ZiYXJfZW50 cnkoQ0xFQVJfQ09OVEVYVCogY2xlYXIsIENMRUFSX1ZCQVJfRU5UUlkqIHZCYXJFbnRyeSkKKyAJ CWNvbnN0IFVJTlQzMiBvbGRQb3MgPSB2QmFyRW50cnktPnNpemUgKiBicHA7CisgCQljb25zdCBV SU5UMzIgZGlmZlNpemUgPSAodkJhckVudHJ5LT5jb3VudCAtIHZCYXJFbnRyeS0+c2l6ZSkgKiBi cHA7CisgCQlCWVRFKiB0bXA7CistCQl2QmFyRW50cnktPnNpemUgPSB2QmFyRW50cnktPmNvdW50 OworIAkJdG1wID0gKEJZVEUqKXJlYWxsb2ModkJhckVudHJ5LT5waXhlbHMsIDF1bGwgKiB2QmFy RW50cnktPmNvdW50ICogYnBwKTsKKyAKKyAJCWlmICghdG1wKQorQEAgLTU3Niw2ICs1NzUsNyBA QCBzdGF0aWMgQk9PTCByZXNpemVfdmJhcl9lbnRyeShDTEVBUl9DT05URVhUKiBjbGVhciwgQ0xF QVJfVkJBUl9FTlRSWSogdkJhckVudHJ5KQorIAorIAkJbWVtc2V0KCZ0bXBbb2xkUG9zXSwgMCwg ZGlmZlNpemUpOworIAkJdkJhckVudHJ5LT5waXhlbHMgPSB0bXA7CisrCQl2QmFyRW50cnktPnNp emUgPSB2QmFyRW50cnktPmNvdW50OworIAl9CisgCisgCWlmICghdkJhckVudHJ5LT5waXhlbHMg JiYgdkJhckVudHJ5LT5zaXplKQorLS0gCisyLjQ5LjAKKwoKZGlmZiAtLWdpdCBhL2NvZGVjLWNs ZWFyLXVwZGF0ZS1jbGVhcl9nbHlwaF9lbnRyeS1jb3VudC1hZnRlci1hbGxvYy5wYXRjaCBiL2Nv ZGVjLWNsZWFyLXVwZGF0ZS1jbGVhcl9nbHlwaF9lbnRyeS1jb3VudC1hZnRlci1hbGxvYy5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYmU0YzZlCi0tLSAvZGV2L251 bGwKKysrIGIvY29kZWMtY2xlYXItdXBkYXRlLWNsZWFyX2dseXBoX2VudHJ5LWNvdW50LWFmdGVy LWFsbG9jLnBhdGNoCkBAIC0wLDAgKzEsNTcgQEAKK0Zyb20gOTQ3ZmVlYWRmZGRmMDFkMzBkZGE1 YWExNmViYzMzNWJmY2MyM2FlMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9uZHJl aiBIb2x5IDxvaG9seUByZWRoYXQuY29tPgorRGF0ZTogVHVlLCAyOSBBcHIgMjAyNiAxMzo0Mjow MCArMDAwMAorU3ViamVjdDogW1BBVENIXSBbY29kZWMsY2xlYXJdIFVwZGF0ZSBDTEVBUl9HTFlQ SF9FTlRSWTo6Y291bnQgYWZ0ZXIgYWxsb2MKKworQmFja3BvcnQgb2YgY29tbWl0IGM0OWQxYWQ0 M2I4YzdiMzI3OTRkMDI1MGYyNjIzYzJkY2NkN2VmMjUuCisKK0FkYXB0ZWQgZm9yIDIuMTEuNzog dXNlcyBHZXRCeXRlc1BlclBpeGVsIGluc3RlYWQgb2YgRnJlZVJEUEdldEJ5dGVzUGVyUGl4ZWws CitwbGFpbiByZWFsbG9jIGluc3RlYWQgb2Ygd2lucHJfYWxpZ25lZF9yZWNhbGxvYzsgb3ZlcmZs b3cgY2hlY2tzIG1hdGNoIHVwc3RyZWFtCisoc2l6ZV90IGNvdW50LCBobGltaXQgLyBleGNlZWRl ZCBsb2dnaW5nKTsgZ2x5cGhFbnRyeS0+Y291bnQgc2V0IHZpYSAoVUlOVDMyKWNhc3QKK2FmdGVy IHN1Y2Nlc3NmdWwgcmVhbGxvYy4KKworTWFkZS13aXRoOiBDdXJzb3IKKy0tLQorIGxpYmZyZWVy ZHAvY29kZWMvY2xlYXIuYyB8IDIyICsrKysrKysrKysrKysrKysrLS0tLS0KKyAxIGZpbGUgY2hh bmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xp YmZyZWVyZHAvY29kZWMvY2xlYXIuYyBiL2xpYmZyZWVyZHAvY29kZWMvY2xlYXIuYworLS0tIGEv bGliZnJlZXJkcC9jb2RlYy9jbGVhci5jCisrKysgYi9saWJmcmVlcmRwL2NvZGVjL2NsZWFyLmMK K0BAIC05NzksMjAgKzk3OSwzMSBAQAorIAl7CisgCQljb25zdCBVSU5UMzIgYnBwID0gR2V0Qnl0 ZXNQZXJQaXhlbChjbGVhci0+Zm9ybWF0KTsKKyAJCUNMRUFSX0dMWVBIX0VOVFJZKiBnbHlwaEVu dHJ5ID0gJihjbGVhci0+R2x5cGhDYWNoZVtnbHlwaEluZGV4XSk7CistCQlnbHlwaEVudHJ5LT5j b3VudCA9IG5XaWR0aCAqIG5IZWlnaHQ7CisrCQljb25zdCBzaXplX3QgY291bnQgPSAxdWxsICog bldpZHRoICogbkhlaWdodDsKKysJCWNvbnN0IHNpemVfdCBobGltaXQgPSBTSVpFX01BWCAvICgo bldpZHRoID4gMCkgPyBuV2lkdGggOiAxKTsKKysJCWlmICgobldpZHRoID09IDApIHx8IChuSGVp Z2h0ID09IDApIHx8IChobGltaXQgPCBuSGVpZ2h0KSkKKysJCXsKKysJCQljb25zdCBjaGFyKiBl eGNlZWRlZCA9IChobGltaXQgPCBuSGVpZ2h0KSA/ICJ3aXRoaW4iIDogIm91dHNpZGUiOworKwkJ CVdMb2dfRVJSKFRBRywKKysJCQkgICAgICAgICAiQ0xFQVJDT0RFQ19GTEFHX0dMWVBIX0lOREVY OiBuV2lkdGg9JSIgUFJJdTMyICIsIG5IZWlnaHQ9JSIgUFJJdTMyCisrCQkJICAgICAgICAgIiwg bldpZHRoICogbkhlaWdodCBpcyAlcyBhbGxvd2VkIHJhbmdlIiwKKysJCQkgICAgICAgICBuV2lk dGgsIG5IZWlnaHQsIGV4Y2VlZGVkKTsKKysJCQlyZXR1cm4gRkFMU0U7CisrCQl9CisgCistCQlp ZiAoZ2x5cGhFbnRyeS0+Y291bnQgPiBnbHlwaEVudHJ5LT5zaXplKQorKwkJaWYgKGNvdW50ID4g Z2x5cGhFbnRyeS0+c2l6ZSkKKyAJCXsKKyAJCQlCWVRFKiB0bXA7CistCQkJdG1wID0gcmVhbGxv YyhnbHlwaEVudHJ5LT5waXhlbHMsIDF1bGwgKiBnbHlwaEVudHJ5LT5jb3VudCAqIGJwcCk7Cisr CQkJdG1wID0gcmVhbGxvYyhnbHlwaEVudHJ5LT5waXhlbHMsIDF1bGwgKiBjb3VudCAqIGJwcCk7 CisgCisgCQkJaWYgKCF0bXApCisgCQkJeworLQkJCQlXTG9nX0VSUihUQUcsICJnbHlwaEVudHJ5 LT5waXhlbHMgcmVhbGxvYyAlIiBQUkl1MzIgIiBmYWlsZWQhIiwKKy0JCQkJICAgICAgICAgZ2x5 cGhFbnRyeS0+Y291bnQgKiBicHApOworKwkJCQlXTG9nX0VSUihUQUcsICJnbHlwaEVudHJ5LT5w aXhlbHMgcmVhbGxvYyAlIiBQUkl1eiAiIGZhaWxlZCEiLAorKwkJCQkgICAgICAgICBjb3VudCAq IGJwcCk7CisgCQkJCXJldHVybiBGQUxTRTsKKyAJCQl9CisgCisrCQkJZ2x5cGhFbnRyeS0+Y291 bnQgPSAoVUlOVDMyKWNvdW50OworIAkJCWdseXBoRW50cnktPnNpemUgPSBnbHlwaEVudHJ5LT5j b3VudDsKKyAJCQlnbHlwaEVudHJ5LT5waXhlbHMgPSAoVUlOVDMyKil0bXA7CisgCQl9CgpkaWZm IC0tZ2l0IGEvY29kZWMtY29sb3ItYWRkLWZyZWVyZHBfZ2x5cGhfY29udmVydF9leC5wYXRjaCBi L2NvZGVjLWNvbG9yLWFkZC1mcmVlcmRwX2dseXBoX2NvbnZlcnRfZXgucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk3ZjEyNgotLS0gL2Rldi9udWxsCisrKyBiL2Nv ZGVjLWNvbG9yLWFkZC1mcmVlcmRwX2dseXBoX2NvbnZlcnRfZXgucGF0Y2gKQEAgLTAsMCArMSwx MTQgQEAKK0Zyb20gYjU0MDAzYWQyZGNiNjliM2M3ODM2YWUxNDQ1YzQ4YWY4YjM5Y2Q0YyBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9uZHJlaiBIb2x5IDxvaG9seUByZWRoYXQuY29t PgorRGF0ZTogU2F0LCAyOCBNYXIgMjAyNiAxMjoxMzowNCArMDEwMAorU3ViamVjdDogW1BBVENI XSBbY29kZWMsY29sb3JdIGFkZCBmcmVlcmRwX2dseXBoX2NvbnZlcnRfZXgKKworQmFja3BvcnQg b2YgY29tbWl0IDNiYzFlZWI0ZjYzY2VlYzlhNjk2YWYxOTRlNGMxZWEwZTY3ZmY2MGMuCisKK01h ZGUtd2l0aDogQ3Vyc29yCistLS0KKyBsaWJmcmVlcmRwL2NvZGVjL2NvbG9yLmMgIHwgMTIgKysr KysrKysrLS0KKyBsaWJmcmVlcmRwL2dkaS9ncmFwaGljcy5jIHwgNDUgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCA1NSBpbnNlcnRpb25z KCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliZnJlZXJkcC9jb2RlYy9jb2xv ci5jIGIvbGliZnJlZXJkcC9jb2RlYy9jb2xvci5jCitpbmRleCBmODQ2N2MyOTUuLjRjNzJlZTNl NiAxMDA2NDQKKy0tLSBhL2xpYmZyZWVyZHAvY29kZWMvY29sb3IuYworKysrIGIvbGliZnJlZXJk cC9jb2RlYy9jb2xvci5jCitAQCAtMjgsNiArMjgsNyBAQAorICNpbmNsdWRlIDxzdGRsaWIuaD4K KyAKKyAjaW5jbHVkZSA8d2lucHIvY3J0Lmg+CisrI2luY2x1ZGUgPHdpbnByL2Fzc2VydC5oPgor IAorICNpbmNsdWRlIDxmcmVlcmRwL2xvZy5oPgorICNpbmNsdWRlIDxmcmVlcmRwL2ZyZWVyZHAu aD4KK0BAIC00OSwxMyArNTAsMjAgQEAgQllURSogZnJlZXJkcF9nbHlwaF9jb252ZXJ0KFVJTlQz MiB3aWR0aCwgVUlOVDMyIGhlaWdodCwgY29uc3QgQllURSogZGF0YSkKKyAJY29uc3QgQllURSog c3JjcDsKKyAJQllURSogZHN0cDsKKyAJQllURSogZHN0RGF0YTsKKy0JVUlOVDMyIHNjYW5saW5l OworKwlzaXplX3Qgc2NhbmxpbmU7CisrCisgCS8qCisgCSAqIGNvbnZlcnRzIGEgMS1iaXQtcGVy LXBpeGVsIGdseXBoIHRvIGEgb25lLWJ5dGUtcGVyLXBpeGVsIGdseXBoOgorIAkgKiB0aGlzIGFw cHJvYWNoIHVzZXMgYSBsaXR0bGUgbW9yZSBtZW1vcnksIGJ1dCBwcm92aWRlcyBmYXN0ZXIKKyAJ ICogbWVhbnMgb2YgYWNjZXNzaW5nIGluZGl2aWR1YWwgcGl4ZWxzIGluIGJsaXR0aW5nIG9wZXJh dGlvbnMKKyAJICovCistCXNjYW5saW5lID0gKHdpZHRoICsgNykgLyA4OworKwlzY2FubGluZSA9 ICh3aWR0aCArIDd1bGwpIC8gOHVsbDsKKysKKysJaWYgKCh3aWR0aCA9PSAwKSB8fCAoaGVpZ2h0 ID09IDApKQorKwkJcmV0dXJuIE5VTEw7CisrCisrCVdJTlBSX0FTU0VSVChkYXRhKTsKKysKKyAJ ZHN0RGF0YSA9IChCWVRFKilfYWxpZ25lZF9tYWxsb2MoMXVsbCAqIHdpZHRoICogaGVpZ2h0LCAx Nik7CisgCisgCWlmICghZHN0RGF0YSkKK2RpZmYgLS1naXQgYS9saWJmcmVlcmRwL2dkaS9ncmFw aGljcy5jIGIvbGliZnJlZXJkcC9nZGkvZ3JhcGhpY3MuYworaW5kZXggNDc5ZWFjOWI4Li5kYWIx NTljNDMgMTAwNjQ0CistLS0gYS9saWJmcmVlcmRwL2dkaS9ncmFwaGljcy5jCisrKysgYi9saWJm cmVlcmRwL2dkaS9ncmFwaGljcy5jCitAQCAtMjMsNiArMjMsNyBAQAorICNpbmNsdWRlICJjb25m aWcuaCIKKyAjZW5kaWYKKyAKKysjaW5jbHVkZSA8d2lucHIvYXNzZXJ0Lmg+CisgI2luY2x1ZGUg PHdpbnByL2NydC5oPgorIAorICNpbmNsdWRlIDxmcmVlcmRwL2xvZy5oPgorQEAgLTIxNSw2ICsy MTYsNTAgQEAgc3RhdGljIEJPT0wgZ2RpX0JpdG1hcF9TZXRTdXJmYWNlKHJkcENvbnRleHQqIGNv bnRleHQsIHJkcEJpdG1hcCogYml0bWFwLCBCT09MIHAKKyB9CisgCisgLyogR2x5cGggQ2xhc3Mg Ki8KKytzdGF0aWMgQllURSogZnJlZXJkcF9nbHlwaF9jb252ZXJ0X2V4KFVJTlQzMiB3aWR0aCwg VUlOVDMyIGhlaWdodCwgY29uc3QgQllURSogZGF0YSwgc2l6ZV90IGxlbikKKyt7CisrCS8qCisr CSAqIGNvbnZlcnRzIGEgMS1iaXQtcGVyLXBpeGVsIGdseXBoIHRvIGEgb25lLWJ5dGUtcGVyLXBp eGVsIGdseXBoOgorKwkgKiB0aGlzIGFwcHJvYWNoIHVzZXMgYSBsaXR0bGUgbW9yZSBtZW1vcnks IGJ1dCBwcm92aWRlcyBmYXN0ZXIKKysJICogbWVhbnMgb2YgYWNjZXNzaW5nIGluZGl2aWR1YWwg cGl4ZWxzIGluIGJsaXR0aW5nIG9wZXJhdGlvbnMKKysJICovCisrCWNvbnN0IHNpemVfdCBzY2Fu bGluZSA9ICh3aWR0aCArIDd1bGwpIC8gOHVsbDsKKysJY29uc3Qgc2l6ZV90IHJlcXVpcmVkID0g c2NhbmxpbmUgKiBoZWlnaHQ7CisrCWlmIChsZW4gPCByZXF1aXJlZCkKKysJCXJldHVybiBOVUxM OworKworKwlpZiAoKGxlbiA9PSAwKSB8fCAod2lkdGggPT0gMCkgfHwgKGhlaWdodCA9PSAwKSkK KysJCXJldHVybiBOVUxMOworKworKwlXSU5QUl9BU1NFUlQoZGF0YSk7CisrCisrCUJZVEUqIGRz dERhdGEgPSAoQllURSopX2FsaWduZWRfbWFsbG9jKDF1bGwgKiB3aWR0aCAqIGhlaWdodCwgMTYp OworKworKwlpZiAoIWRzdERhdGEpCisrCQlyZXR1cm4gTlVMTDsKKysKKysJWmVyb01lbW9yeShk c3REYXRhLCAxVUxMICogd2lkdGggKiBoZWlnaHQpOworKwlCWVRFKiBkc3RwID0gZHN0RGF0YTsK KysKKysJZm9yIChVSU5UMzIgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykKKysJeworKwkJY29uc3Qg QllURSogc3JjcCA9ICZkYXRhWzF1bGwgKiB5ICogc2NhbmxpbmVdOworKworKwkJZm9yIChVSU5U MzIgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQorKwkJeworKwkJCWlmICgoKnNyY3AgJiAoMHg4MCA+ PiAoeCAlIDgpKSkgIT0gMCkKKysJCQkJKmRzdHAgPSAweEZGOworKworKwkJCWRzdHArKzsKKysK KysJCQlpZiAoKCh4ICsgMSkgJSA4ID09IDApICYmIHggIT0gMCkKKysJCQkJc3JjcCsrOworKwkJ fQorKwl9CisrCisrCXJldHVybiBkc3REYXRhOworK30KKysKKyBzdGF0aWMgQk9PTCBnZGlfR2x5 cGhfTmV3KHJkcENvbnRleHQqIGNvbnRleHQsIGNvbnN0IHJkcEdseXBoKiBnbHlwaCkKKyB7Cisg CUJZVEUqIGRhdGE7CistLSAKKzIuNTMuMAorCgpkaWZmIC0tZ2l0IGEvY29kZWMtZHNwLWFkZC1m b3JtYXQtY2hlY2tzLnBhdGNoIGIvY29kZWMtZHNwLWFkZC1mb3JtYXQtY2hlY2tzLnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhMjM4NzAKLS0tIC9kZXYvbnVsbAor KysgYi9jb2RlYy1kc3AtYWRkLWZvcm1hdC1jaGVja3MucGF0Y2gKQEAgLTAsMCArMSwyMTggQEAK K0Zyb20gNzRmZjhhMDk3YzM2MDY3MTAzMjdlM2FmMjg2M2FhNTJkMmRhYzc5ZSBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9uZHJlaiBIb2x5IDxvaG9seUByZWRoYXQuY29tPgorRGF0 ZTogVHVlLCAyOSBBcHIgMjAyNiAxNToxMDowMCArMDAwMAorU3ViamVjdDogW1BBVENIXSBbY29k ZWMsZHNwXSBhZGQgZm9ybWF0IGNoZWNrcworCitCYWNrcG9ydCBvZiBjb21taXQgMDNiNDhiMzYw MWQ4NjdhZmNjYWMxY2RjNjA4MWRlN2EyNzVlZGNlNy4KKworQWRhcHRlZCBmb3IgMi4xMS54OiB1 c2VzIGBjb250ZXh0LT5mb3JtYXRgIGluc3RlYWQgb2YKK2Bjb250ZXh0LT5jb21tb24uZm9ybWF0 YCwgbm8gYFdJTlBSX1JFU1RSSUNUYCwgYWRkZWQKK2AjaW5jbHVkZSA8d2lucHIvYXNzZXJ0Lmg+ YC4gS2VwdCBDODkgZGVjbGFyYXRpb24gc3R5bGUgaW4KK2BmcmVlcmRwX2RzcF9kZWNvZGVfbXAz YCBhbmQgYGZyZWVyZHBfZHNwX2VuY29kZV9tcDNgLiBPbWl0dGVkCitMQU1FL21wMyB2YXJpYWJs ZSBtb2Rlcm5pemF0aW9uLiBEVklfQURQQ00gYmxvY2sgaW4KK2BmcmVlcmRwX2RzcF9jb250ZXh0 X3Jlc2V0YCBvbWl0cyBGcmFtZXNQZXJQYWNrZXQgc2l6aW5nIGZyb20gdXBzdHJlYW0gMy54Citi dXQgYWRkcyBgU3RyZWFtX1NldFBvc2l0aW9uKGNvbnRleHQtPmJ1ZmZlciwgMClgIGFmdGVyIHZh bGlkYXRpb24gKHNhbWUKK2ludGVudCBhcyB1cHN0cmVhbSBgU3RyZWFtX1Jlc2V0UG9zaXRpb25g KS4gYGZyZWVyZHBfZHNwX2RlY29kZV9pbWFfYWRwY21gCittYXRjaGVzIHVwc3RyZWFtIG9yZGVy OiB2YWxpZGF0ZSBmb3JtYXQgYmVmb3JlIGxvY2FsczsgYG91dF9zaXplYCB1c2VzCitgc2l6ZSAq IDR1bGxgLiBgU3RyZWFtX0J1ZmZlckFzYCByZXBsYWNlZCB3aXRoCitgU3RyZWFtX0J1ZmZlcmAg Y2FzdC4gYG51bGxwdHJgIHJlcGxhY2VkIHdpdGggYE5VTExgLgorCitNYWRlLXdpdGg6IEN1cnNv cgorLS0tCisgbGliZnJlZXJkcC9jb2RlYy9kc3AuYyB8IDk2ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwg OTMgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmZyZWVy ZHAvY29kZWMvZHNwLmMgYi9saWJmcmVlcmRwL2NvZGVjL2RzcC5jCitpbmRleCBhMThkMDQ0Li5l Nzk5MTFkIDEwMDY0NAorLS0tIGEvbGliZnJlZXJkcC9jb2RlYy9kc3AuYworKysrIGIvbGliZnJl ZXJkcC9jb2RlYy9kc3AuYworQEAgLTI3LDYgKzI3LDcgQEAKKyAjaW5jbHVkZSA8c3RyaW5nLmg+ CisgCisgI2luY2x1ZGUgPHdpbnByL2NydC5oPgorKyNpbmNsdWRlIDx3aW5wci9hc3NlcnQuaD4K KyAKKyAjaW5jbHVkZSA8ZnJlZXJkcC90eXBlcy5oPgorICNpbmNsdWRlIDxmcmVlcmRwL2xvZy5o PgorQEAgLTMyOSwxMyArMzMwLDMwIEBACisgCXJldHVybiAoVUlOVDE2KWQ7CisgfQorIAorK3N0 YXRpYyBCT09MIHZhbGlkX2ltYV9hZHBjbV9mb3JtYXQoY29uc3QgRlJFRVJEUF9EU1BfQ09OVEVY VCogY29udGV4dCkKKyt7CisrCVdJTlBSX0FTU0VSVChjb250ZXh0KTsKKysJaWYgKGNvbnRleHQt PmZvcm1hdC53Rm9ybWF0VGFnICE9IFdBVkVfRk9STUFUX0RWSV9BRFBDTSkKKysJCXJldHVybiBG QUxTRTsKKysJaWYgKGNvbnRleHQtPmZvcm1hdC5uQmxvY2tBbGlnbiA8PSA0VUxMKQorKwkJcmV0 dXJuIEZBTFNFOworKwlpZiAoY29udGV4dC0+Zm9ybWF0Lm5DaGFubmVscyA8IDEpCisrCQlyZXR1 cm4gRkFMU0U7CisrCWlmIChjb250ZXh0LT5mb3JtYXQud0JpdHNQZXJTYW1wbGUgPT0gMCkKKysJ CXJldHVybiBGQUxTRTsKKysJcmV0dXJuIFRSVUU7CisrfQorKworIHN0YXRpYyBCT09MIGZyZWVy ZHBfZHNwX2RlY29kZV9pbWFfYWRwY20oRlJFRVJEUF9EU1BfQ09OVEVYVCogY29udGV4dCwgY29u c3QgQllURSogc3JjLCBzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHdTdHJlYW0qIG91dCkKKyB7CisrCWlmICghdmFsaWRfaW1hX2FkcGNtX2Zv cm1hdChjb250ZXh0KSkKKysJCXJldHVybiBGQUxTRTsKKysKKyAJQllURSogZHN0OworIAlCWVRF IHNhbXBsZTsKKyAJVUlOVDE2IGRlY29kZWQ7CistCXNpemVfdCBvdXRfc2l6ZSA9IHNpemUgKiA0 OworKwlzaXplX3Qgb3V0X3NpemUgPSBzaXplICogNHVsbDsKKyAJVUlOVDMyIGNoYW5uZWw7Cisg CWNvbnN0IFVJTlQzMiBibG9ja19zaXplID0gY29udGV4dC0+Zm9ybWF0Lm5CbG9ja0FsaWduOwor IAljb25zdCBVSU5UMzIgY2hhbm5lbHMgPSBjb250ZXh0LT5mb3JtYXQubkNoYW5uZWxzOworQEAg LTQ2NCw2ICs0ODIsMjAgQEAKKyAjZW5kaWYKKyAKKyAjaWYgZGVmaW5lZChXSVRIX0xBTUUpCisr c3RhdGljIEJPT0wgdmFsaWRfbXAzX2Zvcm1hdChjb25zdCBGUkVFUkRQX0RTUF9DT05URVhUKiBj b250ZXh0KQorK3sKKysJV0lOUFJfQVNTRVJUKGNvbnRleHQpOworKwlpZiAoY29udGV4dC0+Zm9y bWF0LndGb3JtYXRUYWcgIT0gV0FWRV9GT1JNQVRfTVBFR0xBWUVSMykKKysJCXJldHVybiBGQUxT RTsKKysJaWYgKGNvbnRleHQtPmZvcm1hdC5uQ2hhbm5lbHMgPCAxKQorKwkJcmV0dXJuIEZBTFNF OworKwlpZiAoY29udGV4dC0+Zm9ybWF0LndCaXRzUGVyU2FtcGxlID09IDApCisrCQlyZXR1cm4g RkFMU0U7CisrCWlmIChjb250ZXh0LT5mb3JtYXQublNhbXBsZXNQZXJTZWMgPT0gMCkKKysJCXJl dHVybiBGQUxTRTsKKysJcmV0dXJuIFRSVUU7CisrfQorKworIHN0YXRpYyBCT09MIGZyZWVyZHBf ZHNwX2RlY29kZV9tcDMoRlJFRVJEUF9EU1BfQ09OVEVYVCogY29udGV4dCwgY29uc3QgQllURSog c3JjLCBzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdT dHJlYW0qIG91dCkKKyB7CitAQCAtNDc0LDYgKzUwNiw4IEBACisgCisgCWlmICghY29udGV4dCB8 fCAhc3JjIHx8ICFvdXQpCisgCQlyZXR1cm4gRkFMU0U7CisrCWlmICghdmFsaWRfbXAzX2Zvcm1h dChjb250ZXh0KSkKKysJCXJldHVybiBGQUxTRTsKKyAKKyAJYnVmZmVyX3NpemUgPSAyICogY29u dGV4dC0+Zm9ybWF0Lm5DaGFubmVscyAqIGNvbnRleHQtPmZvcm1hdC5uU2FtcGxlc1BlclNlYzsK KyAKK0BAIC01MDksNiArNTQzLDkgQEAKKyAJaWYgKCFjb250ZXh0IHx8ICFzcmMgfHwgIW91dCkK KyAJCXJldHVybiBGQUxTRTsKKyAKKysJaWYgKCF2YWxpZF9tcDNfZm9ybWF0KGNvbnRleHQpKQor KwkJcmV0dXJuIEZBTFNFOworKworIAlzYW1wbGVzX3Blcl9jaGFubmVsID0gc2l6ZSAvIGNvbnRl eHQtPmZvcm1hdC5uQ2hhbm5lbHMgLyBjb250ZXh0LT5mb3JtYXQud0JpdHNQZXJTYW1wbGUgLyA4 OworIAorIAkvKiBFbnN1cmUgd29yc3QgY2FzZSBidWZmZXIgc2l6ZSBmb3IgbXAzIHN0cmVhbSB0 YWtlbiBmcm9tIExBTUUgaGVhZGVyICovCitAQCAtNzE2LDYgKzc1MywxMCBAQAorIAlCWVRFIGVu Y29kZWQ7CisgCXNpemVfdCBvdXRfc2l6ZTsKKyAJc2l6ZV90IGFsaWduOworKworKwlpZiAoIXZh bGlkX2ltYV9hZHBjbV9mb3JtYXQoY29udGV4dCkpCisrCQlyZXR1cm4gRkFMU0U7CisrCisgCW91 dF9zaXplID0gc2l6ZSAvIDI7CisgCisgCWlmICghU3RyZWFtX0Vuc3VyZVJlbWFpbmluZ0NhcGFj aXR5KG91dCwgc2l6ZSkpCitAQCAtNzg4LDYgKzgyOSwyMCBAQAorIAorIHN0YXRpYyBjb25zdCBJ TlQzMiBtc19hZHBjbV9jb2VmZnMyWzddID0geyAwLCAtMjU2LCAwLCA2NCwgMCwgLTIwOCwgLTIz MiB9OworIAorK3N0YXRpYyBCT09MIHZhbGlkX21zX2FkcGNtX2Zvcm1hdChjb25zdCBGUkVFUkRQ X0RTUF9DT05URVhUKiBjb250ZXh0KQorK3sKKysJV0lOUFJfQVNTRVJUKGNvbnRleHQpOworKwlp ZiAoY29udGV4dC0+Zm9ybWF0LndGb3JtYXRUYWcgIT0gV0FWRV9GT1JNQVRfQURQQ00pCisrCQly ZXR1cm4gRkFMU0U7CisrCWlmIChjb250ZXh0LT5mb3JtYXQubkJsb2NrQWxpZ24gPD0gNFVMTCkK KysJCXJldHVybiBGQUxTRTsKKysJaWYgKGNvbnRleHQtPmZvcm1hdC5uQ2hhbm5lbHMgPCAxKQor KwkJcmV0dXJuIEZBTFNFOworKwlpZiAoY29udGV4dC0+Zm9ybWF0LndCaXRzUGVyU2FtcGxlID09 IDApCisrCQlyZXR1cm4gRkFMU0U7CisrCXJldHVybiBUUlVFOworK30KKysKKyBzdGF0aWMgSU5M SU5FIElOVDE2IGZyZWVyZHBfZHNwX2RlY29kZV9tc19hZHBjbV9zYW1wbGUoQURQQ00qIGFkcGNt LCBCWVRFIHNhbXBsZSwgaW50IGNoYW5uZWwpCisgeworIAlJTlQ4IG5pYmJsZTsKK0BAIC04MTks NiArODc0LDkgQEAKKyAJQllURSogZHN0OworIAlCWVRFIHNhbXBsZTsKKyAJY29uc3Qgc2l6ZV90 IG91dF9zaXplID0gc2l6ZSAqIDQ7CisrCisrCWlmICghdmFsaWRfbXNfYWRwY21fZm9ybWF0KGNv bnRleHQpKQorKwkJcmV0dXJuIEZBTFNFOworIAljb25zdCBVSU5UMzIgY2hhbm5lbHMgPSBjb250 ZXh0LT5mb3JtYXQubkNoYW5uZWxzOworIAljb25zdCBVSU5UMzIgYmxvY2tfc2l6ZSA9IGNvbnRl eHQtPmZvcm1hdC5uQmxvY2tBbGlnbjsKKyAKK0BAIC05NDcsNiArMTAwNSwxMCBAQAorIAlJTlQz MiBzYW1wbGU7CisgCXNpemVfdCBvdXRfc2l6ZTsKKyAJY29uc3Qgc2l6ZV90IHN0ZXAgPSA4ICsg KChjb250ZXh0LT5mb3JtYXQubkNoYW5uZWxzID4gMSkgPyA0IDogMCk7CisrCisrCWlmICghdmFs aWRfbXNfYWRwY21fZm9ybWF0KGNvbnRleHQpKQorKwkJcmV0dXJuIEZBTFNFOworKworIAlvdXRf c2l6ZSA9IHNpemUgLyAyOworIAorIAlpZiAoIVN0cmVhbV9FbnN1cmVSZW1haW5pbmdDYXBhY2l0 eShvdXQsIHNpemUpKQorQEAgLTEzMDgsNiArMTM3MCwyOCBAQAorIAkJcmV0dXJuIEZBTFNFOwor IAorIAljb250ZXh0LT5mb3JtYXQgPSAqdGFyZ2V0Rm9ybWF0OworKworKwlzd2l0Y2ggKGNvbnRl eHQtPmZvcm1hdC53Rm9ybWF0VGFnKQorKwl7CisrI2lmIGRlZmluZWQoV0lUSF9MQU1FKQorKwkJ Y2FzZSBXQVZFX0ZPUk1BVF9NUEVHTEFZRVIzOgorKwkJCWlmICghdmFsaWRfbXAzX2Zvcm1hdChj b250ZXh0KSkKKysJCQkJcmV0dXJuIEZBTFNFOworKwkJCWJyZWFrOworKyNlbmRpZgorKwkJY2Fz ZSBXQVZFX0ZPUk1BVF9BRFBDTToKKysJCQlpZiAoIXZhbGlkX21zX2FkcGNtX2Zvcm1hdChjb250 ZXh0KSkKKysJCQkJcmV0dXJuIEZBTFNFOworKwkJCWJyZWFrOworKwkJY2FzZSBXQVZFX0ZPUk1B VF9EVklfQURQQ006CisrCQkJaWYgKCF2YWxpZF9pbWFfYWRwY21fZm9ybWF0KGNvbnRleHQpKQor KwkJCQlyZXR1cm4gRkFMU0U7CisrCQkJU3RyZWFtX1NldFBvc2l0aW9uKGNvbnRleHQtPmJ1ZmZl ciwgMCk7CisrCQkJYnJlYWs7CisrCQlkZWZhdWx0OgorKwkJCWJyZWFrOworKwl9CisrCisgI2lm IGRlZmluZWQoV0lUSF9GQUFEMikKKyAJY29udGV4dC0+ZmFhZFNldHVwID0gRkFMU0U7CisgI2Vu ZGlmCitAQCAtMTMyOCwxOSArMTQxMiwyNCBAQAorIAorIAkJY2ZnID0gZmFhY0VuY0dldEN1cnJl bnRDb25maWd1cmF0aW9uKGNvbnRleHQtPmZhYWMpOworIAkJY2ZnLT5iaXRSYXRlID0gMTAwMDA7 CistCQlmYWFjRW5jU2V0Q29uZmlndXJhdGlvbihjb250ZXh0LT5mYWFjLCBjZmcpOworKwkJewor KwkJCWNvbnN0IGludCBmcmMgPSBmYWFjRW5jU2V0Q29uZmlndXJhdGlvbihjb250ZXh0LT5mYWFj LCBjZmcpOworKwkJCWlmIChmcmMgPD0gMCkKKysJCQkJcmV0dXJuIEZBTFNFOworKwkJfQorIAl9 CisgCisgI2VuZGlmCisgI2lmIGRlZmluZWQoV0lUSF9TT1hSKQorIAl7CisgCQlzb3hyX2lvX3Nw ZWNfdCBpb3NwZWMgPSBzb3hyX2lvX3NwZWMoU09YUl9JTlQxNiwgU09YUl9JTlQxNik7CistCQlz b3hyX2Vycm9yX3QgZXJyb3I7CisrCQlzb3hyX2Vycm9yX3QgZXJyb3IgPSBOVUxMOworKworIAkJ c294cl9kZWxldGUoY29udGV4dC0+c294KTsKKyAJCWNvbnRleHQtPnNveCA9IHNveHJfY3JlYXRl KGNvbnRleHQtPmZvcm1hdC5uU2FtcGxlc1BlclNlYywgdGFyZ2V0Rm9ybWF0LT5uU2FtcGxlc1Bl clNlYywKKyAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEZvcm1hdC0+bkNoYW5u ZWxzLCAmZXJyb3IsICZpb3NwZWMsIE5VTEwsIE5VTEwpOworIAorLQkJaWYgKCFjb250ZXh0LT5z b3ggfHwgKGVycm9yICE9IDApKQorKwkJaWYgKCFjb250ZXh0LT5zb3ggfHwgKGVycm9yICE9IE5V TEwpKQorIAkJCXJldHVybiBGQUxTRTsKKyAJfQorICNlbmRpZgoKZGlmZiAtLWdpdCBhL2NvZGVj LWRzcC1maXgtYXJyYXktYm91bmRzLWNoZWNrcy5wYXRjaCBiL2NvZGVjLWRzcC1maXgtYXJyYXkt Ym91bmRzLWNoZWNrcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4w NzU0ZmVjCi0tLSAvZGV2L251bGwKKysrIGIvY29kZWMtZHNwLWZpeC1hcnJheS1ib3VuZHMtY2hl Y2tzLnBhdGNoCkBAIC0wLDAgKzEsMjM3IEBACitGcm9tIGFhZjMzMzg2MmZiNTRkNGNmYzE5YTE4 NjZiNzY1MDBkODY2Nzk3MTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPbmRyZWog SG9seSA8b2hvbHlAcmVkaGF0LmNvbT4KK0RhdGU6IFR1ZSwgMjggQXByIDIwMjYgMDQ6NDE6MTUg KzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gW2NvZGVjLGRzcF0gZml4IGFycmF5IGJvdW5kcyBjaGVj a3MKKworQmFja3BvcnQgb2YgY29tbWl0IDE2ZGYyMzAwZTFlM2Y1YTUxZjY4ZmIxNjI2NDI5ZTU4 YjUzMWI3YzguCisKK0FkYXB0ZWQgZm9yIDIuMTEueDogdXNlcyBDODkgZGVjbGFyYXRpb24gc3R5 bGUgKHZhcmlhYmxlcyBkZWNsYXJlZAorYXQgdG9wIG9mIHNjb3BlLCBuZXcgdmFyaWFibGVzIHdy YXBwZWQgaW4gYmxvY2tzKSwgbm8KK2BXSU5QUl9SRVNUUklDVGAsIGtlcHQgYGludCBjaGFubmVs YCBpbiBkZWNvZGUgZnVuY3Rpb24sCitgZHNwX2VuY29kZV9pbWFfYWRwY21fc2FtcGxlYCBrZWVw cyBgaW50IGNoYW5uZWxgLgorCitNYWRlLXdpdGg6IEN1cnNvcgorLS0tCisgbGliZnJlZXJkcC9j b2RlYy9kc3AuYyB8IDkxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0t LQorIDEgZmlsZSBjaGFuZ2VkLCA4MiBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQorCitk aWZmIC0tZ2l0IGEvbGliZnJlZXJkcC9jb2RlYy9kc3AuYyBiL2xpYmZyZWVyZHAvY29kZWMvZHNw LmMKK2luZGV4IGU3OTkxMWQuLjZkNGY3ODAgMTAwNjQ0CistLS0gYS9saWJmcmVlcmRwL2NvZGVj L2RzcC5jCisrKysgYi9saWJmcmVlcmRwL2NvZGVjL2RzcC5jCitAQCAtMjk3LDcgKzI5NywxNiBA QCBzdGF0aWMgVUlOVDE2IGRzcF9kZWNvZGVfaW1hX2FkcGNtX3NhbXBsZShBRFBDTSogYWRwY20s IHVuc2lnbmVkIGludCBjaGFubmVsLCBCWQorIHsKKyAJSU5UMzIgc3M7CisgCUlOVDMyIGQ7Cist CXNzID0gaW1hX3N0ZXBfc2l6ZV90YWJsZVthZHBjbS0+aW1hLmxhc3Rfc3RlcFtjaGFubmVsXV07 CisrCUlOVDE2IG9mZnNldDsKKysKKysJV0lOUFJfQVNTRVJUKGNoYW5uZWwgPCBBUlJBWVNJWkUo YWRwY20tPmltYS5sYXN0X3N0ZXApKTsKKysJV0lOUFJfQVNTRVJUKGNoYW5uZWwgPCBBUlJBWVNJ WkUoYWRwY20tPmltYS5sYXN0X3NhbXBsZSkpOworKworKwlvZmZzZXQgPSBhZHBjbS0+aW1hLmxh c3Rfc3RlcFtjaGFubmVsXTsKKysJV0lOUFJfQVNTRVJUKG9mZnNldCA+PSAwKTsKKysJV0lOUFJf QVNTRVJUKG9mZnNldCA8IEFSUkFZU0laRShpbWFfc3RlcF9zaXplX3RhYmxlKSk7CisrCisrCXNz ID0gaW1hX3N0ZXBfc2l6ZV90YWJsZVtvZmZzZXRdOworIAlkID0gKHNzID4+IDMpOworIAorIAlp ZiAoc2FtcGxlICYgMSkKK0BAIC0zMjAsNiArMzI5LDggQEAgc3RhdGljIFVJTlQxNiBkc3BfZGVj b2RlX2ltYV9hZHBjbV9zYW1wbGUoQURQQ00qIGFkcGNtLCB1bnNpZ25lZCBpbnQgY2hhbm5lbCwg QlkKKyAJCWQgPSAzMjc2NzsKKyAKKyAJYWRwY20tPmltYS5sYXN0X3NhbXBsZVtjaGFubmVsXSA9 IChJTlQxNilkOworKworKwlXSU5QUl9BU1NFUlQoc2FtcGxlIDwgQVJSQVlTSVpFKGltYV9zdGVw X2luZGV4X3RhYmxlKSk7CisgCWFkcGNtLT5pbWEubGFzdF9zdGVwW2NoYW5uZWxdICs9IGltYV9z dGVwX2luZGV4X3RhYmxlW3NhbXBsZV07CisgCisgCWlmIChhZHBjbS0+aW1hLmxhc3Rfc3RlcFtj aGFubmVsXSA8IDApCitAQCAtMzY4LDYgKzM3OSw5IEBAIHN0YXRpYyBCT09MIGZyZWVyZHBfZHNw X2RlY29kZV9pbWFfYWRwY20oRlJFRVJEUF9EU1BfQ09OVEVYVCogY29udGV4dCwgY29uc3QgQllU CisgCXsKKyAJCWlmIChzaXplICUgYmxvY2tfc2l6ZSA9PSAwKQorIAkJeworKwkJCWlmIChzaXpl IDwgNCkKKysJCQkJcmV0dXJuIEZBTFNFOworKworIAkJCWNvbnRleHQtPmFkcGNtLmltYS5sYXN0 X3NhbXBsZVswXSA9CisgCQkJICAgIChJTlQxNikoKChVSU5UMTYpKCpzcmMpKSB8ICgoKFVJTlQx NikoKihzcmMgKyAxKSkpIDw8IDgpKTsKKyAJCQljb250ZXh0LT5hZHBjbS5pbWEubGFzdF9zdGVw WzBdID0gKElOVDE2KSgqKHNyYyArIDIpKTsKK0BAIC0zNzcsNiArMzkxLDggQEAgc3RhdGljIEJP T0wgZnJlZXJkcF9kc3BfZGVjb2RlX2ltYV9hZHBjbShGUkVFUkRQX0RTUF9DT05URVhUKiBjb250 ZXh0LCBjb25zdCBCWVQKKyAKKyAJCQlpZiAoY2hhbm5lbHMgPiAxKQorIAkJCXsKKysJCQkJaWYg KHNpemUgPCA0KQorKwkJCQkJcmV0dXJuIEZBTFNFOworIAkJCQljb250ZXh0LT5hZHBjbS5pbWEu bGFzdF9zYW1wbGVbMV0gPQorIAkJCQkgICAgKElOVDE2KSgoKFVJTlQxNikoKnNyYykpIHwgKCgo VUlOVDE2KSgqKHNyYyArIDEpKSkgPDwgOCkpOworIAkJCQljb250ZXh0LT5hZHBjbS5pbWEubGFz dF9zdGVwWzFdID0gKElOVDE2KSgqKHNyYyArIDIpKTsKK0BAIC0zODgsNiArNDA0LDggQEAgc3Rh dGljIEJPT0wgZnJlZXJkcF9kc3BfZGVjb2RlX2ltYV9hZHBjbShGUkVFUkRQX0RTUF9DT05URVhU KiBjb250ZXh0LCBjb25zdCBCWVQKKyAKKyAJCWlmIChjaGFubmVscyA+IDEpCisgCQl7CisrCQkJ aWYgKHNpemUgPCA4KQorKwkJCQlyZXR1cm4gRkFMU0U7CisgCQkJZm9yIChpID0gMDsgaSA8IDg7 IGkrKykKKyAJCQl7CisgCQkJCWNoYW5uZWwgPSAoaSA8IDQgPyAwIDogMSk7CitAQCAtNDA3LDYg KzQyNSw4IEBAIHN0YXRpYyBCT09MIGZyZWVyZHBfZHNwX2RlY29kZV9pbWFfYWRwY20oRlJFRVJE UF9EU1BfQ09OVEVYVCogY29udGV4dCwgY29uc3QgQllUCisgCQl9CisgCQllbHNlCisgCQl7Cisr CQkJaWYgKHNpemUgPCAxKQorKwkJCQlyZXR1cm4gRkFMU0U7CisgCQkJc2FtcGxlID0gKCgqc3Jj KSAmIDB4MGYpOworIAkJCWRlY29kZWQgPSBkc3BfZGVjb2RlX2ltYV9hZHBjbV9zYW1wbGUoJmNv bnRleHQtPmFkcGNtLCAwLCBzYW1wbGUpOworIAkJCSpkc3QrKyA9IChkZWNvZGVkICYgMHhGRik7 CitAQCAtNjg3LDcgKzcwNywxNiBAQCBzdGF0aWMgQllURSBkc3BfZW5jb2RlX2ltYV9hZHBjbV9z YW1wbGUoQURQQ00qIGFkcGNtLCBpbnQgY2hhbm5lbCwgSU5UMTYgc2FtcGxlKQorIAlJTlQzMiBz czsKKyAJQllURSBlbmM7CisgCUlOVDMyIGRpZmY7CistCXNzID0gaW1hX3N0ZXBfc2l6ZV90YWJs ZVthZHBjbS0+aW1hLmxhc3Rfc3RlcFtjaGFubmVsXV07CisrCUlOVDE2IG9mZnNldDsKKysKKysJ V0lOUFJfQVNTRVJUKGNoYW5uZWwgPCBBUlJBWVNJWkUoYWRwY20tPmltYS5sYXN0X3N0ZXApKTsK KysJV0lOUFJfQVNTRVJUKGNoYW5uZWwgPCBBUlJBWVNJWkUoYWRwY20tPmltYS5sYXN0X3NhbXBs ZSkpOworKworKwlvZmZzZXQgPSBhZHBjbS0+aW1hLmxhc3Rfc3RlcFtjaGFubmVsXTsKKysJV0lO UFJfQVNTRVJUKG9mZnNldCA+PSAwKTsKKysJV0lOUFJfQVNTRVJUKG9mZnNldCA8IEFSUkFZU0la RShpbWFfc3RlcF9zaXplX3RhYmxlKSk7CisrCisrCXNzID0gaW1hX3N0ZXBfc2l6ZV90YWJsZVtv ZmZzZXRdOworIAlkID0gZSA9IHNhbXBsZSAtIGFkcGNtLT5pbWEubGFzdF9zYW1wbGVbY2hhbm5l bF07CisgCWRpZmYgPSBzcyA+PiAzOworIAllbmMgPSAwOworQEAgLTczMyw2ICs3NjIsOCBAQCBz dGF0aWMgQllURSBkc3BfZW5jb2RlX2ltYV9hZHBjbV9zYW1wbGUoQURQQ00qIGFkcGNtLCBpbnQg Y2hhbm5lbCwgSU5UMTYgc2FtcGxlKQorIAkJZGlmZiA9IDMyNzY3OworIAorIAlhZHBjbS0+aW1h Lmxhc3Rfc2FtcGxlW2NoYW5uZWxdID0gKElOVDE2KWRpZmY7CisrCisrCVdJTlBSX0FTU0VSVChl bmMgPCBBUlJBWVNJWkUoaW1hX3N0ZXBfaW5kZXhfdGFibGUpKTsKKyAJYWRwY20tPmltYS5sYXN0 X3N0ZXBbY2hhbm5lbF0gKz0gaW1hX3N0ZXBfaW5kZXhfdGFibGVbZW5jXTsKKyAKKyAJaWYgKGFk cGNtLT5pbWEubGFzdF9zdGVwW2NoYW5uZWxdIDwgMCkKK0BAIC04NDcsMTAgKzg3OCwyNCBAQCBz dGF0aWMgSU5MSU5FIElOVDE2IGZyZWVyZHBfZHNwX2RlY29kZV9tc19hZHBjbV9zYW1wbGUoQURQ Q00qIGFkcGNtLCBCWVRFIHNhbXBsZQorIHsKKyAJSU5UOCBuaWJibGU7CisgCUlOVDMyIHByZXNh bXBsZTsKKysJQllURSBwcmVkaWN0b3I7CisrCUlOVDMyIGNvZWZmMSA9IDA7CisrCUlOVDMyIGNv ZWZmMiA9IDA7CisrCisrCVdJTlBSX0FTU0VSVChjaGFubmVsIDwgQVJSQVlTSVpFKGFkcGNtLT5t cy5zYW1wbGUxKSk7CisrCVdJTlBSX0FTU0VSVChjaGFubmVsIDwgQVJSQVlTSVpFKGFkcGNtLT5t cy5zYW1wbGUyKSk7CisrCVdJTlBSX0FTU0VSVChjaGFubmVsIDwgQVJSQVlTSVpFKGFkcGNtLT5t cy5kZWx0YSkpOworKwlXSU5QUl9BU1NFUlQoY2hhbm5lbCA8IEFSUkFZU0laRShhZHBjbS0+bXMu cHJlZGljdG9yKSk7CisrCisgCW5pYmJsZSA9IChzYW1wbGUgJiAweDA4ID8gKElOVDgpc2FtcGxl IC0gMTYgOiAoSU5UOClzYW1wbGUpOworLQlwcmVzYW1wbGUgPSAoKGFkcGNtLT5tcy5zYW1wbGUx W2NoYW5uZWxdICogbXNfYWRwY21fY29lZmZzMVthZHBjbS0+bXMucHJlZGljdG9yW2NoYW5uZWxd XSkgKworLQkgICAgICAgICAgICAgKGFkcGNtLT5tcy5zYW1wbGUyW2NoYW5uZWxdICogbXNfYWRw Y21fY29lZmZzMlthZHBjbS0+bXMucHJlZGljdG9yW2NoYW5uZWxdXSkpIC8KKy0JICAgICAgICAg ICAgMjU2OworKwlwcmVkaWN0b3IgPSBhZHBjbS0+bXMucHJlZGljdG9yW2NoYW5uZWxdOworKwlp ZiAocHJlZGljdG9yIDwgQVJSQVlTSVpFKG1zX2FkcGNtX2NvZWZmczEpKQorKwkJY29lZmYxID0g bXNfYWRwY21fY29lZmZzMVtwcmVkaWN0b3JdOworKworKwlpZiAocHJlZGljdG9yIDwgQVJSQVlT SVpFKG1zX2FkcGNtX2NvZWZmczIpKQorKwkJY29lZmYyID0gbXNfYWRwY21fY29lZmZzMltwcmVk aWN0b3JdOworKwlwcmVzYW1wbGUgPQorKwkgICAgKChhZHBjbS0+bXMuc2FtcGxlMVtjaGFubmVs XSAqIGNvZWZmMSkgKyAoYWRwY20tPm1zLnNhbXBsZTJbY2hhbm5lbF0gKiBjb2VmZjIpKSAvIDI1 NjsKKyAJcHJlc2FtcGxlICs9IG5pYmJsZSAqIGFkcGNtLT5tcy5kZWx0YVtjaGFubmVsXTsKKyAK KyAJaWYgKHByZXNhbXBsZSA+IDMyNzY3KQorQEAgLTg2MCw3ICs5MDUsMTQgQEAgc3RhdGljIElO TElORSBJTlQxNiBmcmVlcmRwX2RzcF9kZWNvZGVfbXNfYWRwY21fc2FtcGxlKEFEUENNKiBhZHBj bSwgQllURSBzYW1wbGUKKyAKKyAJYWRwY20tPm1zLnNhbXBsZTJbY2hhbm5lbF0gPSBhZHBjbS0+ bXMuc2FtcGxlMVtjaGFubmVsXTsKKyAJYWRwY20tPm1zLnNhbXBsZTFbY2hhbm5lbF0gPSBwcmVz YW1wbGU7CistCWFkcGNtLT5tcy5kZWx0YVtjaGFubmVsXSA9IGFkcGNtLT5tcy5kZWx0YVtjaGFu bmVsXSAqIG1zX2FkcGNtX2FkYXB0YXRpb25fdGFibGVbc2FtcGxlXSAvIDI1NjsKKysKKysJewor KwkJSU5UMzIgdGFibGV2YWwgPSAwOworKwkJaWYgKHNhbXBsZSA8IEFSUkFZU0laRShtc19hZHBj bV9hZGFwdGF0aW9uX3RhYmxlKSkKKysJCQl0YWJsZXZhbCA9IG1zX2FkcGNtX2FkYXB0YXRpb25f dGFibGVbc2FtcGxlXTsKKysKKysJCWFkcGNtLT5tcy5kZWx0YVtjaGFubmVsXSA9IGFkcGNtLT5t cy5kZWx0YVtjaGFubmVsXSAqIHRhYmxldmFsIC8gMjU2OworKwl9CisgCisgCWlmIChhZHBjbS0+ bXMuZGVsdGFbY2hhbm5lbF0gPCAxNikKKyAJCWFkcGNtLT5tcy5kZWx0YVtjaGFubmVsXSA9IDE2 OworQEAgLTg5MSw2ICs5NDMsOSBAQCBzdGF0aWMgQk9PTCBmcmVlcmRwX2RzcF9kZWNvZGVfbXNf YWRwY20oRlJFRVJEUF9EU1BfQ09OVEVYVCogY29udGV4dCwgY29uc3QgQllURQorIAkJeworIAkJ CWlmIChjaGFubmVscyA+IDEpCisgCQkJeworKwkJCQlpZiAoc2l6ZSA8IDE0KQorKwkJCQkJcmV0 dXJuIEZBTFNFOworKworIAkJCQljb250ZXh0LT5hZHBjbS5tcy5wcmVkaWN0b3JbMF0gPSAqc3Jj Kys7CisgCQkJCWNvbnRleHQtPmFkcGNtLm1zLnByZWRpY3RvclsxXSA9ICpzcmMrKzsKKyAJCQkJ Y29udGV4dC0+YWRwY20ubXMuZGVsdGFbMF0gPSByZWFkX2ludDE2KHNyYyk7CitAQCAtOTE3LDYg Kzk3Miw5IEBAIHN0YXRpYyBCT09MIGZyZWVyZHBfZHNwX2RlY29kZV9tc19hZHBjbShGUkVFUkRQ X0RTUF9DT05URVhUKiBjb250ZXh0LCBjb25zdCBCWVRFCisgCQkJfQorIAkJCWVsc2UKKyAJCQl7 CisrCQkJCWlmIChzaXplIDwgNykKKysJCQkJCXJldHVybiBGQUxTRTsKKysKKyAJCQkJY29udGV4 dC0+YWRwY20ubXMucHJlZGljdG9yWzBdID0gKnNyYysrOworIAkJCQljb250ZXh0LT5hZHBjbS5t cy5kZWx0YVswXSA9IHJlYWRfaW50MTYoc3JjKTsKKyAJCQkJc3JjICs9IDI7CitAQCAtOTM0LDEy ICs5OTIsMTYgQEAgc3RhdGljIEJPT0wgZnJlZXJkcF9kc3BfZGVjb2RlX21zX2FkcGNtKEZSRUVS RFBfRFNQX0NPTlRFWFQqIGNvbnRleHQsIGNvbnN0IEJZVEUKKyAKKyAJCWlmIChjaGFubmVscyA+ IDEpCisgCQl7CisrCQkJaWYgKHNpemUgPCAxKQorKwkJCQlyZXR1cm4gRkFMU0U7CisgCQkJc2Ft cGxlID0gKnNyYysrOworIAkJCXNpemUtLTsKKyAJCQl3cml0ZV9pbnQxNihkc3QsIGZyZWVyZHBf ZHNwX2RlY29kZV9tc19hZHBjbV9zYW1wbGUoJmNvbnRleHQtPmFkcGNtLCBzYW1wbGUgPj4gNCwg MCkpOworIAkJCWRzdCArPSAyOworIAkJCXdyaXRlX2ludDE2KGRzdCwgZnJlZXJkcF9kc3BfZGVj b2RlX21zX2FkcGNtX3NhbXBsZSgmY29udGV4dC0+YWRwY20sIHNhbXBsZSAmIDB4MEYsIDEpKTsK KyAJCQlkc3QgKz0gMjsKKysJCQlpZiAoc2l6ZSA8IDEpCisrCQkJCXJldHVybiBGQUxTRTsKKyAJ CQlzYW1wbGUgPSAqc3JjKys7CisgCQkJc2l6ZS0tOworIAkJCXdyaXRlX2ludDE2KGRzdCwgZnJl ZXJkcF9kc3BfZGVjb2RlX21zX2FkcGNtX3NhbXBsZSgmY29udGV4dC0+YWRwY20sIHNhbXBsZSA+ PiA0LCAwKSk7CitAQCAtOTQ5LDYgKzEwMTEsOCBAQCBzdGF0aWMgQk9PTCBmcmVlcmRwX2RzcF9k ZWNvZGVfbXNfYWRwY20oRlJFRVJEUF9EU1BfQ09OVEVYVCogY29udGV4dCwgY29uc3QgQllURQor IAkJfQorIAkJZWxzZQorIAkJeworKwkJCWlmIChzaXplIDwgMSkKKysJCQkJcmV0dXJuIEZBTFNF OworIAkJCXNhbXBsZSA9ICpzcmMrKzsKKyAJCQlzaXplLS07CisgCQkJd3JpdGVfaW50MTYoZHN0 LCBmcmVlcmRwX2RzcF9kZWNvZGVfbXNfYWRwY21fc2FtcGxlKCZjb250ZXh0LT5hZHBjbSwgc2Ft cGxlID4+IDQsIDApKTsKK0BAIC05NjIsMTAgKzEwMjYsMTYgQEAgc3RhdGljIEJPT0wgZnJlZXJk cF9kc3BfZGVjb2RlX21zX2FkcGNtKEZSRUVSRFBfRFNQX0NPTlRFWFQqIGNvbnRleHQsIGNvbnN0 IEJZVEUKKyAJcmV0dXJuIFRSVUU7CisgfQorIAorLXN0YXRpYyBCWVRFIGZyZWVyZHBfZHNwX2Vu Y29kZV9tc19hZHBjbV9zYW1wbGUoQURQQ00qIGFkcGNtLCBJTlQzMiBzYW1wbGUsIGludCBjaGFu bmVsKQorK3N0YXRpYyBCWVRFIGZyZWVyZHBfZHNwX2VuY29kZV9tc19hZHBjbV9zYW1wbGUoQURQ Q00qIGFkcGNtLCBJTlQzMiBzYW1wbGUsIHNpemVfdCBjaGFubmVsKQorIHsKKyAJSU5UMzIgcHJl c2FtcGxlOworIAlJTlQzMiBlcnJvcmRlbHRhOworKworKwlXSU5QUl9BU1NFUlQoY2hhbm5lbCA8 IEFSUkFZU0laRShhZHBjbS0+bXMuc2FtcGxlMSkpOworKwlXSU5QUl9BU1NFUlQoY2hhbm5lbCA8 IEFSUkFZU0laRShhZHBjbS0+bXMuc2FtcGxlMikpOworKwlXSU5QUl9BU1NFUlQoY2hhbm5lbCA8 IEFSUkFZU0laRShhZHBjbS0+bXMuZGVsdGEpKTsKKysJV0lOUFJfQVNTRVJUKGNoYW5uZWwgPCBB UlJBWVNJWkUoYWRwY20tPm1zLnByZWRpY3RvcikpOworKworIAlwcmVzYW1wbGUgPSAoKGFkcGNt LT5tcy5zYW1wbGUxW2NoYW5uZWxdICogbXNfYWRwY21fY29lZmZzMVthZHBjbS0+bXMucHJlZGlj dG9yW2NoYW5uZWxdXSkgKworIAkgICAgICAgICAgICAgKGFkcGNtLT5tcy5zYW1wbGUyW2NoYW5u ZWxdICogbXNfYWRwY21fY29lZmZzMlthZHBjbS0+bXMucHJlZGljdG9yW2NoYW5uZWxdXSkpIC8K KyAJICAgICAgICAgICAgMjU2OworQEAgLTk4OCw4ICsxMDU4LDExIEBAIHN0YXRpYyBCWVRFIGZy ZWVyZHBfZHNwX2VuY29kZV9tc19hZHBjbV9zYW1wbGUoQURQQ00qIGFkcGNtLCBJTlQzMiBzYW1w bGUsIGludCBjCisgCisgCWFkcGNtLT5tcy5zYW1wbGUyW2NoYW5uZWxdID0gYWRwY20tPm1zLnNh bXBsZTFbY2hhbm5lbF07CisgCWFkcGNtLT5tcy5zYW1wbGUxW2NoYW5uZWxdID0gcHJlc2FtcGxl OworLQlhZHBjbS0+bXMuZGVsdGFbY2hhbm5lbF0gPQorLQkgICAgYWRwY20tPm1zLmRlbHRhW2No YW5uZWxdICogbXNfYWRwY21fYWRhcHRhdGlvbl90YWJsZVsoKChCWVRFKWVycm9yZGVsdGEpICYg MHgwRildIC8gMjU2OworKwl7CisrCQljb25zdCBzaXplX3Qgb2Zmc2V0ID0gKCgoQllURSllcnJv cmRlbHRhKSAmIDB4MEYpOworKwkJV0lOUFJfQVNTRVJUKG9mZnNldCA8IEFSUkFZU0laRShtc19h ZHBjbV9hZGFwdGF0aW9uX3RhYmxlKSk7CisrCQlhZHBjbS0+bXMuZGVsdGFbY2hhbm5lbF0gPSBh ZHBjbS0+bXMuZGVsdGFbY2hhbm5lbF0gKiBtc19hZHBjbV9hZGFwdGF0aW9uX3RhYmxlW29mZnNl dF0gLyAyNTY7CisrCX0KKyAKKyAJaWYgKGFkcGNtLT5tcy5kZWx0YVtjaGFubmVsXSA8IDE2KQor IAkJYWRwY20tPm1zLmRlbHRhW2NoYW5uZWxdID0gMTY7CistLSAKKzIuNTMuMAorCgpkaWZmIC0t Z2l0IGEvY29kZWMtbnNjLWZpeC11c2Utb2YtbnNjX3Byb2Nlc3NfbWVzc2FnZS5wYXRjaCBiL2Nv ZGVjLW5zYy1maXgtdXNlLW9mLW5zY19wcm9jZXNzX21lc3NhZ2UucGF0Y2gKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2M1ZWE2NAotLS0gL2Rldi9udWxsCisrKyBiL2NvZGVj LW5zYy1maXgtdXNlLW9mLW5zY19wcm9jZXNzX21lc3NhZ2UucGF0Y2gKQEAgLTAsMCArMSw5MCBA QAorRnJvbSAyMWNiMGUyYjk2ZTRlODZiNGVkOGI3YTc2ZDgxOTgwOGI4OThlOTNlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT25kcmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5jb20+CitE YXRlOiBUdWUsIDMxIE1hciAyMDI2IDA3OjA4OjA0ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIFtj b2RlYyxuc2NdIGZpeCB1c2Ugb2YgbnNjX3Byb2Nlc3NfbWVzc2FnZQorCitCYWNrcG9ydCBvZiBj b21taXQgMTY5OTcxNjA3Y2VjZTQ4Mzg0Y2I5NDYzMmI4MjliZDU3MzM2YWYwZi4KKworTWFkZS13 aXRoOiBDdXJzb3IKKy0tLQorIGxpYmZyZWVyZHAvY29kZWMvY2xlYXIuYyB8IDEwICsrKysrKy0t LS0KKyBsaWJmcmVlcmRwL2NvZGVjL25zYy5jICAgfCAgOSArKysrKysrKy0KKyBsaWJmcmVlcmRw L2dkaS9nZGkuYyAgICAgfCAgNCArKy0tCisgMyBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNlcnRpb25z KCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliZnJlZXJkcC9jb2RlYy9jbGVh ci5jIGIvbGliZnJlZXJkcC9jb2RlYy9jbGVhci5jCitpbmRleCA0ZGJlNzIzNzYuLjY2MjdiMjFk NiAxMDA2NDQKKy0tLSBhL2xpYmZyZWVyZHAvY29kZWMvY2xlYXIuYworKysrIGIvbGliZnJlZXJk cC9jb2RlYy9jbGVhci5jCitAQCAtMTAzLDcgKzEwMyw4IEBAIHN0YXRpYyBCT09MIGNvbnZlcnRf Y29sb3IoQllURSogZHN0LCBVSU5UMzIgbkRzdFN0ZXAsIFVJTlQzMiBEc3RGb3JtYXQsIFVJTlQz MiBuCisgCisgc3RhdGljIEJPT0wgY2xlYXJfZGVjb21wcmVzc19uc2NvZGVjKE5TQ19DT05URVhU KiBuc2MsIFVJTlQzMiB3aWR0aCwgVUlOVDMyIGhlaWdodCwgd1N0cmVhbSogcywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUlOVDMyIGJpdG1hcERhdGFCeXRlQ291bnQs IEJZVEUqIHBEc3REYXRhLCBVSU5UMzIgRHN0Rm9ybWF0LAorLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBVSU5UMzIgbkRzdFN0ZXAsIFVJTlQzMiBuWERzdFJlbCwgVUlOVDMy IG5ZRHN0UmVsKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSU5UMzIg bkRzdFN0ZXAsIFVJTlQzMiBuWERzdFJlbCwgVUlOVDMyIG5ZRHN0UmVsLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBVSU5UMzIgbkRzdFdpZHRoLCBVSU5UMzIgbkRzdEhl aWdodCkKKyB7CisgCUJPT0wgcmM7CisgCitAQCAtMTE1LDggKzExNiw4IEBAIHN0YXRpYyBCT09M IGNsZWFyX2RlY29tcHJlc3NfbnNjb2RlYyhOU0NfQ09OVEVYVCogbnNjLCBVSU5UMzIgd2lkdGgs IFVJTlQzMiBoZWlnCisgCX0KKyAKKyAJcmMgPSBuc2NfcHJvY2Vzc19tZXNzYWdlKG5zYywgMzIs IHdpZHRoLCBoZWlnaHQsIFN0cmVhbV9Qb2ludGVyKHMpLCBiaXRtYXBEYXRhQnl0ZUNvdW50LAor LQkgICAgICAgICAgICAgICAgICAgICAgICAgcERzdERhdGEsIERzdEZvcm1hdCwgbkRzdFN0ZXAs IG5YRHN0UmVsLCBuWURzdFJlbCwgd2lkdGgsIGhlaWdodCwKKy0JICAgICAgICAgICAgICAgICAg ICAgICAgIEZSRUVSRFBfRkxJUF9OT05FKTsKKysJICAgICAgICAgICAgICAgICAgICAgICAgIHBE c3REYXRhLCBEc3RGb3JtYXQsIG5Ec3RTdGVwLCBuWERzdFJlbCwgbllEc3RSZWwsIG5Ec3RXaWR0 aCwKKysJICAgICAgICAgICAgICAgICAgICAgICAgIG5Ec3RIZWlnaHQsIEZSRUVSRFBfRkxJUF9O T05FKTsKKyAJU3RyZWFtX1NlZWsocywgYml0bWFwRGF0YUJ5dGVDb3VudCk7CisgCXJldHVybiBy YzsKKyB9CitAQCAtNTM1LDcgKzUzNiw4IEBAIHN0YXRpYyBCT09MIGNsZWFyX2RlY29tcHJlc3Nf c3ViY29kZWNzX2RhdGEoQ0xFQVJfQ09OVEVYVCogY2xlYXIsIHdTdHJlYW0qIHMsCisgCisgCQkJ Y2FzZSAxOiAvKiBOU0NvZGVjICovCisgCQkJCWlmICghY2xlYXJfZGVjb21wcmVzc19uc2NvZGVj KGNsZWFyLT5uc2MsIHdpZHRoLCBoZWlnaHQsIHMsIGJpdG1hcERhdGFCeXRlQ291bnQsCistCQkJ CSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBEc3REYXRhLCBEc3RGb3JtYXQsIG5Ec3RT dGVwLCBuWERzdFJlbCwgbllEc3RSZWwpKQorKwkJCQkgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwRHN0RGF0YSwgRHN0Rm9ybWF0LCBuRHN0U3RlcCwgblhEc3RSZWwsIG5ZRHN0UmVsLAor KwkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuRHN0V2lkdGgsIG5Ec3RIZWlnaHQp KQorIAkJCQkJcmV0dXJuIEZBTFNFOworIAorIAkJCQlicmVhazsKK2RpZmYgLS1naXQgYS9saWJm cmVlcmRwL2NvZGVjL25zYy5jIGIvbGliZnJlZXJkcC9jb2RlYy9uc2MuYworaW5kZXggYTI1N2Fl MjRhLi5mNTBhMWFlODkgMTAwNjQ0CistLS0gYS9saWJmcmVlcmRwL2NvZGVjL25zYy5jCisrKysg Yi9saWJmcmVlcmRwL2NvZGVjL25zYy5jCitAQCAtNDQ3LDEwICs0NDcsMTcgQEAgQk9PTCBuc2Nf cHJvY2Vzc19tZXNzYWdlKE5TQ19DT05URVhUKiBjb250ZXh0LCBVSU5UMTYgYnBwLCBVSU5UMzIg d2lkdGgsIFVJTlQzMgorICAgICAgICAgICAgICAgICAgICAgICAgICBVSU5UMzIgbkRzdFN0cmlk ZSwgVUlOVDMyIG5YRHN0LCBVSU5UMzIgbllEc3QsIFVJTlQzMiBuV2lkdGgsCisgICAgICAgICAg ICAgICAgICAgICAgICAgIFVJTlQzMiBuSGVpZ2h0LCBVSU5UMzIgZmxpcCkKKyB7CisrCVdJTlBS X0FTU0VSVChjb250ZXh0KTsKKysJV0lOUFJfQVNTRVJUKGNvbnRleHQtPnByaXYpOworKworIAl3 U3RyZWFtKiBzOworIAlCT09MIHJldDsKKy0JaWYgKCFjb250ZXh0IHx8ICFkYXRhIHx8ICFwRHN0 RGF0YSkKKysJaWYgKCFkYXRhIHx8ICFwRHN0RGF0YSkKKysJeworKwkJV0xvZ19QcmludChjb250 ZXh0LT5wcml2LT5sb2csIFdMT0dfRVJST1IsICJJbnZhbGlkIGFyZ3VtZW50OiBkYXRhPSVwLCBw RHN0RGF0YT0lcCIsCisrCQkgICAgICAgICAgIChjb25zdCB2b2lkKilkYXRhLCAodm9pZCopcERz dERhdGEpOworIAkJcmV0dXJuIEZBTFNFOworKwl9CisgCisgCXMgPSBTdHJlYW1fTmV3KChCWVRF KilkYXRhLCBsZW5ndGgpOworIAorZGlmZiAtLWdpdCBhL2xpYmZyZWVyZHAvZ2RpL2dkaS5jIGIv bGliZnJlZXJkcC9nZGkvZ2RpLmMKK2luZGV4IDM3YTAxMDQzMS4uOGM1ZTRiZjM0IDEwMDY0NAor LS0tIGEvbGliZnJlZXJkcC9nZGkvZ2RpLmMKKysrKyBiL2xpYmZyZWVyZHAvZ2RpL2dkaS5jCitA QCAtMTA3NCw4ICsxMDc0LDggQEAgc3RhdGljIEJPT0wgZ2RpX3N1cmZhY2VfYml0cyhyZHBDb250 ZXh0KiBjb250ZXh0LCBjb25zdCBTVVJGQUNFX0JJVFNfQ09NTUFORCogY20KKyAJCQlpZiAoIW5z Y19wcm9jZXNzX21lc3NhZ2UoCisgCQkJICAgICAgICBjb250ZXh0LT5jb2RlY3MtPm5zYywgY21k LT5ibXAuYnBwLCBjbWQtPmJtcC53aWR0aCwgY21kLT5ibXAuaGVpZ2h0LAorIAkJCSAgICAgICAg Y21kLT5ibXAuYml0bWFwRGF0YSwgY21kLT5ibXAuYml0bWFwRGF0YUxlbmd0aCwgZ2RpLT5wcmlt YXJ5X2J1ZmZlciwgZm9ybWF0LAorLQkJCSAgICAgICAgZ2RpLT5zdHJpZGUsIGNtZFJlY3QubGVm dCwgY21kUmVjdC50b3AsIGNtZFJlY3QucmlnaHQgLSBjbWRSZWN0LmxlZnQsCistCQkJICAgICAg ICBjbWRSZWN0LmJvdHRvbSAtIGNtZFJlY3QudG9wLCBGUkVFUkRQX0ZMSVBfVkVSVElDQUwpKQor KwkJCSAgICAgICAgZ2RpLT5zdHJpZGUsIGNtZFJlY3QubGVmdCwgY21kUmVjdC50b3AsIChVSU5U MzIpZ2RpLT53aWR0aCwgKFVJTlQzMilnZGktPmhlaWdodCwKKysJCQkgICAgICAgIEZSRUVSRFBf RkxJUF9WRVJUSUNBTCkpCisgCQkJeworIAkJCQlXTG9nX0VSUihUQUcsICJGYWlsZWQgdG8gcHJv Y2VzcyBOU0NvZGVjIG1lc3NhZ2UiKTsKKyAJCQkJZ290byBvdXQ7CistLSAKKzIuNTMuMAorCgpk aWZmIC0tZ2l0IGEvY29kZWMtbnNjLWxpbWl0LWNvcHktYXJlYS1pbi1uc2NfcHJvY2Vzc19tZXNz YWdlLnBhdGNoIGIvY29kZWMtbnNjLWxpbWl0LWNvcHktYXJlYS1pbi1uc2NfcHJvY2Vzc19tZXNz YWdlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwNDdkZjUKLS0t IC9kZXYvbnVsbAorKysgYi9jb2RlYy1uc2MtbGltaXQtY29weS1hcmVhLWluLW5zY19wcm9jZXNz X21lc3NhZ2UucGF0Y2gKQEAgLTAsMCArMSw0NCBAQAorRnJvbSA5YTllMDA1MjliMWIwNDcxODM3 MGExZDhlMmQ4YjY3NjhjOWVlOTEzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT25k cmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5jb20+CitEYXRlOiBNb24sIDE2IE1hciAyMDI2IDE0OjU5 OjEyICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFtjb2RlYyxuc2NdIGxpbWl0IGNvcHkgYXJlYSBp biBuc2NfcHJvY2Vzc19tZXNzYWdlCisKK0JhY2twb3J0IG9mIGNvbW1pdCA4M2Q5YWVkZWEyNzhh NzRhZjNlNDkwZmY1ZWViODg5YzAxNmRiYjJiLgorCitNYWRlLXdpdGg6IEN1cnNvcgorLS0tCisg bGliZnJlZXJkcC9jb2RlYy9uc2MuYyB8IDExICsrKysrKysrKystCisgMSBmaWxlIGNoYW5nZWQs IDEwIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYmZyZWVy ZHAvY29kZWMvbnNjLmMgYi9saWJmcmVlcmRwL2NvZGVjL25zYy5jCitpbmRleCA1ZGQyNjQ2ZWEu LmEyNTdhZTI0YSAxMDA2NDQKKy0tLSBhL2xpYmZyZWVyZHAvY29kZWMvbnNjLmMKKysrKyBiL2xp YmZyZWVyZHAvY29kZWMvbnNjLmMKK0BAIC0yNCw2ICsyNCw3IEBACisgI2luY2x1ZGUgImNvbmZp Zy5oIgorICNlbmRpZgorIAorKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyAjaW5jbHVkZSA8c3RkaW8u aD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorQEAgLTUxNSw3 ICs1MTYsMTUgQEAgQk9PTCBuc2NfcHJvY2Vzc19tZXNzYWdlKE5TQ19DT05URVhUKiBjb250ZXh0 LCBVSU5UMTYgYnBwLCBVSU5UMzIgd2lkdGgsIFVJTlQzMgorIAkJCXJldHVybiBGQUxTRTsKKyAJ fQorIAorLQlpZiAoIWZyZWVyZHBfaW1hZ2VfY29weShwRHN0RGF0YSwgRHN0Rm9ybWF0LCBuRHN0 U3RyaWRlLCBuWERzdCwgbllEc3QsIHdpZHRoLCBoZWlnaHQsCisrCXVpbnQzMl90IGN3aWR0aCA9 IHdpZHRoOworKwlpZiAoMXVsbCAqIG5YRHN0ICsgd2lkdGggPiBuV2lkdGgpCisrCQljd2lkdGgg PSBuV2lkdGggLSBuWERzdDsKKysKKysJdWludDMyX3QgY2hlaWdodCA9IGhlaWdodDsKKysJaWYg KDF1bGwgKiBuWURzdCArIGhlaWdodCA+IG5IZWlnaHQpCisrCQljaGVpZ2h0ID0gbkhlaWdodCAt IG5ZRHN0OworKworKwlpZiAoIWZyZWVyZHBfaW1hZ2VfY29weShwRHN0RGF0YSwgRHN0Rm9ybWF0 LCBuRHN0U3RyaWRlLCBuWERzdCwgbllEc3QsIGN3aWR0aCwgY2hlaWdodCwKKyAJICAgICAgICAg ICAgICAgICAgICAgICAgY29udGV4dC0+Qml0bWFwRGF0YSwgUElYRUxfRk9STUFUX0JHUkEzMiwg MCwgMCwgMCwgTlVMTCwgZmxpcCkpCisgCQlyZXR1cm4gRkFMU0U7CisgCistLSAKKzIuNTMuMAor CgpkaWZmIC0tZ2l0IGEvY29kZWMtcGxhbmFyLWZpeC1ib3VuZHMtY2hlY2tzLnBhdGNoIGIvY29k ZWMtcGxhbmFyLWZpeC1ib3VuZHMtY2hlY2tzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjU1NTA5OTIKLS0tIC9kZXYvbnVsbAorKysgYi9jb2RlYy1wbGFuYXItZml4 LWJvdW5kcy1jaGVja3MucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSA0YjkzOTQ1Y2Y1Zjli ODVkMTc3MDVkMDM4OTU1ZWU1OWM0YjY2OWEwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJv bTogQXJtaW4gTm92YWsgPGFybWluLm5vdmFrQHRoaW5jYXN0LmNvbT4KK0RhdGU6IFRodSwgMzAg QXByIDIwMjYgMTU6MDM6MjEgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gW2NvZGVjLHBsYW5hcl0g Zml4IGJvdW5kcyBjaGVja3MKKworLS0tCisgbGliZnJlZXJkcC9jb2RlYy9wbGFuYXIuYyB8IDQg KystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisK K2RpZmYgLS1naXQgYS9saWJmcmVlcmRwL2NvZGVjL3BsYW5hci5jIGIvbGliZnJlZXJkcC9jb2Rl Yy9wbGFuYXIuYworaW5kZXggOWI0ZDEzMDU3Li42N2ZjNDIxMmUgMTAwNjQ0CistLS0gYS9saWJm cmVlcmRwL2NvZGVjL3BsYW5hci5jCisrKysgYi9saWJmcmVlcmRwL2NvZGVjL3BsYW5hci5jCitA QCAtODQxLDEyICs4NDEsMTIgQEAgQk9PTCBwbGFuYXJfZGVjb21wcmVzcyhCSVRNQVBfUExBTkFS X0NPTlRFWFQqIHBsYW5hciwgY29uc3QgQllURSogcFNyY0RhdGEsIFVJTlQKKyAJCQkJcmV0dXJu IEZBTFNFOworIAkJCX0KKyAKKy0JCQlpZiAoKG5YRHN0ICsgblNyY1dpZHRoKSAqIGJwcCA+IG5E c3RTdGVwKQorKwkJCWlmICgoblhEc3QgKyBuU3JjV2lkdGgpICogYnBwID4gblRlbXBTdGVwKQor IAkJCXsKKyAJCQkJV0xvZ19FUlIoVEFHLAorIAkJCQkgICAgICAgICAicGxhbmFyIHBsYW5lIGRl c3RpbmF0aW9uIChYICUiIFBSSXUzMiAiICsgd2lkdGggJSIgUFJJdTMyCisgCQkJCSAgICAgICAg ICIpICogYnBwICUiIFBSSXUzMiAiIGV4Y2VlZHMgc3RyaWRlICUiIFBSSXUzMiwKKy0JCQkJICAg ICAgICAgblhEc3QsIG5TcmNXaWR0aCwgYnBwLCBuRHN0U3RlcCk7CisrCQkJCSAgICAgICAgIG5Y RHN0LCBuU3JjV2lkdGgsIGJwcCwgblRlbXBTdGVwKTsKKyAJCQkJcmV0dXJuIEZBTFNFOworIAkJ CX0KKyAKKy0tIAorMi41Mi4wCisKCmRpZmYgLS1naXQgYS9jb2RlYy1wbGFuYXItZml4LWRlY29k ZXItbGVuZ3RoLWNoZWNrcy5wYXRjaCBiL2NvZGVjLXBsYW5hci1maXgtZGVjb2Rlci1sZW5ndGgt Y2hlY2tzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4ZDJjOTkK LS0tIC9kZXYvbnVsbAorKysgYi9jb2RlYy1wbGFuYXItZml4LWRlY29kZXItbGVuZ3RoLWNoZWNr cy5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIDJkNjU2ZWI2YjI5YTY4ZGU3ZjE5ZThhMWNj ZTE2OTI1OWU3NTA2YjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPbmRyZWogSG9s eSA8b2hvbHlAcmVkaGF0LmNvbT4KK0RhdGU6IFR1ZSwgMjcgSmFuIDIwMjYgMTQ6MzU6NDMgKzAx MDAKK1N1YmplY3Q6IFtQQVRDSF0gW2NvZGVjLHBsYW5hcl0gZml4IGRlY29kZXIgbGVuZ3RoIGNo ZWNrcworCitCYWNrcG9ydCBvZiBjb21taXQgMWJhYjE5OGEyZWRkMGQwZTZlMTYyN2QyMWE0MzMx NTFlYTE5MC4KKworQ28tQXV0aG9yZWQtQnk6IENsYXVkZSA8bm9yZXBseUBhbnRocm9waWMuY29t PgorLS0tCisgbGliZnJlZXJkcC9jb2RlYy9wbGFuYXIuYyB8IDUgKysrKysKKyAxIGZpbGUgY2hh bmdlZCwgNSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9saWJmcmVlcmRwL2NvZGVjL3Bs YW5hci5jIGIvbGliZnJlZXJkcC9jb2RlYy9wbGFuYXIuYworaW5kZXggZmUyNzAxMWUxLi4xY2Iy ZTIyYmMgMTAwNjQ0CistLS0gYS9saWJmcmVlcmRwL2NvZGVjL3BsYW5hci5jCisrKysgYi9saWJm cmVlcmRwL2NvZGVjL3BsYW5hci5jCitAQCAtNjE2LDYgKzYxNiwxMSBAQCBCT09MIHBsYW5hcl9k ZWNvbXByZXNzKEJJVE1BUF9QTEFOQVJfQ09OVEVYVCogcGxhbmFyLCBjb25zdCBCWVRFKiBwU3Jj RGF0YSwgVUlOVAorIAlXSU5QUl9BU1NFUlQocGxhbmFyKTsKKyAJV0lOUFJfQVNTRVJUKHByaW1z KTsKKyAKKysJaWYgKHBsYW5hci0+bWF4V2lkdGggPCBuU3JjV2lkdGgpCisrCQlyZXR1cm4gRkFM U0U7CisrCWlmIChwbGFuYXItPm1heEhlaWdodCA8IG5TcmNIZWlnaHQpCisrCQlyZXR1cm4gRkFM U0U7CisrCisgCWlmIChuRHN0U3RlcCA8PSAwKQorIAkJbkRzdFN0ZXAgPSBuRHN0V2lkdGggKiBH ZXRCeXRlc1BlclBpeGVsKERzdEZvcm1hdCk7CisgCistLSAKKzIuNTIuMAorCgpkaWZmIC0tZ2l0 IGEvY29kZWMtcGxhbmFyLWZpeC1taXNzaW5nLWRlc3RpbmF0aW9uLWJvdW5kcy1jaGVja3MucGF0 Y2ggYi9jb2RlYy1wbGFuYXItZml4LW1pc3NpbmctZGVzdGluYXRpb24tYm91bmRzLWNoZWNrcy5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNmNjN2RjCi0tLSAvZGV2 L251bGwKKysrIGIvY29kZWMtcGxhbmFyLWZpeC1taXNzaW5nLWRlc3RpbmF0aW9uLWJvdW5kcy1j aGVja3MucGF0Y2gKQEAgLTAsMCArMSw1NSBAQAorRnJvbSBlY2E4YTFhODc2Yjc3ZGU1ZGE2MGIx ODc5M2UzNWU1YzA3MTRlZjk3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT25kcmVq IEhvbHkgPG9ob2x5QHJlZGhhdC5jb20+CitEYXRlOiBNb24sIDkgTWFyIDIwMjYgMTI6NTY6MTEg KzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gW2NvZGVjLHBsYW5hcl06IGZpeCBtaXNzaW5nIGRlc3Rp bmF0aW9uIGJvdW5kcyBjaGVja3MKKworQmFja3BvcnQgb2YgY29tbWl0IGEwYmU1Y2I4N2Q3NjBi YjFjODAzYWQxYmI4MzVhYTFlNzNlNjJhYmMuCisKK01hZGUtd2l0aDogQ3Vyc29yCistLS0KKyBs aWJmcmVlcmRwL2NvZGVjL3BsYW5hci5jIHwgMjEgKysrKysrKysrKysrKysrKysrKystCisgMSBm aWxlIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdp dCBhL2xpYmZyZWVyZHAvY29kZWMvcGxhbmFyLmMgYi9saWJmcmVlcmRwL2NvZGVjL3BsYW5hci5j CitpbmRleCAxY2IyZTIyYmMuLjliNGQxMzA1NyAxMDA2NDQKKy0tLSBhL2xpYmZyZWVyZHAvY29k ZWMvcGxhbmFyLmMKKysrKyBiL2xpYmZyZWVyZHAvY29kZWMvcGxhbmFyLmMKK0BAIC02MjEsOCAr NjIxLDkgQEAgQk9PTCBwbGFuYXJfZGVjb21wcmVzcyhCSVRNQVBfUExBTkFSX0NPTlRFWFQqIHBs YW5hciwgY29uc3QgQllURSogcFNyY0RhdGEsIFVJTlQKKyAJaWYgKHBsYW5hci0+bWF4SGVpZ2h0 IDwgblNyY0hlaWdodCkKKyAJCXJldHVybiBGQUxTRTsKKyAKKysJY29uc3QgVUlOVDMyIGJwcCA9 IEdldEJ5dGVzUGVyUGl4ZWwoRHN0Rm9ybWF0KTsKKyAJaWYgKG5Ec3RTdGVwIDw9IDApCistCQlu RHN0U3RlcCA9IG5Ec3RXaWR0aCAqIEdldEJ5dGVzUGVyUGl4ZWwoRHN0Rm9ybWF0KTsKKysJCW5E c3RTdGVwID0gbkRzdFdpZHRoICogYnBwOworIAorIAlzcmNwID0gcFNyY0RhdGE7CisgCitAQCAt ODMxLDYgKzgzMiwyNCBAQCBCT09MIHBsYW5hcl9kZWNvbXByZXNzKEJJVE1BUF9QTEFOQVJfQ09O VEVYVCogcGxhbmFyLCBjb25zdCBCWVRFKiBwU3JjRGF0YSwgVUlOVAorIAkJfQorIAkJZWxzZSAv KiBSTEUgKi8KKyAJCXsKKysJCQlpZiAobllEc3QgKyBuU3JjSGVpZ2h0ID4gblRvdGFsSGVpZ2h0 KQorKwkJCXsKKysJCQkJV0xvZ19FUlIoVEFHLAorKwkJCQkgICAgICAgICAicGxhbmFyIHBsYW5l IGRlc3RpbmF0aW9uIFkgJSIgUFJJdTMyICIgKyBoZWlnaHQgJSIgUFJJdTMyCisrCQkJCSAgICAg ICAgICIgZXhjZWVkcyB0b3RhbEhlaWdodCAlIiBQUkl1MzIsCisrCQkJCSAgICAgICAgIG5ZRHN0 LCBuU3JjSGVpZ2h0LCBuVG90YWxIZWlnaHQpOworKwkJCQlyZXR1cm4gRkFMU0U7CisrCQkJfQor KworKwkJCWlmICgoblhEc3QgKyBuU3JjV2lkdGgpICogYnBwID4gbkRzdFN0ZXApCisrCQkJewor KwkJCQlXTG9nX0VSUihUQUcsCisrCQkJCSAgICAgICAgICJwbGFuYXIgcGxhbmUgZGVzdGluYXRp b24gKFggJSIgUFJJdTMyICIgKyB3aWR0aCAlIiBQUkl1MzIKKysJCQkJICAgICAgICAgIikgKiBi cHAgJSIgUFJJdTMyICIgZXhjZWVkcyBzdHJpZGUgJSIgUFJJdTMyLAorKwkJCQkgICAgICAgICBu WERzdCwgblNyY1dpZHRoLCBicHAsIG5Ec3RTdGVwKTsKKysJCQkJcmV0dXJuIEZBTFNFOworKwkJ CX0KKysKKyAJCQlzdGF0dXMgPQorIAkJCSAgICBwbGFuYXJfZGVjb21wcmVzc19wbGFuZV9ybGUo cGxhbmVzWzBdLCBybGVTaXplc1swXSwgcFRlbXBEYXRhLCBuVGVtcFN0ZXAsIG5YRHN0LAorIAkJ CSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbllEc3QsIG5TcmNXaWR0aCwgblNyY0hl aWdodCwgMiwgdkZsaXApOyAvKiBSZWRQbGFuZSAqLworLS0gCisyLjUzLjAKKwoKZGlmZiAtLWdp dCBhL2NvZGVjLXByb2dyZXNzaXZlLWZhaWwtcHJvZ3Jlc3NpdmVfcmZ4X3F1YW50X3N1Yi1vbi1p bnZhbGlkLXZhbHVlcy5wYXRjaCBiL2NvZGVjLXByb2dyZXNzaXZlLWZhaWwtcHJvZ3Jlc3NpdmVf cmZ4X3F1YW50X3N1Yi1vbi1pbnZhbGlkLXZhbHVlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi4zZjAyNDE3Ci0tLSAvZGV2L251bGwKKysrIGIvY29kZWMtcHJvZ3Jl c3NpdmUtZmFpbC1wcm9ncmVzc2l2ZV9yZnhfcXVhbnRfc3ViLW9uLWludmFsaWQtdmFsdWVzLnBh dGNoCkBAIC0wLDAgKzEsODkgQEAKK0Zyb20gNzgxODhhYjQ3OWM4ZTZlYjliYTI0NzViMzczMmM3 NmI0YmJlNTQyNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9uZHJlaiBIb2x5IDxv aG9seUByZWRoYXQuY29tPgorRGF0ZTogTW9uLCAxMyBBcHIgMjAyNiAxNDowMDowMCArMDIwMAor U3ViamVjdDogW1BBVENIXSBbY29kZWMscHJvZ3Jlc3NpdmVdIEZhaWwgcHJvZ3Jlc3NpdmVfcmZ4 X3F1YW50X3N1YiBvbiBpbnZhbGlkCisgdmFsdWVzCisKK0JhY2twb3J0IG9mIGNvbW1pdCA3ODE4 OGFiNDc5YzhlNmViOWJhMjQ3NWIzNzMyYzc2YjRiYmU1NDI1LgorCitNYWRlLXdpdGg6IEN1cnNv cgorLS0tCisgbGliZnJlZXJkcC9jb2RlYy9wcm9ncmVzc2l2ZS5jIHwgNDIgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzOCBpbnNlcnRpb25zKCsp LCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliZnJlZXJkcC9jb2RlYy9wcm9ncmVz c2l2ZS5jIGIvbGliZnJlZXJkcC9jb2RlYy9wcm9ncmVzc2l2ZS5jCitpbmRleCA4ODk0YjM1Li5i YmNjOTIxIDEwMDY0NAorLS0tIGEvbGliZnJlZXJkcC9jb2RlYy9wcm9ncmVzc2l2ZS5jCisrKysg Yi9saWJmcmVlcmRwL2NvZGVjL3Byb2dyZXNzaXZlLmMKK0BAIC0xNTUsMjAgKzE1NSw1MSBAQCBz dGF0aWMgSU5MSU5FIHZvaWQgcHJvZ3Jlc3NpdmVfcmZ4X3F1YW50X2xzdWIoUkZYX0NPTVBPTkVO VF9DT0RFQ19RVUFOVCogcSwgaW50CisgCXEtPkxMMyAtPSB2YWw7IC8qIExMMyAqLworIH0KKyAK Ky1zdGF0aWMgSU5MSU5FIHZvaWQgcHJvZ3Jlc3NpdmVfcmZ4X3F1YW50X3N1Yihjb25zdCBSRlhf Q09NUE9ORU5UX0NPREVDX1FVQU5UKiBxMSwKKytzdGF0aWMgSU5MSU5FIEJPT0wgcHJvZ3Jlc3Np dmVfcmZ4X3F1YW50X3N1Yihjb25zdCBSRlhfQ09NUE9ORU5UX0NPREVDX1FVQU5UKiBxMSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSRlhfQ09N UE9ORU5UX0NPREVDX1FVQU5UKiBxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBSRlhfQ09NUE9ORU5UX0NPREVDX1FVQU5UKiBkc3QpCisgeworKwlpZiAo cTEtPkhIMSA8IHEyLT5ITDEpCisrCQlyZXR1cm4gRkFMU0U7CisgCWRzdC0+SEwxID0gcTEtPkhM MSAtIHEyLT5ITDE7IC8qIEhMMSAqLworKworKwlpZiAocTEtPkxIMSA8IHEyLT5MSDEpCisrCQly ZXR1cm4gRkFMU0U7CisgCWRzdC0+TEgxID0gcTEtPkxIMSAtIHEyLT5MSDE7IC8qIExIMSAqLwor KworKwlpZiAocTEtPkhIMSA8IHEyLT5ISDEpCisrCQlyZXR1cm4gRkFMU0U7CisgCWRzdC0+SEgx ID0gcTEtPkhIMSAtIHEyLT5ISDE7IC8qIEhIMSAqLworKworKwlpZiAocTEtPkhMMiA8IHEyLT5I TDIpCisrCQlyZXR1cm4gRkFMU0U7CisgCWRzdC0+SEwyID0gcTEtPkhMMiAtIHEyLT5ITDI7IC8q IEhMMiAqLworKworKwlpZiAocTEtPkxIMiA8IHEyLT5MSDIpCisrCQlyZXR1cm4gRkFMU0U7Cisg CWRzdC0+TEgyID0gcTEtPkxIMiAtIHEyLT5MSDI7IC8qIExIMiAqLworKworKwlpZiAocTEtPkhI MiA8IHEyLT5ISDIpCisrCQlyZXR1cm4gRkFMU0U7CisgCWRzdC0+SEgyID0gcTEtPkhIMiAtIHEy LT5ISDI7IC8qIEhIMiAqLworKworKwlpZiAocTEtPkhMMyA8IHEyLT5ITDMpCisrCQlyZXR1cm4g RkFMU0U7CisgCWRzdC0+SEwzID0gcTEtPkhMMyAtIHEyLT5ITDM7IC8qIEhMMyAqLworKworKwlp ZiAocTEtPkxIMyA8IHEyLT5MSDMpCisrCQlyZXR1cm4gRkFMU0U7CisgCWRzdC0+TEgzID0gcTEt PkxIMyAtIHEyLT5MSDM7IC8qIExIMyAqLworKworKwlpZiAocTEtPkhIMyA8IHEyLT5ISDMpCisr CQlyZXR1cm4gRkFMU0U7CisgCWRzdC0+SEgzID0gcTEtPkhIMyAtIHEyLT5ISDM7IC8qIEhIMyAq LworKworKwlpZiAocTEtPkxMMyA8IHEyLT5MTDMpCisrCQlyZXR1cm4gRkFMU0U7CisgCWRzdC0+ TEwzID0gcTEtPkxMMyAtIHEyLT5MTDM7IC8qIExMMyAqLworKworKwlyZXR1cm4gVFJVRTsKKyB9 CisgCisgc3RhdGljIElOTElORSBCT09MIHByb2dyZXNzaXZlX3JmeF9xdWFudF9sY21wX2xlc3Nf ZXF1YWwoY29uc3QgUkZYX0NPTVBPTkVOVF9DT0RFQ19RVUFOVCogcSwKK0BAIC0xNDMzLDkgKzE0 NjQsMTIgQEAgc3RhdGljIElOTElORSBpbnQgcHJvZ3Jlc3NpdmVfZGVjb21wcmVzc190aWxlX3Vw Z3JhZGUoUFJPR1JFU1NJVkVfQ09OVEVYVCogcHJvZ3IKKyAJcHJvZ3Jlc3NpdmVfcmZ4X3F1YW50 X2FkZChxdWFudFksIHF1YW50UHJvZ1ksICZ5Qml0UG9zKTsKKyAJcHJvZ3Jlc3NpdmVfcmZ4X3F1 YW50X2FkZChxdWFudENiLCBxdWFudFByb2dDYiwgJmNiQml0UG9zKTsKKyAJcHJvZ3Jlc3NpdmVf cmZ4X3F1YW50X2FkZChxdWFudENyLCBxdWFudFByb2dDciwgJmNyQml0UG9zKTsKKy0JcHJvZ3Jl c3NpdmVfcmZ4X3F1YW50X3N1YigmKHRpbGUtPnlCaXRQb3MpLCAmeUJpdFBvcywgJnlOdW1CaXRz KTsKKy0JcHJvZ3Jlc3NpdmVfcmZ4X3F1YW50X3N1YigmKHRpbGUtPmNiQml0UG9zKSwgJmNiQml0 UG9zLCAmY2JOdW1CaXRzKTsKKy0JcHJvZ3Jlc3NpdmVfcmZ4X3F1YW50X3N1YigmKHRpbGUtPmNy Qml0UG9zKSwgJmNyQml0UG9zLCAmY3JOdW1CaXRzKTsKKysJaWYgKCFwcm9ncmVzc2l2ZV9yZnhf cXVhbnRfc3ViKCYodGlsZS0+eUJpdFBvcyksICZ5Qml0UG9zLCAmeU51bUJpdHMpKQorKwkJZ290 byBmYWlsOworKwlpZiAoIXByb2dyZXNzaXZlX3JmeF9xdWFudF9zdWIoJih0aWxlLT5jYkJpdFBv cyksICZjYkJpdFBvcywgJmNiTnVtQml0cykpCisrCQlnb3RvIGZhaWw7CisrCWlmICghcHJvZ3Jl c3NpdmVfcmZ4X3F1YW50X3N1YigmKHRpbGUtPmNyQml0UG9zKSwgJmNyQml0UG9zLCAmY3JOdW1C aXRzKSkKKysJCWdvdG8gZmFpbDsKKyAJcHJvZ3Jlc3NpdmVfcmZ4X3F1YW50X2FkZChxdWFudFks IHF1YW50UHJvZ1ksICZzaGlmdFkpOworIAlwcm9ncmVzc2l2ZV9yZnhfcXVhbnRfbHN1Yigmc2hp ZnRZLCAxKTsgLyogLTYgKyA1ID0gLTEgKi8KKyAJcHJvZ3Jlc3NpdmVfcmZ4X3F1YW50X2FkZChx dWFudENiLCBxdWFudFByb2dDYiwgJnNoaWZ0Q2IpOworLS0gCisyLjQ5LjAKKwoKZGlmZiAtLWdp dCBhL2NvZGVjLXByb2dyZXNzaXZlLWZpeC11bmRlcmZsb3ctZ3VhcmQtaW4tcHJvZ3Jlc3NpdmVf cmZ4X3F1YW50X3N1Yi5wYXRjaCBiL2NvZGVjLXByb2dyZXNzaXZlLWZpeC11bmRlcmZsb3ctZ3Vh cmQtaW4tcHJvZ3Jlc3NpdmVfcmZ4X3F1YW50X3N1Yi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5hY2I2YWY3Ci0tLSAvZGV2L251bGwKKysrIGIvY29kZWMtcHJvZ3Jl c3NpdmUtZml4LXVuZGVyZmxvdy1ndWFyZC1pbi1wcm9ncmVzc2l2ZV9yZnhfcXVhbnRfc3ViLnBh dGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gNzg2NzdkYzZlMjYyZjQ2OTM3ZDAwYzNhYTUyMzgx ZTRiYjE5OGZhNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9uZHJlaiBIb2x5IDxv aG9seUByZWRoYXQuY29tPgorRGF0ZTogTW9uLCAxMyBBcHIgMjAyNiAxNDowMDowMCArMDIwMAor U3ViamVjdDogW1BBVENIXSBbY29kZWMscHJvZ3Jlc3NpdmVdIGZpeCB1bmRlcmZsb3cgZ3VhcmQg aW4KKyBwcm9ncmVzc2l2ZV9yZnhfcXVhbnRfc3ViCisKK0JhY2twb3J0IG9mIGNvbW1pdCA3ODY3 N2RjNmUyNjJmNDY5MzdkMDBjM2FhNTIzODFlNGJiMTk4ZmE1LgorCitNYWRlLXdpdGg6IEN1cnNv cgorLS0tCisgbGliZnJlZXJkcC9jb2RlYy9wcm9ncmVzc2l2ZS5jIHwgMiArLQorIDEgZmlsZSBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGli ZnJlZXJkcC9jb2RlYy9wcm9ncmVzc2l2ZS5jIGIvbGliZnJlZXJkcC9jb2RlYy9wcm9ncmVzc2l2 ZS5jCitpbmRleCBiYmNjOTIxLi4xMjM0NTY3IDEwMDY0NAorLS0tIGEvbGliZnJlZXJkcC9jb2Rl Yy9wcm9ncmVzc2l2ZS5jCisrKysgYi9saWJmcmVlcmRwL2NvZGVjL3Byb2dyZXNzaXZlLmMKK0BA IC0xNTgsNyArMTU4LDcgQEAgc3RhdGljIElOTElORSBCT09MIHByb2dyZXNzaXZlX3JmeF9xdWFu dF9zdWIoY29uc3QgUkZYX0NPTVBPTkVOVF9DT0RFQ19RVUFOVCogcTEKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSRlhfQ09NUE9ORU5UX0NPREVD X1FVQU5UKiBxMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBSRlhfQ09NUE9ORU5UX0NPREVDX1FVQU5UKiBkc3QpCisgeworLQlpZiAocTEtPkhIMSA8IHEy LT5ITDEpCisrCWlmIChxMS0+SEwxIDwgcTItPkhMMSkKKyAJCXJldHVybiBGQUxTRTsKKyAJZHN0 LT5ITDEgPSBxMS0+SEwxIC0gcTItPkhMMTsgLyogSEwxICovCisgCistLSAKKzIuNDkuMAorCgpk aWZmIC0tZ2l0IGEvY29yZS1pbmZvLWZpeC1taXNzaW5nLU5VTEwtY2hlY2sucGF0Y2ggYi9jb3Jl LWluZm8tZml4LW1pc3NpbmctTlVMTC1jaGVjay5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi40NGRhYWZlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS1pbmZvLWZpeC1t aXNzaW5nLU5VTEwtY2hlY2sucGF0Y2gKQEAgLTAsMCArMSw3MSBAQAorRnJvbSA2YTMyOWE5YTEz NTJjOTQ2MWEzYTg1ZTU1ZDg0MjMwMTA2YjE5NTAwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQor RnJvbTogT25kcmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5jb20+CitEYXRlOiBUdWUsIDEwIE1hciAy MDI2IDE0OjUzOjI5ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFtjb3JlLGluZm9dIGZpeCBtaXNz aW5nIE5VTEwgY2hlY2sKKworQmFja3BvcnQgb2YgY29tbWl0IDRkNDRlM2MwOTc2NTZhOGI5ZWM2 OTYzNTM2NDdiMDg4OGNhNDU4NjAuCisKK01hZGUtd2l0aDogQ3Vyc29yCistLS0KKyBsaWJmcmVl cmRwL2NvcmUvaW5mby5jIHwgMTcgKysrKysrKysrKystLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwg MTEgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmZyZWVy ZHAvY29yZS9pbmZvLmMgYi9saWJmcmVlcmRwL2NvcmUvaW5mby5jCitpbmRleCA5YWFhNmNmZjYu LjU2Njc2ZjBmYiAxMDA2NDQKKy0tLSBhL2xpYmZyZWVyZHAvY29yZS9pbmZvLmMKKysrKyBiL2xp YmZyZWVyZHAvY29yZS9pbmZvLmMKK0BAIC0yNCw2ICsyNCw3IEBACisgI2VuZGlmCisgCisgI2lu Y2x1ZGUgPHdpbnByL2NydC5oPgorKyNpbmNsdWRlIDx3aW5wci9hc3NlcnQuaD4KKyAjaW5jbHVk ZSA8ZnJlZXJkcC9jcnlwdG8vY3J5cHRvLmg+CisgI2luY2x1ZGUgPGZyZWVyZHAvbG9nLmg+Cisg I2luY2x1ZGUgPGZyZWVyZHAvc2Vzc2lvbi5oPgorQEAgLTEzNjMsMTAgKzEzNjQsMTEgQEAgc3Rh dGljIEJPT0wgcmRwX3dyaXRlX2xvZ29uX2luZm9fdjEod1N0cmVhbSogcywgbG9nb25faW5mbyog aW5mbykKKyAJcmV0dXJuIFRSVUU7CisgfQorIAorLXN0YXRpYyBCT09MIHJkcF93cml0ZV9sb2dv bl9pbmZvX3YyKHdTdHJlYW0qIHMsIGxvZ29uX2luZm8qIGluZm8pCisrc3RhdGljIEJPT0wgcmRw X3dyaXRlX2xvZ29uX2luZm9fdjIod1N0cmVhbSogcywgY29uc3QgbG9nb25faW5mbyogaW5mbykK KyB7CisgCVVJTlQzMiBTaXplID0gMiArIDQgKyA0ICsgNCArIDQgKyA1NTg7CistCXNpemVfdCBk b21haW5MZW4sIHVzZXJuYW1lTGVuOworKwlzaXplX3QgZG9tYWluTGVuID0gMDsKKysJc2l6ZV90 IHVzZXJuYW1lTGVuID0gMDsKKyAJaW50IGxlbjsKKyAJV0NIQVIqIHdTdHJpbmcgPSBOVUxMOwor IAorQEAgLTEzNzYsMTEgKzEzNzgsMTMgQEAgc3RhdGljIEJPT0wgcmRwX3dyaXRlX2xvZ29uX2lu Zm9fdjIod1N0cmVhbSogcywgbG9nb25faW5mbyogaW5mbykKKyAJU3RyZWFtX1dyaXRlX1VJTlQx NihzLCBTQVZFX1NFU1NJT05fUERVX1ZFUlNJT05fT05FKTsKKyAJU3RyZWFtX1dyaXRlX1VJTlQz MihzLCBTaXplKTsKKyAJU3RyZWFtX1dyaXRlX1VJTlQzMihzLCBpbmZvLT5zZXNzaW9uSWQpOwor LQlkb21haW5MZW4gPSBzdHJsZW4oaW5mby0+ZG9tYWluKTsKKysJaWYgKGluZm8tPmRvbWFpbikK KysJCWRvbWFpbkxlbiA9IHN0cmxlbihpbmZvLT5kb21haW4pOworIAlpZiAoZG9tYWluTGVuID4g VUlOVDMyX01BWCkKKyAJCXJldHVybiBGQUxTRTsKKyAJU3RyZWFtX1dyaXRlX1VJTlQzMihzLCAo VUlOVDMyKShkb21haW5MZW4gKyAxKSAqIDIpOworLQl1c2VybmFtZUxlbiA9IHN0cmxlbihpbmZv LT51c2VybmFtZSk7CisrCWlmIChpbmZvLT51c2VybmFtZSkKKysJCXVzZXJuYW1lTGVuID0gc3Ry bGVuKGluZm8tPnVzZXJuYW1lKTsKKyAJaWYgKHVzZXJuYW1lTGVuID4gVUlOVDMyX01BWCkKKyAJ CXJldHVybiBGQUxTRTsKKyAJU3RyZWFtX1dyaXRlX1VJTlQzMihzLCAoVUlOVDMyKSh1c2VybmFt ZUxlbiArIDEpICogMik7CitAQCAtMTQ1NywxMCArMTQ2MSwxMSBAQCBzdGF0aWMgQk9PTCByZHBf d3JpdGVfbG9nb25faW5mb19leCh3U3RyZWFtKiBzLCBsb2dvbl9pbmZvX2V4KiBpbmZvKQorIAor IEJPT0wgcmRwX3NlbmRfc2F2ZV9zZXNzaW9uX2luZm8ocmRwQ29udGV4dCogY29udGV4dCwgVUlO VDMyIHR5cGUsIHZvaWQqIGRhdGEpCisgeworLQl3U3RyZWFtKiBzOworIAlCT09MIHN0YXR1czsK KysKKysJV0lOUFJfQVNTRVJUKGNvbnRleHQpOworIAlyZHBSZHAqIHJkcCA9IGNvbnRleHQtPnJk cDsKKy0JcyA9IHJkcF9kYXRhX3BkdV9pbml0KHJkcCk7CisrCXdTdHJlYW0qIHMgPSByZHBfZGF0 YV9wZHVfaW5pdChyZHApOworIAorIAlpZiAoIXMpCisgCQlyZXR1cm4gRkFMU0U7CistLSAKKzIu NTMuMAorCgpkaWZmIC0tZ2l0IGEvY29yZS1tZXNzYWdlLWZpeC11cGRhdGVfbWVzc2FnZV9XaW5k b3dJY29uLnBhdGNoIGIvY29yZS1tZXNzYWdlLWZpeC11cGRhdGVfbWVzc2FnZV9XaW5kb3dJY29u LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2NDgxYjEKLS0tIC9k ZXYvbnVsbAorKysgYi9jb3JlLW1lc3NhZ2UtZml4LXVwZGF0ZV9tZXNzYWdlX1dpbmRvd0ljb24u cGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSA5Mzk3ZmJlZWQ0YjI4NjJhZTY4Zjk1NTY5NTBh ZjQxNTE2M2M5Mzk4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQXJtaW4gTm92YWsg PGFybWluLm5vdmFrQHRoaW5jYXN0LmNvbT4KK0RhdGU6IFR1ZSwgNyBKdWwgMjAyNiAxMjo1ODox MSArMDIwMAorU3ViamVjdDogW1BBVENIXSBbY29yZSxtZXNzYWdlXSBmaXggdXBkYXRlX21lc3Nh Z2VfV2luZG93SWNvbgorCistLS0KKyBsaWJmcmVlcmRwL2NvcmUvbWVzc2FnZS5jIHwgNyArKysr Ky0tCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKwor ZGlmZiAtLWdpdCBhL2xpYmZyZWVyZHAvY29yZS9tZXNzYWdlLmMgYi9saWJmcmVlcmRwL2NvcmUv bWVzc2FnZS5jCitpbmRleCA3YWYyOWU5NGQuLjFhYjBkNGU0ZSAxMDA2NDQKKy0tLSBhL2xpYmZy ZWVyZHAvY29yZS9tZXNzYWdlLmMKKysrKyBiL2xpYmZyZWVyZHAvY29yZS9tZXNzYWdlLmMKK0BA IC0xMTQ3LDE4ICsxMTQ3LDIxIEBAIHN0YXRpYyBCT09MIHVwZGF0ZV9tZXNzYWdlX1dpbmRvd0lj b24ocmRwQ29udGV4dCogY29udGV4dCwgY29uc3QgV0lORE9XX09SREVSX0lOCisgCWlmICghd1Bh cmFtKQorIAkJcmV0dXJuIEZBTFNFOworCistCUNvcHlNZW1vcnkod1BhcmFtLCBvcmRlckluZm8s IHNpemVvZihXSU5ET1dfT1JERVJfSU5GTykpOworKwkqd1BhcmFtID0gKm9yZGVySW5mbzsKKysK KyAJbFBhcmFtID0gKFdJTkRPV19JQ09OX09SREVSKiljYWxsb2MoMSwgc2l6ZW9mKFdJTkRPV19J Q09OX09SREVSKSk7CisKKyAJaWYgKCFsUGFyYW0pCisgCQlnb3RvIG91dF9mYWlsOworCisrCSps UGFyYW0gPSAqd2luZG93SWNvbjsKKyAJbFBhcmFtLT5pY29uSW5mbyA9IGNhbGxvYygxLCBzaXpl b2YoSUNPTl9JTkZPKSk7CisKKyAJaWYgKCFsUGFyYW0tPmljb25JbmZvKQorIAkJZ290byBvdXRf ZmFpbDsKKworLQlDb3B5TWVtb3J5KGxQYXJhbSwgd2luZG93SWNvbiwgc2l6ZW9mKFdJTkRPV19J Q09OX09SREVSKSk7CisrCSpsUGFyYW0tPmljb25JbmZvID0gKndpbmRvd0ljb24tPmljb25JbmZv OworKworIAlXTG9nX1ZSQihUQUcsICJ1cGRhdGVfbWVzc2FnZV9XaW5kb3dJY29uIik7CisKKyAJ aWYgKHdpbmRvd0ljb24tPmljb25JbmZvLT5jYkJpdHNDb2xvciA+IDApCgpkaWZmIC0tZ2l0IGEv Y29yZS1yZWRpcmVjdGlvbi1jaGVjay1yZWRpcmVjdGlvbi12YWx1ZXMtZm9yLXZhbGlkaXR5LnBh dGNoIGIvY29yZS1yZWRpcmVjdGlvbi1jaGVjay1yZWRpcmVjdGlvbi12YWx1ZXMtZm9yLXZhbGlk aXR5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzNjA1MDAKLS0t IC9kZXYvbnVsbAorKysgYi9jb3JlLXJlZGlyZWN0aW9uLWNoZWNrLXJlZGlyZWN0aW9uLXZhbHVl cy1mb3ItdmFsaWRpdHkucGF0Y2gKQEAgLTAsMCArMSwxNjMgQEAKK0Zyb20gY2RhYmM3OGZjNTBh NWExODU5ZmFlYmMxZTQxYTNkZmJiZDAwNzM0MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zy b206IEFybWluIE5vdmFrIDxhcm1pbi5ub3Zha0B0aGluY2FzdC5jb20+CitEYXRlOiBUaHUsIDkg SnVsIDIwMjYgMDg6MzQ6MjQgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gW2NvcmUscmVkaXJlY3Rp b25dIGNoZWNrIHJlZGlyZWN0aW9uIHZhbHVlcyBmb3IgdmFsaWRpdHkKKworQWRkIHNvbWUgYmFz aWMgdmFsaWRpdHkgY2hlY2tzIGZvciBkYXRhIHByb3ZpZGVkIGJ5IHNlcnZlci4KKy0tLQorIGxp YmZyZWVyZHAvY29yZS9yZWRpcmVjdGlvbi5jIHwgMjUgKysrKysrKysrKysrKysrKysrKystLS0t LQorIGxpYmZyZWVyZHAvY29yZS91dGlscy5jICAgICAgIHwgMzMgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCisgbGliZnJlZXJkcC9jb3JlL3V0aWxzLmggICAgICAgfCAgMiArKwor IDMgZmlsZXMgY2hhbmdlZCwgNTUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlm ZiAtLWdpdCBhL2xpYmZyZWVyZHAvY29yZS9yZWRpcmVjdGlvbi5jIGIvbGliZnJlZXJkcC9jb3Jl L3JlZGlyZWN0aW9uLmMKK2luZGV4IDU5YzZkYmNlZS4uYjRiMjIyZWIyIDEwMDY0NAorLS0tIGEv bGliZnJlZXJkcC9jb3JlL3JlZGlyZWN0aW9uLmMKKysrKyBiL2xpYmZyZWVyZHAvY29yZS9yZWRp cmVjdGlvbi5jCitAQCAtNDA2LDYgKzQwNiw4IEBAIHN0YXRpYyBpbnQgcmRwX3JlY3Zfc2VydmVy X3JlZGlyZWN0aW9uX3BkdShyZHBSZHAqIHJkcCwgd1N0cmVhbSogcykKKyAJeworIAkJaWYgKCFy ZHBfcmVkaXJlY3Rpb25fcmVhZF91bmljb2RlX3N0cmluZyhzLCAmKHJlZGlyZWN0aW9uLT5UYXJn ZXROZXRBZGRyZXNzKSwgODApKQorIAkJCXJldHVybiAtMTsKKysJCWlmICghdXRpbHNfaXNfdmFs aWRfaXAocmVkaXJlY3Rpb24tPlRhcmdldE5ldEFkZHJlc3MpKQorKwkJCXJldHVybiAtMTsKKyAJ fQorCisgCWlmIChyZWRpcmVjdGlvbi0+ZmxhZ3MgJiBMQl9MT0FEX0JBTEFOQ0VfSU5GTykKK0BA IC00MTksMTMgKzQyMSwxNyBAQCBzdGF0aWMgaW50IHJkcF9yZWN2X3NlcnZlcl9yZWRpcmVjdGlv bl9wZHUocmRwUmRwKiByZHAsIHdTdHJlYW0qIHMpCisgCQlpZiAoIXJkcF9yZWRpcmVjdGlvbl9y ZWFkX2RhdGEoTEJfTE9BRF9CQUxBTkNFX0lORk8sIHMsICZyZWRpcmVjdGlvbi0+TG9hZEJhbGFu Y2VJbmZvTGVuZ3RoLAorIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZWRpcmVj dGlvbi0+TG9hZEJhbGFuY2VJbmZvKSkKKyAJCQlyZXR1cm4gLTE7CisrCQlpZiAoIXdpbnByX3N0 cl9pc192YWxpZF91cmxOKChjb25zdCBjaGFyKilyZWRpcmVjdGlvbi0+TG9hZEJhbGFuY2VJbmZv LAorKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdGlvbi0+TG9hZEJhbGFu Y2VJbmZvTGVuZ3RoKSkKKysJCQlyZXR1cm4gLTE7CisgCX0KKworIAlpZiAocmVkaXJlY3Rpb24t PmZsYWdzICYgTEJfVVNFUk5BTUUpCisgCXsKKyAJCWlmICghcmRwX3JlZGlyZWN0aW9uX3JlYWRf dW5pY29kZV9zdHJpbmcocywgJihyZWRpcmVjdGlvbi0+VXNlcm5hbWUpLCA1MTIpKQorIAkJCXJl dHVybiAtMTsKKy0KKysJCWlmICh3aW5wcl9zdHJfaGFzX25ld2xpbmVzKHJlZGlyZWN0aW9uLT5V c2VybmFtZSkpCisrCQkJcmV0dXJuIC0xOworIAkJV0xvZ19EQkcoVEFHLCAiVXNlcm5hbWU6ICVz IiwgcmVkaXJlY3Rpb24tPlVzZXJuYW1lKTsKKyAJfQorCitAQCAtNDMzLDcgKzQzOSw4IEBAIHN0 YXRpYyBpbnQgcmRwX3JlY3Zfc2VydmVyX3JlZGlyZWN0aW9uX3BkdShyZHBSZHAqIHJkcCwgd1N0 cmVhbSogcykKKyAJeworIAkJaWYgKCFyZHBfcmVkaXJlY3Rpb25fcmVhZF91bmljb2RlX3N0cmlu ZyhzLCAmKHJlZGlyZWN0aW9uLT5Eb21haW4pLCA1MikpCisgCQkJcmV0dXJuIC0xOworLQorKwkJ aWYgKHdpbnByX3N0cl9oYXNfbmV3bGluZXMocmVkaXJlY3Rpb24tPkRvbWFpbikpCisrCQkJcmV0 dXJuIC0xOworIAkJV0xvZ19EQkcoVEFHLCAiRG9tYWluOiAlcyIsIHJlZGlyZWN0aW9uLT5Eb21h aW4pOworIAl9CisKK0BAIC00ODQsNyArNDkxLDggQEAgc3RhdGljIGludCByZHBfcmVjdl9zZXJ2 ZXJfcmVkaXJlY3Rpb25fcGR1KHJkcFJkcCogcmRwLCB3U3RyZWFtKiBzKQorIAl7CisgCQlpZiAo IXJkcF9yZWRpcmVjdGlvbl9yZWFkX3VuaWNvZGVfc3RyaW5nKHMsICYocmVkaXJlY3Rpb24tPlRh cmdldEZRRE4pLCA1MTIpKQorIAkJCXJldHVybiAtMTsKKy0KKysJCWlmICghd2lucHJfc3RyX2lz X3ZhbGlkX3VybChyZWRpcmVjdGlvbi0+VGFyZ2V0RlFETikpCisrCQkJcmV0dXJuIC0xOworIAkJ V0xvZ19EQkcoVEFHLCAiVGFyZ2V0RlFETjogJXMiLCByZWRpcmVjdGlvbi0+VGFyZ2V0RlFETik7 CisgCX0KKworQEAgLTQ5Miw3ICs1MDAsOCBAQCBzdGF0aWMgaW50IHJkcF9yZWN2X3NlcnZlcl9y ZWRpcmVjdGlvbl9wZHUocmRwUmRwKiByZHAsIHdTdHJlYW0qIHMpCisgCXsKKyAJCWlmICghcmRw X3JlZGlyZWN0aW9uX3JlYWRfdW5pY29kZV9zdHJpbmcocywgJihyZWRpcmVjdGlvbi0+VGFyZ2V0 TmV0Qmlvc05hbWUpLCAzMikpCisgCQkJcmV0dXJuIC0xOworLQorKwkJaWYgKCF3aW5wcl9zdHJf aXNfdmFsaWRfdXJsKHJlZGlyZWN0aW9uLT5UYXJnZXROZXRCaW9zTmFtZSkpCisrCQkJcmV0dXJu IC0xOworIAkJV0xvZ19EQkcoVEFHLCAiVGFyZ2V0TmV0Qmlvc05hbWU6ICVzIiwgcmVkaXJlY3Rp b24tPlRhcmdldE5ldEJpb3NOYW1lKTsKKyAJfQorCitAQCAtNTAxLDYgKzUxMCw4IEBAIHN0YXRp YyBpbnQgcmRwX3JlY3Zfc2VydmVyX3JlZGlyZWN0aW9uX3BkdShyZHBSZHAqIHJkcCwgd1N0cmVh bSogcykKKyAJCWlmICghcmRwX3JlZGlyZWN0aW9uX3JlYWRfZGF0YShMQl9DTElFTlRfVFNWX1VS TCwgcywgJnJlZGlyZWN0aW9uLT5Uc3ZVcmxMZW5ndGgsCisgCQkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJnJlZGlyZWN0aW9uLT5Uc3ZVcmwpKQorIAkJCXJldHVybiAtMTsKKysJCWlm ICghd2lucHJfc3RyX2lzX3ZhbGlkX3VybE4oKGNvbnN0IGNoYXIqKXJlZGlyZWN0aW9uLT5Uc3ZV cmwsIHJlZGlyZWN0aW9uLT5Uc3ZVcmxMZW5ndGgpKQorKwkJCXJldHVybiAtMTsKKyAJfQorCisg CWlmIChyZWRpcmVjdGlvbi0+ZmxhZ3MgJiBMQl9SRURJUkVDVElPTl9HVUlEKQorQEAgLTU0MSw3 ICs1NTIsOCBAQCBzdGF0aWMgaW50IHJkcF9yZWN2X3NlcnZlcl9yZWRpcmVjdGlvbl9wZHUocmRw UmRwKiByZHAsIHdTdHJlYW0qIHMpCisgCQl7CisgCQkJaWYgKCFyZHBfcmVkaXJlY3Rpb25fcmVh ZF91bmljb2RlX3N0cmluZyhzLCAmKHJlZGlyZWN0aW9uLT5UYXJnZXROZXRBZGRyZXNzZXNbaV0p LCA4MCkpCisgCQkJCXJldHVybiAtMTsKKy0KKysJCQlpZiAoIXV0aWxzX2lzX3ZhbGlkX2lwKHJl ZGlyZWN0aW9uLT5UYXJnZXROZXRBZGRyZXNzZXNbaV0pKQorKwkJCQlyZXR1cm4gLTE7CisgCQkJ V0xvZ19EQkcoVEFHLCAiVGFyZ2V0TmV0QWRkcmVzc2VzWyUiIFBSSXV6ICJdOiAlcyIsIGksCisg CQkJICAgICAgICAgcmVkaXJlY3Rpb24tPlRhcmdldE5ldEFkZHJlc3Nlc1tpXSk7CisgCQl9CitA QCAtNTY5LDcgKzU4MSwxMCBAQCBpbnQgcmRwX3JlY3ZfZW5oYW5jZWRfc2VjdXJpdHlfcmVkaXJl Y3Rpb25fcGFja2V0KHJkcFJkcCogcmRwLCB3U3RyZWFtKiBzKQorIAlzdGF0dXMgPSByZHBfcmVj dl9zZXJ2ZXJfcmVkaXJlY3Rpb25fcGR1KHJkcCwgcyk7CisKKyAJaWYgKHN0YXR1cyA8IDApCisr CXsKKysJCVdMb2dfRVJSKFRBRywgInJlZGlyZWN0aW9uIHBhY2tldCBpbnZhbGlkLCBhYm9ydGlu ZyIpOworIAkJcmV0dXJuIHN0YXR1czsKKysJfQorCisgCWlmIChTdHJlYW1fR2V0UmVtYWluaW5n TGVuZ3RoKHMpID49IDEpCisgCXsKK2RpZmYgLS1naXQgYS9saWJmcmVlcmRwL2NvcmUvdXRpbHMu YyBiL2xpYmZyZWVyZHAvY29yZS91dGlscy5jCitpbmRleCAxMzljMWE0MzMuLjEwMjgxOTkxNSAx MDA2NDQKKy0tLSBhL2xpYmZyZWVyZHAvY29yZS91dGlscy5jCisrKysgYi9saWJmcmVlcmRwL2Nv cmUvdXRpbHMuYworQEAgLTIyLDYgKzIyLDE2IEBACisgI2luY2x1ZGUgImNvbmZpZy5oIgorICNl bmRpZgorCisrI2luY2x1ZGUgPHN0cmluZy5oPgorKworKyNpZmRlZiBfV0lOMzIKKysjaW5jbHVk ZSA8d3MydGNwaXAuaD4KKysjZWxzZQorKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisrI2luY2x1 ZGUgPG5ldGluZXQvaW4uaD4KKysjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisrI2VuZGlmCisrCisg I2luY2x1ZGUgPHdpbnByL2Fzc2VydC5oPgorCisgI2luY2x1ZGUgPGZyZWVyZHAvZnJlZXJkcC5o PgorQEAgLTY1LDMgKzc1LDI2IEBAIEJPT0wgdXRpbHNfc3RyX2lzX2VtcHR5KGNvbnN0IGNoYXIq IHN0cikKKyAJCXJldHVybiBUUlVFOworIAlyZXR1cm4gRkFMU0U7CisgfQorKworK3N0YXRpYyBC T09MIGlzVmFsaWRJUHY0KGNvbnN0IGNoYXIqIGlwQWRkcmVzcykKKyt7CisrCXN0cnVjdCBzb2Nr YWRkcl9pbiBzYTsKKysJaW50IHJlc3VsdDsKKysJbWVtc2V0KCZzYSwgMCwgc2l6ZW9mKHNhKSk7 CisrCXJlc3VsdCA9IGluZXRfcHRvbihBRl9JTkVULCBpcEFkZHJlc3MsICYoc2Euc2luX2FkZHIp KTsKKysJcmV0dXJuIHJlc3VsdCAhPSAwOworK30KKysKKytzdGF0aWMgQk9PTCBpc1ZhbGlkSVB2 Nihjb25zdCBjaGFyKiBpcEFkZHJlc3MpCisreworKwlzdHJ1Y3Qgc29ja2FkZHJfaW42IHNhOwor KwlpbnQgcmVzdWx0OworKwltZW1zZXQoJnNhLCAwLCBzaXplb2Yoc2EpKTsKKysJcmVzdWx0ID0g aW5ldF9wdG9uKEFGX0lORVQ2LCBpcEFkZHJlc3MsICYoc2Euc2luNl9hZGRyKSk7CisrCXJldHVy biByZXN1bHQgIT0gMDsKKyt9CisrCisrQk9PTCB1dGlsc19pc192YWxpZF9pcChjb25zdCBjaGFy KiBpcEFkZHJlc3MpCisreworKwlyZXR1cm4gaXNWYWxpZElQdjQoaXBBZGRyZXNzKSB8fCBpc1Zh bGlkSVB2NihpcEFkZHJlc3MpOworK30KK2RpZmYgLS1naXQgYS9saWJmcmVlcmRwL2NvcmUvdXRp bHMuaCBiL2xpYmZyZWVyZHAvY29yZS91dGlscy5oCitpbmRleCA0MzI5NTE4MTIuLjRiMTUwYzQx NiAxMDA2NDQKKy0tLSBhL2xpYmZyZWVyZHAvY29yZS91dGlscy5oCisrKysgYi9saWJmcmVlcmRw L2NvcmUvdXRpbHMuaAorQEAgLTMwLDQgKzMwLDYgQEAgQk9PTCB1dGlsc19hYm9ydF9jb25uZWN0 KHJkcENvbnRleHQqIGNvbnRleHQpOworIEJPT0wgdXRpbHNfc3RyX2lzX2VtcHR5KGNvbnN0IGNo YXIqIHN0cik7CisgQk9PTCB1dGlsc19zdHJfY29weShjb25zdCBjaGFyKiB2YWx1ZSwgY2hhcioq IGRzdCk7CisKKytGUkVFUkRQX0xPQ0FMIEJPT0wgdXRpbHNfaXNfdmFsaWRfaXAoY29uc3QgY2hh ciogaXBBZGRyZXNzKTsKKysKKyAjZW5kaWYgLyogRlJFRVJEUF9MSUJfQ09SRV9VVElMU19IICov CgpkaWZmIC0tZ2l0IGEvY29yZS1yZWRpcmVjdGlvbi1yZWxheC1jaGVja3MucGF0Y2ggYi9jb3Jl LXJlZGlyZWN0aW9uLXJlbGF4LWNoZWNrcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi5hMDAzZTRjCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS1yZWRpcmVjdGlvbi1y ZWxheC1jaGVja3MucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSBiM2NmZjY1YTFhZGJiZGVk YTQ3OGYwMzUyMThlZWFkYzcyY2EwMDMyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTog QXJtaW4gTm92YWsgPGFybWluLm5vdmFrQHRoaW5jYXN0LmNvbT4KK0RhdGU6IFR1ZSwgMTQgSnVs IDIwMjYgMTI6MzA6MjcgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gW2NvcmUscmVkaXJlY3Rpb25d IHJlbGF4IGNoZWNrcworCisqIFRzdlVybCBpcyBvcGFxdWUsIGRvIG5vdCBhc3N1bWUgYW55IGZv cm1hdAorKiBMb2FkQmFsYW5jZUluZm8gaXMgb3BhcXVlLCBkbyBub3QgYXNzdW1lIGFueSBmb3Jt YXQKKy0tLQorIGxpYmZyZWVyZHAvY29yZS9yZWRpcmVjdGlvbi5jIHwgNSAtLS0tLQorIDEgZmls ZSBjaGFuZ2VkLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliZnJlZXJkcC9jb3Jl L3JlZGlyZWN0aW9uLmMgYi9saWJmcmVlcmRwL2NvcmUvcmVkaXJlY3Rpb24uYworaW5kZXggYjRi MjIyZWIyLi43NzM0OTY2MDMgMTAwNjQ0CistLS0gYS9saWJmcmVlcmRwL2NvcmUvcmVkaXJlY3Rp b24uYworKysrIGIvbGliZnJlZXJkcC9jb3JlL3JlZGlyZWN0aW9uLmMKK0BAIC00MjEsOSArNDIx LDYgQEAgc3RhdGljIGludCByZHBfcmVjdl9zZXJ2ZXJfcmVkaXJlY3Rpb25fcGR1KHJkcFJkcCog cmRwLCB3U3RyZWFtKiBzKQorIAkJaWYgKCFyZHBfcmVkaXJlY3Rpb25fcmVhZF9kYXRhKExCX0xP QURfQkFMQU5DRV9JTkZPLCBzLCAmcmVkaXJlY3Rpb24tPkxvYWRCYWxhbmNlSW5mb0xlbmd0aCwK KyAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVkaXJlY3Rpb24tPkxvYWRCYWxh bmNlSW5mbykpCisgCQkJcmV0dXJuIC0xOworLQkJaWYgKCF3aW5wcl9zdHJfaXNfdmFsaWRfdXJs TigoY29uc3QgY2hhciopcmVkaXJlY3Rpb24tPkxvYWRCYWxhbmNlSW5mbywKKy0JCSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3Rpb24tPkxvYWRCYWxhbmNlSW5mb0xlbmd0aCkp CistCQkJcmV0dXJuIC0xOworIAl9CisKKyAJaWYgKHJlZGlyZWN0aW9uLT5mbGFncyAmIExCX1VT RVJOQU1FKQorQEAgLTUxMCw4ICs1MDcsNiBAQCBzdGF0aWMgaW50IHJkcF9yZWN2X3NlcnZlcl9y ZWRpcmVjdGlvbl9wZHUocmRwUmRwKiByZHAsIHdTdHJlYW0qIHMpCisgCQlpZiAoIXJkcF9yZWRp cmVjdGlvbl9yZWFkX2RhdGEoTEJfQ0xJRU5UX1RTVl9VUkwsIHMsICZyZWRpcmVjdGlvbi0+VHN2 VXJsTGVuZ3RoLAorIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZWRpcmVjdGlv bi0+VHN2VXJsKSkKKyAJCQlyZXR1cm4gLTE7CistCQlpZiAoIXdpbnByX3N0cl9pc192YWxpZF91 cmxOKChjb25zdCBjaGFyKilyZWRpcmVjdGlvbi0+VHN2VXJsLCByZWRpcmVjdGlvbi0+VHN2VXJs TGVuZ3RoKSkKKy0JCQlyZXR1cm4gLTE7CisgCX0KKworIAlpZiAocmVkaXJlY3Rpb24tPmZsYWdz ICYgTEJfUkVESVJFQ1RJT05fR1VJRCkKCmRpZmYgLS1naXQgYS9jcnlwdG8tYmFzZTY0LWVuc3Vy ZS1jaGFyLWlzLXNpbmdlbmQucGF0Y2ggYi9jcnlwdG8tYmFzZTY0LWVuc3VyZS1jaGFyLWlzLXNp bmdlbmQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZiYTljOAot LS0gL2Rldi9udWxsCisrKyBiL2NyeXB0by1iYXNlNjQtZW5zdXJlLWNoYXItaXMtc2luZ2VuZC5w YXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIDdlMTc1OWM3MzkwMDJkYzk1ZDhmMTU2NzJkMGY3 MDBjYThkY2NlMGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPbmRyZWogSG9seSA8 b2hvbHlAcmVkaGF0LmNvbT4KK0RhdGU6IFR1ZSwgMTcgRmViIDIwMjYgMTQ6MjM6MjkgKzAxMDAK K1N1YmplY3Q6IFtQQVRDSF0gW2NyeXB0byxiYXNlNjRdIGVuc3VyZSBjaGFyIGlzIHNpbmdlbmQK KworQmFja3BvcnQgb2YgY29tbWl0IDYyYTllNzg3ZWRiMmNmY2U5ODU4ZmE0Y2VkYTU0NjE2ODBl ZmM1OTAuCisKK0NvLUF1dGhvcmVkLUJ5OiBDdXJzb3IgPGN1cnNvcmFnZW50QGN1cnNvci5jb20+ CistLS0KKyBsaWJmcmVlcmRwL2NyeXB0by9iYXNlNjQuYyB8IDQgKysrKworIDEgZmlsZSBjaGFu Z2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2xpYmZyZWVyZHAvY3J5cHRvL2Jh c2U2NC5jIGIvbGliZnJlZXJkcC9jcnlwdG8vYmFzZTY0LmMKK2luZGV4IDVhNWRhODlhNC4uYzA4 NGRlMzhlIDEwMDY0NAorLS0tIGEvbGliZnJlZXJkcC9jcnlwdG8vYmFzZTY0LmMKKysrKyBiL2xp YmZyZWVyZHAvY3J5cHRvL2Jhc2U2NC5jCitAQCAtOTMsNiArOTMsMTAgQEAgY2hhciogY3J5cHRv X2Jhc2U2NF9lbmNvZGUoY29uc3QgQllURSogZGF0YSwgaW50IGxlbmd0aCkKKyAKKyBzdGF0aWMg aW50IGJhc2U2NF9kZWNvZGVfY2hhcihjaGFyIGMpCisgeworKwkvKiBlbnN1cmUgY2hhciBpcyBz aWduZWQgZm9yIHRoaXMgY2hlY2sgKi8KKysJaWYgKChpbnQpYyA8PSAnXDAnKQorKwkJcmV0dXJu IC0xOworKworIAlpZiAoYyA+PSAnQScgJiYgYyA8PSAnWicpCisgCQlyZXR1cm4gYyAtICdBJzsK KyAKKy0tIAorMi41Mi4wCisKCmRpZmYgLS1naXQgYS9mcmVlcmRwMi5zcGVjIGIvZnJlZXJkcDIu c3BlYwppbmRleCBjMGJmMTAwLi4yZDMyM2Q3IDEwMDY0NAotLS0gYS9mcmVlcmRwMi5zcGVjCisr KyBiL2ZyZWVyZHAyLnNwZWMKQEAgLTI2LDcgKzI2LDcgQEAKIAogTmFtZTogICAgICAgICAgIGZy ZWVyZHAyCiBWZXJzaW9uOiAgICAgICAgMi4xMS43Ci1SZWxlYXNlOiAgICAgICAgMTUlez9kaXN0 fQorUmVsZWFzZTogICAgICAgIDE2JXs/ZGlzdH0KIFN1bW1hcnk6ICAgICAgICBGcmVlIGltcGxl bWVudGF0aW9uIG9mIHRoZSBSZW1vdGUgRGVza3RvcCBQcm90b2NvbCAoUkRQKQogCiAjIFRoZSBl ZmZlY3RpdmUgbGljZW5zZSBpcyBBcGFjaGUtMi4wIGJ1dDoKQEAgLTQyLDYgKzQyLDEzNyBAQCBV Ukw6ICAgICAgICAgICAgaHR0cDovL3d3dy5mcmVlcmRwLmNvbS8KIFNvdXJjZTA6ICAgICAgICBG cmVlUkRQLSV7dmVyc2lvbn0tcmVwYWNrLnRhci5negogU291cmNlMTogICAgICAgIGZyZWVyZHBf ZG93bmxvYWRfYW5kX3JlcGFjay5zaAogCisjIENWRS0yMDI2LTIzNTMyCitQYXRjaDogICAgICAg ICAgZ2RpLWdmeC1wcm9wZXJseS1jbGFtcC1TdXJmYWNlVG9TdXJmYWNlLnBhdGNoCisKKyMgQ1ZF LTIwMjYtMjM1MzMKK1BhdGNoOiAgICAgICAgICBjb2RlYy1jbGVhci1maXgtY2xlYXJfcmVzaXpl X2J1ZmZlci1jaGVja3MucGF0Y2gKKworIyBDVkUtMjAyNi0yMzUzNAorUGF0Y2g6ICAgICAgICAg IGNvZGVjLWNsZWFyLWZpeC1vZmYtYnktb25lLWxlbmd0aC1jaGVjay5wYXRjaAorCisjIENWRS0y MDI2LTIzNTMwCitQYXRjaDogICAgICAgICAgY29kZWMtcGxhbmFyLWZpeC1kZWNvZGVyLWxlbmd0 aC1jaGVja3MucGF0Y2gKKworIyBDVkUtMjAyNi0yMzUzMQorUGF0Y2g6ICAgICAgICAgIGNvZGVj LWNsZWFyLWNoZWNrLWNsZWFyX2RlY29tcmVzcy1nbHlwaERhdGEucGF0Y2gKKworIyBDVkUtMjAy Ni0yMzg4MworUGF0Y2g6ICAgICAgICAgIGNsaWVudC14MTEtZml4LWRvdWJsZS1mcmVlLWluLWNh c2Utb2YtaW52YWxpZC1wb2ludGUucGF0Y2gKKworIyBDVkUtMjAyNi0yMzg4NAorUGF0Y2g6ICAg ICAgICAgIGNhY2hlLW9mZnNjcmVlbi1pbnZhbGlkYXRlLWJpdG1hcC1iZWZvcmUtZnJlZS5wYXRj aAorCisjIENWRS0yMDI2LTIyODU1CitQYXRjaDogICAgICAgICAgdXRpbHMtc21hcnRjYXJkLWFk ZC1sZW5ndGgtdmFsaWRpdHktY2hlY2tzLnBhdGNoCisKKyMgQ1ZFLTIwMjYtMjI4NTgKK1BhdGNo OiAgICAgICAgICBjcnlwdG8tYmFzZTY0LWVuc3VyZS1jaGFyLWlzLXNpbmdlbmQucGF0Y2gKKwor IyBDVkUtMjAyNi0yMjg1OQorUGF0Y2g6ICAgICAgICAgIGNoYW5uZWxzLXVyYmRyYy1jaGVjay1p bnRlcmZhY2UtaW5kaWNlcy1iZWZvcmUtdXNlLnBhdGNoCisKKyMgQ1ZFLTIwMjYtMjY5NTUKK1Bh dGNoOiAgICAgICAgICBjb2RlYy1jbGVhci1maXgtZGVzdGluYXRpb24tY2hlY2tzLnBhdGNoCisK KyMgQ1ZFLTIwMjYtMjY5NjUKK1BhdGNoOiAgICAgICAgICBjb2RlYy1wbGFuYXItZml4LW1pc3Np bmctZGVzdGluYXRpb24tYm91bmRzLWNoZWNrcy5wYXRjaAorCisjIENWRS0yMDI2LTIyODUyCitQ YXRjaDogICAgICAgICAgY2hhbm5lbHMtYXVkaW4tZnJlZS11cC1vbGQtYXVkaW8tZm9ybWF0cy5w YXRjaAorCisjIENWRS0yMDI2LTIyODU0CitQYXRjaDogICAgICAgICAgY2hhbm5lbHMtZHJpdmUt Zml4LWNvbnN0YW50LXR5cGUucGF0Y2gKKworIyBDVkUtMjAyNi0yMjg1NgorUGF0Y2g6ICAgICAg ICAgIGNoYW5uZWxzLXNlcmlhbC1sb2NrLWxpc3QtZGljdGlvbmFyeS5wYXRjaAorUGF0Y2g6ICAg ICAgICAgIGNoYW5uZWxzLXNlcmlhbC1leHBsaWNpdGx5LWxvY2stc2VyaWFsLUlycFRocmVhZHMu cGF0Y2gKKworIyBDVkUtMjAyNi0yMzczMgorUGF0Y2g6ICAgICAgICAgIGNvZGVjLWNvbG9yLWFk ZC1mcmVlcmRwX2dseXBoX2NvbnZlcnRfZXgucGF0Y2gKK1BhdGNoOiAgICAgICAgICBnZGktZ3Jh cGhpY3MtVXNlLWZyZWVyZHBfZ2x5cGhfY29udmVydF9leC5wYXRjaAorCisjIENWRS0yMDI2LTIz OTQ4CitQYXRjaDogICAgICAgICAgY29yZS1pbmZvLWZpeC1taXNzaW5nLU5VTEwtY2hlY2sucGF0 Y2gKKworIyBDVkUtMjAyNi0yNDQ5MQorUGF0Y2g6ICAgICAgICAgIGNoYW5uZWxzLWRyZHludmMt cmVzZXQtY2hhbm5lbF9jYWxsYmFjay1iZWZvcmUtY2xvc2UucGF0Y2gKK1BhdGNoOiAgICAgICAg ICBjaGFubmVscy12aWRlby11bmlmeS1lcnJvci1oYW5kbGluZy5wYXRjaAorUGF0Y2g6ICAgICAg ICAgIGNoYW5uZWxzLXZpZGVvLWZpeC13cm9uZy1jYXN0LnBhdGNoCisKKyMgQ1ZFLTIwMjYtMjQ2 NzUKK1BhdGNoOiAgICAgICAgICBjaGFubmVscy11cmJkcmMtZG8tbm90LWZyZWUtTXNDb25maWct b24tZmFpbHVyZS5wYXRjaAorCisjIENWRS0yMDI2LTI0Njc2CitQYXRjaDogICAgICAgICAgY2hh bm5lbHMtYXVkaW4tcmVzZXQtYXVkaW4tZm9ybWF0LnBhdGNoCisKKyMgQ1ZFLTIwMjYtMjQ2NzkK K1BhdGNoOiAgICAgICAgICBjaGFubmVscy11cmJkcmMtZW5zdXJlLUludGVyZmFjZU51bWJlci1p cy13aXRoaW4tcmFuLnBhdGNoCisKKyMgQ1ZFLTIwMjYtMjQ2ODEKK1BhdGNoOiAgICAgICAgICBj aGFubmVscy11cmJkcmMtY2FuY2VsLWFsbC11c2ItdHJhbnNmZXJzLW9uLWNoYW5uZWwtLnBhdGNo CisKKyMgQ1ZFLTIwMjYtMjQ2ODMKK1BhdGNoOiAgICAgICAgICBjaGFubmVscy1haW5wdXQtbG9j ay1jb250ZXh0LXdoZW4tdXBkYXRpbmctbGlzdGVuZXIucGF0Y2gKKworIyBDVkUtMjAyNi0yNDY4 NAorUGF0Y2g6ICAgICAgICAgIGNoYW5uZWxzLXJkcHNuZC10ZXJtaW5hdGUtdGhyZWFkLWJlZm9y ZS1mcmVlLnBhdGNoCitQYXRjaDogICAgICAgICAgY2hhbm5lbC1yZHBzbmQtb25seS1jbGVhbi11 cC10aHJlYWQtYmVmb3JlLWZyZWUucGF0Y2gKKworIyBDVkUtMjAyNi0zMTgwNgorUGF0Y2g6ICAg ICAgICAgIGNvZGVjLW5zYy1saW1pdC1jb3B5LWFyZWEtaW4tbnNjX3Byb2Nlc3NfbWVzc2FnZS5w YXRjaAorUGF0Y2g6ICAgICAgICAgIGNvZGVjLW5zYy1maXgtdXNlLW9mLW5zY19wcm9jZXNzX21l c3NhZ2UucGF0Y2gKKworIyBDVkUtMjAyNi0zMzk4NAorUGF0Y2g6ICAgICAgICAgIGNvZGVjLWNs ZWFyLXVwZGF0ZS1DTEVBUl9WQkFSX0VOVFJZLXNpemUtYWZ0ZXItYWxsb2MucGF0Y2gKKworIyBD VkUtMjAyNi0zMzk4MworUGF0Y2g6ICAgICAgICAgIGNvZGVjLXByb2dyZXNzaXZlLWZhaWwtcHJv Z3Jlc3NpdmVfcmZ4X3F1YW50X3N1Yi1vbi1pbnZhbGlkLXZhbHVlcy5wYXRjaAorUGF0Y2g6ICAg ICAgICAgIGNvZGVjLXByb2dyZXNzaXZlLWZpeC11bmRlcmZsb3ctZ3VhcmQtaW4tcHJvZ3Jlc3Np dmVfcmZ4X3F1YW50X3N1Yi5wYXRjaAorCisjIENWRS0yMDI2LTI2OTg2CitQYXRjaDogICAgICAg ICAgY2xpZW50LXgxMS1maXgteGZfcmFpbF93aW5kb3dfY29tbW9uLWNsZWFudXAucGF0Y2gKKwor IyBDVkUtMjAyNi0yNzk1MQorUGF0Y2g6ICAgICAgICAgIGFsbG9jYXRpb25zLWZpeC1ncm93dGgt b2YtcHJlYWxsb2NhdGVkLWJ1ZmZlcnMucGF0Y2gKKworIyBDVkUtMjAyNi0yOTc3NQorUGF0Y2g6 ICAgICAgICAgIGNhY2hlLWJpdG1hcC1vdmVyYWxsb2NhdGUtYml0bWFwLWNhY2hlLnBhdGNoCitQ YXRjaDogICAgICAgICAgY2FjaGUtYml0bWFwLWluaXRpYWxpemUtb3ZlcmFsbG9jYXRlZC1iaXRt YXAtY2FjaGUtZXh0cmEtc2xvdC5wYXRjaAorCisjIENWRS0yMDI2LTMxODg0CitQYXRjaDogICAg ICAgICAgY29kZWMtZHNwLWFkZC1mb3JtYXQtY2hlY2tzLnBhdGNoCisKKyMgQ1ZFLTIwMjYtMzE4 ODMKKyMgQ1ZFLTIwMjYtMzE4ODUKK1BhdGNoOiAgICAgICAgICBjb2RlYy1kc3AtZml4LWFycmF5 LWJvdW5kcy1jaGVja3MucGF0Y2gKKworIyBDVkUtMjAyNi0zMzk4NQorUGF0Y2g6ICAgICAgICAg IGNvZGVjLWNsZWFyLXVwZGF0ZS1jbGVhcl9nbHlwaF9lbnRyeS1jb3VudC1hZnRlci1hbGxvYy5w YXRjaAorCisjIENWRS0yMDI2LTI1OTUyCitQYXRjaDogICAgICAgICAgY2xpZW50LXgxMS1sb2Nr LWFwcHdpbmRvdy5wYXRjaAorUGF0Y2g6ICAgICAgICAgIGNsaWVudC14MTEtaW1wcm92ZS1yYWls cy13aW5kb3ctbG9ja2luZy5wYXRjaAorUGF0Y2g6ICAgICAgICAgIGNsaWVudC14MTEtcmVmYWN0 b3ItbG9ja2luZy5wYXRjaAorUGF0Y2g6ICAgICAgICAgIGNsaWVudC14MTEtZml4LWRlYWRsb2Nr LW9uLW91dHB1dC1leHBvc2UucGF0Y2gKKworIyBDVkUtMjAyNi00NTcwMAorUGF0Y2g6ICAgICAg ICAgIGNvZGVjLXBsYW5hci1maXgtYm91bmRzLWNoZWNrcy5wYXRjaAorCisjIENWRS0yMDI2LTY4 NTgwCitQYXRjaDogICAgICAgICAgY2hhbm5lbHMtYXVkaW4tbGltaXQtRnJhbWVzUGVyUGFja2V0 LnBhdGNoCisKKyMgQ1ZFLTIwMjYtNjcyOTkKK1BhdGNoOiAgICAgICAgICBjb3JlLW1lc3NhZ2Ut Zml4LXVwZGF0ZV9tZXNzYWdlX1dpbmRvd0ljb24ucGF0Y2gKKworIyBDVkUtMjAyNi02NDYyNAor UGF0Y2g6ICAgICAgICAgIGNsaWVudC1jb21tb24tZGVhY3RpdmF0ZS1jbGktcGFyc2luZy1pbi1y ZHAtZmlsZXMucGF0Y2gKKworIyBDVkUtMjAyNi02NzI4OQorUGF0Y2g6ICAgICAgICAgIHdpbnBy LWNydC1hZGQtZnVuY3Rpb25zLXRvLXRlc3Qtc3RyaW5nLnBhdGNoCitQYXRjaDogICAgICAgICAg Y29yZS1yZWRpcmVjdGlvbi1jaGVjay1yZWRpcmVjdGlvbi12YWx1ZXMtZm9yLXZhbGlkaXR5LnBh dGNoCitQYXRjaDogICAgICAgICAgY29yZS1yZWRpcmVjdGlvbi1yZWxheC1jaGVja3MucGF0Y2gK KwogQnVpbGRSZXF1aXJlczogIGdjYwogQnVpbGRSZXF1aXJlczogIGdjYy1jKysKIEJ1aWxkUmVx dWlyZXM6ICBhbHNhLWxpYi1kZXZlbApAQCAtMjcwLDYgKzQwMSwyNyBAQCBybSAtcmZ2ICV7YnVp bGRyb290fSV7X2JpbmRpcn0KICV7X2xpYmRpcn0vcGtnY29uZmlnL3dpbnByLXRvb2xzMi5wYwog CiAlY2hhbmdlbG9nCisqIE1vbiBBdWcgMzEgMjAyNiBPbmRyZWogSG9seSA8b2hvbHlAcmVkaGF0 LmNvbT4gLSAyLjExLjctMTYKKy0gQmFja3BvcnQgc2V2ZXJhbCBDVkUgZml4ZXMgKENWRS0yMDI2 LTIyODUyLCBDVkUtMjAyNi0yMjg1NCwgQ1ZFLTIwMjYtMjI4NTUsCisgIENWRS0yMDI2LTIyODU2 LCBDVkUtMjAyNi0yMjg1OCwgQ1ZFLTIwMjYtMjI4NTksIENWRS0yMDI2LTIzNTMwLAorICBDVkUt MjAyNi0yMzUzMSwgQ1ZFLTIwMjYtMjM1MzIsIENWRS0yMDI2LTIzNTMzLCBDVkUtMjAyNi0yMzUz NCwKKyAgQ1ZFLTIwMjYtMjM3MzIsIENWRS0yMDI2LTIzODgzLCBDVkUtMjAyNi0yMzg4NCwgQ1ZF LTIwMjYtMjM5NDgsCisgIENWRS0yMDI2LTI0NDkxLCBDVkUtMjAyNi0yNDY3NSwgQ1ZFLTIwMjYt MjQ2NzYsIENWRS0yMDI2LTI0Njc5LAorICBDVkUtMjAyNi0yNDY4MSwgQ1ZFLTIwMjYtMjQ2ODMs IENWRS0yMDI2LTI0Njg0LCBDVkUtMjAyNi0yNTk1MiwKKyAgQ1ZFLTIwMjYtMjY5NTUsIENWRS0y MDI2LTI2OTY1LCBDVkUtMjAyNi0yNjk4NiwgQ1ZFLTIwMjYtMjc5NTEsCisgIENWRS0yMDI2LTI5 Nzc1LCBDVkUtMjAyNi0zMTgwNiwgQ1ZFLTIwMjYtMzE4ODMsIENWRS0yMDI2LTMxODg0LAorICBD VkUtMjAyNi0zMTg4NSwgQ1ZFLTIwMjYtMzM5ODMsIENWRS0yMDI2LTMzOTg0LCBDVkUtMjAyNi0z Mzk4NSwKKyAgQ1ZFLTIwMjYtNDU3MDAsIENWRS0yMDI2LTY0NjI0LCBDVkUtMjAyNi02NzI4OSwg Q1ZFLTIwMjYtNjcyOTkgYW5kCisgIENWRS0yMDI2LTY4NTgwKQorICBSZXNvbHZlczogcmhieiMy NDMwOTE5LCByaGJ6IzI0MzA5MDgsIHJoYnojMjQzMDg5OCwgcmhieiMyNDMwOTE0LCByaGJ6IzI0 MzA5MDMKKyAgUmVzb2x2ZXM6IHJoYnojMjQzMDkyNCwgcmhieiMyNDMwOTMzLCByaGJ6IzI0Mjk4 MDgsIHJoYnojMjQyOTgyMywgcmhieiMyNDI5Nzk0CisgIFJlc29sdmVzOiByaGJ6IzI0NDMxNDYs IHJoYnojMjQ0Mjk3NSwgcmhieiMyNDI5Nzk5LCByaGJ6IzI0Mjk4MTQsIHJoYnojMjQyOTgyMQor ICBSZXNvbHZlczogcmhieiMyNDM4MzA5LCByaGJ6IzI0MzgzMjEsIHJoYnojMjQzODMwOCwgcmhi eiMyNDM4MzI4LCByaGJ6IzI0MzgzMjQKKyAgUmVzb2x2ZXM6IHJoYnojMjQzODMwMiwgcmhieiMy NDM4MzEwLCByaGJ6IzI0MzgzMDAsIHJoYnojMjQ0NzM5NCwgcmhieiMyNDUzMjQzCisgIFJlc29s dmVzOiByaGJ6IzI0NTMyNDAsIHJoYnojMjQ0MjgzNywgcmhieiMyNDQyODEwLCByaGJ6IzI0NDc0 MjYsIHJoYnojMjQ0NzQyMgorICBSZXNvbHZlczogcmhieiMyNDQ3NDEzLCByaGJ6IzI0NDc0MTYs IHJoYnojMjQ1MzI0NywgcmhieiMyNDQyODU3LCByaGJ6IzI0OTE2ODMKKyAgUmVzb2x2ZXM6IHJo YnojMjUxMDI5NSwgcmhieiMyNTEwNjQzLCByaGJ6IzI1MDM2NDYsIHJoYnojMjUxMDQ0OAorCiAq IFdlZCBKdWwgMTUgMjAyNiBGZWRvcmEgUmVsZWFzZSBFbmdpbmVlcmluZyA8cmVsZW5nQGZlZG9y YXByb2plY3Qub3JnPiAtIDIuMTEuNy0xNQogLSBSZWJ1aWx0IGZvciBodHRwczovL2ZlZG9yYXBy b2plY3Qub3JnL3dpa2kvRmVkb3JhXzQ1X01hc3NfUmVidWlsZAogCgpkaWZmIC0tZ2l0IGEvZ2Rp LWdmeC1wcm9wZXJseS1jbGFtcC1TdXJmYWNlVG9TdXJmYWNlLnBhdGNoIGIvZ2RpLWdmeC1wcm9w ZXJseS1jbGFtcC1TdXJmYWNlVG9TdXJmYWNlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjgwMDI4NzcKLS0tIC9kZXYvbnVsbAorKysgYi9nZGktZ2Z4LXByb3Blcmx5 LWNsYW1wLVN1cmZhY2VUb1N1cmZhY2UucGF0Y2gKQEAgLTAsMCArMSw1MCBAQAorRnJvbSBlZjk5 ZGEwMjA1OTlhNjY2YjdkMTcxZWVjNmFiNTI3YjQ3ZGQzM2YzIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQorRnJvbTogT25kcmVqIEhvbHkgPG9ob2x5QHJlZGhhdC5jb20+CitEYXRlOiBUaHUsIDIy IEphbiAyMDI2IDEyOjQ3OjQyICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFtnZGksZ2Z4XSBwcm9w ZXJseSBjbGFtcCBTdXJmYWNlVG9TdXJmYWNlCisKK0JhY2twb3J0IG9mIGNvbW1pdCBjNGE3YzM3 MTM0MmVkZjBkMzA3Y2VhNzI4ZjU2ZDMzMDJmMGFiMzhjLgorCitDby1BdXRob3JlZC1CeTogQ2xh dWRlIDxub3JlcGx5QGFudGhyb3BpYy5jb20+CistLS0KKyBsaWJmcmVlcmRwL2dkaS9nZnguYyB8 IDkgKysrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlv bnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmZyZWVyZHAvZ2RpL2dmeC5jIGIvbGliZnJlZXJkcC9n ZGkvZ2Z4LmMKK2luZGV4IDM5NzA3MTVlMC4uOTY4YTVhMTdjIDEwMDY0NAorLS0tIGEvbGliZnJl ZXJkcC9nZGkvZ2Z4LmMKKysrKyBiL2xpYmZyZWVyZHAvZ2RpL2dmeC5jCitAQCAtMTE3NSw3ICsx MTc1LDYgQEAgc3RhdGljIFVJTlQgZ2RpX1N1cmZhY2VUb1N1cmZhY2UoUmRwZ2Z4Q2xpZW50Q29u dGV4dCogY29udGV4dCwKKyAJVUlOVCBzdGF0dXMgPSBFUlJPUl9JTlRFUk5BTF9FUlJPUjsKKyAJ VUlOVDE2IGluZGV4OworIAlCT09MIHNhbWVTdXJmYWNlOworLQlVSU5UMzIgbldpZHRoLCBuSGVp Z2h0OworIAljb25zdCBSRUNUQU5HTEVfMTYqIHJlY3RTcmM7CisgCVJFQ1RBTkdMRV8xNiBpbnZh bGlkUmVjdDsKKyAJZ2RpR2Z4U3VyZmFjZSogc3VyZmFjZVNyYzsKK0BAIC0xMTk5LDggKzExOTgs OCBAQCBzdGF0aWMgVUlOVCBnZGlfU3VyZmFjZVRvU3VyZmFjZShSZHBnZnhDbGllbnRDb250ZXh0 KiBjb250ZXh0LAorIAlpZiAoIWlzX3JlY3RfdmFsaWQocmVjdFNyYywgc3VyZmFjZVNyYy0+d2lk dGgsIHN1cmZhY2VTcmMtPmhlaWdodCkpCisgCQlnb3RvIGZhaWw7CisgCistCW5XaWR0aCA9IHJl Y3RTcmMtPnJpZ2h0IC0gcmVjdFNyYy0+bGVmdDsKKy0JbkhlaWdodCA9IHJlY3RTcmMtPmJvdHRv bSAtIHJlY3RTcmMtPnRvcDsKKysJY29uc3QgVUlOVDMyIG5XaWR0aCA9IHJlY3RTcmMtPnJpZ2h0 IC0gcmVjdFNyYy0+bGVmdDsKKysJY29uc3QgVUlOVDMyIG5IZWlnaHQgPSByZWN0U3JjLT5ib3R0 b20gLSByZWN0U3JjLT50b3A7CisgCisgCWZvciAoaW5kZXggPSAwOyBpbmRleCA8IHN1cmZhY2VU b1N1cmZhY2UtPmRlc3RQdHNDb3VudDsgaW5kZXgrKykKKyAJeworQEAgLTEyMDksOCArMTIwOCwx MCBAQCBzdGF0aWMgVUlOVCBnZGlfU3VyZmFjZVRvU3VyZmFjZShSZHBnZnhDbGllbnRDb250ZXh0 KiBjb250ZXh0LAorIAkJaWYgKCFpc19yZWN0X3ZhbGlkKCZyZWN0LCBzdXJmYWNlRHN0LT53aWR0 aCwgc3VyZmFjZURzdC0+aGVpZ2h0KSkKKyAJCQlnb3RvIGZhaWw7CisgCisrCQljb25zdCBVSU5U MzIgcndpZHRoID0gcmVjdC5yaWdodCAtIHJlY3QubGVmdDsKKysJCWNvbnN0IFVJTlQzMiByaGVp Z2h0ID0gcmVjdC5ib3R0b20gLSByZWN0LnRvcDsKKyAJCWlmICghZnJlZXJkcF9pbWFnZV9jb3B5 KHN1cmZhY2VEc3QtPmRhdGEsIHN1cmZhY2VEc3QtPmZvcm1hdCwgc3VyZmFjZURzdC0+c2Nhbmxp bmUsCistCQkgICAgICAgICAgICAgICAgICAgICAgICBkZXN0UHQtPngsIGRlc3RQdC0+eSwgbldp ZHRoLCBuSGVpZ2h0LCBzdXJmYWNlU3JjLT5kYXRhLAorKwkJICAgICAgICAgICAgICAgICAgICAg ICAgZGVzdFB0LT54LCBkZXN0UHQtPnksIHJ3aWR0aCwgcmhlaWdodCwgc3VyZmFjZVNyYy0+ZGF0 YSwKKyAJCSAgICAgICAgICAgICAgICAgICAgICAgIHN1cmZhY2VTcmMtPmZvcm1hdCwgc3VyZmFj ZVNyYy0+c2NhbmxpbmUsIHJlY3RTcmMtPmxlZnQsCisgCQkgICAgICAgICAgICAgICAgICAgICAg ICByZWN0U3JjLT50b3AsIE5VTEwsIEZSRUVSRFBfRkxJUF9OT05FKSkKKyAJCQlnb3RvIGZhaWw7 CistLSAKKzIuNTIuMAorCgpkaWZmIC0tZ2l0IGEvZ2RpLWdyYXBoaWNzLVVzZS1mcmVlcmRwX2ds eXBoX2NvbnZlcnRfZXgucGF0Y2ggYi9nZGktZ3JhcGhpY3MtVXNlLWZyZWVyZHBfZ2x5cGhfY29u dmVydF9leC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTliNTRl Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RpLWdyYXBoaWNzLVVzZS1mcmVlcmRwX2dseXBoX2NvbnZl cnRfZXgucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSBkMjVmZmQ2MDhiZjJiZDM4MDIyYTM5 MzBkMGIzZmMxYjdjODczYzFhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT25kcmVq IEhvbHkgPG9ob2x5QHJlZGhhdC5jb20+CitEYXRlOiBTYXQsIDI4IE1hciAyMDI2IDEyOjEzOjA2 ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFtnZGksZ3JhcGhpY3NdIFVzZSBmcmVlcmRwX2dseXBo X2NvbnZlcnRfZXgKKworQmFja3BvcnQgb2YgY29tbWl0IDlmMGViM2I3ZDQzMDY5YTFlOTczNDY0 YmNiNDNkMWVmOTY1YWU2NWUuCisKK01hZGUtd2l0aDogQ3Vyc29yCistLS0KKyBsaWJmcmVlcmRw L2dkaS9ncmFwaGljcy5jIHwgMyArLS0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyks IDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJmcmVlcmRwL2dkaS9ncmFwaGljcy5j IGIvbGliZnJlZXJkcC9nZGkvZ3JhcGhpY3MuYworaW5kZXggZGFiMTU5YzQzLi5iMTEyOWZiN2Mg MTAwNjQ0CistLS0gYS9saWJmcmVlcmRwL2dkaS9ncmFwaGljcy5jCisrKysgYi9saWJmcmVlcmRw L2dkaS9ncmFwaGljcy5jCitAQCAtMjYyLDcgKzI2Miw2IEBAIHN0YXRpYyBCWVRFKiBmcmVlcmRw X2dseXBoX2NvbnZlcnRfZXgoVUlOVDMyIHdpZHRoLCBVSU5UMzIgaGVpZ2h0LCBjb25zdCBCWVRF KiBkCisgCisgc3RhdGljIEJPT0wgZ2RpX0dseXBoX05ldyhyZHBDb250ZXh0KiBjb250ZXh0LCBj b25zdCByZHBHbHlwaCogZ2x5cGgpCisgeworLQlCWVRFKiBkYXRhOworIAlnZGlHbHlwaCogZ2Rp X2dseXBoOworIAorIAlpZiAoIWNvbnRleHQgfHwgIWdseXBoKQorQEAgLTI3NSw3ICsyNzQsNyBA QCBzdGF0aWMgQk9PTCBnZGlfR2x5cGhfTmV3KHJkcENvbnRleHQqIGNvbnRleHQsIGNvbnN0IHJk cEdseXBoKiBnbHlwaCkKKyAJCXJldHVybiBGQUxTRTsKKyAKKyAJZ2RpX2dseXBoLT5oZGMtPmZv cm1hdCA9IFBJWEVMX0ZPUk1BVF9NT05POworLQlkYXRhID0gZnJlZXJkcF9nbHlwaF9jb252ZXJ0 KGdseXBoLT5jeCwgZ2x5cGgtPmN5LCBnbHlwaC0+YWopOworKwlCWVRFKiBkYXRhID0gZnJlZXJk cF9nbHlwaF9jb252ZXJ0X2V4KGdseXBoLT5jeCwgZ2x5cGgtPmN5LCBnbHlwaC0+YWosIGdseXBo LT5jYik7CisgCisgCWlmICghZGF0YSkKKyAJeworLS0gCisyLjUzLjAKKwoKZGlmZiAtLWdpdCBh L3V0aWxzLXNtYXJ0Y2FyZC1hZGQtbGVuZ3RoLXZhbGlkaXR5LWNoZWNrcy5wYXRjaCBiL3V0aWxz LXNtYXJ0Y2FyZC1hZGQtbGVuZ3RoLXZhbGlkaXR5LWNoZWNrcy5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTJlYmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvdXRpbHMt c21hcnRjYXJkLWFkZC1sZW5ndGgtdmFsaWRpdHktY2hlY2tzLnBhdGNoCkBAIC0wLDAgKzEsNzkg QEAKK0Zyb20gMDcwZjllMDcwYzU5YTEyMWNkOTM1NDE4MzVkYzAwODYwODRiYjZhZCBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9uZHJlaiBIb2x5IDxvaG9seUByZWRoYXQuY29tPgor RGF0ZTogVHVlLCAxNyBGZWIgMjAyNiAxMTowNTo1OSArMDEwMAorU3ViamVjdDogW1BBVENIXSBb dXRpbHMsc21hcnRjYXJkXSBhZGQgbGVuZ3RoIHZhbGlkaXR5IGNoZWNrcworCitCYWNrcG9ydCBv ZiBjb21taXQgNTdjNTY0N2Q5OGMyYTAyNmRlOGI2ODExNTljYjE4OGNhMDQzOWVmOC4KKworQ28t QXV0aG9yZWQtQnk6IEN1cnNvciA8Y3Vyc29yYWdlbnRAY3Vyc29yLmNvbT4KKy0tLQorIGNoYW5u ZWxzL3NtYXJ0Y2FyZC9jbGllbnQvc21hcnRjYXJkX3BhY2suYyB8IDI3ICsrKysrKysrKysrKysr KysrLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMo LSkKKworZGlmZiAtLWdpdCBhL2NoYW5uZWxzL3NtYXJ0Y2FyZC9jbGllbnQvc21hcnRjYXJkX3Bh Y2suYyBiL2NoYW5uZWxzL3NtYXJ0Y2FyZC9jbGllbnQvc21hcnRjYXJkX3BhY2suYworaW5kZXgg ZjcwZWI0ZTVkLi42ODdmMTExMGIgMTAwNjQ0CistLS0gYS9jaGFubmVscy9zbWFydGNhcmQvY2xp ZW50L3NtYXJ0Y2FyZF9wYWNrLmMKKysrKyBiL2NoYW5uZWxzL3NtYXJ0Y2FyZC9jbGllbnQvc21h cnRjYXJkX3BhY2suYworQEAgLTk4LDEzICs5OCwxNiBAQCBzdGF0aWMgQk9PTCBzbWFydGNhcmRf bmRyX3BvaW50ZXJfcmVhZF8od1N0cmVhbSogcywgVUlOVDMyKiBpbmRleCwgVUlOVDMyKiBwdHIs CisgCXJldHVybiBUUlVFOworIH0KKyAKKy1zdGF0aWMgTE9ORyBzbWFydGNhcmRfbmRyX3JlYWQo d1N0cmVhbSogcywgQllURSoqIGRhdGEsIHNpemVfdCBtaW4sIHNpemVfdCBlbGVtZW50U2l6ZSwK Ky0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRyX3B0cl90IHR5cGUpCisrc3RhdGlj IExPTkcgc21hcnRjYXJkX25kcl9yZWFkX2V4KHdTdHJlYW0qIHMsIEJZVEUqKiBkYXRhLCBzaXpl X3QgbWluLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZWxlbWVu dFNpemUsIG5kcl9wdHJfdCB0eXBlLCBzaXplX3QqIHBsZW4pCisgeworIAlzaXplX3QgbGVuLCBv ZmZzZXQsIGxlbjI7CisgCXZvaWQqIHI7CisgCXNpemVfdCByZXF1aXJlZDsKKyAKKysJaWYgKHBs ZW4pCisrCQkqcGxlbiA9IDA7CisrCisgCXN3aXRjaCAodHlwZSkKKyAJeworIAkJY2FzZSBORFJf UFRSX0ZVTEw6CitAQCAtMTgxLDExICsxODQsMjAgQEAgc3RhdGljIExPTkcgc21hcnRjYXJkX25k cl9yZWFkKHdTdHJlYW0qIHMsIEJZVEUqKiBkYXRhLCBzaXplX3QgbWluLCBzaXplX3QgZWxlbWUK KyAJaWYgKCFyKQorIAkJcmV0dXJuIFNDQVJEX0VfTk9fTUVNT1JZOworIAlTdHJlYW1fUmVhZChz LCByLCBsZW4pOworLQlzbWFydGNhcmRfdW5wYWNrX3JlYWRfc2l6ZV9hbGlnbihOVUxMLCBzLCBs ZW4sIDQpOworKwljb25zdCBMT05HIHBhZCA9IHNtYXJ0Y2FyZF91bnBhY2tfcmVhZF9zaXplX2Fs aWduKE5VTEwsIHMsIGxlbiwgNCk7CisrCWxlbiArPSAoc2l6ZV90KXBhZDsKKyAJKmRhdGEgPSBy OworKwlpZiAocGxlbikKKysJCSpwbGVuID0gbGVuOworIAlyZXR1cm4gU1RBVFVTX1NVQ0NFU1M7 CisgfQorIAorK3N0YXRpYyBMT05HIHNtYXJ0Y2FyZF9uZHJfcmVhZCh3U3RyZWFtKiBzLCBCWVRF KiogZGF0YSwgc2l6ZV90IG1pbiwgc2l6ZV90IGVsZW1lbnRTaXplLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBuZHJfcHRyX3QgdHlwZSkKKyt7CisrCXJldHVybiBzbWFydGNhcmRf bmRyX3JlYWRfZXgocywgZGF0YSwgbWluLCBlbGVtZW50U2l6ZSwgdHlwZSwgTlVMTCk7CisrfQor KworIHN0YXRpYyBCT09MIHNtYXJ0Y2FyZF9uZHJfcG9pbnRlcl93cml0ZSh3U3RyZWFtKiBzLCBV SU5UMzIqIGluZGV4LCBEV09SRCBsZW5ndGgpCisgeworIAljb25zdCBVSU5UMzIgbmRyUHRyID0g MHgyMDAwMCArICgqaW5kZXgpICogNDsKK0BAIC0zNDI3LDEyICszNDM5LDE1IEBAIExPTkcgc21h cnRjYXJkX3VucGFja19zZXRfYXR0cmliX2NhbGwoU01BUlRDQVJEX0RFVklDRSogc21hcnRjYXJk LCB3U3RyZWFtKiBzLCBTCisgCisgCWlmIChuZHJQdHIpCisgCXsKKy0JCS8vIFRPRE86IGNhbGwt PmNiQXR0ckxlbiB3YXMgbGFyZ2VyIHRoYW4gdGhlIHBvaW50ZXIgdmFsdWUuCistCQkvLyBUT0RP OiBNYXliZSBuZWVkIHRvIHJlZmluZSB0aGUgY2hlY2tzPworLQkJc3RhdHVzID0gc21hcnRjYXJk X25kcl9yZWFkKHMsICZjYWxsLT5wYkF0dHIsIDAsIDEsIE5EUl9QVFJfU0lNUExFKTsKKysJCXNp emVfdCBsZW4gPSAwOworKwkJc3RhdHVzID0gc21hcnRjYXJkX25kcl9yZWFkX2V4KHMsICZjYWxs LT5wYkF0dHIsIDAsIDEsIE5EUl9QVFJfU0lNUExFLCAmbGVuKTsKKyAJCWlmIChzdGF0dXMgIT0g U0NBUkRfU19TVUNDRVNTKQorIAkJCXJldHVybiBzdGF0dXM7CisrCQlpZiAoY2FsbC0+Y2JBdHRy TGVuID4gbGVuKQorKwkJCWNhbGwtPmNiQXR0ckxlbiA9IChEV09SRClsZW47CisgCX0KKysJZWxz ZQorKwkJY2FsbC0+Y2JBdHRyTGVuID0gMDsKKyAJc21hcnRjYXJkX3RyYWNlX3NldF9hdHRyaWJf Y2FsbChzbWFydGNhcmQsIGNhbGwpOworIAlyZXR1cm4gU0NBUkRfU19TVUNDRVNTOworIH0KKy0t IAorMi41Mi4wCisKCmRpZmYgLS1naXQgYS93aW5wci1jcnQtYWRkLWZ1bmN0aW9ucy10by10ZXN0 LXN0cmluZy5wYXRjaCBiL3dpbnByLWNydC1hZGQtZnVuY3Rpb25zLXRvLXRlc3Qtc3RyaW5nLnBh dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiMzY0YWMKLS0tIC9kZXYv bnVsbAorKysgYi93aW5wci1jcnQtYWRkLWZ1bmN0aW9ucy10by10ZXN0LXN0cmluZy5wYXRjaApA QCAtMCwwICsxLDI2NiBAQAorRnJvbSBhN2E0N2JjMGJkYWI3MjNiNjc0ZmIwNWY1MWU5M2FlMDA3 ZWQ2NDEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQXJtaW4gTm92YWsgPGFybWlu Lm5vdmFrQHRoaW5jYXN0LmNvbT4KK0RhdGU6IFRodSwgOSBKdWwgMjAyNiAwODozNDoyMyArMDIw MAorU3ViamVjdDogW1BBVENIXSBbd2lucHIsY3J0XSBhZGQgZnVuY3Rpb25zIHRvIHRlc3Qgc3Ry aW5nCisKKyogd2lucHJfc3RyX2hhc19uZXdsaW5lcyB0byBjaGVjayBmb3IgbmV3bGluZXMgaW4g YSBzdHJpbmcKKyogd2lucHJfc3RyX2lzX3ZhbGlkX3VybCBhbmQgd2lucHJfc3RyX2lzX3ZhbGlk X3VybE4gdG8gY2hlY2sgaWYgYQorICBzdHJpbmcgaXMgYSB2YWxpZCB1cmwKKy0tLQorIHdpbnBy L2luY2x1ZGUvd2lucHIvc3RyaW5nLmggICAgICAgICB8ICA1ICsrCisgd2lucHIvbGlid2lucHIv Y3J0L0NNYWtlTGlzdHMudHh0ICAgIHwgIDggKysrCisgd2lucHIvbGlid2lucHIvY3J0L3N0cmlu Zy5jICAgICAgICAgIHwgOTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIHdpbnByL2xp YndpbnByL2NydC90ZXN0L1Rlc3RTdHJpbmcuYyB8IDgyICsrKysrKysrKysrKysrKysrKysrKysr KworIDQgZmlsZXMgY2hhbmdlZCwgMTkxIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3dp bnByL2luY2x1ZGUvd2lucHIvc3RyaW5nLmggYi93aW5wci9pbmNsdWRlL3dpbnByL3N0cmluZy5o CitpbmRleCBiYjk4ZGZmZGMuLjdkZTlmOTM0ZiAxMDA2NDQKKy0tLSBhL3dpbnByL2luY2x1ZGUv d2lucHIvc3RyaW5nLmgKKysrKyBiL3dpbnByL2luY2x1ZGUvd2lucHIvc3RyaW5nLmgKK0BAIC0z MSw2ICszMSwxMSBAQCBleHRlcm4gIkMiCisgeworICNlbmRpZgorCisrCVdJTlBSX0FQSSBCT09M IHdpbnByX3N0cl9pc192YWxpZF91cmwoY29uc3QgY2hhciogc3RyKTsKKysJV0lOUFJfQVBJIEJP T0wgd2lucHJfc3RyX2lzX3ZhbGlkX3VybE4oY29uc3QgY2hhciogc3RyLCBzaXplX3QgbGVuKTsK KysJV0lOUFJfQVBJIEJPT0wgd2lucHJfc3RyX2hhc19uZXdsaW5lcyhjb25zdCBjaGFyKiBzdHIp OworKworKworIAlXSU5QUl9BUEkgQk9PTCB3aW5wcl9zdHJfYXBwZW5kKGNvbnN0IGNoYXIqIHdo YXQsIGNoYXIqIGJ1ZmZlciwgc2l6ZV90IHNpemUsCisgCSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgY2hhciogc2VwYXJhdG9yKTsKKworZGlmZiAtLWdpdCBhL3dpbnByL2xp YndpbnByL2NydC9DTWFrZUxpc3RzLnR4dCBiL3dpbnByL2xpYndpbnByL2NydC9DTWFrZUxpc3Rz LnR4dAoraW5kZXggNWVlNGJiZDFlLi41MzhlNzRkY2YgMTAwNjQ0CistLS0gYS93aW5wci9saWJ3 aW5wci9jcnQvQ01ha2VMaXN0cy50eHQKKysrKyBiL3dpbnByL2xpYndpbnByL2NydC9DTWFrZUxp c3RzLnR4dAorQEAgLTIyLDYgKzIyLDE0IEBAIHNldCAoQ1JUX0ZJTEVTIGFsaWdubWVudC5jCisg CXVuaWNvZGUuYworIAlzdHJpbmcuYykKKworK2luY2x1ZGUoQ2hlY2tTeW1ib2xFeGlzdHMpCisr Y2hlY2tfc3ltYm9sX2V4aXN0cyhyZWdjb21wIHJlZ2V4LmggV0lOUFJfSEFWRV9SRUdDT01QKQor K2NoZWNrX3N5bWJvbF9leGlzdHMocmVnZXhlYyByZWdleC5oIFdJTlBSX0hBVkVfUkVHRVhFQykK KytjaGVja19zeW1ib2xfZXhpc3RzKHJlZ2ZyZWUgcmVnZXguaCBXSU5QUl9IQVZFX1JFR0ZSRUUp CisraWYoV0lOUFJfSEFWRV9SRUdDT01QIEFORCBXSU5QUl9IQVZFX1JFR0VYRUMgQU5EIFdJTlBS X0hBVkVfUkVHRlJFRSkKKysgIHdpbnByX2RlZmluaXRpb25fYWRkKC1EV0lOUFJfSEFWRV9SRUdD T01QKQorK2VuZGlmKCkKKysKKyBpZiAoTk9UIFdJVEhfSUNVKQorIAlzZXQgKENSVF9GSUxFUyAk e0NSVF9GSUxFU30KKyAJCXV0Zi5jCitkaWZmIC0tZ2l0IGEvd2lucHIvbGlid2lucHIvY3J0L3N0 cmluZy5jIGIvd2lucHIvbGlid2lucHIvY3J0L3N0cmluZy5jCitpbmRleCA2NTk2YjQyZjUuLjQ2 NWI4ZDEzMyAxMDA2NDQKKy0tLSBhL3dpbnByL2xpYndpbnByL2NydC9zdHJpbmcuYworKysrIGIv d2lucHIvbGlid2lucHIvY3J0L3N0cmluZy5jCitAQCAtMjksMTEgKzI5LDcxIEBACisgI2luY2x1 ZGUgPHdpbnByL2Fzc2VydC5oPgorICNpbmNsdWRlIDx3aW5wci9lbmRpYW4uaD4KKworKyNpZiBk ZWZpbmVkKFdJTlBSX0hBVkVfUkVHQ09NUCkKKysjaW5jbHVkZSA8cmVnZXguaD4KKysjZW5kaWYK KysKKyAvKiBTdHJpbmcgTWFuaXB1bGF0aW9uIChDUlQpOiBodHRwOi8vbXNkbi5taWNyb3NvZnQu Y29tL2VuLXVzL2xpYnJhcnkvZjAxNTFzNHguYXNweCAqLworCisgI2luY2x1ZGUgIi4uL2xvZy5o IgorICNkZWZpbmUgVEFHIFdJTlBSX1RBRygiY3J0IikKKworK0JPT0wgd2lucHJfc3RyX2lzX3Zh bGlkX3VybE4oY29uc3QgY2hhciogc3RyLCBzaXplX3QgbGVuKQorK3sKKysJaWYgKCFzdHIgfHwg KGxlbiA9PSAwKSkKKysJCXJldHVybiBGQUxTRTsKKysKKysJY2hhciogdXJsID0gc3RybmR1cChz dHIsIGxlbik7CisrCWlmICghdXJsKQorKwkJcmV0dXJuIEZBTFNFOworKworKwljb25zdCBCT09M IHJjID0gd2lucHJfc3RyX2lzX3ZhbGlkX3VybCh1cmwpOworKwlmcmVlKHVybCk7CisrCXJldHVy biByYzsKKyt9CisrCisrI2lmIGRlZmluZWQoX1dJTjMyKQorKyNpbmNsdWRlIDxzaGx3YXBpLmg+ CisrCisrQk9PTCB3aW5wcl9zdHJfaXNfdmFsaWRfdXJsKGNvbnN0IGNoYXIqIHN0cikKKyt7Cisr CWlmICghc3RyKQorKwkJcmV0dXJuIEZBTFNFOworKwlyZXR1cm4gUGF0aElzVVJMQShzdHIpOwor K30KKysKKysjZWxpZiBkZWZpbmVkKFdJTlBSX0hBVkVfUkVHQ09NUCkKKytCT09MIHdpbnByX3N0 cl9pc192YWxpZF91cmwoY29uc3QgY2hhciogc3RyKQorK3sKKysJcmVnZXhfdCByZWdleDsKKysJ Y29uc3QgY2hhciBwYXR0ZXJuW10gPSAiXihbYS16XSs6Ly8pPyhbYS16QS1aMC05Li1dKykoOlsw LTldKyk/KC9bYS16QS1aMC05Li8/PSYlLV0qKT8kIjsKKysJaW50IHJldDsKKysKKysJaWYgKCFz dHIpCisrCQlyZXR1cm4gRkFMU0U7CisrCW1lbXNldCgmcmVnZXgsIDAsIHNpemVvZihyZWdleCkp OworKworKwlyZXQgPSByZWdjb21wKCZyZWdleCwgcGF0dGVybiwgUkVHX0VYVEVOREVEKTsKKysJ aWYgKHJldCkKKysJeworKwkJcHJpbnRmKCJDb3VsZCBub3QgY29tcGlsZSByZWdleFxuIik7Cisr CQlyZXR1cm4gRkFMU0U7CisrCX0KKysKKysJcmV0ID0gcmVnZXhlYygmcmVnZXgsIHN0ciwgMCwg TlVMTCwgMCk7CisrCXJlZ2ZyZWUoJnJlZ2V4KTsKKysJcmV0dXJuIHJldCA9PSAwOworK30KKysK KysjZWxzZQorK0JPT0wgd2lucHJfc3RyX2lzX3ZhbGlkX3VybChjb25zdCBjaGFyKiBzdHIpCisr eworKwlXSU5QUl9VTlVTRUQoc3RyKTsKKysJV0xvZ19XQVJOKFRBRywgIlVSTCB2YWxpZGF0aW9u IG5vdCBzdXBwb3J0ZWQgYnkgeW91ciBidWlsZCwgbm90IHBlcmZvcm1pbmcgY2hlY2suIik7Cisr CXJldHVybiBUUlVFOworK30KKysjZW5kaWYKKysKKyBCT09MIHdpbnByX3N0cl9hcHBlbmQoY29u c3QgY2hhciogd2hhdCwgY2hhciogYnVmZmVyLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciogc2Vw YXJhdG9yKQorIHsKKyAJY29uc3Qgc2l6ZV90IHVzZWQgPSBzdHJubGVuKGJ1ZmZlciwgc2l6ZSk7 CitAQCAtNjM2LDMgKzY5NiwzOSBAQCBJTlQ2NCBHZXRMaW5lKGNoYXIqKiBsaW5lcHRyLCBzaXpl X3QqIHNpemUsIEZJTEUqIHN0cmVhbSkKKyAJcmV0dXJuIC0xOworICNlbmRpZgorIH0KKysKKytC T09MIHdpbnByX3N0cl9oYXNfbmV3bGluZXMoY29uc3QgY2hhciogc3RyKQorK3sKKysJaWYgKCFz dHIpCisrCQlyZXR1cm4gRkFMU0U7CisrCWRvCisrCXsKKysJCWNoYXIgYyA9ICpzdHIrKzsKKysJ CXN3aXRjaCAoYykKKysJCXsKKysJCQljYXNlICdccic6CisrCQkJY2FzZSAnXG4nOgorKwkJCWNh c2UgMHgwYjogICAgICAgLyogVlQgdmVydGljYWwgdGFiICovCisrCQkJY2FzZSAweDBjOiAgICAg ICAvKiBGRiBmb3JtIGZlZWQgKi8KKysJCQljYXNlIChjaGFyKTB4ODU6IC8qIE5FTCBuZXh0IGxp bmUgKi8KKysJCQkJcmV0dXJuIFRSVUU7CisrCQkJY2FzZSAweDIwOgorKwkJCXsKKysJCQkJc3dp dGNoICgqc3RyKQorKwkJCQl7CisrCQkJCQljYXNlIDB4Mjg6IC8qIExTIGxpbmUgc2VwYXJhdG9y ICovCisrCQkJCQljYXNlIDB4Mjk6IC8qIFBTIHBhcmFncmFwaCBzZXBhcmF0b3IgKi8KKysJCQkJ CQlyZXR1cm4gVFJVRTsKKysJCQkJCWRlZmF1bHQ6CisrCQkJCQkJYnJlYWs7CisrCQkJCX0KKysJ CQl9CisrCQkJYnJlYWs7CisrCisrCQkJY2FzZSAnXDAnOgorKwkJCQlyZXR1cm4gRkFMU0U7Cisr CQkJZGVmYXVsdDoKKysJCQkJYnJlYWs7CisrCQl9CisrCX0gd2hpbGUgKDEpOworK30KK2RpZmYg LS1naXQgYS93aW5wci9saWJ3aW5wci9jcnQvdGVzdC9UZXN0U3RyaW5nLmMgYi93aW5wci9saWJ3 aW5wci9jcnQvdGVzdC9UZXN0U3RyaW5nLmMKK2luZGV4IGRmMTU0ZmUxYy4uYmNhNDcwYmRkIDEw MDY0NAorLS0tIGEvd2lucHIvbGlid2lucHIvY3J0L3Rlc3QvVGVzdFN0cmluZy5jCisrKysgYi93 aW5wci9saWJ3aW5wci9jcnQvdGVzdC9UZXN0U3RyaW5nLmMKK0BAIC0yNyw2ICsyNyw3OSBAQCBz dGF0aWMgV0NIQVIgdGVzdERlbGltaXRlcltdID0geyAnXHInLCAnXG4nLCAnXDAnIH07CisKKyAj ZGVmaW5lIHRlc3REZWxpbWl0ZXJfTGVuZ3RoICgoc2l6ZW9mKHRlc3REZWxpbWl0ZXIpIC8gc2l6 ZW9mKFdDSEFSKSkgLSAxKQorCisrc3RhdGljIEJPT0wgdGVzdF92YWxpZF91cmwodm9pZCkKKyt7 CisrCXN0cnVjdCB0ZXN0X3QKKysJeworKwkJY2hhciogc3RyaW5nOworKwkJc2l6ZV90IGxlbjsK KysJCUJPT0wgaXNVcmw7CisrCX07CisrCisrCXN0YXRpYyBjb25zdCBzdHJ1Y3QgdGVzdF90IHRl c3RzW10gPSB7IHsgImZvby5iYXIuYmxhYmxhIiwgMTUsIFRSVUUgfSwKKysJCSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgeyAic29tZWhvc3RuYW1lIiwgMTIsIFRSVUUgfSwKKysJ CSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAic29tZWhvc3RuYW1lOjEyMzQi LCAxNywgVFJVRSB9LAorKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICJ0 c3Y6Ly9zb21laG9zdG5hbWUiLCAxOCwgVFJVRSB9LAorKwkJICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB7ICJ0c3Y6Ly9zb21laG9zdG5hbWUvcGF0aC9mb28vZ2FnYSIsIDMyLCBU UlVFIH0sCisrCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgInRzdjovL3Nv bWVob3N0bmFtZToxMjM0IiwgMjMsIFRSVUUgfSwKKysJCSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgeyAidHN2Oi8vc29tZWhvc3RuYW1lOjEyMzQvcGF0aC9mb28iLCAzMywgVFJV RSB9LAorKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICJsYWxhXHJnYWdh XG4iLCAxMiwgRkFMU0UgfSwKKysJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg eyAiMTkyLjE2OC4wLjEiLCAxMSwgVFJVRSB9LAorKwkJICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAvL3sgIjE5Mi4xNjguMC4xOjEyMzQiLCAxNiwgRkFMU0UgfSwKKysJCSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy97ICIxOTIuMTY4LjAuMToxMjM0L2Zvby8i LCAyMSwgRkFMU0UgfSwKKysJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAi MTkyLjE2OC4wLjEvYmFyL2Zvby8iLCAyMCwgVFJVRSB9LAorKwkJICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB7ICJbOjoxXSIsIDUsIEZBTFNFIH0sCisrCQkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHsgIls6OjFdOjEyMzQiLCA4LCBGQUxTRSB9LAorKwkJICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICJbMjAwMTpkYjg6MzMzMzo0NDQ0OjU1 NTU6NjY2Njo3Nzc3Ojg4ODhdIiwgNDAsCisrCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRkFMU0UgfSwKKysJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg eyAiWzIwMDE6ZGI4OjoxXSIsIDEzLCBGQUxTRSB9IH07CisrCUJPT0wgcmMgPSBUUlVFOworKwlm b3IgKHNpemVfdCB4ID0gMDsgeCA8IEFSUkFZU0laRSh0ZXN0cyk7IHgrKykKKysJeworKwkJY29u c3Qgc3RydWN0IHRlc3RfdCogY3VyID0gJnRlc3RzW3hdOworKworKwkJY29uc3QgQk9PTCByYzEg PSB3aW5wcl9zdHJfaXNfdmFsaWRfdXJsKGN1ci0+c3RyaW5nKTsKKysJCWNvbnN0IEJPT0wgcmMy ID0gd2lucHJfc3RyX2lzX3ZhbGlkX3VybE4oY3VyLT5zdHJpbmcsIGN1ci0+bGVuKTsKKysKKysj aWYgZGVmaW5lZChXSU5QUl9IQVZFX1JFR0NPTVApIHx8IGRlZmluZWQoV0lUSF9VUklQQVJTRVIp CisrCQlpZiAocmMxICE9IHJjMikKKysJCQlyYyA9IEZBTFNFOworKwkJaWYgKHJjMSAhPSBjdXIt PmlzVXJsKQorKwkJCXJjID0gRkFMU0U7CisrI2Vsc2UKKysJCWZwcmludGYoc3RkZXJyLCAiWyVz XSBUT0RPOiAhZGVmaW5lZChXSU5QUl9IQVZFX1JFR0NPTVApICYmICFkZWZpbmVkKFdJVEhfVVJJ UEFSU0VSKVxuIiwKKysJCSAgICAgICAgX19mdW5jX18pOworKyNlbmRpZgorKwl9CisrCisrCXJl dHVybiByYzsKKyt9CisrCisrc3RhdGljIEJPT0wgdGVzdF9uZXdsaW5lKHZvaWQpCisreworKwlz dHJ1Y3QgdGVzdF90CisrCXsKKysJCWNoYXIqIHN0cmluZzsKKysJCXNpemVfdCBsZW47CisrCQlC T09MIGhhc05ld2xpbmVzOworKwl9OworKworKwljb25zdCBzdHJ1Y3QgdGVzdF90IHRlc3RzW10g PSB7IHsgImZvby5iYXIuYmxhYmxhIiwgMTUsIEZBTFNFIH0sCisrCQkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgeyAic29tZWhvc3RuYW1lIiwgMTIsIEZBTFNFIH0sCisrCQkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgeyAibGFsYVxyZ2FnYVxuIiwgMTMsIFRSVUUgfSB9OworKworKwlm b3IgKHNpemVfdCB4ID0gMDsgeCA8IEFSUkFZU0laRSh0ZXN0cyk7IHgrKykKKysJeworKwkJY29u c3Qgc3RydWN0IHRlc3RfdCogY3VyID0gJnRlc3RzW3hdOworKworKwkJY29uc3QgQk9PTCByYzEg PSB3aW5wcl9zdHJfaGFzX25ld2xpbmVzKGN1ci0+c3RyaW5nKTsKKysJCWlmIChyYzEgIT0gY3Vy LT5oYXNOZXdsaW5lcykKKysJCQlyZXR1cm4gRkFMU0U7CisrCX0KKysKKysJcmV0dXJuIFRSVUU7 CisrfQorKworIGludCBUZXN0U3RyaW5nKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCisgeworIAlX Q0hBUiogcDsKK0BAIC0zNCw2ICsxMDcsMTUgQEAgaW50IFRlc3RTdHJpbmcoaW50IGFyZ2MsIGNo YXIqIGFyZ3ZbXSkKKyAJc2l6ZV90IGxlbmd0aDsKKyAJV0NIQVIqIGNvbnRleHQ7CisKKysJV0lO UFJfVU5VU0VEKGFyZ2MpOworKwlXSU5QUl9VTlVTRUQoYXJndik7CisrCisrCWlmICghdGVzdF92 YWxpZF91cmwoKSkKKysJCXJldHVybiAtMTsKKysKKysJaWYgKCF0ZXN0X25ld2xpbmUoKSkKKysJ CXJldHVybiAtMTsKKysKKyAjaWZkZWYgX19CSUdfRU5ESUFOX18KKyAJLyogQmUgc3VyZSB0aGF0 IHdlIGFsd2F5cyB1c2UgTEUgZW5jb2RlZCBzdHJpbmcgKi8KKyAJQnl0ZVN3YXBVbmljb2RlKHRl c3RTdHJpbmdXLCB0ZXN0U3RyaW5nV19MZW5ndGgpOwo=