From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v3 27/28] tools/libxc: Use featuresets rather than guesswork Date: Tue, 15 Mar 2016 15:35:23 +0000 Message-ID: <1458056124-8024-28-git-send-email-andrew.cooper3@citrix.com> References: <1458056124-8024-1-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1458056124-8024-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper , Ian Jackson List-Id: xen-devel@lists.xenproject.org SXQgaXMgY29uY2VwdHVhbGx5IHdyb25nIHRvIGJhc2UgYSBWTSdzIGZlYXR1cmVzZXQgb24gdGhl IGZlYXR1cmVzIHZpc2libGUgdG8KdGhlIHRvb2xzdGFjayB3aGljaCBoYXBwZW5zIHRvIGNvbnN0 cnVjdCBpdC4KCkluc3RlYWQsIHRoZSBmZWF0dXJlc2V0IHVzZWQgaXMgZWl0aGVyIGFuIGV4cGxp Y2l0IG9uZSBwYXNzZWQgYnkgdGhlCnRvb2xzdGFjaywgb3IgdGhlIGRlZmF1bHQgd2hpY2ggWGVu IGJlbGlldmVzIGl0IGNhbiBnaXZlIHRvIHRoZSBndWVzdC4KCkNvbGxlY3QgYWxsIHRoZSBmZWF0 dXJlIG1hbmlwdWxhdGlvbiBpbnRvIGEgc2luZ2xlIGZ1bmN0aW9uIHdoaWNoIGFkanVzdHMgdGhl CmZlYXR1cmVzZXQsIGFuZCBwZXJmb3JtIGRlZXAgZGVwZW5kZW5jeSByZW1vdmFsLgoKU2lnbmVk LW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQWNrZWQt Ynk6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+Ci0tLQpDQzogSWFuIEphY2tzb24gPElh bi5KYWNrc29uQGV1LmNpdHJpeC5jb20+Cgp2MzoKICogQ29ycmVjdGx5IGFkanVzdCBIVFQvQ01Q X0xFR0FDWSBpbiB0aGUgcG9saWN5LiAgUFYgZ3Vlc3RzIHNlZSBob3N0IGRldGFpbHMsCiAgIHNv IGdldCB0aGUgaG9zdCBmZWF0dXJlcy4gIEhWTSBndWVzdHMgaGF2ZSB0aGVpciB2Y3B1IHRvcG9s b2d5IHByZXNlbnRlZCBpbgogICBhbiBIVFQgY29tcGF0aWJsZSBtYW5vciAoZXZlbiBpZiBlbmRz IHVwIHJlcG9ydGluZyAxIGNwdSksIHNvIGhhdmUKICAgQ01QX0xFR0FDWSB1bmNvbmRpdGlvbmFs bHkgY2xlYXJlZC4KdjI6CiAqIEpvaW4gc2V2ZXJhbCByZWxhdGVkIHBhdGNoZXMgdG9nZXRoZXIu Ci0tLQogdG9vbHMvbGlieGMveGNfY3B1aWRfeDg2LmMgfCAzNTUgKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTM4IGluc2VydGlv bnMoKyksIDIxNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19jcHVp ZF94ODYuYyBiL3Rvb2xzL2xpYnhjL3hjX2NwdWlkX3g4Ni5jCmluZGV4IGE5MmY1ZTQuLjI5MGM5 OTUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL3hjX2NwdWlkX3g4Ni5jCisrKyBiL3Rvb2xzL2xp YnhjL3hjX2NwdWlkX3g4Ni5jCkBAIC0yMSw3ICsyMSw5IEBACiAKICNpbmNsdWRlIDxzdGRsaWIu aD4KICNpbmNsdWRlIDxzdGRib29sLmg+CisjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSAi eGNfcHJpdmF0ZS5oIgorI2luY2x1ZGUgInhjX2JpdG9wcy5oIgogI2luY2x1ZGUgPHhlbi9odm0v cGFyYW1zLmg+CiAKIGVudW0gewpAQCAtMzEsMTIgKzMzLDE0IEBAIGVudW0gewogI2luY2x1ZGUg Il94Y19jcHVpZF9hdXRvZ2VuLmgiCiAKICNkZWZpbmUgYml0bWFza29mKGlkeCkgICAgICAoMXUg PDwgKChpZHgpICYgMzEpKQotI2RlZmluZSBjbGVhcl9iaXQoaWR4LCBkc3QpICgoZHN0KSAmPSB+ Yml0bWFza29mKGlkeCkpCi0jZGVmaW5lIHNldF9iaXQoaWR4LCBkc3QpICAgKChkc3QpIHw9ICBi aXRtYXNrb2YoaWR4KSkKKyNkZWZpbmUgZmVhdHVyZXdvcmRfb2YoaWR4KSAoKGlkeCkgPj4gNSkK KyNkZWZpbmUgY2xlYXJfZmVhdHVyZShpZHgsIGRzdCkgKChkc3QpICY9IH5iaXRtYXNrb2YoaWR4 KSkKKyNkZWZpbmUgc2V0X2ZlYXR1cmUoaWR4LCBkc3QpICAgKChkc3QpIHw9ICBiaXRtYXNrb2Yo aWR4KSkKIAogI2RlZmluZSBERUZfTUFYX0JBU0UgMHgwMDAwMDAwZHUKICNkZWZpbmUgREVGX01B WF9JTlRFTEVYVCAgMHg4MDAwMDAwOHUKICNkZWZpbmUgREVGX01BWF9BTURFWFQgICAgMHg4MDAw MDAxY3UKKyNkZWZpbmUgQ09NTU9OXzFEIENQVUlEX0NPTU1PTl8xRF9GRUFUVVJFUwogCiBpbnQg eGNfZ2V0X2NwdV9sZXZlbGxpbmdfY2Fwcyh4Y19pbnRlcmZhY2UgKnhjaCwgdWludDMyX3QgKmNh cHMpCiB7CkBAIC0zMjIsMzcgKzMyNiw2IEBAIHN0YXRpYyB2b2lkIGFtZF94Y19jcHVpZF9wb2xp Y3koeGNfaW50ZXJmYWNlICp4Y2gsCiAgICAgICAgICAgICByZWdzWzBdID0gREVGX01BWF9BTURF WFQ7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSAweDgwMDAwMDAxOiB7Ci0gICAgICAgIGlm ICggIWluZm8tPnBhZSApCi0gICAgICAgICAgICBjbGVhcl9iaXQoWDg2X0ZFQVRVUkVfUEFFLCBy ZWdzWzNdKTsKLQotICAgICAgICAvKiBGaWx0ZXIgYWxsIG90aGVyIGZlYXR1cmVzIGFjY29yZGlu ZyB0byBhIHdoaXRlbGlzdC4gKi8KLSAgICAgICAgcmVnc1syXSAmPSAoYml0bWFza29mKFg4Nl9G RUFUVVJFX0xBSEZfTE0pIHwKLSAgICAgICAgICAgICAgICAgICAgYml0bWFza29mKFg4Nl9GRUFU VVJFX0NNUF9MRUdBQ1kpIHwKLSAgICAgICAgICAgICAgICAgICAgKGluZm8tPm5lc3RlZGh2bSA/ IGJpdG1hc2tvZihYODZfRkVBVFVSRV9TVk0pIDogMCkgfAotICAgICAgICAgICAgICAgICAgICBi aXRtYXNrb2YoWDg2X0ZFQVRVUkVfQ1I4X0xFR0FDWSkgfAotICAgICAgICAgICAgICAgICAgICBi aXRtYXNrb2YoWDg2X0ZFQVRVUkVfQUJNKSB8Ci0gICAgICAgICAgICAgICAgICAgIGJpdG1hc2tv ZihYODZfRkVBVFVSRV9TU0U0QSkgfAotICAgICAgICAgICAgICAgICAgICBiaXRtYXNrb2YoWDg2 X0ZFQVRVUkVfTUlTQUxJR05TU0UpIHwKLSAgICAgICAgICAgICAgICAgICAgYml0bWFza29mKFg4 Nl9GRUFUVVJFXzNETk9XUFJFRkVUQ0gpIHwKLSAgICAgICAgICAgICAgICAgICAgYml0bWFza29m KFg4Nl9GRUFUVVJFX09TVlcpIHwKLSAgICAgICAgICAgICAgICAgICAgYml0bWFza29mKFg4Nl9G RUFUVVJFX1hPUCkgfAotICAgICAgICAgICAgICAgICAgICBiaXRtYXNrb2YoWDg2X0ZFQVRVUkVf TFdQKSB8Ci0gICAgICAgICAgICAgICAgICAgIGJpdG1hc2tvZihYODZfRkVBVFVSRV9GTUE0KSB8 Ci0gICAgICAgICAgICAgICAgICAgIGJpdG1hc2tvZihYODZfRkVBVFVSRV9UQk0pIHwKLSAgICAg ICAgICAgICAgICAgICAgYml0bWFza29mKFg4Nl9GRUFUVVJFX0RCRVhUKSk7Ci0gICAgICAgIHJl Z3NbM10gJj0gKDB4MDE4M2YzZmYgfCAvKiBmZWF0dXJlcyBzaGFyZWQgd2l0aCAweDAwMDAwMDAx OkVEWCAqLwotICAgICAgICAgICAgICAgICAgICBiaXRtYXNrb2YoWDg2X0ZFQVRVUkVfTlgpIHwK LSAgICAgICAgICAgICAgICAgICAgYml0bWFza29mKFg4Nl9GRUFUVVJFX0xNKSB8Ci0gICAgICAg ICAgICAgICAgICAgIGJpdG1hc2tvZihYODZfRkVBVFVSRV9QQUdFMUdCKSB8Ci0gICAgICAgICAg ICAgICAgICAgIGJpdG1hc2tvZihYODZfRkVBVFVSRV9TWVNDQUxMKSB8Ci0gICAgICAgICAgICAg ICAgICAgIGJpdG1hc2tvZihYODZfRkVBVFVSRV9NTVhFWFQpIHwKLSAgICAgICAgICAgICAgICAg ICAgYml0bWFza29mKFg4Nl9GRUFUVVJFX0ZGWFNSKSB8Ci0gICAgICAgICAgICAgICAgICAgIGJp dG1hc2tvZihYODZfRkVBVFVSRV8zRE5PVykgfAotICAgICAgICAgICAgICAgICAgICBiaXRtYXNr b2YoWDg2X0ZFQVRVUkVfM0ROT1dFWFQpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCiAgICAg Y2FzZSAweDgwMDAwMDA4OgogICAgICAgICAvKgogICAgICAgICAgKiBFQ1hbMTU6MTJdIGlzIEFw aWNJZENvcmVTaXplOiBFQ1hbNzowXSBpcyBOdW1iZXJPZkNvcmVzIChtaW51cyBvbmUpLgpAQCAt Mzk5LDEyICszNzIsNiBAQCBzdGF0aWMgdm9pZCBpbnRlbF94Y19jcHVpZF9wb2xpY3koeGNfaW50 ZXJmYWNlICp4Y2gsCiB7CiAgICAgc3dpdGNoICggaW5wdXRbMF0gKQogICAgIHsKLSAgICBjYXNl IDB4MDAwMDAwMDE6Ci0gICAgICAgIC8qIEVDWFs1XSBpcyBhdmFpbGFiaWxpdHkgb2YgVk1YICov Ci0gICAgICAgIGlmICggaW5mby0+bmVzdGVkaHZtICkKLSAgICAgICAgICAgIHNldF9iaXQoWDg2 X0ZFQVRVUkVfVk1YLCByZWdzWzJdKTsKLSAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIDB4MDAw MDAwMDQ6CiAgICAgICAgIC8qCiAgICAgICAgICAqIEVBWFszMToyNl0gaXMgTWF4aW11bSBDb3Jl cyBQZXIgUGFja2FnZSAobWludXMgb25lKS4KQEAgLTQyMCwxOSArMzg3LDYgQEAgc3RhdGljIHZv aWQgaW50ZWxfeGNfY3B1aWRfcG9saWN5KHhjX2ludGVyZmFjZSAqeGNoLAogICAgICAgICAgICAg cmVnc1swXSA9IERFRl9NQVhfSU5URUxFWFQ7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSAw eDgwMDAwMDAxOiB7Ci0gICAgICAgIC8qIE9ubHkgYSBmZXcgZmVhdHVyZXMgYXJlIGFkdmVydGlz ZWQgaW4gSW50ZWwncyAweDgwMDAwMDAxLiAqLwotICAgICAgICByZWdzWzJdICY9IChiaXRtYXNr b2YoWDg2X0ZFQVRVUkVfTEFIRl9MTSkgfAotICAgICAgICAgICAgICAgICAgICBiaXRtYXNrb2Yo WDg2X0ZFQVRVUkVfM0ROT1dQUkVGRVRDSCkgfAotICAgICAgICAgICAgICAgICAgICBiaXRtYXNr b2YoWDg2X0ZFQVRVUkVfQUJNKSk7Ci0gICAgICAgIHJlZ3NbM10gJj0gKGJpdG1hc2tvZihYODZf RkVBVFVSRV9OWCkgfAotICAgICAgICAgICAgICAgICAgICBiaXRtYXNrb2YoWDg2X0ZFQVRVUkVf TE0pIHwKLSAgICAgICAgICAgICAgICAgICAgYml0bWFza29mKFg4Nl9GRUFUVVJFX1BBR0UxR0Ip IHwKLSAgICAgICAgICAgICAgICAgICAgYml0bWFza29mKFg4Nl9GRUFUVVJFX1NZU0NBTEwpIHwK LSAgICAgICAgICAgICAgICAgICAgYml0bWFza29mKFg4Nl9GRUFUVVJFX1JEVFNDUCkpOwotICAg ICAgICBicmVhazsKLSAgICB9Ci0KICAgICBjYXNlIDB4ODAwMDAwMDU6CiAgICAgICAgIHJlZ3Nb MF0gPSByZWdzWzFdID0gcmVnc1syXSA9IDA7CiAgICAgICAgIGJyZWFrOwpAQCAtNDg0LDExICs0 MzgsOCBAQCBzdGF0aWMgdm9pZCB4Y19jcHVpZF9jb25maWdfeHNhdmUoeGNfaW50ZXJmYWNlICp4 Y2gsCiAgICAgICAgIHJlZ3NbMV0gPSA1MTIgKyA2NDsgLyogRlAvU1NFICsgWFNBVkUuSEVBREVS ICovCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMTogLyogbGVhZiAxICovCi0gICAgICAgIHJl Z3NbMF0gJj0gKFhTQVZFT1BUIHwgWFNBVkVDIHwgWEdFVEJWMSB8IFhTQVZFUyk7Ci0gICAgICAg IGlmICggIWluZm8tPmh2bSApCi0gICAgICAgICAgICByZWdzWzBdICY9IH5YU0FWRVM7Ci0gICAg ICAgIHJlZ3NbMl0gJj0gaW5mby0+eGZlYXR1cmVfbWFzazsKLSAgICAgICAgcmVnc1szXSA9IDA7 CisgICAgICAgIHJlZ3NbMF0gPSBpbmZvLT5mZWF0dXJlc2V0W2ZlYXR1cmV3b3JkX29mKFg4Nl9G RUFUVVJFX1hTQVZFT1BUKV07CisgICAgICAgIHJlZ3NbMV0gPSByZWdzWzJdID0gcmVnc1szXSA9 IDA7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMiAuLi4gNjM6IC8qIHN1Yi1sZWF2ZXMgKi8K ICAgICAgICAgaWYgKCAhKGluZm8tPnhmZWF0dXJlX21hc2sgJiAoMVVMTCA8PCBpbnB1dFsxXSkp ICkKQEAgLTUyMCw4NSArNDcxLDIyIEBAIHN0YXRpYyB2b2lkIHhjX2NwdWlkX2h2bV9wb2xpY3ko eGNfaW50ZXJmYWNlICp4Y2gsCiAgICAgICAgICAqLwogICAgICAgICByZWdzWzFdID0gKHJlZ3Nb MV0gJiAweDAwMDBmZmZmdSkgfCAoKHJlZ3NbMV0gJiAweDAwN2YwMDAwdSkgPDwgMSk7CiAKLSAg ICAgICAgcmVnc1syXSAmPSAoYml0bWFza29mKFg4Nl9GRUFUVVJFX1NTRTMpIHwKLSAgICAgICAg ICAgICAgICAgICAgYml0bWFza29mKFg4Nl9GRUFUVVJFX1BDTE1VTFFEUSkgfAotICAgICAgICAg ICAgICAgICAgICBiaXRtYXNrb2YoWDg2X0ZFQVRVUkVfU1NTRTMpIHwKLSAgICAgICAgICAgICAg ICAgICAgYml0bWFza29mKFg4Nl9GRUFUVVJFX0ZNQSkgfAotICAgICAgICAgICAgICAgICAgICBi aXRtYXNrb2YoWDg2X0ZFQVRVUkVfQ1gxNikgfAotICAgICAgICAgICAgICAgICAgICBiaXRtYXNr b2YoWDg2X0ZFQVRVUkVfUENJRCkgfAotICAgICAgICAgICAgICAgICAgICBiaXRtYXNrb2YoWDg2 X0ZFQVRVUkVfU1NFNF8xKSB8Ci0gICAgICAgICAgICAgICAgICAgIGJpdG1hc2tvZihYODZfRkVB VFVSRV9TU0U0XzIpIHwKLSAgICAgICAgICAgICAgICAgICAgYml0bWFza29mKFg4Nl9GRUFUVVJF X01PVkJFKSAgfAotICAgICAgICAgICAgICAgICAgICBiaXRtYXNrb2YoWDg2X0ZFQVRVUkVfUE9Q Q05UKSB8Ci0gICAgICAgICAgICAgICAgICAgIGJpdG1hc2tvZihYODZfRkVBVFVSRV9BRVNOSSkg fAotICAgICAgICAgICAgICAgICAgICBiaXRtYXNrb2YoWDg2X0ZFQVRVUkVfRjE2QykgfAotICAg ICAgICAgICAgICAgICAgICBiaXRtYXNrb2YoWDg2X0ZFQVRVUkVfUkRSQU5EKSB8Ci0gICAgICAg ICAgICAgICAgICAgICgoaW5mby0+eGZlYXR1cmVfbWFzayAhPSAwKSA/Ci0gICAgICAgICAgICAg ICAgICAgICAoYml0bWFza29mKFg4Nl9GRUFUVVJFX0FWWCkgfAotICAgICAgICAgICAgICAgICAg ICAgIGJpdG1hc2tvZihYODZfRkVBVFVSRV9YU0FWRSkpIDogMCkpOwotCi0gICAgICAgIHJlZ3Nb Ml0gfD0gKGJpdG1hc2tvZihYODZfRkVBVFVSRV9IWVBFUlZJU09SKSB8Ci0gICAgICAgICAgICAg ICAgICAgIGJpdG1hc2tvZihYODZfRkVBVFVSRV9UU0NfREVBRExJTkUpIHwKLSAgICAgICAgICAg ICAgICAgICAgYml0bWFza29mKFg4Nl9GRUFUVVJFX1gyQVBJQykpOwotCi0gICAgICAgIHJlZ3Nb M10gJj0gKGJpdG1hc2tvZihYODZfRkVBVFVSRV9GUFUpIHwKLSAgICAgICAgICAgICAgICAgICAg Yml0bWFza29mKFg4Nl9GRUFUVVJFX1ZNRSkgfAotICAgICAgICAgICAgICAgICAgICBiaXRtYXNr b2YoWDg2X0ZFQVRVUkVfREUpIHwKLSAgICAgICAgICAgICAgICAgICAgYml0bWFza29mKFg4Nl9G RUFUVVJFX1BTRSkgfAotICAgICAgICAgICAgICAgICAgICBiaXRtYXNrb2YoWDg2X0ZFQVRVUkVf VFNDKSB8Ci0gICAgICAgICAgICAgICAgICAgIGJpdG1hc2tvZihYODZfRkVBVFVSRV9NU1IpIHwK LSAgICAgICAgICAgICAgICAgICAgYml0bWFza29mKFg4Nl9GRUFUVVJFX1BBRSkgfAotICAgICAg ICAgICAgICAgICAgICBiaXRtYXNrb2YoWDg2X0ZFQVRVUkVfTUNFKSB8Ci0gICAgICAgICAgICAg ICAgICAgIGJpdG1hc2tvZihYODZfRkVBVFVSRV9DWDgpIHwKLSAgICAgICAgICAgICAgICAgICAg Yml0bWFza29mKFg4Nl9GRUFUVVJFX0FQSUMpIHwKLSAgICAgICAgICAgICAgICAgICAgYml0bWFz a29mKFg4Nl9GRUFUVVJFX1NFUCkgfAotICAgICAgICAgICAgICAgICAgICBiaXRtYXNrb2YoWDg2 X0ZFQVRVUkVfTVRSUikgfAotICAgICAgICAgICAgICAgICAgICBiaXRtYXNrb2YoWDg2X0ZFQVRV UkVfUEdFKSB8Ci0gICAgICAgICAgICAgICAgICAgIGJpdG1hc2tvZihYODZfRkVBVFVSRV9NQ0Ep IHwKLSAgICAgICAgICAgICAgICAgICAgYml0bWFza29mKFg4Nl9GRUFUVVJFX0NNT1YpIHwKLSAg ICAgICAgICAgICAgICAgICAgYml0bWFza29mKFg4Nl9GRUFUVVJFX1BBVCkgfAotICAgICAgICAg ICAgICAgICAgICBiaXRtYXNrb2YoWDg2X0ZFQVRVUkVfQ0xGTFVTSCkgfAotICAgICAgICAgICAg ICAgICAgICBiaXRtYXNrb2YoWDg2X0ZFQVRVUkVfUFNFMzYpIHwKLSAgICAgICAgICAgICAgICAg ICAgYml0bWFza29mKFg4Nl9GRUFUVVJFX01NWCkgfAotICAgICAgICAgICAgICAgICAgICBiaXRt YXNrb2YoWDg2X0ZFQVRVUkVfRlhTUikgfAotICAgICAgICAgICAgICAgICAgICBiaXRtYXNrb2Yo WDg2X0ZFQVRVUkVfU1NFKSB8Ci0gICAgICAgICAgICAgICAgICAgIGJpdG1hc2tvZihYODZfRkVB VFVSRV9TU0UyKSB8Ci0gICAgICAgICAgICAgICAgICAgIGJpdG1hc2tvZihYODZfRkVBVFVSRV9I VFQpKTsKLSAgICAgICAgICAgIAotICAgICAgICAvKiBXZSBhbHdheXMgc3VwcG9ydCBNVFJSIE1T UnMuICovCi0gICAgICAgIHJlZ3NbM10gfD0gYml0bWFza29mKFg4Nl9GRUFUVVJFX01UUlIpOwot Ci0gICAgICAgIGlmICggIWluZm8tPnBhZSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNsZWFy X2JpdChYODZfRkVBVFVSRV9QQUUsIHJlZ3NbM10pOwotICAgICAgICAgICAgY2xlYXJfYml0KFg4 Nl9GRUFUVVJFX1BTRTM2LCByZWdzWzNdKTsKLSAgICAgICAgfQorICAgICAgICByZWdzWzJdID0g aW5mby0+ZmVhdHVyZXNldFtmZWF0dXJld29yZF9vZihYODZfRkVBVFVSRV9TU0UzKV07CisgICAg ICAgIHJlZ3NbM10gPSAoaW5mby0+ZmVhdHVyZXNldFtmZWF0dXJld29yZF9vZihYODZfRkVBVFVS RV9GUFUpXSB8CisgICAgICAgICAgICAgICAgICAgYml0bWFza29mKFg4Nl9GRUFUVVJFX0hUVCkp OwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgMHgwMDAwMDAwNzogLyogSW50ZWwtZGVmaW5l ZCBDUFUgZmVhdHVyZXMgKi8KLSAgICAgICAgaWYgKCBpbnB1dFsxXSA9PSAwICkgewotICAgICAg ICAgICAgcmVnc1sxXSAmPSAoYml0bWFza29mKFg4Nl9GRUFUVVJFX1RTQ19BREpVU1QpIHwKLSAg ICAgICAgICAgICAgICAgICAgICAgIGJpdG1hc2tvZihYODZfRkVBVFVSRV9CTUkxKSB8Ci0gICAg ICAgICAgICAgICAgICAgICAgICBiaXRtYXNrb2YoWDg2X0ZFQVRVUkVfSExFKSAgfAotICAgICAg ICAgICAgICAgICAgICAgICAgYml0bWFza29mKFg4Nl9GRUFUVVJFX0FWWDIpIHwKLSAgICAgICAg ICAgICAgICAgICAgICAgIGJpdG1hc2tvZihYODZfRkVBVFVSRV9TTUVQKSB8Ci0gICAgICAgICAg ICAgICAgICAgICAgICBiaXRtYXNrb2YoWDg2X0ZFQVRVUkVfQk1JMikgfAotICAgICAgICAgICAg ICAgICAgICAgICAgYml0bWFza29mKFg4Nl9GRUFUVVJFX0VSTVMpIHwKLSAgICAgICAgICAgICAg ICAgICAgICAgIGJpdG1hc2tvZihYODZfRkVBVFVSRV9JTlZQQ0lEKSB8Ci0gICAgICAgICAgICAg ICAgICAgICAgICBiaXRtYXNrb2YoWDg2X0ZFQVRVUkVfUlRNKSAgfAotICAgICAgICAgICAgICAg ICAgICAgICAgKChpbmZvLT54ZmVhdHVyZV9tYXNrICE9IDApID8KLSAgICAgICAgICAgICAgICAg ICAgICAgIGJpdG1hc2tvZihYODZfRkVBVFVSRV9NUFgpIDogMCkgIHwKLSAgICAgICAgICAgICAg ICAgICAgICAgIGJpdG1hc2tvZihYODZfRkVBVFVSRV9SRFNFRUQpICB8Ci0gICAgICAgICAgICAg ICAgICAgICAgICBiaXRtYXNrb2YoWDg2X0ZFQVRVUkVfQURYKSAgfAotICAgICAgICAgICAgICAg ICAgICAgICAgYml0bWFza29mKFg4Nl9GRUFUVVJFX1NNQVApIHwKLSAgICAgICAgICAgICAgICAg ICAgICAgIGJpdG1hc2tvZihYODZfRkVBVFVSRV9GU0dTQkFTRSkgfAotICAgICAgICAgICAgICAg ICAgICAgICAgYml0bWFza29mKFg4Nl9GRUFUVVJFX1BDT01NSVQpIHwKLSAgICAgICAgICAgICAg ICAgICAgICAgIGJpdG1hc2tvZihYODZfRkVBVFVSRV9DTFdCKSB8Ci0gICAgICAgICAgICAgICAg ICAgICAgICBiaXRtYXNrb2YoWDg2X0ZFQVRVUkVfQ0xGTFVTSE9QVCkpOwotICAgICAgICAgICAg cmVnc1syXSAmPSBiaXRtYXNrb2YoWDg2X0ZFQVRVUkVfUEtVKTsKLSAgICAgICAgfSBlbHNlCi0g ICAgICAgICAgICByZWdzWzFdID0gcmVnc1syXSA9IDA7Ci0KKyAgICAgICAgaWYgKCBpbnB1dFsx XSA9PSAwICkKKyAgICAgICAgeworICAgICAgICAgICAgcmVnc1sxXSA9IGluZm8tPmZlYXR1cmVz ZXRbZmVhdHVyZXdvcmRfb2YoWDg2X0ZFQVRVUkVfRlNHU0JBU0UpXTsKKyAgICAgICAgICAgIHJl Z3NbMl0gPSBpbmZvLT5mZWF0dXJlc2V0W2ZlYXR1cmV3b3JkX29mKFg4Nl9GRUFUVVJFX1BSRUZF VENIV1QxKV07CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAg ICByZWdzWzFdID0gMDsKKyAgICAgICAgICAgIHJlZ3NbMl0gPSAwOworICAgICAgICB9CiAgICAg ICAgIHJlZ3NbMF0gPSByZWdzWzNdID0gMDsKICAgICAgICAgYnJlYWs7CiAKQEAgLTYxMSwxNCAr NDk5LDkgQEAgc3RhdGljIHZvaWQgeGNfY3B1aWRfaHZtX3BvbGljeSh4Y19pbnRlcmZhY2UgKnhj aCwKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIDB4ODAwMDAwMDE6Ci0gICAgICAgIGlmICgg IWluZm8tPnBhZSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNsZWFyX2JpdChYODZfRkVBVFVS RV9MQUhGX0xNLCByZWdzWzJdKTsKLSAgICAgICAgICAgIGNsZWFyX2JpdChYODZfRkVBVFVSRV9M TSwgcmVnc1szXSk7Ci0gICAgICAgICAgICBjbGVhcl9iaXQoWDg2X0ZFQVRVUkVfTlgsIHJlZ3Nb M10pOwotICAgICAgICAgICAgY2xlYXJfYml0KFg4Nl9GRUFUVVJFX1BTRTM2LCByZWdzWzNdKTsK LSAgICAgICAgICAgIGNsZWFyX2JpdChYODZfRkVBVFVSRV9QQUdFMUdCLCByZWdzWzNdKTsKLSAg ICAgICAgfQorICAgICAgICByZWdzWzJdID0gKGluZm8tPmZlYXR1cmVzZXRbZmVhdHVyZXdvcmRf b2YoWDg2X0ZFQVRVUkVfTEFIRl9MTSldICYKKyAgICAgICAgICAgICAgICAgICB+Yml0bWFza29m KFg4Nl9GRUFUVVJFX0NNUF9MRUdBQ1kpKTsKKyAgICAgICAgcmVnc1szXSA9IGluZm8tPmZlYXR1 cmVzZXRbZmVhdHVyZXdvcmRfb2YoWDg2X0ZFQVRVUkVfU1lTQ0FMTCldOwogICAgICAgICBicmVh azsKIAogICAgIGNhc2UgMHg4MDAwMDAwNzoKQEAgLTY2Miw2OCArNTQ1LDM0IEBAIHN0YXRpYyB2 b2lkIHhjX2NwdWlkX3B2X3BvbGljeSh4Y19pbnRlcmZhY2UgKnhjaCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgY3B1aWRfZG9tYWluX2luZm8gKmluZm8sCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgaW50ICppbnB1dCwg dW5zaWduZWQgaW50ICpyZWdzKQogewotICAgIGlmICggKGlucHV0WzBdICYgMHg3ZmZmZmZmZikg PT0gMHgwMDAwMDAwMSApCi0gICAgewotICAgICAgICBjbGVhcl9iaXQoWDg2X0ZFQVRVUkVfVk1F LCByZWdzWzNdKTsKLSAgICAgICAgaWYgKCAhaW5mby0+cHZoICkKLSAgICAgICAgewotICAgICAg ICAgICAgY2xlYXJfYml0KFg4Nl9GRUFUVVJFX1BTRSwgcmVnc1szXSk7Ci0gICAgICAgICAgICBj bGVhcl9iaXQoWDg2X0ZFQVRVUkVfUEdFLCByZWdzWzNdKTsKLSAgICAgICAgfQotICAgICAgICBj bGVhcl9iaXQoWDg2X0ZFQVRVUkVfTUNFLCByZWdzWzNdKTsKLSAgICAgICAgY2xlYXJfYml0KFg4 Nl9GRUFUVVJFX01DQSwgcmVnc1szXSk7Ci0gICAgICAgIGNsZWFyX2JpdChYODZfRkVBVFVSRV9N VFJSLCByZWdzWzNdKTsKLSAgICAgICAgY2xlYXJfYml0KFg4Nl9GRUFUVVJFX1BTRTM2LCByZWdz WzNdKTsKLSAgICB9Ci0KICAgICBzd2l0Y2ggKCBpbnB1dFswXSApCiAgICAgewogICAgIGNhc2Ug MHgwMDAwMDAwMToKLSAgICAgICAgaWYgKCBpbmZvLT52ZW5kb3IgPT0gVkVORE9SX0FNRCApCi0g ICAgICAgICAgICBjbGVhcl9iaXQoWDg2X0ZFQVRVUkVfU0VQLCByZWdzWzNdKTsKLSAgICAgICAg Y2xlYXJfYml0KFg4Nl9GRUFUVVJFX0RTLCByZWdzWzNdKTsKLSAgICAgICAgY2xlYXJfYml0KFg4 Nl9GRUFUVVJFX1RNMSwgcmVnc1szXSk7Ci0gICAgICAgIGNsZWFyX2JpdChYODZfRkVBVFVSRV9Q QkUsIHJlZ3NbM10pOwotCi0gICAgICAgIGNsZWFyX2JpdChYODZfRkVBVFVSRV9EVEVTNjQsIHJl Z3NbMl0pOwotICAgICAgICBjbGVhcl9iaXQoWDg2X0ZFQVRVUkVfTU9OSVRPUiwgcmVnc1syXSk7 Ci0gICAgICAgIGNsZWFyX2JpdChYODZfRkVBVFVSRV9EU0NQTCwgcmVnc1syXSk7Ci0gICAgICAg IGNsZWFyX2JpdChYODZfRkVBVFVSRV9WTVgsIHJlZ3NbMl0pOwotICAgICAgICBjbGVhcl9iaXQo WDg2X0ZFQVRVUkVfU01YLCByZWdzWzJdKTsKLSAgICAgICAgY2xlYXJfYml0KFg4Nl9GRUFUVVJF X0VJU1QsIHJlZ3NbMl0pOwotICAgICAgICBjbGVhcl9iaXQoWDg2X0ZFQVRVUkVfVE0yLCByZWdz WzJdKTsKLSAgICAgICAgaWYgKCAhaW5mby0+cHY2NCApCi0gICAgICAgICAgICBjbGVhcl9iaXQo WDg2X0ZFQVRVUkVfQ1gxNiwgcmVnc1syXSk7Ci0gICAgICAgIGlmICggaW5mby0+eGZlYXR1cmVf bWFzayA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgY2xlYXJfYml0KFg4Nl9GRUFUVVJF X1hTQVZFLCByZWdzWzJdKTsKLSAgICAgICAgICAgIGNsZWFyX2JpdChYODZfRkVBVFVSRV9BVlgs IHJlZ3NbMl0pOwotICAgICAgICB9Ci0gICAgICAgIGNsZWFyX2JpdChYODZfRkVBVFVSRV9YVFBS LCByZWdzWzJdKTsKLSAgICAgICAgY2xlYXJfYml0KFg4Nl9GRUFUVVJFX1BEQ00sIHJlZ3NbMl0p OwotICAgICAgICBjbGVhcl9iaXQoWDg2X0ZFQVRVUkVfUENJRCwgcmVnc1syXSk7Ci0gICAgICAg IGNsZWFyX2JpdChYODZfRkVBVFVSRV9EQ0EsIHJlZ3NbMl0pOwotICAgICAgICBzZXRfYml0KFg4 Nl9GRUFUVVJFX0hZUEVSVklTT1IsIHJlZ3NbMl0pOworICAgIHsKKyAgICAgICAgLyogSG9zdCB0 b3BvbG9neSBleHBvc2VkIHRvIFBWIGd1ZXN0LiAgUHJvdmlkZSBob3N0IHZhbHVlLiAqLworICAg ICAgICBib29sIGhvc3RfaHR0ID0gcmVnc1szXSAmIGJpdG1hc2tvZihYODZfRkVBVFVSRV9IVFQp OworCisgICAgICAgIHJlZ3NbMl0gPSBpbmZvLT5mZWF0dXJlc2V0W2ZlYXR1cmV3b3JkX29mKFg4 Nl9GRUFUVVJFX1NTRTMpXTsKKyAgICAgICAgcmVnc1szXSA9IChpbmZvLT5mZWF0dXJlc2V0W2Zl YXR1cmV3b3JkX29mKFg4Nl9GRUFUVVJFX0ZQVSldICYKKyAgICAgICAgICAgICAgICAgICB+Yml0 bWFza29mKFg4Nl9GRUFUVVJFX0hUVCkpOworCisgICAgICAgIGlmICggaG9zdF9odHQgKQorICAg ICAgICAgICAgcmVnc1szXSB8PSBiaXRtYXNrb2YoWDg2X0ZFQVRVUkVfSFRUKTsKICAgICAgICAg YnJlYWs7CisgICAgfQogCiAgICAgY2FzZSAweDAwMDAwMDA3OgogICAgICAgICBpZiAoIGlucHV0 WzFdID09IDAgKQogICAgICAgICB7Ci0gICAgICAgICAgICByZWdzWzFdICY9IChiaXRtYXNrb2Yo WDg2X0ZFQVRVUkVfQk1JMSkgfAotICAgICAgICAgICAgICAgICAgICAgICAgYml0bWFza29mKFg4 Nl9GRUFUVVJFX0hMRSkgIHwKLSAgICAgICAgICAgICAgICAgICAgICAgIGJpdG1hc2tvZihYODZf RkVBVFVSRV9BVlgyKSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICBiaXRtYXNrb2YoWDg2X0ZF QVRVUkVfQk1JMikgfAotICAgICAgICAgICAgICAgICAgICAgICAgYml0bWFza29mKFg4Nl9GRUFU VVJFX0VSTVMpIHwKLSAgICAgICAgICAgICAgICAgICAgICAgIGJpdG1hc2tvZihYODZfRkVBVFVS RV9SVE0pICB8Ci0gICAgICAgICAgICAgICAgICAgICAgICBiaXRtYXNrb2YoWDg2X0ZFQVRVUkVf UkRTRUVEKSAgfAotICAgICAgICAgICAgICAgICAgICAgICAgYml0bWFza29mKFg4Nl9GRUFUVVJF X0FEWCkgIHwKLSAgICAgICAgICAgICAgICAgICAgICAgIGJpdG1hc2tvZihYODZfRkVBVFVSRV9G U0dTQkFTRSkpOwotICAgICAgICAgICAgaWYgKCBpbmZvLT54ZmVhdHVyZV9tYXNrID09IDAgKQot ICAgICAgICAgICAgICAgIGNsZWFyX2JpdChYODZfRkVBVFVSRV9NUFgsIHJlZ3NbMV0pOworICAg ICAgICAgICAgcmVnc1sxXSA9IGluZm8tPmZlYXR1cmVzZXRbZmVhdHVyZXdvcmRfb2YoWDg2X0ZF QVRVUkVfRlNHU0JBU0UpXTsKKyAgICAgICAgICAgIHJlZ3NbMl0gPSBpbmZvLT5mZWF0dXJlc2V0 W2ZlYXR1cmV3b3JkX29mKFg4Nl9GRUFUVVJFX1BSRUZFVENIV1QxKV07CiAgICAgICAgIH0KICAg ICAgICAgZWxzZQorICAgICAgICB7CiAgICAgICAgICAgICByZWdzWzFdID0gMDsKLSAgICAgICAg cmVnc1swXSA9IHJlZ3NbMl0gPSByZWdzWzNdID0gMDsKKyAgICAgICAgICAgIHJlZ3NbMl0gPSAw OworICAgICAgICB9CisgICAgICAgIHJlZ3NbMF0gPSByZWdzWzNdID0gMDsKICAgICAgICAgYnJl YWs7CiAKICAgICBjYXNlIDB4MDAwMDAwMGQ6CkBAIC03MzEsMzAgKzU4MCwxOSBAQCBzdGF0aWMg dm9pZCB4Y19jcHVpZF9wdl9wb2xpY3koeGNfaW50ZXJmYWNlICp4Y2gsCiAgICAgICAgIGJyZWFr OwogCiAgICAgY2FzZSAweDgwMDAwMDAxOgotICAgICAgICBpZiAoICFpbmZvLT5wdjY0ICkKLSAg ICAgICAgewotICAgICAgICAgICAgY2xlYXJfYml0KFg4Nl9GRUFUVVJFX0xNLCByZWdzWzNdKTsK LSAgICAgICAgICAgIGNsZWFyX2JpdChYODZfRkVBVFVSRV9MQUhGX0xNLCByZWdzWzJdKTsKLSAg ICAgICAgICAgIGlmICggaW5mby0+dmVuZG9yICE9IFZFTkRPUl9BTUQgKQotICAgICAgICAgICAg ICAgIGNsZWFyX2JpdChYODZfRkVBVFVSRV9TWVNDQUxMLCByZWdzWzNdKTsKLSAgICAgICAgfQot ICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNldF9iaXQoWDg2X0ZFQVRVUkVf U1lTQ0FMTCwgcmVnc1szXSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCAhaW5mby0+cHZoICkK LSAgICAgICAgICAgIGNsZWFyX2JpdChYODZfRkVBVFVSRV9QQUdFMUdCLCByZWdzWzNdKTsKLSAg ICAgICAgY2xlYXJfYml0KFg4Nl9GRUFUVVJFX1JEVFNDUCwgcmVnc1szXSk7Ci0KLSAgICAgICAg Y2xlYXJfYml0KFg4Nl9GRUFUVVJFX1NWTSwgcmVnc1syXSk7Ci0gICAgICAgIGNsZWFyX2JpdChY ODZfRkVBVFVSRV9PU1ZXLCByZWdzWzJdKTsKLSAgICAgICAgY2xlYXJfYml0KFg4Nl9GRUFUVVJF X0lCUywgcmVnc1syXSk7Ci0gICAgICAgIGNsZWFyX2JpdChYODZfRkVBVFVSRV9TS0lOSVQsIHJl Z3NbMl0pOwotICAgICAgICBjbGVhcl9iaXQoWDg2X0ZFQVRVUkVfV0RULCByZWdzWzJdKTsKLSAg ICAgICAgY2xlYXJfYml0KFg4Nl9GRUFUVVJFX0xXUCwgcmVnc1syXSk7Ci0gICAgICAgIGNsZWFy X2JpdChYODZfRkVBVFVSRV9OT0RFSURfTVNSLCByZWdzWzJdKTsKLSAgICAgICAgY2xlYXJfYml0 KFg4Nl9GRUFUVVJFX1RPUE9FWFQsIHJlZ3NbMl0pOworICAgIHsKKyAgICAgICAgLyogSG9zdCB0 b3BvbG9neSBleHBvc2VkIHRvIFBWIGd1ZXN0LiAgUHJvdmlkZSBob3N0IENNUF9MRUdBQ1kgdmFs dWUuICovCisgICAgICAgIGJvb2wgaG9zdF9jbXBfbGVnYWN5ID0gcmVnc1syXSAmIGJpdG1hc2tv ZihYODZfRkVBVFVSRV9DTVBfTEVHQUNZKTsKKworICAgICAgICByZWdzWzJdID0gKGluZm8tPmZl YXR1cmVzZXRbZmVhdHVyZXdvcmRfb2YoWDg2X0ZFQVRVUkVfTEFIRl9MTSldICYKKyAgICAgICAg ICAgICAgICAgICB+Yml0bWFza29mKFg4Nl9GRUFUVVJFX0NNUF9MRUdBQ1kpKTsKKyAgICAgICAg cmVnc1szXSA9IGluZm8tPmZlYXR1cmVzZXRbZmVhdHVyZXdvcmRfb2YoWDg2X0ZFQVRVUkVfU1lT Q0FMTCldOworCisgICAgICAgIGlmICggaG9zdF9jbXBfbGVnYWN5ICkKKyAgICAgICAgICAgIHJl Z3NbMl0gfD0gYml0bWFza29mKFg4Nl9GRUFUVVJFX0NNUF9MRUdBQ1kpOworCiAgICAgICAgIGJy ZWFrOworICAgIH0KIAogICAgIGNhc2UgMHgwMDAwMDAwNTogLyogTU9OSVRPUi9NV0FJVCAqLwog ICAgIGNhc2UgMHgwMDAwMDAwYTogLyogQXJjaGl0ZWN0dXJhbCBQZXJmb3JtYW5jZSBNb25pdG9y IEZlYXR1cmVzICovCkBAIC04MzMsNiArNjcxLDg3IEBAIHZvaWQgeGNfY3B1aWRfdG9fc3RyKGNv bnN0IHVuc2lnbmVkIGludCAqcmVncywgY2hhciAqKnN0cnMpCiAgICAgfQogfQogCitzdGF0aWMg dm9pZCBzYW5pdGlzZV9mZWF0dXJlc2V0KHN0cnVjdCBjcHVpZF9kb21haW5faW5mbyAqaW5mbykK K3sKKyAgICBjb25zdCB1aW50MzJfdCBmc19zaXplID0geGNfZ2V0X2NwdV9mZWF0dXJlc2V0X3Np emUoKTsKKyAgICB1aW50MzJfdCBkaXNhYmxlZF9mZWF0dXJlc1tmc19zaXplXTsKKyAgICBzdGF0 aWMgY29uc3QgdWludDMyX3QgZGVlcF9mZWF0dXJlc1tdID0gSU5JVF9ERUVQX0ZFQVRVUkVTOwor ICAgIHVuc2lnbmVkIGludCBpLCBiOworCisgICAgaWYgKCBpbmZvLT5odm0gKQorICAgIHsKKyAg ICAgICAgLyogSFZNIEd1ZXN0ICovCisKKyAgICAgICAgaWYgKCAhaW5mby0+cGFlICkKKyAgICAg ICAgICAgIGNsZWFyX2JpdChYODZfRkVBVFVSRV9QQUUsIGluZm8tPmZlYXR1cmVzZXQpOworCisg ICAgICAgIGlmICggIWluZm8tPm5lc3RlZGh2bSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGNs ZWFyX2JpdChYODZfRkVBVFVSRV9TVk0sIGluZm8tPmZlYXR1cmVzZXQpOworICAgICAgICAgICAg Y2xlYXJfYml0KFg4Nl9GRUFUVVJFX1ZNWCwgaW5mby0+ZmVhdHVyZXNldCk7CisgICAgICAgIH0K KyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgLyogUFYgb3IgUFZIIEd1ZXN0ICovCisK KyAgICAgICAgaWYgKCAhaW5mby0+cHY2NCApCisgICAgICAgIHsKKyAgICAgICAgICAgIGNsZWFy X2JpdChYODZfRkVBVFVSRV9MTSwgaW5mby0+ZmVhdHVyZXNldCk7CisgICAgICAgICAgICBpZiAo IGluZm8tPnZlbmRvciAhPSBWRU5ET1JfQU1EICkKKyAgICAgICAgICAgICAgICBjbGVhcl9iaXQo WDg2X0ZFQVRVUkVfU1lTQ0FMTCwgaW5mby0+ZmVhdHVyZXNldCk7CisgICAgICAgIH0KKworICAg ICAgICBpZiAoICFpbmZvLT5wdmggKQorICAgICAgICB7CisgICAgICAgICAgICBjbGVhcl9iaXQo WDg2X0ZFQVRVUkVfUFNFLCBpbmZvLT5mZWF0dXJlc2V0KTsKKyAgICAgICAgICAgIGNsZWFyX2Jp dChYODZfRkVBVFVSRV9QU0UzNiwgaW5mby0+ZmVhdHVyZXNldCk7CisgICAgICAgICAgICBjbGVh cl9iaXQoWDg2X0ZFQVRVUkVfUEdFLCBpbmZvLT5mZWF0dXJlc2V0KTsKKyAgICAgICAgICAgIGNs ZWFyX2JpdChYODZfRkVBVFVSRV9QQUdFMUdCLCBpbmZvLT5mZWF0dXJlc2V0KTsKKyAgICAgICAg fQorICAgIH0KKworICAgIGlmICggaW5mby0+eGZlYXR1cmVfbWFzayA9PSAwICkKKyAgICAgICAg Y2xlYXJfYml0KFg4Nl9GRUFUVVJFX1hTQVZFLCBpbmZvLT5mZWF0dXJlc2V0KTsKKworICAgIC8q IERpc2FibGUgZGVlcCBkZXBlbmRlbmNpZXMgb2YgZGlzYWJsZWQgZmVhdHVyZXMuICovCisgICAg Zm9yICggaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGRpc2FibGVkX2ZlYXR1cmVzKTsgKytpICkKKyAg ICAgICAgZGlzYWJsZWRfZmVhdHVyZXNbaV0gPSB+aW5mby0+ZmVhdHVyZXNldFtpXSAmIGRlZXBf ZmVhdHVyZXNbaV07CisKKyAgICBmb3IgKCBiID0gMDsgYiA8IHNpemVvZihkaXNhYmxlZF9mZWF0 dXJlcykgKiBDSEFSX0JJVDsgKytiICkKKyAgICB7CisgICAgICAgIGNvbnN0IHVpbnQzMl90ICpk ZnM7CisKKyAgICAgICAgaWYgKCAhdGVzdF9iaXQoYiwgZGlzYWJsZWRfZmVhdHVyZXMpIHx8Cisg ICAgICAgICAgICAgIShkZnMgPSB4Y19nZXRfZmVhdHVyZV9kZWVwX2RlcHMoYikpICkKKyAgICAg ICAgICAgICBjb250aW51ZTsKKworICAgICAgICBmb3IgKCBpID0gMDsgaSA8IEFSUkFZX1NJWkUo ZGlzYWJsZWRfZmVhdHVyZXMpOyArK2kgKQorICAgICAgICB7CisgICAgICAgICAgICBpbmZvLT5m ZWF0dXJlc2V0W2ldICY9IH5kZnNbaV07CisgICAgICAgICAgICBkaXNhYmxlZF9mZWF0dXJlc1tp XSAmPSB+ZGZzW2ldOworICAgICAgICB9CisgICAgfQorCisgICAgc3dpdGNoICggaW5mby0+dmVu ZG9yICkKKyAgICB7CisgICAgY2FzZSBWRU5ET1JfSU5URUw6CisgICAgICAgIC8qIEludGVsIGNs ZWFycyB0aGUgY29tbW9uIGJpdHMgaW4gZTFkLiAqLworICAgICAgICBpbmZvLT5mZWF0dXJlc2V0 W2ZlYXR1cmV3b3JkX29mKFg4Nl9GRUFUVVJFX1NZU0NBTEwpXSAmPSB+Q09NTU9OXzFEOworICAg ICAgICBicmVhazsKKworICAgIGNhc2UgVkVORE9SX0FNRDoKKyAgICAgICAgLyogQU1EIGR1cGxp Y2F0ZXMgdGhlIGNvbW1vbiBiaXRzIGJldHdlZW4gMWQgYW5kIGUxZC4gKi8KKyAgICAgICAgaW5m by0+ZmVhdHVyZXNldFtmZWF0dXJld29yZF9vZihYODZfRkVBVFVSRV9TWVNDQUxMKV0gPQorICAg ICAgICAgICAgKChpbmZvLT5mZWF0dXJlc2V0W2ZlYXR1cmV3b3JkX29mKFg4Nl9GRUFUVVJFX0ZQ VSldICYgQ09NTU9OXzFEKSB8CisgICAgICAgICAgICAgKGluZm8tPmZlYXR1cmVzZXRbZmVhdHVy ZXdvcmRfb2YoWDg2X0ZFQVRVUkVfU1lTQ0FMTCldICYgfkNPTU1PTl8xRCkpOworICAgICAgICBi cmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwogaW50IHhj X2NwdWlkX2FwcGx5X3BvbGljeSh4Y19pbnRlcmZhY2UgKnhjaCwgZG9taWRfdCBkb21pZCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKmZlYXR1cmVzZXQsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBucl9mZWF0dXJlcykKQEAgLTg1Niw2ICs3NzUs OCBAQCBpbnQgeGNfY3B1aWRfYXBwbHlfcG9saWN5KHhjX2ludGVyZmFjZSAqeGNoLCBkb21pZF90 IGRvbWlkLAogICAgIGVsc2UKICAgICAgICAgZXh0X21heCA9IChyZWdzWzBdIDw9IERFRl9NQVhf SU5URUxFWFQpID8gcmVnc1swXSA6IERFRl9NQVhfSU5URUxFWFQ7CiAKKyAgICBzYW5pdGlzZV9m ZWF0dXJlc2V0KCZpbmZvKTsKKwogICAgIGlucHV0WzBdID0gMDsKICAgICBpbnB1dFsxXSA9IFhF Tl9DUFVJRF9JTlBVVF9VTlVTRUQ7CiAgICAgZm9yICggOyA7ICkKQEAgLTEwMjcsOSArOTQ4LDkg QEAgaW50IHhjX2NwdWlkX3NldCgKICAgICAgICAgICAgICAgICB2YWwgPSBwb2x2YWw7CiAKICAg ICAgICAgICAgIGlmICggdmFsICkKLSAgICAgICAgICAgICAgICBzZXRfYml0KDMxIC0gaiwgcmVn c1tpXSk7CisgICAgICAgICAgICAgICAgc2V0X2ZlYXR1cmUoMzEgLSBqLCByZWdzW2ldKTsKICAg ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjbGVhcl9iaXQoMzEgLSBqLCByZWdzW2ld KTsKKyAgICAgICAgICAgICAgICBjbGVhcl9mZWF0dXJlKDMxIC0gaiwgcmVnc1tpXSk7CiAKICAg ICAgICAgICAgIGNvbmZpZ190cmFuc2Zvcm1lZFtpXVtqXSA9IGNvbmZpZ1tpXVtqXTsKICAgICAg ICAgICAgIGlmICggY29uZmlnW2ldW2pdID09ICdzJyApCi0tIAoyLjEuNAoKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxp c3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVs Cg==