From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1BE106E0B8 for ; Wed, 31 Jul 2019 17:11:51 +0000 (UTC) Date: Wed, 31 Jul 2019 10:13:24 -0700 From: Manasi Navare Message-ID: <20190731171323.GA9251@intel.com> References: <20190717180257.32314-1-madhumitha.tolakanahalli.pradeep@intel.com> <20190730192141.GA2736@intel.com> <3e664b45c4c6911239d18e6317769f1c6ad46ca5.camel@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <3e664b45c4c6911239d18e6317769f1c6ad46ca5.camel@intel.com> 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: T24gV2VkLCBKdWwgMzEsIDIwMTkgYXQgMTI6MjU6MDlBTSAtMDcwMCwgU2VyLCBTaW1vbiB3cm90 ZToKPiBPbiBUdWUsIDIwMTktMDctMzAgYXQgMTI6MjEgLTA3MDAsIE1hbmFzaSBOYXZhcmUgd3Jv dGU6Cj4gPiBPbiBXZWQsIEp1bCAxNywgMjAxOSBhdCAxMTo0Mzo0OFBNIC0wNzAwLCBTZXIsIFNp bW9uIHdyb3RlOgo+ID4gPiBUaGFua3MgZm9yIHlvdXIgcGF0Y2ghIEhlcmUgYXJlIHNvbWUgY29t bWVudHMuCj4gPiA+IAo+ID4gPiBTdHlsZTogd2UgdXNlIHRhYnMgZm9yIGluZGVudGF0aW9uLCBu b3Qgc3BhY2VzLgo+ID4gPiAKPiA+ID4gT24gV2VkLCAyMDE5LTA3LTE3IGF0IDExOjAyIC0wNzAw LCBNYWRodW1pdGhhIFRvbGFrYW5haGFsbGkgUHJhZGVlcCB3cm90ZToKPiA+ID4gPiBUaGlzIHRl c3QgdmFsaWRhdGVzIHRoZSB0aWxlZCBEUCBkaXNwbGF5cyB0byBkaXNwbGF5IGEgdGVzdCBwYXR0 ZXJuIHNlYW1sZXNzbHkKPiA+ID4gPiBhY3Jvc3MgdGhlIHR3byB0aWxlcy4gSXQgdmFsaWRhdGVz IHRoZSB0cmFuc2NvZGVyIHBvcnQgc3luYyBmZWF0dXJlIG9uIGk5MTUgdG8KPiA+ID4gPiBnZXQg YSB0ZWFyZnJlZSB0aWxlZCBkaXNwbGF5IG91dHB1dC4KPiA+ID4gPiAKPiA+ID4gPiBSZWxhdGVk IGtlcm5lbCB3b3JrIHBhdGNoZXMgLT4gaHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3Jn L3Nlcmllcy81OTgzNy8jcmV2NC4KPiA+ID4gPiBUaGlzIHRlc3QgY2FuIGV2ZW50dWFsbHkgYmUg ZXh0ZW5kZWQgdG8gY292ZXIgdGlsZWQgZGlzcGxheSBzdXBwb3J0IG9uIG90aGVyIGNvbm5lY3Rv cgo+ID4gPiA+IHR5cGVzLgo+ID4gPiA+IAo+ID4gPiA+IENjOiBNYW5hc2kgTmF2YXJlIDxtYW5h c2kuZC5uYXZhcmVAaW50ZWwuY29tPgo+ID4gPiA+IENjOiBQZXRyaSBMYXR2YWxhIDxwZXRyaS5s YXR2YWxhQGludGVsLmNvbT4KPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBNYWRodW1pdGhhIFRvbGFr YW5haGFsbGkgUHJhZGVlcCA8bWFkaHVtaXRoYS50b2xha2FuYWhhbGxpLnByYWRlZXBAaW50ZWwu Y29tPgo+ID4gPiAKPiA+ID4gTmV4dCB0aW1lLCBjYW4geW91IHNlbmQgYm90aCBwYXRjaGVzIGlu IG9uZSBnbz8gSXQncyBub3QgcG9zc2libGUgdG8KPiA+ID4gY2hlY2sgd2hldGhlciB0aGlzIHRl c3QgYWN0dWFsbHkgcGFzc2VzIENJLCBzaW5jZSBidWlsZCBmYWlscyAoc2VlIHRoZQo+ID4gPiB0 d28gYXV0b21hdGVkIGZhaWx1cmUgcmVwbGllcykuCj4gPiAKPiA+IFllcyBwbGVhc2Ugc2VuZCB0 aGlzIGFzIGEgc2VyaWVzIHdpdGggMXN0IHBhdGNoIHRoYXQgZGVmaW5lcyB0aGUgdGlsZSBwYXJz ZXIKPiA+IGFuZCBzZWNvbmQgd2l0aCB0aGUgYWN0dWFsIHRlc3QgdGhhdCB1c2VzIGl0Cj4gPiAK PiA+ID4gVG8gbGVhcm4gaG93IHRvIHVzZSBnaXQtc2VuZC1lbWFpbCwgeW91IGNhbiByZWFkOgo+ ID4gPiBodHRwczovL2dpdC1zZW5kLWVtYWlsLmlvLwo+ID4gPiAKPiA+ID4gPiAtLS0KPiA+ID4g PiAgdGVzdHMvTWFrZWZpbGUuc291cmNlcyAgICAgICB8ICAgMSArCj4gPiA+ID4gIHRlc3RzL2tt c19kcF90aWxlZF9kaXNwbGF5LmMgfCAyMzkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKPiA+ID4gPiAgdGVzdHMvbWVzb24uYnVpbGQgICAgICAgICAgICB8ICAgMSArCj4gPiA+ ID4gIDMgZmlsZXMgY2hhbmdlZCwgMjQxIGluc2VydGlvbnMoKykKPiA+ID4gPiAgY3JlYXRlIG1v ZGUgMTAwNjQ0IHRlc3RzL2ttc19kcF90aWxlZF9kaXNwbGF5LmMKPiA+ID4gPiAKPiA+ID4gPiBk aWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJj ZXMKPiA+ID4gPiBpbmRleCAyNTBkYmQzMy4uZTkzNzM5NDEgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEv dGVzdHMvTWFrZWZpbGUuc291cmNlcwo+ID4gPiA+ICsrKyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJj ZXMKPiA+ID4gPiBAQCAtNDAsNiArNDAsNyBAQCBURVNUU19wcm9ncyA9IFwKPiA+ID4gPiAgCWtt c19jdXJzb3JfZWRnZV93YWxrIFwKPiA+ID4gPiAgCWttc19jdXJzb3JfbGVnYWN5IFwKPiA+ID4g PiAgCWttc19kcF9kc2MgXAo+ID4gPiA+ICsJa21zX2RwX3RpbGVkX2Rpc3BsYXkgXAo+ID4gPiA+ ICAJa21zX2RyYXdfY3JjIFwKPiA+ID4gPiAgCWttc19mYmNvbl9mYnQgXAo+ID4gPiA+ICAJa21z X2ZlbmNlX3Bpbl9sZWFrIFwKPiA+ID4gPiBkaWZmIC0tZ2l0IGEvdGVzdHMva21zX2RwX3RpbGVk X2Rpc3BsYXkuYyBiL3Rlc3RzL2ttc19kcF90aWxlZF9kaXNwbGF5LmMKPiA+ID4gPiBuZXcgZmls ZSBtb2RlIDEwMDY0NAo+ID4gPiA+IGluZGV4IDAwMDAwMDAwLi5hZjY0NDU3Mwo+ID4gPiA+IC0t LSAvZGV2L251bGwKPiA+ID4gPiArKysgYi90ZXN0cy9rbXNfZHBfdGlsZWRfZGlzcGxheS5jCj4g PiA+ID4gQEAgLTAsMCArMSwyMzkgQEAKPiA+ID4gPiArLyoKPiA+ID4gPiArICogQ29weXJpZ2h0 IMKpIDIwMTggSW50ZWwgQ29ycG9yYXRpb24KPiA+ID4gPiArICoKPiA+ID4gPiArICogUGVybWlz c2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0 YWluaW5nIGEKPiA+ID4gPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVk IGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPiA+ID4gPiArICogdG8gZGVh bCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQg bGltaXRhdGlvbgo+ID4gPiA+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBt ZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiA+ID4gPiArICogYW5kL29y IHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdo b20gdGhlCj4gPiA+ID4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVj dCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gPiA+ID4gKyAqCj4gPiA+ID4gKyAqIFRo ZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNs dWRpbmcgdGhlIG5leHQKPiA+ID4gPiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBp biBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQo+ID4gPiA+ICsgKiBT b2Z0d2FyZS4KPiA+ID4gPiArICoKPiA+ID4gPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVE ICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiA+ID4g PiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF UyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gPiA+ID4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+ID4gPiA+ ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBD TEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ID4gPiA+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g QU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ID4gPiA+ ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBU SEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCj4gPiA+ID4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPiA+ ID4gPiArICoKPiA+ID4gPiArICogQXV0aG9yczoKPiA+ID4gPiArICogIE1hZGh1bWl0aGEgVG9s YWthbmFoYWxsaSBQcmFkZWVwCj4gPiA+ID4gKyAqICAgICAgPG1hZGh1bWl0aGEudG9sYWthbmFo YWxsaS5wcmFkZWVwQGludGVsLmNvbT4KPiA+ID4gPiArICoKPiA+ID4gPiArICogRGlzcGxheSBQ b3J0IFRpbGVkIERpc3BsYXkgVGVzdAo+ID4gPiA+ICsgKiBUaGlzIHRlc3QgcGFyc2VzIHRoZSB0 aWxlIGluZm9ybWF0aW9uIG9mIHRoZSBjb25uZWN0b3JzIHRoYXQgaGF2ZSBUSUxFCj4gPiA+ID4g KyAqIHByb3BlcnR5IHNldCwgc2V0cyB1cCB0aGUgZnJhbWVidWZmZXIgd2l0aCBjb3JyZWN0IG9m ZnNldHMgY29ycmVzcG9uZGluZyB0bwo+ID4gPiA+ICsgKiB0aGUgdGlsZSBvZmZzZXRzIGFuZCBk b2VzIGFuIGF0b21pYyBtb2Rlc2V0IHdpdGggdHdvIENSVENzIGZvciB0d28KPiA+ID4gPiArICog Y29ubmVjdG9ycy4KPiA+ID4gPiArICoKPiA+ID4gPiArICogVGhpcyB0ZXN0IGN1cnJlbnRseSBz dXBwb3J0cyBvbmx5IGhvcml6b250YWxseSB0aWxlZCBkaXNwbGF5cywgaW4gbGluZSB3aXRoCj4g PiA+ID4gKyAqIHRoZSBkaXNwbGF5cyBzdXBwb3J0ZWQgYnkgdGhlIGtlcm5lbCBhdCB0aGUgbW9t ZW50Lgo+ID4gPiA+ICsgKi8KPiA+ID4gPiArCj4gPiA+ID4gKyNpbmNsdWRlICJkcm1fbW9kZS5o Igo+ID4gPiA+ICsjaW5jbHVkZSAiZHJtX2ZvdXJjYy5oIgo+ID4gPiA+ICsjaW5jbHVkZSAiaWd0 LmgiCj4gPiA+ID4gKwo+ID4gPiA+ICt0eXBlZGVmIHN0cnVjdCB7Cj4gPiA+ID4gKyAgICBpbnQg ZHJtX2ZkOwo+ID4gPiA+ICsgICAgaW50IG51bV9oX3RpbGVzOwo+ID4gPiA+ICsgICAgaWd0X2Rp c3BsYXlfdCAqZGlzcGxheTsKPiA+ID4gPiArICAgIGVudW0gaWd0X2NvbW1pdF9zdHlsZSBjb21t aXQ7Cj4gPiA+ID4gK30gZGF0YV90Owo+ID4gPiA+ICsKPiA+ID4gPiArdHlwZWRlZiBzdHJ1Y3Qg ewo+ID4gPiA+ICsgICAgaWd0X291dHB1dF90ICpvdXRwdXQ7Cj4gPiA+ID4gKyAgICBpZ3RfdGls ZV9pbmZvX3QgKnRpbGU7Cj4gPiA+ID4gKyAgICBpZ3RfZmJfdCBmYl90ZXN0X3BhdHRlcm47Cj4g PiA+ID4gKyAgICBkcm1Nb2RlQ29ubmVjdG9yUHRyIGNvbm5lY3RvcjsKPiA+ID4gPiArICAgIGVu dW0gcGlwZSBwaXBlOwo+ID4gPiA+ICsgICAgZW51bSBpZ3RfY29tbWl0X3N0eWxlIGNvbW1pdDsK PiA+ID4gPiArfSBkYXRhX2Nvbm5lY3Rvcl90Owo+ID4gPiA+ICsKPiA+ID4gPiArc3RhdGljIGlu bGluZSBpbnQgZHJtX3Byb3BlcnR5X2lzX3RpbGUoZHJtTW9kZVByb3BlcnR5UHRyIHByb3ApCj4g PiA+IAo+ID4gPiBJIHdvdWxkbid0IHBlcnNvbmFsbHkgdXNlIGBpbmxpbmVgLiBUaGUgY29tcGls ZXIgaXMgc21hcnRlciB0aGFuIGh1bWFucwo+ID4gPiB0byBkZWNpZGUgd2hldGhlciBvciBub3Qg YSBmdW5jdGlvbiBzaG91bGQgYmUgaW5saW5lZC4KPiA+ID4gCj4gPiA+ID4gK3sKPiA+ID4gPiAr CXJldHVybihzdHJjbXAocHJvcC0+bmFtZSA/IHByb3AtPm5hbWUgOiAiIiwgIlRJTEUiKT8gMCA6 IDEpOwo+ID4gPiAKPiA+ID4gU3R5bGU6IHVubmVjZXNzYXJ5IHBhcmVudGhlc2VzLCBtaXNzaW5n IHNwYWNlIGJlZm9yZSBgP2AuCj4gPiA+IAo+ID4gPiA+ICt9Cj4gPiA+ID4gKwo+ID4gPiA+ICtz dGF0aWMgdm9pZCBnZXRfbnVtYmVyX29mX2hfdGlsZXMoZGF0YV90ICpkYXRhKQo+ID4gPiAKPiA+ ID4gV2hhdCBpZiBtdWx0aXBsZSB0aWxlcyBhcmUgY29ubmVjdGVkPyBTaG91bGRuJ3Qgd2UgdXNl IHRpbGVfZ3JvdXBfaWQ/Cj4gPiAKPiA+IFllcyB0aGVyZSBjb3VsZCBiZSBtdWx0aXBsZSBtb25p dG9ycyB3aXRoIHRpbGVzIHNvIHVzZSB0aWxlX2dyb3VwX2lkIHRvIGNoZWNrCj4gPiB0aGF0IHRo ZSB0aWxlIGJlbG9uZ3MgdG8gdGhlIHNhbWUgZ3JvdXAgYW5kIHRoZW4gdXNlIG51bV9oX3RpbGVz CgpCdXQgYWN0dWFsbHkgdGhlIGN1cnJlbnQgaGFyZHdhcmUgbGlrZSBNYWRodW1pdGhhIG1lbnRp b25lZCBvbmx5IHN1cHBvcnRzIG9uZSB0aWxlIGdyb3VwLAppZiB3ZSBoYXZlIHRvIHN1cHBvcnQg bXVsdGlwbGUgdGlsZSBncm91cHMgdGhlbiB3ZSB3b3VsZCBuZWVkIHRvIG1hbGxvYyB0aGUgYXJy YXkgb2Ygc3RydWN0dXJlcwpmb3IgdGhlIGNvbm5lY3RvcnMgYXNzb2NpYXRlZCB3aXRoIHNlcGFy YXRlIHRpbGUgZ3JvdXBzIGFuZCB0aGVuIGhhdmUgYSBzZXBhcmF0ZSBzdWJ0ZXN0IGZvcgp0aWxl IGdyb3VwIDEgdGlsZSBncm91cCAyIGV0Yy4gVGhpcyBsb2dpYyB3aWxsIG5vdCBnZXQgdGVzdGVk IHJpZ2h0IG5vdyBkdWUgdG8gSFcgY29uc3RyYWludC4KClNvIHRoZSBpZGVhIGlzIGZvciB0aGUg SUdUIHRvIGNoZWNrIHRoZSB0aWxlIGdyb3VwIGlkIGJ1dCBvbmx5IHN1cHBvcnQgMSB0aWxlIGdy b3VwIHNvIGZhcgphbmQgbGVhdmUgdGhlIHJvb20gZm9yIGZ1cnRoZXIgZXh0ZW5kaW5nIGl0IHRv IG11bHRpcGxlIHRpbGVzIGluc3RlYWQgb2Ygb3ZlciBjb21wbGljYXRpbmcKdGhlIGxvZ2ljIG5v dy4KCkRvZXMgdGhhdCBtYWtlIHNlbnNlIG9yIGRvIHlvdSB0aGluayB3ZSBzaG91bGQgYWxyZWFk eSBhZGQgdGhlIHN1YnRlc3RzIGZvciBtdWx0aXBsZSB0aWxlIGdyb3Vwcz8KCgo+ID4gCj4gPiA+ ID4gK3sKPiA+ID4gPiArICAgIGludCBpOwo+ID4gPiA+ICsgICAgZHJtTW9kZVJlcyAqcmVzOwo+ ID4gPiA+ICsgICAgZHJtTW9kZUNvbm5lY3RvciAqY29ubmVjdG9yOwo+ID4gPiA+ICsgICAgZHJt TW9kZVByb3BlcnR5UHRyIHByb3A7Cj4gPiA+ID4gKyAgICBkcm1Nb2RlUHJvcGVydHlCbG9iUHRy IGJsb2I7Cj4gPiA+ID4gKyAgICBpZ3RfdGlsZV9pbmZvX3QgdGlsZTsKPiA+ID4gPiArCj4gPiA+ ID4gKyAgICBpZ3RfcmVxdWlyZShyZXMgPSBkcm1Nb2RlR2V0UmVzb3VyY2VzKGRhdGEtPmRybV9m ZCkpOwo+ID4gPiAKPiA+ID4gVGhpcyBzaG91bGQgcHJvYmFibHkgYmUgaWd0X2Fzc2VydC4KPiA+ ID4gCj4gPiA+ID4gKyAgICBmb3IoaSA9IDA7IGkgPCByZXMtPmNvdW50X2Nvbm5lY3RvcnM7IGkr KykKPiA+ID4gPiArICAgIHsKPiA+ID4gCj4gPiA+IFN0eWxlOiBubyBuZXdsaW5lIGJlZm9yZSBg e2AgKG9ubHkgZm9yIGZ1bmN0aW9ucywgYXBwbGllcyB0byB0aGUgd2hvbGUKPiA+ID4gcGF0Y2gp Lgo+ID4gPiAKPiA+ID4gPiArICAgICAgICBjb25uZWN0b3IgPSBkcm1Nb2RlR2V0Q29ubmVjdG9y Q3VycmVudChkYXRhLT5kcm1fZmQsIFwKPiA+ID4gCj4gPiA+IFN0eWxlOiB1bm5lY2Vzc2FyeSBg XGAuCj4gPiA+IAo+ID4gPiBXZSBjb3VsZCBpZ3RfYXNzZXJ0KGNvbm5lY3RvcikuCj4gPiA+IAo+ ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl cy0+Y29ubmVjdG9yc1tpXSk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgICAgIGlmKCEoKGNvbm5l Y3Rvci0+Y29ubmVjdGlvbiA9PSBEUk1fTU9ERV9DT05ORUNURUQpICYmCj4gPiA+ID4gKyAgICAg ICAgICAgIChjb25uZWN0b3ItPmNvbm5lY3Rvcl90eXBlID09IERSTV9NT0RFX0NPTk5FQ1RPUl9E aXNwbGF5UG9ydCkpKQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgY29udGludWU7Cj4gPiA+IAo+ ID4gPiBTdHlsZTogd2UgY2FuIGludmVydCB0aGlzIGNvbmRpdGlvbiB0byBtYWtlIGNsZWFyZXIu Cj4gPiAKPiA+IEJ1dCB3b3VsZG50IHRoYXQgYWRkIGFkZGl0aW9uYWwgbmVzdGluZz8KPiAKPiBJ IG1lYW4sIHRoaXMgY291bGQgYmUgcmUtd3JpdHRlbiBhczoKPiAKPiAgICAgaWYgKGNvbm5lY3Rv ci0+Y29ubmVjdGlvbiAhPSBEUk1fTU9ERV9DT05ORUNURUQgfHwKPiAgICAgICAgIGNvbm5lY3Rv ci0+Y29ubmVjdG9yX3R5cGUgIT0gRFJNX01PREVfQ09OTkVDVE9SX0Rpc3BsYXlQb3J0KQoKT2gg eWVzIHRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZSEKCj4gCj4gPiA+ID4gKwo+ID4gPiA+ICsgICAg ICAgIGZvcihpID0gMDsgaSA8IGNvbm5lY3Rvci0+Y291bnRfcHJvcHM7IGkrKykKPiA+ID4gPiAr ICAgICAgICB7Cj4gPiA+ID4gKyAgICAgICAgICAgIHByb3AgPSBkcm1Nb2RlR2V0UHJvcGVydHko ZGF0YS0+ZHJtX2ZkLCBjb25uZWN0b3ItPnByb3BzW2ldKTsKPiA+ID4gCj4gPiA+IFdlIGNvdWxk IGlndF9hc3NlcnQocHJvcCkKPiA+ID4gCj4gPiA+IFdlIG5lZWQgdG8gZnJlZSBpdCBhdCBzb21l IHBvaW50Lgo+ID4gPiAKPiA+ID4gPiArICAgICAgICAgICAgaWYoIShkcm1fcHJvcGVydHlfaXNf dGlsZShwcm9wKSAmJgo+ID4gPiAKPiA+ID4gU3R5bGU6IG1pc3Npbmcgc3BhY2UgYWZ0ZXIgaWYg a2V5d29yZCAoYXBwbGllcyB0byB0aGUgd2hvbGUgcGF0Y2gpLgo+ID4gPiAKPiA+ID4gPiArICAg ICAgICAgICAgICAgIGRybV9wcm9wZXJ0eV90eXBlX2lzKHByb3AsIERSTV9NT0RFX1BST1BfQkxP QikpKQo+ID4gPiAKPiA+ID4gSSdkIG1vdmUgdGhpcyBjaGVjayBpbnRvIGRybV9wcm9wZXJ0eV9p c190aWxlLgo+ID4gPiAKPiA+ID4gPiArICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ID4gPiA+ ICsKPiA+ID4gPiArICAgICAgICAgICAgYmxvYiA9IGRybU1vZGVHZXRQcm9wZXJ0eUJsb2IoZGF0 YS0+ZHJtX2ZkLCBcCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbm5lY3Rvci0+cHJvcF92YWx1ZXNbaV0pOwo+ID4gPiA+ICsKPiA+ID4gPiArICAg ICAgICAgICAgaWYoIWJsb2IpCj4gPiA+ID4gKyAgICAgICAgICAgICAgICBicmVhazsKPiA+ID4g PiArICAgICAgICAgICAgaWd0X3BhcnNlX2Nvbm5lY3Rvcl90aWxlX2Jsb2IoYmxvYiwgJnRpbGUp Owo+ID4gPiA+ICsgICAgICAgICAgICBkYXRhLT5udW1faF90aWxlcyA9IHRpbGUubnVtX2hfdGls ZTsKPiA+ID4gPiArICAgICAgICAgICAgYnJlYWs7Cj4gPiA+ID4gKyAgICAgICAgfQo+ID4gPiA+ ICsgICAgfQo+ID4gPiA+ICt9Cj4gPiA+ID4gKwo+ID4gPiA+ICtzdGF0aWMgaW50IHNldF90ZXN0 X3BhdHRlcm5fZmIoZGF0YV90ICpkYXRhLCBkYXRhX2Nvbm5lY3Rvcl90ICpjb25uX2RhdGEpCj4g PiA+ID4gK3sKPiA+ID4gPiArICAgIGludCBpOwo+ID4gPiA+ICsgICAgaW50IGNvdW50ID0gMDsK PiA+ID4gPiArICAgIGJvb2wgaXNfdGlsZSA9IGZhbHNlOwo+ID4gPiA+ICsgICAgZW51bSBwaXBl IHBpcGU7Cj4gPiA+ID4gKyAgICBpZ3RfdGlsZV9pbmZvX3QgdGlsZTsKPiA+ID4gPiArICAgIGln dF9vdXRwdXRfdCAqb3V0cHV0Owo+ID4gPiA+ICsgICAgaWd0X3BsYW5lX3QgKnByaW1hcnk7Cj4g PiA+ID4gKyAgICBkcm1Nb2RlUHJvcGVydHlQdHIgcHJvcDsKPiA+ID4gPiArICAgIGRybU1vZGVQ cm9wZXJ0eUJsb2JQdHIgYmxvYjsKPiA+ID4gPiArCj4gPiA+ID4gKyAgICBmb3JfZWFjaF9jb25u ZWN0ZWRfb3V0cHV0KGRhdGEtPmRpc3BsYXksIG91dHB1dCkKPiA+ID4gPiArICAgIHsKPiA+ID4g PiArICAgICAgICBpc190aWxlID0gZmFsc2U7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgICAgIGNv bm5fZGF0YVtjb3VudF0uY29ubmVjdG9yID0gZHJtTW9kZUdldENvbm5lY3RvcihkYXRhLT5kaXNw bGF5LT5kcm1fZmQsIFwKPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0LT5pZCk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsg ICAgICAgIGlmKCEoY29ubl9kYXRhW2NvdW50XS5jb25uZWN0b3ItPmNvbm5lY3Rvcl90eXBlID09 Cj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIERSTV9NT0RFX0NPTk5FQ1RPUl9EaXNw bGF5UG9ydCkpCj4gPiA+ID4gKyAgICAgICAgICAgIGNvbnRpbnVlOwo+ID4gPiA+ICsKPiA+ID4g PiArICAgICAgICAvKiBQYXJzZSB0aHJvdWdoIGVhY2ggY29ubmVjdG9yIHByb3BlcnR5ICovCj4g PiA+ID4gKyAgICAgICAgZm9yKGkgPSAwOyBpIDwgY29ubl9kYXRhW2NvdW50XS5jb25uZWN0b3It PmNvdW50X3Byb3BzOyBpKyspCj4gPiA+ID4gKyAgICAgICAgewo+ID4gPiA+ICsgICAgICAgICAg ICBwcm9wID0gZHJtTW9kZUdldFByb3BlcnR5KGRhdGEtPmRpc3BsYXktPmRybV9mZCwgXAo+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5fZGF0YVtjb3Vu dF0uY29ubmVjdG9yLT5wcm9wc1tpXSk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgICAgICAgICBp ZighKChkcm1fcHJvcGVydHlfaXNfdGlsZShwcm9wKSAmJgo+ID4gPiA+ICsgICAgICAgICAgICAg ICAgZHJtX3Byb3BlcnR5X3R5cGVfaXMocHJvcCwgRFJNX01PREVfUFJPUF9CTE9CKSkpKQo+ID4g PiA+ICsgICAgICAgICAgICAgICAgY29udGludWU7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgICAg ICAgICBibG9iID0gZHJtTW9kZUdldFByb3BlcnR5QmxvYihkYXRhLT5kaXNwbGF5LT5kcm1fZmQs IFwKPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5fZGF0YVtjb3VudF0u Y29ubmVjdG9yLT5wcm9wX3ZhbHVlc1tpXSk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgICAgICAg ICBpZighYmxvYikKPiA+ID4gPiArICAgICAgICAgICAgICAgIGJyZWFrOwo+ID4gPiA+ICsKPiA+ ID4gPiArICAgICAgICAgICAgaWd0X3BhcnNlX2Nvbm5lY3Rvcl90aWxlX2Jsb2IoYmxvYiwgJnRp bGUpOwo+ID4gPiA+ICsgICAgICAgICAgICBjb25uX2RhdGFbY291bnRdLnRpbGUgPSAmdGlsZTsK PiA+ID4gPiArICAgICAgICAgICAgaXNfdGlsZSA9IHRydWU7Cj4gPiA+ID4gKyAgICAgICAgICAg IGJyZWFrOwo+ID4gPiA+ICsgICAgICAgIH0KPiA+ID4gCj4gPiA+IEkgZmVlbCBsaWtlIHRoaXMg d2hvbGUgYmxvY2sgYWJvdmUgaXMgZHVwbGljYXRlZC4gQ291bGQgYmUgZXh0cmFjdGVkCj4gPiA+ IGludG8gYSBmdW5jdGlvbiwgZS5nLgo+ID4gPiAKPiA+ID4gICAgIGJvb2wgY29ubmVjdG9yX2dl dF90aWxlKGRybU1vZGVDb25uZWN0b3JSZXMgKmNvbm4sIGlndF90aWxlX2luZm9fdCAqdGlsZV9p bmZvKQo+ID4gPiAKPiA+ID4gPiArICAgICAgICBpZighaXNfdGlsZSkKPiA+ID4gPiArICAgICAg ICAgICAgY29udGludWU7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgICAgIG91dHB1dCA9IGlndF9v dXRwdXRfZnJvbV9jb25uZWN0b3IoZGF0YS0+ZGlzcGxheSwgXAo+ID4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubl9kYXRhW2NvdW50XS5jb25uZWN0 b3IpOwo+ID4gPiAKPiA+ID4gU3R5bGU6IHVubmVjZXNzYXJ5IGBcYC4gQXBwbGllcyB0byB0aGUg d2hvbGUgcGF0Y2guCj4gPiA+IAo+ID4gPiA+ICsKPiA+ID4gPiArICAgICAgICBmb3JfZWFjaF9w aXBlKGRhdGEtPmRpc3BsYXksIHBpcGUpCj4gPiA+ID4gKyAgICAgICAgewo+ID4gPiA+ICsgICAg ICAgICAgICBpZ3RfZGVidWcoIkN1cnJlbnQgUElQRSBpcyAlZFxuIiwgcGlwZSk7Cj4gPiA+ID4g Kwo+ID4gPiA+ICsgICAgICAgICAgICBpZigoY291bnQgPiAwKSAmJiAocGlwZSA9PSBjb25uX2Rh dGFbY291bnQtMV0ucGlwZSkpCj4gPiA+ID4gKyAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+ ID4gCj4gPiA+IFN0eWxlOiB1bm5lY2Vzc2FyeSBwYXJlbnRoZXNlcy4KPiA+ID4gCj4gPiA+ID4g KyAgICAgICAgICAgIGlmKGlndF9waXBlX2Nvbm5lY3Rvcl92YWxpZChwaXBlLCBvdXRwdXQpKSB7 Cj4gPiA+ID4gKyAgICAgICAgICAgICAgICBjb25uX2RhdGFbY291bnRdLnBpcGUgPSBwaXBlOwo+ ID4gPiA+ICsgICAgICAgICAgICAgICAgY29ubl9kYXRhW2NvdW50XS5vdXRwdXQgPSBvdXRwdXQ7 Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgICAgICAgICAgICAgaWd0X291dHB1dF9zZXRfcGlwZShj b25uX2RhdGFbY291bnRdLm91dHB1dCwgXAo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25uX2RhdGFbY291bnRdLnBpcGUpOwo+ID4gPiA+ICsKPiA+ID4gPiAr ICAgICAgICAgICAgICAgIGlndF9jcmVhdGVfcGF0dGVybl9mYihkYXRhLT5kcm1fZmQsXAo+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29ubl9kYXRhW2NvdW50 XS50aWxlLT50aWxlX2hfc2l6ZSAqXAo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGF0YS0+bnVtX2hfdGlsZXMpLFwKPiA+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbm5fZGF0YVtjb3VudF0udGlsZS0+dGlsZV92X3NpemUs XAo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFJNX0ZPUk1B VF9YQkdSODg4OCxcCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLFwKPiA+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZjb25uX2RhdGFbY291bnRdLmZiX3Rlc3RfcGF0dGVybik7Cj4g PiA+ID4gKwo+ID4gPiA+ICsgICAgICAgICAgICAgICAgcHJpbWFyeSA9IGlndF9vdXRwdXRfZ2V0 X3BsYW5lX3R5cGUoY29ubl9kYXRhW2NvdW50XS5vdXRwdXQsXAo+ID4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFJNX1BMQU5FX1RZUEVf UFJJTUFSWSk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgICAgICAgICAgICAgaWd0X3BsYW5lX3Nl dF9mYihwcmltYXJ5LCAmY29ubl9kYXRhW2NvdW50XS5mYl90ZXN0X3BhdHRlcm4pOwo+ID4gPiA+ ICsKPiA+ID4gPiArICAgICAgICAgICAgICAgIGlndF9mYl9zZXRfc2l6ZSgmY29ubl9kYXRhW2Nv dW50XS5mYl90ZXN0X3BhdHRlcm4sIHByaW1hcnksXAo+ID4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbm5fZGF0YVtjb3VudF0udGlsZS0+dGlsZV9oX3NpemUsXAo+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5fZGF0YVtjb3VudF0udGls ZS0+dGlsZV92X3NpemUpOwo+ID4gPiA+ICsKPiA+ID4gPiArICAgICAgICAgICAgICAgIGlndF9m Yl9zZXRfcG9zaXRpb24oJmNvbm5fZGF0YVtjb3VudF0uZmJfdGVzdF9wYXR0ZXJuLCBcCj4gPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW1hcnksXAo+ID4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29ubl9kYXRhW2NvdW50XS50 aWxlLT50aWxlX2hfc2l6ZSAqXAo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25uX2RhdGFbY291bnRdLnRpbGUtPnRpbGVfaF9sb2MpLAo+ID4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29ubl9kYXRhW2NvdW50XS50aWxlLT50 aWxlX3Zfc2l6ZSAqXAo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25uX2RhdGFbY291bnRdLnRpbGUtPnRpbGVfdl9sb2MpKTsKPiA+ID4gPiArCj4gPiA+ID4g KyAgICAgICAgICAgICAgICBpZ3RfcGxhbmVfc2V0X3NpemUocHJpbWFyeSxcCj4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubl9kYXRhW2NvdW50XS50aWxlLT50 aWxlX2hfc2l6ZSxcCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29ubl9kYXRhW2NvdW50XS50aWxlLT50aWxlX3Zfc2l6ZSk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsg ICAgICAgICAgICAgICAgYnJlYWs7Cj4gPiA+ID4gKyAgICAgICAgICAgIH0KPiA+ID4gPiArICAg ICAgICB9Cj4gPiA+ID4gKyAgICAgICAgY291bnQrKzsKPiA+ID4gPiArICAgIH0KPiA+ID4gPiAr Cj4gPiA+ID4gKyAgICByZXR1cm4gY291bnQ7Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+ID4g K2lndF9tYWluCj4gPiA+ID4gK3sKPiA+ID4gPiArICAgIGlndF9kaXNwbGF5X3QgZGlzcGxheTsK PiA+ID4gPiArICAgIGRhdGFfdCBkYXRhID0ge307Cj4gPiA+ID4gKyAgICBkYXRhX2Nvbm5lY3Rv cl90ICpjb25uX2RhdGE7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgaWd0X2ZpeHR1cmUgewo+ID4g PiA+ICsgICAgICAgIGRhdGEuZHJtX2ZkID0gZHJtX29wZW5fZHJpdmVyX21hc3RlcihEUklWRVJf QU5ZKTsKPiA+ID4gPiArICAgICAgICBrbXN0ZXN0X3NldF92dF9ncmFwaGljc19tb2RlKCk7Cj4g PiA+ID4gKyAgICAgICAgaWd0X2Rpc3BsYXlfcmVxdWlyZSgmZGlzcGxheSwgZGF0YS5kcm1fZmQp Owo+ID4gPiA+ICsgICAgICAgIGRhdGEuZGlzcGxheSA9ICZkaXNwbGF5Owo+ID4gPiA+ICsKPiA+ ID4gPiArICAgICAgICBnZXRfbnVtYmVyX29mX2hfdGlsZXMoJmRhdGEpOwo+ID4gPiA+ICsgICAg ICAgIGlndF9kZWJ1ZygiTnVtYmVyIG9mIEhvcml6b250YWwgVGlsZXM6ICVkXG4iLCBkYXRhLm51 bV9oX3RpbGVzKTsKPiA+ID4gPiArICAgICAgICBkYXRhLmNvbW1pdCA9IGRhdGEuZGlzcGxheS0+ aXNfYXRvbWljID8gQ09NTUlUX0FUT01JQyA6IENPTU1JVF9MRUdBQ1k7Cj4gPiA+ID4gKyAgICB9 Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgaWYoZGF0YS5udW1faF90aWxlcyA+IDApCj4gPiA+ID4g KyAgICAgICAgY29ubl9kYXRhID0gKGRhdGFfY29ubmVjdG9yX3QgKiltYWxsb2MoZGF0YS5udW1f aF90aWxlcyAqIFwKPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2l6ZW9mKGRhdGFfY29ubmVjdG9yX3QpKTsKPiA+ID4gCj4gPiA+IE5vIG5l ZWQgZm9yIHRoaXMgY2FzdCwgdW5uZWNlc3NhcnkgYFxgLgo+ID4gPiAKPiA+ID4gPiArICAgIGln dF9hc3NlcnQoY29ubl9kYXRhKTsKPiA+ID4gCj4gPiA+IFRoaXMgY2hlY2sgcmVhZHMgZ2FyYmFn ZSBmcm9tIHRoZSBzdGFjayBpZiBkYXRhLm51bV9oX3RpbGVzID09IDAuCj4gPiAKPiA+IFRoaXMg Y2hlY2sgc2hvdWxkIHBvc3NpYmx5IGJlIGluc2lkZSB0aGUgc2FtZSBpZgo+ID4gCj4gPiA+ID4g KyAgICBpZ3Rfc3VidGVzdF9mKCJiYXNpYy10ZXN0LXBhdHRlcm4iKSB7Cj4gPiA+IAo+ID4gPiBO byBuZWVkIGZvciB0aGUgX2Ygc3VmZml4Lgo+ID4gPiAKPiA+ID4gVGhpcyBzdWJ0ZXN0IGlzIG1p c3NpbmcgYSBkZXNjcmlwdGlvbi4gQ291bGQgeW91IGFkZCBvbmU/IEZvciBtb3JlCj4gPiA+IGlu Zm9ybWF0aW9uLCBzZWU6Cj4gPiA+IGh0dHBzOi8vZHJtLnBhZ2VzLmZyZWVkZXNrdG9wLm9yZy9p Z3QtZ3B1LXRvb2xzL2lndC1ncHUtdG9vbHMtQ29yZS5odG1sI2lndC1kZXNjcmliZQo+ID4gPiAK PiA+ID4gPiArICAgICAgICBpZ3Rfc2tpcF9vbighZGF0YS5udW1faF90aWxlcyk7Cj4gPiA+ID4g KyAgICAgICAgc2V0X3Rlc3RfcGF0dGVybl9mYigmZGF0YSwgY29ubl9kYXRhKTsKPiA+ID4gPiAr ICAgICAgICBpZ3RfZGlzcGxheV9jb21taXQyKGRhdGEuZGlzcGxheSwgZGF0YS5jb21taXQpOwo+ ID4gPiAKPiA+ID4gSSdtIG5vdCBzdXJlIEkgdW5kZXJzdGFuZCB3aGF0IHRoaXMgdGVzdCBjaGVj a3MuIEl0IGRvZXMgYSBjb21taXQgb24KPiA+ID4gYWxsIHRpbGVkIGNvbm5lY3RvcnMsIGJ1dCBk b2Vzbid0IGNoZWNrIGFueXRoaW5nIGFmdGVyd2FyZHMuIE1heWJlIGl0Cj4gPiA+IHNob3VsZCBj aGVjayB0aGUgcGFnZWZsaXAgc2VyaWFsIGFuZCB0aW1pbmdzPwo+ID4gCj4gPiBUaGlzIGlzIHNv IGZhciBhIG1hbnVhbCB0ZXN0IHdoZXJlIHdlIGp1c3QgbG9vayBhdCB0aGUgcGF0dGVybiBhbmQg bWFrZSBzdXJlIG5vIGFydGlmYWN0cwo+ID4gYW5kIGF1dG8gdGVzdGluZyBqdXN0IG1ha2Ugc3Vy ZSB0aGUgY29tbWl0IGRpZCBub3QgZmFpbCwgYW55IGJldHRlciBpZGVhIHRvIGNoZWNrIGlmIHRo ZQo+ID4gcGFnZV9mbGlwIHRpbWVvdXRzIGRpZG50IG9jY3VyIG9yIG5vdCBzdXJlIGlmIHdlIGNh biBkbyBjcmMgY2hlY2tzIHRvIGVuc3VyZSBubyBhcnRpZmFjdHM/Cj4gPiBBbnkgaWRlYXMvc3Vn Z2VzdGlvbnM/Cj4gCj4gVG8gYmUgaG9uZXN0IEknbSBub3QgYSBmYW4gb2YgbWFudWFsIHRlc3Rp bmcuCj4gCj4gQXMgSSB1bmRlcnN0YW5kIGl0LCB0aWxlZCBkaXNwbGF5cyBtdXN0IGJlIHVwZGF0 ZWQgaW4gc3luYyBzbyB0aGF0IHlvdQo+IGRvbid0IGdldCB0ZWFyaW5nLiBJZiBvbmUgZGlzcGxh eSBpcyBwYWdlLWZsaXBwZWQgYmVmb3JlIHRoZSBvdGhlciwKPiB0aGVyZSB3aWxsIGJlIHRlYXJp bmcgaW4gdGhlIG1pZGRsZSBvZiB0aGUgdGlsZWQgc2NyZWVuLiBBbSBJIHJlYWRpbmcKPiB0aGUg Y29tbWl0IG1lc3NhZ2UgY29ycmVjdGx5PwoKWWVzIHRoZXJlIHdvdWxkIGJlIHRlYXJpbmcgaWYg b25lIHRpbGUgcGFnZSBmbGlwcGVkIGJlZm9yZSB0aGUgb3RoZXIKYW5kIHRoZSBIVyBwcmV2ZW50 cyB0aGlzIGZyb20gaGFwcGVuaW5nIGJ5IHN5bmNocm9uaXppbmcgdGhlIHR3byB2YmxhbmtzCmZy b20gdGhlIHR3byBwb3J0cy4KCklmIHRoZXJlIGFuIGV4YW1wbGUgb2YgaWd0IHdoZXJlIHdlIGNh biBjaGVjayB0aGUgdmJsYW5rIHRpbWluZyBvciBwYWdlIGZsaXAgdGltaW5ncwp0byBhZGQgdGhp cyBjaGVjaz8KCk1hbmFzaQoKPiAKPiBJZiBzbywgbWF5YmUgd2UgY2FuIGNoZWNrIHRoZSBwYWdl LWZsaXAgdGltaW5ncyBhbmQgbWFrZSBzdXJlIHRoZXkgYXJlCj4gZXF1YWw/Cj4gCj4gQSBDUkMg Y2hlY2sgbWlnaHQgYmUgYSBnb29kIGlkZWEgdG9vLCB0byBtYWtlIHN1cmUgYmFuZHdpZHRoIGlz bid0IGFuCj4gaXNzdWUuCj4gCj4gQ0MnaW5nIE1hcnRpbiBpbiBjYXNlIGhlIGhhcyBiZXR0ZXIg aWRlYXMuCj4gCj4gPiBNYW5hc2kKPiA+IAo+ID4gPiA+ICsgICAgfQo+ID4gPiA+ICsKPiA+ID4g PiArICAgIGlndF9maXh0dXJlIHsKPiA+ID4gPiArICAgICAgICBpZihkYXRhLm51bV9oX3RpbGVz ID4gMCkKPiA+ID4gPiArICAgICAgICAgICAgZnJlZShjb25uX2RhdGEpOwo+ID4gPiAKPiA+ID4g SWYgY29ubl9kYXRhIHdhcyBpbml0aWFsaXplZCB0byBOVUxMLCBubyBuZWVkIGZvciB0aGUgY2hl Y2ssIGJlY2F1c2UKPiA+ID4gZnJlZShOVUxMKSBpcyBhIG5vLW9wLgo+ID4gPiAKPiA+ID4gPiAr ICAgICAgICBrbXN0ZXN0X3Jlc3RvcmVfdnRfbW9kZSgpOwo+ID4gPiA+ICsgICAgICAgIGlndF9k aXNwbGF5X2ZpbmkoZGF0YS5kaXNwbGF5KTsKPiA+ID4gPiArICAgIH0KPiA+ID4gPiArfQo+ID4g PiA+IGRpZmYgLS1naXQgYS90ZXN0cy9tZXNvbi5idWlsZCBiL3Rlc3RzL21lc29uLmJ1aWxkCj4g PiA+ID4gaW5kZXggMzRhNzQwMjUuLjZhNmU5Y2U5IDEwMDY0NAo+ID4gPiA+IC0tLSBhL3Rlc3Rz L21lc29uLmJ1aWxkCj4gPiA+ID4gKysrIGIvdGVzdHMvbWVzb24uYnVpbGQKPiA+ID4gPiBAQCAt MjUsNiArMjUsNyBAQCB0ZXN0X3Byb2dzID0gWwo+ID4gPiA+ICAJJ2ttc19jdXJzb3JfZWRnZV93 YWxrJywKPiA+ID4gPiAgCSdrbXNfY3Vyc29yX2xlZ2FjeScsCj4gPiA+ID4gIAkna21zX2RwX2Rz YycsCj4gPiA+ID4gKwkna21zX2RwX3RpbGVkX2Rpc3BsYXknLAo+ID4gPiA+ICAJJ2ttc19kcmF3 X2NyYycsCj4gPiA+ID4gIAkna21zX2ZiY29uX2ZidCcsCj4gPiA+ID4gIAkna21zX2ZlbmNlX3Bp bl9sZWFrJywKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K aWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2