From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH v2 3/6] x86emul: support AVX512 opmask insns Date: Wed, 29 Aug 2018 08:24:13 -0600 Message-ID: <5B86AC8D02000078001E31F3@prv1-mh.provo.novell.com> References: <5B6BF83602000078001DC548@prv1-mh.provo.novell.com> <5B86AB9002000078001E31E3@prv1-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1fv1OM-0007DP-0a for xen-devel@lists.xenproject.org; Wed, 29 Aug 2018 14:24:18 +0000 In-Reply-To: <5B86AB9002000078001E31E3@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: Andrew Cooper List-Id: xen-devel@lists.xenproject.org VGhlc2UgYXJlIGFsbCBWRVggZW5jb2RlZCwgc28gdGhlIEVWRVggZGVjb2RpbmcgbG9naWMgY29u dGludWVzIHRvCnJlbWFpbiB1bnVzZWQgYXQgdGhpcyBwb2ludC4KClRoZSBuZXcgdGVzdGNhc2Ug aXMgZGVsaWJlcmF0ZWx5IGNvZGVkIGluIGFzc2VtYmx5LCBhcyBhIEMgb25lIHdvdWxkCmhhdmUg YmVjb21lIGFsbW9zdCB1bnJlYWRhYmxlIGR1ZSB0byB0aGUgb3ZlcndoZWxtaW5nIGFtb3VudCBv ZgpfX2J1aWx0aW5fLi4uKCkgdGhhdCB3b3VsZCBuZWVkIHRvIGJlIHVzZWQuIEFmdGVyIGFsbCB0 aGUgY29tcGlsZXIgaGFzCm5vIHVuZGVybHlpbmcgdHlwZSAoeWV0KSB0aGF0IGNvdWxkIGJlIG9w ZXJhdGVkIG9uIHdpdGhvdXQgYnVpbHRpbnMsCm90aGVyIHRoYW4gdGhlIHZlY3RvciB0eXBlcyB1 c2VkIGZvciAibm9ybWFsIiBTSU1EIGluc25zLgoKU2lnbmVkLW9mZi1ieTogSmFuIEJldWxpY2gg PGpiZXVsaWNoQHN1c2UuY29tPgoKLS0tIGEvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL01ha2Vm aWxlCisrKyBiL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci9NYWtlZmlsZQpAQCAtMTYsNiArMTYs OCBAQCBGTUEgOj0gZm1hNCBmbWEKIFNHIDo9IGF2eDItc2cKIFRFU1RDQVNFUyA6PSBibG93Zmlz aCAkKFNJTUQpICQoRk1BKSAkKFNHKQogCitPUE1BU0sgOj0gYXZ4NTEyZiBhdng1MTJkcSBhdng1 MTJidworCiBibG93ZmlzaC1jZmxhZ3MgOj0gIiIKIGJsb3dmaXNoLWNmbGFncy14ODZfMzIgOj0g Ii1tbm8tYWNjdW11bGF0ZS1vdXRnb2luZy1hcmdzIC1Ec3RhdGljPSIKIApAQCAtNTEsNiArNTMs MTAgQEAgeG9wLXZlY3MgOj0gJChhdngtdmVjcykKIHhvcC1pbnRzIDo9IDEgMiA0IDgKIHhvcC1m bHRzIDo9ICQoYXZ4LWZsdHMpCiAKK2F2eDUxMmYtb3BtYXNrLXZlY3MgOj0gMgorYXZ4NTEyZHEt b3BtYXNrLXZlY3MgOj0gMQorYXZ4NTEyYnctb3BtYXNrLXZlY3MgOj0gNCA4CisKICMgRm9yIEFW WCBhbmQgbGF0ZXIsIGhhdmUgdGhlIGNvbXBpbGVyIGF2b2lkIFhNTTAgdG8gd2lkZW4gY292ZXJh Z2Ugb2YKICMgdGhlIFZFWC52dnZ2IGNoZWNrcyBpbiB0aGUgZW11bGF0b3IuICBGb3IgM0ROb3ch LCBob3dldmVyLCBmb3JjZSBTU0UKICMgdXNlIGZvciBmbG9hdGluZyBwb2ludCBvcGVyYXRpb25z LCB0byBhdm9pZCBtaXhpbmcgTU1YIGFuZCBGUFUgcmVnaXN0ZXIKQEAgLTgwLDkgKzg2LDEzIEBA ICQoMSktY2ZsYWdzIDo9IFwKIAkgICAkKGZvcmVhY2ggZmx0LCQoJCgxKS1mbHRzKSwgXAogCSAg ICAgIi1EXyQodmVjKXgkKGlkeClmJChmbHQpIC1tJCgxOi1zZz0pICQoY2FsbCBub24tc3NlLCQo MSkpIC1PcyAtRFZFQ19NQVg9JCh2ZWMpIC1ESURYX1NJWkU9JChpZHgpIC1ERkxPQVRfU0laRT0k KGZsdCkiKSkpCiBlbmRlZgorZGVmaW5lIG9wbWFzay1kZWZzCiskKDEpLW9wbWFzay1jZmxhZ3Mg Oj0gJChmb3JlYWNoIHZlYywkKCQoMSktb3BtYXNrLXZlY3MpLCAiLURfJCh2ZWMpIC1tJCgxKSAt T3MgLURTSVpFPSQodmVjKSIpCitlbmRlZgogCiAkKGZvcmVhY2ggZmxhdm9yLCQoU0lNRCkgJChG TUEpLCQoZXZhbCAkKGNhbGwgc2ltZC1kZWZzLCQoZmxhdm9yKSkpKQogJChmb3JlYWNoIGZsYXZv ciwkKFNHKSwkKGV2YWwgJChjYWxsIHNpbWQtc2ctZGVmcywkKGZsYXZvcikpKSkKKyQoZm9yZWFj aCBmbGF2b3IsJChPUE1BU0spLCQoZXZhbCAkKGNhbGwgb3BtYXNrLWRlZnMsJChmbGF2b3IpKSkp CiAKICQoYWRkc3VmZml4IC5oLCQoVEVTVENBU0VTKSk6ICUuaDogJS5jIHRlc3RjYXNlLm1rIE1h a2VmaWxlCiAJcm0gLWYgJEAubmV3ICQqLmJpbgpAQCAtMTAwLDYgKzExMCwyMiBAQCAkKGFkZHN1 ZmZpeCAuaCwkKFRFU1RDQVNFUykpOiAlLmg6ICUuYyB0CiAJKQogCW12ICRALm5ldyAkQAogCisk KGFkZHN1ZmZpeCAtb3BtYXNrLmgsJChPUE1BU0spKTogJS5oOiBvcG1hc2suUyB0ZXN0Y2FzZS5t ayBNYWtlZmlsZQorCXJtIC1mICRALm5ldyAkKi5iaW4KKwkkKGZvcmVhY2ggYXJjaCwkKGZpbHRl ci1vdXQgJChYRU5fQ09NUElMRV9BUkNIKSx4ODZfMzIpICQoWEVOX0NPTVBJTEVfQVJDSCksIFwK KwkgICAgZm9yIGNmbGFncyBpbiAkKCQqLWNmbGFncykgJCgkKi1jZmxhZ3MtJChhcmNoKSk7IGRv IFwKKwkJJChNQUtFKSAtZiB0ZXN0Y2FzZS5tayBURVNUQ0FTRT0kKiBYRU5fVEFSR0VUX0FSQ0g9 JChhcmNoKSAkKi1jZmxhZ3M9IiQkY2ZsYWdzIiBhbGw7IFwKKwkJcHJlZml4PSQoc2hlbGwgZWNo byAkKHN1YnN0IC0sXywkKikgfCBzZWQgLWUgJ3MsXlwoWzAtOV1cKSxfXDEsJyk7IFwKKwkJZmxh dm9yPSQkKGVjaG8gJCR7Y2ZsYWdzfSB8IHNlZCAtZSAncywgLiosLCcgLWUgJ3ksLT0sX18sJykg OyBcCisJCShlY2hvICdzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IF9fYXR0cmlidXRlX18oKHNl Y3Rpb24oIi50ZXN0LCBcImF4XCIsIEBwcm9nYml0cyAjIikpKScgXAorCQkgICAgICAiJCR7cHJl Zml4fV8kKGFyY2gpJCR7Zmxhdm9yfVtdID0geyI7IFwKKwkJIG9kIC12IC10IHggJCouYmluIHwg c2VkIC1lICdzL15bMC05XSogLzB4LycgLWUgJ3MvIC8sIDB4L2cnIC1lICdzLyQkLywvJzsgXAor CQkgZWNobyAifTsiKSA+PiRALm5ldzsgXAorCQlybSAtZiAkKi5iaW47IFwKKwkgICAgZG9uZTsg XAorCSkKKwltdiAkQC5uZXcgJEAKKwogJChhZGRzdWZmaXggLmMsJChTSU1EKSk6CiAJbG4gLXNm IHNpbWQuYyAkQAogCkBAIC0xNDUsNCArMTcxLDQgQEAgeDg2LWVtdWxhdGUubyB0ZXN0X3g4Nl9l bXVsYXRvci5vIHdyYXBwZQogeDg2LWVtdWxhdGUubzogeDg2X2VtdWxhdGUveDg2X2VtdWxhdGUu YwogeDg2LWVtdWxhdGUubzogSE9TVENGTEFHUyArPSAtRF9fWEVOX1RPT0xTX18KIAotdGVzdF94 ODZfZW11bGF0b3IubzogJChhZGRzdWZmaXggLmgsJChURVNUQ0FTRVMpKQordGVzdF94ODZfZW11 bGF0b3IubzogJChhZGRzdWZmaXggLmgsJChURVNUQ0FTRVMpKSAkKGFkZHN1ZmZpeCAtb3BtYXNr LmgsJChPUE1BU0spKQotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRv ci9vcG1hc2suUwpAQCAtMCwwICsxLDE0NCBAQAorI2lmZGVmIF9faTM4Nl9fCisjIGRlZmluZSBS KHgpIGUjI3gKKyMgZGVmaW5lIERBVEEoeCkgeAorI2Vsc2UKKyMgaWYgU0laRSA9PSA4CisjICBk ZWZpbmUgUih4KSByIyN4CisjIGVsc2UKKyMgIGRlZmluZSBSKHgpIGUjI3gKKyMgZW5kaWYKKyMg ZGVmaW5lIERBVEEoeCkgeCglcmlwKQorI2VuZGlmCisKKyNpZiBTSVpFID09IDEKKyMgZGVmaW5l IF8oeCkgeCMjYgorI2VsaWYgU0laRSA9PSAyCisjIGRlZmluZSBfKHgpIHgjI3cKKyMgZGVmaW5l IFdJREVOKHgpIHgjI2J3CisjZWxpZiBTSVpFID09IDQKKyMgZGVmaW5lIF8oeCkgeCMjZAorIyBk ZWZpbmUgV0lERU4oeCkgeCMjd2QKKyNlbGlmIFNJWkUgPT0gOAorIyBkZWZpbmUgXyh4KSB4IyNx CisjIGRlZmluZSBXSURFTih4KSB4IyNkcQorI2VuZGlmCisKKyAgICAubWFjcm8gY2hlY2sgcmVz MTpyZXEsIHJlczI6cmVxLCBsaW5lOnJlcQorICAgIF8oa21vdikgICAgICAgJVxyZXMxLCBEQVRB KG91dCkKKyNpZiBTSVpFIDwgOCB8fCAhZGVmaW5lZChfX2kzODZfXykKKyAgICBfKGttb3YpICAg ICAgICVccmVzMiwgJVIoZHgpCisgICAgY21wICAgICAgICAgICBEQVRBKG91dCksICVSKGR4KQor I2Vsc2UKKyAgICBzdWIgICAgICAgICAgICQ4LCAlZXNwCisgICAga21vdnEgICAgICAgICAlXHJl czIsICglZXNwKQorICAgIHBvcCAgICAgICAgICAgJWVjeAorICAgIHBvcCAgICAgICAgICAgJWVk eAorICAgIGNtcCAgICAgICAgICAgREFUQShvdXQpLCAlZWN4CisgICAgam5lICAgICAgICAgICAw ZgorICAgIGNtcCAgICAgICAgICAgREFUQShvdXQrNCksICVlZHgKKzA6CisjZW5kaWYKKyAgICBq ZSAgICAgICAgICAgIDFmCisgICAgbW92ICAgICAgICAgICAkXGxpbmUsICVlYXgKKyAgICByZXQK KzE6CisgICAgLmVuZG0KKworICAgIC50ZXh0CisgICAgLmdsb2JsIF9zdGFydAorX3N0YXJ0Ogor ICAgIF8oa21vdikgICAgICAgREFUQShpbjEpLCAlazEKKyNpZiBTSVpFIDwgOCB8fCAhZGVmaW5l ZChfX2kzODZfXykKKyAgICBtb3YgICAgICAgICAgIERBVEEoaW4yKSwgJVIoYXgpCisgICAgXyhr bW92KSAgICAgICAlUihheCksICVrMgorI2Vsc2UKKyAgICBfKGttb3YpICAgICAgIERBVEEoaW4y KSwgJWsyCisjZW5kaWYKKworICAgIF8oa29yKSAgICAgICAgJWsxLCAlazIsICVrMworICAgIF8o a2FuZCkgICAgICAgJWsxLCAlazIsICVrNAorICAgIF8oa2FuZG4pICAgICAgJWszLCAlazQsICVr NQorICAgIF8oa3hvcikgICAgICAgJWsxLCAlazIsICVrNgorICAgIGNoZWNrICAgICAgICAgazUs IGs2LCBfX0xJTkVfXworCisgICAgXyhrbm90KSAgICAgICAlazYsICVrMworICAgIF8oa3hub3Ip ICAgICAgJWsxLCAlazIsICVrNAorICAgIGNoZWNrICAgICAgICAgazMsIGs0LCBfX0xJTkVfXwor CisgICAgXyhrc2hpZnRsKSAgICAkMSwgJWsxLCAlazMKKyAgICBfKGtzaGlmdGwpICAgICQyLCAl azMsICVrNAorICAgIF8oa3NoaWZ0bCkgICAgJDMsICVrMSwgJWs1CisgICAgY2hlY2sgICAgICAg ICBrNCwgazUsIF9fTElORV9fCisKKyAgICBfKGtzaGlmdHIpICAgICQxLCAlazEsICVrMworICAg IF8oa3NoaWZ0cikgICAgJDIsICVrMywgJWs0CisgICAgXyhrc2hpZnRyKSAgICAkMywgJWsxLCAl azUKKyAgICBjaGVjayAgICAgICAgIGs0LCBrNSwgX19MSU5FX18KKworICAgIF8oa29ydGVzdCkg ICAgJWs2LCAlazYKKyAgICBqbmJlICAgICAgICAgIDFmCisgICAgbW92ICAgICAgICAgICAkX19M SU5FX18sICVlYXgKKyAgICByZXQKKzE6CisKKyAgICBfKGt4b3IpICAgICAgICVrMCwgJWswLCAl azMKKyAgICBfKGtvcnRlc3QpICAgICVrMywgJWszCisgICAganogICAgICAgICAgICAxZgorICAg IG1vdiAgICAgICAgICAgJF9fTElORV9fLCAlZWF4CisgICAgcmV0CisxOgorCisgICAgXyhreG5v cikgICAgICAlazAsICVrMCwgJWszCisgICAgXyhrb3J0ZXN0KSAgICAlazMsICVrMworICAgIGpj ICAgICAgICAgICAgMWYKKyAgICBtb3YgICAgICAgICAgICRfX0xJTkVfXywgJWVheAorICAgIHJl dAorMToKKworI2lmIFNJWkUgPiAxCisKKyAgICBfKGtzaGlmdHIpICAgICRTSVpFKjQsICVrMywg JWs0CisgICAgV0lERU4oa3VucGNrKSAlazQsICVrNCwgJWs1CisgICAgY2hlY2sgICAgICAgICBr MywgazUsIF9fTElORV9fCisKKyNlbmRpZgorCisjaWYgU0laRSAhPSAyIHx8IGRlZmluZWQoX19B Vlg1MTJEUV9fKQorCisgICAgXyhrYWRkKSAgICAgICAlazEsICVrMSwgJWszCisgICAgXyhrc2hp ZnRsKSAgICAkMSwgJWsxLCAlazQKKyAgICBjaGVjayAgICAgICAgIGszLCBrNCwgX19MSU5FX18K KworICAgIF8oa3Rlc3QpICAgICAgJWsyLCAlazEKKyAgICBqbmJlICAgICAgICAgIDFmCisgICAg bW92ICAgICAgICAgICAkX19MSU5FX18sICVlYXgKKyAgICByZXQKKzE6CisKKyAgICBfKGt4b3Ip ICAgICAgICVrMCwgJWswLCAlazMKKyAgICBfKGt0ZXN0KSAgICAgICVrMCwgJWszCisgICAganog ICAgICAgICAgICAxZgorICAgIG1vdiAgICAgICAgICAgJF9fTElORV9fLCAlZWF4CisgICAgcmV0 CisxOgorCisgICAgXyhreG5vcikgICAgICAlazAsICVrMCwgJWs0CisgICAgXyhrdGVzdCkgICAg ICAlazAsICVrNAorICAgIGpjICAgICAgICAgICAgMWYKKyAgICBtb3YgICAgICAgICAgICRfX0xJ TkVfXywgJWVheAorICAgIHJldAorMToKKworI2VuZGlmCisKKyAgICB4b3IgICAgICAgICAgICVl YXgsICVlYXgKKyAgICByZXQKKworICAgIC5zZWN0aW9uIC5yb2RhdGEsICJhIiwgQHByb2diaXRz CisgICAgLmJhbGlnbiA4CitpbjE6IC5ieXRlIDBiMTAxMTAwMTEsIDBiMTAwMDExMTEsIDBiMDAw MDExMTEsIDBiMTAwMDAwMTEsIDBiMTExMTAwMDAsIDBiMDAxMTExMTEsIDBiMTAwMDAwMDAsIDBi MTExMTExMTEKK2luMjogLmJ5dGUgMGIxMTExMTExMSwgMGIwMDAwMDAwMSwgMGIxMTExMTEwMCwg MGIwMDAwMTExMSwgMGIxMTAwMDAwMSwgMGIxMTExMDAwMCwgMGIxMTExMDAwMSwgMGIxMTAwMTEw MQorCisgICAgLmRhdGEKKyAgICAuYmFsaWduIDgKK291dDogLnF1YWQgMAotLS0gYS90b29scy90 ZXN0cy94ODZfZW11bGF0b3IvdGVzdF94ODZfZW11bGF0b3IuYworKysgYi90b29scy90ZXN0cy94 ODZfZW11bGF0b3IvdGVzdF94ODZfZW11bGF0b3IuYwpAQCAtMTgsNiArMTgsOSBAQCBhc20gKCAi LnB1c2hzZWN0aW9uIC50ZXN0LCBcImF4XCIsIEBwcm9nCiAjaW5jbHVkZSAiYXZ4Mi5oIgogI2lu Y2x1ZGUgImF2eDItc2cuaCIKICNpbmNsdWRlICJ4b3AuaCIKKyNpbmNsdWRlICJhdng1MTJmLW9w bWFzay5oIgorI2luY2x1ZGUgImF2eDUxMmRxLW9wbWFzay5oIgorI2luY2x1ZGUgImF2eDUxMmJ3 LW9wbWFzay5oIgogCiAjZGVmaW5lIHZlcmJvc2UgZmFsc2UgLyogU3dpdGNoIHRvIHRydWUgZm9y IGZhciBtb3JlIGxvZ2dpbmcuICovCiAKQEAgLTc4LDYgKzgxLDI0IEBAIHN0YXRpYyBib29sIHNp bWRfY2hlY2tfeG9wKHZvaWQpCiAgICAgcmV0dXJuIGNwdV9oYXNfeG9wOwogfQogCitzdGF0aWMg Ym9vbCBzaW1kX2NoZWNrX2F2eDUxMmYodm9pZCkKK3sKKyAgICByZXR1cm4gY3B1X2hhc19hdng1 MTJmOworfQorI2RlZmluZSBzaW1kX2NoZWNrX2F2eDUxMmZfb3BtYXNrIHNpbWRfY2hlY2tfYXZ4 NTEyZgorCitzdGF0aWMgYm9vbCBzaW1kX2NoZWNrX2F2eDUxMmRxKHZvaWQpCit7CisgICAgcmV0 dXJuIGNwdV9oYXNfYXZ4NTEyZHE7Cit9CisjZGVmaW5lIHNpbWRfY2hlY2tfYXZ4NTEyZHFfb3Bt YXNrIHNpbWRfY2hlY2tfYXZ4NTEyZHEKKworc3RhdGljIGJvb2wgc2ltZF9jaGVja19hdng1MTJi dyh2b2lkKQoreworICAgIHJldHVybiBjcHVfaGFzX2F2eDUxMmJ3OworfQorI2RlZmluZSBzaW1k X2NoZWNrX2F2eDUxMmJ3X29wbWFzayBzaW1kX2NoZWNrX2F2eDUxMmJ3CisKIHN0YXRpYyB2b2lk IHNpbWRfc2V0X3JlZ3Moc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCiB7CiAgICAgaWYgKCBj cHVfaGFzX21teCApCkBAIC0yMjMsNiArMjQ0LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgewog ICAgIFNJTUQoWE9QIGkxNngxNiwgICAgICAgICAgICAgIHhvcCwgICAgICAzMmkyKSwKICAgICBT SU1EKFhPUCBpMzJ4OCwgICAgICAgICAgICAgICB4b3AsICAgICAgMzJpNCksCiAgICAgU0lNRChY T1AgaTY0eDQsICAgICAgICAgICAgICAgeG9wLCAgICAgIDMyaTgpLAorICAgIFNJTUQoT1BNQVNL L3csICAgICBhdng1MTJmX29wbWFzaywgICAgICAgICAyKSwKKyAgICBTSU1EKE9QTUFTSy9iLCAg ICBhdng1MTJkcV9vcG1hc2ssICAgICAgICAgMSksCisgICAgU0lNRChPUE1BU0svZCwgICAgYXZ4 NTEyYndfb3BtYXNrLCAgICAgICAgIDQpLAorICAgIFNJTUQoT1BNQVNLL3EsICAgIGF2eDUxMmJ3 X29wbWFzaywgICAgICAgICA4KSwKICN1bmRlZiBTSU1EXwogI3VuZGVmIFNJTUQKIH07CkBAIC0z NDY5LDggKzM0OTQsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICAgICAg ICAgICByYyA9IHg4Nl9lbXVsYXRlKCZjdHh0LCAmZW11bG9wcyk7CiAgICAgICAgICAgICBpZiAo IHJjICE9IFg4NkVNVUxfT0tBWSApCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcHJp bnRmKCJmYWlsZWQgYXQgJSVlaXAgPT0gJTA4bHggKG9wY29kZSAlMDh4KVxuIiwKLSAgICAgICAg ICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpcmVncy5laXAsIGN0eHQub3Bjb2RlKTsKKyAg ICAgICAgICAgICAgICBwcmludGYoImZhaWxlZCAoJWQpIGF0ICUlZWlwID09ICUwOGx4IChvcGNv ZGUgJTA4eClcbiIsCisgICAgICAgICAgICAgICAgICAgICAgIHJjLCAodW5zaWduZWQgbG9uZyly ZWdzLmVpcCwgY3R4dC5vcGNvZGUpOwogICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAg ICAgICAgfQogICAgICAgICB9Ci0tLSBhL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci90ZXN0Y2Fz ZS5taworKysgYi90b29scy90ZXN0cy94ODZfZW11bGF0b3IvdGVzdGNhc2UubWsKQEAgLTE0LDMg KzE0LDkgQEAgYWxsOiAkKFRFU1RDQVNFKS5iaW4KIAkkKExEKSAkKExERkxBR1NfRElSRUNUKSAt TiAtVHRleHQgMHgxMDAwMDAgLW8gJCoudG1wICQqLm8KIAkkKE9CSkNPUFkpIC1PIGJpbmFyeSAk Ki50bXAgJEAKIAlybSAtZiAkKi50bXAKKworJS1vcG1hc2suYmluOiBvcG1hc2suUworCSQoQ0Mp ICQoZmlsdGVyLW91dCAtTSUgLiUsJChDRkxBR1MpKSAtYyAkPCAtbyAkKi5vCisJJChMRCkgJChM REZMQUdTX0RJUkVDVCkgLU4gLVR0ZXh0IDB4MTAwMDAwIC1vICQqLnRtcCAkKi5vCisJJChPQkpD T1BZKSAtTyBiaW5hcnkgJCoudG1wICRACisJcm0gLWYgJCoudG1wCi0tLSBhL3Rvb2xzL3Rlc3Rz L3g4Nl9lbXVsYXRvci94ODYtZW11bGF0ZS5jCisrKyBiL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRv ci94ODYtZW11bGF0ZS5jCkBAIC0yMDksNiArMjA5LDkgQEAgaW50IGVtdWxfdGVzdF9nZXRfZnB1 KAogICAgIGNhc2UgWDg2RU1VTF9GUFVfeW1tOgogICAgICAgICBpZiAoIGNwdV9oYXNfYXZ4ICkK ICAgICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgWDg2RU1VTF9GUFVfb3BtYXNrOgorICAgICAg ICBpZiAoIGNwdV9oYXNfYXZ4NTEyZiApCisgICAgICAgICAgICBicmVhazsKICAgICBkZWZhdWx0 OgogICAgICAgICByZXR1cm4gWDg2RU1VTF9VTkhBTkRMRUFCTEU7CiAgICAgfQotLS0gYS90b29s cy90ZXN0cy94ODZfZW11bGF0b3IveDg2LWVtdWxhdGUuaAorKysgYi90b29scy90ZXN0cy94ODZf ZW11bGF0b3IveDg2LWVtdWxhdGUuaApAQCAtMjM2LDYgKzIzNiwzNiBAQCBzdGF0aWMgaW5saW5l IHVpbnQ2NF90IHhnZXRidih1aW50MzJfdCB4CiAgICAgKHJlcy5jICYgKDFVIDw8IDIxKSkgIT0g MDsgXAogfSkKIAorI2RlZmluZSBjcHVfaGFzX2F2eDUxMmYgKHsgXAorICAgIHN0cnVjdCBjcHVp ZF9sZWFmIHJlczsgXAorICAgIGVtdWxfdGVzdF9jcHVpZCgxLCAwLCAmcmVzLCBOVUxMKTsgXAor ICAgIGlmICggIShyZXMuYyAmICgxVSA8PCAyNykpIHx8ICgoeGdldGJ2KDApICYgMHhlNikgIT0g MHhlNikgKSBcCisgICAgICAgIHJlcy5iID0gMDsgXAorICAgIGVsc2UgXAorICAgICAgICBlbXVs X3Rlc3RfY3B1aWQoNywgMCwgJnJlcywgTlVMTCk7IFwKKyAgICAocmVzLmIgJiAoMVUgPDwgMTYp KSAhPSAwOyBcCit9KQorCisjZGVmaW5lIGNwdV9oYXNfYXZ4NTEyZHEgKHsgXAorICAgIHN0cnVj dCBjcHVpZF9sZWFmIHJlczsgXAorICAgIGVtdWxfdGVzdF9jcHVpZCgxLCAwLCAmcmVzLCBOVUxM KTsgXAorICAgIGlmICggIShyZXMuYyAmICgxVSA8PCAyNykpIHx8ICgoeGdldGJ2KDApICYgMHhl NikgIT0gMHhlNikgKSBcCisgICAgICAgIHJlcy5iID0gMDsgXAorICAgIGVsc2UgXAorICAgICAg ICBlbXVsX3Rlc3RfY3B1aWQoNywgMCwgJnJlcywgTlVMTCk7IFwKKyAgICAocmVzLmIgJiAoMVUg PDwgMTcpKSAhPSAwOyBcCit9KQorCisjZGVmaW5lIGNwdV9oYXNfYXZ4NTEyYncgKHsgXAorICAg IHN0cnVjdCBjcHVpZF9sZWFmIHJlczsgXAorICAgIGVtdWxfdGVzdF9jcHVpZCgxLCAwLCAmcmVz LCBOVUxMKTsgXAorICAgIGlmICggIShyZXMuYyAmICgxVSA8PCAyNykpIHx8ICgoeGdldGJ2KDAp ICYgMHhlNikgIT0gMHhlNikgKSBcCisgICAgICAgIHJlcy5iID0gMDsgXAorICAgIGVsc2UgXAor ICAgICAgICBlbXVsX3Rlc3RfY3B1aWQoNywgMCwgJnJlcywgTlVMTCk7IFwKKyAgICAocmVzLmIg JiAoMVUgPDwgMzApKSAhPSAwOyBcCit9KQorCiBpbnQgZW11bF90ZXN0X2NwdWlkKAogICAgIHVp bnQzMl90IGxlYWYsCiAgICAgdWludDMyX3Qgc3VibGVhZiwKLS0tIGEveGVuL2FyY2gveDg2L3g4 Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMKKysrIGIveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4 Nl9lbXVsYXRlLmMKQEAgLTQ5MSw2ICs0OTEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV4dDBm M2FfdGFibGUgewogICAgIFsweDIwXSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfbm9uZSB9LAogICAg IFsweDIxXSA9IHsgLnNpbWRfc2l6ZSA9IHNpbWRfb3RoZXIgfSwKICAgICBbMHgyMl0gPSB7IC5z aW1kX3NpemUgPSBzaW1kX25vbmUgfSwKKyAgICBbMHgzMCAuLi4gMHgzM10gPSB7IC5zaW1kX3Np emUgPSBzaW1kX290aGVyLCAudHdvX29wID0gMSB9LAogICAgIFsweDM4XSA9IHsgLnNpbWRfc2l6 ZSA9IHNpbWRfMTI4IH0sCiAgICAgWzB4MzldID0geyAuc2ltZF9zaXplID0gc2ltZF8xMjgsIC50 b19tZW0gPSAxLCAudHdvX29wID0gMSB9LAogICAgIFsweDQwIC4uLiAweDQxXSA9IHsgLnNpbWRf c2l6ZSA9IHNpbWRfcGFja2VkX2ZwIH0sCkBAIC0xMTg3LDYgKzExODgsMTEgQEAgc3RhdGljIGlu dCBfZ2V0X2ZwdSgKICAgICAgICAgICAgIHJldHVybiBYODZFTVVMX1VOSEFORExFQUJMRTsKICAg ICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFg4NkVNVUxfRlBVX29wbWFzazoKKyAgICAgICAgaWYg KCAhKHhjcjAgJiBYODZfWENSMF9TU0UpIHx8ICEoeGNyMCAmIFg4Nl9YQ1IwX09QTUFTSykgKQor ICAgICAgICAgICAgcmV0dXJuIFg4NkVNVUxfVU5IQU5ETEVBQkxFOworICAgICAgICBicmVhazsK KwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTE3NjIsMTIgKzE3Njgs MTUgQEAgc3RhdGljIGJvb2wgdmNwdV9oYXMoCiAjZGVmaW5lIHZjcHVfaGFzX2JtaTIoKSAgICAg ICAgdmNwdV9oYXMoICAgICAgICAgNywgRUJYLCAgOCwgY3R4dCwgb3BzKQogI2RlZmluZSB2Y3B1 X2hhc19ydG0oKSAgICAgICAgIHZjcHVfaGFzKCAgICAgICAgIDcsIEVCWCwgMTEsIGN0eHQsIG9w cykKICNkZWZpbmUgdmNwdV9oYXNfbXB4KCkgICAgICAgICB2Y3B1X2hhcyggICAgICAgICA3LCBF QlgsIDE0LCBjdHh0LCBvcHMpCisjZGVmaW5lIHZjcHVfaGFzX2F2eDUxMmYoKSAgICAgdmNwdV9o YXMoICAgICAgICAgNywgRUJYLCAxNiwgY3R4dCwgb3BzKQorI2RlZmluZSB2Y3B1X2hhc19hdng1 MTJkcSgpICAgIHZjcHVfaGFzKCAgICAgICAgIDcsIEVCWCwgMTcsIGN0eHQsIG9wcykKICNkZWZp bmUgdmNwdV9oYXNfcmRzZWVkKCkgICAgICB2Y3B1X2hhcyggICAgICAgICA3LCBFQlgsIDE4LCBj dHh0LCBvcHMpCiAjZGVmaW5lIHZjcHVfaGFzX2FkeCgpICAgICAgICAgdmNwdV9oYXMoICAgICAg ICAgNywgRUJYLCAxOSwgY3R4dCwgb3BzKQogI2RlZmluZSB2Y3B1X2hhc19zbWFwKCkgICAgICAg IHZjcHVfaGFzKCAgICAgICAgIDcsIEVCWCwgMjAsIGN0eHQsIG9wcykKICNkZWZpbmUgdmNwdV9o YXNfY2xmbHVzaG9wdCgpICB2Y3B1X2hhcyggICAgICAgICA3LCBFQlgsIDIzLCBjdHh0LCBvcHMp CiAjZGVmaW5lIHZjcHVfaGFzX2Nsd2IoKSAgICAgICAgdmNwdV9oYXMoICAgICAgICAgNywgRUJY LCAyNCwgY3R4dCwgb3BzKQogI2RlZmluZSB2Y3B1X2hhc19zaGEoKSAgICAgICAgIHZjcHVfaGFz KCAgICAgICAgIDcsIEVCWCwgMjksIGN0eHQsIG9wcykKKyNkZWZpbmUgdmNwdV9oYXNfYXZ4NTEy YncoKSAgICB2Y3B1X2hhcyggICAgICAgICA3LCBFQlgsIDMwLCBjdHh0LCBvcHMpCiAjZGVmaW5l IHZjcHVfaGFzX3JkcGlkKCkgICAgICAgdmNwdV9oYXMoICAgICAgICAgNywgRUNYLCAyMiwgY3R4 dCwgb3BzKQogI2RlZmluZSB2Y3B1X2hhc19jbHplcm8oKSAgICAgIHZjcHVfaGFzKDB4ODAwMDAw MDgsIEVCWCwgIDAsIGN0eHQsIG9wcykKIApAQCAtMjM5Niw2ICsyNDA1LDE4IEBAIHg4Nl9kZWNv ZGVfdHdvYnl0ZSgKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgWDg2RU1V TF9PUENfVkVYKDAsIDB4OTApOiAgICAvKiBrbW92e3cscX0gKi8KKyAgICBjYXNlIFg4NkVNVUxf T1BDX1ZFWF82NigwLCAweDkwKTogLyoga21vdntiLGR9ICovCisgICAgICAgIHN0YXRlLT5kZXNj ID0gRHN0UmVnIHwgU3JjTWVtIHwgTW92OworICAgICAgICBzdGF0ZS0+c2ltZF9zaXplID0gc2lt ZF9vdGhlcjsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFg4NkVNVUxfT1BDX1ZFWCgwLCAw eDkxKTogICAgLyoga21vdnt3LHF9ICovCisgICAgY2FzZSBYODZFTVVMX09QQ19WRVhfNjYoMCwg MHg5MSk6IC8qIGttb3Z7YixkfSAqLworICAgICAgICBzdGF0ZS0+ZGVzYyA9IERzdE1lbSB8IFNy Y1JlZyB8IE1vdjsKKyAgICAgICAgc3RhdGUtPnNpbWRfc2l6ZSA9IHNpbWRfb3RoZXI7CisgICAg ICAgIGJyZWFrOworCiAgICAgY2FzZSAweGFlOgogICAgICAgICBjdHh0LT5vcGNvZGUgfD0gTUFT S19JTlNSKHZleC5wZngsIFg4NkVNVUxfT1BDX1BGWF9NQVNLKTsKICAgICAgICAgLyogZmFsbCB0 aHJvdWdoICovCkBAIC02MDAyLDYgKzYwMjMsNjAgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgICAg ICBkc3QudmFsID0gc3JjLnZhbDsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFg4NkVNVUxf T1BDX1ZFWCgweDBmLCAweDRhKTogICAgLyoga2FkZHt3LHF9IGssayxrICovCisgICAgICAgIGlm ICggIXZleC53ICkKKyAgICAgICAgICAgIGhvc3RfYW5kX3ZjcHVfbXVzdF9oYXZlKGF2eDUxMmRx KTsKKyAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCisgICAgY2FzZSBYODZFTVVMX09QQ19WRVgo MHgwZiwgMHg0MSk6ICAgIC8qIGthbmR7dyxxfSBrLGssayAqLworICAgIGNhc2UgWDg2RU1VTF9P UENfVkVYXzY2KDB4MGYsIDB4NDEpOiAvKiBrYW5ke2IsZH0gayxrLGsgKi8KKyAgICBjYXNlIFg4 NkVNVUxfT1BDX1ZFWCgweDBmLCAweDQyKTogICAgLyoga2FuZG57dyxxfSBrLGssayAqLworICAg IGNhc2UgWDg2RU1VTF9PUENfVkVYXzY2KDB4MGYsIDB4NDIpOiAvKiBrYW5kbntiLGR9IGssayxr ICovCisgICAgY2FzZSBYODZFTVVMX09QQ19WRVgoMHgwZiwgMHg0NSk6ICAgIC8qIGtvcnt3LHF9 IGssayxrICovCisgICAgY2FzZSBYODZFTVVMX09QQ19WRVhfNjYoMHgwZiwgMHg0NSk6IC8qIGtv cntiLGR9IGssayxrICovCisgICAgY2FzZSBYODZFTVVMX09QQ19WRVgoMHgwZiwgMHg0Nik6ICAg IC8qIGt4bm9ye3cscX0gayxrLGsgKi8KKyAgICBjYXNlIFg4NkVNVUxfT1BDX1ZFWF82NigweDBm LCAweDQ2KTogLyoga3hub3J7YixkfSBrLGssayAqLworICAgIGNhc2UgWDg2RU1VTF9PUENfVkVY KDB4MGYsIDB4NDcpOiAgICAvKiBreG9ye3cscX0gayxrLGsgKi8KKyAgICBjYXNlIFg4NkVNVUxf T1BDX1ZFWF82NigweDBmLCAweDQ3KTogLyoga3hvcntiLGR9IGssayxrICovCisgICAgY2FzZSBY ODZFTVVMX09QQ19WRVhfNjYoMHgwZiwgMHg0YSk6IC8qIGthZGR7YixkfSBrLGssayAqLworICAg ICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYoIXZleC5sLCBFWENfVUQpOworICAgIG9wbWFza19i YXNpYzoKKyAgICAgICAgaWYgKCB2ZXgudyApCisgICAgICAgICAgICBob3N0X2FuZF92Y3B1X211 c3RfaGF2ZShhdng1MTJidyk7CisgICAgICAgIGVsc2UgaWYgKCB2ZXgucGZ4ICkKKyAgICAgICAg ICAgIGhvc3RfYW5kX3ZjcHVfbXVzdF9oYXZlKGF2eDUxMmRxKTsKKyAgICBvcG1hc2tfY29tbW9u OgorICAgICAgICBob3N0X2FuZF92Y3B1X211c3RfaGF2ZShhdng1MTJmKTsKKyAgICAgICAgZ2Vu ZXJhdGVfZXhjZXB0aW9uX2lmKCF2ZXguciB8fCAobW9kZV82NGJpdCgpICYmICEodmV4LnJlZyAm IDgpKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWEudHlwZSAhPSBPUF9SRUcs IEVYQ19VRCk7CisKKyAgICAgICAgdmV4LnJlZyB8PSA4OworICAgICAgICBkICY9IH5Ud29PcDsK KworICAgICAgICBnZXRfZnB1KFg4NkVNVUxfRlBVX29wbWFzayk7CisKKyAgICAgICAgb3BjID0g aW5pdF9wcmVmaXhlcyhzdHViKTsKKyAgICAgICAgb3BjWzBdID0gYjsKKyAgICAgICAgb3BjWzFd ID0gbW9kcm07CisgICAgICAgIGluc25fYnl0ZXMgPSBQRlhfQllURVMgKyAyOworCisgICAgICAg IHN0YXRlLT5zaW1kX3NpemUgPSBzaW1kX290aGVyOworICAgICAgICBvcF9ieXRlcyA9IDE7IC8q IEFueSBub24temVybyB2YWx1ZSB3aWxsIGRvLiAqLworICAgICAgICBicmVhazsKKworICAgIGNh c2UgWDg2RU1VTF9PUENfVkVYKDB4MGYsIDB4NDQpOiAgICAvKiBrbm90e3cscX0gayxrICovCisg ICAgY2FzZSBYODZFTVVMX09QQ19WRVhfNjYoMHgwZiwgMHg0NCk6IC8qIGtub3R7YixkfSBrLGsg Ki8KKyAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKHZleC5sIHx8IHZleC5yZWcgIT0gMHhm LCBFWENfVUQpOworICAgICAgICBnb3RvIG9wbWFza19iYXNpYzsKKworICAgIGNhc2UgWDg2RU1V TF9PUENfVkVYKDB4MGYsIDB4NGIpOiAgICAvKiBrdW5wY2t7dyxkfXtkLHF9IGssayxrICovCisg ICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZighdmV4LmwsIEVYQ19VRCk7CisgICAgICAgIGhv c3RfYW5kX3ZjcHVfbXVzdF9oYXZlKGF2eDUxMmJ3KTsKKyAgICAgICAgZ290byBvcG1hc2tfY29t bW9uOworCisgICAgY2FzZSBYODZFTVVMX09QQ19WRVhfNjYoMHgwZiwgMHg0Yik6IC8qIGt1bnBj a2J3IGssayxrICovCisgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZighdmV4LmwgfHwgdmV4 LncsIEVYQ19VRCk7CisgICAgICAgIGdvdG8gb3BtYXNrX2NvbW1vbjsKKwogICAgIENBU0VfU0lN RF9QQUNLRURfRlAoLCAweDBmLCAweDUwKTogICAgIC8qIG1vdm1za3B7cyxkfSB4bW0scmVnICov CiAgICAgQ0FTRV9TSU1EX1BBQ0tFRF9GUChfVkVYLCAweDBmLCAweDUwKTogLyogdm1vdm1za3B7 cyxkfSB7eCx5fW1tLHJlZyAqLwogICAgIENBU0VfU0lNRF9QQUNLRURfSU5UKDB4MGYsIDB4ZDcp OiAgICAgIC8qIHBtb3Ztc2tiIHsseH1tbSxyZWcgKi8KQEAgLTY1NTIsNiArNjYyNywxNTQgQEAg eDg2X2VtdWxhdGUoCiAgICAgICAgIGRzdC52YWwgPSB0ZXN0X2NjKGIsIF9yZWdzLmVmbGFncyk7 CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBYODZFTVVMX09QQ19WRVgoMHgwZiwgMHg5MSk6 ICAgIC8qIGttb3Z7dyxxfSBrLG1lbSAqLworICAgIGNhc2UgWDg2RU1VTF9PUENfVkVYXzY2KDB4 MGYsIDB4OTEpOiAvKiBrbW92e2IsZH0gayxtZW0gKi8KKyAgICAgICAgZ2VuZXJhdGVfZXhjZXB0 aW9uX2lmKGVhLnR5cGUgIT0gT1BfTUVNLCBFWENfVUQpOworICAgICAgICAvKiBmYWxsIHRocm91 Z2ggKi8KKyAgICBjYXNlIFg4NkVNVUxfT1BDX1ZFWCgweDBmLCAweDkwKTogICAgLyoga21vdnt3 LHF9IGsvbWVtLGsgKi8KKyAgICBjYXNlIFg4NkVNVUxfT1BDX1ZFWF82NigweDBmLCAweDkwKTog Lyoga21vdntiLGR9IGsvbWVtLGsgKi8KKyAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKHZl eC5sIHx8ICF2ZXguciwgRVhDX1VEKTsKKyAgICAgICAgaG9zdF9hbmRfdmNwdV9tdXN0X2hhdmUo YXZ4NTEyZik7CisgICAgICAgIGlmICggdmV4LncgKQorICAgICAgICB7CisgICAgICAgICAgICBo b3N0X2FuZF92Y3B1X211c3RfaGF2ZShhdng1MTJidyk7CisgICAgICAgICAgICBvcF9ieXRlcyA9 IDQgPDwgIXZleC5wZng7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoIHZleC5wZnggKQor ICAgICAgICB7CisgICAgICAgICAgICBob3N0X2FuZF92Y3B1X211c3RfaGF2ZShhdng1MTJkcSk7 CisgICAgICAgICAgICBvcF9ieXRlcyA9IDE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAg ICAgICAgICAgb3BfYnl0ZXMgPSAyOworCisgICAgICAgIGdldF9mcHUoWDg2RU1VTF9GUFVfb3Bt YXNrKTsKKworICAgICAgICBvcGMgPSBpbml0X3ByZWZpeGVzKHN0dWIpOworICAgICAgICBvcGNb MF0gPSBiOworICAgICAgICBvcGNbMV0gPSBtb2RybTsKKyAgICAgICAgaWYgKCBlYS50eXBlID09 IE9QX01FTSApCisgICAgICAgIHsKKyAgICAgICAgICAgIC8qIGNvbnZlcnQgbWVtb3J5IG9wZXJh bmQgdG8gKCVyQVgpICovCisgICAgICAgICAgICB2ZXguYiA9IDE7CisgICAgICAgICAgICBvcGNb MV0gJj0gMHgzODsKKyAgICAgICAgfQorICAgICAgICBpbnNuX2J5dGVzID0gUEZYX0JZVEVTICsg MjsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFg4NkVNVUxfT1BDX1ZFWCgweDBmLCAweDky KTogICAgLyoga21vdncgcjMyLGsgKi8KKyAgICBjYXNlIFg4NkVNVUxfT1BDX1ZFWF82NigweDBm LCAweDkyKTogLyoga21vdmIgcjMyLGsgKi8KKyAgICBjYXNlIFg4NkVNVUxfT1BDX1ZFWF9GMigw eDBmLCAweDkyKTogLyoga21vdntkLHF9IHJlZyxrICovCisgICAgICAgIGdlbmVyYXRlX2V4Y2Vw dGlvbl9pZih2ZXgubCB8fCAhdmV4LnIgfHwgdmV4LnJlZyAhPSAweGYgfHwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGVhLnR5cGUgIT0gT1BfUkVHLCBFWENfVUQpOworCisgICAgICAg IGhvc3RfYW5kX3ZjcHVfbXVzdF9oYXZlKGF2eDUxMmYpOworICAgICAgICBpZiAoIHZleC5wZngg PT0gdmV4X2YyICkKKyAgICAgICAgICAgIGhvc3RfYW5kX3ZjcHVfbXVzdF9oYXZlKGF2eDUxMmJ3 KTsKKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBnZW5lcmF0ZV9leGNlcHRp b25faWYodmV4LncsIEVYQ19VRCk7CisgICAgICAgICAgICBpZiAoIHZleC5wZnggKQorICAgICAg ICAgICAgICAgIGhvc3RfYW5kX3ZjcHVfbXVzdF9oYXZlKGF2eDUxMmRxKTsKKyAgICAgICAgfQor CisgICAgICAgIGdldF9mcHUoWDg2RU1VTF9GUFVfb3BtYXNrKTsKKworICAgICAgICBvcGMgPSBp bml0X3ByZWZpeGVzKHN0dWIpOworICAgICAgICBvcGNbMF0gPSBiOworICAgICAgICAvKiBDb252 ZXJ0IEdQUiBzb3VyY2UgdG8gJXJBWC4gKi8KKyAgICAgICAgdmV4LmIgPSAxOworICAgICAgICBp ZiAoICFtb2RlXzY0Yml0KCkgKQorICAgICAgICAgICAgdmV4LncgPSAwOworICAgICAgICBvcGNb MV0gPSBtb2RybSAmIDB4Zjg7CisgICAgICAgIG9wY1syXSA9IDB4YzM7CisKKyAgICAgICAgY29w eV9WRVgob3BjLCB2ZXgpOworICAgICAgICBlYS5yZWcgPSBkZWNvZGVfZ3ByKCZfcmVncywgbW9k cm1fcm0pOworICAgICAgICBpbnZva2Vfc3R1YigiIiwgIiIsICI9bSIgKGR1bW15KSA6ICJhIiAo KmVhLnJlZykpOworCisgICAgICAgIHB1dF9zdHViKHN0dWIpOworCisgICAgICAgIEFTU0VSVCgh c3RhdGUtPnNpbWRfc2l6ZSk7CisgICAgICAgIGRzdC50eXBlID0gT1BfTk9ORTsKKyAgICAgICAg YnJlYWs7CisKKyAgICBjYXNlIFg4NkVNVUxfT1BDX1ZFWCgweDBmLCAweDkzKTogICAgLyoga21v dncgayxyMzIgKi8KKyAgICBjYXNlIFg4NkVNVUxfT1BDX1ZFWF82NigweDBmLCAweDkzKTogLyog a21vdmIgayxyMzIgKi8KKyAgICBjYXNlIFg4NkVNVUxfT1BDX1ZFWF9GMigweDBmLCAweDkzKTog Lyoga21vdntkLHF9IGsscmVnICovCisgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZih2ZXgu bCB8fCB2ZXgucmVnICE9IDB4ZiB8fCBlYS50eXBlICE9IE9QX1JFRywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEVYQ19VRCk7CisgICAgICAgIGRzdCA9IGVhOworICAgICAgICBkc3Qu cmVnID0gZGVjb2RlX2dwcigmX3JlZ3MsIG1vZHJtX3JlZyk7CisKKyAgICAgICAgaG9zdF9hbmRf dmNwdV9tdXN0X2hhdmUoYXZ4NTEyZik7CisgICAgICAgIGlmICggdmV4LnBmeCA9PSB2ZXhfZjIg KQorICAgICAgICB7CisgICAgICAgICAgICBob3N0X2FuZF92Y3B1X211c3RfaGF2ZShhdng1MTJi dyk7CisgICAgICAgICAgICBkc3QuYnl0ZXMgPSA0IDw8IChtb2RlXzY0Yml0KCkgJiYgdmV4Lncp OworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgZ2VuZXJh dGVfZXhjZXB0aW9uX2lmKHZleC53LCBFWENfVUQpOworICAgICAgICAgICAgZHN0LmJ5dGVzID0g NDsKKyAgICAgICAgICAgIGlmICggdmV4LnBmeCApCisgICAgICAgICAgICAgICAgaG9zdF9hbmRf dmNwdV9tdXN0X2hhdmUoYXZ4NTEyZHEpOworICAgICAgICB9CisKKyAgICAgICAgZ2V0X2ZwdShY ODZFTVVMX0ZQVV9vcG1hc2spOworCisgICAgICAgIG9wYyA9IGluaXRfcHJlZml4ZXMoc3R1Yik7 CisgICAgICAgIG9wY1swXSA9IGI7CisgICAgICAgIC8qIENvbnZlcnQgR1BSIGRlc3RpbmF0aW9u IHRvICVyQVguICovCisgICAgICAgIHZleC5yID0gMTsKKyAgICAgICAgaWYgKCAhbW9kZV82NGJp dCgpICkKKyAgICAgICAgICAgIHZleC53ID0gMDsKKyAgICAgICAgb3BjWzFdID0gbW9kcm0gJiAw eGM3OworICAgICAgICBvcGNbMl0gPSAweGMzOworCisgICAgICAgIGNvcHlfVkVYKG9wYywgdmV4 KTsKKyAgICAgICAgaW52b2tlX3N0dWIoIiIsICIiLCAiPWEiIChkc3QudmFsKSA6IFtkdW1teV0g ImkiICgwKSk7CisKKyAgICAgICAgcHV0X3N0dWIoc3R1Yik7CisKKyAgICAgICAgQVNTRVJUKCFz dGF0ZS0+c2ltZF9zaXplKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFg4NkVNVUxfT1BD X1ZFWCgweDBmLCAweDk5KTogICAgLyoga3Rlc3R7dyxxfSBrLGsgKi8KKyAgICAgICAgaWYgKCAh dmV4LncgKQorICAgICAgICAgICAgaG9zdF9hbmRfdmNwdV9tdXN0X2hhdmUoYXZ4NTEyZHEpOwor ICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KKyAgICBjYXNlIFg4NkVNVUxfT1BDX1ZFWCgweDBm LCAweDk4KTogICAgLyoga29ydGVzdHt3LHF9IGssayAqLworICAgIGNhc2UgWDg2RU1VTF9PUENf VkVYXzY2KDB4MGYsIDB4OTgpOiAvKiBrb3J0ZXN0e2IsZH0gayxrICovCisgICAgY2FzZSBYODZF TVVMX09QQ19WRVhfNjYoMHgwZiwgMHg5OSk6IC8qIGt0ZXN0e2IsZH0gayxrICovCisgICAgICAg IGdlbmVyYXRlX2V4Y2VwdGlvbl9pZih2ZXgubCB8fCAhdmV4LnIgfHwgdmV4LnJlZyAhPSAweGYg fHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhLnR5cGUgIT0gT1BfUkVHLCBFWENf VUQpOworICAgICAgICBob3N0X2FuZF92Y3B1X211c3RfaGF2ZShhdng1MTJmKTsKKyAgICAgICAg aWYgKCB2ZXgudyApCisgICAgICAgICAgICBob3N0X2FuZF92Y3B1X211c3RfaGF2ZShhdng1MTJi dyk7CisgICAgICAgIGVsc2UgaWYgKCB2ZXgucGZ4ICkKKyAgICAgICAgICAgIGhvc3RfYW5kX3Zj cHVfbXVzdF9oYXZlKGF2eDUxMmRxKTsKKworICAgICAgICBnZXRfZnB1KFg4NkVNVUxfRlBVX29w bWFzayk7CisKKyAgICAgICAgb3BjID0gaW5pdF9wcmVmaXhlcyhzdHViKTsKKyAgICAgICAgb3Bj WzBdID0gYjsKKyAgICAgICAgb3BjWzFdID0gbW9kcm07CisgICAgICAgIG9wY1syXSA9IDB4YzM7 CisKKyAgICAgICAgY29weV9WRVgob3BjLCB2ZXgpOworICAgICAgICBpbnZva2Vfc3R1YihfUFJF X0VGTEFHUygiW2VmbGFnc10iLCAiW21hc2tdIiwgIlt0bXBdIiksCisgICAgICAgICAgICAgICAg ICAgIF9QT1NUX0VGTEFHUygiW2VmbGFnc10iLCAiW21hc2tdIiwgIlt0bXBdIiksCisgICAgICAg ICAgICAgICAgICAgIFtlZmxhZ3NdICIrZyIgKF9yZWdzLmVmbGFncyksCisgICAgICAgICAgICAg ICAgICAgICI9YSIgKGRzdC52YWwpLCBbdG1wXSAiPSZyIiAoZHVtbXkpCisgICAgICAgICAgICAg ICAgICAgIDogW21hc2tdICJpIiAoRUZMQUdTX01BU0spKTsKKworICAgICAgICBwdXRfc3R1Yihz dHViKTsKKworICAgICAgICBBU1NFUlQoIXN0YXRlLT5zaW1kX3NpemUpOworICAgICAgICBkc3Qu dHlwZSA9IE9QX05PTkU7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBYODZFTVVMX09QQygw eDBmLCAweGEyKTogLyogY3B1aWQgKi8KICAgICAgICAgbXNyX3ZhbCA9IDA7CiAgICAgICAgIGZh aWxfaWYob3BzLT5jcHVpZCA9PSBOVUxMKTsKQEAgLTgxNzAsNiArODM5MywyMyBAQCB4ODZfZW11 bGF0ZSgKICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKHZleC5sLCBFWENfVUQpOwogICAg ICAgICBnb3RvIHNpbWRfMGZfaW1tOF9hdng7CiAKKyAgICBjYXNlIFg4NkVNVUxfT1BDX1ZFWF82 NigweDBmM2EsIDB4MzApOiAvKiBrc2hpZnRye2Isd30gJGltbTgsayxrICovCisgICAgY2FzZSBY ODZFTVVMX09QQ19WRVhfNjYoMHgwZjNhLCAweDMyKTogLyoga3NoaWZ0bHtiLHd9ICRpbW04LGss ayAqLworICAgICAgICBpZiAoICF2ZXgudyApCisgICAgICAgICAgICBob3N0X2FuZF92Y3B1X211 c3RfaGF2ZShhdng1MTJkcSk7CisgICAgb3BtYXNrX3NoaWZ0X2ltbToKKyAgICAgICAgZ2VuZXJh dGVfZXhjZXB0aW9uX2lmKHZleC5sIHx8ICF2ZXguciB8fCB2ZXgucmVnICE9IDB4ZiB8fAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZWEudHlwZSAhPSBPUF9SRUcsIEVYQ19VRCk7Cisg ICAgICAgIGhvc3RfYW5kX3ZjcHVfbXVzdF9oYXZlKGF2eDUxMmYpOworICAgICAgICBnZXRfZnB1 KFg4NkVNVUxfRlBVX29wbWFzayk7CisgICAgICAgIG9wX2J5dGVzID0gMTsgLyogQW55IG5vbi16 ZXJvIHZhbHVlIHdpbGwgZG8uICovCisgICAgICAgIGdvdG8gc2ltZF8wZl9pbW04OworCisgICAg Y2FzZSBYODZFTVVMX09QQ19WRVhfNjYoMHgwZjNhLCAweDMxKTogLyoga3NoaWZ0cntkLHF9ICRp bW04LGssayAqLworICAgIGNhc2UgWDg2RU1VTF9PUENfVkVYXzY2KDB4MGYzYSwgMHgzMyk6IC8q IGtzaGlmdGx7ZCxxfSAkaW1tOCxrLGsgKi8KKyAgICAgICAgaG9zdF9hbmRfdmNwdV9tdXN0X2hh dmUoYXZ4NTEyYncpOworICAgICAgICBnb3RvIG9wbWFza19zaGlmdF9pbW07CisKICAgICBjYXNl IFg4NkVNVUxfT1BDXzY2KDB4MGYzYSwgMHg0NCk6ICAgICAvKiBwY2xtdWxxZHEgJGltbTgseG1t L20xMjgseG1tICovCiAgICAgY2FzZSBYODZFTVVMX09QQ19WRVhfNjYoMHgwZjNhLCAweDQ0KTog LyogdnBjbG11bHFkcSAkaW1tOCx4bW0vbTEyOCx4bW0seG1tICovCiAgICAgICAgIGhvc3RfYW5k X3ZjcHVfbXVzdF9oYXZlKHBjbG11bHFkcSk7Ci0tLSBhL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0 ZS94ODZfZW11bGF0ZS5oCisrKyBiL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0 ZS5oCkBAIC0xNzAsNiArMTcwLDcgQEAgZW51bSB4ODZfZW11bGF0ZV9mcHVfdHlwZSB7CiAgICAg WDg2RU1VTF9GUFVfbW14LCAvKiBNTVggaW5zdHJ1Y3Rpb24gc2V0ICglbW0wLSVtbTcpICovCiAg ICAgWDg2RU1VTF9GUFVfeG1tLCAvKiBTU0UgaW5zdHJ1Y3Rpb24gc2V0ICgleG1tMC0leG1tNy8x NSkgKi8KICAgICBYODZFTVVMX0ZQVV95bW0sIC8qIEFWWC9YT1AgaW5zdHJ1Y3Rpb24gc2V0ICgl eW1tMC0leW1tNy8xNSkgKi8KKyAgICBYODZFTVVMX0ZQVV9vcG1hc2ssIC8qIEFWWDUxMiBvcG1h c2sgaW5zdHJ1Y3Rpb24gc2V0ICglazAtJWs3KSAqLwogICAgIC8qIFRoaXMgc2VudGluZWwgd2ls bCBuZXZlciBiZSBwYXNzZWQgdG8gLT5nZXRfZnB1KCkuICovCiAgICAgWDg2RU1VTF9GUFVfbm9u ZQogfTsKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9jcHVmZWF0dXJlLmgKKysrIGIveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9jcHVmZWF0dXJlLmgKQEAgLTk5LDkgKzk5LDEyIEBACiAjZGVmaW5lIGNw dV9oYXNfcnRtICAgICAgICAgICAgIGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9SVE0pCiAjZGVm aW5lIGNwdV9oYXNfZnB1X3NlbCAgICAgICAgICghYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX05P X0ZQVV9TRUwpKQogI2RlZmluZSBjcHVfaGFzX21weCAgICAgICAgICAgICBib290X2NwdV9oYXMo WDg2X0ZFQVRVUkVfTVBYKQorI2RlZmluZSBjcHVfaGFzX2F2eDUxMmYgICAgICAgICBib290X2Nw dV9oYXMoWDg2X0ZFQVRVUkVfQVZYNTEyRikKKyNkZWZpbmUgY3B1X2hhc19hdng1MTJkcSAgICAg ICAgYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0FWWDUxMkRRKQogI2RlZmluZSBjcHVfaGFzX3Jk c2VlZCAgICAgICAgICBib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfUkRTRUVEKQogI2RlZmluZSBj cHVfaGFzX3NtYXAgICAgICAgICAgICBib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfU01BUCkKICNk ZWZpbmUgY3B1X2hhc19zaGEgICAgICAgICAgICAgYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX1NI QSkKKyNkZWZpbmUgY3B1X2hhc19hdng1MTJidyAgICAgICAgYm9vdF9jcHVfaGFzKFg4Nl9GRUFU VVJFX0FWWDUxMkJXKQogCiAvKiBDUFVJRCBsZXZlbCAweDgwMDAwMDA3LmVkeCAqLwogI2RlZmlu ZSBjcHVfaGFzX2l0c2MgICAgICAgICAgICBib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfSVRTQykK CgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1k ZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8v bGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=