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=-13.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, URIBL_BLOCKED autolearn=unavailable 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 3062CC43381 for ; Thu, 25 Feb 2021 17:56:55 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 D409364DE8 for ; Thu, 25 Feb 2021 17:56:54 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D409364DE8 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=collabora.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Date:To:From: Subject:Message-ID:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=pKZ5RNOMqdy7Nrq+XDSWVf1xS38ffyELox3ZF7bFa9E=; b=KzUEsmRCMdJsF8/eCiv4mZd/R IZeM9oSRIsTx4ojTGr9iXLZ73ET6L79j8JgKWgu5Bw3EviSWWKjJV1L7KIW7bdbeAFfS/QQjjLDnr vA7f22MwT9Buu+6HG9CV97Ffop3eDRVPtdh3ZC4cTh11f9b/B7fZkDBbrR9oR95jJXsjwVk+xezkH EPKmBqRcNqL+YoG4stBSHKL5shPzVHP5pA1v7nE62IvhkhPWdHSJppZDTcuml6ReYGkOxhUcQDy46 fkiL+goLgOpoQM7hxOAb7m/xAFSmGF3sUvngxF9rNTbwV/sHd1MMS+7d95NtnTMfLCyqblJjjUSXd 3tIMp2/vA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1lFKrH-00078H-QH; Thu, 25 Feb 2021 17:55:27 +0000 Received: from bhuna.collabora.co.uk ([46.235.227.227]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1lFKrE-00077R-Ot; Thu, 25 Feb 2021 17:55:25 +0000 Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: ezequiel) with ESMTPSA id 06C5A1F461FD Message-ID: <4a432492dc3894bef6024c74140891acc2e17604.camel@collabora.com> Subject: Re: [PATCH v3 5/9] media: hantro: Introduce G2/HEVC decoder From: Ezequiel Garcia To: Benjamin Gaignard , p.zabel@pengutronix.de, mchehab@kernel.org, robh+dt@kernel.org, shawnguo@kernel.org, s.hauer@pengutronix.de, kernel@pengutronix.de, festevam@gmail.com, linux-imx@nxp.com, gregkh@linuxfoundation.org, mripard@kernel.org, paul.kocialkowski@bootlin.com, wens@csie.org, jernej.skrabec@siol.net, peng.fan@nxp.com, hverkuil-cisco@xs4all.nl, dan.carpenter@oracle.com Date: Thu, 25 Feb 2021 14:55:13 -0300 In-Reply-To: <20210222122406.41782-6-benjamin.gaignard@collabora.com> References: <20210222122406.41782-1-benjamin.gaignard@collabora.com> <20210222122406.41782-6-benjamin.gaignard@collabora.com> Organization: Collabora User-Agent: Evolution 3.38.2-1 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210225_125525_042327_9E730197 X-CRM114-Status: GOOD ( 25.56 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, kernel@collabora.com, linux-arm-kernel@lists.infradead.org, linux-media@vger.kernel.org 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 SGkgQmVuamFtaW4sCgpUaGFua3MgZm9yIHRoZSBnb29kIHdvcmshCkkgbW9zdGx5IGhhdmUgdHdv IGNvbmNlcm5zIHdpdGggdGhpcyBpbXBsZW1lbnRhdGlvbiwKdGhlIHRpbGVkIG91dHB1dCBhbmQg dGhlIGFsbG9jYXRpb24gcGF0aC4KCk1vcmUgYmVsb3cuCgpPbiBNb24sIDIwMjEtMDItMjIgYXQg MTM6MjQgKzAxMDAsIEJlbmphbWluIEdhaWduYXJkIHdyb3RlOgo+IEltcGxlbWVudCBhbGwgdGhl IGxvZ2ljIHRvIGdldCBHMiBoYXJkd2FyZSBkZWNvZGluZyBIRVZDIGZyYW1lcy4KPiBJdCBzdXBw b3J0IHVwIGxldmVsIDUuMSBIRVZDIHN0cmVhbS4KPiBJdCBkb2Vzbid0IHN1cHBvcnQgeWV0IDEw IGJpdHMgZm9ybWF0cyBvciBzY2FsaW5nIGZlYXR1cmUuCj4gCj4gQWRkIEhBTlRSTyBIRVZDIGRl ZGljYXRlZCBjb250cm9sIHRvIHNraXAgc29tZSBiaXRzIGF0IHRoZSBiZWdpbm5pbmcKPiBvZiB0 aGUgc2xpY2UgaGVhZGVyLiBUaGF0IGlzIHZlcnkgc3BlY2lmaWMgdG8gdGhpcyBoYXJkd2FyZSBz byBjYW4ndAo+IGdvIGludG8gdWFwaSBzdHJ1Y3R1cmVzLiBDb21wdXRlIHRoZSBuZWVkZWQgdmFs dWUgaXMgY29tcGxleCBhbmQgcmVxdWlyZQo+IGluZm9ybWF0aW9uIGZyb20gdGhlIHN0cmVhbSB0 aGF0IG9ubHkgdGhlIHVzZXJsYW5kIGtub3dzIHNvIGxldCBpdAo+IHByb3ZpZGUgdGhlIGNvcnJl Y3QgdmFsdWUgdG8gdGhlIGRyaXZlci4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBCZW5qYW1pbiBHYWln bmFyZCA8YmVuamFtaW4uZ2FpZ25hcmRAY29sbGFib3JhLmNvbT4KPiAtLS0KPiB2ZXJzaW9uIDI6 Cj4gLSBzcXVhc2ggbXVsdGlwbGUgY29tbWl0cyBpbiB0aGlzIG9uZS4KPiAtIGZpeCB0aGUgY29t bWVudHMgZG9uZSBieSBFemVxdWllbCBhYm91dCBkbWFfYWxsb2NfY29oZXJlbnQgdXNhZ2UKPiAt IGZpeCBEYW4ncyBjb21tZW50cyBhYm91dCBjb250cm9sIGNvcHksIHJldmVyc2UgdGhlIHRlc3Qg bG9naWMKPiBpbiB0aWxlX2J1ZmZlcl9yZWFsbG9jYXRlLCByZXdvcmsgc29tZSBnb3RvIGFuZCBy ZXR1cm4gY2FzZXMuCj4gCj4gwqBkcml2ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJvL01ha2VmaWxl wqDCoMKgwqDCoMKgwqDCoCB8wqDCoCAyICsKPiDCoGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50 cm8vaGFudHJvLmjCoMKgwqDCoMKgwqDCoMKgIHzCoCAxOSArCj4gwqBkcml2ZXJzL3N0YWdpbmcv bWVkaWEvaGFudHJvL2hhbnRyb19kcnYuY8KgwqDCoMKgIHzCoCA0MiArKwo+IMKgLi4uL3N0YWdp bmcvbWVkaWEvaGFudHJvL2hhbnRyb19nMl9oZXZjX2RlYy5jIHwgNTg3ICsrKysrKysrKysrKysr KysrKwo+IMKgZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm9fZzJfcmVncy5oIHwg MTk4ICsrKysrKwo+IMKgZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm9faGV2Yy5j wqDCoMKgIHwgMzIxICsrKysrKysrKysKPiDCoGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8v aGFudHJvX2h3LmjCoMKgwqDCoMKgIHzCoCA0NyArKwo+IMKgNyBmaWxlcyBjaGFuZ2VkLCAxMjE2 IGluc2VydGlvbnMoKykKPiDCoGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3N0YWdpbmcvbWVk aWEvaGFudHJvL2hhbnRyb19nMl9oZXZjX2RlYy5jCj4gwqBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm9fZzJfcmVncy5oCj4gwqBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRyby9oYW50cm9faGV2Yy5jCj4gCj4g CltzbmlwXQo+ICsKPiArc3RhdGljIHZvaWQgc2V0X2J1ZmZlcnMoc3RydWN0IGhhbnRyb19jdHgg KmN0eCkKPiArewo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCB2YjJfdjRsMl9idWZmZXIgKnNyY19i dWYsICpkc3RfYnVmOwo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBoYW50cm9fZGV2ICp2cHUgPSBj dHgtPmRldjsKPiArwqDCoMKgwqDCoMKgwqBjb25zdCBzdHJ1Y3QgaGFudHJvX2hldmNfZGVjX2N0 cmxzICpjdHJscyA9ICZjdHgtPmhldmNfZGVjLmN0cmxzOwo+ICvCoMKgwqDCoMKgwqDCoGNvbnN0 IHN0cnVjdCB2NGwyX2N0cmxfaGV2Y19zcHMgKnNwcyA9IGN0cmxzLT5zcHM7Cj4gK8KgwqDCoMKg wqDCoMKgc2l6ZV90IGNyX29mZnNldCA9IGhhbnRyb19oZXZjX2Nocm9tYV9vZmZzZXQoc3BzKTsK PiArwqDCoMKgwqDCoMKgwqBkbWFfYWRkcl90IHNyY19kbWEsIGRzdF9kbWE7Cj4gK8KgwqDCoMKg wqDCoMKgdTMyIHNyY19sZW4sIHNyY19idWZfbGVuOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBzcmNf YnVmID0gaGFudHJvX2dldF9zcmNfYnVmKGN0eCk7Cj4gK8KgwqDCoMKgwqDCoMKgZHN0X2J1ZiA9 IGhhbnRyb19nZXRfZHN0X2J1ZihjdHgpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqAvKiBTb3VyY2Ug KHN0cmVhbSkgYnVmZmVyLiAqLwo+ICvCoMKgwqDCoMKgwqDCoHNyY19kbWEgPSB2YjJfZG1hX2Nv bnRpZ19wbGFuZV9kbWFfYWRkcigmc3JjX2J1Zi0+dmIyX2J1ZiwgMCk7Cj4gK8KgwqDCoMKgwqDC oMKgc3JjX2xlbiA9IHZiMl9nZXRfcGxhbmVfcGF5bG9hZCgmc3JjX2J1Zi0+dmIyX2J1ZiwgMCk7 Cj4gK8KgwqDCoMKgwqDCoMKgc3JjX2J1Zl9sZW4gPSB2YjJfcGxhbmVfc2l6ZSgmc3JjX2J1Zi0+ dmIyX2J1ZiwgMCk7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGhhbnRyb193cml0ZV9hZGRyKHZwdSwg SEVWQ19BRERSX1NUUiwgc3JjX2RtYSk7Cj4gK8KgwqDCoMKgwqDCoMKgaGFudHJvX3JlZ193cml0 ZSh2cHUsIGhldmNfc3RyZWFtX2xlbiwgc3JjX2xlbik7Cj4gK8KgwqDCoMKgwqDCoMKgaGFudHJv X3JlZ193cml0ZSh2cHUsIGhldmNfc3RybV9idWZmZXJfbGVuLCBzcmNfYnVmX2xlbik7Cj4gK8Kg wqDCoMKgwqDCoMKgaGFudHJvX3JlZ193cml0ZSh2cHUsIGhldmNfc3RybV9zdGFydF9vZmZzZXQs IDApOwo+ICvCoMKgwqDCoMKgwqDCoGhhbnRyb19yZWdfd3JpdGUodnB1LCBoZXZjX3dyaXRlX212 c19lLCAxKTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgLyogRGVzdGluYXRpb24gKGRlY29kZWQgZnJh bWUpIGJ1ZmZlci4gKi8KPiArwqDCoMKgwqDCoMKgwqBkc3RfZG1hID0gaGFudHJvX2dldF9kZWNf YnVmX2FkZHIoY3R4LCAmZHN0X2J1Zi0+dmIyX2J1Zik7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGhh bnRyb193cml0ZV9hZGRyKHZwdSwgSEVWQ19SQVNURVJfU0NBTiwgZHN0X2RtYSk7Cj4gK8KgwqDC oMKgwqDCoMKgaGFudHJvX3dyaXRlX2FkZHIodnB1LCBIRVZDX1JBU1RFUl9TQ0FOX0NIUiwgZHN0 X2RtYSArIGNyX29mZnNldCk7CgpUaGUgd2F5IHRoaXMgaXMgZG9uZSB0aGUgcmFzdGVyLXNjYW4g b3V0cHV0IGlzIHRoZSBvbmx5Cm91dHB1dCwgYW5kIHRoZSB0aWxlZCBvdXB1dCBpdCBrZXB0IGVu dGlyZWx5IGludGVybmFsLCBpbiBoYW50cm9faGV2Y19kZWNfaHdfY3R4LnJlZl9idWZzLgoKVGhp cyBtZWFucyB0aGVyZSdzIG5vIHdheSB0byBleHBvc2UgdGlsZWQgTlYxMiBpbiBpLk1YOE0gVlBV IHRpbGVkIGZvcm1hdAp0byB1c2Vyc3BhY2UsIHdoaWNoIGNvdWxkIGJlIGRlc2lyYWJsZSBmb3Ig c29tZSB1c2UgY2FzZXMuCgpJJ20gbm90IHN1Z2dlc3RpbmcgdG8gYWN0dWFsbHkgZXhwb3NlIHRp bGVkIE5WMTIgaW4gdGhpcyBwYXRjaCwgYnV0IHRvIHByZXBhcmXCoAp0aGUgZHJpdmVyIHRvIGJl IGFibGUgdG8gc3VwcG9ydCB0aGF0IGVhc2lseSBpbiB0aGUgZnV0dXJlLgoKSXQgc2hvdWxkIGJl IHBvc3NpYmxlIHRvIGNvbnNpZGVyIHRoaXMgZGV0aWxpbmcgYXMKcG9zdC1wcm9jZXNzaW5nLCBh ZGRpbmcgc29tZSBjb2RlIGluIGhhbnRyb19wb3N0cHJvYy5jCmxldmVyYWdpbmcgdGhlIGV4aXN0 aW5nIHBvc3QtcHJvYyBzdXBwb3J0LgoKSU9XLCBoYW50cm9fcG9zdHByb2NfY3R4LmRlY19xIHdv dWxkIGhvbGQgdGhlIHRpbGVkIG91dHB1dCwKaGFudHJvX3Bvc3Rwcm9jX2VuYWJsZSgpIHdyaXRl cyB0aGUgcmFzdGVyLXNjYW4KYnVmZmVyIGRlc3RpbmF0aW9uIGFkZHJlc3MsIGFuZCBzbyBvbi4K Cj4gK8KgwqDCoMKgwqDCoMKgaGFudHJvX3dyaXRlX2FkZHIodnB1LCBIRVZDX0FERFJfVElMRV9T SVpFLCBjdHgtPmhldmNfZGVjLnRpbGVfc2l6ZXMuZG1hKTsKPiArwqDCoMKgwqDCoMKgwqBoYW50 cm9fd3JpdGVfYWRkcih2cHUsIEhFVkNfVElMRV9GSUxURVIsIGN0eC0+aGV2Y19kZWMudGlsZV9m aWx0ZXIuZG1hKTsKPiArwqDCoMKgwqDCoMKgwqBoYW50cm9fd3JpdGVfYWRkcih2cHUsIEhFVkNf VElMRV9TQU8sIGN0eC0+aGV2Y19kZWMudGlsZV9zYW8uZG1hKTsKPiArwqDCoMKgwqDCoMKgwqBo YW50cm9fd3JpdGVfYWRkcih2cHUsIEhFVkNfVElMRV9CU0QsIGN0eC0+aGV2Y19kZWMudGlsZV9i c2QuZG1hKTsKPiArfQo+ICsKPiArdm9pZCBoYW50cm9fZzJfY2hlY2tfaWRsZShzdHJ1Y3QgaGFu dHJvX2RldiAqdnB1KQo+ICt7Cj4gK8KgwqDCoMKgwqDCoMKgaW50IGk7Cj4gKwo+ICvCoMKgwqDC oMKgwqDCoGZvciAoaSA9IDA7IGkgPCAzOyBpKyspIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgdTMyIHN0YXR1czsKPiArCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oC8qIE1ha2Ugc3VyZSB0aGUgVlBVIGlzIGlkbGUgKi8KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgc3RhdHVzID0gdmRwdV9yZWFkKHZwdSwgSEVWQ19SRUdfSU5URVJSVVBUKTsKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHN0YXR1cyAmIEhFVkNfUkVHX0lOVEVS UlVQVF9ERUNfRSkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgcHJfd2FybigiJXM6IHN0aWxsIGVuYWJsZWQhISEgcmVzZXR0aW5nLlxuIiwgX19mdW5j X18pOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3Rh dHVzIHw9IEhFVkNfUkVHX0lOVEVSUlVQVF9ERUNfQUJPUlRfRSB8IEhFVkNfUkVHX0lOVEVSUlVQ VF9ERUNfSVJRX0RJUzsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHZkcHVfd3JpdGUodnB1LCBzdGF0dXMsIEhFVkNfUkVHX0lOVEVSUlVQVCk7Cj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArwqDCoMKgwqDCoMKgwqB9Cj4gK30KPiAr Cj4gK3ZvaWQgaGFudHJvX2cyX2hldmNfZGVjX3J1bihzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4KQo+ ICt7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGhhbnRyb19kZXYgKnZwdSA9IGN0eC0+ZGV2Owo+ ICsKPiArwqDCoMKgwqDCoMKgwqBoYW50cm9fZzJfY2hlY2tfaWRsZSh2cHUpOwo+ICsKPiArwqDC oMKgwqDCoMKgwqAvKiBQcmVwYXJlIEhFVkMgZGVjb2RlciBjb250ZXh0LiAqLwo+ICvCoMKgwqDC oMKgwqDCoGlmIChoYW50cm9faGV2Y19kZWNfcHJlcGFyZV9ydW4oY3R4KSkKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuOwo+ICsKPiArwqDCoMKgwqDCoMKgwqAvKiBDb25m aWd1cmUgaGFyZHdhcmUgcmVnaXN0ZXJzLiAqLwo+ICvCoMKgwqDCoMKgwqDCoHNldF9wYXJhbXMo Y3R4KTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgLyogc2V0IHJlZmVyZW5jZSBwaWN0dXJlcyAqLwo+ ICvCoMKgwqDCoMKgwqDCoGlmIChzZXRfcmVmKGN0eCkpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoC8qIHNvbWV0aGluZyBnb2VzIHdyb25nICovCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGhhbnRyb19pcnFfZG9uZSh2cHUsIFZCMl9CVUZfU1RBVEVfRVJST1IpOwo+ ICsKCkkgZG9uJ3QgdGhpbmsgd2Ugd2FudCB0byBhbGxvdyB0aGUgX3J1bigpIG9wZXJhdGlvbiB0 byBmYWlsIGxpa2UgdGhpcy4KSW4gb3RoZXIgd29yZHMsIEkgd291bGQgYXZvaWQgYWxsb2NhdGlu ZyBidWZmZXJzIGluIHRoZSBfcnVuKCkgcGF0aCwKYW5kIGRvaW5nIGFsbCBhbGxvY2F0aW9uIGF0 IHN0YXJ0KCkgdGltZS4KClRoYXQncyB3aHkgaGFudHJvX3N0YXJ0X3N0cmVhbWluZygpIGNhbGxz IGhhbnRyb19wb3N0cHJvY19hbGxvYygpIGlmIG5lZWRlZC4KCj4gK8KgwqDCoMKgwqDCoMKgc2V0 X2J1ZmZlcnMoY3R4KTsKPiArwqDCoMKgwqDCoMKgwqBwcmVwYXJlX3RpbGVfaW5mb19idWZmZXIo Y3R4KTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgaGFudHJvX2VuZF9wcmVwYXJlX3J1bihjdHgpOwo+ ICsKPiArwqDCoMKgwqDCoMKgwqBoYW50cm9fcmVnX3dyaXRlKHZwdSwgaGV2Y19tb2RlLCBIRVZD X0RFQ19NT0RFKTsKPiArwqDCoMKgwqDCoMKgwqBoYW50cm9fcmVnX3dyaXRlKHZwdSwgaGV2Y19j bGtfZ2F0ZV9lLCAxKTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgLyogRG9uJ3QgZGlzYWJsZSBvdXRw dXQgKi8KPiArwqDCoMKgwqDCoMKgwqBoYW50cm9fcmVnX3dyaXRlKHZwdSwgaGV2Y19vdXRfZGlz LCAwKTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgLyogRG9uJ3QgY29tcHJlc3MgYnVmZmVycyAqLwo+ ICvCoMKgwqDCoMKgwqDCoGhhbnRyb19yZWdfd3JpdGUodnB1LCBoZXZjX3JlZl9jb21wcmVzc19i eXBhc3MsIDEpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqAvKiB1c2UgTlYxMiBhcyBvdXRwdXQgZm9y bWF0ICovCj4gK8KgwqDCoMKgwqDCoMKgaGFudHJvX3JlZ193cml0ZSh2cHUsIGhldmNfdGlsZV9l LCAwKTsKClVubGVzcyBJJ20gbWlzc2luZyBzb21ldGhpbmcsIHRoaXMgXgoKPiArwqDCoMKgwqDC oMKgwqBoYW50cm9fcmVnX3dyaXRlKHZwdSwgaGV2Y19vdXRfcnNfZSwgMSk7Cgo+ICvCoMKgwqDC oMKgwqDCoGhhbnRyb19yZWdfd3JpdGUodnB1LCBoZXZjX251bV90aWxlX3Jvd3MsIDEpOwo+ICvC oMKgwqDCoMKgwqDCoGhhbnRyb19yZWdfd3JpdGUodnB1LCBoZXZjX251bV90aWxlX2NvbHMsIDEp Owo+ICsKCmFuZCB0aGlzIF4gdGhlc2Ugc2hvdWxkbid0IGJlIGhlcmUuCgpIRVZDIHRpbGVzIGFy ZSBoYW5kbGVkIGFscmVhZHkuIFNlZSBwcmVwYXJlX3RpbGVfaW5mb19idWZmZXIoKS4KTm90ZSB0 aGF0IEhFVkMgInRpbGVzIiBhcmUgbm90IHJlbGF0ZWQgdG8gTlYxMiAidGlsZWQiIGZvcm1hdC4K ClRoYW5rcyEKRXplcXVpZWwKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVs QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9s aXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==