From mboxrd@z Thu Jan 1 00:00:00 1970 From: Brian Starkey Subject: Re: [PATCH v3 2/3] drm: Connect live source to framebuffers Date: Tue, 31 Jan 2017 15:42:10 +0000 Message-ID: <20170131154210.GD11506@e106950-lin.cambridge.arm.com> References: <1542778.dcWpka5Jpx@wasted.cogentembedded.com> <4381980.kUHGeUXACq@wasted.cogentembedded.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from foss.arm.com (foss.arm.com [217.140.101.70]) by gabe.freedesktop.org (Postfix) with ESMTP id D51BA6E6A1 for ; Tue, 31 Jan 2017 15:42:13 +0000 (UTC) Content-Disposition: inline In-Reply-To: <4381980.kUHGeUXACq@wasted.cogentembedded.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Sergei Shtylyov Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, laurent.pinchart@ideasonboard.com, daniel.vetter@intel.com List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBKYW4gMjYsIDIwMTcgYXQgMTI6MzY6NTVBTSArMDMwMCwgU2VyZ2VpIFNodHlseW92 IHdyb3RlOgo+RnJvbTogTGF1cmVudCBQaW5jaGFydCA8bGF1cmVudC5waW5jaGFydCtyZW5lc2Fz QGlkZWFzb25ib2FyZC5jb20+Cj4KPkludHJvZHVjZSBhIG5ldyBsaXZlIHNvdXJjZSBmbGFnIGZv ciBmcmFtZWJ1ZmZlcnMuIFdoZW4gYSBmcmFtZWJ1ZmZlciBpcwo+Y3JlYXRlZCB3aXRoIHRoYXQg ZmxhZyBzZXQsIGEgbGl2ZSBzb3VyY2UgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZQo+ZnJhbWVidWZm ZXIgaW5zdGVhZCBvZiBidWZmZXIgb2JqZWN0cy4gVGhlIGZyYW1lYnVmZmVyIGNhbiB0aGVuIGJl IHVzZWQKPndpdGggYSBwbGFuZSB0byBjb25uZWN0IGl0IHdpdGggdGhlIGxpdmUgc291cmNlLgo+ Cj5bU2VyZ2VpOiBwb3J0ZWQgdG8gdGhlIG1vZGVybiBrZXJuZWwuXQo+Cj5TaWduZWQtb2ZmLWJ5 OiBMYXVyZW50IFBpbmNoYXJ0IDxsYXVyZW50LnBpbmNoYXJ0K3JlbmVzYXNAaWRlYXNvbmJvYXJk LmNvbT4KPlNpZ25lZC1vZmYtYnk6IFNlcmdlaSBTaHR5bHlvdiA8c2VyZ2VpLnNodHlseW92QGNv Z2VudGVtYmVkZGVkLmNvbT4KPgo+LS0tCj5DaGFuZ2VzIGluIHZlcnNpb24gMzoKPi0gcG9ydGVk IHRoZSBwYXRjaCB0byB0aGUgbW9kZXJuIGtlcm5lbDsKPi0gYWRkZWQgbXkgc2lnbm9mZi4KPgo+ IGRyaXZlcnMvZ3B1L2RybS9kcm1fZnJhbWVidWZmZXIuYyB8ICAxMzQgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLS0tLS0tLS0KPiBpbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmggICAg ICAgfCAgICA3ICsKPiAyIGZpbGVzIGNoYW5nZWQsIDExMyBpbnNlcnRpb25zKCspLCAyOCBkZWxl dGlvbnMoLSkKPgo+SW5kZXg6IGxpbnV4L2RyaXZlcnMvZ3B1L2RybS9kcm1fZnJhbWVidWZmZXIu Ywo+PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQo+LS0tIGxpbnV4Lm9yaWcvZHJpdmVycy9ncHUvZHJtL2RybV9mcmFtZWJ1 ZmZlci5jCj4rKysgbGludXgvZHJpdmVycy9ncHUvZHJtL2RybV9mcmFtZWJ1ZmZlci5jCj5AQCAt MTI2LDM0ICsxMjYsMTggQEAgaW50IGRybV9tb2RlX2FkZGZiKHN0cnVjdCBkcm1fZGV2aWNlICpk ZQo+IAlyZXR1cm4gMDsKPiB9Cj4KPi1zdGF0aWMgaW50IGZyYW1lYnVmZmVyX2NoZWNrKGNvbnN0 IHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyICpyKQo+K3N0YXRpYyBpbnQgZnJhbWVidWZmZXJfY2hl Y2tfYnVmZmVycyhjb25zdCBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiAqciwKPisJCQkJICAgICBp bnQgaHN1YiwgaW50IHZzdWIpCj4gewo+LQljb25zdCBzdHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvICpp bmZvOwo+LQlpbnQgaTsKPisJaW50IG51bV9wbGFuZXMsIGk7Cj4rCXVuc2lnbmVkIGludCBjcHA7 Cj4KPi0JaW5mbyA9IF9fZHJtX2Zvcm1hdF9pbmZvKHItPnBpeGVsX2Zvcm1hdCAmIH5EUk1fRk9S TUFUX0JJR19FTkRJQU4pOwo+LQlpZiAoIWluZm8pIHsKPi0JCXN0cnVjdCBkcm1fZm9ybWF0X25h bWVfYnVmIGZvcm1hdF9uYW1lOwo+LQkJRFJNX0RFQlVHX0tNUygiYmFkIGZyYW1lYnVmZmVyIGZv cm1hdCAlc1xuIiwKPi0JCSAgICAgICAgICAgICAgZHJtX2dldF9mb3JtYXRfbmFtZShyLT5waXhl bF9mb3JtYXQsCj4tCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvcm1hdF9u YW1lKSk7Cj4tCQlyZXR1cm4gLUVJTlZBTDsKPi0JfQo+LQo+LQlpZiAoci0+d2lkdGggPT0gMCB8 fCByLT53aWR0aCAlIGluZm8tPmhzdWIpIHsKPi0JCURSTV9ERUJVR19LTVMoImJhZCBmcmFtZWJ1 ZmZlciB3aWR0aCAldVxuIiwgci0+d2lkdGgpOwo+LQkJcmV0dXJuIC1FSU5WQUw7Cj4tCX0KPi0K Pi0JaWYgKHItPmhlaWdodCA9PSAwIHx8IHItPmhlaWdodCAlIGluZm8tPnZzdWIpIHsKPi0JCURS TV9ERUJVR19LTVMoImJhZCBmcmFtZWJ1ZmZlciBoZWlnaHQgJXVcbiIsIHItPmhlaWdodCk7Cj4t CQlyZXR1cm4gLUVJTlZBTDsKPi0JfQo+KyAJbnVtX3BsYW5lcyA9IGRybV9mb3JtYXRfbnVtX3Bs YW5lcyhyLT5waXhlbF9mb3JtYXQpOwo+KwljcHAgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChyLT5w aXhlbF9mb3JtYXQsIDApOwoKWW91IGNhbiBwYXNzIGluIHRoZSBkcm1fZm9ybWF0X2luZm8gYW5k IHVzZSBpdCBpbnN0ZWFkIG9mIGxvb2tpbmcgaXQKdXAgYWdhaW4gaGVyZS4gVGhhdCBhbHNvIHNh dmVzIHRoZSBoc3ViL3ZzdWIgYXJndW1lbnRzLgoKPgo+LQlmb3IgKGkgPSAwOyBpIDwgaW5mby0+ bnVtX3BsYW5lczsgaSsrKSB7Cj4tCQl1bnNpZ25lZCBpbnQgd2lkdGggPSByLT53aWR0aCAvIChp ICE9IDAgPyBpbmZvLT5oc3ViIDogMSk7Cj4tCQl1bnNpZ25lZCBpbnQgaGVpZ2h0ID0gci0+aGVp Z2h0IC8gKGkgIT0gMCA/IGluZm8tPnZzdWIgOiAxKTsKPi0JCXVuc2lnbmVkIGludCBjcHAgPSBp bmZvLT5jcHBbaV07Cj4rCWZvciAoaSA9IDA7IGkgPCBudW1fcGxhbmVzOyBpKyspIHsKPisJCXVu c2lnbmVkIGludCB3aWR0aCA9IHItPndpZHRoIC8gKGkgIT0gMCA/IGhzdWIgOiAxKTsKPisJCXVu c2lnbmVkIGludCBoZWlnaHQgPSByLT5oZWlnaHQgLyAoaSAhPSAwID8gdnN1YiA6IDEpOwo+Cj4g CQlpZiAoIXItPmhhbmRsZXNbaV0pIHsKPiAJCQlEUk1fREVCVUdfS01TKCJubyBidWZmZXIgb2Jq ZWN0IGhhbmRsZSBmb3IgcGxhbmUgJWRcbiIsIGkpOwo+QEAgLTIwMyw3ICsxODcsNyBAQCBzdGF0 aWMgaW50IGZyYW1lYnVmZmVyX2NoZWNrKGNvbnN0IHN0cnVjCj4gCQl9Cj4gCX0KPgo+LQlmb3Ig KGkgPSBpbmZvLT5udW1fcGxhbmVzOyBpIDwgNDsgaSsrKSB7Cj4rCWZvciAoaSA9IG51bV9wbGFu ZXM7IGkgPCA0OyBpKyspIHsKPiAJCWlmIChyLT5tb2RpZmllcltpXSkgewo+IAkJCURSTV9ERUJV R19LTVMoIm5vbi16ZXJvIG1vZGlmaWVyIGZvciB1bnVzZWQgcGxhbmUgJWRcbiIsIGkpOwo+IAkJ CXJldHVybiAtRUlOVkFMOwo+QEAgLTIzMiw2ICsyMTYsOTkgQEAgc3RhdGljIGludCBmcmFtZWJ1 ZmZlcl9jaGVjayhjb25zdCBzdHJ1Ywo+IAlyZXR1cm4gMDsKPiB9Cj4KPitzdGF0aWMgaW50IGZy YW1lYnVmZmVyX2NoZWNrX3NvdXJjZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPisJCQkJICAg ICBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiAqcikKPit7Cj4rCXN0cnVjdCBkcm1fbW9k ZV9vYmplY3QgKm9iajsKPisJc3RydWN0IGRybV9saXZlX3NvdXJjZSAqc3JjOwo+Kwl1bnNpZ25l ZCBpbnQgY3BwOwo+Kwl1bnNpZ25lZCBpbnQgaTsKPisKPisJLyoKPisJICogRW5zdXJlIHRoYXQg dXNlcnNwYWNlIGhhcyB6ZXJvZWQgdW51c2VkIGhhbmRsZXMsIHBpdGNoZXMsIG9mZnNldHMgYW5k Cj4rCSAqIG1vZGlmaWVycyB0byBhbGxvdyBmdXR1cmUgQVBJIGV4dGVuc2lvbnMuCj4rCSAqLwo+ KwlpZiAoci0+b2Zmc2V0c1swXSB8fCByLT5tb2RpZmllclswXSkKPisJCXJldHVybiAtRUlOVkFM Owo+Kwo+Kwlmb3IgKGkgPSAxOyBpIDwgQVJSQVlfU0laRShyLT5oYW5kbGVzKTsgKytpKSB7Cj4r CQlpZiAoci0+aGFuZGxlc1tpXSB8fCByLT5waXRjaGVzW2ldIHx8Cj4rCQkgICAgci0+b2Zmc2V0 c1tpXSB8fCByLT5tb2RpZmllcltpXSkKPisJCQlyZXR1cm4gLUVJTlZBTDsKPisJfQo+Kwo+Kwkv KiBWYWxpZGF0ZSB3aWR0aCwgaGVpZ2h0IGFuZCBwaXRjaC4gKi8KPisJY3BwID0gZHJtX2Zvcm1h dF9wbGFuZV9jcHAoci0+cGl4ZWxfZm9ybWF0LCAwKTsKClNhbWUgY29tbWVudCBhYm91dCBwYXNz aW5nIGluIHRoZSBkcm1fZm9ybWF0X2luZm8gaW5zdGVhZCBvZiBsb29raW5nCml0IHVwIGFnYWlu LgoKPisKPisJaWYgKCh1aW50NjRfdCkgci0+d2lkdGggKiBjcHAgPiBVSU5UX01BWCkKPisJCXJl dHVybiAtRVJBTkdFOwo+Kwo+KwlpZiAoKHVpbnQ2NF90KSByLT5oZWlnaHQgKiByLT5waXRjaGVz WzBdID4gVUlOVF9NQVgpCj4rCQlyZXR1cm4gLUVSQU5HRTsKPisKPisJaWYgKHItPnBpdGNoZXNb MF0gIT0gci0+d2lkdGggKiBjcHApIHsKPisJCURSTV9ERUJVR19LTVMoImJhZCBwaXRjaCAldSBm b3IgcGxhbmUgJWRcbiIsIHItPnBpdGNoZXNbMF0sIGkpOwo+KwkJcmV0dXJuIC1FSU5WQUw7Cj4r CX0KPisKPisJLyoKPisJICogRmluZCB0aGUgbGl2ZSBzb3VyY2UgYW5kIGNoZWNrIHdoZXRoZXIg aXQgc3VwcG9ydHMgdGhlIHJlcXVlc3RlZAo+KwkgKiBwaXhlbCBmb3JtYXQuCj4rCSAqLwoKSXMg aXQgb3V0LW9mLXNjb3BlIHRvIGNoZWNrIHdpdGggdGhlIHNvdXJjZSBzdWJzeXN0ZW0gKHY0bDIp IHRoYXQgaXRzCmZvcm1hdCBpcyBjb25maWd1cmVkIHRoZSBzYW1lIHdheT8gQW5kL29yIGluZm9y bSBpdCBvZiB0aGUgbGl2ZS1zb3VyY2UKZm9ybWF0IHNvIHRoYXQgaXQgY2FuIHZhbGlkYXRlIHN1 Y2ggdGhpbmdzLgoKLUJyaWFuCj4rCj4rCW9iaiA9IGRybV9tb2RlX29iamVjdF9maW5kKGRldiwg ci0+aGFuZGxlc1swXSwKPisJCQkJICAgRFJNX01PREVfT0JKRUNUX0xJVkVfU09VUkNFKTsKPisJ aWYgKCFvYmopIHsKPisJCURSTV9ERUJVR19LTVMoImJhZCBmcmFtZWJ1ZmZlciBzb3VyY2UgSUQg JXVcbiIsIHItPmhhbmRsZXNbMF0pOwo+KwkJcmV0dXJuIC1FSU5WQUw7Cj4rCX0KPisKPisJc3Jj ID0gb2JqX3RvX2xpdmVfc291cmNlKG9iaik7Cj4rCj4rCWZvciAoaSA9IDA7IGkgPCBzcmMtPmZv cm1hdF9jb3VudDsgaSsrKSB7Cj4rCQlpZiAoci0+cGl4ZWxfZm9ybWF0ID09IHNyYy0+Zm9ybWF0 X3R5cGVzW2ldKQo+KwkJCWJyZWFrOwo+Kwl9Cj4rCj4rCWlmIChpID09IHNyYy0+Zm9ybWF0X2Nv dW50KSB7Cj4rCQlEUk1fREVCVUdfS01TKCJiYWQgZnJhbWVidWZmZXIgcGl4ZWwgZm9ybWF0IDB4 JTA4eCBmb3Igc291cmNlICV1XG4iLAo+KwkJCSAgICAgIHItPnBpeGVsX2Zvcm1hdCwgci0+aGFu ZGxlc1swXSk7Cj4rCQlyZXR1cm4gLUVJTlZBTDsKPisJfQo+Kwo+KwlyZXR1cm4gMDsKPit9Cj4r Cj4rc3RhdGljIGludCBmcmFtZWJ1ZmZlcl9jaGVjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ KwkJCSAgICAgY29uc3Qgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgKnIpCj4rewo+Kwljb25zdCBz dHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvICppbmZvOwo+Kwo+KwlpbmZvID0gX19kcm1fZm9ybWF0X2lu Zm8oci0+cGl4ZWxfZm9ybWF0ICYgfkRSTV9GT1JNQVRfQklHX0VORElBTik7Cj4rCWlmICghaW5m bykgewo+KwkJc3RydWN0IGRybV9mb3JtYXRfbmFtZV9idWYgZm9ybWF0X25hbWU7Cj4rCQlEUk1f REVCVUdfS01TKCJiYWQgZnJhbWVidWZmZXIgZm9ybWF0ICVzXG4iLAo+KwkJICAgICAgICAgICAg ICBkcm1fZ2V0X2Zvcm1hdF9uYW1lKHItPnBpeGVsX2Zvcm1hdCwKPisJCSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmZm9ybWF0X25hbWUpKTsKPisJCXJldHVybiAtRUlOVkFMOwo+ Kwl9Cj4rCj4rCWlmIChyLT53aWR0aCA9PSAwIHx8IHItPndpZHRoICUgaW5mby0+aHN1Yikgewo+ KwkJRFJNX0RFQlVHX0tNUygiYmFkIGZyYW1lYnVmZmVyIHdpZHRoICV1XG4iLCByLT53aWR0aCk7 Cj4rCQlyZXR1cm4gLUVJTlZBTDsKPisJfQo+Kwo+KwlpZiAoci0+aGVpZ2h0ID09IDAgfHwgci0+ aGVpZ2h0ICUgaW5mby0+dnN1Yikgewo+KwkJRFJNX0RFQlVHX0tNUygiYmFkIGZyYW1lYnVmZmVy IGhlaWdodCAldVxuIiwgci0+aGVpZ2h0KTsKPisJCXJldHVybiAtRUlOVkFMOwo+Kwl9Cj4rCj4r CWlmIChyLT5mbGFncyAmIERSTV9NT0RFX0ZCX0xJVkVfU09VUkNFKQo+KwkJcmV0dXJuIGZyYW1l YnVmZmVyX2NoZWNrX3NvdXJjZXMoZGV2LCByKTsKPisJZWxzZQo+KwkJcmV0dXJuIGZyYW1lYnVm ZmVyX2NoZWNrX2J1ZmZlcnMociwgaW5mby0+aHN1YiwgaW5mby0+dnN1Yik7Cj4rfQo+Kwo+IHN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKgo+IGRybV9pbnRlcm5hbF9mcmFtZWJ1ZmZlcl9jcmVhdGUo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAJCQkJY29uc3Qgc3RydWN0IGRybV9tb2RlX2ZiX2Nt ZDIgKnIsCj5AQCAtMjQxLDcgKzMxOCw4IEBAIGRybV9pbnRlcm5hbF9mcmFtZWJ1ZmZlcl9jcmVh dGUoc3RydWN0IGQKPiAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmI7Cj4gCWludCByZXQ7Cj4K Pi0JaWYgKHItPmZsYWdzICYgfihEUk1fTU9ERV9GQl9JTlRFUkxBQ0VEIHwgRFJNX01PREVfRkJf TU9ESUZJRVJTKSkgewo+KwlpZiAoci0+ZmxhZ3MgJiB+KERSTV9NT0RFX0ZCX0lOVEVSTEFDRUQg fCBEUk1fTU9ERV9GQl9NT0RJRklFUlMgfAo+KwkJCSBEUk1fTU9ERV9GQl9MSVZFX1NPVVJDRSkp IHsKPiAJCURSTV9ERUJVR19LTVMoImJhZCBmcmFtZWJ1ZmZlciBmbGFncyAweCUwOHhcbiIsIHIt PmZsYWdzKTsKPiAJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+IAl9Cj5AQCAtMjYzLDcgKzM0 MSw3IEBAIGRybV9pbnRlcm5hbF9mcmFtZWJ1ZmZlcl9jcmVhdGUoc3RydWN0IGQKPiAJCXJldHVy biBFUlJfUFRSKC1FSU5WQUwpOwo+IAl9Cj4KPi0JcmV0ID0gZnJhbWVidWZmZXJfY2hlY2socik7 Cj4rCXJldCA9IGZyYW1lYnVmZmVyX2NoZWNrKGRldiwgcik7Cj4gCWlmIChyZXQpCj4gCQlyZXR1 cm4gRVJSX1BUUihyZXQpOwo+Cj5JbmRleDogbGludXgvaW5jbHVkZS91YXBpL2RybS9kcm1fbW9k ZS5oCj49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Cj4tLS0gbGludXgub3JpZy9pbmNsdWRlL3VhcGkvZHJtL2RybV9tb2Rl LmgKPisrKyBsaW51eC9pbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmgKPkBAIC00MDUsNiArNDA1 LDcgQEAgc3RydWN0IGRybV9tb2RlX2ZiX2NtZCB7Cj4KPiAjZGVmaW5lIERSTV9NT0RFX0ZCX0lO VEVSTEFDRUQJKDE8PDApIC8qIGZvciBpbnRlcmxhY2VkIGZyYW1lYnVmZmVycyAqLwo+ICNkZWZp bmUgRFJNX01PREVfRkJfTU9ESUZJRVJTCSgxPDwxKSAvKiBlbmFibGVzIC0+bW9kaWZlcltdICov Cj4rI2RlZmluZSBEUk1fTU9ERV9GQl9MSVZFX1NPVVJDRQkoMTw8MikgLyogY29ubmVjdGVkIHRv IGEgbGl2ZSBzb3VyY2UgKi8KPgo+IHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyIHsKPiAJX191MzIg ZmJfaWQ7Cj5AQCAtNDM2LDYgKzQzNywxMiBAQCBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiB7Cj4g CSAqIFRodXMgYWxsIGNvbWJpbmF0aW9ucyBvZiBkaWZmZXJlbnQgZGF0YSBsYXlvdXRzIGZvcgo+ IAkgKiBtdWx0aSBwbGFuZSBmb3JtYXRzIG11c3QgYmUgZW51bWVyYXRlZCBhcyBzZXBhcmF0ZQo+ IAkgKiBtb2RpZmllcnMuCj4rCSAqCj4rCSAqIElmIHRoZSBEUk1fTU9ERV9GQl9MSVZFX1NPVVJD RSBmbGFnIGlzIHNldCB0aGUgZnJhbWUgYnVmZmVyIGlucHV0Cj4rCSAqIGNvbWVzIGZyb20gYSBs aXZlIHNvdXJjZSBpbnN0ZWFkIG9mIGZyb20gbWVtb3J5LiBUaGUgaGFuZGxlc1swXQo+KwkgKiBm aWVsZCBjb250YWlucyB0aGUgSUQgb2YgdGhlIGNvbm5lY3RlZCBsaXZlIHNvdXJjZSBvYmplY3Qu IEFsbCBvdGhlcgo+KwkgKiBoYW5kbGVzIGFuZCBhbGwgcGl0Y2hlcywgb2Zmc2V0cyBhbmQgbW9k aWZpZXJzIGFyZSB0aGVuIGlnbm9yZWQgYnkKPisJICogdGhlIGtlcm5lbCBhbmQgbXVzdCBiZSBz ZXQgdG8gemVybyBieSBhcHBsaWNhdGlvbnMuCj4gCSAqLwo+IAlfX3UzMiBoYW5kbGVzWzRdOwo+ IAlfX3UzMiBwaXRjaGVzWzRdOyAvKiBwaXRjaCBmb3IgZWFjaCBwbGFuZSAqLwo+Cj5fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ZHJpLWRldmVsIG1haWxp bmcgbGlzdAo+ZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+aHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApk cmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==