From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=100.103.45.18 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1793201459; b=ZvSeF7pirr4kENqfKvj5kcGhon7gQZf1e0AJUMj157/IOqUz3Nm2GxQGlmOZUPxkXm2S V17Mr2hB/ihYjvzqxdwufyIxTsElKrwPLm6l6gRr/QcuZB+nxNF9ootiSbbcYLiHRwI0U ztjtjKURBNxVHM03VipPLTPszxKP7iOhESZPlEFrqtVQkuA5bSxvSv1KeBhdLcEGpQppO THf8UkMoFuk5nmwWqnFMz8Yd8nzbdRzqqnbAg2Id7YoHp1XXZ/cA5wuZbYKlUOZE/48Ru uqXvDNaGGZF+DaZQRWXAumNxl2usmaNwcB4pLRJMjlhjWG1Nn5VX/04d/piPXGKzbyQ== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1793201459; h=Received:DKIM-Signature:Message-ID:From:Subject:Reply-To:To:Cc: In-Reply-To:References:Content-Type:Content-Transfer-Encoding:Date; bh=u5OAziH+XXCu1kidoGU7GB4Imqu8yDWQL+K8hIK3tP0=; b=FSTZIJMuh8tdyfiZiPwfX1nkoeYjXdUsisgC6buTq7nuoA0lQg8cz1uukwC24491Kn0w TPaYhjisFFJWULXgn/aXXM/GtoznBz9lsavIkf9UDWAajPwTmhD4Jj62s5FKvodQ4Htlq UEHDKh3orHa84bJUf9WLvmFjjWkrPbIbTsD0R0Oras+5DeVYdA8M1VDZzgmiNpgBqyK1G 7xvX4u12hCalCnbrxZE0qiyiFRkafCHuwGiJpM4j3LjydNa1k1O1LNyrArwlO8hV8YINe b0B3glSWWHCp/3RERbgMHawjNdkSU0HpkGywl6Q87vAVTpzitb9w1rIHodfQYEBz2Dw== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=dTsIaDuP; arc=none smtp.remote-ip=100.103.45.18 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D04F1606A31A for ; Wed, 28 Oct 2026 15:30:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=dTsIaDuP Received: by smtp.kernel.org (Postfix) with ESMTPSA id 031C71F01825; Wed, 28 Oct 2026 15:30:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1793201458; bh=u5OAziH+XXCu1kidoGU7GB4Imqu8yDWQL+K8hIK3tP0=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=dTsIaDuPmNbYc85czKOjTglGn5Z8DQAWYvIJJfhrDvUN4Oiv4JQcFmPouBXmh3U4N dhahV2WaVdWopuQOMPTwvl/tI+Z+NUUM0zA/SOSDEP4EWzqBHDFEvhauRa/hGUXZnE taFb3d8ZnV7iOt+YmbyJI201dOt9d9qHnWxUs7cZ95zjx4ojt74+6XeWqg66M46UL+ w/ysNacXBRyeqjC5hcavxRPdpCEtpCrHp16BPtpCUt2kv7xgmziY5LLcHFO2HwK0/t x/d17zt9omLMKSaS3WPS9BH25RmC922vDE0ZPtYn7HcZCuDdqQQPIMtnxHSBNASaLE EKFma+VNwi9+w== Message-ID: From: sashiko-bot@kernel.org Subject: Re: [PATCH v6 2/5] phy: Add common Innosilicon HDMI PHY helpers Reply-To: sashiko-reviews@lists.linux.dev To: "Michal Wilczynski" Cc: linux-phy@lists.infradead.org, devicetree@vger.kernel.org, robh@kernel.org, conor+dt@kernel.org, vkoul@kernel.org, neil.armstrong@linaro.org, olteanv@gmail.com In-Reply-To: <20261028-jh7110-inno-hdmi-phy-v6-2-f3379684d97e@samsung.com> References: <20261028-jh7110-inno-hdmi-phy-v6-0-f3379684d97e@samsung.com> <20261028-jh7110-inno-hdmi-phy-v6-2-f3379684d97e@samsung.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Wed, 28 Oct 2026 15:30:57 +0000 X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list Thank you for your contribution! Sashiko AI review found 1 potential issue(= s) to consider: - [Medium] phy: inno-hdmi: 32-bit overflow in inno_hdmi_phy_pre_pll_recalc_= rate() -- commit ddb60d944975dab0de39c50bd23d32e884d239ae Author: Michal Wilczynski phy: Add common Innosilicon HDMI PHY helpers This commit introduces a shared helper library for the Innosilicon HDMI PHY pre-PLL configuration, including table lookup, clock rate calculation helpe= rs, and register programming. > diff --git a/drivers/phy/phy-inno-hdmi.c b/drivers/phy/phy-inno-hdmi.c > new file mode 100644 > index 0000000000000..6900d4d83e464 > --- /dev/null > +++ b/drivers/phy/phy-inno-hdmi.c [ ... ] > +unsigned long > +inno_hdmi_phy_pre_pll_recalc_rate(const struct inno_hdmi_phy_pre_pll *pl= l, > + unsigned long parent_rate) > +{ > + unsigned int control, div_1, div_2, div_3, pclk_div_ab, pclk_div_cd; > + unsigned int frac_div_7_0, frac_div_15_8, frac_div_23_16, div; > + u8 nd, no_a, no_b, no_d; > + unsigned long frac, rate; > + u64 vco, vco_rate; > + u16 nf; > + int ret; [ ... ] > + nd =3D div_1 & INNO_PRE_PLL_PRE_DIV_MASK; > + nf =3D (div_2 & INNO_PRE_PLL_FB_DIV_11_8_MASK) << 8; > + nf |=3D div_3; > + vco =3D parent_rate * nf; > + > + if (!(div_2 & INNO_PRE_PLL_FRAC_DIV_DISABLE)) { > + ret =3D inno_read(pll, INNO_PRE_PLL_FRAC_DIV_7_0, &frac_div_7_0); > + if (ret) > + goto err; > + ret =3D inno_read(pll, INNO_PRE_PLL_FRAC_DIV_15_8, &frac_div_15_8); > + if (ret) > + goto err; > + ret =3D inno_read(pll, INNO_PRE_PLL_FRAC_DIV_23_16, > + &frac_div_23_16); > + if (ret) > + goto err; > + > + frac =3D frac_div_7_0 | (frac_div_15_8 << 8) | > + (frac_div_23_16 << 16); > + vco +=3D DIV_ROUND_CLOSEST(parent_rate * frac, > + BIT(INNO_FRAC_DIV_WIDTH)); > + } [Severity: Medium] Can the VCO calculations in inno_hdmi_phy_pre_pll_recalc_rate() in drivers/phy/phy-inno-hdmi.c overflow on 32-bit architectures? Both parent_rate and frac have type unsigned long, while nf is a u16 and vco is a u64. On 32-bit targets where unsigned long is 32 bits wide, parent_rate * nf is evaluated in 32-bit arithmetic before being widened to u64. With a typical 24 MHz reference clock, any feedback divider nf >=3D 179 exceeds U32_MAX, whereas the 12-bit feedback divider reaches up to 757 in t= he Innosilicon pre-PLL configuration tables. Similarly, when the fractional divider is enabled, parent_rate * frac and DIV_ROUND_CLOSEST() operate on 32-bit unsigned long values before adding to vco. For a 24 MHz parent_rate and a 24-bit frac value, parent_rate * frac requires up to 49 bits and overflows 32-bit unsigned long whenever frac >= =3D 179. Should parent_rate be cast to u64 in parent_rate * nf, and should the fractional calculation use DIV_ROUND_CLOSEST_ULL((u64)parent_rate * frac, BIT(INNO_FRAC_DIV_WIDTH)) to avoid 32-bit truncation? --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20261028-jh7110-inn= o-hdmi-phy-v6-0-f3379684d97e@samsung.com?part=3D2 From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9C3BD606A31A for ; Wed, 28 Oct 2026 15:31:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=b+3rEYdb; dkim=fail reason="signature verification failed" (2048-bit key, unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=dTsIaDuP 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:MIME-Version:Reply-To:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Date:References: In-Reply-To:Cc:To:Subject:From:Message-ID:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Unsubscribe-Post:List-Owner; bh=OlfXjwFAy1eFjq0b5PPOHCB8MUroITWBJqlpLmT/xoc=; b=b+3rEYdbhbEX8XqtTRIBjKFABc YQIxMzEUHUX0T4Wwm4OEXzRwtxPw9/tct3K8Cp7BU8N6c1duwwnzDlKXBWG7QqFEG0BH4g1BufWv5 S8wuDb1WGlw2cf6D/tnh36HSkS3H5JC/tjzjs7QFVZUjYgTVCwkuSBufOyuIvoZqpdb7CVOi/6jiI yzJZDpv8/sYA3OZMkwwdQF+DqW6sR1Z62betGlJOVa3hEOlwUghO9x0SSya5/xyOv0E3CBKR8U++W mstEanKOXCGXNX1ClwiCfYsgFBs+Kl2sHnQCABi0opwGaprYR0JA0Ip1iNrk+26QvBA+VhUCF9ZXy R0+aHx4w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.100.1 #2 (Red Hat Linux)) id 1xM5cD-00000007OUL-0gYz; Wed, 28 Oct 2026 15:31:01 +0000 Received: from sea.source.kernel.org ([2600:3c0a:e001:78e:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.100.1 #2 (Red Hat Linux)) id 1xM5cB-00000007OUF-0QR8 for linux-phy@lists.infradead.org; Wed, 28 Oct 2026 15:30:59 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id 8986C40BAC; Wed, 28 Oct 2026 15:30:58 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 031C71F01825; Wed, 28 Oct 2026 15:30:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1793201458; bh=u5OAziH+XXCu1kidoGU7GB4Imqu8yDWQL+K8hIK3tP0=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=dTsIaDuPmNbYc85czKOjTglGn5Z8DQAWYvIJJfhrDvUN4Oiv4JQcFmPouBXmh3U4N dhahV2WaVdWopuQOMPTwvl/tI+Z+NUUM0zA/SOSDEP4EWzqBHDFEvhauRa/hGUXZnE taFb3d8ZnV7iOt+YmbyJI201dOt9d9qHnWxUs7cZ95zjx4ojt74+6XeWqg66M46UL+ w/ysNacXBRyeqjC5hcavxRPdpCEtpCrHp16BPtpCUt2kv7xgmziY5LLcHFO2HwK0/t x/d17zt9omLMKSaS3WPS9BH25RmC922vDE0ZPtYn7HcZCuDdqQQPIMtnxHSBNASaLE EKFma+VNwi9+w== Message-ID: From: sashiko-bot@kernel.org Subject: Re: [PATCH v6 2/5] phy: Add common Innosilicon HDMI PHY helpers To: "Michal Wilczynski" Cc: linux-phy@lists.infradead.org, devicetree@vger.kernel.org, robh@kernel.org, conor+dt@kernel.org, vkoul@kernel.org, neil.armstrong@linaro.org, olteanv@gmail.com In-Reply-To: <20261028-jh7110-inno-hdmi-phy-v6-2-f3379684d97e@samsung.com> References: <20261028-jh7110-inno-hdmi-phy-v6-0-f3379684d97e@samsung.com> <20261028-jh7110-inno-hdmi-phy-v6-2-f3379684d97e@samsung.com> Date: Wed, 28 Oct 2026 15:30:57 +0000 X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: sashiko-reviews@lists.linux.dev X-Archived-By: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-phy" X-Spam-Status: No, score=-8.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=4.0.1 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on aws-us-west-2-korg-listserv-alma10-1 VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg MSBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6Ci0gW01lZGl1bV0gcGh5OiBpbm5vLWhk bWk6IDMyLWJpdCBvdmVyZmxvdyBpbiBpbm5vX2hkbWlfcGh5X3ByZV9wbGxfcmVjYWxjX3JhdGUo KQotLQoKY29tbWl0IGRkYjYwZDk0NDk3NWRhYjBkZTM5YzUwYmQyM2QzMmU4ODRkMjM5YWUKQXV0 aG9yOiBNaWNoYWwgV2lsY3p5bnNraSA8bS53aWxjenluc2tpQHNhbXN1bmcuY29tPgoKcGh5OiBB ZGQgY29tbW9uIElubm9zaWxpY29uIEhETUkgUEhZIGhlbHBlcnMKClRoaXMgY29tbWl0IGludHJv ZHVjZXMgYSBzaGFyZWQgaGVscGVyIGxpYnJhcnkgZm9yIHRoZSBJbm5vc2lsaWNvbiBIRE1JIFBI WQpwcmUtUExMIGNvbmZpZ3VyYXRpb24sIGluY2x1ZGluZyB0YWJsZSBsb29rdXAsIGNsb2NrIHJh dGUgY2FsY3VsYXRpb24gaGVscGVycywKYW5kIHJlZ2lzdGVyIHByb2dyYW1taW5nLgoKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9waHkvcGh5LWlubm8taGRtaS5jIGIvZHJpdmVycy9waHkvcGh5LWlu bm8taGRtaS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAwLi42 OTAwZDRkODNlNDY0Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvcGh5L3BoeS1pbm5v LWhkbWkuYwpbIC4uLiBdCj4gK3Vuc2lnbmVkIGxvbmcKPiAraW5ub19oZG1pX3BoeV9wcmVfcGxs X3JlY2FsY19yYXRlKGNvbnN0IHN0cnVjdCBpbm5vX2hkbWlfcGh5X3ByZV9wbGwgKnBsbCwKPiAr CQkJCSAgdW5zaWduZWQgbG9uZyBwYXJlbnRfcmF0ZSkKPiArewo+ICsJdW5zaWduZWQgaW50IGNv bnRyb2wsIGRpdl8xLCBkaXZfMiwgZGl2XzMsIHBjbGtfZGl2X2FiLCBwY2xrX2Rpdl9jZDsKPiAr CXVuc2lnbmVkIGludCBmcmFjX2Rpdl83XzAsIGZyYWNfZGl2XzE1XzgsIGZyYWNfZGl2XzIzXzE2 LCBkaXY7Cj4gKwl1OCBuZCwgbm9fYSwgbm9fYiwgbm9fZDsKPiArCXVuc2lnbmVkIGxvbmcgZnJh YywgcmF0ZTsKPiArCXU2NCB2Y28sIHZjb19yYXRlOwo+ICsJdTE2IG5mOwo+ICsJaW50IHJldDsK WyAuLi4gXQo+ICsJbmQgPSBkaXZfMSAmIElOTk9fUFJFX1BMTF9QUkVfRElWX01BU0s7Cj4gKwlu ZiA9IChkaXZfMiAmIElOTk9fUFJFX1BMTF9GQl9ESVZfMTFfOF9NQVNLKSA8PCA4Owo+ICsJbmYg fD0gZGl2XzM7Cj4gKwl2Y28gPSBwYXJlbnRfcmF0ZSAqIG5mOwo+ICsKPiArCWlmICghKGRpdl8y ICYgSU5OT19QUkVfUExMX0ZSQUNfRElWX0RJU0FCTEUpKSB7Cj4gKwkJcmV0ID0gaW5ub19yZWFk KHBsbCwgSU5OT19QUkVfUExMX0ZSQUNfRElWXzdfMCwgJmZyYWNfZGl2XzdfMCk7Cj4gKwkJaWYg KHJldCkKPiArCQkJZ290byBlcnI7Cj4gKwkJcmV0ID0gaW5ub19yZWFkKHBsbCwgSU5OT19QUkVf UExMX0ZSQUNfRElWXzE1XzgsICZmcmFjX2Rpdl8xNV84KTsKPiArCQlpZiAocmV0KQo+ICsJCQln b3RvIGVycjsKPiArCQlyZXQgPSBpbm5vX3JlYWQocGxsLCBJTk5PX1BSRV9QTExfRlJBQ19ESVZf MjNfMTYsCj4gKwkJCQkmZnJhY19kaXZfMjNfMTYpOwo+ICsJCWlmIChyZXQpCj4gKwkJCWdvdG8g ZXJyOwo+ICsKPiArCQlmcmFjID0gZnJhY19kaXZfN18wIHwgKGZyYWNfZGl2XzE1XzggPDwgOCkg fAo+ICsJCSAgICAgICAoZnJhY19kaXZfMjNfMTYgPDwgMTYpOwo+ICsJCXZjbyArPSBESVZfUk9V TkRfQ0xPU0VTVChwYXJlbnRfcmF0ZSAqIGZyYWMsCj4gKwkJCQkJIEJJVChJTk5PX0ZSQUNfRElW X1dJRFRIKSk7Cj4gKwl9CgpbU2V2ZXJpdHk6IE1lZGl1bV0KQ2FuIHRoZSBWQ08gY2FsY3VsYXRp b25zIGluIGlubm9faGRtaV9waHlfcHJlX3BsbF9yZWNhbGNfcmF0ZSgpIGluCmRyaXZlcnMvcGh5 L3BoeS1pbm5vLWhkbWkuYyBvdmVyZmxvdyBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcz8KCkJvdGgg cGFyZW50X3JhdGUgYW5kIGZyYWMgaGF2ZSB0eXBlIHVuc2lnbmVkIGxvbmcsIHdoaWxlIG5mIGlz IGEgdTE2IGFuZCB2Y28KaXMgYSB1NjQuIE9uIDMyLWJpdCB0YXJnZXRzIHdoZXJlIHVuc2lnbmVk IGxvbmcgaXMgMzIgYml0cyB3aWRlLApwYXJlbnRfcmF0ZSAqIG5mIGlzIGV2YWx1YXRlZCBpbiAz Mi1iaXQgYXJpdGhtZXRpYyBiZWZvcmUgYmVpbmcgd2lkZW5lZCB0bwp1NjQuIFdpdGggYSB0eXBp Y2FsIDI0IE1IeiByZWZlcmVuY2UgY2xvY2ssIGFueSBmZWVkYmFjayBkaXZpZGVyIG5mID49IDE3 OQpleGNlZWRzIFUzMl9NQVgsIHdoZXJlYXMgdGhlIDEyLWJpdCBmZWVkYmFjayBkaXZpZGVyIHJl YWNoZXMgdXAgdG8gNzU3IGluIHRoZQpJbm5vc2lsaWNvbiBwcmUtUExMIGNvbmZpZ3VyYXRpb24g dGFibGVzLgoKU2ltaWxhcmx5LCB3aGVuIHRoZSBmcmFjdGlvbmFsIGRpdmlkZXIgaXMgZW5hYmxl ZCwgcGFyZW50X3JhdGUgKiBmcmFjIGFuZApESVZfUk9VTkRfQ0xPU0VTVCgpIG9wZXJhdGUgb24g MzItYml0IHVuc2lnbmVkIGxvbmcgdmFsdWVzIGJlZm9yZSBhZGRpbmcgdG8KdmNvLiBGb3IgYSAy NCBNSHogcGFyZW50X3JhdGUgYW5kIGEgMjQtYml0IGZyYWMgdmFsdWUsIHBhcmVudF9yYXRlICog ZnJhYwpyZXF1aXJlcyB1cCB0byA0OSBiaXRzIGFuZCBvdmVyZmxvd3MgMzItYml0IHVuc2lnbmVk IGxvbmcgd2hlbmV2ZXIgZnJhYyA+PSAxNzkuCgpTaG91bGQgcGFyZW50X3JhdGUgYmUgY2FzdCB0 byB1NjQgaW4gcGFyZW50X3JhdGUgKiBuZiwgYW5kIHNob3VsZCB0aGUKZnJhY3Rpb25hbCBjYWxj dWxhdGlvbiB1c2UgRElWX1JPVU5EX0NMT1NFU1RfVUxMKCh1NjQpcGFyZW50X3JhdGUgKiBmcmFj LApCSVQoSU5OT19GUkFDX0RJVl9XSURUSCkpIHRvIGF2b2lkIDMyLWJpdCB0cnVuY2F0aW9uPwoK LS0gClNhc2hpa28gQUkgcmV2aWV3IMK3IGh0dHBzOi8vc2FzaGlrby5kZXYvIy9wYXRjaHNldC8y MDI2MTAyOC1qaDcxMTAtaW5uby1oZG1pLXBoeS12Ni0wLWYzMzc5Njg0ZDk3ZUBzYW1zdW5nLmNv bT9wYXJ0PTIKCi0tIApsaW51eC1waHkgbWFpbGluZyBsaXN0CmxpbnV4LXBoeUBsaXN0cy5pbmZy YWRlYWQub3JnCmh0dHBzOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xp bnV4LXBoeQo=