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: Adrian Vovk To: git-commits@fedoraproject.org Subject: [rpms/libsoup3] rawhide: Apply various CVE fixes Date: Sat, 05 Sep 2026 01:22:54 GMT Message-ID: <178857137474.1.14912722733001659603.rpms-libsoup3-f2b42d21480e@fedoraproject.org> List-ID: X-Git-Repo: rpms/libsoup3 X-Git-Branch: rawhide X-Git-Rev: f2b42d21480e67966605f0b232c023b13a50cde4 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvbGlic291cDMKQnJh bmNoIDogcmF3aGlkZQpDb21taXQgOiBmMmI0MmQyMTQ4MGU2Nzk2NjYwNWYwYjIzMmMwMjNiMTNh NTBjZGU0CkF1dGhvciA6IEFkcmlhbiBWb3ZrIDxhdm92a0ByZWRoYXQuY29tPgpEYXRlICAgOiAy MDI2LTA5LTA0VDIxOjE4OjMwLTA0OjAwClN0YXRzICA6ICsxOTQ5Ly0wIGluIDcgZmlsZShzKQpV UkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2xpYnNvdXAzL2MvZjJi NDJkMjE0ODBlNjc5NjY2MDVmMGIyMzJjMDIzYjEzYTUwY2RlND9icmFuY2g9cmF3aGlkZQoKTG9n OgpBcHBseSB2YXJpb3VzIENWRSBmaXhlcwoKLS0tCmRpZmYgLS1naXQgYS9DVkUtMjAyNi0xNTcw OS5wYXRjaCBiL0NWRS0yMDI2LTE1NzA5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjc5OWMzNzgKLS0tIC9kZXYvbnVsbAorKysgYi9DVkUtMjAyNi0xNTcwOS5wYXRj aApAQCAtMCwwICsxLDc4MiBAQAorRnJvbSBhNDI5NDA0NDQ2NmRmNjZlYTk4NDkyZDY3YmI3NDE3 MmVkM2Y4NzYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWmF5ZCBSYWphYiA8emF5 ZHJAYW1hem9uLmNvbT4KK0RhdGU6IEZyaSwgNCBTZXAgMjAyNiAxNDoxNzoyMyAtMDUwMAorU3Vi amVjdDogW1BBVENIXSB3ZWJzb2NrZXQ6IEJvdW5kIGRlY29tcHJlc3NlZCBtZXNzYWdlIHNpemUg ZHVyaW5nIGluZmxhdGlvbgorCitQYXNzIGVhY2ggY29ubmVjdGlvbidzIHJlbWFpbmluZyBtYXgt dG90YWwtbWVzc2FnZS1zaXplIGFsbG93YW5jZSB0aHJvdWdoCit0aGUgZ2VuZXJpYyBXZWJTb2Nr ZXQgZXh0ZW5zaW9uIHByb2Nlc3NpbmcgcGF0aCB2aWEgYSBuZXcKK3Byb2Nlc3NfaW5jb21pbmdf bWVzc2FnZV93aXRoX2xpbWl0IHZmdW5jLCBmYWxsaW5nIGJhY2sgdG8KK3Byb2Nlc3NfaW5jb21p bmdfbWVzc2FnZSBmb3IgZXh0ZW5zaW9ucyB0aGF0IGRvbid0IGltcGxlbWVudCBpdC4gQm91bmQK K3Blcm1lc3NhZ2UtZGVmbGF0ZSBvdXRwdXQgZ3Jvd3RoIHRvIHRoYXQgYWxsb3dhbmNlIGFuZCB1 c2UgYSBvbmUtYnl0ZQorcHJvYmUgdG8gZGV0ZWN0IG91dHB1dCBiZXlvbmQgYW4gZXhhY3QgYm91 bmRhcnkgd2l0aG91dCBhbGxvY2F0aW5nCithbm90aGVyIG5vcm1hbCBvdXRwdXQgY2h1bmsuCisK K1ByZXNlcnZlIHRoZSBkb2N1bWVudGVkIHVubGltaXRlZCBkZWZhdWx0IGZvciBjbGllbnRzIGFu ZCBkaXJlY3QKK2Nvbm5lY3Rpb25zLiBTb3VwU2VydmVyIGNvbnRpbnVlcyBhcHBseWluZyBpdHMg ZXhpc3RpbmcgMTI4IEtpQiBkZWZhdWx0LAord2hpbGUgY2FsbGVycyBjYW4gY29uZmlndXJlIHRo ZSBsaW1pdCBleHBsaWNpdGx5IGluIGVpdGhlciByZWNlaXZlCitkaXJlY3Rpb24uCisKK0FkZCBi b3VuZGFyeSwgZ2VuZXJpYy1leHRlbnNpb24gZmFsbGJhY2ssIHJlY2VpdmUtZGlyZWN0aW9uLCBT b3VwU2VydmVyLAorZnJhZ21lbnRhdGlvbiwgYW5kIHVubGltaXRlZC1tb2RlIGNvdmVyYWdlLgor CitUaGlzIGFkZHJlc3NlcyBDVkUtMjAyNi0xNTcwOS4KKworUmVwb3J0ZWQtYnk6IFRyaXN0YW4g TWFkYW5pIDxzZWNpZW50aXN0QGdtYWlsLmNvbT4KK0Nsb3NlcyAhNTQzCistLS0KKyBsaWJzb3Vw L3dlYnNvY2tldC9zb3VwLXdlYnNvY2tldC1jb25uZWN0aW9uLmMgfCAgMzQgKy0KKyAuLi4vc291 cC13ZWJzb2NrZXQtZXh0ZW5zaW9uLWRlZmxhdGUuYyAgICAgICAgfCAxNDQgKysrKysrLS0tCisg bGlic291cC93ZWJzb2NrZXQvc291cC13ZWJzb2NrZXQtZXh0ZW5zaW9uLmMgIHwgIDUzICsrKwor IGxpYnNvdXAvd2Vic29ja2V0L3NvdXAtd2Vic29ja2V0LWV4dGVuc2lvbi5oICB8ICAxNCArLQor IHRlc3RzL3dlYnNvY2tldC10ZXN0LmMgICAgICAgICAgICAgICAgICAgICAgICB8IDMwNiArKysr KysrKysrKysrKysrKy0KKyA1IGZpbGVzIGNoYW5nZWQsIDUwNiBpbnNlcnRpb25zKCspLCA0NSBk ZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYnNvdXAvd2Vic29ja2V0L3NvdXAtd2Vic29j a2V0LWNvbm5lY3Rpb24uYyBiL2xpYnNvdXAvd2Vic29ja2V0L3NvdXAtd2Vic29ja2V0LWNvbm5l Y3Rpb24uYworaW5kZXggZmZkNzEzZWYuLmYwN2Q0MjE5IDEwMDY0NAorLS0tIGEvbGlic291cC93 ZWJzb2NrZXQvc291cC13ZWJzb2NrZXQtY29ubmVjdGlvbi5jCisrKysgYi9saWJzb3VwL3dlYnNv Y2tldC9zb3VwLXdlYnNvY2tldC1jb25uZWN0aW9uLmMKK0BAIC05OTAsOCArOTkwLDE1IEBAIHBy b2Nlc3NfY29udGVudHMgKFNvdXBXZWJzb2NrZXRDb25uZWN0aW9uICpzZWxmLAorIAkJY2FzZSAw eDAyOgorIAkJCS8qIFNhZmV0eSB2YWx2ZSAqLworIAkJCWlmIChwcml2LT5tYXhfdG90YWxfbWVz c2FnZV9zaXplID4gMCAmJgorLQkJCSAgICAocHJpdi0+bWVzc2FnZV9kYXRhLT5sZW4gKyBwYXls b2FkX2xlbikgPiBwcml2LT5tYXhfdG90YWxfbWVzc2FnZV9zaXplKSB7CistCQkJCXRvb19iaWdf bWVzc2FnZV9lcnJvcl9hbmRfY2xvc2UgKHNlbGYsIChwcml2LT5tZXNzYWdlX2RhdGEtPmxlbiAr IHBheWxvYWRfbGVuKSk7CisrCQkJICAgIChwcml2LT5tZXNzYWdlX2RhdGEtPmxlbiA+IHByaXYt Pm1heF90b3RhbF9tZXNzYWdlX3NpemUgfHwKKysJCQkgICAgIHBheWxvYWRfbGVuID4gcHJpdi0+ bWF4X3RvdGFsX21lc3NhZ2Vfc2l6ZSAtIHByaXYtPm1lc3NhZ2VfZGF0YS0+bGVuKSkgeworKwkJ CQlndWludDY0IG1lc3NhZ2Vfc2l6ZSA9IHByaXYtPm1lc3NhZ2VfZGF0YS0+bGVuOworKworKwkJ CQlpZiAocGF5bG9hZF9sZW4gPiBHX01BWFVJTlQ2NCAtIG1lc3NhZ2Vfc2l6ZSkKKysJCQkJCW1l c3NhZ2Vfc2l6ZSA9IEdfTUFYVUlOVDY0OworKwkJCQllbHNlCisrCQkJCQltZXNzYWdlX3NpemUg Kz0gcGF5bG9hZF9sZW47CisrCQkJCXRvb19iaWdfbWVzc2FnZV9lcnJvcl9hbmRfY2xvc2UgKHNl bGYsIG1lc3NhZ2Vfc2l6ZSk7CisgCQkJCXJldHVybjsKKyAJCQl9CisgCQkJZ19ieXRlX2FycmF5 X2FwcGVuZCAocHJpdi0+bWVzc2FnZV9kYXRhLCBwYXlsb2FkLCBwYXlsb2FkX2xlbik7CitAQCAt MTAzNiw2ICsxMDQzLDIxIEBAIHByb2Nlc3NfY29udGVudHMgKFNvdXBXZWJzb2NrZXRDb25uZWN0 aW9uICpzZWxmLAorIAl9CisgfQorIAorK3N0YXRpYyBndWludDY0CisrZ2V0X3JlbWFpbmluZ19t ZXNzYWdlX3NpemUgKFNvdXBXZWJzb2NrZXRDb25uZWN0aW9uUHJpdmF0ZSAqcHJpdikKKyt7Cisr CWlmIChwcml2LT5tYXhfdG90YWxfbWVzc2FnZV9zaXplID09IDApCisrCQlyZXR1cm4gR19NQVhV SU5UNjQ7CisrCisrCWlmICghcHJpdi0+bWVzc2FnZV9kYXRhKQorKwkJcmV0dXJuIHByaXYtPm1h eF90b3RhbF9tZXNzYWdlX3NpemU7CisrCisrCWlmIChwcml2LT5tZXNzYWdlX2RhdGEtPmxlbiA+ PSBwcml2LT5tYXhfdG90YWxfbWVzc2FnZV9zaXplKQorKwkJcmV0dXJuIDA7CisrCisrCXJldHVy biBwcml2LT5tYXhfdG90YWxfbWVzc2FnZV9zaXplIC0gcHJpdi0+bWVzc2FnZV9kYXRhLT5sZW47 CisrfQorKworIHN0YXRpYyBnYm9vbGVhbgorIHByb2Nlc3NfZnJhbWUgKFNvdXBXZWJzb2NrZXRD b25uZWN0aW9uICpzZWxmKQorIHsKK0BAIC0xMDUxLDYgKzEwNzMsNyBAQCBwcm9jZXNzX2ZyYW1l IChTb3VwV2Vic29ja2V0Q29ubmVjdGlvbiAqc2VsZikKKyAJZ3NpemUgbGVuOworIAlnc2l6ZSBh dDsKKyAJR0J5dGVzICpmaWx0ZXJlZF9ieXRlczsKKysJZ3VpbnQ2NCBtYXhfb3V0cHV0X3NpemU7 CisgCUdMaXN0ICpsOworIAlHRXJyb3IgKmVycm9yID0gTlVMTDsKKyAKK0BAIC0xMTY1LDExICsx MTg4LDE2IEBAIHByb2Nlc3NfZnJhbWUgKFNvdXBXZWJzb2NrZXRDb25uZWN0aW9uICpzZWxmKQor IAl9CisgCisgCWZpbHRlcmVkX2J5dGVzID0gZ19ieXRlc19uZXdfc3RhdGljIChwYXlsb2FkLCBw YXlsb2FkX2xlbik7CisrCW1heF9vdXRwdXRfc2l6ZSA9IGdldF9yZW1haW5pbmdfbWVzc2FnZV9z aXplIChwcml2KTsKKyAJZm9yIChsID0gcHJpdi0+ZXh0ZW5zaW9uczsgbCAhPSBOVUxMOyBsID0g Z19saXN0X25leHQgKGwpKSB7CisgCQlTb3VwV2Vic29ja2V0RXh0ZW5zaW9uICpleHRlbnNpb247 CisgCisgCQlleHRlbnNpb24gPSAoU291cFdlYnNvY2tldEV4dGVuc2lvbiAqKWwtPmRhdGE7Cist CQlmaWx0ZXJlZF9ieXRlcyA9IHNvdXBfd2Vic29ja2V0X2V4dGVuc2lvbl9wcm9jZXNzX2luY29t aW5nX21lc3NhZ2UgKGV4dGVuc2lvbiwgcHJpdi0+aW5jb21pbmctPmRhdGEsIGZpbHRlcmVkX2J5 dGVzLCAmZXJyb3IpOworKwkJZmlsdGVyZWRfYnl0ZXMgPSBzb3VwX3dlYnNvY2tldF9leHRlbnNp b25fcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlX3dpdGhfbGltaXQgKGV4dGVuc2lvbiwKKysJCQkJ CQkJCQkJCSAgICAgICBwcml2LT5pbmNvbWluZy0+ZGF0YSwKKysJCQkJCQkJCQkJCSAgICAgICBm aWx0ZXJlZF9ieXRlcywKKysJCQkJCQkJCQkJCSAgICAgICBtYXhfb3V0cHV0X3NpemUsCisrCQkJ CQkJCQkJCQkgICAgICAgJmVycm9yKTsKKyAJCWlmIChlcnJvcikgeworIAkJCWVtaXRfZXJyb3Jf YW5kX2Nsb3NlIChzZWxmLCBlcnJvciwgRkFMU0UpOworIAkJCXJldHVybiBGQUxTRTsKK2RpZmYg LS1naXQgYS9saWJzb3VwL3dlYnNvY2tldC9zb3VwLXdlYnNvY2tldC1leHRlbnNpb24tZGVmbGF0 ZS5jIGIvbGlic291cC93ZWJzb2NrZXQvc291cC13ZWJzb2NrZXQtZXh0ZW5zaW9uLWRlZmxhdGUu YworaW5kZXggZmE5OGEyZTIuLjJjNjQ5YTg4IDEwMDY0NAorLS0tIGEvbGlic291cC93ZWJzb2Nr ZXQvc291cC13ZWJzb2NrZXQtZXh0ZW5zaW9uLWRlZmxhdGUuYworKysrIGIvbGlic291cC93ZWJz b2NrZXQvc291cC13ZWJzb2NrZXQtZXh0ZW5zaW9uLWRlZmxhdGUuYworQEAgLTM1OSwxOSArMzU5 LDI5IEBAIHNvdXBfd2Vic29ja2V0X2V4dGVuc2lvbl9kZWZsYXRlX3Byb2Nlc3Nfb3V0Z29pbmdf bWVzc2FnZSAoU291cFdlYnNvY2tldEV4dGVuc2lvCisgICAgICAgICByZXR1cm4gZ19ieXRlX2Fy cmF5X2ZyZWVfdG9fYnl0ZXMgKGJ1ZmZlcik7CisgfQorIAorK3N0YXRpYyB2b2lkCisraW5mbGF0 ZXJfcmVzZXQgKEluZmxhdGVyICppbmZsYXRlcikKKyt7CisrICAgICAgICBpbmZsYXRlUmVzZXQg KCZpbmZsYXRlci0+enN0cmVhbSk7CisrICAgICAgICBpbmZsYXRlci0+dW5jb21wcmVzc19vbmdv aW5nID0gRkFMU0U7CisrfQorKworIHN0YXRpYyBHQnl0ZXMgKgorLXNvdXBfd2Vic29ja2V0X2V4 dGVuc2lvbl9kZWZsYXRlX3Byb2Nlc3NfaW5jb21pbmdfbWVzc2FnZSAoU291cFdlYnNvY2tldEV4 dGVuc2lvbiAqZXh0ZW5zaW9uLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQ4ICAgICAgICAgICAgICAgICAqaGVhZGVyLAor LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgR0J5dGVzICAgICAgICAgICAgICAgICAqcGF5bG9hZCwKKy0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICAg ICAgICAqKmVycm9yKQorK3NvdXBfd2Vic29ja2V0X2V4dGVuc2lvbl9kZWZsYXRlX3Byb2Nlc3Nf aW5jb21pbmdfbWVzc2FnZV93aXRoX2xpbWl0IChTb3VwV2Vic29ja2V0RXh0ZW5zaW9uICpleHRl bnNpb24sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGd1aW50OCAgICAgICAgICAgICAgICAgKmhlYWRlciwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgR0J5dGVzICAgICAgICAgICAgICAgICAqcGF5bG9hZCwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ3VpbnQ2NCAgICAgICAgICAgICAgICAgbWF4X291dHB1dF9zaXplLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBHRXJyb3IgICAgICAgICAgICAgICAgKiplcnJvcikKKyB7CisgICAgICAgICBjb25zdCBndWlu dDggKnBheWxvYWRfZGF0YTsKKyAgICAgICAgIGdzaXplIHBheWxvYWRfbGVuZ3RoOworICAgICAg ICAgZ2Jvb2xlYW4gZmluLCBjb250cm9sLCBjb21wcmVzc2VkOworICAgICAgICAgR0J5dGVBcnJh eSAqYnVmZmVyOworLSAgICAgICAgZ3NpemUgYnl0ZXNfcmVhZCwgYnl0ZXNfd3JpdHRlbjsKKysg ICAgICAgIGdzaXplIGlucHV0X29mZnNldCwgYnl0ZXNfd3JpdHRlbjsKKyAgICAgICAgIGludCBy ZXN1bHQ7CisgICAgICAgICBnYm9vbGVhbiB0YWlsX2FkZGVkID0gRkFMU0U7CisrICAgICAgICBn Ym9vbGVhbiB1c2luZ19saW1pdF9wcm9iZSA9IEZBTFNFOworKyAgICAgICAgZ3VpbnQ4IGxpbWl0 X3Byb2JlOworICAgICAgICAgU291cFdlYnNvY2tldEV4dGVuc2lvbkRlZmxhdGVQcml2YXRlICpw cml2OworIAorICAgICAgICAgcHJpdiA9IHNvdXBfd2Vic29ja2V0X2V4dGVuc2lvbl9kZWZsYXRl X2dldF9pbnN0YW5jZV9wcml2YXRlIChTT1VQX1dFQlNPQ0tFVF9FWFRFTlNJT05fREVGTEFURSAo ZXh0ZW5zaW9uKSk7CitAQCAtMzk0LDYgKzQwNCw3IEBAIHNvdXBfd2Vic29ja2V0X2V4dGVuc2lv bl9kZWZsYXRlX3Byb2Nlc3NfaW5jb21pbmdfbWVzc2FnZSAoU291cFdlYnNvY2tldEV4dGVuc2lv CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNPVVBfV0VCU09DS0VUX0VS Uk9SLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTT1VQX1dFQlNPQ0tF VF9DTE9TRV9QUk9UT0NPTF9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIlJlY2VpdmVkIGEgbm9uLWZpcnN0IGZyYW1lIHdpdGggUlNWMSBmbGFnIHNldCIpOwor KyAgICAgICAgICAgICAgICBpbmZsYXRlcl9yZXNldCAoJnByaXYtPmluZmxhdGVyKTsKKyAgICAg ICAgICAgICAgICAgZ19ieXRlc191bnJlZiAocGF5bG9hZCk7CisgICAgICAgICAgICAgICAgIHJl dHVybiBOVUxMOworICAgICAgICAgfQorQEAgLTQxMCw2NCArNDIxLDEyMiBAQCBzb3VwX3dlYnNv Y2tldF9leHRlbnNpb25fZGVmbGF0ZV9wcm9jZXNzX2luY29taW5nX21lc3NhZ2UgKFNvdXBXZWJz b2NrZXRFeHRlbnNpbworIAorICAgICAgICAgYnVmZmVyID0gZ19ieXRlX2FycmF5X25ldyAoKTsK KyAKKy0gICAgICAgIGJ5dGVzX3JlYWQgPSAwOworLSAgICAgICAgcHJpdi0+aW5mbGF0ZXIuenN0 cmVhbS5uZXh0X2luID0gKHZvaWQgKilwYXlsb2FkX2RhdGE7CistICAgICAgICBwcml2LT5pbmZs YXRlci56c3RyZWFtLmF2YWlsX2luID0gcGF5bG9hZF9sZW5ndGg7CistCisrICAgICAgICBpbnB1 dF9vZmZzZXQgPSAwOworKyAgICAgICAgcHJpdi0+aW5mbGF0ZXIuenN0cmVhbS5hdmFpbF9pbiA9 IDA7CisgICAgICAgICBieXRlc193cml0dGVuID0gMDsKKyAgICAgICAgIHByaXYtPmluZmxhdGVy LnpzdHJlYW0uYXZhaWxfb3V0ID0gMDsKKyAKKy0gICAgICAgIGRvIHsKKy0gICAgICAgICAgICAg ICAgZ3NpemUgcmVhZF9yZW1haW5pbmc7CistICAgICAgICAgICAgICAgIGdzaXplIHdyaXRlX3Jl bWFpbmluZzsKKysgICAgICAgIHdoaWxlIChUUlVFKSB7CisrICAgICAgICAgICAgICAgIHVJbnQg aW5wdXRfYmVmb3JlLCBvdXRwdXRfYmVmb3JlOworKyAgICAgICAgICAgICAgICB1SW50IGlucHV0 X2NvbnN1bWVkLCBvdXRwdXRfcHJvZHVjZWQ7CisgCistICAgICAgICAgICAgICAgIGlmIChwcml2 LT5pbmZsYXRlci56c3RyZWFtLmF2YWlsX291dCA9PSAwKSB7CistICAgICAgICAgICAgICAgICAg ICAgICAgZ3VpbnQgY3VycmVudF9wb3NpdGlvbjsKKysgICAgICAgICAgICAgICAgaWYgKHByaXYt PmluZmxhdGVyLnpzdHJlYW0uYXZhaWxfaW4gPT0gMCAmJiBpbnB1dF9vZmZzZXQgPCBwYXlsb2Fk X2xlbmd0aCkgeworKyAgICAgICAgICAgICAgICAgICAgICAgIGdzaXplIGlucHV0X2xlbmd0aCA9 IE1JTiAocGF5bG9hZF9sZW5ndGggLSBpbnB1dF9vZmZzZXQsIEdfTUFYVUlOVCk7CisgCistICAg ICAgICAgICAgICAgICAgICAgICAgcHJpdi0+aW5mbGF0ZXIuenN0cmVhbS5hdmFpbF9vdXQgPSBC VUZGRVJfU0laRTsKKy0gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X3Bvc2l0aW9uID0g YnVmZmVyLT5sZW47CistICAgICAgICAgICAgICAgICAgICAgICAgZ19ieXRlX2FycmF5X3NldF9z aXplIChidWZmZXIsIGJ1ZmZlci0+bGVuICsgQlVGRkVSX1NJWkUpOworLSAgICAgICAgICAgICAg ICAgICAgICAgIHByaXYtPmluZmxhdGVyLnpzdHJlYW0ubmV4dF9vdXQgPSBidWZmZXItPmRhdGEg KyBjdXJyZW50X3Bvc2l0aW9uOworKyAgICAgICAgICAgICAgICAgICAgICAgIHByaXYtPmluZmxh dGVyLnpzdHJlYW0ubmV4dF9pbiA9ICh2b2lkICopKHBheWxvYWRfZGF0YSArIGlucHV0X29mZnNl dCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+aW5mbGF0ZXIuenN0cmVhbS5hdmFp bF9pbiA9ICh1SW50KWlucHV0X2xlbmd0aDsKKysgICAgICAgICAgICAgICAgICAgICAgICBpbnB1 dF9vZmZzZXQgKz0gaW5wdXRfbGVuZ3RoOworICAgICAgICAgICAgICAgICB9CisgCistICAgICAg ICAgICAgICAgIGlmIChwcml2LT5pbmZsYXRlci56c3RyZWFtLmF2YWlsX2luID09IDAgJiYgIXRh aWxfYWRkZWQgJiYgZmluKSB7CisrICAgICAgICAgICAgICAgIGlmIChwcml2LT5pbmZsYXRlci56 c3RyZWFtLmF2YWlsX2luID09IDAgJiYKKysgICAgICAgICAgICAgICAgICAgIGlucHV0X29mZnNl dCA9PSBwYXlsb2FkX2xlbmd0aCAmJgorKyAgICAgICAgICAgICAgICAgICAgIXRhaWxfYWRkZWQg JiYgZmluKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgLyogQXBwZW5kIDQgb2N0ZXRzIG9m IDB4MDAgMHgwMCAweGZmIDB4ZmYgdG8gdGhlIHRhaWwgZW5kICovCisgICAgICAgICAgICAgICAg ICAgICAgICAgcHJpdi0+aW5mbGF0ZXIuenN0cmVhbS5uZXh0X2luID0gKHZvaWQgKikiXHgwMFx4 MDBceGZmXHhmZiI7CisgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+aW5mbGF0ZXIuenN0 cmVhbS5hdmFpbF9pbiA9IDQ7CistICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXNfcmVhZCA9 IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgdGFpbF9hZGRlZCA9IFRSVUU7CisgICAgICAg ICAgICAgICAgIH0KKyAKKy0gICAgICAgICAgICAgICAgcmVhZF9yZW1haW5pbmcgPSB0YWlsX2Fk ZGVkID8gNCA6IHBheWxvYWRfbGVuZ3RoIC0gYnl0ZXNfcmVhZDsKKy0gICAgICAgICAgICAgICAg d3JpdGVfcmVtYWluaW5nID0gYnVmZmVyLT5sZW4gLSBieXRlc193cml0dGVuOworKyAgICAgICAg ICAgICAgICBpZiAocHJpdi0+aW5mbGF0ZXIuenN0cmVhbS5hdmFpbF9vdXQgPT0gMCkgeworKyAg ICAgICAgICAgICAgICAgICAgICAgIGd1aW50IG91dHB1dF9sZW5ndGggPSBCVUZGRVJfU0laRTsK KysKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYnl0ZXNfd3JpdHRlbiA+PSBtYXhfb3V0 cHV0X3NpemUgfHwgYnVmZmVyLT5sZW4gPT0gR19NQVhVSU5UKSB7CisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwcml2LT5pbmZsYXRlci56c3RyZWFtLm5leHRfb3V0ID0gJmxpbWl0 X3Byb2JlOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+aW5mbGF0ZXIu enN0cmVhbS5hdmFpbF9vdXQgPSAxOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dXNpbmdfbGltaXRfcHJvYmUgPSBUUlVFOworKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxz ZSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDY0IHJlbWFpbmluZyA9 IG1heF9vdXRwdXRfc2l6ZSAtIGJ5dGVzX3dyaXR0ZW47CisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBndWludCBjdXJyZW50X3Bvc2l0aW9uID0gYnVmZmVyLT5sZW47CisrCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfbGVuZ3RoID0gTUlOICgoZ3VpbnQ2 NClvdXRwdXRfbGVuZ3RoLCByZW1haW5pbmcpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb3V0cHV0X2xlbmd0aCA9IE1JTiAob3V0cHV0X2xlbmd0aCwgR19NQVhVSU5UIC0gYnVm ZmVyLT5sZW4pOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19hc3NlcnQgKG91 dHB1dF9sZW5ndGggPiAwKTsKKysKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdf Ynl0ZV9hcnJheV9zZXRfc2l6ZSAoYnVmZmVyLCBidWZmZXItPmxlbiArIG91dHB1dF9sZW5ndGgp OworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+aW5mbGF0ZXIuenN0cmVh bS5uZXh0X291dCA9IGJ1ZmZlci0+ZGF0YSArIGN1cnJlbnRfcG9zaXRpb247CisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwcml2LT5pbmZsYXRlci56c3RyZWFtLmF2YWlsX291dCA9 IG91dHB1dF9sZW5ndGg7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZ19s aW1pdF9wcm9iZSA9IEZBTFNFOworKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAg ICAgICAgICAgfQorKworKyAgICAgICAgICAgICAgICBpbnB1dF9iZWZvcmUgPSBwcml2LT5pbmZs YXRlci56c3RyZWFtLmF2YWlsX2luOworKyAgICAgICAgICAgICAgICBvdXRwdXRfYmVmb3JlID0g cHJpdi0+aW5mbGF0ZXIuenN0cmVhbS5hdmFpbF9vdXQ7CisgICAgICAgICAgICAgICAgIHJlc3Vs dCA9IGluZmxhdGUgKCZwcml2LT5pbmZsYXRlci56c3RyZWFtLCB0YWlsX2FkZGVkID8gWl9GSU5J U0ggOiBaX05PX0ZMVVNIKTsKKy0gICAgICAgICAgICAgICAgYnl0ZXNfcmVhZCArPSByZWFkX3Jl bWFpbmluZyAtIHByaXYtPmluZmxhdGVyLnpzdHJlYW0uYXZhaWxfaW47CistICAgICAgICAgICAg ICAgIGJ5dGVzX3dyaXR0ZW4gKz0gd3JpdGVfcmVtYWluaW5nIC0gcHJpdi0+aW5mbGF0ZXIuenN0 cmVhbS5hdmFpbF9vdXQ7CisrICAgICAgICAgICAgICAgIGlucHV0X2NvbnN1bWVkID0gaW5wdXRf YmVmb3JlIC0gcHJpdi0+aW5mbGF0ZXIuenN0cmVhbS5hdmFpbF9pbjsKKysgICAgICAgICAgICAg ICAgb3V0cHV0X3Byb2R1Y2VkID0gb3V0cHV0X2JlZm9yZSAtIHByaXYtPmluZmxhdGVyLnpzdHJl YW0uYXZhaWxfb3V0OworKworKyAgICAgICAgICAgICAgICBpZiAodXNpbmdfbGltaXRfcHJvYmUg JiYgb3V0cHV0X3Byb2R1Y2VkID4gMCkKKysgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91 dHB1dF90b29fbGFyZ2U7CisrCisrICAgICAgICAgICAgICAgIGJ5dGVzX3dyaXR0ZW4gKz0gb3V0 cHV0X3Byb2R1Y2VkOworKworICAgICAgICAgICAgICAgICBpZiAoIXRhaWxfYWRkZWQgJiYgcmVz dWx0ID09IFpfU1RSRUFNX0VORCkgeworICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJlY2Vp dmVkIGEgYmxvY2sgd2l0aCBCRklOQUwgc2V0IHRvIDEuIFJlc2V0IGRlY29tcHJlc3Npb24gc3Rh dGUuICovCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gaW5mbGF0ZVJlc2V0ICgm cHJpdi0+aW5mbGF0ZXIuenN0cmVhbSk7CisgICAgICAgICAgICAgICAgIH0KKyAKKy0gICAgICAg ICAgICAgICAgaWYgKCghZmluICYmIGJ5dGVzX3JlYWQgPT0gcGF5bG9hZF9sZW5ndGgpIHx8IChm aW4gJiYgdGFpbF9hZGRlZCAmJiBieXRlc19yZWFkID09IDQpKQorLSAgICAgICAgICAgICAgICAg ICAgICAgIGJyZWFrOworLSAgICAgICAgfSB3aGlsZSAocmVzdWx0ID09IFpfT0sgfHwgcmVzdWx0 ID09IFpfQlVGX0VSUk9SKTsKKy0KKy0gICAgICAgIGdfYnl0ZXNfdW5yZWYgKHBheWxvYWQpOwor KyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IFpfT0sgJiYgcmVzdWx0ICE9IFpfQlVGX0VS Uk9SKQorKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gaW52YWxpZF9kYXRhOworIAorLSAg ICAgICAgaWYgKHJlc3VsdCAhPSBaX09LICYmIHJlc3VsdCAhPSBaX0JVRl9FUlJPUikgeworLSAg ICAgICAgICAgICAgICBwcml2LT5pbmZsYXRlci51bmNvbXByZXNzX29uZ29pbmcgPSBGQUxTRTsK Ky0gICAgICAgICAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbCAoZXJyb3IsCistICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNPVVBfV0VCU09DS0VUX0VSUk9SLAorLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTT1VQX1dFQlNPQ0tFVF9DTE9TRV9QUk9U T0NPTF9FUlJPUiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxl ZCB0byB1bmNvbXByZXNzIGluY29taW5nIGZyYW1lIik7CistICAgICAgICAgICAgICAgIGdfYnl0 ZV9hcnJheV91bnJlZiAoYnVmZmVyKTsKKysgICAgICAgICAgICAgICAgaWYgKHByaXYtPmluZmxh dGVyLnpzdHJlYW0uYXZhaWxfaW4gPT0gMCAmJgorKyAgICAgICAgICAgICAgICAgICAgaW5wdXRf b2Zmc2V0ID09IHBheWxvYWRfbGVuZ3RoICYmCisrICAgICAgICAgICAgICAgICAgICAoKCFmaW4g JiYgIXRhaWxfYWRkZWQpIHx8IChmaW4gJiYgdGFpbF9hZGRlZCkpICYmCisrICAgICAgICAgICAg ICAgICAgICBwcml2LT5pbmZsYXRlci56c3RyZWFtLmF2YWlsX291dCA+IDApCisrICAgICAgICAg ICAgICAgICAgICAgICAgYnJlYWs7CisgCistICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwor KyAgICAgICAgICAgICAgICBpZiAoaW5wdXRfY29uc3VtZWQgPT0gMCAmJiBvdXRwdXRfcHJvZHVj ZWQgPT0gMCkKKysgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGludmFsaWRfZGF0YTsKKyAg ICAgICAgIH0KKyAKKysgICAgICAgIGdfYnl0ZXNfdW5yZWYgKHBheWxvYWQpOworICAgICAgICAg Z19ieXRlX2FycmF5X3NldF9zaXplIChidWZmZXIsIGJ5dGVzX3dyaXR0ZW4pOworIAorICAgICAg ICAgcmV0dXJuIGdfYnl0ZV9hcnJheV9mcmVlX3RvX2J5dGVzIChidWZmZXIpOworKworK291dHB1 dF90b29fbGFyZ2U6CisrICAgICAgICBpbmZsYXRlcl9yZXNldCAoJnByaXYtPmluZmxhdGVyKTsK KysgICAgICAgIGdfYnl0ZXNfdW5yZWYgKHBheWxvYWQpOworKyAgICAgICAgZ19ieXRlX2FycmF5 X3VucmVmIChidWZmZXIpOworKyAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbCAoZXJyb3IsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTT1VQX1dFQlNPQ0tFVF9FUlJPUiwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFNPVVBfV0VCU09DS0VUX0NMT1NFX1RPT19CSUcsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVjb21wcmVzc2VkIFdlYlNvY2tldCBtZXNz YWdlIGV4Y2VlZHMgY29uZmlndXJlZCBtYXhpbXVtIHNpemUiKTsKKysKKysgICAgICAgIHJldHVy biBOVUxMOworKworK2ludmFsaWRfZGF0YToKKysgICAgICAgIGluZmxhdGVyX3Jlc2V0ICgmcHJp di0+aW5mbGF0ZXIpOworKyAgICAgICAgZ19ieXRlc191bnJlZiAocGF5bG9hZCk7CisrICAgICAg ICBnX2J5dGVfYXJyYXlfdW5yZWYgKGJ1ZmZlcik7CisrICAgICAgICBnX3NldF9lcnJvcl9saXRl cmFsIChlcnJvciwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNPVVBfV0VCU09DS0VU X0VSUk9SLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU09VUF9XRUJTT0NLRVRfQ0xP U0VfUFJPVE9DT0xfRVJST1IsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVk IHRvIHVuY29tcHJlc3MgaW5jb21pbmcgZnJhbWUiKTsKKysKKysgICAgICAgIHJldHVybiBOVUxM OworK30KKysKKytzdGF0aWMgR0J5dGVzICoKKytzb3VwX3dlYnNvY2tldF9leHRlbnNpb25fZGVm bGF0ZV9wcm9jZXNzX2luY29taW5nX21lc3NhZ2UgKFNvdXBXZWJzb2NrZXRFeHRlbnNpb24gKmV4 dGVuc2lvbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGd1aW50OCAgICAgICAgICAgICAgICAgKmhlYWRlciwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdCeXRlcyAg ICAgICAgICAgICAgICAgKnBheWxvYWQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICAgICAgICAgICAgKiplcnJv cikKKyt7CisrICAgICAgICByZXR1cm4gc291cF93ZWJzb2NrZXRfZXh0ZW5zaW9uX2RlZmxhdGVf cHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlX3dpdGhfbGltaXQgKGV4dGVuc2lvbiwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaGVhZGVyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwYXlsb2FkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX01BWFVJTlQ2NCwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IpOworIH0KKyAKKyBzdGF0aWMgdm9pZAor QEAgLTQ4Myw2ICs1NTIsNyBAQCBzb3VwX3dlYnNvY2tldF9leHRlbnNpb25fZGVmbGF0ZV9jbGFz c19pbml0IChTb3VwV2Vic29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUNsYXNzCisgICAgICAgICBleHRl bnNpb25fY2xhc3MtPmdldF9yZXNwb25zZV9wYXJhbXMgPSBzb3VwX3dlYnNvY2tldF9leHRlbnNp b25fZGVmbGF0ZV9nZXRfcmVzcG9uc2VfcGFyYW1zOworICAgICAgICAgZXh0ZW5zaW9uX2NsYXNz LT5wcm9jZXNzX291dGdvaW5nX21lc3NhZ2UgPSBzb3VwX3dlYnNvY2tldF9leHRlbnNpb25fZGVm bGF0ZV9wcm9jZXNzX291dGdvaW5nX21lc3NhZ2U7CisgICAgICAgICBleHRlbnNpb25fY2xhc3Mt PnByb2Nlc3NfaW5jb21pbmdfbWVzc2FnZSA9IHNvdXBfd2Vic29ja2V0X2V4dGVuc2lvbl9kZWZs YXRlX3Byb2Nlc3NfaW5jb21pbmdfbWVzc2FnZTsKKysgICAgICAgIGV4dGVuc2lvbl9jbGFzcy0+ cHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlX3dpdGhfbGltaXQgPSBzb3VwX3dlYnNvY2tldF9leHRl bnNpb25fZGVmbGF0ZV9wcm9jZXNzX2luY29taW5nX21lc3NhZ2Vfd2l0aF9saW1pdDsKKyAKKyAg ICAgICAgIG9iamVjdF9jbGFzcy0+ZmluYWxpemUgPSBzb3VwX3dlYnNvY2tldF9leHRlbnNpb25f ZGVmbGF0ZV9maW5hbGl6ZTsKKyB9CitkaWZmIC0tZ2l0IGEvbGlic291cC93ZWJzb2NrZXQvc291 cC13ZWJzb2NrZXQtZXh0ZW5zaW9uLmMgYi9saWJzb3VwL3dlYnNvY2tldC9zb3VwLXdlYnNvY2tl dC1leHRlbnNpb24uYworaW5kZXggODg4MmQyYzAuLjk1NzE5ZThjIDEwMDY0NAorLS0tIGEvbGli c291cC93ZWJzb2NrZXQvc291cC13ZWJzb2NrZXQtZXh0ZW5zaW9uLmMKKysrKyBiL2xpYnNvdXAv d2Vic29ja2V0L3NvdXAtd2Vic29ja2V0LWV4dGVuc2lvbi5jCitAQCAtNDcsNiArNDcsOSBAQAor ICAqICAgIGJlZm9yZSBpdCdzIHNlbnQuIFJlc2VydmVkIGJpdHMgb2YgdGhlIGhlYWRlciBzaG91 bGQgYmUgY2hhbmdlZC4KKyAgKiBAcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlOiBjYWxsZWQgdG8g cHJvY2VzcyB0aGUgcGF5bG9hZCBkYXRhIG9mIGEgbWVzc2FnZQorICAqICAgIGFmdGVyIGl0J3Mg cmVjZWl2ZWQuIFJlc2VydmVkIGJpdHMgb2YgdGhlIGhlYWRlciBzaG91bGQgYmUgY2xlYXJlZC4K KysgKiBAcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlX3dpdGhfbGltaXQ6IGNhbGxlZCB0byBwcm9j ZXNzIHRoZSBwYXlsb2FkIGRhdGEgb2YKKysgKiAgICBhIG1lc3NhZ2UgYWZ0ZXIgaXQncyByZWNl aXZlZCB3aXRob3V0IGV4Y2VlZGluZyB0aGUgcmVxdWVzdGVkIG1heGltdW0KKysgKiAgICBvdXRw dXQgc2l6ZS4gSWYgdW5zZXQsIEBwcm9jZXNzX2luY29taW5nX21lc3NhZ2UgaXMgdXNlZC4gU2lu Y2UgMy44CisgICoKKyAgKiBUaGUgY2xhc3Mgc3RydWN0dXJlIGZvciB0aGUgW2NsYXNzQFdlYnNv Y2tldEV4dGVuc2lvbl0uCisgICovCitAQCAtMjE2LDMgKzIxOSw1MyBAQCBzb3VwX3dlYnNvY2tl dF9leHRlbnNpb25fcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlIChTb3VwV2Vic29ja2V0RXh0ZW5z aW9uICpleHRlbgorIAorIAlyZXR1cm4ga2xhc3MtPnByb2Nlc3NfaW5jb21pbmdfbWVzc2FnZSAo ZXh0ZW5zaW9uLCBoZWFkZXIsIHBheWxvYWQsIGVycm9yKTsKKyB9CisrCisrLyoqCisrICogc291 cF93ZWJzb2NrZXRfZXh0ZW5zaW9uX3Byb2Nlc3NfaW5jb21pbmdfbWVzc2FnZV93aXRoX2xpbWl0 OgorKyAqIEBleHRlbnNpb246IGEgI1NvdXBXZWJzb2NrZXRFeHRlbnNpb24KKysgKiBAaGVhZGVy OiAoaW5vdXQpOiB0aGUgbWVzc2FnZSBoZWFkZXIKKysgKiBAcGF5bG9hZDogKHRyYW5zZmVyIGZ1 bGwpOiB0aGUgcGF5bG9hZCBkYXRhCisrICogQG1heF9vdXRwdXRfc2l6ZTogdGhlIG1heGltdW0g c2l6ZSBpbiBieXRlcyBvZiB0aGUgcHJvY2Vzc2VkIHBheWxvYWQKKysgKiBAZXJyb3I6IHJldHVy biBsb2NhdGlvbiBmb3IgYSAjR0Vycm9yCisrICoKKysgKiBQcm9jZXNzIGEgbWVzc2FnZSBhZnRl ciBpdCdzIHJlY2VpdmVkLCB3aXRob3V0IHByb2R1Y2luZyBtb3JlIHRoYW4KKysgKiBAbWF4X291 dHB1dF9zaXplIGJ5dGVzIG9mIG91dHB1dC4KKysgKgorKyAqIFRoaXMgYmVoYXZlcyBsaWtlIFtt ZXRob2RAV2Vic29ja2V0RXh0ZW5zaW9uLnByb2Nlc3NfaW5jb21pbmdfbWVzc2FnZV0sCisrICog YnV0IGV4dGVuc2lvbnMgdGhhdCBleHBhbmQgdGhlaXIgaW5wdXQgKHN1Y2ggYXMgYHBlcm1lc3Nh Z2UtZGVmbGF0ZWApCisrICogc3RvcCBhbmQgcmV0dXJuIGFuIGVycm9yIHdpdGggW2Vycm9yQFdl YnNvY2tldEVycm9yLkNMT1NFX1RPT19CSUddCisrICogaW5zdGVhZCBvZiBwcm9kdWNpbmcgb3V0 cHV0IGxhcmdlciB0aGFuIEBtYXhfb3V0cHV0X3NpemUuIEV4dGVuc2lvbnMKKysgKiB0aGF0IGRv bid0IGltcGxlbWVudCB0aGlzIGZhbGwgYmFjayB0bworKyAqIFttZXRob2RAV2Vic29ja2V0RXh0 ZW5zaW9uLnByb2Nlc3NfaW5jb21pbmdfbWVzc2FnZV0uCisrICoKKysgKiBSZXR1cm5zOiAodHJh bnNmZXIgZnVsbCk6IHRoZSBtZXNzYWdlIHBheWxvYWQgZGF0YSwgb3IgJU5VTEwgaW4gY2FzZSBv ZiBlcnJvcgorKyAqCisrICogU2luY2U6IDMuOAorKyAqLworK0dCeXRlcyAqCisrc291cF93ZWJz b2NrZXRfZXh0ZW5zaW9uX3Byb2Nlc3NfaW5jb21pbmdfbWVzc2FnZV93aXRoX2xpbWl0IChTb3Vw V2Vic29ja2V0RXh0ZW5zaW9uICpleHRlbnNpb24sCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDggICAgICAgICAgICAg ICAgICpoZWFkZXIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBHQnl0ZXMgICAgICAgICAgICAgICAgICpwYXlsb2FkLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ3VpbnQ2NCAgICAgICAgICAgICAgICAgbWF4X291dHB1dF9zaXplLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9y ICAgICAgICAgICAgICAgICoqZXJyb3IpCisreworKwlTb3VwV2Vic29ja2V0RXh0ZW5zaW9uQ2xh c3MgKmtsYXNzOworKworKwlnX3JldHVybl92YWxfaWZfZmFpbCAoU09VUF9JU19XRUJTT0NLRVRf RVhURU5TSU9OIChleHRlbnNpb24pLCBOVUxMKTsKKysJZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGhl YWRlciAhPSBOVUxMLCBOVUxMKTsKKysJZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHBheWxvYWQgIT0g TlVMTCwgTlVMTCk7CisrCWdfcmV0dXJuX3ZhbF9pZl9mYWlsIChlcnJvciA9PSBOVUxMIHx8ICpl cnJvciA9PSBOVUxMLCBOVUxMKTsKKysKKysJa2xhc3MgPSBTT1VQX1dFQlNPQ0tFVF9FWFRFTlNJ T05fR0VUX0NMQVNTIChleHRlbnNpb24pOworKwlpZiAoIWtsYXNzLT5wcm9jZXNzX2luY29taW5n X21lc3NhZ2Vfd2l0aF9saW1pdCkKKysJCXJldHVybiBzb3VwX3dlYnNvY2tldF9leHRlbnNpb25f cHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlIChleHRlbnNpb24sCisrCQkJCQkJCQkJICBoZWFkZXIs CisrCQkJCQkJCQkJICBwYXlsb2FkLAorKwkJCQkJCQkJCSAgZXJyb3IpOworKworKwlyZXR1cm4g a2xhc3MtPnByb2Nlc3NfaW5jb21pbmdfbWVzc2FnZV93aXRoX2xpbWl0IChleHRlbnNpb24sCisr CQkJCQkJCSAgIGhlYWRlciwKKysJCQkJCQkJICAgcGF5bG9hZCwKKysJCQkJCQkJICAgbWF4X291 dHB1dF9zaXplLAorKwkJCQkJCQkgICBlcnJvcik7CisrfQorZGlmZiAtLWdpdCBhL2xpYnNvdXAv d2Vic29ja2V0L3NvdXAtd2Vic29ja2V0LWV4dGVuc2lvbi5oIGIvbGlic291cC93ZWJzb2NrZXQv c291cC13ZWJzb2NrZXQtZXh0ZW5zaW9uLmgKK2luZGV4IDE5MzFhMjY0Li5hOWQ1ZTM1YyAxMDA2 NDQKKy0tLSBhL2xpYnNvdXAvd2Vic29ja2V0L3NvdXAtd2Vic29ja2V0LWV4dGVuc2lvbi5oCisr KysgYi9saWJzb3VwL3dlYnNvY2tldC9zb3VwLXdlYnNvY2tldC1leHRlbnNpb24uaAorQEAgLTU1 LDggKzU1LDE0IEBAIHN0cnVjdCBfU291cFdlYnNvY2tldEV4dGVuc2lvbkNsYXNzIHsKKyAJCQkJ CSAgICAgICBHQnl0ZXMgICAgICAgICAgICAgICAgICAgICAqcGF5bG9hZCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICAgICAg ICAgICAgKiplcnJvcik7CisgCisrCUdCeXRlcyAgKigqIHByb2Nlc3NfaW5jb21pbmdfbWVzc2Fn ZV93aXRoX2xpbWl0KSAoU291cFdlYnNvY2tldEV4dGVuc2lvbiAqZXh0ZW5zaW9uLAorKwkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50OCAgICAg ICAgICAgICAgICAgKmhlYWRlciwKKysJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBHQnl0ZXMgICAgICAgICAgICAgICAgICpwYXlsb2FkLAorKwkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50NjQgICAg ICAgICAgICAgICAgIG1heF9vdXRwdXRfc2l6ZSwKKysJICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICAgICAgICAgICAgKiplcnJvcik7 CisrCisgICAgICAgICAvKiA8cHJpdmF0ZT4gKi8KKy0JZ3BvaW50ZXIgcGFkZGluZ1s2XTsKKysJ Z3BvaW50ZXIgcGFkZGluZ1s1XTsKKyB9OworIAorIFNPVVBfQVZBSUxBQkxFX0lOX0FMTAorQEAg LTgwLDUgKzg2LDExIEBAIEdCeXRlcyAgICAgICAgICAgICAgICAgICpzb3VwX3dlYnNvY2tldF9l eHRlbnNpb25fcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlIChTb3VwCisgCQkJCQkJCQkJICAgIGd1 aW50OCAgICAgICAgICAgICAgICAgICAgICpoZWFkZXIsCisgCQkJCQkJCQkJICAgIEdCeXRlcyAg ICAgICAgICAgICAgICAgICAgICpwYXlsb2FkLAorIAkJCQkJCQkJCSAgICBHRXJyb3IgICAgICAg ICAgICAgICAgICAgICoqZXJyb3IpOworK1NPVVBfQVZBSUxBQkxFX0lOXzNfOAorK0dCeXRlcyAg ICAgICAgICAgICAgICAgICpzb3VwX3dlYnNvY2tldF9leHRlbnNpb25fcHJvY2Vzc19pbmNvbWlu Z19tZXNzYWdlX3dpdGhfbGltaXQgKFNvdXBXZWJzb2NrZXRFeHRlbnNpb24gKmV4dGVuc2lvbiwK KysJCQkJCQkJCQkJCSAgICAgICBndWludDggICAgICAgICAgICAgICAgICpoZWFkZXIsCisrCQkJ CQkJCQkJCQkgICAgICAgR0J5dGVzICAgICAgICAgICAgICAgICAqcGF5bG9hZCwKKysJCQkJCQkJ CQkJCSAgICAgICBndWludDY0ICAgICAgICAgICAgICAgICBtYXhfb3V0cHV0X3NpemUsCisrCQkJ CQkJCQkJCQkgICAgICAgR0Vycm9yICAgICAgICAgICAgICAgICoqZXJyb3IpOworIAorIEdfRU5E X0RFQ0xTCitkaWZmIC0tZ2l0IGEvdGVzdHMvd2Vic29ja2V0LXRlc3QuYyBiL3Rlc3RzL3dlYnNv Y2tldC10ZXN0LmMKK2luZGV4IGRiMDg4YTU1Li41Zjk0YjVmNiAxMDA2NDQKKy0tLSBhL3Rlc3Rz L3dlYnNvY2tldC10ZXN0LmMKKysrKyBiL3Rlc3RzL3dlYnNvY2tldC10ZXN0LmMKK0BAIC03Myw2 ICs3MywxOCBAQCBvbl9lcnJvcl9jb3B5IChTb3VwV2Vic29ja2V0Q29ubmVjdGlvbiAqd3MsCisg CSpjb3B5ID0gZ19lcnJvcl9jb3B5IChlcnJvcik7CisgfQorIAorK3N0YXRpYyB2b2lkCisrb25f ZXJyb3JfY29weV9vbmNlIChTb3VwV2Vic29ja2V0Q29ubmVjdGlvbiAqd3MsCisrCQkgICAgR0Vy cm9yICplcnJvciwKKysJCSAgICBncG9pbnRlciB1c2VyX2RhdGEpCisreworKwlHRXJyb3IgKipj b3B5ID0gdXNlcl9kYXRhOworKworKwlnX2Fzc2VydF9udWxsICgqY29weSk7CisrCSpjb3B5ID0g Z19lcnJvcl9jb3B5IChlcnJvcik7CisrCWdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlf ZnVuYyAod3MsIEdfQ0FMTEJBQ0sgKG9uX2Vycm9yX2NvcHlfb25jZSksIHVzZXJfZGF0YSk7Cisr fQorKworIHN0YXRpYyB2b2lkCisgc2V0dXBfbGlzdGVuZXIgKFRlc3QgKnRlc3QpCisgeworQEAg LTY0OSw3ICs2NjEsNyBAQCB0ZXN0X3NlbmRfYmlnX3BhY2tldHNfc291cCAoVGVzdCAqdGVzdCwK KyAJZ19hc3NlcnRfY21wdWludCAoc291cF93ZWJzb2NrZXRfY29ubmVjdGlvbl9nZXRfbWF4X2lu Y29taW5nX3BheWxvYWRfc2l6ZSAodGVzdC0+Y2xpZW50KSwgPT0sIDEyOCAqIDEwMjQpOworIAln X2Fzc2VydF9jbXB1aW50IChzb3VwX3dlYnNvY2tldF9jb25uZWN0aW9uX2dldF9tYXhfdG90YWxf bWVzc2FnZV9zaXplICh0ZXN0LT5jbGllbnQpLCA9PSwgMCk7CisgCistCS8qIE1heCB0b3RhbCBt ZXNzYWdlIHNpemUgZGVmYXVsdHMgdG8gMCAodW5saW1pdGVkKSwgYnV0IFNvdXBTZXJ2ZXIgYXBw bGllcyBpdHMgb3duIGxpbWl0IGJ5IGRlZmF1bHQuICovCisrCS8qIFNvdXBTZXJ2ZXIgYXBwbGll cyBpdHMgb3duIHRvdGFsIG1lc3NhZ2Ugc2l6ZSBsaW1pdCBieSBkZWZhdWx0LiAqLworIAlnX2Fz c2VydF9jbXB1aW50IChzb3VwX3dlYnNvY2tldF9jb25uZWN0aW9uX2dldF9tYXhfaW5jb21pbmdf cGF5bG9hZF9zaXplICh0ZXN0LT5zZXJ2ZXIpLCA9PSwgMTI4ICogMTAyNCk7CisgCWdfYXNzZXJ0 X2NtcHVpbnQgKHNvdXBfd2Vic29ja2V0X2Nvbm5lY3Rpb25fZ2V0X21heF90b3RhbF9tZXNzYWdl X3NpemUgKHRlc3QtPnNlcnZlciksID09LCAxMjggKiAxMDI0KTsKKyAKK0BAIC03NTYsOSArNzY4 LDcgQEAgdGVzdF9zZW5kX2V4Y2VlZGluZ19zZXJ2ZXJfbWF4X21lc3NhZ2Vfc2l6ZSAoVGVzdCAq dGVzdCwKKyAJc291cF93ZWJzb2NrZXRfY29ubmVjdGlvbl9zZXRfbWF4X3RvdGFsX21lc3NhZ2Vf c2l6ZSAodGVzdC0+Y2xpZW50LCAwKTsKKyAJZ19hc3NlcnRfY21wdWludCAoc291cF93ZWJzb2Nr ZXRfY29ubmVjdGlvbl9nZXRfbWF4X3RvdGFsX21lc3NhZ2Vfc2l6ZSAodGVzdC0+Y2xpZW50KSwg PT0sIDApOworIAorLQkvKiBTZXQgdGhlIHNlcnZlciBtZXNzYWdlIHRvdGFsIG1lc3NhZ2Ugc2l6 ZSBtYW51YWxseSwgYmVjYXVzZSBpdHMKKy0JICogZGVmYXVsdCBpcyBkaWZmZXJlbnQgZm9yIGRp cmVjdCBjb25uZWN0aW9uIHZzLiBzb3VwIGNvbm5lY3Rpb24uCistCSAqLworKwkvKiBUaGUgZGly ZWN0IHNlcnZlciBjb25uZWN0aW9uIGRlZmF1bHRzIHRvIHVubGltaXRlZC4gKi8KKyAJc291cF93 ZWJzb2NrZXRfY29ubmVjdGlvbl9zZXRfbWF4X3RvdGFsX21lc3NhZ2Vfc2l6ZSAodGVzdC0+c2Vy dmVyLCAxMjggKiAxMDI0KTsKKyAJZ19hc3NlcnRfY21wdWludCAoc291cF93ZWJzb2NrZXRfY29u bmVjdGlvbl9nZXRfbWF4X3RvdGFsX21lc3NhZ2Vfc2l6ZSAodGVzdC0+c2VydmVyKSwgPT0sIDEy OCAqIDEwMjQpOworIAorQEAgLTE2NzAsNiArMTY4MCwyMjIgQEAgc2VuZF9mcmFnbWVudHNfc2Vy dmVyX3RocmVhZCAoZ3BvaW50ZXIgdXNlcl9kYXRhKQorIAlyZXR1cm4gTlVMTDsKKyB9CisgCisr dHlwZWRlZiBzdHJ1Y3QgeworKwlTb3VwV2Vic29ja2V0RXh0ZW5zaW9uIHBhcmVudF9pbnN0YW5j ZTsKKyt9IExlZ2FjeVdlYnNvY2tldEV4dGVuc2lvbjsKKysKKyt0eXBlZGVmIHN0cnVjdCB7Cisr CVNvdXBXZWJzb2NrZXRFeHRlbnNpb25DbGFzcyBwYXJlbnRfY2xhc3M7CisrfSBMZWdhY3lXZWJz b2NrZXRFeHRlbnNpb25DbGFzczsKKysKKytHVHlwZSBsZWdhY3lfd2Vic29ja2V0X2V4dGVuc2lv bl9nZXRfdHlwZSAodm9pZCk7CisrCisrI2RlZmluZSBMRUdBQ1lfVFlQRV9XRUJTT0NLRVRfRVhU RU5TSU9OIChsZWdhY3lfd2Vic29ja2V0X2V4dGVuc2lvbl9nZXRfdHlwZSAoKSkKKytHX0RFRklO RV9UWVBFIChMZWdhY3lXZWJzb2NrZXRFeHRlbnNpb24sIGxlZ2FjeV93ZWJzb2NrZXRfZXh0ZW5z aW9uLCBTT1VQX1RZUEVfV0VCU09DS0VUX0VYVEVOU0lPTikKKysKKytzdGF0aWMgZ2Jvb2xlYW4g bGVnYWN5X2V4dGVuc2lvbl9wcm9jZXNzZWQ7CisrCisrc3RhdGljIEdCeXRlcyAqCisrbGVnYWN5 X3dlYnNvY2tldF9leHRlbnNpb25fcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlIChTb3VwV2Vic29j a2V0RXh0ZW5zaW9uICpleHRlbnNpb24sCisrCQkJCQkJICAgICBndWludDggICAgICAgICAgICAg ICAgICpoZWFkZXIsCisrCQkJCQkJICAgICBHQnl0ZXMgICAgICAgICAgICAgICAgICpwYXlsb2Fk LAorKwkJCQkJCSAgICAgR0Vycm9yICAgICAgICAgICAgICAgICoqZXJyb3IpCisreworKwlsZWdh Y3lfZXh0ZW5zaW9uX3Byb2Nlc3NlZCA9IFRSVUU7CisrCisrCXJldHVybiBwYXlsb2FkOworK30K KysKKytzdGF0aWMgdm9pZAorK2xlZ2FjeV93ZWJzb2NrZXRfZXh0ZW5zaW9uX2NsYXNzX2luaXQg KExlZ2FjeVdlYnNvY2tldEV4dGVuc2lvbkNsYXNzICprbGFzcykKKyt7CisrCVNvdXBXZWJzb2Nr ZXRFeHRlbnNpb25DbGFzcyAqZXh0ZW5zaW9uX2NsYXNzID0gU09VUF9XRUJTT0NLRVRfRVhURU5T SU9OX0NMQVNTIChrbGFzcyk7CisrCisrCWV4dGVuc2lvbl9jbGFzcy0+cHJvY2Vzc19pbmNvbWlu Z19tZXNzYWdlID0gbGVnYWN5X3dlYnNvY2tldF9leHRlbnNpb25fcHJvY2Vzc19pbmNvbWluZ19t ZXNzYWdlOworK30KKysKKytzdGF0aWMgdm9pZAorK2xlZ2FjeV93ZWJzb2NrZXRfZXh0ZW5zaW9u X2luaXQgKExlZ2FjeVdlYnNvY2tldEV4dGVuc2lvbiAqZXh0ZW5zaW9uKQorK3sKKyt9CisrCisr c3RhdGljIHZvaWQKKyt0ZXN0X3dlYnNvY2tldF9leHRlbnNpb25fbGltaXRfZmFsbGJhY2sgKHZv aWQpCisreworKwlTb3VwV2Vic29ja2V0RXh0ZW5zaW9uICpleHRlbnNpb247CisrCUdCeXRlcyAq cGF5bG9hZDsKKysJR0J5dGVzICpvdXRwdXQ7CisrCUdFcnJvciAqZXJyb3IgPSBOVUxMOworKwln dWludDggaGVhZGVyID0gMHg4MjsKKysKKysJbGVnYWN5X2V4dGVuc2lvbl9wcm9jZXNzZWQgPSBG QUxTRTsKKysJZXh0ZW5zaW9uID0gZ19vYmplY3RfbmV3IChMRUdBQ1lfVFlQRV9XRUJTT0NLRVRf RVhURU5TSU9OLCBOVUxMKTsKKysJcGF5bG9hZCA9IGdfYnl0ZXNfbmV3X3N0YXRpYyAoIngiLCAx KTsKKysJb3V0cHV0ID0gc291cF93ZWJzb2NrZXRfZXh0ZW5zaW9uX3Byb2Nlc3NfaW5jb21pbmdf bWVzc2FnZV93aXRoX2xpbWl0IChleHRlbnNpb24sCisrCQkJCQkJCQkJICAgICAgICZoZWFkZXIs CisrCQkJCQkJCQkJICAgICAgIHBheWxvYWQsCisrCQkJCQkJCQkJICAgICAgIDEsCisrCQkJCQkJ CQkJICAgICAgICZlcnJvcik7CisrCisrCWdfYXNzZXJ0X25vX2Vycm9yIChlcnJvcik7CisrCWdf YXNzZXJ0X3RydWUgKGxlZ2FjeV9leHRlbnNpb25fcHJvY2Vzc2VkKTsKKysJZ19hc3NlcnRfdHJ1 ZSAob3V0cHV0ID09IHBheWxvYWQpOworKworKwlnX2J5dGVzX3VucmVmIChvdXRwdXQpOworKwln X29iamVjdF91bnJlZiAoZXh0ZW5zaW9uKTsKKyt9CisrCisrdHlwZWRlZiBzdHJ1Y3QgeworKwln c2l6ZSBvdXRwdXRfc2l6ZTsKKysJZ3VpbnQ2NCBtYXhfb3V0cHV0X3NpemU7CisrCWdib29sZWFu IGV4cGVjdF90b29fYmlnOworK30gRGVmbGF0ZU91dHB1dExpbWl0VGVzdDsKKysKKytzdGF0aWMg dm9pZAorK3Rlc3RfZGVmbGF0ZV9vdXRwdXRfbGltaXQgKGdjb25zdHBvaW50ZXIgZGF0YSkKKyt7 CisrCWNvbnN0IERlZmxhdGVPdXRwdXRMaW1pdFRlc3QgKmNvbmZpZyA9IGRhdGE7CisrCVNvdXBX ZWJzb2NrZXRFeHRlbnNpb24gKnNlbmRlcjsKKysJU291cFdlYnNvY2tldEV4dGVuc2lvbiAqcmVj ZWl2ZXI7CisrCUdCeXRlcyAqY29tcHJlc3NlZDsKKysJR0J5dGVzICpvdXRwdXQ7CisrCUdFcnJv ciAqZXJyb3IgPSBOVUxMOworKwlndWludDggaGVhZGVyID0gMHg4MjsKKysKKysJc2VuZGVyID0g Z19vYmplY3RfbmV3IChTT1VQX1RZUEVfV0VCU09DS0VUX0VYVEVOU0lPTl9ERUZMQVRFLCBOVUxM KTsKKysJZ19hc3NlcnRfdHJ1ZSAoc291cF93ZWJzb2NrZXRfZXh0ZW5zaW9uX2NvbmZpZ3VyZSAo c2VuZGVyLAorKwkJCQkJCQkgICBTT1VQX1dFQlNPQ0tFVF9DT05ORUNUSU9OX1NFUlZFUiwKKysJ CQkJCQkJICAgTlVMTCwgJmVycm9yKSk7CisrCWdfYXNzZXJ0X25vX2Vycm9yIChlcnJvcik7Cisr CisrCXJlY2VpdmVyID0gZ19vYmplY3RfbmV3IChTT1VQX1RZUEVfV0VCU09DS0VUX0VYVEVOU0lP Tl9ERUZMQVRFLCBOVUxMKTsKKysJZ19hc3NlcnRfdHJ1ZSAoc291cF93ZWJzb2NrZXRfZXh0ZW5z aW9uX2NvbmZpZ3VyZSAocmVjZWl2ZXIsCisrCQkJCQkJCSAgIFNPVVBfV0VCU09DS0VUX0NPTk5F Q1RJT05fQ0xJRU5ULAorKwkJCQkJCQkgICBOVUxMLCAmZXJyb3IpKTsKKysJZ19hc3NlcnRfbm9f ZXJyb3IgKGVycm9yKTsKKysKKysJY29tcHJlc3NlZCA9IGdfYnl0ZXNfbmV3X3Rha2UgKGdfbWFs bG9jMCAoY29uZmlnLT5vdXRwdXRfc2l6ZSksIGNvbmZpZy0+b3V0cHV0X3NpemUpOworKwljb21w cmVzc2VkID0gc291cF93ZWJzb2NrZXRfZXh0ZW5zaW9uX3Byb2Nlc3Nfb3V0Z29pbmdfbWVzc2Fn ZSAoc2VuZGVyLCAmaGVhZGVyLAorKwkJCQkJCQkJCWNvbXByZXNzZWQsICZlcnJvcik7CisrCWdf YXNzZXJ0X25vX2Vycm9yIChlcnJvcik7CisrCWdfYXNzZXJ0X25vbm51bGwgKGNvbXByZXNzZWQp OworKwlnX2Fzc2VydF90cnVlIChoZWFkZXIgJiAweDQwKTsKKysJZ19hc3NlcnRfY21wdWludCAo Z19ieXRlc19nZXRfc2l6ZSAoY29tcHJlc3NlZCksIDwsIGNvbmZpZy0+b3V0cHV0X3NpemUpOwor KworKwlvdXRwdXQgPSBzb3VwX3dlYnNvY2tldF9leHRlbnNpb25fcHJvY2Vzc19pbmNvbWluZ19t ZXNzYWdlX3dpdGhfbGltaXQgKHJlY2VpdmVyLAorKwkJCQkJCQkJCSAgICAgICAmaGVhZGVyLAor KwkJCQkJCQkJCSAgICAgICBjb21wcmVzc2VkLAorKwkJCQkJCQkJCSAgICAgICBjb25maWctPm1h eF9vdXRwdXRfc2l6ZSwKKysJCQkJCQkJCQkgICAgICAgJmVycm9yKTsKKysJaWYgKGNvbmZpZy0+ ZXhwZWN0X3Rvb19iaWcpIHsKKysJCWdfYXNzZXJ0X251bGwgKG91dHB1dCk7CisrCQlnX2Fzc2Vy dF9lcnJvciAoZXJyb3IsIFNPVVBfV0VCU09DS0VUX0VSUk9SLCBTT1VQX1dFQlNPQ0tFVF9DTE9T RV9UT09fQklHKTsKKysJCWdfY2xlYXJfZXJyb3IgKCZlcnJvcik7CisrCX0gZWxzZSB7CisrCQln X2Fzc2VydF9ub19lcnJvciAoZXJyb3IpOworKwkJZ19hc3NlcnRfbm9ubnVsbCAob3V0cHV0KTsK KysJCWdfYXNzZXJ0X2NtcHVpbnQgKGdfYnl0ZXNfZ2V0X3NpemUgKG91dHB1dCksID09LCBjb25m aWctPm91dHB1dF9zaXplKTsKKysJCWdfYnl0ZXNfdW5yZWYgKG91dHB1dCk7CisrCX0KKysKKysJ Z19vYmplY3RfdW5yZWYgKHJlY2VpdmVyKTsKKysJZ19vYmplY3RfdW5yZWYgKHNlbmRlcik7Cisr fQorKworK3N0YXRpYyBjb25zdCBEZWZsYXRlT3V0cHV0TGltaXRUZXN0IGRlZmxhdGVfb3V0cHV0 X2JlbG93X2xpbWl0ID0geworKwk0MDk1LCA0MDk2LCBGQUxTRQorK307Cisrc3RhdGljIGNvbnN0 IERlZmxhdGVPdXRwdXRMaW1pdFRlc3QgZGVmbGF0ZV9vdXRwdXRfYXRfbGltaXQgPSB7CisrCTQw OTYsIDQwOTYsIEZBTFNFCisrfTsKKytzdGF0aWMgY29uc3QgRGVmbGF0ZU91dHB1dExpbWl0VGVz dCBkZWZsYXRlX291dHB1dF9vdmVyX2xpbWl0ID0geworKwk0MDk3LCA0MDk2LCBUUlVFCisrfTsK KysKKyt0eXBlZGVmIHN0cnVjdCB7CisrCWdib29sZWFuIHNlcnZlcl9yZWNlaXZlczsKKysJZ2Jv b2xlYW4gY29uZmlndXJlX2xpbWl0OworK30gRGVmbGF0ZU1lc3NhZ2VMaW1pdFRlc3Q7CisrCisr c3RhdGljIHZvaWQKKyt0ZXN0X2RlZmxhdGVfZXhjZWVkc19tZXNzYWdlX2xpbWl0IChUZXN0ICp0 ZXN0LAorKwkJCQkgICAgZ2NvbnN0cG9pbnRlciBkYXRhKQorK3sKKysJY29uc3QgRGVmbGF0ZU1l c3NhZ2VMaW1pdFRlc3QgKmNvbmZpZyA9IGRhdGE7CisrCVNvdXBXZWJzb2NrZXRDb25uZWN0aW9u ICpyZWNlaXZlcjsKKysJU291cFdlYnNvY2tldENvbm5lY3Rpb24gKnNlbmRlcjsKKysJR0J5dGVz ICpyZWNlaXZlZCA9IE5VTEw7CisrCUdFcnJvciAqZXJyb3IgPSBOVUxMOworKwlndWludDggKm1l c3NhZ2U7CisrCisrCWlmIChjb25maWctPnNlcnZlcl9yZWNlaXZlcykgeworKwkJcmVjZWl2ZXIg PSB0ZXN0LT5zZXJ2ZXI7CisrCQlzZW5kZXIgPSB0ZXN0LT5jbGllbnQ7CisrCX0gZWxzZSB7Cisr CQlyZWNlaXZlciA9IHRlc3QtPmNsaWVudDsKKysJCXNlbmRlciA9IHRlc3QtPnNlcnZlcjsKKysJ fQorKworKwlpZiAoY29uZmlnLT5jb25maWd1cmVfbGltaXQpCisrCQlzb3VwX3dlYnNvY2tldF9j b25uZWN0aW9uX3NldF9tYXhfdG90YWxfbWVzc2FnZV9zaXplIChyZWNlaXZlciwgMTI4ICogMTAy NCk7CisrCisrCWdfYXNzZXJ0X2NtcHVpbnQgKHNvdXBfd2Vic29ja2V0X2Nvbm5lY3Rpb25fZ2V0 X21heF90b3RhbF9tZXNzYWdlX3NpemUgKHJlY2VpdmVyKSwKKysJCQkgID09LCAxMjggKiAxMDI0 KTsKKysKKysJZ19zaWduYWxfY29ubmVjdCAocmVjZWl2ZXIsICJlcnJvciIsIEdfQ0FMTEJBQ0sg KG9uX2Vycm9yX2NvcHlfb25jZSksICZlcnJvcik7CisrCWdfc2lnbmFsX2Nvbm5lY3QgKHJlY2Vp dmVyLCAibWVzc2FnZSIsIEdfQ0FMTEJBQ0sgKG9uX2JpbmFyeV9tZXNzYWdlKSwgJnJlY2VpdmVk KTsKKysKKysJbWVzc2FnZSA9IGdfbWFsbG9jMCAoMTI4ICogMTAyNCArIDEpOworKwlzb3VwX3dl YnNvY2tldF9jb25uZWN0aW9uX3NlbmRfYmluYXJ5IChzZW5kZXIsIG1lc3NhZ2UsIDEyOCAqIDEw MjQgKyAxKTsKKysJZ19mcmVlIChtZXNzYWdlKTsKKysKKysJV0FJVF9VTlRJTCAoZXJyb3IgIT0g TlVMTCB8fCByZWNlaXZlZCAhPSBOVUxMKTsKKysJZ19hc3NlcnRfbnVsbCAocmVjZWl2ZWQpOwor KwlnX2Fzc2VydF9lcnJvciAoZXJyb3IsIFNPVVBfV0VCU09DS0VUX0VSUk9SLCBTT1VQX1dFQlNP Q0tFVF9DTE9TRV9UT09fQklHKTsKKysJZ19jbGVhcl9lcnJvciAoJmVycm9yKTsKKysKKysJV0FJ VF9VTlRJTCAoc291cF93ZWJzb2NrZXRfY29ubmVjdGlvbl9nZXRfc3RhdGUgKHNlbmRlcikgPT0g U09VUF9XRUJTT0NLRVRfU1RBVEVfQ0xPU0VEKTsKKysJZ19hc3NlcnRfbnVsbCAocmVjZWl2ZWQp OworKwlnX2Fzc2VydF9jbXB1aW50IChzb3VwX3dlYnNvY2tldF9jb25uZWN0aW9uX2dldF9jbG9z ZV9jb2RlIChzZW5kZXIpLAorKwkJCSAgPT0sIFNPVVBfV0VCU09DS0VUX0NMT1NFX1RPT19CSUcp OworK30KKysKKytzdGF0aWMgdm9pZAorK3Rlc3RfZGVmbGF0ZV9kZWZhdWx0X3VubGltaXRlZF9t ZXNzYWdlX3NpemUgKFRlc3QgKnRlc3QsCisrCQkJCQkgICAgIGdjb25zdHBvaW50ZXIgZGF0YSkK Kyt7CisrCWNvbnN0IERlZmxhdGVNZXNzYWdlTGltaXRUZXN0ICpjb25maWcgPSBkYXRhOworKwlT b3VwV2Vic29ja2V0Q29ubmVjdGlvbiAqcmVjZWl2ZXI7CisrCVNvdXBXZWJzb2NrZXRDb25uZWN0 aW9uICpzZW5kZXI7CisrCUdCeXRlcyAqcmVjZWl2ZWQgPSBOVUxMOworKwlndWludDggKm1lc3Nh Z2U7CisrCisrCWlmIChjb25maWctPnNlcnZlcl9yZWNlaXZlcykgeworKwkJcmVjZWl2ZXIgPSB0 ZXN0LT5zZXJ2ZXI7CisrCQlzZW5kZXIgPSB0ZXN0LT5jbGllbnQ7CisrCX0gZWxzZSB7CisrCQly ZWNlaXZlciA9IHRlc3QtPmNsaWVudDsKKysJCXNlbmRlciA9IHRlc3QtPnNlcnZlcjsKKysJfQor KworKwlnX2Fzc2VydF9mYWxzZSAoY29uZmlnLT5jb25maWd1cmVfbGltaXQpOworKwlnX2Fzc2Vy dF9jbXB1aW50IChzb3VwX3dlYnNvY2tldF9jb25uZWN0aW9uX2dldF9tYXhfdG90YWxfbWVzc2Fn ZV9zaXplIChyZWNlaXZlciksID09LCAwKTsKKysJZ19zaWduYWxfY29ubmVjdCAocmVjZWl2ZXIs ICJtZXNzYWdlIiwgR19DQUxMQkFDSyAob25fYmluYXJ5X21lc3NhZ2UpLCAmcmVjZWl2ZWQpOwor KworKwltZXNzYWdlID0gZ19tYWxsb2MwICgxMjggKiAxMDI0ICsgMSk7CisrCXNvdXBfd2Vic29j a2V0X2Nvbm5lY3Rpb25fc2VuZF9iaW5hcnkgKHNlbmRlciwgbWVzc2FnZSwgMTI4ICogMTAyNCAr IDEpOworKwlnX2ZyZWUgKG1lc3NhZ2UpOworKworKwlXQUlUX1VOVElMIChyZWNlaXZlZCAhPSBO VUxMKTsKKysJZ19hc3NlcnRfY21wdWludCAoZ19ieXRlc19nZXRfc2l6ZSAocmVjZWl2ZWQpLCA9 PSwgMTI4ICogMTAyNCArIDEpOworKwlnX2J5dGVzX3VucmVmIChyZWNlaXZlZCk7CisrfQorKwor K3N0YXRpYyBjb25zdCBEZWZsYXRlTWVzc2FnZUxpbWl0VGVzdCBkZWZsYXRlX3NlcnZlcl9yZWNl aXZlc19jb25maWd1cmVkID0geyBUUlVFLCBUUlVFIH07Cisrc3RhdGljIGNvbnN0IERlZmxhdGVN ZXNzYWdlTGltaXRUZXN0IGRlZmxhdGVfY2xpZW50X3JlY2VpdmVzX2NvbmZpZ3VyZWQgPSB7IEZB TFNFLCBUUlVFIH07Cisrc3RhdGljIGNvbnN0IERlZmxhdGVNZXNzYWdlTGltaXRUZXN0IGRlZmxh dGVfc2VydmVyX3JlY2VpdmVzX2RlZmF1bHQgPSB7IFRSVUUsIEZBTFNFIH07Cisrc3RhdGljIGNv bnN0IERlZmxhdGVNZXNzYWdlTGltaXRUZXN0IGRlZmxhdGVfY2xpZW50X3JlY2VpdmVzX2RlZmF1 bHQgPSB7IEZBTFNFLCBGQUxTRSB9OworKworIHN0YXRpYyB2b2lkCisgZG9fZGVmbGF0ZSAoel9z dHJlYW0gKnpzdHJlYW0sCisgICAgICAgICAgICAgY29uc3QgY2hhciAqc3RyLAorQEAgLTE3NzEs NiArMTk5NywzMSBAQCB0ZXN0X3JlY2VpdmVfZnJhZ21lbnRlZCAoVGVzdCAqdGVzdCwKKyAJV0FJ VF9VTlRJTCAoc291cF93ZWJzb2NrZXRfY29ubmVjdGlvbl9nZXRfc3RhdGUgKHRlc3QtPmNsaWVu dCkgPT0gU09VUF9XRUJTT0NLRVRfU1RBVEVfQ0xPU0VEKTsKKyB9CisgCisrc3RhdGljIHZvaWQK Kyt0ZXN0X2RlZmxhdGVfcmVjZWl2ZV9mcmFnbWVudGVkX3Rvb19iaWcgKFRlc3QgKnRlc3QsCisr CQkJCQkgZ2NvbnN0cG9pbnRlciBkYXRhKQorK3sKKysJR1RocmVhZCAqdGhyZWFkOworKwlHQnl0 ZXMgKnJlY2VpdmVkID0gTlVMTDsKKysJR0Vycm9yICplcnJvciA9IE5VTEw7CisrCisrCXNvdXBf d2Vic29ja2V0X2Nvbm5lY3Rpb25fc2V0X21heF90b3RhbF9tZXNzYWdlX3NpemUgKHRlc3QtPmNs aWVudCwgMTIpOworKwlnX3NpZ25hbF9jb25uZWN0ICh0ZXN0LT5jbGllbnQsICJlcnJvciIsIEdf Q0FMTEJBQ0sgKG9uX2Vycm9yX2NvcHlfb25jZSksICZlcnJvcik7CisrCWdfc2lnbmFsX2Nvbm5l Y3QgKHRlc3QtPmNsaWVudCwgIm1lc3NhZ2UiLCBHX0NBTExCQUNLIChvbl90ZXh0X21lc3NhZ2Up LCAmcmVjZWl2ZWQpOworKworKwl0aHJlYWQgPSBnX3RocmVhZF9uZXcgKCJkZWZsYXRlLWZyYWdt ZW50LXRvby1iaWctdGhyZWFkIiwKKysJCQkgICAgICAgc2VuZF9jb21wcmVzc2VkX2ZyYWdtZW50 c19zZXJ2ZXJfdGhyZWFkLAorKwkJCSAgICAgICB0ZXN0KTsKKysKKysJV0FJVF9VTlRJTCAoZXJy b3IgIT0gTlVMTCB8fCByZWNlaXZlZCAhPSBOVUxMKTsKKysJZ19hc3NlcnRfbnVsbCAocmVjZWl2 ZWQpOworKwlnX2Fzc2VydF9lcnJvciAoZXJyb3IsIFNPVVBfV0VCU09DS0VUX0VSUk9SLCBTT1VQ X1dFQlNPQ0tFVF9DTE9TRV9UT09fQklHKTsKKysJZ19jbGVhcl9lcnJvciAoJmVycm9yKTsKKysK KysJZ190aHJlYWRfam9pbiAodGhyZWFkKTsKKysJV0FJVF9VTlRJTCAoc291cF93ZWJzb2NrZXRf Y29ubmVjdGlvbl9nZXRfc3RhdGUgKHRlc3QtPmNsaWVudCkgPT0gU09VUF9XRUJTT0NLRVRfU1RB VEVfQ0xPU0VEKTsKKyt9CisrCisgdHlwZWRlZiBzdHJ1Y3QgeworIAlUZXN0ICp0ZXN0OworIAlj b25zdCBjaGFyICpoZWFkZXI7CitAQCAtMjc5OCw2ICszMDQ5LDE4IEBAIG1haW4gKGludCBhcmdj LAorIAkJICAgIHRlc3RfZGVmbGF0ZV9uZWdvdGlhdGVfZGlyZWN0LAorIAkJICAgIE5VTEwpOwor IAorKwlnX3Rlc3RfYWRkX2Z1bmMgKCIvd2Vic29ja2V0L2V4dGVuc2lvbi9pbmNvbWluZy1saW1p dC1sZWdhY3ktZmFsbGJhY2siLAorKwkJCSB0ZXN0X3dlYnNvY2tldF9leHRlbnNpb25fbGltaXRf ZmFsbGJhY2spOworKwlnX3Rlc3RfYWRkX2RhdGFfZnVuYyAoIi93ZWJzb2NrZXQvZGVmbGF0ZS9v dXRwdXQtbGltaXQvYmVsb3ciLAorKwkJCSAgICAgICZkZWZsYXRlX291dHB1dF9iZWxvd19saW1p dCwKKysJCQkgICAgICB0ZXN0X2RlZmxhdGVfb3V0cHV0X2xpbWl0KTsKKysJZ190ZXN0X2FkZF9k YXRhX2Z1bmMgKCIvd2Vic29ja2V0L2RlZmxhdGUvb3V0cHV0LWxpbWl0L2V4YWN0IiwKKysJCQkg ICAgICAmZGVmbGF0ZV9vdXRwdXRfYXRfbGltaXQsCisrCQkJICAgICAgdGVzdF9kZWZsYXRlX291 dHB1dF9saW1pdCk7CisrCWdfdGVzdF9hZGRfZGF0YV9mdW5jICgiL3dlYnNvY2tldC9kZWZsYXRl L291dHB1dC1saW1pdC9vdmVyIiwKKysJCQkgICAgICAmZGVmbGF0ZV9vdXRwdXRfb3Zlcl9saW1p dCwKKysJCQkgICAgICB0ZXN0X2RlZmxhdGVfb3V0cHV0X2xpbWl0KTsKKysKKyAJZ190ZXN0X2Fk ZCAoIi93ZWJzb2NrZXQvZGlyZWN0L2RlZmxhdGUtZGlzYWJsZWQtaW4tbWVzc2FnZSIsIFRlc3Qs IE5VTEwsIE5VTEwsCisgCQkgICAgdGVzdF9kZWZsYXRlX2Rpc2FibGVkX2luX21lc3NhZ2VfZGly ZWN0LAorIAkJICAgIE5VTEwpOworQEAgLTI4MjMsNiArMzA4NiwzNyBAQCBtYWluIChpbnQgYXJn YywKKyAJCSAgICB0ZXN0X3NlbmRfc2VydmVyX3RvX2NsaWVudCwKKyAJCSAgICB0ZWFyZG93bl9z b3VwX2Nvbm5lY3Rpb24pOworIAorKwlnX3Rlc3RfYWRkICgiL3dlYnNvY2tldC9kaXJlY3QvZGVm bGF0ZS1jb25maWd1cmVkLWxpbWl0L2NsaWVudC10by1zZXJ2ZXIiLAorKwkJICAgIFRlc3QsICZk ZWZsYXRlX3NlcnZlcl9yZWNlaXZlc19jb25maWd1cmVkLAorKwkJICAgIHNldHVwX2RpcmVjdF9j b25uZWN0aW9uX3dpdGhfZXh0ZW5zaW9ucywKKysJCSAgICB0ZXN0X2RlZmxhdGVfZXhjZWVkc19t ZXNzYWdlX2xpbWl0LAorKwkJICAgIHRlYXJkb3duX2RpcmVjdF9jb25uZWN0aW9uKTsKKysJZ190 ZXN0X2FkZCAoIi93ZWJzb2NrZXQvZGlyZWN0L2RlZmxhdGUtY29uZmlndXJlZC1saW1pdC9zZXJ2 ZXItdG8tY2xpZW50IiwKKysJCSAgICBUZXN0LCAmZGVmbGF0ZV9jbGllbnRfcmVjZWl2ZXNfY29u ZmlndXJlZCwKKysJCSAgICBzZXR1cF9kaXJlY3RfY29ubmVjdGlvbl93aXRoX2V4dGVuc2lvbnMs CisrCQkgICAgdGVzdF9kZWZsYXRlX2V4Y2VlZHNfbWVzc2FnZV9saW1pdCwKKysJCSAgICB0ZWFy ZG93bl9kaXJlY3RfY29ubmVjdGlvbik7CisrCWdfdGVzdF9hZGQgKCIvd2Vic29ja2V0L3NvdXAv ZGVmbGF0ZS1kZWZhdWx0LXNlcnZlci1saW1pdC9jbGllbnQtdG8tc2VydmVyIiwKKysJCSAgICBU ZXN0LCAmZGVmbGF0ZV9zZXJ2ZXJfcmVjZWl2ZXNfZGVmYXVsdCwKKysJCSAgICBzZXR1cF9zb3Vw X2Nvbm5lY3Rpb25fd2l0aF9leHRlbnNpb25zLAorKwkJICAgIHRlc3RfZGVmbGF0ZV9leGNlZWRz X21lc3NhZ2VfbGltaXQsCisrCQkgICAgdGVhcmRvd25fc291cF9jb25uZWN0aW9uKTsKKysJZ190 ZXN0X2FkZCAoIi93ZWJzb2NrZXQvc291cC9kZWZsYXRlLWNvbmZpZ3VyZWQtY2xpZW50LWxpbWl0 L3NlcnZlci10by1jbGllbnQiLAorKwkJICAgIFRlc3QsICZkZWZsYXRlX2NsaWVudF9yZWNlaXZl c19jb25maWd1cmVkLAorKwkJICAgIHNldHVwX3NvdXBfY29ubmVjdGlvbl93aXRoX2V4dGVuc2lv bnMsCisrCQkgICAgdGVzdF9kZWZsYXRlX2V4Y2VlZHNfbWVzc2FnZV9saW1pdCwKKysJCSAgICB0 ZWFyZG93bl9zb3VwX2Nvbm5lY3Rpb24pOworKwlnX3Rlc3RfYWRkICgiL3dlYnNvY2tldC9kaXJl Y3QvZGVmbGF0ZS1kZWZhdWx0LXVubGltaXRlZC9jbGllbnQtdG8tc2VydmVyIiwKKysJCSAgICBU ZXN0LCAmZGVmbGF0ZV9zZXJ2ZXJfcmVjZWl2ZXNfZGVmYXVsdCwKKysJCSAgICBzZXR1cF9kaXJl Y3RfY29ubmVjdGlvbl93aXRoX2V4dGVuc2lvbnMsCisrCQkgICAgdGVzdF9kZWZsYXRlX2RlZmF1 bHRfdW5saW1pdGVkX21lc3NhZ2Vfc2l6ZSwKKysJCSAgICB0ZWFyZG93bl9kaXJlY3RfY29ubmVj dGlvbik7CisrCWdfdGVzdF9hZGQgKCIvd2Vic29ja2V0L2RpcmVjdC9kZWZsYXRlLWRlZmF1bHQt dW5saW1pdGVkL3NlcnZlci10by1jbGllbnQiLAorKwkJICAgIFRlc3QsICZkZWZsYXRlX2NsaWVu dF9yZWNlaXZlc19kZWZhdWx0LAorKwkJICAgIHNldHVwX2RpcmVjdF9jb25uZWN0aW9uX3dpdGhf ZXh0ZW5zaW9ucywKKysJCSAgICB0ZXN0X2RlZmxhdGVfZGVmYXVsdF91bmxpbWl0ZWRfbWVzc2Fn ZV9zaXplLAorKwkJICAgIHRlYXJkb3duX2RpcmVjdF9jb25uZWN0aW9uKTsKKysKKyAJZ190ZXN0 X2FkZCAoIi93ZWJzb2NrZXQvZGlyZWN0L2RlZmxhdGUtc2VuZC1iaWctcGFja2V0cyIsIFRlc3Qs IE5VTEwsCisgCQkgICAgc2V0dXBfZGlyZWN0X2Nvbm5lY3Rpb25fd2l0aF9leHRlbnNpb25zLAor IAkJICAgIHRlc3Rfc2VuZF9iaWdfcGFja2V0c19kaXJlY3QsCitAQCAtMjg0NSw2ICszMTM5LDEw IEBAIG1haW4gKGludCBhcmdjLAorIAkJICAgIHNldHVwX2hhbGZfZGlyZWN0X2Nvbm5lY3Rpb25f d2l0aF9leHRlbnNpb25zLAorIAkJICAgIHRlc3RfcmVjZWl2ZV9mcmFnbWVudGVkLAorIAkJICAg IHRlYXJkb3duX2RpcmVjdF9jb25uZWN0aW9uKTsKKysJZ190ZXN0X2FkZCAoIi93ZWJzb2NrZXQv ZGlyZWN0L2RlZmxhdGUtcmVjZWl2ZS1mcmFnbWVudGVkLXRvby1iaWciLCBUZXN0LCBOVUxMLAor KwkJICAgIHNldHVwX2hhbGZfZGlyZWN0X2Nvbm5lY3Rpb25fd2l0aF9leHRlbnNpb25zLAorKwkJ ICAgIHRlc3RfZGVmbGF0ZV9yZWNlaXZlX2ZyYWdtZW50ZWRfdG9vX2JpZywKKysJCSAgICB0ZWFy ZG93bl9kaXJlY3RfY29ubmVjdGlvbik7CisgCWdfdGVzdF9hZGQgKCIvd2Vic29ja2V0L2RpcmVj dC9kZWZsYXRlLXJlY2VpdmUtZnJhZ21lbnRlZC1lcnJvciIsIFRlc3QsIE5VTEwsCisgCQkgICAg c2V0dXBfaGFsZl9kaXJlY3RfY29ubmVjdGlvbl93aXRoX2V4dGVuc2lvbnMsCisgCQkgICAgdGVz dF9kZWZsYXRlX3JlY2VpdmVfZnJhZ21lbnRlZF9lcnJvciwKKy0tIAorR2l0TGFiCisKCmRpZmYg LS1naXQgYS9DVkUtMjAyNi0xNTcxMS5wYXRjaCBiL0NWRS0yMDI2LTE1NzExLnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyYWI1N2IKLS0tIC9kZXYvbnVsbAorKysg Yi9DVkUtMjAyNi0xNTcxMS5wYXRjaApAQCAtMCwwICsxLDE3MiBAQAorRnJvbSA2MGFhMWNlMmJk YzdiYjVkYTMzYmU5MDYyZjUwYmNlYzdkYjY3ZmNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQor RnJvbTogWmF5ZCBSYWphYiA8emF5ZHJAYW1hem9uLmNvbT4KK0RhdGU6IFRodSwgMTYgSnVsIDIw MjYgMDI6MzI6MTkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gd2Vic29ja2V0OiBSZWplY3Qgb3Zl cnNpemVkIGNvbnRyb2wgZnJhbWVzCisKK1JGQyA2NDU1IHNlY3Rpb24gNS41IGxpbWl0cyBjb250 cm9sIGZyYW1lIHBheWxvYWRzIHRvIDEyNSBieXRlcy4KK1JlamVjdCBleHRlbmRlZCBwYXlsb2Fk IGxlbmd0aCBpbmRpY2F0b3JzIGFzIHNvb24gYXMgdGhlIGJhc2UgaGVhZGVyIGlzCithdmFpbGFi bGUsIGJlZm9yZSB3YWl0aW5nIGZvciBhZGRpdGlvbmFsIGxlbmd0aCBvciBwYXlsb2FkIGJ5dGVz LgorCitBZGQgcmVncmVzc2lvbiBjb3ZlcmFnZSBmb3IgYm90aCBleHRlbmRlZCBsZW5ndGggaW5k aWNhdG9ycyBhbmQgYm90aAorcmVjZWl2ZSBkaXJlY3Rpb25zLgorCitUaGlzIGlzIENWRS0yMDI2 LTE1NzExLgorCitDbG9zZXMgIzUxNQorLS0tCisgbGlic291cC93ZWJzb2NrZXQvc291cC13ZWJz b2NrZXQtY29ubmVjdGlvbi5jIHwgICA3ICsrCisgdGVzdHMvd2Vic29ja2V0LXRlc3QuYyAgICAg ICAgICAgICAgICAgICAgICAgIHwgMTEzICsrKysrKysrKysrKysrKysrKworIDIgZmlsZXMgY2hh bmdlZCwgMTIwIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2xpYnNvdXAvd2Vic29ja2V0 L3NvdXAtd2Vic29ja2V0LWNvbm5lY3Rpb24uYyBiL2xpYnNvdXAvd2Vic29ja2V0L3NvdXAtd2Vi c29ja2V0LWNvbm5lY3Rpb24uYworaW5kZXggMTRkY2Q2MzAuLmZmZDcxM2VmIDEwMDY0NAorLS0t IGEvbGlic291cC93ZWJzb2NrZXQvc291cC13ZWJzb2NrZXQtY29ubmVjdGlvbi5jCisrKysgYi9s aWJzb3VwL3dlYnNvY2tldC9zb3VwLXdlYnNvY2tldC1jb25uZWN0aW9uLmMKK0BAIC0xMDgyLDYg KzEwODIsMTMgQEAgcHJvY2Vzc19mcmFtZSAoU291cFdlYnNvY2tldENvbm5lY3Rpb24gKnNlbGYp CisgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgIH0KKyAKKysJLyogUkZD IDY0NTUgc2VjdGlvbiA1LjUgbGltaXRzIGNvbnRyb2wgZnJhbWUgcGF5bG9hZHMgdG8gMTI1IGJ5 dGVzLiAqLworKwlpZiAoY29udHJvbCAmJiAoaGVhZGVyWzFdICYgMHg3ZikgPiAxMjUpIHsKKysJ CWdfZGVidWcgKCJyZWNlaXZlZCBvdmVyc2l6ZWQgY29udHJvbCBmcmFtZSIpOworKwkJcHJvdG9j b2xfZXJyb3JfYW5kX2Nsb3NlIChzZWxmKTsKKysJCXJldHVybiBGQUxTRTsKKysJfQorKworIAlz d2l0Y2ggKGhlYWRlclsxXSAmIDB4N2YpIHsKKyAJY2FzZSAxMjY6CisgCQkvKiBJZiAxMjYsIHRo ZSBmb2xsb3dpbmcgMiBieXRlcyBpbnRlcnByZXRlZCBhcyBhIDE2LWJpdAorZGlmZiAtLWdpdCBh L3Rlc3RzL3dlYnNvY2tldC10ZXN0LmMgYi90ZXN0cy93ZWJzb2NrZXQtdGVzdC5jCitpbmRleCBi OGY3MTMwMC4uZGIwODhhNTUgMTAwNjQ0CistLS0gYS90ZXN0cy93ZWJzb2NrZXQtdGVzdC5jCisr KysgYi90ZXN0cy93ZWJzb2NrZXQtdGVzdC5jCitAQCAtODM1LDYgKzgzNSw5OCBAQCB0ZXN0X3Nl bmRfYmFkX2RhdGEgKFRlc3QgKnRlc3QsCisgCWdfYXNzZXJ0X2NtcHVpbnQgKHNvdXBfd2Vic29j a2V0X2Nvbm5lY3Rpb25fZ2V0X2Nsb3NlX2NvZGUgKHRlc3QtPmNsaWVudCksID09LCBTT1VQX1dF QlNPQ0tFVF9DTE9TRV9CQURfREFUQSk7CisgfQorIAorK3N0YXRpYyBnYm9vbGVhbgorK29uX3Rp bWVvdXRfc2V0X2ZsYWcgKGdwb2ludGVyIHVzZXJfZGF0YSkKKyt7CisrCWdib29sZWFuICp0aW1l ZF9vdXQgPSB1c2VyX2RhdGE7CisrCisrCSp0aW1lZF9vdXQgPSBUUlVFOworKworKwlyZXR1cm4g R19TT1VSQ0VfUkVNT1ZFOworK30KKysKKytzdGF0aWMgdm9pZAorK3dhaXRfZm9yX3dlYnNvY2tl dF9lcnJvciAoR0Vycm9yICoqZXJyb3IpCisreworKwlnYm9vbGVhbiB0aW1lZF9vdXQgPSBGQUxT RTsKKysJZ3VpbnQgdGltZW91dF9pZDsKKysKKysJdGltZW91dF9pZCA9IGdfdGltZW91dF9hZGRf c2Vjb25kcyAoMSwgb25fdGltZW91dF9zZXRfZmxhZywgJnRpbWVkX291dCk7CisrCVdBSVRfVU5U SUwgKCplcnJvciAhPSBOVUxMIHx8IHRpbWVkX291dCk7CisrCisrCWlmICghdGltZWRfb3V0KQor KwkJZ19zb3VyY2VfcmVtb3ZlICh0aW1lb3V0X2lkKTsKKysJZ19hc3NlcnRfZmFsc2UgKHRpbWVk X291dCk7CisrfQorKworK3N0YXRpYyB2b2lkCisrd3JpdGVfb3ZlcnNpemVkX2NvbnRyb2xfZnJh bWVfaGVhZGVyIChHSU9TdHJlYW0gKmlvLAorKwkJCQkgICAgICBndWludDggbGVuZ3RoX2luZGlj YXRvciwKKysJCQkJICAgICAgZ2Jvb2xlYW4gbWFza2VkKQorK3sKKysJZ3VpbnQ4IGZyYW1lW10g PSB7IDB4OGEsIGxlbmd0aF9pbmRpY2F0b3IgfTsKKysJR0Vycm9yICplcnJvciA9IE5VTEw7Cisr CWdzaXplIHdyaXR0ZW47CisrCisrCWdfYXNzZXJ0X3RydWUgKGxlbmd0aF9pbmRpY2F0b3IgPT0g MTI2IHx8IGxlbmd0aF9pbmRpY2F0b3IgPT0gMTI3KTsKKysKKysJaWYgKG1hc2tlZCkKKysJCWZy YW1lWzFdIHw9IDB4ODA7CisrCisrCWdfb3V0cHV0X3N0cmVhbV93cml0ZV9hbGwgKGdfaW9fc3Ry ZWFtX2dldF9vdXRwdXRfc3RyZWFtIChpbyksCisrCQkJCSAgIGZyYW1lLCBzaXplb2YgKGZyYW1l KSwgJndyaXR0ZW4sIE5VTEwsICZlcnJvcik7CisrCWdfYXNzZXJ0X25vX2Vycm9yIChlcnJvcik7 CisrCWdfYXNzZXJ0X2NtcHVpbnQgKHdyaXR0ZW4sID09LCBzaXplb2YgKGZyYW1lKSk7CisrfQor KworK3R5cGVkZWYgc3RydWN0IHsKKysJZ3VpbnQ4IGxlbmd0aF9pbmRpY2F0b3I7CisrCWdib29s ZWFuIHNlcnZlcl9yZWNlaXZlczsKKyt9IE92ZXJzaXplZENvbnRyb2xGcmFtZVRlc3Q7CisrCisr c3RhdGljIHZvaWQKKyt0ZXN0X3JlY2VpdmVfb3ZlcnNpemVkX2NvbnRyb2xfZnJhbWUgKFRlc3Qg KnRlc3QsCisrCQkJCSAgICAgIGdjb25zdHBvaW50ZXIgZGF0YSkKKyt7CisrCWNvbnN0IE92ZXJz aXplZENvbnRyb2xGcmFtZVRlc3QgKmNvbmZpZyA9IGRhdGE7CisrCVNvdXBXZWJzb2NrZXRDb25u ZWN0aW9uICpyZWNlaXZlcjsKKysJU291cFdlYnNvY2tldENvbm5lY3Rpb24gKnNlbmRlcjsKKysJ R0Vycm9yICplcnJvciA9IE5VTEw7CisrCUdJT1N0cmVhbSAqaW87CisrCWd1bG9uZyBlcnJvcl9p ZDsKKysJZ2Jvb2xlYW4gY2xvc2VfZXZlbnQgPSBGQUxTRTsKKysKKysJaWYgKGNvbmZpZy0+c2Vy dmVyX3JlY2VpdmVzKSB7CisrCQlyZWNlaXZlciA9IHRlc3QtPnNlcnZlcjsKKysJCXNlbmRlciA9 IHRlc3QtPmNsaWVudDsKKysJfSBlbHNlIHsKKysJCXJlY2VpdmVyID0gdGVzdC0+Y2xpZW50Owor KwkJc2VuZGVyID0gdGVzdC0+c2VydmVyOworKwl9CisrCisrCWdfc2lnbmFsX2hhbmRsZXJzX2Rp c2Nvbm5lY3RfYnlfZnVuYyAocmVjZWl2ZXIsIG9uX2Vycm9yX25vdF9yZWFjaGVkLCBOVUxMKTsK KysJZXJyb3JfaWQgPSBnX3NpZ25hbF9jb25uZWN0IChyZWNlaXZlciwgImVycm9yIiwgR19DQUxM QkFDSyAob25fZXJyb3JfY29weSksICZlcnJvcik7CisrCWdfc2lnbmFsX2Nvbm5lY3QgKHNlbmRl ciwgImNsb3NlZCIsIEdfQ0FMTEJBQ0sgKG9uX2Nsb3NlX3NldF9mbGFnKSwgJmNsb3NlX2V2ZW50 KTsKKysKKysJaW8gPSBzb3VwX3dlYnNvY2tldF9jb25uZWN0aW9uX2dldF9pb19zdHJlYW0gKHNl bmRlcik7CisrCXdyaXRlX292ZXJzaXplZF9jb250cm9sX2ZyYW1lX2hlYWRlciAoaW8sIGNvbmZp Zy0+bGVuZ3RoX2luZGljYXRvciwKKysJCQkJCSAgICAgIGNvbmZpZy0+c2VydmVyX3JlY2VpdmVz KTsKKysJd2FpdF9mb3Jfd2Vic29ja2V0X2Vycm9yICgmZXJyb3IpOworKwlnX2Fzc2VydF9lcnJv ciAoZXJyb3IsIFNPVVBfV0VCU09DS0VUX0VSUk9SLCBTT1VQX1dFQlNPQ0tFVF9DTE9TRV9QUk9U T0NPTF9FUlJPUik7CisrCWdfY2xlYXJfZXJyb3IgKCZlcnJvcik7CisrCWdfc2lnbmFsX2hhbmRs ZXJfZGlzY29ubmVjdCAocmVjZWl2ZXIsIGVycm9yX2lkKTsKKysKKysJV0FJVF9VTlRJTCAoc291 cF93ZWJzb2NrZXRfY29ubmVjdGlvbl9nZXRfc3RhdGUgKHNlbmRlcikgPT0gU09VUF9XRUJTT0NL RVRfU1RBVEVfQ0xPU0VEKTsKKysJZ19hc3NlcnRfdHJ1ZSAoY2xvc2VfZXZlbnQpOworKwlnX2Fz c2VydF9jbXB1aW50IChzb3VwX3dlYnNvY2tldF9jb25uZWN0aW9uX2dldF9jbG9zZV9jb2RlIChz ZW5kZXIpLCA9PSwKKysJCQkgIFNPVVBfV0VCU09DS0VUX0NMT1NFX1BST1RPQ09MX0VSUk9SKTsK Kyt9CisrCisrc3RhdGljIGNvbnN0IE92ZXJzaXplZENvbnRyb2xGcmFtZVRlc3Qgb3ZlcnNpemVk X2NvbnRyb2xfZnJhbWVfMTZfc2VydmVyID0geyAxMjYsIFRSVUUgfTsKKytzdGF0aWMgY29uc3Qg T3ZlcnNpemVkQ29udHJvbEZyYW1lVGVzdCBvdmVyc2l6ZWRfY29udHJvbF9mcmFtZV82NF9zZXJ2 ZXIgPSB7IDEyNywgVFJVRSB9OworK3N0YXRpYyBjb25zdCBPdmVyc2l6ZWRDb250cm9sRnJhbWVU ZXN0IG92ZXJzaXplZF9jb250cm9sX2ZyYW1lXzE2X2NsaWVudCA9IHsgMTI2LCBGQUxTRSB9Owor K3N0YXRpYyBjb25zdCBPdmVyc2l6ZWRDb250cm9sRnJhbWVUZXN0IG92ZXJzaXplZF9jb250cm9s X2ZyYW1lXzY0X2NsaWVudCA9IHsgMTI3LCBGQUxTRSB9OworKworIHN0YXRpYyBjb25zdCBjaGFy ICpuZWdvdGlhdGVfY2xpZW50X3Byb3RvY29sc1tdID0geyAiYmJiIiwgImNjYyIsIE5VTEwgfTsK KyBzdGF0aWMgY29uc3QgY2hhciAqbmVnb3RpYXRlX3NlcnZlcl9wcm90b2NvbHNbXSA9IHsgImFh YSIsICJiYmIiLCAiY2NjIiwgTlVMTCB9OworIHN0YXRpYyBjb25zdCBjaGFyICpuZWdvdGlhdGVk X3Byb3RvY29sID0gImJiYiI7CitAQCAtMjU3NCw2ICsyNjY2LDI3IEBAIG1haW4gKGludCBhcmdj LAorIAkJICAgIHRlc3Rfc2VuZF9iYWRfZGF0YSwKKyAJCSAgICB0ZWFyZG93bl9zb3VwX2Nvbm5l Y3Rpb24pOworIAorKwlnX3Rlc3RfYWRkICgiL3dlYnNvY2tldC9kaXJlY3Qvc2VydmVyLXJlY2Vp dmUtb3ZlcnNpemVkLWNvbnRyb2wtZnJhbWUvMTYtYml0IiwKKysJCSAgICBUZXN0LCAmb3ZlcnNp emVkX2NvbnRyb2xfZnJhbWVfMTZfc2VydmVyLAorKwkJICAgIHNldHVwX2RpcmVjdF9jb25uZWN0 aW9uLAorKwkJICAgIHRlc3RfcmVjZWl2ZV9vdmVyc2l6ZWRfY29udHJvbF9mcmFtZSwKKysJCSAg ICB0ZWFyZG93bl9kaXJlY3RfY29ubmVjdGlvbik7CisrCWdfdGVzdF9hZGQgKCIvd2Vic29ja2V0 L2RpcmVjdC9zZXJ2ZXItcmVjZWl2ZS1vdmVyc2l6ZWQtY29udHJvbC1mcmFtZS82NC1iaXQiLAor KwkJICAgIFRlc3QsICZvdmVyc2l6ZWRfY29udHJvbF9mcmFtZV82NF9zZXJ2ZXIsCisrCQkgICAg c2V0dXBfZGlyZWN0X2Nvbm5lY3Rpb24sCisrCQkgICAgdGVzdF9yZWNlaXZlX292ZXJzaXplZF9j b250cm9sX2ZyYW1lLAorKwkJICAgIHRlYXJkb3duX2RpcmVjdF9jb25uZWN0aW9uKTsKKysJZ190 ZXN0X2FkZCAoIi93ZWJzb2NrZXQvZGlyZWN0L2NsaWVudC1yZWNlaXZlLW92ZXJzaXplZC1jb250 cm9sLWZyYW1lLzE2LWJpdCIsCisrCQkgICAgVGVzdCwgJm92ZXJzaXplZF9jb250cm9sX2ZyYW1l XzE2X2NsaWVudCwKKysJCSAgICBzZXR1cF9kaXJlY3RfY29ubmVjdGlvbiwKKysJCSAgICB0ZXN0 X3JlY2VpdmVfb3ZlcnNpemVkX2NvbnRyb2xfZnJhbWUsCisrCQkgICAgdGVhcmRvd25fZGlyZWN0 X2Nvbm5lY3Rpb24pOworKwlnX3Rlc3RfYWRkICgiL3dlYnNvY2tldC9kaXJlY3QvY2xpZW50LXJl Y2VpdmUtb3ZlcnNpemVkLWNvbnRyb2wtZnJhbWUvNjQtYml0IiwKKysJCSAgICBUZXN0LCAmb3Zl cnNpemVkX2NvbnRyb2xfZnJhbWVfNjRfY2xpZW50LAorKwkJICAgIHNldHVwX2RpcmVjdF9jb25u ZWN0aW9uLAorKwkJICAgIHRlc3RfcmVjZWl2ZV9vdmVyc2l6ZWRfY29udHJvbF9mcmFtZSwKKysJ CSAgICB0ZWFyZG93bl9kaXJlY3RfY29ubmVjdGlvbik7CisrCisgCWdfdGVzdF9hZGQgKCIvd2Vi c29ja2V0L2RpcmVjdC9jbG9zZS1jbGVhbi1jbGllbnQiLCBUZXN0LCBOVUxMLCBOVUxMLAorIAkJ ICAgIHRlc3RfY2xvc2VfY2xlYW5fY2xpZW50X2RpcmVjdCwKKyAJCSAgICBOVUxMKTsKKy0tIAor R2l0TGFiCisKCmRpZmYgLS1naXQgYS9DVkUtMjAyNi0xNTcxMi5wYXRjaCBiL0NWRS0yMDI2LTE1 NzEyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2MTZkZWMKLS0t IC9kZXYvbnVsbAorKysgYi9DVkUtMjAyNi0xNTcxMi5wYXRjaApAQCAtMCwwICsxLDM4IEBACitG cm9tIDNhNmZiNTZhMGNiYTQyZDExZjVmZDFkYjZkZWRjYzdjMmU5Mjc1N2IgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCitGcm9tOiBNaWtlIEdvcnNlIDxtZ29yc2VAc3VzZS5jb20+CitEYXRlOiBG cmksIDQgU2VwIDIwMjYgMTQ6MDU6MDQgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gaHR0cDI6IERv bid0IGFzc3VtZSB0aGF0IEdPQVdBWSBvcGFxdWUgZGF0YSBpcyBOVUwtdGVybWluYXRlZAorCitu Z2h0dHAyIGFsbG9jYXRlcyBmcmFtZS0+Z29hd2F5Lm9wYXF1ZV9kYXRhIHdpdGggZXhhY3RseSBv cGFxdWVfZGF0YV9sZW4KK2J5dGVzIGFuZCBubyB0ZXJtaW5hdG9yLCBzbyBwYXNzaW5nIGl0IHRv IGEgIiVzIiBmb3JtYXQgaW4gaDJfZGVidWcoKQorcmVhZHMgcGFzdCB0aGUgZW5kIG9mIHRoZSBi dWZmZXIgd2hlbiBkZWJ1ZyBsb2dnaW5nIGlzIGVuYWJsZWQuCisKK1VzZSAiJS4qcyIgd2l0aCBv cGFxdWVfZGF0YV9sZW4gYXMgdGhlIHByZWNpc2lvbiBzbyB0aGUgcmVhZCBpcyBib3VuZGVkCit3 aXRob3V0IGFsbG9jYXRpbmcgYSBjb3B5LgorCitDbG9zZXMgIzU0MAorLS0tCisgbGlic291cC9o dHRwMi9zb3VwLWNsaWVudC1tZXNzYWdlLWlvLWh0dHAyLmMgfCA1ICsrKy0tCisgMSBmaWxlIGNo YW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xp YnNvdXAvaHR0cDIvc291cC1jbGllbnQtbWVzc2FnZS1pby1odHRwMi5jIGIvbGlic291cC9odHRw Mi9zb3VwLWNsaWVudC1tZXNzYWdlLWlvLWh0dHAyLmMKK2luZGV4IGFiNTIwMDNkLi5iNjc0Mjky NCAxMDA2NDQKKy0tLSBhL2xpYnNvdXAvaHR0cDIvc291cC1jbGllbnQtbWVzc2FnZS1pby1odHRw Mi5jCisrKysgYi9saWJzb3VwL2h0dHAyL3NvdXAtY2xpZW50LW1lc3NhZ2UtaW8taHR0cDIuYwor QEAgLTgxMywxMCArODEzLDExIEBAIG9uX2ZyYW1lX3JlY3ZfY2FsbGJhY2sgKG5naHR0cDJfc2Vz c2lvbiAgICAgKnNlc3Npb24sCisgCisgICAgICAgICAgICAgICAgIHN3aXRjaCAoZnJhbWUtPmhk LnR5cGUpIHsKKyAgICAgICAgICAgICAgICAgY2FzZSBOR0hUVFAyX0dPQVdBWToKKy0gICAgICAg ICAgICAgICAgICAgICAgICBoMl9kZWJ1ZyAoaW8sIE5VTEwsICJbUkVDVl0gR09BV0FZOiBlcnJv cj0lcywgbGFzdF9zdHJlYW1faWQ9JWQgJXMiLAorKyAgICAgICAgICAgICAgICAgICAgICAgIGgy X2RlYnVnIChpbywgTlVMTCwgIltSRUNWXSBHT0FXQVk6IGVycm9yPSVzLCBsYXN0X3N0cmVhbV9p ZD0lZCAlLipzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdodHRwMl9o dHRwMl9zdHJlcnJvciAoZnJhbWUtPmdvYXdheS5lcnJvcl9jb2RlKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmdvYXdheS5sYXN0X3N0cmVhbV9pZCwKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmdvYXdheS5vcGFxdWVfZGF0YSA/ IChjaGFyICopZnJhbWUtPmdvYXdheS5vcGFxdWVfZGF0YSA6ICIiKTsKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGludClmcmFtZS0+Z29hd2F5Lm9wYXF1ZV9kYXRhX2xlbiwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmdvYXdheS5vcGFxdWVf ZGF0YSA/IChjb25zdCBjaGFyICopZnJhbWUtPmdvYXdheS5vcGFxdWVfZGF0YSA6ICIiKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfZ29hd2F5IChpbywgZnJhbWUtPmdvYXdheS5l cnJvcl9jb2RlLCBmcmFtZS0+Z29hd2F5Lmxhc3Rfc3RyZWFtX2lkKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICBpby0+aXNfc2h1dGRvd24gPSBUUlVFOworICAgICAgICAgICAgICAgICAgICAg ICAgIHNvdXBfY2xpZW50X21lc3NhZ2VfaW9faHR0cDJfdGVybWluYXRlX3Nlc3Npb24gKGlvKTsK Ky0tIAorR2l0TGFiCisKCmRpZmYgLS1naXQgYS9DVkUtMjAyNi0xNTcxMy5wYXRjaCBiL0NWRS0y MDI2LTE1NzEzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmODRl YmIKLS0tIC9kZXYvbnVsbAorKysgYi9DVkUtMjAyNi0xNTcxMy5wYXRjaApAQCAtMCwwICsxLDE0 OCBAQAorRnJvbSAyNGZiNjQ1ZmE5NDllY2U3ZDdlMTAzNjNiNzdjZjJkNWZhMmMyNDY5IE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWlsYW4gQ3JoYSA8bWNyaGFAcmVkaGF0LmNvbT4K K0RhdGU6IEZyaSwgNCBTZXAgMjAyNiAxMDozNDoyMiArMDIwMAorU3ViamVjdDogW1BBVENIXSBj YWNoZTogUmVqZWN0IGNhY2hpbmcgYXV0aGVudGljYXRlZCByZXNwb25zZXMgaW4gc2hhcmVkCisg Y2FjaGVzCisKK1JGQyA3MjM0IFNlY3Rpb24gMy4yIGZvcmJpZHMgdG8gc2F2ZSB0byBhIHNoYXJl ZCBjYWNoZSBhIHJlc3BvbnNlIHRvCithIHJlcXVlc3QgY29udGFpbmluZyBhbiBBdXRob3JpemF0 aW9uIGhlYWRlciB1bmxlc3MgdGhlIHJlc3BvbnNlCitleHBsaWNpdGx5IGFsbG93cyBpdCB3aXRo IHB1YmxpYywgbXVzdC1yZXZhbGlkYXRlIG9yIHMtbWF4YWdlLgorCitUaGlzIGlzIENWRS0yMDI2 LTE1NzEzLgorCitDbG9zZXMgaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2xpYnNvdXAv LS93b3JrX2l0ZW1zLzU0MQorLS0tCisgbGlic291cC9jYWNoZS9zb3VwLWNhY2hlLmMgfCAxNSAr KysrKysrKysrKworIHRlc3RzL2NhY2hlLXRlc3QuYyAgICAgICAgIHwgNTUgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDcwIGluc2VydGlv bnMoKykKKworZGlmZiAtLWdpdCBhL2xpYnNvdXAvY2FjaGUvc291cC1jYWNoZS5jIGIvbGlic291 cC9jYWNoZS9zb3VwLWNhY2hlLmMKK2luZGV4IDQ3ZTFlZTcwLi41MjI1MzgyZCAxMDA2NDQKKy0t LSBhL2xpYnNvdXAvY2FjaGUvc291cC1jYWNoZS5jCisrKysgYi9saWJzb3VwL2NhY2hlL3NvdXAt Y2FjaGUuYworQEAgLTE3NCw2ICsxNzQsNyBAQCBnZXRfY2FjaGVhYmlsaXR5IChTb3VwQ2FjaGUg KmNhY2hlLCBTb3VwTWVzc2FnZSAqbXNnKQorIAlTb3VwQ2FjaGVhYmlsaXR5IGNhY2hlYWJpbGl0 eTsKKyAJY29uc3QgY2hhciAqY2FjaGVfY29udHJvbCwgKmNvbnRlbnRfdHlwZTsKKyAJZ2Jvb2xl YW4gaGFzX21heF9hZ2UgPSBGQUxTRTsKKysJZ2Jvb2xlYW4gcGVybWl0c19hdXRob3JpemVkX3No YXJlZF9jYWNoaW5nID0gRkFMU0U7CisgCisgCS8qIDEuIFRoZSByZXF1ZXN0IG1ldGhvZCBtdXN0 IGJlIGNhY2hlYWJsZSAqLworIAlpZiAoc291cF9tZXNzYWdlX2dldF9tZXRob2QgKG1zZykgPT0g U09VUF9NRVRIT0RfR0VUKQorQEAgLTIwMSw2ICsyMDIsMTEgQEAgZ2V0X2NhY2hlYWJpbGl0eSAo U291cENhY2hlICpjYWNoZSwgU291cE1lc3NhZ2UgKm1zZykKKyAJCQkJc291cF9oZWFkZXJfZnJl ZV9wYXJhbV9saXN0IChoYXNoKTsKKyAJCQkJcmV0dXJuIFNPVVBfQ0FDSEVfVU5DQUNIRUFCTEU7 CisgCQkJfQorKworKwkJCXBlcm1pdHNfYXV0aG9yaXplZF9zaGFyZWRfY2FjaGluZyA9CisrCQkJ CWdfaGFzaF90YWJsZV9sb29rdXBfZXh0ZW5kZWQgKGhhc2gsICJwdWJsaWMiLCBOVUxMLCBOVUxM KSB8fAorKwkJCQlnX2hhc2hfdGFibGVfbG9va3VwX2V4dGVuZGVkIChoYXNoLCAibXVzdC1yZXZh bGlkYXRlIiwgTlVMTCwgTlVMTCkgfHwKKysJCQkJZ19oYXNoX3RhYmxlX2xvb2t1cF9leHRlbmRl ZCAoaGFzaCwgInMtbWF4YWdlIiwgTlVMTCwgTlVMTCk7CisgCQl9CisgCisgCQkvKiAyLiBUaGUg J25vLXN0b3JlJyBjYWNoZSBkaXJlY3RpdmUgZG9lcyBub3QgYXBwZWFyIGluIHRoZQorQEAgLTIy NSw2ICsyMzEsMTUgQEAgZ2V0X2NhY2hlYWJpbGl0eSAoU291cENhY2hlICpjYWNoZSwgU291cE1l c3NhZ2UgKm1zZykKKyAJCXNvdXBfaGVhZGVyX2ZyZWVfcGFyYW1fbGlzdCAoaGFzaCk7CisgCX0K KyAKKysJLyogUkZDIDcyMzQgU2VjdGlvbiAzLjI6IGEgc2hhcmVkIGNhY2hlIE1VU1QgTk9UIHN0 b3JlIGEgcmVzcG9uc2UgdG8KKysJICogYSByZXF1ZXN0IGNvbnRhaW5pbmcgYW4gQXV0aG9yaXph dGlvbiBoZWFkZXIgdW5sZXNzIHRoZSByZXNwb25zZQorKwkgKiBleHBsaWNpdGx5IGFsbG93cyBp dCB3aXRoIHB1YmxpYywgbXVzdC1yZXZhbGlkYXRlIG9yIHMtbWF4YWdlLgorKwkgKi8KKysJaWYg KHByaXYtPmNhY2hlX3R5cGUgPT0gU09VUF9DQUNIRV9TSEFSRUQgJiYKKysJICAgICFwZXJtaXRz X2F1dGhvcml6ZWRfc2hhcmVkX2NhY2hpbmcgJiYKKysJICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJz X2dldF9vbmVfY29tbW9uIChzb3VwX21lc3NhZ2VfZ2V0X3JlcXVlc3RfaGVhZGVycyAobXNnKSwg U09VUF9IRUFERVJfQVVUSE9SSVpBVElPTikpCisrCQlyZXR1cm4gU09VUF9DQUNIRV9VTkNBQ0hF QUJMRTsKKysKKyAJLyogU2VjdGlvbiAxMy45ICovCisgCWlmICgoZ191cmlfZ2V0X3F1ZXJ5IChz b3VwX21lc3NhZ2VfZ2V0X3VyaSAobXNnKSkpICYmCisgCSAgICAhc291cF9tZXNzYWdlX2hlYWRl cnNfZ2V0X29uZV9jb21tb24gKHNvdXBfbWVzc2FnZV9nZXRfcmVzcG9uc2VfaGVhZGVycyAobXNn KSwgU09VUF9IRUFERVJfRVhQSVJFUykgJiYKK2RpZmYgLS1naXQgYS90ZXN0cy9jYWNoZS10ZXN0 LmMgYi90ZXN0cy9jYWNoZS10ZXN0LmMKK2luZGV4IGVmMmViZWIzLi5kZmY2YmQzNSAxMDA2NDQK Ky0tLSBhL3Rlc3RzL2NhY2hlLXRlc3QuYworKysrIGIvdGVzdHMvY2FjaGUtdGVzdC5jCitAQCAt OTUsNiArOTUsNyBAQCBzZXJ2ZXJfY2FsbGJhY2sgKFNvdXBTZXJ2ZXIgICAgICAgICpzZXJ2ZXIs CisgCWlmIChzdGF0dXMgPT0gU09VUF9TVEFUVVNfT0spIHsKKyAJCUdDaGVja3N1bSAqc3VtOwor IAkJY29uc3QgY2hhciAqYm9keTsKKysJCWNvbnN0IGNoYXIgKmF1dGhvcml6YXRpb247CisgCisg CQlzdW0gPSBnX2NoZWNrc3VtX25ldyAoR19DSEVDS1NVTV9TSEEyNTYpOworIAkJZ19jaGVja3N1 bV91cGRhdGUgKHN1bSwgKGd1Y2hhciAqKXBhdGgsIHN0cmxlbiAocGF0aCkpOworQEAgLTEwMiw2 ICsxMDMsOSBAQCBzZXJ2ZXJfY2FsbGJhY2sgKFNvdXBTZXJ2ZXIgICAgICAgICpzZXJ2ZXIsCisg CQkJZ19jaGVja3N1bV91cGRhdGUgKHN1bSwgKGd1Y2hhciAqKWxhc3RfbW9kaWZpZWQsIHN0cmxl biAobGFzdF9tb2RpZmllZCkpOworIAkJaWYgKGV0YWcpCisgCQkJZ19jaGVja3N1bV91cGRhdGUg KHN1bSwgKGd1Y2hhciAqKWV0YWcsIHN0cmxlbiAoZXRhZykpOworKwkJYXV0aG9yaXphdGlvbiA9 IHNvdXBfbWVzc2FnZV9oZWFkZXJzX2dldF9vbmUgKHJlcXVlc3RfaGVhZGVycywgIkF1dGhvcml6 YXRpb24iKTsKKysJCWlmIChhdXRob3JpemF0aW9uKQorKwkJCWdfY2hlY2tzdW1fdXBkYXRlIChz dW0sIChndWNoYXIgKilhdXRob3JpemF0aW9uLCBzdHJsZW4gKGF1dGhvcml6YXRpb24pKTsKKyAJ CWJvZHkgPSBnX2NoZWNrc3VtX2dldF9zdHJpbmcgKHN1bSk7CisgCQlzb3VwX3NlcnZlcl9tZXNz YWdlX3NldF9yZXNwb25zZSAobXNnLCAidGV4dC9wbGFpbiIsCisgCQkJCQkJICBTT1VQX01FTU9S WV9DT1BZLAorQEAgLTczNiw2ICs3NDAsNTYgQEAgZG9fbGVha3NfdGVzdCAoZ2NvbnN0cG9pbnRl ciBkYXRhKQorIAlnX2ZyZWUgKGNhY2hlX2Rpcik7CisgfQorIAorK3N0YXRpYyB2b2lkCisrZG9f c2hhcmVkX2NhY2hlX2F1dGhvcml6YXRpb25fdGVzdCAoZ2NvbnN0cG9pbnRlciBkYXRhKQorK3sK KysJR1VyaSAqYmFzZV91cmkgPSAoR1VyaSAqKWRhdGE7CisrCVNvdXBTZXNzaW9uICphdHRhY2tl cl9zZXNzaW9uOworKwlTb3VwU2Vzc2lvbiAqdmljdGltX3Nlc3Npb247CisrCVNvdXBDYWNoZSAq YXR0YWNrZXJfY2FjaGU7CisrCVNvdXBDYWNoZSAqdmljdGltX2NhY2hlOworKwljaGFyICpjYWNo ZV9kaXI7CisrCWNoYXIgKmF0dGFja2VyX2JvZHk7CisrCWNoYXIgKnZpY3RpbV9ib2R5OworKwor KwljYWNoZV9kaXIgPSBnX2Rpcl9tYWtlX3RtcCAoImNhY2hlLXRlc3QtWFhYWFhYIiwgTlVMTCk7 CisrCWRlYnVnX3ByaW50ZiAoMiwgIiAgQ2FjaGluZyB0byAlc1xuIiwgY2FjaGVfZGlyKTsKKysK KysJYXR0YWNrZXJfY2FjaGUgPSBzb3VwX2NhY2hlX25ldyAoY2FjaGVfZGlyLCBTT1VQX0NBQ0hF X1NIQVJFRCk7CisrCWF0dGFja2VyX3Nlc3Npb24gPSBzb3VwX3Rlc3Rfc2Vzc2lvbl9uZXcgKE5V TEwpOworKwlzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmUgKGF0dGFja2VyX3Nlc3Npb24sIFNPVVBf U0VTU0lPTl9GRUFUVVJFIChhdHRhY2tlcl9jYWNoZSkpOworKworKwlhdHRhY2tlcl9ib2R5ID0g ZG9fcmVxdWVzdCAoYXR0YWNrZXJfc2Vzc2lvbiwgYmFzZV91cmksICJHRVQiLCAiL2F1dGh6LXNo YXJlZC1jYWNoZSIsIE5VTEwsCisrCQkJCSAgICAiQXV0aG9yaXphdGlvbiIsICJCZWFyZXIgQVRU QUNLRVJfU0VDUkVUIiwKKysJCQkJICAgICJUZXN0LVNldC1DYWNoZS1Db250cm9sIiwgIm1heC1h Z2U9NjAwIiwKKysJCQkJICAgIE5VTEwpOworKwlnX2Fzc2VydF90cnVlIChsYXN0X3JlcXVlc3Rf aGl0X25ldHdvcmspOworKworKwlzb3VwX2NhY2hlX2R1bXAgKGF0dGFja2VyX2NhY2hlKTsKKysJ c291cF90ZXN0X3Nlc3Npb25fYWJvcnRfdW5yZWYgKGF0dGFja2VyX3Nlc3Npb24pOworKwlnX29i amVjdF91bnJlZiAoYXR0YWNrZXJfY2FjaGUpOworKworKwl2aWN0aW1fY2FjaGUgPSBzb3VwX2Nh Y2hlX25ldyAoY2FjaGVfZGlyLCBTT1VQX0NBQ0hFX1NIQVJFRCk7CisrCXNvdXBfY2FjaGVfbG9h ZCAodmljdGltX2NhY2hlKTsKKysJdmljdGltX3Nlc3Npb24gPSBzb3VwX3Rlc3Rfc2Vzc2lvbl9u ZXcgKE5VTEwpOworKwlzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmUgKHZpY3RpbV9zZXNzaW9uLCBT T1VQX1NFU1NJT05fRkVBVFVSRSAodmljdGltX2NhY2hlKSk7CisrCisrCXZpY3RpbV9ib2R5ID0g ZG9fcmVxdWVzdCAodmljdGltX3Nlc3Npb24sIGJhc2VfdXJpLCAiR0VUIiwgIi9hdXRoei1zaGFy ZWQtY2FjaGUiLCBOVUxMLAorKwkJCQkgICJBdXRob3JpemF0aW9uIiwgIkJlYXJlciBWSUNUSU1f U0VDUkVUIiwKKysJCQkJICAiVGVzdC1TZXQtQ2FjaGUtQ29udHJvbCIsICJtYXgtYWdlPTYwMCIs CisrCQkJCSAgTlVMTCk7CisrCisrCWdfYXNzZXJ0X3RydWUgKGxhc3RfcmVxdWVzdF9oaXRfbmV0 d29yayk7CisrCWdfYXNzZXJ0X2NtcHN0ciAoYXR0YWNrZXJfYm9keSwgIT0sIHZpY3RpbV9ib2R5 KTsKKysKKysJZ19mcmVlIChhdHRhY2tlcl9ib2R5KTsKKysJZ19mcmVlICh2aWN0aW1fYm9keSk7 CisrCisrCXNvdXBfdGVzdF9zZXNzaW9uX2Fib3J0X3VucmVmICh2aWN0aW1fc2Vzc2lvbik7Cisr CWdfb2JqZWN0X3VucmVmICh2aWN0aW1fY2FjaGUpOworKwlnX2ZyZWUgKGNhY2hlX2Rpcik7Cisr fQorKworIHN0YXRpYyB2b2lkCisgZG9fbWV0cmljc190ZXN0IChnY29uc3Rwb2ludGVyIGRhdGEp CisgeworQEAgLTExMDgsNiArMTE2Miw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikK KyAJZ190ZXN0X2FkZF9kYXRhX2Z1bmMgKCIvY2FjaGUvY2FuY2VsbGF0aW9uIiwgYmFzZV91cmks IGRvX2NhbmNlbF90ZXN0KTsKKyAJZ190ZXN0X2FkZF9kYXRhX2Z1bmMgKCIvY2FjaGUvcmVmY291 bnRpbmciLCBiYXNlX3VyaSwgZG9fcmVmY291bnRpbmdfdGVzdCk7CisgCWdfdGVzdF9hZGRfZGF0 YV9mdW5jICgiL2NhY2hlL2hlYWRlcnMiLCBiYXNlX3VyaSwgZG9faGVhZGVyc190ZXN0KTsKKysJ Z190ZXN0X2FkZF9kYXRhX2Z1bmMgKCIvY2FjaGUvc2hhcmVkLWNhY2hlLWF1dGhvcml6YXRpb24i LCBiYXNlX3VyaSwgZG9fc2hhcmVkX2NhY2hlX2F1dGhvcml6YXRpb25fdGVzdCk7CisgCWdfdGVz dF9hZGRfZGF0YV9mdW5jICgiL2NhY2hlL2xlYWtzIiwgYmFzZV91cmksIGRvX2xlYWtzX3Rlc3Qp OworICAgICAgICAgZ190ZXN0X2FkZF9kYXRhX2Z1bmMgKCIvY2FjaGUvbWV0cmljcyIsIGJhc2Vf dXJpLCBkb19tZXRyaWNzX3Rlc3QpOworICAgICAgICAgZ190ZXN0X2FkZF9kYXRhX2Z1bmMgKCIv Y2FjaGUvdGhyZWFkcyIsIGJhc2VfdXJpLCBkb190aHJlYWRzX3Rlc3QpOworLS0gCitHaXRMYWIK KwoKZGlmZiAtLWdpdCBhL0NWRS0yMDI2LTE1NzE0LnBhdGNoIGIvQ1ZFLTIwMjYtMTU3MTQucGF0 Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDUxZjc2NwotLS0gL2Rldi9u dWxsCisrKyBiL0NWRS0yMDI2LTE1NzE0LnBhdGNoCkBAIC0wLDAgKzEsMTIxIEBACitGcm9tIDc5 YTUyY2FkYzQ5MDM2MGUyNDljYzJiMjMwMzhkNTMyYjQ0ZGJmMjMgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCitGcm9tOiBNaWtlIEdvcnNlIDxtZ29yc2VAc3VzZS5jb20+CitEYXRlOiBGcmksIDQg U2VwIDIwMjYgMTQ6MTA6NDYgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gbXVsdGlwYXJ0OiBGaXgg b3V0LW9mLWJvdW5kcyByZWFkIGluIGNhc2Ugb2YgYW4gZXhjZXNzaXZlbHkKKyBsb25nIGJvdW5k YXJ5CisKK3NvdXBfbXVsdGlwYXJ0X2lucHV0X3N0cmVhbV9yZWFkX2hlYWRlcnMoKSBjb21wYXJl ZCBtZXRhX2J1ZiBhZ2FpbnN0IHRoZQorYm91bmRhcnkgdXNpbmcgdGhlIGJvdW5kYXJ5IGxlbmd0 aCB3aXRob3V0IGNoZWNraW5nIHRoYXQgbWV0YV9idWYgaGVsZAordGhhdCBtYW55IGJ5dGVzLCBz byBhIHNlcnZlciBzZW5kaW5nIGEgYm91bmRhcnkgbG9uZ2VyIHRoYW4gdGhlIHJlYWQKK2J1ZmZl ciBjb3VsZCBtYWtlIHN0cm5jbXAoKSByZWFkIHBhc3QgdGhlIGVuZCBvZiB0aGUgYWxsb2NhdGlv bi4gSXQgYWxzbworY29tcHV0ZWQgcmVhZF9idWYgKyBucmVhZCAtIDQgYmVmb3JlIHZlcmlmeWlu ZyBucmVhZCB3YXMgbGFyZ2UgZW5vdWdoLAorYW5kIGFzc2VydGVkIHJhdGhlciB0aGFuIGZhaWxp bmcgd2hlbiBhIGxpbmUgZGlkIG5vdCBlbmQgaW4gYSBuZXdsaW5lLgorCitPbmx5IGNvbXBhcmUg b25jZSBlbm91Z2ggYnl0ZXMgaGF2ZSBiZWVuIHJlYWQsIGluZGV4IHJlYWRfYnVmIGFmdGVyIHRo ZQorbGVuZ3RoIGNoZWNrcywgYW5kIHRyZWF0IGFuIHVudGVybWluYXRlZCBsaW5lIGFzIGVuZCBv ZiBwYXJzaW5nLgorCitDbG9zZXMgITU0NgorLS0tCisgbGlic291cC9zb3VwLW11bHRpcGFydC1p bnB1dC1zdHJlYW0uYyB8IDEyICsrKystLS0tLQorIHRlc3RzL211bHRpcGFydC10ZXN0LmMgICAg ICAgICAgICAgICAgfCAzNyArKysrKysrKysrKysrKysrKysrKysrKysrKysKKyAyIGZpbGVzIGNo YW5nZWQsIDQzIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9s aWJzb3VwL3NvdXAtbXVsdGlwYXJ0LWlucHV0LXN0cmVhbS5jIGIvbGlic291cC9zb3VwLW11bHRp cGFydC1pbnB1dC1zdHJlYW0uYworaW5kZXggYjdmMWVkNzIuLjIyY2NlMTAyIDEwMDY0NAorLS0t IGEvbGlic291cC9zb3VwLW11bHRpcGFydC1pbnB1dC1zdHJlYW0uYworKysrIGIvbGlic291cC9z b3VwLW11bHRpcGFydC1pbnB1dC1zdHJlYW0uYworQEAgLTM2MSw3ICszNjEsNiBAQCBzb3VwX211 bHRpcGFydF9pbnB1dF9zdHJlYW1fcmVhZF9oZWFkZXJzIChTb3VwTXVsdGlwYXJ0SW5wdXRTdHJl YW0gICptdWx0aXBhcnQsCisgeworIAlTb3VwTXVsdGlwYXJ0SW5wdXRTdHJlYW1Qcml2YXRlICpw cml2ID0gc291cF9tdWx0aXBhcnRfaW5wdXRfc3RyZWFtX2dldF9pbnN0YW5jZV9wcml2YXRlICht dWx0aXBhcnQpOworIAlndWNoYXIgcmVhZF9idWZbUkVTUE9OU0VfQkxPQ0tfU0laRV07CistCWd1 Y2hhciAqYnVmOworIAlnYm9vbGVhbiBnb3RfYm91bmRhcnkgPSBGQUxTRTsKKyAJZ2Jvb2xlYW4g Z290X2xmID0gRkFMU0U7CisgCWdzc2l6ZSBucmVhZCA9IDA7CitAQCAtMzgzLDIyICszODIsMjMg QEAgc291cF9tdWx0aXBhcnRfaW5wdXRfc3RyZWFtX3JlYWRfaGVhZGVycyAoU291cE11bHRpcGFy dElucHV0U3RyZWFtICAqbXVsdGlwYXJ0LAorIAkJICogbWF5IGdldCB0aGUgbXVsdGlwYXJ0IGVu ZCBpbmRpY2F0b3Igd2l0aG91dCBnZXR0aW5nIGEgbmV3IGxpbmUuCisgCQkgKi8KKyAJCWlmICgh Z290X2JvdW5kYXJ5ICYmCisrCQkgICAgcHJpdi0+bWV0YV9idWYtPmxlbiA+PSBwcml2LT5ib3Vu ZGFyeV9zaXplICYmCisgCQkgICAgIXN0cm5jbXAgKChjaGFyICopcHJpdi0+bWV0YV9idWYtPmRh dGEsCisgCQkJICAgICAgcHJpdi0+Ym91bmRhcnksCisgCQkJICAgICAgcHJpdi0+Ym91bmRhcnlf c2l6ZSkpIHsKKyAJCQlnb3RfYm91bmRhcnkgPSBUUlVFOworIAorIAkJCS8qIE5vdyBjaGVjayBm b3IgcG9zc2libGUgbXVsdGlwYXJ0IHRlcm1pbmF0aW9uLiAqLworLQkJCWJ1ZiA9ICZyZWFkX2J1 ZltucmVhZCAtIDRdOworLQkJCWlmICgobnJlYWQgPj0gNCAmJiAhbWVtY21wIChidWYsICItLVxy XG4iLCA0KSkgfHwKKy0JCQkgICAgKG5yZWFkID49IDMgJiYgIW1lbWNtcCAoYnVmICsgMSwgIi0t XG4iLCAzKSkgfHwKKy0JCQkgICAgKG5yZWFkID49IDMgJiYgIW1lbWNtcCAoYnVmICsgMiwgIi0t IiwgMikpKSB7CisrCQkJaWYgKChucmVhZCA+PSA0ICYmICFtZW1jbXAgKHJlYWRfYnVmICsgbnJl YWQgLSA0LCAiLS1cclxuIiwgNCkpIHx8CisrCQkJICAgIChucmVhZCA+PSAzICYmICFtZW1jbXAg KHJlYWRfYnVmICsgbnJlYWQgLSAzLCAiLS1cbiIsIDMpKSB8fAorKwkJCSAgICAobnJlYWQgPj0g MyAmJiAhbWVtY21wIChyZWFkX2J1ZiArIG5yZWFkIC0gMiwgIi0tIiwgMikpKSB7CisgCQkJCWdf Ynl0ZV9hcnJheV9zZXRfc2l6ZSAocHJpdi0+bWV0YV9idWYsIDApOworIAkJCQlyZXR1cm4gRkFM U0U7CisgCQkJfQorIAkJfQorIAorLQkJZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGdvdF9sZiwgRkFM U0UpOworKwkJaWYgKCFnb3RfbGYpCisrCQkJcmV0dXJuIEZBTFNFOworIAorIAkJLyogRGlzY2Fy ZCBwcmUtYm91bmRhcnkgbGluZXMuICovCisgCQlpZiAoIWdvdF9ib3VuZGFyeSkgeworZGlmZiAt LWdpdCBhL3Rlc3RzL211bHRpcGFydC10ZXN0LmMgYi90ZXN0cy9tdWx0aXBhcnQtdGVzdC5jCitp bmRleCBiMWJmNWJiOC4uYTU5OGExYzggMTAwNjQ0CistLS0gYS90ZXN0cy9tdWx0aXBhcnQtdGVz dC5jCisrKysgYi90ZXN0cy9tdWx0aXBhcnQtdGVzdC5jCitAQCAtNTk2LDYgKzU5Niw0MiBAQCB0 ZXN0X211bHRpcGFydF9ib3VuZHNfYmFkXzMgKHZvaWQpCisgICAgICAgICBnX29iamVjdF91bnJl ZiAobXNnKTsKKyB9CisgCisrc3RhdGljIHZvaWQKKyt0ZXN0X211bHRpcGFydF9ib3VuZHNfYmFk XzQgKHZvaWQpCisreworKyAgICAgICAgU291cE1lc3NhZ2UgKm1zZzsKKysgICAgICAgIFNvdXBN ZXNzYWdlSGVhZGVycyAqaGVhZGVyczsKKysgICAgICAgIEdJbnB1dFN0cmVhbSAqaW47CisrICAg ICAgICBHSW5wdXRTdHJlYW0gKm5leHRfcGFydDsKKysgICAgICAgIFNvdXBNdWx0aXBhcnRJbnB1 dFN0cmVhbSAqbXVsdGlwYXJ0OworKyAgICAgICAgR0Vycm9yICplcnJvciA9IE5VTEw7CisrICAg ICAgICBnY2hhciAqYm91bmRhcnk7CisrICAgICAgICBnY2hhciAqY29udGVudF90eXBlOworKyAg ICAgICAgZ2NoYXIgKnJhd19kYXRhOworKworKyAgICAgICAgYm91bmRhcnkgPSBnX25ldyAoZ2No YXIsIDIwMDAxKTsKKysgICAgICAgIG1lbXNldCAoYm91bmRhcnksICdhJywgMjAwMDApOworKyAg ICAgICAgYm91bmRhcnlbMjAwMDBdID0gJ1wwJzsKKysKKysgICAgICAgIG1zZyA9IHNvdXBfbWVz c2FnZV9uZXcoU09VUF9NRVRIT0RfUE9TVCwgImh0dHA6Ly9mb28vdXBsb2FkIik7CisrICAgICAg ICBoZWFkZXJzID0gc291cF9tZXNzYWdlX2dldF9yZXNwb25zZV9oZWFkZXJzIChtc2cpOworKyAg ICAgICAgY29udGVudF90eXBlID0gZ19zdHJjb25jYXQgKCJtdWx0aXBhcnQvZm9ybS1kYXRhOyBi b3VuZGFyeT1cIiIsIGJvdW5kYXJ5LCAiXCIiLCBOVUxMKTsKKysgICAgICAgIHNvdXBfbWVzc2Fn ZV9oZWFkZXJzX3JlcGxhY2UgKGhlYWRlcnMsICJDb250ZW50LVR5cGUiLCBjb250ZW50X3R5cGUp OworKworKyAgICAgICAgcmF3X2RhdGEgPSBnX3N0cmNvbmNhdCAoIi0tIiwgYm91bmRhcnksICJc clxuQ29udGVudC1UeXBlOiB0ZXh0LXBsYWluXHJcblxyXG5YXHJcbiIsIE5VTEwpOworKyAgICAg ICAgaW4gPSBnX21lbW9yeV9pbnB1dF9zdHJlYW1fbmV3X2Zyb21fZGF0YSAocmF3X2RhdGEsIHN0 cmxlbiAocmF3X2RhdGEpLCBOVUxMKTsKKysgICAgICAgIG11bHRpcGFydCA9IHNvdXBfbXVsdGlw YXJ0X2lucHV0X3N0cmVhbV9uZXcgKG1zZywgaW4pOworKyAgICAgICAgZ19vYmplY3RfdW5yZWYg KGluKTsKKysgICAgICAgIG5leHRfcGFydCA9IHNvdXBfbXVsdGlwYXJ0X2lucHV0X3N0cmVhbV9u ZXh0X3BhcnQgKG11bHRpcGFydCwgTlVMTCwgJmVycm9yKTsKKysgICAgICAgIGdfYXNzZXJ0X25v X2Vycm9yIChlcnJvcik7CisrICAgICAgICBnX2Fzc2VydF9udWxsIChuZXh0X3BhcnQpOworKyAg ICAgICAgZ19vYmplY3RfdW5yZWYgKG11bHRpcGFydCk7CisrICAgICAgICBnX29iamVjdF91bnJl ZiAobXNnKTsKKysgICAgICAgIGdfZnJlZSAocmF3X2RhdGEpOworKyAgICAgICAgZ19mcmVlIChj b250ZW50X3R5cGUpOworKyAgICAgICAgZ19mcmVlIChib3VuZGFyeSk7CisrfQorKworIHN0YXRp YyB2b2lkCisgdGVzdF9tdWx0aXBhcnRfdG9vX2xhcmdlICh2b2lkKQorIHsKK0BAIC02NjYsNiAr NzAyLDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAlnX3Rlc3RfYWRkX2Z1bmMg KCIvbXVsdGlwYXJ0L2JvdW5kcy1iYWQiLCB0ZXN0X211bHRpcGFydF9ib3VuZHNfYmFkKTsKKyAJ Z190ZXN0X2FkZF9mdW5jICgiL211bHRpcGFydC9ib3VuZHMtYmFkLTIiLCB0ZXN0X211bHRpcGFy dF9ib3VuZHNfYmFkXzIpOworICAgICAgICAgZ190ZXN0X2FkZF9mdW5jICgiL211bHRpcGFydC9i b3VuZHMtYmFkLTMiLCB0ZXN0X211bHRpcGFydF9ib3VuZHNfYmFkXzMpOworKyAgICAgICAgZ190 ZXN0X2FkZF9mdW5jICgiL211bHRpcGFydC9ib3VuZHMtYmFkLTQiLCB0ZXN0X211bHRpcGFydF9i b3VuZHNfYmFkXzQpOworIAlnX3Rlc3RfYWRkX2Z1bmMgKCIvbXVsdGlwYXJ0L3Rvby1sYXJnZSIs IHRlc3RfbXVsdGlwYXJ0X3Rvb19sYXJnZSk7CisgCisgCXJldCA9IGdfdGVzdF9ydW4gKCk7Cist LSAKK0dpdExhYgorCgpkaWZmIC0tZ2l0IGEvQ1ZFLTIwMjYtNzc2ODAucGF0Y2ggYi9DVkUtMjAy Ni03NzY4MC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTE0MmIw Ci0tLSAvZGV2L251bGwKKysrIGIvQ1ZFLTIwMjYtNzc2ODAucGF0Y2gKQEAgLTAsMCArMSw2ODEg QEAKK0Zyb20gZTgyYzEzYmEwM2RlZmNlZTEwZjk4MWFjOTY0ZjRkNTcwYjIxYTI1MSBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBhdHJpY2sgR3JpZmZpcyA8cGdyaWZmaXNAaWdhbGlh LmNvbT4KK0RhdGU6IFdlZCwgMTIgQXVnIDIwMjYgMTQ6MjE6NTIgLTA1MDAKK1N1YmplY3Q6IFtQ QVRDSF0gbWVzc2FnZS1oZWFkZXJzOiBGaXggUmFuZ2UgcGFyc2luZyBvdmVyZmxvd3MgYW5kIGNv YWxlc2NpbmcKKyBjb3N0CisKK0Egc3VmZml4IHJhbmdlIGxvbmdlciB0aGFuIHRoZSBib2R5IGRy b3ZlIHRoZSByYW5nZSBzdGFydCBuZWdhdGl2ZSwgd2hpY2gKK3RoZW4gcmVhY2hlZCBhIGdfYXNz ZXJ0KCkgYW5kIGFib3J0ZWQgdGhlIHByb2Nlc3MuIENsYW1wIGl0IHRvIHNlbGVjdCB0aGUKK3do b2xlIGJvZHkgaW5zdGVhZCwgYXMgUkZDIDkxMTAgc2VjdGlvbiAxNC4xLjIgcmVxdWlyZXMuIFJh bmdlIHN0YXJ0cyBhbmQKK2VuZHMgd2hpY2ggb3ZlcmZsb3cgdGhlIGdvZmZzZXQgdGhleSBhcmUg cGFyc2VkIGludG8gYXJlIG5vdyByZWplY3RlZCBhbmQKK2NsYW1wZWQgcmVzcGVjdGl2ZWx5LCBy YXRoZXIgdGhhbiB3cmFwcGluZyBuZWdhdGl2ZSBhbmQgcmVhY2hpbmcgdGhlIHNhbWUKK2Fzc2Vy dGlvbi4KKworUmFuZ2VzIGFyZSBubyBsb25nZXIgY29hbGVzY2VkIGJ5IHJlbW92aW5nIGVhY2gg bWVyZ2VkIGVsZW1lbnQgaW4gdHVybiwKK3doaWNoIHdhcyBxdWFkcmF0aWMgaW4gdGhlaXIgbnVt YmVyLCBhbmQgYSBSYW5nZSBoZWFkZXIgbGlzdGluZyBtb3JlIHRoYW4KK01BWF9SQU5HRVMgcmFu Z2VzIGlzIG5vdyBhbnN3ZXJlZCB3aXRoIDQxNiBpbnN0ZWFkIG9mIGJlaW5nIHNlcnZlZDsgUkZD Cis5MTEwIHNlY3Rpb24gMTUuNS4xNyBuYW1lcyBhbiBleGNlc3NpdmUgbnVtYmVyIG9mIHJhbmdl cyBhcyBhIHJlYXNvbiBmb3IKK3RoYXQgc3RhdHVzLgorCitGaW5hbGx5LCBzb3J0X3Jhbmdlcygp IHJldHVybmVkIGEgZ29mZnNldCBkaWZmZXJlbmNlIHRydW5jYXRlZCB0byBpbnQsIHNvCitpdCBy ZXBvcnRlZCB0aGUgd3Jvbmcgb3JkZXIgZm9yIHJhbmdlcyBtb3JlIHRoYW4gR19NQVhJTlQgYXBh cnQsIGFuZCB0aGUKK21lcmdlIGJlbG93IGl0IHRoZW4gZHJvcHBlZCByYW5nZXMgZnJvbSByZXNw b25zZXMgb3ZlciAyR0IuCisKK0ZpeGVzICM1MTYKK0ZpeGVzICM1MTkKK0ZpeGVzICM1MzUKK0Zp eGVzICM1MzgKK0ZpeGVzICM1NDQKK0ZpeGVzICM1NDcKK0ZpeGVzICM1NDgKKy0tLQorIGxpYnNv dXAvc291cC1tZXNzYWdlLWhlYWRlcnMtcHJpdmF0ZS5oIHwgICAyICsKKyBsaWJzb3VwL3NvdXAt bWVzc2FnZS1oZWFkZXJzLmMgICAgICAgICB8ICA4OSArKysrKy0tCisgdGVzdHMvcmFuZ2UtdGVz dC5jICAgICAgICAgICAgICAgICAgICAgfCAzNDcgKysrKysrKysrKysrKysrKysrKysrKysrKwor IHRlc3RzL3NlcnZlci1tZW0tbGltaXQtdGVzdC5jICAgICAgICAgIHwgIDYxICsrKy0tCisgNCBm aWxlcyBjaGFuZ2VkLCA0NjQgaW5zZXJ0aW9ucygrKSwgMzUgZGVsZXRpb25zKC0pCisKK2RpZmYg LS1naXQgYS9saWJzb3VwL3NvdXAtbWVzc2FnZS1oZWFkZXJzLXByaXZhdGUuaCBiL2xpYnNvdXAv c291cC1tZXNzYWdlLWhlYWRlcnMtcHJpdmF0ZS5oCitpbmRleCA3MDhhZmU5OC4uMmU5NmFmMzQg MTAwNjQ0CistLS0gYS9saWJzb3VwL3NvdXAtbWVzc2FnZS1oZWFkZXJzLXByaXZhdGUuaAorKysr IGIvbGlic291cC9zb3VwLW1lc3NhZ2UtaGVhZGVycy1wcml2YXRlLmgKK0BAIC0xMiw2ICsxMiw4 IEBAIEdfQkVHSU5fREVDTFMKKyAKKyAjZGVmaW5lIE1BWF9IRUFERVJTX0JVRkZFUl9TSVpFIDI1 NiAqIDEwMjQgLyogMjU2SyAqLworIAorKyNkZWZpbmUgTUFYX1JBTkdFUyAyMDAKKysKKyB0eXBl ZGVmIGVudW0geworICAgICAgICAgU09VUF9IRUFERVJfVkFMVUVfVU5UUlVTVEVELAorICAgICAg ICAgU09VUF9IRUFERVJfVkFMVUVfVFJVU1RFRAorZGlmZiAtLWdpdCBhL2xpYnNvdXAvc291cC1t ZXNzYWdlLWhlYWRlcnMuYyBiL2xpYnNvdXAvc291cC1tZXNzYWdlLWhlYWRlcnMuYworaW5kZXgg YjJlYzAzNmMuLjdlMmU2NTgzIDEwMDY0NAorLS0tIGEvbGlic291cC9zb3VwLW1lc3NhZ2UtaGVh ZGVycy5jCisrKysgYi9saWJzb3VwL3NvdXAtbWVzc2FnZS1oZWFkZXJzLmMKK0BAIC0xMjI2LDcg KzEyMjYsMTIgQEAgc29ydF9yYW5nZXMgKGdjb25zdHBvaW50ZXIgYSwgZ2NvbnN0cG9pbnRlciBi KQorIAlTb3VwUmFuZ2UgKnJhID0gKFNvdXBSYW5nZSAqKWE7CisgCVNvdXBSYW5nZSAqcmIgPSAo U291cFJhbmdlICopYjsKKyAKKy0JcmV0dXJuIHJhLT5zdGFydCAtIHJiLT5zdGFydDsKKysJaWYg KHJhLT5zdGFydCA8IHJiLT5zdGFydCkKKysJCXJldHVybiAtMTsKKysJZWxzZSBpZiAocmEtPnN0 YXJ0ID4gcmItPnN0YXJ0KQorKwkJcmV0dXJuIDE7CisrCWVsc2UKKysJCXJldHVybiAwOworIH0K KyAKKyAvKiBsaWtlIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2dldF9yYW5nZXMoKSwgZXhjZXB0IGl0 IHJldHVybnM6CitAQCAtMTI3MCw2ICsxMjc1LDE3IEBAIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2dl dF9yYW5nZXNfaW50ZXJuYWwgKFNvdXBNZXNzYWdlSGVhZGVycyAgKmhkcnMsCisgCWlmICghcmFu Z2VfbGlzdCkKKyAJCXJldHVybiBTT1VQX1NUQVRVU19PSzsgIC8qIGludmFsaWQgbGlzdCAqLwor IAorKwkvKiBSZWplY3QgdGhlIGhlYWRlciBvdXRyaWdodCBpZiBpdCBhc2tzIGZvciBtb3JlIHJh bmdlcyB0aGFuIHdlIGFyZQorKwkgKiB3aWxsaW5nIHRvIHNlcnZlLCByYXRoZXIgdGhhbiBhbnN3 ZXJpbmcgd2l0aCB0aGUgd2hvbGUgYm9keTogYSBjbGllbnQKKysJICogYXNraW5nIGZvciB0aGlz IG1hbnkgcmFuZ2VzIHdhbnRzIHRvIGJlIHRvbGQgc28sIGFuZCBSRkMgOTExMCDCpzE0LjIKKysJ ICogYWxsb3dzIHJlamVjdGluZyBzdWNoIGEgaGVhZGVyIGZvciBleGFjdGx5IHRoaXMgcmVhc29u LgorKwkgKi8KKysJaWYgKGdfc2xpc3RfbGVuZ3RoIChyYW5nZV9saXN0KSA+IE1BWF9SQU5HRVMp IHsKKysJCXNvdXBfaGVhZGVyX2ZyZWVfbGlzdCAocmFuZ2VfbGlzdCk7CisrCQlyZXR1cm4gY2hl Y2tfc2F0aXNmaWFibGUgPyBTT1VQX1NUQVRVU19SRVFVRVNURURfUkFOR0VfTk9UX1NBVElTRklB QkxFCisrCQkJCQkgOiBTT1VQX1NUQVRVU19PSzsKKysJfQorKworIAkvKiBMb29wIHRocm91Z2gg dGhlIHJhbmdlcyBhbmQgbW9kaWZ5IHRoZSBzdGF0dXMgYWNjb3JkaW5nbHkuIERlZmF1bHQgdG8K KyAJICogc3RhdHVzIDIwMCAoT0ssIGlnbm9yaW5nIHRoZSByYW5nZXMpLiBTd2l0Y2ggdG8gc3Rh dHVzIDIwNiAoUGFydGlhbAorIAkgKiBDb250ZW50KSBpZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUg cGFydGlhbGx5IHZhbGlkIHJhbmdlLiBTd2l0Y2ggdG8KK0BAIC0xMjgxLDE1ICsxMjk3LDQ4IEBA IHNvdXBfbWVzc2FnZV9oZWFkZXJzX2dldF9yYW5nZXNfaW50ZXJuYWwgKFNvdXBNZXNzYWdlSGVh ZGVycyAgKmhkcnMsCisgCisgCQlzcGVjID0gci0+ZGF0YTsKKyAJCWlmICgqc3BlYyA9PSAnLScp IHsKKy0JCQljdXIuc3RhcnQgPSBnX2FzY2lpX3N0cnRvbGwgKHNwZWMsICZlbmQsIDEwKSArIHRv dGFsX2xlbmd0aDsKKysJCQlnaW50NjQgc3VmZml4X2xlbmd0aDsKKysKKysJCQllcnJubyA9IDA7 CisrCQkJc3VmZml4X2xlbmd0aCA9IGdfYXNjaWlfc3RydG9sbCAoc3BlYywgJmVuZCwgMTApOwor KworKwkJCS8qIEEgc3VmZml4IHJhbmdlIGFza3MgZm9yIHRoZSBsYXN0IC1zdWZmaXhfbGVuZ3Ro IGJ5dGVzCisrCQkJICogb2YgdGhlIGJvZHkuIElmIHRoZSBib2R5IGlzIHNob3J0ZXIgdGhhbiB0 aGF0IHRoZW4gdGhlCisrCQkJICogd2hvbGUgYm9keSBpcyB1c2VkLCBwZXIgUkZDIDkxMTAgwqcx NC4xLjI7IHdpdGhvdXQKKysJCQkgKiBjbGFtcGluZywgdGhlIHN0YXJ0IHdvdWxkIGdvIG5lZ2F0 aXZlIGFuZCByZWFjaCB0aGUKKysJCQkgKiBhc3NlcnRpb24gYmVsb3cuCisrCQkJICovCisrCQkJ aWYgKGVycm5vID09IEVSQU5HRSB8fCBzdWZmaXhfbGVuZ3RoIDw9IC10b3RhbF9sZW5ndGgpCisr CQkJCWN1ci5zdGFydCA9IDA7CisrCQkJZWxzZQorKwkJCQljdXIuc3RhcnQgPSB0b3RhbF9sZW5n dGggKyBzdWZmaXhfbGVuZ3RoOworKworIAkJCWN1ci5lbmQgPSB0b3RhbF9sZW5ndGggLSAxOwor IAkJfSBlbHNlIHsKKy0JCQljdXIuc3RhcnQgPSBnX2FzY2lpX3N0cnRvdWxsIChzcGVjLCAmZW5k LCAxMCk7CisrCQkJZ3VpbnQ2NCB2YWx1ZTsKKysKKysJCQllcnJubyA9IDA7CisrCQkJdmFsdWUg PSBnX2FzY2lpX3N0cnRvdWxsIChzcGVjLCAmZW5kLCAxMCk7CisrCQkJaWYgKGVycm5vID09IEVS QU5HRSB8fCB2YWx1ZSA+IEdfTUFYSU5UNjQpIHsKKysJCQkJaXNfYWxsX3ZhbGlkID0gRkFMU0U7 CisrCQkJCWNvbnRpbnVlOworKwkJCX0KKysJCQljdXIuc3RhcnQgPSAoZ29mZnNldCkgdmFsdWU7 CisrCisgCQkJaWYgKCplbmQgPT0gJy0nKQorIAkJCQllbmQrKzsKKy0JCQlpZiAoKmVuZCkKKy0J CQkJY3VyLmVuZCA9IGdfYXNjaWlfc3RydG91bGwgKGVuZCwgJmVuZCwgMTApOworLQkJCWVsc2UK KysJCQlpZiAoKmVuZCkgeworKwkJCQllcnJubyA9IDA7CisrCQkJCXZhbHVlID0gZ19hc2NpaV9z dHJ0b3VsbCAoZW5kLCAmZW5kLCAxMCk7CisrCisrCQkJCS8qIEFuIGVuZCB0aGlzIGxhcmdlIGlz IGNsYW1wZWQgdG8gdGhlIGVuZCBvZiB0aGUKKysJCQkJICogYm9keSBiZWxvdywgbGlrZSBhbnkg b3RoZXIgZW5kIHBhc3QgaXQuCisrCQkJCSAqLworKwkJCQlpZiAoZXJybm8gPT0gRVJBTkdFIHx8 IHZhbHVlID4gR19NQVhJTlQ2NCkKKysJCQkJCWN1ci5lbmQgPSBHX01BWElOVDY0OworKwkJCQll bHNlCisrCQkJCQljdXIuZW5kID0gKGdvZmZzZXQpIHZhbHVlOworKwkJCX0gZWxzZQorIAkJCQlj dXIuZW5kID0gdG90YWxfbGVuZ3RoIC0gMTsKKyAJCX0KKyAKK0BAIC0xMzMwLDE5ICsxMzc5LDI0 IEBAIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2dldF9yYW5nZXNfaW50ZXJuYWwgKFNvdXBNZXNzYWdl SGVhZGVycyAgKmhkcnMsCisgCX0KKyAKKyAJaWYgKHRvdGFsX2xlbmd0aCkgeworLQkJZ3VpbnQg aTsKKysJCVNvdXBSYW5nZSAqZGF0YTsKKysJCWd1aW50IGksIGxhc3QgPSAwOworIAorIAkJZ19h cnJheV9zb3J0IChhcnJheSwgc29ydF9yYW5nZXMpOworLQkJZm9yIChpID0gMTsgaSA8IGFycmF5 LT5sZW47IGkrKykgeworLQkJCVNvdXBSYW5nZSAqY3VyID0gJigoU291cFJhbmdlICopYXJyYXkt PmRhdGEpW2ldOworLQkJCVNvdXBSYW5nZSAqcHJldiA9ICYoKFNvdXBSYW5nZSAqKWFycmF5LT5k YXRhKVtpIC0gMV07CisgCistCQkJaWYgKGN1ci0+c3RhcnQgPD0gcHJldi0+ZW5kKSB7CistCQkJ CXByZXYtPmVuZCA9IE1BWCAocHJldi0+ZW5kLCBjdXItPmVuZCk7CistCQkJCWdfYXJyYXlfcmVt b3ZlX2luZGV4IChhcnJheSwgaSk7CistCQkJCWktLTsKKy0JCQl9CisrCQkvKiBNZXJnZSBvdmVy bGFwcGluZyByYW5nZXMgaW50byB0aGUgcnVuIGJlaW5nIGJ1aWx0IGF0IEBsYXN0LgorKwkJICog UmVtb3ZpbmcgdGhlIG1lcmdlZCBlbGVtZW50cyBvbmUgYXQgYSB0aW1lIGluc3RlYWQgbWFkZSB0 aGlzCisrCQkgKiBxdWFkcmF0aWMgaW4gdGhlIG51bWJlciBvZiByYW5nZXMuCisrCQkgKi8KKysJ CWRhdGEgPSAoU291cFJhbmdlICopYXJyYXktPmRhdGE7CisrCQlmb3IgKGkgPSAxOyBpIDwgYXJy YXktPmxlbjsgaSsrKSB7CisrCQkJaWYgKGRhdGFbaV0uc3RhcnQgPD0gZGF0YVtsYXN0XS5lbmQp CisrCQkJCWRhdGFbbGFzdF0uZW5kID0gTUFYIChkYXRhW2xhc3RdLmVuZCwgZGF0YVtpXS5lbmQp OworKwkJCWVsc2UKKysJCQkJZGF0YVsrK2xhc3RdID0gZGF0YVtpXTsKKyAJCX0KKysKKysJCWdf YXJyYXlfc2V0X3NpemUgKGFycmF5LCBsYXN0ICsgMSk7CisgCX0KKyAKKyAJKnJhbmdlcyA9IChT b3VwUmFuZ2UgKilhcnJheS0+ZGF0YTsKK0BAIC0xMzc1LDYgKzE0MjksMTEgQEAgc291cF9tZXNz YWdlX2hlYWRlcnNfZ2V0X3Jhbmdlc19pbnRlcm5hbCAoU291cE1lc3NhZ2VIZWFkZXJzICAqaGRy cywKKyAgKiBCZXdhcmUgdGhhdCBldmVuIGlmIGdpdmVuIGEgQHRvdGFsX2xlbmd0aCwgdGhpcyBm dW5jdGlvbiBkb2VzIG5vdAorICAqIGNoZWNrIHRoYXQgdGhlIHJhbmdlcyBhcmUgc2F0aXNmaWFi bGUuCisgICoKKysgKiBBIFJhbmdlIGhlYWRlciByZXF1ZXN0aW5nIG1vcmUgdGhhbiAyMDAgcmFu Z2VzIGlzIHJlamVjdGVkLCBzaW5jZSBzZXJ2aW5nCisrICogdGhhdCBtYW55IHJhbmdlcyBjb3N0 cyBmYXIgbW9yZSB0aGFuIHRoZSByZXF1ZXN0IGFza2luZyBmb3IgdGhlbS4KKysgKiBbY2xhc3NA U2VydmVyXSBhbnN3ZXJzIHN1Y2ggYSByZXF1ZXN0IHdpdGgKKysgKiAlU09VUF9TVEFUVVNfUkVR VUVTVEVEX1JBTkdFX05PVF9TQVRJU0ZJQUJMRS4KKysgKgorICAqIFtjbGFzc0BTZXJ2ZXJdIGhh cyBidWlsdC1pbiBoYW5kbGluZyBmb3IgcmFuZ2UgcmVxdWVzdHMuIElmIHlvdXIKKyAgKiBzZXJ2 ZXIgaGFuZGxlciByZXR1cm5zIGEgJVNPVVBfU1RBVFVTX09LIHJlc3BvbnNlIGNvbnRhaW5pbmcg dGhlCisgICogY29tcGxldGUgcmVzcG9uc2UgYm9keSAocmF0aGVyIHRoYW4gcGF1c2luZyB0aGUg bWVzc2FnZSBhbmQKK2RpZmYgLS1naXQgYS90ZXN0cy9yYW5nZS10ZXN0LmMgYi90ZXN0cy9yYW5n ZS10ZXN0LmMKK2luZGV4IGNmZDVmNjEzLi45ZTRlZDJjOSAxMDA2NDQKKy0tLSBhL3Rlc3RzL3Jh bmdlLXRlc3QuYworKysrIGIvdGVzdHMvcmFuZ2UtdGVzdC5jCitAQCAtMyw2ICszLDggQEAKKyAj aW5jbHVkZSAiY29uZmlnLmgiCisgCisgI2luY2x1ZGUgInRlc3QtdXRpbHMuaCIKKysjaW5jbHVk ZSAic291cC1tZXNzYWdlLWhlYWRlcnMtcHJpdmF0ZS5oIgorKyNpbmNsdWRlICJzb3VwLW1pc2Mu aCIKKyAKKyBHQnl0ZXMgKmZ1bGxfcmVzcG9uc2U7CisgaW50IHRvdGFsX2xlbmd0aDsKK0BAIC0x NjEsNiArMTYzLDIxIEBAIHJlcXVlc3Rfc2luZ2xlX3JhbmdlX2J5X3N0cmluZyAoU291cFNlc3Np b24gKnNlc3Npb24sIGNvbnN0IGNoYXIgKnVyaSwKKyAJZ19vYmplY3RfdW5yZWYgKG1zZyk7Cisg fQorIAorKy8qIExpa2UgcmVxdWVzdF9zaW5nbGVfcmFuZ2VfYnlfc3RyaW5nKCksIGJ1dCBhYmxl IHRvIGNoZWNrIHRoZSByYW5nZXMgb2YgYQorKyAqIHN1Y2Nlc3NmdWwgMjA2IGFzIHdlbGwuICov Cisrc3RhdGljIHZvaWQKKytyZXF1ZXN0X3NpbmdsZV9yYW5nZV9ieV9zdHJpbmdfZnVsbCAoU291 cFNlc3Npb24gKnNlc3Npb24sIGNvbnN0IGNoYXIgKnVyaSwKKysJCQkJICAgICBjb25zdCBjaGFy ICpyYW5nZSwgU291cFN0YXR1cyBleHBlY3RlZF9zdGF0dXMsCisrCQkJCSAgICAgaW50IGV4cGVj dGVkX3N0YXJ0LCBpbnQgZXhwZWN0ZWRfZW5kKQorK3sKKysJU291cE1lc3NhZ2UgKm1zZzsKKysK KysJbXNnID0gc291cF9tZXNzYWdlX25ldyAoIkdFVCIsIHVyaSk7CisrCXNvdXBfbWVzc2FnZV9o ZWFkZXJzX3JlcGxhY2UgKHNvdXBfbWVzc2FnZV9nZXRfcmVxdWVzdF9oZWFkZXJzIChtc2cpLCAi UmFuZ2UiLCByYW5nZSk7CisrCisrCWRvX3NpbmdsZV9yYW5nZSAoc2Vzc2lvbiwgbXNnLCAwLCAw LCBleHBlY3RlZF9zdGF0dXMsIGV4cGVjdGVkX3N0YXJ0LCBleHBlY3RlZF9lbmQpOworK30KKysK KyBzdGF0aWMgdm9pZAorIGRvX211bHRpX3JhbmdlIChTb3VwU2Vzc2lvbiAqc2Vzc2lvbiwgU291 cE1lc3NhZ2UgKm1zZywKKyAJCWludCBleHBlY3RlZF9yZXR1cm5fcmFuZ2VzKQorQEAgLTQ0NSw2 ICs0NjIsMjkwIEBAIGRvX3JhbmdlX3Rlc3QgKFNvdXBTZXNzaW9uICpzZXNzaW9uLCBjb25zdCBj aGFyICp1cmksCisgCQkJCQlTT1VQX1NUQVRVU19PSyk7CisgfQorIAorKy8qIFRlc3RzIGZvciB0 aGUgUmFuZ2UgcGFyc2VyIGl0c2VsZi4gVW5saWtlIHRoZSB0ZXN0cyBhYm92ZSwgdGhlc2UgZG9u J3QgbmVlZAorKyAqIGEgc2VydmVyLCBzbyB0aGV5IGNhbiB1c2UgdG90YWwgbGVuZ3RocyB3aGlj aCB3b3VsZCBiZSBpbXByYWN0aWNhbCB0bworKyAqIGFjdHVhbGx5IHNlcnZlLCBhbmQgdGhleSBj YW4gY2hlY2sgdGhlIGV4YWN0IHN0YXR1cyB3aGljaCB0aGUgc2VydmVyIHdvdWxkCisrICogdXNl IHJhdGhlciB0aGFuIG9ubHkgdGhlIG9uZXMgYSBjbGllbnQgY2FuIGRpc3Rpbmd1aXNoLgorKyAq LworK3R5cGVkZWYgc3RydWN0IHsKKysJY29uc3QgY2hhciAqZGVzY3JpcHRpb247CisrCWNvbnN0 IGNoYXIgKmJ1Z3JlZjsKKysJY29uc3QgY2hhciAqcmFuZ2U7CisrCWdvZmZzZXQgdG90YWxfbGVu Z3RoOworKwlndWludCBleHBlY3RlZF9zdGF0dXM7CisrCWludCBleHBlY3RlZF9uX3JhbmdlczsK KysJU291cFJhbmdlIGV4cGVjdGVkX3Jhbmdlc1szXTsKKyt9IFJhbmdlUGFyc2luZ1Rlc3Q7Cisr Cisrc3RhdGljIGNvbnN0IFJhbmdlUGFyc2luZ1Rlc3QgcmFuZ2VfcGFyc2luZ190ZXN0c1tdID0g eworKwkvKiBWYWxpZCByYW5nZXMgYWdhaW5zdCBhIHRlbiBieXRlIGJvZHksIGFzIGEgYmFzZWxp bmUuICovCisrCXsgInNpbXBsZSByYW5nZSIsIE5VTEwsCisrCSAgImJ5dGVzPTAtNCIsIDEwLCBT T1VQX1NUQVRVU19QQVJUSUFMX0NPTlRFTlQsIDEsIHsgeyAwLCA0IH0gfSB9LAorKwl7ICJ3aG9s ZSBib2R5IiwgTlVMTCwKKysJICAiYnl0ZXM9MC05IiwgMTAsIFNPVVBfU1RBVFVTX1BBUlRJQUxf Q09OVEVOVCwgMSwgeyB7IDAsIDkgfSB9IH0sCisrCXsgIm9wZW4gZW5kZWQgcmFuZ2UiLCBOVUxM LAorKwkgICJieXRlcz01LSIsIDEwLCBTT1VQX1NUQVRVU19QQVJUSUFMX0NPTlRFTlQsIDEsIHsg eyA1LCA5IH0gfSB9LAorKwl7ICJmaW5hbCBieXRlIiwgTlVMTCwKKysJICAiYnl0ZXM9OS0iLCAx MCwgU09VUF9TVEFUVVNfUEFSVElBTF9DT05URU5ULCAxLCB7IHsgOSwgOSB9IH0gfSwKKysJeyAi ZW5kIHBhc3QgdGhlIGJvZHkgaXMgY2xhbXBlZCIsIE5VTEwsCisrCSAgImJ5dGVzPTEtMTAwIiwg MTAsIFNPVVBfU1RBVFVTX1BBUlRJQUxfQ09OVEVOVCwgMSwgeyB7IDEsIDkgfSB9IH0sCisrCXsg InN1ZmZpeCByYW5nZSIsIE5VTEwsCisrCSAgImJ5dGVzPS01IiwgMTAsIFNPVVBfU1RBVFVTX1BB UlRJQUxfQ09OVEVOVCwgMSwgeyB7IDUsIDkgfSB9IH0sCisrCXsgInNpbmdsZSBieXRlIHN1ZmZp eCByYW5nZSIsIE5VTEwsCisrCSAgImJ5dGVzPS0xIiwgMTAsIFNPVVBfU1RBVFVTX1BBUlRJQUxf Q09OVEVOVCwgMSwgeyB7IDksIDkgfSB9IH0sCisrCXsgIndoaXRlc3BhY2UgYXJvdW5kIHRoZSBy YW5nZXMiLCBOVUxMLAorKwkgICJieXRlcyBcdCA9IFx0IDAtNCIsIDEwLCBTT1VQX1NUQVRVU19Q QVJUSUFMX0NPTlRFTlQsIDEsIHsgeyAwLCA0IH0gfSB9LAorKworKwkvKiBVbnNhdGlzZmlhYmxl IGFuZCBpbnZhbGlkIHJhbmdlcy4gKi8KKysJeyAic3RhcnQgcGFzdCB0aGUgYm9keSIsIE5VTEws CisrCSAgImJ5dGVzPTEwLTIwIiwgMTAsIFNPVVBfU1RBVFVTX1JFUVVFU1RFRF9SQU5HRV9OT1Rf U0FUSVNGSUFCTEUsIDAsIHsgfSB9LAorKwl7ICJlbmQgYmVmb3JlIHN0YXJ0IiwgTlVMTCwKKysJ ICAiYnl0ZXM9MTAtMSIsIDEwLCBTT1VQX1NUQVRVU19PSywgMCwgeyB9IH0sCisrCXsgInplcm8g bGVuZ3RoIHN1ZmZpeCByYW5nZSIsIE5VTEwsCisrCSAgImJ5dGVzPS0wIiwgMTAsIFNPVVBfU1RB VFVTX09LLCAwLCB7IH0gfSwKKysJeyAidHJhaWxpbmcgZ2FyYmFnZSIsIE5VTEwsCisrCSAgImJ5 dGVzPTAtMTAgYnV0IHdpdGggd2VpcmQgdHJhaWxpbmcgY29udGVudCIsIDEwLCBTT1VQX1NUQVRV U19PSywgMCwgeyB9IH0sCisrCXsgImludmFsaWQgcmFuZ2UgZGFzaCIsIE5VTEwsCisrCSAgImJ5 dGVzPTBhMTAiLCAxMCwgU09VUF9TVEFUVVNfT0ssIDAsIHsgfSB9LAorKwl7ICJ1bmtub3duIHJh bmdlIHVuaXQiLCBOVUxMLAorKwkgICJob3JzZXM9MC0xMCIsIDEwLCBTT1VQX1NUQVRVU19PSywg MCwgeyB9IH0sCisrCXsgIm1pc3NpbmcgZXF1YWxzIiwgTlVMTCwKKysJICAiYnl0ZXMgMC0xMCIs IDEwLCBTT1VQX1NUQVRVU19PSywgMCwgeyB9IH0sCisrCXsgImRlbGltaXRlcnMgYnV0IG5vIHJh bmdlcyIsIE5VTEwsCisrCSAgImJ5dGVzPSwgLCxcdCwgIiwgMTAsIFNPVVBfU1RBVFVTX09LLCAw LCB7IH0gfSwKKysKKysJLyogQSBzdWZmaXggbGVuZ3RoIGF0IGxlYXN0IGFzIGxvbmcgYXMgdGhl IGJvZHkgc2VsZWN0cyB0aGUgd2hvbGUgYm9keSwKKysJICogcGVyIFJGQyA5MTEwIMKnMTQuMS4y LiBUaGVzZSB1c2VkIHRvIGRyaXZlIHRoZSByYW5nZSBzdGFydCBuZWdhdGl2ZSwKKysJICogd2hp Y2ggYWJvcnRlZCB0aGUgcHJvY2VzcyBhdCB0aGUgZ19hc3NlcnQoKSBiZWxvdyB0aGUgcGFyc2Uu CisrCSAqLworKwl7ICJzdWZmaXggcmFuZ2UgdGhlIGxlbmd0aCBvZiB0aGUgYm9keSIsICJodHRw czovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvbGlic291cC8tL2lzc3Vlcy81MTYiLAorKwkgICJi eXRlcz0tMTAiLCAxMCwgU09VUF9TVEFUVVNfUEFSVElBTF9DT05URU5ULCAxLCB7IHsgMCwgOSB9 IH0gfSwKKysJeyAic3VmZml4IHJhbmdlIG9uZSBsb25nZXIgdGhhbiB0aGUgYm9keSIsICJodHRw czovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvbGlic291cC8tL2lzc3Vlcy81MTYiLAorKwkgICJi eXRlcz0tMTEiLCAxMCwgU09VUF9TVEFUVVNfUEFSVElBTF9DT05URU5ULCAxLCB7IHsgMCwgOSB9 IH0gfSwKKysJeyAic3VmZml4IHJhbmdlIG11Y2ggbG9uZ2VyIHRoYW4gdGhlIGJvZHkiLCAiaHR0 cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2xpYnNvdXAvLS9pc3N1ZXMvNTQ4IiwKKysJICAi Ynl0ZXM9LTk5OTk5OSIsIDEwLCBTT1VQX1NUQVRVU19QQVJUSUFMX0NPTlRFTlQsIDEsIHsgeyAw LCA5IH0gfSB9LAorKwl7ICJzdWZmaXggcmFuZ2Ugb2YgR19NSU5JTlQiLCAiaHR0cHM6Ly9naXRs YWIuZ25vbWUub3JnL0dOT01FL2xpYnNvdXAvLS9pc3N1ZXMvNTQ3IiwKKysJICAiYnl0ZXM9LTIx NDc0ODM2NDgiLCAxMCwgU09VUF9TVEFUVVNfUEFSVElBTF9DT05URU5ULCAxLCB7IHsgMCwgOSB9 IH0gfSwKKysJeyAic3VmZml4IHJhbmdlIGxhcmdlciB0aGFuIGEgZ3VpbnQzMiIsICJodHRwczov L2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvbGlic291cC8tL2lzc3Vlcy81NDciLAorKwkgICJieXRl cz0tNDI5NDk2NzI5NiIsIDEwLCBTT1VQX1NUQVRVU19QQVJUSUFMX0NPTlRFTlQsIDEsIHsgeyAw LCA5IH0gfSB9LAorKwl7ICJzdWZmaXggcmFuZ2Ugb2YgR19NQVhJTlQ2NCIsICJodHRwczovL2dp dGxhYi5nbm9tZS5vcmcvR05PTUUvbGlic291cC8tL2lzc3Vlcy81NDciLAorKwkgICJieXRlcz0t OTIyMzM3MjAzNjg1NDc3NTgwNyIsIDEwLCBTT1VQX1NUQVRVU19QQVJUSUFMX0NPTlRFTlQsIDEs IHsgeyAwLCA5IH0gfSB9LAorKwl7ICJzdWZmaXggcmFuZ2Ugb2YgR19NSU5JTlQ2NCIsICJodHRw czovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvbGlic291cC8tL2lzc3Vlcy81NDciLAorKwkgICJi eXRlcz0tOTIyMzM3MjAzNjg1NDc3NTgwOCIsIDEwLCBTT1VQX1NUQVRVU19QQVJUSUFMX0NPTlRF TlQsIDEsIHsgeyAwLCA5IH0gfSB9LAorKwl7ICJzdWZmaXggcmFuZ2Ugb3ZlcmZsb3dpbmcgZ2lu dDY0IiwgImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9saWJzb3VwLy0vaXNzdWVzLzUz NSIsCisrCSAgImJ5dGVzPS05OTk5OTk5OTk5OTk5OTk5OTk5OSIsIDEwLCBTT1VQX1NUQVRVU19Q QVJUSUFMX0NPTlRFTlQsIDEsIHsgeyAwLCA5IH0gfSB9LAorKwl7ICJvdmVyc2l6ZWQgc3VmZml4 IHJhbmdlIG1lcmdlZCB3aXRoIGEgdmFsaWQgcmFuZ2UiLCAiaHR0cHM6Ly9naXRsYWIuZ25vbWUu b3JnL0dOT01FL2xpYnNvdXAvLS9pc3N1ZXMvNTQ4IiwKKysJICAiYnl0ZXM9LTk5OTk5OSw0LTUi LCAxMCwgU09VUF9TVEFUVVNfUEFSVElBTF9DT05URU5ULCAxLCB7IHsgMCwgOSB9IH0gfSwKKysK KysJLyogUmFuZ2Ugc3RhcnRzIGFuZCBlbmRzIHdoaWNoIG92ZXJmbG93IHRoZSBzaWduZWQgZ29m ZnNldCB0aGV5IGFyZQorKwkgKiBwYXJzZWQgaW50by4gQW4gb3ZlcmZsb3dpbmcgc3RhcnQgaXMg dHJlYXRlZCBsaWtlIGFueSBvdGhlciBzdGFydAorKwkgKiBiZXlvbmQgdGhlIGVuZCBvZiB0aGUg Ym9keSwgYW5kIGFuIG92ZXJmbG93aW5nIGVuZCBpcyBjbGFtcGVkIGxpa2UKKysJICogYW55IG90 aGVyIGVuZCBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgYm9keS4KKysJICovCisrCXsgInN0YXJ0IG92 ZXJmbG93aW5nIGdpbnQ2NCIsICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvbGlic291 cC8tL2lzc3Vlcy81MzUiLAorKwkgICJieXRlcz05ODg4ODg4ODg4ODg4MDE5OTAwLSIsIDEwLCBT T1VQX1NUQVRVU19PSywgMCwgeyB9IH0sCisrCXsgInN0YXJ0IG92ZXJmbG93aW5nIGdpbnQ2NCB3 aXRoIG5vIGRhc2giLCAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2xpYnNvdXAvLS9p c3N1ZXMvNTM1IiwKKysJICAiYnl0ZXM9OTg4ODg4ODg4ODg4ODAxOTkwMCIsIDEwLCBTT1VQX1NU QVRVU19PSywgMCwgeyB9IH0sCisrCXsgInN0YXJ0IG9mIEdfTUFYSU5UNjQgKyAxIiwgImh0dHBz Oi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9saWJzb3VwLy0vaXNzdWVzLzUzNSIsCisrCSAgImJ5 dGVzPTkyMjMzNzIwMzY4NTQ3NzU4MDgtIiwgMTAsIFNPVVBfU1RBVFVTX09LLCAwLCB7IH0gfSwK KysJeyAic3RhcnQgb3ZlcmZsb3dpbmcgZ3VpbnQ2NCIsICJodHRwczovL2dpdGxhYi5nbm9tZS5v cmcvR05PTUUvbGlic291cC8tL2lzc3Vlcy81MzUiLAorKwkgICJieXRlcz0xODQ0Njc0NDA3Mzcw OTU1MTYxNi0iLCAxMCwgU09VUF9TVEFUVVNfT0ssIDAsIHsgfSB9LAorKwl7ICJzdGFydCBhbmQg ZW5kIG92ZXJmbG93aW5nIGdpbnQ2NCIsICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUv bGlic291cC8tL2lzc3Vlcy81MzUiLAorKwkgICJieXRlcz05ODg4ODg4ODg4ODg4MDE5OTAwLTk4 ODg4ODg4ODg4ODgwMTk5MDEiLCAxMCwgU09VUF9TVEFUVVNfT0ssIDAsIHsgfSB9LAorKwl7ICJl bmQgb3ZlcmZsb3dpbmcgZ2ludDY0IiwgImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9s aWJzb3VwLy0vaXNzdWVzLzUzNSIsCisrCSAgImJ5dGVzPTAtOTg4ODg4ODg4ODg4ODAxOTkwMCIs IDEwLCBTT1VQX1NUQVRVU19QQVJUSUFMX0NPTlRFTlQsIDEsIHsgeyAwLCA5IH0gfSB9LAorKwl7 ICJlbmQgb3ZlcmZsb3dpbmcgZ3VpbnQ2NCIsICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05P TUUvbGlic291cC8tL2lzc3Vlcy81MzUiLAorKwkgICJieXRlcz0wLTE4NDQ2NzQ0MDczNzA5NTUx NjE2IiwgMTAsIFNPVVBfU1RBVFVTX1BBUlRJQUxfQ09OVEVOVCwgMSwgeyB7IDAsIDkgfSB9IH0s CisrCisrCS8qIFplcm8gbGVuZ3RoIGJvZGllcy4gc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X3Jh bmdlcygpIGlzIHB1YmxpYyBBUEksCisrCSAqIHNvIGl0IGNhbiBiZSBjYWxsZWQgd2l0aCBvbmUg ZXZlbiB0aG91Z2ggdGhlIHNlcnZlciBuZXZlciBkb2VzLgorKwkgKi8KKysJeyAicmFuZ2UgYWdh aW5zdCBhbiBlbXB0eSBib2R5IiwgTlVMTCwKKysJICAiYnl0ZXM9MC05IiwgMCwgU09VUF9TVEFU VVNfUkVRVUVTVEVEX1JBTkdFX05PVF9TQVRJU0ZJQUJMRSwgMCwgeyB9IH0sCisrCXsgInN1ZmZp eCByYW5nZSBhZ2FpbnN0IGFuIGVtcHR5IGJvZHkiLCAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3Jn L0dOT01FL2xpYnNvdXAvLS9pc3N1ZXMvNTQ4IiwKKysJICAiYnl0ZXM9LTUiLCAwLCBTT1VQX1NU QVRVU19PSywgMCwgeyB9IH0sCisrCisrCS8qIE1lcmdpbmcuICovCisrCXsgIm92ZXJsYXBwaW5n IHJhbmdlcyBhcmUgbWVyZ2VkIiwgTlVMTCwKKysJICAiYnl0ZXM9MC0xMCw1LTIwIiwgMTAwLCBT T1VQX1NUQVRVU19QQVJUSUFMX0NPTlRFTlQsIDEsIHsgeyAwLCAyMCB9IH0gfSwKKysJeyAiY29u dGFpbmVkIHJhbmdlcyBhcmUgbWVyZ2VkIiwgTlVMTCwKKysJICAiYnl0ZXM9MC0yMCw1LTEwIiwg MTAwLCBTT1VQX1NUQVRVU19QQVJUSUFMX0NPTlRFTlQsIDEsIHsgeyAwLCAyMCB9IH0gfSwKKysJ eyAidG91Y2hpbmcgcmFuZ2VzIGFyZSBub3QgbWVyZ2VkIiwgTlVMTCwKKysJICAiYnl0ZXM9MC00 LDUtOSIsIDEwMCwgU09VUF9TVEFUVVNfUEFSVElBTF9DT05URU5ULCAyLCB7IHsgMCwgNCB9LCB7 IDUsIDkgfSB9IH0sCisrCXsgInJhbmdlcyBhcmUgc29ydGVkIiwgTlVMTCwKKysJICAiYnl0ZXM9 MjAtMjksMC05IiwgMTAwLCBTT1VQX1NUQVRVU19QQVJUSUFMX0NPTlRFTlQsIDIsIHsgeyAwLCA5 IH0sIHsgMjAsIDI5IH0gfSB9LAorKwl7ICJpbnZhbGlkIHJhbmdlcyBkbyBub3QgcHJldmVudCB2 YWxpZCBvbmVzIiwgTlVMTCwKKysJICAiYnl0ZXM9MC05LDUwLTQwLDIwLTI5IiwgMTAwLCBTT1VQ X1NUQVRVU19QQVJUSUFMX0NPTlRFTlQsIDIsIHsgeyAwLCA5IH0sIHsgMjAsIDI5IH0gfSB9LAor KworKwkvKiBUaGUgY29tcGFyaXNvbiBmdW5jdGlvbiB1c2VkIHRvIHNvcnQgdGhlIHJhbmdlcyBi ZWZvcmUgbWVyZ2luZyB0aGVtCisrCSAqIHVzZWQgdG8gdHJ1bmNhdGUgYSBnb2Zmc2V0IGRpZmZl cmVuY2UgdG8gaW50LCB3aGljaCBmbGlwcyBpdHMgc2lnbgorKwkgKiBmb3IgYm9kaWVzIG92ZXIg MkdCIGFuZCBzaWxlbnRseSBkcm9wcGVkIHJhbmdlcyBmcm9tIHRoZSByZXNwb25zZS4KKysJICov CisrCXsgInJhbmdlcyBtb3JlIHRoYW4gR19NQVhJTlQgYXBhcnQiLCAiaHR0cHM6Ly9naXRsYWIu Z25vbWUub3JnL0dOT01FL2xpYnNvdXAvLS9pc3N1ZXMvNTE5IiwKKysJICAiYnl0ZXM9MC0xMDAs IDI1MDAwMDAwMDAtMjUwMDAwMDEwMCwgNDk5OTk5OTAwMC00OTk5OTk5MTAwIiwgNTAwMDAwMDAw MCwKKysJICBTT1VQX1NUQVRVU19QQVJUSUFMX0NPTlRFTlQsIDMsCisrCSAgeyB7IDAsIDEwMCB9 LCB7IDI1MDAwMDAwMDAsIDI1MDAwMDAxMDAgfSwgeyA0OTk5OTk5MDAwLCA0OTk5OTk5MTAwIH0g fSB9LAorKwl7ICJ1bnNvcnRlZCByYW5nZXMgbW9yZSB0aGFuIEdfTUFYSU5UIGFwYXJ0IiwgImh0 dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9saWJzb3VwLy0vaXNzdWVzLzUxOSIsCisrCSAg ImJ5dGVzPTQ5OTk5OTkwMDAtNDk5OTk5OTEwMCwgMC0xMDAsIDI1MDAwMDAwMDAtMjUwMDAwMDEw MCIsIDUwMDAwMDAwMDAsCisrCSAgU09VUF9TVEFUVVNfUEFSVElBTF9DT05URU5ULCAzLAorKwkg IHsgeyAwLCAxMDAgfSwgeyAyNTAwMDAwMDAwLCAyNTAwMDAwMTAwIH0sIHsgNDk5OTk5OTAwMCwg NDk5OTk5OTEwMCB9IH0gfSwKKyt9OworKworK3N0YXRpYyB2b2lkCisrY2hlY2tfcGFyc2VkX3Jh bmdlcyAoY29uc3QgY2hhciAqcmFuZ2UsCisrCQkgICAgIGdvZmZzZXQgICAgIHRvdGFsX2xlbmd0 aCwKKysJCSAgICAgZ3VpbnQgICAgICAgZXhwZWN0ZWRfc3RhdHVzLAorKwkJICAgICBpbnQgICAg ICAgICBleHBlY3RlZF9uX3JhbmdlcywKKysJCSAgICAgY29uc3QgU291cFJhbmdlICpleHBlY3Rl ZF9yYW5nZXMpCisreworKwlTb3VwTWVzc2FnZUhlYWRlcnMgKmhkcnM7CisrCVNvdXBSYW5nZSAq cmFuZ2VzID0gTlVMTDsKKysJaW50IG5fcmFuZ2VzID0gMDsKKysJZ3VpbnQgc3RhdHVzOworKwlp bnQgaTsKKysKKysJaGRycyA9IHNvdXBfbWVzc2FnZV9oZWFkZXJzX25ldyAoU09VUF9NRVNTQUdF X0hFQURFUlNfUkVRVUVTVCk7CisrCXNvdXBfbWVzc2FnZV9oZWFkZXJzX3JlcGxhY2UgKGhkcnMs ICJSYW5nZSIsIHJhbmdlKTsKKysKKysJc3RhdHVzID0gc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0 X3Jhbmdlc19pbnRlcm5hbCAoaGRycywgdG90YWxfbGVuZ3RoLCBUUlVFLAorKwkJCQkJCQkgICAm cmFuZ2VzLCAmbl9yYW5nZXMpOworKworKwlnX2Fzc2VydF9jbXB1aW50IChzdGF0dXMsID09LCBl eHBlY3RlZF9zdGF0dXMpOworKworKwlpZiAoc3RhdHVzID09IFNPVVBfU1RBVFVTX1BBUlRJQUxf Q09OVEVOVCkgeworKwkJZ19hc3NlcnRfbm9ubnVsbCAocmFuZ2VzKTsKKysJCWdfYXNzZXJ0X2Nt cGludCAobl9yYW5nZXMsID09LCBleHBlY3RlZF9uX3Jhbmdlcyk7CisrCisrCQlmb3IgKGkgPSAw OyBpIDwgbl9yYW5nZXM7IGkrKykgeworKwkJCWRlYnVnX3ByaW50ZiAoMiwgIiAgICBbJWRdOiAl IiBHX0dJTlQ2NF9GT1JNQVQgIi0lIiBHX0dJTlQ2NF9GT1JNQVQgIlxuIiwKKysJCQkJICAgICAg aSwgcmFuZ2VzW2ldLnN0YXJ0LCByYW5nZXNbaV0uZW5kKTsKKysKKysJCQlnX2Fzc2VydF9jbXBp bnQgKHJhbmdlc1tpXS5zdGFydCwgPT0sIGV4cGVjdGVkX3Jhbmdlc1tpXS5zdGFydCk7CisrCQkJ Z19hc3NlcnRfY21waW50IChyYW5nZXNbaV0uZW5kLCA9PSwgZXhwZWN0ZWRfcmFuZ2VzW2ldLmVu ZCk7CisrCisrCQkJLyogV2hhdGV2ZXIgdGhlIGlucHV0LCB0aGUgcGFyc2VkIHJhbmdlcyBtdXN0 IGJlIHVzYWJsZQorKwkJCSAqIGFzIG9mZnNldHMgaW50byBhIGJ1ZmZlciBvZiB0b3RhbF9sZW5n dGggYnl0ZXMuCisrCQkJICovCisrCQkJZ19hc3NlcnRfY21waW50IChyYW5nZXNbaV0uc3RhcnQs ID49LCAwKTsKKysJCQlnX2Fzc2VydF9jbXBpbnQgKHJhbmdlc1tpXS5lbmQsID49LCByYW5nZXNb aV0uc3RhcnQpOworKwkJCWdfYXNzZXJ0X2NtcGludCAocmFuZ2VzW2ldLmVuZCwgPCwgdG90YWxf bGVuZ3RoKTsKKysJCX0KKysJfQorKworKwlzb3VwX21lc3NhZ2VfaGVhZGVyc19mcmVlX3Jhbmdl cyAoaGRycywgcmFuZ2VzKTsKKysJc291cF9tZXNzYWdlX2hlYWRlcnNfdW5yZWYgKGhkcnMpOwor K30KKysKKytzdGF0aWMgdm9pZAorK2RvX3JhbmdlX3BhcnNpbmdfdGVzdCAodm9pZCkKKyt7Cisr CWd1aW50IGk7CisrCisrCWZvciAoaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMgKHJhbmdlX3BhcnNp bmdfdGVzdHMpOyBpKyspIHsKKysJCWNvbnN0IFJhbmdlUGFyc2luZ1Rlc3QgKnRlc3QgPSAmcmFu Z2VfcGFyc2luZ190ZXN0c1tpXTsKKysKKysJCWRlYnVnX3ByaW50ZiAoMSwgIiUydS4gJXM6ICcl cycgYWdhaW5zdCAlIiBHX0dPRkZTRVRfRk9STUFUICIgYnl0ZXNcbiIsCisrCQkJICAgICAgaSAr IDEsIHRlc3QtPmRlc2NyaXB0aW9uLCB0ZXN0LT5yYW5nZSwgdGVzdC0+dG90YWxfbGVuZ3RoKTsK KysKKysJCWlmICh0ZXN0LT5idWdyZWYpCisrCQkJZ190ZXN0X21lc3NhZ2UgKCJCdWcgcmVmZXJl bmNlOiAlcyIsIHRlc3QtPmJ1Z3JlZik7CisrCisrCQljaGVja19wYXJzZWRfcmFuZ2VzICh0ZXN0 LT5yYW5nZSwgdGVzdC0+dG90YWxfbGVuZ3RoLAorKwkJCQkgICAgIHRlc3QtPmV4cGVjdGVkX3N0 YXR1cywgdGVzdC0+ZXhwZWN0ZWRfbl9yYW5nZXMsCisrCQkJCSAgICAgdGVzdC0+ZXhwZWN0ZWRf cmFuZ2VzKTsKKysJfQorK30KKysKKysvKiBBIHNpbmdsZSBSYW5nZSBoZWFkZXIgY2FuIGxpc3Qg ZmFyIG1vcmUgcmFuZ2VzIHRoYW4gYXJlIHJlYXNvbmFibGUgdG8gc2VydmU6CisrICogdGhlIG9u bHkgbGltaXQgb24gdGhlIHdpcmUgaXMgdGhlIG1heGltdW0gcmVxdWVzdCBoZWFkZXIgc2l6ZS4g Ki8KKytzdGF0aWMgdm9pZAorK2RvX3JhbmdlX2NvdW50X3Rlc3QgKHZvaWQpCisreworKwlzdHJ1 Y3QgeworKwkJaW50IG5fcmFuZ2VzOworKwkJZ2Jvb2xlYW4gaWRlbnRpY2FsOworKwkJZ3VpbnQg ZXhwZWN0ZWRfc3RhdHVzOworKwkJaW50IGV4cGVjdGVkX25fcmFuZ2VzOworKwl9IHRlc3RzW10g PSB7CisrCQkvKiBEaXN0aW5jdCByYW5nZXMsIHVwIHRvIGFuZCB0aGVuIHBhc3QgdGhlIGxpbWl0 LiBHb2luZyBwYXN0IGl0CisrCQkgKiBpcyByZWplY3RlZCByYXRoZXIgdGhhbiBpZ25vcmVkLgor KwkJICovCisrCQl7IDEwMCwgRkFMU0UsIFNPVVBfU1RBVFVTX1BBUlRJQUxfQ09OVEVOVCwgMTAw IH0sCisrCQl7IE1BWF9SQU5HRVMsIEZBTFNFLCBTT1VQX1NUQVRVU19QQVJUSUFMX0NPTlRFTlQs IE1BWF9SQU5HRVMgfSwKKysJCXsgTUFYX1JBTkdFUyArIDEsIEZBTFNFLCBTT1VQX1NUQVRVU19S RVFVRVNURURfUkFOR0VfTk9UX1NBVElTRklBQkxFLCAwIH0sCisrCisrCQkvKiBJZGVudGljYWwg cmFuZ2VzLCB3aGljaCBhbGwgbWVyZ2UgaW50byBvbmUuIFRoaXMgaXMgdGhlCisrCQkgKiBzaGFw ZSB3aGljaCB1c2VkIHRvIGJlIHF1YWRyYXRpYy4KKysJCSAqLworKwkJeyBNQVhfUkFOR0VTLCBU UlVFLCBTT1VQX1NUQVRVU19QQVJUSUFMX0NPTlRFTlQsIDEgfSwKKysJCXsgTUFYX1JBTkdFUyAr IDEsIFRSVUUsIFNPVVBfU1RBVFVTX1JFUVVFU1RFRF9SQU5HRV9OT1RfU0FUSVNGSUFCTEUsIDAg fSwKKysJCXsgMjU1ODUsIFRSVUUsIFNPVVBfU1RBVFVTX1JFUVVFU1RFRF9SQU5HRV9OT1RfU0FU SVNGSUFCTEUsIDAgfSwKKysJfTsKKysJZ3VpbnQgaTsKKysJaW50IGo7CisrCisrCWZvciAoaSA9 IDA7IGkgPCBHX05fRUxFTUVOVFMgKHRlc3RzKTsgaSsrKSB7CisrCQlTb3VwTWVzc2FnZUhlYWRl cnMgKmhkcnM7CisrCQlTb3VwUmFuZ2UgKnJhbmdlcyA9IE5VTEw7CisrCQlpbnQgbl9yYW5nZXMg PSAwOworKwkJZ3VpbnQgc3RhdHVzOworKwkJR1N0cmluZyAqcmFuZ2U7CisrCisrCQlkZWJ1Z19w cmludGYgKDEsICIlMnUuICVkICVzIHJhbmdlc1xuIiwgaSArIDEsIHRlc3RzW2ldLm5fcmFuZ2Vz LAorKwkJCSAgICAgIHRlc3RzW2ldLmlkZW50aWNhbCA/ICJpZGVudGljYWwiIDogImRpc3RpbmN0 Iik7CisrCisrCQlyYW5nZSA9IGdfc3RyaW5nX25ldyAoImJ5dGVzPSIpOworKwkJZm9yIChqID0g MDsgaiA8IHRlc3RzW2ldLm5fcmFuZ2VzOyBqKyspIHsKKysJCQlpbnQgc3RhcnQgPSB0ZXN0c1tp XS5pZGVudGljYWwgPyAwIDogaiAqIDI7CisrCisrCQkJaWYgKGogPiAwKQorKwkJCQlnX3N0cmlu Z19hcHBlbmRfYyAocmFuZ2UsICcsJyk7CisrCQkJZ19zdHJpbmdfYXBwZW5kX3ByaW50ZiAocmFu Z2UsICIlZC0lZCIsIHN0YXJ0LCBzdGFydCk7CisrCQl9CisrCisrCQloZHJzID0gc291cF9tZXNz YWdlX2hlYWRlcnNfbmV3IChTT1VQX01FU1NBR0VfSEVBREVSU19SRVFVRVNUKTsKKysJCXNvdXBf bWVzc2FnZV9oZWFkZXJzX3JlcGxhY2UgKGhkcnMsICJSYW5nZSIsIHJhbmdlLT5zdHIpOworKwkJ Z19zdHJpbmdfZnJlZSAocmFuZ2UsIFRSVUUpOworKworKwkJc3RhdHVzID0gc291cF9tZXNzYWdl X2hlYWRlcnNfZ2V0X3Jhbmdlc19pbnRlcm5hbCAoaGRycywgMTAwMDAwMCwgVFJVRSwKKysJCQkJ CQkJCSAgICZyYW5nZXMsICZuX3Jhbmdlcyk7CisrCisrCQlnX2Fzc2VydF9jbXB1aW50IChzdGF0 dXMsID09LCB0ZXN0c1tpXS5leHBlY3RlZF9zdGF0dXMpOworKwkJaWYgKHN0YXR1cyA9PSBTT1VQ X1NUQVRVU19QQVJUSUFMX0NPTlRFTlQpCisrCQkJZ19hc3NlcnRfY21waW50IChuX3Jhbmdlcywg PT0sIHRlc3RzW2ldLmV4cGVjdGVkX25fcmFuZ2VzKTsKKysKKysJCXNvdXBfbWVzc2FnZV9oZWFk ZXJzX2ZyZWVfcmFuZ2VzIChoZHJzLCByYW5nZXMpOworKwkJc291cF9tZXNzYWdlX2hlYWRlcnNf dW5yZWYgKGhkcnMpOworKwl9CisrCisrCS8qIENhbGxlcnMgd2hpY2ggZG9uJ3QgYXNrIGFib3V0 IHNhdGlzZmlhYmlsaXR5LCBzdWNoIGFzIHRoZSBwdWJsaWMKKysJICogc291cF9tZXNzYWdlX2hl YWRlcnNfZ2V0X3JhbmdlcygpLCBjYW4ndCBiZSB0b2xkIDQxNiwgc28gYW4KKysJICogb3Zlci1s aW1pdCBoZWFkZXIganVzdCByZXBvcnRzIG5vIHJhbmdlcyB0byB0aGVtLgorKwkgKi8KKysJewor KwkJU291cE1lc3NhZ2VIZWFkZXJzICpoZHJzOworKwkJU291cFJhbmdlICpyYW5nZXMgPSBOVUxM OworKwkJaW50IG5fcmFuZ2VzID0gMDsKKysJCUdTdHJpbmcgKnJhbmdlOworKworKwkJcmFuZ2Ug PSBnX3N0cmluZ19uZXcgKCJieXRlcz0wLTAiKTsKKysJCWZvciAoaiA9IDA7IGogPCBNQVhfUkFO R0VTOyBqKyspCisrCQkJZ19zdHJpbmdfYXBwZW5kIChyYW5nZSwgIiwwLTAiKTsKKysKKysJCWhk cnMgPSBzb3VwX21lc3NhZ2VfaGVhZGVyc19uZXcgKFNPVVBfTUVTU0FHRV9IRUFERVJTX1JFUVVF U1QpOworKwkJc291cF9tZXNzYWdlX2hlYWRlcnNfcmVwbGFjZSAoaGRycywgIlJhbmdlIiwgcmFu Z2UtPnN0cik7CisrCQlnX3N0cmluZ19mcmVlIChyYW5nZSwgVFJVRSk7CisrCisrCQlnX2Fzc2Vy dF9jbXB1aW50IChzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfcmFuZ2VzX2ludGVybmFsIChoZHJz LCAxMDAwMDAwLCBGQUxTRSwKKysJCQkJCQkJCQkgICAgJnJhbmdlcywgJm5fcmFuZ2VzKSwKKysJ CQkJICA9PSwgU09VUF9TVEFUVVNfT0spOworKwkJZ19hc3NlcnRfZmFsc2UgKHNvdXBfbWVzc2Fn ZV9oZWFkZXJzX2dldF9yYW5nZXMgKGhkcnMsIDEwMDAwMDAsICZyYW5nZXMsICZuX3Jhbmdlcykp OworKworKwkJc291cF9tZXNzYWdlX2hlYWRlcnNfZnJlZV9yYW5nZXMgKGhkcnMsIHJhbmdlcyk7 CisrCQlzb3VwX21lc3NhZ2VfaGVhZGVyc191bnJlZiAoaGRycyk7CisrCX0KKyt9CisrCisgI2lm ZGVmIEhBVkVfQVBBQ0hFCisgc3RhdGljIHZvaWQKKyBkb19hcGFjaGVfcmFuZ2VfdGVzdCAodm9p ZCkKK0BAIC00NzMsNiArNzc0LDQ5IEBAIHNlcnZlcl9oYW5kbGVyIChTb3VwU2VydmVyICAgICAg ICAqc2VydmVyLAorIAkJCQkJZnVsbF9yZXNwb25zZSk7CisgfQorIAorK3N0YXRpYyB2b2lkCisr ZG9fbGlic291cF9vbmx5X3JhbmdlX3Rlc3QgKFNvdXBTZXNzaW9uICpzZXNzaW9uLCBjb25zdCBj aGFyICp1cmkpCisreworKwlnc2l6ZSBmdWxsX3Jlc3BvbnNlX2xlbmd0aCA9IGdfYnl0ZXNfZ2V0 X3NpemUgKGZ1bGxfcmVzcG9uc2UpOworKwlHU3RyaW5nICpyYW5nZTsKKysJaW50IGk7CisrCisr CS8qIEEgc3VmZml4IGxlbmd0aCBhdCBsZWFzdCBhcyBsb25nIGFzIHRoZSBib2R5IHNlbGVjdHMg dGhlIHdob2xlIGJvZHkuICovCisrCWRlYnVnX3ByaW50ZiAoMSwgIlJlcXVlc3RpbmcgKHN1ZmZp eCByYW5nZSB0aGUgbGVuZ3RoIG9mIHRoZSBib2R5KSAtJWRcbiIsCisrCQkgICAgICAoaW50KSBm dWxsX3Jlc3BvbnNlX2xlbmd0aCk7CisrCXJlcXVlc3Rfc2luZ2xlX3JhbmdlIChzZXNzaW9uLCB1 cmksCisrCQkJICAgICAgLSgoaW50KSBmdWxsX3Jlc3BvbnNlX2xlbmd0aCksIC0xLAorKwkJCSAg ICAgIFNPVVBfU1RBVFVTX1BBUlRJQUxfQ09OVEVOVCwgMCwgLTEpOworKworKwlkZWJ1Z19wcmlu dGYgKDEsICJSZXF1ZXN0aW5nIChzdWZmaXggcmFuZ2UgbG9uZ2VyIHRoYW4gdGhlIGJvZHkpIC05 OTk5OTlcbiIpOworKwlyZXF1ZXN0X3NpbmdsZV9yYW5nZV9ieV9zdHJpbmdfZnVsbCAoc2Vzc2lv biwgdXJpLCAiYnl0ZXM9LTk5OTk5OSIsCisrCQkJCQkgICAgIFNPVVBfU1RBVFVTX1BBUlRJQUxf Q09OVEVOVCwgMCwgLTEpOworKworKwlkZWJ1Z19wcmludGYgKDEsICJSZXF1ZXN0aW5nIChzdWZm aXggcmFuZ2Ugb3ZlcmZsb3dpbmcgZ2ludDY0KSAtOTk5OTk5OTk5OTk5OTk5OTk5OTlcbiIpOwor KwlyZXF1ZXN0X3NpbmdsZV9yYW5nZV9ieV9zdHJpbmdfZnVsbCAoc2Vzc2lvbiwgdXJpLCAiYnl0 ZXM9LTk5OTk5OTk5OTk5OTk5OTk5OTk5IiwKKysJCQkJCSAgICAgU09VUF9TVEFUVVNfUEFSVElB TF9DT05URU5ULCAwLCAtMSk7CisrCisrCS8qIEEgc3RhcnQgd2hpY2ggb3ZlcmZsb3dzIGdpbnQ2 NCBpcyB0cmVhdGVkIGxpa2UgYW55IG90aGVyIHN0YXJ0IHBhc3QKKysJICogdGhlIGVuZCBvZiB0 aGUgYm9keS4KKysJICogaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2xpYnNvdXAvLS9p c3N1ZXMvNTM1CisrCSAqLworKwlkZWJ1Z19wcmludGYgKDEsICJSZXF1ZXN0aW5nIChzdGFydCBv dmVyZmxvd2luZyBnaW50NjQpIDk4ODg4ODg4ODg4ODgwMTk5MDAtXG4iKTsKKysJcmVxdWVzdF9z aW5nbGVfcmFuZ2VfYnlfc3RyaW5nIChzZXNzaW9uLCB1cmksICJieXRlcz05ODg4ODg4ODg4ODg4 MDE5OTAwLSIsCisrCQkJCQlTT1VQX1NUQVRVU19PSyk7CisrCisrCS8qIE1vcmUgcmFuZ2VzIHRo YW4gdGhlIHNlcnZlciBpcyB3aWxsaW5nIHRvIGNvYWxlc2NlLCB3aGljaCBpcworKwkgKiByZWpl Y3RlZCByYXRoZXIgdGhhbiBhbnN3ZXJlZCB3aXRoIHRoZSB3aG9sZSBib2R5LgorKwkgKiBodHRw czovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvbGlic291cC8tL2lzc3Vlcy81MzgKKysJICovCisr CWRlYnVnX3ByaW50ZiAoMSwgIlJlcXVlc3RpbmcgKG1vcmUgcmFuZ2VzIHRoYW4gdGhlIGxpbWl0 KVxuIik7CisrCXJhbmdlID0gZ19zdHJpbmdfbmV3ICgiYnl0ZXM9Iik7CisrCWZvciAoaSA9IDA7 IGkgPCBNQVhfUkFOR0VTICsgMTsgaSsrKQorKwkJZ19zdHJpbmdfYXBwZW5kIChyYW5nZSwgaSA+ IDAgPyAiLDAtMCIgOiAiMC0wIik7CisrCXJlcXVlc3Rfc2luZ2xlX3JhbmdlX2J5X3N0cmluZyAo c2Vzc2lvbiwgdXJpLCByYW5nZS0+c3RyLAorKwkJCQkJU09VUF9TVEFUVVNfUkVRVUVTVEVEX1JB TkdFX05PVF9TQVRJU0ZJQUJMRSk7CisrCWdfc3RyaW5nX2ZyZWUgKHJhbmdlLCBUUlVFKTsKKyt9 CisrCisgc3RhdGljIHZvaWQKKyBkb19saWJzb3VwX3JhbmdlX3Rlc3QgKHZvaWQpCisgeworQEAg LTQ4OCw2ICs4MzIsNyBAQCBkb19saWJzb3VwX3JhbmdlX3Rlc3QgKHZvaWQpCisgCWJhc2VfdXJp ID0gc291cF90ZXN0X3NlcnZlcl9nZXRfdXJpIChzZXJ2ZXIsICJodHRwIiwgTlVMTCk7CisgCWJh c2VfdXJpX3N0ciA9IGdfdXJpX3RvX3N0cmluZyAoYmFzZV91cmkpOworIAlkb19yYW5nZV90ZXN0 IChzZXNzaW9uLCBiYXNlX3VyaV9zdHIsIFRSVUUsIFRSVUUpOworKwlkb19saWJzb3VwX29ubHlf cmFuZ2VfdGVzdCAoc2Vzc2lvbiwgYmFzZV91cmlfc3RyKTsKKyAJZ191cmlfdW5yZWYgKGJhc2Vf dXJpKTsKKyAJZ19mcmVlIChiYXNlX3VyaV9zdHIpOworIAlzb3VwX3Rlc3Rfc2VydmVyX3F1aXRf dW5yZWYgKHNlcnZlcik7CitAQCAtNTEyLDYgKzg1Nyw4IEBAIG1haW4gKGludCBhcmdjLCBjaGFy ICoqYXJndikKKyAJZ190ZXN0X2FkZF9mdW5jICgiL3Jhbmdlcy9hcGFjaGUiLCBkb19hcGFjaGVf cmFuZ2VfdGVzdCk7CisgI2VuZGlmCisgCWdfdGVzdF9hZGRfZnVuYyAoIi9yYW5nZXMvbGlic291 cCIsIGRvX2xpYnNvdXBfcmFuZ2VfdGVzdCk7CisrCWdfdGVzdF9hZGRfZnVuYyAoIi9yYW5nZXMv cGFyc2luZyIsIGRvX3JhbmdlX3BhcnNpbmdfdGVzdCk7CisrCWdfdGVzdF9hZGRfZnVuYyAoIi9y YW5nZXMvY291bnQiLCBkb19yYW5nZV9jb3VudF90ZXN0KTsKKyAKKyAJcmV0ID0gZ190ZXN0X3J1 biAoKTsKKyAKK2RpZmYgLS1naXQgYS90ZXN0cy9zZXJ2ZXItbWVtLWxpbWl0LXRlc3QuYyBiL3Rl c3RzL3NlcnZlci1tZW0tbGltaXQtdGVzdC5jCitpbmRleCA2NWRjODc1ZS4uZWUyMGJhOWIgMTAw NjQ0CistLS0gYS90ZXN0cy9zZXJ2ZXItbWVtLWxpbWl0LXRlc3QuYworKysrIGIvdGVzdHMvc2Vy dmVyLW1lbS1saW1pdC10ZXN0LmMKK0BAIC00LDYgKzQsNyBAQAorICAqLworIAorICNpbmNsdWRl ICJ0ZXN0LXV0aWxzLmgiCisrI2luY2x1ZGUgInNvdXAtbWVzc2FnZS1oZWFkZXJzLXByaXZhdGUu aCIKKyAKKyAjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+CisgCitAQCAtODEsNDYgKzgyLDY2IEBA IHNlcnZlcl9maWxlX2NhbGxiYWNrIChTb3VwU2VydmVyICAgICAgICAqc2VydmVyLAorIH0KKyAK KyBzdGF0aWMgdm9pZAorLWRvX3Jhbmdlc19vdmVybGFwc190ZXN0IChTZXJ2ZXJEYXRhICpzZCwg Z2NvbnN0cG9pbnRlciB0ZXN0X2RhdGEpCisrcmVxdWVzdF9yYW5nZXMgKFNlcnZlckRhdGEgKnNk LCBjb25zdCBjaGFyICpyYW5nZSwgU291cFN0YXR1cyBleHBlY3RlZF9zdGF0dXMpCisgeworIAlT b3VwU2Vzc2lvbiAqc2Vzc2lvbjsKKyAJU291cE1lc3NhZ2UgKm1zZzsKKy0JR1N0cmluZyAqcmFu Z2U7CisgCUdVcmkgKnVyaTsKKy0JY29uc3QgY2hhciAqY2h1bmsgPSAiLDAsMCwwLDAsMCwwLDAs MCwwLDAsMCI7CistCistCWdfdGVzdF9idWcgKCI0MjgiKTsKKy0KKy0JI2lmZGVmIEdfT1NfV0lO MzIKKy0JZ190ZXN0X3NraXAgKCJDYW5ub3QgcnVuIHVuZGVyIHdpbmRvd3MiKTsKKy0JcmV0dXJu OworLQkjZW5kaWYKKy0KKy0JcmFuZ2UgPSBnX3N0cmluZ19zaXplZF9uZXcgKDk5ICogMTAyNCk7 CistCWdfc3RyaW5nX2FwcGVuZCAocmFuZ2UsICJieXRlcz0xMDI0Iik7CistCXdoaWxlIChyYW5n ZS0+bGVuIDwgOTkgKiAxMDI0KQorLQkJZ19zdHJpbmdfYXBwZW5kIChyYW5nZSwgY2h1bmspOwor IAorIAlzZXNzaW9uID0gc291cF90ZXN0X3Nlc3Npb25fbmV3IChOVUxMKTsKKy0Jc2VydmVyX2Fk ZF9oYW5kbGVyIChzZCwgIi9maWxlIiwgc2VydmVyX2ZpbGVfY2FsbGJhY2ssIE5VTEwsIE5VTEwp OworIAorIAl1cmkgPSBnX3VyaV9wYXJzZV9yZWxhdGl2ZSAoc2QtPmJhc2VfdXJpLCAiL2ZpbGUi LCBTT1VQX0hUVFBfVVJJX0ZMQUdTLCBOVUxMKTsKKyAKKyAJbXNnID0gc291cF9tZXNzYWdlX25l d19mcm9tX3VyaSAoIkdFVCIsIHVyaSk7CistCXNvdXBfbWVzc2FnZV9oZWFkZXJzX2FwcGVuZCAo c291cF9tZXNzYWdlX2dldF9yZXF1ZXN0X2hlYWRlcnMgKG1zZyksICJSYW5nZSIsIHJhbmdlLT5z dHIpOworKwlzb3VwX21lc3NhZ2VfaGVhZGVyc19hcHBlbmQgKHNvdXBfbWVzc2FnZV9nZXRfcmVx dWVzdF9oZWFkZXJzIChtc2cpLCAiUmFuZ2UiLCByYW5nZSk7CisgCisgCXNvdXBfdGVzdF9zZXNz aW9uX3NlbmRfbWVzc2FnZSAoc2Vzc2lvbiwgbXNnKTsKKyAKKy0Jc291cF90ZXN0X2Fzc2VydF9t ZXNzYWdlX3N0YXR1cyAobXNnLCBTT1VQX1NUQVRVU19QQVJUSUFMX0NPTlRFTlQpOworKwlzb3Vw X3Rlc3RfYXNzZXJ0X21lc3NhZ2Vfc3RhdHVzIChtc2csIGV4cGVjdGVkX3N0YXR1cyk7CisgCisg CWdfb2JqZWN0X3VucmVmIChtc2cpOworLQorLQlnX3N0cmluZ19mcmVlIChyYW5nZSwgVFJVRSk7 CisgCWdfdXJpX3VucmVmICh1cmkpOworIAorIAlzb3VwX3Rlc3Rfc2Vzc2lvbl9hYm9ydF91bnJl ZiAoc2Vzc2lvbik7CisgfQorIAorK3N0YXRpYyB2b2lkCisrZG9fcmFuZ2VzX292ZXJsYXBzX3Rl c3QgKFNlcnZlckRhdGEgKnNkLCBnY29uc3Rwb2ludGVyIHRlc3RfZGF0YSkKKyt7CisrCUdTdHJp bmcgKnJhbmdlOworKwljb25zdCBjaGFyICpjaHVuayA9ICIsMCwwLDAsMCwwLDAsMCwwLDAsMCww IjsKKysJaW50IGk7CisrCisrCWdfdGVzdF9idWcgKCI0MjgiKTsKKysKKysJI2lmZGVmIEdfT1Nf V0lOMzIKKysJZ190ZXN0X3NraXAgKCJDYW5ub3QgcnVuIHVuZGVyIHdpbmRvd3MiKTsKKysJcmV0 dXJuOworKwkjZW5kaWYKKysKKysJc2VydmVyX2FkZF9oYW5kbGVyIChzZCwgIi9maWxlIiwgc2Vy dmVyX2ZpbGVfY2FsbGJhY2ssIE5VTEwsIE5VTEwpOworKworKwkvKiBSZXF1ZXN0aW5nIHRoZSBz YW1lIHJhbmdlIG1hbnkgdGltZXMgb3ZlciB1c2VkIHRvIG1ha2UgdGhlIHNlcnZlcgorKwkgKiBh bGxvY2F0ZSBhIHJlc3BvbnNlIHByb3BvcnRpb25hbCB0byB0aGUgbnVtYmVyIG9mIHJhbmdlcyBp bnN0ZWFkIG9mCisrCSAqIGNvYWxlc2NpbmcgdGhlbSBpbnRvIG9uZS4gRWFjaCAiMCIgaGVyZSBp cyBhbiBvcGVuIGVuZGVkIHJhbmdlCisrCSAqIGNvdmVyaW5nIHRoZSB3aG9sZSBib2R5LCBzbyB0 aGV5IGFsbCBjb2xsYXBzZSBpbnRvIGEgc2luZ2xlIHJhbmdlLgorKwkgKi8KKysJcmFuZ2UgPSBn X3N0cmluZ19uZXcgKCJieXRlcz0xMDI0Iik7CisrCWZvciAoaSA9IDE7IGkgPCBNQVhfUkFOR0VT OyBpKyspCisrCQlnX3N0cmluZ19hcHBlbmQgKHJhbmdlLCAiLDAiKTsKKysJcmVxdWVzdF9yYW5n ZXMgKHNkLCByYW5nZS0+c3RyLCBTT1VQX1NUQVRVU19QQVJUSUFMX0NPTlRFTlQpOworKwlnX3N0 cmluZ19mcmVlIChyYW5nZSwgVFJVRSk7CisrCisrCS8qIEEgaGVhZGVyIGxpc3RpbmcgbW9yZSBy YW5nZXMgdGhhbiB0aGUgc2VydmVyIGlzIHdpbGxpbmcgdG8gY29hbGVzY2UKKysJICogaXMgcmVq ZWN0ZWQgb3V0cmlnaHQuICovCisrCXJhbmdlID0gZ19zdHJpbmdfc2l6ZWRfbmV3ICgoZ3NpemUp OTkgKiAxMDI0KTsKKysJZ19zdHJpbmdfYXBwZW5kIChyYW5nZSwgImJ5dGVzPTEwMjQiKTsKKysJ d2hpbGUgKHJhbmdlLT5sZW4gPCAoZ3NzaXplKTk5ICogMTAyNCkKKysJCWdfc3RyaW5nX2FwcGVu ZCAocmFuZ2UsIGNodW5rKTsKKysJcmVxdWVzdF9yYW5nZXMgKHNkLCByYW5nZS0+c3RyLCBTT1VQ X1NUQVRVU19SRVFVRVNURURfUkFOR0VfTk9UX1NBVElTRklBQkxFKTsKKysJZ19zdHJpbmdfZnJl ZSAocmFuZ2UsIFRSVUUpOworK30KKysKKyBpbnQKKyBtYWluIChpbnQgYXJnYywgY2hhciAqKmFy Z3YpCisgeworLS0gCitHaXRMYWIKKwoKZGlmZiAtLWdpdCBhL2xpYnNvdXAzLnNwZWMgYi9saWJz b3VwMy5zcGVjCmluZGV4IDZjM2NkN2YuLmFlMWJiZWIgMTAwNjQ0Ci0tLSBhL2xpYnNvdXAzLnNw ZWMKKysrIGIvbGlic291cDMuc3BlYwpAQCAtMjEsNiArMjEsMTMgQEAgUGF0Y2g6ICAgbm8tbnRs bS1pbi1maXBzLW1vZGUucGF0Y2gKICMgaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2xp YnNvdXAvLS93b3JrX2l0ZW1zLzUzMAogUGF0Y2g6ICAgc2tpcC1sb2dnZXItdGVzdC1vbi0zMmJp dC5wYXRjaAogCitQYXRjaDogICBDVkUtMjAyNi03NzY4MC5wYXRjaAorUGF0Y2g6ICAgQ1ZFLTIw MjYtMTU3MTEucGF0Y2gKK1BhdGNoOiAgIENWRS0yMDI2LTE1NzE0LnBhdGNoCitQYXRjaDogICBD VkUtMjAyNi0xNTcwOS5wYXRjaAorUGF0Y2g6ICAgQ1ZFLTIwMjYtMTU3MTMucGF0Y2gKK1BhdGNo OiAgIENWRS0yMDI2LTE1NzEyLnBhdGNoCisKIAogQnVpbGRSZXF1aXJlczogZ2NjCiBCdWlsZFJl cXVpcmVzOiBnZXR0ZXh0Cg==