From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail.manjaro.org (mail.manjaro.org [116.203.91.91]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6038E8494; Mon, 24 Mar 2025 09:53:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=116.203.91.91 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742810034; cv=none; b=g4ceRSxEvEfW6CqdmlD5WFH+s97Ni23Q0Gszc0U/5ssSpI3I4aKPZs+sZFRnzYf8gWQXY7HFXVHznoEgxChwhD7L38kD0AFmsTkclHHRQCCvnuKmn9EYmEOKiglbneZ8fb3z/JX4RXwbX82WJsz0ewBKBl/OY4tX/mVbSCZG6tk= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742810034; c=relaxed/simple; bh=qgqPMtRSr40Ccfot6UgbHPRueY6p7D9B661XBz7lvAM=; h=MIME-Version:Date:From:To:Cc:Subject:In-Reply-To:References: Message-ID:Content-Type; b=sYRfbg7/qbirok1pJ1MT3kCaF6Et49b8bY2tCVPXUoT/1kO8A/q7TAYFUFzlzX3er/hbBgqpycAmgHECZt03ZhUZHty29s8dsUEsNuz8YonYZRK7/ZyR5xbp1J0YClCBGWwipBbDkFQwwmXdAC/vnH2jPwfKAr5hKsqc0UWSG6A= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=manjaro.org; spf=pass smtp.mailfrom=manjaro.org; dkim=pass (2048-bit key) header.d=manjaro.org header.i=@manjaro.org header.b=FobUkMLH; arc=none smtp.client-ip=116.203.91.91 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=manjaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=manjaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=manjaro.org header.i=@manjaro.org header.b="FobUkMLH" Precedence: bulk X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=manjaro.org; s=2021; t=1742810030; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=XERG4fHTRlBSKZ7O9h54QbkOrIztH+Lz87Rz4mphs4o=; b=FobUkMLHzOSyOc4vvxt3chAceAe1ueFbrWsmTvLcLgLFx6DMMUAhCGlPBGdfebE2Xstk0x cJ8CDVdI3836LwlxSq8VN6AGAVGCu78x/jzI+aDgpAniinYsuelmTsdcbwAZ8qB+0MXaa3 YUn+eTXy1rPLPvLp35oVNOb0t+jZUFbJjwqwAyp4J/VfrTnKeKwwXTl5sBJTfUgWH84iBq nZ9Nz5aFtN1PH2IJo6IwVmCLx9bAfntiZ4AH+eB17tyZYQc6ZQ2KUFOqtoXKILr63YX+5+ 04yl2AjaiVUyJAhsp32aKUocxWx4ZpCiMRhXlGa7dNMh5xiJSUTWM0ekHBnCXQ== Date: Mon, 24 Mar 2025 10:53:49 +0100 From: Dragan Simic To: Quentin Schulz Cc: linux-rockchip@lists.infradead.org, heiko@sntech.de, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, stable@vger.kernel.org, Alexey Charkov Subject: Re: [PATCH] arm64: dts: rockchip: Remove overdrive-mode OPPs from RK3588J SoC dtsi In-Reply-To: <2ece5cca-50ea-4ec9-927e-e757c9c10c18@cherry.de> References: <71b7c81b-6a4e-442b-a661-04d63639962a@cherry.de> <960c038ad9f7b83fe14d0ded388b42f7@manjaro.org> <2ece5cca-50ea-4ec9-927e-e757c9c10c18@cherry.de> Message-ID: <4d25c9af4380598b35a0d55e7c77ac3d@manjaro.org> X-Sender: dsimic@manjaro.org Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Authentication-Results: ORIGINATING; auth=pass smtp.auth=dsimic@manjaro.org smtp.mailfrom=dsimic@manjaro.org Hello Quentin, On 2025-03-24 10:23, Quentin Schulz wrote: > On 3/23/25 11:19 AM, Dragan Simic wrote: >> On 2025-03-21 10:53, Quentin Schulz wrote: >>> On 3/21/25 4:28 AM, Dragan Simic wrote: >>>> The differences in the vendor-approved CPU and GPU OPPs for the >>>> standard >>>> Rockchip RK3588 variant [1] and the industrial Rockchip RK3588J >>>> variant [2] >>>> come from the latter, presumably, supporting an extended temperature >>>> range >>>> that's usually associated with industrial applications, despite the >>>> two SoC >>>> variant datasheets specifying the same upper limit for the allowed >>>> ambient >>>> temperature for both variants.  However, the lower temperature limit >>>> is >>> >>> RK3588 is rated for 0-80°C, RK3588J for -40-85°C, c.f. Recommended >>> Operating Conditions, Table 3-2, Ambient Operating Temperature. >> >> Indeed, which is why I specifically wrote "specifying the same upper >> limit", because having a lower negative temperature limit could hardly >> put the RK3588J in danger of overheating or running hotter. :) > > """ > despite the two SoC variant datasheets specifying the same upper limit > for the allowed temperature for both variants > """ > > is incorrect. The whole range is different, yes it's only a 5°C > difference for the upper limit, but they still are different. I just commented on this separately, with a couple of datasheet screenshots, before I saw your latest response. Please, have a look at that message. >>>> specified much lower for the RK3588J variant. [1][2] >>>> >>>> To be on the safe side and to ensure maximum longevity of the >>>> RK3588J SoCs, >>>> only the CPU and GPU OPPs that are declared by the vendor to be >>>> always safe >>>> for this SoC variant may be provided.  As explained by the vendor >>>> [3] and >>>> according to its datasheet, [2] the RK3588J variant can actually run >>>> safely >>>> at higher CPU and GPU OPPs as well, but only when not enjoying the >>>> assumed >>>> extended temperature range that the RK3588J, as an SoC variant >>>> targeted >>> >>> "only when not enjoying the assumed extended temperature range" is >>> extrapolated by me/us and not confirmed by Rockchip themselves. I've >>> asked for a statement on what "industrial environment" they specify >>> in >>> the Normal Mode explanation means since it's the only time they use >>> the term. I've yet to receive an answer. The only thing Rockchip in >>> their datasheet is that the overdrive mode will shorten lifetime when >>> used for a long time, especially in high temperature conditions. It's >>> not clear whether we can use the overdrive mode even within the >>> RK3588 >>> typical range of operation. >> >> True.  I'll see to rephrase the patch description a bit in the v2, >> to avoid this kind of speculation.  I mean, perhaps the speculation >> is right, but it hasn't been confirmed officially by Rockchip. > > Speculation is fine, but it should be worded as such. Agreed, because that's our understanding so far, but it needs to be explained a bit better. >>>> The provided RK3588J CPU OPPs follow the slightly debatable "provide >>>> only >>>> the highest-frequency OPP from the same-voltage group" approach >>>> that's been >>> >>> Interesting that we went for a different strategy for the GPU OPPs :) >> >> Good point, and I'm fully aware of that. :)  Actually, I'm rather >> sure that omitting the additional CPU OPPs does no good to us, but >> I didn't want to argue about that when they were dropped originally, >> before I can have some hard numbers to prove it in a repeatable way. > > I assume we'll have some patch in the future with those added and > those hard numbers you're talking about, so looking forward to seeing > it on the ML :) Indeed, that's the plan, and there should be even more patches, which should remove the slightly annoying "xyz OPP is inefficient" warnings emitted by the IPA governor. :) >>>> Helped-by: Quentin Schulz >>> >>> Reported-by/Suggested-by? >>> >>> I don't see Helped-by in >>> https://eur02.safelinks.protection.outlook.com/? >>> url=https%3A%2F%2Fwww.kernel.org%2Fdoc%2Fhtml%2Flatest%2Fprocess%2Fsubmitting-patches.html%23using-reported-by-tested-by-reviewed-by-suggested-by-and-fixes&data=05%7C02%7Cquentin.schulz%40cherry.de%7Cdc754791b6844506b11c08dd69f444a7%7C5e0e1b5221b54e7b83bb514ec460677e%7C0%7C0%7C638783220330058516%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=4bv9pUh6aSD0GVLJ4Zvuyvox1K0xxwf83KXX86QsvMo%3D&reserved=0 >>> >>> I see 2496b2aaacf137250f4ca449f465e2cadaabb0e8 got the Helped-by >>> replaced by a Suggested-by for example, but I see other patches with >>> Helped-by... if that is a standard trailer for kernel patches, then >>> maybe we should add it to that doc? >> >> Actually, I already tried to get the Helped-by tag added to the >> kernel documentation, by submitting a small patch series. [*] >> Unfortunately, it got rejected. :/ >> >> However, Heiko accepts Helped-by tags and nobody higher up the >> tree seems to complain, so we should be fine. :)  It isn't the >> case with all maintainers, though. >> >> [*] https://eur02.safelinks.protection.outlook.com/? >> url=https%3A%2F%2Flore.kernel.org%2Fall%2Fcover.1730874296.git.dsimic%40manjaro.org%2FT%2F%23u&data=05%7C02%7Cquentin.schulz%40cherry.de%7Cdc754791b6844506b11c08dd69f444a7%7C5e0e1b5221b54e7b83bb514ec460677e%7C0%7C0%7C638783220330070422%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=3dZgSG%2FBT6f%2Ffqs7D30HvEl18SzqYPwNeUGWBZfMAqM%3D&reserved=0 > > Are you trying to up the numbers of Helped-by in commit logs to make > it a reasonable request to add the trailer in the documentation :) ? It's just that Helped-by is, to me, of a bit "higher value" than Suggested-by or Reported-by, because Helped-by means that the tagged person contributed more to the patch than just suggesting it or reporting a bug. In addition, having more Helped-by tags present in various commits can help a bit with, possibly, making it officially supported at some point in the future. :) 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 99BC1C36002 for ; Mon, 24 Mar 2025 09:55:46 +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:Message-ID:References:In-Reply-To:Subject:Cc:To:From :Date:MIME-Version:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=BGAeX+FBXcG2HfAo6JEFKQBXtU2OwsfNYK2fWF/khxA=; b=IOqGxXb7PGsy3LBfEelXVIU4fU IWJFYIDt5ePhwvYFSIWE8/ixPbj/k0jEPK6SZMQZSmdunsS9DBW7jZU6Ofc4UttpPQk5V54UipOCQ G/eMlNpwmBCh7Xy5nASgI6hNL3TmwlSX4UtdpDyK+c539ym9TY+3RbWL9E7LUXBFoj1kWdwjp0HhA iWIYmxJ8Onz+4u84vYNXk2/r+Cf8oKcH6CJyTpy36q/esDdz2qiekZANB4AXvIvvhpVUBKKJAvPDu FKJ6qjgjJjwiDs6KPr62rtAXaYhcOxQh/QmAvwKTJFUghQxB7UC8OTlXacAOQ7ndxR7GDO9scfCXo EHwY3NgA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tweWy-00000002lXo-0BzU; Mon, 24 Mar 2025 09:55:40 +0000 Received: from mail.manjaro.org ([116.203.91.91]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tweVE-00000002lQz-0bsS; Mon, 24 Mar 2025 09:53:53 +0000 MIME-Version: 1.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=manjaro.org; s=2021; t=1742810030; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=XERG4fHTRlBSKZ7O9h54QbkOrIztH+Lz87Rz4mphs4o=; b=FobUkMLHzOSyOc4vvxt3chAceAe1ueFbrWsmTvLcLgLFx6DMMUAhCGlPBGdfebE2Xstk0x cJ8CDVdI3836LwlxSq8VN6AGAVGCu78x/jzI+aDgpAniinYsuelmTsdcbwAZ8qB+0MXaa3 YUn+eTXy1rPLPvLp35oVNOb0t+jZUFbJjwqwAyp4J/VfrTnKeKwwXTl5sBJTfUgWH84iBq nZ9Nz5aFtN1PH2IJo6IwVmCLx9bAfntiZ4AH+eB17tyZYQc6ZQ2KUFOqtoXKILr63YX+5+ 04yl2AjaiVUyJAhsp32aKUocxWx4ZpCiMRhXlGa7dNMh5xiJSUTWM0ekHBnCXQ== Date: Mon, 24 Mar 2025 10:53:49 +0100 From: Dragan Simic To: Quentin Schulz Cc: linux-rockchip@lists.infradead.org, heiko@sntech.de, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, stable@vger.kernel.org, Alexey Charkov Subject: Re: [PATCH] arm64: dts: rockchip: Remove overdrive-mode OPPs from RK3588J SoC dtsi In-Reply-To: <2ece5cca-50ea-4ec9-927e-e757c9c10c18@cherry.de> References: <71b7c81b-6a4e-442b-a661-04d63639962a@cherry.de> <960c038ad9f7b83fe14d0ded388b42f7@manjaro.org> <2ece5cca-50ea-4ec9-927e-e757c9c10c18@cherry.de> Message-ID: <4d25c9af4380598b35a0d55e7c77ac3d@manjaro.org> X-Sender: dsimic@manjaro.org Authentication-Results: ORIGINATING; auth=pass smtp.auth=dsimic@manjaro.org smtp.mailfrom=dsimic@manjaro.org X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250324_025352_507313_5580E10E X-CRM114-Status: GOOD ( 31.50 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms 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-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org SGVsbG8gUXVlbnRpbiwKCk9uIDIwMjUtMDMtMjQgMTA6MjMsIFF1ZW50aW4gU2NodWx6IHdyb3Rl Ogo+IE9uIDMvMjMvMjUgMTE6MTkgQU0sIERyYWdhbiBTaW1pYyB3cm90ZToKPj4gT24gMjAyNS0w My0yMSAxMDo1MywgUXVlbnRpbiBTY2h1bHogd3JvdGU6Cj4+PiBPbiAzLzIxLzI1IDQ6MjggQU0s IERyYWdhbiBTaW1pYyB3cm90ZToKPj4+PiBUaGUgZGlmZmVyZW5jZXMgaW4gdGhlIHZlbmRvci1h cHByb3ZlZCBDUFUgYW5kIEdQVSBPUFBzIGZvciB0aGUgCj4+Pj4gc3RhbmRhcmQKPj4+PiBSb2Nr Y2hpcCBSSzM1ODggdmFyaWFudCBbMV0gYW5kIHRoZSBpbmR1c3RyaWFsIFJvY2tjaGlwIFJLMzU4 OEogCj4+Pj4gdmFyaWFudCBbMl0KPj4+PiBjb21lIGZyb20gdGhlIGxhdHRlciwgcHJlc3VtYWJs eSwgc3VwcG9ydGluZyBhbiBleHRlbmRlZCB0ZW1wZXJhdHVyZSAKPj4+PiByYW5nZQo+Pj4+IHRo YXQncyB1c3VhbGx5IGFzc29jaWF0ZWQgd2l0aCBpbmR1c3RyaWFsIGFwcGxpY2F0aW9ucywgZGVz cGl0ZSB0aGUgCj4+Pj4gdHdvIFNvQwo+Pj4+IHZhcmlhbnQgZGF0YXNoZWV0cyBzcGVjaWZ5aW5n IHRoZSBzYW1lIHVwcGVyIGxpbWl0IGZvciB0aGUgYWxsb3dlZCAKPj4+PiBhbWJpZW50Cj4+Pj4g dGVtcGVyYXR1cmUgZm9yIGJvdGggdmFyaWFudHMuwqAgSG93ZXZlciwgdGhlIGxvd2VyIHRlbXBl cmF0dXJlIGxpbWl0IAo+Pj4+IGlzCj4+PiAKPj4+IFJLMzU4OCBpcyByYXRlZCBmb3IgMC04MMKw QywgUkszNTg4SiBmb3IgLTQwLTg1wrBDLCBjLmYuIFJlY29tbWVuZGVkCj4+PiBPcGVyYXRpbmcg Q29uZGl0aW9ucywgVGFibGUgMy0yLCBBbWJpZW50IE9wZXJhdGluZyBUZW1wZXJhdHVyZS4KPj4g Cj4+IEluZGVlZCwgd2hpY2ggaXMgd2h5IEkgc3BlY2lmaWNhbGx5IHdyb3RlICJzcGVjaWZ5aW5n IHRoZSBzYW1lIHVwcGVyCj4+IGxpbWl0IiwgYmVjYXVzZSBoYXZpbmcgYSBsb3dlciBuZWdhdGl2 ZSB0ZW1wZXJhdHVyZSBsaW1pdCBjb3VsZCBoYXJkbHkKPj4gcHV0IHRoZSBSSzM1ODhKIGluIGRh bmdlciBvZiBvdmVyaGVhdGluZyBvciBydW5uaW5nIGhvdHRlci4gOikKPiAKPiAiIiIKPiBkZXNw aXRlIHRoZSB0d28gU29DIHZhcmlhbnQgZGF0YXNoZWV0cyBzcGVjaWZ5aW5nIHRoZSBzYW1lIHVw cGVyIGxpbWl0Cj4gZm9yIHRoZSBhbGxvd2VkIHRlbXBlcmF0dXJlIGZvciBib3RoIHZhcmlhbnRz Cj4gIiIiCj4gCj4gaXMgaW5jb3JyZWN0LiBUaGUgd2hvbGUgcmFuZ2UgaXMgZGlmZmVyZW50LCB5 ZXMgaXQncyBvbmx5IGEgNcKwQwo+IGRpZmZlcmVuY2UgZm9yIHRoZSB1cHBlciBsaW1pdCwgYnV0 IHRoZXkgc3RpbGwgYXJlIGRpZmZlcmVudC4KCkkganVzdCBjb21tZW50ZWQgb24gdGhpcyBzZXBh cmF0ZWx5LCB3aXRoIGEgY291cGxlIG9mIGRhdGFzaGVldApzY3JlZW5zaG90cywgYmVmb3JlIEkg c2F3IHlvdXIgbGF0ZXN0IHJlc3BvbnNlLiAgUGxlYXNlLCBoYXZlCmEgbG9vayBhdCB0aGF0IG1l c3NhZ2UuCgo+Pj4+IHNwZWNpZmllZCBtdWNoIGxvd2VyIGZvciB0aGUgUkszNTg4SiB2YXJpYW50 LiBbMV1bMl0KPj4+PiAKPj4+PiBUbyBiZSBvbiB0aGUgc2FmZSBzaWRlIGFuZCB0byBlbnN1cmUg bWF4aW11bSBsb25nZXZpdHkgb2YgdGhlIAo+Pj4+IFJLMzU4OEogU29DcywKPj4+PiBvbmx5IHRo ZSBDUFUgYW5kIEdQVSBPUFBzIHRoYXQgYXJlIGRlY2xhcmVkIGJ5IHRoZSB2ZW5kb3IgdG8gYmUg Cj4+Pj4gYWx3YXlzIHNhZmUKPj4+PiBmb3IgdGhpcyBTb0MgdmFyaWFudCBtYXkgYmUgcHJvdmlk ZWQuwqAgQXMgZXhwbGFpbmVkIGJ5IHRoZSB2ZW5kb3IgCj4+Pj4gWzNdIGFuZAo+Pj4+IGFjY29y ZGluZyB0byBpdHMgZGF0YXNoZWV0LCBbMl0gdGhlIFJLMzU4OEogdmFyaWFudCBjYW4gYWN0dWFs bHkgcnVuIAo+Pj4+IHNhZmVseQo+Pj4+IGF0IGhpZ2hlciBDUFUgYW5kIEdQVSBPUFBzIGFzIHdl bGwsIGJ1dCBvbmx5IHdoZW4gbm90IGVuam95aW5nIHRoZSAKPj4+PiBhc3N1bWVkCj4+Pj4gZXh0 ZW5kZWQgdGVtcGVyYXR1cmUgcmFuZ2UgdGhhdCB0aGUgUkszNTg4SiwgYXMgYW4gU29DIHZhcmlh bnQgCj4+Pj4gdGFyZ2V0ZWQKPj4+IAo+Pj4gIm9ubHkgd2hlbiBub3QgZW5qb3lpbmcgdGhlIGFz c3VtZWQgZXh0ZW5kZWQgdGVtcGVyYXR1cmUgcmFuZ2UiIGlzCj4+PiBleHRyYXBvbGF0ZWQgYnkg bWUvdXMgYW5kIG5vdCBjb25maXJtZWQgYnkgUm9ja2NoaXAgdGhlbXNlbHZlcy4gSSd2ZQo+Pj4g YXNrZWQgZm9yIGEgc3RhdGVtZW50IG9uIHdoYXQgImluZHVzdHJpYWwgZW52aXJvbm1lbnQiIHRo ZXkgc3BlY2lmeSAKPj4+IGluCj4+PiB0aGUgTm9ybWFsIE1vZGUgZXhwbGFuYXRpb24gbWVhbnMg c2luY2UgaXQncyB0aGUgb25seSB0aW1lIHRoZXkgdXNlCj4+PiB0aGUgdGVybS4gSSd2ZSB5ZXQg dG8gcmVjZWl2ZSBhbiBhbnN3ZXIuIFRoZSBvbmx5IHRoaW5nIFJvY2tjaGlwIGluCj4+PiB0aGVp ciBkYXRhc2hlZXQgaXMgdGhhdCB0aGUgb3ZlcmRyaXZlIG1vZGUgd2lsbCBzaG9ydGVuIGxpZmV0 aW1lIHdoZW4KPj4+IHVzZWQgZm9yIGEgbG9uZyB0aW1lLCBlc3BlY2lhbGx5IGluIGhpZ2ggdGVt cGVyYXR1cmUgY29uZGl0aW9ucy4gSXQncwo+Pj4gbm90IGNsZWFyIHdoZXRoZXIgd2UgY2FuIHVz ZSB0aGUgb3ZlcmRyaXZlIG1vZGUgZXZlbiB3aXRoaW4gdGhlIAo+Pj4gUkszNTg4Cj4+PiB0eXBp Y2FsIHJhbmdlIG9mIG9wZXJhdGlvbi4KPj4gCj4+IFRydWUuwqAgSSdsbCBzZWUgdG8gcmVwaHJh c2UgdGhlIHBhdGNoIGRlc2NyaXB0aW9uIGEgYml0IGluIHRoZSB2MiwKPj4gdG8gYXZvaWQgdGhp cyBraW5kIG9mIHNwZWN1bGF0aW9uLsKgIEkgbWVhbiwgcGVyaGFwcyB0aGUgc3BlY3VsYXRpb24K Pj4gaXMgcmlnaHQsIGJ1dCBpdCBoYXNuJ3QgYmVlbiBjb25maXJtZWQgb2ZmaWNpYWxseSBieSBS b2NrY2hpcC4KPiAKPiBTcGVjdWxhdGlvbiBpcyBmaW5lLCBidXQgaXQgc2hvdWxkIGJlIHdvcmRl ZCBhcyBzdWNoLgoKQWdyZWVkLCBiZWNhdXNlIHRoYXQncyBvdXIgdW5kZXJzdGFuZGluZyBzbyBm YXIsIGJ1dCBpdCBuZWVkcwp0byBiZSBleHBsYWluZWQgYSBiaXQgYmV0dGVyLgoKPj4+PiBUaGUg cHJvdmlkZWQgUkszNTg4SiBDUFUgT1BQcyBmb2xsb3cgdGhlIHNsaWdodGx5IGRlYmF0YWJsZSAi cHJvdmlkZSAKPj4+PiBvbmx5Cj4+Pj4gdGhlIGhpZ2hlc3QtZnJlcXVlbmN5IE9QUCBmcm9tIHRo ZSBzYW1lLXZvbHRhZ2UgZ3JvdXAiIGFwcHJvYWNoIAo+Pj4+IHRoYXQncyBiZWVuCj4+PiAKPj4+ IEludGVyZXN0aW5nIHRoYXQgd2Ugd2VudCBmb3IgYSBkaWZmZXJlbnQgc3RyYXRlZ3kgZm9yIHRo ZSBHUFUgT1BQcyA6KQo+PiAKPj4gR29vZCBwb2ludCwgYW5kIEknbSBmdWxseSBhd2FyZSBvZiB0 aGF0LiA6KcKgIEFjdHVhbGx5LCBJJ20gcmF0aGVyCj4+IHN1cmUgdGhhdCBvbWl0dGluZyB0aGUg YWRkaXRpb25hbCBDUFUgT1BQcyBkb2VzIG5vIGdvb2QgdG8gdXMsIGJ1dAo+PiBJIGRpZG4ndCB3 YW50IHRvIGFyZ3VlIGFib3V0IHRoYXQgd2hlbiB0aGV5IHdlcmUgZHJvcHBlZCBvcmlnaW5hbGx5 LAo+PiBiZWZvcmUgSSBjYW4gaGF2ZSBzb21lIGhhcmQgbnVtYmVycyB0byBwcm92ZSBpdCBpbiBh IHJlcGVhdGFibGUgd2F5Lgo+IAo+IEkgYXNzdW1lIHdlJ2xsIGhhdmUgc29tZSBwYXRjaCBpbiB0 aGUgZnV0dXJlIHdpdGggdGhvc2UgYWRkZWQgYW5kCj4gdGhvc2UgaGFyZCBudW1iZXJzIHlvdSdy ZSB0YWxraW5nIGFib3V0LCBzbyBsb29raW5nIGZvcndhcmQgdG8gc2VlaW5nCj4gaXQgb24gdGhl IE1MIDopCgpJbmRlZWQsIHRoYXQncyB0aGUgcGxhbiwgYW5kIHRoZXJlIHNob3VsZCBiZSBldmVu IG1vcmUgcGF0Y2hlcywKd2hpY2ggc2hvdWxkIHJlbW92ZSB0aGUgc2xpZ2h0bHkgYW5ub3lpbmcg Inh5eiBPUFAgaXMgaW5lZmZpY2llbnQiCndhcm5pbmdzIGVtaXR0ZWQgYnkgdGhlIElQQSBnb3Zl cm5vci4gOikKCj4+Pj4gSGVscGVkLWJ5OiBRdWVudGluIFNjaHVseiA8cXVlbnRpbi5zY2h1bHpA Y2hlcnJ5LmRlPgo+Pj4gCj4+PiBSZXBvcnRlZC1ieS9TdWdnZXN0ZWQtYnk/Cj4+PiAKPj4+IEkg ZG9uJ3Qgc2VlIEhlbHBlZC1ieSBpbgo+Pj4gaHR0cHM6Ly9ldXIwMi5zYWZlbGlua3MucHJvdGVj dGlvbi5vdXRsb29rLmNvbS8/IAo+Pj4gdXJsPWh0dHBzJTNBJTJGJTJGd3d3Lmtlcm5lbC5vcmcl MkZkb2MlMkZodG1sJTJGbGF0ZXN0JTJGcHJvY2VzcyUyRnN1Ym1pdHRpbmctcGF0Y2hlcy5odG1s JTIzdXNpbmctcmVwb3J0ZWQtYnktdGVzdGVkLWJ5LXJldmlld2VkLWJ5LXN1Z2dlc3RlZC1ieS1h bmQtZml4ZXMmZGF0YT0wNSU3QzAyJTdDcXVlbnRpbi5zY2h1bHolNDBjaGVycnkuZGUlN0NkYzc1 NDc5MWI2ODQ0NTA2YjExYzA4ZGQ2OWY0NDRhNyU3QzVlMGUxYjUyMjFiNTRlN2I4M2JiNTE0ZWM0 NjA2NzdlJTdDMCU3QzAlN0M2Mzg3ODMyMjAzMzAwNTg1MTYlN0NVbmtub3duJTdDVFdGcGJHWnNi M2Q4ZXlKRmJYQjBlVTFoY0draU9uUnlkV1VzSWxZaU9pSXdMakF1TURBd01DSXNJbEFpT2lKWGFX NHpNaUlzSWtGT0lqb2lUV0ZwYkNJc0lsZFVJam95ZlElM0QlM0QlN0MwJTdDJTdDJTdDJnNkYXRh PTRidjlwVWg2YVNEMEdWTEo0WnZ1eXZveDFLMHh4d2Y4M0tYWDg2UXN2TW8lM0QmcmVzZXJ2ZWQ9 MAo+Pj4gCj4+PiBJIHNlZSAyNDk2YjJhYWFjZjEzNzI1MGY0Y2E0NDlmNDY1ZTJjYWRhYWJiMGU4 IGdvdCB0aGUgSGVscGVkLWJ5Cj4+PiByZXBsYWNlZCBieSBhIFN1Z2dlc3RlZC1ieSBmb3IgZXhh bXBsZSwgYnV0IEkgc2VlIG90aGVyIHBhdGNoZXMgd2l0aAo+Pj4gSGVscGVkLWJ5Li4uIGlmIHRo YXQgaXMgYSBzdGFuZGFyZCB0cmFpbGVyIGZvciBrZXJuZWwgcGF0Y2hlcywgdGhlbgo+Pj4gbWF5 YmUgd2Ugc2hvdWxkIGFkZCBpdCB0byB0aGF0IGRvYz8KPj4gCj4+IEFjdHVhbGx5LCBJIGFscmVh ZHkgdHJpZWQgdG8gZ2V0IHRoZSBIZWxwZWQtYnkgdGFnIGFkZGVkIHRvIHRoZQo+PiBrZXJuZWwg ZG9jdW1lbnRhdGlvbiwgYnkgc3VibWl0dGluZyBhIHNtYWxsIHBhdGNoIHNlcmllcy4gWypdCj4+ IFVuZm9ydHVuYXRlbHksIGl0IGdvdCByZWplY3RlZC4gOi8KPj4gCj4+IEhvd2V2ZXIsIEhlaWtv IGFjY2VwdHMgSGVscGVkLWJ5IHRhZ3MgYW5kIG5vYm9keSBoaWdoZXIgdXAgdGhlCj4+IHRyZWUg c2VlbXMgdG8gY29tcGxhaW4sIHNvIHdlIHNob3VsZCBiZSBmaW5lLiA6KcKgIEl0IGlzbid0IHRo ZQo+PiBjYXNlIHdpdGggYWxsIG1haW50YWluZXJzLCB0aG91Z2guCj4+IAo+PiBbKl0gaHR0cHM6 Ly9ldXIwMi5zYWZlbGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/IAo+PiB1cmw9aHR0cHMl M0ElMkYlMkZsb3JlLmtlcm5lbC5vcmclMkZhbGwlMkZjb3Zlci4xNzMwODc0Mjk2LmdpdC5kc2lt aWMlNDBtYW5qYXJvLm9yZyUyRlQlMkYlMjN1JmRhdGE9MDUlN0MwMiU3Q3F1ZW50aW4uc2NodWx6 JTQwY2hlcnJ5LmRlJTdDZGM3NTQ3OTFiNjg0NDUwNmIxMWMwOGRkNjlmNDQ0YTclN0M1ZTBlMWI1 MjIxYjU0ZTdiODNiYjUxNGVjNDYwNjc3ZSU3QzAlN0MwJTdDNjM4NzgzMjIwMzMwMDcwNDIyJTdD VW5rbm93biU3Q1RXRnBiR1pzYjNkOGV5SkZiWEIwZVUxaGNHa2lPblJ5ZFdVc0lsWWlPaUl3TGpB dU1EQXdNQ0lzSWxBaU9pSlhhVzR6TWlJc0lrRk9Jam9pVFdGcGJDSXNJbGRVSWpveWZRJTNEJTNE JTdDMCU3QyU3QyU3QyZzZGF0YT0zZFpnU0clMkZCVDZmJTJGZnFzN0QzMEh2RWwxOFN6cVlQd05l VUdXQlpmTUFxTSUzRCZyZXNlcnZlZD0wCj4gCj4gQXJlIHlvdSB0cnlpbmcgdG8gdXAgdGhlIG51 bWJlcnMgb2YgSGVscGVkLWJ5IGluIGNvbW1pdCBsb2dzIHRvIG1ha2UKPiBpdCBhIHJlYXNvbmFi bGUgcmVxdWVzdCB0byBhZGQgdGhlIHRyYWlsZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gOikgPwoK SXQncyBqdXN0IHRoYXQgSGVscGVkLWJ5IGlzLCB0byBtZSwgb2YgYSBiaXQgImhpZ2hlciB2YWx1 ZSIgdGhhbgpTdWdnZXN0ZWQtYnkgb3IgUmVwb3J0ZWQtYnksIGJlY2F1c2UgSGVscGVkLWJ5IG1l YW5zIHRoYXQgdGhlCnRhZ2dlZCBwZXJzb24gY29udHJpYnV0ZWQgbW9yZSB0byB0aGUgcGF0Y2gg dGhhbiBqdXN0IHN1Z2dlc3RpbmcKaXQgb3IgcmVwb3J0aW5nIGEgYnVnLiAgSW4gYWRkaXRpb24s IGhhdmluZyBtb3JlIEhlbHBlZC1ieSB0YWdzCnByZXNlbnQgaW4gdmFyaW91cyBjb21taXRzIGNh biBoZWxwIGEgYml0IHdpdGgsIHBvc3NpYmx5LCBtYWtpbmcKaXQgb2ZmaWNpYWxseSBzdXBwb3J0 ZWQgYXQgc29tZSBwb2ludCBpbiB0aGUgZnV0dXJlLiA6KQoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXgtcm9ja2NoaXAgbWFpbGluZyBsaXN0Ckxp bnV4LXJvY2tjaGlwQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5v cmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1yb2NrY2hpcAo=