From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail202.messagelabs.com (mail202.messagelabs.com [216.82.254.227]) by kanga.kvack.org (Postfix) with SMTP id 780716B01C2 for ; Tue, 23 Mar 2010 17:35:25 -0400 (EDT) Received: by wwb39 with SMTP id 39so1906228wwb.14 for ; Tue, 23 Mar 2010 14:35:21 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: <20100322235053.GD9590@csn.ul.ie> References: <20100315130935.f8b0a2d7.akpm@linux-foundation.org> <20100322235053.GD9590@csn.ul.ie> Date: Tue, 23 Mar 2010 22:35:20 +0100 Message-ID: <4e5e476b1003231435i47e5d95fg9d7eac0d14d3e26b@mail.gmail.com> Subject: Re: [RFC PATCH 0/3] Avoid the use of congestion_wait under zone pressure From: Corrado Zoccolo Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 Sender: owner-linux-mm@kvack.org To: Mel Gorman Cc: Andrew Morton , Christian Ehrhardt , linux-mm@kvack.org, Nick Piggin , Chris Mason , Jens Axboe , linux-kernel@vger.kernel.org, gregkh@novell.com, Rik van Riel , Johannes Weiner List-ID: SGkgTWVsLApPbiBUdWUsIE1hciAyMywgMjAxMCBhdCAxMjo1MCBBTSwgTWVsIEdvcm1hbiA8bWVs QGNzbi51bC5pZT4gd3JvdGU6Cj4gT24gTW9uLCBNYXIgMTUsIDIwMTAgYXQgMDE6MDk6MzVQTSAt MDcwMCwgQW5kcmV3IE1vcnRvbiB3cm90ZToKPj4gT24gTW9uLCAxNSBNYXIgMjAxMCAxMzozNDo1 MCArMDEwMAo+PiBDaHJpc3RpYW4gRWhyaGFyZHQgPGVocmhhcmR0QGxpbnV4LnZuZXQuaWJtLmNv bT4gd3JvdGU6Cj4+Cj4+ID4gYykgSWYgZGlyZWN0IHJlY2xhaW0gZGlkIHJlYXNvbmFibGUgcHJv Z3Jlc3MgaW4gdHJ5X3RvX2ZyZWUgYnV0IGRpZCBub3QKPj4gPiBnZXQgYSBwYWdlLCBBTkQgdGhl cmUgaXMgbm8gd3JpdGUgaW4gZmxpZ2h0IGF0IGFsbCB0aGVuIGxldCBpdCB0cnkgYWdhaW4KPj4g PiB0byBmcmVlIHVwIHNvbWV0aGluZy4KPj4gPiBUaGlzIGNvdWxkIGJlIGV4dGVuZGVkIGJ5IHNv bWUga2luZCBvZiBtYXggcmV0cnkgdG8gYXZvaWQgc29tZSB3ZWlyZAo+PiA+IGxvb3BpbmcgY2Fz ZXMgYXMgd2VsbC4KPj4gPgo+PiA+IGQpIEFub3RoZXIgd2F5IG1pZ2h0IGJlIGFzIGVhc3kgYXMg bGV0dGluZyBjb25nZXN0aW9uX3dhaXQgcmV0dXJuCj4+ID4gaW1tZWRpYXRlbHkgaWYgdGhlcmUg YXJlIG5vIG91dHN0YW5kaW5nIHdyaXRlcyAtIHRoaXMgd291bGQga2VlcCB0aGUKPj4gPiBiZWhh dmlvciBmb3IgY2FzZXMgd2l0aCB3cml0ZSBhbmQgYXZvaWQgdGhlICJydW5uaW5nIGFsd2F5cyBp biBmdWxsCj4+ID4gdGltZW91dCIgaXNzdWUgd2l0aG91dCB3cml0ZXMuCj4+Cj4+IFRoZXkncmUg cHJldHR5IG11Y2ggZXF1aXZhbGVudCBhbmQgd291bGQgd29yay4gwqBCdXQgdGhlcmUgYXJlIHR3 bwo+PiB0aGluZ3MgSSBzdGlsbCBkb24ndCB1bmRlcnN0YW5kOgo+Pgo+PiAxOiBXaHkgaXMgZGly ZWN0IHJlY2xhaW0gY2FsbGluZyBjb25nZXN0aW9uX3dhaXQoKSBhdCBhbGw/IMKgSWYgbm8KPj4g d3JpdGVzIGFyZSBnb2luZyBvbiB0aGVyZSdzIGxvdHMgb2YgY2xlYW4gcGFnZWNhY2hlIGFyb3Vu ZCBzbyByZWNsYWltCj4+IHNob3VsZCB0cml2aWFsbHkgc3VjY2VlZC4gwqBXaGF0J3MgcHJldmVu dGluZyBpdCBmcm9tIGRvaW5nIHNvPwo+Pgo+PiAyOiBUaGlzIGlzLCBJIHRoaW5rLCBuZXcgYmVo YXZpb3VyLiDCoEEgcmVncmVzc2lvbi4gwqBXaGF0IGNhdXNlZCBpdD8KPj4KPgo+IDEyMCsga2Vy bmVscyBhbmQgYSBsb3Qgb2YgaHVydCBsYXRlcjsKPgo+IFNob3J0IHN1bW1hcnkgLSBUaGUgbnVt YmVyIG9mIHRpbWVzIGtzd2FwZCBhbmQgdGhlIHBhZ2UgYWxsb2NhdG9yIGhhdmUgYmVlbgo+IMKg IMKgIMKgIMKgY2FsbGluZyBjb25nZXN0aW9uX3dhaXQgYW5kIHRoZSBsZW5ndGggb2YgdGltZSBp dCBzcGVuZHMgaW4gdGhlcmUKPiDCoCDCoCDCoCDCoGhhcyBiZWVuIGluY3JlYXNpbmcgc2luY2Ug Mi42LjI5LiBPZGRseSwgaXQgaGFzIGxpdHRsZSB0byBkbwo+IMKgIMKgIMKgIMKgd2l0aCB0aGUg cGFnZSBhbGxvY2F0b3IgaXRzZWxmLgo+Cj4gVGVzdCBzY2VuYXJpbwo+ID09PT09PT09PT09PT0K PiBYODYtNjQgbWFjaGluZSAxIHNvY2tldCA0IGNvcmVzCj4gNCBjb25zdW1lci1ncmFkZSBkaXNr cyBjb25uZWN0ZWQgYXMgUkFJRC0wIC0gc29mdHdhcmUgcmFpZC4gUkFJRCBjb250cm9sbGVyCj4g wqAgwqAgwqAgwqBvbi1ib2FyZCBhbmQgYSBwaWVjZSBvZiBjcmFwLCBhbmQgYSBkZWNlbnQgUkFJ RCBjYXJkIGNvdWxkIGJsb3cKPiDCoCDCoCDCoCDCoHRoZSBidWRnZXQuCj4gQm9vdGVkIG1lbT0y NTYgdG8gZW5zdXJlIGl0IGlzIGZ1bGx5IElPLWJvdW5kIGFuZCBtYXRjaCBjbG9zZXIgdG8gd2hh dAo+IMKgIMKgIMKgIMKgQ2hyaXN0aWFuIHdhcyBkb2luZwo+Cj4gQXQgZWFjaCB0ZXN0LCB0aGUg ZGlza3MgYXJlIHBhcnRpdGlvbmVkLCB0aGUgcmFpZCBhcnJheXMgY3JlYXRlZCBhbmQgYW4KPiBl eHQyIGZpbGVzeXN0ZW0gY3JlYXRlZC4gaW96b25lIHNlcXVlbnRpYWwgcmVhZC93cml0ZSB0ZXN0 cyBhcmUgcnVuIHdpdGgKPiBpbmNyZWFzaW5nIG51bWJlciBvZiBwcm9jZXNzZXMgdXAgdG8gNjQu IEVhY2ggdGVzdCBjcmVhdGVzIDhHIG9mIGZpbGVzLiBpLmUuCj4gMSBwcm9jZXNzID0gOEcuIDIg cHJvY2Vzc2VzID0gMng0RyBldGMKPgo+IMKgIMKgIMKgIMKgaW96b25lIC1zIDgzODg2MDggLXQg MSAtciA2NCAtaSAwIC1pIDEKPiDCoCDCoCDCoCDCoGlvem9uZSAtcyA0MTk0MzA0IC10IDIgLXIg NjQgLWkgMCAtaSAxCj4gwqAgwqAgwqAgwqBldGMuCj4KPiBNZXRyaWNzCj4gPT09PT09PQo+Cj4g RWFjaCBrZXJuZWwgd2FzIGluc3RydW1lbnRlZCB0byBjb2xsZWN0ZWQgdGhlIGZvbGxvd2luZyBz dGF0cwo+Cj4gwqAgwqAgwqAgwqBwZy1TdGFsbCDCoCDCoCDCoCDCoFBhZ2UgYWxsb2NhdG9yIHN0 YWxsZWQgY2FsbGluZyBjb25nZXN0aW9uX3dhaXQKPiDCoCDCoCDCoCDCoHBnLVdhaXQgwqAgwqAg wqAgwqAgVGhlIGFtb3VudCBvZiB0aW1lIHNwZW50IGluIGNvbmdlc3Rpb25fd2FpdAo+IMKgIMKg IMKgIMKgcGctUmNsbSDCoCDCoCDCoCDCoCBQYWdlcyByZWNsYWltZWQgYnkgZGlyZWN0IHJlY2xh aW0KPiDCoCDCoCDCoCDCoGtzZC1zdGFsbCDCoCDCoCDCoCBiYWxhbmNlX3BnZGF0KCkgKGllIGtz d2FwZCkgc3RhbGVkIG9uIGNvbmdlc3Rpb25fd2FpdAo+IMKgIMKgIMKgIMKga3NkLXdhaXQgwqAg wqAgwqAgwqBUaW1lIHNwZW5kIGJ5IGJhbGFuY2VfcGdkYXQgaW4gY29uZ2VzdGlvbl93YWl0Cj4K PiBMYXJnZSBkaWZmZXJlbmNlcyBpbiB0aGlzIGRvIG5vdCBuZWNlc3NhcmlseSBzaG93IHVwIGlu IGlvem9uZSBiZWNhdXNlIHRoZQo+IGRpc2tzIGFyZSBzbyBzbG93IHRoYXQgdGhlIHN0YWxscyBh cmUgYSB0aW55IHBlcmNlbnRhZ2Ugb3ZlcmFsbC4gSG93ZXZlciwgaW4KPiB0aGUgZXZlbnQgdGhh dCB0aGVyZSBhcmUgbWFueSBkaXNrcywgaXQgbWlnaHQgYmUgYSBncmVhdGVyIHByb2JsZW0uIEkg YmVsaWV2ZQo+IENocmlzdGlhbiBpcyBoaXR0aW5nIGEgY29ybmVyIGNhc2Ugd2hlcmUgc21hbGwg ZGVsYXlzIHRyaWdnZXIgYSBtdWNoIGxhcmdlcgo+IHN0YWxsLgo+Cj4gV2h5IFRoZSBJbmNyZWFz ZXMKPiA9PT09PT09PT09PT09PT09PQo+Cj4gVGhlIGJpZyBwcm9ibGVtIGhlcmUgaXMgdGhhdCB0 aGVyZSB3YXMgbm8gb25lIGNoYW5nZS4gSW5zdGVhZCwgaXQgaGFzIGJlZW4KPiBhIHN0ZWFkeSBi dWlsZC11cCBvZiBhIG51bWJlciBvZiBwcm9ibGVtcy4gVGhlIG9uZXMgSSBpZGVudGlmaWVkIGFy ZSBpbiB0aGUKPiBibG9jayBJTywgQ0ZRIElPIHNjaGVkdWxlciwgdHR5IGFuZCBwYWdlIHJlY2xh aW0uIFNvbWUgb2YgdGhlc2UgYXJlIGZpeGVkCj4gYnV0IG5lZWQgYmFja3BvcnRpbmcgYW5kIG90 aGVycyBJIGV4cGVjdCBhcmUgYSBtYWpvciBzdXJwcmlzZS4gV2hldGhlciB0aGV5Cj4gYXJlIHdv cnRoIGJhY2twb3J0aW5nIG9yIG5vdCBoZWF2aWx5IGRlcGVuZHMgb24gd2hldGhlciBDaHJpc3Rp YW4ncyBwcm9ibGVtCj4gaXMgcmVzb2x2ZWQuCj4KPiBTb21lIG9mIHRoZSAiZml4ZXMiIGJlbG93 IGFyZSBvYnZpb3VzbHkgbm90IGZpeGVzIGF0IGFsbC4gR2F0aGVyaW5nIHRoaXMgZGF0YQo+IHRv b2sgYSBzaWduaWZpY2FudCBhbW91bnQgb2YgdGltZS4gSXQnZCBiZSBuaWNlIGlmIHBlb3BsZSBt b3JlIGZhbWlsaWFyIHdpdGgKPiB0aGUgcmVsZXZhbnQgcHJvYmxlbSBwYXRjaGVzIGNvdWxkIHNw cmluZyBhIHRoZW9yeSBvciBwYXRjaC4KPgo+IFRoZSBQcm9ibGVtcwo+ID09PT09PT09PT09PQo+ Cj4gMS4gQmxvY2sgbGF5ZXIgY29uZ2VzdGlvbiBxdWV1ZSBhc3luYy9zeW5jIGRpZmZpY3VsdHkK PiDCoCDCoCDCoCDCoGZpeCB0aXRsZTogYXN5bmNjb25mdXNpb24KPiDCoCDCoCDCoCDCoGZpeGVk IGluIG1haW5saW5lPyB5ZXMsIGluIDIuNi4zMQo+IMKgIMKgIMKgIMKgYWZmZWN0czogMi42LjMw Cj4KPiDCoCDCoCDCoCDCoDIuNi4zMCByZXBsYWNlZCBjb25nZXN0aW9uIHF1ZXVlcyBiYXNlZCBv biByZWFkL3dyaXRlIHdpdGggc3luYy9hc3luYwo+IMKgIMKgIMKgIMKgaW4gY29tbWl0IDFmYWEx NmQyLiBQcm9ibGVtcyB3ZXJlIGlkZW50aWZpZWQgd2l0aCB0aGlzIGFuZCBmaXhlZCBpbgo+IMKg IMKgIMKgIMKgMi42LjMxIGJ1dCBub3QgYmFja3BvcnRlZC4gQmFja3BvcnRpbmcgOGFhN2U4NDcg YW5kIDM3M2MwYTdlIGJyaW5ncwo+IMKgIMKgIMKgIMKgMi42LjMwIGluIGxpbmUgd2l0aCAyLjYu MjkgcGVyZm9ybWFuY2UuIEl0J3Mgbm90IGFuIGlzc3VlIGZvciAyLjYuMzEuCj4KPiAyLiBUVFkg dXNpbmcgaGlnaCBvcmRlciBhbGxvY2F0aW9ucyBtb3JlIGZyZXF1ZW50bHkKPiDCoCDCoCDCoCDC oGZpeCB0aXRsZTogdHR5Zml4Cj4gwqAgwqAgwqAgwqBmaXhlZCBpbiBtYWlubGluZT8geWVzLCBp biAyLjYuMzQtcmMyCj4gwqAgwqAgwqAgwqBhZmZlY3RzOiAyLjYuMzEgdG8gMi42LjM0LXJjMQo+ Cj4gwqAgwqAgwqAgwqAyLjYuMzEgbWFkZSBwdHkncyB1c2UgdGhlIHNhbWUgYnVmZmVyaW5nIGxv Z2ljIGFzIHR0eS4gwqBVbmZvcnR1bmF0ZWx5LAo+IMKgIMKgIMKgIMKgaXQgd2FzIGFsc28gYWxs b3dlZCB0byBtYWtlIGhpZ2gtb3JkZXIgR0ZQX0FUT01JQyBhbGxvY2F0aW9ucy4gVGhpcwo+IMKg IMKgIMKgIMKgdHJpZ2dlcnMgc29tZSBoaWdoLW9yZGVyIHJlY2xhaW0gYW5kIGludHJvZHVjZXMg c29tZSBzdGFsbHMuIEl0J3MKPiDCoCDCoCDCoCDCoGZpeGVkIGluIDIuNi4zNC1yYzIgYnV0IG5l ZWRzIGJhY2stcG9ydGluZy4KPgo+IDMuIFBhZ2UgcmVjbGFpbSBldmljdC1vbmNlIGxvZ2ljIGZy b20gNTZlNDlkMjEgaHVydHMgcmVhbGx5IGJhZGx5Cj4gwqAgwqAgwqAgwqBmaXggdGl0bGU6IHJl dmVydGV2aWN0Cj4gwqAgwqAgwqAgwqBmaXhlZCBpbiBtYWlubGluZT8gbm8KPiDCoCDCoCDCoCDC oGFmZmVjdHM6IDIuNi4zMSB0byBub3cKPgo+IMKgIMKgIMKgIMKgRm9yIHJlYXNvbnMgdGhhdCBh cmUgbm90IGltbWVkaWF0ZWx5IG9idmlvdXMsIHRoZSBldmljdC1vbmNlIHBhdGNoZXMKPiDCoCDC oCDCoCDCoCpyZWFsbHkqIGh1cnQgdGhlIHRpbWUgc3BlbnQgb24gY29uZ2VzdGlvbiBhbmQgdGhl IG51bWJlciBvZiBwYWdlcwo+IMKgIMKgIMKgIMKgcmVjbGFpbWVkLiBSaWssIEknbSBhZmFpZCBJ J20gcHVudGluZyB0aGlzIHRvIHlvdSBmb3IgZXhwbGFuYXRpb24KPiDCoCDCoCDCoCDCoGJlY2F1 c2UgY2xlYXJseSB5b3UgdGVzdGVkIHRoaXMgZm9yIEFJTTcgYW5kIG1pZ2h0IGhhdmUgc29tZQo+ IMKgIMKgIMKgIMKgdGhlb3JpZXMuIEZvciB0aGUgcHVycG9zZXMgb2YgdGVzdGluZywgSSBqdXN0 IHJldmVydGVkIHRoZSBjaGFuZ2VzLgo+Cj4gNC4gQ0ZRIHNjaGVkdWxlciBmYWlybmVzcyBjb21t aXQgNzE4ZWVlMDU3IGNhdXNlcyBzb21lIGh1cnQKPiDCoCDCoCDCoCDCoGZpeCB0aXRsZTogbm9u ZSBhdmFpbGFibGUKPiDCoCDCoCDCoCDCoGZpeGVkIGluIG1haW5saW5lPyBubwo+IMKgIMKgIMKg IMKgYWZmZWN0czogMi42LjMzIHRvIG5vdwo+Cj4gwqAgwqAgwqAgwqBBIGJpc2VjdGlvbiBmaW5n ZXIgcHJpbnRlZCB0aGlzIHBhdGNoIGFzIGJlaW5nIGEgcHJvYmxlbSBpbnRyb2R1Y2VkCj4gwqAg wqAgwqAgwqBiZXR3ZWVuIDIuNi4zMiBhbmQgMi42LjMzLiBJdCBpbmNyZWFzZXMgYSBzbWFsbCBh bW91bnQgdGhlIG51bWJlciBvZgo+IMKgIMKgIMKgIMKgdGltZXMgdGhlIHBhZ2UgYWxsb2NhdG9y IHN0YWxscyBidXQgZHJhc3RpY2FsbHkgaW5jcmVhc2VkIHRoZSBudW1iZXIKPiDCoCDCoCDCoCDC oG9mIHBhZ2VzIHJlY2xhaW1lZC4gSXQncyBub3QgY2xlYXIgd2h5IHRoZSBjb21taXQgaXMgc3Vj aCBhIHByb2JsZW0uCj4KPiDCoCDCoCDCoCDCoFVuZm9ydHVuYXRlbHksIEkgY291bGQgbm90IHRl c3QgYSByZXZlcnQgb2YgdGhpcyBwYXRjaC4gVGhlIENGUSBhbmQKPiDCoCDCoCDCoCDCoGJsb2Nr IElPIGNoYW5nZXMgbWFkZSBpbiB0aGlzIHdpbmRvdyB3ZXJlIGV4dHJlbWVseSBjb252dWxhdGVk IGFuZAo+IMKgIMKgIMKgIMKgb3ZlcmxhcHBlZCBoZWF2aWx5IHdpdGggYSBsYXJnZSBudW1iZXIg b2YgcGF0Y2hlcyBhbHRlcmluZyB0aGUgc2FtZQo+IMKgIMKgIMKgIMKgY29kZSBhcyB0b3VjaGVk IGJ5IGNvbW1pdCA3MThlZWUwNTcuIEkgdHJpZWQgcmV2ZXJ0aW5nIGV2ZXJ5dGhpbmcKPiDCoCDC oCDCoCDCoG1hZGUgb24gYW5kIGFmdGVyIHRoaXMgY29tbWl0IGJ1dCB0aGUgcmVzdWx0cyB3ZXJl IHVuc2F0aXNmYWN0b3J5Lgo+Cj4gwqAgwqAgwqAgwqBIZW5jZSwgdGhlcmUgaXMgbm8gZml4IGlu IHRoZSByZXN1bHRzIGJlbG93Cj4KPiBSZXN1bHRzCj4gPT09PT09PQo+Cj4gSGVyZSBhcmUgdGhl IGhpZ2hsaWdodHMgb2Yga2VybmVscyB0ZXN0ZWQuIEknbSBvbWl0dGluZyB0aGUgYmlzZWN0aW9u Cj4gcmVzdWx0cyBmb3Igb2J2aW91cyByZWFzb25zLiBUaGUgbWV0cmljcyB3ZXJlIGdhdGhlcmVk IGF0IHR3byBwb2ludHM7Cj4gYWZ0ZXIgZmlsZXN5c3RlbSBjcmVhdGlvbiBhbmQgYWZ0ZXIgSU9a b25lIGNvbXBsZXRlZC4KPgo+IFRoZSBsb3dlciB0aGUgbnVtYmVyIGZvciBlYWNoIG1ldHJpYywg dGhlIGJldHRlci4KPgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIEFmdGVyIEZpbGVzeXN0ZW0gU2V0 dXAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgQWZ0ZXIgSU9ab25lCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgcGctU3RhbGwgwqBwZy1XYWl0IMKgcGctUmNsbSDCoGtzZC1z dGFsbCDCoGtzZC13YWl0IMKgIMKgIMKgIMKgcGctU3RhbGwgwqBwZy1XYWl0IMKgcGctUmNsbSDC oGtzZC1zdGFsbCDCoGtzZC13YWl0Cj4gMi42LjI5IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgMCDCoCDCoCDCoCDCoDAgwqAgwqAg wqAgwqAwIMKgIMKgIMKgIMKgIMKgMiDCoCDCoCDCoCDCoCAxIMKgIMKgIMKgIMKgIMKgIMKgIMKg IDQgwqAgwqAgwqAgwqAzIMKgIMKgIMKgMTgzIMKgIMKgIMKgIMKgMTUyIMKgIMKgIMKgIMKgIDAK PiAyLjYuMzAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAxIMKgIMKgIMKgIMKgNSDCoCDCoCDCoCAzNCDCoCDCoCDCoCDCoCDCoDEg wqAgwqAgwqAgwqAyNSDCoCDCoCDCoCDCoCDCoCDCoCA3ODMgwqAgwqAgMzc1MiDCoCDCoDMxOTM5 IMKgIMKgIMKgIMKgIDc2IMKgIMKgIMKgIMKgIDAKPiAyLjYuMzAtYXN5bmNjb25mdXNpb24gwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMCDCoCDCoCDCoCDCoDAgwqAgwqAg wqAgwqAwIMKgIMKgIMKgIMKgIMKgMyDCoCDCoCDCoCDCoCAxIMKgIMKgIMKgIMKgIMKgIMKgIMKg NDQgwqAgwqAgwqAgNjAgwqAgwqAgMjY1NiDCoCDCoCDCoCDCoDg5MyDCoCDCoCDCoCDCoCAwCj4g Mi42LjMwLjEwIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIDAgwqAgwqAgwqAgwqAwIMKgIMKgIMKgIMKgMCDCoCDCoCDCoCDCoCDCoDIgwqAg wqAgwqAgwqA0MyDCoCDCoCDCoCDCoCDCoCDCoCA3NzcgwqAgwqAgMzY5OSDCoCDCoDMyNjYxIMKg IMKgIMKgIMKgIDc0IMKgIMKgIMKgIMKgIDAKPiAyLjYuMzAuMTAtYXN5bmNjb25mdXNpb24gwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAwIMKgIMKgIMKgIMKgMCDCoCDCoCDCoCDC oDAgwqAgwqAgwqAgwqAgwqAyIMKgIMKgIMKgIMKgIDEgwqAgwqAgwqAgwqAgwqAgwqAgwqAzNiDC oCDCoCDCoCA4OCDCoCDCoCAxNjk5IMKgIMKgIMKgIDExMTQgwqAgwqAgwqAgwqAgMAo+Cj4gYXN5 bmNjb25mdXNpb24gY2FuIGJlIGJhY2stcG9ydGVkIGVhc2lseSB0byAyLjYuMzAuMTAuIFBlcmZv cm1hbmNlIGlzIG5vdAo+IHBlcmZlY3RseSBpbiBsaW5lIHdpdGggMi42LjI5IGJ1dCBpdCdzIGJl dHRlci4KPgo+IDIuNi4zMSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoDAgwqAgwqAgwqAgwqAwIMKgIMKgIMKgIMKgMCDCoCDCoCDC oCDCoCDCoDMgwqAgwqAgwqAgwqAgMSDCoCDCoCDCoCDCoCDCoCA0OTE3NSDCoCAyNDU3MjcgwqAy NzMwNjI2IMKgIMKgIDE3NjM0NCDCoCDCoCDCoCDCoCAwCj4gMi42LjMxLXJldmVydGV2aWN0IMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgMCDCoCDCoCDCoCDCoDAg wqAgwqAgwqAgwqAwIMKgIMKgIMKgIMKgIMKgMyDCoCDCoCDCoCDCoCAyIMKgIMKgIMKgIMKgIMKg IMKgIMKgMzEgwqAgwqAgwqAxNDcgwqAgwqAgMTg4NyDCoCDCoCDCoCDCoDExNCDCoCDCoCDCoCDC oCAwCj4gMi42LjMxLXR0eWZpeCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCAwIMKgIMKgIMKgIMKgMCDCoCDCoCDCoCDCoDAgwqAgwqAgwqAgwqAgwqAy IMKgIMKgIMKgIMKgIDIgwqAgwqAgwqAgwqAgwqAgNDYyMzggwqAgMjMxMDAwIMKgMjU0OTQ2MiDC oCDCoCAxNzA5MTIgwqAgwqAgwqAgwqAgMAo+IDIuNi4zMS10dHlmaXgtcmV2ZXJ0ZXZpY3QgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMCDCoCDCoCDCoCDCoDAgwqAgwqAgwqAgwqAw IMKgIMKgIMKgIMKgIMKgMyDCoCDCoCDCoCDCoCAwIMKgIMKgIMKgIMKgIMKgIMKgIMKgIDcgwqAg wqAgwqAgMzUgwqAgwqAgwqA0NDggwqAgwqAgwqAgwqAxMjEgwqAgwqAgwqAgwqAgMAo+IDIuNi4z MS4xMiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCAwIMKgIMKgIMKgIMKgMCDCoCDCoCDCoCDCoDAgwqAgwqAgwqAgwqAgwqAyIMKgIMKgIMKg IMKgIDAgwqAgwqAgwqAgwqAgwqAgNjg4OTcgwqAgMzQ0MjY4IMKgNDA1MDY0NiDCoCDCoCAxODM1 MjMgwqAgwqAgwqAgwqAgMAo+IDIuNi4zMS4xMi1yZXZlcnRldmljdCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAwIMKgIMKgIMKgIMKgMCDCoCDCoCDCoCDCoDAgwqAgwqAg wqAgwqAgwqAzIMKgIMKgIMKgIMKgIDEgwqAgwqAgwqAgwqAgwqAgwqAgwqAxOCDCoCDCoCDCoCA4 NyDCoCDCoCAxMDA5IMKgIMKgIMKgIMKgMTQ3IMKgIMKgIMKgIMKgIDAKPiAyLjYuMzEuMTItdHR5 Zml4IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgMCDCoCDC oCDCoCDCoDAgwqAgwqAgwqAgwqAwIMKgIMKgIMKgIMKgIMKgMiDCoCDCoCDCoCDCoCAwIMKgIMKg IMKgIMKgIMKgIDYyNzk3IMKgIDMxMzgwNSDCoDM3ODY1MzkgwqAgwqAgMTczMzk4IMKgIMKgIMKg IMKgIDAKPiAyLjYuMzEuMTItdHR5Zml4LXJldmVydGV2aWN0IMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgMCDCoCDCoCDCoCDCoDAgwqAgwqAgwqAgwqAwIMKgIMKgIMKgIMKgIMKgMyDCoCDC oCDCoCDCoCAyIMKgIMKgIMKgIMKgIMKgIMKgIMKgIDcgwqAgwqAgwqAgMzUgwqAgwqAgwqA0NDgg wqAgwqAgwqAgwqAxOTkgwqAgwqAgwqAgwqAgMAo+Cj4gQXBwbHlpbmcgdGhlIHR0eSBmaXhlcyBm cm9tIDIuNi4zNC1yYzIgYW5kIGdldHRpbmcgcmlkIG9mIHRoZSBldmljdC1vbmNlCj4gcGF0Y2hl cyBicmluZyB0aGluZ3MgYmFjayBpbiBsaW5lIHdpdGggMi42LjI5IGFnYWluLgo+Cj4gUmlrLCBh bnkgdGhlb3J5IG9uIGV2aWN0LW9uY2U/Cj4KPiAyLjYuMzIgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAwIMKgIMKgIMKgIMKgMCDC oCDCoCDCoCDCoDAgwqAgwqAgwqAgwqAgwqAzIMKgIMKgIMKgIMKgIDIgwqAgwqAgwqAgwqAgwqAg NDQ0MzcgwqAgMjIxNzUzIMKgMjc2MDg1NyDCoCDCoCAxMzI1MTcgwqAgwqAgwqAgwqAgMAo+IDIu Ni4zMi1yZXZlcnRldmljdCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoDAgwqAgwqAgwqAgwqAwIMKgIMKgIMKgIMKgMCDCoCDCoCDCoCDCoCDCoDMgwqAgwqAgwqAg wqAgMiDCoCDCoCDCoCDCoCDCoCDCoCDCoDM1IMKgIMKgIMKgIDE0IMKgIMKgIDE1NzAgwqAgwqAg wqAgwqA0NjAgwqAgwqAgwqAgwqAgMAo+IDIuNi4zMi10dHlmaXggwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMCDCoCDCoCDCoCDCoDAgwqAgwqAgwqAg wqAwIMKgIMKgIMKgIMKgIMKgMiDCoCDCoCDCoCDCoCAwIMKgIMKgIMKgIMKgIMKgIDYwNzcwIMKg IDMwMzIwNiDCoDM2NTkyNTQgwqAgwqAgMTY2MjkzIMKgIMKgIMKgIMKgIDAKPiAyLjYuMzItdHR5 Zml4LXJldmVydGV2aWN0IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIDAgwqAgwqAg wqAgwqAwIMKgIMKgIMKgIMKgMCDCoCDCoCDCoCDCoCDCoDMgwqAgwqAgwqAgwqAgMCDCoCDCoCDC oCDCoCDCoCDCoCDCoDU1IMKgIMKgIMKgIDYyIMKgIMKgIDI0OTYgwqAgwqAgwqAgwqA0OTQgwqAg wqAgwqAgwqAgMAo+IDIuNi4zMi4xMCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAwIMKgIMKgIMKgIMKgMCDCoCDCoCDCoCDCoDAgwqAgwqAg wqAgwqAgwqAyIMKgIMKgIMKgIMKgIDEgwqAgwqAgwqAgwqAgwqAgOTA3NjkgwqAgNDQ3NzAyIMKg NDI1MTQ0OCDCoCDCoCAyMzQ4NjggwqAgwqAgwqAgwqAgMAo+IDIuNi4zMi4xMC1yZXZlcnRldmlj dCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAwIMKgIMKgIMKgIMKgMCDC oCDCoCDCoCDCoDAgwqAgwqAgwqAgwqAgwqAzIMKgIMKgIMKgIMKgIDIgwqAgwqAgwqAgwqAgwqAg wqAgMTQ4IMKgIMKgIMKgNTk3IMKgIMKgIDg2NDIgwqAgwqAgwqAgwqA0NzggwqAgwqAgwqAgwqAg MAo+IDIuNi4zMi4xMC10dHlmaXggwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAwIMKgIMKgIMKgIMKgMCDCoCDCoCDCoCDCoDAgwqAgwqAgwqAgwqAgwqAzIMKg IMKgIMKgIMKgIDAgwqAgwqAgwqAgwqAgwqAgOTE3MjkgwqAgNDUzMzM3IMKgNDM3NDA3MCDCoCDC oCAyMzg1OTMgwqAgwqAgwqAgwqAgMAo+IDIuNi4zMi4xMC10dHlmaXgtcmV2ZXJ0ZXZpY3QgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAwIMKgIMKgIMKgIMKgMCDCoCDCoCDCoCDCoDAgwqAg wqAgwqAgwqAgwqAzIMKgIMKgIMKgIMKgIDEgwqAgwqAgwqAgwqAgwqAgwqAgwqA2NSDCoCDCoCDC oDE0NiDCoCDCoCAzNDA4IMKgIMKgIMKgIMKgMzQ3IMKgIMKgIMKgIMKgIDAKPgo+IEFnYWluLCBm aXhpbmcgdHR5IGFuZCByZXZlcnRpbmcgZXZpY3Qtb25jZSBoZWxwcyBicmluZyBmaWd1cmVzIG1v cmUgaW4gbGluZQo+IHdpdGggMi42LjI5Lgo+Cj4gMi42LjMzIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgMCDCoCDCoCDCoCDCoDAg wqAgwqAgwqAgwqAwIMKgIMKgIMKgIMKgIMKgMyDCoCDCoCDCoCDCoCAwIMKgIMKgIMKgIMKgIMKg MTUyMjQ4IMKgIDc1NDIyNiDCoDQ5NDA5NTIgwqAgwqAgMjY3MjE0IMKgIMKgIMKgIMKgIDAKPiAy LjYuMzMtcmV2ZXJ0ZXZpY3QgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAwIMKgIMKgIMKgIMKgMCDCoCDCoCDCoCDCoDAgwqAgwqAgwqAgwqAgwqAzIMKgIMKgIMKg IMKgIDAgwqAgwqAgwqAgwqAgwqAgwqAgODgzIMKgIMKgIDQzMDYgwqAgwqAyODkxOCDCoCDCoCDC oCDCoDUwNyDCoCDCoCDCoCDCoCAwCj4gMi42LjMzLXR0eWZpeCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAwIMKgIMKgIMKgIMKgMCDCoCDCoCDCoCDC oDAgwqAgwqAgwqAgwqAgwqAzIMKgIMKgIMKgIMKgIDAgwqAgwqAgwqAgwqAgwqAxNTc4MzEgwqAg NzgyNDczIMKgNTEyOTAxMSDCoCDCoCAyMzcxMTYgwqAgwqAgwqAgwqAgMAo+IDIuNi4zMy10dHlm aXgtcmV2ZXJ0ZXZpY3QgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMCDCoCDCoCDC oCDCoDAgwqAgwqAgwqAgwqAwIMKgIMKgIMKgIMKgIMKgMiDCoCDCoCDCoCDCoCAwIMKgIMKgIMKg IMKgIMKgIMKgMTA1NiDCoCDCoCA1MjM1IMKgIMKgMzQ3OTYgwqAgwqAgwqAgwqA1MTkgwqAgwqAg wqAgwqAgMAo+IDIuNi4zMy4xIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgMCDCoCDCoCDCoCDCoDAgwqAgwqAgwqAgwqAwIMKgIMKgIMKg IMKgIMKgMyDCoCDCoCDCoCDCoCAxIMKgIMKgIMKgIMKgIMKgMTU2NDIyIMKgIDc3NjcyNCDCoDUw NzgxNDUgwqAgwqAgMjM0OTM4IMKgIMKgIMKgIMKgIDAKPiAyLjYuMzMuMS1yZXZlcnRldmljdCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDAgwqAgwqAgwqAgwqAwIMKg IMKgIMKgIMKgMCDCoCDCoCDCoCDCoCDCoDIgwqAgwqAgwqAgwqAgMCDCoCDCoCDCoCDCoCDCoCDC oDEwOTUgwqAgwqAgNTQwNSDCoCDCoDM2MDU4IMKgIMKgIMKgIMKgNDc3IMKgIMKgIMKgIMKgIDAK PiAyLjYuMzMuMS10dHlmaXggwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgMCDCoCDCoCDCoCDCoDAgwqAgwqAgwqAgwqAwIMKgIMKgIMKgIMKgIMKgMyDCoCDC oCDCoCDCoCAxIMKgIMKgIMKgIMKgIMKgMTM2MzI0IMKgIDY3MzE0OCDCoDQ0MzQ0NjEgwqAgwqAg MjM2NTk3IMKgIMKgIMKgIMKgIDAKPiAyLjYuMzMuMS10dHlmaXgtcmV2ZXJ0ZXZpY3QgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMCDCoCDCoCDCoCDCoDAgwqAgwqAgwqAgwqAwIMKgIMKg IMKgIMKgIMKgMSDCoCDCoCDCoCDCoCAxIMKgIMKgIMKgIMKgIMKgIMKgMTMzOSDCoCDCoCA2NjI0 IMKgIMKgNDM1ODMgwqAgwqAgwqAgwqA0NjYgwqAgwqAgwqAgwqAgMAo+Cj4gQXQgdGhpcyBwb2lu dCwgdGhlIENGUSBjb21taXQgImNmcS1pb3NjaGVkOiBmYWlybmVzcyBmb3Igc3luYyBuby1pZGxl Cj4gcXVldWVzIiBoYXMgbG9kZ2VkIGl0c2VsZiBkZWVwIHdpdGhpbiBDR1EgYW5kIEkgY291bGRu J3QgdGVhciBpdCBvdXQgb3IKPiBzZWUgaG93IHRvIGZpeCBpdC4gRml4aW5nIHR0eSBhbmQgcmV2 ZXJ0aW5nIGV2aWN0LW9uY2UgaGVscHMgYnV0IHRoZSBudW1iZXIKPiBvZiBzdGFsbHMgaXMgc2ln bmlmaWNhbnRseSBpbmNyZWFzZWQgYW5kIGEgbXVjaCBsYXJnZXIgbnVtYmVyIG9mIHBhZ2VzIGdl dAo+IHJlY2xhaW1lZCBvdmVyYWxsLgo+Cj4gQ29ycmFkbz8KClRoZSBtYWpvciBjaGFuZ2VzIGlu IEkvTyBzY2hlZHVpbmcgYmVoYXZpb3VyIGFyZToKKiBidWZmZXJlZCB3cml0ZXM6CiAgKiBiZWZv cmUgd2UgY291bGQgc2NoZWR1bGUgZmV3IHdyaXRlcywgdGhlbiBpbnRlcnJ1cHQgdGhlbSB0byBk bwpzb21lIHJlYWRzLCBhbmQgdGhlbiBnbyBiYWNrIHRvIHdyaXRlczsgbm93IHdlIGd1YXJhbnRl ZSBzb21lCnVuaW50ZXJydXB0aWJsZSB0aW1lIHNsaWNlIGZvciB3cml0ZXMsIGJ1dCB0aGUgZGVs YXkgYmV0d2VlbiB0d28Kc2xpY2VzIGlzIGluY3JlYXNlZC4gVGhlIHRvdGFsIHdyaXRlIHRocm91 Z2hwdXQgYXZlcmFnZWQgb3ZlciBhIHRpbWUKd2luZG93IGxhcmdlciB0aGFuIDMwMG1zIHNob3Vs ZCBiZSBjb21wYXJhYmxlLCBvciBldmVuIGJldHRlciB3aXRoCjIuNi4zMy4gTm90ZSB0aGF0IHRo ZSBjb21taXQgeW91IGNpdGUgaGFzIGludHJvZHVjZWQgYSBidWcgcmVnYXJkaW5nCndyaXRlIHRo cm91Z2hwdXQgb24gTkNRIGRpc2tzIHRoYXQgd2FzIGxhdGVyIGZpeGVkIGJ5IDFlZmU4ZmUxLCBt ZXJnZWQKYmVmb3JlIDIuNi4zMyAodGhpcyBtYXkgbGVhZCB0byBjb25mdXNpbmcgYmlzZWN0aW9u IHJlc3VsdHMpLgoqIHJlYWRzIChhbmQgc3luYyB3cml0ZXMpOgogICogYmVmb3JlLCB3ZSBzZXJ2 aWNlZCBhIHNpbmdsZSBwcm9jZXNzIGZvciAxMDBtcywgdGhlbiBzd2l0Y2hlZCB0bwphbiBvdGhl ciwgYW5kIHNvIG9uLgogICogYWZ0ZXIsIHdlIGdvIHJvdW5kIHJvYmluIGZvciByYW5kb20gcmVx dWVzdHMgKHRoZXkgZ2V0IGEgdW5pZmllZAp0aW1lIHNsaWNlLCBsaWtlIGJ1ZmZlcmVkIHdyaXRl cyBkbyksIGFuZCB3ZSBoYXZlIGNvbnNlY3V0aXZlIHRpbWUKc2xpY2VzIGZvciBzZXF1ZW50aWFs IHJlcXVlc3RzLCBidXQgdGhlIGxlbmd0aCBvZiB0aGUgc2xpY2UgaXMgcmVkdWNlZAp3aGVuIHRo ZSBudW1iZXIgb2YgY29uY3VycmVudCBwcm9jZXNzZXMgZG9pbmcgSS9PIGluY3JlYXNlcy4KClRo aXMgbWVhbnMgdGhhdCB3aXRoIDE2IHByb2Nlc3NlcyBkb2luZyBzZXF1ZW50aWFsIEkvTyBvbiB0 aGUgc2FtZQpkaXNrLCBiZWZvcmUgeW91IHdlcmUgc3dpdGNoaW5nIGJldHdlZW4gcHJvY2Vzc2Vz IGV2ZXJ5IDEwMG1zLCBhbmQgbm93CmV2ZXJ5IDMybXMuIFRoZSBvbGQgYmVoYXZpb3VyIGNhbiBi ZSBicm91Z2h0IGJhY2sgYnkgc2V0dGluZwovc3lzL2Jsb2NrL3NkKi9xdWV1ZS9pb3NjaGVkL2xv d19sYXRlbmN5IHRvIDAuCkZvciByYW5kb20gSS9PLCB0aGUgc2l0dWF0aW9uIChnb2luZyByb3Vu ZCByb2JpbiwgaXQgd2lsbCB0cmFuc2xhdGUgdG8Kc3dpdGNoaW5nIGV2ZXJ5IDggbXMgb24gYXZl cmFnZSkgaXMgbm90IHJldmVydGFibGUgdmlhIGZsYWdzLgoKPgo+IDIuNi4zNC1yYzEgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAwIMKgIMKg IMKgIMKgMCDCoCDCoCDCoCDCoDAgwqAgwqAgwqAgwqAgwqAxIMKgIMKgIMKgIMKgIDEgwqAgwqAg wqAgwqAgwqAxNTA2MjkgwqAgNzQ2OTAxIMKgNDg5NTMyOCDCoCDCoCAyMzkyMzMgwqAgwqAgwqAg wqAgMAo+IDIuNi4zNC1yYzEtcmV2ZXJ0ZXZpY3QgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAwIMKgIMKgIMKgIMKgMCDCoCDCoCDCoCDCoDAgwqAgwqAgwqAgwqAgwqAxIMKg IMKgIMKgIMKgIDAgwqAgwqAgwqAgwqAgwqAgwqAyNTk1IMKgIMKgMTI5MDEgwqAgwqA4NDk4OCDC oCDCoCDCoCDCoDYyMiDCoCDCoCDCoCDCoCAwCj4gMi42LjM0LXJjMS10dHlmaXggwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgMCDCoCDCoCDCoCDCoDAgwqAgwqAg wqAgwqAwIMKgIMKgIMKgIMKgIMKgMSDCoCDCoCDCoCDCoCAxIMKgIMKgIMKgIMKgIMKgMTU5NjAz IMKgIDc5MTA1NiDCoDUxODYwODIgwqAgwqAgMjIzNDU4IMKgIMKgIMKgIMKgIDAKPiAyLjYuMzQt cmMxLXR0eWZpeC1yZXZlcnRldmljdCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAwIMKgIMKg IMKgIMKgMCDCoCDCoCDCoCDCoDAgwqAgwqAgwqAgwqAgwqAwIMKgIMKgIMKgIMKgIDAgwqAgwqAg wqAgwqAgwqAgwqAxNTQ5IMKgIMKgIDc2NDEgwqAgwqA1MDQ4NCDCoCDCoCDCoCDCoDY3OSDCoCDC oCDCoCDCoCAwCj4KPiBBZ2FpbiwgdHR5Zml4IGFuZCByZXZlcnRldmljdCBoZWxwIGEgbG90IGJ1 dCBDRlEgbmVlZHMgdG8gYmUgZml4ZWQgdG8gZ2V0Cj4gYmFjayB0byAyLjYuMjkgcGVyZm9ybWFu Y2UuCj4KPiBOZXh0IFN0ZXBzCj4gPT09PT09PT09PQo+Cj4gSmVucywgYW55IHByb2JsZW1zIHdp dGggbWUgYmFja3BvcnRpbmcgdGhlIGFzeW5jL3N5bmMgZml4ZXMgZnJvbSAyLjYuMzEgdG8KPiAy LjYuMzAueCAoYXNzdW1pbmcgdGhhdCBpcyBzdGlsbCBtYWludGFpbmVkLCBHcmVnPyk/Cj4KPiBS aWssIGFueSBzdWdnZXN0aW9ucyBvbiB3aGF0IGNhbiBiZSBkb25lIHdpdGggZXZpY3Qtb25jZT8K Pgo+IENvcnJhZG8sIGFueSBzdWdnZXN0aW9ucyBvbiB3aGF0IGNhbiBiZSBkb25lIHdpdGggQ0ZR PwoKSWYgbXkgaW50dWl0aW9uIHRoYXQgc3dpdGNoaW5nIGJldHdlZW4gcHJvY2Vzc2VzIHRvbyBv ZnRlbiBpcwpkZXRyaW1lbnRhbCB3aGVuIHlvdSBoYXZlIG1lbW9yeSBwcmVzc3VyZSAoaGlnaGVy IHByb2JhYmlsaXR5IHRvIG5lZWQKdG8gcmUtcGFnZS1pbiBzb21lIG9mIHRoZSBwYWdlcyB0aGF0 IHdlcmUganVzdCBkaXNjYXJkZWQpLCBJIHN1Z2dlc3QKdHJ5aW5nIHNldHRpbmcgbG93X2xhdGVu Y3kgdG8gMCwgYW5kIG1heWJlIGluY3JlYXNpbmcgdGhlIHNsaWNlX3N5bmMKKHRvIGdldCBtb3Jl IHNsaWNlIHRvIGEgc2luZ2xlIHByb2Nlc3MgYmVmb3JlIHN3aXRjaGluZyB0byBhbiBvdGhlciks CnNsaWNlX2FzeW5jICh0byBnaXZlIG1vcmUgdW5pbnRlcnJ1cHRpYmxlIHRpbWUgdG8gYnVmZmVy ZWQgd3JpdGVzKSBhbmQKc2xpY2VfYXN5bmNfcnEgKHRvIGhpZ2hlciB0aGUgbGltaXQgb2YgY29u c2VjdXRpdmUgd3JpdGUgcmVxdWVzdHMgY2FuCmJlIHNlbnQgdG8gZGlzaykuCldoaWxlIHRoaXMg d291bGQgbm9ybWFsbHkgbGVhZCB0byBhIGJhZCB1c2VyIGV4cGVyaWVuY2Ugb24gYSBzeXN0ZW0K d2l0aCBwbGVudHkgb2YgbWVtb3J5LCBpdCBzaG91bGQga2VlcCB0aGluZ3MgYWNjZXB0YWJsZSB3 aGVuIHBhZ2luZyBpbgovIHN3YXBwaW5nIC8gZGlydHkgcGFnZSB3cml0ZWJhY2sgaXMgb3Zlcndo ZWxtaW5nLgoKQ29ycmFkbwoKPgo+IENocmlzdGlhbiwgY2FuIHlvdSB0ZXN0IHRoZSBmb2xsb3dp bmcgYW1hbGdhbWF0ZWQgcGF0Y2ggb24gMi42LjMyLjEwIGFuZAo+IDIuNi4zMyBwbGVhc2U/IE5v dGUgaXQncyAyLjYuMzIuMTAgYmVjYXVzZSB0aGUgcGF0Y2hlcyBiZWxvdyB3aWxsIG5vdCBhcHBs eQo+IGNsZWFubHkgdG8gMi42LjMyIGJ1dCBpdCB3aWxsIGFnYWluc3QgMi42LjMzLiBJdCdzIGEg Y29tYmluYXRpb24gb2YgdHR5Zml4Cj4gYW5kIHJldmVydGV2aWN0LiBJZiB5b3VyIHByb2JsZW0g Z29lcyBhd2F5LCBpdCBpbXBsaWVzIHRoYXQgdGhlIHN0YWxscyBJCj4gY2FuIG1lYXN1cmUgYXJl IHJvdWdobHkgY29ycmVsYXRlZCB0byB0aGUgbW9yZSBzaWduaWZpY2FudCBwcm9ibGVtIHlvdSBo YXZlLgo+Cj4gPT09PT0gQ1VUIEhFUkUgPT09PT0KPgo+IEZyb20gZDk2NjFhZGZiOGU1M2E3NjQ3 MzYwMTQwYWYzYjkyMjg0Y2JlNTJkNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKPiBGcm9tOiBB bGFuIENveCA8YWxhbkBsaW51eC5pbnRlbC5jb20+Cj4gRGF0ZTogVGh1LCAxOCBGZWIgMjAxMCAx Njo0Mzo0NyArMDAwMAo+IFN1YmplY3Q6IFtQQVRDSF0gdHR5OiBLZWVwIHRoZSBkZWZhdWx0IGJ1 ZmZlcmluZyB0byBzdWItcGFnZSB1bml0cwo+Cj4gV2UgYWxsb2NhdGUgZHVyaW5nIGludGVycnVw dHMgc28gd2hpbGUgb3VyIGJ1ZmZlcmluZyBpcyBub3JtYWxseSBkaWNlZCB1cAo+IHNtYWxsIGFu eXdheSBvbiBzb21lIGhhcmR3YXJlIGF0IHNwZWVkIHdlIGNhbiBwcmVzc3VyZSB0aGUgVk0gZXhj ZXNzaXZlbHkKPiBmb3IgcGFnZSBwYWlycy4gV2UgZG9uJ3QgcmVhbGx5IG5lZWQgYmlnIGJ1ZmZl cnMgdG8gYmUgbGluZWFyIHNvIGRvbid0IHRyeQo+IHNvIGhhcmQuCj4KPiBJbiBvcmRlciB0byBt YWtlIHRoaXMgd29yayB3ZWxsIHdlIHdpbGwgdGlkeSB1cCBleGNlc3MgY2FsbGVycyB0byByZXF1 ZXN0X3Jvb20sCj4gd2hpY2ggY2Fubm90IGl0c2VsZiBlbmZvcmNlIHRoaXMgYnJlYWsgdXAuCj4K PiBTaWduZWQtb2ZmLWJ5OiBBbGFuIENveCA8YWxhbkBsaW51eC5pbnRlbC5jb20+Cj4gU2lnbmVk LW9mZi1ieTogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAc3VzZS5kZT4KPgo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2NoYXIvdHR5X2J1ZmZlci5jIGIvZHJpdmVycy9jaGFyL3R0eV9idWZmZXIu Ywo+IGluZGV4IDY2ZmE0ZTEuLmYyN2M0ZDYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9jaGFyL3R0 eV9idWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvY2hhci90dHlfYnVmZmVyLmMKPiBAQCAtMjQ3LDcg KzI0Nyw4IEBAIGludCB0dHlfaW5zZXJ0X2ZsaXBfc3RyaW5nKHN0cnVjdCB0dHlfc3RydWN0ICp0 dHksIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmNoYXJzLAo+IMKgewo+IMKgIMKgIMKgIMKgaW50IGNv cGllZCA9IDA7Cj4gwqAgwqAgwqAgwqBkbyB7Cj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpbnQg c3BhY2UgPSB0dHlfYnVmZmVyX3JlcXVlc3Rfcm9vbSh0dHksIHNpemUgLSBjb3BpZWQpOwo+ICsg wqAgwqAgwqAgwqAgwqAgwqAgwqAgaW50IGdvYWwgPSBtaW4oc2l6ZSAtIGNvcGllZCwgVFRZX0JV RkZFUl9QQUdFKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGludCBzcGFjZSA9IHR0eV9idWZm ZXJfcmVxdWVzdF9yb29tKHR0eSwgZ29hbCk7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBzdHJ1 Y3QgdHR5X2J1ZmZlciAqdGIgPSB0dHktPmJ1Zi50YWlsOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgLyogSWYgdGhlcmUgaXMgbm8gc3BhY2UgdGhlbiB0YiBtYXkgYmUgTlVMTCAqLwo+IMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgaWYgKHVubGlrZWx5KHNwYWNlID09IDApKQo+IEBAIC0yODMsNyAr Mjg0LDggQEAgaW50IHR0eV9pbnNlcnRfZmxpcF9zdHJpbmdfZmxhZ3Moc3RydWN0IHR0eV9zdHJ1 Y3QgKnR0eSwKPiDCoHsKPiDCoCDCoCDCoCDCoGludCBjb3BpZWQgPSAwOwo+IMKgIMKgIMKgIMKg ZG8gewo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW50IHNwYWNlID0gdHR5X2J1ZmZlcl9yZXF1 ZXN0X3Jvb20odHR5LCBzaXplIC0gY29waWVkKTsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlu dCBnb2FsID0gbWluKHNpemUgLSBjb3BpZWQsIFRUWV9CVUZGRVJfUEFHRSk7Cj4gKyDCoCDCoCDC oCDCoCDCoCDCoCDCoCBpbnQgc3BhY2UgPSB0dHlfYnVmZmVyX3JlcXVlc3Rfcm9vbSh0dHksIGdv YWwpOwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgc3RydWN0IHR0eV9idWZmZXIgKnRiID0gdHR5 LT5idWYudGFpbDsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoC8qIElmIHRoZXJlIGlzIG5vIHNw YWNlIHRoZW4gdGIgbWF5IGJlIE5VTEwgKi8KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGlmICh1 bmxpa2VseShzcGFjZSA9PSAwKSkKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC90dHkuaCBi L2luY2x1ZGUvbGludXgvdHR5LmgKPiBpbmRleCA2YWJmY2Y1Li5kOTZlNTg4IDEwMDY0NAo+IC0t LSBhL2luY2x1ZGUvbGludXgvdHR5LmgKPiArKysgYi9pbmNsdWRlL2xpbnV4L3R0eS5oCj4gQEAg LTY4LDYgKzY4LDE2IEBAIHN0cnVjdCB0dHlfYnVmZmVyIHsKPiDCoCDCoCDCoCDCoHVuc2lnbmVk IGxvbmcgZGF0YVswXTsKPiDCoH07Cj4KPiArLyoKPiArICogV2UgZGVmYXVsdCB0byBkaWNpbmcg dHR5IGJ1ZmZlciBhbGxvY2F0aW9ucyB0byB0aGlzIG1hbnkgY2hhcmFjdGVycwo+ICsgKiBpbiBv cmRlciB0byBhdm9pZCBtdWx0aXBsZSBwYWdlIGFsbG9jYXRpb25zLiBXZSBhc3N1bWUgdHR5X2J1 ZmZlciBpdHNlbGYKPiArICogaXMgdW5kZXIgMjU2IGJ5dGVzLiBTZWUgdHR5X2J1ZmZlcl9maW5k IGZvciB0aGUgYWxsb2NhdGlvbiBsb2dpYyB0aGlzCj4gKyAqIG11c3QgbWF0Y2gKPiArICovCj4g Kwo+ICsjZGVmaW5lIFRUWV9CVUZGRVJfUEFHRSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCgoUEFH RV9TSVpFIMKgLSAyNTYpIC8gMikKPiArCj4gKwo+IMKgc3RydWN0IHR0eV9idWZoZWFkIHsKPiDC oCDCoCDCoCDCoHN0cnVjdCBkZWxheWVkX3dvcmsgd29yazsKPiDCoCDCoCDCoCDCoHNwaW5sb2Nr X3QgbG9jazsKPiBGcm9tIDM1MmZhNmFkMTZiODlmOGZmZDFhOTNiNDQxOWIxYThmMjI1OWZlYWIg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCj4gRnJvbTogTWVsIEdvcm1hbiA8bWVsQGNzbi51bC5p ZT4KPiBEYXRlOiBUdWUsIDIgTWFyIDIwMTAgMjI6MjQ6MTkgKzAwMDAKPiBTdWJqZWN0OiBbUEFU Q0hdIHR0eTogVGFrZSBhIDI1NiBieXRlIHBhZGRpbmcgaW50byBhY2NvdW50IHdoZW4gYnVmZmVy aW5nIGJlbG93IHN1Yi1wYWdlIHVuaXRzCj4KPiBUaGUgVFRZIGxheWVyIHRha2VzIHNvbWUgY2Fy ZSB0byBlbnN1cmUgdGhhdCBvbmx5IHN1Yi1wYWdlIGFsbG9jYXRpb25zCj4gYXJlIG1hZGUgd2l0 aCBpbnRlcnJ1cHRzIGRpc2FibGVkLiBJdCBkb2VzIHRoaXMgYnkgc2V0dGluZyBhIGdvYWwgb2YK PiAiVFRZX0JVRkZFUl9QQUdFIiB0byBhbGxvY2F0ZS4gVW5mb3J0dW5hdGVseSwgd2hpbGUgVFRZ X0JVRkZFUl9QQUdFIHRha2VzIHRoZQo+IHNpemUgb2YgdHR5X2J1ZmZlciBpbnRvIGFjY291bnQs IGl0IGZhaWxzIHRvIGFjY291bnQgdGhhdCB0dHlfYnVmZmVyX2ZpbmQoKQo+IHJvdW5kcyB0aGUg YnVmZmVyIHNpemUgb3V0IHRvIHRoZSBuZXh0IDI1NiBieXRlIGJvdW5kYXJ5IGJlZm9yZSBhZGRp bmcgb24KPiB0aGUgc2l6ZSBvZiB0aGUgdHR5X2J1ZmZlci4KPgo+IFRoaXMgcGF0Y2ggYWRqdXN0 cyB0aGUgVFRZX0JVRkZFUl9QQUdFIGNhbGN1bGF0aW9uIHRvIHRha2UgaW50byBhY2NvdW50IHRo ZQo+IHNpemUgb2YgdGhlIHR0eV9idWZmZXIgYW5kIHRoZSBwYWRkaW5nLiBPbmNlIGFwcGxpZWQs IHR0eV9idWZmZXJfYWxsb2MoKQo+IHNob3VsZCBub3QgcmVxdWlyZSBoaWdoLW9yZGVyIGFsbG9j YXRpb25zLgo+Cj4gU2lnbmVkLW9mZi1ieTogTWVsIEdvcm1hbiA8bWVsQGNzbi51bC5pZT4KPiBD Yzogc3RhYmxlIDxzdGFibGVAa2VybmVsLm9yZz4KPiBTaWduZWQtb2ZmLWJ5OiBHcmVnIEtyb2Fo LUhhcnRtYW4gPGdyZWdraEBzdXNlLmRlPgo+Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgv dHR5LmggYi9pbmNsdWRlL2xpbnV4L3R0eS5oCj4gaW5kZXggNTY4MzY5YS4uNTkzMjI4YSAxMDA2 NDQKPiAtLS0gYS9pbmNsdWRlL2xpbnV4L3R0eS5oCj4gKysrIGIvaW5jbHVkZS9saW51eC90dHku aAo+IEBAIC03MCwxMiArNzAsMTMgQEAgc3RydWN0IHR0eV9idWZmZXIgewo+Cj4gwqAvKgo+IMKg KiBXZSBkZWZhdWx0IHRvIGRpY2luZyB0dHkgYnVmZmVyIGFsbG9jYXRpb25zIHRvIHRoaXMgbWFu eSBjaGFyYWN0ZXJzCj4gLSAqIGluIG9yZGVyIHRvIGF2b2lkIG11bHRpcGxlIHBhZ2UgYWxsb2Nh dGlvbnMuIFdlIGFzc3VtZSB0dHlfYnVmZmVyIGl0c2VsZgo+IC0gKiBpcyB1bmRlciAyNTYgYnl0 ZXMuIFNlZSB0dHlfYnVmZmVyX2ZpbmQgZm9yIHRoZSBhbGxvY2F0aW9uIGxvZ2ljIHRoaXMKPiAt ICogbXVzdCBtYXRjaAo+ICsgKiBpbiBvcmRlciB0byBhdm9pZCBtdWx0aXBsZSBwYWdlIGFsbG9j YXRpb25zLiBXZSBrbm93IHRoZSBzaXplIG9mCj4gKyAqIHR0eV9idWZmZXIgaXRzZWxmIGJ1dCBp dCBtdXN0IGFsc28gYmUgdGFrZW4gaW50byBhY2NvdW50IHRoYXQgdGhlCj4gKyAqIHRoZSBidWZm ZXIgaXMgMjU2IGJ5dGUgYWxpZ25lZC4gU2VlIHR0eV9idWZmZXJfZmluZCBmb3IgdGhlIGFsbG9j YXRpb24KPiArICogbG9naWMgdGhpcyBtdXN0IG1hdGNoCj4gwqAqLwo+Cj4gLSNkZWZpbmUgVFRZ X0JVRkZFUl9QQUdFIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgKChQQUdFX1NJWkUgwqAtIDI1Nikg LyAyKQo+ICsjZGVmaW5lIFRUWV9CVUZGRVJfUEFHRSDCoCDCoCDCoCDCoCgoKFBBR0VfU0laRSAt IHNpemVvZihzdHJ1Y3QgdHR5X2J1ZmZlcikpIC8gMikgJiB+MHhGRikKPgo+Cj4gwqBzdHJ1Y3Qg dHR5X2J1ZmhlYWQgewo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaCBi L2luY2x1ZGUvbGludXgvbWVtY29udHJvbC5oCj4gaW5kZXggYmY5MjEzYi4uNWJhMGQ5YSAxMDA2 NDQKPiAtLS0gYS9pbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaAo+ICsrKyBiL2luY2x1ZGUvbGlu dXgvbWVtY29udHJvbC5oCj4gQEAgLTk0LDcgKzk0LDYgQEAgZXh0ZXJuIHZvaWQgbWVtX2Nncm91 cF9ub3RlX3JlY2xhaW1fcHJpb3JpdHkoc3RydWN0IG1lbV9jZ3JvdXAgKm1lbSwKPiDCoGV4dGVy biB2b2lkIG1lbV9jZ3JvdXBfcmVjb3JkX3JlY2xhaW1fcHJpb3JpdHkoc3RydWN0IG1lbV9jZ3Jv dXAgKm1lbSwKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGludCBwcmlvcml0eSk7Cj4gwqBp bnQgbWVtX2Nncm91cF9pbmFjdGl2ZV9hbm9uX2lzX2xvdyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVt Y2cpOwo+IC1pbnQgbWVtX2Nncm91cF9pbmFjdGl2ZV9maWxlX2lzX2xvdyhzdHJ1Y3QgbWVtX2Nn cm91cCAqbWVtY2cpOwo+IMKgdW5zaWduZWQgbG9uZyBtZW1fY2dyb3VwX3pvbmVfbnJfcGFnZXMo c3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHN0cnVjdCB6b25lICp6b25lLAo+IMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGVudW0gbHJ1 X2xpc3QgbHJ1KTsKPiBAQCAtMjQzLDEyICsyNDIsNiBAQCBtZW1fY2dyb3VwX2luYWN0aXZlX2Fu b25faXNfbG93KHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZykKPiDCoCDCoCDCoCDCoHJldHVybiAx Owo+IMKgfQo+Cj4gLXN0YXRpYyBpbmxpbmUgaW50Cj4gLW1lbV9jZ3JvdXBfaW5hY3RpdmVfZmls ZV9pc19sb3coc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKQo+IC17Cj4gLSDCoCDCoCDCoCByZXR1 cm4gMTsKPiAtfQo+IC0KPiDCoHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZwo+IMKgbWVtX2Nn cm91cF96b25lX25yX3BhZ2VzKHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywgc3RydWN0IHpvbmUg KnpvbmUsCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZW51bSBscnVfbGlz dCBscnUpCj4gZGlmZiAtLWdpdCBhL21tL21lbWNvbnRyb2wuYyBiL21tL21lbWNvbnRyb2wuYwo+ IGluZGV4IDY2MDM1YmYuLmJiYjBlZGEgMTAwNjQ0Cj4gLS0tIGEvbW0vbWVtY29udHJvbC5jCj4g KysrIGIvbW0vbWVtY29udHJvbC5jCj4gQEAgLTg0MywxNyArODQzLDYgQEAgaW50IG1lbV9jZ3Jv dXBfaW5hY3RpdmVfYW5vbl9pc19sb3coc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKQo+IMKgIMKg IMKgIMKgcmV0dXJuIDA7Cj4gwqB9Cj4KPiAtaW50IG1lbV9jZ3JvdXBfaW5hY3RpdmVfZmlsZV9p c19sb3coc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnKQo+IC17Cj4gLSDCoCDCoCDCoCB1bnNpZ25l ZCBsb25nIGFjdGl2ZTsKPiAtIMKgIMKgIMKgIHVuc2lnbmVkIGxvbmcgaW5hY3RpdmU7Cj4gLQo+ IC0gwqAgwqAgwqAgaW5hY3RpdmUgPSBtZW1fY2dyb3VwX2dldF9sb2NhbF96b25lc3RhdChtZW1j ZywgTFJVX0lOQUNUSVZFX0ZJTEUpOwo+IC0gwqAgwqAgwqAgYWN0aXZlID0gbWVtX2Nncm91cF9n ZXRfbG9jYWxfem9uZXN0YXQobWVtY2csIExSVV9BQ1RJVkVfRklMRSk7Cj4gLQo+IC0gwqAgwqAg wqAgcmV0dXJuIChhY3RpdmUgPiBpbmFjdGl2ZSk7Cj4gLX0KPiAtCj4gwqB1bnNpZ25lZCBsb25n IG1lbV9jZ3JvdXBfem9uZV9ucl9wYWdlcyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2csCj4gwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc3Ry dWN0IHpvbmUgKnpvbmUsCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgZW51bSBscnVfbGlzdCBscnUpCj4gZGlmZiAtLWdpdCBhL21tL3Zt c2Nhbi5jIGIvbW0vdm1zY2FuLmMKPiBpbmRleCA2OTI4MDdmLi41NTEyMzAxIDEwMDY0NAo+IC0t LSBhL21tL3Ztc2Nhbi5jCj4gKysrIGIvbW0vdm1zY2FuLmMKPiBAQCAtMTQyOCw1OSArMTQyOCwx MyBAQCBzdGF0aWMgaW50IGluYWN0aXZlX2Fub25faXNfbG93KHN0cnVjdCB6b25lICp6b25lLCBz dHJ1Y3Qgc2Nhbl9jb250cm9sICpzYykKPiDCoCDCoCDCoCDCoHJldHVybiBsb3c7Cj4gwqB9Cj4K PiAtc3RhdGljIGludCBpbmFjdGl2ZV9maWxlX2lzX2xvd19nbG9iYWwoc3RydWN0IHpvbmUgKnpv bmUpCj4gLXsKPiAtIMKgIMKgIMKgIHVuc2lnbmVkIGxvbmcgYWN0aXZlLCBpbmFjdGl2ZTsKPiAt Cj4gLSDCoCDCoCDCoCBhY3RpdmUgPSB6b25lX3BhZ2Vfc3RhdGUoem9uZSwgTlJfQUNUSVZFX0ZJ TEUpOwo+IC0gwqAgwqAgwqAgaW5hY3RpdmUgPSB6b25lX3BhZ2Vfc3RhdGUoem9uZSwgTlJfSU5B Q1RJVkVfRklMRSk7Cj4gLQo+IC0gwqAgwqAgwqAgcmV0dXJuIChhY3RpdmUgPiBpbmFjdGl2ZSk7 Cj4gLX0KPiAtCj4gLS8qKgo+IC0gKiBpbmFjdGl2ZV9maWxlX2lzX2xvdyAtIGNoZWNrIGlmIGZp bGUgcGFnZXMgbmVlZCB0byBiZSBkZWFjdGl2YXRlZAo+IC0gKiBAem9uZTogem9uZSB0byBjaGVj awo+IC0gKiBAc2M6IMKgIHNjYW4gY29udHJvbCBvZiB0aGlzIGNvbnRleHQKPiAtICoKPiAtICog V2hlbiB0aGUgc3lzdGVtIGlzIGRvaW5nIHN0cmVhbWluZyBJTywgbWVtb3J5IHByZXNzdXJlIGhl cmUKPiAtICogZW5zdXJlcyB0aGF0IGFjdGl2ZSBmaWxlIHBhZ2VzIGdldCBkZWFjdGl2YXRlZCwg dW50aWwgbW9yZQo+IC0gKiB0aGFuIGhhbGYgb2YgdGhlIGZpbGUgcGFnZXMgYXJlIG9uIHRoZSBp bmFjdGl2ZSBsaXN0Lgo+IC0gKgo+IC0gKiBPbmNlIHdlIGdldCB0byB0aGF0IHNpdHVhdGlvbiwg cHJvdGVjdCB0aGUgc3lzdGVtJ3Mgd29ya2luZwo+IC0gKiBzZXQgZnJvbSBiZWluZyBldmljdGVk IGJ5IGRpc2FibGluZyBhY3RpdmUgZmlsZSBwYWdlIGFnaW5nLgo+IC0gKgo+IC0gKiBUaGlzIHVz ZXMgYSBkaWZmZXJlbnQgcmF0aW8gdGhhbiB0aGUgYW5vbnltb3VzIHBhZ2VzLCBiZWNhdXNlCj4g LSAqIHRoZSBwYWdlIGNhY2hlIHVzZXMgYSB1c2Utb25jZSByZXBsYWNlbWVudCBhbGdvcml0aG0u Cj4gLSAqLwo+IC1zdGF0aWMgaW50IGluYWN0aXZlX2ZpbGVfaXNfbG93KHN0cnVjdCB6b25lICp6 b25lLCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYykKPiAtewo+IC0gwqAgwqAgwqAgaW50IGxvdzsK PiAtCj4gLSDCoCDCoCDCoCBpZiAoc2Nhbm5pbmdfZ2xvYmFsX2xydShzYykpCj4gLSDCoCDCoCDC oCDCoCDCoCDCoCDCoCBsb3cgPSBpbmFjdGl2ZV9maWxlX2lzX2xvd19nbG9iYWwoem9uZSk7Cj4g LSDCoCDCoCDCoCBlbHNlCj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCBsb3cgPSBtZW1fY2dyb3Vw X2luYWN0aXZlX2ZpbGVfaXNfbG93KHNjLT5tZW1fY2dyb3VwKTsKPiAtIMKgIMKgIMKgIHJldHVy biBsb3c7Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbnQgaW5hY3RpdmVfbGlzdF9pc19sb3coc3RydWN0 IHpvbmUgKnpvbmUsIHN0cnVjdCBzY2FuX2NvbnRyb2wgKnNjLAo+IC0gwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW50IGZpbGUpCj4gLXsKPiAtIMKgIMKgIMKg IGlmIChmaWxlKQo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIGluYWN0aXZlX2ZpbGVf aXNfbG93KHpvbmUsIHNjKTsKPiAtIMKgIMKgIMKgIGVsc2UKPiAtIMKgIMKgIMKgIMKgIMKgIMKg IMKgIHJldHVybiBpbmFjdGl2ZV9hbm9uX2lzX2xvdyh6b25lLCBzYyk7Cj4gLX0KPiAtCj4gwqBz dGF0aWMgdW5zaWduZWQgbG9uZyBzaHJpbmtfbGlzdChlbnVtIGxydV9saXN0IGxydSwgdW5zaWdu ZWQgbG9uZyBucl90b19zY2FuLAo+IMKgIMKgIMKgIMKgc3RydWN0IHpvbmUgKnpvbmUsIHN0cnVj dCBzY2FuX2NvbnRyb2wgKnNjLCBpbnQgcHJpb3JpdHkpCj4gwqB7Cj4gwqAgwqAgwqAgwqBpbnQg ZmlsZSA9IGlzX2ZpbGVfbHJ1KGxydSk7Cj4KPiAtIMKgIMKgIMKgIGlmIChpc19hY3RpdmVfbHJ1 KGxydSkpIHsKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChpbmFjdGl2ZV9saXN0X2lzX2xv dyh6b25lLCBzYywgZmlsZSkpCj4gLSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzaHJpbmtf YWN0aXZlX2xpc3QobnJfdG9fc2Nhbiwgem9uZSwgc2MsIHByaW9yaXR5LCBmaWxlKTsKPiArIMKg IMKgIMKgIGlmIChscnUgPT0gTFJVX0FDVElWRV9GSUxFKSB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCBzaHJpbmtfYWN0aXZlX2xpc3QobnJfdG9fc2Nhbiwgem9uZSwgc2MsIHByaW9yaXR5LCBm aWxlKTsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHJldHVybiAwOwo+IMKgIMKgIMKgIMKgfQo+ Cj4KPiAtLQo+IE1lbCBHb3JtYW4KPiBQYXJ0LXRpbWUgUGhkIFN0dWRlbnQgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBMaW51eCBUZWNobm9sb2d5IENlbnRlcgo+IFVuaXZl cnNpdHkgb2YgTGltZXJpY2sgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgSUJN IER1YmxpbiBTb2Z0d2FyZSBMYWIKPgo= -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org