From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Kiper Subject: [PATCH v2 8/8] efi: drop original xen.efi code and build mechanism Date: Tue, 19 Jun 2018 16:35:46 +0200 Message-ID: <1529418946-30114-9-git-send-email-daniel.kiper@oracle.com> References: <1529418946-30114-1-git-send-email-daniel.kiper@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1fVHkJ-0006qQ-GZ for xen-devel@lists.xenproject.org; Tue, 19 Jun 2018 14:36:35 +0000 In-Reply-To: <1529418946-30114-1-git-send-email-daniel.kiper@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: sstabellini@kernel.org, wei.liu2@citrix.com, george.dunlap@eu.citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, tim@xen.org, julien.grall@arm.com, jbeulich@suse.com, tamas.k.lengyel@gmail.com List-Id: xen-devel@lists.xenproject.org VGhlbiByZW5hbWUgeGVuLm1iLmVmaSB0byB4ZW4uZWZpIGFuZCBkcm9wIGFsbCByZWxhdGVkCmRp ZmZlcmVudGlhdG9ycyBpbiB0aGUgY29kZS4KClNpZ25lZC1vZmYtYnk6IERhbmllbCBLaXBlciA8 ZGFuaWVsLmtpcGVyQG9yYWNsZS5jb20+Ci0tLQogeGVuL01ha2VmaWxlICAgICAgICAgICAgICAg ICAgICB8ICAgMTYgKy0KIHhlbi9hcmNoL2FybS9lZmkvZWZpLWJvb3QuaCAgICAgfCAgICA0IC0K IHhlbi9hcmNoL3g4Ni9NYWtlZmlsZSAgICAgICAgICAgfCAgIDg3ICstLS0tLS0tLQogeGVuL2Fy Y2gveDg2L2Jvb3QvaGVhZC5TICAgICAgICB8ICAgIDIgKy0KIHhlbi9hcmNoL3g4Ni9lZmkvTWFr ZWZpbGUgICAgICAgfCAgIDE3ICstCiB4ZW4vYXJjaC94ODYvZWZpL2J1aWxkaWQuaWhleCAgIHwg ICAgMyAtCiB4ZW4vYXJjaC94ODYvZWZpL2NoZWNrLmMgICAgICAgIHwgICAgNCAtCiB4ZW4vYXJj aC94ODYvZWZpL2VmaS1ib290LmggICAgIHwgICA4OCArLS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9l ZmkvbWtyZWxvYy5jICAgICAgfCAgMzg0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogeGVuL2FyY2gveDg2L2VmaS9yZWxvY3MtZHVtbXkuUyB8ICAgMTEgLS0KIHhlbi9h cmNoL3g4Ni9lZmkvc3R1Yi5jICAgICAgICAgfCAgIDk3IC0tLS0tLS0tLS0KIHhlbi9hcmNoL3g4 Ni94ZW4ubGRzLlMgICAgICAgICAgfCAgIDgxICstLS0tLS0tLQogeGVuL2NvbW1vbi9lZmkvYm9v dC5jICAgICAgICAgICB8ICAgIDIgLQogeGVuL2NvbW1vbi92ZXJzaW9uLmMgICAgICAgICAgICB8 ICAgNTEgLS0tLS0tCiB4ZW4vaW5jbHVkZS94ZW4vZWZpLmggICAgICAgICAgIHwgICAgMSAtCiAx NSBmaWxlcyBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCA4MjcgZGVsZXRpb25zKC0pCiBkZWxl dGUgbW9kZSAxMDA2NDQgeGVuL2FyY2gveDg2L2VmaS9idWlsZGlkLmloZXgKIGRlbGV0ZSBtb2Rl IDEwMDY0NCB4ZW4vYXJjaC94ODYvZWZpL2NoZWNrLmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCB4ZW4v YXJjaC94ODYvZWZpL21rcmVsb2MuYwogZGVsZXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL3g4Ni9l ZmkvcmVsb2NzLWR1bW15LlMKIGRlbGV0ZSBtb2RlIDEwMDY0NCB4ZW4vYXJjaC94ODYvZWZpL3N0 dWIuYwoKZGlmZiAtLWdpdCBhL3hlbi9NYWtlZmlsZSBiL3hlbi9NYWtlZmlsZQppbmRleCBhNDli OWI3Li4wYzAzOTE0IDEwMDY0NAotLS0gYS94ZW4vTWFrZWZpbGUKKysrIGIveGVuL01ha2VmaWxl CkBAIC02MSwyMCArNjEsMTcgQEAgX2luc3RhbGw6ICQoVEFSR0VUKSQoQ09ORklHX1hFTl9JTlNU QUxMX1NVRkZJWCkKIAlsbiAtZiAtcyAkKFQpLSQoWEVOX0ZVTExWRVJTSU9OKSQoWikgJChEKSQo Qk9PVF9ESVIpLyQoVCktJChYRU5fVkVSU0lPTikuJChYRU5fU1VCVkVSU0lPTikkKFopCiAJbG4g LWYgLXMgJChUKS0kKFhFTl9GVUxMVkVSU0lPTikkKFopICQoRCkkKEJPT1RfRElSKS8kKFQpLSQo WEVOX1ZFUlNJT04pJChaKQogCWxuIC1mIC1zICQoVCktJChYRU5fRlVMTFZFUlNJT04pJChaKSAk KEQpJChCT09UX0RJUikvJChUKSQoWikKLQkkKElOU1RBTExfREFUQSkgJChUQVJHRVQpLm1iLmVm aSAkKEQpJChCT09UX0RJUikvJChUKS0kKFhFTl9GVUxMVkVSU0lPTikubWIuZWZpCi0JbG4gLWYg LXMgJChUKS0kKFhFTl9GVUxMVkVSU0lPTikubWIuZWZpICQoRCkkKEJPT1RfRElSKS8kKFQpLSQo WEVOX1ZFUlNJT04pLiQoWEVOX1NVQlZFUlNJT04pLm1iLmVmaQotCWxuIC1mIC1zICQoVCktJChY RU5fRlVMTFZFUlNJT04pLm1iLmVmaSAkKEQpJChCT09UX0RJUikvJChUKS0kKFhFTl9WRVJTSU9O KS5tYi5lZmkKLQlsbiAtZiAtcyAkKFQpLSQoWEVOX0ZVTExWRVJTSU9OKS5tYi5lZmkgJChEKSQo Qk9PVF9ESVIpLyQoVCkubWIuZWZpCisJJChJTlNUQUxMX0RBVEEpICQoVEFSR0VUKS5lZmkgJChE KSQoQk9PVF9ESVIpLyQoVCktJChYRU5fRlVMTFZFUlNJT04pLmVmaQorCWxuIC1mIC1zICQoVCkt JChYRU5fRlVMTFZFUlNJT04pLmVmaSAkKEQpJChCT09UX0RJUikvJChUKS0kKFhFTl9WRVJTSU9O KS4kKFhFTl9TVUJWRVJTSU9OKS5lZmkKKwlsbiAtZiAtcyAkKFQpLSQoWEVOX0ZVTExWRVJTSU9O KS5lZmkgJChEKSQoQk9PVF9ESVIpLyQoVCktJChYRU5fVkVSU0lPTikuZWZpCisJbG4gLWYgLXMg JChUKS0kKFhFTl9GVUxMVkVSU0lPTikuZWZpICQoRCkkKEJPT1RfRElSKS8kKFQpLmVmaQogCVsg LWQgIiQoRCkkKERFQlVHX0RJUikiIF0gfHwgJChJTlNUQUxMX0RJUikgJChEKSQoREVCVUdfRElS KQogCSQoSU5TVEFMTF9EQVRBKSAkKFRBUkdFVCktc3ltcyAkKEQpJChERUJVR19ESVIpLyQoVCkt c3ltcy0kKFhFTl9GVUxMVkVSU0lPTikKIAkkKElOU1RBTExfREFUQSkgJChUQVJHRVQpLXN5bXMu bWFwICQoRCkkKERFQlVHX0RJUikvJChUKS1zeW1zLSQoWEVOX0ZVTExWRVJTSU9OKS5tYXAKIAkk KElOU1RBTExfREFUQSkgJChLQ09ORklHX0NPTkZJRykgJChEKSQoQk9PVF9ESVIpLyQoVCktJChY RU5fRlVMTFZFUlNJT04pLmNvbmZpZwotCWlmIFsgLXIgJChUQVJHRVQpLmVmaSAtYSAtbiAnJChF RklfRElSKScgXTsgdGhlbiBcCisJaWYgWyAtbiAnJChFRklfRElSKScgXTsgdGhlbiBcCiAJCVsg LWQgJChEKSQoRUZJX0RJUikgXSB8fCAkKElOU1RBTExfRElSKSAkKEQpJChFRklfRElSKTsgXAog CQkkKElOU1RBTExfREFUQSkgJChUQVJHRVQpLmVmaSAkKEQpJChFRklfRElSKS8kKFQpLSQoWEVO X0ZVTExWRVJTSU9OKS5lZmk7IFwKLQkJaWYgWyAtZSAkKFRBUkdFVCkuZWZpLm1hcCBdOyB0aGVu IFwKLQkJCSQoSU5TVEFMTF9EQVRBKSAkKFRBUkdFVCkuZWZpLm1hcCAkKEQpJChERUJVR19ESVIp LyQoVCktJChYRU5fRlVMTFZFUlNJT04pLmVmaS5tYXA7IFwKLQkJZmk7IFwKIAkJbG4gLXNmICQo VCktJChYRU5fRlVMTFZFUlNJT04pLmVmaSAkKEQpJChFRklfRElSKS8kKFQpLSQoWEVOX1ZFUlNJ T04pLiQoWEVOX1NVQlZFUlNJT04pLmVmaTsgXAogCQlsbiAtc2YgJChUKS0kKFhFTl9GVUxMVkVS U0lPTikuZWZpICQoRCkkKEVGSV9ESVIpLyQoVCktJChYRU5fVkVSU0lPTikuZWZpOyBcCiAJCWxu IC1zZiAkKFQpLSQoWEVOX0ZVTExWRVJTSU9OKS5lZmkgJChEKSQoRUZJX0RJUikvJChUKS5lZmk7 IFwKQEAgLTEwMyw3ICsxMDAsNiBAQCBfdW5pbnN0YWxsOgogCXJtIC1mICQoRCkkKERFQlVHX0RJ UikvJChUKS1zeW1zLSQoWEVOX0ZVTExWRVJTSU9OKS5tYXAKIAlybSAtZiAkKEQpJChFRklfRElS KS8kKFQpLSQoWEVOX0ZVTExWRVJTSU9OKS5lZmkKIAlybSAtZiAkKEQpJChFRklfRElSKS8kKFQp LSQoWEVOX1ZFUlNJT04pLiQoWEVOX1NVQlZFUlNJT04pLmVmaQotCXJtIC1mICQoRCkkKERFQlVH X0RJUikvJChUKS0kKFhFTl9GVUxMVkVSU0lPTikuZWZpLm1hcAogCXJtIC1mICQoRCkkKEVGSV9E SVIpLyQoVCktJChYRU5fVkVSU0lPTikuZWZpCiAJcm0gLWYgJChEKSQoRUZJX0RJUikvJChUKS5l ZmkKIAlybSAtZiAkKEQpJChFRklfTU9VTlRQT0lOVCkvZWZpLyQoRUZJX1ZFTkRPUikvJChUKS0k KFhFTl9GVUxMVkVSU0lPTikuZWZpCkBAIC0xMjUsNyArMTIxLDcgQEAgX2NsZWFuOiBkZWxldGUt dW5mcmVzaC1maWxlcwogCSQoTUFLRSkgLWYgJChCQVNFRElSKS9SdWxlcy5tayAtQyB0ZXN0IGNs ZWFuCiAJJChNQUtFKSAtZiAkKEJBU0VESVIpL3Rvb2xzL2tjb25maWcvTWFrZWZpbGUua2NvbmZp ZyBBUkNIPSQoQVJDSCkgU1JDQVJDSD0kKFNSQ0FSQ0gpIGNsZWFuCiAJZmluZCAuIFwoIC1uYW1l ICIqLm8iIC1vIC1uYW1lICIuKi5kIiAtbyAtbmFtZSAiKi5nY25vIiBcKSAtZXhlYyBybSAtZiB7 fSBcOwotCXJtIC1mIGluY2x1ZGUvYXNtICQoVEFSR0VUKSAkKFRBUkdFVCkuZ3ogJChUQVJHRVQp LmVmaSAkKFRBUkdFVCkubWIuZWZpICQoVEFSR0VUKS5lZmkubWFwICQoVEFSR0VUKS1zeW1zICQo VEFSR0VUKS1zeW1zLm1hcCAqfiBjb3JlCisJcm0gLWYgaW5jbHVkZS9hc20gJChUQVJHRVQpICQo VEFSR0VUKS5neiAkKFRBUkdFVCkuZWZpICQoVEFSR0VUKS1zeW1zICQoVEFSR0VUKS1zeW1zLm1h cCAqfiBjb3JlCiAJcm0gLWYgaW5jbHVkZS9hc20tKi9hc20tb2Zmc2V0cy5oCiAJcm0gLWYgLmJh bm5lcgogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vZWZpL2VmaS1ib290LmggYi94ZW4vYXJj aC9hcm0vZWZpL2VmaS1ib290LmgKaW5kZXggY2E2NTVmZi4uMDQ5NTE1MCAxMDA2NDQKLS0tIGEv eGVuL2FyY2gvYXJtL2VmaS9lZmktYm9vdC5oCisrKyBiL3hlbi9hcmNoL2FybS9lZmkvZWZpLWJv b3QuaApAQCAtMzQxLDEwICszNDEsNiBAQCBzdGF0aWMgdm9pZCBfX2luaXQgKmZkdF9pbmNyZWFz ZV9zaXplKHN0cnVjdCBmaWxlICpmZHRmaWxlLCBpbnQgYWRkX3NpemUpCiAgICAgcmV0dXJuIG5l d19mZHQ7CiB9CiAKLXN0YXRpYyB2b2lkIF9faW5pdCBlZmlfYXJjaF9yZWxvY2F0ZV9pbWFnZSh1 bnNpZ25lZCBsb25nIGRlbHRhKQotewotfQotCiBzdGF0aWMgdm9pZCBfX2luaXQgZWZpX2FyY2hf cHJvY2Vzc19tZW1vcnlfbWFwKEVGSV9TWVNURU1fVEFCTEUgKlN5c3RlbVRhYmxlLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICptYXAsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJTlROIG1hcF9zaXpl LApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L01ha2VmaWxlIGIveGVuL2FyY2gveDg2L01ha2Vm aWxlCmluZGV4IGVmM2ZiNTEuLjkyYzM4ZmUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9NYWtl ZmlsZQorKysgYi94ZW4vYXJjaC94ODYvTWFrZWZpbGUKQEAgLTc0LDEwICs3NCw2IEBAIG9iai15 ICs9IHhzdGF0ZS5vCiAKIHg4Nl9lbXVsYXRlLm86IHg4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMg eDg2X2VtdWxhdGUveDg2X2VtdWxhdGUuaAogCi1lZmkteSA6PSAkKHNoZWxsIGlmIFsgISAtciAk KEJBU0VESVIpL2luY2x1ZGUveGVuL2NvbXBpbGUuaCAtbyBcCi0gICAgICAgICAgICAgICAgICAg ICAgLU8gJChCQVNFRElSKS9pbmNsdWRlL3hlbi9jb21waWxlLmggXTsgdGhlbiBcCi0gICAgICAg ICAgICAgICAgICAgICAgICAgZWNobyAnJChUQVJHRVQpLmVmaSc7IGZpKQotCiBpZm5lcSAoJChi dWlsZF9pZF9saW5rZXIpLCkKIG5vdGVzX3BoZHJzID0gLS1ub3RlcwogZWxzZQpAQCAtOTgsMTIg Kzk0LDEyIEBAIGVuZGlmCiBzeW1zLXdhcm4tZHVwLXkgOj0gLS13YXJuLWR1cAogc3ltcy13YXJu LWR1cC0kKENPTkZJR19TVVBQUkVTU19EVVBMSUNBVEVfU1lNQk9MX1dBUk5JTkdTKSA6PQogCi0k KFRBUkdFVCk6ICQoVEFSR0VUKS1zeW1zICQoZWZpLXkpIGJvb3QvbWtlbGYzMgorJChUQVJHRVQp OiAkKFRBUkdFVCktc3ltcyBib290L21rZWxmMzIKIAkuL2Jvb3QvbWtlbGYzMiAkKG5vdGVzX3Bo ZHJzKSAkKFRBUkdFVCktc3ltcyAkKFRBUkdFVCkgJChYRU5fSU1HX09GRlNFVCkgXAogCSAgICAg ICAgICAgICAgIGAkKE5NKSAkKFRBUkdFVCktc3ltcyB8IHNlZCAtbmUgJ3MvXlwoW14gXSpcKSAu IF9fMk1fcndkYXRhX2VuZCQkLzB4XDEvcCdgCiAJJChPQkpDT1BZKSAtTyBiaW5hcnkgLVMgLS1j aGFuZ2Utc2VjdGlvbi1hZGRyZXNzIFwKIAkJIi5lZmkucGUuaGVhZGVyLWAkKE5NKSAkKFRBUkdF VCktc3ltcyB8IHNlZCAtbmUgJ3MvXlwoW14gXSpcKSAuIF9faW1hZ2VfYmFzZV9fJCQvMHhcMS9w J2AiIFwKLQkJJChUQVJHRVQpLXN5bXMgJChUQVJHRVQpLm1iLmVmaQorCQkkKFRBUkdFVCktc3lt cyAkKFRBUkdFVCkuZWZpCiAKIEFMTF9PQkpTIDo9ICQoQkFTRURJUikvYXJjaC94ODYvYm9vdC9i dWlsdF9pbi5vICQoQkFTRURJUikvYXJjaC94ODYvZWZpL2J1aWx0X2luLm8gJChBTExfT0JKUykK IApAQCAtMTEyLDIxICsxMDgsMTIgQEAgaWZlcSAoJChDT05GSUdfTFRPKSx5KQogcHJlbGlua19s dG8ubzogJChBTExfT0JKUykKIAkkKExEX0xUTykgLXIgLW8gJEAgJF4KIAotcHJlbGluay1lZmlf bHRvLm86ICQoQUxMX09CSlMpIGVmaS9ydW50aW1lLm8gZWZpL2NvbXBhdC5vCi0JJChndWFyZCkg JChMRF9MVE8pIC1yIC1vICRAICQoZmlsdGVyLW91dCAlL2VmaS9idWlsdF9pbi5vLCReKQotCiAj IExpbmsgaXQgd2l0aCBhbGwgdGhlIGJpbmFyeSBvYmplY3RzCiBwcmVsaW5rLm86ICQocGF0c3Vi c3QgJS9idWlsdF9pbi5vLCUvYnVpbHRfaW5fYmluLm8sJChBTExfT0JKUykpIHByZWxpbmtfbHRv Lm8KIAkkKExEKSAkKExERkxBR1MpIC1yIC1vICRAICReCi0KLXByZWxpbmstZWZpLm86ICQocGF0 c3Vic3QgJS9idWlsdF9pbi5vLCUvYnVpbHRfaW5fYmluLm8sJChBTExfT0JKUykpIHByZWxpbmst ZWZpX2x0by5vIGVmaS9ib290LmluaXQubwotCSQoZ3VhcmQpICQoTEQpICQoTERGTEFHUykgLXIg LW8gJEAgJF4KIGVsc2UKIHByZWxpbmsubzogJChBTExfT0JKUykKIAkkKExEKSAkKExERkxBR1Mp IC1yIC1vICRAICReCi0KLXByZWxpbmstZWZpLm86ICQoQUxMX09CSlMpIGVmaS9ib290LmluaXQu byBlZmkvcnVudGltZS5vIGVmaS9jb21wYXQubwotCSQoZ3VhcmQpICQoTEQpICQoTERGTEFHUykg LXIgLW8gJEAgJChmaWx0ZXItb3V0ICUvZWZpL2J1aWx0X2luLm8sJF4pCiBlbmRpZgogCiAkKEJB U0VESVIpL2NvbW1vbi9zeW1ib2xzLWR1bW15Lm86CkBAIC0xNTIsNjYgKzEzOSw2IEBAICQoVEFS R0VUKS1zeW1zOiBwcmVsaW5rLm8geGVuLmxkcyAkKEJBU0VESVIpL2NvbW1vbi9zeW1ib2xzLWR1 bW15Lm8KIAkJPiQoQEQpLyQoQEYpLm1hcAogCXJtIC1mICQoQEQpLy4kKEBGKS5bMC05XSoKIAot bm90ZS5vOiAkKFRBUkdFVCktc3ltcwotCSQoT0JKQ09QWSkgLU8gYmluYXJ5IC0tb25seS1zZWN0 aW9uPS5ub3RlLmdudS5idWlsZC1pZCAgJChCQVNFRElSKS94ZW4tc3ltcyAkQC5iaW4KLQkkKE9C SkNPUFkpIC1JIGJpbmFyeSAtTyBlbGY2NC14ODYtNjQgLUIgaTM4Njp4ODYtNjQgXAotCQktLXJl bmFtZS1zZWN0aW9uPS5kYXRhPS5ub3RlLmdudS5idWlsZC1pZCAtUyAkQC5iaW4gJEAKLQlybSAt ZiAkQC5iaW4KLQotRUZJX0xERkxBR1MgPSAkKHBhdHN1YnN0IC1tJSwtbWkzODZwZXAsJChMREZM QUdTKSkgLS1zdWJzeXN0ZW09MTAKLUVGSV9MREZMQUdTICs9IC0taW1hZ2UtYmFzZT0kKDEpIC0t c3RhY2s9MCwwIC0taGVhcD0wLDAgLS1zdHJpcC1kZWJ1ZwotRUZJX0xERkxBR1MgKz0gLS1zZWN0 aW9uLWFsaWdubWVudD0weDIwMDAwMCAtLWZpbGUtYWxpZ25tZW50PTB4MjAKLUVGSV9MREZMQUdT ICs9IC0tbWFqb3ItaW1hZ2UtdmVyc2lvbj0kKFhFTl9WRVJTSU9OKQotRUZJX0xERkxBR1MgKz0g LS1taW5vci1pbWFnZS12ZXJzaW9uPSQoWEVOX1NVQlZFUlNJT04pCi1FRklfTERGTEFHUyArPSAt LW1ham9yLW9zLXZlcnNpb249MiAtLW1pbm9yLW9zLXZlcnNpb249MAotRUZJX0xERkxBR1MgKz0g LS1tYWpvci1zdWJzeXN0ZW0tdmVyc2lvbj0yIC0tbWlub3Itc3Vic3lzdGVtLXZlcnNpb249MAot Ci0kKFRBUkdFVCkuZWZpOiBWSVJUX0JBU0UgPSAweCQoc2hlbGwgJChOTSkgZWZpL3JlbG9jcy1k dW1teS5vIHwgc2VkIC1uICdzLCBBIFZJUlRfU1RBUlQkJCwscCcpCi0kKFRBUkdFVCkuZWZpOiBB TFRfQkFTRSA9IDB4JChzaGVsbCAkKE5NKSBlZmkvcmVsb2NzLWR1bW15Lm8gfCBzZWQgLW4gJ3Ms IEEgQUxUX1NUQVJUJCQsLHAnKQotIyBEb24ndCB1c2UgJCh3aWxkY2FyZCAuLi4pIGhlcmUgLSBh dCBsZWFzdCBtYWtlIDMuODAgZXhwYW5kcyB0aGlzIHRvbyBlYXJseSEKLSQoVEFSR0VUKS5lZmk6 IGd1YXJkID0gJChpZiAkKHNoZWxsIGVjaG8gZWZpL2RpcyogfCBncmVwIGRpc2FibGVkKSw6KQot Ci1pZm5lcSAoJChidWlsZF9pZF9saW5rZXIpLCkKLWlmZXEgKCQoY2FsbCBsZC12ZXItYnVpbGQt aWQsJChMRCkgJChmaWx0ZXIgLW0lLCQoRUZJX0xERkxBR1MpKSkseSkKLUNGTEFHUyArPSAtREJV SUxEX0lEX0VGSQotRUZJX0xERkxBR1MgKz0gJChidWlsZF9pZF9saW5rZXIpCi1ub3RlX2ZpbGUg Oj0gZWZpL2J1aWxkaWQubwotIyBOQjogdGhpcyBtdXN0IGJlIHRoZSBsYXN0IGlucHV0IGluIHRo ZSBsaW5rZXIgY2FsbCwgYmVjYXVzZSBpbnB1dHMgZm9sbG93aW5nCi0jIHRoZSAtYiBvcHRpb24g d2lsbCBhbGwgYmUgdHJlYXRlZCBhcyBiZWluZyBpbiB0aGUgc3BlY2lmaWVkIGZvcm1hdC4KLW5v dGVfZmlsZV9vcHRpb24gOj0gLWIgcGUteDg2LTY0ICQobm90ZV9maWxlKQotZWxzZQotbm90ZV9m aWxlIDo9IG5vdGUubwotZW5kaWYKLWVsc2UKLW5vdGVfZmlsZSA6PQotZW5kaWYKLW5vdGVfZmls ZV9vcHRpb24gPz0gJChub3RlX2ZpbGUpCi0KLSQoVEFSR0VUKS5lZmk6IHByZWxpbmstZWZpLm8g JChub3RlX2ZpbGUpIGVmaS5sZHMgZWZpL3JlbG9jcy1kdW1teS5vICQoQkFTRURJUikvY29tbW9u L3N5bWJvbHMtZHVtbXkubyBlZmkvbWtyZWxvYwotCSQoZm9yZWFjaCBiYXNlLCAkKFZJUlRfQkFT RSkgJChBTFRfQkFTRSksIFwKLQkgICAgICAgICAgJChndWFyZCkgJChMRCkgJChjYWxsIEVGSV9M REZMQUdTLCQoYmFzZSkpIC1UIGVmaS5sZHMgLU4gJDwgZWZpL3JlbG9jcy1kdW1teS5vIFwKLQkg ICAgICAgICAgICAgICAgJChCQVNFRElSKS9jb21tb24vc3ltYm9scy1kdW1teS5vICQobm90ZV9m aWxlX29wdGlvbikgLW8gJChARCkvLiQoQEYpLiQoYmFzZSkuMCAmJikgOgotCSQoZ3VhcmQpIGVm aS9ta3JlbG9jICQoZm9yZWFjaCBiYXNlLCQoVklSVF9CQVNFKSAkKEFMVF9CQVNFKSwkKEBEKS8u JChARikuJChiYXNlKS4wKSA+JChARCkvLiQoQEYpLjByLlMKLQkkKGd1YXJkKSAkKE5NKSAtcGEg LS1mb3JtYXQ9c3lzdiAkKEBEKS8uJChARikuJChWSVJUX0JBU0UpLjAgXAotCQl8ICQoZ3VhcmQp ICQoQkFTRURJUikvdG9vbHMvc3ltYm9scyAkKGFsbF9zeW1ib2xzKSAtLXN5c3YgLS1zb3J0ID4k KEBEKS8uJChARikuMHMuUwotCSQoZ3VhcmQpICQoTUFLRSkgLWYgJChCQVNFRElSKS9SdWxlcy5t ayAkKEBEKS8uJChARikuMHIubyAkKEBEKS8uJChARikuMHMubwotCSQoZm9yZWFjaCBiYXNlLCAk KFZJUlRfQkFTRSkgJChBTFRfQkFTRSksIFwKLQkgICAgICAgICAgJChndWFyZCkgJChMRCkgJChj YWxsIEVGSV9MREZMQUdTLCQoYmFzZSkpIC1UIGVmaS5sZHMgLU4gJDwgXAotCSAgICAgICAgICAg ICAgICAkKEBEKS8uJChARikuMHIubyAkKEBEKS8uJChARikuMHMubyAkKG5vdGVfZmlsZV9vcHRp b24pIC1vICQoQEQpLy4kKEBGKS4kKGJhc2UpLjEgJiYpIDoKLQkkKGd1YXJkKSBlZmkvbWtyZWxv YyAkKGZvcmVhY2ggYmFzZSwkKFZJUlRfQkFTRSkgJChBTFRfQkFTRSksJChARCkvLiQoQEYpLiQo YmFzZSkuMSkgPiQoQEQpLy4kKEBGKS4xci5TCi0JJChndWFyZCkgJChOTSkgLXBhIC0tZm9ybWF0 PXN5c3YgJChARCkvLiQoQEYpLiQoVklSVF9CQVNFKS4xIFwKLQkJfCAkKGd1YXJkKSAkKEJBU0VE SVIpL3Rvb2xzL3N5bWJvbHMgJChhbGxfc3ltYm9scykgLS1zeXN2IC0tc29ydCA+JChARCkvLiQo QEYpLjFzLlMKLQkkKGd1YXJkKSAkKE1BS0UpIC1mICQoQkFTRURJUikvUnVsZXMubWsgJChARCkv LiQoQEYpLjFyLm8gJChARCkvLiQoQEYpLjFzLm8KLQkkKGd1YXJkKSAkKExEKSAkKGNhbGwgRUZJ X0xERkxBR1MsJChWSVJUX0JBU0UpKSAtVCBlZmkubGRzIC1OICQ8IFwKLQkgICAgICAgICAgICAg ICAgJChARCkvLiQoQEYpLjFyLm8gJChARCkvLiQoQEYpLjFzLm8gJChub3RlX2ZpbGVfb3B0aW9u KSAtbyAkQAotCWlmICQoZ3VhcmQpIGZhbHNlOyB0aGVuIHJtIC1mICRAOyBlY2hvICdFRkkgc3Vw cG9ydCBkaXNhYmxlZCc7IFwKLQllbHNlICQoTk0pIC1wYSAtLWZvcm1hdD1zeXN2ICQoQEQpLyQo QEYpIFwKLQkJfCAkKEJBU0VESVIpL3Rvb2xzL3N5bWJvbHMgLS14ZW5zeW1zIC0tc3lzdiAtLXNv cnQgPiQoQEQpLyQoQEYpLm1hcDsgZmkKLQlybSAtZiAkKEBEKS8uJChARikuWzAtOV0qCi0KLWVm aS9ib290LmluaXQubyBlZmkvcnVudGltZS5vIGVmaS9jb21wYXQubyBlZmkvYnVpbGRpZC5vOiAk KEJBU0VESVIpL2FyY2gveDg2L2VmaS9idWlsdF9pbi5vCi1lZmkvYm9vdC5pbml0Lm8gZWZpL3J1 bnRpbWUubyBlZmkvY29tcGF0Lm8gZWZpL2J1aWxkaWQubzogOwotCiBhc20tb2Zmc2V0cy5zOiAk KFRBUkdFVF9TVUJBUkNIKS9hc20tb2Zmc2V0cy5jCiAJJChDQykgJChmaWx0ZXItb3V0IC1XYSQo Y29tbWEpJSAtZmx0bywkKENGTEFHUykpIC1TIC1vICRAICQ8CiAKQEAgLTIyMCwyMSArMTQ3LDEx IEBAIHhlbi5sZHM6IHhlbi5sZHMuUwogCXNlZCAtZSAncy94ZW5cLmxkc1wubzoveGVuXC5sZHM6 L2cnIDwueGVuLmxkcy5kID4ueGVuLmxkcy5kLm5ldwogCW12IC1mIC54ZW4ubGRzLmQubmV3IC54 ZW4ubGRzLmQKIAotZWZpLmxkczogeGVuLmxkcy5TCi0JJChDQykgLVAgLUUgLVVpMzg2IC1ERUZJ ICQoZmlsdGVyLW91dCAtV2EkKGNvbW1hKSUsJChBRkxBR1MpKSAtbyAkQCAkPAotCXNlZCAtZSAn cy9lZmlcLmxkc1wubzovZWZpXC5sZHM6L2cnIDwuJChARikuZCA+LiQoQEYpLmQubmV3Ci0JbXYg LWYgLiQoQEYpLmQubmV3IC4kKEBGKS5kCi0KIGJvb3QvbWtlbGYzMjogYm9vdC9ta2VsZjMyLmMK IAkkKEhPU1RDQykgJChIT1NUQ0ZMQUdTKSAtbyAkQCAkPAogCi1lZmkvbWtyZWxvYzogZWZpL21r cmVsb2MuYwotCSQoSE9TVENDKSAkKEhPU1RDRkxBR1MpIC1nIC1vICRAICQ8Ci0KIC5QSE9OWTog Y2xlYW4KIGNsZWFuOjoKIAlybSAtZiBhc20tb2Zmc2V0cy5zICoubGRzIGJvb3QvKi5vIGJvb3Qv Kn4gYm9vdC9jb3JlIGJvb3QvbWtlbGYzMgogCXJtIC1mICQoQkFTRURJUikvLnhlbi1zeW1zLlsw LTldKiBib290Ly4qLmQKLQlybSAtZiAkKEJBU0VESVIpLy54ZW4uZWZpLlswLTldKiBlZmkvKi5l ZmkgZWZpL2Rpc2FibGVkIGVmaS9ta3JlbG9jCiAJcm0gLWYgYm9vdC9jbWRsaW5lLlMgYm9vdC9y ZWxvYy5TIGJvb3QvKi5sbmsgYm9vdC8qLmJpbgotCXJtIC1mIG5vdGUubwpkaWZmIC0tZ2l0IGEv eGVuL2FyY2gveDg2L2Jvb3QvaGVhZC5TIGIveGVuL2FyY2gveDg2L2Jvb3QvaGVhZC5TCmluZGV4 IDQ4ZjFiMDAuLjU3ODQ2MWIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9ib290L2hlYWQuUwor KysgYi94ZW4vYXJjaC94ODYvYm9vdC9oZWFkLlMKQEAgLTEzOSw3ICsxMzksNyBAQCBvcHRpb25h bF9oZWFkZXI6CiAgICAgICAgIC5sb25nICAgX18yTV9yd2RhdGFfZW5kIC0gZWZpX3BlX2hlYWRf ZW5kICAgIC8qIFNpemVPZkNvZGUuICovCiAgICAgICAgIC5sb25nICAgMCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8qIFNpemVPZkluaXRpYWxpemVkRGF0YS4gKi8KICAgICAg ICAgLmxvbmcgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU2l6ZU9m VW5pbml0aWFsaXplZERhdGEuICovCi0gICAgICAgIC5sb25nICAgc3ltX29mZnMoZWZpX21iX3N0 YXJ0KSAgICAgICAgICAgICAgIC8qIEFkZHJlc3NPZkVudHJ5UG9pbnQuICovCisgICAgICAgIC5s b25nICAgc3ltX29mZnMoZWZpX3N0YXJ0KSAgICAgICAgICAgICAgICAgIC8qIEFkZHJlc3NPZkVu dHJ5UG9pbnQuICovCiAgICAgICAgIC5sb25nICAgc3ltX29mZnMoc3RhcnQpICAgICAgICAgICAg ICAgICAgICAgIC8qIEJhc2VPZkNvZGUuICovCiAgICAgICAgIC5xdWFkICAgc3ltX29mZnMoX19p bWFnZV9iYXNlX18pICAgICAgICAgICAgIC8qIEltYWdlQmFzZS4gKi8KICAgICAgICAgLmxvbmcg ICBYRU5fTE9BRF9BTElHTiAgICAgICAgICAgICAgICAgICAgICAgLyogU2VjdGlvbkFsaWdubWVu dC4gKi8KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9lZmkvTWFrZWZpbGUgYi94ZW4vYXJjaC94 ODYvZWZpL01ha2VmaWxlCmluZGV4IDNiZTk2NjEuLjYxY2I4ZjYgMTAwNjQ0Ci0tLSBhL3hlbi9h cmNoL3g4Ni9lZmkvTWFrZWZpbGUKKysrIGIveGVuL2FyY2gveDg2L2VmaS9NYWtlZmlsZQpAQCAt MSwxNiArMSw1IEBACiBDRkxBR1MgKz0gLWZzaG9ydC13Y2hhcgogCi1lZmkgOj0geSQoc2hlbGwg cm0gLWYgZGlzYWJsZWQpCi1lZmkgOj0gJChpZiAkKGVmaSksJChzaGVsbCAkKENDKSAkKGZpbHRl ci1vdXQgJChDRkxBR1MteSkgLiUuZCwkKENGTEFHUykpIC1jIGNoZWNrLmMgMj5kaXNhYmxlZCAm JiBlY2hvIHkpKQotZWZpIDo9ICQoaWYgJChlZmkpLCQoc2hlbGwgJChMRCkgLW1pMzg2cGVwIC0t c3Vic3lzdGVtPTEwIC1vIGNoZWNrLmVmaSBjaGVjay5vIDI+ZGlzYWJsZWQgJiYgZWNobyB5KSkK LWVmaSA6PSAkKGlmICQoZWZpKSwkKHNoZWxsIHJtIGRpc2FibGVkKXkpCi0KLSUubzogJS5paGV4 Ci0JJChPQkpDT1BZKSAtSSBpaGV4IC1PIGJpbmFyeSAkPCAkQAotCi1ib290LmluaXQubzogYnVp bGRpZC5vCi0KLW9iai15IDo9IHN0dWIubwotb2JqLSQoZWZpKSA6PSBib290LmluaXQubyBjb21w YXQubyByZWxvY3MtZHVtbXkubyBydW50aW1lLm8KLWV4dHJhLSQoZWZpKSArPSBidWlsZGlkLm8K LW5vY292LSQoZWZpKSArPSBzdHViLm8KK29iai15ICs9IGJvb3QuaW5pdC5vCitvYmoteSArPSBj b21wYXQubworb2JqLXkgKz0gcnVudGltZS5vCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvZWZp L2J1aWxkaWQuaWhleCBiL3hlbi9hcmNoL3g4Ni9lZmkvYnVpbGRpZC5paGV4CmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCBhODkwNDZkLi4wMDAwMDAwCi0tLSBhL3hlbi9hcmNoL3g4Ni9l ZmkvYnVpbGRpZC5paGV4CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi06MTAwMDAwMDA2 NDg2MDAwMDREOERBRDU3MTQwMDAwMDAwMDAwMDAwMDE0Ci06MDQwMDEwMDAwMDAwMDAwMEVDCi06 MDAwMDAwMDFGRgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2VmaS9jaGVjay5jIGIveGVuL2Fy Y2gveDg2L2VmaS9jaGVjay5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZmVkZDVh Li4wMDAwMDAwCi0tLSBhL3hlbi9hcmNoL3g4Ni9lZmkvY2hlY2suYworKysgL2Rldi9udWxsCkBA IC0xLDQgKzAsMCBAQAotaW50IF9fYXR0cmlidXRlX18oKF9fbXNfYWJpX18pKSB0ZXN0KGludCBp KQotewotICAgIHJldHVybiBpOwotfQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2VmaS9lZmkt Ym9vdC5oIGIveGVuL2FyY2gveDg2L2VmaS9lZmktYm9vdC5oCmluZGV4IGY4YWFhMzcuLjI1YTgy ZjQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9lZmkvZWZpLWJvb3QuaAorKysgYi94ZW4vYXJj aC94ODYvZWZpL2VmaS1ib290LmgKQEAgLTM1LDc1ICszNSw2IEBAIHN0YXRpYyB2b2lkIF9faW5p dCBlZGRfcHV0X3N0cmluZyh1OCAqZHN0LCBzaXplX3QgbiwgY29uc3QgY2hhciAqc3JjKQogCiBl eHRlcm4gaW50cHRlX3QgX19wYWdlX3RhYmxlc19zdGFydFtdLCBfX3BhZ2VfdGFibGVzX2VuZFtd OwogCi0jZGVmaW5lIGluX3BhZ2VfdGFibGVzKHYpICgoaW50cHRlX3QgKikodikgPj0gX19wYWdl X3RhYmxlc19zdGFydCAmJiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50cHRlX3Qg KikodikgPCBfX3BhZ2VfdGFibGVzX2VuZCkKLQotI2RlZmluZSBQRV9CQVNFX1JFTE9DX0FCUyAg ICAgIDAKLSNkZWZpbmUgUEVfQkFTRV9SRUxPQ19ISUdITE9XICAzCi0jZGVmaW5lIFBFX0JBU0Vf UkVMT0NfRElSNjQgICAxMAotCi1leHRlcm4gY29uc3Qgc3RydWN0IHBlX2Jhc2VfcmVsb2NzIHsK LSAgICB1MzIgcnZhOwotICAgIHUzMiBzaXplOwotICAgIHUxNiBlbnRyaWVzW107Ci19IF9fYmFz ZV9yZWxvY3Nfc3RhcnRbXSwgX19iYXNlX3JlbG9jc19lbmRbXTsKLQotc3RhdGljIHZvaWQgX19p bml0IGVmaV9hcmNoX3JlbG9jYXRlX2ltYWdlKHVuc2lnbmVkIGxvbmcgZGVsdGEpCi17Ci0gICAg Y29uc3Qgc3RydWN0IHBlX2Jhc2VfcmVsb2NzICpiYXNlX3JlbG9jczsKLQotICAgIGlmICggZWZp X2VuYWJsZWQoRUZJX01CX0xPQURFUikgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKCBi YXNlX3JlbG9jcyA9IF9fYmFzZV9yZWxvY3Nfc3RhcnQ7IGJhc2VfcmVsb2NzIDwgX19iYXNlX3Jl bG9jc19lbmQ7ICkKLSAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGludCBpID0gMCwgbjsKLQotICAg ICAgICBuID0gKGJhc2VfcmVsb2NzLT5zaXplIC0gc2l6ZW9mKCpiYXNlX3JlbG9jcykpIC8KLSAg ICAgICAgICAgIHNpemVvZigqYmFzZV9yZWxvY3MtPmVudHJpZXMpOwotCi0gICAgICAgIC8qCi0g ICAgICAgICAqIFJlbGV2YW50IGx7MiwzfV9ib290bWFwIGVudHJpZXMgZ2V0IGluaXRpYWxpemVk IGV4cGxpY2l0bHkgaW4KLSAgICAgICAgICogZWZpX2FyY2hfbWVtb3J5X3NldHVwKCksIHNvIHdl IG11c3Qgbm90IGFwcGx5IHJlbG9jYXRpb25zIHRoZXJlLgotICAgICAgICAgKiBsMl9pZGVudG1h cCdzIGZpcnN0IHNsb3QsIG90b2gsIHNob3VsZCBiZSBoYW5kbGVkIG5vcm1hbGx5LCBhcwotICAg ICAgICAgKiBlZmlfYXJjaF9tZW1vcnlfc2V0dXAoKSB3b24ndCB0b3VjaCBpdCAoeGVuX3BoeXNf c3RhcnQgc2hvdWxkCi0gICAgICAgICAqIG5ldmVyIGJlIHplcm8pLgotICAgICAgICAgKi8KLSAg ICAgICAgaWYgKCB4ZW5fcGh5c19zdGFydCArIGJhc2VfcmVsb2NzLT5ydmEgPT0gKHVuc2lnbmVk IGxvbmcpbDNfYm9vdG1hcCB8fAotICAgICAgICAgICAgIHhlbl9waHlzX3N0YXJ0ICsgYmFzZV9y ZWxvY3MtPnJ2YSA9PSAodW5zaWduZWQgbG9uZylsMl9ib290bWFwICkKLSAgICAgICAgICAgIGkg PSBuOwotCi0gICAgICAgIGZvciAoIDsgaSA8IG47ICsraSApCi0gICAgICAgIHsKLSAgICAgICAg ICAgIHVuc2lnbmVkIGxvbmcgYWRkciA9IHhlbl9waHlzX3N0YXJ0ICsgYmFzZV9yZWxvY3MtPnJ2 YSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmFzZV9yZWxvY3MtPmVudHJp ZXNbaV0gJiAweGZmZik7Ci0KLSAgICAgICAgICAgIHN3aXRjaCAoIGJhc2VfcmVsb2NzLT5lbnRy aWVzW2ldID4+IDEyICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIGNhc2UgUEVfQkFTRV9S RUxPQ19BQlM6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFBFX0JB U0VfUkVMT0NfSElHSExPVzoKLSAgICAgICAgICAgICAgICBpZiAoIGRlbHRhICkKLSAgICAgICAg ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICoodTMyICopYWRkciArPSBkZWx0YTsKLSAg ICAgICAgICAgICAgICAgICAgaWYgKCBpbl9wYWdlX3RhYmxlcyhhZGRyKSApCi0gICAgICAgICAg ICAgICAgICAgICAgICAqKHUzMiAqKWFkZHIgKz0geGVuX3BoeXNfc3RhcnQ7Ci0gICAgICAgICAg ICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBQRV9CQVNF X1JFTE9DX0RJUjY0OgotICAgICAgICAgICAgICAgIGlmICggaW5fcGFnZV90YWJsZXMoYWRkcikg KQotICAgICAgICAgICAgICAgICAgICBibGV4aXQoTCJVbmV4cGVjdGVkIHJlbG9jYXRpb24gdHlw ZSIpOwotICAgICAgICAgICAgICAgIGlmICggZGVsdGEgKQotICAgICAgICAgICAgICAgICAgICAq KHU2NCAqKWFkZHIgKz0gZGVsdGE7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg ICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGJsZXhpdChMIlVuc3VwcG9ydGVkIHJlbG9jYXRp b24gdHlwZSIpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGJhc2VfcmVsb2Nz ID0gKGNvbnN0IHZvaWQgKikoYmFzZV9yZWxvY3MtPmVudHJpZXMgKyBpICsgKGkgJiAxKSk7Ci0g ICAgfQotfQotCiBleHRlcm4gY29uc3QgczMyIF9fdHJhbXBvbGluZV9yZWxfc3RhcnRbXSwgX190 cmFtcG9saW5lX3JlbF9zdG9wW107CiBleHRlcm4gY29uc3QgczMyIF9fdHJhbXBvbGluZV9zZWdf c3RhcnRbXSwgX190cmFtcG9saW5lX3NlZ19zdG9wW107CiAKQEAgLTIzNyw3ICsxNjgsNiBAQCBz dGF0aWMgdm9pZCBfX2luaXQgbm9yZXR1cm4gZWZpX2FyY2hfcG9zdF9leGl0X2Jvb3Qodm9pZCkK IHsKICAgICB1NjQgY3I0ID0gWEVOX01JTklNQUxfQ1I0ICYgflg4Nl9DUjRfUEdFLCBlZmVyOwog Ci0gICAgZWZpX2FyY2hfcmVsb2NhdGVfaW1hZ2UoX19YRU5fVklSVF9TVEFSVCAtIHhlbl9waHlz X3N0YXJ0KTsKICAgICBtZW1jcHkoKHZvaWQgKil0cmFtcG9saW5lX3BoeXMsIHRyYW1wb2xpbmVf c3RhcnQsIGNmZy5zaXplKTsKIAogICAgIC8qIFNldCBzeXN0ZW0gcmVnaXN0ZXJzIGFuZCB0cmFu c2ZlciBjb250cm9sLiAqLwpAQCAtNTg5LDExICs1MTksMTAgQEAgc3RhdGljIHZvaWQgX19pbml0 IGVmaV9hcmNoX21lbW9yeV9zZXR1cCh2b2lkKQogICAgIGlmICggIWVmaV9lbmFibGVkKEVGSV9M T0FERVIpICkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCBlZmlfZW5hYmxlZChFRklfTUJf TE9BREVSKSApCi0gICAgICAgIGZvciAoIHB0ZSA9IF9fcGFnZV90YWJsZXNfc3RhcnQ7IHB0ZSA8 IF9fcGFnZV90YWJsZXNfZW5kOwotICAgICAgICAgICAgICBwdGUgKz0gKCBwdGUgIT0gKGludHB0 ZV90ICopbDJfaWRlbnRtYXAgKSA/IDEgOiA0ICogTDJfUEFHRVRBQkxFX0VOVFJJRVMgKQotICAg ICAgICAgICAgaWYgKCBnZXRfcHRlX2ZsYWdzKCpwdGUpICYgX1BBR0VfUFJFU0VOVCApCi0gICAg ICAgICAgICAgICAgKnB0ZSArPSB4ZW5fcGh5c19zdGFydDsKKyAgICBmb3IgKCBwdGUgPSBfX3Bh Z2VfdGFibGVzX3N0YXJ0OyBwdGUgPCBfX3BhZ2VfdGFibGVzX2VuZDsKKyAgICAgICAgICBwdGUg Kz0gKCBwdGUgIT0gKGludHB0ZV90ICopbDJfaWRlbnRtYXAgKSA/IDEgOiA0ICogTDJfUEFHRVRB QkxFX0VOVFJJRVMgKQorICAgICAgICBpZiAoIGdldF9wdGVfZmxhZ3MoKnB0ZSkgJiBfUEFHRV9Q UkVTRU5UICkKKyAgICAgICAgICAgICpwdGUgKz0geGVuX3BoeXNfc3RhcnQ7CiAKICAgICAvKiBJ bml0aWFsaXNlIEwyIGlkZW50aXR5LW1hcCBhbmQgYm9vdC1tYXAgcGFnZSB0YWJsZSBlbnRyaWVz ICgxNk1CKS4gKi8KICAgICBmb3IgKCBpID0gMDsgaSA8IDg7ICsraSApCkBAIC02ODcsMTUgKzYx Niw2IEBAIHN0YXRpYyBib29sIF9faW5pdCBlZmlfYXJjaF91c2VfY29uZmlnX2ZpbGUoRUZJX1NZ U1RFTV9UQUJMRSAqU3lzdGVtVGFibGUpCiAKIHN0YXRpYyB2b2lkIF9faW5pdCBlZmlfYXJjaF9m bHVzaF9kY2FjaGVfYXJlYShjb25zdCB2b2lkICp2YWRkciwgVUlOVE4gc2l6ZSkgeyB9CiAKLXZv aWQgRUZJQVBJIGVmaV9zdGFydChFRklfSEFORExFIEltYWdlSGFuZGxlLCBFRklfU1lTVEVNX1RB QkxFICpTeXN0ZW1UYWJsZSk7Ci0KLXZvaWQgRUZJQVBJIF9faW5pdCBub3JldHVybgotZWZpX21i X3N0YXJ0KEVGSV9IQU5ETEUgSW1hZ2VIYW5kbGUsIEVGSV9TWVNURU1fVEFCTEUgKlN5c3RlbVRh YmxlKQotewotICAgIF9fc2V0X2JpdChFRklfTUJfTE9BREVSLCAmZWZpX2ZsYWdzKTsKLSAgICBl Zmlfc3RhcnQoSW1hZ2VIYW5kbGUsIFN5c3RlbVRhYmxlKTsKLX0KLQogdm9pZCBfX2luaXQgZWZp X211bHRpYm9vdDIoRUZJX0hBTkRMRSBJbWFnZUhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEVGSV9TWVNURU1fVEFCTEUgKlN5c3RlbVRhYmxlLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgbXVsdGlib290Ml90YWdfbW9kdWxlX3QgKmRvbTBfa2VybmVsKQpkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L2VmaS9ta3JlbG9jLmMgYi94ZW4vYXJjaC94ODYvZWZpL21r cmVsb2MuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWFjYTc5Ni4uMDAwMDAwMAot LS0gYS94ZW4vYXJjaC94ODYvZWZpL21rcmVsb2MuYworKysgL2Rldi9udWxsCkBAIC0xLDM4NCAr MCwwIEBACi0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxpbnR0eXBlcy5oPgotI2luY2x1 ZGUgPGxpbWl0cy5oPgotI2luY2x1ZGUgPHN0ZGRlZi5oPgotI2luY2x1ZGUgPHN0ZGludC5oPgot I2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8c3RyaW5n Lmg+Ci0jaW5jbHVkZSA8c3lzL21tYW4uaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLQotc3RydWN0 IG16X2hkciB7Ci0gICAgdWludDE2X3Qgc2lnbmF0dXJlOwotI2RlZmluZSBNWl9TSUdOQVRVUkUg MHg1YTRkCi0gICAgdWludDE2X3QgbGFzdF9wYWdlX3NpemU7Ci0gICAgdWludDE2X3QgcGFnZV9j b3VudDsKLSAgICB1aW50MTZfdCByZWxvY2F0aW9uX2NvdW50OwotICAgIHVpbnQxNl90IGhlYWRl cl9wYXJhczsKLSAgICB1aW50MTZfdCBtaW5fcGFyYXM7Ci0gICAgdWludDE2X3QgbWF4X3BhcmFz OwotICAgIHVpbnQxNl90IGVudHJ5X3NzOwotICAgIHVpbnQxNl90IGVudHJ5X3NwOwotICAgIHVp bnQxNl90IGNoZWNrc3VtOwotICAgIHVpbnQxNl90IGVudHJ5X2lwOwotICAgIHVpbnQxNl90IGVu dHJ5X2NzOwotICAgIHVpbnQxNl90IHJlbG9jYXRpb25zOwotICAgIHVpbnQxNl90IG92ZXJsYXk7 Ci0gICAgdWludDhfdCByZXNlcnZlZFszMl07Ci0gICAgdWludDMyX3QgZXh0ZW5kZWRfaGVhZGVy X2Jhc2U7Ci19OwotCi1zdHJ1Y3QgcGVfaGRyIHsKLSAgICB1aW50MzJfdCBzaWduYXR1cmU7Ci0j ZGVmaW5lIFBFX1NJR05BVFVSRSAweDAwMDA0NTUwCi0gICAgdWludDE2X3QgY3B1OwotICAgIHVp bnQxNl90IHNlY3Rpb25fY291bnQ7Ci0gICAgaW50MzJfdCB0aW1lc3RhbXA7Ci0gICAgdWludDMy X3Qgc3ltYm9sc19maWxlX29mZnNldDsKLSAgICB1aW50MzJfdCBzeW1ib2xfY291bnQ7Ci0gICAg dWludDE2X3Qgb3B0X2hkcl9zaXplOwotICAgIHVpbnQxNl90IGZsYWdzOwotICAgIHN0cnVjdCB7 Ci0gICAgICAgIHVpbnQxNl90IG1hZ2ljOwotI2RlZmluZSBQRV9NQUdJQ19FWEUzMiAgICAgMHgw MTBiCi0jZGVmaW5lIFBFX01BR0lDX0VYRTMyUExVUyAweDAyMGIKLSAgICAgICAgdWludDhfdCBs aW5rZXJfbWFqb3IsIGxpbmtlcl9taW5vcjsKLSAgICAgICAgdWludDMyX3QgY29kZV9zaXplLCBk YXRhX3NpemUsIGJzc19zaXplOwotICAgICAgICB1aW50MzJfdCBlbnRyeV9ydmEsIGNvZGVfcnZh LCBkYXRhX3J2YTsKLSAgICB9IG9wdF9oZHI7Ci19OwotCi0jZGVmaW5lIFBFX1BBR0VfU0laRSAw eDEwMDAKLQotI2RlZmluZSBQRV9CQVNFX1JFTE9DX0FCUyAgICAgIDAKLSNkZWZpbmUgUEVfQkFT RV9SRUxPQ19ISUdITE9XICAzCi0jZGVmaW5lIFBFX0JBU0VfUkVMT0NfRElSNjQgICAxMAotCi1z dHJ1Y3QgY29mZl9zZWN0aW9uIHsKLSAgICBjaGFyIG5hbWVbOF07Ci0gICAgdWludDMyX3Qgc2l6 ZTsKLSAgICB1aW50MzJfdCBydmE7Ci0gICAgdWludDMyX3QgZmlsZV9zaXplOwotICAgIHVpbnQz Ml90IGZpbGVfb2Zmc2V0OwotICAgIHVpbnQzMl90IHJlbG9jYXRpb25fZmlsZV9vZmZzZXQ7Ci0g ICAgdWludDMyX3QgbGluZV9udW1iZXJfZmlsZV9vZmZzZXQ7Ci0gICAgdWludDE2X3QgcmVsb2Nh dGlvbl9jb3VudDsKLSAgICB1aW50MTZfdCBsaW5lX251bWJlcl9jb3VudDsKLSAgICB1aW50MzJf dCBmbGFnczsKLSNkZWZpbmUgQ09GRl9TRUNUSU9OX0JTUyAgICAgICAgIDB4MDAwMDAwODBVCi0j ZGVmaW5lIENPRkZfU0VDVElPTl9ESVNDQVJEQUJMRSAweDAyMDAwMDAwVQotI2RlZmluZSBDT0ZG X1NFQ1RJT05fV1JJVEVBQkxFICAgMHg4MDAwMDAwMFUKLX07Ci0KLXN0YXRpYyB2b2lkIHVzYWdl KGNvbnN0IGNoYXIgKmNtZCwgaW50IHJjKQotewotICAgIGZwcmludGYocmMgPyBzdGRlcnIgOiBz dGRvdXQsCi0gICAgICAgICAgICAiVXNhZ2U6ICVzIDxpbWFnZTE+IDxpbWFnZTI+XG4iLAotICAg ICAgICAgICAgY21kKTsKLSAgICBleGl0KHJjKTsKLX0KLQotc3RhdGljIHVuc2lnbmVkIGludCBs b2FkKGNvbnN0IGNoYXIgKm5hbWUsIGludCAqaGFuZGxlLAotICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBjb2ZmX3NlY3Rpb24gKipzZWN0aW9ucywKLSAgICAgICAgICAgICAgICAgICAg ICAgICB1aW50X2Zhc3Q2NF90ICppbWFnZV9iYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAg IHVpbnQzMl90ICppbWFnZV9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCAqd2lkdGgpCi17Ci0gICAgaW50IGluID0gb3BlbihuYW1lLCBPX1JET05MWSk7Ci0gICAg c3RydWN0IG16X2hkciBtel9oZHI7Ci0gICAgc3RydWN0IHBlX2hkciBwZV9oZHI7Ci0gICAgdWlu dDMyX3QgYmFzZTsKLQotICAgIGlmICggaW4gPCAwIHx8Ci0gICAgICAgICByZWFkKGluLCAmbXpf aGRyLCBzaXplb2YobXpfaGRyKSkgIT0gc2l6ZW9mKG16X2hkcikgKQotICAgIHsKLSAgICAgICAg cGVycm9yKG5hbWUpOwotICAgICAgICBleGl0KDIpOwotICAgIH0KLSAgICBpZiAoIG16X2hkci5z aWduYXR1cmUgIT0gTVpfU0lHTkFUVVJFIHx8Ci0gICAgICAgICBtel9oZHIucmVsb2NhdGlvbnMg PCBzaXplb2YobXpfaGRyKSB8fAotICAgICAgICAgIW16X2hkci5leHRlbmRlZF9oZWFkZXJfYmFz ZSApCi0gICAgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBXcm9uZyBET1MgZmlsZSBm b3JtYXRcbiIsIG5hbWUpOwotICAgICAgICBleGl0KDIpOwotICAgIH0KLQotICAgIGlmICggbHNl ZWsoaW4sIG16X2hkci5leHRlbmRlZF9oZWFkZXJfYmFzZSwgU0VFS19TRVQpIDwgMCB8fAotICAg ICAgICAgcmVhZChpbiwgJnBlX2hkciwgc2l6ZW9mKHBlX2hkcikpICE9IHNpemVvZihwZV9oZHIp IHx8Ci0gICAgICAgICByZWFkKGluLCAmYmFzZSwgc2l6ZW9mKGJhc2UpKSAhPSBzaXplb2YoYmFz ZSkgfHwKLSAgICAgICAgIC8qCi0gICAgICAgICAgKiBMdWNraWx5IHRoZSBpbWFnZSBzaXplIGZp ZWxkIGxpdmVzIGF0IHRoZQotICAgICAgICAgICogc2FtZSBvZmZzZXQgZm9yIGJvdGggZm9ybWF0 cy4KLSAgICAgICAgICAqLwotICAgICAgICAgbHNlZWsoaW4sIDI0LCBTRUVLX0NVUikgPCAwIHx8 Ci0gICAgICAgICByZWFkKGluLCBpbWFnZV9zaXplLCBzaXplb2YoKmltYWdlX3NpemUpKSAhPSBz aXplb2YoKmltYWdlX3NpemUpICkKLSAgICB7Ci0gICAgICAgIHBlcnJvcihuYW1lKTsKLSAgICAg ICAgZXhpdCgzKTsKLSAgICB9Ci0gICAgc3dpdGNoICggKHBlX2hkci5zaWduYXR1cmUgPT0gUEVf U0lHTkFUVVJFICYmCi0gICAgICAgICAgICAgIHBlX2hkci5vcHRfaGRyX3NpemUgPiBzaXplb2Yo cGVfaGRyLm9wdF9oZHIpKSAqCi0gICAgICAgICAgICAgcGVfaGRyLm9wdF9oZHIubWFnaWMgKQot ICAgIHsKLSAgICBjYXNlIFBFX01BR0lDX0VYRTMyOgotICAgICAgICAqd2lkdGggPSAzMjsKLSAg ICAgICAgKmltYWdlX2Jhc2UgPSBiYXNlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBFX01B R0lDX0VYRTMyUExVUzoKLSAgICAgICAgKndpZHRoID0gNjQ7Ci0gICAgICAgICppbWFnZV9iYXNl ID0gKCh1aW50NjRfdCliYXNlIDw8IDMyKSB8IHBlX2hkci5vcHRfaGRyLmRhdGFfcnZhOwotICAg ICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiBX cm9uZyBQRSBmaWxlIGZvcm1hdFxuIiwgbmFtZSk7Ci0gICAgICAgIGV4aXQoMyk7Ci0gICAgfQot Ci0gICAgKnNlY3Rpb25zID0gbWFsbG9jKHBlX2hkci5zZWN0aW9uX2NvdW50ICogc2l6ZW9mKCoq c2VjdGlvbnMpKTsKLSAgICBpZiAoICEqc2VjdGlvbnMgKQotICAgIHsKLSAgICAgICAgcGVycm9y KE5VTEwpOwotICAgICAgICBleGl0KDQpOwotICAgIH0KLSAgICBpZiAoIGxzZWVrKGluLAotICAg ICAgICAgICAgICAgbXpfaGRyLmV4dGVuZGVkX2hlYWRlcl9iYXNlICsgb2Zmc2V0b2Yoc3RydWN0 IHBlX2hkciwgb3B0X2hkcikgKwotICAgICAgICAgICAgICAgICAgcGVfaGRyLm9wdF9oZHJfc2l6 ZSwKLSAgICAgICAgICAgICAgIFNFRUtfU0VUKSA8IDAgfHwKLSAgICAgICAgIHJlYWQoaW4sICpz ZWN0aW9ucywgcGVfaGRyLnNlY3Rpb25fY291bnQgKiBzaXplb2YoKipzZWN0aW9ucykpICE9Ci0g ICAgICAgICAgICAgcGVfaGRyLnNlY3Rpb25fY291bnQgKiBzaXplb2YoKipzZWN0aW9ucykgKQot ICAgIHsKLSAgICAgICAgcGVycm9yKG5hbWUpOwotICAgICAgICBleGl0KDQpOwotICAgIH0KLQot ICAgICpoYW5kbGUgPSBpbjsKLQotICAgIHJldHVybiBwZV9oZHIuc2VjdGlvbl9jb3VudDsKLX0K LQotc3RhdGljIGxvbmcgcGFnZV9zaXplOwotCi1zdGF0aWMgY29uc3Qgdm9pZCAqbWFwX3NlY3Rp b24oY29uc3Qgc3RydWN0IGNvZmZfc2VjdGlvbiAqc2VjLCBpbnQgaW4sCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSkKLXsKLSAgICBjb25zdCBjaGFyICpw dHI7Ci0gICAgdW5zaWduZWQgbG9uZyBvZmZzOwotCi0gICAgaWYgKCAhcGFnZV9zaXplICkKLSAg ICAgICAgcGFnZV9zaXplID0gc3lzY29uZihfU0NfUEFHRVNJWkUpOwotICAgIG9mZnMgPSBzZWMt PmZpbGVfb2Zmc2V0ICYgKHBhZ2Vfc2l6ZSAtIDEpOwotCi0gICAgcHRyID0gbW1hcCgwLCBvZmZz ICsgc2VjLT5maWxlX3NpemUsIFBST1RfUkVBRCwgTUFQX1BSSVZBVEUsIGluLAotICAgICAgICAg ICAgICAgc2VjLT5maWxlX29mZnNldCAtIG9mZnMpOwotICAgIGlmICggcHRyID09IE1BUF9GQUlM RUQgKQotICAgIHsKLSAgICAgICAgcGVycm9yKG5hbWUpOwotICAgICAgICBleGl0KDYpOwotICAg IH0KLQotICAgIHJldHVybiBwdHIgKyBvZmZzOwotfQotCi1zdGF0aWMgdm9pZCB1bm1hcF9zZWN0 aW9uKGNvbnN0IHZvaWQgKnB0ciwgY29uc3Qgc3RydWN0IGNvZmZfc2VjdGlvbiAqc2VjKQotewot ICAgIHVuc2lnbmVkIGxvbmcgb2ZmcyA9IHNlYy0+ZmlsZV9vZmZzZXQgJiAocGFnZV9zaXplIC0g MSk7Ci0KLSAgICBtdW5tYXAoKGNoYXIgKilwdHIgLSBvZmZzLCBvZmZzICsgc2VjLT5maWxlX3Np emUpOwotfQotCi1zdGF0aWMgdm9pZCBkaWZmX3NlY3Rpb25zKGNvbnN0IHVuc2lnbmVkIGNoYXIg KnB0cjEsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnB0cjIsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHN0cnVjdCBjb2ZmX3NlY3Rpb24gKnNlYywKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50X2Zhc3Q2NF90IGRpZmYsIHVuc2lnbmVkIGludCB3aWR0aCwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgdWludF9mYXN0NjRfdCBiYXNlLCB1aW50X2Zhc3Q2NF90IGVuZCkKLXsK LSAgICBzdGF0aWMgdWludF9mYXN0MzJfdCBjdXJfcnZhLCByZWxvY19zaXplOwotICAgIHVuc2ln bmVkIGludCBkaXNwID0gMDsKLSAgICB1aW50X2Zhc3QzMl90IGk7Ci0KLSAgICBpZiAoICFzZWMg KQotICAgIHsKLSAgICAgICAgcmVsb2Nfc2l6ZSArPSByZWxvY19zaXplICYgMjsKLSAgICAgICAg aWYgKCByZWxvY19zaXplICkKLSAgICAgICAgICAgIHByaW50ZigiXHQuYmFsaWduIDRcbiIKLSAg ICAgICAgICAgICAgICAgICAiXHQuZXF1IHJ2YV8lMDgiIFBSSXhGQVNUMzIgIl9yZWxvY3MsICUj MDgiIFBSSXhGQVNUMzIgIlxuIiwKLSAgICAgICAgICAgICAgICAgICBjdXJfcnZhLCByZWxvY19z aXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHdoaWxlICggIShkaWZmICYgKCgo aW50X2Zhc3Q2NF90KTEgPDwgKChkaXNwICsgMSkgKiBDSEFSX0JJVCkpIC0gMSkpICkKLSAgICAg ICAgKytkaXNwOwotCi0gICAgZm9yICggaSA9IDA7IGkgPCBzZWMtPmZpbGVfc2l6ZTsgKytpICkK LSAgICB7Ci0gICAgICAgIHVpbnRfZmFzdDMyX3QgcnZhOwotICAgICAgICB1bmlvbiB7Ci0gICAg ICAgICAgICB1aW50MzJfdCB1MzI7Ci0gICAgICAgICAgICB1aW50NjRfdCB1NjQ7Ci0gICAgICAg IH0gdmFsMSwgdmFsMjsKLSAgICAgICAgaW50X2Zhc3Q2NF90IGRlbHRhOwotICAgICAgICB1bnNp Z25lZCBpbnQgcmVsb2MgPSAod2lkdGggPT0gNCA/IFBFX0JBU0VfUkVMT0NfSElHSExPVyA6Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEVfQkFTRV9SRUxPQ19E SVI2NCk7Ci0KLSAgICAgICAgaWYgKCBwdHIxW2ldID09IHB0cjJbaV0gKQotICAgICAgICAgICAg Y29udGludWU7Ci0KLSAgICAgICAgaWYgKCBpIDwgZGlzcCB8fCBpICsgd2lkdGggLSBkaXNwID4g c2VjLT5maWxlX3NpemUgKQotICAgICAgICB7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwK LSAgICAgICAgICAgICAgICAgICAgIkJvZ3VzIGRpZmZlcmVuY2UgYXQgJS44czolMDgiIFBSSXhG QVNUMzIgIlxuIiwKLSAgICAgICAgICAgICAgICAgICAgc2VjLT5uYW1lLCBpKTsKLSAgICAgICAg ICAgIGV4aXQoMyk7Ci0gICAgICAgIH0KLQotICAgICAgICBtZW1jcHkoJnZhbDEsIHB0cjEgKyBp IC0gZGlzcCwgd2lkdGgpOwotICAgICAgICBtZW1jcHkoJnZhbDIsIHB0cjIgKyBpIC0gZGlzcCwg d2lkdGgpOwotICAgICAgICBkZWx0YSA9IHdpZHRoID09IDQgPyB2YWwyLnUzMiAtIHZhbDEudTMy IDogdmFsMi51NjQgLSB2YWwxLnU2NDsKLSAgICAgICAgaWYgKCBkZWx0YSAhPSBkaWZmICkKLSAg ICAgICAgewotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsCi0gICAgICAgICAgICAgICAgICAg ICJEaWZmZXJlbmNlIGF0ICUuOHM6JTA4IiBQUkl4RkFTVDMyICIgaXMgJSMiIFBSSXhGQVNUNjQK LSAgICAgICAgICAgICAgICAgICAgIiAoZXhwZWN0ZWQgJSMiIFBSSXhGQVNUNjQgIilcbiIsCi0g ICAgICAgICAgICAgICAgICAgIHNlYy0+bmFtZSwgaSwgZGVsdGEsIGRpZmYpOwotICAgICAgICAg ICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCB3aWR0aCA9PSA4ICYmICh2YWwx LnU2NCA8IGJhc2UgfHwgdmFsMS51NjQgPiBlbmQpICkKLSAgICAgICAgICAgIHJlbG9jID0gUEVf QkFTRV9SRUxPQ19ISUdITE9XOwotCi0gICAgICAgIHJ2YSA9IChzZWMtPnJ2YSArIGkgLSBkaXNw KSAmIH4oUEVfUEFHRV9TSVpFIC0gMSk7Ci0gICAgICAgIGlmICggcnZhID4gY3VyX3J2YSApCi0g ICAgICAgIHsKLSAgICAgICAgICAgIHJlbG9jX3NpemUgKz0gcmVsb2Nfc2l6ZSAmIDI7Ci0gICAg ICAgICAgICBpZiAoIHJlbG9jX3NpemUgKQotICAgICAgICAgICAgICAgIHByaW50ZigiXHQuZXF1 IHJ2YV8lMDgiIFBSSXhGQVNUMzIgIl9yZWxvY3MsIgotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiICUjMDgiIFBSSXhGQVNUMzIgIlxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgY3Vy X3J2YSwgcmVsb2Nfc2l6ZSk7Ci0gICAgICAgICAgICBwcmludGYoIlx0LmJhbGlnbiA0XG4iCi0g ICAgICAgICAgICAgICAgICAgIlx0LmxvbmcgJSMwOCIgUFJJeEZBU1QzMiAiLCIKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgIiBydmFfJTA4IiBQUkl4RkFTVDMyICJfcmVsb2NzXG4iLAotICAg ICAgICAgICAgICAgICAgIHJ2YSwgcnZhKTsKLSAgICAgICAgICAgIGN1cl9ydmEgPSBydmE7Ci0g ICAgICAgICAgICByZWxvY19zaXplID0gODsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmICgg cnZhICE9IGN1cl9ydmEgKQotICAgICAgICB7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwK LSAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBoYW5kbGUgZGVjcmVhc2luZyBSVkEgKGF0ICUu OHM6JTA4IiBQUkl4RkFTVDMyICIpXG4iLAotICAgICAgICAgICAgICAgICAgICBzZWMtPm5hbWUs IGkpOwotICAgICAgICAgICAgZXhpdCgzKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICggIShz ZWMtPmZsYWdzICYgQ09GRl9TRUNUSU9OX1dSSVRFQUJMRSkgKQotICAgICAgICAgICAgZnByaW50 ZihzdGRlcnIsCi0gICAgICAgICAgICAgICAgICAgICJXYXJuaW5nOiByZWxvY2F0aW9uIHRvIHIv byBzZWN0aW9uICUuOHM6JTA4IiBQUkl4RkFTVDMyICJcbiIsCi0gICAgICAgICAgICAgICAgICAg IHNlYy0+bmFtZSwgaSk7Ci0KLSAgICAgICAgcHJpbnRmKCJcdC53b3JkICgldSA8PCAxMikgfCAw eCUwMyIgUFJJeEZBU1QzMiAiXG4iLAotICAgICAgICAgICAgICAgcmVsb2MsIHNlYy0+cnZhICsg aSAtIGRpc3AgLSBydmEpOwotICAgICAgICByZWxvY19zaXplICs9IDI7Ci0gICAgICAgIGkgKz0g d2lkdGggLSBkaXNwIC0gMTsKLSAgICB9Ci19Ci0KLWludCBtYWluKGludCBhcmdjLCBjaGFyICph cmd2W10pCi17Ci0gICAgaW50IGluMSwgaW4yOwotICAgIHVuc2lnbmVkIGludCBpLCBuc2VjLCB3 aWR0aDEsIHdpZHRoMjsKLSAgICB1aW50X2Zhc3Q2NF90IGJhc2UxLCBiYXNlMjsKLSAgICB1aW50 MzJfdCBzaXplMSwgc2l6ZTI7Ci0gICAgc3RydWN0IGNvZmZfc2VjdGlvbiAqc2VjMSwgKnNlYzI7 Ci0KLSAgICBpZiAoIGFyZ2MgPT0gMSB8fAotICAgICAgICAgIXN0cmNtcChhcmd2WzFdLCAiLT8i KSB8fAotICAgICAgICAgIXN0cmNtcChhcmd2WzFdLCAiLWgiKSB8fAotICAgICAgICAgIXN0cmNt cChhcmd2WzFdLCAiLS1oZWxwIikgKQotICAgICAgICB1c2FnZSgqYXJndiwgYXJnYyA9PSAxKTsK LQotICAgIGlmICggYXJnYyAhPSAzICkKLSAgICAgICAgdXNhZ2UoKmFyZ3YsIDEpOwotCi0gICAg bnNlYyA9IGxvYWQoYXJndlsxXSwgJmluMSwgJnNlYzEsICZiYXNlMSwgJnNpemUxLCAmd2lkdGgx KTsKLSAgICBpZiAoIG5zZWMgIT0gbG9hZChhcmd2WzJdLCAmaW4yLCAmc2VjMiwgJmJhc2UyLCAm c2l6ZTIsICZ3aWR0aDIpICkKLSAgICB7Ci0gICAgICAgIGZwdXRzKCJNaXNtYXRjaGVkIHNlY3Rp b24gY291bnRzXG4iLCBzdGRlcnIpOwotICAgICAgICByZXR1cm4gNTsKLSAgICB9Ci0gICAgaWYg KCB3aWR0aDEgIT0gd2lkdGgyICkKLSAgICB7Ci0gICAgICAgIGZwdXRzKCJNaXNtYXRjaGVkIGlt YWdlIHR5cGVzXG4iLCBzdGRlcnIpOwotICAgICAgICByZXR1cm4gNTsKLSAgICB9Ci0gICAgd2lk dGgxID4+PSAzOwotICAgIGlmICggYmFzZTEgPT0gYmFzZTIgKQotICAgIHsKLSAgICAgICAgZnB1 dHMoIkltYWdlcyBtdXN0IGhhdmUgZGlmZmVyZW50IGJhc2UgYWRkcmVzc2VzXG4iLCBzdGRlcnIp OwotICAgICAgICByZXR1cm4gNTsKLSAgICB9Ci0gICAgaWYgKCBzaXplMSAhPSBzaXplMiApCi0g ICAgewotICAgICAgICBmcHV0cygiSW1hZ2VzIG11c3QgaGF2ZSBpZGVudGljYWwgc2l6ZXNcbiIs IHN0ZGVycik7Ci0gICAgICAgIHJldHVybiA1OwotICAgIH0KLQotICAgIHB1dHMoIlx0LnNlY3Rp b24gLnJlbG9jLCBcImFcIiwgQHByb2diaXRzXG4iCi0gICAgICAgICAiXHQuYmFsaWduIDRcbiIK LSAgICAgICAgICJcdC5nbG9ibCBfX2Jhc2VfcmVsb2NzX3N0YXJ0LCBfX2Jhc2VfcmVsb2NzX2Vu ZFxuIgotICAgICAgICAgIl9fYmFzZV9yZWxvY3Nfc3RhcnQ6Iik7Ci0KLSAgICBmb3IgKCBpID0g MDsgaSA8IG5zZWM7ICsraSApCi0gICAgewotICAgICAgICBjb25zdCB2b2lkICpwdHIxLCAqcHRy MjsKLQotICAgICAgICBpZiAoIG1lbWNtcChzZWMxW2ldLm5hbWUsIHNlYzJbaV0ubmFtZSwgc2l6 ZW9mKHNlYzFbaV0ubmFtZSkpIHx8Ci0gICAgICAgICAgICAgc2VjMVtpXS5ydmEgIT0gc2VjMltp XS5ydmEgfHwKLSAgICAgICAgICAgICBzZWMxW2ldLnNpemUgIT0gc2VjMltpXS5zaXplIHx8Ci0g ICAgICAgICAgICAgc2VjMVtpXS5maWxlX3NpemUgIT0gc2VjMltpXS5maWxlX3NpemUgfHwKLSAg ICAgICAgICAgICBzZWMxW2ldLmZsYWdzICE9IHNlYzJbaV0uZmxhZ3MgKQotICAgICAgICB7Ci0g ICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIk1pc21hdGNoZWQgc2VjdGlvbiAldSBwYXJhbWV0 ZXJzXG4iLCBpKTsKLSAgICAgICAgICAgIHJldHVybiA1OwotICAgICAgICB9Ci0KLSAgICAgICAg aWYgKCAhc2VjMVtpXS5zaXplIHx8Ci0gICAgICAgICAgICAgKHNlYzFbaV0uZmxhZ3MgJiAoQ09G Rl9TRUNUSU9OX0RJU0NBUkRBQkxFfENPRkZfU0VDVElPTl9CU1MpKSApCi0gICAgICAgICAgICBj b250aW51ZTsKLQotICAgICAgICAvKgotICAgICAgICAgKiBEb24ndCBnZW5lcmF0ZSByZWxvY2F0 aW9ucyBmb3Igc2VjdGlvbnMgdGhhdCBkZWZpbml0ZWx5Ci0gICAgICAgICAqIGFyZW4ndCB1c2Vk IGJ5IHRoZSBib290IGxvYWRlciBjb2RlLgotICAgICAgICAgKi8KLSAgICAgICAgaWYgKCBtZW1j bXAoc2VjMVtpXS5uYW1lLCAiLmluaXRjYWwiLCBzaXplb2Yoc2VjMVtpXS5uYW1lKSkgPT0gMCB8 fAotICAgICAgICAgICAgIG1lbWNtcChzZWMxW2ldLm5hbWUsICIuaW5pdC5zZSIsIHNpemVvZihz ZWMxW2ldLm5hbWUpKSA9PSAwIHx8Ci0gICAgICAgICAgICAgbWVtY21wKHNlYzFbaV0ubmFtZSwg Ii5idWlsZGlkIiwgc2l6ZW9mKHNlYzFbaV0ubmFtZSkpID09IDAgfHwKLSAgICAgICAgICAgICBt ZW1jbXAoc2VjMVtpXS5uYW1lLCAiLmxvY2twcm8iLCBzaXplb2Yoc2VjMVtpXS5uYW1lKSkgPT0g MCApCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoICFzZWMxW2ldLnJ2YSAp Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ2FuJ3QgaGFuZGxlIHNl Y3Rpb24gJXUgd2l0aCB6ZXJvIFJWQVxuIiwgaSk7Ci0gICAgICAgICAgICByZXR1cm4gMzsKLSAg ICAgICAgfQotCi0gICAgICAgIGlmICggc2VjMVtpXS5maWxlX3NpemUgPiBzZWMxW2ldLnNpemUg KQotICAgICAgICB7Ci0gICAgICAgICAgICBzZWMxW2ldLmZpbGVfc2l6ZSA9IHNlYzFbaV0uc2l6 ZTsKLSAgICAgICAgICAgIHNlYzJbaV0uZmlsZV9zaXplID0gc2VjMltpXS5zaXplOwotICAgICAg ICB9Ci0gICAgICAgIHB0cjEgPSBtYXBfc2VjdGlvbihzZWMxICsgaSwgaW4xLCBhcmd2WzFdKTsK LSAgICAgICAgcHRyMiA9IG1hcF9zZWN0aW9uKHNlYzIgKyBpLCBpbjIsIGFyZ3ZbMl0pOwotCi0g ICAgICAgIGRpZmZfc2VjdGlvbnMocHRyMSwgcHRyMiwgc2VjMSArIGksIGJhc2UyIC0gYmFzZTEs IHdpZHRoMSwKLSAgICAgICAgICAgICAgICAgICAgICBiYXNlMSwgYmFzZTEgKyBzaXplMSk7Ci0K LSAgICAgICAgdW5tYXBfc2VjdGlvbihwdHIxLCBzZWMxICsgaSk7Ci0gICAgICAgIHVubWFwX3Nl Y3Rpb24ocHRyMiwgc2VjMiArIGkpOwotICAgIH0KLQotICAgIGRpZmZfc2VjdGlvbnMoTlVMTCwg TlVMTCwgTlVMTCwgMCwgMCwgMCwgMCk7Ci0KLSAgICBwdXRzKCJfX2Jhc2VfcmVsb2NzX2VuZDoi KTsKLQotICAgIGNsb3NlKGluMSk7Ci0gICAgY2xvc2UoaW4yKTsKLQotICAgIHJldHVybiAwOwot fQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2VmaS9yZWxvY3MtZHVtbXkuUyBiL3hlbi9hcmNo L3g4Ni9lZmkvcmVsb2NzLWR1bW15LlMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5 MjhhODIuLjAwMDAwMDAKLS0tIGEveGVuL2FyY2gveDg2L2VmaS9yZWxvY3MtZHVtbXkuUworKysg L2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLQotCS5zZWN0aW9uIC5yZWxvYywgImEiLCBAcHJv Z2JpdHMKLQkuYmFsaWduIDQKLUdMT0JBTChfX2Jhc2VfcmVsb2NzX3N0YXJ0KQotCS5sb25nIDAK LQkubG9uZyA4Ci1HTE9CQUwoX19iYXNlX3JlbG9jc19lbmQpCi0KLQkuZ2xvYmwgVklSVF9TVEFS VCwgQUxUX1NUQVJUCi0JLmVxdSBWSVJUX1NUQVJULCBYRU5fVklSVF9TVEFSVAotCS5lcXUgQUxU X1NUQVJULCBYRU5fVklSVF9FTkQKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9lZmkvc3R1Yi5j IGIveGVuL2FyY2gveDg2L2VmaS9zdHViLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDU5MTg1MzYuLjAwMDAwMDAKLS0tIGEveGVuL2FyY2gveDg2L2VmaS9zdHViLmMKKysrIC9kZXYv bnVsbApAQCAtMSw5NyArMCwwIEBACi0jaW5jbHVkZSA8eGVuL3R5cGVzLmg+Ci0jaW5jbHVkZSA8 eGVuL2VmaS5oPgotI2luY2x1ZGUgPHhlbi9lcnJuby5oPgotI2luY2x1ZGUgPHhlbi9pbml0Lmg+ Ci0jaW5jbHVkZSA8eGVuL2xpYi5oPgotI2luY2x1ZGUgPHhlbi9tdWx0aWJvb3QyLmg+Ci0jaW5j bHVkZSA8YXNtL3BhZ2UuaD4KLSNpbmNsdWRlIDxhc20vZWZpYmluZC5oPgotI2luY2x1ZGUgPGVm aS9lZmlkZWYuaD4KLSNpbmNsdWRlIDxlZmkvZWZpY2Fwc3VsZS5oPgotI2luY2x1ZGUgPGVmaS9l Zmljb24uaD4KLSNpbmNsdWRlIDxlZmkvZWZpZGV2cC5oPgotI2luY2x1ZGUgPGVmaS9lZmlhcGku aD4KLQotLyoKLSAqIEhlcmUgd2UgYXJlIGluIEVGSSBzdHViLiBFRkkgY2FsbHMgYXJlIG5vdCBz dXBwb3J0ZWQgZHVlIHRvIGxhY2sKLSAqIG9mIHJlbGV2YW50IGZ1bmN0aW9uYWxpdHkgaW4gY29t cGlsZXIgYW5kL29yIGxpbmtlci4KLSAqCi0gKiBlZmlfbWJfc3RhcnQoKSBhbmQgZWZpX211bHRp Ym9vdDIoKSBhcmUgdGhlIGV4Y2VwdGlvbnMuCi0gKiBQbGVhc2UgbG9vayBiZWxvdyBmb3IgbW9y ZSBkZXRhaWxzLgotICovCi0KLWFzbSAoCi0gICAgIiAgICAudGV4dCAgICAgICAgICAgICAgICAg ICAgICAgICBcbiIKLSAgICAiICAgIC5nbG9ibCBlZmlfbWJfc3RhcnQgICAgICAgICAgIFxuIgot ICAgICJlZmlfbWJfc3RhcnQ6ICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgIiAgICBtb3Yg ICAgJXJjeCwlcmRpICAgICAgICAgICAgICBcbiIKLSAgICAiICAgIG1vdiAgICAlcmR4LCVyc2kg ICAgICAgICAgICAgIFxuIgotICAgICIgICAgeG9yICAgICVyZHgsJXJkeCAgICAgICAgICAgICAg XG4iCi0gICAgIiAgICBjYWxsICAgZWZpX211bHRpYm9vdDIgICAgICAgICBcbiIKLSAgICApOwot Ci12b2lkIF9faW5pdCBub3JldHVybiBlZmlfbXVsdGlib290MihFRklfSEFORExFIEltYWdlSGFu ZGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX1NZU1RFTV9UQUJM RSAqU3lzdGVtVGFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBtdWx0aWJvb3QyX3RhZ19tb2R1bGVfdCAqZG9tMF9rZXJuZWwpCi17Ci0gICAgc3RhdGljIGNv bnN0IENIQVIxNiBfX2luaXRjb25zdCBlcnJbXSA9Ci0gICAgICAgIEwiWGVuIGRvZXMgbm90IGhh dmUgRUZJIGNvZGUgYnVpbGQgaW4hXHJcblN5c3RlbSBoYWx0ZWQhXHJcbiI7Ci0gICAgU0lNUExF X1RFWFRfT1VUUFVUX0lOVEVSRkFDRSAqU3RkRXJyOwotCi0gICAgU3RkRXJyID0gU3lzdGVtVGFi bGUtPlN0ZEVyciA/IFN5c3RlbVRhYmxlLT5TdGRFcnIgOiBTeXN0ZW1UYWJsZS0+Q29uT3V0Owot Ci0gICAgLyoKLSAgICAgKiBQcmludCBlcnJvciBtZXNzYWdlIGFuZCBoYWx0IHRoZSBzeXN0ZW0u Ci0gICAgICoKLSAgICAgKiBXZSBoYXZlIHRvIG9wZW4gY29kZSBNUyB4NjQgY2FsbGluZyBjb252 ZW50aW9uCi0gICAgICogaW4gYXNzZW1ibHkgYmVjYXVzZSBoZXJlIHRoaXMgY29udmVudGlvbiBt YXkKLSAgICAgKiBub3QgYmUgZGlyZWN0bHkgc3VwcG9ydGVkIGJ5IEMgY29tcGlsZXIuCi0gICAg ICovCi0gICAgYXNtIHZvbGF0aWxlKAotICAgICIgICAgY2FsbCAqJTMgICAgICAgICAgICAgICAg ICAgICBcbiIKLSAgICAiMDogIGhsdCAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAg IiAgICBqbXAgIDBiICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgIDogIitjIiAoU3Rk RXJyKSwgIj1kIiAoU3RkRXJyKSA6ICIxIiAoZXJyKSwgInJtIiAoU3RkRXJyLT5PdXRwdXRTdHJp bmcpCi0gICAgICAgOiAicmF4IiwgInI4IiwgInI5IiwgInIxMCIsICJyMTEiLCAibWVtb3J5Iik7 Ci0KLSAgICB1bnJlYWNoYWJsZSgpOwotfQotCi1ib29sIGVmaV9lbmFibGVkKHVuc2lnbmVkIGlu dCBmZWF0dXJlKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBfX2luaXQgZWZpX2lu aXRfbWVtb3J5KHZvaWQpIHsgfQotCi12b2lkIGVmaV91cGRhdGVfbDRfcGd0YWJsZSh1bnNpZ25l ZCBpbnQgbDRpZHgsIGw0X3BnZW50cnlfdCBsNGUpIHsgfQotCi1ib29sIGVmaV9yc191c2luZ19w Z3RhYmxlcyh2b2lkKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdW5zaWduZWQgbG9uZyBl ZmlfZ2V0X3RpbWUodm9pZCkKLXsKLSAgICBCVUcoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9p ZCBlZmlfaGFsdF9zeXN0ZW0odm9pZCkgeyB9Ci12b2lkIGVmaV9yZXNldF9zeXN0ZW0oYm9vbCB3 YXJtKSB7IH0KLQotaW50IGVmaV9nZXRfaW5mbyh1aW50MzJfdCBpZHgsIHVuaW9uIHhlbnBmX2Vm aV9pbmZvICppbmZvKQotewotICAgIHJldHVybiAtRU5PU1lTOwotfQotCi1pbnQgZWZpX2NvbXBh dF9nZXRfaW5mbyh1aW50MzJfdCBpZHgsIHVuaW9uIGNvbXBhdF9wZl9lZmlfaW5mbyAqKQotICAg IF9fYXR0cmlidXRlX18oKF9fYWxpYXNfXygiZWZpX2dldF9pbmZvIikpKTsKLQotaW50IGVmaV9y dW50aW1lX2NhbGwoc3RydWN0IHhlbnBmX2VmaV9ydW50aW1lX2NhbGwgKm9wKQotewotICAgIHJl dHVybiAtRU5PU1lTOwotfQotCi1pbnQgZWZpX2NvbXBhdF9ydW50aW1lX2NhbGwoc3RydWN0IGNv bXBhdF9wZl9lZmlfcnVudGltZV9jYWxsICopCi0gICAgX19hdHRyaWJ1dGVfXygoX19hbGlhc19f KCJlZmlfcnVudGltZV9jYWxsIikpKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94ZW4ubGRz LlMgYi94ZW4vYXJjaC94ODYveGVuLmxkcy5TCmluZGV4IDFlNTIzM2EuLjQzZTA3OTkgMTAwNjQ0 Ci0tLSBhL3hlbi9hcmNoL3g4Ni94ZW4ubGRzLlMKKysrIGIveGVuL2FyY2gveDg2L3hlbi5sZHMu UwpAQCAtNywyNiArNywxMiBAQAogI3VuZGVmIEVOVFJZCiAjdW5kZWYgQUxJR04KIAotI2lmZGVm IEVGSQotCi0jZGVmaW5lIEZPUk1BVCAicGVpLXg4Ni02NCIKLSN1bmRlZiBfX1hFTl9WSVJUX1NU QVJUCi0jZGVmaW5lIF9fWEVOX1ZJUlRfU1RBUlQgX19pbWFnZV9iYXNlX18KLSNkZWZpbmUgU0VD VElPTl9BTElHTiBNQigyKQotI2RlZmluZSBERUNMX1NFQ1RJT04oeCkgeCA6Ci0KLUVOVFJZKGVm aV9zdGFydCkKLQotI2Vsc2UgLyogIUVGSSAqLwotCiAjZGVmaW5lIEZPUk1BVCAiZWxmNjQteDg2 LTY0IgogI2RlZmluZSBTRUNUSU9OX0FMSUdOIFBBR0VfU0laRQogI2RlZmluZSBERUNMX1NFQ1RJ T04oeCkgeCA6IEFUKEFERFIoeCkgLSBfX1hFTl9WSVJUX1NUQVJUKQogCiBFTlRSWShzdGFydF9w YSkKIAotI2VuZGlmIC8qIEVGSSAqLwotCiBPVVRQVVRfRk9STUFUKEZPUk1BVCwgRk9STUFULCBG T1JNQVQpCiAKIE9VVFBVVF9BUkNIKGkzODY6eDg2LTY0KQpAQCAtMzQsMTggKzIwLDE0IEBAIE9V VFBVVF9BUkNIKGkzODY6eDg2LTY0KQogUEhEUlMKIHsKICAgdGV4dCBQVF9MT0FEIDsKLSNpZiAo ZGVmaW5lZChCVUlMRF9JRCkgfHwgZGVmaW5lZCAoQ09ORklHX1BWSF9HVUVTVCkpICYmICFkZWZp bmVkKEVGSSkKKyNpZiBkZWZpbmVkKEJVSUxEX0lEKSB8fCBkZWZpbmVkIChDT05GSUdfUFZIX0dV RVNUKQogICBub3RlIFBUX05PVEUgOwogI2VuZGlmCiB9CiBTRUNUSU9OUwogewotI2lmICFkZWZp bmVkKEVGSSkKICAgLiA9IF9fWEVOX1ZJUlRfU1RBUlQ7CiAgIF9faW1hZ2VfYmFzZV9fID0gLjsK LSNlbHNlCi0gIC4gPSBfX2ltYWdlX2Jhc2VfXzsKLSNlbmRpZgogCiAjaWYgMAogLyoKQEAgLTYw LDkgKzQyLDYgQEAgU0VDVElPTlMKIAogICBzdGFydF9wYSA9IEFCU09MVVRFKHN0YXJ0IC0gX19Y RU5fVklSVF9TVEFSVCk7CiAKLSNpZmRlZiBFRkkKLSAgLiA9IF9fWEVOX1ZJUlRfU1RBUlQgKyBY RU5fSU1HX09GRlNFVDsKLSNlbHNlCiAgIC8qCiAgICAqIFRoZSBQRSBoZWFkZXIgbXVzdCBiZSBm b2xsb3dlZCBieSAudGV4dCBzZWN0aW9uIHdoaWNoCiAgICAqIHN0YXJ0cyBhdCBfX1hFTl9WSVJU X1NUQVJUICsgWEVOX0lNR19PRkZTRVQgYWRkcmVzcy4KQEAgLTcyLDcgKzUxLDYgQEAgU0VDVElP TlMKICAgREVDTF9TRUNUSU9OKC5lZmkucGUuaGVhZGVyKSB7CiAgICAgICAgKiguZWZpLnBlLmhl YWRlcikKICAgfSA6Tk9ORQotI2VuZGlmCiAKICAgX3N0YXJ0ID0gLjsKICAgREVDTF9TRUNUSU9O KC50ZXh0KSB7CkBAIC0xMTcsMTYgKzk1LDYgQEAgU0VDVElPTlMKICAgICAgICAqKC5kYXRhLnJl bC5ybykKICAgICAgICAqKC5kYXRhLnJlbC5yby4qKQogCi0jaWYgZGVmaW5lZChCVUlMRF9JRCkg JiYgZGVmaW5lZChFRkkpICYmICFkZWZpbmVkKEJVSUxEX0lEX0VGSSkKLS8qCi0gKiBObyBtZWNo YW5pc20gdG8gcHV0IGFuIFBUX05PVEUgaW4gdGhlIEVGSSBmaWxlIC0gc28gcHV0Ci0gKiBpdCBp biAucm9kYXRhIHNlY3Rpb24uIChub3Rlcy5vIHN1cHBsaWVzIHVzIHdpdGggLm5vdGUuZ251LmJ1 aWxkLWlkKS4KLSAqLwotICAgICAgIC4gPSBBTElHTig0KTsKLSAgICAgICBfX25vdGVfZ251X2J1 aWxkX2lkX3N0YXJ0ID0gLjsKLSAgICAgICAqKC5ub3RlLmdudS5idWlsZC1pZCkKLSAgICAgICBf X25vdGVfZ251X2J1aWxkX2lkX2VuZCA9IC47Ci0jZW5kaWYKICAgICAgICAuID0gQUxJR04oOCk7 CiAgICAgICAgLyogRXhjZXB0aW9uIHRhYmxlICovCiAgICAgICAgX19zdGFydF9fX2V4X3RhYmxl ID0gLjsKQEAgLTE1NywzMiArMTI1LDIzIEBAIFNFQ1RJT05TCiAjZW5kaWYKICAgfSA6dGV4dAog Ci0jaWYgZGVmaW5lZChDT05GSUdfUFZIX0dVRVNUKSAmJiAhZGVmaW5lZChFRkkpCisjaWYgZGVm aW5lZChDT05GSUdfUFZIX0dVRVNUKQogICBERUNMX1NFQ1RJT04oLm5vdGUuWGVuKSB7CiAgICAg ICAqKC5ub3RlLlhlbikKICAgfSA6bm90ZSA6dGV4dAogI2VuZGlmCiAKICNpZiBkZWZpbmVkKEJV SUxEX0lEKQotI2lmICFkZWZpbmVkKEVGSSkKIC8qCi0gKiBXaGF0IGEgc3RyYW5nZSBzZWN0aW9u IG5hbWUuIFRoZSByZWFzb24gaXMgdGhhdCBvbiBFTEYgYnVpbGRzIHRoaXMgc2VjdGlvbgotICog aXMgZXh0cmFjdGVkIHRvIG5vdGVzLm8gKHdoaWNoIHRoZW4gaXMgaW5nZXN0ZWQgaW4gdGhlIEVG SSBmaWxlKS4gQnV0IHRoZQotICogY29tcGlsZXIgbWF5IHdhbnQgdG8gaW5qZWN0IG90aGVyIHRo aW5ncyBpbiB0aGUgLm5vdGUgd2hpY2ggd2UgZG9uJ3QgY2FyZQotICogYWJvdXQgLSBoZW5jZSB0 aGlzIHVuaXF1ZSBuYW1lLgorICogV2hhdCBhIHN0cmFuZ2Ugc2VjdGlvbiBuYW1lLiBUaGUgcmVh c29uIGlzIHRoYXQgdGhlIGNvbXBpbGVyIG1heSB3YW50IHRvCisgKiBpbmplY3Qgb3RoZXIgdGhp bmdzIGluIHRoZSAubm90ZSB3aGljaCB3ZSBkb24ndCBjYXJlIGFib3V0IC0gaGVuY2UgdGhpcwor ICogdW5pcXVlIG5hbWUuCiAgKi8KICAgREVDTF9TRUNUSU9OKC5ub3RlLmdudS5idWlsZC1pZCkg ewogICAgICAgIF9fbm90ZV9nbnVfYnVpbGRfaWRfc3RhcnQgPSAuOwogICAgICAgICooLm5vdGUu Z251LmJ1aWxkLWlkKQogICAgICAgIF9fbm90ZV9nbnVfYnVpbGRfaWRfZW5kID0gLjsKICAgfSA6 bm90ZSA6dGV4dAotI2VsaWYgZGVmaW5lZChCVUlMRF9JRF9FRkkpCi0gIERFQ0xfU0VDVElPTigu YnVpbGRpZCkgewotICAgICAgIF9fbm90ZV9nbnVfYnVpbGRfaWRfc3RhcnQgPSAuOwotICAgICAg ICooLmJ1aWxkaWQpCi0gICAgICAgX19ub3RlX2dudV9idWlsZF9pZF9lbmQgPSAuOwotICB9IDp0 ZXh0Ci0jZW5kaWYKICNlbmRpZgogICBfZXJvZGF0YSA9IC47CiAKQEAgLTE5MiwxMSArMTUxLDcg QEAgU0VDVElPTlMKICAgX18yTV9pbml0X3N0YXJ0ID0gLjsgICAgICAgICAvKiBTdGFydCBvZiAy TSBzdXBlcnBhZ2VzLCBtYXBwZWQgUldYIChib290IG9ubHkpLiAqLwogICAuID0gQUxJR04oUEFH RV9TSVpFKTsgICAgICAgICAgICAgLyogSW5pdCBjb2RlIGFuZCBkYXRhICovCiAgIF9faW5pdF9i ZWdpbiA9IC47Ci0jaWZkZWYgRUZJIC8qIEVGSSB3YW50cyB0byBtZXJnZSBhbGwgb2YgLmluaXQu KiAgRUxGIGRvZXNuJ3QuICovCi0gIERFQ0xfU0VDVElPTiguaW5pdCkgewotI2Vsc2UKICAgREVD TF9TRUNUSU9OKC5pbml0LnRleHQpIHsKLSNlbmRpZgogICAgICAgIF9zaW5pdHRleHQgPSAuOwog ICAgICAgICooLmluaXQudGV4dCkKICAgICAgICAvKgpAQCAtMjA3LDEyICsxNjIsOCBAQCBTRUNU SU9OUwogICAgICAgICooLmFsdGluc3RyX3JlcGxhY2VtZW50KQogICAgICAgIF9laW5pdHRleHQg PSAuOwogCi0jaWZkZWYgRUZJIC8qIEVGSSB3YW50cyB0byBtZXJnZSBhbGwgb2YgLmluaXQuKiAg RUxGIGRvZXNuJ3QuICovCi0gICAgICAgLiA9IEFMSUdOKFNNUF9DQUNIRV9CWVRFUyk7Ci0jZWxz ZQogICB9IDp0ZXh0CiAgIERFQ0xfU0VDVElPTiguaW5pdC5kYXRhKSB7Ci0jZW5kaWYKIAogICAg ICAgICooLmluaXQucm9kYXRhKQogICAgICAgICooLmluaXQucm9kYXRhLnJlbCkKQEAgLTMxMCwy MCArMjYxLDYgQEAgU0VDVElPTlMKIAogICBfX3BlX1NpemVPZkltYWdlID0gQUxJR04oLiAtIF9f aW1hZ2VfYmFzZV9fLCBNQigxNikpOwogCi0jaWZkZWYgRUZJCi0gIC4gPSBBTElHTig0KTsKLSAg LnJlbG9jIDogewotICAgICooLnJlbG9jKQotICB9IDp0ZXh0Ci0gIC8qIFRyaWNrIHRoZSBsaW5r ZXIgaW50byBzZXR0aW5nIHRoZSBpbWFnZSBzaXplIHRvIGV4YWN0bHkgMTZNYi4gKi8KLSAgLiA9 IEFMSUdOKF9fc2VjdGlvbl9hbGlnbm1lbnRfXyk7Ci0gIC5wYWQgOiB7Ci0gICAgLiA9IEFMSUdO KE1CKDE2KSk7Ci0gIH0gOnRleHQKLSNlbmRpZgotCi0gIGVmaSA9IERFRklORUQoZWZpKSA/IGVm aSA6IC47Ci0KICAgLyogU2VjdGlvbnMgdG8gYmUgZGlzY2FyZGVkICovCiAgIC9ESVNDQVJELyA6 IHsKICAgICAgICAqKC5leGl0LnRleHQpCkBAIC0zMzIsMTIgKzI2OSw2IEBAIFNFQ1RJT05TCiAg ICAgICAgKiguZGlzY2FyZCkKICAgICAgICAqKC5kaXNjYXJkLiopCiAgICAgICAgKiguZWhfZnJh bWUpCi0jaWZkZWYgRUZJCi0gICAgICAgKiguZWZpLnBlLmhlYWRlcikKLSAgICAgICAqKC5jb21t ZW50KQotICAgICAgICooLmNvbW1lbnQuKikKLSAgICAgICAqKC5ub3RlLlhlbikKLSNlbmRpZgog ICB9CiAKICAgLyogU3RhYnMgZGVidWdnaW5nIHNlY3Rpb25zLiAgKi8KQEAgLTM4MSwxMSArMzEy LDkgQEAgQVNTRVJUKCh0cmFtcG9saW5lX2VuZCAtIHRyYW1wb2xpbmVfc3RhcnQpIDwgVFJBTVBP TElORV9TUEFDRSAtIE1CSV9TUEFDRV9NSU4sCiBBU1NFUlQoKHdha2V1cF9zdGFjayAtIHdha2V1 cF9zdGFja19zdGFydCkgPj0gV0FLRVVQX1NUQUNLX01JTiwKICAgICAid2FrZXVwIHN0YWNrIHRv byBzbWFsbCIpCiAKLSNpZm5kZWYgRUZJCiBBU1NFUlQoZWZpX3BlX2hlYWRfZW5kID09IF9zdGFy dCwgIlBFIGhlYWRlciBkb2VzIG5vdCBlbmQgYXQgdGhlIGJlZ2lubmluZyBvZiAudGV4dCBzZWN0 aW9uIikKIEFTU0VSVChfc3RhcnQgPT0gX19YRU5fVklSVF9TVEFSVCArIFhFTl9JTUdfT0ZGU0VU LCAiLnRleHQgc2VjdGlvbiBiZWdpbnMgYXQgd3JvbmcgYWRkcmVzcyIpCiBBU1NFUlQoSVNfQUxJ R05FRChfc3RhcnQsICAgICAgWEVOX0ZJTEVfQUxJR04pLCAiX3N0YXJ0IG1pc2FsaWduZWQiKQog QVNTRVJUKElTX0FMSUdORUQoX19ic3Nfc3RhcnQsIFhFTl9GSUxFX0FMSUdOKSwgIl9fYnNzX3N0 YXJ0IG1pc2FsaWduZWQiKQogQVNTRVJUKElTX0FMSUdORUQoX19wZV9TaXplT2ZJbWFnZSwgWEVO X0xPQURfQUxJR04pLCAiX19wZV9TaXplT2ZJbWFnZSBpcyBub3QgbXVsdGlwbGUgb2YgWEVOX0xP QURfQUxJR04iKQogQVNTRVJUKFhFTl9MT0FEX0FMSUdOID49IFhFTl9GSUxFX0FMSUdOLCAiWEVO X0xPQURfQUxJR04gPCBYRU5fRklMRV9BTElHTiIpCi0jZW5kaWYKZGlmZiAtLWdpdCBhL3hlbi9j b21tb24vZWZpL2Jvb3QuYyBiL3hlbi9jb21tb24vZWZpL2Jvb3QuYwppbmRleCAwNmJmYWRjLi5h MTFmOTdiIDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL2VmaS9ib290LmMKKysrIGIveGVuL2NvbW1v bi9lZmkvYm9vdC5jCkBAIC0xMTYwLDggKzExNjAsNiBAQCBlZmlfc3RhcnQoRUZJX0hBTkRMRSBJ bWFnZUhhbmRsZSwgRUZJX1NZU1RFTV9UQUJMRSAqU3lzdGVtVGFibGUpCiAgICAgUHJpbnRTdHIo TCJYZW4gIiBfX3N0cmluZ2lmeShYRU5fVkVSU0lPTikgIi4iIF9fc3RyaW5naWZ5KFhFTl9TVUJW RVJTSU9OKQogICAgICAgICAgICAgIFhFTl9FWFRSQVZFUlNJT04gIiAoYy9zICIgWEVOX0NIQU5H RVNFVCAiKSBFRkkgbG9hZGVyXHJcbiIpOwogCi0gICAgZWZpX2FyY2hfcmVsb2NhdGVfaW1hZ2Uo MCk7Ci0KICAgICBpZiAoIHVzZV9jZmdfZmlsZSApCiAgICAgewogICAgICAgICBFRklfRklMRV9I QU5ETEUgZGlyX2hhbmRsZTsKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vdmVyc2lvbi5jIGIveGVu L2NvbW1vbi92ZXJzaW9uLmMKaW5kZXggMjIzY2I1Mi4uM2I0ZmY5YSAxMDA2NDQKLS0tIGEveGVu L2NvbW1vbi92ZXJzaW9uLmMKKysrIGIveGVuL2NvbW1vbi92ZXJzaW9uLmMKQEAgLTQsNyArNCw2 IEBACiAjaW5jbHVkZSA8eGVuL2xpYi5oPgogI2luY2x1ZGUgPHhlbi9zdHJpbmcuaD4KICNpbmNs dWRlIDx4ZW4vdHlwZXMuaD4KLSNpbmNsdWRlIDx4ZW4vZWZpLmg+CiAjaW5jbHVkZSA8eGVuL2Vs Zi5oPgogI2luY2x1ZGUgPHhlbi92ZXJzaW9uLmg+CiAKQEAgLTExOCwyOCArMTE3LDYgQEAgaW50 IHhlbl9idWlsZF9pZF9jaGVjayhjb25zdCBFbGZfTm90ZSAqbiwgdW5zaWduZWQgaW50IG5fc3os CiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0cnVjdCBwZV9leHRlcm5hbF9kZWJ1Z19kaXJlY3RvcnkK LXsKLSAgICB1aW50MzJfdCBjaGFyYWN0ZXJpc3RpY3M7Ci0gICAgdWludDMyX3QgdGltZV9zdGFt cDsKLSAgICB1aW50MTZfdCBtYWpvcl92ZXJzaW9uOwotICAgIHVpbnQxNl90IG1pbm9yX3ZlcnNp b247Ci0jZGVmaW5lIFBFX0lNQUdFX0RFQlVHX1RZUEVfQ09ERVZJRVcgMgotICAgIHVpbnQzMl90 IHR5cGU7Ci0gICAgdWludDMyX3Qgc2l6ZTsKLSAgICB1aW50MzJfdCBydmFfb2ZfZGF0YTsKLSAg ICB1aW50MzJfdCBmaWxlcG9zX29mX2RhdGE7Ci19OwotCi1zdHJ1Y3QgY3ZfaW5mb19wZGI3MAot ewotI2RlZmluZSBDVklORk9fUERCNzBfQ1ZTSUdOQVRVUkUgMHg1MzQ0NTM1MiAvKiAiUlNEUyIg Ki8KLSAgICB1aW50MzJfdCBjdl9zaWduYXR1cmU7Ci0gICAgdW5zaWduZWQgY2hhciBzaWduYXR1 cmVbMTZdOwotICAgIHVpbnQzMl90IGFnZTsKLSAgICBjaGFyIHBkYl9maWxlbmFtZVtdOwotfTsK LQogc3RhdGljIGludCBfX2luaXQgeGVuX2J1aWxkX2luaXQodm9pZCkKIHsKICAgICBjb25zdCBF bGZfTm90ZSAqbiA9IF9fbm90ZV9nbnVfYnVpbGRfaWRfc3RhcnQ7CkBAIC0xNTgsMzQgKzEzNSw2 IEBAIHN0YXRpYyBpbnQgX19pbml0IHhlbl9idWlsZF9pbml0KHZvaWQpCiAKICAgICByYyA9IHhl bl9idWlsZF9pZF9jaGVjayhuLCBzeiwgJmJ1aWxkX2lkX3AsICZidWlsZF9pZF9sZW4pOwogCi0j aWZkZWYgQ09ORklHX1g4NgotICAgIC8qIEFsdGVybmF0aXZlbHkgd2UgbWF5IGhhdmUgYSBDb2Rl VmlldyByZWNvcmQgZnJvbSBhbiBFRkkgYnVpbGQuICovCi0gICAgaWYgKCByYyAmJiBlZmlfZW5h YmxlZChFRklfTE9BREVSKSApCi0gICAgewotICAgICAgICBjb25zdCBzdHJ1Y3QgcGVfZXh0ZXJu YWxfZGVidWdfZGlyZWN0b3J5ICpkaXIgPSAoY29uc3Qgdm9pZCAqKW47Ci0KLSAgICAgICAgLyoK LSAgICAgICAgICogVmFsaWRhdGUgdGhhdCB0aGUgZnVsbC1ub3RlLWhlYWRlciBjaGVjayBhYm92 ZSB3b24ndCBwcmV2ZW50Ci0gICAgICAgICAqIGZhbGwtdGhyb3VnaCB0byB0aGUgQ29kZVZpZXcg Y2FzZSBoZXJlLgotICAgICAgICAgKi8KLSAgICAgICAgQlVJTERfQlVHX09OKHNpemVvZigqbikg PiBzaXplb2YoKmRpcikpOwotCi0gICAgICAgIGlmICggc3ogPiBzaXplb2YoKmRpcikgKyBzaXpl b2Yoc3RydWN0IGN2X2luZm9fcGRiNzApICYmCi0gICAgICAgICAgICAgZGlyLT50eXBlID09IFBF X0lNQUdFX0RFQlVHX1RZUEVfQ09ERVZJRVcgJiYKLSAgICAgICAgICAgICBkaXItPnNpemUgPiBz aXplb2Yoc3RydWN0IGN2X2luZm9fcGRiNzApICYmCi0gICAgICAgICAgICAgWEVOX1ZJUlRfU1RB UlQgKyBkaXItPnJ2YV9vZl9kYXRhID09ICh1bnNpZ25lZCBsb25nKShkaXIgKyAxKSApCi0gICAg ICAgIHsKLSAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBjdl9pbmZvX3BkYjcwICppbmZvID0gKGNv bnN0IHZvaWQgKikoZGlyICsgMSk7Ci0KLSAgICAgICAgICAgIGlmICggaW5mby0+Y3Zfc2lnbmF0 dXJlID09IENWSU5GT19QREI3MF9DVlNJR05BVFVSRSApCi0gICAgICAgICAgICB7Ci0gICAgICAg ICAgICAgICAgYnVpbGRfaWRfcCA9IGluZm8tPnNpZ25hdHVyZTsKLSAgICAgICAgICAgICAgICBi dWlsZF9pZF9sZW4gPSBzaXplb2YoaW5mby0+c2lnbmF0dXJlKTsKLSAgICAgICAgICAgICAgICBy YyA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKICAgICBpZiAo ICFyYyApCiAgICAgICAgIHByaW50ayhYRU5MT0dfSU5GTyAiYnVpbGQtaWQ6ICUqcGhOXG4iLCBi dWlsZF9pZF9sZW4sIGJ1aWxkX2lkX3ApOwogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4v ZWZpLmggYi94ZW4vaW5jbHVkZS94ZW4vZWZpLmgKaW5kZXggNzNmODNjMS4uNDRiN2QzZSAxMDA2 NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL2VmaS5oCisrKyBiL3hlbi9pbmNsdWRlL3hlbi9lZmku aApAQCAtMTEsNyArMTEsNiBAQCBleHRlcm4gdW5zaWduZWQgaW50IGVmaV9mbGFnczsKICNkZWZp bmUgRUZJX0JPT1QJMAkvKiBXZXJlIHdlIGJvb3RlZCBmcm9tIEVGST8gKi8KICNkZWZpbmUgRUZJ X0xPQURFUgkxCS8qIFdlcmUgd2UgYm9vdGVkIGRpcmVjdGx5IGZyb20gRUZJIGxvYWRlcj8gKi8K ICNkZWZpbmUgRUZJX1JTCQkyCS8qIENhbiB3ZSB1c2UgcnVudGltZSBzZXJ2aWNlcz8gKi8KLSNk ZWZpbmUgRUZJX01CX0xPQURFUgk0CS8qIHhlbi5tYi5lZmkgYm9vdGVkIGRpcmVjdGx5IGZyb20g RUZJIGxvYWRlcj8gKi8KIAogLyogQWRkIGZpZWxkcyBoZXJlIG9ubHkgaWYgdGhleSBuZWVkIHRv IGJlIHJlZmVyZW5jZWQgZnJvbSBub24tRUZJIGNvZGUuICovCiBzdHJ1Y3QgZWZpIHsKLS0gCjEu Ny4xMC40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K WGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0 cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==