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 AE70BA04DE; Tue, 22 Sep 2020 03:44:04 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 8CECD1D94C; Tue, 22 Sep 2020 03:44:04 +0200 (CEST) Received: from m1388.mail.163.com (m1388.mail.163.com [220.181.13.88]) by dpdk.org (Postfix) with ESMTP id 621D31D8F1 for ; Tue, 22 Sep 2020 03:44:02 +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=2HTRP 3yvkKbgRFfKBQ+8cO3FFAimBcVY89VMLGdPCOs=; b=CDUr7h7esI7QPMhoboUSD GtiIylOFS+THIhwEV2S95cwwCWZq+7+Sw15JVBNzTjf5oTufqg5SRWVFr/2Nch3p ye7j67Q5abYN/tD65khEirH92RGmfjnmP7OL/Mrw5MZkzzIXeSnRk4AN0/GEf56s avKgU+muQC38fBePfBGyFo= Received: from yang_y_yi$163.com ( [111.207.123.58] ) by ajax-webmail-wmsvr88 (Coremail) ; Tue, 22 Sep 2020 09:44:00 +0800 (CST) X-Originating-IP: [111.207.123.58] Date: Tue, 22 Sep 2020 09:44:00 +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: <37c12b46.f2a.174b36e34c1.Coremail.yang_y_yi@163.com> References: <20200917034959.194372-1-yang_y_yi@163.com> <20200917034959.194372-3-yang_y_yi@163.com> <37c12b46.f2a.174b36e34c1.Coremail.yang_y_yi@163.com> X-CM-CTRLDATA: Se5QPWZvb3Rlcl9odG09MTk5NTI6NTY= MIME-Version: 1.0 Message-ID: <1f01947d.122e.174b37b5d58.Coremail.yang_y_yi@163.com> X-Coremail-Locale: zh_CN X-CM-TRANSID: WMGowAA3YMPgVmlfFZ18AA--.47014W X-CM-SenderInfo: 51dqwsp1b1xqqrwthudrp/1tbiFgqni144NUr5JwABs2 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" QlRXLCBzdGFydF90aW1lIGlzIGNoZWNrZWQgZm9yIHRoZSBmaXJzdCBwYWNrZXQgaW4gYSBmbG93 LCBncm9fdWRwNF9tZXJnZV9pdGVtcyh0YmwsIGopIHdpbGwgbWVyZ2UgYWxsIHRoZSBwYWNrZXRz IGluIHRoaXMgZmxvdyBvbmNlIGlmIHRoZXkgY2FuIGJlIHJlYXNzZW1ibGVkLCBncm9fdWRwNF9t ZXJnZV9pdGVtcyh0YmwsIGopIGRvZXNuJ3QgY2hlY2sgc3RhcnRfdGltZSwgc28gdGhpcyBzdGls bCBjYW4gbGV0IHNvbWUgbmV3IGl0ZW1zIGluIHRoaXMgZmxvdyBoYXZlIGNoYW5jZSB0byBiZSBt ZXJnZWQuCgpBdCAyMDIwLTA5LTIyIDA5OjI5OjM4LCAieWFuZ195X3lpIiA8eWFuZ195X3lpQDE2 My5jb20+IHdyb3RlOgo+VGhhbmtzIEppYXl1LCBJIGhhdmUgZml4ZWQgb3RoZXIgY29tbWVudHMg ZXhjZXB0IHRoaXMgb25lOgo+Cj4KPgo+PlRoZSBpdGVtcyBvZiBhIGZsb3cgYXJlIG9yZGVyZWQg YnkgZnJhZ19vZnQsIGFuZCBzdGFydF90aW1lCj4+b2YgdGhlc2UgaXRlbXMgaXMgbm90IGFsd2F5 cyBpbiBhc2NlbmRpbmcgb3JkZXIuIFRoZXJlZm9yZSwKPj55b3UgY2Fubm90IHNraXAgY2hlY2tp bmcgdGhlIGl0ZW1zIGFmdGVyIHRoZSBpdGVtIHdob3NlCj4+c3RhcnRfdGltZSBpcyBncmVhdGVy IHRoYW4gZmx1c2hfdGltZXN0YW1wLiBUaGlzIGlzc3VlIGFsc28KPj5leGlzdHMgaW4gVURQL0lQ djQgR1JPLCBhbmQgbmVlZCB0byBjb3JyZWN0IHRoZW0gYm90aC4KPgo+Cj5JIHRoaW5rIHRoZSBp c3N1ZSBoZXJlIGlzIGlmIHdlIHNob3VsZCBzdHJpY3RseSBmb2xsb3cgZmx1c2hfdGltZXN0YW1w LCBpdCBpcyBwb3NzaWJsZSB0aGVyZSBhcmUgbmV3IGl0ZW1zIGluIGl0ZW1zIGNoYWluLiB3ZSBo YXZlIGNoYW5jZSB0byBtZXJnZSBtb3JlIHBhY2tldHMgaWYgd2UgZG9uJ3QgZm9sbG93IGZsdXNo X3RpbWVzdGFtcC4gU28gYW4gaWRlYWwgY2hhbmdlIGNhbiBiZSB0aGlzLiBCdXQgaXMgaXQgYWNj ZXB0aWJsZSBpZiB3ZSBkb24ndCB1c2UgZmx1c2hfdGltZXN0YW1wPyBJdCBjYW4gZmx1c2ggc29t ZSBwYWNrZXRzIGluIGFkdmFuY2UgdGhlcmVmb3JlIG1pc3MgbmV4dCBtZXJnZSB3aW5kb3cuIE1h eWJlIGN1cnJlbnQgd2F5IGlzIG1vc3QgcmVzb25hYmxlIGFuZCBhIHRyYWRlb2ZmIGJldHdlZW4g dHdvIGV4dGVyZW0gY2FzZXMuCj4KPgo+Cj4KPgo+ZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfZ3Jv L2dyb191ZHA0LmMgYi9saWIvbGlicnRlX2dyby9ncm9fdWRwNC5jCj5pbmRleCAwNjFlN2IwLi5m ZmEzNWEyIDEwMDY0NAo+LS0tIGEvbGliL2xpYnJ0ZV9ncm8vZ3JvX3VkcDQuYwo+KysrIGIvbGli L2xpYnJ0ZV9ncm8vZ3JvX3VkcDQuYwo+QEAgLTM5MSw3ICszOTEsNiBAQAo+Cj4gICAgICAgICAg ICAgICAgaiA9IHRibC0+Zmxvd3NbaV0uc3RhcnRfaW5kZXg7Cj4gICAgICAgICAgICAgICAgd2hp bGUgKGogIT0gSU5WQUxJRF9BUlJBWV9JTkRFWCkgewo+LSAgICAgICAgICAgICAgICAgICAgICAg aWYgKHRibC0+aXRlbXNbal0uc3RhcnRfdGltZSA8PSBmbHVzaF90aW1lc3RhbXApIHsKPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvX3VkcDRfbWVyZ2VfaXRlbXModGJsLCBqKTsK PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0W2srK10gPSB0YmwtPml0ZW1zW2pd LmZpcnN0c2VnOwo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGJsLT5pdGVt c1tqXS5uYl9tZXJnZWQgPiAxKQo+QEAgLTQwNywxMiArNDA2LDYgQEAKPgo+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpZiAodW5saWtlbHkoayA9PSBuYl9vdXQpKQo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBrOwo+LSAgICAgICAgICAgICAg ICAgICAgICAgfSBlbHNlCj4tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qCj4tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIFRoZSBsZWZ0IHBhY2tldHMgaW4gdGhpcyBm bG93IHdvbid0IGJlCj4tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHRpbWVvdXQu IEdvIHRvIGNoZWNrIG90aGVyIGZsb3dzLgo+LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKi8KPi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gICAgICAgICAg ICAgICAgfQo+ICAgICAgICB9Cj4gICAgICAgIHJldHVybiBrOwo+Cj4KPgo+Cj4KPgo+Cj4KPgo+ QXQgMjAyMC0wOS0yMSAxNTo1NDozNiwgIkh1LCBKaWF5dSIgPGppYXl1Lmh1QGludGVsLmNvbT4g d3JvdGU6Cj4+SGkgWWksCj4+Cj4+U29tZSBjb21tZW50cyBhcmUgaW5saW5lLgo+Pgo+PlRoYW5r cywKPj5KaWF5dQo+Pgo+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPj4+IEZyb206IHlh bmdfeV95aUAxNjMuY29tIDx5YW5nX3lfeWlAMTYzLmNvbT4KPj4+IFNlbnQ6IFRodXJzZGF5LCBT ZXB0ZW1iZXIgMTcsIDIwMjAgMTE6NTAgQU0KPj4+IFRvOiBkZXZAZHBkay5vcmcKPj4+IENjOiBI dSwgSmlheXUgPGppYXl1Lmh1QGludGVsLmNvbT47IHRob21hc0Btb25qYWxvbi5uZXQ7Cj4+PiB5 YW5neWkwMUBpbnNwdXIuY29tOyB5YW5nX3lfeWlAMTYzLmNvbQo+Pj4gU3ViamVjdDogW1BBVENI IHY2IDIvM10gZ3JvOiBhZGQgVlhMQU4gVURQL0lQdjQgR1JPIHN1cHBvcnQKPj4+IAo+Pj4gRnJv bTogWWkgWWFuZyA8eWFuZ3lpMDFAaW5zcHVyLmNvbT4KPj4+IAo+Pj4gVlhMQU4gVURQL0lQdjQg R1JPIGNhbiBoZWxwIGltcHJvdmUgVk0tdG8tVk0gVURQCj4+PiBwZXJmb3JtYW5jZSB3aGVuIFVG TyBvciBHU08gaXMgZW5hYmxlZCBpbiBWTSwgR1JPCj4+PiBtdXN0IGJlIHN1cHBvcnRlZCBpZiBV Rk8gb3IgR1NPIGlzIGVuYWJsZWQsCj4+PiBvdGhlcndpc2UsIHBlcmZvcm1hbmNlIGNhbid0IGdl dCBiaWcgaW1wcm92ZW1lbnQKPj4+IGlmIG9ubHkgR1NPIGlzIHRoZXJlLgo+Pj4gCj4+PiBXaXRo IHRoaXMgZW5hYmxlZCBpbiBEUERLLCBPVlMgRFBESyBjYW4gbGV2ZXJhZ2UgaXQKPj4+IHRvIGlt cHJvdmUgVk0tdG8tVk0gVURQIHBlcmZvcm1hbmNlLCBpdCB3aWxsIHJlYXNzZW1ibGUKPj4+IFZY TEFOIFVEUC9JUHY0IGZyYWdtZW50cyBpbW1lZGlhdGUgYWZ0ZXIgdGhleSBhcmUKPj4+IHJlY2Vp dmVkIGZyb20gYSBwaHlzaWNhbCBOSUMuIEl0IGlzIHZlcnkgaGVscGZ1bCBpbgo+Pj4gT1ZTIERQ REsgVlhMQU4gdXNlIGNhc2UuCj4+PiAKPj4+IE5vdGU6IG91dGVyIElQIElEIGlzbid0IHVzZWQg dG8gY2hlY2sgaWYgdHdvIHBhY2tldHMKPj4+IGFyZSBzYW1lIGZsb3cgYW5kIGNhbiBiZSBtZXJn ZWQgYmVjYXVzZSB0aGUgZGlmZmVyZW5jZQo+Pj4gYmV0d2VlbiBvdXRlciBJUCBJRHMgb2YgdHdv IHBhY2tldHMgaXNuJ3QgYWx3YXlzICsvLTEKPj4+IGluIGNhc2Ugb2YgT1ZTIERQREsuCj4+PiAK Pj4+IFNpZ25lZC1vZmYtYnk6IFlpIFlhbmcgPHlhbmd5aTAxQGluc3B1ci5jb20+Cj4+PiAtLS0K Pj4+ICBsaWIvbGlicnRlX2dyby9ncm9fdWRwNC5oICAgICAgIHwgICAxICsKPj4+ICBsaWIvbGli cnRlX2dyby9ncm9fdnhsYW5fdWRwNC5jIHwgNTQyCj4+PiArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCj4+PiAgbGliL2xpYnJ0ZV9ncm8vZ3JvX3Z4bGFuX3VkcDQuaCB8 IDE1NCArKysrKysrKysrKysKPj4+ICBsaWIvbGlicnRlX2dyby9tZXNvbi5idWlsZCAgICAgIHwg ICAyICstCj4+PiAgbGliL2xpYnJ0ZV9ncm8vcnRlX2dyby5jICAgICAgICB8IDExNSArKysrKysr LS0KPj4+ICBsaWIvbGlicnRlX2dyby9ydGVfZ3JvLmggICAgICAgIHwgICAzICsKPj4+ICA2IGZp bGVzIGNoYW5nZWQsIDc5MCBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkKPj4+ICBjcmVh dGUgbW9kZSAxMDA2NDQgbGliL2xpYnJ0ZV9ncm8vZ3JvX3Z4bGFuX3VkcDQuYwo+Pj4gIGNyZWF0 ZSBtb2RlIDEwMDY0NCBsaWIvbGlicnRlX2dyby9ncm9fdnhsYW5fdWRwNC5oCj4+PiAKPj4+IGRp ZmYgLS1naXQgYS9saWIvbGlicnRlX2dyby9ncm9fdWRwNC5oIGIvbGliL2xpYnJ0ZV9ncm8vZ3Jv X3VkcDQuaAo+Pj4gaW5kZXggMGEwNzhlNC4uZDM4YjM5MyAxMDA2NDQKPj4+IC0tLSBhL2xpYi9s aWJydGVfZ3JvL2dyb191ZHA0LmgKPj4+ICsrKyBiL2xpYi9saWJydGVfZ3JvL2dyb191ZHA0LmgK Pj4+IEBAIC03LDYgKzcsNyBAQAo+Pj4gCj4+PiAgI2luY2x1ZGUgPHJ0ZV9pcC5oPgo+Pj4gICNp bmNsdWRlIDxydGVfdWRwLmg+Cj4+PiArI2luY2x1ZGUgPHJ0ZV92eGxhbi5oPgo+Pj4gCj4+PiAg I2RlZmluZSBJTlZBTElEX0FSUkFZX0lOREVYIDB4ZmZmZmZmZmZVTAo+Pj4gICNkZWZpbmUgR1JP X1VEUDRfVEJMX01BWF9JVEVNX05VTSAoMTAyNFVMICogMTAyNFVMKQo+Pj4gZGlmZiAtLWdpdCBh L2xpYi9saWJydGVfZ3JvL2dyb192eGxhbl91ZHA0LmMgYi9saWIvbGlicnRlX2dyby9ncm9fdnhs YW5fdWRwNC5jCj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4gaW5kZXggMDAwMDAwMC4uNGVl Y2U1Ngo+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4gKysrIGIvbGliL2xpYnJ0ZV9ncm8vZ3JvX3Z4bGFu X3VkcDQuYwo+Pj4gQEAgLTAsMCArMSw1NDIgQEAKPj4+ICsKPj4+ICt1aW50MTZfdAo+Pj4gK2dy b192eGxhbl91ZHA0X3RibF90aW1lb3V0X2ZsdXNoKHN0cnVjdCBncm9fdnhsYW5fdWRwNF90Ymwg KnRibCwKPj4+ICsJCXVpbnQ2NF90IGZsdXNoX3RpbWVzdGFtcCwKPj4+ICsJCXN0cnVjdCBydGVf bWJ1ZiAqKm91dCwKPj4+ICsJCXVpbnQxNl90IG5iX291dCkKPj4+ICt7Cj4+PiArCXVpbnQxNl90 IGsgPSAwOwo+Pj4gKwl1aW50MzJfdCBpLCBqOwo+Pj4gKwl1aW50MzJfdCBtYXhfZmxvd19udW0g PSB0YmwtPm1heF9mbG93X251bTsKPj4+ICsKPj4+ICsJZm9yIChpID0gMDsgaSA8IG1heF9mbG93 X251bTsgaSsrKSB7Cj4+PiArCQlpZiAodW5saWtlbHkodGJsLT5mbG93X251bSA9PSAwKSkKPj4+ ICsJCQlyZXR1cm4gazsKPj4+ICsKPj4+ICsJCWogPSB0YmwtPmZsb3dzW2ldLnN0YXJ0X2luZGV4 Owo+Pj4gKwkJd2hpbGUgKGogIT0gSU5WQUxJRF9BUlJBWV9JTkRFWCkgewo+Pj4gKwkJCWlmICh0 YmwtPml0ZW1zW2pdLmlubmVyX2l0ZW0uc3RhcnRfdGltZSA8PQo+Pj4gKwkJCQkJZmx1c2hfdGlt ZXN0YW1wKSB7Cj4+PiArCQkJCWdyb192eGxhbl91ZHA0X21lcmdlX2l0ZW1zKHRibCwgaik7Cj4+ PiArCQkJCW91dFtrKytdID0gdGJsLT5pdGVtc1tqXS5pbm5lcl9pdGVtLmZpcnN0c2VnOwo+Pj4g KwkJCQlpZiAodGJsLT5pdGVtc1tqXS5pbm5lcl9pdGVtLm5iX21lcmdlZCA+IDEpCj4+PiArCQkJ CQl1cGRhdGVfdnhsYW5faGVhZGVyKCYodGJsLQo+Pj4gPml0ZW1zW2pdKSk7Cj4+PiArCQkJCS8q Cj4+PiArCQkJCSAqIERlbGV0ZSB0aGUgaXRlbSBhbmQgZ2V0IHRoZSBuZXh0IHBhY2tldAo+Pj4g KwkJCQkgKiBpbmRleC4KPj4+ICsJCQkJICovCj4+PiArCQkJCWogPSBkZWxldGVfaXRlbSh0Ymws IGosIElOVkFMSURfQVJSQVlfSU5ERVgpOwo+Pj4gKwkJCQl0YmwtPmZsb3dzW2ldLnN0YXJ0X2lu ZGV4ID0gajsKPj4+ICsJCQkJaWYgKGogPT0gSU5WQUxJRF9BUlJBWV9JTkRFWCkKPj4+ICsJCQkJ CXRibC0+Zmxvd19udW0tLTsKPj4+ICsKPj4+ICsJCQkJaWYgKHVubGlrZWx5KGsgPT0gbmJfb3V0 KSkKPj4+ICsJCQkJCXJldHVybiBrOwo+Pj4gKwkJCX0gZWxzZQo+Pj4gKwkJCQkvKgo+Pj4gKwkJ CQkgKiBUaGUgbGVmdCBwYWNrZXRzIGluIHRoZSBmbG93IHdvbid0IGJlCj4+PiArCQkJCSAqIHRp bWVvdXQuIEdvIHRvIGNoZWNrIG90aGVyIGZsb3dzLgo+Pj4gKwkJCQkgKi8KPj4+ICsJCQkJYnJl YWs7Cj4+Cj4+VGhlIGl0ZW1zIG9mIGEgZmxvdyBhcmUgb3JkZXJlZCBieSBmcmFnX29mdCwgYW5k IHN0YXJ0X3RpbWUKPj5vZiB0aGVzZSBpdGVtcyBpcyBub3QgYWx3YXlzIGluIGFzY2VuZGluZyBv cmRlci4gVGhlcmVmb3JlLAo+PnlvdSBjYW5ub3Qgc2tpcCBjaGVja2luZyB0aGUgaXRlbXMgYWZ0 ZXIgdGhlIGl0ZW0gd2hvc2UKPj5zdGFydF90aW1lIGlzIGdyZWF0ZXIgdGhhbiBmbHVzaF90aW1l c3RhbXAuIFRoaXMgaXNzdWUgYWxzbwo+PmV4aXN0cyBpbiBVRFAvSVB2NCBHUk8sIGFuZCBuZWVk IHRvIGNvcnJlY3QgdGhlbSBib3RoLgo+Pgo+Pj4gKwkJfQo+Pj4gKwl9Cj4+PiArCXJldHVybiBr Owo+Pj4gK30KPj4+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX2dyby9ncm9fdnhsYW5fdWRwNC5o Cj4+PiBiL2xpYi9saWJydGVfZ3JvL2dyb192eGxhbl91ZHA0LmgKPj4+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0Cj4+PiBpbmRleCAwMDAwMDAwLi42YTQyZmIzCj4+PiAtLS0gL2Rldi9udWxsCj4+PiAr KysgYi9saWIvbGlicnRlX2dyby9ncm9fdnhsYW5fdWRwNC5oCj4+PiBAQCAtMCwwICsxLDE1NCBA QAo+Pj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UKPj4+ICsgKiBD b3B5cmlnaHQoYykgMjAyMCBJbnNwdXIgQ29ycG9yYXRpb24KPj4+ICsgKi8KPj4+ICsKPj4+ICsj aWZuZGVmIF9HUk9fVlhMQU5fVURQNF9IXwo+Pj4gKyNkZWZpbmUgX0dST19WWExBTl9VRFA0X0hf Cj4+PiArCj4+PiArI2luY2x1ZGUgImdyb191ZHA0LmgiCj4+PiArCj4+PiArI2RlZmluZSBHUk9f VlhMQU5fVURQNF9UQkxfTUFYX0lURU1fTlVNICgxMDI0VUwgKiAxMDI0VUwpCj4+PiArCj4+PiAr LyogSGVhZGVyIGZpZWxkcyByZXByZXNlbnRpbmcgYSBWeExBTiBmbG93ICovCj4+PiArc3RydWN0 IHZ4bGFuX3VkcDRfZmxvd19rZXkgewo+Pj4gKwlzdHJ1Y3QgdWRwNF9mbG93X2tleSBpbm5lcl9r ZXk7Cj4+PiArCXN0cnVjdCBydGVfdnhsYW5faGRyIHZ4bGFuX2hkcjsKPj4+ICsKPj4+ICsJc3Ry dWN0IHJ0ZV9ldGhlcl9hZGRyIG91dGVyX2V0aF9zYWRkcjsKPj4+ICsJc3RydWN0IHJ0ZV9ldGhl cl9hZGRyIG91dGVyX2V0aF9kYWRkcjsKPj4+ICsKPj4+ICsJdWludDMyX3Qgb3V0ZXJfaXBfc3Jj X2FkZHI7Cj4+PiArCXVpbnQzMl90IG91dGVyX2lwX2RzdF9hZGRyOwo+Pj4gKwo+Pj4gKwkvKiBO b3RlOiBJdCBpcyB1bm5lY2Vzc2FyeSB0byBzYXZlIG91dGVyX3NyY19wb3J0IGhlcmUgYmVjYXVz ZSBpdCBjYW4KPj4+ICsJICogYmUgZGlmZmVyZW50IGZvciBWeExBTiBVRFAgZnJhZ21lbnRzIGZy b20gdGhlIHNhbWUgZmxvdy4KPj4+ICsJICovCj4+PiArCXVpbnQxNl90IG91dGVyX2RzdF9wb3J0 Owo+Pj4gKwo+Pgo+PlRoZSBhYm92ZSBlbXB0eSBsaW5lIGlzIHVubmVjZXNzYXJ5Lgo+Pgo+Pj4g K307Cj4+PiArCj4+PiArCj4+PiArc3RydWN0IGdyb192eGxhbl91ZHA0X2l0ZW0gewo+Pj4gKwlz dHJ1Y3QgZ3JvX3VkcDRfaXRlbSBpbm5lcl9pdGVtOwo+Pj4gKwkvKiBOb3RlOiBWWExBTiBVRFAv SVB2NCBHUk8gbmVlZG4ndCBjaGVjayBvdXRlcl9pcF9pZCBiZWNhdXNlCj4+PiArCSAqIHRoZSBk aWZmZXJlbmNlIGJldHdlZW4gb3V0ZXJfaXBfaWRzIG9mIHR3byByZWNlaXZlZCBwYWNrZXRzCj4+ PiArCSAqIGlzbid0IGFsd2F5cyArLy0xIGluIGNhc2Ugb2YgT1ZTIERQREsuIFNvIG5vIG91dGVy X2lwX2lkCj4+PiArCSAqIGFuZCBvdXRlcl9pc19hdG9taWMgZmllbGRzIGhlcmUuCj4+PiArCSAq Lwo+Pgo+Pkl0IHNlZW1zIHRoZSBhYm92ZSBjb21tZW50cyBmb3Igb3V0ZXIgSVAgSUQgaXMgZW5v dWdoLCBhbmQgbm8gbmVlZAo+PnRvIGhpZ2hsaWdodCBpbiB0aGUgY29tbWl0IGxvZyBhZ2Fpbi4g SG93IGRvIHlvdSB0aGluaz8KPj4KPj4+ICt9Owo+Pj4gKwo+Pj4gZGlmZiAtLWdpdCBhL2xpYi9s aWJydGVfZ3JvL3J0ZV9ncm8uYyBiL2xpYi9saWJydGVfZ3JvL3J0ZV9ncm8uYwo+Pj4gaW5kZXgg ZjYyMzIzMC4uZGI5OTBjZiAxMDA2NDQKPj4+IC0tLSBhL2xpYi9saWJydGVfZ3JvL3J0ZV9ncm8u Ywo+Pj4gKysrIGIvbGliL2xpYnJ0ZV9ncm8vcnRlX2dyby5jCj4+PiBAQCAtMTEsNiArMTEsNyBA QAo+Pj4gICNpbmNsdWRlICJncm9fdGNwNC5oIgo+Pj4gICNpbmNsdWRlICJncm9fdWRwNC5oIgo+ Pj4gICNpbmNsdWRlICJncm9fdnhsYW5fdGNwNC5oIgo+Pj4gKyNpbmNsdWRlICJncm9fdnhsYW5f dWRwNC5oIgo+Pj4gCj4+PiAgLyoKPj4+ICAgKiBHUk8gY29udGV4dCBzdHJ1Y3R1cmUuIEl0IGtl ZXBzIHRoZSB0YWJsZSBzdHJ1Y3R1cmVzLCB3aGljaCBhcmUKPj4+IEBAIC0xMzcsMTkgKzE0OCwy NyBAQCBzdHJ1Y3QgZ3JvX2N0eCB7Cj4+PiAgCXN0cnVjdCBncm9fdWRwNF9pdGVtIHVkcF9pdGVt c1tSVEVfR1JPX01BWF9CVVJTVF9JVEVNX05VTV0KPj4+ID0ge3swfSB9Owo+Pj4gCj4+PiAgCS8q IEFsbG9jYXRlIGEgcmVhc3NlbWJseSB0YWJsZSBmb3IgVlhMQU4gVENQIEdSTyAqLwo+Pj4gLQlz dHJ1Y3QgZ3JvX3Z4bGFuX3RjcDRfdGJsIHZ4bGFuX3RibDsKPj4+IC0Jc3RydWN0IGdyb192eGxh bl90Y3A0X2Zsb3cKPj4+IHZ4bGFuX2Zsb3dzW1JURV9HUk9fTUFYX0JVUlNUX0lURU1fTlVNXTsK Pj4+IC0Jc3RydWN0IGdyb192eGxhbl90Y3A0X2l0ZW0KPj4+IHZ4bGFuX2l0ZW1zW1JURV9HUk9f TUFYX0JVUlNUX0lURU1fTlVNXQo+Pj4gKwlzdHJ1Y3QgZ3JvX3Z4bGFuX3RjcDRfdGJsIHZ4bGFu X3RjcF90Ymw7Cj4+PiArCXN0cnVjdCBncm9fdnhsYW5fdGNwNF9mbG93Cj4+PiB2eGxhbl90Y3Bf Zmxvd3NbUlRFX0dST19NQVhfQlVSU1RfSVRFTV9OVU1dOwo+Pj4gKwlzdHJ1Y3QgZ3JvX3Z4bGFu X3RjcDRfaXRlbQo+Pj4gdnhsYW5fdGNwX2l0ZW1zW1JURV9HUk9fTUFYX0JVUlNUX0lURU1fTlVN XQo+Pj4gIAkJCT0ge3t7MH0sIDAsIDB9IH07Cj4+PiAKPj4+ICsJLyogQWxsb2NhdGUgYSByZWFz c2VtYmx5IHRhYmxlIGZvciBWWExBTiBVRFAgR1JPICovCj4+PiArCXN0cnVjdCBncm9fdnhsYW5f dWRwNF90YmwgdnhsYW5fdWRwX3RibDsKPj4+ICsJc3RydWN0IGdyb192eGxhbl91ZHA0X2Zsb3cK Pj4+IHZ4bGFuX3VkcF9mbG93c1tSVEVfR1JPX01BWF9CVVJTVF9JVEVNX05VTV07Cj4+PiArCXN0 cnVjdCBncm9fdnhsYW5fdWRwNF9pdGVtCj4+PiB2eGxhbl91ZHBfaXRlbXNbUlRFX0dST19NQVhf QlVSU1RfSVRFTV9OVU1dCj4+PiArCQkJPSB7e3swfX0gfTsKPj4+ICsKPj4+ICAJc3RydWN0IHJ0 ZV9tYnVmICp1bnByb2Nlc3NfcGt0c1tuYl9wa3RzXTsKPj4+ICAJdWludDMyX3QgaXRlbV9udW07 Cj4+PiAgCWludDMyX3QgcmV0Owo+Pj4gIAl1aW50MTZfdCBpLCB1bnByb2Nlc3NfbnVtID0gMCwg bmJfYWZ0ZXJfZ3JvID0gbmJfcGt0czsKPj4+IC0JdWludDhfdCBkb190Y3A0X2dybyA9IDAsIGRv X3Z4bGFuX2dybyA9IDAsIGRvX3VkcDRfZ3JvID0gMDsKPj4+ICsJdWludDhfdCBkb190Y3A0X2dy byA9IDAsIGRvX3Z4bGFuX3RjcF9ncm8gPSAwLCBkb191ZHA0X2dybyA9IDAsCj4+PiArCQlkb192 eGxhbl91ZHBfZ3JvID0gMDsKPj4+IAo+Pj4gIAlpZiAodW5saWtlbHkoKHBhcmFtLT5ncm9fdHlw ZXMgJiAoUlRFX0dST19JUFY0X1ZYTEFOX1RDUF9JUFY0IHwKPj4+ICAJCQkJCVJURV9HUk9fVENQ X0lQVjQgfAo+Pj4gKwkJCQkJUlRFX0dST19JUFY0X1ZYTEFOX1VEUF9JUFY0IHwKPj4+ICAJCQkJ CVJURV9HUk9fVURQX0lQVjQpKSA9PSAwKSkKPj4+ICAJCXJldHVybiBuYl9wa3RzOwo+Pj4gCj4+ PiBAQCAtMTYwLDE1ICsxNzksMjggQEAgc3RydWN0IGdyb19jdHggewo+Pj4gCj4+PiAgCWlmIChw YXJhbS0+Z3JvX3R5cGVzICYgUlRFX0dST19JUFY0X1ZYTEFOX1RDUF9JUFY0KSB7Cj4+PiAgCQlm b3IgKGkgPSAwOyBpIDwgaXRlbV9udW07IGkrKykKPj4+IC0JCQl2eGxhbl9mbG93c1tpXS5zdGFy dF9pbmRleCA9IElOVkFMSURfQVJSQVlfSU5ERVg7Cj4+PiAtCj4+PiAtCQl2eGxhbl90YmwuZmxv d3MgPSB2eGxhbl9mbG93czsKPj4+IC0JCXZ4bGFuX3RibC5pdGVtcyA9IHZ4bGFuX2l0ZW1zOwo+ Pj4gLQkJdnhsYW5fdGJsLmZsb3dfbnVtID0gMDsKPj4+IC0JCXZ4bGFuX3RibC5pdGVtX251bSA9 IDA7Cj4+PiAtCQl2eGxhbl90YmwubWF4X2Zsb3dfbnVtID0gaXRlbV9udW07Cj4+PiAtCQl2eGxh bl90YmwubWF4X2l0ZW1fbnVtID0gaXRlbV9udW07Cj4+PiAtCQlkb192eGxhbl9ncm8gPSAxOwo+ Pj4gKwkJCXZ4bGFuX3RjcF9mbG93c1tpXS5zdGFydF9pbmRleCA9Cj4+PiBJTlZBTElEX0FSUkFZ X0lOREVYOwo+Pj4gKwo+Pj4gKwkJdnhsYW5fdGNwX3RibC5mbG93cyA9IHZ4bGFuX3RjcF9mbG93 czsKPj4+ICsJCXZ4bGFuX3RjcF90YmwuaXRlbXMgPSB2eGxhbl90Y3BfaXRlbXM7Cj4+PiArCQl2 eGxhbl90Y3BfdGJsLmZsb3dfbnVtID0gMDsKPj4+ICsJCXZ4bGFuX3RjcF90YmwuaXRlbV9udW0g PSAwOwo+Pj4gKwkJdnhsYW5fdGNwX3RibC5tYXhfZmxvd19udW0gPSBpdGVtX251bTsKPj4+ICsJ CXZ4bGFuX3RjcF90YmwubWF4X2l0ZW1fbnVtID0gaXRlbV9udW07Cj4+PiArCQlkb192eGxhbl90 Y3BfZ3JvID0gMTsKPj4+ICsJfQo+Pj4gKwo+Pj4gKwlpZiAocGFyYW0tPmdyb190eXBlcyAmIFJU RV9HUk9fSVBWNF9WWExBTl9VRFBfSVBWNCkgewo+Pj4gKwkJZm9yIChpID0gMDsgaSA8IGl0ZW1f bnVtOyBpKyspCj4+PiArCQkJdnhsYW5fdWRwX2Zsb3dzW2ldLnN0YXJ0X2luZGV4ID0KPj4+IElO VkFMSURfQVJSQVlfSU5ERVg7Cj4+PiArCj4+PiArCQl2eGxhbl91ZHBfdGJsLmZsb3dzID0gdnhs YW5fdWRwX2Zsb3dzOwo+Pj4gKwkJdnhsYW5fdWRwX3RibC5pdGVtcyA9IHZ4bGFuX3VkcF9pdGVt czsKPj4+ICsJCXZ4bGFuX3VkcF90YmwuZmxvd19udW0gPSAwOwo+Pj4gKwkJdnhsYW5fdWRwX3Ri bC5pdGVtX251bSA9IDA7Cj4+PiArCQl2eGxhbl91ZHBfdGJsLm1heF9mbG93X251bSA9IGl0ZW1f bnVtOwo+Pj4gKwkJdnhsYW5fdWRwX3RibC5tYXhfaXRlbV9udW0gPSBpdGVtX251bTsKPj4+ICsJ CWRvX3Z4bGFuX3VkcF9ncm8gPSAxOwo+Pj4gIAl9Cj4+PiAKPj4+ICAJaWYgKHBhcmFtLT5ncm9f dHlwZXMgJiBSVEVfR1JPX1RDUF9JUFY0KSB7Cj4+PiBAQCAtMjA0LDkgKzIzNiwxOCBAQCBzdHJ1 Y3QgZ3JvX2N0eCB7Cj4+PiAgCQkgKiB3aWxsIGJlIGZsdXNoZWQgZnJvbSB0aGUgdGFibGVzLgo+ Pj4gIAkJICovCj4+PiAgCQlpZiAoSVNfSVBWNF9WWExBTl9UQ1A0X1BLVChwa3RzW2ldLT5wYWNr ZXRfdHlwZSkgJiYKPj4+IC0JCQkJZG9fdnhsYW5fZ3JvKSB7Cj4+PiArCQkJCWRvX3Z4bGFuX3Rj cF9ncm8pIHsKPj4+ICAJCQlyZXQgPSBncm9fdnhsYW5fdGNwNF9yZWFzc2VtYmxlKHBrdHNbaV0s Cj4+PiAtCQkJCQkJCSZ2eGxhbl90YmwsIDApOwo+Pj4gKwkJCQkJCQkmdnhsYW5fdGNwX3RibCwg MCk7Cj4+PiArCQkJaWYgKHJldCA+IDApCj4+PiArCQkJCS8qIE1lcmdlIHN1Y2Nlc3NmdWxseSAq Lwo+Pj4gKwkJCQluYl9hZnRlcl9ncm8tLTsKPj4+ICsJCQllbHNlIGlmIChyZXQgPCAwKQo+Pj4g KwkJCQl1bnByb2Nlc3NfcGt0c1t1bnByb2Nlc3NfbnVtKytdID0gcGt0c1tpXTsKPj4+ICsJCX0g ZWxzZSBpZiAoSVNfSVBWNF9WWExBTl9VRFA0X1BLVChwa3RzW2ldLT5wYWNrZXRfdHlwZSkgJiYK Pj4+ICsJCQkJZG9fdnhsYW5fdWRwX2dybykgewo+Pj4gKwkJCXJldCA9IGdyb192eGxhbl91ZHA0 X3JlYXNzZW1ibGUocGt0c1tpXSwKPj4+ICsJCQkJCQkJJnZ4bGFuX3VkcF90YmwsIDApOwo+Pj4g IAkJCWlmIChyZXQgPiAwKQo+Pj4gIAkJCQkvKiBNZXJnZSBzdWNjZXNzZnVsbHkgKi8KPj4+ICAJ CQkJbmJfYWZ0ZXJfZ3JvLS07Cj4+PiBAQCAtMjM2LDExICsyNzcsMTcgQEAgc3RydWN0IGdyb19j dHggewo+Pj4gIAkJIHx8ICh1bnByb2Nlc3NfbnVtIDwgbmJfcGt0cykpIHsKPj4+ICAJCWkgPSAw Owo+Pj4gIAkJLyogRmx1c2ggYWxsIHBhY2tldHMgZnJvbSB0aGUgdGFibGVzICovCj4+PiAtCQlp ZiAoZG9fdnhsYW5fZ3JvKSB7Cj4+PiAtCQkJaSA9IGdyb192eGxhbl90Y3A0X3RibF90aW1lb3V0 X2ZsdXNoKCZ2eGxhbl90YmwsCj4+PiArCQlpZiAoZG9fdnhsYW5fdGNwX2dybykgewo+Pj4gKwkJ CWkgPSBncm9fdnhsYW5fdGNwNF90YmxfdGltZW91dF9mbHVzaCgmdnhsYW5fdGNwX3RibCwKPj4+ ICAJCQkJCTAsIHBrdHMsIG5iX3BrdHMpOwo+Pj4gIAkJfQo+Pj4gCj4+PiArCQlpZiAoZG9fdnhs YW5fdWRwX2dybykgewo+Pj4gKwkJCWkgKz0KPj4+IGdyb192eGxhbl91ZHA0X3RibF90aW1lb3V0 X2ZsdXNoKCZ2eGxhbl91ZHBfdGJsLAo+Pj4gKwkJCQkJMCwgJnBrdHNbaV0sIG5iX3BrdHMgLSBp KTsKPj4+ICsKPj4+ICsJCX0KPj4+ICsKPj4+ICAJCWlmIChkb190Y3A0X2dybykgewo+Pj4gIAkJ CWkgKz0gZ3JvX3RjcDRfdGJsX3RpbWVvdXRfZmx1c2goJnRjcF90YmwsIDAsCj4+PiAgCQkJCQkm cGt0c1tpXSwgbmJfcGt0cyAtIGkpOwo+Pj4gQEAgLTI2OSwzMyArMzE2LDQyIEBAIHN0cnVjdCBn cm9fY3R4IHsKPj4+ICB7Cj4+PiAgCXN0cnVjdCBydGVfbWJ1ZiAqdW5wcm9jZXNzX3BrdHNbbmJf cGt0c107Cj4+PiAgCXN0cnVjdCBncm9fY3R4ICpncm9fY3R4ID0gY3R4Owo+Pj4gLQl2b2lkICp0 Y3BfdGJsLCAqdWRwX3RibCwgKnZ4bGFuX3RibDsKPj4+ICsJdm9pZCAqdGNwX3RibCwgKnVkcF90 YmwsICp2eGxhbl90Y3BfdGJsLCAqdnhsYW5fdWRwX3RibDsKPj4+ICAJdWludDY0X3QgY3VycmVu dF90aW1lOwo+Pj4gIAl1aW50MTZfdCBpLCB1bnByb2Nlc3NfbnVtID0gMDsKPj4+IC0JdWludDhf dCBkb190Y3A0X2dybywgZG9fdnhsYW5fZ3JvLCBkb191ZHA0X2dybzsKPj4+ICsJdWludDhfdCBk b190Y3A0X2dybywgZG9fdnhsYW5fdGNwX2dybywgZG9fdWRwNF9ncm8sCj4+PiBkb192eGxhbl91 ZHBfZ3JvOwo+Pj4gCj4+PiAgCWlmICh1bmxpa2VseSgoZ3JvX2N0eC0+Z3JvX3R5cGVzICYgKFJU RV9HUk9fSVBWNF9WWExBTl9UQ1BfSVBWNAo+Pj4gfAo+Pj4gIAkJCQkJUlRFX0dST19UQ1BfSVBW NCB8Cj4+PiArCQkJCQlSVEVfR1JPX0lQVjRfVlhMQU5fVURQX0lQVjQgfAo+Pj4gIAkJCQkJUlRF X0dST19VRFBfSVBWNCkpID09IDApKQo+Pj4gIAkJcmV0dXJuIG5iX3BrdHM7Cj4+PiAKPj4+ICAJ dGNwX3RibCA9IGdyb19jdHgtPnRibHNbUlRFX0dST19UQ1BfSVBWNF9JTkRFWF07Cj4+PiAtCXZ4 bGFuX3RibCA9IGdyb19jdHgtPnRibHNbUlRFX0dST19JUFY0X1ZYTEFOX1RDUF9JUFY0X0lOREVY XTsKPj4+ICsJdnhsYW5fdGNwX3RibCA9IGdyb19jdHgtCj4+PiA+dGJsc1tSVEVfR1JPX0lQVjRf VlhMQU5fVENQX0lQVjRfSU5ERVhdOwo+Pj4gIAl1ZHBfdGJsID0gZ3JvX2N0eC0+dGJsc1tSVEVf R1JPX1VEUF9JUFY0X0lOREVYXTsKPj4+ICsJdnhsYW5fdWRwX3RibCA9IGdyb19jdHgtCj4+PiA+ dGJsc1tSVEVfR1JPX0lQVjRfVlhMQU5fVURQX0lQVjRfSU5ERVhdOwo+Pj4gCj4+PiAgCWRvX3Rj cDRfZ3JvID0gKGdyb19jdHgtPmdyb190eXBlcyAmIFJURV9HUk9fVENQX0lQVjQpID09Cj4+PiAg CQlSVEVfR1JPX1RDUF9JUFY0Owo+Pj4gLQlkb192eGxhbl9ncm8gPSAoZ3JvX2N0eC0+Z3JvX3R5 cGVzICYKPj4+IFJURV9HUk9fSVBWNF9WWExBTl9UQ1BfSVBWNCkgPT0KPj4+ICsJZG9fdnhsYW5f dGNwX2dybyA9IChncm9fY3R4LT5ncm9fdHlwZXMgJgo+Pj4gUlRFX0dST19JUFY0X1ZYTEFOX1RD UF9JUFY0KSA9PQo+Pj4gIAkJUlRFX0dST19JUFY0X1ZYTEFOX1RDUF9JUFY0Owo+Pj4gIAlkb191 ZHA0X2dybyA9IChncm9fY3R4LT5ncm9fdHlwZXMgJiBSVEVfR1JPX1VEUF9JUFY0KSA9PQo+Pj4g IAkJUlRFX0dST19VRFBfSVBWNDsKPj4+ICsJZG9fdnhsYW5fdWRwX2dybyA9IChncm9fY3R4LT5n cm9fdHlwZXMgJgo+Pj4gUlRFX0dST19JUFY0X1ZYTEFOX1VEUF9JUFY0KSA9PQo+Pj4gKwkJUlRF X0dST19JUFY0X1ZYTEFOX1VEUF9JUFY0Owo+Pj4gCj4+PiAgCWN1cnJlbnRfdGltZSA9IHJ0ZV9y ZHRzYygpOwo+Pj4gCj4+PiAgCWZvciAoaSA9IDA7IGkgPCBuYl9wa3RzOyBpKyspIHsKPj4+ICAJ CWlmIChJU19JUFY0X1ZYTEFOX1RDUDRfUEtUKHBrdHNbaV0tPnBhY2tldF90eXBlKSAmJgo+Pj4g LQkJCQlkb192eGxhbl9ncm8pIHsKPj4+IC0JCQlpZiAoZ3JvX3Z4bGFuX3RjcDRfcmVhc3NlbWJs ZShwa3RzW2ldLCB2eGxhbl90YmwsCj4+PiArCQkJCWRvX3Z4bGFuX3RjcF9ncm8pIHsKPj4+ICsJ CQlpZiAoZ3JvX3Z4bGFuX3RjcDRfcmVhc3NlbWJsZShwa3RzW2ldLCB2eGxhbl90Y3BfdGJsLAo+ Pj4gKwkJCQkJCWN1cnJlbnRfdGltZSkgPCAwKQo+Pj4gKwkJCQl1bnByb2Nlc3NfcGt0c1t1bnBy b2Nlc3NfbnVtKytdID0gcGt0c1tpXTsKPj4+ICsJCX0gZWxzZSBpZiAoSVNfSVBWNF9WWExBTl9V RFA0X1BLVChwa3RzW2ldLT5wYWNrZXRfdHlwZSkgJiYKPj4+ICsJCQkJZG9fdnhsYW5fdWRwX2dy bykgewo+Pj4gKwkJCWlmIChncm9fdnhsYW5fdWRwNF9yZWFzc2VtYmxlKHBrdHNbaV0sCj4+PiB2 eGxhbl91ZHBfdGJsLAo+Pj4gIAkJCQkJCWN1cnJlbnRfdGltZSkgPCAwKQo+Pj4gIAkJCQl1bnBy b2Nlc3NfcGt0c1t1bnByb2Nlc3NfbnVtKytdID0gcGt0c1tpXTsKPj4+ICAJCX0gZWxzZSBpZiAo SVNfSVBWNF9UQ1BfUEtUKHBrdHNbaV0tPnBhY2tldF90eXBlKSAmJgo+Pj4gQEAgLTM0MSw2ICsz OTcsMTMgQEAgc3RydWN0IGdyb19jdHggewo+Pj4gIAkJbGVmdF9uYl9vdXQgPSBtYXhfbmJfb3V0 IC0gbnVtOwo+Pj4gIAl9Cj4+PiAKPj4+ICsJaWYgKChncm9fdHlwZXMgJiBSVEVfR1JPX0lQVjRf VlhMQU5fVURQX0lQVjQpICYmIG1heF9uYl9vdXQgPgo+Pj4gMCkgewo+Pgo+Pk1heF9uYl9vdXQg aXMgcmVhZC1vbmx5IGFuZCBub3QgdXBkYXRlZC4gU28gaXQgY2Fubm90IGNoZWNrIGlmICdvdXQn IGFycmF5Cj4+aGFzIGVub3VnaCBzcGFjZS4gTmVlZCB0byB1c2UgbGVmdF9uYl9vdXQgaW5zdGVh ZC4gVGhpcyBpc3N1ZSBhbHNvIGV4aXN0ZWQKPj5pbiBVRFAvSVB2NCBHUk8sIGFuZCBwbGVhc2Ug Y29ycmVjdCB0aGVtIGJvdGguCj4+Cj4+PiArCQludW0gKz0gZ3JvX3Z4bGFuX3VkcDRfdGJsX3Rp bWVvdXRfZmx1c2goZ3JvX2N0eC0+dGJsc1sKPj4+ICsJCQkJUlRFX0dST19JUFY0X1ZYTEFOX1VE UF9JUFY0X0lOREVYXSwKPj4+ICsJCQkJZmx1c2hfdGltZXN0YW1wLCAmb3V0W251bV0sIGxlZnRf bmJfb3V0KTsKPj4+ICsJCWxlZnRfbmJfb3V0ID0gbWF4X25iX291dCAtIG51bTsKPj4+ICsJfQo+ Pj4gKwo+Pj4gIAkvKiBJZiBubyBhdmFpbGFibGUgc3BhY2UgaW4gJ291dCcsIHN0b3AgZmx1c2hp bmcuICovCj4+PiAgCWlmICgoZ3JvX3R5cGVzICYgUlRFX0dST19UQ1BfSVBWNCkgJiYgbWF4X25i X291dCA+IDApIHsKPj4+ICAJCW51bSArPSBncm9fdGNwNF90YmxfdGltZW91dF9mbHVzaCgKPj4+ IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX2dyby9ydGVfZ3JvLmggYi9saWIvbGlicnRlX2dyby9y dGVfZ3JvLmgKPj4+IGluZGV4IDQ3MGYzZWQuLjlmOWVkNDkgMTAwNjQ0Cj4+PiAtLS0gYS9saWIv bGlicnRlX2dyby9ydGVfZ3JvLmgKPj4+ICsrKyBiL2xpYi9saWJydGVfZ3JvL3J0ZV9ncm8uaAo+ Pj4gQEAgLTM1LDYgKzM1LDkgQEAKPj4+ICAjZGVmaW5lIFJURV9HUk9fVURQX0lQVjRfSU5ERVgg Mgo+Pj4gICNkZWZpbmUgUlRFX0dST19VRFBfSVBWNCAoMVVMTCA8PCBSVEVfR1JPX1VEUF9JUFY0 X0lOREVYKQo+Pj4gIC8qKjwgVURQL0lQdjQgR1JPIGZsYWcgKi8KPj4+ICsjZGVmaW5lIFJURV9H Uk9fSVBWNF9WWExBTl9VRFBfSVBWNF9JTkRFWCAzCj4+PiArI2RlZmluZSBSVEVfR1JPX0lQVjRf VlhMQU5fVURQX0lQVjQgKDFVTEwgPDwKPj4+IFJURV9HUk9fSVBWNF9WWExBTl9VRFBfSVBWNF9J TkRFWCkKPj4+ICsvKio8IFZ4TEFOIFVEUC9JUHY0IEdSTyBmbGFnLiAqLwo+Pj4gCj4+PiAgLyoq Cj4+PiAgICogU3RydWN0dXJlIHVzZWQgdG8gY3JlYXRlIEdSTyBjb250ZXh0IG9iamVjdHMgb3Ig dXNlZCB0byBwYXNzCj4+PiAtLQo+Pj4gMS44LjMuMQo=