From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v2 00/12] drm: Add generic fbdev emulation Date: Thu, 21 Jun 2018 09:14:01 +0200 Message-ID: <20180621071401.GF19791@phenom.ffwll.local> References: <20180618141739.48151-1-noralf@tronnes.org> <20180620093437.GF7186@phenom.ffwll.local> <19b89d83-d0e6-f3e9-a1e9-55b4b7a3d0d8@tronnes.org> <0fea5456-f1c9-4ebd-741f-8eb3480c724f@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <0fea5456-f1c9-4ebd-741f-8eb3480c724f@tronnes.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Noralf =?iso-8859-1?Q?Tr=F8nnes?= Cc: dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, laurent.pinchart@ideasonboard.com List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBKdW4gMjAsIDIwMTggYXQgMDU6Mjg6MTBQTSArMDIwMCwgTm9yYWxmIFRyw7hubmVz IHdyb3RlOgo+IAo+IERlbiAyMC4wNi4yMDE4IDE1LjUyLCBza3JldiBOb3JhbGYgVHLDuG5uZXM6 Cj4gPiAKPiA+IERlbiAyMC4wNi4yMDE4IDExLjM0LCBza3JldiBEYW5pZWwgVmV0dGVyOgo+ID4g PiBPbiBNb24sIEp1biAxOCwgMjAxOCBhdCAwNDoxNzoyN1BNICswMjAwLCBOb3JhbGYgVHLDuG5u ZXMgd3JvdGU6Cj4gPiA+ID4gVGhpcyBwYXRjaHNldCBhZGRzIGdlbmVyaWMgZmJkZXYgZW11bGF0 aW9uIGZvciBkcml2ZXJzIHRoYXQKPiA+ID4gPiBzdXBwb3J0cyBHRU0KPiA+ID4gPiBiYXNlZCBk dW1iIGJ1ZmZlcnMgd2hpY2ggc3VwcG9ydCAuZ2VtX3ByaW1lX3ZtYXAgYW5kIGdlbV9wcmltZV9t bWFwLiBBbgo+ID4gPiA+IEFQSSBpcyBiZWd1biB0byBzdXBwb3J0IGluLWtlcm5lbCBjbGllbnRz IGluIGdlbmVyYWwuCj4gPiA+ID4gCj4gPiA+ID4gTm90YWJsZSBjaGFuZ2VzIHNpbmNlIHZlcnNp b24gMToKPiA+ID4gPiAKPiA+ID4gPiAtIFJld29yayBjbGllbnQgdW5yZWdpc3RlciBjb2RlLiBJ J3ZlIHVzZWQgcmVmZXJlbmNlIGNvdW50aW5nIHRvIG1hbmFnZQo+ID4gPiA+IMKgwqAgdGhlIGZh Y3QgdGhhdCBib3RoIHRoZSBjbGllbnQgaXRzZWxmIGFuZCB0aGUgZHJpdmVyIHRocm91Z2gKPiA+ ID4gPiDCoMKgIGRybV9kZXZfdW5yZWdpc3RlcigpIGNhbiByZWxlYXNlIHRoZSBjbGllbnQuIFRo ZSBjbGllbnQgaXMKPiA+ID4gPiBub3cgcmVsZWFzZWQKPiA+ID4gPiDCoMKgIHVzaW5nIGRybV9j bGllbnRfcHV0KCkgaW5zdGVhZCBvZiBkcm1fY2xpZW50X2ZyZWUoKS4KPiA+ID4gSSBzdGFydGVk IHJldmlld2luZyB0aGUgcmV3b3JrZWQgY2xpZW50IHJlZ2lzdGVyL3VucmVnaXN0ZXIgc3R1ZmYs Cj4gPiA+IGFuZCBpdAo+ID4gPiBsb29rcyBnb29kLCBleGNlcHQgdGhpcyBrcmVmIHN0dWZmIGhl cmUgZm9yIGNsaWVudHMuIEkgZG9uJ3QgdW5kZXJzdGFuZAo+ID4gPiB3aHkgeW91IG5lZWQgdGhp cyAtIGFzIGxvbmcgYXMgcmVtb3ZhbCBmcm9tIGRldi0+Y2xpZW50bGlzdCBpcyBwcm9wZXJseQo+ ID4gPiBwcm90ZWN0ZWQgYnkgdGhlIG11dGV4LCBJIGRvbid0IHNlZSBob3cgYm90aCB0aGUgY2xp ZW50IGFuZCB0aGUKPiA+ID4gZGV2aWNlIGNhbgo+ID4gPiByZWxlYXNlIHRoZSBjbGllbnQgYXQg dGhlIHNhbWUgdGltZS4gT2YgY291cnNlIHRoaXMgbWVhbnMgdGhhdCBib3RoIHRoZQo+ID4gPiBk ZXZpY2UtdHJpZ2dlciB1bnJlZ2lzdGVyIGFuZCB0aGUgY2xpZW50LXRyaWdnZXJlZCB1bnJlZ2lz dGVyIG11c3QgZmlyc3QKPiA+ID4gZ3JhYiB0aGUgbXV0ZXgsIHJlbW92ZSB0aGUgY2xpZW50IGZy b20gdGhlIGxpc3QsIGFuZCBvbmx5IGlmIHRoYXQKPiA+ID4gd2FzIGRvbmUKPiA+ID4gc3VjY2Vz ZnVsbHksIGNsZWFuIHVwIHRoZSBjbGllbnQuIElmIHRoZSBjbGllbnQgaXMgYWxyZWFkeSByZW1v dmVkIGZyb20KPiA+ID4gdGhlIGxpc3QgKGkuZS4gbGlzdF9lbXB0eSgpIGlzIHRydWUpIHRoZW4g eW91IG5lZWQgdG8gYmFpbCBvdXQgdG8gYXZvaWQKPiA+ID4gZG91YmxlLWZyZWVpbmcuCj4gPiAK PiA+IEkganVzdCBzdWNrIGF0IHRoaXMgOi8KPiA+IAo+ID4gVXNlIGNhc2U6Cj4gPiBVbmxvYWRp bmcgY2xpZW50IG1vZHVsZSBhdCB0aGUgc2FtZSB0aW1lIGFzIHRoZSBkZXZpY2UgaXMgdW5wbHVn Z2VkLgoKRG8gd2UgcmVhbGx5IHdhbnQgdG8gYmUgYWJsZSB0byB1bmxvYWQgY2xpZW50IG1vZHVs ZXM/IEF0bSB5b3UgY2FuJ3QKdW5sb2FkIHRoZSBkcm0gZmJkZXYgZW11bGF0aW9uIGVpdGhlciB3 aGlsZSBhIGRyaXZlciBpcyBzdGlsbCB1c2luZyBpdC4KRHJvcHBpbmcgdGhhdCByZXF1aXJlbWVu dCB3b3VsZCBtYWtlIHRoaW5ncyBldmVuIHNpbXBsZXIgKHlvdSdkIGp1c3QgbmVlZAp0byBhZGQg YW4gb3duZXIgZmllbGQgdG8gZHJtX2NsaWVudCBhbmQgYSB0cnlfbW9kdWxlX2dldCB3aGVuIHJl Z2lzdGVyaW5nCml0LCBiYWlsaW5nIG91dCBpZiB0aGF0IGZhaWxzKS4KCldoYXQncyB0aGUgdXNl LWNhc2UgeW91IGhhdmUgaW4gbWluZCB0aGF0IHJlcXVpcmVzIHRoYXQgeW91IGNhbiB1bmxvYWQg YQpjbGllbnQgZHJpdmVyIG1vZHVsZT8gRG9lcyB0aGF0IGV2ZW4gd29yayB3aXRoIHRoZSBzaHVm Zmxpbmcgd2UndmUgZG9uZSBvbgp0aGUgcmVnaXN0ZXIgc2lkZSBvZiB0aGluZ3M/Cgo+ID4gVGhl IGNsaWVudCBtb2R1bGUgY2FsbHMgZHJtX2NsaWVudF9yZWxlYXNlKCk6Cj4gPiAKPiA+IHZvaWQg ZHJtX2NsaWVudF9yZWxlYXNlKHN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50KQo+ID4gewo+ ID4gwqDCoMKgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjbGllbnQtPmRldjsKCk5vdCBzdXJl ICh3aXRob3V0IHJlYWRpbmcgeW91ciBwYXRjaGVzIGFnYWluKSB3aHkgd2UgaGF2ZSBkcm1fY2xp ZW50X2Nsb3NlCmhlcmUgYW5kIC0+dW5yZWdpc3Rlci9kcm1fY2xpZW50X3JlbGVhc2UgYmVsb3cu IEJ1dCB0aGUgdHJpY2sgaXMgcm91Z2hseQp0byBkbwoJY2xpZW50ID0gTlVMTDsKCgltdXRleF9s b2NrKCk7CgljbGllbnQgPSBmaW5kX2l0KCk7CglpZiAoY2xpZW50KQoJCWxpc3RfZGVsKCk7Cglt dXRlX3VubG9jaygpOwoKCWlmICghY2xpZW50KQoJCWNvbnRpbnVlOyAvKiBvciBlYXJseSByZXR1 cm4sIHdoYXRldmVyIG1ha2VzIHNlbnNlICovCgoJZHJtX2NsaWVudF91bnJlZ2lzdGVyKGNsaWVu dCk7CgpUaGlzIHdheSBpZiB5b3UgcmFjZSB0aGVyZSdzOgotIG9ubHkgb25lIHRocmVhZCB3aWxs IHdpbiwgc2luY2UgdGhlIHJlbW92YWwgZnJvbSB0aGUgbGlzdCBpcyBsb2NrZWQKLSBubyBkZWFk bG9ja3MsIGJlY2F1c2UgdGhlIGFjdHVhbCBjbGVhbnVwIGlzIGRvbmUgb3V0c2lkZSBvZiB0aGUg bG9ja3MKClRoZSBwcm9ibGVtIGlzIGFwcGx5aW5nIHRoaXMgdHJpY2sgdG8gZWFjaCBzaXR1YXRp b24sIHNpbmNlIHlvdSBuZWVkIHRvCm1ha2Ugc3VyZSB0aGF0IHlvdSBnZXQgdGhlbSBhbGwuIFNp bmNlIHlvdSB3YW50IHRvIGJlIGFibGUgdG8gdW5yZWdpc3Rlcgpmcm9tIDIgZGlmZmVyZW50IGxp c3RzLCB3aXRoIGVhY2ggdGhlaXIgb3duIGxvY2tzLCB5b3UgbmVlZCB0byBuZXN0IHRoZQphYm92 ZSBwYXR0ZXJuIGluIGNsZXZlciB3YXlzLiBJbiB0aGUgY2xpZW50IHVucmVnaXN0ZXIgZnVuY3Rp b246CgoJbXV0ZXhfbG9jayhmYmRldl9jbGllbnRzX2xvY2spOwoJY2xpZW50ID0gbGlzdF9maXJz dChmYmRldl9jbGllbnRzX2xpc3QpOwoJaWYgKGNsaWVudCkKCQlsaXN0X2RlbCgpOwoKCW11dGV4 X2xvY2soY2xpZW50LT5kZXYpOwoJaWYgKCFsaXN0X2VtcHR5KGNsaWVudC0+ZGV2X2xpc3QpKQoJ CWxpc3RfZGVsKCk7CgllbHNlCgkJLyogc29tZW9uZSBlbHNlIHJhY2VkIHVzLCBnaXZlIHVwICov CgkJY2xpZW50ID0gTlVMTDsKCW11dGV4X3VubG9jayhjbGllbnQtPmRldik7CgltdXRleF91bmxv Y2soZmJkZXZfY2xpZW50c19sb2NrKTsKCglpZiAoIWNsaWVudCkKCQljb250aW51ZTsgLyogb3Ig ZWFybHkgcmV0dXJuLCB3aGF0ZXZlciBtYWtlcyBzZW5zZSAqLwoKCWRybV9jbGllbnRfdW5yZWdp c3RlcihjbGllbnQpOwoKVGhpcyB3YXkgeW91IGtub3cgdGhhdCBhcyBsb25nIGFzIHlvdSBob2xk IHRoZSBmYmRldnNfY2xpZW50c19sb2NrIGNsaWVudApjYW4ndCBkaXNhcHBlYXIsIHNvIHlvdSBj YW4gbG9vayBhdCBjbGllbnQtPmRldiAod2hpY2ggYWxzbyB3b24ndApkaXNhcHBlYXIsIGJlY2F1 c2UgdGhlIGNsaWVudCBjYW4ndCBkaXNhcHBlYXIpLCB3aGljaCBhbGxvd3MgeW91IHRvIHRha2UK dGhlIHBlci1kZXZpY2UgY2xpZW50IGxvb2sgdG8gY2hlY2sgd2hldGhlciB5b3UndmUgcmFjZSB3 aXRoIHJlbW92aW5nLgoKT24gdGhlIHBlci1kZXZpY2UgY2xpZW50IHJlbW92ZSBmdW5jdGlvbiB3 ZSBjYW4ndCBqdXN0IGRvIHRoZSBzYW1lIHRyaWNrLApiZWNhdXNlIHRoYXQgd291bGQgYmUgYSBs b2NraW5nIGludmVyc2lvbi4gSW5zdGVhZCB3ZSBuZWVkIGNhcmVmdWwKb3JkZXJpbmc6CgoKCW11 dGV4X2xvY2soY2xpZW50LT5kZXYpOwoJaWYgKCFsaXN0X2VtcHR5KGNsaWVudC0+ZGV2X2xpc3Qp KQoJCWxpc3RfZGVsKCk7CgllbHNlCgkJLyogc29tZW9uZSBlbHNlIHJhY2VkIHVzLCBnaXZlIHVw ICovCgkJY2xpZW50ID0gTlVMTDsKCW11dGV4X3VubG9jayhjbGllbnQtPmRldik7CgoJaWYgKCFj bGllbnQpCgkJY29udGludWU7IC8qIG9yIGVhcmx5IHJldHVybiwgd2hhdGV2ZXIgbWFrZXMgc2Vu c2UgKi8KCgkvKiB3ZSd2ZSB3b24gdGhlIHJhY2UgYW5kIG11c3QgZG8gdGhlIGNsZWFudXAsIGJ1 dCBmaXJzdCB3ZSBuZWVkCgkgKiB0byBzdG9wIHVzZS1hZnRlci1mcmVlICovCgoJbXV0ZXhfbG9j ayhmYmRldl9jbGllbnRzX2xvY2spOwoJaWYgKCFsaXN0X2VtcHR5KGNsaWVudC0+ZmJkZXZfbGlz dCkpCgkJbGlzdF9kZWwoKTsKCWVsc2UKCQkvKiB3ZSByYWNlZCBhbmQgdGhlIG90aGVyIHRocmVh ZCBkaWQgdGhlIGxpc3QgcmVtb3ZhbAoJCSAqIGFscmVhZHksIGJ1dCB3aWxsIGhhdmUgYmFja2Vk IG9mZiBieSBub3cgKi8KCW11dGV4X3VubG9jayhmYmRldl9jbGllbnRzX2xvY2spOwoKCS8qIG5v IG9uZSBjYW4gZ2V0IGF0IHRoZSBjbGllbnQgc3RydWN0dXJlIGFueW1vcmUsIGl0J3Mgc2FmZSB0 bwoJICogY2xlYW4gaXQgdXAgKi8KCglkcm1fY2xpZW50X3VucmVnaXN0ZXIoY2xpZW50KTsKCkxv dHMgb2YgY29tcGxleGl0eSBmb3IgYSBmZWF0dXJlIHdlIGRpZG4ndCBoYXZlIHlldCBhbmQgdGhh dCBJIGRvbid0IHRoaW5rCndlIG5lZWQgcmVhbGx5LCBidXQgaXQgaXMgZG9hYmxlIDotKQoKPiA+ IMKgwqDCoCBtdXRleF9sb2NrKCZkZXYtPmNsaWVudGxpc3RfbXV0ZXgpOwo+ID4gwqDCoMKgIGxp c3RfZGVsKCZjbGllbnQtPmxpc3QpOwo+ID4gwqDCoMKgIGRybV9jbGllbnRfY2xvc2UoY2xpZW50 KTsKPiA+IMKgwqDCoCBtdXRleF91bmxvY2soJmRldi0+Y2xpZW50bGlzdF9tdXRleCk7Cj4gPiDC oMKgwqAgZHJtX2Rldl9wdXQoZGV2KTsKPiA+IH0KPiA+IAo+ID4gCj4gPiBkcm1fZGV2aWNlX3Vu cmVnaXN0ZXIoKSBjYWxscyBkcm1fY2xpZW50X2Rldl91bnJlZ2lzdGVyKCk6Cj4gPiAKPiA+IHZv aWQgZHJtX2NsaWVudF9kZXZfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4g ewo+ID4gwqDCoMKgIHN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50Owo+ID4gCj4gPiDCoMKg wqAgbXV0ZXhfbG9jaygmZGV2LT5jbGllbnRsaXN0X211dGV4KTsKPiA+IMKgwqDCoCBsaXN0X2Zv cl9lYWNoX2VudHJ5KGNsaWVudCwgJmRldi0+Y2xpZW50bGlzdCwgbGlzdCkgewo+ID4gwqDCoMKg IMKgwqDCoCBpZiAoY2xpZW50LT5mdW5jcyAmJiBjbGllbnQtPmZ1bmNzLT51bnJlZ2lzdGVyKQo+ ID4gwqDCoMKgIMKgwqDCoCDCoMKgwqAgY2xpZW50LT5mdW5jcy0+dW5yZWdpc3RlcihjbGllbnQp Owo+ID4gwqDCoMKgIMKgwqDCoCBlbHNlCj4gPiDCoMKgwqAgwqDCoMKgIMKgwqDCoCBkcm1fY2xp ZW50X3JlbGVhc2UoY2xpZW50KTsKPiA+IMKgwqDCoCB9Cj4gPiDCoMKgwqAgbXV0ZXhfdW5sb2Nr KCZkZXYtPmNsaWVudGxpc3RfbXV0ZXgpOwo+ID4gfQo+ID4gCj4gPiAKPiA+IEhvdyBkbyBJIGRv IHRoaXMgd2l0aG91dCBkZWFkbG9ja2luZyBhbmQgd2l0aG91dCBvcGVyYXRpbmcgb24gYQo+ID4g ZHJtX2NsaWVudF9kZXYgc3RydWN0dXJlIHRoYXQgaGFzIGJlZW4gZnJlZWQgaW4gdGhlIG90aGVy IGNvZGVwYXRoPwo+ID4gCj4gCj4gVGhlcmUncyBvbmUgbW9yZSBxdWlyayB0aGF0IEkgZm9yZ290 Ogo+IElmIGZiZGV2IGNhbid0IHJlbGVhc2UgdGhlIGNsaWVudCBvbiAudW5yZWdpc3RlciBkdWUg dG8gb3BlbiBmZCdzLCB0aGUKPiBsaXN0IGVudHJ5IHNob3VsZCBiZSByZW1vdmVkIGJ1dCByZWxl YXNpbmcgcmVzb3VyY2VzIGlzIGRlZmVycmVkIHRvCj4gdGhlIGxhc3QgZmQgYmVpbmcgY2xvc2Vk LgoKRm9yIGZiZGV2IEkgdGhpbmsga3JlZidpbmcgaXQgbWFrZXMgc2Vuc2UuIEJ1dCBwcm9iYWJs eSBiZXR0ZXIgdG8gZG8gdGhhdAppbiB0aGUgc3RydWN0dXJlIHRoYXQgY29udGFpbnMgdGhlIGRy bV9jbGllbnQsIHNpbmNlIEkgdGhpbmsgdGhpcyBpcyB2ZXJ5Cm11Y2ggYW4gZmJkZXYgcHJvYmxl bSwgbm90IGEgZ2VuZXJhbCBkcm1fY2xpZW50IHByb2JsZW0uCgpDaGVlcnMsIERhbmllbAoKPiAK PiBOb3JhbGYuCj4gCj4gPiAKPiA+IE5vcmFsZi4KPiA+IAo+ID4gPiBJIGRvbid0IHRoaW5rIHRo ZXJlJ3MgYSBuZWVkIHRvIHVzZSBhIGtyZWYgaGVyZS4gQW5kIGtyZWYgaGFzIHRoZSB0cmlja3kK PiA+ID4gaXNzdWUgdGhhdCB5b3UgdGVtcHQgZXZlcnlvbmUgaW50byBjb25zdHJ1Y3RpbmcgcmVm ZXJlbmNlcyBsb29wcyBiZXR3ZWVuCj4gPiA+IGRybV9kZXZpY2UgYW5kIGRybV9jbGllbnQgKHdo aWNoIHJlcXVpcmUgbG90cyBvZiBqdW1waW5nIHRocm91Z2gKPiA+ID4gaG9vcHMgaW4KPiA+ID4g eW91ciB2MSB0byBtYWtlIHN1cmUgeW91IGNhbiBicmVhayB0aG9zZSByZWZlcmVuY2UgbG9vcHMp Lgo+ID4gPiAKPiA+ID4gPiAtIGZiZGV2OiBVc2UgYSBzaGFkb3cgYnVmZmVyIGZvciBmcmFtZWJ1 ZmZlcnMgdGhhdCBoYXZlIGEgZGlydHkKPiA+ID4gPiDCoMKgIGNhbGxiYWNrLiBUaGlzIG1ha2Vz IHRoZSBmYmRldiBjbGllbnQgdHJ1bHkgZ2VuZXJpYyBhbmQKPiA+ID4gPiB1c2VhYmxlIGZvciBh bGwKPiA+ID4gPiDCoMKgIGRyaXZlcnMuIFRoZXJlJ3MgYSBibGl0dGluZyBwZW5hbHR5LCBidXQg dGhpcyBpcyBnZW5lcmljCj4gPiA+ID4gZW11bGF0aW9uIGFmdGVyCj4gPiA+ID4gwqDCoCBhbGwu IFRoZSByZWFzb24gZm9yIG5lZWRpbmcgYSBzaGFkb3cgYnVmZmVyIGlzIHRoYXQgZGVmZXJyZWQK PiA+ID4gPiBJL08gb25seQo+ID4gPiA+IMKgwqAgd29ya3Mgd2l0aCBrbWFsbG9jL3ZtYWxsb2Mg YnVmZmVycyBhbmQgbm90IHdpdGggc2htZW0gYnVmZmVycwo+ID4gPiA+IMKgwqAgKHBhZ2UtPmxy dS9tYXBwaW5nKS4KPiA+ID4gWWVhaCBJIHRoaW5rIHRoYXQncyB0aGUgb25seSBmZWFzaWJsZSBv cHRpb24uIEV2ZXJ5b25lIHdobyBjYXJlcyBtb3JlCj4gPiA+IGFib3V0IGZiZGV2IHBlcmZvcm1h bmNlIGNhbiBrZWVwIHRoZWlyIGRyaXZlci1zcGVjaWZpYyBjb2RlLiBBbmQgZm9yCj4gPiA+IG90 aGVyCj4gPiA+IGRybV9jbGllbnQgdXNlcnMgdGhpcyBzaG91bGRuJ3QgYmUgYSBwcm9ibGVtLCBz aW5jZSB0aGV5IGtub3cgaG93IHRvIHVzZQo+ID4gPiBkaXJ0eSBhbmQgZmxpcHBpbmcgYmV0d2Vl biBtdWx0aXBsZSBidWZmZXJzIHRvIGRyaXZlIGttcyBhcyBpdCB3YXMKPiA+ID4gZGVzaWduZWQu IFRoZSBpc3N1ZSByZWFsbHkgb25seSBleGlzdHMgZm9yIGZiZGV2J3MgYXNzdW1wdGlvbiBvZiBh Cj4gPiA+IGRpcmVjdAo+ID4gPiBtbWFwIG9mIGEgZHVtYiBmcmFtZWJ1ZmZlciwgZW5jb2RlZCBp bnRvIHRoZSB1YXBpLgo+ID4gPiAKPiA+ID4gPiAtIExldCB0aW55ZHJtIHVzZSB0aGUgZnVsbCBm YmRldiBjbGllbnQKPiA+ID4gXG8vCj4gPiA+IAo+ID4gPiBDaGVlcnMsIERhbmllbAo+ID4gPiA+ IE5vcmFsZi4KPiA+ID4gPiAKPiA+ID4gPiBDaGFuZ2VzIHNpbmNlIHZlcnNpb24gMToKPiA+ID4g PiAtIE1ha2UgaXQgcG9zc2libGUgdG8gZW1iZWQgc3RydWN0IGRybV9jbGllbnRfZGV2IGFuZCBk cm9wIHRoZSBwcml2YXRlCj4gPiA+ID4gwqDCoCBwb2ludGVyCj4gPiA+ID4gLSBVc2Uga3JlZiBy ZWZlcmVuY2UgY291bnRpbmcgdG8gY29udHJvbCBjbGllbnQgcmVsZWFzZSBzaW5jZSBib3RoIHRo ZQo+ID4gPiA+IMKgwqAgY2xpZW50IGFuZCB0aGUgZHJpdmVyIGNhbiByZWxlYXNlLgo+ID4gPiA+ IC0gQWRkIGNvbW1lbnQgYWJvdXQgdXNpbmcgZG1hLWJ1ZiBhcyBhIHBvc3NpYmlsaXR5IHdpdGgg c29tZSByZXdvcmsKPiA+ID4gPiAtIE1vdmUgYnVmZmVyIE5VTEwgY2hlY2sgdG8gZHJtX2NsaWVu dF9mcmFtZWJ1ZmZlcl9kZWxldGUoKQo+ID4gPiA+IC0gTW92ZSBjbGllbnQgbmFtZSB0byBzdHJ1 Y3QgZHJtX2NsaWVudF9kZXYKPiA+ID4gPiAtIE1vdmUgdXAgZHJtX2Rldl9nZXQvcHV0IGNhbGxz IHRvIG1ha2UgdGhlbSBtb3JlIHZpc2libGUKPiA+ID4gPiAtIE1vdmUgZHJtX2NsaWVudF9kZXYu bGlzdCBkZWZpbml0aW9uIHRvIGxhdGVyIHBhdGNoIHRoYXQgbWFrZXMKPiA+ID4gPiB1c2Ugb2Yg aXQKPiA+ID4gPiAKPiA+ID4gPiAtIEVtYmVkIGRybV9jbGllbnQgYXQgdGhlIGJlZ2lubmluZyBv ZiBkcm1fZmJfaGVscGVyIHRvIGF2b2lkIGEgZnJhZ2lsZQo+ID4gPiA+IMKgwqAgdHJhbnNpdGlv bmFsIGtmcmVlIGhhY2sgaW4gZHJtX2NsaWVudF9yZWxlYXNlKCkKPiA+ID4gPiAtIFNldCBvd25l ciBpbiBkcm1fZmJkZXZfZmJfb3BzCj4gPiA+ID4gLSBBZGQga2VybmVsZG9jIHRvIGRybV9mYl9o ZWxwZXJfZ2VuZXJpY19wcm9iZSgpCj4gPiA+ID4gCj4gPiA+ID4gLSBSZW1vdmUgdW51c2VkIGZ1 bmN0aW9ucwo+ID4gPiA+IC0gQ2hhbmdlIG5hbWUgZHJtX2NsaWVudF9mdW5jcy5sYXN0Y2xvc2Ug LT4gLnJlc3RvcmUKPiA+ID4gPiAtIENoYW5nZSBuYW1lIGRybV9jbGllbnRfZnVuY3MucmVtb3Zl IC0+IC51bnJlZ2lzdGVyCj4gPiA+ID4gLSBSZXdvcmsgdW5yZWdpc3RlciBjb2RlCj4gPiA+ID4g Cj4gPiA+ID4gLSB0aW55ZHJtOiBVc2UgZHJtX2ZiZGV2X2dlbmVyaWNfc2V0dXAoKSBhbmQgcmVt b3ZlCj4gPiA+ID4gwqDCoCBkcm1fZmJfY21hX2ZiZGV2X2luaXRfd2l0aF9mdW5jcygpCj4gPiA+ ID4gCj4gPiA+ID4gRGF2aWQgSGVycm1hbm4gKDEpOgo+ID4gPiA+IMKgwqAgZHJtOiBwcm92aWRl IG1hbmFnZW1lbnQgZnVuY3Rpb25zIGZvciBkcm1fZmlsZQo+ID4gPiA+IAo+ID4gPiA+IE5vcmFs ZiBUcsO4bm5lcyAoMTEpOgo+ID4gPiA+IMKgwqAgZHJtL2ZpbGU6IERvbid0IHNldCBtYXN0ZXIg b24gaW4ta2VybmVsIGNsaWVudHMKPiA+ID4gPiDCoMKgIGRybTogTWFrZSBpb2N0bHMgYXZhaWxh YmxlIGZvciBpbi1rZXJuZWwgY2xpZW50cwo+ID4gPiA+IMKgwqAgZHJtOiBCZWdpbiBhbiBBUEkg Zm9yIGluLWtlcm5lbCBjbGllbnRzCj4gPiA+ID4gwqDCoCBkcm0vZmItaGVscGVyOiBBZGQgZ2Vu ZXJpYyBmYmRldiBlbXVsYXRpb24gLmZiX3Byb2JlIGZ1bmN0aW9uCj4gPiA+ID4gwqDCoCBkcm0v cGwxMTE6IFNldCAuZ2VtX3ByaW1lX3ZtYXAgYW5kIC5nZW1fcHJpbWVfbW1hcAo+ID4gPiA+IMKg wqAgZHJtL2NtYS1oZWxwZXI6IFVzZSB0aGUgZ2VuZXJpYyBmYmRldiBlbXVsYXRpb24KPiA+ID4g PiDCoMKgIGRybS9jbGllbnQ6IEFkZCBjbGllbnQgY2FsbGJhY2tzCj4gPiA+ID4gwqDCoCBkcm0v ZGVidWdmczogQWRkIGludGVybmFsIGNsaWVudCBkZWJ1Z2ZzIGZpbGUKPiA+ID4gPiDCoMKgIGRy bS9mYi1oZWxwZXI6IEZpbmlzaCB0aGUgZ2VuZXJpYyBmYmRldiBlbXVsYXRpb24KPiA+ID4gPiDC oMKgIGRybS90aW55ZHJtOiBVc2UgZHJtX2ZiZGV2X2dlbmVyaWNfc2V0dXAoKQo+ID4gPiA+IMKg wqAgZHJtL2NtYS1oZWxwZXI6IFJlbW92ZSBkcm1fZmJfY21hX2ZiZGV2X2luaXRfd2l0aF9mdW5j cygpCj4gPiA+ID4gCj4gPiA+ID4gwqAgRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWNsaWVudC5yc3TC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAxMiArCj4gPiA+ID4gwqAgRG9jdW1lbnRhdGlvbi9n cHUvaW5kZXgucnN0wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMSArCj4g PiA+ID4gwqAgZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfMKgwqAgMiArLQo+ID4gPiA+IMKgIGRyaXZlcnMvZ3B1L2RybS9kcm1f Y2xpZW50LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA0MzUKPiA+ID4gPiArKysr KysrKysrKysrKysrKysrKysrKysrKysrCj4gPiA+ID4gwqAgZHJpdmVycy9ncHUvZHJtL2RybV9j cnRjX2ludGVybmFsLmjCoMKgwqDCoMKgwqDCoMKgIHzCoCAxOSArLQo+ID4gPiA+IMKgIGRyaXZl cnMvZ3B1L2RybS9kcm1fZGVidWdmcy5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDC oCA3ICsKPiA+ID4gPiDCoCBkcml2ZXJzL2dwdS9kcm0vZHJtX2Rydi5jwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDggKwo+ID4gPiA+IMKgIGRyaXZlcnMvZ3B1L2Ry bS9kcm1fZHVtYl9idWZmZXJzLmPCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDMzICsrLQo+ID4gPiA+ IMKgIGRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfY21hX2hlbHBlci5jwqDCoMKgwqDCoMKgwqDCoCB8 IDM4MAo+ID4gPiA+ICsrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4gPiA+IMKgIGRyaXZlcnMv Z3B1L2RybS9kcm1fZmJfaGVscGVyLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAzMzAKPiA+ ID4gPiArKysrKysrKysrKysrKysrKysrKy0KPiA+ID4gPiDCoCBkcml2ZXJzL2dwdS9kcm0vZHJt X2ZpbGUuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAzMDQgKysrKysrKysr Ky0tLS0tLS0tLQo+ID4gPiA+IMKgIGRyaXZlcnMvZ3B1L2RybS9kcm1fZnJhbWVidWZmZXIuY8Kg wqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA0MiArKy0KPiA+ID4gPiDCoCBkcml2ZXJzL2dwdS9kcm0v ZHJtX2ludGVybmFsLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCAyICsKPiA+ID4g PiDCoCBkcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB8wqDCoCA0ICstCj4gPiA+ID4gwqAgZHJpdmVycy9ncHUvZHJtL2RybV9wcm9iZV9o ZWxwZXIuY8KgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCAzICsKPiA+ID4gPiDCoCBkcml2ZXJzL2dw dS9kcm0vcGwxMTEvcGwxMTFfZHJ2LmPCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCAyICsKPiA+ ID4gPiDCoCBkcml2ZXJzL2dwdS9kcm0vdGlueWRybS9jb3JlL3Rpbnlkcm0tY29yZS5jIHzCoMKg IDMgKy0KPiA+ID4gPiDCoCBkcml2ZXJzL2dwdS9kcm0vdGlueWRybS9pbGk5MjI1LmPCoMKgwqDC oMKgwqDCoMKgwqDCoCB8wqDCoCAxIC0KPiA+ID4gPiDCoCBkcml2ZXJzL2dwdS9kcm0vdGlueWRy bS9taTAyODNxdC5jwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDEgLQo+ID4gPiA+IMKgIGRyaXZl cnMvZ3B1L2RybS90aW55ZHJtL3N0NzU4Ni5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCAx IC0KPiA+ID4gPiDCoCBkcml2ZXJzL2dwdS9kcm0vdGlueWRybS9zdDc3MzVyLmPCoMKgwqDCoMKg wqDCoMKgwqDCoCB8wqDCoCAxIC0KPiA+ID4gPiDCoCBpbmNsdWRlL2RybS9kcm1fY2xpZW50LmjC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDE1NiArKysrKysrKysrCj4g PiA+ID4gwqAgaW5jbHVkZS9kcm0vZHJtX2RldmljZS5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfMKgIDIxICsrCj4gPiA+ID4gwqAgaW5jbHVkZS9kcm0vZHJtX2ZiX2Nt YV9oZWxwZXIuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCA2IC0KPiA+ID4gPiDCoCBp bmNsdWRlL2RybS9kcm1fZmJfaGVscGVyLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB8wqAgMzggKysrCj4gPiA+ID4gwqAgMjUgZmlsZXMgY2hhbmdlZCwgMTI5OCBpbnNlcnRpb25z KCspLCA1MTQgZGVsZXRpb25zKC0pCj4gPiA+ID4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IERvY3Vt ZW50YXRpb24vZ3B1L2RybS1jbGllbnQucnN0Cj4gPiA+ID4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50LmMKPiA+ID4gPiDCoCBjcmVhdGUgbW9kZSAxMDA2 NDQgaW5jbHVkZS9kcm0vZHJtX2NsaWVudC5oCj4gPiA+ID4gCj4gPiA+ID4gLS0gCj4gPiA+ID4g Mi4xNS4xCj4gPiA+ID4gCj4gPiA+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KPiA+ID4gPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gPiA+ID4gSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ID4gPiA+IGh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4gPiAKPiA+IF9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPiBkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0Cj4gPiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPiBodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo+ID4gCj4gCgot LSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0 cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==