From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from perceval.ideasonboard.com ([213.167.242.64]:46458 "EHLO perceval.ideasonboard.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753700AbeDVWeZ (ORCPT ); Sun, 22 Apr 2018 18:34:25 -0400 From: Laurent Pinchart To: linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org Cc: linux-renesas-soc@vger.kernel.org, Kieran Bingham Subject: [PATCH v2 0/8] R-Car DU: Support CRC calculation Date: Mon, 23 Apr 2018 01:34:22 +0300 Message-Id: <20180422223430.16407-1-laurent.pinchart+renesas@ideasonboard.com> Sender: linux-media-owner@vger.kernel.org List-ID: Hello, This patch series adds support for CRC calculation to the rcar-du-drm driver. CRC calculation is supported starting at the Renesas R-Car Gen3 SoCs, as earlier versions don't have the necessary hardware. On Gen3 SoCs, the CRC is computed by the DISCOM module part of the VSP-D and VSP-DL. The DISCOM is interfaced to the VSP through the UIF glue and appears as a VSP entity with a sink pad and a source pad. The series starts with a switch to SPDX license headers in patch 1/8, prompted by a checkpatch.pl warning for a later patch that complained about missing SPDX license headers. It then continues with cleanup and refactoring. Patches 2/8 and 3/8 prepare for DISCOM and UIF support by extending generic code to make it usable for the UIF. Patch 4/8 documents a structure that will receive new fields. Patch 5/8 then extends the API exposed by the VSP driver to the DU driver to support CRC computation configuration and reporting. The patch unfortunately needs to touch both the VSP and DU drivers, so the whole series will need to be merged through a single tree. Patch 5/8 adds support for the DISCOM and UIF in the VSP driver, patch 7/8 integrates it in the DRM pipeline, and patch 8/8 finally implements the CRC API in the DU driver to expose CRC computation to userspace. The hardware supports computing the CRC at any arbitrary point in the pipeline on a configurable window of the frame. This patch series supports CRC computation on input planes or pipeline output, but on the full frame only. Support for CRC window configuration can be added later if needed but will require extending the userspace API, as the DRM/KMS CRC API doesn't support this feature. Compared to v1, the CRC source names for plane inputs are now constructed from plane IDs instead of plane indices. This allows userspace to match CRC sources with planes. Note that exposing the DISCOM and UIF though the V4L2 API isn't supported as the module is only found in VSP-D and VSP-DL instances that are not exposed through V4L2. It is possible to expose those instances through V4L2 with a small modification to the driver for testing purpose. If the need arises to test DISCOM and UIF with such an out-of-tree patch, support for CRC reporting through a V4L2 control can be added later without affecting how CRC is exposed through the DRM/KMS API. The patches are based on top of the "[PATCH v2 00/15] R-Car VSP1: Dynamically assign blend units to display pipelines" patch series, itself based on top of the Linux media master branch and scheduled for merge in v4.18. The new base caused heavy conflicts, requiring this series to be merged through the V4L2 tree. Once the patches receive the necessary review I will ask Dave to ack the merge plan. For convenience the patches are available at git://linuxtv.org/pinchartl/media.git vsp1-discom-v2-20180423 The code has been tested through the kms-test-crc.py script part of the DU test suite available at git://git.ideasonboard.com/renesas/kms-tests.git discom Laurent Pinchart (8): v4l: vsp1: Use SPDX license headers v4l: vsp1: Share the CLU, LIF and LUT set_fmt pad operation code v4l: vsp1: Reset the crop and compose rectangles in the set_fmt helper v4l: vsp1: Document the vsp1_du_atomic_config structure v4l: vsp1: Extend the DU API to support CRC computation v4l: vsp1: Add support for the DISCOM entity v4l: vsp1: Integrate DISCOM in display pipeline drm: rcar-du: Add support for CRC computation drivers/gpu/drm/rcar-du/rcar_du_crtc.c | 156 ++++++++++++++++- drivers/gpu/drm/rcar-du/rcar_du_crtc.h | 19 +++ drivers/gpu/drm/rcar-du/rcar_du_vsp.c | 13 +- drivers/media/platform/vsp1/Makefile | 2 +- drivers/media/platform/vsp1/vsp1.h | 10 +- drivers/media/platform/vsp1/vsp1_brx.c | 6 +- drivers/media/platform/vsp1/vsp1_brx.h | 6 +- drivers/media/platform/vsp1/vsp1_clu.c | 71 ++------ drivers/media/platform/vsp1/vsp1_clu.h | 6 +- drivers/media/platform/vsp1/vsp1_dl.c | 8 +- drivers/media/platform/vsp1/vsp1_dl.h | 6 +- drivers/media/platform/vsp1/vsp1_drm.c | 127 ++++++++++++-- drivers/media/platform/vsp1/vsp1_drm.h | 20 ++- drivers/media/platform/vsp1/vsp1_drv.c | 26 ++- drivers/media/platform/vsp1/vsp1_entity.c | 103 +++++++++++- drivers/media/platform/vsp1/vsp1_entity.h | 13 +- drivers/media/platform/vsp1/vsp1_hgo.c | 6 +- drivers/media/platform/vsp1/vsp1_hgo.h | 6 +- drivers/media/platform/vsp1/vsp1_hgt.c | 6 +- drivers/media/platform/vsp1/vsp1_hgt.h | 6 +- drivers/media/platform/vsp1/vsp1_histo.c | 65 +------ drivers/media/platform/vsp1/vsp1_histo.h | 6 +- drivers/media/platform/vsp1/vsp1_hsit.c | 6 +- drivers/media/platform/vsp1/vsp1_hsit.h | 6 +- drivers/media/platform/vsp1/vsp1_lif.c | 71 ++------ drivers/media/platform/vsp1/vsp1_lif.h | 6 +- drivers/media/platform/vsp1/vsp1_lut.c | 71 ++------ drivers/media/platform/vsp1/vsp1_lut.h | 6 +- drivers/media/platform/vsp1/vsp1_pipe.c | 6 +- drivers/media/platform/vsp1/vsp1_pipe.h | 6 +- drivers/media/platform/vsp1/vsp1_regs.h | 46 ++++- drivers/media/platform/vsp1/vsp1_rpf.c | 6 +- drivers/media/platform/vsp1/vsp1_rwpf.c | 6 +- drivers/media/platform/vsp1/vsp1_rwpf.h | 6 +- drivers/media/platform/vsp1/vsp1_sru.c | 6 +- drivers/media/platform/vsp1/vsp1_sru.h | 6 +- drivers/media/platform/vsp1/vsp1_uds.c | 6 +- drivers/media/platform/vsp1/vsp1_uds.h | 6 +- drivers/media/platform/vsp1/vsp1_uif.c | 271 ++++++++++++++++++++++++++++++ drivers/media/platform/vsp1/vsp1_uif.h | 32 ++++ drivers/media/platform/vsp1/vsp1_video.c | 6 +- drivers/media/platform/vsp1/vsp1_video.h | 6 +- drivers/media/platform/vsp1/vsp1_wpf.c | 6 +- include/media/vsp1.h | 39 ++++- 44 files changed, 896 insertions(+), 417 deletions(-) create mode 100644 drivers/media/platform/vsp1/vsp1_uif.c create mode 100644 drivers/media/platform/vsp1/vsp1_uif.h -- Regards, Laurent Pinchart From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: [PATCH v2 0/8] R-Car DU: Support CRC calculation Date: Mon, 23 Apr 2018 01:34:22 +0300 Message-ID: <20180422223430.16407-1-laurent.pinchart+renesas@ideasonboard.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by gabe.freedesktop.org (Postfix) with ESMTPS id 23B8E6E051 for ; Sun, 22 Apr 2018 22:34:26 +0000 (UTC) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org Cc: linux-renesas-soc@vger.kernel.org, Kieran Bingham List-Id: dri-devel@lists.freedesktop.org SGVsbG8sCgpUaGlzIHBhdGNoIHNlcmllcyBhZGRzIHN1cHBvcnQgZm9yIENSQyBjYWxjdWxhdGlv biB0byB0aGUgcmNhci1kdS1kcm0gZHJpdmVyLgoKQ1JDIGNhbGN1bGF0aW9uIGlzIHN1cHBvcnRl ZCBzdGFydGluZyBhdCB0aGUgUmVuZXNhcyBSLUNhciBHZW4zIFNvQ3MsIGFzCmVhcmxpZXIgdmVy c2lvbnMgZG9uJ3QgaGF2ZSB0aGUgbmVjZXNzYXJ5IGhhcmR3YXJlLiBPbiBHZW4zIFNvQ3MsIHRo ZSBDUkMgaXMKY29tcHV0ZWQgYnkgdGhlIERJU0NPTSBtb2R1bGUgcGFydCBvZiB0aGUgVlNQLUQg YW5kIFZTUC1ETC4KClRoZSBESVNDT00gaXMgaW50ZXJmYWNlZCB0byB0aGUgVlNQIHRocm91Z2gg dGhlIFVJRiBnbHVlIGFuZCBhcHBlYXJzIGFzIGEgVlNQCmVudGl0eSB3aXRoIGEgc2luayBwYWQg YW5kIGEgc291cmNlIHBhZC4KClRoZSBzZXJpZXMgc3RhcnRzIHdpdGggYSBzd2l0Y2ggdG8gU1BE WCBsaWNlbnNlIGhlYWRlcnMgaW4gcGF0Y2ggMS84LCBwcm9tcHRlZApieSBhIGNoZWNrcGF0Y2gu cGwgd2FybmluZyBmb3IgYSBsYXRlciBwYXRjaCB0aGF0IGNvbXBsYWluZWQgYWJvdXQgbWlzc2lu ZwpTUERYIGxpY2Vuc2UgaGVhZGVycy4gSXQgdGhlbiBjb250aW51ZXMgd2l0aCBjbGVhbnVwIGFu ZCByZWZhY3RvcmluZy4gUGF0Y2hlcwoyLzggYW5kIDMvOCBwcmVwYXJlIGZvciBESVNDT00gYW5k IFVJRiBzdXBwb3J0IGJ5IGV4dGVuZGluZyBnZW5lcmljIGNvZGUgdG8KbWFrZSBpdCB1c2FibGUg Zm9yIHRoZSBVSUYuIFBhdGNoIDQvOCBkb2N1bWVudHMgYSBzdHJ1Y3R1cmUgdGhhdCB3aWxsIHJl Y2VpdmUKbmV3IGZpZWxkcy4KClBhdGNoIDUvOCB0aGVuIGV4dGVuZHMgdGhlIEFQSSBleHBvc2Vk IGJ5IHRoZSBWU1AgZHJpdmVyIHRvIHRoZSBEVSBkcml2ZXIgdG8Kc3VwcG9ydCBDUkMgY29tcHV0 YXRpb24gY29uZmlndXJhdGlvbiBhbmQgcmVwb3J0aW5nLiBUaGUgcGF0Y2ggdW5mb3J0dW5hdGVs eQpuZWVkcyB0byB0b3VjaCBib3RoIHRoZSBWU1AgYW5kIERVIGRyaXZlcnMsIHNvIHRoZSB3aG9s ZSBzZXJpZXMgd2lsbCBuZWVkIHRvCmJlIG1lcmdlZCB0aHJvdWdoIGEgc2luZ2xlIHRyZWUuCgpQ YXRjaCA1LzggYWRkcyBzdXBwb3J0IGZvciB0aGUgRElTQ09NIGFuZCBVSUYgaW4gdGhlIFZTUCBk cml2ZXIsIHBhdGNoIDcvOAppbnRlZ3JhdGVzIGl0IGluIHRoZSBEUk0gcGlwZWxpbmUsIGFuZCBw YXRjaCA4LzggZmluYWxseSBpbXBsZW1lbnRzIHRoZSBDUkMKQVBJIGluIHRoZSBEVSBkcml2ZXIg dG8gZXhwb3NlIENSQyBjb21wdXRhdGlvbiB0byB1c2Vyc3BhY2UuCgpUaGUgaGFyZHdhcmUgc3Vw cG9ydHMgY29tcHV0aW5nIHRoZSBDUkMgYXQgYW55IGFyYml0cmFyeSBwb2ludCBpbiB0aGUKcGlw ZWxpbmUgb24gYSBjb25maWd1cmFibGUgd2luZG93IG9mIHRoZSBmcmFtZS4gVGhpcyBwYXRjaCBz ZXJpZXMgc3VwcG9ydHMgQ1JDCmNvbXB1dGF0aW9uIG9uIGlucHV0IHBsYW5lcyBvciBwaXBlbGlu ZSBvdXRwdXQsIGJ1dCBvbiB0aGUgZnVsbCBmcmFtZSBvbmx5LgpTdXBwb3J0IGZvciBDUkMgd2lu ZG93IGNvbmZpZ3VyYXRpb24gY2FuIGJlIGFkZGVkIGxhdGVyIGlmIG5lZWRlZCBidXQgd2lsbApy ZXF1aXJlIGV4dGVuZGluZyB0aGUgdXNlcnNwYWNlIEFQSSwgYXMgdGhlIERSTS9LTVMgQ1JDIEFQ SSBkb2Vzbid0IHN1cHBvcnQKdGhpcyBmZWF0dXJlLgoKQ29tcGFyZWQgdG8gdjEsIHRoZSBDUkMg c291cmNlIG5hbWVzIGZvciBwbGFuZSBpbnB1dHMgYXJlIG5vdyBjb25zdHJ1Y3RlZCBmcm9tCnBs YW5lIElEcyBpbnN0ZWFkIG9mIHBsYW5lIGluZGljZXMuIFRoaXMgYWxsb3dzIHVzZXJzcGFjZSB0 byBtYXRjaCBDUkMgc291cmNlcwp3aXRoIHBsYW5lcy4KCk5vdGUgdGhhdCBleHBvc2luZyB0aGUg RElTQ09NIGFuZCBVSUYgdGhvdWdoIHRoZSBWNEwyIEFQSSBpc24ndCBzdXBwb3J0ZWQgYXMKdGhl IG1vZHVsZSBpcyBvbmx5IGZvdW5kIGluIFZTUC1EIGFuZCBWU1AtREwgaW5zdGFuY2VzIHRoYXQg YXJlIG5vdCBleHBvc2VkCnRocm91Z2ggVjRMMi4gSXQgaXMgcG9zc2libGUgdG8gZXhwb3NlIHRo b3NlIGluc3RhbmNlcyB0aHJvdWdoIFY0TDIgd2l0aCBhCnNtYWxsIG1vZGlmaWNhdGlvbiB0byB0 aGUgZHJpdmVyIGZvciB0ZXN0aW5nIHB1cnBvc2UuIElmIHRoZSBuZWVkIGFyaXNlcyB0bwp0ZXN0 IERJU0NPTSBhbmQgVUlGIHdpdGggc3VjaCBhbiBvdXQtb2YtdHJlZSBwYXRjaCwgc3VwcG9ydCBm b3IgQ1JDIHJlcG9ydGluZwp0aHJvdWdoIGEgVjRMMiBjb250cm9sIGNhbiBiZSBhZGRlZCBsYXRl ciB3aXRob3V0IGFmZmVjdGluZyBob3cgQ1JDIGlzIGV4cG9zZWQKdGhyb3VnaCB0aGUgRFJNL0tN UyBBUEkuCgpUaGUgcGF0Y2hlcyBhcmUgYmFzZWQgb24gdG9wIG9mIHRoZSAiW1BBVENIIHYyIDAw LzE1XSBSLUNhciBWU1AxOiBEeW5hbWljYWxseQphc3NpZ24gYmxlbmQgdW5pdHMgdG8gZGlzcGxh eSBwaXBlbGluZXMiIHBhdGNoIHNlcmllcywgaXRzZWxmIGJhc2VkIG9uIHRvcCBvZgp0aGUgTGlu dXggbWVkaWEgbWFzdGVyIGJyYW5jaCBhbmQgc2NoZWR1bGVkIGZvciBtZXJnZSBpbiB2NC4xOC4g VGhlIG5ldyBiYXNlCmNhdXNlZCBoZWF2eSBjb25mbGljdHMsIHJlcXVpcmluZyB0aGlzIHNlcmll cyB0byBiZSBtZXJnZWQgdGhyb3VnaCB0aGUgVjRMMgp0cmVlLiBPbmNlIHRoZSBwYXRjaGVzIHJl Y2VpdmUgdGhlIG5lY2Vzc2FyeSByZXZpZXcgSSB3aWxsIGFzayBEYXZlIHRvIGFjayB0aGUKbWVy Z2UgcGxhbi4KCkZvciBjb252ZW5pZW5jZSB0aGUgcGF0Y2hlcyBhcmUgYXZhaWxhYmxlIGF0Cgog ICAgICAgIGdpdDovL2xpbnV4dHYub3JnL3BpbmNoYXJ0bC9tZWRpYS5naXQgdnNwMS1kaXNjb20t djItMjAxODA0MjMKClRoZSBjb2RlIGhhcyBiZWVuIHRlc3RlZCB0aHJvdWdoIHRoZSBrbXMtdGVz dC1jcmMucHkgc2NyaXB0IHBhcnQgb2YgdGhlIERVCnRlc3Qgc3VpdGUgYXZhaWxhYmxlIGF0Cgog ICAgICAgIGdpdDovL2dpdC5pZGVhc29uYm9hcmQuY29tL3JlbmVzYXMva21zLXRlc3RzLmdpdCBk aXNjb20KCkxhdXJlbnQgUGluY2hhcnQgKDgpOgogIHY0bDogdnNwMTogVXNlIFNQRFggbGljZW5z ZSBoZWFkZXJzCiAgdjRsOiB2c3AxOiBTaGFyZSB0aGUgQ0xVLCBMSUYgYW5kIExVVCBzZXRfZm10 IHBhZCBvcGVyYXRpb24gY29kZQogIHY0bDogdnNwMTogUmVzZXQgdGhlIGNyb3AgYW5kIGNvbXBv c2UgcmVjdGFuZ2xlcyBpbiB0aGUgc2V0X2ZtdCBoZWxwZXIKICB2NGw6IHZzcDE6IERvY3VtZW50 IHRoZSB2c3AxX2R1X2F0b21pY19jb25maWcgc3RydWN0dXJlCiAgdjRsOiB2c3AxOiBFeHRlbmQg dGhlIERVIEFQSSB0byBzdXBwb3J0IENSQyBjb21wdXRhdGlvbgogIHY0bDogdnNwMTogQWRkIHN1 cHBvcnQgZm9yIHRoZSBESVNDT00gZW50aXR5CiAgdjRsOiB2c3AxOiBJbnRlZ3JhdGUgRElTQ09N IGluIGRpc3BsYXkgcGlwZWxpbmUKICBkcm06IHJjYXItZHU6IEFkZCBzdXBwb3J0IGZvciBDUkMg Y29tcHV0YXRpb24KCiBkcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X2NydGMuYyAgICB8 IDE1NiArKysrKysrKysrKysrKysrLQogZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9kdV9j cnRjLmggICAgfCAgMTkgKysrCiBkcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X3ZzcC5j ICAgICB8ICAxMyArLQogZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92c3AxL01ha2VmaWxlICAgICAg fCAgIDIgKy0KIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdnNwMS92c3AxLmggICAgICAgIHwgIDEw ICstCiBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEvdnNwMV9icnguYyAgICB8ICAgNiArLQog ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92c3AxL3ZzcDFfYnJ4LmggICAgfCAgIDYgKy0KIGRyaXZl cnMvbWVkaWEvcGxhdGZvcm0vdnNwMS92c3AxX2NsdS5jICAgIHwgIDcxICsrLS0tLS0tCiBkcml2 ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEvdnNwMV9jbHUuaCAgICB8ICAgNiArLQogZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS92c3AxL3ZzcDFfZGwuYyAgICAgfCAgIDggKy0KIGRyaXZlcnMvbWVkaWEv cGxhdGZvcm0vdnNwMS92c3AxX2RsLmggICAgIHwgICA2ICstCiBkcml2ZXJzL21lZGlhL3BsYXRm b3JtL3ZzcDEvdnNwMV9kcm0uYyAgICB8IDEyNyArKysrKysrKysrKystLQogZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS92c3AxL3ZzcDFfZHJtLmggICAgfCAgMjAgKystCiBkcml2ZXJzL21lZGlhL3Bs YXRmb3JtL3ZzcDEvdnNwMV9kcnYuYyAgICB8ICAyNiArKy0KIGRyaXZlcnMvbWVkaWEvcGxhdGZv cm0vdnNwMS92c3AxX2VudGl0eS5jIHwgMTAzICsrKysrKysrKysrLQogZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS92c3AxL3ZzcDFfZW50aXR5LmggfCAgMTMgKy0KIGRyaXZlcnMvbWVkaWEvcGxhdGZv cm0vdnNwMS92c3AxX2hnby5jICAgIHwgICA2ICstCiBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Zz cDEvdnNwMV9oZ28uaCAgICB8ICAgNiArLQogZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92c3AxL3Zz cDFfaGd0LmMgICAgfCAgIDYgKy0KIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdnNwMS92c3AxX2hn dC5oICAgIHwgICA2ICstCiBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEvdnNwMV9oaXN0by5j ICB8ICA2NSArLS0tLS0tCiBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEvdnNwMV9oaXN0by5o ICB8ICAgNiArLQogZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92c3AxL3ZzcDFfaHNpdC5jICAgfCAg IDYgKy0KIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdnNwMS92c3AxX2hzaXQuaCAgIHwgICA2ICst CiBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEvdnNwMV9saWYuYyAgICB8ICA3MSArKy0tLS0t LQogZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92c3AxL3ZzcDFfbGlmLmggICAgfCAgIDYgKy0KIGRy aXZlcnMvbWVkaWEvcGxhdGZvcm0vdnNwMS92c3AxX2x1dC5jICAgIHwgIDcxICsrLS0tLS0tCiBk cml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEvdnNwMV9sdXQuaCAgICB8ICAgNiArLQogZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS92c3AxL3ZzcDFfcGlwZS5jICAgfCAgIDYgKy0KIGRyaXZlcnMvbWVk aWEvcGxhdGZvcm0vdnNwMS92c3AxX3BpcGUuaCAgIHwgICA2ICstCiBkcml2ZXJzL21lZGlhL3Bs YXRmb3JtL3ZzcDEvdnNwMV9yZWdzLmggICB8ICA0NiArKysrLQogZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS92c3AxL3ZzcDFfcnBmLmMgICAgfCAgIDYgKy0KIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0v dnNwMS92c3AxX3J3cGYuYyAgIHwgICA2ICstCiBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEv dnNwMV9yd3BmLmggICB8ICAgNiArLQogZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92c3AxL3ZzcDFf c3J1LmMgICAgfCAgIDYgKy0KIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdnNwMS92c3AxX3NydS5o ICAgIHwgICA2ICstCiBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEvdnNwMV91ZHMuYyAgICB8 ICAgNiArLQogZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92c3AxL3ZzcDFfdWRzLmggICAgfCAgIDYg Ky0KIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdnNwMS92c3AxX3VpZi5jICAgIHwgMjcxICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92c3AxL3Zz cDFfdWlmLmggICAgfCAgMzIgKysrKwogZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92c3AxL3ZzcDFf dmlkZW8uYyAgfCAgIDYgKy0KIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdnNwMS92c3AxX3ZpZGVv LmggIHwgICA2ICstCiBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEvdnNwMV93cGYuYyAgICB8 ICAgNiArLQogaW5jbHVkZS9tZWRpYS92c3AxLmggICAgICAgICAgICAgICAgICAgICAgfCAgMzkg KysrKy0KIDQ0IGZpbGVzIGNoYW5nZWQsIDg5NiBpbnNlcnRpb25zKCspLCA0MTcgZGVsZXRpb25z KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92c3AxL3ZzcDFf dWlmLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEvdnNw MV91aWYuaAoKLS0gClJlZ2FyZHMsCgpMYXVyZW50IFBpbmNoYXJ0CgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK