From mboxrd@z Thu Jan 1 00:00:00 1970 From: kedacomkernel Subject: Re: Re: [RFC 1/2]raid1: only write mismatch sectors in sync Date: Thu, 18 Oct 2012 09:30:32 +0800 Message-ID: <201210180930299243466@gmail.com> References: <20120731155304.11c40f9b@notabene.brown> <20120911105908.51681433@notabene.brown> <20120912052941.GA15827@kernel.org> <20120918145710.55394bd4@notabene.brown> <20120919055106.GA1305@kernel.org> <20120919171646.6bc35ba5@notabene.brown> <20120920015655.GB6798@kernel.org> <20121017051113.GA17821@kernel.org> <20121018095601.7aa3238b@notabene.brown>, <20121018011735.GA1448@kernel.org> Reply-To: kedacomkernel Mime-Version: 1.0 Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 Return-path: Sender: linux-raid-owner@vger.kernel.org To: Shaohua Li , NeilBrown Cc: linux-raid List-Id: linux-raid.ids Pk9uIFRodSwgT2N0IDE4LCAyMDEyIGF0IDA5OjU2OjAxQU0gKzExMDAsIE5laWxCcm93biB3cm90 ZToNCj4+IE9uIFdlZCwgMTcgT2N0IDIwMTIgMTM6MTE6MTMgKzA4MDAgU2hhb2h1YSBMaSA8c2hs aUBrZXJuZWwub3JnPiB3cm90ZToNCj4+IA0KPj4gPiBPbiBUaHUsIFNlcCAyMCwgMjAxMiBhdCAw OTo1Njo1NUFNICswODAwLCBTaGFvaHVhIExpIHdyb3RlOg0KPj4gPiA+IE9uIFdlZCwgU2VwIDE5 LCAyMDEyIGF0IDA1OjE2OjQ2UE0gKzEwMDAsIE5laWxCcm93biB3cm90ZToNCj4+ID4gPiA+IE9u IFdlZCwgMTkgU2VwIDIwMTIgMTM6NTE6MDYgKzA4MDAgU2hhb2h1YSBMaSA8c2hsaUBrZXJuZWwu b3JnPiB3cm90ZToNCj4+ID4gPiA+IA0KPj4gPiA+ID4gPiBPbiBUdWUsIFNlcCAxOCwgMjAxMiBh dCAwMjo1NzoxMFBNICsxMDAwLCBOZWlsQnJvd24gd3JvdGU6DQo+PiA+ID4gPiA+ID4gT24gV2Vk LCAxMiBTZXAgMjAxMiAxMzoyOTo0MSArMDgwMCBTaGFvaHVhIExpIDxzaGxpQGtlcm5lbC5vcmc+ IHdyb3RlOg0KPj4gPiA+ID4gPiA+IA0KPj4gPiA+ID4gPiA+ID4gT24gVHVlLCBTZXAgMTEsIDIw MTIgYXQgMTA6NTk6MDhBTSArMTAwMCwgTmVpbEJyb3duIHdyb3RlOg0KPj4gPiA+ID4gPiA+ID4g PiBPbiBUdWUsIDMxIEp1bCAyMDEyIDE2OjEyOjA0ICswODAwIFNoYW9odWEgTGkgPHNobGlAa2Vy bmVsLm9yZz4gd3JvdGU6DQo+PiA+ID4gPiA+ID4gPiA+IA0KPj4gPiA+ID4gPiA+ID4gPiA+IDIw MTIvNy8zMSBOZWlsQnJvd24gPG5laWxiQHN1c2UuZGU+Og0KPj4gPiA+ID4gPiA+ID4gPiA+ID4g T24gVGh1LCAyNiBKdWwgMjAxMiAxNjowMTo1MCArMDgwMCBTaGFvaHVhIExpIDxzaGxpQGtlcm5l bC5vcmc+IHdyb3RlOg0KPj4gPiA+ID4gPiA+ID4gPiA+ID4NCj4+ID4gPiA+ID4gPiA+ID4gPiA+ PiBXcml0ZSBoYXMgc29tZSBpbXBhY3RzIHRvIFNTRDoNCj4+ID4gPiA+ID4gPiA+ID4gPiA+PiAx LiB3ZWFyIG91dCBmbGFzaC4gRnJlcXVlbnQgd3JpdGUgY2FuIHNwZWVkIG91dCB0aGUgcHJvZ3Jl c3MuDQo+PiA+ID4gPiA+ID4gPiA+ID4gPj4gMi4gaW5jcmVhc2UgdGhlIGJ1cmRlbiBvZiBnYXJi YWdlIGNvbGxlY3Rpb24gb2YgU1NEIGZpcm13YXJlLiBJZiBubyBzcGFjZQ0KPj4gPiA+ID4gPiA+ ID4gPiA+ID4+IGxlZnQgZm9yIHdyaXRlLCBTU0QgZmlybXdhcmUgZ2FyYmFnZSBjb2xsZWN0aW9u IHdpbGwgdHJ5IHRvIGZyZWUgc29tZSBzcGFjZS4NCj4+ID4gPiA+ID4gPiA+ID4gPiA+PiAzLiBz bG93IGRvd24gc3Vic2VxdWVudCB3cml0ZS4gQWZ0ZXIgd3JpdGUgU1NEIHRvIHNvbWUgZXh0ZW50 cyAoZm9yIGV4YW1wbGUsDQo+PiA+ID4gPiA+ID4gPiA+ID4gPj4gd3JpdGUgdGhlIHdob2xlIGRp c2spLCBzdWJzZXF1ZW50IHdyaXRlIHdpbGwgc2xvdyBkb3duIHNpZ25pZmljYW50bHkgKGJlY2F1 c2UNCj4+ID4gPiA+ID4gPiA+ID4gPiA+PiBhbG1vc3QgZXZlcnkgd3JpdGUgaW52b2tlcyBnYXJi YWdlIGNvbGxlY3Rpb24gaW4gc3VjaCBjYXNlKS4NCj4+ID4gPiA+ID4gPiA+ID4gPiA+Pg0KPj4g PiA+ID4gPiA+ID4gPiA+ID4+IFdlIHdhbnQgdG8gYXZvaWQgdW5uZWNlc3Nhcnkgd3JpdGUgYXMg bW9yZSBhcyBwb3NzaWJsZS4gcmFpZCBzeW5jIGdlbmVyYWxseQ0KPj4gPiA+ID4gPiA+ID4gPiA+ ID4+IGludm9sdmVzIGEgbG90IG9mIHVubmVjZXNzYXJ5IHdyaXRlLiBGb3IgZXhhbXBsZSwgZXZl biB0d28gZGlza3MgZG9uJ3QgaGF2ZQ0KPj4gPiA+ID4gPiA+ID4gPiA+ID4+IGFueSBkYXRhLCB3 ZSB3cml0ZSB0aGUgc2Vjb25kIGRpc2sgZm9yIHRoZSB3aG9sZSBkaXNrIHNpemUuDQo+PiA+ID4g PiA+ID4gPiA+ID4gPj4NCj4+ID4gPiA+ID4gPiA+ID4gPiA+PiBUbyByZWR1Y2Ugd3JpdGUsIHdl IGFsd2F5cyBjb21wYXJlIHJhaWQgZGlzayBkYXRhIGFuZCBvbmx5IHdyaXRlIG1pc21hdGNoIHBh cnQuDQo+PiA+ID4gPiA+ID4gPiA+ID4gPj4gVGhpcyBtZWFucyBzeW5jIHdpbGwgaGF2ZSBleHRy YSBJTyByZWFkIGFuZCBtZW1vcnkgY29tcGFyZS4gU28gdGhpcyBzY2hlbWUgaXMNCj4+ID4gPiA+ ID4gPiA+ID4gPiA+PiB2ZXJ5IGJhZCBmb3IgaGFyZCBkaXNrIHJhaWQgYW5kIHNvbWV0aW1lcyBT U0QgcmFpZCB0b28gaWYgbWlzbWF0Y2ggcGFydCBpcw0KPj4gPiA+ID4gPiA+ID4gPiA+ID4+IG1h am9yaXR5LiBCdXQgc29tZXRpbWVzIHRoaXMgY2FuIGJlIHZlcnkgaGVscGZ1bCB0byByZWR1Y2Ug d3JpdGUsIGluIHRoYXQgY2FzZSwNCj4+ID4gPiA+ID4gPiA+ID4gPiA+PiBzaW5jZSBzeW5jIGlz IHJhcmUgb3BlcmF0aW9uLCB0aGUgZXh0cmEgSU8vQ1BVIHVzYWdlIGlzIHdvcnRoeSBwYXlpbmcu IFBlb3BsZQ0KPj4gPiA+ID4gPiA+ID4gPiA+ID4+IHdobyB3YW50IHRvIHVzZSB0aGUgZmVhdHVy ZSBzaG91bGQgdW5kZXJzdGFuZCB0aGUgcmlzayBmaXJzdC4gU28gdGhpcyBhYmlsaXR5DQo+PiA+ ID4gPiA+ID4gPiA+ID4gPj4gaXMgb2ZmIGJ5IGRlZmF1bHQsIGEgc3lzZnMgZW50cnkgY2FuIGJl IHVzZWQgdG8gZW5hYmxlIGl0Lg0KPj4gPiA+ID4gPiA+ID4gPiA+ID4+DQo+PiA+ID4gPiA+ID4g PiA+ID4gPj4gU2lnbmVkLW9mZi1ieTogU2hhb2h1YSBMaSA8c2hsaUBmdXNpb25pby5jb20+DQo+ PiA+ID4gPiA+ID4gPiA+ID4gPj4gLS0tDQo+PiA+ID4gPiA+ID4gPiA+ID4gPj4gIGRyaXZlcnMv bWQvbWQuYyAgICB8ICAgNDEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPj4gPiA+ ID4gPiA+ID4gPiA+ID4+ICBkcml2ZXJzL21kL21kLmggICAgfCAgICAzICsrDQo+PiA+ID4gPiA+ ID4gPiA+ID4gPj4gIGRyaXZlcnMvbWQvcmFpZDEuYyB8ICAgNzAgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0NCj4+ID4gPiA+ID4gPiA+ID4gPiA+ PiAgMyBmaWxlcyBjaGFuZ2VkLCAxMTAgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkNCj4+ ID4gPiA+ID4gPiA+ID4gPiA+Pg0KPj4gPiA+ID4gPiA+ID4gPiA+ID4+IEluZGV4OiBsaW51eC9k cml2ZXJzL21kL21kLmgNCj4+ID4gPiA+ID4gPiA+ID4gPiA+PiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+PiA+ID4g PiA+ID4gPiA+ID4gPj4gLS0tIGxpbnV4Lm9yaWcvZHJpdmVycy9tZC9tZC5oICAgICAgICAyMDEy LTA3LTI1IDEzOjUxOjAwLjM1Mzc3NTUyMSArMDgwMA0KPj4gPiA+ID4gPiA+ID4gPiA+ID4+ICsr KyBsaW51eC9kcml2ZXJzL21kL21kLmggICAgIDIwMTItMDctMjYgMTA6MzY6MzguNTAwNzQwNTUy ICswODAwDQo+PiA+ID4gPiA+ID4gPiA+ID4gPj4gQEAgLTMyNSw2ICszMjUsOSBAQCBzdHJ1Y3Qg bWRkZXYgew0KPj4gPiA+ID4gPiA+ID4gPiA+ID4+ICAjZGVmaW5lICAgICAgTURfUkVDT1ZFUllf RlJPWkVOICAgICAgOQ0KPj4gPiA+ID4gPiA+ID4gPiA+ID4+DQo+PiA+ID4gPiA+ID4gPiA+ID4g Pj4gICAgICAgdW5zaWduZWQgbG9uZyAgICAgICAgICAgICAgICAgICByZWNvdmVyeTsNCj4+ID4g PiA+ID4gPiA+ID4gPiA+PiArI2RlZmluZSBNRF9SRUNPVkVSWV9NT0RFX1JFUEFJUiAgICAgICAg ICAgICAgMA0KPj4gPiA+ID4gPiA+ID4gPiA+ID4+ICsjZGVmaW5lIE1EX1JFQ09WRVJZX01PREVf RElTQ0FSRCAgICAgMQ0KPj4gPiA+ID4gPiA+ID4gPiA+ID4+ICsgICAgIHVuc2lnbmVkIGxvbmcg ICAgICAgICAgICAgICAgICAgcmVjb3ZlcnlfbW9kZTsNCj4+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ PiA+ID4gPiA+ID4gPiA+ID4gPiBZb3UgaGF2ZSBub3QgZG9jdW1lbnRlZCB0aGUgbWVhbmluZyBv ZiB0aGVzZSB0d28gZmxhZ3MgYXQgYWxsLCBhbmQgSSBkb24ndA0KPj4gPiA+ID4gPiA+ID4gPiA+ ID4gZmVlbCB1cCB0byBndWVzc2luZy4NCj4+ID4gPiA+ID4gPiA+ID4gPiA+DQo+PiA+ID4gPiA+ ID4gPiA+ID4gPiBUaGUgcGF0Y2ggbG9va3MgbW9yZSBjb21wbGV4IHRoYXQgaXQgc2hvdWxkIGJl LiAgVGhlIGJlaGF2aW91ciB5b3UgYXJlDQo+PiA+ID4gPiA+ID4gPiA+ID4gPiBzdWdnZXN0aW5n IGlzIGV4YWN0bHkgdGhlIGJlaGF2aW91ciB5b3UgZ2V0IHdoZW4gTURfUkVDT1ZFUllfUkVRVUVT VEVEIGlzDQo+PiA+ID4gPiA+ID4gPiA+ID4gPiBzZXQsIHNvIGF0IG1vc3QgSSBleHBlY3QgdG8g c2VlIGEgZmV3IHBsYWNlcyB3aGVyZSB0aGF0IGZsYWcgaXMgdGVzdGVkDQo+PiA+ID4gPiA+ID4g PiA+ID4gPiBjaGFuZ2VkIHRvIHRlc3Qgc29tZXRoaW5nIGVsc2UgYXMgd2VsbC4NCj4+ID4gPiA+ ID4gPiA+ID4gPiA+DQo+PiA+ID4gPiA+ID4gPiA+ID4gPiBIb3cgd291bGQgdGhpcyBiZSB1c2Vk PyAgSXQgYWZmZWN0cyByZXN5bmMgYW5kIHJlc3luYyBoYXBwZW5zIGFzIHNvb24gYXMgdGhlDQo+ PiA+ID4gPiA+ID4gPiA+ID4gPiBhcnJheSBpcyBhc3NlbWJsZWQuICBTbyB3aGVuIGFuZCBob3cg d291bGQgeW91IHNldCB0aGUgZmxhZyB3aGljaCBzYXlzDQo+PiA+ID4gPiA+ID4gPiA+ID4gPiAi cHJlZmVyIHJlYWRzIHRvIHdyaXRlcyI/ICBJdCBzZWVtcyBsaWtlIGl0IG5lZWRzIHRvIGJlIHNl dCBpbiB0aGUgbWV0YWRhdGEuDQo+PiA+ID4gPiA+ID4gPiA+ID4gPg0KPj4gPiA+ID4gPiA+ID4g PiA+ID4gQlRXIFJBSUQxMCBhbHJlYWR5IGRvZXMgdGhpcyAtIGl0IHJlYWRzIGFuZCBjb21wYXJl cyBmb3IgYSBub3JtYWwgc3luYy4gIFNvDQo+PiA+ID4gPiA+ID4gPiA+ID4gPiBtYXliZSBqdXN0 IHRlbGwgcGVvcGxlIHRvIHVzZSByYWlkMTAgaWYgdGhleSB3YW50IHRoaXMgYmVoYXZpb3VyPw0K Pj4gPiA+ID4gPiA+ID4gPiA+IA0KPj4gPiA+ID4gPiA+ID4gPiA+IEl0J3MgdHJ1ZSwgdGhlIGJl aGF2aW9yIGxpa2VzIE1EX1JFQ09WRVJZX1JFUVVFU1RFRCwgaWUsIHJlYWQgYWxsIGRpc2tzLA0K Pj4gPiA+ID4gPiA+ID4gPiA+IG9ubHkgZG8gd3JpdGUgaWYgdHdvIGRpc2sgZGF0YSBub3QgbWF0 Y2guIEJ1dCBJIGhvcGUgaXQgd29ya3MgYXMgc29vbiBhcyB0aGUNCj4+ID4gPiA+ID4gPiA+ID4g PiBhcnJheSBpcyBhc3NlbWJsZWQuIFN1cmVseSB3ZSBjYW4gc2V0IGluIHRoZSBtZXRhZGF0YSwg YnV0IEkgZGlkbid0IHdhbnQgdG8NCj4+ID4gPiA+ID4gPiA+ID4gPiBlbmFibGUgaXQgYnkgZGVm YXVsdCwgc2luY2UgZXZlbiB3aXRoIFNTRCwgdGhlIHJlYWQtY29tcGFyZS13cml0ZSBpc24ndCBv cHRpbWFsDQo+PiA+ID4gPiA+ID4gPiA+ID4gc29tZSB0aW1lcywgYmVjYXVzZSBpdCBpbnZvbHZl cyBleHRyYSBJTyByZWFkIGFuZCBtZW1vcnkgY29tcGFyZS4NCj4+ID4gPiA+ID4gPiA+ID4gPiAN Cj4+ID4gPiA+ID4gPiA+ID4gPiBJdCBhcHBlYXJzIE1EX1JFQ09WRVJZX1JFUVVFU1RFRCBhc3N1 bWVzIGRpc2tzIGFyZSBpbnN5bmMuDQo+PiA+ID4gPiA+ID4gPiA+ID4gSXQgZG9lc24ndCByZWFk IGRpc2sgIWluc3luYywgc28gaXQgZG9lc24ndCB3b3JrIGZvciBhc3NlbWJsZS4NCj4+ID4gPiA+ ID4gPiA+ID4gPiANCj4+ID4gPiA+ID4gPiA+ID4gPiBJbiBteSBtaW5kLCB1c2VyIGZyb3plbiB0 aGUgc3luYyBmaXJzdCAod2l0aCBzeW5jX2FjdGlvbiBzZXR0aW5nKSwgYW5kIHRoZW4NCj4+ID4g PiA+ID4gPiA+ID4gPiBlbmFibGUgcmVhZC1jb21wYXJlLXdyaXRlLCBhbmQgZmluYWxseSBjb250 aW51ZSB0aGUgc3luYy4gSSBjYW4ndCBzdG9wDQo+PiA+ID4gPiA+ID4gPiA+ID4gYSByZWNvdmVy eSBhbmQgc2V0IE1EX1JFQ09WRVJZX1JFUVVFU1RFRCwgc28gSSBhZGRlZCBhIGZsYWcuDQo+PiA+ ID4gPiA+ID4gPiA+ID4gQW55d2F5LCBwbGVhc2Ugc3VnZ2VzdCB3aGF0IHRoZSBwcmVmZXJyZWQg d2F5IGZvciB0aGlzLg0KPj4gPiA+ID4gPiA+ID4gPiANCj4+ID4gPiA+ID4gPiA+ID4gSSBndWVz cyBJIGp1c3QgZG9uJ3QgZmluZCB0aGlzIGZ1bmN0aW9uYWxpdHkgYXQgYWxsIGNvbnZpbmNpbmcu ICBJdCBpc24ndA0KPj4gPiA+ID4gPiA+ID4gPiBjbGVhciB3aGVuIGFueW9uZSB3b3VsZCB1c2Ug aXQsIG9yIGhvdyB0aGV5IHdvdWxkIHVzZSBpdC4gIEl0IHNlZW1zIGJlc3Qgbm90DQo+PiA+ID4g PiA+ID4gPiA+IHRvIHByb3ZpZGUgaXQuDQo+PiA+ID4gPiA+ID4gPiANCj4+ID4gPiA+ID4gPiA+ IFRoZSBiYWNrZ3JvdW5kIGlzOiBGb3IgU1NELCB3cml0dGluZyBhIGhhcmQgZm9ybWF0dGVkIGRp c2sgYW5kIGZ1bGx5IGZpbGxlZA0KPj4gPiA+ID4gPiA+ID4gZGlzaywgdGhlIGZpcnN0IGNhc2Ug Y291bGQgYmUgMzAwJSBmYXN0ZXIgdGhhbiB0aGUgc2Vjb25kIGNhc2UgZGVwZW5kaW5nIG9uIFNT RA0KPj4gPiA+ID4gPiA+ID4gZmlybXdhcmUgYW5kIGhvdyBmcmFnbWVudGVkIHRoZSBmaWxsZWQg ZGlzayBpcy4gU28gdGhpcyBpc24ndCBhIHRyaXZhbA0KPj4gPiA+ID4gPiA+ID4gcGVyZm9ybWFu Y2UgaXNzdWUuDQo+PiA+ID4gPiA+ID4gPiANCj4+ID4gPiA+ID4gPiA+IFRoZSB1c2FnZSBtb2Rl bCBpcyBzb21ldGhpbmcgbGlrZSB0aGlzOiBvbmUgZGlzayBpcyBib3JrZW4sIGFkZCBhIG5ldyBk aXNrIHRvDQo+PiA+ID4gPiA+ID4gPiB0aGUgcmFpZC4gQ3VycmVudGx5IHdlIGNvcHkgdGhlIHdo b2xlIGRpc2sgb2YgdGhlIGZpcnN0IGRpc2sgdG8gdGhlIHNlY29uZC4gRm9yDQo+PiA+ID4gPiA+ ID4gPiBTU0QsIGlmIHRoZSBmaXJzdCBkaXNrIGFuZCBzZWNvbmQgZGlzayBoYXZlIG1vc3QgZGF0 YSBpZGVudGljYWwgb3IgbW9zdCBjb250ZW50DQo+PiA+ID4gPiA+ID4gPiBvZiB0aGUgZmlyc3Qg aXMgMCwgdGhlIGNvcHkgaXMgdmVyeSBiYWQuIEluIHRoaXMgc2NlbmFyaW8sIHdlIGNhbiBhdm9p ZCBzb21lDQo+PiA+ID4gPiA+ID4gPiBjb3B5LCB3aGljaCB3aWxsIG1ha2UgbGF0dGVyIHdyaXRl IHRvIHRoZSBkaXNrIGZhc3Rlci4gVGhpbmtpbmcgYWJvdXQgMzAwJQ0KPj4gPiA+ID4gPiA+ID4g ZmFzdGVyIDopLg0KPj4gPiA+ID4gPiA+ID4gDQo+PiA+ID4gPiA+ID4gPiBJIGRvbid0IHRoaW5r IHdlIGNhbiBkbyB0aGlzIGluIHVuZGVybGF5ZXIuIFdlIGRvbid0IHdhbnQgdG8gZG8gaXQgYWx3 YXlzLg0KPj4gPiA+ID4gPiA+ID4gRGV0ZWN0aW5nIDAgaXMgdmVyeSBleHBlbnNpdmUuDQo+PiA+ ID4gPiA+ID4gPiANCj4+ID4gPiA+ID4gPiA+IEFuZCB0aGlzIGlzbid0IGludHJ1c2l2ZSB0byBt ZS4gV2Ugb25seSBkbyB0aGUgJ2NvcHkgYXZvaWRuZXNzJyBpbiBzeW5jLCBhbmQNCj4+ID4gPiA+ ID4gPiA+IHN5bmMgaXMgcmFyZSBldmVudC4NCj4+ID4gPiA+ID4gPiA+IA0KPj4gPiA+ID4gPiA+ ID4gSSBob3BlIHRvIGNvbnZpbmNlIHlvdSB0aGlzIGlzIGEgdXNlZnVsIGZ1bmN0aW9uYWxpdHks IHRoZW4gd2UgY2FuIGRpc2N1c3MgdGhlDQo+PiA+ID4gPiA+ID4gPiBpbXBsZW1lbnRhdGlvbi4N Cj4+ID4gPiA+ID4gPiA+IA0KPj4gPiA+ID4gPiA+IA0KPj4gPiA+ID4gPiA+IExldCdzIHN0YXJ0 IHdpdGggIndoZW4gd291bGQgc29tZW9uZSB1c2UgaXQiLg0KPj4gPiA+ID4gPiA+IA0KPj4gPiA+ ID4gPiA+IFlvdSBzYWlkIHRoYXQgeW91IGRvbid0IHdhbnQgdG8gbWFrZSBpdCB0aGUgZGVmYXVs dC4gIElmIHNvbWV0aGluZyBpc24ndCBhDQo+PiA+ID4gPiA+ID4gZGVmYXVsdCBpdCB3aWxsIG5v dCBiZSB1c2VkIHZlcnkgb2Z0ZW4sIGFuZCB3aWxsIG9ubHkgYmUgdXNlZCBhdCBhbGwgaWYgaXQg aXMNCj4+ID4gPiA+ID4gPiByZWFzb25hYmx5IGVhc3kgdG8gdXNlLg0KPj4gPiA+ID4gPiA+IFNv IGhvdyB3b3VsZCBzb21lb25lIHVzZSB0aGlzPyAgV2hhdCB3b3VsZCBtYWtlIHRoZW0gY2hvb3Nl IHRvIHVzZSBpdCwgYW5kDQo+PiA+ID4gPiA+ID4gd2hhdCBhY3Rpb24gd291bGQgdGhhdCB0YWtl IHRvIG1ha2UgaXQgaGFwcGVuPw0KPj4gPiA+ID4gPiANCj4+ID4gPiA+ID4gT2ssIGxldCBtZSBl eHBsYWluIHRoZSB1c2FnZSBtb2RlbC4NCj4+ID4gPiA+ID4gDQo+PiA+ID4gPiA+IEZvciAnY29t cGFyZSBhbmQgYXZvaWQgd3JpdGUgaWYgZXF1YWwnIGNhc2U6DQo+PiA+ID4gPiA+IDEuIHVwZGF0 ZSBTU0QgZmlybXdhcmUuIFRoaXMgZG9lc24ndCBjaGFuZ2UgdGhlIGRhdGEsIGJ1dCB3ZSBuZWVk IHRha2Ugb25lIGRpc2sNCj4+ID4gPiA+ID4gb2ZmIGZyb20gdGhlIHJhaWQgb25lIHRpbWUuDQo+ PiA+ID4gPiA+IDIuIE9uZSBkaXNrIGhhcyBlcnJvcnMsIGJ1dCB0aGVzZSBlcnJvcnMgZG9uJ3Qg cnVpbiBtb3N0IG9mIHRoZSBkYXRhIChmb3INCj4+ID4gPiA+ID4gZXhhbXBsZSwgYSBwY2llIGVy cm9yKQ0KPj4gPiA+ID4gPiAzLiBkcml2ZXIvb3MgY3Jhc2guDQo+PiA+ID4gPiA+IEluIGFsbCB0 aGVzZSBjYXNlcywgdHdvIHJhaWQgZGlza3MgbXVzdCBiZSByZXN5bmMsIGFuZCB0aGV5IGhhdmUg YWxtb3N0IGlkZW50aWNhbA0KPj4gPiA+ID4gPiBkYXRhLiB3cml0ZSBhdm9pZG5lc3Mgd2lsbCBi ZSB2ZXJ5IGhlbHBmdWwgZm9yIHRoZXNlLg0KPj4gPiA+ID4gDQo+PiA+ID4gPiBUaGlzIGlzIGFs bCB2YWxpZCwgYnV0IGRvZXNuJ3QgZXhwbGFpbiBob3cgaXQgYWN0dWFsbHkgaGFwcGVucy4NCj4+ ID4gPiANCj4+ID4gPiBUaG9zZSBhcmUgcmVhbCB1c2UgY2FzZXMgYWN0dWFsbHkuDQo+PiA+ID4g IA0KPj4gPiA+ID4gTWF5YmUgdGhlIHJzeW5jIHNob3VsZCBpbml0aWFsbHkgZG8gYSBjb21wYXJp c29uIGFuZCB3cml0ZS1pZi1kaWZmZXJlbnQuICBJZg0KPj4gPiA+ID4gYXQgYW55IHRpbWUgYWZ0 ZXIgdGhlIGZpcnN0IG1lZ2FieXRlIHRoZSBmcmFjdGlvbiBvZiBibG9ja3MgdGhhdCByZXF1aXJl cyBhDQo+PiA+ID4gPiB3cml0ZSBleGNlZWRzIChzYXkpIDEwJSwgd2Ugc3dpdGNoIHRvICJyZWFk IG9uZSwgd3JpdGUgdGhlIG90aGVycyIuDQo+PiA+ID4gPiA/Pw0KPj4gPiA+IA0KPj4gPiA+IE5v dCBzdXJlLCBidXQgdGhpcyB3aWxsIGxpbWl0IHRoZSB1c2FnZS4gRm9yIGV4YW1wbGUsIGluIG15 IGNhc2UgMSwgdGhlIGZpcnN0DQo+PiA+ID4gZGlzayBjYW4gYmUgd3JpdHRlbiBzbGlnaHRseSB3 aGVuIHRoZSBzZWNvbmQgZGlzayBpcyBkb2luZyBmaXJtd2FyZSB1cGdyYWRlLg0KPj4gPiA+IFRo ZSB3cml0ZSBjYW4gYmUgaW4gdGhlIGZpcnN0IDFNIGZvciBzdXJlLg0KPj4gPiA+ICANCj4+ID4g PiA+ID4gRm9yICdjb21wYXJlIGFuZCB0cmltIGlmIHNvdXJjZSBkaXNrIGRhdGEgaXMgMCcgY2Fz ZToNCj4+ID4gPiA+ID4gSWYgZmlsZXN5c3RlbSBzdXBwb3J0IHRyaW0sIHRoaXMgY2FuIGJlIGVu YWJsZWQgYWx3YXlzIChvciBhdCBsZWFzdCB3ZSBjYW4NCj4+ID4gPiA+ID4gZW5hYmxlIGl0IGlm IHVzZWQgY2FwYWNpdHkgb2YgdGhlIGRpc2sgaXMgbGVzcyB0aGFuIDgwJSBmb3IgZXhhbXBsZSku DQo+PiA+ID4gPiANCj4+ID4gPiA+IE9uZSBvZiBteSBjb25jZXJucyBhYm91dCB0aGlzIGlzIHRo YXQgSSB3b3VsZCBleHBlY3Qgc21hcnQgZmxhc2ggZHJpdmVzIHRvDQo+PiA+ID4gPiBhY3R1YWxs eSBkbyB0aGlzIHplcm8tZGV0ZWN0aW9uIGludGVybmFsbHkuICBNYXliZSB0aGV5IGRvbid0IG5v dywgYnV0IHN1cmVseQ0KPj4gPiA+ID4gdGhleSB3aWxsIHNvb24uICBCeSB0aGUgdGltZSB3ZSBn ZXQgdGhpcyBmZWF0dXJlIGludG8gcHJvZHVjdGlvbiB0aGVyZSBzZWVtcw0KPj4gPiA+ID4gYSBy ZWFzb25hYmx5IGNoYW5jZSB0aGF0IGl0IHdvbid0IGJlIG5lZWRlZCAtIGF0IGxlYXN0IG9uIG5l dyBoYXJkd2FyZS4NCj4+ID4gPiANCj4+ID4gPiBEb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gbWUuIHpl cm8tZGV0ZWN0aW9uIGlzIHZlcnkgZXhwZW5zaXZlLiBibGluZGx5IGRvaW5nIGl0DQo+PiA+ID4g Zm9yIGV2ZXJ5IHJlcXVlc3QgaXMgaW5zYW5lLiBXaGlsZSBteSBwcm9wb3NhbCBpcyBqdXN0IGRv aW5nIGl0IGZvciBzeW5jLCB3aGljaA0KPj4gPiA+IGlzIGEgcmFyZSBzY2VuYXJpby4NCj4+ID4g PiAgDQo+PiA+ID4gPiBBbmQgb24gb2xkIGhhcmR3YXJlIEkgYmVsaWV2ZSB0aGF0ICdkaXNjYXJk JyBpc24ndCBwYXJ0aWN1bGFybHkgZmFzdCAoYXMgaXQNCj4+ID4gPiA+IGNhbm5vdCBiZSBxdWV1 ZWQgLi4uIG9yIHNvbWV0aGluZykuICBTbyBJIHdvdWxkIG9ubHkgd2FudCB0byBzZW5kIGEgZGlz Y2FyZA0KPj4gPiA+ID4gcmVxdWVzdCBpZiBpdCB3YXMgdmVyeSBsYXJnZSwgdGhvdWdoIEknbSBu b3Qgc3VyZSBob3cgbGFyZ2UgaXMgbGFyZ2UgZW5vdWdoLg0KPj4gPiA+IA0KPj4gPiA+IFllcCwg ZGlzY2FyZCBzcGVlZCB2YXJpZXMgYmV0d2VlbiBTU0RzLiBTb21lIGFyZSB2ZXJ5IHNsb3csIG11 Y2ggc2xvd2VyIHRoYW4NCj4+ID4gPiB3cml0ZSwgc29tZSBTQVRBIFNTRCBkaXNjYXJkIHNwZWVk IGlzIGV2ZW4gc2xvd2VyIHRoYW4gaGFyZGRpc2sgd3JpdGUuIFdoaWxlDQo+PiA+ID4gb3VyIGNh cmQgaXMgdmVyeSBmYXN0LCBmYXN0ZXIgdGhhbiB3cml0ZS4NCj4+ID4gPiAgDQo+PiA+ID4gPiA+ IFVzZXIgZW5hYmxlcyB0aGVzZSBmZWF0dXJlcyBhbmQgdGhlbiBhZGQgZGlzayB0byBkb3duZ3Jh ZGUgcmFpZC4gcmFpZCByZXN5bmMNCj4+ID4gPiA+ID4gdGhlbiBhdm9pZHMgd3JpdGUgb3IgZG9l cyB0cmltLg0KPj4gPiA+ID4gDQo+PiA+ID4gPiBUaGlzIGlzIHRoZSBiaXQgdGhhdCBjb25jZXJu cyBtZSB0aGUgbW9zdCAtIGV4cGVjdGluZyB0aGUgdXNlciB0byBlbmFibGUgdGhpcw0KPj4gPiA+ ID4gc29ydCBvZiBmZWF0dXJlLiAgSW4gbWFueSBjYXNlcyB0aGV5IHdvbid0IG1ha2luZyB0aGUg Y29kZSBwb2ludGxlc3MuICBJZiBhbg0KPj4gPiA+ID4gb3B0aW1pc2F0aW9uIGlzIG5lZWRlZCwg d2Ugc2hvdWxkIHVzZSBpdCBhdXRvbWF0aWNhbGx5LiAgTWF5YmUgd2UgY2FuIGZvciB0aGUNCj4+ ID4gPiA+IGZpcnN0IGZpcnN0IGNhc2UuICBOb3Qgc3VyZSB5ZXQgYWJvdXQgdGhlIHNlY29uZCBv bmUuDQo+PiA+ID4gDQo+PiA+ID4gSSB1bmRlcnN0b29kIHlvdXIgY29uY2VybnMuIEdpdmluZyB0 aGlzIGZlYXR1cmUgY2FuIGhhcm0vYmVuZWZpdCwgZGVwZW5kaW5nIG9uDQo+PiA+ID4gZGlmZmVy ZW50IFNTRHMgYW5kIHdvcmtsb2FkL3VzYWdlIG1vZGVsLCBhbiBpbnRlcmZhY2UgdG8gZW5hYmxl IGlzIHByZWZlcnJlZC4NCj4+ID4gDQo+PiA+IE5laWwsDQo+PiA+IGFueSBmdXJ0aGVyIGNvbW1l bnRzIG9uIHRoaXM/IFRoaXMgaXMgYSB1c2FibGUgZmVhdHVyZSwgSSBob3BlIHdlIGNhbiBoYXZl IHNvbWUNCj4+ID4gYWdyZWVtZW50cy4NCj4+IA0KPj4gWW91IHN0aWxsIGhhdmVuJ3QgYW5zd2Vy ZWQgbXkgbWFpbiBxdWVzdGlvbiwgd2hpY2ggcG9zc2libHkgbWVhbnMgSSBoYXZlbid0DQo+PiBh c2tlZCBpdCB2ZXJ5IGNsZWFybHkuDQo+PiANCj4+IFlvdSBhcmUgc2F5aW5nIHRoYXQgdGhpcyBu ZXcgYmVoYXZpb3VyIHNob3VsZCBub3QgYmUgdGhlIGRlZmF1bHQgYW5kIEkgdGhpbmsNCj4+IEkg YWdyZWUuDQo+PiBTbyB0aGUgcXVlc3Rpb24gaXM6ICBob3cgaXQgaXMgc2VsZWN0ZWQ/DQo+PiAN Cj4+IFlvdSBjYW5ub3QgZXhwZWN0IHRoZSB1c2VyIHRvIGV4cGxpY2l0bHkgZW5hYmxlIGl0IGFu eSB0aW1lIGEgcmVzeW5jIG9yDQo+PiByZWNvdmVyeSBzdGFydHMgdGhhdCBzaG91bGQgdXNlIHRo aXMgbmV3IGZlYXR1cmUuICBZb3UgbXVzdCBoYXZlIHNvbWUNCj4+IGF1dG9tYXRpYywgb3Igc2Vt aS1hdXRvbWF0aWMsIHdheSBmb3IgdGhlIGZlYXR1cmUgdG8gYmUgYWN0aXZhdGVkLCBvdGhlcndp c2UNCj4+IGl0IHdpbGwgbmV2ZXIgYmUgdXNlZC4NCj4+IA0KPj4gSSdtIG5vdCBhc2tpbmcgIndo ZW4gc2hvdWxkIHRoZSBmZWF0dXJlIGJlIHVzZWQiIC0geW91J3ZlIGFuc3dlcmVkIHRoYXQNCj4+ IHF1ZXN0aW9uIGEgZmV3IHRpbWUgYW5kIGl0IHJlYWxseSBpc24ndCBhbiBpc3N1ZS4NCj4+IFRo ZSBxdWVzdGlvbiBpdCAiV2hhdCBpdCB0aGUgZXhhY3QgcHJvY2VzcyBieSB3aGljaCB0aGUgZmVh dHVyZSBpcyB0dXJuZWQgb24NCj4+IGZvciBhbnkgcGFydGljdWxhciByZXN5bmMgb3IgcmVjb3Zl cnk/Ig0KPg0KPlNvIHlvdSB3b3JyaWVkIGFib3V0IHVzZXJzIGRvbid0IGtub3cgaG93IHRvIGNv cnJlY3RseSBzZWxlY3QgdGhlIGZlYXR1cmUuIEFuDQo+ZXhwZXJpZW5jZWQgdXNlciBrbm93cyB0 aGlzLCB0aGUgdXNhZ2Ugc2NlbmFyaW8gSSBtZW50aW9uZWQgZGVzY3JpYmVzIGhvdyB0byBkbw0K PnRoZSBkZWNpc2lvbi4gRm9yIGV4YW1wbGUsIGEgcmVzeW5jIGFmdGVyIHN5c3RlbSBjcmFzaCBz aG91bGQgZW5hYmxlIHRoZQ0KPmZlYXR1cmUuIEkgYWRtaXQgYW4gaW5leHBlcmllbmNlZCB1c2Vy IGRvZXNuJ3Qga25vdyBob3cgdG8gc2VsZWN0IGl0LCBidXQgdGhpcw0KPmlzbid0IGEgYmlnIHBy b2JsZW0gdG8gbWUuIFRoZXJlIGFyZSBhIGxvdCBvZiB0dW5hYmxlcyBpbiB0aGUga2VybmVsIChl dmVuIE1EKSwNCj53aGljaCBjYW4gc2lnbmlmaWNhbnRseSBpbXBhY3Qga2VybmVsIGJlaGF2aW9y LiBUaGVzZSB0dW5hYmxlcyBhcmUganVzdCBmb3INCj5leHBlcmllbmNlZCB1c2Vycy4NCj4NCkhv dyBhYm91dCByZS1hZGQgcGFyYW1ldGVyIGZvciByZWNvdmVyeSBtb2RlPw0KTGlrZSBzaGFvaHVh J3MgZXhhbXBsZTogInVwZGF0ZSBTU0QgZmlybXdhcmUuIFRoaXMgZG9lc24ndCBjaGFuZ2UgdGhl IGRhdGEsIGJ1dCB3ZSBuZWVkIHRha2Ugb25lIGRpc2sNCiBvZmYgZnJvbSB0aGUgcmFpZCBvbmUg dGltZSIsICB0aGUgdXNlciBjYW4ga25vdyB0aGUgZGlmZmVyZW50IG9mIHR3byBkaXNrcy5TbyB0 aGV5IGNhbiB1c2UgJ3JlLWFkZCcgdG8gYWRkLg0KRm9yIHJlc3luYywgbGlrZSBvcyBjcmFzaCwg aSB0aGluayB0aGUgYml0bWFwIGNhbiBkby4NCj5UaGFua3MsDQo+U2hhb2h1YQ0KPi0tDQo+VG8g dW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNlbmQgdGhlIGxpbmUgInVuc3Vic2NyaWJlIGxp bnV4LXJhaWQiIGluDQo+dGhlIGJvZHkgb2YgYSBtZXNzYWdlIHRvIG1ham9yZG9tb0B2Z2VyLmtl cm5lbC5vcmcNCj5Nb3JlIG1ham9yZG9tbyBpbmZvIGF0ICBodHRwOi8vdmdlci5rZXJuZWwub3Jn L21ham9yZG9tby1pbmZvLmh0bWw=