From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 0A5D5E77188 for ; Mon, 6 Jan 2025 06:25:59 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tUgYU-0005pd-Hp; Mon, 06 Jan 2025 01:25:38 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tUgYP-0005pL-PZ for grub-devel@gnu.org; Mon, 06 Jan 2025 01:25:34 -0500 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tUgYN-0002iE-6m for grub-devel@gnu.org; Mon, 06 Jan 2025 01:25:33 -0500 Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5063resK014088; Mon, 6 Jan 2025 06:25:27 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pp1; bh=ZgIwGC jkrP5Vi9crrPO7X+jIu0N2H4GPQRQjt1kjSrg=; b=NPe9HIxDVQ/rEepF77ti2L BPqTuA7mY17aUvgF4Mn1nVTWgloOebVxUqq/To3Rq/lZ+TNm+EwvSfLyQ8wHu/AD L1mpRSqKEKa9pAgFL2xnzu9yRGBO7DOR58495aHtwELS8cyjp6KETA1FAmudZQ2Y JRPmLWB+lPr4fphefWAlRkiGEJW2yJ3SFdhjw45BzIA9eY3kqbP/nfuANkG2KJnW KMcoot7Wd4aSNTj3X46dDNMk39cZvoUT7DA1QxLLB0brNUrTLTOxy8c5M+aEdLsp XWJQLAu8kmCrdqGBRnQ9WL4LHbJbe8mxvyUI/D+pM/4T4XTaFo+v90qKFEAwE4pQ == Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4407nh0gtx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 06 Jan 2025 06:25:26 +0000 (GMT) Received: from m0356517.ppops.net (m0356517.ppops.net [127.0.0.1]) by pps.reinject (8.18.0.8/8.18.0.8) with ESMTP id 5066PDML026827; Mon, 6 Jan 2025 06:25:26 GMT Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4407nh0gtu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 06 Jan 2025 06:25:26 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 50669Tfq015805; Mon, 6 Jan 2025 06:25:25 GMT Received: from smtprelay03.dal12v.mail.ibm.com ([172.16.1.5]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 43ygtkmev2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 06 Jan 2025 06:25:25 +0000 Received: from smtpav06.wdc07v.mail.ibm.com (smtpav06.wdc07v.mail.ibm.com [10.39.53.233]) by smtprelay03.dal12v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 5066PNO829295134 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 6 Jan 2025 06:25:24 GMT Received: from smtpav06.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 95EF258056; Mon, 6 Jan 2025 06:25:23 +0000 (GMT) Received: from smtpav06.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id BC16758055; Mon, 6 Jan 2025 06:25:22 +0000 (GMT) Received: from ltc.linux.ibm.com (unknown [9.5.196.140]) by smtpav06.wdc07v.mail.ibm.com (Postfix) with ESMTP; Mon, 6 Jan 2025 06:25:22 +0000 (GMT) MIME-Version: 1.0 Date: Mon, 06 Jan 2025 11:55:22 +0530 From: Avnish Chouhan To: Sudhakar Kuppusamy Cc: grub-devel@gnu.org, dja@axtens.net, jan.setjeeilers@oracle.com, julian.klode@canonical.com, mate.kukri@canonical.com, pjones@redhat.com, stefanb@linux.ibm.com, nayna@linux.ibm.com, ssrish@linux.ibm.com, Rashmica Gupta Subject: Re: [PATCH v1 01/21] powerpc-ieee1275: Add support for signing grub with an appended signature In-Reply-To: <20241218145647.1390837-2-sudhakar@linux.ibm.com> References: <20241218145647.1390837-1-sudhakar@linux.ibm.com> <20241218145647.1390837-2-sudhakar@linux.ibm.com> Message-ID: X-Sender: avnish@linux.ibm.com X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: y-dqMJQaniHSj9V2VNY8AcGO-MbA3FDe X-Proofpoint-GUID: HokpiY2fWFeBPcyNQFtJz2P6F9vLuo_7 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1051,Hydra:6.0.680,FMLib:17.12.62.30 definitions=2024-10-15_01,2024-10-11_01,2024-09-30_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 impostorscore=0 lowpriorityscore=0 priorityscore=1501 phishscore=0 spamscore=0 clxscore=1011 adultscore=0 suspectscore=0 malwarescore=0 mlxlogscore=999 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2411120000 definitions=main-2501060051 Received-SPF: pass client-ip=148.163.156.1; envelope-from=avnish@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: The development of GNU GRUB Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org Sender: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org UmV2aWV3ZWQtYnk6wqBBdm5pc2jCoENob3VoYW7CoDxhdm5pc2hAbGludXguaWJtLmNvbT4KCk9u IDIwMjQtMTItMTggMjA6MjYsIFN1ZGhha2FyIEt1cHB1c2FteSB3cm90ZToKPiBGcm9tOiBSYXNo bWljYSBHdXB0YSA8cmFzaG1pY2EuZ0BnbWFpbC5jb20+Cj4gCj4gQWRkIGluZnJhc3RydWN0dXJl IHRvIGFsbG93IGZpcm13YXJlIHRvIHZlcmlmeSB0aGUgaW50ZWdyaXR5IG9mIGdydWIKPiBieSB1 c2Ugb2YgYSBMaW51eC1rZXJuZWwtbW9kdWxlLXN0eWxlIGFwcGVuZGVkIHNpZ25hdHVyZS4gV2Ug aW5pdGlhbGx5Cj4gdGFyZ2V0IHBvd2VycGMtaWVlZTEyNzUsIGJ1dCB0aGUgY29kZSBzaG91bGQg YmUgZXh0ZW5zaWJsZSB0byBvdGhlcgo+IHBsYXRmb3Jtcy4KPiAKPiBVc3VhbGx5IHRoZXNlIHNp Z25hdHVyZXMgYXJlIGFwcGVuZGVkIHRvIGEgZmlsZSB3aXRob3V0IG1vZGlmeWluZyB0aGUKPiBF TEYgZmlsZSBpdHNlbGYuIChUaGlzIGlzIHdoYXQgdGhlICdzaWduLWZpbGUnIHRvb2wgZG9lcywg Zm9yIGV4YW1wbGUuKQo+IFRoZSB2ZXJpZmllciBsb2FkcyB0aGUgc2lnbmVkIGZpbGUgZnJvbSB0 aGUgZmlsZSBzeXN0ZW0gYW5kIGxvb2tzIGF0IAo+IHRoZQo+IGVuZCBvZiB0aGUgZmlsZSBmb3Ig dGhlIGFwcGVuZGVkIHNpZ25hdHVyZS4gSG93ZXZlciwgb24gCj4gcG93ZXJwYy1pZWVlMTI3NQo+ IHBsYXRmb3JtcywgdGhlIGJvb3Rsb2FkZXIgaXMgb2Z0ZW4gc3RvcmVkIGRpcmVjdGx5IGluIHRo ZSBQUmVQIAo+IHBhcnRpdGlvbgo+IGFzIHJhdyBieXRlcyB3aXRob3V0IGEgZmlsZS1zeXN0ZW0u IFRoaXMgbWFrZXMgZGV0ZXJtaW5pbmcgdGhlIGxvY2F0aW9uCj4gb2YgYW4gYXBwZW5kZWQgc2ln bmF0dXJlIG1vcmUgZGlmZmljdWx0Lgo+IAo+IFRvIGFkZHJlc3MgdGhpcywgd2UgYWRkIGEgbmV3 IEVMRiBub3RlLgo+IAo+IFRoZSBuYW1lIGZpZWxkIG9mIHNoYWxsIGJlIHRoZSBzdHJpbmcgIkFw cGVuZGVkLVNpZ25hdHVyZSIsIHplcm8tcGFkZGVkCj4gdG8gNCBieXRlIGFsaWdubWVudC4gVGhl IHR5cGUgZmllbGQgc2hhbGwgYmUgMHg0MTUzNjk2NyAodGhlIEFTQ0lJIAo+IHZhbHVlcwo+IGZv ciB0aGUgc3RyaW5nICJBU2lnIikuIEl0IG11c3QgYmUgdGhlIGZpbmFsIHNlY3Rpb24gaW4gdGhl IEVMRiBiaW5hcnkuCj4gCj4gVGhlIGRlc2NyaXB0aW9uIHNoYWxsIGNvbnRhaW4gdGhlIGFwcGVu ZGVkIHNpZ25hdHVyZSBzdHJ1Y3R1cmUgYXMgCj4gZGVmaW5lZAo+IGJ5IHRoZSBMaW51eCBrZXJu ZWwuIFRoZSBkZXNjcmlwdGlvbiB3aWxsIGFsc28gYmUgcGFkZGVkIHRvIGJlIGEgCj4gbXVsdGlw bGUKPiBvZiA0IGJ5dGVzLiBUaGUgcGFkZGluZyBzaGFsbCBiZSBhZGRlZCBiZWZvcmUgdGhlIGFw cGVuZGVkIHNpZ25hdHVyZQo+IHN0cnVjdHVyZSAobm90IGF0IHRoZSBlbmQpIHNvIHRoYXQgdGhl IGZpbmFsIGJ5dGVzIG9mIGEgc2lnbmVkIEVMRiBmaWxlCj4gYXJlIHRoZSBhcHBlbmRlZCBzaWdu YXR1cmUgbWFnaWMuCj4gCj4gQSBzdWJzZXF1ZW50IHBhdGNoIGRvY3VtZW50cyBob3cgdG8gY3Jl YXRlIGEgZ3J1YiBjb3JlLmltZyB2YWxpZGx5IAo+IHNpZ25lZAo+IHVuZGVyIHRoaXMgc2NoZW1l Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IFJhc2htaWNhIEd1cHRhIDxyYXNobWljYS5nQGdtYWlsLmNv bT4KPiBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgQXh0ZW5zIDxkamFAYXh0ZW5zLm5ldD4KPiBTaWdu ZWQtb2ZmLWJ5OiBTdWRoYWthciBLdXBwdXNhbXkgPHN1ZGhha2FyQGxpbnV4LmlibS5jb20+Cj4g LS0tCj4gIGluY2x1ZGUvZ3J1Yi91dGlsL2luc3RhbGwuaCB8ICA3ICsrKysrLS0KPiAgaW5jbHVk ZS9ncnViL3V0aWwvbWtpbWFnZS5oIHwgIDQgKystLQo+ICB1dGlsL2dydWItaW5zdGFsbC1jb21t b24uYyAgfCAxNSArKysrKysrKysrKystLS0KPiAgdXRpbC9ncnViLW1raW1hZ2UuYyAgICAgICAg IHwgMTEgKysrKysrKysrKysKPiAgdXRpbC9ncnViLW1raW1hZ2V4eC5jICAgICAgIHwgMzggKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+ICB1dGlsL21raW1hZ2UuYyAgICAg ICAgICAgICAgfCAgNiArKystLS0KPiAgNiBmaWxlcyBjaGFuZ2VkLCA3MCBpbnNlcnRpb25zKCsp LCAxMSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ncnViL3V0aWwvaW5z dGFsbC5oIGIvaW5jbHVkZS9ncnViL3V0aWwvaW5zdGFsbC5oCj4gaW5kZXggNWMwYTUyY2EyLi4z YWFiYzQyODUgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9ncnViL3V0aWwvaW5zdGFsbC5oCj4gKysr IGIvaW5jbHVkZS9ncnViL3V0aWwvaW5zdGFsbC5oCj4gQEAgLTY5LDYgKzY5LDggQEAKPiAgICAg ICAgTl8oImRpc2FibGUgc2hpbV9sb2NrIHZlcmlmaWVyIiksIDAgfSwJCQkJXAo+ICAgIHsgImRp c2FibGUtY2xpIiwgR1JVQl9JTlNUQUxMX09QVElPTlNfRElTQUJMRV9DTEksIDAsIDAsCQlcCj4g ICAgICBOXygiZGlzYWJsZWQgY29tbWFuZCBsaW5lIGludGVyZmFjZSBhY2Nlc3MiKSwgMCB9LAkJ CVwKPiArICB7ICJhcHBlbmRlZC1zaWduYXR1cmUtc2l6ZSIsIAo+IEdSVUJfSU5TVEFMTF9PUFRJ T05TX0FQUEVOREVEX1NJR05BVFVSRV9TSVpFLCAgXAo+ICsgICAgIlNJWkUiLCAwLCBOXygiQWRk IGEgbm90ZSBzZWdtZW50IHJlc2VydmluZyBTSVpFIGJ5dGVzIGZvciBhbgo+IGFwcGVuZGVkIHNp Z25hdHVyZSIpLCAxfSwgXAo+ICAgIHsgInZlcmJvc2UiLCAndicsIDAsIDAsCQkJCQkJXAo+ICAg ICAgTl8oInByaW50IHZlcmJvc2UgbWVzc2FnZXMuIiksIDEgfQo+IAo+IEBAIC0xMzIsNyArMTM0 LDggQEAgZW51bSBncnViX2luc3RhbGxfb3B0aW9ucyB7Cj4gICAgR1JVQl9JTlNUQUxMX09QVElP TlNfRFRCLAo+ICAgIEdSVUJfSU5TVEFMTF9PUFRJT05TX1NCQVQsCj4gICAgR1JVQl9JTlNUQUxM X09QVElPTlNfRElTQUJMRV9TSElNX0xPQ0ssCj4gLSAgR1JVQl9JTlNUQUxMX09QVElPTlNfRElT QUJMRV9DTEkKPiArICBHUlVCX0lOU1RBTExfT1BUSU9OU19ESVNBQkxFX0NMSSwKPiArICBHUlVC X0lOU1RBTExfT1BUSU9OU19BUFBFTkRFRF9TSUdOQVRVUkVfU0laRQo+ICB9Owo+IAo+ICBleHRl cm4gY2hhciAqZ3J1Yl9pbnN0YWxsX3NvdXJjZV9kaXJlY3Rvcnk7Cj4gQEAgLTE5Miw3ICsxOTUs NyBAQCBncnViX2luc3RhbGxfZ2VuZXJhdGVfaW1hZ2UgKGNvbnN0IGNoYXIgKmRpciwKPiBjb25z dCBjaGFyICpwcmVmaXgsCj4gIAkJCSAgICAgc2l6ZV90IG5wdWJrZXlzLAo+ICAJCQkgICAgIGNo YXIgKmNvbmZpZ19wYXRoLAo+ICAJCQkgICAgIGNvbnN0IHN0cnVjdCBncnViX2luc3RhbGxfaW1h Z2VfdGFyZ2V0X2Rlc2MgKmltYWdlX3RhcmdldCwKPiAtCQkJICAgICBpbnQgbm90ZSwKPiArCQkJ ICAgICBpbnQgbm90ZSwgc2l6ZV90IGFwcHNpZ19zaXplLAo+ICAJCQkgICAgIGdydWJfY29tcHJl c3Npb25fdCBjb21wLCBjb25zdCBjaGFyICpkdGJfZmlsZSwKPiAgCQkJICAgICBjb25zdCBjaGFy ICpzYmF0X3BhdGgsIGNvbnN0IGludCBkaXNhYmxlX3NoaW1fbG9jaywKPiAgCQkJICAgICBjb25z dCBpbnQgZGlzYWJsZV9jbGkpOwo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2dydWIvdXRpbC9ta2lt YWdlLmggYi9pbmNsdWRlL2dydWIvdXRpbC9ta2ltYWdlLmgKPiBpbmRleCA5ZDc0ZjgyYzUuLjBk NDAzODNlYiAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2dydWIvdXRpbC9ta2ltYWdlLmgKPiArKysg Yi9pbmNsdWRlL2dydWIvdXRpbC9ta2ltYWdlLmgKPiBAQCAtNTEsMTIgKzUxLDEyIEBAIGdydWJf bWtpbWFnZV9sb2FkX2ltYWdlNjQgKGNvbnN0IGNoYXIgKmtlcm5lbF9wYXRoLAo+ICAJCQkgICBj b25zdCBzdHJ1Y3QgZ3J1Yl9pbnN0YWxsX2ltYWdlX3RhcmdldF9kZXNjICppbWFnZV90YXJnZXQp Owo+ICB2b2lkCj4gIGdydWJfbWtpbWFnZV9nZW5lcmF0ZV9lbGYzMiAoY29uc3Qgc3RydWN0Cj4g Z3J1Yl9pbnN0YWxsX2ltYWdlX3RhcmdldF9kZXNjICppbWFnZV90YXJnZXQsCj4gLQkJCSAgICAg aW50IG5vdGUsIGNoYXIgKnNiYXQsIGNoYXIgKipjb3JlX2ltZywgc2l6ZV90ICpjb3JlX3NpemUs Cj4gKwkJCSAgICAgaW50IG5vdGUsIGNoYXIgKnNiYXQsIHNpemVfdCBhcHBzaWdfc2l6ZSwgY2hh ciAqKmNvcmVfaW1nLAo+IHNpemVfdCAqY29yZV9zaXplLAo+ICAJCQkgICAgIEVsZjMyX0FkZHIg dGFyZ2V0X2FkZHIsCj4gIAkJCSAgICAgc3RydWN0IGdydWJfbWtpbWFnZV9sYXlvdXQgKmxheW91 dCk7Cj4gIHZvaWQKPiAgZ3J1Yl9ta2ltYWdlX2dlbmVyYXRlX2VsZjY0IChjb25zdCBzdHJ1Y3QK PiBncnViX2luc3RhbGxfaW1hZ2VfdGFyZ2V0X2Rlc2MgKmltYWdlX3RhcmdldCwKPiAtCQkJICAg ICBpbnQgbm90ZSwgY2hhciAqc2JhdCwgY2hhciAqKmNvcmVfaW1nLCBzaXplX3QgKmNvcmVfc2l6 ZSwKPiArCQkJICAgICBpbnQgbm90ZSwgY2hhciAqc2JhdCwgc2l6ZV90IGFwcHNpZ19zaXplLCBj aGFyICoqY29yZV9pbWcsCj4gc2l6ZV90ICpjb3JlX3NpemUsCj4gIAkJCSAgICAgRWxmNjRfQWRk ciB0YXJnZXRfYWRkciwKPiAgCQkJICAgICBzdHJ1Y3QgZ3J1Yl9ta2ltYWdlX2xheW91dCAqbGF5 b3V0KTsKPiAKPiBkaWZmIC0tZ2l0IGEvdXRpbC9ncnViLWluc3RhbGwtY29tbW9uLmMgYi91dGls L2dydWItaW5zdGFsbC1jb21tb24uYwo+IGluZGV4IDIyYmNjYjZhMy4uMjJmMGU1NmNiIDEwMDY0 NAo+IC0tLSBhL3V0aWwvZ3J1Yi1pbnN0YWxsLWNvbW1vbi5jCj4gKysrIGIvdXRpbC9ncnViLWlu c3RhbGwtY29tbW9uLmMKPiBAQCAtNDY3LDEwICs0NjcsMTIgQEAgc3RhdGljIGNoYXIgKnNiYXQ7 Cj4gIHN0YXRpYyBpbnQgZGlzYWJsZV9zaGltX2xvY2s7Cj4gIHN0YXRpYyBncnViX2NvbXByZXNz aW9uX3QgY29tcHJlc3Npb247Cj4gIHN0YXRpYyBpbnQgZGlzYWJsZV9jbGk7Cj4gK3N0YXRpYyBz aXplX3QgYXBwc2lnX3NpemU7Cj4gCj4gIGludAo+ICBncnViX2luc3RhbGxfcGFyc2UgKGludCBr ZXksIGNoYXIgKmFyZykKPiAgewo+ICsgIGNvbnN0IGNoYXIgKmVuZDsKPiAgICBzd2l0Y2ggKGtl eSkKPiAgICAgIHsKPiAgICAgIGNhc2UgR1JVQl9JTlNUQUxMX09QVElPTlNfSU5TVEFMTF9DT1JF X0NPTVBSRVNTOgo+IEBAIC01NzEsNiArNTczLDEyIEBAIGdydWJfaW5zdGFsbF9wYXJzZSAoaW50 IGtleSwgY2hhciAqYXJnKQo+ICAgICAgICBncnViX3V0aWxfZXJyb3IgKF8oIlVucmVjb2duaXpl ZCBjb21wcmVzc2lvbiBgJXMnIiksIGFyZyk7Cj4gICAgICBjYXNlIEdSVUJfSU5TVEFMTF9PUFRJ T05TX0dSVUJfTUtJTUFHRToKPiAgICAgICAgcmV0dXJuIDE7Cj4gKyAgICBjYXNlIEdSVUJfSU5T VEFMTF9PUFRJT05TX0FQUEVOREVEX1NJR05BVFVSRV9TSVpFOgo+ICsgICAgICBncnViX2Vycm5v ID0gMDsKPiArICAgICAgYXBwc2lnX3NpemUgPSBncnViX3N0cnRvbCAoYXJnLCAmZW5kLCAxMCk7 Cj4gKyAgICAgIGlmIChncnViX2Vycm5vKQo+ICsgICAgICAgIHJldHVybiAwOwo+ICsgICAgICBy ZXR1cm4gMTsKPiAgICAgIGRlZmF1bHQ6Cj4gICAgICAgIHJldHVybiAwOwo+ICAgICAgfQo+IEBA IC02ODMsOSArNjkxLDEwIEBAIGdydWJfaW5zdGFsbF9tYWtlX2ltYWdlX3dyYXBfZmlsZSAoY29u c3QgY2hhcgo+ICpkaXIsIGNvbnN0IGNoYXIgKnByZWZpeCwKPiAgICAqcCA9ICdcMCc7Cj4gCj4g ICAgZ3J1Yl91dGlsX2luZm8gKCJncnViLW1raW1hZ2UgLS1kaXJlY3RvcnkgJyVzJyAtLXByZWZp eCAnJXMnIAo+IC0tb3V0cHV0ICclcyciCj4gLQkJICAiIC0tZm9ybWF0ICclcycgLS1jb21wcmVz c2lvbiAnJXMnJXMlcyVzJXNcbiIsCj4gKwkJICAiIC0tZm9ybWF0ICclcycgLS1jb21wcmVzc2lv biAnJXMnIgo+ICsJCSAgIiAtLWFwcGVuZGVkLXNpZ25hdHVyZS1zaXplICV6dSAlcyAlcyAlcyAl c1xuIiwKPiAgCQkgIGRpciwgcHJlZml4LCBvdXRuYW1lLAo+IC0JCSAgbWtpbWFnZV90YXJnZXQs IGNvbXBuYW1lc1tjb21wcmVzc2lvbl0sCj4gKwkJICBta2ltYWdlX3RhcmdldCwgY29tcG5hbWVz W2NvbXByZXNzaW9uXSwgYXBwc2lnX3NpemUsCj4gIAkJICBub3RlID8gIiAtLW5vdGUiIDogIiIs Cj4gIAkJICBkaXNhYmxlX3NoaW1fbG9jayA/ICIgLS1kaXNhYmxlLXNoaW0tbG9jayIgOiAiIiwK PiAgCQkgIGRpc2FibGVfY2xpID8gIiAtLWRpc2FibGUtY2xpIiA6ICIiLCBzKTsKPiBAQCAtNjk4 LDcgKzcwNyw3IEBAIGdydWJfaW5zdGFsbF9tYWtlX2ltYWdlX3dyYXBfZmlsZSAoY29uc3QgY2hh cgo+ICpkaXIsIGNvbnN0IGNoYXIgKnByZWZpeCwKPiAgICBncnViX2luc3RhbGxfZ2VuZXJhdGVf aW1hZ2UgKGRpciwgcHJlZml4LCBmcCwgb3V0bmFtZSwKPiAgCQkJICAgICAgIG1vZHVsZXMuZW50 cmllcywgbWVtZGlza19wYXRoLAo+ICAJCQkgICAgICAgcHVia2V5cywgbnB1YmtleXMsIGNvbmZp Z19wYXRoLCB0Z3QsCj4gLQkJCSAgICAgICBub3RlLCBjb21wcmVzc2lvbiwgZHRiLCBzYmF0LAo+ ICsJCQkgICAgICAgbm90ZSwgYXBwc2lnX3NpemUsIGNvbXByZXNzaW9uLCBkdGIsIHNiYXQsCj4g IAkJCSAgICAgICBkaXNhYmxlX3NoaW1fbG9jaywgZGlzYWJsZV9jbGkpOwo+ICAgIHdoaWxlIChk Yy0tKQo+ICAgICAgZ3J1Yl9pbnN0YWxsX3BvcF9tb2R1bGUgKCk7Cj4gZGlmZiAtLWdpdCBhL3V0 aWwvZ3J1Yi1ta2ltYWdlLmMgYi91dGlsL2dydWItbWtpbWFnZS5jCj4gaW5kZXggNTQ3ZjczMTBm Li42YzUwNjNhYzIgMTAwNjQ0Cj4gLS0tIGEvdXRpbC9ncnViLW1raW1hZ2UuYwo+ICsrKyBiL3V0 aWwvZ3J1Yi1ta2ltYWdlLmMKPiBAQCAtODQsNiArODQsNyBAQCBzdGF0aWMgc3RydWN0IGFyZ3Bf b3B0aW9uIG9wdGlvbnNbXSA9IHsKPiAgICB7InNiYXQiLCAncycsIE5fKCJGSUxFIiksIDAsIE5f KCJTQkFUIG1ldGFkYXRhIiksIDB9LAo+ICAgIHsiZGlzYWJsZS1zaGltLWxvY2siLCBHUlVCX0lO U1RBTExfT1BUSU9OU19ESVNBQkxFX1NISU1fTE9DSywgMCwgMCwKPiBOXygiZGlzYWJsZSBzaGlt X2xvY2sgdmVyaWZpZXIiKSwgMH0sCj4gICAgeyJkaXNhYmxlLWNsaSIsIEdSVUJfSU5TVEFMTF9P UFRJT05TX0RJU0FCTEVfQ0xJLCAwLCAwLCBOXygiZGlzYWJsZQo+IGNvbW1hbmQgbGluZSBpbnRl cmZhY2UgYWNjZXNzIiksIDB9LAo+ICsgIHsiYXBwZW5kZWQtc2lnbmF0dXJlLXNpemUiLCAnUycs IE5fKCJTSVpFIiksIDAsIE5fKCJBZGQgYSBub3RlCj4gc2VnbWVudCByZXNlcnZpbmcgU0laRSBi eXRlcyBmb3IgYW4gYXBwZW5kZWQgc2lnbmF0dXJlIiksIDB9LAo+ICAgIHsidmVyYm9zZSIsICAg ICAndicsIDAsICAgICAgMCwgTl8oInByaW50IHZlcmJvc2UgbWVzc2FnZXMuIiksIDB9LAo+ICAg IHsgMCwgMCwgMCwgMCwgMCwgMCB9Cj4gIH07Cj4gQEAgLTEzMCw2ICsxMzEsNyBAQCBzdHJ1Y3Qg YXJndW1lbnRzCj4gICAgaW50IG5vdGU7Cj4gICAgaW50IGRpc2FibGVfc2hpbV9sb2NrOwo+ICAg IGludCBkaXNhYmxlX2NsaTsKPiArICBzaXplX3QgYXBwc2lnX3NpemU7Cj4gICAgY29uc3Qgc3Ry dWN0IGdydWJfaW5zdGFsbF9pbWFnZV90YXJnZXRfZGVzYyAqaW1hZ2VfdGFyZ2V0Owo+ICAgIGdy dWJfY29tcHJlc3Npb25fdCBjb21wOwo+ICB9Owo+IEBAIC0xNDAsNiArMTQyLDcgQEAgYXJncF9w YXJzZXIgKGludCBrZXksIGNoYXIgKmFyZywgc3RydWN0IGFyZ3Bfc3RhdGUgCj4gKnN0YXRlKQo+ ICAgIC8qIEdldCB0aGUgaW5wdXQgYXJndW1lbnQgZnJvbSBhcmdwX3BhcnNlLCB3aGljaCB3ZQo+ ICAgICAgIGtub3cgaXMgYSBwb2ludGVyIHRvIG91ciBhcmd1bWVudHMgc3RydWN0dXJlLiAqLwo+ ICAgIHN0cnVjdCBhcmd1bWVudHMgKmFyZ3VtZW50cyA9IHN0YXRlLT5pbnB1dDsKPiArICBjb25z dCBjaGFyKiBlbmQ7Cj4gCj4gICAgc3dpdGNoIChrZXkpCj4gICAgICB7Cj4gQEAgLTE3Miw2ICsx NzUsMTMgQEAgYXJncF9wYXJzZXIgKGludCBrZXksIGNoYXIgKmFyZywgc3RydWN0IGFyZ3Bfc3Rh dGUgCj4gKnN0YXRlKQo+ICAgICAgICBhcmd1bWVudHMtPm5vdGUgPSAxOwo+ICAgICAgICBicmVh azsKPiAKPiArICAgIGNhc2UgJ1MnOgo+ICsgICAgICBncnViX2Vycm5vID0gMDsKPiArICAgICAg YXJndW1lbnRzLT5hcHBzaWdfc2l6ZSA9IGdydWJfc3RydG9sIChhcmcsICZlbmQsIDEwKTsKPiAr ICAgICAgaWYgKGdydWJfZXJybm8pCj4gKyAgICAgICAgcmV0dXJuIDA7Cj4gKyAgICAgIGJyZWFr Owo+ICsKPiAgICAgIGNhc2UgJ20nOgo+ICAgICAgICBpZiAoYXJndW1lbnRzLT5tZW1kaXNrKQo+ ICAJZnJlZSAoYXJndW1lbnRzLT5tZW1kaXNrKTsKPiBAQCAtMzMwLDYgKzM0MCw3IEBAIG1haW4g KGludCBhcmdjLCBjaGFyICphcmd2W10pCj4gIAkJCSAgICAgICBhcmd1bWVudHMubWVtZGlzaywg YXJndW1lbnRzLnB1YmtleXMsCj4gIAkJCSAgICAgICBhcmd1bWVudHMubnB1YmtleXMsIGFyZ3Vt ZW50cy5jb25maWcsCj4gIAkJCSAgICAgICBhcmd1bWVudHMuaW1hZ2VfdGFyZ2V0LCBhcmd1bWVu dHMubm90ZSwKPiArCQkJICAgICAgIGFyZ3VtZW50cy5hcHBzaWdfc2l6ZSwKPiAgCQkJICAgICAg IGFyZ3VtZW50cy5jb21wLCBhcmd1bWVudHMuZHRiLAo+ICAJCQkgICAgICAgYXJndW1lbnRzLnNi YXQsIGFyZ3VtZW50cy5kaXNhYmxlX3NoaW1fbG9jaywKPiAgCQkJICAgICAgIGFyZ3VtZW50cy5k aXNhYmxlX2NsaSk7Cj4gZGlmZiAtLWdpdCBhL3V0aWwvZ3J1Yi1ta2ltYWdleHguYyBiL3V0aWwv Z3J1Yi1ta2ltYWdleHguYwo+IGluZGV4IDQ0ODg2MmIyZS4uNmZlMzQ4ZTViIDEwMDY0NAo+IC0t LSBhL3V0aWwvZ3J1Yi1ta2ltYWdleHguYwo+ICsrKyBiL3V0aWwvZ3J1Yi1ta2ltYWdleHguYwo+ IEBAIC0xMTUsNiArMTE1LDE0IEBAIHN0cnVjdCBncnViX3NiYXRfbm90ZSB7Cj4gICAgY2hhciBu YW1lW0FMSUdOX1VQKHNpemVvZihHUlVCX1NCQVRfTk9URV9OQU1FKSwgNCldOwo+ICB9Owo+IAo+ ICsjZGVmaW5lIEdSVUJfQVBQRU5ERURfU0lHTkFUVVJFX05PVEVfTkFNRSAiQXBwZW5kZWQtU2ln bmF0dXJlIgo+ICsjZGVmaW5lIEdSVUJfQVBQRU5ERURfU0lHTkFUVVJFX05PVEVfVFlQRSAweDQx NTM2OTY3IC8qICJBU2lnIiAqLwo+ICtzdHJ1Y3QgZ3J1Yl9hcHBlbmRlZF9zaWduYXR1cmVfbm90 ZQo+ICt7Cj4gKyAgRWxmMzJfTmhkciBoZWFkZXI7Cj4gKyAgY2hhciBuYW1lW0FMSUdOX1VQIChz aXplb2YgKEdSVUJfQVBQRU5ERURfU0lHTkFUVVJFX05PVEVfTkFNRSksIDQpXTsKPiArfTsKPiAr Cj4gIHN0YXRpYyBpbnQKPiAgaXNfcmVsb2NhdGFibGUgKGNvbnN0IHN0cnVjdCBncnViX2luc3Rh bGxfaW1hZ2VfdGFyZ2V0X2Rlc2MgCj4gKmltYWdlX3RhcmdldCkKPiAgewo+IEBAIC0yMTYsNyAr MjI0LDcgQEAgZ3J1Yl9hcm1fcmVsb2NfanVtcDI0IChncnViX3VpbnQzMl90ICp0YXJnZXQsCj4g RWxmMzJfQWRkciBzeW1fYWRkcikKPiAKPiAgdm9pZAo+ICBTVUZGSVggKGdydWJfbWtpbWFnZV9n ZW5lcmF0ZV9lbGYpIChjb25zdCBzdHJ1Y3QKPiBncnViX2luc3RhbGxfaW1hZ2VfdGFyZ2V0X2Rl c2MgKmltYWdlX3RhcmdldCwKPiAtCQkJCSAgICBpbnQgbm90ZSwgY2hhciAqc2JhdCwgY2hhciAq KmNvcmVfaW1nLCBzaXplX3QgKmNvcmVfc2l6ZSwKPiArCQkJCSAgICBpbnQgbm90ZSwgY2hhciAq c2JhdCwgc2l6ZV90IGFwcHNpZ19zaXplLCBjaGFyICoqY29yZV9pbWcsCj4gc2l6ZV90ICpjb3Jl X3NpemUsCj4gIAkJCQkgICAgRWxmX0FkZHIgdGFyZ2V0X2FkZHIsCj4gIAkJCQkgICAgc3RydWN0 IGdydWJfbWtpbWFnZV9sYXlvdXQgKmxheW91dCkKPiAgewo+IEBAIC0yMzcsNiArMjQ1LDEyIEBA IFNVRkZJWCAoZ3J1Yl9ta2ltYWdlX2dlbmVyYXRlX2VsZikgKGNvbnN0IHN0cnVjdAo+IGdydWJf aW5zdGFsbF9pbWFnZV90YXJnZXRfZGVzYwo+ICAgICAgICBmb290ZXJfc2l6ZSArPSBBTElHTl9V UCAoc2l6ZW9mIChzdHJ1Y3QgZ3J1Yl9zYmF0X25vdGUpICsKPiBsYXlvdXQtPnNiYXRfc2l6ZSwg NCk7Cj4gICAgICB9Cj4gCj4gKyAgaWYgKGFwcHNpZ19zaXplKQo+ICsgICAgewo+ICsgICAgICBw aG51bSsrOwo+ICsgICAgICBmb290ZXJfc2l6ZSArPSBBTElHTl9VUCAoc2l6ZW9mIChzdHJ1Y3QK PiBncnViX2FwcGVuZGVkX3NpZ25hdHVyZV9ub3RlKSArIGFwcHNpZ19zaXplLCA0KTsKPiArICAg IH0KPiArCj4gICAgaWYgKGltYWdlX3RhcmdldC0+aWQgIT0gSU1BR0VfTE9PTkdTT05fRUxGKQo+ ICAgICAgcGhudW0gKz0gMjsKPiAKPiBAQCAtNTI3LDYgKzU0MSwyOCBAQCBTVUZGSVggKGdydWJf bWtpbWFnZV9nZW5lcmF0ZV9lbGYpIChjb25zdCBzdHJ1Y3QKPiBncnViX2luc3RhbGxfaW1hZ2Vf dGFyZ2V0X2Rlc2MKPiAgICAgICAgcGhkci0+cF9maWxlc3ogPSBncnViX2hvc3RfdG9fdGFyZ2V0 MzIgKG5vdGVfc2l6ZSk7Cj4gICAgICAgIHBoZHItPnBfbWVtc3ogPSAwOwo+ICAgICAgICBwaGRy LT5wX29mZnNldCA9IGdydWJfaG9zdF90b190YXJnZXQzMiAoaGVhZGVyX3NpemUgKwo+IHByb2dy YW1fc2l6ZSArIGZvb3Rlcl9vZmZzZXQpOwo+ICsgICAgICBmb290ZXIgKz0gbm90ZV9zaXplOwo+ ICsgICAgICBmb290ZXJfb2Zmc2V0ICs9IG5vdGVfc2l6ZTsKPiArICAgIH0KPiArCj4gKyAgaWYg KGFwcHNpZ19zaXplKQo+ICsgICAgewo+ICsgICAgICBpbnQgbm90ZV9zaXplID0gQUxJR05fVVAg KHNpemVvZiAoc3RydWN0Cj4gZ3J1Yl9hcHBlbmRlZF9zaWduYXR1cmVfbm90ZSkgKyBhcHBzaWdf c2l6ZSwgNCk7Cj4gKyAgICAgIHN0cnVjdCBncnViX2FwcGVuZGVkX3NpZ25hdHVyZV9ub3RlICpu b3RlX3B0ciA9IChzdHJ1Y3QKPiBncnViX2FwcGVuZGVkX3NpZ25hdHVyZV9ub3RlICopIGZvb3Rl cjsKPiArICAgICAgbm90ZV9wdHItPmhlYWRlci5uX25hbWVzeiA9IGdydWJfaG9zdF90b190YXJn ZXQzMiAoc2l6ZW9mCj4gKEdSVUJfQVBQRU5ERURfU0lHTkFUVVJFX05PVEVfTkFNRSkpOwo+ICsg ICAgICAvKiBuZWVkcyB0byBzaXQgYXQgdGhlIGVuZCwgc28gd2Ugcm91bmQgdGhpcyB1cCBhbmQg c2lnbiBzb21lCj4gemVybyBwYWRkaW5nICovCj4gKyAgICAgIG5vdGVfcHRyLT5oZWFkZXIubl9k ZXNjc3ogPSBncnViX2hvc3RfdG9fdGFyZ2V0MzIgKEFMSUdOX1VQCj4gKGFwcHNpZ19zaXplLCA0 KSk7Cj4gKyAgICAgIG5vdGVfcHRyLT5oZWFkZXIubl90eXBlID0gZ3J1Yl9ob3N0X3RvX3Rhcmdl dDMyCj4gKEdSVUJfQVBQRU5ERURfU0lHTkFUVVJFX05PVEVfVFlQRSk7Cj4gKyAgICAgIHN0cmNw eSAobm90ZV9wdHItPm5hbWUsIEdSVUJfQVBQRU5ERURfU0lHTkFUVVJFX05PVEVfTkFNRSk7Cj4g KyAgICAgIHBoZHIrKzsKPiArICAgICAgcGhkci0+cF90eXBlID0gZ3J1Yl9ob3N0X3RvX3Rhcmdl dDMyIChQVF9OT1RFKTsKPiArICAgICAgcGhkci0+cF9mbGFncyA9IGdydWJfaG9zdF90b190YXJn ZXQzMiAoUEZfUik7Cj4gKyAgICAgIHBoZHItPnBfYWxpZ24gPSBncnViX2hvc3RfdG9fdGFyZ2V0 MzIgCj4gKGltYWdlX3RhcmdldC0+dm9pZHBfc2l6ZW9mKTsKPiArICAgICAgcGhkci0+cF92YWRk ciA9IDA7Cj4gKyAgICAgIHBoZHItPnBfcGFkZHIgPSAwOwo+ICsgICAgICBwaGRyLT5wX2ZpbGVz eiA9IGdydWJfaG9zdF90b190YXJnZXQzMiAobm90ZV9zaXplKTsKPiArICAgICAgcGhkci0+cF9t ZW1zeiA9IDA7Cj4gKyAgICAgIHBoZHItPnBfb2Zmc2V0ID0gZ3J1Yl9ob3N0X3RvX3RhcmdldDMy IChoZWFkZXJfc2l6ZSArCj4gcHJvZ3JhbV9zaXplICsgZm9vdGVyX29mZnNldCk7Cj4gICAgICB9 Cj4gCj4gICAgewo+IGRpZmYgLS1naXQgYS91dGlsL21raW1hZ2UuYyBiL3V0aWwvbWtpbWFnZS5j Cj4gaW5kZXggYjQ2ZGYyOTA5Li5mNWM1OWY1NjMgMTAwNjQ0Cj4gLS0tIGEvdXRpbC9ta2ltYWdl LmMKPiArKysgYi91dGlsL21raW1hZ2UuYwo+IEBAIC04ODUsNyArODg1LDcgQEAgZ3J1Yl9pbnN0 YWxsX2dlbmVyYXRlX2ltYWdlIChjb25zdCBjaGFyICpkaXIsCj4gY29uc3QgY2hhciAqcHJlZml4 LAo+ICAJCQkgICAgIGNoYXIgKm1lbWRpc2tfcGF0aCwgY2hhciAqKnB1YmtleV9wYXRocywKPiAg CQkJICAgICBzaXplX3QgbnB1YmtleXMsIGNoYXIgKmNvbmZpZ19wYXRoLAo+ICAJCQkgICAgIGNv bnN0IHN0cnVjdCBncnViX2luc3RhbGxfaW1hZ2VfdGFyZ2V0X2Rlc2MgKmltYWdlX3RhcmdldCwK PiAtCQkJICAgICBpbnQgbm90ZSwgZ3J1Yl9jb21wcmVzc2lvbl90IGNvbXAsIGNvbnN0IGNoYXIg KmR0Yl9wYXRoLAo+ICsJCQkgICAgIGludCBub3RlLCBzaXplX3QgYXBwc2lnX3NpemUsIGdydWJf Y29tcHJlc3Npb25fdCBjb21wLCBjb25zdAo+IGNoYXIgKmR0Yl9wYXRoLAo+ICAJCQkgICAgIGNv bnN0IGNoYXIgKnNiYXRfcGF0aCwgaW50IGRpc2FibGVfc2hpbV9sb2NrLAo+ICAJCQkgICAgIGlu dCBkaXNhYmxlX2NsaSkKPiAgewo+IEBAIC0xODMzLDEwICsxODMzLDEwIEBAIGdydWJfaW5zdGFs bF9nZW5lcmF0ZV9pbWFnZSAoY29uc3QgY2hhciAqZGlyLAo+IGNvbnN0IGNoYXIgKnByZWZpeCwK PiAgCWVsc2UKPiAgCSAgdGFyZ2V0X2FkZHIgPSBpbWFnZV90YXJnZXQtPmxpbmtfYWRkcjsKPiAg CWlmIChpbWFnZV90YXJnZXQtPnZvaWRwX3NpemVvZiA9PSA0KQo+IC0JICBncnViX21raW1hZ2Vf Z2VuZXJhdGVfZWxmMzIgKGltYWdlX3RhcmdldCwgbm90ZSwgc2JhdCwgJmNvcmVfaW1nLAo+ICZj b3JlX3NpemUsCj4gKwkgIGdydWJfbWtpbWFnZV9nZW5lcmF0ZV9lbGYzMiAoaW1hZ2VfdGFyZ2V0 LCBub3RlLCBzYmF0LAo+IGFwcHNpZ19zaXplLCAmY29yZV9pbWcsICZjb3JlX3NpemUsCj4gIAkJ CQkgICAgICAgdGFyZ2V0X2FkZHIsICZsYXlvdXQpOwo+ICAJZWxzZQo+IC0JICBncnViX21raW1h Z2VfZ2VuZXJhdGVfZWxmNjQgKGltYWdlX3RhcmdldCwgbm90ZSwgc2JhdCwgJmNvcmVfaW1nLAo+ ICZjb3JlX3NpemUsCj4gKwkgIGdydWJfbWtpbWFnZV9nZW5lcmF0ZV9lbGY2NCAoaW1hZ2VfdGFy Z2V0LCBub3RlLCBzYmF0LAo+IGFwcHNpZ19zaXplLCAmY29yZV9pbWcsICZjb3JlX3NpemUsCj4g IAkJCQkgICAgICAgdGFyZ2V0X2FkZHIsICZsYXlvdXQpOwo+ICAgICAgICB9Cj4gICAgICAgIGJy ZWFrOwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KR3J1 Yi1kZXZlbCBtYWlsaW5nIGxpc3QKR3J1Yi1kZXZlbEBnbnUub3JnCmh0dHBzOi8vbGlzdHMuZ251 Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2dydWItZGV2ZWwK