From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v8 12/25] xsplice, symbols: Implement symbol name resolution on address. Date: Wed, 13 Apr 2016 17:09:43 -0400 Message-ID: <1460581796-30071-13-git-send-email-konrad.wilk@oracle.com> References: <1460581796-30071-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 1aqS3r-00076h-64 for xen-devel@lists.xenproject.org; Wed, 13 Apr 2016 21:10:55 +0000 In-Reply-To: <1460581796-30071-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 RnJvbTogUm9zcyBMYWdlcndhbGwgPHJvc3MubGFnZXJ3YWxsQGNpdHJpeC5jb20+CgpJZiBpbiB0 aGUgcGF5bG9hZCB3ZSBkbyBub3QgaGF2ZSB0aGUgb2xkX2FkZHIgd2UgY2FuIHJlc29sdmUKdGhl IHZpcnR1YWwgYWRkcmVzcyBiYXNlZCBvbiB0aGUgVU5ERUZpbmVkIHN5bWJvbHMuCgpXZSBhbHNv IHVzZSBhbiBib29sZWFuIGZsYWc6IG5ld19zeW1ib2wgdG8gdHJhY2sgc3ltYm9scy4gVGhlIHVz dWFsCmNhc2UgdGhpcyBpcyB1c2VkIGlzIGJ5OgoKKiBBIHBheWxvYWQgbWF5IGludHJvZHVjZSBh IG5ldyBzeW1ib2wKKiBBIHBheWxvYWQgbWF5IG92ZXJyaWRlIGFuIGV4aXN0aW5nIHN5bWJvbCAo aW50cm9kdWNlZCBpbiBYZW4gb3IgYW5vdGhlcgogIHBheWxvYWQpCiogT3ZlcnJpZGluZyBzeW1i b2xzIG11c3QgZXhpc3QgaW4gdGhlIHN5bXRhYiBmb3IgYmFja3RyYWNlcy4KKiBBIHBheWxvYWQg bXVzdCBhbHdheXMgbGluayBhZ2FpbnN0IHRoZSBvYmplY3Qgd2hpY2ggZGVmaW5lcyB0aGUgbmV3 IHN5bWJvbC4KCkNvbnNpZGVyaW5nIHRoYXQgcGF5bG9hZHMgbWF5IGJlIGxvYWRlZCBpbiBhbnkg b3JkZXIgaXQgd291bGQgYmUgaW5jb3JyZWN0IHRvCmxpbmsgYWdhaW5zdCBhIHBheWxvYWQgd2hp Y2ggc2ltcGx5IG92ZXJyaWRlcyBhIHN5bWJvbCBiZWNhdXNlIHlvdSBjb3VsZCBlbmQKdXAgd2l0 aCBhIGNoYWluIG9mIGp1bXBzIHdoaWNoIGlzIGluZWZmaWNpZW50IGFuZCBtYXkgcmVzdWx0IGlu IHRoZSBleHBlY3RlZApmdW5jdGlvbiBub3QgYmVpbmcgZXhlY3V0ZWQuCgpBbHNvIHdlIGluY2x1 ZGUgYSBsb2NhbCBkZWZpbml0aW9uIGJsb2NrIGluIHRoZSBzeW1ib2xzLmMgZmlsZS4KClNpZ25l ZC1vZmYtYnk6IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4K U2lnbmVkLW9mZi1ieTogUm9zcyBMYWdlcndhbGwgPHJvc3MubGFnZXJ3YWxsQGNpdHJpeC5jb20+ ClJldmlld2VkLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgoK LS0tCkNjOiBLZWlyIEZyYXNlciA8a2VpckB4ZW4ub3JnPgpDYzogSmFuIEJldWxpY2ggPGpiZXVs aWNoQHN1c2UuY29tPgpDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNv bT4KCnYxOiBSb3NzIG9yaWdpbmFsIHZlcnNpb24uCnYyOiBJbmNsdWRlIHRlc3QtY2FzZSBhbmQg ZG9jdW1lbnQgdXBkYXRlLgp2Mjogcy9zaXplX3Qvc3NpemVfdC8KICAgIEluY2x1ZGUgY29yZV90 ZXh0X3NpemUsIGNvcmVfdGV4dCBjYWxjdWxhdGlvbgp2NDogQ2FzdCBvbiBkcHJpbnRrIHRvIHVp bnQ2NF90IHRvIG1ha2UgRUxGIDMyYml0IGJ1aWxkLgp2NjogUmViYXNlIHdoZXJlIHRoZSBzcGlu bG9jayBpcyBubyBtb3JlIHJlY3Vyc2l2ZS4gRHJvcCB0aGUgc3BpbmxvY2sKICAgIHVzYWdlIGlu IHhzcGxpY2Vfc3ltYm9sc19sb29rdXBfYnlfbmFtZQp2NzogQWRkIEFuZHJldydzIFJldmlld2Vk LWJ5CiAgICBJbml0aWFsaXplIGFkZHIgYW5kIHN5bW5hbWUgdG8gemVybyBhcyB4ZW5zeW1zX3Jl YWQgdXNlcyBpdC4Kdjg6IENoYW5nZSBvbmUgWEVOTE9HX0RFQlVHIHRvIFhFTkxPR19FUlIuCiAg ICBDaGFuZ2UgcHJpbnRrIHRvIGRwcmludGsgb24gc3ltYm9scyBhbmQgb25lIGVycm9yIGNhc2Uu Ci0tLQogeGVuL2FyY2gveDg2L01ha2VmaWxlICAgICAgICAgICAgICAgfCAgMTYgKysrLQogeGVu L2FyY2gveDg2L3Rlc3QvTWFrZWZpbGUgICAgICAgICAgfCAgIDQgKy0KIHhlbi9hcmNoL3g4Ni90 ZXN0L3hlbl9oZWxsb193b3JsZC5jIHwgICA1ICstCiB4ZW4vY29tbW9uL3N5bWJvbHMuYyAgICAg ICAgICAgICAgICB8ICAzNCArKysrKysrKwogeGVuL2NvbW1vbi94c3BsaWNlLmMgICAgICAgICAg ICAgICAgfCAxNTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiB4ZW4vY29t bW9uL3hzcGxpY2VfZWxmLmMgICAgICAgICAgICB8ICAxOSArKysrLQogeGVuL2luY2x1ZGUveGVu L3N5bWJvbHMuaCAgICAgICAgICAgfCAgIDIgKwogeGVuL2luY2x1ZGUveGVuL3hzcGxpY2UuaCAg ICAgICAgICAgfCAgIDggKysKIDggZmlsZXMgY2hhbmdlZCwgMjMyIGluc2VydGlvbnMoKyksIDEy IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9NYWtlZmlsZSBiL3hlbi9h cmNoL3g4Ni9NYWtlZmlsZQppbmRleCA2YzJkNWZhLi41N2M5M2UxIDEwMDY0NAotLS0gYS94ZW4v YXJjaC94ODYvTWFrZWZpbGUKKysrIGIveGVuL2FyY2gveDg2L01ha2VmaWxlCkBAIC03Miw2ICs3 MiwxMiBAQCBlZmkteSA6PSAkKHNoZWxsIGlmIFsgISAtciAkKEJBU0VESVIpL2luY2x1ZGUveGVu L2NvbXBpbGUuaCAtbyBcCiAgICAgICAgICAgICAgICAgICAgICAgLU8gJChCQVNFRElSKS9pbmNs dWRlL3hlbi9jb21waWxlLmggXTsgdGhlbiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgZWNo byAnJChUQVJHRVQpLmVmaSc7IGZpKQogCitpZmRlZiBDT05GSUdfWFNQTElDRQorYWxsX3N5bWJv bHMgPSAtLWFsbC1zeW1ib2xzCitlbHNlCithbGxfc3ltYm9scyA9CitlbmRpZgorCiAkKFRBUkdF VCk6ICQoVEFSR0VUKS1zeW1zICQoZWZpLXkpIGJvb3QvbWtlbGYzMgogCS4vYm9vdC9ta2VsZjMy ICQoVEFSR0VUKS1zeW1zICQoVEFSR0VUKSAweDEwMDAwMCBcCiAJYCQoTk0pIC1uciAkKFRBUkdF VCktc3ltcyB8IGhlYWQgLW4gMSB8IHNlZCAtZSAncy9eXChbXiBdKlwpLiovMHhcMS8nYApAQCAt MTExLDEyICsxMTcsMTQgQEAgJChUQVJHRVQpLXN5bXM6IHByZWxpbmsubyB4ZW4ubGRzICQoQkFT RURJUikvY29tbW9uL3N5bWJvbHMtZHVtbXkubwogCSQoTEQpICQoTERGTEFHUykgLVQgeGVuLmxk cyAtTiBwcmVsaW5rLm8gXAogCSAgICAkKEJBU0VESVIpL2NvbW1vbi9zeW1ib2xzLWR1bW15Lm8g LW8gJChARCkvLiQoQEYpLjAKIAkkKE5NKSAtcGEgLS1mb3JtYXQ9c3lzdiAkKEBEKS8uJChARiku MCBcCi0JCXwgJChCQVNFRElSKS90b29scy9zeW1ib2xzIC0tc3lzdiAtLXNvcnQgPiQoQEQpLy4k KEBGKS4wLlMKKwkJfCAkKEJBU0VESVIpL3Rvb2xzL3N5bWJvbHMgJChhbGxfc3ltYm9scykgLS1z eXN2IC0tc29ydCBcCisJCT4kKEBEKS8uJChARikuMC5TCiAJJChNQUtFKSAtZiAkKEJBU0VESVIp L1J1bGVzLm1rICQoQEQpLy4kKEBGKS4wLm8KIAkkKExEKSAkKExERkxBR1MpIC1UIHhlbi5sZHMg LU4gcHJlbGluay5vIFwKIAkgICAgJChARCkvLiQoQEYpLjAubyAtbyAkKEBEKS8uJChARikuMQog CSQoTk0pIC1wYSAtLWZvcm1hdD1zeXN2ICQoQEQpLy4kKEBGKS4xIFwKLQkJfCAkKEJBU0VESVIp L3Rvb2xzL3N5bWJvbHMgLS1zeXN2IC0tc29ydCAtLXdhcm4tZHVwID4kKEBEKS8uJChARikuMS5T CisJCXwgJChCQVNFRElSKS90b29scy9zeW1ib2xzICQoYWxsX3N5bWJvbHMpIC0tc3lzdiAtLXNv cnQgLS13YXJuLWR1cCBcCisJCT4kKEBEKS8uJChARikuMS5TCiAJJChNQUtFKSAtZiAkKEJBU0VE SVIpL1J1bGVzLm1rICQoQEQpLy4kKEBGKS4xLm8KIAkkKExEKSAkKExERkxBR1MpIC1UIHhlbi5s ZHMgLU4gcHJlbGluay5vIFwKIAkgICAgJChARCkvLiQoQEYpLjEubyAtbyAkQApAQCAtMTQwLDE0 ICsxNDgsMTQgQEAgJChUQVJHRVQpLmVmaTogcHJlbGluay1lZmkubyBlZmkubGRzIGVmaS9yZWxv Y3MtZHVtbXkubyAkKEJBU0VESVIpL2NvbW1vbi9zeW1ib2wKIAkgICAgICAgICAgICAgICAgJChC QVNFRElSKS9jb21tb24vc3ltYm9scy1kdW1teS5vIC1vICQoQEQpLy4kKEBGKS4kKGJhc2UpLjAg JiYpIDoKIAkkKGd1YXJkKSBlZmkvbWtyZWxvYyAkKGZvcmVhY2ggYmFzZSwkKFZJUlRfQkFTRSkg JChBTFRfQkFTRSksJChARCkvLiQoQEYpLiQoYmFzZSkuMCkgPiQoQEQpLy4kKEBGKS4wci5TCiAJ JChndWFyZCkgJChOTSkgLXBhIC0tZm9ybWF0PXN5c3YgJChARCkvLiQoQEYpLiQoVklSVF9CQVNF KS4wIFwKLQkJfCAkKGd1YXJkKSAkKEJBU0VESVIpL3Rvb2xzL3N5bWJvbHMgLS1zeXN2IC0tc29y dCA+JChARCkvLiQoQEYpLjBzLlMKKwkJfCAkKGd1YXJkKSAkKEJBU0VESVIpL3Rvb2xzL3N5bWJv bHMgJChhbGxfc3ltYm9scykgLS1zeXN2IC0tc29ydCA+JChARCkvLiQoQEYpLjBzLlMKIAkkKGd1 YXJkKSAkKE1BS0UpIC1mICQoQkFTRURJUikvUnVsZXMubWsgJChARCkvLiQoQEYpLjByLm8gJChA RCkvLiQoQEYpLjBzLm8KIAkkKGZvcmVhY2ggYmFzZSwgJChWSVJUX0JBU0UpICQoQUxUX0JBU0Up LCBcCiAJICAgICAgICAgICQoZ3VhcmQpICQoTEQpICQoY2FsbCBFRklfTERGTEFHUywkKGJhc2Up KSAtVCBlZmkubGRzIC1OICQ8IFwKIAkgICAgICAgICAgICAgICAgJChARCkvLiQoQEYpLjByLm8g JChARCkvLiQoQEYpLjBzLm8gLW8gJChARCkvLiQoQEYpLiQoYmFzZSkuMSAmJikgOgogCSQoZ3Vh cmQpIGVmaS9ta3JlbG9jICQoZm9yZWFjaCBiYXNlLCQoVklSVF9CQVNFKSAkKEFMVF9CQVNFKSwk KEBEKS8uJChARikuJChiYXNlKS4xKSA+JChARCkvLiQoQEYpLjFyLlMKIAkkKGd1YXJkKSAkKE5N KSAtcGEgLS1mb3JtYXQ9c3lzdiAkKEBEKS8uJChARikuJChWSVJUX0JBU0UpLjEgXAotCQl8ICQo Z3VhcmQpICQoQkFTRURJUikvdG9vbHMvc3ltYm9scyAtLXN5c3YgLS1zb3J0ID4kKEBEKS8uJChA RikuMXMuUworCQl8ICQoZ3VhcmQpICQoQkFTRURJUikvdG9vbHMvc3ltYm9scyAkKGFsbF9zeW1i b2xzKSAtLXN5c3YgLS1zb3J0ID4kKEBEKS8uJChARikuMXMuUwogCSQoZ3VhcmQpICQoTUFLRSkg LWYgJChCQVNFRElSKS9SdWxlcy5tayAkKEBEKS8uJChARikuMXIubyAkKEBEKS8uJChARikuMXMu bwogCSQoZ3VhcmQpICQoTEQpICQoY2FsbCBFRklfTERGTEFHUywkKFZJUlRfQkFTRSkpIC1UIGVm aS5sZHMgLU4gJDwgXAogCSAgICAgICAgICAgICAgICAkKEBEKS8uJChARikuMXIubyAkKEBEKS8u JChARikuMXMubyAtbyAkQApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3Rlc3QvTWFrZWZpbGUg Yi94ZW4vYXJjaC94ODYvdGVzdC9NYWtlZmlsZQppbmRleCBiOWNmMTNjLi5iYWE0ODIwIDEwMDY0 NAotLS0gYS94ZW4vYXJjaC94ODYvdGVzdC9NYWtlZmlsZQorKysgYi94ZW4vYXJjaC94ODYvdGVz dC9NYWtlZmlsZQpAQCAtMjYsMTQgKzI2LDEyIEBAIGNsZWFuOjoKICMgdGhlIGxhc3QgZW50cnkg aW4gdGhlIGJ1aWxkIHRhcmdldC4KICMKIC5QSE9OWTogY29uZmlnLmgKLWNvbmZpZy5oOiBPTERf Q09ERT0kKGNhbGwgQ09ERV9BRERSLCQoQkFTRURJUikveGVuLXN5bXMseGVuX2V4dHJhX3ZlcnNp b24pCiBjb25maWcuaDogT0xEX0NPREVfU1o9JChjYWxsIENPREVfU1osJChCQVNFRElSKS94ZW4t c3ltcyx4ZW5fZXh0cmFfdmVyc2lvbikKIGNvbmZpZy5oOiBORVdfQ09ERV9TWj0kKGNhbGwgQ09E RV9TWiwkPCx4ZW5faGVsbG9fd29ybGQpCiBjb25maWcuaDogeGVuX2hlbGxvX3dvcmxkX2Z1bmMu bwogCShzZXQgLWU7IFwKIAkgZWNobyAiI2RlZmluZSBORVdfQ09ERV9TWiAkKE5FV19DT0RFX1Na KSI7IFwKLQkgZWNobyAiI2RlZmluZSBPTERfQ09ERV9TWiAkKE9MRF9DT0RFX1NaKSI7IFwKLQkg ZWNobyAiI2RlZmluZSBPTERfQ09ERSAkKE9MRF9DT0RFKSIpID4gJEAKKwkgZWNobyAiI2RlZmlu ZSBPTERfQ09ERV9TWiAkKE9MRF9DT0RFX1NaKSIpID4gJEAKIAogLlBIT05ZOiB4c3BsaWNlCiB4 c3BsaWNlOiBjb25maWcuaApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3Rlc3QveGVuX2hlbGxv X3dvcmxkLmMgYi94ZW4vYXJjaC94ODYvdGVzdC94ZW5faGVsbG9fd29ybGQuYwppbmRleCAyMTgz MWU5Li4yMmZlMmU3IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvdGVzdC94ZW5faGVsbG9fd29y bGQuYworKysgYi94ZW4vYXJjaC94ODYvdGVzdC94ZW5faGVsbG9fd29ybGQuYwpAQCAtMTAsMTEg KzEwLDE0IEBACiBzdGF0aWMgY2hhciBoZWxsb193b3JsZF9wYXRjaF90aGlzX2ZuY1tdID0gInhl bl9leHRyYV92ZXJzaW9uIjsKIGV4dGVybiBjb25zdCBjaGFyICp4ZW5faGVsbG9fd29ybGQodm9p ZCk7CiAKKy8qIEV4dGVybmFsIHN5bWJvbC4gKi8KK2V4dGVybiBjb25zdCBjaGFyICp4ZW5fZXh0 cmFfdmVyc2lvbih2b2lkKTsKKwogc3RydWN0IHhzcGxpY2VfcGF0Y2hfZnVuYyBfX3NlY3Rpb24o Ii54c3BsaWNlLmZ1bmNzIikgeHNwbGljZV94ZW5faGVsbG9fd29ybGQgPSB7CiAgICAgLnZlcnNp b24gPSBYU1BMSUNFX1BBWUxPQURfVkVSU0lPTiwKICAgICAubmFtZSA9IGhlbGxvX3dvcmxkX3Bh dGNoX3RoaXNfZm5jLAogICAgIC5uZXdfYWRkciA9ICh1bnNpZ25lZCBsb25nKSh4ZW5faGVsbG9f d29ybGQpLAotICAgIC5vbGRfYWRkciA9IE9MRF9DT0RFLAorICAgIC5vbGRfYWRkciA9ICh1bnNp Z25lZCBsb25nKSh4ZW5fZXh0cmFfdmVyc2lvbiksCiAgICAgLm5ld19zaXplID0gTkVXX0NPREVf U1osCiAgICAgLm9sZF9zaXplID0gT0xEX0NPREVfU1osCiB9OwpkaWZmIC0tZ2l0IGEveGVuL2Nv bW1vbi9zeW1ib2xzLmMgYi94ZW4vY29tbW9uL3N5bWJvbHMuYwppbmRleCBiMThkZGNkMS4uNzgx NzY1ZCAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9zeW1ib2xzLmMKKysrIGIveGVuL2NvbW1vbi9z eW1ib2xzLmMKQEAgLTIwNywzICsyMDcsMzcgQEAgaW50IHhlbnN5bXNfcmVhZCh1aW50MzJfdCAq c3ltbnVtLCBjaGFyICp0eXBlLAogCiAgICAgcmV0dXJuIDA7CiB9CisKK3Vuc2lnbmVkIGxvbmcg c3ltYm9sc19sb29rdXBfYnlfbmFtZShjb25zdCBjaGFyICpzeW1uYW1lKQoreworICAgIGNoYXIg bmFtZVtLU1lNX05BTUVfTEVOICsgMV0gPSB7IDAgfTsKKyAgICB1aW50MzJfdCBzeW1udW0gPSAw OworICAgIGNoYXIgdHlwZTsKKyAgICB1aW50NjRfdCBhZGRyID0gMDsKKyAgICBpbnQgcmM7CisK KyAgICBpZiAoIHN5bW5hbWUgPT0gJ1wwJyApCisgICAgICAgIHJldHVybiAwOworCisgICAgZG8g eworICAgICAgICByYyA9IHhlbnN5bXNfcmVhZCgmc3ltbnVtLCAmdHlwZSwgJmFkZHIsIG5hbWUp OworICAgICAgICBpZiAoIHJjICkKKyAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgaWYgKCAh c3RyY21wKG5hbWUsIHN5bW5hbWUpICkKKyAgICAgICAgICAgIHJldHVybiBhZGRyOworCisgICAg fSB3aGlsZSAoIG5hbWVbMF0gIT0gJ1wwJyApOworCisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisg KiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisg KiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2Rl OiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi94c3BsaWNlLmMgYi94 ZW4vY29tbW9uL3hzcGxpY2UuYwppbmRleCA5ZTY2OTdlLi4yOGU3NzY5IDEwMDY0NAotLS0gYS94 ZW4vY29tbW9uL3hzcGxpY2UuYworKysgYi94ZW4vY29tbW9uL3hzcGxpY2UuYwpAQCAtMTQsNiAr MTQsNyBAQAogI2luY2x1ZGUgPHhlbi9zbXAuaD4KICNpbmNsdWRlIDx4ZW4vc29mdGlycS5oPgog I2luY2x1ZGUgPHhlbi9zcGlubG9jay5oPgorI2luY2x1ZGUgPHhlbi9zeW1ib2xzLmg+CiAjaW5j bHVkZSA8eGVuL3ZtYXAuaD4KICNpbmNsdWRlIDx4ZW4vd2FpdC5oPgogI2luY2x1ZGUgPHhlbi94 c3BsaWNlX2VsZi5oPgpAQCAtNTEsNiArNTIsOSBAQCBzdHJ1Y3QgcGF5bG9hZCB7CiAgICAgc3Ry dWN0IGxpc3RfaGVhZCBhcHBsaWVkX2xpc3Q7ICAgICAgIC8qIExpbmtlZCB0byAnYXBwbGllZF9s aXN0Jy4gKi8KICAgICBzdHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5jX2ludGVybmFsICpmdW5jczsg ICAgLyogVGhlIGFycmF5IG9mIGZ1bmN0aW9ucyB0byBwYXRjaC4gKi8KICAgICB1bnNpZ25lZCBp bnQgbmZ1bmNzOyAgICAgICAgICAgICAgICAgLyogTnIgb2YgZnVuY3Rpb25zIHRvIHBhdGNoLiAq LworICAgIHN0cnVjdCB4c3BsaWNlX3N5bWJvbCAqc3ltdGFiOyAgICAgICAvKiBBbGwgc3ltYm9s cy4gKi8KKyAgICBjaGFyICpzdHJ0YWI7ICAgICAgICAgICAgICAgICAgICAgICAgLyogUG9pbnRl ciB0byAuc3RydGFiLiAqLworICAgIHVuc2lnbmVkIGludCBuc3ltczsgICAgICAgICAgICAgICAg ICAvKiBOciBvZiBlbnRyaWVzIGluIC5zdHJ0YWIgYW5kIHN5bWJvbHMuICovCiAgICAgY2hhciBu YW1lW1hFTl9YU1BMSUNFX05BTUVfU0laRV07ICAgIC8qIE5hbWUgb2YgaXQuICovCiB9OwogCkBA IC0xMTQsNiArMTE4LDI4IEBAIHN0YXRpYyBpbnQgdmVyaWZ5X3BheWxvYWQoY29uc3QgeGVuX3N5 c2N0bF94c3BsaWNlX3VwbG9hZF90ICp1cGxvYWQsIGNoYXIgKm4pCiAgICAgcmV0dXJuIDA7CiB9 CiAKK3Vuc2lnbmVkIGxvbmcgeHNwbGljZV9zeW1ib2xzX2xvb2t1cF9ieV9uYW1lKGNvbnN0IGNo YXIgKnN5bW5hbWUpCit7CisgICAgc3RydWN0IHBheWxvYWQgKmRhdGE7CisKKyAgICBBU1NFUlQo c3Bpbl9pc19sb2NrZWQoJnBheWxvYWRfbG9jaykpOworICAgIGxpc3RfZm9yX2VhY2hfZW50cnkg KCBkYXRhLCAmcGF5bG9hZF9saXN0LCBsaXN0ICkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGlu dCBpOworCisgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgZGF0YS0+bnN5bXM7IGkrKyApCisgICAg ICAgIHsKKyAgICAgICAgICAgIGlmICggIWRhdGEtPnN5bXRhYltpXS5uZXdfc3ltYm9sICkKKyAg ICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgaWYgKCAhc3RyY21wKGRhdGEt PnN5bXRhYltpXS5uYW1lLCBzeW1uYW1lKSApCisgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEt PnN5bXRhYltpXS52YWx1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAwOworfQor CiBzdGF0aWMgc3RydWN0IHBheWxvYWQgKmZpbmRfcGF5bG9hZChjb25zdCBjaGFyICpuYW1lKQog ewogICAgIHN0cnVjdCBwYXlsb2FkICpkYXRhLCAqZm91bmQgPSBOVUxMOwpAQCAtMzc5LDExICs0 MDUsMTI5IEBAIHN0YXRpYyBpbnQgcHJlcGFyZV9wYXlsb2FkKHN0cnVjdCBwYXlsb2FkICpwYXls b2FkLAogICAgICAgICBmb3IgKCBqID0gMDsgaiA8IEFSUkFZX1NJWkUoZi0+dS5wYWQpOyBqKysg KQogICAgICAgICAgICAgaWYgKCBmLT51LnBhZFtqXSApCiAgICAgICAgICAgICAgICAgcmV0dXJu IC1FSU5WQUw7CisKKyAgICAgICAgLyogTG9va3VwIGZ1bmN0aW9uJ3Mgb2xkIGFkZHJlc3MgaWYg bm90IGFscmVhZHkgcmVzb2x2ZWQuICovCisgICAgICAgIGlmICggIWYtPm9sZF9hZGRyICkKKyAg ICAgICAgeworICAgICAgICAgICAgZi0+b2xkX2FkZHIgPSAodm9pZCAqKXN5bWJvbHNfbG9va3Vw X2J5X25hbWUoZi0+bmFtZSk7CisgICAgICAgICAgICBpZiAoICFmLT5vbGRfYWRkciApCisgICAg ICAgICAgICB7CisgICAgICAgICAgICAgICAgZi0+b2xkX2FkZHIgPSAodm9pZCAqKXhzcGxpY2Vf c3ltYm9sc19sb29rdXBfYnlfbmFtZShmLT5uYW1lKTsKKyAgICAgICAgICAgICAgICBpZiAoICFm LT5vbGRfYWRkciApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBkcHJp bnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVzOiBDb3VsZCBub3QgcmVzb2x2ZSBvbGQgYWRkcmVz cyBvZiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGYtPm5hbWUsIGYtPm5h bWUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT0VOVDsKKyAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgWFNQ TElDRSAiJXM6IFJlc29sdmVkIG9sZCBhZGRyZXNzICVzID0+ICVwXG4iLAorICAgICAgICAgICAg ICAgICAgICBlbGYtPm5hbWUsIGYtPm5hbWUsIGYtPm9sZF9hZGRyKTsKKyAgICAgICAgfQogICAg IH0KIAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgYm9vbF90IGlzX3BheWxvYWRfc3ltYm9s KGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBzdHJ1Y3QgeHNwbGljZV9lbGZfc3ltICpzeW0pCit7CisgICAgaWYgKCBz eW0tPnN5bS0+c3Rfc2huZHggPT0gU0hOX1VOREVGIHx8CisgICAgICAgICBzeW0tPnN5bS0+c3Rf c2huZHggPj0gZWxmLT5oZHItPmVfc2hudW0gKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJl dHVybiAoZWxmLT5zZWNbc3ltLT5zeW0tPnN0X3NobmR4XS5zZWMtPnNoX2ZsYWdzICYgU0hGX0FM TE9DKSAmJgorICAgICAgICAgICAgKEVMRjY0X1NUX1RZUEUoc3ltLT5zeW0tPnN0X2luZm8pID09 IFNUVF9PQkpFQ1QgfHwKKyAgICAgICAgICAgICBFTEY2NF9TVF9UWVBFKHN5bS0+c3ltLT5zdF9p bmZvKSA9PSBTVFRfRlVOQyk7Cit9CisKK3N0YXRpYyBpbnQgYnVpbGRfc3ltYm9sX3RhYmxlKHN0 cnVjdCBwYXlsb2FkICpwYXlsb2FkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3Qgc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCit7CisgICAgdW5zaWduZWQgaW50IGksIGosIG5z eW1zID0gMDsKKyAgICBzaXplX3Qgc3RydGFiX2xlbiA9IDA7CisgICAgc3RydWN0IHhzcGxpY2Vf c3ltYm9sICpzeW10YWI7CisgICAgY2hhciAqc3RydGFiOworCisgICAgQVNTRVJUKHBheWxvYWQt Pm5mdW5jcyk7CisKKyAgICAvKiBSZWNhbGwgdGhhdCBzZWN0aW9uIEAwIGlzIGFsd2F5cyBOVUxM LiAqLworICAgIGZvciAoIGkgPSAxOyBpIDwgZWxmLT5uc3ltOyBpKysgKQorICAgIHsKKyAgICAg ICAgaWYgKCBpc19wYXlsb2FkX3N5bWJvbChlbGYsIGVsZi0+c3ltICsgaSkgKQorICAgICAgICB7 CisgICAgICAgICAgICBuc3ltcysrOworICAgICAgICAgICAgc3RydGFiX2xlbiArPSBzdHJsZW4o ZWxmLT5zeW1baV0ubmFtZSkgKyAxOworICAgICAgICB9CisgICAgfQorCisgICAgc3ltdGFiID0g eG1hbGxvY19hcnJheShzdHJ1Y3QgeHNwbGljZV9zeW1ib2wsIG5zeW1zKTsKKyAgICBzdHJ0YWIg PSB4bWFsbG9jX2FycmF5KGNoYXIsIHN0cnRhYl9sZW4pOworCisgICAgaWYgKCAhc3RydGFiIHx8 ICFzeW10YWIgKQorICAgIHsKKyAgICAgICAgeGZyZWUoc3RydGFiKTsKKyAgICAgICAgeGZyZWUo c3ltdGFiKTsKKyAgICAgICAgcmV0dXJuIC1FTk9NRU07CisgICAgfQorCisgICAgbnN5bXMgPSAw OworICAgIHN0cnRhYl9sZW4gPSAwOworICAgIGZvciAoIGkgPSAxOyBpIDwgZWxmLT5uc3ltOyBp KysgKQorICAgIHsKKyAgICAgICAgaWYgKCBpc19wYXlsb2FkX3N5bWJvbChlbGYsIGVsZi0+c3lt ICsgaSkgKQorICAgICAgICB7CisgICAgICAgICAgICBzeW10YWJbbnN5bXNdLm5hbWUgPSBzdHJ0 YWIgKyBzdHJ0YWJfbGVuOworICAgICAgICAgICAgc3ltdGFiW25zeW1zXS5zaXplID0gZWxmLT5z eW1baV0uc3ltLT5zdF9zaXplOworICAgICAgICAgICAgc3ltdGFiW25zeW1zXS52YWx1ZSA9IGVs Zi0+c3ltW2ldLnN5bS0+c3RfdmFsdWU7CisgICAgICAgICAgICBzeW10YWJbbnN5bXNdLm5ld19z eW1ib2wgPSAwOyAvKiBUbyBiZSBjaGVja2VkIGJlbG93LiAqLworICAgICAgICAgICAgc3RydGFi X2xlbiArPSBzdHJsY3B5KHN0cnRhYiArIHN0cnRhYl9sZW4sIGVsZi0+c3ltW2ldLm5hbWUsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS1NZTV9OQU1FX0xFTikgKyAxOworICAg ICAgICAgICAgbnN5bXMrKzsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZvciAoIGkgPSAwOyBp IDwgbnN5bXM7IGkrKyApCisgICAgeworICAgICAgICBib29sX3QgZm91bmQgPSAwOworCisgICAg ICAgIGZvciAoIGogPSAwOyBqIDwgcGF5bG9hZC0+bmZ1bmNzOyBqKysgKQorICAgICAgICB7Cisg ICAgICAgICAgICBpZiAoIHN5bXRhYltpXS52YWx1ZSA9PSAodW5zaWduZWQgbG9uZylwYXlsb2Fk LT5mdW5jc1tqXS5uZXdfYWRkciApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZm91 bmQgPSAxOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9 CisKKyAgICAgICAgaWYgKCAhZm91bmQgKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIHhz cGxpY2Vfc3ltYm9sc19sb29rdXBfYnlfbmFtZShzeW10YWJbaV0ubmFtZSkgKQorICAgICAgICAg ICAgeworICAgICAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQTElDRSAiJXM6IGR1 cGxpY2F0ZSBuZXcgc3ltYm9sOiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsZi0+ bmFtZSwgc3ltdGFiW2ldLm5hbWUpOworICAgICAgICAgICAgICAgIHhmcmVlKHN5bXRhYik7Cisg ICAgICAgICAgICAgICAgeGZyZWUoc3RydGFiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLUVF WElTVDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN5bXRhYltpXS5uZXdfc3ltYm9sID0g MTsKKyAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0RFQlVHLCBYU1BMSUNFICIlczogbmV3IHN5 bWJvbCAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgIGVsZi0+bmFtZSwgc3ltdGFiW2ldLm5h bWUpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgLyog bmV3X3N5bWJvbCBpcyBub3Qgc2V0LiAqLworICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfREVC VUcsIFhTUExJQ0UgIiVzOiBvdmVycmlkaW5nIHN5bWJvbCAlc1xuIiwKKyAgICAgICAgICAgICAg ICAgICAgZWxmLT5uYW1lLCBzeW10YWJbaV0ubmFtZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg ICBwYXlsb2FkLT5zeW10YWIgPSBzeW10YWI7CisgICAgcGF5bG9hZC0+c3RydGFiID0gc3RydGFi OworICAgIHBheWxvYWQtPm5zeW1zID0gbnN5bXM7CisKKyAgICByZXR1cm4gMDsKK30KKwogc3Rh dGljIHZvaWQgZnJlZV9wYXlsb2FkKHN0cnVjdCBwYXlsb2FkICpkYXRhKQogewogICAgIEFTU0VS VChzcGluX2lzX2xvY2tlZCgmcGF5bG9hZF9sb2NrKSk7CkBAIC0zOTEsNiArNTM1LDggQEAgc3Rh dGljIHZvaWQgZnJlZV9wYXlsb2FkKHN0cnVjdCBwYXlsb2FkICpkYXRhKQogICAgIHBheWxvYWRf Y250LS07CiAgICAgcGF5bG9hZF92ZXJzaW9uKys7CiAgICAgZnJlZV9wYXlsb2FkX2RhdGEoZGF0 YSk7CisgICAgeGZyZWUoZGF0YS0+c3ltdGFiKTsKKyAgICB4ZnJlZShkYXRhLT5zdHJ0YWIpOwog ICAgIHhmcmVlKGRhdGEpOwogfQogCkBAIC00MjMsNiArNTY5LDEwIEBAIHN0YXRpYyBpbnQgbG9h ZF9wYXlsb2FkX2RhdGEoc3RydWN0IHBheWxvYWQgKnBheWxvYWQsIHZvaWQgKnJhdywgc2l6ZV90 IGxlbikKICAgICBpZiAoIHJjICkKICAgICAgICAgZ290byBvdXQ7CiAKKyAgICByYyA9IGJ1aWxk X3N5bWJvbF90YWJsZShwYXlsb2FkLCAmZWxmKTsKKyAgICBpZiAoIHJjICkKKyAgICAgICAgZ290 byBvdXQ7CisKICAgICByYyA9IHNlY3VyZV9wYXlsb2FkKHBheWxvYWQsICZlbGYpOwogCiAgb3V0 OgpAQCAtNDk0LDggKzY0NCwxMiBAQCBzdGF0aWMgaW50IHhzcGxpY2VfdXBsb2FkKHhlbl9zeXNj dGxfeHNwbGljZV91cGxvYWRfdCAqdXBsb2FkKQogCiAgICAgdmZyZWUocmF3X2RhdGEpOwogCi0g ICAgaWYgKCByYyApCisgICAgaWYgKCByYyAmJiBkYXRhICkKKyAgICB7CisgICAgICAgIHhmcmVl KGRhdGEtPnN5bXRhYik7CisgICAgICAgIHhmcmVlKGRhdGEtPnN0cnRhYik7CiAgICAgICAgIHhm cmVlKGRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByYzsKIH0KZGlmZiAtLWdpdCBhL3hlbi9j b21tb24veHNwbGljZV9lbGYuYyBiL3hlbi9jb21tb24veHNwbGljZV9lbGYuYwppbmRleCBmNTlm MDExLi5mYmM4NmViIDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL3hzcGxpY2VfZWxmLmMKKysrIGIv eGVuL2NvbW1vbi94c3BsaWNlX2VsZi5jCkBAIC00LDYgKzQsNyBAQAogCiAjaW5jbHVkZSA8eGVu L2Vycm5vLmg+CiAjaW5jbHVkZSA8eGVuL2xpYi5oPgorI2luY2x1ZGUgPHhlbi9zeW1ib2xzLmg+ CiAjaW5jbHVkZSA8eGVuL3hzcGxpY2VfZWxmLmg+CiAjaW5jbHVkZSA8eGVuL3hzcGxpY2UuaD4K IApAQCAtMjc0LDkgKzI3NSwyMSBAQCBpbnQgeHNwbGljZV9lbGZfcmVzb2x2ZV9zeW1ib2xzKHN0 cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2Fz ZSBTSE5fVU5ERUY6Ci0gICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIFhTUExJQ0UgIiVz OiBVbmtub3duIHN5bWJvbDogJXNcbiIsCi0gICAgICAgICAgICAgICAgICAgIGVsZi0+bmFtZSwg ZWxmLT5zeW1baV0ubmFtZSk7Ci0gICAgICAgICAgICByYyA9IC1FTk9FTlQ7CisgICAgICAgICAg ICBlbGYtPnN5bVtpXS5zeW0tPnN0X3ZhbHVlID0gKHVuc2lnbmVkIGxvbmcpc3ltYm9sc19sb29r dXBfYnlfbmFtZShlbGYtPnN5bVtpXS5uYW1lKTsKKyAgICAgICAgICAgIGlmICggIWVsZi0+c3lt W2ldLnN5bS0+c3RfdmFsdWUgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVsZi0+ c3ltW2ldLnN5bS0+c3RfdmFsdWUgPSAodW5zaWduZWQgbG9uZykKKyAgICAgICAgICAgICAgICAg ICAgICAgIHhzcGxpY2Vfc3ltYm9sc19sb29rdXBfYnlfbmFtZShlbGYtPnN5bVtpXS5uYW1lKTsK KyAgICAgICAgICAgICAgICBpZiAoICFlbGYtPnN5bVtpXS5zeW0tPnN0X3ZhbHVlICkKKyAgICAg ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgWFNQ TElDRSAiJXM6IFVua25vd24gc3ltYm9sOiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBlbGYtPm5hbWUsIGVsZi0+c3ltW2ldLm5hbWUpOworICAgICAgICAgICAgICAgICAgICBy YyA9IC1FTk9FTlQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0RFQlVHLCBYU1BM SUNFICIlczogVW5kZWZpbmVkIHN5bWJvbCByZXNvbHZlZDogJXMgPT4gJSMiUFJJeEVsZkFkZHIi XG4iLAorICAgICAgICAgICAgICAgICAgICBlbGYtPm5hbWUsIGVsZi0+c3ltW2ldLm5hbWUsIGVs Zi0+c3ltW2ldLnN5bS0+c3RfdmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAg Y2FzZSBTSE5fQUJTOgpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL3N5bWJvbHMuaCBiL3hl bi9pbmNsdWRlL3hlbi9zeW1ib2xzLmgKaW5kZXggZjU4ZTYxMS4uZDliZDM1ZiAxMDA2NDQKLS0t IGEveGVuL2luY2x1ZGUveGVuL3N5bWJvbHMuaAorKysgYi94ZW4vaW5jbHVkZS94ZW4vc3ltYm9s cy5oCkBAIC0yMyw0ICsyMyw2IEBAIGNvbnN0IGNoYXIgKnN5bWJvbHNfbG9va3VwKHVuc2lnbmVk IGxvbmcgYWRkciwKIGludCB4ZW5zeW1zX3JlYWQodWludDMyX3QgKnN5bW51bSwgY2hhciAqdHlw ZSwKICAgICAgICAgICAgICAgICAgdWludDY0X3QgKmFkZHJlc3MsIGNoYXIgKm5hbWUpOwogCit1 bnNpZ25lZCBsb25nIHN5bWJvbHNfbG9va3VwX2J5X25hbWUoY29uc3QgY2hhciAqc3ltbmFtZSk7 CisKICNlbmRpZiAvKl9YRU5fU1lNQk9MU19IKi8KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hl bi94c3BsaWNlLmggYi94ZW4vaW5jbHVkZS94ZW4veHNwbGljZS5oCmluZGV4IDUzNmE5ZTguLjA1 OTk0NzYgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi94c3BsaWNlLmgKKysrIGIveGVuL2lu Y2x1ZGUveGVuL3hzcGxpY2UuaApAQCAtNDYsOCArNDYsMTYgQEAgc3RydWN0IHhzcGxpY2VfcGF0 Y2hfZnVuY19pbnRlcm5hbCB7CiAvKiBDb252ZW5pZW5jZSBkZWZpbmUgZm9yIHByaW50ay4gKi8K ICNkZWZpbmUgWFNQTElDRSAieHNwbGljZTogIgogCitzdHJ1Y3QgeHNwbGljZV9zeW1ib2wgewor ICAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICAgdWludDY0X3QgdmFsdWU7CisgICAgc2l6ZV90IHNp emU7CisgICAgYm9vbF90IG5ld19zeW1ib2w7Cit9OworCiBpbnQgeHNwbGljZV9vcChzdHJ1Y3Qg eGVuX3N5c2N0bF94c3BsaWNlX29wICopOwogdm9pZCBjaGVja19mb3JfeHNwbGljZV93b3JrKHZv aWQpOwordW5zaWduZWQgbG9uZyB4c3BsaWNlX3N5bWJvbHNfbG9va3VwX2J5X25hbWUoY29uc3Qg Y2hhciAqc3ltbmFtZSk7CiAKIC8qIEFyY2ggaG9va3MuICovCiBpbnQgYXJjaF94c3BsaWNlX3Zl cmlmeV9lbGYoY29uc3Qgc3RydWN0IHhzcGxpY2VfZWxmICplbGYpOwotLSAKMi41LjAKCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFp bGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hl bi1kZXZlbAo=