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 3CB02C4167B for ; Fri, 1 Dec 2023 13:58:24 +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=SHu9xWjWdQWZ7S1VR5uYNeKCYwO50tuGob+jT3dvM9o=; b=XWN94kNlG+VMK2 Gn3uR5smRTNhiPRl0axEBLEJf35F268delRjXDrpDZ3maf+dZB+IWCYWk0J/U4XX4KNVv09vgqN7l W1/4i0TwwDzb6GbnwOPxpAl4fpjlmZtoZTYNCyrLdA3+AVF7C7yacEXnWN9wlLn3Mi0BXml4fg23G l9zNH7gVgXNiwZmiZ7TEllEFVQgfGOZe0veUt7YXiBIE0j5M0V+6M6MVAJP8C7adBDdrv08g9JhG8 McReBypbYEq+PG2weskX5RiRCMiYUxTU6vmGShC7B2r+B7qrKi/iLDMvZiFuhlNIZVlVnkjX9wUZy erXDw589a1YT+/kPtSWA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1r941d-00DsJf-2B; Fri, 01 Dec 2023 13:57:49 +0000 Received: from out-176.mta1.migadu.com ([95.215.58.176]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1r941Z-00DsHp-3A for linux-arm-kernel@lists.infradead.org; Fri, 01 Dec 2023 13:57:48 +0000 Message-ID: DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1701439059; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=TpJd6OhPomyp5ChF2rTctC6wWRE0tLx+lrrgumMFAT8=; b=APm60MBJHMnUhRiRKzDRTK23FqD7Zh9GRI880BxjRs+qjL+MmWWRUQCsaA6MFa7BoqauHz QuMJU/oNucHzFVhcHfWh6vcrc/B7VtcarG+072r+Q3jvs7xfqtFECZsxGtghHtUIKgqdq5 Cg1kztA9PqCJNsJvgm1L6ByCEnqPUrM= Date: Fri, 1 Dec 2023 21:57:26 +0800 MIME-Version: 1.0 Subject: Re: [1/8] drm/plane-helper: Move drm_plane_helper_atomic_check() into udl To: Thomas Zimmermann , mripard@kernel.org, maarten.lankhorst@linux.intel.com, daniel@ffwll.ch, airlied@gmail.com Cc: javierm@redhat.com, amd-gfx@lists.freedesktop.org, linux-renesas-soc@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, laurent.pinchart@ideasonboard.com References: <20231128104723.20622-2-tzimmermann@suse.de> <9a741d8d-a699-4fe8-af59-f90c91014d01@linux.dev> <038bc33b-1bc9-4dbc-bea3-d17a3d37abf0@suse.de> Content-Language: en-US X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Sui Jingfeng In-Reply-To: <038bc33b-1bc9-4dbc-bea3-d17a3d37abf0@suse.de> X-Migadu-Flow: FLOW_OUT X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231201_055746_431479_F5DB2397 X-CRM114-Status: GOOD ( 16.41 ) 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGksCgoKT24gMjAyMy8xMi8xIDE2OjIyLCBUaG9tYXMgWmltbWVybWFubiB3cm90ZToKPiBIaQo+ Cj4gQW0gMDEuMTIuMjMgdW0gMDM6MzYgc2NocmllYiBTdWkgSmluZ2Zlbmc6Cj4+IEhpLAo+Pgo+ Pgo+PiBPbiAyMDIzLzExLzI4IDE4OjQ1LCBUaG9tYXMgWmltbWVybWFubiB3cm90ZToKPj4+IFRo ZSB1ZGwgZHJpdmVyIGlzIHRoZSBvbmx5IGNhbGxlciBvZiBkcm1fcGxhbmVfaGVscGVyX2F0b21p Y19jaGVjaygpLgo+Pj4gTW92ZSB0aGUgZnVuY3Rpb24gaW50byB0aGUgZHJpdmVyLiBObyBmdW5j dGlvbmFsIGNoYW5nZXMuCj4+Pgo+Pj4gU2lnbmVkLW9mZi1ieTogVGhvbWFzIFppbW1lcm1hbm4g PHR6aW1tZXJtYW5uQHN1c2UuZGU+Cj4+PiAtLS0KPj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9kcm1f cGxhbmVfaGVscGVyLmMgfCAzMiAKPj4+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ Pj4gwqAgZHJpdmVycy9ncHUvZHJtL3VkbC91ZGxfbW9kZXNldC5jwqAgfCAxOSArKysrKysrKysr KysrKysrLS0KPj4+IMKgIGluY2x1ZGUvZHJtL2RybV9wbGFuZV9oZWxwZXIuaMKgwqDCoMKgIHzC oCAyIC0tCj4+PiDCoCAzIGZpbGVzIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDM2IGRlbGV0 aW9ucygtKQo+Pj4KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3BsYW5lX2hl bHBlci5jIAo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3BsYW5lX2hlbHBlci5jCj4+PiBpbmRl eCA1ZTk1MDg5Njc2ZmY4Li43OTgyYmU0YjAzMDZkIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2RybV9wbGFuZV9oZWxwZXIuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9w bGFuZV9oZWxwZXIuYwo+Pj4gQEAgLTI3OSwzNSArMjc5LDMgQEAgdm9pZCBkcm1fcGxhbmVfaGVs cGVyX2Rlc3Ryb3koc3RydWN0IGRybV9wbGFuZSAKPj4+ICpwbGFuZSkKPj4+IMKgwqDCoMKgwqAg a2ZyZWUocGxhbmUpOwo+Pj4gwqAgfQo+Pj4gwqAgRVhQT1JUX1NZTUJPTChkcm1fcGxhbmVfaGVs cGVyX2Rlc3Ryb3kpOwo+Pj4gLQo+Pj4gLS8qKgo+Pj4gLSAqIGRybV9wbGFuZV9oZWxwZXJfYXRv bWljX2NoZWNrKCkgLSBIZWxwZXIgdG8gY2hlY2sgcGxhbmUgCj4+PiBhdG9taWMtc3RhdGUKPj4+ IC0gKiBAcGxhbmU6IHBsYW5lIHRvIGNoZWNrCj4+PiAtICogQHN0YXRlOiBhdG9taWMgc3RhdGUg b2JqZWN0Cj4+PiAtICoKPj4+IC0gKiBQcm92aWRlcyBhIGRlZmF1bHQgcGxhbmUtc3RhdGUgY2hl Y2sgaGFuZGxlciBmb3IgcGxhbmVzIHdob3NlIAo+Pj4gYXRvbWljLXN0YXRlCj4+PiAtICogc2Nh bGUgYW5kIHBvc2l0aW9uaW5nIGFyZSBub3QgZXhwZWN0ZWQgdG8gY2hhbmdlIHNpbmNlIHRoZSBw bGFuZSAKPj4+IGlzIGFsd2F5cwo+Pj4gLSAqIGEgZnVsbHNjcmVlbiBzY2Fub3V0IGJ1ZmZlci4K Pj4+IC0gKgo+Pj4gLSAqIFRoaXMgaXMgb2Z0ZW4gdGhlIGNhc2UgZm9yIHRoZSBwcmltYXJ5IHBs YW5lIG9mIHNpbXBsZSAKPj4+IGZyYW1lYnVmZmVycy4gU2VlCj4+PiAtICogYWxzbyBkcm1fY3J0 Y19oZWxwZXJfYXRvbWljX2NoZWNrKCkgZm9yIHRoZSByZXNwZWN0aXZlIAo+Pj4gQ1JUQy1zdGF0 ZSBjaGVjawo+Pj4gLSAqIGhlbHBlciBmdW5jdGlvbi4KPj4+IC0gKgo+Pj4gLSAqIFJFVFVSTlM6 Cj4+PiAtICogWmVybyBvbiBzdWNjZXNzLCBvciBhbiBlcnJubyBjb2RlIG90aGVyd2lzZS4KPj4+ IC0gKi8KPj4+IC1pbnQgZHJtX3BsYW5lX2hlbHBlcl9hdG9taWNfY2hlY2soc3RydWN0IGRybV9w bGFuZSAqcGxhbmUsIHN0cnVjdCAKPj4+IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+Pj4gLXsK Pj4+IC3CoMKgwqAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqbmV3X3BsYW5lX3N0YXRlID0gCj4+ PiBkcm1fYXRvbWljX2dldF9uZXdfcGxhbmVfc3RhdGUoc3RhdGUsIHBsYW5lKTsKPj4+IC3CoMKg wqAgc3RydWN0IGRybV9jcnRjICpuZXdfY3J0YyA9IG5ld19wbGFuZV9zdGF0ZS0+Y3J0YzsKPj4+ IC3CoMKgwqAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSA9IE5VTEw7Cj4+ PiAtCj4+PiAtwqDCoMKgIGlmIChuZXdfY3J0YykKPj4+IC3CoMKgwqDCoMKgwqDCoCBuZXdfY3J0 Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLCAKPj4+IG5ld19j cnRjKTsKPj4+IC0KPj4+IC3CoMKgwqAgcmV0dXJuIGRybV9hdG9taWNfaGVscGVyX2NoZWNrX3Bs YW5lX3N0YXRlKG5ld19wbGFuZV9zdGF0ZSwgCj4+PiBuZXdfY3J0Y19zdGF0ZSwKPj4+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERSTV9QTEFO RV9OT19TQ0FMSU5HLAo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgRFJNX1BMQU5FX05PX1NDQUxJTkcsCj4+PiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmYWxzZSwgZmFsc2UpOwo+Pj4g LX0KPj4+IC1FWFBPUlRfU1lNQk9MKGRybV9wbGFuZV9oZWxwZXJfYXRvbWljX2NoZWNrKTsKPj4K Pj4KPj4gU2luY2UgdGhpcyBmdW5jdGlvbiBpcyByZW1vdmVkLCBkb2VzIHRoZSBjb21tZW50cyBv ZiB0aGUgCj4+IGRybV9jcnRjX2hlbHBlcl9hdG9taWNfY2hlY2soKQo+PiBmdW5jdGlvbiAoaW4g dGhlIGRybV9jcnRjX2hlbHBlci5jKSBuZWVkIHRvIHVwZGF0ZSBhcyB3ZWxsPyBJJ20gYXNrIAo+ PiBiZWNhdXNlIEkgc2VlIHRoZQo+PiBjb21tZW50cyBvZiB0aGUgZHJtX2NydGNfaGVscGVyX2F0 b21pY19jaGVjaygpIHN0aWxsIHJlZmVyZW5jaW5nIHRoaXMgCj4+IGZ1bmN0aW9uLgo+Cj4gR29v ZCBwb2ludC4gSSdsbCB1cGRhdGUgdGhhdCBjb21tZW50LiBUaGFua3MgZm9yIHJldmlld2luZy4K PgpPSyzCoCB3aXRoIHRoaXMgdHJpdmlhbCBwcm9ibGVtIHNvbHZlZDoKCgpBY2tlZC1ieTogU3Vp IEppbmdmZW5nIDxzdWlqaW5nZmVuZ0Bsb29uZ3Nvbi5jbj4KCgo+IEJlc3QgcmVnYXJkcwo+IFRo b21hcwo+Cj4+Cj4+Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3VkbC91ZGxfbW9k ZXNldC5jIAo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9tb2Rlc2V0LmMKPj4+IGluZGV4 IDQwODc2YmNkZDc5YTQuLjc3MDIzNTljOTBjMjIgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vdWRsL3VkbF9tb2Rlc2V0LmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS91ZGwvdWRs X21vZGVzZXQuYwo+Pj4gQEAgLTIxLDcgKzIxLDYgQEAKPj4+IMKgICNpbmNsdWRlIDxkcm0vZHJt X2dlbV9mcmFtZWJ1ZmZlcl9oZWxwZXIuaD4KPj4+IMKgICNpbmNsdWRlIDxkcm0vZHJtX2dlbV9z aG1lbV9oZWxwZXIuaD4KPj4+IMKgICNpbmNsdWRlIDxkcm0vZHJtX21vZGVzZXRfaGVscGVyX3Z0 YWJsZXMuaD4KPj4+IC0jaW5jbHVkZSA8ZHJtL2RybV9wbGFuZV9oZWxwZXIuaD4KPj4+IMKgICNp bmNsdWRlIDxkcm0vZHJtX3Byb2JlX2hlbHBlci5oPgo+Pj4gwqAgI2luY2x1ZGUgPGRybS9kcm1f dmJsYW5rLmg+Cj4+PiBAQCAtMjYxLDYgKzI2MCwyMiBAQCBzdGF0aWMgY29uc3QgdWludDY0X3Qg Cj4+PiB1ZGxfcHJpbWFyeV9wbGFuZV9mbXRtb2RzW10gPSB7Cj4+PiDCoMKgwqDCoMKgIERSTV9G T1JNQVRfTU9EX0lOVkFMSUQKPj4+IMKgIH07Cj4+PiArc3RhdGljIGludCB1ZGxfcHJpbWFyeV9w bGFuZV9oZWxwZXJfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgCj4+PiAqcGxhbmUsCj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPj4+ICt7Cj4+PiArwqDCoMKgIHN0cnVjdCBkcm1f cGxhbmVfc3RhdGUgKm5ld19wbGFuZV9zdGF0ZSA9IAo+Pj4gZHJtX2F0b21pY19nZXRfbmV3X3Bs YW5lX3N0YXRlKHN0YXRlLCBwbGFuZSk7Cj4+PiArwqDCoMKgIHN0cnVjdCBkcm1fY3J0YyAqbmV3 X2NydGMgPSBuZXdfcGxhbmVfc3RhdGUtPmNydGM7Cj4+PiArwqDCoMKgIHN0cnVjdCBkcm1fY3J0 Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUgPSBOVUxMOwo+Pj4gKwo+Pj4gK8KgwqDCoCBpZiAobmV3 X2NydGMpCj4+PiArwqDCoMKgwqDCoMKgwqAgbmV3X2NydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dl dF9uZXdfY3J0Y19zdGF0ZShzdGF0ZSwgCj4+PiBuZXdfY3J0Yyk7Cj4+PiArCj4+PiArwqDCoMKg IHJldHVybiBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19wbGFuZV9zdGF0ZShuZXdfcGxhbmVfc3Rh dGUsIAo+Pj4gbmV3X2NydGNfc3RhdGUsCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEUk1fUExBTkVfTk9fU0NBTElORywKPj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERSTV9QTEFO RV9OT19TQ0FMSU5HLAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgZmFsc2UsIGZhbHNlKTsKPj4+ICt9Cj4+PiArCj4+PiDCoCBzdGF0aWMg dm9pZCB1ZGxfcHJpbWFyeV9wbGFuZV9oZWxwZXJfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgCj4+PiBk cm1fcGxhbmUgKnBsYW5lLAo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+Pj4g wqAgewo+Pj4gQEAgLTI5Niw3ICszMTEsNyBAQCBzdGF0aWMgdm9pZCAKPj4+IHVkbF9wcmltYXJ5 X3BsYW5lX2hlbHBlcl9hdG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+Pj4g wqAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfaGVscGVyX2Z1bmNzIAo+Pj4gdWRsX3By aW1hcnlfcGxhbmVfaGVscGVyX2Z1bmNzID0gewo+Pj4gwqDCoMKgwqDCoCBEUk1fR0VNX1NIQURP V19QTEFORV9IRUxQRVJfRlVOQ1MsCj4+PiAtwqDCoMKgIC5hdG9taWNfY2hlY2sgPSBkcm1fcGxh bmVfaGVscGVyX2F0b21pY19jaGVjaywKPj4+ICvCoMKgwqAgLmF0b21pY19jaGVjayA9IHVkbF9w cmltYXJ5X3BsYW5lX2hlbHBlcl9hdG9taWNfY2hlY2ssCj4+PiDCoMKgwqDCoMKgIC5hdG9taWNf dXBkYXRlID0gdWRsX3ByaW1hcnlfcGxhbmVfaGVscGVyX2F0b21pY191cGRhdGUsCj4+PiDCoCB9 Owo+Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9wbGFuZV9oZWxwZXIuaCAKPj4+IGIv aW5jbHVkZS9kcm0vZHJtX3BsYW5lX2hlbHBlci5oCj4+PiBpbmRleCAzYTU3NGU4Y2QyMmY0Li43 NWY5YzQ4MzA1NjRhIDEwMDY0NAo+Pj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX3BsYW5lX2hlbHBl ci5oCj4+PiArKysgYi9pbmNsdWRlL2RybS9kcm1fcGxhbmVfaGVscGVyLmgKPj4+IEBAIC0yNiw3 ICsyNiw2IEBACj4+PiDCoCAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KPj4+IC1zdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZTsKPj4+IMKgIHN0cnVjdCBkcm1fY3J0YzsKPj4+IMKgIHN0cnVjdCBkcm1f ZnJhbWVidWZmZXI7Cj4+PiDCoCBzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9jdHg7Cj4+PiBA QCAtNDIsNyArNDEsNiBAQCBpbnQgZHJtX3BsYW5lX2hlbHBlcl91cGRhdGVfcHJpbWFyeShzdHJ1 Y3QgCj4+PiBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNyCj4+PiDCoCBpbnQg ZHJtX3BsYW5lX2hlbHBlcl9kaXNhYmxlX3ByaW1hcnkoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUs Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qg ZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggKmN0eCk7Cj4+PiDCoCB2b2lkIGRybV9wbGFuZV9oZWxw ZXJfZGVzdHJveShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSk7Cj4+PiAtaW50IGRybV9wbGFuZV9o ZWxwZXJfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgCj4+PiBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7Cj4+PiDCoCAvKioKPj4+IMKgwqAgKiBEUk1fUExBTkVf Tk9OX0FUT01JQ19GVU5DUyAtIERlZmF1bHQgcGxhbmUgZnVuY3Rpb25zIGZvciAKPj4+IG5vbi1h dG9taWMgZHJpdmVycwo+CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxp c3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0 aW5mby9saW51eC1hcm0ta2VybmVsCg==