From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH i-g-t] tests/kms_fbc_crc.c: No longer dependant on Cairo A setup function that used to use Cairo to draw 2 rectangles covering the whole screen has been changed to use igt_draw Date: Fri, 22 Jan 2016 19:17:51 +0200 Message-ID: <20160122171751.GO23290@intel.com> References: <1452872548-4959-1-git-send-email-devon.davies@intel.com> <1453318472.22174.93.camel@intel.com> <38ACF0BC99FA3A449472D1EE32ACA1EA2B2918AB@IRSMSX107.ger.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 5F9BD6EC62 for ; Fri, 22 Jan 2016 09:17:55 -0800 (PST) Content-Disposition: inline In-Reply-To: <38ACF0BC99FA3A449472D1EE32ACA1EA2B2918AB@IRSMSX107.ger.corp.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Davies, Devon" Cc: "Vetter, Daniel" , "intel-gfx@lists.freedesktop.org" , "Zanoni, Paulo R" List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBKYW4gMjIsIDIwMTYgYXQgMDU6MDI6MDdQTSArMDAwMCwgRGF2aWVzLCBEZXZvbiB3 cm90ZToKPiBIaSwKPiAKPiBXaXRoIHJlZ2FyZHMgdG8gdGhlIGFkZGl0aW9uYWwgTlVMTCBhcmd1 bWVudCB0byBkcm1Nb2RlU2V0UGxhbmUgb24gQW5kcm9pZC4KPiAKPiBBcHBhcmVudGx5LCB0aGVy ZSB3YXMgYSBwcmV2aW91cyBhdHRlbXB0IHRvIG1ha2UgYSB3cmFwcGVyIGZvciBpdC4KPiBXb3Vs ZCBpdCBiZSBwb3NzaWJsZSB0byB1cHN0cmVhbSB0aGF0PwoKSG93IGFib3V0IGZpeCBpdCBpbiBB bmRyb2lkIHdpdGggU2V0UGxhbmVBbmRyb2lkSGFjaygpIG9yIHNvbWVzdWNoPwoKPiAKPiBEZXZv bgo+IAo+IAo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gRnJvbTogRGF2aWVzLCBEZXZv biAKPiBTZW50OiBGcmlkYXksIEphbnVhcnkgMjIsIDIwMTYgMzoxOCBQTQo+IFRvOiBaYW5vbmks IFBhdWxvIFI7IGludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBDYzogR29yZSwgVGlt OyBWZXR0ZXIsIERhbmllbAo+IFN1YmplY3Q6IFJFOiBbSW50ZWwtZ2Z4XSBbUEFUQ0ggaS1nLXRd IHRlc3RzL2ttc19mYmNfY3JjLmM6IE5vIGxvbmdlciBkZXBlbmRhbnQgb24gQ2Fpcm8gQSBzZXR1 cCBmdW5jdGlvbiB0aGF0IHVzZWQgdG8gdXNlIENhaXJvIHRvIGRyYXcgMiByZWN0YW5nbGVzIGNv dmVyaW5nIHRoZSB3aG9sZSBzY3JlZW4gaGFzIGJlZW4gY2hhbmdlZCB0byB1c2UgaWd0X2RyYXcK PiAKPiBIaSwKPiAKPiBUaGFua3MgZm9yIHRoZSBmZWVkYmFjay4KPiAKPiBJJ2xsIHVwZGF0ZSB0 aGUgY29tbWl0IHRpdGxlLiBJIHdpbGwgYWxzbyBzZXBhcmF0ZSB0aGlzIHBhdGNoIGludG8gNSBw YXRjaGVzLgo+IAo+IEZvciBub3cgSSB3YW50IHRvIGtlZXAgdGhlICJpZmRlZiBkYW5jZSIgaW4g aWd0X2ZiYy5jLiBJZiB3ZSB3YW50IHRvIHNwbGl0IHRoZSBmaWxlIHVwLCB0aGF0IHNob3VsZCBi ZSBhIG5ldyBjb21taXQvcGF0Y2guCj4gKEkgdGhpbmsgd2Ugc2hvdWxkIGdldCB0aGUgZmJjIHRl c3RzIGJ1aWxkaW5nIG9uIEFuZHJvaWQgZmlyc3QgYmVmb3JlIHdlIHN0YXJ0IHRoZSBzcGxpdHRp bmcgdXAgaWd0X2ZiYy5jLCBzaW5jZSB3ZSB3YW50IHRvIHN0YXJ0IHRlc3RpbmcgYXNhcC4pCj4g Cj4gSSBsb29rZWQgdG8gc2VlIGlmIEkgaGFkIHJlbW92ZWQvYWRkZWQgYW55IGV4dHJhIGxpbmVz Li4uIHNvbWUgbXVzdCBoYXZlIG1pc3NlZCBtZSwgSSB3aWxsIHJldmVydCB0aGVtLgo+IAo+IFRo ZSBmZnMgZGVmaW5lOiBJIGNhbiBzZWUgdGhhdCBiZWluZyBkYW5nZXJvdXMuCj4gU2hvdWxkIEkg ZG8KPiAjaWYgZGVmaW5lZChfX0dOVUNfXykKPiAjZGVmaW5lIGZmcyBfX2J1aWx0aW5fZmZzCj4g I2VuZGlmCj4gPwo+IEluIG15IG9waW5pb24gdGhhdCBpcyBjbGVhbmVyIHRoYW4gaGF2aW5nIGEg aWZkZWYgYXJvdW5kIHRoZSBhY3R1YWwgZmZzIGZ1bmN0aW9uIGNhbGwuIEl0J3MgYWxzbyBlYXNp ZXIgdG8gYWRkIHRvIChpbiBjYXNlIHNvbWVvbmUgaW4gdGhlIGZ1dHVyZSB1c2VzIGEgZGlmZmVy ZW50IGNvbXBpbGVyKS4KPiAKPiBpZ3RfZHJtX3BsYW5lX2NvbW1pdDoKPiBJIGRvbid0IGtub3cg d2h5IEFuZHJvaWQgaXMgZGlmZmVyZW50LCBhY2NvcmRpbmcgdG8gZ2l0IGJsYW1lLCBpdCdzIGJl ZW4gdGhpcyB3YXkgc2luY2UgMTN0aCBKdW5lIDIwMTQuCj4gSSdsbCBhc2sgd2h5IHNlcGFyYXRl bHkgdG8gdGhpcyB0aHJlYWQuCj4gQXMgZm9yIG1ha2luZyBhIHdyYXBwZXIuIEkgdGhpbmsgdGhh dCBzaG91bGQgYmUgcGFydCBvZiBhbm90aGVyIGNvbW1pdC4KPiAoQWdhaW4gdG8gYmUgZG9uZSBh ZnRlciB0aGlzLCBzaW5jZSB3ZSB3YW50IHRvIGJlZ2luIHRlc3RpbmcgYXNhcC4pCj4gCj4gVGhh bmtzLAo+IERldm9uLgo+IAo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gRnJvbTogWmFu b25pLCBQYXVsbyBSCj4gU2VudDogV2VkbmVzZGF5LCBKYW51YXJ5IDIwLCAyMDE2IDc6MzUgUE0K PiBUbzogaW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsgRGF2aWVzLCBEZXZvbgo+IENj OiBHb3JlLCBUaW07IFZldHRlciwgRGFuaWVsCj4gU3ViamVjdDogUmU6IFtJbnRlbC1nZnhdIFtQ QVRDSCBpLWctdF0gdGVzdHMva21zX2ZiY19jcmMuYzogTm8gbG9uZ2VyIGRlcGVuZGFudCBvbiBD YWlybyBBIHNldHVwIGZ1bmN0aW9uIHRoYXQgdXNlZCB0byB1c2UgQ2Fpcm8gdG8gZHJhdyAyIHJl Y3RhbmdsZXMgY292ZXJpbmcgdGhlIHdob2xlIHNjcmVlbiBoYXMgYmVlbiBjaGFuZ2VkIHRvIHVz ZSBpZ3RfZHJhdwo+IAo+IEhpCj4gCj4gSW4gb3VyIElHVC9LZXJuZWwgY3VsdHVyZSwgcGF0Y2gg Y29tbWl0IHRpdGxlcyAoaGVyZSwgcHJlc2VudGVkIGFzIHRoZSBlbWFpbCBzdWJqZWN0KSBhcmUg dXN1YWxseSBzbWFsbCAodW5kZXIgNzAtODAgY2hhcnMpIHByb3ZpZGluZyBhIHF1aWNrIHN1bW1h cnkgb2Ygd2hhdCB0aGUgY2hhbmdlIGRvZXMuCj4gCj4gQWxzbywgd2UgdHJ5IHRvIG1ha2UgZWFj aCBwYXRjaCBjb250YWluIGEgc2luZ2xlIGxvZ2ljYWwgYW5kIGNvbXBsZXRlIGNoYW5nZS4gU28s IGZvciBleGFtcGxlLCBvbmUgYXBwcm9hY2ggeW91IGNvdWxkIGhhdmUgdGFrZW4gaGVyZSB3b3Vs ZAo+IGJlOgo+IMKgLSBwYXRjaCAxOiB1cGRhdGUgbGliL2lndF9mYi5jIHNvIGl0IGNvbXBpbGVz IG9uIEFuZHJvaWQgd2l0aG91dCBjYWlybwo+IMKgLSBwYXRjaCAyOiBzb2x2ZSB0aGUgZmZzKCkg cHJvYmxlbQo+IMKgLSBwYXRjaCAzOiBzb2x2ZSB0aGUgZHJtTW9kZVNldFBsYW5lKCkgcHJvYmxl bQo+IMKgLSBwYXRjaCA0OiBjaGFuZ2Uga21zX2ZiY19jcmMgdG8gbm90IG5lZWQgY2Fpcm8KPiDC oC0gcGF0Y2ggNTogY2hhbmdlIHRoZSBidWlsZCBzeXN0ZW0gc28gaXQgY29tcGlsZXMgdGVzdHMg dGhhdCBub3cgd29yayBvbiBBbmRyb2lkCj4gCj4gRm9sbG93aW5nIGlzIGFub3RoZXIgdGV4dCBl eHBsYWluaW5nIHRoaXMgcGF0dGVybjoKPiBodHRwOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcvZHJt LWludGVsL3RyZWUvRG9jdW1lbnRhdGlvbi9TdWJtaXR0aW5nUGF0Ywo+IGhlcyNuMjAxCj4gCj4g Cj4gTm93LCByZWdhcmRpbmcgdGhlIEFuZHJvaWQgdnMgQ2Fpcm8gbWFjcm9zOiBJIGtub3cgdGhp cyBoYXMgYmVlbiBkaXNjdXNzZWQgaW4gdGhlIG1haWxpbmcgbGlzdCBhIGZldyB0aW1lcyBidXQg SSBkaWRuJ3QgZm9sbG93IGl0IGNsb3NlbHksIGFuZCBJR1QgZXZlbiBoYXMgdGhlIEFORFJPSURf SEFTX0NBSVJPIHN1cHBvcnQsIHNvIEknZCBsaWtlIERhbmllbCBvciBvdGhlcnMgdG8gY29tbWVu dCBvbiB0aGlzLiBEbyB3ZSB3YW50IHRoZSBpZmRlZiBkYW5jZSBpbiBpZ3RfZmI/IFBlcmhhcHMg d2UgY291bGQgc3BsaXQgdGhlIGxpYnMgaW50byBpZ3RfZmIgZm9yIHRoZSBub24tY2Fpcm8gcGFy dHMsIGFuZCBpZ3RfY2Fpcm8gZm9yIHRoZSBjYWlybyBwYXJ0cz8gVGhlIGlndF9mYiBsaWJyYXJ5 IGlzIGRlZmluaXRlbHkgdXNlZnVsIHdpdGhvdXQgY2Fpcm8sIHNvIHRoaXMgd291bGQgbWFrZSBz ZW5zZSB0byBtZS4gQnV0IHBlcmhhcHMgd2Ugd2FudCB0byBqdXN0IGtlZXAgZXZlcnl0aGluZyBh cy1pcyBzaW5jZSBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgY2Fpcm8gb24gQW5kcm9pZD8KPiAKPiBU aGVyZSBhcmUgc29tZSBvdGhlciBjb21tZW50cyBpbmxpbmUuIFBsZWFzZSBzZWUgYmVsb3cuCj4g Cj4gCj4gRW0gU2V4LCAyMDE2LTAxLTE1IMOgcyAxNTo0MiArMDAwMCwgZGV2b24uZGF2aWVzQGlu dGVsLmNvbSBlc2NyZXZldToKPiA+IEZyb206IERldm9uIERhdmllcyA8ZGV2b24uZGF2aWVzQGlu dGVsLmNvbT4KPiA+IAo+ID4gdGVzdHMva21zX2Zyb250YnVmZmVyX3RyYWNraW5nLmM6IE5vdyBi dWlsZHMgd2l0aCBEUk1fUFJJTUFSWV9ESVNBQkxFCj4gPiDCoMKgwqDCoEVhY2ggY2FsbCB0byB0 aGUgZnVuY3Rpb24gZHJtTW9kZVNldFBsYW5lIG5vdyBoYXMgYW4gYWRkdGlvbmFsIAo+ID4gTlVM TCBpbiB0aGUKPiA+IMKgwqDCoMKgYXJndW1lbnRzIGlmIERSTV9QUklNQVJZX0RJU0FCTEUgaXMg c2V0Lgo+ID4gCj4gPiB0ZXN0cy9BbmRyb2lkLm1rOiBBbGxvdyB0aGUgYWJvdmUgdGVzdHMgdG8g YmUgYnVpbHQgd2l0aG91dCBDYWlybwo+ID4gwqDCoMKgwqBTaW1wbHkgcmVtb3ZlZCB0aGVtIGZy b20gdGhlIHRlc3RzIHRoZSBiZSBza2lwcGVkLgo+ID4gCj4gPiBsaWJzL2lndF9rbXMuYzogTm93 IGJ1aWxkcyB3aXRoIERSTV9QUklNQVJZX0RJU0FCTEUKPiA+IMKgwqDCoMKgSSBoYWQgdG8gZGVm aW5lIGZmcyBhcyBfX2J1aWx0aW5fZnNzIGR1ZSB0byBjb21waWxlciBpc3N1ZXMuCj4gPiDCoMKg wqDCoEVhY2ggY2FsbCB0byB0aGUgZnVuY3Rpb24gZHJtTW9kZVNldFBsYW5lIG5vdyBoYXMgYW4g YWRkdGlvbmFsIAo+ID4gTlVMTCBpbiB0aGUKPiA+IMKgwqDCoMKgYXJndW1lbnRzIGlmIERSTV9Q UklNQVJZX0RJU0FCTEUgaXMgc2V0Lgo+ID4gCj4gPiBsaWJzL2lndF9mYi5jOiBXaWxsIG5vdyBi dWlsZCBzb21lIGZ1bmN0aW9ucyB3aXRob3V0IENhaXJvCj4gPiDCoMKgwqDCoEZ1bmN0aW9ucyB3 aGljaCBhcmVuJ3QgdXNlZCBieSB0aGUgZnJhbWVidWZmZXIgY29tcHJlc3Npb24gdGVzdHMgCj4g PiBhcmUKPiA+IMKgwqDCoMKgbm93IGJlaGluZCBhbiAjaWYgKCFkZWZpbmVkKEFORFJPSUQpKSB8 fCAoZGVmaW5lZChBTkRST0lEKSAmJgo+ID4gwqDCoMKgwqBBTkRST0lEX0hBU19DQUlSTwo+ID4g Cj4gPiBsaWJzL0FuZHJvaWQubWsKPiA+IMKgwqDCoMKgaWd0X2ZiIGFuZCBpZ3Rfa21zIGFyZSBu byBsb25nZXIgaWdub3JlZCBpZiB3ZSBkb24ndCBoYXZlIENhaXJvLgo+ID4gCj4gPiBUaGUgdGVz dHMga21zX2ZiY19jcmMgYW5kIGttc19mcm9udGJ1ZmZlcl90cmFja2luZyBoYWQgYW4gdW5uZWNl c3NhcnkgCj4gPiBkZXBlbmRhbmNlIG9uIHRoZSBDYWlybyBncmFwaGljcyBlbmdpbmUuCj4gPiBB bHNvLCBkcm1Nb2RlU2V0UGxhbmUgbWF5IGhhdmUgYW4gYWRkaXRpb25hbCBhcmd1bWVudCBpZiAK PiA+IERSTV9QUklNQVJZX0RJU0FCTEUgaXMgc2V0IChhcyBpdCB3YXMgZm9yIG1lKSwgSSBoYXZl IGZpeGVkIHRoYXQgCj4gPiBpc3N1ZS4KPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTogRGV2b24gRGF2 aWVzIDxkZXZvbi5kYXZpZXNAaW50ZWwuY29tPgo+ID4gLS0tCj4gPiDCoGxpYi9BbmRyb2lkLm1r wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoDQgLS0KPiA+IMKgbGli L2lndF9mYi5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfCAyNiAr KysrKysrKysrKystCj4gPiDCoGxpYi9pZ3Rfa21zLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgfCAxNSArKysrKystLQo+ID4gwqB0ZXN0cy9BbmRyb2lkLm1rwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgNSArKysKPiA+IMKgdGVzdHMva21zX2Zi Y19jcmMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8IDIwICsrKysrKy0tLS0KPiA+IMKg dGVzdHMva21zX2Zyb250YnVmZmVyX3RyYWNraW5nLmMgfCA3OQo+ID4gKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrLS0tLS0tLQo+ID4gwqA2IGZpbGVzIGNoYW5nZWQsIDExOSBpbnNl cnRpb25zKCspLCAzMCBkZWxldGlvbnMoLSkKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2xpYi9BbmRy b2lkLm1rIGIvbGliL0FuZHJvaWQubWsgaW5kZXggYmFkZWMxZS4uYmJkYjA1MQo+ID4gMTAwNjQ0 Cj4gPiAtLS0gYS9saWIvQW5kcm9pZC5tawo+ID4gKysrIGIvbGliL0FuZHJvaWQubWsKPiA+IEBA IC0zNywxMCArMzcsNiBAQCBpZmVxICgiJHtBTkRST0lEX0hBU19DQUlST30iLCAiMSIpCj4gPiDC oMKgwqDCoMKgTE9DQUxfQ19JTkNMVURFUyArPSAkKEFORFJPSURfQlVJTERfVE9QKS9leHRlcm5h bC9jYWlyby0KPiA+IDEuMTIuMTYvc3JjCj4gPiDCoMKgwqDCoMKgTE9DQUxfQ0ZMQUdTICs9IC1E QU5EUk9JRF9IQVNfQ0FJUk89MSAtRElHVF9EQVRBRElSPVwiLlwiCj4gPiAtRElHVF9TUkNESVI9 XCIuXCIKPiA+IMKgZWxzZQo+ID4gLXNraXBfbGliX2xpc3QgOj0gXAo+ID4gLcKgwqDCoMKgaWd0 X2ttcy5jIFwKPiA+IC3CoMKgwqDCoGlndF9rbXMuaCBcCj4gPiAtwqDCoMKgwqBpZ3RfZmIuYwo+ ID4gwqDCoMKgwqDCoC1EQU5EUk9JRF9IQVNfQ0FJUk89MAo+ID4gwqBlbmRpZgo+ID4gwqAKPiA+ IGRpZmYgLS1naXQgYS9saWIvaWd0X2ZiLmMgYi9saWIvaWd0X2ZiLmMgaW5kZXggYzk4NTgyNC4u NWFjZGFhNyAxMDA2NDQKPiA+IC0tLSBhL2xpYi9pZ3RfZmIuYwo+ID4gKysrIGIvbGliL2lndF9m Yi5jCj4gPiBAQCAtMzMsNiArMzMsNyBAQAo+ID4gwqAjaW5jbHVkZSAiaWd0X2ZiLmgiCj4gPiDC oCNpbmNsdWRlICJpb2N0bF93cmFwcGVycy5oIgo+ID4gwqAKPiA+ICsKPiAKPiBQbGVhc2UgZG9u J3QgYWRkIHJhbmRvbSBsaW5lcyB0byBmaWxlcy4KPiAKPiAKPiA+IMKgLyoqCj4gPiDCoCAqIFNF Q1RJT046aWd0X2ZiCj4gPiDCoCAqIEBzaG9ydF9kZXNjcmlwdGlvbjogRnJhbWVidWZmZXIgaGFu ZGxpbmcgYW5kIGRyYXdpbmcgbGlicmFyeSBAQAo+ID4gLTUyLDExICs1MywyMyBAQAo+ID4gwqAg Ki8KPiA+IMKgCj4gPiDCoC8qIGRybSBmb3VyY2MvY2Fpcm8gZm9ybWF0IG1hcHMgKi8KPiA+ICsj aWYgKCFkZWZpbmVkKEFORFJPSUQpKSB8fCAoZGVmaW5lZChBTkRST0lEKSAmJiBBTkRST0lEX0hB U19DQUlSTykKPiA+ICsKPiA+IMKgI2RlZmluZSBERihkaWQsIGNpZCwgX2JwcCwgX2RlcHRoKQlc Cj4gPiDCoAl7IERSTV9GT1JNQVRfIyNkaWQsIENBSVJPX0ZPUk1BVF8jI2NpZCwgIyBkaWQsIF9i cHAsIF9kZXB0aCB9Cj4gPiArCj4gPiArI2Vsc2UKPiA+ICsKPiA+ICsjZGVmaW5lIERGKGRpZCwg Y2lkLCBfYnBwLCBfZGVwdGgpCVwKPiA+ICsJeyBEUk1fRk9STUFUXyMjZGlkLCAjIGRpZCwgX2Jw cCwgX2RlcHRoIH0KPiA+ICsKPiA+ICsjZW5kaWYKPiA+ICsKPiA+IMKgc3RhdGljIHN0cnVjdCBm b3JtYXRfZGVzY19zdHJ1Y3Qgewo+ID4gwqAJdWludDMyX3QgZHJtX2lkOwo+ID4gKyNpZiAoIWRl ZmluZWQoQU5EUk9JRCkpIHx8IChkZWZpbmVkKEFORFJPSUQpICYmIEFORFJPSURfSEFTX0NBSVJP KQo+ID4gwqAJY2Fpcm9fZm9ybWF0X3QgY2Fpcm9faWQ7Cj4gPiArI2VuZGlmCj4gPiDCoAljb25z dCBjaGFyICpuYW1lOwo+ID4gwqAJaW50IGJwcDsKPiA+IMKgCWludCBkZXB0aDsKPiA+IEBAIC03 Miw3ICs4NSw2IEBAIHN0YXRpYyBzdHJ1Y3QgZm9ybWF0X2Rlc2Nfc3RydWN0IHsKPiA+IMKgI2Rl ZmluZSBmb3JfZWFjaF9mb3JtYXQoZikJXAo+ID4gwqAJZm9yIChmID0gZm9ybWF0X2Rlc2M7IGYg LSBmb3JtYXRfZGVzYyA8IEFSUkFZX1NJWkUoZm9ybWF0X2Rlc2MpOwo+ID4gZisrKQo+ID4gwqAK PiA+IC0KPiAKPiBQbGVhc2UgZG9uJ3QgcmVtb3ZlIHJhbmRvbSBsaW5lcyBmcm9tIGZpbGVzLgo+ IAo+IAo+ID4gwqAvKiBoZWxwZXJzIHRvIGNyZWF0ZSBuaWNlLWxvb2tpbmcgZnJhbWVidWZmZXJz ICovCj4gPiDCoHN0YXRpYyBpbnQgY3JlYXRlX2JvX2Zvcl9mYihpbnQgZmQsIGludCB3aWR0aCwg aW50IGhlaWdodCwgaW50IGJwcCwKPiA+IMKgCQkJwqDCoMKgwqB1aW50NjRfdCB0aWxpbmcsIHVu c2lnbmVkIGJvX3NpemUsIEBAIC0xMjUsNiArMTM3LDggQEAgc3RhdGljIAo+ID4gaW50IGNyZWF0 ZV9ib19mb3JfZmIoaW50IGZkLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBicHAsCj4gPiDC oAlyZXR1cm4gcmV0Owo+ID4gwqB9Cj4gPiDCoAo+ID4gKyNpZiAoIWRlZmluZWQoQU5EUk9JRCkp IHx8IChkZWZpbmVkKEFORFJPSUQpICYmIEFORFJPSURfSEFTX0NBSVJPKQo+ID4gKwo+ID4gwqAv KioKPiA+IMKgICogaWd0X3BhaW50X2NvbG9yOgo+ID4gwqAgKiBAY3I6IGNhaXJvIGRyYXdpbmcg Y29udGV4dAo+ID4gQEAgLTM5NCw2ICs0MDgsNyBAQCB2b2lkIGlndF9wYWludF9pbWFnZShjYWly b190ICpjciwgY29uc3QgY2hhciAKPiA+ICpmaWxlbmFtZSwKPiA+IMKgCj4gPiDCoAlmY2xvc2Uo Zik7Cj4gPiDCoH0KPiA+ICsjZW5kaWYKPiA+IMKgCj4gPiDCoC8qKgo+ID4gwqAgKiBpZ3RfY3Jl YXRlX2ZiX3dpdGhfYm9fc2l6ZToKPiA+IEBAIC00OTQsNiArNTA5LDcgQEAgdW5zaWduZWQgaW50 IGlndF9jcmVhdGVfZmIoaW50IGZkLCBpbnQgd2lkdGgsIGludCAKPiA+IGhlaWdodCwgdWludDMy X3QgZm9ybWF0LAo+ID4gwqAJcmV0dXJuIGlndF9jcmVhdGVfZmJfd2l0aF9ib19zaXplKGZkLCB3 aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHRpbGluZywgCj4gPiBmYiwKPiA+IMKgCQkJCQnCoMKgMCwg MCk7Cj4gPiDCoH0KPiA+ICsjaWYgKCFkZWZpbmVkKEFORFJPSUQpKSB8fCAoZGVmaW5lZChBTkRS T0lEKSAmJiBBTkRST0lEX0hBU19DQUlSTykKPiA+IMKgCj4gPiDCoC8qKgo+ID4gwqAgKiBpZ3Rf Y3JlYXRlX2NvbG9yX2ZiOgo+ID4gQEAgLTk4NSw2ICsxMDAxLDcgQEAgdm9pZCBpZ3Rfd3JpdGVf ZmJfdG9fcG5nKGludCBmZCwgc3RydWN0IGlndF9mYiAKPiA+ICpmYiwgY29uc3QgY2hhciAqZmls ZW5hbWUpCj4gPiDCoAo+ID4gwqAJaWd0X2Fzc2VydChzdGF0dXMgPT0gQ0FJUk9fU1RBVFVTX1NV Q0NFU1MpOwo+ID4gwqB9Cj4gPiArI2VuZGlmCj4gPiDCoAo+ID4gwqAvKioKPiA+IMKgICogaWd0 X3JlbW92ZV9mYjoKPiA+IEBAIC05OTcsMTAgKzEwMTQsMTMgQEAgdm9pZCBpZ3Rfd3JpdGVfZmJf dG9fcG5nKGludCBmZCwgc3RydWN0IGlndF9mYiAKPiA+ICpmYiwgY29uc3QgY2hhciAqZmlsZW5h bWUpCj4gPiDCoCAqLwo+ID4gwqB2b2lkIGlndF9yZW1vdmVfZmIoaW50IGZkLCBzdHJ1Y3QgaWd0 X2ZiICpmYikKPiA+IMKgewo+ID4gKyNpZiAoIWRlZmluZWQoQU5EUk9JRCkpIHx8IChkZWZpbmVk KEFORFJPSUQpICYmIEFORFJPSURfSEFTX0NBSVJPKQo+ID4gwqAJY2Fpcm9fc3VyZmFjZV9kZXN0 cm95KGZiLT5jYWlyb19zdXJmYWNlKTsKPiA+ICsjZW5kaWYKPiA+IMKgCWRvX29yX2RpZShkcm1N b2RlUm1GQihmZCwgZmItPmZiX2lkKSk7Cj4gPiDCoAlnZW1fY2xvc2UoZmQsIGZiLT5nZW1faGFu ZGxlKTsKPiA+IMKgfQo+ID4gKyNpZiAoIWRlZmluZWQoQU5EUk9JRCkpIHx8IChkZWZpbmVkKEFO RFJPSUQpICYmIEFORFJPSURfSEFTX0NBSVJPKQo+ID4gwqAKPiA+IMKgLyoqCj4gPiDCoCAqIGln dF9icHBfZGVwdGhfdG9fZHJtX2Zvcm1hdDoKPiA+IEBAIC0xMDI0LDYgKzEwNDQsOCBAQCB1aW50 MzJfdCBpZ3RfYnBwX2RlcHRoX3RvX2RybV9mb3JtYXQoaW50IGJwcCwgCj4gPiBpbnQgZGVwdGgp Cj4gPiDCoAkJwqDCoMKgwqDCoGRlcHRoKTsKPiA+IMKgfQo+ID4gwqAKPiA+ICsjZW5kaWYKPiA+ ICsKPiA+IMKgLyoqCj4gPiDCoCAqIGlndF9kcm1fZm9ybWF0X3RvX2JwcDoKPiA+IMKgICogQGRy bV9mb3JtYXQ6IGRybSBmb3VyY2MgcGl4ZWwgZm9ybWF0IGNvZGUgQEAgLTEwNjIsNiArMTA4NCw3 IEBAIAo+ID4gY29uc3QgY2hhciAqaWd0X2Zvcm1hdF9zdHIodWludDMyX3QgZHJtX2Zvcm1hdCkK PiA+IMKgCj4gPiDCoAlyZXR1cm4gImludmFsaWQiOwo+ID4gwqB9Cj4gPiArI2lmICghZGVmaW5l ZChBTkRST0lEKSkgfHwgKGRlZmluZWQoQU5EUk9JRCkgJiYgQU5EUk9JRF9IQVNfQ0FJUk8pCj4g PiDCoAo+ID4gwqAvKioKPiA+IMKgICogaWd0X2dldF9hbGxfZm9ybWF0czoKPiA+IEBAIC0xMDg5 LDMgKzExMTIsNCBAQCB2b2lkIGlndF9nZXRfYWxsX2Zvcm1hdHMoY29uc3QgdWludDMyX3QgCj4g PiAqKmZvcm1hdHMsIGludCAqZm9ybWF0X2NvdW50KQo+ID4gwqAJKmZvcm1hdHMgPSBkcm1fZm9y bWF0czsKPiA+IMKgCSpmb3JtYXRfY291bnQgPSBBUlJBWV9TSVpFKGZvcm1hdF9kZXNjKTsKPiA+ IMKgfQo+ID4gKyNlbmRpZgo+ID4gZGlmZiAtLWdpdCBhL2xpYi9pZ3Rfa21zLmMgYi9saWIvaWd0 X2ttcy5jIGluZGV4IDQ5NzExOGEuLjdiNjgyY2IKPiA+IDEwMDY0NAo+ID4gLS0tIGEvbGliL2ln dF9rbXMuYwo+ID4gKysrIGIvbGliL2lndF9rbXMuYwo+ID4gQEAgLTQ5LDYgKzQ5LDggQEAKPiA+ IMKgI2luY2x1ZGUgImludGVsX2NoaXBzZXQuaCIKPiA+IMKgI2luY2x1ZGUgImlndF9kZWJ1Z2Zz LmgiCj4gPiDCoAo+ID4gKyNkZWZpbmUgZmZzIF9fYnVpbHRpbl9mZnMKPiAKPiBBIGRlZmluZSBs aWtlIHRoaXMgY2FuIGJlIGRhbmdlcm91cy4gU2hvdWxkbid0IHdlIGp1c3QgZml4IGFsbCB0aGUg Y2FsbGVycywgc28gY29kZSByZWFkZXJzIGtub3cgZXhhY3RseSB3aGljaCBmdW5jdGlvbiBpcyBi ZWluZyBydW4/Cj4gCj4gT24gdGhlIG90aGVyIGhhbmQsIGl0IHNlZW1zIHRoYXQgdGhpcyBjaGFu Z2Ugd2lsbCByZXN0cmljdCB1cyB0byBnY2MtIG9ubHkuIFNvIG1heWJlIHdlIGNvdWxkIGp1c3Qg ZGVmaW5lIGZmcyBhcyBfX2J1aWx0aW5fZmZzIGlmIEFORFJPSUQgaXMgZGVmaW5lZD8KPiAKPiAK PiA+ICsKPiA+IMKgLyogbGlzdCBvZiBjb25uZWN0b3JzIHRoYXQgbmVlZCByZXNldHRpbmcgb24g ZXhpdCAqLwo+ID4gwqAjZGVmaW5lIE1BWF9DT05ORUNUT1JTIDMyCj4gPiDCoHN0YXRpYyBjaGFy ICpmb3JjZWRfY29ubmVjdG9yc1tNQVhfQ09OTkVDVE9SUyArIDFdOyBAQCAtMTM1NCw4Cj4gPiAr MTM1NiwxMSBAQCBzdGF0aWMgaW50IGlndF9kcm1fcGxhbmVfY29tbWl0KGlndF9wbGFuZV90ICpw bGFuZSwKPiA+IMKgCQkJCcKgwqDCoMKgwqDCoElHVF9GSVhFRCgwLDApLCAvKiBzcmNfeCAqLwo+ ID4gwqAJCQkJwqDCoMKgwqDCoMKgSUdUX0ZJWEVEKDAsMCksIC8qIHNyY195ICovCj4gPiDCoAkJ CQnCoMKgwqDCoMKgwqBJR1RfRklYRUQoMCwwKSwgLyogc3JjX3cgKi8KPiA+IC0JCQkJwqDCoMKg wqDCoMKgSUdUX0ZJWEVEKDAsMCkgLyogc3JjX2ggKi8pOwo+ID4gLQo+ID4gKwkJCQnCoMKgwqDC oMKgwqBJR1RfRklYRUQoMCwwKSAvKiBzcmNfaCAqLwo+ID4gKyNpZiBEUk1fUFJJTUFSWV9ESVNB QkxFCj4gPiArCQkJCQnCoMKgLCBOVUxMCj4gPiArI2VuZGlmCj4gCj4gSWYgd2UncmUgZ29pbmcg dGhpcyB3YXksIG1heWJlIHRoZSBiZXN0IGFwcHJvYWNoIHdvdWxkIGJlIHRvIGFkZCBhIHdyYXBw ZXIgKGlndF9rbXNfc2V0X3BsYW5lPykgYW5kIG1ha2UgdGhlIGN1cnJlbnQgY2FsbGVycyB1c2Ug aXQuCj4gCj4gT24gYSBzaWRlIG5vdGU6IHdoeSBpcyBBbmRyb2lkIGRpZmZlcmVudCBoZXJlIT8K PiAKPiAKPiBUaGFua3MsCj4gUGF1bG8KPiAKPiA+ICsJCQkJCcKgwqApOwo+ID4gwqAJCUNIRUNL X1JFVFVSTihyZXQsIGZhaWxfb25fZXJyb3IpOwo+ID4gwqAJfSBlbHNlIGlmIChwbGFuZS0+ZmJf Y2hhbmdlZCB8fCBwbGFuZS0+cG9zaXRpb25fY2hhbmdlZCB8fAo+ID4gwqAJCXBsYW5lLT5zaXpl X2NoYW5nZWQpIHsKPiA+IEBAIC0xMzg2LDcgKzEzOTEsMTEgQEAgc3RhdGljIGludCBpZ3RfZHJt X3BsYW5lX2NvbW1pdChpZ3RfcGxhbmVfdCAKPiA+ICpwbGFuZSwKPiA+IMKgCQkJCcKgwqDCoMKg wqDCoGNydGNfeCwgY3J0Y195LAo+ID4gwqAJCQkJwqDCoMKgwqDCoMKgY3J0Y193LCBjcnRjX2gs Cj4gPiDCoAkJCQnCoMKgwqDCoMKgwqBzcmNfeCwgc3JjX3ksCj4gPiAtCQkJCcKgwqDCoMKgwqDC oHNyY193LCBzcmNfaCk7Cj4gPiArCQkJCcKgwqDCoMKgwqDCoHNyY193LCBzcmNfaAo+ID4gKyNp ZiBEUk1fUFJJTUFSWV9ESVNBQkxFCj4gPiArCQkJCQnCoMKgLCBOVUxMCj4gPiArI2VuZGlmCj4g PiArCQkJCQnCoMKgKTsKPiA+IMKgCj4gPiDCoAkJQ0hFQ0tfUkVUVVJOKHJldCwgZmFpbF9vbl9l cnJvcik7Cj4gPiDCoAl9Cj4gPiBkaWZmIC0tZ2l0IGEvdGVzdHMvQW5kcm9pZC5tayBiL3Rlc3Rz L0FuZHJvaWQubWsgaW5kZXgKPiA+IDg0NTcxMjUuLmViMjg3YTYgMTAwNjQ0Cj4gPiAtLS0gYS90 ZXN0cy9BbmRyb2lkLm1rCj4gPiArKysgYi90ZXN0cy9BbmRyb2lkLm1rCj4gPiBAQCAtNjUsNiAr NjUsMTEgQEAgZWxzZQo+ID4gwqAKPiA+IMKgwqDCoMKgwqB0bXBfbGlzdCA6PSAkKGZvcmVhY2gg dGVzdF9uYW1lLCAkKFRFU1RTX3Byb2dzX00pLFwKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoCQoaWYg JChmaW5kc3RyaW5nIGttc18sJCh0ZXN0X25hbWUpKSwkKHRlc3RfbmFtZSkpKQo+ID4gKwo+ID4g KyMga21zX2ZiY19jcmMgYW5kIGttc19mcm9udGJ1ZmZlcl90cmFja2luZyBubyBsb25nZXIgZGVw ZW5kIG9uIENhaXJvCj4gPiArwqDCoMKgwqB0bXBfbGlzdCA6PSAkKGZpbHRlci1vdXQga21zX2Zi Y19jcmMsICQodG1wX2xpc3QpKQo+ID4gK8KgwqDCoMKgdG1wX2xpc3QgOj0gJChmaWx0ZXItb3V0 IGttc19mcm9udGJ1ZmZlcl90cmFja2luZywgJCh0bXBfbGlzdCkpCj4gPiArCj4gPiDCoMKgwqDC oMKgc2tpcF90ZXN0c19saXN0ICs9ICQodG1wX2xpc3QpCj4gPiDCoAo+ID4gwqDCoMKgwqDCoElH VF9MT0NBTF9DRkxBR1MgKz0gLURBTkRST0lEX0hBU19DQUlSTz0wIGRpZmYgLS1naXQgCj4gPiBh L3Rlc3RzL2ttc19mYmNfY3JjLmMgYi90ZXN0cy9rbXNfZmJjX2NyYy5jIGluZGV4IDAyZTk1ZTUu LjcxN2U4OTEKPiA+IDEwMDY0NAo+ID4gLS0tIGEvdGVzdHMva21zX2ZiY19jcmMuYwo+ID4gKysr IGIvdGVzdHMva21zX2ZiY19jcmMuYwo+ID4gQEAgLTMzNiwxNCArMzM2LDE4IEBAIHN0YXRpYyB2 b2lkIGNyZWF0ZV9mYnMoZGF0YV90ICpkYXRhLCBib29sIHRpbGVkLCAKPiA+IHN0cnVjdCBpZ3Rf ZmIgKmZicykKPiA+IMKgCXVpbnQ2NF90IHRpbGluZyA9IHRpbGVkID8gTE9DQUxfSTkxNV9GT1JN QVRfTU9EX1hfVElMRUQgOgo+ID4gwqAJCQkJwqDCoExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkU7 Cj4gPiDCoAo+ID4gLQlyYyA9IGlndF9jcmVhdGVfY29sb3JfZmIoZGF0YS0+ZHJtX2ZkLCBtb2Rl LT5oZGlzcGxheSwgbW9kZS0KPiA+ID52ZGlzcGxheSwKPiA+IC0JCQkJwqBEUk1fRk9STUFUX1hS R0I4ODg4LCB0aWxpbmcsCj4gPiAtCQkJCcKgMC4wLCAwLjAsIDAuMCwgJmZic1swXSk7Cj4gPiAt CWlndF9hc3NlcnQocmMpOwo+ID4gLQlyYyA9IGlndF9jcmVhdGVfY29sb3JfZmIoZGF0YS0+ZHJt X2ZkLCBtb2RlLT5oZGlzcGxheSwgbW9kZS0KPiA+ID52ZGlzcGxheSwKPiA+IC0JCQkJwqBEUk1f Rk9STUFUX1hSR0I4ODg4LCB0aWxpbmcsCj4gPiAtCQkJCcKgMC4xLCAwLjEsIDAuMSwgJmZic1sx XSk7Cj4gPiAtCWlndF9hc3NlcnQocmMpOwo+ID4gKwl1bnNpZ25lZCBpbnQgZmJfaWQ7Cj4gPiAr Cj4gPiArCWZiX2lkID0gaWd0X2NyZWF0ZV9mYihkYXRhLT5kcm1fZmQsIG1vZGUtPmhkaXNwbGF5 LCBtb2RlLQo+ID4gPnZkaXNwbGF5LAo+ID4gKwkJCQlEUk1fRk9STUFUX1hSR0I4ODg4LCB0aWxp bmcsCj4gPiAmZmJzWzBdKTsKPiA+ICsJaWd0X2Fzc2VydChmYl9pZCk7Cj4gPiArCWlndF9kcmF3 X2ZpbGxfZmIoZGF0YS0+ZHJtX2ZkLCAmZmJzWzBdLCAwKTsKPiA+ICsKPiA+ICsJZmJfaWQgPSBp Z3RfY3JlYXRlX2ZiKGRhdGEtPmRybV9mZCwgbW9kZS0+aGRpc3BsYXksIG1vZGUtCj4gPiA+dmRp c3BsYXksCj4gPiArCQkJCURSTV9GT1JNQVRfWFJHQjg4ODgsIHRpbGluZywKPiA+ICZmYnNbMV0p Owo+ID4gKwlpZ3RfYXNzZXJ0KGZiX2lkKTsKPiA+ICsJaWd0X2RyYXdfZmlsbF9mYihkYXRhLT5k cm1fZmQsICZmYnNbMV0sIDB4NzcpOwo+ID4gKwo+ID4gwqB9Cj4gPiDCoAo+ID4gwqAvKiBTaW5j ZSB3ZSB3YW50IHRvIGJlIHJlYWxseSBzYWZlIHRoYXQgdGhlIENSQ3MgYXJlIGFjdHVhbGx5IHdo YXQgd2UgCj4gPiByZWFsbHkgZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19mcm9udGJ1ZmZlcl90cmFj a2luZy5jCj4gPiBiL3Rlc3RzL2ttc19mcm9udGJ1ZmZlcl90cmFja2luZy5jCj4gPiBpbmRleCBl N2FjYzdjLi5mOGI5ZWNhIDEwMDY0NAo+ID4gLS0tIGEvdGVzdHMva21zX2Zyb250YnVmZmVyX3Ry YWNraW5nLmMKPiA+ICsrKyBiL3Rlc3RzL2ttc19mcm9udGJ1ZmZlcl90cmFja2luZy5jCj4gPiBA QCAtMTA3OSw3ICsxMDc5LDExIEBAIHN0YXRpYyB2b2lkIHVuc2V0X2FsbF9jcnRjcyh2b2lkKQo+ ID4gwqAKPiA+IMKgCWZvciAoaSA9IDA7IGkgPCBkcm0ucGxhbmVfcmVzLT5jb3VudF9wbGFuZXM7 IGkrKykgewo+ID4gwqAJCXJjID0gZHJtTW9kZVNldFBsYW5lKGRybS5mZCwgZHJtLnBsYW5lX3Jl cy0KPiA+ID5wbGFuZXNbaV0sIDAsIDAsIDAsCj4gPiAtCQkJCcKgwqDCoMKgwqAwLCAwLCAwLCAw LCAwLCAwLCAwLCAwKTsKPiA+ICsJCQkJwqDCoMKgwqDCoDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAK PiA+ICsjaWYgRFJNX1BSSU1BUllfRElTQUJMRQo+ID4gKwkJCQnCoMKgwqDCoMKgLCBOVUxMCj4g PiArI2VuZGlmCj4gPiArCQkJwqDCoMKgwqDCoCk7Cj4gPiDCoAkJaWd0X2Fzc2VydF9lcShyYywg MCk7Cj4gPiDCoAl9Cj4gPiDCoH0KPiA+IEBAIC0xNzE1LDcgKzE3MTksMTEgQEAgc3RhdGljIHZv aWQgc2V0X3Nwcml0ZV9mb3JfdGVzdChjb25zdCBzdHJ1Y3QgCj4gPiB0ZXN0X21vZGUgKnQsCj4g PiDCoAkJCcKgwqDCoMKgwqBwYXJhbXMtPnNwcml0ZS5mYi0+ZmJfaWQsIDAsIDAsIDAsCj4gPiDC oAkJCcKgwqDCoMKgwqBwYXJhbXMtPnNwcml0ZS53LCBwYXJhbXMtPnNwcml0ZS5oLAo+ID4gwqAJ CQnCoMKgwqDCoMKgMCwgMCwgcGFyYW1zLT5zcHJpdGUudyA8PCAxNiwKPiA+IC0JCQnCoMKgwqDC oMKgcGFyYW1zLT5zcHJpdGUuaCA8PCAxNik7Cj4gPiArCQkJwqDCoMKgwqDCoHBhcmFtcy0+c3By aXRlLmggPDwgMTYKPiA+ICsjaWYgRFJNX1BSSU1BUllfRElTQUJMRQo+ID4gKwkJCcKgwqDCoMKg wqAsIE5VTEwKPiA+ICsjZW5kaWYKPiA+ICsJCQnCoMKgwqDCoMKgKTsKPiA+IMKgCWlndF9hc3Nl cnRfZXEocmMsIDApOwo+ID4gwqAKPiA+IMKgCWRvX2Fzc2VydGlvbnMoQVNTRVJUX05PX0FDVElP Tl9DSEFOR0UpOwo+ID4gQEAgLTIyMjAsNyArMjIyOCwxMSBAQCBzdGF0aWMgdm9pZCBzZXRfcHJp bV9wbGFuZV9mb3JfcGFyYW1zKHN0cnVjdCAKPiA+IG1vZGVzZXRfcGFyYW1zICpwYXJhbXMpCj4g PiDCoAkJCcKgwqDCoMKgwqBwYXJhbXMtPm1vZGUtPmhkaXNwbGF5LAo+ID4gwqAJCQnCoMKgwqDC oMKgcGFyYW1zLT5tb2RlLT52ZGlzcGxheSwKPiA+IMKgCQkJwqDCoMKgwqDCoHBhcmFtcy0+ZmIu eCA8PCAxNiwgcGFyYW1zLT5mYi55IDw8IDE2LAo+ID4gLQkJCcKgwqDCoMKgwqBwYXJhbXMtPmZi LncgPDwgMTYsIHBhcmFtcy0+ZmIuaCA8PAo+ID4gMTYpOwo+ID4gKwkJCcKgwqDCoMKgwqBwYXJh bXMtPmZiLncgPDwgMTYsIHBhcmFtcy0+ZmIuaCA8PCAxNiAjaWYgCj4gPiArRFJNX1BSSU1BUllf RElTQUJMRQo+ID4gKwkJCcKgwqDCoMKgwqAsIE5VTEwKPiA+ICsjZW5kaWYKPiA+ICsJCQnCoMKg wqDCoMKgKTsKPiA+IMKgCWlndF9hc3NlcnQocmMgPT0gMCk7Cj4gPiDCoH0KPiA+IMKgCj4gPiBA QCAtMjQwNiw3ICsyNDE4LDExIEBAIHN0YXRpYyB2b2lkIG1vdmVfc3VidGVzdChjb25zdCBzdHJ1 Y3QgdGVzdF9tb2RlCj4gPiAqdCkKPiA+IMKgCQkJCQnCoMKgwqDCoMKgcGFyYW1zLT5zcHJpdGUu ZmItCj4gPiA+ZmJfaWQsIDAsCj4gPiDCoAkJCQkJwqDCoMKgwqDCoHJlY3QueCwgcmVjdC55LCBy ZWN0LncsCj4gPiDCoAkJCQkJwqDCoMKgwqDCoHJlY3QuaCwgMCwgMCwgcmVjdC53IDw8Cj4gPiAx NiwKPiA+IC0JCQkJCcKgwqDCoMKgwqByZWN0LmggPDwgMTYpOwo+ID4gKwkJCQkJwqDCoMKgwqDC oHJlY3QuaCA8PCAxNgo+ID4gKyNpZiBEUk1fUFJJTUFSWV9ESVNBQkxFCj4gPiArCQkJCQnCoMKg wqDCoMKgLCBOVUxMCj4gPiArI2VuZGlmCj4gPiArCQkJwqDCoMKgwqDCoCk7Cj4gPiDCoAkJCWln dF9hc3NlcnRfZXEocmMsIDApOwo+ID4gwqAJCQlicmVhazsKPiA+IMKgCQlkZWZhdWx0Ogo+ID4g QEAgLTI0NjMsOCArMjQ3OSwxMSBAQCBzdGF0aWMgdm9pZCBvbm9mZl9zdWJ0ZXN0KGNvbnN0IHN0 cnVjdCAKPiA+IHRlc3RfbW9kZSAqdCkKPiA+IMKgCQkJCWJyZWFrOwo+ID4gwqAJCQljYXNlIFBM QU5FX1NQUjoKPiA+IMKgCQkJCXJjID0gZHJtTW9kZVNldFBsYW5lKGRybS5mZCwgcGFyYW1zLQo+ ID4gPnNwcml0ZV9pZCwKPiA+IC0JCQkJCQnCoMKgwqDCoMKgMCwgMCwgMCwgMCwgMCwKPiA+IDAs IDAsIDAsIDAsCj4gPiAtCQkJCQkJwqDCoMKgwqDCoDAsIDApOwo+ID4gKwkJCQkJCcKgwqDCoMKg wqAwLCAwLCAwLCAwLCAwLAo+ID4gMCwgMCwgMCwgMCwgMCwgMAo+ID4gKyNpZiBEUk1fUFJJTUFS WV9ESVNBQkxFCj4gPiArCQkJCQkJwqDCoMKgwqDCoCwgTlVMTAo+ID4gKyNlbmRpZgo+ID4gKwkJ CcKgwqDCoMKgwqApOwo+ID4gwqAJCQkJaWd0X2Fzc2VydF9lcShyYywgMCk7Cj4gPiDCoAkJCQli cmVhazsKPiA+IMKgCQkJZGVmYXVsdDoKPiA+IEBAIC0yNDg5LDcgKzI1MDgsMTEgQEAgc3RhdGlj IHZvaWQgb25vZmZfc3VidGVzdChjb25zdCBzdHJ1Y3QgCj4gPiB0ZXN0X21vZGUgKnQpCj4gPiDC oAkJCQkJCcKgwqDCoMKgwqBwYXJhbXMtCj4gPiA+c3ByaXRlLmgsIDAsCj4gPiDCoAkJCQkJCcKg wqDCoMKgwqAwLAo+ID4gwqAJCQkJCQnCoMKgwqDCoMKgcGFyYW1zLQo+ID4gPnNwcml0ZS53IDw8 IDE2LAo+ID4gLQkJCQkJCcKgwqDCoMKgwqBwYXJhbXMtCj4gPiA+c3ByaXRlLmggPDwgMTYpOwo+ ID4gKwkJCQkJCcKgwqDCoMKgwqBwYXJhbXMtCj4gPiA+c3ByaXRlLmggPDwgMTYKPiA+ICsjaWYg RFJNX1BSSU1BUllfRElTQUJMRQo+ID4gKwkJCQkJCcKgwqDCoMKgwqAsIE5VTEwKPiA+ICsjZW5k aWYKPiA+ICsJCQnCoMKgwqDCoMKgKTsKPiA+IMKgCQkJCWlndF9hc3NlcnRfZXEocmMsIDApOwo+ ID4gwqAJCQkJYnJlYWs7Cj4gPiDCoAkJCWRlZmF1bHQ6Cj4gPiBAQCAtMjU2MSw3ICsyNTg0LDEx IEBAIHN0YXRpYyB2b2lkIGZ1bGxzY3JlZW5fcGxhbmVfc3VidGVzdChjb25zdCAKPiA+IHN0cnVj dCB0ZXN0X21vZGUgKnQpCj4gPiDCoAkJCcKgwqDCoMKgwqBmdWxsc2NyZWVuX2ZiLmZiX2lkLCAw LCAwLCAwLCBmdWxsc2NyZWVuX2ZiLndpZHRoLAo+ID4gwqAJCQnCoMKgwqDCoMKgZnVsbHNjcmVl bl9mYi5oZWlnaHQsIDAsIDAsCj4gPiDCoAkJCcKgwqDCoMKgwqBmdWxsc2NyZWVuX2ZiLndpZHRo IDw8IDE2LAo+ID4gLQkJCcKgwqDCoMKgwqBmdWxsc2NyZWVuX2ZiLmhlaWdodCA8PCAxNik7Cj4g PiArCQkJwqDCoMKgwqDCoGZ1bGxzY3JlZW5fZmIuaGVpZ2h0IDw8IDE2Cj4gPiArI2lmIERSTV9Q UklNQVJZX0RJU0FCTEUKPiA+ICsJCQnCoMKgwqDCoMKgLCBOVUxMCj4gPiArI2VuZGlmCj4gPiAr CQkJwqDCoMKgwqDCoCk7Cj4gPiDCoAlpZ3RfYXNzZXJ0X2VxKHJjLCAwKTsKPiA+IMKgCXVwZGF0 ZV93YW50ZWRfY3JjKHQsICZwYXR0ZXJuLT5jcmNzW3QtPmZvcm1hdF1bMF0pOwo+ID4gwqAKPiA+ IEBAIC0yNTgxLDcgKzI2MDgsMTEgQEAgc3RhdGljIHZvaWQgZnVsbHNjcmVlbl9wbGFuZV9zdWJ0 ZXN0KGNvbnN0IAo+ID4gc3RydWN0IHRlc3RfbW9kZSAqdCkKPiA+IMKgCWRvX2Fzc2VydGlvbnMo YXNzZXJ0aW9ucyk7Cj4gPiDCoAo+ID4gwqAJcmMgPSBkcm1Nb2RlU2V0UGxhbmUoZHJtLmZkLCBw YXJhbXMtPnNwcml0ZV9pZCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCj4gPiAwLAo+ID4gLQkJCcKg wqDCoMKgwqAwLCAwLCAwKTsKPiA+ICsJCQnCoMKgwqDCoMKgMCwgMCwgMAo+ID4gKyNpZiBEUk1f UFJJTUFSWV9ESVNBQkxFCj4gPiArCQkJwqDCoMKgwqDCoCwgTlVMTAo+ID4gKyNlbmRpZgo+ID4g KwkJCcKgwqDCoMKgwqApOwo+ID4gwqAJaWd0X2Fzc2VydF9lcShyYywgMCk7Cj4gPiDCoAo+ID4g wqAJaWYgKHQtPnNjcmVlbiA9PSBTQ1JFRU5fUFJJTSkKPiA+IEBAIC0yNjU3LDcgKzI2ODgsMTEg QEAgc3RhdGljIHZvaWQgc2NhbGVkcHJpbWFyeV9zdWJ0ZXN0KGNvbnN0IHN0cnVjdCAKPiA+IHRl c3RfbW9kZSAqdCkKPiA+IMKgCQkJwqDCoMKgwqDCoDAsIDAsCj4gPiDCoAkJCcKgwqDCoMKgwqBw YXJhbXMtPm1vZGUtPmhkaXNwbGF5LCBwYXJhbXMtPm1vZGUtCj4gPiA+dmRpc3BsYXksCj4gPiDC oAkJCcKgwqDCoMKgwqBwYXJhbXMtPmZiLnggPDwgMTYsIHBhcmFtcy0+ZmIueSA8PCAxNiwKPiA+ IC0JCQnCoMKgwqDCoMKgcGFyYW1zLT5mYi53IDw8IDE2LCBwYXJhbXMtPmZiLmggPDwKPiA+IDE2 KTsKPiA+ICsJCQnCoMKgwqDCoMKgcGFyYW1zLT5mYi53IDw8IDE2LCBwYXJhbXMtPmZiLmggPDwg MTYgI2lmIAo+ID4gK0RSTV9QUklNQVJZX0RJU0FCTEUKPiA+ICsJCQnCoMKgwqDCoMKgLCBOVUxM Cj4gPiArI2VuZGlmCj4gPiArCQkJwqDCoMKgwqDCoCk7Cj4gPiDCoAlpZ3RfYXNzZXJ0KHJjID09 IDApOwo+ID4gwqAJZG9fYXNzZXJ0aW9ucyhET05UX0FTU0VSVF9DUkMpOwo+ID4gwqAKPiA+IEBA IC0yNjY4LDcgKzI3MDMsMTEgQEAgc3RhdGljIHZvaWQgc2NhbGVkcHJpbWFyeV9zdWJ0ZXN0KGNv bnN0IHN0cnVjdCAKPiA+IHRlc3RfbW9kZSAqdCkKPiA+IMKgCQkJwqDCoMKgwqDCoHBhcmFtcy0+ bW9kZS0+aGRpc3BsYXksIHBhcmFtcy0+bW9kZS0KPiA+ID52ZGlzcGxheSwKPiA+IMKgCQkJwqDC oMKgwqDCoHBhcmFtcy0+ZmIueCA8PCAxNiwgcGFyYW1zLT5mYi55IDw8IDE2LAo+ID4gwqAJCQnC oMKgwqDCoMKgKHBhcmFtcy0+ZmIudyAvIDIpIDw8IDE2LAo+ID4gLQkJCcKgwqDCoMKgwqAocGFy YW1zLT5mYi5oIC8gMikgPDwgMTYpOwo+ID4gKwkJCcKgwqDCoMKgwqAocGFyYW1zLT5mYi5oIC8g MikgPDwgMTYKPiA+ICsjaWYgRFJNX1BSSU1BUllfRElTQUJMRQo+ID4gKwkJCcKgwqDCoMKgwqAs IE5VTEwKPiA+ICsjZW5kaWYKPiA+ICsJCQnCoMKgwqDCoMKgKTsKPiA+IMKgCWlndF9hc3NlcnQo cmMgPT0gMCk7Cj4gPiDCoAlkb19hc3NlcnRpb25zKERPTlRfQVNTRVJUX0NSQyk7Cj4gPiDCoAo+ ID4gQEAgLTI2ODEsNyArMjcyMCwxMSBAQCBzdGF0aWMgdm9pZCBzY2FsZWRwcmltYXJ5X3N1YnRl c3QoY29uc3Qgc3RydWN0IAo+ID4gdGVzdF9tb2RlICp0KQo+ID4gwqAJCQnCoMKgwqDCoMKgcGFy YW1zLT5tb2RlLT52ZGlzcGxheSAvIDIsCj4gPiDCoAkJCcKgwqDCoMKgwqBwYXJhbXMtPmZiLngg PDwgMTYsIHBhcmFtcy0+ZmIueSA8PCAxNiwKPiA+IMKgCQkJwqDCoMKgwqDCoChwYXJhbXMtPmZi LncgLyAyKSA8PCAxNiwKPiA+IC0JCQnCoMKgwqDCoMKgKHBhcmFtcy0+ZmIuaCAvIDIpIDw8IDE2 KTsKPiA+ICsJCQnCoMKgwqDCoMKgKHBhcmFtcy0+ZmIuaCAvIDIpIDw8IDE2Cj4gPiArI2lmIERS TV9QUklNQVJZX0RJU0FCTEUKPiA+ICsJCQnCoMKgwqDCoMKgLCBOVUxMCj4gPiArI2VuZGlmCj4g PiArCQkJwqDCoMKgwqDCoCk7Cj4gPiDCoAlpZ3RfYXNzZXJ0KHJjID09IDApOwo+ID4gwqAJZG9f YXNzZXJ0aW9ucyhET05UX0FTU0VSVF9DUkMpOwo+ID4gwqAKPiA+IEBAIC0yNjk1LDcgKzI3Mzgs MTEgQEAgc3RhdGljIHZvaWQgc2NhbGVkcHJpbWFyeV9zdWJ0ZXN0KGNvbnN0IHN0cnVjdCAKPiA+ IHRlc3RfbW9kZSAqdCkKPiA+IMKgCQkJwqDCoMKgwqDCoChwYXJhbXMtPmZiLnggKyBwYXJhbXMt PmZiLncgLyAyKSA8PCAxNiwKPiA+IMKgCQkJwqDCoMKgwqDCoChwYXJhbXMtPmZiLnkgKyBwYXJh bXMtPmZiLmggLyAyKSA8PCAxNiwKPiA+IMKgCQkJwqDCoMKgwqDCoChwYXJhbXMtPmZiLncgLyA0 KSA8PCAxNiwKPiA+IC0JCQnCoMKgwqDCoMKgKHBhcmFtcy0+ZmIuaCAvIDQpIDw8IDE2KTsKPiA+ ICsJCQnCoMKgwqDCoMKgKHBhcmFtcy0+ZmIuaCAvIDQpIDw8IDE2Cj4gPiArI2lmIERSTV9QUklN QVJZX0RJU0FCTEUKPiA+ICsJCQnCoMKgwqDCoMKgLCBOVUxMCj4gPiArI2VuZGlmCj4gPiArCQkJ wqDCoMKgwqDCoCk7Cj4gPiDCoAlpZ3RfYXNzZXJ0KHJjID09IDApOwo+ID4gwqAJZG9fYXNzZXJ0 aW9ucyhET05UX0FTU0VSVF9DUkMpOwo+ID4gwqAKPiA+IEBAIC0yNzA1LDcgKzI3NTIsMTEgQEAg c3RhdGljIHZvaWQgc2NhbGVkcHJpbWFyeV9zdWJ0ZXN0KGNvbnN0IHN0cnVjdCAKPiA+IHRlc3Rf bW9kZSAqdCkKPiA+IMKgCQkJwqDCoMKgwqDCoDAsIDAsCj4gPiDCoAkJCcKgwqDCoMKgwqBwYXJh bXMtPm1vZGUtPmhkaXNwbGF5LCBwYXJhbXMtPm1vZGUtCj4gPiA+dmRpc3BsYXksCj4gPiDCoAkJ CcKgwqDCoMKgwqBwYXJhbXMtPmZiLnggPDwgMTYsIHBhcmFtcy0+ZmIueSA8PCAxNiwKPiA+IC0J CQnCoMKgwqDCoMKgcGFyYW1zLT5mYi53IDw8IDE2LCBwYXJhbXMtPmZiLmggPDwKPiA+IDE2KTsK PiA+ICsJCQnCoMKgwqDCoMKgcGFyYW1zLT5mYi53IDw8IDE2LCBwYXJhbXMtPmZiLmggPDwgMTYg I2lmIAo+ID4gK0RSTV9QUklNQVJZX0RJU0FCTEUKPiA+ICsJCQnCoMKgwqDCoMKgLCBOVUxMCj4g PiArI2VuZGlmCj4gPiArCQkJwqDCoMKgwqDCoCk7Cj4gPiDCoAlpZ3RfYXNzZXJ0KHJjID09IDAp Owo+ID4gwqAJZG9fYXNzZXJ0aW9ucygwKTsKPiA+IMKgCj4gX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwg T1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVs LWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==