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 4565CFA373D for ; Fri, 21 Oct 2022 17:19:39 +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: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=6X4f+S2lo51nFtRLWHsuubQy7zrLrcWmApJ84ydi02c=; b=QSFa0tmt9+tx36 sao4Xw7XPppsr5avibk7XG6dIs7W4LpgYGHqyD0D8YFIfU4DfnFLdDjMbfWuOC0dJhl/EuxzvS9iI vkOFyiaamsIKNDe8p6E2VEspl3ZhOvYtXSv5niOgD+ntdEkeqbx1TM5GQRbfiQmuJrrU+ym7eBLi8 EfMzrEAiHsJAu0AoyNAsiNI7pFqXZa5MIhM9rzLtMKSHuaSiXPhcVKuojcry1xh25PErWjcPXE+N9 9J007lsf1jm/kCcYm4dzUWjNGkJlz/6u9NEq69AOQ7lwaVAmMk9JVqHoHYj0KoPRVuExjyUisxmTx EYkLaIoc92jz79bBWFkw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1olvfG-0099Ty-My; Fri, 21 Oct 2022 17:18:34 +0000 Received: from ams.source.kernel.org ([2604:1380:4601:e00::1]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1olvfC-0099Tb-MF for linux-arm-kernel@lists.infradead.org; Fri, 21 Oct 2022 17:18:32 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id F10D5B82C93; Fri, 21 Oct 2022 17:18:28 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 98B88C433C1; Fri, 21 Oct 2022 17:18:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1666372707; bh=f4ykmoUl/yCzeTxx58YqgRGeTCMZWNtlrEzV/yFU2ns=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=UZuExFF7uzhDCqLUe1rBq8gtssBbUvQVJhAdp2er4VrOSfKe1ReC3Sq2+Nh1Kv+o1 AUcsME3WRrAlBCkSVFucj3zWQdrLjdwE/NwmBgGvmZIqtLGbCqImjIsduSSTapxaGj KK4VLFQwU5rgoTScVuuGtziW6IVO3R3ZkmfefA74umtrf17R2gp8/B6r8bV03oRaww e8rUBA/mxa2zNHfJUJKGdDmfIUCcfF7HsuEdjiBCyvzCcj6YbdHIJliFzLw47ZrY23 v+PKmfTCoROU7J+y7/BnqYqsgtw++Qzlc+0mFn3f4R10txm5KEXNrvXgkzMFmrdgoF AzoohjkU6qnbA== Received: from sofa.misterjones.org ([185.219.108.64] helo=goblin-girl.misterjones.org) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1olvf7-000aBi-Ay; Fri, 21 Oct 2022 18:18:25 +0100 Date: Fri, 21 Oct 2022 18:18:24 +0100 Message-ID: <86zgdpdrj3.wl-maz@kernel.org> From: Marc Zyngier To: firas ashkar Cc: alex@digriz.org.uk, tglx@linutronix.de, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH v2] irqchip: add TS7800v1 fpga based controller driver In-Reply-To: <7b2ac9ae5f18e5272e52478c73da53a76cf9f2a2.camel@savoirfairelinux.com> References: <20221020141351.14829-1-firas.ashkar@savoirfairelinux.com> <861qr1fs55.wl-maz@kernel.org> <7b2ac9ae5f18e5272e52478c73da53a76cf9f2a2.camel@savoirfairelinux.com> 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 (aarch64-unknown-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: firas.ashkar@savoirfairelinux.com, alex@digriz.org.uk, tglx@linutronix.de, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org 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-20221021_101831_031210_7A2D1476 X-CRM114-Status: GOOD ( 50.23 ) 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 T24gRnJpLCAyMSBPY3QgMjAyMiAxNzoxOTowMiArMDEwMCwKZmlyYXMgYXNoa2FyIDxmaXJhcy5h c2hrYXJAc2F2b2lyZmFpcmVsaW51eC5jb20+IHdyb3RlOgo+IAo+IE9uIEZyaSwgMjAyMi0xMC0y MSBhdCAxMDoyMiArMDEwMCwgTWFyYyBaeW5naWVyIHdyb3RlOgo+ID4gT24gVGh1LCAyMCBPY3Qg MjAyMiAxNToxMzo1MSArMDEwMCwKPiA+IEZpcmFzIEFzaGthciA8ZmlyYXMuYXNoa2FyQHNhdm9p cmZhaXJlbGludXguY29tPiB3cm90ZToKPiA+ID4gCj4gPiA+IDEuIGFkZCBUUy03ODAwdjEgZnBn YSBiYXNlZCBpcnEgY29udHJvbGxlciBkcml2ZXIsIGFuZAo+ID4gPiAyLiBhZGQgcmVsYXRlZCBt ZW1vcnkgYW5kIGlycSByZXNvdXJjZXMKPiA+ID4gCj4gPiA+IEJ5IGRlZmF1bHQgb25seSBtYXBw ZWQgRlBHQSBpbnRlcnJ1cHRzIHdpbGwgYmUgY2hhaW5lZC9tdWx0aXBsZXhlZCwKPiA+ID4gdGhl c2UKPiA+ID4gY2hhaW5lZCBpbnRlcnJ1cHRzIHdpbGwgdGhlbiBiZSBhdmFpbGFibGUgdG8gb3Ro ZXIgZGV2aWNlIGRyaXZlcnMKPiA+ID4gdG8KPiA+ID4gcmVxdWVzdCB2aWEgdGhlIGNvcnJlc3Bv bmRpbmcgTGludXggSVJRcy4KPiA+ID4gCj4gPiA+ICQgY2F0IC9wcm9jL2NwdWluZm8KPiA+ID4g cHJvY2Vzc29ywqDCoMKgwqDCoMKgwqA6IDAKPiA+ID4gbW9kZWwgbmFtZcKgwqDCoMKgwqDCoDog RmVyb2Nlb24gcmV2IDAgKHY1bCkKPiA+ID4gQm9nb01JUFPCoMKgwqDCoMKgwqDCoMKgOiAzMzMu MzMKPiA+ID4gRmVhdHVyZXPCoMKgwqDCoMKgwqDCoMKgOiBzd3AgaGFsZiB0aHVtYiBmYXN0bXVs dCBlZHNwCj4gPiA+IENQVSBpbXBsZW1lbnRlcsKgOiAweDQxCj4gPiA+IENQVSBhcmNoaXRlY3R1 cmU6IDVURUoKPiA+ID4gQ1BVIHZhcmlhbnTCoMKgwqDCoMKgOiAweDAKPiA+ID4gQ1BVIHBhcnTC oMKgwqDCoMKgwqDCoMKgOiAweDkyNgo+ID4gPiBDUFUgcmV2aXNpb27CoMKgwqDCoDogMAo+ID4g PiAKPiA+ID4gSGFyZHdhcmXCoMKgwqDCoMKgwqDCoMKgOiBUZWNobm9sb2dpYyBTeXN0ZW1zIFRT LTc4eHggU0JDCj4gPiA+IFJldmlzaW9uwqDCoMKgwqDCoMKgwqDCoDogMDAwMAo+ID4gPiBTZXJp YWzCoMKgwqDCoMKgwqDCoMKgwqDCoDogMDAwMDAwMDAwMDAwMDAwMAo+ID4gPiAkCj4gPiA+IAo+ ID4gPiAkIGNhdCAvcHJvYy9pbnRlcnJ1cHRzCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgIENQ VTAKPiA+ID4gwqAgMTrCoMKgwqDCoMKgwqDCoCA5MDLCoCBvcmlvbl9pcnHCoMKgwqDCoCBMZXZl bMKgwqDCoMKgIG9yaW9uX3RpY2sKPiA+ID4gwqAgNDrCoMKgwqDCoMKgwqDCoCA3OTXCoCBvcmlv bl9pcnHCoMKgwqDCoCBMZXZlbMKgwqDCoMKgIHR0eVMwCj4gPiA+IMKgMTM6wqDCoMKgwqDCoMKg wqDCoMKgIDDCoCBvcmlvbl9pcnHCoMKgwqDCoCBMZXZlbMKgwqDCoMKgIGVoY2lfaGNkOnVzYjIK PiA+ID4gwqAxODrCoMKgwqDCoMKgwqDCoMKgwqAgMMKgIG9yaW9uX2lyccKgwqDCoMKgIExldmVs wqDCoMKgwqAgZWhjaV9oY2Q6dXNiMQo+ID4gPiDCoDIyOsKgwqDCoMKgwqDCoMKgwqAgNjnCoCBv cmlvbl9pcnHCoMKgwqDCoCBMZXZlbMKgwqDCoMKgIGV0aDAKPiA+ID4gwqAyMzrCoMKgwqDCoMKg wqDCoCAxNzHCoCBvcmlvbl9pcnHCoMKgwqDCoCBMZXZlbMKgwqDCoMKgIG9yaW9uLW1kaW8KPiA+ ID4gwqAyOTrCoMKgwqDCoMKgwqDCoMKgwqAgMMKgIG9yaW9uX2lyccKgwqDCoMKgIExldmVswqDC oMKgwqAgbXZfY3J5cHRvCj4gPiA+IMKgMzE6wqDCoMKgwqDCoMKgwqDCoMKgIDLCoCBvcmlvbl9p cnHCoMKgwqDCoCBMZXZlbMKgwqDCoMKgIG12X3hvci4wCj4gPiA+IMKgNjU6wqDCoMKgwqDCoMKg wqDCoMKgIDHCoCB0czc4MDAtaXJxY8KgwqAgMCBFZGdlwqDCoMKgwqDCoCB0cy1kbWFjLWNwdXBj aQo+ID4gPiBFcnI6wqDCoMKgwqDCoMKgwqDCoMKgIDAKPiA+ID4gJAo+ID4gPiAKPiA+ID4gJCB1 bmFtZSAtYQo+ID4gPiBMaW51eCB0cy03ODAwIDYuMS4wLXJjMSAjMiBQUkVFTVBUIE1vbiBPY3Qg MTcgMTE6MTk6MTIgRURUIDIwMjIKPiA+ID4gYXJtdjV0ZWwKPiA+ID4gwqBHTlUvTGludXgKPiA+ ID4gJAo+ID4gPiAKPiA+ID4gU2lnbmVkLW9mZi1ieTogRmlyYXMgQXNoa2FyIDxmaXJhcy5hc2hr YXJAc2F2b2lyZmFpcmVsaW51eC5jb20+Cj4gPiA+IC0tLQo+ID4gPiAKPiA+ID4gTm90ZXM6Cj4g PiA+IMKgwqDCoCBDaGFuZ2VzIGluIFYyCj4gPiA+IMKgwqDCoCAqIGxpbWl0IHRoZSBjb21taXQg bWVzc2FnZQo+ID4gCj4gPiBXZWxsLCB0aGVyZSBpcyBzdGlsbCBhIGxvdCBvZiB3b3JrIHRvIGRv LiBNb3N0IG9mIHRoaXMgY29tbWl0IG1lc3NhZ2UKPiA+IGNvdWxkIGJlIHJlZHVjZWQgdG8gYSBz aW5nbGUgcGFyYWdyYXBoOgo+ID4gCj4gPiAiQWRkIHN1cHBvcnQgZm9yIEZvb0JhciBJUlEgY29u dHJvbGxlciB1c3VhbGx5IGZvdW5kIG9uIFpvcmdsdWIKPiA+IHBsYXRmb3JtLiIKPiA+IAo+ID4g VGhlIHJlc3QgaXMgcGxhaW4gb2J2aW91cy4KPiBuYWNrLCBjb21taXQgbWVzc2FnZSBpcyBmaW5l IGFzIGlzIQoKQWxsb3cgbWUgdG8gYmUgdGhlIGp1ZGdlIG9mIHRoYXQuCgo+ID4gCj4gPiA+IMKg wqDCoCAqIGZvcm1hdCBjb21tZW50cyBpbiBzb3VyY2UgY29kZQo+ID4gPiDCoMKgwqAgKiB1c2Ug cmF3IHNwaW4gbG9ja3MgdG8gcHJvdGVjdCBtYXNrL3VubWFzayBvcHMKPiA+ID4gwqDCoMKgICog dXNlICdoYW5kbGVfZWRnZV9pcnEnIGFuZCAnaXJxX2FjaycgbG9naWMKPiA+ID4gwqDCoMKgICog cmVtb3ZlICdpcnFfZG9tYWluX3hsYXRlX29uZWNlbGwnCj4gPiA+IMKgwqDCoCAqIHJlbW92ZSB1 bm5lY2Vzc2FyeSBzdGF0dXMgZmxhZ3MKPiA+ID4gwqDCoMKgICogdXNlICdidWlsdGluX3BsYXRm b3JtX2RyaXZlcicgaGVscGVyIHJvdXRpbmUKPiA+ID4gCj4gPiA+IDoxMDA2NDQgMTAwNjQ0IDJm NGZlM2NhNWMxYSBlZDgzNzg4OTMyMDggTcKgwqDCoMKgwqDCoGFyY2gvYXJtL21hY2gtCj4gPiA+ IG9yaW9uNXgvdHM3OHh4LWZwZ2EuaAo+ID4gPiA6MTAwNjQ0IDEwMDY0NCBhZjgxMGU3Y2NkNzkg ZDMxOWE2OGI3MTYwIE3CoMKgwqDCoMKgwqBhcmNoL2FybS9tYWNoLQo+ID4gPiBvcmlvbjV4L3Rz Nzh4eC1zZXR1cC5jCj4gPiA+IDoxMDA2NDQgMTAwNjQ0IDdlZjlmNWU2OTZkMyBkMTg0ZmI0MzVj NWQKPiA+ID4gTcKgwqDCoMKgwqDCoGRyaXZlcnMvaXJxY2hpcC9LY29uZmlnCj4gPiA+IDoxMDA2 NDQgMTAwNjQ0IDg3YjQ5YTEwOTYyYyBiMDIyZWVjZTIwNDIKPiA+ID4gTcKgwqDCoMKgwqDCoGRy aXZlcnMvaXJxY2hpcC9NYWtlZmlsZQo+ID4gPiA6MDAwMDAwIDEwMDY0NCAwMDAwMDAwMDAwMDAg ZTk3NTYwN2ZhNGQ1Cj4gPiA+IEHCoMKgwqDCoMKgwqBkcml2ZXJzL2lycWNoaXAvaXJxLXRzNzgw MC5jCj4gPiA+IMKgYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3RzNzh4eC1mcGdhLmjCoCB8wqDCoCAx ICsKPiA+ID4gwqBhcmNoL2FybS9tYWNoLW9yaW9uNXgvdHM3OHh4LXNldHVwLmMgfMKgIDU1ICsr KysrCj4gPiA+IMKgZHJpdmVycy9pcnFjaGlwL0tjb25maWfCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB8wqAgMTIgKwo+ID4gPiDCoGRyaXZlcnMvaXJxY2hpcC9NYWtlZmlsZcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB8wqDCoCAxICsKPiA+ID4gwqBkcml2ZXJzL2lycWNoaXAvaXJxLXRzNzgw MC5jwqDCoMKgwqDCoMKgwqDCoCB8IDM0Nwo+ID4gPiArKysrKysrKysrKysrKysrKysrKysrKysr KysKPiA+ID4gwqA1IGZpbGVzIGNoYW5nZWQsIDQxNiBpbnNlcnRpb25zKCspCj4gPiA+IAo+ID4g PiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3RzNzh4eC1mcGdhLmggYi9hcmNo L2FybS9tYWNoLQo+ID4gPiBvcmlvbjV4L3RzNzh4eC1mcGdhLmgKPiA+ID4gaW5kZXggMmY0ZmUz Y2E1YzFhLi5lZDgzNzg4OTMyMDggMTAwNjQ0Cj4gPiA+IC0tLSBhL2FyY2gvYXJtL21hY2gtb3Jp b241eC90czc4eHgtZnBnYS5oCj4gPiA+ICsrKyBiL2FyY2gvYXJtL21hY2gtb3Jpb241eC90czc4 eHgtZnBnYS5oCj4gPiA+IEBAIC0zMiw2ICszMiw3IEBAIHN0cnVjdCBmcGdhX2RldmljZXMgewo+ ID4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGZwZ2FfZGV2aWNlwqDCoMKgwqDCoMKgdHNfcnRj Owo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IGZwZ2FfZGV2aWNlwqDCoMKgwqDCoMKgdHNf bmFuZDsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBmcGdhX2RldmljZcKgwqDCoMKgwqDC oHRzX3JuZzsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGZwZ2FfZGV2aWNlwqDCoMKgwqDC oMKgdHNfaXJxYzsKPiA+ID4gwqB9Owo+ID4gPiDCoAo+ID4gPiDCoHN0cnVjdCB0czc4eHhfZnBn YV9kYXRhIHsKPiA+ID4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb3Jpb241eC90czc4eHgt c2V0dXAuYyBiL2FyY2gvYXJtL21hY2gtCj4gPiA+IG9yaW9uNXgvdHM3OHh4LXNldHVwLmMKPiA+ ID4gaW5kZXggYWY4MTBlN2NjZDc5Li5kMzE5YTY4YjcxNjAgMTAwNjQ0Cj4gPiA+IC0tLSBhL2Fy Y2gvYXJtL21hY2gtb3Jpb241eC90czc4eHgtc2V0dXAuYwo+ID4gPiArKysgYi9hcmNoL2FybS9t YWNoLW9yaW9uNXgvdHM3OHh4LXNldHVwLmMKPiA+ID4gQEAgLTMyMiw2ICszMjIsNDkgQEAgc3Rh dGljIHZvaWQgdHM3OHh4X3RzX3JuZ191bmxvYWQodm9pZCkKPiA+ID4gwqDCoMKgwqDCoMKgwqDC oHBsYXRmb3JtX2RldmljZV9kZWwoJnRzNzh4eF90c19ybmdfZGV2aWNlKTsKPiA+ID4gwqB9Cj4g PiA+IMKgCj4gPiA+ICsvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKPiA+ID4gKioqKioqKioqKioqCj4gPiA+ICsgKiBmcGdh IGlycSBjb250cm9sbGVyCj4gPiA+ICsKPiA+ID4gKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ID4gPiAqKioqKioqKiov Cj4gPiAKPiA+IFsuLi5dCj4gPiAKPiA+IFNvcnJ5LCBidXQgSSBoYXZlIHRvIGFzazogd2hhdCBw YXJ0IG9mICJ3ZSdyZSBub3QgdGFraW5nIGFueQo+ID4gYWRkaXRpb25hbCBub24tRFQgY2hhbmdl cyB0byB0aGVzZSBvYnNvbGV0ZSBzZXR1cHMiIGRpZCBJIGZhaWwgdG8KPiA+IGFjY3VyYXRlbHkg Y29tbXVuaWNhdGU/Cj4gPiAKPiA+IFVudGlsIHRoaXMgYm9hcmQgaXMgZW50aXJlbHkgY29udmVy dGVkIHRvIERULCBJJ20gbm90IHRha2luZyBhbnkKPiA+IGlycWNoaXAgY2hhbmdlcyBvdGhlciB0 aGFuIHRoZSBtb3N0IG9idmlvdXMgYnVnIGZpeGVzLgo+IGFzIGxvbmcgYXMgdGhpcyBib2FyZCBp cyBwcmVzZW50IGluIHRoZSBrZXJuZWwgaW4gaXRzIGN1cnJlbnQgbGVnYWN5Cj4gZm9ybSwgdGhp cyBpcyBhIHZhbGlkIHBhdGNoIQoKTm8uIFRoZXJlIGlzIGEgY3V0IG9mIHBvaW50LiBDb2RlIHRo YXQgd2Ugd291bGQgdGFrZW4gMTAgeWVhcnMgYWdvCmlzbid0IG5lY2Vzc2FyaWx5IHZhbGlkIGFu eW1vcmUuIFdlIHdhbnQgdG8gaW1wcm92ZSB0aGUga2VybmVsIGFzIGEKd2hvbGUsIGFuZCBub3Qg a2VlcCBpdCBpbiB0aGUgcGFzdC4KCj4gCj4gPiAKPiA+IFsuLi5dCj4gPiAKPiA+ID4gK3N0YXRp YyB2b2lkIHRzNzgwMF9pcnFfbWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmQpCj4gPiA+ICt7Cj4gPiA+ ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCB0czc4MDBfaXJxX2RhdGEgKmRhdGEgPQo+ID4gPiBpcnFf ZGF0YV9nZXRfaXJxX2NoaXBfZGF0YShkKTsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgdTMyIGZwZ2Ff bWFza19yZWcgPSByZWFkbChkYXRhLT5iYXNlICsgSVJRX01BU0tfUkVHKTsKPiA+ID4gK8KgwqDC oMKgwqDCoMKgdTMyIG1hc2tfYml0cyA9IDEgPDwgZC0+aHdpcnE7Cj4gPiA+ICvCoMKgwqDCoMKg wqDCoHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gPiA+ICsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgcmF3 X3NwaW5fbG9ja19pcnFzYXZlKCZkYXRhLT5sb2NrLCBmbGFncyk7Cj4gPiA+ICvCoMKgwqDCoMKg wqDCoHdyaXRlbChmcGdhX21hc2tfcmVnICYgfm1hc2tfYml0cywgZGF0YS0+YmFzZSArCj4gPiA+ IElSUV9NQVNLX1JFRyk7Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoHdyaXRlbChmcGdhX21hc2tfcmVn ICYgfm1hc2tfYml0cywgZGF0YS0+YnJpZGdlICsKPiA+ID4gSVJRX01BU0tfUkVHKTsKPiA+ID4g K8KgwqDCoMKgwqDCoMKgcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRhdGEtPmxvY2ssIGZs YWdzKTsKPiA+IAo+ID4gT01GRy4gV2hhdCBkbyB5b3UgZXhwZWN0IHRoaXMgcHJvdGVjdHM/IFNh bWUgcXVlc3Rpb24gYXBwbGllcyB0byBhbGwKPiA+IHRoZSBpbnN0YW5jZXMgd2hlcmUgeW91IHRh a2UgdGhpcyBwb2ludGxlc3MgbG9jay4KPiBkb24ndCBqdW1wIG5vdwo+IHRoZSBsb2NrcyBhZGRl ZCBhcyBwZXIgeW91ciBwcmV2aW91cyBjb21tZW50LCBxdW90aW5nOgo+ICJJIGtub3cgeW91ciBI VyBpcyBVUCwgYnV0IHNlZWluZyB0aGVzZSBSTVcgc2VxdWVuY2VzIHdpdGhvdXQgYSBsb2NrCj4g bWFrZXMgbWUganVtcC4iCj4gT24gdGhpcyBzaW5nbGUgQ1BVIGJhc2VkIGFyY2ggVFM3OHh4LCBs b2NrcyBhcmUgd2FzdGUgb2YgY3B1IGN5Y2xlcywKPiBhbHNvIG5vdGUgdGhhdCBJUlFzL3ByZWVt cHRpb24gYXJlL2lzIGFscmVhZHkgb2ZmIGluIHRoaXMgY29udGV4dAo+IAo+IG1heWJlIHlvdSBt ZWFudCBhZGRpbmcgbG9ja3MgYXMgdG8gcHJvbW90ZSBnZW5lcmFsIGNvcnJlY3QgY29kaW5nID8K CkxldCBtZSBzcGVsbCBpdCBvdXQgZm9yIHlvdTogUk1XIG1lYW5zIFJlYWQtTW9kaWZ5LVdyaXRl LiBQdXR0aW5nIGEKbG9jayBhcm91bmQgYSAqd3JpdGUgb25seSogc2VydmVzIHplcm8gcHVycG9z ZS4gSXQgaXMganVzdCBvdmVyaGVhZCwKYW5kIGl0IGlzIGluY29ycmVjdC4KCj4KPiBvciBtYXli ZSBpdCB3YXMgbGlrZSB0aGlzIHByZXZpb3VzIG5vbnNlbnNlIGNvbW1lbnQsIHF1b3RpbmcgOgo+ ICJXZSBkb24ndCByZW1vdmUgaW50ZXJydXB0IGNvbnRyb2xsZXJzLiBXaGF0IGhhcHBlbnMgaWYg c29tZW9uZSBzdGlsbAo+IGhhZCBhIG1hcHBpbmc/IgoKQW5kIEkgc3RhbmQgYnkgaXQuCgo+IAo+ IAo+ID4gCj4gPiBbLi4uXQo+ID4gCj4gPiA+ICtzdGF0aWMgdm9pZCB0czc4MDBfaWNfY2hhaW5l ZF9oYW5kbGVfaXJxKHN0cnVjdCBpcnFfZGVzYyAqZGVzYykKPiA+ID4gK3sKPiA+ID4gK8KgwqDC oMKgwqDCoMKgc3RydWN0IHRzNzgwMF9pcnFfZGF0YSAqZGF0YSA9Cj4gPiA+IGlycV9kZXNjX2dl dF9oYW5kbGVyX2RhdGEoZGVzYyk7Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBpcnFfY2hp cCAqY2hpcCA9IGlycV9kZXNjX2dldF9jaGlwKGRlc2MpOwo+ID4gPiArwqDCoMKgwqDCoMKgwqB1 MzIgbWFza19iaXRzID0gcmVhZGwoZGF0YS0+YmFzZSArIElSUV9NQVNLX1JFRyk7Cj4gPiA+ICvC oMKgwqDCoMKgwqDCoHUzMiBzdGF0dXMgPSByZWFkbChkYXRhLT5icmlkZ2UpOwo+ID4gPiArCj4g PiA+ICvCoMKgwqDCoMKgwqDCoGNoYWluZWRfaXJxX2VudGVyKGNoaXAsIGRlc2MpOwo+ID4gPiAr Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoGlmICh1bmxpa2VseShzdGF0dXMgPT0gMCkpIHsKPiA+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGhhbmRsZV9iYWRfaXJxKGRlc2MpOwo+ID4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290byBvdXQ7Cj4gPiA+ICvCoMKgwqDC oMKgwqDCoH0KPiA+ID4gKwo+ID4gPiArwqDCoMKgwqDCoMKgwqBkbyB7Cj4gPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBpbnQgYml0ID0gX19mZnMoc3RhdHVzKTsK PiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGludCBpcnEgPSBpcnFfZmluZF9t YXBwaW5nKGRhdGEtPmRvbWFpbiwgYml0KTsKPiA+ID4gKwo+ID4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgaWYgKGlycSAmJiAobWFza19iaXRzICYgQklUKGJpdCkpKQo+ID4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdlbmVyaWNfaGFu ZGxlX2lycShpcnEpOwo+ID4gCj4gPiBBZ2FpbiwgdGhpcyBpcyBub3QgYXBwcm9wcmlhdGUuIEkn dmUgcG9pbnRlZCB5b3UgdG8gdGhlIHJpZ2h0IEFQSSBpbgo+ID4gbXkgcHJldmlvdXMgcmV2aWV3 IG9mIHRoaXMgcGF0Y2guCj4gJ2dlbmVyaWNfaGFuZGxlX2RvbWFpbl9pcnEnIGNhdXNpbmcgc29t ZSBpc3N1ZXMKCldoaWNoIGlzc3VlPwoKPiA+Cj4gPiBbLi4uXQo+ID4gCj4gPiA+ICtzdGF0aWMg c3RydWN0IHBsYXRmb3JtX2RyaXZlciB0czc4MDBfaWNfZHJpdmVyID0gewo+ID4gPiArwqDCoMKg wqDCoMKgwqAucHJvYmXCoCA9IHRzNzgwMF9pY19wcm9iZSwKPiA+ID4gK8KgwqDCoMKgwqDCoMKg LnJlbW92ZSA9IHRzNzgwMF9pY19yZW1vdmUsCj4gPiA+ICvCoMKgwqDCoMKgwqDCoC5pZF90YWJs ZcKgwqDCoMKgwqDCoMKgPSB0czc4MDB2MV9pY19pZHMsCj4gPiA+ICvCoMKgwqDCoMKgwqDCoC5k cml2ZXIgPSB7Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAubmFtZSA9IERS SVZFUl9OQU1FLAo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLnByb2JlX3R5 cGUgPSBQUk9CRV9QUkVGRVJfQVNZTkNIUk9OT1VTLAo+ID4gPiArwqDCoMKgwqDCoMKgwqB9LAo+ ID4gPiArfTsKPiA+ID4gK2J1aWx0aW5fcGxhdGZvcm1fZHJpdmVyKHRzNzgwMF9pY19kcml2ZXIp Owo+ID4gCj4gPiBBZ2FpbiwgdGhpcyBpc24ndCBhcHByb3ByaWF0ZSBlaXRoZXIsIGFuZCBJIHBv aW50ZWQgaXQgb3V0IGxhc3QKPiA+IHRpbWUuIFdlIGhhdmUgc3BlY2lmaWMgaGVscGVycyBmb3Ig aXJxY2hpcCwgYW5kIHVzaW5nIHRoZW0gaXNuJ3QKPiA+IG9wdGlvbmFsLiBCdXQgb2YgY291cnNl LCB5b3UnbGwgbmVlZCB0byBtb3ZlIHRvIERUIGZvciB0aGF0Lgo+ID4gCj4gPiBBbnl3YXksIHRo aXMgaXMgdGhlIGxhc3QgdGltZSBJIHJldmlldyB0aGlzIHBhdGNoIHVudGlsIHlvdSBjb252ZXJ0 Cj4gPiB0aGUgY29ycmVzcG9uZGluZyBwbGF0Zm9ybSB0byBEVC4KPiBubyBwcm9ibGVtcywgdGhv dWdoIGhhdmUgdG8gbm90ZSB0aGlzIGlzIG5vdCBjb25zdHJ1Y3RpdmUhCgpJJ3ZlIHBvaW50ZWQg b3V0IGEgYnVuY2ggb2YgaXNzdWVzLCBhbmQgcHJvdmlkZWQgYWR2aXNlIG9uIGhvdyB5b3UgY2Fu CmZpeCB0aGVtLiBUaGF0J3MgY29uc3RydWN0aXZlLiBBIG5vbiBjb25zdHJ1Y3RpdmUgYXBwcm9h Y2ggd291bGQgYmUgdG8KanVzdCBpZ25vcmUgeW91ciBwYXRjaC4gSWYgdGhhdCdzIHdoYXQgeW91 IHByZWZlciwgcGxlYXNlIHNheSBzby4KClRoYW5rcywKCglNLgoKLS0gCldpdGhvdXQgZGV2aWF0 aW9uIGZyb20gdGhlIG5vcm0sIHByb2dyZXNzIGlzIG5vdCBwb3NzaWJsZS4KCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFp bGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlz dHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK