From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from [59.151.112.132] (helo=heian.cn.fujitsu.com) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1alYdK-0006kJ-QT for kexec@lists.infradead.org; Thu, 31 Mar 2016 09:12:20 +0000 Message-ID: <56FCE93C.2020401@cn.fujitsu.com> Date: Thu, 31 Mar 2016 17:09:16 +0800 From: =?UTF-8?B?Ilpob3UsIFdlbmppYW4v5ZGo5paH5YmRIg==?= MIME-Version: 1.0 Subject: Re: [PATCH v4] Improve the performance of --num-threads -d 31 References: <1457483231-2092-1-git-send-email-zhouwj-fnst@cn.fujitsu.com> <20160315063430.GA12981@dhcp-128-25.nay.redhat.com> <56EB6C06.30205@cn.fujitsu.com> <20160318041622.GB29025@dhcp-128-25.nay.redhat.com> <56EB96B8.7010103@cn.fujitsu.com> <20160331083854.GA7343@dhcp-128-25.nay.redhat.com> In-Reply-To: <20160331083854.GA7343@dhcp-128-25.nay.redhat.com> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "kexec" Errors-To: kexec-bounces+dwmw2=infradead.org@lists.infradead.org To: Minfei Huang Cc: kexec@lists.infradead.org SGVsbG8gTWluZmVpLAoKVGhhbmtzIGZvciB5b3VyIHJlc3VsdHMuCkFuZCBJIGhhdmUgc29tZSBx dWVzdGlvbnMuCgpPbiAwMy8zMS8yMDE2IDA0OjM4IFBNLCBNaW5mZWkgSHVhbmcgd3JvdGU6Cj4g SGksIFpob3UuCj4KPiBJIGhhdmUgdGVzdGVkIHRoZSBpbmNyZWFzaW5nIHBhdGNoIG9uIDRUIG1l bW9yeSBtYWNoaW5lLgo+Cj4gbWFrZWR1bXBmaWxlIGZhaWxzIHRvIGR1bXAgdm1jb3JlLCBpZiB0 aGVyZSBhcmUgYWJvdXQgMzg0TSBtZW1vcnkgaW4gMm5kCj4ga2VybmVsIHdoaWNoIGlzIHJlc2Vy dmVkIGJ5IGNyYXNoa2VybmVsPWF1dG8uIEJ1dCBvbmNlIHRoZSByZXNlcnZlZAo+IG1lbW9yeSBp cyBlbmxhcmdlZCB1cCB0byAxMEcsIG1ha2VkdW1wZmlsZSBjYW4gZHVtcCB2bWNvcmUgc3VjY2Vz c2Z1bGx5Lgo+CgpXaWxsIGl0IGZhaWwgd2l0aCBwYXRjaCB2Mz8gb3IganVzdCB2ND8KSSBkb24n dCB0aGluayBpdCBpcyBhIHByb2JsZW0uCklmIDEyOCBjcHVzIGFyZSBlbmFibGVkIGluIHNlY29u ZCBrZXJuZWwsIHRoZXJlIHdvbid0IGJlIG11Y2ggbWVtb3J5IGxlZnQgaWYgdG90YWwgbWVtb3J5 IGlzIDM4NE0uCgpBbmQgSSB0aGluayBpdCB3aWxsIGFsc28gd29yayBpZiB0aGUgcmVzZXJ2ZWQg bWVtb3J5IGlzIHNldCB0byAxRy4KCj4gVGhlIGNhY2hlIHNob3VsZCBiZSBkcm9wcGVkIGJlZm9y ZSB0ZXN0aW5nLCBvdGhlcndpc2UgbWFrZWR1bXBmaWxlIHdpbGwKPiBmYWlsIHRvIGR1bXAgdm1j b3JlLgo+IGVjaG8gMyA+IC9wcm9jL3N5cy92bS9kcm9wX2NhY2hlcwo+IE1heWJlIHRoZXJlIGlz IHNvbWV0aGluZyBjbGVhbnVwIHdlIGNhbiBkbyB0byBhdm9pZCB0aGlzLgo+Cj4gRm9sbG93aW5n IGlzIHRoZSByZXN1bHQgd2l0aCBkaWZmZXJlbnQgcGFyYW1ldGVyIGZvciBvcHRpb24KPiAtLW51 bS10aHJlYWRzLgo+Cj4gbWFrZWR1bXBmaWxlIC1sIC0tbnVtLXRocmVhZHMgMTI4IC0tbWVzc2Fn ZS1sZXZlbCAxIC1kIDMxIC9wcm9jL3ZtY29yZSBhLjEyOAo+IHJlYWwgICAgNW0zNC4xMTZzCj4g dXNlciAgICAxMDNtNDIuNTMxcwo+IHN5cyA4Nm0xMi41ODZzCj4KPiBtYWtlZHVtcGZpbGUgLWwg LS1udW0tdGhyZWFkcyA2NCAtLW1lc3NhZ2UtbGV2ZWwgMSAtZCAzMSAvcHJvYy92bWNvcmUgYS42 NAo+IHJlYWwgICAgM20yOS41NDRzCj4gdXNlciAgICAyN20xNC42NzRzCj4gc3lzIDUzbTguMDMw cwo+Cj4gbWFrZWR1bXBmaWxlIC1sIC0tbnVtLXRocmVhZHMgMzIgLS1tZXNzYWdlLWxldmVsIDEg LWQgMzEgL3Byb2Mvdm1jb3JlIGEuMzIKPiByZWFsICAgIDJtNTAuNTY1cwo+IHVzZXIgICAgMTBt NTIuNjYycwo+IHN5cyAzMm0wLjQ0NnMKPgo+IG1ha2VkdW1wZmlsZSAtbCAtLW51bS10aHJlYWRz IDE2IC0tbWVzc2FnZS1sZXZlbCAxIC1kIDMxIC9wcm9jL3ZtY29yZSBhLjE2Cj4gcmVhbCAgICAy bTI3Ljk5OXMKPiB1c2VyICAgIDhtMTguNjUwcwo+IHN5cyAxMm01NC4xNTFzCj4KPiBtYWtlZHVt cGZpbGUgLWwgLS1udW0tdGhyZWFkcyA4IC0tbWVzc2FnZS1sZXZlbCAxIC1kIDMxIC9wcm9jL3Zt Y29yZSBhLjgKPiByZWFsICAgIDJtMjcuMTM2cwo+IHVzZXIgICAgOG00LjAwOXMKPiBzeXMgM20x Mi4wOTBzCj4KPiBtYWtlZHVtcGZpbGUgLWwgLS1udW0tdGhyZWFkcyA0IC0tbWVzc2FnZS1sZXZl bCAxIC1kIDMxIC9wcm9jL3ZtY29yZSBhLjQKPiByZWFsICAgIDJtNDMuNzM5cwo+IHVzZXIgICAg N20zOS42ODlzCj4gc3lzIDFtMjguNTA0cwo+Cj4gbWFrZWR1bXBmaWxlIC1sIC0tbnVtLXRocmVh ZHMgMCAtLW1lc3NhZ2UtbGV2ZWwgMSAtZCAzMSAvcHJvYy92bWNvcmUgYS4wCj4gcmVhbCAgICAz bTQ2LjUzMXMKPiB1c2VyICAgIDNtMjkuMzcxcwo+IHN5cyAwbTE2LjkwOXMKPgo+IG1ha2VkdW1w ZmlsZS5iYWNrIC1sIC0tbWVzc2FnZS1sZXZlbCAxIC1kIDMxIC9wcm9jL3ZtY29yZSBhCj4gcmVh bCAgICAzbTU1LjcxMnMKPiB1c2VyICAgIDNtMzkuMjU0cwo+IHN5cyAwbTE2LjI4N3MKPgo+IE9u Y2UgdGhlIHJlc2VydmVkIG1lbW9yeSBpcyBlbmxhcmdlZCwgbWFrZWR1bXBmaWxlIHdvcmtzIHdl bGwgd2l0aCBvcgo+IHdpdGhvdXQgdGhpcyBpbmNyZWFzZWluZyBwYXRjaC4KPgo+IEJ1dCB0aGVy ZSBpcyBhbiBhbm90aGVyIGlzc3VlIEkgZm91bmQgZHVyaW5nIHRlc3RpbmcuIG1ha2VkdW1wZmls ZSBtYXkKPiBoYW5nIGluIGFib3V0IDI0JS4gQW5kIHdpdGggb3B0aW9uIC0tbnVtLXRocmVhZHMg NjQsIHRoaXMgaXNzdWUgaXMgYWxzbwo+IG9jY3VyZWQuCj4KCldpbGwgaXQgb2NjdXIgd2l0aCBw YXRjaCB2Mz8KSWYgaXQgbm90IG9jY3VycywgdGhlbiBuZWl0aGVyIG9mIHRoZSBwcmV2aW91cyB0 d28gaW5jcmVhc2luZyBwYXRjaGVzIHdpbGwgd29yaz8KCkFuZCBkaWQgeW91IHRlc3QgaXQgd2l0 aCBvciB3aXRob3V0IHRoZSBpbmNyZWFzaW5nIHBhdGNoPwoKPiBtYWtlZHVtcGZpbGUgLWwgLS1u dW0tdGhyZWFkcyAxMjggLS1tZXNzYWdlLWxldmVsIDEgLWQgMzEgL3Byb2Mvdm1jb3JlIGEuMTI4 Cj4gRXhjbHVkaW5nIHVubmVjZXNzYXJ5IHBhZ2VzICAgICAgICA6IFsxMDAuMCAlXSB8Cj4gRXhj bHVkaW5nIHVubmVjZXNzYXJ5IHBhZ2VzICAgICAgICA6IFsxMDAuMCAlXSAvCj4gRXhjbHVkaW5n IHVubmVjZXNzYXJ5IHBhZ2VzICAgICAgICA6IFsxMDAuMCAlXSAtCj4gQ29weWluZyBkYXRhICAg ICAgICAgICAgICAgICAgICAgICA6IFsgMTEuMiAlXSB8Cj4gQ29weWluZyBkYXRhICAgICAgICAg ICAgICAgICAgICAgICA6IFsgMTIuNCAlXSAtCj4gRXhjbHVkaW5nIHVubmVjZXNzYXJ5IHBhZ2Vz ICAgICAgICA6IFsxMDAuMCAlXSBcCj4gRXhjbHVkaW5nIHVubmVjZXNzYXJ5IHBhZ2VzICAgICAg ICA6IFsxMDAuMCAlXSB8Cj4gQ29weWluZyBkYXRhICAgICAgICAgICAgICAgICAgICAgICA6IFsg MjMuNiAlXSAtCj4gQ29weWluZyBkYXRhICAgICAgICAgICAgICAgICAgICAgICA6IFsgMjQuNCAl XSAvCj4KCkNvdWxkIHlvdSBoZWxwIG1lIGZpbmQgd2hpY2ggbGluZSBvZiB0aGUgY29kZSBpcyBy dW5uaW5nIGF0IHdoZW4gaXQgaGFuZ2luZz8KbWFrZWR1bXBmaWxlIG1heSBiZSBpbiBhIGxvb3Ag YW5kIGNhbid0IGdvIG91dCBieSBzb21lIGJ1Z3MuCgotLSAKVGhhbmtzClpob3UKCj4gVGhhbmtz Cj4gTWluZmVpCj4KPiBPbiAwMy8xOC8xNiBhdCAwMTo0OHBtLCAiWmhvdSwgV2Vuamlhbi/lkajm lofliZEiIHdyb3RlOgo+PiBPbiAwMy8xOC8yMDE2IDEyOjE2IFBNLCBNaW5mZWkgSHVhbmcgd3Jv dGU6Cj4+PiBPbiAwMy8xOC8xNiBhdCAxMDo0NmFtLCAiWmhvdSwgV2Vuamlhbi/lkajmlofliZEi IHdyb3RlOgo+Pj4+IEhlbGxvIE1pbmZlaSwKPj4+Pgo+Pj4+IFNpbmNlIEkgY2FuJ3QgcHJvZHVj ZSB0aGUgYnVnLCBJIHJldmlld2VkIHRoZSBwYXRjaCBhbmQgd3JvdGUgYW4gaW5jcmVtZW50IHBh dGNoLgo+Pj4+IFRob3VnaCB0aGVyZSBhcmUgc29tZSBidWdzIGluIHRoZSBpbmNyZW1lbnQgcGF0 Y2gsCj4+Pj4gSSB3b25kZXIgaWYgdGhlIHByZXZpb3VzIGJ1ZyBzdGlsbCBleGlzdHMgd2l0aCB0 aGlzIHBhdGNoLgo+Pj4+IENvdWxkIHlvdSBoZWxwIG1lIGNvbmZpcm0gaXQ/Cj4+Pgo+Pj4gT2su IEkgd2lsbCBoZWxwIHZlcmlmeSB0aGlzIGluY3JlYXNpbmcgcGF0Y2guCj4+Pgo+Pgo+PiBUaGFu ayB5b3UgdmVyeSBtdWNoLgo+Pgo+Pj4+Cj4+Pj4gQW5kIEkgaGF2ZSBhbm90aGVyIHF1ZXN0aW9u Lgo+Pj4+IERpZCBpdCBvbmx5IG9jY3VyIGluIHBhdGNoIHY0Pwo+Pj4KPj4+IFRoaXMgaXNzdWUg ZG9lc24ndCBleGlzdCBpbiB2My4gSSBoYXZlIHBhc3RlZCB0aGUgdGVzdCByZXN1bHQgd2l0aAo+ Pj4gLS1udW0tdGhyZWFkIDMyIGluIHRoYXQgdGhyZWFkLgo+Pj4KPj4+IGFwcGxpZWQgbWFrZWR1 bXBmaWxlIHdpdGggb3B0aW9uIC1kIDMxIC0tbnVtLXRocmVhZHMgMzIKPj4+IHJlYWwgICAgM20z LjUzM3MKPj4KPj4gT2gsIHRoZW4gdGhlIHBhdGNoIGluIHRoZSBwcmV2aW91cyBtYWlsIG1heSBu b3Qgd29yay4KPj4KPj4gSSdtIGFwcHJlY2lhdGVkIGlmIHlvdSBjYW4gYWxzbyB0ZXN0IHRoZSBw YXRjaCBpbiB0aGlzIGxldHRlci4KPj4KPj4gSSBpbnRyb2R1Y2VkIHNlbWFwaG9yZSB0byBmaXgg dGhlIGJ1ZyBpbiB0aGUgdjMuCj4+IFNvIEkgd2FudCB0byBrbm93IGlmIGl0IGlzIHRoaXMgd2hp Y2ggYWZmZWN0cyB0aGUgcmVzdWx0Lgo+PiBUaGUgYXR0YWNoZWQgcGF0Y2ggaXMgYmFzZWQgb24g djQsIHVzZWQgdG8gcmVtb3ZlIHNlbWFvaG9yZS4KPj4KPj4gLS0KPj4gVGhhbmtzCj4+IFpob3UK Pj4KPj4+Cj4+PiBUaGFua3MKPj4+IE1pbmZlaQo+Pj4KPj4+PiBUaGUgcHJldmlvdXMgcGF0Y2hl cyBhbG1vc3QgaGF2ZSB0aGUgc2FtZSBsb2dpYy4KPj4+Pgo+Pj4+IC0tCj4+Pj4gVGhhbmtzCj4+ Pj4gWmhvdQo+Pj4+Cj4+Pj4gT24gMDMvMTUvMjAxNiAwMjozNCBQTSwgTWluZmVpIEh1YW5nIHdy b3RlOgo+Pj4+PiBIaSwgWmhvdS4KPj4+Pj4KPj4+Pj4gSSBoYXZlIGFwcGxpZWQgdGhpcyBwYXRj aCBiYXNlIG9uIDEuNS45LiBUaGVyZSBhcmUgc2V2ZXJhbCB0ZXN0Y2FzZXMgSQo+Pj4+PiBoYXZl IHRlc3RlZC4KPj4+Pj4KPj4+Pj4gLSBtYWtlZHVtcGZpbGUgLS1udW0tdGhyZWFkcyA2NCAtZCAz MQo+Pj4+PiAgICAgIHJlYWwgICAgMG0wLjAxMHMKPj4+Pj4gICAgICB1c2VyICAgIDBtMC4wMDJz Cj4+Pj4+ICAgICAgc3lzIDBtMC4wMDlzCj4+Pj4+Cj4+Pj4+IC0gbWFrZWR1bXBmaWxlIC0tbnVt LXRocmVhZHMgMzEgLWQgMzEKPj4+Pj4gICAgICByZWFsICAgIDJtNDAuOTE1cwo+Pj4+PiAgICAg IHVzZXIgICAgMTBtNTAuOTAwcwo+Pj4+PiAgICAgIHN5cyAyM205LjY2NHMKPj4+Pj4KPj4+Pj4g bWFrZWR1bXBmaWxlIC0tbnVtLXRocmVhZHMgMzAgLWQgMzEKPj4+Pj4gICAgICByZWFsICAgIDBt MC4wMDZzCj4+Pj4+ICAgICAgdXNlciAgICAwbTAuMDAycwo+Pj4+PiAgICAgIHN5cyAwbTAuMDA0 cwo+Pj4+Pgo+Pj4+PiBtYWtlZHVtcGZpbGUgLS1udW0tdGhyZWFkcyAzMiAtZCAzMQo+Pj4+PiAg ICAgIHJlYWwgICAgMG0wLjAwN3MKPj4+Pj4gICAgICB1c2VyICAgIDBtMC4wMDJzCj4+Pj4+ICAg ICAgc3lzIDBtMC4wMDVzCj4+Pj4+Cj4+Pj4+IC0gbWFrZWR1bXBmaWxlIC0tbnVtLXRocmVhZHMg OCAtZCAzMQo+Pj4+PiAgICAgIHJlYWwgICAgMm0zMi42OTJzCj4+Pj4+ICAgICAgdXNlciAgICA3 bTQuNjMwcwo+Pj4+PiAgICAgIHN5cyAybTAuMzY5cwo+Pj4+Pgo+Pj4+PiAtIG1ha2VkdW1wZmls ZSAtLW51bS10aHJlYWRzIDEgLWQgMzEKPj4+Pj4gICAgICByZWFsICAgIDRtNDIuNDIzcwo+Pj4+ PiAgICAgIHVzZXIgICAgN20yNy4xNTNzCj4+Pj4+ICAgICAgc3lzIDBtMjIuNDkwcwo+Pj4+Pgo+ Pj4+PiAtIG1ha2VkdW1wZmlsZS5vcmlnIC1kIDMxCj4+Pj4+ICAgICAgcmVhbCAgICA0bTEuMjk3 cwo+Pj4+PiAgICAgIHVzZXIgICAgM20zOS42OTZzCj4+Pj4+ICAgICAgc3lzIDBtMTUuMjAwcwo+ Pj4+Pgo+Pj4+PiBUaGlzIHBhdGNoIGhhcyBhIGh1Z2UgaW5jcmVtZW50IHRvIHRoZSBmaWx0ZXIg cGVyZm9ybWFuY2UgdW5kZXIgMzEuIEJ1dAo+Pj4+PiBpdCBpcyBub3Qgc3RhYmxlLCBzaW5jZSBt YWtlZHVtcGZpbGUgZmFpbHMgdG8gZHVtcCB2bWNvcmUgaW50ZXJtaXR0ZW50bHkuCj4+Pj4+IFlv dSBjYW4gZmluZCB0aGUgYWJvdmUgdGVzdCByZXN1bHQsIG1ha2VkdW1wZmlsZSBmYWlscyB0byBk dW1wIHZtY29yZQo+Pj4+PiB3aXRoIG9wdGlvbiAtLW51bS10aHJlYWRzIDY0LCBhbHNvIGl0IG1h eSBvY2N1ciB3aXRoIG9wdGlvbgo+Pj4+PiAtLW51bWJlci10aHJlYWRzIDguCj4+Pj4+Cj4+Pj4+ IFRoYW5rcwo+Pj4+PiBNaW5mZWkKPj4+Pj4KPj4+Pj4gT24gMDMvMDkvMTYgYXQgMDg6MjdhbSwg WmhvdSBXZW5qaWFuIHdyb3RlOgo+Pj4+Pj4gdjQ6Cj4+Pj4+PiAgICAgICAgICAxLiBmaXggYSBi dWcgY2F1c2VkIGJ5IHRoZSBsb2dpYwo+Pj4+Pj4gdjM6Cj4+Pj4+PiAgICAgICAgICAxLiByZW1v dmUgc29tZSB1bnVzZWQgdmFyaWFibGVzCj4+Pj4+PiAgICAgICAgICAyLiBmaXggYSBidWcgY2F1 c2VkIGJ5IHRoZSB3cm9uZyBsb2dpYwo+Pj4+Pj4gICAgICAgICAgMy4gZml4IGEgYnVnIGNhdXNl ZCBieSBvcHRpbWlzaW5nCj4+Pj4+PiAgICAgICAgICA0LiBpbXByb3ZlIG1vcmUgcGVyZm9ybWFu Y2UgYnkgdXNpbmcgTWlub3J1IFVzdWkncyBjb2RlCj4+Pj4+Pgo+Pj4+Pj4gbXVsdGktdGhyZWFk cyBpbXBsZW1lbnRhdGlvbiB3aWxsIGludHJvZHVjZSBleHRyYSBjb3N0IHdoZW4gaGFuZGxpbmcK Pj4+Pj4+IGVhY2ggcGFnZS4gVGhlIG9yaWdpbiBpbXBsZW1lbnRhdGlvbiB3aWxsIGFsc28gZG8g dGhlIGV4dHJhIHdvcmsgZm9yCj4+Pj4+PiBmaWx0ZXJlZCBwYWdlcy4gU28gdGhlcmUgaXMgYSBi aWcgcGVyZm9ybWFuY2UgZGVncmFkYXRpb24gaW4KPj4+Pj4+IC0tbnVtLXRocmVhZHMgLWQgMzEu Cj4+Pj4+PiBUaGUgbmV3IGltcGxlbWVudGF0aW9uIHdvbid0IGRvIHRoZSBleHRyYSB3b3JrIGZv ciBmaWx0ZXJlZCBwYWdlcyBhbnkKPj4+Pj4+IG1vcmUuIFNvIHRoZSBwZXJmb3JtYW5jZSBvZiAt ZCAzMSBpcyBjbG9zZSB0byB0aGF0IG9mIHNlcmlhbCBwcm9jZXNzaW5nLgo+Pj4+Pj4KPj4+Pj4+ IFRoZSBuZXcgaW1wbGVtZW50YXRpb24gaXMganVzdCBsaWtlIHRoZSBmb2xsb3dpbmc6Cj4+Pj4+ PiAgICAgICAgICAqIFRoZSBiYXNpYyBpZGVhIGlzIHByb2R1Y2VyIHByb2R1Y2luZyBwYWdlIGFu ZCBjb25zdW1lciB3cml0aW5nIHBhZ2UuCj4+Pj4+PiAgICAgICAgICAqIEVhY2ggcHJvZHVjZXIg aGF2ZSBhIHBhZ2VfZmxhZ19idWYgbGlzdCB3aGljaCBpcyB1c2VkIGZvciBzdG9yaW5nCj4+Pj4+ PiAgICAgICAgICAgIHBhZ2UncyBkZXNjcmlwdGlvbi4KPj4+Pj4+ICAgICAgICAgICogVGhlIHNp emUgb2YgcGFnZV9mbGFnX2J1ZiBpcyBsaXR0bGUgc28gaXQgd29uJ3QgdGFrZSB0b28gbXVjaCBt ZW1vcnkuCj4+Pj4+PiAgICAgICAgICAqIEFuZCBhbGwgcHJvZHVjZXJzIHdpbGwgc2hhcmUgYSBw YWdlX2RhdGFfYnVmIGFycmF5IHdoaWNoIGlzCj4+Pj4+PiAgICAgICAgICAgIHVzZWQgZm9yIHN0 b3JpbmcgcGFnZSdzIGNvbXByZXNzZWQgZGF0YS4KPj4+Pj4+ICAgICAgICAgICogVGhlIG1haW4g dGhyZWFkIGlzIHRoZSBjb25zdW1lci4gSXQgd2lsbCBmaW5kIHRoZSBuZXh0IHBmbiBhbmQgd3Jp dGUKPj4+Pj4+ICAgICAgICAgICAgaXQgaW50byBmaWxlLgo+Pj4+Pj4gICAgICAgICAgKiBUaGUg bmV4dCBwZm4gaXMgc21hbGxlc3QgcGZuIGluIGFsbCBwYWdlX2ZsYWdfYnVmLgo+Pj4+Pj4KPj4+ Pj4+IFNpZ25lZC1vZmYtYnk6IE1pbm9ydSBVc3VpIDxtaW4tdXN1aUB0aS5qcC5uZWMuY29tPgo+ Pj4+Pj4gU2lnbmVkLW9mZi1ieTogWmhvdSBXZW5qaWFuIDx6aG91d2otZm5zdEBjbi5mdWppdHN1 LmNvbT4KPj4+Pj4+IC0tLQo+Pj4+Pj4gICBtYWtlZHVtcGZpbGUuYyB8IDI5OCArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4+Pj4+ICAg bWFrZWR1bXBmaWxlLmggfCAgMzUgKysrKy0tLQo+Pj4+Pj4gICAyIGZpbGVzIGNoYW5nZWQsIDIw MiBpbnNlcnRpb25zKCspLCAxMzEgZGVsZXRpb25zKC0pCj4+Pj4+Pgo+Pj4+Pj4gZGlmZiAtLWdp dCBhL21ha2VkdW1wZmlsZS5jIGIvbWFrZWR1bXBmaWxlLmMKPj4+Pj4+IGluZGV4IGZhMGI3Nzku LjJiMDg2NGEgMTAwNjQ0Cj4+Pj4+PiAtLS0gYS9tYWtlZHVtcGZpbGUuYwo+Pj4+Pj4gKysrIGIv bWFrZWR1bXBmaWxlLmMKPj4+Pj4+IEBAIC0zNDgzLDcgKzM0ODMsOCBAQCBpbml0aWFsX2Zvcl9w YXJhbGxlbCgpCj4+Pj4+PiAgIAl1bnNpZ25lZCBsb25nIHBhZ2VfZGF0YV9idWZfc2l6ZTsKPj4+ Pj4+ICAgCXVuc2lnbmVkIGxvbmcgbGltaXRfc2l6ZTsKPj4+Pj4+ICAgCWludCBwYWdlX2RhdGFf bnVtOwo+Pj4+Pj4gLQlpbnQgaTsKPj4+Pj4+ICsJc3RydWN0IHBhZ2VfZmxhZyAqY3VycmVudDsK Pj4+Pj4+ICsJaW50IGksIGo7Cj4+Pj4+Pgo+Pj4+Pj4gICAJbGVuX2J1Zl9vdXQgPSBjYWxjdWxh dGVfbGVuX2J1Zl9vdXQoaW5mby0+cGFnZV9zaXplKTsKPj4+Pj4+Cj4+Pj4+PiBAQCAtMzU2MCwx MCArMzU2MSwxNiBAQCBpbml0aWFsX2Zvcl9wYXJhbGxlbCgpCj4+Pj4+Pgo+Pj4+Pj4gICAJbGlt aXRfc2l6ZSA9IChnZXRfZnJlZV9tZW1vcnlfc2l6ZSgpCj4+Pj4+PiAgIAkJICAgICAgLSBNQVBf UkVHSU9OICogaW5mby0+bnVtX3RocmVhZHMpICogMC42Owo+Pj4+Pj4gKwlpZiAobGltaXRfc2l6 ZSA8IDApIHsKPj4+Pj4+ICsJCU1TRygiRnJlZSBtZW1vcnkgaXMgbm90IGVub3VnaCBmb3IgbXVs dGktdGhyZWFkc1xuIik7Cj4+Pj4+PiArCQlyZXR1cm4gRkFMU0U7Cj4+Pj4+PiArCX0KPj4+Pj4+ Cj4+Pj4+PiAgIAlwYWdlX2RhdGFfbnVtID0gbGltaXRfc2l6ZSAvIHBhZ2VfZGF0YV9idWZfc2l6 ZTsKPj4+Pj4+ICsJaW5mby0+bnVtX2J1ZmZlcnMgPSAzICogaW5mby0+bnVtX3RocmVhZHM7Cj4+ Pj4+Pgo+Pj4+Pj4gLQlpbmZvLT5udW1fYnVmZmVycyA9IE1JTihOVU1fQlVGRkVSUywgcGFnZV9k YXRhX251bSk7Cj4+Pj4+PiArCWluZm8tPm51bV9idWZmZXJzID0gTUFYKGluZm8tPm51bV9idWZm ZXJzLCBOVU1fQlVGRkVSUyk7Cj4+Pj4+PiArCWluZm8tPm51bV9idWZmZXJzID0gTUlOKGluZm8t Pm51bV9idWZmZXJzLCBwYWdlX2RhdGFfbnVtKTsKPj4+Pj4+Cj4+Pj4+PiAgIAlERUJVR19NU0co Ik51bWJlciBvZiBzdHJ1Y3QgcGFnZV9kYXRhIGZvciBwcm9kdWNlL2NvbnN1bWU6ICVkXG4iLAo+ Pj4+Pj4gICAJCQlpbmZvLT5udW1fYnVmZmVycyk7Cj4+Pj4+PiBAQCAtMzU4OCw2ICszNTk1LDM2 IEBAIGluaXRpYWxfZm9yX3BhcmFsbGVsKCkKPj4+Pj4+ICAgCX0KPj4+Pj4+Cj4+Pj4+PiAgIAkv Kgo+Pj4+Pj4gKwkgKiBpbml0aWFsIHBhZ2VfZmxhZyBmb3IgZWFjaCB0aHJlYWQKPj4+Pj4+ICsJ ICovCj4+Pj4+PiArCWlmICgoaW5mby0+cGFnZV9mbGFnX2J1ZiA9IG1hbGxvYyhzaXplb2Yodm9p ZCAqKSAqIGluZm8tPm51bV90aHJlYWRzKSkKPj4+Pj4+ICsJICAgID09IE5VTEwpIHsKPj4+Pj4+ ICsJCU1TRygiQ2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBwYWdlX2ZsYWdfYnVmLiAlc1xuIiwK Pj4+Pj4+ICsJCQkJc3RyZXJyb3IoZXJybm8pKTsKPj4+Pj4+ICsJCXJldHVybiBGQUxTRTsKPj4+ Pj4+ICsJfQo+Pj4+Pj4gKwltZW1zZXQoaW5mby0+cGFnZV9mbGFnX2J1ZiwgMCwgc2l6ZW9mKHZv aWQgKikgKiBpbmZvLT5udW1fdGhyZWFkcyk7Cj4+Pj4+PiArCj4+Pj4+PiArCWZvciAoaSA9IDA7 IGkgPCBpbmZvLT5udW1fdGhyZWFkczsgaSsrKSB7Cj4+Pj4+PiArCQlpZiAoKGluZm8tPnBhZ2Vf ZmxhZ19idWZbaV0gPSBjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBwYWdlX2ZsYWcpKSkgPT0gTlVM TCkgewo+Pj4+Pj4gKwkJCU1TRygiQ2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBwYWdlX2ZsYWcu ICVzXG4iLAo+Pj4+Pj4gKwkJCQlzdHJlcnJvcihlcnJubykpOwo+Pj4+Pj4gKwkJCXJldHVybiBG QUxTRTsKPj4+Pj4+ICsJCX0KPj4+Pj4+ICsJCWN1cnJlbnQgPSBpbmZvLT5wYWdlX2ZsYWdfYnVm W2ldOwo+Pj4+Pj4gKwo+Pj4+Pj4gKwkJZm9yIChqID0gMTsgaiA8IE5VTV9CVUZGRVJTOyBqKysp IHsKPj4+Pj4+ICsJCQlpZiAoKGN1cnJlbnQtPm5leHQgPSBjYWxsb2MoMSwgc2l6ZW9mKHN0cnVj dCBwYWdlX2ZsYWcpKSkgPT0gTlVMTCkgewo+Pj4+Pj4gKwkJCQlNU0coIkNhbid0IGFsbG9jYXRl IG1lbW9yeSBmb3IgcGFnZV9mbGFnLiAlc1xuIiwKPj4+Pj4+ICsJCQkJCXN0cmVycm9yKGVycm5v KSk7Cj4+Pj4+PiArCQkJCXJldHVybiBGQUxTRTsKPj4+Pj4+ICsJCQl9Cj4+Pj4+PiArCQkJY3Vy cmVudCA9IGN1cnJlbnQtPm5leHQ7Cj4+Pj4+PiArCQl9Cj4+Pj4+PiArCQljdXJyZW50LT5uZXh0 ID0gaW5mby0+cGFnZV9mbGFnX2J1ZltpXTsKPj4+Pj4+ICsJfQo+Pj4+Pj4gKwo+Pj4+Pj4gKwkv Kgo+Pj4+Pj4gICAJICogaW5pdGlhbCBmZF9tZW1vcnkgZm9yIHRocmVhZHMKPj4+Pj4+ICAgCSAq Lwo+Pj4+Pj4gICAJZm9yIChpID0gMDsgaSA8IGluZm8tPm51bV90aHJlYWRzOyBpKyspIHsKPj4+ Pj4+IEBAIC0zNjEyLDcgKzM2NDksOCBAQCBpbml0aWFsX2Zvcl9wYXJhbGxlbCgpCj4+Pj4+PiAg IHZvaWQKPj4+Pj4+ICAgZnJlZV9mb3JfcGFyYWxsZWwoKQo+Pj4+Pj4gICB7Cj4+Pj4+PiAtCWlu dCBpOwo+Pj4+Pj4gKwlpbnQgaSwgajsKPj4+Pj4+ICsJc3RydWN0IHBhZ2VfZmxhZyAqY3VycmVu dDsKPj4+Pj4+Cj4+Pj4+PiAgIAlpZiAoaW5mby0+dGhyZWFkcyAhPSBOVUxMKSB7Cj4+Pj4+PiAg IAkJZm9yIChpID0gMDsgaSA8IGluZm8tPm51bV90aHJlYWRzOyBpKyspIHsKPj4+Pj4+IEBAIC0z NjU1LDYgKzM2OTMsMTkgQEAgZnJlZV9mb3JfcGFyYWxsZWwoKQo+Pj4+Pj4gICAJCWZyZWUoaW5m by0+cGFnZV9kYXRhX2J1Zik7Cj4+Pj4+PiAgIAl9Cj4+Pj4+Pgo+Pj4+Pj4gKwlpZiAoaW5mby0+ cGFnZV9mbGFnX2J1ZiAhPSBOVUxMKSB7Cj4+Pj4+PiArCQlmb3IgKGkgPSAwOyBpIDwgaW5mby0+ bnVtX3RocmVhZHM7IGkrKykgewo+Pj4+Pj4gKwkJCWZvciAoaiA9IDA7IGogPCBOVU1fQlVGRkVS UzsgaisrKSB7Cj4+Pj4+PiArCQkJCWlmIChpbmZvLT5wYWdlX2ZsYWdfYnVmW2ldICE9IE5VTEwp IHsKPj4+Pj4+ICsJCQkJCWN1cnJlbnQgPSBpbmZvLT5wYWdlX2ZsYWdfYnVmW2ldOwo+Pj4+Pj4g KwkJCQkJaW5mby0+cGFnZV9mbGFnX2J1ZltpXSA9IGN1cnJlbnQtPm5leHQ7Cj4+Pj4+PiArCQkJ CQlmcmVlKGN1cnJlbnQpOwo+Pj4+Pj4gKwkJCQl9Cj4+Pj4+PiArCQkJfQo+Pj4+Pj4gKwkJfQo+ Pj4+Pj4gKwkJZnJlZShpbmZvLT5wYWdlX2ZsYWdfYnVmKTsKPj4+Pj4+ICsJfQo+Pj4+Pj4gKwo+ Pj4+Pj4gICAJaWYgKGluZm8tPnBhcmFsbGVsX2luZm8gPT0gTlVMTCkKPj4+Pj4+ICAgCQlyZXR1 cm47Cj4+Pj4+Pgo+Pj4+Pj4gQEAgLTcwNzUsMTEgKzcxMjYsMTEgQEAgdm9pZCAqCj4+Pj4+PiAg IGtkdW1wX3RocmVhZF9mdW5jdGlvbl9jeWNsaWModm9pZCAqYXJnKSB7Cj4+Pj4+PiAgIAl2b2lk ICpyZXR2YWwgPSBQVEhSRUFEX0ZBSUw7Cj4+Pj4+PiAgIAlzdHJ1Y3QgdGhyZWFkX2FyZ3MgKmtk dW1wX3RocmVhZF9hcmdzID0gKHN0cnVjdCB0aHJlYWRfYXJncyAqKWFyZzsKPj4+Pj4+IC0Jc3Ry dWN0IHBhZ2VfZGF0YSAqcGFnZV9kYXRhX2J1ZiA9IGtkdW1wX3RocmVhZF9hcmdzLT5wYWdlX2Rh dGFfYnVmOwo+Pj4+Pj4gKwl2b2xhdGlsZSBzdHJ1Y3QgcGFnZV9kYXRhICpwYWdlX2RhdGFfYnVm ID0ga2R1bXBfdGhyZWFkX2FyZ3MtPnBhZ2VfZGF0YV9idWY7Cj4+Pj4+PiArCXZvbGF0aWxlIHN0 cnVjdCBwYWdlX2ZsYWcgKnBhZ2VfZmxhZ19idWYgPSBrZHVtcF90aHJlYWRfYXJncy0+cGFnZV9m bGFnX2J1ZjsKPj4+Pj4+ICAgCXN0cnVjdCBjeWNsZSAqY3ljbGUgPSBrZHVtcF90aHJlYWRfYXJn cy0+Y3ljbGU7Cj4+Pj4+PiAtCWludCBwYWdlX2RhdGFfbnVtID0ga2R1bXBfdGhyZWFkX2FyZ3Mt PnBhZ2VfZGF0YV9udW07Cj4+Pj4+PiAtCW1kZl9wZm5fdCBwZm47Cj4+Pj4+PiAtCWludCBpbmRl eDsKPj4+Pj4+ICsJbWRmX3Bmbl90IHBmbiA9IGN5Y2xlLT5zdGFydF9wZm47Cj4+Pj4+PiArCWlu dCBpbmRleCA9IGtkdW1wX3RocmVhZF9hcmdzLT50aHJlYWRfbnVtOwo+Pj4+Pj4gICAJaW50IGJ1 Zl9yZWFkeTsKPj4+Pj4+ICAgCWludCBkdW1wYWJsZTsKPj4+Pj4+ICAgCWludCBmZF9tZW1vcnkg PSAwOwo+Pj4+Pj4gQEAgLTcxMjUsNDcgKzcxNzYsNDggQEAga2R1bXBfdGhyZWFkX2Z1bmN0aW9u X2N5Y2xpYyh2b2lkICphcmcpIHsKPj4+Pj4+ICAgCQkJCQkJa2R1bXBfdGhyZWFkX2FyZ3MtPnRo cmVhZF9udW0pOwo+Pj4+Pj4gICAJfQo+Pj4+Pj4KPj4+Pj4+IC0Jd2hpbGUgKDEpIHsKPj4+Pj4+ IC0JCS8qIGdldCBuZXh0IHBmbiAqLwo+Pj4+Pj4gLQkJcHRocmVhZF9tdXRleF9sb2NrKCZpbmZv LT5jdXJyZW50X3Bmbl9tdXRleCk7Cj4+Pj4+PiAtCQlwZm4gPSBpbmZvLT5jdXJyZW50X3BmbjsK Pj4+Pj4+IC0JCWluZm8tPmN1cnJlbnRfcGZuKys7Cj4+Pj4+PiAtCQlwdGhyZWFkX211dGV4X3Vu bG9jaygmaW5mby0+Y3VycmVudF9wZm5fbXV0ZXgpOwo+Pj4+Pj4gLQo+Pj4+Pj4gLQkJaWYgKHBm biA+PSBrZHVtcF90aHJlYWRfYXJncy0+ZW5kX3BmbikKPj4+Pj4+IC0JCQlicmVhazsKPj4+Pj4+ IC0KPj4+Pj4+IC0JCWluZGV4ID0gLTE7Cj4+Pj4+PiArCS8qCj4+Pj4+PiArCSAqIGZpbHRlcmVk IHBhZ2Ugd29uJ3QgdGFrZSBhbnl0aGluZwo+Pj4+Pj4gKwkgKiB1bmZpbHRlcmVkIHplcm8gcGFn ZSB3aWxsIG9ubHkgdGFrZSBhIHBhZ2VfZmxhZ19idWYKPj4+Pj4+ICsJICogdW5maWx0ZXJlZCBu b24temVybyBwYWdlIHdpbGwgdGFrZSBhIHBhZ2VfZmxhZ19idWYgYW5kIGEgcGFnZV9kYXRhX2J1 Zgo+Pj4+Pj4gKwkgKi8KPj4+Pj4+ICsJd2hpbGUgKHBmbiA8IGN5Y2xlLT5lbmRfcGZuKSB7Cj4+ Pj4+PiAgIAkJYnVmX3JlYWR5ID0gRkFMU0U7Cj4+Pj4+Pgo+Pj4+Pj4gKwkJcHRocmVhZF9tdXRl eF9sb2NrKCZpbmZvLT5wYWdlX2RhdGFfbXV0ZXgpOwo+Pj4+Pj4gKwkJd2hpbGUgKHBhZ2VfZGF0 YV9idWZbaW5kZXhdLnVzZWQgIT0gRkFMU0UpIHsKPj4+Pj4+ICsJCQlpbmRleCA9IChpbmRleCAr IDEpICUgaW5mby0+bnVtX2J1ZmZlcnM7Cj4+Pj4+PiArCQl9Cj4+Pj4+PiArCQlwYWdlX2RhdGFf YnVmW2luZGV4XS51c2VkID0gVFJVRTsKPj4+Pj4+ICsJCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZp bmZvLT5wYWdlX2RhdGFfbXV0ZXgpOwo+Pj4+Pj4gKwo+Pj4+Pj4gICAJCXdoaWxlIChidWZfcmVh ZHkgPT0gRkFMU0UpIHsKPj4+Pj4+ICAgCQkJcHRocmVhZF90ZXN0Y2FuY2VsKCk7Cj4+Pj4+PiAt Cj4+Pj4+PiAtCQkJaW5kZXggPSBwZm4gJSBwYWdlX2RhdGFfbnVtOwo+Pj4+Pj4gLQo+Pj4+Pj4g LQkJCWlmIChwZm4gLSBpbmZvLT5jb25zdW1lZF9wZm4gPiBpbmZvLT5udW1fYnVmZmVycykKPj4+ Pj4+ICsJCQlpZiAocGFnZV9mbGFnX2J1Zi0+cmVhZHkgPT0gRkxBR19SRUFEWSkKPj4+Pj4+ICAg CQkJCWNvbnRpbnVlOwo+Pj4+Pj4KPj4+Pj4+IC0JCQlpZiAocGFnZV9kYXRhX2J1ZltpbmRleF0u cmVhZHkgIT0gMCkKPj4+Pj4+IC0JCQkJY29udGludWU7Cj4+Pj4+PiAtCj4+Pj4+PiAtCQkJcHRo cmVhZF9tdXRleF9sb2NrKCZwYWdlX2RhdGFfYnVmW2luZGV4XS5tdXRleCk7Cj4+Pj4+PiAtCj4+ Pj4+PiAtCQkJaWYgKHBhZ2VfZGF0YV9idWZbaW5kZXhdLnJlYWR5ICE9IDApCj4+Pj4+PiAtCQkJ CWdvdG8gdW5sb2NrOwo+Pj4+Pj4gLQo+Pj4+Pj4gLQkJCWJ1Zl9yZWFkeSA9IFRSVUU7Cj4+Pj4+ PiArCQkJLyogZ2V0IG5leHQgZHVtcGFibGUgcGZuICovCj4+Pj4+PiArCQkJcHRocmVhZF9tdXRl eF9sb2NrKCZpbmZvLT5jdXJyZW50X3Bmbl9tdXRleCk7Cj4+Pj4+PiArCQkJZm9yIChwZm4gPSBp bmZvLT5jdXJyZW50X3BmbjsgcGZuIDwgY3ljbGUtPmVuZF9wZm47IHBmbisrKSB7Cj4+Pj4+PiAr CQkJCWR1bXBhYmxlID0gaXNfZHVtcGFibGUoCj4+Pj4+PiArCQkJCQlpbmZvLT5mZF9iaXRtYXAg PyAmYml0bWFwX3BhcmFsbGVsIDogaW5mby0+Yml0bWFwMiwKPj4+Pj4+ICsJCQkJCXBmbiwKPj4+ Pj4+ICsJCQkJCWN5Y2xlKTsKPj4+Pj4+ICsJCQkJaWYgKGR1bXBhYmxlKQo+Pj4+Pj4gKwkJCQkJ YnJlYWs7Cj4+Pj4+PiArCQkJfQo+Pj4+Pj4gKwkJCWluZm8tPmN1cnJlbnRfcGZuID0gcGZuICsg MTsKPj4+Pj4+Cj4+Pj4+PiAtCQkJcGFnZV9kYXRhX2J1ZltpbmRleF0ucGZuID0gcGZuOwo+Pj4+ Pj4gLQkJCXBhZ2VfZGF0YV9idWZbaW5kZXhdLnJlYWR5ID0gMTsKPj4+Pj4+ICsJCQlwYWdlX2Zs YWdfYnVmLT5wZm4gPSBwZm47Cj4+Pj4+PiArCQkJcGFnZV9mbGFnX2J1Zi0+cmVhZHkgPSBGTEFH X0ZJTExJTkc7Cj4+Pj4+PiArCQkJcHRocmVhZF9tdXRleF91bmxvY2soJmluZm8tPmN1cnJlbnRf cGZuX211dGV4KTsKPj4+Pj4+ICsJCQlzZW1fcG9zdCgmaW5mby0+cGFnZV9mbGFnX2J1Zl9zZW0p Owo+Pj4+Pj4KPj4+Pj4+IC0JCQlkdW1wYWJsZSA9IGlzX2R1bXBhYmxlKAo+Pj4+Pj4gLQkJCQlp bmZvLT5mZF9iaXRtYXAgPyAmYml0bWFwX3BhcmFsbGVsIDogaW5mby0+Yml0bWFwMiwKPj4+Pj4+ IC0JCQkJcGZuLAo+Pj4+Pj4gLQkJCQljeWNsZSk7Cj4+Pj4+PiAtCQkJcGFnZV9kYXRhX2J1Zltp bmRleF0uZHVtcGFibGUgPSBkdW1wYWJsZTsKPj4+Pj4+IC0JCQlpZiAoIWR1bXBhYmxlKQo+Pj4+ Pj4gLQkJCQlnb3RvIHVubG9jazsKPj4+Pj4+ICsJCQlpZiAocGZuID49IGN5Y2xlLT5lbmRfcGZu KSB7Cj4+Pj4+PiArCQkJCWluZm8tPmN1cnJlbnRfcGZuID0gY3ljbGUtPmVuZF9wZm47Cj4+Pj4+ PiArCQkJCXBhZ2VfZGF0YV9idWZbaW5kZXhdLnVzZWQgPSBGQUxTRTsKPj4+Pj4+ICsJCQkJYnJl YWs7Cj4+Pj4+PiArCQkJfQo+Pj4+Pj4KPj4+Pj4+ICAgCQkJaWYgKCFyZWFkX3Bmbl9wYXJhbGxl bChmZF9tZW1vcnksIHBmbiwgYnVmLAo+Pj4+Pj4gICAJCQkJCSAgICAgICAmYml0bWFwX21lbW9y eV9wYXJhbGxlbCwKPj4+Pj4+IEBAIC03MTc4LDExICs3MjMwLDExIEBAIGtkdW1wX3RocmVhZF9m dW5jdGlvbl9jeWNsaWModm9pZCAqYXJnKSB7Cj4+Pj4+Pgo+Pj4+Pj4gICAJCQlpZiAoKGluZm8t PmR1bXBfbGV2ZWwgJiBETF9FWENMVURFX1pFUk8pCj4+Pj4+PiAgIAkJCSAgICAmJiBpc196ZXJv X3BhZ2UoYnVmLCBpbmZvLT5wYWdlX3NpemUpKSB7Cj4+Pj4+PiAtCQkJCXBhZ2VfZGF0YV9idWZb aW5kZXhdLnplcm8gPSBUUlVFOwo+Pj4+Pj4gLQkJCQlnb3RvIHVubG9jazsKPj4+Pj4+ICsJCQkJ cGFnZV9mbGFnX2J1Zi0+emVybyA9IFRSVUU7Cj4+Pj4+PiArCQkJCWdvdG8gbmV4dDsKPj4+Pj4+ ICAgCQkJfQo+Pj4+Pj4KPj4+Pj4+IC0JCQlwYWdlX2RhdGFfYnVmW2luZGV4XS56ZXJvID0gRkFM U0U7Cj4+Pj4+PiArCQkJcGFnZV9mbGFnX2J1Zi0+emVybyA9IEZBTFNFOwo+Pj4+Pj4KPj4+Pj4+ ICAgCQkJLyoKPj4+Pj4+ICAgCQkJICogQ29tcHJlc3MgdGhlIHBhZ2UgZGF0YS4KPj4+Pj4+IEBA IC03MjEwLDYgKzcyNjIsNyBAQCBrZHVtcF90aHJlYWRfZnVuY3Rpb25fY3ljbGljKHZvaWQgKmFy Zykgewo+Pj4+Pj4gICAJCQkJcGFnZV9kYXRhX2J1ZltpbmRleF0uZmxhZ3MgPQo+Pj4+Pj4gICAJ CQkJCQkJRFVNUF9ESF9DT01QUkVTU0VEX0xaTzsKPj4+Pj4+ICAgCQkJCXBhZ2VfZGF0YV9idWZb aW5kZXhdLnNpemUgID0gc2l6ZV9vdXQ7Cj4+Pj4+PiArCj4+Pj4+PiAgIAkJCQltZW1jcHkocGFn ZV9kYXRhX2J1ZltpbmRleF0uYnVmLCBidWZfb3V0LCBzaXplX291dCk7Cj4+Pj4+PiAgICNlbmRp Zgo+Pj4+Pj4gICAjaWZkZWYgVVNFU05BUFBZCj4+Pj4+PiBAQCAtNzIzMiwxMiArNzI4NSwxNCBA QCBrZHVtcF90aHJlYWRfZnVuY3Rpb25fY3ljbGljKHZvaWQgKmFyZykgewo+Pj4+Pj4gICAJCQkJ cGFnZV9kYXRhX2J1ZltpbmRleF0uc2l6ZSAgPSBpbmZvLT5wYWdlX3NpemU7Cj4+Pj4+PiAgIAkJ CQltZW1jcHkocGFnZV9kYXRhX2J1ZltpbmRleF0uYnVmLCBidWYsIGluZm8tPnBhZ2Vfc2l6ZSk7 Cj4+Pj4+PiAgIAkJCX0KPj4+Pj4+IC11bmxvY2s6Cj4+Pj4+PiAtCQkJcHRocmVhZF9tdXRleF91 bmxvY2soJnBhZ2VfZGF0YV9idWZbaW5kZXhdLm11dGV4KTsKPj4+Pj4+ICsJCQlwYWdlX2ZsYWdf YnVmLT5pbmRleCA9IGluZGV4Owo+Pj4+Pj4gKwkJCWJ1Zl9yZWFkeSA9IFRSVUU7Cj4+Pj4+PiAr bmV4dDoKPj4+Pj4+ICsJCQlwYWdlX2ZsYWdfYnVmLT5yZWFkeSA9IEZMQUdfUkVBRFk7Cj4+Pj4+ PiArCQkJcGFnZV9mbGFnX2J1ZiA9IHBhZ2VfZmxhZ19idWYtPm5leHQ7Cj4+Pj4+Pgo+Pj4+Pj4g ICAJCX0KPj4+Pj4+ICAgCX0KPj4+Pj4+IC0KPj4+Pj4+ICAgCXJldHZhbCA9IE5VTEw7Cj4+Pj4+ Pgo+Pj4+Pj4gICBmYWlsOgo+Pj4+Pj4gQEAgLTcyNjUsMTQgKzczMjAsMTUgQEAgd3JpdGVfa2R1 bXBfcGFnZXNfcGFyYWxsZWxfY3ljbGljKHN0cnVjdCBjYWNoZV9kYXRhICpjZF9oZWFkZXIsCj4+ Pj4+PiAgIAlzdHJ1Y3QgcGFnZV9kZXNjIHBkOwo+Pj4+Pj4gICAJc3RydWN0IHRpbWV2YWwgdHZf c3RhcnQ7Cj4+Pj4+PiAgIAlzdHJ1Y3QgdGltZXZhbCBsYXN0LCBuZXc7Cj4+Pj4+PiAtCXVuc2ln bmVkIGxvbmcgbG9uZyBjb25zdW1pbmdfcGZuOwo+Pj4+Pj4gICAJcHRocmVhZF90ICoqdGhyZWFk cyA9IE5VTEw7Cj4+Pj4+PiAgIAlzdHJ1Y3QgdGhyZWFkX2FyZ3MgKmtkdW1wX3RocmVhZF9hcmdz ID0gTlVMTDsKPj4+Pj4+ICAgCXZvaWQgKnRocmVhZF9yZXN1bHQ7Cj4+Pj4+PiAtCWludCBwYWdl X2RhdGFfbnVtOwo+Pj4+Pj4gKwlpbnQgcGFnZV9idWZfbnVtOwo+Pj4+Pj4gICAJc3RydWN0IHBh Z2VfZGF0YSAqcGFnZV9kYXRhX2J1ZiA9IE5VTEw7Cj4+Pj4+PiAgIAlpbnQgaTsKPj4+Pj4+ICAg CWludCBpbmRleDsKPj4+Pj4+ICsJaW50IGVuZF9jb3VudCwgY29uc3VtaW5nLCBjaGVja19jb3Vu dDsKPj4+Pj4+ICsJbWRmX3Bmbl90IGN1cnJlbnRfcGZuLCB0ZW1wX3BmbjsKPj4+Pj4+Cj4+Pj4+ PiAgIAlpZiAoaW5mby0+ZmxhZ19lbGZfZHVtcGZpbGUpCj4+Pj4+PiAgIAkJcmV0dXJuIEZBTFNF Owo+Pj4+Pj4gQEAgLTcyODQsMTMgKzczNDAsNiBAQCB3cml0ZV9rZHVtcF9wYWdlc19wYXJhbGxl bF9jeWNsaWMoc3RydWN0IGNhY2hlX2RhdGEgKmNkX2hlYWRlciwKPj4+Pj4+ICAgCQlnb3RvIG91 dDsKPj4+Pj4+ICAgCX0KPj4+Pj4+Cj4+Pj4+PiAtCXJlcyA9IHB0aHJlYWRfbXV0ZXhfaW5pdCgm aW5mby0+Y29uc3VtZWRfcGZuX211dGV4LCBOVUxMKTsKPj4+Pj4+IC0JaWYgKHJlcyAhPSAwKSB7 Cj4+Pj4+PiAtCQlFUlJNU0coIkNhbid0IGluaXRpYWxpemUgY29uc3VtZWRfcGZuX211dGV4LiAl c1xuIiwKPj4+Pj4+IC0JCQkJc3RyZXJyb3IocmVzKSk7Cj4+Pj4+PiAtCQlnb3RvIG91dDsKPj4+ Pj4+IC0JfQo+Pj4+Pj4gLQo+Pj4+Pj4gICAJcmVzID0gcHRocmVhZF9tdXRleF9pbml0KCZpbmZv LT5maWx0ZXJfbXV0ZXgsIE5VTEwpOwo+Pj4+Pj4gICAJaWYgKHJlcyAhPSAwKSB7Cj4+Pj4+PiAg IAkJRVJSTVNHKCJDYW4ndCBpbml0aWFsaXplIGZpbHRlcl9tdXRleC4gJXNcbiIsIHN0cmVycm9y KHJlcykpOwo+Pj4+Pj4gQEAgLTczMTQsMzYgKzczNjMsMjMgQEAgd3JpdGVfa2R1bXBfcGFnZXNf cGFyYWxsZWxfY3ljbGljKHN0cnVjdCBjYWNoZV9kYXRhICpjZF9oZWFkZXIsCj4+Pj4+PiAgIAll bmRfcGZuICAgPSBjeWNsZS0+ZW5kX3BmbjsKPj4+Pj4+Cj4+Pj4+PiAgIAlpbmZvLT5jdXJyZW50 X3BmbiA9IHN0YXJ0X3BmbjsKPj4+Pj4+IC0JaW5mby0+Y29uc3VtZWRfcGZuID0gc3RhcnRfcGZu IC0gMTsKPj4+Pj4+Cj4+Pj4+PiAgIAl0aHJlYWRzID0gaW5mby0+dGhyZWFkczsKPj4+Pj4+ICAg CWtkdW1wX3RocmVhZF9hcmdzID0gaW5mby0+a2R1bXBfdGhyZWFkX2FyZ3M7Cj4+Pj4+Pgo+Pj4+ Pj4gLQlwYWdlX2RhdGFfbnVtID0gaW5mby0+bnVtX2J1ZmZlcnM7Cj4+Pj4+PiArCXBhZ2VfYnVm X251bSA9IGluZm8tPm51bV9idWZmZXJzOwo+Pj4+Pj4gICAJcGFnZV9kYXRhX2J1ZiA9IGluZm8t PnBhZ2VfZGF0YV9idWY7Cj4+Pj4+PiArCXB0aHJlYWRfbXV0ZXhfaW5pdCgmaW5mby0+cGFnZV9k YXRhX211dGV4LCBOVUxMKTsKPj4+Pj4+ICsJc2VtX2luaXQoJmluZm8tPnBhZ2VfZmxhZ19idWZf c2VtLCAwLCAwKTsKPj4+Pj4+Cj4+Pj4+PiAtCWZvciAoaSA9IDA7IGkgPCBwYWdlX2RhdGFfbnVt OyBpKyspIHsKPj4+Pj4+IC0JCS8qCj4+Pj4+PiAtCQkgKiBwcm9kdWNlciB3aWxsIHVzZSBwZm4g aW4gcGFnZV9kYXRhX2J1ZiB0byBkZWNpZGUgdGhlCj4+Pj4+PiAtCQkgKiBjb25zdW1lZCBwZm4K Pj4+Pj4+IC0JCSAqLwo+Pj4+Pj4gLQkJcGFnZV9kYXRhX2J1ZltpXS5wZm4gPSBzdGFydF9wZm4g LSAxOwo+Pj4+Pj4gLQkJcGFnZV9kYXRhX2J1ZltpXS5yZWFkeSA9IDA7Cj4+Pj4+PiAtCQlyZXMg PSBwdGhyZWFkX211dGV4X2luaXQoJnBhZ2VfZGF0YV9idWZbaV0ubXV0ZXgsIE5VTEwpOwo+Pj4+ Pj4gLQkJaWYgKHJlcyAhPSAwKSB7Cj4+Pj4+PiAtCQkJRVJSTVNHKCJDYW4ndCBpbml0aWFsaXpl IG11dGV4IG9mIHBhZ2VfZGF0YV9idWYuICVzXG4iLAo+Pj4+Pj4gLQkJCQkJc3RyZXJyb3IocmVz KSk7Cj4+Pj4+PiAtCQkJZ290byBvdXQ7Cj4+Pj4+PiAtCQl9Cj4+Pj4+PiAtCX0KPj4+Pj4+ICsJ Zm9yIChpID0gMDsgaSA8IHBhZ2VfYnVmX251bTsgaSsrKQo+Pj4+Pj4gKwkJcGFnZV9kYXRhX2J1 ZltpXS51c2VkID0gRkFMU0U7Cj4+Pj4+Pgo+Pj4+Pj4gICAJZm9yIChpID0gMDsgaSA8IGluZm8t Pm51bV90aHJlYWRzOyBpKyspIHsKPj4+Pj4+ICAgCQlrZHVtcF90aHJlYWRfYXJnc1tpXS50aHJl YWRfbnVtID0gaTsKPj4+Pj4+ICAgCQlrZHVtcF90aHJlYWRfYXJnc1tpXS5sZW5fYnVmX291dCA9 IGxlbl9idWZfb3V0Owo+Pj4+Pj4gLQkJa2R1bXBfdGhyZWFkX2FyZ3NbaV0uc3RhcnRfcGZuID0g c3RhcnRfcGZuOwo+Pj4+Pj4gLQkJa2R1bXBfdGhyZWFkX2FyZ3NbaV0uZW5kX3BmbiA9IGVuZF9w Zm47Cj4+Pj4+PiAtCQlrZHVtcF90aHJlYWRfYXJnc1tpXS5wYWdlX2RhdGFfbnVtID0gcGFnZV9k YXRhX251bTsKPj4+Pj4+ICAgCQlrZHVtcF90aHJlYWRfYXJnc1tpXS5wYWdlX2RhdGFfYnVmID0g cGFnZV9kYXRhX2J1ZjsKPj4+Pj4+ICsJCWtkdW1wX3RocmVhZF9hcmdzW2ldLnBhZ2VfZmxhZ19i dWYgPSBpbmZvLT5wYWdlX2ZsYWdfYnVmW2ldOwo+Pj4+Pj4gICAJCWtkdW1wX3RocmVhZF9hcmdz W2ldLmN5Y2xlID0gY3ljbGU7Cj4+Pj4+Pgo+Pj4+Pj4gICAJCXJlcyA9IHB0aHJlYWRfY3JlYXRl KHRocmVhZHNbaV0sIE5VTEwsCj4+Pj4+PiBAQCAtNzM1Niw1NSArNzM5Miw4OCBAQCB3cml0ZV9r ZHVtcF9wYWdlc19wYXJhbGxlbF9jeWNsaWMoc3RydWN0IGNhY2hlX2RhdGEgKmNkX2hlYWRlciwK Pj4+Pj4+ICAgCQl9Cj4+Pj4+PiAgIAl9Cj4+Pj4+Pgo+Pj4+Pj4gLQljb25zdW1pbmdfcGZuID0g c3RhcnRfcGZuOwo+Pj4+Pj4gLQlpbmRleCA9IC0xOwo+Pj4+Pj4gKwllbmRfY291bnQgPSAwOwo+ Pj4+Pj4gKwl3aGlsZSAoMSkgewo+Pj4+Pj4gKwkJY29uc3VtaW5nID0gMDsKPj4+Pj4+ICsJCWNo ZWNrX2NvdW50ID0gMDsKPj4+Pj4+Cj4+Pj4+PiAtCWdldHRpbWVvZmRheSgmbGFzdCwgTlVMTCk7 Cj4+Pj4+PiArCQkvKgo+Pj4+Pj4gKwkJICogVGhlIGJhc2ljIGlkZWEgaXMgcHJvZHVjZXIgcHJv ZHVjaW5nIHBhZ2UgYW5kIGNvbnN1bWVyIHdyaXRpbmcgcGFnZS4KPj4+Pj4+ICsJCSAqIEVhY2gg cHJvZHVjZXIgaGF2ZSBhIHBhZ2VfZmxhZ19idWYgbGlzdCB3aGljaCBpcyB1c2VkIGZvciBzdG9y aW5nIHBhZ2UncyBkZXNjcmlwdGlvbi4KPj4+Pj4+ICsJCSAqIFRoZSBzaXplIG9mIHBhZ2VfZmxh Z19idWYgaXMgbGl0dGxlIHNvIGl0IHdvbid0IHRha2UgdG9vIG11Y2ggbWVtb3J5Lgo+Pj4+Pj4g KwkJICogQW5kIGFsbCBwcm9kdWNlcnMgd2lsbCBzaGFyZSBhIHBhZ2VfZGF0YV9idWYgYXJyYXkg d2hpY2ggaXMgdXNlZCBmb3Igc3RvcmluZyBwYWdlJ3MgY29tcHJlc3NlZCBkYXRhLgo+Pj4+Pj4g KwkJICogVGhlIG1haW4gdGhyZWFkIGlzIHRoZSBjb25zdW1lci4gSXQgd2lsbCBmaW5kIHRoZSBu ZXh0IHBmbiBhbmQgd3JpdGUgaXQgaW50byBmaWxlLgo+Pj4+Pj4gKwkJICogVGhlIG5leHQgcGZu IGlzIHNtYWxsZXN0IHBmbiBpbiBhbGwgcGFnZV9mbGFnX2J1Zi4KPj4+Pj4+ICsJCSAqLwo+Pj4+ Pj4gKwkJc2VtX3dhaXQoJmluZm8tPnBhZ2VfZmxhZ19idWZfc2VtKTsKPj4+Pj4+ICsJCWdldHRp bWVvZmRheSgmbGFzdCwgTlVMTCk7Cj4+Pj4+PiArCQl3aGlsZSAoMSkgewo+Pj4+Pj4gKwkJCWN1 cnJlbnRfcGZuID0gZW5kX3BmbjsKPj4+Pj4+Cj4+Pj4+PiAtCXdoaWxlIChjb25zdW1pbmdfcGZu IDwgZW5kX3Bmbikgewo+Pj4+Pj4gLQkJaW5kZXggPSBjb25zdW1pbmdfcGZuICUgcGFnZV9kYXRh X251bTsKPj4+Pj4+ICsJCQkvKgo+Pj4+Pj4gKwkJCSAqIHBhZ2VfZmxhZ19idWYgaXMgaW4gY2ly Y3VsYXIgbGlua2VkIGxpc3QuCj4+Pj4+PiArCQkJICogVGhlIGFycmF5IGluZm8tPnBhZ2VfZmxh Z19idWZbXSByZWNvcmRzIHRoZSBjdXJyZW50IHBhZ2VfZmxhZ19idWYgaW4gZWFjaCB0aHJlYWQn cwo+Pj4+Pj4gKwkJCSAqIHBhZ2VfZmxhZ19idWYgbGlzdC4KPj4+Pj4+ICsJCQkgKiBjb25zdW1p bmcgaXMgdXNlZCBmb3IgcmVjb3JkaW5nIGluIHdoaWNoIHRocmVhZCB0aGUgcGZuIGlzIHRoZSBz bWFsbGVzdC4KPj4+Pj4+ICsJCQkgKiBjdXJyZW50X3BmbiBpcyB1c2VkIGZvciByZWNvcmRpbmcg dGhlIHZhbHVlIG9mIHBmbiB3aGVuIGNoZWNraW5nIHRoZSBwZm4uCj4+Pj4+PiArCQkJICovCj4+ Pj4+PiArCQkJZm9yIChpID0gMDsgaSA8IGluZm8tPm51bV90aHJlYWRzOyBpKyspIHsKPj4+Pj4+ ICsJCQkJaWYgKGluZm8tPnBhZ2VfZmxhZ19idWZbaV0tPnJlYWR5ID09IEZMQUdfVU5VU0VEKQo+ Pj4+Pj4gKwkJCQkJY29udGludWU7Cj4+Pj4+PiArCQkJCXRlbXBfcGZuID0gaW5mby0+cGFnZV9m bGFnX2J1ZltpXS0+cGZuOwo+Pj4+Pj4KPj4+Pj4+IC0JCWdldHRpbWVvZmRheSgmbmV3LCBOVUxM KTsKPj4+Pj4+IC0JCWlmIChuZXcudHZfc2VjIC0gbGFzdC50dl9zZWMgPiBXQUlUX1RJTUUpIHsK Pj4+Pj4+IC0JCQlFUlJNU0coIkNhbid0IGdldCBkYXRhIG9mIHBmbiAlbGx4LlxuIiwgY29uc3Vt aW5nX3Bmbik7Cj4+Pj4+PiAtCQkJZ290byBvdXQ7Cj4+Pj4+PiAtCQl9Cj4+Pj4+PiArCQkJCS8q Cj4+Pj4+PiArCQkJCSAqIGNvdW50IGhvdyBtYW55IHRocmVhZHMgaGF2ZSByZWFjaGVkIHRoZSBl bmQuCj4+Pj4+PiArCQkJCSAqLwo+Pj4+Pj4gKwkJCQlpZiAodGVtcF9wZm4gPj0gZW5kX3Bmbikg ewo+Pj4+Pj4gKwkJCQkJaW5mby0+cGFnZV9mbGFnX2J1ZltpXS0+cmVhZHkgPSBGTEFHX1VOVVNF RDsKPj4+Pj4+ICsJCQkJCWVuZF9jb3VudCsrOwo+Pj4+Pj4gKwkJCQkJY29udGludWU7Cj4+Pj4+ PiArCQkJCX0KPj4+Pj4+Cj4+Pj4+PiAtCQkvKgo+Pj4+Pj4gLQkJICogY2hlY2sgcGZuIGZpcnN0 IHdpdGhvdXQgbXV0ZXggbG9ja2VkIHRvIHJlZHVjZSB0aGUgdGltZQo+Pj4+Pj4gLQkJICogdHJ5 aW5nIHRvIGxvY2sgdGhlIG11dGV4Cj4+Pj4+PiAtCQkgKi8KPj4+Pj4+IC0JCWlmIChwYWdlX2Rh dGFfYnVmW2luZGV4XS5wZm4gIT0gY29uc3VtaW5nX3BmbikKPj4+Pj4+IC0JCQljb250aW51ZTsK Pj4+Pj4+ICsJCQkJaWYgKGN1cnJlbnRfcGZuIDwgdGVtcF9wZm4pCj4+Pj4+PiArCQkJCQljb250 aW51ZTsKPj4+Pj4+Cj4+Pj4+PiAtCQlpZiAocHRocmVhZF9tdXRleF90cnlsb2NrKCZwYWdlX2Rh dGFfYnVmW2luZGV4XS5tdXRleCkgIT0gMCkKPj4+Pj4+IC0JCQljb250aW51ZTsKPj4+Pj4+ICsJ CQkJY2hlY2tfY291bnQrKzsKPj4+Pj4+ICsJCQkJY29uc3VtaW5nID0gaTsKPj4+Pj4+ICsJCQkJ Y3VycmVudF9wZm4gPSB0ZW1wX3BmbjsKPj4+Pj4+ICsJCQl9Cj4+Pj4+Pgo+Pj4+Pj4gLQkJLyog Y2hlY2sgd2hldGhlciB0aGUgZm91bmQgb25lIGlzIHJlYWR5IHRvIGJlIGNvbnN1bWVkICovCj4+ Pj4+PiAtCQlpZiAocGFnZV9kYXRhX2J1ZltpbmRleF0ucGZuICE9IGNvbnN1bWluZ19wZm4gfHwK Pj4+Pj4+IC0JCSAgICBwYWdlX2RhdGFfYnVmW2luZGV4XS5yZWFkeSAhPSAxKSB7Cj4+Pj4+PiAt CQkJZ290byB1bmxvY2s7Cj4+Pj4+PiArCQkJLyoKPj4+Pj4+ICsJCQkgKiBJZiBhbGwgdGhlIHRo cmVhZHMgaGF2ZSByZWFjaGVkIHRoZSBlbmQsIHdlIHdpbGwgZmluaXNoIHdyaXRpbmcuCj4+Pj4+ PiArCQkJICovCj4+Pj4+PiArCQkJaWYgKGVuZF9jb3VudCA+PSBpbmZvLT5udW1fdGhyZWFkcykK Pj4+Pj4+ICsJCQkJZ290byBmaW5pc2g7Cj4+Pj4+PiArCj4+Pj4+PiArCQkJLyoKPj4+Pj4+ICsJ CQkgKiBJZiB0aGUgcGFnZV9mbGFnX2J1ZiBpcyBub3QgcmVhZHksIHRoZSBwZm4gcmVjb3JkZWQg bWF5IGJlIGNoYW5nZWQuCj4+Pj4+PiArCQkJICogU28gd2Ugc2hvdWxkIHJlY2hlY2suCj4+Pj4+ PiArCQkJICovCj4+Pj4+PiArCQkJaWYgKGluZm8tPnBhZ2VfZmxhZ19idWZbY29uc3VtaW5nXS0+ cmVhZHkgIT0gRkxBR19SRUFEWSkgewo+Pj4+Pj4gKwkJCQlnZXR0aW1lb2ZkYXkoJm5ldywgTlVM TCk7Cj4+Pj4+PiArCQkJCWlmIChuZXcudHZfc2VjIC0gbGFzdC50dl9zZWMgPiBXQUlUX1RJTUUp IHsKPj4+Pj4+ICsJCQkJCUVSUk1TRygiQ2FuJ3QgZ2V0IGRhdGEgb2YgcGZuLlxuIik7Cj4+Pj4+ PiArCQkJCQlnb3RvIG91dDsKPj4+Pj4+ICsJCQkJfQo+Pj4+Pj4gKwkJCQljb250aW51ZTsKPj4+ Pj4+ICsJCQl9Cj4+Pj4+PiArCj4+Pj4+PiArCQkJaWYgKGN1cnJlbnRfcGZuID09IGluZm8tPnBh Z2VfZmxhZ19idWZbY29uc3VtaW5nXS0+cGZuKQo+Pj4+Pj4gKwkJCQlicmVhazsKPj4+Pj4+ICAg CQl9Cj4+Pj4+Pgo+Pj4+Pj4gICAJCWlmICgobnVtX2R1bXBlZCAlIHBlcikgPT0gMCkKPj4+Pj4+ ICAgCQkJcHJpbnRfcHJvZ3Jlc3MoUFJPR1JFU1NfQ09QWSwgbnVtX2R1bXBlZCwgaW5mby0+bnVt X2R1bXBhYmxlKTsKPj4+Pj4+Cj4+Pj4+PiAtCQkvKiBuZXh0IHBmbiBpcyBmb3VuZCwgcmVmcmVz aCBsYXN0IGhlcmUgKi8KPj4+Pj4+IC0JCWxhc3QgPSBuZXc7Cj4+Pj4+PiAtCQljb25zdW1pbmdf cGZuKys7Cj4+Pj4+PiAtCQlpbmZvLT5jb25zdW1lZF9wZm4rKzsKPj4+Pj4+IC0JCXBhZ2VfZGF0 YV9idWZbaW5kZXhdLnJlYWR5ID0gMDsKPj4+Pj4+IC0KPj4+Pj4+IC0JCWlmIChwYWdlX2RhdGFf YnVmW2luZGV4XS5kdW1wYWJsZSA9PSBGQUxTRSkKPj4+Pj4+IC0JCQlnb3RvIHVubG9jazsKPj4+ Pj4+IC0KPj4+Pj4+ICAgCQludW1fZHVtcGVkKys7Cj4+Pj4+Pgo+Pj4+Pj4gLQkJaWYgKHBhZ2Vf ZGF0YV9idWZbaW5kZXhdLnplcm8gPT0gVFJVRSkgewo+Pj4+Pj4gKwo+Pj4+Pj4gKwkJaWYgKGlu Zm8tPnBhZ2VfZmxhZ19idWZbY29uc3VtaW5nXS0+emVybyA9PSBUUlVFKSB7Cj4+Pj4+PiAgIAkJ CWlmICghd3JpdGVfY2FjaGUoY2RfaGVhZGVyLCBwZF96ZXJvLCBzaXplb2YocGFnZV9kZXNjX3Qp KSkKPj4+Pj4+ICAgCQkJCWdvdG8gb3V0Owo+Pj4+Pj4gICAJCQlwZm5femVybysrOwo+Pj4+Pj4g ICAJCX0gZWxzZSB7Cj4+Pj4+PiArCQkJaW5kZXggPSBpbmZvLT5wYWdlX2ZsYWdfYnVmW2NvbnN1 bWluZ10tPmluZGV4Owo+Pj4+Pj4gICAJCQlwZC5mbGFncyAgICAgID0gcGFnZV9kYXRhX2J1Zltp bmRleF0uZmxhZ3M7Cj4+Pj4+PiAgIAkJCXBkLnNpemUgICAgICAgPSBwYWdlX2RhdGFfYnVmW2lu ZGV4XS5zaXplOwo+Pj4+Pj4gICAJCQlwZC5wYWdlX2ZsYWdzID0gMDsKPj4+Pj4+IEBAIC03NDIw LDEyICs3NDg5LDEyIEBAIHdyaXRlX2tkdW1wX3BhZ2VzX3BhcmFsbGVsX2N5Y2xpYyhzdHJ1Y3Qg Y2FjaGVfZGF0YSAqY2RfaGVhZGVyLAo+Pj4+Pj4gICAJCQkgKi8KPj4+Pj4+ICAgCQkJaWYgKCF3 cml0ZV9jYWNoZShjZF9wYWdlLCBwYWdlX2RhdGFfYnVmW2luZGV4XS5idWYsIHBkLnNpemUpKQo+ Pj4+Pj4gICAJCQkJZ290byBvdXQ7Cj4+Pj4+PiAtCj4+Pj4+PiArCQkJcGFnZV9kYXRhX2J1Zltp bmRleF0udXNlZCA9IEZBTFNFOwo+Pj4+Pj4gICAJCX0KPj4+Pj4+IC11bmxvY2s6Cj4+Pj4+PiAt CQlwdGhyZWFkX211dGV4X3VubG9jaygmcGFnZV9kYXRhX2J1ZltpbmRleF0ubXV0ZXgpOwo+Pj4+ Pj4gKwkJaW5mby0+cGFnZV9mbGFnX2J1Zltjb25zdW1pbmddLT5yZWFkeSA9IEZMQUdfVU5VU0VE Owo+Pj4+Pj4gKwkJaW5mby0+cGFnZV9mbGFnX2J1Zltjb25zdW1pbmddID0gaW5mby0+cGFnZV9m bGFnX2J1Zltjb25zdW1pbmddLT5uZXh0Owo+Pj4+Pj4gICAJfQo+Pj4+Pj4gLQo+Pj4+Pj4gK2Zp bmlzaDoKPj4+Pj4+ICAgCXJldCA9IFRSVUU7Cj4+Pj4+PiAgIAkvKgo+Pj4+Pj4gICAJICogcHJp bnQgWzEwMCAlXQo+Pj4+Pj4gQEAgLTc0NjMsMTUgKzc1MzIsOSBAQCBvdXQ6Cj4+Pj4+PiAgIAkJ fQo+Pj4+Pj4gICAJfQo+Pj4+Pj4KPj4+Pj4+IC0JaWYgKHBhZ2VfZGF0YV9idWYgIT0gTlVMTCkg ewo+Pj4+Pj4gLQkJZm9yIChpID0gMDsgaSA8IHBhZ2VfZGF0YV9udW07IGkrKykgewo+Pj4+Pj4g LQkJCXB0aHJlYWRfbXV0ZXhfZGVzdHJveSgmcGFnZV9kYXRhX2J1ZltpXS5tdXRleCk7Cj4+Pj4+ PiAtCQl9Cj4+Pj4+PiAtCX0KPj4+Pj4+IC0KPj4+Pj4+ICsJc2VtX2Rlc3Ryb3koJmluZm8tPnBh Z2VfZmxhZ19idWZfc2VtKTsKPj4+Pj4+ICAgCXB0aHJlYWRfcndsb2NrX2Rlc3Ryb3koJmluZm8t PnVzZW1tYXBfcndsb2NrKTsKPj4+Pj4+ICAgCXB0aHJlYWRfbXV0ZXhfZGVzdHJveSgmaW5mby0+ ZmlsdGVyX211dGV4KTsKPj4+Pj4+IC0JcHRocmVhZF9tdXRleF9kZXN0cm95KCZpbmZvLT5jb25z dW1lZF9wZm5fbXV0ZXgpOwo+Pj4+Pj4gICAJcHRocmVhZF9tdXRleF9kZXN0cm95KCZpbmZvLT5j dXJyZW50X3Bmbl9tdXRleCk7Cj4+Pj4+Pgo+Pj4+Pj4gICAJcmV0dXJuIHJldDsKPj4+Pj4+IEBA IC03NTY0LDYgKzc2MjcsNyBAQCB3cml0ZV9rZHVtcF9wYWdlc19jeWNsaWMoc3RydWN0IGNhY2hl X2RhdGEgKmNkX2hlYWRlciwgc3RydWN0IGNhY2hlX2RhdGEgKmNkX3BhZwo+Pj4+Pj4gICAJCW51 bV9kdW1wZWQrKzsKPj4+Pj4+ICAgCQlpZiAoIXJlYWRfcGZuKHBmbiwgYnVmKSkKPj4+Pj4+ICAg CQkJZ290byBvdXQ7Cj4+Pj4+PiArCj4+Pj4+PiAgIAkJZmlsdGVyX2RhdGFfYnVmZmVyKGJ1Ziwg cGZuX3RvX3BhZGRyKHBmbiksIGluZm8tPnBhZ2Vfc2l6ZSk7Cj4+Pj4+Pgo+Pj4+Pj4gICAJCS8q Cj4+Pj4+PiBkaWZmIC0tZ2l0IGEvbWFrZWR1bXBmaWxlLmggYi9tYWtlZHVtcGZpbGUuaAo+Pj4+ Pj4gaW5kZXggZTBiNWJiZi4uNGIzMTVjMCAxMDA2NDQKPj4+Pj4+IC0tLSBhL21ha2VkdW1wZmls ZS5oCj4+Pj4+PiArKysgYi9tYWtlZHVtcGZpbGUuaAo+Pj4+Pj4gQEAgLTQ0LDYgKzQ0LDcgQEAK Pj4+Pj4+ICAgI2luY2x1ZGUgInByaW50X2luZm8uaCIKPj4+Pj4+ICAgI2luY2x1ZGUgInNhZHVt cF9tb2QuaCIKPj4+Pj4+ICAgI2luY2x1ZGUgPHB0aHJlYWQuaD4KPj4+Pj4+ICsjaW5jbHVkZSA8 c2VtYXBob3JlLmg+Cj4+Pj4+Pgo+Pj4+Pj4gICAvKgo+Pj4+Pj4gICAgKiBSZXN1bHQgb2YgY29t bWFuZAo+Pj4+Pj4gQEAgLTk3Nyw3ICs5NzgsNyBAQCB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9u ZyBpbnQgdWxvbmdsb25nOwo+Pj4+Pj4gICAjZGVmaW5lIFBBR0VfREFUQV9OVU0JKDUwKQo+Pj4+ Pj4gICAjZGVmaW5lIFdBSVRfVElNRQkoNjAgKiAxMCkKPj4+Pj4+ICAgI2RlZmluZSBQVEhSRUFE X0ZBSUwJKCh2b2lkICopLTIpCj4+Pj4+PiAtI2RlZmluZSBOVU1fQlVGRkVSUwkoNTApCj4+Pj4+ PiArI2RlZmluZSBOVU1fQlVGRkVSUwkoMjApCj4+Pj4+Pgo+Pj4+Pj4gICBzdHJ1Y3QgbW1hcF9j YWNoZSB7Cj4+Pj4+PiAgIAljaGFyCSptbWFwX2J1ZjsKPj4+Pj4+IEBAIC05ODUsMjggKzk4Niwz MyBAQCBzdHJ1Y3QgbW1hcF9jYWNoZSB7Cj4+Pj4+PiAgIAlvZmZfdCAgIG1tYXBfZW5kX29mZnNl dDsKPj4+Pj4+ICAgfTsKPj4+Pj4+Cj4+Pj4+PiArZW51bSB7Cj4+Pj4+PiArCUZMQUdfVU5VU0VE LAo+Pj4+Pj4gKwlGTEFHX1JFQURZLAo+Pj4+Pj4gKwlGTEFHX0ZJTExJTkcKPj4+Pj4+ICt9Owo+ Pj4+Pj4gK3N0cnVjdCBwYWdlX2ZsYWcgewo+Pj4+Pj4gKwltZGZfcGZuX3QgcGZuOwo+Pj4+Pj4g KwljaGFyIHplcm87Cj4+Pj4+PiArCWNoYXIgcmVhZHk7Cj4+Pj4+PiArCXNob3J0IGluZGV4Owo+ Pj4+Pj4gKwlzdHJ1Y3QgcGFnZV9mbGFnICpuZXh0Owo+Pj4+Pj4gK307Cj4+Pj4+PiArCj4+Pj4+ PiAgIHN0cnVjdCBwYWdlX2RhdGEKPj4+Pj4+ICAgewo+Pj4+Pj4gLQltZGZfcGZuX3QgcGZuOwo+ Pj4+Pj4gLQlpbnQgZHVtcGFibGU7Cj4+Pj4+PiAtCWludCB6ZXJvOwo+Pj4+Pj4gLQl1bnNpZ25l ZCBpbnQgZmxhZ3M7Cj4+Pj4+PiAgIAlsb25nIHNpemU7Cj4+Pj4+PiAgIAl1bnNpZ25lZCBjaGFy ICpidWY7Cj4+Pj4+PiAtCXB0aHJlYWRfbXV0ZXhfdCBtdXRleDsKPj4+Pj4+IC0JLyoKPj4+Pj4+ IC0JICogd2hldGhlciB0aGUgcGFnZV9kYXRhIGlzIHJlYWR5IHRvIGJlIGNvbnN1bWVkCj4+Pj4+ PiAtCSAqLwo+Pj4+Pj4gLQlpbnQgcmVhZHk7Cj4+Pj4+PiArCWludCBmbGFnczsKPj4+Pj4+ICsJ aW50IHVzZWQ7Cj4+Pj4+PiAgIH07Cj4+Pj4+Pgo+Pj4+Pj4gICBzdHJ1Y3QgdGhyZWFkX2FyZ3Mg ewo+Pj4+Pj4gICAJaW50IHRocmVhZF9udW07Cj4+Pj4+PiAgIAl1bnNpZ25lZCBsb25nIGxlbl9i dWZfb3V0Owo+Pj4+Pj4gLQltZGZfcGZuX3Qgc3RhcnRfcGZuLCBlbmRfcGZuOwo+Pj4+Pj4gLQlp bnQgcGFnZV9kYXRhX251bTsKPj4+Pj4+ICAgCXN0cnVjdCBjeWNsZSAqY3ljbGU7Cj4+Pj4+PiAg IAlzdHJ1Y3QgcGFnZV9kYXRhICpwYWdlX2RhdGFfYnVmOwo+Pj4+Pj4gKwlzdHJ1Y3QgcGFnZV9m bGFnICpwYWdlX2ZsYWdfYnVmOwo+Pj4+Pj4gICB9Owo+Pj4+Pj4KPj4+Pj4+ICAgLyoKPj4+Pj4+ IEBAIC0xMjk1LDExICsxMzAxLDEyIEBAIHN0cnVjdCBEdW1wSW5mbyB7Cj4+Pj4+PiAgIAlwdGhy ZWFkX3QgKip0aHJlYWRzOwo+Pj4+Pj4gICAJc3RydWN0IHRocmVhZF9hcmdzICprZHVtcF90aHJl YWRfYXJnczsKPj4+Pj4+ICAgCXN0cnVjdCBwYWdlX2RhdGEgKnBhZ2VfZGF0YV9idWY7Cj4+Pj4+ PiArCXN0cnVjdCBwYWdlX2ZsYWcgKipwYWdlX2ZsYWdfYnVmOwo+Pj4+Pj4gKwlzZW1fdCBwYWdl X2ZsYWdfYnVmX3NlbTsKPj4+Pj4+ICAgCXB0aHJlYWRfcndsb2NrX3QgdXNlbW1hcF9yd2xvY2s7 Cj4+Pj4+PiAgIAltZGZfcGZuX3QgY3VycmVudF9wZm47Cj4+Pj4+PiAgIAlwdGhyZWFkX211dGV4 X3QgY3VycmVudF9wZm5fbXV0ZXg7Cj4+Pj4+PiAtCW1kZl9wZm5fdCBjb25zdW1lZF9wZm47Cj4+ Pj4+PiAtCXB0aHJlYWRfbXV0ZXhfdCBjb25zdW1lZF9wZm5fbXV0ZXg7Cj4+Pj4+PiArCXB0aHJl YWRfbXV0ZXhfdCBwYWdlX2RhdGFfbXV0ZXg7Cj4+Pj4+PiAgIAlwdGhyZWFkX211dGV4X3QgZmls dGVyX211dGV4Owo+Pj4+Pj4gICB9Owo+Pj4+Pj4gICBleHRlcm4gc3RydWN0IER1bXBJbmZvCQkq aW5mbzsKPj4+Pj4+IC0tCj4+Pj4+PiAxLjguMy4xCj4+Pj4+Pgo+Pj4+Pj4KPj4+Pj4+Cj4+Pj4+ Pgo+Pj4+Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K Pj4+Pj4+IGtleGVjIG1haWxpbmcgbGlzdAo+Pj4+Pj4ga2V4ZWNAbGlzdHMuaW5mcmFkZWFkLm9y Zwo+Pj4+Pj4gaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9rZXhl Ywo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4KPj4+PiAgRnJvbSAxZDdhZDVkYmJjMjllZmU1ODE3MWIxMDIz YWIwZGYwOWViMjgxNWJmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQo+Pj4+IEZyb206IFpob3Ug V2VuamlhbiA8emhvdXdqLWZuc3RAY24uZnVqaXRzdS5jb20+Cj4+Pj4gRGF0ZTogRnJpLCAxOCBN YXIgMjAxNiAxMDozNTozNSArMDgwMAo+Pj4+IFN1YmplY3Q6IFtQQVRDSF0gaW5jcmVtZW50Cj4+ Pj4KPj4+PiAtLS0KPj4+PiAgIG1ha2VkdW1wZmlsZS5jIHwgMTA3ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQo+Pj4+ICAgbWFrZWR1bXBm aWxlLmggfCAgMTIgKysrKystLQo+Pj4+ICAgMiBmaWxlcyBjaGFuZ2VkLCA4OSBpbnNlcnRpb25z KCspLCAzMCBkZWxldGlvbnMoLSkKPj4+Pgo+Pj4+IGRpZmYgLS1naXQgYS9tYWtlZHVtcGZpbGUu YyBiL21ha2VkdW1wZmlsZS5jCj4+Pj4gaW5kZXggMmIwODY0YS4uYTMwNGE2MSAxMDA2NDQKPj4+ PiAtLS0gYS9tYWtlZHVtcGZpbGUuYwo+Pj4+ICsrKyBiL21ha2VkdW1wZmlsZS5jCj4+Pj4gQEAg LTM0NzcsNiArMzQ3Nyw0MiBAQCBjYWxpYnJhdGVfbWFjaGRlcF9pbmZvKHZvaWQpCj4+Pj4gICB9 Cj4+Pj4KPj4+PiAgIGludAo+Pj4+ICtpbml0aWFsX3BhcmFsbGVsX2FyZWEoaW50IHBhZ2VfZGF0 YV9idWZfc2l6ZSkKPj4+PiArewo+Pj4+ICsJaW50IGksIGo7Cj4+Pj4gKwlzdHJ1Y3QgcGFnZV9m bGFnICpjdXJyZW50Owo+Pj4+ICsJaW5mby0+cGFnZV9kYXRhX2J1ZiA9IGluZm8tPnBhcmFsbGVs X2FyZWE7Cj4+Pj4gKwl2b2lkICpwYWdlX2RhdGFfYnVmID0gaW5mby0+cGFyYWxsZWxfYXJlYSAr IHNpemVvZihzdHJ1Y3QgcGFnZV9kYXRhKSAqIGluZm8tPm51bV9idWZmZXJzOwo+Pj4+ICsJdm9p ZCAqcGFnZV9mbGFnX2xpc3QgPSBwYWdlX2RhdGFfYnVmICsgcGFnZV9kYXRhX2J1Zl9zaXplICog aW5mby0+bnVtX2J1ZmZlcnM7Cj4+Pj4gKwo+Pj4+ICsJZm9yIChpID0gMDsgaSA8IGluZm8tPm51 bV9idWZmZXJzOyBpKyspIHsKPj4+PiArCQlpbmZvLT5wYWdlX2RhdGFfYnVmW2ldLmJ1ZiA9IHBh Z2VfZGF0YV9idWYgKyBwYWdlX2RhdGFfYnVmX3NpemUgKiBpOwo+Pj4+ICsJfQo+Pj4+ICsKPj4+ PiArCj4+Pj4gKwlpZiAoKGluZm8tPnBhZ2VfZmxhZ19saXN0ID0gbWFsbG9jKHNpemVvZihzdHJ1 Y3QgcGFnZV9mbGFnX2xpc3QpICogaW5mby0+bnVtX3RocmVhZHMpKQo+Pj4+ICsJICAgID09IE5V TEwpIHsKPj4+PiArCQlNU0coIkNhbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgcGFnZV9mbGFnX2J1 Zi4gJXNcbiIsCj4+Pj4gKwkJCQlzdHJlcnJvcihlcnJubykpOwo+Pj4+ICsJCXJldHVybiBGQUxT RTsKPj4+PiArCX0KPj4+PiArCj4+Pj4gKwlmb3IgKGkgPSAwOyBpIDwgaW5mby0+bnVtX3RocmVh ZHM7IGkrKykgewo+Pj4+ICsJCWluZm8tPnBhZ2VfZmxhZ19saXN0W2ldLmhlYWRlciA9IHBhZ2Vf ZmxhZ19saXN0ICsgc2l6ZW9mKHN0cnVjdCBwYWdlX2ZsYWcpICogaW5mby0+bnVtX2J1ZmZlcnMg KiBpOwo+Pj4+ICsJCWluZm8tPnBhZ2VfZmxhZ19saXN0W2ldLmN1cnJlbnQgPSAwOwo+Pj4+ICsJ LyoJCj4+Pj4gKwkJY3VycmVudCA9IGluZm8tPnBhZ2VfZmxhZ19idWZbaV07Cj4+Pj4gKwkJZm9y IChqID0gMTsgaiA8IGluZm8tPm51bV9idWZmZXJzOyBqKyspIHsKPj4+PiArCQkJY3VycmVudC0+ bmV4dCA9IGN1cnJlbnQgKyBzaXplb2Yoc3RydWN0IHBhZ2VfZmxhZyk7Cj4+Pj4gKwkJCWN1cnJl bnQgPSBjdXJyZW50LT5uZXh0Owo+Pj4+ICsJCX0KPj4+PiArCQljdXJyZW50LT5uZXh0ID0gaW5m by0+cGFnZV9mbGFnX2J1ZltpXTsKPj4+PiArKi8KPj4+PiArCX0KPj4+PiArCj4+Pj4gK30KPj4+ PiArCj4+Pj4gK2ludAo+Pj4+ICAgaW5pdGlhbF9mb3JfcGFyYWxsZWwoKQo+Pj4+ICAgewo+Pj4+ ICAgCXVuc2lnbmVkIGxvbmcgbGVuX2J1Zl9vdXQ7Cj4+Pj4gQEAgLTM1NzUsOSArMzYxMSwxNSBA QCBpbml0aWFsX2Zvcl9wYXJhbGxlbCgpCj4+Pj4gICAJREVCVUdfTVNHKCJOdW1iZXIgb2Ygc3Ry dWN0IHBhZ2VfZGF0YSBmb3IgcHJvZHVjZS9jb25zdW1lOiAlZFxuIiwKPj4+PiAgIAkJCWluZm8t Pm51bV9idWZmZXJzKTsKPj4+Pgo+Pj4+IC0JLyoKPj4+PiAtCSAqIGFsbG9jYXRlIG1lbW9yeSBm b3IgcGFnZV9kYXRhCj4+Pj4gLQkgKi8KPj4+PiArCWlmICgoaW5mby0+cGFyYWxsZWxfYXJlYSA9 IGNhbGxvYyhpbmZvLT5udW1fYnVmZmVycywgc2l6ZW9mKHN0cnVjdCBwYWdlX2RhdGEpK3BhZ2Vf ZGF0YV9idWZfc2l6ZSArIHNpemVvZihzdHJ1Y3QgcGFnZV9mbGFnKSppbmZvLT5udW1fdGhyZWFk cykpCj4+Pj4gKwkJPT1OVUxMKSB7Cj4+Pj4gKwkJTVNHKCJDYW4ndCBhbGxvY2F0ZSBtZW1vcnkg Zm9yIHBhZ2VfZGF0YV9idWYuICVzXG4iLAo+Pj4+ICsJCQkJc3RyZXJyb3IoZXJybm8pKTsKPj4+ PiArCQlyZXR1cm4gRkFMU0U7Cj4+Pj4gKwl9Cj4+Pj4gKwo+Pj4+ICsJaW5pdGlhbF9wYXJhbGxl bF9hcmVhKHBhZ2VfZGF0YV9idWZfc2l6ZSk7Cj4+Pj4gKy8qCj4+Pj4gICAJaWYgKChpbmZvLT5w YWdlX2RhdGFfYnVmID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgcGFnZV9kYXRhKSAqIGluZm8tPm51 bV9idWZmZXJzKSkKPj4+PiAgIAkgICAgPT0gTlVMTCkgewo+Pj4+ICAgCQlNU0coIkNhbid0IGFs bG9jYXRlIG1lbW9yeSBmb3IgcGFnZV9kYXRhX2J1Zi4gJXNcbiIsCj4+Pj4gQEAgLTM1OTQsOSAr MzYzNiw2IEBAIGluaXRpYWxfZm9yX3BhcmFsbGVsKCkKPj4+PiAgIAkJfQo+Pj4+ICAgCX0KPj4+ Pgo+Pj4+IC0JLyoKPj4+PiAtCSAqIGluaXRpYWwgcGFnZV9mbGFnIGZvciBlYWNoIHRocmVhZAo+ Pj4+IC0JICovCj4+Pj4gICAJaWYgKChpbmZvLT5wYWdlX2ZsYWdfYnVmID0gbWFsbG9jKHNpemVv Zih2b2lkICopICogaW5mby0+bnVtX3RocmVhZHMpKQo+Pj4+ICAgCSAgICA9PSBOVUxMKSB7Cj4+ Pj4gICAJCU1TRygiQ2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBwYWdlX2ZsYWdfYnVmLiAlc1xu IiwKPj4+PiBAQCAtMzYyMyw3ICszNjYyLDcgQEAgaW5pdGlhbF9mb3JfcGFyYWxsZWwoKQo+Pj4+ ICAgCQl9Cj4+Pj4gICAJCWN1cnJlbnQtPm5leHQgPSBpbmZvLT5wYWdlX2ZsYWdfYnVmW2ldOwo+ Pj4+ICAgCX0KPj4+PiAtCj4+Pj4gKyovCj4+Pj4gICAJLyoKPj4+PiAgIAkgKiBpbml0aWFsIGZk X21lbW9yeSBmb3IgdGhyZWFkcwo+Pj4+ICAgCSAqLwo+Pj4+IEBAIC0zNjg1LDYgKzM3MjQsMTUg QEAgZnJlZV9mb3JfcGFyYWxsZWwoKQo+Pj4+ICAgCWlmIChpbmZvLT5rZHVtcF90aHJlYWRfYXJn cyAhPSBOVUxMKQo+Pj4+ICAgCQlmcmVlKGluZm8tPmtkdW1wX3RocmVhZF9hcmdzKTsKPj4+Pgo+ Pj4+ICsJaWYgKGluZm8tPnBhZ2VfZmxhZ19saXN0ICE9IE5VTEwpIHsKPj4+PiArCQlmcmVlKGlu Zm8tPnBhZ2VfZmxhZ19saXN0KTsKPj4+PiArCX0KPj4+PiArCj4+Pj4gKwlpZiAoaW5mby0+cGFy YWxsZWxfYXJlYSAhPSBOVUxMKSB7Cj4+Pj4gKwkJZnJlZShpbmZvLT5wYXJhbGxlbF9hcmVhKTsK Pj4+PiArCX0KPj4+PiArCj4+Pj4gKy8qCj4+Pj4gICAJaWYgKGluZm8tPnBhZ2VfZGF0YV9idWYg IT0gTlVMTCkgewo+Pj4+ICAgCQlmb3IgKGkgPSAwOyBpIDwgaW5mby0+bnVtX2J1ZmZlcnM7IGkr Kykgewo+Pj4+ICAgCQkJaWYgKGluZm8tPnBhZ2VfZGF0YV9idWZbaV0uYnVmICE9IE5VTEwpCj4+ Pj4gQEAgLTM3MDUsNyArMzc1Myw3IEBAIGZyZWVfZm9yX3BhcmFsbGVsKCkKPj4+PiAgIAkJfQo+ Pj4+ICAgCQlmcmVlKGluZm8tPnBhZ2VfZmxhZ19idWYpOwo+Pj4+ICAgCX0KPj4+PiAtCj4+Pj4g KyovCj4+Pj4gICAJaWYgKGluZm8tPnBhcmFsbGVsX2luZm8gPT0gTlVMTCkKPj4+PiAgIAkJcmV0 dXJuOwo+Pj4+Cj4+Pj4gQEAgLTcxMjIsMTIgKzcxNzAsMTQgQEAgaW50IGZpbmFsaXplX3psaWIo el9zdHJlYW0gKnN0cmVhbSkKPj4+PiAgIAlyZXR1cm4gZXJyOwo+Pj4+ICAgfQo+Pj4+Cj4+Pj4g KyNkZWZpbmUgQ1VSUkVOVF9GTEFHIHBhZ2VfZmxhZ19oZWFkZXJbY3VycmVudF9wYWdlX2ZsYWdd Cj4+Pj4gICB2b2lkICoKPj4+PiAgIGtkdW1wX3RocmVhZF9mdW5jdGlvbl9jeWNsaWModm9pZCAq YXJnKSB7Cj4+Pj4gICAJdm9pZCAqcmV0dmFsID0gUFRIUkVBRF9GQUlMOwo+Pj4+ICAgCXN0cnVj dCB0aHJlYWRfYXJncyAqa2R1bXBfdGhyZWFkX2FyZ3MgPSAoc3RydWN0IHRocmVhZF9hcmdzICop YXJnOwo+Pj4+ICAgCXZvbGF0aWxlIHN0cnVjdCBwYWdlX2RhdGEgKnBhZ2VfZGF0YV9idWYgPSBr ZHVtcF90aHJlYWRfYXJncy0+cGFnZV9kYXRhX2J1ZjsKPj4+PiAtCXZvbGF0aWxlIHN0cnVjdCBw YWdlX2ZsYWcgKnBhZ2VfZmxhZ19idWYgPSBrZHVtcF90aHJlYWRfYXJncy0+cGFnZV9mbGFnX2J1 ZjsKPj4+PiArCXN0cnVjdCBwYWdlX2ZsYWcgKnBhZ2VfZmxhZ19oZWFkZXIgPSBrZHVtcF90aHJl YWRfYXJncy0+cGFnZV9mbGFnX2xpc3QtPmhlYWRlcjsKPj4+PiArCWludCBjdXJyZW50X3BhZ2Vf ZmxhZyA9IGtkdW1wX3RocmVhZF9hcmdzLT5wYWdlX2ZsYWdfbGlzdC0+Y3VycmVudDsKPj4+PiAg IAlzdHJ1Y3QgY3ljbGUgKmN5Y2xlID0ga2R1bXBfdGhyZWFkX2FyZ3MtPmN5Y2xlOwo+Pj4+ICAg CW1kZl9wZm5fdCBwZm4gPSBjeWNsZS0+c3RhcnRfcGZuOwo+Pj4+ICAgCWludCBpbmRleCA9IGtk dW1wX3RocmVhZF9hcmdzLT50aHJlYWRfbnVtOwo+Pj4+IEBAIC03MTkzLDcgKzcyNDMsNyBAQCBr ZHVtcF90aHJlYWRfZnVuY3Rpb25fY3ljbGljKHZvaWQgKmFyZykgewo+Pj4+Cj4+Pj4gICAJCXdo aWxlIChidWZfcmVhZHkgPT0gRkFMU0UpIHsKPj4+PiAgIAkJCXB0aHJlYWRfdGVzdGNhbmNlbCgp Owo+Pj4+IC0JCQlpZiAocGFnZV9mbGFnX2J1Zi0+cmVhZHkgPT0gRkxBR19SRUFEWSkKPj4+PiAr CQkJaWYgKENVUlJFTlRfRkxBRy5yZWFkeSA9PSBGTEFHX1JFQURZKQo+Pj4+ICAgCQkJCWNvbnRp bnVlOwo+Pj4+Cj4+Pj4gICAJCQkvKiBnZXQgbmV4dCBkdW1wYWJsZSBwZm4gKi8KPj4+PiBAQCAt NzIwOCw4ICs3MjU4LDggQEAga2R1bXBfdGhyZWFkX2Z1bmN0aW9uX2N5Y2xpYyh2b2lkICphcmcp IHsKPj4+PiAgIAkJCX0KPj4+PiAgIAkJCWluZm8tPmN1cnJlbnRfcGZuID0gcGZuICsgMTsKPj4+ Pgo+Pj4+IC0JCQlwYWdlX2ZsYWdfYnVmLT5wZm4gPSBwZm47Cj4+Pj4gLQkJCXBhZ2VfZmxhZ19i dWYtPnJlYWR5ID0gRkxBR19GSUxMSU5HOwo+Pj4+ICsJCQlDVVJSRU5UX0ZMQUcucGZuID0gcGZu Owo+Pj4+ICsJCQlDVVJSRU5UX0ZMQUcucmVhZHkgPSBGTEFHX0ZJTExJTkc7Cj4+Pj4gICAJCQlw dGhyZWFkX211dGV4X3VubG9jaygmaW5mby0+Y3VycmVudF9wZm5fbXV0ZXgpOwo+Pj4+ICAgCQkJ c2VtX3Bvc3QoJmluZm8tPnBhZ2VfZmxhZ19idWZfc2VtKTsKPj4+Pgo+Pj4+IEBAIC03MjMwLDEx ICs3MjgwLDExIEBAIGtkdW1wX3RocmVhZF9mdW5jdGlvbl9jeWNsaWModm9pZCAqYXJnKSB7Cj4+ Pj4KPj4+PiAgIAkJCWlmICgoaW5mby0+ZHVtcF9sZXZlbCAmIERMX0VYQ0xVREVfWkVSTykKPj4+ PiAgIAkJCSAgICAmJiBpc196ZXJvX3BhZ2UoYnVmLCBpbmZvLT5wYWdlX3NpemUpKSB7Cj4+Pj4g LQkJCQlwYWdlX2ZsYWdfYnVmLT56ZXJvID0gVFJVRTsKPj4+PiArCQkJCUNVUlJFTlRfRkxBRy56 ZXJvID0gVFJVRTsKPj4+PiAgIAkJCQlnb3RvIG5leHQ7Cj4+Pj4gICAJCQl9Cj4+Pj4KPj4+PiAt CQkJcGFnZV9mbGFnX2J1Zi0+emVybyA9IEZBTFNFOwo+Pj4+ICsJCQlDVVJSRU5UX0ZMQUcuemVy byA9IEZBTFNFOwo+Pj4+Cj4+Pj4gICAJCQkvKgo+Pj4+ICAgCQkJICogQ29tcHJlc3MgdGhlIHBh Z2UgZGF0YS4KPj4+PiBAQCAtNzI4NSwxMSArNzMzNSwxMSBAQCBrZHVtcF90aHJlYWRfZnVuY3Rp b25fY3ljbGljKHZvaWQgKmFyZykgewo+Pj4+ICAgCQkJCXBhZ2VfZGF0YV9idWZbaW5kZXhdLnNp emUgID0gaW5mby0+cGFnZV9zaXplOwo+Pj4+ICAgCQkJCW1lbWNweShwYWdlX2RhdGFfYnVmW2lu ZGV4XS5idWYsIGJ1ZiwgaW5mby0+cGFnZV9zaXplKTsKPj4+PiAgIAkJCX0KPj4+PiAtCQkJcGFn ZV9mbGFnX2J1Zi0+aW5kZXggPSBpbmRleDsKPj4+PiArCQkJQ1VSUkVOVF9GTEFHLmluZGV4ID0g aW5kZXg7Cj4+Pj4gICAJCQlidWZfcmVhZHkgPSBUUlVFOwo+Pj4+ICAgbmV4dDoKPj4+PiAtCQkJ cGFnZV9mbGFnX2J1Zi0+cmVhZHkgPSBGTEFHX1JFQURZOwo+Pj4+IC0JCQlwYWdlX2ZsYWdfYnVm ID0gcGFnZV9mbGFnX2J1Zi0+bmV4dDsKPj4+PiArCQkJQ1VSUkVOVF9GTEFHLnJlYWR5ID0gRkxB R19SRUFEWTsKPj4+PiArCQkJY3VycmVudF9wYWdlX2ZsYWcgPSAoY3VycmVudF9wYWdlX2ZsYWcg KyAxKSAlIGluZm8tPm51bV9idWZmZXJzOwo+Pj4+Cj4+Pj4gICAJCX0KPj4+PiAgIAl9Cj4+Pj4g QEAgLTczMDYsNiArNzM1Niw4IEBAIGZhaWw6Cj4+Pj4gICAJcHRocmVhZF9leGl0KHJldHZhbCk7 Cj4+Pj4gICB9Cj4+Pj4KPj4+PiArI2RlZmluZSBDVVJSRU5UX1BBR0VfRkxBRyhpKSAoaW5mby0+ cGFnZV9mbGFnX2xpc3RbaV0uaGVhZGVyKVtpbmZvLT5wYWdlX2ZsYWdfbGlzdFtpXS5jdXJyZW50 XQo+Pj4+ICsKPj4+PiAgIGludAo+Pj4+ICAgd3JpdGVfa2R1bXBfcGFnZXNfcGFyYWxsZWxfY3lj bGljKHN0cnVjdCBjYWNoZV9kYXRhICpjZF9oZWFkZXIsCj4+Pj4gICAJCQkJICBzdHJ1Y3QgY2Fj aGVfZGF0YSAqY2RfcGFnZSwKPj4+PiBAQCAtNzM3OSw3ICs3NDMxLDcgQEAgd3JpdGVfa2R1bXBf cGFnZXNfcGFyYWxsZWxfY3ljbGljKHN0cnVjdCBjYWNoZV9kYXRhICpjZF9oZWFkZXIsCj4+Pj4g ICAJCWtkdW1wX3RocmVhZF9hcmdzW2ldLnRocmVhZF9udW0gPSBpOwo+Pj4+ICAgCQlrZHVtcF90 aHJlYWRfYXJnc1tpXS5sZW5fYnVmX291dCA9IGxlbl9idWZfb3V0Owo+Pj4+ICAgCQlrZHVtcF90 aHJlYWRfYXJnc1tpXS5wYWdlX2RhdGFfYnVmID0gcGFnZV9kYXRhX2J1ZjsKPj4+PiAtCQlrZHVt cF90aHJlYWRfYXJnc1tpXS5wYWdlX2ZsYWdfYnVmID0gaW5mby0+cGFnZV9mbGFnX2J1ZltpXTsK Pj4+PiArCQlrZHVtcF90aHJlYWRfYXJnc1tpXS5wYWdlX2ZsYWdfbGlzdCA9ICYoaW5mby0+cGFn ZV9mbGFnX2xpc3RbaV0pOwo+Pj4+ICAgCQlrZHVtcF90aHJlYWRfYXJnc1tpXS5jeWNsZSA9IGN5 Y2xlOwo+Pj4+Cj4+Pj4gICAJCXJlcyA9IHB0aHJlYWRfY3JlYXRlKHRocmVhZHNbaV0sIE5VTEws Cj4+Pj4gQEAgLTc0MTgsMTUgKzc0NzAsMTUgQEAgd3JpdGVfa2R1bXBfcGFnZXNfcGFyYWxsZWxf Y3ljbGljKHN0cnVjdCBjYWNoZV9kYXRhICpjZF9oZWFkZXIsCj4+Pj4gICAJCQkgKiBjdXJyZW50 X3BmbiBpcyB1c2VkIGZvciByZWNvcmRpbmcgdGhlIHZhbHVlIG9mIHBmbiB3aGVuIGNoZWNraW5n IHRoZSBwZm4uCj4+Pj4gICAJCQkgKi8KPj4+PiAgIAkJCWZvciAoaSA9IDA7IGkgPCBpbmZvLT5u dW1fdGhyZWFkczsgaSsrKSB7Cj4+Pj4gLQkJCQlpZiAoaW5mby0+cGFnZV9mbGFnX2J1ZltpXS0+ cmVhZHkgPT0gRkxBR19VTlVTRUQpCj4+Pj4gKwkJCQlpZiAoQ1VSUkVOVF9QQUdFX0ZMQUcoaSku cmVhZHkgPT0gRkxBR19VTlVTRUQpCj4+Pj4gICAJCQkJCWNvbnRpbnVlOwo+Pj4+IC0JCQkJdGVt cF9wZm4gPSBpbmZvLT5wYWdlX2ZsYWdfYnVmW2ldLT5wZm47Cj4+Pj4gKwkJCQl0ZW1wX3BmbiA9 IENVUlJFTlRfUEFHRV9GTEFHKGkpLnBmbjsKPj4+Pgo+Pj4+ICAgCQkJCS8qCj4+Pj4gICAJCQkJ ICogY291bnQgaG93IG1hbnkgdGhyZWFkcyBoYXZlIHJlYWNoZWQgdGhlIGVuZC4KPj4+PiAgIAkJ CQkgKi8KPj4+PiAgIAkJCQlpZiAodGVtcF9wZm4gPj0gZW5kX3Bmbikgewo+Pj4+IC0JCQkJCWlu Zm8tPnBhZ2VfZmxhZ19idWZbaV0tPnJlYWR5ID0gRkxBR19VTlVTRUQ7Cj4+Pj4gKwkJCQkJQ1VS UkVOVF9QQUdFX0ZMQUcoaSkucmVhZHkgPSBGTEFHX1VOVVNFRDsKPj4+PiAgIAkJCQkJZW5kX2Nv dW50Kys7Cj4+Pj4gICAJCQkJCWNvbnRpbnVlOwo+Pj4+ICAgCQkJCX0KPj4+PiBAQCAtNzQ0OSw3 ICs3NTAxLDcgQEAgd3JpdGVfa2R1bXBfcGFnZXNfcGFyYWxsZWxfY3ljbGljKHN0cnVjdCBjYWNo ZV9kYXRhICpjZF9oZWFkZXIsCj4+Pj4gICAJCQkgKiBJZiB0aGUgcGFnZV9mbGFnX2J1ZiBpcyBu b3QgcmVhZHksIHRoZSBwZm4gcmVjb3JkZWQgbWF5IGJlIGNoYW5nZWQuCj4+Pj4gICAJCQkgKiBT byB3ZSBzaG91bGQgcmVjaGVjay4KPj4+PiAgIAkJCSAqLwo+Pj4+IC0JCQlpZiAoaW5mby0+cGFn ZV9mbGFnX2J1Zltjb25zdW1pbmddLT5yZWFkeSAhPSBGTEFHX1JFQURZKSB7Cj4+Pj4gKwkJCWlm IChDVVJSRU5UX1BBR0VfRkxBRyhjb25zdW1pbmcpLnJlYWR5ICE9IEZMQUdfUkVBRFkpIHsKPj4+ PiAgIAkJCQlnZXR0aW1lb2ZkYXkoJm5ldywgTlVMTCk7Cj4+Pj4gICAJCQkJaWYgKG5ldy50dl9z ZWMgLSBsYXN0LnR2X3NlYyA+IFdBSVRfVElNRSkgewo+Pj4+ICAgCQkJCQlFUlJNU0coIkNhbid0 IGdldCBkYXRhIG9mIHBmbi5cbiIpOwo+Pj4+IEBAIC03NDU4LDcgKzc1MTAsNyBAQCB3cml0ZV9r ZHVtcF9wYWdlc19wYXJhbGxlbF9jeWNsaWMoc3RydWN0IGNhY2hlX2RhdGEgKmNkX2hlYWRlciwK Pj4+PiAgIAkJCQljb250aW51ZTsKPj4+PiAgIAkJCX0KPj4+Pgo+Pj4+IC0JCQlpZiAoY3VycmVu dF9wZm4gPT0gaW5mby0+cGFnZV9mbGFnX2J1Zltjb25zdW1pbmddLT5wZm4pCj4+Pj4gKwkJCWlm IChjdXJyZW50X3BmbiA9PSBDVVJSRU5UX1BBR0VfRkxBRyhjb25zdW1pbmcpLnBmbikKPj4+PiAg IAkJCQlicmVhazsKPj4+PiAgIAkJfQo+Pj4+Cj4+Pj4gQEAgLTc0NjgsMTIgKzc1MjAsMTIgQEAg d3JpdGVfa2R1bXBfcGFnZXNfcGFyYWxsZWxfY3ljbGljKHN0cnVjdCBjYWNoZV9kYXRhICpjZF9o ZWFkZXIsCj4+Pj4gICAJCW51bV9kdW1wZWQrKzsKPj4+Pgo+Pj4+Cj4+Pj4gLQkJaWYgKGluZm8t PnBhZ2VfZmxhZ19idWZbY29uc3VtaW5nXS0+emVybyA9PSBUUlVFKSB7Cj4+Pj4gKwkJaWYgKENV UlJFTlRfUEFHRV9GTEFHKGNvbnN1bWluZykuemVybyA9PSBUUlVFKSB7Cj4+Pj4gICAJCQlpZiAo IXdyaXRlX2NhY2hlKGNkX2hlYWRlciwgcGRfemVybywgc2l6ZW9mKHBhZ2VfZGVzY190KSkpCj4+ Pj4gICAJCQkJZ290byBvdXQ7Cj4+Pj4gICAJCQlwZm5femVybysrOwo+Pj4+ICAgCQl9IGVsc2Ug ewo+Pj4+IC0JCQlpbmRleCA9IGluZm8tPnBhZ2VfZmxhZ19idWZbY29uc3VtaW5nXS0+aW5kZXg7 Cj4+Pj4gKwkJCWluZGV4ID0gQ1VSUkVOVF9QQUdFX0ZMQUcoY29uc3VtaW5nKS5pbmRleDsKPj4+ PiAgIAkJCXBkLmZsYWdzICAgICAgPSBwYWdlX2RhdGFfYnVmW2luZGV4XS5mbGFnczsKPj4+PiAg IAkJCXBkLnNpemUgICAgICAgPSBwYWdlX2RhdGFfYnVmW2luZGV4XS5zaXplOwo+Pj4+ICAgCQkJ cGQucGFnZV9mbGFncyA9IDA7Cj4+Pj4gQEAgLTc0OTEsOCArNzU0Myw5IEBAIHdyaXRlX2tkdW1w X3BhZ2VzX3BhcmFsbGVsX2N5Y2xpYyhzdHJ1Y3QgY2FjaGVfZGF0YSAqY2RfaGVhZGVyLAo+Pj4+ ICAgCQkJCWdvdG8gb3V0Owo+Pj4+ICAgCQkJcGFnZV9kYXRhX2J1ZltpbmRleF0udXNlZCA9IEZB TFNFOwo+Pj4+ICAgCQl9Cj4+Pj4gLQkJaW5mby0+cGFnZV9mbGFnX2J1Zltjb25zdW1pbmddLT5y ZWFkeSA9IEZMQUdfVU5VU0VEOwo+Pj4+IC0JCWluZm8tPnBhZ2VfZmxhZ19idWZbY29uc3VtaW5n XSA9IGluZm8tPnBhZ2VfZmxhZ19idWZbY29uc3VtaW5nXS0+bmV4dDsKPj4+PiArCQlDVVJSRU5U X1BBR0VfRkxBRyhjb25zdW1pbmcpLnJlYWR5ID0gRkxBR19VTlVTRUQ7Cj4+Pj4gKwkJaW5mby0+ cGFnZV9mbGFnX2xpc3RbY29uc3VtaW5nXS5jdXJyZW50ICs9IDE7Cj4+Pj4gKwkJaW5mby0+cGFn ZV9mbGFnX2xpc3RbY29uc3VtaW5nXS5jdXJyZW50ICU9IGluZm8tPm51bV9idWZmZXJzOwo+Pj4+ ICAgCX0KPj4+PiAgIGZpbmlzaDoKPj4+PiAgIAlyZXQgPSBUUlVFOwo+Pj4+IGRpZmYgLS1naXQg YS9tYWtlZHVtcGZpbGUuaCBiL21ha2VkdW1wZmlsZS5oCj4+Pj4gaW5kZXggNGIzMTVjMC4uOGM0 YmMxYSAxMDA2NDQKPj4+PiAtLS0gYS9tYWtlZHVtcGZpbGUuaAo+Pj4+ICsrKyBiL21ha2VkdW1w ZmlsZS5oCj4+Pj4gQEAgLTk5Niw3ICs5OTYsMTIgQEAgc3RydWN0IHBhZ2VfZmxhZyB7Cj4+Pj4g ICAJY2hhciB6ZXJvOwo+Pj4+ICAgCWNoYXIgcmVhZHk7Cj4+Pj4gICAJc2hvcnQgaW5kZXg7Cj4+ Pj4gLQlzdHJ1Y3QgcGFnZV9mbGFnICpuZXh0Owo+Pj4+ICsvLwlzdHJ1Y3QgcGFnZV9mbGFnICpu ZXh0Owo+Pj4+ICt9Owo+Pj4+ICsKPj4+PiArc3RydWN0IHBhZ2VfZmxhZ19saXN0IHsKPj4+PiAr CXN0cnVjdCBwYWdlX2ZsYWcgKmhlYWRlcjsKPj4+PiArCWludCBjdXJyZW50Owo+Pj4+ICAgfTsK Pj4+Pgo+Pj4+ICAgc3RydWN0IHBhZ2VfZGF0YQo+Pj4+IEBAIC0xMDEyLDcgKzEwMTcsNyBAQCBz dHJ1Y3QgdGhyZWFkX2FyZ3Mgewo+Pj4+ICAgCXVuc2lnbmVkIGxvbmcgbGVuX2J1Zl9vdXQ7Cj4+ Pj4gICAJc3RydWN0IGN5Y2xlICpjeWNsZTsKPj4+PiAgIAlzdHJ1Y3QgcGFnZV9kYXRhICpwYWdl X2RhdGFfYnVmOwo+Pj4+IC0Jc3RydWN0IHBhZ2VfZmxhZyAqcGFnZV9mbGFnX2J1ZjsKPj4+PiAr CXN0cnVjdCBwYWdlX2ZsYWdfbGlzdCAqcGFnZV9mbGFnX2xpc3Q7Cj4+Pj4gICB9Owo+Pj4+Cj4+ Pj4gICAvKgo+Pj4+IEBAIC0xMjk4LDEwICsxMzAzLDExIEBAIHN0cnVjdCBEdW1wSW5mbyB7Cj4+ Pj4gICAJICovCj4+Pj4gICAJaW50IG51bV90aHJlYWRzOwo+Pj4+ICAgCWludCBudW1fYnVmZmVy czsKPj4+PiArCXZvaWQgKnBhcmFsbGVsX2FyZWE7Cj4+Pj4gICAJcHRocmVhZF90ICoqdGhyZWFk czsKPj4+PiAgIAlzdHJ1Y3QgdGhyZWFkX2FyZ3MgKmtkdW1wX3RocmVhZF9hcmdzOwo+Pj4+ICAg CXN0cnVjdCBwYWdlX2RhdGEgKnBhZ2VfZGF0YV9idWY7Cj4+Pj4gLQlzdHJ1Y3QgcGFnZV9mbGFn ICoqcGFnZV9mbGFnX2J1ZjsKPj4+PiArCXN0cnVjdCBwYWdlX2ZsYWdfbGlzdCAqcGFnZV9mbGFn X2xpc3Q7Cj4+Pj4gICAJc2VtX3QgcGFnZV9mbGFnX2J1Zl9zZW07Cj4+Pj4gICAJcHRocmVhZF9y d2xvY2tfdCB1c2VtbWFwX3J3bG9jazsKPj4+PiAgIAltZGZfcGZuX3QgY3VycmVudF9wZm47Cj4+ Pj4gLS0KPj4+PiAxLjguMy4xCj4+Pj4KPj4KPj4KPj4KPgo+PiAgRnJvbSAxZGJmNjhjMjFhMmJi YzdiNDU0YzFhNzQyYzFlM2ZmMDBiYjg1ODI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQo+PiBG cm9tOiBaaG91IFdlbmppYW4gPHpob3V3ai1mbnN0QGNuLmZ1aml0c3UuY29tPgo+PiBEYXRlOiBG cmksIDE4IE1hciAyMDE2IDEzOjM2OjU3ICswODAwCj4+IFN1YmplY3Q6IFtQQVRDSF0gcmVtb3Zl IHNlbQo+Pgo+PiAtLS0KPj4gICBtYWtlZHVtcGZpbGUuYyB8IDggKysrKy0tLS0KPj4gICBtYWtl ZHVtcGZpbGUuaCB8IDQgKystLQo+PiAgIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCsp LCA2IGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvbWFrZWR1bXBmaWxlLmMgYi9tYWtl ZHVtcGZpbGUuYwo+PiBpbmRleCAyYjA4NjRhLi44ZGU1ZTFkIDEwMDY0NAo+PiAtLS0gYS9tYWtl ZHVtcGZpbGUuYwo+PiArKysgYi9tYWtlZHVtcGZpbGUuYwo+PiBAQCAtNzIxMSw3ICs3MjExLDcg QEAga2R1bXBfdGhyZWFkX2Z1bmN0aW9uX2N5Y2xpYyh2b2lkICphcmcpIHsKPj4gICAJCQlwYWdl X2ZsYWdfYnVmLT5wZm4gPSBwZm47Cj4+ICAgCQkJcGFnZV9mbGFnX2J1Zi0+cmVhZHkgPSBGTEFH X0ZJTExJTkc7Cj4+ICAgCQkJcHRocmVhZF9tdXRleF91bmxvY2soJmluZm8tPmN1cnJlbnRfcGZu X211dGV4KTsKPj4gLQkJCXNlbV9wb3N0KCZpbmZvLT5wYWdlX2ZsYWdfYnVmX3NlbSk7Cj4+ICsv LwkJCXNlbV9wb3N0KCZpbmZvLT5wYWdlX2ZsYWdfYnVmX3NlbSk7Cj4+Cj4+ICAgCQkJaWYgKHBm biA+PSBjeWNsZS0+ZW5kX3Bmbikgewo+PiAgIAkJCQlpbmZvLT5jdXJyZW50X3BmbiA9IGN5Y2xl LT5lbmRfcGZuOwo+PiBAQCAtNzM3MCw3ICs3MzcwLDcgQEAgd3JpdGVfa2R1bXBfcGFnZXNfcGFy YWxsZWxfY3ljbGljKHN0cnVjdCBjYWNoZV9kYXRhICpjZF9oZWFkZXIsCj4+ICAgCXBhZ2VfYnVm X251bSA9IGluZm8tPm51bV9idWZmZXJzOwo+PiAgIAlwYWdlX2RhdGFfYnVmID0gaW5mby0+cGFn ZV9kYXRhX2J1ZjsKPj4gICAJcHRocmVhZF9tdXRleF9pbml0KCZpbmZvLT5wYWdlX2RhdGFfbXV0 ZXgsIE5VTEwpOwo+PiAtCXNlbV9pbml0KCZpbmZvLT5wYWdlX2ZsYWdfYnVmX3NlbSwgMCwgMCk7 Cj4+ICsvLwlzZW1faW5pdCgmaW5mby0+cGFnZV9mbGFnX2J1Zl9zZW0sIDAsIDApOwo+Pgo+PiAg IAlmb3IgKGkgPSAwOyBpIDwgcGFnZV9idWZfbnVtOyBpKyspCj4+ICAgCQlwYWdlX2RhdGFfYnVm W2ldLnVzZWQgPSBGQUxTRTsKPj4gQEAgLTc0MDUsNyArNzQwNSw3IEBAIHdyaXRlX2tkdW1wX3Bh Z2VzX3BhcmFsbGVsX2N5Y2xpYyhzdHJ1Y3QgY2FjaGVfZGF0YSAqY2RfaGVhZGVyLAo+PiAgIAkJ ICogVGhlIG1haW4gdGhyZWFkIGlzIHRoZSBjb25zdW1lci4gSXQgd2lsbCBmaW5kIHRoZSBuZXh0 IHBmbiBhbmQgd3JpdGUgaXQgaW50byBmaWxlLgo+PiAgIAkJICogVGhlIG5leHQgcGZuIGlzIHNt YWxsZXN0IHBmbiBpbiBhbGwgcGFnZV9mbGFnX2J1Zi4KPj4gICAJCSAqLwo+PiAtCQlzZW1fd2Fp dCgmaW5mby0+cGFnZV9mbGFnX2J1Zl9zZW0pOwo+PiArLy8JCXNlbV93YWl0KCZpbmZvLT5wYWdl X2ZsYWdfYnVmX3NlbSk7Cj4+ICAgCQlnZXR0aW1lb2ZkYXkoJmxhc3QsIE5VTEwpOwo+PiAgIAkJ d2hpbGUgKDEpIHsKPj4gICAJCQljdXJyZW50X3BmbiA9IGVuZF9wZm47Cj4+IEBAIC03NTMyLDcg Kzc1MzIsNyBAQCBvdXQ6Cj4+ICAgCQl9Cj4+ICAgCX0KPj4KPj4gLQlzZW1fZGVzdHJveSgmaW5m by0+cGFnZV9mbGFnX2J1Zl9zZW0pOwo+PiArLy8Jc2VtX2Rlc3Ryb3koJmluZm8tPnBhZ2VfZmxh Z19idWZfc2VtKTsKPj4gICAJcHRocmVhZF9yd2xvY2tfZGVzdHJveSgmaW5mby0+dXNlbW1hcF9y d2xvY2spOwo+PiAgIAlwdGhyZWFkX211dGV4X2Rlc3Ryb3koJmluZm8tPmZpbHRlcl9tdXRleCk7 Cj4+ICAgCXB0aHJlYWRfbXV0ZXhfZGVzdHJveSgmaW5mby0+Y3VycmVudF9wZm5fbXV0ZXgpOwo+ PiBkaWZmIC0tZ2l0IGEvbWFrZWR1bXBmaWxlLmggYi9tYWtlZHVtcGZpbGUuaAo+PiBpbmRleCA0 YjMxNWMwLi43NjI3Mjg2IDEwMDY0NAo+PiAtLS0gYS9tYWtlZHVtcGZpbGUuaAo+PiArKysgYi9t YWtlZHVtcGZpbGUuaAo+PiBAQCAtNDQsNyArNDQsNyBAQAo+PiAgICNpbmNsdWRlICJwcmludF9p bmZvLmgiCj4+ICAgI2luY2x1ZGUgInNhZHVtcF9tb2QuaCIKPj4gICAjaW5jbHVkZSA8cHRocmVh ZC5oPgo+PiAtI2luY2x1ZGUgPHNlbWFwaG9yZS5oPgo+PiArLy8jaW5jbHVkZSA8c2VtYXBob3Jl Lmg+Cj4+Cj4+ICAgLyoKPj4gICAgKiBSZXN1bHQgb2YgY29tbWFuZAo+PiBAQCAtMTMwMiw3ICsx MzAyLDcgQEAgc3RydWN0IER1bXBJbmZvIHsKPj4gICAJc3RydWN0IHRocmVhZF9hcmdzICprZHVt cF90aHJlYWRfYXJnczsKPj4gICAJc3RydWN0IHBhZ2VfZGF0YSAqcGFnZV9kYXRhX2J1ZjsKPj4g ICAJc3RydWN0IHBhZ2VfZmxhZyAqKnBhZ2VfZmxhZ19idWY7Cj4+IC0Jc2VtX3QgcGFnZV9mbGFn X2J1Zl9zZW07Cj4+ICsvLwlzZW1fdCBwYWdlX2ZsYWdfYnVmX3NlbTsKPj4gICAJcHRocmVhZF9y d2xvY2tfdCB1c2VtbWFwX3J3bG9jazsKPj4gICAJbWRmX3Bmbl90IGN1cnJlbnRfcGZuOwo+PiAg IAlwdGhyZWFkX211dGV4X3QgY3VycmVudF9wZm5fbXV0ZXg7Cj4+IC0tCj4+IDEuOC4zLjEKPj4K Pgo+Cj4KCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K a2V4ZWMgbWFpbGluZyBsaXN0CmtleGVjQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3Rz LmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9rZXhlYwo=