From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v5 06/28] xen/xsplice: Hypervisor implementation of XEN_XSPLICE_op Date: Thu, 24 Mar 2016 16:00:18 -0400 Message-ID: <1458849640-22588-7-git-send-email-konrad.wilk@oracle.com> References: <1458849640-22588-1-git-send-email-konrad.wilk@oracle.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 1ajBRZ-0007Ls-7x for xen-devel@lists.xenproject.org; Thu, 24 Mar 2016 20:01:21 +0000 In-Reply-To: <1458849640-22588-1-git-send-email-konrad.wilk@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org, ross.lagerwall@citrix.com, konrad@kernel.org, andrew.cooper3@citrix.com, mpohlack@amazon.de, sasha.levin@oracle.com Cc: Wei Liu , Daniel De Graaf , Stefano Stabellini , Ian Jackson , Konrad Rzeszutek Wilk List-Id: xen-devel@lists.xenproject.org VGhlIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IGFjdHVhbGx5IGRvIGFueSBwYXRjaGluZy4KCkl0 IGp1c3QgYWRkcyB0aGUgZnJhbWV3b3JrIGZvciBkb2luZyB0aGUgaHlwZXJjYWxscywKa2VlcGlu ZyB0cmFjayBvZiBFTEYgcGF5bG9hZHMsIGFuZCB0aGUgYmFzaWMgb3BlcmF0aW9uczoKIC0gcXVl cnkgd2hpY2ggcGF5bG9hZHMgZXhpc3QsCiAtIHF1ZXJ5IGZvciBzcGVjaWZpYyBwYXlsb2FkcywK IC0gY2hlY2sqMSwgYXBwbHkqMSwgcmVwbGFjZSoxLCBhbmQgdW5sb2FkIHBheWxvYWRzLgoKKjE6 IFdoaWNoIG9mIGNvdXJzZSBpbiB0aGlzIHBhdGNoIGFyZSBub3BzLgoKVGhlIGZ1bmN0aW9uYWxp dHkgaXMgZGlzYWJsZWQgb24gQVJNIHVudGlsIGFsbCBhcmNoCmNvbXBvbmVudHMgYXJlIGltcGxl bWVudGVkLgoKQWxzbyBieSBkZWZhdWx0IGl0IGlzIGRpc2FibGVkIHVudGlsIHRoZSBpbXBsZW1l bnRhdGlvbgppcyBpbiBwbGFjZS4KCldlIGFsc28gdXNlIHJlY3Vyc2l2ZSBzcGlubG9ja3MgdG8g c28gdGhhdCB0aGUgZmluZF9wYXlsb2FkCmZ1bmN0aW9uIGRvZXMgbm90IG5lZWQgdG8gaGF2ZSBh ICdsb2NrJyBhbmQgJ25vbi1sb2NrJyB2YXJpYW50LgoKQWNrZWQtYnk6IERhbmllbCBEZSBHcmFh ZiA8ZGdkZWdyYUB0eWNoby5uc2EuZ292PgpTaWduZWQtb2ZmLWJ5OiBLb25yYWQgUnplc3p1dGVr IFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+ClNpZ25lZC1vZmYtYnk6IFJvc3MgTGFnZXJ3 YWxsIDxyb3NzLmxhZ2Vyd2FsbEBjaXRyaXguY29tPgoKLS0tCkNjOiBEYW5pZWwgRGUgR3JhYWYg PGRnZGVncmFAdHljaG8ubnNhLmdvdj4KQ2M6IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBldS5j aXRyaXguY29tPgpDYzogU3RlZmFubyBTdGFiZWxsaW5pIDxzdGVmYW5vLnN0YWJlbGxpbmlAZXUu Y2l0cml4LmNvbT4KQ2M6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+Cgp2MjogUmViYXNl ZCBvbiBrZXloYW5kbGVyOiByZXdvcmsga2V5aGFuZGxlciBpbmZyYXN0cnVjdHVyZQp2MzogRml4 ZWQgWFNNLgogLSBSZW1vdmVkIFJFVkVSVEVEIHN0YXRlLgogICAgU3BsaXQgc3RhdHVzIGFuZCBl cnJvciBjb2RlLgogICAgQWRkIFJFUExBQ0UgYWN0aW9uLgogICAgU2VwYXJhdGUgcGF5bG9hZCBk YXRhIGZyb20gdGhlIHBheWxvYWQgc3RydWN0dXJlLgogICAgcy9YU1BMSUNFX0lEXy4uL1hTUExJ Q0VfTkFNRV8uLi8KIC0gQWRkIHhzcGxpY2UgYW5kIENPTkZJR19YU1BMSUNFIGJ1aWxkIHRvcHRp b24uCiAgICBGaXggY29kZSBwZXIgSmFuJ3MgcmV2aWV3LgogICAgVXBkYXRlIHRoZSBzeXNjdGwu aCAoY2hhbmdlIGJpdHMgdG8gZW51bSBsaWtlKQogLSBSZWJhc2Ugb24gS2NvbmZpZyBjaGFuZ2Vz LgogLSBBZGQgbWlzc2luZyBwYWQgY2hlY2tzLiBSZS1vcmRlciBrZXloYW5kbGVyLmggdG8gYnVp bGQgb24gQVJNLgogLSBSZWJhc2Ugb24gYnVpbGQ6IGhvb2sgdGhlIHNjaGVkdWxlcnMgaW50byBL Y29uZmlnCiAtIHMvaWQvbmFtZS87IHMvcGF5bG9hZF9saXN0X2xvY2svcGF5bG9hZF9sb2NrLwog LSBQdXQgI2lmZGVmIENPTkZJR19YU1BMSUNFIGluIGhlYWRlciBmaWxlIHBlciBEb3VnIHJldmll dy4KIC0gQW5kcmV3IHJldmlldzoKICAgIC0gdXNlIHJlY3Vyc2l2ZSBzcGlubG9ja3MsIGNoYW5n ZSBuYW1lIHRvIHhzcGxpY2Vfb3AsCiAgICAgIHNwcmlua2xlIG5ldy1saW5lcywgYWRkIGxvY2Fs IHZhcmlhYmxlIGJsb2NrLCBpbmNsdWRlCiAgICAgIHN0YXRlIGRpYWdyYW0sIHNxdWFzaCB0d28g Z290byBsYWJlbHMsIHVzZSB2emFsbG9jIGluc3RlYWQgb2YKICAgICAgYWxsb2NfeGVuaGVhcF9w YWdlcy4KICAgIC0gY2hhbmdlICdzdGF0ZScgZnJvbSBpbnQzMiB0byB1aW50MzJfdAogICAgLSBy ZW1vdmUgdGhlIGVyciBsYWJlbCBvdXQgb2YgeHNwbGljZV91cGxvYWQKICAgIC0gdXNlIHZvaWQq IGluc3RhZWQgb2YgdWludDhfdAogICAgLSBtb3ZlIGNvZGUgYXJvdW5kIHRvIG1ha2UgaXQgZWFz aWVyIHRvIHJlYWQuCiAgICAtIEFkZCB2bWFwLmggdG8gY29tcGlsZXIgdW5kZXIgQVJNLgogLSBB ZGQgbWlzc2luZyBDb3B5cmlnaHQgaW4gaGVhZGVyIGZpbGUKIC0gRHJvcHBlZCBMT0FERUQgc3Rh dGUsIG1ha2UgdGhlIHBheWxvYWQgZ28gaW4gQ0hFQ0tFRC4KdjQ6IE1hZGUgaXQgb25seSB3b3Jr IG9uIHg4NiBwZXIgSnVsaWVuJ3MgKEFSTSkgbWFpbnRhaW5lciByZXF1ZXN0Lgp2NTogRHJvcHBl ZCB0aGUgbG9hZC0+Y2hlY2sgc3RhdGUgZXhhbXBsZSBpbiBzeXNjdGwuaAogICAgTWFkZSB0aGUg LT5ucj0wIGNhbGwgd29yay4gUmVtb3ZlIHJjPTAgaW4gbG90cyBvZiBjYXNlcy4gVXBkYXRlCiAg ICBoZWFkZXIgZnJvbSBkZXNpZ24gZG9jLgotLS0KIHRvb2xzL2ZsYXNrL3BvbGljeS9wb2xpY3kv bW9kdWxlcy94ZW4veGVuLnRlIHwgICAxICsKIHhlbi9jb21tb24vS2NvbmZpZyAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgIDEyICsKIHhlbi9jb21tb24vTWFrZWZpbGUgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAxICsKIHhlbi9jb21tb24vc3lzY3RsLmMgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICA3ICsKIHhlbi9jb21tb24veHNwbGljZS5jICAgICAgICAgICAgICAgICAg ICAgICAgIHwgNDA2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2luY2x1ZGUvcHVi bGljL3N5c2N0bC5oICAgICAgICAgICAgICAgICAgfCAxNjcgKysrKysrKysrKysKIHhlbi9pbmNs dWRlL3hlbi94c3BsaWNlLmggICAgICAgICAgICAgICAgICAgIHwgIDM1ICsrKwogeGVuL3hzbS9m bGFzay9ob29rcy5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKwogeGVuL3hzbS9mbGFz ay9wb2xpY3kvYWNjZXNzX3ZlY3RvcnMgICAgICAgICAgfCAgIDIgKwogOSBmaWxlcyBjaGFuZ2Vk LCA2MzcgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9jb21tb24veHNwbGlj ZS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2luY2x1ZGUveGVuL3hzcGxpY2UuaAoKZGlmZiAt LWdpdCBhL3Rvb2xzL2ZsYXNrL3BvbGljeS9wb2xpY3kvbW9kdWxlcy94ZW4veGVuLnRlIGIvdG9v bHMvZmxhc2svcG9saWN5L3BvbGljeS9tb2R1bGVzL3hlbi94ZW4udGUKaW5kZXggN2U2OWNlOS4u NjhlZjZkZSAxMDA2NDQKLS0tIGEvdG9vbHMvZmxhc2svcG9saWN5L3BvbGljeS9tb2R1bGVzL3hl bi94ZW4udGUKKysrIGIvdG9vbHMvZmxhc2svcG9saWN5L3BvbGljeS9tb2R1bGVzL3hlbi94ZW4u dGUKQEAgLTcyLDYgKzcyLDcgQEAgYWxsb3cgZG9tMF90IHhlbl90OnhlbjIgewogYWxsb3cgZG9t MF90IHhlbl90OnhlbjIgewogICAgIHBtdV9jdHJsCiAgICAgZ2V0X3N5bWJvbAorICAgIHhzcGxp Y2Vfb3AKIH07CiAKICMgQWxsb3cgZG9tMCB0byB1c2UgYWxsIFhFTlZFUl8gc3Vib3BzIGFuZCBW RVJTSU9OIHN1Ym9wcyB0aGF0IGhhdmUgY2hlY2tzLgpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9L Y29uZmlnIGIveGVuL2NvbW1vbi9LY29uZmlnCmluZGV4IDM1MjJlY2IuLmQ4MGRkZGIgMTAwNjQ0 Ci0tLSBhL3hlbi9jb21tb24vS2NvbmZpZworKysgYi94ZW4vY29tbW9uL0tjb25maWcKQEAgLTE4 Miw0ICsxODIsMTYgQEAgY29uZmlnIFNDSEVEX0RFRkFVTFQKIAogZW5kbWVudQogCisjIEVuYWJs ZS9EaXNhYmxlIHhzcGxpY2Ugc3VwcG9ydAorY29uZmlnIFhTUExJQ0UKKwlib29sICJ4U3BsaWNl IGxpdmUgcGF0Y2hpbmcgc3VwcG9ydCIKKwlkZWZhdWx0IG4KKwlkZXBlbmRzIG9uIFg4NgorCS0t LWhlbHAtLS0KKwkgIEFsbG93cyBhIHJ1bm5pbmcgWGVuIGh5cGVydmlzb3IgdG8gYmUgZHluYW1p Y2FsbHkgcGF0Y2hlZCB1c2luZworCSAgYmluYXJ5IHBhdGNoZXMgd2l0aG91dCByZWJvb3Rpbmcu IFRoaXMgaXMgcHJpbWFyaWx5IHVzZWQgdG8gYmluYXJpbHkKKwkgIHBhdGNoIGluIHRoZSBmaWVs ZCBhbiBoeXBlcnZpc29yIHdpdGggWFNBIGZpeGVzLgorCisJICBJZiB1bnN1cmUsIHNheSBZLgor CiBlbmRtZW51CmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL01ha2VmaWxlIGIveGVuL2NvbW1vbi9N YWtlZmlsZQppbmRleCBlNDNlYzQ5Li4xZTRiYzcwIDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL01h a2VmaWxlCisrKyBiL3hlbi9jb21tb24vTWFrZWZpbGUKQEAgLTU4LDYgKzU4LDcgQEAgb2JqLXkg Kz0gdnNwcmludGYubwogb2JqLXkgKz0gd2FpdC5vCiBvYmotJChDT05GSUdfWEVOT1BST0YpICs9 IHhlbm9wcm9mLm8KIG9iai15ICs9IHhtYWxsb2NfdGxzZi5vCitvYmotJChDT05GSUdfWFNQTElD RSkgKz0geHNwbGljZS5vCiAKIG9iai1iaW4tJChDT05GSUdfWDg2KSArPSAkKGZvcmVhY2ggbixk ZWNvbXByZXNzIGJ1bnppcDIgdW54eiB1bmx6bWEgdW5sem8gdW5sejQgZWFybHljcGlvLCQobiku aW5pdC5vKQogCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3N5c2N0bC5jIGIveGVuL2NvbW1vbi9z eXNjdGwuYwppbmRleCAyNTNiN2M4Li4wZmFjOTQwIDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL3N5 c2N0bC5jCisrKyBiL3hlbi9jb21tb24vc3lzY3RsLmMKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNs dWRlIDx4c20veHNtLmg+CiAjaW5jbHVkZSA8eGVuL3Btc3RhdC5oPgogI2luY2x1ZGUgPHhlbi9n Y292Lmg+CisjaW5jbHVkZSA8eGVuL3hzcGxpY2UuaD4KIAogbG9uZyBkb19zeXNjdGwoWEVOX0dV RVNUX0hBTkRMRV9QQVJBTSh4ZW5fc3lzY3RsX3QpIHVfc3lzY3RsKQogewpAQCAtNDYwLDYgKzQ2 MSwxMiBAQCBsb25nIGRvX3N5c2N0bChYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9zeXNjdGxf dCkgdV9zeXNjdGwpCiAgICAgICAgIHJldCA9IHRtZW1fY29udHJvbCgmb3AtPnUudG1lbV9vcCk7 CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBYRU5fU1lTQ1RMX3hzcGxpY2Vfb3A6CisgICAg ICAgIHJldCA9IHhzcGxpY2Vfb3AoJm9wLT51LnhzcGxpY2UpOworICAgICAgICBpZiAoIHJldCAh PSAtRU9QTk9UU1VQUCApCisgICAgICAgICAgICBjb3B5YmFjayA9IDE7CisgICAgICAgIGJyZWFr OworCiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0ID0gYXJjaF9kb19zeXNjdGwob3AsIHVfc3lz Y3RsKTsKICAgICAgICAgY29weWJhY2sgPSAwOwpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi94c3Bs aWNlLmMgYi94ZW4vY29tbW9uL3hzcGxpY2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi4wMDQ3MDMyCi0tLSAvZGV2L251bGwKKysrIGIveGVuL2NvbW1vbi94c3BsaWNlLmMK QEAgLTAsMCArMSw0MDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTYgT3JhY2xlIGFuZC9v ciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKi8KKworI2luY2x1 ZGUgPHhlbi9lcnIuaD4KKyNpbmNsdWRlIDx4ZW4vZ3Vlc3RfYWNjZXNzLmg+CisjaW5jbHVkZSA8 eGVuL2tleWhhbmRsZXIuaD4KKyNpbmNsdWRlIDx4ZW4vbGliLmg+CisjaW5jbHVkZSA8eGVuL2xp c3QuaD4KKyNpbmNsdWRlIDx4ZW4vbW0uaD4KKyNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KKyNpbmNs dWRlIDx4ZW4vc21wLmg+CisjaW5jbHVkZSA8eGVuL3NwaW5sb2NrLmg+CisjaW5jbHVkZSA8eGVu L3ZtYXAuaD4KKyNpbmNsdWRlIDx4ZW4veHNwbGljZS5oPgorCisjaW5jbHVkZSA8YXNtL2V2ZW50 Lmg+CisjaW5jbHVkZSA8cHVibGljL3N5c2N0bC5oPgorCitzdGF0aWMgREVGSU5FX1NQSU5MT0NL KHBheWxvYWRfbG9jayk7CitzdGF0aWMgTElTVF9IRUFEKHBheWxvYWRfbGlzdCk7CisKK3N0YXRp YyB1bnNpZ25lZCBpbnQgcGF5bG9hZF9jbnQ7CitzdGF0aWMgdW5zaWduZWQgaW50IHBheWxvYWRf dmVyc2lvbiA9IDE7CisKK3N0cnVjdCBwYXlsb2FkIHsKKyAgICB1aW50MzJfdCBzdGF0ZTsgICAg ICAgICAgICAgICAgICAgICAgLyogT25lIG9mIHRoZSBYU1BMSUNFX1NUQVRFXyouICovCisgICAg aW50MzJfdCByYzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDAgb3IgLVhFTl9FWFguICov CisgICAgc3RydWN0IGxpc3RfaGVhZCBsaXN0OyAgICAgICAgICAgICAgIC8qIExpbmtlZCB0byAn cGF5bG9hZF9saXN0Jy4gKi8KKyAgICBjaGFyIG5hbWVbWEVOX1hTUExJQ0VfTkFNRV9TSVpFXTsg ICAgLyogTmFtZSBvZiBpdC4gKi8KK307CisKK3N0YXRpYyBpbnQgdmVyaWZ5X25hbWUoY29uc3Qg eGVuX3hzcGxpY2VfbmFtZV90ICpuYW1lKQoreworICAgIGlmICggIW5hbWUtPnNpemUgfHwgbmFt ZS0+c2l6ZSA+IFhFTl9YU1BMSUNFX05BTUVfU0laRSApCisgICAgICAgIHJldHVybiAtRUlOVkFM OworCisgICAgaWYgKCBuYW1lLT5wYWRbMF0gfHwgbmFtZS0+cGFkWzFdIHx8IG5hbWUtPnBhZFsy XSApCisgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgaWYgKCAhZ3Vlc3RfaGFuZGxlX29r YXkobmFtZS0+bmFtZSwgbmFtZS0+c2l6ZSkgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKwor ICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IHZlcmlmeV9wYXlsb2FkKGNvbnN0IHhlbl9z eXNjdGxfeHNwbGljZV91cGxvYWRfdCAqdXBsb2FkKQoreworICAgIGlmICggdmVyaWZ5X25hbWUo JnVwbG9hZC0+bmFtZSkgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIGlmICggIXVw bG9hZC0+c2l6ZSApCisgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgaWYgKCB1cGxvYWQt PnNpemUgPiBNQigyKSApCisgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgaWYgKCAhZ3Vl c3RfaGFuZGxlX29rYXkodXBsb2FkLT5wYXlsb2FkLCB1cGxvYWQtPnNpemUpICkKKyAgICAgICAg cmV0dXJuIC1FRkFVTFQ7CisKKyAgICByZXR1cm4gMDsKK30KKworLyoKKyAqIFdlIG1heSBiZSBo b2xkaW5nIHRoZSBwYXlsb2FkX2xvY2sgb3Igbm90LiBIZW5jZSB3ZSBuZWVkCisgKiB0aGUgcmVj dXJzaXZlIHNwaW5sb2NrLiBPciB3ZSBjYW4ganVkaWNpb3VzbHkgdXNlIGFuCisgKiBsb2NrIGFy Z3VtZW50IHRvIGRpZmZlcmVuY2lhdGUgLSBidXQgaXQgaXMgc2ltcGxlciB3aXRoIHJlY3Vyc2l2 ZSBsb2Nrcy4KKyAqLworc3RhdGljIHN0cnVjdCBwYXlsb2FkICpmaW5kX3BheWxvYWQoY29uc3Qg eGVuX3hzcGxpY2VfbmFtZV90ICpuYW1lKQoreworICAgIHN0cnVjdCBwYXlsb2FkICpkYXRhLCAq Zm91bmQgPSBOVUxMOworICAgIGNoYXIgbltYRU5fWFNQTElDRV9OQU1FX1NJWkVdOworICAgIGlu dCByYzsKKworICAgIHJjID0gdmVyaWZ5X25hbWUobmFtZSk7CisgICAgaWYgKCByYyApCisgICAg ICAgIHJldHVybiBFUlJfUFRSKHJjKTsKKworICAgIGlmICggX19jb3B5X2Zyb21fZ3Vlc3Qobiwg bmFtZS0+bmFtZSwgbmFtZS0+c2l6ZSkgKQorICAgICAgICByZXR1cm4gRVJSX1BUUigtRUZBVUxU KTsKKworICAgIGlmICggbltuYW1lLT5zaXplIC0gMV0gKQorICAgICAgICByZXR1cm4gRVJSX1BU UigtRUlOVkFMKTsKKworICAgIHNwaW5fbG9ja19yZWN1cnNpdmUoJnBheWxvYWRfbG9jayk7CisK KyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggZGF0YSwgJnBheWxvYWRfbGlzdCwgbGlzdCApCisg ICAgeworICAgICAgICBpZiAoICFzdHJjbXAoZGF0YS0+bmFtZSwgbikgKQorICAgICAgICB7Cisg ICAgICAgICAgICBmb3VuZCA9IGRhdGE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor ICAgIH0KKworICAgIHNwaW5fdW5sb2NrX3JlY3Vyc2l2ZSgmcGF5bG9hZF9sb2NrKTsKKworICAg IHJldHVybiBmb3VuZDsKK30KKworLyogV2UgTVVTVCBiZSBob2xkaW5nIHRoZSBwYXlsb2FkX2xv Y2sgc3BpbmxvY2suICovCitzdGF0aWMgdm9pZCBmcmVlX3BheWxvYWQoc3RydWN0IHBheWxvYWQg KmRhdGEpCit7CisgICAgQVNTRVJUKHNwaW5faXNfbG9ja2VkKCZwYXlsb2FkX2xvY2spKTsKKyAg ICBsaXN0X2RlbCgmZGF0YS0+bGlzdCk7CisgICAgcGF5bG9hZF9jbnQtLTsKKyAgICBwYXlsb2Fk X3ZlcnNpb24rKzsKKyAgICB4ZnJlZShkYXRhKTsKK30KKworc3RhdGljIGludCB4c3BsaWNlX3Vw bG9hZCh4ZW5fc3lzY3RsX3hzcGxpY2VfdXBsb2FkX3QgKnVwbG9hZCkKK3sKKyAgICBzdHJ1Y3Qg cGF5bG9hZCAqZGF0YTsKKyAgICBpbnQgcmM7CisKKyAgICByYyA9IHZlcmlmeV9wYXlsb2FkKHVw bG9hZCk7CisgICAgaWYgKCByYyApCisgICAgICAgIHJldHVybiByYzsKKworICAgIGRhdGEgPSBm aW5kX3BheWxvYWQoJnVwbG9hZC0+bmFtZSk7CisgICAgaWYgKCBkYXRhICYmICFJU19FUlIoZGF0 YSkgLyogRm91bmQuICovICkKKyAgICAgICAgcmV0dXJuIC1FRVhJU1Q7CisKKyAgICBpZiAoIElT X0VSUihkYXRhKSApCisgICAgICAgIHJldHVybiBQVFJfRVJSKGRhdGEpOworCisgICAgZGF0YSA9 IHh6YWxsb2Moc3RydWN0IHBheWxvYWQpOworICAgIGlmICggIWRhdGEgKQorICAgICAgICByZXR1 cm4gLUVOT01FTTsKKworICAgIHJjID0gLUVGQVVMVDsKKyAgICBpZiAoIF9fY29weV9mcm9tX2d1 ZXN0KGRhdGEtPm5hbWUsIHVwbG9hZC0+bmFtZS5uYW1lLCB1cGxvYWQtPm5hbWUuc2l6ZSkgKQor ICAgICAgICBnb3RvIG91dDsKKworICAgIHJjID0gLUVJTlZBTDsKKyAgICBpZiAoIGRhdGEtPm5h bWVbdXBsb2FkLT5uYW1lLnNpemUgLSAxXSApCisgICAgICAgIGdvdG8gb3V0OworCisgICAgcmMg PSAwOworICAgIGRhdGEtPnN0YXRlID0gWFNQTElDRV9TVEFURV9DSEVDS0VEOworICAgIElOSVRf TElTVF9IRUFEKCZkYXRhLT5saXN0KTsKKworICAgIHNwaW5fbG9ja19yZWN1cnNpdmUoJnBheWxv YWRfbG9jayk7CisgICAgbGlzdF9hZGRfdGFpbCgmZGF0YS0+bGlzdCwgJnBheWxvYWRfbGlzdCk7 CisgICAgcGF5bG9hZF9jbnQrKzsKKyAgICBwYXlsb2FkX3ZlcnNpb24rKzsKKyAgICBzcGluX3Vu bG9ja19yZWN1cnNpdmUoJnBheWxvYWRfbG9jayk7CisKKyBvdXQ6CisgICAgaWYgKCByYyApCisg ICAgICAgIHhmcmVlKGRhdGEpOworCisgICAgcmV0dXJuIHJjOworfQorCitzdGF0aWMgaW50IHhz cGxpY2VfZ2V0KHhlbl9zeXNjdGxfeHNwbGljZV9nZXRfdCAqZ2V0KQoreworICAgIHN0cnVjdCBw YXlsb2FkICpkYXRhOworICAgIGludCByYzsKKworICAgIHJjID0gdmVyaWZ5X25hbWUoJmdldC0+ bmFtZSk7CisgICAgaWYgKCByYyApCisgICAgICAgIHJldHVybiByYzsKKworICAgIHNwaW5fbG9j a19yZWN1cnNpdmUoJnBheWxvYWRfbG9jayk7CisKKyAgICBkYXRhID0gZmluZF9wYXlsb2FkKCZn ZXQtPm5hbWUpOworICAgIGlmICggSVNfRVJSX09SX05VTEwoZGF0YSkgKQorICAgIHsKKyAgICAg ICAgc3Bpbl91bmxvY2tfcmVjdXJzaXZlKCZwYXlsb2FkX2xvY2spOworICAgICAgICBpZiAoICFk YXRhICkKKyAgICAgICAgICAgIHJldHVybiAtRU5PRU5UOworCisgICAgICAgIHJldHVybiBQVFJf RVJSKGRhdGEpOworICAgIH0KKworICAgIGdldC0+c3RhdHVzLnN0YXRlID0gZGF0YS0+c3RhdGU7 CisgICAgZ2V0LT5zdGF0dXMucmMgPSBkYXRhLT5yYzsKKworICAgIHNwaW5fdW5sb2NrX3JlY3Vy c2l2ZSgmcGF5bG9hZF9sb2NrKTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IHhz cGxpY2VfbGlzdCh4ZW5fc3lzY3RsX3hzcGxpY2VfbGlzdF90ICpsaXN0KQoreworICAgIHhlbl94 c3BsaWNlX3N0YXR1c190IHN0YXR1czsKKyAgICBzdHJ1Y3QgcGF5bG9hZCAqZGF0YTsKKyAgICB1 bnNpZ25lZCBpbnQgaWR4ID0gMCwgaSA9IDA7CisgICAgaW50IHJjID0gMDsKKworICAgIGlmICgg bGlzdC0+bnIgPiAxMDI0ICkKKyAgICAgICAgcmV0dXJuIC1FMkJJRzsKKworICAgIGlmICggbGlz dC0+cGFkICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICBpZiAoIGxpc3QtPm5yICYm CisgICAgICAgICAoIWd1ZXN0X2hhbmRsZV9va2F5KGxpc3QtPnN0YXR1cywgbGlzdC0+bnIpIHx8 CisgICAgICAgICAgIWd1ZXN0X2hhbmRsZV9va2F5KGxpc3QtPm5hbWUsIFhFTl9YU1BMSUNFX05B TUVfU0laRSAqIGxpc3QtPm5yKSB8fAorICAgICAgICAgICFndWVzdF9oYW5kbGVfb2theShsaXN0 LT5sZW4sIGxpc3QtPm5yKSkgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIHNwaW5f bG9ja19yZWN1cnNpdmUoJnBheWxvYWRfbG9jayk7CisgICAgaWYgKCBsaXN0LT5pZHggPiBwYXls b2FkX2NudCApCisgICAgeworICAgICAgICBzcGluX3VubG9ja19yZWN1cnNpdmUoJnBheWxvYWRf bG9jayk7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKworICAgIGlmICggbGlzdC0+ bnIgKQorICAgIHsKKyAgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeSggZGF0YSwgJnBheWxvYWRf bGlzdCwgbGlzdCApCisgICAgICAgIHsKKyAgICAgICAgICAgIHVpbnQzMl90IGxlbjsKKworICAg ICAgICAgICAgaWYgKCBsaXN0LT5pZHggPiBpKysgKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl OworCisgICAgICAgICAgICBzdGF0dXMuc3RhdGUgPSBkYXRhLT5zdGF0ZTsKKyAgICAgICAgICAg IHN0YXR1cy5yYyA9IGRhdGEtPnJjOworICAgICAgICAgICAgbGVuID0gc3RybGVuKGRhdGEtPm5h bWUpICsgMTsKKworICAgICAgICAgICAgLyogTi5CLiAnaWR4JyAhPSAnaScuICovCisgICAgICAg ICAgICBpZiAoIF9fY29weV90b19ndWVzdF9vZmZzZXQobGlzdC0+bmFtZSwgaWR4ICogWEVOX1hT UExJQ0VfTkFNRV9TSVpFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRhdGEtPm5hbWUsIGxlbikgfHwKKyAgICAgICAgICAgICAgICBfX2NvcHlfdG9fZ3Vlc3Rfb2Zm c2V0KGxpc3QtPmxlbiwgaWR4LCAmbGVuLCAxKSB8fAorICAgICAgICAgICAgICAgIF9fY29weV90 b19ndWVzdF9vZmZzZXQobGlzdC0+c3RhdHVzLCBpZHgsICZzdGF0dXMsIDEpICkKKyAgICAgICAg ICAgIHsKKyAgICAgICAgICAgICAgICByYyA9IC1FRkFVTFQ7CisgICAgICAgICAgICAgICAgYnJl YWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlkeCsrOworCisgICAgICAgICAgICBp ZiAoIChpZHggPj0gbGlzdC0+bnIpIHx8IGh5cGVyY2FsbF9wcmVlbXB0X2NoZWNrKCkgKQorICAg ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGxpc3QtPm5yID0gcGF5 bG9hZF9jbnQgLSBpOyAvKiBSZW1haW5pbmcgYW1vdW50LiAqLworICAgIGxpc3QtPnZlcnNpb24g PSBwYXlsb2FkX3ZlcnNpb247CisgICAgc3Bpbl91bmxvY2tfcmVjdXJzaXZlKCZwYXlsb2FkX2xv Y2spOworCisgICAgLyogQW5kIGhvdyBtYW55IHdlIGhhdmUgcHJvY2Vzc2VkLiAqLworICAgIHJl dHVybiByYyA/IDogaWR4OworfQorCitzdGF0aWMgaW50IHhzcGxpY2VfYWN0aW9uKHhlbl9zeXNj dGxfeHNwbGljZV9hY3Rpb25fdCAqYWN0aW9uKQoreworICAgIHN0cnVjdCBwYXlsb2FkICpkYXRh OworICAgIGludCByYzsKKworICAgIHJjID0gdmVyaWZ5X25hbWUoJmFjdGlvbi0+bmFtZSk7Cisg ICAgaWYgKCByYyApCisgICAgICAgIHJldHVybiByYzsKKworICAgIHNwaW5fbG9ja19yZWN1cnNp dmUoJnBheWxvYWRfbG9jayk7CisgICAgZGF0YSA9IGZpbmRfcGF5bG9hZCgmYWN0aW9uLT5uYW1l KTsKKyAgICBpZiAoIElTX0VSUl9PUl9OVUxMKGRhdGEpICkKKyAgICB7CisgICAgICAgIHNwaW5f dW5sb2NrX3JlY3Vyc2l2ZSgmcGF5bG9hZF9sb2NrKTsKKyAgICAgICAgaWYgKCAhZGF0YSApCisg ICAgICAgICAgICByZXR1cm4gLUVOT0VOVDsKKworICAgICAgICByZXR1cm4gUFRSX0VSUihkYXRh KTsKKyAgICB9CisKKyAgICBzd2l0Y2ggKCBhY3Rpb24tPmNtZCApCisgICAgeworICAgIGNhc2Ug WFNQTElDRV9BQ1RJT05fQ0hFQ0s6CisgICAgICAgIGlmICggZGF0YS0+c3RhdGUgPT0gWFNQTElD RV9TVEFURV9DSEVDS0VEICkKKyAgICAgICAgeworICAgICAgICAgICAgLyogTm8gaW1wbGVtZW50 YXRpb24geWV0LiAqLworICAgICAgICAgICAgZGF0YS0+c3RhdGUgPSBYU1BMSUNFX1NUQVRFX0NI RUNLRUQ7CisgICAgICAgICAgICBkYXRhLT5yYyA9IDA7CisgICAgICAgIH0KKyAgICAgICAgYnJl YWs7CisKKyAgICBjYXNlIFhTUExJQ0VfQUNUSU9OX1VOTE9BRDoKKyAgICAgICAgaWYgKCBkYXRh LT5zdGF0ZSA9PSBYU1BMSUNFX1NUQVRFX0NIRUNLRUQgKQorICAgICAgICB7CisgICAgICAgICAg ICBmcmVlX3BheWxvYWQoZGF0YSk7CisgICAgICAgICAgICAvKiBObyB0b3VjaGluZyAnZGF0YScg ZnJvbSBoZXJlIG9uISAqLworICAgICAgICAgICAgZGF0YSA9IE5VTEw7CisgICAgICAgIH0KKyAg ICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFhTUExJQ0VfQUNUSU9OX1JFVkVSVDoKKyAgICAgICAg aWYgKCBkYXRhLT5zdGF0ZSA9PSBYU1BMSUNFX1NUQVRFX0FQUExJRUQgKQorICAgICAgICB7Cisg ICAgICAgICAgICAvKiBObyBpbXBsZW1lbnRhdGlvbiB5ZXQuICovCisgICAgICAgICAgICBkYXRh LT5zdGF0ZSA9IFhTUExJQ0VfU1RBVEVfQ0hFQ0tFRDsKKyAgICAgICAgICAgIGRhdGEtPnJjID0g MDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGNhc2UgWFNQTElDRV9BQ1RJT05f QVBQTFk6CisgICAgICAgIGlmICggZGF0YS0+c3RhdGUgPT0gWFNQTElDRV9TVEFURV9DSEVDS0VE ICkKKyAgICAgICAgeworICAgICAgICAgICAgLyogTm8gaW1wbGVtZW50YXRpb24geWV0LiAqLwor ICAgICAgICAgICAgZGF0YS0+c3RhdGUgPSBYU1BMSUNFX1NUQVRFX0FQUExJRUQ7CisgICAgICAg ICAgICBkYXRhLT5yYyA9IDA7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNl IFhTUExJQ0VfQUNUSU9OX1JFUExBQ0U6CisgICAgICAgIGlmICggZGF0YS0+c3RhdGUgPT0gWFNQ TElDRV9TVEFURV9DSEVDS0VEICkKKyAgICAgICAgeworICAgICAgICAgICAgLyogTm8gaW1wbGVt ZW50YXRpb24geWV0LiAqLworICAgICAgICAgICAgZGF0YS0+c3RhdGUgPSBYU1BMSUNFX1NUQVRF X0NIRUNLRUQ7CisgICAgICAgICAgICBkYXRhLT5yYyA9IDA7CisgICAgICAgIH0KKyAgICAgICAg YnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICByYyA9IC1FT1BOT1RTVVBQOworICAgICAg ICBicmVhazsKKyAgICB9CisKKyAgICBzcGluX3VubG9ja19yZWN1cnNpdmUoJnBheWxvYWRfbG9j ayk7CisKKyAgICByZXR1cm4gcmM7Cit9CisKK2ludCB4c3BsaWNlX29wKHhlbl9zeXNjdGxfeHNw bGljZV9vcF90ICp4c3BsaWNlKQoreworICAgIGludCByYzsKKworICAgIGlmICggeHNwbGljZS0+ cGFkICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICBzd2l0Y2ggKCB4c3BsaWNlLT5j bWQgKQorICAgIHsKKyAgICBjYXNlIFhFTl9TWVNDVExfWFNQTElDRV9VUExPQUQ6CisgICAgICAg IHJjID0geHNwbGljZV91cGxvYWQoJnhzcGxpY2UtPnUudXBsb2FkKTsKKyAgICAgICAgYnJlYWs7 CisKKyAgICBjYXNlIFhFTl9TWVNDVExfWFNQTElDRV9HRVQ6CisgICAgICAgIHJjID0geHNwbGlj ZV9nZXQoJnhzcGxpY2UtPnUuZ2V0KTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFhFTl9T WVNDVExfWFNQTElDRV9MSVNUOgorICAgICAgICByYyA9IHhzcGxpY2VfbGlzdCgmeHNwbGljZS0+ dS5saXN0KTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFhFTl9TWVNDVExfWFNQTElDRV9B Q1RJT046CisgICAgICAgIHJjID0geHNwbGljZV9hY3Rpb24oJnhzcGxpY2UtPnUuYWN0aW9uKTsK KyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICByYyA9IC1FT1BOT1RTVVBQ OworICAgICAgICBicmVhazsKKyAgIH0KKworICAgIHJldHVybiByYzsKK30KKworc3RhdGljIGNv bnN0IGNoYXIgKnN0YXRlMnN0cih1aW50MzJfdCBzdGF0ZSkKK3sKKyNkZWZpbmUgU1RBVEUoeCkg W1hTUExJQ0VfU1RBVEVfIyN4XSA9ICN4CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IG5h bWVzW10gPSB7CisgICAgICAgICAgICBTVEFURShDSEVDS0VEKSwKKyAgICAgICAgICAgIFNUQVRF KEFQUExJRUQpLAorICAgIH07CisjdW5kZWYgU1RBVEUKKworICAgIGlmIChzdGF0ZSA+PSBBUlJB WV9TSVpFKG5hbWVzKSB8fCAhbmFtZXNbc3RhdGVdKQorICAgICAgICByZXR1cm4gInVua25vd24i OworCisgICAgcmV0dXJuIG5hbWVzW3N0YXRlXTsKK30KKworc3RhdGljIHZvaWQgeHNwbGljZV9w cmludGFsbCh1bnNpZ25lZCBjaGFyIGtleSkKK3sKKyAgICBzdHJ1Y3QgcGF5bG9hZCAqZGF0YTsK KworICAgIGlmICggIXNwaW5fdHJ5bG9ja19yZWN1cnNpdmUoJnBheWxvYWRfbG9jaykgKQorICAg IHsKKyAgICAgICAgcHJpbnRrKCJMb2NrIGhlbGQuIFRyeSBhZ2Fpbi5cbiIpOworICAgICAgICBy ZXR1cm47CisgICAgfQorCisgICAgbGlzdF9mb3JfZWFjaF9lbnRyeSAoIGRhdGEsICZwYXlsb2Fk X2xpc3QsIGxpc3QgKQorICAgICAgICBwcmludGsoIiBuYW1lPSVzIHN0YXRlPSVzKCVkKVxuIiwg ZGF0YS0+bmFtZSwKKyAgICAgICAgICAgICAgIHN0YXRlMnN0cihkYXRhLT5zdGF0ZSksIGRhdGEt PnN0YXRlKTsKKworICAgIHNwaW5fdW5sb2NrX3JlY3Vyc2l2ZSgmcGF5bG9hZF9sb2NrKTsKK30K Kworc3RhdGljIGludCBfX2luaXQgeHNwbGljZV9pbml0KHZvaWQpCit7CisgICAgcmVnaXN0ZXJf a2V5aGFuZGxlcigneCcsIHhzcGxpY2VfcHJpbnRhbGwsICJwcmludCB4c3BsaWNpbmcgaW5mbyIs IDEpOworICAgIHJldHVybiAwOworfQorX19pbml0Y2FsbCh4c3BsaWNlX2luaXQpOworCisvKgor ICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgor ICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9k ZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9zeXNj dGwuaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaAppbmRleCA5NjY4MGViLi4yNjk2MTJl IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3RsLmgKKysrIGIveGVuL2luY2x1 ZGUvcHVibGljL3N5c2N0bC5oCkBAIC03NjYsNiArNzY2LDE3MSBAQCBzdHJ1Y3QgeGVuX3N5c2N0 bF90bWVtX29wIHsKIHR5cGVkZWYgc3RydWN0IHhlbl9zeXNjdGxfdG1lbV9vcCB4ZW5fc3lzY3Rs X3RtZW1fb3BfdDsKIERFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9zeXNjdGxfdG1lbV9vcF90 KTsKIAorLyoKKyAqIFhFTl9TWVNDVExfWFNQTElDRV9vcAorICoKKyAqIFJlZmVyIHRvIHRoZSBk b2NzL3Vuc3RhYmxlL21pc2MveHNwbGljZS5tYXJrZG93bgorICogZm9yIHRoZSBkZXNpZ24gZGV0 YWlscyBvZiB0aGlzIGh5cGVyY2FsbC4KKyAqCisgKiBUaGVyZSBhcmUgZm91ciBzdWItb3BzOgor ICogIFhFTl9TWVNDVExfWFNQTElDRV9VUExPQUQgKDApCisgKiAgWEVOX1NZU0NUTF9YU1BMSUNF X0dFVCAoMSkKKyAqICBYRU5fU1lTQ1RMX1hTUExJQ0VfTElTVCAoMikKKyAqICBYRU5fU1lTQ1RM X1hTUExJQ0VfQUNUSU9OICgzKQorICoKKyAqIFRoZSBub3JtYWwgc2VxdWVuY2Ugb2Ygc3ViLW9w cyBpcyB0bzoKKyAqICAxKSBYRU5fU1lTQ1RMX1hTUExJQ0VfVVBMT0FEIHRvIHVwbG9hZCB0aGUg cGF5bG9hZC4gSWYgZXJyb3JzIFNUT1AuCisgKiAgMikgWEVOX1NZU0NUTF9YU1BMSUNFX0dFVCB0 byBjaGVjayB0aGUgYC0+cmNgLiBJZiAtWEVOX0VBR0FJTiBzcGluLgorICogICAgIElmIHplcm8g Z28gdG8gbmV4dCBzdGVwLgorICogIDMpIFhFTl9TWVNDVExfWFNQTElDRV9BQ1RJT04gd2l0aCBY U1BMSUNFX0FDVElPTl9BUFBMWSB0byBhcHBseSB0aGUgcGF0Y2guCisgKiAgNCkgWEVOX1NZU0NU TF9YU1BMSUNFX0dFVCB0byBjaGVjayB0aGUgYC0+cmNgLiBJZiBpbiAtWEVOX0VBR0FJTiBzcGlu LgorICogICAgIElmIHplcm8gZXhpdCB3aXRoIHN1Y2Nlc3MuCisgKi8KKworLyoKKyAqIFN0cnVj dHVyZSBkZXNjcmliaW5nIGFuIEVMRiBwYXlsb2FkLiBVbmlxdWVseSBpZGVudGlmaWVzIHRoZQor ICogcGF5bG9hZC4gU2hvdWxkIGJlIGh1bWFuIHJlYWRhYmxlLgorICogUmVjb21tZW5kZWQgbGVu Z3RoIGlzIHVwdG8gWEVOX1hTUExJQ0VfTkFNRV9TSVpFLgorICogSW5jbHVkZXMgdGhlIE5VTCB0 ZXJtaW5hdG9yLgorICovCisjZGVmaW5lIFhFTl9YU1BMSUNFX05BTUVfU0laRSAxMjgKK3N0cnVj dCB4ZW5feHNwbGljZV9uYW1lIHsKKyAgICBYRU5fR1VFU1RfSEFORExFXzY0KGNoYXIpIG5hbWU7 ICAgICAgICAgLyogSU46IHBvaW50ZXIgdG8gbmFtZS4gKi8KKyAgICB1aW50MTZfdCBzaXplOyAg ICAgICAgICAgICAgICAgICAgICAgICAgLyogSU46IHNpemUgb2YgbmFtZS4gTWF5IGJlIHVwdG8K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWEVOX1hTUExJ Q0VfTkFNRV9TSVpFLiAqLworICAgIHVpbnQxNl90IHBhZFszXTsgICAgICAgICAgICAgICAgICAg ICAgICAvKiBJTjogTVVTVCBiZSB6ZXJvLiAqLworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl94c3Bs aWNlX25hbWUgeGVuX3hzcGxpY2VfbmFtZV90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVu X3hzcGxpY2VfbmFtZV90KTsKKworLyoKKyAqIFVwbG9hZCBhIHBheWxvYWQgdG8gdGhlIGh5cGVy dmlzb3IuIFRoZSBwYXlsb2FkIGlzIHZlcmlmaWVkCisgKiBhZ2FpbnN0IGJhc2ljIGNoZWNrcyBh bmQgaWYgdGhlcmUgYXJlIGFueSBpc3N1ZXMgdGhlIHByb3BlciByZXR1cm4gY29kZQorICogd2ls bCBiZSByZXR1cm5lZC4gVGhlIHBheWxvYWQgaXMgbm90IGFwcGxpZWQgYXQgdGhpcyB0aW1lIC0g dGhhdCBpcworICogY29udHJvbGxlZCBieSBYRU5fU1lTQ1RMX1hTUExJQ0VfQUNUSU9OLgorICoK KyAqIFRoZSByZXR1cm4gdmFsdWUgaXMgemVybyBpZiB0aGUgcGF5bG9hZCB3YXMgc3VjY2VzZnVs bHkgdXBsb2FkZWQuCisgKiBPdGhlcndpc2UgYW4gRVhYIHJldHVybiB2YWx1ZSBpcyBwcm92aWRl ZC4gRHVwbGljYXRlIGBuYW1lYCBhcmUgbm90CisgKiBzdXBwb3J0ZWQuCisgKgorICogVGhlIHBh eWxvYWQgYXQgdGhpcyBwb2ludCBpcyB2ZXJpZmllZCBhZ2FpbnN0IGJhc2ljIGNoZWNrcy4KKyAq CisgKiBUaGUgYHBheWxvYWRgIGlzIHRoZSBFTEYgcGF5bG9hZCBhcyBtZW50aW9uZWQgaW4gdGhl IGBQYXlsb2FkIGZvcm1hdGAKKyAqIHNlY3Rpb24gaW4gdGhlIHhTcGxpY2UgZGVzaWduIGRvY3Vt ZW50LgorICovCisjZGVmaW5lIFhFTl9TWVNDVExfWFNQTElDRV9VUExPQUQgMAorc3RydWN0IHhl bl9zeXNjdGxfeHNwbGljZV91cGxvYWQgeworICAgIHhlbl94c3BsaWNlX25hbWVfdCBuYW1lOyAg ICAgICAgICAgICAgICAvKiBJTiwgbmFtZSBvZiB0aGUgcGF0Y2guICovCisgICAgdWludDY0X3Qg c2l6ZTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElOLCBzaXplIG9mIHRoZSBFTEYgZmls ZS4gKi8KKyAgICBYRU5fR1VFU1RfSEFORExFXzY0KHVpbnQ4KSBwYXlsb2FkOyAgICAgLyogSU4s IHRoZSBFTEYgZmlsZS4gKi8KK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2Vf dXBsb2FkIHhlbl9zeXNjdGxfeHNwbGljZV91cGxvYWRfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFO RExFKHhlbl9zeXNjdGxfeHNwbGljZV91cGxvYWRfdCk7CisKKy8qCisgKiBSZXRyaWV2ZSBhbiBz dGF0dXMgb2YgYW4gc3BlY2lmaWMgcGF5bG9hZC4KKyAqCisgKiBVcG9uIGNvbXBsZXRpb24gdGhl IGBzdHJ1Y3QgeGVuX3hzcGxpY2Vfc3RhdHVzYCBpcyB1cGRhdGVkLgorICoKKyAqIFRoZSByZXR1 cm4gdmFsdWUgaXMgemVybyBvbiBzdWNjZXNzIGFuZCBYRU5fRVhYIG9uIGZhaWx1cmUuIFRoaXMg b3BlcmF0aW9uCisgKiBpcyBzeW5jaHJvbm91cyBhbmQgZG9lcyBub3QgcmVxdWlyZSBwcmVlbXB0 aW9uLgorICovCisjZGVmaW5lIFhFTl9TWVNDVExfWFNQTElDRV9HRVQgMQorCitzdHJ1Y3QgeGVu X3hzcGxpY2Vfc3RhdHVzIHsKKyNkZWZpbmUgWFNQTElDRV9TVEFURV9DSEVDS0VEICAgICAgMQor I2RlZmluZSBYU1BMSUNFX1NUQVRFX0FQUExJRUQgICAgICAyCisgICAgdWludDMyX3Qgc3RhdGU7 ICAgICAgICAgICAgICAgIC8qIE9VVDogWFNQTElDRV9TVEFURV8qLiAqLworICAgIGludDMyX3Qg cmM7ICAgICAgICAgICAgICAgICAgICAvKiBPVVQ6IDAgaWYgbm8gZXJyb3IsIG90aGVyd2lzZSAt WEVOX0VYWC4gKi8KK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5feHNwbGljZV9zdGF0dXMgeGVuX3hz cGxpY2Vfc3RhdHVzX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5feHNwbGljZV9zdGF0 dXNfdCk7CisKK3N0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2VfZ2V0IHsKKyAgICB4ZW5feHNwbGlj ZV9uYW1lX3QgbmFtZTsgICAgICAgICAgICAgICAgLyogSU4sIG5hbWUgb2YgdGhlIHBheWxvYWQu ICovCisgICAgeGVuX3hzcGxpY2Vfc3RhdHVzX3Qgc3RhdHVzOyAgICAgICAgICAgIC8qIElOL09V VCwgc3RhdGUgb2YgaXQuICovCit9OwordHlwZWRlZiBzdHJ1Y3QgeGVuX3N5c2N0bF94c3BsaWNl X2dldCB4ZW5fc3lzY3RsX3hzcGxpY2VfZ2V0X3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4 ZW5fc3lzY3RsX3hzcGxpY2VfZ2V0X3QpOworCisvKgorICogUmV0cmlldmUgYW4gYXJyYXkgb2Yg YWJicmV2aWF0ZWQgc3RhdHVzIGFuZCBuYW1lcyBvZiBwYXlsb2FkcyB0aGF0IGFyZQorICogbG9h ZGVkIGluIHRoZSBoeXBlcnZpc29yLgorICoKKyAqIElmIHRoZSBoeXBlcmNhbGwgcmV0dXJucyBh biBwb3NpdGl2ZSBudW1iZXIsIGl0IGlzIHRoZSBudW1iZXIgKHVwIHRvIGBucmApCisgKiBvZiB0 aGUgcGF5bG9hZHMgcmV0dXJuZWQsIGFsb25nIHdpdGggYG5yYCB1cGRhdGVkIHdpdGggdGhlIG51 bWJlciBvZiByZW1haW5pbmcKKyAqIHBheWxvYWRzLCBgdmVyc2lvbmAgdXBkYXRlZCAoaXQgbWF5 IGJlIHRoZSBzYW1lIGFjcm9zcyBoeXBlcmNhbGxzLiBJZiBpdAorICogdmFyaWVzIHRoZSBkYXRh IGlzIHN0YWxlIGFuZCBmdXJ0aGVyIGNhbGxzIGNvdWxkIGZhaWwpLiBUaGUgYHN0YXR1c2AsCisg KiBgbmFtZWAsIGFuZCBgbGVuYCcgYXJlIHVwZGF0ZWQgYXQgdGhlaXIgZGVzaWduZWQgaW5kZXgg dmFsdWUgKGBpZHhgKSB3aXRoCisgKiB0aGUgcmV0dXJuZWQgdmFsdWUgb2YgZGF0YS4KKyAqCisg KiBJZiB0aGUgaHlwZXJjYWxsIHJldHVybnMgRTJCSUcgdGhlIGBucmAgaXMgdG9vIGJpZyBhbmQg c2hvdWxkIGJlCisgKiBsb3dlcmVkLiBUaGUgdXBwZXIgbGltaXQgb2YgYG5yYCBpcyBsZWZ0IHRv IHRoZSBpbXBsZW1lbnRpb24uCisgKgorICogTm90ZSB0aGF0IGR1ZSB0byB0aGUgYXN5bmNocm9u b3VzIG5hdHVyZSBvZiBoeXBlcmNhbGxzIHRoZSBkb21haW4gbWlnaHQgaGF2ZQorICogYWRkZWQg b3IgcmVtb3ZlZCB0aGUgbnVtYmVyIG9mIHBheWxvYWRzIG1ha2luZyB0aGlzIGluZm9ybWF0aW9u IHN0YWxlLiBJdCBpcworICogdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSB0b29sc3RhY2sgdG8g dXNlIHRoZSBgdmVyc2lvbmAgZmllbGQgdG8gY2hlY2sKKyAqIGJldHdlZW4gZWFjaCBpbnZvY2F0 aW9uLiBpZiB0aGUgdmVyc2lvbiBkaWZmZXJzIGl0IHNob3VsZCBkaXNjYXJkIHRoZSBzdGFsZQor ICogZGF0YSBhbmQgc3RhcnQgZnJvbSBzY3JhdGNoLiBJdCBpcyBPSyBmb3IgdGhlIHRvb2xzdGFj ayB0byB1c2UgdGhlIG5ldworICogYHZlcnNpb25gIGZpZWxkLgorICovCisjZGVmaW5lIFhFTl9T WVNDVExfWFNQTElDRV9MSVNUIDIKK3N0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2VfbGlzdCB7Cisg ICAgdWludDMyX3QgdmVyc2lvbjsgICAgICAgICAgICAgICAgICAgICAgIC8qIE9VVDogSHlwZXJ2 aXNvciBzdGFtcHMgdmFsdWUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIElmIHZhcmllcyBiZXR3ZWVuIGNhbGxzLCB3ZSBhcmUKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogZ2V0dGluZyBzdGFsZSBkYXRhLiAqLwor ICAgIHVpbnQzMl90IGlkeDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTjogSW5kZXgg aW50byBoeXBlcnZpc29yIGFycmF5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBTaG91bGQgYmUgYmV0d2VlbiBbMCwgbnIpLiAqLworICAgIHVpbnQzMl90 IG5yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTjogSG93IG1hbnkgc3RhdHVzLCBu YW1lLCBhbmQgbGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNob3VsZCBmaWxsIG91dC4gQ2FuIGJlIHplcm8gdG8gZ2V0CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudCBvZiBwYXlsb2FkcyBhbmQgdmVy c2lvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1VU OiBIb3cgbWFueSBwYXlsb2FkcyBsZWZ0LiAqLworICAgIHVpbnQzMl90IHBhZDsgICAgICAgICAg ICAgICAgICAgICAgICAgICAvKiBJTjogTXVzdCBiZSB6ZXJvLiAqLworICAgIFhFTl9HVUVTVF9I QU5ETEVfNjQoeGVuX3hzcGxpY2Vfc3RhdHVzX3QpIHN0YXR1czsgIC8qIE9VVC4gTXVzdCBoYXZl IGVub3VnaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz cGFjZSBhbGxvY2F0ZSBmb3IgbnIgb2YgdGhlbS4gKi8KKyAgICBYRU5fR1VFU1RfSEFORExFXzY0 KGNoYXIpIG5hbWU7ICAgICAgICAgLyogT1VUOiBBcnJheSBvZiBuYW1lcy4gRWFjaCBtZW1iZXIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVVTVCBYRU5f WFNQTElDRV9OQU1FX1NJWkUgaW4gc2l6ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTXVzdCBoYXZlIG5yIG9mIHRoZW0uICovCisgICAgWEVOX0dVRVNU X0hBTkRMRV82NCh1aW50MzIpIGxlbjsgICAgICAgIC8qIE9VVDogQXJyYXkgb2YgbGVuZ3RocyBv ZiBuYW1lJ3MuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE11c3QgaGF2ZSBuciBvZiB0aGVtLiAqLworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9zeXNjdGxf eHNwbGljZV9saXN0IHhlbl9zeXNjdGxfeHNwbGljZV9saXN0X3Q7CitERUZJTkVfWEVOX0dVRVNU X0hBTkRMRSh4ZW5fc3lzY3RsX3hzcGxpY2VfbGlzdF90KTsKKworLyoKKyAqIFBlcmZvcm0gYW4g b3BlcmF0aW9uIG9uIHRoZSBwYXlsb2FkIHN0cnVjdHVyZSByZWZlcmVuY2VkIGJ5IHRoZSBgbmFt ZWAgZmllbGQuCisgKiBUaGUgb3BlcmF0aW9uIHJlcXVlc3QgaXMgYXN5bmNocm9ub3VzIGFuZCB0 aGUgc3RhdHVzIHNob3VsZCBiZSByZXRyaWV2ZWQKKyAqIGJ5IHVzaW5nIGVpdGhlciBYRU5fU1lT Q1RMX1hTUExJQ0VfR0VUIG9yIFhFTl9TWVNDVExfWFNQTElDRV9MSVNUIGh5cGVyY2FsbC4KKyAq LworI2RlZmluZSBYRU5fU1lTQ1RMX1hTUExJQ0VfQUNUSU9OIDMKK3N0cnVjdCB4ZW5fc3lzY3Rs X3hzcGxpY2VfYWN0aW9uIHsKKyAgICB4ZW5feHNwbGljZV9uYW1lX3QgbmFtZTsgICAgICAgICAg ICAgICAgLyogSU4sIG5hbWUgb2YgdGhlIHBhdGNoLiAqLworI2RlZmluZSBYU1BMSUNFX0FDVElP Tl9DSEVDSyAgICAgICAgMQorI2RlZmluZSBYU1BMSUNFX0FDVElPTl9VTkxPQUQgICAgICAgMgor I2RlZmluZSBYU1BMSUNFX0FDVElPTl9SRVZFUlQgICAgICAgMworI2RlZmluZSBYU1BMSUNFX0FD VElPTl9BUFBMWSAgICAgICAgNAorI2RlZmluZSBYU1BMSUNFX0FDVElPTl9SRVBMQUNFICAgICAg NQorICAgIHVpbnQzMl90IGNtZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTjogWFNQ TElDRV9BQ1RJT05fKi4gKi8KKyAgICB1aW50MzJfdCB0aW1lb3V0OyAgICAgICAgICAgICAgICAg ICAgICAgLyogSU46IFplcm8gaWYgbm8gdGltZW91dC4gKi8KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLyogT3IgdXBwZXIgYm91bmQgb2YgdGltZSAobXMpICov CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZvciBvcGVy YXRpb24gdG8gdGFrZS4gKi8KK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2Vf YWN0aW9uIHhlbl9zeXNjdGxfeHNwbGljZV9hY3Rpb25fdDsKK0RFRklORV9YRU5fR1VFU1RfSEFO RExFKHhlbl9zeXNjdGxfeHNwbGljZV9hY3Rpb25fdCk7CisKK3N0cnVjdCB4ZW5fc3lzY3RsX3hz cGxpY2Vfb3AgeworICAgIHVpbnQzMl90IGNtZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAv KiBJTjogWEVOX1NZU0NUTF9YU1BMSUNFXyouICovCisgICAgdWludDMyX3QgcGFkOyAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8qIElOOiBBbHdheXMgemVyby4gKi8KKyAgICB1bmlvbiB7Cisg ICAgICAgIHhlbl9zeXNjdGxfeHNwbGljZV91cGxvYWRfdCB1cGxvYWQ7CisgICAgICAgIHhlbl9z eXNjdGxfeHNwbGljZV9saXN0X3QgbGlzdDsKKyAgICAgICAgeGVuX3N5c2N0bF94c3BsaWNlX2dl dF90IGdldDsKKyAgICAgICAgeGVuX3N5c2N0bF94c3BsaWNlX2FjdGlvbl90IGFjdGlvbjsKKyAg ICB9IHU7Cit9OwordHlwZWRlZiBzdHJ1Y3QgeGVuX3N5c2N0bF94c3BsaWNlX29wIHhlbl9zeXNj dGxfeHNwbGljZV9vcF90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX3N5c2N0bF94c3Bs aWNlX29wX3QpOworCiBzdHJ1Y3QgeGVuX3N5c2N0bCB7CiAgICAgdWludDMyX3QgY21kOwogI2Rl ZmluZSBYRU5fU1lTQ1RMX3JlYWRjb25zb2xlICAgICAgICAgICAgICAgICAgICAxCkBAIC03OTEs NiArOTU2LDcgQEAgc3RydWN0IHhlbl9zeXNjdGwgewogI2RlZmluZSBYRU5fU1lTQ1RMX3BjaXRv cG9pbmZvICAgICAgICAgICAgICAgICAgIDIyCiAjZGVmaW5lIFhFTl9TWVNDVExfcHNyX2NhdF9v cCAgICAgICAgICAgICAgICAgICAgMjMKICNkZWZpbmUgWEVOX1NZU0NUTF90bWVtX29wICAgICAg ICAgICAgICAgICAgICAgICAyNAorI2RlZmluZSBYRU5fU1lTQ1RMX3hzcGxpY2Vfb3AgICAgICAg ICAgICAgICAgICAgIDI1CiAgICAgdWludDMyX3QgaW50ZXJmYWNlX3ZlcnNpb247IC8qIFhFTl9T WVNDVExfSU5URVJGQUNFX1ZFUlNJT04gKi8KICAgICB1bmlvbiB7CiAgICAgICAgIHN0cnVjdCB4 ZW5fc3lzY3RsX3JlYWRjb25zb2xlICAgICAgIHJlYWRjb25zb2xlOwpAQCAtODE2LDYgKzk4Miw3 IEBAIHN0cnVjdCB4ZW5fc3lzY3RsIHsKICAgICAgICAgc3RydWN0IHhlbl9zeXNjdGxfcHNyX2Nt dF9vcCAgICAgICAgcHNyX2NtdF9vcDsKICAgICAgICAgc3RydWN0IHhlbl9zeXNjdGxfcHNyX2Nh dF9vcCAgICAgICAgcHNyX2NhdF9vcDsKICAgICAgICAgc3RydWN0IHhlbl9zeXNjdGxfdG1lbV9v cCAgICAgICAgICAgdG1lbV9vcDsKKyAgICAgICAgc3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV9v cCAgICAgICAgeHNwbGljZTsKICAgICAgICAgdWludDhfdCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGFkWzEyOF07CiAgICAgfSB1OwogfTsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hl bi94c3BsaWNlLmggYi94ZW4vaW5jbHVkZS94ZW4veHNwbGljZS5oCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjVjODQ4NTEKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4vaW5jbHVk ZS94ZW4veHNwbGljZS5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIw MTYgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq CisgKi8KKworI2lmbmRlZiBfX1hFTl9YU1BMSUNFX0hfXworI2RlZmluZSBfX1hFTl9YU1BMSUNF X0hfXworCitzdHJ1Y3QgeGVuX3N5c2N0bF94c3BsaWNlX29wOworCisjaWZkZWYgQ09ORklHX1hT UExJQ0UKKworaW50IHhzcGxpY2Vfb3Aoc3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV9vcCAqKTsK KworI2Vsc2UKKworI2luY2x1ZGUgPHhlbi9lcnJuby5oPiAvKiBGb3IgLUVPUE5PVFNVUFAgKi8K K3N0YXRpYyBpbmxpbmUgaW50IHhzcGxpY2Vfb3Aoc3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV9v cCAqb3ApCit7CisgICAgcmV0dXJuIC1FT1BOT1RTVVBQOworfQorCisjZW5kaWYgLyogQ09ORklH X1hTUExJQ0UgKi8KKworI2VuZGlmIC8qIF9fWEVOX1hTUExJQ0VfSF9fICovCisKKy8qCisgKiBM b2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBj LWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBu aWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEveGVuL3hzbS9mbGFzay9ob29rcy5jIGIveGVu L3hzbS9mbGFzay9ob29rcy5jCmluZGV4IDFlYWVjNTguLjNlZjA0NDEgMTAwNjQ0Ci0tLSBhL3hl bi94c20vZmxhc2svaG9va3MuYworKysgYi94ZW4veHNtL2ZsYXNrL2hvb2tzLmMKQEAgLTgwOCw2 ICs4MDgsMTIgQEAgc3RhdGljIGludCBmbGFza19zeXNjdGwoaW50IGNtZCkKICAgICBjYXNlIFhF Tl9TWVNDVExfdG1lbV9vcDoKICAgICAgICAgcmV0dXJuIGRvbWFpbl9oYXNfeGVuKGN1cnJlbnQt PmRvbWFpbiwgWEVOX19UTUVNX0NPTlRST0wpOwogCisjaWZkZWYgQ09ORklHX1hTUExJQ0UKKyAg ICBjYXNlIFhFTl9TWVNDVExfeHNwbGljZV9vcDoKKyAgICAgICAgcmV0dXJuIGF2Y19jdXJyZW50 X2hhc19wZXJtKFNFQ0lOSVRTSURfWEVOLCBTRUNDTEFTU19YRU4yLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgWEVOMl9fWFNQTElDRV9PUCwgTlVMTCk7CisjZW5kaWYKKwog ICAgIGRlZmF1bHQ6CiAgICAgICAgIHByaW50aygiZmxhc2tfc3lzY3RsOiBVbmtub3duIG9wICVk XG4iLCBjbWQpOwogICAgICAgICByZXR1cm4gLUVQRVJNOwpkaWZmIC0tZ2l0IGEveGVuL3hzbS9m bGFzay9wb2xpY3kvYWNjZXNzX3ZlY3RvcnMgYi94ZW4veHNtL2ZsYXNrL3BvbGljeS9hY2Nlc3Nf dmVjdG9ycwppbmRleCA1NjYwMGJiLi4xYzU5YjU4IDEwMDY0NAotLS0gYS94ZW4veHNtL2ZsYXNr L3BvbGljeS9hY2Nlc3NfdmVjdG9ycworKysgYi94ZW4veHNtL2ZsYXNrL3BvbGljeS9hY2Nlc3Nf dmVjdG9ycwpAQCAtOTMsNiArOTMsOCBAQCBjbGFzcyB4ZW4yCiAgICAgcG11X2N0cmwKICMgUE1V IHVzZSAoZG9tYWlucywgaW5jbHVkaW5nIHVucHJpdmlsZWdlZCBvbmVzLCB3aWxsIGJlIHVzaW5n IHRoaXMgb3BlcmF0aW9uKQogICAgIHBtdV91c2UKKyMgWEVOX1NZU0NUTF94c3BsaWNlX29wCisg ICAgeHNwbGljZV9vcAogfQogCiAjIENsYXNzZXMgZG9tYWluIGFuZCBkb21haW4yIGNvbnNpc3Qg b2Ygb3BlcmF0aW9ucyB0aGF0IGEgZG9tYWluIHBlcmZvcm1zIG9uCi0tIAoyLjUuMAoKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWls aW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVu LWRldmVsCg==