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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 2DE67C4167B for ; Thu, 30 Nov 2023 08:38:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=sFTaL8uUfDxxFc85oz7Lv8SEhi+pKeuDFx32veahqQE=; b=PTEb/L5LCamGF3 UzLb/xVUEK9o5dCBADR9qjQCBaRrYaHL80zJK/OMUti19eeJyLHULo5H9u+Y0jBAYsd6W2fBP7iCJ tCsMIhh/EXDQoBNlxdKV2pL9spz0wKSRHo5mjXzBaqOIp9sUb6e1v888i1IbvqfGT8fTSiNcDzZVm RJEpExPuMWyc0Fh+/s04C3a+j8QGEtjGPPzam9PRm2c4mdjzvKc9+iqMdTheV4b8zmk7HL3Nyk4MA ge7UmOV+fUNqwfVIUKLxo9ERCmvgjt/G49sGPz2abQE+fhZ/GXp5bILfHKjSkKELgHe9hSydPZdMe XxP4pS+WXgOtYseFQyiQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r8cZK-00AEQk-2u; Thu, 30 Nov 2023 08:38:46 +0000 Received: from sin.source.kernel.org ([145.40.73.55]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r8cZE-00AEOV-27 for linux-phy@lists.infradead.org; Thu, 30 Nov 2023 08:38:45 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 010CFCE1941; Thu, 30 Nov 2023 08:38:37 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C89F1C433C8; Thu, 30 Nov 2023 08:38:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1701333517; bh=PsLNmtylk2iJbHhCI/nMBTDmKugzyB+tGsipDtrSJ1E=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=MeeSyY3xUExBZVPz+XIoHy+Vl0McZ25xCgqsMViwMF6z5oEs+4eNp1Ht0qHvBeSXV jaqz0kg3iQ5FuDZBVrTKL6F01MAwHvQ2jkokHqTePjRdKSzddyMUyCI/jzBFibjzcP tba+QvWudC5YpTMpDDJ4v6KAUtVD+NOJT3rDEpBWR0ptovK+VfDYZonfCLEB3e1sRX /QuGztZQZn/NBZcsFIMohe/MzezLtnQSskb+JksEBDjbQXQrhQGdkD4IVDUnI6T9Hj kOBRPS+07NtC5cEIa7XyPTbOQol9M1WOYTwhXIhmXCrh27jv0yX7U7dRYT/DLasl8p jDKAA43s6xJqg== Date: Thu, 30 Nov 2023 14:08:27 +0530 From: Manivannan Sadhasivam To: Can Guo Cc: Manivannan Sadhasivam , bvanassche@acm.org, adrian.hunter@intel.com, cmd4@qualcomm.com, beanhuo@micron.com, avri.altman@wdc.com, junwoo80.lee@samsung.com, martin.petersen@oracle.com, linux-scsi@vger.kernel.org, linux-arm-msm@vger.kernel.org, Andy Gross , Bjorn Andersson , Konrad Dybcio , Vinod Koul , Kishon Vijay Abraham I , "open list:GENERIC PHY FRAMEWORK" , open list Subject: Re: [PATCH v6 08/10] phy: qualcomm: phy-qcom-qmp-ufs: Add High Speed Gear 5 support for SM8550 Message-ID: <20231130083827.GM3043@thinkpad> References: <1701246516-11626-1-git-send-email-quic_cang@quicinc.com> <1701246516-11626-9-git-send-email-quic_cang@quicinc.com> <20231130071240.GG3043@thinkpad> <367744ed-a7e4-485b-b855-2cb26ef1ee16@quicinc.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <367744ed-a7e4-485b-b855-2cb26ef1ee16@quicinc.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231130_003841_169908_16A00744 X-CRM114-Status: GOOD ( 29.59 ) X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org T24gVGh1LCBOb3YgMzAsIDIwMjMgYXQgMDQ6MTQ6MjVQTSArMDgwMCwgQ2FuIEd1byB3cm90ZToK PiAKPiAKPiBPbiAxMS8zMC8yMDIzIDM6MTIgUE0sIE1hbml2YW5uYW4gU2FkaGFzaXZhbSB3cm90 ZToKPiA+IE9uIFdlZCwgTm92IDI5LCAyMDIzIGF0IDEyOjI4OjMzQU0gLTA4MDAsIENhbiBHdW8g d3JvdGU6Cj4gPiA+IE9uIFNNODU1MCwgdHdvIHNldHMgb2YgVUZTIFBIWSBzZXR0aW5ncyBhcmUg cHJvdmlkZWQsIG9uZSBzZXQgaXMgdG8gc3VwcG9ydAo+ID4gPiBIUy1HNSwgYW5vdGhlciBzZXQg aXMgdG8gc3VwcG9ydCBIUy1HNCBhbmQgbG93ZXIgZ2VhcnMuIFRoZSB0d28gc2V0cyBvZiBQSFkK PiA+ID4gc2V0dGluZ3MgYXJlIHByb2dyYW1taW5nIGRpZmZlcmVudCB2YWx1ZXMgdG8gZGlmZmVy ZW50IHJlZ2lzdGVycywgbWl4aW5nCj4gPiA+IHRoZSB0d28gc2V0cyBhbmQvb3Igb3ZlcndyaXRp bmcgb25lIHNldCB3aXRoIGFub3RoZXIgc2V0IGlzIGRlZmluaXRlbHkgbm90Cj4gPiA+IGJsZXNz ZWQgYnkgVUZTIFBIWSBkZXNpZ25lcnMuCj4gPiA+IAo+ID4gPiBUbyBhZGQgSFMtRzUgc3VwcG9y dCBmb3IgU004NTUwLCBzcGxpdCB0aGUgdHdvIHNldHMgb2YgUEhZIHNldHRpbmdzIGludG8KPiA+ ID4gdGhlaXIgZGVkaWNhdGVkIG92ZXJsYXkgdGFibGVzLCBvbmx5IHRoZSBjb21tb24gcGFydHMg b2YgdGhlIHR3byBzZXRzIG9mCj4gPiA+IFBIWSBzZXR0aW5ncyBhcmUgbGVmdCBpbiB0aGUgLnRi bHMuCj4gPiA+IAo+ID4gPiBDb25zaWRlciB3ZSBhcmUgZ29pbmcgdG8gYWRkIGV2ZW4gaGlnaGVy IGdlYXIgc3VwcG9ydCBpbiBmdXR1cmUsIHRvIGF2b2lkCj4gPiA+IGFkZGluZyBtb3JlIHRhYmxl cyB3aXRoIGRpZmZlcmVudCBuYW1lcywgcmVuYW1lIHRoZSAudGJsc19oc19nNCBhbmQgbWFrZSBp dAo+ID4gPiBhbiBhcnJheSwgYSBzaXplIG9mIDIgaXMgZW5vdWdoIGFzIG9mIG5vdy4KPiA+ID4g Cj4gPiA+IEluIHRoaXMgY2FzZSwgLnRibHMgYWxvbmUgaXMgbm90IGEgY29tcGxldGUgc2V0IG9m IFBIWSBzZXR0aW5ncywgc28gZWl0aGVyCj4gPiA+IHRibHNfaHNfb3ZlcmxheVswXSBvciB0Ymxz X2hzX292ZXJsYXlbMV0gbXVzdCBiZSBhcHBsaWVkIG9uIHRvcCBvZiB0aGUKPiA+ID4gLnRibHMg dG8gYmVjb21lIGEgY29tcGxldGUgc2V0IG9mIFBIWSBzZXR0aW5ncy4KPiA+ID4gCj4gPiA+IFNp Z25lZC1vZmYtYnk6IENhbiBHdW8gPHF1aWNfY2FuZ0BxdWljaW5jLmNvbT4KPiA+ID4gLS0tCj4g PiA+ICAgZHJpdmVycy9waHkvcXVhbGNvbW0vcGh5LXFjb20tcW1wLXBjcy11ZnMtdjYuaCAgICAg fCAgIDIgKwo+ID4gPiAgIGRyaXZlcnMvcGh5L3F1YWxjb21tL3BoeS1xY29tLXFtcC1xc2VyZGVz LWNvbS12Ni5oIHwgICAyICsKPiA+ID4gICAuLi4vcXVhbGNvbW0vcGh5LXFjb20tcW1wLXFzZXJk ZXMtdHhyeC11ZnMtdjYuaCAgICB8ICAgOSArKwo+ID4gPiAgIGRyaXZlcnMvcGh5L3F1YWxjb21t L3BoeS1xY29tLXFtcC11ZnMuYyAgICAgICAgICAgIHwgMTcwICsrKysrKysrKysrKysrKysrKy0t LQo+ID4gPiAgIDQgZmlsZXMgY2hhbmdlZCwgMTYzIGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9u cygtKQo+ID4gPiAKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L3F1YWxjb21tL3BoeS1x Y29tLXFtcC1wY3MtdWZzLXY2LmggYi9kcml2ZXJzL3BoeS9xdWFsY29tbS9waHktcWNvbS1xbXAt cGNzLXVmcy12Ni5oCj4gPiA+IGluZGV4IGMyM2Q1ZTQuLmU1NjNhZjUgMTAwNjQ0Cj4gPiA+IC0t LSBhL2RyaXZlcnMvcGh5L3F1YWxjb21tL3BoeS1xY29tLXFtcC1wY3MtdWZzLXY2LmgKPiA+ID4g KysrIGIvZHJpdmVycy9waHkvcXVhbGNvbW0vcGh5LXFjb20tcW1wLXBjcy11ZnMtdjYuaAo+ID4g PiBAQCAtMTgsNiArMTgsNyBAQAo+ID4gPiAgICNkZWZpbmUgUVBIWV9WNl9QQ1NfVUZTX0JJU1Rf RklYRURfUEFUX0NUUkwJCTB4MDYwCj4gPiA+ICAgI2RlZmluZSBRUEhZX1Y2X1BDU19VRlNfVFhf SFNHRUFSX0NBUEFCSUxJVFkJCTB4MDc0Cj4gPiA+ICAgI2RlZmluZSBRUEhZX1Y2X1BDU19VRlNf UlhfSFNHRUFSX0NBUEFCSUxJVFkJCTB4MGJjCj4gPiA+ICsjZGVmaW5lIFFQSFlfVjZfUENTX1VG U19SWF9IU19HNV9TWU5DX0xFTkdUSF9DQVBBQklMSVRZCTB4MTJjCj4gPiA+ICAgI2RlZmluZSBR UEhZX1Y2X1BDU19VRlNfREVCVUdfQlVTX0NMS1NFTAkJMHgxNTgKPiA+ID4gICAjZGVmaW5lIFFQ SFlfVjZfUENTX1VGU19MSU5FQ0ZHX0RJU0FCTEUJCQkweDE3Ywo+ID4gPiAgICNkZWZpbmUgUVBI WV9WNl9QQ1NfVUZTX1JYX01JTl9ISUJFUk44X1RJTUUJCTB4MTg0Cj4gPiA+IEBAIC0yNyw1ICsy OCw2IEBACj4gPiA+ICAgI2RlZmluZSBRUEhZX1Y2X1BDU19VRlNfUkVBRFlfU1RBVFVTCQkJMHgx YTgKPiA+ID4gICAjZGVmaW5lIFFQSFlfVjZfUENTX1VGU19UWF9NSURfVEVSTV9DVFJMMQkJMHgx ZjQKPiA+ID4gICAjZGVmaW5lIFFQSFlfVjZfUENTX1VGU19NVUxUSV9MQU5FX0NUUkwxCQkweDFm Ywo+ID4gPiArI2RlZmluZSBRUEhZX1Y2X1BDU19VRlNfUlhfSFNHNV9TWU5DX1dBSVRfVElNRQkJ MHgyMjAKPiA+ID4gICAjZW5kaWYKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L3F1YWxj b21tL3BoeS1xY29tLXFtcC1xc2VyZGVzLWNvbS12Ni5oIGIvZHJpdmVycy9waHkvcXVhbGNvbW0v cGh5LXFjb20tcW1wLXFzZXJkZXMtY29tLXY2LmgKPiA+ID4gaW5kZXggZjQyMGY4Zi4uZWYzOTJj ZSAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9waHkvcXVhbGNvbW0vcGh5LXFjb20tcW1wLXFz ZXJkZXMtY29tLXY2LmgKPiA+ID4gKysrIGIvZHJpdmVycy9waHkvcXVhbGNvbW0vcGh5LXFjb20t cW1wLXFzZXJkZXMtY29tLXY2LmgKPiA+ID4gQEAgLTU2LDYgKzU2LDggQEAKPiA+ID4gICAjZGVm aW5lIFFTRVJERVNfVjZfQ09NX1NZU19DTEtfQ1RSTAkJCQkweGU0Cj4gPiA+ICAgI2RlZmluZSBR U0VSREVTX1Y2X0NPTV9TWVNDTEtfQlVGX0VOQUJMRQkJCTB4ZTgKPiA+ID4gICAjZGVmaW5lIFFT RVJERVNfVjZfQ09NX1BMTF9JVkNPCQkJCQkweGY0Cj4gPiA+ICsjZGVmaW5lIFFTRVJERVNfVjZf Q09NX0NNTl9JRVRSSU0JCQkJMHhmYwo+ID4gPiArI2RlZmluZSBRU0VSREVTX1Y2X0NPTV9DTU5f SVBUUklNCQkJCTB4MTAwCj4gPiA+ICAgI2RlZmluZSBRU0VSREVTX1Y2X0NPTV9TWVNDTEtfRU5f U0VMCQkJCTB4MTEwCj4gPiA+ICAgI2RlZmluZSBRU0VSREVTX1Y2X0NPTV9SRVNFVFNNX0NOVFJM CQkJCTB4MTE4Cj4gPiA+ICAgI2RlZmluZSBRU0VSREVTX1Y2X0NPTV9MT0NLX0NNUF9FTgkJCQkw eDEyMAo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvcXVhbGNvbW0vcGh5LXFjb20tcW1w LXFzZXJkZXMtdHhyeC11ZnMtdjYuaCBiL2RyaXZlcnMvcGh5L3F1YWxjb21tL3BoeS1xY29tLXFt cC1xc2VyZGVzLXR4cngtdWZzLXY2LmgKPiA+ID4gaW5kZXggNjc0ZjE1OC4uNDhmMzFjOCAxMDA2 NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9waHkvcXVhbGNvbW0vcGh5LXFjb20tcW1wLXFzZXJkZXMt dHhyeC11ZnMtdjYuaAo+ID4gPiArKysgYi9kcml2ZXJzL3BoeS9xdWFsY29tbS9waHktcWNvbS1x bXAtcXNlcmRlcy10eHJ4LXVmcy12Ni5oCj4gPiA+IEBAIC0xNSw4ICsxNSwxNSBAQAo+ID4gPiAg ICNkZWZpbmUgUVNFUkRFU19VRlNfVjZfUlhfVUNEUl9GQVNUTE9DS19GT19HQUlOX1JBVEUyCQkw eDA4Cj4gPiA+ICAgI2RlZmluZSBRU0VSREVTX1VGU19WNl9SWF9VQ0RSX0ZBU1RMT0NLX0ZPX0dB SU5fUkFURTQJCTB4MTAKPiA+ID4gKyNkZWZpbmUgUVNFUkRFU19VRlNfVjZfUlhfVUNEUl9GQVNU TE9DS19TT19HQUlOX1JBVEU0CQkweDI0Cj4gPiA+ICsjZGVmaW5lIFFTRVJERVNfVUZTX1Y2X1JY X1VDRFJfRkFTVExPQ0tfQ09VTlRfSElHSF9SQVRFNAkweDU0Cj4gPiA+ICAgI2RlZmluZSBRU0VS REVTX1VGU19WNl9SWF9VQ0RSX0ZPX0dBSU5fUkFURTIJCQkweGQ0Cj4gPiA+ICsjZGVmaW5lIFFT RVJERVNfVUZTX1Y2X1JYX1VDRFJfRk9fR0FJTl9SQVRFNAkJCTB4ZGMKPiA+ID4gKyNkZWZpbmUg UVNFUkRFU19VRlNfVjZfUlhfVUNEUl9TT19HQUlOX1JBVEU0CQkJMHhmMAo+ID4gPiArI2RlZmlu ZSBRU0VSREVTX1VGU19WNl9SWF9VQ0RSX1BJX0NPTlRST0xTCQkJMHhmNAo+ID4gPiAgICNkZWZp bmUgUVNFUkRFU19VRlNfVjZfUlhfVkdBX0NBTF9NQU5fVkFMCQkJMHgxNzgKPiA+ID4gKyNkZWZp bmUgUVNFUkRFU19VRlNfVjZfUlhfRVFfT0ZGU0VUX0FEQVBUT1JfQ05UUkwxCQkweDFiYwo+ID4g PiArI2RlZmluZSBRU0VSREVTX1VGU19WNl9SWF9PRkZTRVRfQURBUFRPUl9DTlRSTDMJCQkweDFj NAo+ID4gPiAgICNkZWZpbmUgUVNFUkRFU19VRlNfVjZfUlhfTU9ERV9SQVRFXzBfMV9CMAkJCTB4 MjA4Cj4gPiA+ICAgI2RlZmluZSBRU0VSREVTX1VGU19WNl9SWF9NT0RFX1JBVEVfMF8xX0IxCQkJ MHgyMGMKPiA+ID4gICAjZGVmaW5lIFFTRVJERVNfVUZTX1Y2X1JYX01PREVfUkFURV8wXzFfQjMJ CQkweDIxNAo+ID4gPiBAQCAtMjgsNiArMzUsOCBAQAo+ID4gPiAgICNkZWZpbmUgUVNFUkRFU19V RlNfVjZfUlhfTU9ERV9SQVRFM19CNQkJCQkweDI2NAo+ID4gPiAgICNkZWZpbmUgUVNFUkRFU19V RlNfVjZfUlhfTU9ERV9SQVRFM19COAkJCQkweDI3MAo+ID4gPiAgICNkZWZpbmUgUVNFUkRFU19V RlNfVjZfUlhfTU9ERV9SQVRFNF9CMwkJCQkweDI4MAo+ID4gPiArI2RlZmluZSBRU0VSREVTX1VG U19WNl9SWF9NT0RFX1JBVEU0X0I0CQkJCTB4Mjg0Cj4gPiA+ICAgI2RlZmluZSBRU0VSREVTX1VG U19WNl9SWF9NT0RFX1JBVEU0X0I2CQkJCTB4MjhjCj4gPiA+ICsjZGVmaW5lIFFTRVJERVNfVUZT X1Y2X1JYX0RMTDBfRlRVTkVfQ1RSTAkJCTB4MmY4Cj4gPiA+ICAgI2VuZGlmCj4gPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL3BoeS9xdWFsY29tbS9waHktcWNvbS1xbXAtdWZzLmMgYi9kcml2ZXJz L3BoeS9xdWFsY29tbS9waHktcWNvbS1xbXAtdWZzLmMKPiA+ID4gaW5kZXggMjE3MzQxOC4uN2U1 ZjExNTQgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvcGh5L3F1YWxjb21tL3BoeS1xY29tLXFt cC11ZnMuYwo+ID4gPiArKysgYi9kcml2ZXJzL3BoeS9xdWFsY29tbS9waHktcWNvbS1xbXAtdWZz LmMKPiA+ID4gQEAgLTQxLDYgKzQxLDggQEAKPiA+ID4gICAjZGVmaW5lIFBIWV9JTklUX0NPTVBM RVRFX1RJTUVPVVQJCTEwMDAwCj4gPiA+ICsjZGVmaW5lIE5VTV9PVkVSTEFZCQkJCTIKPiA+ID4g Kwo+ID4gPiAgIHN0cnVjdCBxbXBfcGh5X2luaXRfdGJsIHsKPiA+ID4gICAJdW5zaWduZWQgaW50 IG9mZnNldDsKPiA+ID4gICAJdW5zaWduZWQgaW50IHZhbDsKPiA+ID4gQEAgLTc1NCwxNSArNzU2 LDIyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcW1wX3BoeV9pbml0X3RibCBzbTg1NTBfdWZzcGh5 X3NlcmRlc1tdID0gewo+ID4gPiAgIAlRTVBfUEhZX0lOSVRfQ0ZHKFFTRVJERVNfVjZfQ09NX0hT Q0xLX1NFTF8xLCAweDExKSwKPiA+ID4gICAJUU1QX1BIWV9JTklUX0NGRyhRU0VSREVTX1Y2X0NP TV9IU0NMS19IU19TV0lUQ0hfU0VMXzEsIDB4MDApLAo+ID4gPiAgIAlRTVBfUEhZX0lOSVRfQ0ZH KFFTRVJERVNfVjZfQ09NX0xPQ0tfQ01QX0VOLCAweDAxKSwKPiA+ID4gLQlRTVBfUEhZX0lOSVRf Q0ZHKFFTRVJERVNfVjZfQ09NX1ZDT19UVU5FX01BUCwgMHgwNCksCj4gPiA+IC0JUU1QX1BIWV9J TklUX0NGRyhRU0VSREVTX1Y2X0NPTV9QTExfSVZDTywgMHgwZiksCj4gPiA+ICAgCVFNUF9QSFlf SU5JVF9DRkcoUVNFUkRFU19WNl9DT01fVkNPX1RVTkVfSU5JVFZBTDIsIDB4MDApLAo+ID4gPiAg IAlRTVBfUEhZX0lOSVRfQ0ZHKFFTRVJERVNfVjZfQ09NX0RFQ19TVEFSVF9NT0RFMCwgMHg0MSks Cj4gPiA+IC0JUU1QX1BIWV9JTklUX0NGRyhRU0VSREVTX1Y2X0NPTV9DUF9DVFJMX01PREUwLCAw eDBhKSwKPiA+ID4gICAJUU1QX1BIWV9JTklUX0NGRyhRU0VSREVTX1Y2X0NPTV9QTExfUkNUUkxf TU9ERTAsIDB4MTgpLAo+ID4gPiAgIAlRTVBfUEhZX0lOSVRfQ0ZHKFFTRVJERVNfVjZfQ09NX1BM TF9DQ1RSTF9NT0RFMCwgMHgxNCksCj4gPiA+ICAgCVFNUF9QSFlfSU5JVF9DRkcoUVNFUkRFU19W Nl9DT01fTE9DS19DTVAxX01PREUwLCAweDdmKSwKPiA+ID4gICAJUU1QX1BIWV9JTklUX0NGRyhR U0VSREVTX1Y2X0NPTV9MT0NLX0NNUDJfTU9ERTAsIDB4MDYpLAo+ID4gPiArfTsKPiA+ID4gKwo+ ID4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBxbXBfcGh5X2luaXRfdGJsIHNtODU1MF91ZnNwaHlf aHNfYl9zZXJkZXNbXSA9IHsKPiA+ID4gKwlRTVBfUEhZX0lOSVRfQ0ZHKFFTRVJERVNfVjZfQ09N X1ZDT19UVU5FX01BUCwgMHg0NCksCj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ICtzdGF0aWMgY29u c3Qgc3RydWN0IHFtcF9waHlfaW5pdF90Ymwgc204NTUwX3Vmc3BoeV9nNF9zZXJkZXNbXSA9IHsK PiA+ID4gKwlRTVBfUEhZX0lOSVRfQ0ZHKFFTRVJERVNfVjZfQ09NX1ZDT19UVU5FX01BUCwgMHgw NCksCj4gPiA+ICsJUU1QX1BIWV9JTklUX0NGRyhRU0VSREVTX1Y2X0NPTV9QTExfSVZDTywgMHgw ZiksCj4gPiA+ICsJUU1QX1BIWV9JTklUX0NGRyhRU0VSREVTX1Y2X0NPTV9DUF9DVFJMX01PREUw LCAweDBhKSwKPiA+ID4gICAJUU1QX1BIWV9JTklUX0NGRyhRU0VSREVTX1Y2X0NPTV9ERUNfU1RB UlRfTU9ERTEsIDB4NGMpLAo+ID4gPiAgIAlRTVBfUEhZX0lOSVRfQ0ZHKFFTRVJERVNfVjZfQ09N X0NQX0NUUkxfTU9ERTEsIDB4MGEpLAo+ID4gPiAgIAlRTVBfUEhZX0lOSVRfQ0ZHKFFTRVJERVNf VjZfQ09NX1BMTF9SQ1RSTF9NT0RFMSwgMHgxOCksCj4gPiA+IEBAIC03NzEsMTkgKzc4MCwyNCBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IHFtcF9waHlfaW5pdF90Ymwgc204NTUwX3Vmc3BoeV9zZXJk ZXNbXSA9IHsKPiA+ID4gICAJUU1QX1BIWV9JTklUX0NGRyhRU0VSREVTX1Y2X0NPTV9MT0NLX0NN UDJfTU9ERTEsIDB4MDcpLAo+ID4gPiAgIH07Cj4gPiA+IC1zdGF0aWMgY29uc3Qgc3RydWN0IHFt cF9waHlfaW5pdF90Ymwgc204NTUwX3Vmc3BoeV9oc19iX3NlcmRlc1tdID0gewo+ID4gPiAtCVFN UF9QSFlfSU5JVF9DRkcoUVNFUkRFU19WNl9DT01fVkNPX1RVTkVfTUFQLCAweDQ0KSwKPiA+ID4g K3N0YXRpYyBjb25zdCBzdHJ1Y3QgcW1wX3BoeV9pbml0X3RibCBzbTg1NTBfdWZzcGh5X2c1X3Nl cmRlc1tdID0gewo+ID4gPiArCVFNUF9QSFlfSU5JVF9DRkcoUVNFUkRFU19WNl9DT01fUExMX0lW Q08sIDB4MWYpLAo+ID4gPiArCVFNUF9QSFlfSU5JVF9DRkcoUVNFUkRFU19WNl9DT01fQ01OX0lF VFJJTSwgMHgxYiksCj4gPiA+ICsJUU1QX1BIWV9JTklUX0NGRyhRU0VSREVTX1Y2X0NPTV9DTU5f SVBUUklNLCAweDFjKSwKPiA+ID4gKwlRTVBfUEhZX0lOSVRfQ0ZHKFFTRVJERVNfVjZfQ09NX0NQ X0NUUkxfTU9ERTAsIDB4MDYpLAo+ID4gPiAgIH07Cj4gPiA+ICAgc3RhdGljIGNvbnN0IHN0cnVj dCBxbXBfcGh5X2luaXRfdGJsIHNtODU1MF91ZnNwaHlfdHhbXSA9IHsKPiA+ID4gICAJUU1QX1BI WV9JTklUX0NGRyhRU0VSREVTX1VGU19WNl9UWF9MQU5FX01PREVfMSwgMHgwNSksCj4gPiA+ICAg CVFNUF9QSFlfSU5JVF9DRkcoUVNFUkRFU19VRlNfVjZfVFhfUkVTX0NPREVfTEFORV9PRkZTRVRf VFgsIDB4MDcpLAo+ID4gPiArfTsKPiA+ID4gKwo+ID4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBx bXBfcGh5X2luaXRfdGJsIHNtODU1MF91ZnNwaHlfZzRfdHhbXSA9IHsKPiA+ID4gICAJUU1QX1BI WV9JTklUX0NGRyhRU0VSREVTX1VGU19WNl9UWF9GUl9EQ0NfQ1RSTCwgMHg0YyksCj4gPiA+ICAg fTsKPiA+ID4gICBzdGF0aWMgY29uc3Qgc3RydWN0IHFtcF9waHlfaW5pdF90Ymwgc204NTUwX3Vm c3BoeV9yeFtdID0gewo+ID4gPiAgIAlRTVBfUEhZX0lOSVRfQ0ZHKFFTRVJERVNfVUZTX1Y2X1JY X1VDRFJfRk9fR0FJTl9SQVRFMiwgMHgwYyksCj4gPiA+IC0JUU1QX1BIWV9JTklUX0NGRyhRU0VS REVTX1VGU19WNl9SWF9WR0FfQ0FMX01BTl9WQUwsIDB4MGUpLAo+ID4gPiAgIAlRTVBfUEhZX0lO SVRfQ0ZHKFFTRVJERVNfVUZTX1Y2X1JYX01PREVfUkFURV8wXzFfQjAsIDB4YzIpLAo+ID4gPiAg IAlRTVBfUEhZX0lOSVRfQ0ZHKFFTRVJERVNfVUZTX1Y2X1JYX01PREVfUkFURV8wXzFfQjEsIDB4 YzIpLAo+ID4gPiBAQCAtNzk5LDE2ICs4MTMsNDUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBxbXBf cGh5X2luaXRfdGJsIHNtODU1MF91ZnNwaHlfcnhbXSA9IHsKPiA+ID4gICAJUU1QX1BIWV9JTklU X0NGRyhRU0VSREVTX1VGU19WNl9SWF9NT0RFX1JBVEUzX0I4LCAweDAyKSwKPiA+ID4gICB9Owo+ ID4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBxbXBfcGh5X2luaXRfdGJsIHNtODU1MF91ZnNwaHlf ZzRfcnhbXSA9IHsKPiA+ID4gKwlRTVBfUEhZX0lOSVRfQ0ZHKFFTRVJERVNfVUZTX1Y2X1JYX1ZH QV9DQUxfTUFOX1ZBTCwgMHgwZSksCj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ICtzdGF0aWMgY29u c3Qgc3RydWN0IHFtcF9waHlfaW5pdF90Ymwgc204NTUwX3Vmc3BoeV9nNV9yeFtdID0gewo+ID4g PiArCVFNUF9QSFlfSU5JVF9DRkcoUVNFUkRFU19VRlNfVjZfUlhfVUNEUl9GT19HQUlOX1JBVEU0 LCAweDBjKSwKPiA+ID4gKwlRTVBfUEhZX0lOSVRfQ0ZHKFFTRVJERVNfVUZTX1Y2X1JYX1VDRFJf U09fR0FJTl9SQVRFNCwgMHgwNCksCj4gPiA+ICsJUU1QX1BIWV9JTklUX0NGRyhRU0VSREVTX1VG U19WNl9SWF9FUV9PRkZTRVRfQURBUFRPUl9DTlRSTDEsIDB4MTQpLAo+ID4gPiArCVFNUF9QSFlf SU5JVF9DRkcoUVNFUkRFU19VRlNfVjZfUlhfVUNEUl9QSV9DT05UUk9MUywgMHgwNyksCj4gPiA+ ICsJUU1QX1BIWV9JTklUX0NGRyhRU0VSREVTX1VGU19WNl9SWF9PRkZTRVRfQURBUFRPUl9DTlRS TDMsIDB4MGUpLAo+ID4gPiArCVFNUF9QSFlfSU5JVF9DRkcoUVNFUkRFU19VRlNfVjZfUlhfVUNE Ul9GQVNUTE9DS19DT1VOVF9ISUdIX1JBVEU0LCAweDAyKSwKPiA+ID4gKwlRTVBfUEhZX0lOSVRf Q0ZHKFFTRVJERVNfVUZTX1Y2X1JYX1VDRFJfRkFTVExPQ0tfRk9fR0FJTl9SQVRFNCwgMHgxYyks Cj4gPiA+ICsJUU1QX1BIWV9JTklUX0NGRyhRU0VSREVTX1VGU19WNl9SWF9VQ0RSX0ZBU1RMT0NL X1NPX0dBSU5fUkFURTQsIDB4MDYpLAo+ID4gPiArCVFNUF9QSFlfSU5JVF9DRkcoUVNFUkRFU19V RlNfVjZfUlhfVkdBX0NBTF9NQU5fVkFMLCAweDA4KSwKPiA+ID4gKwlRTVBfUEhZX0lOSVRfQ0ZH KFFTRVJERVNfVUZTX1Y2X1JYX01PREVfUkFURTRfQjMsIDB4YjkpLAo+ID4gPiArCVFNUF9QSFlf SU5JVF9DRkcoUVNFUkRFU19VRlNfVjZfUlhfTU9ERV9SQVRFNF9CNCwgMHg0ZiksCj4gPiA+ICsJ UU1QX1BIWV9JTklUX0NGRyhRU0VSREVTX1VGU19WNl9SWF9NT0RFX1JBVEU0X0I2LCAweGZmKSwK PiA+ID4gKwlRTVBfUEhZX0lOSVRfQ0ZHKFFTRVJERVNfVUZTX1Y2X1JYX0RMTDBfRlRVTkVfQ1RS TCwgMHgzMCksCj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ICAgc3RhdGljIGNvbnN0IHN0cnVjdCBx bXBfcGh5X2luaXRfdGJsIHNtODU1MF91ZnNwaHlfcGNzW10gPSB7Cj4gPiA+ICAgCVFNUF9QSFlf SU5JVF9DRkcoUVBIWV9WNl9QQ1NfVUZTX1JYX1NJR0RFVF9DVFJMMiwgMHg2OSksCj4gPiA+ICAg CVFNUF9QSFlfSU5JVF9DRkcoUVBIWV9WNl9QQ1NfVUZTX1RYX0xBUkdFX0FNUF9EUlZfTFZMLCAw eDBmKSwKPiA+ID4gICAJUU1QX1BIWV9JTklUX0NGRyhRUEhZX1Y2X1BDU19VRlNfVFhfTUlEX1RF Uk1fQ1RSTDEsIDB4NDMpLAo+ID4gPiAtCVFNUF9QSFlfSU5JVF9DRkcoUVBIWV9WNl9QQ1NfVUZT X1BMTF9DTlRMLCAweDJiKSwKPiA+ID4gICAJUU1QX1BIWV9JTklUX0NGRyhRUEhZX1Y2X1BDU19V RlNfTVVMVElfTEFORV9DVFJMMSwgMHgwMiksCj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IHFtcF9waHlfaW5pdF90Ymwgc204NTUwX3Vmc3BoeV9nNF9wY3NbXSA9 IHsKPiA+ID4gKwlRTVBfUEhZX0lOSVRfQ0ZHKFFQSFlfVjZfUENTX1VGU19QTExfQ05UTCwgMHgy YiksCj4gPiA+ICAgCVFNUF9QSFlfSU5JVF9DRkcoUVBIWV9WNl9QQ1NfVUZTX1RYX0hTR0VBUl9D QVBBQklMSVRZLCAweDA0KSwKPiA+ID4gICAJUU1QX1BIWV9JTklUX0NGRyhRUEhZX1Y2X1BDU19V RlNfUlhfSFNHRUFSX0NBUEFCSUxJVFksIDB4MDQpLAo+ID4gPiAgIH07Cj4gPiA+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IHFtcF9waHlfaW5pdF90Ymwgc204NTUwX3Vmc3BoeV9nNV9wY3NbXSA9IHsK PiA+ID4gKwlRTVBfUEhZX0lOSVRfQ0ZHKFFQSFlfVjZfUENTX1VGU19QTExfQ05UTCwgMHgzMyks Cj4gPiA+ICsJUU1QX1BIWV9JTklUX0NGRyhRUEhZX1Y2X1BDU19VRlNfUlhfSFNfRzVfU1lOQ19M RU5HVEhfQ0FQQUJJTElUWSwgMHg0ZiksCj4gPiA+ICsJUU1QX1BIWV9JTklUX0NGRyhRUEhZX1Y2 X1BDU19VRlNfUlhfSFNHNV9TWU5DX1dBSVRfVElNRSwgMHg5ZSksCj4gPiA+ICt9Owo+ID4gPiAr Cj4gPiA+ICAgc3RydWN0IHFtcF91ZnNfb2Zmc2V0cyB7Cj4gPiA+ICAgCXUxNiBzZXJkZXM7Cj4g PiA+ICAgCXUxNiBwY3M7Cj4gPiA+IEBAIC04MjgsNiArODcxLDggQEAgc3RydWN0IHFtcF9waHlf Y2ZnX3RibHMgewo+ID4gPiAgIAlpbnQgcnhfbnVtOwo+ID4gPiAgIAljb25zdCBzdHJ1Y3QgcW1w X3BoeV9pbml0X3RibCAqcGNzOwo+ID4gPiAgIAlpbnQgcGNzX251bTsKPiA+ID4gKwkvKiBNYXhp bXVtIHN1cHBvcnRlZCBHZWFyIG9mIHRoaXMgdGJscyAqLwo+ID4gPiArCXUzMiBtYXhfZ2VhcjsK PiA+ID4gICB9Owo+ID4gPiAgIC8qIHN0cnVjdCBxbXBfcGh5X2NmZyAtIHBlci1QSFkgaW5pdGlh bGl6YXRpb24gY29uZmlnICovCj4gPiA+IEBAIC04MzUsMTMgKzg4MCwxNSBAQCBzdHJ1Y3QgcW1w X3BoeV9jZmcgewo+ID4gPiAgIAlpbnQgbGFuZXM7Cj4gPiA+ICAgCWNvbnN0IHN0cnVjdCBxbXBf dWZzX29mZnNldHMgKm9mZnNldHM7Cj4gPiA+ICsJLyogTWF4aW11bSBzdXBwb3J0ZWQgR2VhciBv ZiB0aGlzIGNvbmZpZyAqLwo+ID4gPiArCXUzMiBtYXhfc3VwcG9ydGVkX2dlYXI7Cj4gPiA+ICAg CS8qIE1haW4gaW5pdCBzZXF1ZW5jZSBmb3IgUEhZIGJsb2NrcyAtIHNlcmRlcywgdHgsIHJ4LCBw Y3MgKi8KPiA+ID4gICAJY29uc3Qgc3RydWN0IHFtcF9waHlfY2ZnX3RibHMgdGJsczsKPiA+ID4g ICAJLyogQWRkaXRpb25hbCBzZXF1ZW5jZSBmb3IgSFMgU2VyaWVzIEIgKi8KPiA+ID4gICAJY29u c3Qgc3RydWN0IHFtcF9waHlfY2ZnX3RibHMgdGJsc19oc19iOwo+ID4gPiAtCS8qIEFkZGl0aW9u YWwgc2VxdWVuY2UgZm9yIEhTIEc0ICovCj4gPiA+IC0JY29uc3Qgc3RydWN0IHFtcF9waHlfY2Zn X3RibHMgdGJsc19oc19nNDsKPiA+ID4gKwkvKiBBZGRpdGlvbmFsIHNlcXVlbmNlIGZvciBkaWZm ZXJlbnQgSFMgR2VhcnMgKi8KPiA+ID4gKwljb25zdCBzdHJ1Y3QgcW1wX3BoeV9jZmdfdGJscyB0 YmxzX2hzX292ZXJsYXlbTlVNX09WRVJMQVldOwo+ID4gPiAgIAkvKiBjbG9jayBpZHMgdG8gYmUg cmVxdWVzdGVkICovCj4gPiA+ICAgCWNvbnN0IGNoYXIgKiBjb25zdCAqY2xrX2xpc3Q7Cj4gPiA+ IEBAIC05NDQsNiArOTkxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBxbXBfcGh5X2NmZyBtc204 OTk2X3Vmc3BoeV9jZmcgPSB7Cj4gPiA+ICAgCS5sYW5lcwkJCT0gMSwKPiA+ID4gICAJLm9mZnNl dHMJCT0gJnFtcF91ZnNfb2Zmc2V0cywKPiA+ID4gKwkubWF4X3N1cHBvcnRlZF9nZWFyCT0gVUZT X0hTX0czLAo+ID4gPiAgIAkudGJscyA9IHsKPiA+ID4gICAJCS5zZXJkZXMJCT0gbXNtODk5Nl91 ZnNwaHlfc2VyZGVzLAo+ID4gPiBAQCAtOTY5LDYgKzEwMTcsNyBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IHFtcF9waHlfY2ZnIHNhODc3NXBfdWZzcGh5X2NmZyA9IHsKPiA+ID4gICAJLmxhbmVzCQkJ PSAyLAo+ID4gPiAgIAkub2Zmc2V0cwkJPSAmcW1wX3Vmc19vZmZzZXRzLAo+ID4gPiArCS5tYXhf c3VwcG9ydGVkX2dlYXIJPSBVRlNfSFNfRzQsCj4gPiA+ICAgCS50YmxzID0gewo+ID4gPiAgIAkJ LnNlcmRlcwkJPSBzbTgzNTBfdWZzcGh5X3NlcmRlcywKPiA+ID4gQEAgLTk4NCwxMyArMTAzMywx NCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHFtcF9waHlfY2ZnIHNhODc3NXBfdWZzcGh5X2NmZyA9 IHsKPiA+ID4gICAJCS5zZXJkZXMJCT0gc204MzUwX3Vmc3BoeV9oc19iX3NlcmRlcywKPiA+ID4g ICAJCS5zZXJkZXNfbnVtCT0gQVJSQVlfU0laRShzbTgzNTBfdWZzcGh5X2hzX2Jfc2VyZGVzKSwK PiA+ID4gICAJfSwKPiA+ID4gLQkudGJsc19oc19nNCA9IHsKPiA+ID4gKwkudGJsc19oc19vdmVy bGF5WzBdID0gewo+ID4gPiAgIAkJLnR4CQk9IHNtODM1MF91ZnNwaHlfZzRfdHgsCj4gPiA+ICAg CQkudHhfbnVtCQk9IEFSUkFZX1NJWkUoc204MzUwX3Vmc3BoeV9nNF90eCksCj4gPiA+ICAgCQku cngJCT0gc204MzUwX3Vmc3BoeV9nNF9yeCwKPiA+ID4gICAJCS5yeF9udW0JCT0gQVJSQVlfU0la RShzbTgzNTBfdWZzcGh5X2c0X3J4KSwKPiA+ID4gICAJCS5wY3MJCT0gc204MzUwX3Vmc3BoeV9n NF9wY3MsCj4gPiA+ICAgCQkucGNzX251bQk9IEFSUkFZX1NJWkUoc204MzUwX3Vmc3BoeV9nNF9w Y3MpLAo+ID4gPiArCQkubWF4X2dlYXIJPSBVRlNfSFNfRzQsCj4gPiA+ICAgCX0sCj4gPiA+ICAg CS5jbGtfbGlzdAkJPSBzbTg0NTBfdWZzX3BoeV9jbGtfbCwKPiA+ID4gICAJLm51bV9jbGtzCQk9 IEFSUkFZX1NJWkUoc204NDUwX3Vmc19waHlfY2xrX2wpLAo+ID4gPiBAQCAtMTAwMyw2ICsxMDUz LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBxbXBfcGh5X2NmZyBzYzcyODBfdWZzcGh5X2NmZyA9 IHsKPiA+ID4gICAJLmxhbmVzICAgICAgICAgICAgICAgICAgPSAyLAo+ID4gPiAgIAkub2Zmc2V0 cyAgICAgICAgICAgICAgICA9ICZxbXBfdWZzX29mZnNldHMsCj4gPiA+ICsJLm1heF9zdXBwb3J0 ZWRfZ2Vhcgk9IFVGU19IU19HNCwKPiA+ID4gICAJLnRibHMgPSB7Cj4gPiA+ICAgCQkuc2VyZGVz ICAgICAgICAgPSBzbTgxNTBfdWZzcGh5X3NlcmRlcywKPiA+ID4gQEAgLTEwMTgsMTMgKzEwNjks MTQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBxbXBfcGh5X2NmZyBzYzcyODBfdWZzcGh5X2NmZyA9 IHsKPiA+ID4gICAJCS5zZXJkZXMgICAgICAgICA9IHNtODE1MF91ZnNwaHlfaHNfYl9zZXJkZXMs Cj4gPiA+ICAgCQkuc2VyZGVzX251bSAgICAgPSBBUlJBWV9TSVpFKHNtODE1MF91ZnNwaHlfaHNf Yl9zZXJkZXMpLAo+ID4gPiAgIAl9LAo+ID4gPiAtCS50YmxzX2hzX2c0ID0gewo+ID4gPiArCS50 YmxzX2hzX292ZXJsYXlbMF0gPSB7Cj4gPiA+ICAgCQkudHggICAgICAgICAgICAgPSBzbTgyNTBf dWZzcGh5X2hzX2c0X3R4LAo+ID4gPiAgIAkJLnR4X251bSAgICAgICAgID0gQVJSQVlfU0laRShz bTgyNTBfdWZzcGh5X2hzX2c0X3R4KSwKPiA+ID4gICAJCS5yeCAgICAgICAgICAgICA9IHNjNzI4 MF91ZnNwaHlfaHNfZzRfcngsCj4gPiA+ICAgCQkucnhfbnVtICAgICAgICAgPSBBUlJBWV9TSVpF KHNjNzI4MF91ZnNwaHlfaHNfZzRfcngpLAo+ID4gPiAgIAkJLnBjcyAgICAgICAgICAgID0gc204 MTUwX3Vmc3BoeV9oc19nNF9wY3MsCj4gPiA+ICAgCQkucGNzX251bSAgICAgICAgPSBBUlJBWV9T SVpFKHNtODE1MF91ZnNwaHlfaHNfZzRfcGNzKSwKPiA+ID4gKwkJLm1heF9nZWFyCT0gVUZTX0hT X0c0LAo+ID4gPiAgIAl9LAo+ID4gPiAgIAkuY2xrX2xpc3QgICAgICAgICAgICAgICA9IHNtODQ1 MF91ZnNfcGh5X2Nsa19sLAo+ID4gPiAgIAkubnVtX2Nsa3MgICAgICAgICAgICAgICA9IEFSUkFZ X1NJWkUoc204NDUwX3Vmc19waHlfY2xrX2wpLAo+ID4gPiBAQCAtMTAzNyw2ICsxMDg5LDcgQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBxbXBfcGh5X2NmZyBzYzgyODB4cF91ZnNwaHlfY2ZnID0gewo+ ID4gPiAgIAkubGFuZXMJCQk9IDIsCj4gPiA+ICAgCS5vZmZzZXRzCQk9ICZxbXBfdWZzX29mZnNl dHMsCj4gPiA+ICsJLm1heF9zdXBwb3J0ZWRfZ2Vhcgk9IFVGU19IU19HNCwKPiA+ID4gICAJLnRi bHMgPSB7Cj4gPiA+ICAgCQkuc2VyZGVzCQk9IHNtODM1MF91ZnNwaHlfc2VyZGVzLAo+ID4gPiBA QCAtMTA1MiwxMyArMTEwNSwxNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHFtcF9waHlfY2ZnIHNj ODI4MHhwX3Vmc3BoeV9jZmcgPSB7Cj4gPiA+ICAgCQkuc2VyZGVzCQk9IHNtODM1MF91ZnNwaHlf aHNfYl9zZXJkZXMsCj4gPiA+ICAgCQkuc2VyZGVzX251bQk9IEFSUkFZX1NJWkUoc204MzUwX3Vm c3BoeV9oc19iX3NlcmRlcyksCj4gPiA+ICAgCX0sCj4gPiA+IC0JLnRibHNfaHNfZzQgPSB7Cj4g PiA+ICsJLnRibHNfaHNfb3ZlcmxheVswXSA9IHsKPiA+ID4gICAJCS50eAkJPSBzbTgzNTBfdWZz cGh5X2c0X3R4LAo+ID4gPiAgIAkJLnR4X251bQkJPSBBUlJBWV9TSVpFKHNtODM1MF91ZnNwaHlf ZzRfdHgpLAo+ID4gPiAgIAkJLnJ4CQk9IHNtODM1MF91ZnNwaHlfZzRfcngsCj4gPiA+ICAgCQku cnhfbnVtCQk9IEFSUkFZX1NJWkUoc204MzUwX3Vmc3BoeV9nNF9yeCksCj4gPiA+ICAgCQkucGNz CQk9IHNtODM1MF91ZnNwaHlfZzRfcGNzLAo+ID4gPiAgIAkJLnBjc19udW0JPSBBUlJBWV9TSVpF KHNtODM1MF91ZnNwaHlfZzRfcGNzKSwKPiA+ID4gKwkJLm1heF9nZWFyCT0gVUZTX0hTX0c0LAo+ ID4gPiAgIAl9LAo+ID4gPiAgIAkuY2xrX2xpc3QJCT0gc2RtODQ1X3Vmc19waHlfY2xrX2wsCj4g PiA+ICAgCS5udW1fY2xrcwkJPSBBUlJBWV9TSVpFKHNkbTg0NV91ZnNfcGh5X2Nsa19sKSwKPiA+ ID4gQEAgLTEwNzEsNiArMTEyNSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcW1wX3BoeV9jZmcg c2RtODQ1X3Vmc3BoeV9jZmcgPSB7Cj4gPiA+ICAgCS5sYW5lcwkJCT0gMiwKPiA+ID4gICAJLm9m ZnNldHMJCT0gJnFtcF91ZnNfb2Zmc2V0cywKPiA+ID4gKwkubWF4X3N1cHBvcnRlZF9nZWFyCT0g VUZTX0hTX0czLAo+ID4gPiAgIAkudGJscyA9IHsKPiA+ID4gICAJCS5zZXJkZXMJCT0gc2RtODQ1 X3Vmc3BoeV9zZXJkZXMsCj4gPiA+IEBAIC0xMDk5LDYgKzExNTQsNyBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IHFtcF9waHlfY2ZnIHNtNjExNV91ZnNwaHlfY2ZnID0gewo+ID4gPiAgIAkubGFuZXMJ CQk9IDEsCj4gPiA+ICAgCS5vZmZzZXRzCQk9ICZxbXBfdWZzX29mZnNldHMsCj4gPiA+ICsJLm1h eF9zdXBwb3J0ZWRfZ2Vhcgk9IFVGU19IU19HMywKPiA+ID4gICAJLnRibHMgPSB7Cj4gPiA+ICAg CQkuc2VyZGVzCQk9IHNtNjExNV91ZnNwaHlfc2VyZGVzLAo+ID4gPiBAQCAtMTEyNyw2ICsxMTgz LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBxbXBfcGh5X2NmZyBzbTcxNTBfdWZzcGh5X2NmZyA9 IHsKPiA+ID4gICAJLmxhbmVzCQkJPSAxLAo+ID4gPiAgIAkub2Zmc2V0cwkJPSAmcW1wX3Vmc19v ZmZzZXRzLAo+ID4gPiArCS5tYXhfc3VwcG9ydGVkX2dlYXIJPSBVRlNfSFNfRzMsCj4gPiA+ICAg CS50YmxzID0gewo+ID4gPiAgIAkJLnNlcmRlcwkJPSBzZG04NDVfdWZzcGh5X3NlcmRlcywKPiA+ ID4gQEAgLTExNTUsNiArMTIxMiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcW1wX3BoeV9jZmcg c204MTUwX3Vmc3BoeV9jZmcgPSB7Cj4gPiA+ICAgCS5sYW5lcwkJCT0gMiwKPiA+ID4gICAJLm9m ZnNldHMJCT0gJnFtcF91ZnNfb2Zmc2V0cywKPiA+ID4gKwkubWF4X3N1cHBvcnRlZF9nZWFyCT0g VUZTX0hTX0c0LAo+ID4gPiAgIAkudGJscyA9IHsKPiA+ID4gICAJCS5zZXJkZXMJCT0gc204MTUw X3Vmc3BoeV9zZXJkZXMsCj4gPiA+IEBAIC0xMTcwLDEzICsxMjI4LDE0IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgcW1wX3BoeV9jZmcgc204MTUwX3Vmc3BoeV9jZmcgPSB7Cj4gPiA+ICAgCQkuc2Vy ZGVzCQk9IHNtODE1MF91ZnNwaHlfaHNfYl9zZXJkZXMsCj4gPiA+ICAgCQkuc2VyZGVzX251bQk9 IEFSUkFZX1NJWkUoc204MTUwX3Vmc3BoeV9oc19iX3NlcmRlcyksCj4gPiA+ICAgCX0sCj4gPiA+ IC0JLnRibHNfaHNfZzQgPSB7Cj4gPiA+ICsJLnRibHNfaHNfb3ZlcmxheVswXSA9IHsKPiA+ID4g ICAJCS50eAkJPSBzbTgxNTBfdWZzcGh5X2hzX2c0X3R4LAo+ID4gPiAgIAkJLnR4X251bQkJPSBB UlJBWV9TSVpFKHNtODE1MF91ZnNwaHlfaHNfZzRfdHgpLAo+ID4gPiAgIAkJLnJ4CQk9IHNtODE1 MF91ZnNwaHlfaHNfZzRfcngsCj4gPiA+ICAgCQkucnhfbnVtCQk9IEFSUkFZX1NJWkUoc204MTUw X3Vmc3BoeV9oc19nNF9yeCksCj4gPiA+ICAgCQkucGNzCQk9IHNtODE1MF91ZnNwaHlfaHNfZzRf cGNzLAo+ID4gPiAgIAkJLnBjc19udW0JPSBBUlJBWV9TSVpFKHNtODE1MF91ZnNwaHlfaHNfZzRf cGNzKSwKPiA+ID4gKwkJLm1heF9nZWFyCT0gVUZTX0hTX0c0LAo+ID4gPiAgIAl9LAo+ID4gPiAg IAkuY2xrX2xpc3QJCT0gc2RtODQ1X3Vmc19waHlfY2xrX2wsCj4gPiA+ICAgCS5udW1fY2xrcwkJ PSBBUlJBWV9TSVpFKHNkbTg0NV91ZnNfcGh5X2Nsa19sKSwKPiA+ID4gQEAgLTExODksNiArMTI0 OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcW1wX3BoeV9jZmcgc204MjUwX3Vmc3BoeV9jZmcg PSB7Cj4gPiA+ICAgCS5sYW5lcwkJCT0gMiwKPiA+ID4gICAJLm9mZnNldHMJCT0gJnFtcF91ZnNf b2Zmc2V0cywKPiA+ID4gKwkubWF4X3N1cHBvcnRlZF9nZWFyCT0gVUZTX0hTX0c0LAo+ID4gPiAg IAkudGJscyA9IHsKPiA+ID4gICAJCS5zZXJkZXMJCT0gc204MTUwX3Vmc3BoeV9zZXJkZXMsCj4g PiA+IEBAIC0xMjA0LDEzICsxMjY0LDE0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcW1wX3BoeV9j Zmcgc204MjUwX3Vmc3BoeV9jZmcgPSB7Cj4gPiA+ICAgCQkuc2VyZGVzCQk9IHNtODE1MF91ZnNw aHlfaHNfYl9zZXJkZXMsCj4gPiA+ICAgCQkuc2VyZGVzX251bQk9IEFSUkFZX1NJWkUoc204MTUw X3Vmc3BoeV9oc19iX3NlcmRlcyksCj4gPiA+ICAgCX0sCj4gPiA+IC0JLnRibHNfaHNfZzQgPSB7 Cj4gPiA+ICsJLnRibHNfaHNfb3ZlcmxheVswXSA9IHsKPiA+ID4gICAJCS50eAkJPSBzbTgyNTBf dWZzcGh5X2hzX2c0X3R4LAo+ID4gPiAgIAkJLnR4X251bQkJPSBBUlJBWV9TSVpFKHNtODI1MF91 ZnNwaHlfaHNfZzRfdHgpLAo+ID4gPiAgIAkJLnJ4CQk9IHNtODI1MF91ZnNwaHlfaHNfZzRfcngs Cj4gPiA+ICAgCQkucnhfbnVtCQk9IEFSUkFZX1NJWkUoc204MjUwX3Vmc3BoeV9oc19nNF9yeCks Cj4gPiA+ICAgCQkucGNzCQk9IHNtODE1MF91ZnNwaHlfaHNfZzRfcGNzLAo+ID4gPiAgIAkJLnBj c19udW0JPSBBUlJBWV9TSVpFKHNtODE1MF91ZnNwaHlfaHNfZzRfcGNzKSwKPiA+ID4gKwkJLm1h eF9nZWFyCT0gVUZTX0hTX0c0LAo+ID4gPiAgIAl9LAo+ID4gPiAgIAkuY2xrX2xpc3QJCT0gc2Rt ODQ1X3Vmc19waHlfY2xrX2wsCj4gPiA+ICAgCS5udW1fY2xrcwkJPSBBUlJBWV9TSVpFKHNkbTg0 NV91ZnNfcGh5X2Nsa19sKSwKPiA+ID4gQEAgLTEyMjMsNiArMTI4NCw3IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgcW1wX3BoeV9jZmcgc204MzUwX3Vmc3BoeV9jZmcgPSB7Cj4gPiA+ICAgCS5sYW5l cwkJCT0gMiwKPiA+ID4gICAJLm9mZnNldHMJCT0gJnFtcF91ZnNfb2Zmc2V0cywKPiA+ID4gKwku bWF4X3N1cHBvcnRlZF9nZWFyCT0gVUZTX0hTX0c0LAo+ID4gPiAgIAkudGJscyA9IHsKPiA+ID4g ICAJCS5zZXJkZXMJCT0gc204MzUwX3Vmc3BoeV9zZXJkZXMsCj4gPiA+IEBAIC0xMjM4LDEzICsx MzAwLDE0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcW1wX3BoeV9jZmcgc204MzUwX3Vmc3BoeV9j ZmcgPSB7Cj4gPiA+ICAgCQkuc2VyZGVzCQk9IHNtODM1MF91ZnNwaHlfaHNfYl9zZXJkZXMsCj4g PiA+ICAgCQkuc2VyZGVzX251bQk9IEFSUkFZX1NJWkUoc204MzUwX3Vmc3BoeV9oc19iX3NlcmRl cyksCj4gPiA+ICAgCX0sCj4gPiA+IC0JLnRibHNfaHNfZzQgPSB7Cj4gPiA+ICsJLnRibHNfaHNf b3ZlcmxheVswXSA9IHsKPiA+ID4gICAJCS50eAkJPSBzbTgzNTBfdWZzcGh5X2c0X3R4LAo+ID4g PiAgIAkJLnR4X251bQkJPSBBUlJBWV9TSVpFKHNtODM1MF91ZnNwaHlfZzRfdHgpLAo+ID4gPiAg IAkJLnJ4CQk9IHNtODM1MF91ZnNwaHlfZzRfcngsCj4gPiA+ICAgCQkucnhfbnVtCQk9IEFSUkFZ X1NJWkUoc204MzUwX3Vmc3BoeV9nNF9yeCksCj4gPiA+ICAgCQkucGNzCQk9IHNtODM1MF91ZnNw aHlfZzRfcGNzLAo+ID4gPiAgIAkJLnBjc19udW0JPSBBUlJBWV9TSVpFKHNtODM1MF91ZnNwaHlf ZzRfcGNzKSwKPiA+ID4gKwkJLm1heF9nZWFyCT0gVUZTX0hTX0c0LAo+ID4gPiAgIAl9LAo+ID4g PiAgIAkuY2xrX2xpc3QJCT0gc2RtODQ1X3Vmc19waHlfY2xrX2wsCj4gPiA+ICAgCS5udW1fY2xr cwkJPSBBUlJBWV9TSVpFKHNkbTg0NV91ZnNfcGh5X2Nsa19sKSwKPiA+ID4gQEAgLTEyNTcsNiAr MTMyMCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcW1wX3BoeV9jZmcgc204NDUwX3Vmc3BoeV9j ZmcgPSB7Cj4gPiA+ICAgCS5sYW5lcwkJCT0gMiwKPiA+ID4gICAJLm9mZnNldHMJCT0gJnFtcF91 ZnNfb2Zmc2V0cywKPiA+ID4gKwkubWF4X3N1cHBvcnRlZF9nZWFyCT0gVUZTX0hTX0c0LAo+ID4g PiAgIAkudGJscyA9IHsKPiA+ID4gICAJCS5zZXJkZXMJCT0gc204MzUwX3Vmc3BoeV9zZXJkZXMs Cj4gPiA+IEBAIC0xMjcyLDEzICsxMzM2LDE0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcW1wX3Bo eV9jZmcgc204NDUwX3Vmc3BoeV9jZmcgPSB7Cj4gPiA+ICAgCQkuc2VyZGVzCQk9IHNtODM1MF91 ZnNwaHlfaHNfYl9zZXJkZXMsCj4gPiA+ICAgCQkuc2VyZGVzX251bQk9IEFSUkFZX1NJWkUoc204 MzUwX3Vmc3BoeV9oc19iX3NlcmRlcyksCj4gPiA+ICAgCX0sCj4gPiA+IC0JLnRibHNfaHNfZzQg PSB7Cj4gPiA+ICsJLnRibHNfaHNfb3ZlcmxheVswXSA9IHsKPiA+ID4gICAJCS50eAkJPSBzbTgz NTBfdWZzcGh5X2c0X3R4LAo+ID4gPiAgIAkJLnR4X251bQkJPSBBUlJBWV9TSVpFKHNtODM1MF91 ZnNwaHlfZzRfdHgpLAo+ID4gPiAgIAkJLnJ4CQk9IHNtODM1MF91ZnNwaHlfZzRfcngsCj4gPiA+ ICAgCQkucnhfbnVtCQk9IEFSUkFZX1NJWkUoc204MzUwX3Vmc3BoeV9nNF9yeCksCj4gPiA+ICAg CQkucGNzCQk9IHNtODM1MF91ZnNwaHlfZzRfcGNzLAo+ID4gPiAgIAkJLnBjc19udW0JPSBBUlJB WV9TSVpFKHNtODM1MF91ZnNwaHlfZzRfcGNzKSwKPiA+ID4gKwkJLm1heF9nZWFyCT0gVUZTX0hT X0c0LAo+ID4gPiAgIAl9LAo+ID4gPiAgIAkuY2xrX2xpc3QJCT0gc204NDUwX3Vmc19waHlfY2xr X2wsCj4gPiA+ICAgCS5udW1fY2xrcwkJPSBBUlJBWV9TSVpFKHNtODQ1MF91ZnNfcGh5X2Nsa19s KSwKPiA+ID4gQEAgLTEyOTEsNiArMTM1Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcW1wX3Bo eV9jZmcgc204NTUwX3Vmc3BoeV9jZmcgPSB7Cj4gPiA+ICAgCS5sYW5lcwkJCT0gMiwKPiA+ID4g ICAJLm9mZnNldHMJCT0gJnFtcF91ZnNfb2Zmc2V0c192NiwKPiA+ID4gKwkubWF4X3N1cHBvcnRl ZF9nZWFyCT0gVUZTX0hTX0c1LAo+ID4gPiAgIAkudGJscyA9IHsKPiA+ID4gICAJCS5zZXJkZXMJ CT0gc204NTUwX3Vmc3BoeV9zZXJkZXMsCj4gPiA+IEBAIC0xMzA2LDYgKzEzNzIsMjYgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBxbXBfcGh5X2NmZyBzbTg1NTBfdWZzcGh5X2NmZyA9IHsKPiA+ID4g ICAJCS5zZXJkZXMJCT0gc204NTUwX3Vmc3BoeV9oc19iX3NlcmRlcywKPiA+ID4gICAJCS5zZXJk ZXNfbnVtCT0gQVJSQVlfU0laRShzbTg1NTBfdWZzcGh5X2hzX2Jfc2VyZGVzKSwKPiA+ID4gICAJ fSwKPiA+ID4gKwkudGJsc19oc19vdmVybGF5WzBdID0gewo+ID4gPiArCQkuc2VyZGVzCQk9IHNt ODU1MF91ZnNwaHlfZzRfc2VyZGVzLAo+ID4gPiArCQkuc2VyZGVzX251bQk9IEFSUkFZX1NJWkUo c204NTUwX3Vmc3BoeV9nNF9zZXJkZXMpLAo+ID4gPiArCQkudHgJCT0gc204NTUwX3Vmc3BoeV9n NF90eCwKPiA+ID4gKwkJLnR4X251bQkJPSBBUlJBWV9TSVpFKHNtODU1MF91ZnNwaHlfZzRfdHgp LAo+ID4gPiArCQkucngJCT0gc204NTUwX3Vmc3BoeV9nNF9yeCwKPiA+ID4gKwkJLnJ4X251bQkJ PSBBUlJBWV9TSVpFKHNtODU1MF91ZnNwaHlfZzRfcngpLAo+ID4gPiArCQkucGNzCQk9IHNtODU1 MF91ZnNwaHlfZzRfcGNzLAo+ID4gPiArCQkucGNzX251bQk9IEFSUkFZX1NJWkUoc204NTUwX3Vm c3BoeV9nNF9wY3MpLAo+ID4gPiArCQkubWF4X2dlYXIJPSBVRlNfSFNfRzQsCj4gPiA+ICsJfSwK PiA+ID4gKwkudGJsc19oc19vdmVybGF5WzFdID0gewo+ID4gPiArCQkuc2VyZGVzCQk9IHNtODU1 MF91ZnNwaHlfZzVfc2VyZGVzLAo+ID4gPiArCQkuc2VyZGVzX251bQk9IEFSUkFZX1NJWkUoc204 NTUwX3Vmc3BoeV9nNV9zZXJkZXMpLAo+ID4gPiArCQkucngJCT0gc204NTUwX3Vmc3BoeV9nNV9y eCwKPiA+ID4gKwkJLnJ4X251bQkJPSBBUlJBWV9TSVpFKHNtODU1MF91ZnNwaHlfZzVfcngpLAo+ ID4gPiArCQkucGNzCQk9IHNtODU1MF91ZnNwaHlfZzVfcGNzLAo+ID4gPiArCQkucGNzX251bQk9 IEFSUkFZX1NJWkUoc204NTUwX3Vmc3BoeV9nNV9wY3MpLAo+ID4gPiArCQkubWF4X2dlYXIJPSBV RlNfSFNfRzUsCj4gPiA+ICsJfSwKPiA+ID4gICAJLmNsa19saXN0CQk9IHNkbTg0NV91ZnNfcGh5 X2Nsa19sLAo+ID4gPiAgIAkubnVtX2Nsa3MJCT0gQVJSQVlfU0laRShzZG04NDVfdWZzX3BoeV9j bGtfbCksCj4gPiA+ICAgCS52cmVnX2xpc3QJCT0gcW1wX3BoeV92cmVnX2wsCj4gPiA+IEBAIC0x MzY4LDE3ICsxNDU0LDU1IEBAIHN0YXRpYyB2b2lkIHFtcF91ZnNfcGNzX2luaXQoc3RydWN0IHFt cF91ZnMgKnFtcCwgY29uc3Qgc3RydWN0IHFtcF9waHlfY2ZnX3RibHMKPiA+ID4gICAJcW1wX3Vm c19jb25maWd1cmUocGNzLCB0YmxzLT5wY3MsIHRibHMtPnBjc19udW0pOwo+ID4gPiAgIH0KPiA+ ID4gK3N0YXRpYyBpbnQgcW1wX3Vmc19nZXRfZ2Vhcl9vdmVybGF5KHN0cnVjdCBxbXBfdWZzICpx bXAsIGNvbnN0IHN0cnVjdCBxbXBfcGh5X2NmZyAqY2ZnKQo+ID4gPiArewo+ID4gPiArCXUzMiBt YXhfZ2VhciwgZmxvb3JfbWF4X2dlYXIgPSBjZmctPm1heF9zdXBwb3J0ZWRfZ2VhcjsKPiA+ID4g KwlpbnQgaSA9IE5VTV9PVkVSTEFZIC0gMTsKPiA+IAo+ID4gSnVzdCB1c2UgaSBkaXJlY3RseSBp biB0aGUgZm9yIGxvb3AuIEFsc28sIHBsZWFzZSByZW5hbWUgImkiIHdpdGggImlkeCIgdG8gbWFr ZQo+ID4gaXQgY2xlYXIuCj4gCj4gT0sKPiAKPiA+IAo+ID4gPiArCWludCByZXQgPSAtRUlOVkFM Owo+ID4gPiArCj4gPiA+ICsJZm9yICg7IGkgPj0gMDsgaSAtLSkgewo+ID4gCj4gPiBpLS0KPiA+ IAo+ID4gPiArCQltYXhfZ2VhciA9IGNmZy0+dGJsc19oc19vdmVybGF5W2ldLm1heF9nZWFyOwo+ ID4gPiArCj4gPiA+ICsJCWlmIChtYXhfZ2VhciA9PSAwKQo+ID4gPiArCQkJY29udGludWU7Cj4g PiAKPiA+IFlvdSBhcmUgc2V0dGluZyBtYXhfZ2VhciBldmVuIGZvciB0YXJnZXRzIHdpdGggYSBz aW5nbGUgb3ZlcmxheS4gSG93IGNhbiB0aGlzCj4gPiBiZWNvbWUgMD8KPiAKPiBTYXkgODU1MCBo YXMgdHdvIG92ZXJsYXlzLCA4NDUwIGhhcyBvbmUgb3ZlcmxheS4gV2UgYXJlIHN3ZWVwaW5nIGFs bAo+IG92ZXJsYXlzIGFzIE5VTV9PVkVSTEFZID09IDIsIHNvIGZvciA4NDUwLCB0aGVyZSBpcyBv bmUgb3ZlcmxheSBpbml0aWFsaXplZCwKPiBhbm90aGVyIG9uZSBub3QgaW5pdGlhbGl6ZWQgKG1h eF9nZWFyID09IDApLCB3ZSBhcmUgc2tpcHBpbmcgdGhlIG9uZSB3aGljaAo+IGlzIG5vdCBpbml0 aWFsaXplZC4KPiAKClRoaXMgaXMgY29uZnVzaW5nIGF0IGl0cyBiZXN0IDopIFBsZWFzZSBjaGVj ayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiB0aGUgYWN0dWFsCnRhYmxlIGluc3RlYWQuIExpa2UsCgoJ Zm9yIChpZHggPSBOVU1fT1ZFUkxBWSAtIDE7IGkgPj0gMCwgaS0tKSB7CgoJCS8qIFNraXAgaWYg dGhlIHRhYmxlIGlzIG5vdCBhdmFpbGFibGUgKi8KCQlpZiAoIWNmZy0+dGJsc19oc19vdmVybGF5 W2ldLnNlcmRlcykKCQkJY29udGludWU7CgoJCS4uLgoJfQoKPiA+IAo+ID4gPiArCj4gPiA+ICsJ CS8qIERpcmVjdCBtYXRjaGluZywgYmFpbCAqLwo+ID4gPiArCQlpZiAocW1wLT5zdWJtb2RlID09 IG1heF9nZWFyKQo+ID4gPiArCQkJcmV0dXJuIGk7Cj4gPiA+ICsKPiA+ID4gKwkJLyogSWYgbm8g ZGlyZWN0IG1hdGNoaW5nLCB0aGUgbG93ZXN0IGdlYXIgaXMgdGhlIGJlc3QgbWF0Y2hpbmcgKi8K PiA+ID4gKwkJaWYgKG1heF9nZWFyIDwgZmxvb3JfbWF4X2dlYXIpIHsKPiA+ID4gKwkJCXJldCA9 IGk7Cj4gPiA+ICsJCQlmbG9vcl9tYXhfZ2VhciA9IG1heF9nZWFyOwo+ID4gPiArCQl9Cj4gPiA+ ICsJfQo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIHJldDsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiAg IHN0YXRpYyB2b2lkIHFtcF91ZnNfaW5pdF9yZWdpc3RlcnMoc3RydWN0IHFtcF91ZnMgKnFtcCwg Y29uc3Qgc3RydWN0IHFtcF9waHlfY2ZnICpjZmcpCj4gPiA+ICAgewo+ID4gPiArCWludCBpOwo+ ID4gPiArCWJvb2wgYXBwbHlfb3ZlcmxheSA9IGZhbHNlOwo+ID4gPiArCj4gPiA+ICsJaSA9IHFt cF91ZnNfZ2V0X2dlYXJfb3ZlcmxheShxbXAsIGNmZyk7Cj4gPiA+ICsJaWYgKGkgPj0gMCkKPiA+ ID4gKwkJYXBwbHlfb3ZlcmxheSA9IHRydWU7Cj4gPiAKPiA+IEhvdyBhYm91dD8KPiA+IAo+ID4g YGBgCj4gPiAJaW50IGlkeDsKPiA+IAo+ID4gCWlkeCA9IHFtcF91ZnNfZ2V0X2dlYXJfb3Zlcmxh eShxbXAsIGNmZyk7Cj4gPiAKPiA+IAlxbXBfdWZzX3NlcmRlc19pbml0KHFtcCwgJmNmZy0+dGJs cyk7Cj4gPiAJcW1wX3Vmc19sYW5lc19pbml0KHFtcCwgJmNmZy0+dGJscyk7Cj4gPiAJLi4uCj4g PiAKPiA+IAlpZiAoaWR4ID49IDApIHsKPiA+IAkJcW1wX3Vmc19zZXJkZXNfaW5pdChxbXAsICZj ZmctPnRibHNfaHNfb3ZlcmxheVtpZHhdKTsKPiA+IAkJcW1wX3Vmc19sYW5lc19pbml0KHFtcCwg JmNmZy0+dGJsc19oc19vdmVybGF5W2lkeF0pOwo+ID4gCQkuLi4KPiA+IAl9Cj4gPiBgYGAKPiA+ IAo+ID4gU2luY2UgdGhlIG9yZGVyaW5nIGRvZXNuJ3QgbWF0dGVyIGZvciBpbml0IHNlcXVlbmNl LCB5b3UgY2FuIHByb2dyYW0gdGhlIG92ZXJsYXkKPiA+IHRhYmxlcyB1bmRlciBhIHNpbmdsZSBj b25kaXRpb24uCj4gCj4gV2UgY2FuIGRvIHRoYXQsIGJ1dCB3ZSBuZWVkIHRvIGJlIGNhcmVmdWwu IFdoZW4gSSBzYXkgKGluIG15IHByZXZpb3VzIHJlcGx5KQo+IHRoZSBvcmRlcmluZyBkb2VzIG5v dCBtYXR0ZXIsIHRoYXQgc2F5aW5nIGlzIGZyb20gdGhlIFVGUyBQSFkgSFBHIGRvYy4KPiBIb3dl dmVyLCBpbiBTVyBpbXBsZW1lbnRhdGlvbiwgdGhlICd0YmxzX2hzX2InIGlzIGFjdHVhbGx5IG92 ZXJ3cml0aW5nIG9uZQo+IENPTV9WQ09fVFVORV9NQVAgcmVnaXN0ZXIsIHRoZSBzYW1lIHJlZ2lz dGVyIGlzIGFsc28gcHJvZ3JhbW1lZCBieSBjb21tb24KPiB0YWJsZSBvciBvdmVybGF5IHRhYmxl LiBTbyBxbXBfdWZzX3NlcmRlc19pbml0KHFtcCwgJmNmZy0+dGJsc19oc19iKSBzaG91bGQKPiBj b21lIGFmdGVyIG92ZXJsYXlzLgo+IAoKVGhlbiB5b3UgY2FuIHByb2dyYW0gdGJsc19oc19iIGFm dGVyIG92ZXJsYXkgdGFibGVzLiBXb3VsZG4ndCB0aGF0IHdvcms/CgotIE1hbmkKCj4gVGhhbmtz LAo+IENhbiBHdW8uCj4gCj4gPiAKPiA+IC0gTWFuaQo+ID4gCgotLSAK4K6u4K6j4K6/4K614K6j 4K+N4K6j4K6p4K+NIOCumuCupOCuvuCumuCuv+CuteCuruCvjQoKLS0gCmxpbnV4LXBoeSBtYWls aW5nIGxpc3QKbGludXgtcGh5QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cHM6Ly9saXN0cy5pbmZy YWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcGh5Cg==