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 D46F5CAC5BB for ; Wed, 1 Oct 2025 09:21:26 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v3t0i-0003gO-J5; Wed, 01 Oct 2025 05:20:33 -0400 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 1v3sqr-00070B-QM for grub-devel@gnu.org; Wed, 01 Oct 2025 05:10:21 -0400 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 1v3sqc-0004rD-QT for grub-devel@gnu.org; Wed, 01 Oct 2025 05:10:21 -0400 Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 58ULvCbI010129; Wed, 1 Oct 2025 09:09:55 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=SaokE5 Bfp8holGU255TUptAhV5xSnyADANeyPQt0yJE=; b=lHGt818rEuca7/gy0emAm2 kpfrQv3ewMwurqfWYFuGpLA4Mm8waKU29qF8DDByd+yF7YrCGMhzRSPUGa2Qd6b5 eQKwUcrhx1LH4NgptML2sz6wX9xtUXCHkOksNXwVawqmDQyMR+gSX2iFLQ/wdQck 8HEcxkRjEwyZ3WtOTVNRB6kqpaVJdMXk+zfFlHf/5oYmvvzW5T2nYTSW8Dd1gUoU cjVpWQNwr5K35zsjf2XYHotESsTEeJDKMpYGI00o1D9hZnuaIBWWyWUppz7Bkasq 76r5Byxn5HkDhk5HyuvGSxGdEILtaV1UZdAqX+PyhcADk+Xkk2kkfJgUUy6UceqQ == Received: from ppma11.dal12v.mail.ibm.com (db.9e.1632.ip4.static.sl-reverse.com [50.22.158.219]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 49e7e7edqs-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 01 Oct 2025 09:09:54 +0000 (GMT) Received: from pps.filterd (ppma11.dal12v.mail.ibm.com [127.0.0.1]) by ppma11.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 5915qMWB024151; Wed, 1 Oct 2025 09:09:54 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma11.dal12v.mail.ibm.com (PPS) with ESMTPS id 49evy17n1k-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 01 Oct 2025 09:09:53 +0000 Received: from smtpav02.fra02v.mail.ibm.com (smtpav02.fra02v.mail.ibm.com [10.20.54.101]) by smtprelay03.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 59199oUm51708370 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 1 Oct 2025 09:09:50 GMT Received: from smtpav02.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 3B4F42004B; Wed, 1 Oct 2025 09:09:50 +0000 (GMT) Received: from smtpav02.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 992D920040; Wed, 1 Oct 2025 09:09:47 +0000 (GMT) Received: from [9.124.210.197] (unknown [9.124.210.197]) by smtpav02.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 1 Oct 2025 09:09:47 +0000 (GMT) Message-ID: <4f32b645-6497-4e22-a46c-c7bf540bc144@linux.ibm.com> Date: Wed, 1 Oct 2025 14:39:46 +0530 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v13 16/20] appended signatures: GRUB commands to manage the hashes To: Sudhakar Kuppusamy , grub-devel@gnu.org Cc: dja@axtens.net, jan.setjeeilers@oracle.com, julian.klode@canonical.com, mate.kukri@canonical.com, pjones@redhat.com, msuchanek@suse.com, mlewando@redhat.com, stefanb@linux.ibm.com, avnish@linux.ibm.com, nayna@linux.ibm.com, ssrish@linux.ibm.com, Daniel Kiper References: <20250930114018.78215-1-sudhakar@linux.ibm.com> <20250930114018.78215-17-sudhakar@linux.ibm.com> Content-Language: en-US From: Sridhar Markonda In-Reply-To: <20250930114018.78215-17-sudhakar@linux.ibm.com> X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: Zz0wJCv240xlFj--lyuUleC3ASAOHTQH X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTI3MDAyMCBTYWx0ZWRfX2yGk1CbtRUYg VgNu5QdUMStyBEvGeDL2CD507DkEcSa0g7ikWr2boiNAIr3+VtjUZX4ok/iAUpbbNi/7nfv5pwt uqeCfmGa701fsQC+CRc6/YPYJQ7odqW8qhgEMi63SY+Fs0cV1Fa2CKqk0cvBOli+oMtfmydSMG9 QUfUC4SZQHdrPgbE9Txsv3KRs5KbIrthIO6UugW+xCGiA3lUORYVKJid2Ai5LpcHzVHL9cjCeYA pRO0WoJ5YXaer8QemwwdBY70LEt2Z6XRItuDl2cnjzF78/jainNUCCH6Wp7NkhlCwmCtAzTm3n0 WaYi5dcfiAHyY1mvlrWoqf5wLWqRMuAkwOAbqW3hkgvWXaQnEtUB8PYIo7TKqbpSO+Bo7/u1n7n PKJxO48YMwMjxBjkH7z6COulyR8qag== X-Proofpoint-GUID: Zz0wJCv240xlFj--lyuUleC3ASAOHTQH X-Authority-Analysis: v=2.4 cv=Jvj8bc4C c=1 sm=1 tr=0 ts=68dcefe3 cx=c_pps a=aDMHemPKRhS1OARIsFnwRA==:117 a=aDMHemPKRhS1OARIsFnwRA==:17 a=IkcTkHD0fZMA:10 a=x6icFKpwvdMA:10 a=VnNF1IyMAAAA:8 a=yPCof4ZbAAAA:8 a=kQCRs1PDcBBnkPdgDDAA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=cPQSjfK2_nFv0Q5t_7PE:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-01_02,2025-09-29_04,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 malwarescore=0 priorityscore=1501 impostorscore=0 suspectscore=0 phishscore=0 bulkscore=0 clxscore=1015 spamscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2509150000 definitions=main-2509270020 Received-SPF: pass client-ip=148.163.156.1; envelope-from=sridharm@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_H4=0.001, RCVD_IN_MSPIKE_WL=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 Ck9uIDMwLzA5LzI1IDU6MTAgcG0sIFN1ZGhha2FyIEt1cHB1c2FteSB3cm90ZToKPiBJbnRyb2R1 Y2luZyB0aGUgZm9sbG93aW5nIEdSVUIgY29tbWFuZHMgdG8gbWFuYWdlIGNlcnRpZmljYXRlL2Jp bmFyeQo+IGhhc2hlcy4KPgo+ICAgIDEuIGFwcGVuZF9saXN0X2RieDoKPiAgICAgICAgU2hvdyB0 aGUgbGlzdCBvZiBkaXN0cnVzdGVkIGNlcnRpZmljYXRlcyBhbmQgYmluYXJ5L2NlcnRpZmljYXRl Cj4gICAgICAgIGhhc2hlcyBmcm9tIHRoZSBkYnggbGlzdC4KPiAgICAyLiBhcHBlbmRfYWRkX2Ri X2hhc2g6Cj4gICAgICAgIEFkZCB0aGUgdHJ1c3RlZCBiaW5hcnkgaGFzaCB0byB0aGUgZGIgbGlz dC4KPiAgICAzLiBhcHBlbmRfYWRkX2RieF9oYXNoOgo+ICAgICAgICBBZGQgdGhlIGRpc3RydXN0 ZWQgY2VydGlmaWNhdGUvYmluYXJ5IGhhc2ggdG8gdGhlIGRieCBsaXN0Lgo+Cj4gTm90ZSB0aGF0 IGlmIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gKGNoZWNrX2FwcGVuZGVkX3NpZ25hdHVyZXMpIGlz IHNldCB0byB5ZXMsCj4gdGhlIGFwcGVuZF9hZGRfZGJfaGFzaCBhbmQgYXBwZW5kX2FkZF9kYnhf aGFzaCBjb21tYW5kcyBvbmx5IGFjY2VwdCB0aGUgZmlsZQo+IOKAmGhhc2hfZmlsZeKAmSB0aGF0 IGlzIHNpZ25lZCB3aXRoIGFuIGFwcGVuZGVkIHNpZ25hdHVyZS4KPgo+IFNpZ25lZC1vZmYtYnk6 IFN1ZGhha2FyIEt1cHB1c2FteSA8c3VkaGFrYXJAbGludXguaWJtLmNvbT4KPiBSZXZpZXdlZC1i eTogRGFuaWVsIEtpcGVyIDxkYW5pZWwua2lwZXJAb3JhY2xlLmNvbT4KPiAtLS0KPiAgIGdydWIt Y29yZS9jb21tYW5kcy9hcHBlbmRlZHNpZy9hcHBlbmRlZHNpZy5jIHwgMjgxICsrKysrKysrKysr KysrKysrKysKPiAgIGluY2x1ZGUvZ3J1Yi9maWxlLmggICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAyICsKPiAgIDIgZmlsZXMgY2hhbmdlZCwgMjgzIGluc2VydGlvbnMoKykKPgo+IGRpZmYg LS1naXQgYS9ncnViLWNvcmUvY29tbWFuZHMvYXBwZW5kZWRzaWcvYXBwZW5kZWRzaWcuYyBiL2dy dWItY29yZS9jb21tYW5kcy9hcHBlbmRlZHNpZy9hcHBlbmRlZHNpZy5jCj4gaW5kZXggZDA0YWFm MWUyLi43ZjQ2NzYwMjIgMTAwNjQ0Cj4gLS0tIGEvZ3J1Yi1jb3JlL2NvbW1hbmRzL2FwcGVuZGVk c2lnL2FwcGVuZGVkc2lnLmMKPiArKysgYi9ncnViLWNvcmUvY29tbWFuZHMvYXBwZW5kZWRzaWcv YXBwZW5kZWRzaWcuYwo+IEBAIC01Miw2ICs1Miw5IEBAIEdSVUJfTU9EX0xJQ0VOU0UgKCJHUEx2 MysiKTsKPiAgICNkZWZpbmUgU0hBMzg0X0hBU0hfU0laRSAgIDQ4Cj4gICAjZGVmaW5lIFNIQTUx Ml9IQVNIX1NJWkUgICA2NAo+ICAgCj4gKyNkZWZpbmUgT1BUSU9OX0JJTkFSWV9IQVNIIDAKPiAr I2RlZmluZSBPUFRJT05fQ0VSVF9IQVNIICAgMQo+ICsKPiAgIC8qCj4gICAgKiBUaGlzIHN0cnVj dHVyZSBpcyBleHRyYWN0ZWQgZnJvbSBzY3JpcHRzL3NpZ24tZmlsZS5jIGluIHRoZSBsaW51eCBr ZXJuZWwKPiAgICAqIHNvdXJjZS4gSXQgd2FzIGxpY2Vuc2VkIGFzIExHUEx2Mi4xKywgd2hpY2gg aXMgR1BMdjMrIGNvbXBhdGlibGUuCj4gQEAgLTEyNiw2ICsxMjksMTMgQEAgc3RhdGljIGdydWJf cGtzX3QgKnBrc19rZXlzdG9yZTsKPiAgIC8qIEFwcGVuZGVkIHNpZ25hdHVyZSBzaXplLiAqLwo+ ICAgc3RhdGljIGdydWJfc2l6ZV90IGFwcGVuZF9zaWdfbGVuID0gMDsKPiAgIAo+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGdydWJfYXJnX29wdGlvbiBvcHRpb25zW10gPQo+ICt7Cj4gKyAgeyJiaW5h cnktaGFzaCIsICdiJywgMCwgTl8oImhhc2ggZmlsZSBvZiB0aGUgYmluYXJ5LiIpLCAwLCBBUkdf VFlQRV9QQVRITkFNRX0sCj4gKyAgeyJjZXJ0LWhhc2giLCAnYycsIDEsIE5fKCJoYXNoIGZpbGUg b2YgdGhlIGNlcnRpZmljYXRlLiIpLCAwLCBBUkdfVFlQRV9QQVRITkFNRX0sCj4gKyAgezAsIDAs IDAsIDAsIDAsIDB9Cj4gK307Cj4gKwo+ICAgc3RhdGljIGdydWJfc3NpemVfdAo+ICAgcHNldWRv X3JlYWQgKHN0cnVjdCBncnViX2ZpbGUgKmZpbGUsIGNoYXIgKmJ1ZiwgZ3J1Yl9zaXplX3QgbGVu KQo+ICAgewo+IEBAIC01NDYsNiArNTU2LDY5IEBAIHJlbW92ZV9jZXJ0X2Zyb21fZGIgKGNvbnN0 IGdydWJfdWludDhfdCAqZGF0YSwgY29uc3QgZ3J1Yl9zaXplX3QgZGF0YV9zaXplKQo+ICAgICBy ZXR1cm4gcmM7Cj4gICB9Cj4gICAKPiArc3RhdGljIGJvb2wKPiArY2VydF9maW5nZXJwcmludF9t YXRjaCAoY29uc3QgZ3J1Yl91aW50OF90ICpoYXNoX2RhdGEsIGNvbnN0IGdydWJfc2l6ZV90IGhh c2hfZGF0YV9zaXplLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncnViX3g1MDlf Y2VydF90ICpjZXJ0KQo+ICt7Cj4gKyAgZ3J1Yl9pbnQzMl90IHR5cGU7Cj4gKwo+ICsgIGlmICho YXNoX2RhdGFfc2l6ZSA9PSBTSEEyNTZfSEFTSF9TSVpFKQo+ICsgICAgdHlwZSA9IEdSVUJfRklO R0VSUFJJTlRfU0hBMjU2Owo+ICsgIGVsc2UgaWYgKGhhc2hfZGF0YV9zaXplID09IFNIQTM4NF9I QVNIX1NJWkUpCj4gKyAgICB0eXBlID0gR1JVQl9GSU5HRVJQUklOVF9TSEEzODQ7Cj4gKyAgZWxz ZSBpZiAoaGFzaF9kYXRhX3NpemUgPT0gU0hBNTEyX0hBU0hfU0laRSkKPiArICAgIHR5cGUgPSBH UlVCX0ZJTkdFUlBSSU5UX1NIQTUxMjsKPiArICBlbHNlCj4gKyAgICB7Cj4gKyAgICAgIGdydWJf ZHByaW50ZiAoImFwcGVuZGVkc2lnIiwgInVuc3VwcG9ydGVkIGZpbmdlcnByaW50IGhhc2ggdHlw ZSAiCj4gKyAgICAgICAgICAgICAgICAgICAgIiglIiBQUkl1R1JVQl9TSVpFICIpIFxuIiwgaGFz aF9kYXRhX3NpemUpOwo+ICsgICAgICByZXR1cm4gZmFsc2U7Cj4gKyAgICB9Cj4gKwo+ICsgIGlm IChncnViX21lbWNtcCAoY2VydC0+ZmluZ2VycHJpbnRbdHlwZV0sIGhhc2hfZGF0YSwgaGFzaF9k YXRhX3NpemUpID09IDApCj4gKyAgICByZXR1cm4gdHJ1ZTsKPiArCj4gKyAgcmV0dXJuIGZhbHNl Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZAo+ICtyZW1vdmVfaGFzaF9mcm9tX2RiIChjb25zdCBn cnViX3VpbnQ4X3QgKmhhc2hfZGF0YSwgY29uc3QgZ3J1Yl9zaXplX3QgaGFzaF9kYXRhX3NpemUs Cj4gKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wgYmluX2hhc2gpCj4gK3sKPiArICBn cnViX3VpbnQzMl90IGk7Cj4gKyAgZ3J1Yl94NTA5X2NlcnRfdCAqY2VydDsKPiArCj4gKyAgaWYg KGJpbl9oYXNoID09IHRydWUpCj4gKyAgICB7Cj4gKyAgICAgIGZvciAoaSA9IDA7IGkgPCBkYi5o YXNoX2VudHJpZXM7IGkrKykKPiArICAgICAgICB7Cj4gKyAgICAgICAgICBpZiAoZGIuaGFzaGVz W2ldID09IE5VTEwpCj4gKyAgICAgICAgICAgIGNvbnRpbnVlOwo+ICsKPiArICAgICAgICAgIGlm IChncnViX21lbWNtcCAoZGIuaGFzaGVzW2ldLCBoYXNoX2RhdGEsIGhhc2hfZGF0YV9zaXplKSA9 PSAwKQo+ICsgICAgICAgICAgICB7Cj4gKyAgICAgICAgICAgICAgZ3J1Yl9kcHJpbnRmICgiYXBw ZW5kZWRzaWciLCAicmVtb3ZlZCBkaXN0cnVzdGVkIGhhc2ggJTAyeCUwMnglMDJ4JTAyeC4uIGZy b20gdGhlIGRiIGxpc3RcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYi5oYXNo ZXNbaV1bMF0sIGRiLmhhc2hlc1tpXVsxXSwgZGIuaGFzaGVzW2ldWzJdLCBkYi5oYXNoZXNbaV1b M10pOwo+ICsgICAgICAgICAgICAgIGdydWJfZnJlZSAoZGIuaGFzaGVzW2ldKTsKPiArICAgICAg ICAgICAgICBkYi5oYXNoZXNbaV0gPSBOVUxMOwo+ICsgICAgICAgICAgICAgIGRiLmhhc2hfc2l6 ZXNbaV0gPSAwOwo+ICsgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgICAgICB9Cj4gKyAg ICAgICAgfQo+ICsgICAgfQo+ICsgIGVsc2UKPiArICAgIHsKPiArICAgICAgZm9yIChjZXJ0ID0g ZGIuY2VydHM7IGNlcnQgIT0gTlVMTDsgY2VydCA9IGNlcnQtPm5leHQpCj4gKyAgICAgICAgewo+ ICsgICAgICAgICAgaWYgKGNlcnRfZmluZ2VycHJpbnRfbWF0Y2ggKGhhc2hfZGF0YSwgaGFzaF9k YXRhX3NpemUsIGNlcnQpID09IHRydWUpCj4gKyAgICAgICAgICAgIHsKPiArICAgICAgICAgICAg ICBfcmVtb3ZlX2NlcnRfZnJvbV9kYiAoY2VydCk7Cj4gKyAgICAgICAgICAgICAgYnJlYWs7Cj4g KyAgICAgICAgICAgIH0KPiArICAgICAgICB9Cj4gKyAgICB9Cj4gK30KPiArCj4gICBzdGF0aWMg Z3J1Yl9lcnJfdAo+ICAgZmlsZV9yZWFkX3dob2xlIChncnViX2ZpbGVfdCBmaWxlLCBncnViX3Vp bnQ4X3QgKipidWYsIGdydWJfc2l6ZV90ICpsZW4pCj4gICB7Cj4gQEAgLTEwMTQsNiArMTA4Nywx OTQgQEAgZ3J1Yl9jbWRfbGlzdF9kYiAoZ3J1Yl9jb21tYW5kX3QgY21kIF9fYXR0cmlidXRlX18g KCh1bnVzZWQpKSwgaW50IGFyZ2MgX19hdHRyaWIKPiAgICAgcmV0dXJuIEdSVUJfRVJSX05PTkU7 Cj4gICB9Cj4gICAKPiArc3RhdGljIGdydWJfZXJyX3QKPiArZ3J1Yl9jbWRfbGlzdF9kYnggKGdy dWJfY29tbWFuZF90IGNtZCBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSwKPiArICAgICAgICAgICAg ICAgICAgIGludCBhcmdjIF9fYXR0cmlidXRlX18oKHVudXNlZCkpLCBjaGFyICoqYXJncyBfX2F0 dHJpYnV0ZV9fKCh1bnVzZWQpKSkKPiArewo+ICsgIHN0cnVjdCB4NTA5X2NlcnRpZmljYXRlICpj ZXJ0Owo+ICsgIGdydWJfdWludDMyX3QgaSwgY2VydF9udW0gPSAxOwo+ICsKPiArICBpZiAoYXBw ZW5kX2tleV9tZ210ID09IGZhbHNlKQo+ICsgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJS X0FDQ0VTU19ERU5JRUQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgImFwcGVuZF9saXN0X2Ri eCBjb21tYW5kIGlzIHVuc3VwcG9ydGVkIGluIHN0YXRpYyBrZXkgbW9kZSIpOwo+ICsKPiArICBm b3IgKGNlcnQgPSBkYnguY2VydHM7IGNlcnQgIT0gTlVMTDsgY2VydCA9IGNlcnQtPm5leHQsIGNl cnRfbnVtKyspCj4gKyAgICBwcmludF9jZXJ0aWZpY2F0ZSAoY2VydCwgY2VydF9udW0pOwo+ICsK PiArICBmb3IgKGkgPSAwOyBpIDwgZGJ4Lmhhc2hfZW50cmllczsgaSsrKQo+ICsgICAgewo+ICsg ICAgICBpZiAoZGJ4Lmhhc2hlc1tpXSAhPSBOVUxMKQo+ICsgICAgICAgIHsKPiArICAgICAgICAg IGdydWJfcHJpbnRmICgiXG5DZXJ0aWZpY2F0ZS9CaW5hcnkgaGFzaDogJXVcbiIsIGkgKyAxKTsK PiArICAgICAgICAgIGdydWJfcHJpbnRmICgiICAgIEhhc2g6IHNoYSUiIFBSSXVHUlVCX1NJWkUg IlxuICAgICAgICAgIiwgZGJ4Lmhhc2hfc2l6ZXNbaV0gKiA4KTsKPiArICAgICAgICAgIGhleGR1 bXBfY29sb24gKGRieC5oYXNoZXNbaV0sIGRieC5oYXNoX3NpemVzW2ldKTsKPiArICAgICAgICB9 Cj4gKyAgICB9Cj4gKwo+ICsgIHJldHVybiBHUlVCX0VSUl9OT05FOwo+ICt9Cj4gKwo+ICsvKgo+ ICsgKiBSZW1vdmUgdGhlIHRydXN0ZWQgYmluYXJ5IGhhc2ggZnJvbSB0aGUgZGJ4IGxpc3QgaWYg cHJlc2VudC4gQW5kIGFkZCB0aGVtIHRvCj4gKyAqIHRoZSBkYiBsaXN0IGlmIGl0IGlzIG5vdCBh bHJlYWR5IHByZXNlbnQuCj4gKyAqCj4gKyAqIE5vdGU6IFdoZW4gc2lnbmF0dXJlIHZlcmlmaWNh dGlvbiBpcyBlbmFibGVkLCB0aGlzIGNvbW1hbmQgb25seSBhY2NlcHRzIHRoZQo+ICsgKiBiaW5h cnkgaGFzaCBmaWxlIHRoYXQgaXMgc2lnbmVkIHdpdGggYW4gYXBwZW5kZWQgc2lnbmF0dXJlLiBU aGUgc2lnbmF0dXJlIGlzCj4gKyAqIHZlcmlmaWVkIGJ5IHRoZSBhcHBlbmRlZHNpZyBtb2R1bGUu IElmIHZlcmlmaWNhdGlvbiBzdWNjZWVkcywgdGhlIGJpbmFyeSBoYXNoCj4gKyAqIGlzIGFkZGVk IHRvIHRoZSBkYiBsaXN0LiBPdGhlcndpc2UsIGFuIGVycm9yIGlzIHBvc3RlZCBhbmQgdGhlIGJp bmFyeSBoYXNoIGlzCj4gKyAqIG5vdCBhZGRlZC4KPiArICogV2hlbiBzaWduYXR1cmUgdmVyaWZp Y2F0aW9uIGlzIGRpc2FibGVkLCBpdCBhY2NlcHRzIHRoZSBiaW5hcnkgaGFzaCBmaWxlCj4gKyAq IHdpdGhvdXQgYW4gYXBwZW5kZWQgc2lnbmF0dXJlIGFuZCBhZGRzIGl0IHRvIHRoZSBkYiBsaXN0 Lgo+ICsgKgo+ICsgKiBBbHNvLCBub3RlIHRoYXQgdGhlIGFkZGluZyBvZiB0aGUgdHJ1c3RlZCBi aW5hcnkgaGFzaCB1c2luZyB0aGlzIGNvbW1hbmQgZG9lcwo+ICsgKiBub3QgcGVyc2lzdCBhY3Jv c3MgcmVib290cy4KPiArICovCj4gK3N0YXRpYyBncnViX2Vycl90Cj4gK2dydWJfY21kX2FkZF9k Yl9oYXNoIChncnViX2NvbW1hbmRfdCBjbWQgX19hdHRyaWJ1dGVfXygodW51c2VkKSksIGludCBh cmdjLCBjaGFyKiphcmdzKQo+ICt7Cj4gKyAgZ3J1Yl9lcnJfdCByYzsKPiArICBncnViX2ZpbGVf dCBoYXNoX2ZpbGU7Cj4gKyAgZ3J1Yl91aW50OF90ICpoYXNoX2RhdGEgPSBOVUxMOwo+ICsgIGdy dWJfc2l6ZV90IGhhc2hfZGF0YV9zaXplID0gMDsKPiArCj4gKyAgaWYgKGFwcGVuZF9rZXlfbWdt dCA9PSBmYWxzZSkKPiArICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9BQ0NFU1NfREVO SUVELAo+ICsgICAgICAgICAgICAgICAgICAgICAgICJhcHBlbmRfYWRkX2RiX2hhc2ggY29tbWFu ZCBpcyB1bnN1cHBvcnRlZCBpbiBzdGF0aWMga2V5IG1vZGUiKTsKPiArCj4gKyAgaWYgKGFyZ2Mg IT0gMSkKPiArICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfQVJHVU1FTlQsCj4g KyAgICAgICAgICAgICAgICAgICAgICAgImEgdHJ1c3RlZCBiaW5hcnkgaGFzaCBmaWxlIGlzIGV4 cGVjdGVkIGluIGJpbmFyeSBmb3JtYXRcbiIKPiArICAgICAgICAgICAgICAgICAgICAgICAiRXhh bXBsZTpcblx0YXBwZW5kX2FkZF9kYl9oYXNoIDxCSU5BUlkgSEFTSCBGSUxFPlxuIik7Cj4gKwo+ ICsgIGlmICghZ3J1Yl9zdHJsZW4gKGFyZ3NbMF0pKQo+ICsgICAgcmV0dXJuIGdydWJfZXJyb3Ig KEdSVUJfRVJSX0JBRF9GSUxFTkFNRSwgIm1pc3NpbmcgdHJ1c3RlZCBiaW5hcnkgaGFzaCBmaWxl Iik7Cj4gKwo+ICsgIGhhc2hfZmlsZSA9IGdydWJfZmlsZV9vcGVuIChhcmdzWzBdLCBHUlVCX0ZJ TEVfVFlQRV9IQVNIX1RSVVNUIHwgR1JVQl9GSUxFX1RZUEVfTk9fREVDT01QUkVTUyk7Cj4gKyAg aWYgKGhhc2hfZmlsZSA9PSBOVUxMKQo+ICsgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJS X0ZJTEVfTk9UX0ZPVU5ELCAidW5hYmxlIHRvIG9wZW4gJXMgZmlsZSIsIGFyZ3NbMF0pOwo+ICsK PiArICByYyA9IGZpbGVfcmVhZF93aG9sZSAoaGFzaF9maWxlLCAmaGFzaF9kYXRhLCAmaGFzaF9k YXRhX3NpemUpOwo+ICsgIGdydWJfZmlsZV9jbG9zZSAoaGFzaF9maWxlKTsKPiArICBpZiAocmMg IT0gR1JVQl9FUlJfTk9ORSkKPiArICAgIHJldHVybiByYzsKPiArCj4gKyAgLyoKPiArICAgKiBJ ZiBzaWduYXR1cmUgdmVyaWZpY2F0aW9uIGlzIGVuYWJsZWQgKGNoZWNrX3NpZ3MgaXMgc2V0IHRv IHRydWUpLCBvYnRhaW4KPiArICAgKiB0aGUgYWN0dWFsIGhhc2ggZGF0YSBzaXplIGJ5IHN1YnRy YWN0aW5nIHRoZSBhcHBlbmRlZCBzaWduYXR1cmUgc2l6ZSBmcm9tCj4gKyAgICogdGhlIGhhc2gg ZGF0YSBzaXplIGJlY2F1c2UgdGhlIGhhc2ggaGFzIGFuIGFwcGVuZGVkIHNpZ25hdHVyZSwgYW5k IHRoaXMKPiArICAgKiBhY3R1YWwgaGFzaCBkYXRhIHNpemUgaXMgdXNlZCB0byBnZXQgdGhlIGhh c2ggZGF0YS4KPiArICAgKi8KPiArICBpZiAoY2hlY2tfc2lncyA9PSB0cnVlKQo+ICsgICAgaGFz aF9kYXRhX3NpemUgLT0gYXBwZW5kX3NpZ19sZW47Cj4gKwo+ICsgIGdydWJfZHByaW50ZiAoImFw cGVuZGVkc2lnIiwKPiArICAgICAgICAgICAgICAgICJhZGRpbmcgYSB0cnVzdGVkIGJpbmFyeSBo YXNoICUwMnglMDJ4JTAyeCUwMnguLi4gd2l0aCBzaXplIG9mICUiIFBSSXVHUlVCX1NJWkUgIlxu IiwKPiArICAgICAgICAgICAgICAgIGhhc2hfZGF0YVswXSwgaGFzaF9kYXRhWzFdLCBoYXNoX2Rh dGFbMl0sIGhhc2hfZGF0YVszXSwgaGFzaF9kYXRhX3NpemUpOwo+ICsKPiArICAvKiBPbmx5IGFj Y2VwdCBTSEEyNTYsIFNIQTM4NCBhbmQgU0hBNTEyIGJpbmFyeSBoYXNoICovCj4gKyAgaWYgKGhh c2hfZGF0YV9zaXplICE9IFNIQTI1Nl9IQVNIX1NJWkUgJiYgaGFzaF9kYXRhX3NpemUgIT0gU0hB Mzg0X0hBU0hfU0laRSAmJgo+ICsgICAgICBoYXNoX2RhdGFfc2l6ZSAhPSBTSEE1MTJfSEFTSF9T SVpFKQo+ICsgICAgewo+ICsgICAgICBncnViX2ZyZWUgKGhhc2hfZGF0YSk7Cj4gKyAgICAgIHJl dHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfU0lHTkFUVVJFLCAidW5hY2NlcHRhYmxlIHRy dXN0ZWQgYmluYXJ5IGhhc2ggdHlwZSIpOwo+ICsgICAgfQo+ICsKPiArICByYyA9IGFkZF9oYXNo IChoYXNoX2RhdGEsIGhhc2hfZGF0YV9zaXplLCAmZGIpOwo+ICsKPiArICBncnViX2ZyZWUgKGhh c2hfZGF0YSk7Cj4gKwo+ICsgIHJldHVybiByYzsKPiArfQo+ICsKPiArLyoKPiArICogUmVtb3Zl IHRoZSBkaXN0cnVzdGVkIGJpbmFyeS9jZXJ0aWZpY2F0ZSBoYXNoIGZyb20gdGhlIGRiIGxpc3Qg aWYgcHJlc2VudC4KPiArICogQW5kIGFkZCB0aGVtIHRvIHRoZSBkYnggbGlzdCBpZiBpdCBpcyBu b3QgYWxyZWFkeSBwcmVzZW50Lgo+ICsgKgo+ICsgKiBOb3RlOiBXaGVuIHNpZ25hdHVyZSB2ZXJp ZmljYXRpb24gaXMgZW5hYmxlZCwgdGhpcyBjb21tYW5kIG9ubHkgYWNjZXB0cyB0aGUKPiArICog YmluYXJ5L2NlcnRpZmljYXRlIGhhc2ggZmlsZSB0aGF0IGlzIHNpZ25lZCB3aXRoIGFuIGFwcGVu ZGVkIHNpZ25hdHVyZS4gVGhlCj4gKyAqIHNpZ25hdHVyZSBpcyB2ZXJpZmllZCBieSB0aGUgYXBw ZW5kZWRzaWcgbW9kdWxlLiBJZiB2ZXJpZmljYXRpb24gc3VjY2VlZHMsCj4gKyAqIHRoZSBiaW5h cnkvY2VydGlmaWNhdGUgaGFzaCBpcyBhZGRlZCB0byB0aGUgZGJ4IGxpc3QuIE90aGVyd2lzZSwg YW4gZXJyb3IgaXMKPiArICogcG9zdGVkIGFuZCB0aGUgYmluYXJ5L2NlcnRpZmljYXRlIGhhc2gg aXMgbm90IGFkZGVkLgo+ICsgKiBXaGVuIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gaXMgZGlzYWJs ZWQsIGl0IGFjY2VwdHMgdGhlIGJpbmFyeS9jZXJ0aWZpY2F0ZQo+ICsgKiBoYXNoIGZpbGUgd2l0 aG91dCBhbiBhcHBlbmRlZCBzaWduYXR1cmUgYW5kIGFkZHMgaXQgdG8gdGhlIGRieCBsaXN0Lgo+ ICsgKgo+ICsgKiBBbHNvLCBub3RlIHRoYXQgdGhlIGFkZGluZyBvZiB0aGUgZGlzdHJ1c3RlZCBi aW5hcnkvY2VydGlmaWNhdGUgaGFzaCB1c2luZwo+ICsgKiB0aGlzIGNvbW1hbmQgZG9lcyBub3Qg cGVyc2lzdCBhY3Jvc3MgcmVib290cy4KPiArICovCj4gK3N0YXRpYyBncnViX2Vycl90Cj4gK2dy dWJfY21kX2FkZF9kYnhfaGFzaCAoZ3J1Yl9leHRjbWRfY29udGV4dF90IGN0eHQsIGludCBhcmdj IF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKPiArICAgICAgICAgICAgICAgICAgICAgICBjaGFy ICoqYXJncyBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkpCj4gK3sKPiArICBncnViX2Vycl90IHJj Owo+ICsgIGdydWJfZmlsZV90IGhhc2hfZmlsZTsKPiArICBncnViX3VpbnQ4X3QgKmhhc2hfZGF0 YSA9IE5VTEw7Cj4gKyAgZ3J1Yl9zaXplX3QgaGFzaF9kYXRhX3NpemUgPSAwOwo+ICsgIGNoYXIg KmZpbGVfcGF0aDsKPiArCj4gKyAgaWYgKGFwcGVuZF9rZXlfbWdtdCA9PSBmYWxzZSkKPiArICAg IHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9BQ0NFU1NfREVOSUVELAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICJhcHBlbmRfYWRkX2RieF9oYXNoIGNvbW1hbmQgaXMgdW5zdXBwb3J0ZWQg aW4gc3RhdGljIGtleSBtb2RlIik7Cj4gKwo+ICsgIGlmICghY3R4dC0+c3RhdGVbT1BUSU9OX0JJ TkFSWV9IQVNIXS5zZXQgJiYgIWN0eHQtPnN0YXRlW09QVElPTl9DRVJUX0hBU0hdLnNldCkKPiAr ICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfQVJHVU1FTlQsCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgImEgZGlzdHJ1c3RlZCBjZXJ0aWZpY2F0ZS9iaW5hcnkgaGFzaCBmaWxl IGlzIGV4cGVjdGVkIGluIGJpbmFyeSBmb3JtYXRcbiIKPiArICAgICAgICAgICAgICAgICAgICAg ICAiRXhhbXBsZTpcblx0YXBwZW5kX2FkZF9kYnhfaGFzaCBbb3B0aW9uXSA8RklMRT5cbiIKPiAr ICAgICAgICAgICAgICAgICAgICAgICAib3B0aW9uOlxuWy1ifC0tYmluYXJ5LWhhc2hdIEZJTEUg W0JJTkFSWSBIQVNIIEZJTEVdXG4iCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIlstY3wtLWNl cnQtaGFzaF0gRklMRSBbQ0VSVEZJQ0FURSBIQVNIIEZJTEVdXG4iKTsKPiArCj4gKyAgaWYgKGN0 eHQtPnN0YXRlW09QVElPTl9CSU5BUllfSEFTSF0uYXJnID09IE5VTEwgJiYgY3R4dC0+c3RhdGVb T1BUSU9OX0NFUlRfSEFTSF0uYXJnID09IE5VTEwpCj4gKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAo R1JVQl9FUlJfQkFEX0ZJTEVOQU1FLCAibWlzc2luZyBkaXN0cnVzdGVkIGNlcnRpZmljYXRlL2Jp bmFyeSBoYXNoIGZpbGUiKTsKPiArCj4gKyAgaWYgKGN0eHQtPnN0YXRlW09QVElPTl9CSU5BUllf SEFTSF0uYXJnICE9IE5VTEwpCj4gKyAgICBmaWxlX3BhdGggPSBjdHh0LT5zdGF0ZVtPUFRJT05f QklOQVJZX0hBU0hdLmFyZzsKPiArICBlbHNlCj4gKyAgICBmaWxlX3BhdGggPSBjdHh0LT5zdGF0 ZVtPUFRJT05fQ0VSVF9IQVNIXS5hcmc7Cj4gKwo+ICsgIGhhc2hfZmlsZSA9IGdydWJfZmlsZV9v cGVuIChmaWxlX3BhdGgsIEdSVUJfRklMRV9UWVBFX0hBU0hfVFJVU1QgfCBHUlVCX0ZJTEVfVFlQ RV9OT19ERUNPTVBSRVNTKTsKPiArICBpZiAoaGFzaF9maWxlID09IE5VTEwpCj4gKyAgICByZXR1 cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfRklMRV9OT1RfRk9VTkQsICJ1bmFibGUgdG8gb3BlbiAl cyBmaWxlIiwgZmlsZV9wYXRoKTsKPiArCj4gKyAgcmMgPSBmaWxlX3JlYWRfd2hvbGUgKGhhc2hf ZmlsZSwgJmhhc2hfZGF0YSwgJmhhc2hfZGF0YV9zaXplKTsKPiArICBncnViX2ZpbGVfY2xvc2Ug KGhhc2hfZmlsZSk7Cj4gKyAgaWYgKHJjICE9IEdSVUJfRVJSX05PTkUpCj4gKyAgICByZXR1cm4g cmM7Cj4gKwo+ICsgIC8qCj4gKyAgICogSWYgc2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBpcyBlbmFi bGVkIChjaGVja19zaWdzIGlzIHNldCB0byB0cnVlKSwgb2J0YWluCj4gKyAgICogdGhlIGFjdHVh bCBoYXNoIGRhdGEgc2l6ZSBieSBzdWJ0cmFjdGluZyB0aGUgYXBwZW5kZWQgc2lnbmF0dXJlIHNp emUgZnJvbQo+ICsgICAqIHRoZSBoYXNoIGRhdGEgc2l6ZSBiZWNhdXNlIHRoZSBoYXNoIGhhcyBh biBhcHBlbmRlZCBzaWduYXR1cmUsIGFuZCB0aGlzCj4gKyAgICogYWN0dWFsIGhhc2ggZGF0YSBz aXplIGlzIHVzZWQgdG8gZ2V0IHRoZSBoYXNoIGRhdGEuCj4gKyAgICovCj4gKyAgaWYgKGNoZWNr X3NpZ3MgPT0gdHJ1ZSkKPiArICAgIGhhc2hfZGF0YV9zaXplIC09IGFwcGVuZF9zaWdfbGVuOwo+ ICsKPiArICBncnViX2RwcmludGYgKCJhcHBlbmRlZHNpZyIsCj4gKyAgICAgICAgICAgICAgICAi YWRkaW5nIGEgZGlzdHJ1c3RlZCBjZXJ0aWZpY2F0ZS9iaW5hcnkgaGFzaCAlMDJ4JTAyeCUwMngl MDJ4Li4uIgo+ICsgICAgICAgICAgICAgICAgIiB3aXRoIHNpemUgb2YgJSIgUFJJdUdSVUJfU0la RSAiXG4iLCBoYXNoX2RhdGFbMF0sIGhhc2hfZGF0YVsxXSwKPiArICAgICAgICAgICAgICAgIGhh c2hfZGF0YVsyXSwgaGFzaF9kYXRhWzNdLCBoYXNoX2RhdGFfc2l6ZSk7Cj4gKwo+ICsgIGlmIChj dHh0LT5zdGF0ZVtPUFRJT05fQklOQVJZX0hBU0hdLnNldCB8fCBjdHh0LT5zdGF0ZVtPUFRJT05f Q0VSVF9IQVNIXS5zZXQpCj4gKyAgICB7Cj4gKyAgICAgIC8qIE9ubHkgYWNjZXB0IFNIQTI1Niwg U0hBMzg0IGFuZCBTSEE1MTIgY2VydGlmaWNhdGUvYmluYXJ5IGhhc2ggKi8KPiArICAgICAgaWYg KGhhc2hfZGF0YV9zaXplICE9IFNIQTI1Nl9IQVNIX1NJWkUgJiYgaGFzaF9kYXRhX3NpemUgIT0g U0hBMzg0X0hBU0hfU0laRSAmJgo+ICsgICAgICAgICAgaGFzaF9kYXRhX3NpemUgIT0gU0hBNTEy X0hBU0hfU0laRSkKPiArICAgICAgICB7Cj4gKyAgICAgICAgICBncnViX2ZyZWUgKGhhc2hfZGF0 YSk7Cj4gKyAgICAgICAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX1NJR05BVFVS RSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5hY2NlcHRhYmxlIGRpc3RydXN0 ZWQgY2VydGlmaWNhdGUvYmluYXJ5IGhhc2ggdHlwZSIpOwo+ICsgICAgICAgIH0KPiArICAgIH0K PiArCj4gKyAgLyogUmVtb3ZlIGRpc3RydXN0ZWQgYmluYXJ5IGhhc2gvY2VydGlmaWNhdGUgZnJv bSB0aGUgZGIgbGlzdCBpZiBwcmVzZW50LiAqLwo+ICsgIHJlbW92ZV9oYXNoX2Zyb21fZGIgKGhh c2hfZGF0YSwgaGFzaF9kYXRhX3NpemUsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgKChjdHh0 LT5zdGF0ZVtPUFRJT05fQklOQVJZX0hBU0hdLnNldCkgPyB0cnVlIDogZmFsc2UpKTsKPiArICBy YyA9IGFkZF9oYXNoIChoYXNoX2RhdGEsIGhhc2hfZGF0YV9zaXplLCAmZGJ4KTsKPiArCj4gKyAg Z3J1Yl9mcmVlIChoYXNoX2RhdGEpOwo+ICsKPiArICByZXR1cm4gcmM7Cj4gK30KPiArCj4gICAv KiBBZGQgdGhlIFguNTA5IGNlcnRpZmljYXRlcy9iaW5hcnkgaGFzaCB0byB0aGUgZGIgbGlzdCBm cm9tIFBLUy4gKi8KPiAgIHN0YXRpYyBncnViX2Vycl90Cj4gICBsb2FkX3BrczJkYiAodm9pZCkK PiBAQCAtMTI5Nyw2ICsxNTU4LDExIEBAIGFwcGVuZGVkc2lnX2luaXQgKGdydWJfZmlsZV90IGlv IF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwgZW51bSBncnViX2ZpbGVfdHlwZSB0Cj4gICAgICAg ICAgICAqIHZlcmlmaWVyLCBidXQgd2UgbGFjayB0aGUgaHVicmlzIHJlcXVpcmVkIHRvIHRha2Ug dGhpcyBvbi4gSW5zdGVhZCwKPiAgICAgICAgICAgICogcmVxdWlyZSB0aGF0IGl0IGhhdmUgYW4g YXBwZW5kZWQgc2lnbmF0dXJlLgo+ICAgICAgICAgICAgKi8KPiArICAgICAgY2FzZSBHUlVCX0ZJ TEVfVFlQRV9IQVNIX1RSVVNUOgo+ICsgICAgICAgIC8qCj4gKyAgICAgICAgICogVGhpcyBpcyBh IGNlcnRpZmljYXRlL2JpbmFyeSBoYXNoIHRvIGFkZCB0byBkYi9kYnguIFRoaXMgbmVlZHMgdG8g YmUKPiArICAgICAgICAgKiB2ZXJpZmllZCBvciBibG9ja2VkLgo+ICsgICAgICAgICAqLwo+ICAg ICAgICAgY2FzZSBHUlVCX0ZJTEVfVFlQRV9MSU5VWF9LRVJORUw6Cj4gICAgICAgICBjYXNlIEdS VUJfRklMRV9UWVBFX0dSVUJfTU9EVUxFOgo+ICAgICAgICAgICAvKgo+IEBAIC0xMzM4LDYgKzE2 MDQsOCBAQCBzdHJ1Y3QgZ3J1Yl9maWxlX3ZlcmlmaWVyIGdydWJfYXBwZW5kZWRzaWdfdmVyaWZp ZXIgPSB7Cj4gICB9Owo+ICAgCj4gICBzdGF0aWMgZ3J1Yl9jb21tYW5kX3QgY21kX3ZlcmlmeSwg Y21kX2xpc3RfZGIsIGNtZF9kYnhfY2VydCwgY21kX2RiX2NlcnQ7Cj4gK3N0YXRpYyBncnViX2Nv bW1hbmRfdCBjbWRfbGlzdF9kYngsIGNtZF9kYl9oYXNoOwo+ICtzdGF0aWMgZ3J1Yl9leHRjbWRf dCBjbWRfZGJ4X2hhc2g7Cj4gICAKPiAgIEdSVUJfTU9EX0lOSVQgKGFwcGVuZGVkc2lnKQo+ICAg ewo+IEBAIC0xNDE3LDYgKzE2ODUsMTYgQEAgR1JVQl9NT0RfSU5JVCAoYXBwZW5kZWRzaWcpCj4g ICAgIGNtZF9kYnhfY2VydCA9IGdydWJfcmVnaXN0ZXJfY29tbWFuZCAoImFwcGVuZF9hZGRfZGJ4 X2NlcnQiLCBncnViX2NtZF9kYnhfY2VydCwgTl8oIjxYNTA5X0NFUlRJRklDQVRFPiIpLAo+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5fKCJBZGQgZGlzdHJ1c3Rl ZCBYNTA5X0NFUlRJRklDQVRFIHRvIHRoZSBkYnggbGlzdCIpKTsKPiAgIAo+ICsgIGNtZF9saXN0 X2RieCA9IGdydWJfcmVnaXN0ZXJfY29tbWFuZCAoImFwcGVuZF9saXN0X2RieCIsIGdydWJfY21k X2xpc3RfZGJ4LCAwLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Tl8oIlNob3cgdGhlIGxpc3Qgb2YgZGlzdHJ1c3RlZCBjZXJ0aWZpY2F0ZXMgYW5kIgo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBjZXJ0aWZpY2F0ZS9iaW5hcnkg aGFzaGVzIGZyb20gdGhlIGRieCBsaXN0IikpOwo+ICsgIGNtZF9kYl9oYXNoID0gZ3J1Yl9yZWdp c3Rlcl9jb21tYW5kICgiYXBwZW5kX2FkZF9kYl9oYXNoIiwgZ3J1Yl9jbWRfYWRkX2RiX2hhc2gs IE5fKCJCSU5BUlkgSEFTSCBGSUxFIiksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE5fKCJBZGQgdHJ1c3RlZCBCSU5BUlkgSEFTSCB0byB0aGUgZGIgbGlzdC4iKSk7 Cj4gKyAgY21kX2RieF9oYXNoID0gZ3J1Yl9yZWdpc3Rlcl9leHRjbWQgKCJhcHBlbmRfYWRkX2Ri eF9oYXNoIiwgZ3J1Yl9jbWRfYWRkX2RieF9oYXNoLCAwLAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBOXygiWy1ifC0tYmluYXJ5LWhhc2hdIEZJTEUgW0JJTkFSWSBI QVNIIEZJTEVdXG4iCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJb LWN8LS1jZXJ0LWhhc2hdIEZJTEUgW0NFUlRGSUNBVEUgSEFTSCBGSUxFXSIpLAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOXygiQWRkIGRpc3RydXN0ZWQgQ0VSVEZJ Q0FURS9CSU5BUlkgSEFTSCB0byB0aGUgZGJ4IGxpc3QuIiksIG9wdGlvbnMpOwo+ICsKPiAgICAg Z3J1Yl92ZXJpZmllcl9yZWdpc3RlciAoJmdydWJfYXBwZW5kZWRzaWdfdmVyaWZpZXIpOwo+ICAg ICBncnViX2RsX3NldF9wZXJzaXN0ZW50IChtb2QpOwo+ICAgfQo+IEBAIC0xNDM5LDQgKzE3MTcs NyBAQCBHUlVCX01PRF9GSU5JIChhcHBlbmRlZHNpZykKPiAgICAgZ3J1Yl91bnJlZ2lzdGVyX2Nv bW1hbmQgKGNtZF9saXN0X2RiKTsKPiAgICAgZ3J1Yl91bnJlZ2lzdGVyX2NvbW1hbmQgKGNtZF9k Yl9jZXJ0KTsKPiAgICAgZ3J1Yl91bnJlZ2lzdGVyX2NvbW1hbmQgKGNtZF9kYnhfY2VydCk7Cj4g KyAgZ3J1Yl91bnJlZ2lzdGVyX2NvbW1hbmQgKGNtZF9saXN0X2RieCk7Cj4gKyAgZ3J1Yl91bnJl Z2lzdGVyX2NvbW1hbmQgKGNtZF9kYl9oYXNoKTsKPiArICBncnViX3VucmVnaXN0ZXJfZXh0Y21k IChjbWRfZGJ4X2hhc2gpOwo+ICAgfQo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2dydWIvZmlsZS5o IGIvaW5jbHVkZS9ncnViL2ZpbGUuaAo+IGluZGV4IGQ2NzhkZTA2My4uMTZhNGI3ZDI2IDEwMDY0 NAo+IC0tLSBhL2luY2x1ZGUvZ3J1Yi9maWxlLmgKPiArKysgYi9pbmNsdWRlL2dydWIvZmlsZS5o Cj4gQEAgLTExNSw2ICsxMTUsOCBAQCBlbnVtIGdydWJfZmlsZV90eXBlCj4gICAgICAgR1JVQl9G SUxFX1RZUEVfSEFTSExJU1QsCj4gICAgICAgLyogRmlsZSBoYXNoZWQgYnkgaGFzaHN1bS4gICov Cj4gICAgICAgR1JVQl9GSUxFX1RZUEVfVE9fSEFTSCwKPiArICAgIC8qIEZpbGUgaG9sZGluZyBj ZXJ0aWZpY2lhdGUvYmluYXJ5IGhhc2ggdG8gYWRkIHRvIGRiL2RieC4gKi8KPiArICAgIEdSVUJf RklMRV9UWVBFX0hBU0hfVFJVU1QsCj4gICAgICAgLyogS2V5Ym9hcmQgbGF5b3V0LiAgKi8KPiAg ICAgICBHUlVCX0ZJTEVfVFlQRV9LRVlCT0FSRF9MQVlPVVQsCj4gICAgICAgLyogUGljdHVyZSBm aWxlLiAgKi8KClRlc3RlZC1ieTogU3JpZGhhciBNYXJrb25kYSA8c3JpZGhhcm1AbGludXguaWJt LmNvbT4KCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpH cnViLWRldmVsIG1haWxpbmcgbGlzdApHcnViLWRldmVsQGdudS5vcmcKaHR0cHM6Ly9saXN0cy5n bnUub3JnL21haWxtYW4vbGlzdGluZm8vZ3J1Yi1kZXZlbAo=