From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yu Zhang Subject: Re: [PATCH v9 2/5] x86/ioreq server: Add DMOP to map guest ram with p2m_ioreq_server to an ioreq server. Date: Fri, 24 Mar 2017 20:34:30 +0800 Message-ID: <58D51256.1060509@linux.intel.com> References: <1490064773-26751-1-git-send-email-yu.c.zhang@linux.intel.com> <1490064773-26751-3-git-send-email-yu.c.zhang@linux.intel.com> <58D24E25.5010000@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: "Tian, Kevin" , "xen-devel@lists.xen.org" Cc: "Nakajima, Jun" , George Dunlap , Andrew Cooper , Tim Deegan , Paul Durrant , "Lv, Zhiyuan" , Jan Beulich List-Id: xen-devel@lists.xenproject.org CgpPbiAzLzI0LzIwMTcgNToyNiBQTSwgVGlhbiwgS2V2aW4gd3JvdGU6Cj4+IEZyb206IFl1IFpo YW5nIFttYWlsdG86eXUuYy56aGFuZ0BsaW51eC5pbnRlbC5jb21dCj4+IFNlbnQ6IFdlZG5lc2Rh eSwgTWFyY2ggMjIsIDIwMTcgNjoxMyBQTQo+Pgo+PiBPbiAzLzIyLzIwMTcgMzo0OSBQTSwgVGlh biwgS2V2aW4gd3JvdGU6Cj4+Pj4gRnJvbTogWXUgWmhhbmcgW21haWx0bzp5dS5jLnpoYW5nQGxp bnV4LmludGVsLmNvbV0KPj4+PiBTZW50OiBUdWVzZGF5LCBNYXJjaCAyMSwgMjAxNyAxMDo1MyBB TQo+Pj4+Cj4+Pj4gQSBuZXcgRE1PUCAtIFhFTl9ETU9QX21hcF9tZW1fdHlwZV90b19pb3JlcV9z ZXJ2ZXIsIGlzIGFkZGVkIHRvCj4+IGxldAo+Pj4+IG9uZSBpb3JlcSBzZXJ2ZXIgY2xhaW0vZGlz Y2xhaW0gaXRzIHJlc3BvbnNpYmlsaXR5IGZvciB0aGUgaGFuZGxpbmcKPj4+PiBvZiBndWVzdCBw YWdlcyB3aXRoIHAybSB0eXBlIHAybV9pb3JlcV9zZXJ2ZXIuIFVzZXJzIG9mIHRoaXMgRE1PUCBj YW4KPj4+PiBzcGVjaWZ5IHdoaWNoIGtpbmQgb2Ygb3BlcmF0aW9uIGlzIHN1cHBvc2VkIHRvIGJl IGVtdWxhdGVkIGluIGEKPj4+PiBwYXJhbWV0ZXIgbmFtZWQgZmxhZ3MuIEN1cnJlbnRseSwgdGhp cyBETU9QIG9ubHkgc3VwcG9ydCB0aGUgZW11bGF0aW9uCj4+IG9mIHdyaXRlIG9wZXJhdGlvbnMu Cj4+Pj4gQW5kIGl0IGNhbiBiZSBmdXJ0aGVyIGV4dGVuZGVkIHRvIHN1cHBvcnQgdGhlIGVtdWxh dGlvbiBvZiByZWFkIG9uZXMKPj4+PiBpZiBhbiBpb3JlcSBzZXJ2ZXIgaGFzIHN1Y2ggcmVxdWly ZW1lbnQgaW4gdGhlIGZ1dHVyZS4KPj4+IHAybV9pb3JlcV9zZXJ2ZXIgd2FzIGFscmVhZHkgaW50 cm9kdWNlZCBiZWZvcmUuIERvIHlvdSB3YW50IHRvIGdpdmUKPj4+IHNvbWUgYmFja2dyb3VuZCBo b3cgY3VycmVudCBzdGF0ZSBpcyBhcm91bmQgdGhhdCB0eXBlIHdoaWNoIHdpbGwgYmUKPj4+IGhl bHBmdWwgYWJvdXQgcHVycG9zZSBvZiB0aGlzIHBhdGNoPwo+PiBTb3JyeT8gSSB0aG91Z2h0IHRo ZSBiYWNrZ3JvdW5kIGlzIGRlc2NyaWJlZCBpbiB0aGUgY292ZXIgbGV0dGVyLgo+PiBQcmV2aW91 c2x5IHAybV9pb3JlcV9zZXJ2ZXIgaXMgb25seSBmb3Igd3JpdGUtcHJvdGVjdGlvbiwgYW5kIGlz IHRyYWNrZWQgaW4gYW4KPj4gaW9yZXEgc2VydmVyJ3MgcmFuZ2VzZXQsIHRoaXMgcGF0Y2ggaXMg dG8gYmluZCB0aGUgcDJtIHR5cGUgd2l0aCBhbiBpb3JlcQo+PiBzZXJ2ZXIgZGlyZWN0bHkuCj4g Y292ZXIgbGV0dGVyIHdpbGwgbm90IGJlIGluIGdpdCByZXBvLiBCZXR0ZXIgeW91IGNhbiBpbmNs dWRlIGl0IHRvIG1ha2UKPiB0aGlzIGNvbW1pdCBhbG9uZyBjb21wbGV0ZS4KCk9LLiBUaGFua3Mu Cgo+Pj4+IEZvciBub3csIHdlIG9ubHkgc3VwcG9ydCBvbmUgaW9yZXEgc2VydmVyIGZvciB0aGlz IHAybSB0eXBlLCBzbyBvbmNlCj4+Pj4gYW4gaW9yZXEgc2VydmVyIGhhcyBjbGFpbWVkIGl0cyBv d25lcnNoaXAsIHN1YnNlcXVlbnQgY2FsbHMgb2YgdGhlCj4+Pj4gWEVOX0RNT1BfbWFwX21lbV90 eXBlX3RvX2lvcmVxX3NlcnZlciB3aWxsIGZhaWwuIFVzZXJzIGNhbiBhbHNvCj4+Pj4gZGlzY2xh aW0gdGhlIG93bmVyc2hpcCBvZiBndWVzdCByYW0gcGFnZXMgd2l0aCBwMm1faW9yZXFfc2VydmVy LCBieQo+Pj4+IHRyaWdnZXJpbmcgdGhpcyBuZXcgRE1PUCwgd2l0aCBpb3JlcSBzZXJ2ZXIgaWQg c2V0IHRvIHRoZSBjdXJyZW50Cj4+Pj4gb3duZXIncyBhbmQgZmxhZ3MgcGFyYW1ldGVyIHNldCB0 byAwLgo+Pj4+Cj4+Pj4gTm90ZSBib3RoIFhFTl9ETU9QX21hcF9tZW1fdHlwZV90b19pb3JlcV9z ZXJ2ZXIgYW5kCj4+IHAybV9pb3JlcV9zZXJ2ZXIKPj4+PiBhcmUgb25seSBzdXBwb3J0ZWQgZm9y IEhWTXMgd2l0aCBIQVAgZW5hYmxlZC4KPj4+Pgo+Pj4+IEFsc28gbm90ZSB0aGF0IG9ubHkgYWZ0 ZXIgb25lIGlvcmVxIHNlcnZlciBjbGFpbXMgaXRzIG93bmVyc2hpcCBvZgo+Pj4+IHAybV9pb3Jl cV9zZXJ2ZXIsIHdpbGwgdGhlIHAybSB0eXBlIGNoYW5nZSB0byBwMm1faW9yZXFfc2VydmVyIGJl Cj4+Pj4gYWxsb3dlZC4KPj4+Pgo+Pj4+IFNpZ25lZC1vZmYtYnk6IFBhdWwgRHVycmFudCA8cGF1 bC5kdXJyYW50QGNpdHJpeC5jb20+Cj4+Pj4gU2lnbmVkLW9mZi1ieTogWXUgWmhhbmcgPHl1LmMu emhhbmdAbGludXguaW50ZWwuY29tPgo+Pj4+IEFja2VkLWJ5OiBUaW0gRGVlZ2FuIDx0aW1AeGVu Lm9yZz4KPj4+PiAtLS0KPj4+PiBDYzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgo+ Pj4+IENjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgo+Pj4+IENj OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPgo+Pj4+IENjOiBHZW9yZ2Ug RHVubGFwIDxnZW9yZ2UuZHVubGFwQGV1LmNpdHJpeC5jb20+Cj4+Pj4gQ2M6IEp1biBOYWthamlt YSA8anVuLm5ha2FqaW1hQGludGVsLmNvbT4KPj4+PiBDYzogS2V2aW4gVGlhbiA8a2V2aW4udGlh bkBpbnRlbC5jb20+Cj4+Pj4gQ2M6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgo+Pj4+Cj4+Pj4g Y2hhbmdlcyBpbiB2ODoKPj4+PiAgICAgLSBBY2NvcmRpbmcgdG8gY29tbWVudHMgZnJvbSBKYW4g JiBQYXVsOiBjb21tZW50cyBjaGFuZ2VzIGluCj4+Pj4gaHZtZW11bF9kb19pbygpLgo+Pj4+ICAg ICAtIEFjY29yZGluZyB0byBjb21tZW50cyBmcm9tIEphbjogcmVtb3ZlIHRoZSByZWR1bmRhbnQg Y29kZSB3aGljaAo+Pj4+IHdvdWxkIG9ubHkKPj4+PiAgICAgICBiZSB1c2VmdWwgZm9yIHJlYWQg ZW11bGF0aW9ucy4KPj4+PiAgICAgLSBBY2NvcmRpbmcgdG8gY29tbWVudHMgZnJvbSBKYW46IGNo YW5nZSBpbnRlcmZhY2Ugd2hpY2ggbWFwcyBtZW0KPj4+PiB0eXBlIHRvCj4+Pj4gICAgICAgaW9y ZXEgc2VydmVyLCByZW1vdmVkIHVpbnQxNl90IHBhZCBhbmQgYWRkZWQgYW4gdWludDY0X3Qgb3Bh cXVlLgo+Pj4+ICAgICAtIEFkZHJlc3Mgb3RoZXIgY29tbWVudHMgZnJvbSBKYW4sIGkuZS4gY29y cmVjdCByZXR1cm4gdmFsdWVzOyByZW1vdmUKPj4gc3RyYXkKPj4+PiAgICAgICBjYXN0Lgo+Pj4+ Cj4+Pj4gY2hhbmdlcyBpbiB2NzoKPj4+PiAgICAgLSBVc2UgbmV3IGlvcmVxIHNlcnZlciBpbnRl cmZhY2UgLQo+Pj4+IFhFTl9ETU9QX21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXIuCj4+Pj4g ICAgIC0gQWNjb3JkaW5nIHRvIGNvbW1lbnRzIGZyb20gR2VvcmdlOiByZW1vdmVkCj4+Pj4gZG9t YWluX3BhdXNlL3VucGF1c2UoKSBpbgo+Pj4+ICAgICAgIGh2bV9tYXBfbWVtX3R5cGVfdG9faW9y ZXFfc2VydmVyKCksIGJlY2F1c2UgaXQncyB0b28gZXhwZW5zaXZlLAo+Pj4+ICAgICAgIGFuZCB3 ZSBjYW4gYXZvaWQgdGhlOgo+Pj4+ICAgICAgIGE+IGRlYWRsb2NrIGlzc3VlIGV4aXN0ZWQgaW4g djYgcGF0Y2gsIGJldHdlZW4gcDJtIGxvY2sgYW5kIGlvcmVxCj4+IHNlcnZlcgo+Pj4+ICAgICAg ICAgIGxvY2sgYnkgdXNpbmcgdGhlc2UgbG9ja3MgaW4gdGhlIHNhbWUgb3JkZXIgLSBzb2x2ZWQg aW4gcGF0Y2ggNDsKPj4+PiAgICAgICBiPiBmb3IgcmFjZSBjb25kaXRpb24gYmV0d2VlbiB2bSBl eGl0IGFuZCBpb3JlcSBzZXJ2ZXIgdW5iaW5kaW5nLCB3ZQo+PiBjYW4KPj4+PiAgICAgICAgICBq dXN0IHJldHJ5IHRoaXMgaW5zdHJ1Y3Rpb24uCj4+Pj4gICAgIC0gQWNjb3JkaW5nIHRvIGNvbW1l bnRzIGZyb20gSmFuIGFuZCBHZW9yZ2U6IGNvbnRpbnVlIHRvIGNsYXJpZnkgbG9naWMKPj4gaW4K Pj4+PiAgICAgICBodm1lbXVsX2RvX2lvKCkuCj4+Pj4gICAgIC0gQWNjb3JkaW5nIHRvIGNvbW1l bnRzIGZyb20gSmFuOiBjbGFyaWZ5IGNvbW1lbnQgaW4KPj4+PiBwMm1fc2V0X2lvcmVxX3NlcnZl cigpLgo+Pj4+Cj4+Pj4gY2hhbmdlcyBpbiB2NjoKPj4+PiAgICAgLSBDbGFyaWZ5IGxvZ2ljIGlu IGh2bWVtdWxfZG9faW8oKS4KPj4+PiAgICAgLSBVc2UgcmVjdXJzaXZlIGxvY2sgZm9yIGlvcmVx IHNlcnZlciBsb2NrLgo+Pj4+ICAgICAtIFJlbW92ZSBkZWJ1ZyBwcmludCB3aGVuIG1hcHBpbmcg aW9yZXEgc2VydmVyLgo+Pj4+ICAgICAtIENsYXJpZnkgY29kZSBpbiBlcHRfcDJtX3R5cGVfdG9f ZmxhZ3MoKSBmb3IgY29uc2lzdGVuY3kuCj4+Pj4gICAgIC0gUmVtb3ZlIGRlZmluaXRpb24gb2Yg UDJNX0lPUkVRX0hBTkRMRV9XUklURV9BQ0NFU1MuCj4+Pj4gICAgIC0gQWRkIGNvbW1lbnRzIGZv ciBIVk1NRU1faW9yZXFfc2VydmVyIHRvIG5vdGUgb25seSBjaGFuZ2VzCj4+Pj4gICAgICAgdG8v ZnJvbSBIVk1NRU1fcmFtX3J3IGFyZSBwZXJtaXR0ZWQuCj4+Pj4gICAgIC0gQWRkIGRvbWFpbl9w YXVzZS91bnBhdXNlKCkgaW4KPj4gaHZtX21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXIoKQo+ Pj4+ICAgICAgIHRvIGF2b2lkIHRoZSByYWNlIGNvbmRpdGlvbiB3aGVuIGEgdm0gZXhpdCBoYXBw ZW5zIG9uIGEgd3JpdGUtCj4+Pj4gICAgICAgcHJvdGVjdGVkIHBhZ2UsIGp1c3QgdG8gZmluZCB0 aGUgaW9yZXEgc2VydmVyIGhhcyBiZWVuIHVubWFwcGVkCj4+Pj4gICAgICAgYWxyZWFkeS4KPj4+ PiAgICAgLSBJbnRyb2R1Y2UgYSBzZXBlcmF0ZSBwYXRjaCB0byBkZWxheSB0aGUgcmVsZWFzZSBv ZiBwMm0KPj4+PiAgICAgICBsb2NrIHRvIGF2b2lkIHRoZSByYWNlIGNvbmRpdGlvbi4KPj4+PiAg ICAgLSBJbnRyb2R1Y2UgYSBzZXBlcmF0ZSBwYXRjaCB0byBoYW5kbGUgdGhlIHJlYWQtbW9kaWZ5 LXdyaXRlCj4+Pj4gICAgICAgb3BlcmF0aW9ucyBvbiBhIHdyaXRlIHByb3RlY3RlZCBwYWdlLgo+ Pj4+Cj4+Pj4gY2hhbmdlcyBpbiB2NToKPj4+PiAgICAgLSBTaW1wbGlmeSBsb2dpYyBpbiBodm1l bXVsX2RvX2lvKCkuCj4+Pj4gICAgIC0gVXNlIG5hdHVhbCB3aWR0aCB0eXBlcyBpbnN0ZWFkIG9m IGZpeGVkIHdpZHRoIHR5cGVzIHdoZW4gcG9zc2libGUuCj4+Pj4gICAgIC0gRG8gbm90IGdyYW50 IGV4ZWN1dGFibGUgcGVybWlzc2lvbiBmb3IgcDJtX2lvcmVxX3NlcnZlciBlbnRyaWVzLgo+Pj4+ ICAgICAtIENsYXJpZnkgY29tbWVudHMgYW5kIGNvbW1pdCBtZXNzYWdlLgo+Pj4+ICAgICAtIElu dHJvZHVjZSBhIHNlcGVyYXRlIHBhdGNoIHRvIHJlY2FsY3VsYXRlIHRoZSBwMm0gdHlwZXMgYWZ0 ZXIKPj4+PiAgICAgICB0aGUgaW9yZXEgc2VydmVyIHVubWFwcyB0aGUgcDJtX2lvcmVxX3NlcnZl ci4KPj4+Pgo+Pj4+IGNoYW5nZXMgaW4gdjQ6Cj4+Pj4gICAgIC0gQWNjb3JkaW5nIHRvIFBhdWwn cyBhZHZpY2UsIGFkZCBjb21tZW50cyBhcm91bmQgdGhlIGRlZmluaXRpb24KPj4+PiAgICAgICBv ZiBIVk1NRU1faW9yZV9zZXJ2ZXIgaW4gaHZtX29wLmguCj4+Pj4gICAgIC0gQWNjb3JkaW5nIHRv IFdlaSBMaXUncyBjb21tZW50cywgY2hhbmdlIHRoZSBmb3JtYXQgb2YgdGhlIGNvbW1pdAo+Pj4+ ICAgICAgIG1lc3NhZ2UuCj4+Pj4KPj4+PiBjaGFuZ2VzIGluIHYzOgo+Pj4+ICAgICAtIE9ubHkg c3VwcG9ydCB3cml0ZSBlbXVsYXRpb24gaW4gdGhpcyBwYXRjaDsKPj4+PiAgICAgLSBSZW1vdmUg dGhlIGNvZGUgdG8gaGFuZGxlIHJhY2UgY29uZGl0aW9uIGluIGh2bWVtdWxfZG9faW8oKSwKPj4+ PiAgICAgLSBObyBuZWVkIHRvIHJlc2V0IHRoZSBwMm0gdHlwZSBhZnRlciBhbiBpb3JlcSBzZXJ2 ZXIgaGFzIGRpc2NsYWltZWQKPj4+PiAgICAgICBpdHMgb3duZXJzaGlwIG9mIHAybV9pb3JlcV9z ZXJ2ZXI7Cj4+Pj4gICAgIC0gT25seSBhbGxvdyBwMm0gdHlwZSBjaGFuZ2UgdG8gcDJtX2lvcmVx X3NlcnZlciBhZnRlciBhbiBpb3JlcQo+Pj4+ICAgICAgIHNlcnZlciBoYXMgY2xhaW1lZCBpdHMg b3duZXJzaGlwIG9mIHAybV9pb3JlcV9zZXJ2ZXI7Cj4+Pj4gICAgIC0gT25seSBhbGxvdyBwMm0g dHlwZSBjaGFuZ2UgdG8gcDJtX2lvcmVxX3NlcnZlciBmcm9tIHBhZ2VzIHdpdGgKPj4gdHlwZQo+ Pj4+ICAgICAgIHAybV9yYW1fcncsIGFuZCB2aWNlIHZlcnNhOwo+Pj4+ICAgICAtIEhWTU9QX21h cF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXIgaW50ZXJmYWNlIGNoYW5nZSAtIHVzZQo+PiB1aW50 MTYsCj4+Pj4gICAgICAgaW5zdGVhZCBvZiBlbnVtIHRvIHNwZWNpZnkgdGhlIG1lbW9yeSB0eXBl Owo+Pj4+ICAgICAtIEZ1bmN0aW9uIHByb3RvdHlwZSBjaGFuZ2UgdG8gcDJtX2dldF9pb3JlcV9z ZXJ2ZXIoKTsKPj4+PiAgICAgLSBDb2Rpbmcgc3R5bGUgY2hhbmdlczsKPj4+PiAgICAgLSBDb21t aXQgbWVzc2FnZSBjaGFuZ2VzOwo+Pj4+ICAgICAtIEFkZCBUaW0ncyBBY2tlZC1ieS4KPj4+Pgo+ Pj4+IGNoYW5nZXMgaW4gdjI6Cj4+Pj4gICAgIC0gT25seSBzdXBwb3J0IEhBUCBlbmFibGVkIEhW TXM7Cj4+Pj4gICAgIC0gUmVwbGFjZSBwMm1fbWVtX3R5cGVfY2hhbmdlZCgpIHdpdGgKPj4gcDJt X2NoYW5nZV9lbnRyeV90eXBlX2dsb2JhbCgpCj4+Pj4gICAgICAgdG8gcmVzZXQgdGhlIHAybSB0 eXBlLCB3aGVuIGFuIGlvcmVxIHNlcnZlciB0cmllcyB0byBjbGFpbS9kaXNjbGFpbQo+Pj4+ICAg ICAgIGl0cyBvd25lcnNoaXAgb2YgcDJtX2lvcmVxX3NlcnZlcjsKPj4+PiAgICAgLSBDb21tZW50 cyBjaGFuZ2VzLgo+Pj4+IC0tLQo+Pj4+ICAgIHhlbi9hcmNoL3g4Ni9odm0vZG0uYyAgICAgICAg ICAgIHwgMzcgKysrKysrKysrKysrKysrKysrLS0KPj4+PiAgICB4ZW4vYXJjaC94ODYvaHZtL2Vt dWxhdGUuYyAgICAgICB8IDY1Cj4+Pj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst LS0KPj4+PiAgICB4ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMgICAgICAgICB8IDM4ICsrKysrKysr KysrKysrKysrKysrKwo+Pj4+ICAgIHhlbi9hcmNoL3g4Ni9tbS9oYXAvbmVzdGVkX2hhcC5jIHwg IDIgKy0KPj4+PiAgICB4ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5jICAgICAgICB8ICA4ICsrKyst Cj4+Pj4gICAgeGVuL2FyY2gveDg2L21tL3AybS1wdC5jICAgICAgICAgfCAxOSArKysrKysrLS0t LQo+Pj4+ICAgIHhlbi9hcmNoL3g4Ni9tbS9wMm0uYyAgICAgICAgICAgIHwgNzQKPj4+PiArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+Pj4gICAgeGVuL2FyY2gveDg2 L21tL3NoYWRvdy9tdWx0aS5jICAgfCAgMyArLQo+Pj4+ICAgIHhlbi9pbmNsdWRlL2FzbS14ODYv aHZtL2lvcmVxLmggIHwgIDIgKysKPj4+PiAgICB4ZW4vaW5jbHVkZS9hc20teDg2L3AybS5oICAg ICAgICB8IDI2ICsrKysrKysrKysrKy0tCj4+Pj4gICAgeGVuL2luY2x1ZGUvcHVibGljL2h2bS9k bV9vcC5oICAgfCAyOCArKysrKysrKysrKysrKysKPj4+PiAgICB4ZW4vaW5jbHVkZS9wdWJsaWMv aHZtL2h2bV9vcC5oICB8ICA4ICsrKystCj4+Pj4gICAgMTIgZmlsZXMgY2hhbmdlZCwgMjkwIGlu c2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQo+Pj4+Cj4+Pj4gZGlmZiAtLWdpdCBhL3hlbi9h cmNoL3g4Ni9odm0vZG0uYyBiL3hlbi9hcmNoL3g4Ni9odm0vZG0uYyBpbmRleAo+Pj4+IDMzM2M4 ODQuLjNmOTQ4NGQgMTAwNjQ0Cj4+Pj4gLS0tIGEveGVuL2FyY2gveDg2L2h2bS9kbS5jCj4+Pj4g KysrIGIveGVuL2FyY2gveDg2L2h2bS9kbS5jCj4+Pj4gQEAgLTE3Myw5ICsxNzMsMTQgQEAgc3Rh dGljIGludCBtb2RpZmllZF9tZW1vcnkoc3RydWN0IGRvbWFpbiAqZCwKPj4+Pgo+Pj4+ICAgIHN0 YXRpYyBib29sIGFsbG93X3AybV90eXBlX2NoYW5nZShwMm1fdHlwZV90IG9sZCwgcDJtX3R5cGVf dCBuZXcpCj4+Pj4gewo+Pj4+ICsgICAgaWYgKCBuZXcgPT0gcDJtX2lvcmVxX3NlcnZlciApCj4+ Pj4gKyAgICAgICAgcmV0dXJuIG9sZCA9PSBwMm1fcmFtX3J3Owo+Pj4+ICsKPj4+PiArICAgIGlm ICggb2xkID09IHAybV9pb3JlcV9zZXJ2ZXIgKQo+Pj4+ICsgICAgICAgIHJldHVybiBuZXcgPT0g cDJtX3JhbV9ydzsKPj4+PiArCj4+Pj4gICAgICAgIHJldHVybiBwMm1faXNfcmFtKG9sZCkgfHwK Pj4+PiAtICAgICAgICAgICAocDJtX2lzX2hvbGUob2xkKSAmJiBuZXcgPT0gcDJtX21taW9fZG0p IHx8Cj4+Pj4gLSAgICAgICAgICAgKG9sZCA9PSBwMm1faW9yZXFfc2VydmVyICYmIG5ldyA9PSBw Mm1fcmFtX3J3KTsKPj4+PiArICAgICAgICAgICAocDJtX2lzX2hvbGUob2xkKSAmJiBuZXcgPT0g cDJtX21taW9fZG0pOwo+Pj4+ICAgIH0KPj4+Pgo+Pj4+ICAgIHN0YXRpYyBpbnQgc2V0X21lbV90 eXBlKHN0cnVjdCBkb21haW4gKmQsIEBAIC0yMDIsNiArMjA3LDE5IEBACj4+Pj4gc3RhdGljIGlu dCBzZXRfbWVtX3R5cGUoc3RydWN0IGRvbWFpbiAqZCwKPj4+PiAgICAgICAgICAgICB1bmxpa2Vs eShkYXRhLT5tZW1fdHlwZSA9PSBIVk1NRU1fdW51c2VkKSApCj4+Pj4gICAgICAgICAgICByZXR1 cm4gLUVJTlZBTDsKPj4+Pgo+Pj4+ICsgICAgaWYgKCBkYXRhLT5tZW1fdHlwZSAgPT0gSFZNTUVN X2lvcmVxX3NlcnZlciApCj4+Pj4gKyAgICB7Cj4+Pj4gKyAgICAgICAgdW5zaWduZWQgaW50IGZs YWdzOwo+Pj4+ICsKPj4+PiArICAgICAgICAvKiBIVk1NRU1faW9yZXFfc2VydmVyIGlzIG9ubHkg c3VwcG9ydGVkIGZvciBIQVAgZW5hYmxlZCBodm0uCj4+ICovCj4+Pj4gKyAgICAgICAgaWYgKCAh aGFwX2VuYWJsZWQoZCkgKQo+Pj4+ICsgICAgICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7Cj4+ Pj4gKwo+Pj4+ICsgICAgICAgIC8qIERvIG5vdCBjaGFuZ2UgdG8gSFZNTUVNX2lvcmVxX3NlcnZl ciBpZiBubyBpb3JlcSBzZXJ2ZXIKPj4gbWFwcGVkLgo+Pj4+ICovCj4+Pj4gKyAgICAgICAgaWYg KCAhcDJtX2dldF9pb3JlcV9zZXJ2ZXIoZCwgJmZsYWdzKSApCj4+Pj4gKyAgICAgICAgICAgIHJl dHVybiAtRUlOVkFMOwo+Pj4+ICsgICAgfQo+Pj4+ICsKPj4+PiAgICAgICAgd2hpbGUgKCBpdGVy IDwgZGF0YS0+bnIgKQo+Pj4+ICAgICAgICB7Cj4+Pj4gICAgICAgICAgICB1bnNpZ25lZCBsb25n IHBmbiA9IGRhdGEtPmZpcnN0X3BmbiArIGl0ZXI7IEBAIC0zNjUsNgo+Pj4+ICszODMsMjEgQEAg c3RhdGljIGludCBkbV9vcChkb21pZF90IGRvbWlkLAo+Pj4+ICAgICAgICAgICAgYnJlYWs7Cj4+ Pj4gICAgICAgIH0KPj4+Pgo+Pj4+ICsgICAgY2FzZSBYRU5fRE1PUF9tYXBfbWVtX3R5cGVfdG9f aW9yZXFfc2VydmVyOgo+Pj4+ICsgICAgewo+Pj4+ICsgICAgICAgIGNvbnN0IHN0cnVjdCB4ZW5f ZG1fb3BfbWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZlciAqZGF0YSA9Cj4+Pj4gKyAgICAgICAg ICAgICZvcC51Lm1hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXI7Cj4+Pj4gKwo+Pj4+ICsgICAg ICAgIHJjID0gLUVPUE5PVFNVUFA7Cj4+Pj4gKyAgICAgICAgLyogT25seSBzdXBwb3J0IGZvciBI QVAgZW5hYmxlZCBodm0uICovCj4+PiBJc24ndCBpdCBvYnZpb3VzIGZyb20gY29kZT8KPj4gWWVz LiBDYW4gYmUgcmVtb3ZlZC4KPj4+PiArICAgICAgICBpZiAoICFoYXBfZW5hYmxlZChkKSApCj4+ Pj4gKyAgICAgICAgICAgIGJyZWFrOwo+Pj4+ICsKPj4+PiArICAgICAgICByYyA9IGh2bV9tYXBf bWVtX3R5cGVfdG9faW9yZXFfc2VydmVyKGQsIGRhdGEtPmlkLAo+Pj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+dHlwZSwgZGF0YS0+ZmxhZ3Mp Owo+Pj4+ICsgICAgICAgIGJyZWFrOwo+Pj4+ICsgICAgfQo+Pj4+ICsKPj4+PiAgICAgICAgY2Fz ZSBYRU5fRE1PUF9zZXRfaW9yZXFfc2VydmVyX3N0YXRlOgo+Pj4+ICAgICAgICB7Cj4+Pj4gICAg ICAgICAgICBjb25zdCBzdHJ1Y3QgeGVuX2RtX29wX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGUgKmRh dGEgPSBkaWZmCj4+Pj4gLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUuYyBiL3hlbi9h cmNoL3g4Ni9odm0vZW11bGF0ZS5jCj4+IGluZGV4Cj4+Pj4gZjM2ZDdjOS4uMzcxMzllNiAxMDA2 NDQKPj4+PiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUuYwo+Pj4+ICsrKyBiL3hlbi9h cmNoL3g4Ni9odm0vZW11bGF0ZS5jCj4+Pj4gQEAgLTk5LDYgKzk5LDcgQEAgc3RhdGljIGludCBo dm1lbXVsX2RvX2lvKAo+Pj4+ICAgICAgICB1aW50OF90IGRpciwgYm9vbF90IGRmLCBib29sX3Qg ZGF0YV9pc19hZGRyLCB1aW50cHRyX3QgZGF0YSkgIHsKPj4+PiAgICAgICAgc3RydWN0IHZjcHUg KmN1cnIgPSBjdXJyZW50Owo+Pj4+ICsgICAgc3RydWN0IGRvbWFpbiAqY3VycmQgPSBjdXJyLT5k b21haW47Cj4+Pj4gICAgICAgIHN0cnVjdCBodm1fdmNwdV9pbyAqdmlvID0gJmN1cnItPmFyY2gu aHZtX3ZjcHUuaHZtX2lvOwo+Pj4+ICAgICAgICBpb3JlcV90IHAgPSB7Cj4+Pj4gICAgICAgICAg ICAudHlwZSA9IGlzX21taW8gPyBJT1JFUV9UWVBFX0NPUFkgOiBJT1JFUV9UWVBFX1BJTywgQEAK Pj4+PiAtMTQwLDcKPj4+PiArMTQxLDcgQEAgc3RhdGljIGludCBodm1lbXVsX2RvX2lvKAo+Pj4+ ICAgICAgICAgICAgICAgICAocC5kaXIgIT0gZGlyKSB8fAo+Pj4+ICAgICAgICAgICAgICAgICAo cC5kZiAhPSBkZikgfHwKPj4+PiAgICAgICAgICAgICAgICAgKHAuZGF0YV9pc19wdHIgIT0gZGF0 YV9pc19hZGRyKSApCj4+Pj4gLSAgICAgICAgICAgIGRvbWFpbl9jcmFzaChjdXJyLT5kb21haW4p Owo+Pj4+ICsgICAgICAgICAgICBkb21haW5fY3Jhc2goY3VycmQpOwo+Pj4+Cj4+Pj4gICAgICAg ICAgICBpZiAoIGRhdGFfaXNfYWRkciApCj4+Pj4gICAgICAgICAgICAgICAgcmV0dXJuIFg4NkVN VUxfVU5IQU5ETEVBQkxFOyBAQCAtMTc3LDggKzE3OCw2NCBAQAo+Pj4+IHN0YXRpYyBpbnQgaHZt ZW11bF9kb19pbygKPj4+PiAgICAgICAgICAgIGJyZWFrOwo+Pj4+ICAgICAgICBjYXNlIFg4NkVN VUxfVU5IQU5ETEVBQkxFOgo+Pj4+ICAgICAgICB7Cj4+Pj4gLSAgICAgICAgc3RydWN0IGh2bV9p b3JlcV9zZXJ2ZXIgKnMgPQo+Pj4+IC0gICAgICAgICAgICBodm1fc2VsZWN0X2lvcmVxX3NlcnZl cihjdXJyLT5kb21haW4sICZwKTsKPj4+PiArICAgICAgICAvKgo+Pj4+ICsgICAgICAgICAqIFhl biBpc24ndCBlbXVsYXRpbmcgdGhlIGluc3RydWN0aW9uIGludGVybmFsbHksIHNvIHNlZSBpZgo+ Pj4+ICsgICAgICAgICAqIHRoZXJlJ3MgYW4gaW9yZXEgc2VydmVyIHRoYXQgY2FuIGhhbmRsZSBp dC4gUnVsZXM6Cj4+Pj4gKyAgICAgICAgICoKPj4+PiArICAgICAgICAgKiAtIFBJTyBhbmQgIm5v cm1hbCIgTU1JTyBydW4gdGhyb3VnaAo+Pj4+ICsgaHZtX3NlbGVjdF9pb3JlcV9zZXJ2ZXIoKQo+ Pj4gd2h5IGhpZ2hsaWdodHMgIm5vcm1hbCIgaGVyZT8gV2hhdCBkb2VzIGEgImFibm9ybWFsIiBN TUlPIG1lYW4gaGVyZT8KPj4+IHAybV9pb3JlcV9zZXJ2ZXIgdHlwZT8KPj4gWWVzLCBpdCdzIGp1 c3QgdG8gZGlmZmVyZW50aWF0ZSB0aGUgTU1JTyBhbmQgdGhlIHAybV9pb3JlcV9zZXJ2ZXIgYWRk cmVzcywKPj4gY29waWVkIGZyb20gR2VvcmdlJ3MgcHJldmlvdXMgY29tbWVudHMuCj4+IFdlIGNh biByZW1vdmUgdGhlICJub3JtYWwiIGhlcmUuCj4gdGhlbiB5b3UgbmVlZCBhZGQgc3VjaCBleHBs YW5hdGlvbiBvdGhlcndpc2UgaXQncyBkaWZmaWN1bHQgZm9yCj4gb3RoZXIgY29kZSByZWFkZXIg dG8ga25vdyBpdHMgbWVhbmluZy4KCk1heWJlIEkgc2hvdWxkIGp1c3QgcmVtb3ZlIHRoZSAibm9y bWFsIiwgcDJtX2lvcmVxX3NlcnZlciBvbmVzIGFyZSByYW0gCnBhZ2VzIGFmdGVyIGFsbC4KCj4+ Cj4+Pj4gKyAgICAgICAgICogdG8gY2hvb3NlIHRoZSBpb3JlcSBzZXJ2ZXIgYnkgcmFuZ2UuIElm IG5vIHNlcnZlciBpcyBmb3VuZCwKPj4+PiArICAgICAgICAgKiB0aGUgYWNjZXNzIGlzIGlnbm9y ZWQuCj4+Pj4gKyAgICAgICAgICoKPj4+PiArICAgICAgICAgKiAtIHAybV9pb3JlcV9zZXJ2ZXIg YWNjZXNzZXMgYXJlIGhhbmRsZWQgYnkgdGhlIGRlc2lnbmF0ZWQKPj4+PiArICAgICAgICAgKiBp b3JlcV9zZXJ2ZXIgZm9yIHRoZSBkb21haW4sIGJ1dCB0aGVyZSBhcmUgc29tZSBjb3JuZXIKPj4+ PiArICAgICAgICAgKiBjYXNlczoKPj4+IHNpbmNlIG9ubHkgb25lIGNhc2UgaXMgbGlzdGVkLCAi dGhlcmUgaXMgYSBjb3JuZXIgY2FzZSIKPj4gQW5vdGhlciBjb3JuZXIgY2FzZSBpcyBpbiBwYXRj aCAzLzUgLSBoYW5kbGluZyB0aGUgcmVhZC1tb2RpZnktd3JpdGUKPj4gc2l0dWF0aW9ucy4KPj4g TWF5YmUgdGhlIGNvcnJlY3QgdGhpbmcgaXMgdG8gdXNlIHdvcmQgImNhc2UiIGluIHRoaXMgcGF0 Y2ggYW5kIGNoYW5nZQo+PiBpdCB0byAiY2FzZXMiIGluIG5leHQgcGF0Y2guIDotKQo+IHRoZW4g bGVhdmUgaXQgYmUuIE5vdCBhIGJpZyBtYXR0ZXIuCgpPSy4gVGhhbmtzIQoKPj4+PiArICAgICAg ICAgKgo+Pj4+ICsgICAgICAgICAqICAgLSBJZiB0aGUgZG9tYWluIGlvcmVxX3NlcnZlciBpcyBO VUxMLCBhc3N1bWUgdGhlcmUgaXMgYQo+Pj4+ICsgICAgICAgICAqICAgcmFjZSBiZXR3ZWVuIHRo ZSB1bmJpbmRpbmcgb2YgaW9yZXEgc2VydmVyIGFuZCBndWVzdCBmYXVsdAo+Pj4+ICsgICAgICAg ICAqICAgc28gcmUtdHJ5IHRoZSBpbnN0cnVjdGlvbi4KPj4+PiArICAgICAgICAgKi8KPj4+PiAr ICAgICAgICBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcyA9IE5VTEw7Cj4+Pj4gKyAgICAgICAg cDJtX3R5cGVfdCBwMm10ID0gcDJtX2ludmFsaWQ7Cj4+Pj4gKwo+Pj4+ICsgICAgICAgIGlmICgg aXNfbW1pbyApCj4+Pj4gKyAgICAgICAgewo+Pj4+ICsgICAgICAgICAgICB1bnNpZ25lZCBsb25n IGdtZm4gPSBwYWRkcl90b19wZm4oYWRkcik7Cj4+Pj4gKwo+Pj4+ICsgICAgICAgICAgICBnZXRf Z2ZuX3F1ZXJ5X3VubG9ja2VkKGN1cnJkLCBnbWZuLCAmcDJtdCk7Cj4+Pj4gKwo+Pj4+ICsgICAg ICAgICAgICBpZiAoIHAybXQgPT0gcDJtX2lvcmVxX3NlcnZlciApCj4+Pj4gKyAgICAgICAgICAg IHsKPj4+PiArICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKPj4+PiArCj4+Pj4g KyAgICAgICAgICAgICAgICAvKgo+Pj4+ICsgICAgICAgICAgICAgICAgICogVmFsdWUgb2YgcyBj b3VsZCBiZSBzdGFsZSwgd2hlbiB3ZSBsb3N0IGEgcmFjZQo+Pj4gYmV0dGVyIGRlc2NyaWJlIGl0 IGluIGhpZ2hlciBsZXZlbCwgZS5nLiBqdXN0ICJubyBpb3JlcSBzZXJ2ZXIgaXMKPj4+IGZvdW5k Ii4KPj4+Cj4+PiB3aGF0J3MgdGhlIG1lYW5pbmcgb2YgImxvc3QgYSByYWNlIj8gc2hvdWxkbid0 IGl0IG1lYW4KPj4+ICJsaWtlbHkgd2Ugc3VmZmVyIGZyb20gYSByYWNlIHdpdGguLi4iPwo+Pj4K Pj4+PiArICAgICAgICAgICAgICAgICAqIHdpdGggZG1fb3Agd2hpY2ggdW5tYXBzIHAybV9pb3Jl cV9zZXJ2ZXIgZnJvbSB0aGUKPj4+PiArICAgICAgICAgICAgICAgICAqIGlvcmVxIHNlcnZlci4g WWV0IHRoZXJlJ3Mgbm8gY2hlYXAgd2F5IHRvIGF2b2lkCj4+PiBhZ2Fpbiwgbm90IHRhbGtpbmcg YWJvdXQgc3BlY2lmaWMgY29kZSwgZm9jdXMgb24gdGhlIG9wZXJhdGlvbiwKPj4+IGUuZy4gInJh Y2Ugd2l0aCBhbiB1bm1hcCBvcGVyYXRpb24gb24gdGhlIGlvcmVxIHNlcnZlciIKPj4+Cj4+Pj4g KyAgICAgICAgICAgICAgICAgKiB0aGlzLCBzbyBkZXZpY2UgbW9kZWwgbmVlZCB0byBkbyB0aGUg Y2hlY2suCj4+Pj4gKyAgICAgICAgICAgICAgICAgKi8KPj4+IEhvdyBpcyBhYm92ZSBjb21tZW50 IHJlbGF0ZWQgdG8gYmVsb3cgbGluZT8KPj4gV2VsbCwgdGhlICdzJyByZXR1cm5lZCBieSBwMm1f Z2V0X2lvcmVxX3NlcnZlcigpIGNhbiBiZSBzdGFsZSAtIGlmIHRoZQo+PiBpb3JlcSBzZXJ2ZXIg aXMgdW5tYXBwZWQKPj4gYWZ0ZXIgcDJtX2dldF9pb3JlcV9zZXJ2ZXIoKSByZXR1cm5zLiBDdXJy ZW50IHJhbmdlc2V0IGNvZGUgYWxzbyBoYXMKPj4gc3VjaCBpc3N1ZSBpZiB0aGUgUElPL01NSU8K Pj4gaXMgcmVtb3ZlZCBmcm9tIHRoZSByYW5nZXNldCBvZiB0aGUgaW9yZXEgc2VydmVyIGFmdGVy Cj4+IGh2bV9zZWxlY3RfaW9yZXFfc2VydmVyKCkgcmV0dXJucy4KPj4KPj4gU2luY2UgdXNpbmcg c3BpbmxvY2sgb3IgZG9tYWluX3BhdXNlL3VucGF1c2UgaXMgdG9vIGhlYXZ5IHdlaWdodGVkLCB3 ZQo+PiBzdWdnZXN0IHRoZSBkZXZpY2UKPj4gbW9kZWwgc2lkZSBjaGVjayB3aGV0aGVyIHRoZSBy ZWNlaXZlZCBpb3JlcSBpcyBhIHZhbGlkIG9uZS4KPj4KPj4gQWJvdmUgY29tbWVudHMgYXJlIGFk ZGVkLCBhY2NvcmRpbmcgdG8gSmFuICYgUGF1bCdzIHN1Z2dlc3Rpb24gaW4gdjcsIHRvCj4+IGxl dCBkZXZlbG9wZXIga25vdwo+PiB3ZSBkbyBub3QgZ3JhbnRlZSB0aGUgdmFsaWRpdHkgb2YgJ3Mn IHJldHVybmVkIGJ5Cj4+IHAybV9nZXRfaW9yZXFfc2VydmVyL2h2bV9zZWxlY3RfaW9yZXFfc2Vy dmVyKCkuCj4+Cj4+ICJWYWx1ZSBvZiBzIGNvdWxkIGJlIHN0YWxlLCB3aGVuIHdlIGxvc3QgYSBy YWNlIHdpdGguLi4iIGlzIG5vdCBmb3Igcwo+PiBiZWluZyBOVUxMLCBpdCdzIGFib3V0IHMgYmVp bmcKPj4gbm90IHZhbGlkLiBGb3IgYSBOVUxMIHJldHVybmVkLCBpdCBpcy4uLgo+IFRoZW4gaXQg bWFrZXMgc2Vuc2UuCj4KPj4+PiArICAgICAgICAgICAgICAgIHMgPSBwMm1fZ2V0X2lvcmVxX3Nl cnZlcihjdXJyZCwgJmZsYWdzKTsKPj4+PiArCj4+Pj4gKyAgICAgICAgICAgICAgICAvKgo+Pj4+ ICsgICAgICAgICAgICAgICAgICogSWYgcDJtdCBpcyBpb3JlcV9zZXJ2ZXIgYnV0IGlvcmVxX3Nl cnZlciBpcyBOVUxMLAo+Pj4gcDJtdCBpcyBkZWZpbml0ZWx5IGlvcmVxX3NlcnZlciB3aXRoaW4g dGhpcyBpZiBjb25kaXRpb24uCj4+Pgo+Pj4+ICsgICAgICAgICAgICAgICAgICogd2UgcHJvYmFi bHkgbG9zdCBhIHJhY2Ugd2l0aCB1bmJpbmRpbmcgb2YgaW9yZXEKPj4+PiArICAgICAgICAgICAg ICAgICAqIHNlcnZlciwganVzdCByZXRyeSB0aGUgYWNjZXNzLgo+Pj4+ICsgICAgICAgICAgICAg ICAgICovCj4+PiBsb29rcyByZWR1bmRhbnQgdG8gZWFybGllciBjb21tZW50LiBPciBlYXJsaWVy IG9uZSBzaG91bGQKPj4+IGJlIGp1c3QgcmVtb3ZlZD8KPj4gLi4uIGRlc2NyaWJlZCBoZXJlLCB0 byBqdXN0IHJldHJ5IHRoZSBhY2Nlc3MuCj4+Cj4+Pj4gKyAgICAgICAgICAgICAgICBpZiAoIHMg PT0gTlVMTCApCj4+Pj4gKyAgICAgICAgICAgICAgICB7Cj4+Pj4gKyAgICAgICAgICAgICAgICAg ICAgcmMgPSBYODZFTVVMX1JFVFJZOwo+Pj4+ICsgICAgICAgICAgICAgICAgICAgIHZpby0+aW9f cmVxLnN0YXRlID0gU1RBVEVfSU9SRVFfTk9ORTsKPj4+PiArICAgICAgICAgICAgICAgICAgICBi cmVhazsKPj4+PiArICAgICAgICAgICAgICAgIH0KPj4+PiArICAgICAgICAgICAgfQo+Pj4+ICsg ICAgICAgIH0KPj4+PiArCj4+Pj4gKyAgICAgICAgLyoKPj4+PiArICAgICAgICAgKiBWYWx1ZSBv ZiBzIGNvdWxkIGJlIHN0YWxlLCB3aGVuIHdlIGxvc3QgYSByYWNlIHdpdGggZG1fb3AKPj4+PiAr ICAgICAgICAgKiB3aGljaCB1bm1hcHMgdGhpcyBQSU8vTU1JTyBhZGRyZXNzIGZyb20gdGhlIGlv cmVxIHNlcnZlci4KPj4+PiArICAgICAgICAgKiBUaGUgZGV2aWNlIG1vZGVsIHNpZGUgbmVlZCB0 byBkbyB0aGUgY2hlY2suCj4+Pj4gKyAgICAgICAgICovCj4+PiBhbm90aGVyIGR1cGxpY2F0ZWQg Y29tbWVudC4gYmVsb3cgY29kZSBpcyBhY3R1YWxseSBmb3IgJ25vcm1hbCcKPj4+IE1NSU8gY2Fz ZS4uLgo+PiBUaGlzIGlzIGZvciBhbm90aGVyIHBvc3NpYmxlIHNpdHVhdGlvbiB3aGVuICdzJyBy ZXR1cm5lZCBieQo+PiBodm1fc2VsZWN0X2lvcmVxX3NlcnZlcigpCj4+IGJlY29tZXMgc3RhbGUg bGF0ZXIsIHdoZW4gdGhlIFBJTy9NTUlPIGlzIHJlbW92ZWQgZnJvbSB0aGUgcmFuZ2VzZXQuCj4+ Cj4+IExvZ2ljIGluIHRoaXMgaHZtZW11bF9kb19pbygpIGhhcyBhbHdheXMgYmVlbiBhIGJpdCBt aXhlZC4gSSBtZWFuLCBtYW55Cj4+IGNvcm5lciBjYXNlcwo+PiBhbmQgcmFjZSBjb25kaXRpb25z Ogo+PiAgICAtIGJldHdlZW4gdGhlIG1hcHBpbmcvdW5tYXBwaW5nIG9mIFBJTy9NTUlPIGZyb20g cmFuZ2VzZXQKPj4gICAgLSBiZXR3ZWVuIG1hcHBpbmcvdW5tYXBwaW5nIG9mIGlvcmVxIHNlcnZl ciBmcm9tIHAybV9pb3JlcV9zZXJ2ZXIKPj4gSSB0cmllZCB0byBnaXZlIG11Y2ggY29tbWVudHMg YXMgSSBjYW4gd2hlbiB0aGlzIHBhdGNoc2V0IGV2b2x2ZXMsIHlldAo+PiB0byBmaW5kIEkganVz dAo+PiBpbnRyb2R1Y2VkIG1vcmUgY29uZnVzaW9uLi4uCj4+Cj4+IEFueSBzdWdnZXN0aW9ucz8K PiBtYXliZSBkZXNjcmliZSB0aGUgd2hvbGUgc3RvcnkgYmVmb3JlIHRoZSB3aG9sZSBwMm1faW9y ZXFfc2VydmVyCj4gYnJhbmNoPwo+Cj4gCS8qIGNvbW1lbnQgKi8KPiAJaWYgKCBwMm10ID09IHAy bV9pb3JlcV9zZXJ2ZXIgKQo+Cj4gVGhlbiB5b3UgZG9uJ3QgbmVlZCBkdXBsaWNhdGUgYSBsb3Qg aW4gc3BlY2lmaWMgY29kZSBsaW5lPwoKWWVwLiBMZXQgbWUgdHJ5LiA6KQoKPj4+PiArICAgICAg ICBpZiAoICFzICkKPj4+PiArICAgICAgICAgICAgcyA9IGh2bV9zZWxlY3RfaW9yZXFfc2VydmVy KGN1cnJkLCAmcCk7Cj4+Pj4KPj4+PiAgICAgICAgICAgIC8qIElmIHRoZXJlIGlzIG5vIHN1aXRh YmxlIGJhY2tpbmcgRE0sIGp1c3QgaWdub3JlIGFjY2Vzc2VzICovCj4+Pj4gICAgICAgICAgICBp ZiAoICFzICkKPj4+PiBAQCAtMTg5LDcgKzI0Niw3IEBAIHN0YXRpYyBpbnQgaHZtZW11bF9kb19p bygKPj4+PiAgICAgICAgICAgIGVsc2UKPj4+PiAgICAgICAgICAgIHsKPj4+PiAgICAgICAgICAg ICAgICByYyA9IGh2bV9zZW5kX2lvcmVxKHMsICZwLCAwKTsKPj4+PiAtICAgICAgICAgICAgaWYg KCByYyAhPSBYODZFTVVMX1JFVFJZIHx8IGN1cnItPmRvbWFpbi0+aXNfc2h1dHRpbmdfZG93biAp Cj4+Pj4gKyAgICAgICAgICAgIGlmICggcmMgIT0gWDg2RU1VTF9SRVRSWSB8fCBjdXJyZC0+aXNf c2h1dHRpbmdfZG93biApCj4+Pj4gICAgICAgICAgICAgICAgICAgIHZpby0+aW9fcmVxLnN0YXRl ID0gU1RBVEVfSU9SRVFfTk9ORTsKPj4+PiAgICAgICAgICAgICAgICBlbHNlIGlmICggZGF0YV9p c19hZGRyICkKPj4+PiAgICAgICAgICAgICAgICAgICAgcmMgPSBYODZFTVVMX09LQVk7Cj4+Pj4g ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYyBiL3hlbi9hcmNoL3g4Ni9odm0v aW9yZXEuYyBpbmRleAo+Pj4+IGFkMmVkYWQuLjc0Njc5OWYgMTAwNjQ0Cj4+Pj4gLS0tIGEveGVu L2FyY2gveDg2L2h2bS9pb3JlcS5jCj4+Pj4gKysrIGIveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5j Cj4+Pj4gQEAgLTc1Myw2ICs3NTMsOCBAQCBpbnQgaHZtX2Rlc3Ryb3lfaW9yZXFfc2VydmVyKHN0 cnVjdCBkb21haW4gKmQsCj4+Pj4gaW9zZXJ2aWRfdCBpZCkKPj4+Pgo+Pj4+ICAgICAgICAgICAg ZG9tYWluX3BhdXNlKGQpOwo+Pj4+Cj4+Pj4gKyAgICAgICAgcDJtX2Rlc3Ryb3lfaW9yZXFfc2Vy dmVyKGQsIHMpOwo+Pj4+ICsKPj4+PiAgICAgICAgICAgIGh2bV9pb3JlcV9zZXJ2ZXJfZGlzYWJs ZShzLCAwKTsKPj4+Pgo+Pj4+ICAgICAgICAgICAgbGlzdF9kZWwoJnMtPmxpc3RfZW50cnkpOwo+ Pj4+IEBAIC05MTQsNiArOTE2LDQyIEBAIGludAo+Pj4+IGh2bV91bm1hcF9pb19yYW5nZV9mcm9t X2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90IGlkLAo+Pj4+ICAgICAg ICByZXR1cm4gcmM7Cj4+Pj4gICAgfQo+Pj4+Cj4+Pj4gK2ludCBodm1fbWFwX21lbV90eXBlX3Rv X2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90Cj4+IGlkLAo+Pj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdHlwZSwgdWludDMy X3QgZmxhZ3MpIHsKPj4+PiArICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzOwo+Pj4+ICsg ICAgaW50IHJjOwo+Pj4+ICsKPj4+PiArICAgIC8qIEZvciBub3csIG9ubHkgSFZNTUVNX2lvcmVx X3NlcnZlciBpcyBzdXBwb3J0ZWQuICovCj4+PiBvYnZpb3VzIGNvbW1lbnQKPj4gSUlSQywgdGhp cyBjb21tZW50KGFuZCB0aGUgYmVsb3cgb25lKSBpcyBhbm90aGVyIGNoYW5nZXMgdGhhdCBtYWRl Cj4+IGFjY29yZGluZyB0bwo+PiBzb21lIHJldmlldyBjb21tZW50cywgdG8gcmVtaW5kIHRoYXQg d2UgY2FuIGFkZCBuZXcgbWVtIHR5cGUgaW4gdGhlCj4+IGZ1dHVyZS4KPj4gU28gaG93IGFib3V0 IHdlIGFkZCBhIGxpbmUgLSAiRm9yIHRoZSBmdXR1cmUsIHdlIGNhbiBzdXBwb3J0IG90aGVyIG1l bQo+PiB0eXBlcyI/Cj4+Cj4+IEJ1dCB0aGF0IGFsc28gc291bmRzIHJlZHVuZGFudCB0byBtZS4g OikKPj4gU28gSSBhbSBhbHNvIE9LIHRvIHJlbW92ZSB0aGlzIGFuZCBiZWxvdyBjb21tZW50cy4K PiBvciBhZGQgYSBnZW5lcmFsIGNvbW1lbnQgZm9yIHdob2xlIGZ1bmN0aW9uLCBpbmRpY2F0aW5n IHRob3NlCj4gY2hlY2tzIGFyZSBleHRlbnNpYmxlIGluIHRoZSBmdXR1cmUuCgpPSy4gQSBnZW5l cmFsIGNvbW1lbnQgZm9yIHRoZSBmdW5jdGlvbiBzb3VuZHMgbW9yZSByZWFzb25hYmxlLgoKVGhh bmtzCll1Cgpbc25pcF0KCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0 dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK