From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [PATCH 2/3] drm/scheduler: add documentation Date: Fri, 25 May 2018 14:06:51 +0200 Message-ID: References: <20180525044548.21014-1-nayan26deshmukh@gmail.com> <20180525044548.21014-2-nayan26deshmukh@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0077.outbound.protection.outlook.com [104.47.38.77]) by gabe.freedesktop.org (Postfix) with ESMTPS id 060896E17A for ; Fri, 25 May 2018 12:07:09 +0000 (UTC) In-Reply-To: <20180525044548.21014-2-nayan26deshmukh@gmail.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Nayan Deshmukh , dri-devel@lists.freedesktop.org Cc: Alex Deucher List-Id: dri-devel@lists.freedesktop.org QW0gMjUuMDUuMjAxOCB1bSAwNjo0NSBzY2hyaWViIE5heWFuIERlc2htdWtoOgo+IGNvbnZlcnQg ZXhpc3RpbmcgcmF3IGNvbW1lbnRzIGludG8ga2VybmVsLWRvYyBmb3JtYXQgYXMgd2VsbAo+IGFz IGFkZCBuZXcgZG9jdW1lbnRhdGlvbgo+Cj4gU2lnbmVkLW9mZi1ieTogQWxleCBEZXVjaGVyIDxh bGV4YW5kZXIuZGV1Y2hlckBhbWQuY29tPgo+IFNpZ25lZC1vZmYtYnk6IE5heWFuIERlc2htdWto IDxuYXlhbjI2ZGVzaG11a2hAZ21haWwuY29tPgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL3Nj aGVkdWxlci9ncHVfc2NoZWR1bGVyLmMgfCAyMTQgKysrKysrKysrKysrKysrKysrKysrKysrLS0t LS0tCj4gICBpbmNsdWRlL2RybS9ncHVfc2NoZWR1bGVyLmggICAgICAgICAgICAgICB8IDE1MyAr KysrKysrKysrKysrKysrKy0tLS0KPiAgIDIgZmlsZXMgY2hhbmdlZCwgMjk2IGluc2VydGlvbnMo KyksIDcxIGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9zY2hl ZHVsZXIvZ3B1X3NjaGVkdWxlci5jIGIvZHJpdmVycy9ncHUvZHJtL3NjaGVkdWxlci9ncHVfc2No ZWR1bGVyLmMKPiBpbmRleCA0NGQ0ODA3NjhkZmUuLmM3MGM5ODNlM2U3NCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vc2NoZWR1bGVyL2dwdV9zY2hlZHVsZXIuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9zY2hlZHVsZXIvZ3B1X3NjaGVkdWxlci5jCj4gQEAgLTIxLDYgKzIxLDI5IEBA Cj4gICAgKgo+ICAgICovCj4gICAKPiArLyoqCj4gKyAqIERPQzogT3ZlcnZpZXcKPiArICoKPiAr ICogVGhlIEdQVSBzY2hlZHVsZXIgcHJvdmlkZXMgZW50aXRpZXMgd2hpY2ggYWxsb3cgdXNlcnNw YWNlIHRvIHB1c2ggam9icwo+ICsgKiBpbnRvIHNvZnR3YXJlIHF1ZXVlcyB3aGljaCBhcmUgdGhl biBzY2hlZHVsZWQgb24gYSBoYXJkd2FyZSBydW4gcXVldWUuCj4gKyAqIFRoZSBzb2Z0d2FyZSBx dWV1ZXMgaGF2ZSBhIHByaW9yaXR5IGFtb25nIHRoZW0uIFRoZSBzY2hlZHVsZXIgc2VsZWN0cyB0 aGUgZW50aXRpZXMKPiArICogZnJvbSB0aGUgcnVuIHF1ZXVlIHVzaW5nIEZJRk8uIFRoZSBzY2hl ZHVsZXIgcHJvdmlkZXMgZGVwZW5kZW5jeSBoYW5kbGluZwo+ICsgKiBmZWF0dXJlcyBhbW9uZyBq b2JzLiBUaGUgZHJpdmVyIGlzIHN1cHBvc2VkIHRvIHByb3ZpZGUgZnVuY3Rpb25zIGZvciBiYWNr ZW5kCj4gKyAqIG9wZXJhdGlvbnMgdG8gdGhlIHNjaGVkdWxlciBsaWtlIHN1Ym1pdHRpbmcgYSBq b2IgdG8gaGFyZHdhcmUgcnVuIHF1ZXVlLAo+ICsgKiByZXR1cm5pbmcgdGhlIGRlcGVuZGVuY3kg b2YgYSBqb2IgZXRjLgpzL2RlcGVuZGVuY3kvZGVwZW5kZW5jaWVzLwoKQWxleCwgTWljaGVsIG9y IG90aGVyczogVGhlIGRlc2NyaXB0aW9ucyBzZWVtcyByaWdodCwgYnV0IGl0IHNvdW5kcyBsaWtl IAp3ZSBjb3VsZCBzdGlsbCBpbXByb3ZlIHRoZSB3b3JkaW5nIGEgYml0LgoKU2luY2UgSSdtIG5v dCBhIG5hdGl2ZSBzcGVha2VyIG9mIEVuZ2xpc2ggZWl0aGVyIGFuZCBob25lc3RseSBub3Qgc28g Cmdvb2QgYXQgaXQsIGRvIHlvdSBndXlzIGhhdmUgYW55IHN1Z2dlc3Rpb25zIGhvdyB0byBiZXR0 ZXIgd3JpdGUgdGhhdD8KCkFwYXJ0IGZyb20gdGhhdCBsb29rcyByZWFsbHkgZ29vZCB0byBtZSwK Q2hyaXN0aWFuLgoKPiArICoKPiArICogVGhlIG9yZ2FuaXNhdGlvbiBvZiB0aGUgc2NoZWR1bGVy IGlzIHRoZSBmb2xsb3dpbmc6LQo+ICsgKgo+ICsgKiAxLiBFYWNoIHJpbmcgYnVmZmVyIGhhcyBv bmUgc2NoZWR1bGVyCj4gKyAqIDIuIEVhY2ggc2NoZWR1bGVyIGhhcyBtdWx0aXBsZSBydW4gcXVl dWVzIHdpdGggZGlmZmVyZW50IHByaW9yaXRpZXMKPiArICogICAgKGkuZS4gSElHSF9IVyxISUdI X1NXLCBLRVJORUwsIE5PUk1BTCkKPiArICogMy4gRWFjaCBydW4gcXVldWUgaGFzIGEgcXVldWUg b2YgZW50aXRpZXMgdG8gc2NoZWR1bGUKPiArICogNC4gRW50aXRpZXMgdGhlbXNlbHZlcyBtYWlu dGFpbiBhIHF1ZXVlIG9mIGpvYnMgdGhhdCB3aWxsIGJlIHNjaGVkdWxlZCBvbgo+ICsgKiAgICB0 aGUgaGFyZHdhcmUuCj4gKyAqCj4gKyAqIFRoZSBqb2JzIGluIGEgZW50aXR5IGFyZSBhbHdheXMg c2NoZWR1bGVkIGluIHRoZSBvcmRlciB0aGF0IHRoZXkgd2VyZSBwdXNoZWQuCj4gKyAqLwo+ICsK PiAgICNpbmNsdWRlIDxsaW51eC9rdGhyZWFkLmg+Cj4gICAjaW5jbHVkZSA8bGludXgvd2FpdC5o Pgo+ICAgI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+Cj4gQEAgLTM5LDcgKzYyLDEzIEBAIHN0YXRp YyBib29sIGRybV9zY2hlZF9lbnRpdHlfaXNfcmVhZHkoc3RydWN0IGRybV9zY2hlZF9lbnRpdHkg KmVudGl0eSk7Cj4gICBzdGF0aWMgdm9pZCBkcm1fc2NoZWRfd2FrZXVwKHN0cnVjdCBkcm1fZ3B1 X3NjaGVkdWxlciAqc2NoZWQpOwo+ICAgc3RhdGljIHZvaWQgZHJtX3NjaGVkX3Byb2Nlc3Nfam9i KHN0cnVjdCBkbWFfZmVuY2UgKmYsIHN0cnVjdCBkbWFfZmVuY2VfY2IgKmNiKTsKPiAgIAo+IC0v KiBJbml0aWFsaXplIGEgZ2l2ZW4gcnVuIHF1ZXVlIHN0cnVjdCAqLwo+ICsvKioKPiArICogZHJt X3NjaGVkX3JxX2luaXQgLSBpbml0aWFsaXplIGEgZ2l2ZW4gcnVuIHF1ZXVlIHN0cnVjdAo+ICsg Kgo+ICsgKiBAcnE6IHNjaGVkdWxlciBydW4gcXVldWUKPiArICoKPiArICogSW5pdGlhbGl6ZXMg YSBzY2hlZHVsZXIgcnVucXVldWUuCj4gKyAqLwo+ICAgc3RhdGljIHZvaWQgZHJtX3NjaGVkX3Jx X2luaXQoc3RydWN0IGRybV9zY2hlZF9ycSAqcnEpCj4gICB7Cj4gICAJc3Bpbl9sb2NrX2luaXQo JnJxLT5sb2NrKTsKPiBAQCAtNDcsNiArNzYsMTQgQEAgc3RhdGljIHZvaWQgZHJtX3NjaGVkX3Jx X2luaXQoc3RydWN0IGRybV9zY2hlZF9ycSAqcnEpCj4gICAJcnEtPmN1cnJlbnRfZW50aXR5ID0g TlVMTDsKPiAgIH0KPiAgIAo+ICsvKioKPiArICogZHJtX3NjaGVkX3JxX2FkZF9lbnRpdHkgLSBh ZGQgYW4gZW50aXR5Cj4gKyAqCj4gKyAqIEBycTogc2NoZWR1bGVyIHJ1biBxdWV1ZQo+ICsgKiBA ZW50aXR5OiBzY2hlZHVsZXIgZW50aXR5Cj4gKyAqCj4gKyAqIEFkZHMgYSBzY2hlZHVsZXIgZW50 aXR5IHRvIHRoZSBydW4gcXVldWUuCj4gKyAqLwo+ICAgc3RhdGljIHZvaWQgZHJtX3NjaGVkX3Jx X2FkZF9lbnRpdHkoc3RydWN0IGRybV9zY2hlZF9ycSAqcnEsCj4gICAJCQkJICAgIHN0cnVjdCBk cm1fc2NoZWRfZW50aXR5ICplbnRpdHkpCj4gICB7Cj4gQEAgLTU3LDYgKzk0LDE0IEBAIHN0YXRp YyB2b2lkIGRybV9zY2hlZF9ycV9hZGRfZW50aXR5KHN0cnVjdCBkcm1fc2NoZWRfcnEgKnJxLAo+ ICAgCXNwaW5fdW5sb2NrKCZycS0+bG9jayk7Cj4gICB9Cj4gICAKPiArLyoqCj4gKyAqIGRybV9z Y2hlZF9ycV9yZW1vdmVfZW50aXR5IC0gcmVtb3ZlIGFuIGVudGl0eQo+ICsgKgo+ICsgKiBAcnE6 IHNjaGVkdWxlciBydW4gcXVldWUKPiArICogQGVudGl0eTogc2NoZWR1bGVyIGVudGl0eQo+ICsg Kgo+ICsgKiBSZW1vdmVzIGEgc2NoZWR1bGVyIGVudGl0eSBmcm9tIHRoZSBydW4gcXVldWUuCj4g KyAqLwo+ICAgc3RhdGljIHZvaWQgZHJtX3NjaGVkX3JxX3JlbW92ZV9lbnRpdHkoc3RydWN0IGRy bV9zY2hlZF9ycSAqcnEsCj4gICAJCQkJICAgICAgIHN0cnVjdCBkcm1fc2NoZWRfZW50aXR5ICpl bnRpdHkpCj4gICB7Cj4gQEAgLTcwLDkgKzExNSw5IEBAIHN0YXRpYyB2b2lkIGRybV9zY2hlZF9y cV9yZW1vdmVfZW50aXR5KHN0cnVjdCBkcm1fc2NoZWRfcnEgKnJxLAo+ICAgfQo+ICAgCj4gICAv KioKPiAtICogU2VsZWN0IGFuIGVudGl0eSB3aGljaCBjb3VsZCBwcm92aWRlIGEgam9iIHRvIHJ1 bgo+ICsgKiBkcm1fc2NoZWRfcnFfc2VsZWN0X2VudGl0eSAtIFNlbGVjdCBhbiBlbnRpdHkgd2hp Y2ggY291bGQgcHJvdmlkZSBhIGpvYiB0byBydW4KPiAgICAqCj4gLSAqIEBycQkJVGhlIHJ1biBx dWV1ZSB0byBjaGVjay4KPiArICogQHJxOiBzY2hlZHVsZXIgcnVuIHF1ZXVlIHRvIGNoZWNrLgo+ ICAgICoKPiAgICAqIFRyeSB0byBmaW5kIGEgcmVhZHkgZW50aXR5LCByZXR1cm5zIE5VTEwgaWYg bm9uZSBmb3VuZC4KPiAgICAqLwo+IEBAIC0xMTIsMTUgKzE1NywxNiBAQCBkcm1fc2NoZWRfcnFf c2VsZWN0X2VudGl0eShzdHJ1Y3QgZHJtX3NjaGVkX3JxICpycSkKPiAgIH0KPiAgIAo+ICAgLyoq Cj4gLSAqIEluaXQgYSBjb250ZXh0IGVudGl0eSB1c2VkIGJ5IHNjaGVkdWxlciB3aGVuIHN1Ym1p dCB0byBIVyByaW5nLgo+ICsgKiBkcm1fc2NoZWRfZW50aXR5X2luaXQgLSBJbml0IGEgY29udGV4 dCBlbnRpdHkgdXNlZCBieSBzY2hlZHVsZXIgd2hlbgo+ICsgKiBzdWJtaXQgdG8gSFcgcmluZy4K PiAgICAqCj4gLSAqIEBzY2hlZAlUaGUgcG9pbnRlciB0byB0aGUgc2NoZWR1bGVyCj4gLSAqIEBl bnRpdHkJVGhlIHBvaW50ZXIgdG8gYSB2YWxpZCBkcm1fc2NoZWRfZW50aXR5Cj4gLSAqIEBycQkJ VGhlIHJ1biBxdWV1ZSB0aGlzIGVudGl0eSBiZWxvbmdzCj4gLSAqIEBndWlsdHkgICAgICBhdG9t aWNfdCBzZXQgdG8gMSB3aGVuIGEgam9iIG9uIHRoaXMgcXVldWUKPiAtICogICAgICAgICAgICAg IGlzIGZvdW5kIHRvIGJlIGd1aWx0eSBjYXVzaW5nIGEgdGltZW91dAo+ICsgKiBAc2NoZWQ6IHNj aGVkdWxlciBpbnN0YW5jZQo+ICsgKiBAZW50aXR5OiBzY2hlZHVsZXIgZW50aXR5IHRvIGluaXQK PiArICogQHJxOiB0aGUgcnVuIHF1ZXVlIHRoaXMgZW50aXR5IGJlbG9uZ3MKPiArICogQGd1aWx0 eTogYXRvbWljX3Qgc2V0IHRvIDEgd2hlbiBhIGpvYiBvbiB0aGlzIHF1ZXVlCj4gKyAqICAgICAg ICAgIGlzIGZvdW5kIHRvIGJlIGd1aWx0eSBjYXVzaW5nIGEgdGltZW91dAo+ICAgICoKPiAtICog cmV0dXJuIDAgaWYgc3VjY2VlZC4gbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlCj4gKyAq IFJldHVybnMgMCBvbiBzdWNjZXNzIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJl Lgo+ICAgKi8KPiAgIGludCBkcm1fc2NoZWRfZW50aXR5X2luaXQoc3RydWN0IGRybV9ncHVfc2No ZWR1bGVyICpzY2hlZCwKPiAgIAkJCSAgc3RydWN0IGRybV9zY2hlZF9lbnRpdHkgKmVudGl0eSwK PiBAQCAtMTQ5LDEwICsxOTUsMTAgQEAgaW50IGRybV9zY2hlZF9lbnRpdHlfaW5pdChzdHJ1Y3Qg ZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkLAo+ICAgRVhQT1JUX1NZTUJPTChkcm1fc2NoZWRfZW50 aXR5X2luaXQpOwo+ICAgCj4gICAvKioKPiAtICogUXVlcnkgaWYgZW50aXR5IGlzIGluaXRpYWxp emVkCj4gKyAqIGRybV9zY2hlZF9lbnRpdHlfaXNfaW5pdGlhbGl6ZWQgLSBRdWVyeSBpZiBlbnRp dHkgaXMgaW5pdGlhbGl6ZWQKPiAgICAqCj4gLSAqIEBzY2hlZCAgICAgICBQb2ludGVyIHRvIHNj aGVkdWxlciBpbnN0YW5jZQo+IC0gKiBAZW50aXR5CVRoZSBwb2ludGVyIHRvIGEgdmFsaWQgc2No ZWR1bGVyIGVudGl0eQo+ICsgKiBAc2NoZWQ6IFBvaW50ZXIgdG8gc2NoZWR1bGVyIGluc3RhbmNl Cj4gKyAqIEBlbnRpdHk6IFRoZSBwb2ludGVyIHRvIGEgdmFsaWQgc2NoZWR1bGVyIGVudGl0eQo+ ICAgICoKPiAgICAqIHJldHVybiB0cnVlIGlmIGVudGl0eSBpcyBpbml0aWFsaXplZCwgZmFsc2Ug b3RoZXJ3aXNlCj4gICAqLwo+IEBAIC0xNjQsMTEgKzIxMCwxMSBAQCBzdGF0aWMgYm9vbCBkcm1f c2NoZWRfZW50aXR5X2lzX2luaXRpYWxpemVkKHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2No ZWQsCj4gICB9Cj4gICAKPiAgIC8qKgo+IC0gKiBDaGVjayBpZiBlbnRpdHkgaXMgaWRsZQo+ICsg KiBkcm1fc2NoZWRfZW50aXR5X2lzX2lkbGUgLSBDaGVjayBpZiBlbnRpdHkgaXMgaWRsZQo+ICAg ICoKPiAtICogQGVudGl0eQlUaGUgcG9pbnRlciB0byBhIHZhbGlkIHNjaGVkdWxlciBlbnRpdHkK PiArICogQGVudGl0eTogc2NoZWR1bGVyIGVudGl0eQo+ICAgICoKPiAtICogUmV0dXJuIHRydWUg aWYgZW50aXR5IGRvbid0IGhhcyBhbnkgdW5zY2hlZHVsZWQgam9icy4KPiArICogUmV0dXJucyB0 cnVlIGlmIHRoZSBlbnRpdHkgZG9lcyBub3QgaGF2ZSBhbnkgdW5zY2hlZHVsZWQgam9icy4KPiAg ICAqLwo+ICAgc3RhdGljIGJvb2wgZHJtX3NjaGVkX2VudGl0eV9pc19pZGxlKHN0cnVjdCBkcm1f c2NoZWRfZW50aXR5ICplbnRpdHkpCj4gICB7Cj4gQEAgLTE4MCw5ICsyMjYsOSBAQCBzdGF0aWMg Ym9vbCBkcm1fc2NoZWRfZW50aXR5X2lzX2lkbGUoc3RydWN0IGRybV9zY2hlZF9lbnRpdHkgKmVu dGl0eSkKPiAgIH0KPiAgIAo+ICAgLyoqCj4gLSAqIENoZWNrIGlmIGVudGl0eSBpcyByZWFkeQo+ ICsgKiBkcm1fc2NoZWRfZW50aXR5X2lzX3JlYWR5IC0gQ2hlY2sgaWYgZW50aXR5IGlzIHJlYWR5 Cj4gICAgKgo+IC0gKiBAZW50aXR5CVRoZSBwb2ludGVyIHRvIGEgdmFsaWQgc2NoZWR1bGVyIGVu dGl0eQo+ICsgKiBAZW50aXR5OiBzY2hlZHVsZXIgZW50aXR5Cj4gICAgKgo+ICAgICogUmV0dXJu IHRydWUgaWYgZW50aXR5IGNvdWxkIHByb3ZpZGUgYSBqb2IuCj4gICAgKi8KPiBAQCAtMjEwLDEy ICsyNTYsMTIgQEAgc3RhdGljIHZvaWQgZHJtX3NjaGVkX2VudGl0eV9raWxsX2pvYnNfY2Ioc3Ry dWN0IGRtYV9mZW5jZSAqZiwKPiAgIAo+ICAgCj4gICAvKioKPiAtICogRGVzdHJveSBhIGNvbnRl eHQgZW50aXR5Cj4gKyAqIGRybV9zY2hlZF9lbnRpdHlfZG9fcmVsZWFzZSAtIERlc3Ryb3kgYSBj b250ZXh0IGVudGl0eQo+ICAgICoKPiAtICogQHNjaGVkICAgICAgIFBvaW50ZXIgdG8gc2NoZWR1 bGVyIGluc3RhbmNlCj4gLSAqIEBlbnRpdHkJVGhlIHBvaW50ZXIgdG8gYSB2YWxpZCBzY2hlZHVs ZXIgZW50aXR5Cj4gKyAqIEBzY2hlZDogc2NoZWR1bGVyIGluc3RhbmNlCj4gKyAqIEBlbnRpdHk6 IHNjaGVkdWxlciBlbnRpdHkKPiAgICAqCj4gLSAqIFNwbGl0dGluZyBkcm1fc2NoZWRfZW50aXR5 X2ZpbmkoKSBpbnRvIHR3byBmdW5jdGlvbnMsIFRoZSBmaXJzdCBvbmUgaXMgZG9lcyB0aGUgd2Fp dGluZywKPiArICogU3BsaXR0aW5nIGRybV9zY2hlZF9lbnRpdHlfZmluaSgpIGludG8gdHdvIGZ1 bmN0aW9ucywgVGhlIGZpcnN0IG9uZSBkb2VzIHRoZSB3YWl0aW5nLAo+ICAgICogcmVtb3ZlcyB0 aGUgZW50aXR5IGZyb20gdGhlIHJ1bnF1ZXVlIGFuZCByZXR1cm5zIGFuIGVycm9yIHdoZW4gdGhl IHByb2Nlc3Mgd2FzIGtpbGxlZC4KPiAgICAqLwo+ICAgdm9pZCBkcm1fc2NoZWRfZW50aXR5X2Rv X3JlbGVhc2Uoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCwKPiBAQCAtMjM3LDEyICsy ODMsMTMgQEAgdm9pZCBkcm1fc2NoZWRfZW50aXR5X2RvX3JlbGVhc2Uoc3RydWN0IGRybV9ncHVf c2NoZWR1bGVyICpzY2hlZCwKPiAgIEVYUE9SVF9TWU1CT0woZHJtX3NjaGVkX2VudGl0eV9kb19y ZWxlYXNlKTsKPiAgIAo+ICAgLyoqCj4gLSAqIERlc3Ryb3kgYSBjb250ZXh0IGVudGl0eQo+ICsg KiBkcm1fc2NoZWRfZW50aXR5X2NsZWFudXAgLSBEZXN0cm95IGEgY29udGV4dCBlbnRpdHkKPiAg ICAqCj4gLSAqIEBzY2hlZCAgICAgICBQb2ludGVyIHRvIHNjaGVkdWxlciBpbnN0YW5jZQo+IC0g KiBAZW50aXR5CVRoZSBwb2ludGVyIHRvIGEgdmFsaWQgc2NoZWR1bGVyIGVudGl0eQo+ICsgKiBA c2NoZWQ6IHNjaGVkdWxlciBpbnN0YW5jZQo+ICsgKiBAZW50aXR5OiBzY2hlZHVsZXIgZW50aXR5 Cj4gICAgKgo+IC0gKiBUaGUgc2Vjb25kIG9uZSB0aGVuIGdvZXMgb3ZlciB0aGUgZW50aXR5IGFu ZCBzaWduYWxzIGFsbCBqb2JzIHdpdGggYW4gZXJyb3IgY29kZS4KPiArICogVGhpcyBzaG91bGQg YmUgY2FsbGVkIGFmdGVyIEBkcm1fc2NoZWRfZW50aXR5X2RvX3JlbGVhc2UuIEl0IGdvZXMgb3Zl ciB0aGUKPiArICogZW50aXR5IGFuZCBzaWduYWxzIGFsbCBqb2JzIHdpdGggYW4gZXJyb3IgY29k ZSBpZiB0aGUgcHJvY2VzcyB3YXMga2lsbGVkLgo+ICAgICovCj4gICB2b2lkIGRybV9zY2hlZF9l bnRpdHlfY2xlYW51cChzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkLAo+ICAgCQkJICAg c3RydWN0IGRybV9zY2hlZF9lbnRpdHkgKmVudGl0eSkKPiBAQCAtMjgxLDYgKzMyOCwxNCBAQCB2 b2lkIGRybV9zY2hlZF9lbnRpdHlfY2xlYW51cChzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNj aGVkLAo+ICAgfQo+ICAgRVhQT1JUX1NZTUJPTChkcm1fc2NoZWRfZW50aXR5X2NsZWFudXApOwo+ ICAgCj4gKy8qKgo+ICsgKiBkcm1fc2NoZWRfZW50aXR5X2ZpbmkgLSBEZXN0cm95IGEgY29udGV4 dCBlbnRpdHkKPiArICoKPiArICogQHNjaGVkOiBzY2hlZHVsZXIgaW5zdGFuY2UKPiArICogQGVu dGl0eTogc2NoZWR1bGVyIGVudGl0eQo+ICsgKgo+ICsgKiBDYWxscyBkcm1fc2NoZWRfZW50aXR5 X2RvX3JlbGVhc2UoKSBhbmQgZHJtX3NjaGVkX2VudGl0eV9jbGVhbnVwKCkKPiArICovCj4gICB2 b2lkIGRybV9zY2hlZF9lbnRpdHlfZmluaShzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVk LAo+ICAgCQkJCXN0cnVjdCBkcm1fc2NoZWRfZW50aXR5ICplbnRpdHkpCj4gICB7Cj4gQEAgLTMw Niw2ICszNjEsMTUgQEAgc3RhdGljIHZvaWQgZHJtX3NjaGVkX2VudGl0eV9jbGVhcl9kZXAoc3Ry dWN0IGRtYV9mZW5jZSAqZiwgc3RydWN0IGRtYV9mZW5jZV9jYgo+ICAgCWRtYV9mZW5jZV9wdXQo Zik7Cj4gICB9Cj4gICAKPiArLyoqCj4gKyAqIGRybV9zY2hlZF9lbnRpdHlfc2V0X3JxIC0gU2V0 cyB0aGUgcnVuIHF1ZXVlIGZvciBhbiBlbnRpdHkKPiArICoKPiArICogQGVudGl0eTogc2NoZWR1 bGVyIGVudGl0eQo+ICsgKiBAcnE6IHNjaGVkdWxlciBydW4gcXVldWUKPiArICoKPiArICogU2V0 cyB0aGUgcnVuIHF1ZXVlIGZvciBhbiBlbnRpdHkgYW5kIHJlbW92ZXMgdGhlIGVudGl0eSBmcm9t IHRoZSBwcmV2aW91cwo+ICsgKiBydW4gcXVldWUgaW4gd2hpY2ggd2FzIHByZXNlbnQuCj4gKyAq Lwo+ICAgdm9pZCBkcm1fc2NoZWRfZW50aXR5X3NldF9ycShzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0 eSAqZW50aXR5LAo+ICAgCQkJICAgICBzdHJ1Y3QgZHJtX3NjaGVkX3JxICpycSkKPiAgIHsKPiBA QCAtMzI1LDYgKzM4OSwxNCBAQCB2b2lkIGRybV9zY2hlZF9lbnRpdHlfc2V0X3JxKHN0cnVjdCBk cm1fc2NoZWRfZW50aXR5ICplbnRpdHksCj4gICB9Cj4gICBFWFBPUlRfU1lNQk9MKGRybV9zY2hl ZF9lbnRpdHlfc2V0X3JxKTsKPiAgIAo+ICsvKioKPiArICogZHJtX3NjaGVkX2RlcGVuZGVuY3lf b3B0aW1pemVkCj4gKyAqCj4gKyAqIEBmZW5jZTogdGhlIGRlcGVuZGVuY3kgZmVuY2UKPiArICog QGVudGl0eTogdGhlIGVudGl0eSB3aGljaCBkZXBlbmRzIG9uIHRoZSBhYm92ZSBmZW5jZQo+ICsg Kgo+ICsgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGRlcGVuZGVuY3kgY2FuIGJlIG9wdGltaXplZCBh bmQgZmFsc2Ugb3RoZXJ3aXNlCj4gKyAqLwo+ICAgYm9vbCBkcm1fc2NoZWRfZGVwZW5kZW5jeV9v cHRpbWl6ZWQoc3RydWN0IGRtYV9mZW5jZSogZmVuY2UsCj4gICAJCQkJICAgIHN0cnVjdCBkcm1f c2NoZWRfZW50aXR5ICplbnRpdHkpCj4gICB7Cj4gQEAgLTQxMyw5ICs0ODUsMTAgQEAgZHJtX3Nj aGVkX2VudGl0eV9wb3Bfam9iKHN0cnVjdCBkcm1fc2NoZWRfZW50aXR5ICplbnRpdHkpCj4gICB9 Cj4gICAKPiAgIC8qKgo+IC0gKiBTdWJtaXQgYSBqb2IgdG8gdGhlIGpvYiBxdWV1ZQo+ICsgKiBk cm1fc2NoZWRfZW50aXR5X3B1c2hfam9iIC0gU3VibWl0IGEgam9iIHRvIHRoZSBlbnRpdHkncyBq b2IgcXVldWUKPiAgICAqCj4gLSAqIEBzY2hlZF9qb2IJCVRoZSBwb2ludGVyIHRvIGpvYiByZXF1 aXJlZCB0byBzdWJtaXQKPiArICogQHNjaGVkX2pvYjogam9iIHRvIHN1Ym1pdAo+ICsgKiBAZW50 aXR5OiBzY2hlZHVsZXIgZW50aXR5Cj4gICAgKgo+ICAgICogTm90ZTogVG8gZ3VhcmFudGVlIHRo YXQgdGhlIG9yZGVyIG9mIGluc2VydGlvbiB0byBxdWV1ZSBtYXRjaGVzCj4gICAgKiB0aGUgam9i J3MgZmVuY2Ugc2VxdWVuY2UgbnVtYmVyIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlCj4gQEAgLTUw Niw2ICs1NzksMTMgQEAgc3RhdGljIHZvaWQgZHJtX3NjaGVkX2pvYl90aW1lZG91dChzdHJ1Y3Qg d29ya19zdHJ1Y3QgKndvcmspCj4gICAJam9iLT5zY2hlZC0+b3BzLT50aW1lZG91dF9qb2Ioam9i KTsKPiAgIH0KPiAgIAo+ICsvKioKPiArICogZHJtX3NjaGVkX2h3X2pvYl9yZXNldCAtIHN0b3Ag dGhlIHNjaGVkdWxlciBpZiBpdCBjb250YWlucyB0aGUgYmFkIGpvYgo+ICsgKgo+ICsgKiBAc2No ZWQ6IHNjaGVkdWxlciBpbnN0YW5jZQo+ICsgKiBAYmFkOiBiYWQgc2NoZWR1bGVyIGpvYgo+ICsg Kgo+ICsgKi8KPiAgIHZvaWQgZHJtX3NjaGVkX2h3X2pvYl9yZXNldChzdHJ1Y3QgZHJtX2dwdV9z Y2hlZHVsZXIgKnNjaGVkLCBzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAqYmFkKQo+ICAgewo+ICAgCXN0 cnVjdCBkcm1fc2NoZWRfam9iICpzX2pvYjsKPiBAQCAtNTUwLDYgKzYzMCwxMiBAQCB2b2lkIGRy bV9zY2hlZF9od19qb2JfcmVzZXQoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCwgc3Ry dWN0IGRybV9zY2hlZF9qbwo+ICAgfQo+ICAgRVhQT1JUX1NZTUJPTChkcm1fc2NoZWRfaHdfam9i X3Jlc2V0KTsKPiAgIAo+ICsvKioKPiArICogZHJtX3NjaGVkX2pvYl9yZWNvdmVyeSAtIHJlY292 ZXIgam9icyBhZnRlciBhIHJlc2V0Cj4gKyAqCj4gKyAqIEBzY2hlZDogc2NoZWR1bGVyIGluc3Rh bmNlCj4gKyAqCj4gKyAqLwo+ICAgdm9pZCBkcm1fc2NoZWRfam9iX3JlY292ZXJ5KHN0cnVjdCBk cm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQpCj4gICB7Cj4gICAJc3RydWN0IGRybV9zY2hlZF9qb2Ig KnNfam9iLCAqdG1wOwo+IEBAIC01OTksMTAgKzY4NSwxNyBAQCB2b2lkIGRybV9zY2hlZF9qb2Jf cmVjb3Zlcnkoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCkKPiAgIEVYUE9SVF9TWU1C T0woZHJtX3NjaGVkX2pvYl9yZWNvdmVyeSk7Cj4gICAKPiAgIC8qKgo+IC0gKiBJbml0IGEgc2No ZWRfam9iIHdpdGggYmFzaWMgZmllbGQKPiArICogZHJtX3NjaGVkX2pvYl9pbml0IC0gaW5pdCBh IHNjaGVkdWxlciBqb2IKPiAgICAqCj4gLSAqIE5vdGU6IFJlZmVyIHRvIGRybV9zY2hlZF9lbnRp dHlfcHVzaF9qb2IgZG9jdW1lbnRhdGlvbgo+ICsgKiBAam9iOiBzY2hlZHVsZXIgam9iIHRvIGlu aXQKPiArICogQHNjaGVkOiBzY2hlZHVsZXIgaW5zdGFuY2UKPiArICogQGVudGl0eTogc2NoZWR1 bGVyIGVudGl0eSB0byB1c2UKPiArICogQG93bmVyOiBqb2Igb3duZXIgZm9yIGRlYnVnZ2luZwo+ ICsgKgo+ICsgKiBSZWZlciB0byBkcm1fc2NoZWRfZW50aXR5X3B1c2hfam9iKCkgZG9jdW1lbnRh dGlvbgo+ICAgICogZm9yIGxvY2tpbmcgY29uc2lkZXJhdGlvbnMuCj4gKyAqCj4gKyAqIFJldHVy bnMgMCBmb3Igc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuCj4gICAgKi8K PiAgIGludCBkcm1fc2NoZWRfam9iX2luaXQoc3RydWN0IGRybV9zY2hlZF9qb2IgKmpvYiwKPiAg IAkJICAgICAgIHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQsCj4gQEAgLTYyNiw3ICs3 MTksMTEgQEAgaW50IGRybV9zY2hlZF9qb2JfaW5pdChzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAqam9i LAo+ICAgRVhQT1JUX1NZTUJPTChkcm1fc2NoZWRfam9iX2luaXQpOwo+ICAgCj4gICAvKioKPiAt ICogUmV0dXJuIHR1cmUgaWYgd2UgY2FuIHB1c2ggbW9yZSBqb2JzIHRvIHRoZSBody4KPiArICog ZHJtX3NjaGVkX3JlYWR5IC0gaXMgdGhlIHNjaGVkdWxlciByZWFkeQo+ICsgKgo+ICsgKiBAc2No ZWQ6IHNjaGVkdWxlciBpbnN0YW5jZQo+ICsgKgo+ICsgKiBSZXR1cm4gdHJ1ZSBpZiB3ZSBjYW4g cHVzaCBtb3JlIGpvYnMgdG8gdGhlIGh3LCBvdGhlcndpc2UgZmFsc2UuCj4gICAgKi8KPiAgIHN0 YXRpYyBib29sIGRybV9zY2hlZF9yZWFkeShzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVk KQo+ICAgewo+IEBAIC02MzUsNyArNzMyLDEwIEBAIHN0YXRpYyBib29sIGRybV9zY2hlZF9yZWFk eShzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkKQo+ICAgfQo+ICAgCj4gICAvKioKPiAt ICogV2FrZSB1cCB0aGUgc2NoZWR1bGVyIHdoZW4gaXQgaXMgcmVhZHkKPiArICogZHJtX3NjaGVk X3dha2V1cCAtIFdha2UgdXAgdGhlIHNjaGVkdWxlciB3aGVuIGl0IGlzIHJlYWR5Cj4gKyAqCj4g KyAqIEBzY2hlZDogc2NoZWR1bGVyIGluc3RhbmNlCj4gKyAqCj4gICAgKi8KPiAgIHN0YXRpYyB2 b2lkIGRybV9zY2hlZF93YWtldXAoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCkKPiAg IHsKPiBAQCAtNjQ0LDggKzc0NCwxMiBAQCBzdGF0aWMgdm9pZCBkcm1fc2NoZWRfd2FrZXVwKHN0 cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQpCj4gICB9Cj4gICAKPiAgIC8qKgo+IC0gKiBT ZWxlY3QgbmV4dCBlbnRpdHkgdG8gcHJvY2Vzcwo+IC0qLwo+ICsgKiBkcm1fc2NoZWRfc2VsZWN0 X2VudGl0eSAtIFNlbGVjdCBuZXh0IGVudGl0eSB0byBwcm9jZXNzCj4gKyAqCj4gKyAqIEBzY2hl ZDogc2NoZWR1bGVyIGluc3RhbmNlCj4gKyAqCj4gKyAqIFJldHVybnMgdGhlIGVudGl0eSB0byBw cm9jZXNzIG9yIE5VTEwgaWYgbm9uZSBhcmUgZm91bmQuCj4gKyAqLwo+ICAgc3RhdGljIHN0cnVj dCBkcm1fc2NoZWRfZW50aXR5ICoKPiAgIGRybV9zY2hlZF9zZWxlY3RfZW50aXR5KHN0cnVjdCBk cm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQpCj4gICB7Cj4gQEAgLTY2NSw2ICs3NjksMTQgQEAgZHJt X3NjaGVkX3NlbGVjdF9lbnRpdHkoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCkKPiAg IAlyZXR1cm4gZW50aXR5Owo+ICAgfQo+ICAgCj4gKy8qKgo+ICsgKiBkcm1fc2NoZWRfcHJvY2Vz c19qb2IgLSBwcm9jZXNzIGEgam9iCj4gKyAqCj4gKyAqIEBmOiBmZW5jZQo+ICsgKiBAY2I6IGZl bmNlIGNhbGxiYWNrcwo+ICsgKgo+ICsgKiBDYWxsZWQgYWZ0ZXIgam9iIGhhcyBmaW5pc2hlZCBl eGVjdXRpb24uCj4gKyAqLwo+ICAgc3RhdGljIHZvaWQgZHJtX3NjaGVkX3Byb2Nlc3Nfam9iKHN0 cnVjdCBkbWFfZmVuY2UgKmYsIHN0cnVjdCBkbWFfZmVuY2VfY2IgKmNiKQo+ICAgewo+ICAgCXN0 cnVjdCBkcm1fc2NoZWRfZmVuY2UgKnNfZmVuY2UgPQo+IEBAIC02ODAsNiArNzkyLDEzIEBAIHN0 YXRpYyB2b2lkIGRybV9zY2hlZF9wcm9jZXNzX2pvYihzdHJ1Y3QgZG1hX2ZlbmNlICpmLCBzdHJ1 Y3QgZG1hX2ZlbmNlX2NiICpjYikKPiAgIAl3YWtlX3VwX2ludGVycnVwdGlibGUoJnNjaGVkLT53 YWtlX3VwX3dvcmtlcik7Cj4gICB9Cj4gICAKPiArLyoqCj4gKyAqIGRybV9zY2hlZF9ibG9ja2Vk IC0gY2hlY2sgaWYgdGhlIHNjaGVkdWxlciBpcyBibG9ja2VkCj4gKyAqCj4gKyAqIEBzY2hlZDog c2NoZWR1bGVyIGluc3RhbmNlCj4gKyAqCj4gKyAqIFJldHVybnMgdHJ1ZSBpZiBibG9ja2VkLCBv dGhlcndpc2UgZmFsc2UuCj4gKyAqLwo+ICAgc3RhdGljIGJvb2wgZHJtX3NjaGVkX2Jsb2NrZWQo c3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCkKPiAgIHsKPiAgIAlpZiAoa3RocmVhZF9z aG91bGRfcGFyaygpKSB7Cj4gQEAgLTY5MCw2ICs4MDksMTMgQEAgc3RhdGljIGJvb2wgZHJtX3Nj aGVkX2Jsb2NrZWQoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCkKPiAgIAlyZXR1cm4g ZmFsc2U7Cj4gICB9Cj4gICAKPiArLyoqCj4gKyAqIGRybV9zY2hlZF9tYWluIC0gbWFpbiBzY2hl ZHVsZXIgdGhyZWFkCj4gKyAqCj4gKyAqIEBwYXJhbTogc2NoZWR1bGVyIGluc3RhbmNlCj4gKyAq Cj4gKyAqIFJldHVybnMgMC4KPiArICovCj4gICBzdGF0aWMgaW50IGRybV9zY2hlZF9tYWluKHZv aWQgKnBhcmFtKQo+ICAgewo+ICAgCXN0cnVjdCBzY2hlZF9wYXJhbSBzcGFyYW0gPSB7LnNjaGVk X3ByaW9yaXR5ID0gMX07Cj4gQEAgLTc0NCwxNSArODcwLDE3IEBAIHN0YXRpYyBpbnQgZHJtX3Nj aGVkX21haW4odm9pZCAqcGFyYW0pCj4gICB9Cj4gICAKPiAgIC8qKgo+IC0gKiBJbml0IGEgZ3B1 IHNjaGVkdWxlciBpbnN0YW5jZQo+ICsgKiBkcm1fc2NoZWRfaW5pdCAtIEluaXQgYSBncHUgc2No ZWR1bGVyIGluc3RhbmNlCj4gICAgKgo+IC0gKiBAc2NoZWQJCVRoZSBwb2ludGVyIHRvIHRoZSBz Y2hlZHVsZXIKPiAtICogQG9wcwkJCVRoZSBiYWNrZW5kIG9wZXJhdGlvbnMgZm9yIHRoaXMgc2No ZWR1bGVyLgo+IC0gKiBAaHdfc3VibWlzc2lvbnMJTnVtYmVyIG9mIGh3IHN1Ym1pc3Npb25zIHRv IGRvLgo+IC0gKiBAbmFtZQkJTmFtZSB1c2VkIGZvciBkZWJ1Z2dpbmcKPiArICogQHNjaGVkOiBz Y2hlZHVsZXIgaW5zdGFuY2UKPiArICogQG9wczogYmFja2VuZCBvcGVyYXRpb25zIGZvciB0aGlz IHNjaGVkdWxlcgo+ICsgKiBAaHdfc3VibWlzc2lvbjogbnVtYmVyIG9mIGh3IHN1Ym1pc3Npb25z IHRoYXQgY2FuIGJlIGluIGZsaWdodAo+ICsgKiBAaGFuZ19saW1pdDogbnVtYmVyIG9mIHRpbWVz IHRvIGFsbG93IGEgam9iIHRvIGhhbmcgYmVmb3JlIGRyb3BwaW5nIGl0Cj4gKyAqIEB0aW1lb3V0 OiB0aW1lb3V0IHZhbHVlIGluIGppZmZpZXMgZm9yIHRoZSBzY2hlZHVsZXIKPiArICogQG5hbWU6 IG5hbWUgdXNlZCBmb3IgZGVidWdnaW5nCj4gICAgKgo+ICAgICogUmV0dXJuIDAgb24gc3VjY2Vz cywgb3RoZXJ3aXNlIGVycm9yIGNvZGUuCj4gLSovCj4gKyAqLwo+ICAgaW50IGRybV9zY2hlZF9p bml0KHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQsCj4gICAJCSAgIGNvbnN0IHN0cnVj dCBkcm1fc2NoZWRfYmFja2VuZF9vcHMgKm9wcywKPiAgIAkJICAgdW5zaWduZWQgaHdfc3VibWlz c2lvbiwKPiBAQCAtNzg4LDkgKzkxNiwxMSBAQCBpbnQgZHJtX3NjaGVkX2luaXQoc3RydWN0IGRy bV9ncHVfc2NoZWR1bGVyICpzY2hlZCwKPiAgIEVYUE9SVF9TWU1CT0woZHJtX3NjaGVkX2luaXQp Owo+ICAgCj4gICAvKioKPiAtICogRGVzdHJveSBhIGdwdSBzY2hlZHVsZXIKPiArICogZHJtX3Nj aGVkX2ZpbmkgLSBEZXN0cm95IGEgZ3B1IHNjaGVkdWxlcgo+ICsgKgo+ICsgKiBAc2NoZWQ6IHNj aGVkdWxlciBpbnN0YW5jZQo+ICAgICoKPiAtICogQHNjaGVkCVRoZSBwb2ludGVyIHRvIHRoZSBz Y2hlZHVsZXIKPiArICogVGVhcnMgZG93biBhbmQgY2xlYW5zIHVwIHRoZSBzY2hlZHVsZXIuCj4g ICAgKi8KPiAgIHZvaWQgZHJtX3NjaGVkX2Zpbmkoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpz Y2hlZCkKPiAgIHsKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZ3B1X3NjaGVkdWxlci5oIGIv aW5jbHVkZS9kcm0vZ3B1X3NjaGVkdWxlci5oCj4gaW5kZXggZGVjNjU1ODk0ZDA4Li40OTY0NDJm MTJiZmYgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZ3B1X3NjaGVkdWxlci5oCj4gKysrIGIv aW5jbHVkZS9kcm0vZ3B1X3NjaGVkdWxlci5oCj4gQEAgLTQzLDEzICs0MywzMyBAQCBlbnVtIGRy bV9zY2hlZF9wcmlvcml0eSB7Cj4gICB9Owo+ICAgCj4gICAvKioKPiAtICogZHJtX3NjaGVkX2Vu dGl0eSAtIEEgd3JhcHBlciBhcm91bmQgYSBqb2IgcXVldWUgKHR5cGljYWxseSBhdHRhY2hlZAo+ IC0gKiB0byB0aGUgRFJNIGZpbGVfcHJpdikuCj4gKyAqIHN0cnVjdCBkcm1fc2NoZWRfZW50aXR5 IC0gQSB3cmFwcGVyIGFyb3VuZCBhIGpvYiBxdWV1ZSAodHlwaWNhbGx5Cj4gKyAqIGF0dGFjaGVk IHRvIHRoZSBEUk0gZmlsZV9wcml2KS4KPiArICoKPiArICogQGxpc3Q6IHVzZWQgdG8gYXBwZW5k IHRoaXMgc3RydWN0IHRvIHRoZSBsaXN0IG9mIGVudGl0aWVzIGluIHRoZQo+ICsgKiAgICAgICAg cnVucXVldWUuCj4gKyAqIEBycTogcnVucXVldWUgdG8gd2hpY2ggdGhpcyBlbnRpdHkgYmVsb25n cy4KPiArICogQHJxX2xvY2s6IGxvY2sgdG8gbW9kaWZ5IHRoZSBydW5xdWV1ZSB0byB3aGljaCB0 aGlzIGVudGl0eSBiZWxvbmdzLgo+ICsgKiBAc2NoZWQ6IHRoZSBzY2hlZHVsZXIgaW5zdGFuY2Ug dG8gd2hpY2ggdGhpcyBlbnRpdHkgaXMgZW5xdWV1ZWQuCj4gKyAqIEBqb2JfcXVldWU6IHRoZSBs aXN0IG9mIGpvYnMgb2YgdGhpcyBlbnRpdHkuCj4gKyAqIEBmZW5jZV9zZXE6IGEgbGluZWFybHkg aW5jcmVhc2luZyBzZXFubyBpbmNyZW1lbnRlZCB3aXRoIGVhY2gKPiArICogICAgICAgICAgICAg bmV3ICZkcm1fc2NoZWRfZmVuY2Ugd2hpY2ggaXMgcGFydCBvZiB0aGUgZW50aXR5Lgo+ICsgKiBA ZmVuY2VfY29udGV4dDogYSB1bmlxdWUgY29udGV4dCBmb3IgYWxsIHRoZSBmZW5jZXMgd2hpY2gg YmVsb25nCj4gKyAqICAgICAgICAgICAgICAgICB0byB0aGlzIGVudGl0eS4KPiArICogICAgICAg ICAgICAgICAgIFRoZSAmZHJtX3NjaGVkX2ZlbmNlLnNjaGVkdWxlZCB1c2VzIHRoZQo+ICsgKiAg ICAgICAgICAgICAgICAgZmVuY2VfY29udGV4dCBidXQgJmRybV9zY2hlZF9mZW5jZS5maW5pc2hl ZCB1c2VzCj4gKyAqICAgICAgICAgICAgICAgICBmZW5jZV9jb250ZXh0ICsgMS4KPiArICogQGRl cGVuZGVuY3k6IHRoZSBkZXBlbmRlbmN5IGZlbmNlIG9mIHRoZSBqb2Igd2hpY2ggaXMgb24gdGhl IHRvcAo+ICsgKiAgICAgICAgICAgICAgb2YgdGhlIGpvYiBxdWV1ZS4KPiArICogQGNiOiBjYWxs YmFjayBmb3IgdGhlIGRlcGVuZGVuY3kgZmVuY2UgYWJvdmUuCj4gKyAqIEBndWlsdHk6IHBvaW50 cyB0byBjdHgncyBndWlsdHkuCj4gKyAqIEBmaW5pX3N0YXR1czogY29udGFpbnMgdGhlIGV4aXQg c3RhdHVzIGluIGNhc2UgdGhlIHByb2Nlc3Mgd2FzIHNpZ25hbGxlZC4KPiArICogQGxhc3Rfc2No ZWR1bGVkOiBwb2ludHMgdG8gdGhlIGZpbmlzaGVkIGZlbmNlIG9mIHRoZSBsYXN0IHNjaGVkdWxl ZCBqb2IuCj4gICAgKgo+ICAgICogRW50aXRpZXMgd2lsbCBlbWl0IGpvYnMgaW4gb3JkZXIgdG8g dGhlaXIgY29ycmVzcG9uZGluZyBoYXJkd2FyZQo+ICAgICogcmluZywgYW5kIHRoZSBzY2hlZHVs ZXIgd2lsbCBhbHRlcm5hdGUgYmV0d2VlbiBlbnRpdGllcyBiYXNlZCBvbgo+ICAgICogc2NoZWR1 bGluZyBwb2xpY3kuCj4gLSovCj4gKyAqLwo+ICAgc3RydWN0IGRybV9zY2hlZF9lbnRpdHkgewo+ ICAgCXN0cnVjdCBsaXN0X2hlYWQJCWxpc3Q7Cj4gICAJc3RydWN0IGRybV9zY2hlZF9ycQkJKnJx Owo+IEBAIC02Myw0NyArODMsOTYgQEAgc3RydWN0IGRybV9zY2hlZF9lbnRpdHkgewo+ICAgCj4g ICAJc3RydWN0IGRtYV9mZW5jZQkJKmRlcGVuZGVuY3k7Cj4gICAJc3RydWN0IGRtYV9mZW5jZV9j YgkJY2I7Cj4gLQlhdG9taWNfdAkJCSpndWlsdHk7IC8qIHBvaW50cyB0byBjdHgncyBndWlsdHkg Ki8KPiAtCWludCAgICAgICAgICAgIGZpbmlfc3RhdHVzOwo+IC0Jc3RydWN0IGRtYV9mZW5jZSAg ICAqbGFzdF9zY2hlZHVsZWQ7Cj4gKwlhdG9taWNfdAkJCSpndWlsdHk7Cj4gKwlpbnQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGZpbmlfc3RhdHVzOwo+ICsJc3RydWN0IGRtYV9mZW5jZSAg ICAgICAgICAgICAgICAqbGFzdF9zY2hlZHVsZWQ7Cj4gICB9Owo+ICAgCj4gICAvKioKPiArICog c3RydWN0IGRybV9zY2hlZF9ycSAtIHF1ZXVlIG9mIGVudGl0aWVzIHRvIGJlIHNjaGVkdWxlZC4K PiArICoKPiArICogQGxvY2s6IHRvIG1vZGlmeSB0aGUgZW50aXRpZXMgbGlzdC4KPiArICogQGVu dGl0aWVzOiBsaXN0IG9mIHRoZSBlbnRpdGllcyB0byBiZSBzY2hlZHVsZWQuCj4gKyAqIEBjdXJy ZW50X2VudGl0eTogdGhlIGVudGl0eSB3aGljaCBpcyB0byBiZSBzY2hlZHVsZWQuCj4gKyAqCj4g ICAgKiBSdW4gcXVldWUgaXMgYSBzZXQgb2YgZW50aXRpZXMgc2NoZWR1bGluZyBjb21tYW5kIHN1 Ym1pc3Npb25zIGZvcgo+ICAgICogb25lIHNwZWNpZmljIHJpbmcuIEl0IGltcGxlbWVudHMgdGhl IHNjaGVkdWxpbmcgcG9saWN5IHRoYXQgc2VsZWN0cwo+ICAgICogdGhlIG5leHQgZW50aXR5IHRv IGVtaXQgY29tbWFuZHMgZnJvbS4KPiAtKi8KPiArICovCj4gICBzdHJ1Y3QgZHJtX3NjaGVkX3Jx IHsKPiAgIAlzcGlubG9ja190CQkJbG9jazsKPiAgIAlzdHJ1Y3QgbGlzdF9oZWFkCQllbnRpdGll czsKPiAgIAlzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0eQkJKmN1cnJlbnRfZW50aXR5Owo+ICAgfTsK PiAgIAo+ICsvKioKPiArICogc3RydWN0IGRybV9zY2hlZF9mZW5jZSAtIGZlbmNlcyBjb3JyZXNw b25kaW5nIHRvIHRoZSBzY2hlZHVsaW5nIG9mIGEgam9iLgo+ICsgKi8KPiAgIHN0cnVjdCBkcm1f c2NoZWRfZmVuY2Ugewo+ICsgICAgICAgIC8qKgo+ICsgICAgICAgICAqIEBzY2hlZHVsZWQ6IHRo aXMgZmVuY2UgaXMgd2hhdCB3aWxsIGJlIHNpZ25hbGVkIGJ5IHRoZSBzY2hlZHVsZXIKPiArICAg ICAgICAgKiB3aGVuIHRoZSBqb2IgaXMgc2NoZWR1bGVkLgo+ICsgICAgICAgICAqLwo+ICAgCXN0 cnVjdCBkbWFfZmVuY2UJCXNjaGVkdWxlZDsKPiAgIAo+IC0JLyogVGhpcyBmZW5jZSBpcyB3aGF0 IHdpbGwgYmUgc2lnbmFsZWQgYnkgdGhlIHNjaGVkdWxlciB3aGVuCj4gLQkgKiB0aGUgam9iIGlz IGNvbXBsZXRlZC4KPiAtCSAqCj4gLQkgKiBXaGVuIHNldHRpbmcgdXAgYW4gb3V0IGZlbmNlIGZv ciB0aGUgam9iLCB5b3Ugc2hvdWxkIHVzZQo+IC0JICogdGhpcywgc2luY2UgaXQncyBhdmFpbGFi bGUgaW1tZWRpYXRlbHkgdXBvbgo+IC0JICogZHJtX3NjaGVkX2pvYl9pbml0KCksIGFuZCB0aGUg ZmVuY2UgcmV0dXJuZWQgYnkgdGhlIGRyaXZlcgo+IC0JICogZnJvbSBydW5fam9iKCkgd29uJ3Qg YmUgY3JlYXRlZCB1bnRpbCB0aGUgZGVwZW5kZW5jaWVzIGhhdmUKPiAtCSAqIHJlc29sdmVkLgo+ IC0JICovCj4gKyAgICAgICAgLyoqCj4gKyAgICAgICAgICogQGZpbmlzaGVkOiB0aGlzIGZlbmNl IGlzIHdoYXQgd2lsbCBiZSBzaWduYWxlZCBieSB0aGUgc2NoZWR1bGVyCj4gKyAgICAgICAgICog d2hlbiB0aGUgam9iIGlzIGNvbXBsZXRlZC4KPiArICAgICAgICAgKgo+ICsgICAgICAgICAqIFdo ZW4gc2V0dGluZyB1cCBhbiBvdXQgZmVuY2UgZm9yIHRoZSBqb2IsIHlvdSBzaG91bGQgdXNlCj4g KyAgICAgICAgICogdGhpcywgc2luY2UgaXQncyBhdmFpbGFibGUgaW1tZWRpYXRlbHkgdXBvbgo+ ICsgICAgICAgICAqIGRybV9zY2hlZF9qb2JfaW5pdCgpLCBhbmQgdGhlIGZlbmNlIHJldHVybmVk IGJ5IHRoZSBkcml2ZXIKPiArICAgICAgICAgKiBmcm9tIHJ1bl9qb2IoKSB3b24ndCBiZSBjcmVh dGVkIHVudGlsIHRoZSBkZXBlbmRlbmNpZXMgaGF2ZQo+ICsgICAgICAgICAqIHJlc29sdmVkLgo+ ICsgICAgICAgICAqLwo+ICAgCXN0cnVjdCBkbWFfZmVuY2UJCWZpbmlzaGVkOwo+ICAgCj4gKyAg ICAgICAgLyoqCj4gKyAgICAgICAgICogQGNiOiB0aGUgY2FsbGJhY2sgZm9yIHRoZSBwYXJlbnQg ZmVuY2UgYmVsb3cuCj4gKyAgICAgICAgICovCj4gICAJc3RydWN0IGRtYV9mZW5jZV9jYgkJY2I7 Cj4gKyAgICAgICAgLyoqCj4gKyAgICAgICAgICogQHBhcmVudDogdGhlIGZlbmNlIHJldHVybmVk IGJ5ICZkcm1fc2NoZWRfYmFja2VuZF9vcHMucnVuX2pvYgo+ICsgICAgICAgICAqIHdoZW4gc2No ZWR1bGluZyB0aGUgam9iIG9uIGhhcmR3YXJlLiBXZSBzaWduYWwgdGhlCj4gKyAgICAgICAgICog JmRybV9zY2hlZF9mZW5jZS5maW5pc2hlZCBmZW5jZSBvbmNlIHBhcmVudCBpcyBzaWduYWxsZWQu Cj4gKyAgICAgICAgICovCj4gICAJc3RydWN0IGRtYV9mZW5jZQkJKnBhcmVudDsKPiArICAgICAg ICAvKioKPiArICAgICAgICAgKiBAc2NoZWQ6IHRoZSBzY2hlZHVsZXIgaW5zdGFuY2UgdG8gd2hp Y2ggdGhlIGpvYiBoYXZpbmcgdGhpcyBzdHJ1Y3QKPiArICAgICAgICAgKiBiZWxvbmdzIHRvLgo+ ICsgICAgICAgICAqLwo+ICAgCXN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlcgkqc2NoZWQ7Cj4gKyAg ICAgICAgLyoqCj4gKyAgICAgICAgICogQGxvY2s6IHRoZSBsb2NrIHVzZWQgYnkgdGhlIHNjaGVk dWxlZCBhbmQgdGhlIGZpbmlzaGVkIGZlbmNlcy4KPiArICAgICAgICAgKi8KPiAgIAlzcGlubG9j a190CQkJbG9jazsKPiArICAgICAgICAvKioKPiArICAgICAgICAgKiBAb3duZXI6IGpvYiBvd25l ciBmb3IgZGVidWdnaW5nCj4gKyAgICAgICAgICovCj4gICAJdm9pZAkJCQkqb3duZXI7Cj4gICB9 Owo+ICAgCj4gICBzdHJ1Y3QgZHJtX3NjaGVkX2ZlbmNlICp0b19kcm1fc2NoZWRfZmVuY2Uoc3Ry dWN0IGRtYV9mZW5jZSAqZik7Cj4gICAKPiAgIC8qKgo+IC0gKiBkcm1fc2NoZWRfam9iIC0gQSBq b2IgdG8gYmUgcnVuIGJ5IGFuIGVudGl0eS4KPiArICogc3RydWN0IGRybV9zY2hlZF9qb2IgLSBB IGpvYiB0byBiZSBydW4gYnkgYW4gZW50aXR5Lgo+ICsgKgo+ICsgKiBAcXVldWVfbm9kZTogdXNl ZCB0byBhcHBlbmQgdGhpcyBzdHJ1Y3QgdG8gdGhlIHF1ZXVlIG9mIGpvYnMgaW4gYW4gZW50aXR5 Lgo+ICsgKiBAc2NoZWQ6IHRoZSBzY2hlZHVsZXIgaW5zdGFuY2Ugb24gd2hpY2ggdGhpcyBqb2Ig aXMgc2NoZWR1bGVkLgo+ICsgKiBAc19mZW5jZTogY29udGFpbnMgdGhlIGZlbmNlcyBmb3IgdGhl IHNjaGVkdWxpbmcgb2Ygam9iLgo+ICsgKiBAZmluaXNoX2NiOiB0aGUgY2FsbGJhY2sgZm9yIHRo ZSBmaW5pc2hlZCBmZW5jZS4KPiArICogQGZpbmlzaF93b3JrOiBzY2hlZHVsZXMgdGhlIGZ1bmN0 aW9uIEBkcm1fc2NoZWRfam9iX2ZpbmlzaCBvbmNlIHRoZSBqb2IgaGFzCj4gKyAqICAgICAgICAg ICAgICAgZmluaXNoZWQgdG8gcmVtb3ZlIHRoZSBqb2IgZnJvbSB0aGUKPiArICogICAgICAgICAg ICAgICBAZHJtX2dwdV9zY2hlZHVsZXIucmluZ19taXJyb3JfbGlzdC4KPiArICogQG5vZGU6IHVz ZWQgdG8gYXBwZW5kIHRoaXMgc3RydWN0IHRvIHRoZSBAZHJtX2dwdV9zY2hlZHVsZXIucmluZ19t aXJyb3JfbGlzdC4KPiArICogQHdvcmtfdGRyOiBzY2hlZHVsZXMgYSBkZWxheWVkIGNhbGwgdG8g QGRybV9zY2hlZF9qb2JfdGltZWRvdXQgYWZ0ZXIgdGhlIHRpbWVvdXQKPiArICogICAgICAgICAg ICBpbnRlcnZhbCBpcyBvdmVyLgo+ICsgKiBAaWQ6IGEgdW5pcXVlIGlkIGFzc2lnbmVkIHRvIGVh Y2ggam9iIHNjaGVkdWxlZCBvbiB0aGUgc2NoZWR1bGVyLgo+ICsgKiBAa2FybWE6IGluY3JlbWVu dCBvbiBldmVyeSBoYW5nIGNhdXNlZCBieSB0aGlzIGpvYi4gSWYgdGhpcyBleGNlZWRzIHRoZSBo YW5nCj4gKyAqICAgICAgICAgbGltaXQgb2YgdGhlIHNjaGVkdWxlciB0aGVuIHRoZSBqb2IgaXMg bWFya2VkIGd1aWx0eSBhbmQgd2lsbCBub3QKPiArICogICAgICAgICBiZSBzY2hlZHVsZWQgZnVy dGhlci4KPiArICogQHNfcHJpb3JpdHk6IHRoZSBwcmlvcml0eSBvZiB0aGUgam9iLgo+ICsgKiBA ZW50aXR5OiB0aGUgZW50aXR5IHRvIHdoaWNoIHRoaXMgam9iIGJlbG9uZ3MuCj4gICAgKgo+ICAg ICogQSBqb2IgaXMgY3JlYXRlZCBieSB0aGUgZHJpdmVyIHVzaW5nIGRybV9zY2hlZF9qb2JfaW5p dCgpLCBhbmQKPiAgICAqIHNob3VsZCBjYWxsIGRybV9zY2hlZF9lbnRpdHlfcHVzaF9qb2IoKSBv bmNlIGl0IHdhbnRzIHRoZSBzY2hlZHVsZXIKPiBAQCAtMTMwLDM4ICsxOTksNjQgQEAgc3RhdGlj IGlubGluZSBib29sIGRybV9zY2hlZF9pbnZhbGlkYXRlX2pvYihzdHJ1Y3QgZHJtX3NjaGVkX2pv YiAqc19qb2IsCj4gICB9Cj4gICAKPiAgIC8qKgo+ICsgKiBzdHJ1Y3QgZHJtX3NjaGVkX2JhY2tl bmRfb3BzCj4gKyAqCj4gICAgKiBEZWZpbmUgdGhlIGJhY2tlbmQgb3BlcmF0aW9ucyBjYWxsZWQg YnkgdGhlIHNjaGVkdWxlciwKPiAtICogdGhlc2UgZnVuY3Rpb25zIHNob3VsZCBiZSBpbXBsZW1l bnRlZCBpbiBkcml2ZXIgc2lkZQo+IC0qLwo+ICsgKiB0aGVzZSBmdW5jdGlvbnMgc2hvdWxkIGJl IGltcGxlbWVudGVkIGluIGRyaXZlciBzaWRlLgo+ICsgKi8KPiAgIHN0cnVjdCBkcm1fc2NoZWRf YmFja2VuZF9vcHMgewo+IC0JLyogQ2FsbGVkIHdoZW4gdGhlIHNjaGVkdWxlciBpcyBjb25zaWRl cmluZyBzY2hlZHVsaW5nIHRoaXMKPiAtCSAqIGpvYiBuZXh0LCB0byBnZXQgYW5vdGhlciBzdHJ1 Y3QgZG1hX2ZlbmNlIGZvciB0aGlzIGpvYiB0bwo+ICsJLyoqCj4gKyAgICAgICAgICogQGRlcGVu ZGVuY3k6IENhbGxlZCB3aGVuIHRoZSBzY2hlZHVsZXIgaXMgY29uc2lkZXJpbmcgc2NoZWR1bGlu Zwo+ICsgICAgICAgICAqIHRoaXMgam9iIG5leHQsIHRvIGdldCBhbm90aGVyIHN0cnVjdCBkbWFf ZmVuY2UgZm9yIHRoaXMgam9iIHRvCj4gICAJICogYmxvY2sgb24uICBPbmNlIGl0IHJldHVybnMg TlVMTCwgcnVuX2pvYigpIG1heSBiZSBjYWxsZWQuCj4gICAJICovCj4gICAJc3RydWN0IGRtYV9m ZW5jZSAqKCpkZXBlbmRlbmN5KShzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAqc2NoZWRfam9iLAo+ICAg CQkJCQlzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0eSAqc19lbnRpdHkpOwo+ICAgCj4gLQkvKiBDYWxs ZWQgdG8gZXhlY3V0ZSB0aGUgam9iIG9uY2UgYWxsIG9mIHRoZSBkZXBlbmRlbmNpZXMgaGF2ZQo+ IC0JICogYmVlbiByZXNvbHZlZC4gIFRoaXMgbWF5IGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcywg aWYKPiArCS8qKgo+ICsgICAgICAgICAqIEBydW5fam9iOiBDYWxsZWQgdG8gZXhlY3V0ZSB0aGUg am9iIG9uY2UgYWxsIG9mIHRoZSBkZXBlbmRlbmNpZXMKPiArICAgICAgICAgKiBoYXZlIGJlZW4g cmVzb2x2ZWQuICBUaGlzIG1heSBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMsIGlmCj4gICAJICog dGltZWRvdXRfam9iKCkgaGFzIGhhcHBlbmVkIGFuZCBkcm1fc2NoZWRfam9iX3JlY292ZXJ5KCkK PiAgIAkgKiBkZWNpZGVzIHRvIHRyeSBpdCBhZ2Fpbi4KPiAgIAkgKi8KPiAgIAlzdHJ1Y3QgZG1h X2ZlbmNlICooKnJ1bl9qb2IpKHN0cnVjdCBkcm1fc2NoZWRfam9iICpzY2hlZF9qb2IpOwo+ICAg Cj4gLQkvKiBDYWxsZWQgd2hlbiBhIGpvYiBoYXMgdGFrZW4gdG9vIGxvbmcgdG8gZXhlY3V0ZSwg dG8gdHJpZ2dlcgo+IC0JICogR1BVIHJlY292ZXJ5Lgo+ICsJLyoqCj4gKyAgICAgICAgICogQHRp bWVkb3V0X2pvYjogQ2FsbGVkIHdoZW4gYSBqb2IgaGFzIHRha2VuIHRvbyBsb25nIHRvIGV4ZWN1 dGUsCj4gKyAgICAgICAgICogdG8gdHJpZ2dlciBHUFUgcmVjb3ZlcnkuCj4gICAJICovCj4gICAJ dm9pZCAoKnRpbWVkb3V0X2pvYikoc3RydWN0IGRybV9zY2hlZF9qb2IgKnNjaGVkX2pvYik7Cj4g ICAKPiAtCS8qIENhbGxlZCBvbmNlIHRoZSBqb2IncyBmaW5pc2hlZCBmZW5jZSBoYXMgYmVlbiBz aWduYWxlZCBhbmQKPiAtCSAqIGl0J3MgdGltZSB0byBjbGVhbiBpdCB1cC4KPiArCS8qKgo+ICsg ICAgICAgICAqIEBmcmVlX2pvYjogQ2FsbGVkIG9uY2UgdGhlIGpvYidzIGZpbmlzaGVkIGZlbmNl IGhhcyBiZWVuIHNpZ25hbGVkCj4gKyAgICAgICAgICogYW5kIGl0J3MgdGltZSB0byBjbGVhbiBp dCB1cC4KPiAgIAkgKi8KPiAgIAl2b2lkICgqZnJlZV9qb2IpKHN0cnVjdCBkcm1fc2NoZWRfam9i ICpzY2hlZF9qb2IpOwo+ICAgfTsKPiAgIAo+ICAgLyoqCj4gLSAqIE9uZSBzY2hlZHVsZXIgaXMg aW1wbGVtZW50ZWQgZm9yIGVhY2ggaGFyZHdhcmUgcmluZwo+IC0qLwo+ICsgKiBzdHJ1Y3QgZHJt X2dwdV9zY2hlZHVsZXIKPiArICoKPiArICogQG9wczogYmFja2VuZCBvcGVyYXRpb25zIHByb3Zp ZGVkIGJ5IHRoZSBkcml2ZXIuCj4gKyAqIEBod19zdWJtaXNzaW9uX2xpbWl0OiB0aGUgbWF4IHNp emUgb2YgdGhlIGhhcmR3YXJlIHF1ZXVlLgo+ICsgKiBAdGltZW91dDogdGhlIHRpbWUgYWZ0ZXIg d2hpY2ggYSBqb2IgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzY2hlZHVsZXIuCj4gKyAqIEBuYW1lOiBu YW1lIG9mIHRoZSByaW5nIGZvciB3aGljaCB0aGlzIHNjaGVkdWxlciBpcyBiZWluZyB1c2VkLgo+ ICsgKiBAc2NoZWRfcnE6IHByaW9yaXR5IHdpc2UgYXJyYXkgb2YgcnVuIHF1ZXVlcy4KPiArICog QHdha2VfdXBfd29ya2VyOiB0aGUgd2FpdCBxdWV1ZSBvbiB3aGljaCB0aGUgc2NoZWR1bGVyIHNs ZWVwcyB1bnRpbCBhIGpvYgo+ICsgKiAgICAgICAgICAgICAgICAgIGlzIHJlYWR5IHRvIGJlIHNj aGVkdWxlZC4KPiArICogQGpvYl9zY2hlZHVsZWQ6IG9uY2UgQGRybV9zY2hlZF9lbnRpdHlfZG9f cmVsZWFzZSBpcyBjYWxsZWQgdGhlIHNjaGVkdWxlcgo+ICsgKiAgICAgICAgICAgICAgICAgd2Fp dHMgb24gdGhpcyB3YWl0IHF1ZXVlIHVudGlsIGFsbCB0aGUgc2NoZWR1bGVkIGpvYnMgYXJlCj4g KyAqICAgICAgICAgICAgICAgICBmaW5pc2hlZC4KPiArICogQGh3X3JxX2NvdW50OiB0aGUgbnVt YmVyIG9mIGpvYnMgY3VycmVudGx5IGluIHRoZSBoYXJkd2FyZSBxdWV1ZS4KPiArICogQGpvYl9p ZF9jb3VudDogdXNlZCB0byBhc3NpZ24gdW5pcXVlIGlkIHRvIHRoZSBlYWNoIGpvYi4KPiArICog QHRocmVhZDogdGhlIGt0aHJlYWQgb24gd2hpY2ggdGhlIHNjaGVkdWxlciB3aGljaCBydW4uCj4g KyAqIEByaW5nX21pcnJvcl9saXN0OiB0aGUgbGlzdCBvZiBqb2JzIHdoaWNoIGFyZSBjdXJyZW50 bHkgaW4gdGhlIGpvYiBxdWV1ZS4KPiArICogQGpvYl9saXN0X2xvY2s6IGxvY2sgdG8gcHJvdGVj dCB0aGUgcmluZ19taXJyb3JfbGlzdC4KPiArICogQGhhbmdfbGltaXQ6IG9uY2UgdGhlIGhhbmdz IGJ5IGEgam9iIGNyb3NzZXMgdGhpcyBsaW1pdCB0aGVuIGl0IGlzIG1hcmtlZAo+ICsgKiAgICAg ICAgICAgICAgZ3VpbHR5IGFuZCBpdCB3aWxsIGJlIGNvbnNpZGVyZWQgZm9yIHNjaGVkdWxpbmcg ZnVydGhlci4KPiArICoKPiArICogT25lIHNjaGVkdWxlciBpcyBpbXBsZW1lbnRlZCBmb3IgZWFj aCBoYXJkd2FyZSByaW5nLgo+ICsgKi8KPiAgIHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciB7Cj4g ICAJY29uc3Qgc3RydWN0IGRybV9zY2hlZF9iYWNrZW5kX29wcwkqb3BzOwo+ICAgCXVpbnQzMl90 CQkJaHdfc3VibWlzc2lvbl9saW1pdDsKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2RyaS1kZXZlbAo=