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 12DF8C0219B for ; Fri, 7 Feb 2025 10:16:49 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tgLPH-0007Fw-2Z; Fri, 07 Feb 2025 05:16:19 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tgLPA-0007FK-IB for grub-devel@gnu.org; Fri, 07 Feb 2025 05:16:12 -0500 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tgLP7-0002jT-7i for grub-devel@gnu.org; Fri, 07 Feb 2025 05:16:12 -0500 Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 51718GoK022092; Fri, 7 Feb 2025 10:16:05 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=ztawiI CM0KilUZtJQvBo5185I/c8+Th0DyWZyt8dkDk=; b=dUbkSDUpccCeyyvhYZHJ5t tm6mqAYUfD/cM36cmzP8O8m6+AUv4NKm5tPLouJU6n7rL+9BlnXPyPZqEsQ/SIJc J2S9bBCrQx+01zyynHVgE1cbjnjWeGgWS3UfjhWTLODv6WCUIPEowS+tIGJd8+Zw Yl0k3/xGRUFSvooOxfK2ebRts49ube1o+hjLHcybklzksBTf/JV8zsHnJKqkHKE6 3clPzCBNO+Tb21gUnQCSwgP6dbxa5zMiFs+mnj+qR8iUDz0vSoYdW0JjcQJrYf0Q bWC8G9/PEq/GmARAkEk59+ncL/VGD0e0G0HwcM8+o7NEDfMv8IpMnnAUNrQJXTKw == Received: from ppma13.dal12v.mail.ibm.com (dd.9e.1632.ip4.static.sl-reverse.com [50.22.158.221]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 44n889a7yf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 07 Feb 2025 10:16:04 +0000 (GMT) Received: from pps.filterd (ppma13.dal12v.mail.ibm.com [127.0.0.1]) by ppma13.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 51789Nkb005251; Fri, 7 Feb 2025 10:16:03 GMT Received: from smtprelay03.wdc07v.mail.ibm.com ([172.16.1.70]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 44j05kasyq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 07 Feb 2025 10:16:03 +0000 Received: from smtpav04.wdc07v.mail.ibm.com (smtpav04.wdc07v.mail.ibm.com [10.39.53.231]) by smtprelay03.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 517AG13D27984558 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 7 Feb 2025 10:16:01 GMT Received: from smtpav04.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 550D858054; Fri, 7 Feb 2025 10:16:02 +0000 (GMT) Received: from smtpav04.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 8736C58050; Fri, 7 Feb 2025 10:16:01 +0000 (GMT) Received: from ltc.linux.ibm.com (unknown [9.5.196.140]) by smtpav04.wdc07v.mail.ibm.com (Postfix) with ESMTP; Fri, 7 Feb 2025 10:16:01 +0000 (GMT) MIME-Version: 1.0 Date: Fri, 07 Feb 2025 15:46:01 +0530 From: Avnish Chouhan To: Sudhakar Kuppusamy Cc: grub-devel@gnu.org, dja@axtens.net, jan.setjeeilers@oracle.com, julian.klode@canonical.com, mate.kukri@canonical.com, pjones@redhat.com, stefanb@linux.ibm.com, nayna@linux.ibm.com, ssrish@linux.ibm.com, daniel.kiper@oracle.com Subject: Re: [PATCH v1 20/21] appendedsig: The grub command's trusted and distrusted support In-Reply-To: <20241218145647.1390837-21-sudhakar@linux.ibm.com> References: <20241218145647.1390837-1-sudhakar@linux.ibm.com> <20241218145647.1390837-21-sudhakar@linux.ibm.com> Message-ID: <14a94cd30623616d3fc086fddea53416@linux.ibm.com> X-Sender: avnish@linux.ibm.com X-TM-AS-GCONF: 00 X-Proofpoint-GUID: ytXSzksfm4rQi7E1aCzRyy_KvCFLPHyp X-Proofpoint-ORIG-GUID: ytXSzksfm4rQi7E1aCzRyy_KvCFLPHyp X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-02-07_04,2025-02-07_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 lowpriorityscore=0 adultscore=0 bulkscore=0 malwarescore=0 spamscore=0 mlxscore=0 mlxlogscore=999 clxscore=1015 suspectscore=0 phishscore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2501170000 definitions=main-2502070077 Received-SPF: pass client-ip=148.163.156.1; envelope-from=avnish@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: The development of GNU GRUB Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org Sender: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org ClJldmlld2VkLWJ5OsKgQXZuaXNowqBDaG91aGFuwqA8YXZuaXNoQGxpbnV4LmlibS5jb20+CgpP biAyMDI0LTEyLTE4IDIwOjI2LCBTdWRoYWthciBLdXBwdXNhbXkgd3JvdGU6Cj4gVG8gc3VwcG9y dCB0aGUgZm9sbG93aW5nIHRydXN0ZWQgYW5kIGRpc3RydXN0ZWQgY29tbWFuZHMKPiAKPiAgIDEu IHRydXN0ZWRfbGlzdDoKPiAgICAgICAgIEl0IHdpbGwgc2hvdyB0aGUgbGlzdCBvZiB0cnVzdGVk IGNlcnRpZmljYXRlcyBhbmQgYmluYXJ5IGhhc2hlcwo+ICAgMi4gZGlzdHJ1c3RlZF9saXN0Ogo+ ICAgICAgICAgSXQgd2lsbCBzaG93IHRoZSBsaXN0IG9mIGRpc3RydXN0ZWQgY2VydGlmaWNhdGVz IGFuZAo+IGJpbmFyeS9jZXJ0aWZpY2F0ZSBoYXNoZXMKPiAgIDMuIHRydXN0ZWRfY2VydGlmaWNh dGU6Cj4gICAgICAgICBJdCB3aWxsIGFkZCB0aGUgdHJ1c3RlZCBjZXJ0aWZpY2F0ZSB0byB0aGUg dHJ1c3RlZCBsaXN0Cj4gICA0LiB0cnVzdGVkX3NpZ25hdHVyZToKPiAgICAgICAgIEl0IHdpbGwg YWRkIHRoZSBjZXJ0aWZpY2F0ZS9iaW5hcnkgaGFzaCB0byB0aGUgdHJ1c3RlZCBsaXN0Cj4gICA1 LiBkaXN0cnVzdGVkX2NlcnRpZmljYXRlOgo+ICAgICAgICAgSXQgd2lsbCByZW1vdmUgdGhlIHRy dXN0ZWQgY2VydGlmaWNhdGUgZnJvbSB0cnN1dGVkIGxpc3QKPiAgIDYuIGRpc3RydXN0ZWRfc2ln bmF0dXJlOgo+ICAgICAgICAgSXQgd2lsbCBhZGQgdGhlIGNlcnRpZmljYXRlL2JpbmFyeSBoYXNo IHRvIHRoZSBkaXN0cnN1dGVkIGxpc3QKPiAKPiBOb3RlOi0KPiAgICBUaGUgYWRkaXRpb24vZGVs ZXRpb24gb2YgdHJ1c3RlZCBjZXJ0aWZpY2F0ZXMgYW5kIGJpbmFyeSBoYXNoZXMKPiBhcmUgbm90 IGFsbG93ZWQgaW4gZ3J1YiBjb21tYW5kIHByb21wdCB3aGlsZSBzZWN1cmUgYm9vdCBpcyBlbmFi bGVkLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFN1ZGhha2FyIEt1cHB1c2FteSA8c3VkaGFrYXJAbGlu dXguaWJtLmNvbT4KPiAtLS0KPiAgZ3J1Yi1jb3JlL2NvbW1hbmRzL2FwcGVuZGVkc2lnL2FwcGVu ZGVkc2lnLmMgfCA1MTcgKysrKysrKysrKysrKy0tLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgMzUx IGluc2VydGlvbnMoKyksIDE2NiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZ3J1Yi1j b3JlL2NvbW1hbmRzL2FwcGVuZGVkc2lnL2FwcGVuZGVkc2lnLmMKPiBiL2dydWItY29yZS9jb21t YW5kcy9hcHBlbmRlZHNpZy9hcHBlbmRlZHNpZy5jCj4gaW5kZXggOWE5ZjRlZjFjLi5iYjcwZTAw YjUgMTAwNjQ0Cj4gLS0tIGEvZ3J1Yi1jb3JlL2NvbW1hbmRzL2FwcGVuZGVkc2lnL2FwcGVuZGVk c2lnLmMKPiArKysgYi9ncnViLWNvcmUvY29tbWFuZHMvYXBwZW5kZWRzaWcvYXBwZW5kZWRzaWcu Ywo+IEBAIC0xMTYsNiArMTE2LDM2IEBAIHN0YXRpYyBlbnVtCj4gICAgY2hlY2tfc2lnc19mb3Jj ZWQgPSAyCj4gIH0gY2hlY2tfc2lncyA9IGNoZWNrX3NpZ3Nfbm87Cj4gCj4gK2VudW0KPiArewo+ ICsgIE9QVElPTl9CSU5BUllfSEFTSCA9IDAsCj4gKyAgT1BUSU9OX0NFUlRfSEFTSCA9IDEKPiAr fTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZ3J1Yl9hcmdfb3B0aW9uIG9wdGlvbnNbXSA9 Cj4gK3sKPiArICB7ImJpbmFyeS1oYXNoIiwgJ2InLCAwLCBOXygiaGFzaCBmaWxlIG9mIHRoZSBi aW5hcnkuIiksIDAsIAo+IEFSR19UWVBFX05PTkV9LAo+ICsgIHsiY2VydC1oYXNoIiwgJ2MnLCAx LCBOXygiaGFzaCBmaWxlIG9mIHRoZSBjZXJ0aWZpY2F0ZS4iKSwgMCwgCj4gQVJHX1RZUEVfTk9O RX0sCj4gKyAgezAsIDAsIDAsIDAsIDAsIDB9Cj4gK307Cj4gKwo+ICtzdGF0aWMgdm9pZAo+ICtn cnViX3ByaW50aGV4IChjb25zdCBncnViX3VpbnQ4X3QgKmRhdGEsIGNvbnN0IGdydWJfc2l6ZV90 IGxlbmd0aCkKPiArewo+ICsgIGdydWJfc2l6ZV90IGksIGNvdW50ID0gMDsKPiArICBmb3IgKGkg PSAwOyBpIDwgbGVuZ3RoLTE7IGkrKykKPiArICAgIHsKPiArICAgICAgZ3J1Yl9wcmludGYgKCIl MDJ4OiIsIGRhdGFbaV0pOwo+ICsgICAgICBjb3VudCsrOwo+ICsgICAgICBpZiAoY291bnQgPT0g MTYpCj4gKyAgICAgICAgewo+ICsgICAgICAgICAgZ3J1Yl9wcmludGYgKCJcblx0ICAgICAgIik7 Cj4gKyAgICAgICAgICBjb3VudCA9IDA7Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsgIGdydWJf cHJpbnRmICgiJTAyeFxuIiwgZGF0YVtpXSk7Cj4gK30KPiArCj4gIC8qCj4gICAqIEdVSUQgY2Fu IGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBoYXNoaW5nIGZ1bmN0aW9uIGFuZAo+ICAgKiBnZW5l cmF0ZSB0aGUgaGFzaCB1c2luZyBkZXRlcm1pbmVkIGhhc2hpbmcgZnVuY3Rpb24uCj4gQEAgLTM4 Nyw3MiArNDE3LDYgQEAgZ3J1Yl9lbnZfd3JpdGVfc2VjIChzdHJ1Y3QgZ3J1Yl9lbnZfdmFyICp2 YXIKPiBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksIGNvbnN0IGNoYQo+ICAgIHJldHVybiBncnVi X3N0cmR1cCAoZ3J1Yl9lbnZfcmVhZF9zZWMgKE5VTEwsIE5VTEwpKTsKPiAgfQo+IAo+IC1zdGF0 aWMgZ3J1Yl9lcnJfdAo+IC1maWxlX3JlYWRfYWxsIChncnViX2ZpbGVfdCBmaWxlLCBncnViX3Vp bnQ4X3QgKipidWYsIGdydWJfc2l6ZV90ICpsZW4pCj4gLXsKPiAtICBncnViX29mZl90IGZ1bGxf ZmlsZV9zaXplOwo+IC0gIGdydWJfc2l6ZV90IGZpbGVfc2l6ZSwgdG90YWxfcmVhZF9zaXplID0g MDsKPiAtICBncnViX3NzaXplX3QgcmVhZF9zaXplOwo+IC0KPiAtICBmdWxsX2ZpbGVfc2l6ZSA9 IGdydWJfZmlsZV9zaXplIChmaWxlKTsKPiAtICBpZiAoZnVsbF9maWxlX3NpemUgPT0gR1JVQl9G SUxFX1NJWkVfVU5LTk9XTikKPiAtICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURf QVJHVU1FTlQsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgTl8oIkNhbm5vdCByZWFkIGEgZmls ZSBvZiB1bmtub3duIHNpemUgaW50byBhIAo+IGJ1ZmZlciIpKTsKPiAtCj4gLSAgaWYgKGZ1bGxf ZmlsZV9zaXplID4gR1JVQl9TSVpFX01BWCkKPiAtICAgIHJldHVybiBncnViX2Vycm9yIChHUlVC X0VSUl9PVVRfT0ZfUkFOR0UsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgTl8oIkZpbGUgaXMg dG9vIGxhcmdlIHRvIHJlYWQ6ICUiCj4gUFJJdUdSVUJfVUlOVDY0X1QgIiBieXRlcyIpLAo+IC0g ICAgICAgICAgICAgICAgICAgICAgIGZ1bGxfZmlsZV9zaXplKTsKPiAtCj4gLSAgZmlsZV9zaXpl ID0gKGdydWJfc2l6ZV90KSBmdWxsX2ZpbGVfc2l6ZTsKPiAtCj4gLSAgKmJ1ZiA9IGdydWJfbWFs bG9jIChmaWxlX3NpemUpOwo+IC0gIGlmICghKmJ1ZikKPiAtICAgIHJldHVybiBncnViX2Vycm9y IChHUlVCX0VSUl9PVVRfT0ZfTUVNT1JZLAo+IC0gICAgICAgICAgICAgICAgICAgICAgIE5fKCJD b3VsZCBub3QgYWxsb2NhdGUgZmlsZSBkYXRhIGJ1ZmZlciBzaXplCj4gJSIgUFJJdUdSVUJfU0la RSksCj4gLSAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9zaXplKTsKPiAtCj4gLSAgd2hpbGUg KHRvdGFsX3JlYWRfc2l6ZSA8IGZpbGVfc2l6ZSkKPiAtICAgIHsKPiAtICAgICAgcmVhZF9zaXpl ID0gZ3J1Yl9maWxlX3JlYWQgKGZpbGUsICpidWYgKyB0b3RhbF9yZWFkX3NpemUsCj4gZmlsZV9z aXplIC0gdG90YWxfcmVhZF9zaXplKTsKPiAtCj4gLSAgICAgIGlmIChyZWFkX3NpemUgPCAwKQo+ IC0gICAgICAgIHsKPiAtICAgICAgICAgIGdydWJfZnJlZSAoKmJ1Zik7Cj4gLSAgICAgICAgICBy ZXR1cm4gZ3J1Yl9lcnJubzsKPiAtICAgICAgICB9Cj4gLSAgICAgIGVsc2UgaWYgKHJlYWRfc2l6 ZSA9PSAwKQo+IC0gICAgICAgIHsKPiAtICAgICAgICAgIGdydWJfZnJlZSAoKmJ1Zik7Cj4gLSAg ICAgICAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfSU8sCj4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTl8oIkNvdWxkIG5vdCByZWFkIGZ1bGwgZmlsZSBzaXplICIKPiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKCUiIFBSSXVHUlVCX1NJWkUgIiksIG9ubHkg JSIKPiBQUkl1R1JVQl9TSVpFICIgYnl0ZXMgcmVhZCIpLAo+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGZpbGVfc2l6ZSwgdG90YWxfcmVhZF9zaXplKTsKPiAtICAgICAgICB9Cj4gLQo+ IC0gICAgICB0b3RhbF9yZWFkX3NpemUgKz0gcmVhZF9zaXplOwo+IC0gICAgfQo+IC0gICpsZW4g PSBmaWxlX3NpemU7Cj4gLSAgcmV0dXJuIEdSVUJfRVJSX05PTkU7Cj4gLX0KPiAtCj4gLXN0YXRp YyBncnViX2Vycl90Cj4gLXJlYWRfY2VydF9mcm9tX2ZpbGUgKGdydWJfZmlsZV90IGYsIHN0cnVj dCB4NTA5X2NlcnRpZmljYXRlIAo+ICpjZXJ0aWZpY2F0ZSkKPiAtewo+IC0gIGdydWJfZXJyX3Qg ZXJyOwo+IC0gIGdydWJfdWludDhfdCAqYnVmOwo+IC0gIGdydWJfc2l6ZV90IGZpbGVfc2l6ZTsK PiAtCj4gLSAgZXJyID0gZmlsZV9yZWFkX2FsbCAoZiwgJmJ1ZiwgJmZpbGVfc2l6ZSk7Cj4gLSAg aWYgKGVyciAhPSBHUlVCX0VSUl9OT05FKQo+IC0gICAgcmV0dXJuIGVycjsKPiAtCj4gLSAgZXJy ID0gcGFyc2VfeDUwOV9jZXJ0aWZpY2F0ZSAoYnVmLCBmaWxlX3NpemUsIGNlcnRpZmljYXRlKTsK PiAtICBncnViX2ZyZWUgKGJ1Zik7Cj4gLQo+IC0gIHJldHVybiBlcnI7Cj4gLX0KPiAtCj4gIHN0 YXRpYyBncnViX2Vycl90Cj4gIGV4dHJhY3RfYXBwZW5kZWRfc2lnbmF0dXJlIChjb25zdCBncnVi X3VpbnQ4X3QgKmJ1ZiwgZ3J1Yl9zaXplX3QgCj4gYnVmc2l6ZSwKPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBncnViX2FwcGVuZGVkX3NpZ25hdHVyZSAqc2lnKQo+IEBAIC02 NjYsMTQ1ICs2MzAsMzQ3IEBAIGdydWJfdmVyaWZ5X2FwcGVuZGVkX3NpZ25hdHVyZSAoY29uc3QK PiBncnViX3VpbnQ4X3QgKmJ1ZiwgZ3J1Yl9zaXplX3QgYnVmc2l6ZSkKPiAgc3RhdGljIGdydWJf ZXJyX3QKPiAgZ3J1Yl9jbWRfdmVyaWZ5X3NpZ25hdHVyZSAoZ3J1Yl9jb21tYW5kX3QgY21kIF9f YXR0cmlidXRlX18KPiAoKHVudXNlZCkpLCBpbnQgYXJnYywgY2hhciAqKmFyZ3MpCj4gIHsKPiAt ICBncnViX2ZpbGVfdCBmOwo+ICAgIGdydWJfZXJyX3QgZXJyID0gR1JVQl9FUlJfTk9ORTsKPiAt ICBncnViX3VpbnQ4X3QgKmRhdGE7Cj4gLSAgZ3J1Yl9zaXplX3QgZmlsZV9zaXplOwo+ICsgIGdy dWJfZmlsZV90IHNpZ25lZF9maWxlID0gTlVMTDsKPiArICBncnViX3VpbnQ4X3QgKnNpZ25lZF9k YXRhID0gTlVMTDsKPiArICBncnViX3NzaXplX3Qgc2lnbmVkX2RhdGFfc2l6ZSA9IDA7Cj4gCj4g LSAgaWYgKGFyZ2MgPCAxKQo+IC0gICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9B UkdVTUVOVCwgTl8oIm9uZSBhcmd1bWVudCAKPiBleHBlY3RlZCIpKTsKPiArICBpZiAoYXJnYyAh PSAxKQo+ICsgICAgewo+ICsgICAgICBncnViX3ByaW50ZiAoTl8oImEgc2lnbmVkIGZpbGUgaXMg ZXhwZWN0ZWRcbiIKPiArICAgICAgICAgICAgICAgICAgICAgICJFeGFtcGxlOlxuXHR2ZXJpZnlf YXBwZW5kZWQgPFNJR05FRCBGSUxFPlxuIikpOwo+ICsgICAgICByZXR1cm4gR1JVQl9FUlJfQkFE X0FSR1VNRU5UOwo+ICsgICAgfQo+IAo+ICAgIGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2lnIiwg InZlcmlmeWluZyAlc1xuIiwgYXJnc1swXSk7Cj4gCj4gLSAgZiA9IGdydWJfZmlsZV9vcGVuIChh cmdzWzBdLCBHUlVCX0ZJTEVfVFlQRV9WRVJJRllfU0lHTkFUVVJFKTsKPiAtICBpZiAoIWYpCj4g LSAgICB7Cj4gLSAgICAgIGVyciA9IGdydWJfZXJybm87Cj4gLSAgICAgIGdvdG8gY2xlYW51cDsK PiAtICAgIH0KPiArICBzaWduZWRfZmlsZSA9IGdydWJfZmlsZV9vcGVuIChhcmdzWzBdLCAKPiBH UlVCX0ZJTEVfVFlQRV9WRVJJRllfU0lHTkFUVVJFKTsKPiArICBpZiAoc2lnbmVkX2ZpbGUgPT0g TlVMTCkKPiArICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9GSUxFX05PVF9GT1VORCwg Tl8oInVuYWJsZSB0byBvcGVuIGEKPiBzaWduZWQgZmlsZSIpKTsKPiAKPiAtICBlcnIgPSBmaWxl X3JlYWRfYWxsIChmLCAmZGF0YSwgJmZpbGVfc2l6ZSk7Cj4gKyAgZXJyID0gZ3J1Yl9yZWFkX2Zp bGUgKHNpZ25lZF9maWxlLCAmc2lnbmVkX2RhdGEsICZzaWduZWRfZGF0YV9zaXplKTsKPiAgICBp ZiAoZXJyICE9IEdSVUJfRVJSX05PTkUpCj4gLSAgICBnb3RvIGNsZWFudXA7Cj4gLQo+IC0gIGVy ciA9IGdydWJfdmVyaWZ5X2FwcGVuZGVkX3NpZ25hdHVyZSAoZGF0YSwgZmlsZV9zaXplKTsKPiAr ICAgIHsKPiArICAgICAgZ3J1Yl9maWxlX2Nsb3NlIChzaWduZWRfZmlsZSk7Cj4gKyAgICAgIHJl dHVybiBlcnI7Cj4gKyAgICB9Cj4gCj4gLSAgZ3J1Yl9mcmVlIChkYXRhKTsKPiArICBncnViX2Zp bGVfY2xvc2UgKHNpZ25lZF9maWxlKTsKPiArICBlcnIgPSBncnViX3ZlcmlmeV9hcHBlbmRlZF9z aWduYXR1cmUgKHNpZ25lZF9kYXRhLCAKPiBzaWduZWRfZGF0YV9zaXplKTsKPiArICBncnViX2Zy ZWUgKHNpZ25lZF9kYXRhKTsKPiAKPiAtY2xlYW51cDoKPiAtICBpZiAoZikKPiAtICAgIGdydWJf ZmlsZV9jbG9zZSAoZik7Cj4gICAgcmV0dXJuIGVycjsKPiAgfQo+IAo+ICBzdGF0aWMgZ3J1Yl9l cnJfdAo+IC1ncnViX2NtZF9kaXN0cnVzdCAoZ3J1Yl9jb21tYW5kX3QgY21kIF9fYXR0cmlidXRl X18gKCh1bnVzZWQpKSwgaW50Cj4gYXJnYywgY2hhciAqKmFyZ3MpCj4gK2dydWJfY21kX3RydXN0 ZWRfbGlzdCAoZ3J1Yl9jb21tYW5kX3QgY21kIF9fYXR0cmlidXRlX18oKHVudXNlZCkpLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgIGludCBhcmdjIF9fYXR0cmlidXRlX18oKHVudXNlZCkpLCBj aGFyICoqYXJncwo+IF9fYXR0cmlidXRlX18oKHVudXNlZCkpKQo+ICB7Cj4gLSAgdW5zaWduZWQg bG9uZyBjZXJ0X251bSwgaTsKPiAtICBzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSAqY2VydCwgKnBy ZXY7Cj4gKyAgc3RydWN0IHg1MDlfY2VydGlmaWNhdGUgKmNlcnQgPSBOVUxMOwo+ICsgIGdydWJf c2l6ZV90IGkgPSAwLCBjZXJ0X251bSA9IDE7Cj4gCj4gLSAgaWYgKGFyZ2MgIT0gMSkKPiAtICAg IHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfQVJHVU1FTlQsIE5fKCJPbmUgYXJndW1l bnQgCj4gZXhwZWN0ZWQiKSk7Cj4gKyAgZm9yIChjZXJ0ID0gZ3J1Yl9kYi5rZXlzOyBjZXJ0OyBj ZXJ0ID0gY2VydC0+bmV4dCkKPiArICAgIHsKPiArICAgICAgZ3J1Yl9wcmludGYgKE5fKCJ0cnVz dGVkIGNlcnRpZmljYXRlICUiIFBSSXVHUlVCX1NJWkUgIjpcbiIpLCAKPiBjZXJ0X251bSk7Cj4g KyAgICAgIGdydWJfcHJpbnRmIChOXygiXHRzZXJpYWw6ICIpKTsKPiAKPiAtICBncnViX2Vycm5v ID0gR1JVQl9FUlJfTk9ORTsKPiAtICBjZXJ0X251bSA9IGdydWJfc3RydG91bCAoYXJnc1swXSwg TlVMTCwgMTApOwo+IC0gIGlmIChncnViX2Vycm5vICE9IEdSVUJfRVJSX05PTkUpCj4gLSAgICBy ZXR1cm4gZ3J1Yl9lcnJubzsKPiArICAgICAgZm9yIChpID0gMDsgaSA8IGNlcnQtPnNlcmlhbF9s ZW4gLSAxOyBpKyspCj4gKyAgICAgICAgZ3J1Yl9wcmludGYgKCIlMDJ4OiIsIGNlcnQtPnNlcmlh bFtpXSk7Cj4gCj4gLSAgaWYgKGNlcnRfbnVtIDwgMSkKPiAtICAgIHJldHVybiBncnViX2Vycm9y IChHUlVCX0VSUl9CQURfQVJHVU1FTlQsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgTl8oIkNl cnRpZmljYXRlIG51bWJlciB0b28gc21hbGwgLSBudW1iZXJzCj4gc3RhcnQgYXQgMSIpKTsKPiAr ICAgICAgZ3J1Yl9wcmludGYgKCIlMDJ4XG4iLCBjZXJ0LT5zZXJpYWxbY2VydC0+c2VyaWFsX2xl biAtIDFdKTsKPiArICAgICAgZ3J1Yl9wcmludGYgKCJcdENOOiAlc1xuXG4iLCBjZXJ0LT5zdWJq ZWN0KTsKPiArICAgICAgY2VydF9udW0rKzsKPiArICAgIH0KPiAKPiAtICBpZiAoY2VydF9udW0g PT0gMSkKPiArICBmb3IgKGkgPSAwOyBpIDwgZ3J1Yl9kYi5zaWduYXR1cmVfZW50cmllczsgaSsr KQo+ICAgICAgewo+IC0gICAgICBjZXJ0ID0gZ3J1Yl9kYi5rZXlzOwo+IC0gICAgICBncnViX2Ri LmtleXMgPSBjZXJ0LT5uZXh0Owo+ICsgICAgICBncnViX3ByaW50ZiAoTl8oInRydXN0ZWQgYmlu YXJ5IGhhc2ggJSIgUFJJdUdSVUJfU0laRSAiOlxuIiksIAo+IGkrMSk7Cj4gKyAgICAgIGdydWJf cHJpbnRmIChOXygiXHRoYXNoOiAiKSk7Cj4gKyAgICAgIGdydWJfcHJpbnRoZXggKGdydWJfZGIu c2lnbmF0dXJlc1tpXSwgCj4gZ3J1Yl9kYi5zaWduYXR1cmVfc2l6ZVtpXSk7Cj4gKyAgICB9Cj4g Cj4gLSAgICAgIGNlcnRpZmljYXRlX3JlbGVhc2UgKGNlcnQpOwo+IC0gICAgICBncnViX2ZyZWUg KGNlcnQpOwo+IC0gICAgICByZXR1cm4gR1JVQl9FUlJfTk9ORTsKPiArICByZXR1cm4gR1JVQl9F UlJfTk9ORTsKPiArfQo+ICsKPiArc3RhdGljIGdydWJfZXJyX3QKPiArZ3J1Yl9jbWRfZGlzdHJ1 c3RlZF9saXN0IChncnViX2NvbW1hbmRfdCBjbWQgX19hdHRyaWJ1dGVfXygodW51c2VkKSksCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFyZ2MgX19hdHRyaWJ1dGVfXygodW51c2Vk KSksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKmFyZ3MgX19hdHRyaWJ1dGVf XygodW51c2VkKSkpCj4gK3sKPiArICBzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSAqY2VydCA9IE5V TEw7Cj4gKyAgZ3J1Yl9zaXplX3QgaSA9IDAsIGNlcnRfbnVtID0gMTsKPiArCj4gKyAgZm9yIChj ZXJ0ID0gZ3J1Yl9kYngua2V5czsgY2VydDsgY2VydCA9IGNlcnQtPm5leHQpCj4gKyAgICB7Cj4g KyAgICAgIGdydWJfcHJpbnRmIChOXygiZGlzdHJ1c3RlZCBjZXJ0aWZpY2F0ZSAlIiBQUkl1R1JV Ql9TSVpFCj4gIjpcbiIpLCBjZXJ0X251bSk7Cj4gKyAgICAgIGdydWJfcHJpbnRmIChOXygiXHRz ZXJpYWw6ICIpKTsKPiArCj4gKyAgICAgIGZvciAoaSA9IDA7IGkgPCBjZXJ0LT5zZXJpYWxfbGVu IC0gMTsgaSsrKQo+ICsgICAgICAgIGdydWJfcHJpbnRmICgiJTAyeDoiLCBjZXJ0LT5zZXJpYWxb aV0pOwo+ICsKPiArICAgICAgZ3J1Yl9wcmludGYgKCIlMDJ4XG4iLCBjZXJ0LT5zZXJpYWxbY2Vy dC0+c2VyaWFsX2xlbiAtIDFdKTsKPiArICAgICAgZ3J1Yl9wcmludGYgKCJcdENOOiAlc1xuXG4i LCBjZXJ0LT5zdWJqZWN0KTsKPiArICAgICAgY2VydF9udW0rKzsKPiAgICAgIH0KPiAtICBpID0g MjsKPiAtICBwcmV2ID0gZ3J1Yl9kYi5rZXlzOwo+IC0gIGNlcnQgPSBncnViX2RiLmtleXMtPm5l eHQ7Cj4gLSAgd2hpbGUgKGNlcnQpCj4gKwo+ICsgIGZvciAoaSA9IDA7IGkgPCBncnViX2RieC5z aWduYXR1cmVfZW50cmllczsgaSsrKQo+ICAgICAgewo+IC0gICAgICBpZiAoaSA9PSBjZXJ0X251 bSkKPiAtICAgICAgICB7Cj4gLSAgICAgICAgICBwcmV2LT5uZXh0ID0gY2VydC0+bmV4dDsKPiAt ICAgICAgICAgIGNlcnRpZmljYXRlX3JlbGVhc2UgKGNlcnQpOwo+IC0gICAgICAgICAgZ3J1Yl9m cmVlIChjZXJ0KTsKPiAtICAgICAgICAgIHJldHVybiBHUlVCX0VSUl9OT05FOwo+IC0gICAgICAg IH0KPiAtICAgICAgaSsrOwo+IC0gICAgICBwcmV2ID0gY2VydDsKPiAtICAgICAgY2VydCA9IGNl cnQtPm5leHQ7Cj4gKyAgICAgIGdydWJfcHJpbnRmIChOXygiZGlzdHJ1c3RlZCBjZXJ0aWZpY2F0 ZS9iaW5hcnkgaGFzaCAlIgo+IFBSSXVHUlVCX1NJWkUgIjpcbiIpLCBpKzEpOwo+ICsgICAgICBn cnViX3ByaW50ZiAoTl8oIlx0aGFzaDogIikpOwo+ICsgICAgICBncnViX3ByaW50aGV4IChncnVi X2RieC5zaWduYXR1cmVzW2ldLCAKPiBncnViX2RieC5zaWduYXR1cmVfc2l6ZVtpXSk7Cj4gICAg ICB9Cj4gCj4gLSAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9BUkdVTUVOVCwKPiAt ICAgICAgICAgICAgICAgICAgICAgTl8oIk5vIGNlcnRpZmljYXRlIG51bWJlciAlbHUgZm91bmQg LSBvbmx5ICVsdQo+IGNlcnRpZmljYXRlcyBpbiB0aGUgc3RvcmUiKSwKPiAtICAgICAgICAgICAg ICAgICAgICAgY2VydF9udW0sIGkgLSAxKTsKPiArICByZXR1cm4gR1JVQl9FUlJfTk9ORTsKPiAg fQo+IAo+ICBzdGF0aWMgZ3J1Yl9lcnJfdAo+IC1ncnViX2NtZF90cnVzdCAoZ3J1Yl9jb21tYW5k X3QgY21kIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwgaW50Cj4gYXJnYywgY2hhciAqKmFyZ3Mp Cj4gK2dydWJfY21kX3RydXN0ZWRfY2VydCAoZ3J1Yl9jb21tYW5kX3QgY21kIF9fYXR0cmlidXRl X18oKHVudXNlZCkpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgIGludCBhcmdjLCBjaGFyICoq YXJncykKPiAgewo+IC0gIGdydWJfZmlsZV90IGNlcnRmOwo+IC0gIHN0cnVjdCB4NTA5X2NlcnRp ZmljYXRlICpjZXJ0ID0gTlVMTDsKPiAtICBncnViX2Vycl90IGVycjsKPiArICBncnViX2Vycl90 IGVyciA9IEdSVUJfRVJSX05PTkU7Cj4gKyAgZ3J1Yl9maWxlX3QgY2VydF9maWxlID0gTlVMTDsK PiArICBncnViX3VpbnQ4X3QgKmNlcnRfZGF0YSA9IE5VTEw7Cj4gKyAgZ3J1Yl9zc2l6ZV90IGNl cnRfZGF0YV9zaXplID0gMDsKPiAKPiAgICBpZiAoYXJnYyAhPSAxKQo+IC0gICAgcmV0dXJuIGdy dWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9BUkdVTUVOVCwgTl8oIm9uZSBhcmd1bWVudCAKPiBleHBl Y3RlZCIpKTsKPiArICAgIHsKPiArICAgICAgZ3J1Yl9wcmludGYgKE5fKCJhIHRydXN0ZWQgWC41 MDkgY2VydGlmaWNhdGUgZmlsZSBpcyBleHBlY3RlZFxuIgo+ICsgICAgICAgICAgICAgICAgICAg ICAgIkV4YW1wbGU6XG5cdHRydXN0ZWRfY2VydGlmaWNhdGUgPENFUlQgCj4gRklMRT5cbiIpKTsK PiArICAgICAgcmV0dXJuIEdSVUJfRVJSX0JBRF9BUkdVTUVOVDsKPiArICAgIH0KPiAKPiAtICBj ZXJ0ZiA9IGdydWJfZmlsZV9vcGVuIChhcmdzWzBdLCBHUlVCX0ZJTEVfVFlQRV9DRVJUSUZJQ0FU RV9UUlVTVCB8Cj4gR1JVQl9GSUxFX1RZUEVfTk9fREVDT01QUkVTUyk7Cj4gLSAgaWYgKCFjZXJ0 ZikKPiAtICAgIHJldHVybiBncnViX2Vycm5vOwo+ICsgIGlmIChjaGVja19zaWdzID09IGNoZWNr X3NpZ3NfZm9yY2VkKQo+ICsgICAgewo+ICsgICAgICBncnViX3ByaW50ZiAoIldhcm5pbmc6IHNp bmNlIHNlY3VyZSBib290IGlzIGVuYWJsZWQsICIKPiArICAgICAgICAgICAgICAgICAgICJhZGRp bmcgb2YgdHJ1c3RlZCBYLjUwOSBjZXJ0aWZpY2F0ZSBpcyBub3QgCj4gcGVybWl0dGVkIVxuIik7 Cj4gKyAgICAgIHJldHVybiBncnViX2Vycm5vOwo+ICsgICAgfQo+IAo+IC0gIGNlcnQgPSBncnVi X3phbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSkpOwo+IC0gIGlmICghY2Vy dCkKPiAtICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9PVVRfT0ZfTUVNT1JZLCBOXygi Q291bGQgbm90IGFsbG9jYXRlCj4gbWVtb3J5IGZvciBjZXJ0aWZpY2F0ZSIpKTsKPiArICBpZiAo Z3J1Yl9zdHJsZW4gKGFyZ3NbMF0pID09IDApCj4gKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JV Ql9FUlJfQkFEX0ZJTEVOQU1FLAo+ICsgICAgICAgICAgICAgICAgICAgICAgIE5fKCJtaXNzaW5n IHRydXN0ZWQgWC41MDkgY2VydGlmaWNhdGUgZmlsZSIpKTsKPiArCj4gKyAgY2VydF9maWxlID0g Z3J1Yl9maWxlX29wZW4gKGFyZ3NbMF0sIAo+IEdSVUJfRklMRV9UWVBFX0NFUlRJRklDQVRFX1RS VVNUIHwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1JVQl9GSUxFX1RZUEVfTk9f REVDT01QUkVTUyk7Cj4gKyAgaWYgKGNlcnRfZmlsZSA9PSBOVUxMKQo+ICsgICAgcmV0dXJuIGdy dWJfZXJyb3IgKEdSVUJfRVJSX0ZJTEVfTk9UX0ZPVU5ELAo+ICsgICAgICAgICAgICAgICAgICAg ICAgIE5fKCJ1bmFibGUgdG8gb3BlbiB0aGUgdHJ1c3RlZCBYLjUwOQo+IGNlcnRpZmljYXRlIGZp bGUiKSk7Cj4gCj4gLSAgZXJyID0gcmVhZF9jZXJ0X2Zyb21fZmlsZSAoY2VydGYsIGNlcnQpOwo+ IC0gIGdydWJfZmlsZV9jbG9zZSAoY2VydGYpOwo+ICsgIGVyciA9IGdydWJfcmVhZF9maWxlIChj ZXJ0X2ZpbGUsICZjZXJ0X2RhdGEsICZjZXJ0X2RhdGFfc2l6ZSk7Cj4gICAgaWYgKGVyciAhPSBH UlVCX0VSUl9OT05FKQo+ICAgICAgewo+IC0gICAgICBncnViX2ZyZWUgKGNlcnQpOwo+ICsgICAg ICBncnViX2ZpbGVfY2xvc2UgKGNlcnRfZmlsZSk7Cj4gICAgICAgIHJldHVybiBlcnI7Cj4gICAg ICB9Cj4gLSAgZ3J1Yl9kcHJpbnRmICgiYXBwZW5kZWRzaWciLCAiTG9hZGVkIGNlcnRpZmljYXRl IHdpdGggQ046ICVzXG4iLAo+IGNlcnQtPnN1YmplY3QpOwo+IAo+IC0gIGNlcnQtPm5leHQgPSBn cnViX2RiLmtleXM7Cj4gLSAgZ3J1Yl9kYi5rZXlzID0gY2VydDsKPiArICBncnViX2ZpbGVfY2xv c2UgKGNlcnRfZmlsZSk7Cj4gKyAgZXJyID0gZ3J1Yl9hZGRfY2VydGlmaWNhdGUgKGNlcnRfZGF0 YSwgY2VydF9kYXRhX3NpemUsICZncnViX2RiLCAxKTsKPiArICBpZiAoZXJyICE9IEdSVUJfRVJS X05PTkUpCj4gKyAgICB7Cj4gKyAgICAgIGdydWJfcmVsZWFzZV90cnVzdGVkX2xpc3QgKCk7Cj4g KyAgICAgIGdydWJfcmVsZWFzZV9kaXN0cnVzdGVkX2xpc3QgKCk7Cj4gKyAgICAgIGdydWJfZXJy b3IgKGVyciwgImFkZGluZyBvZiB0cnVzdGVkIGNlcnRpZmljYXRlIGZhaWxlZCIpOwo+ICsgICAg fQo+IAo+IC0gIHJldHVybiBHUlVCX0VSUl9OT05FOwo+ICsgIGdydWJfZnJlZSAoY2VydF9kYXRh KTsKPiArCj4gKyAgcmV0dXJuIGVycjsKPiAgfQo+IAo+ICBzdGF0aWMgZ3J1Yl9lcnJfdAo+IC1n cnViX2NtZF9saXN0IChncnViX2NvbW1hbmRfdCBjbWQgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkp LCBpbnQgYXJnYwo+IF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKPiAtICAgICAgICAgICAgICAg Y2hhciAqKmFyZ3MgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpKQo+ICtncnViX2NtZF90cnVzdGVk X2hhc2ggKGdydWJfY29tbWFuZF90IGNtZCBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSwKPiBpbnQg YXJnYywgY2hhcioqYXJncykKPiAgewo+IC0gIHN0cnVjdCB4NTA5X2NlcnRpZmljYXRlICpjZXJ0 Owo+IC0gIGludCBjZXJ0X251bSA9IDE7Cj4gLSAgZ3J1Yl9zaXplX3QgaTsKPiArICBncnViX2Vy cl90IHJjID0gR1JVQl9FUlJfTk9ORTsKPiArICBncnViX2ZpbGVfdCBoYXNoX2ZpbGUgPSBOVUxM Owo+ICsgIGdydWJfdWludDhfdCAqaGFzaF9kYXRhID0gTlVMTDsKPiArICBncnViX3NzaXplX3Qg aGFzaF9kYXRhX3NpemUgPSAwOwo+IAo+IC0gIGZvciAoY2VydCA9IGdydWJfZGIua2V5czsgY2Vy dDsgY2VydCA9IGNlcnQtPm5leHQpCj4gKyAgaWYgKGFyZ2MgIT0gMSkKPiAgICAgIHsKPiAtICAg ICAgZ3J1Yl9wcmludGYgKE5fKCJDZXJ0aWZpY2F0ZSAlZDpcbiIpLCBjZXJ0X251bSk7Cj4gKyAg ICAgIGdydWJfcHJpbnRmIChOXygiYSB0cnVzdGVkIGJpbmFyeSBoYXNoIGZpbGUgaXMgZXhwZWN0 ZWRcbiIKPiArICAgICAgICAgICAgICAgICAgICAgICJFeGFtcGxlOlxuXHR0cnVzdGVkX3NpZ25h dHVyZSA8QklOQVJZIEhBU0ggCj4gRklMRT5cbiIpKTsKPiArICAgICAgcmV0dXJuIEdSVUJfRVJS X0JBRF9BUkdVTUVOVDsKPiArICAgIH0KPiAKPiAtICAgICAgZ3J1Yl9wcmludGYgKE5fKCJcdFNl cmlhbDogIikpOwo+IC0gICAgICBmb3IgKGkgPSAwOyBpIDwgY2VydC0+c2VyaWFsX2xlbiAtIDE7 IGkrKykKPiArICBpZiAoY2hlY2tfc2lncyA9PSBjaGVja19zaWdzX2ZvcmNlZCkKPiArICAgIHsK PiArICAgICAgZ3J1Yl9wcmludGYgKCJXYXJuaW5nOiBzaW5jZSBzZWN1cmUgYm9vdCBpcyBlbmFi bGVkLCAiCj4gKyAgICAgICAgICAgICAgICAgICAiYWRkaW5nIG9mIHRydXN0ZWQgYmluYXJ5IGhh c2ggaXMgbm90IAo+IHBlcm1pdHRlZCFcbiIpOwo+ICsgICAgICByZXR1cm4gZ3J1Yl9lcnJubzsK PiArICAgIH0KPiArCj4gKyAgaWYgKGdydWJfc3RybGVuIChhcmdzWzBdKSA9PSAwKQo+ICsgICAg cmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9GSUxFTkFNRSwgTl8oIm1pc3NpbmcgdHJ1 c3RlZAo+IGJpbmFyeSBoYXNoIGZpbGUiKSk7Cj4gKwo+ICsgIGhhc2hfZmlsZSA9IGdydWJfZmls ZV9vcGVuIChhcmdzWzBdLCBHUlVCX0ZJTEVfVFlQRV9UT19IQVNIIHwKPiBHUlVCX0ZJTEVfVFlQ RV9OT19ERUNPTVBSRVNTKTsKPiArICBpZiAoaGFzaF9maWxlID09IE5VTEwpCj4gKyAgICByZXR1 cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfRklMRV9OT1RfRk9VTkQsCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgTl8oInVuYWJsZSB0byBvcGVuIHRoZSB0cnVzdGVkIGJpbmFyeSBoYXNoIAo+IGZp bGUiKSk7Cj4gKwo+ICsgIHJjID0gZ3J1Yl9yZWFkX2ZpbGUgKGhhc2hfZmlsZSwgJmhhc2hfZGF0 YSwgJmhhc2hfZGF0YV9zaXplKTsKPiArICBpZiAocmMgIT0gR1JVQl9FUlJfTk9ORSkKPiArICAg IHsKPiArICAgICAgZ3J1Yl9maWxlX2Nsb3NlIChoYXNoX2ZpbGUpOwo+ICsgICAgICByZXR1cm4g cmM7Cj4gKyAgICB9Cj4gKwo+ICsgIGdydWJfZmlsZV9jbG9zZSAoaGFzaF9maWxlKTsKPiArCj4g KyAgZ3J1Yl9kcHJpbnRmICgiYXBwZW5kZWRzaWciLCAiYWRkaW5nIGEgdHJ1c3RlZCBiaW5hcnkg aGFzaCAlc1xuCj4gd2l0aCBzaXplIG9mICUiIFBSSXVHUlVCX1NJWkUgIlxuIiwKPiArICAgICAg ICAgICAgICAgIGhhc2hfZGF0YSwgaGFzaF9kYXRhX3NpemUpOwo+ICsKPiArICAvKiBvbmx5IGFj Y2VwdCBTSEEyNTYsIFNIQTM4NCBhbmQgU0hBNTEyIGJpbmFyeSBoYXNoICovCj4gKyAgaWYgKGhh c2hfZGF0YV9zaXplICE9IDMyICYmIGhhc2hfZGF0YV9zaXplICE9IDQ4ICYmIGhhc2hfZGF0YV9z aXplIAo+ICE9IDY0KQo+ICsgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9TSUdO QVRVUkUsIE5fKCJ1bmFjY2VwdGFibGUKPiB0cnVzdGVkIGJpbmFyeSBoYXNoIHR5cGUiKSk7Cj4g Kwo+ICsgIHJjID0gZ3J1Yl9hZGRfaGFzaCAoKGNvbnN0IGdydWJfdWludDhfdCAqKikgJmhhc2hf ZGF0YSwKPiBoYXNoX2RhdGFfc2l6ZSwgJmdydWJfZGIuc2lnbmF0dXJlcywKPiArICAgICAgICAg ICAgICAgICAgICAgICZncnViX2RiLnNpZ25hdHVyZV9zaXplLCAKPiAmZ3J1Yl9kYi5zaWduYXR1 cmVfZW50cmllcyk7Cj4gKyAgaWYgKHJjICE9IEdSVUJfRVJSX05PTkUpCj4gKyAgICB7Cj4gKyAg ICAgIGdydWJfcmVsZWFzZV90cnVzdGVkX2xpc3QgKCk7Cj4gKyAgICAgIGdydWJfcmVsZWFzZV9k aXN0cnVzdGVkX2xpc3QgKCk7Cj4gKyAgICAgIGdydWJfZXJyb3IgKHJjLCAiYWRkaW5nIG9mIHRy dXN0ZWQgYmluYXJ5IGhhc2ggZmFpbGVkIik7Cj4gKyAgICB9Cj4gKwo+ICsgIGdydWJfZnJlZSAo aGFzaF9kYXRhKTsKPiArCj4gKyAgcmV0dXJuIHJjOwo+ICt9Cj4gKwo+ICtzdGF0aWMgZ3J1Yl9l cnJfdAo+ICtncnViX2NtZF9kaXN0cnVzdGVkX2NlcnQgKGdydWJfY29tbWFuZF90IGNtZCBfX2F0 dHJpYnV0ZV9fKCh1bnVzZWQpKSwKPiBpbnQgYXJnYywgY2hhciAqKmFyZ3MpCj4gK3sKPiArICBn cnViX3NpemVfdCBjZXJ0X251bSA9IDAsIGkgPSAxOwo+ICsgIHN0cnVjdCB4NTA5X2NlcnRpZmlj YXRlICpjdXJyZW50X2NlcnQgPSBncnViX2RiLmtleXM7Cj4gKyAgc3RydWN0IHg1MDlfY2VydGlm aWNhdGUgKnByZXZpb3VzX2NlcnQgPSBncnViX2RiLmtleXM7Cj4gKwo+ICsgIGlmIChhcmdjICE9 IDEpCj4gKyAgICB7Cj4gKyAgICAgIGdydWJfcHJpbnRmIChOXygidHJ1c3RlZCBjZXJ0aWZpY2F0 ZSBudW1iZXIgaXMgZXhwZWN0ZWRcbiIKPiArICAgICAgICAgICAgICAgICAgICAgICJFeGFtcGxl OlxuXHRkaXN0cnVzdGVkX2NlcnRpZmljYXRlIAo+IDxDRVJUX05VTUVSPlxuIikpOwo+ICsgICAg ICByZXR1cm4gR1JVQl9FUlJfQkFEX0FSR1VNRU5UOwo+ICsgICAgfQo+ICsKPiArICBpZiAoY2hl Y2tfc2lncyA9PSBjaGVja19zaWdzX2ZvcmNlZCkKPiArICAgIHsKPiArICAgICAgZ3J1Yl9wcmlu dGYgKCJXYXJuaW5nOiBzaW5jZSBzZWN1cmUgYm9vdCBpcyBlbmFibGVkLCAiCj4gKyAgICAgICAg ICAgICAgICAgICAicmVtb3Zpbmcgb2YgdHJ1c3RlZCBjZXJ0aWZpY2F0ZSBpcyBub3QgCj4gcGVy bWl0dGVkIVxuIik7Cj4gKyAgICAgIHJldHVybiBncnViX2Vycm5vOwo+ICsgICAgfQo+ICsKPiAr ICBjZXJ0X251bSA9IGdydWJfc3RydG91bCAoYXJnc1swXSwgTlVMTCwgMTApOwo+ICsgIGlmIChj ZXJ0X251bSA8IDEpCj4gKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0FSR1VN RU5ULAo+ICsgICAgICAgICAgICAgICAgICAgICAgIE5fKCJ0cnVzdGVkIGNlcnRpZmljYXRlIG51 bWJlciBzaG91bGQgdG8gYmVnaW4KPiB3aXRoIDEiKSk7Cj4gKwo+ICsgIGlmIChjZXJ0X251bSA+ IGdydWJfZGIua2V5X2VudHJpZXMpCj4gKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJf QkFEX0FSR1VNRU5ULAo+ICsgICAgICAgICAgICAgICAgICAgICAgIE5fKCJ0cnVzdGVkIGNlcnRp ZmljYXRlIG51bWJlciBzaG91bGQgbm90Cj4gZXhjZWVkICUiIFBSSXVHUlVCX1NJWkUgIiIpLAo+ ICsgICAgICAgICAgICAgICAgICAgICAgIGdydWJfZGIua2V5X2VudHJpZXMpOwo+ICsgIGVsc2Ug aWYgKGNlcnRfbnVtIDwgZ3J1Yl9kYi5rZXlfZW50cmllcykKPiArICAgIHJldHVybiBncnViX2Vy cm9yIChHUlVCX0VSUl9CQURfQVJHVU1FTlQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgTl8o InRoZXJlIGlzIG5vIGNlcnRpZmljYXRlIG9uIHRoZSB0cnVzdGVkCj4gbGlzdC4gc28sIG5vdCBw ZXJtaXR0ZWQiKSk7Cj4gKwo+ICsgIGZvciAoaSA9IDE7IGkgPCBncnViX2RiLmtleV9lbnRyaWVz OyBpKyspCj4gKyAgICB7Cj4gKyAgICAgIGlmIChjZXJ0X251bSA9PSAxKQo+ICAgICAgICAgIHsK PiAtICAgICAgICAgIGdydWJfcHJpbnRmICgiJTAyeDoiLCBjZXJ0LT5zZXJpYWxbaV0pOwo+ICsg ICAgICAgICAgcHJldmlvdXNfY2VydCA9IGN1cnJlbnRfY2VydC0+bmV4dDsKPiArICAgICAgICAg IGJyZWFrOwo+ICsgICAgICAgIH0KPiArICAgICAgZWxzZSBpZiAoY2VydF9udW0gPT0gaSkKPiAr ICAgICAgICB7Cj4gKyAgICAgICAgICBwcmV2aW91c19jZXJ0LT5uZXh0ID0gY3VycmVudF9jZXJ0 LT5uZXh0Owo+ICsgICAgICAgICAgYnJlYWs7Cj4gICAgICAgICAgfQo+IC0gICAgICBncnViX3By aW50ZiAoIiUwMnhcbiIsIGNlcnQtPnNlcmlhbFtjZXJ0LT5zZXJpYWxfbGVuIC0gMV0pOwo+IAo+ IC0gICAgICBncnViX3ByaW50ZiAoIlx0Q046ICVzXG5cbiIsIGNlcnQtPnN1YmplY3QpOwo+IC0g ICAgICBjZXJ0X251bSsrOwo+ICsgICAgICBwcmV2aW91c19jZXJ0ID0gY3VycmVudF9jZXJ0Owo+ ICsgICAgICBjdXJyZW50X2NlcnQgPSBjdXJyZW50X2NlcnQtPm5leHQ7Cj4gICAgICB9Cj4gCj4g KyAgY2VydGlmaWNhdGVfcmVsZWFzZSAoY3VycmVudF9jZXJ0KTsKPiArICBncnViX2ZyZWUgKGN1 cnJlbnRfY2VydCk7Cj4gKwo+ICAgIHJldHVybiBHUlVCX0VSUl9OT05FOwo+ICB9Cj4gCj4gK3N0 YXRpYyBncnViX2Vycl90Cj4gK2dydWJfY21kX2Rpc3RydXN0ZWRfaGFzaCAoZ3J1Yl9leHRjbWRf Y29udGV4dF90IGN0eHQsIGludCBhcmdjLCBjaGFyIAo+ICoqYXJncykKPiArewo+ICsgIGdydWJf ZXJyX3QgcmMgPSBHUlVCX0VSUl9OT05FOwo+ICsgIGdydWJfZmlsZV90IGhhc2hfZmlsZSA9IE5V TEw7Cj4gKyAgZ3J1Yl91aW50OF90ICpoYXNoX2RhdGEgPSBOVUxMOwo+ICsgIGdydWJfc3NpemVf dCBoYXNoX2RhdGFfc2l6ZSA9IDA7Cj4gKwo+ICsgIGlmIChhcmdjICE9IDIpCj4gKyAgICB7Cj4g KyAgICAgIGdydWJfcHJpbnRmIChOXygiYSBkaXN0cnVzdGVkIGNlcnRpZmljYXRlL2JpbmFyeSBo YXNoIGZpbGUgaXMgCj4gZXhwZWN0ZWRcbiIKPiArICAgICAgICAgICAgICAgICAgICAgICJFeGFt cGxlOlxuXHRkaXN0cnVzdGVkX3NpZ25hdHVyZSBbb3B0aW9uXSAKPiA8RklMRT5cbiIKPiArICAg ICAgICAgICAgICAgICAgICAgICJvcHRpb246XG5bLWJ8LS1iaW5hcnktaGFzaF0gRklMRSBbQklO QVJZIEhBU0ggCj4gRklMRV1cbiIKPiArICAgICAgICAgICAgICAgICAgICAgICJbLWN8LS1jZXJ0 LWhhc2hdIEZJTEUgW0NFUlRGSUNBVEUgSEFTSCAKPiBGSUxFXVxuIikpOwo+ICsgICAgICByZXR1 cm4gR1JVQl9FUlJfQkFEX0FSR1VNRU5UOwo+ICsgICAgfQo+ICsKPiArICBpZiAoY2hlY2tfc2ln cyA9PSBjaGVja19zaWdzX2ZvcmNlZCkKPiArICAgIHsKPiArICAgICAgZ3J1Yl9wcmludGYgKCJX YXJuaW5nOiBzaW5jZSBzZWN1cmUgYm9vdCBpcyBlbmFibGVkLCAiCj4gKyAgICAgICAgICAgICAg ICAgICAiYWRkaW5nIG9mIGRpc3RydXN0ZWQgY2VydGlmaWNhdGUvYmluYXJ5IGhhc2ggaXMKPiBu b3QgcGVybWl0dGVkIVxuIik7Cj4gKyAgICAgIHJldHVybiBncnViX2Vycm5vOwo+ICsgICAgfQo+ ICsKPiArICBpZiAoIWN0eHQtPnN0YXRlW09QVElPTl9CSU5BUllfSEFTSF0uc2V0ICYmCj4gIWN0 eHQtPnN0YXRlW09QVElPTl9DRVJUX0hBU0hdLnNldCkKPiArICAgIHJldHVybiBncnViX2Vycm9y IChHUlVCX0VSUl9CQURfQVJHVU1FTlQsIE5fKCJtaXNzaW5nIG9wdGlvbnMgYW5kCj4gdXNlIC0t aGVscCB0byBrb253IikpOwo+ICsKPiArICBpZiAoZ3J1Yl9zdHJsZW4gKGFyZ3NbMV0pID09IDAp Cj4gKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0ZJTEVOQU1FLAo+ICsgICAg ICAgICAgICAgICAgICAgICAgIE5fKCJtaXNzaW5nIGRpc3RydXN0ZWQgY2VydGlmaWNhdGUvYmlu YXJ5IGhhc2ggCj4gZmlsZSIpKTsKPiArCj4gKyAgaGFzaF9maWxlID0gZ3J1Yl9maWxlX29wZW4g KGFyZ3NbMV0sIEdSVUJfRklMRV9UWVBFX1RPX0hBU0ggfAo+IEdSVUJfRklMRV9UWVBFX05PX0RF Q09NUFJFU1MpOwo+ICsgIGlmIChoYXNoX2ZpbGUgPT0gTlVMTCkKPiArICAgIHJldHVybiBncnVi X2Vycm9yIChHUlVCX0VSUl9GSUxFX05PVF9GT1VORCwKPiArICAgICAgICAgICAgICAgICAgICAg ICBOXygidW5hYmxlIHRvIG9wZW4gdGhlIGRpc3RydXN0ZWQKPiBjZXJ0aWZpY2F0ZS9iaW5hcnkg aGFzaCBmaWxlIikpOwo+ICsKPiArICByYyA9IGdydWJfcmVhZF9maWxlIChoYXNoX2ZpbGUsICZo YXNoX2RhdGEsICZoYXNoX2RhdGFfc2l6ZSk7Cj4gKyAgaWYgKHJjICE9IEdSVUJfRVJSX05PTkUp Cj4gKyAgICB7Cj4gKyAgICAgIGdydWJfZmlsZV9jbG9zZSAoaGFzaF9maWxlKTsKPiArICAgICAg cmV0dXJuIHJjOwo+ICsgICAgfQo+ICsKPiArICBncnViX2ZpbGVfY2xvc2UgKGhhc2hfZmlsZSk7 Cj4gKwo+ICsgIGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2lnIiwgImFkZGluZyBhIGRpc3RydXN0 ZWQKPiBjZXJ0aWZpY2F0ZS9iaW5hcnkgaGFzaCAlc1xuIgo+ICsgICAgICAgICAgICAgICAgIiB3 aXRoIHNpemUgb2YgJSIgUFJJdUdSVUJfU0laRSAiXG4iLCBoYXNoX2RhdGEsCj4gaGFzaF9kYXRh X3NpemUpOwo+ICsKPiArICBpZiAoY3R4dC0+c3RhdGVbT1BUSU9OX0JJTkFSWV9IQVNIXS5zZXQp Cj4gKyAgICB7Cj4gKyAgICAgIC8qIG9ubHkgYWNjZXB0IFNIQTI1NiwgU0hBMzg0IGFuZCBTSEE1 MTIgYmluYXJ5IGhhc2ggKi8KPiArICAgICAgaWYgKGhhc2hfZGF0YV9zaXplICE9IDMyICYmIGhh c2hfZGF0YV9zaXplICE9IDQ4ICYmIAo+IGhhc2hfZGF0YV9zaXplICE9IDY0KQo+ICsgICAgICAg IHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfU0lHTkFUVVJFLAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICBOXygidW5hY2NlcHRhYmxlIGRpc3RydXN0ZWQgYmluYXJ5IGhhc2gg Cj4gdHlwZSIpKTsKPiArICAgIH0KPiArICBlbHNlIGlmIChjdHh0LT5zdGF0ZVtPUFRJT05fQ0VS VF9IQVNIXS5zZXQpCj4gKyAgICB7Cj4gKyAgICAgIC8qIG9ubHkgYWNjZXB0IFNIQTI1NiwgU0hB Mzg0IGFuZCBTSEE1MTIgY2VydGlmaWNhdGUgaGFzaCAqLwo+ICsgICAgICBpZiAoaGFzaF9kYXRh X3NpemUgIT0gMzIgJiYgaGFzaF9kYXRhX3NpemUgIT0gNDggJiYgCj4gaGFzaF9kYXRhX3NpemUg IT0gNjQpCj4gKyAgICAgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9TSUdOQVRV UkUsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE5fKCJ1bmFjY2VwdGFibGUgZGlzdHJ1 c3RlZCBjZXJ0aWZpY2F0ZQo+IGhhc2ggdHlwZSIpKTsKPiArICAgIH0KPiArCj4gKyAgcmMgPSBn cnViX2FkZF9oYXNoICgoY29uc3QgZ3J1Yl91aW50OF90ICoqKSAmaGFzaF9kYXRhLAo+IGhhc2hf ZGF0YV9zaXplLCAmZ3J1Yl9kYnguc2lnbmF0dXJlcywKPiArICAgICAgICAgICAgICAgICAgICAg ICZncnViX2RieC5zaWduYXR1cmVfc2l6ZSwgCj4gJmdydWJfZGJ4LnNpZ25hdHVyZV9lbnRyaWVz KTsKPiArICBpZiAocmMgIT0gR1JVQl9FUlJfTk9ORSkKPiArICAgIHsKPiArICAgICAgZ3J1Yl9y ZWxlYXNlX3RydXN0ZWRfbGlzdCAoKTsKPiArICAgICAgZ3J1Yl9yZWxlYXNlX2Rpc3RydXN0ZWRf bGlzdCAoKTsKPiArICAgICAgZ3J1Yl9lcnJvciAocmMsICJhZGRpbmcgb2YgZGlzdHJ1c3RlZCBi aW5hcnkvY2VydGlmaWNhdGUgaGFzaCAKPiBmYWlsZWQiKTsKPiArICAgIH0KPiArCj4gKyAgZ3J1 Yl9mcmVlIChoYXNoX2RhdGEpOwo+ICsKPiArICByZXR1cm4gcmM7Cj4gK30KPiArCj4gIHN0YXRp YyBncnViX2Vycl90Cj4gIGFwcGVuZGVkc2lnX2luaXQgKGdydWJfZmlsZV90IGlvIF9fYXR0cmli dXRlX18gKCh1bnVzZWQpKSwgZW51bQo+IGdydWJfZmlsZV90eXBlIHR5cGUsCj4gICAgICAgICAg ICAgICAgICAgIHZvaWQgKipjb250ZXh0IF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwgZW51bQo+ IGdydWJfdmVyaWZ5X2ZsYWdzICpmbGFncykKPiBAQCAtODc4LDggKzEwNDQsNiBAQCBwc2V1ZG9f cmVhZCAoc3RydWN0IGdydWJfZmlsZSAqZmlsZSwgY2hhciAqYnVmLAo+IGdydWJfc2l6ZV90IGxl bikKPiAgLyogRmlsZXN5c3RlbSBkZXNjcmlwdG9yLiAgKi8KPiAgc3RhdGljIHN0cnVjdCBncnVi X2ZzIHBzZXVkb19mcyA9IHsgLm5hbWUgPSAicHNldWRvIiwgLmZzX3JlYWQgPSAKPiBwc2V1ZG9f cmVhZCB9Owo+IAo+IC1zdGF0aWMgZ3J1Yl9jb21tYW5kX3QgY21kX3ZlcmlmeSwgY21kX2xpc3Qs IGNtZF9kaXN0cnVzdCwgY21kX3RydXN0Owo+IC0KPiAgLyoKPiAgICogdmVyaWZ5IHRoZSB0cnVz dGVkIGNlcnRpZmljYXRlIGFnYWluc3QgdGhlIGNlcnRpZmljYXRlIGhhc2hlcyBmcm9tCj4gcGxh dGZvcm0ga2V5c3RvcmUgYnVmZmVyJ3MKPiAgICogZGlzdHJ1c3RlZCBsaXN0LCBpZiBpdCBpcyBw cmVzZW50LCByZXR1cm4gYSBiYWQgc2lnbmF0dXJlLgo+IEBAIC0xMTc1LDYgKzEzMzksMTAgQEAg Z3J1Yl9sb2FkX3N0YXRpY19rZXlzIChjb25zdCBzdHJ1Y3QKPiBncnViX21vZHVsZV9oZWFkZXIg KmhlYWRlciwgY29uc3QgZ3J1Yl9ib29sXwo+ICAgIHJldHVybiByYzsKPiAgfQo+IAo+ICtzdGF0 aWMgZ3J1Yl9leHRjbWRfdCBjbWRfZGlzdHJ1c3RlZF9oYXNoOwo+ICtzdGF0aWMgZ3J1Yl9jb21t YW5kX3QgY21kX3ZlcmlmeSwgY21kX3RydXN0ZWRfbGlzdCwgY21kX3RydXN0ZWRfY2VydCwKPiBj bWRfdHJ1c3RlZF9oYXNoLAo+ICsgICAgICAgICAgICAgICAgICAgICAgY21kX2Rpc3RydXN0ZWRf bGlzdCwgY21kX2Rpc3RydXN0ZWRfY2VydDsKPiArCj4gIEdSVUJfTU9EX0lOSVQgKGFwcGVuZGVk c2lnKQo+ICB7Cj4gICAgaW50IHJjOwo+IEBAIC0xMjQwLDE2ICsxNDA4LDMxIEBAIEdSVUJfTU9E X0lOSVQgKGFwcGVuZGVkc2lnKQo+ICAgICAgICBncnViX3JlbGVhc2VfcGxhdGZvcm1fa2V5c3Rv cmUgKCk7Cj4gICAgICB9Cj4gCj4gLSAgY21kX3RydXN0ID0gZ3J1Yl9yZWdpc3Rlcl9jb21tYW5k ICgidHJ1c3RfY2VydGlmaWNhdGUiLAo+IGdydWJfY21kX3RydXN0LCBOXygiWDUwOV9DRVJUSUZJ Q0FURSIpLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTl8oIkFkZCBY NTA5X0NFUlRJRklDQVRFIHRvCj4gdHJ1c3RlZCBjZXJ0aWZpY2F0ZXMuIikpOwo+IC0gIGNtZF9s aXN0ID0gZ3J1Yl9yZWdpc3Rlcl9jb21tYW5kICgibGlzdF9jZXJ0aWZpY2F0ZXMiLCAKPiBncnVi X2NtZF9saXN0LCAwLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOXygi U2hvdyB0aGUgbGlzdCBvZiB0cnVzdGVkIHg1MDkKPiBjZXJ0aWZpY2F0ZXMuIikpOwo+ICsgIGNt ZF90cnVzdGVkX2NlcnQgPSBncnViX3JlZ2lzdGVyX2NvbW1hbmQgKCJ0cnVzdGVkX2NlcnRpZmlj YXRlIiwKPiBncnViX2NtZF90cnVzdGVkX2NlcnQsCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTl8oIlg1MDlfQ0VSVElGSUNBVEUiKSwKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOXygiQWRkIFg1MDlfQ0VSVElGSUNB VEUKPiB0byB0cnVzdGVkIGxpc3QuIikpOwo+ICsgIGNtZF90cnVzdGVkX2hhc2ggPSBncnViX3Jl Z2lzdGVyX2NvbW1hbmQgKCJ0cnVzdGVkX3NpZ25hdHVyZSIsCj4gZ3J1Yl9jbWRfdHJ1c3RlZF9o YXNoLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5fKCJC SU5BUlkgSEFTSCBGSUxFIiksCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTl8oIkFkZCB0cnVzdGVkIEJJTkFSWQo+IEhBU0ggdG8gdHJ1c3RlZCBsaXN0LiIp KTsKPiArICBjbWRfZGlzdHJ1c3RlZF9jZXJ0ID0gZ3J1Yl9yZWdpc3Rlcl9jb21tYW5kCj4gKCJk aXN0cnVzdGVkX2NlcnRpZmljYXRlIiwgZ3J1Yl9jbWRfZGlzdHJ1c3RlZF9jZXJ0LAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5fKCJDRVJUX05VTUJF UiIpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5f KCJSZW1vdmUgQ0VSVF9OVU1CRVIKPiAoYXMgbGlzdGVkIGJ5IGxpc3RfdHJ1c3RlZCkiCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBmcm9tIHRy dXN0ZWQgCj4gbGlzdC4iKSk7Cj4gKyAgY21kX2Rpc3RydXN0ZWRfaGFzaCA9IGdydWJfcmVnaXN0 ZXJfZXh0Y21kICgiZGlzdHJ1c3RlZF9zaWduYXR1cmUiLAo+IGdydWJfY21kX2Rpc3RydXN0ZWRf aGFzaCwgMCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE5fKCJbLWJ8LS1iaW5hcnktaGFzaF0KPiBGSUxFIFtCSU5BUlkgSEFTSCBGSUxFXVxuIgo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlstY3wtLWNl cnQtaGFzaF0KPiBGSUxFIFtDRVJURklDQVRFIEhBU0ggRklMRV0iKSwKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5fKCJBZGQgZGlzdHJ1c3RlZAo+IENF UlRGSUNBVEUvQklOQVJZIEhBU0ggIgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgInRvIGRpc3RydXN0ZWQgCj4gbGlzdC4iKSwKPiArCQkJICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zKTsKPiArICBjbWRfdHJ1 c3RlZF9saXN0ID0gZ3J1Yl9yZWdpc3Rlcl9jb21tYW5kICgidHJ1c3RlZF9saXN0IiwKPiBncnVi X2NtZF90cnVzdGVkX2xpc3QsIDAsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTl8oIlNob3cgdGhlIGxpc3Qgb2YKPiB0cnVzdGVkIHg1MDkgY2VydGlmaWNh dGVzIGFuZCIKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiIHRydXN0ZWQgYmluYXJ5IAo+IGhhc2hlcy4iKSk7Cj4gKyAgY21kX2Rpc3RydXN0ZWRfbGlz dCA9IGdydWJfcmVnaXN0ZXJfY29tbWFuZCAoImRpc3RydXN0ZWRfbGlzdCIsCj4gZ3J1Yl9jbWRf ZGlzdHJ1c3RlZF9saXN0LCAwLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE5fKCJTaG93IHRoZSBsaXN0IG9mCj4gZGlzdHJ1c3RlZCBjZXJ0aWZpY2F0 ZXMgYW5kIgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICIKPiBjZXJ0aWZpY2F0ZS9iaW5hcnkgaGFzaGVzIikpOwo+ICAgIGNtZF92ZXJpZnkgPSBn cnViX3JlZ2lzdGVyX2NvbW1hbmQgKCJ2ZXJpZnlfYXBwZW5kZWQiLAo+IGdydWJfY21kX3Zlcmlm eV9zaWduYXR1cmUsIE5fKCJGSUxFIiksCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTl8oIlZlcmlmeSBGSUxFIGFnYWluc3QgdGhlCj4gdHJ1c3RlZCB4NTA5IGNlcnRp ZmljYXRlcy4iKSk7Cj4gLSAgY21kX2Rpc3RydXN0ID0gZ3J1Yl9yZWdpc3Rlcl9jb21tYW5kICgi ZGlzdHJ1c3RfY2VydGlmaWNhdGUiLAo+IGdydWJfY21kX2Rpc3RydXN0LAo+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTl8oIkNFUlRfTlVNQkVSIiksCj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOXygiUmVtb3ZlIENFUlRfTlVNQkVS IChhcwo+IGxpc3RlZCBieSBsaXN0X2NlcnRpZmljYXRlcykiCj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiIGZyb20gdHJ1c3RlZCAKPiBjZXJ0aWZpY2F0ZXMu IikpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5fKCJWZXJpZnkg RklMRSBhZ2FpbnN0IHRoZQo+IHRydXN0ZWQgeDUwOSBjZXJ0aWZpY2F0ZXMvIgo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0cnVzdGVkIGJpbmFyeSBoYXNoZXMu IikpOwo+IAo+ICAgIGdydWJfdmVyaWZpZXJfcmVnaXN0ZXIgKCZncnViX2FwcGVuZGVkc2lnX3Zl cmlmaWVyKTsKPiAgICBncnViX2RsX3NldF9wZXJzaXN0ZW50IChtb2QpOwo+IEBAIC0xMjYxLDEw ICsxNDQ0LDEyIEBAIEdSVUJfTU9EX0ZJTkkgKGFwcGVuZGVkc2lnKQo+ICAgICAqIGdydWJfZGxf c2V0X3BlcnNpc3RlbnQgc2hvdWxkIHByZXZlbnQgdGhpcyBmcm9tIGFjdHVhbGx5IHJ1bm5pbmcs IAo+IGJ1dAo+ICAgICAqIGl0IGRvZXMgc3RpbGwgcnVuIHVuZGVyIGVtdS4KPiAgICAgKi8KPiAt Cj4gICAgZ3J1Yl92ZXJpZmllcl91bnJlZ2lzdGVyICgmZ3J1Yl9hcHBlbmRlZHNpZ192ZXJpZmll cik7Cj4gICAgZ3J1Yl91bnJlZ2lzdGVyX2NvbW1hbmQgKGNtZF92ZXJpZnkpOwo+IC0gIGdydWJf dW5yZWdpc3Rlcl9jb21tYW5kIChjbWRfbGlzdCk7Cj4gLSAgZ3J1Yl91bnJlZ2lzdGVyX2NvbW1h bmQgKGNtZF90cnVzdCk7Cj4gLSAgZ3J1Yl91bnJlZ2lzdGVyX2NvbW1hbmQgKGNtZF9kaXN0cnVz dCk7Cj4gKyAgZ3J1Yl91bnJlZ2lzdGVyX2NvbW1hbmQgKGNtZF90cnVzdGVkX2xpc3QpOwo+ICsg IGdydWJfdW5yZWdpc3Rlcl9jb21tYW5kIChjbWRfZGlzdHJ1c3RlZF9saXN0KTsKPiArICBncnVi X3VucmVnaXN0ZXJfY29tbWFuZCAoY21kX3RydXN0ZWRfY2VydCk7Cj4gKyAgZ3J1Yl91bnJlZ2lz dGVyX2NvbW1hbmQgKGNtZF9kaXN0cnVzdGVkX2NlcnQpOwo+ICsgIGdydWJfdW5yZWdpc3Rlcl9j b21tYW5kIChjbWRfdHJ1c3RlZF9oYXNoKTsKPiArICBncnViX3VucmVnaXN0ZXJfZXh0Y21kIChj bWRfZGlzdHJ1c3RlZF9oYXNoKTsKPiAgfQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KR3J1Yi1kZXZlbCBtYWlsaW5nIGxpc3QKR3J1Yi1kZXZlbEBnbnUu b3JnCmh0dHBzOi8vbGlzdHMuZ251Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2dydWItZGV2ZWwK