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 8C4EDCA0EFA for ; Thu, 21 Aug 2025 08:00:06 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1up0B8-00010f-9I; Thu, 21 Aug 2025 03:57:46 -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 1up0B6-000107-Vm for grub-devel@gnu.org; Thu, 21 Aug 2025 03:57:44 -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 1up0B2-0001aH-J4 for grub-devel@gnu.org; Thu, 21 Aug 2025 03:57:44 -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 57KNe6RE028296; Thu, 21 Aug 2025 07:57:35 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=Xf88rTO8DqurFh3N9 3d528RbZVVUzodtqjj3/ksKPLM=; b=SzXHWtVILVd6Y9wh0Q7yGOGrgLyP2DFXr +A0E4+wn5wWKsrVsCnpqEO+qJC4BzsVytOqlO/IWy1yrlBcH/8+gG7J8y8eaUNwN XfWIs+ws3HtWiSLd70uEoQNJyJoJWS4W/XJrlrqFlm8a+muDRRXSAet/O3sjX7D5 Q8HVtb40iG8c6ozPB30xwlwub8RdFlRmyZqXmmu1ArR0huaZovTzyPGfpKaFj+rs x3eX4645uc49f3FVpZ5/r+5wtJwWdx16hU4ZwkHvfWzIZCf5x633as/rOiAffppg kke0ZdsMjUdg8zTRieftafu5k2ub67BDnJMTzkNe4jr2fuIQVXYSA== 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 48n38vff61-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 21 Aug 2025 07:57:34 +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 57L6hRps026652; Thu, 21 Aug 2025 07:57:33 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 48my4w79ud-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 21 Aug 2025 07:57:33 +0000 Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 57L7vSPd30147120 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 21 Aug 2025 07:57:29 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 1A3522004D; Thu, 21 Aug 2025 07:57:28 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 7902220040; Thu, 21 Aug 2025 07:57:25 +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:25 +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 11/20] powerpc_ieee1275: Read the db and dbx secure boot variables Date: Thu, 21 Aug 2025 13:25:04 +0530 Message-Id: <20250821075513.82881-12-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: AW1haW4tMjUwODE5MDIyMiBTYWx0ZWRfX7o0bGcPM8QKR Wss6EzaaWBCK6iyvCdXE6/yLcj6jf4ylGcnteMMrMpNIXjIvZfe68PAGgCZNnZ/T9fST7i5Y1t4 6OCjmxPqQHpvG6egYZZtT4LW1QZzB/K2ok0WzivQIQtBIFG633TeSHtEE/8iUQ0e5I5BY7G3ab8 y/Jt/Knh0GAunDfSLGfSNWGnKCu3wutpMF+02lg6o1AMLX6IK/0V6OAsnAoBnO8CooBXrADTDPC QbFr53I5ur9PcdwmSRR0yapCsrTQok5g4eAgBX3XTIlVNKFI60ZoLVmfUk0Gull+wi24g2lfo/M q62zbAR3odlLEgHVxXPlHKG0NwL/ED9eRvO1QqXNfWL02zwOhhRL0/ohB03xJAj6UrhFeTNk85u xbgpeVYzEmxK+rkfBQCqOT4T0/HeSg== X-Authority-Analysis: v=2.4 cv=PMlWOfqC c=1 sm=1 tr=0 ts=68a6d16f cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=2OwXVqhp2XgA:10 a=mDV3o1hIAAAA:8 a=NEAV23lmAAAA:8 a=VnNF1IyMAAAA:8 a=YHdhcJz9JjMUaA9YugAA:9 a=3ZKOabzyN94A:10 a=cPQSjfK2_nFv0Q5t_7PE:22 X-Proofpoint-GUID: cFxPJzY9r3IzEA70TE6WlFTGvIjJKckX X-Proofpoint-ORIG-GUID: cFxPJzY9r3IzEA70TE6WlFTGvIjJKckX 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 RW5oYW5jaW5nIHRoZSBpbmZyYXN0cnVjdHVyZSB0byBlbmFibGUgdGhlIFBsYXRmb3JtIEtleXN0 b3JlIChQS1MpIGZlYXR1cmUsCndoaWNoIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgU0JfVkVSU0lP TiwgZGIsIGFuZCBkYnggc2VjdXJlIGJvb3QgdmFyaWFibGVzCmZyb20gUEtTLgoKSWYgUEtTIGlz IGVuYWJsZWQsIGl0IHdpbGwgcmVhZCBzZWN1cmUgYm9vdCB2YXJpYWJsZXMgc3VjaCBhcyBkYiBh bmQgZGJ4CmZyb20gUEtTIGFuZCBleHRyYWN0IEVGSSBTaWduYXR1cmUgTGlzdCAoRVNMKSBmcm9t IGl0LiBUaGUgRVNMcyB3b3VsZCBiZQpzYXZlZCBpbiB0aGUgUGxhdGZvcm0gS2V5c3RvcmUgYnVm ZmVyLCBhbmQgdGhlIGFwcGVuZGVkc2lnIG1vZHVsZSB3b3VsZApyZWFkIGl0IGxhdGVyIHRvIGV4 dHJhY3QgdGhlIGNlcnRpZmljYXRlJ3MgZGV0YWlscyBmcm9tIEVTTC4KCkluIHRoZSBmb2xsb3dp bmcgc2NlbmFyaW9zLCBzdGF0aWMga2V5IG1hbmFnZW1lbnQgbW9kZSB3aWxsIGJlIGFjdGl2YXRl ZDoKIDEuIFdoZW4gU2VjdXJlIEJvb3QgaXMgZW5hYmxlZCB3aXRoIHN0YXRpYyBrZXkgbWFuYWdl bWVudCBtb2RlCiAyLiBXaGVuIFNCX1ZFUlNJT04gaXMgdW5hdmFpbGFibGUgYnV0IFNlY3VyZSBC b290IGlzIGVuYWJsZWQKIDMuIFdoZW4gUEtTIHN1cHBvcnQgaXMgdW5hdmFpbGFibGUgYnV0IFNl Y3VyZSBCb290IGlzIGVuYWJsZWQKCk5vdGU6LQoKIFNCX1ZFUlNJT046IEtleSBNYW5hZ2VtZW50 IE1vZGUKIDEgLSBFbmFibGUgZHluYW1pYyBrZXkgbWFuYWdlbWVudCBtb2RlLiBSZWFkIHRoZSBk YiBhbmQgZGJ4IHZhcmlhYmxlcyBmcm9tIFBLUywKICAgICBhbmQgdXNlIHRoZW0gZm9yIHNpZ25h dHVyZSB2ZXJpZmljYXRpb24uCiAwIC0gRW5hYmxlIHN0YXRpYyBrZXkgbWFuYWdlbWVudCBtb2Rl LiBSZWFkIGtleXMgZnJvbSB0aGUgR1JVQiBFTEYgTm90ZSBhbmQKICAgICB1c2UgaXQgZm9yIHNp Z25hdHVyZSB2ZXJpZmljYXRpb24uCgpTaWduZWQtb2ZmLWJ5OiBTdWRoYWthciBLdXBwdXNhbXkg PHN1ZGhha2FyQGxpbnV4LmlibS5jb20+Ci0tLQogZ3J1Yi1jb3JlL01ha2VmaWxlLmFtICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAyICsKIGdydWItY29yZS9NYWtlZmlsZS5jb3JlLmRlZiAg ICAgICAgICAgICAgICAgICB8ICAgMiArCiBncnViLWNvcmUva2Vybi9pZWVlMTI3NS9pZWVlMTI3 NS5jICAgICAgICAgICAgfCAgIDEgLQogZ3J1Yi1jb3JlL2tlcm4vaWVlZTEyNzUvaW5pdC5jICAg ICAgICAgICAgICAgIHwgIDE0ICstCiBncnViLWNvcmUva2Vybi9wb3dlcnBjL2llZWUxMjc1L2ll ZWUxMjc1LmMgICAgfCAxMzkgKysrKysrKwogLi4uL2tlcm4vcG93ZXJwYy9pZWVlMTI3NS9wbGF0 Zm9ybV9rZXlzdG9yZS5jIHwgMzQxICsrKysrKysrKysrKysrKysrKwogaW5jbHVkZS9ncnViL2ll ZWUxMjc1L2llZWUxMjc1LmggICAgICAgICAgICAgIHwgICAzICsKIGluY2x1ZGUvZ3J1Yi9wb3dl cnBjL2llZWUxMjc1L2llZWUxMjc1LmggICAgICB8ICAyMCArCiAuLi4vZ3J1Yi9wb3dlcnBjL2ll ZWUxMjc1L3BsYXRmb3JtX2tleXN0b3JlLmggfCAxNDIgKysrKysrKysKIDkgZmlsZXMgY2hhbmdl ZCwgNjYyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg Z3J1Yi1jb3JlL2tlcm4vcG93ZXJwYy9pZWVlMTI3NS9pZWVlMTI3NS5jCiBjcmVhdGUgbW9kZSAx MDA2NDQgZ3J1Yi1jb3JlL2tlcm4vcG93ZXJwYy9pZWVlMTI3NS9wbGF0Zm9ybV9rZXlzdG9yZS5j CiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9ncnViL3Bvd2VycGMvaWVlZTEyNzUvcGxhdGZv cm1fa2V5c3RvcmUuaAoKZGlmZiAtLWdpdCBhL2dydWItY29yZS9NYWtlZmlsZS5hbSBiL2dydWIt Y29yZS9NYWtlZmlsZS5hbQppbmRleCBlNTBkYjgxMDYuLmNkNmJiN2MzMiAxMDA2NDQKLS0tIGEv Z3J1Yi1jb3JlL01ha2VmaWxlLmFtCisrKyBiL2dydWItY29yZS9NYWtlZmlsZS5hbQpAQCAtMjQx LDExICsyNDEsMTMgQEAgS0VSTkVMX0hFQURFUl9GSUxFUyArPSAkKHRvcF9idWlsZGRpcikvaW5j bHVkZS9ncnViL21hY2hpbmUva2VybmVsLmgKIGVuZGlmCiAKIGlmIENPTkRfcG93ZXJwY19pZWVl MTI3NQorS0VSTkVMX0hFQURFUl9GSUxFUyArPSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvZ3J1Yi9w b3dlcnBjL2llZWUxMjc1L2llZWUxMjc1LmgKIEtFUk5FTF9IRUFERVJfRklMRVMgKz0gJCh0b3Bf c3JjZGlyKS9pbmNsdWRlL2dydWIvaWVlZTEyNzUvaWVlZTEyNzUuaAogS0VSTkVMX0hFQURFUl9G SUxFUyArPSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvZ3J1Yi9pZWVlMTI3NS9hbGxvYy5oCiBLRVJO RUxfSEVBREVSX0ZJTEVTICs9ICQodG9wX3NyY2RpcikvaW5jbHVkZS9ncnViL3Rlcm1pbmZvLmgK IEtFUk5FTF9IRUFERVJfRklMRVMgKz0gJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL2dydWIvZXh0Y21k LmgKIEtFUk5FTF9IRUFERVJfRklMRVMgKz0gJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL2dydWIvbGli L2FyZy5oCitLRVJORUxfSEVBREVSX0ZJTEVTICs9ICQodG9wX3NyY2RpcikvaW5jbHVkZS9ncnVi L3Bvd2VycGMvaWVlZTEyNzUvcGxhdGZvcm1fa2V5c3RvcmUuaAogZW5kaWYKIAogaWYgQ09ORF9z cGFyYzY0X2llZWUxMjc1CmRpZmYgLS1naXQgYS9ncnViLWNvcmUvTWFrZWZpbGUuY29yZS5kZWYg Yi9ncnViLWNvcmUvTWFrZWZpbGUuY29yZS5kZWYKaW5kZXggZDkxNjk0ZGUwLi4wNWNjYmYyNjQg MTAwNjQ0Ci0tLSBhL2dydWItY29yZS9NYWtlZmlsZS5jb3JlLmRlZgorKysgYi9ncnViLWNvcmUv TWFrZWZpbGUuY29yZS5kZWYKQEAgLTMyOCwxMCArMzI4LDEyIEBAIGtlcm5lbCA9IHsKICAgZXh0 cmFfZGlzdCA9IHZpZGVvL3NpczMxNV9pbml0LmM7CiAgIG1pcHNfbG9vbmdzb24gPSBjb21tYW5k cy9rZXlsYXlvdXRzLmM7CiAKKyAgcG93ZXJwY19pZWVlMTI3NSA9IGtlcm4vcG93ZXJwYy9pZWVl MTI3NS9pZWVlMTI3NS5jOwogICBwb3dlcnBjX2llZWUxMjc1ID0ga2Vybi9wb3dlcnBjL2NhY2hl LlM7CiAgIHBvd2VycGNfaWVlZTEyNzUgPSBrZXJuL3Bvd2VycGMvZGwuYzsKICAgcG93ZXJwY19p ZWVlMTI3NSA9IGtlcm4vcG93ZXJwYy9jb21waWxlci1ydC5TOwogICBwb3dlcnBjX2llZWUxMjc1 ID0ga2Vybi9sb2NrZG93bi5jOworICBwb3dlcnBjX2llZWUxMjc1ID0ga2Vybi9wb3dlcnBjL2ll ZWUxMjc1L3BsYXRmb3JtX2tleXN0b3JlLmM7CiAKICAgc3BhcmM2NF9pZWVlMTI3NSA9IGtlcm4v c3BhcmM2NC9jYWNoZS5TOwogICBzcGFyYzY0X2llZWUxMjc1ID0ga2Vybi9zcGFyYzY0L2RsLmM7 CmRpZmYgLS1naXQgYS9ncnViLWNvcmUva2Vybi9pZWVlMTI3NS9pZWVlMTI3NS5jIGIvZ3J1Yi1j b3JlL2tlcm4vaWVlZTEyNzUvaWVlZTEyNzUuYwppbmRleCAzNmNhMmRiZmMuLmFmYTM3YTlmMCAx MDA2NDQKLS0tIGEvZ3J1Yi1jb3JlL2tlcm4vaWVlZTEyNzUvaWVlZTEyNzUuYworKysgYi9ncnVi LWNvcmUva2Vybi9pZWVlMTI3NS9pZWVlMTI3NS5jCkBAIC0yMyw3ICsyMyw2IEBACiAKICNkZWZp bmUgSUVFRTEyNzVfUEhBTkRMRV9JTlZBTElEICAoKGdydWJfaWVlZTEyNzVfY2VsbF90KSAtMSkK ICNkZWZpbmUgSUVFRTEyNzVfSUhBTkRMRV9JTlZBTElEICAoKGdydWJfaWVlZTEyNzVfY2VsbF90 KSAwKQotI2RlZmluZSBJRUVFMTI3NV9DRUxMX0lOVkFMSUQgICAgICgoZ3J1Yl9pZWVlMTI3NV9j ZWxsX3QpIC0xKQogCiAMCiAKZGlmZiAtLWdpdCBhL2dydWItY29yZS9rZXJuL2llZWUxMjc1L2lu aXQuYyBiL2dydWItY29yZS9rZXJuL2llZWUxMjc1L2luaXQuYwppbmRleCA4OTMwM2YzM2UuLjQ2 YmZhYTlhOCAxMDA2NDQKLS0tIGEvZ3J1Yi1jb3JlL2tlcm4vaWVlZTEyNzUvaW5pdC5jCisrKyBi L2dydWItY29yZS9rZXJuL2llZWUxMjc1L2luaXQuYwpAQCAtNTEsNiArNTEsOCBAQAogI2VuZGlm CiAjaWYgZGVmaW5lZChfX3Bvd2VycGNfXykKICNpbmNsdWRlIDxncnViL2xvY2tkb3duLmg+Cisj aW5jbHVkZSA8Z3J1Yi9wb3dlcnBjL2llZWUxMjc1L2llZWUxMjc1Lmg+CisjaW5jbHVkZSA8Z3J1 Yi9wb3dlcnBjL2llZWUxMjc1L3BsYXRmb3JtX2tleXN0b3JlLmg+CiAjZW5kaWYKIAogI2lmZGVm IF9fcG93ZXJwY19fCkBAIC0xMDA3LDYgKzEwMDksNyBAQCBncnViX3BhcnNlX2NtZGxpbmUgKHZv aWQpCiBzdGF0aWMgdm9pZAogZ3J1Yl9pZWVlMTI3NV9nZXRfc2VjdXJlX2Jvb3QgKHZvaWQpCiB7 CisgIGdydWJfZXJyX3QgZXJyOwogICBncnViX2llZWUxMjc1X3BoYW5kbGVfdCByb290OwogICBn cnViX3VpbnQzMl90IHNiX21vZGUgPSBHUlVCX1NCX0RJU0FCTEVEOwogICBpbnQgcmM7CkBAIC0x MDM4LDcgKzEwNDEsMTYgQEAgZ3J1Yl9pZWVlMTI3NV9nZXRfc2VjdXJlX2Jvb3QgKHZvaWQpCiAg ICAqIE5vdywgb25seSBzdXBwb3J0IGRpc2FibGVkIGFuZCBlbmZvcmNlZC4KICAgICovCiAgIGlm IChzYl9tb2RlID09IEdSVUJfU0JfRU5GT1JDRUQpCi0gICAgZ3J1Yl9sb2NrZG93biAoKTsKKyAg ICB7CisgICAgICBncnViX2RwcmludGYgKCJpZWVlMTI3NSIsICJTZWN1cmUgQm9vdCBFbmFibGVk XG4iKTsKKyAgICAgIGdydWJfbG9ja2Rvd24gKCk7CisgICAgfQorICBlbHNlCisgICAgZ3J1Yl9k cHJpbnRmICgiaWVlZTEyNzUiLCAiU2VjdXJlIEJvb3QgRGlzYWJsZWRcbiIpOworCisgIGVyciA9 IGdydWJfcGtzX2tleXN0b3JlX2luaXQgKCk7CisgIGlmIChlcnIgIT0gR1JVQl9FUlJfTk9ORSkK KyAgICBncnViX2Vycm9yIChlcnIsICJpbml0aWFsaXphdGlvbiBvZiB0aGUgUGxhdGZvcm0gS2V5 U3RvcmUgZmFpbGVkXG4iKTsKIH0KICNlbmRpZiAvKiBfX3Bvd2VycGNfXyAqLwogCmRpZmYgLS1n aXQgYS9ncnViLWNvcmUva2Vybi9wb3dlcnBjL2llZWUxMjc1L2llZWUxMjc1LmMgYi9ncnViLWNv cmUva2Vybi9wb3dlcnBjL2llZWUxMjc1L2llZWUxMjc1LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwLi41ZGRhZDRhYjQKLS0tIC9kZXYvbnVsbAorKysgYi9ncnViLWNvcmUv a2Vybi9wb3dlcnBjL2llZWUxMjc1L2llZWUxMjc1LmMKQEAgLTAsMCArMSwxMzkgQEAKKy8qIGll ZWUxMjc1LmMgLSBBY2Nlc3MgdGhlIE9wZW4gRmlybXdhcmUgY2xpZW50IGludGVyZmFjZS4gICov CisvKgorICogIEdSVUIgIC0tICBHUmFuZCBVbmlmaWVkIEJvb3Rsb2FkZXIKKyAqICBDb3B5cmln aHQgKEMpIDIwMDMsMjAwNCwyMDA1LDIwMDcsMjAwOCwyMDA5ICBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMjAsIDIwMjEsIDIwMjIsIDIwMjMsIDIw MjQsIDIwMjUgSUJNIENvcnBvcmF0aW9uCisgKgorICogIEdSVUIgaXMgZnJlZSBzb2Z0d2FyZTog eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cisg KiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKKyAqICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK KyAqICBHUlVCIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIEdSVUIu ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKyNpbmNs dWRlIDxncnViL2llZWUxMjc1L2llZWUxMjc1Lmg+CisjaW5jbHVkZSA8Z3J1Yi9wb3dlcnBjL2ll ZWUxMjc1L2llZWUxMjc1Lmg+CisjaW5jbHVkZSA8Z3J1Yi9taXNjLmg+CisKK2dydWJfaW50MzJf dAorZ3J1Yl9pZWVlMTI3NV90ZXN0IChjb25zdCBncnViX3VpbnQ4X3QgKm5hbWUsIGdydWJfaWVl ZTEyNzVfY2VsbF90ICptaXNzaW5nKQoreworICBzdHJ1Y3QgdGVzdF9hcmdzCisgIHsKKyAgICBz dHJ1Y3QgZ3J1Yl9pZWVlMTI3NV9jb21tb25faGRyIGNvbW1vbjsvKiBUaGUgaGVhZGVyIGluZm9y bWF0aW9uIGxpa2UgaW50ZXJmYWNlIG5hbWUsIG51bWJlciBvZiBpbnB1dHMgYW5kIG91dHB1dHMu ICovCisgICAgZ3J1Yl9pZWVlMTI3NV9jZWxsX3QgbmFtZTsgICAgICAgICAgICAgLyogVGhlIGlu dGVyZmFjZSBuYW1lLiAqLworICAgIGdydWJfaWVlZTEyNzVfY2VsbF90IG1pc3Npbmc7CisgIH0g YXJnczsKKworICBJTklUX0lFRUUxMjc1X0NPTU1PTiAoJmFyZ3MuY29tbW9uLCAidGVzdCIsIDEs IDEpOworICBhcmdzLm5hbWUgPSAoZ3J1Yl9pZWVlMTI3NV9jZWxsX3QpIG5hbWU7CisKKyAgaWYg KElFRUUxMjc1X0NBTExfRU5UUllfRk4gKCZhcmdzKSA9PSAtMSkKKyAgICByZXR1cm4gLTE7CisK KyAgaWYgKGFyZ3MubWlzc2luZyA9PSBJRUVFMTI3NV9DRUxMX0lOVkFMSUQpCisgICAgcmV0dXJu IC0xOworCisgICptaXNzaW5nID0gYXJncy5taXNzaW5nOworCisgIHJldHVybiAwOworfQorCitn cnViX2ludDMyX3QKK2dydWJfaWVlZTEyNzVfcGtzX21heF9vYmplY3Rfc2l6ZSAoZ3J1Yl9pZWVl MTI3NV9jZWxsX3QgKnJlc3VsdCkKK3sKKyAgc3RydWN0IG1vc19hcmdzCisgIHsKKyAgICBzdHJ1 Y3QgZ3J1Yl9pZWVlMTI3NV9jb21tb25faGRyIGNvbW1vbjsvKiBUaGUgaGVhZGVyIGluZm9ybWF0 aW9uIGxpa2UgaW50ZXJmYWNlIG5hbWUsIG51bWJlciBvZiBpbnB1dHMgYW5kIG91dHB1dHMuICov CisgICAgZ3J1Yl9pZWVlMTI3NV9jZWxsX3Qgc2l6ZTsgICAgICAgICAgICAgLyogVGhlIG1heGlt dW0gb2JqZWN0IHNpemUgZm9yIGEgUEtTIG9iamVjdC4gKi8KKyAgfSBhcmdzOworCisgIElOSVRf SUVFRTEyNzVfQ09NTU9OICgmYXJncy5jb21tb24sICJwa3MtbWF4LW9iamVjdC1zaXplIiwgMCwg MSk7CisKKyAgaWYgKElFRUUxMjc1X0NBTExfRU5UUllfRk4gKCZhcmdzKSA9PSAtMSkKKyAgICBy ZXR1cm4gLTE7CisKKyAgaWYgKGFyZ3Muc2l6ZSA9PSBJRUVFMTI3NV9DRUxMX0lOVkFMSUQpCisg ICAgcmV0dXJuIC0xOworCisgICpyZXN1bHQgPSBhcmdzLnNpemU7CisKKyAgcmV0dXJuIDA7Cit9 CisKK2dydWJfaW50MzJfdAorZ3J1Yl9pZWVlMTI3NV9wa3NfcmVhZF9vYmplY3QgKGNvbnN0IGdy dWJfdWludDhfdCBjb25zdW1lciwgY29uc3QgZ3J1Yl91aW50OF90ICpsYWJlbCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncnViX3NpemVfdCBsYWJlbF9sZW4sIGNvbnN0 IGdydWJfc2l6ZV90IGJ1ZmZlcl9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Z3J1Yl91aW50OF90ICpidWZmZXIsIGdydWJfdWludDMyX3QgKmRhdGFfbGVuLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGdydWJfdWludDMyX3QgKnBvbGljaWVzKQoreworICBzdHJ1 Y3QgcGtzX3JlYWRfYXJncworICB7CisgICAgc3RydWN0IGdydWJfaWVlZTEyNzVfY29tbW9uX2hk ciBjb21tb247IC8qIFRoZSBoZWFkZXIgaW5mb3JtYXRpb24gbGlrZSBpbnRlcmZhY2UgbmFtZSwg bnVtYmVyIG9mIGlucHV0cyBhbmQgb3V0cHV0cy4gKi8KKyAgICBncnViX2llZWUxMjc1X2NlbGxf dCBjb25zdW1lcjsgICAgICAgICAgLyogVGhlIG9iamVjdCBiZWxvbmdpbmcgdG8gY29uc3VtZXIg d2l0aCB0aGUgbGFiZWwuICovCisgICAgZ3J1Yl9pZWVlMTI3NV9jZWxsX3QgbGFiZWw7ICAgICAg ICAgICAgIC8qIE9iamVjdCBsYWJlbCBidWZmZXIgbG9naWNhbCByZWFsIGFkZHJlc3MuICovCisg ICAgZ3J1Yl9pZWVlMTI3NV9jZWxsX3QgbGFiZWxfbGVuOyAgICAgICAgIC8qIFRoZSBieXRlIGxl bmd0aCBvZiB0aGUgb2JqZWN0IGxhYmVsLiAqLworICAgIGdydWJfaWVlZTEyNzVfY2VsbF90IGJ1 ZmZlcjsgICAgICAgICAgICAvKiBPdXRwdXQgYnVmZmVyIGxvZ2ljYWwgcmVhbCBhZGRyZXNzLiAq LworICAgIGdydWJfaWVlZTEyNzVfY2VsbF90IGJ1ZmZlcl9sZW47ICAgICAgICAvKiBMZW5ndGgg b2YgdGhlIG91dHB1dCBidWZmZXIuICovCisgICAgZ3J1Yl9pZWVlMTI3NV9jZWxsX3QgZGF0YV9s ZW47ICAgICAgICAgIC8qIFRoZSBudW1iZXIgb2YgYnl0ZXMgY29waWVkIHRvIHRoZSBvdXRwdXQg YnVmZmVyLiAqLworICAgIGdydWJfaWVlZTEyNzVfY2VsbF90IHBvbGljaWVzOyAgICAgICAgICAv KiBUaGUgb2JqZWN0IHBvbGljaWVzLiAqLworICAgIGdydWJfaW50MzJfdCByYzsgICAgICAgICAg ICAgICAgICAgICAgICAvKiBUaGUgcmV0dXJuIGNvZGUuICovCisgIH0gYXJnczsKKworICBJTklU X0lFRUUxMjc1X0NPTU1PTiAoJmFyZ3MuY29tbW9uLCAicGtzLXJlYWQtb2JqZWN0IiwgNSwgMyk7 CisgIGFyZ3MuY29uc3VtZXIgPSAoZ3J1Yl9pZWVlMTI3NV9jZWxsX3QpIGNvbnN1bWVyOworICBh cmdzLmxhYmVsID0gKGdydWJfaWVlZTEyNzVfY2VsbF90KSBsYWJlbDsKKyAgYXJncy5sYWJlbF9s ZW4gPSAoZ3J1Yl9pZWVlMTI3NV9jZWxsX3QpIGxhYmVsX2xlbjsKKyAgYXJncy5idWZmZXIgPSAo Z3J1Yl9pZWVlMTI3NV9jZWxsX3QpIGJ1ZmZlcjsKKyAgYXJncy5idWZmZXJfbGVuID0gKGdydWJf aWVlZTEyNzVfY2VsbF90KSBidWZmZXJfbGVuOworCisgIGlmIChJRUVFMTI3NV9DQUxMX0VOVFJZ X0ZOICgmYXJncykgPT0gLTEpCisgICAgcmV0dXJuIC0xOworCisgIGlmIChhcmdzLmRhdGFfbGVu ID09IElFRUUxMjc1X0NFTExfSU5WQUxJRCkKKyAgICByZXR1cm4gLTE7CisKKyAgKmRhdGFfbGVu ID0gYXJncy5kYXRhX2xlbjsKKyAgKnBvbGljaWVzID0gYXJncy5wb2xpY2llczsKKworICByZXR1 cm4gYXJncy5yYzsKK30KKworZ3J1Yl9pbnQzMl90CitncnViX2llZWUxMjc1X3Brc19yZWFkX3Ni dmFyIChjb25zdCBncnViX3VpbnQ4X3Qgc2J2YXJfZmxhZ3MsIGNvbnN0IGdydWJfdWludDhfdCBz YnZhcl90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ3J1Yl9zaXpl X3QgYnVmZmVyX2xlbiwgZ3J1Yl91aW50OF90ICpidWZmZXIsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBncnViX3NpemVfdCAqZGF0YV9sZW4pCit7CisgIHN0cnVjdCBwa3NfcmVhZF9z YnZhcl9hcmdzCisgIHsKKyAgICBzdHJ1Y3QgZ3J1Yl9pZWVlMTI3NV9jb21tb25faGRyIGNvbW1v bjsgLyogVGhlIGhlYWRlciBpbmZvcm1hdGlvbiBsaWtlIGludGVyZmFjZSBuYW1lLCBudW1iZXIg b2YgaW5wdXRzIGFuZCBvdXRwdXRzLiAqLworICAgIGdydWJfaWVlZTEyNzVfY2VsbF90IHNidmFy X2ZsYWdzOyAgICAgICAvKiBUaGUgc2J2YXIgb3BlcmF0aW9uIGZsYWdzLiAqLworICAgIGdydWJf aWVlZTEyNzVfY2VsbF90IHNidmFyX3R5cGU7ICAgICAgICAvKiBUaGUgc2J2YXIgYmVpbmcgcmVx dWVzdGVkLiAqLworICAgIGdydWJfaWVlZTEyNzVfY2VsbF90IGJ1ZmZlcjsgICAgICAgICAgICAv KiBPdXRwdXQgYnVmZmVyIGxvZ2ljYWwgcmVhbCBhZGRyZXNzLiAqLworICAgIGdydWJfaWVlZTEy NzVfY2VsbF90IGJ1ZmZlcl9sZW47ICAgICAgICAvKiBMZW5ndGggb2YgdGhlIE91dHB1dCBidWZm ZXIuICovCisgICAgZ3J1Yl9pZWVlMTI3NV9jZWxsX3QgZGF0YV9sZW47ICAgICAgICAgIC8qIFRo ZSBudW1iZXIgb2YgYnl0ZXMgY29waWVkIHRvIHRoZSBvdXRwdXQgYnVmZmVyLiAqLworICAgIGdy dWJfaW50MzJfdCByYzsgICAgICAgICAgICAgICAgICAgICAgICAvKiBUaGUgcmV0dXJuIGNvZGUu ICovCisgIH0gYXJnczsKKworICBJTklUX0lFRUUxMjc1X0NPTU1PTiAoJmFyZ3MuY29tbW9uLCAi cGtzLXJlYWQtc2J2YXIiLCA0LCAyKTsKKyAgYXJncy5zYnZhcl9mbGFncyA9IChncnViX2llZWUx Mjc1X2NlbGxfdCkgc2J2YXJfZmxhZ3M7CisgIGFyZ3Muc2J2YXJfdHlwZSA9IChncnViX2llZWUx Mjc1X2NlbGxfdCkgc2J2YXJfdHlwZTsKKyAgYXJncy5idWZmZXIgPSAoZ3J1Yl9pZWVlMTI3NV9j ZWxsX3QpIGJ1ZmZlcjsKKyAgYXJncy5idWZmZXJfbGVuID0gKGdydWJfaWVlZTEyNzVfY2VsbF90 KSBidWZmZXJfbGVuOworCisgIGlmIChJRUVFMTI3NV9DQUxMX0VOVFJZX0ZOICgmYXJncykgPT0g LTEpCisgICAgcmV0dXJuIC0xOworCisgIGlmIChhcmdzLmRhdGFfbGVuID09IElFRUUxMjc1X0NF TExfSU5WQUxJRCkKKyAgICByZXR1cm4gLTE7CisKKyAgKmRhdGFfbGVuID0gYXJncy5kYXRhX2xl bjsKKworICByZXR1cm4gYXJncy5yYzsKK30KZGlmZiAtLWdpdCBhL2dydWItY29yZS9rZXJuL3Bv d2VycGMvaWVlZTEyNzUvcGxhdGZvcm1fa2V5c3RvcmUuYyBiL2dydWItY29yZS9rZXJuL3Bvd2Vy cGMvaWVlZTEyNzUvcGxhdGZvcm1fa2V5c3RvcmUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAuLmFhZjkwNTAwZgotLS0gL2Rldi9udWxsCisrKyBiL2dydWItY29yZS9rZXJu L3Bvd2VycGMvaWVlZTEyNzUvcGxhdGZvcm1fa2V5c3RvcmUuYwpAQCAtMCwwICsxLDM0MSBAQAor LyoKKyAqICBHUlVCICAtLSAgR1JhbmQgVW5pZmllZCBCb290bG9hZGVyCisgKiAgQ29weXJpZ2h0 IChDKSAyMDI0ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAqICBDb3B5cmlnaHQg KEMpIDIwMjIsIDIwMjMsIDIwMjQsIDIwMjUgSUJNIENvcnBvcmF0aW9uCisgKgorICogIEdSVUIg aXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor ICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAqICAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorICoKKyAqICBHUlVCIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiAgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq ICBhbG9uZyB3aXRoIEdSVUIuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCisgKi8KKworI2luY2x1ZGUgPGdydWIvbW0uaD4KKyNpbmNsdWRlIDxncnViL3R5cGVz Lmg+CisjaW5jbHVkZSA8Z3J1Yi9taXNjLmg+CisjaW5jbHVkZSA8Z3J1Yi9sb2NrZG93bi5oPgor I2luY2x1ZGUgPGdydWIvaWVlZTEyNzUvaWVlZTEyNzUuaD4KKyNpbmNsdWRlIDxncnViL3Bvd2Vy cGMvaWVlZTEyNzUvaWVlZTEyNzUuaD4KKyNpbmNsdWRlIDxncnViL3Bvd2VycGMvaWVlZTEyNzUv cGxhdGZvcm1fa2V5c3RvcmUuaD4KKworI2lmIF9fR05VQ19fID49IDkKKyNwcmFnbWEgR0NDIGRp YWdub3N0aWMgaWdub3JlZCAiLVdhZGRyZXNzLW9mLXBhY2tlZC1tZW1iZXIiCisjZW5kaWYKKwor LyogUEtTIGNvbnN1bWVyIHR5cGUgZm9yIGZpcm13YXJlLiAqLworI2RlZmluZSBQS1NfQ09OU1VN RVJfRlcgICAgICAoKGdydWJfdWludDhfdCkgMSkKKworLyogVGhlIG1heGltdW0gb2JqZWN0IHNp emUgaW50ZXJmYWNlIG5hbWUgZm9yIGEgUEtTIG9iamVjdC4gKi8KKyNkZWZpbmUgUEtTX01BWF9P QkpfU0laRSAgICAgKChncnViX3VpbnQ4X3QgKikgInBrcy1tYXgtb2JqZWN0LXNpemUiKQorCisv KiBQS1MgcmVhZCBvYmplY3QgbGFibGUgZm9yIHNlY3VyZSBib290IHZlcnNpb24uICovCisjZGVm aW5lIFNCX1ZFUlNJT05fS0VZX05BTUUgICgoZ3J1Yl91aW50OF90ICopICJTQl9WRVJTSU9OIikK KyNkZWZpbmUgU0JfVkVSU0lPTl9LRVlfTEVOICAgKChncnViX3NpemVfdCkgMTApCisKKy8qIFBL UyByZWFkIHNlY3VyZSBib290IHZhcmlhYmxlIHJlcXVlc3QgdHlwZSBmb3IgZGIgYW5kIGRieC4g Ki8KKyNkZWZpbmUgREIgICAgICAgICAgICAgICAgICAgKChncnViX3VpbnQ4X3QpIDEpCisjZGVm aW5lIERCWCAgICAgICAgICAgICAgICAgICgoZ3J1Yl91aW50OF90KSAyKQorCitzdGF0aWMgZ3J1 Yl9zaXplX3QgcGtzX21heF9vYmplY3Rfc2l6ZTsKKy8qCisgKiBGbGFnIHRvIGluZGljYXRlIHRo ZSBrZXkgbWFuYWdlbWVudC4KKyAqIFRydWU6IER5bmFtaWMga2V5IG1hbmFnZW1lbnQgKHVzZSBQ bGF0Zm9ybSBLZXlTb3RyZSkuCisgKiBGYWxzZTogU3RhdGljIGtleSBtYW5hZ2VtZW50ICh1c2Ug YnVpbHQtaW4gS2V5cykuCisgKi8KK2Jvb2wgZ3J1Yl9wa3NfdXNlX2tleXN0b3JlID0gZmFsc2U7 CisvKgorICogRmxhZyB0byBpbmRpY2F0ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIFBTSyBzdXBwb3J0 LgorICogVHJ1ZTogUEtTIHN1cHBvcnQgYXZhaWxhYmxlLgorICogRmFsc2U6IE5vIFBLUyBzdXBw b3J0LgorICovCitib29sIGdydWJfcGtzX2lzX3N1cHBvcnRfcGtzID0gZmFsc2U7CisKKy8qIFBs YXRmb3JtIEtleVN0b3JlIGRiIGFuZCBkYnguICovCitncnViX3Brc190IGdydWJfcGtzX2tleXN0 b3JlID0geyAuZGIgPSBOVUxMLCAuZGJ4ID0gTlVMTCwgLmRiX2VudHJpZXMgPSAwLCAuZGJ4X2Vu dHJpZXMgPSAwIH07CisKKy8qCisgKiBJbXBvcnQgdGhlIEdsb2JhbGx5IFVuaXF1ZSBJZGVudGlm aWVyIChHVUlEKSwgRUZJIFNpZ25hdHVyZSBEYXRhYmFzZSAoRVNEKSwKKyAqIGFuZCBpdHMgc2l6 ZSBpbnRvIHRoZSBQS1MgU2lnbmF0dXJlIERhdGFiYXNlIChTRCkgKGkuZSBwa3Nfc2QgYnVmZmVy KSBhbmQgcGtzX3NkIGVudHJpZXMKKyAqIGZyb20gdGhlIEVGSSBTaWduYXR1cmUgTGlzdCAoRVNM KS4KKyAqLworc3RhdGljIGdydWJfZXJyX3QKK2VzZF9mcm9tX2VzbCAoY29uc3QgZ3J1Yl91aW50 OF90ICplc2xfZGF0YSwgZ3J1Yl9zaXplX3QgZXNsX3NpemUsCisgICAgICAgICAgICAgIGNvbnN0 IGdydWJfc2l6ZV90IHNpZ25hdHVyZV9zaXplLCBjb25zdCBncnViX3BhY2tlZF9ndWlkX3QgKmd1 aWQsCisgICAgICAgICAgICAgIGdydWJfcGtzX3NkX3QgKipwa3Nfc2QsIGdydWJfdWludDMyX3Qg KnBrc19zZF9lbnRyaWVzKQoreworICBncnViX2VzZF90ICplc2Q7CisgIGdydWJfcGtzX3NkX3Qg KnNpZ25hdHVyZSA9ICpwa3Nfc2Q7CisgIGdydWJfdWludDMyX3QgZW50cmllcyA9ICpwa3Nfc2Rf ZW50cmllczsKKyAgZ3J1Yl9zaXplX3QgZGF0YV9zaXplLCBvZmZzZXQgPSAwOworCisgIC8qIFJl YWRzIHRoZSBFU0QgZnJvbSBFU0wuICovCisgIHdoaWxlIChlc2xfc2l6ZSA+IDApCisgICAgewor ICAgICAgZXNkID0gKGdydWJfZXNkX3QgKikgKGVzbF9kYXRhICsgb2Zmc2V0KTsKKyAgICAgIGRh dGFfc2l6ZSA9IHNpZ25hdHVyZV9zaXplIC0gc2l6ZW9mIChncnViX2VzZF90KTsKKworICAgICAg c2lnbmF0dXJlID0gZ3J1Yl9yZWFsbG9jIChzaWduYXR1cmUsIChlbnRyaWVzICsgMSkgKiBzaXpl b2YgKGdydWJfcGtzX3NkX3QpKTsKKyAgICAgIGlmIChzaWduYXR1cmUgPT0gTlVMTCkKKyAgICAg ICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX09VVF9PRl9NRU1PUlksICJvdXQgb2YgbWVt b3J5Iik7CisKKyAgICAgIHNpZ25hdHVyZVtlbnRyaWVzXS5kYXRhID0gZ3J1Yl9tYWxsb2MgKGRh dGFfc2l6ZSAqIHNpemVvZiAoZ3J1Yl91aW50OF90KSk7CisgICAgICBpZiAoc2lnbmF0dXJlW2Vu dHJpZXNdLmRhdGEgPT0gTlVMTCkKKyAgICAgICAgeworICAgICAgICAgIC8qCisgICAgICAgICAg ICogQWxsb2NhdGVkIG1lbW9yeSB3aWxsIGJlIGZyZWVkIGJ5CisgICAgICAgICAgICogZ3J1Yl9m cmVlX3BsYXRmb3JtX2tleXN0b3JlLgorICAgICAgICAgICAqLworICAgICAgICAgICpwa3Nfc2Qg PSBzaWduYXR1cmU7CisgICAgICAgICAgKnBrc19zZF9lbnRyaWVzID0gZW50cmllcyArIDE7Cisg ICAgICAgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX09VVF9PRl9NRU1PUlksICJvdXQg b2YgbWVtb3J5Iik7CisgICAgICAgIH0KKworICAgICAgZ3J1Yl9tZW1jcHkgKHNpZ25hdHVyZVtl bnRyaWVzXS5kYXRhLCBlc2QtPnNpZ25hdHVyZV9kYXRhLCBkYXRhX3NpemUpOworICAgICAgc2ln bmF0dXJlW2VudHJpZXNdLmRhdGFfc2l6ZSA9IGRhdGFfc2l6ZTsKKyAgICAgIHNpZ25hdHVyZVtl bnRyaWVzXS5ndWlkID0gKmd1aWQ7CisgICAgICBlbnRyaWVzKys7CisgICAgICBlc2xfc2l6ZSAt PSBzaWduYXR1cmVfc2l6ZTsKKyAgICAgIG9mZnNldCArPSBzaWduYXR1cmVfc2l6ZTsKKyAgICB9 CisKKyAgKnBrc19zZCA9IHNpZ25hdHVyZTsKKyAgKnBrc19zZF9lbnRyaWVzID0gZW50cmllczsK KworICByZXR1cm4gR1JVQl9FUlJfTk9ORTsKK30KKworLyogRXh0cmFjdCB0aGUgRVNEIGFmdGVy IHJlbW92aW5nIHRoZSBFU0wgaGVhZGVyIGZyb20gRVNMLiAqLworc3RhdGljIGdydWJfZXJyX3QK K2VzbF90b19lc2QgKGNvbnN0IGdydWJfdWludDhfdCAqZXNsX2RhdGEsIGdydWJfc2l6ZV90ICpu ZXh0X2VzbCwKKyAgICAgICAgICAgIGdydWJfcGtzX3NkX3QgKipwa3Nfc2QsIGdydWJfdWludDMy X3QgKnBrc19zZF9lbnRyaWVzKQoreworICBncnViX3BhY2tlZF9ndWlkX3QgZ3VpZDsKKyAgZ3J1 Yl9lc2xfdCAqZXNsOworICBncnViX3NpemVfdCBvZmZzZXQsIGVzbF9zaXplLAorICAgICAgICAg ICAgICBzaWduYXR1cmVfc2l6ZSwgc2lnbmF0dXJlX2hlYWRlcl9zaXplOworCisgIC8qIENvbnZl cnQgdGhlIEVTTCBkYXRhIGludG8gdGhlIEVTTC4gKi8KKyAgZXNsID0gKGdydWJfZXNsX3QgKikg ZXNsX2RhdGE7CisgIGlmICgqbmV4dF9lc2wgPCBzaXplb2YgKGdydWJfZXNsX3QpIHx8IGVzbCA9 PSBOVUxMKQorICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CVUcsICJpbnZhbGlkIEVT TCIpOworCisgIGVzbF9zaXplID0gZ3J1Yl9sZV90b19jcHUzMiAoZXNsLT5zaWduYXR1cmVfbGlz dF9zaXplKTsKKyAgc2lnbmF0dXJlX2hlYWRlcl9zaXplID0gZ3J1Yl9sZV90b19jcHUzMiAoZXNs LT5zaWduYXR1cmVfaGVhZGVyX3NpemUpOworICBzaWduYXR1cmVfc2l6ZSA9IGdydWJfbGVfdG9f Y3B1MzIgKGVzbC0+c2lnbmF0dXJlX3NpemUpOworICBncnViX21lbWNweSAoJmd1aWQsICZlc2wt PnNpZ25hdHVyZV90eXBlLCBzaXplb2YgKGdydWJfcGFja2VkX2d1aWRfdCkpOworCisgIGlmIChl c2xfc2l6ZSA8IHNpemVvZiAoZ3J1Yl9lc2xfdCkgfHwgZXNsX3NpemUgPiAqbmV4dF9lc2wpCisg ICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JVRywgImludmFsaWQgRVNMIHNpemUgKCV1 KVxuIiwgZXNsX3NpemUpOworCisgICpuZXh0X2VzbCA9IGVzbF9zaXplOworICBvZmZzZXQgPSBz aXplb2YgKGdydWJfZXNsX3QpICsgc2lnbmF0dXJlX2hlYWRlcl9zaXplOworICBlc2xfc2l6ZSA9 IGVzbF9zaXplIC0gb2Zmc2V0OworCisgIHJldHVybiBlc2RfZnJvbV9lc2wgKGVzbF9kYXRhICsg b2Zmc2V0LCBlc2xfc2l6ZSwgc2lnbmF0dXJlX3NpemUsICZndWlkLAorICAgICAgICAgICAgICAg ICAgICAgICBwa3Nfc2QsIHBrc19zZF9lbnRyaWVzKTsKK30KKworLyoKKyAqIEltcG9ydCB0aGUg RUZJIFNpZ25hdHVyZSBEYXRhYmFzZSAoRVNEKSBhbmQgdGhlIG51bWJlciBvZiBFU0QgZnJvbSB0 aGUgRVNMCisgKiBpbnRvIHRoZSBwa3Nfc2QgYnVmZmVyIGFuZCBwa3Nfc2QgZW50cmllcy4KKyAq Lworc3RhdGljIGdydWJfZXJyX3QKK3Brc19zZF9mcm9tX2VzbCAoY29uc3QgZ3J1Yl91aW50OF90 ICplc2xfZGF0YSwgZ3J1Yl9zaXplX3QgZXNsX3NpemUsCisgICAgICAgICAgICAgICAgIGdydWJf cGtzX3NkX3QgKipwa3Nfc2QsIGdydWJfdWludDMyX3QgKnBrc19zZF9lbnRyaWVzKQoreworICBn cnViX2Vycl90IHJjOworICBncnViX3NpemVfdCBuZXh0X2VzbCA9IGVzbF9zaXplOworCisgIGRv CisgICAgeworICAgICAgcmMgPSBlc2xfdG9fZXNkIChlc2xfZGF0YSwgJm5leHRfZXNsLCBwa3Nf c2QsIHBrc19zZF9lbnRyaWVzKTsKKyAgICAgIGlmIChyYyAhPSBHUlVCX0VSUl9OT05FKQorICAg ICAgICBicmVhazsKKworICAgICAgZXNsX2RhdGEgKz0gbmV4dF9lc2w7CisgICAgICBlc2xfc2l6 ZSAtPSBuZXh0X2VzbDsKKyAgICAgIG5leHRfZXNsID0gZXNsX3NpemU7CisgICAgfQorICB3aGls ZSAoZXNsX3NpemUgPiAwKTsKKworICByZXR1cm4gcmM7Cit9CisKKy8qCisgKiBSZWFkIHRoZSBz ZWN1cmUgYm9vdCB2ZXJzaW9uIGZyb20gUEtTIGFzIGFuIG9iamVjdC4KKyAqIENhbGxlciBtdXN0 IGZyZWUgcmVzdWx0LgorICovCitzdGF0aWMgZ3J1Yl9lcnJfdAorcmVhZF9zYnZlcnNpb25fZnJv bV9wa3MgKGdydWJfdWludDhfdCAqKm91dCwgZ3J1Yl91aW50MzJfdCAqb3V0bGVuLCBncnViX3Vp bnQzMl90ICpwb2xpY3kpCit7CisgIGdydWJfaW50MzJfdCByYzsKKworICAqb3V0ID0gZ3J1Yl9t YWxsb2MgKHBrc19tYXhfb2JqZWN0X3NpemUpOworICBpZiAoKm91dCA9PSBOVUxMKQorICAgIHJl dHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9PVVRfT0ZfTUVNT1JZLCAib3V0IG9mIG1lbW9yeSIp OworCisgIHJjID0gZ3J1Yl9pZWVlMTI3NV9wa3NfcmVhZF9vYmplY3QgKFBLU19DT05TVU1FUl9G VywgU0JfVkVSU0lPTl9LRVlfTkFNRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgU0JfVkVSU0lPTl9LRVlfTEVOLCBwa3NfbWF4X29iamVjdF9zaXplLCAqb3V0LAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRsZW4sIHBvbGljeSk7CisgIGlm IChyYyA8IDApCisgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX1JFQURfRVJST1IsICJT QiB2ZXJzaW9uIHJlYWQgZmFpbGVkICglZClcbiIsIHJjKTsKKworICByZXR1cm4gR1JVQl9FUlJf Tk9ORTsKK30KKworLyoKKyAqIFJlYWRzIHRoZSBzZWN1cmUgYm9vdCB2YXJpYWJsZSBmcm9tIFBL Uy4KKyAqIENhbGxlciBtdXN0IGZyZWUgcmVzdWx0LgorICovCitzdGF0aWMgZ3J1Yl9lcnJfdAor cmVhZF9zYnZhcl9mcm9tX3BrcyAoY29uc3QgZ3J1Yl91aW50OF90IHNidmFyZmxhZ3MsIGNvbnN0 IGdydWJfdWludDhfdCBzYnZhcnR5cGUsCisgICAgICAgICAgICAgICAgICAgICBncnViX3VpbnQ4 X3QgKipvdXQsIGdydWJfc2l6ZV90ICpvdXRsZW4pCit7CisgIGdydWJfaW50MzJfdCByYzsKKwor ICAqb3V0ID0gZ3J1Yl9tYWxsb2MgKHBrc19tYXhfb2JqZWN0X3NpemUpOworICBpZiAoKm91dCA9 PSBOVUxMKQorICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9PVVRfT0ZfTUVNT1JZLCAi b3V0IG9mIG1lbW9yeSIpOworCisgIHJjID0gZ3J1Yl9pZWVlMTI3NV9wa3NfcmVhZF9zYnZhciAo c2J2YXJmbGFncywgc2J2YXJ0eXBlLCBwa3NfbWF4X29iamVjdF9zaXplLCAqb3V0LCBvdXRsZW4p OworICBpZiAocmMgPT0gSUVFRTEyNzVfQ0VMTF9OT1RfRk9VTkQpCisgICAgcmV0dXJuIGdydWJf ZXJyb3IgKEdSVUJfRVJSX1VOS05PV05fQ09NTUFORCwgInNlY3VyZSBib290IHZhcmlhYmxlICVz IG5vdCBmb3VuZCAoJWQpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgKHNidmFydHlwZSA9PSBE QiA/ICJkYiIgOiAiZGJ4IiksIHJjKTsKKyAgZWxzZSBpZiAocmMgPCAwKQorICAgIHJldHVybiBn cnViX2Vycm9yIChHUlVCX0VSUl9SRUFEX0VSUk9SLCAic2VjdXJlIGJvb3QgdmFyaWFibGUgJXMg cmVhZGluZyAoJWQpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgKHNidmFydHlwZSA9PSBEQiA/ ICJkYiIgOiAiZGJ4IiksIHJjKTsKKworICByZXR1cm4gR1JVQl9FUlJfTk9ORTsKK30KKworLyog VGVzdCB0aGUgYXZhaWxhYmlsaXR5IG9mIFBLUyBzdXBwb3J0LiAqLworc3RhdGljIGdydWJfZXJy X3QKK2lzX3N1cHBvcnRfcGtzICh2b2lkKQoreworICBncnViX2ludDMyX3QgcmM7CisgIGdydWJf aWVlZTEyNzVfY2VsbF90IG1pc3NpbmcgPSAwOworCisgIHJjID0gZ3J1Yl9pZWVlMTI3NV90ZXN0 IChQS1NfTUFYX09CSl9TSVpFLCAmbWlzc2luZyk7CisgIGlmIChyYyA8IDAgfHwgbWlzc2luZyA9 PSBJRUVFMTI3NV9DRUxMX0lOVkFMSUQpCisgICAgcmV0dXJuICBncnViX2Vycm9yIChHUlVCX0VS Ul9CQURfRklSTVdBUkUsICJmaXJtd2FyZSBkb2Vzbid0IGhhdmUgUEtTIHN1cHBvcnRcbiIpOwor ICBlbHNlCisgICAgeworICAgICAgcmMgPSBncnViX2llZWUxMjc1X3Brc19tYXhfb2JqZWN0X3Np emUgKCZwa3NfbWF4X29iamVjdF9zaXplKTsKKyAgICAgIGlmIChyYyA8IDApCisgICAgICAgIHJl dHVybiAgZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX05VTUJFUiwgIlBLUyBzdXBwb3J0IGlzIHRo ZXJlIGJ1dCBpdCBoYXMgemVybyBvYmplY3RzXG4iKTsKKyAgICB9CisKKyAgcmV0dXJuIEdSVUJf RVJSX05PTkU7Cit9CisKKy8qCisgKiBSZXRyaWV2ZSB0aGUgc2VjdXJlIGJvb3QgdmFyaWFibGUg ZnJvbSBQS1MsIHVucGFja3MgaXQsIHJlYWQgdGhlIEVTRAorICogZnJvbSBFU0wsIGFuZCBzdG9y ZSB0aGUgaW5mb3JtYXRpb24gaW4gdGhlIHBrc19zZCBidWZmZXIuCisgKi8KK3N0YXRpYyBncnVi X2Vycl90CityZWFkX3NlY3VyZV9ib290X3ZhcmlhYmxlcyAoY29uc3QgZ3J1Yl91aW50OF90IHNi dmFyZmxhZ3MsIGNvbnN0IGdydWJfdWludDhfdCBzYnZhcnR5cGUsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZ3J1Yl9wa3Nfc2RfdCAqKnBrc19zZCwgZ3J1Yl91aW50MzJfdCAqcGtzX3Nk X2VudHJpZXMpCit7CisgIGdydWJfZXJyX3QgcmM7CisgIGdydWJfdWludDhfdCAqZXNsX2RhdGEg PSBOVUxMOworICBncnViX3NpemVfdCBlc2xfZGF0YV9zaXplID0gMDsKKworICByYyA9IHJlYWRf c2J2YXJfZnJvbV9wa3MgKHNidmFyZmxhZ3MsIHNidmFydHlwZSwgJmVzbF9kYXRhLCAmZXNsX2Rh dGFfc2l6ZSk7CisgIGlmIChyYyA9PSBHUlVCX0VSUl9OT05FICYmIGVzbF9kYXRhX3NpemUgIT0g MCkKKyAgICByYyA9IHBrc19zZF9mcm9tX2VzbCAoKGNvbnN0IGdydWJfdWludDhfdCAqKSBlc2xf ZGF0YSwgZXNsX2RhdGFfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcGtzX3NkLCBw a3Nfc2RfZW50cmllcyk7CisgIGdydWJfZnJlZSAoZXNsX2RhdGEpOworCisgIHJldHVybiByYzsK K30KKworLyoKKyAqIFJlYWRzIHNlY3VyZSBib290IHZlcnNpb24gKFNCX1ZFUlNJT04pIGFuZCBp dCBzdXBwb3J0cyBmb2xsb3dpbmcuCisgKiBTQl9WRVJTSU9OOgorICogMSAtIEVuYWJsZSBkeW5h bWljIGtleSBtYW5hZ2VtZW50IG1vZGUuIFJlYWQgdGhlIGRiIGFuZCBkYnggdmFyaWFibGVzIGZy b20gUEtTLAorICAgICAgIGFuZCB1c2UgdGhlbSBmb3Igc2lnbmF0dXJlIHZlcmlmaWNhdGlvbi4K KyAqIDAgLSBFbmFibGUgc3RhdGljIGtleSBtYW5hZ2VtZW50IG1vZGUuIFJlYWQga2V5cyBmcm9t IHRoZSBHUlVCIEVMRiBOb3RlIGFuZAorICogICAgIHVzZSBpdCBmb3Igc2lnbmF0dXJlIHZlcmlm aWNhdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK2dldF9zZWN1cmVfYm9vdF92ZXJzaW9uICh2b2lk KQoreworICBncnViX2Vycl90IHJjOworICBncnViX3VpbnQ4X3QgKmRhdGEgPSBOVUxMOworICBn cnViX3VpbnQzMl90IGxlbiA9IDAsIHBvbGljeSA9IDA7CisKKyAgcmMgPSByZWFkX3NidmVyc2lv bl9mcm9tX3BrcyAoJmRhdGEsICZsZW4sICZwb2xpY3kpOworICBpZiAocmMgPT0gR1JVQl9FUlJf Tk9ORSAmJiAobGVuICE9IDEgfHwgKCpkYXRhID49IDIpKSkKKyAgICBncnViX2Vycm9yIChHUlVC X0VSUl9CQURfTlVNQkVSLCAiZm91bmQgdW5leHBlY3RlZCBTQiB2ZXJzaW9uICglZClcbiIsICpk YXRhKTsKKworICBpZiAocmMgIT0gR1JVQl9FUlJfTk9ORSkKKyAgICBncnViX2RwcmludGYgKCJp ZWVlMTI3NSIsICJzd2l0Y2ggdG8gc3RhdGljIGtleVxuIik7CisgIGVsc2UgaWYgKCpkYXRhKQor ICAgIGdydWJfcGtzX3VzZV9rZXlzdG9yZSA9IHRydWU7CisKKyAgZ3J1Yl9mcmVlIChkYXRhKTsK K30KKworLyogRnJlZSBhbGxvY2F0ZWQgbWVtb3J5LiAqLwordm9pZAorZ3J1Yl9wa3NfZnJlZV9r ZXlzdG9yZSAodm9pZCkKK3sKKyAgZ3J1Yl9zaXplX3QgaTsKKworICBmb3IgKGkgPSAwOyBpIDwg Z3J1Yl9wa3Nfa2V5c3RvcmUuZGJfZW50cmllczsgaSsrKQorICAgIGdydWJfZnJlZSAoZ3J1Yl9w a3Nfa2V5c3RvcmUuZGJbaV0uZGF0YSk7CisKKyAgZm9yIChpID0gMDsgaSA8IGdydWJfcGtzX2tl eXN0b3JlLmRieF9lbnRyaWVzOyBpKyspCisgICAgZ3J1Yl9mcmVlIChncnViX3Brc19rZXlzdG9y ZS5kYnhbaV0uZGF0YSk7CisKKyAgZ3J1Yl9mcmVlIChncnViX3Brc19rZXlzdG9yZS5kYik7Cisg IGdydWJfZnJlZSAoZ3J1Yl9wa3Nfa2V5c3RvcmUuZGJ4KTsKKyAgZ3J1Yl9tZW1zZXQgKCZncnVi X3Brc19rZXlzdG9yZSwgMCwgc2l6ZW9mIChncnViX3Brc190KSk7Cit9CisKKy8qIEluaXRpYWxp emF0aW9uIG9mIHRoZSBQbGF0Zm9ybSBLZXlTdG9yZS4gKi8KK2dydWJfZXJyX3QKK2dydWJfcGtz X2tleXN0b3JlX2luaXQgKHZvaWQpCit7CisgIGdydWJfZXJyX3QgcmM7CisKKyAgZ3J1Yl9kcHJp bnRmICgiaWVlZTEyNzUiLCAidHJ5aW5nIHRvIGxvYWQgUGxhdGZvcm0gS2V5U3RvcmVcbiIpOwor CisgIHJjID0gaXNfc3VwcG9ydF9wa3MgKCk7CisgIGlmIChyYyAhPSBHUlVCX0VSUl9OT05FKQor ICAgIHsKKyAgICAgIGdydWJfZHByaW50ZiAoImllZWUxMjc1IiwgInN3aXRjaCB0byBzdGF0aWMg a2V5XG4iKTsKKyAgICAgIHJldHVybiByYzsKKyAgICB9CisgIGVsc2UKKyAgIGdydWJfcGtzX2lz X3N1cHBvcnRfcGtzID0gdHJ1ZTsKKworICAvKiBSZWFkIFNCX1ZFUlNJT04gZnJvbSBQS1MuICov CisgIGdldF9zZWN1cmVfYm9vdF92ZXJzaW9uICgpOworCisgIGlmIChncnViX3Brc19pc19zdXBw b3J0X3BrcyA9PSB0cnVlKQorICAgIHsKKyAgICAgIGdydWJfbWVtc2V0ICgmZ3J1Yl9wa3Nfa2V5 c3RvcmUsIDAsIHNpemVvZiAoZ3J1Yl9wa3NfdCkpOworICAgICAgLyogUmVhZCBkYiBmcm9tIFBL Uy4gKi8KKyAgICAgIHJjID0gcmVhZF9zZWN1cmVfYm9vdF92YXJpYWJsZXMgKDAsIERCLCAmZ3J1 Yl9wa3Nfa2V5c3RvcmUuZGIsICZncnViX3Brc19rZXlzdG9yZS5kYl9lbnRyaWVzKTsKKyAgICAg IGlmIChyYyA9PSBHUlVCX0VSUl9OT05FKQorICAgICAgICB7CisgICAgICAgICAgLyogUmVhZCBk YnggZnJvbSBQS1MuICovCisgICAgICAgICAgcmMgPSByZWFkX3NlY3VyZV9ib290X3ZhcmlhYmxl cyAoMCwgREJYLCAmZ3J1Yl9wa3Nfa2V5c3RvcmUuZGJ4LCAmZ3J1Yl9wa3Nfa2V5c3RvcmUuZGJ4 X2VudHJpZXMpOworICAgICAgICAgIGlmIChyYyA9PSBHUlVCX0VSUl9VTktOT1dOX0NPTU1BTkQp CisgICAgICAgICAgcmMgPSBHUlVCX0VSUl9OT05FOworICAgICAgICB9CisKKyAgICAgIGlmIChy YyAhPSBHUlVCX0VSUl9OT05FKQorICAgICAgICBncnViX3Brc19mcmVlX2tleXN0b3JlICgpOwor ICAgIH0KKworICByZXR1cm4gcmM7Cit9CmRpZmYgLS1naXQgYS9pbmNsdWRlL2dydWIvaWVlZTEy NzUvaWVlZTEyNzUuaCBiL2luY2x1ZGUvZ3J1Yi9pZWVlMTI3NS9pZWVlMTI3NS5oCmluZGV4IGM0 NDVkMDQ5OS4uMTU3ZWQ1N2JlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2dydWIvaWVlZTEyNzUvaWVl ZTEyNzUuaAorKysgYi9pbmNsdWRlL2dydWIvaWVlZTEyNzUvaWVlZTEyNzUuaApAQCAtMjQsNiAr MjQsOSBAQAogI2luY2x1ZGUgPGdydWIvdHlwZXMuaD4KICNpbmNsdWRlIDxncnViL21hY2hpbmUv aWVlZTEyNzUuaD4KIAorI2RlZmluZSBJRUVFMTI3NV9DRUxMX0lOVkFMSUQgICAgICAgICAgKChn cnViX2llZWUxMjc1X2NlbGxfdCkgLTEpCisjZGVmaW5lIElFRUUxMjc1X0NFTExfTk9UX0ZPVU5E ICAgICAgICAoKGdydWJfaW50MzJfdCkgLTcpCisKICNkZWZpbmUgR1JVQl9JRUVFMTI3NV9DRUxM X0ZBTFNFICAgICAgICgoZ3J1Yl9pZWVlMTI3NV9jZWxsX3QpIDApCiAjZGVmaW5lIEdSVUJfSUVF RTEyNzVfQ0VMTF9UUlVFICAgICAgICAoKGdydWJfaWVlZTEyNzVfY2VsbF90KSAtMSkKIApkaWZm IC0tZ2l0IGEvaW5jbHVkZS9ncnViL3Bvd2VycGMvaWVlZTEyNzUvaWVlZTEyNzUuaCBiL2luY2x1 ZGUvZ3J1Yi9wb3dlcnBjL2llZWUxMjc1L2llZWUxMjc1LmgKaW5kZXggNGViMjA3MDE4Li4xOWE0 NzcyYmYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZ3J1Yi9wb3dlcnBjL2llZWUxMjc1L2llZWUxMjc1 LmgKKysrIGIvaW5jbHVkZS9ncnViL3Bvd2VycGMvaWVlZTEyNzUvaWVlZTEyNzUuaApAQCAtMjgs NCArMjgsMjQgQEAgdHlwZWRlZiBncnViX3VpbnQzMl90IGdydWJfaWVlZTEyNzVfY2VsbF90Owog I2RlZmluZSBQUkl4R1JVQl9JRUVFMTI3NV9DRUxMX1QJUFJJeEdSVUJfVUlOVDMyX1QKICNkZWZp bmUgUFJJdUdSVUJfSUVFRTEyNzVfQ0VMTF9UCVBSSXVHUlVCX1VJTlQzMl9UCiAKKyNpZmRlZiBf X3Bvd2VycGNfXworCitleHRlcm4gZ3J1Yl9pbnQzMl90CitncnViX2llZWUxMjc1X3Rlc3QgKGNv bnN0IGdydWJfdWludDhfdCAqbmFtZSwgZ3J1Yl9pZWVlMTI3NV9jZWxsX3QgKm1pc3NpbmcpOwor CitleHRlcm4gZ3J1Yl9pbnQzMl90CitncnViX2llZWUxMjc1X3Brc19tYXhfb2JqZWN0X3NpemUg KGdydWJfaWVlZTEyNzVfY2VsbF90ICpyZXN1bHQpOworCitleHRlcm4gZ3J1Yl9pbnQzMl90Citn cnViX2llZWUxMjc1X3Brc19yZWFkX29iamVjdCAoY29uc3QgZ3J1Yl91aW50OF90IGNvbnN1bWVy LCBjb25zdCBncnViX3VpbnQ4X3QgKmxhYmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IGdydWJfc2l6ZV90IGxhYmVsX2xlbiwgY29uc3QgZ3J1Yl9zaXplX3QgYnVmZmVy X2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnViX3VpbnQ4X3QgKmJ1ZmZl ciwgZ3J1Yl91aW50MzJfdCAqZGF0YV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ3J1Yl91aW50MzJfdCAqcG9saWNpZXMpOworCitleHRlcm4gZ3J1Yl9pbnQzMl90CitncnVi X2llZWUxMjc1X3Brc19yZWFkX3NidmFyIChjb25zdCBncnViX3VpbnQ4X3Qgc2J2YXJfZmxhZ3Ms IGNvbnN0IGdydWJfdWludDhfdCBzYnZhcl90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgZ3J1Yl91aW50MzJfdCBidWZmZXJfbGVuLCBncnViX3VpbnQ4X3QgKmJ1ZmZl ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydWJfc2l6ZV90ICpkYXRhX2xlbik7 CisjZW5kaWYKKwogI2VuZGlmIC8qICEgR1JVQl9JRUVFMTI3NV9NQUNISU5FX0hFQURFUiAqLwpk aWZmIC0tZ2l0IGEvaW5jbHVkZS9ncnViL3Bvd2VycGMvaWVlZTEyNzUvcGxhdGZvcm1fa2V5c3Rv cmUuaCBiL2luY2x1ZGUvZ3J1Yi9wb3dlcnBjL2llZWUxMjc1L3BsYXRmb3JtX2tleXN0b3JlLmgK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi40YjM0YTMxOTgKLS0tIC9kZXYv bnVsbAorKysgYi9pbmNsdWRlL2dydWIvcG93ZXJwYy9pZWVlMTI3NS9wbGF0Zm9ybV9rZXlzdG9y ZS5oCkBAIC0wLDAgKzEsMTQyIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA2IC0gMjAxNSwg SW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMKKyAqIHByb2dyYW0g YW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFp bGFibGUKKyAqIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgMi1DbGF1c2Ug QlNEIExpY2Vuc2Ugd2hpY2gKKyAqIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLgorICoK KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmli dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90 aWNlLAorICogdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh aW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0 aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogZG9jdW1lbnRhdGlv biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS UyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP UFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJF Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERB TUFHRS4KKyAqCisgKiBodHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazItc3RhZ2luZyAo ZWRrMi1zdGFnaW5nIHJlcG8gb2YgdGlhbm9jb3JlKSwKKyAqIHRoZSBJbWFnZUF1dGhlbnRpY2F0 aW9uLmggZmlsZSB1bmRlciBpdCwgYW5kIGhlcmUncyB0aGUgY29weXJpZ2h0IGFuZCBsaWNlbnNl LgorICoKKyAqIE1kZVBrZy9JbmNsdWRlL0d1aWQvSW1hZ2VBdXRoZW50aWNhdGlvbi5oCisgKgor ICogQ29weXJpZ2h0IDIwMjIsIDIwMjMsIDIwMjQsIDIwMjUgSUJNIENvcnAuCisgKi8KKworI2lm bmRlZiBQTEFURk9STV9LRVlTVE9SRV9IRUFERVIKKyNkZWZpbmUgUExBVEZPUk1fS0VZU1RPUkVf SEVBREVSICAgIDEKKworI2luY2x1ZGUgPGdydWIvc3ltYm9sLmg+CisjaW5jbHVkZSA8Z3J1Yi9t bS5oPgorI2luY2x1ZGUgPGdydWIvdHlwZXMuaD4KKworI2RlZmluZSBHUlVCX01BWF9IQVNIX1NJ WkUgNjQKKworLyoKKyAqIEl0IGlzIGRlcml2ZWQgZnJvbSBFRklfU0lHTkFUVVJFX0RBVEEKKyAq IGh0dHBzOi8vZ2l0aHViLmNvbS90aWFub2NvcmUvZWRrMi1zdGFnaW5nL2Jsb2IvbWFzdGVyL01k ZVBrZy9JbmNsdWRlL0d1aWQvSW1hZ2VBdXRoZW50aWNhdGlvbi5oCisgKgorICogVGhlIHN0cnVj dHVyZSBvZiBhbiBFRkkgU2lnbmF0dXJlIERhdGFiYXNlIChFU0QpLiAqLworc3RydWN0IGdydWJf ZXNkCit7CisgIC8qCisgICAqIEFuIGlkZW50aWZpZXIgd2hpY2ggaWRlbnRpZmllcyB0aGUgYWdl bnQgd2hpY2ggYWRkZWQKKyAgICogdGhlIHNpZ25hdHVyZSB0byB0aGUgbGlzdC4KKyAgICovCisg IGdydWJfcGFja2VkX2d1aWRfdCBzaWduYXR1cmVfb3duZXI7CisgIC8qIFRoZSBmb3JtYXQgb2Yg dGhlIHNpZ25hdHVyZSBpcyBkZWZpbmVkIGJ5IHRoZSBTaWduYXR1cmVUeXBlLiAqLworICBncnVi X3VpbnQ4X3Qgc2lnbmF0dXJlX2RhdGFbXTsKK30gR1JVQl9QQUNLRUQ7Cit0eXBlZGVmIHN0cnVj dCBncnViX2VzZCBncnViX2VzZF90OworCisvKgorICogSXQgaXMgZGVyaXZlZCBmcm9tIEVGSV9T SUdOQVRVUkVfTElTVAorICogaHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS9lZGsyLXN0YWdp bmcvYmxvYi9tYXN0ZXIvTWRlUGtnL0luY2x1ZGUvR3VpZC9JbWFnZUF1dGhlbnRpY2F0aW9uLmgK KyAqCisgKiBUaGUgc3RydWN0dXJlIG9mIGFuIEVGSSBTaWduYXR1cmUgTGlzdCAoRVNMKS4gKi8K K3N0cnVjdCBncnViX2VzbAoreworICAvKiBUeXBlIG9mIHRoZSBzaWduYXR1cmUuIEdVSUQgc2ln bmF0dXJlIHR5cGVzIGFyZSBkZWZpbmVkIGluIGJlbG93LiAqLworICBncnViX3BhY2tlZF9ndWlk X3Qgc2lnbmF0dXJlX3R5cGU7CisgIC8qIFRvdGFsIHNpemUgb2YgdGhlIHNpZ25hdHVyZSBsaXN0 LCBpbmNsdWRpbmcgdGhpcyBoZWFkZXIuICovCisgIGdydWJfdWludDMyX3Qgc2lnbmF0dXJlX2xp c3Rfc2l6ZTsKKyAgLyoKKyAgICogU2l6ZSBvZiB0aGUgc2lnbmF0dXJlIGhlYWRlciB3aGljaCBw cmVjZWRlcworICAgKiB0aGUgYXJyYXkgb2Ygc2lnbmF0dXJlcy4KKyAgICovCisgIGdydWJfdWlu dDMyX3Qgc2lnbmF0dXJlX2hlYWRlcl9zaXplOworICAvKiBTaXplIG9mIGVhY2ggc2lnbmF0dXJl LiovCisgIGdydWJfdWludDMyX3Qgc2lnbmF0dXJlX3NpemU7Cit9IEdSVUJfUEFDS0VEOwordHlw ZWRlZiBzdHJ1Y3QgZ3J1Yl9lc2wgZ3J1Yl9lc2xfdDsKKworLyogVGhlIHN0cnVjdHVyZSBvZiBh IFBLUyBTaWduYXR1cmUgRGF0YWJhc2UgKFNEKS4gKi8KK3N0cnVjdCBncnViX3Brc19zZAorewor ICBncnViX3BhY2tlZF9ndWlkX3QgZ3VpZDsgLyogU2lnbmF0dXJlIHR5cGUuICovCisgIGdydWJf dWludDhfdCAqZGF0YTsgICAgICAvKiBTaWduYXR1cmUgZGF0YS4gKi8KKyAgZ3J1Yl9zaXplX3Qg ZGF0YV9zaXplOyAgIC8qIFNpemUgb2Ygc2lnbmF0dXJlIGRhdGEuICovCit9IEdSVUJfUEFDS0VE OwordHlwZWRlZiBzdHJ1Y3QgZ3J1Yl9wa3Nfc2QgZ3J1Yl9wa3Nfc2RfdDsKKworLyogVGhlIHN0 cnVjdHVyZSBvZiBhIFBsYXRmb3JtIEtleXN0b3JlIChQS1MpLiAqLworc3RydWN0IGdydWJfcGtz Cit7CisgIGdydWJfcGtzX3NkX3QgKmRiOyAgICAgICAgLyogU2lnbmF0dXJlIGRhdGFiYXNlLiAq LworICBncnViX3Brc19zZF90ICpkYng7ICAgICAgIC8qIEZvcmJpZGRlbiBzaWduYXR1cmUgZGF0 YWJhc2UuICovCisgIGdydWJfdWludDMyX3QgZGJfZW50cmllczsgLyogU2l6ZSBvZiBzaWduYXR1 cmUgZGF0YWJhc2UuICovCisgIGdydWJfdWludDMyX3QgZGJ4X2VudHJpZXM7LyogU2l6ZSBvZiBm b3JiaWRkZW4gc2lnbmF0dXJlIGRhdGFiYXNlLiAqLworfSBHUlVCX1BBQ0tFRDsKK3R5cGVkZWYg c3RydWN0IGdydWJfcGtzIGdydWJfcGtzX3Q7CisKKyNpZiBkZWZpbmVkKF9fcG93ZXJwY19fKQor CisvKgorICogRmxhZyB0byBpbmRpY2F0ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIFBTSyBzdXBwb3J0 LgorICogVHJ1ZTogUEtTIHN1cHBvcnQgYXZhaWxhYmxlLgorICogRmFsc2U6IE5vIFBLUyBzdXBw b3J0LgorICovCitleHRlcm4gYm9vbCBFWFBPUlRfVkFSIChncnViX3Brc19pc19zdXBwb3J0X3Br cyk7CisvKgorICogRmxhZyB0byBpbmRpY2F0ZSB0aGUga2V5IG1hbmFnZW1lbnQuCisgKiBUcnVl OiBEeW5hbWljIGtleSBtYW5hZ2VtZW50ICh1c2UgUGxhdGZvcm0gS2V5U290cmUpLgorICogRmFs c2U6IFN0YXRpYyBrZXkgbWFuYWdlbWVudCAodXNlIGJ1aWx0LWluIEtleXMpLgorICovCitleHRl cm4gYm9vbCBFWFBPUlRfVkFSIChncnViX3Brc191c2Vfa2V5c3RvcmUpOworLyogUGxhdGZvcm0g S2V5U3RvcmUgZGIgYW5kIGRieC4gKi8KK2V4dGVybiBncnViX3Brc190IEVYUE9SVF9WQVIgKGdy dWJfcGtzX2tleXN0b3JlKTsKKworLyogSW5pdGlhbGl6YXRpb24gb2YgdGhlIFBsYXRmb3JtIEtl eXN0b3JlLiAqLworZXh0ZXJuIGdydWJfZXJyX3QKK2dydWJfcGtzX2tleXN0b3JlX2luaXQgKHZv aWQpOworCisvKiBGcmVlIGFsbG9jYXRlZCBtZW1vcnkuICovCitleHRlcm4gdm9pZAorRVhQT1JU X0ZVTkMgKGdydWJfcGtzX2ZyZWVfa2V5c3RvcmUpICh2b2lkKTsKKworI2Vsc2UKKworYm9vbCBn cnViX3Brc19pc19zdXBwb3J0X3BrczsKK2Jvb2wgZ3J1Yl9wa3NfdXNlX2tleXN0b3JlOworZ3J1 Yl9wa3NfdCBncnViX3Brc19rZXlzdG9yZTsKKworc3RhdGljIGlubGluZSB2b2lkCitncnViX3Br c19mcmVlX2tleXN0b3JlICh2b2lkKQoreworCit9CisKKyNlbmRpZgorCisjZW5kaWYKLS0gCjIu MzkuNSAoQXBwbGUgR2l0LTE1NCkKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpHcnViLWRldmVsIG1haWxpbmcgbGlzdApHcnViLWRldmVsQGdudS5vcmcK aHR0cHM6Ly9saXN0cy5nbnUub3JnL21haWxtYW4vbGlzdGluZm8vZ3J1Yi1kZXZlbAo=