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 B15D4EED61E for ; Fri, 15 Sep 2023 17:24:48 +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:In-Reply-To:From:References:Cc:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=kZmQziOqTAodX1etDjCTdRDH5EVmTWtAxui/vgduvno=; b=Ja8Y0CgP0tygSq WNtQs6FnCfUYO8cqcXD6eGHNRGHzhVKD48yNJSEuaGuvghu8RtjVfkO6lKD64q5Pyifn8sOQ7n2a5 iLaHEuMsGkZ4pvoqamrIAd+6q8eSsqZcSmL67dI2S3IAdib6RjuBNLG3CxDXhaQpGmvqjzyUA6OxR ykY466HoTI9KHaR6goXVzzdxuXnkhdfrzqtH/hxbssPuxse8YegWXMoNuPOTYx+Sydoi5ZbYvAqrz G2CcOp0XdYQXmYyqa2l0gUf/OVmcfh5re0ups3FdY+siDqE89JpIwQzcwmbvQiECmMAMVwk/Vvqfo e/qsXP5i4fk8qlQLAPLQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qhCYZ-00B8Dy-1P; Fri, 15 Sep 2023 17:24:39 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qhCYU-00B8DV-0s; Fri, 15 Sep 2023 17:24:36 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 11D831FB; Fri, 15 Sep 2023 10:25:09 -0700 (PDT) Received: from [10.1.196.40] (e121345-lin.cambridge.arm.com [10.1.196.40]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 97F533F5A1; Fri, 15 Sep 2023 10:24:29 -0700 (PDT) Message-ID: Date: Fri, 15 Sep 2023 18:24:25 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux aarch64; rv:102.0) Gecko/20100101 Thunderbird/102.15.0 Subject: Re: [PATCH 1/3] pinctrl: rockchip: add support for io-domain dependency Content-Language: en-GB To: Quentin Schulz , Sascha Hauer , Saravana Kannan Cc: Chen-Yu Tsai , Linus Walleij , linux-rockchip@lists.infradead.org, Heiko Stuebner , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-gpio@vger.kernel.org, kernel@pengutronix.de, Michael Riesch , Rob Herring , Krzysztof Kozlowski , Conor Dooley References: <20230904115816.1237684-1-s.hauer@pengutronix.de> <20230904115816.1237684-2-s.hauer@pengutronix.de> <20230913065843.GF637806@pengutronix.de> <20230915065120.GQ637806@pengutronix.de> <61e20eec-6d54-160e-abba-d668b1d19047@theobroma-systems.com> From: Robin Murphy In-Reply-To: <61e20eec-6d54-160e-abba-d668b1d19047@theobroma-systems.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230915_102434_408278_8BE9CC8E X-CRM114-Status: GOOD ( 77.39 ) 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 T24gMTUvMDkvMjAyMyA1OjM4IHBtLCBRdWVudGluIFNjaHVseiB3cm90ZToKPiBIaSBhbGwsCj4g Cj4gT24gOS8xNS8yMyAwODo1MSwgU2FzY2hhIEhhdWVyIHdyb3RlOgo+PiBPbiBXZWQsIFNlcCAx MywgMjAyMyBhdCAwMTo0ODoxMlBNIC0wNzAwLCBTYXJhdmFuYSBLYW5uYW4gd3JvdGU6Cj4+PiBP biBUdWUsIFNlcCAxMiwgMjAyMyBhdCAxMTo1OOKAr1BNIFNhc2NoYSBIYXVlciAKPj4+IDxzLmhh dWVyQHBlbmd1dHJvbml4LmRlPiB3cm90ZToKPj4+Pgo+Pj4+IE9uIFdlZCwgU2VwIDEzLCAyMDIz IGF0IDEyOjM3OjU0UE0gKzA4MDAsIENoZW4tWXUgVHNhaSB3cm90ZToKPj4+Pj4gT24gVHVlLCBT ZXAgMTIsIDIwMjMgYXQgNDowN+KAr1BNIExpbnVzIFdhbGxlaWogCj4+Pj4+IDxsaW51cy53YWxs ZWlqQGxpbmFyby5vcmc+IHdyb3RlOgo+Pj4+Pj4KPj4+Pj4+IFRvcCBwb3N0aW5nIHRvIGJyaW5n IFNhcmF2YW5hIEthbm5hbiBpbnRvIHRoaXMgZGlzY3Vzc2lvbi4KPj4+Pj4+Cj4+Pj4+PiBUaGlz IGxvb2tzIGxpa2UgYSBiaWcgaGFjayB0byBtZSwgU2FyYXZhbmEgaGFzIGJlZW4gd29ya2luZwo+ Pj4+Pj4gdGlyZWxlc3NseSB0byBtYWtlIHRoZSBkZXZpY2UgdHJlZSBwcm9iZSBvcmRlciAic29y dCBpdHNlbGYgb3V0Igo+Pj4+Pj4gYW5kIEkgYW0gcHJldHR5IHN1cmUgdGhpcyBpc3N1ZSBuZWVk cyB0byBiZSBmaXhlZCBhdCB0aGUgRFQKPj4+Pj4+IGNvcmUgbGV2ZWwgYW5kIG5vdCBpbiBhIGRy aXZlci4KPj4+Pj4KPj4+Pj4gV2UgY291bGQgbWVyZ2UgYWxsIHRoZSBJTyBkb21haW4gc3R1ZmYg aW50byB0aGUgcGluY3RybCBub2RlL2RyaXZlciwKPj4+Pj4gbGlrZSBpcyBkb25lIGZvciBBbGx3 aW5uZXI/IE1heWJlIHRoYXQgd291bGQgc2ltcGxpZnkgdGhpbmdzIGEgYml0Pwo+Pj4+Cj4+Pj4g SSB0aG91Z2h0IGFib3V0IHRoaXMgYXMgd2VsbC4gT24gUm9ja2NoaXAgdGhlIHBpbmN0cmwgZHJp dmVyIGFuZCB0aGUgSU8KPj4+PiBkb21haW4gZHJpdmVyIGV2ZW4gd29yayBvbiB0aGUgc2FtZSBy ZWdpc3RlciBzcGFjZSwgc28gcHV0dGluZyB0aGVzZQo+Pj4+IGludG8gYSBzaW5nbGUgbm9kZS9k cml2ZXIgd291bGQgZXZlbiBmZWVsIG1vcmUgbmF0dXJhbCB0aGFuIHdoYXQgd2UgCj4+Pj4gaGF2 ZQo+Pj4+IG5vdy4KPj4+Cj4gCj4gV2hpbGUgdGVjaG5pY2FsbHkgbm90IHJlYWxseSB3cm9uZywg SSB3b3VsZG4ndCBzYXkgdGhpcyBpcyB0cnVlIGVpdGhlci4KPiAKPiBUaGVyZSdzIG5vIHJlYWwg cGluY3RybCBJUCBhZGRyZXNzIHNwYWNlIG9uIFJvY2tjaGlwIFNvQ3MgKGF0IGxlYXN0IHRoZSAK PiBvbmVzIEkgd29ya2VkIG9uLCBzbyBSSzMzOTkgYW5kIFBYMzApLCBhdCBsZWFzdCBub3RoaW5n IGRlbGltaXRlZCAKPiBwcm9wZXJseS4gVGhlIHR5cGljYWwgcGluY3RybCBkdXRpZXMgYXJlIHNj YXR0ZXJlZCBhbGwgb3ZlciB0d28gKG1vcmUgCj4gZGVwZW5kaW5nIG9uIHRoZSBTb0MgbWF5YmU/ KSByZWdpc3RlciBhZGRyZXNzIHNwYWNlcywgZm9yIFBYMzAgYW5kIAo+IFJLMzM5OSB0aGV5IGFy ZSBjYWxsZWQgR1JGIGFuZCBQTVVHUkYuIE1hbnksIE1BTlksIElQcyBhY3R1YWxseSBoYXZlIAo+ IHNvbWUgcmVnaXN0ZXJzIHRvIG1vZGlmeSBpbiB0aG9zZSB0d28gcmVnaXN0ZXIgYWRkcmVzcyBz cGFjZXMgYXMgd2VsbCwgCj4gYy5mLiBhbGwgdGhlIHJvY2tjaGlwLGdyZiBhbmQgcm9ja2NoaXAs cG11IHByb3BlcnRpZXMgYWxsIG92ZXIgdGhlIHBsYWNlLgo+IAo+IFRoZSBwaW5jdHJsIGRyaXZl ciBkb2VzIHJlZmVyIHRob3NlIHR3byByZWdpc3RlciBhZGRyZXNzIHNwYWNlcyB2aWEgdGhlIAo+ IGFmb3JlbWVudGlvbmVkIERUIHByb3BlcnRpZXMuIFRob3NlIHR3byByZWdpc3RlciBhZGRyZXNz IHNwYWNlcyBhcmUgCj4gcmVwcmVzZW50ZWQgYXMgc3lzY29uLi4uIGJlY2F1c2UgaWYgSSByZW1l bWJlciBjb3JyZWN0bHkgdGhhdCdzIGhvdyB5b3UgCj4gYXJlIHN1cHBvc2VkIHRvIGhhbmRsZSBt dWx0aXBsZSBkZXZpY2VzIG9uIHRoZSBzYW1lIHJlZ2lzdGVyIGFkZHJlc3MgCj4gc3BhY2Ugd2hl cmUgcmVnaXN0ZXJzIG9yIGV2ZW4gcmVnaXN0ZXIgYml0ZmllbGRzIGFyZSBtaXhlZCBmb3IgZGlm ZmVyZW50IAo+IElQcz8KPiAKPiBBdCB0aGUgc2FtZSB0aW1lLCBJTyBkb21haW5zIGFsc28gYXJl bid0IGluIHRoZWlyIG93biAicmVhbCIgYWRkcmVzcyAKPiBzcGFjZSwgc2ltaWxhciBhcyB0byBo b3cgcGluY3RybCBpcyBoYW5kbGVkIGluIEhXLgo+IAo+Pj4gVGhlbiB3ZSBzaG91bGQgdHJ5IHRv IGRvIHRoaXMgYW5kIGZpeCBhbnkgaXNzdWVzIGJsb2NraW5nIHVzLgo+Pj4KPj4+PiBIb3dldmVy LCB3aXRoIHRoYXQgdGhlIHBpbmN0cmwgbm9kZSB3b3VsZCBnZXQgdGhlIHN1cHBsaWVzIHRoYXQg dGhlIElPCj4+Pj4gZG9tYWluIG5vZGUgbm93IGhhcyBhbmQgd2Ugd291bGQgbmV2ZXIgZ2V0IGlu dG8gdGhlIHByb2JlIG9mIHRoZSAKPj4+PiBwaW5jdHJsCj4+Pj4gZHJpdmVyIGR1ZSB0byB0aGUg Y2lyY3VsYXIgZGVwZW5kZW5jaWVzLgo+Pj4KPj4+IMKgRnJvbSBhIGZ3X2RldmxpbmsgcGVyc3Bl Y3RpdmUsIHRoZSBjaXJjdWxhciBkZXBlbmRlbmN5IHNob3VsZG4ndCBiZSBhCj4+PiBwcm9ibGVt LiBJdCdzIHNtYXJ0IGVub3VnaCB0byByZWNvZ25pemUgYWxsIGN5Y2xlIHBvc3NpYmlsaXRpZXMg KHNpbmNlCj4+PiA2LjMpIGFuZCBub3QgZW5mb3JjZSBvcmRlcmluZyBiZXR3ZWVuIG5vZGVzIGlu IGEgY3ljbGUuCj4+Pgo+Pj4gU28sIHRoaXMgaXMgcmVhbGx5IG9ubHkgYSBtYXR0ZXIgb2YgcGlu Y3RybCBub3QgdHJ5aW5nIHRvIGRvCj4+PiByZWd1bGF0b3JfZ2V0KCkgaW4gaXRzIHByb2JlIGZ1 bmN0aW9uLiBZb3UgbmVlZCB0byBkbyB0aGUKPj4+IHJlZ3VsYXRvcl9nZXQoKSB3aGVuIHRoZSBw aW5zIHRoYXQgZGVwZW5kIG9uIHRoZSBpby1kb21haW4gYXJlCj4+PiByZXF1ZXN0ZWQuIEFuZCBp ZiB0aGUgcmVndWxhdG9yIGlzbid0IHJlYWR5IHlldCwgcmV0dXJuIC1FUFJPQkVfREVGRVI/Cj4+ Cj4+IFRoYXQncyBiYXNpY2FsbHkgd2hhdCBteSBzZXJpZXMgZG9lcyBhbHJlYWR5LCBJIHJldHVy biAtRVBST0JFX0RFRkVSCj4+IGZyb20gdGhlIHBpbmN0cmwgZHJpdmVyIHdoZW4gYSBwaW4gaXMg cmVxdWVzdGVkIGFuZCB0aGUgSU8gZG9tYWluIGlzIG5vdAo+PiB5ZXQgcmVhZHkuCj4+Cj4+Pgo+ Pj4gSXMgdGhlcmUgc29tZXRoaW5nIHRoYXQgcHJldmVudHMgdXMgZnJvbSBkb2luZyB0aGF0Pwo+ Pgo+PiBOby4gV2UgY291bGQgZG8gdGhhdCwgYnV0IGl0IHdvdWxkbid0IGJ1eSB1cyBhbnRoaW5n LiBJIGFtIGdsYWQgdG8gaGVhcgo+PiB0aGF0IGZ3X2RldmxpbmsgY2FuIGJyZWFrIHRoZSBjaXJj dWxhciBkZXBlbmRlbmNpZXMuIFdpdGggdGhpcyB3ZSBjb3VsZAo+PiBhZGQgdGhlIHN1cHBsaWVz IHRvIHRoZSBwaW5jdHJsIG5vZGUgYW5kIHRoZSBwaW5jdHJsIGRyaXZlciB3b3VsZCBzdGlsbAo+ PiBiZSBwcm9iZWQuCj4+Cj4+IFdpdGggdGhlIElPIGRvbWFpbiBzdXBwbGllcyBhZGRlZCB0byB0 aGUgcGluY3RybCBub2RlIG91ciBiaW5kaW5nIHdvdWxkCj4+IGJlIGNsZWFuZXIsIGJ1dCBzdGls bCB3ZSB3b3VsZCBoYXZlIHRvIGRlZmVyIHByb2JlIG9mIG1hbnkgcmVxdWVzdGVkCj4+IHBpbnMg dW50aWwgZmluYWxseSB0aGUgSTJDIGRyaXZlciBwcm92aWRpbmcgYWNjZXNzIHRvIHRoZSBQTUlD IGNvbWVzCj4gCj4gSSBkb24ndCB0aGluayB0aGVyZSdzIGFueSB3YXkgYXJvdW5kIHRoZSBkZWZl cnJhbCAib2YgbWFueSByZXF1ZXN0ZWQgCj4gcGlucyB1bnRpbCBmaW5hbGx5IHRoZSBJMkMgZHJp dmVyIHByb3ZpZGluZyBhY2Nlc3MgdG8gdGhlIFBNSUMgY29tZXMgCj4gYWxvbmciLCB0aGlzIGlz IGFjdHVhbGx5IG5lY2Vzc2FyeS4KPiAKPj4gYWxvbmcuIFdlIGFsc28gc3RpbGwgbmVlZCBhICJE byBub3QgZGVmZXIgcHJvYmUgZm9yIHRoZXNlIHBpbnMiIHByb3BlcnR5Cj4+IGluIHRoZSBwaW5n cnAgbmVlZGVkIGZvciB0aGUgSTJDIGRyaXZlci4KPiAgPgo+IAo+IFllcywgdGhpcyBpcyB0aGUg ZGlmZmljdWx0IHBhcnQgcmlnaHQgbm93LiBJbiB0aGUgUkZDLCBJIHN1Z2dlc3RlZCB0byAKPiBo YXZlIGFuIGlvLWRvbWFpbnMgcHJvcGVydHkgcGVyIHBpbm11eCBEVCBub2RlOgo+IAo+ICIiIgo+ ICZwaW5jdHJsIHsKPiAgwqDCoMKgIGdyb3VwIHsKPiAgwqDCoMKgwqDCoMKgwqAgcGlubXV4IHsK PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlvLWRvbWFpbnMgPSA8JmlvX2RvbWFpbnM+Owo+ ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcm9ja2NoaXAscGlucyA9IDwwIFJLX1BBMCAwICZw Y2ZnX3B1bGxfbm9uZT4sCj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCA8MyBSS19QQjUgMCAmcGNmZ19wdWxsX25vbmU+Owo+ICDCoMKgwqDCoMKgwqDC oCB9Owo+ICDCoMKgwqAgfTsKPiB9Owo+ICIiIgo+IAo+IEJ1dCB0aGlzIGlzIHZlcnkgdGVkaW91 cyBmb3IgYm90aCBTb0MgbWFpbnRhaW5lcnMgKHRob3VnaCB0aGV5IHdvdWxkIAo+IHByb2JhYmx5 IGhhdmUgdG8gZG8gaXQgIm9ubHkiIG9uY2UpIEFORCBmb3IgYm9hcmQgbWFpbnRhaW5lcnMsIGZv ciBlYWNoIAo+IG5ldyBwaW5tdXggdGhleSByZXF1aXJlLiBTaW5jZSB0aGUgU29DIG1haW50YWlu ZXIgY2Fubm90IGtub3cgb24gd2hpY2ggCj4gaTJjIChvciBzcGk/KSBidXMgdGhlIFBNSUMgd2ls bCBiZSwgdGhleSBoYXZlIHR3byBjaG9pY2VzOiBlaXRoZXIgbGV0IAo+IGJvYXJkIG1haW50YWlu ZXJzIG5vdCBmb3JnZXQgdG8gYWRkIHRoZSBpby1kb21haW5zIHByb3BlcnR5IHRvIHRoZSAKPiBp MmMvc3BpIHBpbm11eCBub2RlcyBvZiBhbGwgYnV0IHRoZSBvbmUgdG8gd2hjaWggdGhlIFBNSUMg aXMgYXR0YWNoZWQsIAo+IG9yIGhhdmUgdGhlIGJvYXJkIG1haW50YWluZXJzIGFkZCBhIC9kZWxl dGUtcHJvcGVydHkvIGlvLWRvbWFpbnMgdG8gdGhlIAo+IHByb3BlciBpMmMvc3BpIHBpbm11eCBu b2RlIHRvIHdoaWNoIHRoZSBQTUlDIGlzIGF0dGFjaGVkLgo+IAo+IFRoZSBmaXJzdCBvbmUgaXMg dmVyeSBlcnJvci1wcm9uZSwgdGhlIHNlY29uZCBpcyBub3QgdmVyeSBsaWtlZCBieSBEVCAKPiBw ZW9wbGUgSSB0aGluayAoYW5kIGFsc28uLi4gd2VsbCBpcyBhIGhhY2sgb24gRFQgbGV2ZWwgdG8g bWFuYWdlIGEgCj4gZHJpdmVyL3N1YnN5c3RlbSBpc3N1ZSkuCj4gCj4gQWxzbyBvbiBhIHNpZGUg bm90ZSwgdGhlIGN1cnJlbnQgYmluZGluZyBmb3IgdGhlIGlvLWRvbWFpbnMgaXMgYSBiaXQgbm90 IAo+IGdyYW51bGFyIGVub3VnaCBhcyBpdCByZXByZXNlbnRzIHRoZSBjb2xsZWN0aW9uIG9mIElP IGRvbWFpbnMgb24gdGhlIAo+IHNhbWUgcmVnaXN0ZXIgYWRkcmVzcyBzcGFjZSwgYW5kIHlvdSBj YW4gaGF2ZSBtdWx0aXBsZSBvbmVzLiBlLmcuIGZvciAKPiBSSzMzOTkgeW91IGhhdmUgZm91ciBp biAiZ3JmIi8ibm9ybWFsIiBJTyBkb21haW4sIHdoaWNoIG1ha2VzIHRoZSAKPiBpbnRlci1kZXBl bmRlbmNpZXMgdW5uZWNlc3NhcmlseSBjb21wbGV4IChidXQgdGhhdCdzIHByb2JhYmx5IHRhbmdl bnQgdG8gCj4gdGhlIGN1cnJlbnQgcHJvYmxlbSBpbiBkaXNjdXNzaW9uKS4KPiAKPj4gSSB3b3Vs ZCBjb25zaWRlciB0aGlzIGJlaW5nIGEgd2F5IHRvIGNsZWFudXAgdGhlIGJpbmRpbmdzLCBidXQg bm90IGEKPj4gc29sdXRpb24gYXQgRFQgY29yZSBsZXZlbCB0aGF0IExpbnVzIHdhcyBhaW1pbmcg YXQuCj4+Cj4+Pgo+Pj4+Pgo+Pj4+PiBJSVJDIG9uIEFsbHdpbm5lciBTb0NzIHRoZSBQTUlDIHBp bnMgZG9uJ3QgaGF2ZSBhIHNlcGFyYXRlIHBvd2VyIHJhaWwsCj4+Pj4+IG9yIGlmIHRoZXkgZG8g dGhleSBhbG1vc3QgY2VydGFpbmx5IHVzZSB0aGUgZGVmYXVsdCBJL08gcmFpbCB0aGF0IGlzCj4+ Pj4+IGFsd2F5cyBvbiwgYW5kIHNvIHdlIG9taXQgaXQgdG8gd29yayBhcm91bmQgdGhlIGRlcGVu ZGVuY3kgY3ljbGUuCj4+Pj4KPj4+PiBJIGxvb2tlZCBpbnRvIHN1bjUwaSBhcyBhbiBleGFtcGxl LiBUaGlzIG9uZSBoYXMgdHdvIHBpbmN0cmwgbm9kZXMsIHBpbwo+Pj4+IGFuZCByX3Bpby4gT25s eSB0aGUgZm9ybWVyIGhhcyBzdXBwbGllcyB3aGVyZWFzIHRoZSBsYXR0ZXIsIHdoZXJlIHRoZQo+ Pj4+IFBNSUMgaXMgY29ubmVjdGVkIHRvLCBoYXMgKGZvdW5kIGluIHN1bjUwaS1hNjQtcGluZXBo b25lLmR0c2kpOgo+Pj4+Cj4+Pj4gJnJfcGlvIHsKPj4+PiDCoMKgwqDCoMKgwqDCoMKgIC8qCj4+ Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICogRklYTUU6IFdlIGNhbid0IGFkZCB0aGF0IHN1cHBseSBm b3Igbm93IHNpbmNlIGl0IHdvdWxkCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgICogY3JlYXRlIGEg Y2lyY3VsYXIgZGVwZW5kZW5jeSBiZXR3ZWVuIHBpbmN0cmwsIHRoZSByZWd1bGF0b3IKPj4+PiDC oMKgwqDCoMKgwqDCoMKgwqAgKiBhbmQgdGhlIFJTQiBCdXMuCj4+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgICoKPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgKiB2Y2MtcGwtc3VwcGx5ID0gPCZyZWdfYWxk bzI+Owo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCAqLwo+Pj4+IH07Cj4+Pj4KPj4+PiBBdCBsZWFz dCBpdCBzaG93IG1lIHRoYXQgSSBhbSBub3QgdGhlIGZpcnN0IG9uZSB3aG8gaGFzIHRoaXMgcHJv YmxlbSA7KQo+Pj4+Cj4+Pj4gV2UgY291bGQgYWRkIHRoZSBzdXBwbGllcyB0byB0aGUgcGluZ3Jv dXAgc3Vibm9kZXMgb2YgdGhlIHBpbmN0cmwgCj4+Pj4gZHJpdmVyCj4+Pj4gdG8gYXZvaWQgdGhh dCwgYnV0IGFzIFNhcmF2YW5hIGFscmVhZHkgbWVuaW9uZWQsIHRoYXQgd291bGQgZmVlbCBsaWtl Cj4+Pj4gb3ZlcmtpbGwuCj4+Pgo+IAo+IEkgdGhpbmsgdGhpcyBpcyBhY3R1YWxseSBhIHNvbWV3 aGF0IGJhZCBpZGVhLiBMZXQgbWUgZXhwbGFpbi4KPiAKPiBOb3RoaW5nIHByZXZlbnRzIHRoZSB1 c2VyIHRvIGNyZWF0ZSBhIG5ldyBEVCBub2RlIHdpdGggdHdvIHBpbnMgZnJvbSAKPiBkaWZmZXJl bnQgSU8gZG9tYWlucy4gZS5nLiBJIGNvdWxkIHZlcnkgd2VsbCBoYXZlIHRoZSBmb2xsb3dpbmc6 Cj4gCj4gIiIiCj4gJnBpbmN0cmwgewo+ICDCoMKgwqAgZ3JvdXAgewo+ICDCoMKgwqDCoMKgwqDC oCB0d29faW9kb21haW5fbXV4IHsKPiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJvY2tjaGlw LHBpbnMgPSA8MCBSS19QQTAgMCAmcGNmZ19wdWxsX25vbmU+LAo+ICDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgPDMgUktfUEI1IDAgJnBjZmdfcHVsbF9u b25lPjsKPiAgwqDCoMKgwqDCoMKgwqAgfTsKPiAgwqDCoMKgIH07Cj4gfTsKPiAiIiIKPiAKPiBm b3IgZXhhbXBsZSBpZiBJIGhhdmUgYSBkZXZpY2UgdGhhdCB1c2VzIEdQSU8wX0EwIGFuZCBHUElP M19CNSBhcyBncGlvcyAKPiBhbmQgSSBuZWVkIHRvIGNvbmZpZ3VyZSB0aGVpciBwaW5jb25mIGFw cHJvcHJpYXRlbHkuCj4gCj4gU28gZnJvbSB0aGlzLCBJIGd1ZXNzIHdlJ2QgbmVlZCB0byBzdXBw b3J0IG11bHRpcGxlIGlvLWRvbWFpbnMgcGVyIG5vZGUgCj4gKGRvbid0IGtub3cgdGhlIHByb3Bl ciBwaW5jdHJsIHN1YnN5c3RlbSBuYW1lIGZvciB0aGF0IG9uZSBzb3JyeSwgdGhlIAo+IHR3b19p b2RvbWFpbl9tdXggb25lIGluIHRoZSBhYm92ZSBleGFtcGxlKS4KPiAKPiBXZSBjb3VsZCBhbHNv IG5vdyBncm91cCBwaW5tdXggbm9kZXMgYnkgdGhlaXIgaW8tZG9tYWluLCBlLmcuOgo+IAo+ICIi Igo+ICZwaW5jdHJsIHsKPiAgwqDCoMKgIGJ0NjU2LWlvLWRvbWFpbiB7Cj4gIMKgwqDCoMKgwqDC oMKgIHBvd2VyLXN1cHBseSA9IDwmd2hhdGV2ZXI+Owo+IAo+ICDCoMKgwqDCoMKgwqDCoCBvbmx5 X3Bpbm11eGVzX2Zyb21fYnQ2NTYgewo+ICDCoMKgwqDCoMKgwqDCoCB9Owo+IAo+ICDCoMKgwqDC oMKgwqDCoCBvbmx5X3Bpbm11eGVzX2Zyb21fYnQ2NTZfMiB7Cj4gIMKgwqDCoMKgwqDCoMKgIH07 Cj4gIMKgwqDCoCB9Owo+ICDCoMKgwqAgcG11MTgzMC1pby1kb21haW4gewo+ICDCoMKgwqDCoMKg wqDCoCBwb3dlci1zdXBwbHkgPSA8JnNvbWV0aGluZz47Cj4gCj4gIMKgwqDCoMKgwqDCoMKgIG9u bHlfcGlubXV4ZXNfZnJvbV9wbXUxODMwIHsKPiAgwqDCoMKgwqDCoMKgwqAgfTsKPiAKPiAgwqDC oMKgwqDCoMKgwqAgb25seV9waW5tdXhlc19mcm9tX3BtdTE4MzBfMiB7Cj4gIMKgwqDCoMKgwqDC oMKgIH07Cj4gIMKgwqDCoCB9Owo+ICDCoMKgwqAgWy4uLl0KPiB9Owo+ICIiIgo+IAo+IFRoaXMg bWVhbnMgd2Ugd291bGQgbmVlZCB0byBnbyB0aHJvdWdoIGFsbCBleGlzdGluZyBwaW5tdXggZGVm aW5pdGlvbiBvbiAKPiByb2NrY2hpcCBkZXZpY2VzIGFuZCBjaGVjayBpZiB0aGV5IGJlbG9uZyB0 byB0aGUgc2FtZSBpbyBkb21haW4gYW5kIGlmIAo+IHRoZXkgZG9uJ3QsIHNwbGl0IHRoZW0gaW4g b25lIG9yIG1vcmUgcGlubXV4ZXMgZm9yIGV4YW1wbGUuCj4gCj4gQWxzbywgSSB0aGluayBpdCdk IGJlIGVhc2llciB0byBhc2sgYm9hcmQgbWFpbnRhaW5lcnMgdG8gb25seSBhZGQgYSAKPiBwb3dl ci1zdXBwbHkgcHJvcGVydHkgdG8gYWxsIGlvLWRvbWFpbnMgcmF0aGVyIHRoYW4gdG8gZWFjaCBh bmQgZXZlcnkgCj4gcGlubXV4Lgo+IAo+IFdlIGNvdWxkIHByb2JhYmx5IGVuZm9yY2UgdGhhdCBu byBzdWJncm91cCBvdGhlciB0aGFuIHRoZSBvbmUgbmFtZWQgCj4gYWZ0ZXIgdGhlIG9uZXMgbmFt ZWQgYWZ0ZXIgdGhlIGlvLWRvbWFpbiBjYW4gYmUgY3JlYXRlZCBvbiB0aGUgZHJpdmVyIAo+IGxl dmVsIGFzIHdlbGwuIE5vdCBzdXJlIGlmIGl0J3Mgd2lzZSBidXQgd2UgY291bGQgcHJvYmFibHkg YWxzbyBjaGVjayAKPiB0aGF0IHdpdGhpbiBhIHBpbmdyb3VwIG9ubHkgcGlubXV4ZXMgYmVsb25n aW5nIHRvIHRoZSBpby1kb21haW4gYXJlIGxpc3RlZC4KPiAKPj4+IFNvIG15IGNvbW1lbnQgeWVz dGVyZGF5IHdhcyB0aGF0IGl0J2QgYmUgYW4gb3ZlcmtpbGwgdG8gbWFrZSBldmVyeQo+Pj4gc3Ry dWN0IHBpbl9kZXNjIGludG8gYSBkZXZpY2UuIEJ1dCBpZiB5b3UgY2FuIHNwbGl0IHRoYXQgcm9j a2NoaXAKPj4+IHBpbmN0cmwgaW50byB0d28gZGV2aWNlcywgdGhhdCBzaG91bGQgYmUgb2theSBh bmQgZGVmaW5pdGVseSBub3QgYW4KPj4+IG92ZXJraWxsLgo+Pj4KPj4+IE1heWJlIHNvbWV0aGlu ZyBsaWtlOgo+Pj4KPj4+IHBpbmN0cmwgewo+Pj4gwqDCoMKgwqAgY29tcGF0aWJsZSA9ICJyb2Nr Y2hpcCxyazM1NjgtcGluY3RybCI7Cj4+PiDCoMKgwqDCoCBpMmMwIHsKPj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIC9vbWl0LWlmLW5vLXJlZi8KPj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGkyYzBfeGZlcjogaTJjMC14ZmVyIHsKPj4+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByb2NrY2hpcCxwaW5zID0KPj4+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgLyogaTJjMF9zY2wgKi8KPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgPDAgUktfUEIxIDEgJnBjZmdfcHVs bF9ub25lX3NtdD4sCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIGkyYzBfc2RhICovCj4+PiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDwwIFJL X1BCMiAxICZwY2ZnX3B1bGxfbm9uZV9zbXQ+Owo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgfTsKPj4+IMKgwqDCoMKgIH0KPj4+IMKgwqDCoMKgIC4uLgo+Pj4gwqDCoMKgwqAg Li4uCj4+PiDCoMKgwqDCoCBwaW5jdHJsLWlvIHsKPj4+IMKgwqDCoMKgwqDCoMKgwqAgY29tcGF0 aWJsZSA9ICJyb2NrY2hpcCxyazM1NjgtcGluY3RybC1pbyI7Cj4+PiDCoMKgwqDCoMKgwqDCoMKg IHBtdWlvMS1zdXBwbHkgPSA8JnZjYzN2M19wbXU+Owo+Pj4gwqDCoMKgwqDCoMKgwqDCoCBjYW0g ewo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC4uLi4KPj4+IMKgwqDCoMKgwqDCoMKgwqAg fQo+Pj4gwqDCoMKgwqDCoMKgwqDCoCAuLi4uCj4+PiDCoMKgwqDCoMKgwqDCoMKgIC4uLi4KPj4+ IH0KPj4+Cj4+PiBTbyBwaW5jdHJsIHdpbGwgcHJvYmUgc3VjY2Vzc2Z1bGx5IGFuZCBhZGQgaXQn cyBjaGlsZCBkZXZpY2UKPj4+IHBpbmN0cmwtaW8uIGkyYzAgd2lsbCBwcm9iZSBvbmNlIHBpbmN0 cmwgaXMgYXZhaWxhYmxlLiBUaGVuIGV2ZW50dWFsbHkKPj4+IHRoZSByZWd1bGF0b3Igd2lsbCBw cm9iZS4gQW5kIGFmdGVyIGFsbCB0aGF0LCBwaW5jdHJsLWlvIHdvdWxkIHByb2JlLgo+Pj4KPj4+ IFRoaXMgaGFzIG5vIGN5Y2xlcyBhbmQgSU1ITyByZXByZXNlbnRzIHRoZSBoYXJkd2FyZSBhY2N1 cmF0ZWx5LiBZb3UKPj4+IGhhdmUgYSBwaW5jdHJsIGJsb2NrIGFuZCB0aGVyZSdzIGEgc3ViIGNv bXBvbmVudCBvZiBpdCAocGluY3RybC1pbykKPj4+IHRoYXQgd29ya3MgZGlmZmVyZW50bHkgYW5k IGhhcyBhZGRpdGlvbmFsIGRlcGVuZGVuY2llcy4KPj4+Cj4+PiBBbnkgdGhvdWdodHMgb24gdGhp cz8KPj4KPiAKPiBKdXN0IHRvIGJlIGNsZWFyIHRoYXQgd2hldGhlciBpMmMwIGlzIHdoZXJlIHRo ZSBQTUlDIGlzIGlzIEhXIGRlcGVuZGVudCwgCj4gc28gd2UgY2Fubm90IGhhdmUgdGhhdCBpbiB0 aGUgbWFpbiBTb0MgZHRzaSAob24gUm9ja2NoaXAgd2UgdHlwaWNhbGx5IAo+IGhhdmUgYSBidW5j aCBvZiB0aG9zZSBpbiB0aGUgbWFpbiBTb0MgZHRzaSB0byBhdm9pZCBjb21tb24gbm9kZXMgdG8g YmUgCj4gY29weS1wYXN0ZWQgYWxsIG92ZXIgdGhlIHBsYWNlKS4KPiAKPj4gQnkgbWFraW5nIHRo ZSBJTyBkb21haW4gZGV2aWNlIGEgY2hpbGQgbm9kZSBvZiB0aGUgcGluY3RybCBub2RlIHdlCj4+ IHdvdWxkbid0IG5lZWQgYSBwaGFuZGxlIGZyb20gdGhlIHBpbmN0cmwgbm9kZSB0byB0aGUgSU8g ZG9tYWluIG5vZGUKPj4gYW55bW9yZSwgYnV0IGFwYXJ0IGZyb20gdGhhdCB0aGUgYXBwcm9hY2gg aXMgZXF1aXZhbGVudCB0byB3aGF0IHdlIGhhdmUKPj4gYWxyZWFkeS4KPj4KPiAKPiBJbmRlZWQs IGp1c3Qgb25lIGxlc3MgaXRlbSBpbiB0aGUgY3ljbGljIGRlcGVuZGVuY3kgYnV0IGl0J3Mgc3Rp bGwgdGhlcmUuCj4gCj4+IEdpdmVuIHRoYXQgZndfZGV2bGluayBhbGxvd3MgdXMgdG8gYWRkIHRo ZSBzdXBwbGllcyBkaXJlY3RseSB0byB0aGUKPj4gcGluY3RybCBub2RlLCBJIHdvdWxkIHByZWZl ciBkb2luZyB0aGF0LiBCdXQgYXMgc2FpZCwgaXQgZG9lc24ndCBzb2x2ZQo+PiB0aGUgcHJvYmxl bS4KPj4KPiAKPiBBYnNvbHV0ZWx5Lgo+IAo+IFRoZSBpc3N1ZSBpcyB0aGF0IHdlIGhhdmUgcGlu Y3RybCB0aGF0IG5lZWRzIHRvIHByb2JlIGZvciBhbnl0aGluZyB0byAKPiB3b3JrIHJlYWxseS4K PiAKPiBDb25zaWRlcmluZyB0aGF0IHBpbmN0cmwgcGluZ3JvdXBzIHJlcXVpcmVzIChvbiB0aGUg SFcgbGV2ZWwpIHRvIGJlIAo+IGxpbmtlZCB0byBhbiBJTyBkb21haW4gdG8gYmUgd29ya2luZyBw cm9wZXJseSwgdGhlIElPIGRvbWFpbiBkZXBlbmRpbmcgCj4gb24gYSByZWd1bGF0b3IgKHdoaWNo IGNhbiBoYXZlIGRpZmZlcmVudCB2b2x0YWdlcyBhdCBydW50aW1lLCBoZW5jZSB3aHkgCj4gdGhp cyBsaW5rIGlzIGFic29sdXRlbHkgY3JpdGljYWwgdG8gbm90IGRhbWFnZSB0aGUgU29DIGJ5IGhh dmluZyB0aGUgSU8gCj4gZG9tYWluIGNvbmZpZ3VyZWQgZm9yIGEgZGlmZmVyZW50IHZvbHRhZ2Ug dGhhbiBwcm92aWRlZCBieSBpdHMgCj4gcmVndWxhdG9yKSwgd2hpY2ggaXMgb24gYSBidXMgKGky Yy9zcGkpIHRoYXQgbmVlZHMgYSBzcGVjaWZpYyBwaW5tdXggaW4gCj4gb3JkZXIgdG8gd29yay4K PiAKPiBTYXJhdmFuYSBnYXZlIG9uZSBleGFtcGxlIG9mIHRoZSBjeWNsaWMgZGVwZW5kZW5jeSBv biB0aGUgRFQgbGV2ZWwgCj4gZWFybGllci4gVGhlIGlzc3VlIGlzbid0IHRoZSBEVC1wYXJ0IG9m IHRoZSBjeWNsaWMgZGVwZW5kZW5jeSwgaXQncyB0aGF0IAo+IHRoZSBkcml2ZXJzIGFjdHVhbGx5 IGFsc28gaGF2ZSB0aGlzIGN5Y2xpYyBkZXBlbmRlbmN5LCB0aGUgaTJjL3NwaSAKPiBjb250cm9s bGVyIHZpYSBpdHMgcGluY3RybCBkZWZhdWx0IHN0YXRlIGFuZCB0aGUgcGluY3RybCBkcml2ZXIg d2l0aCBhIAo+IGRlcGVuZGVuY3kgb24gYSBQTUlDIGRyaXZlciB0aGF0IGNvdWxkJ250IGhhdmUg YmVlbiBwcm9iZWQgeWV0IGJlY2F1c2UgCj4gaXRzIG9uIHRoZSBpMmMgYnVzLiBJIGRvbid0IHNl ZSBob3cgd2UgY2FuIG5vdCBoYXZlIGEgc3BlY2lhbCBwcm9wZXJ0eSAKPiBpbiB0aGUgRFQgYmlu ZGluZyBmb3IgaWdub3JpbmcgdGhpcyBjeWNsaWMgZGVwZW5kZW5jeSBmb3Igb25lIHNwZWNpZmlj IAo+IGxvb3AuIFdlIGNhbm5vdCBoYXJkY29kZSB0aGUgZHJpdmVyIHRvIGxvb2sgZm9yIGEgc3Bl Y2lmaWMgY29tcGF0aWJsZSBvciAKPiBzb21ldGhpbmcgbGlrZSB0aGF0IGJlY2F1c2UgdGhpcyBp cyBIVyBkZXBlbmRlbnQsIHRoZXJlJ3Mgbm8gcnVsZSBvbiAKPiB3aGljaCBpMmMvc3BpIGJ1cyBv bmUgbmVlZHMgdG8gcHV0IHRoZWlyIFBNSUMgb24uIE1heWJlIHdlIGNvdWxkIHRyeSB0byAKPiBs b29rIGZvciB0aGUgUE1JQyBvbiBjaGlsZCBub2RlcyBvZiBjb25zdW1lcnMgb2YgcGluY3RybCAo aWYgcG9zc2libGUgCj4gb25seSB3aGVuIGEgY3ljbGljIGRlcGVuZGVuY3kgaXMgZGV0ZWN0ZWQp IGFuZCBieXBhc3MgdGhpcyBkZXBlbmRlbmN5IG9uIAo+IHRoZSByZWd1bGF0b3I/IE9yIG1heWJl IGNoZWNrIGlmIHRoZSBwYXJlbnQgb2YgdGhlIFBNSUMgb2YgdGhlIElPIGRvbWFpbiAKPiBvZiB0 aGUgY3VycmVudGx5IHJlcXVlc3RlZCBwaW5ncm91cCBpcyB0aGUgc2FtZSBhcyB0aGUgY29uc3Vt ZXIgb2YgdGhlIAo+IGN1cnJlbnRseSByZXF1ZXN0ZWQgcGlubXV4IHdpdGhpbiB0aGlzIHBpbmdy b3VwPwoKVGhpcyBpcyB3aHkgSSB0aGluayBpdCBtYWtlcyB0aGUgbW9zdCBzZW5zZSB0byBkZXNj cmliZSB0aGUgaW5pdGlhbCBJL08gCmRvbWFpbiB2b2x0YWdlIGFzIGEgcHJvcGVydHkgb2YgdGhl IEkvTyBkb21haW4sIHNpbmNlIHRoYXQgaXMgbW9zdCAKdHJ1dGhmdWwgdG8gd2hhdCBpcyBhY3R1 YWxseSBuZWVkZWQgdG8gaW5pdGlhbGlzZSB0aGUgaGFyZHdhcmUuIElkZWFsbHkgCndlIGNvdWxk IHRoZW4ganVzdCB1c2UgdGhhdCBpbml0aWFsIGNvbmZpZ3VyYXRpb24gdG8gcHJvYmUgc3VjY2Vz c2Z1bGx5LCAKYW5kIHVzZSBhIG5vdGlmaWVyIHRvIHBpY2sgdXAgdGhlIHJlZ3VsYXRvciBpZiBh bmQgd2hlbiBpdCBkb2VzIGFwcGVhciAKbGF0ZXIgKG9uIHRoZSBiYXNpcyB0aGF0IHRoZSB2b2x0 YWdlIHNob3VsZCBub3QgYmUgYWJsZSB0byBjaGFuZ2UgCip3aXRob3V0KiBvbmUpLiBBbmQgb3Ro ZXJ3aXNlIGlmIGFuIGluaXRpYWwgdm9sdGFnZSBpc24ndCBzcGVjaWZpZWQgdGhlbiAKd2UgY2Fu IGFzc3VtZSBpdCdzIE9LIHRvIHdhaXQgZm9yIHRoZSByZWd1bGF0b3IgYW5kIHF1ZXJ5IGl0IGFz IG5vcm1hbC4KCj4gSSdtIGFsc28gd29uZGVyaW5nIGhvdyB0aGlzIHdvdWxkIHBsYXkgb3V0IGlm IHRoZSBQTUlDIGlzbid0IHN1cHBseWluZyAKPiBwb3dlciB0byB0aGUgSU8gZG9tYWluIHRoZSBi dXMgY29udHJvbGxlciB0byB3aGljaCBpdCdzIGNvbm5lY3RlZC4uLiBidXQgCj4gSSBndWVzcyB0 aGF0J3MgYSBIVyBkZXNpZ24gaXNzdWUgOikKCkhvcGVmdWxseSB0aGF0IHdvdWxkIGp1c3QgYmUg YSBzZW5zaWJsZSBub24tY3ljbGljIGRlc2lnbiB0aGF0IGF2b2lkcyAKdGhpcyBwcm9ibGVtIGFs dG9nZXRoZXIuIEhvd2V2ZXIgdGhlcmUncyBub3RoaW5nIHNwZWNpYWwgYWJvdXQgUE1JQ3MsIAp0 aGlzIGNvdWxkIGVxdWFsbHkgYXBwbHkgaWYgdGhlIEkvTyBkb21haW4gd2FzIHN1cHBsaWVkIGJ5 IGEgR1BJTyAKcmVndWxhdG9yIG9yIFBXTSByZWd1bGF0b3Igd2hpY2ggdXNlZCBvbmUgb2YgaXRz IG93biBwaW5zOyB0aGUgCmZ1bmRhbWVudGFsIHByb2JsZW0gdG8gc29sdmUgaXMgYmVpbmcgYWJs ZSB0byBkZXRlcm1pbmUgdGhlIGNvcnJlY3QgCmluaXRpYWwgdm9sdGFnZSBzZXR0aW5nIGZvciBh biBJL08gZG9tYWluIHdpdGhvdXQgaGF2aW5nIHRvIHBlcmZvcm0gYW55IApJL08gdmlhIHRoYXQg ZG9tYWluIGl0c2VsZi4gVGhhdCBpcyB0aGUgcGh5c2ljYWwgZGVwZW5kZW5jeSBjeWNsZSB3aGlj aCAKY2FuIGV4aXN0IGhlcmUsIHJlZ2FyZGxlc3Mgb2YgaG93IHdlIGFkZHJlc3MgYW55IG90aGVy IHNvZnR3YXJlIApkZXBlbmRlbmNpZXMgYmV0d2VlbiBkcml2ZXJzIHdpdGhpbiBMaW51eC4KClRo YW5rcywKUm9iaW4uCgo+IAo+IEl0J3MgRnJpZGF5IGV2ZW5pbmcgaGVyZSBzbyBob3BlZnVsbHkg bXkgYnJhaW4gd2Fzbid0IGFscmVhZHkgb24gd2Vla2VuZCAKPiBtb2RlIGFuZCBJIGNvdWxkIGNv bnZleSBwcm9wZXJseSBldmVyeXRoaW5nIEkgaGFkIGluIG1pbmQuCj4gCj4gQ2hlZXJzLAo+IFF1 ZW50aW4KPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Xwo+IExpbnV4LXJvY2tjaGlwIG1haWxpbmcgbGlzdAo+IExpbnV4LXJvY2tjaGlwQGxpc3RzLmlu ZnJhZGVhZC5vcmcKPiBodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2xpbnV4LXJvY2tjaGlwCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpMaW51eC1yb2NrY2hpcCBtYWlsaW5nIGxpc3QKTGludXgtcm9ja2NoaXBAbGlzdHMu aW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2xpbnV4LXJvY2tjaGlwCg==