From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v10 02/24] xen/xsplice: Hypervisor implementation of XEN_XSPLICE_op Date: Wed, 27 Apr 2016 15:26:59 -0400 Message-ID: <1461785241-4481-3-git-send-email-konrad.wilk@oracle.com> References: <1461785241-4481-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.bemta6.messagelabs.com ([85.158.143.247]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1avVCy-0007dg-Kg for xen-devel@lists.xenproject.org; Wed, 27 Apr 2016 19:33:12 +0000 In-Reply-To: <1461785241-4481-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: konrad@kernel.org, xen-devel@lists.xenproject.org, sasha.levin@oracle.com, andrew.cooper3@citrix.com, ross.lagerwall@citrix.com, mpohlack@amazon.de 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 ICdsb2NrJyBhbmQgJ25vbi1sb2NrJyB2YXJpYW50LgoKU2lnbmVkLW9mZi1ieTogS29ucmFkIFJ6 ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBSb3Nz IExhZ2Vyd2FsbCA8cm9zcy5sYWdlcndhbGxAY2l0cml4LmNvbT4KUmV2aWV3ZWQtYnk6IEFuZHJl dyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkFja2VkLWJ5OiBEYW5pZWwgRGUg R3JhYWYgPGRnZGVncmFAdHljaG8ubnNhLmdvdj4KCi0tLQpDYzogRGFuaWVsIERlIEdyYWFmIDxk Z2RlZ3JhQHR5Y2hvLm5zYS5nb3Y+CkNjOiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0 cml4LmNvbT4KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4K Q2M6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+Cgp2MjogUmViYXNlZCBvbiBrZXloYW5k bGVyOiByZXdvcmsga2V5aGFuZGxlciBpbmZyYXN0cnVjdHVyZQp2MzogRml4ZWQgWFNNLgogLSBS ZW1vdmVkIFJFVkVSVEVEIHN0YXRlLgogICAgU3BsaXQgc3RhdHVzIGFuZCBlcnJvciBjb2RlLgog ICAgQWRkIFJFUExBQ0UgYWN0aW9uLgogICAgU2VwYXJhdGUgcGF5bG9hZCBkYXRhIGZyb20gdGhl IHBheWxvYWQgc3RydWN0dXJlLgogICAgcy9YU1BMSUNFX0lEXy4uL1hTUExJQ0VfTkFNRV8uLi8K IC0gQWRkIHhzcGxpY2UgYW5kIENPTkZJR19YU1BMSUNFIGJ1aWxkIHRvcHRpb24uCiAgICBGaXgg Y29kZSBwZXIgSmFuJ3MgcmV2aWV3LgogICAgVXBkYXRlIHRoZSBzeXNjdGwuaCAoY2hhbmdlIGJp dHMgdG8gZW51bSBsaWtlKQogLSBSZWJhc2Ugb24gS2NvbmZpZyBjaGFuZ2VzLgogLSBBZGQgbWlz c2luZyBwYWQgY2hlY2tzLiBSZS1vcmRlciBrZXloYW5kbGVyLmggdG8gYnVpbGQgb24gQVJNLgog LSBSZWJhc2Ugb24gYnVpbGQ6IGhvb2sgdGhlIHNjaGVkdWxlcnMgaW50byBLY29uZmlnCiAtIHMv aWQvbmFtZS87IHMvcGF5bG9hZF9saXN0X2xvY2svcGF5bG9hZF9sb2NrLwogLSBQdXQgI2lmZGVm IENPTkZJR19YU1BMSUNFIGluIGhlYWRlciBmaWxlIHBlciBEb3VnIHJldmlldy4KIC0gQW5kcmV3 IHJldmlldzoKICAgIC0gdXNlIHJlY3Vyc2l2ZSBzcGlubG9ja3MsIGNoYW5nZSBuYW1lIHRvIHhz cGxpY2Vfb3AsCiAgICAgIHNwcmlua2xlIG5ldy1saW5lcywgYWRkIGxvY2FsIHZhcmlhYmxlIGJs b2NrLCBpbmNsdWRlCiAgICAgIHN0YXRlIGRpYWdyYW0sIHNxdWFzaCB0d28gZ290byBsYWJlbHMs IHVzZSB2emFsbG9jIGluc3RlYWQgb2YKICAgICAgYWxsb2NfeGVuaGVhcF9wYWdlcy4KICAgIC0g Y2hhbmdlICdzdGF0ZScgZnJvbSBpbnQzMiB0byB1aW50MzJfdAogICAgLSByZW1vdmUgdGhlIGVy ciBsYWJlbCBvdXQgb2YgeHNwbGljZV91cGxvYWQKICAgIC0gdXNlIHZvaWQqIGluc3RhZWQgb2Yg dWludDhfdAogICAgLSBtb3ZlIGNvZGUgYXJvdW5kIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHJlYWQu CiAgICAtIEFkZCB2bWFwLmggdG8gY29tcGlsZXIgdW5kZXIgQVJNLgogLSBBZGQgbWlzc2luZyBD b3B5cmlnaHQgaW4gaGVhZGVyIGZpbGUKIC0gRHJvcHBlZCBMT0FERUQgc3RhdGUsIG1ha2UgdGhl IHBheWxvYWQgZ28gaW4gQ0hFQ0tFRC4KdjQ6IE1hZGUgaXQgb25seSB3b3JrIG9uIHg4NiBwZXIg SnVsaWVuJ3MgKEFSTSkgbWFpbnRhaW5lciByZXF1ZXN0Lgp2NTogRHJvcHBlZCB0aGUgbG9hZC0+ Y2hlY2sgc3RhdGUgZXhhbXBsZSBpbiBzeXNjdGwuaAogICAgTWFkZSB0aGUgLT5ucj0wIGNhbGwg d29yay4gUmVtb3ZlIHJjPTAgaW4gbG90cyBvZiBjYXNlcy4gVXBkYXRlCiAgICBoZWFkZXIgZnJv bSBkZXNpZ24gZG9jLgp2NjogVXBkYXRlIHdoYXQgJ2lkeCcgbWVhbnMuIERvbid0IGRyb3AgbG9j ayBpbiBmaW5kX3BheWxvYWQuIE1ha2UKICAgIGZpbmRfbmFtZSBjb3B5IGRhdGEuCnY3OiBEb24n dCBwcmludCAtRUlOVkFMIHdoZW4gcGF5bG9hZF9jbnQgaXMgemVybyAoYW5kIHRvb2xzdGFjayBw cm92aWRlcwogICAgaWR4IGFzIHplcm8pLiBDaGFuZ2UgcmV0dXJuIGNvZGUgdG8gLUVOT1NZUywg c28gY2hhbmdlIGNhbGxiYWNrIHNldHRpbmcKICAgIGJhc2VkIG9uIC1FTk9TWVMgYW5kIC1FT1BO T1RTVVBQLgogICAgQWRkIGV4dHJhIHByaW50ayBpbiBrZXloYW5kbGVyLgogICAgVXNlIGlmICgu LikgZWxzZSBpbiAgeHNwbGljZV91cGxvYWQgaW5zdGVhZCBvZiB0d28gJ2lmJy4KICAgIFJlbW92 ZSAjaWZkZWYgaW4gWFNNIG1hY2hpbmVyeS4KICAgIEFkZCBBbmRyZXcncyBSZXZpZXdlZC1ieS4K ICAgIFJlYmFzZSBvbiB4ODYvY3B1OiBTeXNjdGwgYW5kIGNvbW1vbiBpbmZyYXN0cnVjdHVyZSBm b3IgbGV2ZWxsaW5nIGNvbnRleHQgc3dpdGNoaW5nCiAgICBhbmQgeGVuK3Rvb2xzOiBFeHBvcnQg bWF4aW11bSBob3N0IGFuZCBndWVzdCBjcHUgZmVhdHVyZXNldHMgdmlhIFNZU0NUTAp2OToKICAg IHMvZmluZF9uYW1lL2dldF9uYW1lLywgZHJvcCBsb2NrcyB3aGVuIGFsbG9jYXRpbmcgZGF0YS4K ICAgIERyb3AgY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBvbiBjb3B5YmFjawogICAgTW92ZSB0aGUg YWxsb2NhdGlvbiBvbiB1cGxvYWQgb3V0c2lkZSB0aGUgc3BpbmxvY2suCiAgICBBZGQgKFRFQ0gg UFJFVklFVykgdG8gdGhlIEtjb25maWcgaGVscAogICAgUmV0dXJuIC1FSU5WQUwgaWYgdGhlIENI RUNLIG9yIFVOTE9BRCBhY3Rpb24gaXMgdG8gYmUgcGVyZm9ybWVkIGFuZCB0aGUgcGF5bG9hZAog ICAgc3RhdGUgaXMgbm90IGluIGV4cGVjdGVkIHN0YXRlLgogICAgUHJpbnQgJ2MnIG5vdCAndScg d2hlbiBpbnZva2luZyB0aGUga2V5aGFuZGxlci4KdjEwOgogICAgRHJvcHBlZCBSZXZpZXdlZC1i eS4KICAgIFVzZSBjb3B5X2Zyb21fZ3Vlc3QgaW4gZ2V0X25hbWUKICAgIERyb3AgWFNQTElDRV9B Q1RJT05fQ0hFQ0sKICAgIEZpeCAnZWxzZScgY29kaW5nIHZpb2xhdGlvbgogICAgcy91aW50MzJf dC91bnNpZ25lZCBpbnQvIG9uIHN0YXRlMnN0ciBhbmQgYWRkIG1pc3NpbmcgYmxhbmtzLgp2MTAg LSBwYXRjaCBpbmxpbmUgaW4gdjggcGF0Y2hzZXQgcmVzcG9uc2UKICAgIFVzZSBKYW4ncyB2ZXJz aW9uIG9mIGlmL2Vsc2UgaWYgZmxvdyBpbiB1cGxvYWQgY29kZS4KLS0tCiB0b29scy9mbGFzay9w b2xpY3kvcG9saWN5L21vZHVsZXMveGVuL3hlbi50ZSB8ICAgMSArCiB4ZW4vY29tbW9uL0tjb25m aWcgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMiArCiB4ZW4vY29tbW9uL01ha2VmaWxl ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiB4ZW4vY29tbW9uL3N5c2N0bC5jICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgNyArCiB4ZW4vY29tbW9uL3hzcGxpY2UuYyAgICAg ICAgICAgICAgICAgICAgICAgICB8IDM4MyArKysrKysrKysrKysrKysrKysrKysrKysrKysKIHhl bi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaCAgICAgICAgICAgICAgICAgIHwgMTY1ICsrKysrKysr KysrKwogeGVuL2luY2x1ZGUveGVuL3hzcGxpY2UuaCAgICAgICAgICAgICAgICAgICAgfCAgMzUg KysrCiB4ZW4veHNtL2ZsYXNrL2hvb2tzLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNCAr CiB4ZW4veHNtL2ZsYXNrL3BvbGljeS9hY2Nlc3NfdmVjdG9ycyAgICAgICAgICB8ICAgMiArCiA5 IGZpbGVzIGNoYW5nZWQsIDYxMCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVu L2NvbW1vbi94c3BsaWNlLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vaW5jbHVkZS94ZW4veHNw bGljZS5oCgpkaWZmIC0tZ2l0IGEvdG9vbHMvZmxhc2svcG9saWN5L3BvbGljeS9tb2R1bGVzL3hl bi94ZW4udGUgYi90b29scy9mbGFzay9wb2xpY3kvcG9saWN5L21vZHVsZXMveGVuL3hlbi50ZQpp bmRleCAyYTI2MzBkLi5kYWExMzE1IDEwMDY0NAotLS0gYS90b29scy9mbGFzay9wb2xpY3kvcG9s aWN5L21vZHVsZXMveGVuL3hlbi50ZQorKysgYi90b29scy9mbGFzay9wb2xpY3kvcG9saWN5L21v ZHVsZXMveGVuL3hlbi50ZQpAQCAtNzQsNiArNzQsNyBAQCBhbGxvdyBkb20wX3QgeGVuX3Q6eGVu MiB7CiAgICAgZ2V0X3N5bWJvbAogICAgIGdldF9jcHVfbGV2ZWxsaW5nX2NhcHMKICAgICBnZXRf Y3B1X2ZlYXR1cmVzZXQKKyAgICB4c3BsaWNlX29wCiB9OwogCiAjIEFsbG93IGRvbTAgdG8gdXNl IGFsbCBYRU5WRVJfIHN1Ym9wcyB0aGF0IGhhdmUgY2hlY2tzLgpkaWZmIC0tZ2l0IGEveGVuL2Nv bW1vbi9LY29uZmlnIGIveGVuL2NvbW1vbi9LY29uZmlnCmluZGV4IGFkOWY3YmYuLjY5MmVmNTEg MTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vS2NvbmZpZworKysgYi94ZW4vY29tbW9uL0tjb25maWcK QEAgLTE4OCw0ICsxODgsMTYgQEAgY29uZmlnIFNDSEVEX0RFRkFVTFQKIAogZW5kbWVudQogCisj IEVuYWJsZS9EaXNhYmxlIHhzcGxpY2Ugc3VwcG9ydAorY29uZmlnIFhTUExJQ0UKKwlib29sICJ4 U3BsaWNlIGxpdmUgcGF0Y2hpbmcgc3VwcG9ydCAoVEVDSCBQUkVWSUVXKSIKKwlkZWZhdWx0IG4K KwlkZXBlbmRzIG9uIFg4NgorCS0tLWhlbHAtLS0KKwkgIEFsbG93cyBhIHJ1bm5pbmcgWGVuIGh5 cGVydmlzb3IgdG8gYmUgZHluYW1pY2FsbHkgcGF0Y2hlZCB1c2luZworCSAgYmluYXJ5IHBhdGNo ZXMgd2l0aG91dCByZWJvb3RpbmcuIFRoaXMgaXMgcHJpbWFyaWx5IHVzZWQgdG8gYmluYXJpbHkK KwkgIHBhdGNoIGluIHRoZSBmaWVsZCBhbiBoeXBlcnZpc29yIHdpdGggWFNBIGZpeGVzLgorCisJ ICBJZiB1bnN1cmUsIHNheSBZLgorCiBlbmRtZW51CmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL01h a2VmaWxlIGIveGVuL2NvbW1vbi9NYWtlZmlsZQppbmRleCA3N2RlMjdlLi45MTBhYzY5IDEwMDY0 NAotLS0gYS94ZW4vY29tbW9uL01ha2VmaWxlCisrKyBiL3hlbi9jb21tb24vTWFrZWZpbGUKQEAg LTU3LDYgKzU3LDcgQEAgb2JqLXkgKz0gdnNwcmludGYubwogb2JqLXkgKz0gd2FpdC5vCiBvYmot JChDT05GSUdfWEVOT1BST0YpICs9IHhlbm9wcm9mLm8KIG9iai15ICs9IHhtYWxsb2NfdGxzZi5v CitvYmotJChDT05GSUdfWFNQTElDRSkgKz0geHNwbGljZS5vCiAKIG9iai1iaW4tJChDT05GSUdf WDg2KSArPSAkKGZvcmVhY2ggbixkZWNvbXByZXNzIGJ1bnppcDIgdW54eiB1bmx6bWEgdW5sem8g dW5sejQgZWFybHljcGlvLCQobikuaW5pdC5vKQogCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3N5 c2N0bC5jIGIveGVuL2NvbW1vbi9zeXNjdGwuYwppbmRleCAyNTNiN2M4Li45YTRjYzFmIDEwMDY0 NAotLS0gYS94ZW4vY29tbW9uL3N5c2N0bC5jCisrKyBiL3hlbi9jb21tb24vc3lzY3RsLmMKQEAg LTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlIDx4c20veHNtLmg+CiAjaW5jbHVkZSA8eGVuL3Btc3Rh dC5oPgogI2luY2x1ZGUgPHhlbi9nY292Lmg+CisjaW5jbHVkZSA8eGVuL3hzcGxpY2UuaD4KIAog bG9uZyBkb19zeXNjdGwoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fc3lzY3RsX3QpIHVfc3lz Y3RsKQogewpAQCAtNDYwLDYgKzQ2MSwxMiBAQCBsb25nIGRvX3N5c2N0bChYRU5fR1VFU1RfSEFO RExFX1BBUkFNKHhlbl9zeXNjdGxfdCkgdV9zeXNjdGwpCiAgICAgICAgIHJldCA9IHRtZW1fY29u dHJvbCgmb3AtPnUudG1lbV9vcCk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBYRU5fU1lT Q1RMX3hzcGxpY2Vfb3A6CisgICAgICAgIHJldCA9IHhzcGxpY2Vfb3AoJm9wLT51LnhzcGxpY2Up OworICAgICAgICBpZiAoIHJldCAhPSAtRU5PU1lTICYmIHJldCAhPSAtRU9QTk9UU1VQUCApCisg ICAgICAgICAgICBjb3B5YmFjayA9IDE7CisgICAgICAgIGJyZWFrOworCiAgICAgZGVmYXVsdDoK ICAgICAgICAgcmV0ID0gYXJjaF9kb19zeXNjdGwob3AsIHVfc3lzY3RsKTsKICAgICAgICAgY29w eWJhY2sgPSAwOwpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi94c3BsaWNlLmMgYi94ZW4vY29tbW9u L3hzcGxpY2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43M2U1MGYwCi0t LSAvZGV2L251bGwKKysrIGIveGVuL2NvbW1vbi94c3BsaWNlLmMKQEAgLTAsMCArMSwzODMgQEAK Ky8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTYgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4g QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKi8KKworI2luY2x1ZGUgPHhlbi9lcnIuaD4KKyNp bmNsdWRlIDx4ZW4vZ3Vlc3RfYWNjZXNzLmg+CisjaW5jbHVkZSA8eGVuL2tleWhhbmRsZXIuaD4K KyNpbmNsdWRlIDx4ZW4vbGliLmg+CisjaW5jbHVkZSA8eGVuL2xpc3QuaD4KKyNpbmNsdWRlIDx4 ZW4vbW0uaD4KKyNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KKyNpbmNsdWRlIDx4ZW4vc21wLmg+Cisj aW5jbHVkZSA8eGVuL3NwaW5sb2NrLmg+CisjaW5jbHVkZSA8eGVuL3ZtYXAuaD4KKyNpbmNsdWRl IDx4ZW4veHNwbGljZS5oPgorCisjaW5jbHVkZSA8YXNtL2V2ZW50Lmg+CisjaW5jbHVkZSA8cHVi bGljL3N5c2N0bC5oPgorCisvKiBQcm90ZWN0cyBhZ2FpbnN0IHBheWxvYWRfbGlzdCBvcGVyYXRp b25zLiAqLworc3RhdGljIERFRklORV9TUElOTE9DSyhwYXlsb2FkX2xvY2spOworc3RhdGljIExJ U1RfSEVBRChwYXlsb2FkX2xpc3QpOworCitzdGF0aWMgdW5zaWduZWQgaW50IHBheWxvYWRfY250 Oworc3RhdGljIHVuc2lnbmVkIGludCBwYXlsb2FkX3ZlcnNpb24gPSAxOworCitzdHJ1Y3QgcGF5 bG9hZCB7CisgICAgdWludDMyX3Qgc3RhdGU7ICAgICAgICAgICAgICAgICAgICAgIC8qIE9uZSBv ZiB0aGUgWFNQTElDRV9TVEFURV8qLiAqLworICAgIGludDMyX3QgcmM7ICAgICAgICAgICAgICAg ICAgICAgICAgICAvKiAwIG9yIC1YRU5fRVhYLiAqLworICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlz dDsgICAgICAgICAgICAgICAvKiBMaW5rZWQgdG8gJ3BheWxvYWRfbGlzdCcuICovCisgICAgY2hh ciBuYW1lW1hFTl9YU1BMSUNFX05BTUVfU0laRV07ICAgIC8qIE5hbWUgb2YgaXQuICovCit9Owor CitzdGF0aWMgaW50IGdldF9uYW1lKGNvbnN0IHhlbl94c3BsaWNlX25hbWVfdCAqbmFtZSwgY2hh ciAqbikKK3sKKyAgICBpZiAoICFuYW1lLT5zaXplIHx8IG5hbWUtPnNpemUgPiBYRU5fWFNQTElD RV9OQU1FX1NJWkUgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIGlmICggbmFtZS0+ cGFkWzBdIHx8IG5hbWUtPnBhZFsxXSB8fCBuYW1lLT5wYWRbMl0gKQorICAgICAgICByZXR1cm4g LUVJTlZBTDsKKworICAgIGlmICggY29weV9mcm9tX2d1ZXN0KG4sIG5hbWUtPm5hbWUsIG5hbWUt PnNpemUpICkKKyAgICAgICAgcmV0dXJuIC1FRkFVTFQ7CisKKyAgICBpZiAoIG5bbmFtZS0+c2l6 ZSAtIDFdICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICByZXR1cm4gMDsKK30KKwor c3RhdGljIGludCB2ZXJpZnlfcGF5bG9hZChjb25zdCB4ZW5fc3lzY3RsX3hzcGxpY2VfdXBsb2Fk X3QgKnVwbG9hZCwgY2hhciAqbikKK3sKKyAgICBpZiAoIGdldF9uYW1lKCZ1cGxvYWQtPm5hbWUs IG4pICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICBpZiAoICF1cGxvYWQtPnNpemUg KQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIGlmICggdXBsb2FkLT5zaXplID4gTUIo MikgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIGlmICggIWd1ZXN0X2hhbmRsZV9v a2F5KHVwbG9hZC0+cGF5bG9hZCwgdXBsb2FkLT5zaXplKSApCisgICAgICAgIHJldHVybiAtRUZB VUxUOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgcGF5bG9hZCAqZmluZF9w YXlsb2FkKGNvbnN0IGNoYXIgKm5hbWUpCit7CisgICAgc3RydWN0IHBheWxvYWQgKmRhdGEsICpm b3VuZCA9IE5VTEw7CisKKyAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJnBheWxvYWRfbG9jaykp OworICAgIGxpc3RfZm9yX2VhY2hfZW50cnkgKCBkYXRhLCAmcGF5bG9hZF9saXN0LCBsaXN0ICkK KyAgICB7CisgICAgICAgIGlmICggIXN0cmNtcChkYXRhLT5uYW1lLCBuYW1lKSApCisgICAgICAg IHsKKyAgICAgICAgICAgIGZvdW5kID0gZGF0YTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg ICB9CisgICAgfQorCisgICAgcmV0dXJuIGZvdW5kOworfQorCitzdGF0aWMgdm9pZCBmcmVlX3Bh eWxvYWQoc3RydWN0IHBheWxvYWQgKmRhdGEpCit7CisgICAgQVNTRVJUKHNwaW5faXNfbG9ja2Vk KCZwYXlsb2FkX2xvY2spKTsKKyAgICBsaXN0X2RlbCgmZGF0YS0+bGlzdCk7CisgICAgcGF5bG9h ZF9jbnQtLTsKKyAgICBwYXlsb2FkX3ZlcnNpb24rKzsKKyAgICB4ZnJlZShkYXRhKTsKK30KKwor c3RhdGljIGludCB4c3BsaWNlX3VwbG9hZCh4ZW5fc3lzY3RsX3hzcGxpY2VfdXBsb2FkX3QgKnVw bG9hZCkKK3sKKyAgICBzdHJ1Y3QgcGF5bG9hZCAqZGF0YSwgKmZvdW5kOworICAgIGNoYXIgbltY RU5fWFNQTElDRV9OQU1FX1NJWkVdOworICAgIGludCByYzsKKworICAgIHJjID0gdmVyaWZ5X3Bh eWxvYWQodXBsb2FkLCBuKTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgcmV0dXJuIHJjOworCisg ICAgZGF0YSA9IHh6YWxsb2Moc3RydWN0IHBheWxvYWQpOworCisgICAgc3Bpbl9sb2NrKCZwYXls b2FkX2xvY2spOworCisgICAgZm91bmQgPSBmaW5kX3BheWxvYWQobik7CisgICAgaWYgKCBJU19F UlIoZm91bmQpICkKKyAgICAgICAgcmMgPSBQVFJfRVJSKGZvdW5kKTsKKyAgICBlbHNlIGlmICgg Zm91bmQgKQorICAgICAgICByYyA9IC1FRVhJU1Q7CisgICAgZWxzZSBpZiAoICFkYXRhICkKKyAg ICAgICAgcmMgPSAtRU5PTUVNOworICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1lbWNweShkYXRh LT5uYW1lLCBuLCBzdHJsZW4obikpOworICAgICAgICBkYXRhLT5zdGF0ZSA9IFhTUExJQ0VfU1RB VEVfQ0hFQ0tFRDsKKyAgICAgICAgSU5JVF9MSVNUX0hFQUQoJmRhdGEtPmxpc3QpOworCisgICAg ICAgIGxpc3RfYWRkX3RhaWwoJmRhdGEtPmxpc3QsICZwYXlsb2FkX2xpc3QpOworICAgICAgICBw YXlsb2FkX2NudCsrOworICAgICAgICBwYXlsb2FkX3ZlcnNpb24rKzsKKyAgICB9CisgICAgc3Bp bl91bmxvY2soJnBheWxvYWRfbG9jayk7CisKKyAgICBpZiAoIHJjICkKKyAgICAgICAgeGZyZWUo ZGF0YSk7CisKKyAgICByZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBpbnQgeHNwbGljZV9nZXQoeGVu X3N5c2N0bF94c3BsaWNlX2dldF90ICpnZXQpCit7CisgICAgc3RydWN0IHBheWxvYWQgKmRhdGE7 CisgICAgaW50IHJjOworICAgIGNoYXIgbltYRU5fWFNQTElDRV9OQU1FX1NJWkVdOworCisgICAg cmMgPSBnZXRfbmFtZSgmZ2V0LT5uYW1lLCBuKTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgcmV0 dXJuIHJjOworCisgICAgc3Bpbl9sb2NrKCZwYXlsb2FkX2xvY2spOworCisgICAgZGF0YSA9IGZp bmRfcGF5bG9hZChuKTsKKyAgICBpZiAoIElTX0VSUl9PUl9OVUxMKGRhdGEpICkKKyAgICB7Cisg ICAgICAgIHNwaW5fdW5sb2NrKCZwYXlsb2FkX2xvY2spOworCisgICAgICAgIGlmICggIWRhdGEg KQorICAgICAgICAgICAgcmV0dXJuIC1FTk9FTlQ7CisKKyAgICAgICAgcmV0dXJuIFBUUl9FUlIo ZGF0YSk7CisgICAgfQorCisgICAgZ2V0LT5zdGF0dXMuc3RhdGUgPSBkYXRhLT5zdGF0ZTsKKyAg ICBnZXQtPnN0YXR1cy5yYyA9IGRhdGEtPnJjOworCisgICAgc3Bpbl91bmxvY2soJnBheWxvYWRf bG9jayk7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCB4c3BsaWNlX2xpc3QoeGVu X3N5c2N0bF94c3BsaWNlX2xpc3RfdCAqbGlzdCkKK3sKKyAgICB4ZW5feHNwbGljZV9zdGF0dXNf dCBzdGF0dXM7CisgICAgc3RydWN0IHBheWxvYWQgKmRhdGE7CisgICAgdW5zaWduZWQgaW50IGlk eCA9IDAsIGkgPSAwOworICAgIGludCByYyA9IDA7CisKKyAgICBpZiAoIGxpc3QtPm5yID4gMTAy NCApCisgICAgICAgIHJldHVybiAtRTJCSUc7CisKKyAgICBpZiAoIGxpc3QtPnBhZCApCisgICAg ICAgIHJldHVybiAtRUlOVkFMOworCisgICAgaWYgKCBsaXN0LT5uciAmJgorICAgICAgICAgKCFn dWVzdF9oYW5kbGVfb2theShsaXN0LT5zdGF0dXMsIGxpc3QtPm5yKSB8fAorICAgICAgICAgICFn dWVzdF9oYW5kbGVfb2theShsaXN0LT5uYW1lLCBYRU5fWFNQTElDRV9OQU1FX1NJWkUgKiBsaXN0 LT5ucikgfHwKKyAgICAgICAgICAhZ3Vlc3RfaGFuZGxlX29rYXkobGlzdC0+bGVuLCBsaXN0LT5u cikpICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICBzcGluX2xvY2soJnBheWxvYWRf bG9jayk7CisgICAgaWYgKCBsaXN0LT5pZHggPj0gcGF5bG9hZF9jbnQgJiYgcGF5bG9hZF9jbnQg KQorICAgIHsKKyAgICAgICAgc3Bpbl91bmxvY2soJnBheWxvYWRfbG9jayk7CisgICAgICAgIHJl dHVybiAtRUlOVkFMOworICAgIH0KKworICAgIGlmICggbGlzdC0+bnIgKQorICAgIHsKKyAgICAg ICAgbGlzdF9mb3JfZWFjaF9lbnRyeSggZGF0YSwgJnBheWxvYWRfbGlzdCwgbGlzdCApCisgICAg ICAgIHsKKyAgICAgICAgICAgIHVpbnQzMl90IGxlbjsKKworICAgICAgICAgICAgaWYgKCBsaXN0 LT5pZHggPiBpKysgKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBz dGF0dXMuc3RhdGUgPSBkYXRhLT5zdGF0ZTsKKyAgICAgICAgICAgIHN0YXR1cy5yYyA9IGRhdGEt PnJjOworICAgICAgICAgICAgbGVuID0gc3RybGVuKGRhdGEtPm5hbWUpICsgMTsKKworICAgICAg ICAgICAgLyogTi5CLiAnaWR4JyAhPSAnaScuICovCisgICAgICAgICAgICBpZiAoIF9fY29weV90 b19ndWVzdF9vZmZzZXQobGlzdC0+bmFtZSwgaWR4ICogWEVOX1hTUExJQ0VfTkFNRV9TSVpFLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPm5hbWUsIGxlbikg fHwKKyAgICAgICAgICAgICAgICBfX2NvcHlfdG9fZ3Vlc3Rfb2Zmc2V0KGxpc3QtPmxlbiwgaWR4 LCAmbGVuLCAxKSB8fAorICAgICAgICAgICAgICAgIF9fY29weV90b19ndWVzdF9vZmZzZXQobGlz dC0+c3RhdHVzLCBpZHgsICZzdGF0dXMsIDEpICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICByYyA9IC1FRkFVTFQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9 CisKKyAgICAgICAgICAgIGlkeCsrOworCisgICAgICAgICAgICBpZiAoIChpZHggPj0gbGlzdC0+ bnIpIHx8IGh5cGVyY2FsbF9wcmVlbXB0X2NoZWNrKCkgKQorICAgICAgICAgICAgICAgIGJyZWFr OworICAgICAgICB9CisgICAgfQorICAgIGxpc3QtPm5yID0gcGF5bG9hZF9jbnQgLSBpOyAvKiBS ZW1haW5pbmcgYW1vdW50LiAqLworICAgIGxpc3QtPnZlcnNpb24gPSBwYXlsb2FkX3ZlcnNpb247 CisgICAgc3Bpbl91bmxvY2soJnBheWxvYWRfbG9jayk7CisKKyAgICAvKiBBbmQgaG93IG1hbnkg d2UgaGF2ZSBwcm9jZXNzZWQuICovCisgICAgcmV0dXJuIHJjID8gOiBpZHg7Cit9CisKK3N0YXRp YyBpbnQgeHNwbGljZV9hY3Rpb24oeGVuX3N5c2N0bF94c3BsaWNlX2FjdGlvbl90ICphY3Rpb24p Cit7CisgICAgc3RydWN0IHBheWxvYWQgKmRhdGE7CisgICAgY2hhciBuW1hFTl9YU1BMSUNFX05B TUVfU0laRV07CisgICAgaW50IHJjOworCisgICAgcmMgPSBnZXRfbmFtZSgmYWN0aW9uLT5uYW1l LCBuKTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgcmV0dXJuIHJjOworCisgICAgc3Bpbl9sb2Nr KCZwYXlsb2FkX2xvY2spOworCisgICAgZGF0YSA9IGZpbmRfcGF5bG9hZChuKTsKKyAgICBpZiAo IElTX0VSUl9PUl9OVUxMKGRhdGEpICkKKyAgICB7CisgICAgICAgIHNwaW5fdW5sb2NrKCZwYXls b2FkX2xvY2spOworCisgICAgICAgIGlmICggIWRhdGEgKQorICAgICAgICAgICAgcmV0dXJuIC1F Tk9FTlQ7CisKKyAgICAgICAgcmV0dXJuIFBUUl9FUlIoZGF0YSk7CisgICAgfQorCisgICAgc3dp dGNoICggYWN0aW9uLT5jbWQgKQorICAgIHsKKyAgICBjYXNlIFhTUExJQ0VfQUNUSU9OX1VOTE9B RDoKKyAgICAgICAgaWYgKCBkYXRhLT5zdGF0ZSA9PSBYU1BMSUNFX1NUQVRFX0NIRUNLRUQgKQor ICAgICAgICB7CisgICAgICAgICAgICBmcmVlX3BheWxvYWQoZGF0YSk7CisgICAgICAgICAgICAv KiBObyB0b3VjaGluZyAnZGF0YScgZnJvbSBoZXJlIG9uISAqLworICAgICAgICAgICAgZGF0YSA9 IE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmMgPSAtRUlOVkFM OworICAgICAgICBicmVhazsKKworICAgIGNhc2UgWFNQTElDRV9BQ1RJT05fUkVWRVJUOgorICAg ICAgICBpZiAoIGRhdGEtPnN0YXRlID09IFhTUExJQ0VfU1RBVEVfQVBQTElFRCApCisgICAgICAg IHsKKyAgICAgICAgICAgIC8qIE5vIGltcGxlbWVudGF0aW9uIHlldC4gKi8KKyAgICAgICAgICAg IGRhdGEtPnN0YXRlID0gWFNQTElDRV9TVEFURV9DSEVDS0VEOworICAgICAgICAgICAgZGF0YS0+ cmMgPSAwOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBYU1BMSUNFX0FD VElPTl9BUFBMWToKKyAgICAgICAgaWYgKCBkYXRhLT5zdGF0ZSA9PSBYU1BMSUNFX1NUQVRFX0NI RUNLRUQgKQorICAgICAgICB7CisgICAgICAgICAgICAvKiBObyBpbXBsZW1lbnRhdGlvbiB5ZXQu ICovCisgICAgICAgICAgICBkYXRhLT5zdGF0ZSA9IFhTUExJQ0VfU1RBVEVfQVBQTElFRDsKKyAg ICAgICAgICAgIGRhdGEtPnJjID0gMDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAg IGNhc2UgWFNQTElDRV9BQ1RJT05fUkVQTEFDRToKKyAgICAgICAgaWYgKCBkYXRhLT5zdGF0ZSA9 PSBYU1BMSUNFX1NUQVRFX0NIRUNLRUQgKQorICAgICAgICB7CisgICAgICAgICAgICAvKiBObyBp bXBsZW1lbnRhdGlvbiB5ZXQuICovCisgICAgICAgICAgICBkYXRhLT5zdGF0ZSA9IFhTUExJQ0Vf U1RBVEVfQ0hFQ0tFRDsKKyAgICAgICAgICAgIGRhdGEtPnJjID0gMDsKKyAgICAgICAgfQorICAg ICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIHJjID0gLUVPUE5PVFNVUFA7Cisg ICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHNwaW5fdW5sb2NrKCZwYXlsb2FkX2xvY2spOwor CisgICAgcmV0dXJuIHJjOworfQorCitpbnQgeHNwbGljZV9vcCh4ZW5fc3lzY3RsX3hzcGxpY2Vf b3BfdCAqeHNwbGljZSkKK3sKKyAgICBpbnQgcmM7CisKKyAgICBpZiAoIHhzcGxpY2UtPnBhZCAp CisgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgc3dpdGNoICggeHNwbGljZS0+Y21kICkK KyAgICB7CisgICAgY2FzZSBYRU5fU1lTQ1RMX1hTUExJQ0VfVVBMT0FEOgorICAgICAgICByYyA9 IHhzcGxpY2VfdXBsb2FkKCZ4c3BsaWNlLT51LnVwbG9hZCk7CisgICAgICAgIGJyZWFrOworCisg ICAgY2FzZSBYRU5fU1lTQ1RMX1hTUExJQ0VfR0VUOgorICAgICAgICByYyA9IHhzcGxpY2VfZ2V0 KCZ4c3BsaWNlLT51LmdldCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBYRU5fU1lTQ1RM X1hTUExJQ0VfTElTVDoKKyAgICAgICAgcmMgPSB4c3BsaWNlX2xpc3QoJnhzcGxpY2UtPnUubGlz dCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBYRU5fU1lTQ1RMX1hTUExJQ0VfQUNUSU9O OgorICAgICAgICByYyA9IHhzcGxpY2VfYWN0aW9uKCZ4c3BsaWNlLT51LmFjdGlvbik7CisgICAg ICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgcmMgPSAtRU9QTk9UU1VQUDsKKyAg ICAgICAgYnJlYWs7CisgICB9CisKKyAgICByZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBjb25zdCBj aGFyICpzdGF0ZTJzdHIodW5zaWduZWQgaW50IHN0YXRlKQoreworI2RlZmluZSBTVEFURSh4KSBb WFNQTElDRV9TVEFURV8jI3hdID0gI3gKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgbmFt ZXNbXSA9IHsKKyAgICAgICAgICAgIFNUQVRFKENIRUNLRUQpLAorICAgICAgICAgICAgU1RBVEUo QVBQTElFRCksCisgICAgfTsKKyN1bmRlZiBTVEFURQorCisgICAgaWYgKCBzdGF0ZSA+PSBBUlJB WV9TSVpFKG5hbWVzKSB8fCAhbmFtZXNbc3RhdGVdICkKKyAgICAgICAgcmV0dXJuICJ1bmtub3du IjsKKworICAgIHJldHVybiBuYW1lc1tzdGF0ZV07Cit9CisKK3N0YXRpYyB2b2lkIHhzcGxpY2Vf cHJpbnRhbGwodW5zaWduZWQgY2hhciBrZXkpCit7CisgICAgc3RydWN0IHBheWxvYWQgKmRhdGE7 CisKKyAgICBwcmludGsoIiclYycgcHJlc3NlZCAtIER1bXBpbmcgYWxsIHhzcGxpY2UgcGF0Y2hl c1xuIiwga2V5KTsKKworICAgIGlmICggIXNwaW5fdHJ5bG9jaygmcGF5bG9hZF9sb2NrKSApCisg ICAgeworICAgICAgICBwcmludGsoIkxvY2sgaGVsZC4gVHJ5IGFnYWluLlxuIik7CisgICAgICAg IHJldHVybjsKKyAgICB9CisKKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggZGF0YSwgJnBheWxv YWRfbGlzdCwgbGlzdCApCisgICAgICAgIHByaW50aygiIG5hbWU9JXMgc3RhdGU9JXMoJWQpXG4i LCBkYXRhLT5uYW1lLAorICAgICAgICAgICAgICAgc3RhdGUyc3RyKGRhdGEtPnN0YXRlKSwgZGF0 YS0+c3RhdGUpOworCisgICAgc3Bpbl91bmxvY2soJnBheWxvYWRfbG9jayk7Cit9CisKK3N0YXRp YyBpbnQgX19pbml0IHhzcGxpY2VfaW5pdCh2b2lkKQoreworICAgIHJlZ2lzdGVyX2tleWhhbmRs ZXIoJ3gnLCB4c3BsaWNlX3ByaW50YWxsLCAicHJpbnQgeHNwbGljaW5nIGluZm8iLCAxKTsKKyAg ICByZXR1cm4gMDsKK30KK19faW5pdGNhbGwoeHNwbGljZV9pbml0KTsKKworLyoKKyAqIExvY2Fs IHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFz aWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAor ICogRW5kOgorICovCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3RsLmggYi94 ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3RsLmgKaW5kZXggODJhMmEzZS4uM2ZhMWZlNyAxMDA2NDQK LS0tIGEveGVuL2luY2x1ZGUvcHVibGljL3N5c2N0bC5oCisrKyBiL3hlbi9pbmNsdWRlL3B1Ymxp Yy9zeXNjdGwuaApAQCAtODQ4LDYgKzg0OCwxNjkgQEAgc3RydWN0IHhlbl9zeXNjdGxfY3B1X2Zl YXR1cmVzZXQgewogdHlwZWRlZiBzdHJ1Y3QgeGVuX3N5c2N0bF9mZWF0dXJlc2V0IHhlbl9zeXNj dGxfZmVhdHVyZXNldF90OwogREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX3N5c2N0bF9mZWF0 dXJlc2V0X3QpOwogCisvKgorICogWEVOX1NZU0NUTF9YU1BMSUNFX29wCisgKgorICogUmVmZXIg dG8gdGhlIGRvY3MvdW5zdGFibGUvbWlzYy94c3BsaWNlLm1hcmtkb3duCisgKiBmb3IgdGhlIGRl c2lnbiBkZXRhaWxzIG9mIHRoaXMgaHlwZXJjYWxsLgorICoKKyAqIFRoZXJlIGFyZSBmb3VyIHN1 Yi1vcHM6CisgKiAgWEVOX1NZU0NUTF9YU1BMSUNFX1VQTE9BRCAoMCkKKyAqICBYRU5fU1lTQ1RM X1hTUExJQ0VfR0VUICgxKQorICogIFhFTl9TWVNDVExfWFNQTElDRV9MSVNUICgyKQorICogIFhF Tl9TWVNDVExfWFNQTElDRV9BQ1RJT04gKDMpCisgKgorICogVGhlIG5vcm1hbCBzZXF1ZW5jZSBv ZiBzdWItb3BzIGlzIHRvOgorICogIDEpIFhFTl9TWVNDVExfWFNQTElDRV9VUExPQUQgdG8gdXBs b2FkIHRoZSBwYXlsb2FkLiBJZiBlcnJvcnMgU1RPUC4KKyAqICAyKSBYRU5fU1lTQ1RMX1hTUExJ Q0VfR0VUIHRvIGNoZWNrIHRoZSBgLT5yY2AuIElmIC1YRU5fRUFHQUlOIHNwaW4uCisgKiAgICAg SWYgemVybyBnbyB0byBuZXh0IHN0ZXAuCisgKiAgMykgWEVOX1NZU0NUTF9YU1BMSUNFX0FDVElP TiB3aXRoIFhTUExJQ0VfQUNUSU9OX0FQUExZIHRvIGFwcGx5IHRoZSBwYXRjaC4KKyAqICA0KSBY RU5fU1lTQ1RMX1hTUExJQ0VfR0VUIHRvIGNoZWNrIHRoZSBgLT5yY2AuIElmIGluIC1YRU5fRUFH QUlOIHNwaW4uCisgKiAgICAgSWYgemVybyBleGl0IHdpdGggc3VjY2Vzcy4KKyAqLworCisvKgor ICogU3RydWN0dXJlIGRlc2NyaWJpbmcgYW4gRUxGIHBheWxvYWQuIFVuaXF1ZWx5IGlkZW50aWZp ZXMgdGhlCisgKiBwYXlsb2FkLiBTaG91bGQgYmUgaHVtYW4gcmVhZGFibGUuCisgKiBSZWNvbW1l bmRlZCBsZW5ndGggaXMgdXB0byBYRU5fWFNQTElDRV9OQU1FX1NJWkUuCisgKiBJbmNsdWRlcyB0 aGUgTlVMIHRlcm1pbmF0b3IuCisgKi8KKyNkZWZpbmUgWEVOX1hTUExJQ0VfTkFNRV9TSVpFIDEy OAorc3RydWN0IHhlbl94c3BsaWNlX25hbWUgeworICAgIFhFTl9HVUVTVF9IQU5ETEVfNjQoY2hh cikgbmFtZTsgICAgICAgICAvKiBJTjogcG9pbnRlciB0byBuYW1lLiAqLworICAgIHVpbnQxNl90 IHNpemU7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTjogc2l6ZSBvZiBuYW1lLiBNYXkg YmUgdXB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBY RU5fWFNQTElDRV9OQU1FX1NJWkUuICovCisgICAgdWludDE2X3QgcGFkWzNdOyAgICAgICAgICAg ICAgICAgICAgICAgIC8qIElOOiBNVVNUIGJlIHplcm8uICovCit9OwordHlwZWRlZiBzdHJ1Y3Qg eGVuX3hzcGxpY2VfbmFtZSB4ZW5feHNwbGljZV9uYW1lX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hB TkRMRSh4ZW5feHNwbGljZV9uYW1lX3QpOworCisvKgorICogVXBsb2FkIGEgcGF5bG9hZCB0byB0 aGUgaHlwZXJ2aXNvci4gVGhlIHBheWxvYWQgaXMgdmVyaWZpZWQKKyAqIGFnYWluc3QgYmFzaWMg Y2hlY2tzIGFuZCBpZiB0aGVyZSBhcmUgYW55IGlzc3VlcyB0aGUgcHJvcGVyIHJldHVybiBjb2Rl CisgKiB3aWxsIGJlIHJldHVybmVkLiBUaGUgcGF5bG9hZCBpcyBub3QgYXBwbGllZCBhdCB0aGlz IHRpbWUgLSB0aGF0IGlzCisgKiBjb250cm9sbGVkIGJ5IFhFTl9TWVNDVExfWFNQTElDRV9BQ1RJ T04uCisgKgorICogVGhlIHJldHVybiB2YWx1ZSBpcyB6ZXJvIGlmIHRoZSBwYXlsb2FkIHdhcyBz dWNjZXNmdWxseSB1cGxvYWRlZC4KKyAqIE90aGVyd2lzZSBhbiBFWFggcmV0dXJuIHZhbHVlIGlz IHByb3ZpZGVkLiBEdXBsaWNhdGUgYG5hbWVgIGFyZSBub3QKKyAqIHN1cHBvcnRlZC4KKyAqCisg KiBUaGUgcGF5bG9hZCBhdCB0aGlzIHBvaW50IGlzIHZlcmlmaWVkIGFnYWluc3QgYmFzaWMgY2hl Y2tzLgorICoKKyAqIFRoZSBgcGF5bG9hZGAgaXMgdGhlIEVMRiBwYXlsb2FkIGFzIG1lbnRpb25l ZCBpbiB0aGUgYFBheWxvYWQgZm9ybWF0YAorICogc2VjdGlvbiBpbiB0aGUgeFNwbGljZSBkZXNp Z24gZG9jdW1lbnQuCisgKi8KKyNkZWZpbmUgWEVOX1NZU0NUTF9YU1BMSUNFX1VQTE9BRCAwCitz dHJ1Y3QgeGVuX3N5c2N0bF94c3BsaWNlX3VwbG9hZCB7CisgICAgeGVuX3hzcGxpY2VfbmFtZV90 IG5hbWU7ICAgICAgICAgICAgICAgIC8qIElOLCBuYW1lIG9mIHRoZSBwYXRjaC4gKi8KKyAgICB1 aW50NjRfdCBzaXplOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU4sIHNpemUgb2YgdGhl IEVMRiBmaWxlLiAqLworICAgIFhFTl9HVUVTVF9IQU5ETEVfNjQodWludDgpIHBheWxvYWQ7ICAg ICAvKiBJTiwgdGhlIEVMRiBmaWxlLiAqLworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9zeXNjdGxf eHNwbGljZV91cGxvYWQgeGVuX3N5c2N0bF94c3BsaWNlX3VwbG9hZF90OworREVGSU5FX1hFTl9H VUVTVF9IQU5ETEUoeGVuX3N5c2N0bF94c3BsaWNlX3VwbG9hZF90KTsKKworLyoKKyAqIFJldHJp ZXZlIGFuIHN0YXR1cyBvZiBhbiBzcGVjaWZpYyBwYXlsb2FkLgorICoKKyAqIFVwb24gY29tcGxl dGlvbiB0aGUgYHN0cnVjdCB4ZW5feHNwbGljZV9zdGF0dXNgIGlzIHVwZGF0ZWQuCisgKgorICog VGhlIHJldHVybiB2YWx1ZSBpcyB6ZXJvIG9uIHN1Y2Nlc3MgYW5kIFhFTl9FWFggb24gZmFpbHVy ZS4gVGhpcyBvcGVyYXRpb24KKyAqIGlzIHN5bmNocm9ub3VzIGFuZCBkb2VzIG5vdCByZXF1aXJl IHByZWVtcHRpb24uCisgKi8KKyNkZWZpbmUgWEVOX1NZU0NUTF9YU1BMSUNFX0dFVCAxCisKK3N0 cnVjdCB4ZW5feHNwbGljZV9zdGF0dXMgeworI2RlZmluZSBYU1BMSUNFX1NUQVRFX0NIRUNLRUQg ICAgICAxCisjZGVmaW5lIFhTUExJQ0VfU1RBVEVfQVBQTElFRCAgICAgIDIKKyAgICB1aW50MzJf dCBzdGF0ZTsgICAgICAgICAgICAgICAgLyogT1VUOiBYU1BMSUNFX1NUQVRFXyouICovCisgICAg aW50MzJfdCByYzsgICAgICAgICAgICAgICAgICAgIC8qIE9VVDogMCBpZiBubyBlcnJvciwgb3Ro ZXJ3aXNlIC1YRU5fRVhYLiAqLworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl94c3BsaWNlX3N0YXR1 cyB4ZW5feHNwbGljZV9zdGF0dXNfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl94c3Bs aWNlX3N0YXR1c190KTsKKworc3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV9nZXQgeworICAgIHhl bl94c3BsaWNlX25hbWVfdCBuYW1lOyAgICAgICAgICAgICAgICAvKiBJTiwgbmFtZSBvZiB0aGUg cGF5bG9hZC4gKi8KKyAgICB4ZW5feHNwbGljZV9zdGF0dXNfdCBzdGF0dXM7ICAgICAgICAgICAg LyogSU4vT1VULCBzdGF0ZSBvZiBpdC4gKi8KK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5fc3lzY3Rs X3hzcGxpY2VfZ2V0IHhlbl9zeXNjdGxfeHNwbGljZV9nZXRfdDsKK0RFRklORV9YRU5fR1VFU1Rf SEFORExFKHhlbl9zeXNjdGxfeHNwbGljZV9nZXRfdCk7CisKKy8qCisgKiBSZXRyaWV2ZSBhbiBh cnJheSBvZiBhYmJyZXZpYXRlZCBzdGF0dXMgYW5kIG5hbWVzIG9mIHBheWxvYWRzIHRoYXQgYXJl CisgKiBsb2FkZWQgaW4gdGhlIGh5cGVydmlzb3IuCisgKgorICogSWYgdGhlIGh5cGVyY2FsbCBy ZXR1cm5zIGFuIHBvc2l0aXZlIG51bWJlciwgaXQgaXMgdGhlIG51bWJlciAodXAgdG8gYG5yYCkK KyAqIG9mIHRoZSBwYXlsb2FkcyByZXR1cm5lZCwgYWxvbmcgd2l0aCBgbnJgIHVwZGF0ZWQgd2l0 aCB0aGUgbnVtYmVyIG9mIHJlbWFpbmluZworICogcGF5bG9hZHMsIGB2ZXJzaW9uYCB1cGRhdGVk IChpdCBtYXkgYmUgdGhlIHNhbWUgYWNyb3NzIGh5cGVyY2FsbHMuIElmIGl0CisgKiB2YXJpZXMg dGhlIGRhdGEgaXMgc3RhbGUgYW5kIGZ1cnRoZXIgY2FsbHMgY291bGQgZmFpbCkuIFRoZSBgc3Rh dHVzYCwKKyAqIGBuYW1lYCwgYW5kIGBsZW5gJyBhcmUgdXBkYXRlZCBhdCB0aGVpciBkZXNpZ25l ZCBpbmRleCB2YWx1ZSAoYGlkeGApIHdpdGgKKyAqIHRoZSByZXR1cm5lZCB2YWx1ZSBvZiBkYXRh LgorICoKKyAqIElmIHRoZSBoeXBlcmNhbGwgcmV0dXJucyBFMkJJRyB0aGUgYG5yYCBpcyB0b28g YmlnIGFuZCBzaG91bGQgYmUKKyAqIGxvd2VyZWQuIFRoZSB1cHBlciBsaW1pdCBvZiBgbnJgIGlz IGxlZnQgdG8gdGhlIGltcGxlbWVudGlvbi4KKyAqCisgKiBOb3RlIHRoYXQgZHVlIHRvIHRoZSBh c3luY2hyb25vdXMgbmF0dXJlIG9mIGh5cGVyY2FsbHMgdGhlIGRvbWFpbiBtaWdodCBoYXZlCisg KiBhZGRlZCBvciByZW1vdmVkIHRoZSBudW1iZXIgb2YgcGF5bG9hZHMgbWFraW5nIHRoaXMgaW5m b3JtYXRpb24gc3RhbGUuIEl0IGlzCisgKiB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIHRvb2xz dGFjayB0byB1c2UgdGhlIGB2ZXJzaW9uYCBmaWVsZCB0byBjaGVjaworICogYmV0d2VlbiBlYWNo IGludm9jYXRpb24uIGlmIHRoZSB2ZXJzaW9uIGRpZmZlcnMgaXQgc2hvdWxkIGRpc2NhcmQgdGhl IHN0YWxlCisgKiBkYXRhIGFuZCBzdGFydCBmcm9tIHNjcmF0Y2guIEl0IGlzIE9LIGZvciB0aGUg dG9vbHN0YWNrIHRvIHVzZSB0aGUgbmV3CisgKiBgdmVyc2lvbmAgZmllbGQuCisgKi8KKyNkZWZp bmUgWEVOX1NZU0NUTF9YU1BMSUNFX0xJU1QgMgorc3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV9s aXN0IHsKKyAgICB1aW50MzJfdCB2ZXJzaW9uOyAgICAgICAgICAgICAgICAgICAgICAgLyogT1VU OiBIeXBlcnZpc29yIHN0YW1wcyB2YWx1ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgSWYgdmFyaWVzIGJldHdlZW4gY2FsbHMsIHdlIGFyZQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBnZXR0aW5nIHN0YWxlIGRh dGEuICovCisgICAgdWludDMyX3QgaWR4OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElO OiBJbmRleCBpbnRvIGh5cGVydmlzb3IgbGlzdC4gKi8KKyAgICB1aW50MzJfdCBucjsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLyogSU46IEhvdyBtYW55IHN0YXR1cywgbmFtZSwgYW5kIGxl bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGQg ZmlsbCBvdXQuIENhbiBiZSB6ZXJvIHRvIGdldAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBhbW91bnQgb2YgcGF5bG9hZHMgYW5kIHZlcnNpb24uCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9VVDogSG93IG1hbnkg cGF5bG9hZHMgbGVmdC4gKi8KKyAgICB1aW50MzJfdCBwYWQ7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgLyogSU46IE11c3QgYmUgemVyby4gKi8KKyAgICBYRU5fR1VFU1RfSEFORExFXzY0KHhl bl94c3BsaWNlX3N0YXR1c190KSBzdGF0dXM7ICAvKiBPVVQuIE11c3QgaGF2ZSBlbm91Z2gKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2UgYWxsb2Nh dGUgZm9yIG5yIG9mIHRoZW0uICovCisgICAgWEVOX0dVRVNUX0hBTkRMRV82NChjaGFyKSBuYW1l OyAgICAgICAgIC8qIE9VVDogQXJyYXkgb2YgbmFtZXMuIEVhY2ggbWVtYmVyCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1VU1QgWEVOX1hTUExJQ0VfTkFN RV9TSVpFIGluIHNpemUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE11c3QgaGF2ZSBuciBvZiB0aGVtLiAqLworICAgIFhFTl9HVUVTVF9IQU5ETEVfNjQo dWludDMyKSBsZW47ICAgICAgICAvKiBPVVQ6IEFycmF5IG9mIGxlbmd0aHMgb2YgbmFtZSdzLgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdXN0IGhhdmUg bnIgb2YgdGhlbS4gKi8KK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2VfbGlz dCB4ZW5fc3lzY3RsX3hzcGxpY2VfbGlzdF90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVu X3N5c2N0bF94c3BsaWNlX2xpc3RfdCk7CisKKy8qCisgKiBQZXJmb3JtIGFuIG9wZXJhdGlvbiBv biB0aGUgcGF5bG9hZCBzdHJ1Y3R1cmUgcmVmZXJlbmNlZCBieSB0aGUgYG5hbWVgIGZpZWxkLgor ICogVGhlIG9wZXJhdGlvbiByZXF1ZXN0IGlzIGFzeW5jaHJvbm91cyBhbmQgdGhlIHN0YXR1cyBz aG91bGQgYmUgcmV0cmlldmVkCisgKiBieSB1c2luZyBlaXRoZXIgWEVOX1NZU0NUTF9YU1BMSUNF X0dFVCBvciBYRU5fU1lTQ1RMX1hTUExJQ0VfTElTVCBoeXBlcmNhbGwuCisgKi8KKyNkZWZpbmUg WEVOX1NZU0NUTF9YU1BMSUNFX0FDVElPTiAzCitzdHJ1Y3QgeGVuX3N5c2N0bF94c3BsaWNlX2Fj dGlvbiB7CisgICAgeGVuX3hzcGxpY2VfbmFtZV90IG5hbWU7ICAgICAgICAgICAgICAgIC8qIElO LCBuYW1lIG9mIHRoZSBwYXRjaC4gKi8KKyNkZWZpbmUgWFNQTElDRV9BQ1RJT05fVU5MT0FEICAg ICAgIDEKKyNkZWZpbmUgWFNQTElDRV9BQ1RJT05fUkVWRVJUICAgICAgIDIKKyNkZWZpbmUgWFNQ TElDRV9BQ1RJT05fQVBQTFkgICAgICAgIDMKKyNkZWZpbmUgWFNQTElDRV9BQ1RJT05fUkVQTEFD RSAgICAgIDQKKyAgICB1aW50MzJfdCBjbWQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog SU46IFhTUExJQ0VfQUNUSU9OXyouICovCisgICAgdWludDMyX3QgdGltZW91dDsgICAgICAgICAg ICAgICAgICAgICAgIC8qIElOOiBaZXJvIGlmIG5vIHRpbWVvdXQuICovCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE9yIHVwcGVyIGJvdW5kIG9mIHRpbWUg KG1zKSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBm b3Igb3BlcmF0aW9uIHRvIHRha2UuICovCit9OwordHlwZWRlZiBzdHJ1Y3QgeGVuX3N5c2N0bF94 c3BsaWNlX2FjdGlvbiB4ZW5fc3lzY3RsX3hzcGxpY2VfYWN0aW9uX3Q7CitERUZJTkVfWEVOX0dV RVNUX0hBTkRMRSh4ZW5fc3lzY3RsX3hzcGxpY2VfYWN0aW9uX3QpOworCitzdHJ1Y3QgeGVuX3N5 c2N0bF94c3BsaWNlX29wIHsKKyAgICB1aW50MzJfdCBjbWQ7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgLyogSU46IFhFTl9TWVNDVExfWFNQTElDRV8qLiAqLworICAgIHVpbnQzMl90IHBhZDsg ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTjogQWx3YXlzIHplcm8uICovCisgICAgdW5p b24geworICAgICAgICB4ZW5fc3lzY3RsX3hzcGxpY2VfdXBsb2FkX3QgdXBsb2FkOworICAgICAg ICB4ZW5fc3lzY3RsX3hzcGxpY2VfbGlzdF90IGxpc3Q7CisgICAgICAgIHhlbl9zeXNjdGxfeHNw bGljZV9nZXRfdCBnZXQ7CisgICAgICAgIHhlbl9zeXNjdGxfeHNwbGljZV9hY3Rpb25fdCBhY3Rp b247CisgICAgfSB1OworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV9vcCB4 ZW5fc3lzY3RsX3hzcGxpY2Vfb3BfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9zeXNj dGxfeHNwbGljZV9vcF90KTsKKwogc3RydWN0IHhlbl9zeXNjdGwgewogICAgIHVpbnQzMl90IGNt ZDsKICNkZWZpbmUgWEVOX1NZU0NUTF9yZWFkY29uc29sZSAgICAgICAgICAgICAgICAgICAgMQpA QCAtODc1LDYgKzEwMzgsNyBAQCBzdHJ1Y3QgeGVuX3N5c2N0bCB7CiAjZGVmaW5lIFhFTl9TWVND VExfdG1lbV9vcCAgICAgICAgICAgICAgICAgICAgICAgMjQKICNkZWZpbmUgWEVOX1NZU0NUTF9n ZXRfY3B1X2xldmVsbGluZ19jYXBzICAgICAgICAyNQogI2RlZmluZSBYRU5fU1lTQ1RMX2dldF9j cHVfZmVhdHVyZXNldCAgICAgICAgICAgIDI2CisjZGVmaW5lIFhFTl9TWVNDVExfeHNwbGljZV9v cCAgICAgICAgICAgICAgICAgICAgMjcKICAgICB1aW50MzJfdCBpbnRlcmZhY2VfdmVyc2lvbjsg LyogWEVOX1NZU0NUTF9JTlRFUkZBQ0VfVkVSU0lPTiAqLwogICAgIHVuaW9uIHsKICAgICAgICAg c3RydWN0IHhlbl9zeXNjdGxfcmVhZGNvbnNvbGUgICAgICAgcmVhZGNvbnNvbGU7CkBAIC05MDIs NiArMTA2Niw3IEBAIHN0cnVjdCB4ZW5fc3lzY3RsIHsKICAgICAgICAgc3RydWN0IHhlbl9zeXNj dGxfdG1lbV9vcCAgICAgICAgICAgdG1lbV9vcDsKICAgICAgICAgc3RydWN0IHhlbl9zeXNjdGxf Y3B1X2xldmVsbGluZ19jYXBzIGNwdV9sZXZlbGxpbmdfY2FwczsKICAgICAgICAgc3RydWN0IHhl bl9zeXNjdGxfY3B1X2ZlYXR1cmVzZXQgICAgY3B1X2ZlYXR1cmVzZXQ7CisgICAgICAgIHN0cnVj dCB4ZW5fc3lzY3RsX3hzcGxpY2Vfb3AgICAgICAgIHhzcGxpY2U7CiAgICAgICAgIHVpbnQ4X3Qg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZFsxMjhdOwogICAgIH0gdTsKIH07CmRpZmYg LS1naXQgYS94ZW4vaW5jbHVkZS94ZW4veHNwbGljZS5oIGIveGVuL2luY2x1ZGUveGVuL3hzcGxp Y2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWYwOGNkCi0tLSAvZGV2 L251bGwKKysrIGIveGVuL2luY2x1ZGUveGVuL3hzcGxpY2UuaApAQCAtMCwwICsxLDM1IEBACisv KgorICogQ29weXJpZ2h0IChjKSAyMDE2IE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFs bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICovCisKKyNpZm5kZWYgX19YRU5fWFNQTElDRV9IX18K KyNkZWZpbmUgX19YRU5fWFNQTElDRV9IX18KKworc3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV9v cDsKKworI2lmZGVmIENPTkZJR19YU1BMSUNFCisKK2ludCB4c3BsaWNlX29wKHN0cnVjdCB4ZW5f c3lzY3RsX3hzcGxpY2Vfb3AgKik7CisKKyNlbHNlCisKKyNpbmNsdWRlIDx4ZW4vZXJybm8uaD4g LyogRm9yIC1FTk9TWVMgKi8KK3N0YXRpYyBpbmxpbmUgaW50IHhzcGxpY2Vfb3Aoc3RydWN0IHhl bl9zeXNjdGxfeHNwbGljZV9vcCAqb3ApCit7CisgICAgcmV0dXJuIC1FTk9TWVM7Cit9CisKKyNl bmRpZiAvKiBDT05GSUdfWFNQTElDRSAqLworCisjZW5kaWYgLyogX19YRU5fWFNQTElDRV9IX18g Ki8KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHls ZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVu dC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS94ZW4veHNtL2ZsYXNr L2hvb2tzLmMgYi94ZW4veHNtL2ZsYXNrL2hvb2tzLmMKaW5kZXggNjI5NTc2OC4uYzJkZjQ4ZiAx MDA2NDQKLS0tIGEveGVuL3hzbS9mbGFzay9ob29rcy5jCisrKyBiL3hlbi94c20vZmxhc2svaG9v a3MuYwpAQCAtODE0LDYgKzgxNCwxMCBAQCBzdGF0aWMgaW50IGZsYXNrX3N5c2N0bChpbnQgY21k KQogICAgIGNhc2UgWEVOX1NZU0NUTF9nZXRfY3B1X2ZlYXR1cmVzZXQ6CiAgICAgICAgIHJldHVy biBkb21haW5faGFzX3hlbihjdXJyZW50LT5kb21haW4sIFhFTjJfX0dFVF9DUFVfRkVBVFVSRVNF VCk7CiAKKyAgICBjYXNlIFhFTl9TWVNDVExfeHNwbGljZV9vcDoKKyAgICAgICAgcmV0dXJuIGF2 Y19jdXJyZW50X2hhc19wZXJtKFNFQ0lOSVRTSURfWEVOLCBTRUNDTEFTU19YRU4yLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWEVOMl9fWFNQTElDRV9PUCwgTlVMTCk7CisK ICAgICBkZWZhdWx0OgogICAgICAgICBwcmludGsoImZsYXNrX3N5c2N0bDogVW5rbm93biBvcCAl ZFxuIiwgY21kKTsKICAgICAgICAgcmV0dXJuIC1FUEVSTTsKZGlmZiAtLWdpdCBhL3hlbi94c20v Zmxhc2svcG9saWN5L2FjY2Vzc192ZWN0b3JzIGIveGVuL3hzbS9mbGFzay9wb2xpY3kvYWNjZXNz X3ZlY3RvcnMKaW5kZXggYmRiN2I4OS4uZTlhYjE0OSAxMDA2NDQKLS0tIGEveGVuL3hzbS9mbGFz ay9wb2xpY3kvYWNjZXNzX3ZlY3RvcnMKKysrIGIveGVuL3hzbS9mbGFzay9wb2xpY3kvYWNjZXNz X3ZlY3RvcnMKQEAgLTk3LDYgKzk3LDggQEAgY2xhc3MgeGVuMgogICAgIGdldF9jcHVfbGV2ZWxs aW5nX2NhcHMKICMgWEVOX1NZU0NUTF9nZXRfY3B1X2ZlYXR1cmVzZXQKICAgICBnZXRfY3B1X2Zl YXR1cmVzZXQKKyMgWEVOX1NZU0NUTF94c3BsaWNlX29wCisgICAgeHNwbGljZV9vcAogfQogCiAj IENsYXNzZXMgZG9tYWluIGFuZCBkb21haW4yIGNvbnNpc3Qgb2Ygb3BlcmF0aW9ucyB0aGF0IGEg ZG9tYWluIHBlcmZvcm1zIG9uCi0tIAoyLjUuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxp c3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==