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 5E881C4332F for ; Fri, 16 Dec 2022 13:16:15 +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-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:References:Cc:To:From:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=CxbrOkZ96kRiyRoB4MR97PQa890qESTvlfi6GdbNKOQ=; b=u86GLrdJWI2i6U rKPbGyqrpxGXiHFoQVowx2D2UwRNEOcfjPm6Nbk+QFz6i8XvZHk+8UA9D+lzL+qWOgeQtsEgcSYRa lbcgh/7NLgrC4AmoopJb92QnKRWV6NXo/3nE9qUXZZoU3AWjcphzwemps4uDqZqfencQafdrFNOYQ iJ+Gznx3od/okXefBU4jRdrIUmswc2COQaK1/aXN80l1wpB4sKL9J3FaRRFla6WGEXOjBtfSP+sqW ECIDTAY/TRkv5XGzixFAOR2GDI3bm2lW2kyVQyD5bpNN8aWeeHDmUC4g0gSGGSom527jX3OW4D5ux 7pCsCCqoE/Duk7AvExOw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1p6AYU-00FDwx-LK; Fri, 16 Dec 2022 13:15:14 +0000 Received: from madras.collabora.co.uk ([46.235.227.172]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1p6AYQ-00FDtn-KQ; Fri, 16 Dec 2022 13:15:13 +0000 Received: from [192.168.1.100] (2-237-20-237.ip236.fastwebnet.it [2.237.20.237]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: kholk11) by madras.collabora.co.uk (Postfix) with ESMTPSA id 547116602B74; Fri, 16 Dec 2022 13:15:05 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1671196505; bh=wSmAEV2Yr7g3L5AlKf7mAMuXi783xNJnZoVshXL2ULA=; h=Date:Subject:From:To:Cc:References:In-Reply-To:From; b=mMuXLz2JOVOvt191HXtQ4xa7pDUv4vxopynBy6zV26iVABSRZRrf0g8kpdvfTVH1T stwZVlc6hn1XVpJvlcLUF8AgksAIP38eQedqSLWCaTCdguY8PCpOjO3zXbXzWZ1ooC 8QNrbjps+fgKHS9esUGZvUNulx9Pxo8gAdg6tDlu32DFQ4/8tH2f57BIbOWTeJsaFK LJz7LkRC4t+lYf2oLMjzRS+41HOY3hQL48OeMR77zXNBCu3qSdQhacWV2qFtA9hHY5 wuCrRmdy9HsSH8c9Ly39EXMBODwDO7Z4k2YRAjuh2kcTUj/i0ybqm9xtsfKgftFJV7 VkQEjxS2Wba7g== Message-ID: <732e4a1d-8008-072d-cedb-c6859cbfdf98@collabora.com> Date: Fri, 16 Dec 2022 14:15:02 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 Subject: Re: [RESEND PATCH v3] soc: mediatek: Introduce mediatek-regulator-coupler driver Content-Language: en-US From: AngeloGioacchino Del Regno To: Matthias Brugger Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, wenst@chromium.org, alyssa.rosenzweig@collabora.com, nfraprado@collabora.com, dmitry.osipenko@collabora.com References: <20221006115816.66853-1-angelogioacchino.delregno@collabora.com> In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221216_051511_038523_0CD2D1B9 X-CRM114-Status: GOOD ( 44.55 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SWwgMjEvMTEvMjIgMTM6MDEsIEFuZ2Vsb0dpb2FjY2hpbm8gRGVsIFJlZ25vIGhhIHNjcml0dG86 Cj4gSWwgMjEvMTEvMjIgMTI6NDQsIE1hdHRoaWFzIEJydWdnZXIgaGEgc2NyaXR0bzoKPj4KPj4K Pj4gT24gMDYvMTAvMjAyMiAxMzo1OCwgQW5nZWxvR2lvYWNjaGlubyBEZWwgUmVnbm8gd3JvdGU6 Cj4+PiBUaGlzIGRyaXZlciBjdXJyZW50bHkgZGVhbHMgd2l0aCBHUFUtU1JBTSByZWd1bGF0b3Ig Y291cGxpbmcsIGVuc3VyaW5nCj4+PiB0aGF0IHRoZSBTUkFNIHZvbHRhZ2UgaXMgYWx3YXlzIGJl dHdlZW4gYSBzcGVjaWZpYyByYW5nZSBvZiBkaXN0YW5jZSB0bwo+Pj4gdGhlIEdQVSB2b2x0YWdl LCBkZXBlbmRpbmcgb24gdGhlIFNvQywgbmVjZXNzYXJ5IGluIG9yZGVyIHRvIGFjaGlldmUKPj4+ IHN5c3RlbSBzdGFiaWxpdHkgYWNyb3NzIHRoZSBmdWxsIHJhbmdlIG9mIHN1cHBvcnRlZCBHUFUg ZnJlcXVlbmNpZXMuCj4+Pgo+Pj4gU2lnbmVkLW9mZi1ieTogQW5nZWxvR2lvYWNjaGlubyBEZWwg UmVnbm8gPGFuZ2Vsb2dpb2FjY2hpbm8uZGVscmVnbm9AY29sbGFib3JhLmNvbT4KPj4+IFJldmll d2VkLWJ5OiBEbWl0cnkgT3NpcGVua28gPGRtaXRyeS5vc2lwZW5rb0Bjb2xsYWJvcmEuY29tPgo+ Pj4gLS0tCj4+Pgo+Pj4gVGhpcyBkcml2ZXIgd2FzIHN1Y2Nlc3NmdWxseSB0ZXN0ZWQgZm9yIG1v cmUgdGhhbiAzIG1vbnRocy4KPj4+IEdQVSBEVkZTIHdvcmtzIGNvcnJlY3RseSB3aXRoIG5vIHN0 YWJpbGl0eSBpc3N1ZXMuCj4+Pgo+Pj4gQ2hhbmdlcyBpbiBSRVNFTkQsdjM6Cj4+PiDCoCBSZWJh c2VkIG92ZXIgbmV4dC0yMDIyMTAwNQo+Pj4KPj4+IENoYW5nZXMgaW4gdjM6Cj4+PiDCoCAtIEFk ZGVkIGJyYWNlcyB0byBlbHNlLWlmIGJyYW5jaAo+Pj4KPj4+IENoYW5nZXMgaW4gdjI6Cj4+PiDC oCAtIEFkZGVkIGNoZWNrIGZvciBuX2NvdXBsZWQKPj4+IMKgIC0gQWRkZWQgY2hlY2sgZm9yIHZn cHUgdG8gZW5mb3JjZSBhdHRhY2hpbmcgdG8gdmdwdTwtPnNyYW0gY291cGxpbmcgb25seQo+Pj4K Pj4+IENvbnRleHQ6Cj4+PiBUaGlzIGRyaXZlciBpcyB0aGUgbGFzdCBvZiB0aGUgcGllY2VzIG9m IGEgYmlnZ2VyIHB1enpsZSwgYWltaW5nIHRvIGZpbmFsbHkKPj4+IGVuYWJsZSBEeW5hbWljIFZv bHRhZ2UvRnJlcXVlbmN5IFNjYWxpbmcgZm9yIE1hbGkgR1BVcyBmb3VuZCBvbiBNZWRpYVRlawo+ Pj4gU29DcyBvbiB0aGUgZnVsbHkgb3BlbiBzb3VyY2UgZ3JhcGhpY3Mgc3RhY2sgKFBhbmZyb3N0 IGRyaXZlcikuCj4+Pgo+Pj4gTm8gZGV2aWNldHJlZSBiaW5kaW5ncyBhcmUgcHJvdmlkZWQgYmVj YXVzZSB0aGlzIGRvZXMgbm90IHJlcXVpcmUgYW55Cj4+PiBkcml2ZXItc3BlY2lmaWMgYmluZGlu ZyBhdCBhbGwuCj4+Pgo+Pj4gTGFzdCBidXQgbm90IGxlYXN0OiBpdCB3YXMgY2hvc2VuIHRvIGhh dmUgdGhpcyBkcml2ZXIgZW5hYmxlZCBmb3IKPj4+ICggQVJDSF9NRURJQVRFSyAmJiBSRUdVTEFU T1IgKSB3aXRob3V0IHJlYWxseSBnaXZpbmcgYSBmcmVlIGNvbmZpZ3VyYXRpb24KPj4+IGNob2lj ZSBiZWNhdXNlLCBvbmNlIHRoZSBEVkZTIG1lY2hhbmlzbSB3aWxsIGJlIGZ1bGx5IHdvcmtpbmcs IHVzaW5nIG9uZQo+Pj4gb2YgdGhlIGxpc3RlZCBNZWRpYVRlayBTb0NzICp3aXRob3V0KiB0aGlz IGNvdXBsaW5nIG1lY2hhbmlzbSAqd2lsbCogbGVhZAo+Pj4gdG8gdW5zdGFiaWxpdGllcyBhbmQg c3lzdGVtIGNyYXNoZXMuCj4+PiBGb3IgQ09NUElMRV9URVNULCBjaG9pY2UgaXMgZ2l2ZW4gZm9y IG9idmlvdXMgcmVhc29ucy4KPj4+Cj4+PiDCoCBkcml2ZXJzL3NvYy9tZWRpYXRlay9LY29uZmln wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgNSArCj4+PiDCoCBkcml2ZXJz L3NvYy9tZWRpYXRlay9NYWtlZmlsZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDC oCAxICsKPj4+IMKgIGRyaXZlcnMvc29jL21lZGlhdGVrL210ay1yZWd1bGF0b3ItY291cGxlci5j IHwgMTU5ICsrKysrKysrKysrKysrKysrKysKPj4+IMKgIDMgZmlsZXMgY2hhbmdlZCwgMTY1IGlu c2VydGlvbnMoKykKPj4+IMKgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3NvYy9tZWRpYXRl ay9tdGstcmVndWxhdG9yLWNvdXBsZXIuYwo+Pj4KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3Nv Yy9tZWRpYXRlay9LY29uZmlnIGIvZHJpdmVycy9zb2MvbWVkaWF0ZWsvS2NvbmZpZwo+Pj4gaW5k ZXggNDBkMGNjNjAwY2FlLi4zMGI1YWZjMGU1MWQgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL3Nv Yy9tZWRpYXRlay9LY29uZmlnCj4+PiArKysgYi9kcml2ZXJzL3NvYy9tZWRpYXRlay9LY29uZmln Cj4+PiBAQCAtNDQsNiArNDQsMTEgQEAgY29uZmlnIE1US19QTUlDX1dSQVAKPj4+IMKgwqDCoMKg wqDCoMKgIG9uIGRpZmZlcmVudCBNZWRpYVRlayBTb0NzLiBUaGUgUE1JQyB3cmFwcGVyIGlzIGEg cHJvcHJpZXRhcnkKPj4+IMKgwqDCoMKgwqDCoMKgIGhhcmR3YXJlIHRvIGNvbm5lY3QgdGhlIFBN SUMuCj4+PiArY29uZmlnIE1US19SRUdVTEFUT1JfQ09VUExFUgo+Pj4gK8KgwqDCoCBib29sICJN ZWRpYVRlayBTb0MgUmVndWxhdG9yIENvdXBsZXIiIGlmIENPTVBJTEVfVEVTVAo+Pj4gK8KgwqDC oCBkZWZhdWx0IEFSQ0hfTUVESUFURUsKPj4+ICvCoMKgwqAgZGVwZW5kcyBvbiBSRUdVTEFUT1IK Pj4+ICsKPj4+IMKgIGNvbmZpZyBNVEtfU0NQU1lTCj4+PiDCoMKgwqDCoMKgIGJvb2wgIk1lZGlh VGVrIFNDUFNZUyBTdXBwb3J0Igo+Pj4gwqDCoMKgwqDCoCBkZWZhdWx0IEFSQ0hfTUVESUFURUsK Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3NvYy9tZWRpYXRlay9NYWtlZmlsZSBiL2RyaXZlcnMv c29jL21lZGlhdGVrL01ha2VmaWxlCj4+PiBpbmRleCAwZTllNzAzYzkzMWEuLjhjMGRkYWNiY2Rl OCAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvc29jL21lZGlhdGVrL01ha2VmaWxlCj4+PiArKysg Yi9kcml2ZXJzL3NvYy9tZWRpYXRlay9NYWtlZmlsZQo+Pj4gQEAgLTMsNiArMyw3IEBAIG9iai0k KENPTkZJR19NVEtfQ01EUSkgKz0gbXRrLWNtZHEtaGVscGVyLm8KPj4+IMKgIG9iai0kKENPTkZJ R19NVEtfREVWQVBDKSArPSBtdGstZGV2YXBjLm8KPj4+IMKgIG9iai0kKENPTkZJR19NVEtfSU5G UkFDRkcpICs9IG10ay1pbmZyYWNmZy5vCj4+PiDCoCBvYmotJChDT05GSUdfTVRLX1BNSUNfV1JB UCkgKz0gbXRrLXBtaWMtd3JhcC5vCj4+PiArb2JqLSQoQ09ORklHX01US19SRUdVTEFUT1JfQ09V UExFUikgKz0gbXRrLXJlZ3VsYXRvci1jb3VwbGVyLm8KPj4+IMKgIG9iai0kKENPTkZJR19NVEtf U0NQU1lTKSArPSBtdGstc2Nwc3lzLm8KPj4+IMKgIG9iai0kKENPTkZJR19NVEtfU0NQU1lTX1BN X0RPTUFJTlMpICs9IG10ay1wbS1kb21haW5zLm8KPj4+IMKgIG9iai0kKENPTkZJR19NVEtfTU1T WVMpICs9IG10ay1tbXN5cy5vCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zb2MvbWVkaWF0ZWsv bXRrLXJlZ3VsYXRvci1jb3VwbGVyLmMgCj4+PiBiL2RyaXZlcnMvc29jL21lZGlhdGVrL210ay1y ZWd1bGF0b3ItY291cGxlci5jCj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4gaW5kZXggMDAw MDAwMDAwMDAwLi5hZDJlZDQyYWE2OTcKPj4+IC0tLSAvZGV2L251bGwKPj4+ICsrKyBiL2RyaXZl cnMvc29jL21lZGlhdGVrL210ay1yZWd1bGF0b3ItY291cGxlci5jCj4+PiBAQCAtMCwwICsxLDE1 OSBAQAo+Pj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKPj4+ICsv Kgo+Pj4gKyAqIFZvbHRhZ2UgcmVndWxhdG9ycyBjb3VwbGVyIGZvciBNZWRpYVRlayBTb0NzCj4+ PiArICoKPj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQ29sbGFib3JhLCBMdGQuCj4+PiArICog QXV0aG9yOiBBbmdlbG9HaW9hY2NoaW5vIERlbCBSZWdubyA8YW5nZWxvZ2lvYWNjaGluby5kZWxy ZWdub0Bjb2xsYWJvcmEuY29tPgo+Pj4gKyAqLwo+Pj4gKwo+Pj4gKyNkZWZpbmUgcHJfZm10KGZt dCkgS0JVSUxEX01PRE5BTUUgIjogIiBmbXQKPj4+ICsKPj4+ICsjaW5jbHVkZSA8bGludXgvaW5p dC5oPgo+Pj4gKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KPj4+ICsjaW5jbHVkZSA8bGludXgv b2YuaD4KPj4+ICsjaW5jbHVkZSA8bGludXgvcmVndWxhdG9yL2NvdXBsZXIuaD4KPj4+ICsjaW5j bHVkZSA8bGludXgvcmVndWxhdG9yL2RyaXZlci5oPgo+Pj4gKyNpbmNsdWRlIDxsaW51eC9yZWd1 bGF0b3IvbWFjaGluZS5oPgo+Pj4gKyNpbmNsdWRlIDxsaW51eC9zdXNwZW5kLmg+Cj4+PiArCj4+ PiArI2RlZmluZSB0b19tZWRpYXRla19jb3VwbGVyKHgpwqDCoMKgIGNvbnRhaW5lcl9vZih4LCBz dHJ1Y3QgCj4+PiBtZWRpYXRla19yZWd1bGF0b3JfY291cGxlciwgY291cGxlcikKPj4+ICsKPj4+ ICtzdHJ1Y3QgbWVkaWF0ZWtfcmVndWxhdG9yX2NvdXBsZXIgewo+Pj4gK8KgwqDCoCBzdHJ1Y3Qg cmVndWxhdG9yX2NvdXBsZXIgY291cGxlcjsKPj4+ICvCoMKgwqAgc3RydWN0IHJlZ3VsYXRvcl9k ZXYgKnZzcmFtX3JkZXY7Cj4+PiArfTsKPj4+ICsKPj4+ICsvKgo+Pj4gKyAqIFdlIGN1cnJlbnRs eSBzdXBwb3J0IG9ubHkgY291cGxlcyBvZiBub3QgbW9yZSB0aGFuIHR3byB2cmVncyBhbmQKPj4+ ICsgKiBtb2RpZnkgdGhlIHZzcmFtIHZvbHRhZ2Ugb25seSB3aGVuIGNoYW5naW5nIHZvbHRhZ2Ug b2YgdmdwdS4KPj4+ICsgKgo+Pj4gKyAqIFRoaXMgZnVuY3Rpb24gaXMgbGltaXRlZCB0byB0aGUg R1BVPC0+U1JBTSB2b2x0YWdlcyByZWxhdGlvbnNoaXBzLgo+Pj4gKyAqLwo+Pj4gK3N0YXRpYyBp bnQgbWVkaWF0ZWtfcmVndWxhdG9yX2JhbGFuY2Vfdm9sdGFnZShzdHJ1Y3QgcmVndWxhdG9yX2Nv dXBsZXIgKmNvdXBsZXIsCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc3RydWN0IHJlZ3VsYXRvcl9kZXYgKnJkZXYsCj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3VzcGVuZF9zdGF0ZV90 IHN0YXRlKQo+Pj4gK3sKPj4+ICvCoMKgwqAgc3RydWN0IG1lZGlhdGVrX3JlZ3VsYXRvcl9jb3Vw bGVyICptcmMgPSB0b19tZWRpYXRla19jb3VwbGVyKGNvdXBsZXIpOwo+Pj4gK8KgwqDCoCBpbnQg bWF4X3NwcmVhZCA9IHJkZXYtPmNvbnN0cmFpbnRzLT5tYXhfc3ByZWFkWzBdOwo+Pj4gK8KgwqDC oCBpbnQgdnNyYW1fbWluX3VWID0gbXJjLT52c3JhbV9yZGV2LT5jb25zdHJhaW50cy0+bWluX3VW Owo+Pj4gK8KgwqDCoCBpbnQgdnNyYW1fbWF4X3VWID0gbXJjLT52c3JhbV9yZGV2LT5jb25zdHJh aW50cy0+bWF4X3VWOwo+Pj4gK8KgwqDCoCBpbnQgdnNyYW1fdGFyZ2V0X21pbl91ViwgdnNyYW1f dGFyZ2V0X21heF91VjsKPj4+ICvCoMKgwqAgaW50IG1pbl91ViA9IDA7Cj4+PiArwqDCoMKgIGlu dCBtYXhfdVYgPSBJTlRfTUFYOwo+Pj4gK8KgwqDCoCBpbnQgcmV0Owo+Pj4gKwo+Pj4gK8KgwqDC oCAvKgo+Pj4gK8KgwqDCoMKgICogSWYgdGhlIHRhcmdldCBkZXZpY2UgaXMgb24sIHNldHRpbmcg dGhlIFNSQU0gdm9sdGFnZSBkaXJlY3RseQo+Pj4gK8KgwqDCoMKgICogaXMgbm90IHN1cHBvcnRl ZCBhcyBpdCBzY2FsZXMgdGhyb3VnaCBpdHMgY291cGxlZCBzdXBwbHkgdm9sdGFnZS4KPj4+ICvC oMKgwqDCoCAqCj4+PiArwqDCoMKgwqAgKiBBbiBleGNlcHRpb24gaXMgbWFkZSBpbiBjYXNlIHRo ZSB1c2VfY291bnQgaXMgemVybzogdGhpcyBtZWFucwo+Pj4gK8KgwqDCoMKgICogdGhhdCB0aGlz IGlzIHRoZSBmaXJzdCB0aW1lIHdlIHBvd2VyIHVwIHRoZSBTUkFNIHJlZ3VsYXRvciwgd2hpY2gK Pj4+ICvCoMKgwqDCoCAqIGltcGxpZXMgdGhhdCB0aGUgdGFyZ2V0IGRldmljZSBoYXMgeWV0IHRv IHBlcmZvcm0gaW5pdGlhbGl6YXRpb24KPj4+ICvCoMKgwqDCoCAqIGFuZCBzZXR0aW5nIGEgdm9s dGFnZSBhdCB0aGF0IHRpbWUgaXMgaGFybWxlc3MuCj4+PiArwqDCoMKgwqAgKi8KPj4+ICvCoMKg wqAgaWYgKHJkZXYgPT0gbXJjLT52c3JhbV9yZGV2KSB7Cj4+PiArwqDCoMKgwqDCoMKgwqAgaWYg KHJkZXYtPnVzZV9jb3VudCA9PSAwKQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJu IHJlZ3VsYXRvcl9kb19iYWxhbmNlX3ZvbHRhZ2UocmRldiwgc3RhdGUsIHRydWUpOwo+Pj4gKwo+ Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRVBFUk07Cj4+PiArwqDCoMKgIH0KPj4+ICsKPj4+ ICvCoMKgwqAgcmV0ID0gcmVndWxhdG9yX2NoZWNrX2NvbnN1bWVycyhyZGV2LCAmbWluX3VWLCAm bWF4X3VWLCBzdGF0ZSk7Cj4+PiArwqDCoMKgIGlmIChyZXQgPCAwKQo+Pj4gK8KgwqDCoMKgwqDC oMKgIHJldHVybiByZXQ7Cj4+PiArCj4+PiArwqDCoMKgIGlmIChtaW5fdVYgPT0gMCkgewo+Pj4g K8KgwqDCoMKgwqDCoMKgIHJldCA9IHJlZ3VsYXRvcl9nZXRfdm9sdGFnZV9yZGV2KHJkZXYpOwo+ Pj4gK8KgwqDCoMKgwqDCoMKgIGlmIChyZXQgPCAwKQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcmV0dXJuIHJldDsKPj4+ICvCoMKgwqDCoMKgwqDCoCBtaW5fdVYgPSByZXQ7Cj4+PiArwqDC oMKgIH0KPj4+ICsKPj4+ICvCoMKgwqAgcmV0ID0gcmVndWxhdG9yX2NoZWNrX3ZvbHRhZ2UocmRl diwgJm1pbl91ViwgJm1heF91Vik7Cj4+PiArwqDCoMKgIGlmIChyZXQgPCAwKQo+Pj4gK8KgwqDC oMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+PiArCj4+PiArwqDCoMKgIC8qCj4+PiArwqDCoMKgwqAg KiBJZiB3ZSdyZSBhc2tlZCB0byBzZXQgYSB2b2x0YWdlIGxlc3MgdGhhbiBWU1JBTSBtaW5fdVYs IHNldAo+Pj4gK8KgwqDCoMKgICogdGhlIG1pbmltdW0gYWxsb3dlZCB2b2x0YWdlIG9uIFZTUkFN LCBhcyBpbiB0aGlzIGNhc2UgaXQgaXMKPj4+ICvCoMKgwqDCoCAqIHNhZmUgdG8gaWdub3JlIHRo ZSBtYXhfc3ByZWFkIHBhcmFtZXRlci4KPj4+ICvCoMKgwqDCoCAqLwo+Pj4gK8KgwqDCoCB2c3Jh bV90YXJnZXRfbWluX3VWID0gbWF4KHZzcmFtX21pbl91ViwgbWluX3VWICsgbWF4X3NwcmVhZCk7 Cj4+PiArwqDCoMKgIHZzcmFtX3RhcmdldF9tYXhfdVYgPSBtaW4odnNyYW1fbWF4X3VWLCB2c3Jh bV90YXJnZXRfbWluX3VWICsgbWF4X3NwcmVhZCk7Cj4+PiArCj4+PiArwqDCoMKgIC8qIE1ha2Ug c3VyZSB3ZSdyZSBub3Qgb3V0IG9mIHJhbmdlICovCj4+PiArwqDCoMKgIHZzcmFtX3RhcmdldF9t aW5fdVYgPSBtaW4odnNyYW1fdGFyZ2V0X21pbl91ViwgdnNyYW1fbWF4X3VWKTsKPj4+ICsKPj4+ ICvCoMKgwqAgcHJfZGVidWcoIlNldHRpbmcgdm9sdGFnZSAlZC0lZHVWIG9uICVzIChtaW51ViAl ZClcbiIsCj4+PiArwqDCoMKgwqDCoMKgwqDCoCB2c3JhbV90YXJnZXRfbWluX3VWLCB2c3JhbV90 YXJnZXRfbWF4X3VWLAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqAgcmRldl9nZXRfbmFtZShtcmMtPnZz cmFtX3JkZXYpLCBtaW5fdVYpOwo+Pj4gKwo+Pj4gK8KgwqDCoCByZXQgPSByZWd1bGF0b3Jfc2V0 X3ZvbHRhZ2VfcmRldihtcmMtPnZzcmFtX3JkZXYsIHZzcmFtX3RhcmdldF9taW5fdVYsCj4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2c3JhbV90YXJnZXRfbWF4 X3VWLCBzdGF0ZSk7Cj4+PiArwqDCoMKgIGlmIChyZXQpCj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0 dXJuIHJldDsKPj4+ICsKPj4+ICvCoMKgwqAgLyogVGhlIHNyYW0gdm9sdGFnZSBpcyBub3cgYmFs YW5jZWQ6IHVwZGF0ZSB0aGUgdGFyZ2V0IHZyZWcgdm9sdGFnZSAqLwo+Pj4gK8KgwqDCoCByZXR1 cm4gcmVndWxhdG9yX2RvX2JhbGFuY2Vfdm9sdGFnZShyZGV2LCBzdGF0ZSwgdHJ1ZSk7Cj4+PiAr fQo+Pj4gKwo+Pj4gK3N0YXRpYyBpbnQgbWVkaWF0ZWtfcmVndWxhdG9yX2F0dGFjaChzdHJ1Y3Qg cmVndWxhdG9yX2NvdXBsZXIgKmNvdXBsZXIsCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgcmVndWxhdG9yX2RldiAqcmRldikKPj4+ICt7Cj4+PiAr wqDCoMKgIHN0cnVjdCBtZWRpYXRla19yZWd1bGF0b3JfY291cGxlciAqbXJjID0gdG9fbWVkaWF0 ZWtfY291cGxlcihjb3VwbGVyKTsKPj4+ICvCoMKgwqAgY29uc3QgY2hhciAqcmRldl9uYW1lID0g cmRldl9nZXRfbmFtZShyZGV2KTsKPj4+ICsKPj4+ICvCoMKgwqAgLyoKPj4+ICvCoMKgwqDCoCAq IElmIHdlJ3JlIGdldHRpbmcgYSBjb3VwbGluZyBvZiBtb3JlIHRoYW4gdHdvIHJlZ3VsYXRvcnMg aGVyZSBhbmQKPj4+ICvCoMKgwqDCoCAqIHRoaXMgbWVhbnMgdGhhdCB0aGlzIGlzIHN1cmVseSBu b3QgYSBHUFU8LT5TUkFNIGNvdXBsZTogaW4gdGhhdAo+Pj4gK8KgwqDCoMKgICogY2FzZSwgd2Ug bWF5IHdhbnQgdG8gdXNlIGFub3RoZXIgY291cGxlciBpbXBsZW1lbnRhdGlvbiwgaWYgYW55LAo+ Pj4gK8KgwqDCoMKgICogb3IgdGhlIGdlbmVyaWMgb25lOiB0aGUgcmVndWxhdG9yIGNvcmUgd2ls bCBrZWVwIHdhbGtpbmcgdGhyb3VnaAo+Pj4gK8KgwqDCoMKgICogdGhlIGxpc3Qgb2YgY291cGxl cnMgd2hlbiBhbnkgLmF0dGFjaF9yZWd1bGF0b3IoKSBjYiByZXR1cm5zIDEuCj4+PiArwqDCoMKg wqAgKi8KPj4+ICvCoMKgwqAgaWYgKHJkZXYtPmNvdXBsaW5nX2Rlc2Mubl9jb3VwbGVkID4gMikK Pj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gMTsKPj4+ICsKPj4+ICvCoMKgwqAgaWYgKHN0cnN0 cihyZGV2X25hbWUsICJzcmFtIikpIHsKPj4KPj4gTXkgdW5kZXJzdGFuZGluZyBpcywgdGhhdCB3 ZSBoYXZlIHRvIGhhdmUgZWl0aGVyIGEgRFQgbm9kZSB3aXRoIHJlZ3VsYXRvci1uYW1lID0gCj4+ ICJzcmFtIiBwcm9wZXJ0eSB0byBwb2xsdXRlIHJkZXYtPmNvbnN0cmFpbnRzLT5uYW1lIG9yIHNv bWUgcmVndWxhdG9yX2Rlc2MtPm5hbWUgCj4+IHBvcHVsYXRlZCBpbiB0aGUgZHJpdmVycy9yZWd1 bGF0b3IvbXQqLmMKPj4KPiAKPiBObywgaXQncyBub3QgdHJ5aW5nIHRvIGZpbmQgYSByZWd1bGF0 b3IgbmFtZWQgInNyYW0iLCBidXQgYW55IHJlZ3VsYXRvciB0aGF0Cj4gKmNvbnRhaW5zKiB0aGUg InNyYW0iIHN0cmluZyBpbiBpdHMgbmFtZSwgYnV0IGNoZWNrcyBvbmx5IHJlZ3VsYXRvcnMgdGhh dCBhcmUKPiBjb3VwbGVkIHRvIG90aGVycy4gVGhpcyBpcyB0aGUgc2FtZSBmb3IgdGhlICJWZ3B1 IiAvICJ2Z3B1Ii4KPiAKPiBFeGFtcGxlOgo+IAo+IFJlZ3VsYXRvciBBLCBjb3VwbGVkIHRvIFJl Z3VsYXRvciBCLgo+IAo+IFJlZ3VsYXRvciBBIG5hbWUgPSAiVmdwdSIgb3IgInZncHUiLCBvciAq dmdwdSosIG9yICpWZ3B1Kgo+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg KG5hbWUgbXVzdCBjb250YWluIGVpdGhlciBWZ3B1IG9yIHZncHUpCj4gCj4gUmVndWxhdG9yIEIg bmFtZSA9ICJ2c3JhbSIgb3IgInNyYW1fZ3B1IiBvciAqc3JhbSoKPiAgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIChuYW1lIG11c3QgY29udGFpbiAic3JhbSIpLgo+IAo+IG1y Yy0+dnNyYW1fcmRldiA9IHJkZXYKPiAKPiByZGV2ID09IG91ciBSZWd1bGF0b3IgQi4KPiAKPiBX ZSBoZW5jZSByZXR1cm4gMCB0byB0aGUgY291cGxpbmcgQVBJOiB0aGlzIHdpbGwgcHJvZHVjZSB0 aGUgZWZmZWN0IG9mIG1ha2luZwo+IGl0IHVzZSB0aGlzIGRyaXZlcidzIC5iYWxhbmNlX3ZvbHRh Z2UoKSBjYWxsYmFjayBpbnN0ZWFkIG9mIHRoZSBnZW5lcmljIG9uZQo+IG9uIHZncHU8LT52c3Jh bS4KPiAKPiAKPj4gSSB3YXNuJ3QgYWJsZSB0byBmaW5kIGVpdGhlciBvZiB0aGlzLCBzbyBJIHdv bmRlciBob3cgdGhpcyBpcyBzdXBwb3NlZCB0byB3b3JrLiAKPj4gUGxlYXNlIHByb3ZpZGUgcG9p bnRlcnMgdG8gYSB3b3JraW5nIGFuZCBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzLCBz byB0aGF0IAo+PiBJJ20gYWJsZSB0byBqdWRnZSB3aGF0IGlzIGdvaW5nIG9uIGFuZCBpZiB0aGUg YXBwcm9hY2ggaXMgdGhlIGNvcnJlY3Qgb25lLgo+Pgo+PiBJIHRyaWVkIHRvIGZpZ3VyZSBvdXQg dXNpbmcgbXQ4MTk1LXRyYWNraW5nLW1hc3Rlci1yb2xsaW5nCj4gCj4gVGhhdCdzIHRoZSByaWdo dCBicmFuY2guCj4gCj4gTGV0J3MgdGFrZSBNVDgxOTIgQXN1cmFkYSBhcyBhbiBleGFtcGxlIG9m IGhvdyB0aGlzIHdvcmtzLi4uLgo+IAo+IGBtdDYzNTlfdnNyYW1fb3RoZXJzX2xkb19yZWfCtCBp cyB0aGUgU1JBTSByZWd1bGF0b3IgZm9yIHRoZSBHUFU6Cj4gaHR0cHM6Ly9naXRsYWIuY29sbGFi b3JhLmNvbS9nb29nbGUvY2hyb21lb3Mta2VybmVsLy0vYmxvYi9tdDgxOTUtdHJhY2tpbmctbWFz dGVyLXJvbGxpbmcvYXJjaC9hcm02NC9ib290L2R0cy9tZWRpYXRlay9tdDgxOTItYXN1cmFkYS5k dHNpI0w1NTEKPiAKPiBgbXQ2MzU5X3ZzcmFtX290aGVyc19sZG9fcmVnYCByZWd1bGF0b3ItbmFt ZSA9ICJ2c3JhbV9vdGhlcnMiOwo+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgXl5eXgo+IENvbnRhaW5zICJzcmFtIiwgYW5kIHRoaXMgcmVndWxhdG9yIGlzIGFsc28K PiAKPiAgwqDCoMKgwqByZWd1bGF0b3ItY291cGxlZC13aXRoID0gPCZtdDYzMTVfN192YnVjazE+ Owo+IAo+IGBtdDYzMTVfN192YnVjazFgIHJlZ3VsYXRvci1uYW1lID0gIlZncHUiOwo+ICDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIF5eXl4KPiBDb250YWlucyAiVmdwdSIsIGFuZCB0aGlzIHJlZ3VsYXRvciBpcyBh bHNvCj4gCj4gIMKgwqDCoMKgcmVndWxhdG9yLWNvdXBsZWQtd2l0aCA9IDwmbXQ2MzU5X3ZzcmFt X290aGVyc19sZG9fcmVnPjsKPiAKPiBUaGF0J3MgaG93IHRoZSBjb3VwbGluZyB3b3JrcyBpbiB0 aGlzIGNhc2UuCj4gCj4gCj4gTm93LCBsb29raW5nIGF0IGNhc2UgZXhjbHVzaW9uczoKPiBJbiBN VDgxOTIgQXN1cmFkYSAob3IsIGFjdHVhbGx5LCBtdDYzNTkuZHRzaSkgd2UgaGF2ZSBvdGhlciBy ZWd1bGF0b3JzIHRoYXQgZG8KPiBhY3R1YWxseSBjb250YWluICJzcmFtIiBpbiB0aGVpciBuYW1l LCBsaWtlICJ2c3JhbV9wcm9jMSIgYW5kICJ2c3JhbV9vdGhlcnNfc3NodWIiLgo+IAo+IFRoZXNl IHJlZ3VsYXRvcnMgd2lsbCBiZSBpZ25vcmVkLCBhcyB0aGV5IGFyZSAqbm90KiBjb3VwbGVkIHdp dGggVmdwdS4KPiAKPiAKPiBXaGF0IHRoaXMgZHJpdmVyIGN1cnJlbnRseSBkb2VzIGluIHRoaXMg cmVnYXJkIGlzOgo+IDEuIFJlZ3VsYXRvciBhdHRhY2ggaXMgY2FsbGVkIG9ubHkgb24gKmNvdXBs ZWQqIHJlZ3VsYXRvcnMsIG5vdCBvbiB0aGUgb3RoZXJzCj4gMi4gSWYgdGhlIHJlZ3VsYXRvciBj b250YWlucyBuYW1lICJ2Z3B1IiBvciAiVmdwdSIgb3IgInNyYW0iIHdlJ3JlIGdvb2QsCj4gIMKg wqAgb3RoZXJ3aXNlIHdlIGRvbid0IGF0dGFjaCB0aGUgYmFsYW5jZV92b2x0YWdlIGxvZ2ljIG9m IHRoaXMgZHJpdmVyIHRvCj4gIMKgwqAgdGhlIHVubWF0Y2hlZCByZWd1bGF0b3JzLgo+IAo+IAo+ IERvZXMgdGhpcyBleHBsYW5hdGlvbiBjbGFyaWZ5IHlvdXIgZG91YnRzPwo+IAo+IFJlZ2FyZHMs Cj4gQW5nZWxvCj4gCgpNYXR0aGlhcywgcGxlYXNlIGRvbid0IGZvcmdldCBhYm91dCB0aGlzIG9u ZSA6LSkKClRoYW5rcyEKQW5nZWxvCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtl cm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxt YW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=