From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 657BA6E753 for ; Thu, 1 Aug 2019 17:36:43 +0000 (UTC) Date: Thu, 1 Aug 2019 10:38:13 -0700 From: Manasi Navare Message-ID: <20190801173812.GA14996@intel.com> References: <20190717180257.32314-1-madhumitha.tolakanahalli.pradeep@intel.com> <20190730192141.GA2736@intel.com> <3e664b45c4c6911239d18e6317769f1c6ad46ca5.camel@intel.com> <20190731171323.GA9251@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: Subject: Re: [igt-dev] [PATCH i-g-t] igt/tests/kms_dp_tiled_display.c : kms test file for display port tiled displays List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: "Ser, Simon" Cc: "igt-dev@lists.freedesktop.org" , "Latvala, Petri" List-ID: VGhhbmsgU2ltb24gZm9yIGFsbCB5b3VyIGlucHV0cy4gUGxlYXNlIGZpbmQgc29tZSBvZiBteSBx dWVzdGlvbnMgYmVsb3c6CgpPbiBUaHUsIEF1ZyAwMSwgMjAxOSBhdCAxMjo0MTozN0FNIC0wNzAw LCBTZXIsIFNpbW9uIHdyb3RlOgo+IE9uIFdlZCwgMjAxOS0wNy0zMSBhdCAxMDoxMyAtMDcwMCwg TWFuYXNpIE5hdmFyZSB3cm90ZToKPiA+IE9uIFdlZCwgSnVsIDMxLCAyMDE5IGF0IDEyOjI1OjA5 QU0gLTA3MDAsIFNlciwgU2ltb24gd3JvdGU6Cj4gPiA+IE9uIFR1ZSwgMjAxOS0wNy0zMCBhdCAx MjoyMSAtMDcwMCwgTWFuYXNpIE5hdmFyZSB3cm90ZToKPiA+ID4gPiBPbiBXZWQsIEp1bCAxNywg MjAxOSBhdCAxMTo0Mzo0OFBNIC0wNzAwLCBTZXIsIFNpbW9uIHdyb3RlOgo+ID4gPiA+ID4gVGhh bmtzIGZvciB5b3VyIHBhdGNoISBIZXJlIGFyZSBzb21lIGNvbW1lbnRzLgo+ID4gPiA+ID4gCj4g PiA+ID4gPiBTdHlsZTogd2UgdXNlIHRhYnMgZm9yIGluZGVudGF0aW9uLCBub3Qgc3BhY2VzLgo+ ID4gPiA+ID4gCj4gPiA+ID4gPiBPbiBXZWQsIDIwMTktMDctMTcgYXQgMTE6MDIgLTA3MDAsIE1h ZGh1bWl0aGEgVG9sYWthbmFoYWxsaSBQcmFkZWVwIHdyb3RlOgo+ID4gPiA+ID4gPiBUaGlzIHRl c3QgdmFsaWRhdGVzIHRoZSB0aWxlZCBEUCBkaXNwbGF5cyB0byBkaXNwbGF5IGEgdGVzdCBwYXR0 ZXJuIHNlYW1sZXNzbHkKPiA+ID4gPiA+ID4gYWNyb3NzIHRoZSB0d28gdGlsZXMuIEl0IHZhbGlk YXRlcyB0aGUgdHJhbnNjb2RlciBwb3J0IHN5bmMgZmVhdHVyZSBvbiBpOTE1IHRvCj4gPiA+ID4g PiA+IGdldCBhIHRlYXJmcmVlIHRpbGVkIGRpc3BsYXkgb3V0cHV0Lgo+ID4gPiA+ID4gPiAKPiA+ ID4gPiA+ID4gUmVsYXRlZCBrZXJuZWwgd29yayBwYXRjaGVzIC0+IGh0dHBzOi8vcGF0Y2h3b3Jr LmZyZWVkZXNrdG9wLm9yZy9zZXJpZXMvNTk4MzcvI3JldjQuCj4gPiA+ID4gPiA+IFRoaXMgdGVz dCBjYW4gZXZlbnR1YWxseSBiZSBleHRlbmRlZCB0byBjb3ZlciB0aWxlZCBkaXNwbGF5IHN1cHBv cnQgb24gb3RoZXIgY29ubmVjdG9yCj4gPiA+ID4gPiA+IHR5cGVzLgo+ID4gPiA+ID4gPiAKPiA+ ID4gPiA+ID4gQ2M6IE1hbmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5jb20+Cj4g PiA+ID4gPiA+IENjOiBQZXRyaSBMYXR2YWxhIDxwZXRyaS5sYXR2YWxhQGludGVsLmNvbT4KPiA+ ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogTWFkaHVtaXRoYSBUb2xha2FuYWhhbGxpIFByYWRlZXAg PG1hZGh1bWl0aGEudG9sYWthbmFoYWxsaS5wcmFkZWVwQGludGVsLmNvbT4KPiA+ID4gPiA+IAo+ ID4gPiA+ID4gTmV4dCB0aW1lLCBjYW4geW91IHNlbmQgYm90aCBwYXRjaGVzIGluIG9uZSBnbz8g SXQncyBub3QgcG9zc2libGUgdG8KPiA+ID4gPiA+IGNoZWNrIHdoZXRoZXIgdGhpcyB0ZXN0IGFj dHVhbGx5IHBhc3NlcyBDSSwgc2luY2UgYnVpbGQgZmFpbHMgKHNlZSB0aGUKPiA+ID4gPiA+IHR3 byBhdXRvbWF0ZWQgZmFpbHVyZSByZXBsaWVzKS4KPiA+ID4gPiAKPiA+ID4gPiBZZXMgcGxlYXNl IHNlbmQgdGhpcyBhcyBhIHNlcmllcyB3aXRoIDFzdCBwYXRjaCB0aGF0IGRlZmluZXMgdGhlIHRp bGUgcGFyc2VyCj4gPiA+ID4gYW5kIHNlY29uZCB3aXRoIHRoZSBhY3R1YWwgdGVzdCB0aGF0IHVz ZXMgaXQKPiA+ID4gPiAKPiA+ID4gPiA+IFRvIGxlYXJuIGhvdyB0byB1c2UgZ2l0LXNlbmQtZW1h aWwsIHlvdSBjYW4gcmVhZDoKPiA+ID4gPiA+IGh0dHBzOi8vZ2l0LXNlbmQtZW1haWwuaW8vCj4g PiA+ID4gPiAKPiA+ID4gPiA+ID4gLS0tCj4gPiA+ID4gPiA+ICB0ZXN0cy9NYWtlZmlsZS5zb3Vy Y2VzICAgICAgIHwgICAxICsKPiA+ID4gPiA+ID4gIHRlc3RzL2ttc19kcF90aWxlZF9kaXNwbGF5 LmMgfCAyMzkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+ID4gPiA+ID4g IHRlc3RzL21lc29uLmJ1aWxkICAgICAgICAgICAgfCAgIDEgKwo+ID4gPiA+ID4gPiAgMyBmaWxl cyBjaGFuZ2VkLCAyNDEgaW5zZXJ0aW9ucygrKQo+ID4gPiA+ID4gPiAgY3JlYXRlIG1vZGUgMTAw NjQ0IHRlc3RzL2ttc19kcF90aWxlZF9kaXNwbGF5LmMKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ IGRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFrZWZpbGUuc291 cmNlcwo+ID4gPiA+ID4gPiBpbmRleCAyNTBkYmQzMy4uZTkzNzM5NDEgMTAwNjQ0Cj4gPiA+ID4g PiA+IC0tLSBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKPiA+ID4gPiA+ID4gKysrIGIvdGVzdHMv TWFrZWZpbGUuc291cmNlcwo+ID4gPiA+ID4gPiBAQCAtNDAsNiArNDAsNyBAQCBURVNUU19wcm9n cyA9IFwKPiA+ID4gPiA+ID4gIAlrbXNfY3Vyc29yX2VkZ2Vfd2FsayBcCj4gPiA+ID4gPiA+ICAJ a21zX2N1cnNvcl9sZWdhY3kgXAo+ID4gPiA+ID4gPiAgCWttc19kcF9kc2MgXAo+ID4gPiA+ID4g PiArCWttc19kcF90aWxlZF9kaXNwbGF5IFwKPiA+ID4gPiA+ID4gIAlrbXNfZHJhd19jcmMgXAo+ ID4gPiA+ID4gPiAgCWttc19mYmNvbl9mYnQgXAo+ID4gPiA+ID4gPiAgCWttc19mZW5jZV9waW5f bGVhayBcCj4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS90ZXN0cy9rbXNfZHBfdGlsZWRfZGlzcGxh eS5jIGIvdGVzdHMva21zX2RwX3RpbGVkX2Rpc3BsYXkuYwo+ID4gPiA+ID4gPiBuZXcgZmlsZSBt b2RlIDEwMDY0NAo+ID4gPiA+ID4gPiBpbmRleCAwMDAwMDAwMC4uYWY2NDQ1NzMKPiA+ID4gPiA+ ID4gLS0tIC9kZXYvbnVsbAo+ID4gPiA+ID4gPiArKysgYi90ZXN0cy9rbXNfZHBfdGlsZWRfZGlz cGxheS5jCj4gPiA+ID4gPiA+IEBAIC0wLDAgKzEsMjM5IEBACj4gPiA+ID4gPiA+ICsvKgo+ID4g PiA+ID4gPiArICogQ29weXJpZ2h0IMKpIDIwMTggSW50ZWwgQ29ycG9yYXRpb24KPiA+ID4gPiA+ ID4gKyAqCj4gPiA+ID4gPiA+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVl IG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ID4gPiA+ID4gPiArICogY29w eSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRo ZSAiU29mdHdhcmUiKSwKPiA+ID4gPiA+ID4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdp dGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiA+ID4gPiA+ ID4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBk aXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+ID4gPiA+ID4gPiArICogYW5kL29yIHNlbGwgY29waWVz IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4gPiA+ ID4gPiA+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhl IGZvbGxvd2luZyBjb25kaXRpb25zOgo+ID4gPiA+ID4gPiArICoKPiA+ID4gPiA+ID4gKyAqIFRo ZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNs dWRpbmcgdGhlIG5leHQKPiA+ID4gPiA+ID4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVk ZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPiA+ID4gPiA+ ID4gKyAqIFNvZnR3YXJlLgo+ID4gPiA+ID4gPiArICoKPiA+ID4gPiA+ID4gKyAqIFRIRSBTT0ZU V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF WFBSRVNTIE9SCj4gPiA+ID4gPiA+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1J VEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiA+ID4gPiA+ID4gKyAq IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJ TiBOTyBFVkVOVCBTSEFMTAo+ID4gPiA+ID4gPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hU IEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiA+ID4g PiA+ID4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRP UlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gPiA+ID4gPiA+ICsgKiBGUk9NLCBPVVQgT0YgT1Ig SU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJ TkdTCj4gPiA+ID4gPiA+ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4gPiA+ID4gPiA+ICsgKgo+ID4g PiA+ID4gPiArICogQXV0aG9yczoKPiA+ID4gPiA+ID4gKyAqICBNYWRodW1pdGhhIFRvbGFrYW5h aGFsbGkgUHJhZGVlcAo+ID4gPiA+ID4gPiArICogICAgICA8bWFkaHVtaXRoYS50b2xha2FuYWhh bGxpLnByYWRlZXBAaW50ZWwuY29tPgo+ID4gPiA+ID4gPiArICoKPiA+ID4gPiA+ID4gKyAqIERp c3BsYXkgUG9ydCBUaWxlZCBEaXNwbGF5IFRlc3QKPiA+ID4gPiA+ID4gKyAqIFRoaXMgdGVzdCBw YXJzZXMgdGhlIHRpbGUgaW5mb3JtYXRpb24gb2YgdGhlIGNvbm5lY3RvcnMgdGhhdCBoYXZlIFRJ TEUKPiA+ID4gPiA+ID4gKyAqIHByb3BlcnR5IHNldCwgc2V0cyB1cCB0aGUgZnJhbWVidWZmZXIg d2l0aCBjb3JyZWN0IG9mZnNldHMgY29ycmVzcG9uZGluZyB0bwo+ID4gPiA+ID4gPiArICogdGhl IHRpbGUgb2Zmc2V0cyBhbmQgZG9lcyBhbiBhdG9taWMgbW9kZXNldCB3aXRoIHR3byBDUlRDcyBm b3IgdHdvCj4gPiA+ID4gPiA+ICsgKiBjb25uZWN0b3JzLgo+ID4gPiA+ID4gPiArICoKPiA+ID4g PiA+ID4gKyAqIFRoaXMgdGVzdCBjdXJyZW50bHkgc3VwcG9ydHMgb25seSBob3Jpem9udGFsbHkg dGlsZWQgZGlzcGxheXMsIGluIGxpbmUgd2l0aAo+ID4gPiA+ID4gPiArICogdGhlIGRpc3BsYXlz IHN1cHBvcnRlZCBieSB0aGUga2VybmVsIGF0IHRoZSBtb21lbnQuCj4gPiA+ID4gPiA+ICsgKi8K PiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArI2luY2x1ZGUgImRybV9tb2RlLmgiCj4gPiA+ID4g PiA+ICsjaW5jbHVkZSAiZHJtX2ZvdXJjYy5oIgo+ID4gPiA+ID4gPiArI2luY2x1ZGUgImlndC5o Igo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICt0eXBlZGVmIHN0cnVjdCB7Cj4gPiA+ID4gPiA+ ICsgICAgaW50IGRybV9mZDsKPiA+ID4gPiA+ID4gKyAgICBpbnQgbnVtX2hfdGlsZXM7Cj4gPiA+ ID4gPiA+ICsgICAgaWd0X2Rpc3BsYXlfdCAqZGlzcGxheTsKPiA+ID4gPiA+ID4gKyAgICBlbnVt IGlndF9jb21taXRfc3R5bGUgY29tbWl0Owo+ID4gPiA+ID4gPiArfSBkYXRhX3Q7Cj4gPiA+ID4g PiA+ICsKPiA+ID4gPiA+ID4gK3R5cGVkZWYgc3RydWN0IHsKPiA+ID4gPiA+ID4gKyAgICBpZ3Rf b3V0cHV0X3QgKm91dHB1dDsKPiA+ID4gPiA+ID4gKyAgICBpZ3RfdGlsZV9pbmZvX3QgKnRpbGU7 Cj4gPiA+ID4gPiA+ICsgICAgaWd0X2ZiX3QgZmJfdGVzdF9wYXR0ZXJuOwo+ID4gPiA+ID4gPiAr ICAgIGRybU1vZGVDb25uZWN0b3JQdHIgY29ubmVjdG9yOwo+ID4gPiA+ID4gPiArICAgIGVudW0g cGlwZSBwaXBlOwo+ID4gPiA+ID4gPiArICAgIGVudW0gaWd0X2NvbW1pdF9zdHlsZSBjb21taXQ7 Cj4gPiA+ID4gPiA+ICt9IGRhdGFfY29ubmVjdG9yX3Q7Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ ID4gK3N0YXRpYyBpbmxpbmUgaW50IGRybV9wcm9wZXJ0eV9pc190aWxlKGRybU1vZGVQcm9wZXJ0 eVB0ciBwcm9wKQo+ID4gPiA+ID4gCj4gPiA+ID4gPiBJIHdvdWxkbid0IHBlcnNvbmFsbHkgdXNl IGBpbmxpbmVgLiBUaGUgY29tcGlsZXIgaXMgc21hcnRlciB0aGFuIGh1bWFucwo+ID4gPiA+ID4g dG8gZGVjaWRlIHdoZXRoZXIgb3Igbm90IGEgZnVuY3Rpb24gc2hvdWxkIGJlIGlubGluZWQuCj4g PiA+ID4gPiAKPiA+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ID4gKwlyZXR1cm4oc3RyY21wKHByb3At Pm5hbWUgPyBwcm9wLT5uYW1lIDogIiIsICJUSUxFIik/IDAgOiAxKTsKPiA+ID4gPiA+IAo+ID4g PiA+ID4gU3R5bGU6IHVubmVjZXNzYXJ5IHBhcmVudGhlc2VzLCBtaXNzaW5nIHNwYWNlIGJlZm9y ZSBgP2AuCj4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gK30KPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4g PiArc3RhdGljIHZvaWQgZ2V0X251bWJlcl9vZl9oX3RpbGVzKGRhdGFfdCAqZGF0YSkKPiA+ID4g PiA+IAo+ID4gPiA+ID4gV2hhdCBpZiBtdWx0aXBsZSB0aWxlcyBhcmUgY29ubmVjdGVkPyBTaG91 bGRuJ3Qgd2UgdXNlIHRpbGVfZ3JvdXBfaWQ/Cj4gPiA+ID4gCj4gPiA+ID4gWWVzIHRoZXJlIGNv dWxkIGJlIG11bHRpcGxlIG1vbml0b3JzIHdpdGggdGlsZXMgc28gdXNlIHRpbGVfZ3JvdXBfaWQg dG8gY2hlY2sKPiA+ID4gPiB0aGF0IHRoZSB0aWxlIGJlbG9uZ3MgdG8gdGhlIHNhbWUgZ3JvdXAg YW5kIHRoZW4gdXNlIG51bV9oX3RpbGVzCj4gPiAKPiA+IEJ1dCBhY3R1YWxseSB0aGUgY3VycmVu dCBoYXJkd2FyZSBsaWtlIE1hZGh1bWl0aGEgbWVudGlvbmVkIG9ubHkgc3VwcG9ydHMgb25lIHRp bGUgZ3JvdXAsCj4gPiBpZiB3ZSBoYXZlIHRvIHN1cHBvcnQgbXVsdGlwbGUgdGlsZSBncm91cHMg dGhlbiB3ZSB3b3VsZCBuZWVkIHRvIG1hbGxvYyB0aGUgYXJyYXkgb2Ygc3RydWN0dXJlcwo+ID4g Zm9yIHRoZSBjb25uZWN0b3JzIGFzc29jaWF0ZWQgd2l0aCBzZXBhcmF0ZSB0aWxlIGdyb3VwcyBh bmQgdGhlbiBoYXZlIGEgc2VwYXJhdGUgc3VidGVzdCBmb3IKPiA+IHRpbGUgZ3JvdXAgMSB0aWxl IGdyb3VwIDIgZXRjLiBUaGlzIGxvZ2ljIHdpbGwgbm90IGdldCB0ZXN0ZWQgcmlnaHQgbm93IGR1 ZSB0byBIVyBjb25zdHJhaW50Lgo+ID4gCj4gPiBTbyB0aGUgaWRlYSBpcyBmb3IgdGhlIElHVCB0 byBjaGVjayB0aGUgdGlsZSBncm91cCBpZCBidXQgb25seSBzdXBwb3J0IDEgdGlsZSBncm91cCBz byBmYXIKPiA+IGFuZCBsZWF2ZSB0aGUgcm9vbSBmb3IgZnVydGhlciBleHRlbmRpbmcgaXQgdG8g bXVsdGlwbGUgdGlsZXMgaW5zdGVhZCBvZiBvdmVyIGNvbXBsaWNhdGluZwo+ID4gdGhlIGxvZ2lj IG5vdy4KPiA+IAo+ID4gRG9lcyB0aGF0IG1ha2Ugc2Vuc2Ugb3IgZG8geW91IHRoaW5rIHdlIHNo b3VsZCBhbHJlYWR5IGFkZCB0aGUgc3VidGVzdHMgZm9yIG11bHRpcGxlIHRpbGUgZ3JvdXBzPwo+ IAo+IFRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZSB0byBtZSwgc3VwcG9ydCBmb3IgbXVsdGlwbGUg dGlsZSBncm91cHMgY2FuIGJlCj4gbGVmdCBhcyBhIFRPRE8gZm9yIGxhdGVyLgo+IAo+IEluY3Jl bWVudGFsIHBhdGNoZXMgYXJlIHdheSBlYXNpZXIgdG8gcmV2aWV3IHRoYW4gb25lLXBhdGNoLXRo YXQtCj4gaW1wbGVtZW50cy1hbGwtZmVhdHVyZXMtYXQtb25jZS4gOikKCkdyZWF0IHNvIHdlIHdp bGwga2VlcCB0aGUgaW1wbGVtbmV0YXRpb24gdG8gMSB0aWxlIGdyb3VwIGlkIGZvciBub3cKCj4g Cj4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiA+ICsgICAgaW50IGk7Cj4gPiA+ID4gPiA+ICsgICAg ZHJtTW9kZVJlcyAqcmVzOwo+ID4gPiA+ID4gPiArICAgIGRybU1vZGVDb25uZWN0b3IgKmNvbm5l Y3RvcjsKPiA+ID4gPiA+ID4gKyAgICBkcm1Nb2RlUHJvcGVydHlQdHIgcHJvcDsKPiA+ID4gPiA+ ID4gKyAgICBkcm1Nb2RlUHJvcGVydHlCbG9iUHRyIGJsb2I7Cj4gPiA+ID4gPiA+ICsgICAgaWd0 X3RpbGVfaW5mb190IHRpbGU7Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gKyAgICBpZ3RfcmVx dWlyZShyZXMgPSBkcm1Nb2RlR2V0UmVzb3VyY2VzKGRhdGEtPmRybV9mZCkpOwo+ID4gPiA+ID4g Cj4gPiA+ID4gPiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSBpZ3RfYXNzZXJ0Lgo+ID4gPiA+ID4g Cj4gPiA+ID4gPiA+ICsgICAgZm9yKGkgPSAwOyBpIDwgcmVzLT5jb3VudF9jb25uZWN0b3JzOyBp KyspCj4gPiA+ID4gPiA+ICsgICAgewo+ID4gPiA+ID4gCj4gPiA+ID4gPiBTdHlsZTogbm8gbmV3 bGluZSBiZWZvcmUgYHtgIChvbmx5IGZvciBmdW5jdGlvbnMsIGFwcGxpZXMgdG8gdGhlIHdob2xl Cj4gPiA+ID4gPiBwYXRjaCkuCj4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gKyAgICAgICAgY29ubmVj dG9yID0gZHJtTW9kZUdldENvbm5lY3RvckN1cnJlbnQoZGF0YS0+ZHJtX2ZkLCBcCj4gPiA+ID4g PiAKPiA+ID4gPiA+IFN0eWxlOiB1bm5lY2Vzc2FyeSBgXGAuCj4gPiA+ID4gPiAKPiA+ID4gPiA+ IFdlIGNvdWxkIGlndF9hc3NlcnQoY29ubmVjdG9yKS4KPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMtPmNvbm5l Y3RvcnNbaV0pOwo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsgICAgICAgIGlmKCEoKGNvbm5l Y3Rvci0+Y29ubmVjdGlvbiA9PSBEUk1fTU9ERV9DT05ORUNURUQpICYmCj4gPiA+ID4gPiA+ICsg ICAgICAgICAgICAoY29ubmVjdG9yLT5jb25uZWN0b3JfdHlwZSA9PSBEUk1fTU9ERV9DT05ORUNU T1JfRGlzcGxheVBvcnQpKSkKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICBjb250aW51ZTsK PiA+ID4gPiA+IAo+ID4gPiA+ID4gU3R5bGU6IHdlIGNhbiBpbnZlcnQgdGhpcyBjb25kaXRpb24g dG8gbWFrZSBjbGVhcmVyLgo+ID4gPiA+IAo+ID4gPiA+IEJ1dCB3b3VsZG50IHRoYXQgYWRkIGFk ZGl0aW9uYWwgbmVzdGluZz8KPiA+ID4gCj4gPiA+IEkgbWVhbiwgdGhpcyBjb3VsZCBiZSByZS13 cml0dGVuIGFzOgo+ID4gPiAKPiA+ID4gICAgIGlmIChjb25uZWN0b3ItPmNvbm5lY3Rpb24gIT0g RFJNX01PREVfQ09OTkVDVEVEIHx8Cj4gPiA+ICAgICAgICAgY29ubmVjdG9yLT5jb25uZWN0b3Jf dHlwZSAhPSBEUk1fTU9ERV9DT05ORUNUT1JfRGlzcGxheVBvcnQpCj4gPiAKPiA+IE9oIHllcyB0 aGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2UhCj4gPiAKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiAr ICAgICAgICBmb3IoaSA9IDA7IGkgPCBjb25uZWN0b3ItPmNvdW50X3Byb3BzOyBpKyspCj4gPiA+ ID4gPiA+ICsgICAgICAgIHsKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgIHByb3AgPSBkcm1Nb2Rl R2V0UHJvcGVydHkoZGF0YS0+ZHJtX2ZkLCBjb25uZWN0b3ItPnByb3BzW2ldKTsKPiA+ID4gPiA+ IAo+ID4gPiA+ID4gV2UgY291bGQgaWd0X2Fzc2VydChwcm9wKQo+ID4gPiA+ID4gCj4gPiA+ID4g PiBXZSBuZWVkIHRvIGZyZWUgaXQgYXQgc29tZSBwb2ludC4KPiA+ID4gPiA+IAo+ID4gPiA+ID4g PiArICAgICAgICAgICAgaWYoIShkcm1fcHJvcGVydHlfaXNfdGlsZShwcm9wKSAmJgo+ID4gPiA+ ID4gCj4gPiA+ID4gPiBTdHlsZTogbWlzc2luZyBzcGFjZSBhZnRlciBpZiBrZXl3b3JkIChhcHBs aWVzIHRvIHRoZSB3aG9sZSBwYXRjaCkuCj4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gKyAgICAgICAg ICAgICAgICBkcm1fcHJvcGVydHlfdHlwZV9pcyhwcm9wLCBEUk1fTU9ERV9QUk9QX0JMT0IpKSkK PiA+ID4gPiA+IAo+ID4gPiA+ID4gSSdkIG1vdmUgdGhpcyBjaGVjayBpbnRvIGRybV9wcm9wZXJ0 eV9pc190aWxlLgo+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgY29udGlu dWU7Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgIGJsb2IgPSBkcm1Nb2Rl R2V0UHJvcGVydHlCbG9iKGRhdGEtPmRybV9mZCwgXAo+ID4gPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdG9yLT5wcm9wX3ZhbHVlc1tpXSk7 Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgIGlmKCFibG9iKQo+ID4gPiA+ ID4gPiArICAgICAgICAgICAgICAgIGJyZWFrOwo+ID4gPiA+ID4gPiArICAgICAgICAgICAgaWd0 X3BhcnNlX2Nvbm5lY3Rvcl90aWxlX2Jsb2IoYmxvYiwgJnRpbGUpOwo+ID4gPiA+ID4gPiArICAg ICAgICAgICAgZGF0YS0+bnVtX2hfdGlsZXMgPSB0aWxlLm51bV9oX3RpbGU7Cj4gPiA+ID4gPiA+ ICsgICAgICAgICAgICBicmVhazsKPiA+ID4gPiA+ID4gKyAgICAgICAgfQo+ID4gPiA+ID4gPiAr ICAgIH0KPiA+ID4gPiA+ID4gK30KPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArc3RhdGljIGlu dCBzZXRfdGVzdF9wYXR0ZXJuX2ZiKGRhdGFfdCAqZGF0YSwgZGF0YV9jb25uZWN0b3JfdCAqY29u bl9kYXRhKQo+ID4gPiA+ID4gPiArewo+ID4gPiA+ID4gPiArICAgIGludCBpOwo+ID4gPiA+ID4g PiArICAgIGludCBjb3VudCA9IDA7Cj4gPiA+ID4gPiA+ICsgICAgYm9vbCBpc190aWxlID0gZmFs c2U7Cj4gPiA+ID4gPiA+ICsgICAgZW51bSBwaXBlIHBpcGU7Cj4gPiA+ID4gPiA+ICsgICAgaWd0 X3RpbGVfaW5mb190IHRpbGU7Cj4gPiA+ID4gPiA+ICsgICAgaWd0X291dHB1dF90ICpvdXRwdXQ7 Cj4gPiA+ID4gPiA+ICsgICAgaWd0X3BsYW5lX3QgKnByaW1hcnk7Cj4gPiA+ID4gPiA+ICsgICAg ZHJtTW9kZVByb3BlcnR5UHRyIHByb3A7Cj4gPiA+ID4gPiA+ICsgICAgZHJtTW9kZVByb3BlcnR5 QmxvYlB0ciBibG9iOwo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsgICAgZm9yX2VhY2hfY29u bmVjdGVkX291dHB1dChkYXRhLT5kaXNwbGF5LCBvdXRwdXQpCj4gPiA+ID4gPiA+ICsgICAgewo+ ID4gPiA+ID4gPiArICAgICAgICBpc190aWxlID0gZmFsc2U7Cj4gPiA+ID4gPiA+ICsKPiA+ID4g PiA+ID4gKyAgICAgICAgY29ubl9kYXRhW2NvdW50XS5jb25uZWN0b3IgPSBkcm1Nb2RlR2V0Q29u bmVjdG9yKGRhdGEtPmRpc3BsYXktPmRybV9mZCwgXAo+ID4gPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0LT5pZCk7 Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gKyAgICAgICAgaWYoIShjb25uX2RhdGFbY291bnRd LmNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUgPT0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgIERSTV9NT0RFX0NPTk5FQ1RPUl9EaXNwbGF5UG9ydCkpCj4gPiA+ID4gPiA+ICsg ICAgICAgICAgICBjb250aW51ZTsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArICAgICAgICAv KiBQYXJzZSB0aHJvdWdoIGVhY2ggY29ubmVjdG9yIHByb3BlcnR5ICovCj4gPiA+ID4gPiA+ICsg ICAgICAgIGZvcihpID0gMDsgaSA8IGNvbm5fZGF0YVtjb3VudF0uY29ubmVjdG9yLT5jb3VudF9w cm9wczsgaSsrKQo+ID4gPiA+ID4gPiArICAgICAgICB7Cj4gPiA+ID4gPiA+ICsgICAgICAgICAg ICBwcm9wID0gZHJtTW9kZUdldFByb3BlcnR5KGRhdGEtPmRpc3BsYXktPmRybV9mZCwgXAo+ID4g PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uX2RhdGFb Y291bnRdLmNvbm5lY3Rvci0+cHJvcHNbaV0pOwo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsg ICAgICAgICAgICBpZighKChkcm1fcHJvcGVydHlfaXNfdGlsZShwcm9wKSAmJgo+ID4gPiA+ID4g PiArICAgICAgICAgICAgICAgIGRybV9wcm9wZXJ0eV90eXBlX2lzKHByb3AsIERSTV9NT0RFX1BS T1BfQkxPQikpKSkKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+ID4g PiA+ID4gKwo+ID4gPiA+ID4gPiArICAgICAgICAgICAgYmxvYiA9IGRybU1vZGVHZXRQcm9wZXJ0 eUJsb2IoZGF0YS0+ZGlzcGxheS0+ZHJtX2ZkLCBcCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29ubl9kYXRhW2NvdW50XS5jb25uZWN0b3ItPnByb3BfdmFsdWVzW2ld KTsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArICAgICAgICAgICAgaWYoIWJsb2IpCj4gPiA+ ID4gPiA+ICsgICAgICAgICAgICAgICAgYnJlYWs7Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4g KyAgICAgICAgICAgIGlndF9wYXJzZV9jb25uZWN0b3JfdGlsZV9ibG9iKGJsb2IsICZ0aWxlKTsK PiA+ID4gPiA+ID4gKyAgICAgICAgICAgIGNvbm5fZGF0YVtjb3VudF0udGlsZSA9ICZ0aWxlOwo+ ID4gPiA+ID4gPiArICAgICAgICAgICAgaXNfdGlsZSA9IHRydWU7Cj4gPiA+ID4gPiA+ICsgICAg ICAgICAgICBicmVhazsKPiA+ID4gPiA+ID4gKyAgICAgICAgfQo+ID4gPiA+ID4gCj4gPiA+ID4g PiBJIGZlZWwgbGlrZSB0aGlzIHdob2xlIGJsb2NrIGFib3ZlIGlzIGR1cGxpY2F0ZWQuIENvdWxk IGJlIGV4dHJhY3RlZAo+ID4gPiA+ID4gaW50byBhIGZ1bmN0aW9uLCBlLmcuCj4gPiA+ID4gPiAK PiA+ID4gPiA+ICAgICBib29sIGNvbm5lY3Rvcl9nZXRfdGlsZShkcm1Nb2RlQ29ubmVjdG9yUmVz ICpjb25uLCBpZ3RfdGlsZV9pbmZvX3QgKnRpbGVfaW5mbykKPiA+ID4gPiA+IAo+ID4gPiA+ID4g PiArICAgICAgICBpZighaXNfdGlsZSkKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgIGNvbnRpbnVl Owo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsgICAgICAgIG91dHB1dCA9IGlndF9vdXRwdXRf ZnJvbV9jb25uZWN0b3IoZGF0YS0+ZGlzcGxheSwgXAo+ID4gPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5fZGF0YVtjb3VudF0uY29ubmVjdG9y KTsKPiA+ID4gPiA+IAo+ID4gPiA+ID4gU3R5bGU6IHVubmVjZXNzYXJ5IGBcYC4gQXBwbGllcyB0 byB0aGUgd2hvbGUgcGF0Y2guCj4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiAr ICAgICAgICBmb3JfZWFjaF9waXBlKGRhdGEtPmRpc3BsYXksIHBpcGUpCj4gPiA+ID4gPiA+ICsg ICAgICAgIHsKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgIGlndF9kZWJ1ZygiQ3VycmVudCBQSVBF IGlzICVkXG4iLCBwaXBlKTsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArICAgICAgICAgICAg aWYoKGNvdW50ID4gMCkgJiYgKHBpcGUgPT0gY29ubl9kYXRhW2NvdW50LTFdLnBpcGUpKQo+ID4g PiA+ID4gPiArICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ID4gPiA+ID4gCj4gPiA+ID4gPiBT dHlsZTogdW5uZWNlc3NhcnkgcGFyZW50aGVzZXMuCj4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gKyAg ICAgICAgICAgIGlmKGlndF9waXBlX2Nvbm5lY3Rvcl92YWxpZChwaXBlLCBvdXRwdXQpKSB7Cj4g PiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgY29ubl9kYXRhW2NvdW50XS5waXBlID0gcGlwZTsK PiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICBjb25uX2RhdGFbY291bnRdLm91dHB1dCA9IG91 dHB1dDsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgIGlndF9vdXRw dXRfc2V0X3BpcGUoY29ubl9kYXRhW2NvdW50XS5vdXRwdXQsIFwKPiA+ID4gPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5fZGF0YVtjb3VudF0ucGlwZSk7Cj4g PiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICBpZ3RfY3JlYXRlX3BhdHRl cm5fZmIoZGF0YS0+ZHJtX2ZkLFwKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChjb25uX2RhdGFbY291bnRdLnRpbGUtPnRpbGVfaF9zaXplICpcCj4gPiA+ ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+bnVtX2hf dGlsZXMpLFwKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25uX2RhdGFbY291bnRdLnRpbGUtPnRpbGVfdl9zaXplLFwKPiA+ID4gPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEUk1fRk9STUFUX1hCR1I4ODg4LFwKPiA+ ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMT0NBTF9EUk1f Rk9STUFUX01PRF9OT05FLFwKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmY29ubl9kYXRhW2NvdW50XS5mYl90ZXN0X3BhdHRlcm4pOwo+ID4gPiA+ID4g PiArCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgcHJpbWFyeSA9IGlndF9vdXRwdXRfZ2V0 X3BsYW5lX3R5cGUoY29ubl9kYXRhW2NvdW50XS5vdXRwdXQsXAo+ID4gPiA+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERSTV9QTEFORV9U WVBFX1BSSU1BUlkpOwo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAg aWd0X3BsYW5lX3NldF9mYihwcmltYXJ5LCAmY29ubl9kYXRhW2NvdW50XS5mYl90ZXN0X3BhdHRl cm4pOwo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgaWd0X2ZiX3Nl dF9zaXplKCZjb25uX2RhdGFbY291bnRdLmZiX3Rlc3RfcGF0dGVybiwgcHJpbWFyeSxcCj4gPiA+ ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5fZGF0YVtjb3VudF0u dGlsZS0+dGlsZV9oX3NpemUsXAo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25uX2RhdGFbY291bnRdLnRpbGUtPnRpbGVfdl9zaXplKTsKPiA+ID4gPiA+ID4g Kwo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgIGlndF9mYl9zZXRfcG9zaXRpb24oJmNvbm5f ZGF0YVtjb3VudF0uZmJfdGVzdF9wYXR0ZXJuLCBcCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwcmltYXJ5LFwKPiA+ID4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChjb25uX2RhdGFbY291bnRdLnRpbGUtPnRpbGVfaF9z aXplICpcCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25uX2RhdGFbY291bnRdLnRpbGUtPnRpbGVfaF9sb2MpLAo+ID4gPiA+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbm5fZGF0YVtjb3VudF0udGlsZS0+dGlsZV92 X3NpemUgKlwKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbm5fZGF0YVtjb3VudF0udGlsZS0+dGlsZV92X2xvYykpOwo+ID4gPiA+ID4gPiArCj4gPiA+ ID4gPiA+ICsgICAgICAgICAgICAgICAgaWd0X3BsYW5lX3NldF9zaXplKHByaW1hcnksXAo+ID4g PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uX2RhdGFbY291 bnRdLnRpbGUtPnRpbGVfaF9zaXplLFwKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29ubl9kYXRhW2NvdW50XS50aWxlLT50aWxlX3Zfc2l6ZSk7Cj4gPiA+ ID4gPiA+ICsKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICBicmVhazsKPiA+ID4gPiA+ID4g KyAgICAgICAgICAgIH0KPiA+ID4gPiA+ID4gKyAgICAgICAgfQo+ID4gPiA+ID4gPiArICAgICAg ICBjb3VudCsrOwo+ID4gPiA+ID4gPiArICAgIH0KPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiAr ICAgIHJldHVybiBjb3VudDsKPiA+ID4gPiA+ID4gK30KPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4g PiAraWd0X21haW4KPiA+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ID4gKyAgICBpZ3RfZGlzcGxheV90 IGRpc3BsYXk7Cj4gPiA+ID4gPiA+ICsgICAgZGF0YV90IGRhdGEgPSB7fTsKPiA+ID4gPiA+ID4g KyAgICBkYXRhX2Nvbm5lY3Rvcl90ICpjb25uX2RhdGE7Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ ID4gKyAgICBpZ3RfZml4dHVyZSB7Cj4gPiA+ID4gPiA+ICsgICAgICAgIGRhdGEuZHJtX2ZkID0g ZHJtX29wZW5fZHJpdmVyX21hc3RlcihEUklWRVJfQU5ZKTsKPiA+ID4gPiA+ID4gKyAgICAgICAg a21zdGVzdF9zZXRfdnRfZ3JhcGhpY3NfbW9kZSgpOwo+ID4gPiA+ID4gPiArICAgICAgICBpZ3Rf ZGlzcGxheV9yZXF1aXJlKCZkaXNwbGF5LCBkYXRhLmRybV9mZCk7Cj4gPiA+ID4gPiA+ICsgICAg ICAgIGRhdGEuZGlzcGxheSA9ICZkaXNwbGF5Owo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsg ICAgICAgIGdldF9udW1iZXJfb2ZfaF90aWxlcygmZGF0YSk7Cj4gPiA+ID4gPiA+ICsgICAgICAg IGlndF9kZWJ1ZygiTnVtYmVyIG9mIEhvcml6b250YWwgVGlsZXM6ICVkXG4iLCBkYXRhLm51bV9o X3RpbGVzKTsKPiA+ID4gPiA+ID4gKyAgICAgICAgZGF0YS5jb21taXQgPSBkYXRhLmRpc3BsYXkt PmlzX2F0b21pYyA/IENPTU1JVF9BVE9NSUMgOiBDT01NSVRfTEVHQUNZOwo+ID4gPiA+ID4gPiAr ICAgIH0KPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArICAgIGlmKGRhdGEubnVtX2hfdGlsZXMg PiAwKQo+ID4gPiA+ID4gPiArICAgICAgICBjb25uX2RhdGEgPSAoZGF0YV9jb25uZWN0b3JfdCAq KW1hbGxvYyhkYXRhLm51bV9oX3RpbGVzICogXAo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGRhdGFfY29ubmVjdG9yX3Qp KTsKPiA+ID4gPiA+IAo+ID4gPiA+ID4gTm8gbmVlZCBmb3IgdGhpcyBjYXN0LCB1bm5lY2Vzc2Fy eSBgXGAuCj4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gKyAgICBpZ3RfYXNzZXJ0KGNvbm5fZGF0YSk7 Cj4gPiA+ID4gPiAKPiA+ID4gPiA+IFRoaXMgY2hlY2sgcmVhZHMgZ2FyYmFnZSBmcm9tIHRoZSBz dGFjayBpZiBkYXRhLm51bV9oX3RpbGVzID09IDAuCj4gPiA+ID4gCj4gPiA+ID4gVGhpcyBjaGVj ayBzaG91bGQgcG9zc2libHkgYmUgaW5zaWRlIHRoZSBzYW1lIGlmCj4gPiA+ID4gCj4gPiA+ID4g PiA+ICsgICAgaWd0X3N1YnRlc3RfZigiYmFzaWMtdGVzdC1wYXR0ZXJuIikgewo+ID4gPiA+ID4g Cj4gPiA+ID4gPiBObyBuZWVkIGZvciB0aGUgX2Ygc3VmZml4Lgo+ID4gPiA+ID4gCj4gPiA+ID4g PiBUaGlzIHN1YnRlc3QgaXMgbWlzc2luZyBhIGRlc2NyaXB0aW9uLiBDb3VsZCB5b3UgYWRkIG9u ZT8gRm9yIG1vcmUKPiA+ID4gPiA+IGluZm9ybWF0aW9uLCBzZWU6Cj4gPiA+ID4gPiBodHRwczov L2RybS5wYWdlcy5mcmVlZGVza3RvcC5vcmcvaWd0LWdwdS10b29scy9pZ3QtZ3B1LXRvb2xzLUNv cmUuaHRtbCNpZ3QtZGVzY3JpYmUKPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiArICAgICAgICBpZ3Rf c2tpcF9vbighZGF0YS5udW1faF90aWxlcyk7Cj4gPiA+ID4gPiA+ICsgICAgICAgIHNldF90ZXN0 X3BhdHRlcm5fZmIoJmRhdGEsIGNvbm5fZGF0YSk7Cj4gPiA+ID4gPiA+ICsgICAgICAgIGlndF9k aXNwbGF5X2NvbW1pdDIoZGF0YS5kaXNwbGF5LCBkYXRhLmNvbW1pdCk7Cj4gPiA+ID4gPiAKPiA+ ID4gPiA+IEknbSBub3Qgc3VyZSBJIHVuZGVyc3RhbmQgd2hhdCB0aGlzIHRlc3QgY2hlY2tzLiBJ dCBkb2VzIGEgY29tbWl0IG9uCj4gPiA+ID4gPiBhbGwgdGlsZWQgY29ubmVjdG9ycywgYnV0IGRv ZXNuJ3QgY2hlY2sgYW55dGhpbmcgYWZ0ZXJ3YXJkcy4gTWF5YmUgaXQKPiA+ID4gPiA+IHNob3Vs ZCBjaGVjayB0aGUgcGFnZWZsaXAgc2VyaWFsIGFuZCB0aW1pbmdzPwo+ID4gPiA+IAo+ID4gPiA+ IFRoaXMgaXMgc28gZmFyIGEgbWFudWFsIHRlc3Qgd2hlcmUgd2UganVzdCBsb29rIGF0IHRoZSBw YXR0ZXJuIGFuZCBtYWtlIHN1cmUgbm8gYXJ0aWZhY3RzCj4gPiA+ID4gYW5kIGF1dG8gdGVzdGlu ZyBqdXN0IG1ha2Ugc3VyZSB0aGUgY29tbWl0IGRpZCBub3QgZmFpbCwgYW55IGJldHRlciBpZGVh IHRvIGNoZWNrIGlmIHRoZQo+ID4gPiA+IHBhZ2VfZmxpcCB0aW1lb3V0cyBkaWRudCBvY2N1ciBv ciBub3Qgc3VyZSBpZiB3ZSBjYW4gZG8gY3JjIGNoZWNrcyB0byBlbnN1cmUgbm8gYXJ0aWZhY3Rz Pwo+ID4gPiA+IEFueSBpZGVhcy9zdWdnZXN0aW9ucz8KPiA+ID4gCj4gPiA+IFRvIGJlIGhvbmVz dCBJJ20gbm90IGEgZmFuIG9mIG1hbnVhbCB0ZXN0aW5nLgo+ID4gPiAKPiA+ID4gQXMgSSB1bmRl cnN0YW5kIGl0LCB0aWxlZCBkaXNwbGF5cyBtdXN0IGJlIHVwZGF0ZWQgaW4gc3luYyBzbyB0aGF0 IHlvdQo+ID4gPiBkb24ndCBnZXQgdGVhcmluZy4gSWYgb25lIGRpc3BsYXkgaXMgcGFnZS1mbGlw cGVkIGJlZm9yZSB0aGUgb3RoZXIsCj4gPiA+IHRoZXJlIHdpbGwgYmUgdGVhcmluZyBpbiB0aGUg bWlkZGxlIG9mIHRoZSB0aWxlZCBzY3JlZW4uIEFtIEkgcmVhZGluZwo+ID4gPiB0aGUgY29tbWl0 IG1lc3NhZ2UgY29ycmVjdGx5Pwo+ID4gCj4gPiBZZXMgdGhlcmUgd291bGQgYmUgdGVhcmluZyBp ZiBvbmUgdGlsZSBwYWdlIGZsaXBwZWQgYmVmb3JlIHRoZSBvdGhlcgo+ID4gYW5kIHRoZSBIVyBw cmV2ZW50cyB0aGlzIGZyb20gaGFwcGVuaW5nIGJ5IHN5bmNocm9uaXppbmcgdGhlIHR3byB2Ymxh bmtzCj4gPiBmcm9tIHRoZSB0d28gcG9ydHMuCj4gPiAKPiA+IElmIHRoZXJlIGFuIGV4YW1wbGUg b2YgaWd0IHdoZXJlIHdlIGNhbiBjaGVjayB0aGUgdmJsYW5rIHRpbWluZyBvciBwYWdlIGZsaXAg dGltaW5ncwo+ID4gdG8gYWRkIHRoaXMgY2hlY2s/Cj4gCj4gSSBiZWxpZXZlIHRlc3RzIGluIGtt c19mbGlwIGRvIGEgc2ltaWxhciBjaGVjay4gVGhlIHBhZ2VfZmxpcF9oYW5kbGVyCj4gZnVuY3Rp b24gaGFuZGxlcyB0aGUgcGFnZSBmbGlwIGV2ZW50ICh3aGljaCBpcyBnaXZlbiB0aGUgZmxpcCB0 aW1lc3RhbXAKPiBhbmQgc2VxdWVuY2UgbnVtYmVyKS4gY2hlY2tfc3RhdGUgdmVyaWZpZXMgdGhh dCB0aGUgdGltZXN0YW1wIGlzIGNsb3NlCj4gZW5vdWdoIHRvIHdoYXQgd2UgZXhwZWN0IChpbiBv dXIgYXRvbWljIGNoZWNrLCBtYXliZSB3ZSBjYW4gY29tcGFyZQo+IHdpdGggc3RyaWN0IGVxdWFs aXR5KS4KPiAKPiBTaW5jZSB3ZSdyZSBkZWFsaW5nIHdpdGggbXVsdGlwbGUgQ1JUQ3MsIGl0IG1h eSBiZSBhIGdvb2QgaWRlYSB0byB1c2UKPiBkcm1FdmVudENvbnRleHQudmVyc2lvbiA9IDMgd2l0 aCBwYWdlX2ZsaXBfaGFuZGxlcjIgc28gdGhhdCB3ZSBhbHNvIGdldAo+IHRoZSBDUlRDIGluIHRo ZSBwYWdlIGZsaXAgaGFuZGxlci4gVmVyc2lvbiAzIGlzIGEgY29yZSBEUk0gZmVhdHVyZSwgYWxs Cj4gZHJpdmVycyBzdXBwb3J0IGl0IGdpdmVuIGEgcmVjZW50IGVub3VnaCBrZXJuZWwuCj4gCj4g Um91Z2ggcHNldWRvLWNvZGU6Cj4gCj4gCS8qIFdoZW4gY29tbWl0dGluZyBidWZmZXIsIHJlcXVl c3QgYSBwYWdlIGZsaXAgKi8KPiAJZHJtTW9kZUF0b21pY0NvbW1pdChmZCwgcmVxLCBEUk1fTU9E RV9BVE9NSUNfTk9OQkxPQ0sgfAo+IAkJCSAgICBEUk1fTU9ERV9QQUdFX0ZMSVBfRVZFTlQsIGRh dGEpOwoKSGVyZSB3ZSBkbyB0aGUgbW9kZXNlIHdpdGggaWd0X2Rpc3BsYXlfY29tbWl0MiBjYWxs IHRoYXQgdGhlbiBjYWxscyBkcm1Nb2RlQXRvbWljQ29tbWl0IGJ1dApkb2VzbnQgY2FsbCBpdCB3 aXRoIFBhZ2UgZmxpcCwgZG8gd2UgaGF2ZSBhbm90aGVyIGlndCBoZWxwZXIgdGhhdCBkb2VzIGEg YXRvbWljIGNvbW1pdCB3aXRoCnBhZ2UgZmxpcCBldmVudD8KCkNhbiB3ZSBub3QganVzdCBkbyBh dG9taWMgY29tbWl0IGFuZCBnZXQgdmJsYW5rIGV2ZW50cyBzbyBmb3IgdHdvIGNydGNzIHdlIGdl dCB0d28gZXZlbnRzIGFuZCBjb21wYXJlCnRoZSB0aW1lc3RhbXAgYW5kIG1ha2Ugc3VyZSB0aGV5 IGFyZSBjbG9zZSBlbm91Z2g/CgpNYW5hc2kKCj4gCj4gCXN0YXRpYyB2b2lkIHBhZ2VfZmxpcF9o YW5kbGVyKGludCBmZCwgdW5zaWduZWQgc2VxLAo+IAkJCQkgICAgICB1bnNpZ25lZCB0dl9zZWMs Cj4gCQkJCSAgICAgIHVuc2lnbmVkIHR2X3VzZWMsCj4gCQkJCSAgICAgIHVuc2lnbmVkIGNydGNf aWQsIHZvaWQgKmRhdGEpCj4gCXsKPiAJCS8qIENvbXBhcmUgcGFyYW1zIHdpdGggdGhlIG90aGVy IHBhZ2UgZmxpcCAqLwo+IAl9Cj4gCj4gCS8qIFdoZW4gd2UgZ2V0IFBPTExJTiBpbiB0aGUgRFJN IEZEICovCj4gCWRybUV2ZW50Q29udGV4dCBldmVudCA9IHsKPiAJCS52ZXJzaW9uID0gMywKPiAJ CS5wYWdlX2ZsaXBfaGFuZGxlcjIgPSBwYWdlX2ZsaXBfaGFuZGxlciwKPiAJfTsKPiAJZHJtSGFu ZGxlRXZlbnQoZmQsICZldmVudCk7Cj4gCj4gPiBNYW5hc2kKPiA+IAo+ID4gPiBJZiBzbywgbWF5 YmUgd2UgY2FuIGNoZWNrIHRoZSBwYWdlLWZsaXAgdGltaW5ncyBhbmQgbWFrZSBzdXJlIHRoZXkg YXJlCj4gPiA+IGVxdWFsPwo+ID4gPiAKPiA+ID4gQSBDUkMgY2hlY2sgbWlnaHQgYmUgYSBnb29k IGlkZWEgdG9vLCB0byBtYWtlIHN1cmUgYmFuZHdpZHRoIGlzbid0IGFuCj4gPiA+IGlzc3VlLgo+ ID4gPiAKPiA+ID4gQ0MnaW5nIE1hcnRpbiBpbiBjYXNlIGhlIGhhcyBiZXR0ZXIgaWRlYXMuCj4g PiA+IAo+ID4gPiA+IE1hbmFzaQo+ID4gPiA+IAo+ID4gPiA+ID4gPiArICAgIH0KPiA+ID4gPiA+ ID4gKwo+ID4gPiA+ID4gPiArICAgIGlndF9maXh0dXJlIHsKPiA+ID4gPiA+ID4gKyAgICAgICAg aWYoZGF0YS5udW1faF90aWxlcyA+IDApCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICBmcmVlKGNv bm5fZGF0YSk7Cj4gPiA+ID4gPiAKPiA+ID4gPiA+IElmIGNvbm5fZGF0YSB3YXMgaW5pdGlhbGl6 ZWQgdG8gTlVMTCwgbm8gbmVlZCBmb3IgdGhlIGNoZWNrLCBiZWNhdXNlCj4gPiA+ID4gPiBmcmVl KE5VTEwpIGlzIGEgbm8tb3AuCj4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gKyAgICAgICAga21zdGVz dF9yZXN0b3JlX3Z0X21vZGUoKTsKPiA+ID4gPiA+ID4gKyAgICAgICAgaWd0X2Rpc3BsYXlfZmlu aShkYXRhLmRpc3BsYXkpOwo+ID4gPiA+ID4gPiArICAgIH0KPiA+ID4gPiA+ID4gK30KPiA+ID4g PiA+ID4gZGlmZiAtLWdpdCBhL3Rlc3RzL21lc29uLmJ1aWxkIGIvdGVzdHMvbWVzb24uYnVpbGQK PiA+ID4gPiA+ID4gaW5kZXggMzRhNzQwMjUuLjZhNmU5Y2U5IDEwMDY0NAo+ID4gPiA+ID4gPiAt LS0gYS90ZXN0cy9tZXNvbi5idWlsZAo+ID4gPiA+ID4gPiArKysgYi90ZXN0cy9tZXNvbi5idWls ZAo+ID4gPiA+ID4gPiBAQCAtMjUsNiArMjUsNyBAQCB0ZXN0X3Byb2dzID0gWwo+ID4gPiA+ID4g PiAgCSdrbXNfY3Vyc29yX2VkZ2Vfd2FsaycsCj4gPiA+ID4gPiA+ICAJJ2ttc19jdXJzb3JfbGVn YWN5JywKPiA+ID4gPiA+ID4gIAkna21zX2RwX2RzYycsCj4gPiA+ID4gPiA+ICsJJ2ttc19kcF90 aWxlZF9kaXNwbGF5JywKPiA+ID4gPiA+ID4gIAkna21zX2RyYXdfY3JjJywKPiA+ID4gPiA+ID4g IAkna21zX2ZiY29uX2ZidCcsCj4gPiA+ID4gPiA+ICAJJ2ttc19mZW5jZV9waW5fbGVhaycsCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFp bGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==