From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH v3 01/34] x86emul: support AVX512 opmask insns Date: Tue, 18 Sep 2018 05:53:02 -0600 Message-ID: <5BA0E71E02000078001E94EC@prv1-mh.provo.novell.com> References: <5B6BF83602000078001DC548@prv1-mh.provo.novell.com> <5BA0E58F02000078001E94CE@prv1-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1g2EZ2-0005v7-0S for xen-devel@lists.xenproject.org; Tue, 18 Sep 2018 11:53:08 +0000 In-Reply-To: <5BA0E58F02000078001E94CE@prv1-mh.provo.novell.com> Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel Cc: George Dunlap , Andrew Cooper , Wei Liu List-Id: xen-devel@lists.xenproject.org VGhlc2UgYXJlIGFsbCBWRVggZW5jb2RlZCwgc28gdGhlIEVWRVggZGVjb2RpbmcgbG9naWMgY29u dGludWVzIHRvCnJlbWFpbiB1bnVzZWQgYXQgdGhpcyBwb2ludC4KClRoZSBuZXcgdGVzdGNhc2Ug aXMgZGVsaWJlcmF0ZWx5IGNvZGVkIGluIGFzc2VtYmx5LCBhcyBhIEMgb25lIHdvdWxkCmhhdmUg YmVjb21lIGFsbW9zdCB1bnJlYWRhYmxlIGR1ZSB0byB0aGUgb3ZlcndoZWxtaW5nIGFtb3VudCBv ZgpfX2J1aWx0aW5fLi4uKCkgdGhhdCB3b3VsZCBuZWVkIHRvIGJlIHVzZWQuIEFmdGVyIGFsbCB0 aGUgY29tcGlsZXIgaGFzCm5vIHVuZGVybHlpbmcgdHlwZSAoeWV0KSB0aGF0IGNvdWxkIGJlIG9w ZXJhdGVkIG9uIHdpdGhvdXQgYnVpbHRpbnMsCm90aGVyIHRoYW4gdGhlIHZlY3RvciB0eXBlcyB1 c2VkIGZvciAibm9ybWFsIiBTSU1EIGluc25zLgoKU2lnbmVkLW9mZi1ieTogSmFuIEJldWxpY2gg PGpiZXVsaWNoQHN1c2UuY29tPgotLS0KdjM6IFVzZSBkaXN0aW5jdCB0ZW1wb3JhcnkgZmlsZSBu YW1lcyBpbiB0ZXN0Y2FzZS5tay4gQWRkaXRpb25zIHRvIGNsZWFuCiAgICB0YXJnZXQuCgotLS0g YS90b29scy90ZXN0cy94ODZfZW11bGF0b3IvTWFrZWZpbGUKKysrIGIvdG9vbHMvdGVzdHMveDg2 X2VtdWxhdG9yL01ha2VmaWxlCkBAIC0xNiw2ICsxNiw4IEBAIEZNQSA6PSBmbWE0IGZtYQogU0cg Oj0gYXZ4Mi1zZwogVEVTVENBU0VTIDo9IGJsb3dmaXNoICQoU0lNRCkgJChGTUEpICQoU0cpCiAK K09QTUFTSyA6PSBhdng1MTJmIGF2eDUxMmRxIGF2eDUxMmJ3CisKIGJsb3dmaXNoLWNmbGFncyA6 PSAiIgogYmxvd2Zpc2gtY2ZsYWdzLXg4Nl8zMiA6PSAiLW1uby1hY2N1bXVsYXRlLW91dGdvaW5n LWFyZ3MgLURzdGF0aWM9IgogCkBAIC01MSw2ICs1MywxMCBAQCB4b3AtdmVjcyA6PSAkKGF2eC12 ZWNzKQogeG9wLWludHMgOj0gMSAyIDQgOAogeG9wLWZsdHMgOj0gJChhdngtZmx0cykKIAorYXZ4 NTEyZi1vcG1hc2stdmVjcyA6PSAyCithdng1MTJkcS1vcG1hc2stdmVjcyA6PSAxCithdng1MTJi dy1vcG1hc2stdmVjcyA6PSA0IDgKKwogIyBGb3IgQVZYIGFuZCBsYXRlciwgaGF2ZSB0aGUgY29t cGlsZXIgYXZvaWQgWE1NMCB0byB3aWRlbiBjb3ZlcmFnZSBvZgogIyB0aGUgVkVYLnZ2dnYgY2hl Y2tzIGluIHRoZSBlbXVsYXRvci4gIEZvciAzRE5vdyEsIGhvd2V2ZXIsIGZvcmNlIFNTRQogIyB1 c2UgZm9yIGZsb2F0aW5nIHBvaW50IG9wZXJhdGlvbnMsIHRvIGF2b2lkIG1peGluZyBNTVggYW5k IEZQVSByZWdpc3RlcgpAQCAtODAsOSArODYsMTMgQEAgJCgxKS1jZmxhZ3MgOj0gXAogCSAgICQo Zm9yZWFjaCBmbHQsJCgkKDEpLWZsdHMpLCBcCiAJICAgICAiLURfJCh2ZWMpeCQoaWR4KWYkKGZs dCkgLW0kKDE6LXNnPSkgJChjYWxsIG5vbi1zc2UsJCgxKSkgLU9zIC1EVkVDX01BWD0kKHZlYykg LURJRFhfU0laRT0kKGlkeCkgLURGTE9BVF9TSVpFPSQoZmx0KSIpKSkKIGVuZGVmCitkZWZpbmUg b3BtYXNrLWRlZnMKKyQoMSktb3BtYXNrLWNmbGFncyA6PSAkKGZvcmVhY2ggdmVjLCQoJCgxKS1v cG1hc2stdmVjcyksICItRF8kKHZlYykgLW0kKDEpIC1PcyAtRFNJWkU9JCh2ZWMpIikKK2VuZGVm CiAKICQoZm9yZWFjaCBmbGF2b3IsJChTSU1EKSAkKEZNQSksJChldmFsICQoY2FsbCBzaW1kLWRl ZnMsJChmbGF2b3IpKSkpCiAkKGZvcmVhY2ggZmxhdm9yLCQoU0cpLCQoZXZhbCAkKGNhbGwgc2lt ZC1zZy1kZWZzLCQoZmxhdm9yKSkpKQorJChmb3JlYWNoIGZsYXZvciwkKE9QTUFTSyksJChldmFs ICQoY2FsbCBvcG1hc2stZGVmcywkKGZsYXZvcikpKSkKIAogJChhZGRzdWZmaXggLmgsJChURVNU Q0FTRVMpKTogJS5oOiAlLmMgdGVzdGNhc2UubWsgTWFrZWZpbGUKIAlybSAtZiAkQC5uZXcgJCou YmluCkBAIC0xMDAsNiArMTEwLDIyIEBAICQoYWRkc3VmZml4IC5oLCQoVEVTVENBU0VTKSk6ICUu aDogJS5jIHQKIAkpCiAJbXYgJEAubmV3ICRACiAKKyQoYWRkc3VmZml4IC1vcG1hc2suaCwkKE9Q TUFTSykpOiAlLmg6IG9wbWFzay5TIHRlc3RjYXNlLm1rIE1ha2VmaWxlCisJcm0gLWYgJEAubmV3 ICQqLmJpbgorCSQoZm9yZWFjaCBhcmNoLCQoZmlsdGVyLW91dCAkKFhFTl9DT01QSUxFX0FSQ0gp LHg4Nl8zMikgJChYRU5fQ09NUElMRV9BUkNIKSwgXAorCSAgICBmb3IgY2ZsYWdzIGluICQoJCot Y2ZsYWdzKSAkKCQqLWNmbGFncy0kKGFyY2gpKTsgZG8gXAorCQkkKE1BS0UpIC1mIHRlc3RjYXNl Lm1rIFRFU1RDQVNFPSQqIFhFTl9UQVJHRVRfQVJDSD0kKGFyY2gpICQqLWNmbGFncz0iJCRjZmxh Z3MiIGFsbDsgXAorCQlwcmVmaXg9JChzaGVsbCBlY2hvICQoc3Vic3QgLSxfLCQqKSB8IHNlZCAt ZSAncyxeXChbMC05XVwpLF9cMSwnKTsgXAorCQlmbGF2b3I9JCQoZWNobyAkJHtjZmxhZ3N9IHwg c2VkIC1lICdzLCAuKiwsJyAtZSAneSwtPSxfXywnKSA7IFwKKwkJKGVjaG8gJ3N0YXRpYyBjb25z dCB1bnNpZ25lZCBpbnQgX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLnRlc3QsIFwiYXhcIiwgQHBy b2diaXRzICMiKSkpJyBcCisJCSAgICAgICIkJHtwcmVmaXh9XyQoYXJjaCkkJHtmbGF2b3J9W10g PSB7IjsgXAorCQkgb2QgLXYgLXQgeCAkKi5iaW4gfCBzZWQgLWUgJ3MvXlswLTldKiAvMHgvJyAt ZSAncy8gLywgMHgvZycgLWUgJ3MvJCQvLC8nOyBcCisJCSBlY2hvICJ9OyIpID4+JEAubmV3OyBc CisJCXJtIC1mICQqLmJpbjsgXAorCSAgICBkb25lOyBcCisJKQorCW12ICRALm5ldyAkQAorCiAk KGFkZHN1ZmZpeCAuYywkKFNJTUQpKToKIAlsbiAtc2Ygc2ltZC5jICRACiAKQEAgLTExOCw3ICsx NDQsOCBAQCAkKFRBUkdFVCk6IHg4Ni1lbXVsYXRlLm8gdGVzdF94ODZfZW11bGF0CiAKIC5QSE9O WTogY2xlYW4KIGNsZWFuOgotCXJtIC1yZiAkKFRBUkdFVCkgKi5vICp+IGNvcmUgJChhZGRzdWZm aXggLmgsJChURVNUQ0FTRVMpKSAqLmJpbiB4ODZfZW11bGF0ZQorCXJtIC1yZiAkKFRBUkdFVCkg Ki5vICp+IGNvcmUgKi5iaW4geDg2X2VtdWxhdGUKKwlybSAtcmYgJChUQVJHRVQpICQoYWRkc3Vm Zml4IC5oLCQoVEVTVENBU0VTKSkgJChhZGRzdWZmaXggLW9wbWFzay5oLCQoT1BNQVNLKSkKIAog LlBIT05ZOiBkaXN0Y2xlYW4KIGRpc3RjbGVhbjogY2xlYW4KQEAgLTE0NSw0ICsxNzIsNCBAQCB4 ODYtZW11bGF0ZS5vIHRlc3RfeDg2X2VtdWxhdG9yLm8gd3JhcHBlCiB4ODYtZW11bGF0ZS5vOiB4 ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jCiB4ODYtZW11bGF0ZS5vOiBIT1NUQ0ZMQUdTICs9IC1E X19YRU5fVE9PTFNfXwogCi10ZXN0X3g4Nl9lbXVsYXRvci5vOiAkKGFkZHN1ZmZpeCAuaCwkKFRF U1RDQVNFUykpCit0ZXN0X3g4Nl9lbXVsYXRvci5vOiAkKGFkZHN1ZmZpeCAuaCwkKFRFU1RDQVNF UykpICQoYWRkc3VmZml4IC1vcG1hc2suaCwkKE9QTUFTSykpCi0tLSAvZGV2L251bGwKKysrIGIv dG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL29wbWFzay5TCkBAIC0wLDAgKzEsMTQ0IEBACisjaWZk ZWYgX19pMzg2X18KKyMgZGVmaW5lIFIoeCkgZSMjeAorIyBkZWZpbmUgREFUQSh4KSB4CisjZWxz ZQorIyBpZiBTSVpFID09IDgKKyMgIGRlZmluZSBSKHgpIHIjI3gKKyMgZWxzZQorIyAgZGVmaW5l IFIoeCkgZSMjeAorIyBlbmRpZgorIyBkZWZpbmUgREFUQSh4KSB4KCVyaXApCisjZW5kaWYKKwor I2lmIFNJWkUgPT0gMQorIyBkZWZpbmUgXyh4KSB4IyNiCisjZWxpZiBTSVpFID09IDIKKyMgZGVm aW5lIF8oeCkgeCMjdworIyBkZWZpbmUgV0lERU4oeCkgeCMjYncKKyNlbGlmIFNJWkUgPT0gNAor IyBkZWZpbmUgXyh4KSB4IyNkCisjIGRlZmluZSBXSURFTih4KSB4IyN3ZAorI2VsaWYgU0laRSA9 PSA4CisjIGRlZmluZSBfKHgpIHgjI3EKKyMgZGVmaW5lIFdJREVOKHgpIHgjI2RxCisjZW5kaWYK KworICAgIC5tYWNybyBjaGVjayByZXMxOnJlcSwgcmVzMjpyZXEsIGxpbmU6cmVxCisgICAgXyhr bW92KSAgICAgICAlXHJlczEsIERBVEEob3V0KQorI2lmIFNJWkUgPCA4IHx8ICFkZWZpbmVkKF9f aTM4Nl9fKQorICAgIF8oa21vdikgICAgICAgJVxyZXMyLCAlUihkeCkKKyAgICBjbXAgICAgICAg ICAgIERBVEEob3V0KSwgJVIoZHgpCisjZWxzZQorICAgIHN1YiAgICAgICAgICAgJDgsICVlc3AK KyAgICBrbW92cSAgICAgICAgICVccmVzMiwgKCVlc3ApCisgICAgcG9wICAgICAgICAgICAlZWN4 CisgICAgcG9wICAgICAgICAgICAlZWR4CisgICAgY21wICAgICAgICAgICBEQVRBKG91dCksICVl Y3gKKyAgICBqbmUgICAgICAgICAgIDBmCisgICAgY21wICAgICAgICAgICBEQVRBKG91dCs0KSwg JWVkeAorMDoKKyNlbmRpZgorICAgIGplICAgICAgICAgICAgMWYKKyAgICBtb3YgICAgICAgICAg ICRcbGluZSwgJWVheAorICAgIHJldAorMToKKyAgICAuZW5kbQorCisgICAgLnRleHQKKyAgICAu Z2xvYmwgX3N0YXJ0Citfc3RhcnQ6CisgICAgXyhrbW92KSAgICAgICBEQVRBKGluMSksICVrMQor I2lmIFNJWkUgPCA4IHx8ICFkZWZpbmVkKF9faTM4Nl9fKQorICAgIG1vdiAgICAgICAgICAgREFU QShpbjIpLCAlUihheCkKKyAgICBfKGttb3YpICAgICAgICVSKGF4KSwgJWsyCisjZWxzZQorICAg IF8oa21vdikgICAgICAgREFUQShpbjIpLCAlazIKKyNlbmRpZgorCisgICAgXyhrb3IpICAgICAg ICAlazEsICVrMiwgJWszCisgICAgXyhrYW5kKSAgICAgICAlazEsICVrMiwgJWs0CisgICAgXyhr YW5kbikgICAgICAlazMsICVrNCwgJWs1CisgICAgXyhreG9yKSAgICAgICAlazEsICVrMiwgJWs2 CisgICAgY2hlY2sgICAgICAgICBrNSwgazYsIF9fTElORV9fCisKKyAgICBfKGtub3QpICAgICAg ICVrNiwgJWszCisgICAgXyhreG5vcikgICAgICAlazEsICVrMiwgJWs0CisgICAgY2hlY2sgICAg ICAgICBrMywgazQsIF9fTElORV9fCisKKyAgICBfKGtzaGlmdGwpICAgICQxLCAlazEsICVrMwor ICAgIF8oa3NoaWZ0bCkgICAgJDIsICVrMywgJWs0CisgICAgXyhrc2hpZnRsKSAgICAkMywgJWsx LCAlazUKKyAgICBjaGVjayAgICAgICAgIGs0LCBrNSwgX19MSU5FX18KKworICAgIF8oa3NoaWZ0 cikgICAgJDEsICVrMSwgJWszCisgICAgXyhrc2hpZnRyKSAgICAkMiwgJWszLCAlazQKKyAgICBf KGtzaGlmdHIpICAgICQzLCAlazEsICVrNQorICAgIGNoZWNrICAgICAgICAgazQsIGs1LCBfX0xJ TkVfXworCisgICAgXyhrb3J0ZXN0KSAgICAlazYsICVrNgorICAgIGpuYmUgICAgICAgICAgMWYK KyAgICBtb3YgICAgICAgICAgICRfX0xJTkVfXywgJWVheAorICAgIHJldAorMToKKworICAgIF8o a3hvcikgICAgICAgJWswLCAlazAsICVrMworICAgIF8oa29ydGVzdCkgICAgJWszLCAlazMKKyAg ICBqeiAgICAgICAgICAgIDFmCisgICAgbW92ICAgICAgICAgICAkX19MSU5FX18sICVlYXgKKyAg ICByZXQKKzE6CisKKyAgICBfKGt4bm9yKSAgICAgICVrMCwgJWswLCAlazMKKyAgICBfKGtvcnRl c3QpICAgICVrMywgJWszCisgICAgamMgICAgICAgICAgICAxZgorICAgIG1vdiAgICAgICAgICAg JF9fTElORV9fLCAlZWF4CisgICAgcmV0CisxOgorCisjaWYgU0laRSA+IDEKKworICAgIF8oa3No aWZ0cikgICAgJFNJWkUqNCwgJWszLCAlazQKKyAgICBXSURFTihrdW5wY2spICVrNCwgJWs0LCAl azUKKyAgICBjaGVjayAgICAgICAgIGszLCBrNSwgX19MSU5FX18KKworI2VuZGlmCisKKyNpZiBT SVpFICE9IDIgfHwgZGVmaW5lZChfX0FWWDUxMkRRX18pCisKKyAgICBfKGthZGQpICAgICAgICVr MSwgJWsxLCAlazMKKyAgICBfKGtzaGlmdGwpICAgICQxLCAlazEsICVrNAorICAgIGNoZWNrICAg ICAgICAgazMsIGs0LCBfX0xJTkVfXworCisgICAgXyhrdGVzdCkgICAgICAlazIsICVrMQorICAg IGpuYmUgICAgICAgICAgMWYKKyAgICBtb3YgICAgICAgICAgICRfX0xJTkVfXywgJWVheAorICAg IHJldAorMToKKworICAgIF8oa3hvcikgICAgICAgJWswLCAlazAsICVrMworICAgIF8oa3Rlc3Qp ICAgICAgJWswLCAlazMKKyAgICBqeiAgICAgICAgICAgIDFmCisgICAgbW92ICAgICAgICAgICAk X19MSU5FX18sICVlYXgKKyAgICByZXQKKzE6CisKKyAgICBfKGt4bm9yKSAgICAgICVrMCwgJWsw LCAlazQKKyAgICBfKGt0ZXN0KSAgICAgICVrMCwgJWs0CisgICAgamMgICAgICAgICAgICAxZgor ICAgIG1vdiAgICAgICAgICAgJF9fTElORV9fLCAlZWF4CisgICAgcmV0CisxOgorCisjZW5kaWYK KworICAgIHhvciAgICAgICAgICAgJWVheCwgJWVheAorICAgIHJldAorCisgICAgLnNlY3Rpb24g LnJvZGF0YSwgImEiLCBAcHJvZ2JpdHMKKyAgICAuYmFsaWduIDgKK2luMTogLmJ5dGUgMGIxMDEx MDAxMSwgMGIxMDAwMTExMSwgMGIwMDAwMTExMSwgMGIxMDAwMDAxMSwgMGIxMTExMDAwMCwgMGIw MDExMTExMSwgMGIxMDAwMDAwMCwgMGIxMTExMTExMQoraW4yOiAuYnl0ZSAwYjExMTExMTExLCAw YjAwMDAwMDAxLCAwYjExMTExMTAwLCAwYjAwMDAxMTExLCAwYjExMDAwMDAxLCAwYjExMTEwMDAw LCAwYjExMTEwMDAxLCAwYjExMDAxMTAxCisKKyAgICAuZGF0YQorICAgIC5iYWxpZ24gOAorb3V0 OiAucXVhZCAwCi0tLSBhL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci90ZXN0X3g4Nl9lbXVsYXRv ci5jCisrKyBiL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci90ZXN0X3g4Nl9lbXVsYXRvci5jCkBA IC0xOCw2ICsxOCw5IEBAIGFzbSAoICIucHVzaHNlY3Rpb24gLnRlc3QsIFwiYXhcIiwgQHByb2cK ICNpbmNsdWRlICJhdngyLmgiCiAjaW5jbHVkZSAiYXZ4Mi1zZy5oIgogI2luY2x1ZGUgInhvcC5o IgorI2luY2x1ZGUgImF2eDUxMmYtb3BtYXNrLmgiCisjaW5jbHVkZSAiYXZ4NTEyZHEtb3BtYXNr LmgiCisjaW5jbHVkZSAiYXZ4NTEyYnctb3BtYXNrLmgiCiAKICNkZWZpbmUgdmVyYm9zZSBmYWxz ZSAvKiBTd2l0Y2ggdG8gdHJ1ZSBmb3IgZmFyIG1vcmUgbG9nZ2luZy4gKi8KIApAQCAtNzgsNiAr ODEsMjQgQEAgc3RhdGljIGJvb2wgc2ltZF9jaGVja194b3Aodm9pZCkKICAgICByZXR1cm4gY3B1 X2hhc194b3A7CiB9CiAKK3N0YXRpYyBib29sIHNpbWRfY2hlY2tfYXZ4NTEyZih2b2lkKQorewor ICAgIHJldHVybiBjcHVfaGFzX2F2eDUxMmY7Cit9CisjZGVmaW5lIHNpbWRfY2hlY2tfYXZ4NTEy Zl9vcG1hc2sgc2ltZF9jaGVja19hdng1MTJmCisKK3N0YXRpYyBib29sIHNpbWRfY2hlY2tfYXZ4 NTEyZHEodm9pZCkKK3sKKyAgICByZXR1cm4gY3B1X2hhc19hdng1MTJkcTsKK30KKyNkZWZpbmUg c2ltZF9jaGVja19hdng1MTJkcV9vcG1hc2sgc2ltZF9jaGVja19hdng1MTJkcQorCitzdGF0aWMg Ym9vbCBzaW1kX2NoZWNrX2F2eDUxMmJ3KHZvaWQpCit7CisgICAgcmV0dXJuIGNwdV9oYXNfYXZ4 NTEyYnc7Cit9CisjZGVmaW5lIHNpbWRfY2hlY2tfYXZ4NTEyYndfb3BtYXNrIHNpbWRfY2hlY2tf YXZ4NTEyYncKKwogc3RhdGljIHZvaWQgc2ltZF9zZXRfcmVncyhzdHJ1Y3QgY3B1X3VzZXJfcmVn cyAqcmVncykKIHsKICAgICBpZiAoIGNwdV9oYXNfbW14ICkKQEAgLTIyMyw2ICsyNDQsMTAgQEAg c3RhdGljIGNvbnN0IHN0cnVjdCB7CiAgICAgU0lNRChYT1AgaTE2eDE2LCAgICAgICAgICAgICAg eG9wLCAgICAgIDMyaTIpLAogICAgIFNJTUQoWE9QIGkzMng4LCAgICAgICAgICAgICAgIHhvcCwg ICAgICAzMmk0KSwKICAgICBTSU1EKFhPUCBpNjR4NCwgICAgICAgICAgICAgICB4b3AsICAgICAg MzJpOCksCisgICAgU0lNRChPUE1BU0svdywgICAgIGF2eDUxMmZfb3BtYXNrLCAgICAgICAgIDIp LAorICAgIFNJTUQoT1BNQVNLL2IsICAgIGF2eDUxMmRxX29wbWFzaywgICAgICAgICAxKSwKKyAg ICBTSU1EKE9QTUFTSy9kLCAgICBhdng1MTJid19vcG1hc2ssICAgICAgICAgNCksCisgICAgU0lN RChPUE1BU0svcSwgICAgYXZ4NTEyYndfb3BtYXNrLCAgICAgICAgIDgpLAogI3VuZGVmIFNJTURf CiAjdW5kZWYgU0lNRAogfTsKQEAgLTM0MjYsOCArMzQ1MSw4IEBAIGludCBtYWluKGludCBhcmdj LCBjaGFyICoqYXJndikKICAgICAgICAgICAgIHJjID0geDg2X2VtdWxhdGUoJmN0eHQsICZlbXVs b3BzKTsKICAgICAgICAgICAgIGlmICggcmMgIT0gWDg2RU1VTF9PS0FZICkKICAgICAgICAgICAg IHsKLSAgICAgICAgICAgICAgICBwcmludGYoImZhaWxlZCBhdCAlJWVpcCA9PSAlMDhseCAob3Bj b2RlICUwOHgpXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZylyZWdz LmVpcCwgY3R4dC5vcGNvZGUpOworICAgICAgICAgICAgICAgIHByaW50ZigiZmFpbGVkICglZCkg YXQgJSVlaXAgPT0gJTA4bHggKG9wY29kZSAlMDh4KVxuIiwKKyAgICAgICAgICAgICAgICAgICAg ICAgcmMsICh1bnNpZ25lZCBsb25nKXJlZ3MuZWlwLCBjdHh0Lm9wY29kZSk7CiAgICAgICAgICAg ICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLS0tIGEvdG9vbHMvdGVz dHMveDg2X2VtdWxhdG9yL3Rlc3RjYXNlLm1rCisrKyBiL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRv ci90ZXN0Y2FzZS5tawpAQCAtMTQsMyArMTQsOSBAQCBhbGw6ICQoVEVTVENBU0UpLmJpbgogCSQo TEQpICQoTERGTEFHU19ESVJFQ1QpIC1OIC1UdGV4dCAweDEwMDAwMCAtbyAkKi50bXAgJCoubwog CSQoT0JKQ09QWSkgLU8gYmluYXJ5ICQqLnRtcCAkQAogCXJtIC1mICQqLnRtcAorCislLW9wbWFz ay5iaW46IG9wbWFzay5TCisJJChDQykgJChmaWx0ZXItb3V0IC1NJSAuJSwkKENGTEFHUykpIC1j ICQ8IC1vICQoYmFzZW5hbWUgJEApLm8KKwkkKExEKSAkKExERkxBR1NfRElSRUNUKSAtTiAtVHRl eHQgMHgxMDAwMDAgLW8gJChiYXNlbmFtZSAkQCkudG1wICQoYmFzZW5hbWUgJEApLm8KKwkkKE9C SkNPUFkpIC1PIGJpbmFyeSAkKGJhc2VuYW1lICRAKS50bXAgJEAKKwlybSAtZiAkKGJhc2VuYW1l ICRAKS50bXAKLS0tIGEvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3g4Ni1lbXVsYXRlLmMKKysr IGIvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3g4Ni1lbXVsYXRlLmMKQEAgLTIwOSw2ICsyMDks OSBAQCBpbnQgZW11bF90ZXN0X2dldF9mcHUoCiAgICAgY2FzZSBYODZFTVVMX0ZQVV95bW06CiAg ICAgICAgIGlmICggY3B1X2hhc19hdnggKQogICAgICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBY ODZFTVVMX0ZQVV9vcG1hc2s6CisgICAgICAgIGlmICggY3B1X2hhc19hdng1MTJmICkKKyAgICAg ICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBYODZFTVVMX1VOSEFO RExFQUJMRTsKICAgICB9Ci0tLSBhL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci94ODYtZW11bGF0 ZS5oCisrKyBiL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci94ODYtZW11bGF0ZS5oCkBAIC0yMzYs NiArMjM2LDM2IEBAIHN0YXRpYyBpbmxpbmUgdWludDY0X3QgeGdldGJ2KHVpbnQzMl90IHgKICAg ICAocmVzLmMgJiAoMVUgPDwgMjEpKSAhPSAwOyBcCiB9KQogCisjZGVmaW5lIGNwdV9oYXNfYXZ4 NTEyZiAoeyBcCisgICAgc3RydWN0IGNwdWlkX2xlYWYgcmVzOyBcCisgICAgZW11bF90ZXN0X2Nw dWlkKDEsIDAsICZyZXMsIE5VTEwpOyBcCisgICAgaWYgKCAhKHJlcy5jICYgKDFVIDw8IDI3KSkg fHwgKCh4Z2V0YnYoMCkgJiAweGU2KSAhPSAweGU2KSApIFwKKyAgICAgICAgcmVzLmIgPSAwOyBc CisgICAgZWxzZSBcCisgICAgICAgIGVtdWxfdGVzdF9jcHVpZCg3LCAwLCAmcmVzLCBOVUxMKTsg XAorICAgIChyZXMuYiAmICgxVSA8PCAxNikpICE9IDA7IFwKK30pCisKKyNkZWZpbmUgY3B1X2hh c19hdng1MTJkcSAoeyBcCisgICAgc3RydWN0IGNwdWlkX2xlYWYgcmVzOyBcCisgICAgZW11bF90 ZXN0X2NwdWlkKDEsIDAsICZyZXMsIE5VTEwpOyBcCisgICAgaWYgKCAhKHJlcy5jICYgKDFVIDw8 IDI3KSkgfHwgKCh4Z2V0YnYoMCkgJiAweGU2KSAhPSAweGU2KSApIFwKKyAgICAgICAgcmVzLmIg PSAwOyBcCisgICAgZWxzZSBcCisgICAgICAgIGVtdWxfdGVzdF9jcHVpZCg3LCAwLCAmcmVzLCBO VUxMKTsgXAorICAgIChyZXMuYiAmICgxVSA8PCAxNykpICE9IDA7IFwKK30pCisKKyNkZWZpbmUg Y3B1X2hhc19hdng1MTJidyAoeyBcCisgICAgc3RydWN0IGNwdWlkX2xlYWYgcmVzOyBcCisgICAg ZW11bF90ZXN0X2NwdWlkKDEsIDAsICZyZXMsIE5VTEwpOyBcCisgICAgaWYgKCAhKHJlcy5jICYg KDFVIDw8IDI3KSkgfHwgKCh4Z2V0YnYoMCkgJiAweGU2KSAhPSAweGU2KSApIFwKKyAgICAgICAg cmVzLmIgPSAwOyBcCisgICAgZWxzZSBcCisgICAgICAgIGVtdWxfdGVzdF9jcHVpZCg3LCAwLCAm cmVzLCBOVUxMKTsgXAorICAgIChyZXMuYiAmICgxVSA8PCAzMCkpICE9IDA7IFwKK30pCisKIGlu dCBlbXVsX3Rlc3RfY3B1aWQoCiAgICAgdWludDMyX3QgbGVhZiwKICAgICB1aW50MzJfdCBzdWJs ZWFmLAotLS0gYS94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYworKysgYi94 ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuYwpAQCAtNDkxLDYgKzQ5MSw3IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXh0MGYzYV90YWJsZSB7CiAgICAgWzB4MjBdID0geyAuc2lt ZF9zaXplID0gc2ltZF9ub25lIH0sCiAgICAgWzB4MjFdID0geyAuc2ltZF9zaXplID0gc2ltZF9v dGhlciB9LAogICAgIFsweDIyXSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfbm9uZSB9LAorICAgIFsw eDMwIC4uLiAweDMzXSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfb3RoZXIsIC50d29fb3AgPSAxIH0s CiAgICAgWzB4MzhdID0geyAuc2ltZF9zaXplID0gc2ltZF8xMjggfSwKICAgICBbMHgzOV0gPSB7 IC5zaW1kX3NpemUgPSBzaW1kXzEyOCwgLnRvX21lbSA9IDEsIC50d29fb3AgPSAxIH0sCiAgICAg WzB4NDAgLi4uIDB4NDFdID0geyAuc2ltZF9zaXplID0gc2ltZF9wYWNrZWRfZnAgfSwKQEAgLTEx ODcsNiArMTE4OCwxMSBAQCBzdGF0aWMgaW50IF9nZXRfZnB1KAogICAgICAgICAgICAgcmV0dXJu IFg4NkVNVUxfVU5IQU5ETEVBQkxFOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgWDg2RU1V TF9GUFVfb3BtYXNrOgorICAgICAgICBpZiAoICEoeGNyMCAmIFg4Nl9YQ1IwX1NTRSkgfHwgISh4 Y3IwICYgWDg2X1hDUjBfT1BNQVNLKSApCisgICAgICAgICAgICByZXR1cm4gWDg2RU1VTF9VTkhB TkRMRUFCTEU7CisgICAgICAgIGJyZWFrOworCiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7 CiAgICAgfQpAQCAtMTc2MiwxMiArMTc2OCwxNSBAQCBzdGF0aWMgYm9vbCB2Y3B1X2hhcygKICNk ZWZpbmUgdmNwdV9oYXNfYm1pMigpICAgICAgICB2Y3B1X2hhcyggICAgICAgICA3LCBFQlgsICA4 LCBjdHh0LCBvcHMpCiAjZGVmaW5lIHZjcHVfaGFzX3J0bSgpICAgICAgICAgdmNwdV9oYXMoICAg ICAgICAgNywgRUJYLCAxMSwgY3R4dCwgb3BzKQogI2RlZmluZSB2Y3B1X2hhc19tcHgoKSAgICAg ICAgIHZjcHVfaGFzKCAgICAgICAgIDcsIEVCWCwgMTQsIGN0eHQsIG9wcykKKyNkZWZpbmUgdmNw dV9oYXNfYXZ4NTEyZigpICAgICB2Y3B1X2hhcyggICAgICAgICA3LCBFQlgsIDE2LCBjdHh0LCBv cHMpCisjZGVmaW5lIHZjcHVfaGFzX2F2eDUxMmRxKCkgICAgdmNwdV9oYXMoICAgICAgICAgNywg RUJYLCAxNywgY3R4dCwgb3BzKQogI2RlZmluZSB2Y3B1X2hhc19yZHNlZWQoKSAgICAgIHZjcHVf aGFzKCAgICAgICAgIDcsIEVCWCwgMTgsIGN0eHQsIG9wcykKICNkZWZpbmUgdmNwdV9oYXNfYWR4 KCkgICAgICAgICB2Y3B1X2hhcyggICAgICAgICA3LCBFQlgsIDE5LCBjdHh0LCBvcHMpCiAjZGVm aW5lIHZjcHVfaGFzX3NtYXAoKSAgICAgICAgdmNwdV9oYXMoICAgICAgICAgNywgRUJYLCAyMCwg Y3R4dCwgb3BzKQogI2RlZmluZSB2Y3B1X2hhc19jbGZsdXNob3B0KCkgIHZjcHVfaGFzKCAgICAg ICAgIDcsIEVCWCwgMjMsIGN0eHQsIG9wcykKICNkZWZpbmUgdmNwdV9oYXNfY2x3YigpICAgICAg ICB2Y3B1X2hhcyggICAgICAgICA3LCBFQlgsIDI0LCBjdHh0LCBvcHMpCiAjZGVmaW5lIHZjcHVf aGFzX3NoYSgpICAgICAgICAgdmNwdV9oYXMoICAgICAgICAgNywgRUJYLCAyOSwgY3R4dCwgb3Bz KQorI2RlZmluZSB2Y3B1X2hhc19hdng1MTJidygpICAgIHZjcHVfaGFzKCAgICAgICAgIDcsIEVC WCwgMzAsIGN0eHQsIG9wcykKICNkZWZpbmUgdmNwdV9oYXNfcmRwaWQoKSAgICAgICB2Y3B1X2hh cyggICAgICAgICA3LCBFQ1gsIDIyLCBjdHh0LCBvcHMpCiAjZGVmaW5lIHZjcHVfaGFzX2NsemVy bygpICAgICAgdmNwdV9oYXMoMHg4MDAwMDAwOCwgRUJYLCAgMCwgY3R4dCwgb3BzKQogCkBAIC0y Mzk2LDYgKzI0MDUsMTggQEAgeDg2X2RlY29kZV90d29ieXRlKAogICAgICAgICB9CiAgICAgICAg IGJyZWFrOwogCisgICAgY2FzZSBYODZFTVVMX09QQ19WRVgoMCwgMHg5MCk6ICAgIC8qIGttb3Z7 dyxxfSAqLworICAgIGNhc2UgWDg2RU1VTF9PUENfVkVYXzY2KDAsIDB4OTApOiAvKiBrbW92e2Is ZH0gKi8KKyAgICAgICAgc3RhdGUtPmRlc2MgPSBEc3RSZWcgfCBTcmNNZW0gfCBNb3Y7CisgICAg ICAgIHN0YXRlLT5zaW1kX3NpemUgPSBzaW1kX290aGVyOworICAgICAgICBicmVhazsKKworICAg IGNhc2UgWDg2RU1VTF9PUENfVkVYKDAsIDB4OTEpOiAgICAvKiBrbW92e3cscX0gKi8KKyAgICBj YXNlIFg4NkVNVUxfT1BDX1ZFWF82NigwLCAweDkxKTogLyoga21vdntiLGR9ICovCisgICAgICAg IHN0YXRlLT5kZXNjID0gRHN0TWVtIHwgU3JjUmVnIHwgTW92OworICAgICAgICBzdGF0ZS0+c2lt ZF9zaXplID0gc2ltZF9vdGhlcjsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIDB4YWU6CiAg ICAgICAgIGN0eHQtPm9wY29kZSB8PSBNQVNLX0lOU1IodmV4LnBmeCwgWDg2RU1VTF9PUENfUEZY X01BU0spOwogICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KQEAgLTYwMDIsNiArNjAyMyw2MCBA QCB4ODZfZW11bGF0ZSgKICAgICAgICAgICAgIGRzdC52YWwgPSBzcmMudmFsOwogICAgICAgICBi cmVhazsKIAorICAgIGNhc2UgWDg2RU1VTF9PUENfVkVYKDB4MGYsIDB4NGEpOiAgICAvKiBrYWRk e3cscX0gayxrLGsgKi8KKyAgICAgICAgaWYgKCAhdmV4LncgKQorICAgICAgICAgICAgaG9zdF9h bmRfdmNwdV9tdXN0X2hhdmUoYXZ4NTEyZHEpOworICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8K KyAgICBjYXNlIFg4NkVNVUxfT1BDX1ZFWCgweDBmLCAweDQxKTogICAgLyoga2FuZHt3LHF9IGss ayxrICovCisgICAgY2FzZSBYODZFTVVMX09QQ19WRVhfNjYoMHgwZiwgMHg0MSk6IC8qIGthbmR7 YixkfSBrLGssayAqLworICAgIGNhc2UgWDg2RU1VTF9PUENfVkVYKDB4MGYsIDB4NDIpOiAgICAv KiBrYW5kbnt3LHF9IGssayxrICovCisgICAgY2FzZSBYODZFTVVMX09QQ19WRVhfNjYoMHgwZiwg MHg0Mik6IC8qIGthbmRue2IsZH0gayxrLGsgKi8KKyAgICBjYXNlIFg4NkVNVUxfT1BDX1ZFWCgw eDBmLCAweDQ1KTogICAgLyoga29ye3cscX0gayxrLGsgKi8KKyAgICBjYXNlIFg4NkVNVUxfT1BD X1ZFWF82NigweDBmLCAweDQ1KTogLyoga29ye2IsZH0gayxrLGsgKi8KKyAgICBjYXNlIFg4NkVN VUxfT1BDX1ZFWCgweDBmLCAweDQ2KTogICAgLyoga3hub3J7dyxxfSBrLGssayAqLworICAgIGNh c2UgWDg2RU1VTF9PUENfVkVYXzY2KDB4MGYsIDB4NDYpOiAvKiBreG5vcntiLGR9IGssayxrICov CisgICAgY2FzZSBYODZFTVVMX09QQ19WRVgoMHgwZiwgMHg0Nyk6ICAgIC8qIGt4b3J7dyxxfSBr LGssayAqLworICAgIGNhc2UgWDg2RU1VTF9PUENfVkVYXzY2KDB4MGYsIDB4NDcpOiAvKiBreG9y e2IsZH0gayxrLGsgKi8KKyAgICBjYXNlIFg4NkVNVUxfT1BDX1ZFWF82NigweDBmLCAweDRhKTog Lyoga2FkZHtiLGR9IGssayxrICovCisgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZighdmV4 LmwsIEVYQ19VRCk7CisgICAgb3BtYXNrX2Jhc2ljOgorICAgICAgICBpZiAoIHZleC53ICkKKyAg ICAgICAgICAgIGhvc3RfYW5kX3ZjcHVfbXVzdF9oYXZlKGF2eDUxMmJ3KTsKKyAgICAgICAgZWxz ZSBpZiAoIHZleC5wZnggKQorICAgICAgICAgICAgaG9zdF9hbmRfdmNwdV9tdXN0X2hhdmUoYXZ4 NTEyZHEpOworICAgIG9wbWFza19jb21tb246CisgICAgICAgIGhvc3RfYW5kX3ZjcHVfbXVzdF9o YXZlKGF2eDUxMmYpOworICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYoIXZleC5yIHx8ICht b2RlXzY0Yml0KCkgJiYgISh2ZXgucmVnICYgOCkpIHx8CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBlYS50eXBlICE9IE9QX1JFRywgRVhDX1VEKTsKKworICAgICAgICB2ZXgucmVnIHw9 IDg7CisgICAgICAgIGQgJj0gflR3b09wOworCisgICAgICAgIGdldF9mcHUoWDg2RU1VTF9GUFVf b3BtYXNrKTsKKworICAgICAgICBvcGMgPSBpbml0X3ByZWZpeGVzKHN0dWIpOworICAgICAgICBv cGNbMF0gPSBiOworICAgICAgICBvcGNbMV0gPSBtb2RybTsKKyAgICAgICAgaW5zbl9ieXRlcyA9 IFBGWF9CWVRFUyArIDI7CisKKyAgICAgICAgc3RhdGUtPnNpbWRfc2l6ZSA9IHNpbWRfb3RoZXI7 CisgICAgICAgIG9wX2J5dGVzID0gMTsgLyogQW55IG5vbi16ZXJvIHZhbHVlIHdpbGwgZG8uICov CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBYODZFTVVMX09QQ19WRVgoMHgwZiwgMHg0NCk6 ICAgIC8qIGtub3R7dyxxfSBrLGsgKi8KKyAgICBjYXNlIFg4NkVNVUxfT1BDX1ZFWF82NigweDBm LCAweDQ0KTogLyoga25vdHtiLGR9IGssayAqLworICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25f aWYodmV4LmwgfHwgdmV4LnJlZyAhPSAweGYsIEVYQ19VRCk7CisgICAgICAgIGdvdG8gb3BtYXNr X2Jhc2ljOworCisgICAgY2FzZSBYODZFTVVMX09QQ19WRVgoMHgwZiwgMHg0Yik6ICAgIC8qIGt1 bnBja3t3LGR9e2QscX0gayxrLGsgKi8KKyAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKCF2 ZXgubCwgRVhDX1VEKTsKKyAgICAgICAgaG9zdF9hbmRfdmNwdV9tdXN0X2hhdmUoYXZ4NTEyYncp OworICAgICAgICBnb3RvIG9wbWFza19jb21tb247CisKKyAgICBjYXNlIFg4NkVNVUxfT1BDX1ZF WF82NigweDBmLCAweDRiKTogLyoga3VucGNrYncgayxrLGsgKi8KKyAgICAgICAgZ2VuZXJhdGVf ZXhjZXB0aW9uX2lmKCF2ZXgubCB8fCB2ZXgudywgRVhDX1VEKTsKKyAgICAgICAgZ290byBvcG1h c2tfY29tbW9uOworCiAgICAgQ0FTRV9TSU1EX1BBQ0tFRF9GUCgsIDB4MGYsIDB4NTApOiAgICAg LyogbW92bXNrcHtzLGR9IHhtbSxyZWcgKi8KICAgICBDQVNFX1NJTURfUEFDS0VEX0ZQKF9WRVgs IDB4MGYsIDB4NTApOiAvKiB2bW92bXNrcHtzLGR9IHt4LHl9bW0scmVnICovCiAgICAgQ0FTRV9T SU1EX1BBQ0tFRF9JTlQoMHgwZiwgMHhkNyk6ICAgICAgLyogcG1vdm1za2Igeyx4fW1tLHJlZyAq LwpAQCAtNjU1Miw2ICs2NjI3LDE1NCBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgZHN0LnZhbCA9 IHRlc3RfY2MoYiwgX3JlZ3MuZWZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFg4 NkVNVUxfT1BDX1ZFWCgweDBmLCAweDkxKTogICAgLyoga21vdnt3LHF9IGssbWVtICovCisgICAg Y2FzZSBYODZFTVVMX09QQ19WRVhfNjYoMHgwZiwgMHg5MSk6IC8qIGttb3Z7YixkfSBrLG1lbSAq LworICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYoZWEudHlwZSAhPSBPUF9NRU0sIEVYQ19V RCk7CisgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLworICAgIGNhc2UgWDg2RU1VTF9PUENfVkVY KDB4MGYsIDB4OTApOiAgICAvKiBrbW92e3cscX0gay9tZW0sayAqLworICAgIGNhc2UgWDg2RU1V TF9PUENfVkVYXzY2KDB4MGYsIDB4OTApOiAvKiBrbW92e2IsZH0gay9tZW0sayAqLworICAgICAg ICBnZW5lcmF0ZV9leGNlcHRpb25faWYodmV4LmwgfHwgIXZleC5yLCBFWENfVUQpOworICAgICAg ICBob3N0X2FuZF92Y3B1X211c3RfaGF2ZShhdng1MTJmKTsKKyAgICAgICAgaWYgKCB2ZXgudyAp CisgICAgICAgIHsKKyAgICAgICAgICAgIGhvc3RfYW5kX3ZjcHVfbXVzdF9oYXZlKGF2eDUxMmJ3 KTsKKyAgICAgICAgICAgIG9wX2J5dGVzID0gNCA8PCAhdmV4LnBmeDsKKyAgICAgICAgfQorICAg ICAgICBlbHNlIGlmICggdmV4LnBmeCApCisgICAgICAgIHsKKyAgICAgICAgICAgIGhvc3RfYW5k X3ZjcHVfbXVzdF9oYXZlKGF2eDUxMmRxKTsKKyAgICAgICAgICAgIG9wX2J5dGVzID0gMTsKKyAg ICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBvcF9ieXRlcyA9IDI7CisKKyAgICAg ICAgZ2V0X2ZwdShYODZFTVVMX0ZQVV9vcG1hc2spOworCisgICAgICAgIG9wYyA9IGluaXRfcHJl Zml4ZXMoc3R1Yik7CisgICAgICAgIG9wY1swXSA9IGI7CisgICAgICAgIG9wY1sxXSA9IG1vZHJt OworICAgICAgICBpZiAoIGVhLnR5cGUgPT0gT1BfTUVNICkKKyAgICAgICAgeworICAgICAgICAg ICAgLyogY29udmVydCBtZW1vcnkgb3BlcmFuZCB0byAoJXJBWCkgKi8KKyAgICAgICAgICAgIHZl eC5iID0gMTsKKyAgICAgICAgICAgIG9wY1sxXSAmPSAweDM4OworICAgICAgICB9CisgICAgICAg IGluc25fYnl0ZXMgPSBQRlhfQllURVMgKyAyOworICAgICAgICBicmVhazsKKworICAgIGNhc2Ug WDg2RU1VTF9PUENfVkVYKDB4MGYsIDB4OTIpOiAgICAvKiBrbW92dyByMzIsayAqLworICAgIGNh c2UgWDg2RU1VTF9PUENfVkVYXzY2KDB4MGYsIDB4OTIpOiAvKiBrbW92YiByMzIsayAqLworICAg IGNhc2UgWDg2RU1VTF9PUENfVkVYX0YyKDB4MGYsIDB4OTIpOiAvKiBrbW92e2QscX0gcmVnLGsg Ki8KKyAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKHZleC5sIHx8ICF2ZXguciB8fCB2ZXgu cmVnICE9IDB4ZiB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWEudHlwZSAhPSBP UF9SRUcsIEVYQ19VRCk7CisKKyAgICAgICAgaG9zdF9hbmRfdmNwdV9tdXN0X2hhdmUoYXZ4NTEy Zik7CisgICAgICAgIGlmICggdmV4LnBmeCA9PSB2ZXhfZjIgKQorICAgICAgICAgICAgaG9zdF9h bmRfdmNwdV9tdXN0X2hhdmUoYXZ4NTEyYncpOworICAgICAgICBlbHNlCisgICAgICAgIHsKKyAg ICAgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZih2ZXgudywgRVhDX1VEKTsKKyAgICAgICAg ICAgIGlmICggdmV4LnBmeCApCisgICAgICAgICAgICAgICAgaG9zdF9hbmRfdmNwdV9tdXN0X2hh dmUoYXZ4NTEyZHEpOworICAgICAgICB9CisKKyAgICAgICAgZ2V0X2ZwdShYODZFTVVMX0ZQVV9v cG1hc2spOworCisgICAgICAgIG9wYyA9IGluaXRfcHJlZml4ZXMoc3R1Yik7CisgICAgICAgIG9w Y1swXSA9IGI7CisgICAgICAgIC8qIENvbnZlcnQgR1BSIHNvdXJjZSB0byAlckFYLiAqLworICAg ICAgICB2ZXguYiA9IDE7CisgICAgICAgIGlmICggIW1vZGVfNjRiaXQoKSApCisgICAgICAgICAg ICB2ZXgudyA9IDA7CisgICAgICAgIG9wY1sxXSA9IG1vZHJtICYgMHhmODsKKyAgICAgICAgb3Bj WzJdID0gMHhjMzsKKworICAgICAgICBjb3B5X1ZFWChvcGMsIHZleCk7CisgICAgICAgIGVhLnJl ZyA9IGRlY29kZV9ncHIoJl9yZWdzLCBtb2RybV9ybSk7CisgICAgICAgIGludm9rZV9zdHViKCIi LCAiIiwgIj1tIiAoZHVtbXkpIDogImEiICgqZWEucmVnKSk7CisKKyAgICAgICAgcHV0X3N0dWIo c3R1Yik7CisKKyAgICAgICAgQVNTRVJUKCFzdGF0ZS0+c2ltZF9zaXplKTsKKyAgICAgICAgZHN0 LnR5cGUgPSBPUF9OT05FOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgWDg2RU1VTF9PUENf VkVYKDB4MGYsIDB4OTMpOiAgICAvKiBrbW92dyBrLHIzMiAqLworICAgIGNhc2UgWDg2RU1VTF9P UENfVkVYXzY2KDB4MGYsIDB4OTMpOiAvKiBrbW92YiBrLHIzMiAqLworICAgIGNhc2UgWDg2RU1V TF9PUENfVkVYX0YyKDB4MGYsIDB4OTMpOiAvKiBrbW92e2QscX0gayxyZWcgKi8KKyAgICAgICAg Z2VuZXJhdGVfZXhjZXB0aW9uX2lmKHZleC5sIHx8IHZleC5yZWcgIT0gMHhmIHx8IGVhLnR5cGUg IT0gT1BfUkVHLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhDX1VEKTsKKyAgICAg ICAgZHN0ID0gZWE7CisgICAgICAgIGRzdC5yZWcgPSBkZWNvZGVfZ3ByKCZfcmVncywgbW9kcm1f cmVnKTsKKworICAgICAgICBob3N0X2FuZF92Y3B1X211c3RfaGF2ZShhdng1MTJmKTsKKyAgICAg ICAgaWYgKCB2ZXgucGZ4ID09IHZleF9mMiApCisgICAgICAgIHsKKyAgICAgICAgICAgIGhvc3Rf YW5kX3ZjcHVfbXVzdF9oYXZlKGF2eDUxMmJ3KTsKKyAgICAgICAgICAgIGRzdC5ieXRlcyA9IDQg PDwgKG1vZGVfNjRiaXQoKSAmJiB2ZXgudyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAg ICAgICB7CisgICAgICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYodmV4LncsIEVYQ19VRCk7 CisgICAgICAgICAgICBkc3QuYnl0ZXMgPSA0OworICAgICAgICAgICAgaWYgKCB2ZXgucGZ4ICkK KyAgICAgICAgICAgICAgICBob3N0X2FuZF92Y3B1X211c3RfaGF2ZShhdng1MTJkcSk7CisgICAg ICAgIH0KKworICAgICAgICBnZXRfZnB1KFg4NkVNVUxfRlBVX29wbWFzayk7CisKKyAgICAgICAg b3BjID0gaW5pdF9wcmVmaXhlcyhzdHViKTsKKyAgICAgICAgb3BjWzBdID0gYjsKKyAgICAgICAg LyogQ29udmVydCBHUFIgZGVzdGluYXRpb24gdG8gJXJBWC4gKi8KKyAgICAgICAgdmV4LnIgPSAx OworICAgICAgICBpZiAoICFtb2RlXzY0Yml0KCkgKQorICAgICAgICAgICAgdmV4LncgPSAwOwor ICAgICAgICBvcGNbMV0gPSBtb2RybSAmIDB4Yzc7CisgICAgICAgIG9wY1syXSA9IDB4YzM7CisK KyAgICAgICAgY29weV9WRVgob3BjLCB2ZXgpOworICAgICAgICBpbnZva2Vfc3R1YigiIiwgIiIs ICI9YSIgKGRzdC52YWwpIDogW2R1bW15XSAiaSIgKDApKTsKKworICAgICAgICBwdXRfc3R1Yihz dHViKTsKKworICAgICAgICBBU1NFUlQoIXN0YXRlLT5zaW1kX3NpemUpOworICAgICAgICBicmVh azsKKworICAgIGNhc2UgWDg2RU1VTF9PUENfVkVYKDB4MGYsIDB4OTkpOiAgICAvKiBrdGVzdHt3 LHF9IGssayAqLworICAgICAgICBpZiAoICF2ZXgudyApCisgICAgICAgICAgICBob3N0X2FuZF92 Y3B1X211c3RfaGF2ZShhdng1MTJkcSk7CisgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLworICAg IGNhc2UgWDg2RU1VTF9PUENfVkVYKDB4MGYsIDB4OTgpOiAgICAvKiBrb3J0ZXN0e3cscX0gayxr ICovCisgICAgY2FzZSBYODZFTVVMX09QQ19WRVhfNjYoMHgwZiwgMHg5OCk6IC8qIGtvcnRlc3R7 YixkfSBrLGsgKi8KKyAgICBjYXNlIFg4NkVNVUxfT1BDX1ZFWF82NigweDBmLCAweDk5KTogLyog a3Rlc3R7YixkfSBrLGsgKi8KKyAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKHZleC5sIHx8 ICF2ZXguciB8fCB2ZXgucmVnICE9IDB4ZiB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZWEudHlwZSAhPSBPUF9SRUcsIEVYQ19VRCk7CisgICAgICAgIGhvc3RfYW5kX3ZjcHVfbXVz dF9oYXZlKGF2eDUxMmYpOworICAgICAgICBpZiAoIHZleC53ICkKKyAgICAgICAgICAgIGhvc3Rf YW5kX3ZjcHVfbXVzdF9oYXZlKGF2eDUxMmJ3KTsKKyAgICAgICAgZWxzZSBpZiAoIHZleC5wZngg KQorICAgICAgICAgICAgaG9zdF9hbmRfdmNwdV9tdXN0X2hhdmUoYXZ4NTEyZHEpOworCisgICAg ICAgIGdldF9mcHUoWDg2RU1VTF9GUFVfb3BtYXNrKTsKKworICAgICAgICBvcGMgPSBpbml0X3By ZWZpeGVzKHN0dWIpOworICAgICAgICBvcGNbMF0gPSBiOworICAgICAgICBvcGNbMV0gPSBtb2Ry bTsKKyAgICAgICAgb3BjWzJdID0gMHhjMzsKKworICAgICAgICBjb3B5X1ZFWChvcGMsIHZleCk7 CisgICAgICAgIGludm9rZV9zdHViKF9QUkVfRUZMQUdTKCJbZWZsYWdzXSIsICJbbWFza10iLCAi W3RtcF0iKSwKKyAgICAgICAgICAgICAgICAgICAgX1BPU1RfRUZMQUdTKCJbZWZsYWdzXSIsICJb bWFza10iLCAiW3RtcF0iKSwKKyAgICAgICAgICAgICAgICAgICAgW2VmbGFnc10gIitnIiAoX3Jl Z3MuZWZsYWdzKSwKKyAgICAgICAgICAgICAgICAgICAgIj1hIiAoZHN0LnZhbCksIFt0bXBdICI9 JnIiIChkdW1teSkKKyAgICAgICAgICAgICAgICAgICAgOiBbbWFza10gImkiIChFRkxBR1NfTUFT SykpOworCisgICAgICAgIHB1dF9zdHViKHN0dWIpOworCisgICAgICAgIEFTU0VSVCghc3RhdGUt PnNpbWRfc2l6ZSk7CisgICAgICAgIGRzdC50eXBlID0gT1BfTk9ORTsKKyAgICAgICAgYnJlYWs7 CisKICAgICBjYXNlIFg4NkVNVUxfT1BDKDB4MGYsIDB4YTIpOiAvKiBjcHVpZCAqLwogICAgICAg ICBtc3JfdmFsID0gMDsKICAgICAgICAgZmFpbF9pZihvcHMtPmNwdWlkID09IE5VTEwpOwpAQCAt ODE3MCw2ICs4MzkzLDIzIEBAIHg4Nl9lbXVsYXRlKAogICAgICAgICBnZW5lcmF0ZV9leGNlcHRp b25faWYodmV4LmwsIEVYQ19VRCk7CiAgICAgICAgIGdvdG8gc2ltZF8wZl9pbW04X2F2eDsKIAor ICAgIGNhc2UgWDg2RU1VTF9PUENfVkVYXzY2KDB4MGYzYSwgMHgzMCk6IC8qIGtzaGlmdHJ7Yix3 fSAkaW1tOCxrLGsgKi8KKyAgICBjYXNlIFg4NkVNVUxfT1BDX1ZFWF82NigweDBmM2EsIDB4MzIp OiAvKiBrc2hpZnRse2Isd30gJGltbTgsayxrICovCisgICAgICAgIGlmICggIXZleC53ICkKKyAg ICAgICAgICAgIGhvc3RfYW5kX3ZjcHVfbXVzdF9oYXZlKGF2eDUxMmRxKTsKKyAgICBvcG1hc2tf c2hpZnRfaW1tOgorICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYodmV4LmwgfHwgIXZleC5y IHx8IHZleC5yZWcgIT0gMHhmIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYS50 eXBlICE9IE9QX1JFRywgRVhDX1VEKTsKKyAgICAgICAgaG9zdF9hbmRfdmNwdV9tdXN0X2hhdmUo YXZ4NTEyZik7CisgICAgICAgIGdldF9mcHUoWDg2RU1VTF9GUFVfb3BtYXNrKTsKKyAgICAgICAg b3BfYnl0ZXMgPSAxOyAvKiBBbnkgbm9uLXplcm8gdmFsdWUgd2lsbCBkby4gKi8KKyAgICAgICAg Z290byBzaW1kXzBmX2ltbTg7CisKKyAgICBjYXNlIFg4NkVNVUxfT1BDX1ZFWF82NigweDBmM2Es IDB4MzEpOiAvKiBrc2hpZnRye2QscX0gJGltbTgsayxrICovCisgICAgY2FzZSBYODZFTVVMX09Q Q19WRVhfNjYoMHgwZjNhLCAweDMzKTogLyoga3NoaWZ0bHtkLHF9ICRpbW04LGssayAqLworICAg ICAgICBob3N0X2FuZF92Y3B1X211c3RfaGF2ZShhdng1MTJidyk7CisgICAgICAgIGdvdG8gb3Bt YXNrX3NoaWZ0X2ltbTsKKwogICAgIGNhc2UgWDg2RU1VTF9PUENfNjYoMHgwZjNhLCAweDQ0KTog ICAgIC8qIHBjbG11bHFkcSAkaW1tOCx4bW0vbTEyOCx4bW0gKi8KICAgICBjYXNlIFg4NkVNVUxf T1BDX1ZFWF82NigweDBmM2EsIDB4NDQpOiAvKiB2cGNsbXVscWRxICRpbW04LHhtbS9tMTI4LHht bSx4bW0gKi8KICAgICAgICAgaG9zdF9hbmRfdmNwdV9tdXN0X2hhdmUocGNsbXVscWRxKTsKLS0t IGEveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmgKKysrIGIveGVuL2FyY2gv eDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmgKQEAgLTE3MCw2ICsxNzAsNyBAQCBlbnVtIHg4 Nl9lbXVsYXRlX2ZwdV90eXBlIHsKICAgICBYODZFTVVMX0ZQVV9tbXgsIC8qIE1NWCBpbnN0cnVj dGlvbiBzZXQgKCVtbTAtJW1tNykgKi8KICAgICBYODZFTVVMX0ZQVV94bW0sIC8qIFNTRSBpbnN0 cnVjdGlvbiBzZXQgKCV4bW0wLSV4bW03LzE1KSAqLwogICAgIFg4NkVNVUxfRlBVX3ltbSwgLyog QVZYL1hPUCBpbnN0cnVjdGlvbiBzZXQgKCV5bW0wLSV5bW03LzE1KSAqLworICAgIFg4NkVNVUxf RlBVX29wbWFzaywgLyogQVZYNTEyIG9wbWFzayBpbnN0cnVjdGlvbiBzZXQgKCVrMC0lazcpICov CiAgICAgLyogVGhpcyBzZW50aW5lbCB3aWxsIG5ldmVyIGJlIHBhc3NlZCB0byAtPmdldF9mcHUo KS4gKi8KICAgICBYODZFTVVMX0ZQVV9ub25lCiB9OwotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2 L2NwdWZlYXR1cmUuaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2NwdWZlYXR1cmUuaApAQCAt OTksOSArOTksMTIgQEAKICNkZWZpbmUgY3B1X2hhc19ydG0gICAgICAgICAgICAgYm9vdF9jcHVf aGFzKFg4Nl9GRUFUVVJFX1JUTSkKICNkZWZpbmUgY3B1X2hhc19mcHVfc2VsICAgICAgICAgKCFi b290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfTk9fRlBVX1NFTCkpCiAjZGVmaW5lIGNwdV9oYXNfbXB4 ICAgICAgICAgICAgIGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9NUFgpCisjZGVmaW5lIGNwdV9o YXNfYXZ4NTEyZiAgICAgICAgIGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9BVlg1MTJGKQorI2Rl ZmluZSBjcHVfaGFzX2F2eDUxMmRxICAgICAgICBib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfQVZY NTEyRFEpCiAjZGVmaW5lIGNwdV9oYXNfcmRzZWVkICAgICAgICAgIGJvb3RfY3B1X2hhcyhYODZf RkVBVFVSRV9SRFNFRUQpCiAjZGVmaW5lIGNwdV9oYXNfc21hcCAgICAgICAgICAgIGJvb3RfY3B1 X2hhcyhYODZfRkVBVFVSRV9TTUFQKQogI2RlZmluZSBjcHVfaGFzX3NoYSAgICAgICAgICAgICBi b290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfU0hBKQorI2RlZmluZSBjcHVfaGFzX2F2eDUxMmJ3ICAg ICAgICBib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfQVZYNTEyQlcpCiAKIC8qIENQVUlEIGxldmVs IDB4ODAwMDAwMDcuZWR4ICovCiAjZGVmaW5lIGNwdV9oYXNfaXRzYyAgICAgICAgICAgIGJvb3Rf Y3B1X2hhcyhYODZfRkVBVFVSRV9JVFNDKQoKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlz dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xp c3RpbmZvL3hlbi1kZXZlbA==