From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id D5A8AA04DE; Tue, 22 Sep 2020 03:29:45 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C57421D93F; Tue, 22 Sep 2020 03:29:44 +0200 (CEST) Received: from m1388.mail.163.com (m1388.mail.163.com [220.181.13.88]) by dpdk.org (Postfix) with ESMTP id 990B71D93A for ; Tue, 22 Sep 2020 03:29:42 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=Date:From:Subject:MIME-Version:Message-ID; bh=lmfWa lIXQ46evdcTHADjUi8RzblfEZewpXTYXRaVkjI=; b=PgjSEiaCvOLtkjirHVYVK FjcXGk4tA6SsxO7rF2Cbry7aLA3GP6XapzuTC2lLuegT8yMiLp5e1fRWOfjCze2z UmqH36p07o2m82JtjQDrB6KmzmYwjIGtlOYfwAbC5PmN/Z4C95LqO+XakKRFp/ID cYTE51RUnAIL7CW1euDp7U= Received: from yang_y_yi$163.com ( [111.207.123.58] ) by ajax-webmail-wmsvr88 (Coremail) ; Tue, 22 Sep 2020 09:29:38 +0800 (CST) X-Originating-IP: [111.207.123.58] Date: Tue, 22 Sep 2020 09:29:38 +0800 (CST) From: yang_y_yi To: "Hu, Jiayu" Cc: "dev@dpdk.org" , "thomas@monjalon.net" , "yangyi01@inspur.com" X-Priority: 1 X-Mailer: Coremail Webmail Server Version XT5.0.10 build 20190724(ac680a23) Copyright (c) 2002-2020 www.mailtech.cn 163com In-Reply-To: References: <20200917034959.194372-1-yang_y_yi@163.com> <20200917034959.194372-3-yang_y_yi@163.com> X-CM-CTRLDATA: zqKaVGZvb3Rlcl9odG09MjAyNDk6NTY= MIME-Version: 1.0 Message-ID: <37c12b46.f2a.174b36e34c1.Coremail.yang_y_yi@163.com> X-Coremail-Locale: zh_CN X-CM-TRANSID: WMGowABXl8KCU2lfG5l8AA--.37995W X-CM-SenderInfo: 51dqwsp1b1xqqrwthudrp/1tbiTAKni1SIk4qERgAAsl X-Coremail-Antispam: 1U5529EdanIXcx71UUUUU7vcSsGvfC2KfnxnUU== Content-Type: text/plain; charset=GBK Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: Re: [dpdk-dev] [PATCH v6 2/3] gro: add VXLAN UDP/IPv4 GRO support X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" VGhhbmtzIEppYXl1LCBJIGhhdmUgZml4ZWQgb3RoZXIgY29tbWVudHMgZXhjZXB0IHRoaXMgb25l OgoKCgo+VGhlIGl0ZW1zIG9mIGEgZmxvdyBhcmUgb3JkZXJlZCBieSBmcmFnX29mdCwgYW5kIHN0 YXJ0X3RpbWUKPm9mIHRoZXNlIGl0ZW1zIGlzIG5vdCBhbHdheXMgaW4gYXNjZW5kaW5nIG9yZGVy LiBUaGVyZWZvcmUsCj55b3UgY2Fubm90IHNraXAgY2hlY2tpbmcgdGhlIGl0ZW1zIGFmdGVyIHRo ZSBpdGVtIHdob3NlCj5zdGFydF90aW1lIGlzIGdyZWF0ZXIgdGhhbiBmbHVzaF90aW1lc3RhbXAu IFRoaXMgaXNzdWUgYWxzbwo+ZXhpc3RzIGluIFVEUC9JUHY0IEdSTywgYW5kIG5lZWQgdG8gY29y cmVjdCB0aGVtIGJvdGguCgoKSSB0aGluayB0aGUgaXNzdWUgaGVyZSBpcyBpZiB3ZSBzaG91bGQg c3RyaWN0bHkgZm9sbG93IGZsdXNoX3RpbWVzdGFtcCwgaXQgaXMgcG9zc2libGUgdGhlcmUgYXJl IG5ldyBpdGVtcyBpbiBpdGVtcyBjaGFpbi4gd2UgaGF2ZSBjaGFuY2UgdG8gbWVyZ2UgbW9yZSBw YWNrZXRzIGlmIHdlIGRvbid0IGZvbGxvdyBmbHVzaF90aW1lc3RhbXAuIFNvIGFuIGlkZWFsIGNo YW5nZSBjYW4gYmUgdGhpcy4gQnV0IGlzIGl0IGFjY2VwdGlibGUgaWYgd2UgZG9uJ3QgdXNlIGZs dXNoX3RpbWVzdGFtcD8gSXQgY2FuIGZsdXNoIHNvbWUgcGFja2V0cyBpbiBhZHZhbmNlIHRoZXJl Zm9yZSBtaXNzIG5leHQgbWVyZ2Ugd2luZG93LiBNYXliZSBjdXJyZW50IHdheSBpcyBtb3N0IHJl c29uYWJsZSBhbmQgYSB0cmFkZW9mZiBiZXR3ZWVuIHR3byBleHRlcmVtIGNhc2VzLgoKCgoKCmRp ZmYgLS1naXQgYS9saWIvbGlicnRlX2dyby9ncm9fdWRwNC5jIGIvbGliL2xpYnJ0ZV9ncm8vZ3Jv X3VkcDQuYwppbmRleCAwNjFlN2IwLi5mZmEzNWEyIDEwMDY0NAotLS0gYS9saWIvbGlicnRlX2dy by9ncm9fdWRwNC5jCisrKyBiL2xpYi9saWJydGVfZ3JvL2dyb191ZHA0LmMKQEAgLTM5MSw3ICsz OTEsNiBAQAoKICAgICAgICAgICAgICAgIGogPSB0YmwtPmZsb3dzW2ldLnN0YXJ0X2luZGV4Owog ICAgICAgICAgICAgICAgd2hpbGUgKGogIT0gSU5WQUxJRF9BUlJBWV9JTkRFWCkgewotICAgICAg ICAgICAgICAgICAgICAgICBpZiAodGJsLT5pdGVtc1tqXS5zdGFydF90aW1lIDw9IGZsdXNoX3Rp bWVzdGFtcCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb191ZHA0X21lcmdl X2l0ZW1zKHRibCwgaik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0W2srK10g PSB0YmwtPml0ZW1zW2pdLmZpcnN0c2VnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlmICh0YmwtPml0ZW1zW2pdLm5iX21lcmdlZCA+IDEpCkBAIC00MDcsMTIgKzQwNiw2IEBACgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1bmxpa2VseShrID09IG5iX291dCkp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gazsKLSAgICAg ICAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LyoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBUaGUgbGVmdCBwYWNrZXRzIGlu IHRoaXMgZmxvdyB3b24ndCBiZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHRp bWVvdXQuIEdvIHRvIGNoZWNrIG90aGVyIGZsb3dzLgotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg ICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gazsKCgoKCgoKCgoKQXQgMjAyMC0w OS0yMSAxNTo1NDozNiwgIkh1LCBKaWF5dSIgPGppYXl1Lmh1QGludGVsLmNvbT4gd3JvdGU6Cj5I aSBZaSwKPgo+U29tZSBjb21tZW50cyBhcmUgaW5saW5lLgo+Cj5UaGFua3MsCj5KaWF5dQo+Cj4+ IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4+IEZyb206IHlhbmdfeV95aUAxNjMuY29tIDx5 YW5nX3lfeWlAMTYzLmNvbT4KPj4gU2VudDogVGh1cnNkYXksIFNlcHRlbWJlciAxNywgMjAyMCAx MTo1MCBBTQo+PiBUbzogZGV2QGRwZGsub3JnCj4+IENjOiBIdSwgSmlheXUgPGppYXl1Lmh1QGlu dGVsLmNvbT47IHRob21hc0Btb25qYWxvbi5uZXQ7Cj4+IHlhbmd5aTAxQGluc3B1ci5jb207IHlh bmdfeV95aUAxNjMuY29tCj4+IFN1YmplY3Q6IFtQQVRDSCB2NiAyLzNdIGdybzogYWRkIFZYTEFO IFVEUC9JUHY0IEdSTyBzdXBwb3J0Cj4+IAo+PiBGcm9tOiBZaSBZYW5nIDx5YW5neWkwMUBpbnNw dXIuY29tPgo+PiAKPj4gVlhMQU4gVURQL0lQdjQgR1JPIGNhbiBoZWxwIGltcHJvdmUgVk0tdG8t Vk0gVURQCj4+IHBlcmZvcm1hbmNlIHdoZW4gVUZPIG9yIEdTTyBpcyBlbmFibGVkIGluIFZNLCBH Uk8KPj4gbXVzdCBiZSBzdXBwb3J0ZWQgaWYgVUZPIG9yIEdTTyBpcyBlbmFibGVkLAo+PiBvdGhl cndpc2UsIHBlcmZvcm1hbmNlIGNhbid0IGdldCBiaWcgaW1wcm92ZW1lbnQKPj4gaWYgb25seSBH U08gaXMgdGhlcmUuCj4+IAo+PiBXaXRoIHRoaXMgZW5hYmxlZCBpbiBEUERLLCBPVlMgRFBESyBj YW4gbGV2ZXJhZ2UgaXQKPj4gdG8gaW1wcm92ZSBWTS10by1WTSBVRFAgcGVyZm9ybWFuY2UsIGl0 IHdpbGwgcmVhc3NlbWJsZQo+PiBWWExBTiBVRFAvSVB2NCBmcmFnbWVudHMgaW1tZWRpYXRlIGFm dGVyIHRoZXkgYXJlCj4+IHJlY2VpdmVkIGZyb20gYSBwaHlzaWNhbCBOSUMuIEl0IGlzIHZlcnkg aGVscGZ1bCBpbgo+PiBPVlMgRFBESyBWWExBTiB1c2UgY2FzZS4KPj4gCj4+IE5vdGU6IG91dGVy IElQIElEIGlzbid0IHVzZWQgdG8gY2hlY2sgaWYgdHdvIHBhY2tldHMKPj4gYXJlIHNhbWUgZmxv dyBhbmQgY2FuIGJlIG1lcmdlZCBiZWNhdXNlIHRoZSBkaWZmZXJlbmNlCj4+IGJldHdlZW4gb3V0 ZXIgSVAgSURzIG9mIHR3byBwYWNrZXRzIGlzbid0IGFsd2F5cyArLy0xCj4+IGluIGNhc2Ugb2Yg T1ZTIERQREsuCj4+IAo+PiBTaWduZWQtb2ZmLWJ5OiBZaSBZYW5nIDx5YW5neWkwMUBpbnNwdXIu Y29tPgo+PiAtLS0KPj4gIGxpYi9saWJydGVfZ3JvL2dyb191ZHA0LmggICAgICAgfCAgIDEgKwo+ PiAgbGliL2xpYnJ0ZV9ncm8vZ3JvX3Z4bGFuX3VkcDQuYyB8IDU0Mgo+PiArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+ICBsaWIvbGlicnRlX2dyby9ncm9fdnhsYW5f dWRwNC5oIHwgMTU0ICsrKysrKysrKysrKwo+PiAgbGliL2xpYnJ0ZV9ncm8vbWVzb24uYnVpbGQg ICAgICB8ICAgMiArLQo+PiAgbGliL2xpYnJ0ZV9ncm8vcnRlX2dyby5jICAgICAgICB8IDExNSAr KysrKysrLS0KPj4gIGxpYi9saWJydGVfZ3JvL3J0ZV9ncm8uaCAgICAgICAgfCAgIDMgKwo+PiAg NiBmaWxlcyBjaGFuZ2VkLCA3OTAgaW5zZXJ0aW9ucygrKSwgMjcgZGVsZXRpb25zKC0pCj4+ICBj cmVhdGUgbW9kZSAxMDA2NDQgbGliL2xpYnJ0ZV9ncm8vZ3JvX3Z4bGFuX3VkcDQuYwo+PiAgY3Jl YXRlIG1vZGUgMTAwNjQ0IGxpYi9saWJydGVfZ3JvL2dyb192eGxhbl91ZHA0LmgKPj4gCj4+IGRp ZmYgLS1naXQgYS9saWIvbGlicnRlX2dyby9ncm9fdWRwNC5oIGIvbGliL2xpYnJ0ZV9ncm8vZ3Jv X3VkcDQuaAo+PiBpbmRleCAwYTA3OGU0Li5kMzhiMzkzIDEwMDY0NAo+PiAtLS0gYS9saWIvbGli cnRlX2dyby9ncm9fdWRwNC5oCj4+ICsrKyBiL2xpYi9saWJydGVfZ3JvL2dyb191ZHA0LmgKPj4g QEAgLTcsNiArNyw3IEBACj4+IAo+PiAgI2luY2x1ZGUgPHJ0ZV9pcC5oPgo+PiAgI2luY2x1ZGUg PHJ0ZV91ZHAuaD4KPj4gKyNpbmNsdWRlIDxydGVfdnhsYW4uaD4KPj4gCj4+ICAjZGVmaW5lIElO VkFMSURfQVJSQVlfSU5ERVggMHhmZmZmZmZmZlVMCj4+ICAjZGVmaW5lIEdST19VRFA0X1RCTF9N QVhfSVRFTV9OVU0gKDEwMjRVTCAqIDEwMjRVTCkKPj4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVf Z3JvL2dyb192eGxhbl91ZHA0LmMgYi9saWIvbGlicnRlX2dyby9ncm9fdnhsYW5fdWRwNC5jCj4+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAuLjRlZWNlNTYKPj4gLS0tIC9k ZXYvbnVsbAo+PiArKysgYi9saWIvbGlicnRlX2dyby9ncm9fdnhsYW5fdWRwNC5jCj4+IEBAIC0w LDAgKzEsNTQyIEBACj4+ICsKPj4gK3VpbnQxNl90Cj4+ICtncm9fdnhsYW5fdWRwNF90YmxfdGlt ZW91dF9mbHVzaChzdHJ1Y3QgZ3JvX3Z4bGFuX3VkcDRfdGJsICp0YmwsCj4+ICsJCXVpbnQ2NF90 IGZsdXNoX3RpbWVzdGFtcCwKPj4gKwkJc3RydWN0IHJ0ZV9tYnVmICoqb3V0LAo+PiArCQl1aW50 MTZfdCBuYl9vdXQpCj4+ICt7Cj4+ICsJdWludDE2X3QgayA9IDA7Cj4+ICsJdWludDMyX3QgaSwg ajsKPj4gKwl1aW50MzJfdCBtYXhfZmxvd19udW0gPSB0YmwtPm1heF9mbG93X251bTsKPj4gKwo+ PiArCWZvciAoaSA9IDA7IGkgPCBtYXhfZmxvd19udW07IGkrKykgewo+PiArCQlpZiAodW5saWtl bHkodGJsLT5mbG93X251bSA9PSAwKSkKPj4gKwkJCXJldHVybiBrOwo+PiArCj4+ICsJCWogPSB0 YmwtPmZsb3dzW2ldLnN0YXJ0X2luZGV4Owo+PiArCQl3aGlsZSAoaiAhPSBJTlZBTElEX0FSUkFZ X0lOREVYKSB7Cj4+ICsJCQlpZiAodGJsLT5pdGVtc1tqXS5pbm5lcl9pdGVtLnN0YXJ0X3RpbWUg PD0KPj4gKwkJCQkJZmx1c2hfdGltZXN0YW1wKSB7Cj4+ICsJCQkJZ3JvX3Z4bGFuX3VkcDRfbWVy Z2VfaXRlbXModGJsLCBqKTsKPj4gKwkJCQlvdXRbaysrXSA9IHRibC0+aXRlbXNbal0uaW5uZXJf aXRlbS5maXJzdHNlZzsKPj4gKwkJCQlpZiAodGJsLT5pdGVtc1tqXS5pbm5lcl9pdGVtLm5iX21l cmdlZCA+IDEpCj4+ICsJCQkJCXVwZGF0ZV92eGxhbl9oZWFkZXIoJih0YmwtCj4+ID5pdGVtc1tq XSkpOwo+PiArCQkJCS8qCj4+ICsJCQkJICogRGVsZXRlIHRoZSBpdGVtIGFuZCBnZXQgdGhlIG5l eHQgcGFja2V0Cj4+ICsJCQkJICogaW5kZXguCj4+ICsJCQkJICovCj4+ICsJCQkJaiA9IGRlbGV0 ZV9pdGVtKHRibCwgaiwgSU5WQUxJRF9BUlJBWV9JTkRFWCk7Cj4+ICsJCQkJdGJsLT5mbG93c1tp XS5zdGFydF9pbmRleCA9IGo7Cj4+ICsJCQkJaWYgKGogPT0gSU5WQUxJRF9BUlJBWV9JTkRFWCkK Pj4gKwkJCQkJdGJsLT5mbG93X251bS0tOwo+PiArCj4+ICsJCQkJaWYgKHVubGlrZWx5KGsgPT0g bmJfb3V0KSkKPj4gKwkJCQkJcmV0dXJuIGs7Cj4+ICsJCQl9IGVsc2UKPj4gKwkJCQkvKgo+PiAr CQkJCSAqIFRoZSBsZWZ0IHBhY2tldHMgaW4gdGhlIGZsb3cgd29uJ3QgYmUKPj4gKwkJCQkgKiB0 aW1lb3V0LiBHbyB0byBjaGVjayBvdGhlciBmbG93cy4KPj4gKwkJCQkgKi8KPj4gKwkJCQlicmVh azsKPgo+VGhlIGl0ZW1zIG9mIGEgZmxvdyBhcmUgb3JkZXJlZCBieSBmcmFnX29mdCwgYW5kIHN0 YXJ0X3RpbWUKPm9mIHRoZXNlIGl0ZW1zIGlzIG5vdCBhbHdheXMgaW4gYXNjZW5kaW5nIG9yZGVy LiBUaGVyZWZvcmUsCj55b3UgY2Fubm90IHNraXAgY2hlY2tpbmcgdGhlIGl0ZW1zIGFmdGVyIHRo ZSBpdGVtIHdob3NlCj5zdGFydF90aW1lIGlzIGdyZWF0ZXIgdGhhbiBmbHVzaF90aW1lc3RhbXAu IFRoaXMgaXNzdWUgYWxzbwo+ZXhpc3RzIGluIFVEUC9JUHY0IEdSTywgYW5kIG5lZWQgdG8gY29y cmVjdCB0aGVtIGJvdGguCj4KPj4gKwkJfQo+PiArCX0KPj4gKwlyZXR1cm4gazsKPj4gK30KPj4g ZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfZ3JvL2dyb192eGxhbl91ZHA0LmgKPj4gYi9saWIvbGli cnRlX2dyby9ncm9fdnhsYW5fdWRwNC5oCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4 IDAwMDAwMDAuLjZhNDJmYjMKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9saWIvbGlicnRlX2dy by9ncm9fdnhsYW5fdWRwNC5oCj4+IEBAIC0wLDAgKzEsMTU0IEBACj4+ICsvKiBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlCj4+ICsgKiBDb3B5cmlnaHQoYykgMjAyMCBJbnNw dXIgQ29ycG9yYXRpb24KPj4gKyAqLwo+PiArCj4+ICsjaWZuZGVmIF9HUk9fVlhMQU5fVURQNF9I Xwo+PiArI2RlZmluZSBfR1JPX1ZYTEFOX1VEUDRfSF8KPj4gKwo+PiArI2luY2x1ZGUgImdyb191 ZHA0LmgiCj4+ICsKPj4gKyNkZWZpbmUgR1JPX1ZYTEFOX1VEUDRfVEJMX01BWF9JVEVNX05VTSAo MTAyNFVMICogMTAyNFVMKQo+PiArCj4+ICsvKiBIZWFkZXIgZmllbGRzIHJlcHJlc2VudGluZyBh IFZ4TEFOIGZsb3cgKi8KPj4gK3N0cnVjdCB2eGxhbl91ZHA0X2Zsb3dfa2V5IHsKPj4gKwlzdHJ1 Y3QgdWRwNF9mbG93X2tleSBpbm5lcl9rZXk7Cj4+ICsJc3RydWN0IHJ0ZV92eGxhbl9oZHIgdnhs YW5faGRyOwo+PiArCj4+ICsJc3RydWN0IHJ0ZV9ldGhlcl9hZGRyIG91dGVyX2V0aF9zYWRkcjsK Pj4gKwlzdHJ1Y3QgcnRlX2V0aGVyX2FkZHIgb3V0ZXJfZXRoX2RhZGRyOwo+PiArCj4+ICsJdWlu dDMyX3Qgb3V0ZXJfaXBfc3JjX2FkZHI7Cj4+ICsJdWludDMyX3Qgb3V0ZXJfaXBfZHN0X2FkZHI7 Cj4+ICsKPj4gKwkvKiBOb3RlOiBJdCBpcyB1bm5lY2Vzc2FyeSB0byBzYXZlIG91dGVyX3NyY19w b3J0IGhlcmUgYmVjYXVzZSBpdCBjYW4KPj4gKwkgKiBiZSBkaWZmZXJlbnQgZm9yIFZ4TEFOIFVE UCBmcmFnbWVudHMgZnJvbSB0aGUgc2FtZSBmbG93Lgo+PiArCSAqLwo+PiArCXVpbnQxNl90IG91 dGVyX2RzdF9wb3J0Owo+PiArCj4KPlRoZSBhYm92ZSBlbXB0eSBsaW5lIGlzIHVubmVjZXNzYXJ5 Lgo+Cj4+ICt9Owo+PiArCj4+ICsKPj4gK3N0cnVjdCBncm9fdnhsYW5fdWRwNF9pdGVtIHsKPj4g KwlzdHJ1Y3QgZ3JvX3VkcDRfaXRlbSBpbm5lcl9pdGVtOwo+PiArCS8qIE5vdGU6IFZYTEFOIFVE UC9JUHY0IEdSTyBuZWVkbid0IGNoZWNrIG91dGVyX2lwX2lkIGJlY2F1c2UKPj4gKwkgKiB0aGUg ZGlmZmVyZW5jZSBiZXR3ZWVuIG91dGVyX2lwX2lkcyBvZiB0d28gcmVjZWl2ZWQgcGFja2V0cwo+ PiArCSAqIGlzbid0IGFsd2F5cyArLy0xIGluIGNhc2Ugb2YgT1ZTIERQREsuIFNvIG5vIG91dGVy X2lwX2lkCj4+ICsJICogYW5kIG91dGVyX2lzX2F0b21pYyBmaWVsZHMgaGVyZS4KPj4gKwkgKi8K Pgo+SXQgc2VlbXMgdGhlIGFib3ZlIGNvbW1lbnRzIGZvciBvdXRlciBJUCBJRCBpcyBlbm91Z2gs IGFuZCBubyBuZWVkCj50byBoaWdobGlnaHQgaW4gdGhlIGNvbW1pdCBsb2cgYWdhaW4uIEhvdyBk byB5b3UgdGhpbms/Cj4KPj4gK307Cj4+ICsKPj4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfZ3Jv L3J0ZV9ncm8uYyBiL2xpYi9saWJydGVfZ3JvL3J0ZV9ncm8uYwo+PiBpbmRleCBmNjIzMjMwLi5k Yjk5MGNmIDEwMDY0NAo+PiAtLS0gYS9saWIvbGlicnRlX2dyby9ydGVfZ3JvLmMKPj4gKysrIGIv bGliL2xpYnJ0ZV9ncm8vcnRlX2dyby5jCj4+IEBAIC0xMSw2ICsxMSw3IEBACj4+ICAjaW5jbHVk ZSAiZ3JvX3RjcDQuaCIKPj4gICNpbmNsdWRlICJncm9fdWRwNC5oIgo+PiAgI2luY2x1ZGUgImdy b192eGxhbl90Y3A0LmgiCj4+ICsjaW5jbHVkZSAiZ3JvX3Z4bGFuX3VkcDQuaCIKPj4gCj4+ICAv Kgo+PiAgICogR1JPIGNvbnRleHQgc3RydWN0dXJlLiBJdCBrZWVwcyB0aGUgdGFibGUgc3RydWN0 dXJlcywgd2hpY2ggYXJlCj4+IEBAIC0xMzcsMTkgKzE0OCwyNyBAQCBzdHJ1Y3QgZ3JvX2N0eCB7 Cj4+ICAJc3RydWN0IGdyb191ZHA0X2l0ZW0gdWRwX2l0ZW1zW1JURV9HUk9fTUFYX0JVUlNUX0lU RU1fTlVNXQo+PiA9IHt7MH0gfTsKPj4gCj4+ICAJLyogQWxsb2NhdGUgYSByZWFzc2VtYmx5IHRh YmxlIGZvciBWWExBTiBUQ1AgR1JPICovCj4+IC0Jc3RydWN0IGdyb192eGxhbl90Y3A0X3RibCB2 eGxhbl90Ymw7Cj4+IC0Jc3RydWN0IGdyb192eGxhbl90Y3A0X2Zsb3cKPj4gdnhsYW5fZmxvd3Nb UlRFX0dST19NQVhfQlVSU1RfSVRFTV9OVU1dOwo+PiAtCXN0cnVjdCBncm9fdnhsYW5fdGNwNF9p dGVtCj4+IHZ4bGFuX2l0ZW1zW1JURV9HUk9fTUFYX0JVUlNUX0lURU1fTlVNXQo+PiArCXN0cnVj dCBncm9fdnhsYW5fdGNwNF90YmwgdnhsYW5fdGNwX3RibDsKPj4gKwlzdHJ1Y3QgZ3JvX3Z4bGFu X3RjcDRfZmxvdwo+PiB2eGxhbl90Y3BfZmxvd3NbUlRFX0dST19NQVhfQlVSU1RfSVRFTV9OVU1d Owo+PiArCXN0cnVjdCBncm9fdnhsYW5fdGNwNF9pdGVtCj4+IHZ4bGFuX3RjcF9pdGVtc1tSVEVf R1JPX01BWF9CVVJTVF9JVEVNX05VTV0KPj4gIAkJCT0ge3t7MH0sIDAsIDB9IH07Cj4+IAo+PiAr CS8qIEFsbG9jYXRlIGEgcmVhc3NlbWJseSB0YWJsZSBmb3IgVlhMQU4gVURQIEdSTyAqLwo+PiAr CXN0cnVjdCBncm9fdnhsYW5fdWRwNF90YmwgdnhsYW5fdWRwX3RibDsKPj4gKwlzdHJ1Y3QgZ3Jv X3Z4bGFuX3VkcDRfZmxvdwo+PiB2eGxhbl91ZHBfZmxvd3NbUlRFX0dST19NQVhfQlVSU1RfSVRF TV9OVU1dOwo+PiArCXN0cnVjdCBncm9fdnhsYW5fdWRwNF9pdGVtCj4+IHZ4bGFuX3VkcF9pdGVt c1tSVEVfR1JPX01BWF9CVVJTVF9JVEVNX05VTV0KPj4gKwkJCT0ge3t7MH19IH07Cj4+ICsKPj4g IAlzdHJ1Y3QgcnRlX21idWYgKnVucHJvY2Vzc19wa3RzW25iX3BrdHNdOwo+PiAgCXVpbnQzMl90 IGl0ZW1fbnVtOwo+PiAgCWludDMyX3QgcmV0Owo+PiAgCXVpbnQxNl90IGksIHVucHJvY2Vzc19u dW0gPSAwLCBuYl9hZnRlcl9ncm8gPSBuYl9wa3RzOwo+PiAtCXVpbnQ4X3QgZG9fdGNwNF9ncm8g PSAwLCBkb192eGxhbl9ncm8gPSAwLCBkb191ZHA0X2dybyA9IDA7Cj4+ICsJdWludDhfdCBkb190 Y3A0X2dybyA9IDAsIGRvX3Z4bGFuX3RjcF9ncm8gPSAwLCBkb191ZHA0X2dybyA9IDAsCj4+ICsJ CWRvX3Z4bGFuX3VkcF9ncm8gPSAwOwo+PiAKPj4gIAlpZiAodW5saWtlbHkoKHBhcmFtLT5ncm9f dHlwZXMgJiAoUlRFX0dST19JUFY0X1ZYTEFOX1RDUF9JUFY0IHwKPj4gIAkJCQkJUlRFX0dST19U Q1BfSVBWNCB8Cj4+ICsJCQkJCVJURV9HUk9fSVBWNF9WWExBTl9VRFBfSVBWNCB8Cj4+ICAJCQkJ CVJURV9HUk9fVURQX0lQVjQpKSA9PSAwKSkKPj4gIAkJcmV0dXJuIG5iX3BrdHM7Cj4+IAo+PiBA QCAtMTYwLDE1ICsxNzksMjggQEAgc3RydWN0IGdyb19jdHggewo+PiAKPj4gIAlpZiAocGFyYW0t Pmdyb190eXBlcyAmIFJURV9HUk9fSVBWNF9WWExBTl9UQ1BfSVBWNCkgewo+PiAgCQlmb3IgKGkg PSAwOyBpIDwgaXRlbV9udW07IGkrKykKPj4gLQkJCXZ4bGFuX2Zsb3dzW2ldLnN0YXJ0X2luZGV4 ID0gSU5WQUxJRF9BUlJBWV9JTkRFWDsKPj4gLQo+PiAtCQl2eGxhbl90YmwuZmxvd3MgPSB2eGxh bl9mbG93czsKPj4gLQkJdnhsYW5fdGJsLml0ZW1zID0gdnhsYW5faXRlbXM7Cj4+IC0JCXZ4bGFu X3RibC5mbG93X251bSA9IDA7Cj4+IC0JCXZ4bGFuX3RibC5pdGVtX251bSA9IDA7Cj4+IC0JCXZ4 bGFuX3RibC5tYXhfZmxvd19udW0gPSBpdGVtX251bTsKPj4gLQkJdnhsYW5fdGJsLm1heF9pdGVt X251bSA9IGl0ZW1fbnVtOwo+PiAtCQlkb192eGxhbl9ncm8gPSAxOwo+PiArCQkJdnhsYW5fdGNw X2Zsb3dzW2ldLnN0YXJ0X2luZGV4ID0KPj4gSU5WQUxJRF9BUlJBWV9JTkRFWDsKPj4gKwo+PiAr CQl2eGxhbl90Y3BfdGJsLmZsb3dzID0gdnhsYW5fdGNwX2Zsb3dzOwo+PiArCQl2eGxhbl90Y3Bf dGJsLml0ZW1zID0gdnhsYW5fdGNwX2l0ZW1zOwo+PiArCQl2eGxhbl90Y3BfdGJsLmZsb3dfbnVt ID0gMDsKPj4gKwkJdnhsYW5fdGNwX3RibC5pdGVtX251bSA9IDA7Cj4+ICsJCXZ4bGFuX3RjcF90 YmwubWF4X2Zsb3dfbnVtID0gaXRlbV9udW07Cj4+ICsJCXZ4bGFuX3RjcF90YmwubWF4X2l0ZW1f bnVtID0gaXRlbV9udW07Cj4+ICsJCWRvX3Z4bGFuX3RjcF9ncm8gPSAxOwo+PiArCX0KPj4gKwo+ PiArCWlmIChwYXJhbS0+Z3JvX3R5cGVzICYgUlRFX0dST19JUFY0X1ZYTEFOX1VEUF9JUFY0KSB7 Cj4+ICsJCWZvciAoaSA9IDA7IGkgPCBpdGVtX251bTsgaSsrKQo+PiArCQkJdnhsYW5fdWRwX2Zs b3dzW2ldLnN0YXJ0X2luZGV4ID0KPj4gSU5WQUxJRF9BUlJBWV9JTkRFWDsKPj4gKwo+PiArCQl2 eGxhbl91ZHBfdGJsLmZsb3dzID0gdnhsYW5fdWRwX2Zsb3dzOwo+PiArCQl2eGxhbl91ZHBfdGJs Lml0ZW1zID0gdnhsYW5fdWRwX2l0ZW1zOwo+PiArCQl2eGxhbl91ZHBfdGJsLmZsb3dfbnVtID0g MDsKPj4gKwkJdnhsYW5fdWRwX3RibC5pdGVtX251bSA9IDA7Cj4+ICsJCXZ4bGFuX3VkcF90Ymwu bWF4X2Zsb3dfbnVtID0gaXRlbV9udW07Cj4+ICsJCXZ4bGFuX3VkcF90YmwubWF4X2l0ZW1fbnVt ID0gaXRlbV9udW07Cj4+ICsJCWRvX3Z4bGFuX3VkcF9ncm8gPSAxOwo+PiAgCX0KPj4gCj4+ICAJ aWYgKHBhcmFtLT5ncm9fdHlwZXMgJiBSVEVfR1JPX1RDUF9JUFY0KSB7Cj4+IEBAIC0yMDQsOSAr MjM2LDE4IEBAIHN0cnVjdCBncm9fY3R4IHsKPj4gIAkJICogd2lsbCBiZSBmbHVzaGVkIGZyb20g dGhlIHRhYmxlcy4KPj4gIAkJICovCj4+ICAJCWlmIChJU19JUFY0X1ZYTEFOX1RDUDRfUEtUKHBr dHNbaV0tPnBhY2tldF90eXBlKSAmJgo+PiAtCQkJCWRvX3Z4bGFuX2dybykgewo+PiArCQkJCWRv X3Z4bGFuX3RjcF9ncm8pIHsKPj4gIAkJCXJldCA9IGdyb192eGxhbl90Y3A0X3JlYXNzZW1ibGUo cGt0c1tpXSwKPj4gLQkJCQkJCQkmdnhsYW5fdGJsLCAwKTsKPj4gKwkJCQkJCQkmdnhsYW5fdGNw X3RibCwgMCk7Cj4+ICsJCQlpZiAocmV0ID4gMCkKPj4gKwkJCQkvKiBNZXJnZSBzdWNjZXNzZnVs bHkgKi8KPj4gKwkJCQluYl9hZnRlcl9ncm8tLTsKPj4gKwkJCWVsc2UgaWYgKHJldCA8IDApCj4+ ICsJCQkJdW5wcm9jZXNzX3BrdHNbdW5wcm9jZXNzX251bSsrXSA9IHBrdHNbaV07Cj4+ICsJCX0g ZWxzZSBpZiAoSVNfSVBWNF9WWExBTl9VRFA0X1BLVChwa3RzW2ldLT5wYWNrZXRfdHlwZSkgJiYK Pj4gKwkJCQlkb192eGxhbl91ZHBfZ3JvKSB7Cj4+ICsJCQlyZXQgPSBncm9fdnhsYW5fdWRwNF9y ZWFzc2VtYmxlKHBrdHNbaV0sCj4+ICsJCQkJCQkJJnZ4bGFuX3VkcF90YmwsIDApOwo+PiAgCQkJ aWYgKHJldCA+IDApCj4+ICAJCQkJLyogTWVyZ2Ugc3VjY2Vzc2Z1bGx5ICovCj4+ICAJCQkJbmJf YWZ0ZXJfZ3JvLS07Cj4+IEBAIC0yMzYsMTEgKzI3NywxNyBAQCBzdHJ1Y3QgZ3JvX2N0eCB7Cj4+ ICAJCSB8fCAodW5wcm9jZXNzX251bSA8IG5iX3BrdHMpKSB7Cj4+ICAJCWkgPSAwOwo+PiAgCQkv KiBGbHVzaCBhbGwgcGFja2V0cyBmcm9tIHRoZSB0YWJsZXMgKi8KPj4gLQkJaWYgKGRvX3Z4bGFu X2dybykgewo+PiAtCQkJaSA9IGdyb192eGxhbl90Y3A0X3RibF90aW1lb3V0X2ZsdXNoKCZ2eGxh bl90YmwsCj4+ICsJCWlmIChkb192eGxhbl90Y3BfZ3JvKSB7Cj4+ICsJCQlpID0gZ3JvX3Z4bGFu X3RjcDRfdGJsX3RpbWVvdXRfZmx1c2goJnZ4bGFuX3RjcF90YmwsCj4+ICAJCQkJCTAsIHBrdHMs IG5iX3BrdHMpOwo+PiAgCQl9Cj4+IAo+PiArCQlpZiAoZG9fdnhsYW5fdWRwX2dybykgewo+PiAr CQkJaSArPQo+PiBncm9fdnhsYW5fdWRwNF90YmxfdGltZW91dF9mbHVzaCgmdnhsYW5fdWRwX3Ri bCwKPj4gKwkJCQkJMCwgJnBrdHNbaV0sIG5iX3BrdHMgLSBpKTsKPj4gKwo+PiArCQl9Cj4+ICsK Pj4gIAkJaWYgKGRvX3RjcDRfZ3JvKSB7Cj4+ICAJCQlpICs9IGdyb190Y3A0X3RibF90aW1lb3V0 X2ZsdXNoKCZ0Y3BfdGJsLCAwLAo+PiAgCQkJCQkmcGt0c1tpXSwgbmJfcGt0cyAtIGkpOwo+PiBA QCAtMjY5LDMzICszMTYsNDIgQEAgc3RydWN0IGdyb19jdHggewo+PiAgewo+PiAgCXN0cnVjdCBy dGVfbWJ1ZiAqdW5wcm9jZXNzX3BrdHNbbmJfcGt0c107Cj4+ICAJc3RydWN0IGdyb19jdHggKmdy b19jdHggPSBjdHg7Cj4+IC0Jdm9pZCAqdGNwX3RibCwgKnVkcF90YmwsICp2eGxhbl90Ymw7Cj4+ ICsJdm9pZCAqdGNwX3RibCwgKnVkcF90YmwsICp2eGxhbl90Y3BfdGJsLCAqdnhsYW5fdWRwX3Ri bDsKPj4gIAl1aW50NjRfdCBjdXJyZW50X3RpbWU7Cj4+ICAJdWludDE2X3QgaSwgdW5wcm9jZXNz X251bSA9IDA7Cj4+IC0JdWludDhfdCBkb190Y3A0X2dybywgZG9fdnhsYW5fZ3JvLCBkb191ZHA0 X2dybzsKPj4gKwl1aW50OF90IGRvX3RjcDRfZ3JvLCBkb192eGxhbl90Y3BfZ3JvLCBkb191ZHA0 X2dybywKPj4gZG9fdnhsYW5fdWRwX2dybzsKPj4gCj4+ICAJaWYgKHVubGlrZWx5KChncm9fY3R4 LT5ncm9fdHlwZXMgJiAoUlRFX0dST19JUFY0X1ZYTEFOX1RDUF9JUFY0Cj4+IHwKPj4gIAkJCQkJ UlRFX0dST19UQ1BfSVBWNCB8Cj4+ICsJCQkJCVJURV9HUk9fSVBWNF9WWExBTl9VRFBfSVBWNCB8 Cj4+ICAJCQkJCVJURV9HUk9fVURQX0lQVjQpKSA9PSAwKSkKPj4gIAkJcmV0dXJuIG5iX3BrdHM7 Cj4+IAo+PiAgCXRjcF90YmwgPSBncm9fY3R4LT50YmxzW1JURV9HUk9fVENQX0lQVjRfSU5ERVhd Owo+PiAtCXZ4bGFuX3RibCA9IGdyb19jdHgtPnRibHNbUlRFX0dST19JUFY0X1ZYTEFOX1RDUF9J UFY0X0lOREVYXTsKPj4gKwl2eGxhbl90Y3BfdGJsID0gZ3JvX2N0eC0KPj4gPnRibHNbUlRFX0dS T19JUFY0X1ZYTEFOX1RDUF9JUFY0X0lOREVYXTsKPj4gIAl1ZHBfdGJsID0gZ3JvX2N0eC0+dGJs c1tSVEVfR1JPX1VEUF9JUFY0X0lOREVYXTsKPj4gKwl2eGxhbl91ZHBfdGJsID0gZ3JvX2N0eC0K Pj4gPnRibHNbUlRFX0dST19JUFY0X1ZYTEFOX1VEUF9JUFY0X0lOREVYXTsKPj4gCj4+ICAJZG9f dGNwNF9ncm8gPSAoZ3JvX2N0eC0+Z3JvX3R5cGVzICYgUlRFX0dST19UQ1BfSVBWNCkgPT0KPj4g IAkJUlRFX0dST19UQ1BfSVBWNDsKPj4gLQlkb192eGxhbl9ncm8gPSAoZ3JvX2N0eC0+Z3JvX3R5 cGVzICYKPj4gUlRFX0dST19JUFY0X1ZYTEFOX1RDUF9JUFY0KSA9PQo+PiArCWRvX3Z4bGFuX3Rj cF9ncm8gPSAoZ3JvX2N0eC0+Z3JvX3R5cGVzICYKPj4gUlRFX0dST19JUFY0X1ZYTEFOX1RDUF9J UFY0KSA9PQo+PiAgCQlSVEVfR1JPX0lQVjRfVlhMQU5fVENQX0lQVjQ7Cj4+ICAJZG9fdWRwNF9n cm8gPSAoZ3JvX2N0eC0+Z3JvX3R5cGVzICYgUlRFX0dST19VRFBfSVBWNCkgPT0KPj4gIAkJUlRF X0dST19VRFBfSVBWNDsKPj4gKwlkb192eGxhbl91ZHBfZ3JvID0gKGdyb19jdHgtPmdyb190eXBl cyAmCj4+IFJURV9HUk9fSVBWNF9WWExBTl9VRFBfSVBWNCkgPT0KPj4gKwkJUlRFX0dST19JUFY0 X1ZYTEFOX1VEUF9JUFY0Owo+PiAKPj4gIAljdXJyZW50X3RpbWUgPSBydGVfcmR0c2MoKTsKPj4g Cj4+ICAJZm9yIChpID0gMDsgaSA8IG5iX3BrdHM7IGkrKykgewo+PiAgCQlpZiAoSVNfSVBWNF9W WExBTl9UQ1A0X1BLVChwa3RzW2ldLT5wYWNrZXRfdHlwZSkgJiYKPj4gLQkJCQlkb192eGxhbl9n cm8pIHsKPj4gLQkJCWlmIChncm9fdnhsYW5fdGNwNF9yZWFzc2VtYmxlKHBrdHNbaV0sIHZ4bGFu X3RibCwKPj4gKwkJCQlkb192eGxhbl90Y3BfZ3JvKSB7Cj4+ICsJCQlpZiAoZ3JvX3Z4bGFuX3Rj cDRfcmVhc3NlbWJsZShwa3RzW2ldLCB2eGxhbl90Y3BfdGJsLAo+PiArCQkJCQkJY3VycmVudF90 aW1lKSA8IDApCj4+ICsJCQkJdW5wcm9jZXNzX3BrdHNbdW5wcm9jZXNzX251bSsrXSA9IHBrdHNb aV07Cj4+ICsJCX0gZWxzZSBpZiAoSVNfSVBWNF9WWExBTl9VRFA0X1BLVChwa3RzW2ldLT5wYWNr ZXRfdHlwZSkgJiYKPj4gKwkJCQlkb192eGxhbl91ZHBfZ3JvKSB7Cj4+ICsJCQlpZiAoZ3JvX3Z4 bGFuX3VkcDRfcmVhc3NlbWJsZShwa3RzW2ldLAo+PiB2eGxhbl91ZHBfdGJsLAo+PiAgCQkJCQkJ Y3VycmVudF90aW1lKSA8IDApCj4+ICAJCQkJdW5wcm9jZXNzX3BrdHNbdW5wcm9jZXNzX251bSsr XSA9IHBrdHNbaV07Cj4+ICAJCX0gZWxzZSBpZiAoSVNfSVBWNF9UQ1BfUEtUKHBrdHNbaV0tPnBh Y2tldF90eXBlKSAmJgo+PiBAQCAtMzQxLDYgKzM5NywxMyBAQCBzdHJ1Y3QgZ3JvX2N0eCB7Cj4+ ICAJCWxlZnRfbmJfb3V0ID0gbWF4X25iX291dCAtIG51bTsKPj4gIAl9Cj4+IAo+PiArCWlmICgo Z3JvX3R5cGVzICYgUlRFX0dST19JUFY0X1ZYTEFOX1VEUF9JUFY0KSAmJiBtYXhfbmJfb3V0ID4K Pj4gMCkgewo+Cj5NYXhfbmJfb3V0IGlzIHJlYWQtb25seSBhbmQgbm90IHVwZGF0ZWQuIFNvIGl0 IGNhbm5vdCBjaGVjayBpZiAnb3V0JyBhcnJheQo+aGFzIGVub3VnaCBzcGFjZS4gTmVlZCB0byB1 c2UgbGVmdF9uYl9vdXQgaW5zdGVhZC4gVGhpcyBpc3N1ZSBhbHNvIGV4aXN0ZWQKPmluIFVEUC9J UHY0IEdSTywgYW5kIHBsZWFzZSBjb3JyZWN0IHRoZW0gYm90aC4KPgo+PiArCQludW0gKz0gZ3Jv X3Z4bGFuX3VkcDRfdGJsX3RpbWVvdXRfZmx1c2goZ3JvX2N0eC0+dGJsc1sKPj4gKwkJCQlSVEVf R1JPX0lQVjRfVlhMQU5fVURQX0lQVjRfSU5ERVhdLAo+PiArCQkJCWZsdXNoX3RpbWVzdGFtcCwg Jm91dFtudW1dLCBsZWZ0X25iX291dCk7Cj4+ICsJCWxlZnRfbmJfb3V0ID0gbWF4X25iX291dCAt IG51bTsKPj4gKwl9Cj4+ICsKPj4gIAkvKiBJZiBubyBhdmFpbGFibGUgc3BhY2UgaW4gJ291dCcs IHN0b3AgZmx1c2hpbmcuICovCj4+ICAJaWYgKChncm9fdHlwZXMgJiBSVEVfR1JPX1RDUF9JUFY0 KSAmJiBtYXhfbmJfb3V0ID4gMCkgewo+PiAgCQludW0gKz0gZ3JvX3RjcDRfdGJsX3RpbWVvdXRf Zmx1c2goCj4+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX2dyby9ydGVfZ3JvLmggYi9saWIvbGli cnRlX2dyby9ydGVfZ3JvLmgKPj4gaW5kZXggNDcwZjNlZC4uOWY5ZWQ0OSAxMDA2NDQKPj4gLS0t IGEvbGliL2xpYnJ0ZV9ncm8vcnRlX2dyby5oCj4+ICsrKyBiL2xpYi9saWJydGVfZ3JvL3J0ZV9n cm8uaAo+PiBAQCAtMzUsNiArMzUsOSBAQAo+PiAgI2RlZmluZSBSVEVfR1JPX1VEUF9JUFY0X0lO REVYIDIKPj4gICNkZWZpbmUgUlRFX0dST19VRFBfSVBWNCAoMVVMTCA8PCBSVEVfR1JPX1VEUF9J UFY0X0lOREVYKQo+PiAgLyoqPCBVRFAvSVB2NCBHUk8gZmxhZyAqLwo+PiArI2RlZmluZSBSVEVf R1JPX0lQVjRfVlhMQU5fVURQX0lQVjRfSU5ERVggMwo+PiArI2RlZmluZSBSVEVfR1JPX0lQVjRf VlhMQU5fVURQX0lQVjQgKDFVTEwgPDwKPj4gUlRFX0dST19JUFY0X1ZYTEFOX1VEUF9JUFY0X0lO REVYKQo+PiArLyoqPCBWeExBTiBVRFAvSVB2NCBHUk8gZmxhZy4gKi8KPj4gCj4+ICAvKioKPj4g ICAqIFN0cnVjdHVyZSB1c2VkIHRvIGNyZWF0ZSBHUk8gY29udGV4dCBvYmplY3RzIG9yIHVzZWQg dG8gcGFzcwo+PiAtLQo+PiAxLjguMy4xCg==