From mboxrd@z Thu Jan 1 00:00:00 1970 From: Muneendra Kumar M Subject: Re: [PATCH V4 1/2] multipath-tools: intermittent IO error accounting to improve reliability Date: Thu, 12 Oct 2017 06:59:11 +0000 Message-ID: References: <1505619638-20912-1-git-send-email-guanjunxiong@huawei.com> <1505619638-20912-2-git-send-email-guanjunxiong@huawei.com> <7035dfdb-1c49-aa3f-3836-1ec316707c47@huawei.com> <1505764297.12944.2.camel@suse.com> <8d45c076cf6c47d39bf2aade3ade7f51@BRMWP-EXMB12.corp.brocade.com> <52829afa-ed9e-cc39-a492-3e678b8e0d03@huawei.com> <658d39ce-5ac8-f102-96a8-c332da403e90@huawei.com> <615cdd5a955944e49986dca01bf406a5@BRMWP-EXMB12.corp.brocade.com> <06296b9f-e8da-77f2-d28f-db43c94c6c50@huawei.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dm-devel-bounces@redhat.com Errors-To: dm-devel-bounces@redhat.com To: Guan Junxiong Cc: "dm-devel@redhat.com" , niuhaoxin , "Shenhong (C)" , Martin Wilck List-Id: dm-devel.ids SGkgR3VhbiwKSWFtIHdhaXRpbmcgZm9yIHRoZSBmZWVkYmFjayBmcm9tIHRoZSBjbGllbnRzLgoK UmVnYXJkcywKTXVuZWVuZHJhLgoKLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KRnJvbTogR3Vh biBKdW54aW9uZyBbbWFpbHRvOmd1YW5qdW54aW9uZ0BodWF3ZWkuY29tXSAKU2VudDogVGh1cnNk YXksIE9jdG9iZXIgMTIsIDIwMTcgMTI6MTYgUE0KVG86IE11bmVlbmRyYSBLdW1hciBNIDxtbWFu ZGFsYUBCcm9jYWRlLmNvbT4KQ2M6IFNoZW5ob25nIChDKSA8c2hlbmhvbmcwOUBodWF3ZWkuY29t Pjsgbml1aGFveGluIDxuaXVoYW94aW5AaHVhd2VpLmNvbT47IE1hcnRpbiBXaWxjayA8bXdpbGNr QHN1c2UuY29tPjsgQ2hyaXN0b3BoZSBWYXJvcXVpIDxjaHJpc3RvcGhlLnZhcm9xdWlAb3BlbnN2 Yy5jb20+OyBkbS1kZXZlbEByZWRoYXQuY29tClN1YmplY3Q6IFJlOiBbUEFUQ0ggVjQgMS8yXSBt dWx0aXBhdGgtdG9vbHM6IGludGVybWl0dGVudCBJTyBlcnJvciBhY2NvdW50aW5nIHRvIGltcHJv dmUgcmVsaWFiaWxpdHkKCkhpIE11bmVlbmRyYe+8jAoKT24gMjAxNy8xMC8xMiAxNDozNSwgTXVu ZWVuZHJhIEt1bWFyIE0gd3JvdGU6Cj4gSGkgR3VhbiwKPj4+IElmIHRoZSBwYXRjaCBpZiBPSyBm b3IgeW91LCBjYW4gSSBhZGQgeW91ciBSZXZpZXdlZC1ieSB0YWcgaW50byB0aGlzIHBhdGNoPwo+ IAlUaGUgcGF0Y2ggaXMgb2sgZm9yIG1lLgo+IAo+IAo+IFRoZSBwYXRjaCBpcyBvayBmb3IgbWUu Cj4gCk9LLCBJIHdpbGwgYWRkIHlvdXIgUmV2aWV3ZWQtYnkgdGFnIGluIHRoZSB2ZXJzaW9uIDcg QVNBUC4KQlRXLCBkbyB5b3VyIGNsaWVudHMgZ2l2ZSBhbnkgZmVlZGJhY2sgdG8gaW1wcm92ZSB0 aGUgZmVhdHVyZT8KClJlZ2FyZHMKR3VhbgoKCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0K PiBGcm9tOiBHdWFuIEp1bnhpb25nIFttYWlsdG86Z3Vhbmp1bnhpb25nQGh1YXdlaS5jb21dIAo+ IFNlbnQ6IE1vbmRheSwgT2N0b2JlciAwOSwgMjAxNyA2OjEzIEFNCj4gVG86IE11bmVlbmRyYSBL dW1hciBNIDxtbWFuZGFsYUBCcm9jYWRlLmNvbT4KPiBDYzogU2hlbmhvbmcgKEMpIDxzaGVuaG9u ZzA5QGh1YXdlaS5jb20+OyBuaXVoYW94aW4gPG5pdWhhb3hpbkBodWF3ZWkuY29tPjsgTWFydGlu IFdpbGNrIDxtd2lsY2tAc3VzZS5jb20+OyBDaHJpc3RvcGhlIFZhcm9xdWkgPGNocmlzdG9waGUu dmFyb3F1aUBvcGVuc3ZjLmNvbT47IGRtLWRldmVsQHJlZGhhdC5jb20KPiBTdWJqZWN0OiBSZTog W1BBVENIIFY0IDEvMl0gbXVsdGlwYXRoLXRvb2xzOiBpbnRlcm1pdHRlbnQgSU8gZXJyb3IgYWNj b3VudGluZyB0byBpbXByb3ZlIHJlbGlhYmlsaXR5Cj4gCj4gSGkgTXVuZWVuZHJhLAo+IFNvcnJ5 IGZvciBsYXRlIHJlcGx5IGJlY2F1c2Ugb2YgTmF0aW9uYWwgSG9saWRheS4KPiAKPiBPbiAyMDE3 LzEwLzYgMTM6NTQsIE11bmVlbmRyYSBLdW1hciBNIHdyb3RlOgo+PiBIaSBHdWFuLAo+PiBEaWQg eW91IHB1c2ggdGhlIHBhdGNoIHRvIG1haW5saW5lLgo+PiBJZiBzbyBjYW4geW91IGp1c3QgcHJv dmlkZSBtZSB0aG9zZSBkZXRhaWxzLgo+PiBJZiBub3QgY2FuIHlvdSBqdXN0IGxldCBtZSBrbm93 IHRoZSBzdGF0dXMuCj4+Cj4gCj4gWWVzLCBJIHB1c2hlZCBWZXJzaW9uIDYgb2YgdGhlIHBhdGNo IHRvIHRoZSBtYWlsIGxpc3QgYnV0IGl0IGhhc24ndCBiZWVuIG1lcmdlZCB5ZXQuCj4gSXQgaXMg c3RpbGwgd2FpdGluZyBmb3IgcmV2aWV3Lgo+IFlvdSBjYW4gZmluZCBpdCBhdCB0aGlzIGxpbms6 Cj4gaHR0cHM6Ly91cmxkZWZlbnNlLnByb29mcG9pbnQuY29tL3YyL3VybD91PWh0dHBzLTNBX193 d3cucmVkaGF0LmNvbV9hcmNoaXZlc19kbS0yRGRldmVsXzIwMTctMkRTZXB0ZW1iZXJfbXNnMDAy OTYuaHRtbCZkPUR3SURhUSZjPUlMX1hxUVdPanViZ2ZxSU5pMmpUemcmcj1FM2Z0YzQ3QjZCR3Ra NGZWYVl2a3V2MTl3S3ZDX01jNm5oWGFBMXNCSVAwJm09TjhUMDRvVzZqMGtrY2Y1ZkxwOGpYQTF5 NzVTUk42UE05RC1kTTVuYzJkNCZzPXNCWlRUanBDVlpCM05CZ0dYd1BDRTFmQnRxQW14NzVzMERr QXNWWVJyd2MmZT0KPiAKPj4gQXMgY291cGxlIG9mIG91ciBjbGllbnRzIGFyZSBhbHJlYWR5IHVz aW5nIHRoZSBwcmV2aW91cyBwYXRjaChzYW5fcGF0aF9YWCkuCj4+IElmIHlvdXIgcGF0Y2ggaXMg cHVzaGVkIHRoZW4gSSBjYW4gZ2l2ZSB0aGVtIHRoZSB1cGRhdGVkIHBhdGNoIGFuZCB0ZXN0IHRo ZSBzYW1lLgo+Pgo+IAo+IElmIHRoZSBwYXRjaCBpZiBPSyBmb3IgeW91LCBjYW4gSSBhZGQgeW91 ciBSZXZpZXdlZC1ieSB0YWcgaW50byB0aGlzIHBhdGNoPwo+IAo+IFJlZ2FyZHMsCj4gR3Vhbgo+ IAo+PiBSZWdhcmRzLAo+PiBNdW5lZW5kcmEuCj4+Cj4+Cj4+IC0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tCj4+IEZyb206IE11bmVlbmRyYSBLdW1hciBNIAo+PiBTZW50OiBUaHVyc2RheSwgU2Vw dGVtYmVyIDIxLCAyMDE3IDM6NDEgUE0KPj4gVG86ICdHdWFuIEp1bnhpb25nJyA8Z3Vhbmp1bnhp b25nQGh1YXdlaS5jb20+OyBNYXJ0aW4gV2lsY2sgPG13aWxja0BzdXNlLmNvbT47IGRtLWRldmVs QHJlZGhhdC5jb207IGNocmlzdG9waGUudmFyb3F1aUBvcGVuc3ZjLmNvbQo+PiBDYzogc2hlbmhv bmcwOUBodWF3ZWkuY29tOyBuaXVoYW94aW5AaHVhd2VpLmNvbTsgY2hlbmdqaWtlLmNoZW5nQGh1 YXdlaS5jb20KPj4gU3ViamVjdDogUkU6IFtQQVRDSCBWNCAxLzJdIG11bHRpcGF0aC10b29sczog aW50ZXJtaXR0ZW50IElPIGVycm9yIGFjY291bnRpbmcgdG8gaW1wcm92ZSByZWxpYWJpbGl0eQo+ Pgo+PiBIaSBHdWFuLAo+PiBUaGFua3MgZm9yIGFkb3B0aW5nIHRoZSBuYW1pbmcgY29udmVudGlv bi4gCj4+IEluc3RlYWQgb2YgbWFyZ2luYWxfcGF0aF9lcnJfcmVjaGVja19nYXBfdGltZSwgbWFy Z2luYWxfcGF0aF9yZWNvdmVyeV90aW1lIHdpbGwgbG9va3MgcmVhc29uYWJsZS5Db3VsZCB5b3Ug cGxlYXNlIHJlbG9vayBpbnRvIGl0Lgo+Pgo+PiBJIHdpbGwgcmV2aWV3IHRoZSBjb2RlIGluIGEg ZGF5IHRpbWUuCj4+Cj4+IFJlZ2FyZHMsCj4+IE11bmVlbmRyYS4KPj4KPj4gLS0tLS1PcmlnaW5h bCBNZXNzYWdlLS0tLS0KPj4gRnJvbTogR3VhbiBKdW54aW9uZyBbbWFpbHRvOmd1YW5qdW54aW9u Z0BodWF3ZWkuY29tXSAKPj4gU2VudDogVGh1cnNkYXksIFNlcHRlbWJlciAyMSwgMjAxNyAzOjM1 IFBNCj4+IFRvOiBNdW5lZW5kcmEgS3VtYXIgTSA8bW1hbmRhbGFAQnJvY2FkZS5jb20+OyBNYXJ0 aW4gV2lsY2sgPG13aWxja0BzdXNlLmNvbT47IGRtLWRldmVsQHJlZGhhdC5jb207IGNocmlzdG9w aGUudmFyb3F1aUBvcGVuc3ZjLmNvbQo+PiBDYzogc2hlbmhvbmcwOUBodWF3ZWkuY29tOyBuaXVo YW94aW5AaHVhd2VpLmNvbTsgY2hlbmdqaWtlLmNoZW5nQGh1YXdlaS5jb20KPj4gU3ViamVjdDog UmU6IFtQQVRDSCBWNCAxLzJdIG11bHRpcGF0aC10b29sczogaW50ZXJtaXR0ZW50IElPIGVycm9y IGFjY291bnRpbmcgdG8gaW1wcm92ZSByZWxpYWJpbGl0eQo+Pgo+PiBIaSwgTXVuZWVuZHJhCj4+ Cj4+ICAgVGhhbmtzIGZvciB5b3VyIGNsYXJpZmljYXRpb24uIEkgYWRvcHQgdGhpcyByZW5hbWlu Zy4gSWYgaXQgaXMgY29udmVuaWVudCBmb3IgeW91LCBwbGVhc2UgcmV2aWV3IHRoZSBWNSBwYXRj aCB0aGF0IEkgc2VudCBvdXQgMiBob3VycyBhZ28uCj4+Cj4+IFJlZ2FyZHMsCj4+IEd1YW4KPj4K Pj4gT24gMjAxNy85LzIwIDIwOjU4LCBNdW5lZW5kcmEgS3VtYXIgTSB3cm90ZToKPj4+IEhpIEd1 YW4sCj4+Pj4+PiBTaGFsbCB3ZSB1c2UgZXhpc3RpbmcgUEFUSF9TSEFLWSA/Cj4+PiBBcyB0aGUg cGF0aF9zaGFreSBJbmRpY2F0ZXMgcGF0aCBub3QgYXZhaWxhYmxlIGZvciAibm9ybWFsIiBvcGVy YXRpb25zIHdlIGNhbiB1c2UgdGhpcyBzdGF0ZS4gVGhhdCdzICBhIGdvb2QgaWRlYS4KPj4+Cj4+ PiBSZWdhcmRpbmcgdGhlIG1hcmdpbmFsIHBhdGhzIGJlbG93IGlzIG15IGV4cGxhbmF0aW9uLiBB bmQgYnJvY2FkZSBpcyBwdWJsaXNoaW5nIGNvdXBsZSBvZiB3aGl0ZSBwYXBlcnMgcmVnYXJkaW5n IHRoZSBzYW1lIHRvIGVkdWNhdGUgdGhlIFNBTiBhZG1pbmlzdHJhdG9ycyBhbmQgdGhlIHNhbiBj b21tdW5pdHkuCj4+Pgo+Pj4gTWFyZ2luYWwgcGF0aDoKPj4+Cj4+PiBBIGhvc3QsIHRhcmdldCwg TFVOIChJVEwgcGF0aCkgZmxvdyAgZ29lcyB0aHJvdWdoIFNBTi4gSXQgaXMgdG8gYmUgbm90ZWQg dGhhdCB0aGUgZm9yIGVhY2ggSS9PIHJlcXVlc3QgdGhhdCBnb2VzIHRvIHRoZSBTQ1NJIGxheWVy LCBpdCB0cmFuc2Zvcm1zIGludG8gYSBzaW5nbGUgU0NTSSBleGNoYW5nZS4gIEluIGEgc2luZ2xl IFNBTiwgdGhlcmUgYXJlIHR5cGljYWxseSBtdWx0aXBsZSBTQU4gbmV0d29yayBwYXRocyAgZm9y IGEgSVRMIGZsb3cvcGF0aC4gRWFjaCBTQ1NJIGV4Y2hhbmdlICBjYW4gdGFrZSBvbmUgb2YgdGhl IHZhcmlvdXMgbmV0d29yayBwYXRocyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIHRoZSBJVEwgcGF0 aC4gIEEgU0FOIGNhbiBiZSBiYXNlZCBvbiBFdGhlcm5ldCwgRkMsIEluZmluaWJhbmQgcGh5c2lj YWwgbmV0d29ya3MgdG8gY2FycnkgYmxvY2sgc3RvcmFnZSB0cmFmZmljIChTQ1NJLCBOVk1lIGV0 Yy4pCj4+Pgo+Pj4gVGhlcmUgYXJlIHR5cGljYWxseSB0d28gdHlwZSBvZiBTQU4gbmV0d29yayBw cm9ibGVtcyB0aGF0IGFyZSBjYXRlZ29yaXplZCBhcyBtYXJnaW5hbCBpc3N1ZXMuIFRoZXNlIGlz c3VlcyBieSBuYXR1cmUgYXJlIG5vdCBwZXJtYW5lbnQgaW4gdGltZSBhbmQgZG8gY29tZSBhbmQg Z28gYXdheSBvdmVyIHRpbWUuCj4+PiAxKSBTd2l0Y2hlcyBpbiB0aGUgU0FOIGNhbiBoYXZlIGlu dGVybWl0dGVudCBmcmFtZSBkcm9wcyBvciBpbnRlcm1pdHRlbnQgZnJhbWUgY29ycnVwdGlvbnMg ZHVlIHRvIGJhZCBvcHRpY3MgY2FibGUgKFNGUCkgb3IgYW55IHN1Y2ggd2Vhci90ZWFyICBwb3J0 IGlzc3Vlcy4gVGhpcyBjYXVzZXMgSVRMIGZsb3dzIHRoYXQgZ28gdGhyb3VnaCB0aGUgZmF1bHR5 IHN3aXRjaC9wb3J0IHRvIGludGVybWl0dGVudGx5IGV4cGVyaWVuY2UgZnJhbWUgZHJvcHMuICAK Pj4+IDIpIFRoZXJlIGV4aXN0cyBTQU4gdG9wb2xvZ2llcyB3aGVyZSB0aGVyZSBhcmUgc3dpdGNo IHBvcnRzIGluIHRoZSBmYWJyaWMgdGhhdCBiZWNvbWVzIHRoZSBvbmx5ICBjb25kdWl0IGZvciBt YW55IGRpZmZlcmVudCBJVEwgZmxvd3MgYWNyb3NzIG11bHRpcGxlIGhvc3RzLiBUaGVzZSBzaW5n bGUgbmV0d29yayBwYXRocyBhcmUgZXNzZW50aWFsbHkgc2hhcmVkIGFjcm9zcyBtdWx0aXBsZSBJ VEwgZmxvd3MuIFVuZGVyIHRoZXNlIGNvbmRpdGlvbnMgaWYgdGhlIHBvcnQgbGluayBiYW5kd2lk dGggaXMgbm90IGFibGUgdG8gaGFuZGxlIHRoZSBuZXQgc3VtIG9mIHRoZSBzaGFyZWQgSVRMIGZs b3dzIGJhbmR3aWR0aCBnb2luZyB0aHJvdWdoIHRoZSBzaW5nbGUgcGF0aCAgdGhlbiB3ZSBjb3Vs ZCBzZWUgaW50ZXJtaXR0ZW50IG5ldHdvcmsgY29uZ2VzdGlvbiBwcm9ibGVtcy4gVGhpcyBjb25k aXRpb24gaXMgY2FsbGVkIG5ldHdvcmsgb3ZlcnN1YnNjcmlwdGlvbi4gVGhlIGludGVybWl0dGVu dCBjb25nZXN0aW9ucyBjYW4gZGVsYXkgU0NTSSBleGNoYW5nZSBjb21wbGV0aW9uIHRpbWUgKGlu Y3JlYXNlIGluIEkvTyBsYXRlbmN5IGlzIG9ic2VydmVkKS4KPj4+Cj4+PiBUbyBvdmVyY29tZSB0 aGUgYWJvdmUgbmV0d29yayBpc3N1ZXMgYW5kIG1hbnkgbW9yZSBzdWNoIHRhcmdldCBpc3N1ZXMs IHRoZXJlIGFyZSBmcmFtZSBsZXZlbCByZXRyaWVzIHRoYXQgYXJlIGRvbmUgaW4gSEJBIGRldmlj ZSBmaXJtd2FyZSBhbmQgSS9PIHJldHJpZXMgaW4gdGhlIFNDU0kgbGF5ZXIuIFRoZXNlIHJldHJp ZXMgbWlnaHQgc3VjY2VlZCBiZWNhdXNlIG9mIHR3byByZWFzb25zOgo+Pj4gMSkgVGhlIGludGVy bWl0dGVudCBzd2l0Y2gvcG9ydCBpc3N1ZSBpcyBub3Qgb2JzZXJ2ZWQKPj4+IDIpIFRoZSByZXRy eSBJL08gaXMgYSBuZXcgIFNDU0kgZXhjaGFuZ2UuIFRoaXMgU0NTSSBleGNoYW5nZSAgY2FuIHRh a2UgYW4gYWx0ZXJuYXRlIFNBTiBwYXRoIGZvciB0aGUgSVRMIGZsb3csIGlmIHN1Y2ggYW4gU0FO IHBhdGggZXhpc3RzLgo+Pj4gMykgTmV0d29yayBjb25nZXN0aW9uIGRpc2FwcGVhcnMgbW9tZW50 YXJpbHkgYmVjYXVzZSB0aGUgbmV0IEkvTyBiYW5kd2lkdGggY29taW5nIGZyb20gbXVsdGlwbGUg SVRMIGZsb3dzIG9uIHRoZSBzaW5nbGUgc2hhcmVkIG5ldHdvcmsgcGF0aCBpcyBzb21ldGhpbmcg dGhlIHBhdGggY2FuIGhhbmRsZQo+Pj4KPj4+IEhvd2V2ZXIgaW4gc29tZSBjYXNlcyB3ZSBoYXZl IHNlZW4gSS9PIHJldHJpZXMgZG9u4oCZdCBzdWNjZWVkIGJlY2F1c2UgdGhlIHJldHJ5IEkvT3Mg aGl0cyBhIFNBTiBuZXR3b3JrIHBhdGggdGhhdCBoYXMgIGludGVybWl0dGVudCBzd2l0Y2gvcG9y dCBpc3N1ZSBhbmQvb3IgbmV0d29yayBjb25nZXN0aW9uLiAKPj4+Cj4+PiBPbiB0aGUgaG9zdCAg dGh1cyB3ZSBzZWUgY29uZmlndXJhdGlvbnMgdHdvIG9yIG1vcmUgSVRMIHBhdGggc2hhcmluZyB0 aGUgc2FtZSB0YXJnZXQvTFVOIGdvaW5nIHRocm91Z2ggdHdvIG9yIG1vcmUgSEJBIHBvcnRzLiBU aGVzZSBIQkEgcG9ydHMgYXJlIGNvbm5lY3RlZCB0byB0d28gb3IgbW9yZSBTQU4gdG8gdGhlIHNh bWUgdGFyZ2V0L0xVTi4KPj4+IElmIHRoZSBJL08gZmFpbHMgYXQgdGhlIG11bHRpcGF0aCBsYXll ciB0aGVuLCB0aGUgSVRMIHBhdGggaXMgdHVybmVkIGludG8gRmFpbGVkIHN0YXRlLiBCZWNhdXNl IG9mIHRoZSBtYXJnaW5hbCBuYXR1cmUgb2YgdGhlIG5ldHdvcmssIHRoZSBuZXh0IEhlYWx0aCBD aGVjayBjb21tYW5kIHNlbnQgZnJvbSBtdWx0aXBhdGggbGF5ZXIgbWlnaHQgc3VjY2VlZCwgd2hp Y2ggcmVzdWx0cyBpbiBtYWtpbmcgdGhlIElUTCBwYXRoIGludG8gQWN0aXZlIHN0YXRlLiBZb3Ug ZW5kIHVwIHNlZWluZyB0aGUgRE0gcGF0aCBzdGF0ZSBnb2luZyAgaW50byBBY3RpdmUsIEZhaWxl ZCwgQWN0aXZlIHRyYW5zaXRpb25zLiBUaGlzIHJlc3VsdHMgaW4gb3ZlcmFsbCByZWR1Y3Rpb24g aW4gYXBwbGljYXRpb24gSS9PIHRocm91Z2hwdXQgYW5kIHNvbWV0aW1lIGFwcGxpY2F0aW9uIEkv TyBmYWlsdXJlcyAoYmVjYXVzZSBvZiB0aW1pbmcgY29uc3RyYWludHMpLiBBbGwgdGhpcyBjYW4g aGFwcGVuIGJlY2F1c2Ugb2YgSS9PIHJldHJpZXMgYW5kIEkvTyByZXF1ZXN0IG1vdmluZyBhY3Jv c3MgbXVsdGlwbGUgcGF0aHMgb2YgdGhlIERNIGRldmljZS4gSW4gdGhlIGhvc3QgaXQgaXMgIHRv IGJlIG5vdGVkIGFsbCBJL08gcmV0cmllcyBvbiBhIHNpbmdsZSBwYXRoIGFuZCBJL08gbW92ZW1l bnQgYWNyb3NzIG11bHRpcGxlIHBhdGhzIHJlc3VsdHMgaW4gc2xvd2luZyBkb3duIHRoZSBmb3J3 YXJkIHByb2dyZXNzIG9mIG5ldyBhcHBsaWNhdGlvbiBJL08uIFJlYXNvbiBiZWhpbmQsIHRoZSBh Ym92ZSBJL08gIHJlLXF1ZXVlIGFjdGlvbnMgYXJlIGdpdmVuIGhpZ2hlciBwcmlvcml0eSB0aGFu IHRoZSBuZXdlciBJL08gcmVxdWVzdHMgY29taW5nIGZyb20gdGhlIGFwcGxpY2F0aW9uLiAKPj4+ Cj4+PiBUaGUgYWJvdmUgY29uZGl0aW9uIG9mIHRoZSAgSVRMIHBhdGggaXMgaGVuY2UgY2FsbGVk IOKAnG1hcmdpbmFs4oCdLgo+Pj4KPj4+IFdoYXQgd2UgZGVzaXJlIGlzIGZvciB0aGUgRE0gdG8g ZGV0ZXJtaW5pc3RpY2FsbHkgIGNhdGVnb3JpemUgYSBJVEwgUGF0aCBhcyDigJxtYXJnaW5hbOKA nSBhbmQgbW92ZSBhbGwgdGhlIHBlbmRpbmcgSS9PcyBmcm9tIHRoZSBtYXJnaW5hbCBQYXRoIHRv IGFuIEFjdGl2ZSBQYXRoLiBUaGlzIHdpbGwgaGVscCBpbiBtZWV0aW5nIGFwcGxpY2F0aW9uIEkv TyB0aW1pbmcgY29uc3RyYWludHMuIEFsc28gYSBjYXBhYmlsaXR5IHRvIGF1dG9tYXRpY2FsbHkg cmUtaW5zdGFudGlhdGUgdGhlIG1hcmdpbmFsIHBhdGggaW50byBBY3RpdmUgb25jZSB0aGUgbWFy Z2luYWwgY29uZGl0aW9uIGluIHRoZSBuZXR3b3JrIGlzIGZpeGVkLgo+Pj4KPj4+Cj4+PiBCYXNl ZCBvbiB0aGUgYWJvdmUgZXhwbGFuYXRpb24gSSB3YW50IHRvIHJlbmFtZSB0aGUgbmFtZXMgYXMg bWFyZ2luYWxfcGF0aF9YWFhYIGFuZCB0aGlzIGlzIGlycmVzcGVjdGl2ZSBvZiBhbnkgc3RvcmFn ZSBuZXR3b3JrLgo+Pj4KPj4+IFJlZ2FyZHMsCj4+PiBNdW5lZW5kcmEuCj4+Cj4gCgoKLS0KZG0t ZGV2ZWwgbWFpbGluZyBsaXN0CmRtLWRldmVsQHJlZGhhdC5jb20KaHR0cHM6Ly93d3cucmVkaGF0 LmNvbS9tYWlsbWFuL2xpc3RpbmZvL2RtLWRldmVs