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 X-Spam-Level: X-Spam-Status: No, score=-5.4 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4CFC4C5DF60 for ; Fri, 8 Nov 2019 14:32:08 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 160F32085B for ; Fri, 8 Nov 2019 14:32:08 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="Mpd+gMfL" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726232AbfKHOcH (ORCPT ); Fri, 8 Nov 2019 09:32:07 -0500 Received: from perceval.ideasonboard.com ([213.167.242.64]:49012 "EHLO perceval.ideasonboard.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726036AbfKHOcH (ORCPT ); Fri, 8 Nov 2019 09:32:07 -0500 Received: from pendragon.ideasonboard.com (81-175-216-236.bb.dnainternet.fi [81.175.216.236]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 949172D1; Fri, 8 Nov 2019 15:32:04 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1573223524; bh=7ClG/YHQ0s5DUh3GBvfTpfT8+FbIQ9ia6XiveSy9mcw=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=Mpd+gMfLVw8cwcPzfAwxoBXDS3/5IJVcBbUzM6GTUPdwR4D3qWUnRfjVCNMb+wr2z YJxrmxeKLMYtChVNPsBjYzkcZGyeC1SUgp1EGQh5YGubvNS9C8/9JLkrKI5d1E/+lZ RvrDhocJ+QX9JhhzlFr+R1WbnlT7RP/LcJGKB3SY= Date: Fri, 8 Nov 2019 16:31:55 +0200 From: Laurent Pinchart To: Rob Herring Cc: dri-devel , Michal Simek , Hyun Kwon , Satish Kumar Nagireddy , devicetree@vger.kernel.org Subject: Re: [PATCH v9 1/4] dt-bindings: display: xlnx: Add ZynqMP DP subsystem bindings Message-ID: <20191108143155.GA15731@pendragon.ideasonboard.com> References: <20190925235544.11524-1-laurent.pinchart@ideasonboard.com> <20190925235544.11524-2-laurent.pinchart@ideasonboard.com> <20190926142318.GB16469@pendragon.ideasonboard.com> <20191108140733.GJ4866@pendragon.ideasonboard.com> <20191108141040.GK4866@pendragon.ideasonboard.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20191108141040.GK4866@pendragon.ideasonboard.com> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org On Fri, Nov 08, 2019 at 04:10:40PM +0200, Laurent Pinchart wrote: > On Fri, Nov 08, 2019 at 04:07:33PM +0200, Laurent Pinchart wrote: > > On Thu, Sep 26, 2019 at 09:57:29AM -0500, Rob Herring wrote: > > > On Thu, Sep 26, 2019 at 9:23 AM Laurent Pinchart wrote: > > >> On Thu, Sep 26, 2019 at 09:15:01AM -0500, Rob Herring wrote: > > >>> On Wed, Sep 25, 2019 at 6:56 PM Laurent Pinchart wrote: > > >>>> > > >>>> From: Hyun Kwon > > >>>> > > >>>> The bindings describe the ZynqMP DP subsystem. They don't support the > > >>>> interface with the programmable logic (FPGA) or audio yet. > > >>>> > > >>>> Signed-off-by: Hyun Kwon > > >>>> Signed-off-by: Laurent Pinchart > > >>>> --- > > >>>> Changes since v8: > > >>>> > > >>>> - Convert to yaml > > >>>> - Rename aclk to dp_apb_clk > > >>> > > >>> /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/display/xlnx/xlnx,zynqmp-dpsub.example.dt.yaml: > > >>> display@fd4a0000: clock-names:2: 'dp_vtc_pixel_clk_in' was expected > > >> > > >> If you allow me to steal a bit of your brain time, could you help me > > >> expressing the clocks constraint ? > > >> > > >> clocks: > > >> description: > > >> The AXI clock and at least one video clock are mandatory, the audio clock > > >> optional. > > >> minItems: 2 > > >> maxItems: 4 > > >> items: > > >> - description: AXI clock > > >> - description: Audio clock > > >> - description: Non-live video clock (from Processing System) > > >> - description: Live video clock (from Programmable Logic) > > >> clock-names: > > >> minItems: 2 > > >> maxItems: 4 > > >> items: > > >> - const: dp_apb_clk > > >> - const: dp_aud_clk > > >> - const: dp_vtc_pixel_clk_in > > >> - const: dp_live_video_in_clk > > >> > > >> dp_apb_clk is required, dp_aud_clk is optional, and at least one of > > >> dp_vtc_pixel_clk_in and dp_live_video_in_clk is required. > > > > > > I'm hoping people's inability to express the schema will prevent > > > complicated ones like this in the first place... > > > > > > clock-names: > > > oneOf: > > > - minItems: 3 > > > maxItems: 4 > > > items: > > > - const: dp_apb_clk > > > - const: dp_aud_clk > > > - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ] > > > - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ] > > > - minItems: 2 > > > maxItems: 3 > > > items: > > > - const: dp_apb_clk > > > - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ] > > > - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ] > > > > The above would make > > > > clock-names = "dp_apb_clk", "dp_vtc_pixel_clk_in", "dp_vtc_pixel_clk_in"; > > > > valid. I've investigated a little bit and found uniqueItems which solves > > my issue. > > > > Would the following simpler solution be acceptable ? > > > > clock-names: > > minItems: 2 > > maxItems: 4 > > items: > > - const: dp_apb_clk > > - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ] > > - const: dp_aud_clk > > - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ] > > uniqueItems: true > > To give more context, > > clocks: > description: > The AXI clock and at least one video clock are mandatory, the audio clock > is optional. > minItems: 2 > maxItems: 4 > items: > - description: dp_apb_clk is the AXI clock > - description: dp_aud_clk is the Audio clock > - description: > dp_vtc_pixel_clk_in is the non-live video clock (from Processing > System) > - description: > dp_live_video_in_clk is the live video clock (from Programmable > Logic) > clock-names: > minItems: 2 > maxItems: 4 > items: > - const: dp_apb_clk > - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ] > - const: dp_aud_clk > - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ] > uniqueItems: true There's something going on that I can't really understand... clock-names: minItems: 2 maxItems: 4 items: - const: dp_apb_clk - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ] - const: dp_aud_clk - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ] uniqueItems: true results in dt_mk_schema complaining about an invalid schema. However, the following works: clock-names: oneOf: - minItems: 2 maxItems: 4 items: - const: dp_apb_clk - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ] - const: dp_aud_clk - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ] uniqueItems: true I assume this is due to clock-names being a string-array, which already contains uniqueItems. However, if I leave uniqueItems out, an example with a duplicated clock-names validates fine. > > > Strictly speaking, that leaves items clocks wrong, but 'description' > > > doesn't do anything. So I'd just leave it as is. > > > > Speaking of which, there doesn't seem to be anything that validates the > > size of clocks and clock-names being identical. Is that a known issue ? -- Regards, Laurent Pinchart From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH v9 1/4] dt-bindings: display: xlnx: Add ZynqMP DP subsystem bindings Date: Fri, 8 Nov 2019 16:31:55 +0200 Message-ID: <20191108143155.GA15731@pendragon.ideasonboard.com> References: <20190925235544.11524-1-laurent.pinchart@ideasonboard.com> <20190925235544.11524-2-laurent.pinchart@ideasonboard.com> <20190926142318.GB16469@pendragon.ideasonboard.com> <20191108140733.GJ4866@pendragon.ideasonboard.com> <20191108141040.GK4866@pendragon.ideasonboard.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by gabe.freedesktop.org (Postfix) with ESMTPS id 76EE46F9B6 for ; Fri, 8 Nov 2019 14:32:06 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20191108141040.GK4866@pendragon.ideasonboard.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Rob Herring Cc: devicetree@vger.kernel.org, Hyun Kwon , Michal Simek , dri-devel , Satish Kumar Nagireddy List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBOb3YgMDgsIDIwMTkgYXQgMDQ6MTA6NDBQTSArMDIwMCwgTGF1cmVudCBQaW5jaGFy dCB3cm90ZToKPiBPbiBGcmksIE5vdiAwOCwgMjAxOSBhdCAwNDowNzozM1BNICswMjAwLCBMYXVy ZW50IFBpbmNoYXJ0IHdyb3RlOgo+ID4gT24gVGh1LCBTZXAgMjYsIDIwMTkgYXQgMDk6NTc6MjlB TSAtMDUwMCwgUm9iIEhlcnJpbmcgd3JvdGU6Cj4gPiA+IE9uIFRodSwgU2VwIDI2LCAyMDE5IGF0 IDk6MjMgQU0gTGF1cmVudCBQaW5jaGFydCB3cm90ZToKPiA+ID4+IE9uIFRodSwgU2VwIDI2LCAy MDE5IGF0IDA5OjE1OjAxQU0gLTA1MDAsIFJvYiBIZXJyaW5nIHdyb3RlOgo+ID4gPj4+IE9uIFdl ZCwgU2VwIDI1LCAyMDE5IGF0IDY6NTYgUE0gTGF1cmVudCBQaW5jaGFydCB3cm90ZToKPiA+ID4+ Pj4KPiA+ID4+Pj4gRnJvbTogSHl1biBLd29uIDxoeXVuLmt3b25AeGlsaW54LmNvbT4KPiA+ID4+ Pj4KPiA+ID4+Pj4gVGhlIGJpbmRpbmdzIGRlc2NyaWJlIHRoZSBaeW5xTVAgRFAgc3Vic3lzdGVt LiBUaGV5IGRvbid0IHN1cHBvcnQgdGhlCj4gPiA+Pj4+IGludGVyZmFjZSB3aXRoIHRoZSBwcm9n cmFtbWFibGUgbG9naWMgKEZQR0EpIG9yIGF1ZGlvIHlldC4KPiA+ID4+Pj4KPiA+ID4+Pj4gU2ln bmVkLW9mZi1ieTogSHl1biBLd29uIDxoeXVuLmt3b25AeGlsaW54LmNvbT4KPiA+ID4+Pj4gU2ln bmVkLW9mZi1ieTogTGF1cmVudCBQaW5jaGFydCA8bGF1cmVudC5waW5jaGFydEBpZGVhc29uYm9h cmQuY29tPgo+ID4gPj4+PiAtLS0KPiA+ID4+Pj4gQ2hhbmdlcyBzaW5jZSB2ODoKPiA+ID4+Pj4K PiA+ID4+Pj4gLSBDb252ZXJ0IHRvIHlhbWwKPiA+ID4+Pj4gLSBSZW5hbWUgYWNsayB0byBkcF9h cGJfY2xrCj4gPiA+Pj4KPiA+ID4+PiAvYnVpbGRzL3JvYmhlcnJpbmcvbGludXgtZHQtcmV2aWV3 L0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3hsbngveGxueCx6eW5x bXAtZHBzdWIuZXhhbXBsZS5kdC55YW1sOgo+ID4gPj4+IGRpc3BsYXlAZmQ0YTAwMDA6IGNsb2Nr LW5hbWVzOjI6ICdkcF92dGNfcGl4ZWxfY2xrX2luJyB3YXMgZXhwZWN0ZWQKPiA+ID4+Cj4gPiA+ PiBJZiB5b3UgYWxsb3cgbWUgdG8gc3RlYWwgYSBiaXQgb2YgeW91ciBicmFpbiB0aW1lLCBjb3Vs ZCB5b3UgaGVscCBtZQo+ID4gPj4gZXhwcmVzc2luZyB0aGUgY2xvY2tzIGNvbnN0cmFpbnQgPwo+ ID4gPj4KPiA+ID4+ICAgY2xvY2tzOgo+ID4gPj4gICAgIGRlc2NyaXB0aW9uOgo+ID4gPj4gICAg ICAgVGhlIEFYSSBjbG9jayBhbmQgYXQgbGVhc3Qgb25lIHZpZGVvIGNsb2NrIGFyZSBtYW5kYXRv cnksIHRoZSBhdWRpbyBjbG9jawo+ID4gPj4gICAgICAgb3B0aW9uYWwuCj4gPiA+PiAgICAgbWlu SXRlbXM6IDIKPiA+ID4+ICAgICBtYXhJdGVtczogNAo+ID4gPj4gICAgIGl0ZW1zOgo+ID4gPj4g ICAgICAgLSBkZXNjcmlwdGlvbjogQVhJIGNsb2NrCj4gPiA+PiAgICAgICAtIGRlc2NyaXB0aW9u OiBBdWRpbyBjbG9jawo+ID4gPj4gICAgICAgLSBkZXNjcmlwdGlvbjogTm9uLWxpdmUgdmlkZW8g Y2xvY2sgKGZyb20gUHJvY2Vzc2luZyBTeXN0ZW0pCj4gPiA+PiAgICAgICAtIGRlc2NyaXB0aW9u OiBMaXZlIHZpZGVvIGNsb2NrIChmcm9tIFByb2dyYW1tYWJsZSBMb2dpYykKPiA+ID4+ICAgY2xv Y2stbmFtZXM6Cj4gPiA+PiAgICAgbWluSXRlbXM6IDIKPiA+ID4+ICAgICBtYXhJdGVtczogNAo+ ID4gPj4gICAgIGl0ZW1zOgo+ID4gPj4gICAgICAgLSBjb25zdDogZHBfYXBiX2Nsawo+ID4gPj4g ICAgICAgLSBjb25zdDogZHBfYXVkX2Nsawo+ID4gPj4gICAgICAgLSBjb25zdDogZHBfdnRjX3Bp eGVsX2Nsa19pbgo+ID4gPj4gICAgICAgLSBjb25zdDogZHBfbGl2ZV92aWRlb19pbl9jbGsKPiA+ ID4+Cj4gPiA+PiBkcF9hcGJfY2xrIGlzIHJlcXVpcmVkLCBkcF9hdWRfY2xrIGlzIG9wdGlvbmFs LCBhbmQgYXQgbGVhc3Qgb25lIG9mCj4gPiA+PiBkcF92dGNfcGl4ZWxfY2xrX2luIGFuZCBkcF9s aXZlX3ZpZGVvX2luX2NsayBpcyByZXF1aXJlZC4KPiA+ID4gCj4gPiA+IEknbSBob3BpbmcgcGVv cGxlJ3MgaW5hYmlsaXR5IHRvIGV4cHJlc3MgdGhlIHNjaGVtYSB3aWxsIHByZXZlbnQKPiA+ID4g Y29tcGxpY2F0ZWQgb25lcyBsaWtlIHRoaXMgaW4gdGhlIGZpcnN0IHBsYWNlLi4uCj4gPiA+IAo+ ID4gPiBjbG9jay1uYW1lczoKPiA+ID4gICBvbmVPZjoKPiA+ID4gICAgIC0gbWluSXRlbXM6IDMK PiA+ID4gICAgICAgbWF4SXRlbXM6IDQKPiA+ID4gICAgICAgaXRlbXM6Cj4gPiA+ICAgICAgICAg LSBjb25zdDogZHBfYXBiX2Nsawo+ID4gPiAgICAgICAgIC0gY29uc3Q6IGRwX2F1ZF9jbGsKPiA+ ID4gICAgICAgICAtIGVudW06IFsgZHBfdnRjX3BpeGVsX2Nsa19pbiwgZHBfbGl2ZV92aWRlb19p bl9jbGsgXQo+ID4gPiAgICAgICAgIC0gZW51bTogWyBkcF92dGNfcGl4ZWxfY2xrX2luLCBkcF9s aXZlX3ZpZGVvX2luX2NsayBdCj4gPiA+ICAgICAtIG1pbkl0ZW1zOiAyCj4gPiA+ICAgICAgIG1h eEl0ZW1zOiAzCj4gPiA+ICAgICAgIGl0ZW1zOgo+ID4gPiAgICAgICAgIC0gY29uc3Q6IGRwX2Fw Yl9jbGsKPiA+ID4gICAgICAgICAtIGVudW06IFsgZHBfdnRjX3BpeGVsX2Nsa19pbiwgZHBfbGl2 ZV92aWRlb19pbl9jbGsgXQo+ID4gPiAgICAgICAgIC0gZW51bTogWyBkcF92dGNfcGl4ZWxfY2xr X2luLCBkcF9saXZlX3ZpZGVvX2luX2NsayBdCj4gPiAKPiA+IFRoZSBhYm92ZSB3b3VsZCBtYWtl Cj4gPiAKPiA+IAljbG9jay1uYW1lcyA9ICJkcF9hcGJfY2xrIiwgImRwX3Z0Y19waXhlbF9jbGtf aW4iLCAiZHBfdnRjX3BpeGVsX2Nsa19pbiI7Cj4gPiAKPiA+IHZhbGlkLiBJJ3ZlIGludmVzdGln YXRlZCBhIGxpdHRsZSBiaXQgYW5kIGZvdW5kIHVuaXF1ZUl0ZW1zIHdoaWNoIHNvbHZlcwo+ID4g bXkgaXNzdWUuCj4gPiAKPiA+IFdvdWxkIHRoZSBmb2xsb3dpbmcgc2ltcGxlciBzb2x1dGlvbiBi ZSBhY2NlcHRhYmxlID8KPiA+IAo+ID4gY2xvY2stbmFtZXM6Cj4gPiAgICAgbWluSXRlbXM6IDIK PiA+ICAgICBtYXhJdGVtczogNAo+ID4gICAgIGl0ZW1zOgo+ID4gICAgICAgLSBjb25zdDogZHBf YXBiX2Nsawo+ID4gICAgICAgLSBlbnVtOiBbIGRwX3Z0Y19waXhlbF9jbGtfaW4sIGRwX2xpdmVf dmlkZW9faW5fY2xrIF0KPiA+ICAgICAgIC0gY29uc3Q6IGRwX2F1ZF9jbGsKPiA+ICAgICAgIC0g ZW51bTogWyBkcF92dGNfcGl4ZWxfY2xrX2luLCBkcF9saXZlX3ZpZGVvX2luX2NsayBdCj4gPiAg ICAgdW5pcXVlSXRlbXM6IHRydWUKPiAKPiBUbyBnaXZlIG1vcmUgY29udGV4dCwKPiAKPiAgIGNs b2NrczoKPiAgICAgZGVzY3JpcHRpb246Cj4gICAgICAgVGhlIEFYSSBjbG9jayBhbmQgYXQgbGVh c3Qgb25lIHZpZGVvIGNsb2NrIGFyZSBtYW5kYXRvcnksIHRoZSBhdWRpbyBjbG9jawo+ICAgICAg IGlzIG9wdGlvbmFsLgo+ICAgICBtaW5JdGVtczogMgo+ICAgICBtYXhJdGVtczogNAo+ICAgICBp dGVtczoKPiAgICAgICAtIGRlc2NyaXB0aW9uOiBkcF9hcGJfY2xrIGlzIHRoZSBBWEkgY2xvY2sK PiAgICAgICAtIGRlc2NyaXB0aW9uOiBkcF9hdWRfY2xrIGlzIHRoZSBBdWRpbyBjbG9jawo+ICAg ICAgIC0gZGVzY3JpcHRpb246Cj4gICAgICAgICAgIGRwX3Z0Y19waXhlbF9jbGtfaW4gaXMgdGhl IG5vbi1saXZlIHZpZGVvIGNsb2NrIChmcm9tIFByb2Nlc3NpbmcKPiAgICAgICAgICAgU3lzdGVt KQo+ICAgICAgIC0gZGVzY3JpcHRpb246Cj4gICAgICAgICAgIGRwX2xpdmVfdmlkZW9faW5fY2xr IGlzIHRoZSBsaXZlIHZpZGVvIGNsb2NrIChmcm9tIFByb2dyYW1tYWJsZQo+ICAgICAgICAgICBM b2dpYykKPiAgIGNsb2NrLW5hbWVzOgo+ICAgICAgIG1pbkl0ZW1zOiAyCj4gICAgICAgbWF4SXRl bXM6IDQKPiAgICAgICBpdGVtczoKPiAgICAgICAgIC0gY29uc3Q6IGRwX2FwYl9jbGsKPiAgICAg ICAgIC0gZW51bTogWyBkcF92dGNfcGl4ZWxfY2xrX2luLCBkcF9saXZlX3ZpZGVvX2luX2NsayBd Cj4gICAgICAgICAtIGNvbnN0OiBkcF9hdWRfY2xrCj4gICAgICAgICAtIGVudW06IFsgZHBfdnRj X3BpeGVsX2Nsa19pbiwgZHBfbGl2ZV92aWRlb19pbl9jbGsgXQo+ICAgICAgIHVuaXF1ZUl0ZW1z OiB0cnVlCgpUaGVyZSdzIHNvbWV0aGluZyBnb2luZyBvbiB0aGF0IEkgY2FuJ3QgcmVhbGx5IHVu ZGVyc3RhbmQuLi4KCmNsb2NrLW5hbWVzOgogIG1pbkl0ZW1zOiAyCiAgbWF4SXRlbXM6IDQKICBp dGVtczoKICAgIC0gY29uc3Q6IGRwX2FwYl9jbGsKICAgIC0gZW51bTogWyBkcF92dGNfcGl4ZWxf Y2xrX2luLCBkcF9saXZlX3ZpZGVvX2luX2NsayBdCiAgICAtIGNvbnN0OiBkcF9hdWRfY2xrCiAg ICAtIGVudW06IFsgZHBfdnRjX3BpeGVsX2Nsa19pbiwgZHBfbGl2ZV92aWRlb19pbl9jbGsgXQog IHVuaXF1ZUl0ZW1zOiB0cnVlCgpyZXN1bHRzIGluIGR0X21rX3NjaGVtYSBjb21wbGFpbmluZyBh Ym91dCBhbiBpbnZhbGlkIHNjaGVtYS4gSG93ZXZlciwKdGhlIGZvbGxvd2luZyB3b3JrczoKCmNs b2NrLW5hbWVzOgogIG9uZU9mOgogICAgLSBtaW5JdGVtczogMgogICAgICBtYXhJdGVtczogNAog ICAgICBpdGVtczoKICAgICAgICAtIGNvbnN0OiBkcF9hcGJfY2xrCiAgICAgICAgLSBlbnVtOiBb IGRwX3Z0Y19waXhlbF9jbGtfaW4sIGRwX2xpdmVfdmlkZW9faW5fY2xrIF0KICAgICAgICAtIGNv bnN0OiBkcF9hdWRfY2xrCiAgICAgICAgLSBlbnVtOiBbIGRwX3Z0Y19waXhlbF9jbGtfaW4sIGRw X2xpdmVfdmlkZW9faW5fY2xrIF0KICAgICAgdW5pcXVlSXRlbXM6IHRydWUKCkkgYXNzdW1lIHRo aXMgaXMgZHVlIHRvIGNsb2NrLW5hbWVzIGJlaW5nIGEgc3RyaW5nLWFycmF5LCB3aGljaCBhbHJl YWR5CmNvbnRhaW5zIHVuaXF1ZUl0ZW1zLiBIb3dldmVyLCBpZiBJIGxlYXZlIHVuaXF1ZUl0ZW1z IG91dCwgYW4gZXhhbXBsZQp3aXRoIGEgZHVwbGljYXRlZCBjbG9jay1uYW1lcyB2YWxpZGF0ZXMg ZmluZS4KCj4gPiA+IFN0cmljdGx5IHNwZWFraW5nLCB0aGF0IGxlYXZlcyBpdGVtcyBjbG9ja3Mg d3JvbmcsIGJ1dCAnZGVzY3JpcHRpb24nCj4gPiA+IGRvZXNuJ3QgZG8gYW55dGhpbmcuIFNvIEkn ZCBqdXN0IGxlYXZlIGl0IGFzIGlzLgo+ID4gCj4gPiBTcGVha2luZyBvZiB3aGljaCwgdGhlcmUg ZG9lc24ndCBzZWVtIHRvIGJlIGFueXRoaW5nIHRoYXQgdmFsaWRhdGVzIHRoZQo+ID4gc2l6ZSBv ZiBjbG9ja3MgYW5kIGNsb2NrLW5hbWVzIGJlaW5nIGlkZW50aWNhbC4gSXMgdGhhdCBhIGtub3du IGlzc3VlID8KCi0tIApSZWdhcmRzLAoKTGF1cmVudCBQaW5jaGFydApfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=