From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gu Zheng Subject: Re: [PATCH] f2fs: optimize fs_lock for better performance Date: Wed, 11 Sep 2013 11:22:39 +0800 Message-ID: <522FE1FF.9010901@cn.fujitsu.com> References: <04.C0.13361.61DDA225@epcpsbge5.samsung.com> <1378774750.2354.110.camel@kjgkr> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: =?UTF-8?B?6LCt5aed?= , Russ Knize , "linux-kernel@vger.kernel.org" , "linux-f2fs-devel@lists.sourceforge.net" , "linux-fsdevel@vger.kernel.org" To: jaegeuk.kim@samsung.com Return-path: In-Reply-To: <1378774750.2354.110.camel@kjgkr> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: linux-f2fs-devel-bounces@lists.sourceforge.net List-Id: linux-fsdevel.vger.kernel.org SGkgSmFlZ2V1aywKT24gMDkvMTAvMjAxMyAwODo1OSBBTSwgSmFlZ2V1ayBLaW0gd3JvdGU6Cgo+ IEhpLAo+IAo+IDIwMTMtMDktMDcgKO2GoCksIDA4OjAwICswMDAwLCBDaGFvIFl1Ogo+PiBIaSBL bml6ZSwKPj4KPj4gICAgIFRoYW5rcyBmb3IgeW91ciByZXBseSwgSSB0aGluayBpdCdzIGFjdHVh bGx5IG1lYW5pbmdsZXNzIHRoYXQgaXQncwo+PiBiZWluZyBuYW1lZCBhZnRlciAic3Bpbl9sb2Nr IiwKPj4gaXQncyBiZXR0ZXIgdG8gcmVuYW1lIHRoaXMgc3BpbmxvY2sgdG8gInJvdW5kX3JvYmlu X2xvY2siLgo+Pgo+PiAgICAgVGhpcyBwYXRjaCBjYW4gb25seSByZXNvbHZlIHRoZSBpc3N1ZSBv ZiB1bmJhbGFuY2VkIGZzX2xvY2sgdXNhZ2UsCj4+IGl0IGNhbiBub3QgZml4IHRoZSBkZWFkbG9j ayBpc3N1ZS4KPj4gY2FuIHdlIGZpeCBkZWFkbG9jayBpc3N1ZSB0aHJvdWdoIHRoaXMgbWV0aG9k Ogo+Pgo+PiAtIHZmc19jcmVhdGUoKQo+PiAgLSBmMmZzX2NyZWF0ZSgpIC0gdGFrZXMgYW4gZnNf bG9jayBhbmQgc2F2ZSBjdXJyZW50IHRocmVhZCBpbmZvIGludG8KPj4gdGhyZWFkX2luZm9bTlJf R0xPQkFMX0xPQ0tTXQo+PiAgIC0gZjJmc19hZGRfbGluaygpCj4+ICAgIC0gX19mMmZzX2FkZF9s aW5rKCkKPj4gICAgIC0gaW5pdF9pbm9kZV9tZXRhZGF0YSgpCj4+ICAgICAgLSBmMmZzX2luaXRf c2VjdXJpdHkoKQo+PiAgICAgICAtIHNlY3VyaXR5X2lub2RlX2luaXRfc2VjdXJpdHkoKQo+PiAg ICAgICAgLSBmMmZzX2luaXR4YXR0cnMoKQo+PiAgICAgICAgIC0gZjJmc19zZXR4YXR0cigpIC0g Z2V0IGZzX2xvY2sgb25seSBpZiB0aGVyZSBpcyBubyBjdXJyZW50Cj4+IHRocmVhZCBpbmZvIGlu IHRocmVhZF9pbmZvCj4+ICAgICAgICAgCj4+IFNvIGl0IGtlZXBzIG9uZSB0aHJlYWQgY2FuIG9u bHkgaG9sZCBvbmUgZnNfbG9jayB0byBhdm9pZCBkZWFkbG9jay4KPj4gQ2FuIHdlIHVzZSB0aGlz IHNvbHV0aW9uPwo+IAo+IEl0IGNvdWxkIGJlLgo+IEJ1dCwgSSB0aGluayB3ZSBjYW4gYXZvaWQg dG8gZ3JhYiB0aGUgZnNfbG9jayBhdCB0aGUgZjJmc19pbml0eGF0dHJzKCkKCkFncmVlLiBUaGlz IGZzX2xvY2sgaGVyZSBpcyB1c2VkIHRvIHByb3RlY3QgdGhlIHhhdHRyIGZyb20gcGFyYWxsZWwg bW9kaWZpY2F0aW9uLApidXQgaGVyZSBpcyBpbiB0aGUgaW5pdHhhdHRycyByb3V0aW5lLCBwYXJh bGxlbCBtb2RpZmljYXRpb24gY2FuIG5vdCBoYXBwZW4uCkFuZCBpbiB0aGUgbm9ybWFsIHNldHhh dHRyIHJvdXRpbmUgdGhlIGlub2RlLT5pX211dGV4ICh2ZnMgbGF5ZXIpIGlzIHVzZWQgdG8KYXZv aWQgcGFyYWxsZWwgbW9kaWZpY2F0aW9uLiBTbyBJIHRoaW5rIHRoaXMgZnNfbG9jayBpcyBuZWVk bGVzcy4KQW0gSSBtaXNzaW5nIHNvbWV0aGluZz8KClJlZ2FyZHMsCkd1Cgo+IGxldmVsLCBzaW5j ZSB0aGlzIGNhc2Ugb25seSBoYXBwZW5zIHdoZW4gZjJmc19pbml0eGF0dHJzKCkgaXMgY2FsbGVk Lgo+IExldCdzIHRoaW5rIGFib3V0IHV0IGluIG1vcmUgZGV0YWlsLgo+IFRoYW5rcywKPiAKPj4K Pj4gIAo+Pgo+PiB0aGFua3MgYWdhaW4hCj4+Cj4+ICAKPj4KPj4gLS0tLS0tLSBPcmlnaW5hbCBN ZXNzYWdlIC0tLS0tLS0KPj4KPj4gU2VuZGVyIDogUnVzcyBLbml6ZTxSdXNzLktuaXplQG1vdG9y b2xhLmNvbT4KPj4KPj4gRGF0ZSA6IOS5neaciCAwNywgMjAxMyAwNDoyNSAoR01UKzA5OjAwKQo+ Pgo+PiBUaXRsZSA6IFJlOiBbZjJmcy1kZXZdIFtQQVRDSF0gZjJmczogb3B0aW1pemUgZnNfbG9j ayBmb3IgYmV0dGVyCj4+IHBlcmZvcm1hbmNlCj4+Cj4+ICAKPj4KPj4gSSBlbmNvdW50ZXJlZCB0 aGlzIHNhbWUgaXNzdWUgcmVjZW50bHkgYW5kIHNvbHZlZCBpdCBpbiBtdWNoIHRoZSBzYW1lCj4+ IHdheS4gIENhbiB3ZSByZW5hbWUgInNwaW5fbG9jayIgdG8gc29tZXRoaW5nIG1vcmUgbWVhbmlu Z2Z1bD8gCj4+Cj4+Cj4+IFRoaXMgcmFjZSBhY3R1YWxseSBleHBvc2VkIGEgcG90ZW50aWFsIGRl YWRsb2NrIGJldHdlZW4gZjJmc19jcmVhdGUoKQo+PiBhbmQgZjJmc19pbml0eGF0dHJzKCk6IAo+ Pgo+Pgo+PiAtIHZmc19jcmVhdGUoKQo+PiAgLSBmMmZzX2NyZWF0ZSgpIC0gdGFrZXMgYW4gZnNf bG9jawo+PiAgIC0gZjJmc19hZGRfbGluaygpCj4+ICAgIC0gX19mMmZzX2FkZF9saW5rKCkKPj4g ICAgIC0gaW5pdF9pbm9kZV9tZXRhZGF0YSgpCj4+ICAgICAgLSBmMmZzX2luaXRfc2VjdXJpdHko KQo+PiAgICAgICAtIHNlY3VyaXR5X2lub2RlX2luaXRfc2VjdXJpdHkoKQo+PiAgICAgICAgLSBm MmZzX2luaXR4YXR0cnMoKQo+PiAgICAgICAgIC0gZjJmc19zZXR4YXR0cigpIC0gYWxzbyB0YWtl cyBhbiBmc19sb2NrCj4+Cj4+Cj4+IElmIGFub3RoZXIgQ1BVIGhhcHBlbnMgdG8gaGF2ZSB0aGUg c2FtZSBsb2NrIHRoYXQgZjJmc19zZXR4YXR0cigpIHdhcwo+PiB0cnlpbmcgdG8gdGFrZSBiZWNh dXNlIG9mIHRoZSByYWNlIGFyb3VuZCBuZXh0X2xvY2tfbnVtLCB3ZSBjYW4gZ2V0Cj4+IGludG8g YSBkZWFkbG9jayBzaXR1YXRpb24gaWYgdGhlIHR3byB0aHJlYWRzIGFyZSBhbHNvIGNvbnRlbmRp bmcgb3Zlcgo+PiBhbm90aGVyIHJlc291cmNlIChsaWtlIGJkaSkuCj4+Cj4+Cj4+IEFub3RoZXIg c2NlbmFyaW8gaXMgaWYgdGhlIGFib3ZlIGhhcHBlbnMgd2hpbGUgYW5vdGhlciB0aHJlYWQgaXMg aW4KPj4gdGhlIG1pZGRsZSBvZiBncmFiYmluZyBhbGwgb2YgdGhlIGxvY2tzIHZpYSBtdXRleF9s b2NrX2FsbCgpLgo+PiAgZjJmc19jcmVhdGUoKSBpcyBob2xkaW5nIGEgbG9jayB0aGF0IG11dGV4 X2xvY2tfYWxsKCkgaXMgd2FpdGluZyBmb3IKPj4gYW5kIG11dGV4X2xvY2tfYWxsKCkgaXMgaG9s ZGluZyBhIGxvY2sgdGhhdCBmMmZzX3NldHhhdHRyKCkgaXMgd2FpdGluZwo+PiBmb3IuCj4+Cj4+ Cj4+IFJ1c3MKPj4KPj4KPj4gT24gRnJpLCBTZXAgNiwgMjAxMyBhdCA0OjQ4IEFNLCBDaGFvIFl1 IDxjaGFvMi55dUBzYW1zdW5nLmNvbT4gd3JvdGU6Cj4+ICAgICAgICAgSGkgS2ltOgo+PiAgICAg ICAgIAo+PiAgICAgICAgICAgICAgSSB0aGluayB0aGVyZSBpcyBhIHBlcmZvcm1hbmNlIHByb2Js ZW06IHdoZW4gYWxsCj4+ICAgICAgICAgc2JpLT5mc19sb2NrIGlzIGhvbGRlZCwgCj4+ICAgICAg ICAgCj4+ICAgICAgICAgdGhlbiBhbGwgb3RoZXIgdGhyZWFkcyBtYXkgZ2V0IHRoZSBzYW1lIG5l eHRfbG9jayB2YWx1ZSBmcm9tCj4+ICAgICAgICAgc2JpLT5uZXh0X2xvY2tfbnVtIGluIGZ1bmN0 aW9uIG11dGV4X2xvY2tfb3AsIAo+PiAgICAgICAgIAo+PiAgICAgICAgIGFuZCB3YWl0IHRvIGdl dCB0aGUgc2FtZSBsb2NrIGF0IHBvc2l0aW9uIGZzX2xvY2tbbmV4dF9sb2NrXSwKPj4gICAgICAg ICBpdCB1bmJhbGFuY2UgdGhlIGZzX2xvY2sgdXNhZ2UuIAo+PiAgICAgICAgIAo+PiAgICAgICAg IEl0IG1heSBsb3N0IHBlcmZvcm1hbmNlIHdoZW4gd2UgZG8gdGhlIG11bHRpdGhyZWFkIHRlc3Qu Cj4+ICAgICAgICAgCj4+ICAgICAgICAgIAo+PiAgICAgICAgIAo+PiAgICAgICAgIEhlcmUgaXMg dGhlIHBhdGNoIHRvIGZpeCB0aGlzIHByb2JsZW06Cj4+ICAgICAgICAgCj4+ICAgICAgICAgIAo+ PiAgICAgICAgIAo+PiAgICAgICAgIFNpZ25lZC1vZmYtYnk6IFl1IENoYW8gPGNoYW8yLnl1QHNh bXN1bmcuY29tPgo+PiAgICAgICAgIAo+PiAgICAgICAgIGRpZmYgLS1naXQgYS9mcy9mMmZzL2Yy ZnMuaCBiL2ZzL2YyZnMvZjJmcy5oCj4+ICAgICAgICAgCj4+ICAgICAgICAgb2xkIG1vZGUgMTAw NjQ0Cj4+ICAgICAgICAgCj4+ICAgICAgICAgbmV3IG1vZGUgMTAwNzU1Cj4+ICAgICAgICAgCj4+ ICAgICAgICAgaW5kZXggNDY3ZDQyZC4uOTgzYmI0NQo+PiAgICAgICAgIAo+PiAgICAgICAgIC0t LSBhL2ZzL2YyZnMvZjJmcy5oCj4+ICAgICAgICAgCj4+ICAgICAgICAgKysrIGIvZnMvZjJmcy9m MmZzLmgKPj4gICAgICAgICAKPj4gICAgICAgICBAQCAtMzcxLDYgKzM3MSw3IEBAIHN0cnVjdCBm MmZzX3NiX2luZm8gewo+PiAgICAgICAgIAo+PiAgICAgICAgICAgICAgICAgc3RydWN0IG11dGV4 IGZzX2xvY2tbTlJfR0xPQkFMX0xPQ0tTXTsgIC8qIGJsb2NraW5nIEZTCj4+ICAgICAgICAgb3Bl cmF0aW9ucyAqLwo+PiAgICAgICAgIAo+PiAgICAgICAgICAgICAgICAgc3RydWN0IG11dGV4IG5v ZGVfd3JpdGU7ICAgICAgICAgICAgICAgIC8qIGxvY2tpbmcKPj4gICAgICAgICBub2RlIHdyaXRl cyAqLwo+PiAgICAgICAgIAo+PiAgICAgICAgICAgICAgICAgc3RydWN0IG11dGV4IHdyaXRlcGFn ZXM7ICAgICAgICAgICAgICAgIC8qIG11dGV4IGZvcgo+PiAgICAgICAgIHdyaXRlcGFnZXMoKSAq Lwo+PiAgICAgICAgIAo+PiAgICAgICAgICsgICAgICAgc3BpbmxvY2tfdCBzcGluX2xvY2s7ICAg ICAgICAgICAgICAgICAgIC8qIGxvY2sgZm9yCj4+ICAgICAgICAgbmV4dF9sb2NrX251bSAqLwo+ PiAgICAgICAgIAo+PiAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBuZXh0X2xvY2tfbnVt OyAgICAgICAgICAgIC8qIHJvdW5kLXJvYmluCj4+ICAgICAgICAgZ2xvYmFsIGxvY2tzICovCj4+ ICAgICAgICAgCj4+ICAgICAgICAgICAgICAgICBpbnQgcG9yX2RvaW5nOyAgICAgICAgICAgICAg ICAgICAgICAgICAgLyogcmVjb3ZlcnkgaXMKPj4gICAgICAgICBkb2luZyBvciBub3QgKi8KPj4g ICAgICAgICAKPj4gICAgICAgICAgICAgICAgIGludCBvbl9idWlsZF9mcmVlX25pZHM7ICAgICAg ICAgICAgICAgICAvKgo+PiAgICAgICAgIGJ1aWxkX2ZyZWVfbmlkcyBpcyBkb2luZyAqLwo+PiAg ICAgICAgIAo+PiAgICAgICAgIEBAIC01MzMsMTUgKzUzNCwxOSBAQCBzdGF0aWMgaW5saW5lIHZv aWQKPj4gICAgICAgICBtdXRleF91bmxvY2tfYWxsKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSkK Pj4gICAgICAgICAKPj4gICAgICAgICAgCj4+ICAgICAgICAgCj4+ICAgICAgICAgIHN0YXRpYyBp bmxpbmUgaW50IG11dGV4X2xvY2tfb3Aoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKQo+PiAgICAg ICAgIAo+PiAgICAgICAgICB7Cj4+ICAgICAgICAgCj4+ICAgICAgICAgLSAgICAgICB1bnNpZ25l ZCBjaGFyIG5leHRfbG9jayA9IHNiaS0+bmV4dF9sb2NrX251bSAlCj4+ICAgICAgICAgTlJfR0xP QkFMX0xPQ0tTOwo+PiAgICAgICAgIAo+PiAgICAgICAgICsgICAgICAgdW5zaWduZWQgY2hhciBu ZXh0X2xvY2s7Cj4+ICAgICAgICAgCj4+ICAgICAgICAgICAgICAgICBpbnQgaSA9IDA7Cj4+ICAg ICAgICAgCj4+ICAgICAgICAgIAo+PiAgICAgICAgIAo+PiAgICAgICAgICAgICAgICAgZm9yICg7 IGkgPCBOUl9HTE9CQUxfTE9DS1M7IGkrKykKPj4gICAgICAgICAKPj4gICAgICAgICAgICAgICAg ICAgICAgICAgaWYgKG11dGV4X3RyeWxvY2soJnNiaS0+ZnNfbG9ja1tpXSkpCj4+ICAgICAgICAg Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGk7Cj4+ICAgICAgICAg Cj4+ICAgICAgICAgIAo+PiAgICAgICAgIAo+PiAgICAgICAgIC0gICAgICAgbXV0ZXhfbG9jaygm c2JpLT5mc19sb2NrW25leHRfbG9ja10pOwo+PiAgICAgICAgIAo+PiAgICAgICAgICsgICAgICAg c3Bpbl9sb2NrKCZzYmktPnNwaW5fbG9jayk7Cj4+ICAgICAgICAgCj4+ICAgICAgICAgKyAgICAg ICBuZXh0X2xvY2sgPSBzYmktPm5leHRfbG9ja19udW0gJSBOUl9HTE9CQUxfTE9DS1M7Cj4+ICAg ICAgICAgCj4+ICAgICAgICAgICAgICAgICBzYmktPm5leHRfbG9ja19udW0rKzsKPj4gICAgICAg ICAKPj4gICAgICAgICArICAgICAgIHNwaW5fdW5sb2NrKCZzYmktPnNwaW5fbG9jayk7Cj4+ICAg ICAgICAgCj4+ICAgICAgICAgKwo+PiAgICAgICAgIAo+PiAgICAgICAgICsgICAgICAgbXV0ZXhf bG9jaygmc2JpLT5mc19sb2NrW25leHRfbG9ja10pOwo+PiAgICAgICAgIAo+PiAgICAgICAgICAg ICAgICAgcmV0dXJuIG5leHRfbG9jazsKPj4gICAgICAgICAKPj4gICAgICAgICAgfQo+PiAgICAg ICAgIAo+PiAgICAgICAgICAKPj4gICAgICAgICAKPj4gICAgICAgICBkaWZmIC0tZ2l0IGEvZnMv ZjJmcy9zdXBlci5jIGIvZnMvZjJmcy9zdXBlci5jCj4+ICAgICAgICAgCj4+ICAgICAgICAgb2xk IG1vZGUgMTAwNjQ0Cj4+ICAgICAgICAgCj4+ICAgICAgICAgbmV3IG1vZGUgMTAwNzU1Cj4+ICAg ICAgICAgCj4+ICAgICAgICAgaW5kZXggNzVjN2RjMy4uNGYyNzU5Ngo+PiAgICAgICAgIAo+PiAg ICAgICAgIC0tLSBhL2ZzL2YyZnMvc3VwZXIuYwo+PiAgICAgICAgIAo+PiAgICAgICAgICsrKyBi L2ZzL2YyZnMvc3VwZXIuYwo+PiAgICAgICAgIAo+PiAgICAgICAgIEBAIC02NTcsNiArNjU3LDcg QEAgc3RhdGljIGludCBmMmZzX2ZpbGxfc3VwZXIoc3RydWN0Cj4+ICAgICAgICAgc3VwZXJfYmxv Y2sgKnNiLCB2b2lkICpkYXRhLCBpbnQgc2lsZW50KQo+PiAgICAgICAgIAo+PiAgICAgICAgICAg ICAgICAgbXV0ZXhfaW5pdCgmc2JpLT5jcF9tdXRleCk7Cj4+ICAgICAgICAgCj4+ICAgICAgICAg ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgTlJfR0xPQkFMX0xPQ0tTOyBpKyspCj4+ICAgICAgICAg Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgIG11dGV4X2luaXQoJnNiaS0+ZnNfbG9ja1tpXSk7 Cj4+ICAgICAgICAgCj4+ICAgICAgICAgKyAgICAgICBzcGluX2xvY2tfaW5pdCgmc2JpLT5zcGlu X2xvY2spOwo+PiAgICAgICAgIAo+PiAgICAgICAgICAgICAgICAgbXV0ZXhfaW5pdCgmc2JpLT5u b2RlX3dyaXRlKTsKPj4gICAgICAgICAKPj4gICAgICAgICAgICAgICAgIHNiaS0+cG9yX2RvaW5n ID0gMDsKPj4gICAgICAgICAKPj4gICAgICAgICAgICAgICAgIHNwaW5fbG9ja19pbml0KCZzYmkt PnN0YXRfbG9jayk7Cj4+ICAgICAgICAgCj4+ICAgICAgICAgKEVORCkKPj4gICAgICAgICAKPj4g ICAgICAgICAgCj4+ICAgICAgICAgCj4+ICAgICAgICAgCj4+ICAgICAgICAgCj4+ICAgICAgICAg Cj4+ICAgICAgICAgCj4+ICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+ICAgICAgICAg TGVhcm4gdGhlIGxhdGVzdC0tVmlzdWFsIFN0dWRpbyAyMDEyLCBTaGFyZVBvaW50IDIwMTMsIFNR TAo+PiAgICAgICAgIDIwMTIsIG1vcmUhCj4+ICAgICAgICAgRGlzY292ZXIgdGhlIGVhc3kgd2F5 IHRvIG1hc3RlciBjdXJyZW50IGFuZCBwcmV2aW91cyBNaWNyb3NvZnQKPj4gICAgICAgICB0ZWNo bm9sb2dpZXMKPj4gICAgICAgICBhbmQgYWR2YW5jZSB5b3VyIGNhcmVlci4gR2V0IGFuIGluY3Jl ZGlibGUgMSw1MDArIGhvdXJzIG9mCj4+ICAgICAgICAgc3RlcC1ieS1zdGVwCj4+ICAgICAgICAg dHV0b3JpYWwgdmlkZW9zIHdpdGggTGVhcm5EZXZOb3cuIFN1YnNjcmliZSB0b2RheSBhbmQgc2F2 ZSEKPj4gICAgICAgICBodHRwOi8vcHViYWRzLmcuZG91YmxlY2xpY2submV0L2dhbXBhZC9jbGs/ aWQ9NTgwNDEzOTEmaXU9LzQxNDAvb3N0Zy5jbGt0cmsKPj4gICAgICAgICBfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+PiAgICAgICAgIExpbnV4LWYyZnMt ZGV2ZWwgbWFpbGluZyBsaXN0Cj4+ICAgICAgICAgTGludXgtZjJmcy1kZXZlbEBsaXN0cy5zb3Vy Y2Vmb3JnZS5uZXQKPj4gICAgICAgICBodHRwczovL2xpc3RzLnNvdXJjZWZvcmdlLm5ldC9saXN0 cy9saXN0aW5mby9saW51eC1mMmZzLWRldmVsCj4+ICAgICAgICAgCj4+Cj4+Cj4+ICAKPj4KPj4g IAo+Pgo+PiAgCj4+Cj4+Cj4+Cj4+Cj4gCgoKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpIb3cgU2Vy dmljZU5vdyBoZWxwcyBJVCBwZW9wbGUgdHJhbnNmb3JtIElUIGRlcGFydG1lbnRzOgoxLiBDb25z b2xpZGF0ZSBsZWdhY3kgSVQgc3lzdGVtcyB0byBhIHNpbmdsZSBzeXN0ZW0gb2YgcmVjb3JkIGZv ciBJVAoyLiBTdGFuZGFyZGl6ZSBhbmQgZ2xvYmFsaXplIHNlcnZpY2UgcHJvY2Vzc2VzIGFjcm9z cyBJVAozLiBJbXBsZW1lbnQgemVyby10b3VjaCBhdXRvbWF0aW9uIHRvIHJlcGxhY2UgbWFudWFs LCByZWR1bmRhbnQgdGFza3MKaHR0cDovL3B1YmFkcy5nLmRvdWJsZWNsaWNrLm5ldC9nYW1wYWQv Y2xrP2lkPTUxMjcxMTExJml1PS80MTQwL29zdGcuY2xrdHJrCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4LWYyZnMtZGV2ZWwgbWFpbGluZyBsaXN0 CkxpbnV4LWYyZnMtZGV2ZWxAbGlzdHMuc291cmNlZm9yZ2UubmV0Cmh0dHBzOi8vbGlzdHMuc291 cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3RpbmZvL2xpbnV4LWYyZnMtZGV2ZWwK