From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH v2 01/17] x86emul: support remaining AVX insns Date: Thu, 14 Sep 2017 09:12:19 -0600 Message-ID: <59BAB873020000780017B379@prv-mh.provo.novell.com> References: <59BAB38A020000780017B34E@prv-mh.provo.novell.com> <59BAB38A020000780017B34E@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dsVoZ-0002ET-Fv for xen-devel@lists.xenproject.org; Thu, 14 Sep 2017 15:12:27 +0000 In-Reply-To: <59BAB38A020000780017B34E@prv-mh.provo.novell.com> Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel Cc: George Dunlap , Andrew Cooper List-Id: xen-devel@lists.xenproject.org SS5lLiB0aG9zZSBub3QgYmVpbmcgZXF1aXZhbGVudHMgb2YgU1NFbiBvbmVzLgoKVGhlcmUncyBv bmUgbmVjZXNzYXJ5IGNoYW5nZSB0byBnZW5lcmljIGNvZGU6IEZhdWx0aW5nIGJlaGF2aW9yIG9m ClZNQVNLTU9WUHtTLER9IHJlcXVpcmVzIHVzIHRvIGRvIHBhcnRpYWwgcmVhZHMvd3JpdGVzLgoK U2lnbmVkLW9mZi1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgotLS0KdjI6IE1v dmUgdnBtYXNrbW92e2QscX0gaGFuZGxpbmcgdG8gQVZYMiBwYXRjaC4KCi0tLSBhLy5naXRpZ25v cmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMjI0LDcgKzIyNCw3IEBACiB0b29scy90ZXN0cy94ODZf ZW11bGF0b3IvKi5iaW4KIHRvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci8qLnRtcAogdG9vbHMvdGVz dHMveDg2X2VtdWxhdG9yL2FzbQotdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL2F2eCouaAordG9v bHMvdGVzdHMveDg2X2VtdWxhdG9yL2F2eCouW2NoXQogdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9y L2Jsb3dmaXNoLmgKIHRvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci9zc2UqLltjaF0KIHRvb2xzL3Rl c3RzL3g4Nl9lbXVsYXRvci90ZXN0X3g4Nl9lbXVsYXRvcgotLS0gYS90b29scy90ZXN0cy94ODZf ZW11bGF0b3IvTWFrZWZpbGUKKysrIGIvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL01ha2VmaWxl CkBAIC0xMSw4ICsxMSw4IEBAIGFsbDogJChUQVJHRVQpCiBydW46ICQoVEFSR0VUKQogCS4vJChU QVJHRVQpCiAKLVNJTUQgOj0gc3NlIHNzZTIgc3NlNAotVEVTVENBU0VTIDo9IGJsb3dmaXNoICQo U0lNRCkgJChhZGRzdWZmaXggLWF2eCwkKGZpbHRlciBzc2UlLCQoU0lNRCkpKQorU0lNRCA6PSBz c2Ugc3NlMiBzc2U0IGF2eAorVEVTVENBU0VTIDo9IGJsb3dmaXNoICQoU0lNRCkgc3NlMi1hdngg c3NlNC1hdngKIAogYmxvd2Zpc2gtY2ZsYWdzIDo9ICIiCiBibG93ZmlzaC1jZmxhZ3MteDg2XzMy IDo9ICItbW5vLWFjY3VtdWxhdGUtb3V0Z29pbmctYXJncyAtRHN0YXRpYz0iCkBAIC0yNiwzNCAr MjYsMzYgQEAgc3NlMi1mbHRzIDo9IDQgOAogc3NlNC12ZWNzIDo9ICQoc3NlMi12ZWNzKQogc3Nl NC1pbnRzIDo9ICQoc3NlMi1pbnRzKQogc3NlNC1mbHRzIDo9ICQoc3NlMi1mbHRzKQorYXZ4LXZl Y3MgOj0gMTYgMzIKK2F2eC1pbnRzIDo9CithdngtZmx0cyA6PSA0IDgKIAogIyBXaGVuIGNvbnZl cnRpbmcgU1NFIHRvIEFWWCwgaGF2ZSB0aGUgY29tcGlsZXIgYXZvaWQgWE1NMCB0byB3aWRlbgog IyBjb3ZlcmFnZSBvZiB0aGUgVkVYLnZ2dnYgY2hlY2tzIGluIHRoZSBlbXVsYXRvci4gV2UgbXVz dCBub3QgZG8gdGhpcywKICMgaG93ZXZlciwgZm9yIFNTRTQuMSBhbmQgbGF0ZXIsIGFzIHRoZXJl IGFyZSBpbnN0cnVjdGlvbnMgd2l0aCBYTU0wIGFzCiAjIGFuIGltcGxpY2l0IG9wZXJhbmQuCi1z c2UyYXZ4LXNzZSAgOj0gLWZmaXhlZC14bW0wIC1XYSwtbXNzZTJhdngKLXNzZTJhdngtc3NlMiA6 PSAkKHNzZTJhdngtc3NlKQorc3NlMmF2eC1zc2UyIDo9IC1mZml4ZWQteG1tMCAtV2EsLW1zc2Uy YXZ4CiBzc2UyYXZ4LXNzZTQgOj0gLVdhLC1tc3NlMmF2eAogCisjIEZvciBBVlggYW5kIGxhdGVy LCBoYXZlIHRoZSBjb21waWxlciBhdm9pZCBYTU0wIHRvIHdpZGVuIGNvdmVyYWdlIG9mCisjIHRo ZSBWRVgudnZ2diBjaGVja3MgaW4gdGhlIGVtdWxhdG9yLgorbm9uLXNzZSA9ICQoaWYgJChmaWx0 ZXIgc3NlJSwkKDEpKSwsLWZmaXhlZC14bW0wKQorCiBkZWZpbmUgc2ltZC1kZWZzCiAkKDEpLWNm bGFncyA6PSBcCiAJJChmb3JlYWNoIHZlYywkKCQoMSktdmVjcyksIFwKIAkgICQoZm9yZWFjaCBp bnQsJCgkKDEpLWludHMpLCBcCi0JICAgICItRF8kKHZlYylpJChpbnQpIC1tJCgxKSAtTzIgLURW RUNfU0laRT0kKHZlYykgLURJTlRfU0laRT0kKGludCkiIFwKLQkgICAgIi1EXyQodmVjKXUkKGlu dCkgLW0kKDEpIC1PMiAtRFZFQ19TSVpFPSQodmVjKSAtRFVJTlRfU0laRT0kKGludCkiKSBcCisJ ICAgICItRF8kKHZlYylpJChpbnQpIC1tJCgxKSAkKGNhbGwgbm9uLXNzZSwkKDEpKSAtTzIgLURW RUNfU0laRT0kKHZlYykgLURJTlRfU0laRT0kKGludCkiIFwKKwkgICAgIi1EXyQodmVjKXUkKGlu dCkgLW0kKDEpICQoY2FsbCBub24tc3NlLCQoMSkpIC1PMiAtRFZFQ19TSVpFPSQodmVjKSAtRFVJ TlRfU0laRT0kKGludCkiKSBcCiAJICAkKGZvcmVhY2ggZmx0LCQoJCgxKS1mbHRzKSwgXAotCSAg ICAiLURfJCh2ZWMpZiQoZmx0KSAtbSQoMSkgLU8yIC1EVkVDX1NJWkU9JCh2ZWMpIC1ERkxPQVRf U0laRT0kKGZsdCkiKSkgXAorCSAgICAiLURfJCh2ZWMpZiQoZmx0KSAtbSQoMSkgJChjYWxsIG5v bi1zc2UsJCgxKSkgLU8yIC1EVkVDX1NJWkU9JCh2ZWMpIC1ERkxPQVRfU0laRT0kKGZsdCkiKSkg XAogCSQoZm9yZWFjaCBmbHQsJCgkKDEpLWZsdHMpLCBcCi0JICAiLURfZiQoZmx0KSAtbSQoMSkg LW1mcG1hdGg9c3NlIC1PMiAtREZMT0FUX1NJWkU9JChmbHQpIikKKwkgICItRF9mJChmbHQpIC1t JCgxKSAkKGNhbGwgbm9uLXNzZSwkKDEpKSAtbWZwbWF0aD1zc2UgLU8yIC1ERkxPQVRfU0laRT0k KGZsdCkiKQogJCgxKS1hdngtY2ZsYWdzIDo9IFwKIAkkKGZvcmVhY2ggdmVjLCQoJCgxKS12ZWNz KSwgXAogCSAgJChmb3JlYWNoIGludCwkKCQoMSktaW50cyksIFwKIAkgICAgIi1EXyQodmVjKWkk KGludCkgLW0kKDEpICQoc3NlMmF2eC0kKDEpKSAtTzIgLURWRUNfU0laRT0kKHZlYykgLURJTlRf U0laRT0kKGludCkiIFwKLQkgICAgIi1EXyQodmVjKXUkKGludCkgLW0kKDEpICQoc3NlMmF2eC0k KDEpKSAtTzIgLURWRUNfU0laRT0kKHZlYykgLURVSU5UX1NJWkU9JChpbnQpIikgXAotCSAgJChm b3JlYWNoIGZsdCwkKCQoMSktZmx0cyksIFwKLQkgICAgIi1EXyQodmVjKWYkKGZsdCkgLW0kKDEp ICQoc3NlMmF2eC0kKDEpKSAtTzIgLURWRUNfU0laRT0kKHZlYykgLURGTE9BVF9TSVpFPSQoZmx0 KSIpKSBcCi0JJChmb3JlYWNoIGZsdCwkKCQoMSktZmx0cyksIFwKLQkgICItRF9mJChmbHQpIC1t JCgxKSAtbWZwbWF0aD1zc2UgJChzc2UyYXZ4LSQoMSkpIC1PMiAtREZMT0FUX1NJWkU9JChmbHQp IikKKwkgICAgIi1EXyQodmVjKXUkKGludCkgLW0kKDEpICQoc3NlMmF2eC0kKDEpKSAtTzIgLURW RUNfU0laRT0kKHZlYykgLURVSU5UX1NJWkU9JChpbnQpIikpCiBlbmRlZgogCiAkKGZvcmVhY2gg Zmxhdm9yLCQoU0lNRCksJChldmFsICQoY2FsbCBzaW1kLWRlZnMsJChmbGF2b3IpKSkpCi0tLSBh L3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci9zaW1kLmMKKysrIGIvdG9vbHMvdGVzdHMveDg2X2Vt dWxhdG9yL3NpbWQuYwpAQCAtNzAsNyArNzAsMTMgQEAgdHlwZWRlZiBsb25nIGxvbmcgX19hdHRy aWJ1dGVfXygodmVjdG9yXwogI2lmIFZFQ19TSVpFID09IDggJiYgZGVmaW5lZChfX1NTRV9fKQog IyBkZWZpbmUgdG9fYm9vbChjbXApIChfX2J1aWx0aW5faWEzMl9wbW92bXNrYihjbXApID09IDB4 ZmYpCiAjZWxpZiBWRUNfU0laRSA9PSAxNgotIyBpZiBkZWZpbmVkKF9fU1NFNF8xX18pCisjIGlm IGRlZmluZWQoX19BVlhfXykgJiYgZGVmaW5lZChGTE9BVF9TSVpFKQorIyAgaWYgRUxFTV9TSVpF ID09IDQKKyMgICBkZWZpbmUgdG9fYm9vbChjbXApIF9fYnVpbHRpbl9pYTMyX3Z0ZXN0Y3BzKGNt cCwgKHZlY190KXt9ID09IDApCisjICBlbGlmIEVMRU1fU0laRSA9PSA4CisjICAgZGVmaW5lIHRv X2Jvb2woY21wKSBfX2J1aWx0aW5faWEzMl92dGVzdGNwZChjbXAsICh2ZWNfdCl7fSA9PSAwKQor IyAgZW5kaWYKKyMgZWxpZiBkZWZpbmVkKF9fU1NFNF8xX18pCiAjICBkZWZpbmUgdG9fYm9vbChj bXApIF9fYnVpbHRpbl9pYTMyX3B0ZXN0YzEyOChjbXAsICh2ZGlfdCl7fSA9PSAwKQogIyBlbGlm IGRlZmluZWQoX19TU0VfXykgJiYgRUxFTV9TSVpFID09IDQKICMgIGRlZmluZSB0b19ib29sKGNt cCkgKF9fYnVpbHRpbl9pYTMyX21vdm1za3BzKGNtcCkgPT0gMHhmKQpAQCAtODEsNiArODcsMTIg QEAgdHlwZWRlZiBsb25nIGxvbmcgX19hdHRyaWJ1dGVfXygodmVjdG9yXwogIyAgIGRlZmluZSB0 b19ib29sKGNtcCkgKF9fYnVpbHRpbl9pYTMyX3Btb3Ztc2tiMTI4KGNtcCkgPT0gMHhmZmZmKQog IyAgZW5kaWYKICMgZW5kaWYKKyNlbGlmIFZFQ19TSVpFID09IDMyCisjIGlmIGRlZmluZWQoX19B VlhfXykgJiYgRUxFTV9TSVpFID09IDQKKyMgIGRlZmluZSB0b19ib29sKGNtcCkgKF9fYnVpbHRp bl9pYTMyX21vdm1za3BzMjU2KGNtcCkgPT0gMHhmZikKKyMgZWxpZiBkZWZpbmVkKF9fQVZYX18p ICYmIEVMRU1fU0laRSA9PSA4CisjICBkZWZpbmUgdG9fYm9vbChjbXApIChfX2J1aWx0aW5faWEz Ml9tb3Ztc2twZDI1NihjbXApID09IDB4ZikKKyMgZW5kaWYKICNlbmRpZgogCiAjaWZuZGVmIHRv X2Jvb2wKQEAgLTEwNSw2ICsxMTcsMTIgQEAgc3RhdGljIGlubGluZSBib29sIF90b19ib29sKGJ5 dGVfdmVjX3QgYgogIyBlbGlmIEZMT0FUX1NJWkUgPT0gOAogIyAgZGVmaW5lIHRvX2ludCh4KSBf X2J1aWx0aW5faWEzMl9jdnRkcTJwZChfX2J1aWx0aW5faWEzMl9jdnRwZDJkcSh4KSkKICMgZW5k aWYKKyNlbGlmIFZFQ19TSVpFID09IDMyICYmIGRlZmluZWQoX19BVlhfXykKKyMgaWYgRkxPQVRf U0laRSA9PSA0CisjICBkZWZpbmUgdG9faW50KHgpIF9fYnVpbHRpbl9pYTMyX2N2dGRxMnBzMjU2 KF9fYnVpbHRpbl9pYTMyX2N2dHBzMmRxMjU2KHgpKQorIyBlbGlmIEZMT0FUX1NJWkUgPT0gOAor IyAgZGVmaW5lIHRvX2ludCh4KSBfX2J1aWx0aW5faWEzMl9jdnRkcTJwZDI1NihfX2J1aWx0aW5f aWEzMl9jdnRwZDJkcTI1Nih4KSkKKyMgZW5kaWYKICNlbmRpZgogCiAjaWYgVkVDX1NJWkUgPT0g RkxPQVRfU0laRQpAQCAtMTE2LDcgKzEzNCwyNSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgX3RvX2Jv b2woYnl0ZV92ZWNfdCBiCiAjZW5kaWYKIAogI2lmIEZMT0FUX1NJWkUgPT0gNCAmJiBkZWZpbmVk KF9fU1NFX18pCi0jIGlmIFZFQ19TSVpFID09IDE2CisjIGlmIFZFQ19TSVpFID09IDMyICYmIGRl ZmluZWQoX19BVlhfXykKKyMgIGRlZmluZSBicm9hZGNhc3QoeCkgKHsgZmxvYXQgdF8gPSAoeCk7 IF9fYnVpbHRpbl9pYTMyX3Zicm9hZGNhc3RzczI1NigmdF8pOyB9KQorIyAgZGVmaW5lIG1heCh4 LCB5KSBfX2J1aWx0aW5faWEzMl9tYXhwczI1Nih4LCB5KQorIyAgZGVmaW5lIG1pbih4LCB5KSBf X2J1aWx0aW5faWEzMl9taW5wczI1Nih4LCB5KQorIyAgZGVmaW5lIHJlY2lwKHgpIF9fYnVpbHRp bl9pYTMyX3JjcHBzMjU2KHgpCisjICBkZWZpbmUgcnNxcnQoeCkgX19idWlsdGluX2lhMzJfcnNx cnRwczI1Nih4KQorIyAgZGVmaW5lIHNxcnQoeCkgX19idWlsdGluX2lhMzJfc3FydHBzMjU2KHgp CisjICBkZWZpbmUgc3dhcCh4KSAoeyBcCisgICAgdmVjX3QgdF8gPSBfX2J1aWx0aW5faWEzMl92 cGVybWlscHMyNTYoeCwgMGIwMDAxMTAxMSk7IFwKKyAgICBfX2J1aWx0aW5faWEzMl92cGVybTJm MTI4X3BzMjU2KHRfLCB0XywgMGIwMDAwMDAwMSk7IFwKK30pCisjICBkZWZpbmUgc3dhcDIoeCkg KHsgXAorICAgIHZlY190IHRfID0gX19idWlsdGluX2lhMzJfdnBlcm1pbHZhcnBzMjU2KHgsIF9f YnVpbHRpbl9pYTMyX2N2dHBzMmRxMjU2KGludikgLSAxKTsgXAorICAgIF9fYnVpbHRpbl9pYTMy X3ZwZXJtMmYxMjhfcHMyNTYodF8sIHRfLCAwYjAwMDAwMDAxKTsgXAorfSkKKyMgZWxpZiBWRUNf U0laRSA9PSAxNgorIyAgaWZkZWYgX19BVlhfXworIyAgIGRlZmluZSBicm9hZGNhc3QoeCkgKHsg ZmxvYXQgdF8gPSAoeCk7IF9fYnVpbHRpbl9pYTMyX3Zicm9hZGNhc3RzcygmdF8pOyB9KQorIyAg ZW5kaWYKICMgIGRlZmluZSBpbnRlcmxlYXZlX2hpKHgsIHkpIF9fYnVpbHRpbl9pYTMyX3VucGNr aHBzKHgsIHkpCiAjICBkZWZpbmUgaW50ZXJsZWF2ZV9sbyh4LCB5KSBfX2J1aWx0aW5faWEzMl91 bnBja2xwcyh4LCB5KQogIyAgZGVmaW5lIG1heCh4LCB5KSBfX2J1aWx0aW5faWEzMl9tYXhwcyh4 LCB5KQpAQCAtMTI1LDEzICsxNjEsMzkgQEAgc3RhdGljIGlubGluZSBib29sIF90b19ib29sKGJ5 dGVfdmVjX3QgYgogIyAgZGVmaW5lIHJzcXJ0KHgpIF9fYnVpbHRpbl9pYTMyX3JzcXJ0cHMoeCkK ICMgIGRlZmluZSBzcXJ0KHgpIF9fYnVpbHRpbl9pYTMyX3NxcnRwcyh4KQogIyAgZGVmaW5lIHN3 YXAoeCkgX19idWlsdGluX2lhMzJfc2h1ZnBzKHgsIHgsIDBiMDAwMTEwMTEpCisjICBpZmRlZiBf X0FWWF9fCisjICAgZGVmaW5lIHN3YXAyKHgpIF9fYnVpbHRpbl9pYTMyX3ZwZXJtaWx2YXJwcyh4 LCBfX2J1aWx0aW5faWEzMl9jdnRwczJkcShpbnYpIC0gMSkKKyMgIGVuZGlmCiAjIGVsaWYgVkVD X1NJWkUgPT0gNAogIyAgZGVmaW5lIHJlY2lwKHgpIHNjYWxhcl8xb3AoeCwgInJjcHNzICVbaW5d LCAlW291dF0iKQogIyAgZGVmaW5lIHJzcXJ0KHgpIHNjYWxhcl8xb3AoeCwgInJzcXJ0c3MgJVtp bl0sICVbb3V0XSIpCiAjICBkZWZpbmUgc3FydCh4KSBzY2FsYXJfMW9wKHgsICJzcXJ0c3MgJVtp bl0sICVbb3V0XSIpCiAjIGVuZGlmCiAjZWxpZiBGTE9BVF9TSVpFID09IDggJiYgZGVmaW5lZChf X1NTRTJfXykKLSMgaWYgVkVDX1NJWkUgPT0gMTYKKyMgaWYgVkVDX1NJWkUgPT0gMzIgJiYgZGVm aW5lZChfX0FWWF9fKQorIyAgZGVmaW5lIGJyb2FkY2FzdCh4KSAoeyBkb3VibGUgdF8gPSAoeCk7 IF9fYnVpbHRpbl9pYTMyX3Zicm9hZGNhc3RzZDI1NigmdF8pOyB9KQorIyAgZGVmaW5lIG1heCh4 LCB5KSBfX2J1aWx0aW5faWEzMl9tYXhwZDI1Nih4LCB5KQorIyAgZGVmaW5lIG1pbih4LCB5KSBf X2J1aWx0aW5faWEzMl9taW5wZDI1Nih4LCB5KQorIyAgZGVmaW5lIHJlY2lwKHgpICh7IFwKKyAg ICBmbG9hdCBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZSgxNikpKSB0XyA9IF9fYnVpbHRpbl9p YTMyX2N2dHBkMnBzMjU2KHgpOyBcCisgICAgdF8gPSBfX2J1aWx0aW5faWEzMl92ZXh0cmFjdGYx MjhfcHMyNTYoIFwKKyAgICAgICAgICAgICBfX2J1aWx0aW5faWEzMl9yY3BwczI1NiggXAorICAg ICAgICAgICAgICAgICBfX2J1aWx0aW5faWEzMl92YnJvYWRjYXN0ZjEyOF9wczI1NigmdF8pKSwg MCk7IFwKKyAgICBfX2J1aWx0aW5faWEzMl9jdnRwczJwZDI1Nih0Xyk7IFwKK30pCisjICBkZWZp bmUgcnNxcnQoeCkgKHsgXAorICAgIGZsb2F0IF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKDE2 KSkpIHQxXyA9IF9fYnVpbHRpbl9pYTMyX2N2dHBkMnBzMjU2KHgpOyBcCisgICAgZmxvYXQgX19h dHRyaWJ1dGVfXygodmVjdG9yX3NpemUoMzIpKSkgdDJfID0gX19idWlsdGluX2lhMzJfdmluc2Vy dGYxMjhfcHMyNTYoKHR5cGVvZih0Ml8pKXt9LCB0MV8sIDApOyBcCisgICAgdDJfID0gX19idWls dGluX2lhMzJfdmluc2VydGYxMjhfcHMyNTYodDJfLCB0MV8sIDEpOyBcCisgICAgdDFfID0gX19i dWlsdGluX2lhMzJfdmV4dHJhY3RmMTI4X3BzMjU2KF9fYnVpbHRpbl9pYTMyX3JzcXJ0cHMyNTYo dDJfKSwgMCk7IFwKKyAgICBfX2J1aWx0aW5faWEzMl9jdnRwczJwZDI1Nih0MV8pOyBcCit9KQor IyAgZGVmaW5lIHNxcnQoeCkgX19idWlsdGluX2lhMzJfc3FydHBkMjU2KHgpCisjICBkZWZpbmUg c3dhcCh4KSAoeyBcCisgICAgdmVjX3QgdF8gPSBfX2J1aWx0aW5faWEzMl92cGVybWlscGQyNTYo eCwgMGIwMDAwMDEwMSk7IFwKKyAgICBfX2J1aWx0aW5faWEzMl92cGVybTJmMTI4X3BkMjU2KHRf LCB0XywgMGIwMDAwMDAwMSk7IFwKK30pCisjIGVsaWYgVkVDX1NJWkUgPT0gMTYKICMgIGRlZmlu ZSBpbnRlcmxlYXZlX2hpKHgsIHkpIF9fYnVpbHRpbl9pYTMyX3VucGNraHBkKHgsIHkpCiAjICBk ZWZpbmUgaW50ZXJsZWF2ZV9sbyh4LCB5KSBfX2J1aWx0aW5faWEzMl91bnBja2xwZCh4LCB5KQog IyAgZGVmaW5lIG1heCh4LCB5KSBfX2J1aWx0aW5faWEzMl9tYXhwZCh4LCB5KQpAQCAtMTQwLDYg KzIwMiwxMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgX3RvX2Jvb2woYnl0ZV92ZWNfdCBiCiAjICBk ZWZpbmUgcnNxcnQoeCkgX19idWlsdGluX2lhMzJfY3Z0cHMycGQoX19idWlsdGluX2lhMzJfcnNx cnRwcyhfX2J1aWx0aW5faWEzMl9jdnRwZDJwcyh4KSkpCiAjICBkZWZpbmUgc3FydCh4KSBfX2J1 aWx0aW5faWEzMl9zcXJ0cGQoeCkKICMgIGRlZmluZSBzd2FwKHgpIF9fYnVpbHRpbl9pYTMyX3No dWZwZCh4LCB4LCAwYjAxKQorIyAgaWZkZWYgX19BVlhfXworIyAgIGRlZmluZSBzd2FwMih4KSBf X2J1aWx0aW5faWEzMl92cGVybWlsdmFycGQoeCwgX19idWlsdGluX2lhMzJfcG1vdnN4ZHExMjgo IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBfX2J1aWx0aW5faWEzMl9jdnRwZDJkcShpbnYpIC0gMSkgPDwgMSkKKyMgIGVuZGlmCiAjIGVs aWYgVkVDX1NJWkUgPT0gOAogIyAgZGVmaW5lIHJlY2lwKHgpIHNjYWxhcl8xb3AoeCwgImN2dHNk MnNzICVbaW5dLCAlW291dF07IHJjcHNzICVbb3V0XSwgJVtvdXRdOyBjdnRzczJzZCAlW291dF0s ICVbb3V0XSIpCiAjICBkZWZpbmUgcnNxcnQoeCkgc2NhbGFyXzFvcCh4LCAiY3Z0c2Qyc3MgJVtp bl0sICVbb3V0XTsgcnNxcnRzcyAlW291dF0sICVbb3V0XTsgY3Z0c3Myc2QgJVtvdXRdLCAlW291 dF0iKQpAQCAtMjAxLDYgKzI2NywzMSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgX3RvX2Jvb2woYnl0 ZV92ZWNfdCBiCiAjICBkZWZpbmUgaGFkZCh4LCB5KSBfX2J1aWx0aW5faWEzMl9oYWRkcGQoeCwg eSkKICMgIGRlZmluZSBoc3ViKHgsIHkpIF9fYnVpbHRpbl9pYTMyX2hzdWJwZCh4LCB5KQogIyBl bmRpZgorI2VsaWYgVkVDX1NJWkUgPT0gMzIgJiYgZGVmaW5lZChfX0FWWF9fKQorIyBpZiBGTE9B VF9TSVpFID09IDQKKyMgIGRlZmluZSBhZGRzdWIoeCwgeSkgX19idWlsdGluX2lhMzJfYWRkc3Vi cHMyNTYoeCwgeSkKKyMgIGRlZmluZSBkdXBfaGkoeCkgX19idWlsdGluX2lhMzJfbW92c2hkdXAy NTYoeCkKKyMgIGRlZmluZSBkdXBfbG8oeCkgX19idWlsdGluX2lhMzJfbW92c2xkdXAyNTYoeCkK KyMgIGRlZmluZSBoYWRkKHgsIHkpICh7IFwKKyAgICAgICAgdmVjX3QgdF8gPSBfX2J1aWx0aW5f aWEzMl9oYWRkcHMyNTYoeCwgeSk7IFwKKyAgICAgICAgKHZlY190KXt0X1swXSwgdF9bMV0sIHRf WzRdLCB0X1s1XSwgdF9bMl0sIHRfWzNdLCB0X1s2XSwgdF9bN119OyBcCit9KQorIyAgZGVmaW5l IGhzdWIoeCwgeSkgKHsgXAorICAgICAgICB2ZWNfdCB0XyA9IF9fYnVpbHRpbl9pYTMyX2hzdWJw czI1Nih4LCB5KTsgXAorICAgICAgICAodmVjX3Qpe3RfWzBdLCB0X1sxXSwgdF9bNF0sIHRfWzVd LCB0X1syXSwgdF9bM10sIHRfWzZdLCB0X1s3XX07IFwKK30pCisjIGVsaWYgRkxPQVRfU0laRSA9 PSA4CisjICBkZWZpbmUgYWRkc3ViKHgsIHkpIF9fYnVpbHRpbl9pYTMyX2FkZHN1YnBkMjU2KHgs IHkpCisjICBkZWZpbmUgZHVwX2xvKHgpIF9fYnVpbHRpbl9pYTMyX21vdmRkdXAyNTYoeCkKKyMg IGRlZmluZSBoYWRkKHgsIHkpICh7IFwKKyAgICAgICAgdmVjX3QgdF8gPSBfX2J1aWx0aW5faWEz Ml9oYWRkcGQyNTYoeCwgeSk7IFwKKyAgICAgICAgKHZlY190KXt0X1swXSwgdF9bMl0sIHRfWzFd LCB0X1szXX07IFwKK30pCisjICBkZWZpbmUgaHN1Yih4LCB5KSAoeyBcCisgICAgICAgIHZlY190 IHRfID0gX19idWlsdGluX2lhMzJfaHN1YnBkMjU2KHgsIHkpOyBcCisgICAgICAgICh2ZWNfdCl7 dF9bMF0sIHRfWzJdLCB0X1sxXSwgdF9bM119OyBcCit9KQorIyBlbmRpZgogI2VuZGlmCiAjaWYg VkVDX1NJWkUgPT0gMTYgJiYgZGVmaW5lZChfX1NTU0UzX18pCiAjIGlmIElOVF9TSVpFID09IDEK QEAgLTI4Miw2ICszNzMsMzEgQEAgc3RhdGljIGlubGluZSBib29sIF90b19ib29sKGJ5dGVfdmVj X3QgYgogIyAgZGVmaW5lIG1peCh4LCB5KSBfX2J1aWx0aW5faWEzMl9ibGVuZHBkKHgsIHksIDBi MTApCiAjIGVuZGlmCiAjZW5kaWYKKyNpZiBWRUNfU0laRSA9PSAzMiAmJiBkZWZpbmVkKF9fQVZY X18pCisjIGlmIEZMT0FUX1NJWkUgPT0gNAorIyAgZGVmaW5lIGRvdF9wcm9kdWN0KHgsIHkpICh7 IFwKKyAgICB2ZWNfdCB0XyA9IF9fYnVpbHRpbl9pYTMyX2RwcHMyNTYoeCwgeSwgMGIxMTExMDAw MSk7IFwKKyAgICAodmVjX3Qpe3RfWzBdICsgdF9bNF19OyBcCit9KQorIyAgZGVmaW5lIG1peCh4 LCB5KSBfX2J1aWx0aW5faWEzMl9ibGVuZHBzMjU2KHgsIHksIDBiMTAxMDEwMTApCisjICBkZWZp bmUgc2VsZWN0KGQsIHgsIHksIG0pICgqKGQpID0gX19idWlsdGluX2lhMzJfYmxlbmR2cHMyNTYo eSwgeCwgbSkpCisjICBkZWZpbmUgc2VsZWN0MihkLCB4LCB5LCBtKSAoeyBcCisgICAgdnNpX3Qg bV8gPSAodnNpX3QpKG0pOyBcCisgICAgKihkKSA9IF9fYnVpbHRpbl9pYTMyX21hc2tsb2FkcHMy NTYoJih4KSwgIG1fKTsgXAorICAgIF9fYnVpbHRpbl9pYTMyX21hc2tzdG9yZXBzMjU2KGQsIH5t XywgeSk7IFwKK30pCisjICBkZWZpbmUgdHJ1bmMoeCkgX19idWlsdGluX2lhMzJfcm91bmRwczI1 Nih4LCAwYjEwMTEpCisjIGVsaWYgRkxPQVRfU0laRSA9PSA4CisjICBkZWZpbmUgbWl4KHgsIHkp IF9fYnVpbHRpbl9pYTMyX2JsZW5kcGQyNTYoeCwgeSwgMGIxMDEwKQorIyAgZGVmaW5lIHNlbGVj dChkLCB4LCB5LCBtKSAoKihkKSA9IF9fYnVpbHRpbl9pYTMyX2JsZW5kdnBkMjU2KHksIHgsIG0p KQorIyAgZGVmaW5lIHNlbGVjdDIoZCwgeCwgeSwgbSkgKHsgXAorICAgIHZkaV90IG1fID0gKHZk aV90KShtKTsgXAorICAgICooZCkgPSBfX2J1aWx0aW5faWEzMl9tYXNrbG9hZHBkMjU2KCYoeCks ICBtXyk7IFwKKyAgICBfX2J1aWx0aW5faWEzMl9tYXNrc3RvcmVwZDI1NihkLCB+bV8sIHkpOyBc Cit9KQorIyAgZGVmaW5lIHRydW5jKHgpIF9fYnVpbHRpbl9pYTMyX3JvdW5kcGQyNTYoeCwgMGIx MDExKQorIyBlbmRpZgorI2VuZGlmCiAjaWYgVkVDX1NJWkUgPT0gRkxPQVRfU0laRQogIyBkZWZp bmUgbWF4KHgsIHkpICgodmVjX3Qpeyh7IHR5cGVvZih4WzBdKSB4XyA9ICh4KVswXSwgeV8gPSAo eSlbMF07IHhfID4geV8gPyB4XyA6IHlfOyB9KX0pCiAjIGRlZmluZSBtaW4oeCwgeSkgKCh2ZWNf dCl7KHsgdHlwZW9mKHhbMF0pIHhfID0gKHgpWzBdLCB5XyA9ICh5KVswXTsgeF8gPCB5XyA/IHhf IDogeV87IH0pfSkKQEAgLTU1NSw2ICs2NzEsMTUgQEAgaW50IHNpbWRfdGVzdCh2b2lkKQogICAg IGlmICggIXRvX2Jvb2woc3dhcChzcmMpID09IGludikgKSByZXR1cm4gX19MSU5FX187CiAjZW5k aWYKIAorI2lmZGVmIHN3YXAyCisgICAgdG91Y2goc3JjKTsKKyAgICBpZiAoICF0b19ib29sKHN3 YXAyKHNyYykgPT0gaW52KSApIHJldHVybiBfX0xJTkVfXzsKKyNlbmRpZgorCisjaWYgZGVmaW5l ZChicm9hZGNhc3QpCisgICAgaWYgKCAhdG9fYm9vbChicm9hZGNhc3QoRUxFTV9DT1VOVCArIDEp ID09IHNyYyArIGludikgKSByZXR1cm4gX19MSU5FX187CisjZW5kaWYKKwogI2lmIGRlZmluZWQo aW50ZXJsZWF2ZV9sbykgJiYgZGVmaW5lZChpbnRlcmxlYXZlX2hpKQogICAgIHRvdWNoKHNyYyk7 CiAgICAgeCA9IGludGVybGVhdmVfbG8oaW52LCBzcmMpOwpAQCAtNjUyLDYgKzc3NywxNSBAQCBp bnQgc2ltZF90ZXN0KHZvaWQpCiAjIGVuZGlmCiAgICAgaWYgKCAhdG9fYm9vbCh6ID09IHkpICkg cmV0dXJuIF9fTElORV9fOwogI2VuZGlmCisKKyNpZmRlZiBzZWxlY3QyCisjIGlmZGVmIFVJTlRf U0laRQorICAgIHNlbGVjdDIoJnosIHNyYywgaW52LCBhbHQpOworIyBlbHNlCisgICAgc2VsZWN0 Migmeiwgc3JjLCBpbnYsIGFsdCA+IDApOworIyBlbmRpZgorICAgIGlmICggIXRvX2Jvb2woeiA9 PSB5KSApIHJldHVybiBfX0xJTkVfXzsKKyNlbmRpZgogCiAjaWZkZWYgbWl4CiAgICAgdG91Y2go c3JjKTsKLS0tIGEvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3Rlc3RfeDg2X2VtdWxhdG9yLmMK KysrIGIvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3Rlc3RfeDg2X2VtdWxhdG9yLmMKQEAgLTgs OSArOCw5IEBACiAjaW5jbHVkZSAic3NlLmgiCiAjaW5jbHVkZSAic3NlMi5oIgogI2luY2x1ZGUg InNzZTQuaCIKLSNpbmNsdWRlICJzc2UtYXZ4LmgiCiAjaW5jbHVkZSAic3NlMi1hdnguaCIKICNp bmNsdWRlICJzc2U0LWF2eC5oIgorI2luY2x1ZGUgImF2eC5oIgogCiAjZGVmaW5lIHZlcmJvc2Ug ZmFsc2UgLyogU3dpdGNoIHRvIHRydWUgZm9yIGZhciBtb3JlIGxvZ2dpbmcuICovCiAKQEAgLTQ0 LDcgKzQ0LDYgQEAgc3RhdGljIGJvb2wgc2ltZF9jaGVja19hdngodm9pZCkKIHsKICAgICByZXR1 cm4gY3B1X2hhc19hdng7CiB9Ci0jZGVmaW5lIHNpbWRfY2hlY2tfc3NlX2F2eCAgIHNpbWRfY2hl Y2tfYXZ4CiAjZGVmaW5lIHNpbWRfY2hlY2tfc3NlMl9hdnggIHNpbWRfY2hlY2tfYXZ4CiAjZGVm aW5lIHNpbWRfY2hlY2tfc3NlNF9hdnggIHNpbWRfY2hlY2tfYXZ4CiAKQEAgLTEyMiwxMiArMTIx LDYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB7CiAgICAgU0lNRChTU0U0IHBhY2tlZCB1MzIsICAg ICAgICBzc2U0LCAgICAgIDE2dTQpLAogICAgIFNJTUQoU1NFNCBwYWNrZWQgczY0LCAgICAgICAg c3NlNCwgICAgICAxNmk4KSwKICAgICBTSU1EKFNTRTQgcGFja2VkIHU2NCwgICAgICAgIHNzZTQs ICAgICAgMTZ1OCksCi0gICAgU0lNRChTU0UvQVZYIHNjYWxhciBzaW5nbGUsICBzc2VfYXZ4LCAg ICAgZjQpLAotICAgIFNJTUQoU1NFL0FWWCBwYWNrZWQgc2luZ2xlLCAgc3NlX2F2eCwgICAxNmY0 KSwKLSAgICBTSU1EKFNTRTIvQVZYIHNjYWxhciBzaW5nbGUsIHNzZTJfYXZ4LCAgICBmNCksCi0g ICAgU0lNRChTU0UyL0FWWCBwYWNrZWQgc2luZ2xlLCBzc2UyX2F2eCwgIDE2ZjQpLAotICAgIFNJ TUQoU1NFMi9BVlggc2NhbGFyIGRvdWJsZSwgc3NlMl9hdngsICAgIGY4KSwKLSAgICBTSU1EKFNT RTIvQVZYIHBhY2tlZCBkb3VibGUsIHNzZTJfYXZ4LCAgMTZmOCksCiAgICAgU0lNRChTU0UyL0FW WCBwYWNrZWQgczgsICAgICBzc2UyX2F2eCwgIDE2aTEpLAogICAgIFNJTUQoU1NFMi9BVlggcGFj a2VkIHU4LCAgICAgc3NlMl9hdngsICAxNnUxKSwKICAgICBTSU1EKFNTRTIvQVZYIHBhY2tlZCBz MTYsICAgIHNzZTJfYXZ4LCAgMTZpMiksCkBAIC0xMzYsMTAgKzEyOSw2IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgewogICAgIFNJTUQoU1NFMi9BVlggcGFja2VkIHUzMiwgICAgc3NlMl9hdngsICAx NnU0KSwKICAgICBTSU1EKFNTRTIvQVZYIHBhY2tlZCBzNjQsICAgIHNzZTJfYXZ4LCAgMTZpOCks CiAgICAgU0lNRChTU0UyL0FWWCBwYWNrZWQgdTY0LCAgICBzc2UyX2F2eCwgIDE2dTgpLAotICAg IFNJTUQoU1NFNC9BVlggc2NhbGFyIHNpbmdsZSwgc3NlNF9hdngsICAgIGY0KSwKLSAgICBTSU1E KFNTRTQvQVZYIHBhY2tlZCBzaW5nbGUsIHNzZTRfYXZ4LCAgMTZmNCksCi0gICAgU0lNRChTU0U0 L0FWWCBzY2FsYXIgZG91YmxlLCBzc2U0X2F2eCwgICAgZjgpLAotICAgIFNJTUQoU1NFNC9BVlgg cGFja2VkIGRvdWJsZSwgc3NlNF9hdngsICAxNmY4KSwKICAgICBTSU1EKFNTRTQvQVZYIHBhY2tl ZCBzOCwgICAgIHNzZTRfYXZ4LCAgMTZpMSksCiAgICAgU0lNRChTU0U0L0FWWCBwYWNrZWQgdTgs ICAgICBzc2U0X2F2eCwgIDE2dTEpLAogICAgIFNJTUQoU1NFNC9BVlggcGFja2VkIHMxNiwgICAg c3NlNF9hdngsICAxNmkyKSwKQEAgLTE0OCw2ICsxMzcsMTIgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCB7CiAgICAgU0lNRChTU0U0L0FWWCBwYWNrZWQgdTMyLCAgICBzc2U0X2F2eCwgIDE2dTQpLAog ICAgIFNJTUQoU1NFNC9BVlggcGFja2VkIHM2NCwgICAgc3NlNF9hdngsICAxNmk4KSwKICAgICBT SU1EKFNTRTQvQVZYIHBhY2tlZCB1NjQsICAgIHNzZTRfYXZ4LCAgMTZ1OCksCisgICAgU0lNRChB Vlggc2NhbGFyIHNpbmdsZSwgICAgICBhdngsICAgICAgICAgZjQpLAorICAgIFNJTUQoQVZYIDEy OGJpdCBzaW5nbGUsICAgICAgYXZ4LCAgICAgICAxNmY0KSwKKyAgICBTSU1EKEFWWCAyNTZiaXQg c2luZ2xlLCAgICAgIGF2eCwgICAgICAgMzJmNCksCisgICAgU0lNRChBVlggc2NhbGFyIGRvdWJs ZSwgICAgICBhdngsICAgICAgICAgZjgpLAorICAgIFNJTUQoQVZYIDEyOGJpdCBkb3VibGUsICAg ICAgYXZ4LCAgICAgICAxNmY4KSwKKyAgICBTSU1EKEFWWCAyNTZiaXQgZG91YmxlLCAgICAgIGF2 eCwgICAgICAgMzJmOCksCiAjdW5kZWYgU0lNRF8KICN1bmRlZiBTSU1ECiB9OwpAQCAtMjg1OSw2 ICsyODU0LDgxIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICAgICAgICAgcHJp bnRmKCJva2F5XG4iKTsKICAgICB9CiAgICAgZWxzZQorICAgICAgICBwcmludGYoInNraXBwZWRc biIpOworCisgICAgLyoKKyAgICAgKiBUaGUgZm9sbG93aW5nICJtYXNrbW92IiB0ZXN0cyBhcmUg bm90IG9ubHkgbWFraW5nIHN1cmUgdGhlIHdyaXR0ZW4gZGF0YQorICAgICAqIGlzIGNvcnJlY3Qs IGJ1dCB2ZXJpZnkgKGJ5IHBsYWNpbmcgb3BlcmFuZHMgb24gdGhlIG1hcHBpbmcgYm91bmRhcmll cykKKyAgICAgKiB0aGF0IGVsZW1lbnRzIGNvbnRyb2xsZWQgYnkgY2xlYXIgbWFzayBiaXRzIGFy ZW4ndCBiZWluZyBhY2Nlc3NlZC4KKyAgICAgKi8KKyAgICBwcmludGYoIiUtNDBzIiwgIlRlc3Rp bmcgdm1hc2ttb3ZwcyAleG1tMSwleG1tMiwoJWVkeCkuLi4iKTsKKyAgICBpZiAoIHN0YWNrX2V4 ZWMgJiYgY3B1X2hhc19hdnggKQorICAgIHsKKyAgICAgICAgZGVjbF9pbnNuKHZtYXNrbW92cHMp OworCisgICAgICAgIGFzbSB2b2xhdGlsZSAoICJ2eG9ycHMgJSV4bW0xLCAlJXhtbTEsICUleG1t MVxuXHQiCisgICAgICAgICAgICAgICAgICAgICAgICJ2Y21wZXFzcyAlJXhtbTEsICUleG1tMSwg JSV4bW0yXG5cdCIKKyAgICAgICAgICAgICAgICAgICAgICAgcHV0X2luc24odm1hc2ttb3Zwcywg InZtYXNrbW92cHMgJSV4bW0xLCAlJXhtbTIsICglMCkiKQorICAgICAgICAgICAgICAgICAgICAg ICA6OiAiZCIgKE5VTEwpICk7CisKKyAgICAgICAgbWVtc2V0KHJlcyArIE1NQVBfU1ogLyBzaXpl b2YoKnJlcykgLSA4LCAweGRiLCAzMik7CisgICAgICAgIHNldF9pbnNuKHZtYXNrbW92cHMpOwor ICAgICAgICByZWdzLmVkeCA9ICh1bnNpZ25lZCBsb25nKXJlcyArIE1NQVBfU1ogLSA0OworICAg ICAgICByYyA9IHg4Nl9lbXVsYXRlKCZjdHh0LCAmZW11bG9wcyk7CisgICAgICAgIGlmICggcmMg IT0gWDg2RU1VTF9PS0FZIHx8ICFjaGVja19laXAodm1hc2ttb3ZwcykgfHwKKyAgICAgICAgICAg ICByZXNbTU1BUF9TWiAvIHNpemVvZigqcmVzKSAtIDFdIHx8CisgICAgICAgICAgICAgbWVtY21w KHJlcyArIE1NQVBfU1ogLyBzaXplb2YoKnJlcykgLSA4LAorICAgICAgICAgICAgICAgICAgICBy ZXMgKyBNTUFQX1NaIC8gc2l6ZW9mKCpyZXMpIC0gNCwgMTIpICkKKyAgICAgICAgICAgIGdvdG8g ZmFpbDsKKworICAgICAgICBhc20gdm9sYXRpbGUgKCAidmluc2VydHBzICQwYjAwMTEwMTExLCAl eG1tMiwgJXhtbTIsICV4bW0yIiApOworICAgICAgICBtZW1zZXQocmVzLCAweGRiLCAzMik7Cisg ICAgICAgIHNldF9pbnNuKHZtYXNrbW92cHMpOworICAgICAgICByZWdzLmVkeCA9ICh1bnNpZ25l ZCBsb25nKShyZXMgLSAzKTsKKyAgICAgICAgcmMgPSB4ODZfZW11bGF0ZSgmY3R4dCwgJmVtdWxv cHMpOworICAgICAgICBpZiAoIHJjICE9IFg4NkVNVUxfT0tBWSB8fCAhY2hlY2tfZWlwKHZtYXNr bW92cHMpIHx8CisgICAgICAgICAgICAgcmVzWzBdIHx8IG1lbWNtcChyZXMgKyAxLCByZXMgKyA0 LCAxMikgKQorICAgICAgICAgICAgZ290byBmYWlsOworCisgICAgICAgIHByaW50Zigib2theVxu Iik7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgcHJpbnRmKCJza2lwcGVkXG4iKTsKKworICAg IHByaW50ZigiJS00MHMiLCAiVGVzdGluZyB2bWFza21vdnBkICV4bW0xLCV4bW0yLCglZWR4KS4u LiIpOworICAgIGlmICggc3RhY2tfZXhlYyAmJiBjcHVfaGFzX2F2eCApCisgICAgeworICAgICAg ICBkZWNsX2luc24odm1hc2ttb3ZwZCk7CisKKyAgICAgICAgYXNtIHZvbGF0aWxlICggInZ4b3Jw ZCAlJXhtbTEsICUleG1tMSwgJSV4bW0xXG5cdCIKKyAgICAgICAgICAgICAgICAgICAgICAgInZj bXBlcXNkICUleG1tMSwgJSV4bW0xLCAlJXhtbTJcblx0IgorICAgICAgICAgICAgICAgICAgICAg ICBwdXRfaW5zbih2bWFza21vdnBkLCAidm1hc2ttb3ZwZCAlJXhtbTEsICUleG1tMiwgKCUwKSIp CisgICAgICAgICAgICAgICAgICAgICAgIDo6ICJkIiAoTlVMTCkgKTsKKworICAgICAgICBtZW1z ZXQocmVzICsgTU1BUF9TWiAvIHNpemVvZigqcmVzKSAtIDgsIDB4ZGIsIDMyKTsKKyAgICAgICAg c2V0X2luc24odm1hc2ttb3ZwZCk7CisgICAgICAgIHJlZ3MuZWR4ID0gKHVuc2lnbmVkIGxvbmcp cmVzICsgTU1BUF9TWiAtIDg7CisgICAgICAgIHJjID0geDg2X2VtdWxhdGUoJmN0eHQsICZlbXVs b3BzKTsKKyAgICAgICAgaWYgKCByYyAhPSBYODZFTVVMX09LQVkgfHwgIWNoZWNrX2VpcCh2bWFz a21vdnBkKSB8fAorICAgICAgICAgICAgIHJlc1tNTUFQX1NaIC8gc2l6ZW9mKCpyZXMpIC0gMV0g fHwKKyAgICAgICAgICAgICByZXNbTU1BUF9TWiAvIHNpemVvZigqcmVzKSAtIDJdIHx8CisgICAg ICAgICAgICAgbWVtY21wKHJlcyArIE1NQVBfU1ogLyBzaXplb2YoKnJlcykgLSA4LAorICAgICAg ICAgICAgICAgICAgICByZXMgKyBNTUFQX1NaIC8gc2l6ZW9mKCpyZXMpIC0gNCwgOCkgKQorICAg ICAgICAgICAgZ290byBmYWlsOworCisgICAgICAgIGFzbSB2b2xhdGlsZSAoICJ2bW92ZGR1cCAl eG1tMiwgJXhtbTJcblx0IgorICAgICAgICAgICAgICAgICAgICAgICAidm1vdnNkICV4bW0xLCAl eG1tMiwgJXhtbTIiICk7CisgICAgICAgIG1lbXNldChyZXMsIDB4ZGIsIDMyKTsKKyAgICAgICAg c2V0X2luc24odm1hc2ttb3ZwZCk7CisgICAgICAgIHJlZ3MuZWR4ID0gKHVuc2lnbmVkIGxvbmcp KHJlcyAtIDIpOworICAgICAgICByYyA9IHg4Nl9lbXVsYXRlKCZjdHh0LCAmZW11bG9wcyk7Cisg ICAgICAgIGlmICggcmMgIT0gWDg2RU1VTF9PS0FZIHx8ICFjaGVja19laXAodm1hc2ttb3ZwZCkg fHwKKyAgICAgICAgICAgICByZXNbMF0gfHwgcmVzWzFdIHx8IG1lbWNtcChyZXMgKyAyLCByZXMg KyA0LCA4KSApCisgICAgICAgICAgICBnb3RvIGZhaWw7CisKKyAgICAgICAgcHJpbnRmKCJva2F5 XG4iKTsKKyAgICB9CisgICAgZWxzZQogICAgICAgICBwcmludGYoInNraXBwZWRcbiIpOwogCiAg ICAgcHJpbnRmKCIlLTQwcyIsICJUZXN0aW5nIHN0bXhjc3IgKCVlZHgpLi4uIik7Ci0tLSBhL3hl bi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jCisrKyBiL3hlbi9hcmNoL3g4Ni94 ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jCkBAIC0yMjYsNiArMjI2LDEyIEBAIGVudW0gc2ltZF9v cHNpemUgewogICAgICAqLwogICAgIHNpbWRfc2NhbGFyX2ZwLAogCisgICAgLyoKKyAgICAgKiAx MjggYml0cyBvZiBpbnRlZ2VyIG9yIGZsb2F0aW5nIHBvaW50IGRhdGEsIHdpdGggbm8gZnVydGhl cgorICAgICAqIGZvcm1hdHRpbmcgaW5mb3JtYXRpb24uCisgICAgICovCisgICAgc2ltZF8xMjgs CisKICAgICAvKiBPcGVyYW5kIHNpemUgZW5jb2RlZCBpbiBub24tc3RhbmRhcmQgd2F5LiAqLwog ICAgIHNpbWRfb3RoZXIKIH07CkBAIC0zNjEsMTQgKzM2NywxOSBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IHsKICAgICB1aW50OF90IHZzaWI6MTsKIH0gZXh0MGYzOF90YWJsZVsyNTZdID0gewogICAg IFsweDAwIC4uLiAweDBiXSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfcGFja2VkX2ludCB9LAorICAg IFsweDBjIC4uLiAweDBmXSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfcGFja2VkX2ZwIH0sCiAgICAg WzB4MTBdID0geyAuc2ltZF9zaXplID0gc2ltZF9wYWNrZWRfaW50IH0sCiAgICAgWzB4MTQgLi4u IDB4MTVdID0geyAuc2ltZF9zaXplID0gc2ltZF9wYWNrZWRfZnAgfSwKICAgICBbMHgxN10gPSB7 IC5zaW1kX3NpemUgPSBzaW1kX3BhY2tlZF9pbnQsIC50d29fb3AgPSAxIH0sCisgICAgWzB4MTgg Li4uIDB4MTldID0geyAuc2ltZF9zaXplID0gc2ltZF9zY2FsYXJfZnAsIC50d29fb3AgPSAxIH0s CisgICAgWzB4MWFdID0geyAuc2ltZF9zaXplID0gc2ltZF8xMjgsIC50d29fb3AgPSAxIH0sCiAg ICAgWzB4MWMgLi4uIDB4MWVdID0geyAuc2ltZF9zaXplID0gc2ltZF9wYWNrZWRfaW50LCAudHdv X29wID0gMSB9LAogICAgIFsweDIwIC4uLiAweDI1XSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfb3Ro ZXIsIC50d29fb3AgPSAxIH0sCiAgICAgWzB4MjggLi4uIDB4MjldID0geyAuc2ltZF9zaXplID0g c2ltZF9wYWNrZWRfaW50IH0sCiAgICAgWzB4MmFdID0geyAuc2ltZF9zaXplID0gc2ltZF9wYWNr ZWRfaW50LCAudHdvX29wID0gMSB9LAogICAgIFsweDJiXSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRf cGFja2VkX2ludCB9LAorICAgIFsweDJjIC4uLiAweDJkXSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRf b3RoZXIgfSwKKyAgICBbMHgyZSAuLi4gMHgyZl0gPSB7IC5zaW1kX3NpemUgPSBzaW1kX290aGVy LCAudG9fbWVtID0gMSB9LAogICAgIFsweDMwIC4uLiAweDM1XSA9IHsgLnNpbWRfc2l6ZSA9IHNp bWRfb3RoZXIsIC50d29fb3AgPSAxIH0sCiAgICAgWzB4MzcgLi4uIDB4M2ZdID0geyAuc2ltZF9z aXplID0gc2ltZF9wYWNrZWRfaW50IH0sCiAgICAgWzB4NDBdID0geyAuc2ltZF9zaXplID0gc2lt ZF9wYWNrZWRfaW50IH0sCkBAIC0zOTEsMTEgKzQwMiwxNSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IHsKICAgICB1aW50OF90IHR3b19vcDoxOwogICAgIHVpbnQ4X3QgZm91cl9vcDoxOwogfSBleHQw ZjNhX3RhYmxlWzI1Nl0gPSB7CisgICAgWzB4MDQgLi4uIDB4MDVdID0geyAuc2ltZF9zaXplID0g c2ltZF9wYWNrZWRfZnAsIC50d29fb3AgPSAxIH0sCisgICAgWzB4MDZdID0geyAuc2ltZF9zaXpl ID0gc2ltZF9wYWNrZWRfZnAgfSwKICAgICBbMHgwOCAuLi4gMHgwOV0gPSB7IC5zaW1kX3NpemUg PSBzaW1kX3BhY2tlZF9mcCwgLnR3b19vcCA9IDEgfSwKICAgICBbMHgwYSAuLi4gMHgwYl0gPSB7 IC5zaW1kX3NpemUgPSBzaW1kX3NjYWxhcl9mcCB9LAogICAgIFsweDBjIC4uLiAweDBkXSA9IHsg LnNpbWRfc2l6ZSA9IHNpbWRfcGFja2VkX2ZwIH0sCiAgICAgWzB4MGUgLi4uIDB4MGZdID0geyAu c2ltZF9zaXplID0gc2ltZF9wYWNrZWRfaW50IH0sCiAgICAgWzB4MTQgLi4uIDB4MTddID0geyAu c2ltZF9zaXplID0gc2ltZF9ub25lLCAudG9fbWVtID0gMSwgLnR3b19vcCA9IDEgfSwKKyAgICBb MHgxOF0gPSB7IC5zaW1kX3NpemUgPSBzaW1kXzEyOCB9LAorICAgIFsweDE5XSA9IHsgLnNpbWRf c2l6ZSA9IHNpbWRfMTI4LCAudG9fbWVtID0gMSwgLnR3b19vcCA9IDEgfSwKICAgICBbMHgyMF0g PSB7IC5zaW1kX3NpemUgPSBzaW1kX25vbmUgfSwKICAgICBbMHgyMV0gPSB7IC5zaW1kX3NpemUg PSBzaW1kX290aGVyIH0sCiAgICAgWzB4MjJdID0geyAuc2ltZF9zaXplID0gc2ltZF9ub25lIH0s CkBAIC00NjksMTUgKzQ4NCwxOCBAQCB1bmlvbiB2ZXggewogICAgIGJ1Zl8gKyAzOyBcCiB9KQog CisjZGVmaW5lIGNvcHlfVkVYKHB0ciwgdmV4KSAoeyBcCisgICAgaWYgKCAhbW9kZV82NGJpdCgp ICkgXAorICAgICAgICAodmV4KS5yZWcgfD0gODsgXAorICAgIChwdHIpWzAgLSBQRlhfQllURVNd ID0gMHhjNDsgXAorICAgIChwdHIpWzEgLSBQRlhfQllURVNdID0gKHZleCkucmF3WzBdOyBcCisg ICAgKHB0cilbMiAtIFBGWF9CWVRFU10gPSAodmV4KS5yYXdbMV07IFwKKyAgICBjb250YWluZXJf b2YoKHB0cikgKyAxIC0gUEZYX0JZVEVTLCB0eXBlb2YodmV4KSwgcmF3WzBdKTsgXAorfSkKKwog I2RlZmluZSBjb3B5X1JFWF9WRVgocHRyLCByZXgsIHZleCkgZG8geyBcCiAgICAgaWYgKCAodmV4 KS5vcGN4ICE9IHZleF9ub25lICkgXAotICAgIHsgXAotICAgICAgICBpZiAoICFtb2RlXzY0Yml0 KCkgKSBcCi0gICAgICAgICAgICB2ZXgucmVnIHw9IDg7IFwKLSAgICAgICAgKHB0cilbMCAtIFBG WF9CWVRFU10gPSAweGM0OyBcCi0gICAgICAgIChwdHIpWzEgLSBQRlhfQllURVNdID0gKHZleCku cmF3WzBdOyBcCi0gICAgICAgIChwdHIpWzIgLSBQRlhfQllURVNdID0gKHZleCkucmF3WzFdOyBc Ci0gICAgfSBcCisgICAgICAgIGNvcHlfVkVYKHB0ciwgdmV4KTsgXAogICAgIGVsc2UgXAogICAg IHsgXAogICAgICAgICBpZiAoICh2ZXgpLnBmeCApIFwKQEAgLTI5NDEsNiArMjk1OSwxMCBAQCB4 ODZfZGVjb2RlKAogICAgICAgICBvcF9ieXRlcyA9IDQgPDwgKGN0eHQtPm9wY29kZSAmIDEpOwog ICAgICAgICBicmVhazsKIAorICAgIGNhc2Ugc2ltZF8xMjg6CisgICAgICAgIG9wX2J5dGVzID0g MTY7CisgICAgICAgIGJyZWFrOworCiAgICAgZGVmYXVsdDoKICAgICAgICAgb3BfYnl0ZXMgPSAw OwogICAgICAgICBicmVhazsKQEAgLTI5NjcsNiArMjk4OSw3IEBAIHg4Nl9lbXVsYXRlKAogICAg IHN0cnVjdCB4ODZfZW11bGF0ZV9zdGF0ZSBzdGF0ZTsKICAgICBpbnQgcmM7CiAgICAgdWludDhf dCBiLCBkLCAqb3BjID0gTlVMTDsKKyAgICB1bnNpZ25lZCBpbnQgZmlyc3RfYnl0ZSA9IDA7CiAg ICAgYm9vbCBzaW5nbGVzdGVwID0gKF9yZWdzLmVmbGFncyAmIFg4Nl9FRkxBR1NfVEYpICYmCiAJ ICAgICFpc19icmFuY2hfc3RlcChjdHh0LCBvcHMpOwogICAgIGJvb2wgc2ZlbmNlID0gZmFsc2U7 CkBAIC03MTE5LDYgKzcxNDIsMTggQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgIGZpYy5pbnNuX2J5 dGVzID0gUEZYX0JZVEVTICsgMzsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFg4NkVNVUxf T1BDX1ZFWF82NigweDBmMzgsIDB4MTkpOiAvKiB2YnJvYWRjYXN0c2QgbTY0LHltbSAqLworICAg IGNhc2UgWDg2RU1VTF9PUENfVkVYXzY2KDB4MGYzOCwgMHgxYSk6IC8qIHZicm9hZGNhc3RmMTI4 IG0xMjgseW1tICovCisgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZighdmV4LmwsIEVYQ19V RCk7CisgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLworICAgIGNhc2UgWDg2RU1VTF9PUENfVkVY XzY2KDB4MGYzOCwgMHgxOCk6IC8qIHZicm9hZGNhc3RzcyBtMzIse3gseX1tbSAqLworICAgICAg ICBnZW5lcmF0ZV9leGNlcHRpb25faWYoZWEudHlwZSAhPSBPUF9NRU0sIEVYQ19VRCk7CisgICAg ICAgIC8qIGZhbGwgdGhyb3VnaCAqLworICAgIGNhc2UgWDg2RU1VTF9PUENfVkVYXzY2KDB4MGYz OCwgMHgwYyk6IC8qIHZwZXJtaWxwcyB7eCx5fW1tL21lbSx7eCx5fW1tLHt4LHl9bW0gKi8KKyAg ICBjYXNlIFg4NkVNVUxfT1BDX1ZFWF82NigweDBmMzgsIDB4MGQpOiAvKiB2cGVybWlscGQge3gs eX1tbS9tZW0se3gseX1tbSx7eCx5fW1tICovCisgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9p Zih2ZXgudywgRVhDX1VEKTsKKyAgICAgICAgZ290byBzaW1kXzBmX2F2eDsKKwogICAgIGNhc2Ug WDg2RU1VTF9PUENfNjYoMHgwZjM4LCAweDIwKTogLyogcG1vdnN4YncgeG1tL202NCx4bW0gKi8K ICAgICBjYXNlIFg4NkVNVUxfT1BDXzY2KDB4MGYzOCwgMHgyMSk6IC8qIHBtb3ZzeGJkIHhtbS9t MzIseG1tICovCiAgICAgY2FzZSBYODZFTVVMX09QQ182NigweDBmMzgsIDB4MjIpOiAvKiBwbW92 c3hicSB4bW0vbTE2LHhtbSAqLwpAQCAtNzE1Miw2ICs3MTg3LDEwIEBAIHg4Nl9lbXVsYXRlKAog ICAgICAgICBob3N0X2FuZF92Y3B1X211c3RfaGF2ZShzc2U0XzEpOwogICAgICAgICBnb3RvIHNp bWRfMGYzOF9jb21tb247CiAKKyAgICBjYXNlIFg4NkVNVUxfT1BDX1ZFWF82NigweDBmMzgsIDB4 MGUpOiAvKiB2dGVzdHBzIHt4LHl9bW0vbWVtLHt4LHl9bW0gKi8KKyAgICBjYXNlIFg4NkVNVUxf T1BDX1ZFWF82NigweDBmMzgsIDB4MGYpOiAvKiB2dGVzdHBkIHt4LHl9bW0vbWVtLHt4LHl9bW0g Ki8KKyAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKHZleC53LCBFWENfVUQpOworICAgICAg ICAvKiBmYWxsIHRocm91Z2ggKi8KICAgICBjYXNlIFg4NkVNVUxfT1BDXzY2KDB4MGYzOCwgMHgx Nyk6ICAgICAvKiBwdGVzdCB4bW0vbTEyOCx4bW0gKi8KICAgICBjYXNlIFg4NkVNVUxfT1BDX1ZF WF82NigweDBmMzgsIDB4MTcpOiAvKiB2cHRlc3Qge3gseX1tbS9tZW0se3gseX1tbSAqLwogICAg ICAgICBpZiAoIHZleC5vcGN4ID09IHZleF9ub25lICkKQEAgLTcyMzIsNiArNzI3MSw2OSBAQCB4 ODZfZW11bGF0ZSgKICAgICAgICAgfQogICAgICAgICBnb3RvIG1vdmRxYTsKIAorICAgIGNhc2Ug WDg2RU1VTF9PUENfVkVYXzY2KDB4MGYzOCwgMHgyYyk6IC8qIHZtYXNrbW92cHMgbWVtLHt4LHl9 bW0se3gseX1tbSAqLworICAgIGNhc2UgWDg2RU1VTF9PUENfVkVYXzY2KDB4MGYzOCwgMHgyZCk6 IC8qIHZtYXNrbW92cGQgbWVtLHt4LHl9bW0se3gseX1tbSAqLworICAgIGNhc2UgWDg2RU1VTF9P UENfVkVYXzY2KDB4MGYzOCwgMHgyZSk6IC8qIHZtYXNrbW92cHMge3gseX1tbSx7eCx5fW1tLG1l bSAqLworICAgIGNhc2UgWDg2RU1VTF9PUENfVkVYXzY2KDB4MGYzOCwgMHgyZik6IC8qIHZtYXNr bW92cGQge3gseX1tbSx7eCx5fW1tLG1lbSAqLworICAgIHsKKyAgICAgICAgdHlwZW9mKHZleCkg KnB2ZXg7CisKKyAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKGVhLnR5cGUgIT0gT1BfTUVN IHx8IHZleC53LCBFWENfVUQpOworICAgICAgICBob3N0X2FuZF92Y3B1X211c3RfaGF2ZShhdngp OworICAgICAgICBnZXRfZnB1KFg4NkVNVUxfRlBVX3ltbSwgJmZpYyk7CisKKyAgICAgICAgLyoK KyAgICAgICAgICogV2hpbGUgd2UgY2FuJ3QgcmVhc29uYWJseSBwcm92aWRlIGZ1bGx5IGNvcnJl Y3QgYmVoYXZpb3IgaGVyZQorICAgICAgICAgKiAoaW4gcGFydGljdWxhciwgZm9yIHdyaXRlcywg YXZvaWRpbmcgdGhlIG1lbW9yeSByZWFkIGluIGFudGljaXBhdGlvbgorICAgICAgICAgKiBvZiBh bGwgZWxlbWVudHMgaW4gdGhlIHJhbmdlIGV2ZW50dWFsbHkgYmVpbmcgd3JpdHRlbiksIHdlIGNh biAoYW5kCisgICAgICAgICAqIHNob3VsZCkgc3RpbGwgbGltaXQgdGhlIG1lbW9yeSBhY2Nlc3Mg dG8gdGhlIHNtYWxsZXN0IHBvc3NpYmxlIHJhbmdlCisgICAgICAgICAqIChzdXBwcmVzc2luZyBp dCBhbHRvZ2V0aGVyIGlmIGFsbCBtYXNrIGJpdHMgYXJlIGNsZWFyKSwgdG8gcHJvdmlkZQorICAg ICAgICAgKiBjb3JyZWN0IGZhdWx0aW5nIGJlaGF2aW9yLiBSZWFkIHRoZSBtYXNrIGJpdHMgdmlh IHZtb3Ztc2twe3MsZH0KKyAgICAgICAgICogZm9yIHRoYXQgcHVycG9zZS4KKyAgICAgICAgICov CisgICAgICAgIG9wYyA9IGluaXRfcHJlZml4ZXMoc3R1Yik7CisgICAgICAgIHB2ZXggPSBjb3B5 X1ZFWChvcGMsIHZleCk7CisgICAgICAgIHB2ZXgtPm9wY3ggPSB2ZXhfMGY7CisgICAgICAgIGlm ICggIShiICYgMSkgKQorICAgICAgICAgICAgcHZleC0+cGZ4ID0gdmV4X25vbmU7CisgICAgICAg IG9wY1swXSA9IDB4NTA7IC8qIHZtb3Ztc2twe3MsZH0gKi8KKyAgICAgICAgLyogVXNlICVyYXgg YXMgR1BSIGRlc3RpbmF0aW9uIGFuZCBWRVgudnZ2diBhcyBzb3VyY2UuICovCisgICAgICAgIHB2 ZXgtPnIgPSAxOworICAgICAgICBwdmV4LT5iID0gIW1vZGVfNjRiaXQoKSB8fCAodmV4LnJlZyA+ PiAzKTsKKyAgICAgICAgb3BjWzFdID0gMHhjMCB8ICh+dmV4LnJlZyAmIDcpOworICAgICAgICBw dmV4LT5yZWcgPSAweGY7CisgICAgICAgIG9wY1syXSA9IDB4YzM7CisKKyAgICAgICAgaW52b2tl X3N0dWIoIiIsICIiLCAiPWEiIChlYS52YWwpIDogW2R1bW15XSAiaSIgKDApKTsKKyAgICAgICAg cHV0X3N0dWIoc3R1Yik7CisKKyAgICAgICAgaWYgKCAhZWEudmFsICkKKyAgICAgICAgICAgIGdv dG8gY29tcGxldGVfaW5zbjsKKworICAgICAgICBvcF9ieXRlcyA9IDQgPDwgKGIgJiAxKTsKKyAg ICAgICAgZmlyc3RfYnl0ZSA9IF9fYnVpbHRpbl9jdHooZWEudmFsKTsKKyAgICAgICAgZWEudmFs ID4+PSBmaXJzdF9ieXRlOworICAgICAgICBmaXJzdF9ieXRlICo9IG9wX2J5dGVzOworICAgICAg ICBvcF9ieXRlcyAqPSAzMiAtIF9fYnVpbHRpbl9jbHooZWEudmFsKTsKKworICAgICAgICAvKgor ICAgICAgICAgKiBFdmVuIGZvciB0aGUgbWVtb3J5IHdyaXRlIHZhcmlhbnQgYSBtZW1vcnkgcmVh ZCBpcyBuZWVkZWQsIHVubGVzcworICAgICAgICAgKiBhbGwgc2V0IG1hc2sgYml0cyBhcmUgY29u dGlndW91cy4KKyAgICAgICAgICovCisgICAgICAgIGlmICggZWEudmFsICYgKGVhLnZhbCArIDEp ICkKKyAgICAgICAgICAgIGQgPSAoZCAmIH5TcmNNYXNrKSB8IFNyY01lbTsKKworICAgICAgICBv cGMgPSBpbml0X3ByZWZpeGVzKHN0dWIpOworICAgICAgICBvcGNbMF0gPSBiOworICAgICAgICAv KiBDb252ZXJ0IG1lbW9yeSBvcGVyYW5kIHRvICglckFYKS4gKi8KKyAgICAgICAgcmV4X3ByZWZp eCAmPSB+UkVYX0I7CisgICAgICAgIHZleC5iID0gMTsKKyAgICAgICAgb3BjWzFdID0gbW9kcm0g JiAweDM4OworICAgICAgICBmaWMuaW5zbl9ieXRlcyA9IFBGWF9CWVRFUyArIDI7CisKKyAgICAg ICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBYODZFTVVMX09QQ182NigweDBmMzgsIDB4Mzcp OiAvKiBwY21wZ3RxIHhtbS9tMTI4LHhtbSAqLwogICAgICAgICBob3N0X2FuZF92Y3B1X211c3Rf aGF2ZShzc2U0XzIpOwogICAgICAgICBnb3RvIHNpbWRfMGYzOF9jb21tb247CkBAIC03NDI3LDYg Kzc1MjksMTYgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAi MCIgKCh1aW50MzJfdClzcmMudmFsKSwgInJtIiAoX3JlZ3MuZWR4KSApOwogICAgICAgICBicmVh azsKIAorICAgIGNhc2UgWDg2RU1VTF9PUENfVkVYXzY2KDB4MGYzYSwgMHgwNik6IC8qIHZwZXJt MmYxMjggJGltbTgseW1tL20yNTYseW1tLHltbSAqLworICAgIGNhc2UgWDg2RU1VTF9PUENfVkVY XzY2KDB4MGYzYSwgMHgxOCk6IC8qIHZpbnNlcnRmMTI4ICRpbW04LHhtbS9tMTI4LHltbSx5bW0g Ki8KKyAgICBjYXNlIFg4NkVNVUxfT1BDX1ZFWF82NigweDBmM2EsIDB4MTkpOiAvKiB2ZXh0cmFj dGYxMjggJGltbTgseW1tLHhtbS9tMTI4ICovCisgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9p ZighdmV4LmwsIEVYQ19VRCk7CisgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLworICAgIGNhc2Ug WDg2RU1VTF9PUENfVkVYXzY2KDB4MGYzYSwgMHgwNCk6IC8qIHZwZXJtaWxwcyAkaW1tOCx7eCx5 fW1tL21lbSx7eCx5fW1tICovCisgICAgY2FzZSBYODZFTVVMX09QQ19WRVhfNjYoMHgwZjNhLCAw eDA1KTogLyogdnBlcm1pbHBkICRpbW04LHt4LHl9bW0vbWVtLHt4LHl9bW0gKi8KKyAgICAgICAg Z2VuZXJhdGVfZXhjZXB0aW9uX2lmKHZleC53LCBFWENfVUQpOworICAgICAgICBnb3RvIHNpbWRf MGZfaW1tOF9hdng7CisKICAgICBjYXNlIFg4NkVNVUxfT1BDKDB4MGYzYSwgMHgwZik6ICAgIC8q IHBhbGlnbnIgJGltbTgsbW0vbTY0LG1tICovCiAgICAgY2FzZSBYODZFTVVMX09QQ182NigweDBm M2EsIDB4MGYpOiAvKiBwYWxpZ25yICRpbW04LHhtbS9tMTI4LHhtbSAqLwogICAgICAgICBob3N0 X2FuZF92Y3B1X211c3RfaGF2ZShzc3NlMyk7CkBAIC03NzgwLDcgKzc4OTIsOSBAQCB4ODZfZW11 bGF0ZSgKICAgICAgICAgICAgIHN3aXRjaCAoIGQgJiBTcmNNYXNrICkKICAgICAgICAgICAgIHsK ICAgICAgICAgICAgIGNhc2UgU3JjTWVtOgotICAgICAgICAgICAgICAgIHJjID0gb3BzLT5yZWFk KGVhLm1lbS5zZWcsIGVhLm1lbS5vZmYsIG1tdmFscCwgb3BfYnl0ZXMsIGN0eHQpOworICAgICAg ICAgICAgICAgIHJjID0gb3BzLT5yZWFkKGVhLm1lbS5zZWcsIGVhLm1lbS5vZmYgKyBmaXJzdF9i eXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopbW12YWxwICsgZmly c3RfYnl0ZSwgb3BfYnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4dCk7 CiAgICAgICAgICAgICAgICAgaWYgKCByYyAhPSBYODZFTVVMX09LQVkgKQogICAgICAgICAgICAg ICAgICAgICBnb3RvIGRvbmU7CiAgICAgICAgICAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCkBA IC03Nzk4LDcgKzc5MTIsMjEgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgICAgICBpZiAoIChkICYg RHN0TWFzaykgPT0gRHN0TWVtICkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBmYWls X2lmKCFvcHMtPndyaXRlKTsgLyogQ2hlY2sgYmVmb3JlIHJ1bm5pbmcgdGhlIHN0dWIuICovCi0g ICAgICAgICAgICAgICAgQVNTRVJUKGQgJiBNb3YpOworICAgICAgICAgICAgICAgIGlmICggKGQg JiBTcmNNYXNrKSA9PSBTcmNNZW0gKQorICAgICAgICAgICAgICAgICAgICBkIHw9IE1vdjsgLyog Rm9yY2UgbWVtb3J5IHdyaXRlIHRvIG9jY3VyIGJlbG93LiAqLworCisgICAgICAgICAgICAgICAg c3dpdGNoICggY3R4dC0+b3Bjb2RlICkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgY2FzZSBYODZFTVVMX09QQ19WRVhfNjYoMHgwZjM4LCAweDJlKTogLyogdm1hc2ttb3ZwcyAq LworICAgICAgICAgICAgICAgIGNhc2UgWDg2RU1VTF9PUENfVkVYXzY2KDB4MGYzOCwgMHgyZik6 IC8qIHZtYXNrbW92cGQgKi8KKyAgICAgICAgICAgICAgICAgICAgLyogVGhlc2UgaGF2ZSBtZXJn ZSBzZW1hbnRpY3M7IGZvcmNlIHdyaXRlIHRvIG9jY3VyLiAqLworICAgICAgICAgICAgICAgICAg ICBkIHw9IE1vdjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGQgJiBNb3YpOworICAgICAgICAg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICBk c3QudHlwZSA9IE9QX01FTTsKICAgICAgICAgICAgICAgICBkc3QuYnl0ZXMgPSBvcF9ieXRlczsK ICAgICAgICAgICAgICAgICBkc3QubWVtID0gZWEubWVtOwpAQCAtNzg0Niw4ICs3OTc0LDkgQEAg eDg2X2VtdWxhdGUoCiAgICAgICAgIGVsc2UKICAgICAgICAgewogICAgICAgICAgICAgZmFpbF9p Zighb3BzLT53cml0ZSk7Ci0gICAgICAgICAgICByYyA9IG9wcy0+d3JpdGUoZHN0Lm1lbS5zZWcs IGRzdC5tZW0ub2ZmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICFzdGF0ZS0+c2ltZF9z aXplID8gJmRzdC52YWwgOiAodm9pZCAqKW1tdmFscCwKKyAgICAgICAgICAgIHJjID0gb3BzLT53 cml0ZShkc3QubWVtLnNlZywgZHN0Lm1lbS5vZmYgKyBmaXJzdF9ieXRlLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICFzdGF0ZS0+c2ltZF9zaXplID8gJmRzdC52YWwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICh2b2lkICopbW12YWxwICsgZmly c3RfYnl0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3QuYnl0ZXMsIGN0eHQpOwog ICAgICAgICAgICAgaWYgKCBzZmVuY2UgKQogICAgICAgICAgICAgICAgIGFzbSB2b2xhdGlsZSAo ICJzZmVuY2UiIDo6OiAibWVtb3J5IiApOwoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0 cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK