From mboxrd@z Thu Jan 1 00:00:00 1970 Received: by 10.28.91.67 with SMTP id p64csp3843207wmb; Tue, 20 Mar 2018 06:36:24 -0700 (PDT) X-Google-Smtp-Source: AG47ELs0s6uHISQYwdFOAWJ31TWkedYbocXNRQTfg2C/xn3hK9pITpnt0PXvzY7X2RhQ6X7S88c+ X-Received: by 10.200.41.237 with SMTP id 42mr13085828qtt.159.1521552983874; Tue, 20 Mar 2018 06:36:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521552983; cv=none; d=google.com; s=arc-20160816; b=BADEaZu9Z3gFyDtqFvu0xJGTqNz8XTSAN9f0M0XMGb6To5NsRmNNoYA10Tvkz3YD+H 82Re2fqm17zzgLsMVbuMt7oDrBAD2BlEcAhtFKyfBozYjMsey/UedEotAXnXfe43Qh0P HPbGTVx1ZnP8qwPMgGosGWftPaboquUogL6Bso30zLF+Uv4rECX0oN6Cl5ox8XWIqnZW +Hu1Rn1NPPkzYbv1YmUNoKndbXkmTjGgLseslO00jrxLpDapeMM1lnOhDrqqcHVDzgZ5 OVbw7DVyO51vhnRsF2f97kMuJvCaPIqAJ8nfm4skq5a7hujhaZXTVRBatyXcL4m3dTAR fhGg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:to:from:date :arc-authentication-results; bh=0YDgDIYam5rfYqLpHdCxKup0g+1upDqXRTKuKp5E/dI=; b=pm+CyT4KmpyoF3vo3NWvq+hAPGYFhhW6SewDGAqz119el/Qw9fPG+1fGATosJP1mA6 8pc/KJkB80PoMhiCmxzICQSPw6frBxL6axtgAPE6s0KIcKkfcYdkXTRNa+zmoNr9uCaW EwdaO1ryneT6oyCnYGvzXiHilG9CLAISRtmfNx4UhMx2CyroE7+nfW8Fhq6Y76NueseZ vGA8aXaJ4ddAFk4+/AuHVE83klkjfR53V/5kt2aKGZHBBZgXgiyAfCD9iPBbygtAJ/6s Qu9xueha3w9ND6QUY84kkn/+COGIm5Cn2T87D+X7XURp1n4bB0Aky8VpVm7MwgIrJq8p EfxA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id t13si2022198qte.367.2018.03.20.06.36.23 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 20 Mar 2018 06:36:23 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from localhost ([::1]:48596 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eyHR9-0007R7-94 for alex.bennee@linaro.org; Tue, 20 Mar 2018 09:36:23 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43085) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eyGXr-00007P-HY for qemu-arm@nongnu.org; Tue, 20 Mar 2018 08:39:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eyGXq-0004Al-3N for qemu-arm@nongnu.org; Tue, 20 Mar 2018 08:39:15 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:39232 helo=mx1.redhat.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eyGXp-0004AP-U2; Tue, 20 Mar 2018 08:39:14 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id C62EF406804F; Tue, 20 Mar 2018 12:39:12 +0000 (UTC) Received: from redhat.com (unknown [10.33.36.46]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 8B1F1215CDB7; Tue, 20 Mar 2018 12:39:02 +0000 (UTC) Date: Tue, 20 Mar 2018 12:39:00 +0000 From: Daniel =?utf-8?B?UC4gQmVycmFuZ8Op?= To: "Michael S. Tsirkin" Message-ID: <20180320123900.GO4530@redhat.com> References: <1521510562-529051-1-git-send-email-mst@redhat.com> <8f06e1e3-4823-d8e8-43bd-c092c523849e@vivier.eu> <20180320094406.GD4530@redhat.com> <20180320141107-mutt-send-email-mst@kernel.org> <20180320121841.GN4530@redhat.com> <20180320142756-mutt-send-email-mst@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20180320142756-mutt-send-email-mst@kernel.org> User-Agent: Mutt/1.9.2 (2017-12-15) X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.5]); Tue, 20 Mar 2018 12:39:13 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.5]); Tue, 20 Mar 2018 12:39:13 +0000 (UTC) for IP:'10.11.54.6' DOMAIN:'int-mx06.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'berrange@redhat.com' RCPT:'' Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 66.187.233.73 X-Mailman-Approved-At: Tue, 20 Mar 2018 09:28:26 -0400 Subject: Re: [Qemu-arm] [PATCH] qemu: include generated files with <> and not "" X-BeenThere: qemu-arm@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Daniel =?utf-8?B?UC4gQmVycmFuZ8Op?= Cc: Peter Maydell , Dmitry Fleytman , sheepdog@lists.wpkg.org, Ronnie Sahlberg , Li Zhijian , David Hildenbrand , Jeff Cody , Zhang Chen , Mark Cave-Ayland , qemu-devel@nongnu.org, "Richard W.M. Jones" , Keith Busch , Max Filippov , Gerd Hoffmann , Jiri Pirko , Subbaraya Sundeep , Eric Blake , Michael Roth , Marcelo Tosatti , Josh Durgin , Stefano Stabellini , Alberto Garcia , zhanghailiang , Ben Warren , Marcel Apfelbaum , Yongbok Kim , Markus Armbruster , Stefan Berger , Christian Borntraeger , kvm@vger.kernel.org, =?utf-8?B?SGVydsOp?= Poussineau , Shannon Zhao , Anthony Perard , Liu Yuan , David Gibson , Andrzej Zaborowski , Jason Wang , Artyom Tarasenko , Thomas Huth , Riku Voipio , Fam Zheng , Eduardo Habkost , Corey Minyard , Amit Shah , Pavel Dovgalyuk , Stefan Weil , Xie Changlong , Alistair Francis , Peter Lieven , "Dr. David Alan Gilbert" , Fabien Chouteau , Greg Kurz , =?utf-8?Q?Marc-Andr=C3=A9?= Lureau , Alex Williamson , qemu-arm@nongnu.org, Peter Chubb , Yuval Shaia , Stefan Hajnoczi , Paolo Bonzini , xen-devel@lists.xenproject.org, BALATON Zoltan , John Snow , Richard Henderson , Kevin Wolf , Alexander Graf , qemu-block@nongnu.org, Hitoshi Mitake , Wen Congyang , qemu-s390x@nongnu.org, Cornelia Huck , Laurent Vivier , Juan Quintela , Max Reitz , Michael Walle , qemu-ppc@nongnu.org, Andreas =?utf-8?Q?F=C3=A4rber?= , Igor Mammedov , Hannes Reinecke , Aurelien Jarno , Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= Errors-To: qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org Sender: "Qemu-arm" X-TUID: 9IoQn/BA5sWk On Tue, Mar 20, 2018 at 02:28:42PM +0200, Michael S. Tsirkin wrote: > On Tue, Mar 20, 2018 at 12:18:41PM +0000, Daniel P. Berrang=C3=A9 wrote= : > > On Tue, Mar 20, 2018 at 02:12:24PM +0200, Michael S. Tsirkin wrote: > > > On Tue, Mar 20, 2018 at 09:44:06AM +0000, Daniel P. Berrang=C3=A9 w= rote: > > > > On Tue, Mar 20, 2018 at 09:58:23AM +0100, Laurent Vivier wrote: > > > > > Le 20/03/2018 =C3=A0 02:54, Michael S. Tsirkin a =C3=A9crit=C2=A0= : > > > > > > QEMU coding style at the moment asks for all non-system > > > > > > include files to be used with #include "foo.h". > > > > > > However this rule actually does not make sense and > > > > > > creates issues for when the included file is generated. > > > > >=20 > > > > > If you change that, we can have issue when a system include has= the same > > > > > name as our local include. With "", system header are tak= en first. > > > >=20 > > > > > > In C, include "file" means look in current directory, > > > > > > then on include search path. Current directory here > > > > > > means the source file directory. > > > > > > By comparison include means look on include search pat= h. > > > > >=20 > > > > > Not exactly, there is the notion of "system header" too. > > > > >=20 > > > > > https://gcc.gnu.org/onlinedocs/cpp/Include-Syntax.html > > > > >=20 > > > > > #include > > > > > This variant is used for system header files. It searches for a= file > > > > > named file in a standard list of system directories. You can pr= epend > > > > > directories to this list with the -I option (see Invocation). > > > > >=20 > > > > > #include "file" > > > > > This variant is used for header files of your own program. It s= earches > > > > > for a file named file first in the directory containing the cur= rent > > > > > file, then in the quote directories and then the same directori= es used > > > > > for . You can prepend directories to the list of quote di= rectories > > > > > with the -iquote option. > > > > >=20 > > > > > > As generated files are not in the search directory (unless th= e build > > > > > > directory happens to match the source directory), it does not= make sense > > > > > > to include them with "" - doing so is merely more work for pr= eprocessor > > > > > > and a source or errors if a stale file happens to exist in th= e source > > > > > > directory. > > > > >=20 > > > > > I agree there is a problem with stale files. But linux, for ins= tance, > > > > > asks for a "make mrproper" to avoid this. > > > >=20 > > > > We can follow what autoconf does, and add a check to configure to= see if > > > > there are generated files left in the source dir, when configurin= g with > > > > builddir !=3D srcdir, and exit with error, telling user to clean = their > > > > src dir first. > > > >=20 > > > > > > This changes include directives for all generated files, acro= ss the > > > > > > tree. The idea is to avoid sending a huge amount of email. B= ut when > > > > > > merging, the changes will be split with one commit per file, = e.g. for > > > > > > ease of bisect in case of build failures, and to ease merging= . > > > > > >=20 > > > > > > Note that should some generated files be missed by this tree-= wide > > > > > > refactoring, it isn't a big deal - this merely maintains the = status quo, > > > > > > and this can be addressed by a separate patch on top. > > > > > >=20 > > > > > > Signed-off-by: Michael S. Tsirkin > > > > >=20 > > > > > I think your idea conflicts with what Markus has started to do: > > > >=20 > > > > Yes, I don't think we should revert what Markus started. Both w= ays of > > > > referencing QEMU headers have downsides, but I think "..." has fe= wer > > > > downsides that "<....">. > > >=20 > > > Could you please explain what the advantage of "" is? > > > It seems to be gone since we moved headers away from > > > source. > >=20 > > We moved *some* headers into the include/ directory tree. > >=20 > > I still count 650+ headers which are alongside the .c files. >=20 > So for these, we should use "". None of these are generated files thou= gh. That leads to crazy inconsistent message for developers where 50% of QEMU header files must use <> and the other 50% of header files must use "". Having a consistent message for developers is one of the key reasons why Markus submitted the patches to standardize on the use of "" for QEMU header files, leaving <> for system headers & external dependancies. Regards, Daniel --=20 |: https://berrange.com -o- https://www.flickr.com/photos/dberran= ge :| |: https://libvirt.org -o- https://fstop138.berrange.c= om :| |: https://entangle-photo.org -o- https://www.instagram.com/dberran= ge :| From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel =?utf-8?B?UC4gQmVycmFuZ8Op?= Subject: Re: [PATCH] qemu: include generated files with <> and not "" Date: Tue, 20 Mar 2018 12:39:00 +0000 Message-ID: <20180320123900.GO4530@redhat.com> References: <1521510562-529051-1-git-send-email-mst@redhat.com> <8f06e1e3-4823-d8e8-43bd-c092c523849e@vivier.eu> <20180320094406.GD4530@redhat.com> <20180320141107-mutt-send-email-mst@kernel.org> <20180320121841.GN4530@redhat.com> <20180320142756-mutt-send-email-mst@kernel.org> Reply-To: Daniel =?utf-8?B?UC4gQmVycmFuZ8Op?= Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1eyGXq-000474-Gp for xen-devel@lists.xenproject.org; Tue, 20 Mar 2018 12:39:14 +0000 Content-Disposition: inline In-Reply-To: <20180320142756-mutt-send-email-mst@kernel.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: "Michael S. Tsirkin" Cc: Peter Maydell , Dmitry Fleytman , sheepdog@lists.wpkg.org, Ronnie Sahlberg , Li Zhijian , David Hildenbrand , Jeff Cody , Zhang Chen , Mark Cave-Ayland , qemu-devel@nongnu.org, "Richard W.M. Jones" , Keith Busch , Max Filippov , Gerd Hoffmann , "Edgar E. Iglesias" , Jiri Pirko , Subbaraya Sundeep , Eric Blake , Michael Roth , Marcelo Tosatti , Josh Durgin , Stefano Stabellini , Alberto Garcia , zhanghailiang List-Id: xen-devel@lists.xenproject.org T24gVHVlLCBNYXIgMjAsIDIwMTggYXQgMDI6Mjg6NDJQTSArMDIwMCwgTWljaGFlbCBTLiBUc2ly a2luIHdyb3RlOgo+IE9uIFR1ZSwgTWFyIDIwLCAyMDE4IGF0IDEyOjE4OjQxUE0gKzAwMDAsIERh bmllbCBQLiBCZXJyYW5nw6kgd3JvdGU6Cj4gPiBPbiBUdWUsIE1hciAyMCwgMjAxOCBhdCAwMjox MjoyNFBNICswMjAwLCBNaWNoYWVsIFMuIFRzaXJraW4gd3JvdGU6Cj4gPiA+IE9uIFR1ZSwgTWFy IDIwLCAyMDE4IGF0IDA5OjQ0OjA2QU0gKzAwMDAsIERhbmllbCBQLiBCZXJyYW5nw6kgd3JvdGU6 Cj4gPiA+ID4gT24gVHVlLCBNYXIgMjAsIDIwMTggYXQgMDk6NTg6MjNBTSArMDEwMCwgTGF1cmVu dCBWaXZpZXIgd3JvdGU6Cj4gPiA+ID4gPiBMZSAyMC8wMy8yMDE4IMOgIDAyOjU0LCBNaWNoYWVs IFMuIFRzaXJraW4gYSDDqWNyaXTCoDoKPiA+ID4gPiA+ID4gUUVNVSBjb2Rpbmcgc3R5bGUgYXQg dGhlIG1vbWVudCBhc2tzIGZvciBhbGwgbm9uLXN5c3RlbQo+ID4gPiA+ID4gPiBpbmNsdWRlIGZp bGVzIHRvIGJlIHVzZWQgd2l0aCAjaW5jbHVkZSAiZm9vLmgiLgo+ID4gPiA+ID4gPiBIb3dldmVy IHRoaXMgcnVsZSBhY3R1YWxseSBkb2VzIG5vdCBtYWtlIHNlbnNlIGFuZAo+ID4gPiA+ID4gPiBj cmVhdGVzIGlzc3VlcyBmb3Igd2hlbiB0aGUgaW5jbHVkZWQgZmlsZSBpcyBnZW5lcmF0ZWQuCj4g PiA+ID4gPiAKPiA+ID4gPiA+IElmIHlvdSBjaGFuZ2UgdGhhdCwgd2UgY2FuIGhhdmUgaXNzdWUg d2hlbiBhIHN5c3RlbSBpbmNsdWRlIGhhcyB0aGUgc2FtZQo+ID4gPiA+ID4gbmFtZSBhcyBvdXIg bG9jYWwgaW5jbHVkZS4gV2l0aCAiPEZJTEU+Iiwgc3lzdGVtIGhlYWRlciBhcmUgdGFrZW4gZmly c3QuCj4gPiA+ID4gCj4gPiA+ID4gPiA+IEluIEMsIGluY2x1ZGUgImZpbGUiIG1lYW5zIGxvb2sg aW4gY3VycmVudCBkaXJlY3RvcnksCj4gPiA+ID4gPiA+IHRoZW4gb24gaW5jbHVkZSBzZWFyY2gg cGF0aC4gQ3VycmVudCBkaXJlY3RvcnkgaGVyZQo+ID4gPiA+ID4gPiBtZWFucyB0aGUgc291cmNl IGZpbGUgZGlyZWN0b3J5Lgo+ID4gPiA+ID4gPiBCeSBjb21wYXJpc29uIGluY2x1ZGUgPGZpbGU+ IG1lYW5zIGxvb2sgb24gaW5jbHVkZSBzZWFyY2ggcGF0aC4KPiA+ID4gPiA+IAo+ID4gPiA+ID4g Tm90IGV4YWN0bHksIHRoZXJlIGlzIHRoZSBub3Rpb24gb2YgInN5c3RlbSBoZWFkZXIiIHRvby4K PiA+ID4gPiA+IAo+ID4gPiA+ID4gaHR0cHM6Ly9nY2MuZ251Lm9yZy9vbmxpbmVkb2NzL2NwcC9J bmNsdWRlLVN5bnRheC5odG1sCj4gPiA+ID4gPiAKPiA+ID4gPiA+ICNpbmNsdWRlIDxmaWxlPgo+ ID4gPiA+ID4gVGhpcyB2YXJpYW50IGlzIHVzZWQgZm9yIHN5c3RlbSBoZWFkZXIgZmlsZXMuIEl0 IHNlYXJjaGVzIGZvciBhIGZpbGUKPiA+ID4gPiA+IG5hbWVkIGZpbGUgaW4gYSBzdGFuZGFyZCBs aXN0IG9mIHN5c3RlbSBkaXJlY3Rvcmllcy4gWW91IGNhbiBwcmVwZW5kCj4gPiA+ID4gPiBkaXJl Y3RvcmllcyB0byB0aGlzIGxpc3Qgd2l0aCB0aGUgLUkgb3B0aW9uIChzZWUgSW52b2NhdGlvbiku Cj4gPiA+ID4gPiAKPiA+ID4gPiA+ICNpbmNsdWRlICJmaWxlIgo+ID4gPiA+ID4gVGhpcyB2YXJp YW50IGlzIHVzZWQgZm9yIGhlYWRlciBmaWxlcyBvZiB5b3VyIG93biBwcm9ncmFtLiBJdCBzZWFy Y2hlcwo+ID4gPiA+ID4gZm9yIGEgZmlsZSBuYW1lZCBmaWxlIGZpcnN0IGluIHRoZSBkaXJlY3Rv cnkgY29udGFpbmluZyB0aGUgY3VycmVudAo+ID4gPiA+ID4gZmlsZSwgdGhlbiBpbiB0aGUgcXVv dGUgZGlyZWN0b3JpZXMgYW5kIHRoZW4gdGhlIHNhbWUgZGlyZWN0b3JpZXMgdXNlZAo+ID4gPiA+ ID4gZm9yIDxmaWxlPi4gWW91IGNhbiBwcmVwZW5kIGRpcmVjdG9yaWVzIHRvIHRoZSBsaXN0IG9m IHF1b3RlIGRpcmVjdG9yaWVzCj4gPiA+ID4gPiB3aXRoIHRoZSAtaXF1b3RlIG9wdGlvbi4KPiA+ ID4gPiA+IAo+ID4gPiA+ID4gPiBBcyBnZW5lcmF0ZWQgZmlsZXMgYXJlIG5vdCBpbiB0aGUgc2Vh cmNoIGRpcmVjdG9yeSAodW5sZXNzIHRoZSBidWlsZAo+ID4gPiA+ID4gPiBkaXJlY3RvcnkgaGFw cGVucyB0byBtYXRjaCB0aGUgc291cmNlIGRpcmVjdG9yeSksIGl0IGRvZXMgbm90IG1ha2Ugc2Vu c2UKPiA+ID4gPiA+ID4gdG8gaW5jbHVkZSB0aGVtIHdpdGggIiIgLSBkb2luZyBzbyBpcyBtZXJl bHkgbW9yZSB3b3JrIGZvciBwcmVwcm9jZXNzb3IKPiA+ID4gPiA+ID4gYW5kIGEgc291cmNlIG9y IGVycm9ycyBpZiBhIHN0YWxlIGZpbGUgaGFwcGVucyB0byBleGlzdCBpbiB0aGUgc291cmNlCj4g PiA+ID4gPiA+IGRpcmVjdG9yeS4KPiA+ID4gPiA+IAo+ID4gPiA+ID4gSSBhZ3JlZSB0aGVyZSBp cyBhIHByb2JsZW0gd2l0aCBzdGFsZSBmaWxlcy4gQnV0IGxpbnV4LCBmb3IgaW5zdGFuY2UsCj4g PiA+ID4gPiBhc2tzIGZvciBhICJtYWtlIG1ycHJvcGVyIiB0byBhdm9pZCB0aGlzLgo+ID4gPiA+ IAo+ID4gPiA+IFdlIGNhbiBmb2xsb3cgd2hhdCBhdXRvY29uZiBkb2VzLCBhbmQgYWRkIGEgY2hl Y2sgdG8gY29uZmlndXJlIHRvIHNlZSBpZgo+ID4gPiA+IHRoZXJlIGFyZSBnZW5lcmF0ZWQgZmls ZXMgbGVmdCBpbiB0aGUgc291cmNlIGRpciwgd2hlbiBjb25maWd1cmluZyB3aXRoCj4gPiA+ID4g YnVpbGRkaXIgIT0gc3JjZGlyLCBhbmQgZXhpdCB3aXRoIGVycm9yLCB0ZWxsaW5nIHVzZXIgdG8g Y2xlYW4gdGhlaXIKPiA+ID4gPiBzcmMgZGlyIGZpcnN0Lgo+ID4gPiA+IAo+ID4gPiA+ID4gPiBU aGlzIGNoYW5nZXMgaW5jbHVkZSBkaXJlY3RpdmVzIGZvciBhbGwgZ2VuZXJhdGVkIGZpbGVzLCBh Y3Jvc3MgdGhlCj4gPiA+ID4gPiA+IHRyZWUuIFRoZSBpZGVhIGlzIHRvIGF2b2lkIHNlbmRpbmcg YSBodWdlIGFtb3VudCBvZiBlbWFpbC4gIEJ1dCB3aGVuCj4gPiA+ID4gPiA+IG1lcmdpbmcsIHRo ZSBjaGFuZ2VzIHdpbGwgYmUgc3BsaXQgd2l0aCBvbmUgY29tbWl0IHBlciBmaWxlLCBlLmcuIGZv cgo+ID4gPiA+ID4gPiBlYXNlIG9mIGJpc2VjdCBpbiBjYXNlIG9mIGJ1aWxkIGZhaWx1cmVzLCBh bmQgdG8gZWFzZSBtZXJnaW5nLgo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gTm90ZSB0aGF0IHNo b3VsZCBzb21lIGdlbmVyYXRlZCBmaWxlcyBiZSBtaXNzZWQgYnkgdGhpcyB0cmVlLXdpZGUKPiA+ ID4gPiA+ID4gcmVmYWN0b3JpbmcsIGl0IGlzbid0IGEgYmlnIGRlYWwgLSB0aGlzIG1lcmVseSBt YWludGFpbnMgdGhlIHN0YXR1cyBxdW8sCj4gPiA+ID4gPiA+IGFuZCB0aGlzIGNhbiBiZSBhZGRy ZXNzZWQgYnkgYSBzZXBhcmF0ZSBwYXRjaCBvbiB0b3AuCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4g PiBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIFMuIFRzaXJraW4gPG1zdEByZWRoYXQuY29tPgo+ID4g PiA+ID4gCj4gPiA+ID4gPiBJIHRoaW5rIHlvdXIgaWRlYSBjb25mbGljdHMgd2l0aCB3aGF0IE1h cmt1cyBoYXMgc3RhcnRlZCB0byBkbzoKPiA+ID4gPiAKPiA+ID4gPiBZZXMsIEkgZG9uJ3QgdGhp bmsgd2Ugc2hvdWxkIHJldmVydCB3aGF0IE1hcmt1cyBzdGFydGVkLiAgIEJvdGggd2F5cyBvZgo+ ID4gPiA+IHJlZmVyZW5jaW5nIFFFTVUgaGVhZGVycyBoYXZlIGRvd25zaWRlcywgYnV0IEkgdGhp bmsgIi4uLiIgaGFzIGZld2VyCj4gPiA+ID4gZG93bnNpZGVzIHRoYXQgIjwuLi4uIj4uCj4gPiA+ IAo+ID4gPiBDb3VsZCB5b3UgcGxlYXNlIGV4cGxhaW4gd2hhdCB0aGUgYWR2YW50YWdlIG9mICIi IGlzPwo+ID4gPiBJdCBzZWVtcyB0byBiZSBnb25lIHNpbmNlIHdlIG1vdmVkIGhlYWRlcnMgYXdh eSBmcm9tCj4gPiA+IHNvdXJjZS4KPiA+IAo+ID4gV2UgbW92ZWQgKnNvbWUqIGhlYWRlcnMgaW50 byB0aGUgaW5jbHVkZS8gZGlyZWN0b3J5IHRyZWUuCj4gPiAKPiA+IEkgc3RpbGwgY291bnQgNjUw KyBoZWFkZXJzIHdoaWNoIGFyZSBhbG9uZ3NpZGUgdGhlIC5jIGZpbGVzLgo+IAo+IFNvIGZvciB0 aGVzZSwgd2Ugc2hvdWxkIHVzZSAiIi4gIE5vbmUgb2YgdGhlc2UgYXJlIGdlbmVyYXRlZCBmaWxl cyB0aG91Z2guCgpUaGF0IGxlYWRzIHRvIGNyYXp5IGluY29uc2lzdGVudCBtZXNzYWdlIGZvciBk ZXZlbG9wZXJzIHdoZXJlIDUwJSBvZiBRRU1VCmhlYWRlciBmaWxlcyBtdXN0IHVzZSA8PiBhbmQg dGhlIG90aGVyIDUwJSBvZiBoZWFkZXIgZmlsZXMgbXVzdCB1c2UgIiIuCkhhdmluZyBhIGNvbnNp c3RlbnQgbWVzc2FnZSBmb3IgZGV2ZWxvcGVycyBpcyBvbmUgb2YgdGhlIGtleSByZWFzb25zIHdo eQpNYXJrdXMgc3VibWl0dGVkIHRoZSBwYXRjaGVzIHRvIHN0YW5kYXJkaXplIG9uIHRoZSB1c2Ug b2YgIiIgZm9yIFFFTVUKaGVhZGVyIGZpbGVzLCBsZWF2aW5nIDw+IGZvciBzeXN0ZW0gaGVhZGVy cyAmIGV4dGVybmFsIGRlcGVuZGFuY2llcy4KClJlZ2FyZHMsCkRhbmllbAotLSAKfDogaHR0cHM6 Ly9iZXJyYW5nZS5jb20gICAgICAtby0gICAgaHR0cHM6Ly93d3cuZmxpY2tyLmNvbS9waG90b3Mv ZGJlcnJhbmdlIDp8Cnw6IGh0dHBzOi8vbGlidmlydC5vcmcgICAgICAgICAtby0gICAgICAgICAg ICBodHRwczovL2ZzdG9wMTM4LmJlcnJhbmdlLmNvbSA6fAp8OiBodHRwczovL2VudGFuZ2xlLXBo b3RvLm9yZyAgICAtby0gICAgaHR0cHM6Ly93d3cuaW5zdGFncmFtLmNvbS9kYmVycmFuZ2UgOnwK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZl bCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlz dHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=