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 9A8F5C54E5D for ; Mon, 18 Mar 2024 13:37:32 +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=sTGK7rw3Q5VXQyCcaj22BmLWi3yuUVIpX3BKt6iwfxw=; b=r0VCzCHsr5Ede3 eDrSgvfRlK/zkjRQlkZGvBLrk/I7DGlxajGRhF1tanW0VQtCNxtgm6YfuGBzXhXw/Jh30ALuPNK0g kjBpyLVciYyQPvXCRDHcipWVWZCbJN6UNDZ/Bxf7dFXrHL5mThAeueKuxyQG1CQu/vbmdKg3KzPkn GXpYmR74LTeRCS8Y6LsmUahs9PfIr1Xi4IwHW8C+s+n9k1Ay5lFkxZhvGDF12TME5kCyHj3o5wsHU qLTftg7ScyDC+f/Yxxu2pKwHEUaLMmLJDr1LgujuounYKspTuKN9WDPT2UtfNQT51g3lS8aPS+JXD 392Bpt60rv6+3l3eYxww==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rmDB0-00000008gbU-1kB4; Mon, 18 Mar 2024 13:37:18 +0000 Received: from mgamail.intel.com ([192.198.163.15]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rmDAy-00000008gag-0sxZ; Mon, 18 Mar 2024 13:37:17 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1710769036; x=1742305036; h=date:from:to:cc:subject:message-id:references: mime-version:content-transfer-encoding:in-reply-to; bh=u82l/MBNpObPyrd/rtRsi0HOp2zPMN16KTaVMbMuxec=; b=YukdzySNC422o4qTKdjiuru78Ip8qyVKPzg3E77Kv/b25rc1OMz68KBA r9kw/U5Dg55KUojG40ieeJx4325Rw3KKqwwvFIiTmP7CgO2Y9JtSh68lK zNC7KIJ66wqAXcQQf3mpNx24CMZzhqFi8ICrlNRMPkh/QNWFnQmax9uBm BgaC4pM8+5eUsHBxBSSdefu9RoNwfQQDzELY/Litgijx9mbLVMhB2ntni WISkMfokBr2J2IT+3ub9gYDdTEUqfKKj0AFkDzDX3bJr5dhsXYrBeO/EP ZCbJdoKkaqCUVJwSYYMr1pc8ncMi213smrsA5LPqcQY4nDHMFQbuXd9SG g==; X-IronPort-AV: E=McAfee;i="6600,9927,11016"; a="5765142" X-IronPort-AV: E=Sophos;i="6.07,134,1708416000"; d="scan'208";a="5765142" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmvoesa109.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Mar 2024 06:37:12 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,11016"; a="827781787" X-IronPort-AV: E=Sophos;i="6.07,134,1708416000"; d="scan'208";a="827781787" Received: from stinkpipe.fi.intel.com (HELO stinkbox) ([10.237.72.74]) by orsmga001.jf.intel.com with SMTP; 18 Mar 2024 06:37:05 -0700 Received: by stinkbox (sSMTP sendmail emulation); Mon, 18 Mar 2024 15:37:05 +0200 Date: Mon, 18 Mar 2024 15:37:05 +0200 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: Maxime Ripard Cc: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Daniel Vetter , Jonathan Corbet , Sandy Huang , Heiko =?iso-8859-1?Q?St=FCbner?= , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Hans Verkuil , Sebastian Wick , dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-sunxi@lists.linux.dev Subject: Re: [PATCH v9 14/27] drm/connector: hdmi: Compute bpc and format automatically Message-ID: References: <20240311-kms-hdmi-connector-state-v9-0-d45890323344@kernel.org> <20240311-kms-hdmi-connector-state-v9-14-d45890323344@kernel.org> <20240318-organic-debonair-beetle-b2817b@houat> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20240318-organic-debonair-beetle-b2817b@houat> X-Patchwork-Hint: comment X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240318_063716_361991_FD0E148F X-CRM114-Status: GOOD ( 52.07 ) 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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gTW9uLCBNYXIgMTgsIDIwMjQgYXQgMDE6MDU6MjJQTSArMDEwMCwgTWF4aW1lIFJpcGFyZCB3 cm90ZToKPiBIaSBWaWxsZSwKPiAKPiBUaGFua3MgZm9yIHlvdXIgcmV2aWV3ICEKPiAKPiBPbiBG cmksIE1hciAxNSwgMjAyNCBhdCAxMDowNToxNkFNICswMjAwLCBWaWxsZSBTeXJqw6Rsw6Qgd3Jv dGU6Cj4gPiBPbiBNb24sIE1hciAxMSwgMjAyNCBhdCAwMzo0OTo0MlBNICswMTAwLCBNYXhpbWUg UmlwYXJkIHdyb3RlOgo+ID4gPiArc3RhdGljIGJvb2wKPiA+ID4gK3Npbmtfc3VwcG9ydHNfZm9y bWF0X2JwYyhjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4gPiArCQkJ IGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9pbmZvICppbmZvLAo+ID4gPiArCQkJIGNvbnN0IHN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAo+ID4gPiArCQkJIHVuc2lnbmVkIGludCBmb3Jt YXQsIHVuc2lnbmVkIGludCBicGMpCj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IGNvbm5lY3Rvci0+ZGV2Owo+ID4gPiArCXU4IHZpYyA9IGRybV9tYXRjaF9jZWFfbW9k ZShtb2RlKTsKPiA+ID4gKwo+ID4gPiArCWlmICh2aWMgPT0gMSAmJiBicGMgIT0gOCkgewo+ID4g PiArCQlkcm1fZGJnKGRldiwgIlZJQzEgcmVxdWlyZXMgYSBicGMgb2YgOCwgZ290ICV1XG4iLCBi cGMpOwo+ID4gCj4gPiBVc2Ugb2YgZHJtX2RiZygpIGZvciBrbXMgc3R1ZmYgaXMgc3VycHJpc2lu Zy4KPiA+IAo+ID4gPiArCQlyZXR1cm4gZmFsc2U7Cj4gPiA+ICsJfQo+ID4gCj4gPiBJIGRvbid0 IHRoaW5rIHdlIGhhdmUgdGhpcyBpbiBpOTE1LiBNeSBvcmlnaW5hbCBpbXByZXNzaW9uIHdhcyB0 aGF0IHlvdQo+ID4gY2FuIHVzZSBoaWdoZXIgY29sb3IgZGVwdGggaWYgeW91IGNhbiBkZXRlcm1p bmUgdGhlIHNpbmsgY2FwYWJpbGl0aWVzLAo+ID4gYnV0IGFsbCBzaW5rcyBhcmUgcmVxdWlyZWQg dG8gYWNjZXB0IDY0MHg0ODBAOGJwYyBhcyBhIGZhbGxiYWNrLgo+ID4gCj4gPiBidXQgQ1RBLTg2 MS1IIHNheXM6Cj4gPiAiNS40IENvbG9yIENvZGluZyAmIFF1YW50aXphdGlvbgo+ID4gIENvbXBv bmVudCBEZXB0aDogVGhlIGNvZGluZyBzaGFsbCBiZSBOLWJpdCwgd2hlcmUgTiA9IDgsIDEwLCAx Miwgb3IgMTYKPiA+ICBiaXRzL2NvbXBvbmVudCDigJQgZXhjZXB0IGluIHRoZSBjYXNlIG9mIHRo ZSBkZWZhdWx0IDY0MHg0ODAgVmlkZW8gVGltaW5nIDEsCj4gPiAgd2hlcmUgdGhlIHZhbHVlIG9m IE4gc2hhbGwgYmUgOC4iCj4gPiAKPiA+IFNvIHRoYXQgZG9lcyBzZWVtIHRvIGltcGx5IHRoYXQg eW91J3JlIHN1cHBvc2VkIHRvIHVzZSBleGFjdGx5IDhicGMuCj4gPiBUaG91Z2ggdGhlIHdvcmQg ImRlZmF1bHQiIGluIHRoZXJlIGlzIGNvbmZ1c2luZy4gQXJlIHRoZXkgc3BlY2lmaWNhbGx5Cj4g PiB1c2luZyB0aGF0IHRvIGluZGljYXRlIHRoYXQgdGhpcyBpcyBhYm91dCB0aGUgZmFsbGJhY2sg YmVoYXZpb3VyLCBvcgo+ID4gaXMgaXQganVzdCBpbmRpY2F0aW5nIHRoYXQgaXQgaXMgYSAiZGVm YXVsdCBtb2RlIHRoYXQgYWx3YXlzIGhhcyB0bwo+ID4gYmUgc3VwcG9ydGVkIi4gRHVubm8uIEkg Z3Vlc3Mgbm8gcmVhbCBoYXJtIGluIGZvcmNpbmcgOGJwYyBmb3IgNjQweDQ4MAo+ID4gc2luY2Ug bm8gb25lIGlzIGxpa2VseSB0byB1c2UgdGhhdCBmb3IgYW55IGhpZ2ggZmlkZWxpdHkgc3R1ZmYu Cj4gCj4gTXkgdW5kZXJzdGFuZGluZyB3YXMgdGhhdCBDVEEtODYxIG1hbmRhdGVzIHRoYXQgNjQw eDQ4MEA2MEh6IGlzCj4gc3VwcG9ydGVkLCBhbmQgbWVudGlvbnMgaXQgYmVpbmcgdGhlIGRlZmF1 bHQgdGltaW5nIG9uIGEgZmV3IG9jY3VyZW5jZXMsCj4gbGlrZSBpbiBzZWN0aW9uIDQgLSBWaWRl byBGb3JtYXRzIGFuZCBXYXZlZm9ybSBUaW1pbmdzIHRoYXQgc3RhdGVzICJUaGlzCj4gc2VjdGlv biBkZXNjcmliZXMgdGhlIGRlZmF1bHQgSVQgNjQweDQ4MCBWaWRlbyBUaW1pbmcgYXMgd2VsbCBh cyBhbGwgb2YKPiB0aGUgc3RhbmRhcmQgQ0UgVmlkZW8gVGltaW5ncy4iLCBvciBTZWN0aW9uIDYu MiAtIERlc2NyaWJpbmcgVmlkZW8KPiBGb3JtYXRzIGluIEVESUQgIlRoZSA2NDB4NDgwQDYwSHog ZmxhZywgaW4gdGhlIEVzdGFibGlzaGVkIFRpbWluZ3MgYXJlYSwKPiBzaGFsbCBhbHdheXMgYmUg c2V0LCBzaW5jZSB0aGUgNjQweDQ4MHAgZm9ybWF0IGlzIGEgbWFuZGF0b3J5IGRlZmF1bHQKPiB0 aW1pbmcuIgo+IAo+IFNvIG15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBkZWZhdWx0IGhlcmUgYXBw bGllcyB0byB0aGUgdGltaW5nIGl0c2VsZiwKPiBhbmQgbm90IHRoZSBicGMsIGFuZCBpcyB0aHVz IHRoZSBzZWNvbmQgaW50ZXJwcmV0YXRpb24geW91IHN1Z2dlc3RlZC4KPiAKPiBJJ2xsIGFkZCBh IGNvbW1lbnQgdG8gbWFrZSBpdCBjbGVhcmVyLgo+IAo+ID4gPiArc3RhdGljIGludAo+ID4gPiAr aGRtaV9jb21wdXRlX2Zvcm1hdChjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y LAo+ID4gPiArCQkgICAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKnN0YXRlLAo+ID4gPiAr CQkgICAgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCj4gPiA+ICsJCSAgICB1 bnNpZ25lZCBpbnQgYnBjKQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBjb25uZWN0b3ItPmRldjsKPiA+ID4gKwo+ID4gPiArCWlmIChoZG1pX3RyeV9mb3JtYXRfYnBj KGNvbm5lY3Rvciwgc3RhdGUsIG1vZGUsIGJwYywgSERNSV9DT0xPUlNQQUNFX1JHQikpIHsKPiA+ ID4gKwkJc3RhdGUtPmhkbWkub3V0cHV0X2Zvcm1hdCA9IEhETUlfQ09MT1JTUEFDRV9SR0I7Cj4g PiA+ICsJCXJldHVybiAwOwo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiArCWlmIChoZG1pX3RyeV9m b3JtYXRfYnBjKGNvbm5lY3Rvciwgc3RhdGUsIG1vZGUsIGJwYywgSERNSV9DT0xPUlNQQUNFX1lV VjQyMikpIHsKPiA+ID4gKwkJc3RhdGUtPmhkbWkub3V0cHV0X2Zvcm1hdCA9IEhETUlfQ09MT1JT UEFDRV9ZVVY0MjI7Cj4gPiA+ICsJCXJldHVybiAwOwo+ID4gPiArCX0KPiA+IAo+ID4gTG9va3Mg bGlrZSB5b3UncmUgcHJlZmVycmluZyBZQ2JDciA0OjI6MiBvdmVyIFJHQiA4YnBjLiBOb3Qgc3Vy ZQo+ID4gaWYgdGhhdCdzIGEgZ29vZCB0cmFkZW9mZiB0byBtYWtlLgo+IAo+IFllYWgsIGluZGVl ZC4gSSBndWVzcyBpdCdzIGEganVkZ2VtZW50IGNhbGwgb24gd2hldGhlciB3ZSBwcmlvcml0aXNl Cj4gbG93ZXJpbmcgdGhlIGJwYyBvdmVyIHNlbGVjdGluZyBZVVY0MjIsIGJ1dCBJIGd1ZXNzIEkg Y2FuIHRyeSBhbGwKPiBhdmFpbGFibGUgUkdCIGJwYyBiZWZvcmUgZmFsbGluZyBiYWNrIHRvIFlV VjQyMi4KPiAKPiA+IEluIGk5MTUgd2UgZG9uJ3QgY3VycmVudGx5IGV4cG9zZSA0OjI6MiBhdCBh bGwgYmVjYXVzZSBpdCBkb2Vzbid0Cj4gPiBoZWxwIGluIGdldHRpbmcgYSB3b3JraW5nIGRpc3Bs YXksIGFuZCB3ZSBoYXZlIG5vIHVhcGkgZm9yIHRoZQo+ID4gdXNlciB0byBmb3JjZSBpdCBpZiB0 aGV5IHJlYWxseSB3YW50IDQ6MjoyIG92ZXIgUkdCLgo+IAo+IEkgZ3Vlc3MgaWYgdGhlIHByaW9y aXR5IGlzIGdpdmVuIHRvIGxvd2VyaW5nIGJwYywgdGhlbiBpdCBpbmRlZWQgZG9lc24ndAo+IG1h a2Ugc2Vuc2UgdG8gc3VwcG9ydCBZVVY0MjIsIHNpbmNlIHRoZSBsaW1pdGluZyBmYWN0b3IgaXMg bGlrZWx5IHRvIGJlCj4gdGhlIFRNRFMgY2hhciByYXRlIGFuZCBZVVY0MjIgMTIgYnBjIGlzIGVx dWl2YWxlbnQgdG8gUkdCIDhicGMgdGhlcmUuCj4gCj4gZHctaGRtaSBvbiB0aGUgb3RoZXIgaGFu ZCB3aWxsIGFsd2F5cyBwdXQgWVVWNDIyIGFuZCBZVVY0NDQgYmVmb3JlIFJHQgo+IGZvciBhIGdp dmVuIGJwYywgd2hpY2ggaXMgd2VpcmQgdG8gbWU6Cj4gaHR0cHM6Ly9lbGl4aXIuYm9vdGxpbi5j b20vbGludXgvbGF0ZXN0L3NvdXJjZS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3N5bm9wc3lzL2R3 LWhkbWkuYyNMMjY5Ngo+IAo+IFdoYXQgaXMgZXZlbiB3ZWlyZGVyIHRvIG1lIGlzIHRoYXQgWVVW NDIyIGlzIGV4cGxpY2l0bHkgc3RhdGVkIHRvIGJlCj4gMTJicGMgb25seSwgc28gdGhlcmUncyBz b21lIGludmFsaWQgY29uZmlndXJhdGlvbnMgdGhlcmUgKDggYW5kIDEwIGJwYykuCj4gCj4gQW5k IGdpdmVuIHRoYXQgaXQncyBvcmRlciBieSBkZWNyZWFzaW5nIG9yZGVyIG9mIHByZWZlcmVuY2Us IEknbSBwcmV0dHkKPiBzdXJlIGl0J2xsIG5ldmVyIGFjdHVhbGx5IHBpY2sgYW55IFlVViBvciBS R0IgPiA4YnBjIGZvcm1hdCBzaW5jZSBSR0IKPiA4YnBjIGlzIHN1cGVyIGxpa2VseSB0byBiZSBh bHdheXMgYXZhaWxhYmxlIGFuZCB0aHVzIHBpY2tlZCBmaXJzdC4KCjhicGMgUkdCIGlzIGluIGZh Y3QgbWFuZGF0b3J5LgoKPiAKPiBJZiB3ZSB3YW50IHRvIGNvbnZlcmdlLCBJIHRoaW5rIHdlIHNo b3VsZCBhbWVuZCB0aGlzIGNvZGUgdG8gc3VwcG9ydAo+IFlVVjQyMCBmb3IgWVVWNDIwLW9ubHkg bW9kZXMgZmlyc3QsIGFuZCB0aGVuIHRoZSBSR0Igb3B0aW9ucyBsaWtlIGk5MTUKPiBpcyBkb2lu Zy4gQW5kIHRoZW4gaWYgc29tZW9uZSBpcyBpbnRlcmVzdGVkIGluIG1vcmUsIHdlIGNhbiBhbHdh eXMKPiBleHBhbmQgaXQgdG8gb3RoZXIgZm9ybWF0cy4KPiAKPiA+ID4gKwo+ID4gPiArCWRybV9k YmcoZGV2LCAiRmFpbGVkLiBObyBGb3JtYXQgU3VwcG9ydGVkIGZvciB0aGF0IGJwYyBjb3VudC5c biIpOwo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ ID4gK3N0YXRpYyBpbnQKPiA+ID4gK2hkbWlfY29tcHV0ZV9jb25maWcoY29uc3Qgc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+ID4gKwkJICAgIHN0cnVjdCBkcm1fY29ubmVjdG9y X3N0YXRlICpzdGF0ZSwKPiA+ID4gKwkJICAgIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2Rl ICptb2RlKQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjb25uZWN0 b3ItPmRldjsKPiA+ID4gKwl1bnNpZ25lZCBpbnQgbWF4X2JwYyA9IGNsYW1wX3QodW5zaWduZWQg aW50LAo+ID4gPiArCQkJCSAgICAgICBzdGF0ZS0+bWF4X2JwYywKPiA+ID4gKwkJCQkgICAgICAg OCwgY29ubmVjdG9yLT5tYXhfYnBjKTsKPiA+ID4gKwl1bnNpZ25lZCBpbnQgYnBjOwo+ID4gPiAr CWludCByZXQ7Cj4gPiA+ICsKPiA+ID4gKwlmb3IgKGJwYyA9IG1heF9icGM7IGJwYyA+PSA4OyBi cGMgLT0gMikgewo+ID4gPiArCQlkcm1fZGJnKGRldiwgIlRyeWluZyB3aXRoIGEgJWQgYnBjIG91 dHB1dFxuIiwgYnBjKTsKPiA+ID4gKwo+ID4gPiArCQlyZXQgPSBoZG1pX2NvbXB1dGVfZm9ybWF0 KGNvbm5lY3Rvciwgc3RhdGUsIG1vZGUsIGJwYyk7Cj4gPiAKPiA+IEhtbS4gQWN0dWFsbHkgSSdt IG5vdCBzdXJlIHlvdXIgNDoyOjIgc3R1ZmYgZXZlbiB3b3JrcyBzaW5jZSB5b3UgCj4gPiBjaGVj ayBmb3IgYnBjPT0xMiBpbiB0aGVyZSBhbmQgb25seSBjYWxsIHRoaXMgYmFzZWQgb24gdGhlIG1h eF9icGMuCj4gPiBJJ20gbm90IGNvbnZpbmNlZCBtYXhfYnBjIHdvdWxkIGFjdHVhbGx5IGJlIDEy IGZvciBhIHNpbmsgdGhhdAo+ID4gc3VwcG9ydHMgWUNiQ3IgNDoyOjIgYnV0IG5vdCAxMmJwYyBS R0IuCj4gCj4gSXQncyBhbm90aGVyIGRpc2N1c3Npb24gd2UgaGFkIGluIGFuIGVhcmxpZXIgdmVy c2lvbiwgYnV0IHllYWggd2UgbGFjawo+IHRoZSBpbmZyYXN0cnVjdHVyZSB0byBzdXBwb3J0IHRo b3NlIGZvciBub3cuIEkgc3RpbGwgYmVsaWV2ZSBpdCB3b3VsZAo+IHJlcXVpcmUgYW4gaW5jcmVh c2VkIG1heF9icGMgdG8gc2VsZWN0IFlVVjQyMiwgb3RoZXJ3aXNlIHRoaW5ncyB3b3VsZCBiZQo+ IHByZXR0eSBpbmNvbnNpc3RlbnQgd2l0aCBvdGhlciBZVVYgZm9ybWF0cy4KCklkZWFsbHkgSSdk IGxpa2UgdG8ga25vdyB0aGUgYWN0dWFsIGNvbG9yIGRlcHRoIG9mIHRoZSBwYW5lbAppbmRlcGVu ZGVudGx5IG9mIHRoZSBzdXBwb3J0ZWQgc2lnbmFsIGNvbG9yIGRlcHRocy4gVW5mb3J0dW5hdGVs eQpJIGRvbid0IHRoaW5rIEVESUQgZ2l2ZXMgdXMgdGhhdC4gQ2FuJ3QgcmVjYWxsIGlmIERpc3Bs YXlJRCBtaWdodApoYXZlIHNvbWV0aGluZyBhIGJpdCBtb3JlIHNlbnNpYmxlLgoKR2l2ZW4gaG93 IGluZm8tPmJwYyB3b3JrcyByaWdodCBub3csIEkgc3VwcG9zZSBpdCB3b3VsZCBtYWtlIHNlbnNl CnRvIGJ1bXAgaXQgdXAgdG8gMTIgd2hlbiA0OjI6MiBpcyBzdXBwb3J0ZWQuIEJ1dCBJJ3ZlIG5v dCB0aG91Z2h0CnRocm91Z2ggdGhlIGFjdHVhbCBpbXBsaWNhdGlvbnMgc3VjaCBhIGNoYW5nZS4K Cj4gQnV0IHllYWgsIHdlIG5lZWQgdG8gcHJvdmlkZSBhIGhvb2sgdG8gcmVwb3J0IHdlIGRvbid0 IHN1cHBvcnQgUkdCID4KPiA4YnBjIGZvciBIRE1JIDEuNCBkZXZpY2VzLiBXaGljaCBnb2VzIGJh Y2sgdG8gdGhlIHByZXZpb3VzIHF1ZXN0aW9uCj4gYWN0dWFsbHksIEkgYmVsaWV2ZSBpdCB3b3Vs ZCBzdGlsbCBwcm92aWRlIHZhbHVlIHRvIHN1cHBvcnQgWVVWNDIyIG9uCj4gdGhvc2UgZGV2aWNl cywgd2l0aCBzb21ldGhpbmcgbGlrZToKPiAKPiBmb3IgKGJwYyA9IG1heF9icGM7IGJwYyA+PSA4 OyBicGMgLT0gMikgewo+ICAgICBpZiAoIWNvbm5lY3Rvci0+aGRtaS0+ZnVuY3MtPnZhbGlkYXRl X2NvbmZpZyhtb2RlLCBSR0IsIGJwYykpCj4gICAgICAgIGNvbnRpbnVlOwo+IAo+ICAgICAvLyBT ZWxlY3QgUkdCIHdpdGggYnBjCj4gICAgIC4uLgo+IH0KPiAKPiBpZiAoY29ubmVjdG9yLT5oZG1p LT5mdW5jcy0+dmFsaWRhdGVfY29uZmlnKG1vZGUsIFlVVikgJiYKPiAgICAgaGRtaV90cnlfZm9y bWF0X2JwYyguLi4sIG1vZGUsIDEyLCBZVVY0MjIpIHsKPiAgICAvLyBTZWxlY3QgWVVWNDIyLCAx MiBicGMKPiAgICAuLi4KPiB9Cj4gCj4gV2hhdCBkbyB5b3UgdGhpbms/CgpTaW5jZSA4YnBjIFJH QiBtdXN0IGFsd2F5cyBiZSBzdXBwb3J0ZWQgdGhpcyBsb29rcwpsaWtlIGRlYWQgY29kZSB0byBt ZS4KCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4 LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK