From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Dai, Wei" Subject: Re: 2nd try: problem with ixgbe_dev_link_update() for multi-speed fiber [was] Re: [PATCH v4] net/ixgbe: ensure link status is updated Date: Tue, 23 May 2017 07:41:39 +0000 Message-ID: <49759EB36A64CF4892C1AFEC9231E8D650A80C5B@PGSMSX106.gar.corp.intel.com> References: <49759EB36A64CF4892C1AFEC9231E8D650A662DC@PGSMSX101.gar.corp.intel.com> <1493305422-10611-1-git-send-email-laurent.hardy@6wind.com> <1160d98e-93a7-c14c-82a9-0944a2df6e5c@cisco.com> <3aa30d0c-bd00-af5c-f8fa-c081e86adadb@cisco.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: "Yigit, Ferruh" , "Zhang, Helin" , "Ananyev, Konstantin" , "olivier.matz@6wind.com" To: "Roger B. Melton" , Laurent Hardy , "dev@dpdk.org" Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id ADF2420F for ; Tue, 23 May 2017 09:41:59 +0200 (CEST) Content-Language: en-US List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" SGksIFJvZ2VyDQpTb3JyeSBmb3IgdHlwbyBlcnJvci4gWW91IHNob3VsZCBzZXQgLS1sb2ctbGV2 ZWw9OA0KDQpSZWdhcmRzDQotV2VpDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4g RnJvbTogRGFpLCBXZWkNCj4gU2VudDogVHVlc2RheSwgTWF5IDIzLCAyMDE3IDM6MjQgUE0NCj4g VG86ICdSb2dlciBCLiBNZWx0b24nIDxybWVsdG9uQGNpc2NvLmNvbT47IExhdXJlbnQgSGFyZHkN Cj4gPGxhdXJlbnQuaGFyZHlANndpbmQuY29tPjsgZGV2QGRwZGsub3JnDQo+IENjOiBZaWdpdCwg RmVycnVoIDxmZXJydWgueWlnaXRAaW50ZWwuY29tPjsgWmhhbmcsIEhlbGluDQo+IDxoZWxpbi56 aGFuZ0BpbnRlbC5jb20+OyBBbmFueWV2LCBLb25zdGFudGluDQo+IDxrb25zdGFudGluLmFuYW55 ZXZAaW50ZWwuY29tPjsgb2xpdmllci5tYXR6QDZ3aW5kLmNvbQ0KPiBTdWJqZWN0OiBSRTogMm5k IHRyeTogcHJvYmxlbSB3aXRoIGl4Z2JlX2Rldl9saW5rX3VwZGF0ZSgpIGZvciBtdWx0aS1zcGVl ZA0KPiBmaWJlciBbd2FzXSBSZTogW2RwZGstZGV2XSBbUEFUQ0ggdjRdIG5ldC9peGdiZTogZW5z dXJlIGxpbmsgc3RhdHVzIGlzIHVwZGF0ZWQNCj4gDQo+IEhpLCBSb2dlcg0KPiBTb3JyeSBmb3Ig bGF0ZSByZXNwb25zZSBhcyB3ZSBhcmUgYnVzeSB3aXRoIG90aGVyIGhpZ2hlciBwcmlvcml0eSB0 YXNrLg0KPiBpeGdiZV9zZXR1cF9tYWNfbGlua19tdWx0aXNwZWVkX2ZpYmVyKCApIGluIGl4Z2Jl X2NvbW1vbi5jIGNhbGxzDQo+IGl4Z2JlX3NldHVwX21hY19saW5rKCApIHdoaWNoIHNvbWUgZnVu Y3Rpb25zIGRlZmluZWQgaW4gaXhnYmUvYmFzZSAuDQo+IFdvdWxkIHlvdSBwbGVhc2UgZ2l2ZSB1 cyBtb3JlIGluZm8gdG8gbmFycm93IGRvd24gdGhpcyBpc3N1ZSA/DQo+IA0KPiBXaGF0IGRldmlj ZSBpZCBkaWQgeW91IHVzZSB0byB0cmlnZ2VyIHRoaXMgaXNzdWUgPw0KPiANCj4gVG8gZ2V0IG1v cmUgaW5mbywgd291bGQgeW91IHBsZWFzZSBjaGFuZ2UNCj4gIkNPTkZJR19SVEVfTElCUlRFX0lY R0JFX0RFQlVHX0RSSVZFUj1uIiB0byAiDQo+IENPTkZJR19SVEVfTElCUlRFX0lYR0JFX0RFQlVH X0RSSVZFUj15IiBpbiBjb25maWcvY29tbW9uX2Jhc2UgQW5kDQo+IHJ1biB5b3VyIGFwcGxpY2F0 aW9uIHdpdGggRUFMIHBhcmFtZXRlciAtLWxvZy1sZXZlbD03ICB0byBnZXQgdHJhY2UgcGF0aCBv Zg0KPiBpeGdiZSBmdW5jdGlvbnMgZm9yIHVzLg0KPiANCj4gVGhhbmtzICYgQmVzdCBSZWdhcmRz DQo+IC1XZWkNCj4gDQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJv bTogUm9nZXIgQi4gTWVsdG9uIFttYWlsdG86cm1lbHRvbkBjaXNjby5jb21dDQo+ID4gU2VudDog VHVlc2RheSwgTWF5IDIzLCAyMDE3IDI6NTQgQU0NCj4gPiBUbzogTGF1cmVudCBIYXJkeSA8bGF1 cmVudC5oYXJkeUA2d2luZC5jb20+OyBkZXZAZHBkay5vcmc7IERhaSwgV2VpDQo+ID4gPHdlaS5k YWlAaW50ZWwuY29tPg0KPiA+IENjOiBZaWdpdCwgRmVycnVoIDxmZXJydWgueWlnaXRAaW50ZWwu Y29tPjsgWmhhbmcsIEhlbGluDQo+ID4gPGhlbGluLnpoYW5nQGludGVsLmNvbT47IEFuYW55ZXYs IEtvbnN0YW50aW4NCj4gPiA8a29uc3RhbnRpbi5hbmFueWV2QGludGVsLmNvbT47IG9saXZpZXIu bWF0ekA2d2luZC5jb20NCj4gPiBTdWJqZWN0OiAybmQgdHJ5OiBwcm9ibGVtIHdpdGggaXhnYmVf ZGV2X2xpbmtfdXBkYXRlKCkgZm9yIG11bHRpLXNwZWVkDQo+ID4gZmliZXIgW3dhc10gUmU6IFtk cGRrLWRldl0gW1BBVENIIHY0XSBuZXQvaXhnYmU6IGVuc3VyZSBsaW5rIHN0YXR1cyBpcw0KPiA+ IHVwZGF0ZWQNCj4gPg0KPiA+IEhpIExhdXJlbnQvV2VpLA0KPiA+DQo+ID4gQW55IHRob3VnaHRz Pw0KPiA+DQo+ID4gUmVnYXJkcywNCj4gPiBSb2dlcg0KPiA+DQo+ID4NCj4gPiBPbiA1LzE3LzE3 IDk6MzEgQU0sIFJvZ2VyIEIgTWVsdG9uIHdyb3RlOg0KPiA+ID4gSGkgTGF1cmVudC9XZWksDQo+ ID4gPg0KPiA+ID4gQXMgSSBjb250aW51ZSB0byBpbnRlZ3JhdGUgRFBESyAxNy4wNSBpbnRvIG15 IGFwcGxpY2F0aW9uLCBJIGhhdmUNCj4gPiA+IGhpdCBhbm90aGVyIGlzc3VlIHdpdGggdGhpcyBw YXRjaCB3aGlsZSB0ZXN0aW5nIGluIGEgVk0gd2l0aA0KPiA+ID4gbXVsdGlzcGVlZCBmaWJlciBp eGdiZSBQQ0kgcGFzc3Rocm91Z2guICBNeSBhcHBsaWNhdGlvbiBwZXJpb2RpY2FsbHkNCj4gPiA+ IGludm9rZXMNCj4gPiA+IHJ0ZV9ldGhfbGlua19nZXRfbm93YWl0KCkgdG8gZGV0ZWN0IGxpbmsg c3RhdGUgY2hhbmdlcy4gIElmIHRoZSBsaW5rDQo+ID4gPiBpcyBkb3duIChubyBjYWJsZSBvciBm YXIgZW5kIGRpc2FibGVkKSwgaXhnYmVfc2V0dXBfbGluaygpIHdpbGwgbm90DQo+ID4gPiByZXR1 cm4gZm9yIH4xLjNzZWNvbmRzIGR1ZSB0byB0aGUgbGluayBzZXR1cCBhbGdvcml0aG0gaW4NCj4g PiA+IGl4Z2JlX2NvbW1vbi5jOml4Z2JlX211bHRpc3BlZWRfZmliZXIoKToNCj4gPiA+DQo+ID4g PiArICAgIGlmICgoaW50ci0+ZmxhZ3MgJiBJWEdCRV9GTEFHX05FRURfTElOS19DT05GSUcpICYm DQo+ID4gPiArICAgICAgICBody0+bWFjLm9wcy5nZXRfbWVkaWFfdHlwZShodykgPT0gaXhnYmVf bWVkaWFfdHlwZV9maWJlcikgew0KPiA+ID4gKyAgICAgICAgc3BlZWQgPSBody0+cGh5LmF1dG9u ZWdfYWR2ZXJ0aXNlZDsNCj4gPiA+ICsgICAgICAgIGlmICghc3BlZWQpDQo+ID4gPiArICAgICAg ICAgICAgaXhnYmVfZ2V0X2xpbmtfY2FwYWJpbGl0aWVzKGh3LCAmc3BlZWQsICZhdXRvbmVnKTsN Cj4gPiA+ICsgICAgICAgIGl4Z2JlX3NldHVwX2xpbmsoaHcsIHNwZWVkLCB0cnVlKTsgKyAgICB9 DQo+ID4gPiArDQo+ID4gPg0KPiA+ID4gSSBoYXZlIHR3byBxdWVzdGlvbnM6DQo+ID4gPg0KPiA+ ID4gICogU2hvdWxkbid0IHdlIGF2b2lkIHRoZSBsaW5rIHNldHVwIGNvc3QgaWYgdGhlIGNhbGxl ciBoYXMgc3BlY2lmaWVkDQo+ID4gPiAgICBub3QgdG8gd2FpdF90b19jb21wbGV0ZT8NCj4gPiA+ ICAqIElmIHRoZSBjb25jZXJuIGlzIHNwZWVkIG1heSBub3QgYmUgcHJvcGVybHkgY29uZmlndXJl ZCwgc2hvdWxkbid0DQo+ID4gPiAgICB0aGUgbGluayBzZXR1cCBiZSBkZWZlcnJlZCB1bnRpbCBz dGF0ZSBjaGFuZ2VzIGxpbmsgdXAgdGh1cw0KPiA+ID4gICAgbWluaW1pemluZyB0aGUgZGVsYXlz IGVuZm9yY2VkIGluIGl4Z2JlX211bHRpc3BlZWRfZmliZXIoKT8NCj4gPiA+DQo+ID4gPg0KPiA+ ID4gUmVnYXJkcywNCj4gPiA+IC1Sb2dlcg0KPiA+ID4NCj4gPiA+DQo+ID4gPg0KPiA+ID4NCj4g PiA+IE9uIDQvMjcvMTcgMTE6MDMgQU0sIExhdXJlbnQgSGFyZHkgd3JvdGU6DQo+ID4gPj4gSW4g Y2FzZSBvZiBmaWJlciBhbmQgbGluayBzcGVlZCBzZXQgdG8gMUdiIGF0IHBlZXIgc2lkZSAod2l0 aA0KPiA+ID4+IGF1dG9uZWcgb3Igd2l0aCBkZWZpbmVkIHNwZWVkKSwgbGluayBzdGF0dXMgY291 bGQgYmUgbm90IHByb3Blcmx5DQo+ID4gPj4gdXBkYXRlZCBhdCB0aW1lIGNhYmxlIGlzIHBsdWdn ZWQtaW4uDQo+ID4gPj4gSW5kZWVkIGlmIGNhYmxlIHdhcyBub3QgcGx1Z2dlZCB3aGVuIGRldmlj ZSBoYXMgYmVlbiBjb25maWd1cmVkIGFuZA0KPiA+ID4+IHN0YXJ0ZWQgdGhlbiBsaW5rIHN0YXR1 cyB3aWxsIG5vdCBiZSB1cGRhdGVkIHByb3Blcmx5IHdpdGggbmV3DQo+ID4gPj4gc3BlZWQgYXMg bm8gbGluayBzZXR1cCB3aWxsIGJlIHRyaWdnZXJlZC4NCj4gPiA+Pg0KPiA+ID4+IFRvIGF2b2lk IHRoaXMgaXNzdWUsIElYR0JFX0ZMQUdfTkVFRF9MSU5LX0NPTkZJRyBpcyBzZXQgdG8gdHJ5IGEN Cj4gPiA+PiBsaW5rIHNldHVwIGVhY2ggdGltZSBsaW5rX3VwZGF0ZSgpIGlzIHRyaWdnZXJlZCBh bmQgY3VycmVudCBsaW5rDQo+ID4gPj4gc3RhdHVzIGlzIGRvd24uIFdoZW4gY2FibGUgaXMgcGx1 Z2dlZC1pbiwgbGluayBzZXR1cCB3aWxsIGJlDQo+ID4gPj4gcGVyZm9ybWVkIHZpYSBpeGdiZV9z ZXR1cF9saW5rKCkuDQo+ID4gPj4NCj4gPiA+PiBTaWduZWQtb2ZmLWJ5OiBMYXVyZW50IEhhcmR5 IDxsYXVyZW50LmhhcmR5QDZ3aW5kLmNvbT4NCj4gPiA+PiAtLS0NCj4gPiA+PiBIaSBXZWksIHBs ZWFzZSBmaW5kIGVuY2xvc2VkIHBhdGNoIHY0LCB0ZXN0ZWQgdXNpbmcgdGVzdHBtZC4NCj4gPiA+ Pg0KPiA+ID4+IHYxIC0+IHYyOg0KPiA+ID4+IC0gcmViYXNlIG9uIHRvcCBvZiBoZWFkIChjaGFu Z2UgZmxhZyB0byAxPDw0KQ0KPiA+ID4+IC0gZml4IHJlZ3Jlc3Npb24gd2l0aCBjb3BwZXIgbGlu a3M6IG9ubHkgdXBkYXRlIGxpbmsgZm9yIGZpYmVyDQo+ID4gPj4gbGlua3MNCj4gPiA+Pg0KPiA+ ID4+IHYyIC0+IHYzOg0KPiA+ID4+IC0gcmVtb3ZlIHVubmVzY2Vzc2FyeSBjaGVjayBvbiBzcGVl ZCBtYXNrIGlmIGF1dG9uZWcgaXMgZmFsc2UNCj4gPiA+Pg0KPiA+ID4+IHYzIC0+IHY0Og0KPiA+ ID4+IC0gcmVtb3ZlIGRlZmF1bHQgc3BlZWQgc2V0IHRvIDEwR2IgaWYgYXV0b25lZyBpcyBmYWxz ZSwgcmVseSBvbg0KPiA+ID4+IGl4Z2JlX2dldF9saW5rX2NhcGFiaWxpdGllcyggKSBpbnN0ZWFk Lg0KPiA+ID4+IC0tLQ0KPiA+ID4+ICAgZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfZXRoZGV2LmMg fCAxNCArKysrKysrKysrKysrKw0KPiA+ID4+ICAgZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfZXRo ZGV2LmggfCAgMSArDQo+ID4gPj4gICAyIGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKykN Cj4gPiA+Pg0KPiA+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9peGdiZS9peGdiZV9ldGhk ZXYuYw0KPiA+ID4+IGIvZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfZXRoZGV2LmMNCj4gPiA+PiBp bmRleCA3Yjg1NmJiLi44YTBjMGE3IDEwMDY0NA0KPiA+ID4+IC0tLSBhL2RyaXZlcnMvbmV0L2l4 Z2JlL2l4Z2JlX2V0aGRldi5jDQo+ID4gPj4gKysrIGIvZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVf ZXRoZGV2LmMNCj4gPiA+PiBAQCAtMzc4Miw4ICszNzgyLDEyIEBAIGl4Z2JlX2Rldl9saW5rX3Vw ZGF0ZShzdHJ1Y3QgcnRlX2V0aF9kZXYNCj4gPiAqZGV2LA0KPiA+ID4+IGludCB3YWl0X3RvX2Nv bXBsZXRlKQ0KPiA+ID4+ICAgICAgIHN0cnVjdCBpeGdiZV9odyAqaHcgPQ0KPiA+ID4+IElYR0JF X0RFVl9QUklWQVRFX1RPX0hXKGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGUpOw0KPiA+ID4+ICAgICAg IHN0cnVjdCBydGVfZXRoX2xpbmsgbGluaywgb2xkOw0KPiA+ID4+ICAgICAgIGl4Z2JlX2xpbmtf c3BlZWQgbGlua19zcGVlZCA9IElYR0JFX0xJTktfU1BFRURfVU5LTk9XTjsNCj4gPiA+PiArICAg IHN0cnVjdCBpeGdiZV9pbnRlcnJ1cHQgKmludHIgPQ0KPiA+ID4+ICsgSVhHQkVfREVWX1BSSVZB VEVfVE9fSU5UUihkZXYtPmRhdGEtPmRldl9wcml2YXRlKTsNCj4gPiA+PiAgICAgICBpbnQgbGlu a191cDsNCj4gPiA+PiAgICAgICBpbnQgZGlhZzsNCj4gPiA+PiArICAgIHUzMiBzcGVlZCA9IDA7 DQo+ID4gPj4gKyAgICBib29sIGF1dG9uZWcgPSBmYWxzZTsNCj4gPiA+PiAgICAgICAgIGxpbmsu bGlua19zdGF0dXMgPSBFVEhfTElOS19ET1dOOw0KPiA+ID4+ICAgICAgIGxpbmsubGlua19zcGVl ZCA9IDA7DQo+ID4gPj4gQEAgLTM3OTMsNiArMzc5NywxNCBAQCBpeGdiZV9kZXZfbGlua191cGRh dGUoc3RydWN0IHJ0ZV9ldGhfZGV2DQo+ID4gKmRldiwNCj4gPiA+PiBpbnQgd2FpdF90b19jb21w bGV0ZSkNCj4gPiA+PiAgICAgICAgIGh3LT5tYWMuZ2V0X2xpbmtfc3RhdHVzID0gdHJ1ZTsNCj4g PiA+PiAgICsgICAgaWYgKChpbnRyLT5mbGFncyAmIElYR0JFX0ZMQUdfTkVFRF9MSU5LX0NPTkZJ RykgJiYNCj4gPiA+PiArICAgICAgICBody0+bWFjLm9wcy5nZXRfbWVkaWFfdHlwZShodykgPT0g aXhnYmVfbWVkaWFfdHlwZV9maWJlcikNCj4gew0KPiA+ID4+ICsgICAgICAgIHNwZWVkID0gaHct PnBoeS5hdXRvbmVnX2FkdmVydGlzZWQ7DQo+ID4gPj4gKyAgICAgICAgaWYgKCFzcGVlZCkNCj4g PiA+PiArICAgICAgICAgICAgaXhnYmVfZ2V0X2xpbmtfY2FwYWJpbGl0aWVzKGh3LCAmc3BlZWQs ICZhdXRvbmVnKTsNCj4gPiA+PiArICAgICAgICBpeGdiZV9zZXR1cF9saW5rKGh3LCBzcGVlZCwg dHJ1ZSk7DQo+ID4gPj4gKyAgICB9DQo+ID4gPj4gKw0KPiA+ID4+ICAgICAgIC8qIGNoZWNrIGlm IGl0IG5lZWRzIHRvIHdhaXQgdG8gY29tcGxldGUsIGlmIGxzYyBpbnRlcnJ1cHQgaXMNCj4gPiA+ PiBlbmFibGVkICovDQo+ID4gPj4gICAgICAgaWYgKHdhaXRfdG9fY29tcGxldGUgPT0gMCB8fA0K PiA+ID4+IGRldi0+ZGF0YS0+ZGV2X2NvbmYuaW50cl9jb25mLmxzYyAhPSAwKQ0KPiA+ID4+ICAg ICAgICAgICBkaWFnID0gaXhnYmVfY2hlY2tfbGluayhodywgJmxpbmtfc3BlZWQsICZsaW5rX3Vw LCAwKTsgQEANCj4gPiA+PiAtMzgxMCwxMCArMzgyMiwxMiBAQCBpeGdiZV9kZXZfbGlua191cGRh dGUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsDQo+ID4gPj4gaW50IHdhaXRfdG9fY29tcGxldGUp DQo+ID4gPj4gICAgICAgICBpZiAobGlua191cCA9PSAwKSB7DQo+ID4gPj4gICAgICAgICAgIHJ0 ZV9peGdiZV9kZXZfYXRvbWljX3dyaXRlX2xpbmtfc3RhdHVzKGRldiwgJmxpbmspOw0KPiA+ID4+ ICsgICAgICAgIGludHItPmZsYWdzIHw9IElYR0JFX0ZMQUdfTkVFRF9MSU5LX0NPTkZJRzsNCj4g PiA+PiAgICAgICAgICAgaWYgKGxpbmsubGlua19zdGF0dXMgPT0gb2xkLmxpbmtfc3RhdHVzKQ0K PiA+ID4+ICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KPiA+ID4+ICAgICAgICAgICByZXR1cm4g MDsNCj4gPiA+PiAgICAgICB9DQo+ID4gPj4gKyAgICBpbnRyLT5mbGFncyAmPSB+SVhHQkVfRkxB R19ORUVEX0xJTktfQ09ORklHOw0KPiA+ID4+ICAgICAgIGxpbmsubGlua19zdGF0dXMgPSBFVEhf TElOS19VUDsNCj4gPiA+PiAgICAgICBsaW5rLmxpbmtfZHVwbGV4ID0gRVRIX0xJTktfRlVMTF9E VVBMRVg7DQo+ID4gPj4gICBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfZXRo ZGV2LmgNCj4gPiA+PiBiL2RyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX2V0aGRldi5oDQo+ID4gPj4g aW5kZXggNTE3NmIwMi4uYjU3NmE2ZiAxMDA2NDQNCj4gPiA+PiAtLS0gYS9kcml2ZXJzL25ldC9p eGdiZS9peGdiZV9ldGhkZXYuaA0KPiA+ID4+ICsrKyBiL2RyaXZlcnMvbmV0L2l4Z2JlL2l4Z2Jl X2V0aGRldi5oDQo+ID4gPj4gQEAgLTQ1LDYgKzQ1LDcgQEANCj4gPiA+PiAgICNkZWZpbmUgSVhH QkVfRkxBR19NQUlMQk9YICAgICAgICAgICh1aW50MzJfdCkoMSA8PCAxKQ0KPiA+ID4+ICAgI2Rl ZmluZSBJWEdCRV9GTEFHX1BIWV9JTlRFUlJVUFQgICAgKHVpbnQzMl90KSgxIDw8IDIpDQo+ID4g Pj4gICAjZGVmaW5lIElYR0JFX0ZMQUdfTUFDU0VDICAgICAgICAgICAodWludDMyX3QpKDEgPDwg MykNCj4gPiA+PiArI2RlZmluZSBJWEdCRV9GTEFHX05FRURfTElOS19DT05GSUcgKHVpbnQzMl90 KSgxIDw8IDQpDQo+ID4gPj4gICAgIC8qDQo+ID4gPj4gICAgKiBEZWZpbmVzIHRoYXQgd2VyZSBu b3QgcGFydCBvZiBpeGdiZV90eXBlLmggYXMgdGhleSBhcmUgbm90DQo+ID4gPj4gdXNlZCBieSB0 aGUNCj4gPiA+DQo+ID4gPiAuDQo+ID4gPg0KDQo=