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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4284BC07E9D for ; Tue, 27 Sep 2022 01:31:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229885AbiI0BbZ (ORCPT ); Mon, 26 Sep 2022 21:31:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33154 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229749AbiI0BbX (ORCPT ); Mon, 26 Sep 2022 21:31:23 -0400 Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 04EA6A61D5; Mon, 26 Sep 2022 18:31:18 -0700 (PDT) Received: from pps.filterd (m0098409.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 28R0rk1L003972; Tue, 27 Sep 2022 01:31:12 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=message-id : subject : from : to : cc : in-reply-to : references : content-type : content-transfer-encoding : date : mime-version; s=pp1; bh=3PXxmHFqVUFNRQ1sVFgqsEWtzQqF6QXRLaY9t8+rk9g=; b=agNNAAs4wdheCpIYjk1ooBp6080+DkxUhD3fgvHukZtvpLU/E2Ddu2fjhSiHsZdCUoRN nuxx3vahgupGBkbGgiXNIa7xSGj/+R2YfXpfsbGsRxpzGZ49DTZkbkQTcjEQDLwyh5lF s69NgYcHyxeZi+rFq06wLyepy9q9s0gp/WGkIkyLONqSCmVHlLtzj9EmhIbB/J/885ab hDkz3zvBSALSKKpsN/tcij2hmkODne82GzS3FeHbMA6eKYm4pTmOSZ8Hzuc3yJMkybwd OL8CEH41W5pObH7Z0xWj7gLkKh1XcsiGfyxojQwHeazRXQphGUgk/dR4qPe+ftaNeO5K tA== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3juq1m0xmf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 27 Sep 2022 01:31:12 +0000 Received: from m0098409.ppops.net (m0098409.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 28R1T1kl023839; Tue, 27 Sep 2022 01:31:11 GMT Received: from ppma01dal.us.ibm.com (83.d6.3fa9.ip4.static.sl-reverse.com [169.63.214.131]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3juq1m0xk1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 27 Sep 2022 01:31:11 +0000 Received: from pps.filterd (ppma01dal.us.ibm.com [127.0.0.1]) by ppma01dal.us.ibm.com (8.16.1.2/8.16.1.2) with SMTP id 28R1Kiui012173; Tue, 27 Sep 2022 01:31:07 GMT Received: from b01cxnp23034.gho.pok.ibm.com (b01cxnp23034.gho.pok.ibm.com [9.57.198.29]) by ppma01dal.us.ibm.com with ESMTP id 3jssha5xg3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 27 Sep 2022 01:31:06 +0000 Received: from smtpav02.wdc07v.mail.ibm.com ([9.208.128.114]) by b01cxnp23034.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 28R1V48g58786062 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 27 Sep 2022 01:31:05 GMT Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 5FD9B5805D; Tue, 27 Sep 2022 01:31:04 +0000 (GMT) Received: from smtpav02.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id BD35A58068; Tue, 27 Sep 2022 01:31:00 +0000 (GMT) Received: from li-479af74c-31f9-11b2-a85c-e4ddee11713b.ibm.com (unknown [9.160.170.198]) by smtpav02.wdc07v.mail.ibm.com (Postfix) with ESMTP; Tue, 27 Sep 2022 01:31:00 +0000 (GMT) Message-ID: <9911db61eae68b59f76f0e83c1ed5001959c2005.camel@linux.ibm.com> Subject: Re: [PATCH 05/14] vfio/mdev: simplify mdev_type handling From: Eric Farman To: Christoph Hellwig , Kirti Wankhede , Tony Krowiak , Halil Pasic , Jason Herne , Matthew Rosato , Zhenyu Wang , Zhi Wang , Alex Williamson Cc: Jason Gunthorpe , kvm@vger.kernel.org, linux-s390@vger.kernel.org, intel-gvt-dev@lists.freedesktop.org, Kevin Tian In-Reply-To: <20220923092652.100656-6-hch@lst.de> References: <20220923092652.100656-1-hch@lst.de> <20220923092652.100656-6-hch@lst.de> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 Date: Mon, 26 Sep 2022 21:28:19 -0400 MIME-Version: 1.0 User-Agent: Evolution 3.44.4 (3.44.4-1.fc36) X-TM-AS-GCONF: 00 X-Proofpoint-GUID: -M0TEGxnyI16TBZTHmvf7F1_ZuJWNobr X-Proofpoint-ORIG-GUID: f5lLjjE8dp7x7yE_MWOwqPUyOrAaeU43 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.528,FMLib:17.11.122.1 definitions=2022-09-26_11,2022-09-22_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 clxscore=1015 mlxlogscore=999 impostorscore=0 mlxscore=0 adultscore=0 malwarescore=0 bulkscore=0 suspectscore=0 priorityscore=1501 spamscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2209130000 definitions=main-2209270007 Precedence: bulk List-ID: X-Mailing-List: linux-s390@vger.kernel.org T24gRnJpLCAyMDIyLTA5LTIzIGF0IDExOjI2ICswMjAwLCBDaHJpc3RvcGggSGVsbHdpZyB3cm90 ZToKPiBJbnN0ZWFkIG9mIGFidXNpbmcgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCB0byBjb250cm9s IGluaXRpYWxpemF0aW9uCj4gb2YKPiBzdHJ1Y3QgbWRldl90eXBlLCBqdXN0IGRlZmluZSB0aGUg YWN0dWFsIGF0dHJpYnV0ZXMgaW4gdGhlCj4gbWRldl9kcml2ZXIsCj4gYWxsb2NhdGUgdGhlIG1k ZXZfdHlwZSBzdHJ1Y3R1cmVzIGluIHRoZSBjYWxsZXIgYW5kIHBhc3MgdGhlbSB0bwo+IG1kZXZf cmVnaXN0ZXJfcGFyZW50Lgo+IAo+IFRoaXMgYWxsb3dzIHRoZSBjYWxsZXIgdG8gdXNlIGNvbnRh aW5lcl9vZiB0byBnZXQgYXQgdGhlIGNvbnRhaW5pbmcKPiBzdHJ1Y3R1cmUgYW5kIHRodXMgc2ln bmlmaWNhbnRseSBzaW1wbGlmeSB0aGUgY29kZS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBDaHJpc3Rv cGggSGVsbHdpZyA8aGNoQGxzdC5kZT4KPiBSZXZpZXdlZC1ieTogSmFzb24gR3VudGhvcnBlIDxq Z2dAbnZpZGlhLmNvbT4KPiBSZXZpZXdlZC1ieTogVG9ueSBLcm93aWFrIDxha3Jvd2lha0BsaW51 eC5pYm0uY29tPgo+IFJldmlld2VkLWJ5OiBLZXZpbiBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNv bT4KPiBSZXZpZXdlZC1ieTogS2lydGkgV2Fua2hlZGUgPGt3YW5raGVkZUBudmlkaWEuY29tPgoK UmV2aWV3ZWQtYnk6IEVyaWMgRmFybWFuIDxmYXJtYW5AbGludXguaWJtLmNvbT4KCj4gLS0tCj4g wqAuLi4vZHJpdmVyLWFwaS92ZmlvLW1lZGlhdGVkLWRldmljZS5yc3TCoMKgwqDCoMKgwqAgfMKg wqAgMiArLQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5owqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHzCoMKgIDMgKy0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9r dm1ndC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAxMDIgKysrLS0tLS0tLS0tLS0tLQo+ IC0tCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvdmdwdS5jwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB8wqAgMTMgKystCj4gwqBkcml2ZXJzL3MzOTAvY2lvL3ZmaW9fY2N3X2Rydi5j wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCA2ICstCj4gwqBkcml2ZXJzL3MzOTAv Y2lvL3ZmaW9fY2N3X29wcy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMTQgKy0t Cj4gwqBkcml2ZXJzL3MzOTAvY2lvL3ZmaW9fY2N3X3ByaXZhdGUuaMKgwqDCoMKgwqDCoMKgwqDC oMKgIHzCoMKgIDIgKwo+IMKgZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAxOSArKy0tCj4gwqBkcml2ZXJzL3MzOTAvY3J5cHRvL3Zm aW9fYXBfcHJpdmF0ZS5owqDCoMKgwqDCoMKgwqDCoCB8wqDCoCAyICsKPiDCoGRyaXZlcnMvdmZp by9tZGV2L21kZXZfY29yZS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDMx ICsrLS0tLQo+IMKgZHJpdmVycy92ZmlvL21kZXYvbWRldl9kcml2ZXIuY8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfMKgwqAgNSArLQo+IMKgZHJpdmVycy92ZmlvL21kZXYvbWRldl9wcml2 YXRlLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCA4IC0tCj4gwqBkcml2ZXJzL3Zm aW8vbWRldi9tZGV2X3N5c2ZzLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDkx ICsrKystLS0tLS0tLS0tLS0KPiDCoGluY2x1ZGUvbGludXgvbWRldi5owqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDI2ICsrKy0tCj4gwqBzYW1w bGVzL3ZmaW8tbWRldi9tYm9jaHMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHzCoCA1NyArKysrLS0tLS0tCj4gwqBzYW1wbGVzL3ZmaW8tbWRldi9tZHB5LmPCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDUwICsrKystLS0tLQo+IMKg c2FtcGxlcy92ZmlvLW1kZXYvbXR0eS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHzCoCA2MCArKysrKy0tLS0tLQo+IMKgMTcgZmlsZXMgY2hhbmdlZCwgMTY1IGlu c2VydGlvbnMoKyksIDMyNiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRh dGlvbi9kcml2ZXItYXBpL3ZmaW8tbWVkaWF0ZWQtZGV2aWNlLnJzdAo+IGIvRG9jdW1lbnRhdGlv bi9kcml2ZXItYXBpL3ZmaW8tbWVkaWF0ZWQtZGV2aWNlLnJzdAo+IGluZGV4IGNkMTY2NzYwOGFi NWQuLmZmNzM0MmQyZTMzMmQgMTAwNjQ0Cj4gLS0tIGEvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBp L3ZmaW8tbWVkaWF0ZWQtZGV2aWNlLnJzdAo+ICsrKyBiL0RvY3VtZW50YXRpb24vZHJpdmVyLWFw aS92ZmlvLW1lZGlhdGVkLWRldmljZS5yc3QKPiBAQCAtMTAzLDcgKzEwMyw3IEBAIHN0cnVjdHVy ZSB0byByZXByZXNlbnQgYSBtZWRpYXRlZCBkZXZpY2Uncwo+IGRyaXZlcjo6Cj4gwqDCoMKgwqDC oCBzdHJ1Y3QgbWRldl9kcml2ZXIgewo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnTCoCAo KnByb2JlKcKgIChzdHJ1Y3QgbWRldl9kZXZpY2UgKmRldik7Cj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHZvaWQgKCpyZW1vdmUpIChzdHJ1Y3QgbWRldl9kZXZpY2UgKmRldik7Cj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqKnN1cHBvcnRlZF90eXBl X2dyb3VwczsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBzdHJ1Y3QgYXR0cmlidXRl ICogY29uc3QgKnR5cGVzX2F0dHJzOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qg ZGV2aWNlX2RyaXZlcsKgwqDCoCBkcml2ZXI7Cj4gwqDCoMKgwqDCoCB9Owo+IMKgCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuaAo+IGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Z0L2d2dC5oCj4gaW5kZXggZmE0YTU2YjUwYzgyOC4uZGIxODIwNjZkNTZjOSAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmgKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmgKPiBAQCAtMzEwLDggKzMxMCw4IEBAIHN0cnVjdCBpbnRl bF92Z3B1X2NvbmZpZyB7Cj4gwqDCoMKgwqDCoMKgwqDCoGNvbnN0IGNoYXIgKm5hbWU7Cj4gwqB9 Owo+IMKgCj4gLSNkZWZpbmUgTlJfTUFYX0lOVEVMX1ZHUFVfVFlQRVMgMjAKPiDCoHN0cnVjdCBp bnRlbF92Z3B1X3R5cGUgewo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBtZGV2X3R5cGUgdHlwZTsK PiDCoMKgwqDCoMKgwqDCoMKgY2hhciBuYW1lWzE2XTsKPiDCoMKgwqDCoMKgwqDCoMKgY29uc3Qg c3RydWN0IGludGVsX3ZncHVfY29uZmlnICpjb25mOwo+IMKgwqDCoMKgwqDCoMKgwqB1bnNpZ25l ZCBpbnQgYXZhaWxfaW5zdGFuY2U7Cj4gQEAgLTMzOSw2ICszMzksNyBAQCBzdHJ1Y3QgaW50ZWxf Z3Z0IHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IG5vdGlmaWVyX2Jsb2NrCj4gc2hhZG93X2N0 eF9ub3RpZmllcl9ibG9ja1tJOTE1X05VTV9FTkdJTkVTXTsKPiDCoMKgwqDCoMKgwqDCoMKgREVD TEFSRV9IQVNIVEFCTEUoY21kX3RhYmxlLCBHVlRfQ01EX0hBU0hfQklUUyk7Cj4gwqDCoMKgwqDC oMKgwqDCoHN0cnVjdCBtZGV2X3BhcmVudCBwYXJlbnQ7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0 IG1kZXZfdHlwZSAqKm1kZXZfdHlwZXM7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBpbnRlbF92 Z3B1X3R5cGUgKnR5cGVzOwo+IMKgwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBpbnQgbnVtX3R5cGVz Owo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaW50ZWxfdmdwdSAqaWRsZV92Z3B1Owo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQva3ZtZ3QuYwo+IGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L2t2bWd0LmMKPiBpbmRleCAyOTUzMWI3OTcwMTBmLi5jZTZiOGNiMzdiZTBj IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9rdm1ndC5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2t2bWd0LmMKPiBAQCAtMTE3LDE3ICsxMTcsMTAgQEAg c3RhdGljIHNzaXplX3QgYXZhaWxhYmxlX2luc3RhbmNlc19zaG93KHN0cnVjdAo+IG1kZXZfdHlw ZSAqbXR5cGUsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbWRldl90eXBlX2F0dHJp YnV0ZQo+ICphdHRyLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhciAqYnVmKQo+IMKgewo+ IC3CoMKgwqDCoMKgwqDCoHN0cnVjdCBpbnRlbF92Z3B1X3R5cGUgKnR5cGU7Cj4gLcKgwqDCoMKg wqDCoMKgdW5zaWduZWQgaW50IG51bSA9IDA7Cj4gLcKgwqDCoMKgwqDCoMKgc3RydWN0IGludGVs X2d2dCAqZ3Z0ID0KPiBrZGV2X3RvX2k5MTUobXR5cGVfZ2V0X3BhcmVudF9kZXYobXR5cGUpKS0+ Z3Z0Owo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBpbnRlbF92Z3B1X3R5cGUgKnR5cGUgPQo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjb250YWluZXJfb2YobXR5cGUsIHN0cnVjdCBp bnRlbF92Z3B1X3R5cGUsIHR5cGUpOwo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgdHlwZSA9ICZndnQt PnR5cGVzW210eXBlX2dldF90eXBlX2dyb3VwX2lkKG10eXBlKV07Cj4gLcKgwqDCoMKgwqDCoMKg aWYgKCF0eXBlKQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBudW0gPSAwOwo+IC3C oMKgwqDCoMKgwqDCoGVsc2UKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbnVtID0g dHlwZS0+YXZhaWxfaW5zdGFuY2U7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiBzcHJpbnRm KGJ1ZiwgIiV1XG4iLCBudW0pOwo+ICvCoMKgwqDCoMKgwqDCoHJldHVybiBzcHJpbnRmKGJ1Ziwg IiV1XG4iLCB0eXBlLT5hdmFpbF9pbnN0YW5jZSk7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBzc2l6 ZV90IGRldmljZV9hcGlfc2hvdyhzdHJ1Y3QgbWRldl90eXBlICptdHlwZSwKPiBAQCAtMTM5LDEy ICsxMzIsOCBAQCBzdGF0aWMgc3NpemVfdCBkZXZpY2VfYXBpX3Nob3coc3RydWN0IG1kZXZfdHlw ZQo+ICptdHlwZSwKPiDCoHN0YXRpYyBzc2l6ZV90IGRlc2NyaXB0aW9uX3Nob3coc3RydWN0IG1k ZXZfdHlwZSAqbXR5cGUsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBtZGV2X3R5cGVfYXR0cmlidXRlICphdHRy LAo+IGNoYXIgKmJ1ZikKPiDCoHsKPiAtwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaW50ZWxfdmdwdV90 eXBlICp0eXBlOwo+IC3CoMKgwqDCoMKgwqDCoHN0cnVjdCBpbnRlbF9ndnQgKmd2dCA9Cj4ga2Rl dl90b19pOTE1KG10eXBlX2dldF9wYXJlbnRfZGV2KG10eXBlKSktPmd2dDsKPiAtCj4gLcKgwqDC oMKgwqDCoMKgdHlwZSA9ICZndnQtPnR5cGVzW210eXBlX2dldF90eXBlX2dyb3VwX2lkKG10eXBl KV07Cj4gLcKgwqDCoMKgwqDCoMKgaWYgKCF0eXBlKQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqByZXR1cm4gMDsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaW50ZWxfdmdwdV90eXBl ICp0eXBlID0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29udGFpbmVyX29mKG10 eXBlLCBzdHJ1Y3QgaW50ZWxfdmdwdV90eXBlLCB0eXBlKTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKg wqByZXR1cm4gc3ByaW50ZihidWYsICJsb3dfZ21fc2l6ZTogJWRNQlxuaGlnaF9nbV9zaXplOiAl ZE1CXG4iCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgImZl bmNlOiAlZFxucmVzb2x1dGlvbjogJXNcbiIKPiBAQCAtMTU4LDE0ICsxNDcsNyBAQCBzdGF0aWMg c3NpemVfdCBkZXNjcmlwdGlvbl9zaG93KHN0cnVjdCBtZGV2X3R5cGUKPiAqbXR5cGUsCj4gwqBz dGF0aWMgc3NpemVfdCBuYW1lX3Nob3coc3RydWN0IG1kZXZfdHlwZSAqbXR5cGUsCj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBtZGV2X3R5 cGVfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCj4gwqB7Cj4gLcKgwqDCoMKgwqDCoMKgc3Ry dWN0IGludGVsX3ZncHVfdHlwZSAqdHlwZTsKPiAtwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaW50ZWxf Z3Z0ICpndnQgPQo+IGtkZXZfdG9faTkxNShtdHlwZV9nZXRfcGFyZW50X2RldihtdHlwZSkpLT5n dnQ7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHR5cGUgPSAmZ3Z0LT50eXBlc1ttdHlwZV9nZXRfdHlw ZV9ncm91cF9pZChtdHlwZSldOwo+IC3CoMKgwqDCoMKgwqDCoGlmICghdHlwZSkKPiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJl dHVybiBzcHJpbnRmKGJ1ZiwgIiVzXG4iLCB0eXBlLT5uYW1lKTsKPiArwqDCoMKgwqDCoMKgwqBy ZXR1cm4gc3ByaW50ZihidWYsICIlc1xuIiwgbXR5cGUtPnN5c2ZzX25hbWUpOwo+IMKgfQo+IMKg Cj4gwqBzdGF0aWMgTURFVl9UWVBFX0FUVFJfUk8oYXZhaWxhYmxlX2luc3RhbmNlcyk7Cj4gQEAg LTE3Myw3ICsxNTUsNyBAQCBzdGF0aWMgTURFVl9UWVBFX0FUVFJfUk8oZGV2aWNlX2FwaSk7Cj4g wqBzdGF0aWMgTURFVl9UWVBFX0FUVFJfUk8oZGVzY3JpcHRpb24pOwo+IMKgc3RhdGljIE1ERVZf VFlQRV9BVFRSX1JPKG5hbWUpOwo+IMKgCj4gLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpndnRf dHlwZV9hdHRyc1tdID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqZ3Z0X3R5 cGVfYXR0cnNbXSA9IHsKPiDCoMKgwqDCoMKgwqDCoMKgJm1kZXZfdHlwZV9hdHRyX2F2YWlsYWJs ZV9pbnN0YW5jZXMuYXR0ciwKPiDCoMKgwqDCoMKgwqDCoMKgJm1kZXZfdHlwZV9hdHRyX2Rldmlj ZV9hcGkuYXR0ciwKPiDCoMKgwqDCoMKgwqDCoMKgJm1kZXZfdHlwZV9hdHRyX2Rlc2NyaXB0aW9u LmF0dHIsCj4gQEAgLTE4MSw1MSArMTYzLDYgQEAgc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmd2 dF90eXBlX2F0dHJzW10gPSB7Cj4gwqDCoMKgwqDCoMKgwqDCoE5VTEwsCj4gwqB9Owo+IMKgCj4g LXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICpndnRfdmdwdV90eXBlX2dyb3Vwc1tdID0g ewo+IC3CoMKgwqDCoMKgwqDCoFswIC4uLiBOUl9NQVhfSU5URUxfVkdQVV9UWVBFUyAtIDFdID0g TlVMTCwKPiAtfTsKPiAtCj4gLXN0YXRpYyBpbnQgaW50ZWxfZ3Z0X2luaXRfdmdwdV90eXBlX2dy b3VwcyhzdHJ1Y3QgaW50ZWxfZ3Z0ICpndnQpCj4gLXsKPiAtwqDCoMKgwqDCoMKgwqBpbnQgaSwg ajsKPiAtwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaW50ZWxfdmdwdV90eXBlICp0eXBlOwo+IC3CoMKg wqDCoMKgwqDCoHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKmdyb3VwOwo+IC0KPiAtwqDCoMKgwqDC oMKgwqBmb3IgKGkgPSAwOyBpIDwgZ3Z0LT5udW1fdHlwZXM7IGkrKykgewo+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB0eXBlID0gJmd2dC0+dHlwZXNbaV07Cj4gLQo+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBncm91cCA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBhdHRy aWJ1dGVfZ3JvdXApLAo+IEdGUF9LRVJORUwpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBpZiAoIWdyb3VwKQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZ290byB1bndpbmQ7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBncm91cC0+bmFtZSA9IHR5cGUtPm5hbWU7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGdyb3VwLT5hdHRycyA9IGd2dF90eXBlX2F0dHJzOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBndnRfdmdwdV90eXBlX2dyb3Vwc1tpXSA9IGdyb3VwOwo+IC3CoMKgwqDCoMKg wqDCoH0KPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gLQo+IC11bndpbmQ6Cj4gLcKg wqDCoMKgwqDCoMKgZm9yIChqID0gMDsgaiA8IGk7IGorKykgewo+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBncm91cCA9IGd2dF92Z3B1X3R5cGVfZ3JvdXBzW2pdOwo+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBrZnJlZShncm91cCk7Cj4gLcKgwqDCoMKgwqDCoMKgfQo+ IC0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gLUVOT01FTTsKPiAtfQo+IC0KPiAtc3RhdGljIHZv aWQgaW50ZWxfZ3Z0X2NsZWFudXBfdmdwdV90eXBlX2dyb3VwcyhzdHJ1Y3QgaW50ZWxfZ3Z0Cj4g Kmd2dCkKPiAtewo+IC3CoMKgwqDCoMKgwqDCoGludCBpOwo+IC3CoMKgwqDCoMKgwqDCoHN0cnVj dCBhdHRyaWJ1dGVfZ3JvdXAgKmdyb3VwOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqBmb3IgKGkgPSAw OyBpIDwgZ3Z0LT5udW1fdHlwZXM7IGkrKykgewo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBncm91cCA9IGd2dF92Z3B1X3R5cGVfZ3JvdXBzW2ldOwo+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBndnRfdmdwdV90eXBlX2dyb3Vwc1tpXSA9IE5VTEw7Cj4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGtmcmVlKGdyb3VwKTsKPiAtwqDCoMKgwqDCoMKgwqB9Cj4g LX0KPiAtCj4gwqBzdGF0aWMgdm9pZCBndnRfdW5waW5fZ3Vlc3RfcGFnZShzdHJ1Y3QgaW50ZWxf dmdwdSAqdmdwdSwgdW5zaWduZWQKPiBsb25nIGdmbiwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHVuc2lnbmVkIGxvbmcgc2l6ZSkKPiDCoHsKPiBAQCAtMTU0NywxNiArMTQ4NCwx MSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cAo+ICppbnRlbF92Z3B1X2dy b3Vwc1tdID0gewo+IMKgc3RhdGljIGludCBpbnRlbF92Z3B1X2luaXRfZGV2KHN0cnVjdCB2Zmlv X2RldmljZSAqdmZpb19kZXYpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBtZGV2X2Rl dmljZSAqbWRldiA9IHRvX21kZXZfZGV2aWNlKHZmaW9fZGV2LT5kZXYpOwo+IC3CoMKgwqDCoMKg wqDCoHN0cnVjdCBkZXZpY2UgKnBkZXYgPSBtZGV2X3BhcmVudF9kZXYobWRldik7Cj4gLcKgwqDC oMKgwqDCoMKgc3RydWN0IGludGVsX2d2dCAqZ3Z0ID0ga2Rldl90b19pOTE1KHBkZXYpLT5ndnQ7 Cj4gLcKgwqDCoMKgwqDCoMKgc3RydWN0IGludGVsX3ZncHVfdHlwZSAqdHlwZTsKPiDCoMKgwqDC oMKgwqDCoMKgc3RydWN0IGludGVsX3ZncHUgKnZncHUgPSB2ZmlvX2Rldl90b192Z3B1KHZmaW9f ZGV2KTsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaW50ZWxfdmdwdV90eXBlICp0eXBlID0KPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29udGFpbmVyX29mKG1kZXYtPnR5cGUsIHN0 cnVjdCBpbnRlbF92Z3B1X3R5cGUsCj4gdHlwZSk7Cj4gwqAKPiAtwqDCoMKgwqDCoMKgwqB0eXBl ID0gJmd2dC0+dHlwZXNbbWRldl9nZXRfdHlwZV9ncm91cF9pZChtZGV2KV07Cj4gLcKgwqDCoMKg wqDCoMKgaWYgKCF0eXBlKQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4g LUVJTlZBTDsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgdmdwdS0+Z3Z0ID0gZ3Z0Owo+ICvCoMKgwqDC oMKgwqDCoHZncHUtPmd2dCA9IGtkZXZfdG9faTkxNShtZGV2X3BhcmVudF9kZXYobWRldikpLT5n dnQ7Cj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBpbnRlbF9ndnRfY3JlYXRlX3ZncHUodmdwdSwg dHlwZS0+Y29uZik7Cj4gwqB9Cj4gwqAKPiBAQCAtMTYyNCw3ICsxNTU2LDcgQEAgc3RhdGljIHN0 cnVjdCBtZGV2X2RyaXZlcgo+IGludGVsX3ZncHVfbWRldl9kcml2ZXIgPSB7Cj4gwqDCoMKgwqDC oMKgwqDCoH0sCj4gwqDCoMKgwqDCoMKgwqDCoC5wcm9iZcKgwqDCoMKgwqDCoMKgwqDCoMKgPSBp bnRlbF92Z3B1X3Byb2JlLAo+IMKgwqDCoMKgwqDCoMKgwqAucmVtb3ZlwqDCoMKgwqDCoMKgwqDC oMKgPSBpbnRlbF92Z3B1X3JlbW92ZSwKPiAtwqDCoMKgwqDCoMKgwqAuc3VwcG9ydGVkX3R5cGVf Z3JvdXBzwqDCoD0gZ3Z0X3ZncHVfdHlwZV9ncm91cHMsCj4gK8KgwqDCoMKgwqDCoMKgLnR5cGVz X2F0dHJzwqDCoMKgwqA9IGd2dF90eXBlX2F0dHJzLAo+IMKgfTsKPiDCoAo+IMKgaW50IGludGVs X2d2dF9wYWdlX3RyYWNrX2FkZChzdHJ1Y3QgaW50ZWxfdmdwdSAqaW5mbywgdTY0IGdmbikKPiBA QCAtMTkyMyw3ICsxODU1LDYgQEAgc3RhdGljIHZvaWQgaW50ZWxfZ3Z0X2NsZWFuX2RldmljZShz dHJ1Y3QKPiBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgcmV0dXJuOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoG1kZXZfdW5yZWdpc3Rlcl9w YXJlbnQoJmd2dC0+cGFyZW50KTsKPiAtwqDCoMKgwqDCoMKgwqBpbnRlbF9ndnRfY2xlYW51cF92 Z3B1X3R5cGVfZ3JvdXBzKGd2dCk7Cj4gwqDCoMKgwqDCoMKgwqDCoGludGVsX2d2dF9kZXN0cm95 X2lkbGVfdmdwdShndnQtPmlkbGVfdmdwdSk7Cj4gwqDCoMKgwqDCoMKgwqDCoGludGVsX2d2dF9j bGVhbl92Z3B1X3R5cGVzKGd2dCk7Cj4gwqAKPiBAQCAtMjAyMywyMCArMTk1NCwxNSBAQCBzdGF0 aWMgaW50IGludGVsX2d2dF9pbml0X2RldmljZShzdHJ1Y3QKPiBkcm1faTkxNV9wcml2YXRlICpp OTE1KQo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoGludGVsX2d2dF9kZWJ1Z2ZzX2luaXQoZ3Z0KTsK PiDCoAo+IC3CoMKgwqDCoMKgwqDCoHJldCA9IGludGVsX2d2dF9pbml0X3ZncHVfdHlwZV9ncm91 cHMoZ3Z0KTsKPiAtwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBnb3RvIG91dF9kZXN0cm95X2lkbGVfdmdwdTsKPiAtCj4gwqDCoMKgwqDCoMKg wqDCoHJldCA9IG1kZXZfcmVnaXN0ZXJfcGFyZW50KCZndnQtPnBhcmVudCwgaTkxNS0+ZHJtLmRl diwKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgICZpbnRlbF92Z3B1X21kZXZfZHJpdmVyKTsKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZp bnRlbF92Z3B1X21kZXZfZHJpdmVyLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ3Z0LT5tZGV2X3R5cGVzLCBndnQt Pm51bV90eXBlcyk7Cj4gwqDCoMKgwqDCoMKgwqDCoGlmIChyZXQpCj4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGdvdG8gb3V0X2NsZWFudXBfdmdwdV90eXBlX2dyb3VwczsKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290byBvdXRfZGVzdHJveV9pZGxlX3ZncHU7Cj4g wqAKPiDCoMKgwqDCoMKgwqDCoMKgZ3Z0X2RiZ19jb3JlKCJndnQgZGV2aWNlIGluaXRpYWxpemF0 aW9uIGlzIGRvbmVcbiIpOwo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoAo+IC1vdXRf Y2xlYW51cF92Z3B1X3R5cGVfZ3JvdXBzOgo+IC3CoMKgwqDCoMKgwqDCoGludGVsX2d2dF9jbGVh bnVwX3ZncHVfdHlwZV9ncm91cHMoZ3Z0KTsKPiDCoG91dF9kZXN0cm95X2lkbGVfdmdwdToKPiDC oMKgwqDCoMKgwqDCoMKgaW50ZWxfZ3Z0X2Rlc3Ryb3lfaWRsZV92Z3B1KGd2dC0+aWRsZV92Z3B1 KTsKPiDCoMKgwqDCoMKgwqDCoMKgaW50ZWxfZ3Z0X2RlYnVnZnNfY2xlYW4oZ3Z0KTsKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3ZncHUuYwo+IGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L3ZncHUuYwo+IGluZGV4IDFiNjczMjhjNzE0ZjEuLjhmYTA2ZDAwZmQ0Yjkg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3ZncHUuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d2dC92Z3B1LmMKPiBAQCAtMTEzLDEzICsxMTMsMTggQEAgaW50 IGludGVsX2d2dF9pbml0X3ZncHVfdHlwZXMoc3RydWN0IGludGVsX2d2dAo+ICpndnQpCj4gwqDC oMKgwqDCoMKgwqDCoGlmICghZ3Z0LT50eXBlcykKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHJldHVybiAtRU5PTUVNOwo+IMKgCj4gK8KgwqDCoMKgwqDCoMKgZ3Z0LT5tZGV2X3R5 cGVzID0ga2NhbGxvYyhudW1fdHlwZXMsIHNpemVvZigqZ3Z0LQo+ID5tZGV2X3R5cGVzKSwKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEdG UF9LRVJORUwpOwo+ICvCoMKgwqDCoMKgwqDCoGlmICghZ3Z0LT5tZGV2X3R5cGVzKQo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnb3RvIG91dF9mcmVlX3R5cGVzOwo+ICsKPiDCoMKg wqDCoMKgwqDCoMKgZm9yIChpID0gMDsgaSA8IG51bV90eXBlczsgKytpKSB7Cj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjb25zdCBzdHJ1Y3QgaW50ZWxfdmdwdV9jb25maWcgKmNv bmYgPQo+ICZpbnRlbF92Z3B1X2NvbmZpZ3NbaV07Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGlmIChsb3dfYXZhaWwgLyBjb25mLT5sb3dfbW0gPT0gMCkKPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChjb25mLT53ZWlnaHQgPCAxIHx8IGNvbmYtPndl aWdodCA+Cj4gVkdQVV9NQVhfV0VJR0hUKQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZ290byBvdXRfZnJlZV90eXBlczsKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gb3V0X2ZyZWVfbWRldl90eXBlczsK PiDCoAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3ByaW50ZihndnQtPnR5cGVz W2ldLm5hbWUsICJHVlRnX1YldV8lcyIsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgR1JBUEhJQ1NfVkVSKGd2dC0+Z3QtPmk5MTUpID09IDggPyA0IDog NSwKPiBjb25mLT5uYW1lKTsKPiBAQCAtMTMxLDExICsxMzYsMTYgQEAgaW50IGludGVsX2d2dF9p bml0X3ZncHVfdHlwZXMoc3RydWN0IGludGVsX2d2dAo+ICpndnQpCj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaSwgZ3Z0LT50eXBlc1tp XS5uYW1lLCBndnQtCj4gPnR5cGVzW2ldLmF2YWlsX2luc3RhbmNlLAo+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbmYtPmxvd19tbSwg Y29uZi0+aGlnaF9tbSwgY29uZi0KPiA+ZmVuY2UsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uZi0+d2VpZ2h0LCB2Z3B1X2VkaWRf c3RyKGNvbmYtCj4gPmVkaWQpKTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGd2dC0+bWRldl90eXBlc1tpXSA9ICZndnQtPnR5cGVzW2ldLnR5cGU7Cj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGd2dC0+bWRldl90eXBlc1tpXS0+c3lzZnNfbmFtZSA9IGd2dC0+ dHlwZXNbaV0ubmFtZTsKPiDCoMKgwqDCoMKgwqDCoMKgfQo+IMKgCj4gwqDCoMKgwqDCoMKgwqDC oGd2dC0+bnVtX3R5cGVzID0gaTsKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqAKPiAr b3V0X2ZyZWVfbWRldl90eXBlczoKPiArwqDCoMKgwqDCoMKgwqBrZnJlZShndnQtPm1kZXZfdHlw ZXMpOwo+IMKgb3V0X2ZyZWVfdHlwZXM6Cj4gwqDCoMKgwqDCoMKgwqDCoGtmcmVlKGd2dC0+dHlw ZXMpOwo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gLUVJTlZBTDsKPiBAQCAtMTQzLDYgKzE1Myw3 IEBAIGludCBpbnRlbF9ndnRfaW5pdF92Z3B1X3R5cGVzKHN0cnVjdCBpbnRlbF9ndnQKPiAqZ3Z0 KQo+IMKgCj4gwqB2b2lkIGludGVsX2d2dF9jbGVhbl92Z3B1X3R5cGVzKHN0cnVjdCBpbnRlbF9n dnQgKmd2dCkKPiDCoHsKPiArwqDCoMKgwqDCoMKgwqBrZnJlZShndnQtPm1kZXZfdHlwZXMpOwo+ IMKgwqDCoMKgwqDCoMKgwqBrZnJlZShndnQtPnR5cGVzKTsKPiDCoH0KPiDCoAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL3MzOTAvY2lvL3ZmaW9fY2N3X2Rydi5jCj4gYi9kcml2ZXJzL3MzOTAvY2lv L3ZmaW9fY2N3X2Rydi5jCj4gaW5kZXggN2QxMDU5MTViZDE0OS4uMjVhNWRlMDhiMzkwMiAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL3MzOTAvY2lvL3ZmaW9fY2N3X2Rydi5jCj4gKysrIGIvZHJpdmVy cy9zMzkwL2Npby92ZmlvX2Njd19kcnYuYwo+IEBAIC0yMDIsNyArMjAyLDYgQEAgc3RhdGljIHZv aWQgdmZpb19jY3dfZnJlZV9wcml2YXRlKHN0cnVjdAo+IHZmaW9fY2N3X3ByaXZhdGUgKnByaXZh dGUpCj4gwqDCoMKgwqDCoMKgwqDCoG11dGV4X2Rlc3Ryb3koJnByaXZhdGUtPmlvX211dGV4KTsK PiDCoMKgwqDCoMKgwqDCoMKga2ZyZWUocHJpdmF0ZSk7Cj4gwqB9Cj4gLQo+IMKgc3RhdGljIGlu dCB2ZmlvX2Njd19zY2hfcHJvYmUoc3RydWN0IHN1YmNoYW5uZWwgKnNjaCkKPiDCoHsKPiDCoMKg wqDCoMKgwqDCoMKgc3RydWN0IHBtY3cgKnBtY3cgPSAmc2NoLT5zY2hpYi5wbWN3Owo+IEBAIC0y MjEsOCArMjIwLDExIEBAIHN0YXRpYyBpbnQgdmZpb19jY3dfc2NoX3Byb2JlKHN0cnVjdCBzdWJj aGFubmVsCj4gKnNjaCkKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBkZXZfc2V0X2RydmRhdGEoJnNj aC0+ZGV2LCBwcml2YXRlKTsKPiDCoAo+ICvCoMKgwqDCoMKgwqDCoHByaXZhdGUtPm1kZXZfdHlw ZS5zeXNmc19uYW1lID0gImlvIjsKPiArwqDCoMKgwqDCoMKgwqBwcml2YXRlLT5tZGV2X3R5cGVz WzBdID0gJnByaXZhdGUtPm1kZXZfdHlwZTsKPiDCoMKgwqDCoMKgwqDCoMKgcmV0ID0gbWRldl9y ZWdpc3Rlcl9wYXJlbnQoJnByaXZhdGUtPnBhcmVudCwgJnNjaC0+ZGV2LAo+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg JnZmaW9fY2N3X21kZXZfZHJpdmVyKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZ2ZmlvX2Njd19tZGV2X2RyaXZl ciwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHByaXZhdGUtPm1kZXZfdHlwZXMsIDEpOwo+IMKgwqDCoMKgwqDCoMKg wqBpZiAocmV0KQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290byBvdXRfZnJl ZTsKPiDCoAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvY2lvL3ZmaW9fY2N3X29wcy5jCj4g Yi9kcml2ZXJzL3MzOTAvY2lvL3ZmaW9fY2N3X29wcy5jCj4gaW5kZXggOWEwZTBjNWZmYjFhNS4u YzM3ZTcxMmE0YjA2OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3MzOTAvY2lvL3ZmaW9fY2N3X29w cy5jCj4gKysrIGIvZHJpdmVycy9zMzkwL2Npby92ZmlvX2Njd19vcHMuYwo+IEBAIC02OSwyMyAr NjksMTMgQEAgc3RhdGljIHNzaXplX3QgYXZhaWxhYmxlX2luc3RhbmNlc19zaG93KHN0cnVjdAo+ IG1kZXZfdHlwZSAqbXR5cGUsCj4gwqB9Cj4gwqBzdGF0aWMgTURFVl9UWVBFX0FUVFJfUk8oYXZh aWxhYmxlX2luc3RhbmNlcyk7Cj4gwqAKPiAtc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKm1kZXZf dHlwZXNfYXR0cnNbXSA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKm1kZXZf dHlwZXNfYXR0cnNbXSA9IHsKPiDCoMKgwqDCoMKgwqDCoMKgJm1kZXZfdHlwZV9hdHRyX25hbWUu YXR0ciwKPiDCoMKgwqDCoMKgwqDCoMKgJm1kZXZfdHlwZV9hdHRyX2RldmljZV9hcGkuYXR0ciwK PiDCoMKgwqDCoMKgwqDCoMKgJm1kZXZfdHlwZV9hdHRyX2F2YWlsYWJsZV9pbnN0YW5jZXMuYXR0 ciwKPiDCoMKgwqDCoMKgwqDCoMKgTlVMTCwKPiDCoH07Cj4gwqAKPiAtc3RhdGljIHN0cnVjdCBh dHRyaWJ1dGVfZ3JvdXAgbWRldl90eXBlX2dyb3VwID0gewo+IC3CoMKgwqDCoMKgwqDCoC5uYW1l wqAgPSAiaW8iLAo+IC3CoMKgwqDCoMKgwqDCoC5hdHRycyA9IG1kZXZfdHlwZXNfYXR0cnMsCj4g LX07Cj4gLQo+IC1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqbWRldl90eXBlX2dyb3Vw c1tdID0gewo+IC3CoMKgwqDCoMKgwqDCoCZtZGV2X3R5cGVfZ3JvdXAsCj4gLcKgwqDCoMKgwqDC oMKgTlVMTCwKPiAtfTsKPiAtCj4gwqBzdGF0aWMgaW50IHZmaW9fY2N3X21kZXZfaW5pdF9kZXYo c3RydWN0IHZmaW9fZGV2aWNlICp2ZGV2KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg dmZpb19jY3dfcHJpdmF0ZSAqcHJpdmF0ZSA9Cj4gQEAgLTY0Niw1ICs2MzYsNSBAQCBzdHJ1Y3Qg bWRldl9kcml2ZXIgdmZpb19jY3dfbWRldl9kcml2ZXIgPSB7Cj4gwqDCoMKgwqDCoMKgwqDCoH0s Cj4gwqDCoMKgwqDCoMKgwqDCoC5wcm9iZSA9IHZmaW9fY2N3X21kZXZfcHJvYmUsCj4gwqDCoMKg wqDCoMKgwqDCoC5yZW1vdmUgPSB2ZmlvX2Njd19tZGV2X3JlbW92ZSwKPiAtwqDCoMKgwqDCoMKg wqAuc3VwcG9ydGVkX3R5cGVfZ3JvdXBzwqAgPSBtZGV2X3R5cGVfZ3JvdXBzLAo+ICvCoMKgwqDC oMKgwqDCoC50eXBlc19hdHRycyA9IG1kZXZfdHlwZXNfYXR0cnMsCj4gwqB9Owo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL3MzOTAvY2lvL3ZmaW9fY2N3X3ByaXZhdGUuaAo+IGIvZHJpdmVycy9zMzkw L2Npby92ZmlvX2Njd19wcml2YXRlLmgKPiBpbmRleCAxYTRiZmIxYjVhODA4Li41MmNhYTcyMWVj MDZjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvczM5MC9jaW8vdmZpb19jY3dfcHJpdmF0ZS5oCj4g KysrIGIvZHJpdmVycy9zMzkwL2Npby92ZmlvX2Njd19wcml2YXRlLmgKPiBAQCAtMTIwLDYgKzEy MCw4IEBAIHN0cnVjdCB2ZmlvX2Njd19wcml2YXRlIHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0 IGNvbXBsZXRpb27CoMKgwqDCoMKgwqDCoHJlbGVhc2VfY29tcDsKPiDCoAo+IMKgwqDCoMKgwqDC oMKgwqBzdHJ1Y3QgbWRldl9wYXJlbnTCoMKgwqDCoMKgwqBwYXJlbnQ7Cj4gK8KgwqDCoMKgwqDC oMKgc3RydWN0IG1kZXZfdHlwZcKgwqDCoMKgwqDCoMKgwqBtZGV2X3R5cGU7Cj4gK8KgwqDCoMKg wqDCoMKgc3RydWN0IG1kZXZfdHlwZcKgwqDCoMKgwqDCoMKgwqAqbWRldl90eXBlc1sxXTsKPiDC oH0gX19hbGlnbmVkKDgpOwo+IMKgCj4gwqBpbnQgdmZpb19jY3dfc2NoX3F1aWVzY2Uoc3RydWN0 IHN1YmNoYW5uZWwgKnNjaCk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9jcnlwdG8vdmZp b19hcF9vcHMuYwo+IGIvZHJpdmVycy9zMzkwL2NyeXB0by92ZmlvX2FwX29wcy5jCj4gaW5kZXgg NzI0ZDA5YTc0YThmMS4uMjRkMTMxYzUwMmNhMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3MzOTAv Y3J5cHRvL3ZmaW9fYXBfb3BzLmMKPiArKysgYi9kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBf b3BzLmMKPiBAQCAtODE2LDIzICs4MTYsMTMgQEAgc3RhdGljIHNzaXplX3QgZGV2aWNlX2FwaV9z aG93KHN0cnVjdCBtZGV2X3R5cGUKPiAqbXR5cGUsCj4gwqAKPiDCoHN0YXRpYyBNREVWX1RZUEVf QVRUUl9STyhkZXZpY2VfYXBpKTsKPiDCoAo+IC1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqdmZp b19hcF9tZGV2X3R5cGVfYXR0cnNbXSA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1 dGUgKnZmaW9fYXBfbWRldl90eXBlX2F0dHJzW10gPSB7Cj4gwqDCoMKgwqDCoMKgwqDCoCZtZGV2 X3R5cGVfYXR0cl9uYW1lLmF0dHIsCj4gwqDCoMKgwqDCoMKgwqDCoCZtZGV2X3R5cGVfYXR0cl9k ZXZpY2VfYXBpLmF0dHIsCj4gwqDCoMKgwqDCoMKgwqDCoCZtZGV2X3R5cGVfYXR0cl9hdmFpbGFi bGVfaW5zdGFuY2VzLmF0dHIsCj4gwqDCoMKgwqDCoMKgwqDCoE5VTEwsCj4gwqB9Owo+IMKgCj4g LXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIHZmaW9fYXBfbWRldl9od3ZpcnRfdHlwZV9n cm91cCA9IHsKPiAtwqDCoMKgwqDCoMKgwqAubmFtZSA9IFZGSU9fQVBfTURFVl9UWVBFX0hXVklS VCwKPiAtwqDCoMKgwqDCoMKgwqAuYXR0cnMgPSB2ZmlvX2FwX21kZXZfdHlwZV9hdHRycywKPiAt fTsKPiAtCj4gLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICp2ZmlvX2FwX21kZXZfdHlw ZV9ncm91cHNbXSA9IHsKPiAtwqDCoMKgwqDCoMKgwqAmdmZpb19hcF9tZGV2X2h3dmlydF90eXBl X2dyb3VwLAo+IC3CoMKgwqDCoMKgwqDCoE5VTEwsCj4gLX07Cj4gLQo+IMKgI2RlZmluZSBNREVW X1NIQVJJTkdfRVJSICJVc2Vyc3BhY2UgbWF5IG5vdCByZS1hc3NpZ24gcXVldWUKPiAlMDJseC4l MDRseCAiIFwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgImFscmVhZHkgYXNzaWduZWQgdG8gJXMiCj4gwqAKPiBAQCAtMTgxNyw3ICsxODA3LDcgQEAg c3RhdGljIHN0cnVjdCBtZGV2X2RyaXZlciB2ZmlvX2FwX21hdHJpeF9kcml2ZXIKPiA9IHsKPiDC oMKgwqDCoMKgwqDCoMKgfSwKPiDCoMKgwqDCoMKgwqDCoMKgLnByb2JlID0gdmZpb19hcF9tZGV2 X3Byb2JlLAo+IMKgwqDCoMKgwqDCoMKgwqAucmVtb3ZlID0gdmZpb19hcF9tZGV2X3JlbW92ZSwK PiAtwqDCoMKgwqDCoMKgwqAuc3VwcG9ydGVkX3R5cGVfZ3JvdXBzID0gdmZpb19hcF9tZGV2X3R5 cGVfZ3JvdXBzLAo+ICvCoMKgwqDCoMKgwqDCoC50eXBlc19hdHRycyA9IHZmaW9fYXBfbWRldl90 eXBlX2F0dHJzLAo+IMKgfTsKPiDCoAo+IMKgaW50IHZmaW9fYXBfbWRldl9yZWdpc3Rlcih2b2lk KQo+IEBAIC0xODMwLDggKzE4MjAsMTEgQEAgaW50IHZmaW9fYXBfbWRldl9yZWdpc3Rlcih2b2lk KQo+IMKgwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgcmV0dXJuIHJldDsKPiDCoAo+ICvCoMKgwqDCoMKgwqDCoG1hdHJpeF9kZXYtPm1kZXZf dHlwZS5zeXNmc19uYW1lID0gVkZJT19BUF9NREVWX1RZUEVfSFdWSVJUOwo+ICvCoMKgwqDCoMKg wqDCoG1hdHJpeF9kZXYtPm1kZXZfdHlwZXNbMF0gPSAmbWF0cml4X2Rldi0+bWRldl90eXBlOwo+ IMKgwqDCoMKgwqDCoMKgwqByZXQgPSBtZGV2X3JlZ2lzdGVyX3BhcmVudCgmbWF0cml4X2Rldi0+ cGFyZW50LCAmbWF0cml4X2Rldi0KPiA+ZGV2aWNlLAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJnZmaW9fYXBfbWF0 cml4X2RyaXZlcik7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmdmZpb19hcF9tYXRyaXhfZHJpdmVyLAo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgbWF0cml4X2Rldi0+bWRldl90eXBlcywgMSk7Cj4gwqDCoMKgwqDCoMKgwqDCoGlmIChy ZXQpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnb3RvIGVycl9kcml2ZXI7Cj4g wqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvY3J5 cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oCj4gYi9kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJp dmF0ZS5oCj4gaW5kZXggMzUxNjU3MzBmNTE3NC4uNDQxZGM4ZGRhMzgwYiAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL3MzOTAvY3J5cHRvL3ZmaW9fYXBfcHJpdmF0ZS5oCj4gKysrIGIvZHJpdmVycy9z MzkwL2NyeXB0by92ZmlvX2FwX3ByaXZhdGUuaAo+IEBAIC01Myw2ICs1Myw4IEBAIHN0cnVjdCBh cF9tYXRyaXhfZGV2IHsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGFwX2RyaXZlcsKgICp2Zmlv X2FwX2RydjsKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IG11dGV4IGd1ZXN0c19sb2NrOyAvKiBz ZXJpYWxpemVzIGFjY2VzcyB0byBlYWNoIEtWTQo+IGd1ZXN0ICovCj4gwqDCoMKgwqDCoMKgwqDC oHN0cnVjdCBtZGV2X3BhcmVudCBwYXJlbnQ7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IG1kZXZf dHlwZSBtZGV2X3R5cGU7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IG1kZXZfdHlwZSAqbWRldl90 eXBlc1tdOwo+IMKgfTsKPiDCoAo+IMKgZXh0ZXJuIHN0cnVjdCBhcF9tYXRyaXhfZGV2ICptYXRy aXhfZGV2Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vbWRldi9tZGV2X2NvcmUuYwo+IGIv ZHJpdmVycy92ZmlvL21kZXYvbWRldl9jb3JlLmMKPiBpbmRleCBmYTA1YWMzMzk2OTUwLi4yZDk1 YTQ5N2ZkM2IyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdmZpby9tZGV2L21kZXZfY29yZS5jCj4g KysrIGIvZHJpdmVycy92ZmlvL21kZXYvbWRldl9jb3JlLmMKPiBAQCAtMjksMjYgKzI5LDYgQEAg c3RydWN0IGRldmljZSAqbWRldl9wYXJlbnRfZGV2KHN0cnVjdCBtZGV2X2RldmljZQo+ICptZGV2 KQo+IMKgfQo+IMKgRVhQT1JUX1NZTUJPTChtZGV2X3BhcmVudF9kZXYpOwo+IMKgCj4gLS8qCj4g LSAqIFJldHVybiB0aGUgaW5kZXggaW4gc3VwcG9ydGVkX3R5cGVfZ3JvdXBzIHRoYXQgdGhpcyBt ZGV2X2RldmljZQo+IHdhcyBjcmVhdGVkCj4gLSAqIGZyb20uCj4gLSAqLwo+IC11bnNpZ25lZCBp bnQgbWRldl9nZXRfdHlwZV9ncm91cF9pZChzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXYpCj4gLXsK PiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gbWRldi0+dHlwZS0+dHlwZV9ncm91cF9pZDsKPiAtfQo+ IC1FWFBPUlRfU1lNQk9MKG1kZXZfZ2V0X3R5cGVfZ3JvdXBfaWQpOwo+IC0KPiAtLyoKPiAtICog VXNlZCBpbiBtZGV2X3R5cGVfYXR0cmlidXRlIHN5c2ZzIGZ1bmN0aW9ucyB0byByZXR1cm4gdGhl IGluZGV4Cj4gaW4gdGhlCj4gLSAqIHN1cHBvcnRlZF90eXBlX2dyb3VwcyB0aGF0IHRoZSBzeXNm cyBpcyBjYWxsZWQgZnJvbS4KPiAtICovCj4gLXVuc2lnbmVkIGludCBtdHlwZV9nZXRfdHlwZV9n cm91cF9pZChzdHJ1Y3QgbWRldl90eXBlICptdHlwZSkKPiAtewo+IC3CoMKgwqDCoMKgwqDCoHJl dHVybiBtdHlwZS0+dHlwZV9ncm91cF9pZDsKPiAtfQo+IC1FWFBPUlRfU1lNQk9MKG10eXBlX2dl dF90eXBlX2dyb3VwX2lkKTsKPiAtCj4gwqAvKgo+IMKgICogVXNlZCBpbiBtZGV2X3R5cGVfYXR0 cmlidXRlIHN5c2ZzIGZ1bmN0aW9ucyB0byByZXR1cm4gdGhlIHBhcmVudAo+IHN0cnVjdAo+IMKg ICogZGV2aWNlCj4gQEAgLTg1LDYgKzY1LDggQEAgc3RhdGljIGludCBtZGV2X2RldmljZV9yZW1v dmVfY2Ioc3RydWN0IGRldmljZQo+ICpkZXYsIHZvaWQgKmRhdGEpCj4gwqAgKiBAcGFyZW50OiBw YXJlbnQgc3RydWN0dXJlIHJlZ2lzdGVyZWQKPiDCoCAqIEBkZXY6IGRldmljZSBzdHJ1Y3R1cmUg cmVwcmVzZW50aW5nIHBhcmVudCBkZXZpY2UuCj4gwqAgKiBAbWRldl9kcml2ZXI6IERldmljZSBk cml2ZXIgdG8gYmluZCB0byB0aGUgbmV3bHkgY3JlYXRlZCBtZGV2Cj4gKyAqIEB0eXBlczogQXJy YXkgb2Ygc3VwcG9ydGVkIG1kZXYgdHlwZXMKPiArICogQG5yX3R5cGVzOiBOdW1iZXIgb2YgZW50 cmllcyBpbiBAdHlwZXMKPiDCoCAqCj4gwqAgKiBSZWdpc3RlcnMgdGhlIEBwYXJlbnQgc3R1Y3R1 cmUgYXMgYSBwYXJlbnQgZm9yIG1kZXYgdHlwZXMgYW5kCj4gdGh1cyBtZGV2Cj4gwqAgKiBkZXZp Y2VzLsKgIFRoZSBjYWxsZXIgbmVlZHMgdG8gaG9sZCBhIHJlZmVyZW5jZSBvbiBAZGV2IHRoYXQg bXVzdAo+IG5vdCBiZQo+IEBAIC05MywyMCArNzUsMTkgQEAgc3RhdGljIGludCBtZGV2X2Rldmlj ZV9yZW1vdmVfY2Ioc3RydWN0IGRldmljZQo+ICpkZXYsIHZvaWQgKmRhdGEpCj4gwqAgKiBSZXR1 cm5zIGEgbmVnYXRpdmUgdmFsdWUgb24gZXJyb3IsIG90aGVyd2lzZSAwLgo+IMKgICovCj4gwqBp bnQgbWRldl9yZWdpc3Rlcl9wYXJlbnQoc3RydWN0IG1kZXZfcGFyZW50ICpwYXJlbnQsIHN0cnVj dCBkZXZpY2UKPiAqZGV2LAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg bWRldl9kcml2ZXIgKm1kZXZfZHJpdmVyKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBzdHJ1Y3QgbWRldl9kcml2ZXIgKm1kZXZfZHJpdmVyLCBzdHJ1Y3QgbWRldl90eXBlCj4gKip0 eXBlcywKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdW5zaWduZWQgaW50IG5yX3R5 cGVzKQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBjaGFyICplbnZfc3RyaW5nID0gIk1ERVZfU1RB VEU9cmVnaXN0ZXJlZCI7Cj4gwqDCoMKgwqDCoMKgwqDCoGNoYXIgKmVudnBbXSA9IHsgZW52X3N0 cmluZywgTlVMTCB9Owo+IMKgwqDCoMKgwqDCoMKgwqBpbnQgcmV0Owo+IMKgCj4gLcKgwqDCoMKg wqDCoMKgLyogY2hlY2sgZm9yIG1hbmRhdG9yeSBvcHMgKi8KPiAtwqDCoMKgwqDCoMKgwqBpZiAo IW1kZXZfZHJpdmVyLT5zdXBwb3J0ZWRfdHlwZV9ncm91cHMpCj4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHJldHVybiAtRUlOVkFMOwo+IC0KPiDCoMKgwqDCoMKgwqDCoMKgbWVtc2V0 KHBhcmVudCwgMCwgc2l6ZW9mKCpwYXJlbnQpKTsKPiDCoMKgwqDCoMKgwqDCoMKgaW5pdF9yd3Nl bSgmcGFyZW50LT51bnJlZ19zZW0pOwo+IMKgwqDCoMKgwqDCoMKgwqBwYXJlbnQtPmRldiA9IGRl djsKPiDCoMKgwqDCoMKgwqDCoMKgcGFyZW50LT5tZGV2X2RyaXZlciA9IG1kZXZfZHJpdmVyOwo+ ICvCoMKgwqDCoMKgwqDCoHBhcmVudC0+dHlwZXMgPSB0eXBlczsKPiArwqDCoMKgwqDCoMKgwqBw YXJlbnQtPm5yX3R5cGVzID0gbnJfdHlwZXM7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKCFt ZGV2X2J1c19jb21wYXRfY2xhc3MpIHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oG1kZXZfYnVzX2NvbXBhdF9jbGFzcyA9Cj4gY2xhc3NfY29tcGF0X3JlZ2lzdGVyKCJtZGV2X2J1 cyIpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vbWRldi9tZGV2X2RyaXZlci5jCj4gYi9k cml2ZXJzL3ZmaW8vbWRldi9tZGV2X2RyaXZlci5jCj4gaW5kZXggN2JkNGJiOTg1MGU4MS4uMWRh MWVjZjc2YTBkNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZmaW8vbWRldi9tZGV2X2RyaXZlci5j Cj4gKysrIGIvZHJpdmVycy92ZmlvL21kZXYvbWRldl9kcml2ZXIuYwo+IEBAIC01NiwxMCArNTYs OSBAQCBFWFBPUlRfU1lNQk9MX0dQTChtZGV2X2J1c190eXBlKTsKPiDCoCAqKi8KPiDCoGludCBt ZGV2X3JlZ2lzdGVyX2RyaXZlcihzdHJ1Y3QgbWRldl9kcml2ZXIgKmRydikKPiDCoHsKPiAtwqDC oMKgwqDCoMKgwqAvKiBpbml0aWFsaXplIGNvbW1vbiBkcml2ZXIgZmllbGRzICovCj4gK8KgwqDC oMKgwqDCoMKgaWYgKCFkcnYtPnR5cGVzX2F0dHJzKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqByZXR1cm4gLUVJTlZBTDsKPiDCoMKgwqDCoMKgwqDCoMKgZHJ2LT5kcml2ZXIuYnVz ID0gJm1kZXZfYnVzX3R5cGU7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoC8qIHJlZ2lzdGVyIHdpdGgg Y29yZSAqLwo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZHJpdmVyX3JlZ2lzdGVyKCZkcnYtPmRy aXZlcik7Cj4gwqB9Cj4gwqBFWFBPUlRfU1lNQk9MKG1kZXZfcmVnaXN0ZXJfZHJpdmVyKTsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL21kZXYvbWRldl9wcml2YXRlLmgKPiBiL2RyaXZlcnMv dmZpby9tZGV2L21kZXZfcHJpdmF0ZS5oCj4gaW5kZXggMjk3ZjkxMWZkYzg5MC4uYmExYjJkYmRk YzBiYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZmaW8vbWRldi9tZGV2X3ByaXZhdGUuaAo+ICsr KyBiL2RyaXZlcnMvdmZpby9tZGV2L21kZXZfcHJpdmF0ZS5oCj4gQEAgLTEzLDE0ICsxMyw2IEBA Cj4gwqBpbnTCoCBtZGV2X2J1c19yZWdpc3Rlcih2b2lkKTsKPiDCoHZvaWQgbWRldl9idXNfdW5y ZWdpc3Rlcih2b2lkKTsKPiDCoAo+IC1zdHJ1Y3QgbWRldl90eXBlIHsKPiAtwqDCoMKgwqDCoMKg wqBzdHJ1Y3Qga29iamVjdCBrb2JqOwo+IC3CoMKgwqDCoMKgwqDCoHN0cnVjdCBrb2JqZWN0ICpk ZXZpY2VzX2tvYmo7Cj4gLcKgwqDCoMKgwqDCoMKgc3RydWN0IG1kZXZfcGFyZW50ICpwYXJlbnQ7 Cj4gLcKgwqDCoMKgwqDCoMKgc3RydWN0IGxpc3RfaGVhZCBuZXh0Owo+IC3CoMKgwqDCoMKgwqDC oHVuc2lnbmVkIGludCB0eXBlX2dyb3VwX2lkOwo+IC19Owo+IC0KPiDCoGV4dGVybiBjb25zdCBz dHJ1Y3QgYXR0cmlidXRlX2dyb3VwICptZGV2X2RldmljZV9ncm91cHNbXTsKPiDCoAo+IMKgI2Rl ZmluZSB0b19tZGV2X3R5cGVfYXR0cihfYXR0cinCoMKgwqDCoMKgwqDCoFwKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy92ZmlvL21kZXYvbWRldl9zeXNmcy5jCj4gYi9kcml2ZXJzL3ZmaW8vbWRldi9t ZGV2X3N5c2ZzLmMKPiBpbmRleCBiNzFmZmM1NTk0ODcwLi4zOGI0YzI0NjZlYzQzIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvdmZpby9tZGV2L21kZXZfc3lzZnMuYwo+ICsrKyBiL2RyaXZlcnMvdmZp by9tZGV2L21kZXZfc3lzZnMuYwo+IEBAIC04Miw3ICs4Miw2IEBAIHN0YXRpYyB2b2lkIG1kZXZf dHlwZV9yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKQo+IMKgwqDCoMKgwqDCoMKgwqBwcl9k ZWJ1ZygiUmVsZWFzaW5nIGdyb3VwICVzXG4iLCBrb2JqLT5uYW1lKTsKPiDCoMKgwqDCoMKgwqDC oMKgLyogUGFpcnMgd2l0aCB0aGUgZ2V0IGluIGFkZF9tZGV2X3N1cHBvcnRlZF90eXBlKCkgKi8K PiDCoMKgwqDCoMKgwqDCoMKgcHV0X2RldmljZSh0eXBlLT5wYXJlbnQtPmRldik7Cj4gLcKgwqDC oMKgwqDCoMKga2ZyZWUodHlwZSk7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBzdHJ1Y3Qga29ial90 eXBlIG1kZXZfdHlwZV9rdHlwZSA9IHsKPiBAQCAtOTAsMzUgKzg5LDIxIEBAIHN0YXRpYyBzdHJ1 Y3Qga29ial90eXBlIG1kZXZfdHlwZV9rdHlwZSA9IHsKPiDCoMKgwqDCoMKgwqDCoMKgLnJlbGVh c2UgPSBtZGV2X3R5cGVfcmVsZWFzZSwKPiDCoH07Cj4gwqAKPiAtc3RhdGljIHN0cnVjdCBtZGV2 X3R5cGUgKmFkZF9tZGV2X3N1cHBvcnRlZF90eXBlKHN0cnVjdCBtZGV2X3BhcmVudAo+ICpwYXJl bnQsCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgaW50 Cj4gdHlwZV9ncm91cF9pZCkKPiArc3RhdGljIGludCBtZGV2X3R5cGVfYWRkKHN0cnVjdCBtZGV2 X3BhcmVudCAqcGFyZW50LCBzdHJ1Y3QKPiBtZGV2X3R5cGUgKnR5cGUpCj4gwqB7Cj4gLcKgwqDC oMKgwqDCoMKgc3RydWN0IG1kZXZfdHlwZSAqdHlwZTsKPiAtwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg YXR0cmlidXRlX2dyb3VwICpncm91cCA9Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHBhcmVudC0+bWRldl9kcml2ZXItCj4gPnN1cHBvcnRlZF90eXBlX2dyb3Vwc1t0eXBlX2dyb3Vw X2lkXTsKPiDCoMKgwqDCoMKgwqDCoMKgaW50IHJldDsKPiDCoAo+IC3CoMKgwqDCoMKgwqDCoGlm ICghZ3JvdXAtPm5hbWUpIHsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcHJfZXJy KCIlczogVHlwZSBuYW1lIGVtcHR5IVxuIiwgX19mdW5jX18pOwo+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqByZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKPiAtwqDCoMKgwqDCoMKgwqB9 Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHR5cGUgPSBremFsbG9jKHNpemVvZigqdHlwZSksIEdGUF9L RVJORUwpOwo+IC3CoMKgwqDCoMKgwqDCoGlmICghdHlwZSkKPiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gLQo+IMKgwqDCoMKgwqDCoMKg wqB0eXBlLT5rb2JqLmtzZXQgPSBwYXJlbnQtPm1kZXZfdHlwZXNfa3NldDsKPiDCoMKgwqDCoMKg wqDCoMKgdHlwZS0+cGFyZW50ID0gcGFyZW50Owo+IMKgwqDCoMKgwqDCoMKgwqAvKiBQYWlycyB3 aXRoIHRoZSBwdXQgaW4gbWRldl90eXBlX3JlbGVhc2UoKSAqLwo+IMKgwqDCoMKgwqDCoMKgwqBn ZXRfZGV2aWNlKHBhcmVudC0+ZGV2KTsKPiAtwqDCoMKgwqDCoMKgwqB0eXBlLT50eXBlX2dyb3Vw X2lkID0gdHlwZV9ncm91cF9pZDsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqByZXQgPSBrb2JqZWN0 X2luaXRfYW5kX2FkZCgmdHlwZS0+a29iaiwgJm1kZXZfdHlwZV9rdHlwZSwKPiBOVUxMLAo+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICIlcy0lcyIsIGRldl9kcml2ZXJfc3RyaW5nKHBhcmVudC0KPiA+ZGV2KSwKPiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGdyb3VwLT5uYW1lKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHR5cGUtPnN5c2ZzX25hbWUpOwo+ IMKgwqDCoMKgwqDCoMKgwqBpZiAocmV0KSB7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBrb2JqZWN0X3B1dCgmdHlwZS0+a29iaik7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHJldHVybiBFUlJfUFRSKHJldCk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHJldHVybiByZXQ7Cj4gwqDCoMKgwqDCoMKgwqDCoH0KPiDCoAo+IMKgwqDCoMKgwqDCoMKg wqByZXQgPSBzeXNmc19jcmVhdGVfZmlsZSgmdHlwZS0+a29iaiwKPiAmbWRldl90eXBlX2F0dHJf Y3JlYXRlLmF0dHIpOwo+IEBAIC0xMzEsMTMgKzExNiwxMCBAQCBzdGF0aWMgc3RydWN0IG1kZXZf dHlwZQo+ICphZGRfbWRldl9zdXBwb3J0ZWRfdHlwZShzdHJ1Y3QgbWRldl9wYXJlbnQgKnBhcmVu dCwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gYXR0cl9kZXZpY2VzX2Zh aWxlZDsKPiDCoMKgwqDCoMKgwqDCoMKgfQo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgcmV0ID0gc3lz ZnNfY3JlYXRlX2ZpbGVzKCZ0eXBlLT5rb2JqLAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoY29uc3Qgc3RydWN0IGF0dHJp YnV0ZSAqKilncm91cC0KPiA+YXR0cnMpOwo+IC3CoMKgwqDCoMKgwqDCoGlmIChyZXQpIHsKPiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0ID0gLUVOT01FTTsKPiArwqDCoMKgwqDC oMKgwqByZXQgPSBzeXNmc19jcmVhdGVfZmlsZXMoJnR5cGUtPmtvYmosIHBhcmVudC0+bWRldl9k cml2ZXItCj4gPnR5cGVzX2F0dHJzKTsKPiArwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290byBhdHRyc19mYWlsZWQ7Cj4gLcKgwqDCoMKg wqDCoMKgfQo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiB0eXBlOwo+ICvCoMKgwqDCoMKgwqDCoHJl dHVybiAwOwo+IMKgCj4gwqBhdHRyc19mYWlsZWQ6Cj4gwqDCoMKgwqDCoMKgwqDCoGtvYmplY3Rf cHV0KHR5cGUtPmRldmljZXNfa29iaik7Cj4gQEAgLTE0Niw3OCArMTI4LDQ5IEBAIHN0YXRpYyBz dHJ1Y3QgbWRldl90eXBlCj4gKmFkZF9tZGV2X3N1cHBvcnRlZF90eXBlKHN0cnVjdCBtZGV2X3Bh cmVudCAqcGFyZW50LAo+IMKgYXR0cl9jcmVhdGVfZmFpbGVkOgo+IMKgwqDCoMKgwqDCoMKgwqBr b2JqZWN0X2RlbCgmdHlwZS0+a29iaik7Cj4gwqDCoMKgwqDCoMKgwqDCoGtvYmplY3RfcHV0KCZ0 eXBlLT5rb2JqKTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gRVJSX1BUUihyZXQpOwo+ICvCoMKg wqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIHZvaWQgcmVtb3ZlX21k ZXZfc3VwcG9ydGVkX3R5cGUoc3RydWN0IG1kZXZfdHlwZSAqdHlwZSkKPiArc3RhdGljIHZvaWQg bWRldl90eXBlX3JlbW92ZShzdHJ1Y3QgbWRldl90eXBlICp0eXBlKQo+IMKgewo+IC3CoMKgwqDC oMKgwqDCoHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKmdyb3VwID0KPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgdHlwZS0+cGFyZW50LT5tZGV2X2RyaXZlci0KPiA+c3VwcG9ydGVkX3R5 cGVfZ3JvdXBzW3R5cGUtPnR5cGVfZ3JvdXBfaWRdOwo+ICvCoMKgwqDCoMKgwqDCoHN5c2ZzX3Jl bW92ZV9maWxlcygmdHlwZS0+a29iaiwgdHlwZS0+cGFyZW50LT5tZGV2X2RyaXZlci0KPiA+dHlw ZXNfYXR0cnMpOwo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgc3lzZnNfcmVtb3ZlX2ZpbGVzKCZ0eXBl LT5rb2JqLAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAoY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqKilncm91cC0+YXR0cnMpOwo+IMKgwqDCoMKg wqDCoMKgwqBrb2JqZWN0X3B1dCh0eXBlLT5kZXZpY2VzX2tvYmopOwo+IMKgwqDCoMKgwqDCoMKg wqBzeXNmc19yZW1vdmVfZmlsZSgmdHlwZS0+a29iaiwgJm1kZXZfdHlwZV9hdHRyX2NyZWF0ZS5h dHRyKTsKPiDCoMKgwqDCoMKgwqDCoMKga29iamVjdF9kZWwoJnR5cGUtPmtvYmopOwo+IMKgwqDC oMKgwqDCoMKgwqBrb2JqZWN0X3B1dCgmdHlwZS0+a29iaik7Cj4gwqB9Cj4gwqAKPiAtc3RhdGlj IGludCBhZGRfbWRldl9zdXBwb3J0ZWRfdHlwZV9ncm91cHMoc3RydWN0IG1kZXZfcGFyZW50Cj4g KnBhcmVudCkKPiAtewo+IC3CoMKgwqDCoMKgwqDCoGludCBpOwo+IC0KPiAtwqDCoMKgwqDCoMKg wqBmb3IgKGkgPSAwOyBwYXJlbnQtPm1kZXZfZHJpdmVyLT5zdXBwb3J0ZWRfdHlwZV9ncm91cHNb aV07Cj4gaSsrKSB7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBtZGV2 X3R5cGUgKnR5cGU7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0eXBlID0g YWRkX21kZXZfc3VwcG9ydGVkX3R5cGUocGFyZW50LCBpKTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaWYgKElTX0VSUih0eXBlKSkgewo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IG1kZXZfdHlwZSAqbHR5cGUsICp0bXA7Cj4g LQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbGlzdF9m b3JfZWFjaF9lbnRyeV9zYWZlKGx0eXBlLCB0bXAsICZwYXJlbnQtCj4gPnR5cGVfbGlzdCwKPiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG5leHQpIHsKPiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBs aXN0X2RlbCgmbHR5cGUtPm5leHQpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJlbW92ZV9tZGV2X3N1cHBvcnRlZF90eXBl KGx0eXBlKTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oH0KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVy biBQVFJfRVJSKHR5cGUpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGxpc3RfYWRkKCZ0eXBlLT5uZXh0LCAmcGFyZW50 LT50eXBlX2xpc3QpOwo+IC3CoMKgwqDCoMKgwqDCoH0KPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4g MDsKPiAtfQo+IC0KPiDCoC8qIG1kZXYgc3lzZnMgZnVuY3Rpb25zICovCj4gwqB2b2lkIHBhcmVu dF9yZW1vdmVfc3lzZnNfZmlsZXMoc3RydWN0IG1kZXZfcGFyZW50ICpwYXJlbnQpCj4gwqB7Cj4g LcKgwqDCoMKgwqDCoMKgc3RydWN0IG1kZXZfdHlwZSAqdHlwZSwgKnRtcDsKPiAtCj4gLcKgwqDC oMKgwqDCoMKgbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHR5cGUsIHRtcCwgJnBhcmVudC0+dHlw ZV9saXN0LCBuZXh0KQo+IHsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbGlzdF9k ZWwoJnR5cGUtPm5leHQpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZW1vdmVf bWRldl9zdXBwb3J0ZWRfdHlwZSh0eXBlKTsKPiAtwqDCoMKgwqDCoMKgwqB9Cj4gK8KgwqDCoMKg wqDCoMKgaW50IGk7Cj4gwqAKPiArwqDCoMKgwqDCoMKgwqBmb3IgKGkgPSAwOyBpIDwgcGFyZW50 LT5ucl90eXBlczsgaSsrKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBtZGV2X3R5 cGVfcmVtb3ZlKHBhcmVudC0+dHlwZXNbaV0pOwo+IMKgwqDCoMKgwqDCoMKgwqBrc2V0X3VucmVn aXN0ZXIocGFyZW50LT5tZGV2X3R5cGVzX2tzZXQpOwo+IMKgfQo+IMKgCj4gwqBpbnQgcGFyZW50 X2NyZWF0ZV9zeXNmc19maWxlcyhzdHJ1Y3QgbWRldl9wYXJlbnQgKnBhcmVudCkKPiDCoHsKPiAt wqDCoMKgwqDCoMKgwqBpbnQgcmV0Owo+ICvCoMKgwqDCoMKgwqDCoGludCByZXQsIGk7Cj4gwqAK PiDCoMKgwqDCoMKgwqDCoMKgcGFyZW50LT5tZGV2X3R5cGVzX2tzZXQgPQo+IGtzZXRfY3JlYXRl X2FuZF9hZGQoIm1kZXZfc3VwcG9ydGVkX3R5cGVzIiwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBOVUxMLCAmcGFyZW50LT5kZXYtCj4gPmtvYmopOwo+IC0KPiDCoMKgwqDC oMKgwqDCoMKgaWYgKCFwYXJlbnQtPm1kZXZfdHlwZXNfa3NldCkKPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHJldHVybiAtRU5PTUVNOwo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgSU5J VF9MSVNUX0hFQUQoJnBhcmVudC0+dHlwZV9saXN0KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0 ID0gYWRkX21kZXZfc3VwcG9ydGVkX3R5cGVfZ3JvdXBzKHBhcmVudCk7Cj4gLcKgwqDCoMKgwqDC oMKgaWYgKHJldCkKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290byBjcmVhdGVf ZXJyOwo+ICvCoMKgwqDCoMKgwqDCoGZvciAoaSA9IDA7IGkgPCBwYXJlbnQtPm5yX3R5cGVzOyBp KyspIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0ID0gbWRldl90eXBlX2Fk ZChwYXJlbnQsIHBhcmVudC0+dHlwZXNbaV0pOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBpZiAocmV0KQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZ290byBvdXRfZXJyOwo+ICvCoMKgwqDCoMKgwqDCoH0KPiDCoMKgwqDCoMKgwqDCoMKg cmV0dXJuIDA7Cj4gwqAKPiAtY3JlYXRlX2VycjoKPiAtwqDCoMKgwqDCoMKgwqBrc2V0X3VucmVn aXN0ZXIocGFyZW50LT5tZGV2X3R5cGVzX2tzZXQpOwo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiBy ZXQ7Cj4gK291dF9lcnI6Cj4gK8KgwqDCoMKgwqDCoMKgd2hpbGUgKC0taSA+PSAwKQo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBtZGV2X3R5cGVfcmVtb3ZlKHBhcmVudC0+dHlwZXNb aV0pOwo+ICvCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgc3Np emVfdCByZW1vdmVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QKPiBkZXZpY2VfYXR0 cmlidXRlICphdHRyLAo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21kZXYuaCBiL2luY2x1 ZGUvbGludXgvbWRldi5oCj4gaW5kZXggMjYyNTEyYzJhOGZmYy4uMTliYzkzYzEwZThjNyAxMDA2 NDQKPiAtLS0gYS9pbmNsdWRlL2xpbnV4L21kZXYuaAo+ICsrKyBiL2luY2x1ZGUvbGludXgvbWRl di5oCj4gQEAgLTIzLDE0ICsyMywyNyBAQCBzdHJ1Y3QgbWRldl9kZXZpY2Ugewo+IMKgwqDCoMKg wqDCoMKgwqBib29sIGFjdGl2ZTsKPiDCoH07Cj4gwqAKPiArc3RydWN0IG1kZXZfdHlwZSB7Cj4g K8KgwqDCoMKgwqDCoMKgLyogc2V0IGJ5IHRoZSBkcml2ZXIgYmVmb3JlIGNhbGxpbmcgbWRldl9y ZWdpc3RlciBwYXJlbnQ6ICovCj4gK8KgwqDCoMKgwqDCoMKgY29uc3QgY2hhciAqc3lzZnNfbmFt ZTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgLyogc2V0IGJ5IHRoZSBjb3JlLCBjYW4gYmUgdXNlZCBk cml2ZXJzICovCj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IG1kZXZfcGFyZW50ICpwYXJlbnQ7Cj4g Kwo+ICvCoMKgwqDCoMKgwqDCoC8qIGludGVybmFsIG9ubHkgKi8KPiArwqDCoMKgwqDCoMKgwqBz dHJ1Y3Qga29iamVjdCBrb2JqOwo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBrb2JqZWN0ICpkZXZp Y2VzX2tvYmo7Cj4gK307Cj4gKwo+IMKgLyogZW1iZWRkZWQgaW50byB0aGUgc3RydWN0IGRldmlj ZSB0aGF0IHRoZSBtZGV2IGRldmljZXMgaGFuZyBvZmYgKi8KPiDCoHN0cnVjdCBtZGV2X3BhcmVu dCB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBkZXZpY2UgKmRldjsKPiDCoMKgwqDCoMKgwqDC oMKgc3RydWN0IG1kZXZfZHJpdmVyICptZGV2X2RyaXZlcjsKPiDCoMKgwqDCoMKgwqDCoMKgc3Ry dWN0IGtzZXQgKm1kZXZfdHlwZXNfa3NldDsKPiAtwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbGlzdF9o ZWFkIHR5cGVfbGlzdDsKPiDCoMKgwqDCoMKgwqDCoMKgLyogU3luY2hyb25pemUgZGV2aWNlIGNy ZWF0aW9uL3JlbW92YWwgd2l0aCBwYXJlbnQKPiB1bnJlZ2lzdHJhdGlvbiAqLwo+IMKgwqDCoMKg wqDCoMKgwqBzdHJ1Y3Qgcndfc2VtYXBob3JlIHVucmVnX3NlbTsKPiArwqDCoMKgwqDCoMKgwqBz dHJ1Y3QgbWRldl90eXBlICoqdHlwZXM7Cj4gK8KgwqDCoMKgwqDCoMKgdW5zaWduZWQgaW50IG5y X3R5cGVzOwo+IMKgfTsKPiDCoAo+IMKgc3RhdGljIGlubGluZSBzdHJ1Y3QgbWRldl9kZXZpY2Ug KnRvX21kZXZfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKPiBAQCAtMzgsOCArNTEsNiBAQCBz dGF0aWMgaW5saW5lIHN0cnVjdCBtZGV2X2RldmljZQo+ICp0b19tZGV2X2RldmljZShzdHJ1Y3Qg ZGV2aWNlICpkZXYpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBjb250YWluZXJfb2YoZGV2LCBz dHJ1Y3QgbWRldl9kZXZpY2UsIGRldik7Cj4gwqB9Cj4gwqAKPiAtdW5zaWduZWQgaW50IG1kZXZf Z2V0X3R5cGVfZ3JvdXBfaWQoc3RydWN0IG1kZXZfZGV2aWNlICptZGV2KTsKPiAtdW5zaWduZWQg aW50IG10eXBlX2dldF90eXBlX2dyb3VwX2lkKHN0cnVjdCBtZGV2X3R5cGUgKm10eXBlKTsKPiDC oHN0cnVjdCBkZXZpY2UgKm10eXBlX2dldF9wYXJlbnRfZGV2KHN0cnVjdCBtZGV2X3R5cGUgKm10 eXBlKTsKPiDCoAo+IMKgLyogaW50ZXJmYWNlIGZvciBleHBvcnRpbmcgbWRldiBzdXBwb3J0ZWQg dHlwZSBhdHRyaWJ1dGVzICovCj4gQEAgLTY2LDIyICs3NywyMSBAQCBzdHJ1Y3QgbWRldl90eXBl X2F0dHJpYnV0ZSBtZGV2X3R5cGVfYXR0cl8jI19uYW1lCj4gPcKgwqDCoMKgwqDCoMKgwqDCoFwK PiDCoCAqIHN0cnVjdCBtZGV2X2RyaXZlciAtIE1lZGlhdGVkIGRldmljZSBkcml2ZXIKPiDCoCAq IEBwcm9iZTogY2FsbGVkIHdoZW4gbmV3IGRldmljZSBjcmVhdGVkCj4gwqAgKiBAcmVtb3ZlOiBj YWxsZWQgd2hlbiBkZXZpY2UgcmVtb3ZlZAo+IC0gKiBAc3VwcG9ydGVkX3R5cGVfZ3JvdXBzOiBB dHRyaWJ1dGVzIHRvIGRlZmluZSBzdXBwb3J0ZWQgdHlwZXMuIEl0Cj4gaXMgbWFuZGF0b3J5Cj4g LSAqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdG8gcHJvdmlkZSBz dXBwb3J0ZWQgdHlwZXMuCj4gKyAqIEB0eXBlc19hdHRyczogYXR0cmlidXRlcyB0byB0aGUgdHlw ZSBrb2JqZWN0cy4KPiDCoCAqIEBkcml2ZXI6IGRldmljZSBkcml2ZXIgc3RydWN0dXJlCj4gLSAq Cj4gwqAgKiovCj4gwqBzdHJ1Y3QgbWRldl9kcml2ZXIgewo+IMKgwqDCoMKgwqDCoMKgwqBpbnQg KCpwcm9iZSkoc3RydWN0IG1kZXZfZGV2aWNlICpkZXYpOwo+IMKgwqDCoMKgwqDCoMKgwqB2b2lk ICgqcmVtb3ZlKShzdHJ1Y3QgbWRldl9kZXZpY2UgKmRldik7Cj4gLcKgwqDCoMKgwqDCoMKgc3Ry dWN0IGF0dHJpYnV0ZV9ncm91cCAqKnN1cHBvcnRlZF90eXBlX2dyb3VwczsKPiArwqDCoMKgwqDC oMKgwqBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlICogY29uc3QgKnR5cGVzX2F0dHJzOwo+IMKgwqDC oMKgwqDCoMKgwqBzdHJ1Y3QgZGV2aWNlX2RyaXZlciBkcml2ZXI7Cj4gwqB9Owo+IMKgCj4gwqBl eHRlcm4gc3RydWN0IGJ1c190eXBlIG1kZXZfYnVzX3R5cGU7Cj4gwqAKPiDCoGludCBtZGV2X3Jl Z2lzdGVyX3BhcmVudChzdHJ1Y3QgbWRldl9wYXJlbnQgKnBhcmVudCwgc3RydWN0IGRldmljZQo+ ICpkZXYsCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBtZGV2X2RyaXZl ciAqbWRldl9kcml2ZXIpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg bWRldl9kcml2ZXIgKm1kZXZfZHJpdmVyLCBzdHJ1Y3QgbWRldl90eXBlCj4gKip0eXBlcywKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdW5zaWduZWQgaW50IG5yX3R5cGVzKTsKPiDC oHZvaWQgbWRldl91bnJlZ2lzdGVyX3BhcmVudChzdHJ1Y3QgbWRldl9wYXJlbnQgKnBhcmVudCk7 Cj4gwqAKPiDCoGludCBtZGV2X3JlZ2lzdGVyX2RyaXZlcihzdHJ1Y3QgbWRldl9kcml2ZXIgKmRy dik7Cj4gZGlmZiAtLWdpdCBhL3NhbXBsZXMvdmZpby1tZGV2L21ib2Nocy5jIGIvc2FtcGxlcy92 ZmlvLW1kZXYvbWJvY2hzLmMKPiBpbmRleCAyYzQ3OTFhYmJjM2QzLi40ZDA4MzljYjUxOTQzIDEw MDY0NAo+IC0tLSBhL3NhbXBsZXMvdmZpby1tZGV2L21ib2Nocy5jCj4gKysrIGIvc2FtcGxlcy92 ZmlvLW1kZXYvbWJvY2hzLmMKPiBAQCAtOTksMjMgKzk5LDI3IEBAIE1PRFVMRV9QQVJNX0RFU0Mo bWVtLCAibWVnYWJ5dGVzIGF2YWlsYWJsZSB0byAiCj4gTUJPQ0hTX05BTUUgIiBkZXZpY2VzIik7 Cj4gwqAjZGVmaW5lIE1CT0NIU19UWVBFXzIgIm1lZGl1bSIKPiDCoCNkZWZpbmUgTUJPQ0hTX1RZ UEVfMyAibGFyZ2UiCj4gwqAKPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBtYm9jaHNfdHlwZSB7Cj4g K3N0YXRpYyBzdHJ1Y3QgbWJvY2hzX3R5cGUgewo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBtZGV2 X3R5cGUgdHlwZTsKPiDCoMKgwqDCoMKgwqDCoMKgY29uc3QgY2hhciAqbmFtZTsKPiDCoMKgwqDC oMKgwqDCoMKgdTMyIG1ieXRlczsKPiDCoMKgwqDCoMKgwqDCoMKgdTMyIG1heF94Owo+IMKgwqDC oMKgwqDCoMKgwqB1MzIgbWF4X3k7Cj4gwqB9IG1ib2Noc190eXBlc1tdID0gewo+IMKgwqDCoMKg wqDCoMKgwqB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC50eXBlLnN5c2ZzX25h bWXCoMKgwqDCoMKgwqDCoMKgPSBNQk9DSFNfVFlQRV8xLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgLm5hbWXCoMKgwqA9IE1CT0NIU19DTEFTU19OQU1FICItIiBNQk9DSFNfVFlQ RV8xLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLm1ieXRlcyA9IDQsCj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAubWF4X3jCoCA9IDgwMCwKPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoC5tYXhfecKgID0gNjAwLAo+IMKgwqDCoMKgwqDCoMKgwqB9 LCB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC50eXBlLnN5c2ZzX25hbWXCoMKg wqDCoMKgwqDCoMKgPSBNQk9DSFNfVFlQRV8yLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgLm5hbWXCoMKgwqA9IE1CT0NIU19DTEFTU19OQU1FICItIiBNQk9DSFNfVFlQRV8yLAo+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLm1ieXRlcyA9IDE2LAo+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLm1heF94wqAgPSAxOTIwLAo+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgLm1heF95wqAgPSAxNDQwLAo+IMKgwqDCoMKgwqDCoMKgwqB9LCB7 Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC50eXBlLnN5c2ZzX25hbWXCoMKgwqDC oMKgwqDCoMKgPSBNQk9DSFNfVFlQRV8zLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgLm5hbWXCoMKgwqA9IE1CT0NIU19DTEFTU19OQU1FICItIiBNQk9DSFNfVFlQRV8zLAo+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLm1ieXRlcyA9IDY0LAo+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgLm1heF94wqAgPSAwLAo+IEBAIC0xMjMsNiArMTI3LDExIEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWJvY2hzX3R5cGUgewo+IMKgwqDCoMKgwqDCoMKgwqB9LAo+ IMKgfTsKPiDCoAo+ICtzdGF0aWMgc3RydWN0IG1kZXZfdHlwZSAqbWJvY2hzX21kZXZfdHlwZXNb XSA9IHsKPiArwqDCoMKgwqDCoMKgwqAmbWJvY2hzX3R5cGVzWzBdLnR5cGUsCj4gK8KgwqDCoMKg wqDCoMKgJm1ib2Noc190eXBlc1sxXS50eXBlLAo+ICvCoMKgwqDCoMKgwqDCoCZtYm9jaHNfdHlw ZXNbMl0udHlwZSwKPiArfTsKPiDCoAo+IMKgc3RhdGljIGRldl90wqDCoMKgwqDCoMKgwqDCoMKg wqDCoG1ib2Noc19kZXZ0Owo+IMKgc3RhdGljIHN0cnVjdCBjbGFzc8KgwqDCoMKgKm1ib2Noc19j bGFzczsKPiBAQCAtNTEwLDggKzUxOSw4IEBAIHN0YXRpYyBpbnQgbWJvY2hzX2luaXRfZGV2KHN0 cnVjdCB2ZmlvX2RldmljZQo+ICp2ZGV2KQo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbWRldl9z dGF0ZSAqbWRldl9zdGF0ZSA9Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjb250 YWluZXJfb2YodmRldiwgc3RydWN0IG1kZXZfc3RhdGUsIHZkZXYpOwo+IMKgwqDCoMKgwqDCoMKg wqBzdHJ1Y3QgbWRldl9kZXZpY2UgKm1kZXYgPSB0b19tZGV2X2RldmljZSh2ZGV2LT5kZXYpOwo+ IC3CoMKgwqDCoMKgwqDCoGNvbnN0IHN0cnVjdCBtYm9jaHNfdHlwZSAqdHlwZSA9Cj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCZtYm9jaHNfdHlwZXNbbWRldl9nZXRfdHlwZV9ncm91 cF9pZChtZGV2KV07Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IG1ib2Noc190eXBlICp0eXBlID0K PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29udGFpbmVyX29mKG1kZXYtPnR5cGUs IHN0cnVjdCBtYm9jaHNfdHlwZSwgdHlwZSk7Cj4gwqDCoMKgwqDCoMKgwqDCoGludCBhdmFpbF9t Ynl0ZXMgPSBhdG9taWNfcmVhZCgmbWJvY2hzX2F2YWlsX21ieXRlcyk7Cj4gwqDCoMKgwqDCoMKg wqDCoGludCByZXQgPSAtRU5PTUVNOwo+IMKgCj4gQEAgLTEzNDUsOCArMTM1NCw4IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwCj4gKm1kZXZfZGV2X2dyb3Vwc1tdID0gewo+ IMKgc3RhdGljIHNzaXplX3QgbmFtZV9zaG93KHN0cnVjdCBtZGV2X3R5cGUgKm10eXBlLAo+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgbWRl dl90eXBlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQo+IMKgewo+IC3CoMKgwqDCoMKgwqDC oGNvbnN0IHN0cnVjdCBtYm9jaHNfdHlwZSAqdHlwZSA9Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCZtYm9jaHNfdHlwZXNbbXR5cGVfZ2V0X3R5cGVfZ3JvdXBfaWQobXR5cGUpXTsK PiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbWJvY2hzX3R5cGUgKnR5cGUgPQo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBjb250YWluZXJfb2YobXR5cGUsIHN0cnVjdCBtYm9jaHNfdHlw ZSwgdHlwZSk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHNwcmludGYoYnVmLCAiJXNc biIsIHR5cGUtPm5hbWUpOwo+IMKgfQo+IEBAIC0xMzU1LDggKzEzNjQsOCBAQCBzdGF0aWMgTURF Vl9UWVBFX0FUVFJfUk8obmFtZSk7Cj4gwqBzdGF0aWMgc3NpemVfdCBkZXNjcmlwdGlvbl9zaG93 KHN0cnVjdCBtZGV2X3R5cGUgKm10eXBlLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbWRldl90eXBlX2F0dHJp YnV0ZSAqYXR0ciwKPiBjaGFyICpidWYpCj4gwqB7Cj4gLcKgwqDCoMKgwqDCoMKgY29uc3Qgc3Ry dWN0IG1ib2Noc190eXBlICp0eXBlID0KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg Jm1ib2Noc190eXBlc1ttdHlwZV9nZXRfdHlwZV9ncm91cF9pZChtdHlwZSldOwo+ICvCoMKgwqDC oMKgwqDCoHN0cnVjdCBtYm9jaHNfdHlwZSAqdHlwZSA9Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGNvbnRhaW5lcl9vZihtdHlwZSwgc3RydWN0IG1ib2Noc190eXBlLCB0eXBlKTsK PiDCoAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gc3ByaW50ZihidWYsICJ2aXJ0dWFsIGRpc3Bs YXksICVkIE1CIHZpZGVvIG1lbW9yeVxuIiwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB0eXBlID8gdHlwZS0+bWJ5dGVzwqAgOiAwKTsKPiBAQCAtMTM2Nyw4 ICsxMzc2LDggQEAgc3RhdGljIHNzaXplX3QgYXZhaWxhYmxlX2luc3RhbmNlc19zaG93KHN0cnVj dAo+IG1kZXZfdHlwZSAqbXR5cGUsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbWRl dl90eXBlX2F0dHJpYnV0ZQo+ICphdHRyLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhciAq YnVmKQo+IMKgewo+IC3CoMKgwqDCoMKgwqDCoGNvbnN0IHN0cnVjdCBtYm9jaHNfdHlwZSAqdHlw ZSA9Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCZtYm9jaHNfdHlwZXNbbXR5cGVf Z2V0X3R5cGVfZ3JvdXBfaWQobXR5cGUpXTsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbWJvY2hz X3R5cGUgKnR5cGUgPQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjb250YWluZXJf b2YobXR5cGUsIHN0cnVjdCBtYm9jaHNfdHlwZSwgdHlwZSk7Cj4gwqDCoMKgwqDCoMKgwqDCoGlu dCBjb3VudCA9IGF0b21pY19yZWFkKCZtYm9jaHNfYXZhaWxfbWJ5dGVzKSAvIHR5cGUtPm1ieXRl czsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgY291 bnQpOwo+IEBAIC0xMzgyLDcgKzEzOTEsNyBAQCBzdGF0aWMgc3NpemVfdCBkZXZpY2VfYXBpX3No b3coc3RydWN0IG1kZXZfdHlwZQo+ICptdHlwZSwKPiDCoH0KPiDCoHN0YXRpYyBNREVWX1RZUEVf QVRUUl9STyhkZXZpY2VfYXBpKTsKPiDCoAo+IC1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqbWRl dl90eXBlc19hdHRyc1tdID0gewo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqbWRl dl90eXBlc19hdHRyc1tdID0gewo+IMKgwqDCoMKgwqDCoMKgwqAmbWRldl90eXBlX2F0dHJfbmFt ZS5hdHRyLAo+IMKgwqDCoMKgwqDCoMKgwqAmbWRldl90eXBlX2F0dHJfZGVzY3JpcHRpb24uYXR0 ciwKPiDCoMKgwqDCoMKgwqDCoMKgJm1kZXZfdHlwZV9hdHRyX2RldmljZV9hcGkuYXR0ciwKPiBA QCAtMTM5MCwyOCArMTM5OSw2IEBAIHN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICptZGV2X3R5cGVz X2F0dHJzW10gPQo+IHsKPiDCoMKgwqDCoMKgwqDCoMKgTlVMTCwKPiDCoH07Cj4gwqAKPiAtc3Rh dGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgbWRldl90eXBlX2dyb3VwMSA9IHsKPiAtwqDCoMKg wqDCoMKgwqAubmFtZcKgID0gTUJPQ0hTX1RZUEVfMSwKPiAtwqDCoMKgwqDCoMKgwqAuYXR0cnMg PSBtZGV2X3R5cGVzX2F0dHJzLAo+IC19Owo+IC0KPiAtc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVf Z3JvdXAgbWRldl90eXBlX2dyb3VwMiA9IHsKPiAtwqDCoMKgwqDCoMKgwqAubmFtZcKgID0gTUJP Q0hTX1RZUEVfMiwKPiAtwqDCoMKgwqDCoMKgwqAuYXR0cnMgPSBtZGV2X3R5cGVzX2F0dHJzLAo+ IC19Owo+IC0KPiAtc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgbWRldl90eXBlX2dyb3Vw MyA9IHsKPiAtwqDCoMKgwqDCoMKgwqAubmFtZcKgID0gTUJPQ0hTX1RZUEVfMywKPiAtwqDCoMKg wqDCoMKgwqAuYXR0cnMgPSBtZGV2X3R5cGVzX2F0dHJzLAo+IC19Owo+IC0KPiAtc3RhdGljIHN0 cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKm1kZXZfdHlwZV9ncm91cHNbXSA9IHsKPiAtwqDCoMKgwqDC oMKgwqAmbWRldl90eXBlX2dyb3VwMSwKPiAtwqDCoMKgwqDCoMKgwqAmbWRldl90eXBlX2dyb3Vw MiwKPiAtwqDCoMKgwqDCoMKgwqAmbWRldl90eXBlX2dyb3VwMywKPiAtwqDCoMKgwqDCoMKgwqBO VUxMLAo+IC19Owo+IC0KPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIG1i b2Noc19kZXZfb3BzID0gewo+IMKgwqDCoMKgwqDCoMKgwqAuY2xvc2VfZGV2aWNlID0gbWJvY2hz X2Nsb3NlX2RldmljZSwKPiDCoMKgwqDCoMKgwqDCoMKgLmluaXQgPSBtYm9jaHNfaW5pdF9kZXYs Cj4gQEAgLTE0MzEsNyArMTQxOCw3IEBAIHN0YXRpYyBzdHJ1Y3QgbWRldl9kcml2ZXIgbWJvY2hz X2RyaXZlciA9IHsKPiDCoMKgwqDCoMKgwqDCoMKgfSwKPiDCoMKgwqDCoMKgwqDCoMKgLnByb2Jl ID0gbWJvY2hzX3Byb2JlLAo+IMKgwqDCoMKgwqDCoMKgwqAucmVtb3ZlwqA9IG1ib2Noc19yZW1v dmUsCj4gLcKgwqDCoMKgwqDCoMKgLnN1cHBvcnRlZF90eXBlX2dyb3VwcyA9IG1kZXZfdHlwZV9n cm91cHMsCj4gK8KgwqDCoMKgwqDCoMKgLnR5cGVzX2F0dHJzID0gbWRldl90eXBlc19hdHRycywK PiDCoH07Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHZkX2Zv cHMgPSB7Cj4gQEAgLTE0NzYsNyArMTQ2Myw5IEBAIHN0YXRpYyBpbnQgX19pbml0IG1ib2Noc19k ZXZfaW5pdCh2b2lkKQo+IMKgwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZ290byBlcnJfY2xhc3M7Cj4gwqAKPiAtwqDCoMKgwqDCoMKgwqBy ZXQgPSBtZGV2X3JlZ2lzdGVyX3BhcmVudCgmbWJvY2hzX3BhcmVudCwgJm1ib2Noc19kZXYsCj4g Jm1ib2Noc19kcml2ZXIpOwo+ICvCoMKgwqDCoMKgwqDCoHJldCA9IG1kZXZfcmVnaXN0ZXJfcGFy ZW50KCZtYm9jaHNfcGFyZW50LCAmbWJvY2hzX2RldiwKPiAmbWJvY2hzX2RyaXZlciwKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIG1ib2Noc19tZGV2X3R5cGVzLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQVJSQVlfU0laRShtYm9jaHNf bWRldl90eXBlcykpOwo+IMKgwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZ290byBlcnJfZGV2aWNlOwo+IMKgCj4gZGlmZiAtLWdpdCBhL3Nh bXBsZXMvdmZpby1tZGV2L21kcHkuYyBiL3NhbXBsZXMvdmZpby1tZGV2L21kcHkuYwo+IGluZGV4 IDAxZjM0NTQzMGI5NzUuLjRhMzQxZjQ4NDllNzMgMTAwNjQ0Cj4gLS0tIGEvc2FtcGxlcy92Zmlv LW1kZXYvbWRweS5jCj4gKysrIGIvc2FtcGxlcy92ZmlvLW1kZXYvbWRweS5jCj4gQEAgLTUxLDcg KzUxLDggQEAgTU9EVUxFX1BBUk1fREVTQyhjb3VudCwgIm51bWJlciBvZiAiIE1EUFlfTkFNRSAi Cj4gZGV2aWNlcyIpOwo+IMKgI2RlZmluZSBNRFBZX1RZUEVfMiAieGdhIgo+IMKgI2RlZmluZSBN RFBZX1RZUEVfMyAiaGQiCj4gwqAKPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBtZHB5X3R5cGUgewo+ ICtzdGF0aWMgc3RydWN0IG1kcHlfdHlwZSB7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IG1kZXZf dHlwZSB0eXBlOwo+IMKgwqDCoMKgwqDCoMKgwqBjb25zdCBjaGFyICpuYW1lOwo+IMKgwqDCoMKg wqDCoMKgwqB1MzIgZm9ybWF0Owo+IMKgwqDCoMKgwqDCoMKgwqB1MzIgYnl0ZXBwOwo+IEBAIC01 OSwxOCArNjAsMjEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtZHB5X3R5cGUgewo+IMKgwqDCoMKg wqDCoMKgwqB1MzIgaGVpZ2h0Owo+IMKgfSBtZHB5X3R5cGVzW10gPSB7Cj4gwqDCoMKgwqDCoMKg wqDCoHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLnR5cGUuc3lzZnNfbmFtZcKg wqDCoMKgwqDCoMKgwqA9IE1EUFlfVFlQRV8xLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgLm5hbWXCoMKgwqA9IE1EUFlfQ0xBU1NfTkFNRSAiLSIgTURQWV9UWVBFXzEsCj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAuZm9ybWF0ID0gRFJNX0ZPUk1BVF9YUkdCODg4 OCwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC5ieXRlcHAgPSA0LAo+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLndpZHRowqDCoD0gNjQwLAo+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgLmhlaWdodCA9IDQ4MCwKPiDCoMKgwqDCoMKgwqDCoMKgfSwg ewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAudHlwZS5zeXNmc19uYW1lwqDCoMKg wqDCoMKgwqDCoD0gTURQWV9UWVBFXzIsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAubmFtZcKgwqDCoD0gTURQWV9DTEFTU19OQU1FICItIiBNRFBZX1RZUEVfMiwKPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC5mb3JtYXQgPSBEUk1fRk9STUFUX1hSR0I4ODg4LAo+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLmJ5dGVwcCA9IDQsCj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAud2lkdGjCoMKgPSAxMDI0LAo+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgLmhlaWdodCA9IDc2OCwKPiDCoMKgwqDCoMKgwqDCoMKgfSwgewo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAudHlwZS5zeXNmc19uYW1lwqDCoMKgwqDC oMKgwqDCoD0gTURQWV9UWVBFXzMsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAu bmFtZcKgwqDCoD0gTURQWV9DTEFTU19OQU1FICItIiBNRFBZX1RZUEVfMywKPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoC5mb3JtYXQgPSBEUk1fRk9STUFUX1hSR0I4ODg4LAo+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLmJ5dGVwcCA9IDQsCj4gQEAgLTc5LDYgKzgz LDEyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRweV90eXBlIHsKPiDCoMKgwqDCoMKgwqDCoMKg fSwKPiDCoH07Cj4gwqAKPiArc3RhdGljIHN0cnVjdCBtZGV2X3R5cGUgKm1kcHlfbWRldl90eXBl c1tdID0gewo+ICvCoMKgwqDCoMKgwqDCoCZtZHB5X3R5cGVzWzBdLnR5cGUsCj4gK8KgwqDCoMKg wqDCoMKgJm1kcHlfdHlwZXNbMV0udHlwZSwKPiArwqDCoMKgwqDCoMKgwqAmbWRweV90eXBlc1sy XS50eXBlLAo+ICt9Owo+ICsKPiDCoHN0YXRpYyBkZXZfdMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBt ZHB5X2RldnQ7Cj4gwqBzdGF0aWMgc3RydWN0IGNsYXNzwqDCoMKgwqAqbWRweV9jbGFzczsKPiDC oHN0YXRpYyBzdHJ1Y3QgY2RldsKgwqDCoMKgwqBtZHB5X2NkZXY7Cj4gQEAgLTIyMiw3ICsyMzIs NyBAQCBzdGF0aWMgaW50IG1kcHlfaW5pdF9kZXYoc3RydWN0IHZmaW9fZGV2aWNlCj4gKnZkZXYp Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjb250YWluZXJfb2YodmRldiwgc3Ry dWN0IG1kZXZfc3RhdGUsIHZkZXYpOwo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbWRldl9kZXZp Y2UgKm1kZXYgPSB0b19tZGV2X2RldmljZSh2ZGV2LT5kZXYpOwo+IMKgwqDCoMKgwqDCoMKgwqBj b25zdCBzdHJ1Y3QgbWRweV90eXBlICp0eXBlID0KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgJm1kcHlfdHlwZXNbbWRldl9nZXRfdHlwZV9ncm91cF9pZChtZGV2KV07Cj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNvbnRhaW5lcl9vZihtZGV2LT50eXBlLCBzdHJ1Y3Qg bWRweV90eXBlLCB0eXBlKTsKPiDCoMKgwqDCoMKgwqDCoMKgdTMyIGZic2l6ZTsKPiDCoMKgwqDC oMKgwqDCoMKgaW50IHJldCA9IC1FTk9NRU07Cj4gwqAKPiBAQCAtNjU1LDggKzY2NSw3IEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwCj4gKm1kZXZfZGV2X2dyb3Vwc1tdID0g ewo+IMKgc3RhdGljIHNzaXplX3QgbmFtZV9zaG93KHN0cnVjdCBtZGV2X3R5cGUgKm10eXBlLAo+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qg bWRldl90eXBlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQo+IMKgewo+IC3CoMKgwqDCoMKg wqDCoGNvbnN0IHN0cnVjdCBtZHB5X3R5cGUgKnR5cGUgPQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAmbWRweV90eXBlc1ttdHlwZV9nZXRfdHlwZV9ncm91cF9pZChtdHlwZSldOwo+ ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBtZHB5X3R5cGUgKnR5cGUgPSBjb250YWluZXJfb2YobXR5 cGUsIHN0cnVjdAo+IG1kcHlfdHlwZSwgdHlwZSk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgcmV0 dXJuIHNwcmludGYoYnVmLCAiJXNcbiIsIHR5cGUtPm5hbWUpOwo+IMKgfQo+IEBAIC02NjUsOCAr Njc0LDcgQEAgc3RhdGljIE1ERVZfVFlQRV9BVFRSX1JPKG5hbWUpOwo+IMKgc3RhdGljIHNzaXpl X3QgZGVzY3JpcHRpb25fc2hvdyhzdHJ1Y3QgbWRldl90eXBlICptdHlwZSwKPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3Ry dWN0IG1kZXZfdHlwZV9hdHRyaWJ1dGUgKmF0dHIsCj4gY2hhciAqYnVmKQo+IMKgewo+IC3CoMKg wqDCoMKgwqDCoGNvbnN0IHN0cnVjdCBtZHB5X3R5cGUgKnR5cGUgPQo+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAmbWRweV90eXBlc1ttdHlwZV9nZXRfdHlwZV9ncm91cF9pZChtdHlw ZSldOwo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBtZHB5X3R5cGUgKnR5cGUgPSBjb250YWluZXJf b2YobXR5cGUsIHN0cnVjdAo+IG1kcHlfdHlwZSwgdHlwZSk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDC oMKgcmV0dXJuIHNwcmludGYoYnVmLCAidmlydHVhbCBkaXNwbGF5LCAlZHglZCBmcmFtZWJ1ZmZl clxuIiwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0eXBl LT53aWR0aCwgdHlwZS0+aGVpZ2h0KTsKPiBAQCAtNjg4LDcgKzY5Niw3IEBAIHN0YXRpYyBzc2l6 ZV90IGRldmljZV9hcGlfc2hvdyhzdHJ1Y3QgbWRldl90eXBlCj4gKm10eXBlLAo+IMKgfQo+IMKg c3RhdGljIE1ERVZfVFlQRV9BVFRSX1JPKGRldmljZV9hcGkpOwo+IMKgCj4gLXN0YXRpYyBzdHJ1 Y3QgYXR0cmlidXRlICptZGV2X3R5cGVzX2F0dHJzW10gPSB7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgYXR0cmlidXRlICptZGV2X3R5cGVzX2F0dHJzW10gPSB7Cj4gwqDCoMKgwqDCoMKgwqDCoCZt ZGV2X3R5cGVfYXR0cl9uYW1lLmF0dHIsCj4gwqDCoMKgwqDCoMKgwqDCoCZtZGV2X3R5cGVfYXR0 cl9kZXNjcmlwdGlvbi5hdHRyLAo+IMKgwqDCoMKgwqDCoMKgwqAmbWRldl90eXBlX2F0dHJfZGV2 aWNlX2FwaS5hdHRyLAo+IEBAIC02OTYsMjggKzcwNCw2IEBAIHN0YXRpYyBzdHJ1Y3QgYXR0cmli dXRlICptZGV2X3R5cGVzX2F0dHJzW10gPSB7Cj4gwqDCoMKgwqDCoMKgwqDCoE5VTEwsCj4gwqB9 Owo+IMKgCj4gLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIG1kZXZfdHlwZV9ncm91cDEg PSB7Cj4gLcKgwqDCoMKgwqDCoMKgLm5hbWXCoCA9IE1EUFlfVFlQRV8xLAo+IC3CoMKgwqDCoMKg wqDCoC5hdHRycyA9IG1kZXZfdHlwZXNfYXR0cnMsCj4gLX07Cj4gLQo+IC1zdGF0aWMgc3RydWN0 IGF0dHJpYnV0ZV9ncm91cCBtZGV2X3R5cGVfZ3JvdXAyID0gewo+IC3CoMKgwqDCoMKgwqDCoC5u YW1lwqAgPSBNRFBZX1RZUEVfMiwKPiAtwqDCoMKgwqDCoMKgwqAuYXR0cnMgPSBtZGV2X3R5cGVz X2F0dHJzLAo+IC19Owo+IC0KPiAtc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgbWRldl90 eXBlX2dyb3VwMyA9IHsKPiAtwqDCoMKgwqDCoMKgwqAubmFtZcKgID0gTURQWV9UWVBFXzMsCj4g LcKgwqDCoMKgwqDCoMKgLmF0dHJzID0gbWRldl90eXBlc19hdHRycywKPiAtfTsKPiAtCj4gLXN0 YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICptZGV2X3R5cGVfZ3JvdXBzW10gPSB7Cj4gLcKg wqDCoMKgwqDCoMKgJm1kZXZfdHlwZV9ncm91cDEsCj4gLcKgwqDCoMKgwqDCoMKgJm1kZXZfdHlw ZV9ncm91cDIsCj4gLcKgwqDCoMKgwqDCoMKgJm1kZXZfdHlwZV9ncm91cDMsCj4gLcKgwqDCoMKg wqDCoMKgTlVMTCwKPiAtfTsKPiAtCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNl X29wcyBtZHB5X2Rldl9vcHMgPSB7Cj4gwqDCoMKgwqDCoMKgwqDCoC5pbml0ID0gbWRweV9pbml0 X2RldiwKPiDCoMKgwqDCoMKgwqDCoMKgLnJlbGVhc2UgPSBtZHB5X3JlbGVhc2VfZGV2LAo+IEBA IC03MzYsNyArNzIyLDcgQEAgc3RhdGljIHN0cnVjdCBtZGV2X2RyaXZlciBtZHB5X2RyaXZlciA9 IHsKPiDCoMKgwqDCoMKgwqDCoMKgfSwKPiDCoMKgwqDCoMKgwqDCoMKgLnByb2JlID0gbWRweV9w cm9iZSwKPiDCoMKgwqDCoMKgwqDCoMKgLnJlbW92ZcKgPSBtZHB5X3JlbW92ZSwKPiAtwqDCoMKg wqDCoMKgwqAuc3VwcG9ydGVkX3R5cGVfZ3JvdXBzID0gbWRldl90eXBlX2dyb3VwcywKPiArwqDC oMKgwqDCoMKgwqAudHlwZXNfYXR0cnMgPSBtZGV2X3R5cGVzX2F0dHJzLAo+IMKgfTsKPiDCoAo+ IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgdmRfZm9wcyA9IHsKPiBAQCAt Nzc5LDcgKzc2NSw5IEBAIHN0YXRpYyBpbnQgX19pbml0IG1kcHlfZGV2X2luaXQodm9pZCkKPiDC oMKgwqDCoMKgwqDCoMKgaWYgKHJldCkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGdvdG8gZXJyX2NsYXNzOwo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgcmV0ID0gbWRldl9yZWdpc3Rl cl9wYXJlbnQoJm1kcHlfcGFyZW50LCAmbWRweV9kZXYsCj4gJm1kcHlfZHJpdmVyKTsKPiArwqDC oMKgwqDCoMKgwqByZXQgPSBtZGV2X3JlZ2lzdGVyX3BhcmVudCgmbWRweV9wYXJlbnQsICZtZHB5 X2RldiwKPiAmbWRweV9kcml2ZXIsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtZHB5X21kZXZfdHlwZXMsCj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBBUlJBWV9TSVpFKG1kcHlfbWRldl90eXBlcykpOwo+IMKgwqDCoMKgwqDCoMKgwqBp ZiAocmV0KQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290byBlcnJfZGV2aWNl Owo+IMKgCj4gZGlmZiAtLWdpdCBhL3NhbXBsZXMvdmZpby1tZGV2L210dHkuYyBiL3NhbXBsZXMv dmZpby1tZGV2L210dHkuYwo+IGluZGV4IGU4MGJhYWM1MTM4MTEuLjgxNGE3Zjk4NzM4YTIgMTAw NjQ0Cj4gLS0tIGEvc2FtcGxlcy92ZmlvLW1kZXYvbXR0eS5jCj4gKysrIGIvc2FtcGxlcy92Zmlv LW1kZXYvbXR0eS5jCj4gQEAgLTE0Myw2ICsxNDMsMjAgQEAgc3RydWN0IG1kZXZfc3RhdGUgewo+ IMKgwqDCoMKgwqDCoMKgwqBpbnQgbnJfcG9ydHM7Cj4gwqB9Owo+IMKgCj4gK3N0YXRpYyBzdHJ1 Y3QgbXR0eV90eXBlIHsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbWRldl90eXBlIHR5cGU7Cj4g K8KgwqDCoMKgwqDCoMKgaW50IG5yX3BvcnRzOwo+ICvCoMKgwqDCoMKgwqDCoGNvbnN0IGNoYXIg Km5hbWU7Cj4gK30gbXR0eV90eXBlc1syXSA9IHsKPiArwqDCoMKgwqDCoMKgwqB7IC5ucl9wb3J0 cyA9IDEsIC50eXBlLnN5c2ZzX25hbWUgPSAiMSIsIC5uYW1lID0gIlNpbmdsZSBwb3J0Cj4gc2Vy aWFsIiB9LAo+ICvCoMKgwqDCoMKgwqDCoHsgLm5yX3BvcnRzID0gMiwgLnR5cGUuc3lzZnNfbmFt ZSA9ICIyIiwgLm5hbWUgPSAiRHVhbCBwb3J0Cj4gc2VyaWFsIiB9LAo+ICt9Owo+ICsKPiArc3Rh dGljIHN0cnVjdCBtZGV2X3R5cGUgKm10dHlfbWRldl90eXBlc1tdID0gewo+ICvCoMKgwqDCoMKg wqDCoCZtdHR5X3R5cGVzWzBdLnR5cGUsCj4gK8KgwqDCoMKgwqDCoMKgJm10dHlfdHlwZXNbMV0u dHlwZSwKPiArfTsKPiArCj4gwqBzdGF0aWMgYXRvbWljX3QgbWRldl9hdmFpbF9wb3J0cyA9IEFU T01JQ19JTklUKE1BWF9NVFRZUyk7Cj4gwqAKPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9v cGVyYXRpb25zIHZkX2ZvcHMgPSB7Cj4gQEAgLTcwNywxNyArNzIxLDE5IEBAIHN0YXRpYyBpbnQg bXR0eV9pbml0X2RldihzdHJ1Y3QgdmZpb19kZXZpY2UKPiAqdmRldikKPiDCoMKgwqDCoMKgwqDC oMKgc3RydWN0IG1kZXZfc3RhdGUgKm1kZXZfc3RhdGUgPQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgY29udGFpbmVyX29mKHZkZXYsIHN0cnVjdCBtZGV2X3N0YXRlLCB2ZGV2KTsK PiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IG1kZXZfZGV2aWNlICptZGV2ID0gdG9fbWRldl9kZXZp Y2UodmRldi0+ZGV2KTsKPiAtwqDCoMKgwqDCoMKgwqBpbnQgbnJfcG9ydHMgPSBtZGV2X2dldF90 eXBlX2dyb3VwX2lkKG1kZXYpICsgMTsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbXR0eV90eXBl ICp0eXBlID0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29udGFpbmVyX29mKG1k ZXYtPnR5cGUsIHN0cnVjdCBtdHR5X3R5cGUsIHR5cGUpOwo+IMKgwqDCoMKgwqDCoMKgwqBpbnQg YXZhaWxfcG9ydHMgPSBhdG9taWNfcmVhZCgmbWRldl9hdmFpbF9wb3J0cyk7Cj4gwqDCoMKgwqDC oMKgwqDCoGludCByZXQ7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgZG8gewo+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoYXZhaWxfcG9ydHMgPCBucl9wb3J0cykKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGF2YWlsX3BvcnRzIDwgdHlwZS0+bnJfcG9ydHMp Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJu IC1FTk9TUEM7Cj4gwqDCoMKgwqDCoMKgwqDCoH0gd2hpbGUgKCFhdG9taWNfdHJ5X2NtcHhjaGco Jm1kZXZfYXZhaWxfcG9ydHMsCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJmF2YWlsX3BvcnRzLCBhdmFpbF9w b3J0cyAtCj4gbnJfcG9ydHMpKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmYXZhaWxfcG9ydHMsCj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgYXZhaWxfcG9ydHMgLSB0eXBlLT5ucl9wb3J0cykpOwo+IMKgCj4gLcKgwqDC oMKgwqDCoMKgbWRldl9zdGF0ZS0+bnJfcG9ydHMgPSBucl9wb3J0czsKPiArwqDCoMKgwqDCoMKg wqBtZGV2X3N0YXRlLT5ucl9wb3J0cyA9IHR5cGUtPm5yX3BvcnRzOwo+IMKgwqDCoMKgwqDCoMKg wqBtZGV2X3N0YXRlLT5pcnFfaW5kZXggPSAtMTsKPiDCoMKgwqDCoMKgwqDCoMKgbWRldl9zdGF0 ZS0+c1swXS5tYXhfZmlmb19zaXplID0gTUFYX0ZJRk9fU0laRTsKPiDCoMKgwqDCoMKgwqDCoMKg bWRldl9zdGF0ZS0+c1sxXS5tYXhfZmlmb19zaXplID0gTUFYX0ZJRk9fU0laRTsKPiBAQCAtNzM1 LDcgKzc1MSw3IEBAIHN0YXRpYyBpbnQgbXR0eV9pbml0X2RldihzdHJ1Y3QgdmZpb19kZXZpY2UK PiAqdmRldikKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqAKPiDCoGVycl9ucl9wb3J0 czoKPiAtwqDCoMKgwqDCoMKgwqBhdG9taWNfYWRkKG5yX3BvcnRzLCAmbWRldl9hdmFpbF9wb3J0 cyk7Cj4gK8KgwqDCoMKgwqDCoMKgYXRvbWljX2FkZCh0eXBlLT5ucl9wb3J0cywgJm1kZXZfYXZh aWxfcG9ydHMpOwo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gQEAg LTEyNDIsMTEgKzEyNTgsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cAo+ ICptZGV2X2Rldl9ncm91cHNbXSA9IHsKPiDCoHN0YXRpYyBzc2l6ZV90IG5hbWVfc2hvdyhzdHJ1 Y3QgbWRldl90eXBlICptdHlwZSwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc3RydWN0IG1kZXZfdHlwZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1 ZikKPiDCoHsKPiAtwqDCoMKgwqDCoMKgwqBzdGF0aWMgY29uc3QgY2hhciAqbmFtZV9zdHJbMl0g PSB7ICJTaW5nbGUgcG9ydCBzZXJpYWwiLAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICJE dWFsIHBvcnQgc2VyaWFsIiB9Owo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBtdHR5X3R5cGUgKnR5 cGUgPSBjb250YWluZXJfb2YobXR5cGUsIHN0cnVjdAo+IG10dHlfdHlwZSwgdHlwZSk7Cj4gwqAK PiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gc3lzZnNfZW1pdChidWYsICIlc1xuIiwKPiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG5hbWVfc3RyW210eXBl X2dldF90eXBlX2dyb3VwX2lkKG10eXBlKV0pOwo+ICvCoMKgwqDCoMKgwqDCoHJldHVybiBzeXNm c19lbWl0KGJ1ZiwgIiVzXG4iLCB0eXBlLT5uYW1lKTsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIE1E RVZfVFlQRV9BVFRSX1JPKG5hbWUpOwo+IEBAIC0xMjU1LDkgKzEyNjksMTAgQEAgc3RhdGljIHNz aXplX3QgYXZhaWxhYmxlX2luc3RhbmNlc19zaG93KHN0cnVjdAo+IG1kZXZfdHlwZSAqbXR5cGUs Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgbWRldl90eXBlX2F0dHJpYnV0ZQo+ICph dHRyLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2hhciAqYnVmKQo+IMKgewo+IC3CoMKgwqDC oMKgwqDCoHVuc2lnbmVkIGludCBwb3J0cyA9IG10eXBlX2dldF90eXBlX2dyb3VwX2lkKG10eXBl KSArIDE7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IG10dHlfdHlwZSAqdHlwZSA9IGNvbnRhaW5l cl9vZihtdHlwZSwgc3RydWN0Cj4gbXR0eV90eXBlLCB0eXBlKTsKPiDCoAo+IC3CoMKgwqDCoMKg wqDCoHJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBhdG9taWNfcmVhZCgmbWRldl9hdmFpbF9w b3J0cykgLwo+IHBvcnRzKTsKPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gc3ByaW50ZihidWYsICIl ZFxuIiwgYXRvbWljX3JlYWQoJm1kZXZfYXZhaWxfcG9ydHMpIC8KPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHR5cGUtPm5yX3BvcnRzKTsKPiDCoH0KPiDC oAo+IMKgc3RhdGljIE1ERVZfVFlQRV9BVFRSX1JPKGF2YWlsYWJsZV9pbnN0YW5jZXMpOwo+IEBA IC0xMjcwLDI5ICsxMjg1LDEzIEBAIHN0YXRpYyBzc2l6ZV90IGRldmljZV9hcGlfc2hvdyhzdHJ1 Y3QKPiBtZGV2X3R5cGUgKm10eXBlLAo+IMKgCj4gwqBzdGF0aWMgTURFVl9UWVBFX0FUVFJfUk8o ZGV2aWNlX2FwaSk7Cj4gwqAKPiAtc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKm1kZXZfdHlwZXNf YXR0cnNbXSA9IHsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKm1kZXZfdHlwZXNf YXR0cnNbXSA9IHsKPiDCoMKgwqDCoMKgwqDCoMKgJm1kZXZfdHlwZV9hdHRyX25hbWUuYXR0ciwK PiDCoMKgwqDCoMKgwqDCoMKgJm1kZXZfdHlwZV9hdHRyX2RldmljZV9hcGkuYXR0ciwKPiDCoMKg wqDCoMKgwqDCoMKgJm1kZXZfdHlwZV9hdHRyX2F2YWlsYWJsZV9pbnN0YW5jZXMuYXR0ciwKPiDC oMKgwqDCoMKgwqDCoMKgTlVMTCwKPiDCoH07Cj4gwqAKPiAtc3RhdGljIHN0cnVjdCBhdHRyaWJ1 dGVfZ3JvdXAgbWRldl90eXBlX2dyb3VwMSA9IHsKPiAtwqDCoMKgwqDCoMKgwqAubmFtZcKgID0g IjEiLAo+IC3CoMKgwqDCoMKgwqDCoC5hdHRycyA9IG1kZXZfdHlwZXNfYXR0cnMsCj4gLX07Cj4g LQo+IC1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBtZGV2X3R5cGVfZ3JvdXAyID0gewo+ IC3CoMKgwqDCoMKgwqDCoC5uYW1lwqAgPSAiMiIsCj4gLcKgwqDCoMKgwqDCoMKgLmF0dHJzID0g bWRldl90eXBlc19hdHRycywKPiAtfTsKPiAtCj4gLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dy b3VwICptZGV2X3R5cGVfZ3JvdXBzW10gPSB7Cj4gLcKgwqDCoMKgwqDCoMKgJm1kZXZfdHlwZV9n cm91cDEsCj4gLcKgwqDCoMKgwqDCoMKgJm1kZXZfdHlwZV9ncm91cDIsCj4gLcKgwqDCoMKgwqDC oMKgTlVMTCwKPiAtfTsKPiAtCj4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29w cyBtdHR5X2Rldl9vcHMgPSB7Cj4gwqDCoMKgwqDCoMKgwqDCoC5uYW1lID0gInZmaW8tbXR0eSIs Cj4gwqDCoMKgwqDCoMKgwqDCoC5pbml0ID0gbXR0eV9pbml0X2RldiwKPiBAQCAtMTMxMSw3ICsx MzEwLDcgQEAgc3RhdGljIHN0cnVjdCBtZGV2X2RyaXZlciBtdHR5X2RyaXZlciA9IHsKPiDCoMKg wqDCoMKgwqDCoMKgfSwKPiDCoMKgwqDCoMKgwqDCoMKgLnByb2JlID0gbXR0eV9wcm9iZSwKPiDC oMKgwqDCoMKgwqDCoMKgLnJlbW92ZcKgPSBtdHR5X3JlbW92ZSwKPiAtwqDCoMKgwqDCoMKgwqAu c3VwcG9ydGVkX3R5cGVfZ3JvdXBzID0gbWRldl90eXBlX2dyb3VwcywKPiArwqDCoMKgwqDCoMKg wqAudHlwZXNfYXR0cnMgPSBtZGV2X3R5cGVzX2F0dHJzLAo+IMKgfTsKPiDCoAo+IMKgc3RhdGlj IHZvaWQgbXR0eV9kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gQEAgLTEzNjMs NyArMTM2Miw4IEBAIHN0YXRpYyBpbnQgX19pbml0IG10dHlfZGV2X2luaXQodm9pZCkKPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gZXJyX2NsYXNzOwo+IMKgCj4gwqDCoMKg wqDCoMKgwqDCoHJldCA9IG1kZXZfcmVnaXN0ZXJfcGFyZW50KCZtdHR5X2Rldi5wYXJlbnQsICZt dHR5X2Rldi5kZXYsCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmbXR0eV9kcml2ZXIpOwo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJm10 dHlfZHJpdmVyLCBtdHR5X21kZXZfdHlwZXMsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBUlJBWV9TSVpFKG10dHlf bWRldl90eXBlcykpOwo+IMKgwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZ290byBlcnJfZGV2aWNlOwo+IMKgwqDCoMKgwqDCoMKgwqByZXR1 cm4gMDsKCg==