From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v5 9/9] drm/selftests: Add tests for drm_format_info* helpers Date: Tue, 23 Oct 2018 15:56:57 +0200 Message-ID: <20181023135657.GT324@phenom.ffwll.local> References: <20181019105752.17741-1-alexandru-cosmin.gheorghe@arm.com> <20181019105752.17741-10-alexandru-cosmin.gheorghe@arm.com> <20181019152915.GE31561@phenom.ffwll.local> <20181022103210.GD17598@e114479-lin.cambridge.arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x542.google.com (mail-ed1-x542.google.com [IPv6:2a00:1450:4864:20::542]) by gabe.freedesktop.org (Postfix) with ESMTPS id 971FD6E1AA for ; Tue, 23 Oct 2018 13:57:01 +0000 (UTC) Received: by mail-ed1-x542.google.com with SMTP id x2-v6so1725192eds.3 for ; Tue, 23 Oct 2018 06:57:01 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20181022103210.GD17598@e114479-lin.cambridge.arm.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Alexandru-Cosmin Gheorghe Cc: charles.xu@arm.com, nd@arm.com, matt.szczesiak@arm.com, airlied@linux.ie, liviu.dudau@arm.com, dri-devel@lists.freedesktop.org, maxime.ripard@bootlin.com, david.garbett@arm.com, seanpaul@chromium.org, lisa.wu@arm.com, daniel.vetter@ffwll.ch, malidp@foss.arm.com, ayan.halder@arm.com, james.qian.wang@arm.com List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBPY3QgMjIsIDIwMTggYXQgMTE6MzI6MTBBTSArMDEwMCwgQWxleGFuZHJ1LUNvc21p biBHaGVvcmdoZSB3cm90ZToKPiBPbiBGcmksIE9jdCAxOSwgMjAxOCBhdCAwNToyOToxNVBNICsw MjAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4gT24gRnJpLCBPY3QgMTksIDIwMTggYXQgMTE6 NTc6NTJBTSArMDEwMCwgQWxleGFuZHJ1IEdoZW9yZ2hlIHdyb3RlOgo+ID4gPiBBZGQgc2VsZnRl c3RzIGZvciB0aGUgZm9sbG93aW5nIG5ld2x5IGFkZGVkIGZ1bmN0aW9uczoKPiA+ID4gIC0gZHJt X2Zvcm1hdF9pbmZvX2Jsb2NrX3dpZHRoCj4gPiA+ICAtIGRybV9mb3JtYXRfaW5mb19ibG9ja19o ZWlnaHQKPiA+ID4gIC0gZHJtX2Zvcm1hdF9pbmZvX21pbl9waXRjaAo+ID4gPiAKPiA+ID4gU2ln bmVkLW9mZi1ieTogQWxleGFuZHJ1IEdoZW9yZ2hlIDxhbGV4YW5kcnUtY29zbWluLmdoZW9yZ2hl QGFybS5jb20+Cj4gPiA+IC0tLQo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL3NlbGZ0ZXN0cy9NYWtl ZmlsZSAgICAgICAgICAgIHwgICAzICstCj4gPiA+ICAuLi4vZ3B1L2RybS9zZWxmdGVzdHMvZHJt X21vZGVzZXRfc2VsZnRlc3RzLmggfCAgIDMgKwo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL3NlbGZ0 ZXN0cy90ZXN0LWRybV9mb3JtYXQuYyAgIHwgMjkwICsrKysrKysrKysrKysrKysrKwo+ID4gPiAg Li4uL2RybS9zZWxmdGVzdHMvdGVzdC1kcm1fbW9kZXNldF9jb21tb24uaCAgIHwgICAzICsKPiA+ ID4gIDQgZmlsZXMgY2hhbmdlZCwgMjk4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiA+ ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vc2VsZnRlc3RzL3Rlc3QtZHJt X2Zvcm1hdC5jCj4gPiA+IAo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3NlbGZ0 ZXN0cy9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvTWFrZWZpbGUKPiA+ID4g aW5kZXggN2U2NTgxOTIxZGEwLi4wN2I0Zjg4YjQyMmEgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9zZWxmdGVzdHMvTWFrZWZpbGUKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJt L3NlbGZ0ZXN0cy9NYWtlZmlsZQo+ID4gPiBAQCAtMSwzICsxLDQgQEAKPiA+ID4gLXRlc3QtZHJt X21vZGVzZXQteSA6PSB0ZXN0LWRybV9tb2Rlc2V0X2NvbW1vbi5vIHRlc3QtZHJtX3BsYW5lX2hl bHBlci5vCj4gPiA+ICt0ZXN0LWRybV9tb2Rlc2V0LXkgOj0gdGVzdC1kcm1fbW9kZXNldF9jb21t b24ubyB0ZXN0LWRybV9wbGFuZV9oZWxwZXIubyBcCj4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgdGVzdC1kcm1fZm9ybWF0Lm8KPiA+ID4gIAo+ID4gPiAgb2JqLSQoQ09ORklHX0RSTV9ERUJV R19TRUxGVEVTVCkgKz0gdGVzdC1kcm1fbW0ubyB0ZXN0LWRybV9tb2Rlc2V0Lm8KPiA+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvZHJtX21vZGVzZXRfc2VsZnRlc3Rz LmggYi9kcml2ZXJzL2dwdS9kcm0vc2VsZnRlc3RzL2RybV9tb2Rlc2V0X3NlbGZ0ZXN0cy5oCj4g PiA+IGluZGV4IDk3NzEyOTBlZDIyOC4uNGUyMDNhYzhjMTM0IDEwMDY0NAo+ID4gPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vc2VsZnRlc3RzL2RybV9tb2Rlc2V0X3NlbGZ0ZXN0cy5oCj4gPiA+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvZHJtX21vZGVzZXRfc2VsZnRlc3RzLmgKPiA+ ID4gQEAgLTcsMyArNyw2IEBACj4gPiA+ICAgKiBUZXN0cyBhcmUgZXhlY3V0ZWQgaW4gb3JkZXIg YnkgaWd0L2RybV9zZWxmdGVzdHNfaGVscGVyCj4gPiA+ICAgKi8KPiA+ID4gIHNlbGZ0ZXN0KGNo ZWNrX3BsYW5lX3N0YXRlLCBpZ3RfY2hlY2tfcGxhbmVfc3RhdGUpCj4gPiA+ICtzZWxmdGVzdChj aGVja19kcm1fZm9ybWF0X2Jsb2NrX3dpZHRoLCBpZ3RfY2hlY2tfZHJtX2Zvcm1hdF9ibG9ja193 aWR0aCkKPiA+ID4gK3NlbGZ0ZXN0KGNoZWNrX2RybV9mb3JtYXRfYmxvY2tfaGVpZ2h0LCBpZ3Rf Y2hlY2tfZHJtX2Zvcm1hdF9ibG9ja19oZWlnaHQpCj4gPiA+ICtzZWxmdGVzdChjaGVja19kcm1f Zm9ybWF0X21pbl9waXRjaCwgaWd0X2NoZWNrX2RybV9mb3JtYXRfbWluX3BpdGNoKQo+ID4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3NlbGZ0ZXN0cy90ZXN0LWRybV9mb3JtYXQuYyBi L2RyaXZlcnMvZ3B1L2RybS9zZWxmdGVzdHMvdGVzdC1kcm1fZm9ybWF0LmMKPiA+ID4gbmV3IGZp bGUgbW9kZSAxMDA2NDQKPiA+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi41YWJmZDVlMjhkN2QKPiA+ ID4gLS0tIC9kZXYvbnVsbAo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vc2VsZnRlc3RzL3Rl c3QtZHJtX2Zvcm1hdC5jCj4gPiA+IEBAIC0wLDAgKzEsMjkwIEBACj4gPiA+ICsvLyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ID4gPiArLyoKPiA+ID4gKyAqIFRlc3QgY2FzZXMg Zm9yIHRoZSBkcm1fZm9ybWF0IGZ1bmN0aW9ucwo+ID4gPiArICovCj4gPiA+ICsKPiA+ID4gKyNk ZWZpbmUgcHJfZm10KGZtdCkgImRybV9mb3JtYXQ6ICIgZm10Cj4gPiA+ICsKPiA+ID4gKyNpbmNs dWRlIDxsaW51eC9lcnJuby5oPgo+ID4gPiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgo+ID4g PiArCj4gPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9mb3VyY2MuaD4KPiA+ID4gKwo+ID4gPiArI2lu Y2x1ZGUgInRlc3QtZHJtX21vZGVzZXRfY29tbW9uLmgiCj4gPiA+ICsKPiA+ID4gK2ludCBpZ3Rf Y2hlY2tfZHJtX2Zvcm1hdF9ibG9ja193aWR0aCh2b2lkICppZ25vcmVkKQo+ID4gPiArewo+ID4g PiArCWNvbnN0IHN0cnVjdCBkcm1fZm9ybWF0X2luZm8gKmluZm8gPSBOVUxMOwo+ID4gPiArCj4g PiA+ICsJLyogVGVzdCBpbnZhbGlkIGFyZ3VtZW50cyAqLwo+ID4gPiArCUZBSUxfT04oZHJtX2Zv cm1hdF9pbmZvX2Jsb2NrX3dpZHRoKGluZm8sIDApICE9IDApOwo+ID4gPiArCUZBSUxfT04oZHJt X2Zvcm1hdF9pbmZvX2Jsb2NrX3dpZHRoKGluZm8sIC0xKSAhPSAwKTsKPiA+ID4gKwlGQUlMX09O KGRybV9mb3JtYXRfaW5mb19ibG9ja193aWR0aChpbmZvLCAxKSAhPSAwKTsKPiA+ID4gKwo+ID4g PiArCS8qIFRlc3QgMSBwbGFuZSBmb3JtYXQgKi8KPiA+ID4gKwlpbmZvID0gZHJtX2Zvcm1hdF9p bmZvKERSTV9GT1JNQVRfWFJHQjQ0NDQpOwo+ID4gPiArCUZBSUxfT04oIWluZm8pOwo+ID4gPiAr CUZBSUxfT04oZHJtX2Zvcm1hdF9pbmZvX2Jsb2NrX3dpZHRoKGluZm8sIDApICE9IDEpOwo+ID4g PiArCUZBSUxfT04oZHJtX2Zvcm1hdF9pbmZvX2Jsb2NrX3dpZHRoKGluZm8sIDEpICE9IDApOwo+ ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1hdF9pbmZvX2Jsb2NrX3dpZHRoKGluZm8sIC0xKSAhPSAw KTsKPiA+ID4gKwo+ID4gPiArCS8qIFRlc3QgMiBwbGFuZXMgZm9ybWF0ICovCj4gPiA+ICsJaW5m byA9IGRybV9mb3JtYXRfaW5mbyhEUk1fRk9STUFUX05WMTIpOwo+ID4gPiArCUZBSUxfT04oIWlu Zm8pOwo+ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1hdF9pbmZvX2Jsb2NrX3dpZHRoKGluZm8sIDAp ICE9IDEpOwo+ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1hdF9pbmZvX2Jsb2NrX3dpZHRoKGluZm8s IDEpICE9IDEpOwo+ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1hdF9pbmZvX2Jsb2NrX3dpZHRoKGlu Zm8sIDIpICE9IDApOwo+ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1hdF9pbmZvX2Jsb2NrX3dpZHRo KGluZm8sIC0xKSAhPSAwKTsKPiA+ID4gKwo+ID4gPiArCS8qIFRlc3QgMyBwbGFuZXMgZm9ybWF0 ICovCj4gPiA+ICsJaW5mbyA9IGRybV9mb3JtYXRfaW5mbyhEUk1fRk9STUFUX1lVVjQyMik7Cj4g PiA+ICsJRkFJTF9PTighaW5mbyk7Cj4gPiA+ICsJRkFJTF9PTihkcm1fZm9ybWF0X2luZm9fYmxv Y2tfd2lkdGgoaW5mbywgMCkgIT0gMSk7Cj4gPiA+ICsJRkFJTF9PTihkcm1fZm9ybWF0X2luZm9f YmxvY2tfd2lkdGgoaW5mbywgMSkgIT0gMSk7Cj4gPiA+ICsJRkFJTF9PTihkcm1fZm9ybWF0X2lu Zm9fYmxvY2tfd2lkdGgoaW5mbywgMikgIT0gMSk7Cj4gPiA+ICsJRkFJTF9PTihkcm1fZm9ybWF0 X2luZm9fYmxvY2tfd2lkdGgoaW5mbywgMykgIT0gMCk7Cj4gPiA+ICsJRkFJTF9PTihkcm1fZm9y bWF0X2luZm9fYmxvY2tfd2lkdGgoaW5mbywgLTEpICE9IDApOwo+ID4gPiArCj4gPiA+ICsJLyog VGVzdCBhIHRpbGVkIGZvcm1hdCAqLwo+ID4gPiArCWluZm8gPSBkcm1fZm9ybWF0X2luZm8oRFJN X0ZPUk1BVF9YMEwwKTsKPiA+ID4gKwlGQUlMX09OKCFpbmZvKTsKPiA+ID4gKwlGQUlMX09OKGRy bV9mb3JtYXRfaW5mb19ibG9ja193aWR0aChpbmZvLCAwKSAhPSAyKTsKPiA+ID4gKwlGQUlMX09O KGRybV9mb3JtYXRfaW5mb19ibG9ja193aWR0aChpbmZvLCAxKSAhPSAwKTsKPiA+ID4gKwlGQUlM X09OKGRybV9mb3JtYXRfaW5mb19ibG9ja193aWR0aChpbmZvLCAtMSkgIT0gMCk7Cj4gPiA+ICsK PiA+ID4gKwlyZXR1cm4gMDsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiAraW50IGlndF9jaGVja19k cm1fZm9ybWF0X2Jsb2NrX2hlaWdodCh2b2lkICppZ25vcmVkKQo+ID4gPiArewo+ID4gPiArCWNv bnN0IHN0cnVjdCBkcm1fZm9ybWF0X2luZm8gKmluZm8gPSBOVUxMOwo+ID4gPiArCj4gPiA+ICsJ LyogVGVzdCBpbnZhbGlkIGFyZ3VtZW50cyAqLwo+ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1hdF9p bmZvX2Jsb2NrX2hlaWdodChpbmZvLCAwKSAhPSAwKTsKPiA+ID4gKwlGQUlMX09OKGRybV9mb3Jt YXRfaW5mb19ibG9ja19oZWlnaHQoaW5mbywgLTEpICE9IDApOwo+ID4gPiArCUZBSUxfT04oZHJt X2Zvcm1hdF9pbmZvX2Jsb2NrX2hlaWdodChpbmZvLCAxKSAhPSAwKTsKPiA+ID4gKwo+ID4gPiAr CS8qIFRlc3QgMSBwbGFuZSBmb3JtYXQgKi8KPiA+ID4gKwlpbmZvID0gZHJtX2Zvcm1hdF9pbmZv KERSTV9GT1JNQVRfWFJHQjQ0NDQpOwo+ID4gPiArCUZBSUxfT04oIWluZm8pOwo+ID4gPiArCUZB SUxfT04oZHJtX2Zvcm1hdF9pbmZvX2Jsb2NrX2hlaWdodChpbmZvLCAwKSAhPSAxKTsKPiA+ID4g KwlGQUlMX09OKGRybV9mb3JtYXRfaW5mb19ibG9ja19oZWlnaHQoaW5mbywgMSkgIT0gMCk7Cj4g PiA+ICsJRkFJTF9PTihkcm1fZm9ybWF0X2luZm9fYmxvY2tfaGVpZ2h0KGluZm8sIC0xKSAhPSAw KTsKPiA+ID4gKwo+ID4gPiArCS8qIFRlc3QgMiBwbGFuZXMgZm9ybWF0ICovCj4gPiA+ICsJaW5m byA9IGRybV9mb3JtYXRfaW5mbyhEUk1fRk9STUFUX05WMTIpOwo+ID4gPiArCUZBSUxfT04oIWlu Zm8pOwo+ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1hdF9pbmZvX2Jsb2NrX2hlaWdodChpbmZvLCAw KSAhPSAxKTsKPiA+ID4gKwlGQUlMX09OKGRybV9mb3JtYXRfaW5mb19ibG9ja19oZWlnaHQoaW5m bywgMSkgIT0gMSk7Cj4gPiA+ICsJRkFJTF9PTihkcm1fZm9ybWF0X2luZm9fYmxvY2tfaGVpZ2h0 KGluZm8sIDIpICE9IDApOwo+ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1hdF9pbmZvX2Jsb2NrX2hl aWdodChpbmZvLCAtMSkgIT0gMCk7Cj4gPiA+ICsKPiA+ID4gKwkvKiBUZXN0IDMgcGxhbmVzIGZv cm1hdCAqLwo+ID4gPiArCWluZm8gPSBkcm1fZm9ybWF0X2luZm8oRFJNX0ZPUk1BVF9ZVVY0MjIp Owo+ID4gPiArCUZBSUxfT04oIWluZm8pOwo+ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1hdF9pbmZv X2Jsb2NrX2hlaWdodChpbmZvLCAwKSAhPSAxKTsKPiA+ID4gKwlGQUlMX09OKGRybV9mb3JtYXRf aW5mb19ibG9ja19oZWlnaHQoaW5mbywgMSkgIT0gMSk7Cj4gPiA+ICsJRkFJTF9PTihkcm1fZm9y bWF0X2luZm9fYmxvY2tfaGVpZ2h0KGluZm8sIDIpICE9IDEpOwo+ID4gPiArCUZBSUxfT04oZHJt X2Zvcm1hdF9pbmZvX2Jsb2NrX2hlaWdodChpbmZvLCAzKSAhPSAwKTsKPiA+ID4gKwlGQUlMX09O KGRybV9mb3JtYXRfaW5mb19ibG9ja19oZWlnaHQoaW5mbywgLTEpICE9IDApOwo+ID4gPiArCj4g PiA+ICsJLyogVGVzdCBhIHRpbGVkIGZvcm1hdCAqLwo+ID4gPiArCWluZm8gPSBkcm1fZm9ybWF0 X2luZm8oRFJNX0ZPUk1BVF9YMEwwKTsKPiA+ID4gKwlGQUlMX09OKCFpbmZvKTsKPiA+ID4gKwlG QUlMX09OKGRybV9mb3JtYXRfaW5mb19ibG9ja19oZWlnaHQoaW5mbywgMCkgIT0gMik7Cj4gPiA+ ICsJRkFJTF9PTihkcm1fZm9ybWF0X2luZm9fYmxvY2tfaGVpZ2h0KGluZm8sIDEpICE9IDApOwo+ ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1hdF9pbmZvX2Jsb2NrX2hlaWdodChpbmZvLCAtMSkgIT0g MCk7Cj4gPiA+ICsKPiA+ID4gKwlyZXR1cm4gMDsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiAraW50 IGlndF9jaGVja19kcm1fZm9ybWF0X21pbl9waXRjaCh2b2lkICppZ25vcmVkKQo+ID4gPiArewo+ ID4gPiArCWNvbnN0IHN0cnVjdCBkcm1fZm9ybWF0X2luZm8gKmluZm8gPSBOVUxMOwo+ID4gPiAr Cj4gPiA+ICsJLyogVGVzdCBpbnZhbGlkIGFyZ3VtZW50cyAqLwo+ID4gPiArCUZBSUxfT04oZHJt X2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAwLCAwKSAhPSAwKTsKPiA+ID4gKwlGQUlMX09O KGRybV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgLTEsIDApICE9IDApOwo+ID4gPiArCUZB SUxfT04oZHJtX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAxLCAwKSAhPSAwKTsKPiA+ID4g Kwo+ID4gPiArCS8qIFRlc3QgMSBwbGFuZSA4IGJpdHMgcGVyIHBpeGVsIGZvcm1hdCAqLwo+ID4g PiArCWluZm8gPSBkcm1fZm9ybWF0X2luZm8oRFJNX0ZPUk1BVF9SR0IzMzIpOwo+ID4gPiArCUZB SUxfT04oIWluZm8pOwo+ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1hdF9pbmZvX21pbl9waXRjaChp bmZvLCAwLCAwKSAhPSAwKTsKPiA+ID4gKwlGQUlMX09OKGRybV9mb3JtYXRfaW5mb19taW5fcGl0 Y2goaW5mbywgLTEsIDApICE9IDApOwo+ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1hdF9pbmZvX21p bl9waXRjaChpbmZvLCAxLCAwKSAhPSAwKTsKPiA+ID4gKwo+ID4gPiArCUZBSUxfT04oZHJtX2Zv cm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAwLCAxKSAhPSAxKTsKPiA+ID4gKwlGQUlMX09OKGRy bV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgMCwgMikgIT0gMik7Cj4gPiA+ICsJRkFJTF9P Tihkcm1fZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDAsIDY0MCkgIT0gNjQwKTsKPiA+ID4g KwlGQUlMX09OKGRybV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgMCwgMTAyNCkgIT0gMTAy NCk7Cj4gPiA+ICsJRkFJTF9PTihkcm1fZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDAsIDE5 MjApICE9IDE5MjApOwo+ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1hdF9pbmZvX21pbl9waXRjaChp bmZvLCAwLCA0MDk2KSAhPSA0MDk2KTsKPiA+ID4gKwlGQUlMX09OKGRybV9mb3JtYXRfaW5mb19t aW5fcGl0Y2goaW5mbywgMCwgNjcxKSAhPSA2NzEpOwo+ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1h dF9pbmZvX21pbl9waXRjaChpbmZvLCAwLCBVSU5UX01BWCkgIT0KPiA+ID4gKwkJCSh1aW50NjRf dClVSU5UX01BWCk7Cj4gPiA+ICsJRkFJTF9PTihkcm1fZm9ybWF0X2luZm9fbWluX3BpdGNoKGlu Zm8sIDAsIChVSU5UX01BWCAtIDEpKSAhPQo+ID4gPiArCQkJKHVpbnQ2NF90KShVSU5UX01BWCAt IDEpKTsKPiA+ID4gKwo+ID4gPiArCS8qIFRlc3QgMSBwbGFuZSAxNiBiaXRzIHBlciBwaXhlbCBm b3JtYXQgKi8KPiA+ID4gKwlpbmZvID0gZHJtX2Zvcm1hdF9pbmZvKERSTV9GT1JNQVRfWFJHQjQ0 NDQpOwo+ID4gPiArCUZBSUxfT04oIWluZm8pOwo+ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1hdF9p bmZvX21pbl9waXRjaChpbmZvLCAwLCAwKSAhPSAwKTsKPiA+ID4gKwlGQUlMX09OKGRybV9mb3Jt YXRfaW5mb19taW5fcGl0Y2goaW5mbywgLTEsIDApICE9IDApOwo+ID4gPiArCUZBSUxfT04oZHJt X2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAxLCAwKSAhPSAwKTsKPiA+ID4gKwo+ID4gPiAr CUZBSUxfT04oZHJtX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAwLCAxKSAhPSAyKTsKPiA+ ID4gKwlGQUlMX09OKGRybV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgMCwgMikgIT0gNCk7 Cj4gPiA+ICsJRkFJTF9PTihkcm1fZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDAsIDY0MCkg IT0gMTI4MCk7Cj4gPiA+ICsJRkFJTF9PTihkcm1fZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8s IDAsIDEwMjQpICE9IDIwNDgpOwo+ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1hdF9pbmZvX21pbl9w aXRjaChpbmZvLCAwLCAxOTIwKSAhPSAzODQwKTsKPiA+ID4gKwlGQUlMX09OKGRybV9mb3JtYXRf aW5mb19taW5fcGl0Y2goaW5mbywgMCwgNDA5NikgIT0gODE5Mik7Cj4gPiA+ICsJRkFJTF9PTihk cm1fZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDAsIDY3MSkgIT0gMTM0Mik7Cj4gPiA+ICsJ RkFJTF9PTihkcm1fZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDAsIFVJTlRfTUFYKSAhPQo+ ID4gPiArCQkJKHVpbnQ2NF90KVVJTlRfTUFYICogMik7Cj4gPiA+ICsJRkFJTF9PTihkcm1fZm9y bWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDAsIChVSU5UX01BWCAtIDEpKSAhPQo+ID4gPiArCQkJ KHVpbnQ2NF90KShVSU5UX01BWCAtIDEpICogMik7Cj4gPiA+ICsKPiA+ID4gKwkvKiBUZXN0IDEg cGxhbmUgMjQgYml0cyBwZXIgcGl4ZWwgZm9ybWF0ICovCj4gPiA+ICsJaW5mbyA9IGRybV9mb3Jt YXRfaW5mbyhEUk1fRk9STUFUX1JHQjg4OCk7Cj4gPiA+ICsJRkFJTF9PTighaW5mbyk7Cj4gPiA+ ICsJRkFJTF9PTihkcm1fZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDAsIDApICE9IDApOwo+ ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAtMSwgMCkgIT0g MCk7Cj4gPiA+ICsJRkFJTF9PTihkcm1fZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDEsIDAp ICE9IDApOwo+ID4gPiArCj4gPiA+ICsJRkFJTF9PTihkcm1fZm9ybWF0X2luZm9fbWluX3BpdGNo KGluZm8sIDAsIDEpICE9IDMpOwo+ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1hdF9pbmZvX21pbl9w aXRjaChpbmZvLCAwLCAyKSAhPSA2KTsKPiA+ID4gKwlGQUlMX09OKGRybV9mb3JtYXRfaW5mb19t aW5fcGl0Y2goaW5mbywgMCwgNjQwKSAhPSAxOTIwKTsKPiA+ID4gKwlGQUlMX09OKGRybV9mb3Jt YXRfaW5mb19taW5fcGl0Y2goaW5mbywgMCwgMTAyNCkgIT0gMzA3Mik7Cj4gPiA+ICsJRkFJTF9P Tihkcm1fZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDAsIDE5MjApICE9IDU3NjApOwo+ID4g PiArCUZBSUxfT04oZHJtX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAwLCA0MDk2KSAhPSAx MjI4OCk7Cj4gPiA+ICsJRkFJTF9PTihkcm1fZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDAs IDY3MSkgIT0gMjAxMyk7Cj4gPiA+ICsJRkFJTF9PTihkcm1fZm9ybWF0X2luZm9fbWluX3BpdGNo KGluZm8sIDAsIFVJTlRfTUFYKSAhPQo+ID4gPiArCQkJKHVpbnQ2NF90KVVJTlRfTUFYICogMyk7 Cj4gPiA+ICsJRkFJTF9PTihkcm1fZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDAsIFVJTlRf TUFYIC0gMSkgIT0KPiA+ID4gKwkJCSh1aW50NjRfdCkoVUlOVF9NQVggLSAxKSAqIDMpOwo+ID4g PiArCj4gPiA+ICsJLyogVGVzdCAxIHBsYW5lIDMyIGJpdHMgcGVyIHBpeGVsIGZvcm1hdCAqLwo+ ID4gPiArCWluZm8gPSBkcm1fZm9ybWF0X2luZm8oRFJNX0ZPUk1BVF9BQkdSODg4OCk7Cj4gPiA+ ICsJRkFJTF9PTighaW5mbyk7Cj4gPiA+ICsJRkFJTF9PTihkcm1fZm9ybWF0X2luZm9fbWluX3Bp dGNoKGluZm8sIDAsIDApICE9IDApOwo+ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1hdF9pbmZvX21p bl9waXRjaChpbmZvLCAtMSwgMCkgIT0gMCk7Cj4gPiA+ICsJRkFJTF9PTihkcm1fZm9ybWF0X2lu Zm9fbWluX3BpdGNoKGluZm8sIDEsIDApICE9IDApOwo+ID4gPiArCj4gPiA+ICsJRkFJTF9PTihk cm1fZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDAsIDEpICE9IDQpOwo+ID4gPiArCUZBSUxf T04oZHJtX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAwLCAyKSAhPSA4KTsKPiA+ID4gKwlG QUlMX09OKGRybV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgMCwgNjQwKSAhPSAyNTYwKTsK PiA+ID4gKwlGQUlMX09OKGRybV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgMCwgMTAyNCkg IT0gNDA5Nik7Cj4gPiA+ICsJRkFJTF9PTihkcm1fZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8s IDAsIDE5MjApICE9IDc2ODApOwo+ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1hdF9pbmZvX21pbl9w aXRjaChpbmZvLCAwLCA0MDk2KSAhPSAxNjM4NCk7Cj4gPiA+ICsJRkFJTF9PTihkcm1fZm9ybWF0 X2luZm9fbWluX3BpdGNoKGluZm8sIDAsIDY3MSkgIT0gMjY4NCk7Cj4gPiA+ICsJRkFJTF9PTihk cm1fZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDAsIFVJTlRfTUFYKSAhPQo+ID4gPiArCQkJ KHVpbnQ2NF90KVVJTlRfTUFYICogNCk7Cj4gPiA+ICsJRkFJTF9PTihkcm1fZm9ybWF0X2luZm9f bWluX3BpdGNoKGluZm8sIDAsIFVJTlRfTUFYIC0gMSkgIT0KPiA+ID4gKwkJCSh1aW50NjRfdCko VUlOVF9NQVggLSAxKSAqIDQpOwo+ID4gPiArCj4gPiA+ICsJLyogVGVzdCAyIHBsYW5lcyBmb3Jt YXQgKi8KPiA+ID4gKwlpbmZvID0gZHJtX2Zvcm1hdF9pbmZvKERSTV9GT1JNQVRfTlYxMik7Cj4g PiA+ICsJRkFJTF9PTighaW5mbyk7Cj4gPiA+ICsJRkFJTF9PTihkcm1fZm9ybWF0X2luZm9fbWlu X3BpdGNoKGluZm8sIDAsIDApICE9IDApOwo+ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1hdF9pbmZv X21pbl9waXRjaChpbmZvLCAxLCAwKSAhPSAwKTsKPiA+ID4gKwlGQUlMX09OKGRybV9mb3JtYXRf aW5mb19taW5fcGl0Y2goaW5mbywgLTEsIDApICE9IDApOwo+ID4gPiArCUZBSUxfT04oZHJtX2Zv cm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAyLCAwKSAhPSAwKTsKPiA+ID4gKwo+ID4gPiArCUZB SUxfT04oZHJtX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAwLCAxKSAhPSAxKTsKPiA+ID4g KwlGQUlMX09OKGRybV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgMSwgMSkgIT0gMik7Cj4g PiA+ICsJRkFJTF9PTihkcm1fZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDAsIDIpICE9IDIp Owo+ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAxLCAxKSAh PSAyKTsKPiA+ID4gKwlGQUlMX09OKGRybV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgMCwg NjQwKSAhPSA2NDApOwo+ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1hdF9pbmZvX21pbl9waXRjaChp bmZvLCAxLCAzMjApICE9IDY0MCk7Cj4gPiA+ICsJRkFJTF9PTihkcm1fZm9ybWF0X2luZm9fbWlu X3BpdGNoKGluZm8sIDAsIDEwMjQpICE9IDEwMjQpOwo+ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1h dF9pbmZvX21pbl9waXRjaChpbmZvLCAxLCA1MTIpICE9IDEwMjQpOwo+ID4gPiArCUZBSUxfT04o ZHJtX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAwLCAxOTIwKSAhPSAxOTIwKTsKPiA+ID4g KwlGQUlMX09OKGRybV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgMSwgOTYwKSAhPSAxOTIw KTsKPiA+ID4gKwlGQUlMX09OKGRybV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgMCwgNDA5 NikgIT0gNDA5Nik7Cj4gPiA+ICsJRkFJTF9PTihkcm1fZm9ybWF0X2luZm9fbWluX3BpdGNoKGlu Zm8sIDEsIDIwNDgpICE9IDQwOTYpOwo+ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1hdF9pbmZvX21p bl9waXRjaChpbmZvLCAwLCA2NzEpICE9IDY3MSk7Cj4gPiA+ICsJRkFJTF9PTihkcm1fZm9ybWF0 X2luZm9fbWluX3BpdGNoKGluZm8sIDEsIDMzNikgIT0gNjcyKTsKPiA+ID4gKwlGQUlMX09OKGRy bV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgMCwgVUlOVF9NQVgpICE9Cj4gPiA+ICsJCQko dWludDY0X3QpVUlOVF9NQVgpOwo+ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1hdF9pbmZvX21pbl9w aXRjaChpbmZvLCAxLCBVSU5UX01BWCAvIDIgKyAxKSAhPQo+ID4gPiArCQkJKHVpbnQ2NF90KVVJ TlRfTUFYICsgMSk7Cj4gPiA+ICsJRkFJTF9PTihkcm1fZm9ybWF0X2luZm9fbWluX3BpdGNoKGlu Zm8sIDAsIChVSU5UX01BWCAtIDEpKSAhPQo+ID4gPiArCQkJKHVpbnQ2NF90KShVSU5UX01BWCAt IDEpKTsKPiA+ID4gKwlGQUlMX09OKGRybV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgMSwg KFVJTlRfTUFYIC0gMSkgLyAgMikgIT0KPiA+ID4gKwkJCSh1aW50NjRfdCkoVUlOVF9NQVggLSAx KSk7Cj4gPiA+ICsKPiA+ID4gKwkvKiBUZXN0IDMgcGxhbmVzIDggYml0cyBwZXIgcGl4ZWwgZm9y bWF0ICovCj4gPiA+ICsJaW5mbyA9IGRybV9mb3JtYXRfaW5mbyhEUk1fRk9STUFUX1lVVjQyMik7 Cj4gPiA+ICsJRkFJTF9PTighaW5mbyk7Cj4gPiA+ICsJRkFJTF9PTihkcm1fZm9ybWF0X2luZm9f bWluX3BpdGNoKGluZm8sIDAsIDApICE9IDApOwo+ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1hdF9p bmZvX21pbl9waXRjaChpbmZvLCAxLCAwKSAhPSAwKTsKPiA+ID4gKwlGQUlMX09OKGRybV9mb3Jt YXRfaW5mb19taW5fcGl0Y2goaW5mbywgMiwgMCkgIT0gMCk7Cj4gPiA+ICsJRkFJTF9PTihkcm1f Zm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIC0xLCAwKSAhPSAwKTsKPiA+ID4gKwlGQUlMX09O KGRybV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgMywgMCkgIT0gMCk7Cj4gPiA+ICsKPiA+ ID4gKwlGQUlMX09OKGRybV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgMCwgMSkgIT0gMSk7 Cj4gPiA+ICsJRkFJTF9PTihkcm1fZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDEsIDEpICE9 IDEpOwo+ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAyLCAx KSAhPSAxKTsKPiA+ID4gKwlGQUlMX09OKGRybV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywg MCwgMikgIT0gMik7Cj4gPiA+ICsJRkFJTF9PTihkcm1fZm9ybWF0X2luZm9fbWluX3BpdGNoKGlu Zm8sIDEsIDIpICE9IDIpOwo+ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1hdF9pbmZvX21pbl9waXRj aChpbmZvLCAyLCAyKSAhPSAyKTsKPiA+ID4gKwlGQUlMX09OKGRybV9mb3JtYXRfaW5mb19taW5f cGl0Y2goaW5mbywgMCwgNjQwKSAhPSA2NDApOwo+ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1hdF9p bmZvX21pbl9waXRjaChpbmZvLCAxLCAzMjApICE9IDMyMCk7Cj4gPiA+ICsJRkFJTF9PTihkcm1f Zm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDIsIDMyMCkgIT0gMzIwKTsKPiA+ID4gKwlGQUlM X09OKGRybV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgMCwgMTAyNCkgIT0gMTAyNCk7Cj4g PiA+ICsJRkFJTF9PTihkcm1fZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDEsIDUxMikgIT0g NTEyKTsKPiA+ID4gKwlGQUlMX09OKGRybV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgMiwg NTEyKSAhPSA1MTIpOwo+ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1hdF9pbmZvX21pbl9waXRjaChp bmZvLCAwLCAxOTIwKSAhPSAxOTIwKTsKPiA+ID4gKwlGQUlMX09OKGRybV9mb3JtYXRfaW5mb19t aW5fcGl0Y2goaW5mbywgMSwgOTYwKSAhPSA5NjApOwo+ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1h dF9pbmZvX21pbl9waXRjaChpbmZvLCAyLCA5NjApICE9IDk2MCk7Cj4gPiA+ICsJRkFJTF9PTihk cm1fZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDAsIDQwOTYpICE9IDQwOTYpOwo+ID4gPiAr CUZBSUxfT04oZHJtX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAxLCAyMDQ4KSAhPSAyMDQ4 KTsKPiA+ID4gKwlGQUlMX09OKGRybV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgMiwgMjA0 OCkgIT0gMjA0OCk7Cj4gPiA+ICsJRkFJTF9PTihkcm1fZm9ybWF0X2luZm9fbWluX3BpdGNoKGlu Zm8sIDAsIDY3MSkgIT0gNjcxKTsKPiA+ID4gKwlGQUlMX09OKGRybV9mb3JtYXRfaW5mb19taW5f cGl0Y2goaW5mbywgMSwgMzM2KSAhPSAzMzYpOwo+ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1hdF9p bmZvX21pbl9waXRjaChpbmZvLCAyLCAzMzYpICE9IDMzNik7Cj4gPiA+ICsJRkFJTF9PTihkcm1f Zm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDAsIFVJTlRfTUFYKSAhPQo+ID4gPiArCQkJKHVp bnQ2NF90KVVJTlRfTUFYKTsKPiA+ID4gKwlGQUlMX09OKGRybV9mb3JtYXRfaW5mb19taW5fcGl0 Y2goaW5mbywgMSwgVUlOVF9NQVggLyAyICsgMSkgIT0KPiA+ID4gKwkJCSh1aW50NjRfdClVSU5U X01BWCAvIDIgKyAxKTsKPiA+ID4gKwlGQUlMX09OKGRybV9mb3JtYXRfaW5mb19taW5fcGl0Y2go aW5mbywgMiwgVUlOVF9NQVggLyAyICsgMSkgIT0KPiA+ID4gKwkJCSh1aW50NjRfdClVSU5UX01B WCAvIDIgKyAxKTsKPiA+ID4gKwlGQUlMX09OKGRybV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5m bywgMCwgKFVJTlRfTUFYIC0gMSkgLyAyKSAhPQo+ID4gPiArCQkJKHVpbnQ2NF90KShVSU5UX01B WCAtIDEpIC8gMik7Cj4gPiA+ICsJRkFJTF9PTihkcm1fZm9ybWF0X2luZm9fbWluX3BpdGNoKGlu Zm8sIDEsIChVSU5UX01BWCAtIDEpIC8gMikgIT0KPiA+ID4gKwkJCSh1aW50NjRfdCkoVUlOVF9N QVggLSAxKSAvIDIpOwo+ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1hdF9pbmZvX21pbl9waXRjaChp bmZvLCAyLCAoVUlOVF9NQVggLSAxKSAvIDIpICE9Cj4gPiA+ICsJCQkodWludDY0X3QpKFVJTlRf TUFYIC0gMSkgLyAyKTsKPiA+ID4gKwo+ID4gPiArCS8qIFRlc3QgdGlsZWQgZm9ybWF0ICovCj4g PiA+ICsJaW5mbyA9IGRybV9mb3JtYXRfaW5mbyhEUk1fRk9STUFUX1gwTDIpOwo+ID4gPiArCUZB SUxfT04oIWluZm8pOwo+ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1hdF9pbmZvX21pbl9waXRjaChp bmZvLCAwLCAwKSAhPSAwKTsKPiA+ID4gKwlGQUlMX09OKGRybV9mb3JtYXRfaW5mb19taW5fcGl0 Y2goaW5mbywgLTEsIDApICE9IDApOwo+ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1hdF9pbmZvX21p bl9waXRjaChpbmZvLCAxLCAwKSAhPSAwKTsKPiA+ID4gKwo+ID4gPiArCUZBSUxfT04oZHJtX2Zv cm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAwLCAxKSAhPSAyKTsKPiA+ID4gKwlGQUlMX09OKGRy bV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgMCwgMikgIT0gNCk7Cj4gPiA+ICsJRkFJTF9P Tihkcm1fZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDAsIDY0MCkgIT0gMTI4MCk7Cj4gPiA+ ICsJRkFJTF9PTihkcm1fZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDAsIDEwMjQpICE9IDIw NDgpOwo+ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAwLCAx OTIwKSAhPSAzODQwKTsKPiA+ID4gKwlGQUlMX09OKGRybV9mb3JtYXRfaW5mb19taW5fcGl0Y2go aW5mbywgMCwgNDA5NikgIT0gODE5Mik7Cj4gPiA+ICsJRkFJTF9PTihkcm1fZm9ybWF0X2luZm9f bWluX3BpdGNoKGluZm8sIDAsIDY3MSkgIT0gMTM0Mik7Cj4gPiA+ICsJRkFJTF9PTihkcm1fZm9y bWF0X2luZm9fbWluX3BpdGNoKGluZm8sIDAsIFVJTlRfTUFYKSAhPQo+ID4gPiArCQkJKHVpbnQ2 NF90KVVJTlRfTUFYICogMik7Cj4gPiA+ICsJRkFJTF9PTihkcm1fZm9ybWF0X2luZm9fbWluX3Bp dGNoKGluZm8sIDAsIFVJTlRfTUFYIC0gMSkgIT0KPiA+ID4gKwkJCSh1aW50NjRfdCkoVUlOVF9N QVggLSAxKSAqIDIpOwo+ID4gPiArCj4gPiA+ICsJLyogVGVzdCBmb3JtYXQgd2l0aCBjcHAvY2hh cl9wZXJfYmxvY2sgMCAqLwo+ID4gPiArCWluZm8gPSBkcm1fZm9ybWF0X2luZm8oRFJNX0ZPUk1B VF9WVVkxMDEwMTApOwo+ID4gPiArCUZBSUxfT04oIWluZm8pOwo+ID4gPiArCUZBSUxfT04oZHJt X2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAwLCAwKSAhPSAwKTsKPiA+ID4gKwlGQUlMX09O KGRybV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgLTEsIDApICE9IDApOwo+ID4gPiArCUZB SUxfT04oZHJtX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAxLCAwKSAhPSAwKTsKPiA+ID4g Kwo+ID4gPiArCUZBSUxfT04oZHJtX2Zvcm1hdF9pbmZvX21pbl9waXRjaChpbmZvLCAwLCAxKSAh PSAwKTsKPiA+ID4gKwlGQUlMX09OKGRybV9mb3JtYXRfaW5mb19taW5fcGl0Y2goaW5mbywgMCwg VUlOVF9NQVgpICE9IDApOwo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ICt9Cj4gPiAK PiA+IENvbXByZWhlbnNpdmUsIGJ1dCBhbHNvIGZhaXJseSBib3JpbmcuIEFueXdheSwgaXQncyBh IHN0YXJ0LCBzbzoKPiAKPiBVbml0IHRlc3RzIHVzdWFsbHkgYXJlIDopCj4gCj4gPiAKPiA+IFJl dmlld2VkLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgo+IAo+IENh biBJIGFsc28gZ2V0IHlvdXIgcmV2aWV3ZWQtYnkgb24gdGhlIHBhdGNoZXMgdGhhdCBhZGRzIHRo aXMgZnVuY3Rpb25zID8KPiAKPiA+IAo+ID4gV2hhdCBJIGhhZCBpbiBtaW5kIGlzIG1heWJlIG5v dCBxdWl0ZSBzbyBsb3ctbGV2ZWwgdW5pdCB0ZXN0aW5nLCBidXQKPiA+IGV4ZXJjaXNpbmcgdGhl IGVudGlyZSBmcmFtZWJ1ZmZlcl9jcmVhdGUgbWFjaGluZXJ5LiBUaGUgcmVjZW50bHkKPiA+IGRy bV9jbGllbnRfZnJhbWVidWZmZXJfY3JlYXRlIGVzc2VudGlhbGx5IGdpdmVzIHlvdSB0aGF0IGlu dGVyZmFjZSBmb3IKPiA+IG1vZHVsZXMgKGJ1dCBJIGd1ZXNzIHdlIGNvdWxkIGFsc28gRVhQT1JU X1NZTUJPTF9GT1JfVEVTVFNfT05MWSwKPiA+IGNvbmRpdGlvbmFsIG9uIGRybSBzZWxmdGVzdHMg YmVpbmcgZW5hYmxlZCwgZGlyZWN0bHkgb24KPiA+IGRybV9pbnRlcm5hbF9mcmFtZWJ1ZmZlcl9j cmVhdGUpLgo+IAo+IFllYWgsIHRoYXQncyBleGFjdGx5IHdoYXQgSSB0aG91Z2h0IEkgc3RhcnRl ZCBsb29raW5nIGF0IGl0LCBidXQgSSBnb3QKPiBkaXNjb3VyYWdlZCwgYnkgdGhlIGxhY2sgb2Yg bW9ja2luZywgc28gSSBkZWNpZGVkIHRvIHN0YXJ0IHNtYWxsLgoKVGhlcmUncyBubyBmb3JtYWwg bW9ja2luZyBmcmFtZXdvcmssIGJ1dCBpbml0aWFsaXppbmcgYSBmZXcgYmFyZS1ib25lcwpkcm1f ZGV2aWNlIHN0cnVjdHMgaGFzIGJlY29tZSByZWFsbHkgc2ltcGxlLiBXZSd2ZSBkb25lIGxvdHMg b2Ygd29yayBpbgptYWtpbmcgYWxsIGtpbmRzIG9mIHZ0YWJsZXMgb3B0aW9uYWwgOi0pCgpBbmQg YWRkZmIgaGVyZSBpcyB2ZXJ5IG1pbmltYWwsIHNvIGtpbmRhIGlkZWFsIHRvIGdldCBzdGFydGVk IG9uIHRoaXMKam91cm5leS4KCiJUZXN0IGNvdmVyYWdlIG5vdCBhdCAxMDAlIHlldCwgbGV0J3Mg bm90IGV2ZW4gYm90aGVyIiBpcyBraW5kYSBhCmZhbGxhY3ksIHNpbmNlIHdlIGRvIGhhdmUgYWxs IHRoZSBDSSBhbHJlYWR5IChhdCBsZWFzdCBmb3IgaW50ZWwgc3R1ZmYpLApzbyBhbnkgdGVzdCB5 b3UgYWRkIF93aWxsXyBydW4sIGFuZCBpdCBfd2lsbF8gY2F0Y2ggYnVncy4gRXZlbiBpZiBpdCdz CnJlYWxseSBsb25lbHkgOi0pCgo+ID4gVGhpcyBuZWVkcyBzb21lIGZhaXJseSBtaW5pbWFsIG1v Y2tpbmcgb2YgYSBkcm1fZGV2aWNlIHdpdGggYSBidW5jaCBvZgo+ID4gZHVtbXkgZnVuY3Rpb25z ICh0aHJvdyB0aGVtIGludG8gdGVzdC1kcm1fbW9kZXNldF9jb21tb24uYyBpZiB5b3UgZmVlbAo+ ID4gbGlrZSkuIFRoZW4gZ28gdGhyb3VnaCBhIHBpbGUgb2YgdmFsaWQgYW5kIGludmFsaWQgY29t YmluYXRpb25zIGFuZCBtYWtlCj4gPiBzdXJlIHlvdXIgLT5mYl9jcmVhdGUgZHJpdmVyIGNhbGxi YWNrIGlzIG9ubHkgY2FsbGVkIHdoZW4gd2hlbiBpdCBzaG91bGQKPiA+IGJlIChhbmQgbm90IGZv ciBhbnl0aGluZyBpbnZhbGlkKS4gSSB0aGluayB0aGF0IHdvdWxkIHlpZWxkIHRoZSBtdWNoIG1v cmUKPiA+IGludGVyZXN0aW5nIHRlc3RpbmcgLi4uCj4gCj4gVGhpcyBjb21iaW5lZCB3aXRoIEVY UE9SVF9TWU1CT0xfRk9SX1RFU1RTX09OTFkgc2hvdWxkIGJlIGZhaXJseQo+IHNpbXBsZSwgYnV0 IGl0IHN0aWxsIGZlZWxzIGxpa2UgYSBkcm9wIGluIHRoZSBvY2VhbiwgSSBjYW4ndCBldmVuCj4g dGVzdCB0aGUgb3RoZXIgZnVuY3Rpb25zIHRoYXQgcGF0Y2ggWzFdIHRvdWNoZXMgbGlrZToKPiBk cm1fZ2VtX2ZiX2NyZWF0ZV93aXRoX2Z1bmNzIGFuZCBkcm1fZmJfY21hX2dldF9nZW1fYWRkci4K PiAKPiBbMV0gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvYXJjaGl2ZXMvZHJpLWRldmVs LzIwMTgtT2N0b2Jlci8xOTM2NzEuaHRtbAoKV2UgbmVlZCB0byBzdGFydCBzb21ld2hlcmUgaW1v LgoKQWxzbyBub3RlIHRoYXQgaWd0IGRvZXMgZmFpcmx5IG1hc3NpdmUgdGVzdGluZyBvZiBhIGxv dCBvZiBpbmZyYXN0cnVjdHVyZQp0b28sIEkgdGhpbmsgYmVzdCB0byBhaW0gZm9yIGNvbXBsZW1l bnRhcnkgdGVzdGluZy4gZmJkZXYgbm90IGhhdmluZwpwZXJmZWN0IHRlc3QgY292ZXJhZ2UgZnJv bSB0aGUgZ28gaXMgbm90IGEgYmlnIGRlYWwgaW1vLCBpZiB3ZSBjYW4ganVzdApzdGFydCB3aXRo IHRoZSBjb3JlIGNvZGUgYW5kIGNvcmUgaGVscGVycywgdGhhdCdzIGFscmVhZHkgYSBodWdlIHN0 ZXAKZm9yd2FyZC4KLURhbmllbAoKPiAKPiA+IAo+ID4gVGhhdCB3aWxsIGFsc28gcGF2ZSB0aGUg Z3JvdW5kIGZvciBzb21lIHJhdGhlciBtb3JlIHNlcmlvdXMgYWRkZmIgdGVzdGluZwo+ID4gaW4g dGhlIGZ1dHVyZS4gQW5kIGV2ZW50dWFsbHkgZXZlbiBtb3JlIHNlcmlvdXMgdGVzdGluZyBvbiBl LmcuIGF0b21pYwo+ID4gaGVscGVycy4KPiA+IAo+ID4gQW55d2F5LCBpZiB5b3UgZmVlbCBsaWtl LCB3b3VsZCBiZSBhd2Vzb21lIHRvIGZvbGxvdyB1cCBhIGJpdCBpbiB0aGF0Cj4gPiBkaXJlY3Rp b24uCj4gPiAKPiA+IENoZWVycywgRGFuaWVsCj4gPiAKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9zZWxmdGVzdHMvdGVzdC1kcm1fbW9kZXNldF9jb21tb24uaCBiL2RyaXZlcnMv Z3B1L2RybS9zZWxmdGVzdHMvdGVzdC1kcm1fbW9kZXNldF9jb21tb24uaAo+ID4gPiBpbmRleCBi MDA2NWEyZWIwNjcuLjU5MmE2NTgxYjE4OSAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL3NlbGZ0ZXN0cy90ZXN0LWRybV9tb2Rlc2V0X2NvbW1vbi5oCj4gPiA+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9zZWxmdGVzdHMvdGVzdC1kcm1fbW9kZXNldF9jb21tb24uaAo+ID4gPiBAQCAt MTQsNSArMTQsOCBAQAo+ID4gPiAgI2RlZmluZSBGQUlMX09OKHgpIEZBSUwoKHgpLCAiJXMiLCAi RkFJTF9PTigiIF9fc3RyaW5naWZ5KHgpICIpXG4iKQo+ID4gPiAgCj4gPiA+ICBpbnQgaWd0X2No ZWNrX3BsYW5lX3N0YXRlKHZvaWQgKmlnbm9yZWQpOwo+ID4gPiAraW50IGlndF9jaGVja19kcm1f Zm9ybWF0X2Jsb2NrX3dpZHRoKHZvaWQgKmlnbm9yZWQpOwo+ID4gPiAraW50IGlndF9jaGVja19k cm1fZm9ybWF0X2Jsb2NrX2hlaWdodCh2b2lkICppZ25vcmVkKTsKPiA+ID4gK2ludCBpZ3RfY2hl Y2tfZHJtX2Zvcm1hdF9taW5fcGl0Y2godm9pZCAqaWdub3JlZCk7Cj4gPiA+ICAKPiA+ID4gICNl bmRpZgo+ID4gPiAtLSAKPiA+ID4gMi4xOC4wCj4gPiA+IAo+ID4gCj4gPiAtLSAKPiA+IERhbmll bCBWZXR0ZXIKPiA+IFNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgo+ID4gaHR0 cDovL2Jsb2cuZmZ3bGwuY2gKPiAKPiAtLSAKPiBDaGVlcnMsCj4gQWxleCBHCgotLSAKRGFuaWVs IFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cu ZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K ZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==