From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v8.1 04/27] xen/xsplice: Hypervisor implementation of XEN_XSPLICE_op Date: Wed, 13 Apr 2016 18:01:45 -0400 Message-ID: <1460584928-32440-5-git-send-email-konrad.wilk@oracle.com> References: <1460584928-32440-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 1aqSrq-00046h-8M for xen-devel@lists.xenproject.org; Wed, 13 Apr 2016 22:02:34 +0000 In-Reply-To: <1460584928-32440-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, konrad@kernel.org, ross.lagerwall@citrix.com, mpohlack@amazon.com, andrew.cooper3@citrix.com, 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 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 bWF4aW11bSBob3N0IGFuZCBndWVzdCBjcHUgZmVhdHVyZXNldHMgdmlhIFNZU0NUTAotLS0KLS0t CiB0b29scy9mbGFzay9wb2xpY3kvcG9saWN5L21vZHVsZXMveGVuL3hlbi50ZSB8ICAgMSArCiB4 ZW4vY29tbW9uL0tjb25maWcgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMiArCiB4ZW4v Y29tbW9uL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiB4ZW4vY29t bW9uL3N5c2N0bC5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNiArCiB4ZW4vY29tbW9u L3hzcGxpY2UuYyAgICAgICAgICAgICAgICAgICAgICAgICB8IDQwNCArKysrKysrKysrKysrKysr KysrKysrKysrKysKIHhlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaCAgICAgICAgICAgICAgICAg IHwgMTY2ICsrKysrKysrKysrCiB4ZW4vaW5jbHVkZS94ZW4veHNwbGljZS5oICAgICAgICAgICAg ICAgICAgICB8ICAzNSArKysKIHhlbi94c20vZmxhc2svaG9va3MuYyAgICAgICAgICAgICAgICAg ICAgICAgIHwgICA0ICsKIHhlbi94c20vZmxhc2svcG9saWN5L2FjY2Vzc192ZWN0b3JzICAgICAg ICAgIHwgICAyICsKIDkgZmlsZXMgY2hhbmdlZCwgNjMxIGluc2VydGlvbnMoKykKIGNyZWF0ZSBt b2RlIDEwMDY0NCB4ZW4vY29tbW9uL3hzcGxpY2UuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9p bmNsdWRlL3hlbi94c3BsaWNlLmgKCmRpZmYgLS1naXQgYS90b29scy9mbGFzay9wb2xpY3kvcG9s aWN5L21vZHVsZXMveGVuL3hlbi50ZSBiL3Rvb2xzL2ZsYXNrL3BvbGljeS9wb2xpY3kvbW9kdWxl cy94ZW4veGVuLnRlCmluZGV4IDJhMjYzMGQuLmRhYTEzMTUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2Zs YXNrL3BvbGljeS9wb2xpY3kvbW9kdWxlcy94ZW4veGVuLnRlCisrKyBiL3Rvb2xzL2ZsYXNrL3Bv bGljeS9wb2xpY3kvbW9kdWxlcy94ZW4veGVuLnRlCkBAIC03NCw2ICs3NCw3IEBAIGFsbG93IGRv bTBfdCB4ZW5fdDp4ZW4yIHsKICAgICBnZXRfc3ltYm9sCiAgICAgZ2V0X2NwdV9sZXZlbGxpbmdf Y2FwcwogICAgIGdldF9jcHVfZmVhdHVyZXNldAorICAgIHhzcGxpY2Vfb3AKIH07CiAKICMgQWxs b3cgZG9tMCB0byB1c2UgYWxsIFhFTlZFUl8gc3Vib3BzIHRoYXQgaGF2ZSBjaGVja3MuCmRpZmYg LS1naXQgYS94ZW4vY29tbW9uL0tjb25maWcgYi94ZW4vY29tbW9uL0tjb25maWcKaW5kZXggYWQ5 ZjdiZi4uZmVhMzNkMyAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9LY29uZmlnCisrKyBiL3hlbi9j b21tb24vS2NvbmZpZwpAQCAtMTg4LDQgKzE4OCwxNiBAQCBjb25maWcgU0NIRURfREVGQVVMVAog CiBlbmRtZW51CiAKKyMgRW5hYmxlL0Rpc2FibGUgeHNwbGljZSBzdXBwb3J0Citjb25maWcgWFNQ TElDRQorCWJvb2wgInhTcGxpY2UgbGl2ZSBwYXRjaGluZyBzdXBwb3J0IgorCWRlZmF1bHQgbgor CWRlcGVuZHMgb24gWDg2CisJLS0taGVscC0tLQorCSAgQWxsb3dzIGEgcnVubmluZyBYZW4gaHlw ZXJ2aXNvciB0byBiZSBkeW5hbWljYWxseSBwYXRjaGVkIHVzaW5nCisJICBiaW5hcnkgcGF0Y2hl cyB3aXRob3V0IHJlYm9vdGluZy4gVGhpcyBpcyBwcmltYXJpbHkgdXNlZCB0byBiaW5hcmlseQor CSAgcGF0Y2ggaW4gdGhlIGZpZWxkIGFuIGh5cGVydmlzb3Igd2l0aCBYU0EgZml4ZXMuCisKKwkg IElmIHVuc3VyZSwgc2F5IFkuCisKIGVuZG1lbnUKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vTWFr ZWZpbGUgYi94ZW4vY29tbW9uL01ha2VmaWxlCmluZGV4IDc3ZGUyN2UuLjkxMGFjNjkgMTAwNjQ0 Ci0tLSBhL3hlbi9jb21tb24vTWFrZWZpbGUKKysrIGIveGVuL2NvbW1vbi9NYWtlZmlsZQpAQCAt NTcsNiArNTcsNyBAQCBvYmoteSArPSB2c3ByaW50Zi5vCiBvYmoteSArPSB3YWl0Lm8KIG9iai0k KENPTkZJR19YRU5PUFJPRikgKz0geGVub3Byb2Yubwogb2JqLXkgKz0geG1hbGxvY190bHNmLm8K K29iai0kKENPTkZJR19YU1BMSUNFKSArPSB4c3BsaWNlLm8KIAogb2JqLWJpbi0kKENPTkZJR19Y ODYpICs9ICQoZm9yZWFjaCBuLGRlY29tcHJlc3MgYnVuemlwMiB1bnh6IHVubHptYSB1bmx6byB1 bmx6NCBlYXJseWNwaW8sJChuKS5pbml0Lm8pCiAKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vc3lz Y3RsLmMgYi94ZW4vY29tbW9uL3N5c2N0bC5jCmluZGV4IDI1M2I3YzguLmQwNGQ1MjkgMTAwNjQ0 Ci0tLSBhL3hlbi9jb21tb24vc3lzY3RsLmMKKysrIGIveGVuL2NvbW1vbi9zeXNjdGwuYwpAQCAt MjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPHhzbS94c20uaD4KICNpbmNsdWRlIDx4ZW4vcG1zdGF0 Lmg+CiAjaW5jbHVkZSA8eGVuL2djb3YuaD4KKyNpbmNsdWRlIDx4ZW4veHNwbGljZS5oPgogCiBs b25nIGRvX3N5c2N0bChYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9zeXNjdGxfdCkgdV9zeXNj dGwpCiB7CkBAIC00NjAsNiArNDYxLDExIEBAIGxvbmcgZG9fc3lzY3RsKFhFTl9HVUVTVF9IQU5E TEVfUEFSQU0oeGVuX3N5c2N0bF90KSB1X3N5c2N0bCkKICAgICAgICAgcmV0ID0gdG1lbV9jb250 cm9sKCZvcC0+dS50bWVtX29wKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFhFTl9TWVND VExfeHNwbGljZV9vcDoKKyAgICAgICAgcmV0ID0geHNwbGljZV9vcCgmb3AtPnUueHNwbGljZSk7 CisgICAgICAgIGNvcHliYWNrID0gKHJldCA9PSAtRU5PU1lTIHx8IHJldCA9PSAtRU9QTk9UU1VQ UCkgPyAwIDogMTsKKyAgICAgICAgYnJlYWs7CisKICAgICBkZWZhdWx0OgogICAgICAgICByZXQg PSBhcmNoX2RvX3N5c2N0bChvcCwgdV9zeXNjdGwpOwogICAgICAgICBjb3B5YmFjayA9IDA7CmRp ZmYgLS1naXQgYS94ZW4vY29tbW9uL3hzcGxpY2UuYyBiL3hlbi9jb21tb24veHNwbGljZS5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0MTUxZTkKLS0tIC9kZXYvbnVsbAor KysgYi94ZW4vY29tbW9uL3hzcGxpY2UuYwpAQCAtMCwwICsxLDQwNCBAQAorLyoKKyAqIENvcHly aWdodCAoYykgMjAxNiBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJl c2VydmVkLgorICoKKyAqLworCisjaW5jbHVkZSA8eGVuL2Vyci5oPgorI2luY2x1ZGUgPHhlbi9n dWVzdF9hY2Nlc3MuaD4KKyNpbmNsdWRlIDx4ZW4va2V5aGFuZGxlci5oPgorI2luY2x1ZGUgPHhl bi9saWIuaD4KKyNpbmNsdWRlIDx4ZW4vbGlzdC5oPgorI2luY2x1ZGUgPHhlbi9tbS5oPgorI2lu Y2x1ZGUgPHhlbi9zY2hlZC5oPgorI2luY2x1ZGUgPHhlbi9zbXAuaD4KKyNpbmNsdWRlIDx4ZW4v c3BpbmxvY2suaD4KKyNpbmNsdWRlIDx4ZW4vdm1hcC5oPgorI2luY2x1ZGUgPHhlbi94c3BsaWNl Lmg+CisKKyNpbmNsdWRlIDxhc20vZXZlbnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvc3lzY3RsLmg+ CisKKy8qIFByb3RlY3RzIGFnYWluc3QgcGF5bG9hZF9saXN0IG9wZXJhdGlvbnMuICovCitzdGF0 aWMgREVGSU5FX1NQSU5MT0NLKHBheWxvYWRfbG9jayk7CitzdGF0aWMgTElTVF9IRUFEKHBheWxv YWRfbGlzdCk7CisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgcGF5bG9hZF9jbnQ7CitzdGF0aWMgdW5z aWduZWQgaW50IHBheWxvYWRfdmVyc2lvbiA9IDE7CisKK3N0cnVjdCBwYXlsb2FkIHsKKyAgICB1 aW50MzJfdCBzdGF0ZTsgICAgICAgICAgICAgICAgICAgICAgLyogT25lIG9mIHRoZSBYU1BMSUNF X1NUQVRFXyouICovCisgICAgaW50MzJfdCByYzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8q IDAgb3IgLVhFTl9FWFguICovCisgICAgc3RydWN0IGxpc3RfaGVhZCBsaXN0OyAgICAgICAgICAg ICAgIC8qIExpbmtlZCB0byAncGF5bG9hZF9saXN0Jy4gKi8KKyAgICBjaGFyIG5hbWVbWEVOX1hT UExJQ0VfTkFNRV9TSVpFXTsgICAgLyogTmFtZSBvZiBpdC4gKi8KK307CisKK3N0YXRpYyBpbnQg dmVyaWZ5X25hbWUoY29uc3QgeGVuX3hzcGxpY2VfbmFtZV90ICpuYW1lLCBjaGFyICpuKQorewor ICAgIGlmICggIW5hbWUtPnNpemUgfHwgbmFtZS0+c2l6ZSA+IFhFTl9YU1BMSUNFX05BTUVfU0la RSApCisgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgaWYgKCBuYW1lLT5wYWRbMF0gfHwg bmFtZS0+cGFkWzFdIHx8IG5hbWUtPnBhZFsyXSApCisgICAgICAgIHJldHVybiAtRUlOVkFMOwor CisgICAgaWYgKCAhZ3Vlc3RfaGFuZGxlX29rYXkobmFtZS0+bmFtZSwgbmFtZS0+c2l6ZSkgKQor ICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIGlmICggX19jb3B5X2Zyb21fZ3Vlc3Qobiwg bmFtZS0+bmFtZSwgbmFtZS0+c2l6ZSkgKQorICAgICAgICByZXR1cm4gLUVGQVVMVDsKKworICAg IGlmICggbltuYW1lLT5zaXplIC0gMV0gKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAg IHJldHVybiAwOworfQorCitzdGF0aWMgaW50IHZlcmlmeV9wYXlsb2FkKGNvbnN0IHhlbl9zeXNj dGxfeHNwbGljZV91cGxvYWRfdCAqdXBsb2FkLCBjaGFyICpuKQoreworICAgIGlmICggdmVyaWZ5 X25hbWUoJnVwbG9hZC0+bmFtZSwgbikgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAg IGlmICggIXVwbG9hZC0+c2l6ZSApCisgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgaWYg KCB1cGxvYWQtPnNpemUgPiBNQigyKSApCisgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAg aWYgKCAhZ3Vlc3RfaGFuZGxlX29rYXkodXBsb2FkLT5wYXlsb2FkLCB1cGxvYWQtPnNpemUpICkK KyAgICAgICAgcmV0dXJuIC1FRkFVTFQ7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHN0 cnVjdCBwYXlsb2FkICpmaW5kX3BheWxvYWQoY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgICBzdHJ1 Y3QgcGF5bG9hZCAqZGF0YSwgKmZvdW5kID0gTlVMTDsKKworICAgIEFTU0VSVChzcGluX2lzX2xv Y2tlZCgmcGF5bG9hZF9sb2NrKSk7CisgICAgbGlzdF9mb3JfZWFjaF9lbnRyeSAoIGRhdGEsICZw YXlsb2FkX2xpc3QsIGxpc3QgKQorICAgIHsKKyAgICAgICAgaWYgKCAhc3RyY21wKGRhdGEtPm5h bWUsIG5hbWUpICkKKyAgICAgICAgeworICAgICAgICAgICAgZm91bmQgPSBkYXRhOworICAgICAg ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZm91bmQ7Cit9CisK K3N0YXRpYyB2b2lkIGZyZWVfcGF5bG9hZChzdHJ1Y3QgcGF5bG9hZCAqZGF0YSkKK3sKKyAgICBB U1NFUlQoc3Bpbl9pc19sb2NrZWQoJnBheWxvYWRfbG9jaykpOworICAgIGxpc3RfZGVsKCZkYXRh LT5saXN0KTsKKyAgICBwYXlsb2FkX2NudC0tOworICAgIHBheWxvYWRfdmVyc2lvbisrOworICAg IHhmcmVlKGRhdGEpOworfQorCitzdGF0aWMgaW50IHhzcGxpY2VfdXBsb2FkKHhlbl9zeXNjdGxf eHNwbGljZV91cGxvYWRfdCAqdXBsb2FkKQoreworICAgIHN0cnVjdCBwYXlsb2FkICpkYXRhID0g TlVMTCwgKmZvdW5kOworICAgIGNoYXIgbltYRU5fWFNQTElDRV9OQU1FX1NJWkVdOworICAgIGlu dCByYzsKKworICAgIHJjID0gdmVyaWZ5X3BheWxvYWQodXBsb2FkLCBuKTsKKyAgICBpZiAoIHJj ICkKKyAgICAgICAgcmV0dXJuIHJjOworCisgICAgc3Bpbl9sb2NrKCZwYXlsb2FkX2xvY2spOwor CisgICAgZm91bmQgPSBmaW5kX3BheWxvYWQobik7CisgICAgaWYgKCBJU19FUlIoZm91bmQpICkK KyAgICB7CisgICAgICAgIHJjID0gUFRSX0VSUihmb3VuZCk7CisgICAgICAgIGdvdG8gb3V0Owor ICAgIH0KKyAgICBlbHNlIGlmICggZm91bmQgKQorICAgIHsKKyAgICAgICAgcmMgPSAtRUVYSVNU OworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBkYXRhID0geHphbGxvYyhzdHJ1Y3Qg cGF5bG9hZCk7CisgICAgaWYgKCAhZGF0YSApCisgICAgeworICAgICAgICByYyA9IC1FTk9NRU07 CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIHJjID0gMDsKKworICAgIG1lbWNweShk YXRhLT5uYW1lLCBuLCBzdHJsZW4obikpOworICAgIGRhdGEtPnN0YXRlID0gWFNQTElDRV9TVEFU RV9DSEVDS0VEOworICAgIElOSVRfTElTVF9IRUFEKCZkYXRhLT5saXN0KTsKKworICAgIGxpc3Rf YWRkX3RhaWwoJmRhdGEtPmxpc3QsICZwYXlsb2FkX2xpc3QpOworICAgIHBheWxvYWRfY250Kys7 CisgICAgcGF5bG9hZF92ZXJzaW9uKys7CisKKyBvdXQ6CisgICAgc3Bpbl91bmxvY2soJnBheWxv YWRfbG9jayk7CisKKyAgICBpZiAoIHJjICkKKyAgICAgICAgeGZyZWUoZGF0YSk7CisKKyAgICBy ZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBpbnQgeHNwbGljZV9nZXQoeGVuX3N5c2N0bF94c3BsaWNl X2dldF90ICpnZXQpCit7CisgICAgc3RydWN0IHBheWxvYWQgKmRhdGE7CisgICAgaW50IHJjOwor ICAgIGNoYXIgbltYRU5fWFNQTElDRV9OQU1FX1NJWkVdOworCisgICAgcmMgPSB2ZXJpZnlfbmFt ZSgmZ2V0LT5uYW1lLCBuKTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgcmV0dXJuIHJjOworCisg ICAgc3Bpbl9sb2NrKCZwYXlsb2FkX2xvY2spOworCisgICAgZGF0YSA9IGZpbmRfcGF5bG9hZChu KTsKKyAgICBpZiAoIElTX0VSUl9PUl9OVUxMKGRhdGEpICkKKyAgICB7CisgICAgICAgIHNwaW5f dW5sb2NrKCZwYXlsb2FkX2xvY2spOworCisgICAgICAgIGlmICggIWRhdGEgKQorICAgICAgICAg ICAgcmV0dXJuIC1FTk9FTlQ7CisKKyAgICAgICAgcmV0dXJuIFBUUl9FUlIoZGF0YSk7CisgICAg fQorCisgICAgZ2V0LT5zdGF0dXMuc3RhdGUgPSBkYXRhLT5zdGF0ZTsKKyAgICBnZXQtPnN0YXR1 cy5yYyA9IGRhdGEtPnJjOworCisgICAgc3Bpbl91bmxvY2soJnBheWxvYWRfbG9jayk7CisKKyAg ICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCB4c3BsaWNlX2xpc3QoeGVuX3N5c2N0bF94c3Bs aWNlX2xpc3RfdCAqbGlzdCkKK3sKKyAgICB4ZW5feHNwbGljZV9zdGF0dXNfdCBzdGF0dXM7Cisg ICAgc3RydWN0IHBheWxvYWQgKmRhdGE7CisgICAgdW5zaWduZWQgaW50IGlkeCA9IDAsIGkgPSAw OworICAgIGludCByYyA9IDA7CisKKyAgICBpZiAoIGxpc3QtPm5yID4gMTAyNCApCisgICAgICAg IHJldHVybiAtRTJCSUc7CisKKyAgICBpZiAoIGxpc3QtPnBhZCApCisgICAgICAgIHJldHVybiAt RUlOVkFMOworCisgICAgaWYgKCBsaXN0LT5uciAmJgorICAgICAgICAgKCFndWVzdF9oYW5kbGVf b2theShsaXN0LT5zdGF0dXMsIGxpc3QtPm5yKSB8fAorICAgICAgICAgICFndWVzdF9oYW5kbGVf b2theShsaXN0LT5uYW1lLCBYRU5fWFNQTElDRV9OQU1FX1NJWkUgKiBsaXN0LT5ucikgfHwKKyAg ICAgICAgICAhZ3Vlc3RfaGFuZGxlX29rYXkobGlzdC0+bGVuLCBsaXN0LT5ucikpICkKKyAgICAg ICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICBzcGluX2xvY2soJnBheWxvYWRfbG9jayk7CisgICAg aWYgKCBsaXN0LT5pZHggPj0gcGF5bG9hZF9jbnQgJiYgcGF5bG9hZF9jbnQgKQorICAgIHsKKyAg ICAgICAgc3Bpbl91bmxvY2soJnBheWxvYWRfbG9jayk7CisgICAgICAgIHJldHVybiAtRUlOVkFM OworICAgIH0KKworICAgIGlmICggbGlzdC0+bnIgKQorICAgIHsKKyAgICAgICAgbGlzdF9mb3Jf ZWFjaF9lbnRyeSggZGF0YSwgJnBheWxvYWRfbGlzdCwgbGlzdCApCisgICAgICAgIHsKKyAgICAg ICAgICAgIHVpbnQzMl90IGxlbjsKKworICAgICAgICAgICAgaWYgKCBsaXN0LT5pZHggPiBpKysg KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBzdGF0dXMuc3RhdGUg PSBkYXRhLT5zdGF0ZTsKKyAgICAgICAgICAgIHN0YXR1cy5yYyA9IGRhdGEtPnJjOworICAgICAg ICAgICAgbGVuID0gc3RybGVuKGRhdGEtPm5hbWUpICsgMTsKKworICAgICAgICAgICAgLyogTi5C LiAnaWR4JyAhPSAnaScuICovCisgICAgICAgICAgICBpZiAoIF9fY29weV90b19ndWVzdF9vZmZz ZXQobGlzdC0+bmFtZSwgaWR4ICogWEVOX1hTUExJQ0VfTkFNRV9TSVpFLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPm5hbWUsIGxlbikgfHwKKyAgICAgICAg ICAgICAgICBfX2NvcHlfdG9fZ3Vlc3Rfb2Zmc2V0KGxpc3QtPmxlbiwgaWR4LCAmbGVuLCAxKSB8 fAorICAgICAgICAgICAgICAgIF9fY29weV90b19ndWVzdF9vZmZzZXQobGlzdC0+c3RhdHVzLCBp ZHgsICZzdGF0dXMsIDEpICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByYyA9IC1F RkFVTFQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAg ICAgIGlkeCsrOworCisgICAgICAgICAgICBpZiAoIChpZHggPj0gbGlzdC0+bnIpIHx8IGh5cGVy Y2FsbF9wcmVlbXB0X2NoZWNrKCkgKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9 CisgICAgfQorICAgIGxpc3QtPm5yID0gcGF5bG9hZF9jbnQgLSBpOyAvKiBSZW1haW5pbmcgYW1v dW50LiAqLworICAgIGxpc3QtPnZlcnNpb24gPSBwYXlsb2FkX3ZlcnNpb247CisgICAgc3Bpbl91 bmxvY2soJnBheWxvYWRfbG9jayk7CisKKyAgICAvKiBBbmQgaG93IG1hbnkgd2UgaGF2ZSBwcm9j ZXNzZWQuICovCisgICAgcmV0dXJuIHJjID8gOiBpZHg7Cit9CisKK3N0YXRpYyBpbnQgeHNwbGlj ZV9hY3Rpb24oeGVuX3N5c2N0bF94c3BsaWNlX2FjdGlvbl90ICphY3Rpb24pCit7CisgICAgc3Ry dWN0IHBheWxvYWQgKmRhdGE7CisgICAgY2hhciBuW1hFTl9YU1BMSUNFX05BTUVfU0laRV07Cisg ICAgaW50IHJjOworCisgICAgcmMgPSB2ZXJpZnlfbmFtZSgmYWN0aW9uLT5uYW1lLCBuKTsKKyAg ICBpZiAoIHJjICkKKyAgICAgICAgcmV0dXJuIHJjOworCisgICAgc3Bpbl9sb2NrKCZwYXlsb2Fk X2xvY2spOworCisgICAgZGF0YSA9IGZpbmRfcGF5bG9hZChuKTsKKyAgICBpZiAoIElTX0VSUl9P Ul9OVUxMKGRhdGEpICkKKyAgICB7CisgICAgICAgIHNwaW5fdW5sb2NrKCZwYXlsb2FkX2xvY2sp OworCisgICAgICAgIGlmICggIWRhdGEgKQorICAgICAgICAgICAgcmV0dXJuIC1FTk9FTlQ7CisK KyAgICAgICAgcmV0dXJuIFBUUl9FUlIoZGF0YSk7CisgICAgfQorCisgICAgc3dpdGNoICggYWN0 aW9uLT5jbWQgKQorICAgIHsKKyAgICBjYXNlIFhTUExJQ0VfQUNUSU9OX0NIRUNLOgorICAgICAg ICBpZiAoIGRhdGEtPnN0YXRlID09IFhTUExJQ0VfU1RBVEVfQ0hFQ0tFRCApCisgICAgICAgIHsK KyAgICAgICAgICAgIC8qIE5vIGltcGxlbWVudGF0aW9uIHlldC4gKi8KKyAgICAgICAgICAgIGRh dGEtPnN0YXRlID0gWFNQTElDRV9TVEFURV9DSEVDS0VEOworICAgICAgICAgICAgZGF0YS0+cmMg PSAwOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBYU1BMSUNFX0FDVElP Tl9VTkxPQUQ6CisgICAgICAgIGlmICggZGF0YS0+c3RhdGUgPT0gWFNQTElDRV9TVEFURV9DSEVD S0VEICkKKyAgICAgICAgeworICAgICAgICAgICAgZnJlZV9wYXlsb2FkKGRhdGEpOworICAgICAg ICAgICAgLyogTm8gdG91Y2hpbmcgJ2RhdGEnIGZyb20gaGVyZSBvbiEgKi8KKyAgICAgICAgICAg IGRhdGEgPSBOVUxMOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBYU1BM SUNFX0FDVElPTl9SRVZFUlQ6CisgICAgICAgIGlmICggZGF0YS0+c3RhdGUgPT0gWFNQTElDRV9T VEFURV9BUFBMSUVEICkKKyAgICAgICAgeworICAgICAgICAgICAgLyogTm8gaW1wbGVtZW50YXRp b24geWV0LiAqLworICAgICAgICAgICAgZGF0YS0+c3RhdGUgPSBYU1BMSUNFX1NUQVRFX0NIRUNL RUQ7CisgICAgICAgICAgICBkYXRhLT5yYyA9IDA7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7 CisKKyAgICBjYXNlIFhTUExJQ0VfQUNUSU9OX0FQUExZOgorICAgICAgICBpZiAoIGRhdGEtPnN0 YXRlID09IFhTUExJQ0VfU1RBVEVfQ0hFQ0tFRCApCisgICAgICAgIHsKKyAgICAgICAgICAgIC8q IE5vIGltcGxlbWVudGF0aW9uIHlldC4gKi8KKyAgICAgICAgICAgIGRhdGEtPnN0YXRlID0gWFNQ TElDRV9TVEFURV9BUFBMSUVEOworICAgICAgICAgICAgZGF0YS0+cmMgPSAwOworICAgICAgICB9 CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBYU1BMSUNFX0FDVElPTl9SRVBMQUNFOgorICAg ICAgICBpZiAoIGRhdGEtPnN0YXRlID09IFhTUExJQ0VfU1RBVEVfQ0hFQ0tFRCApCisgICAgICAg IHsKKyAgICAgICAgICAgIC8qIE5vIGltcGxlbWVudGF0aW9uIHlldC4gKi8KKyAgICAgICAgICAg IGRhdGEtPnN0YXRlID0gWFNQTElDRV9TVEFURV9DSEVDS0VEOworICAgICAgICAgICAgZGF0YS0+ cmMgPSAwOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAg ICAgcmMgPSAtRU9QTk9UU1VQUDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgc3Bpbl91 bmxvY2soJnBheWxvYWRfbG9jayk7CisKKyAgICByZXR1cm4gcmM7Cit9CisKK2ludCB4c3BsaWNl X29wKHhlbl9zeXNjdGxfeHNwbGljZV9vcF90ICp4c3BsaWNlKQoreworICAgIGludCByYzsKKwor ICAgIGlmICggeHNwbGljZS0+cGFkICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICBz d2l0Y2ggKCB4c3BsaWNlLT5jbWQgKQorICAgIHsKKyAgICBjYXNlIFhFTl9TWVNDVExfWFNQTElD RV9VUExPQUQ6CisgICAgICAgIHJjID0geHNwbGljZV91cGxvYWQoJnhzcGxpY2UtPnUudXBsb2Fk KTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFhFTl9TWVNDVExfWFNQTElDRV9HRVQ6Cisg ICAgICAgIHJjID0geHNwbGljZV9nZXQoJnhzcGxpY2UtPnUuZ2V0KTsKKyAgICAgICAgYnJlYWs7 CisKKyAgICBjYXNlIFhFTl9TWVNDVExfWFNQTElDRV9MSVNUOgorICAgICAgICByYyA9IHhzcGxp Y2VfbGlzdCgmeHNwbGljZS0+dS5saXN0KTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFhF Tl9TWVNDVExfWFNQTElDRV9BQ1RJT046CisgICAgICAgIHJjID0geHNwbGljZV9hY3Rpb24oJnhz cGxpY2UtPnUuYWN0aW9uKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAg ICByYyA9IC1FT1BOT1RTVVBQOworICAgICAgICBicmVhazsKKyAgIH0KKworICAgIHJldHVybiBy YzsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKnN0YXRlMnN0cih1aW50MzJfdCBzdGF0ZSkKK3sK KyNkZWZpbmUgU1RBVEUoeCkgW1hTUExJQ0VfU1RBVEVfIyN4XSA9ICN4CisgICAgc3RhdGljIGNv bnN0IGNoYXIgKmNvbnN0IG5hbWVzW10gPSB7CisgICAgICAgICAgICBTVEFURShDSEVDS0VEKSwK KyAgICAgICAgICAgIFNUQVRFKEFQUExJRUQpLAorICAgIH07CisjdW5kZWYgU1RBVEUKKworICAg IGlmIChzdGF0ZSA+PSBBUlJBWV9TSVpFKG5hbWVzKSB8fCAhbmFtZXNbc3RhdGVdKQorICAgICAg ICByZXR1cm4gInVua25vd24iOworCisgICAgcmV0dXJuIG5hbWVzW3N0YXRlXTsKK30KKworc3Rh dGljIHZvaWQgeHNwbGljZV9wcmludGFsbCh1bnNpZ25lZCBjaGFyIGtleSkKK3sKKyAgICBzdHJ1 Y3QgcGF5bG9hZCAqZGF0YTsKKworICAgIHByaW50aygiJyV1JyBwcmVzc2VkIC0gRHVtcGluZyBh bGwgeHNwbGljZSBwYXRjaGVzXG4iLCBrZXkpOworCisgICAgaWYgKCAhc3Bpbl90cnlsb2NrKCZw YXlsb2FkX2xvY2spICkKKyAgICB7CisgICAgICAgIHByaW50aygiTG9jayBoZWxkLiBUcnkgYWdh aW4uXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGxpc3RfZm9yX2VhY2hfZW50 cnkgKCBkYXRhLCAmcGF5bG9hZF9saXN0LCBsaXN0ICkKKyAgICAgICAgcHJpbnRrKCIgbmFtZT0l cyBzdGF0ZT0lcyglZClcbiIsIGRhdGEtPm5hbWUsCisgICAgICAgICAgICAgICBzdGF0ZTJzdHIo ZGF0YS0+c3RhdGUpLCBkYXRhLT5zdGF0ZSk7CisKKyAgICBzcGluX3VubG9jaygmcGF5bG9hZF9s b2NrKTsKK30KKworc3RhdGljIGludCBfX2luaXQgeHNwbGljZV9pbml0KHZvaWQpCit7CisgICAg cmVnaXN0ZXJfa2V5aGFuZGxlcigneCcsIHhzcGxpY2VfcHJpbnRhbGwsICJwcmludCB4c3BsaWNp bmcgaW5mbyIsIDEpOworICAgIHJldHVybiAwOworfQorX19pbml0Y2FsbCh4c3BsaWNlX2luaXQp OworCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxl OiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50 LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1 YmxpYy9zeXNjdGwuaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaAppbmRleCA0NTk2ZDIw Li4wOTBmZDIxIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3RsLmgKKysrIGIv eGVuL2luY2x1ZGUvcHVibGljL3N5c2N0bC5oCkBAIC04MTIsNiArODEyLDE3MCBAQCBzdHJ1Y3Qg eGVuX3N5c2N0bF9jcHVfZmVhdHVyZXNldCB7CiB0eXBlZGVmIHN0cnVjdCB4ZW5fc3lzY3RsX2Zl YXR1cmVzZXQgeGVuX3N5c2N0bF9mZWF0dXJlc2V0X3Q7CiBERUZJTkVfWEVOX0dVRVNUX0hBTkRM RSh4ZW5fc3lzY3RsX2ZlYXR1cmVzZXRfdCk7CiAKKy8qCisgKiBYRU5fU1lTQ1RMX1hTUExJQ0Vf b3AKKyAqCisgKiBSZWZlciB0byB0aGUgZG9jcy91bnN0YWJsZS9taXNjL3hzcGxpY2UubWFya2Rv d24KKyAqIGZvciB0aGUgZGVzaWduIGRldGFpbHMgb2YgdGhpcyBoeXBlcmNhbGwuCisgKgorICog VGhlcmUgYXJlIGZvdXIgc3ViLW9wczoKKyAqICBYRU5fU1lTQ1RMX1hTUExJQ0VfVVBMT0FEICgw KQorICogIFhFTl9TWVNDVExfWFNQTElDRV9HRVQgKDEpCisgKiAgWEVOX1NZU0NUTF9YU1BMSUNF X0xJU1QgKDIpCisgKiAgWEVOX1NZU0NUTF9YU1BMSUNFX0FDVElPTiAoMykKKyAqCisgKiBUaGUg bm9ybWFsIHNlcXVlbmNlIG9mIHN1Yi1vcHMgaXMgdG86CisgKiAgMSkgWEVOX1NZU0NUTF9YU1BM SUNFX1VQTE9BRCB0byB1cGxvYWQgdGhlIHBheWxvYWQuIElmIGVycm9ycyBTVE9QLgorICogIDIp IFhFTl9TWVNDVExfWFNQTElDRV9HRVQgdG8gY2hlY2sgdGhlIGAtPnJjYC4gSWYgLVhFTl9FQUdB SU4gc3Bpbi4KKyAqICAgICBJZiB6ZXJvIGdvIHRvIG5leHQgc3RlcC4KKyAqICAzKSBYRU5fU1lT Q1RMX1hTUExJQ0VfQUNUSU9OIHdpdGggWFNQTElDRV9BQ1RJT05fQVBQTFkgdG8gYXBwbHkgdGhl IHBhdGNoLgorICogIDQpIFhFTl9TWVNDVExfWFNQTElDRV9HRVQgdG8gY2hlY2sgdGhlIGAtPnJj YC4gSWYgaW4gLVhFTl9FQUdBSU4gc3Bpbi4KKyAqICAgICBJZiB6ZXJvIGV4aXQgd2l0aCBzdWNj ZXNzLgorICovCisKKy8qCisgKiBTdHJ1Y3R1cmUgZGVzY3JpYmluZyBhbiBFTEYgcGF5bG9hZC4g VW5pcXVlbHkgaWRlbnRpZmllcyB0aGUKKyAqIHBheWxvYWQuIFNob3VsZCBiZSBodW1hbiByZWFk YWJsZS4KKyAqIFJlY29tbWVuZGVkIGxlbmd0aCBpcyB1cHRvIFhFTl9YU1BMSUNFX05BTUVfU0la RS4KKyAqIEluY2x1ZGVzIHRoZSBOVUwgdGVybWluYXRvci4KKyAqLworI2RlZmluZSBYRU5fWFNQ TElDRV9OQU1FX1NJWkUgMTI4CitzdHJ1Y3QgeGVuX3hzcGxpY2VfbmFtZSB7CisgICAgWEVOX0dV RVNUX0hBTkRMRV82NChjaGFyKSBuYW1lOyAgICAgICAgIC8qIElOOiBwb2ludGVyIHRvIG5hbWUu ICovCisgICAgdWludDE2X3Qgc2l6ZTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElOOiBz aXplIG9mIG5hbWUuIE1heSBiZSB1cHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFhFTl9YU1BMSUNFX05BTUVfU0laRS4gKi8KKyAgICB1aW50MTZfdCBw YWRbM107ICAgICAgICAgICAgICAgICAgICAgICAgLyogSU46IE1VU1QgYmUgemVyby4gKi8KK307 Cit0eXBlZGVmIHN0cnVjdCB4ZW5feHNwbGljZV9uYW1lIHhlbl94c3BsaWNlX25hbWVfdDsKK0RF RklORV9YRU5fR1VFU1RfSEFORExFKHhlbl94c3BsaWNlX25hbWVfdCk7CisKKy8qCisgKiBVcGxv YWQgYSBwYXlsb2FkIHRvIHRoZSBoeXBlcnZpc29yLiBUaGUgcGF5bG9hZCBpcyB2ZXJpZmllZAor ICogYWdhaW5zdCBiYXNpYyBjaGVja3MgYW5kIGlmIHRoZXJlIGFyZSBhbnkgaXNzdWVzIHRoZSBw cm9wZXIgcmV0dXJuIGNvZGUKKyAqIHdpbGwgYmUgcmV0dXJuZWQuIFRoZSBwYXlsb2FkIGlzIG5v dCBhcHBsaWVkIGF0IHRoaXMgdGltZSAtIHRoYXQgaXMKKyAqIGNvbnRyb2xsZWQgYnkgWEVOX1NZ U0NUTF9YU1BMSUNFX0FDVElPTi4KKyAqCisgKiBUaGUgcmV0dXJuIHZhbHVlIGlzIHplcm8gaWYg dGhlIHBheWxvYWQgd2FzIHN1Y2Nlc2Z1bGx5IHVwbG9hZGVkLgorICogT3RoZXJ3aXNlIGFuIEVY WCByZXR1cm4gdmFsdWUgaXMgcHJvdmlkZWQuIER1cGxpY2F0ZSBgbmFtZWAgYXJlIG5vdAorICog c3VwcG9ydGVkLgorICoKKyAqIFRoZSBwYXlsb2FkIGF0IHRoaXMgcG9pbnQgaXMgdmVyaWZpZWQg YWdhaW5zdCBiYXNpYyBjaGVja3MuCisgKgorICogVGhlIGBwYXlsb2FkYCBpcyB0aGUgRUxGIHBh eWxvYWQgYXMgbWVudGlvbmVkIGluIHRoZSBgUGF5bG9hZCBmb3JtYXRgCisgKiBzZWN0aW9uIGlu IHRoZSB4U3BsaWNlIGRlc2lnbiBkb2N1bWVudC4KKyAqLworI2RlZmluZSBYRU5fU1lTQ1RMX1hT UExJQ0VfVVBMT0FEIDAKK3N0cnVjdCB4ZW5fc3lzY3RsX3hzcGxpY2VfdXBsb2FkIHsKKyAgICB4 ZW5feHNwbGljZV9uYW1lX3QgbmFtZTsgICAgICAgICAgICAgICAgLyogSU4sIG5hbWUgb2YgdGhl IHBhdGNoLiAqLworICAgIHVpbnQ2NF90IHNpemU7ICAgICAgICAgICAgICAgICAgICAgICAgICAv KiBJTiwgc2l6ZSBvZiB0aGUgRUxGIGZpbGUuICovCisgICAgWEVOX0dVRVNUX0hBTkRMRV82NCh1 aW50OCkgcGF5bG9hZDsgICAgIC8qIElOLCB0aGUgRUxGIGZpbGUuICovCit9OwordHlwZWRlZiBz dHJ1Y3QgeGVuX3N5c2N0bF94c3BsaWNlX3VwbG9hZCB4ZW5fc3lzY3RsX3hzcGxpY2VfdXBsb2Fk X3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fc3lzY3RsX3hzcGxpY2VfdXBsb2FkX3Qp OworCisvKgorICogUmV0cmlldmUgYW4gc3RhdHVzIG9mIGFuIHNwZWNpZmljIHBheWxvYWQuCisg KgorICogVXBvbiBjb21wbGV0aW9uIHRoZSBgc3RydWN0IHhlbl94c3BsaWNlX3N0YXR1c2AgaXMg dXBkYXRlZC4KKyAqCisgKiBUaGUgcmV0dXJuIHZhbHVlIGlzIHplcm8gb24gc3VjY2VzcyBhbmQg WEVOX0VYWCBvbiBmYWlsdXJlLiBUaGlzIG9wZXJhdGlvbgorICogaXMgc3luY2hyb25vdXMgYW5k IGRvZXMgbm90IHJlcXVpcmUgcHJlZW1wdGlvbi4KKyAqLworI2RlZmluZSBYRU5fU1lTQ1RMX1hT UExJQ0VfR0VUIDEKKworc3RydWN0IHhlbl94c3BsaWNlX3N0YXR1cyB7CisjZGVmaW5lIFhTUExJ Q0VfU1RBVEVfQ0hFQ0tFRCAgICAgIDEKKyNkZWZpbmUgWFNQTElDRV9TVEFURV9BUFBMSUVEICAg ICAgMgorICAgIHVpbnQzMl90IHN0YXRlOyAgICAgICAgICAgICAgICAvKiBPVVQ6IFhTUExJQ0Vf U1RBVEVfKi4gKi8KKyAgICBpbnQzMl90IHJjOyAgICAgICAgICAgICAgICAgICAgLyogT1VUOiAw IGlmIG5vIGVycm9yLCBvdGhlcndpc2UgLVhFTl9FWFguICovCit9OwordHlwZWRlZiBzdHJ1Y3Qg eGVuX3hzcGxpY2Vfc3RhdHVzIHhlbl94c3BsaWNlX3N0YXR1c190OworREVGSU5FX1hFTl9HVUVT VF9IQU5ETEUoeGVuX3hzcGxpY2Vfc3RhdHVzX3QpOworCitzdHJ1Y3QgeGVuX3N5c2N0bF94c3Bs aWNlX2dldCB7CisgICAgeGVuX3hzcGxpY2VfbmFtZV90IG5hbWU7ICAgICAgICAgICAgICAgIC8q IElOLCBuYW1lIG9mIHRoZSBwYXlsb2FkLiAqLworICAgIHhlbl94c3BsaWNlX3N0YXR1c190IHN0 YXR1czsgICAgICAgICAgICAvKiBJTi9PVVQsIHN0YXRlIG9mIGl0LiAqLworfTsKK3R5cGVkZWYg c3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV9nZXQgeGVuX3N5c2N0bF94c3BsaWNlX2dldF90Owor REVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX3N5c2N0bF94c3BsaWNlX2dldF90KTsKKworLyoK KyAqIFJldHJpZXZlIGFuIGFycmF5IG9mIGFiYnJldmlhdGVkIHN0YXR1cyBhbmQgbmFtZXMgb2Yg cGF5bG9hZHMgdGhhdCBhcmUKKyAqIGxvYWRlZCBpbiB0aGUgaHlwZXJ2aXNvci4KKyAqCisgKiBJ ZiB0aGUgaHlwZXJjYWxsIHJldHVybnMgYW4gcG9zaXRpdmUgbnVtYmVyLCBpdCBpcyB0aGUgbnVt YmVyICh1cCB0byBgbnJgKQorICogb2YgdGhlIHBheWxvYWRzIHJldHVybmVkLCBhbG9uZyB3aXRo IGBucmAgdXBkYXRlZCB3aXRoIHRoZSBudW1iZXIgb2YgcmVtYWluaW5nCisgKiBwYXlsb2Fkcywg YHZlcnNpb25gIHVwZGF0ZWQgKGl0IG1heSBiZSB0aGUgc2FtZSBhY3Jvc3MgaHlwZXJjYWxscy4g SWYgaXQKKyAqIHZhcmllcyB0aGUgZGF0YSBpcyBzdGFsZSBhbmQgZnVydGhlciBjYWxscyBjb3Vs ZCBmYWlsKS4gVGhlIGBzdGF0dXNgLAorICogYG5hbWVgLCBhbmQgYGxlbmAnIGFyZSB1cGRhdGVk IGF0IHRoZWlyIGRlc2lnbmVkIGluZGV4IHZhbHVlIChgaWR4YCkgd2l0aAorICogdGhlIHJldHVy bmVkIHZhbHVlIG9mIGRhdGEuCisgKgorICogSWYgdGhlIGh5cGVyY2FsbCByZXR1cm5zIEUyQklH IHRoZSBgbnJgIGlzIHRvbyBiaWcgYW5kIHNob3VsZCBiZQorICogbG93ZXJlZC4gVGhlIHVwcGVy IGxpbWl0IG9mIGBucmAgaXMgbGVmdCB0byB0aGUgaW1wbGVtZW50aW9uLgorICoKKyAqIE5vdGUg dGhhdCBkdWUgdG8gdGhlIGFzeW5jaHJvbm91cyBuYXR1cmUgb2YgaHlwZXJjYWxscyB0aGUgZG9t YWluIG1pZ2h0IGhhdmUKKyAqIGFkZGVkIG9yIHJlbW92ZWQgdGhlIG51bWJlciBvZiBwYXlsb2Fk cyBtYWtpbmcgdGhpcyBpbmZvcm1hdGlvbiBzdGFsZS4gSXQgaXMKKyAqIHRoZSByZXNwb25zaWJp bGl0eSBvZiB0aGUgdG9vbHN0YWNrIHRvIHVzZSB0aGUgYHZlcnNpb25gIGZpZWxkIHRvIGNoZWNr CisgKiBiZXR3ZWVuIGVhY2ggaW52b2NhdGlvbi4gaWYgdGhlIHZlcnNpb24gZGlmZmVycyBpdCBz aG91bGQgZGlzY2FyZCB0aGUgc3RhbGUKKyAqIGRhdGEgYW5kIHN0YXJ0IGZyb20gc2NyYXRjaC4g SXQgaXMgT0sgZm9yIHRoZSB0b29sc3RhY2sgdG8gdXNlIHRoZSBuZXcKKyAqIGB2ZXJzaW9uYCBm aWVsZC4KKyAqLworI2RlZmluZSBYRU5fU1lTQ1RMX1hTUExJQ0VfTElTVCAyCitzdHJ1Y3QgeGVu X3N5c2N0bF94c3BsaWNlX2xpc3QgeworICAgIHVpbnQzMl90IHZlcnNpb247ICAgICAgICAgICAg ICAgICAgICAgICAvKiBPVVQ6IEh5cGVydmlzb3Igc3RhbXBzIHZhbHVlLgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB2YXJpZXMgYmV0d2VlbiBjYWxs cywgd2UgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq IGdldHRpbmcgc3RhbGUgZGF0YS4gKi8KKyAgICB1aW50MzJfdCBpZHg7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgLyogSU46IEluZGV4IGludG8gaHlwZXJ2aXNvciBsaXN0LiAqLworICAgIHVp bnQzMl90IG5yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTjogSG93IG1hbnkgc3Rh dHVzLCBuYW1lLCBhbmQgbGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNob3VsZCBmaWxsIG91dC4gQ2FuIGJlIHplcm8gdG8gZ2V0CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudCBvZiBwYXlsb2FkcyBh bmQgdmVyc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgT1VUOiBIb3cgbWFueSBwYXlsb2FkcyBsZWZ0LiAqLworICAgIHVpbnQzMl90IHBhZDsgICAg ICAgICAgICAgICAgICAgICAgICAgICAvKiBJTjogTXVzdCBiZSB6ZXJvLiAqLworICAgIFhFTl9H VUVTVF9IQU5ETEVfNjQoeGVuX3hzcGxpY2Vfc3RhdHVzX3QpIHN0YXR1czsgIC8qIE9VVC4gTXVz dCBoYXZlIGVub3VnaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzcGFjZSBhbGxvY2F0ZSBmb3IgbnIgb2YgdGhlbS4gKi8KKyAgICBYRU5fR1VFU1RfSEFO RExFXzY0KGNoYXIpIG5hbWU7ICAgICAgICAgLyogT1VUOiBBcnJheSBvZiBuYW1lcy4gRWFjaCBt ZW1iZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVVT VCBYRU5fWFNQTElDRV9OQU1FX1NJWkUgaW4gc2l6ZS4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTXVzdCBoYXZlIG5yIG9mIHRoZW0uICovCisgICAgWEVO X0dVRVNUX0hBTkRMRV82NCh1aW50MzIpIGxlbjsgICAgICAgIC8qIE9VVDogQXJyYXkgb2YgbGVu Z3RocyBvZiBuYW1lJ3MuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE11c3QgaGF2ZSBuciBvZiB0aGVtLiAqLworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9z eXNjdGxfeHNwbGljZV9saXN0IHhlbl9zeXNjdGxfeHNwbGljZV9saXN0X3Q7CitERUZJTkVfWEVO X0dVRVNUX0hBTkRMRSh4ZW5fc3lzY3RsX3hzcGxpY2VfbGlzdF90KTsKKworLyoKKyAqIFBlcmZv cm0gYW4gb3BlcmF0aW9uIG9uIHRoZSBwYXlsb2FkIHN0cnVjdHVyZSByZWZlcmVuY2VkIGJ5IHRo ZSBgbmFtZWAgZmllbGQuCisgKiBUaGUgb3BlcmF0aW9uIHJlcXVlc3QgaXMgYXN5bmNocm9ub3Vz IGFuZCB0aGUgc3RhdHVzIHNob3VsZCBiZSByZXRyaWV2ZWQKKyAqIGJ5IHVzaW5nIGVpdGhlciBY RU5fU1lTQ1RMX1hTUExJQ0VfR0VUIG9yIFhFTl9TWVNDVExfWFNQTElDRV9MSVNUIGh5cGVyY2Fs bC4KKyAqLworI2RlZmluZSBYRU5fU1lTQ1RMX1hTUExJQ0VfQUNUSU9OIDMKK3N0cnVjdCB4ZW5f c3lzY3RsX3hzcGxpY2VfYWN0aW9uIHsKKyAgICB4ZW5feHNwbGljZV9uYW1lX3QgbmFtZTsgICAg ICAgICAgICAgICAgLyogSU4sIG5hbWUgb2YgdGhlIHBhdGNoLiAqLworI2RlZmluZSBYU1BMSUNF X0FDVElPTl9DSEVDSyAgICAgICAgMQorI2RlZmluZSBYU1BMSUNFX0FDVElPTl9VTkxPQUQgICAg ICAgMgorI2RlZmluZSBYU1BMSUNFX0FDVElPTl9SRVZFUlQgICAgICAgMworI2RlZmluZSBYU1BM SUNFX0FDVElPTl9BUFBMWSAgICAgICAgNAorI2RlZmluZSBYU1BMSUNFX0FDVElPTl9SRVBMQUNF ICAgICAgNQorICAgIHVpbnQzMl90IGNtZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJ TjogWFNQTElDRV9BQ1RJT05fKi4gKi8KKyAgICB1aW50MzJfdCB0aW1lb3V0OyAgICAgICAgICAg ICAgICAgICAgICAgLyogSU46IFplcm8gaWYgbm8gdGltZW91dC4gKi8KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogT3IgdXBwZXIgYm91bmQgb2YgdGltZSAo bXMpICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZv ciBvcGVyYXRpb24gdG8gdGFrZS4gKi8KK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5fc3lzY3RsX3hz cGxpY2VfYWN0aW9uIHhlbl9zeXNjdGxfeHNwbGljZV9hY3Rpb25fdDsKK0RFRklORV9YRU5fR1VF U1RfSEFORExFKHhlbl9zeXNjdGxfeHNwbGljZV9hY3Rpb25fdCk7CisKK3N0cnVjdCB4ZW5fc3lz Y3RsX3hzcGxpY2Vfb3AgeworICAgIHVpbnQzMl90IGNtZDsgICAgICAgICAgICAgICAgICAgICAg ICAgICAvKiBJTjogWEVOX1NZU0NUTF9YU1BMSUNFXyouICovCisgICAgdWludDMyX3QgcGFkOyAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElOOiBBbHdheXMgemVyby4gKi8KKyAgICB1bmlv biB7CisgICAgICAgIHhlbl9zeXNjdGxfeHNwbGljZV91cGxvYWRfdCB1cGxvYWQ7CisgICAgICAg IHhlbl9zeXNjdGxfeHNwbGljZV9saXN0X3QgbGlzdDsKKyAgICAgICAgeGVuX3N5c2N0bF94c3Bs aWNlX2dldF90IGdldDsKKyAgICAgICAgeGVuX3N5c2N0bF94c3BsaWNlX2FjdGlvbl90IGFjdGlv bjsKKyAgICB9IHU7Cit9OwordHlwZWRlZiBzdHJ1Y3QgeGVuX3N5c2N0bF94c3BsaWNlX29wIHhl bl9zeXNjdGxfeHNwbGljZV9vcF90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX3N5c2N0 bF94c3BsaWNlX29wX3QpOworCiBzdHJ1Y3QgeGVuX3N5c2N0bCB7CiAgICAgdWludDMyX3QgY21k OwogI2RlZmluZSBYRU5fU1lTQ1RMX3JlYWRjb25zb2xlICAgICAgICAgICAgICAgICAgICAxCkBA IC04MzksNiArMTAwMyw3IEBAIHN0cnVjdCB4ZW5fc3lzY3RsIHsKICNkZWZpbmUgWEVOX1NZU0NU TF90bWVtX29wICAgICAgICAgICAgICAgICAgICAgICAyNAogI2RlZmluZSBYRU5fU1lTQ1RMX2dl dF9jcHVfbGV2ZWxsaW5nX2NhcHMgICAgICAgIDI1CiAjZGVmaW5lIFhFTl9TWVNDVExfZ2V0X2Nw dV9mZWF0dXJlc2V0ICAgICAgICAgICAgMjYKKyNkZWZpbmUgWEVOX1NZU0NUTF94c3BsaWNlX29w ICAgICAgICAgICAgICAgICAgICAyNwogICAgIHVpbnQzMl90IGludGVyZmFjZV92ZXJzaW9uOyAv KiBYRU5fU1lTQ1RMX0lOVEVSRkFDRV9WRVJTSU9OICovCiAgICAgdW5pb24gewogICAgICAgICBz dHJ1Y3QgeGVuX3N5c2N0bF9yZWFkY29uc29sZSAgICAgICByZWFkY29uc29sZTsKQEAgLTg2Niw2 ICsxMDMxLDcgQEAgc3RydWN0IHhlbl9zeXNjdGwgewogICAgICAgICBzdHJ1Y3QgeGVuX3N5c2N0 bF90bWVtX29wICAgICAgICAgICB0bWVtX29wOwogICAgICAgICBzdHJ1Y3QgeGVuX3N5c2N0bF9j cHVfbGV2ZWxsaW5nX2NhcHMgY3B1X2xldmVsbGluZ19jYXBzOwogICAgICAgICBzdHJ1Y3QgeGVu X3N5c2N0bF9jcHVfZmVhdHVyZXNldCAgICBjcHVfZmVhdHVyZXNldDsKKyAgICAgICAgc3RydWN0 IHhlbl9zeXNjdGxfeHNwbGljZV9vcCAgICAgICAgeHNwbGljZTsKICAgICAgICAgdWludDhfdCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkWzEyOF07CiAgICAgfSB1OwogfTsKZGlmZiAt LWdpdCBhL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlLmggYi94ZW4vaW5jbHVkZS94ZW4veHNwbGlj ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5ZjA4Y2QKLS0tIC9kZXYv bnVsbAorKysgYi94ZW4vaW5jbHVkZS94ZW4veHNwbGljZS5oCkBAIC0wLDAgKzEsMzUgQEAKKy8q CisgKiBDb3B5cmlnaHQgKGMpIDIwMTYgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxs IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKi8KKworI2lmbmRlZiBfX1hFTl9YU1BMSUNFX0hfXwor I2RlZmluZSBfX1hFTl9YU1BMSUNFX0hfXworCitzdHJ1Y3QgeGVuX3N5c2N0bF94c3BsaWNlX29w OworCisjaWZkZWYgQ09ORklHX1hTUExJQ0UKKworaW50IHhzcGxpY2Vfb3Aoc3RydWN0IHhlbl9z eXNjdGxfeHNwbGljZV9vcCAqKTsKKworI2Vsc2UKKworI2luY2x1ZGUgPHhlbi9lcnJuby5oPiAv KiBGb3IgLUVOT1NZUyAqLworc3RhdGljIGlubGluZSBpbnQgeHNwbGljZV9vcChzdHJ1Y3QgeGVu X3N5c2N0bF94c3BsaWNlX29wICpvcCkKK3sKKyAgICByZXR1cm4gLUVOT1NZUzsKK30KKworI2Vu ZGlmIC8qIENPTkZJR19YU1BMSUNFICovCisKKyNlbmRpZiAvKiBfX1hFTl9YU1BMSUNFX0hfXyAq LworCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxl OiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50 LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3hlbi94c20vZmxhc2sv aG9va3MuYyBiL3hlbi94c20vZmxhc2svaG9va3MuYwppbmRleCA2Mjk1NzY4Li5jMmRmNDhmIDEw MDY0NAotLS0gYS94ZW4veHNtL2ZsYXNrL2hvb2tzLmMKKysrIGIveGVuL3hzbS9mbGFzay9ob29r cy5jCkBAIC04MTQsNiArODE0LDEwIEBAIHN0YXRpYyBpbnQgZmxhc2tfc3lzY3RsKGludCBjbWQp CiAgICAgY2FzZSBYRU5fU1lTQ1RMX2dldF9jcHVfZmVhdHVyZXNldDoKICAgICAgICAgcmV0dXJu IGRvbWFpbl9oYXNfeGVuKGN1cnJlbnQtPmRvbWFpbiwgWEVOMl9fR0VUX0NQVV9GRUFUVVJFU0VU KTsKIAorICAgIGNhc2UgWEVOX1NZU0NUTF94c3BsaWNlX29wOgorICAgICAgICByZXR1cm4gYXZj X2N1cnJlbnRfaGFzX3Blcm0oU0VDSU5JVFNJRF9YRU4sIFNFQ0NMQVNTX1hFTjIsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYRU4yX19YU1BMSUNFX09QLCBOVUxMKTsKKwog ICAgIGRlZmF1bHQ6CiAgICAgICAgIHByaW50aygiZmxhc2tfc3lzY3RsOiBVbmtub3duIG9wICVk XG4iLCBjbWQpOwogICAgICAgICByZXR1cm4gLUVQRVJNOwpkaWZmIC0tZ2l0IGEveGVuL3hzbS9m bGFzay9wb2xpY3kvYWNjZXNzX3ZlY3RvcnMgYi94ZW4veHNtL2ZsYXNrL3BvbGljeS9hY2Nlc3Nf dmVjdG9ycwppbmRleCBiZGI3Yjg5Li5lOWFiMTQ5IDEwMDY0NAotLS0gYS94ZW4veHNtL2ZsYXNr L3BvbGljeS9hY2Nlc3NfdmVjdG9ycworKysgYi94ZW4veHNtL2ZsYXNrL3BvbGljeS9hY2Nlc3Nf dmVjdG9ycwpAQCAtOTcsNiArOTcsOCBAQCBjbGFzcyB4ZW4yCiAgICAgZ2V0X2NwdV9sZXZlbGxp bmdfY2FwcwogIyBYRU5fU1lTQ1RMX2dldF9jcHVfZmVhdHVyZXNldAogICAgIGdldF9jcHVfZmVh dHVyZXNldAorIyBYRU5fU1lTQ1RMX3hzcGxpY2Vfb3AKKyAgICB4c3BsaWNlX29wCiB9CiAKICMg Q2xhc3NlcyBkb21haW4gYW5kIGRvbWFpbjIgY29uc2lzdCBvZiBvcGVyYXRpb25zIHRoYXQgYSBk b21haW4gcGVyZm9ybXMgb24KLS0gCjIuNS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlz dHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK