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 E5905A051A; Fri, 17 Jan 2020 03:11:52 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 8B56C1D535; Fri, 17 Jan 2020 03:11:52 +0100 (CET) Received: from m213143.mail.qiye.163.com (m213143.mail.qiye.163.com [223.252.213.143]) by dpdk.org (Postfix) with ESMTP id E09281D531; Fri, 17 Jan 2020 03:11:49 +0100 (CET) Received: from sangfor.com.cn (wm-7 [127.0.0.1]) by m213143.mail.qiye.163.com (Hmail) with ESMTP id 5C0B75813B4; Fri, 17 Jan 2020 10:11:42 +0800 (CST) Message-ID: To: Ferruh Yigit Cc: Andrew Rybchenko , Thomas Monjalon , dev@dpdk.org, stable@dpdk.org, jia.guo@intel.com, cunming.liang@intel.com, qi.z.zhang@intel.com, jungle845943968@outlook.com, Jerin Jacob Kollanukkaran X-Priority: 3 X-Mailer: HMail Webmail Server V2.0 Copyright (c) 2016-163.com X-Originating-IP: 113.110.229.205 In-Reply-To: <61a10224-b316-2dd1-0bc1-9db64643bbff@intel.com> MIME-Version: 1.0 Received: from fangtonghao@sangfor.com.cn( [113.110.229.205) ] by ajax-webmail ( [127.0.0.1] ) ; Fri, 17 Jan 2020 10:11:42 +0800 (GMT+08:00) From: =?UTF-8?Q?=E6=96=B9=E7=BB=9F=E6=B5=A950450?= Date: Fri, 17 Jan 2020 10:11:42 +0800 (GMT+08:00) X-HM-Spam-Status: e1kfGhgUHx5ZQUtXWQgYFAkeWUFZSFVLSUhCQkJCSUJPSUNKWVdZKFlBSE 83V1ktWUFJV1kJDhceCFlBWTU0KTY6NyQpLjc#WQY+ X-HM-Sender-Digest: e1kJHlYWEh9ZQUhNS09MTkJPQkhJN1dZDB4ZWUEPCQ4eV1kSHx4VD1lB WUc6NAg6Ezo*EDg#KRAUQi0jHBQ1QzAKCz5VSFVKTkxCSUlMSktMQk9IVTMWGhIXVR0aFRwPFBUc ExoUOwgaFRwdFAlVGBQWVRgVRVlXWRILWUFZSkpIVUpKS1VJSUJVSUtOWVdZCAFZQUlIQktPNwY+ X-HM-Tid: 0a6fb1453caf7f7bkuuk5c0b75813b4 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: Re: [dpdk-dev] =?utf-8?q?=5BPATCH_v2=5D_Fixes=3A_ethdev=3A_secondary_?= =?utf-8?q?process_change_shared_memory?= 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" Cm9rLCBJIHNlbmQgYSBuZXcgdmVyc2lvbiBvZiBteSBwYXRjaCBhbmQgcmV3cml0ZSBjb21taXQg bG9nIGFnYWluLgp5b3UgY2FuIGNoZWNrIG15IHBhdGNoIGluIGh0dHBzOi8vcGF0Y2hlcy5kcGRr Lm9yZy9wYXRjaC82NDgxOS8KCgoKCgoK5Y+R5Lu25Lq677yaRmVycnVoIFlpZ2l0IDxmZXJydWgu eWlnaXRAaW50ZWwuY29tPgrlj5HpgIHml6XmnJ/vvJoyMDIwLTAxLTE2IDIwOjE4OjE4CuaUtuS7 tuS6uu+8miLmlrnnu5/mtak1MDQ1MCIgPGZhbmd0b25naGFvQHNhbmdmb3IuY29tLmNuPgrmioTp gIHkurrvvJpBbmRyZXcgUnliY2hlbmtvIDxhcnliY2hlbmtvQHNvbGFyZmxhcmUuY29tPixUaG9t YXMgTW9uamFsb24gPHRob21hc0Btb25qYWxvbi5uZXQ+LGRldkBkcGRrLm9yZyxzdGFibGVAZHBk ay5vcmcsamlhLmd1b0BpbnRlbC5jb20sY3VubWluZy5saWFuZ0BpbnRlbC5jb20scWkuei56aGFu Z0BpbnRlbC5jb20sanVuZ2xlODQ1OTQzOTY4QG91dGxvb2suY29tLEplcmluIEphY29iIEtvbGxh bnVra2FyYW4gPGplcmluakBtYXJ2ZWxsLmNvbT4K5Li76aKY77yaUmU6IFtkcGRrLWRldl0gW1BB VENIIHYyXSBGaXhlczogZXRoZGV2OiBzZWNvbmRhcnkgcHJvY2VzcyBjaGFuZ2Ugc2hhcmVkIG1l bW9yeT5PbiAxLzE2LzIwMjAgMTE6MzUgQU0sIOaWuee7n+a1qTUwNDUwIHdyb3RlOgo+PiAKPj4g Cj4+PkBGYW5nLCBvbmx5IGNhbiB5b3UgcGxlYXNlIG1ha2UgYSBuZXcgdmVyc2lvbiB0byB1cGRh dGUgdGhlCj4+PidydGVfZXRoX2NvcHlfcGNpX2luZm8nIGZ1bmN0aW9uIGNvbW1lbnQgdG8gZG9j dW1lbnQgc2hhcmVkIGRhdGEgaXMgbm90IHVwZGF0ZWQKPj4+Zm9yIHRoZSBzZWNvbmRhcnkgcHJv Y2Vzcz8KPj4gCj4+PlNvIHRoaXMgc3VnZ2VzdCBnb2luZyBvbiB3aXRoIEZhbmcncyBwYXRjaC4g SSBvbmx5IHJlcXVlc3RlZCBhbiBhZGRpdGlvbmFsIG5vdGUKPj4+aW4gZnVuY3Rpb24gY29tbWVu dCByZWxhdGVkIHRvIHRoaXMgc2Vjb25kYXJ5IGNoZWNrLgo+PiAKPj4gQEZlcnJ1aCBZaWdpdAo+ PiBTaG91bGQgSSB1cGRhdGUgYSBuZXcgdmVyc2lvbiBwYXRjaCBvZiAicnRlX2V0aF9jb3B5X3Bj aV9pbmZvIiBmdW5jdGlvbiBhbmQgZXhwbGFpbgo+PiB3dGhldGhlciB0aGUgcmVndWxhciBmdW5j dGlvbmluZyBvZiBzZWNvbmRhcnkgcHJvY2VzcyBpcyBhZmZlY3RlZCBvciBub3Q/Cj4+IEkgY2Fu dCBmaWd1cmUgb3V0IHdoYXQgeW91IG5lZWQgbWUgdG8gZG8uCj4KPkhpIEZhbmcsCj4KPlllcyBj YW4geW91IHBsZWFzZSBzZW5kIGEgbmV3IHZlcnNpb24gb2YgeW91ciBwYXRjaC4KPkluIG5ldyB2 ZXJzaW9uLCBhZGRpdGlvbmFsbHkgdXBkYXRlIHRoZSAncnRlX2V0aF9jb3B5X3BjaV9pbmZvKCkn IGZ1bmN0aW9uCj5jb21tZW50IHRvIGRvY3VtZW50IHRoYXQgZnVuY3Rpb24gdXBkYXRlcyAnZXRo X2Rldi0+ZGF0YScgb25seSBmb3IgcHJpbWFyeSBwcm9jZXNzLgo+Cj5UaGFua3MsCj5mZXJydWgK Pgo+PiAKPj4gCj4+IOWPkeS7tuS6uu+8mkZlcnJ1aCBZaWdpdCA8ZmVycnVoLnlpZ2l0QGludGVs LmNvbT4KPj4g5Y+R6YCB5pel5pyf77yaMjAyMC0wMS0xNiAxNzowNDowOQo+PiDmlLbku7bkurrv vJpBbmRyZXcgUnliY2hlbmtvIDxhcnliY2hlbmtvQHNvbGFyZmxhcmUuY29tPixUaG9tYXMgTW9u amFsb24gPHRob21hc0Btb25qYWxvbi5uZXQ+Cj4+IOaKhOmAgeS6uu+8miLmlrnnu5/mtak1MDQ1 MCIgPGZhbmd0b25naGFvQHNhbmdmb3IuY29tLmNuPixkZXZAZHBkay5vcmcsc3RhYmxlQGRwZGsu b3JnLGppYS5ndW9AaW50ZWwuY29tLGN1bm1pbmcubGlhbmdAaW50ZWwuY29tLHFpLnouemhhbmdA aW50ZWwuY29tLGp1bmdsZTg0NTk0Mzk2OEBvdXRsb29rLmNvbSxKZXJpbiBKYWNvYiBLb2xsYW51 a2thcmFuIDxqZXJpbmpAbWFydmVsbC5jb20+Cj4+IOS4u+mimO+8mlJlOiBbZHBkay1kZXZdIFtQ QVRDSCB2Ml0gRml4ZXM6IGV0aGRldjogc2Vjb25kYXJ5IHByb2Nlc3MgY2hhbmdlIHNoYXJlZCBt ZW1vcnk+T24gMS8xNi8yMDIwIDc6NDMgQU0sIEFuZHJldyBSeWJjaGVua28gd3JvdGU6Cj4+Pj4g T24gMS8xNS8yMCAxMTo0MyBQTSwgVGhvbWFzIE1vbmphbG9uIHdyb3RlOgo+Pj4+PiAxNS8wMS8y MDIwIDE5OjM1LCBGZXJydWggWWlnaXQ6Cj4+Pj4+PiBPbiAxLzE1LzIwMjAgNjo0OSBBTSwg5pa5 57uf5rWpNTA0NTAgd3JvdGU6Cj4+Pj4+Pj4gSGkgRmVycnVoLCB0aGFua3MgZm9yIHlvdXIgbWVz c2FnZS4KPj4+Pj4+Pgo+Pj4+Pj4+Cj4+Pj4+Pj4gV2UgZGV2ZWxvcGVkIGEgZXRodG9vbC1kcGRr IHdoaWNoIGlzIHNlY29uZGFyeSBwcm9jZXNzIGJhc2VkIGRwZGsgMTcuMDggdmVyc2lvbi4gT3Vy IGRldmljZQo+Pj4+Pj4+IHN1cHBvcnQgaG90cGx1ZyBkZXRhY2gsIGJ1dCBob3RwbHVnIGRlYXRj aCBpcyBmYWlsZWQgd2hlbiB3ZSB1c2UgZXRodG9vbC1kcGRrLldlIGZvdW5kIHRoZQo+Pj4+Pj4+ IHNlY29uZGFyeSBwcm9jZXNzIHdpbGwgY2hhbmdlIHRoZSBzaGFyZWQgbWVtb3J5IHdoZW4gaW5p dGlhbGl6aW5nLlNlY29uZGFyeSBwcm9jZXNzIGNhbGxzCj4+Pj4+Pj4gInJ0ZV9ldGhfZGV2X3Bj aV9hbGxvY2F0ZSIgZnVuY3Rpb24gYW5kIGVudGVycyAicnRlX2V0aF9jb3B5X3BjaV9pbmZvIiBm dW5jdGlvbi4KPj4+Pj4+PiAocnRlX2V0aF9kZXZfcGNpX2dlbmVyaWNfcHJvYmUgLT4gcnRlX2V0 aF9kZXZfcGNpX2FsbG9jYXRlIC0+IHJ0ZV9ldGhfY29weV9wY2lfaW5mbykKPj4+Pj4+PiBUaGVu IGl0IHNldHMgdGhlIHZhbHVlIG9mIHN0cnVjdCAicnRlX2V0aF9kZXZfZGF0YS5kZXZfZmxhZ3Mi IHRvIHplcm8uSW4gb3VyIHBsYXRmb3JtLCB0aGlzIHZhbHVlCj4+Pj4+Pj4gaXMgZXF1YWwgdG8g MHgwMDAzLihSVEVfRVRIX0RFVl9ERVRBQ0hBQkxFIHwgUlRFX0VUSF9ERVZfSU5UUl9MU0MpLGJ1 dCBhZnRlciByZXNldAo+Pj4+Pj4+IHRoZSAiZGV2X2ZsYWdzIiwgdGhlIHZhbHVlIGNoYW5nZWQg dG8gMHgwMDAyLihSVEVfRVRIX0RFVl9ERVRBQ0hBQkxFKS5Tbywgb3VyIGRldmljZSBob3RwbHVn Cj4+Pj4+Pj4gZGV0YWNoIGlzIGZhaWxlZC5JIGZvdW5kIHRoZSBzaW1pbGFyIHByb2JsZW0gaW4g b3RoZXIgZHBkayB2ZXJzaW9uLCBpbmNsdWRlIGRwZGsgMTkuMTEuRXZlbiB0aG91Z2gKPj4+Pj4+ PiB0aGUgZGVpdmNlIGhvdHBsdWcgZGV0YWNoIGlzIGRpc2NhcmRlZCxidXQgaSB0aGluayB0aGUg c2hhcmVkIG1lbW9yeSBjaGFuZ2VkIGlzIHVuZXhwZWN0ZWQgYnkgcHJpbWFyeQo+Pj4+Pj4+IHBy b2Nlc3MuCj4+Pj4gCj4+Pj4gSG9sZCBvbiwganVzdCBmb3IgbXkgdW5kZXJzdGFuZGluZy4gQXMg ZmFyIGFzIEkgY2FuIHNlZQo+Pj4+IFJURV9FVEhfREVWX0RFVEFDSEFCTEUgd2FzIHJlbW92ZWQg aW4gMTcuMTEuIERvZXMgaXQKPj4+PiBjaGFuZ2Ugc29tZXRoaW5nIGluIGFib3ZlIGRlc2NyaXB0 aW9uPwo+Pj4KPj4+T3ZlcmFsbCBzZWNvbmRhcnkgb3ZlcndyaXRlcyBwcmltYXJ5IHZhbHVlcywg SSB0aGluayB3ZSBzaG91bGQgZml4IGl0Cj4+PmluZGVwZW5kZW50IGZyb20gdGhlIGZsYWdzIGlu dm9sdmVkLgo+Pj4KPj4+PiAKPj4+Pj4+IEkgYWdyZWUgdGhpcyBpcyB0aGUgcHJvYmxlbS4KPj4+ Pj4+IEluIHRoZSBkcml2ZXIgY29kZSwgJ3J0ZV9ldGhfY29weV9wY2lfaW5mbycgaXMgY2FsbGVk IG9ubHkgYnkgcHJpbWFyeSBwcm9jZXNzLAo+Pj4+Pj4KPj4+Pj4+IGJ1dCB0aGUgZ2VuZXJpYyBj b2RlIGlzIGZhdWx0eS4KPj4+Pj4+Cj4+Pj4+PiBBbmQgaW4gMTkuMTEgYWRkaXRpb25hbGx5ICdl dGhfZGV2X3BjaV9zcGVjaWZpY19pbml0JyBhbHNvIHNlZW1zIGhhcyBzYW1lIHByb2JsZW0uCj4+ Pj4gCj4+Pj4gWWVzLCBhcyBJIHVuZGVyc3RhbmQgUlRFX0VUSF9ERVZfQ0xPU0VfUkVNT1ZFLAo+ Pj4+IFJURV9FVEhfREVWX0JPTkRFRF9TTEFWRSwgUlRFX0VUSF9ERVZfUkVQUkVTRU5UT1IgYW5k Cj4+Pj4gUlRFX0VUSF9ERVZfTk9MSVZFX01BQ19BRERSIG1heSBiZSBsb3N0IGJlY2F1c2Ugb2YK Pj4+PiByZWluaXQgKGlmIG5vdCByZXN0b3JlZCBpbiBvdGhlciBicmFuY2hlcykuIEJhZCBhbnl3 YXkuCj4+Pj4gCj4+Pj4+Pj4gT3VyIGRyaXZlciBpcyBpeGdiZSwgaSB0aGluayB0aGlzIHByb2Js ZW0gaGFzIGEgbGl0dGxlIHJlbGF0aW9uc2hpcCB3aXRoIGRyaXZlciwgU2Vjb25kYXJ5IHByb2Nl c3MKPj4+Pj4+PiBlbnRlcnMgInJ0ZV9ldGhfY29weV9wY2lfaW5mbyIgYnkgInJ0ZV9ldGhfZGV2 X3BjaV9hbGxvY2F0ZSIuQW5kIEkgYWdyZWUgeW91ciBvcGluaW9uLCB0aGUgaGVscGVyCj4+Pj4+ Pj4gZnVuY3Rpb24gc2hvdWxkIHNpbXBsZSBvbiB3aGF0IGl0IGRvZXMuSSBoYXZlIHR3byB3YXlz IHRvIGZpeCB0aGlzIHByb2JsZW0sIG9uZSBpcyBhZGQgYW4gaWYtc3RhdGVtZW50Cj4+Pj4+Pj4K Pj4+Pj4+PiBpbiAicnRlX2V0aF9kZXZfcGNpX2FsbG9jYXRlIiBmdW5jdGlvbiB0byBmb3JiaWQg c2Vjb25kYXJ5IHByb2Nlc3MgZW50ZXJzICJydGVfZXRoX2NvcHlfcGNpX2luZm8iIGZ1bmN0aW9u LAo+Pj4+Pj4+IGFub3RoZXIgd2F5IGlzIGFkZCBhbiBpZi1zdGF0ZW1lbnQgaW4gInJ0ZV9ldGhf Y29weV9wY2lfaW5mbyIgZnVuY3Rpb24gdG8gZm9yYmlkIHNlY29uZGFyeSBwcm9jZXNzIGNoYW5n ZQo+Pj4+Pj4+IHNoYXJlZCBtZW1vcnkuQW5kIEZpcnN0IHdheSBuZWVkIHRvIGVuc3VyZSB0aGUg InJ0ZV9ldGhfY29weV9wY2lfaW5mbyIgZnVuY3Rpb24gd29uJ3QgYmUgY2FsbGVkIGFueXdoZXJl IGVsc2UuCj4+Pj4+Pj4gSSB0aGluayB0aGUgc2Vjb25kIHdheSBpcyBzaW1wbGUgYW5kIGxvd2Vy IHJpc2suCj4+Pj4+Pgo+Pj4+Pj4gWWVzIHRoZXNlIGFyZSB0aGUgdHdvIG9wdGlvbnMuCj4+Pj4+ Pgo+Pj4+Pj4gSSBhZ3JlZSBhZGRpbmcgY2hlY2sgaW4gdGhlICdydGVfZXRoX2NvcHlfcGNpX2lu Zm8nIGNvdmVycyBhbGwgY2FzZXMgYW5kIHNhZmVyLgo+Pj4+Pj4gQlVUIG15IGNvbmNlcm4gd2Fz IGFkZGluZyBkZWNpc2lvbiBtYWtpbmcgdG8gc2ltcGxlL2xlYWYgZnVuY3Rpb24gYW5kIG1ha2Ug aXQKPj4+Pj4+IGhhcmRlciB0byBkZWJ1Zy91c2UsIGluc3RlYWQgb2YgZ2l2aW5nIHdoYXQgcHJp bWFyeS9zZWNvbmRhcnkgcHJvY2VzcyBzaG91bGQKPj4+Pj4+IGNhbGwgZGVjaXNpb24gaW4gaGln aGVyIGxldmVsLgo+Pj4+Pj4KPj4+Pj4+IEJ1dCBJIGp1c3QgcmVjb2duaXplZCB0aGF0IHNvbWUg UE1EcyBhcmUgY2FsbGluZyAncnRlX2V0aF9jb3B5X3BjaV9pbmZvJyBvbgo+Pj4+Pj4gc2Vjb25k YXJ5IHByb2Nlc3MsIGxpa2UgbWx4NCBvciBzemVkYXRhMiwgYW5kIG1vc3QgcHJvYmFibHkgdGhp cyBpcyBub3QgdGhlaXIKPj4+Pj4+IGludGVudGlvbi4KPj4+Pj4+IEFuZCAnZXRoX2Rldi0+aW50 cl9oYW5kbGUnIHNldCBpbiAncnRlX2V0aF9jb3B5X3BjaV9pbmZvJywgbm90IGNhbGxpbmcgdGhp cwo+Pj4+Pj4gZnVuY3Rpb24gbWF5IGhhdmUgc2lkZSBhZmZlY3Qgb2YgJ2V0aF9kZXYtPmludHJf aGFuZGxlJyBub3Qgc2V0IGluIHNlY29uZGFyeS4KPj4+Pj4+Cj4+Pj4+PiBXaXRoIGFib3ZlIGNv bnNpZGVyYXRpb25zIEkgYW0gT0sgdG8geW91ciBwcm9wb3NhbCB0byBjb3ZlciBhbGwgY2FzZXMs IFRob21hcywKPj4+Pj4+IEFuZHJldywgYW55IGNvbmNlcm4/Cj4+Pj4gCj4+Pj4gSSB3b3VsZCBw dXQgaWYgY29uZGl0aW9uIGluIHJ0ZV9ldGhfY29weV9wY2lfaW5mbygpLgo+Pj4+IEl0IGlzIHRo ZSBmdW5jdGlvbiB3aGljaCB3cml0ZXMgc2hhcmVkIHNwYWNlIGZyb20KPj4+PiBzZWNvbmRhcnkg cHJvY2VzcyB3aGVuIGl0IHNob3VsZCBub3QgYmUgZG9uZSBhbmQgaXQKPj4+PiBzaG91bGQgYmUg Zml4ZWQgdGhlcmUuCj4+Pgo+Pj5PSwo+Pj4KPj4+PiAKPj4+Pj4gRG8geW91IG1lYW4gZHJpdmVy cyBuZWVkIHRvIGJlIGZpeGVkPwo+Pj4+IAo+Pj4+IEknbSBub3Qgc3VyZSB0aGF0IEkgZnVsbHkg dW5kZXJzdGFuZCBpdC4gU2luY2UgY29weSBmdW5jdGlvbgo+Pj4+IGNhcmVzIGFib3V0IGludHJf aGFuZGxlIGNvcHlpbmcgSSdtIGFmcmFpZCB0aGF0IGl0IGlzIG5vdAo+Pj4+IDEwMCUgY29ycmVj dCB0byBza2lwIGl0IGluIHNlY29uZGFyeSBwcm9jZXNzIGNvbXBsZXRlbHkgYXMKPj4+PiBtYW55 IGRyaXZlcnMgZG8gcmlnaHQgbm93LiBCYXNpY2FsbHkgaXQgbWFrZXMgZXRoX2RldiBzdHJ1Y3R1 cmUKPj4+PiBpbiBzZWNvbmRhcnkgcHJvY2VzcyBpbmNvbnNpc3RlbnQuIEhvd2V2ZXIsIGl0IGxv b2tzIGxpa2UKPj4+PiBtb3N0IG9mIHRoZXNlIGRyaXZlcnMgc2ltcGx5IG9idGFpbiBoYW5kbGUg ZnJvbSBwY2lfZGV2Cj4+Pj4gZGlyZWN0bHkgYW5kIGl0IGV4cGxhaW5zIHdoeSB0aGV5IGFyZSBu b3QgYWZmZWN0ZWQuCj4+Pj4gVGhlcmUgYXJlIGV4Y2VwdGlvbnMgd2hpY2ggYXJlIHBvdGVudGlh bGx5IGJ1Z3MsIGUuZy4KPj4+PiBkcml2ZXJzL25ldC9pY2UvaWNlX2V0aGRldi5jOiBpY2VfaW50 ZXJydXB0X2hhbmRsZXIgYXQgdGhlIGVuZC4KPj4+PiAKPj4+PiBJIHRoaW5rIHRoYXQgaXQgd291 bGQgYmUgYmV0dGVyIGlmIGludHJfaGFuZGxlIGlzIGFsd2F5cwo+Pj4+IGNvcnJlY3QgaW4gZXRo X2RldiAoYm90aCBwcmltYXJ5IGFuZCBzZWNvbmRhcnkgY2FzZXMpIGFuZAo+Pj4+IGRyaXZlcnMg dXNlIGl0IGluc3RlYWQgb2YgdGhlIHNhbWUgZnJvbSBwY2lfZGV2Lgo+Pj4+IAo+Pj4KPj4+T0sK Pj4+Cj4+PlNvIHRoaXMgc3VnZ2VzdCBnb2luZyBvbiB3aXRoIEZhbmcncyBwYXRjaC4gSSBvbmx5 IHJlcXVlc3RlZCBhbiBhZGRpdGlvbmFsIG5vdGUKPj4+aW4gZnVuY3Rpb24gY29tbWVudCByZWxh dGVkIHRvIHRoaXMgc2Vjb25kYXJ5IGNoZWNrLgo+PiAKPj4gCj4KCgoNCg0K