From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id BAED66E5FC for ; Tue, 30 Jul 2019 19:20:09 +0000 (UTC) Date: Tue, 30 Jul 2019 12:21:41 -0700 From: Manasi Navare Message-ID: <20190730192141.GA2736@intel.com> References: <20190717180257.32314-1-madhumitha.tolakanahalli.pradeep@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: T24gV2VkLCBKdWwgMTcsIDIwMTkgYXQgMTE6NDM6NDhQTSAtMDcwMCwgU2VyLCBTaW1vbiB3cm90 ZToKPiBUaGFua3MgZm9yIHlvdXIgcGF0Y2ghIEhlcmUgYXJlIHNvbWUgY29tbWVudHMuCj4gCj4g U3R5bGU6IHdlIHVzZSB0YWJzIGZvciBpbmRlbnRhdGlvbiwgbm90IHNwYWNlcy4KPiAKPiBPbiBX ZWQsIDIwMTktMDctMTcgYXQgMTE6MDIgLTA3MDAsIE1hZGh1bWl0aGEgVG9sYWthbmFoYWxsaSBQ cmFkZWVwIHdyb3RlOgo+ID4gVGhpcyB0ZXN0IHZhbGlkYXRlcyB0aGUgdGlsZWQgRFAgZGlzcGxh eXMgdG8gZGlzcGxheSBhIHRlc3QgcGF0dGVybiBzZWFtbGVzc2x5Cj4gPiBhY3Jvc3MgdGhlIHR3 byB0aWxlcy4gSXQgdmFsaWRhdGVzIHRoZSB0cmFuc2NvZGVyIHBvcnQgc3luYyBmZWF0dXJlIG9u IGk5MTUgdG8KPiA+IGdldCBhIHRlYXJmcmVlIHRpbGVkIGRpc3BsYXkgb3V0cHV0Lgo+ID4gCj4g PiBSZWxhdGVkIGtlcm5lbCB3b3JrIHBhdGNoZXMgLT4gaHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRl c2t0b3Aub3JnL3Nlcmllcy81OTgzNy8jcmV2NC4KPiA+IFRoaXMgdGVzdCBjYW4gZXZlbnR1YWxs eSBiZSBleHRlbmRlZCB0byBjb3ZlciB0aWxlZCBkaXNwbGF5IHN1cHBvcnQgb24gb3RoZXIgY29u bmVjdG9yCj4gPiB0eXBlcy4KPiA+IAo+ID4gQ2M6IE1hbmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5h dmFyZUBpbnRlbC5jb20+Cj4gPiBDYzogUGV0cmkgTGF0dmFsYSA8cGV0cmkubGF0dmFsYUBpbnRl bC5jb20+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBNYWRodW1pdGhhIFRvbGFrYW5haGFsbGkgUHJhZGVl cCA8bWFkaHVtaXRoYS50b2xha2FuYWhhbGxpLnByYWRlZXBAaW50ZWwuY29tPgo+IAo+IE5leHQg dGltZSwgY2FuIHlvdSBzZW5kIGJvdGggcGF0Y2hlcyBpbiBvbmUgZ28/IEl0J3Mgbm90IHBvc3Np YmxlIHRvCj4gY2hlY2sgd2hldGhlciB0aGlzIHRlc3QgYWN0dWFsbHkgcGFzc2VzIENJLCBzaW5j ZSBidWlsZCBmYWlscyAoc2VlIHRoZQo+IHR3byBhdXRvbWF0ZWQgZmFpbHVyZSByZXBsaWVzKS4K ClllcyBwbGVhc2Ugc2VuZCB0aGlzIGFzIGEgc2VyaWVzIHdpdGggMXN0IHBhdGNoIHRoYXQgZGVm aW5lcyB0aGUgdGlsZSBwYXJzZXIKYW5kIHNlY29uZCB3aXRoIHRoZSBhY3R1YWwgdGVzdCB0aGF0 IHVzZXMgaXQKCj4gCj4gVG8gbGVhcm4gaG93IHRvIHVzZSBnaXQtc2VuZC1lbWFpbCwgeW91IGNh biByZWFkOgo+IGh0dHBzOi8vZ2l0LXNlbmQtZW1haWwuaW8vCj4gCj4gPiAtLS0KPiA+ICB0ZXN0 cy9NYWtlZmlsZS5zb3VyY2VzICAgICAgIHwgICAxICsKPiA+ICB0ZXN0cy9rbXNfZHBfdGlsZWRf ZGlzcGxheS5jIHwgMjM5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPiAg dGVzdHMvbWVzb24uYnVpbGQgICAgICAgICAgICB8ICAgMSArCj4gPiAgMyBmaWxlcyBjaGFuZ2Vk LCAyNDEgaW5zZXJ0aW9ucygrKQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9rbXNfZHBf dGlsZWRfZGlzcGxheS5jCj4gPiAKPiA+IGRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3Vy Y2VzIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwo+ID4gaW5kZXggMjUwZGJkMzMuLmU5MzczOTQx IDEwMDY0NAo+ID4gLS0tIGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcwo+ID4gKysrIGIvdGVzdHMv TWFrZWZpbGUuc291cmNlcwo+ID4gQEAgLTQwLDYgKzQwLDcgQEAgVEVTVFNfcHJvZ3MgPSBcCj4g PiAgCWttc19jdXJzb3JfZWRnZV93YWxrIFwKPiA+ICAJa21zX2N1cnNvcl9sZWdhY3kgXAo+ID4g IAlrbXNfZHBfZHNjIFwKPiA+ICsJa21zX2RwX3RpbGVkX2Rpc3BsYXkgXAo+ID4gIAlrbXNfZHJh d19jcmMgXAo+ID4gIAlrbXNfZmJjb25fZmJ0IFwKPiA+ICAJa21zX2ZlbmNlX3Bpbl9sZWFrIFwK PiA+IGRpZmYgLS1naXQgYS90ZXN0cy9rbXNfZHBfdGlsZWRfZGlzcGxheS5jIGIvdGVzdHMva21z X2RwX3RpbGVkX2Rpc3BsYXkuYwo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4IDAw MDAwMDAwLi5hZjY0NDU3Mwo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIvdGVzdHMva21zX2Rw X3RpbGVkX2Rpc3BsYXkuYwo+ID4gQEAgLTAsMCArMSwyMzkgQEAKPiA+ICsvKgo+ID4gKyAqIENv cHlyaWdodCDCqSAyMDE4IEludGVsIENvcnBvcmF0aW9uCj4gPiArICoKPiA+ICsgKiBQZXJtaXNz aW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRh aW5pbmcgYQo+ID4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1 bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gPiArICogdG8gZGVhbCBpbiB0aGUg U29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlv bgo+ID4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNo LCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+ID4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0 aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ID4gKyAqIFNv ZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNv bmRpdGlvbnM6Cj4gPiArICoKPiA+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg dGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gPiArICogcGFyYWdy YXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRp b25zIG9mIHRoZQo+ID4gKyAqIFNvZnR3YXJlLgo+ID4gKyAqCj4gPiArICogVEhFIFNPRlRXQVJF IElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJF U1MgT1IKPiA+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiA+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPiA+ ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBD TEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ID4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBB Q1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gPiArICogRlJP TSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBP UiBPVEhFUiBERUFMSU5HUwo+ID4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPiA+ICsgKgo+ID4gKyAq IEF1dGhvcnM6Cj4gPiArICogIE1hZGh1bWl0aGEgVG9sYWthbmFoYWxsaSBQcmFkZWVwCj4gPiAr ICogICAgICA8bWFkaHVtaXRoYS50b2xha2FuYWhhbGxpLnByYWRlZXBAaW50ZWwuY29tPgo+ID4g KyAqCj4gPiArICogRGlzcGxheSBQb3J0IFRpbGVkIERpc3BsYXkgVGVzdAo+ID4gKyAqIFRoaXMg dGVzdCBwYXJzZXMgdGhlIHRpbGUgaW5mb3JtYXRpb24gb2YgdGhlIGNvbm5lY3RvcnMgdGhhdCBo YXZlIFRJTEUKPiA+ICsgKiBwcm9wZXJ0eSBzZXQsIHNldHMgdXAgdGhlIGZyYW1lYnVmZmVyIHdp dGggY29ycmVjdCBvZmZzZXRzIGNvcnJlc3BvbmRpbmcgdG8KPiA+ICsgKiB0aGUgdGlsZSBvZmZz ZXRzIGFuZCBkb2VzIGFuIGF0b21pYyBtb2Rlc2V0IHdpdGggdHdvIENSVENzIGZvciB0d28KPiA+ ICsgKiBjb25uZWN0b3JzLgo+ID4gKyAqCj4gPiArICogVGhpcyB0ZXN0IGN1cnJlbnRseSBzdXBw b3J0cyBvbmx5IGhvcml6b250YWxseSB0aWxlZCBkaXNwbGF5cywgaW4gbGluZSB3aXRoCj4gPiAr ICogdGhlIGRpc3BsYXlzIHN1cHBvcnRlZCBieSB0aGUga2VybmVsIGF0IHRoZSBtb21lbnQuCj4g PiArICovCj4gPiArCj4gPiArI2luY2x1ZGUgImRybV9tb2RlLmgiCj4gPiArI2luY2x1ZGUgImRy bV9mb3VyY2MuaCIKPiA+ICsjaW5jbHVkZSAiaWd0LmgiCj4gPiArCj4gPiArdHlwZWRlZiBzdHJ1 Y3Qgewo+ID4gKyAgICBpbnQgZHJtX2ZkOwo+ID4gKyAgICBpbnQgbnVtX2hfdGlsZXM7Cj4gPiAr ICAgIGlndF9kaXNwbGF5X3QgKmRpc3BsYXk7Cj4gPiArICAgIGVudW0gaWd0X2NvbW1pdF9zdHls ZSBjb21taXQ7Cj4gPiArfSBkYXRhX3Q7Cj4gPiArCj4gPiArdHlwZWRlZiBzdHJ1Y3Qgewo+ID4g KyAgICBpZ3Rfb3V0cHV0X3QgKm91dHB1dDsKPiA+ICsgICAgaWd0X3RpbGVfaW5mb190ICp0aWxl Owo+ID4gKyAgICBpZ3RfZmJfdCBmYl90ZXN0X3BhdHRlcm47Cj4gPiArICAgIGRybU1vZGVDb25u ZWN0b3JQdHIgY29ubmVjdG9yOwo+ID4gKyAgICBlbnVtIHBpcGUgcGlwZTsKPiA+ICsgICAgZW51 bSBpZ3RfY29tbWl0X3N0eWxlIGNvbW1pdDsKPiA+ICt9IGRhdGFfY29ubmVjdG9yX3Q7Cj4gPiAr Cj4gPiArc3RhdGljIGlubGluZSBpbnQgZHJtX3Byb3BlcnR5X2lzX3RpbGUoZHJtTW9kZVByb3Bl cnR5UHRyIHByb3ApCj4gCj4gSSB3b3VsZG4ndCBwZXJzb25hbGx5IHVzZSBgaW5saW5lYC4gVGhl IGNvbXBpbGVyIGlzIHNtYXJ0ZXIgdGhhbiBodW1hbnMKPiB0byBkZWNpZGUgd2hldGhlciBvciBu b3QgYSBmdW5jdGlvbiBzaG91bGQgYmUgaW5saW5lZC4KPiAKPiA+ICt7Cj4gPiArCXJldHVybihz dHJjbXAocHJvcC0+bmFtZSA/IHByb3AtPm5hbWUgOiAiIiwgIlRJTEUiKT8gMCA6IDEpOwo+IAo+ IFN0eWxlOiB1bm5lY2Vzc2FyeSBwYXJlbnRoZXNlcywgbWlzc2luZyBzcGFjZSBiZWZvcmUgYD9g Lgo+IAo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBnZXRfbnVtYmVyX29mX2hfdGlsZXMo ZGF0YV90ICpkYXRhKQo+IAo+IFdoYXQgaWYgbXVsdGlwbGUgdGlsZXMgYXJlIGNvbm5lY3RlZD8g U2hvdWxkbid0IHdlIHVzZSB0aWxlX2dyb3VwX2lkPwoKWWVzIHRoZXJlIGNvdWxkIGJlIG11bHRp cGxlIG1vbml0b3JzIHdpdGggdGlsZXMgc28gdXNlIHRpbGVfZ3JvdXBfaWQgdG8gY2hlY2sKdGhh dCB0aGUgdGlsZSBiZWxvbmdzIHRvIHRoZSBzYW1lIGdyb3VwIGFuZCB0aGVuIHVzZSBudW1faF90 aWxlcwoKPiAKPiA+ICt7Cj4gPiArICAgIGludCBpOwo+ID4gKyAgICBkcm1Nb2RlUmVzICpyZXM7 Cj4gPiArICAgIGRybU1vZGVDb25uZWN0b3IgKmNvbm5lY3RvcjsKPiA+ICsgICAgZHJtTW9kZVBy b3BlcnR5UHRyIHByb3A7Cj4gPiArICAgIGRybU1vZGVQcm9wZXJ0eUJsb2JQdHIgYmxvYjsKPiA+ ICsgICAgaWd0X3RpbGVfaW5mb190IHRpbGU7Cj4gPiArCj4gPiArICAgIGlndF9yZXF1aXJlKHJl cyA9IGRybU1vZGVHZXRSZXNvdXJjZXMoZGF0YS0+ZHJtX2ZkKSk7Cj4gCj4gVGhpcyBzaG91bGQg cHJvYmFibHkgYmUgaWd0X2Fzc2VydC4KPiAKPiA+ICsgICAgZm9yKGkgPSAwOyBpIDwgcmVzLT5j b3VudF9jb25uZWN0b3JzOyBpKyspCj4gPiArICAgIHsKPiAKPiBTdHlsZTogbm8gbmV3bGluZSBi ZWZvcmUgYHtgIChvbmx5IGZvciBmdW5jdGlvbnMsIGFwcGxpZXMgdG8gdGhlIHdob2xlCj4gcGF0 Y2gpLgo+IAo+ID4gKyAgICAgICAgY29ubmVjdG9yID0gZHJtTW9kZUdldENvbm5lY3RvckN1cnJl bnQoZGF0YS0+ZHJtX2ZkLCBcCj4gCj4gU3R5bGU6IHVubmVjZXNzYXJ5IGBcYC4KPiAKPiBXZSBj b3VsZCBpZ3RfYXNzZXJ0KGNvbm5lY3RvcikuCj4gCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZXMtPmNvbm5lY3RvcnNbaV0pOwo+ID4gKwo+ID4g KyAgICAgICAgaWYoISgoY29ubmVjdG9yLT5jb25uZWN0aW9uID09IERSTV9NT0RFX0NPTk5FQ1RF RCkgJiYKPiA+ICsgICAgICAgICAgICAoY29ubmVjdG9yLT5jb25uZWN0b3JfdHlwZSA9PSBEUk1f TU9ERV9DT05ORUNUT1JfRGlzcGxheVBvcnQpKSkKPiA+ICsgICAgICAgICAgICAgICAgY29udGlu dWU7Cj4gCj4gU3R5bGU6IHdlIGNhbiBpbnZlcnQgdGhpcyBjb25kaXRpb24gdG8gbWFrZSBjbGVh cmVyLgoKQnV0IHdvdWxkbnQgdGhhdCBhZGQgYWRkaXRpb25hbCBuZXN0aW5nPwoKPiAKPiA+ICsK PiA+ICsgICAgICAgIGZvcihpID0gMDsgaSA8IGNvbm5lY3Rvci0+Y291bnRfcHJvcHM7IGkrKykK PiA+ICsgICAgICAgIHsKPiA+ICsgICAgICAgICAgICBwcm9wID0gZHJtTW9kZUdldFByb3BlcnR5 KGRhdGEtPmRybV9mZCwgY29ubmVjdG9yLT5wcm9wc1tpXSk7Cj4gCj4gV2UgY291bGQgaWd0X2Fz c2VydChwcm9wKQo+IAo+IFdlIG5lZWQgdG8gZnJlZSBpdCBhdCBzb21lIHBvaW50Lgo+IAo+ID4g KyAgICAgICAgICAgIGlmKCEoZHJtX3Byb3BlcnR5X2lzX3RpbGUocHJvcCkgJiYKPiAKPiBTdHls ZTogbWlzc2luZyBzcGFjZSBhZnRlciBpZiBrZXl3b3JkIChhcHBsaWVzIHRvIHRoZSB3aG9sZSBw YXRjaCkuCj4gCj4gPiArICAgICAgICAgICAgICAgIGRybV9wcm9wZXJ0eV90eXBlX2lzKHByb3As IERSTV9NT0RFX1BST1BfQkxPQikpKQo+IAo+IEknZCBtb3ZlIHRoaXMgY2hlY2sgaW50byBkcm1f cHJvcGVydHlfaXNfdGlsZS4KPiAKPiA+ICsgICAgICAgICAgICAgICAgY29udGludWU7Cj4gPiAr Cj4gPiArICAgICAgICAgICAgYmxvYiA9IGRybU1vZGVHZXRQcm9wZXJ0eUJsb2IoZGF0YS0+ZHJt X2ZkLCBcCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u bmVjdG9yLT5wcm9wX3ZhbHVlc1tpXSk7Cj4gPiArCj4gPiArICAgICAgICAgICAgaWYoIWJsb2Ip Cj4gPiArICAgICAgICAgICAgICAgIGJyZWFrOwo+ID4gKyAgICAgICAgICAgIGlndF9wYXJzZV9j b25uZWN0b3JfdGlsZV9ibG9iKGJsb2IsICZ0aWxlKTsKPiA+ICsgICAgICAgICAgICBkYXRhLT5u dW1faF90aWxlcyA9IHRpbGUubnVtX2hfdGlsZTsKPiA+ICsgICAgICAgICAgICBicmVhazsKPiA+ ICsgICAgICAgIH0KPiA+ICsgICAgfQo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW50IHNldF90 ZXN0X3BhdHRlcm5fZmIoZGF0YV90ICpkYXRhLCBkYXRhX2Nvbm5lY3Rvcl90ICpjb25uX2RhdGEp Cj4gPiArewo+ID4gKyAgICBpbnQgaTsKPiA+ICsgICAgaW50IGNvdW50ID0gMDsKPiA+ICsgICAg Ym9vbCBpc190aWxlID0gZmFsc2U7Cj4gPiArICAgIGVudW0gcGlwZSBwaXBlOwo+ID4gKyAgICBp Z3RfdGlsZV9pbmZvX3QgdGlsZTsKPiA+ICsgICAgaWd0X291dHB1dF90ICpvdXRwdXQ7Cj4gPiAr ICAgIGlndF9wbGFuZV90ICpwcmltYXJ5Owo+ID4gKyAgICBkcm1Nb2RlUHJvcGVydHlQdHIgcHJv cDsKPiA+ICsgICAgZHJtTW9kZVByb3BlcnR5QmxvYlB0ciBibG9iOwo+ID4gKwo+ID4gKyAgICBm b3JfZWFjaF9jb25uZWN0ZWRfb3V0cHV0KGRhdGEtPmRpc3BsYXksIG91dHB1dCkKPiA+ICsgICAg ewo+ID4gKyAgICAgICAgaXNfdGlsZSA9IGZhbHNlOwo+ID4gKwo+ID4gKyAgICAgICAgY29ubl9k YXRhW2NvdW50XS5jb25uZWN0b3IgPSBkcm1Nb2RlR2V0Q29ubmVjdG9yKGRhdGEtPmRpc3BsYXkt PmRybV9mZCwgXAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG91dHB1dC0+aWQpOwo+ID4gKwo+ID4gKyAgICAgICAgaWYoIShjb25u X2RhdGFbY291bnRdLmNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUgPT0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICBEUk1fTU9ERV9DT05ORUNUT1JfRGlzcGxheVBvcnQpKQo+ID4gKyAgICAg ICAgICAgIGNvbnRpbnVlOwo+ID4gKwo+ID4gKyAgICAgICAgLyogUGFyc2UgdGhyb3VnaCBlYWNo IGNvbm5lY3RvciBwcm9wZXJ0eSAqLwo+ID4gKyAgICAgICAgZm9yKGkgPSAwOyBpIDwgY29ubl9k YXRhW2NvdW50XS5jb25uZWN0b3ItPmNvdW50X3Byb3BzOyBpKyspCj4gPiArICAgICAgICB7Cj4g PiArICAgICAgICAgICAgcHJvcCA9IGRybU1vZGVHZXRQcm9wZXJ0eShkYXRhLT5kaXNwbGF5LT5k cm1fZmQsIFwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5f ZGF0YVtjb3VudF0uY29ubmVjdG9yLT5wcm9wc1tpXSk7Cj4gPiArCj4gPiArICAgICAgICAgICAg aWYoISgoZHJtX3Byb3BlcnR5X2lzX3RpbGUocHJvcCkgJiYKPiA+ICsgICAgICAgICAgICAgICAg ZHJtX3Byb3BlcnR5X3R5cGVfaXMocHJvcCwgRFJNX01PREVfUFJPUF9CTE9CKSkpKQo+ID4gKyAg ICAgICAgICAgICAgICBjb250aW51ZTsKPiA+ICsKPiA+ICsgICAgICAgICAgICBibG9iID0gZHJt TW9kZUdldFByb3BlcnR5QmxvYihkYXRhLT5kaXNwbGF5LT5kcm1fZmQsIFwKPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29ubl9kYXRhW2NvdW50XS5jb25uZWN0b3ItPnByb3BfdmFs dWVzW2ldKTsKPiA+ICsKPiA+ICsgICAgICAgICAgICBpZighYmxvYikKPiA+ICsgICAgICAgICAg ICAgICAgYnJlYWs7Cj4gPiArCj4gPiArICAgICAgICAgICAgaWd0X3BhcnNlX2Nvbm5lY3Rvcl90 aWxlX2Jsb2IoYmxvYiwgJnRpbGUpOwo+ID4gKyAgICAgICAgICAgIGNvbm5fZGF0YVtjb3VudF0u dGlsZSA9ICZ0aWxlOwo+ID4gKyAgICAgICAgICAgIGlzX3RpbGUgPSB0cnVlOwo+ID4gKyAgICAg ICAgICAgIGJyZWFrOwo+ID4gKyAgICAgICAgfQo+IAo+IEkgZmVlbCBsaWtlIHRoaXMgd2hvbGUg YmxvY2sgYWJvdmUgaXMgZHVwbGljYXRlZC4gQ291bGQgYmUgZXh0cmFjdGVkCj4gaW50byBhIGZ1 bmN0aW9uLCBlLmcuCj4gCj4gICAgIGJvb2wgY29ubmVjdG9yX2dldF90aWxlKGRybU1vZGVDb25u ZWN0b3JSZXMgKmNvbm4sIGlndF90aWxlX2luZm9fdCAqdGlsZV9pbmZvKQo+IAo+ID4gKyAgICAg ICAgaWYoIWlzX3RpbGUpCj4gPiArICAgICAgICAgICAgY29udGludWU7Cj4gPiArCj4gPiArICAg ICAgICBvdXRwdXQgPSBpZ3Rfb3V0cHV0X2Zyb21fY29ubmVjdG9yKGRhdGEtPmRpc3BsYXksIFwK PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubl9kYXRh W2NvdW50XS5jb25uZWN0b3IpOwo+IAo+IFN0eWxlOiB1bm5lY2Vzc2FyeSBgXGAuIEFwcGxpZXMg dG8gdGhlIHdob2xlIHBhdGNoLgo+IAo+ID4gKwo+ID4gKyAgICAgICAgZm9yX2VhY2hfcGlwZShk YXRhLT5kaXNwbGF5LCBwaXBlKQo+ID4gKyAgICAgICAgewo+ID4gKyAgICAgICAgICAgIGlndF9k ZWJ1ZygiQ3VycmVudCBQSVBFIGlzICVkXG4iLCBwaXBlKTsKPiA+ICsKPiA+ICsgICAgICAgICAg ICBpZigoY291bnQgPiAwKSAmJiAocGlwZSA9PSBjb25uX2RhdGFbY291bnQtMV0ucGlwZSkpCj4g PiArICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+IAo+IFN0eWxlOiB1bm5lY2Vzc2FyeSBwYXJl bnRoZXNlcy4KPiAKPiA+ICsgICAgICAgICAgICBpZihpZ3RfcGlwZV9jb25uZWN0b3JfdmFsaWQo cGlwZSwgb3V0cHV0KSkgewo+ID4gKyAgICAgICAgICAgICAgICBjb25uX2RhdGFbY291bnRdLnBp cGUgPSBwaXBlOwo+ID4gKyAgICAgICAgICAgICAgICBjb25uX2RhdGFbY291bnRdLm91dHB1dCA9 IG91dHB1dDsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgICAgaWd0X291dHB1dF9zZXRfcGlwZShj b25uX2RhdGFbY291bnRdLm91dHB1dCwgXAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbm5fZGF0YVtjb3VudF0ucGlwZSk7Cj4gPiArCj4gPiArICAgICAgICAgICAg ICAgIGlndF9jcmVhdGVfcGF0dGVybl9mYihkYXRhLT5kcm1fZmQsXAo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChjb25uX2RhdGFbY291bnRdLnRpbGUtPnRpbGVfaF9z aXplICpcCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPm51 bV9oX3RpbGVzKSxcCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bm5fZGF0YVtjb3VudF0udGlsZS0+dGlsZV92X3NpemUsXAo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBEUk1fRk9STUFUX1hCR1I4ODg4LFwKPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSxcCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb25uX2RhdGFbY291bnRd LmZiX3Rlc3RfcGF0dGVybik7Cj4gPiArCj4gPiArICAgICAgICAgICAgICAgIHByaW1hcnkgPSBp Z3Rfb3V0cHV0X2dldF9wbGFuZV90eXBlKGNvbm5fZGF0YVtjb3VudF0ub3V0cHV0LFwKPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFJNX1BM QU5FX1RZUEVfUFJJTUFSWSk7Cj4gPiArCj4gPiArICAgICAgICAgICAgICAgIGlndF9wbGFuZV9z ZXRfZmIocHJpbWFyeSwgJmNvbm5fZGF0YVtjb3VudF0uZmJfdGVzdF9wYXR0ZXJuKTsKPiA+ICsK PiA+ICsgICAgICAgICAgICAgICAgaWd0X2ZiX3NldF9zaXplKCZjb25uX2RhdGFbY291bnRdLmZi X3Rlc3RfcGF0dGVybiwgcHJpbWFyeSxcCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25uX2RhdGFbY291bnRdLnRpbGUtPnRpbGVfaF9zaXplLFwKPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbm5fZGF0YVtjb3VudF0udGlsZS0+dGlsZV92X3NpemUp Owo+ID4gKwo+ID4gKyAgICAgICAgICAgICAgICBpZ3RfZmJfc2V0X3Bvc2l0aW9uKCZjb25uX2Rh dGFbY291bnRdLmZiX3Rlc3RfcGF0dGVybiwgXAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHByaW1hcnksXAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChjb25uX2RhdGFbY291bnRdLnRpbGUtPnRpbGVfaF9zaXplICpcCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubl9kYXRhW2NvdW50XS50aWxlLT50aWxl X2hfbG9jKSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29ubl9k YXRhW2NvdW50XS50aWxlLT50aWxlX3Zfc2l6ZSAqXAo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbm5fZGF0YVtjb3VudF0udGlsZS0+dGlsZV92X2xvYykpOwo+ID4g Kwo+ID4gKyAgICAgICAgICAgICAgICBpZ3RfcGxhbmVfc2V0X3NpemUocHJpbWFyeSxcCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uX2RhdGFbY291bnRdLnRpbGUt PnRpbGVfaF9zaXplLFwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bm5fZGF0YVtjb3VudF0udGlsZS0+dGlsZV92X3NpemUpOwo+ID4gKwo+ID4gKyAgICAgICAgICAg ICAgICBicmVhazsKPiA+ICsgICAgICAgICAgICB9Cj4gPiArICAgICAgICB9Cj4gPiArICAgICAg ICBjb3VudCsrOwo+ID4gKyAgICB9Cj4gPiArCj4gPiArICAgIHJldHVybiBjb3VudDsKPiA+ICt9 Cj4gPiArCj4gPiAraWd0X21haW4KPiA+ICt7Cj4gPiArICAgIGlndF9kaXNwbGF5X3QgZGlzcGxh eTsKPiA+ICsgICAgZGF0YV90IGRhdGEgPSB7fTsKPiA+ICsgICAgZGF0YV9jb25uZWN0b3JfdCAq Y29ubl9kYXRhOwo+ID4gKwo+ID4gKyAgICBpZ3RfZml4dHVyZSB7Cj4gPiArICAgICAgICBkYXRh LmRybV9mZCA9IGRybV9vcGVuX2RyaXZlcl9tYXN0ZXIoRFJJVkVSX0FOWSk7Cj4gPiArICAgICAg ICBrbXN0ZXN0X3NldF92dF9ncmFwaGljc19tb2RlKCk7Cj4gPiArICAgICAgICBpZ3RfZGlzcGxh eV9yZXF1aXJlKCZkaXNwbGF5LCBkYXRhLmRybV9mZCk7Cj4gPiArICAgICAgICBkYXRhLmRpc3Bs YXkgPSAmZGlzcGxheTsKPiA+ICsKPiA+ICsgICAgICAgIGdldF9udW1iZXJfb2ZfaF90aWxlcygm ZGF0YSk7Cj4gPiArICAgICAgICBpZ3RfZGVidWcoIk51bWJlciBvZiBIb3Jpem9udGFsIFRpbGVz OiAlZFxuIiwgZGF0YS5udW1faF90aWxlcyk7Cj4gPiArICAgICAgICBkYXRhLmNvbW1pdCA9IGRh dGEuZGlzcGxheS0+aXNfYXRvbWljID8gQ09NTUlUX0FUT01JQyA6IENPTU1JVF9MRUdBQ1k7Cj4g PiArICAgIH0KPiA+ICsKPiA+ICsgICAgaWYoZGF0YS5udW1faF90aWxlcyA+IDApCj4gPiArICAg ICAgICBjb25uX2RhdGEgPSAoZGF0YV9jb25uZWN0b3JfdCAqKW1hbGxvYyhkYXRhLm51bV9oX3Rp bGVzICogXAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNpemVvZihkYXRhX2Nvbm5lY3Rvcl90KSk7Cj4gCj4gTm8gbmVlZCBmb3IgdGhpcyBjYXN0 LCB1bm5lY2Vzc2FyeSBgXGAuCj4gCj4gPiArICAgIGlndF9hc3NlcnQoY29ubl9kYXRhKTsKPiAK PiBUaGlzIGNoZWNrIHJlYWRzIGdhcmJhZ2UgZnJvbSB0aGUgc3RhY2sgaWYgZGF0YS5udW1faF90 aWxlcyA9PSAwLgoKVGhpcyBjaGVjayBzaG91bGQgcG9zc2libHkgYmUgaW5zaWRlIHRoZSBzYW1l IGlmCgo+IAo+ID4gKyAgICBpZ3Rfc3VidGVzdF9mKCJiYXNpYy10ZXN0LXBhdHRlcm4iKSB7Cj4g Cj4gTm8gbmVlZCBmb3IgdGhlIF9mIHN1ZmZpeC4KPiAKPiBUaGlzIHN1YnRlc3QgaXMgbWlzc2lu ZyBhIGRlc2NyaXB0aW9uLiBDb3VsZCB5b3UgYWRkIG9uZT8gRm9yIG1vcmUKPiBpbmZvcm1hdGlv biwgc2VlOgo+IGh0dHBzOi8vZHJtLnBhZ2VzLmZyZWVkZXNrdG9wLm9yZy9pZ3QtZ3B1LXRvb2xz L2lndC1ncHUtdG9vbHMtQ29yZS5odG1sI2lndC1kZXNjcmliZQo+IAo+ID4gKyAgICAgICAgaWd0 X3NraXBfb24oIWRhdGEubnVtX2hfdGlsZXMpOwo+ID4gKyAgICAgICAgc2V0X3Rlc3RfcGF0dGVy bl9mYigmZGF0YSwgY29ubl9kYXRhKTsKPiA+ICsgICAgICAgIGlndF9kaXNwbGF5X2NvbW1pdDIo ZGF0YS5kaXNwbGF5LCBkYXRhLmNvbW1pdCk7Cj4gCj4gSSdtIG5vdCBzdXJlIEkgdW5kZXJzdGFu ZCB3aGF0IHRoaXMgdGVzdCBjaGVja3MuIEl0IGRvZXMgYSBjb21taXQgb24KPiBhbGwgdGlsZWQg Y29ubmVjdG9ycywgYnV0IGRvZXNuJ3QgY2hlY2sgYW55dGhpbmcgYWZ0ZXJ3YXJkcy4gTWF5YmUg aXQKPiBzaG91bGQgY2hlY2sgdGhlIHBhZ2VmbGlwIHNlcmlhbCBhbmQgdGltaW5ncz8KClRoaXMg aXMgc28gZmFyIGEgbWFudWFsIHRlc3Qgd2hlcmUgd2UganVzdCBsb29rIGF0IHRoZSBwYXR0ZXJu IGFuZCBtYWtlIHN1cmUgbm8gYXJ0aWZhY3RzCmFuZCBhdXRvIHRlc3RpbmcganVzdCBtYWtlIHN1 cmUgdGhlIGNvbW1pdCBkaWQgbm90IGZhaWwsIGFueSBiZXR0ZXIgaWRlYSB0byBjaGVjayBpZiB0 aGUKcGFnZV9mbGlwIHRpbWVvdXRzIGRpZG50IG9jY3VyIG9yIG5vdCBzdXJlIGlmIHdlIGNhbiBk byBjcmMgY2hlY2tzIHRvIGVuc3VyZSBubyBhcnRpZmFjdHM/CkFueSBpZGVhcy9zdWdnZXN0aW9u cz8KCk1hbmFzaQoKPiAKPiA+ICsgICAgfQo+ID4gKwo+ID4gKyAgICBpZ3RfZml4dHVyZSB7Cj4g PiArICAgICAgICBpZihkYXRhLm51bV9oX3RpbGVzID4gMCkKPiA+ICsgICAgICAgICAgICBmcmVl KGNvbm5fZGF0YSk7Cj4gCj4gSWYgY29ubl9kYXRhIHdhcyBpbml0aWFsaXplZCB0byBOVUxMLCBu byBuZWVkIGZvciB0aGUgY2hlY2ssIGJlY2F1c2UKPiBmcmVlKE5VTEwpIGlzIGEgbm8tb3AuCj4g Cj4gPiArICAgICAgICBrbXN0ZXN0X3Jlc3RvcmVfdnRfbW9kZSgpOwo+ID4gKyAgICAgICAgaWd0 X2Rpc3BsYXlfZmluaShkYXRhLmRpc3BsYXkpOwo+ID4gKyAgICB9Cj4gPiArfQo+ID4gZGlmZiAt LWdpdCBhL3Rlc3RzL21lc29uLmJ1aWxkIGIvdGVzdHMvbWVzb24uYnVpbGQKPiA+IGluZGV4IDM0 YTc0MDI1Li42YTZlOWNlOSAxMDA2NDQKPiA+IC0tLSBhL3Rlc3RzL21lc29uLmJ1aWxkCj4gPiAr KysgYi90ZXN0cy9tZXNvbi5idWlsZAo+ID4gQEAgLTI1LDYgKzI1LDcgQEAgdGVzdF9wcm9ncyA9 IFsKPiA+ICAJJ2ttc19jdXJzb3JfZWRnZV93YWxrJywKPiA+ICAJJ2ttc19jdXJzb3JfbGVnYWN5 JywKPiA+ICAJJ2ttc19kcF9kc2MnLAo+ID4gKwkna21zX2RwX3RpbGVkX2Rpc3BsYXknLAo+ID4g IAkna21zX2RyYXdfY3JjJywKPiA+ICAJJ2ttc19mYmNvbl9mYnQnLAo+ID4gIAkna21zX2ZlbmNl X3Bpbl9sZWFrJywKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2