From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH RFC] x86/sysctl: Implement XEN_SYSCTL_get_cpuid_policy Date: Thu, 27 Jul 2017 18:48:15 +0100 Message-ID: <1501177695-16984-1-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper , Daniel De Graaf , Ian Jackson , Wei Liu , Jan Beulich List-Id: xen-devel@lists.xenproject.org UHJvdmlkZSBhIFNZU0NUTCBmb3IgdGhlIHRvb2xzdGFjayB0byBvYnRhaW4gY29tcGxldGUgc3lz dGVtIGNwdWlkIHBvbGljeQppbmZvcm1hdGlvbi4gIFRoZSBDUFVJRCBpbmZvcm1hdGlvbiBpcyBz ZXJpYWxpc2VkIGFzIGFuIGFycmF5IG9mIDZ4IDMyYml0CmludGVnZXJzLCBhbmQgYSBtZWNoYW5p c20gaXMgcHJvdmlkZWQgdG8gcXVlcnkgdGhlIG1heGltdW0gbnVtYmVyIG9mIGVudHJpZXMKWGVu IG1pZ2h0IHdyaXRlLgoKRm9yIHRoZSBYU00gc2lkZSBvZiB0aGluZ3MsIHRoaXMgc3Vib3AgaXMg Y2xvc2VseSByZWxhdGVkIHRvCntwaHlzLGNwdXRvcG8sbnVtYX1pbmZvLCBzbyBzaGFyZXMgdGhl IHBoeXNpbmZvIGFjY2VzcyB2ZWN0b3IuCgpTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxh bmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgotLS0KQ0M6IEphbiBCZXVsaWNoIDxKQmV1bGljaEBz dXNlLmNvbT4KQ0M6IElhbiBKYWNrc29uIDxJYW4uSmFja3NvbkBldS5jaXRyaXguY29tPgpDQzog V2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KQ0M6IERhbmllbCBEZSBHcmFhZiA8ZGdkZWdy YUB0eWNoby5uc2EuZ292PgoKUGFydGx5IFJGQywgdG8gZ2V0IGEgZmVlbCBmb3IgdGhlIHNlcmFs aXNlZCBmb3JtYXQuIFdpdGggYSBzdWl0YWJseSBleHRlbmRlZAouL3hlbi1jcHVpZCwgdGhlIHJh dyBhbmQgaG9zdCBwb2xpY2llcyBmb3Igb25lIG9mIG15IHRlc3Rib3hlcyBhcmUgYXMgZm9sbG93 czoKCltyb290QGZ1c2Vib3Qgfl0jIExEX0xJQlJBUllfUEFUSD0vcm9vdDogLi94ZW4tY3B1aWQg LXAKUmF3IHBvbGljeToKICAwMDAwMDAwMDpmZmZmZmZmZiAtPiAwMDAwMDAwZDo3NTZlNjU0Nzo2 YzY1NzQ2ZTo0OTY1NmU2OQogIDAwMDAwMDAxOmZmZmZmZmZmIC0+IDAwMDMwNmMzOjAwMTAwODAw OjdmZmFmYmZmOmJmZWJmYmZmCiAgMDAwMDAwMDI6ZmZmZmZmZmYgLT4gNzYwMzYzMDE6MDBmMGI1 ZmY6MDAwMDAwMDA6MDBjMTAwMDAKICAwMDAwMDAwNDowMDAwMDAwMCAtPiAxYzAwNDEyMTowMWMw MDAzZjowMDAwMDAzZjowMDAwMDAwMAogIDAwMDAwMDA0OjAwMDAwMDAxIC0+IDFjMDA0MTIyOjAx YzAwMDNmOjAwMDAwMDNmOjAwMDAwMDAwCiAgMDAwMDAwMDQ6MDAwMDAwMDIgLT4gMWMwMDQxNDM6 MDFjMDAwM2Y6MDAwMDAxZmY6MDAwMDAwMDAKICAwMDAwMDAwNDowMDAwMDAwMyAtPiAxYzAzYzE2 MzowM2MwMDAzZjowMDAwMWZmZjowMDAwMDAwNgogIDAwMDAwMDA1OmZmZmZmZmZmIC0+IDAwMDAw MDQwOjAwMDAwMDQwOjAwMDAwMDAzOjAwMDQyMTIwCiAgMDAwMDAwMDY6ZmZmZmZmZmYgLT4gMDAw MDAwNzc6MDAwMDAwMDI6MDAwMDAwMDk6MDAwMDAwMDAKICAwMDAwMDAwNzowMDAwMDAwMCAtPiAw MDAwMDAwMDowMDAwMjdhYjowMDAwMDAwMDowMDAwMDAwMAogIDAwMDAwMDBhOmZmZmZmZmZmIC0+ IDA3MzAwNDAzOjAwMDAwMDAwOjAwMDAwMDAwOjAwMDAwNjAzCiAgMDAwMDAwMGI6ZmZmZmZmZmYg LT4gMDAwMDAwMDE6MDAwMDAwMDI6MDAwMDAxMDA6MDAwMDAwMDAKICAwMDAwMDAwZDowMDAwMDAw MCAtPiAwMDAwMDAwNzowMDAwMDM0MDowMDAwMDM0MDowMDAwMDAwMAogIDAwMDAwMDBkOjAwMDAw MDAxIC0+IDAwMDAwMDAxOjAwMDAwMDAwOjAwMDAwMDAwOjAwMDAwMDAwCiAgMDAwMDAwMGQ6MDAw MDAwMDIgLT4gMDAwMDAxMDA6MDAwMDAyNDA6MDAwMDAwMDA6MDAwMDAwMDAKICA4MDAwMDAwMDpm ZmZmZmZmZiAtPiA4MDAwMDAwODowMDAwMDAwMDowMDAwMDAwMDowMDAwMDAwMAogIDgwMDAwMDAx OmZmZmZmZmZmIC0+IDAwMDAwMDAwOjAwMDAwMDAwOjAwMDAwMDIxOjJjMTAwODAwCiAgODAwMDAw MDI6ZmZmZmZmZmYgLT4gNjU3NDZlNDk6Mjk1MjI4NmM6NmY2NTU4MjA6Mjk1MjI4NmUKICA4MDAw MDAwMzpmZmZmZmZmZiAtPiA1NTUwNDMyMDoyZDMzNDUyMDozMDM0MzIzMToyMDMzNzYyMAogIDgw MDAwMDA0OmZmZmZmZmZmIC0+IDJlMzMyMDQwOjQ4NDczMDM0OjAwMDAwMDdhOjAwMDAwMDAwCiAg ODAwMDAwMDY6ZmZmZmZmZmYgLT4gMDAwMDAwMDA6MDAwMDAwMDA6MDEwMDYwNDA6MDAwMDAwMDAK ICA4MDAwMDAwNzpmZmZmZmZmZiAtPiAwMDAwMDAwMDowMDAwMDAwMDowMDAwMDAwMDowMDAwMDEw MAogIDgwMDAwMDA4OmZmZmZmZmZmIC0+IDAwMDAzMDI3OjAwMDAwMDAwOjAwMDAwMDAwOjAwMDAw MDAwCkhvc3QgcG9saWN5OgogIDAwMDAwMDAwOmZmZmZmZmZmIC0+IDAwMDAwMDBkOjc1NmU2NTQ3 OjZjNjU3NDZlOjQ5NjU2ZTY5CiAgMDAwMDAwMDE6ZmZmZmZmZmYgLT4gMDAwMzA2YzM6MDAxMDA4 MDA6NzdmYWYzZmY6YmZlYmZiZmYKICAwMDAwMDAwMjpmZmZmZmZmZiAtPiA3NjAzNjMwMTowMGYw YjVmZjowMDAwMDAwMDowMGMxMDAwMAogIDAwMDAwMDA0OjAwMDAwMDAwIC0+IDFjMDA0MTIxOjAx YzAwMDNmOjAwMDAwMDNmOjAwMDAwMDAwCiAgMDAwMDAwMDQ6MDAwMDAwMDEgLT4gMWMwMDQxMjI6 MDFjMDAwM2Y6MDAwMDAwM2Y6MDAwMDAwMDAKICAwMDAwMDAwNDowMDAwMDAwMiAtPiAxYzAwNDE0 MzowMWMwMDAzZjowMDAwMDFmZjowMDAwMDAwMAogIDAwMDAwMDA0OjAwMDAwMDAzIC0+IDFjMDNj MTYzOjAzYzAwMDNmOjAwMDAxZmZmOjAwMDAwMDA2CiAgMDAwMDAwMDc6MDAwMDAwMDAgLT4gMDAw MDAwMDA6MDAwMDI3YWI6MDAwMDAwMDA6MDAwMDAwMDAKICAwMDAwMDAwYTpmZmZmZmZmZiAtPiAw NzMwMDQwMzowMDAwMDAwMDowMDAwMDAwMDowMDAwMDYwMwogIDAwMDAwMDBkOjAwMDAwMDAwIC0+ IDAwMDAwMDA3OjAwMDAwMDAwOjAwMDAwMzQwOjAwMDAwMDAwCiAgMDAwMDAwMGQ6MDAwMDAwMDEg LT4gMDAwMDAwMDE6MDAwMDAwMDA6MDAwMDAwMDA6MDAwMDAwMDAKICAwMDAwMDAwZDowMDAwMDAw MiAtPiAwMDAwMDEwMDowMDAwMDI0MDowMDAwMDAwMDowMDAwMDAwMAogIDgwMDAwMDAwOmZmZmZm ZmZmIC0+IDgwMDAwMDA4OjAwMDAwMDAwOjAwMDAwMDAwOjAwMDAwMDAwCiAgODAwMDAwMDE6ZmZm ZmZmZmYgLT4gMDAwMDAwMDA6MDAwMDAwMDA6MDAwMDAwMjE6MmMxMDA4MDAKICA4MDAwMDAwMjpm ZmZmZmZmZiAtPiA2NTc0NmU0OToyOTUyMjg2Yzo2ZjY1NTgyMDoyOTUyMjg2ZQogIDgwMDAwMDAz OmZmZmZmZmZmIC0+IDU1NTA0MzIwOjJkMzM0NTIwOjMwMzQzMjMxOjIwMzM3NjIwCiAgODAwMDAw MDQ6ZmZmZmZmZmYgLT4gMmUzMzIwNDA6NDg0NzMwMzQ6MDAwMDAwN2E6MDAwMDAwMDAKICA4MDAw MDAwNjpmZmZmZmZmZiAtPiAwMDAwMDAwMDowMDAwMDAwMDowMTAwNjA0MDowMDAwMDAwMAogIDgw MDAwMDA3OmZmZmZmZmZmIC0+IDAwMDAwMDAwOjAwMDAwMDAwOjAwMDAwMDAwOjAwMDAwMTAwCiAg ODAwMDAwMDg6ZmZmZmZmZmYgLT4gMDAwMDMwMjc6MDAwMDAwMDA6MDAwMDAwMDA6MDAwMDAwMDAK LS0tCiB0b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaCAgICAgICB8ICAyICsKIHRvb2xzL2xp YnhjL3hjX2NwdWlkX3g4Ni5jICAgICAgICAgIHwgMjcgKysrKysrKysrKysrCiB4ZW4vYXJjaC94 ODYvY3B1aWQuYyAgICAgICAgICAgICAgICB8IDg4ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKIHhlbi9hcmNoL3g4Ni9zeXNjdGwuYyAgICAgICAgICAgICAgIHwgMzYgKysr KysrKysrKysrKysrCiB4ZW4vaW5jbHVkZS9hc20teDg2L2NwdWlkLmggICAgICAgICB8IDE3ICsr KysrKysKIHhlbi9pbmNsdWRlL3B1YmxpYy9kb21jdGwuaCAgICAgICAgIHwgIDggKysrKwogeGVu L2luY2x1ZGUvcHVibGljL3N5c2N0bC5oICAgICAgICAgfCAyNiArKysrKysrKysrKwogeGVuL3hz bS9mbGFzay9ob29rcy5jICAgICAgICAgICAgICAgfCAgMSArCiB4ZW4veHNtL2ZsYXNrL3BvbGlj eS9hY2Nlc3NfdmVjdG9ycyB8ICAyICstCiA5IGZpbGVzIGNoYW5nZWQsIDIwNiBpbnNlcnRpb25z KCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5j dHJsLmggYi90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaAppbmRleCBiZGU4MzEzLi44MDk2 OTlmIDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaAorKysgYi90b29s cy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaApAQCAtMjQ4NSw2ICsyNDg1LDggQEAgaW50IHhjX3Bz cl9jYXRfZ2V0X2wzX2luZm8oeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IHNvY2tldCwKIGlu dCB4Y19nZXRfY3B1X2xldmVsbGluZ19jYXBzKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCAq Y2Fwcyk7CiBpbnQgeGNfZ2V0X2NwdV9mZWF0dXJlc2V0KHhjX2ludGVyZmFjZSAqeGNoLCB1aW50 MzJfdCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKm5yX2ZlYXR1 cmVzLCB1aW50MzJfdCAqZmVhdHVyZXNldCk7CitpbnQgeGNfZ2V0X3N5c3RlbV9jcHVpZF9wb2xp Y3koeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGluZGV4LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVpbnQzMl90ICpucl9sZWF2ZXMsIHhlbl9jcHVpZF9sZWFmX3QgKmxlYXZl cyk7CiAKIHVpbnQzMl90IHhjX2dldF9jcHVfZmVhdHVyZXNldF9zaXplKHZvaWQpOwogCmRpZmYg LS1naXQgYS90b29scy9saWJ4Yy94Y19jcHVpZF94ODYuYyBiL3Rvb2xzL2xpYnhjL3hjX2NwdWlk X3g4Ni5jCmluZGV4IGQ4OTA5MzUuLjRhODBhODUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL3hj X2NwdWlkX3g4Ni5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX2NwdWlkX3g4Ni5jCkBAIC04Myw2ICs4 MywzMyBAQCBpbnQgeGNfZ2V0X2NwdV9mZWF0dXJlc2V0KHhjX2ludGVyZmFjZSAqeGNoLCB1aW50 MzJfdCBpbmRleCwKICAgICByZXR1cm4gcmV0OwogfQogCitpbnQgeGNfZ2V0X3N5c3RlbV9jcHVp ZF9wb2xpY3koeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGluZGV4LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpucl9sZWF2ZXMsIHhlbl9jcHVpZF9sZWFmX3Qg KmxlYXZlcykKK3sKKyAgICBERUNMQVJFX1NZU0NUTDsKKyAgICBERUNMQVJFX0hZUEVSQ0FMTF9C T1VOQ0UobGVhdmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbnJfbGVhdmVzICog c2l6ZW9mKCpsZWF2ZXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYQ19IWVBFUkNB TExfQlVGRkVSX0JPVU5DRV9PVVQpOworICAgIGludCByZXQ7CisKKyAgICBpZiAoIHhjX2h5cGVy Y2FsbF9ib3VuY2VfcHJlKHhjaCwgbGVhdmVzKSApCisgICAgICAgIHJldHVybiAtMTsKKworICAg IHN5c2N0bC5jbWQgPSBYRU5fU1lTQ1RMX2dldF9jcHVpZF9wb2xpY3k7CisgICAgc3lzY3RsLnUu Y3B1aWRfcG9saWN5LmluZGV4ID0gaW5kZXg7CisgICAgc3lzY3RsLnUuY3B1aWRfcG9saWN5Lm5y X2xlYXZlcyA9ICpucl9sZWF2ZXM7CisgICAgc2V0X3hlbl9ndWVzdF9oYW5kbGUoc3lzY3RsLnUu Y3B1aWRfcG9saWN5LnBvbGljeSwgbGVhdmVzKTsKKworICAgIHJldCA9IGRvX3N5c2N0bCh4Y2gs ICZzeXNjdGwpOworCisgICAgeGNfaHlwZXJjYWxsX2JvdW5jZV9wb3N0KHhjaCwgbGVhdmVzKTsK KworICAgIGlmICggIXJldCApCisgICAgICAgICpucl9sZWF2ZXMgPSBzeXNjdGwudS5jcHVpZF9w b2xpY3kubnJfbGVhdmVzOworCisgICAgcmV0dXJuIHJldDsKK30KKwogdWludDMyX3QgeGNfZ2V0 X2NwdV9mZWF0dXJlc2V0X3NpemUodm9pZCkKIHsKICAgICByZXR1cm4gRkVBVFVSRVNFVF9OUl9F TlRSSUVTOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2NwdWlkLmMgYi94ZW4vYXJjaC94ODYv Y3B1aWQuYwppbmRleCA5MGYxMjVlLi4wMDBiZjI0IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYv Y3B1aWQuYworKysgYi94ZW4vYXJjaC94ODYvY3B1aWQuYwpAQCAtMiw2ICsyLDcgQEAKICNpbmNs dWRlIDx4ZW4vbGliLmg+CiAjaW5jbHVkZSA8eGVuL3NjaGVkLmg+CiAjaW5jbHVkZSA8YXNtL2Nw dWlkLmg+CisjaW5jbHVkZSA8YXNtL2d1ZXN0X2FjY2Vzcy5oPgogI2luY2x1ZGUgPGFzbS9odm0v aHZtLmg+CiAjaW5jbHVkZSA8YXNtL2h2bS9uZXN0ZWRodm0uaD4KICNpbmNsdWRlIDxhc20vaHZt L3N2bS9zdm0uaD4KQEAgLTU5OSw2ICs2MDAsOTMgQEAgaW50IGluaXRfZG9tYWluX2NwdWlkX3Bv bGljeShzdHJ1Y3QgZG9tYWluICpkKQogICAgIHJldHVybiAwOwogfQogCisvKgorICogQ29weSBh IHNpbmdsZSBjcHVpZF9sZWFmIGludG8gYSBndWVzdC1wcm92aWRlZCB4ZW5fY3B1aWRfbGVhZl90 IGJ1ZmZlciwKKyAqIHBlcmZvcm1pbmcgYm91bmRhcnkgY2hlY2tpbmcgYWdhaW5zdCB0aGUgZ3Vl c3RzIGFycmF5IHNpemUuCisgKi8KK3N0YXRpYyBpbnQgY29weV9sZWFmX3RvX2d1ZXN0KHVpbnQz Ml90IGxlYWYsIHVpbnQzMl90IHN1YmxlYWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBzdHJ1Y3QgY3B1aWRfbGVhZiAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFhFTl9HVUVTVF9IQU5ETEVfNjQoeGVuX2NwdWlkX2xlYWZfdCkgbGVhdmVzLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKmN1cnJfbGVhZiwgdWludDMyX3Qg bnJfbGVhdmVzKQoreworICAgIGNvbnN0IHhlbl9jcHVpZF9sZWFmX3QgdmFsID0KKyAgICAgICAg eyBsZWFmLCBzdWJsZWFmLCBkYXRhLT5hLCBkYXRhLT5iLCBkYXRhLT5jLCBkYXRhLT5kIH07CisK KyAgICBpZiAoIGNvcHlfdG9fZ3Vlc3Rfb2Zmc2V0KGxlYXZlcywgKmN1cnJfbGVhZiwgJnZhbCwg MSkgKQorICAgICAgICByZXR1cm4gLUVGQVVMVDsKKworICAgIGlmICggKysoKmN1cnJfbGVhZikg PT0gbnJfbGVhdmVzICkKKyAgICAgICAgcmV0dXJuIC1FTk9CVUZTOworCisgICAgcmV0dXJuIDA7 Cit9CisKKy8qCisgKiBTZXJpYWxpc2UgYSBjcHVpZF9wb2xpY3kgb2JqZWN0IGludG8gYSBndWVz dC1wcm92aWRlZCBhcnJheS4gIFdyaXRlcyBhdAorICogbW9zdCBDUFVJRF9NQVhfU0VSSUFMSVNF RF9MRUFWRVMsIGJ1dCBlbGlkZXMgbGVhdmVzIHdoaWNoIGFyZSBlbnRpcmVseQorICogZW1wdHku ICBSZXR1cm5zIC1FTk9CVUZTIGlmIHRoZSBndWVzdCBhcnJheSBpcyB0b28gc2hvcnQuICBPbiBz dWNjZXNzLAorICogbnJfbGVhdmVzX3AgaXMgdXBkYXRlZCB3aXRoIHRoZSBhY3R1YWwgbnVtYmVy IG9mIGxlYXZlcyB3cml0dGVuLgorICovCitpbnQgY29weV9jcHVpZF9wb2xpY3lfdG9fZ3Vlc3Qo Y29uc3Qgc3RydWN0IGNwdWlkX3BvbGljeSAqcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBYRU5fR1VFU1RfSEFORExFXzY0KHhlbl9jcHVpZF9sZWFmX3QpIGxlYXZlcywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqbnJfbGVhdmVzX3ApCit7CisgICAg dWludDMyX3QgbnJfbGVhdmVzID0gKm5yX2xlYXZlc19wLCBjdXJyX2xlYWYgPSAwLCBsZWFmLCBz dWJsZWFmOworCisgICAgaWYgKCBucl9sZWF2ZXMgPT0gMCApCisgICAgICAgIHJldHVybiAtRU5P QlVGUzsKKworI2RlZmluZSBDT1BZX0xFQUYobCwgcywgZGF0YSkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKKyAgICAoeyBpbnQgcmV0OyAvKiBFbGlkZSBsZWF2ZXMgd2hpY2gg YXJlIGZ1bGx5IGVtcHR5LiAqLyAgICAgICBcCisgICAgICAgIGlmICggKCoodWludDY0X3QgKiko JihkYXRhKS0+YSkgfCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAqKHVp bnQ2NF90ICopKCYoZGF0YSktPmMpKSAmJiAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg ICAgICAocmV0ID0gY29weV9sZWFmX3RvX2d1ZXN0KCAgICAgICAgICAgICAgICAgICAgICAgICBc CisgICAgICAgICAgICAgICAgIGwsIHMsIGRhdGEsIGxlYXZlcywgJmN1cnJfbGVhZiwgbnJfbGVh dmVzKSkgKSAgXAorICAgICAgICAgICAgcmV0dXJuIHJldDsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKyAgICB9KQorCisgICAgLyogQmFzaWMgbGVhdmVzLiAqLwor ICAgIGZvciAoIGxlYWYgPSAwOyBsZWFmIDw9IG1pbihwLT5iYXNpYy5tYXhfbGVhZiArIDB1bCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVJSQVlfU0laRShwLT5iYXNpYy5yYXcp IC0gMSk7ICsrbGVhZiApCisgICAgeworICAgICAgICBzd2l0Y2ggKCBsZWFmICkKKyAgICAgICAg eworICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICBmb3IgKCBzdWJsZWFmID0gMDsgc3VibGVh ZiA8IEFSUkFZX1NJWkUocC0+Y2FjaGUucmF3KTsgKytzdWJsZWFmICkKKyAgICAgICAgICAgICAg ICBDT1BZX0xFQUYobGVhZiwgc3VibGVhZiwgJnAtPmNhY2hlLnJhd1tzdWJsZWFmXSk7CisgICAg ICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDc6CisgICAgICAgICAgICBmb3IgKCBzdWJs ZWFmID0gMDsKKyAgICAgICAgICAgICAgICAgIHN1YmxlYWYgPD0gbWluKHAtPmZlYXQubWF4X3N1 YmxlYWYgKyAwdWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUlJBWV9TSVpF KHAtPmZlYXQucmF3KSAtIDEpOyArK3N1YmxlYWYgKQorICAgICAgICAgICAgICAgIENPUFlfTEVB RihsZWFmLCBzdWJsZWFmLCAmcC0+ZmVhdC5yYXdbc3VibGVhZl0pOworICAgICAgICAgICAgYnJl YWs7CisKKyAgICAgICAgY2FzZSBYU1RBVEVfQ1BVSUQ6CisgICAgICAgICAgICBmb3IgKCBzdWJs ZWFmID0gMDsKKyAgICAgICAgICAgICAgICAgIHN1YmxlYWYgPD0gbWluKDYzdWwsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBBUlJBWV9TSVpFKHAtPnhzdGF0ZS5yYXcpIC0gMSk7 ICsrc3VibGVhZiApCisgICAgICAgICAgICAgICAgQ09QWV9MRUFGKGxlYWYsIHN1YmxlYWYsICZw LT54c3RhdGUucmF3W3N1YmxlYWZdKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRl ZmF1bHQ6CisgICAgICAgICAgICBDT1BZX0xFQUYobGVhZiwgWEVOX0NQVUlEX05PX1NVQkxFQUYs ICZwLT5iYXNpYy5yYXdbbGVhZl0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg ICB9CisKKyAgICAvKiBFeHRlbmRlZCBsZWF2ZXMuICovCisgICAgZm9yICggbGVhZiA9IDA7IGxl YWYgPD0gbWluKHAtPmV4dGQubWF4X2xlYWYgJiAweGZmZmZ1bCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgQVJSQVlfU0laRShwLT5leHRkLnJhdykgLSAxKTsgKytsZWFmICkKKyAg ICAgICAgQ09QWV9MRUFGKGxlYWYgfCAweDgwMDAwMDAwLCBYRU5fQ1BVSURfTk9fU1VCTEVBRiwg JnAtPmV4dGQucmF3W2xlYWZdKTsKKworI3VuZGVmIENPUFlfTEVBRgorCisgICAgKm5yX2xlYXZl c19wID0gY3Vycl9sZWFmOworICAgIHJldHVybiAwOworfQorCiB2b2lkIGd1ZXN0X2NwdWlkKGNv bnN0IHN0cnVjdCB2Y3B1ICp2LCB1aW50MzJfdCBsZWFmLAogICAgICAgICAgICAgICAgICB1aW50 MzJfdCBzdWJsZWFmLCBzdHJ1Y3QgY3B1aWRfbGVhZiAqcmVzKQogewpkaWZmIC0tZ2l0IGEveGVu L2FyY2gveDg2L3N5c2N0bC5jIGIveGVuL2FyY2gveDg2L3N5c2N0bC5jCmluZGV4IDdjMjk0YmUu LmNmNTA2OTggMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9zeXNjdGwuYworKysgYi94ZW4vYXJj aC94ODYvc3lzY3RsLmMKQEAgLTI1MCw2ICsyNTAsNDIgQEAgbG9uZyBhcmNoX2RvX3N5c2N0bCgK ICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBYRU5fU1lTQ1RMX2dldF9jcHVpZF9w b2xpY3k6CisgICAgeworICAgICAgICBzdGF0aWMgY29uc3Qgc3RydWN0IGNwdWlkX3BvbGljeSAq Y29uc3QgcG9saWN5X3RhYmxlW10gPSB7CisgICAgICAgICAgICBbWEVOX1NZU0NUTF9jcHVpZF9w b2xpY3lfcmF3XSAgPSAmcmF3X2NwdWlkX3BvbGljeSwKKyAgICAgICAgICAgIFtYRU5fU1lTQ1RM X2NwdWlkX3BvbGljeV9ob3N0XSA9ICZob3N0X2NwdWlkX3BvbGljeSwKKyAgICAgICAgfTsKKyAg ICAgICAgY29uc3Qgc3RydWN0IGNwdWlkX3BvbGljeSAqcCA9IE5VTEw7CisKKyAgICAgICAgLyog UmVxdWVzdCBmb3IgbWF4aW11bSBudW1iZXIgb2YgbGVhdmVzPyAqLworICAgICAgICBpZiAoIGd1 ZXN0X2hhbmRsZV9pc19udWxsKHN5c2N0bC0+dS5jcHVpZF9wb2xpY3kucG9saWN5KSApCisgICAg ICAgIHsKKyAgICAgICAgICAgIHN5c2N0bC0+dS5jcHVpZF9wb2xpY3kubnJfbGVhdmVzID0gQ1BV SURfTUFYX1NFUklBTElTRURfTEVBVkVTOworICAgICAgICAgICAgaWYgKCBfX2NvcHlfZmllbGRf dG9fZ3Vlc3QodV9zeXNjdGwsIHN5c2N0bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHUuY3B1aWRfcG9saWN5Lm5yX2xlYXZlcykgKQorICAgICAgICAgICAgICAgIHJl dCA9IC1FRkFVTFQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIC8q IExvb2sgdXAgcmVxdWVzdGVkIHBvbGljeS4gKi8KKyAgICAgICAgaWYgKCBzeXNjdGwtPnUuY3B1 aWRfcG9saWN5LmluZGV4IDwgQVJSQVlfU0laRShwb2xpY3lfdGFibGUpICkKKyAgICAgICAgICAg IHAgPSBwb2xpY3lfdGFibGVbc3lzY3RsLT51LmNwdWlkX3BvbGljeS5pbmRleF07CisKKyAgICAg ICAgLyogQmFkIHBvbGljeSBpbmRleD8gKi8KKyAgICAgICAgaWYgKCAhcCApCisgICAgICAgICAg ICByZXQgPSAtRUlOVkFMOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXQgPSBjb3B5X2Nw dWlkX3BvbGljeV90b19ndWVzdChwLCBzeXNjdGwtPnUuY3B1aWRfcG9saWN5LnBvbGljeSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzeXNjdGwtPnUuY3B1 aWRfcG9saWN5Lm5yX2xlYXZlcyk7CisKKyAgICAgICAgLyogSW5mb3JtIHRoZSBjYWxsZXIgb2Yg aG93IG1hbnkgbGVhdmVzIHdlIHdyb3RlLiAqLworICAgICAgICBpZiAoICFyZXQgKQorICAgICAg ICAgICAgcmV0ID0gX19jb3B5X2ZpZWxkX3RvX2d1ZXN0KHVfc3lzY3RsLCBzeXNjdGwsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdS5jcHVpZF9wb2xpY3kubnJfbGVh dmVzKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0 ID0gLUVOT1NZUzsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20t eDg2L2NwdWlkLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2NwdWlkLmgKaW5kZXggZDJkZDg0MS4u MmZiMDZjMSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9jcHVpZC5oCisrKyBiL3hl bi9pbmNsdWRlL2FzbS14ODYvY3B1aWQuaApAQCAtNzAsNiArNzAsMTggQEAgREVDTEFSRV9QRVJf Q1BVKGJvb2wsIGNwdWlkX2ZhdWx0aW5nX2VuYWJsZWQpOwogI2RlZmluZSBDUFVJRF9HVUVTVF9O Ul9FWFREICAgICAgIE1BWChDUFVJRF9HVUVTVF9OUl9FWFREX0lOVEVMLCBcCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQVUlEX0dVRVNUX05SX0VYVERfQU1EKQogCisv KgorICogTWF4aW11bSBudW1iZXIgb2YgbGVhdmVzIGEgc3RydWN0IGNwdWlkX3BvbGljeSB0dXJu cyBpbnRvIHdoZW4gc2VyaWFsaXNlZAorICogZm9yIGludGVyYWN0aW9uIHdpdGggdGhlIHRvb2xz dGFjay4gIChTdW0gb2YgYWxsIGxlYXZlcyBpbiBlYWNoIHVuaW9uLCBsZXNzCisgKiB0aGUgZW50 cmllcyBpbiBiYXNpYyB3aGljaCBzdWItdW5pb25zIGhhbmcgb2ZmIG9mLikKKyAqLworI2RlZmlu ZSBDUFVJRF9NQVhfU0VSSUFMSVNFRF9MRUFWRVMgICAgICAgICAgICAgICAgICAgICBcCisgICAg KENQVUlEX0dVRVNUX05SX0JBU0lDICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg ICAgQ1BVSURfR1VFU1RfTlJfRkVBVCAtICEhQ1BVSURfR1VFU1RfTlJfRkVBVCArICAgICAgXAor ICAgICBDUFVJRF9HVUVTVF9OUl9DQUNIRSAtICEhQ1BVSURfR1VFU1RfTlJfQ0FDSEUgKyAgICBc CisgICAgIENQVUlEX0dVRVNUX05SX1hTVEFURSAtICEhQ1BVSURfR1VFU1RfTlJfWFNUQVRFICsg IFwKKyAgICAgQ1BVSURfR1VFU1RfTlJfRVhURCkKKwogc3RydWN0IGNwdWlkX3BvbGljeQogewog I2RlZmluZSBERUNMX0JJVEZJRUxEKHdvcmQpIF9ERUNMX0JJVEZJRUxEKEZFQVRVUkVTRVRfICMj IHdvcmQpCkBAIC0yNjUsNiArMjc3LDExIEBAIHZvaWQgcmVjYWxjdWxhdGVfY3B1aWRfcG9saWN5 KHN0cnVjdCBkb21haW4gKmQpOwogdm9pZCBndWVzdF9jcHVpZChjb25zdCBzdHJ1Y3QgdmNwdSAq diwgdWludDMyX3QgbGVhZiwKICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc3VibGVhZiwgc3Ry dWN0IGNwdWlkX2xlYWYgKnJlcyk7CiAKKy8qIFNlcmlhbGlzZSBhIGNwdWlkIHBvbGljeSBhbmQg Y29weSBpdCB0byBndWVzdCBjb250ZXh0LiAqLworaW50IGNvcHlfY3B1aWRfcG9saWN5X3RvX2d1 ZXN0KGNvbnN0IHN0cnVjdCBjcHVpZF9wb2xpY3kgKnBvbGljeSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBYRU5fR1VFU1RfSEFORExFXzY0KHhlbl9jcHVpZF9sZWFmX3QpIGxlYXZl cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqbnJfbGVhdmVzKTsK KwogI2VuZGlmIC8qIF9fQVNTRU1CTFlfXyAqLwogI2VuZGlmIC8qICFfX1g4Nl9DUFVJRF9IX18g Ki8KIApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL2RvbWN0bC5oIGIveGVuL2luY2x1 ZGUvcHVibGljL2RvbWN0bC5oCmluZGV4IGZmMzk3NjIuLjc1YTlkMWQgMTAwNjQ0Ci0tLSBhL3hl bi9pbmNsdWRlL3B1YmxpYy9kb21jdGwuaAorKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvZG9tY3Rs LmgKQEAgLTY5Miw2ICs2OTIsMTQgQEAgc3RydWN0IHhlbl9kb21jdGxfY3B1aWQgewogfTsKIHR5 cGVkZWYgc3RydWN0IHhlbl9kb21jdGxfY3B1aWQgeGVuX2RvbWN0bF9jcHVpZF90OwogREVGSU5F X1hFTl9HVUVTVF9IQU5ETEUoeGVuX2RvbWN0bF9jcHVpZF90KTsKKworI2RlZmluZSBYRU5fQ1BV SURfTk9fU1VCTEVBRiAweGZmZmZmZmZmdQorc3RydWN0IHhlbl9jcHVpZF9sZWFmIHsKKyAgICB1 aW50MzJfdCBsZWFmLCBzdWJsZWFmOworICAgIHVpbnQzMl90IGEsIGIsIGMsIGQ7Cit9OwordHlw ZWRlZiBzdHJ1Y3QgeGVuX2NwdWlkX2xlYWYgeGVuX2NwdWlkX2xlYWZfdDsKK0RFRklORV9YRU5f R1VFU1RfSEFORExFKHhlbl9jcHVpZF9sZWFmX3QpOwogI2VuZGlmCiAKIC8qCmRpZmYgLS1naXQg YS94ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3RsLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3Rs LmgKaW5kZXggZWU3NmE2Ni4uNjQxZTM5NyAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvcHVibGlj L3N5c2N0bC5oCisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaApAQCAtMTA5NSw2ICsx MDk1LDI4IEBAIHN0cnVjdCB4ZW5fc3lzY3RsX2xpdmVwYXRjaF9vcCB7CiB0eXBlZGVmIHN0cnVj dCB4ZW5fc3lzY3RsX2xpdmVwYXRjaF9vcCB4ZW5fc3lzY3RsX2xpdmVwYXRjaF9vcF90OwogREVG SU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX3N5c2N0bF9saXZlcGF0Y2hfb3BfdCk7CiAKKyNpZiBk ZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pCisvKgorICogWEVOX1NZU0NU TF9nZXRfY3B1aWRfcG9saWN5ICh4ODYgc3BlY2lmaWMpCisgKgorICogUmV0dXJuIGluZm9ybWF0 aW9uIGFib3V0IENQVUlEIHBvbGljaWVzIGF2YWlsYWJsZSBvbiB0aGlzIGhvc3QuCisgKiAgLSAg UmF3OiBUaGUgcmVhbCBjcHVpZCB2YWx1ZXMuCisgKi8KK3N0cnVjdCB4ZW5fc3lzY3RsX2NwdWlk X3BvbGljeSB7CisjZGVmaW5lIFhFTl9TWVNDVExfY3B1aWRfcG9saWN5X3JhdyAgICAgIDAKKyNk ZWZpbmUgWEVOX1NZU0NUTF9jcHVpZF9wb2xpY3lfaG9zdCAgICAgMQorICAgIHVpbnQzMl90IGlu ZGV4OyAgICAgICAvKiBJTjogV2hpY2ggcG9saWN5IHRvIHF1ZXJ5PyAqLworICAgIHVpbnQzMl90 IG5yX2xlYXZlczsgICAvKiBJTi9PVVQ6IE51bWJlciBvZiBsZWF2ZXMgaW4vd3JpdHRlbiB0bwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAncG9saWN5Jywgb3IgdGhlIG1heGltdW0gbnVt YmVyIG9mIGxlYXZlcyBpZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgZ3Vlc3Qg aGFuZGxlIGlzIE5VTEwuICBOQi4gQWxsIHBvbGljaWVzCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAqIGNvbWUgZnJvbSB0aGUgc2FtZSBzcGFjZSwgc28gaGF2ZSB0aGUgc2FtZQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgKiBtYXhpbXVtIGxlbmd0aC4gKi8KKyAgICBYRU5fR1VFU1Rf SEFORExFXzY0KHhlbl9jcHVpZF9sZWFmX3QpIHBvbGljeTsgLyogT1VUOiAqLworfTsKK3R5cGVk ZWYgc3RydWN0IHhlbl9zeXNjdGxfY3B1aWRfcG9saWN5IHhlbl9zeXNjdGxfY3B1aWRfcG9saWN5 X3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fc3lzY3RsX2NwdWlkX3BvbGljeV90KTsK KyNlbmRpZgorCiBzdHJ1Y3QgeGVuX3N5c2N0bCB7CiAgICAgdWludDMyX3QgY21kOwogI2RlZmlu ZSBYRU5fU1lTQ1RMX3JlYWRjb25zb2xlICAgICAgICAgICAgICAgICAgICAxCkBAIC0xMTIzLDYg KzExNDUsNyBAQCBzdHJ1Y3QgeGVuX3N5c2N0bCB7CiAjZGVmaW5lIFhFTl9TWVNDVExfZ2V0X2Nw dV9sZXZlbGxpbmdfY2FwcyAgICAgICAgMjUKICNkZWZpbmUgWEVOX1NZU0NUTF9nZXRfY3B1X2Zl YXR1cmVzZXQgICAgICAgICAgICAyNgogI2RlZmluZSBYRU5fU1lTQ1RMX2xpdmVwYXRjaF9vcCAg ICAgICAgICAgICAgICAgIDI3CisjZGVmaW5lIFhFTl9TWVNDVExfZ2V0X2NwdWlkX3BvbGljeSAg ICAgICAgICAgICAgMjgKICAgICB1aW50MzJfdCBpbnRlcmZhY2VfdmVyc2lvbjsgLyogWEVOX1NZ U0NUTF9JTlRFUkZBQ0VfVkVSU0lPTiAqLwogICAgIHVuaW9uIHsKICAgICAgICAgc3RydWN0IHhl bl9zeXNjdGxfcmVhZGNvbnNvbGUgICAgICAgcmVhZGNvbnNvbGU7CkBAIC0xMTUxLDYgKzExNzQs OSBAQCBzdHJ1Y3QgeGVuX3N5c2N0bCB7CiAgICAgICAgIHN0cnVjdCB4ZW5fc3lzY3RsX2NwdV9s ZXZlbGxpbmdfY2FwcyBjcHVfbGV2ZWxsaW5nX2NhcHM7CiAgICAgICAgIHN0cnVjdCB4ZW5fc3lz Y3RsX2NwdV9mZWF0dXJlc2V0ICAgIGNwdV9mZWF0dXJlc2V0OwogICAgICAgICBzdHJ1Y3QgeGVu X3N5c2N0bF9saXZlcGF0Y2hfb3AgICAgICBsaXZlcGF0Y2g7CisjaWYgZGVmaW5lZChfX2kzODZf XykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKQorICAgICAgICBzdHJ1Y3QgeGVuX3N5c2N0bF9jcHVp ZF9wb2xpY3kgICAgICBjcHVpZF9wb2xpY3k7CisjZW5kaWYKICAgICAgICAgdWludDhfdCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcGFkWzEyOF07CiAgICAgfSB1OwogfTsKZGlmZiAtLWdp dCBhL3hlbi94c20vZmxhc2svaG9va3MuYyBiL3hlbi94c20vZmxhc2svaG9va3MuYwppbmRleCBm ZDg0YWMwLi4wNzM5OWRmIDEwMDY0NAotLS0gYS94ZW4veHNtL2ZsYXNrL2hvb2tzLmMKKysrIGIv eGVuL3hzbS9mbGFzay9ob29rcy5jCkBAIC04MDEsNiArODAxLDcgQEAgc3RhdGljIGludCBmbGFz a19zeXNjdGwoaW50IGNtZCkKICAgICBjYXNlIFhFTl9TWVNDVExfY3B1dG9wb2luZm86CiAgICAg Y2FzZSBYRU5fU1lTQ1RMX251bWFpbmZvOgogICAgIGNhc2UgWEVOX1NZU0NUTF9wY2l0b3BvaW5m bzoKKyAgICBjYXNlIFhFTl9TWVNDVExfZ2V0X2NwdWlkX3BvbGljeToKICAgICAgICAgcmV0dXJu IGRvbWFpbl9oYXNfeGVuKGN1cnJlbnQtPmRvbWFpbiwgWEVOX19QSFlTSU5GTyk7CiAKICAgICBj YXNlIFhFTl9TWVNDVExfcHNyX2NtdF9vcDoKZGlmZiAtLWdpdCBhL3hlbi94c20vZmxhc2svcG9s aWN5L2FjY2Vzc192ZWN0b3JzIGIveGVuL3hzbS9mbGFzay9wb2xpY3kvYWNjZXNzX3ZlY3RvcnMK aW5kZXggMWY3ZWIzNS4uMTY4M2NmMCAxMDA2NDQKLS0tIGEveGVuL3hzbS9mbGFzay9wb2xpY3kv YWNjZXNzX3ZlY3RvcnMKKysrIGIveGVuL3hzbS9mbGFzay9wb2xpY3kvYWNjZXNzX3ZlY3RvcnMK QEAgLTI4LDcgKzI4LDcgQEAgY2xhc3MgeGVuCiAjIFhFTlBGX21pY3JvY29kZV91cGRhdGUKICAg ICBtaWNyb2NvZGUKICMgWEVOX1NZU0NUTF9waHlzaW5mbywgWEVOX1NZU0NUTF9jcHV0b3BvaW5m bywgWEVOX1NZU0NUTF9udW1haW5mbwotIyBYRU5fU1lTQ1RMX3BjaXRvcG9pbmZvCisjIFhFTl9T WVNDVExfcGNpdG9wb2luZm8gWEVOX1NZU0NUTF9nZXRfY3B1aWRfcG9saWN5CiAgICAgcGh5c2lu Zm8KICMgWEVOUEZfcGxhdGZvcm1fcXVpcmsKICAgICBxdWlyawotLSAKMi4xLjQKCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGlu ZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4t ZGV2ZWwK