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] f45: Apply various CVE fixes Date: Sat, 05 Sep 2026 01:22:54 GMT Message-ID: <178857137424.1.6571316064283254185.rpms-libsoup3-f2b42d21480e@fedoraproject.org> List-ID: X-Git-Repo: rpms/libsoup3 X-Git-Branch: f45 X-Git-Rev: f2b42d21480e67966605f0b232c023b13a50cde4 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvbGlic291cDMKQnJh bmNoIDogZjQ1CkNvbW1pdCA6IGYyYjQyZDIxNDgwZTY3OTY2NjA1ZjBiMjMyYzAyM2IxM2E1MGNk ZTQKQXV0aG9yIDogQWRyaWFuIFZvdmsgPGF2b3ZrQHJlZGhhdC5jb20+CkRhdGUgICA6IDIwMjYt MDktMDRUMjE6MTg6MzAtMDQ6MDAKU3RhdHMgIDogKzE5NDkvLTAgaW4gNyBmaWxlKHMpClVSTCAg ICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvbGlic291cDMvYy9mMmI0MmQy MTQ4MGU2Nzk2NjYwNWYwYjIzMmMwMjNiMTNhNTBjZGU0P2JyYW5jaD1mNDUKCkxvZzoKQXBwbHkg dmFyaW91cyBDVkUgZml4ZXMKCi0tLQpkaWZmIC0tZ2l0IGEvQ1ZFLTIwMjYtMTU3MDkucGF0Y2gg Yi9DVkUtMjAyNi0xNTcwOS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li43OTljMzc4Ci0tLSAvZGV2L251bGwKKysrIGIvQ1ZFLTIwMjYtMTU3MDkucGF0Y2gKQEAgLTAs MCArMSw3ODIgQEAKK0Zyb20gYTQyOTQwNDQ0NjZkZjY2ZWE5ODQ5MmQ2N2JiNzQxNzJlZDNmODc2 MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFpheWQgUmFqYWIgPHpheWRyQGFtYXpv bi5jb20+CitEYXRlOiBGcmksIDQgU2VwIDIwMjYgMTQ6MTc6MjMgLTA1MDAKK1N1YmplY3Q6IFtQ QVRDSF0gd2Vic29ja2V0OiBCb3VuZCBkZWNvbXByZXNzZWQgbWVzc2FnZSBzaXplIGR1cmluZyBp bmZsYXRpb24KKworUGFzcyBlYWNoIGNvbm5lY3Rpb24ncyByZW1haW5pbmcgbWF4LXRvdGFsLW1l c3NhZ2Utc2l6ZSBhbGxvd2FuY2UgdGhyb3VnaAordGhlIGdlbmVyaWMgV2ViU29ja2V0IGV4dGVu c2lvbiBwcm9jZXNzaW5nIHBhdGggdmlhIGEgbmV3Citwcm9jZXNzX2luY29taW5nX21lc3NhZ2Vf d2l0aF9saW1pdCB2ZnVuYywgZmFsbGluZyBiYWNrIHRvCitwcm9jZXNzX2luY29taW5nX21lc3Nh Z2UgZm9yIGV4dGVuc2lvbnMgdGhhdCBkb24ndCBpbXBsZW1lbnQgaXQuIEJvdW5kCitwZXJtZXNz YWdlLWRlZmxhdGUgb3V0cHV0IGdyb3d0aCB0byB0aGF0IGFsbG93YW5jZSBhbmQgdXNlIGEgb25l LWJ5dGUKK3Byb2JlIHRvIGRldGVjdCBvdXRwdXQgYmV5b25kIGFuIGV4YWN0IGJvdW5kYXJ5IHdp dGhvdXQgYWxsb2NhdGluZworYW5vdGhlciBub3JtYWwgb3V0cHV0IGNodW5rLgorCitQcmVzZXJ2 ZSB0aGUgZG9jdW1lbnRlZCB1bmxpbWl0ZWQgZGVmYXVsdCBmb3IgY2xpZW50cyBhbmQgZGlyZWN0 Citjb25uZWN0aW9ucy4gU291cFNlcnZlciBjb250aW51ZXMgYXBwbHlpbmcgaXRzIGV4aXN0aW5n IDEyOCBLaUIgZGVmYXVsdCwKK3doaWxlIGNhbGxlcnMgY2FuIGNvbmZpZ3VyZSB0aGUgbGltaXQg ZXhwbGljaXRseSBpbiBlaXRoZXIgcmVjZWl2ZQorZGlyZWN0aW9uLgorCitBZGQgYm91bmRhcnks IGdlbmVyaWMtZXh0ZW5zaW9uIGZhbGxiYWNrLCByZWNlaXZlLWRpcmVjdGlvbiwgU291cFNlcnZl ciwKK2ZyYWdtZW50YXRpb24sIGFuZCB1bmxpbWl0ZWQtbW9kZSBjb3ZlcmFnZS4KKworVGhpcyBh ZGRyZXNzZXMgQ1ZFLTIwMjYtMTU3MDkuCisKK1JlcG9ydGVkLWJ5OiBUcmlzdGFuIE1hZGFuaSA8 c2VjaWVudGlzdEBnbWFpbC5jb20+CitDbG9zZXMgITU0MworLS0tCisgbGlic291cC93ZWJzb2Nr ZXQvc291cC13ZWJzb2NrZXQtY29ubmVjdGlvbi5jIHwgIDM0ICstCisgLi4uL3NvdXAtd2Vic29j a2V0LWV4dGVuc2lvbi1kZWZsYXRlLmMgICAgICAgIHwgMTQ0ICsrKysrKy0tLQorIGxpYnNvdXAv d2Vic29ja2V0L3NvdXAtd2Vic29ja2V0LWV4dGVuc2lvbi5jICB8ICA1MyArKysKKyBsaWJzb3Vw L3dlYnNvY2tldC9zb3VwLXdlYnNvY2tldC1leHRlbnNpb24uaCAgfCAgMTQgKy0KKyB0ZXN0cy93 ZWJzb2NrZXQtdGVzdC5jICAgICAgICAgICAgICAgICAgICAgICAgfCAzMDYgKysrKysrKysrKysr KysrKystCisgNSBmaWxlcyBjaGFuZ2VkLCA1MDYgaW5zZXJ0aW9ucygrKSwgNDUgZGVsZXRpb25z KC0pCisKK2RpZmYgLS1naXQgYS9saWJzb3VwL3dlYnNvY2tldC9zb3VwLXdlYnNvY2tldC1jb25u ZWN0aW9uLmMgYi9saWJzb3VwL3dlYnNvY2tldC9zb3VwLXdlYnNvY2tldC1jb25uZWN0aW9uLmMK K2luZGV4IGZmZDcxM2VmLi5mMDdkNDIxOSAxMDA2NDQKKy0tLSBhL2xpYnNvdXAvd2Vic29ja2V0 L3NvdXAtd2Vic29ja2V0LWNvbm5lY3Rpb24uYworKysrIGIvbGlic291cC93ZWJzb2NrZXQvc291 cC13ZWJzb2NrZXQtY29ubmVjdGlvbi5jCitAQCAtOTkwLDggKzk5MCwxNSBAQCBwcm9jZXNzX2Nv bnRlbnRzIChTb3VwV2Vic29ja2V0Q29ubmVjdGlvbiAqc2VsZiwKKyAJCWNhc2UgMHgwMjoKKyAJ CQkvKiBTYWZldHkgdmFsdmUgKi8KKyAJCQlpZiAocHJpdi0+bWF4X3RvdGFsX21lc3NhZ2Vfc2l6 ZSA+IDAgJiYKKy0JCQkgICAgKHByaXYtPm1lc3NhZ2VfZGF0YS0+bGVuICsgcGF5bG9hZF9sZW4p ID4gcHJpdi0+bWF4X3RvdGFsX21lc3NhZ2Vfc2l6ZSkgeworLQkJCQl0b29fYmlnX21lc3NhZ2Vf ZXJyb3JfYW5kX2Nsb3NlIChzZWxmLCAocHJpdi0+bWVzc2FnZV9kYXRhLT5sZW4gKyBwYXlsb2Fk X2xlbikpOworKwkJCSAgICAocHJpdi0+bWVzc2FnZV9kYXRhLT5sZW4gPiBwcml2LT5tYXhfdG90 YWxfbWVzc2FnZV9zaXplIHx8CisrCQkJICAgICBwYXlsb2FkX2xlbiA+IHByaXYtPm1heF90b3Rh bF9tZXNzYWdlX3NpemUgLSBwcml2LT5tZXNzYWdlX2RhdGEtPmxlbikpIHsKKysJCQkJZ3VpbnQ2 NCBtZXNzYWdlX3NpemUgPSBwcml2LT5tZXNzYWdlX2RhdGEtPmxlbjsKKysKKysJCQkJaWYgKHBh eWxvYWRfbGVuID4gR19NQVhVSU5UNjQgLSBtZXNzYWdlX3NpemUpCisrCQkJCQltZXNzYWdlX3Np emUgPSBHX01BWFVJTlQ2NDsKKysJCQkJZWxzZQorKwkJCQkJbWVzc2FnZV9zaXplICs9IHBheWxv YWRfbGVuOworKwkJCQl0b29fYmlnX21lc3NhZ2VfZXJyb3JfYW5kX2Nsb3NlIChzZWxmLCBtZXNz YWdlX3NpemUpOworIAkJCQlyZXR1cm47CisgCQkJfQorIAkJCWdfYnl0ZV9hcnJheV9hcHBlbmQg KHByaXYtPm1lc3NhZ2VfZGF0YSwgcGF5bG9hZCwgcGF5bG9hZF9sZW4pOworQEAgLTEwMzYsNiAr MTA0MywyMSBAQCBwcm9jZXNzX2NvbnRlbnRzIChTb3VwV2Vic29ja2V0Q29ubmVjdGlvbiAqc2Vs ZiwKKyAJfQorIH0KKyAKKytzdGF0aWMgZ3VpbnQ2NAorK2dldF9yZW1haW5pbmdfbWVzc2FnZV9z aXplIChTb3VwV2Vic29ja2V0Q29ubmVjdGlvblByaXZhdGUgKnByaXYpCisreworKwlpZiAocHJp di0+bWF4X3RvdGFsX21lc3NhZ2Vfc2l6ZSA9PSAwKQorKwkJcmV0dXJuIEdfTUFYVUlOVDY0Owor KworKwlpZiAoIXByaXYtPm1lc3NhZ2VfZGF0YSkKKysJCXJldHVybiBwcml2LT5tYXhfdG90YWxf bWVzc2FnZV9zaXplOworKworKwlpZiAocHJpdi0+bWVzc2FnZV9kYXRhLT5sZW4gPj0gcHJpdi0+ bWF4X3RvdGFsX21lc3NhZ2Vfc2l6ZSkKKysJCXJldHVybiAwOworKworKwlyZXR1cm4gcHJpdi0+ bWF4X3RvdGFsX21lc3NhZ2Vfc2l6ZSAtIHByaXYtPm1lc3NhZ2VfZGF0YS0+bGVuOworK30KKysK KyBzdGF0aWMgZ2Jvb2xlYW4KKyBwcm9jZXNzX2ZyYW1lIChTb3VwV2Vic29ja2V0Q29ubmVjdGlv biAqc2VsZikKKyB7CitAQCAtMTA1MSw2ICsxMDczLDcgQEAgcHJvY2Vzc19mcmFtZSAoU291cFdl YnNvY2tldENvbm5lY3Rpb24gKnNlbGYpCisgCWdzaXplIGxlbjsKKyAJZ3NpemUgYXQ7CisgCUdC eXRlcyAqZmlsdGVyZWRfYnl0ZXM7CisrCWd1aW50NjQgbWF4X291dHB1dF9zaXplOworIAlHTGlz dCAqbDsKKyAJR0Vycm9yICplcnJvciA9IE5VTEw7CisgCitAQCAtMTE2NSwxMSArMTE4OCwxNiBA QCBwcm9jZXNzX2ZyYW1lIChTb3VwV2Vic29ja2V0Q29ubmVjdGlvbiAqc2VsZikKKyAJfQorIAor IAlmaWx0ZXJlZF9ieXRlcyA9IGdfYnl0ZXNfbmV3X3N0YXRpYyAocGF5bG9hZCwgcGF5bG9hZF9s ZW4pOworKwltYXhfb3V0cHV0X3NpemUgPSBnZXRfcmVtYWluaW5nX21lc3NhZ2Vfc2l6ZSAocHJp dik7CisgCWZvciAobCA9IHByaXYtPmV4dGVuc2lvbnM7IGwgIT0gTlVMTDsgbCA9IGdfbGlzdF9u ZXh0IChsKSkgeworIAkJU291cFdlYnNvY2tldEV4dGVuc2lvbiAqZXh0ZW5zaW9uOworIAorIAkJ ZXh0ZW5zaW9uID0gKFNvdXBXZWJzb2NrZXRFeHRlbnNpb24gKilsLT5kYXRhOworLQkJZmlsdGVy ZWRfYnl0ZXMgPSBzb3VwX3dlYnNvY2tldF9leHRlbnNpb25fcHJvY2Vzc19pbmNvbWluZ19tZXNz YWdlIChleHRlbnNpb24sIHByaXYtPmluY29taW5nLT5kYXRhLCBmaWx0ZXJlZF9ieXRlcywgJmVy cm9yKTsKKysJCWZpbHRlcmVkX2J5dGVzID0gc291cF93ZWJzb2NrZXRfZXh0ZW5zaW9uX3Byb2Nl c3NfaW5jb21pbmdfbWVzc2FnZV93aXRoX2xpbWl0IChleHRlbnNpb24sCisrCQkJCQkJCQkJCQkg ICAgICAgcHJpdi0+aW5jb21pbmctPmRhdGEsCisrCQkJCQkJCQkJCQkgICAgICAgZmlsdGVyZWRf Ynl0ZXMsCisrCQkJCQkJCQkJCQkgICAgICAgbWF4X291dHB1dF9zaXplLAorKwkJCQkJCQkJCQkJ ICAgICAgICZlcnJvcik7CisgCQlpZiAoZXJyb3IpIHsKKyAJCQllbWl0X2Vycm9yX2FuZF9jbG9z ZSAoc2VsZiwgZXJyb3IsIEZBTFNFKTsKKyAJCQlyZXR1cm4gRkFMU0U7CitkaWZmIC0tZ2l0IGEv bGlic291cC93ZWJzb2NrZXQvc291cC13ZWJzb2NrZXQtZXh0ZW5zaW9uLWRlZmxhdGUuYyBiL2xp YnNvdXAvd2Vic29ja2V0L3NvdXAtd2Vic29ja2V0LWV4dGVuc2lvbi1kZWZsYXRlLmMKK2luZGV4 IGZhOThhMmUyLi4yYzY0OWE4OCAxMDA2NDQKKy0tLSBhL2xpYnNvdXAvd2Vic29ja2V0L3NvdXAt d2Vic29ja2V0LWV4dGVuc2lvbi1kZWZsYXRlLmMKKysrKyBiL2xpYnNvdXAvd2Vic29ja2V0L3Nv dXAtd2Vic29ja2V0LWV4dGVuc2lvbi1kZWZsYXRlLmMKK0BAIC0zNTksMTkgKzM1OSwyOSBAQCBz b3VwX3dlYnNvY2tldF9leHRlbnNpb25fZGVmbGF0ZV9wcm9jZXNzX291dGdvaW5nX21lc3NhZ2Ug KFNvdXBXZWJzb2NrZXRFeHRlbnNpbworICAgICAgICAgcmV0dXJuIGdfYnl0ZV9hcnJheV9mcmVl X3RvX2J5dGVzIChidWZmZXIpOworIH0KKyAKKytzdGF0aWMgdm9pZAorK2luZmxhdGVyX3Jlc2V0 IChJbmZsYXRlciAqaW5mbGF0ZXIpCisreworKyAgICAgICAgaW5mbGF0ZVJlc2V0ICgmaW5mbGF0 ZXItPnpzdHJlYW0pOworKyAgICAgICAgaW5mbGF0ZXItPnVuY29tcHJlc3Nfb25nb2luZyA9IEZB TFNFOworK30KKysKKyBzdGF0aWMgR0J5dGVzICoKKy1zb3VwX3dlYnNvY2tldF9leHRlbnNpb25f ZGVmbGF0ZV9wcm9jZXNzX2luY29taW5nX21lc3NhZ2UgKFNvdXBXZWJzb2NrZXRFeHRlbnNpb24g KmV4dGVuc2lvbiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGd1aW50OCAgICAgICAgICAgICAgICAgKmhlYWRlciwKKy0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdCeXRl cyAgICAgICAgICAgICAgICAgKnBheWxvYWQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICAgICAgICAgICAgKipl cnJvcikKKytzb3VwX3dlYnNvY2tldF9leHRlbnNpb25fZGVmbGF0ZV9wcm9jZXNzX2luY29taW5n X21lc3NhZ2Vfd2l0aF9saW1pdCAoU291cFdlYnNvY2tldEV4dGVuc2lvbiAqZXh0ZW5zaW9uLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBndWludDggICAgICAgICAgICAgICAgICpoZWFkZXIsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEdCeXRlcyAgICAgICAgICAgICAgICAgKnBheWxvYWQsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50 NjQgICAgICAgICAgICAgICAgIG1heF9vdXRwdXRfc2l6ZSwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9y ICAgICAgICAgICAgICAgICoqZXJyb3IpCisgeworICAgICAgICAgY29uc3QgZ3VpbnQ4ICpwYXls b2FkX2RhdGE7CisgICAgICAgICBnc2l6ZSBwYXlsb2FkX2xlbmd0aDsKKyAgICAgICAgIGdib29s ZWFuIGZpbiwgY29udHJvbCwgY29tcHJlc3NlZDsKKyAgICAgICAgIEdCeXRlQXJyYXkgKmJ1ZmZl cjsKKy0gICAgICAgIGdzaXplIGJ5dGVzX3JlYWQsIGJ5dGVzX3dyaXR0ZW47CisrICAgICAgICBn c2l6ZSBpbnB1dF9vZmZzZXQsIGJ5dGVzX3dyaXR0ZW47CisgICAgICAgICBpbnQgcmVzdWx0Owor ICAgICAgICAgZ2Jvb2xlYW4gdGFpbF9hZGRlZCA9IEZBTFNFOworKyAgICAgICAgZ2Jvb2xlYW4g dXNpbmdfbGltaXRfcHJvYmUgPSBGQUxTRTsKKysgICAgICAgIGd1aW50OCBsaW1pdF9wcm9iZTsK KyAgICAgICAgIFNvdXBXZWJzb2NrZXRFeHRlbnNpb25EZWZsYXRlUHJpdmF0ZSAqcHJpdjsKKyAK KyAgICAgICAgIHByaXYgPSBzb3VwX3dlYnNvY2tldF9leHRlbnNpb25fZGVmbGF0ZV9nZXRfaW5z dGFuY2VfcHJpdmF0ZSAoU09VUF9XRUJTT0NLRVRfRVhURU5TSU9OX0RFRkxBVEUgKGV4dGVuc2lv bikpOworQEAgLTM5NCw2ICs0MDQsNyBAQCBzb3VwX3dlYnNvY2tldF9leHRlbnNpb25fZGVmbGF0 ZV9wcm9jZXNzX2luY29taW5nX21lc3NhZ2UgKFNvdXBXZWJzb2NrZXRFeHRlbnNpbworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTT1VQX1dFQlNPQ0tFVF9FUlJPUiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU09VUF9XRUJTT0NLRVRfQ0xPU0Vf UFJPVE9DT0xfRVJST1IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJS ZWNlaXZlZCBhIG5vbi1maXJzdCBmcmFtZSB3aXRoIFJTVjEgZmxhZyBzZXQiKTsKKysgICAgICAg ICAgICAgICAgaW5mbGF0ZXJfcmVzZXQgKCZwcml2LT5pbmZsYXRlcik7CisgICAgICAgICAgICAg ICAgIGdfYnl0ZXNfdW5yZWYgKHBheWxvYWQpOworICAgICAgICAgICAgICAgICByZXR1cm4gTlVM TDsKKyAgICAgICAgIH0KK0BAIC00MTAsNjQgKzQyMSwxMjIgQEAgc291cF93ZWJzb2NrZXRfZXh0 ZW5zaW9uX2RlZmxhdGVfcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlIChTb3VwV2Vic29ja2V0RXh0 ZW5zaW8KKyAKKyAgICAgICAgIGJ1ZmZlciA9IGdfYnl0ZV9hcnJheV9uZXcgKCk7CisgCistICAg ICAgICBieXRlc19yZWFkID0gMDsKKy0gICAgICAgIHByaXYtPmluZmxhdGVyLnpzdHJlYW0ubmV4 dF9pbiA9ICh2b2lkICopcGF5bG9hZF9kYXRhOworLSAgICAgICAgcHJpdi0+aW5mbGF0ZXIuenN0 cmVhbS5hdmFpbF9pbiA9IHBheWxvYWRfbGVuZ3RoOworLQorKyAgICAgICAgaW5wdXRfb2Zmc2V0 ID0gMDsKKysgICAgICAgIHByaXYtPmluZmxhdGVyLnpzdHJlYW0uYXZhaWxfaW4gPSAwOworICAg ICAgICAgYnl0ZXNfd3JpdHRlbiA9IDA7CisgICAgICAgICBwcml2LT5pbmZsYXRlci56c3RyZWFt LmF2YWlsX291dCA9IDA7CisgCistICAgICAgICBkbyB7CistICAgICAgICAgICAgICAgIGdzaXpl IHJlYWRfcmVtYWluaW5nOworLSAgICAgICAgICAgICAgICBnc2l6ZSB3cml0ZV9yZW1haW5pbmc7 CisrICAgICAgICB3aGlsZSAoVFJVRSkgeworKyAgICAgICAgICAgICAgICB1SW50IGlucHV0X2Jl Zm9yZSwgb3V0cHV0X2JlZm9yZTsKKysgICAgICAgICAgICAgICAgdUludCBpbnB1dF9jb25zdW1l ZCwgb3V0cHV0X3Byb2R1Y2VkOworIAorLSAgICAgICAgICAgICAgICBpZiAocHJpdi0+aW5mbGF0 ZXIuenN0cmVhbS5hdmFpbF9vdXQgPT0gMCkgeworLSAgICAgICAgICAgICAgICAgICAgICAgIGd1 aW50IGN1cnJlbnRfcG9zaXRpb247CisrICAgICAgICAgICAgICAgIGlmIChwcml2LT5pbmZsYXRl ci56c3RyZWFtLmF2YWlsX2luID09IDAgJiYgaW5wdXRfb2Zmc2V0IDwgcGF5bG9hZF9sZW5ndGgp IHsKKysgICAgICAgICAgICAgICAgICAgICAgICBnc2l6ZSBpbnB1dF9sZW5ndGggPSBNSU4gKHBh eWxvYWRfbGVuZ3RoIC0gaW5wdXRfb2Zmc2V0LCBHX01BWFVJTlQpOworIAorLSAgICAgICAgICAg ICAgICAgICAgICAgIHByaXYtPmluZmxhdGVyLnpzdHJlYW0uYXZhaWxfb3V0ID0gQlVGRkVSX1NJ WkU7CistICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9wb3NpdGlvbiA9IGJ1ZmZlci0+ bGVuOworLSAgICAgICAgICAgICAgICAgICAgICAgIGdfYnl0ZV9hcnJheV9zZXRfc2l6ZSAoYnVm ZmVyLCBidWZmZXItPmxlbiArIEJVRkZFUl9TSVpFKTsKKy0gICAgICAgICAgICAgICAgICAgICAg ICBwcml2LT5pbmZsYXRlci56c3RyZWFtLm5leHRfb3V0ID0gYnVmZmVyLT5kYXRhICsgY3VycmVu dF9wb3NpdGlvbjsKKysgICAgICAgICAgICAgICAgICAgICAgICBwcml2LT5pbmZsYXRlci56c3Ry ZWFtLm5leHRfaW4gPSAodm9pZCAqKShwYXlsb2FkX2RhdGEgKyBpbnB1dF9vZmZzZXQpOworKyAg ICAgICAgICAgICAgICAgICAgICAgIHByaXYtPmluZmxhdGVyLnpzdHJlYW0uYXZhaWxfaW4gPSAo dUludClpbnB1dF9sZW5ndGg7CisrICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfb2Zmc2V0 ICs9IGlucHV0X2xlbmd0aDsKKyAgICAgICAgICAgICAgICAgfQorIAorLSAgICAgICAgICAgICAg ICBpZiAocHJpdi0+aW5mbGF0ZXIuenN0cmVhbS5hdmFpbF9pbiA9PSAwICYmICF0YWlsX2FkZGVk ICYmIGZpbikgeworKyAgICAgICAgICAgICAgICBpZiAocHJpdi0+aW5mbGF0ZXIuenN0cmVhbS5h dmFpbF9pbiA9PSAwICYmCisrICAgICAgICAgICAgICAgICAgICBpbnB1dF9vZmZzZXQgPT0gcGF5 bG9hZF9sZW5ndGggJiYKKysgICAgICAgICAgICAgICAgICAgICF0YWlsX2FkZGVkICYmIGZpbikg eworICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFwcGVuZCA0IG9jdGV0cyBvZiAweDAwIDB4 MDAgMHhmZiAweGZmIHRvIHRoZSB0YWlsIGVuZCAqLworICAgICAgICAgICAgICAgICAgICAgICAg IHByaXYtPmluZmxhdGVyLnpzdHJlYW0ubmV4dF9pbiA9ICh2b2lkICopIlx4MDBceDAwXHhmZlx4 ZmYiOworICAgICAgICAgICAgICAgICAgICAgICAgIHByaXYtPmluZmxhdGVyLnpzdHJlYW0uYXZh aWxfaW4gPSA0OworLSAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzX3JlYWQgPSAwOworICAg ICAgICAgICAgICAgICAgICAgICAgIHRhaWxfYWRkZWQgPSBUUlVFOworICAgICAgICAgICAgICAg ICB9CisgCistICAgICAgICAgICAgICAgIHJlYWRfcmVtYWluaW5nID0gdGFpbF9hZGRlZCA/IDQg OiBwYXlsb2FkX2xlbmd0aCAtIGJ5dGVzX3JlYWQ7CistICAgICAgICAgICAgICAgIHdyaXRlX3Jl bWFpbmluZyA9IGJ1ZmZlci0+bGVuIC0gYnl0ZXNfd3JpdHRlbjsKKysgICAgICAgICAgICAgICAg aWYgKHByaXYtPmluZmxhdGVyLnpzdHJlYW0uYXZhaWxfb3V0ID09IDApIHsKKysgICAgICAgICAg ICAgICAgICAgICAgICBndWludCBvdXRwdXRfbGVuZ3RoID0gQlVGRkVSX1NJWkU7CisrCisrICAg ICAgICAgICAgICAgICAgICAgICAgaWYgKGJ5dGVzX3dyaXR0ZW4gPj0gbWF4X291dHB1dF9zaXpl IHx8IGJ1ZmZlci0+bGVuID09IEdfTUFYVUlOVCkgeworKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcHJpdi0+aW5mbGF0ZXIuenN0cmVhbS5uZXh0X291dCA9ICZsaW1pdF9wcm9iZTsK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaXYtPmluZmxhdGVyLnpzdHJlYW0u YXZhaWxfb3V0ID0gMTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nX2xp bWl0X3Byb2JlID0gVFJVRTsKKysgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQ2NCByZW1haW5pbmcgPSBtYXhfb3V0 cHV0X3NpemUgLSBieXRlc193cml0dGVuOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ3VpbnQgY3VycmVudF9wb3NpdGlvbiA9IGJ1ZmZlci0+bGVuOworKworKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2xlbmd0aCA9IE1JTiAoKGd1aW50NjQpb3V0cHV0 X2xlbmd0aCwgcmVtYWluaW5nKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91 dHB1dF9sZW5ndGggPSBNSU4gKG91dHB1dF9sZW5ndGgsIEdfTUFYVUlOVCAtIGJ1ZmZlci0+bGVu KTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfYXNzZXJ0IChvdXRwdXRfbGVu Z3RoID4gMCk7CisrCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX2J5dGVfYXJy YXlfc2V0X3NpemUgKGJ1ZmZlciwgYnVmZmVyLT5sZW4gKyBvdXRwdXRfbGVuZ3RoKTsKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaXYtPmluZmxhdGVyLnpzdHJlYW0ubmV4dF9v dXQgPSBidWZmZXItPmRhdGEgKyBjdXJyZW50X3Bvc2l0aW9uOworKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcHJpdi0+aW5mbGF0ZXIuenN0cmVhbS5hdmFpbF9vdXQgPSBvdXRwdXRf bGVuZ3RoOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmdfbGltaXRfcHJv YmUgPSBGQUxTRTsKKysgICAgICAgICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAg IH0KKysKKysgICAgICAgICAgICAgICAgaW5wdXRfYmVmb3JlID0gcHJpdi0+aW5mbGF0ZXIuenN0 cmVhbS5hdmFpbF9pbjsKKysgICAgICAgICAgICAgICAgb3V0cHV0X2JlZm9yZSA9IHByaXYtPmlu ZmxhdGVyLnpzdHJlYW0uYXZhaWxfb3V0OworICAgICAgICAgICAgICAgICByZXN1bHQgPSBpbmZs YXRlICgmcHJpdi0+aW5mbGF0ZXIuenN0cmVhbSwgdGFpbF9hZGRlZCA/IFpfRklOSVNIIDogWl9O T19GTFVTSCk7CistICAgICAgICAgICAgICAgIGJ5dGVzX3JlYWQgKz0gcmVhZF9yZW1haW5pbmcg LSBwcml2LT5pbmZsYXRlci56c3RyZWFtLmF2YWlsX2luOworLSAgICAgICAgICAgICAgICBieXRl c193cml0dGVuICs9IHdyaXRlX3JlbWFpbmluZyAtIHByaXYtPmluZmxhdGVyLnpzdHJlYW0uYXZh aWxfb3V0OworKyAgICAgICAgICAgICAgICBpbnB1dF9jb25zdW1lZCA9IGlucHV0X2JlZm9yZSAt IHByaXYtPmluZmxhdGVyLnpzdHJlYW0uYXZhaWxfaW47CisrICAgICAgICAgICAgICAgIG91dHB1 dF9wcm9kdWNlZCA9IG91dHB1dF9iZWZvcmUgLSBwcml2LT5pbmZsYXRlci56c3RyZWFtLmF2YWls X291dDsKKysKKysgICAgICAgICAgICAgICAgaWYgKHVzaW5nX2xpbWl0X3Byb2JlICYmIG91dHB1 dF9wcm9kdWNlZCA+IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdXRwdXRfdG9v X2xhcmdlOworKworKyAgICAgICAgICAgICAgICBieXRlc193cml0dGVuICs9IG91dHB1dF9wcm9k dWNlZDsKKysKKyAgICAgICAgICAgICAgICAgaWYgKCF0YWlsX2FkZGVkICYmIHJlc3VsdCA9PSBa X1NUUkVBTV9FTkQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSZWNlaXZlZCBhIGJs b2NrIHdpdGggQkZJTkFMIHNldCB0byAxLiBSZXNldCBkZWNvbXByZXNzaW9uIHN0YXRlLiAqLwor ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGluZmxhdGVSZXNldCAoJnByaXYtPmlu ZmxhdGVyLnpzdHJlYW0pOworICAgICAgICAgICAgICAgICB9CisgCistICAgICAgICAgICAgICAg IGlmICgoIWZpbiAmJiBieXRlc19yZWFkID09IHBheWxvYWRfbGVuZ3RoKSB8fCAoZmluICYmIHRh aWxfYWRkZWQgJiYgYnl0ZXNfcmVhZCA9PSA0KSkKKy0gICAgICAgICAgICAgICAgICAgICAgICBi cmVhazsKKy0gICAgICAgIH0gd2hpbGUgKHJlc3VsdCA9PSBaX09LIHx8IHJlc3VsdCA9PSBaX0JV Rl9FUlJPUik7CistCistICAgICAgICBnX2J5dGVzX3VucmVmIChwYXlsb2FkKTsKKysgICAgICAg ICAgICAgICAgaWYgKHJlc3VsdCAhPSBaX09LICYmIHJlc3VsdCAhPSBaX0JVRl9FUlJPUikKKysg ICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGludmFsaWRfZGF0YTsKKyAKKy0gICAgICAgIGlm IChyZXN1bHQgIT0gWl9PSyAmJiByZXN1bHQgIT0gWl9CVUZfRVJST1IpIHsKKy0gICAgICAgICAg ICAgICAgcHJpdi0+aW5mbGF0ZXIudW5jb21wcmVzc19vbmdvaW5nID0gRkFMU0U7CistICAgICAg ICAgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwgKGVycm9yLAorLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBTT1VQX1dFQlNPQ0tFVF9FUlJPUiwKKy0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgU09VUF9XRUJTT0NLRVRfQ0xPU0VfUFJPVE9DT0xfRVJS T1IsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gdW5j b21wcmVzcyBpbmNvbWluZyBmcmFtZSIpOworLSAgICAgICAgICAgICAgICBnX2J5dGVfYXJyYXlf dW5yZWYgKGJ1ZmZlcik7CisrICAgICAgICAgICAgICAgIGlmIChwcml2LT5pbmZsYXRlci56c3Ry ZWFtLmF2YWlsX2luID09IDAgJiYKKysgICAgICAgICAgICAgICAgICAgIGlucHV0X29mZnNldCA9 PSBwYXlsb2FkX2xlbmd0aCAmJgorKyAgICAgICAgICAgICAgICAgICAgKCghZmluICYmICF0YWls X2FkZGVkKSB8fCAoZmluICYmIHRhaWxfYWRkZWQpKSAmJgorKyAgICAgICAgICAgICAgICAgICAg cHJpdi0+aW5mbGF0ZXIuenN0cmVhbS5hdmFpbF9vdXQgPiAwKQorKyAgICAgICAgICAgICAgICAg ICAgICAgIGJyZWFrOworIAorLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKysgICAgICAg ICAgICAgICAgaWYgKGlucHV0X2NvbnN1bWVkID09IDAgJiYgb3V0cHV0X3Byb2R1Y2VkID09IDAp CisrICAgICAgICAgICAgICAgICAgICAgICAgZ290byBpbnZhbGlkX2RhdGE7CisgICAgICAgICB9 CisgCisrICAgICAgICBnX2J5dGVzX3VucmVmIChwYXlsb2FkKTsKKyAgICAgICAgIGdfYnl0ZV9h cnJheV9zZXRfc2l6ZSAoYnVmZmVyLCBieXRlc193cml0dGVuKTsKKyAKKyAgICAgICAgIHJldHVy biBnX2J5dGVfYXJyYXlfZnJlZV90b19ieXRlcyAoYnVmZmVyKTsKKysKKytvdXRwdXRfdG9vX2xh cmdlOgorKyAgICAgICAgaW5mbGF0ZXJfcmVzZXQgKCZwcml2LT5pbmZsYXRlcik7CisrICAgICAg ICBnX2J5dGVzX3VucmVmIChwYXlsb2FkKTsKKysgICAgICAgIGdfYnl0ZV9hcnJheV91bnJlZiAo YnVmZmVyKTsKKysgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwgKGVycm9yLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgU09VUF9XRUJTT0NLRVRfRVJST1IsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBTT1VQX1dFQlNPQ0tFVF9DTE9TRV9UT09fQklHLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIkRlY29tcHJlc3NlZCBXZWJTb2NrZXQgbWVzc2FnZSBleGNl ZWRzIGNvbmZpZ3VyZWQgbWF4aW11bSBzaXplIik7CisrCisrICAgICAgICByZXR1cm4gTlVMTDsK KysKKytpbnZhbGlkX2RhdGE6CisrICAgICAgICBpbmZsYXRlcl9yZXNldCAoJnByaXYtPmluZmxh dGVyKTsKKysgICAgICAgIGdfYnl0ZXNfdW5yZWYgKHBheWxvYWQpOworKyAgICAgICAgZ19ieXRl X2FycmF5X3VucmVmIChidWZmZXIpOworKyAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbCAoZXJy b3IsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTT1VQX1dFQlNPQ0tFVF9FUlJPUiwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNPVVBfV0VCU09DS0VUX0NMT1NFX1BST1RP Q09MX0VSUk9SLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byB1bmNv bXByZXNzIGluY29taW5nIGZyYW1lIik7CisrCisrICAgICAgICByZXR1cm4gTlVMTDsKKyt9Cisr Cisrc3RhdGljIEdCeXRlcyAqCisrc291cF93ZWJzb2NrZXRfZXh0ZW5zaW9uX2RlZmxhdGVfcHJv Y2Vzc19pbmNvbWluZ19tZXNzYWdlIChTb3VwV2Vic29ja2V0RXh0ZW5zaW9uICpleHRlbnNpb24s CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBndWludDggICAgICAgICAgICAgICAgICpoZWFkZXIsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQnl0ZXMgICAgICAgICAg ICAgICAgICpwYXlsb2FkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAgICAgICAgICoqZXJyb3IpCisrewor KyAgICAgICAgcmV0dXJuIHNvdXBfd2Vic29ja2V0X2V4dGVuc2lvbl9kZWZsYXRlX3Byb2Nlc3Nf aW5jb21pbmdfbWVzc2FnZV93aXRoX2xpbWl0IChleHRlbnNpb24sCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGhlYWRlciwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9h ZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19NQVhVSU5UNjQsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGVycm9yKTsKKyB9CisgCisgc3RhdGljIHZvaWQKK0BAIC00ODMs NiArNTUyLDcgQEAgc291cF93ZWJzb2NrZXRfZXh0ZW5zaW9uX2RlZmxhdGVfY2xhc3NfaW5pdCAo U291cFdlYnNvY2tldEV4dGVuc2lvbkRlZmxhdGVDbGFzcworICAgICAgICAgZXh0ZW5zaW9uX2Ns YXNzLT5nZXRfcmVzcG9uc2VfcGFyYW1zID0gc291cF93ZWJzb2NrZXRfZXh0ZW5zaW9uX2RlZmxh dGVfZ2V0X3Jlc3BvbnNlX3BhcmFtczsKKyAgICAgICAgIGV4dGVuc2lvbl9jbGFzcy0+cHJvY2Vz c19vdXRnb2luZ19tZXNzYWdlID0gc291cF93ZWJzb2NrZXRfZXh0ZW5zaW9uX2RlZmxhdGVfcHJv Y2Vzc19vdXRnb2luZ19tZXNzYWdlOworICAgICAgICAgZXh0ZW5zaW9uX2NsYXNzLT5wcm9jZXNz X2luY29taW5nX21lc3NhZ2UgPSBzb3VwX3dlYnNvY2tldF9leHRlbnNpb25fZGVmbGF0ZV9wcm9j ZXNzX2luY29taW5nX21lc3NhZ2U7CisrICAgICAgICBleHRlbnNpb25fY2xhc3MtPnByb2Nlc3Nf aW5jb21pbmdfbWVzc2FnZV93aXRoX2xpbWl0ID0gc291cF93ZWJzb2NrZXRfZXh0ZW5zaW9uX2Rl ZmxhdGVfcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlX3dpdGhfbGltaXQ7CisgCisgICAgICAgICBv YmplY3RfY2xhc3MtPmZpbmFsaXplID0gc291cF93ZWJzb2NrZXRfZXh0ZW5zaW9uX2RlZmxhdGVf ZmluYWxpemU7CisgfQorZGlmZiAtLWdpdCBhL2xpYnNvdXAvd2Vic29ja2V0L3NvdXAtd2Vic29j a2V0LWV4dGVuc2lvbi5jIGIvbGlic291cC93ZWJzb2NrZXQvc291cC13ZWJzb2NrZXQtZXh0ZW5z aW9uLmMKK2luZGV4IDg4ODJkMmMwLi45NTcxOWU4YyAxMDA2NDQKKy0tLSBhL2xpYnNvdXAvd2Vi c29ja2V0L3NvdXAtd2Vic29ja2V0LWV4dGVuc2lvbi5jCisrKysgYi9saWJzb3VwL3dlYnNvY2tl dC9zb3VwLXdlYnNvY2tldC1leHRlbnNpb24uYworQEAgLTQ3LDYgKzQ3LDkgQEAKKyAgKiAgICBi ZWZvcmUgaXQncyBzZW50LiBSZXNlcnZlZCBiaXRzIG9mIHRoZSBoZWFkZXIgc2hvdWxkIGJlIGNo YW5nZWQuCisgICogQHByb2Nlc3NfaW5jb21pbmdfbWVzc2FnZTogY2FsbGVkIHRvIHByb2Nlc3Mg dGhlIHBheWxvYWQgZGF0YSBvZiBhIG1lc3NhZ2UKKyAgKiAgICBhZnRlciBpdCdzIHJlY2VpdmVk LiBSZXNlcnZlZCBiaXRzIG9mIHRoZSBoZWFkZXIgc2hvdWxkIGJlIGNsZWFyZWQuCisrICogQHBy b2Nlc3NfaW5jb21pbmdfbWVzc2FnZV93aXRoX2xpbWl0OiBjYWxsZWQgdG8gcHJvY2VzcyB0aGUg cGF5bG9hZCBkYXRhIG9mCisrICogICAgYSBtZXNzYWdlIGFmdGVyIGl0J3MgcmVjZWl2ZWQgd2l0 aG91dCBleGNlZWRpbmcgdGhlIHJlcXVlc3RlZCBtYXhpbXVtCisrICogICAgb3V0cHV0IHNpemUu IElmIHVuc2V0LCBAcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlIGlzIHVzZWQuIFNpbmNlIDMuOAor ICAqCisgICogVGhlIGNsYXNzIHN0cnVjdHVyZSBmb3IgdGhlIFtjbGFzc0BXZWJzb2NrZXRFeHRl bnNpb25dLgorICAqLworQEAgLTIxNiwzICsyMTksNTMgQEAgc291cF93ZWJzb2NrZXRfZXh0ZW5z aW9uX3Byb2Nlc3NfaW5jb21pbmdfbWVzc2FnZSAoU291cFdlYnNvY2tldEV4dGVuc2lvbiAqZXh0 ZW4KKyAKKyAJcmV0dXJuIGtsYXNzLT5wcm9jZXNzX2luY29taW5nX21lc3NhZ2UgKGV4dGVuc2lv biwgaGVhZGVyLCBwYXlsb2FkLCBlcnJvcik7CisgfQorKworKy8qKgorKyAqIHNvdXBfd2Vic29j a2V0X2V4dGVuc2lvbl9wcm9jZXNzX2luY29taW5nX21lc3NhZ2Vfd2l0aF9saW1pdDoKKysgKiBA ZXh0ZW5zaW9uOiBhICNTb3VwV2Vic29ja2V0RXh0ZW5zaW9uCisrICogQGhlYWRlcjogKGlub3V0 KTogdGhlIG1lc3NhZ2UgaGVhZGVyCisrICogQHBheWxvYWQ6ICh0cmFuc2ZlciBmdWxsKTogdGhl IHBheWxvYWQgZGF0YQorKyAqIEBtYXhfb3V0cHV0X3NpemU6IHRoZSBtYXhpbXVtIHNpemUgaW4g Ynl0ZXMgb2YgdGhlIHByb2Nlc3NlZCBwYXlsb2FkCisrICogQGVycm9yOiByZXR1cm4gbG9jYXRp b24gZm9yIGEgI0dFcnJvcgorKyAqCisrICogUHJvY2VzcyBhIG1lc3NhZ2UgYWZ0ZXIgaXQncyBy ZWNlaXZlZCwgd2l0aG91dCBwcm9kdWNpbmcgbW9yZSB0aGFuCisrICogQG1heF9vdXRwdXRfc2l6 ZSBieXRlcyBvZiBvdXRwdXQuCisrICoKKysgKiBUaGlzIGJlaGF2ZXMgbGlrZSBbbWV0aG9kQFdl YnNvY2tldEV4dGVuc2lvbi5wcm9jZXNzX2luY29taW5nX21lc3NhZ2VdLAorKyAqIGJ1dCBleHRl bnNpb25zIHRoYXQgZXhwYW5kIHRoZWlyIGlucHV0IChzdWNoIGFzIGBwZXJtZXNzYWdlLWRlZmxh dGVgKQorKyAqIHN0b3AgYW5kIHJldHVybiBhbiBlcnJvciB3aXRoIFtlcnJvckBXZWJzb2NrZXRF cnJvci5DTE9TRV9UT09fQklHXQorKyAqIGluc3RlYWQgb2YgcHJvZHVjaW5nIG91dHB1dCBsYXJn ZXIgdGhhbiBAbWF4X291dHB1dF9zaXplLiBFeHRlbnNpb25zCisrICogdGhhdCBkb24ndCBpbXBs ZW1lbnQgdGhpcyBmYWxsIGJhY2sgdG8KKysgKiBbbWV0aG9kQFdlYnNvY2tldEV4dGVuc2lvbi5w cm9jZXNzX2luY29taW5nX21lc3NhZ2VdLgorKyAqCisrICogUmV0dXJuczogKHRyYW5zZmVyIGZ1 bGwpOiB0aGUgbWVzc2FnZSBwYXlsb2FkIGRhdGEsIG9yICVOVUxMIGluIGNhc2Ugb2YgZXJyb3IK KysgKgorKyAqIFNpbmNlOiAzLjgKKysgKi8KKytHQnl0ZXMgKgorK3NvdXBfd2Vic29ja2V0X2V4 dGVuc2lvbl9wcm9jZXNzX2luY29taW5nX21lc3NhZ2Vfd2l0aF9saW1pdCAoU291cFdlYnNvY2tl dEV4dGVuc2lvbiAqZXh0ZW5zaW9uLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQ4ICAgICAgICAgICAgICAgICAqaGVh ZGVyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgR0J5dGVzICAgICAgICAgICAgICAgICAqcGF5bG9hZCwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50 NjQgICAgICAgICAgICAgICAgIG1heF9vdXRwdXRfc2l6ZSwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAg ICAgICAgICAqKmVycm9yKQorK3sKKysJU291cFdlYnNvY2tldEV4dGVuc2lvbkNsYXNzICprbGFz czsKKysKKysJZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKFNPVVBfSVNfV0VCU09DS0VUX0VYVEVOU0lP TiAoZXh0ZW5zaW9uKSwgTlVMTCk7CisrCWdfcmV0dXJuX3ZhbF9pZl9mYWlsIChoZWFkZXIgIT0g TlVMTCwgTlVMTCk7CisrCWdfcmV0dXJuX3ZhbF9pZl9mYWlsIChwYXlsb2FkICE9IE5VTEwsIE5V TEwpOworKwlnX3JldHVybl92YWxfaWZfZmFpbCAoZXJyb3IgPT0gTlVMTCB8fCAqZXJyb3IgPT0g TlVMTCwgTlVMTCk7CisrCisrCWtsYXNzID0gU09VUF9XRUJTT0NLRVRfRVhURU5TSU9OX0dFVF9D TEFTUyAoZXh0ZW5zaW9uKTsKKysJaWYgKCFrbGFzcy0+cHJvY2Vzc19pbmNvbWluZ19tZXNzYWdl X3dpdGhfbGltaXQpCisrCQlyZXR1cm4gc291cF93ZWJzb2NrZXRfZXh0ZW5zaW9uX3Byb2Nlc3Nf aW5jb21pbmdfbWVzc2FnZSAoZXh0ZW5zaW9uLAorKwkJCQkJCQkJCSAgaGVhZGVyLAorKwkJCQkJ CQkJCSAgcGF5bG9hZCwKKysJCQkJCQkJCQkgIGVycm9yKTsKKysKKysJcmV0dXJuIGtsYXNzLT5w cm9jZXNzX2luY29taW5nX21lc3NhZ2Vfd2l0aF9saW1pdCAoZXh0ZW5zaW9uLAorKwkJCQkJCQkg ICBoZWFkZXIsCisrCQkJCQkJCSAgIHBheWxvYWQsCisrCQkJCQkJCSAgIG1heF9vdXRwdXRfc2l6 ZSwKKysJCQkJCQkJICAgZXJyb3IpOworK30KK2RpZmYgLS1naXQgYS9saWJzb3VwL3dlYnNvY2tl dC9zb3VwLXdlYnNvY2tldC1leHRlbnNpb24uaCBiL2xpYnNvdXAvd2Vic29ja2V0L3NvdXAtd2Vi c29ja2V0LWV4dGVuc2lvbi5oCitpbmRleCAxOTMxYTI2NC4uYTlkNWUzNWMgMTAwNjQ0CistLS0g YS9saWJzb3VwL3dlYnNvY2tldC9zb3VwLXdlYnNvY2tldC1leHRlbnNpb24uaAorKysrIGIvbGli c291cC93ZWJzb2NrZXQvc291cC13ZWJzb2NrZXQtZXh0ZW5zaW9uLmgKK0BAIC01NSw4ICs1NSwx NCBAQCBzdHJ1Y3QgX1NvdXBXZWJzb2NrZXRFeHRlbnNpb25DbGFzcyB7CisgCQkJCQkgICAgICAg R0J5dGVzICAgICAgICAgICAgICAgICAgICAgKnBheWxvYWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICAgICAgICAgICAgICAgICoq ZXJyb3IpOworIAorKwlHQnl0ZXMgICooKiBwcm9jZXNzX2luY29taW5nX21lc3NhZ2Vfd2l0aF9s aW1pdCkgKFNvdXBXZWJzb2NrZXRFeHRlbnNpb24gKmV4dGVuc2lvbiwKKysJICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDggICAgICAgICAgICAg ICAgICpoZWFkZXIsCisrCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR0J5dGVzICAgICAgICAgICAgICAgICAqcGF5bG9hZCwKKysJICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDY0ICAgICAgICAgICAg ICAgICBtYXhfb3V0cHV0X3NpemUsCisrCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAgICAgICAgICoqZXJyb3IpOworKworICAg ICAgICAgLyogPHByaXZhdGU+ICovCistCWdwb2ludGVyIHBhZGRpbmdbNl07CisrCWdwb2ludGVy IHBhZGRpbmdbNV07CisgfTsKKyAKKyBTT1VQX0FWQUlMQUJMRV9JTl9BTEwKK0BAIC04MCw1ICs4 NiwxMSBAQCBHQnl0ZXMgICAgICAgICAgICAgICAgICAqc291cF93ZWJzb2NrZXRfZXh0ZW5zaW9u X3Byb2Nlc3NfaW5jb21pbmdfbWVzc2FnZSAoU291cAorIAkJCQkJCQkJCSAgICBndWludDggICAg ICAgICAgICAgICAgICAgICAqaGVhZGVyLAorIAkJCQkJCQkJCSAgICBHQnl0ZXMgICAgICAgICAg ICAgICAgICAgICAqcGF5bG9hZCwKKyAJCQkJCQkJCQkgICAgR0Vycm9yICAgICAgICAgICAgICAg ICAgICAqKmVycm9yKTsKKytTT1VQX0FWQUlMQUJMRV9JTl8zXzgKKytHQnl0ZXMgICAgICAgICAg ICAgICAgICAqc291cF93ZWJzb2NrZXRfZXh0ZW5zaW9uX3Byb2Nlc3NfaW5jb21pbmdfbWVzc2Fn ZV93aXRoX2xpbWl0IChTb3VwV2Vic29ja2V0RXh0ZW5zaW9uICpleHRlbnNpb24sCisrCQkJCQkJ CQkJCQkgICAgICAgZ3VpbnQ4ICAgICAgICAgICAgICAgICAqaGVhZGVyLAorKwkJCQkJCQkJCQkJ ICAgICAgIEdCeXRlcyAgICAgICAgICAgICAgICAgKnBheWxvYWQsCisrCQkJCQkJCQkJCQkgICAg ICAgZ3VpbnQ2NCAgICAgICAgICAgICAgICAgbWF4X291dHB1dF9zaXplLAorKwkJCQkJCQkJCQkJ ICAgICAgIEdFcnJvciAgICAgICAgICAgICAgICAqKmVycm9yKTsKKyAKKyBHX0VORF9ERUNMUwor ZGlmZiAtLWdpdCBhL3Rlc3RzL3dlYnNvY2tldC10ZXN0LmMgYi90ZXN0cy93ZWJzb2NrZXQtdGVz dC5jCitpbmRleCBkYjA4OGE1NS4uNWY5NGI1ZjYgMTAwNjQ0CistLS0gYS90ZXN0cy93ZWJzb2Nr ZXQtdGVzdC5jCisrKysgYi90ZXN0cy93ZWJzb2NrZXQtdGVzdC5jCitAQCAtNzMsNiArNzMsMTgg QEAgb25fZXJyb3JfY29weSAoU291cFdlYnNvY2tldENvbm5lY3Rpb24gKndzLAorIAkqY29weSA9 IGdfZXJyb3JfY29weSAoZXJyb3IpOworIH0KKyAKKytzdGF0aWMgdm9pZAorK29uX2Vycm9yX2Nv cHlfb25jZSAoU291cFdlYnNvY2tldENvbm5lY3Rpb24gKndzLAorKwkJICAgIEdFcnJvciAqZXJy b3IsCisrCQkgICAgZ3BvaW50ZXIgdXNlcl9kYXRhKQorK3sKKysJR0Vycm9yICoqY29weSA9IHVz ZXJfZGF0YTsKKysKKysJZ19hc3NlcnRfbnVsbCAoKmNvcHkpOworKwkqY29weSA9IGdfZXJyb3Jf Y29weSAoZXJyb3IpOworKwlnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMgKHdz LCBHX0NBTExCQUNLIChvbl9lcnJvcl9jb3B5X29uY2UpLCB1c2VyX2RhdGEpOworK30KKysKKyBz dGF0aWMgdm9pZAorIHNldHVwX2xpc3RlbmVyIChUZXN0ICp0ZXN0KQorIHsKK0BAIC02NDksNyAr NjYxLDcgQEAgdGVzdF9zZW5kX2JpZ19wYWNrZXRzX3NvdXAgKFRlc3QgKnRlc3QsCisgCWdfYXNz ZXJ0X2NtcHVpbnQgKHNvdXBfd2Vic29ja2V0X2Nvbm5lY3Rpb25fZ2V0X21heF9pbmNvbWluZ19w YXlsb2FkX3NpemUgKHRlc3QtPmNsaWVudCksID09LCAxMjggKiAxMDI0KTsKKyAJZ19hc3NlcnRf Y21wdWludCAoc291cF93ZWJzb2NrZXRfY29ubmVjdGlvbl9nZXRfbWF4X3RvdGFsX21lc3NhZ2Vf c2l6ZSAodGVzdC0+Y2xpZW50KSwgPT0sIDApOworIAorLQkvKiBNYXggdG90YWwgbWVzc2FnZSBz aXplIGRlZmF1bHRzIHRvIDAgKHVubGltaXRlZCksIGJ1dCBTb3VwU2VydmVyIGFwcGxpZXMgaXRz IG93biBsaW1pdCBieSBkZWZhdWx0LiAqLworKwkvKiBTb3VwU2VydmVyIGFwcGxpZXMgaXRzIG93 biB0b3RhbCBtZXNzYWdlIHNpemUgbGltaXQgYnkgZGVmYXVsdC4gKi8KKyAJZ19hc3NlcnRfY21w dWludCAoc291cF93ZWJzb2NrZXRfY29ubmVjdGlvbl9nZXRfbWF4X2luY29taW5nX3BheWxvYWRf c2l6ZSAodGVzdC0+c2VydmVyKSwgPT0sIDEyOCAqIDEwMjQpOworIAlnX2Fzc2VydF9jbXB1aW50 IChzb3VwX3dlYnNvY2tldF9jb25uZWN0aW9uX2dldF9tYXhfdG90YWxfbWVzc2FnZV9zaXplICh0 ZXN0LT5zZXJ2ZXIpLCA9PSwgMTI4ICogMTAyNCk7CisgCitAQCAtNzU2LDkgKzc2OCw3IEBAIHRl c3Rfc2VuZF9leGNlZWRpbmdfc2VydmVyX21heF9tZXNzYWdlX3NpemUgKFRlc3QgKnRlc3QsCisg CXNvdXBfd2Vic29ja2V0X2Nvbm5lY3Rpb25fc2V0X21heF90b3RhbF9tZXNzYWdlX3NpemUgKHRl c3QtPmNsaWVudCwgMCk7CisgCWdfYXNzZXJ0X2NtcHVpbnQgKHNvdXBfd2Vic29ja2V0X2Nvbm5l Y3Rpb25fZ2V0X21heF90b3RhbF9tZXNzYWdlX3NpemUgKHRlc3QtPmNsaWVudCksID09LCAwKTsK KyAKKy0JLyogU2V0IHRoZSBzZXJ2ZXIgbWVzc2FnZSB0b3RhbCBtZXNzYWdlIHNpemUgbWFudWFs bHksIGJlY2F1c2UgaXRzCistCSAqIGRlZmF1bHQgaXMgZGlmZmVyZW50IGZvciBkaXJlY3QgY29u bmVjdGlvbiB2cy4gc291cCBjb25uZWN0aW9uLgorLQkgKi8KKysJLyogVGhlIGRpcmVjdCBzZXJ2 ZXIgY29ubmVjdGlvbiBkZWZhdWx0cyB0byB1bmxpbWl0ZWQuICovCisgCXNvdXBfd2Vic29ja2V0 X2Nvbm5lY3Rpb25fc2V0X21heF90b3RhbF9tZXNzYWdlX3NpemUgKHRlc3QtPnNlcnZlciwgMTI4 ICogMTAyNCk7CisgCWdfYXNzZXJ0X2NtcHVpbnQgKHNvdXBfd2Vic29ja2V0X2Nvbm5lY3Rpb25f Z2V0X21heF90b3RhbF9tZXNzYWdlX3NpemUgKHRlc3QtPnNlcnZlciksID09LCAxMjggKiAxMDI0 KTsKKyAKK0BAIC0xNjcwLDYgKzE2ODAsMjIyIEBAIHNlbmRfZnJhZ21lbnRzX3NlcnZlcl90aHJl YWQgKGdwb2ludGVyIHVzZXJfZGF0YSkKKyAJcmV0dXJuIE5VTEw7CisgfQorIAorK3R5cGVkZWYg c3RydWN0IHsKKysJU291cFdlYnNvY2tldEV4dGVuc2lvbiBwYXJlbnRfaW5zdGFuY2U7CisrfSBM ZWdhY3lXZWJzb2NrZXRFeHRlbnNpb247CisrCisrdHlwZWRlZiBzdHJ1Y3QgeworKwlTb3VwV2Vi c29ja2V0RXh0ZW5zaW9uQ2xhc3MgcGFyZW50X2NsYXNzOworK30gTGVnYWN5V2Vic29ja2V0RXh0 ZW5zaW9uQ2xhc3M7CisrCisrR1R5cGUgbGVnYWN5X3dlYnNvY2tldF9leHRlbnNpb25fZ2V0X3R5 cGUgKHZvaWQpOworKworKyNkZWZpbmUgTEVHQUNZX1RZUEVfV0VCU09DS0VUX0VYVEVOU0lPTiAo bGVnYWN5X3dlYnNvY2tldF9leHRlbnNpb25fZ2V0X3R5cGUgKCkpCisrR19ERUZJTkVfVFlQRSAo TGVnYWN5V2Vic29ja2V0RXh0ZW5zaW9uLCBsZWdhY3lfd2Vic29ja2V0X2V4dGVuc2lvbiwgU09V UF9UWVBFX1dFQlNPQ0tFVF9FWFRFTlNJT04pCisrCisrc3RhdGljIGdib29sZWFuIGxlZ2FjeV9l eHRlbnNpb25fcHJvY2Vzc2VkOworKworK3N0YXRpYyBHQnl0ZXMgKgorK2xlZ2FjeV93ZWJzb2Nr ZXRfZXh0ZW5zaW9uX3Byb2Nlc3NfaW5jb21pbmdfbWVzc2FnZSAoU291cFdlYnNvY2tldEV4dGVu c2lvbiAqZXh0ZW5zaW9uLAorKwkJCQkJCSAgICAgZ3VpbnQ4ICAgICAgICAgICAgICAgICAqaGVh ZGVyLAorKwkJCQkJCSAgICAgR0J5dGVzICAgICAgICAgICAgICAgICAqcGF5bG9hZCwKKysJCQkJ CQkgICAgIEdFcnJvciAgICAgICAgICAgICAgICAqKmVycm9yKQorK3sKKysJbGVnYWN5X2V4dGVu c2lvbl9wcm9jZXNzZWQgPSBUUlVFOworKworKwlyZXR1cm4gcGF5bG9hZDsKKyt9CisrCisrc3Rh dGljIHZvaWQKKytsZWdhY3lfd2Vic29ja2V0X2V4dGVuc2lvbl9jbGFzc19pbml0IChMZWdhY3lX ZWJzb2NrZXRFeHRlbnNpb25DbGFzcyAqa2xhc3MpCisreworKwlTb3VwV2Vic29ja2V0RXh0ZW5z aW9uQ2xhc3MgKmV4dGVuc2lvbl9jbGFzcyA9IFNPVVBfV0VCU09DS0VUX0VYVEVOU0lPTl9DTEFT UyAoa2xhc3MpOworKworKwlleHRlbnNpb25fY2xhc3MtPnByb2Nlc3NfaW5jb21pbmdfbWVzc2Fn ZSA9IGxlZ2FjeV93ZWJzb2NrZXRfZXh0ZW5zaW9uX3Byb2Nlc3NfaW5jb21pbmdfbWVzc2FnZTsK Kyt9CisrCisrc3RhdGljIHZvaWQKKytsZWdhY3lfd2Vic29ja2V0X2V4dGVuc2lvbl9pbml0IChM ZWdhY3lXZWJzb2NrZXRFeHRlbnNpb24gKmV4dGVuc2lvbikKKyt7CisrfQorKworK3N0YXRpYyB2 b2lkCisrdGVzdF93ZWJzb2NrZXRfZXh0ZW5zaW9uX2xpbWl0X2ZhbGxiYWNrICh2b2lkKQorK3sK KysJU291cFdlYnNvY2tldEV4dGVuc2lvbiAqZXh0ZW5zaW9uOworKwlHQnl0ZXMgKnBheWxvYWQ7 CisrCUdCeXRlcyAqb3V0cHV0OworKwlHRXJyb3IgKmVycm9yID0gTlVMTDsKKysJZ3VpbnQ4IGhl YWRlciA9IDB4ODI7CisrCisrCWxlZ2FjeV9leHRlbnNpb25fcHJvY2Vzc2VkID0gRkFMU0U7Cisr CWV4dGVuc2lvbiA9IGdfb2JqZWN0X25ldyAoTEVHQUNZX1RZUEVfV0VCU09DS0VUX0VYVEVOU0lP TiwgTlVMTCk7CisrCXBheWxvYWQgPSBnX2J5dGVzX25ld19zdGF0aWMgKCJ4IiwgMSk7CisrCW91 dHB1dCA9IHNvdXBfd2Vic29ja2V0X2V4dGVuc2lvbl9wcm9jZXNzX2luY29taW5nX21lc3NhZ2Vf d2l0aF9saW1pdCAoZXh0ZW5zaW9uLAorKwkJCQkJCQkJCSAgICAgICAmaGVhZGVyLAorKwkJCQkJ CQkJCSAgICAgICBwYXlsb2FkLAorKwkJCQkJCQkJCSAgICAgICAxLAorKwkJCQkJCQkJCSAgICAg ICAmZXJyb3IpOworKworKwlnX2Fzc2VydF9ub19lcnJvciAoZXJyb3IpOworKwlnX2Fzc2VydF90 cnVlIChsZWdhY3lfZXh0ZW5zaW9uX3Byb2Nlc3NlZCk7CisrCWdfYXNzZXJ0X3RydWUgKG91dHB1 dCA9PSBwYXlsb2FkKTsKKysKKysJZ19ieXRlc191bnJlZiAob3V0cHV0KTsKKysJZ19vYmplY3Rf dW5yZWYgKGV4dGVuc2lvbik7CisrfQorKworK3R5cGVkZWYgc3RydWN0IHsKKysJZ3NpemUgb3V0 cHV0X3NpemU7CisrCWd1aW50NjQgbWF4X291dHB1dF9zaXplOworKwlnYm9vbGVhbiBleHBlY3Rf dG9vX2JpZzsKKyt9IERlZmxhdGVPdXRwdXRMaW1pdFRlc3Q7CisrCisrc3RhdGljIHZvaWQKKyt0 ZXN0X2RlZmxhdGVfb3V0cHV0X2xpbWl0IChnY29uc3Rwb2ludGVyIGRhdGEpCisreworKwljb25z dCBEZWZsYXRlT3V0cHV0TGltaXRUZXN0ICpjb25maWcgPSBkYXRhOworKwlTb3VwV2Vic29ja2V0 RXh0ZW5zaW9uICpzZW5kZXI7CisrCVNvdXBXZWJzb2NrZXRFeHRlbnNpb24gKnJlY2VpdmVyOwor KwlHQnl0ZXMgKmNvbXByZXNzZWQ7CisrCUdCeXRlcyAqb3V0cHV0OworKwlHRXJyb3IgKmVycm9y ID0gTlVMTDsKKysJZ3VpbnQ4IGhlYWRlciA9IDB4ODI7CisrCisrCXNlbmRlciA9IGdfb2JqZWN0 X25ldyAoU09VUF9UWVBFX1dFQlNPQ0tFVF9FWFRFTlNJT05fREVGTEFURSwgTlVMTCk7CisrCWdf YXNzZXJ0X3RydWUgKHNvdXBfd2Vic29ja2V0X2V4dGVuc2lvbl9jb25maWd1cmUgKHNlbmRlciwK KysJCQkJCQkJICAgU09VUF9XRUJTT0NLRVRfQ09OTkVDVElPTl9TRVJWRVIsCisrCQkJCQkJCSAg IE5VTEwsICZlcnJvcikpOworKwlnX2Fzc2VydF9ub19lcnJvciAoZXJyb3IpOworKworKwlyZWNl aXZlciA9IGdfb2JqZWN0X25ldyAoU09VUF9UWVBFX1dFQlNPQ0tFVF9FWFRFTlNJT05fREVGTEFU RSwgTlVMTCk7CisrCWdfYXNzZXJ0X3RydWUgKHNvdXBfd2Vic29ja2V0X2V4dGVuc2lvbl9jb25m aWd1cmUgKHJlY2VpdmVyLAorKwkJCQkJCQkgICBTT1VQX1dFQlNPQ0tFVF9DT05ORUNUSU9OX0NM SUVOVCwKKysJCQkJCQkJICAgTlVMTCwgJmVycm9yKSk7CisrCWdfYXNzZXJ0X25vX2Vycm9yIChl cnJvcik7CisrCisrCWNvbXByZXNzZWQgPSBnX2J5dGVzX25ld190YWtlIChnX21hbGxvYzAgKGNv bmZpZy0+b3V0cHV0X3NpemUpLCBjb25maWctPm91dHB1dF9zaXplKTsKKysJY29tcHJlc3NlZCA9 IHNvdXBfd2Vic29ja2V0X2V4dGVuc2lvbl9wcm9jZXNzX291dGdvaW5nX21lc3NhZ2UgKHNlbmRl ciwgJmhlYWRlciwKKysJCQkJCQkJCQljb21wcmVzc2VkLCAmZXJyb3IpOworKwlnX2Fzc2VydF9u b19lcnJvciAoZXJyb3IpOworKwlnX2Fzc2VydF9ub25udWxsIChjb21wcmVzc2VkKTsKKysJZ19h c3NlcnRfdHJ1ZSAoaGVhZGVyICYgMHg0MCk7CisrCWdfYXNzZXJ0X2NtcHVpbnQgKGdfYnl0ZXNf Z2V0X3NpemUgKGNvbXByZXNzZWQpLCA8LCBjb25maWctPm91dHB1dF9zaXplKTsKKysKKysJb3V0 cHV0ID0gc291cF93ZWJzb2NrZXRfZXh0ZW5zaW9uX3Byb2Nlc3NfaW5jb21pbmdfbWVzc2FnZV93 aXRoX2xpbWl0IChyZWNlaXZlciwKKysJCQkJCQkJCQkgICAgICAgJmhlYWRlciwKKysJCQkJCQkJ CQkgICAgICAgY29tcHJlc3NlZCwKKysJCQkJCQkJCQkgICAgICAgY29uZmlnLT5tYXhfb3V0cHV0 X3NpemUsCisrCQkJCQkJCQkJICAgICAgICZlcnJvcik7CisrCWlmIChjb25maWctPmV4cGVjdF90 b29fYmlnKSB7CisrCQlnX2Fzc2VydF9udWxsIChvdXRwdXQpOworKwkJZ19hc3NlcnRfZXJyb3Ig KGVycm9yLCBTT1VQX1dFQlNPQ0tFVF9FUlJPUiwgU09VUF9XRUJTT0NLRVRfQ0xPU0VfVE9PX0JJ Ryk7CisrCQlnX2NsZWFyX2Vycm9yICgmZXJyb3IpOworKwl9IGVsc2UgeworKwkJZ19hc3NlcnRf bm9fZXJyb3IgKGVycm9yKTsKKysJCWdfYXNzZXJ0X25vbm51bGwgKG91dHB1dCk7CisrCQlnX2Fz c2VydF9jbXB1aW50IChnX2J5dGVzX2dldF9zaXplIChvdXRwdXQpLCA9PSwgY29uZmlnLT5vdXRw dXRfc2l6ZSk7CisrCQlnX2J5dGVzX3VucmVmIChvdXRwdXQpOworKwl9CisrCisrCWdfb2JqZWN0 X3VucmVmIChyZWNlaXZlcik7CisrCWdfb2JqZWN0X3VucmVmIChzZW5kZXIpOworK30KKysKKytz dGF0aWMgY29uc3QgRGVmbGF0ZU91dHB1dExpbWl0VGVzdCBkZWZsYXRlX291dHB1dF9iZWxvd19s aW1pdCA9IHsKKysJNDA5NSwgNDA5NiwgRkFMU0UKKyt9OworK3N0YXRpYyBjb25zdCBEZWZsYXRl T3V0cHV0TGltaXRUZXN0IGRlZmxhdGVfb3V0cHV0X2F0X2xpbWl0ID0geworKwk0MDk2LCA0MDk2 LCBGQUxTRQorK307Cisrc3RhdGljIGNvbnN0IERlZmxhdGVPdXRwdXRMaW1pdFRlc3QgZGVmbGF0 ZV9vdXRwdXRfb3Zlcl9saW1pdCA9IHsKKysJNDA5NywgNDA5NiwgVFJVRQorK307CisrCisrdHlw ZWRlZiBzdHJ1Y3QgeworKwlnYm9vbGVhbiBzZXJ2ZXJfcmVjZWl2ZXM7CisrCWdib29sZWFuIGNv bmZpZ3VyZV9saW1pdDsKKyt9IERlZmxhdGVNZXNzYWdlTGltaXRUZXN0OworKworK3N0YXRpYyB2 b2lkCisrdGVzdF9kZWZsYXRlX2V4Y2VlZHNfbWVzc2FnZV9saW1pdCAoVGVzdCAqdGVzdCwKKysJ CQkJICAgIGdjb25zdHBvaW50ZXIgZGF0YSkKKyt7CisrCWNvbnN0IERlZmxhdGVNZXNzYWdlTGlt aXRUZXN0ICpjb25maWcgPSBkYXRhOworKwlTb3VwV2Vic29ja2V0Q29ubmVjdGlvbiAqcmVjZWl2 ZXI7CisrCVNvdXBXZWJzb2NrZXRDb25uZWN0aW9uICpzZW5kZXI7CisrCUdCeXRlcyAqcmVjZWl2 ZWQgPSBOVUxMOworKwlHRXJyb3IgKmVycm9yID0gTlVMTDsKKysJZ3VpbnQ4ICptZXNzYWdlOwor KworKwlpZiAoY29uZmlnLT5zZXJ2ZXJfcmVjZWl2ZXMpIHsKKysJCXJlY2VpdmVyID0gdGVzdC0+ c2VydmVyOworKwkJc2VuZGVyID0gdGVzdC0+Y2xpZW50OworKwl9IGVsc2UgeworKwkJcmVjZWl2 ZXIgPSB0ZXN0LT5jbGllbnQ7CisrCQlzZW5kZXIgPSB0ZXN0LT5zZXJ2ZXI7CisrCX0KKysKKysJ aWYgKGNvbmZpZy0+Y29uZmlndXJlX2xpbWl0KQorKwkJc291cF93ZWJzb2NrZXRfY29ubmVjdGlv bl9zZXRfbWF4X3RvdGFsX21lc3NhZ2Vfc2l6ZSAocmVjZWl2ZXIsIDEyOCAqIDEwMjQpOworKwor KwlnX2Fzc2VydF9jbXB1aW50IChzb3VwX3dlYnNvY2tldF9jb25uZWN0aW9uX2dldF9tYXhfdG90 YWxfbWVzc2FnZV9zaXplIChyZWNlaXZlciksCisrCQkJICA9PSwgMTI4ICogMTAyNCk7CisrCisr CWdfc2lnbmFsX2Nvbm5lY3QgKHJlY2VpdmVyLCAiZXJyb3IiLCBHX0NBTExCQUNLIChvbl9lcnJv cl9jb3B5X29uY2UpLCAmZXJyb3IpOworKwlnX3NpZ25hbF9jb25uZWN0IChyZWNlaXZlciwgIm1l c3NhZ2UiLCBHX0NBTExCQUNLIChvbl9iaW5hcnlfbWVzc2FnZSksICZyZWNlaXZlZCk7CisrCisr CW1lc3NhZ2UgPSBnX21hbGxvYzAgKDEyOCAqIDEwMjQgKyAxKTsKKysJc291cF93ZWJzb2NrZXRf Y29ubmVjdGlvbl9zZW5kX2JpbmFyeSAoc2VuZGVyLCBtZXNzYWdlLCAxMjggKiAxMDI0ICsgMSk7 CisrCWdfZnJlZSAobWVzc2FnZSk7CisrCisrCVdBSVRfVU5USUwgKGVycm9yICE9IE5VTEwgfHwg cmVjZWl2ZWQgIT0gTlVMTCk7CisrCWdfYXNzZXJ0X251bGwgKHJlY2VpdmVkKTsKKysJZ19hc3Nl cnRfZXJyb3IgKGVycm9yLCBTT1VQX1dFQlNPQ0tFVF9FUlJPUiwgU09VUF9XRUJTT0NLRVRfQ0xP U0VfVE9PX0JJRyk7CisrCWdfY2xlYXJfZXJyb3IgKCZlcnJvcik7CisrCisrCVdBSVRfVU5USUwg KHNvdXBfd2Vic29ja2V0X2Nvbm5lY3Rpb25fZ2V0X3N0YXRlIChzZW5kZXIpID09IFNPVVBfV0VC U09DS0VUX1NUQVRFX0NMT1NFRCk7CisrCWdfYXNzZXJ0X251bGwgKHJlY2VpdmVkKTsKKysJZ19h c3NlcnRfY21wdWludCAoc291cF93ZWJzb2NrZXRfY29ubmVjdGlvbl9nZXRfY2xvc2VfY29kZSAo c2VuZGVyKSwKKysJCQkgID09LCBTT1VQX1dFQlNPQ0tFVF9DTE9TRV9UT09fQklHKTsKKyt9Cisr Cisrc3RhdGljIHZvaWQKKyt0ZXN0X2RlZmxhdGVfZGVmYXVsdF91bmxpbWl0ZWRfbWVzc2FnZV9z aXplIChUZXN0ICp0ZXN0LAorKwkJCQkJICAgICBnY29uc3Rwb2ludGVyIGRhdGEpCisreworKwlj b25zdCBEZWZsYXRlTWVzc2FnZUxpbWl0VGVzdCAqY29uZmlnID0gZGF0YTsKKysJU291cFdlYnNv Y2tldENvbm5lY3Rpb24gKnJlY2VpdmVyOworKwlTb3VwV2Vic29ja2V0Q29ubmVjdGlvbiAqc2Vu ZGVyOworKwlHQnl0ZXMgKnJlY2VpdmVkID0gTlVMTDsKKysJZ3VpbnQ4ICptZXNzYWdlOworKwor KwlpZiAoY29uZmlnLT5zZXJ2ZXJfcmVjZWl2ZXMpIHsKKysJCXJlY2VpdmVyID0gdGVzdC0+c2Vy dmVyOworKwkJc2VuZGVyID0gdGVzdC0+Y2xpZW50OworKwl9IGVsc2UgeworKwkJcmVjZWl2ZXIg PSB0ZXN0LT5jbGllbnQ7CisrCQlzZW5kZXIgPSB0ZXN0LT5zZXJ2ZXI7CisrCX0KKysKKysJZ19h c3NlcnRfZmFsc2UgKGNvbmZpZy0+Y29uZmlndXJlX2xpbWl0KTsKKysJZ19hc3NlcnRfY21wdWlu dCAoc291cF93ZWJzb2NrZXRfY29ubmVjdGlvbl9nZXRfbWF4X3RvdGFsX21lc3NhZ2Vfc2l6ZSAo cmVjZWl2ZXIpLCA9PSwgMCk7CisrCWdfc2lnbmFsX2Nvbm5lY3QgKHJlY2VpdmVyLCAibWVzc2Fn ZSIsIEdfQ0FMTEJBQ0sgKG9uX2JpbmFyeV9tZXNzYWdlKSwgJnJlY2VpdmVkKTsKKysKKysJbWVz c2FnZSA9IGdfbWFsbG9jMCAoMTI4ICogMTAyNCArIDEpOworKwlzb3VwX3dlYnNvY2tldF9jb25u ZWN0aW9uX3NlbmRfYmluYXJ5IChzZW5kZXIsIG1lc3NhZ2UsIDEyOCAqIDEwMjQgKyAxKTsKKysJ Z19mcmVlIChtZXNzYWdlKTsKKysKKysJV0FJVF9VTlRJTCAocmVjZWl2ZWQgIT0gTlVMTCk7Cisr CWdfYXNzZXJ0X2NtcHVpbnQgKGdfYnl0ZXNfZ2V0X3NpemUgKHJlY2VpdmVkKSwgPT0sIDEyOCAq IDEwMjQgKyAxKTsKKysJZ19ieXRlc191bnJlZiAocmVjZWl2ZWQpOworK30KKysKKytzdGF0aWMg Y29uc3QgRGVmbGF0ZU1lc3NhZ2VMaW1pdFRlc3QgZGVmbGF0ZV9zZXJ2ZXJfcmVjZWl2ZXNfY29u ZmlndXJlZCA9IHsgVFJVRSwgVFJVRSB9OworK3N0YXRpYyBjb25zdCBEZWZsYXRlTWVzc2FnZUxp bWl0VGVzdCBkZWZsYXRlX2NsaWVudF9yZWNlaXZlc19jb25maWd1cmVkID0geyBGQUxTRSwgVFJV RSB9OworK3N0YXRpYyBjb25zdCBEZWZsYXRlTWVzc2FnZUxpbWl0VGVzdCBkZWZsYXRlX3NlcnZl cl9yZWNlaXZlc19kZWZhdWx0ID0geyBUUlVFLCBGQUxTRSB9OworK3N0YXRpYyBjb25zdCBEZWZs YXRlTWVzc2FnZUxpbWl0VGVzdCBkZWZsYXRlX2NsaWVudF9yZWNlaXZlc19kZWZhdWx0ID0geyBG QUxTRSwgRkFMU0UgfTsKKysKKyBzdGF0aWMgdm9pZAorIGRvX2RlZmxhdGUgKHpfc3RyZWFtICp6 c3RyZWFtLAorICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnN0ciwKK0BAIC0xNzcxLDYgKzE5OTcs MzEgQEAgdGVzdF9yZWNlaXZlX2ZyYWdtZW50ZWQgKFRlc3QgKnRlc3QsCisgCVdBSVRfVU5USUwg KHNvdXBfd2Vic29ja2V0X2Nvbm5lY3Rpb25fZ2V0X3N0YXRlICh0ZXN0LT5jbGllbnQpID09IFNP VVBfV0VCU09DS0VUX1NUQVRFX0NMT1NFRCk7CisgfQorIAorK3N0YXRpYyB2b2lkCisrdGVzdF9k ZWZsYXRlX3JlY2VpdmVfZnJhZ21lbnRlZF90b29fYmlnIChUZXN0ICp0ZXN0LAorKwkJCQkJIGdj b25zdHBvaW50ZXIgZGF0YSkKKyt7CisrCUdUaHJlYWQgKnRocmVhZDsKKysJR0J5dGVzICpyZWNl aXZlZCA9IE5VTEw7CisrCUdFcnJvciAqZXJyb3IgPSBOVUxMOworKworKwlzb3VwX3dlYnNvY2tl dF9jb25uZWN0aW9uX3NldF9tYXhfdG90YWxfbWVzc2FnZV9zaXplICh0ZXN0LT5jbGllbnQsIDEy KTsKKysJZ19zaWduYWxfY29ubmVjdCAodGVzdC0+Y2xpZW50LCAiZXJyb3IiLCBHX0NBTExCQUNL IChvbl9lcnJvcl9jb3B5X29uY2UpLCAmZXJyb3IpOworKwlnX3NpZ25hbF9jb25uZWN0ICh0ZXN0 LT5jbGllbnQsICJtZXNzYWdlIiwgR19DQUxMQkFDSyAob25fdGV4dF9tZXNzYWdlKSwgJnJlY2Vp dmVkKTsKKysKKysJdGhyZWFkID0gZ190aHJlYWRfbmV3ICgiZGVmbGF0ZS1mcmFnbWVudC10b28t YmlnLXRocmVhZCIsCisrCQkJICAgICAgIHNlbmRfY29tcHJlc3NlZF9mcmFnbWVudHNfc2VydmVy X3RocmVhZCwKKysJCQkgICAgICAgdGVzdCk7CisrCisrCVdBSVRfVU5USUwgKGVycm9yICE9IE5V TEwgfHwgcmVjZWl2ZWQgIT0gTlVMTCk7CisrCWdfYXNzZXJ0X251bGwgKHJlY2VpdmVkKTsKKysJ Z19hc3NlcnRfZXJyb3IgKGVycm9yLCBTT1VQX1dFQlNPQ0tFVF9FUlJPUiwgU09VUF9XRUJTT0NL RVRfQ0xPU0VfVE9PX0JJRyk7CisrCWdfY2xlYXJfZXJyb3IgKCZlcnJvcik7CisrCisrCWdfdGhy ZWFkX2pvaW4gKHRocmVhZCk7CisrCVdBSVRfVU5USUwgKHNvdXBfd2Vic29ja2V0X2Nvbm5lY3Rp b25fZ2V0X3N0YXRlICh0ZXN0LT5jbGllbnQpID09IFNPVVBfV0VCU09DS0VUX1NUQVRFX0NMT1NF RCk7CisrfQorKworIHR5cGVkZWYgc3RydWN0IHsKKyAJVGVzdCAqdGVzdDsKKyAJY29uc3QgY2hh ciAqaGVhZGVyOworQEAgLTI3OTgsNiArMzA0OSwxOCBAQCBtYWluIChpbnQgYXJnYywKKyAJCSAg ICB0ZXN0X2RlZmxhdGVfbmVnb3RpYXRlX2RpcmVjdCwKKyAJCSAgICBOVUxMKTsKKyAKKysJZ190 ZXN0X2FkZF9mdW5jICgiL3dlYnNvY2tldC9leHRlbnNpb24vaW5jb21pbmctbGltaXQtbGVnYWN5 LWZhbGxiYWNrIiwKKysJCQkgdGVzdF93ZWJzb2NrZXRfZXh0ZW5zaW9uX2xpbWl0X2ZhbGxiYWNr KTsKKysJZ190ZXN0X2FkZF9kYXRhX2Z1bmMgKCIvd2Vic29ja2V0L2RlZmxhdGUvb3V0cHV0LWxp bWl0L2JlbG93IiwKKysJCQkgICAgICAmZGVmbGF0ZV9vdXRwdXRfYmVsb3dfbGltaXQsCisrCQkJ ICAgICAgdGVzdF9kZWZsYXRlX291dHB1dF9saW1pdCk7CisrCWdfdGVzdF9hZGRfZGF0YV9mdW5j ICgiL3dlYnNvY2tldC9kZWZsYXRlL291dHB1dC1saW1pdC9leGFjdCIsCisrCQkJICAgICAgJmRl ZmxhdGVfb3V0cHV0X2F0X2xpbWl0LAorKwkJCSAgICAgIHRlc3RfZGVmbGF0ZV9vdXRwdXRfbGlt aXQpOworKwlnX3Rlc3RfYWRkX2RhdGFfZnVuYyAoIi93ZWJzb2NrZXQvZGVmbGF0ZS9vdXRwdXQt bGltaXQvb3ZlciIsCisrCQkJICAgICAgJmRlZmxhdGVfb3V0cHV0X292ZXJfbGltaXQsCisrCQkJ ICAgICAgdGVzdF9kZWZsYXRlX291dHB1dF9saW1pdCk7CisrCisgCWdfdGVzdF9hZGQgKCIvd2Vi c29ja2V0L2RpcmVjdC9kZWZsYXRlLWRpc2FibGVkLWluLW1lc3NhZ2UiLCBUZXN0LCBOVUxMLCBO VUxMLAorIAkJICAgIHRlc3RfZGVmbGF0ZV9kaXNhYmxlZF9pbl9tZXNzYWdlX2RpcmVjdCwKKyAJ CSAgICBOVUxMKTsKK0BAIC0yODIzLDYgKzMwODYsMzcgQEAgbWFpbiAoaW50IGFyZ2MsCisgCQkg ICAgdGVzdF9zZW5kX3NlcnZlcl90b19jbGllbnQsCisgCQkgICAgdGVhcmRvd25fc291cF9jb25u ZWN0aW9uKTsKKyAKKysJZ190ZXN0X2FkZCAoIi93ZWJzb2NrZXQvZGlyZWN0L2RlZmxhdGUtY29u ZmlndXJlZC1saW1pdC9jbGllbnQtdG8tc2VydmVyIiwKKysJCSAgICBUZXN0LCAmZGVmbGF0ZV9z ZXJ2ZXJfcmVjZWl2ZXNfY29uZmlndXJlZCwKKysJCSAgICBzZXR1cF9kaXJlY3RfY29ubmVjdGlv bl93aXRoX2V4dGVuc2lvbnMsCisrCQkgICAgdGVzdF9kZWZsYXRlX2V4Y2VlZHNfbWVzc2FnZV9s aW1pdCwKKysJCSAgICB0ZWFyZG93bl9kaXJlY3RfY29ubmVjdGlvbik7CisrCWdfdGVzdF9hZGQg KCIvd2Vic29ja2V0L2RpcmVjdC9kZWZsYXRlLWNvbmZpZ3VyZWQtbGltaXQvc2VydmVyLXRvLWNs aWVudCIsCisrCQkgICAgVGVzdCwgJmRlZmxhdGVfY2xpZW50X3JlY2VpdmVzX2NvbmZpZ3VyZWQs CisrCQkgICAgc2V0dXBfZGlyZWN0X2Nvbm5lY3Rpb25fd2l0aF9leHRlbnNpb25zLAorKwkJICAg IHRlc3RfZGVmbGF0ZV9leGNlZWRzX21lc3NhZ2VfbGltaXQsCisrCQkgICAgdGVhcmRvd25fZGly ZWN0X2Nvbm5lY3Rpb24pOworKwlnX3Rlc3RfYWRkICgiL3dlYnNvY2tldC9zb3VwL2RlZmxhdGUt ZGVmYXVsdC1zZXJ2ZXItbGltaXQvY2xpZW50LXRvLXNlcnZlciIsCisrCQkgICAgVGVzdCwgJmRl ZmxhdGVfc2VydmVyX3JlY2VpdmVzX2RlZmF1bHQsCisrCQkgICAgc2V0dXBfc291cF9jb25uZWN0 aW9uX3dpdGhfZXh0ZW5zaW9ucywKKysJCSAgICB0ZXN0X2RlZmxhdGVfZXhjZWVkc19tZXNzYWdl X2xpbWl0LAorKwkJICAgIHRlYXJkb3duX3NvdXBfY29ubmVjdGlvbik7CisrCWdfdGVzdF9hZGQg KCIvd2Vic29ja2V0L3NvdXAvZGVmbGF0ZS1jb25maWd1cmVkLWNsaWVudC1saW1pdC9zZXJ2ZXIt dG8tY2xpZW50IiwKKysJCSAgICBUZXN0LCAmZGVmbGF0ZV9jbGllbnRfcmVjZWl2ZXNfY29uZmln dXJlZCwKKysJCSAgICBzZXR1cF9zb3VwX2Nvbm5lY3Rpb25fd2l0aF9leHRlbnNpb25zLAorKwkJ ICAgIHRlc3RfZGVmbGF0ZV9leGNlZWRzX21lc3NhZ2VfbGltaXQsCisrCQkgICAgdGVhcmRvd25f c291cF9jb25uZWN0aW9uKTsKKysJZ190ZXN0X2FkZCAoIi93ZWJzb2NrZXQvZGlyZWN0L2RlZmxh dGUtZGVmYXVsdC11bmxpbWl0ZWQvY2xpZW50LXRvLXNlcnZlciIsCisrCQkgICAgVGVzdCwgJmRl ZmxhdGVfc2VydmVyX3JlY2VpdmVzX2RlZmF1bHQsCisrCQkgICAgc2V0dXBfZGlyZWN0X2Nvbm5l Y3Rpb25fd2l0aF9leHRlbnNpb25zLAorKwkJICAgIHRlc3RfZGVmbGF0ZV9kZWZhdWx0X3VubGlt aXRlZF9tZXNzYWdlX3NpemUsCisrCQkgICAgdGVhcmRvd25fZGlyZWN0X2Nvbm5lY3Rpb24pOwor KwlnX3Rlc3RfYWRkICgiL3dlYnNvY2tldC9kaXJlY3QvZGVmbGF0ZS1kZWZhdWx0LXVubGltaXRl ZC9zZXJ2ZXItdG8tY2xpZW50IiwKKysJCSAgICBUZXN0LCAmZGVmbGF0ZV9jbGllbnRfcmVjZWl2 ZXNfZGVmYXVsdCwKKysJCSAgICBzZXR1cF9kaXJlY3RfY29ubmVjdGlvbl93aXRoX2V4dGVuc2lv bnMsCisrCQkgICAgdGVzdF9kZWZsYXRlX2RlZmF1bHRfdW5saW1pdGVkX21lc3NhZ2Vfc2l6ZSwK KysJCSAgICB0ZWFyZG93bl9kaXJlY3RfY29ubmVjdGlvbik7CisrCisgCWdfdGVzdF9hZGQgKCIv d2Vic29ja2V0L2RpcmVjdC9kZWZsYXRlLXNlbmQtYmlnLXBhY2tldHMiLCBUZXN0LCBOVUxMLAor IAkJICAgIHNldHVwX2RpcmVjdF9jb25uZWN0aW9uX3dpdGhfZXh0ZW5zaW9ucywKKyAJCSAgICB0 ZXN0X3NlbmRfYmlnX3BhY2tldHNfZGlyZWN0LAorQEAgLTI4NDUsNiArMzEzOSwxMCBAQCBtYWlu IChpbnQgYXJnYywKKyAJCSAgICBzZXR1cF9oYWxmX2RpcmVjdF9jb25uZWN0aW9uX3dpdGhfZXh0 ZW5zaW9ucywKKyAJCSAgICB0ZXN0X3JlY2VpdmVfZnJhZ21lbnRlZCwKKyAJCSAgICB0ZWFyZG93 bl9kaXJlY3RfY29ubmVjdGlvbik7CisrCWdfdGVzdF9hZGQgKCIvd2Vic29ja2V0L2RpcmVjdC9k ZWZsYXRlLXJlY2VpdmUtZnJhZ21lbnRlZC10b28tYmlnIiwgVGVzdCwgTlVMTCwKKysJCSAgICBz ZXR1cF9oYWxmX2RpcmVjdF9jb25uZWN0aW9uX3dpdGhfZXh0ZW5zaW9ucywKKysJCSAgICB0ZXN0 X2RlZmxhdGVfcmVjZWl2ZV9mcmFnbWVudGVkX3Rvb19iaWcsCisrCQkgICAgdGVhcmRvd25fZGly ZWN0X2Nvbm5lY3Rpb24pOworIAlnX3Rlc3RfYWRkICgiL3dlYnNvY2tldC9kaXJlY3QvZGVmbGF0 ZS1yZWNlaXZlLWZyYWdtZW50ZWQtZXJyb3IiLCBUZXN0LCBOVUxMLAorIAkJICAgIHNldHVwX2hh bGZfZGlyZWN0X2Nvbm5lY3Rpb25fd2l0aF9leHRlbnNpb25zLAorIAkJICAgIHRlc3RfZGVmbGF0 ZV9yZWNlaXZlX2ZyYWdtZW50ZWRfZXJyb3IsCistLSAKK0dpdExhYgorCgpkaWZmIC0tZ2l0IGEv Q1ZFLTIwMjYtMTU3MTEucGF0Y2ggYi9DVkUtMjAyNi0xNTcxMS5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMmFiNTdiCi0tLSAvZGV2L251bGwKKysrIGIvQ1ZFLTIw MjYtMTU3MTEucGF0Y2gKQEAgLTAsMCArMSwxNzIgQEAKK0Zyb20gNjBhYTFjZTJiZGM3YmI1ZGEz M2JlOTA2MmY1MGJjZWM3ZGI2N2ZjYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFph eWQgUmFqYWIgPHpheWRyQGFtYXpvbi5jb20+CitEYXRlOiBUaHUsIDE2IEp1bCAyMDI2IDAyOjMy OjE5ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIHdlYnNvY2tldDogUmVqZWN0IG92ZXJzaXplZCBj b250cm9sIGZyYW1lcworCitSRkMgNjQ1NSBzZWN0aW9uIDUuNSBsaW1pdHMgY29udHJvbCBmcmFt ZSBwYXlsb2FkcyB0byAxMjUgYnl0ZXMuCitSZWplY3QgZXh0ZW5kZWQgcGF5bG9hZCBsZW5ndGgg aW5kaWNhdG9ycyBhcyBzb29uIGFzIHRoZSBiYXNlIGhlYWRlciBpcworYXZhaWxhYmxlLCBiZWZv cmUgd2FpdGluZyBmb3IgYWRkaXRpb25hbCBsZW5ndGggb3IgcGF5bG9hZCBieXRlcy4KKworQWRk IHJlZ3Jlc3Npb24gY292ZXJhZ2UgZm9yIGJvdGggZXh0ZW5kZWQgbGVuZ3RoIGluZGljYXRvcnMg YW5kIGJvdGgKK3JlY2VpdmUgZGlyZWN0aW9ucy4KKworVGhpcyBpcyBDVkUtMjAyNi0xNTcxMS4K KworQ2xvc2VzICM1MTUKKy0tLQorIGxpYnNvdXAvd2Vic29ja2V0L3NvdXAtd2Vic29ja2V0LWNv bm5lY3Rpb24uYyB8ICAgNyArKworIHRlc3RzL3dlYnNvY2tldC10ZXN0LmMgICAgICAgICAgICAg ICAgICAgICAgICB8IDExMyArKysrKysrKysrKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDEy MCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9saWJzb3VwL3dlYnNvY2tldC9zb3VwLXdl YnNvY2tldC1jb25uZWN0aW9uLmMgYi9saWJzb3VwL3dlYnNvY2tldC9zb3VwLXdlYnNvY2tldC1j b25uZWN0aW9uLmMKK2luZGV4IDE0ZGNkNjMwLi5mZmQ3MTNlZiAxMDA2NDQKKy0tLSBhL2xpYnNv dXAvd2Vic29ja2V0L3NvdXAtd2Vic29ja2V0LWNvbm5lY3Rpb24uYworKysrIGIvbGlic291cC93 ZWJzb2NrZXQvc291cC13ZWJzb2NrZXQtY29ubmVjdGlvbi5jCitAQCAtMTA4Miw2ICsxMDgyLDEz IEBAIHByb2Nlc3NfZnJhbWUgKFNvdXBXZWJzb2NrZXRDb25uZWN0aW9uICpzZWxmKQorICAgICAg ICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgICB9CisgCisrCS8qIFJGQyA2NDU1IHNl Y3Rpb24gNS41IGxpbWl0cyBjb250cm9sIGZyYW1lIHBheWxvYWRzIHRvIDEyNSBieXRlcy4gKi8K KysJaWYgKGNvbnRyb2wgJiYgKGhlYWRlclsxXSAmIDB4N2YpID4gMTI1KSB7CisrCQlnX2RlYnVn ICgicmVjZWl2ZWQgb3ZlcnNpemVkIGNvbnRyb2wgZnJhbWUiKTsKKysJCXByb3RvY29sX2Vycm9y X2FuZF9jbG9zZSAoc2VsZik7CisrCQlyZXR1cm4gRkFMU0U7CisrCX0KKysKKyAJc3dpdGNoICho ZWFkZXJbMV0gJiAweDdmKSB7CisgCWNhc2UgMTI2OgorIAkJLyogSWYgMTI2LCB0aGUgZm9sbG93 aW5nIDIgYnl0ZXMgaW50ZXJwcmV0ZWQgYXMgYSAxNi1iaXQKK2RpZmYgLS1naXQgYS90ZXN0cy93 ZWJzb2NrZXQtdGVzdC5jIGIvdGVzdHMvd2Vic29ja2V0LXRlc3QuYworaW5kZXggYjhmNzEzMDAu LmRiMDg4YTU1IDEwMDY0NAorLS0tIGEvdGVzdHMvd2Vic29ja2V0LXRlc3QuYworKysrIGIvdGVz dHMvd2Vic29ja2V0LXRlc3QuYworQEAgLTgzNSw2ICs4MzUsOTggQEAgdGVzdF9zZW5kX2JhZF9k YXRhIChUZXN0ICp0ZXN0LAorIAlnX2Fzc2VydF9jbXB1aW50IChzb3VwX3dlYnNvY2tldF9jb25u ZWN0aW9uX2dldF9jbG9zZV9jb2RlICh0ZXN0LT5jbGllbnQpLCA9PSwgU09VUF9XRUJTT0NLRVRf Q0xPU0VfQkFEX0RBVEEpOworIH0KKyAKKytzdGF0aWMgZ2Jvb2xlYW4KKytvbl90aW1lb3V0X3Nl dF9mbGFnIChncG9pbnRlciB1c2VyX2RhdGEpCisreworKwlnYm9vbGVhbiAqdGltZWRfb3V0ID0g dXNlcl9kYXRhOworKworKwkqdGltZWRfb3V0ID0gVFJVRTsKKysKKysJcmV0dXJuIEdfU09VUkNF X1JFTU9WRTsKKyt9CisrCisrc3RhdGljIHZvaWQKKyt3YWl0X2Zvcl93ZWJzb2NrZXRfZXJyb3Ig KEdFcnJvciAqKmVycm9yKQorK3sKKysJZ2Jvb2xlYW4gdGltZWRfb3V0ID0gRkFMU0U7CisrCWd1 aW50IHRpbWVvdXRfaWQ7CisrCisrCXRpbWVvdXRfaWQgPSBnX3RpbWVvdXRfYWRkX3NlY29uZHMg KDEsIG9uX3RpbWVvdXRfc2V0X2ZsYWcsICZ0aW1lZF9vdXQpOworKwlXQUlUX1VOVElMICgqZXJy b3IgIT0gTlVMTCB8fCB0aW1lZF9vdXQpOworKworKwlpZiAoIXRpbWVkX291dCkKKysJCWdfc291 cmNlX3JlbW92ZSAodGltZW91dF9pZCk7CisrCWdfYXNzZXJ0X2ZhbHNlICh0aW1lZF9vdXQpOwor K30KKysKKytzdGF0aWMgdm9pZAorK3dyaXRlX292ZXJzaXplZF9jb250cm9sX2ZyYW1lX2hlYWRl ciAoR0lPU3RyZWFtICppbywKKysJCQkJICAgICAgZ3VpbnQ4IGxlbmd0aF9pbmRpY2F0b3IsCisr CQkJCSAgICAgIGdib29sZWFuIG1hc2tlZCkKKyt7CisrCWd1aW50OCBmcmFtZVtdID0geyAweDhh LCBsZW5ndGhfaW5kaWNhdG9yIH07CisrCUdFcnJvciAqZXJyb3IgPSBOVUxMOworKwlnc2l6ZSB3 cml0dGVuOworKworKwlnX2Fzc2VydF90cnVlIChsZW5ndGhfaW5kaWNhdG9yID09IDEyNiB8fCBs ZW5ndGhfaW5kaWNhdG9yID09IDEyNyk7CisrCisrCWlmIChtYXNrZWQpCisrCQlmcmFtZVsxXSB8 PSAweDgwOworKworKwlnX291dHB1dF9zdHJlYW1fd3JpdGVfYWxsIChnX2lvX3N0cmVhbV9nZXRf b3V0cHV0X3N0cmVhbSAoaW8pLAorKwkJCQkgICBmcmFtZSwgc2l6ZW9mIChmcmFtZSksICZ3cml0 dGVuLCBOVUxMLCAmZXJyb3IpOworKwlnX2Fzc2VydF9ub19lcnJvciAoZXJyb3IpOworKwlnX2Fz c2VydF9jbXB1aW50ICh3cml0dGVuLCA9PSwgc2l6ZW9mIChmcmFtZSkpOworK30KKysKKyt0eXBl ZGVmIHN0cnVjdCB7CisrCWd1aW50OCBsZW5ndGhfaW5kaWNhdG9yOworKwlnYm9vbGVhbiBzZXJ2 ZXJfcmVjZWl2ZXM7CisrfSBPdmVyc2l6ZWRDb250cm9sRnJhbWVUZXN0OworKworK3N0YXRpYyB2 b2lkCisrdGVzdF9yZWNlaXZlX292ZXJzaXplZF9jb250cm9sX2ZyYW1lIChUZXN0ICp0ZXN0LAor KwkJCQkgICAgICBnY29uc3Rwb2ludGVyIGRhdGEpCisreworKwljb25zdCBPdmVyc2l6ZWRDb250 cm9sRnJhbWVUZXN0ICpjb25maWcgPSBkYXRhOworKwlTb3VwV2Vic29ja2V0Q29ubmVjdGlvbiAq cmVjZWl2ZXI7CisrCVNvdXBXZWJzb2NrZXRDb25uZWN0aW9uICpzZW5kZXI7CisrCUdFcnJvciAq ZXJyb3IgPSBOVUxMOworKwlHSU9TdHJlYW0gKmlvOworKwlndWxvbmcgZXJyb3JfaWQ7CisrCWdi b29sZWFuIGNsb3NlX2V2ZW50ID0gRkFMU0U7CisrCisrCWlmIChjb25maWctPnNlcnZlcl9yZWNl aXZlcykgeworKwkJcmVjZWl2ZXIgPSB0ZXN0LT5zZXJ2ZXI7CisrCQlzZW5kZXIgPSB0ZXN0LT5j bGllbnQ7CisrCX0gZWxzZSB7CisrCQlyZWNlaXZlciA9IHRlc3QtPmNsaWVudDsKKysJCXNlbmRl ciA9IHRlc3QtPnNlcnZlcjsKKysJfQorKworKwlnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0 X2J5X2Z1bmMgKHJlY2VpdmVyLCBvbl9lcnJvcl9ub3RfcmVhY2hlZCwgTlVMTCk7CisrCWVycm9y X2lkID0gZ19zaWduYWxfY29ubmVjdCAocmVjZWl2ZXIsICJlcnJvciIsIEdfQ0FMTEJBQ0sgKG9u X2Vycm9yX2NvcHkpLCAmZXJyb3IpOworKwlnX3NpZ25hbF9jb25uZWN0IChzZW5kZXIsICJjbG9z ZWQiLCBHX0NBTExCQUNLIChvbl9jbG9zZV9zZXRfZmxhZyksICZjbG9zZV9ldmVudCk7CisrCisr CWlvID0gc291cF93ZWJzb2NrZXRfY29ubmVjdGlvbl9nZXRfaW9fc3RyZWFtIChzZW5kZXIpOwor Kwl3cml0ZV9vdmVyc2l6ZWRfY29udHJvbF9mcmFtZV9oZWFkZXIgKGlvLCBjb25maWctPmxlbmd0 aF9pbmRpY2F0b3IsCisrCQkJCQkgICAgICBjb25maWctPnNlcnZlcl9yZWNlaXZlcyk7CisrCXdh aXRfZm9yX3dlYnNvY2tldF9lcnJvciAoJmVycm9yKTsKKysJZ19hc3NlcnRfZXJyb3IgKGVycm9y LCBTT1VQX1dFQlNPQ0tFVF9FUlJPUiwgU09VUF9XRUJTT0NLRVRfQ0xPU0VfUFJPVE9DT0xfRVJS T1IpOworKwlnX2NsZWFyX2Vycm9yICgmZXJyb3IpOworKwlnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nv bm5lY3QgKHJlY2VpdmVyLCBlcnJvcl9pZCk7CisrCisrCVdBSVRfVU5USUwgKHNvdXBfd2Vic29j a2V0X2Nvbm5lY3Rpb25fZ2V0X3N0YXRlIChzZW5kZXIpID09IFNPVVBfV0VCU09DS0VUX1NUQVRF X0NMT1NFRCk7CisrCWdfYXNzZXJ0X3RydWUgKGNsb3NlX2V2ZW50KTsKKysJZ19hc3NlcnRfY21w dWludCAoc291cF93ZWJzb2NrZXRfY29ubmVjdGlvbl9nZXRfY2xvc2VfY29kZSAoc2VuZGVyKSwg PT0sCisrCQkJICBTT1VQX1dFQlNPQ0tFVF9DTE9TRV9QUk9UT0NPTF9FUlJPUik7CisrfQorKwor K3N0YXRpYyBjb25zdCBPdmVyc2l6ZWRDb250cm9sRnJhbWVUZXN0IG92ZXJzaXplZF9jb250cm9s X2ZyYW1lXzE2X3NlcnZlciA9IHsgMTI2LCBUUlVFIH07Cisrc3RhdGljIGNvbnN0IE92ZXJzaXpl ZENvbnRyb2xGcmFtZVRlc3Qgb3ZlcnNpemVkX2NvbnRyb2xfZnJhbWVfNjRfc2VydmVyID0geyAx MjcsIFRSVUUgfTsKKytzdGF0aWMgY29uc3QgT3ZlcnNpemVkQ29udHJvbEZyYW1lVGVzdCBvdmVy c2l6ZWRfY29udHJvbF9mcmFtZV8xNl9jbGllbnQgPSB7IDEyNiwgRkFMU0UgfTsKKytzdGF0aWMg Y29uc3QgT3ZlcnNpemVkQ29udHJvbEZyYW1lVGVzdCBvdmVyc2l6ZWRfY29udHJvbF9mcmFtZV82 NF9jbGllbnQgPSB7IDEyNywgRkFMU0UgfTsKKysKKyBzdGF0aWMgY29uc3QgY2hhciAqbmVnb3Rp YXRlX2NsaWVudF9wcm90b2NvbHNbXSA9IHsgImJiYiIsICJjY2MiLCBOVUxMIH07Cisgc3RhdGlj IGNvbnN0IGNoYXIgKm5lZ290aWF0ZV9zZXJ2ZXJfcHJvdG9jb2xzW10gPSB7ICJhYWEiLCAiYmJi IiwgImNjYyIsIE5VTEwgfTsKKyBzdGF0aWMgY29uc3QgY2hhciAqbmVnb3RpYXRlZF9wcm90b2Nv bCA9ICJiYmIiOworQEAgLTI1NzQsNiArMjY2NiwyNyBAQCBtYWluIChpbnQgYXJnYywKKyAJCSAg ICB0ZXN0X3NlbmRfYmFkX2RhdGEsCisgCQkgICAgdGVhcmRvd25fc291cF9jb25uZWN0aW9uKTsK KyAKKysJZ190ZXN0X2FkZCAoIi93ZWJzb2NrZXQvZGlyZWN0L3NlcnZlci1yZWNlaXZlLW92ZXJz aXplZC1jb250cm9sLWZyYW1lLzE2LWJpdCIsCisrCQkgICAgVGVzdCwgJm92ZXJzaXplZF9jb250 cm9sX2ZyYW1lXzE2X3NlcnZlciwKKysJCSAgICBzZXR1cF9kaXJlY3RfY29ubmVjdGlvbiwKKysJ CSAgICB0ZXN0X3JlY2VpdmVfb3ZlcnNpemVkX2NvbnRyb2xfZnJhbWUsCisrCQkgICAgdGVhcmRv d25fZGlyZWN0X2Nvbm5lY3Rpb24pOworKwlnX3Rlc3RfYWRkICgiL3dlYnNvY2tldC9kaXJlY3Qv c2VydmVyLXJlY2VpdmUtb3ZlcnNpemVkLWNvbnRyb2wtZnJhbWUvNjQtYml0IiwKKysJCSAgICBU ZXN0LCAmb3ZlcnNpemVkX2NvbnRyb2xfZnJhbWVfNjRfc2VydmVyLAorKwkJICAgIHNldHVwX2Rp cmVjdF9jb25uZWN0aW9uLAorKwkJICAgIHRlc3RfcmVjZWl2ZV9vdmVyc2l6ZWRfY29udHJvbF9m cmFtZSwKKysJCSAgICB0ZWFyZG93bl9kaXJlY3RfY29ubmVjdGlvbik7CisrCWdfdGVzdF9hZGQg KCIvd2Vic29ja2V0L2RpcmVjdC9jbGllbnQtcmVjZWl2ZS1vdmVyc2l6ZWQtY29udHJvbC1mcmFt ZS8xNi1iaXQiLAorKwkJICAgIFRlc3QsICZvdmVyc2l6ZWRfY29udHJvbF9mcmFtZV8xNl9jbGll bnQsCisrCQkgICAgc2V0dXBfZGlyZWN0X2Nvbm5lY3Rpb24sCisrCQkgICAgdGVzdF9yZWNlaXZl X292ZXJzaXplZF9jb250cm9sX2ZyYW1lLAorKwkJICAgIHRlYXJkb3duX2RpcmVjdF9jb25uZWN0 aW9uKTsKKysJZ190ZXN0X2FkZCAoIi93ZWJzb2NrZXQvZGlyZWN0L2NsaWVudC1yZWNlaXZlLW92 ZXJzaXplZC1jb250cm9sLWZyYW1lLzY0LWJpdCIsCisrCQkgICAgVGVzdCwgJm92ZXJzaXplZF9j b250cm9sX2ZyYW1lXzY0X2NsaWVudCwKKysJCSAgICBzZXR1cF9kaXJlY3RfY29ubmVjdGlvbiwK KysJCSAgICB0ZXN0X3JlY2VpdmVfb3ZlcnNpemVkX2NvbnRyb2xfZnJhbWUsCisrCQkgICAgdGVh cmRvd25fZGlyZWN0X2Nvbm5lY3Rpb24pOworKworIAlnX3Rlc3RfYWRkICgiL3dlYnNvY2tldC9k aXJlY3QvY2xvc2UtY2xlYW4tY2xpZW50IiwgVGVzdCwgTlVMTCwgTlVMTCwKKyAJCSAgICB0ZXN0 X2Nsb3NlX2NsZWFuX2NsaWVudF9kaXJlY3QsCisgCQkgICAgTlVMTCk7CistLSAKK0dpdExhYgor CgpkaWZmIC0tZ2l0IGEvQ1ZFLTIwMjYtMTU3MTIucGF0Y2ggYi9DVkUtMjAyNi0xNTcxMi5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NjE2ZGVjCi0tLSAvZGV2L251 bGwKKysrIGIvQ1ZFLTIwMjYtMTU3MTIucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRnJvbSAzYTZm YjU2YTBjYmE0MmQxMWY1ZmQxZGI2ZGVkY2M3YzJlOTI3NTdiIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQorRnJvbTogTWlrZSBHb3JzZSA8bWdvcnNlQHN1c2UuY29tPgorRGF0ZTogRnJpLCA0IFNl cCAyMDI2IDE0OjA1OjA0IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIGh0dHAyOiBEb24ndCBhc3N1 bWUgdGhhdCBHT0FXQVkgb3BhcXVlIGRhdGEgaXMgTlVMLXRlcm1pbmF0ZWQKKworbmdodHRwMiBh bGxvY2F0ZXMgZnJhbWUtPmdvYXdheS5vcGFxdWVfZGF0YSB3aXRoIGV4YWN0bHkgb3BhcXVlX2Rh dGFfbGVuCitieXRlcyBhbmQgbm8gdGVybWluYXRvciwgc28gcGFzc2luZyBpdCB0byBhICIlcyIg Zm9ybWF0IGluIGgyX2RlYnVnKCkKK3JlYWRzIHBhc3QgdGhlIGVuZCBvZiB0aGUgYnVmZmVyIHdo ZW4gZGVidWcgbG9nZ2luZyBpcyBlbmFibGVkLgorCitVc2UgIiUuKnMiIHdpdGggb3BhcXVlX2Rh dGFfbGVuIGFzIHRoZSBwcmVjaXNpb24gc28gdGhlIHJlYWQgaXMgYm91bmRlZAord2l0aG91dCBh bGxvY2F0aW5nIGEgY29weS4KKworQ2xvc2VzICM1NDAKKy0tLQorIGxpYnNvdXAvaHR0cDIvc291 cC1jbGllbnQtbWVzc2FnZS1pby1odHRwMi5jIHwgNSArKystLQorIDEgZmlsZSBjaGFuZ2VkLCAz IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJzb3VwL2h0 dHAyL3NvdXAtY2xpZW50LW1lc3NhZ2UtaW8taHR0cDIuYyBiL2xpYnNvdXAvaHR0cDIvc291cC1j bGllbnQtbWVzc2FnZS1pby1odHRwMi5jCitpbmRleCBhYjUyMDAzZC4uYjY3NDI5MjQgMTAwNjQ0 CistLS0gYS9saWJzb3VwL2h0dHAyL3NvdXAtY2xpZW50LW1lc3NhZ2UtaW8taHR0cDIuYworKysr IGIvbGlic291cC9odHRwMi9zb3VwLWNsaWVudC1tZXNzYWdlLWlvLWh0dHAyLmMKK0BAIC04MTMs MTAgKzgxMywxMSBAQCBvbl9mcmFtZV9yZWN2X2NhbGxiYWNrIChuZ2h0dHAyX3Nlc3Npb24gICAg ICpzZXNzaW9uLAorIAorICAgICAgICAgICAgICAgICBzd2l0Y2ggKGZyYW1lLT5oZC50eXBlKSB7 CisgICAgICAgICAgICAgICAgIGNhc2UgTkdIVFRQMl9HT0FXQVk6CistICAgICAgICAgICAgICAg ICAgICAgICAgaDJfZGVidWcgKGlvLCBOVUxMLCAiW1JFQ1ZdIEdPQVdBWTogZXJyb3I9JXMsIGxh c3Rfc3RyZWFtX2lkPSVkICVzIiwKKysgICAgICAgICAgICAgICAgICAgICAgICBoMl9kZWJ1ZyAo aW8sIE5VTEwsICJbUkVDVl0gR09BV0FZOiBlcnJvcj0lcywgbGFzdF9zdHJlYW1faWQ9JWQgJS4q cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5naHR0cDJfaHR0cDJfc3Ry ZXJyb3IgKGZyYW1lLT5nb2F3YXkuZXJyb3JfY29kZSksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGZyYW1lLT5nb2F3YXkubGFzdF9zdHJlYW1faWQsCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5nb2F3YXkub3BhcXVlX2RhdGEgPyAoY2hhciAq KWZyYW1lLT5nb2F3YXkub3BhcXVlX2RhdGEgOiAiIik7CisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChpbnQpZnJhbWUtPmdvYXdheS5vcGFxdWVfZGF0YV9sZW4sCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5nb2F3YXkub3BhcXVlX2RhdGEgPyAo Y29uc3QgY2hhciAqKWZyYW1lLT5nb2F3YXkub3BhcXVlX2RhdGEgOiAiIik7CisgICAgICAgICAg ICAgICAgICAgICAgICAgaGFuZGxlX2dvYXdheSAoaW8sIGZyYW1lLT5nb2F3YXkuZXJyb3JfY29k ZSwgZnJhbWUtPmdvYXdheS5sYXN0X3N0cmVhbV9pZCk7CisgICAgICAgICAgICAgICAgICAgICAg ICAgaW8tPmlzX3NodXRkb3duID0gVFJVRTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBzb3Vw X2NsaWVudF9tZXNzYWdlX2lvX2h0dHAyX3Rlcm1pbmF0ZV9zZXNzaW9uIChpbyk7CistLSAKK0dp dExhYgorCgpkaWZmIC0tZ2l0IGEvQ1ZFLTIwMjYtMTU3MTMucGF0Y2ggYi9DVkUtMjAyNi0xNTcx My5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjg0ZWJiCi0tLSAv ZGV2L251bGwKKysrIGIvQ1ZFLTIwMjYtMTU3MTMucGF0Y2gKQEAgLTAsMCArMSwxNDggQEAKK0Zy b20gMjRmYjY0NWZhOTQ5ZWNlN2Q3ZTEwMzYzYjc3Y2YyZDVmYTJjMjQ2OSBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKK0Zyb206IE1pbGFuIENyaGEgPG1jcmhhQHJlZGhhdC5jb20+CitEYXRlOiBG cmksIDQgU2VwIDIwMjYgMTA6MzQ6MjIgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gY2FjaGU6IFJl amVjdCBjYWNoaW5nIGF1dGhlbnRpY2F0ZWQgcmVzcG9uc2VzIGluIHNoYXJlZAorIGNhY2hlcwor CitSRkMgNzIzNCBTZWN0aW9uIDMuMiBmb3JiaWRzIHRvIHNhdmUgdG8gYSBzaGFyZWQgY2FjaGUg YSByZXNwb25zZSB0bworYSByZXF1ZXN0IGNvbnRhaW5pbmcgYW4gQXV0aG9yaXphdGlvbiBoZWFk ZXIgdW5sZXNzIHRoZSByZXNwb25zZQorZXhwbGljaXRseSBhbGxvd3MgaXQgd2l0aCBwdWJsaWMs IG11c3QtcmV2YWxpZGF0ZSBvciBzLW1heGFnZS4KKworVGhpcyBpcyBDVkUtMjAyNi0xNTcxMy4K KworQ2xvc2VzIGh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9saWJzb3VwLy0vd29ya19p dGVtcy81NDEKKy0tLQorIGxpYnNvdXAvY2FjaGUvc291cC1jYWNoZS5jIHwgMTUgKysrKysrKysr KysKKyB0ZXN0cy9jYWNoZS10ZXN0LmMgICAgICAgICB8IDU1ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCA3MCBpbnNlcnRpb25zKCspCisK K2RpZmYgLS1naXQgYS9saWJzb3VwL2NhY2hlL3NvdXAtY2FjaGUuYyBiL2xpYnNvdXAvY2FjaGUv c291cC1jYWNoZS5jCitpbmRleCA0N2UxZWU3MC4uNTIyNTM4MmQgMTAwNjQ0CistLS0gYS9saWJz b3VwL2NhY2hlL3NvdXAtY2FjaGUuYworKysrIGIvbGlic291cC9jYWNoZS9zb3VwLWNhY2hlLmMK K0BAIC0xNzQsNiArMTc0LDcgQEAgZ2V0X2NhY2hlYWJpbGl0eSAoU291cENhY2hlICpjYWNoZSwg U291cE1lc3NhZ2UgKm1zZykKKyAJU291cENhY2hlYWJpbGl0eSBjYWNoZWFiaWxpdHk7CisgCWNv bnN0IGNoYXIgKmNhY2hlX2NvbnRyb2wsICpjb250ZW50X3R5cGU7CisgCWdib29sZWFuIGhhc19t YXhfYWdlID0gRkFMU0U7CisrCWdib29sZWFuIHBlcm1pdHNfYXV0aG9yaXplZF9zaGFyZWRfY2Fj aGluZyA9IEZBTFNFOworIAorIAkvKiAxLiBUaGUgcmVxdWVzdCBtZXRob2QgbXVzdCBiZSBjYWNo ZWFibGUgKi8KKyAJaWYgKHNvdXBfbWVzc2FnZV9nZXRfbWV0aG9kIChtc2cpID09IFNPVVBfTUVU SE9EX0dFVCkKK0BAIC0yMDEsNiArMjAyLDExIEBAIGdldF9jYWNoZWFiaWxpdHkgKFNvdXBDYWNo ZSAqY2FjaGUsIFNvdXBNZXNzYWdlICptc2cpCisgCQkJCXNvdXBfaGVhZGVyX2ZyZWVfcGFyYW1f bGlzdCAoaGFzaCk7CisgCQkJCXJldHVybiBTT1VQX0NBQ0hFX1VOQ0FDSEVBQkxFOworIAkJCX0K KysKKysJCQlwZXJtaXRzX2F1dGhvcml6ZWRfc2hhcmVkX2NhY2hpbmcgPQorKwkJCQlnX2hhc2hf dGFibGVfbG9va3VwX2V4dGVuZGVkIChoYXNoLCAicHVibGljIiwgTlVMTCwgTlVMTCkgfHwKKysJ CQkJZ19oYXNoX3RhYmxlX2xvb2t1cF9leHRlbmRlZCAoaGFzaCwgIm11c3QtcmV2YWxpZGF0ZSIs IE5VTEwsIE5VTEwpIHx8CisrCQkJCWdfaGFzaF90YWJsZV9sb29rdXBfZXh0ZW5kZWQgKGhhc2gs ICJzLW1heGFnZSIsIE5VTEwsIE5VTEwpOworIAkJfQorIAorIAkJLyogMi4gVGhlICduby1zdG9y ZScgY2FjaGUgZGlyZWN0aXZlIGRvZXMgbm90IGFwcGVhciBpbiB0aGUKK0BAIC0yMjUsNiArMjMx LDE1IEBAIGdldF9jYWNoZWFiaWxpdHkgKFNvdXBDYWNoZSAqY2FjaGUsIFNvdXBNZXNzYWdlICpt c2cpCisgCQlzb3VwX2hlYWRlcl9mcmVlX3BhcmFtX2xpc3QgKGhhc2gpOworIAl9CisgCisrCS8q IFJGQyA3MjM0IFNlY3Rpb24gMy4yOiBhIHNoYXJlZCBjYWNoZSBNVVNUIE5PVCBzdG9yZSBhIHJl c3BvbnNlIHRvCisrCSAqIGEgcmVxdWVzdCBjb250YWluaW5nIGFuIEF1dGhvcml6YXRpb24gaGVh ZGVyIHVubGVzcyB0aGUgcmVzcG9uc2UKKysJICogZXhwbGljaXRseSBhbGxvd3MgaXQgd2l0aCBw dWJsaWMsIG11c3QtcmV2YWxpZGF0ZSBvciBzLW1heGFnZS4KKysJICovCisrCWlmIChwcml2LT5j YWNoZV90eXBlID09IFNPVVBfQ0FDSEVfU0hBUkVEICYmCisrCSAgICAhcGVybWl0c19hdXRob3Jp emVkX3NoYXJlZF9jYWNoaW5nICYmCisrCSAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfb25l X2NvbW1vbiAoc291cF9tZXNzYWdlX2dldF9yZXF1ZXN0X2hlYWRlcnMgKG1zZyksIFNPVVBfSEVB REVSX0FVVEhPUklaQVRJT04pKQorKwkJcmV0dXJuIFNPVVBfQ0FDSEVfVU5DQUNIRUFCTEU7Cisr CisgCS8qIFNlY3Rpb24gMTMuOSAqLworIAlpZiAoKGdfdXJpX2dldF9xdWVyeSAoc291cF9tZXNz YWdlX2dldF91cmkgKG1zZykpKSAmJgorIAkgICAgIXNvdXBfbWVzc2FnZV9oZWFkZXJzX2dldF9v bmVfY29tbW9uIChzb3VwX21lc3NhZ2VfZ2V0X3Jlc3BvbnNlX2hlYWRlcnMgKG1zZyksIFNPVVBf SEVBREVSX0VYUElSRVMpICYmCitkaWZmIC0tZ2l0IGEvdGVzdHMvY2FjaGUtdGVzdC5jIGIvdGVz dHMvY2FjaGUtdGVzdC5jCitpbmRleCBlZjJlYmViMy4uZGZmNmJkMzUgMTAwNjQ0CistLS0gYS90 ZXN0cy9jYWNoZS10ZXN0LmMKKysrKyBiL3Rlc3RzL2NhY2hlLXRlc3QuYworQEAgLTk1LDYgKzk1 LDcgQEAgc2VydmVyX2NhbGxiYWNrIChTb3VwU2VydmVyICAgICAgICAqc2VydmVyLAorIAlpZiAo c3RhdHVzID09IFNPVVBfU1RBVFVTX09LKSB7CisgCQlHQ2hlY2tzdW0gKnN1bTsKKyAJCWNvbnN0 IGNoYXIgKmJvZHk7CisrCQljb25zdCBjaGFyICphdXRob3JpemF0aW9uOworIAorIAkJc3VtID0g Z19jaGVja3N1bV9uZXcgKEdfQ0hFQ0tTVU1fU0hBMjU2KTsKKyAJCWdfY2hlY2tzdW1fdXBkYXRl IChzdW0sIChndWNoYXIgKilwYXRoLCBzdHJsZW4gKHBhdGgpKTsKK0BAIC0xMDIsNiArMTAzLDkg QEAgc2VydmVyX2NhbGxiYWNrIChTb3VwU2VydmVyICAgICAgICAqc2VydmVyLAorIAkJCWdfY2hl Y2tzdW1fdXBkYXRlIChzdW0sIChndWNoYXIgKilsYXN0X21vZGlmaWVkLCBzdHJsZW4gKGxhc3Rf bW9kaWZpZWQpKTsKKyAJCWlmIChldGFnKQorIAkJCWdfY2hlY2tzdW1fdXBkYXRlIChzdW0sIChn dWNoYXIgKilldGFnLCBzdHJsZW4gKGV0YWcpKTsKKysJCWF1dGhvcml6YXRpb24gPSBzb3VwX21l c3NhZ2VfaGVhZGVyc19nZXRfb25lIChyZXF1ZXN0X2hlYWRlcnMsICJBdXRob3JpemF0aW9uIik7 CisrCQlpZiAoYXV0aG9yaXphdGlvbikKKysJCQlnX2NoZWNrc3VtX3VwZGF0ZSAoc3VtLCAoZ3Vj aGFyICopYXV0aG9yaXphdGlvbiwgc3RybGVuIChhdXRob3JpemF0aW9uKSk7CisgCQlib2R5ID0g Z19jaGVja3N1bV9nZXRfc3RyaW5nIChzdW0pOworIAkJc291cF9zZXJ2ZXJfbWVzc2FnZV9zZXRf cmVzcG9uc2UgKG1zZywgInRleHQvcGxhaW4iLAorIAkJCQkJCSAgU09VUF9NRU1PUllfQ09QWSwK K0BAIC03MzYsNiArNzQwLDU2IEBAIGRvX2xlYWtzX3Rlc3QgKGdjb25zdHBvaW50ZXIgZGF0YSkK KyAJZ19mcmVlIChjYWNoZV9kaXIpOworIH0KKyAKKytzdGF0aWMgdm9pZAorK2RvX3NoYXJlZF9j YWNoZV9hdXRob3JpemF0aW9uX3Rlc3QgKGdjb25zdHBvaW50ZXIgZGF0YSkKKyt7CisrCUdVcmkg KmJhc2VfdXJpID0gKEdVcmkgKilkYXRhOworKwlTb3VwU2Vzc2lvbiAqYXR0YWNrZXJfc2Vzc2lv bjsKKysJU291cFNlc3Npb24gKnZpY3RpbV9zZXNzaW9uOworKwlTb3VwQ2FjaGUgKmF0dGFja2Vy X2NhY2hlOworKwlTb3VwQ2FjaGUgKnZpY3RpbV9jYWNoZTsKKysJY2hhciAqY2FjaGVfZGlyOwor KwljaGFyICphdHRhY2tlcl9ib2R5OworKwljaGFyICp2aWN0aW1fYm9keTsKKysKKysJY2FjaGVf ZGlyID0gZ19kaXJfbWFrZV90bXAgKCJjYWNoZS10ZXN0LVhYWFhYWCIsIE5VTEwpOworKwlkZWJ1 Z19wcmludGYgKDIsICIgIENhY2hpbmcgdG8gJXNcbiIsIGNhY2hlX2Rpcik7CisrCisrCWF0dGFj a2VyX2NhY2hlID0gc291cF9jYWNoZV9uZXcgKGNhY2hlX2RpciwgU09VUF9DQUNIRV9TSEFSRUQp OworKwlhdHRhY2tlcl9zZXNzaW9uID0gc291cF90ZXN0X3Nlc3Npb25fbmV3IChOVUxMKTsKKysJ c291cF9zZXNzaW9uX2FkZF9mZWF0dXJlIChhdHRhY2tlcl9zZXNzaW9uLCBTT1VQX1NFU1NJT05f RkVBVFVSRSAoYXR0YWNrZXJfY2FjaGUpKTsKKysKKysJYXR0YWNrZXJfYm9keSA9IGRvX3JlcXVl c3QgKGF0dGFja2VyX3Nlc3Npb24sIGJhc2VfdXJpLCAiR0VUIiwgIi9hdXRoei1zaGFyZWQtY2Fj aGUiLCBOVUxMLAorKwkJCQkgICAgIkF1dGhvcml6YXRpb24iLCAiQmVhcmVyIEFUVEFDS0VSX1NF Q1JFVCIsCisrCQkJCSAgICAiVGVzdC1TZXQtQ2FjaGUtQ29udHJvbCIsICJtYXgtYWdlPTYwMCIs CisrCQkJCSAgICBOVUxMKTsKKysJZ19hc3NlcnRfdHJ1ZSAobGFzdF9yZXF1ZXN0X2hpdF9uZXR3 b3JrKTsKKysKKysJc291cF9jYWNoZV9kdW1wIChhdHRhY2tlcl9jYWNoZSk7CisrCXNvdXBfdGVz dF9zZXNzaW9uX2Fib3J0X3VucmVmIChhdHRhY2tlcl9zZXNzaW9uKTsKKysJZ19vYmplY3RfdW5y ZWYgKGF0dGFja2VyX2NhY2hlKTsKKysKKysJdmljdGltX2NhY2hlID0gc291cF9jYWNoZV9uZXcg KGNhY2hlX2RpciwgU09VUF9DQUNIRV9TSEFSRUQpOworKwlzb3VwX2NhY2hlX2xvYWQgKHZpY3Rp bV9jYWNoZSk7CisrCXZpY3RpbV9zZXNzaW9uID0gc291cF90ZXN0X3Nlc3Npb25fbmV3IChOVUxM KTsKKysJc291cF9zZXNzaW9uX2FkZF9mZWF0dXJlICh2aWN0aW1fc2Vzc2lvbiwgU09VUF9TRVNT SU9OX0ZFQVRVUkUgKHZpY3RpbV9jYWNoZSkpOworKworKwl2aWN0aW1fYm9keSA9IGRvX3JlcXVl c3QgKHZpY3RpbV9zZXNzaW9uLCBiYXNlX3VyaSwgIkdFVCIsICIvYXV0aHotc2hhcmVkLWNhY2hl IiwgTlVMTCwKKysJCQkJICAiQXV0aG9yaXphdGlvbiIsICJCZWFyZXIgVklDVElNX1NFQ1JFVCIs CisrCQkJCSAgIlRlc3QtU2V0LUNhY2hlLUNvbnRyb2wiLCAibWF4LWFnZT02MDAiLAorKwkJCQkg IE5VTEwpOworKworKwlnX2Fzc2VydF90cnVlIChsYXN0X3JlcXVlc3RfaGl0X25ldHdvcmspOwor KwlnX2Fzc2VydF9jbXBzdHIgKGF0dGFja2VyX2JvZHksICE9LCB2aWN0aW1fYm9keSk7CisrCisr CWdfZnJlZSAoYXR0YWNrZXJfYm9keSk7CisrCWdfZnJlZSAodmljdGltX2JvZHkpOworKworKwlz b3VwX3Rlc3Rfc2Vzc2lvbl9hYm9ydF91bnJlZiAodmljdGltX3Nlc3Npb24pOworKwlnX29iamVj dF91bnJlZiAodmljdGltX2NhY2hlKTsKKysJZ19mcmVlIChjYWNoZV9kaXIpOworK30KKysKKyBz dGF0aWMgdm9pZAorIGRvX21ldHJpY3NfdGVzdCAoZ2NvbnN0cG9pbnRlciBkYXRhKQorIHsKK0BA IC0xMTA4LDYgKzExNjIsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCWdfdGVz dF9hZGRfZGF0YV9mdW5jICgiL2NhY2hlL2NhbmNlbGxhdGlvbiIsIGJhc2VfdXJpLCBkb19jYW5j ZWxfdGVzdCk7CisgCWdfdGVzdF9hZGRfZGF0YV9mdW5jICgiL2NhY2hlL3JlZmNvdW50aW5nIiwg YmFzZV91cmksIGRvX3JlZmNvdW50aW5nX3Rlc3QpOworIAlnX3Rlc3RfYWRkX2RhdGFfZnVuYyAo Ii9jYWNoZS9oZWFkZXJzIiwgYmFzZV91cmksIGRvX2hlYWRlcnNfdGVzdCk7CisrCWdfdGVzdF9h ZGRfZGF0YV9mdW5jICgiL2NhY2hlL3NoYXJlZC1jYWNoZS1hdXRob3JpemF0aW9uIiwgYmFzZV91 cmksIGRvX3NoYXJlZF9jYWNoZV9hdXRob3JpemF0aW9uX3Rlc3QpOworIAlnX3Rlc3RfYWRkX2Rh dGFfZnVuYyAoIi9jYWNoZS9sZWFrcyIsIGJhc2VfdXJpLCBkb19sZWFrc190ZXN0KTsKKyAgICAg ICAgIGdfdGVzdF9hZGRfZGF0YV9mdW5jICgiL2NhY2hlL21ldHJpY3MiLCBiYXNlX3VyaSwgZG9f bWV0cmljc190ZXN0KTsKKyAgICAgICAgIGdfdGVzdF9hZGRfZGF0YV9mdW5jICgiL2NhY2hlL3Ro cmVhZHMiLCBiYXNlX3VyaSwgZG9fdGhyZWFkc190ZXN0KTsKKy0tIAorR2l0TGFiCisKCmRpZmYg LS1naXQgYS9DVkUtMjAyNi0xNTcxNC5wYXRjaCBiL0NWRS0yMDI2LTE1NzE0LnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1MWY3NjcKLS0tIC9kZXYvbnVsbAorKysg Yi9DVkUtMjAyNi0xNTcxNC5wYXRjaApAQCAtMCwwICsxLDEyMSBAQAorRnJvbSA3OWE1MmNhZGM0 OTAzNjBlMjQ5Y2MyYjIzMDM4ZDUzMmI0NGRiZjIzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQor RnJvbTogTWlrZSBHb3JzZSA8bWdvcnNlQHN1c2UuY29tPgorRGF0ZTogRnJpLCA0IFNlcCAyMDI2 IDE0OjEwOjQ2IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIG11bHRpcGFydDogRml4IG91dC1vZi1i b3VuZHMgcmVhZCBpbiBjYXNlIG9mIGFuIGV4Y2Vzc2l2ZWx5CisgbG9uZyBib3VuZGFyeQorCitz b3VwX211bHRpcGFydF9pbnB1dF9zdHJlYW1fcmVhZF9oZWFkZXJzKCkgY29tcGFyZWQgbWV0YV9i dWYgYWdhaW5zdCB0aGUKK2JvdW5kYXJ5IHVzaW5nIHRoZSBib3VuZGFyeSBsZW5ndGggd2l0aG91 dCBjaGVja2luZyB0aGF0IG1ldGFfYnVmIGhlbGQKK3RoYXQgbWFueSBieXRlcywgc28gYSBzZXJ2 ZXIgc2VuZGluZyBhIGJvdW5kYXJ5IGxvbmdlciB0aGFuIHRoZSByZWFkCitidWZmZXIgY291bGQg bWFrZSBzdHJuY21wKCkgcmVhZCBwYXN0IHRoZSBlbmQgb2YgdGhlIGFsbG9jYXRpb24uIEl0IGFs c28KK2NvbXB1dGVkIHJlYWRfYnVmICsgbnJlYWQgLSA0IGJlZm9yZSB2ZXJpZnlpbmcgbnJlYWQg d2FzIGxhcmdlIGVub3VnaCwKK2FuZCBhc3NlcnRlZCByYXRoZXIgdGhhbiBmYWlsaW5nIHdoZW4g YSBsaW5lIGRpZCBub3QgZW5kIGluIGEgbmV3bGluZS4KKworT25seSBjb21wYXJlIG9uY2UgZW5v dWdoIGJ5dGVzIGhhdmUgYmVlbiByZWFkLCBpbmRleCByZWFkX2J1ZiBhZnRlciB0aGUKK2xlbmd0 aCBjaGVja3MsIGFuZCB0cmVhdCBhbiB1bnRlcm1pbmF0ZWQgbGluZSBhcyBlbmQgb2YgcGFyc2lu Zy4KKworQ2xvc2VzICE1NDYKKy0tLQorIGxpYnNvdXAvc291cC1tdWx0aXBhcnQtaW5wdXQtc3Ry ZWFtLmMgfCAxMiArKysrLS0tLS0KKyB0ZXN0cy9tdWx0aXBhcnQtdGVzdC5jICAgICAgICAgICAg ICAgIHwgMzcgKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCA0 MyBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGlic291cC9z b3VwLW11bHRpcGFydC1pbnB1dC1zdHJlYW0uYyBiL2xpYnNvdXAvc291cC1tdWx0aXBhcnQtaW5w dXQtc3RyZWFtLmMKK2luZGV4IGI3ZjFlZDcyLi4yMmNjZTEwMiAxMDA2NDQKKy0tLSBhL2xpYnNv dXAvc291cC1tdWx0aXBhcnQtaW5wdXQtc3RyZWFtLmMKKysrKyBiL2xpYnNvdXAvc291cC1tdWx0 aXBhcnQtaW5wdXQtc3RyZWFtLmMKK0BAIC0zNjEsNyArMzYxLDYgQEAgc291cF9tdWx0aXBhcnRf aW5wdXRfc3RyZWFtX3JlYWRfaGVhZGVycyAoU291cE11bHRpcGFydElucHV0U3RyZWFtICAqbXVs dGlwYXJ0LAorIHsKKyAJU291cE11bHRpcGFydElucHV0U3RyZWFtUHJpdmF0ZSAqcHJpdiA9IHNv dXBfbXVsdGlwYXJ0X2lucHV0X3N0cmVhbV9nZXRfaW5zdGFuY2VfcHJpdmF0ZSAobXVsdGlwYXJ0 KTsKKyAJZ3VjaGFyIHJlYWRfYnVmW1JFU1BPTlNFX0JMT0NLX1NJWkVdOworLQlndWNoYXIgKmJ1 ZjsKKyAJZ2Jvb2xlYW4gZ290X2JvdW5kYXJ5ID0gRkFMU0U7CisgCWdib29sZWFuIGdvdF9sZiA9 IEZBTFNFOworIAlnc3NpemUgbnJlYWQgPSAwOworQEAgLTM4MywyMiArMzgyLDIzIEBAIHNvdXBf bXVsdGlwYXJ0X2lucHV0X3N0cmVhbV9yZWFkX2hlYWRlcnMgKFNvdXBNdWx0aXBhcnRJbnB1dFN0 cmVhbSAgKm11bHRpcGFydCwKKyAJCSAqIG1heSBnZXQgdGhlIG11bHRpcGFydCBlbmQgaW5kaWNh dG9yIHdpdGhvdXQgZ2V0dGluZyBhIG5ldyBsaW5lLgorIAkJICovCisgCQlpZiAoIWdvdF9ib3Vu ZGFyeSAmJgorKwkJICAgIHByaXYtPm1ldGFfYnVmLT5sZW4gPj0gcHJpdi0+Ym91bmRhcnlfc2l6 ZSAmJgorIAkJICAgICFzdHJuY21wICgoY2hhciAqKXByaXYtPm1ldGFfYnVmLT5kYXRhLAorIAkJ CSAgICAgIHByaXYtPmJvdW5kYXJ5LAorIAkJCSAgICAgIHByaXYtPmJvdW5kYXJ5X3NpemUpKSB7 CisgCQkJZ290X2JvdW5kYXJ5ID0gVFJVRTsKKyAKKyAJCQkvKiBOb3cgY2hlY2sgZm9yIHBvc3Np YmxlIG11bHRpcGFydCB0ZXJtaW5hdGlvbi4gKi8KKy0JCQlidWYgPSAmcmVhZF9idWZbbnJlYWQg LSA0XTsKKy0JCQlpZiAoKG5yZWFkID49IDQgJiYgIW1lbWNtcCAoYnVmLCAiLS1cclxuIiwgNCkp IHx8CistCQkJICAgIChucmVhZCA+PSAzICYmICFtZW1jbXAgKGJ1ZiArIDEsICItLVxuIiwgMykp IHx8CistCQkJICAgIChucmVhZCA+PSAzICYmICFtZW1jbXAgKGJ1ZiArIDIsICItLSIsIDIpKSkg eworKwkJCWlmICgobnJlYWQgPj0gNCAmJiAhbWVtY21wIChyZWFkX2J1ZiArIG5yZWFkIC0gNCwg Ii0tXHJcbiIsIDQpKSB8fAorKwkJCSAgICAobnJlYWQgPj0gMyAmJiAhbWVtY21wIChyZWFkX2J1 ZiArIG5yZWFkIC0gMywgIi0tXG4iLCAzKSkgfHwKKysJCQkgICAgKG5yZWFkID49IDMgJiYgIW1l bWNtcCAocmVhZF9idWYgKyBucmVhZCAtIDIsICItLSIsIDIpKSkgeworIAkJCQlnX2J5dGVfYXJy YXlfc2V0X3NpemUgKHByaXYtPm1ldGFfYnVmLCAwKTsKKyAJCQkJcmV0dXJuIEZBTFNFOworIAkJ CX0KKyAJCX0KKyAKKy0JCWdfcmV0dXJuX3ZhbF9pZl9mYWlsIChnb3RfbGYsIEZBTFNFKTsKKysJ CWlmICghZ290X2xmKQorKwkJCXJldHVybiBGQUxTRTsKKyAKKyAJCS8qIERpc2NhcmQgcHJlLWJv dW5kYXJ5IGxpbmVzLiAqLworIAkJaWYgKCFnb3RfYm91bmRhcnkpIHsKK2RpZmYgLS1naXQgYS90 ZXN0cy9tdWx0aXBhcnQtdGVzdC5jIGIvdGVzdHMvbXVsdGlwYXJ0LXRlc3QuYworaW5kZXggYjFi ZjViYjguLmE1OThhMWM4IDEwMDY0NAorLS0tIGEvdGVzdHMvbXVsdGlwYXJ0LXRlc3QuYworKysr IGIvdGVzdHMvbXVsdGlwYXJ0LXRlc3QuYworQEAgLTU5Niw2ICs1OTYsNDIgQEAgdGVzdF9tdWx0 aXBhcnRfYm91bmRzX2JhZF8zICh2b2lkKQorICAgICAgICAgZ19vYmplY3RfdW5yZWYgKG1zZyk7 CisgfQorIAorK3N0YXRpYyB2b2lkCisrdGVzdF9tdWx0aXBhcnRfYm91bmRzX2JhZF80ICh2b2lk KQorK3sKKysgICAgICAgIFNvdXBNZXNzYWdlICptc2c7CisrICAgICAgICBTb3VwTWVzc2FnZUhl YWRlcnMgKmhlYWRlcnM7CisrICAgICAgICBHSW5wdXRTdHJlYW0gKmluOworKyAgICAgICAgR0lu cHV0U3RyZWFtICpuZXh0X3BhcnQ7CisrICAgICAgICBTb3VwTXVsdGlwYXJ0SW5wdXRTdHJlYW0g Km11bHRpcGFydDsKKysgICAgICAgIEdFcnJvciAqZXJyb3IgPSBOVUxMOworKyAgICAgICAgZ2No YXIgKmJvdW5kYXJ5OworKyAgICAgICAgZ2NoYXIgKmNvbnRlbnRfdHlwZTsKKysgICAgICAgIGdj aGFyICpyYXdfZGF0YTsKKysKKysgICAgICAgIGJvdW5kYXJ5ID0gZ19uZXcgKGdjaGFyLCAyMDAw MSk7CisrICAgICAgICBtZW1zZXQgKGJvdW5kYXJ5LCAnYScsIDIwMDAwKTsKKysgICAgICAgIGJv dW5kYXJ5WzIwMDAwXSA9ICdcMCc7CisrCisrICAgICAgICBtc2cgPSBzb3VwX21lc3NhZ2VfbmV3 KFNPVVBfTUVUSE9EX1BPU1QsICJodHRwOi8vZm9vL3VwbG9hZCIpOworKyAgICAgICAgaGVhZGVy cyA9IHNvdXBfbWVzc2FnZV9nZXRfcmVzcG9uc2VfaGVhZGVycyAobXNnKTsKKysgICAgICAgIGNv bnRlbnRfdHlwZSA9IGdfc3RyY29uY2F0ICgibXVsdGlwYXJ0L2Zvcm0tZGF0YTsgYm91bmRhcnk9 XCIiLCBib3VuZGFyeSwgIlwiIiwgTlVMTCk7CisrICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVy c19yZXBsYWNlIChoZWFkZXJzLCAiQ29udGVudC1UeXBlIiwgY29udGVudF90eXBlKTsKKysKKysg ICAgICAgIHJhd19kYXRhID0gZ19zdHJjb25jYXQgKCItLSIsIGJvdW5kYXJ5LCAiXHJcbkNvbnRl bnQtVHlwZTogdGV4dC1wbGFpblxyXG5cclxuWFxyXG4iLCBOVUxMKTsKKysgICAgICAgIGluID0g Z19tZW1vcnlfaW5wdXRfc3RyZWFtX25ld19mcm9tX2RhdGEgKHJhd19kYXRhLCBzdHJsZW4gKHJh d19kYXRhKSwgTlVMTCk7CisrICAgICAgICBtdWx0aXBhcnQgPSBzb3VwX211bHRpcGFydF9pbnB1 dF9zdHJlYW1fbmV3IChtc2csIGluKTsKKysgICAgICAgIGdfb2JqZWN0X3VucmVmIChpbik7Cisr ICAgICAgICBuZXh0X3BhcnQgPSBzb3VwX211bHRpcGFydF9pbnB1dF9zdHJlYW1fbmV4dF9wYXJ0 IChtdWx0aXBhcnQsIE5VTEwsICZlcnJvcik7CisrICAgICAgICBnX2Fzc2VydF9ub19lcnJvciAo ZXJyb3IpOworKyAgICAgICAgZ19hc3NlcnRfbnVsbCAobmV4dF9wYXJ0KTsKKysgICAgICAgIGdf b2JqZWN0X3VucmVmIChtdWx0aXBhcnQpOworKyAgICAgICAgZ19vYmplY3RfdW5yZWYgKG1zZyk7 CisrICAgICAgICBnX2ZyZWUgKHJhd19kYXRhKTsKKysgICAgICAgIGdfZnJlZSAoY29udGVudF90 eXBlKTsKKysgICAgICAgIGdfZnJlZSAoYm91bmRhcnkpOworK30KKysKKyBzdGF0aWMgdm9pZAor IHRlc3RfbXVsdGlwYXJ0X3Rvb19sYXJnZSAodm9pZCkKKyB7CitAQCAtNjY2LDYgKzcwMiw3IEBA IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJZ190ZXN0X2FkZF9mdW5jICgiL211bHRp cGFydC9ib3VuZHMtYmFkIiwgdGVzdF9tdWx0aXBhcnRfYm91bmRzX2JhZCk7CisgCWdfdGVzdF9h ZGRfZnVuYyAoIi9tdWx0aXBhcnQvYm91bmRzLWJhZC0yIiwgdGVzdF9tdWx0aXBhcnRfYm91bmRz X2JhZF8yKTsKKyAgICAgICAgIGdfdGVzdF9hZGRfZnVuYyAoIi9tdWx0aXBhcnQvYm91bmRzLWJh ZC0zIiwgdGVzdF9tdWx0aXBhcnRfYm91bmRzX2JhZF8zKTsKKysgICAgICAgIGdfdGVzdF9hZGRf ZnVuYyAoIi9tdWx0aXBhcnQvYm91bmRzLWJhZC00IiwgdGVzdF9tdWx0aXBhcnRfYm91bmRzX2Jh ZF80KTsKKyAJZ190ZXN0X2FkZF9mdW5jICgiL211bHRpcGFydC90b28tbGFyZ2UiLCB0ZXN0X211 bHRpcGFydF90b29fbGFyZ2UpOworIAorIAlyZXQgPSBnX3Rlc3RfcnVuICgpOworLS0gCitHaXRM YWIKKwoKZGlmZiAtLWdpdCBhL0NWRS0yMDI2LTc3NjgwLnBhdGNoIGIvQ1ZFLTIwMjYtNzc2ODAu cGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmUxNDJiMAotLS0gL2Rl di9udWxsCisrKyBiL0NWRS0yMDI2LTc3NjgwLnBhdGNoCkBAIC0wLDAgKzEsNjgxIEBACitGcm9t IGU4MmMxM2JhMDNkZWZjZWUxMGY5ODFhYzk2NGY0ZDU3MGIyMWEyNTEgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCitGcm9tOiBQYXRyaWNrIEdyaWZmaXMgPHBncmlmZmlzQGlnYWxpYS5jb20+CitE YXRlOiBXZWQsIDEyIEF1ZyAyMDI2IDE0OjIxOjUyIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIG1l c3NhZ2UtaGVhZGVyczogRml4IFJhbmdlIHBhcnNpbmcgb3ZlcmZsb3dzIGFuZCBjb2FsZXNjaW5n CisgY29zdAorCitBIHN1ZmZpeCByYW5nZSBsb25nZXIgdGhhbiB0aGUgYm9keSBkcm92ZSB0aGUg cmFuZ2Ugc3RhcnQgbmVnYXRpdmUsIHdoaWNoCit0aGVuIHJlYWNoZWQgYSBnX2Fzc2VydCgpIGFu ZCBhYm9ydGVkIHRoZSBwcm9jZXNzLiBDbGFtcCBpdCB0byBzZWxlY3QgdGhlCit3aG9sZSBib2R5 IGluc3RlYWQsIGFzIFJGQyA5MTEwIHNlY3Rpb24gMTQuMS4yIHJlcXVpcmVzLiBSYW5nZSBzdGFy dHMgYW5kCitlbmRzIHdoaWNoIG92ZXJmbG93IHRoZSBnb2Zmc2V0IHRoZXkgYXJlIHBhcnNlZCBp bnRvIGFyZSBub3cgcmVqZWN0ZWQgYW5kCitjbGFtcGVkIHJlc3BlY3RpdmVseSwgcmF0aGVyIHRo YW4gd3JhcHBpbmcgbmVnYXRpdmUgYW5kIHJlYWNoaW5nIHRoZSBzYW1lCithc3NlcnRpb24uCisK K1JhbmdlcyBhcmUgbm8gbG9uZ2VyIGNvYWxlc2NlZCBieSByZW1vdmluZyBlYWNoIG1lcmdlZCBl bGVtZW50IGluIHR1cm4sCit3aGljaCB3YXMgcXVhZHJhdGljIGluIHRoZWlyIG51bWJlciwgYW5k IGEgUmFuZ2UgaGVhZGVyIGxpc3RpbmcgbW9yZSB0aGFuCitNQVhfUkFOR0VTIHJhbmdlcyBpcyBu b3cgYW5zd2VyZWQgd2l0aCA0MTYgaW5zdGVhZCBvZiBiZWluZyBzZXJ2ZWQ7IFJGQworOTExMCBz ZWN0aW9uIDE1LjUuMTcgbmFtZXMgYW4gZXhjZXNzaXZlIG51bWJlciBvZiByYW5nZXMgYXMgYSBy ZWFzb24gZm9yCit0aGF0IHN0YXR1cy4KKworRmluYWxseSwgc29ydF9yYW5nZXMoKSByZXR1cm5l ZCBhIGdvZmZzZXQgZGlmZmVyZW5jZSB0cnVuY2F0ZWQgdG8gaW50LCBzbworaXQgcmVwb3J0ZWQg dGhlIHdyb25nIG9yZGVyIGZvciByYW5nZXMgbW9yZSB0aGFuIEdfTUFYSU5UIGFwYXJ0LCBhbmQg dGhlCittZXJnZSBiZWxvdyBpdCB0aGVuIGRyb3BwZWQgcmFuZ2VzIGZyb20gcmVzcG9uc2VzIG92 ZXIgMkdCLgorCitGaXhlcyAjNTE2CitGaXhlcyAjNTE5CitGaXhlcyAjNTM1CitGaXhlcyAjNTM4 CitGaXhlcyAjNTQ0CitGaXhlcyAjNTQ3CitGaXhlcyAjNTQ4CistLS0KKyBsaWJzb3VwL3NvdXAt bWVzc2FnZS1oZWFkZXJzLXByaXZhdGUuaCB8ICAgMiArCisgbGlic291cC9zb3VwLW1lc3NhZ2Ut aGVhZGVycy5jICAgICAgICAgfCAgODkgKysrKystLQorIHRlc3RzL3JhbmdlLXRlc3QuYyAgICAg ICAgICAgICAgICAgICAgIHwgMzQ3ICsrKysrKysrKysrKysrKysrKysrKysrKysKKyB0ZXN0cy9z ZXJ2ZXItbWVtLWxpbWl0LXRlc3QuYyAgICAgICAgICB8ICA2MSArKystLQorIDQgZmlsZXMgY2hh bmdlZCwgNDY0IGluc2VydGlvbnMoKyksIDM1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEv bGlic291cC9zb3VwLW1lc3NhZ2UtaGVhZGVycy1wcml2YXRlLmggYi9saWJzb3VwL3NvdXAtbWVz c2FnZS1oZWFkZXJzLXByaXZhdGUuaAoraW5kZXggNzA4YWZlOTguLjJlOTZhZjM0IDEwMDY0NAor LS0tIGEvbGlic291cC9zb3VwLW1lc3NhZ2UtaGVhZGVycy1wcml2YXRlLmgKKysrKyBiL2xpYnNv dXAvc291cC1tZXNzYWdlLWhlYWRlcnMtcHJpdmF0ZS5oCitAQCAtMTIsNiArMTIsOCBAQCBHX0JF R0lOX0RFQ0xTCisgCisgI2RlZmluZSBNQVhfSEVBREVSU19CVUZGRVJfU0laRSAyNTYgKiAxMDI0 IC8qIDI1NksgKi8KKyAKKysjZGVmaW5lIE1BWF9SQU5HRVMgMjAwCisrCisgdHlwZWRlZiBlbnVt IHsKKyAgICAgICAgIFNPVVBfSEVBREVSX1ZBTFVFX1VOVFJVU1RFRCwKKyAgICAgICAgIFNPVVBf SEVBREVSX1ZBTFVFX1RSVVNURUQKK2RpZmYgLS1naXQgYS9saWJzb3VwL3NvdXAtbWVzc2FnZS1o ZWFkZXJzLmMgYi9saWJzb3VwL3NvdXAtbWVzc2FnZS1oZWFkZXJzLmMKK2luZGV4IGIyZWMwMzZj Li43ZTJlNjU4MyAxMDA2NDQKKy0tLSBhL2xpYnNvdXAvc291cC1tZXNzYWdlLWhlYWRlcnMuYwor KysrIGIvbGlic291cC9zb3VwLW1lc3NhZ2UtaGVhZGVycy5jCitAQCAtMTIyNiw3ICsxMjI2LDEy IEBAIHNvcnRfcmFuZ2VzIChnY29uc3Rwb2ludGVyIGEsIGdjb25zdHBvaW50ZXIgYikKKyAJU291 cFJhbmdlICpyYSA9IChTb3VwUmFuZ2UgKilhOworIAlTb3VwUmFuZ2UgKnJiID0gKFNvdXBSYW5n ZSAqKWI7CisgCistCXJldHVybiByYS0+c3RhcnQgLSByYi0+c3RhcnQ7CisrCWlmIChyYS0+c3Rh cnQgPCByYi0+c3RhcnQpCisrCQlyZXR1cm4gLTE7CisrCWVsc2UgaWYgKHJhLT5zdGFydCA+IHJi LT5zdGFydCkKKysJCXJldHVybiAxOworKwllbHNlCisrCQlyZXR1cm4gMDsKKyB9CisgCisgLyog bGlrZSBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfcmFuZ2VzKCksIGV4Y2VwdCBpdCByZXR1cm5z OgorQEAgLTEyNzAsNiArMTI3NSwxNyBAQCBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfcmFuZ2Vz X2ludGVybmFsIChTb3VwTWVzc2FnZUhlYWRlcnMgICpoZHJzLAorIAlpZiAoIXJhbmdlX2xpc3Qp CisgCQlyZXR1cm4gU09VUF9TVEFUVVNfT0s7ICAvKiBpbnZhbGlkIGxpc3QgKi8KKyAKKysJLyog UmVqZWN0IHRoZSBoZWFkZXIgb3V0cmlnaHQgaWYgaXQgYXNrcyBmb3IgbW9yZSByYW5nZXMgdGhh biB3ZSBhcmUKKysJICogd2lsbGluZyB0byBzZXJ2ZSwgcmF0aGVyIHRoYW4gYW5zd2VyaW5nIHdp dGggdGhlIHdob2xlIGJvZHk6IGEgY2xpZW50CisrCSAqIGFza2luZyBmb3IgdGhpcyBtYW55IHJh bmdlcyB3YW50cyB0byBiZSB0b2xkIHNvLCBhbmQgUkZDIDkxMTAgwqcxNC4yCisrCSAqIGFsbG93 cyByZWplY3Rpbmcgc3VjaCBhIGhlYWRlciBmb3IgZXhhY3RseSB0aGlzIHJlYXNvbi4KKysJICov CisrCWlmIChnX3NsaXN0X2xlbmd0aCAocmFuZ2VfbGlzdCkgPiBNQVhfUkFOR0VTKSB7CisrCQlz b3VwX2hlYWRlcl9mcmVlX2xpc3QgKHJhbmdlX2xpc3QpOworKwkJcmV0dXJuIGNoZWNrX3NhdGlz ZmlhYmxlID8gU09VUF9TVEFUVVNfUkVRVUVTVEVEX1JBTkdFX05PVF9TQVRJU0ZJQUJMRQorKwkJ CQkJIDogU09VUF9TVEFUVVNfT0s7CisrCX0KKysKKyAJLyogTG9vcCB0aHJvdWdoIHRoZSByYW5n ZXMgYW5kIG1vZGlmeSB0aGUgc3RhdHVzIGFjY29yZGluZ2x5LiBEZWZhdWx0IHRvCisgCSAqIHN0 YXR1cyAyMDAgKE9LLCBpZ25vcmluZyB0aGUgcmFuZ2VzKS4gU3dpdGNoIHRvIHN0YXR1cyAyMDYg KFBhcnRpYWwKKyAJICogQ29udGVudCkgaWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhcnRpYWxs eSB2YWxpZCByYW5nZS4gU3dpdGNoIHRvCitAQCAtMTI4MSwxNSArMTI5Nyw0OCBAQCBzb3VwX21l c3NhZ2VfaGVhZGVyc19nZXRfcmFuZ2VzX2ludGVybmFsIChTb3VwTWVzc2FnZUhlYWRlcnMgICpo ZHJzLAorIAorIAkJc3BlYyA9IHItPmRhdGE7CisgCQlpZiAoKnNwZWMgPT0gJy0nKSB7CistCQkJ Y3VyLnN0YXJ0ID0gZ19hc2NpaV9zdHJ0b2xsIChzcGVjLCAmZW5kLCAxMCkgKyB0b3RhbF9sZW5n dGg7CisrCQkJZ2ludDY0IHN1ZmZpeF9sZW5ndGg7CisrCisrCQkJZXJybm8gPSAwOworKwkJCXN1 ZmZpeF9sZW5ndGggPSBnX2FzY2lpX3N0cnRvbGwgKHNwZWMsICZlbmQsIDEwKTsKKysKKysJCQkv KiBBIHN1ZmZpeCByYW5nZSBhc2tzIGZvciB0aGUgbGFzdCAtc3VmZml4X2xlbmd0aCBieXRlcwor KwkJCSAqIG9mIHRoZSBib2R5LiBJZiB0aGUgYm9keSBpcyBzaG9ydGVyIHRoYW4gdGhhdCB0aGVu IHRoZQorKwkJCSAqIHdob2xlIGJvZHkgaXMgdXNlZCwgcGVyIFJGQyA5MTEwIMKnMTQuMS4yOyB3 aXRob3V0CisrCQkJICogY2xhbXBpbmcsIHRoZSBzdGFydCB3b3VsZCBnbyBuZWdhdGl2ZSBhbmQg cmVhY2ggdGhlCisrCQkJICogYXNzZXJ0aW9uIGJlbG93LgorKwkJCSAqLworKwkJCWlmIChlcnJu byA9PSBFUkFOR0UgfHwgc3VmZml4X2xlbmd0aCA8PSAtdG90YWxfbGVuZ3RoKQorKwkJCQljdXIu c3RhcnQgPSAwOworKwkJCWVsc2UKKysJCQkJY3VyLnN0YXJ0ID0gdG90YWxfbGVuZ3RoICsgc3Vm Zml4X2xlbmd0aDsKKysKKyAJCQljdXIuZW5kID0gdG90YWxfbGVuZ3RoIC0gMTsKKyAJCX0gZWxz ZSB7CistCQkJY3VyLnN0YXJ0ID0gZ19hc2NpaV9zdHJ0b3VsbCAoc3BlYywgJmVuZCwgMTApOwor KwkJCWd1aW50NjQgdmFsdWU7CisrCisrCQkJZXJybm8gPSAwOworKwkJCXZhbHVlID0gZ19hc2Np aV9zdHJ0b3VsbCAoc3BlYywgJmVuZCwgMTApOworKwkJCWlmIChlcnJubyA9PSBFUkFOR0UgfHwg dmFsdWUgPiBHX01BWElOVDY0KSB7CisrCQkJCWlzX2FsbF92YWxpZCA9IEZBTFNFOworKwkJCQlj b250aW51ZTsKKysJCQl9CisrCQkJY3VyLnN0YXJ0ID0gKGdvZmZzZXQpIHZhbHVlOworKworIAkJ CWlmICgqZW5kID09ICctJykKKyAJCQkJZW5kKys7CistCQkJaWYgKCplbmQpCistCQkJCWN1ci5l bmQgPSBnX2FzY2lpX3N0cnRvdWxsIChlbmQsICZlbmQsIDEwKTsKKy0JCQllbHNlCisrCQkJaWYg KCplbmQpIHsKKysJCQkJZXJybm8gPSAwOworKwkJCQl2YWx1ZSA9IGdfYXNjaWlfc3RydG91bGwg KGVuZCwgJmVuZCwgMTApOworKworKwkJCQkvKiBBbiBlbmQgdGhpcyBsYXJnZSBpcyBjbGFtcGVk IHRvIHRoZSBlbmQgb2YgdGhlCisrCQkJCSAqIGJvZHkgYmVsb3csIGxpa2UgYW55IG90aGVyIGVu ZCBwYXN0IGl0LgorKwkJCQkgKi8KKysJCQkJaWYgKGVycm5vID09IEVSQU5HRSB8fCB2YWx1ZSA+ IEdfTUFYSU5UNjQpCisrCQkJCQljdXIuZW5kID0gR19NQVhJTlQ2NDsKKysJCQkJZWxzZQorKwkJ CQkJY3VyLmVuZCA9IChnb2Zmc2V0KSB2YWx1ZTsKKysJCQl9IGVsc2UKKyAJCQkJY3VyLmVuZCA9 IHRvdGFsX2xlbmd0aCAtIDE7CisgCQl9CisgCitAQCAtMTMzMCwxOSArMTM3OSwyNCBAQCBzb3Vw X21lc3NhZ2VfaGVhZGVyc19nZXRfcmFuZ2VzX2ludGVybmFsIChTb3VwTWVzc2FnZUhlYWRlcnMg ICpoZHJzLAorIAl9CisgCisgCWlmICh0b3RhbF9sZW5ndGgpIHsKKy0JCWd1aW50IGk7CisrCQlT b3VwUmFuZ2UgKmRhdGE7CisrCQlndWludCBpLCBsYXN0ID0gMDsKKyAKKyAJCWdfYXJyYXlfc29y dCAoYXJyYXksIHNvcnRfcmFuZ2VzKTsKKy0JCWZvciAoaSA9IDE7IGkgPCBhcnJheS0+bGVuOyBp KyspIHsKKy0JCQlTb3VwUmFuZ2UgKmN1ciA9ICYoKFNvdXBSYW5nZSAqKWFycmF5LT5kYXRhKVtp XTsKKy0JCQlTb3VwUmFuZ2UgKnByZXYgPSAmKChTb3VwUmFuZ2UgKilhcnJheS0+ZGF0YSlbaSAt IDFdOworIAorLQkJCWlmIChjdXItPnN0YXJ0IDw9IHByZXYtPmVuZCkgeworLQkJCQlwcmV2LT5l bmQgPSBNQVggKHByZXYtPmVuZCwgY3VyLT5lbmQpOworLQkJCQlnX2FycmF5X3JlbW92ZV9pbmRl eCAoYXJyYXksIGkpOworLQkJCQlpLS07CistCQkJfQorKwkJLyogTWVyZ2Ugb3ZlcmxhcHBpbmcg cmFuZ2VzIGludG8gdGhlIHJ1biBiZWluZyBidWlsdCBhdCBAbGFzdC4KKysJCSAqIFJlbW92aW5n IHRoZSBtZXJnZWQgZWxlbWVudHMgb25lIGF0IGEgdGltZSBpbnN0ZWFkIG1hZGUgdGhpcworKwkJ ICogcXVhZHJhdGljIGluIHRoZSBudW1iZXIgb2YgcmFuZ2VzLgorKwkJICovCisrCQlkYXRhID0g KFNvdXBSYW5nZSAqKWFycmF5LT5kYXRhOworKwkJZm9yIChpID0gMTsgaSA8IGFycmF5LT5sZW47 IGkrKykgeworKwkJCWlmIChkYXRhW2ldLnN0YXJ0IDw9IGRhdGFbbGFzdF0uZW5kKQorKwkJCQlk YXRhW2xhc3RdLmVuZCA9IE1BWCAoZGF0YVtsYXN0XS5lbmQsIGRhdGFbaV0uZW5kKTsKKysJCQll bHNlCisrCQkJCWRhdGFbKytsYXN0XSA9IGRhdGFbaV07CisgCQl9CisrCisrCQlnX2FycmF5X3Nl dF9zaXplIChhcnJheSwgbGFzdCArIDEpOworIAl9CisgCisgCSpyYW5nZXMgPSAoU291cFJhbmdl ICopYXJyYXktPmRhdGE7CitAQCAtMTM3NSw2ICsxNDI5LDExIEBAIHNvdXBfbWVzc2FnZV9oZWFk ZXJzX2dldF9yYW5nZXNfaW50ZXJuYWwgKFNvdXBNZXNzYWdlSGVhZGVycyAgKmhkcnMsCisgICog QmV3YXJlIHRoYXQgZXZlbiBpZiBnaXZlbiBhIEB0b3RhbF9sZW5ndGgsIHRoaXMgZnVuY3Rpb24g ZG9lcyBub3QKKyAgKiBjaGVjayB0aGF0IHRoZSByYW5nZXMgYXJlIHNhdGlzZmlhYmxlLgorICAq CisrICogQSBSYW5nZSBoZWFkZXIgcmVxdWVzdGluZyBtb3JlIHRoYW4gMjAwIHJhbmdlcyBpcyBy ZWplY3RlZCwgc2luY2Ugc2VydmluZworKyAqIHRoYXQgbWFueSByYW5nZXMgY29zdHMgZmFyIG1v cmUgdGhhbiB0aGUgcmVxdWVzdCBhc2tpbmcgZm9yIHRoZW0uCisrICogW2NsYXNzQFNlcnZlcl0g YW5zd2VycyBzdWNoIGEgcmVxdWVzdCB3aXRoCisrICogJVNPVVBfU1RBVFVTX1JFUVVFU1RFRF9S QU5HRV9OT1RfU0FUSVNGSUFCTEUuCisrICoKKyAgKiBbY2xhc3NAU2VydmVyXSBoYXMgYnVpbHQt aW4gaGFuZGxpbmcgZm9yIHJhbmdlIHJlcXVlc3RzLiBJZiB5b3VyCisgICogc2VydmVyIGhhbmRs ZXIgcmV0dXJucyBhICVTT1VQX1NUQVRVU19PSyByZXNwb25zZSBjb250YWluaW5nIHRoZQorICAq IGNvbXBsZXRlIHJlc3BvbnNlIGJvZHkgKHJhdGhlciB0aGFuIHBhdXNpbmcgdGhlIG1lc3NhZ2Ug YW5kCitkaWZmIC0tZ2l0IGEvdGVzdHMvcmFuZ2UtdGVzdC5jIGIvdGVzdHMvcmFuZ2UtdGVzdC5j CitpbmRleCBjZmQ1ZjYxMy4uOWU0ZWQyYzkgMTAwNjQ0CistLS0gYS90ZXN0cy9yYW5nZS10ZXN0 LmMKKysrKyBiL3Rlc3RzL3JhbmdlLXRlc3QuYworQEAgLTMsNiArMyw4IEBACisgI2luY2x1ZGUg ImNvbmZpZy5oIgorIAorICNpbmNsdWRlICJ0ZXN0LXV0aWxzLmgiCisrI2luY2x1ZGUgInNvdXAt bWVzc2FnZS1oZWFkZXJzLXByaXZhdGUuaCIKKysjaW5jbHVkZSAic291cC1taXNjLmgiCisgCisg R0J5dGVzICpmdWxsX3Jlc3BvbnNlOworIGludCB0b3RhbF9sZW5ndGg7CitAQCAtMTYxLDYgKzE2 MywyMSBAQCByZXF1ZXN0X3NpbmdsZV9yYW5nZV9ieV9zdHJpbmcgKFNvdXBTZXNzaW9uICpzZXNz aW9uLCBjb25zdCBjaGFyICp1cmksCisgCWdfb2JqZWN0X3VucmVmIChtc2cpOworIH0KKyAKKysv KiBMaWtlIHJlcXVlc3Rfc2luZ2xlX3JhbmdlX2J5X3N0cmluZygpLCBidXQgYWJsZSB0byBjaGVj ayB0aGUgcmFuZ2VzIG9mIGEKKysgKiBzdWNjZXNzZnVsIDIwNiBhcyB3ZWxsLiAqLworK3N0YXRp YyB2b2lkCisrcmVxdWVzdF9zaW5nbGVfcmFuZ2VfYnlfc3RyaW5nX2Z1bGwgKFNvdXBTZXNzaW9u ICpzZXNzaW9uLCBjb25zdCBjaGFyICp1cmksCisrCQkJCSAgICAgY29uc3QgY2hhciAqcmFuZ2Us IFNvdXBTdGF0dXMgZXhwZWN0ZWRfc3RhdHVzLAorKwkJCQkgICAgIGludCBleHBlY3RlZF9zdGFy dCwgaW50IGV4cGVjdGVkX2VuZCkKKyt7CisrCVNvdXBNZXNzYWdlICptc2c7CisrCisrCW1zZyA9 IHNvdXBfbWVzc2FnZV9uZXcgKCJHRVQiLCB1cmkpOworKwlzb3VwX21lc3NhZ2VfaGVhZGVyc19y ZXBsYWNlIChzb3VwX21lc3NhZ2VfZ2V0X3JlcXVlc3RfaGVhZGVycyAobXNnKSwgIlJhbmdlIiwg cmFuZ2UpOworKworKwlkb19zaW5nbGVfcmFuZ2UgKHNlc3Npb24sIG1zZywgMCwgMCwgZXhwZWN0 ZWRfc3RhdHVzLCBleHBlY3RlZF9zdGFydCwgZXhwZWN0ZWRfZW5kKTsKKyt9CisrCisgc3RhdGlj IHZvaWQKKyBkb19tdWx0aV9yYW5nZSAoU291cFNlc3Npb24gKnNlc3Npb24sIFNvdXBNZXNzYWdl ICptc2csCisgCQlpbnQgZXhwZWN0ZWRfcmV0dXJuX3JhbmdlcykKK0BAIC00NDUsNiArNDYyLDI5 MCBAQCBkb19yYW5nZV90ZXN0IChTb3VwU2Vzc2lvbiAqc2Vzc2lvbiwgY29uc3QgY2hhciAqdXJp LAorIAkJCQkJU09VUF9TVEFUVVNfT0spOworIH0KKyAKKysvKiBUZXN0cyBmb3IgdGhlIFJhbmdl IHBhcnNlciBpdHNlbGYuIFVubGlrZSB0aGUgdGVzdHMgYWJvdmUsIHRoZXNlIGRvbid0IG5lZWQK KysgKiBhIHNlcnZlciwgc28gdGhleSBjYW4gdXNlIHRvdGFsIGxlbmd0aHMgd2hpY2ggd291bGQg YmUgaW1wcmFjdGljYWwgdG8KKysgKiBhY3R1YWxseSBzZXJ2ZSwgYW5kIHRoZXkgY2FuIGNoZWNr IHRoZSBleGFjdCBzdGF0dXMgd2hpY2ggdGhlIHNlcnZlciB3b3VsZAorKyAqIHVzZSByYXRoZXIg dGhhbiBvbmx5IHRoZSBvbmVzIGEgY2xpZW50IGNhbiBkaXN0aW5ndWlzaC4KKysgKi8KKyt0eXBl ZGVmIHN0cnVjdCB7CisrCWNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uOworKwljb25zdCBjaGFyICpi dWdyZWY7CisrCWNvbnN0IGNoYXIgKnJhbmdlOworKwlnb2Zmc2V0IHRvdGFsX2xlbmd0aDsKKysJ Z3VpbnQgZXhwZWN0ZWRfc3RhdHVzOworKwlpbnQgZXhwZWN0ZWRfbl9yYW5nZXM7CisrCVNvdXBS YW5nZSBleHBlY3RlZF9yYW5nZXNbM107CisrfSBSYW5nZVBhcnNpbmdUZXN0OworKworK3N0YXRp YyBjb25zdCBSYW5nZVBhcnNpbmdUZXN0IHJhbmdlX3BhcnNpbmdfdGVzdHNbXSA9IHsKKysJLyog VmFsaWQgcmFuZ2VzIGFnYWluc3QgYSB0ZW4gYnl0ZSBib2R5LCBhcyBhIGJhc2VsaW5lLiAqLwor Kwl7ICJzaW1wbGUgcmFuZ2UiLCBOVUxMLAorKwkgICJieXRlcz0wLTQiLCAxMCwgU09VUF9TVEFU VVNfUEFSVElBTF9DT05URU5ULCAxLCB7IHsgMCwgNCB9IH0gfSwKKysJeyAid2hvbGUgYm9keSIs IE5VTEwsCisrCSAgImJ5dGVzPTAtOSIsIDEwLCBTT1VQX1NUQVRVU19QQVJUSUFMX0NPTlRFTlQs IDEsIHsgeyAwLCA5IH0gfSB9LAorKwl7ICJvcGVuIGVuZGVkIHJhbmdlIiwgTlVMTCwKKysJICAi Ynl0ZXM9NS0iLCAxMCwgU09VUF9TVEFUVVNfUEFSVElBTF9DT05URU5ULCAxLCB7IHsgNSwgOSB9 IH0gfSwKKysJeyAiZmluYWwgYnl0ZSIsIE5VTEwsCisrCSAgImJ5dGVzPTktIiwgMTAsIFNPVVBf U1RBVFVTX1BBUlRJQUxfQ09OVEVOVCwgMSwgeyB7IDksIDkgfSB9IH0sCisrCXsgImVuZCBwYXN0 IHRoZSBib2R5IGlzIGNsYW1wZWQiLCBOVUxMLAorKwkgICJieXRlcz0xLTEwMCIsIDEwLCBTT1VQ X1NUQVRVU19QQVJUSUFMX0NPTlRFTlQsIDEsIHsgeyAxLCA5IH0gfSB9LAorKwl7ICJzdWZmaXgg cmFuZ2UiLCBOVUxMLAorKwkgICJieXRlcz0tNSIsIDEwLCBTT1VQX1NUQVRVU19QQVJUSUFMX0NP TlRFTlQsIDEsIHsgeyA1LCA5IH0gfSB9LAorKwl7ICJzaW5nbGUgYnl0ZSBzdWZmaXggcmFuZ2Ui LCBOVUxMLAorKwkgICJieXRlcz0tMSIsIDEwLCBTT1VQX1NUQVRVU19QQVJUSUFMX0NPTlRFTlQs IDEsIHsgeyA5LCA5IH0gfSB9LAorKwl7ICJ3aGl0ZXNwYWNlIGFyb3VuZCB0aGUgcmFuZ2VzIiwg TlVMTCwKKysJICAiYnl0ZXMgXHQgPSBcdCAwLTQiLCAxMCwgU09VUF9TVEFUVVNfUEFSVElBTF9D T05URU5ULCAxLCB7IHsgMCwgNCB9IH0gfSwKKysKKysJLyogVW5zYXRpc2ZpYWJsZSBhbmQgaW52 YWxpZCByYW5nZXMuICovCisrCXsgInN0YXJ0IHBhc3QgdGhlIGJvZHkiLCBOVUxMLAorKwkgICJi eXRlcz0xMC0yMCIsIDEwLCBTT1VQX1NUQVRVU19SRVFVRVNURURfUkFOR0VfTk9UX1NBVElTRklB QkxFLCAwLCB7IH0gfSwKKysJeyAiZW5kIGJlZm9yZSBzdGFydCIsIE5VTEwsCisrCSAgImJ5dGVz PTEwLTEiLCAxMCwgU09VUF9TVEFUVVNfT0ssIDAsIHsgfSB9LAorKwl7ICJ6ZXJvIGxlbmd0aCBz dWZmaXggcmFuZ2UiLCBOVUxMLAorKwkgICJieXRlcz0tMCIsIDEwLCBTT1VQX1NUQVRVU19PSywg MCwgeyB9IH0sCisrCXsgInRyYWlsaW5nIGdhcmJhZ2UiLCBOVUxMLAorKwkgICJieXRlcz0wLTEw IGJ1dCB3aXRoIHdlaXJkIHRyYWlsaW5nIGNvbnRlbnQiLCAxMCwgU09VUF9TVEFUVVNfT0ssIDAs IHsgfSB9LAorKwl7ICJpbnZhbGlkIHJhbmdlIGRhc2giLCBOVUxMLAorKwkgICJieXRlcz0wYTEw IiwgMTAsIFNPVVBfU1RBVFVTX09LLCAwLCB7IH0gfSwKKysJeyAidW5rbm93biByYW5nZSB1bml0 IiwgTlVMTCwKKysJICAiaG9yc2VzPTAtMTAiLCAxMCwgU09VUF9TVEFUVVNfT0ssIDAsIHsgfSB9 LAorKwl7ICJtaXNzaW5nIGVxdWFscyIsIE5VTEwsCisrCSAgImJ5dGVzIDAtMTAiLCAxMCwgU09V UF9TVEFUVVNfT0ssIDAsIHsgfSB9LAorKwl7ICJkZWxpbWl0ZXJzIGJ1dCBubyByYW5nZXMiLCBO VUxMLAorKwkgICJieXRlcz0sICwsXHQsICIsIDEwLCBTT1VQX1NUQVRVU19PSywgMCwgeyB9IH0s CisrCisrCS8qIEEgc3VmZml4IGxlbmd0aCBhdCBsZWFzdCBhcyBsb25nIGFzIHRoZSBib2R5IHNl bGVjdHMgdGhlIHdob2xlIGJvZHksCisrCSAqIHBlciBSRkMgOTExMCDCpzE0LjEuMi4gVGhlc2Ug dXNlZCB0byBkcml2ZSB0aGUgcmFuZ2Ugc3RhcnQgbmVnYXRpdmUsCisrCSAqIHdoaWNoIGFib3J0 ZWQgdGhlIHByb2Nlc3MgYXQgdGhlIGdfYXNzZXJ0KCkgYmVsb3cgdGhlIHBhcnNlLgorKwkgKi8K KysJeyAic3VmZml4IHJhbmdlIHRoZSBsZW5ndGggb2YgdGhlIGJvZHkiLCAiaHR0cHM6Ly9naXRs YWIuZ25vbWUub3JnL0dOT01FL2xpYnNvdXAvLS9pc3N1ZXMvNTE2IiwKKysJICAiYnl0ZXM9LTEw IiwgMTAsIFNPVVBfU1RBVFVTX1BBUlRJQUxfQ09OVEVOVCwgMSwgeyB7IDAsIDkgfSB9IH0sCisr CXsgInN1ZmZpeCByYW5nZSBvbmUgbG9uZ2VyIHRoYW4gdGhlIGJvZHkiLCAiaHR0cHM6Ly9naXRs YWIuZ25vbWUub3JnL0dOT01FL2xpYnNvdXAvLS9pc3N1ZXMvNTE2IiwKKysJICAiYnl0ZXM9LTEx IiwgMTAsIFNPVVBfU1RBVFVTX1BBUlRJQUxfQ09OVEVOVCwgMSwgeyB7IDAsIDkgfSB9IH0sCisr CXsgInN1ZmZpeCByYW5nZSBtdWNoIGxvbmdlciB0aGFuIHRoZSBib2R5IiwgImh0dHBzOi8vZ2l0 bGFiLmdub21lLm9yZy9HTk9NRS9saWJzb3VwLy0vaXNzdWVzLzU0OCIsCisrCSAgImJ5dGVzPS05 OTk5OTkiLCAxMCwgU09VUF9TVEFUVVNfUEFSVElBTF9DT05URU5ULCAxLCB7IHsgMCwgOSB9IH0g fSwKKysJeyAic3VmZml4IHJhbmdlIG9mIEdfTUlOSU5UIiwgImh0dHBzOi8vZ2l0bGFiLmdub21l Lm9yZy9HTk9NRS9saWJzb3VwLy0vaXNzdWVzLzU0NyIsCisrCSAgImJ5dGVzPS0yMTQ3NDgzNjQ4 IiwgMTAsIFNPVVBfU1RBVFVTX1BBUlRJQUxfQ09OVEVOVCwgMSwgeyB7IDAsIDkgfSB9IH0sCisr CXsgInN1ZmZpeCByYW5nZSBsYXJnZXIgdGhhbiBhIGd1aW50MzIiLCAiaHR0cHM6Ly9naXRsYWIu Z25vbWUub3JnL0dOT01FL2xpYnNvdXAvLS9pc3N1ZXMvNTQ3IiwKKysJICAiYnl0ZXM9LTQyOTQ5 NjcyOTYiLCAxMCwgU09VUF9TVEFUVVNfUEFSVElBTF9DT05URU5ULCAxLCB7IHsgMCwgOSB9IH0g fSwKKysJeyAic3VmZml4IHJhbmdlIG9mIEdfTUFYSU5UNjQiLCAiaHR0cHM6Ly9naXRsYWIuZ25v bWUub3JnL0dOT01FL2xpYnNvdXAvLS9pc3N1ZXMvNTQ3IiwKKysJICAiYnl0ZXM9LTkyMjMzNzIw MzY4NTQ3NzU4MDciLCAxMCwgU09VUF9TVEFUVVNfUEFSVElBTF9DT05URU5ULCAxLCB7IHsgMCwg OSB9IH0gfSwKKysJeyAic3VmZml4IHJhbmdlIG9mIEdfTUlOSU5UNjQiLCAiaHR0cHM6Ly9naXRs YWIuZ25vbWUub3JnL0dOT01FL2xpYnNvdXAvLS9pc3N1ZXMvNTQ3IiwKKysJICAiYnl0ZXM9LTky MjMzNzIwMzY4NTQ3NzU4MDgiLCAxMCwgU09VUF9TVEFUVVNfUEFSVElBTF9DT05URU5ULCAxLCB7 IHsgMCwgOSB9IH0gfSwKKysJeyAic3VmZml4IHJhbmdlIG92ZXJmbG93aW5nIGdpbnQ2NCIsICJo dHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvbGlic291cC8tL2lzc3Vlcy81MzUiLAorKwkg ICJieXRlcz0tOTk5OTk5OTk5OTk5OTk5OTk5OTkiLCAxMCwgU09VUF9TVEFUVVNfUEFSVElBTF9D T05URU5ULCAxLCB7IHsgMCwgOSB9IH0gfSwKKysJeyAib3ZlcnNpemVkIHN1ZmZpeCByYW5nZSBt ZXJnZWQgd2l0aCBhIHZhbGlkIHJhbmdlIiwgImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9N RS9saWJzb3VwLy0vaXNzdWVzLzU0OCIsCisrCSAgImJ5dGVzPS05OTk5OTksNC01IiwgMTAsIFNP VVBfU1RBVFVTX1BBUlRJQUxfQ09OVEVOVCwgMSwgeyB7IDAsIDkgfSB9IH0sCisrCisrCS8qIFJh bmdlIHN0YXJ0cyBhbmQgZW5kcyB3aGljaCBvdmVyZmxvdyB0aGUgc2lnbmVkIGdvZmZzZXQgdGhl eSBhcmUKKysJICogcGFyc2VkIGludG8uIEFuIG92ZXJmbG93aW5nIHN0YXJ0IGlzIHRyZWF0ZWQg bGlrZSBhbnkgb3RoZXIgc3RhcnQKKysJICogYmV5b25kIHRoZSBlbmQgb2YgdGhlIGJvZHksIGFu ZCBhbiBvdmVyZmxvd2luZyBlbmQgaXMgY2xhbXBlZCBsaWtlCisrCSAqIGFueSBvdGhlciBlbmQg YmV5b25kIHRoZSBlbmQgb2YgdGhlIGJvZHkuCisrCSAqLworKwl7ICJzdGFydCBvdmVyZmxvd2lu ZyBnaW50NjQiLCAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2xpYnNvdXAvLS9pc3N1 ZXMvNTM1IiwKKysJICAiYnl0ZXM9OTg4ODg4ODg4ODg4ODAxOTkwMC0iLCAxMCwgU09VUF9TVEFU VVNfT0ssIDAsIHsgfSB9LAorKwl7ICJzdGFydCBvdmVyZmxvd2luZyBnaW50NjQgd2l0aCBubyBk YXNoIiwgImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9saWJzb3VwLy0vaXNzdWVzLzUz NSIsCisrCSAgImJ5dGVzPTk4ODg4ODg4ODg4ODgwMTk5MDAiLCAxMCwgU09VUF9TVEFUVVNfT0ss IDAsIHsgfSB9LAorKwl7ICJzdGFydCBvZiBHX01BWElOVDY0ICsgMSIsICJodHRwczovL2dpdGxh Yi5nbm9tZS5vcmcvR05PTUUvbGlic291cC8tL2lzc3Vlcy81MzUiLAorKwkgICJieXRlcz05MjIz MzcyMDM2ODU0Nzc1ODA4LSIsIDEwLCBTT1VQX1NUQVRVU19PSywgMCwgeyB9IH0sCisrCXsgInN0 YXJ0IG92ZXJmbG93aW5nIGd1aW50NjQiLCAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01F L2xpYnNvdXAvLS9pc3N1ZXMvNTM1IiwKKysJICAiYnl0ZXM9MTg0NDY3NDQwNzM3MDk1NTE2MTYt IiwgMTAsIFNPVVBfU1RBVFVTX09LLCAwLCB7IH0gfSwKKysJeyAic3RhcnQgYW5kIGVuZCBvdmVy Zmxvd2luZyBnaW50NjQiLCAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2xpYnNvdXAv LS9pc3N1ZXMvNTM1IiwKKysJICAiYnl0ZXM9OTg4ODg4ODg4ODg4ODAxOTkwMC05ODg4ODg4ODg4 ODg4MDE5OTAxIiwgMTAsIFNPVVBfU1RBVFVTX09LLCAwLCB7IH0gfSwKKysJeyAiZW5kIG92ZXJm bG93aW5nIGdpbnQ2NCIsICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvbGlic291cC8t L2lzc3Vlcy81MzUiLAorKwkgICJieXRlcz0wLTk4ODg4ODg4ODg4ODgwMTk5MDAiLCAxMCwgU09V UF9TVEFUVVNfUEFSVElBTF9DT05URU5ULCAxLCB7IHsgMCwgOSB9IH0gfSwKKysJeyAiZW5kIG92 ZXJmbG93aW5nIGd1aW50NjQiLCAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2xpYnNv dXAvLS9pc3N1ZXMvNTM1IiwKKysJICAiYnl0ZXM9MC0xODQ0Njc0NDA3MzcwOTU1MTYxNiIsIDEw LCBTT1VQX1NUQVRVU19QQVJUSUFMX0NPTlRFTlQsIDEsIHsgeyAwLCA5IH0gfSB9LAorKworKwkv KiBaZXJvIGxlbmd0aCBib2RpZXMuIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2dldF9yYW5nZXMoKSBp cyBwdWJsaWMgQVBJLAorKwkgKiBzbyBpdCBjYW4gYmUgY2FsbGVkIHdpdGggb25lIGV2ZW4gdGhv dWdoIHRoZSBzZXJ2ZXIgbmV2ZXIgZG9lcy4KKysJICovCisrCXsgInJhbmdlIGFnYWluc3QgYW4g ZW1wdHkgYm9keSIsIE5VTEwsCisrCSAgImJ5dGVzPTAtOSIsIDAsIFNPVVBfU1RBVFVTX1JFUVVF U1RFRF9SQU5HRV9OT1RfU0FUSVNGSUFCTEUsIDAsIHsgfSB9LAorKwl7ICJzdWZmaXggcmFuZ2Ug YWdhaW5zdCBhbiBlbXB0eSBib2R5IiwgImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9s aWJzb3VwLy0vaXNzdWVzLzU0OCIsCisrCSAgImJ5dGVzPS01IiwgMCwgU09VUF9TVEFUVVNfT0ss IDAsIHsgfSB9LAorKworKwkvKiBNZXJnaW5nLiAqLworKwl7ICJvdmVybGFwcGluZyByYW5nZXMg YXJlIG1lcmdlZCIsIE5VTEwsCisrCSAgImJ5dGVzPTAtMTAsNS0yMCIsIDEwMCwgU09VUF9TVEFU VVNfUEFSVElBTF9DT05URU5ULCAxLCB7IHsgMCwgMjAgfSB9IH0sCisrCXsgImNvbnRhaW5lZCBy YW5nZXMgYXJlIG1lcmdlZCIsIE5VTEwsCisrCSAgImJ5dGVzPTAtMjAsNS0xMCIsIDEwMCwgU09V UF9TVEFUVVNfUEFSVElBTF9DT05URU5ULCAxLCB7IHsgMCwgMjAgfSB9IH0sCisrCXsgInRvdWNo aW5nIHJhbmdlcyBhcmUgbm90IG1lcmdlZCIsIE5VTEwsCisrCSAgImJ5dGVzPTAtNCw1LTkiLCAx MDAsIFNPVVBfU1RBVFVTX1BBUlRJQUxfQ09OVEVOVCwgMiwgeyB7IDAsIDQgfSwgeyA1LCA5IH0g fSB9LAorKwl7ICJyYW5nZXMgYXJlIHNvcnRlZCIsIE5VTEwsCisrCSAgImJ5dGVzPTIwLTI5LDAt OSIsIDEwMCwgU09VUF9TVEFUVVNfUEFSVElBTF9DT05URU5ULCAyLCB7IHsgMCwgOSB9LCB7IDIw LCAyOSB9IH0gfSwKKysJeyAiaW52YWxpZCByYW5nZXMgZG8gbm90IHByZXZlbnQgdmFsaWQgb25l cyIsIE5VTEwsCisrCSAgImJ5dGVzPTAtOSw1MC00MCwyMC0yOSIsIDEwMCwgU09VUF9TVEFUVVNf UEFSVElBTF9DT05URU5ULCAyLCB7IHsgMCwgOSB9LCB7IDIwLCAyOSB9IH0gfSwKKysKKysJLyog VGhlIGNvbXBhcmlzb24gZnVuY3Rpb24gdXNlZCB0byBzb3J0IHRoZSByYW5nZXMgYmVmb3JlIG1l cmdpbmcgdGhlbQorKwkgKiB1c2VkIHRvIHRydW5jYXRlIGEgZ29mZnNldCBkaWZmZXJlbmNlIHRv IGludCwgd2hpY2ggZmxpcHMgaXRzIHNpZ24KKysJICogZm9yIGJvZGllcyBvdmVyIDJHQiBhbmQg c2lsZW50bHkgZHJvcHBlZCByYW5nZXMgZnJvbSB0aGUgcmVzcG9uc2UuCisrCSAqLworKwl7ICJy YW5nZXMgbW9yZSB0aGFuIEdfTUFYSU5UIGFwYXJ0IiwgImh0dHBzOi8vZ2l0bGFiLmdub21lLm9y Zy9HTk9NRS9saWJzb3VwLy0vaXNzdWVzLzUxOSIsCisrCSAgImJ5dGVzPTAtMTAwLCAyNTAwMDAw MDAwLTI1MDAwMDAxMDAsIDQ5OTk5OTkwMDAtNDk5OTk5OTEwMCIsIDUwMDAwMDAwMDAsCisrCSAg U09VUF9TVEFUVVNfUEFSVElBTF9DT05URU5ULCAzLAorKwkgIHsgeyAwLCAxMDAgfSwgeyAyNTAw MDAwMDAwLCAyNTAwMDAwMTAwIH0sIHsgNDk5OTk5OTAwMCwgNDk5OTk5OTEwMCB9IH0gfSwKKysJ eyAidW5zb3J0ZWQgcmFuZ2VzIG1vcmUgdGhhbiBHX01BWElOVCBhcGFydCIsICJodHRwczovL2dp dGxhYi5nbm9tZS5vcmcvR05PTUUvbGlic291cC8tL2lzc3Vlcy81MTkiLAorKwkgICJieXRlcz00 OTk5OTk5MDAwLTQ5OTk5OTkxMDAsIDAtMTAwLCAyNTAwMDAwMDAwLTI1MDAwMDAxMDAiLCA1MDAw MDAwMDAwLAorKwkgIFNPVVBfU1RBVFVTX1BBUlRJQUxfQ09OVEVOVCwgMywKKysJICB7IHsgMCwg MTAwIH0sIHsgMjUwMDAwMDAwMCwgMjUwMDAwMDEwMCB9LCB7IDQ5OTk5OTkwMDAsIDQ5OTk5OTkx MDAgfSB9IH0sCisrfTsKKysKKytzdGF0aWMgdm9pZAorK2NoZWNrX3BhcnNlZF9yYW5nZXMgKGNv bnN0IGNoYXIgKnJhbmdlLAorKwkJICAgICBnb2Zmc2V0ICAgICB0b3RhbF9sZW5ndGgsCisrCQkg ICAgIGd1aW50ICAgICAgIGV4cGVjdGVkX3N0YXR1cywKKysJCSAgICAgaW50ICAgICAgICAgZXhw ZWN0ZWRfbl9yYW5nZXMsCisrCQkgICAgIGNvbnN0IFNvdXBSYW5nZSAqZXhwZWN0ZWRfcmFuZ2Vz KQorK3sKKysJU291cE1lc3NhZ2VIZWFkZXJzICpoZHJzOworKwlTb3VwUmFuZ2UgKnJhbmdlcyA9 IE5VTEw7CisrCWludCBuX3JhbmdlcyA9IDA7CisrCWd1aW50IHN0YXR1czsKKysJaW50IGk7Cisr CisrCWhkcnMgPSBzb3VwX21lc3NhZ2VfaGVhZGVyc19uZXcgKFNPVVBfTUVTU0FHRV9IRUFERVJT X1JFUVVFU1QpOworKwlzb3VwX21lc3NhZ2VfaGVhZGVyc19yZXBsYWNlIChoZHJzLCAiUmFuZ2Ui LCByYW5nZSk7CisrCisrCXN0YXR1cyA9IHNvdXBfbWVzc2FnZV9oZWFkZXJzX2dldF9yYW5nZXNf aW50ZXJuYWwgKGhkcnMsIHRvdGFsX2xlbmd0aCwgVFJVRSwKKysJCQkJCQkJICAgJnJhbmdlcywg Jm5fcmFuZ2VzKTsKKysKKysJZ19hc3NlcnRfY21wdWludCAoc3RhdHVzLCA9PSwgZXhwZWN0ZWRf c3RhdHVzKTsKKysKKysJaWYgKHN0YXR1cyA9PSBTT1VQX1NUQVRVU19QQVJUSUFMX0NPTlRFTlQp IHsKKysJCWdfYXNzZXJ0X25vbm51bGwgKHJhbmdlcyk7CisrCQlnX2Fzc2VydF9jbXBpbnQgKG5f cmFuZ2VzLCA9PSwgZXhwZWN0ZWRfbl9yYW5nZXMpOworKworKwkJZm9yIChpID0gMDsgaSA8IG5f cmFuZ2VzOyBpKyspIHsKKysJCQlkZWJ1Z19wcmludGYgKDIsICIgICAgWyVkXTogJSIgR19HSU5U NjRfRk9STUFUICItJSIgR19HSU5UNjRfRk9STUFUICJcbiIsCisrCQkJCSAgICAgIGksIHJhbmdl c1tpXS5zdGFydCwgcmFuZ2VzW2ldLmVuZCk7CisrCisrCQkJZ19hc3NlcnRfY21waW50IChyYW5n ZXNbaV0uc3RhcnQsID09LCBleHBlY3RlZF9yYW5nZXNbaV0uc3RhcnQpOworKwkJCWdfYXNzZXJ0 X2NtcGludCAocmFuZ2VzW2ldLmVuZCwgPT0sIGV4cGVjdGVkX3Jhbmdlc1tpXS5lbmQpOworKwor KwkJCS8qIFdoYXRldmVyIHRoZSBpbnB1dCwgdGhlIHBhcnNlZCByYW5nZXMgbXVzdCBiZSB1c2Fi bGUKKysJCQkgKiBhcyBvZmZzZXRzIGludG8gYSBidWZmZXIgb2YgdG90YWxfbGVuZ3RoIGJ5dGVz LgorKwkJCSAqLworKwkJCWdfYXNzZXJ0X2NtcGludCAocmFuZ2VzW2ldLnN0YXJ0LCA+PSwgMCk7 CisrCQkJZ19hc3NlcnRfY21waW50IChyYW5nZXNbaV0uZW5kLCA+PSwgcmFuZ2VzW2ldLnN0YXJ0 KTsKKysJCQlnX2Fzc2VydF9jbXBpbnQgKHJhbmdlc1tpXS5lbmQsIDwsIHRvdGFsX2xlbmd0aCk7 CisrCQl9CisrCX0KKysKKysJc291cF9tZXNzYWdlX2hlYWRlcnNfZnJlZV9yYW5nZXMgKGhkcnMs IHJhbmdlcyk7CisrCXNvdXBfbWVzc2FnZV9oZWFkZXJzX3VucmVmIChoZHJzKTsKKyt9CisrCisr c3RhdGljIHZvaWQKKytkb19yYW5nZV9wYXJzaW5nX3Rlc3QgKHZvaWQpCisreworKwlndWludCBp OworKworKwlmb3IgKGkgPSAwOyBpIDwgR19OX0VMRU1FTlRTIChyYW5nZV9wYXJzaW5nX3Rlc3Rz KTsgaSsrKSB7CisrCQljb25zdCBSYW5nZVBhcnNpbmdUZXN0ICp0ZXN0ID0gJnJhbmdlX3BhcnNp bmdfdGVzdHNbaV07CisrCisrCQlkZWJ1Z19wcmludGYgKDEsICIlMnUuICVzOiAnJXMnIGFnYWlu c3QgJSIgR19HT0ZGU0VUX0ZPUk1BVCAiIGJ5dGVzXG4iLAorKwkJCSAgICAgIGkgKyAxLCB0ZXN0 LT5kZXNjcmlwdGlvbiwgdGVzdC0+cmFuZ2UsIHRlc3QtPnRvdGFsX2xlbmd0aCk7CisrCisrCQlp ZiAodGVzdC0+YnVncmVmKQorKwkJCWdfdGVzdF9tZXNzYWdlICgiQnVnIHJlZmVyZW5jZTogJXMi LCB0ZXN0LT5idWdyZWYpOworKworKwkJY2hlY2tfcGFyc2VkX3JhbmdlcyAodGVzdC0+cmFuZ2Us IHRlc3QtPnRvdGFsX2xlbmd0aCwKKysJCQkJICAgICB0ZXN0LT5leHBlY3RlZF9zdGF0dXMsIHRl c3QtPmV4cGVjdGVkX25fcmFuZ2VzLAorKwkJCQkgICAgIHRlc3QtPmV4cGVjdGVkX3Jhbmdlcyk7 CisrCX0KKyt9CisrCisrLyogQSBzaW5nbGUgUmFuZ2UgaGVhZGVyIGNhbiBsaXN0IGZhciBtb3Jl IHJhbmdlcyB0aGFuIGFyZSByZWFzb25hYmxlIHRvIHNlcnZlOgorKyAqIHRoZSBvbmx5IGxpbWl0 IG9uIHRoZSB3aXJlIGlzIHRoZSBtYXhpbXVtIHJlcXVlc3QgaGVhZGVyIHNpemUuICovCisrc3Rh dGljIHZvaWQKKytkb19yYW5nZV9jb3VudF90ZXN0ICh2b2lkKQorK3sKKysJc3RydWN0IHsKKysJ CWludCBuX3JhbmdlczsKKysJCWdib29sZWFuIGlkZW50aWNhbDsKKysJCWd1aW50IGV4cGVjdGVk X3N0YXR1czsKKysJCWludCBleHBlY3RlZF9uX3JhbmdlczsKKysJfSB0ZXN0c1tdID0geworKwkJ LyogRGlzdGluY3QgcmFuZ2VzLCB1cCB0byBhbmQgdGhlbiBwYXN0IHRoZSBsaW1pdC4gR29pbmcg cGFzdCBpdAorKwkJICogaXMgcmVqZWN0ZWQgcmF0aGVyIHRoYW4gaWdub3JlZC4KKysJCSAqLwor KwkJeyAxMDAsIEZBTFNFLCBTT1VQX1NUQVRVU19QQVJUSUFMX0NPTlRFTlQsIDEwMCB9LAorKwkJ eyBNQVhfUkFOR0VTLCBGQUxTRSwgU09VUF9TVEFUVVNfUEFSVElBTF9DT05URU5ULCBNQVhfUkFO R0VTIH0sCisrCQl7IE1BWF9SQU5HRVMgKyAxLCBGQUxTRSwgU09VUF9TVEFUVVNfUkVRVUVTVEVE X1JBTkdFX05PVF9TQVRJU0ZJQUJMRSwgMCB9LAorKworKwkJLyogSWRlbnRpY2FsIHJhbmdlcywg d2hpY2ggYWxsIG1lcmdlIGludG8gb25lLiBUaGlzIGlzIHRoZQorKwkJICogc2hhcGUgd2hpY2gg dXNlZCB0byBiZSBxdWFkcmF0aWMuCisrCQkgKi8KKysJCXsgTUFYX1JBTkdFUywgVFJVRSwgU09V UF9TVEFUVVNfUEFSVElBTF9DT05URU5ULCAxIH0sCisrCQl7IE1BWF9SQU5HRVMgKyAxLCBUUlVF LCBTT1VQX1NUQVRVU19SRVFVRVNURURfUkFOR0VfTk9UX1NBVElTRklBQkxFLCAwIH0sCisrCQl7 IDI1NTg1LCBUUlVFLCBTT1VQX1NUQVRVU19SRVFVRVNURURfUkFOR0VfTk9UX1NBVElTRklBQkxF LCAwIH0sCisrCX07CisrCWd1aW50IGk7CisrCWludCBqOworKworKwlmb3IgKGkgPSAwOyBpIDwg R19OX0VMRU1FTlRTICh0ZXN0cyk7IGkrKykgeworKwkJU291cE1lc3NhZ2VIZWFkZXJzICpoZHJz OworKwkJU291cFJhbmdlICpyYW5nZXMgPSBOVUxMOworKwkJaW50IG5fcmFuZ2VzID0gMDsKKysJ CWd1aW50IHN0YXR1czsKKysJCUdTdHJpbmcgKnJhbmdlOworKworKwkJZGVidWdfcHJpbnRmICgx LCAiJTJ1LiAlZCAlcyByYW5nZXNcbiIsIGkgKyAxLCB0ZXN0c1tpXS5uX3JhbmdlcywKKysJCQkg ICAgICB0ZXN0c1tpXS5pZGVudGljYWwgPyAiaWRlbnRpY2FsIiA6ICJkaXN0aW5jdCIpOworKwor KwkJcmFuZ2UgPSBnX3N0cmluZ19uZXcgKCJieXRlcz0iKTsKKysJCWZvciAoaiA9IDA7IGogPCB0 ZXN0c1tpXS5uX3JhbmdlczsgaisrKSB7CisrCQkJaW50IHN0YXJ0ID0gdGVzdHNbaV0uaWRlbnRp Y2FsID8gMCA6IGogKiAyOworKworKwkJCWlmIChqID4gMCkKKysJCQkJZ19zdHJpbmdfYXBwZW5k X2MgKHJhbmdlLCAnLCcpOworKwkJCWdfc3RyaW5nX2FwcGVuZF9wcmludGYgKHJhbmdlLCAiJWQt JWQiLCBzdGFydCwgc3RhcnQpOworKwkJfQorKworKwkJaGRycyA9IHNvdXBfbWVzc2FnZV9oZWFk ZXJzX25ldyAoU09VUF9NRVNTQUdFX0hFQURFUlNfUkVRVUVTVCk7CisrCQlzb3VwX21lc3NhZ2Vf aGVhZGVyc19yZXBsYWNlIChoZHJzLCAiUmFuZ2UiLCByYW5nZS0+c3RyKTsKKysJCWdfc3RyaW5n X2ZyZWUgKHJhbmdlLCBUUlVFKTsKKysKKysJCXN0YXR1cyA9IHNvdXBfbWVzc2FnZV9oZWFkZXJz X2dldF9yYW5nZXNfaW50ZXJuYWwgKGhkcnMsIDEwMDAwMDAsIFRSVUUsCisrCQkJCQkJCQkgICAm cmFuZ2VzLCAmbl9yYW5nZXMpOworKworKwkJZ19hc3NlcnRfY21wdWludCAoc3RhdHVzLCA9PSwg dGVzdHNbaV0uZXhwZWN0ZWRfc3RhdHVzKTsKKysJCWlmIChzdGF0dXMgPT0gU09VUF9TVEFUVVNf UEFSVElBTF9DT05URU5UKQorKwkJCWdfYXNzZXJ0X2NtcGludCAobl9yYW5nZXMsID09LCB0ZXN0 c1tpXS5leHBlY3RlZF9uX3Jhbmdlcyk7CisrCisrCQlzb3VwX21lc3NhZ2VfaGVhZGVyc19mcmVl X3JhbmdlcyAoaGRycywgcmFuZ2VzKTsKKysJCXNvdXBfbWVzc2FnZV9oZWFkZXJzX3VucmVmICho ZHJzKTsKKysJfQorKworKwkvKiBDYWxsZXJzIHdoaWNoIGRvbid0IGFzayBhYm91dCBzYXRpc2Zp YWJpbGl0eSwgc3VjaCBhcyB0aGUgcHVibGljCisrCSAqIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2dl dF9yYW5nZXMoKSwgY2FuJ3QgYmUgdG9sZCA0MTYsIHNvIGFuCisrCSAqIG92ZXItbGltaXQgaGVh ZGVyIGp1c3QgcmVwb3J0cyBubyByYW5nZXMgdG8gdGhlbS4KKysJICovCisrCXsKKysJCVNvdXBN ZXNzYWdlSGVhZGVycyAqaGRyczsKKysJCVNvdXBSYW5nZSAqcmFuZ2VzID0gTlVMTDsKKysJCWlu dCBuX3JhbmdlcyA9IDA7CisrCQlHU3RyaW5nICpyYW5nZTsKKysKKysJCXJhbmdlID0gZ19zdHJp bmdfbmV3ICgiYnl0ZXM9MC0wIik7CisrCQlmb3IgKGogPSAwOyBqIDwgTUFYX1JBTkdFUzsgaisr KQorKwkJCWdfc3RyaW5nX2FwcGVuZCAocmFuZ2UsICIsMC0wIik7CisrCisrCQloZHJzID0gc291 cF9tZXNzYWdlX2hlYWRlcnNfbmV3IChTT1VQX01FU1NBR0VfSEVBREVSU19SRVFVRVNUKTsKKysJ CXNvdXBfbWVzc2FnZV9oZWFkZXJzX3JlcGxhY2UgKGhkcnMsICJSYW5nZSIsIHJhbmdlLT5zdHIp OworKwkJZ19zdHJpbmdfZnJlZSAocmFuZ2UsIFRSVUUpOworKworKwkJZ19hc3NlcnRfY21wdWlu dCAoc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X3Jhbmdlc19pbnRlcm5hbCAoaGRycywgMTAwMDAw MCwgRkFMU0UsCisrCQkJCQkJCQkJICAgICZyYW5nZXMsICZuX3JhbmdlcyksCisrCQkJCSAgPT0s IFNPVVBfU1RBVFVTX09LKTsKKysJCWdfYXNzZXJ0X2ZhbHNlIChzb3VwX21lc3NhZ2VfaGVhZGVy c19nZXRfcmFuZ2VzIChoZHJzLCAxMDAwMDAwLCAmcmFuZ2VzLCAmbl9yYW5nZXMpKTsKKysKKysJ CXNvdXBfbWVzc2FnZV9oZWFkZXJzX2ZyZWVfcmFuZ2VzIChoZHJzLCByYW5nZXMpOworKwkJc291 cF9tZXNzYWdlX2hlYWRlcnNfdW5yZWYgKGhkcnMpOworKwl9CisrfQorKworICNpZmRlZiBIQVZF X0FQQUNIRQorIHN0YXRpYyB2b2lkCisgZG9fYXBhY2hlX3JhbmdlX3Rlc3QgKHZvaWQpCitAQCAt NDczLDYgKzc3NCw0OSBAQCBzZXJ2ZXJfaGFuZGxlciAoU291cFNlcnZlciAgICAgICAgKnNlcnZl ciwKKyAJCQkJCWZ1bGxfcmVzcG9uc2UpOworIH0KKyAKKytzdGF0aWMgdm9pZAorK2RvX2xpYnNv dXBfb25seV9yYW5nZV90ZXN0IChTb3VwU2Vzc2lvbiAqc2Vzc2lvbiwgY29uc3QgY2hhciAqdXJp KQorK3sKKysJZ3NpemUgZnVsbF9yZXNwb25zZV9sZW5ndGggPSBnX2J5dGVzX2dldF9zaXplIChm dWxsX3Jlc3BvbnNlKTsKKysJR1N0cmluZyAqcmFuZ2U7CisrCWludCBpOworKworKwkvKiBBIHN1 ZmZpeCBsZW5ndGggYXQgbGVhc3QgYXMgbG9uZyBhcyB0aGUgYm9keSBzZWxlY3RzIHRoZSB3aG9s ZSBib2R5LiAqLworKwlkZWJ1Z19wcmludGYgKDEsICJSZXF1ZXN0aW5nIChzdWZmaXggcmFuZ2Ug dGhlIGxlbmd0aCBvZiB0aGUgYm9keSkgLSVkXG4iLAorKwkJICAgICAgKGludCkgZnVsbF9yZXNw b25zZV9sZW5ndGgpOworKwlyZXF1ZXN0X3NpbmdsZV9yYW5nZSAoc2Vzc2lvbiwgdXJpLAorKwkJ CSAgICAgIC0oKGludCkgZnVsbF9yZXNwb25zZV9sZW5ndGgpLCAtMSwKKysJCQkgICAgICBTT1VQ X1NUQVRVU19QQVJUSUFMX0NPTlRFTlQsIDAsIC0xKTsKKysKKysJZGVidWdfcHJpbnRmICgxLCAi UmVxdWVzdGluZyAoc3VmZml4IHJhbmdlIGxvbmdlciB0aGFuIHRoZSBib2R5KSAtOTk5OTk5XG4i KTsKKysJcmVxdWVzdF9zaW5nbGVfcmFuZ2VfYnlfc3RyaW5nX2Z1bGwgKHNlc3Npb24sIHVyaSwg ImJ5dGVzPS05OTk5OTkiLAorKwkJCQkJICAgICBTT1VQX1NUQVRVU19QQVJUSUFMX0NPTlRFTlQs IDAsIC0xKTsKKysKKysJZGVidWdfcHJpbnRmICgxLCAiUmVxdWVzdGluZyAoc3VmZml4IHJhbmdl IG92ZXJmbG93aW5nIGdpbnQ2NCkgLTk5OTk5OTk5OTk5OTk5OTk5OTk5XG4iKTsKKysJcmVxdWVz dF9zaW5nbGVfcmFuZ2VfYnlfc3RyaW5nX2Z1bGwgKHNlc3Npb24sIHVyaSwgImJ5dGVzPS05OTk5 OTk5OTk5OTk5OTk5OTk5OSIsCisrCQkJCQkgICAgIFNPVVBfU1RBVFVTX1BBUlRJQUxfQ09OVEVO VCwgMCwgLTEpOworKworKwkvKiBBIHN0YXJ0IHdoaWNoIG92ZXJmbG93cyBnaW50NjQgaXMgdHJl YXRlZCBsaWtlIGFueSBvdGhlciBzdGFydCBwYXN0CisrCSAqIHRoZSBlbmQgb2YgdGhlIGJvZHku CisrCSAqIGh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9saWJzb3VwLy0vaXNzdWVzLzUz NQorKwkgKi8KKysJZGVidWdfcHJpbnRmICgxLCAiUmVxdWVzdGluZyAoc3RhcnQgb3ZlcmZsb3dp bmcgZ2ludDY0KSA5ODg4ODg4ODg4ODg4MDE5OTAwLVxuIik7CisrCXJlcXVlc3Rfc2luZ2xlX3Jh bmdlX2J5X3N0cmluZyAoc2Vzc2lvbiwgdXJpLCAiYnl0ZXM9OTg4ODg4ODg4ODg4ODAxOTkwMC0i LAorKwkJCQkJU09VUF9TVEFUVVNfT0spOworKworKwkvKiBNb3JlIHJhbmdlcyB0aGFuIHRoZSBz ZXJ2ZXIgaXMgd2lsbGluZyB0byBjb2FsZXNjZSwgd2hpY2ggaXMKKysJICogcmVqZWN0ZWQgcmF0 aGVyIHRoYW4gYW5zd2VyZWQgd2l0aCB0aGUgd2hvbGUgYm9keS4KKysJICogaHR0cHM6Ly9naXRs YWIuZ25vbWUub3JnL0dOT01FL2xpYnNvdXAvLS9pc3N1ZXMvNTM4CisrCSAqLworKwlkZWJ1Z19w cmludGYgKDEsICJSZXF1ZXN0aW5nIChtb3JlIHJhbmdlcyB0aGFuIHRoZSBsaW1pdClcbiIpOwor KwlyYW5nZSA9IGdfc3RyaW5nX25ldyAoImJ5dGVzPSIpOworKwlmb3IgKGkgPSAwOyBpIDwgTUFY X1JBTkdFUyArIDE7IGkrKykKKysJCWdfc3RyaW5nX2FwcGVuZCAocmFuZ2UsIGkgPiAwID8gIiww LTAiIDogIjAtMCIpOworKwlyZXF1ZXN0X3NpbmdsZV9yYW5nZV9ieV9zdHJpbmcgKHNlc3Npb24s IHVyaSwgcmFuZ2UtPnN0ciwKKysJCQkJCVNPVVBfU1RBVFVTX1JFUVVFU1RFRF9SQU5HRV9OT1Rf U0FUSVNGSUFCTEUpOworKwlnX3N0cmluZ19mcmVlIChyYW5nZSwgVFJVRSk7CisrfQorKworIHN0 YXRpYyB2b2lkCisgZG9fbGlic291cF9yYW5nZV90ZXN0ICh2b2lkKQorIHsKK0BAIC00ODgsNiAr ODMyLDcgQEAgZG9fbGlic291cF9yYW5nZV90ZXN0ICh2b2lkKQorIAliYXNlX3VyaSA9IHNvdXBf dGVzdF9zZXJ2ZXJfZ2V0X3VyaSAoc2VydmVyLCAiaHR0cCIsIE5VTEwpOworIAliYXNlX3VyaV9z dHIgPSBnX3VyaV90b19zdHJpbmcgKGJhc2VfdXJpKTsKKyAJZG9fcmFuZ2VfdGVzdCAoc2Vzc2lv biwgYmFzZV91cmlfc3RyLCBUUlVFLCBUUlVFKTsKKysJZG9fbGlic291cF9vbmx5X3JhbmdlX3Rl c3QgKHNlc3Npb24sIGJhc2VfdXJpX3N0cik7CisgCWdfdXJpX3VucmVmIChiYXNlX3VyaSk7Cisg CWdfZnJlZSAoYmFzZV91cmlfc3RyKTsKKyAJc291cF90ZXN0X3NlcnZlcl9xdWl0X3VucmVmIChz ZXJ2ZXIpOworQEAgLTUxMiw2ICs4NTcsOCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3Yp CisgCWdfdGVzdF9hZGRfZnVuYyAoIi9yYW5nZXMvYXBhY2hlIiwgZG9fYXBhY2hlX3JhbmdlX3Rl c3QpOworICNlbmRpZgorIAlnX3Rlc3RfYWRkX2Z1bmMgKCIvcmFuZ2VzL2xpYnNvdXAiLCBkb19s aWJzb3VwX3JhbmdlX3Rlc3QpOworKwlnX3Rlc3RfYWRkX2Z1bmMgKCIvcmFuZ2VzL3BhcnNpbmci LCBkb19yYW5nZV9wYXJzaW5nX3Rlc3QpOworKwlnX3Rlc3RfYWRkX2Z1bmMgKCIvcmFuZ2VzL2Nv dW50IiwgZG9fcmFuZ2VfY291bnRfdGVzdCk7CisgCisgCXJldCA9IGdfdGVzdF9ydW4gKCk7Cisg CitkaWZmIC0tZ2l0IGEvdGVzdHMvc2VydmVyLW1lbS1saW1pdC10ZXN0LmMgYi90ZXN0cy9zZXJ2 ZXItbWVtLWxpbWl0LXRlc3QuYworaW5kZXggNjVkYzg3NWUuLmVlMjBiYTliIDEwMDY0NAorLS0t IGEvdGVzdHMvc2VydmVyLW1lbS1saW1pdC10ZXN0LmMKKysrKyBiL3Rlc3RzL3NlcnZlci1tZW0t bGltaXQtdGVzdC5jCitAQCAtNCw2ICs0LDcgQEAKKyAgKi8KKyAKKyAjaW5jbHVkZSAidGVzdC11 dGlscy5oIgorKyNpbmNsdWRlICJzb3VwLW1lc3NhZ2UtaGVhZGVycy1wcml2YXRlLmgiCisgCisg I2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgorIAorQEAgLTgxLDQ2ICs4Miw2NiBAQCBzZXJ2ZXJf ZmlsZV9jYWxsYmFjayAoU291cFNlcnZlciAgICAgICAgKnNlcnZlciwKKyB9CisgCisgc3RhdGlj IHZvaWQKKy1kb19yYW5nZXNfb3ZlcmxhcHNfdGVzdCAoU2VydmVyRGF0YSAqc2QsIGdjb25zdHBv aW50ZXIgdGVzdF9kYXRhKQorK3JlcXVlc3RfcmFuZ2VzIChTZXJ2ZXJEYXRhICpzZCwgY29uc3Qg Y2hhciAqcmFuZ2UsIFNvdXBTdGF0dXMgZXhwZWN0ZWRfc3RhdHVzKQorIHsKKyAJU291cFNlc3Np b24gKnNlc3Npb247CisgCVNvdXBNZXNzYWdlICptc2c7CistCUdTdHJpbmcgKnJhbmdlOworIAlH VXJpICp1cmk7CistCWNvbnN0IGNoYXIgKmNodW5rID0gIiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAi OworLQorLQlnX3Rlc3RfYnVnICgiNDI4Iik7CistCistCSNpZmRlZiBHX09TX1dJTjMyCistCWdf dGVzdF9za2lwICgiQ2Fubm90IHJ1biB1bmRlciB3aW5kb3dzIik7CistCXJldHVybjsKKy0JI2Vu ZGlmCistCistCXJhbmdlID0gZ19zdHJpbmdfc2l6ZWRfbmV3ICg5OSAqIDEwMjQpOworLQlnX3N0 cmluZ19hcHBlbmQgKHJhbmdlLCAiYnl0ZXM9MTAyNCIpOworLQl3aGlsZSAocmFuZ2UtPmxlbiA8 IDk5ICogMTAyNCkKKy0JCWdfc3RyaW5nX2FwcGVuZCAocmFuZ2UsIGNodW5rKTsKKyAKKyAJc2Vz c2lvbiA9IHNvdXBfdGVzdF9zZXNzaW9uX25ldyAoTlVMTCk7CistCXNlcnZlcl9hZGRfaGFuZGxl ciAoc2QsICIvZmlsZSIsIHNlcnZlcl9maWxlX2NhbGxiYWNrLCBOVUxMLCBOVUxMKTsKKyAKKyAJ dXJpID0gZ191cmlfcGFyc2VfcmVsYXRpdmUgKHNkLT5iYXNlX3VyaSwgIi9maWxlIiwgU09VUF9I VFRQX1VSSV9GTEFHUywgTlVMTCk7CisgCisgCW1zZyA9IHNvdXBfbWVzc2FnZV9uZXdfZnJvbV91 cmkgKCJHRVQiLCB1cmkpOworLQlzb3VwX21lc3NhZ2VfaGVhZGVyc19hcHBlbmQgKHNvdXBfbWVz c2FnZV9nZXRfcmVxdWVzdF9oZWFkZXJzIChtc2cpLCAiUmFuZ2UiLCByYW5nZS0+c3RyKTsKKysJ c291cF9tZXNzYWdlX2hlYWRlcnNfYXBwZW5kIChzb3VwX21lc3NhZ2VfZ2V0X3JlcXVlc3RfaGVh ZGVycyAobXNnKSwgIlJhbmdlIiwgcmFuZ2UpOworIAorIAlzb3VwX3Rlc3Rfc2Vzc2lvbl9zZW5k X21lc3NhZ2UgKHNlc3Npb24sIG1zZyk7CisgCistCXNvdXBfdGVzdF9hc3NlcnRfbWVzc2FnZV9z dGF0dXMgKG1zZywgU09VUF9TVEFUVVNfUEFSVElBTF9DT05URU5UKTsKKysJc291cF90ZXN0X2Fz c2VydF9tZXNzYWdlX3N0YXR1cyAobXNnLCBleHBlY3RlZF9zdGF0dXMpOworIAorIAlnX29iamVj dF91bnJlZiAobXNnKTsKKy0KKy0JZ19zdHJpbmdfZnJlZSAocmFuZ2UsIFRSVUUpOworIAlnX3Vy aV91bnJlZiAodXJpKTsKKyAKKyAJc291cF90ZXN0X3Nlc3Npb25fYWJvcnRfdW5yZWYgKHNlc3Np b24pOworIH0KKyAKKytzdGF0aWMgdm9pZAorK2RvX3Jhbmdlc19vdmVybGFwc190ZXN0IChTZXJ2 ZXJEYXRhICpzZCwgZ2NvbnN0cG9pbnRlciB0ZXN0X2RhdGEpCisreworKwlHU3RyaW5nICpyYW5n ZTsKKysJY29uc3QgY2hhciAqY2h1bmsgPSAiLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCI7CisrCWlu dCBpOworKworKwlnX3Rlc3RfYnVnICgiNDI4Iik7CisrCisrCSNpZmRlZiBHX09TX1dJTjMyCisr CWdfdGVzdF9za2lwICgiQ2Fubm90IHJ1biB1bmRlciB3aW5kb3dzIik7CisrCXJldHVybjsKKysJ I2VuZGlmCisrCisrCXNlcnZlcl9hZGRfaGFuZGxlciAoc2QsICIvZmlsZSIsIHNlcnZlcl9maWxl X2NhbGxiYWNrLCBOVUxMLCBOVUxMKTsKKysKKysJLyogUmVxdWVzdGluZyB0aGUgc2FtZSByYW5n ZSBtYW55IHRpbWVzIG92ZXIgdXNlZCB0byBtYWtlIHRoZSBzZXJ2ZXIKKysJICogYWxsb2NhdGUg YSByZXNwb25zZSBwcm9wb3J0aW9uYWwgdG8gdGhlIG51bWJlciBvZiByYW5nZXMgaW5zdGVhZCBv ZgorKwkgKiBjb2FsZXNjaW5nIHRoZW0gaW50byBvbmUuIEVhY2ggIjAiIGhlcmUgaXMgYW4gb3Bl biBlbmRlZCByYW5nZQorKwkgKiBjb3ZlcmluZyB0aGUgd2hvbGUgYm9keSwgc28gdGhleSBhbGwg Y29sbGFwc2UgaW50byBhIHNpbmdsZSByYW5nZS4KKysJICovCisrCXJhbmdlID0gZ19zdHJpbmdf bmV3ICgiYnl0ZXM9MTAyNCIpOworKwlmb3IgKGkgPSAxOyBpIDwgTUFYX1JBTkdFUzsgaSsrKQor KwkJZ19zdHJpbmdfYXBwZW5kIChyYW5nZSwgIiwwIik7CisrCXJlcXVlc3RfcmFuZ2VzIChzZCwg cmFuZ2UtPnN0ciwgU09VUF9TVEFUVVNfUEFSVElBTF9DT05URU5UKTsKKysJZ19zdHJpbmdfZnJl ZSAocmFuZ2UsIFRSVUUpOworKworKwkvKiBBIGhlYWRlciBsaXN0aW5nIG1vcmUgcmFuZ2VzIHRo YW4gdGhlIHNlcnZlciBpcyB3aWxsaW5nIHRvIGNvYWxlc2NlCisrCSAqIGlzIHJlamVjdGVkIG91 dHJpZ2h0LiAqLworKwlyYW5nZSA9IGdfc3RyaW5nX3NpemVkX25ldyAoKGdzaXplKTk5ICogMTAy NCk7CisrCWdfc3RyaW5nX2FwcGVuZCAocmFuZ2UsICJieXRlcz0xMDI0Iik7CisrCXdoaWxlIChy YW5nZS0+bGVuIDwgKGdzc2l6ZSk5OSAqIDEwMjQpCisrCQlnX3N0cmluZ19hcHBlbmQgKHJhbmdl LCBjaHVuayk7CisrCXJlcXVlc3RfcmFuZ2VzIChzZCwgcmFuZ2UtPnN0ciwgU09VUF9TVEFUVVNf UkVRVUVTVEVEX1JBTkdFX05PVF9TQVRJU0ZJQUJMRSk7CisrCWdfc3RyaW5nX2ZyZWUgKHJhbmdl LCBUUlVFKTsKKyt9CisrCisgaW50CisgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIHsK Ky0tIAorR2l0TGFiCisKCmRpZmYgLS1naXQgYS9saWJzb3VwMy5zcGVjIGIvbGlic291cDMuc3Bl YwppbmRleCA2YzNjZDdmLi5hZTFiYmViIDEwMDY0NAotLS0gYS9saWJzb3VwMy5zcGVjCisrKyBi L2xpYnNvdXAzLnNwZWMKQEAgLTIxLDYgKzIxLDEzIEBAIFBhdGNoOiAgIG5vLW50bG0taW4tZmlw cy1tb2RlLnBhdGNoCiAjIGh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9saWJzb3VwLy0v d29ya19pdGVtcy81MzAKIFBhdGNoOiAgIHNraXAtbG9nZ2VyLXRlc3Qtb24tMzJiaXQucGF0Y2gK IAorUGF0Y2g6ICAgQ1ZFLTIwMjYtNzc2ODAucGF0Y2gKK1BhdGNoOiAgIENWRS0yMDI2LTE1NzEx LnBhdGNoCitQYXRjaDogICBDVkUtMjAyNi0xNTcxNC5wYXRjaAorUGF0Y2g6ICAgQ1ZFLTIwMjYt MTU3MDkucGF0Y2gKK1BhdGNoOiAgIENWRS0yMDI2LTE1NzEzLnBhdGNoCitQYXRjaDogICBDVkUt MjAyNi0xNTcxMi5wYXRjaAorCiAKIEJ1aWxkUmVxdWlyZXM6IGdjYwogQnVpbGRSZXF1aXJlczog Z2V0dGV4dAo=