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 58D44CA0EEB for ; Thu, 21 Aug 2025 07:59:51 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1up0B0-0000xm-Rb; Thu, 21 Aug 2025 03:57:40 -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 1up0Az-0000xJ-4M for grub-devel@gnu.org; Thu, 21 Aug 2025 03:57:37 -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 1up0Au-0001Zt-TI for grub-devel@gnu.org; Thu, 21 Aug 2025 03:57:36 -0400 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 57KJURek026287; Thu, 21 Aug 2025 07:57:28 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=4ZZvBP NLHKbWCO3ca+5tww1KmysEuAeC14CNvvWMQTE=; b=KyjBdZ/rOYfZaiwkfr+YnW 5SJFG2d9Q0R+7oYYULAi3NAavw/Ie9vo7Z6nbpG1y5rWqgRfJvUtgOBxlodb62bl cd3xFzBj+uwQ48B55kr4s125T+onUAl6FqQ83J+KCWZsiPL9YtVRvf3N610jX59k piaQGpeTZl8b9ZZWMWKOgUCxIWOTwOLN/6zu9BeZ9GFm+8kz4+rxcou/Z1YWPkc8 Y22TNg+VapF6v8kgo23a3F3xLZijKwWLxAMUXkAKue3ashUOAaU7izFujLUBiYEZ Ytc4wxQ7cx6In1JAMO8zlr18ifqQJrO/PaiGoRncUm/CgVfZ0dOnOoaADE9pVlQg == Received: from ppma12.dal12v.mail.ibm.com (dc.9e.1632.ip4.static.sl-reverse.com [50.22.158.220]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 48n38vff5h-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 21 Aug 2025 07:57:28 +0000 (GMT) Received: from pps.filterd (ppma12.dal12v.mail.ibm.com [127.0.0.1]) by ppma12.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 57L75Csw016030; Thu, 21 Aug 2025 07:57:27 GMT Received: from smtprelay01.fra02v.mail.ibm.com ([9.218.2.227]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 48my4279bp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 21 Aug 2025 07:57:27 +0000 Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay01.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 57L7vNfE52429154 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 21 Aug 2025 07:57:23 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id AE2BE20040; Thu, 21 Aug 2025 07:57:23 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 18CC62004E; Thu, 21 Aug 2025 07:57:21 +0000 (GMT) Received: from localhost.localdomain (unknown [9.39.19.6]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 21 Aug 2025 07:57:20 +0000 (GMT) From: Sudhakar Kuppusamy To: 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, Sudhakar Kuppusamy , sridharm@linux.ibm.com Subject: [PATCH v8 10/20] appended signatures: Support verifying appended signatures Date: Thu, 21 Aug 2025 13:25:03 +0530 Message-Id: <20250821075513.82881-11-sudhakar@linux.ibm.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20250821075513.82881-1-sudhakar@linux.ibm.com> References: <20250821075513.82881-1-sudhakar@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODE5MDIyMiBTYWx0ZWRfX+wG+0KUQjDtd ccDf9w0NceJLbvD/3ov4yUsm8uFxVGX19zmaRbmRnLgUChVBC/VU4p9wvxs/hQP0pt0xAk0I7hM PFiaPWYR7C3YsZ2jtdpHDKqXOg0ur0bPf43JG3FjDCJM4jzLckrMyTsdiO+dSjdRpErHyg1iwu8 ynir72xooD0Zb9RexLHx6eUOWXO7H+Diw8jSivUoNm57pvhR/kdenu/3uLNR+yebW3CxmeWh8+w FdyioIYLf6vRGlAU44E59zOAurVeivonZ5jSPlTKL+M1ugaLKr/aTXNZrFE5Q32t3Yi7zVZuD/0 RcehPjQt0ThZaCvnMW8FQaZuYsxV7Nw3gA5Dnh/TPu6hiH8MMfOGAkHdc9QaN6miwCiMZ+VDwnD sBND9S5G6z+v2BG1qgsvWnC93gb4yQ== X-Authority-Analysis: v=2.4 cv=PMlWOfqC c=1 sm=1 tr=0 ts=68a6d168 cx=c_pps a=bLidbwmWQ0KltjZqbj+ezA==:117 a=bLidbwmWQ0KltjZqbj+ezA==:17 a=IkcTkHD0fZMA:10 a=2OwXVqhp2XgA:10 a=mDV3o1hIAAAA:8 a=JuTF4qcAAAAA:8 a=VnNF1IyMAAAA:8 a=cbrzbVwk3SDDZe7Flu8A:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=WlT8qwTXB_Kj6um4hl3b:22 a=cPQSjfK2_nFv0Q5t_7PE:22 X-Proofpoint-GUID: cmB6UgCLxQ3L0R1kJbUOLIVrQqmA5oFv X-Proofpoint-ORIG-GUID: cmB6UgCLxQ3L0R1kJbUOLIVrQqmA5oFv X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-21_01,2025-08-20_03,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 bulkscore=0 adultscore=0 priorityscore=1501 lowpriorityscore=0 malwarescore=0 spamscore=0 phishscore=0 suspectscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2508110000 definitions=main-2508190222 Received-SPF: pass client-ip=148.163.156.1; envelope-from=sudhakar@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_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org Sender: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org QnVpbGRpbmcgb24gdGhlIHBhcnNlcnMgYW5kIHRoZSBhYmlsaXR5IHRvIGVtYmVkIFguNTA5IGNl cnRpZmljYXRlcywgYXMKd2VsbCBhcyB0aGUgZXhpc3RpbmcgZ2NyeXB0IGZ1bmN0aW9uYWxpdHks IGFkZCBhIG1vZHVsZSBmb3IgdmVyaWZ5aW5nCmFwcGVuZGVkIHNpZ25hdHVyZXMuCgpUaGlzIGlu Y2x1ZGVzIGEgdmVyaWZpZXIgdGhhdCByZXF1aXJlcyB0aGF0IExpbnV4IGtlcm5lbHMgYW5kCkdS VUIgbW9kdWxlcyBoYXZlIGFwcGVuZGVkIHNpZ25hdHVyZXMsIGFuZCBjb21tYW5kcyB0byBtYW5h Z2UgdGhlCmxpc3Qgb2YgdHJ1c3RlZCBjZXJ0aWZpY2F0ZXMgZm9yIHZlcmlmaWNhdGlvbi4KClZl cmlmaWNhdGlvbiBtdXN0IGJlIGVuYWJsZWQgYnkgc2V0dGluZyBjaGVja19hcHBlbmRlZF9zaWdu YXR1cmVzLiBJZgpzZWN1cmUgYm9vdCBpcyBlbmFibGVkIHdpdGggZW5mb3JjZWQgbW9kZSB3aGVu IHRoZSBtb2R1bGUgaXMgbG9hZGVkLAp2ZXJpZmljYXRpb24gd2lsbCBiZSBlbmFibGVkIGFuZCBs b2NrZWQgYXV0b21hdGljYWxseS4gSWYgdmVyaWZpY2F0aW9uCmlzIGVuYWJsZWQsIGV4dHJhY3Qg dHJ1c3RlZCBrZXlzIGZyb20gdGhlIEdSVUIgRUxGIE5vdGUgYW5kIHN0b3JlIHRoZW0gaW4gdGhl IGRiLgoKQXMgd2l0aCB0aGUgUEdQIHZlcmlmaWVyLCBpdCBpcyBub3QgYSBjb21wbGV0ZSBzZWN1 cmUtYm9vdCBzb2x1dGlvbjoKb3RoZXIgbWVjaGFuaXNtcywgc3VjaCBhcyBhIHBhc3N3b3JkIG9y IGxvY2tkb3duLCBtdXN0IGJlIHVzZWQgdG8gZW5zdXJlCnRoYXQgYSB1c2VyIGNhbm5vdCBkcm9w IHRvIHRoZSBHUlVCIHNoZWxsIGFuZCBkaXNhYmxlIHZlcmlmaWNhdGlvbi4KCkludHJvZHVjaW5n IHRoZSBmb2xsb3dpbmcgR1JVQiBjb21tYW5kcyB0byBhY2Nlc3MgZGIuCgogMS4gYXBwZW5kX2xp c3RfZGI6CiAgICAgIFNob3cgdGhlIGxpc3Qgb2YgdHJ1c3RlZCBjZXJ0aWZpY2F0ZXMgZnJvbSB0 aGUgZGIgbGlzdAogMi4gYXBwZW5kX2FkZF9kYl9jZXJ0OgogICAgICBBZGQgdGhlIHRydXN0ZWQg Y2VydGlmaWNhdGUgdG8gdGhlIGRiIGxpc3QKIDMuIGFwcGVuZF9ybV9kYnhfY2VydDoKICAgICAg UmVtb3ZlIHRoZSBkaXN0cnVzdGVkIGNlcnRpZmljYXRlIGZyb20gdGhlIGRiIGxpc3QKIDQuIGFw cGVuZF92ZXJpZnk6CiAgICAgIFZlcmlmeSB0aGUgc2lnbmVkIGZpbGUgdXNpbmcgZGIgbGlzdAoK U2lnbmVkLW9mZi1ieTogRGFuaWVsIEF4dGVucyA8ZGphQGF4dGVucy5uZXQ+ClNpZ25lZC1vZmYt Ynk6IFN1ZGhha2FyIEt1cHB1c2FteSA8c3VkaGFrYXJAbGludXguaWJtLmNvbT4KUmV2aWV3ZWQt Ynk6IFN0ZWZhbiBCZXJnZXIgPHN0ZWZhbmJAbGludXguaWJtLmNvbT4KUmV2aWV3ZWQtYnk6IEF2 bmlzaCBDaG91aGFuIDxhdm5pc2hAbGludXguaWJtLmNvbT4KLS0tCiBncnViLWNvcmUvTWFrZWZp bGUuY29yZS5kZWYgICAgICAgICAgICAgICAgICB8ICAxNSArCiBncnViLWNvcmUvY29tbWFuZHMv YXBwZW5kZWRzaWcvYXBwZW5kZWRzaWcuYyB8IDc5MyArKysrKysrKysrKysrKysrKysrCiBpbmNs dWRlL2dydWIvZXJyLmggICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMyArLQogaW5jbHVk ZS9ncnViL2ZpbGUuaCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwogNCBmaWxlcyBj aGFuZ2VkLCA4MTIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAw NjQ0IGdydWItY29yZS9jb21tYW5kcy9hcHBlbmRlZHNpZy9hcHBlbmRlZHNpZy5jCgpkaWZmIC0t Z2l0IGEvZ3J1Yi1jb3JlL01ha2VmaWxlLmNvcmUuZGVmIGIvZ3J1Yi1jb3JlL01ha2VmaWxlLmNv cmUuZGVmCmluZGV4IGI3MmYzMjJiMS4uZDkxNjk0ZGUwIDEwMDY0NAotLS0gYS9ncnViLWNvcmUv TWFrZWZpbGUuY29yZS5kZWYKKysrIGIvZ3J1Yi1jb3JlL01ha2VmaWxlLmNvcmUuZGVmCkBAIC05 ODAsNiArOTgwLDIxIEBAIG1vZHVsZSA9IHsKICAgY3BwZmxhZ3MgPSAnJChDUFBGTEFHU19HQ1JZ KSc7CiB9OwogCittb2R1bGUgPSB7CisgIG5hbWUgPSBhcHBlbmRlZHNpZzsKKyAgY29tbW9uID0g Y29tbWFuZHMvYXBwZW5kZWRzaWcvYXBwZW5kZWRzaWcuYzsKKyAgY29tbW9uID0gY29tbWFuZHMv YXBwZW5kZWRzaWcveDUwOS5jOworICBjb21tb24gPSBjb21tYW5kcy9hcHBlbmRlZHNpZy9wa2Nz Ny5jOworICBjb21tb24gPSBjb21tYW5kcy9hcHBlbmRlZHNpZy9hc24xdXRpbC5jOworICBjb21t b24gPSBjb21tYW5kcy9hcHBlbmRlZHNpZy9nbnV0bHNfYXNuMV90YWIuYzsKKyAgY29tbW9uID0g Y29tbWFuZHMvYXBwZW5kZWRzaWcvcGtpeF9hc24xX3RhYi5jOworICBlbmFibGUgPSBlbXU7Cisg IGVuYWJsZSA9IHBvd2VycGNfaWVlZTEyNzU7CisgIGNmbGFncyA9ICckKENGTEFHU19HQ1JZKSAt V25vLXJlZHVuZGFudC1kZWNscyc7CisgIGNwcGZsYWdzID0gJyQoQ1BQRkxBR1NfR0NSWSkgLUkk KHNyY2RpcikvbGliL2xpYnRhc24xLWdydWInOworICBkZXBlbmRzID0gY3J5cHRvLCBnY3J5X3Jz YSwgZ2NyeV9zaGEyNTYsIGdjcnlfc2hhNTEyLCBtcGksIGFzbjE7Cit9OworCiBtb2R1bGUgPSB7 CiAgIG5hbWUgPSBoZHBhcm07CiAgIGNvbW1vbiA9IGNvbW1hbmRzL2hkcGFybS5jOwpkaWZmIC0t Z2l0IGEvZ3J1Yi1jb3JlL2NvbW1hbmRzL2FwcGVuZGVkc2lnL2FwcGVuZGVkc2lnLmMgYi9ncnVi LWNvcmUvY29tbWFuZHMvYXBwZW5kZWRzaWcvYXBwZW5kZWRzaWcuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAuLjJkZGJiM2ExNQotLS0gL2Rldi9udWxsCisrKyBiL2dydWIt Y29yZS9jb21tYW5kcy9hcHBlbmRlZHNpZy9hcHBlbmRlZHNpZy5jCkBAIC0wLDAgKzEsNzkzIEBA CisvKgorICogIEdSVUIgIC0tICBHUmFuZCBVbmlmaWVkIEJvb3Rsb2FkZXIKKyAqICBDb3B5cmln aHQgKEMpIDIwMjAsIDIwMjEsIDIwMjIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisg KiAgQ29weXJpZ2h0IChDKSAyMDIwLCAyMDIxLCAyMDIyLCAyMDI1IElCTSBDb3Jwb3JhdGlvbgor ICoKKyAqICBHUlVCIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKyAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgR1JVQiBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQor ICogIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCBHUlVCLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNpbmNsdWRlIDxncnViL3R5cGVzLmg+CisjaW5j bHVkZSA8Z3J1Yi9taXNjLmg+CisjaW5jbHVkZSA8Z3J1Yi9tbS5oPgorI2luY2x1ZGUgPGdydWIv ZXJyLmg+CisjaW5jbHVkZSA8Z3J1Yi9kbC5oPgorI2luY2x1ZGUgPGdydWIvZmlsZS5oPgorI2lu Y2x1ZGUgPGdydWIvY29tbWFuZC5oPgorI2luY2x1ZGUgPGdydWIvY3J5cHRvLmg+CisjaW5jbHVk ZSA8Z3J1Yi9pMThuLmg+CisjaW5jbHVkZSA8Z3J1Yi9nY3J5cHQvZ2NyeXB0Lmg+CisjaW5jbHVk ZSA8Z3J1Yi9rZXJuZWwuaD4KKyNpbmNsdWRlIDxncnViL2V4dGNtZC5oPgorI2luY2x1ZGUgPGdy dWIvdmVyaWZ5Lmg+CisjaW5jbHVkZSA8bGlidGFzbjEuaD4KKyNpbmNsdWRlIDxncnViL2Vudi5o PgorI2luY2x1ZGUgPGdydWIvbG9ja2Rvd24uaD4KKworI2luY2x1ZGUgImFwcGVuZGVkc2lnLmgi CisKK0dSVUJfTU9EX0xJQ0VOU0UgKCJHUEx2MysiKTsKKworLyogUHVibGljIGtleSB0eXBlLiAq LworI2RlZmluZSBHUlVCX1BLRVlfSURfUEtDUzcgMgorCisvKiBBcHBlbmRlZCBzaWduYXR1cmUg bWFnaWMgc3RyaW5nLiAqLworc3RhdGljIGNvbnN0IGNoYXIgbWFnaWNbXSA9ICJ+TW9kdWxlIHNp Z25hdHVyZSBhcHBlbmRlZH5cbiI7CisKKy8qCisgKiBUaGlzIHN0cnVjdHVyZSBpcyBleHRyYWN0 ZWQgZnJvbSBzY3JpcHRzL3NpZ24tZmlsZS5jIGluIHRoZSBsaW51eCBrZXJuZWwKKyAqIHNvdXJj ZS4gSXQgd2FzIGxpY2Vuc2VkIGFzIExHUEx2Mi4xKywgd2hpY2ggaXMgR1BMdjMrIGNvbXBhdGli bGUuCisgKi8KK3N0cnVjdCBtb2R1bGVfc2lnbmF0dXJlCit7CisgIGdydWJfdWludDhfdCBhbGdv OyAgICAgICAvKiBQdWJsaWMta2V5IGNyeXB0byBhbGdvcml0aG0gWzBdLiAqLworICBncnViX3Vp bnQ4X3QgaGFzaDsgICAgICAgLyogRGlnZXN0IGFsZ29yaXRobSBbMF0uICovCisgIGdydWJfdWlu dDhfdCBpZF90eXBlOyAgICAvKiBLZXkgaWRlbnRpZmllciB0eXBlIFtHUlVCX1BLRVlfSURfUEtD UzddLiAqLworICBncnViX3VpbnQ4X3Qgc2lnbmVyX2xlbjsgLyogTGVuZ3RoIG9mIHNpZ25lcidz IG5hbWUgWzBdLiAqLworICBncnViX3VpbnQ4X3Qga2V5X2lkX2xlbjsgLyogTGVuZ3RoIG9mIGtl eSBpZGVudGlmaWVyIFswXS4gKi8KKyAgZ3J1Yl91aW50OF90IF9fcGFkWzNdOworICBncnViX3Vp bnQzMl90IHNpZ19sZW47ICAgLyogTGVuZ3RoIG9mIHNpZ25hdHVyZSBkYXRhLiAqLworfSBHUlVC X1BBQ0tFRDsKKworLyogVGhpcyByZXByZXNlbnRzIGFuIGVudGlyZSwgcGFyc2VkLCBhcHBlbmRl ZCBzaWduYXR1cmUuICovCitzdHJ1Y3QgZ3J1Yl9hcHBlbmRlZF9zaWduYXR1cmUKK3sKKyAgZ3J1 Yl9zaXplX3Qgc2lnbmF0dXJlX2xlbjsgICAgICAgICAgICAvKiBMZW5ndGggb2YgUEtDUyM3IGRh dGEgKyBtZXRhZGF0YSArIG1hZ2ljLiAqLworICBzdHJ1Y3QgbW9kdWxlX3NpZ25hdHVyZSBzaWdf bWV0YWRhdGE7IC8qIE1vZHVsZSBzaWduYXR1cmUgbWV0YWRhdGEuICovCisgIHN0cnVjdCBwa2Nz N19zaWduZWREYXRhIHBrY3M3OyAgICAgICAgLyogUGFyc2VkIFBLQ1MjNyBkYXRhLiAqLworfTsK KworLyogVGhpcyByZXByZXNlbnRzIGEgdHJ1c3RlZCBjZXJ0aWZpY2F0ZXMuICovCitzdHJ1Y3Qg Z3J1Yl9kYXRhYmFzZQoreworICBzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSAqY2VydHM7IC8qIENl cnRpZmljYXRlcy4gKi8KKyAgZ3J1Yl91aW50MzJfdCBjZXJ0X2VudHJpZXM7ICAgICAvKiBOdW1i ZXIgb2YgY2VydGlmaWNhdGVzLiAqLworfTsKKworLyogVGhlIGRiIGxpc3QgaXMgdXNlZCB0byB2 YWxpZGF0ZSBhcHBlbmRlZCBzaWduYXR1cmVzLiAqLworc3RydWN0IGdydWJfZGF0YWJhc2UgZGIg PSB7LmNlcnRzID0gTlVMTCwgLmNlcnRfZW50cmllcyA9IDB9OworCisvKiBBcHBlbmRlZCBzaWdu YXR1cmUgc2l6ZS4gKi8KK3N0YXRpYyBncnViX3NpemVfdCBhcHBlbmRfc2lnX2xlbiA9IDA7CisK Ky8qCisgKiBTaWduYXR1cmUgdmVyaWZpY2F0aW9uIGZsYWcgKGNoZWNrX3NpZ3MpLgorICogY2hl Y2tfc2lnczogZmFsc2UKKyAqICAtIE5vIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24uIFRoaXMgaXMg dGhlIGRlZmF1bHQuCisgKiBjaGVja19zaWdzOiB0cnVlCisgKiAgLSBFbmZvcmNlIHNpZ25hdHVy ZSB2ZXJpZmljYXRpb24sIGFuZCBpZiBzaWduYXR1cmUgdmVyaWZpY2F0aW9uIGZhaWxzLAorICog ICAgcG9zdCB0aGUgZXJyb3JzIGFuZCBzdG9wIHRoZSBib290LgorICovCitzdGF0aWMgYm9vbCBj aGVja19zaWdzID0gZmFsc2U7CisKK3N0YXRpYyB2b2lkCityZWdpc3Rlcl9hcHBlbmRlZF9zaWdu YXR1cmVzX2NtZCAodm9pZCk7CitzdGF0aWMgdm9pZAordW5yZWdpc3Rlcl9hcHBlbmRlZF9zaWdu YXR1cmVzX2NtZCAodm9pZCk7CitzdGF0aWMgdm9pZAorZnJlZV9kYl9saXN0ICh2b2lkKTsKK3N0 YXRpYyB2b2lkCitidWlsZF9zdGF0aWNfZGJfbGlzdCAodm9pZCk7CisKK3N0YXRpYyBjb25zdCBj aGFyICoKK2dydWJfZW52X3JlYWRfc2VjIChzdHJ1Y3QgZ3J1Yl9lbnZfdmFyICp2YXIgX19hdHRy aWJ1dGVfXyAoKHVudXNlZCkpLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnZhbCBf X2F0dHJpYnV0ZV9fICgodW51c2VkKSkpCit7CisgIGlmIChjaGVja19zaWdzID09IHRydWUpCisg ICAgcmV0dXJuICJlbmZvcmNlIjsKKworICByZXR1cm4gIm5vIjsKK30KKworc3RhdGljIGNoYXIg KgorZ3J1Yl9lbnZfd3JpdGVfc2VjIChzdHJ1Y3QgZ3J1Yl9lbnZfdmFyICp2YXIgX19hdHRyaWJ1 dGVfXyAoKHVudXNlZCkpLCBjb25zdCBjaGFyICp2YWwpCit7CisgIGNoYXIgKnJldDsKKworICAv KgorICAgKiBEbyBub3QgYWxsb3cgdGhlIHZhbHVlIHRvIGJlIGNoYW5nZWQgSWYgc2lnbmF0dXJl IHZlcmlmaWNhdGlvbiBpcworICAgKiAoY2hlY2tfc2lncyBpcyBzZXQgdG8gZW5mb3JjZSkgZW5h YmxlZCBhbmQgR1JVQiBpcyBsb2NrZWQgZG93bi4KKyAgICovCisgIGlmIChjaGVja19zaWdzID09 IHRydWUgJiYgZ3J1Yl9pc19sb2NrZG93biAoKSA9PSBHUlVCX0xPQ0tET1dOX0VOQUJMRUQpCisg ICAgeworICAgICAgcmV0ID0gZ3J1Yl9zdHJkdXAgKCJlbmZvcmNlIik7CisgICAgICBpZiAocmV0 ID09IE5VTEwpCisgICAgICAgIGdydWJfZXJyb3IgKEdSVUJfRVJSX09VVF9PRl9NRU1PUlksICJj b3VsZCBub3QgZHVwbGljYXRlIGEgc3RyaW5nIGVuZm9yY2UiKTsKKworICAgICAgcmV0dXJuIHJl dDsKKyAgICB9CisKKyAgaWYgKCgqdmFsID09ICcxJykgfHwgKCp2YWwgPT0gJ2UnKSkKKyAgICBj aGVja19zaWdzID0gdHJ1ZTsKKyAgZWxzZSBpZiAoKCp2YWwgPT0gJzAnKSB8fCAoKnZhbCA9PSAn bicpKQorICAgIGNoZWNrX3NpZ3MgPSBmYWxzZTsKKworICByZXQgPSBncnViX3N0cmR1cCAoZ3J1 Yl9lbnZfcmVhZF9zZWMgKE5VTEwsIE5VTEwpKTsKKyAgaWYgKHJldCA9PSBOVUxMKQorICAgIGdy dWJfZXJyb3IgKEdSVUJfRVJSX09VVF9PRl9NRU1PUlksICJjb3VsZCBub3QgZHVwbGljYXRlIGEg c3RyaW5nICVzIiwKKyAgICAgICAgICAgICAgICBncnViX2Vudl9yZWFkX3NlYyAoTlVMTCwgTlVM TCkpOworCisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBib29sCitpc19jZXJ0X21hdGNoIChj b25zdCBzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSAqZGlzdHJ1c3RlZF9jZXJ0LAorICAgICAgICAg ICAgICAgY29uc3Qgc3RydWN0IHg1MDlfY2VydGlmaWNhdGUgKmRiX2NlcnQpCit7CisgIGlmIChn cnViX21lbWNtcCAoZGlzdHJ1c3RlZF9jZXJ0LT5zdWJqZWN0LCBkYl9jZXJ0LT5zdWJqZWN0LCBk Yl9jZXJ0LT5zdWJqZWN0X2xlbikgPT0gMAorICAgICAgJiYgZ3J1Yl9tZW1jbXAgKGRpc3RydXN0 ZWRfY2VydC0+aXNzdWVyLCBkYl9jZXJ0LT5pc3N1ZXIsIGRiX2NlcnQtPmlzc3Vlcl9sZW4pID09 IDAKKyAgICAgICYmIGdydWJfbWVtY21wIChkaXN0cnVzdGVkX2NlcnQtPnNlcmlhbCwgZGJfY2Vy dC0+c2VyaWFsLCBkYl9jZXJ0LT5zZXJpYWxfbGVuKSA9PSAwCisgICAgICAmJiBncnViX21lbWNt cCAoZGlzdHJ1c3RlZF9jZXJ0LT5tcGlzWzBdLCBkYl9jZXJ0LT5tcGlzWzBdLCBzaXplb2YgKGRi X2NlcnQtPm1waXNbMF0pKSA9PSAwCisgICAgICAmJiBncnViX21lbWNtcCAoZGlzdHJ1c3RlZF9j ZXJ0LT5tcGlzWzFdLCBkYl9jZXJ0LT5tcGlzWzFdLCBzaXplb2YgKGRiX2NlcnQtPm1waXNbMV0p KSA9PSAwKQorICAgIHJldHVybiB0cnVlOworCisgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGlj IGdydWJfZXJyX3QKK2ZpbGVfcmVhZF93aG9sZSAoZ3J1Yl9maWxlX3QgZmlsZSwgZ3J1Yl91aW50 OF90ICoqYnVmLCBncnViX3NpemVfdCAqbGVuKQoreworICBncnViX29mZl90IGZ1bGxfZmlsZV9z aXplOworICBncnViX3NpemVfdCBmaWxlX3NpemUsIHRvdGFsX3JlYWRfc2l6ZSA9IDA7CisgIGdy dWJfc3NpemVfdCByZWFkX3NpemU7CisKKyAgZnVsbF9maWxlX3NpemUgPSBncnViX2ZpbGVfc2l6 ZSAoZmlsZSk7CisgIGlmIChmdWxsX2ZpbGVfc2l6ZSA9PSBHUlVCX0ZJTEVfU0laRV9VTktOT1dO KQorICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfQVJHVU1FTlQsCisgICAgICAg ICAgICAgICAgICAgICAgICJjYW5ub3QgcmVhZCBhIGZpbGUgb2YgdW5rbm93biBzaXplIGludG8g YSBidWZmZXIiKTsKKworICBpZiAoZnVsbF9maWxlX3NpemUgPiBHUlVCX1NJWkVfTUFYKQorICAg IHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9PVVRfT0ZfUkFOR0UsCisgICAgICAgICAgICAg ICAgICAgICAgICJmaWxlIGlzIHRvbyBsYXJnZSB0byByZWFkOiAlIiBQUkl1R1JVQl9VSU5UNjRf VCAiIGJ5dGVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgZnVsbF9maWxlX3NpemUpOworCisg IGZpbGVfc2l6ZSA9IChncnViX3NpemVfdCkgZnVsbF9maWxlX3NpemU7CisgICpidWYgPSBncnVi X21hbGxvYyAoZmlsZV9zaXplKTsKKyAgaWYgKCpidWYgPT0gTlVMTCkKKyAgICByZXR1cm4gZ3J1 Yl9lcnJvciAoR1JVQl9FUlJfT1VUX09GX01FTU9SWSwKKyAgICAgICAgICAgICAgICAgICAgICAg ImNvdWxkIG5vdCBhbGxvY2F0ZSBmaWxlIGRhdGEgYnVmZmVyIHNpemUgJSIgUFJJdUdSVUJfU0la RSwKKyAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9zaXplKTsKKworICB3aGlsZSAodG90YWxf cmVhZF9zaXplIDwgZmlsZV9zaXplKQorICAgIHsKKyAgICAgIHJlYWRfc2l6ZSA9IGdydWJfZmls ZV9yZWFkIChmaWxlLCAqYnVmICsgdG90YWxfcmVhZF9zaXplLCBmaWxlX3NpemUgLSB0b3RhbF9y ZWFkX3NpemUpOworICAgICAgaWYgKHJlYWRfc2l6ZSA8IDApCisgICAgICAgIHsKKyAgICAgICAg ICBncnViX2ZyZWUgKCpidWYpOworICAgICAgICAgIHJldHVybiBncnViX2Vycm5vOworICAgICAg ICB9CisgICAgICBlbHNlIGlmIChyZWFkX3NpemUgPT0gMCkKKyAgICAgICAgeworICAgICAgICAg IGdydWJfZnJlZSAoKmJ1Zik7CisgICAgICAgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJS X0lPLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY291bGQgbm90IHJlYWQgZnVsbCBm aWxlIHNpemUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKCUiIFBSSXVHUlVCX1NJ WkUgIiksIG9ubHkgJSIgUFJJdUdSVUJfU0laRSAiIGJ5dGVzIHJlYWQiLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmaWxlX3NpemUsIHRvdGFsX3JlYWRfc2l6ZSk7CisgICAgICAgIH0K KworICAgICAgdG90YWxfcmVhZF9zaXplICs9IHJlYWRfc2l6ZTsKKyAgICB9CisKKyAgKmxlbiA9 IGZpbGVfc2l6ZTsKKworICByZXR1cm4gR1JVQl9FUlJfTk9ORTsKK30KKworc3RhdGljIGdydWJf ZXJyX3QKK2V4dHJhY3RfYXBwZW5kZWRfc2lnbmF0dXJlIChjb25zdCBncnViX3VpbnQ4X3QgKmJ1 ZiwgZ3J1Yl9zaXplX3QgYnVmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgZ3J1Yl9hcHBlbmRlZF9zaWduYXR1cmUgKnNpZykKK3sKKyAgZ3J1Yl9zaXplX3QgcGtjczdf c2l6ZTsKKyAgZ3J1Yl9zaXplX3QgcmVtYWluaW5nX2xlbjsKKyAgY29uc3QgZ3J1Yl91aW50OF90 ICphcHBzaWdkYXRhID0gYnVmICsgYnVmc2l6ZSAtIGdydWJfc3RybGVuIChtYWdpYyk7CisKKyAg aWYgKGJ1ZnNpemUgPCBncnViX3N0cmxlbiAobWFnaWMpKQorICAgIHJldHVybiBncnViX2Vycm9y IChHUlVCX0VSUl9CQURfU0lHTkFUVVJFLCAiZmlsZSB0b28gc2hvcnQgZm9yIHNpZ25hdHVyZSBt YWdpYyIpOworCisgIGlmIChncnViX3N0cm5jbXAgKChjb25zdCBjaGFyICopIGFwcHNpZ2RhdGEs IG1hZ2ljLCBzaXplb2YgKG1hZ2ljKSAtIDEpKQorICAgIHJldHVybiBncnViX2Vycm9yIChHUlVC X0VSUl9CQURfU0lHTkFUVVJFLCAibWlzc2luZyBvciBpbnZhbGlkIHNpZ25hdHVyZSBtYWdpYyIp OworCisgIHJlbWFpbmluZ19sZW4gPSBidWZzaXplIC0gZ3J1Yl9zdHJsZW4gKG1hZ2ljKTsKKwor ICBpZiAocmVtYWluaW5nX2xlbiA8IHNpemVvZiAoc3RydWN0IG1vZHVsZV9zaWduYXR1cmUpKQor ICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfU0lHTkFUVVJFLCAiZmlsZSB0b28g c2hvcnQgZm9yIHNpZ25hdHVyZSBtZXRhZGF0YSIpOworCisgIGFwcHNpZ2RhdGEgLT0gc2l6ZW9m IChzdHJ1Y3QgbW9kdWxlX3NpZ25hdHVyZSk7CisgIC8qIEV4dHJhY3QgdGhlIG1ldGFkYXRhLiAq LworICBncnViX21lbWNweSAoJihzaWctPnNpZ19tZXRhZGF0YSksIGFwcHNpZ2RhdGEsIHNpemVv ZiAoc3RydWN0IG1vZHVsZV9zaWduYXR1cmUpKTsKKyAgcmVtYWluaW5nX2xlbiAtPSBzaXplb2Yg KHN0cnVjdCBtb2R1bGVfc2lnbmF0dXJlKTsKKworICBpZiAoc2lnLT5zaWdfbWV0YWRhdGEuaWRf dHlwZSAhPSBHUlVCX1BLRVlfSURfUEtDUzcpCisgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJf RVJSX0JBRF9TSUdOQVRVUkUsICJ3cm9uZyBzaWduYXR1cmUgdHlwZSIpOworCisgIHBrY3M3X3Np emUgPSBncnViX2JlX3RvX2NwdTMyIChzaWctPnNpZ19tZXRhZGF0YS5zaWdfbGVuKTsKKworICBp ZiAocGtjczdfc2l6ZSA+IHJlbWFpbmluZ19sZW4pCisgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdS VUJfRVJSX0JBRF9TSUdOQVRVUkUsICJmaWxlIHRvbyBzaG9ydCBmb3IgUEtDUyM3IG1lc3NhZ2Ui KTsKKworICBncnViX2RwcmludGYgKCJhcHBlbmRlZHNpZyIsICJzaWcgbGVuICUiIFBSSXVHUlVC X1NJWkUgIlxuIiwgcGtjczdfc2l6ZSk7CisKKyAgc2lnLT5zaWduYXR1cmVfbGVuID0gZ3J1Yl9z dHJsZW4gKG1hZ2ljKSArIHNpemVvZiAoc3RydWN0IG1vZHVsZV9zaWduYXR1cmUpICsgcGtjczdf c2l6ZTsKKyAgLyogUmV3aW5kIHBvaW50ZXIgYW5kIHBhcnNlIHBrY3M3IGRhdGEuICovCisgIGFw cHNpZ2RhdGEgLT0gcGtjczdfc2l6ZTsKKworICByZXR1cm4gcGFyc2VfcGtjczdfc2lnbmVkRGF0 YSAoYXBwc2lnZGF0YSwgcGtjczdfc2l6ZSwgJnNpZy0+cGtjczcpOworfQorCisvKgorICogR2l2 ZW4gYSBoYXNoIHZhbHVlICdodmFsJywgb2YgaGFzaCBzcGVjaWZpY2F0aW9uICdoYXNoJywgcHJl cGFyZQorICogdGhlIFMtZXhwcmVzc2lvbnMgKHNleHApIGFuZCBwZXJmb3JtIHRoZSBzaWduYXR1 cmUgdmVyaWZpY2F0aW9uLgorICovCitzdGF0aWMgZ3J1Yl9lcnJfdAordmVyaWZ5X3NpZ25hdHVy ZSAoY29uc3QgZ2NyeV9tcGlfdCAqcGttcGksIGNvbnN0IGdjcnlfbXBpX3QgaG1waSwKKyAgICAg ICAgICAgICAgICAgIGNvbnN0IGdjcnlfbWRfc3BlY190ICpoYXNoLCBjb25zdCBncnViX3VpbnQ4 X3QgKmh2YWwpCit7CisgIGdjcnlfc2V4cF90IGhzZXhwLCBwdWJrZXksIHNpZzsKKyAgZ3J1Yl9z aXplX3QgZXJyb2Y7CisKKyAgaWYgKF9nY3J5X3NleHBfYnVpbGQoJmhzZXhwLCAmZXJyb2YsICIo ZGF0YSAoZmxhZ3MgJXMpIChoYXNoICVzICViKSkiLCAicGtjczEiLAorICAgICAgICAgICAgICAg ICAgICAgICBoYXNoLT5uYW1lLCBoYXNoLT5tZGxlbiwgaHZhbCkgIT0gR1BHX0VSUl9OT19FUlJP UikKKyAgICByZXR1cm4gR1JVQl9FUlJfQkFEX1NJR05BVFVSRTsKKworICBpZiAoX2djcnlfc2V4 cF9idWlsZCgmcHVia2V5LCAmZXJyb2YsICIocHVibGljLWtleSAoZHNhIChuICVNKSAoZSAlTSkp KSIsCisgICAgICAgICAgICAgICAgICAgICAgIHBrbXBpWzBdLCBwa21waVsxXSkgIT0gR1BHX0VS Ul9OT19FUlJPUikKKyAgICByZXR1cm4gR1JVQl9FUlJfQkFEX1NJR05BVFVSRTsKKworICBpZiAo X2djcnlfc2V4cF9idWlsZCgmc2lnLCAmZXJyb2YsICIoc2lnLXZhbCAocnNhIChzICVNKSkpIiwg aG1waSkgIT0gR1BHX0VSUl9OT19FUlJPUikKKyAgICByZXR1cm4gR1JVQl9FUlJfQkFEX1NJR05B VFVSRTsKKworICBfZ2NyeV9zZXhwX2R1bXAoc2lnKTsKKyAgX2djcnlfc2V4cF9kdW1wKGhzZXhw KTsKKyAgX2djcnlfc2V4cF9kdW1wKHB1YmtleSk7CisKKyAgaWYgKGdydWJfY3J5cHRvX3BrX3Jz YS0+dmVyaWZ5IChzaWcsIGhzZXhwLCBwdWJrZXkpICE9IEdQR19FUlJfTk9fRVJST1IpCisgICAg cmV0dXJuIEdSVUJfRVJSX0JBRF9TSUdOQVRVUkU7CisKKyAgcmV0dXJuIEdSVUJfRVJSX05PTkU7 Cit9CisKK3N0YXRpYyBncnViX2Vycl90CitncnViX3ZlcmlmeV9hcHBlbmRlZF9zaWduYXR1cmUg KGNvbnN0IGdydWJfdWludDhfdCAqYnVmLCBncnViX3NpemVfdCBidWZzaXplKQoreworICBncnVi X2Vycl90IGVycjsKKyAgZ3J1Yl9zaXplX3QgZGF0YXNpemU7CisgIHZvaWQgKmNvbnRleHQ7Cisg IHVuc2lnbmVkIGNoYXIgKmhhc2g7CisgIHN0cnVjdCB4NTA5X2NlcnRpZmljYXRlICpwazsKKyAg c3RydWN0IGdydWJfYXBwZW5kZWRfc2lnbmF0dXJlIHNpZzsKKyAgc3RydWN0IHBrY3M3X3NpZ25l ckluZm8gKnNpOworICBncnViX3VpbnQzMl90IGk7CisKKyAgaWYgKCFkYi5jZXJ0X2VudHJpZXMp CisgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9TSUdOQVRVUkUsICJubyB0cnVz dGVkIGtleXMgdG8gdmVyaWZ5IGFnYWluc3QiKTsKKworICBlcnIgPSBleHRyYWN0X2FwcGVuZGVk X3NpZ25hdHVyZSAoYnVmLCBidWZzaXplLCAmc2lnKTsKKyAgaWYgKGVyciAhPSBHUlVCX0VSUl9O T05FKQorICAgIHJldHVybiBlcnI7CisKKyAgYXBwZW5kX3NpZ19sZW4gPSBzaWcuc2lnbmF0dXJl X2xlbjsKKyAgZGF0YXNpemUgPSBidWZzaXplIC0gc2lnLnNpZ25hdHVyZV9sZW47CisKKyAgLyog VmVyaWZ5IHNpZ25hdHVyZSB1c2luZyB0cnVzdGVkIGtleXMgZnJvbSBkYiBsaXN0LiAqLworICBm b3IgKGkgPSAwOyBpIDwgc2lnLnBrY3M3LnNpZ25lckluZm9fY291bnQ7IGkrKykKKyAgICB7Cisg ICAgICAvKgorICAgICAgICogVGhpcyBjb3VsZCBiZSBvcHRpbWlzZWQgaW4gYSBjb3VwbGUgb2Yg d2F5czoKKyAgICAgICAqIC0gd2UgY291bGQgb25seSBjb21wdXRlIGhhc2hlcyBvbmNlIHBlciBo YXNoIHR5cGUuCisgICAgICAgKiAtIHdlIGNvdWxkIHRyYWNrIHNpZ25lciBpbmZvcm1hdGlvbiBh bmQgb25seSB2ZXJpZnkgd2hlcmUgSURzIG1hdGNoLgorICAgICAgICogRm9yIG5vdyB3ZSBkbyB0 aGUgbmFpdmUgTyh0cnVzdGVkIGtleXMgKiBwa2NzNyBzaWduZXJzKSBhcHByb2FjaC4KKyAgICAg ICAqLworICAgICAgc2kgPSAmc2lnLnBrY3M3LnNpZ25lckluZm9zW2ldOworICAgICAgY29udGV4 dCA9IGdydWJfemFsbG9jIChzaS0+aGFzaC0+Y29udGV4dHNpemUpOworICAgICAgaWYgKGNvbnRl eHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIGdydWJfZXJybm87CisKKyAgICAgIHNpLT5oYXNo LT5pbml0IChjb250ZXh0LCAwKTsKKyAgICAgIHNpLT5oYXNoLT53cml0ZSAoY29udGV4dCwgYnVm LCBkYXRhc2l6ZSk7CisgICAgICBzaS0+aGFzaC0+ZmluYWwgKGNvbnRleHQpOworICAgICAgaGFz aCA9IHNpLT5oYXNoLT5yZWFkIChjb250ZXh0KTsKKworICAgICAgZ3J1Yl9kcHJpbnRmICgiYXBw ZW5kZWRzaWciLCAiZGF0YSBzaXplICUiIFBSSXVHUlVCX1NJWkUgIiwgc2lnbmVyICVkIGhhc2gg JTAyeCUwMnglMDJ4JTAyeC4uLlxuIiwKKyAgICAgICAgICAgICAgICAgICAgZGF0YXNpemUsIGks IGhhc2hbMF0sIGhhc2hbMV0sIGhhc2hbMl0sIGhhc2hbM10pOworCisgICAgICBmb3IgKHBrID0g ZGIuY2VydHM7IHBrICE9IE5VTEw7IHBrID0gcGstPm5leHQpCisgICAgICAgIHsKKyAgICAgICAg ICBlcnIgPSB2ZXJpZnlfc2lnbmF0dXJlIChway0+bXBpcywgc2ktPnNpZ19tcGksIHNpLT5oYXNo LCBoYXNoKTsKKyAgICAgICAgICBpZiAoZXJyID09IEdSVUJfRVJSX05PTkUpCisgICAgICAgICAg ICB7CisgICAgICAgICAgICAgIGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2lnIiwgInZlcmlmeSBz aWduZXIgJWQgd2l0aCBrZXkgJyVzJyBzdWNjZWVkZWRcbiIsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaSwgcGstPnN1YmplY3QpOworICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg ICAgIH0KKworICAgICAgICAgIGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2lnIiwgInZlcmlmeSBz aWduZXIgJWQgd2l0aCBrZXkgJyVzJyBmYWlsZWRcbiIsCisgICAgICAgICAgICAgICAgICAgICAg ICBpLCBway0+c3ViamVjdCk7CisgICAgICAgIH0KKworICAgICAgZ3J1Yl9mcmVlIChjb250ZXh0 KTsKKyAgICAgIGlmIChlcnIgPT0gR1JVQl9FUlJfTk9ORSkKKyAgICAgICAgYnJlYWs7CisgICAg fQorCisgIHBrY3M3X3NpZ25lZERhdGFfcmVsZWFzZSAoJnNpZy5wa2NzNyk7CisKKyAgaWYgKGVy ciAhPSBHUlVCX0VSUl9OT05FKQorICAgIHJldHVybiBncnViX2Vycm9yIChlcnIsICJmYWlsZWQg dG8gdmVyaWZ5IHNpZ25hdHVyZSBhZ2FpbnN0IGEgdHJ1c3RlZCBrZXkiKTsKKworICByZXR1cm4g ZXJyOworfQorCitzdGF0aWMgZ3J1Yl9lcnJfdAorcmVhZF9jZXJ0X2Zyb21fZmlsZSAoZ3J1Yl9m aWxlX3QgY2VydF9maWxlLCBzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSAqKmNlcnQpCit7CisgIGdy dWJfZXJyX3QgZXJyOworICBncnViX3VpbnQ4X3QgKmJ1ZiA9IE5VTEw7CisgIGdydWJfc2l6ZV90 IGJ1Zl9zaXplID0gMDsKKworICAqY2VydCA9IGdydWJfemFsbG9jIChzaXplb2YgKHN0cnVjdCB4 NTA5X2NlcnRpZmljYXRlKSk7CisgIGlmICgqY2VydCA9PSBOVUxMKQorICAgICAgcmV0dXJuIGdy dWJfZXJyb3IgKEdSVUJfRVJSX09VVF9PRl9NRU1PUlksICJjb3VsZCBub3QgYWxsb2NhdGUgbWVt b3J5IGZvciBjZXJ0aWZpY2F0ZSIpOworCisgIGVyciA9IGZpbGVfcmVhZF93aG9sZSAoY2VydF9m aWxlLCAmYnVmLCAmYnVmX3NpemUpOworICBpZiAoZXJyICE9IEdSVUJfRVJSX05PTkUpCisgICAg cmV0dXJuIGVycjsKKworICAvKgorICAgKiBJZiBzaWduYXR1cmUgdmVyaWZpY2F0aW9uIGlzIGVu YWJsZWQgYW5kIEdSVUIgaXMgbG9ja2VkIGRvd24sCisgICAqIG9idGFpbiB0aGUgYWN0dWFsIGNl cnRpZmljYXRlIHNpemUgYnkgc3VidHJhY3RpbmcgdGhlIGFwcGVuZGVkCisgICAqIHNpZ25hdHVy ZSBzaXplIGZyb20gdGhlIGNlcnRpZmljYXRlIHNpemUgYmVjYXVzZQorICAgKiB0aGUgY2VydGlm aWNhdGUgaGFzIGFuIGFwcGVuZGVkIHNpZ25hdHVyZSwgYW5kIHRoaXMgYWN0dWFsIGNlcnRpZmlj YXRlIHNpemUgaXMKKyAgICogdXNlZCB0byBnZXQgdGhlIFguNTA5IGNlcnRpZmljYXRlLgorICAg Ki8KKyAgaWYgKGNoZWNrX3NpZ3MgPT0gdHJ1ZSAmJiBncnViX2lzX2xvY2tkb3duICgpID09IEdS VUJfTE9DS0RPV05fRU5BQkxFRCkKKyAgICBidWZfc2l6ZSAtPSBhcHBlbmRfc2lnX2xlbjsKKwor ICBlcnIgPSBwYXJzZV94NTA5X2NlcnRpZmljYXRlIChidWYsIGJ1Zl9zaXplLCAqY2VydCk7Cisg IGdydWJfZnJlZSAoYnVmKTsKKworICByZXR1cm4gZXJyOworfQorCitzdGF0aWMgYm9vbAoraXNf Y2VydF9wcmVzZW50X2luX2RiIChjb25zdCBzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSAqY2VydF9p bikKK3sKKyAgc3RydWN0IHg1MDlfY2VydGlmaWNhdGUgKmNlcnQ7CisKKyAgZm9yIChjZXJ0ID0g ZGIuY2VydHM7IGNlcnQgIT0gTlVMTDsgY2VydCA9IGNlcnQtPm5leHQpCisgICAgaWYgKGlzX2Nl cnRfbWF0Y2ggKGNlcnQsIGNlcnRfaW4pID09IHRydWUpCisgICAgICByZXR1cm4gdHJ1ZTsKKwor ICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyB2b2lkCityZW1vdmVfY2VydF9mcm9tX2RiIChj b25zdCBzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSAqY2VydCkKK3sKKyAgZ3J1Yl91aW50MzJfdCBp ID0gMTsKKyAgc3RydWN0IHg1MDlfY2VydGlmaWNhdGUgKmN1cnJfY2VydCwgKnByZXZfY2VydDsK KworICBmb3IgKGN1cnJfY2VydCA9IHByZXZfY2VydCA9IGRiLmNlcnRzOyBjdXJyX2NlcnQgIT0g TlVMTDsgY3Vycl9jZXJ0ID0gY3Vycl9jZXJ0LT5uZXh0LCBpKyspCisgICAgeworICAgICAgaWYg KGlzX2NlcnRfbWF0Y2ggKGN1cnJfY2VydCwgY2VydCkgPT0gdHJ1ZSkKKyAgICAgICAgeworICAg ICAgICAgIGlmIChpID09IDEpIC8qIE1hdGNoIHdpdGggZmlyc3QgY2VydGlmaWNhdGUgaW4gdGhl IGRiIGxpc3QuICovCisgICAgICAgICAgICBkYi5jZXJ0cyA9IGN1cnJfY2VydC0+bmV4dDsKKyAg ICAgICAgICBlbHNlCisgICAgICAgICAgICBwcmV2X2NlcnQtPm5leHQgPSBjdXJyX2NlcnQtPm5l eHQ7CisKKyAgICAgICAgICBncnViX2RwcmludGYgKCJhcHBlbmRlZHNpZyIsCisgICAgICAgICAg ICAgICAgICAgICAgICAicmVtb3ZlZCBkaXN0cnVzdGVkIGNlcnRpZmljYXRlIHdpdGggQ046ICVz IGZyb20gdGhlIGRiIGxpc3RcbiIsIGN1cnJfY2VydC0+c3ViamVjdCk7CisgICAgICAgICAgY3Vy cl9jZXJ0LT5uZXh0ID0gTlVMTDsKKyAgICAgICAgICBjZXJ0aWZpY2F0ZV9yZWxlYXNlIChjdXJy X2NlcnQpOworICAgICAgICAgIGdydWJfZnJlZSAoY3Vycl9jZXJ0KTsKKyAgICAgICAgICBicmVh azsKKwl9CisgICAgICBlbHNlCisgICAgICAgIHByZXZfY2VydCA9IGN1cnJfY2VydDsKKyAgICB9 Cit9CisKK3N0YXRpYyBncnViX2Vycl90CitncnViX2NtZF92ZXJpZnlfc2lnbmF0dXJlIChncnVi X2NvbW1hbmRfdCBjbWQgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLCBpbnQgYXJnYywgY2hhciAq KmFyZ3MpCit7CisgIGdydWJfZmlsZV90IHNpZ25lZF9maWxlOworICBncnViX2Vycl90IGVycjsK KyAgZ3J1Yl91aW50OF90ICpzaWduZWRfZGF0YSA9IE5VTEw7CisgIGdydWJfc2l6ZV90IHNpZ25l ZF9kYXRhX3NpemUgPSAwOworCisgIGlmIChhcmdjICE9IDEpCisgICAgcmV0dXJuIGdydWJfZXJy b3IgKEdSVUJfRVJSX0JBRF9BUkdVTUVOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgImEgc2ln bmVkIGZpbGUgaXMgZXhwZWN0ZWRcbkV4YW1wbGU6XG5cdGFwcGVuZF92ZXJpZnkgPFNJR05FRCBG SUxFPlxuIik7CisKKyAgaWYgKCphcmdzID09IE5VTEwpCisgICAgcmV0dXJuIGdydWJfZXJyb3Ig KEdSVUJfRVJSX0JBRF9GSUxFTkFNRSwgIm1pc3Npbmcgc2lnbmVkIGZpbGUiKTsKKworICBncnVi X2RwcmludGYgKCJhcHBlbmRlZHNpZyIsICJ2ZXJpZnlpbmcgJXNcbiIsIGFyZ3NbMF0pOworCisg IHNpZ25lZF9maWxlID0gZ3J1Yl9maWxlX29wZW4gKGFyZ3NbMF0sIEdSVUJfRklMRV9UWVBFX1ZF UklGWV9TSUdOQVRVUkUpOworICBpZiAoc2lnbmVkX2ZpbGUgPT0gTlVMTCkKKyAgICByZXR1cm4g Z3J1Yl9lcnJvciAoR1JVQl9FUlJfRklMRV9OT1RfRk9VTkQsICJjb3VsZCBub3Qgb3BlbiAlcyBm aWxlIiwgYXJnc1swXSk7CisKKyAgZXJyID0gZmlsZV9yZWFkX3dob2xlIChzaWduZWRfZmlsZSwg JnNpZ25lZF9kYXRhLCAmc2lnbmVkX2RhdGFfc2l6ZSk7CisgIGlmIChlcnIgPT0gR1JVQl9FUlJf Tk9ORSkKKyAgICBlcnIgPSBncnViX3ZlcmlmeV9hcHBlbmRlZF9zaWduYXR1cmUgKHNpZ25lZF9k YXRhLCBzaWduZWRfZGF0YV9zaXplKTsKKworICBncnViX2ZpbGVfY2xvc2UgKHNpZ25lZF9maWxl KTsKKyAgZ3J1Yl9mcmVlIChzaWduZWRfZGF0YSk7CisKKyAgcmV0dXJuIGVycjsKK30KKworLyoK KyAqIEFkZCB0aGUgdHJ1c3RlZCBjZXJ0aWZpY2F0ZSB0byB0aGUgZGIgbGlzdCBpZiBpdCBpcyBu b3QgYWxyZWFkeSBwcmVzZW50LgorICogTm90ZTotIFdoZW4gc2lnbmF0dXJlIHZlcmlmaWNhdGlv biBpcyBlbmFibGVkLCB0aGlzIGNvbW1hbmQgb25seSBhY2NlcHRzIHRoZQorICogdHJ1c3RlZCBj ZXJ0aWZpY2F0ZSB0aGF0IGlzIHNpZ25lZCB3aXRoIGFuIGFwcGVuZGVkIHNpZ25hdHVyZS4KKyAq IFRoZSBzaWduYXR1cmUgaXMgdmVyaWZpZWQgYnkgdGhlIGFwcGVuZGVkc2lnIG1vZHVsZS4gSWYg dmVyaWZpY2F0aW9uIHN1Y2NlZWRzLAorICogdGhlIGNlcnRpZmljYXRlIGlzIGFkZGVkIHRvIHRo ZSBkYiBsaXN0LiBPdGhlcndpc2UsIGFuIGVycm9yIGlzIHBvc3RlZCBhbmQKKyAqIHRoZSBjZXJ0 aWZpY2F0ZSBpcyBub3QgYWRkZWQuCisgKiBXaGVuIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gaXMg ZGlzYWJsZWQsIGl0IGFjY2VwdHMgdGhlIHRydXN0ZWQgY2VydGlmaWNhdGUgd2l0aG91dAorICog YW4gYXBwZW5kZWQgc2lnbmF0dXJlIGFuZCBhZGQgaXQgdG8gdGhlIGRiIGxpc3QuCisgKgorICog QWxzbywgbm90ZSB0aGF0IHRoZSBhZGRpbmcgb2YgdGhlIHRydXN0ZWQgY2VydGlmaWNhdGUgdXNp bmcgdGhpcyBjb21tYW5kIGRvZXMKKyAqIG5vdCBwZXJzaXN0IGFjcm9zcyByZWJvb3RzLgorICov CitzdGF0aWMgZ3J1Yl9lcnJfdAorZ3J1Yl9jbWRfZGJfY2VydCAoZ3J1Yl9jb21tYW5kX3QgY21k IF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwgaW50IGFyZ2MsIGNoYXIgKiphcmdzKQoreworICBn cnViX2Vycl90IGVycjsKKyAgZ3J1Yl9maWxlX3QgY2VydF9maWxlOworICBzdHJ1Y3QgeDUwOV9j ZXJ0aWZpY2F0ZSAqY2VydCA9IE5VTEw7CisKKyAgaWYgKGFyZ2MgIT0gMSkKKyAgICByZXR1cm4g Z3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0FSR1VNRU5ULAorICAgICAgICAgICAgICAgICAgICAg ICAiYSB0cnVzdGVkIFguNTA5IGNlcnRpZmljYXRlIGZpbGUgaXMgZXhwZWN0ZWQgaW4gREVSIGZv cm1hdFxuIgorICAgICAgICAgICAgICAgICAgICAgICAiRXhhbXBsZTpcblx0YXBwZW5kX2FkZF9k Yl9jZXJ0IDxYNTA5X0NFUlRJRklDQVRFPlxuIik7CisKKyAgaWYgKCphcmdzID09IE5VTEwpCisg ICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9GSUxFTkFNRSwgIm1pc3NpbmcgdHJ1 c3RlZCBYLjUwOSBjZXJ0aWZpY2F0ZSBmaWxlIik7CisKKyAgY2VydF9maWxlID0gZ3J1Yl9maWxl X29wZW4gKGFyZ3NbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUlVCX0ZJTEVf VFlQRV9DRVJUSUZJQ0FURV9UUlVTVCB8IEdSVUJfRklMRV9UWVBFX05PX0RFQ09NUFJFU1MpOwor ICBpZiAoY2VydF9maWxlID09IE5VTEwpCisgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJS X0JBRF9GSUxFX1RZUEUsICJjb3VsZCBub3Qgb3BlbiAlcyBmaWxlIiwgYXJnc1swXSk7CisKKyAg ZXJyID0gcmVhZF9jZXJ0X2Zyb21fZmlsZSAoY2VydF9maWxlLCAmY2VydCk7CisgIGdydWJfZmls ZV9jbG9zZSAoY2VydF9maWxlKTsKKyAgaWYgKGVyciAhPSBHUlVCX0VSUl9OT05FKQorICAgIHsK KyAgICAgIGdydWJfZnJlZSAoY2VydCk7CisgICAgICByZXR1cm4gZXJyOworICAgIH0KKworICBp ZiAoaXNfY2VydF9wcmVzZW50X2luX2RiIChjZXJ0KSA9PSB0cnVlKQorICAgIHsKKyAgICAgIGNl cnRpZmljYXRlX3JlbGVhc2UgKGNlcnQpOworICAgICAgZ3J1Yl9mcmVlIChjZXJ0KTsKKyAgICAg IHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9FWElTVFMsCisgICAgICAgICAgICAgICAgICAg ICAgICAgImNvdWxkIG5vdCBhZGQgdGhlIGNlcnRpZmljYXRlLCBhcyBpdCBpcyBwcmVzZW50IGlu IHRoZSBkYiBsaXN0Iik7CisgICAgfQorCisgIGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2lnIiwg ImFkZGVkIGNlcnRpZmljYXRlIHdpdGggQ046ICVzXG4iLCBjZXJ0LT5zdWJqZWN0KTsKKworICBj ZXJ0LT5uZXh0ID0gZGIuY2VydHM7CisgIGRiLmNlcnRzID0gY2VydDsKKyAgZGIuY2VydF9lbnRy aWVzKys7CisKKyAgcmV0dXJuIEdSVUJfRVJSX05PTkU7Cit9CisKKy8qCisgKiBSZW1vdmUgdGhl IGRpc3RydXN0ZWQgY2VydGlmaWNhdGUgZnJvbSB0aGUgZGIgbGlzdCBpZiBpdCBpcyBhbHJlYWR5 IHByZXNlbnQuCisgKiBOb3RlOi0gV2hlbiBzaWduYXR1cmUgdmVyaWZpY2F0aW9uIGlzIGVuYWJs ZWQsIHRoaXMgY29tbWFuZCBvbmx5IGFjY2VwdHMgdGhlCisgKiBkaXN0cnVzdGVkIGNlcnRpZmlj YXRlIHRoYXQgaXMgc2lnbmVkIHdpdGggYW4gYXBwZW5kZWQgc2lnbmF0dXJlLgorICogVGhlIHNp Z25hdHVyZSBpcyB2ZXJpZmllZCBieSB0aGUgYXBwZW5kZWQgc2lnIG1vZHVsZS4gSWYgdmVyaWZp Y2F0aW9uIHN1Y2NlZWRzLAorICogdGhlIGNlcnRpZmljYXRlIGlzIHJlbW92ZWQgZnJvbSB0aGUg ZGIgbGlzdC4gT3RoZXJ3aXNlLCBhbiBlcnJvciBpcyBwb3N0ZWQgYW5kCisgKiB0aGUgY2VydGlm aWNhdGUgaXMgbm90IHJlbW92ZWQuCisgKiBXaGVuIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gaXMg ZGlzYWJsZWQsIGl0IGFjY2VwdHMgdGhlIGRpc3RydXN0ZWQgY2VydGlmaWNhdGUKKyAqIHdpdGhv dXQgYW4gYXBwZW5kZWQgc2lnbmF0dXJlIGFuZCByZW1vdmVzIGl0IGZyb20gdGhlIGRiIGxpc3Qu CisgKgorICogQWxzbywgbm90ZSB0aGF0IHRoZSByZW1vdmFsIG9mIHRoZSBkaXN0cnVzdGVkIGNl cnRpZmljYXRlIHVzaW5nIHRoaXMgY29tbWFuZAorICogZG9lcyBub3QgcGVyc2lzdCBhY3Jvc3Mg cmVib290cy4KKyAqLworc3RhdGljIGdydWJfZXJyX3QKK2dydWJfY21kX2RieF9jZXJ0IChncnVi X2NvbW1hbmRfdCBjbWQgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLCBpbnQgYXJnYywgY2hhciAq KmFyZ3MpCit7CisgIGdydWJfZXJyX3QgZXJyOworICBncnViX2ZpbGVfdCBjZXJ0X2ZpbGU7Cisg IHN0cnVjdCB4NTA5X2NlcnRpZmljYXRlICpjZXJ0ID0gTlVMTDsKKworICBpZiAoYXJnYyAhPSAx KQorICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfQVJHVU1FTlQsCisgICAgICAg ICAgICAgICAgICAgICAgICJhIGRpc3RydXN0ZWQgWC41MDkgY2VydGlmaWNhdGUgZmlsZSBpcyBl eHBlY3RlZCBpbiBERVIgZm9ybWF0XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJFeGFtcGxl OlxuXHRhcHBlbmRfcm1fZGJ4X2NlcnQgPFg1MDlfQ0VSVElGSUNBVEU+XG4iKTsKKworICBpZiAo KmFyZ3MgPT0gTlVMTCkKKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0ZJTEVO QU1FLCAibWlzc2luZyBkaXN0cnVzdGVkIFguNTA5IGNlcnRpZmljYXRlIGZpbGUiKTsKKworICBj ZXJ0X2ZpbGUgPSBncnViX2ZpbGVfb3BlbiAoYXJnc1swXSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdSVUJfRklMRV9UWVBFX0NFUlRJRklDQVRFX1RSVVNUIHwgR1JVQl9GSUxFX1RZ UEVfTk9fREVDT01QUkVTUyk7CisgIGlmIChjZXJ0X2ZpbGUgPT0gTlVMTCkKKyAgICByZXR1cm4g Z3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0ZJTEVfVFlQRSwgImNvdWxkIG5vdCBvcGVuICVzIGZp bGUiLCBhcmdzWzBdKTsKKworICBlcnIgPSByZWFkX2NlcnRfZnJvbV9maWxlIChjZXJ0X2ZpbGUs ICZjZXJ0KTsKKyAgZ3J1Yl9maWxlX2Nsb3NlIChjZXJ0X2ZpbGUpOworICBpZiAoZXJyICE9IEdS VUJfRVJSX05PTkUpCisgICAgeworICAgICAgZ3J1Yl9mcmVlIChjZXJ0KTsKKyAgICAgIHJldHVy biBlcnI7CisgICAgfQorCisgIC8qIFJlbW92ZSBkaXN0cnVzdGVkIGNlcnRpZmljYXRlIGZyb20g dGhlIGRiIGxpc3QgaWYgcHJlc2VudC4gKi8KKyAgcmVtb3ZlX2NlcnRfZnJvbV9kYiAoY2VydCk7 CisgIGNlcnRpZmljYXRlX3JlbGVhc2UgKGNlcnQpOworICBncnViX2ZyZWUgKGNlcnQpOworCisg IHJldHVybiBHUlVCX0VSUl9OT05FOworfQorCitzdGF0aWMgZ3J1Yl9lcnJfdAorZ3J1Yl9jbWRf bGlzdF9kYiAoZ3J1Yl9jb21tYW5kX3QgY21kIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwgaW50 IGFyZ2MgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAorICAgICAgICAgICAgICAgICAgY2hhciAq KmFyZ3MgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpKQoreworICBzdHJ1Y3QgeDUwOV9jZXJ0aWZp Y2F0ZSAqY2VydDsKKyAgZ3J1Yl91aW50MzJfdCBpLCBjZXJ0X251bSA9IDE7CisKKyAgZm9yIChj ZXJ0ID0gZGIuY2VydHM7IGNlcnQgIT0gTlVMTDsgY2VydCA9IGNlcnQtPm5leHQsIGNlcnRfbnVt KyspCisgICAgeworICAgICAgZ3J1Yl9wcmludGYgKCJDZXJ0aWZpY2F0ZSAldTpcbiIsIGNlcnRf bnVtKTsKKyAgICAgIGdydWJfcHJpbnRmICgiXHRTZXJpYWw6ICIpOworCisgICAgICBmb3IgKGkg PSAwOyBpIDwgY2VydC0+c2VyaWFsX2xlbiAtIDE7IGkrKykKKyAgICAgICAgZ3J1Yl9wcmludGYg KCIlMDJ4OiIsIGNlcnQtPnNlcmlhbFtpXSk7CisKKyAgICAgIGdydWJfcHJpbnRmICgiJTAyeFxu IiwgY2VydC0+c2VyaWFsW2NlcnQtPnNlcmlhbF9sZW4gLSAxXSk7CisgICAgICBncnViX3ByaW50 ZiAoIlx0aXNzdWVyOiAlc1xuIiwgY2VydC0+aXNzdWVyKTsKKyAgICAgIGdydWJfcHJpbnRmICgi XHRDTjogJXNcblxuIiwgY2VydC0+c3ViamVjdCk7CisgICAgfQorCisgIHJldHVybiBHUlVCX0VS Ul9OT05FOworfQorCitzdGF0aWMgZ3J1Yl9lcnJfdAorYXBwZW5kZWRzaWdfaW5pdCAoZ3J1Yl9m aWxlX3QgaW8gX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLCBlbnVtIGdydWJfZmlsZV90eXBlIHR5 cGUsCisgICAgICAgICAgICAgICAgICB2b2lkICoqY29udGV4dCBfX2F0dHJpYnV0ZV9fICgodW51 c2VkKSksIGVudW0gZ3J1Yl92ZXJpZnlfZmxhZ3MgKmZsYWdzKQoreworICBpZiAoY2hlY2tfc2ln cyA9PSBmYWxzZSkKKyAgICB7CisgICAgICAqZmxhZ3MgPSBHUlVCX1ZFUklGWV9GTEFHU19TS0lQ X1ZFUklGSUNBVElPTjsKKyAgICAgIHJldHVybiBHUlVCX0VSUl9OT05FOworICAgIH0KKworICBz d2l0Y2ggKHR5cGUgJiBHUlVCX0ZJTEVfVFlQRV9NQVNLKQorICAgIHsKKyAgICAgIGNhc2UgR1JV Ql9GSUxFX1RZUEVfQ0VSVElGSUNBVEVfVFJVU1Q6CisgICAgICAgIC8qCisgICAgICAgICAqIFRo aXMgaXMgYSBjZXJ0aWZpY2F0ZSB0byBhZGQgdG8gdHJ1c3RlZCBrZXljaGFpbi4KKyAgICAgICAg ICoKKyAgICAgICAgICogVGhpcyBuZWVkcyB0byBiZSB2ZXJpZmllZCBvciBibG9ja2VkLiBJZGVh bGx5IHdlJ2Qgd3JpdGUgYW4geDUwOQorICAgICAgICAgKiB2ZXJpZmllciwgYnV0IHdlIGxhY2sg dGhlIGh1YnJpcyByZXF1aXJlZCB0byB0YWtlIHRoaXMgb24uIEluc3RlYWQsCisgICAgICAgICAq IHJlcXVpcmUgdGhhdCBpdCBoYXZlIGFuIGFwcGVuZGVkIHNpZ25hdHVyZS4KKyAgICAgICAgICov CisgICAgICBjYXNlIEdSVUJfRklMRV9UWVBFX0xJTlVYX0tFUk5FTDoKKyAgICAgIGNhc2UgR1JV Ql9GSUxFX1RZUEVfR1JVQl9NT0RVTEU6CisgICAgICAgIC8qCisgICAgICAgICAqIEFwcGVuZGVk IHNpZ25hdHVyZXMgYXJlIG9ubHkgZGVmaW5lZCBmb3IgRUxGIGJpbmFyaWVzLgorICAgICAgICAg KiBPdXQgb2YgYW4gYWJ1bmRhbmNlIG9mIGNhdXRpb24sIHdlIG9ubHkgdmVyaWZ5IExpbnV4IGtl cm5lbHMKKyAgICAgICAgICogYW5kIEdSVUIgbW9kdWxlcyBhdCB0aGlzIHBvaW50LgorICAgICAg ICAgKi8KKyAgICAgICAgKmZsYWdzID0gR1JVQl9WRVJJRllfRkxBR1NfU0lOR0xFX0NIVU5LOwor ICAgICAgICByZXR1cm4gR1JVQl9FUlJfTk9ORTsKKworICAgICAgY2FzZSBHUlVCX0ZJTEVfVFlQ RV9BQ1BJX1RBQkxFOgorICAgICAgY2FzZSBHUlVCX0ZJTEVfVFlQRV9ERVZJQ0VfVFJFRV9JTUFH RToKKyAgICAgICAgLyoKKyAgICAgICAgICogSXQgaXMgcG9zc2libGUgdG8gdXNlIGFwcGVuZGVk IHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gd2l0aG91dAorICAgICAgICAgKiBsb2NrZG93biAtIGxp a2UgdGhlIFBHUCB2ZXJpZmllci4gV2hlbiBjb21iaW5lZCB3aXRoIGFuIGVtYmVkZGVkCisgICAg ICAgICAqIGNvbmZpZyBmaWxlIGluIGEgc2lnbmVkIEdSVUIgYmluYXJ5LCB0aGlzIGNvdWxkIHN0 aWxsIGJlIGEgbWVhbmluZ2Z1bAorICAgICAgICAgKiBzZWN1cmUtYm9vdCBjaGFpbiAtIHNvIGxv bmcgYXMgaXQgaXNuJ3Qgc3VidmVydGVkIGJ5IHNvbWV0aGluZyBsaWtlIGEKKyAgICAgICAgICog cm91Z2UgQUNQSSB0YWJsZSBvciBEVCBpbWFnZS4gRGVmZXIgdGhlbSBleHBsaWNpdGx5LgorICAg ICAgICAgKi8KKyAgICAgICAgKmZsYWdzID0gR1JVQl9WRVJJRllfRkxBR1NfREVGRVJfQVVUSDsK KyAgICAgICAgcmV0dXJuIEdSVUJfRVJSX05PTkU7CisKKyAgICAgIGRlZmF1bHQ6CisgICAgICAg ICpmbGFncyA9IEdSVUJfVkVSSUZZX0ZMQUdTX1NLSVBfVkVSSUZJQ0FUSU9OOworICAgICAgICBy ZXR1cm4gR1JVQl9FUlJfTk9ORTsKKyAgICB9Cit9CisKK3N0YXRpYyBncnViX2Vycl90CithcHBl bmRlZHNpZ193cml0ZSAodm9pZCAqY3R4dCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksIHZvaWQg KmJ1ZiwgZ3J1Yl9zaXplX3Qgc2l6ZSkKK3sKKyAgcmV0dXJuIGdydWJfdmVyaWZ5X2FwcGVuZGVk X3NpZ25hdHVyZSAoYnVmLCBzaXplKTsKK30KKworc3RydWN0IGdydWJfZmlsZV92ZXJpZmllciBn cnViX2FwcGVuZGVkc2lnX3ZlcmlmaWVyID0geworICAubmFtZSA9ICJhcHBlbmRlZHNpZyIsCisg IC5pbml0ID0gYXBwZW5kZWRzaWdfaW5pdCwKKyAgLndyaXRlID0gYXBwZW5kZWRzaWdfd3JpdGUs Cit9OworCitzdGF0aWMgZ3J1Yl9zc2l6ZV90Citwc2V1ZG9fcmVhZCAoc3RydWN0IGdydWJfZmls ZSAqZmlsZSwgY2hhciAqYnVmLCBncnViX3NpemVfdCBsZW4pCit7CisgIGdydWJfbWVtY3B5IChi dWYsIChncnViX3VpbnQ4X3QgKikgZmlsZS0+ZGF0YSArIGZpbGUtPm9mZnNldCwgbGVuKTsKKyAg cmV0dXJuIGxlbjsKK30KKworLyogRmlsZXN5c3RlbSBkZXNjcmlwdG9yLiAqLworc3RhdGljIHN0 cnVjdCBncnViX2ZzIHBzZXVkb19mcyA9IHsKKyAgLm5hbWUgPSAicHNldWRvIiwKKyAgLmZzX3Jl YWQgPSBwc2V1ZG9fcmVhZAorfTsKKworc3RhdGljIGdydWJfY29tbWFuZF90IGNtZF92ZXJpZnks IGNtZF9saXN0X2RiLCBjbWRfZGJ4X2NlcnQsIGNtZF9kYl9jZXJ0OworCisvKiBGcmVlIGRiIGxp c3QgbWVtb3J5ICovCitzdGF0aWMgdm9pZAorZnJlZV9kYl9saXN0ICh2b2lkKQoreworICBzdHJ1 Y3QgeDUwOV9jZXJ0aWZpY2F0ZSAqY2VydDsKKworICB3aGlsZSAoZGIuY2VydHMgIT0gTlVMTCkK KyAgICB7CisgICAgICBjZXJ0ID0gZGIuY2VydHM7CisgICAgICBkYi5jZXJ0cyA9IGRiLmNlcnRz LT5uZXh0OworICAgICAgY2VydGlmaWNhdGVfcmVsZWFzZSAoY2VydCk7CisgICAgICBncnViX2Zy ZWUgKGNlcnQpOworICAgIH0KKworICBncnViX21lbXNldCAoJmRiLCAwLCBzaXplb2YgKHN0cnVj dCBncnViX2RhdGFiYXNlKSk7Cit9CisKKy8qCisgKiBFeHRyYWN0IHRoZSBYLjUwOSBjZXJ0aWZp Y2F0ZXMgZnJvbSB0aGUgRUxGIE5vdGUgaGVhZGVyLAorICogcGFyc2UgaXQsIGFuZCBhZGQgaXQg dG8gdGhlIGRiIGxpc3QuCisgKi8KK3N0YXRpYyB2b2lkCitidWlsZF9zdGF0aWNfZGJfbGlzdCAo dm9pZCkKK3sKKyAgZ3J1Yl9lcnJfdCBlcnI7CisgIHN0cnVjdCBncnViX21vZHVsZV9oZWFkZXIg KmhlYWRlcjsKKyAgc3RydWN0IGdydWJfZmlsZSBwc2V1ZG9fZmlsZTsKKyAgc3RydWN0IHg1MDlf Y2VydGlmaWNhdGUgKmNlcnQ7CisKKyAgRk9SX01PRFVMRVMgKGhlYWRlcikKKyAgICB7CisgICAg ICAvKiBOb3QgYW4gWC41MDkgY2VydGlmaWNhdGUsIHNraXAuICovCisgICAgICBpZiAoaGVhZGVy LT50eXBlICE9IE9CSl9UWVBFX1g1MDlfUFVCS0VZKQorICAgICAgICBjb250aW51ZTsKKworICAg ICAgZ3J1Yl9tZW1zZXQgKCZwc2V1ZG9fZmlsZSwgMCwgc2l6ZW9mIChwc2V1ZG9fZmlsZSkpOwor ICAgICAgcHNldWRvX2ZpbGUuZnMgPSAmcHNldWRvX2ZzOworICAgICAgcHNldWRvX2ZpbGUuc2l6 ZSA9IGhlYWRlci0+c2l6ZSAtIHNpemVvZiAoc3RydWN0IGdydWJfbW9kdWxlX2hlYWRlcik7Cisg ICAgICBwc2V1ZG9fZmlsZS5kYXRhID0gKGNoYXIgKikgaGVhZGVyICsgc2l6ZW9mIChzdHJ1Y3Qg Z3J1Yl9tb2R1bGVfaGVhZGVyKTsKKworICAgICAgZ3J1Yl9kcHJpbnRmICgiYXBwZW5kZWRzaWci LCAiZm91bmQgYW4gWC41MDkgY2VydGlmaWNhdGUsIHNpemU9JSIgUFJJdUdSVUJfVUlOVDY0X1Qg IlxuIiwKKyAgICAgICAgICAgICAgICAgICAgcHNldWRvX2ZpbGUuc2l6ZSk7CisKKyAgICAgIGVy ciA9IHJlYWRfY2VydF9mcm9tX2ZpbGUgKCZwc2V1ZG9fZmlsZSwgJmNlcnQpOworICAgICAgaWYg KGVyciA9PSBHUlVCX0VSUl9PVVRfT0ZfTUVNT1JZKQorICAgICAgICByZXR1cm47CisgICAgICBl bHNlIGlmIChlcnIgIT0gR1JVQl9FUlJfTk9ORSkKKyAgICAgICAgeworICAgICAgICAgIGdydWJf ZHByaW50ZiAoImFwcGVuZGVkc2lnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3YXJuaW5n OiBjYW5ub3QgYWRkIGEgY2VydGlmaWNhdGUgJXUgdG8gdGhlIGRiIGxpc3RcbiIsCisgICAgICAg ICAgICAgICAgICAgICAgICBkYi5jZXJ0X2VudHJpZXMgKyAxKTsKKyAgICAgICAgICBjb250aW51 ZTsKKyAgICAgICAgfQorCisgICAgICBncnViX2RwcmludGYgKCJhcHBlbmRlZHNpZyIsICJhZGQg YSBjZXJ0aWZpY2F0ZSBDTj0nJXMnIHRvIGRiXG4iLCBjZXJ0LT5zdWJqZWN0KTsKKworICAgICAg Y2VydC0+bmV4dCA9IGRiLmNlcnRzOworICAgICAgZGIuY2VydHMgPSBjZXJ0OworICAgICAgZGIu Y2VydF9lbnRyaWVzKys7CisgICAgfQorfQorCisvKiBJdCByZWdpc3RlcnMgdGhlIGFwcGVuZGVk IHNpZ25hdHVyZXMgR1JVQiBjb21tYW5kcy4gKi8KK3N0YXRpYyB2b2lkCityZWdpc3Rlcl9hcHBl bmRlZF9zaWduYXR1cmVzX2NtZCAodm9pZCkKK3sKKyAgY21kX3ZlcmlmeSA9IGdydWJfcmVnaXN0 ZXJfY29tbWFuZCAoImFwcGVuZF92ZXJpZnkiLCBncnViX2NtZF92ZXJpZnlfc2lnbmF0dXJlLCBO XygiU0lHTkVEX0ZJTEUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Tl8oIlZlcmlmeSBTSUdORURfRklMRSBhZ2FpbnN0IHRoZSB0cnVzdGVkIFguNTA5IGNlcnRpZmlj YXRlcyBpbiB0aGUgZGIgbGlzdCIpKTsKKyAgY21kX2xpc3RfZGIgPSBncnViX3JlZ2lzdGVyX2Nv bW1hbmQgKCJhcHBlbmRfbGlzdF9kYiIsIGdydWJfY21kX2xpc3RfZGIsIDAsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOXygiU2hvdyB0aGUgbGlzdCBvZiB0cnVzdGVk IFguNTA5IGNlcnRpZmljYXRlcyBmcm9tIHRoZSBkYiBsaXN0IikpOworICBjbWRfZGJfY2VydCA9 IGdydWJfcmVnaXN0ZXJfY29tbWFuZCAoImFwcGVuZF9hZGRfZGJfY2VydCIsIGdydWJfY21kX2Ri X2NlcnQsIE5fKCJYNTA5X0NFUlRJRklDQVRFIiksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBOXygiQWRkIHRydXN0ZWQgWDUwOV9DRVJUSUZJQ0FURSB0byB0aGUgZGIg bGlzdCIpKTsKKyAgY21kX2RieF9jZXJ0ID0gZ3J1Yl9yZWdpc3Rlcl9jb21tYW5kICgiYXBwZW5k X3JtX2RieF9jZXJ0IiwgZ3J1Yl9jbWRfZGJ4X2NlcnQsIE5fKCJYNTA5X0NFUlRJRklDQVRFIiks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTl8oIlJlbW92ZSBkaXN0 cnVzdGVkIFg1MDlfQ0VSVElGSUNBVEUgZnJvbSB0aGUgZGIgbGlzdCIpKTsKK30KKworLyogSXQg dW5yZWdpc3RlcnMgdGhlIGFwcGVuZGVkIHNpZ25hdHVyZXMgR1JVQiBjb21tYW5kcy4gKi8KK3N0 YXRpYyB2b2lkCit1bnJlZ2lzdGVyX2FwcGVuZGVkX3NpZ25hdHVyZXNfY21kICh2b2lkKQorewor ICBncnViX3VucmVnaXN0ZXJfY29tbWFuZCAoY21kX3ZlcmlmeSk7CisgIGdydWJfdW5yZWdpc3Rl cl9jb21tYW5kIChjbWRfbGlzdF9kYik7CisgIGdydWJfdW5yZWdpc3Rlcl9jb21tYW5kIChjbWRf ZGJfY2VydCk7CisgIGdydWJfdW5yZWdpc3Rlcl9jb21tYW5kIChjbWRfZGJ4X2NlcnQpOworfQor CitHUlVCX01PRF9JTklUIChhcHBlbmRlZHNpZykKK3sKKyAgZ3J1Yl9pbnQzMl90IHJjOworCisg IC8qCisgICAqIElmIHNlY3VyZSBib290IGlzIGVuYWJsZWQgd2l0aCBlbmZvcmNlZCBtb2RlIGFu ZCBHUlVCIGlzIGxvY2tlZCBkb3duLAorICAgKiBlbmFibGUgc2lnbmF0dXJlIHZlcmlmaWNhdGlv bi4KKyAgICovCisgIGlmIChncnViX2lzX2xvY2tkb3duICgpID09IEdSVUJfTE9DS0RPV05fRU5B QkxFRCkKKyAgICBjaGVja19zaWdzID0gdHJ1ZTsKKworICAvKgorICAgKiBUaGlzIGlzIGFwcGVu ZGVkIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gZW52aXJvbm1lbnQgdmFyaWFibGUuCisgICAqIEl0 IGlzIGF1dG9tYXRpY2FsbHkgc2V0IHRvICJubyIgb3IgImVuZm9yY2UiIGJhc2VkIG9uIHRoZQor ICAgKiDigJlpYm0sc2VjdXJlLWJvb3TigJkgZGV2aWNlIHRyZWUgcHJvcGVydHkuCisgICAqCisg ICAqICJubyI6IE5vIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24uIFRoaXMgaXMgdGhlIGRlZmF1bHQu CisgICAqCisgICAqICJlbmZvcmNlIjogRW5mb3JjZSBzaWduYXR1cmUgdmVyaWZpY2F0aW9uLiBX aGVuIEdSVUIgaXMgbG9ja2VkIGRvd24sCisgICAqICAgICAgICAgICAgdXNlciBjYW5ub3QgY2hh bmdlIHRoZSB2YWx1ZSBieSBzZXR0aW5nIHRoZSBjaGVja19hcHBlbmRlZF9zaWduYXR1cmVzCisg ICAqICAgICAgICAgICAgdmFyaWFibGUgYmFjayB0byDigJhub+KAmQorICAgKi8KKyAgZ3J1Yl9y ZWdpc3Rlcl92YXJpYWJsZV9ob29rICgiY2hlY2tfYXBwZW5kZWRfc2lnbmF0dXJlcyIsIGdydWJf ZW52X3JlYWRfc2VjLCBncnViX2Vudl93cml0ZV9zZWMpOworICBncnViX2Vudl9leHBvcnQgKCJj aGVja19hcHBlbmRlZF9zaWduYXR1cmVzIik7CisKKyAgcmMgPSBhc24xX2luaXQgKCk7CisgIGlm IChyYyAhPSBBU04xX1NVQ0NFU1MpCisgICAgZ3J1Yl9mYXRhbCAoImVycm9yIGluaXRpbmcgQVNO LjEgZGF0YSBzdHJ1Y3R1cmVzOiAlZDogJXNcbiIsIHJjLCBhc24xX3N0cmVycm9yIChyYykpOwor CisgIC8qIEV4dHJhY3QgdHJ1c3RlZCBrZXlzIGZyb20gRUxGIE5vdGUgYW5kIHN0b3JlIHRoZW0g aW4gdGhlIGRiLiAqLworICBidWlsZF9zdGF0aWNfZGJfbGlzdCAoKTsKKyAgZ3J1Yl9kcHJpbnRm ICgiYXBwZW5kZWRzaWciLCAidGhlIGRiIGxpc3Qgbm93IGhhcyAldSBzdGF0aWMga2V5c1xuIiwK KyAgICAgICAgICAgICAgICBkYi5jZXJ0X2VudHJpZXMpOworCisgIHJlZ2lzdGVyX2FwcGVuZGVk X3NpZ25hdHVyZXNfY21kICgpOworICBncnViX3ZlcmlmaWVyX3JlZ2lzdGVyICgmZ3J1Yl9hcHBl bmRlZHNpZ192ZXJpZmllcik7CisgIGdydWJfZGxfc2V0X3BlcnNpc3RlbnQgKG1vZCk7Cit9CisK K0dSVUJfTU9EX0ZJTkkgKGFwcGVuZGVkc2lnKQoreworICAvKgorICAgKiBncnViX2RsX3NldF9w ZXJzaXN0ZW50IHNob3VsZCBwcmV2ZW50IHRoaXMgZnJvbSBhY3R1YWxseSBydW5uaW5nLCBidXQK KyAgICogaXQgZG9lcyBzdGlsbCBydW4gdW5kZXIgZW11LgorICAgKi8KKworICBmcmVlX2RiX2xp c3QgKCk7CisgIGdydWJfcmVnaXN0ZXJfdmFyaWFibGVfaG9vayAoImNoZWNrX2FwcGVuZGVkX3Np Z25hdHVyZXMiLCBOVUxMLCBOVUxMKTsKKyAgZ3J1Yl9lbnZfdW5zZXQgKCJjaGVja19hcHBlbmRl ZF9zaWduYXR1cmVzIik7CisgIGdydWJfdmVyaWZpZXJfdW5yZWdpc3RlciAoJmdydWJfYXBwZW5k ZWRzaWdfdmVyaWZpZXIpOworICB1bnJlZ2lzdGVyX2FwcGVuZGVkX3NpZ25hdHVyZXNfY21kICgp OworfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ncnViL2Vyci5oIGIvaW5jbHVkZS9ncnViL2Vyci5o CmluZGV4IDIwMmZhOGE3YS4uNmFiOTA1YzkzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2dydWIvZXJy LmgKKysrIGIvaW5jbHVkZS9ncnViL2Vyci5oCkBAIC03NSw3ICs3NSw4IEBAIHR5cGVkZWYgZW51 bQogICAgIEdSVUJfRVJSX0JBRF9TSUdOQVRVUkUsCiAgICAgR1JVQl9FUlJfQkFEX0ZJUk1XQVJF LAogICAgIEdSVUJfRVJSX1NUSUxMX1JFRkVSRU5DRUQsCi0gICAgR1JVQl9FUlJfUkVDVVJTSU9O X0RFUFRICisgICAgR1JVQl9FUlJfUkVDVVJTSU9OX0RFUFRILAorICAgIEdSVUJfRVJSX0VYSVNU UwogICB9CiBncnViX2Vycl90OwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2dydWIvZmlsZS5oIGIv aW5jbHVkZS9ncnViL2ZpbGUuaAppbmRleCBhNWJmM2E3OTIuLmQ2NzhkZTA2MyAxMDA2NDQKLS0t IGEvaW5jbHVkZS9ncnViL2ZpbGUuaAorKysgYi9pbmNsdWRlL2dydWIvZmlsZS5oCkBAIC04MCw2 ICs4MCw4IEBAIGVudW0gZ3J1Yl9maWxlX3R5cGUKICAgICBHUlVCX0ZJTEVfVFlQRV9QVUJMSUNf S0VZLAogICAgIC8qIEZpbGUgaG9sZGluZyBwdWJsaWMga2V5IHRvIGFkZCB0byB0cnVzZWQga2V5 cy4gICovCiAgICAgR1JVQl9GSUxFX1RZUEVfUFVCTElDX0tFWV9UUlVTVCwKKyAgICAvKiBGaWxl IGhvbGRpbmcgeDUwOSBjZXJ0aWZpY2lhdGUgdG8gYWRkIHRvIHRydXN0ZWQga2V5cy4gICovCisg ICAgR1JVQl9GSUxFX1RZUEVfQ0VSVElGSUNBVEVfVFJVU1QsCiAgICAgLyogRmlsZSBvZiB3aGlj aCB3ZSBpbnRlbmQgdG8gcHJpbnQgYSBibG9ja2xpc3QgdG8gdGhlIHVzZXIuICAqLwogICAgIEdS VUJfRklMRV9UWVBFX1BSSU5UX0JMT0NLTElTVCwKICAgICAvKiBGaWxlIHdlIGludGVuZCB0byB1 c2UgZm9yIHRlc3QgbG9hZGluZyBvciB0ZXN0aW5nIHNwZWVkLiAgKi8KLS0gCjIuMzkuNSAoQXBw bGUgR2l0LTE1NCkKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpHcnViLWRldmVsIG1haWxpbmcgbGlzdApHcnViLWRldmVsQGdudS5vcmcKaHR0cHM6Ly9s aXN0cy5nbnUub3JnL21haWxtYW4vbGlzdGluZm8vZ3J1Yi1kZXZlbAo=