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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A74F2C433EF for ; Mon, 20 Jun 2022 03:45:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238065AbiFTDpu (ORCPT ); Sun, 19 Jun 2022 23:45:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38374 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237556AbiFTDpm (ORCPT ); Sun, 19 Jun 2022 23:45:42 -0400 Received: from eu-smtp-delivery-151.mimecast.com (eu-smtp-delivery-151.mimecast.com [185.58.86.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 0A0FABE3A for ; Sun, 19 Jun 2022 20:45:40 -0700 (PDT) Received: from AcuMS.aculab.com (156.67.243.121 [156.67.243.121]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id uk-mta-107-dUMJdEzRPlCIYXE-RHNvGQ-1; Mon, 20 Jun 2022 04:45:37 +0100 X-MC-Unique: dUMJdEzRPlCIYXE-RHNvGQ-1 Received: from AcuMS.Aculab.com (fd9f:af1c:a25b:0:994c:f5c2:35d6:9b65) by AcuMS.aculab.com (fd9f:af1c:a25b:0:994c:f5c2:35d6:9b65) with Microsoft SMTP Server (TLS) id 15.0.1497.36; Mon, 20 Jun 2022 04:45:35 +0100 Received: from AcuMS.Aculab.com ([fe80::994c:f5c2:35d6:9b65]) by AcuMS.aculab.com ([fe80::994c:f5c2:35d6:9b65%12]) with mapi id 15.00.1497.036; Mon, 20 Jun 2022 04:45:35 +0100 From: David Laight To: 'Jose Alonso' , "netdev@vger.kernel.org" Subject: RE: [PATCH v2] net: usb: ax88179_178a: ax88179_rx_fixup corrections Thread-Topic: [PATCH v2] net: usb: ax88179_178a: ax88179_rx_fixup corrections Thread-Index: AQHYg3cHZx6N3hYII06ugHNzChs73a1Xof0g Date: Mon, 20 Jun 2022 03:45:35 +0000 Message-ID: <6dacc318fcb1425e85168a6628846258@AcuMS.aculab.com> References: <24289408a3d663fa2efedf646b046eb8250772f1.camel@gmail.com> In-Reply-To: <24289408a3d663fa2efedf646b046eb8250772f1.camel@gmail.com> Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.202.205.107] MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=C51A453 smtp.mailfrom=david.laight@aculab.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: aculab.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org RnJvbTogSm9zZSBBbG9uc28NCj4gU2VudDogMTkgSnVuZSAyMDIyIDAxOjU0DQo+IA0KPiBjb3Jy ZWN0aW9uczoNCj4gLSB0aGUgc2l6ZSBjaGVjayBvZiB0aGUgYm91bmRzIG9mIHRoZSBtZXRhZGF0 YSBhcnJheS4NCj4gLSB0aGUgaGFuZGxpbmcgb2YgdGhlIG1ldGFkYXRhIGFycmF5Lg0KPiAgICBU aGUgY3VycmVudCBjb2RlIGlzIGFsbHdheXMgZXhpdGluZyB3aXRoIHJldHVybiAwDQo+ICAgIHdo aWxlIHRyeWluZyB0byBhY2Nlc3MgcGt0X2hkciBvdXQgb2YgbWV0YWRhdGEgYXJyYXkgYW5kDQo+ ICAgIGdlbmVyYXRpbmcgUlggRXJyb3JzLg0KPiAtIGF2b2lkIGNoYW5naW5nIHRoZSBza2ItPmRh dGEgY29udGVudCAocmV2ZXJzZSBieXRlcykgaW4gY2FzZQ0KPiAgICBvZiBiaWctZW5kaWFuLiBs ZTMyX3RvX2NwdXMocGt0X2hkcikNCj4gDQo+IFRlc3RlZCB3aXRoOiAwYjk1OjE3OTAgQVNJWCBF bGVjdHJvbmljcyBDb3JwLiBBWDg4MTc5IEdpZ2FiaXQgRXRoZXJuZXQNCj4gDQo+IFNpZ25lZC1v ZmYtYnk6IEpvc2UgQWxvbnNvIDxqb2Fsb25zb2ZAZ21haWwuY29tPg0KPiANCj4gLS0tDQo+IA0K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jIGIvZHJpdmVycy9u ZXQvdXNiL2F4ODgxNzlfMTc4YS5jDQo+IGluZGV4IDQ3MDRlZDZmMDBlZi4uZDJmODY4ZGQzYzEw IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL25ldC91c2IvYXg4ODE3OV8xNzhhLmMNCj4gKysrIGIv ZHJpdmVycy9uZXQvdXNiL2F4ODgxNzlfMTc4YS5jDQo+IEBAIC0xNDQ1LDE4ICsxNDQ1LDE4IEBA IHN0YXRpYyB2b2lkIGF4ODgxNzlfdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVz Yl9pbnRlcmZhY2UgKmludGYpDQo+ICB9DQo+IA0KPiAgc3RhdGljIHZvaWQNCj4gLWF4ODgxNzlf cnhfY2hlY2tzdW0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyICpwa3RfaGRyKQ0KPiArYXg4ODE3 OV9yeF9jaGVja3N1bShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgcGt0X2hkcl92YWwpDQo+ICB7 DQo+ICAJc2tiLT5pcF9zdW1tZWQgPSBDSEVDS1NVTV9OT05FOw0KPiANCj4gIAkvKiBjaGVja3N1 bSBlcnJvciBiaXQgaXMgc2V0ICovDQo+IC0JaWYgKCgqcGt0X2hkciAmIEFYX1JYSERSX0wzQ1NV TV9FUlIpIHx8DQo+IC0JICAgICgqcGt0X2hkciAmIEFYX1JYSERSX0w0Q1NVTV9FUlIpKQ0KPiAr CWlmICgocGt0X2hkcl92YWwgJiBBWF9SWEhEUl9MM0NTVU1fRVJSKSB8fA0KPiArCSAgICAocGt0 X2hkcl92YWwgJiBBWF9SWEhEUl9MNENTVU1fRVJSKSkNCj4gIAkJcmV0dXJuOw0KPiANCj4gIAkv KiBJdCBtdXN0IGJlIGEgVENQIG9yIFVEUCBwYWNrZXQgd2l0aCBhIHZhbGlkIGNoZWNrc3VtICov DQo+IC0JaWYgKCgoKnBrdF9oZHIgJiBBWF9SWEhEUl9MNF9UWVBFX01BU0spID09IEFYX1JYSERS X0w0X1RZUEVfVENQKSB8fA0KPiAtCSAgICAoKCpwa3RfaGRyICYgQVhfUlhIRFJfTDRfVFlQRV9N QVNLKSA9PSBBWF9SWEhEUl9MNF9UWVBFX1VEUCkpDQo+ICsJaWYgKCgocGt0X2hkcl92YWwgJiBB WF9SWEhEUl9MNF9UWVBFX01BU0spID09IEFYX1JYSERSX0w0X1RZUEVfVENQKSB8fA0KPiArCSAg ICAoKHBrdF9oZHJfdmFsICYgQVhfUlhIRFJfTDRfVFlQRV9NQVNLKSA9PSBBWF9SWEhEUl9MNF9U WVBFX1VEUCkpDQo+ICAJCXNrYi0+aXBfc3VtbWVkID0gQ0hFQ0tTVU1fVU5ORUNFU1NBUlk7DQo+ ICB9DQo+IA0KPiBAQCAtMTQ2NywxMSArMTQ2Nyw0NyBAQCBzdGF0aWMgaW50IGF4ODgxNzlfcnhf Zml4dXAoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQ0KPiAgCXUzMiBy eF9oZHI7DQo+ICAJdTE2IGhkcl9vZmY7DQo+ICAJdTMyICpwa3RfaGRyOw0KPiArCXUzMiBwa3Rf aGRyX3ZhbDsNCj4gDQo+ICAJLyogQXQgdGhlIGVuZCBvZiB0aGUgU0tCLCB0aGVyZSdzIGEgaGVh ZGVyIHRlbGxpbmcgdXMgaG93IG1hbnkgcGFja2V0cw0KPiAgCSAqIGFyZSBidW5kbGVkIGludG8g dGhpcyBidWZmZXIgYW5kIHdoZXJlIHdlIGNhbiBmaW5kIGFuIGFycmF5IG9mDQo+ICAJICogcGVy LXBhY2tldCBtZXRhZGF0YSAod2hpY2ggY29udGFpbnMgZWxlbWVudHMgZW5jb2RlZCBpbnRvIHUx NikuDQo+ICAJICovDQo+ICsNCj4gKwkvKiBTS0IgY29udGVudHMgZm9yIGN1cnJlbnQgZmlybXdh cmU6DQo+ICsJICogICA8cGFja2V0IDE+IDxwYWRkaW5nPg0KPiArCSAqICAgLi4uDQo+ICsJICog ICA8cGFja2V0IE4+IDxwYWRkaW5nPg0KPiArCSAqICAgPHBlci1wYWNrZXQgbWV0YWRhdGEgZW50 cnkgMT4gPGR1bW15IGhlYWRlcj4NCj4gKwkgKiAgIC4uLg0KPiArCSAqICAgPHBlci1wYWNrZXQg bWV0YWRhdGEgZW50cnkgTj4gPGR1bW15IGhlYWRlcj4NCj4gKwkgKiAgIDxwYWRkaW5nMj4gPHJ4 X2hkcj4NCj4gKwkgKg0KPiArCSAqIHdoZXJlOg0KPiArCSAqICAgPHBhY2tldCBOPiBjb250YWlu cyBwa3RfbGVuIGJ5dGVzOg0KPiArCSAqCQkyIGJ5dGVzIG9mIElQIGFsaWdubWVudCBwc2V1ZG8g aGVhZGVyDQo+ICsJICoJCXBhY2tldCByZWNlaXZlZA0KPiArCSAqICAgPHBlci1wYWNrZXQgbWV0 YWRhdGEgZW50cnkgTj4gY29udGFpbnMgNCBieXRlczoNCj4gKwkgKgkJcGt0X2xlbiBhbmQgZmll bGRzIEFYX1JYSERSXyoNCj4gKwkgKiAgIDxwYWRkaW5nPgkwLTcgYnl0ZXMgdG8gdGVybWluYXRl IGF0DQo+ICsJICoJCTggYnl0ZXMgYm91bmRhcnkgKDY0LWJpdCkuDQo+ICsJICogICA8cGFkZGlu ZzI+IDQgYnl0ZXMNCj4gKwkgKiAgIDxkdW1teS1oZWFkZXI+IGNvbnRhaW5zIDQgYnl0ZXM6DQo+ ICsJICoJCXBrdF9sZW49MCAmIEFYX1JYSERSX0RST1BfRVJSDQo+ICsJICogICA8cngtaGRyPglj b250YWlucyA0IGJ5dGVzOg0KPiArCSAqCQlwa3RfY250IGFuZCBoZHJfb2ZmIChvZmZzZXQgb2YN Cj4gKwkgKgkJICA8cGVyLXBhY2tldCBtZXRhZGF0YSBlbnRyeSAxPikNCj4gKwkgKg0KPiArCSAq IHBrdF9jbnQgaXMgbnVtYmVyIG9mIGVudHJ5cyBpbiB0aGUgcGVyLXBhY2tldCBtZXRhZGF0YS4N Cj4gKwkgKiBJbiBjdXJyZW50IGZpcm13YXJlIHRoZXJlIGlzIDIgZW50cnlzIHBlciBwYWNrZXQu DQo+ICsJICogVGhlIGZpcnN0IHBvaW50cyB0byB0aGUgcGFja2V0IGFuZCB0aGUNCj4gKwkgKiAg c2Vjb25kIGlzIGEgZHVtbXkgaGVhZGVyLg0KPiArCSAqIFRoaXMgd2FzIGRvbmUgcHJvYmFibHkg dG8gYWxpZ24gZmllbGRzIGluIDY0LWJpdCBhbmQNCj4gKwkgKiAgbWFpbnRhaW4gY29tcGF0aWJp bGl0eSB3aXRoIG9sZCBmaXJtd2FyZS4NCj4gKwkgKiBUaGlzIGNvZGUgYXNzdW1lcyB0aGF0IDxk dW1teSBoZWFkZXI+IGFuZCA8cGFkZGluZzI+IGFyZQ0KPiArCSAqICBvcHRpb25hbC4NCj4gKwkg Ki8NCj4gKw0KPiAgCWlmIChza2ItPmxlbiA8IDQpDQo+ICAJCXJldHVybiAwOw0KPiAgCXNrYl90 cmltKHNrYiwgc2tiLT5sZW4gLSA0KTsNCj4gQEAgLTE0ODUsNTEgKzE1MjEsNjMgQEAgc3RhdGlj IGludCBheDg4MTc5X3J4X2ZpeHVwKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHNrX2J1ZmYg KnNrYikNCj4gIAkvKiBNYWtlIHN1cmUgdGhhdCB0aGUgYm91bmRzIG9mIHRoZSBtZXRhZGF0YSBh cnJheSBhcmUgaW5zaWRlIHRoZSBTS0INCj4gIAkgKiAoYW5kIGluIGZyb250IG9mIHRoZSBjb3Vu dGVyIGF0IHRoZSBlbmQpLg0KPiAgCSAqLw0KPiAtCWlmIChwa3RfY250ICogMiArIGhkcl9vZmYg PiBza2ItPmxlbikNCj4gKwlpZiAocGt0X2NudCAqIDQgKyBoZHJfb2ZmID4gc2tiLT5sZW4pDQo+ ICAJCXJldHVybiAwOw0KPiAgCXBrdF9oZHIgPSAodTMyICopKHNrYi0+ZGF0YSArIGhkcl9vZmYp Ow0KPiANCj4gIAkvKiBQYWNrZXRzIG11c3Qgbm90IG92ZXJsYXAgdGhlIG1ldGFkYXRhIGFycmF5 ICovDQo+ICAJc2tiX3RyaW0oc2tiLCBoZHJfb2ZmKTsNCj4gDQo+IC0JZm9yICg7IDsgcGt0X2Nu dC0tLCBwa3RfaGRyKyspIHsNCj4gKwlmb3IgKDsgcGt0X2NudCA+IDA7IHBrdF9jbnQtLSwgcGt0 X2hkcisrKSB7DQo+ICAJCXUxNiBwa3RfbGVuOw0KPiArCQl1MTYgcGt0X2xlbl9idWY7DQo+IA0K PiAtCQlsZTMyX3RvX2NwdXMocGt0X2hkcik7DQo+IC0JCXBrdF9sZW4gPSAoKnBrdF9oZHIgPj4g MTYpICYgMHgxZmZmOw0KPiArCQlwa3RfaGRyX3ZhbCA9IGdldF91bmFsaWduZWRfbGUzMihwa3Rf aGRyKTsNCj4gKwkJcGt0X2xlbiA9IChwa3RfaGRyX3ZhbCA+PiAxNikgJiAweDFmZmY7DQo+ICsJ CXBrdF9sZW5fYnVmID0gKHBrdF9sZW4gKyA3KSAmIDB4ZmZmODsNCj4gDQo+IC0JCWlmIChwa3Rf bGVuID4gc2tiLT5sZW4pDQo+ICsJCS8qIFNraXAgZHVtbXkgaGVhZGVyIHVzZWQgZm9yIGFsaWdu bWVudA0KPiArCQkgKi8NCj4gKwkJaWYgKHBrdF9sZW4gPT0gMCkNCj4gKwkJCWNvbnRpbnVlOw0K PiArDQo+ICsJCWlmIChwa3RfbGVuX2J1ZiA+IHNrYi0+bGVuKQ0KPiAgCQkJcmV0dXJuIDA7DQo+ IA0KPiAgCQkvKiBDaGVjayBDUkMgb3IgcnVudCBwYWNrZXQgKi8NCj4gLQkJaWYgKCgoKnBrdF9o ZHIgJiAoQVhfUlhIRFJfQ1JDX0VSUiB8IEFYX1JYSERSX0RST1BfRVJSKSkgPT0gMCkgJiYNCj4g LQkJICAgIHBrdF9sZW4gPj0gMiArIEVUSF9ITEVOKSB7DQo+IC0JCQlib29sIGxhc3QgPSAocGt0 X2NudCA9PSAwKTsNCj4gLQ0KPiAtCQkJaWYgKGxhc3QpIHsNCj4gLQkJCQlheF9za2IgPSBza2I7 DQo+IC0JCQl9IGVsc2Ugew0KPiAtCQkJCWF4X3NrYiA9IHNrYl9jbG9uZShza2IsIEdGUF9BVE9N SUMpOw0KPiAtCQkJCWlmICghYXhfc2tiKQ0KPiAtCQkJCQlyZXR1cm4gMDsNCj4gLQkJCX0NCj4g LQkJCWF4X3NrYi0+bGVuID0gcGt0X2xlbjsNCj4gLQkJCS8qIFNraXAgSVAgYWxpZ25tZW50IHBz ZXVkbyBoZWFkZXIgKi8NCj4gLQkJCXNrYl9wdWxsKGF4X3NrYiwgMik7DQo+IC0JCQlza2Jfc2V0 X3RhaWxfcG9pbnRlcihheF9za2IsIGF4X3NrYi0+bGVuKTsNCj4gLQkJCWF4X3NrYi0+dHJ1ZXNp emUgPSBwa3RfbGVuICsgc2l6ZW9mKHN0cnVjdCBza19idWZmKTsNCg0KWW91J3ZlICdsb3N0JyB0 aGlzIGxpZS4NCklJUkMgdGhlICdza2InIGFyZSBhbGxvY2F0ZWQgd2l0aCA2NGsgYnVmZmVyIHNw YWNlLg0KSSdtIG5vdCBhdCBhbGwgc3VyZSBob3cgdGhlIGJ1ZmZlciBzcGFjZSBvZiBza2IgdGhh dCBhcmUgY2xvbmVkDQppbnRvIG11bHRpcGxlIHJ4IGJ1ZmZlcnMgYXJlIHN1cHBvc2VkIHRvIGJl IGFjY291bnRlZCBmb3IuDQoNCkRvZXMgdGhpcyBkcml2ZXIgZXZlciBjb3B5IHRoZSBkYXRhIGZv ciBzaG9ydCBmcmFtZXM/DQoNCkkgc3VzcGVjdCB0aGUgb25seSBzYW1lIGFwcHJvYWNoIGl0IGRv IGRpc2FibGUgaGFyZHdhcmUgUlNPLg0KU2V0IHRoZSByZWNlaXZlIHNrYiBhbmQgVVNCIGJ1ZmZl ciBzaXplIHRvIDJrLg0KQ29weSBhbGwgdGhlIHNtYWxsIGZyYW1lcyBpbnRvICdmcmVzaCcgc2ti Lg0KTGVhdmUgYW55IGxhcmdlIGZyYW1lIHdpdGggdGhlIGZ1bGwgJ3RydWVzaXplJy4NCg0KQWx0 aG91Z2ggaXQgbWF5IGJlIG5lY2Vzc2FyeSB0byBjb21wbGV0ZWx5IHJld3JpdGUgdGhlIHVzYm5l dA0KY29kZSBmb3IgVVNCMy4NCkluc3RlYWQgb2YgcHV0dGluZyB0aGUgYnVmZmVycyBvZiBsYXJn ZSBza2IgaW50byB0aGUgWEhDSSByaW5nDQpwdXQgc2luZ2xlIFVTQjMtc2l6ZWQgYnVmZmVycyBp bnRvIHRoZSByaW5nIGFuZCB0aGVuIGJ1aWxkDQp0aGUgc2tiIG91dCBvZiB0aGUgcmVjZWl2ZWQg ZGF0YSBmcmFnbWVudHMuDQoNCj4gLQkJCWF4ODgxNzlfcnhfY2hlY2tzdW0oYXhfc2tiLCBwa3Rf aGRyKTsNCj4gKwkJaWYgKChwa3RfaGRyX3ZhbCAmIChBWF9SWEhEUl9DUkNfRVJSIHwgQVhfUlhI RFJfRFJPUF9FUlIpKSB8fA0KPiArCQkgICAgcGt0X2xlbiA8IDIgKyBFVEhfSExFTikgew0KPiAr CQkJZGV2LT5uZXQtPnN0YXRzLnJ4X2Vycm9ycysrOw0KPiArCQkJc2tiX3B1bGwoc2tiLCBwa3Rf bGVuX2J1Zik7DQo+ICsJCQljb250aW51ZTsNCj4gKwkJfQ0KPiANCj4gLQkJCWlmIChsYXN0KQ0K PiAtCQkJCXJldHVybiAxOw0KPiArCQkvKiBsYXN0IHBhY2tldCAqLw0KPiArCQlpZiAocGt0X2xl bl9idWYgPT0gc2tiLT5sZW4pIHsNCj4gKwkJCXNrYl90cmltKHNrYiwgcGt0X2xlbik7DQo+IA0K PiAtCQkJdXNibmV0X3NrYl9yZXR1cm4oZGV2LCBheF9za2IpOw0KPiArCQkJLyogU2tpcCBJUCBh bGlnbm1lbnQgcHNldWRvIGhlYWRlciAqLw0KPiArCQkJc2tiX3B1bGwoc2tiLCAyKTsNCj4gKw0K PiArCQkJYXg4ODE3OV9yeF9jaGVja3N1bShza2IsIHBrdF9oZHJfdmFsKTsNCj4gKwkJCXJldHVy biAxOw0KPiAgCQl9DQo+IA0KPiAtCQkvKiBUcmltIHRoaXMgcGFja2V0IGF3YXkgZnJvbSB0aGUg U0tCICovDQo+IC0JCWlmICghc2tiX3B1bGwoc2tiLCAocGt0X2xlbiArIDcpICYgMHhGRkY4KSkN Cj4gKwkJYXhfc2tiID0gc2tiX2Nsb25lKHNrYiwgR0ZQX0FUT01JQyk7DQo+ICsJCWlmICghYXhf c2tiKQ0KDQpUaGVyZSBvdWdodCB0byBiZSBhbiBlcnJvciBjb3VudCBoZXJlLg0KSSBrbm93IHRo ZXJlIHdhc24ndCBvbmUgYmVmb3JlLg0KDQoJRGF2aWQNCg0KPiAgCQkJcmV0dXJuIDA7DQo+ICsJ CXNrYl90cmltKGF4X3NrYiwgcGt0X2xlbik7DQo+ICsNCj4gKwkJLyogU2tpcCBJUCBhbGlnbm1l bnQgcHNldWRvIGhlYWRlciAqLw0KPiArCQlza2JfcHVsbChheF9za2IsIDIpOw0KPiArDQo+ICsJ CWF4ODgxNzlfcnhfY2hlY2tzdW0oYXhfc2tiLCBwa3RfaGRyX3ZhbCk7DQo+ICsJCXVzYm5ldF9z a2JfcmV0dXJuKGRldiwgYXhfc2tiKTsNCj4gKw0KPiArCQlza2JfcHVsbChza2IsIHBrdF9sZW5f YnVmKTsNCj4gIAl9DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gIH0NCj4gDQo+ICBzdGF0aWMgc3Ry dWN0IHNrX2J1ZmYgKg0KPiANCj4gLS0NCg0KLQ0KUmVnaXN0ZXJlZCBBZGRyZXNzIExha2VzaWRl LCBCcmFtbGV5IFJvYWQsIE1vdW50IEZhcm0sIE1pbHRvbiBLZXluZXMsIE1LMSAxUFQsIFVLDQpS ZWdpc3RyYXRpb24gTm86IDEzOTczODYgKFdhbGVzKQ0K