From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v10 21/24] xsplice: Stacking build-id dependency checking. Date: Wed, 27 Apr 2016 15:27:18 -0400 Message-ID: <1461785241-4481-22-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.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1avV8e-0004ws-2K for xen-devel@lists.xenproject.org; Wed, 27 Apr 2016 19:28:44 +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: Keir Fraser , Jan Beulich , Konrad Rzeszutek Wilk List-Id: xen-devel@lists.xenproject.org V2Ugbm93IGV4cGVjdCB0aGF0IHRoZSBFTEYgcGF5bG9hZHMgYmUgYnVpbHQgd2l0aCB0aGUKLS1i dWlsZC1pZC4KCkFsc28gdGhlIC54c3BsaWNlLmRlcHMgc2VjdGlvbiBoYXMgdG8gaGF2ZSB0aGUg Y29udGVudHMKb2YgdGhlIGh5cGVydmlzb3IgKG9yIGEgcHJlY2VkaW5nIHBheWxvYWQpIGJ1aWxk LWlkLgoKV2UgYWxyZWFkeSBoYXZlIHRoZSBjb2RlIHRvIHZlcmlmeSB0aGUgRWxmX05vdGUgYnVp bGQtaWQKc28gZXhwb3J0IHBhcnRzIG9mIGl0LgoKVGhpcyBkZXBlbmRlbmN5IG1lYW5zIHRoZSBo eXBlcnZpc29yIE1VU1QgYmUgY29tcGlsZWQgd2l0aAotLWJ1aWxkLWlkIC0gc28gd2UgZ2F0ZSB0 aGUgYnVpbGQgb2YgeFNwbGljZSBvbiB0aGUgYXZhaWxhYmlsaXR5Cm9mIHNhaWQgZnVuY3Rpb25h bGl0eS4KClRoaXMgZG9lcyBub3QgaW1wYWN0IHRoZSBvcmRlcmluZyBvZiBob3cgdGhlIHBheWxv YWRzIGNhbgpiZSBsb2FkZWQsIGJ1dCBpdCBkb2VzIGVuZm9yY2UgYW4gU1RSSUNUIG9yZGVyaW5n IHdoZW4gdGhlCnBheWxvYWRzIGFyZSBhcHBsaWVkLiBBbHNvIHRoZSBSRVBMQUNFIGlzIHNwZWNp YWwgLSB3ZSBuZWVkCnRvIGNoZWNrIHRoYXQgaXRzIGRlcGVuZGVuY3kgYWdhaW5zdCB0aGUgaHlw ZXJ2aXNvciAtIG5vdAp0aGUgbGFzdCBhcHBsaWVkIHBhdGNoLgoKVG8gbWFrZSB0aGlzIGVhc2ll ciB0byB0ZXN0IHdlIGFsc28gYWRkIGFuIGV4dHJhIHRlc3QtY2FzZQp0byBiZSB1c2VkIC0gd2hp Y2ggY2FuIG9ubHkgYmUgYXBwbGllZCBvbiB0b3Agb2YgdGhlCnhlbl9oZWxsb193b3JsZCBwYXls b2FkLgoKQXMgaW4sIG9uZSBjYW4gYXBwbHkgeGVuX2hlbGxvX3dvcmxkIGFuZCB0aGVuIHhlbl9i eWVfd29ybGQKb24gdG9wIG9mIHRoYXQuIE5vdCB0aGUgb3RoZXIgd2F5LgoKV2UgYWxzbyBwcmlu dCB0aGUgZGVwZW5kZW5jeSBhbmQgcGF5bG9hZHMgYnVpbGRfaW4gdGhlIGtleWhhbmRsZXIuCgpT aWduZWQtb2ZmLWJ5OiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5j b20+CgotLS0KQ2M6IEtlaXIgRnJhc2VyIDxrZWlyQHhlbi5vcmc+CkNjOiBKYW4gQmV1bGljaCA8 amJldWxpY2hAc3VzZS5jb20+CkNjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRy aXguY29tPgoKdjM6IEZpcnN0IHRpbWUgaW5jbHVkZWQuCnY0OiBBbmRyZXcgZml4IGFnYWluc3Qg dGhlIGJ1aWxkX2lkLm8gbXV0aWxhdGlvbnMuCiAgICBBbmRyZXcgZml4IHRvIG5vdCBpbmNsdWRl IGV4dHJhIHN5bWJvbHMgaW4gYmluYXJ5LmlkCnY1OiBzL3NzaXplX3QvdW5zaWduZWQgaW50Lwp2 Njogcy9hbiBOVF9HTlUuLi9hIE5UX0dOVS8KICAgLSBTcXVhc2ggInhzcGxpY2U6IFByaW50IGRl cGVuZGVuY3kgYW5kIHBheWxvYWRzIGJ1aWxkX2lkIGluIHRoZSBrZXloYW5kbGVyIgogICAgIGlu IHRoaXMgcGF0Y2guCiAgIC0gQWRkIGluIHhlbl9idWlsZF9pZF9jaGVjayBzaXplIG9mIHNlY3Rp b24gZm9yIGJldHRlciBjaGVja2luZy4Kdjc6IEFkZGVkIEFuZHJldydzIHJldmlld2VkLWJ5Lgog ICAgQ2hhbmdlIHRoZSAubmFtZSBpbiB0ZXN0LWNhc2UgdG8gYWRoZXJlIHRvIHNwZWMuCiAgICBE cm9wcGVkIE5UX0dOVV9CVUlMRF9JRCBhbmQgbW92ZWQgdGhhdCB0byBlYXJsaWVyIHBhdGNoCiAg ICAoYnVpbGRfaWQ6IFByb3ZpZGUgbGQtZW1iZWRkZWQgYnVpbGQtaWRzKQogICAgQW1lbmRlZCBz cGVjIGFuZCBjb2RlIHRvIG9ubHkgaGF2ZSBvbmUgb2YgLnhzcGxpY2UuZGVwZW5kcyBhbmQKICAg IC5ub3RlLmdudS5idWlsZC1pZAogICAgRXhwYW5kZWQgY29tbWVudCBhYm91dCBub3RlLm8gYW5k IHdoeSB3ZSBkb24ndCB1c2UgYXJjaC94ODYvbm90ZS5vLmJpbgogICAgTW92ZWQgeGVuX2J1aWxk X2lkX2NoZWNrIGRlZmluaXRpb24gdG8geHNwbGljZS5oIGZyb20gdmVyc2lvbi5oCiAgICAoYW5k IGRyb3BwaW5nIHRoZSAjaW5jbHVkZSdzIGluIHZlcnNpb24uaCkKICAgIFNvcnQgaGVhZGVyIGZp bGVzIGluIHRlc3RzLgp2ODoKIC0gQ2hhbmdlIHR3byBvZiB0aGUgZHByaW5rdCBmcm9tIFhFTkxP R19ERUJVRyB0byBYRU5MT0dfRVJSCnY5OgogLSBEcm9wcGVkIHRoZSAodW5zaWduZWQgbG9uZykg Y2FzdHMgc2luY2Ugd2UgdXNlIHZvaWQuCiAtIE1ha2UgdGhlIC54c3BsaWNlX2RlcGVuZHMgYW5k IC5ub3RlLmdudV9idWlsZF9pZCBiZSAjZGVmaW5lcy4KIC0gTWFrZSB0aGUgYnVpbGQgc2VjdGlv biB1c2UgJChYU1BMSUNFX0JZRSkKIC0gTWFrZSB0aGUgdGVzdGNhc2UgaW5jbHVkZSA8cHVibGlj L3N5c2N0bC5oPgogLSBNYWRlIGNvbXBhcmlzb25zIG9uIGRlc2NzeiBhbmQgbmFtZXN6IGEgYml0 IGRpZmZlcmVudCAob3ZlcmZsb3cKICAgY2hlY2tzLCBhZ2FpbnN0IHZhbHVlIG9mIDQsIGFuZCBh Z2FpbnN0IHNpemUpCnYxMCAtIGlubGluZSBwYXRjaGVzIHRvIHJlc3BvbnNlIHRvIHY5OgogLSBV c2UgZmlsdGVyKCkgdG8gb25seSBsaW5rIC5vIGZpbGVzLgogLSBNYWtlIGRlcGVuZGVuY3kgZm9y IHhlbl9ieWVfd29ybGQubyBiZSBjb25maWcuaCBvbmx5CiAtIE1ha2Ugb3ZlcmZsb3cgY2hlY2sg Zm9yIG4tPm5hbWVzeiBhbmQgbi0+ZGVzY3N6IGJlIHByb3BlcgogLSBDaGVjayBuLT5uYW1lc3og YWdhaW5zdCBsZXNzIHRoYW4gNC4KIC0gQ2hhbmdlIGNoZWNrIGFnYWluc3QgaGVhZGVyIG9mIEVs Zl9Ob3RlCiAtIENhbGN1bGF0ZSBzaXplIChpbiBieXRlcykgb2YgRWxmX05vdGUgdXNpbmcgcG9p bnRlciBhcml0aG1ldGljLgogLSBEcm9wcGVkIEFuZHJldycgUmV2aWV3ZWQtYnkKLS0tCiAuZ2l0 aWdub3JlICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBDb25maWcubWsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBkb2NzL21pc2MveHNwbGljZS5tYXJr ZG93biAgICAgICAgICAgICB8ICA5OSArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCiB4ZW4v YXJjaC94ODYvdGVzdC9NYWtlZmlsZSAgICAgICAgICAgICB8ICA0NiArKysrKysrKysrKy0tCiB4 ZW4vYXJjaC94ODYvdGVzdC94ZW5fYnllX3dvcmxkLmMgICAgICB8ICAzNCArKysrKysrKysrCiB4 ZW4vYXJjaC94ODYvdGVzdC94ZW5fYnllX3dvcmxkX2Z1bmMuYyB8ICAyMiArKysrKysrCiB4ZW4v Y29tbW9uL0tjb25maWcgICAgICAgICAgICAgICAgICAgICB8ICAgNiArLQogeGVuL2NvbW1vbi92 ZXJzaW9uLmMgICAgICAgICAgICAgICAgICAgfCAgNDUgKysrKysrKysrLS0tLQogeGVuL2NvbW1v bi94c3BsaWNlLmMgICAgICAgICAgICAgICAgICAgfCAxMTcgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKystCiB4ZW4vaW5jbHVkZS94ZW4veHNwbGljZS5oICAgICAgICAgICAgICB8ICAg NCArKwogMTAgZmlsZXMgY2hhbmdlZCwgMzIzIGluc2VydGlvbnMoKyksIDUyIGRlbGV0aW9ucygt KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL3g4Ni90ZXN0L3hlbl9ieWVfd29ybGQuYwog Y3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL3g4Ni90ZXN0L3hlbl9ieWVfd29ybGRfZnVuYy5j CgpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUKaW5kZXggNGE4MWY0My4uODhj ZWMxZCAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysgYi8uZ2l0aWdub3JlCkBAIC0yNDgsNiAr MjQ4LDcgQEAgeGVuL2FyY2gveDg2L2VmaS9kaXNhYmxlZAogeGVuL2FyY2gveDg2L2VmaS9ta3Jl bG9jCiB4ZW4vYXJjaC94ODYvdGVzdC9jb25maWcuaAogeGVuL2FyY2gveDg2L3Rlc3QveGVuX2hl bGxvX3dvcmxkLnhzcGxpY2UKK3hlbi9hcmNoL3g4Ni90ZXN0L3hlbl9ieWVfd29ybGQueHNwbGlj ZQogeGVuL2FyY2gvKi9lZmkvYm9vdC5jCiB4ZW4vYXJjaC8qL2VmaS9jb21wYXQuYwogeGVuL2Fy Y2gvKi9lZmkvZWZpLmgKZGlmZiAtLWdpdCBhL0NvbmZpZy5tayBiL0NvbmZpZy5tawppbmRleCA3 NTlmM2M3Li4yM2ExYjc0IDEwMDY0NAotLS0gYS9Db25maWcubWsKKysrIGIvQ29uZmlnLm1rCkBA IC0xMzcsNiArMTM3LDcgQEAgaWZlcSAoJChjYWxsIGxkLXZlci1idWlsZC1pZCwkKExEKSksbikK IGJ1aWxkX2lkX2xpbmtlciA6PQogZWxzZQogQ0ZMQUdTICs9IC1EQlVJTERfSUQKK2V4cG9ydCBY RU5fSEFTX0JVSUxEX0lEPXkKIGJ1aWxkX2lkX2xpbmtlciA6PSAtLWJ1aWxkLWlkPXNoYTEKIGVu ZGlmCiAKZGlmZiAtLWdpdCBhL2RvY3MvbWlzYy94c3BsaWNlLm1hcmtkb3duIGIvZG9jcy9taXNj L3hzcGxpY2UubWFya2Rvd24KaW5kZXggMzVlYmMyOC4uNGE5OGJlMSAxMDA2NDQKLS0tIGEvZG9j cy9taXNjL3hzcGxpY2UubWFya2Rvd24KKysrIGIvZG9jcy9taXNjL3hzcGxpY2UubWFya2Rvd24K QEAgLTI4Myw4ICsyODMsMTcgQEAgVGhlIHhTcGxpY2UgY29yZSBjb2RlIGxvYWRzIHRoZSBwYXls b2FkIGFzIGEgc3RhbmRhcmQgRUxGIGJpbmFyeSwgcmVsb2NhdGVzIGl0CiBhbmQgaGFuZGxlcyB0 aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmMgc2VjdGlvbnMgYXMgbmVlZGVkLiBUaGlzIHByb2Nlc3Mg aXMgbXVjaAogbGlrZSB3aGF0IHRoZSBMaW51eCBrZXJuZWwgbW9kdWxlIGxvYWRlciBkb2VzLgog Ci1UaGUgcGF5bG9hZCBjb250YWlucyBhIHNlY3Rpb24gKHhzcGxpY2VfcGF0Y2hfZnVuYykgd2l0 aCBhbiBhcnJheSBvZiBzdHJ1Y3R1cmVzCi1kZXNjcmliaW5nIHRoZSBmdW5jdGlvbnMgdG8gYmUg cGF0Y2hlZDoKK1RoZSBwYXlsb2FkIGNvbnRhaW5zIGF0IGxlYXN0IHRocmVlIHNlY3Rpb25zOgor CisgKiBgLnhzcGxpY2UuZnVuY3NgIC0gd2hpY2ggaXMgYW4gYXJyYXkgb2YgeHNwbGljZV9wYXRj aF9mdW5jIHN0cnVjdHVyZXMuCisgKiBgLnhzcGxpY2UuZGVwZW5kc2AgLSB3aGljaCBpcyBhbiBF TEYgTm90ZSB0aGF0IGRlc2NyaWJlcyB3aGF0IHRoZSBwYXlsb2FkCisgICAgZGVwZW5kcyBvbi4g KipNVVNUKiogaGF2ZSBvbmUuCisgKiAgYC5ub3RlLmdudS5idWlsZC1pZGAgLSB0aGUgYnVpbGQt aWQgb2YgdGhpcyBwYXlsb2FkLiAqKk1VU1QqKiBoYXZlIG9uZS4KKworIyMjIC54c3BsaWNlLmZ1 bmNzCisKK1RoZSBgLnhzcGxpY2UuZnVuY3NgIGNvbnRhaW5zIGFuIGFycmF5IG9mIHhzcGxpY2Vf cGF0Y2hfZnVuYyBzdHJ1Y3R1cmVzCit3aGljaCBkZXNjcmliZSB0aGUgZnVuY3Rpb25zIHRvIGJl IHBhdGNoZWQ6CiAKIDxwcmU+CiBzdHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5jIHsgIApAQCAtMzY4 LDYgKzM3NywyMyBAQCBzdHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5jIHhzcGxpY2VfaGVsbG9fd29y bGQgPSB7CiAKIENvZGUgbXVzdCBiZSBjb21waWxlZCB3aXRoIC1mUElDLgogCisjIyMgLnhzcGxp Y2UuZGVwZW5kcyBhbmQgLm5vdGUuZ251LmJ1aWxkLWlkCisKK1RvIHN1cHBvcnQgZGVwZW5kZW5j aWVzIGNoZWNraW5nIGFuZCBzYWZlIGxvYWRpbmcgKHRvIGxvYWQgdGhlCithcHByb3BpYXRlIHBh eWxvYWQgYWdhaW5zdCB0aGUgcmlnaHQgaHlwZXJ2aXNvcikgdGhlcmUgaXMgYSBuZWVkCit0byBl bWJiZWQgYW4gYnVpbGQtaWQgZGVwZW5kZW5jeS4KKworVGhpcyBpcyBkb25lIGJ5IHRoZSBwYXls b2FkIGNvbnRhaW5pbmcgYW4gc2VjdGlvbiBgLnhzcGxpY2UuZGVwZW5kc2AKK3doaWNoIGZvbGxv d3MgdGhlIGZvcm1hdCBvZiBhbiBFTEYgTm90ZS4gVGhlIGNvbnRlbnRzIG9mIHRoaXMKKyhuYW1l LCBhbmQgZGVzY3JpcHRpb24pIGFyZSBzcGVjaWZpYyB0byB0aGUgbGlua2VyIHV0aWxpemVkIHRv CitidWlsZCB0aGUgaHlwZXZpc29yIGFuZCBwYXlsb2FkLgorCitJZiBHTlUgbGlua2VyIGlzIHVz ZWQgdGhlbiB0aGUgbmFtZSBpcyBgR05VYCBhbmQgdGhlIGRlc2NyaXB0aW9uCitpcyBhIE5UX0dO VV9CVUlMRF9JRCB0eXBlIElELiBUaGUgZGVzY3JpcHRpb24gY2FuIGJlIGFuIFNIQTEKK2NoZWNr c3VtLCBNRDUgY2hlY2tzdW0gb3IgYW55IHVuaXF1ZSB2YWx1ZS4KKworVGhlIHNpemUgb2YgdGhl c2Ugc3RydWN0dXJlcyB2YXJpZXMgd2l0aCB0aGUgLS1idWlsZC1pZCBsaW5rZXIgb3B0aW9uLgor CiAjIyBIeXBlcmNhbGxzCiAKIFdlIHdpbGwgZW1wbG95IHRoZSBzdWIgb3BlcmF0aW9ucyBvZiB0 aGUgc3lzdGVtIG1hbmFnZW1lbnQgaHlwZXJjYWxsIChzeXNjdGwpLgpAQCAtODUzLDYgKzg3OSw0 MiBAQCBUaGlzIGlzIGltcGxlbWVudGVkIGluIHRoZSBYZW4gUHJvamVjdCBoeXBlcnZpc29yLgog CiBPbmx5IHRoZSBwcml2aWxlZ2VkIGRvbWFpbiBzaG91bGQgYmUgYWxsb3dlZCB0byBkbyB0aGlz IG9wZXJhdGlvbi4KIAorIyMjIHhTcGxpY2UgaW50ZXJkZXBlbmRlbmNpZXMKKworeFNwbGljZSBw YXRjaGVzIGludGVyZGVwZW5kZW5jaWVzIGFyZSB0cmlja3kuCisKK1RoZXJlIGFyZSB0aGUgd2F5 cyB0aGlzIGNhbiBiZSBhZGRyZXNzZWQ6CisgKiBBIHNpbmdsZSBsYXJnZSBwYXRjaCB0aGF0IHN1 YnN1bWVzIGFuZCByZXBsYWNlcyBhbGwgcHJldmlvdXMgb25lcy4KKyAgIE92ZXIgdGhlIGxpZmUt dGltZSBvZiBwYXRjaGluZyB0aGUgaHlwZXJ2aXNvciB0aGlzIGxhcmdlIHBhdGNoCisgICBncm93 cyB0byBhY2N1bXVsYXRlIGFsbCB0aGUgY29kZSBjaGFuZ2VzLgorICogSG90cGF0Y2ggc3RhY2sg LSB3aGVyZSBhbiBtZWNoYW5pc20gZXhpc3RzIHRoYXQgbG9hZHMgdGhlIGhvdHBhdGNoZXMKKyAg IGluIHRoZSBzYW1lIG9yZGVyIHRoZXkgd2VyZSBidWlsdCBpbi4gV2Ugd291bGQgbmVlZCBhbiBi dWlsZC1pZAorICAgb2YgdGhlIGh5cGV2aXNvciB0byBtYWtlIHN1cmUgdGhlIGhvdC1wYXRjaGVz IGFyZSBidWlsZCBhZ2FpbnN0IHRoZQorICAgY29ycmVjdCBidWlsZC4KKyAqIFBheWxvYWQgY29u dGFpbmluZyB0aGUgb2xkIGNvZGUgdG8gY2hlY2sgYWdhaW5zdCB0aGF0LiBUaGF0IGFsbG93cwor ICAgdGhlIGhvdHBhdGNoZXMgdG8gYmUgbG9hZGVkIGluZGVwZWRlbnRseSAoaWYgdGhleSBkb24n dCBvdmVybGFwKSAtIG9yCisgICBpZiB0aGUgb2xkIGNvZGUgYWxzbyBjb250YWluc3QgcHJldmlv dXNseSBwYXRjaGVkIGNvZGUgLSBldmVuIGlmIHRoZXkKKyAgIG92ZXJsYXAuCisKK1RoZSBkaXNh ZHZhbnRhZ2Ugb2YgdGhlIGZpcnN0IGxhcmdlIHBhdGNoIGlzIHRoYXQgaXQgY2FuIGdyb3cgb3Zl cgordGltZSBhbmQgbm90IHByb3ZpZGUgYW4gYmlzZWN0aW9uIG1lY2hhbmlzbSB0byBpZGVudGlm eSBmYXVsdHkgcGF0Y2hlcy4KKworVGhlIGhvdC1wYXRjaCBzdGFjayBwdXRzIHN0cmljdHMgcmVx dWlyZW1lbnRzIG9uIHRoZSBvcmRlciBvZiB0aGUgcGF0Y2hlcworYmVpbmcgbG9hZGVkIGFuZCBy ZXF1aXJlcyBhbiBoeXBlcnZpc29yIGJ1aWxkLWlkIHRvIG1hdGNoIGFnYWluc3QuCisKK1RoZSBv bGQgY29kZSBhbGxvd3MgbXVjaCBtb3JlIGZsZXhpYmlsaXR5IGFuZCBhbiBhZGRpdGlvbmFsIGd1 YXJkLAorYnV0IGlzIG1vcmUgY29tcGxleCB0byBpbXBsZW1lbnQuCisKK1RoZSBzZWNvbmQgb3B0 aW9uIHdoaWNoIHJlcXVpcmVzIGFuIGJ1aWxkLWlkIG9mIHRoZSBoeXBlcnZpc29yCitpcyBpbXBs ZW1lbnRlZCBpbiB0aGUgWGVuIFByb2plY3QgaHlwZXJ2aXNvci4KKworU3BlY2lmaWNhbGx5IGVh Y2ggcGF5bG9hZCBoYXMgdHdvIGJ1aWxkLWlkIEVMRiBub3RlczoKKyAqIFRoZSBidWlsZC1pZCBv ZiB0aGUgcGF5bG9hZCBpdHNlbGYgKGdlbmVyYXRlZCB2aWEgLS1idWlsZC1pZCkuCisgKiBUaGUg YnVpbGQtaWQgb2YgdGhlIHBheWxvYWQgaXQgZGVwZW5kcyBvbiAoZXh0cmFjdGVkIGZyb20gdGhl CisgICB0aGUgcHJldmlvdXMgcGF5bG9hZCBvciBoeXBlcnZpc29yIGR1cmluZyBidWlsZCB0aW1l KS4KKworVGhpcyBtZWFucyB0aGF0IHRoZSB2ZXJ5IGZpcnN0IHBheWxvYWQgZGVwZW5kcyBvbiB0 aGUgaHlwZXJ2aXNvcgorYnVpbGQtaWQuCiAKICMgTm90IFlldCBEb25lCiAKQEAgLTg3MiwxMyAr OTM0LDYgQEAgVGhlIGltcGxlbWVudGF0aW9uIG11c3QgYWxzbyBoYXZlIGEgbWVjaGFuaXNtIGZv ciAoaW4gbm8gcGFydGljdWxhciBvcmRlcik6CiAgKiBOT1Agb3V0IHRoZSBjb2RlIHNlcXVlbmNl IGlmIGBuZXdfc2l6ZWAgaXMgemVyby4KICAqIERlYWwgd2l0aCBvdGhlciByZWxvY2F0aW9uIHR5 cGVzOiAgUl9YODZfNjRfWzgsMTYsMzIsMzJTXSwgUl9YODZfNjRfUENbOCwxNiw2NF0KICAgIGlu IHBheWxvYWQgZmlsZS4KLSAqIEFuIGRlcGVuZGVuY3kgbWVjaGFuaXNtIGZvciB0aGUgcGF5bG9h ZHMuIFRvIHVzZSB0aGF0IGluZm9ybWF0aW9uIHRvIGxvYWQ6Ci0gICAgLSBUaGUgYXBwcm9waWF0 ZSBwYXlsb2FkLiBUbyB2ZXJpZnkgdGhhdCBwYXlsb2FkIGlzIGJ1aWx0IGFnYWluc3QgdGhlCi0g ICAgICBoeXBlcnZpc29yLiBUaGlzIGNhbiBiZSBkb25lIHZpYSB0aGUgYGJ1aWxkLWlkYAotICAg ICAgb3IgdmlhIHByb3ZpZGluZyBhbiBjb3B5IG9mIHRoZSBvbGQgY29kZSAtIHNvIHRoYXQgdGhl IGh5cGVydmlzb3IgY2FuCi0gICAgICAgdmVyaWZ5IGl0IGFnYWluc3QgdGhlIGNvZGUgaW4gbWVt b3J5LgotICAgIC0gVG8gY29uc3RydWN0IGFuIGFwcHJvcGlhdGUgb3JkZXIgb2YgcGF5bG9hZHMg dG8gbG9hZCBpbiBjYXNlIHRoZXkKLSAgICAgIGRlcGVuZCBvbiBlYWNoIG90aGVyLgogCiAjIyMg SGFuZGxlIGlubGluZWQgX19MSU5FX18KIApAQCAtOTQzLDMyICs5OTgsNiBAQCB0aGUgZnVuY3Rp b24gaXRzZWxmLgogU2ltaWxhciBjb25zaWRlcmF0aW9ucyBhcmUgdHJ1ZSB0byBhIGxlc3NlciBl eHRlbnQgZm9yIF9fRklMRV9fLCBidXQgaXQKIGNvdWxkIGJlIGFyZ3VlZCB0aGF0IGZpbGUgcmVu YW1pbmcgc2hvdWxkIGJlIGRvbmUgb3V0c2lkZSBvZiBob3RwYXRjaGVzLgogCi0jIyMgeFNwbGlj ZSBpbnRlcmRlcGVuZGVuY2llcwotCi14U3BsaWNlIHBhdGNoZXMgaW50ZXJkZXBlbmRlbmNpZXMg YXJlIHRyaWNreS4KLQotVGhlcmUgYXJlIHRoZSB3YXlzIHRoaXMgY2FuIGJlIGFkZHJlc3NlZDoK LSAqIEEgc2luZ2xlIGxhcmdlIHBhdGNoIHRoYXQgc3Vic3VtZXMgYW5kIHJlcGxhY2VzIGFsbCBw cmV2aW91cyBvbmVzLgotICAgT3ZlciB0aGUgbGlmZS10aW1lIG9mIHBhdGNoaW5nIHRoZSBoeXBl cnZpc29yIHRoaXMgbGFyZ2UgcGF0Y2gKLSAgIGdyb3dzIHRvIGFjY3VtdWxhdGUgYWxsIHRoZSBj b2RlIGNoYW5nZXMuCi0gKiBIb3RwYXRjaCBzdGFjayAtIHdoZXJlIGFuIG1lY2hhbmlzbSBleGlz dHMgdGhhdCBsb2FkcyB0aGUgaG90cGF0Y2hlcwotICAgaW4gdGhlIHNhbWUgb3JkZXIgdGhleSB3 ZXJlIGJ1aWx0IGluLiBXZSB3b3VsZCBuZWVkIGFuIGJ1aWxkLWlkCi0gICBvZiB0aGUgaHlwZXZp c29yIHRvIG1ha2Ugc3VyZSB0aGUgaG90LXBhdGNoZXMgYXJlIGJ1aWxkIGFnYWluc3QgdGhlCi0g ICBjb3JyZWN0IGJ1aWxkLgotICogUGF5bG9hZCBjb250YWluaW5nIHRoZSBvbGQgY29kZSB0byBj aGVjayBhZ2FpbnN0IHRoYXQuIFRoYXQgYWxsb3dzCi0gICB0aGUgaG90cGF0Y2hlcyB0byBiZSBs b2FkZWQgaW5kZXBlZGVudGx5IChpZiB0aGV5IGRvbid0IG92ZXJsYXApIC0gb3IKLSAgIGlmIHRo ZSBvbGQgY29kZSBhbHNvIGNvbnRhaW5zdCBwcmV2aW91c2x5IHBhdGNoZWQgY29kZSAtIGV2ZW4g aWYgdGhleQotICAgb3ZlcmxhcC4KLQotVGhlIGRpc2FkdmFudGFnZSBvZiB0aGUgZmlyc3QgbGFy Z2UgcGF0Y2ggaXMgdGhhdCBpdCBjYW4gZ3JvdyBvdmVyCi10aW1lIGFuZCBub3QgcHJvdmlkZSBh biBiaXNlY3Rpb24gbWVjaGFuaXNtIHRvIGlkZW50aWZ5IGZhdWx0eSBwYXRjaGVzLgotCi1UaGUg aG90LXBhdGNoIHN0YWNrIHB1dHMgc3RyaWN0cyByZXF1aXJlbWVudHMgb24gdGhlIG9yZGVyIG9m IHRoZSBwYXRjaGVzCi1iZWluZyBsb2FkZWQgYW5kIHJlcXVpcmVzIGFuIGh5cGVydmlzb3IgYnVp bGQtaWQgdG8gbWF0Y2ggYWdhaW5zdC4KLQotVGhlIG9sZCBjb2RlIGFsbG93cyBtdWNoIG1vcmUg ZmxleGliaWxpdHkgYW5kIGFuIGFkZGl0aW9uYWwgZ3VhcmQsCi1idXQgaXMgbW9yZSBjb21wbGV4 IHRvIGltcGxlbWVudC4KLQogIyMgU2lnbmF0dXJlIGNoZWNraW5nIHJlcXVpcmVtZW50cy4KIAog VGhlIHNpZ25hdHVyZSBjaGVja2luZyByZXF1aXJlcyB0aGF0IHRoZSBsYXlvdXQgb2YgdGhlIGRh dGEgaW4gbWVtb3J5CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvdGVzdC9NYWtlZmlsZSBiL3hl bi9hcmNoL3g4Ni90ZXN0L01ha2VmaWxlCmluZGV4IDM2NDQwOGQuLjM0OWM2MDMgMTAwNjQ0Ci0t LSBhL3hlbi9hcmNoL3g4Ni90ZXN0L01ha2VmaWxlCisrKyBiL3hlbi9hcmNoL3g4Ni90ZXN0L01h a2VmaWxlCkBAIC02LDE3ICs2LDIwIEBAIENPREVfU1o9JChzaGVsbCBubSAtLWRlZmluZWQgLVMg JCgxKSB8IGdyZXAgJCgyKSB8IGF3ayAneyBwcmludCAiMHgiJCQyfScpCiAuUEhPTlk6IGRlZmF1 bHQKIAogWFNQTElDRSA6PSB4ZW5faGVsbG9fd29ybGQueHNwbGljZQorWFNQTElDRV9CWUUgOj0g eGVuX2J5ZV93b3JsZC54c3BsaWNlCiAKIGRlZmF1bHQ6IHhzcGxpY2UKIAogaW5zdGFsbDogeHNw bGljZQogCSQoSU5TVEFMTF9EQVRBKSAkKFhTUExJQ0UpICQoREVTVERJUikkKERFQlVHX0RJUikv JChYU1BMSUNFKQorCSQoSU5TVEFMTF9EQVRBKSAkKFhTUExJQ0VfQllFKSAkKERFU1RESVIpJChE RUJVR19ESVIpLyQoWFNQTElDRV9CWUUpCiB1bmluc3RhbGw6CiAJcm0gLWYgJChERVNURElSKSQo REVCVUdfRElSKS8kKFhTUExJQ0UpCisJcm0gLWYgJChERVNURElSKSQoREVCVUdfRElSKS8kKFhT UExJQ0VfQllFKQogCiAuUEhPTlk6IGNsZWFuCiBjbGVhbjo6Ci0Jcm0gLWYgKi5vIC4qLm8uZCAk KFhTUExJQ0UpIGNvbmZpZy5oCisJcm0gLWYgKi5vIC4qLm8uZCAkKFhTUExJQ0UpICQoWFNQTElD RV9CWUUpIGNvbmZpZy5oICouYmluCiAKICMKICMgVG8gY29tcHV0ZSB0aGVzZSB2YWx1ZXMgd2Ug bmVlZCB0aGUgYmluYXJ5IGZpbGVzOiB4ZW4tc3ltcwpAQCAtMzMsOCArMzYsNDMgQEAgY29uZmln Lmg6IHhlbl9oZWxsb193b3JsZF9mdW5jLm8KIHhlbl9oZWxsb193b3JsZC5vOiBjb25maWcuaAog CiAuUEhPTlk6ICQoWFNQTElDRSkKLSQoWFNQTElDRSk6IGNvbmZpZy5oIHhlbl9oZWxsb193b3Js ZF9mdW5jLm8geGVuX2hlbGxvX3dvcmxkLm8KLQkkKExEKSAkKExERkxBR1MpIC1yIC1vICQoWFNQ TElDRSkgJChmaWx0ZXIgJS5vLCReKQorJChYU1BMSUNFKTogY29uZmlnLmggeGVuX2hlbGxvX3dv cmxkX2Z1bmMubyB4ZW5faGVsbG9fd29ybGQubyBub3RlLm8KKwkkKExEKSAkKExERkxBR1MpICQo YnVpbGRfaWRfbGlua2VyKSAtciAtbyAkKFhTUExJQ0UpIFwKKwkJJChmaWx0ZXIgJS5vLCReKQor IworIyBUaGlzIHRhcmdldCBpcyBvbmx5IGFjY2Vzc2libGUgaWYgQ09ORklHX1hTUExJQ0UgaXMg ZGVmaW5lZCwgd2hpY2gKKyMgZGVwZW5kcyBvbiAkKGJ1aWxkX2lkX2xpbmtlcikgYmVpbmcgYXZh aWxhYmxlLiBIZW5jZSB3ZSBkbyBub3QKKyMgbmVlZCBhbnkgY2hlY2tzLgorIworIyBOLkIuIFRo ZSByZWFzb24gd2UgZG9uJ3QgdXNlIGFyY2gveDg2L25vdGUubyBpcyB0aGF0IGl0IG1heQorIyBu b3QgYmUgYnVpbHQgKGl0IGlzIGZvciBFRkkgYnVpbGRzKSwgYW5kIHRoYXQgd2UgZG8gbm90IGhh dmUKKyMgdGhlIG5vdGUuby5iaW4gdG8gbXVjayB3aXRoIChhcyBpdCBnZXRzIGRlbGV0ZWQpCisj CisuUEhPTlk6IG5vdGUubworbm90ZS5vOgorCSQoT0JKQ09QWSkgLU8gYmluYXJ5IC0tb25seS1z ZWN0aW9uPS5ub3RlLmdudS5idWlsZC1pZCAkKEJBU0VESVIpL3hlbi1zeW1zICRALmJpbgorCSQo T0JKQ09QWSkgLUkgYmluYXJ5IC1PIGVsZjY0LXg4Ni02NCAtQiBpMzg2Ong4Ni02NCBcCisJCSAg IC0tcmVuYW1lLXNlY3Rpb249LmRhdGE9LnhzcGxpY2UuZGVwZW5kcyAtUyAkQC5iaW4gJEAKKwly bSAtZiAkQC5iaW4KKworIworIyBFeHRyYWN0IHRoZSBidWlsZC1pZCBvZiB0aGUgeGVuX2hlbGxv X3dvcmxkLnhzcGxpY2UKKyMgKHdoaWNoIHhlbl9ieWVfd29ybGQgd2lsbCBkZXBlbmQgb24pLgor IworLlBIT05ZOiBoZWxsb193b3JsZF9ub3RlLm8KK2hlbGxvX3dvcmxkX25vdGUubzogJChYU1BM SUNFKQorCSQoT0JKQ09QWSkgLU8gYmluYXJ5IC0tb25seS1zZWN0aW9uPS5ub3RlLmdudS5idWls ZC1pZCAkKFhTUExJQ0UpICRALmJpbgorCSQoT0JKQ09QWSkgIC1JIGJpbmFyeSAtTyBlbGY2NC14 ODYtNjQgLUIgaTM4Njp4ODYtNjQgXAorCQkgICAtLXJlbmFtZS1zZWN0aW9uPS5kYXRhPS54c3Bs aWNlLmRlcGVuZHMgLVMgJEAuYmluICRACisJcm0gLWYgJEAuYmluCisKK3hlbl9ieWVfd29ybGQu bzogY29uZmlnLmgKKworLlBIT05ZOiAkKFhTUExJQ0VfQllFKQorJChYU1BMSUNFX0JZRSk6ICQo WFNQTElDRSkgY29uZmlnLmggeGVuX2J5ZV93b3JsZF9mdW5jLm8geGVuX2J5ZV93b3JsZC5vIGhl bGxvX3dvcmxkX25vdGUubworCSQoTEQpICQoTERGTEFHUykgJChidWlsZF9pZF9saW5rZXIpIC1y IC1vICQoWFNQTElDRV9CWUUpIFwKKwkJJChmaWx0ZXIgJS5vLCReKQorCiAKIC5QSE9OWTogeHNw bGljZQoteHNwbGljZTogJChYU1BMSUNFKQoreHNwbGljZTogJChYU1BMSUNFKSAkKFhTUExJQ0Vf QllFKQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3Rlc3QveGVuX2J5ZV93b3JsZC5jIGIveGVu L2FyY2gveDg2L3Rlc3QveGVuX2J5ZV93b3JsZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLmY5M2Y5NjkKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4vYXJjaC94ODYvdGVzdC94 ZW5fYnllX3dvcmxkLmMKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAx NiBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8eGVuL2xpYi5oPgorI2luY2x1 ZGUgPHhlbi90eXBlcy5oPgorI2luY2x1ZGUgPHhlbi92ZXJzaW9uLmg+CisjaW5jbHVkZSA8eGVu L3hzcGxpY2UuaD4KKworI2luY2x1ZGUgPHB1YmxpYy9zeXNjdGwuaD4KKworc3RhdGljIGNoYXIg YnllX3dvcmxkX3BhdGNoX3RoaXNfZm5jW10gPSAieGVuX2V4dHJhX3ZlcnNpb24iOworZXh0ZXJu IGNvbnN0IGNoYXIgKnhlbl9ieWVfd29ybGQodm9pZCk7CisKK3N0cnVjdCB4c3BsaWNlX3BhdGNo X2Z1bmMgX19zZWN0aW9uKCIueHNwbGljZS5mdW5jcyIpIHhzcGxpY2VfeGVuX2J5ZV93b3JsZCA9 IHsKKyAgICAudmVyc2lvbiA9IFhTUExJQ0VfUEFZTE9BRF9WRVJTSU9OLAorICAgIC5uYW1lID0g YnllX3dvcmxkX3BhdGNoX3RoaXNfZm5jLAorICAgIC5uZXdfYWRkciA9IHhlbl9ieWVfd29ybGQs CisgICAgLm9sZF9hZGRyID0geGVuX2V4dHJhX3ZlcnNpb24sCisgICAgLm5ld19zaXplID0gTkVX X0NPREVfU1osCisgICAgLm9sZF9zaXplID0gT0xEX0NPREVfU1osCit9OworCisvKgorICogTG9j YWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1i YXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmls CisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni90ZXN0L3hlbl9ieWVfd29y bGRfZnVuYy5jIGIveGVuL2FyY2gveDg2L3Rlc3QveGVuX2J5ZV93b3JsZF9mdW5jLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzJlZjM0MQotLS0gL2Rldi9udWxsCisrKyBi L3hlbi9hcmNoL3g4Ni90ZXN0L3hlbl9ieWVfd29ybGRfZnVuYy5jCkBAIC0wLDAgKzEsMjIgQEAK Ky8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTYgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4g QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKi8KKworI2luY2x1ZGUgPHhlbi90eXBlcy5oPgor CisvKiBPdXIgcmVwbGFjZW1lbnQgZnVuY3Rpb24gZm9yIHhlbl9oZWxsb193b3JsZC4gKi8KK2Nv bnN0IGNoYXIgKnhlbl9ieWVfd29ybGQodm9pZCkKK3sKKyAgICByZXR1cm4gIkJ5ZSBXb3JsZCEi OworfQorCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0 eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5k ZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3hlbi9jb21tb24v S2NvbmZpZyBiL3hlbi9jb21tb24vS2NvbmZpZwppbmRleCBlNGY4NmMyLi45MWVhOTA0IDEwMDY0 NAotLS0gYS94ZW4vY29tbW9uL0tjb25maWcKKysrIGIveGVuL2NvbW1vbi9LY29uZmlnCkBAIC02 MCw2ICs2MCwxMCBAQCBjb25maWcgSEFTX0dEQlNYCiBjb25maWcgSEFTX0lPUE9SVFMKIAlib29s CiAKK2NvbmZpZyBIQVNfQlVJTERfSUQKKwlzdHJpbmcKKwlvcHRpb24gZW52PSJYRU5fSEFTX0JV SUxEX0lEIgorCiAjIEVuYWJsZS9EaXNhYmxlIGtleGVjIHN1cHBvcnQKIGNvbmZpZyBLRVhFQwog CWJvb2wgImtleGVjIHN1cHBvcnQiCkBAIC0xOTIsNyArMTk2LDcgQEAgZW5kbWVudQogY29uZmln IFhTUExJQ0UKIAlib29sICJ4U3BsaWNlIGxpdmUgcGF0Y2hpbmcgc3VwcG9ydCAoVEVDSCBQUkVW SUVXKSIKIAlkZWZhdWx0IG4KLQlkZXBlbmRzIG9uIFg4NgorCWRlcGVuZHMgb24gWDg2ICYmIEhB U19CVUlMRF9JRCA9ICJ5IgogCS0tLWhlbHAtLS0KIAkgIEFsbG93cyBhIHJ1bm5pbmcgWGVuIGh5 cGVydmlzb3IgdG8gYmUgZHluYW1pY2FsbHkgcGF0Y2hlZCB1c2luZwogCSAgYmluYXJ5IHBhdGNo ZXMgd2l0aG91dCByZWJvb3RpbmcuIFRoaXMgaXMgcHJpbWFyaWx5IHVzZWQgdG8gYmluYXJpbHkK ZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vdmVyc2lvbi5jIGIveGVuL2NvbW1vbi92ZXJzaW9uLmMK aW5kZXggMzA1NzhhNi4uMGY5Njg0OSAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi92ZXJzaW9uLmMK KysrIGIveGVuL2NvbW1vbi92ZXJzaW9uLmMKQEAgLTg2LDkgKzg2LDQxIEBAIGludCB4ZW5fYnVp bGRfaWQoY29uc3Qgdm9pZCAqKnAsIHVuc2lnbmVkIGludCAqbGVuKQogLyogRGVmaW5lZCBpbiBs aW5rZXIgc2NyaXB0LiAqLwogZXh0ZXJuIGNvbnN0IEVsZl9Ob3RlIF9fbm90ZV9nbnVfYnVpbGRf aWRfc3RhcnRbXSwgX19ub3RlX2dudV9idWlsZF9pZF9lbmRbXTsKIAoraW50IHhlbl9idWlsZF9p ZF9jaGVjayhjb25zdCBFbGZfTm90ZSAqbiwgdW5zaWduZWQgaW50IG5fc3osCisgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IHZvaWQgKipwLCB1bnNpZ25lZCBpbnQgKmxlbikKK3sKKyAgICAv KiBDaGVjayBpZiB3ZSByZWFsbHkgaGF2ZSBhIGJ1aWxkLWlkLiAqLworICAgIGlmICggTlRfR05V X0JVSUxEX0lEICE9IG4tPnR5cGUgKQorICAgICAgICByZXR1cm4gLUVOT0RBVEE7CisKKyAgICBp ZiAoIG5fc3ogPD0gc2l6ZW9mKCpuKSApCisgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAg aWYgKCBuLT5uYW1lc3ogKyBuLT5kZXNjc3ogPCBuLT5uYW1lc3ogKQorICAgICAgICByZXR1cm4g LUVJTlZBTDsKKworICAgIGlmICggbi0+bmFtZXN6IDwgNCAvKiBHTlVcMCAqLykKKyAgICAgICAg cmV0dXJuIC1FSU5WQUw7CisKKyAgICBpZiAoIG4tPm5hbWVzeiArIG4tPmRlc2NzeiA+IG5fc3og LSBzaXplb2YoKm4pICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICAvKiBTYW5pdHkg Y2hlY2ssIG5hbWUgc2hvdWxkIGJlICJHTlUiIGZvciBsZC1nZW5lcmF0ZWQgYnVpbGQtaWQuICov CisgICAgaWYgKCBzdHJuY21wKEVMRk5PVEVfTkFNRShuKSwgIkdOVSIsIG4tPm5hbWVzeikgIT0g MCApCisgICAgICAgIHJldHVybiAtRU5PREFUQTsKKworICAgIGlmICggbGVuICkKKyAgICAgICAg KmxlbiA9IG4tPmRlc2NzejsKKyAgICBpZiAoIHAgKQorICAgICAgICAqcCA9IEVMRk5PVEVfREVT QyhuKTsKKworICAgIHJldHVybiAwOworfQorCiBzdGF0aWMgaW50IF9faW5pdCB4ZW5fYnVpbGRf aW5pdCh2b2lkKQogewogICAgIGNvbnN0IEVsZl9Ob3RlICpuID0gX19ub3RlX2dudV9idWlsZF9p ZF9zdGFydDsKKyAgICB1bnNpZ25lZCBpbnQgc3o7CiAKICAgICAvKiAtLWJ1aWxkLWlkIGludm9r ZWQgd2l0aCB3cm9uZyBwYXJhbWV0ZXJzLiAqLwogICAgIGlmICggX19ub3RlX2dudV9idWlsZF9p ZF9lbmQgPD0gJm5bMF0gKQpAQCAtOTgsMTggKzEzMCw5IEBAIHN0YXRpYyBpbnQgX19pbml0IHhl bl9idWlsZF9pbml0KHZvaWQpCiAgICAgaWYgKCAmblsxXSA+IF9fbm90ZV9nbnVfYnVpbGRfaWRf ZW5kICkKICAgICAgICAgcmV0dXJuIC1FTk9EQVRBOzsKIAotICAgIC8qIENoZWNrIGlmIHdlIHJl YWxseSBoYXZlIGEgYnVpbGQtaWQuICovCi0gICAgaWYgKCBOVF9HTlVfQlVJTERfSUQgIT0gbi0+ dHlwZSApCi0gICAgICAgIHJldHVybiAtRU5PREFUQTsKKyAgICBzeiA9ICh2b2lkICopX19ub3Rl X2dudV9idWlsZF9pZF9lbmQgLSAodm9pZCAqKW47CiAKLSAgICAvKiBTYW5pdHkgY2hlY2ssIG5h bWUgc2hvdWxkIGJlICJHTlUiIGZvciBsZC1nZW5lcmF0ZWQgYnVpbGQtaWQuICovCi0gICAgaWYg KCBzdHJuY21wKEVMRk5PVEVfTkFNRShuKSwgIkdOVSIsIG4tPm5hbWVzeikgIT0gMCApCi0gICAg ICAgIHJldHVybiAtRU5PREFUQTsKLQotICAgIGJ1aWxkX2lkX2xlbiA9IG4tPmRlc2NzejsKLSAg ICBidWlsZF9pZF9wID0gRUxGTk9URV9ERVNDKG4pOwotCi0gICAgcmV0dXJuIDA7CisgICAgcmV0 dXJuIHhlbl9idWlsZF9pZF9jaGVjayhuLCBzeiwgJmJ1aWxkX2lkX3AsICZidWlsZF9pZF9sZW4p OwogfQogX19pbml0Y2FsbCh4ZW5fYnVpbGRfaW5pdCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3hl bi9jb21tb24veHNwbGljZS5jIGIveGVuL2NvbW1vbi94c3BsaWNlLmMKaW5kZXggMDAxZDU2Yi4u NTgxZjQ4YiAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi94c3BsaWNlLmMKKysrIGIveGVuL2NvbW1v bi94c3BsaWNlLmMKQEAgLTQsNiArNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgPHhlbi9jcHUuaD4K KyNpbmNsdWRlIDx4ZW4vZWxmLmg+CiAjaW5jbHVkZSA8eGVuL2Vyci5oPgogI2luY2x1ZGUgPHhl bi9ndWVzdF9hY2Nlc3MuaD4KICNpbmNsdWRlIDx4ZW4va2V5aGFuZGxlci5oPgpAQCAtNDIsNiAr NDMsMTIgQEAgc3RhdGljIExJU1RfSEVBRChhcHBsaWVkX2xpc3QpOwogc3RhdGljIHVuc2lnbmVk IGludCBwYXlsb2FkX2NudDsKIHN0YXRpYyB1bnNpZ25lZCBpbnQgcGF5bG9hZF92ZXJzaW9uID0g MTsKIAorLyogVG8gY29udGFpbiB0aGUgRUxGIE5vdGUgaGVhZGVyLiAqLworc3RydWN0IHhzcGxp Y2VfYnVpbGRfaWQgeworICAgY29uc3Qgdm9pZCAqcDsKKyAgIHVuc2lnbmVkIGludCBsZW47Cit9 OworCiBzdHJ1Y3QgcGF5bG9hZCB7CiAgICAgdWludDMyX3Qgc3RhdGU7ICAgICAgICAgICAgICAg ICAgICAgIC8qIE9uZSBvZiB0aGUgWFNQTElDRV9TVEFURV8qLiAqLwogICAgIGludDMyX3QgcmM7 ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAwIG9yIC1YRU5fRVhYLiAqLwpAQCAtNjEsNiAr NjgsOCBAQCBzdHJ1Y3QgcGF5bG9hZCB7CiAgICAgc3RydWN0IHZpcnR1YWxfcmVnaW9uIHJlZ2lv bjsgICAgICAgIC8qIHN5bWJvbCwgYnVnLmZyYW1lIHBhdGNoaW5nIGFuZAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb24gdGFibGUgKHg4NikuICov CiAgICAgdW5zaWduZWQgaW50IG5zeW1zOyAgICAgICAgICAgICAgICAgIC8qIE5yIG9mIGVudHJp ZXMgaW4gLnN0cnRhYiBhbmQgc3ltYm9scy4gKi8KKyAgICBzdHJ1Y3QgeHNwbGljZV9idWlsZF9p ZCBpZDsgICAgICAgICAgLyogRUxGTk9URV9ERVNDKC5ub3RlLmdudS5idWlsZC1pZCkgb2YgdGhl IHBheWxvYWQuICovCisgICAgc3RydWN0IHhzcGxpY2VfYnVpbGRfaWQgZGVwOyAgICAgICAgIC8q IEVMRk5PVEVfREVTQygueHNwbGljZS5kZXBlbmRzKS4gKi8KICAgICBjaGFyIG5hbWVbWEVOX1hT UExJQ0VfTkFNRV9TSVpFXTsgICAgLyogTmFtZSBvZiBpdC4gKi8KIH07CiAKQEAgLTQxMCw3ICs0 MTksOSBAQCBzdGF0aWMgaW50IHNlY3VyZV9wYXlsb2FkKHN0cnVjdCBwYXlsb2FkICpwYXlsb2Fk LCBzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZikKIHN0YXRpYyBpbnQgY2hlY2tfc3BlY2lhbF9zZWN0 aW9ucyhjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZikKIHsKICAgICB1bnNpZ25lZCBpbnQg aTsKLSAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgbmFtZXNbXSA9IHsgRUxGX1hTUExJQ0Vf RlVOQyB9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBuYW1lc1tdID0geyBFTEZfWFNQ TElDRV9GVU5DLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTEZf WFNQTElDRV9ERVBFTkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBFTEZfQlVJTERfSURfTk9URX07CiAgICAgREVDTEFSRV9CSVRNQVAoZm91bmQsIEFSUkFZX1NJ WkUobmFtZXMpKSA9IHsgMCB9OwogCiAgICAgZm9yICggaSA9IDA7IGkgPCBBUlJBWV9TSVpFKG5h bWVzKTsgaSsrICkKQEAgLTQ1MCw2ICs0NjEsNyBAQCBzdGF0aWMgaW50IHByZXBhcmVfcGF5bG9h ZChzdHJ1Y3QgcGF5bG9hZCAqcGF5bG9hZCwKICAgICB1bnNpZ25lZCBpbnQgaTsKICAgICBzdHJ1 Y3QgeHNwbGljZV9wYXRjaF9mdW5jICpmOwogICAgIHN0cnVjdCB2aXJ0dWFsX3JlZ2lvbiAqcmVn aW9uOworICAgIGNvbnN0IEVsZl9Ob3RlICpuOwogCiAgICAgc2VjID0geHNwbGljZV9lbGZfc2Vj X2J5X25hbWUoZWxmLCBFTEZfWFNQTElDRV9GVU5DKTsKICAgICBBU1NFUlQoc2VjKTsKQEAgLTUw Niw2ICs1MTgsMzcgQEAgc3RhdGljIGludCBwcmVwYXJlX3BheWxvYWQoc3RydWN0IHBheWxvYWQg KnBheWxvYWQsCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBzZWMgPSB4c3BsaWNlX2VsZl9zZWNf YnlfbmFtZShlbGYsIEVMRl9CVUlMRF9JRF9OT1RFKTsKKyAgICBpZiAoIHNlYyApCisgICAgewor ICAgICAgICBuID0gc2VjLT5sb2FkX2FkZHI7CisKKyAgICAgICAgaWYgKCBzZWMtPnNlYy0+c2hf c2l6ZSA8PSBzaXplb2YoKm4pICkKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAg ICAgIGlmICggeGVuX2J1aWxkX2lkX2NoZWNrKG4sIHNlYy0+c2VjLT5zaF9zaXplLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmcGF5bG9hZC0+aWQucCwgJnBheWxvYWQtPmlkLmxl bikgKQorICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICAgICAgaWYgKCAhcGF5bG9h ZC0+aWQubGVuIHx8ICFwYXlsb2FkLT5pZC5wICkKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFM OworICAgIH0KKworICAgIHNlYyA9IHhzcGxpY2VfZWxmX3NlY19ieV9uYW1lKGVsZiwgRUxGX1hT UExJQ0VfREVQRU5EUyk7CisgICAgeworICAgICAgICBuID0gc2VjLT5sb2FkX2FkZHI7CisKKyAg ICAgICAgaWYgKCBzZWMtPnNlYy0+c2hfc2l6ZSA8PSBzaXplb2YoKm4pICkKKyAgICAgICAgICAg IHJldHVybiAtRUlOVkFMOworCisgICAgICAgIGlmICggeGVuX2J1aWxkX2lkX2NoZWNrKG4sIHNl Yy0+c2VjLT5zaF9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcGF5bG9h ZC0+ZGVwLnAsICZwYXlsb2FkLT5kZXAubGVuKSApCisgICAgICAgICAgICByZXR1cm4gLUVJTlZB TDsKKworICAgICAgICBpZiAoICFwYXlsb2FkLT5kZXAubGVuIHx8ICFwYXlsb2FkLT5kZXAucCAp CisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKICAgICAvKiBTZXR1cCB0aGUg dmlydHVhbCByZWdpb24gd2l0aCBwcm9wZXIgZGF0YS4gKi8KICAgICByZWdpb24gPSAmcGF5bG9h ZC0+cmVnaW9uOwogCkBAIC0xMjM1LDYgKzEyNzgsNTUgQEAgdm9pZCBjaGVja19mb3JfeHNwbGlj ZV93b3JrKHZvaWQpCiAgICAgfQogfQogCisvKgorICogT25seSBhbGxvdyBkZXBlbmRlbnQgcGF5 bG9hZCBpcyBhcHBsaWVkIG9uIHRvcCBvZiB0aGUgY29ycmVjdAorICogYnVpbGQtaWQuCisgKgor ICogVGhpcyBlbmZvcmNlcyBhbiBzdGFja2luZyBvcmRlciAtIHRoZSBmaXJzdCBwYXlsb2FkIE1V U1QgYmUgYWdhaW5zdCB0aGUKKyAqIGh5cGVydmlzb3IuIFRoZSBzZWNvbmQgYWdhaW5zdCB0aGUg Zmlyc3QgcGF5bG9hZCwgYW5kIHNvIG9uLgorICoKKyAqIFVubGVzcyB0aGUgJ2ludGVybmFsJyBw YXJhbWV0ZXIgaXMgdXNlZCAtIGluIHdoaWNoIGNhc2Ugd2Ugb25seQorICogY2hlY2sgYWdhaW5z dCB0aGUgaHlwZXJ2aXNvci4KKyAqLworc3RhdGljIGludCBidWlsZF9pZF9kZXAoc3RydWN0IHBh eWxvYWQgKnBheWxvYWQsIGJvb2xfdCBpbnRlcm5hbCkKK3sKKyAgICBjb25zdCB2b2lkICppZCA9 IE5VTEw7CisgICAgdW5zaWduZWQgaW50IGxlbiA9IDA7CisgICAgaW50IHJjOworICAgIGNvbnN0 IGNoYXIgKm5hbWUgPSAiaHlwZXJ2aXNvciI7CisKKyAgICBBU1NFUlQocGF5bG9hZC0+ZGVwLmxl biAmJiBwYXlsb2FkLT5kZXAucCk7CisKKyAgICAvKiBGaXJzdCB0aW1lIHVzZXIgaXMgYWdhaW5z dCBoeXBlcnZpc29yLiAqLworICAgIGlmICggaW50ZXJuYWwgKQorICAgIHsKKyAgICAgICAgcmMg PSB4ZW5fYnVpbGRfaWQoJmlkLCAmbGVuKTsKKyAgICAgICAgaWYgKCByYyApCisgICAgICAgICAg ICByZXR1cm4gcmM7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIC8qIFdlIHNob3Vs ZCBiZSBhZ2FpbnN0IHRoZSBsYXN0IGFwcGxpZWQgb25lLiAqLworICAgICAgICBjb25zdCBzdHJ1 Y3QgcGF5bG9hZCAqZGF0YTsKKworICAgICAgICBkYXRhID0gbGlzdF9sYXN0X2VudHJ5KCZhcHBs aWVkX2xpc3QsIHN0cnVjdCBwYXlsb2FkLCBhcHBsaWVkX2xpc3QpOworCisgICAgICAgIGlkID0g ZGF0YS0+aWQucDsKKyAgICAgICAgbGVuID0gZGF0YS0+aWQubGVuOworICAgICAgICBuYW1lID0g ZGF0YS0+bmFtZTsKKyAgICB9CisKKyAgICBpZiAoIHBheWxvYWQtPmRlcC5sZW4gIT0gbGVuIHx8 CisgICAgICAgICBtZW1jbXAoaWQsIHBheWxvYWQtPmRlcC5wLCBsZW4pICkKKyAgICB7CisgICAg ICAgIGRwcmludGsoWEVOTE9HX0VSUiwgIiVzJXM6IGNoZWNrIGFnYWluc3QgJXMgYnVpbGQtaWQg ZmFpbGVkIVxuIiwKKyAgICAgICAgICAgICAgICBYU1BMSUNFLCBwYXlsb2FkLT5uYW1lLCBuYW1l KTsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisK IHN0YXRpYyBpbnQgeHNwbGljZV9hY3Rpb24oeGVuX3N5c2N0bF94c3BsaWNlX2FjdGlvbl90ICph Y3Rpb24pCiB7CiAgICAgc3RydWN0IHBheWxvYWQgKmRhdGE7CkBAIC0xMjc0LDYgKzEzNjYsMTgg QEAgc3RhdGljIGludCB4c3BsaWNlX2FjdGlvbih4ZW5fc3lzY3RsX3hzcGxpY2VfYWN0aW9uX3Qg KmFjdGlvbikKICAgICBjYXNlIFhTUExJQ0VfQUNUSU9OX1JFVkVSVDoKICAgICAgICAgaWYgKCBk YXRhLT5zdGF0ZSA9PSBYU1BMSUNFX1NUQVRFX0FQUExJRUQgKQogICAgICAgICB7CisgICAgICAg ICAgICBjb25zdCBzdHJ1Y3QgcGF5bG9hZCAqcDsKKworICAgICAgICAgICAgcCA9IGxpc3RfbGFz dF9lbnRyeSgmYXBwbGllZF9saXN0LCBzdHJ1Y3QgcGF5bG9hZCwgYXBwbGllZF9saXN0KTsKKyAg ICAgICAgICAgIEFTU0VSVChwKTsKKyAgICAgICAgICAgIC8qIFdlIHNob3VsZCBiZSB0aGUgbGFz dCBhcHBsaWVkIG9uZS4gKi8KKyAgICAgICAgICAgIGlmICggcCAhPSBkYXRhICkKKyAgICAgICAg ICAgIHsKKyAgICAgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsICIlcyVzOiBjYW4ndCB1 bmxvYWQuIFRvcCBpcyAlcyFcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBYU1BMSUNFLCBk YXRhLT5uYW1lLCBwLT5uYW1lKTsKKyAgICAgICAgICAgICAgICByYyA9IC1FQlVTWTsKKyAgICAg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGRhdGEtPnJjID0g LUVBR0FJTjsKICAgICAgICAgICAgIHJjID0gc2NoZWR1bGVfd29yayhkYXRhLCBhY3Rpb24tPmNt ZCwgYWN0aW9uLT50aW1lb3V0KTsKICAgICAgICAgfQpAQCAtMTI4Miw2ICsxMzg2LDkgQEAgc3Rh dGljIGludCB4c3BsaWNlX2FjdGlvbih4ZW5fc3lzY3RsX3hzcGxpY2VfYWN0aW9uX3QgKmFjdGlv bikKICAgICBjYXNlIFhTUExJQ0VfQUNUSU9OX0FQUExZOgogICAgICAgICBpZiAoIGRhdGEtPnN0 YXRlID09IFhTUExJQ0VfU1RBVEVfQ0hFQ0tFRCApCiAgICAgICAgIHsKKyAgICAgICAgICAgIHJj ID0gYnVpbGRfaWRfZGVwKGRhdGEsICEhbGlzdF9lbXB0eSgmYXBwbGllZF9saXN0KSk7CisgICAg ICAgICAgICBpZiAoIHJjICkKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRh dGEtPnJjID0gLUVBR0FJTjsKICAgICAgICAgICAgIHJjID0gc2NoZWR1bGVfd29yayhkYXRhLCBh Y3Rpb24tPmNtZCwgYWN0aW9uLT50aW1lb3V0KTsKICAgICAgICAgfQpAQCAtMTI5MCw2ICsxMzk3 LDkgQEAgc3RhdGljIGludCB4c3BsaWNlX2FjdGlvbih4ZW5fc3lzY3RsX3hzcGxpY2VfYWN0aW9u X3QgKmFjdGlvbikKICAgICBjYXNlIFhTUExJQ0VfQUNUSU9OX1JFUExBQ0U6CiAgICAgICAgIGlm ICggZGF0YS0+c3RhdGUgPT0gWFNQTElDRV9TVEFURV9DSEVDS0VEICkKICAgICAgICAgeworICAg ICAgICAgICAgcmMgPSBidWlsZF9pZF9kZXAoZGF0YSwgMSAvKiBhZ2FpbnN0IGh5cGVydmlzb3Iu ICovKTsKKyAgICAgICAgICAgIGlmICggcmMgKQorICAgICAgICAgICAgICAgIGJyZWFrOwogICAg ICAgICAgICAgZGF0YS0+cmMgPSAtRUFHQUlOOwogICAgICAgICAgICAgcmMgPSBzY2hlZHVsZV93 b3JrKGRhdGEsIGFjdGlvbi0+Y21kLCBhY3Rpb24tPnRpbWVvdXQpOwogICAgICAgICB9CkBAIC0x Mzk0LDYgKzE1MDQsMTEgQEAgc3RhdGljIHZvaWQgeHNwbGljZV9wcmludGFsbCh1bnNpZ25lZCBj aGFyIGtleSkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAg ICAgICAgaWYgKCBkYXRhLT5pZC5sZW4gKQorICAgICAgICAgICAgcHJpbnRrKCJidWlsZC1pZD0l KnBoTlxuIiwgZGF0YS0+aWQubGVuLCBkYXRhLT5pZC5wKTsKKworICAgICAgICBpZiAoIGRhdGEt PmRlcC5sZW4gKQorICAgICAgICAgICAgcHJpbnRrKCJkZXBlbmQtb249JSpwaE5cbiIsIGRhdGEt PmRlcC5sZW4sIGRhdGEtPmRlcC5wKTsKICAgICB9CiAKICAgICBzcGluX3VubG9jaygmcGF5bG9h ZF9sb2NrKTsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlLmggYi94ZW4vaW5j bHVkZS94ZW4veHNwbGljZS5oCmluZGV4IDg0OWY1OGMuLjVmZmI2OWQgMTAwNjQ0Ci0tLSBhL3hl bi9pbmNsdWRlL3hlbi94c3BsaWNlLmgKKysrIGIveGVuL2luY2x1ZGUveGVuL3hzcGxpY2UuaApA QCAtMjgsNiArMjgsOCBAQCBzdHJ1Y3QgeGVuX3N5c2N0bF94c3BsaWNlX29wOwogI2RlZmluZSBY U1BMSUNFICAgICAgICAgICAgICJ4c3BsaWNlOiAiCiAvKiBFTEYgcGF5bG9hZCBzcGVjaWFsIHNl Y3Rpb24gbmFtZXMuICovCiAjZGVmaW5lIEVMRl9YU1BMSUNFX0ZVTkMgICAgIi54c3BsaWNlLmZ1 bmNzIgorI2RlZmluZSBFTEZfWFNQTElDRV9ERVBFTkRTICIueHNwbGljZS5kZXBlbmRzIgorI2Rl ZmluZSBFTEZfQlVJTERfSURfTk9URSAgICIubm90ZS5nbnUuYnVpbGQtaWQiCiAKIHN0cnVjdCB4 c3BsaWNlX3N5bWJvbCB7CiAgICAgY29uc3QgY2hhciAqbmFtZTsKQEAgLTQwLDYgKzQyLDggQEAg aW50IHhzcGxpY2Vfb3Aoc3RydWN0IHhlbl9zeXNjdGxfeHNwbGljZV9vcCAqKTsKIHZvaWQgY2hl Y2tfZm9yX3hzcGxpY2Vfd29yayh2b2lkKTsKIHVuc2lnbmVkIGxvbmcgeHNwbGljZV9zeW1ib2xz X2xvb2t1cF9ieV9uYW1lKGNvbnN0IGNoYXIgKnN5bW5hbWUpOwogYm9vbF90IGlzX3BhdGNoKGNv bnN0IHZvaWQgKmFkZHIpOworaW50IHhlbl9idWlsZF9pZF9jaGVjayhjb25zdCBFbGZfTm90ZSAq biwgdW5zaWduZWQgaW50IG5fc3osCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQg KipwLCB1bnNpZ25lZCBpbnQgKmxlbik7CiAKIC8qIEFyY2ggaG9va3MuICovCiBpbnQgYXJjaF94 c3BsaWNlX3ZlcmlmeV9lbGYoY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmICplbGYpOwotLSAKMi41 LjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4t ZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54 ZW4ub3JnL3hlbi1kZXZlbAo=