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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2DAD2C433F5 for ; Thu, 18 Nov 2021 12:59:22 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id E31C961351 for ; Thu, 18 Nov 2021 12:59:21 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org E31C961351 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org 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:MIME-Version:References:In-Reply-To: Subject:Cc:To:From:Message-ID:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=k5c6yNDc+pYtUBO+BEv+88i4sFBSonJQj1srqV07xw0=; b=qTc410n2jPX606 6PIA103C/afwO66YX9vIFCIW8IAcaMUfCwgLi+ilpJx8l3Gmb5hnVMmrqtEurAE0Nj1K9XnkAT9mM EbauWhjY3PNg7BpzOKsuxOCZTO7PiWemWgPiviHgF6AE2TkVgNbyqMUFmPe6+Do7r3gwOewxGohse lF8VsmPKwCaHQ32YYvL+ciwDlnIswOulrI90U/oegGrWImhmYoKJxyEh+XtV1JVEd8xzcqXULj4eA /FASjv09a5KFSsbe32mLMHtrDTQYv3nNkE14wBRsyKg2BHExUtdNSewAHT5+pQPgA3+KSf98hKKhn SggzxNKQXD8SGgL1x3vg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mngzB-007nvr-MX; Thu, 18 Nov 2021 12:57:53 +0000 Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mngz7-007nut-Fw for linux-arm-kernel@lists.infradead.org; Thu, 18 Nov 2021 12:57:51 +0000 Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 9322E61ABA; Thu, 18 Nov 2021 12:57:48 +0000 (UTC) Received: from sofa.misterjones.org ([185.219.108.64] helo=why.misterjones.org) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1mngz4-006Jov-FN; Thu, 18 Nov 2021 12:57:46 +0000 Date: Thu, 18 Nov 2021 12:57:46 +0000 Message-ID: <87k0h57h9x.wl-maz@kernel.org> From: Marc Zyngier To: Pali =?UTF-8?B?Um9ow6Fy?= Cc: Bjorn Helgaas , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-pci@vger.kernel.org, kernel-team@android.com, Alyssa Rosenzweig , Lorenzo Pieralisi , Bjorn Helgaas Subject: Re: [PATCH] PCI: apple: Reset the port for 100ms on probe In-Reply-To: <20211118103156.r66aso2bklm7jnns@pali> References: <20211117160053.232158-1-maz@kernel.org> <20211117201245.GA1768803@bhelgaas> <20211117202859.2m5sqwz6xsjgldji@pali> <87o86h7pex.wl-maz@kernel.org> <20211118103156.r66aso2bklm7jnns@pali> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM-LB/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL-LB/10.8 EasyPG/1.0.0 Emacs/27.1 (x86_64-pc-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") X-SA-Exim-Connect-IP: 185.219.108.64 X-SA-Exim-Rcpt-To: pali@kernel.org, helgaas@kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-pci@vger.kernel.org, kernel-team@android.com, alyssa@rosenzweig.io, lorenzo.pieralisi@arm.com, bhelgaas@google.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211118_045749_593067_529FE281 X-CRM114-Status: GOOD ( 58.78 ) 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 T24gVGh1LCAxOCBOb3YgMjAyMSAxMDozMTo1NiArMDAwMCwKUGFsaSBSb2jDoXIgPHBhbGlAa2Vy bmVsLm9yZz4gd3JvdGU6Cj4gCj4gT24gVGh1cnNkYXkgMTggTm92ZW1iZXIgMjAyMSAxMDowMTo1 OCBNYXJjIFp5bmdpZXIgd3JvdGU6Cj4gPiBPbiBXZWQsIDE3IE5vdiAyMDIxIDIwOjI4OjU5ICsw MDAwLAo+ID4gUGFsaSBSb2jDoXIgPHBhbGlAa2VybmVsLm9yZz4gd3JvdGU6Cj4gPiA+IAo+ID4g PiBIZWxsbyEKPiA+ID4gCj4gPiA+IE9uIFdlZG5lc2RheSAxNyBOb3ZlbWJlciAyMDIxIDE0OjEy OjQ1IEJqb3JuIEhlbGdhYXMgd3JvdGU6Cj4gPiA+ID4gWytjYyBQYWxpXQo+ID4gPiA+IAo+ID4g PiA+IE9uIFdlZCwgTm92IDE3LCAyMDIxIGF0IDA0OjAwOjUzUE0gKzAwMDAsIE1hcmMgWnluZ2ll ciB3cm90ZToKPiA+ID4gPiA+IFdoaWxlIHRoZSBBcHBsZSBQQ0llIGRyaXZlciB3b3JrcyBjb3Jy ZWN0bHkgd2hlbiBkaXJlY3RseSBib290ZWQKPiA+ID4gPiA+IGZyb20gdGhlIGZpcm13YXJlLCBp dCBmYWlscyB0byBpbml0aWFsaXNlIHdoZW4gdGhlIGtlcm5lbCBpcyBib290ZWQKPiA+ID4gPiA+ IGZyb20gYSBib290bG9hZGVyIHVzaW5nIFBDSWUgc3VjaCBhcyB1LWJvb3QuCj4gPiA+ID4gPiAK PiA+ID4gPiA+IFRoYXQncyBiZWFjdXNlIHdlJ3JlIG1pc3NpbmcgYSBwcm9wZXIgcmVzZXQgb2Yg dGhlIHBvcnQgKHdlIG9ubHkKPiA+ID4gPiA+IGNsZWFyIHRoZSByZXNldCwgYnV0IG5ldmVyIGFz c2VydCBpdCkuCj4gPiA+ID4gCj4gPiA+ID4gcy9iZWFjdXNlL2JlY2F1c2UvCj4gPiA+ID4gCj4g PiA+ID4gPiBCcmluZyB0aGUgcG9ydCBiYWNrIHRvIGxpZmUgYnkgd2lnZ2xpbmcgdGhlICNQRVJT VCBwaW4gZm9yIDEwMG1zCj4gPiA+ID4gPiAoYXMgcGVyIHRoZSBzcGVjKS4KPiA+ID4gPiAKPiA+ ID4gPiBJIGNjJ2QgUGFsaSBiZWNhdXNlIEkgdGhpbmsgaGUncyBpbnRlcmVzdGVkIGluIGNvbnNv bGlkYXRpbmcgb3IKPiA+ID4gPiBzb21laG93IHJhdGlvbmFsaXppbmcgZGVsYXlzIGxpa2UgdGhp cy4KPiA+ID4gPiAKPiA+ID4gPiBJZiB3ZSBoYXZlIGEgc3BlY2lmaWMgc3BlYyByZWZlcmVuY2Ug aGVyZSwgSSB0aGluayBpdCB3b3VsZCBoZWxwIHRoYXQKPiA+ID4gPiBlZmZvcnQuICBJICp0aGlu ayogaXQncyBQQ0llIHI1LjAsIHNlYyA2LjYuMSwgd2hpY2ggbWVudGlvbnMgdGhlIDEwMG1zCj4g PiA+ID4gYWxvbmcgd2l0aCBzb21lIGFkZGl0aW9uYWwgY29uc3RyYWludHMsIGxpa2Ugd2FpdGlu ZyAxMDBtcyBhZnRlciBMaW5rCj4gPiA+ID4gdHJhaW5pbmcgY29tcGxldGVzIGZvciBwb3J0cyB0 aGF0IHN1cHBvcnQgPiA1LjAgR1Qvcywgd2hldGhlcgo+ID4gPiA+IFJlYWRpbmVzcyBOb3RpZmlj YXRpb25zIGFyZSB1c2VkLCBhbmQgQ1JTIFNvZnR3YXJlIFZpc2libGl0eS4KPiA+ID4gCj4gPiA+ IFRoaXMgaXMgbm90IDEwMG1zIHRpbWVvdXQgImFmdGVyIGxpbmsgdHJhaW5pbmcgY29tcGxldGVz Ii4KPiA+ID4gCj4gPiA+IFRpbWVvdXQgaW4gdGhpcyBwYXRjaCBpcyBiZXR3ZWVuIGZsaXBwaW5n IFBFUlNUIyBzaWduYWwsIHNvIHRpbWVvdXQKPiA+ID4gbWVhbnMgaG93IGxvbmcgbmVlZHMgdG8g YmUgZW5kcG9pbnQgY2FyZCBpbiByZXNldCBzdGF0ZS4gQW5kIHRoaXMKPiA+ID4gdGltZW91dCBj YW5ub3QgYmUgY29udHJvbGxlciBzcGVjaWZpYy4gSW4gcGFzdCBJIGhhdmUgdHJpZWQgdG8gZmlu ZCB0aGlzCj4gPiA+IHRpbWVvdXQgaW4gc3BlY2lmaWNhdGlvbnMsIEkgd2FzIG5vdCBhYmxlLiBT b21lIHN1bW1hcnkgaXMgaW4gbXkgZW1haWw6Cj4gPiA+IGh0dHBzOi8vbG9yZS5rZXJuZWwub3Jn L2xpbnV4LXBjaS8yMDIxMDMxMDExMDUzNS56aDRwbm40dnBtdnp3bDVxQHBhbGkvCj4gPiA+IAo+ ID4gPiBTbyBJIHdvdWxkIGxpa2UgdG8ga25vdywgd2h5IHdhcyBjaG9zZW4gMTAwbXMgZm9yIG1z bGVlcCgpIGluIHRoaXMKPiA+ID4gcGF0Y2g/Cj4gPiAKPiA+IEV4Y2VsbGVudCBxdWVzdGlvbi4g SSB3ZW50IGJhY2sgdG8gbXkgbm90ZXMgKGFuZCB0aGUgc3BlYyksIGFuZCBpdAo+ID4gbG9va3Mg bGlrZSBJIGhhdmUgbWlzdGFrZW5seSBjb25mbGF0ZWQgKnR3byogZGVsYXlzIGhlcmU6Cj4gPiAK PiA+IC0gVGhlIHBvc3QtI1BFUlNUIGRlbGF5LCB3aGljaCBpcyAxMDBtcywgYW5kIHdoaWNoIGlz ICpub3QqIHdoYXQgdGhpcwo+ID4gICBwYXRjaCBpcyBkb2luZyB3aGlsZSBpdCByZWFsbHkgc2hv dWxkIGJlIGRvaW5nIGl0LiBUaGlzIGlzCj4gPiAgIGRvY3VtZW50ZWQgaW4gdGhlIGJhc2UgUENJ ZSBzcGVjIChpbiBSZXYgMi4wLCB0aGlzIGlzIHBhcnQgb2YKPiA+ICAgNi42LjEpLiBUaGUgYW11 c2luZyBwYXJ0IGlzIHRoYXQgb24gdGhpcyBIVywgaXQgc2VlbXMgdGhhdCBvbmx5IHRoZQo+ID4g ICBkZWxheSBmcm9tIHRoZSBmYWxsaW5nIGVkZ2UgbWF0dGVycyAod2hpY2ggaXMgd2h5IEkgZGlk bid0IHNwb3QgdGhlCj4gPiAgIGlzc3VlKS4KPiA+IAo+ID4gLSBUaGUgZHVyYXRpb24gb2YgdGhl IHBvd2VyLW9uICNQRVJTVCBhc3NlcnRpb24gKFRwdnBlcmwpLCB3aGljaCBpcwo+ID4gICBhbHNv IDEwMG1zLCBhbmQgZG9jdW1lbnRlZCBpbiB0aGUgUENJZSBDYXJkIEVsZWN0cm9tZWNoYW5pY2Fs Cj4gPiAgIFNwZWNpZmljYXRpb24gKFJldiAxLjBhLCAyLjIgYW5kIDIuMi4xKS4KPiAKPiBJIHRo aW5rIHRoYXQgeW91ciBwYXRjaCBpcyBkb2luZyBhbHNvIHNvbWV0aGluZyBkaWZmZXJlbnQuIEl0 IHVzZXMKPiBQRVJTVCMgc2lnbmFsIHRvIHJlc2V0IGNhcmQgX2FmdGVyXyBjYXJkIHdhcyBmdWxs eSBwb3dlcmVkIG9uIGFuZAo+IF9tYXliZV8gbGluayB3YXMgYWxyZWFkeSBlc3RhYmxpc2hlZCAo ZGVwZW5kcyBvbiBib290bG9hZGVyIGlmIGl0Cj4gaW5pdGlhbGl6ZWQgUENJZSwgZXRjLi4uKS4K ClllcywgYW5kIHRoYXQncyB3aGF0IEkgaGF2ZSBzYWlkIGFib3ZlLgoKPiBJbXBvcnRhbnQgaXMg dGhhdCB0aGlzIHJlc2V0IGlzIHJlYWxseSBuZWVkZWQgZm9yIHNvbWUgY2FyZHMgKGUuZy4gbG90 Cj4gb2YgQXRoZXJvcyB3aWZpIGNhcmRzIGFzIHRoZXkgY2FuIGJlIHN0dWNrIHNvbWV3aGVyZSBp biBicm9rZW4gc3RhdGUpCj4gYW5kIEkgZG8gbm90IHRoaW5rIGl0IGlzIFRwdnBlcmwgZGVsYXku IE1vcmUgY29udHJvbGxlciBkcml2ZXJzIGFkZCBzb21lCj4gZGVsYXkgYmV0d2VlbiBmbGlwcGlu ZyBQRVJTVCMgc2lnbmFsLiBJbiBwYXN0IEkgd3JvdGUgc3VtbWFyeSBvZiBpdDoKPiBodHRwczov L2xvcmUua2VybmVsLm9yZy9saW51eC1wY2kvMjAyMDA0MjQwOTI1NDYuMjVwM2hkdGtlaG9oZTN4 d0BwYWxpLwoKSSBkb24ndCB0aGluayBhbnkgb2YgdGhpcyBhcHBsaWVzIGhlcmUuCgo+ID4gVGhl cmUgaXMgYWxzbyBhIHRoaXJkIGRlbGF5IChUcGVyc3QtY2xrKSB3aGljaCByZXByZXNlbnRzIHRo ZSB0aW1lCj4gPiByZXF1aXJlZCBmb3IgdGhlIGNsb2NrIHRvIHJhbXAgdXAgYmVmb3JlIHJlbGVh c2luZyAjUEVSU1QuIE5vLCB0aGVyZQo+ID4gaXMgbm8gdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRo aXMuCj4gCj4gQnV0IHRoZXJlIGlzIG1pbmltYWwgdmFsdWUgZm9yIFRwZXJzdC1jbGsgd2hpY2gg aXMgMTAwdXMgZGVmaW5lZCBpbiBQQ0llCj4gQ0VNIHNwZWMgKDMuMCkgYW5kIGFsc28gaW4gTS4y IENFTSBzcGVjLgoKV2hpY2ggaXMgd2hhdCBJIGhhdmUgcG9pbnRlZCBvdXQgaW4gbXkgZm9sbG93 dXAgdG8gbXkgb3JpZ2luYWwgZW1haWwuCgo+IAo+ID4gSGF2aW5nIGNvbWUgdG8gbXkgc2Vuc2Vz LCBhbmQgd2l0aCB0aGVzZSBjb25zdHJhaW50cyBpbiBtaW5kLCB0aGlzIGlzCj4gPiB3aGF0IEkg Y3VycmVudGx5IGhhdmUgaW4gbXkgdHJlZToKPiA+IAo+ID4gCS8qIEVuZ2FnZSAjUEVSU1QgKi8K PiA+IAlncGlvZF9zZXRfdmFsdWUocmVzZXQsIDApOwo+ID4gCj4gPiAJcmV0ID0gYXBwbGVfcGNp ZV9zZXR1cF9yZWZjbGsocGNpZSwgcG9ydCk7Cj4gPiAJaWYgKHJldCA8IDApCj4gPiAJCXJldHVy biByZXQ7Cj4gPiAKPiA+IAkvKiBIb2xkICNQRVJTVCBmb3IgMTAwbXMgYXMgcGVyIHRoZSBlbGVj dHJvbWVjaGFuaWNhbCBzcGVjICovCj4gPiAJbXNsZWVwKDEwMCk7Cj4gPiAJcm13X3NldChQT1JU X1BFUlNUX09GRiwgcG9ydC0+YmFzZSArIFBPUlRfUEVSU1QpOwo+ID4gCWdwaW9kX3NldF92YWx1 ZShyZXNldCwgMSk7Cj4gPiAJLyogV2FpdCBmb3IgMTAwbXMgYWZ0ZXIgI1BFUlNUIGRlYXNzZXJ0 aW9uIGJlZm9yZSBhbm90aGluZyBlbHNlICovCj4gPiAJbXNsZWVwKDEwMCk7Cj4gPiAKPiA+IFll cywgdGhpcyBpcyB0b3RhbGx5IG92ZXJraWxsLCBhcyBJIGFzc3VtZSB0aGF0IGVhY2ggcG9ydCBo YXMgZ29uZQo+ID4gdGhyb3VnaCBhIGNvbXBsZXRlIHBvd2VyLW9mZiBhbmQgaXMgb25seSBzbG93 bHkgY29taW5nIGJhY2sgZnJvbSB0aGUKPiA+IGRlYWQuCj4gCj4gRm9yIHBvd2VyLW9uIGl0IGlz IHByb2JhYmx5IG92ZXJraWxsLCBidXQgSSB0aGluayB0aGF0IGRlbGF5IGJldHdlZW4KPiBmbGlw cGluZyBQRVJTVCMgc2hvdWxkIGJlIHRoZXJlLiBJSVJDIENvbXBleCBXTEUxMjE2IHdpZmkgY2Fy ZCBuZWVkcyB0bwo+IGJlIGF0IGxlYXN0IDEwLTExbXMgaW4gcmVzZXQuIExhc3QgeWVhciwgZHVy aW5nIHRlc3Rpbmcgb2YgdGhpcyBjYXJkIEkKPiBzYXcgdGhhdCBpZiBQRVJTVCMtYmFzZWQgcmVz ZXQgd2FzIHNob3J0ZXIgdGhlbiBjYXJkIHdhcyBjb21wbGV0ZWx5Cj4gdW5kZXRlY3RlZC4KClRo ZSBvbmx5IGRlbGF5IHdlIHJlYWxseSBuZWVkIGlzIFRwZXJzdC1jbGsuIFJhbmRvbSBidWdzIG9u IHJhbmRvbQpkZXZpY2VzIGRvbid0IGFwcGx5IGhlcmUsIGFzIHRoZSBzeXN0ZW0gaXMgY29tcGxl dGVseSBjbG9zZWQgKHRoZXJlIGlzCm5vIHNsb3QgdG8gYWRkIGFueXRoaW5nKS4gT25jZSB3ZSBo YXZlIFRCIHJ1bm5pbmcgb25lIG9mIHRoZXNlIGRheXMsCndlIHdpbGwgc2VlIHdoZXRoZXIgdGhp cyBzdGlsbCBob2xkcy4KCj4gPiBJbiBwcmFjdGljZSwgSSBjYW4gY29tcGxldGVseSByZW1vdmUg dGhlIGluaXRpYWwgVHB2cGVybCBkZWxheSAod2UKPiA+IGhhdmUgYmVlbiBwb3dlcmVkLW9uIGZv ciBhIGxvbmcgdGltZSBhbHJlYWR5LCBhbmQgdGhlIGNsb2NrIGlzIHN0YWJsZQo+ID4gd2hlbiB3 ZSBjb21lIGJhY2sgZnJvbSBzZXR0aW5nIGl0IHVwKSwgYW5kIGN1dCB0aGUgc2Vjb25kIG9uZSBi eSBoYWxmCj4gPiB3aXRob3V0IG9ic2VydmluZyBhbnkgaWxsIGVmZmVjdCAodGhvdWdoIEkgZmVl bCBzYWZlciBrZWVwaW5nIGl0IHRvCj4gPiBpdHMgbm9taW5hbCB2YWx1ZSkuCj4gCj4gTXkgb3Bp bmlvbiBpcyB0aGF0IHRoaXMgcGF0Y2ggZG9lcyBub3QgcG93ZXIgb24vb2ZmIGNhcmQgaW4gUENJ ZSBzbG90Lgo+IEFuZCBiZWNhdXNlIGNhcmQgaXMgcG93ZXJlZC1vbiBmb3IgYSBsb25nIHRpbWUg KGFzIHlvdSB3cm90ZSksIGl0IG1lYW5zCj4gdGhhdCBUcHZwZXJsIGRlbGF5IGRvZXMgbm90IGFw cGx5IGhlcmUuIFRoYXQgaXMgd2h5IEkgdGhpbmsgdGhhdAo+IGRpZmZlcmVudCBkZWxheSAoSG93 IGxvbmcgc2hvdWxkIGJlIFBDSWUgY2FyZCBpbiBXYXJtIFJlc2V0IHN0YXRlKQo+IHNob3VsZCBi ZSB1c2VkIF9iZXR3ZWVuXyBmbGlwcGluZyBQRVJTVCMgc2lnbmFsLgoKTXkgcmVhZGluZyBvZiB0 aGUgc3BlYyBpcyB0aGF0IHRoZSBvbmx5IHRoaW5nIHdlIG5lZWQgd2hpbGUgI1BFUlNUIGlzCmFz c2VydGVkIGlzIFRwZXJzdC1jbGsuIFRoZSB2YWx1ZSB5b3Uga2VlcCBhcmd1aW5nIGFib3V0IGRv ZXNuJ3Qgc2VlbQp0byBleGlzdCBhcyBzdWNoIGluIHRoZSBzcGVjLCBiZWNhdXNlIGl0IGFwcGVh cnMgdG8gYmUgZW5kcG9pbnQKc3BlY2lmaWMuCgo+IEFuZCBvZiBjb3Vyc2UgYWZ0ZXIgdGhlIHJl bGVhc2luZyBQRVJTVCMgdGhhdCAxMDBtcyBwb3N0LVBFUlNUIyBkZWxheSBpcwo+IHJlcXVpcmVk LgoKVGhhdCB3ZSBhZ3JlZSBvbi4KCj4gSSBoYXZlIGFuIGlkZWEgdG8gbW92ZSBQRVJTVCMgaGFu ZGxpbmcgKHdpdGggYWxsIGRlbGF5cykgZnJvbSBjb250cm9sbGVyCj4gZHJpdmVycyB0byBwY2kg Y29yZSBmdW5jdGlvbnMuIEJlY2F1c2UgYmFzaWNhbGx5IGV2ZXJ5IGRyaXZlcgo+IHJlLWltcGxl bWVudHMgdGhlc2UgZGVsYXlzIGluIGl0cyBwcm9iZSBmdW5jdGlvbi4gSSB3cm90ZSB0aGlzIGlk ZWEgd2l0aAo+IHNvbWUgZGV0YWlscyBpbiBlbWFpbC4gSWYgeW91IGhhdmUgYSB0aW1lLCBjb3Vs ZCB5b3UgbG9vayBhdCBpdD8gSQo+IHN1bW1hcml6ZWQgaGVyZSBhbHNvIGRldGFpbHMgYWJvdXQg ZGVsYXlzIChsaWtlIFRwdnBlcmwsIFRwZXJzdGNsaywgLi4pOgo+IGh0dHBzOi8vbG9yZS5rZXJu ZWwub3JnL2xpbnV4LXBjaS8yMDIxMTAyMjE4MzgwOC5qZGVvN3ZudG5hZ3FrZzdnQHBhbGkvCgpU aGF0J3MgYSBsYXVkYWJsZSBnb2FsLiBXaGF0IGlzbid0IGNsZWFyIHRvIG1lIGlzIHdoZXRoZXIg eW91IGludGVuZAp0byBtb3ZlIHRoZSB3aG9sZSBzdGF0ZSBtYWNoaW5lIGludG8gY29yZSBjb2Rl LCBvciBqdXN0IGhhdmUgYSBzZXQgb2YKaGVscGVycyB0aGF0IHRoZSBkcml2ZXIgY2FsbHMgaW50 by4gSU1PLCB0aGUgZm9ybWVyIGlzIHdoYXQgd2UgcmVhbGx5Cm5lZWQsIHdoaWxlIHRoZSBsYXR0 ZXIgb25seSByaWRzIHVzIG9mIHRoZSBzaW1wbGUgc3R1ZmYuCgoJTS4KCi0tIApXaXRob3V0IGRl dmlhdGlvbiBmcm9tIHRoZSBub3JtLCBwcm9ncmVzcyBpcyBub3QgcG9zc2libGUuCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVs IG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDov L2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==