From mboxrd@z Thu Jan 1 00:00:00 1970 From: spanda-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org Subject: Re: [PATCH v11 2/5] drm/bridge: add support for sn65dsi86 bridge driver Date: Mon, 18 Jun 2018 11:21:46 +0530 Message-ID: <23e344b041bc84ea977edecc980e43a4@codeaurora.org> References: <1529045023-32165-1-git-send-email-spanda@codeaurora.org> <1529045023-32165-3-git-send-email-spanda@codeaurora.org> <20180615112949eucas1p1413b1141e551fd0e524c3dc0493bbac2~4UfXToKxQ2200822008eucas1p1Y@eucas1p1.samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180615112949eucas1p1413b1141e551fd0e524c3dc0493bbac2~4UfXToKxQ2200822008eucas1p1Y-MHMrYXj8g+pqW5MlFJXMulaTQe2KTcn/@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Andrzej Hajda Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, ryadav-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, abhinavk-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, hoegsberg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, chandanu-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org List-Id: devicetree@vger.kernel.org T24gMjAxOC0wNi0xNSAxNjo1OSwgQW5kcnplaiBIYWpkYSB3cm90ZToKPiBIaSBTYW5kZWVwLAo+ IAo+IFRoYW5rcyBmb3IgdGhlIHBhdGNoLCBJIGhvcGUgaXQgd2lsbCBiZSBtZXJnZWQgc29vbi4K PiAKPiBPbiAxNS4wNi4yMDE4IDA4OjQzLCBTYW5kZWVwIFBhbmRhIHdyb3RlOgo+PiBBZGQgc3Vw cG9ydCBmb3IgVEkncyBzbjY1ZHNpODYgZHNpMmVkcCBicmlkZ2UgY2hpcC4KPj4gVGhlIGNoaXAg Y29udmVydHMgRFNJIHRyYW5zbWl0dGVkIHNpZ25hbCB0byBlRFAgc2lnbmFsLAo+PiB3aGljaCBp cyBmZWQgdG8gdGhlIGNvbm5lY3RlZCBlRFAgcGFuZWwuCj4+IAo+PiBUaGlzIGNoaXAgY2FuIGJl IGNvbnRyb2xsZWQgdmlhIGVpdGhlciBpMmMgaW50ZXJmYWNlIG9yCj4+IGRzaSBpbnRlcmZhY2Uu IEN1cnJlbnRseSBpbiBkcml2ZXIgYWxsIHRoZSBjb250cm9sIHJlZ2lzdGVycwo+PiBhcmUgYmVp bmcgYWNjZXNzZWQgdGhyb3VnaCBpMmMgaW50ZXJmYWNlIG9ubHkuCj4+IEFsc28gYXMgb2Ygbm93 IEhQRCBzdXBwb3J0IGhhcyBub3QgYmVlbiBhZGRlZCB0byBicmlkZ2UKPj4gY2hpcCBkcml2ZXIu Cj4+IAo+PiBDaGFuZ2VzIGluIHYxOgo+PiAgLSBTcGxpdCB0aGUgZHQtYmluZGluZ3MgYW5kIHRo ZSBkcml2ZXIgc3VwcG9ydCBpbnRvIHNlcGFyYXRlIHBhdGNoZXMKPj4gICAgKEFuZHJ6ZWogSGFq ZGEpLgo+PiAgLSBVc2Ugb2YgZ3Bpb2QgQVBJcyB0byBwYXJzZSBhbmQgY29uZmlndXJlIGdwaW9z IGluc3RlYWQgb2Ygb2Jzb2xldGUgCj4+IG9uZXMKPj4gICAgKEFuZHJ6ZWogSGFqZGEpLgo+PiAg LSBVc2UgbWFjcm9zIHRvIGRlZmluZSB0aGUgcmVnaXN0ZXIgb2Zmc2V0cyAoQW5kcnplaiBIYWpk YSkuCj4+IAo+PiBDaGFuZ2VzIGluIHYyOgo+PiAgLSBTZXBhcmF0ZSBvdXQgZWRwIHBhbmVsIHNw ZWNpZmljIEhXIHJlc291cmNlIGhhbmRsaW5nIGZyb20gYnJpZGdlCj4+ICAgIGRyaXZlciBhbmQg Y3JlYXRlIGEgc2VwYXJhdGUgZWRwIHBhbmVsIGRyaXZlcnMgdG8gaGFuZGxlIHBhbmVsCj4+ICAg IHNwZWNpZmljIG1vZGUgaW5mb3JtYXRpb24gYW5kIEhXIHJlc291cmNlcyAoU2VhbiBQYXVsKS4K Pj4gIC0gUmVwbGFjZSBwcl8qIEFQSXMgdG8gRFJNXyogQVBJcyB0byBsb2cgZXJyb3Igb3IgZGVi dWcgaW5mb3JtYXRpb24KPj4gICAgKFNlYW4gUGF1bCkuCj4+ICAtIFJlbW92ZSBzb21lIG9mIHRo ZSB1bm5lY2Vzc2FyeSBzdHJ1Y3R1cmUvdmFyaWFibGUgZnJvbSBkcml2ZXIgKFNlYW4KPj4gICAg UGF1bCkuCj4+ICAtIFJlbmFtZSB0aGUgZnVuY3Rpb24gYW5kIHN0cnVjdHVyZSBwcmVmaXggInNu NjVkc2k4NiIgdG8gCj4+ICJ0aV9zbl9icmlkZ2UiCj4+ICAgIChTZWFuIFBhdWwgLyBSb2IgSGVy cmluZykuCj4+ICAtIFJlbW92ZSBtb3N0IG9mIHRoZSBoYXJkLWNvZGluZyBhbmQgbW9kaWZpZWQg dGhlIGJyaWRnZSBpbml0IAo+PiBzZXF1ZW5jZQo+PiAgICBiYXNlZCBvbiBjdXJyZW50IG1vZGUg KFNlYW4gUGF1bCkuCj4+ICAtIFJlbW92ZSB0aGUgZXhpc3RpbmcgZnVuY3Rpb24gdG8gcmV0cmll dmUgdGhlIEVESUQgZGF0YSBhbmQKPj4gICAgaW1wbGVtZW50ZWQgdGhpcyBhcyBhbiBpMmNfYWRh cHRlciBhbmQgdXNlIGRybV9nZXRfZWRpZCgpIChTZWFuIAo+PiBQYXVsKS4KPj4gIC0gUmVtb3Zl IHRoZSBkdW1teSBpcnEgaGFuZGxlciBpbXBsZW1lbnRhdGlvbiwgd2lsbCBhZGQgYmFjayB0aGUK Pj4gICAgcHJvcGVyIGlycSBoYW5kbGluZyBsYXRlciAoU2VhbiBQYXVsKS4KPj4gIC0gQ2FwdHVy ZSB0aGUgcmVxdWlyZWQgZW5hYmxlIGdwaW9zIGluIGEgc2luZ2xlIGFycmF5IGJhc2VkIG9uIGR0 IAo+PiBlbnRyeQo+PiAgICBpbnN0ZWFkIG9mIGhhdmluZyBpbmRpdmlkdWFsIGRlc2NyaXB0b3Ig Zm9yIGVhY2ggZ3BpbyAoU2VhbiBQYXVsKS4KPj4gCj4+IENoYW5nZXMgaW4gdjM6Cj4+ICAtIFJl bW92ZSB1c2FnZSBvZiBpcnFfZ3BpbyBhbmQgcmVwbGFjZSBpdCBhcyAiaW50ZXJydXB0cyIgcHJv cGVydHkgCj4+IChSb2IKPj4gICAgSGVycmluZykuCj4+ICAtIFJlbW92ZSB0aGUgdW5uZWNlc3Nh cnkgaGVhZGVyIGZpbGUgaW5jbHVzaW9ucyAoU2VhbiBQYXVsKS4KPj4gIC0gUmVhcnJhbmdlIHRo ZSBoZWFkZXIgZmlsZXMgaW4gYWxwaGFiZXRpY2FsIG9yZGVyIChTZWFuIFBhdWwpLgo+PiAgLSBV c2UgcmVnbWFwIGludGVyZmFjZSB0byBwZXJmb3JtIGkyYyB0cmFuc2FjdGlvbnMuCj4+ICAtIFVw ZGF0ZSBDb3B5cmlnaHQvTGljZW5zZSBmaWVsZCBhbmQgYWRkcmVzcyBvdGhlciByZXZpZXcgY29t bWVudHMKPj4gICAgKEpvcmRhbiBDcm91c2UpLgo+PiAKPj4gQ2hhbmdlcyBpbiB2NDoKPj4gIC0g VXBkYXRlIExpY2Vuc2UvQ29weXJpZ2h0IChTZWFuIFBhdWwpLgo+PiAgLSBBZGQgS2NvbmZpZyBh bmQgTWFrZWZpbGUgY2hhbmdlcyAoU2VhbiBQYXVsKS4KPj4gIC0gRHJvcCBpMmMgZ3BpbyBoYW5k bGluZyBmcm9tIHRoaXMgYnJpZGdlIGRyaXZlciwgc2luY2UgaTJjIHNkYS9zY2wgCj4+IGdwaW9z Cj4+ICAgIHdpbGwgYmUgaGFuZGxlZCBieSBpMmMgbWFzdGVyLgo+PiAgLSBVcGRhdGUgcmVxdWly ZWQgc3VwcGxpZXMgbmFtZXMuCj4+ICAtIFJlbW92ZSB1bm5lY2Vzc2FyeSBnb3RvIHN0YXRlbWVu dHMgKFNlYW4gUGF1bCkuCj4+ICAtIEFkZCBtdXRleCBsb2NrIHRvIHBvd2VyX2N0cmwgQVBJIHRv IGF2b2lkIHJhY2UgY29uZGl0aW9ucyAoU2Vhbgo+PiAgICBQYXVsKS4KPj4gIC0gQWRkIHN1cHBv cnQgdG8gcGFyc2UgcmVmZXJlbmNlIGNsayBmcmVxdWVuY3kgZnJvbSBkdChvcHRpb25hbCkuCj4+ ICAtIFVwZGF0ZSB0aGUgYnJpZGdlIGNoaXAgZW5hYmxlL2Rpc2FibGUgc2VxdWVuY2UuCj4+IAo+ PiBDaGFuZ2VzIGluIHY1Ogo+PiAgLSBGaXhlZCBLYnVpbGQgdGVzdCBzZXJ2aWNlIHJlcG9ydGVk IHdhcm5pbmdzLgo+PiAKPj4gQ2hhbmdlcyBpbiB2NjoKPj4gIC0gVXNlIFBNIHJ1bnRpbWUgYmFz ZWQgcmVmLWNvdW50aW5nIGluc3RlYWQgb2YgbG9jYWwgcmVmX2NvdW50IAo+PiBtZWNoYW5pc20K Pj4gICAgKFN0ZXBoZW4gQm95ZCkuCj4+ICAtIENsZWFuIHVwIHNvbWUgZGVidWcgbG9ncyBhbmQg aW5kZW50YXRpb25zIChTZWFuIFBhdWwpLgo+PiAgLSBTaW1wbGlmeSBkcCByYXRlIGNhbGN1bGF0 aW9uIChTZWFuIFBhdWwpLgo+PiAgLSBBZGQgc3VwcG9ydCB0byBjb25maWd1cmUgcmVmY2xrIGJh c2VkIG9uIGlucHV0IFJFRkNMSyBwaW4gb3IgREFDUC9OCj4+ICAgIHBpbiAoU3RlcGhlbiBCb3lk KS4KPj4gCj4+IENoYW5nZXMgaW4gdjc6Cj4+ICAtIFVzZSBzdGF0aWMgc3VwcGx5IGVudHJpZXMg aW5zdGVhZCBvZiBkeW5hbWljIGFsbG9jYXRpb24gKEFuZHJ6ZWoKPj4gICAgSGFqZGEpLgo+PiAg LSBEZWZlciBicmlkZ2UgZHJpdmVyIHByb2JlIGlmIHBhbmVsIGlzIG5vdCBwcm9iZWQgKEFuZHJ6 ZWogSGFqZGEpLgo+PiAgLSBVcGRhdGUgb2ZfZ3JhcGggQVBJcyBmb3IgY29ycmVjdCBub2RlIHJl ZmVyZW5jZSBtYW5hZ2VtZW50LiAKPj4gKEFuZHJ6ZWoKPj4gICAgSGFqZGEpLgo+PiAgLSBSZW1v dmUgbG9jYWwgZGlzcGxheV9tb2RlIG9iamVjdCAoQW5kcnplaiBIYWpkYSkuCj4+ICAtIFJlbW92 ZSB2ZXJzaW9uIGlkIGNoZWNrIGZ1bmN0aW9uIGZyb20gZHJpdmVyLgo+PiAKPj4gQ2hhbmdlcyBp biB2ODoKPj4gIC0gTW92ZSBkc2kgcmVnaXN0ZXIvYXR0YWNoIGZ1bmN0aW9uIHRvIGJyaWRnZSBk cml2ZXIgcHJvYmUgKEFuZHJ6ZWoKPj4gICAgSGFqZGEpLgo+PiAgLSBJbnRyb2R1Y2UgYSBuZXcg aGVscGVyIGZ1bmN0aW9uIHRvIHdyaXRlIDE2Yml0IHdvcmRzIGludG8gCj4+IGNvbnNlY3V0aXZl Cj4+ICAgIHJlZ2lzdGVycyAoQW5kcnplaiBIYWpkYSkuCj4+ICAtIFJlbW92ZSB1bm5lY2Vzc2Fy eSBtYWNyb3MgKEFuZHJ6ZWogSGFqZGEpLgo+PiAKPj4gQ2hhbmdlcyBpbiB2OToKPj4gIC0gUmVt b3ZlIGRzaSByZWdpc3Rlci9hdHRhY2ggZnJvbSBicmlkZ2UgcHJvYmUsIHNpbmNlIGRzaSBkZXYg Cj4+IHJlZ2lzdGVyCj4+ICAgIGNvbXBsZXRpb24gYWxzbyB3YWl0cyBmb3IgYW55IHBhbmVsIG9y IGJyaWRnZSB0byBnZXQgYWRkZWQuIFRoaXMgCj4+IGNyZWF0ZXMKPj4gICAgZGVhZGxvY2sgc2l0 dWF0aW9uIHdoZW4gYnJpZGdlIGRyaXZlciBjYWxscyBkc2kgZGV2IHJlZ2lzdGVyIGFuZAo+PiAg ICBhdHRhY2ggYmVmb3JlIGJyaWRnZSBhZGQsIGluIGl0cyBwcm9iZSBmdW5jdGlvbi4KPj4gIC0g Rml4IGlzc3VlcyBmYWNlZCBkdXJpbmcgdGVzdGluZyBvZiBicmlkZ2UgZHJpdmVyIG9uIGFjdHVh bCBIVy4KPj4gIC0gUmVtb3ZlIHVubmVjZXNzYXJ5IGluaXRpYWxpemF0aW9ucyAoU3RlcGhlbiBC b3lkKS4KPj4gIC0gVXNlIGxvY2FsIHJlZmNsayBsdXQgc2l6ZSBpbnN0ZWFkIG9mIGdsb2JhbCBt YWNybyAoU2VhbiBQYXVsKS4KPj4gCj4+IENoYW5nZXMgaW4gdjEwOgo+PiAgLSBVc2UgcmVmY2xr IHRvIGRldGVybWluZSBpZiBjb250aW51b3VzIGRzaSBjbG9jayBpcyBuZWVkZWQgb3Igbm90Lgo+ PiAKPj4gQ2hhbmdlcyBpbiB2MTE6Cj4+ICAtIFJlYWQgRFBQTExfU1JDIHJlZ2lzdGVyIHRvIGRl dGVybWluZSBjb250aW51b3VzIGNsb2NrIGluc3RlYWQgb2YKPj4gICAgdXNpbmcgcmVmY2xrIGhh bmRsZSAoU3RlcGhlbiBCb3lkKS4KPj4gCj4+IFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGFuZGEg PHNwYW5kYUBjb2RlYXVyb3JhLm9yZz4KPj4gLS0tCj4+ICBkcml2ZXJzL2dwdS9kcm0vYnJpZGdl L0tjb25maWcgICAgICAgIHwgICA5ICsKPj4gIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZp bGUgICAgICAgfCAgIDEgKwo+PiAgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS90aS1zbjY1ZHNpODYu YyB8IDY5NiAKPj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+PiAgMyBmaWxl cyBjaGFuZ2VkLCA3MDYgaW5zZXJ0aW9ucygrKQo+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvZ3B1L2RybS9icmlkZ2UvdGktc242NWRzaTg2LmMKPj4gCj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYnJpZGdlL0tjb25maWcgCj4+IGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9L Y29uZmlnCj4+IGluZGV4IDNiOTlkNWEuLjgxNTMxNTAgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9icmlkZ2UvS2NvbmZpZwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tj b25maWcKPj4gQEAgLTEwOCw2ICsxMDgsMTUgQEAgY29uZmlnIERSTV9USV9URlA0MTAKPj4gIAkt LS1oZWxwLS0tCj4+ICAJICBUZXhhcyBJbnN0cnVtZW50cyBURlA0MTAgRFZJL0hETUkgVHJhbnNt aXR0ZXIgZHJpdmVyCj4+IAo+PiArY29uZmlnIERSTV9USV9TTjY1RFNJODYKPj4gKwl0cmlzdGF0 ZSAiVEkgU042NURTSTg2IERTSSB0byBlRFAgYnJpZGdlIgo+PiArCWRlcGVuZHMgb24gT0YKPj4g KwlzZWxlY3QgRFJNX0tNU19IRUxQRVIKPj4gKwlzZWxlY3QgUkVHTUFQX0kyQwo+PiArCXNlbGVj dCBEUk1fUEFORUwKPj4gKwktLS1oZWxwLS0tCj4+ICsJICBUZXhhcyBJbnN0cnVtZW50cyBTTjY1 RFNJODYgRFNJIHRvIGVEUCBCcmlkZ2UgZHJpdmVyCj4+ICsKPj4gIHNvdXJjZSAiZHJpdmVycy9n cHUvZHJtL2JyaWRnZS9hbmFsb2dpeC9LY29uZmlnIgo+PiAKPj4gIHNvdXJjZSAiZHJpdmVycy9n cHUvZHJtL2JyaWRnZS9hZHY3NTExL0tjb25maWciCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYnJpZGdlL01ha2VmaWxlIAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZp bGUKPj4gaW5kZXggMzczZWIyOC4uYTdjYTAwMCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2JyaWRnZS9NYWtlZmlsZQo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL01ha2Vm aWxlCj4+IEBAIC0xMSw1ICsxMSw2IEBAIG9iai0kKENPTkZJR19EUk1fU0lJOTIzNCkgKz0gc2lp OTIzNC5vCj4+ICBvYmotJChDT05GSUdfRFJNX1RPU0hJQkFfVEMzNTg3NjcpICs9IHRjMzU4NzY3 Lm8KPj4gIG9iai0kKENPTkZJR19EUk1fQU5BTE9HSVhfRFApICs9IGFuYWxvZ2l4Lwo+PiAgb2Jq LSQoQ09ORklHX0RSTV9JMkNfQURWNzUxMSkgKz0gYWR2NzUxMS8KPj4gK29iai0kKENPTkZJR19E Uk1fVElfU042NURTSTg2KSArPSB0aS1zbjY1ZHNpODYubwo+PiAgb2JqLSQoQ09ORklHX0RSTV9U SV9URlA0MTApICs9IHRpLXRmcDQxMC5vCj4+ICBvYmoteSArPSBzeW5vcHN5cy8KPj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvdGktc242NWRzaTg2LmMgCj4+IGIvZHJpdmVy cy9ncHUvZHJtL2JyaWRnZS90aS1zbjY1ZHNpODYuYwo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ PiBpbmRleCAwMDAwMDAwLi41NDczNDU2Cj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2JyaWRnZS90aS1zbjY1ZHNpODYuYwo+PiBAQCAtMCwwICsxLDY5NiBAQAo+PiAr Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPj4gKy8qCj4+ICsgKiBDb3B5cmln aHQgKGMpIDIwMTgsIFRoZSBMaW51eCBGb3VuZGF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ PiArICovCj4+ICsKPj4gKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+PiArI2luY2x1ZGUgPGRybS9k cm1fYXRvbWljLmg+Cj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+Cj4+ICsj aW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgo+PiArI2luY2x1ZGUgPGRybS9kcm1fbWlw aV9kc2kuaD4KPj4gKyNpbmNsdWRlIDxkcm0vZHJtX29mLmg+Cj4+ICsjaW5jbHVkZSA8ZHJtL2Ry bV9wYW5lbC5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+PiArI2luY2x1ZGUgPGxpbnV4 L2dwaW8vY29uc3VtZXIuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9pMmMuaD4KPj4gKyNpbmNsdWRl IDxsaW51eC9vZl9ncmFwaC5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4KPj4g KyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9yZWd1bGF0b3Iv Y29uc3VtZXIuaD4KPj4gKwo+PiArLyogTGluayBUcmFpbmluZyBzcGVjaWZpYyByZWdpc3RlcnMg Ki8KPj4gKyNkZWZpbmUgU05fREVWSUNFX1JFVl9SRUcJCQkweDA4Cj4+ICsjZGVmaW5lIFNOX0hQ RF9ESVNBQkxFX1JFRwkJCTB4NUMKPj4gKyNkZWZpbmUgU05fRFBQTExfU1JDX1JFRwkJCTB4MEEK Pj4gKyNkZWZpbmUgU05fRFNJX0xBTkVTX1JFRwkJCTB4MTAKPj4gKyNkZWZpbmUgU05fRFNJQV9D TEtfRlJFUV9SRUcJCQkweDEyCj4+ICsjZGVmaW5lIFNOX0VOSF9GUkFNRV9SRUcJCQkweDVBCj4+ ICsjZGVmaW5lIFNOX1NTQ19DT05GSUdfUkVHCQkJMHg5Mwo+PiArI2RlZmluZSBTTl9EQVRBUkFU RV9DT05GSUdfUkVHCQkJMHg5NAo+PiArI2RlZmluZSBTTl9QTExfRU5BQkxFX1JFRwkJCTB4MEQK Pj4gKyNkZWZpbmUgU05fU0NSQU1CTEVfQ09ORklHX1JFRwkJCTB4OTUKPj4gKyNkZWZpbmUgU05f QVVYX1dEQVRBMF9SRUcJCQkweDY0Cj4+ICsjZGVmaW5lIFNOX0FVWF9BRERSXzE5XzE2X1JFRwkJ CTB4NzQKPj4gKyNkZWZpbmUgU05fQVVYX0FERFJfMTVfOF9SRUcJCQkweDc1Cj4+ICsjZGVmaW5l IFNOX0FVWF9BRERSXzdfMF9SRUcJCQkweDc2Cj4+ICsjZGVmaW5lIFNOX0FVWF9MRU5HVEhfUkVH CQkJMHg3Nwo+PiArI2RlZmluZSBTTl9BVVhfQ01EX1JFRwkJCQkweDc4Cj4+ICsjZGVmaW5lIFNO X01MX1RYX01PREVfUkVHCQkJMHg5Ngo+PiArLyogdmlkZW8gY29uZmlnIHNwZWNpZmljIHJlZ2lz dGVycyAqLwo+PiArI2RlZmluZSBTTl9DSEFfQUNUSVZFX0xJTkVfTEVOR1RIX0xPV19SRUcJMHgy MAo+PiArI2RlZmluZSBTTl9DSEFfVkVSVElDQUxfRElTUExBWV9TSVpFX0xPV19SRUcJMHgyNAo+ PiArI2RlZmluZSBTTl9DSEFfSFNZTkNfUFVMU0VfV0lEVEhfTE9XX1JFRwkweDJDCj4+ICsjZGVm aW5lIFNOX0NIQV9IU1lOQ19QVUxTRV9XSURUSF9ISUdIX1JFRwkweDJECj4+ICsjZGVmaW5lIFNO X0NIQV9WU1lOQ19QVUxTRV9XSURUSF9MT1dfUkVHCTB4MzAKPj4gKyNkZWZpbmUgU05fQ0hBX1ZT WU5DX1BVTFNFX1dJRFRIX0hJR0hfUkVHCTB4MzEKPj4gKyNkZWZpbmUgU05fQ0hBX0hPUklaT05U QUxfQkFDS19QT1JDSF9SRUcJMHgzNAo+PiArI2RlZmluZSBTTl9DSEFfVkVSVElDQUxfQkFDS19Q T1JDSF9SRUcJCTB4MzYKPj4gKyNkZWZpbmUgU05fQ0hBX0hPUklaT05UQUxfRlJPTlRfUE9SQ0hf UkVHCTB4MzgKPj4gKyNkZWZpbmUgU05fQ0hBX1ZFUlRJQ0FMX0ZST05UX1BPUkNIX1JFRwkJMHgz QQo+PiArI2RlZmluZSBTTl9EQVRBX0ZPUk1BVF9SRUcJCQkweDVCCj4+ICsKPj4gKyNkZWZpbmUg TUlOX0RTSV9DTEtfRlJFUV9NSFoJNDAKPj4gKwo+PiArLyogZnVkZ2UgZmFjdG9yIHJlcXVpcmVk IHRvIGFjY291bnQgZm9yIDhiLzEwYiBlbmNvZGluZyAqLwo+PiArI2RlZmluZSBEUF9DTEtfRlVE R0VfTlVNCTEwCj4+ICsjZGVmaW5lIERQX0NMS19GVURHRV9ERU4JOAo+PiArCj4+ICsjZGVmaW5l IERQUExMX0NMS19TUkNfUkVGQ0xLCTAKPj4gKyNkZWZpbmUgRFBQTExfQ0xLX1NSQ19EU0lDTEsJ MQo+PiArCj4+ICsjZGVmaW5lIFNOX1JFRkNMS19GUkVRX09GRlNFVAkxCj4+ICsjZGVmaW5lIFNO X0RTSUFfTEFORV9PRkZTRVQJMwo+PiArI2RlZmluZSBTTl9EUF9MQU5FX09GRlNFVAk0Cj4+ICsj ZGVmaW5lIFNOX0RQX0RBVEFfUkFURV9PRkZTRVQJNQo+PiArI2RlZmluZSBTTl9TWU5DX1BPTEFS SVRZX09GRlNFVAk3Cj4+ICsKPj4gKyNkZWZpbmUgU05fRU5BQkxFX1ZJRF9TVFJFQU1fQklUCUJJ VCgzKQo+PiArI2RlZmluZSBTTl9SRUZDTEtfRlJFUV9CSVRTCQkoQklUKDMpIHwgQklUKDIpIHwg QklUKDEpKQo+PiArI2RlZmluZSBTTl9EU0lBX05VTV9MQU5FU19CSVRTCQkoQklUKDQpIHwgQklU KDMpKQo+PiArI2RlZmluZSBTTl9EUF9OVU1fTEFORVNfQklUUwkJKEJJVCg1KSB8IEJJVCg0KSkK Pj4gKyNkZWZpbmUgU05fRFBfREFUQV9SQVRFX0JJVFMJCShCSVQoNykgfCBCSVQoNikgfCBCSVQo NSkpCj4gCj4gRm9yIGNvbnRpZ3VvdXMgYml0bWFza3MgeW91IGNvdWxkIHVzZSBHRU5NQVNLKGgs IGwpLCBidXQgaXQgaXMgdXAgdG8gCj4geW91LgpPayB3aWxsIHVwZGF0ZSBpbiBuZXh0IHBhdGNo Lgo+IAo+PiArI2RlZmluZSBTTl9IUERfRElTQUJMRV9CSVQJCUJJVCgwKQo+PiArCj4+ICsjZGVm aW5lIFNOX1JFR1VMQVRPUl9TVVBQTFlfTlVNCQk0Cj4+ICsKPj4gK3N0cnVjdCB0aV9zbl9icmlk Z2Ugewo+PiArCXN0cnVjdCBkZXZpY2UJCQkqZGV2Owo+PiArCXN0cnVjdCByZWdtYXAJCQkqcmVn bWFwOwo+PiArCXN0cnVjdCBkcm1fYnJpZGdlCQlicmlkZ2U7Cj4+ICsJc3RydWN0IGRybV9jb25u ZWN0b3IJCWNvbm5lY3RvcjsKPj4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUJCSpob3N0X25vZGU7Cj4+ ICsJc3RydWN0IG1pcGlfZHNpX2RldmljZQkJKmRzaTsKPj4gKwlzdHJ1Y3QgY2xrCQkJKnJlZmNs azsKPj4gKwlzdHJ1Y3QgZHJtX3BhbmVsCQkqcGFuZWw7Cj4+ICsJc3RydWN0IGdwaW9fZGVzYwkJ KmVuYWJsZV9ncGlvOwo+PiArCXN0cnVjdCByZWd1bGF0b3JfYnVsa19kYXRhCXN1cHBsaWVzW1NO X1JFR1VMQVRPUl9TVVBQTFlfTlVNXTsKPj4gKwlzdHJ1Y3QgaTJjX2FkYXB0ZXIJCSpkZGM7Cj4+ ICt9Owo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9yYW5nZSB0aV9zbl9icmlk Z2Vfdm9sYXRpbGVfcmFuZ2VzW10gPSB7Cj4+ICsJeyAucmFuZ2VfbWluID0gMCwgLnJhbmdlX21h eCA9IDB4RkYgfSwKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2Fj Y2Vzc190YWJsZSB0aV9zbl9icmlkZ2Vfdm9sYXRpbGVfdGFibGUgPSAKPj4gewo+PiArCS55ZXNf cmFuZ2VzID0gdGlfc25fYnJpZGdlX3ZvbGF0aWxlX3JhbmdlcywKPj4gKwkubl95ZXNfcmFuZ2Vz ID0gQVJSQVlfU0laRSh0aV9zbl9icmlkZ2Vfdm9sYXRpbGVfcmFuZ2VzKSwKPj4gK307Cj4+ICsK Pj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyB0aV9zbl9icmlkZ2VfcmVnbWFw X2NvbmZpZyA9IHsKPj4gKwkucmVnX2JpdHMgPSA4LAo+PiArCS52YWxfYml0cyA9IDgsCj4+ICsJ LnZvbGF0aWxlX3RhYmxlID0gJnRpX3NuX2JyaWRnZV92b2xhdGlsZV90YWJsZSwKPj4gKwkuY2Fj aGVfdHlwZSA9IFJFR0NBQ0hFX05PTkUsCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgdm9pZCB0aV9z bl9icmlkZ2Vfd3JpdGVfdTE2KHN0cnVjdCB0aV9zbl9icmlkZ2UgKnBkYXRhLAo+PiArCQkJCSAg IHVuc2lnbmVkIGludCByZWcsIHUxNiB2YWwpCj4+ICt7Cj4+ICsJcmVnbWFwX3dyaXRlKHBkYXRh LT5yZWdtYXAsIHJlZywgdmFsICYgMHhGRik7Cj4+ICsJcmVnbWFwX3dyaXRlKHBkYXRhLT5yZWdt YXAsIHJlZyArIDEsIHZhbCA+PiA4KTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCBfX21heWJl X3VudXNlZCB0aV9zbl9icmlkZ2VfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKPj4gK3sKPj4g KwlzdHJ1Y3QgdGlfc25fYnJpZGdlICpwZGF0YSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+PiAr CWludCByZXQ7Cj4+ICsKPj4gKwlyZXQgPSByZWd1bGF0b3JfYnVsa19lbmFibGUoU05fUkVHVUxB VE9SX1NVUFBMWV9OVU0sIAo+PiBwZGF0YS0+c3VwcGxpZXMpOwo+PiArCWlmIChyZXQpIHsKPj4g KwkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gZW5hYmxlIHN1cHBsaWVzICVkXG4iLCByZXQpOwo+PiAr CQlyZXR1cm4gcmV0Owo+PiArCX0KPj4gKwo+PiArCWdwaW9kX3NldF92YWx1ZShwZGF0YS0+ZW5h YmxlX2dwaW8sIDEpOwo+PiArCj4+ICsJcmV0dXJuIHJldDsKPj4gK30KPj4gKwo+PiArc3RhdGlj IGludCBfX21heWJlX3VudXNlZCB0aV9zbl9icmlkZ2Vfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpk ZXYpCj4+ICt7Cj4+ICsJc3RydWN0IHRpX3NuX2JyaWRnZSAqcGRhdGEgPSBkZXZfZ2V0X2RydmRh dGEoZGV2KTsKPj4gKwlpbnQgcmV0Owo+PiArCj4+ICsJZ3Bpb2Rfc2V0X3ZhbHVlKHBkYXRhLT5l bmFibGVfZ3BpbywgMCk7Cj4+ICsKPj4gKwlyZXQgPSByZWd1bGF0b3JfYnVsa19kaXNhYmxlKFNO X1JFR1VMQVRPUl9TVVBQTFlfTlVNLCAKPj4gcGRhdGEtPnN1cHBsaWVzKTsKPj4gKwlpZiAocmV0 KQo+PiArCQlEUk1fRVJST1IoImZhaWxlZCB0byBkaXNhYmxlIHN1cHBsaWVzICVkXG4iLCByZXQp Owo+PiArCj4+ICsJcmV0dXJuIHJldDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGNvbnN0IHN0cnVj dCBkZXZfcG1fb3BzIHRpX3NuX2JyaWRnZV9wbV9vcHMgPSB7Cj4+ICsJU0VUX1JVTlRJTUVfUE1f T1BTKHRpX3NuX2JyaWRnZV9zdXNwZW5kLCB0aV9zbl9icmlkZ2VfcmVzdW1lLCBOVUxMKQo+PiAr fTsKPj4gKwo+PiArLyogQ29ubmVjdG9yIGZ1bmNzICovCj4+ICtzdGF0aWMgc3RydWN0IHRpX3Nu X2JyaWRnZSAqCj4+ICtjb25uZWN0b3JfdG9fdGlfc25fYnJpZGdlKHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IpCj4+ICt7Cj4+ICsJcmV0dXJuIGNvbnRhaW5lcl9vZihjb25uZWN0b3Is IHN0cnVjdCB0aV9zbl9icmlkZ2UsIGNvbm5lY3Rvcik7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBp bnQgdGlfc25fYnJpZGdlX2Nvbm5lY3Rvcl9nZXRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3Ig Cj4+ICpjb25uZWN0b3IpCj4+ICt7Cj4+ICsJc3RydWN0IHRpX3NuX2JyaWRnZSAqcGRhdGEgPSBj b25uZWN0b3JfdG9fdGlfc25fYnJpZGdlKGNvbm5lY3Rvcik7Cj4+ICsJc3RydWN0IGVkaWQgKmVk aWQ7Cj4+ICsJdTMyIG51bV9tb2RlczsKPj4gKwo+PiArCWlmIChwZGF0YS0+cGFuZWwpIHsKPj4g KwkJRFJNX0RFQlVHX0tNUygiZ2V0IG1vZGUgZnJvbSBjb25uZWN0ZWQgZHJtX3BhbmVsXG4iKTsK Pj4gKwkJcmV0dXJuIGRybV9wYW5lbF9nZXRfbW9kZXMocGRhdGEtPnBhbmVsKTsKPj4gKwl9Cj4+ ICsKPj4gKwlpZiAoIXBkYXRhLT5kZGMpCj4+ICsJCXJldHVybiAwOwo+IEkgdGhpbmsgaXQgc2hv dWxkIG5vdCBoYXBwZW4sIGllIHByb2JlIHNob3VsZCBmYWlsIGlmIGJvdGggcGFuZWwgYW5kIAo+ IGRkYwo+IGFyZSBhYnNlbnQuCk9rIGkgd2lsbCByZW1vdmUgdGhpcyBjaGVjayBpbiBuZXh0IHBh dGNoc2V0Lgo+PiArCj4+ICsJcG1fcnVudGltZV9nZXRfc3luYyhwZGF0YS0+ZGV2KTsKPj4gKwll ZGlkID0gZHJtX2dldF9lZGlkKGNvbm5lY3RvciwgcGRhdGEtPmRkYyk7Cj4+ICsJcG1fcnVudGlt ZV9wdXRfc3luYyhwZGF0YS0+ZGV2KTsKPiAKPiBNaW5vciBuaXQsIHlvdSBjYW4gdXNlIGhlcmUg cG1fcnVudGltZV9wdXQsIEkgZ3Vlc3MgeW91IGRvIG5vdCBjYXJlIAo+IHdoZW4KPiBpdCB3aWxs IGJlIHR1cm5lZCBvZmYuCgpPay4KPiAKPj4gKwlpZiAoIWVkaWQpCj4+ICsJCXJldHVybiAwOwo+ PiArCj4+ICsJZHJtX21vZGVfY29ubmVjdG9yX3VwZGF0ZV9lZGlkX3Byb3BlcnR5KGNvbm5lY3Rv ciwgZWRpZCk7Cj4+ICsJbnVtX21vZGVzID0gZHJtX2FkZF9lZGlkX21vZGVzKGNvbm5lY3Rvciwg ZWRpZCk7Cj4+ICsJa2ZyZWUoZWRpZCk7Cj4+ICsKPj4gKwlyZXR1cm4gbnVtX21vZGVzOwo+PiAr fQo+PiArCj4+ICtzdGF0aWMgZW51bSBkcm1fbW9kZV9zdGF0dXMKPj4gK3RpX3NuX2JyaWRnZV9j b25uZWN0b3JfbW9kZV92YWxpZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+PiAr CQkJICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKPj4gK3sKPj4gKwkvKiBtYXhp bXVtIHN1cHBvcnRlZCByZXNvbHV0aW9uIGlzIDRLIGF0IDYwIGZwcyAqLwo+PiArCWlmIChtb2Rl LT5jbG9jayA+IDU5NDAwMCkKPj4gKwkJcmV0dXJuIE1PREVfQ0xPQ0tfSElHSDsKPj4gKwo+PiAr CXJldHVybiBNT0RFX09LOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgc3RydWN0IGRybV9jb25uZWN0 b3JfaGVscGVyX2Z1bmNzIAo+PiB0aV9zbl9icmlkZ2VfY29ubmVjdG9yX2hlbHBlcl9mdW5jcyA9 IHsKPj4gKwkuZ2V0X21vZGVzID0gdGlfc25fYnJpZGdlX2Nvbm5lY3Rvcl9nZXRfbW9kZXMsCj4+ ICsJLm1vZGVfdmFsaWQgPSB0aV9zbl9icmlkZ2VfY29ubmVjdG9yX21vZGVfdmFsaWQsCj4+ICt9 Owo+PiArCj4+ICtzdGF0aWMgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cwo+PiArdGlfc25fYnJp ZGdlX2Nvbm5lY3Rvcl9kZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgYm9v bCAKPj4gZm9yY2UpCj4+ICt7Cj4+ICsJc3RydWN0IHRpX3NuX2JyaWRnZSAqcGRhdGEgPSBjb25u ZWN0b3JfdG9fdGlfc25fYnJpZGdlKGNvbm5lY3Rvcik7Cj4+ICsKPj4gKwkvKioKPj4gKwkgKiBU T0RPOiBDdXJyZW50bHkgaWYgZHJtX3BhbmVsIGlzIHByZXNlbnQsIHRoZW4gYWx3YXlzCj4+ICsJ ICogcmV0dXJuIHRoZSBzdGF0dXMgYXMgY29ubmVjdGVkLiBOZWVkIHRvIGFkZCBzdXBwb3J0IHRv IGRldGVjdAo+PiArCSAqIGRldmljZSBzdGF0ZSBmb3Igbm8gcGFuZWwoaG90IHBsdWdnYWJsZSkg c2NlbmFyaW9zLgo+PiArCSAqLwo+PiArCWlmIChwZGF0YS0+cGFuZWwpCj4+ICsJCXJldHVybiBj b25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZDsKPj4gKwllbHNlCj4+ICsJCXJldHVybiBjb25uZWN0 b3Jfc3RhdHVzX3Vua25vd247Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJt X2Nvbm5lY3Rvcl9mdW5jcyB0aV9zbl9icmlkZ2VfY29ubmVjdG9yX2Z1bmNzIAo+PiA9IHsKPj4g KwkuZmlsbF9tb2RlcyA9IGRybV9oZWxwZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2RlcywK Pj4gKwkuZGV0ZWN0ID0gdGlfc25fYnJpZGdlX2Nvbm5lY3Rvcl9kZXRlY3QsCj4+ICsJLmRlc3Ry b3kgPSBkcm1fY29ubmVjdG9yX2NsZWFudXAsCj4+ICsJLnJlc2V0ID0gZHJtX2F0b21pY19oZWxw ZXJfY29ubmVjdG9yX3Jlc2V0LAo+PiArCS5hdG9taWNfZHVwbGljYXRlX3N0YXRlID0gCj4+IGRy bV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kdXBsaWNhdGVfc3RhdGUsCj4+ICsJLmF0b21pY19k ZXN0cm95X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2Rlc3Ryb3lfc3RhdGUs Cj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgc3RydWN0IHRpX3NuX2JyaWRnZSAqYnJpZGdlX3RvX3Rp X3NuX2JyaWRnZShzdHJ1Y3QgZHJtX2JyaWRnZSAKPj4gKmJyaWRnZSkKPj4gK3sKPj4gKwlyZXR1 cm4gY29udGFpbmVyX29mKGJyaWRnZSwgc3RydWN0IHRpX3NuX2JyaWRnZSwgYnJpZGdlKTsKPj4g K30KPj4gKwo+PiArc3RhdGljIGludCB0aV9zbl9icmlkZ2VfcGFyc2VfcmVndWxhdG9ycyhzdHJ1 Y3QgdGlfc25fYnJpZGdlICpwZGF0YSkKPj4gK3sKPj4gKwl1bnNpZ25lZCBpbnQgaTsKPj4gKwlj b25zdCBjaGFyICogY29uc3QgdGlfc25fYnJpZGdlX3N1cHBseV9uYW1lc1tdID0gewo+PiArCQki dmNjYSIsICJ2Y2MiLCAidmNjaW8iLCAidnBsbCIsCj4+ICsJfTsKPj4gKwo+PiArCWZvciAoaSA9 IDA7IGkgPCBTTl9SRUdVTEFUT1JfU1VQUExZX05VTTsgaSsrKQo+PiArCQlwZGF0YS0+c3VwcGxp ZXNbaV0uc3VwcGx5ID0gdGlfc25fYnJpZGdlX3N1cHBseV9uYW1lc1tpXTsKPj4gKwo+PiArCXJl dHVybiBkZXZtX3JlZ3VsYXRvcl9idWxrX2dldChwZGF0YS0+ZGV2LCBTTl9SRUdVTEFUT1JfU1VQ UExZX05VTSwKPj4gKwkJCQkgICAgICAgcGRhdGEtPnN1cHBsaWVzKTsKPj4gK30KPj4gKwo+PiAr c3RhdGljIGludCB0aV9zbl9icmlkZ2VfYXR0YWNoKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2Up Cj4+ICt7Cj4+ICsJaW50IHJldCwgdmFsOwo+PiArCXN0cnVjdCB0aV9zbl9icmlkZ2UgKnBkYXRh ID0gYnJpZGdlX3RvX3RpX3NuX2JyaWRnZShicmlkZ2UpOwo+PiArCXN0cnVjdCBtaXBpX2RzaV9o b3N0ICpob3N0Owo+PiArCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaTsKPj4gKwljb25zdCBz dHJ1Y3QgbWlwaV9kc2lfZGV2aWNlX2luZm8gaW5mbyA9IHsgLnR5cGUgPSAidGlfc25fYnJpZGdl IiwKPj4gKwkJCQkJCSAgIC5jaGFubmVsID0gMCwKPj4gKwkJCQkJCSAgIC5ub2RlID0gTlVMTCwK Pj4gKwkJCQkJCSB9Owo+PiArCj4+ICsJcmV0ID0gZHJtX2Nvbm5lY3Rvcl9pbml0KGJyaWRnZS0+ ZGV2LCAmcGRhdGEtPmNvbm5lY3RvciwKPj4gKwkJCQkgJnRpX3NuX2JyaWRnZV9jb25uZWN0b3Jf ZnVuY3MsCj4+ICsJCQkJIERSTV9NT0RFX0NPTk5FQ1RPUl9lRFApOwo+PiArCWlmIChyZXQpIHsK Pj4gKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBjb25uZWN0b3Igd2l0aCBkcm1c biIpOwo+PiArCQlyZXR1cm4gcmV0Owo+PiArCX0KPj4gKwo+PiArCWRybV9jb25uZWN0b3JfaGVs cGVyX2FkZCgmcGRhdGEtPmNvbm5lY3RvciwKPj4gKwkJCQkgJnRpX3NuX2JyaWRnZV9jb25uZWN0 b3JfaGVscGVyX2Z1bmNzKTsKPj4gKwlkcm1fbW9kZV9jb25uZWN0b3JfYXR0YWNoX2VuY29kZXIo JnBkYXRhLT5jb25uZWN0b3IsIAo+PiBicmlkZ2UtPmVuY29kZXIpOwo+PiArCj4+ICsJaG9zdCA9 IG9mX2ZpbmRfbWlwaV9kc2lfaG9zdF9ieV9ub2RlKHBkYXRhLT5ob3N0X25vZGUpOwo+PiArCWlm ICghaG9zdCkgewo+PiArCQlEUk1fRVJST1IoImZhaWxlZCB0byBmaW5kIGRzaSBob3N0XG4iKTsK Pj4gKwkJcmV0ID0gLUVOT0RFVjsKPj4gKwkJZ290byBlcnJfZHNpX2hvc3Q7Cj4+ICsJfQo+IAo+ IEluIGNhc2Ugb2YgbGF0ZSBob3N0IHByb2JpbmcgaXQgd2lsbCBmYWlsLCBpbnN0ZWFkIG9mIHBy b2JlIGRlZmVycmluZy4KPiBJZiBJIHJlbWVtYmVyIEkgaGF2ZSBhc2tlZCB5b3UgdG8gbW92ZSB0 aGlzIGNvZGUgdG8gcHJvYmUsIGFzIGRlZmVycmluZwo+IGlzIG9ubHkgcG9zc2libGUgdGhlcmUu Cj4gCgpJIG1vdmVkIHRoZSB0aGlzIGNvZGUgdG8gcHJvYmUsIGFuZCByZXR1cm5lZCBwcm9iZSBk ZWZlciBpZiBob3N0IG5vdCAKZm91bmQgaW4gcGF0Y2hzZXQgdjkuClRoaXMgY2F1c2VkIGEgZGVh ZCBsb2NrIHdoZW4gaSB3YXMgdGVzdGluZyBvbiBhY3R1YWwgSFcuIFRoZSByZWFzb24gCmJlaW5n LApEU0kgaG9zdCBwcm9iZSBjb21wbGV0aW9uIHdhcyB3YWl0aW5nIGZvciBhbnkgZHJtX3BhbmVs L2RybV9icmlkZ2UgdG8gCmdldAphZGRlZCB0byB0aGUgZ2xvYmFsIHBhbmVsL2JyaWRnZSBsaXN0 LCBhbmQgaGVyZSBpbiBicmlkZ2UgZHJpdmVyIHdlIGFyZSAKd2FpdGluZyBmb3IKRFNJIGhvc3Qg cHJvYmUgY29tcGxldGlvbiB0byBoYXBwZW4gc28gdGhhdCBob3N0IG5vZGUgZ2V0cyBhZGRlZCB0 byB0aGUgCmdsb2JhbCBob3N0IGxpc3QuCkFsc28gaSBmb3VuZCBvdGhlciB1cC1zdHJlYW1lZCBi cmlkZ2UgZHJpdmVycyBhcmUgYWxzbyBkb2luZyB0aGUgc2FtZSBpbiAKYnJpZGdlX2F0dGFjaC4K Cj4+ICsKPj4gKwlkc2kgPSBtaXBpX2RzaV9kZXZpY2VfcmVnaXN0ZXJfZnVsbChob3N0LCAmaW5m byk7Cj4+ICsJaWYgKElTX0VSUihkc2kpKSB7Cj4+ICsJCURSTV9FUlJPUigiZmFpbGVkIHRvIGNy ZWF0ZSBkc2kgZGV2aWNlXG4iKTsKPj4gKwkJcmV0ID0gUFRSX0VSUihkc2kpOwo+PiArCQlnb3Rv IGVycl9kc2lfaG9zdDsKPj4gKwl9Cj4+ICsKPj4gKwkvKiBUT0RPOiBzZXR0aW5nIHRvIDQgbGFu ZXMgYWx3YXlzIGZvciBub3cgKi8KPj4gKwlkc2ktPmxhbmVzID0gNDsKPj4gKwlkc2ktPmZvcm1h dCA9IE1JUElfRFNJX0ZNVF9SR0I4ODg7Cj4+ICsJZHNpLT5tb2RlX2ZsYWdzID0gTUlQSV9EU0lf TU9ERV9WSURFTyB8IAo+PiBNSVBJX0RTSV9NT0RFX1ZJREVPX1NZTkNfUFVMU0UgfAo+PiArCQkJ ICBNSVBJX0RTSV9NT0RFX0VPVF9QQUNLRVQgfCBNSVBJX0RTSV9NT0RFX1ZJREVPX0hTRTsKPj4g Kwo+PiArCS8qIGNoZWNrIGlmIGNvbnRpbnVvdXMgZHNpIGNsb2NrIGlzIHJlcXVpcmVkIG9yIG5v dCAqLwo+PiArCXBtX3J1bnRpbWVfZ2V0X3N5bmMocGRhdGEtPmRldik7Cj4+ICsJcmVnbWFwX3Jl YWQocGRhdGEtPnJlZ21hcCwgU05fRFBQTExfU1JDX1JFRywgJnZhbCk7Cj4+ICsJcG1fcnVudGlt ZV9wdXRfc3luYyhwZGF0YS0+ZGV2KTsKPj4gKwlpZiAoISh2YWwgJiBEUFBMTF9DTEtfU1JDX0RT SUNMSykpCj4+ICsJCWRzaS0+bW9kZV9mbGFncyB8PSBNSVBJX0RTSV9DTE9DS19OT05fQ09OVElO VU9VUzsKPj4gKwo+PiArCXJldCA9IG1pcGlfZHNpX2F0dGFjaChkc2kpOwo+PiArCWlmIChyZXQg PCAwKSB7Cj4+ICsJCURSTV9FUlJPUigiZmFpbGVkIHRvIGF0dGFjaCBkc2kgdG8gaG9zdFxuIik7 Cj4+ICsJCWdvdG8gZXJyX2RzaV9hdHRhY2g7Cj4+ICsJfQo+PiArCXBkYXRhLT5kc2kgPSBkc2k7 Cj4+ICsKPj4gKwkvKiBhdHRhY2ggcGFuZWwgdG8gYnJpZGdlICovCj4+ICsJaWYgKHBkYXRhLT5w YW5lbCkKPj4gKwkJZHJtX3BhbmVsX2F0dGFjaChwZGF0YS0+cGFuZWwsICZwZGF0YS0+Y29ubmVj dG9yKTsKPj4gKwo+PiArCXJldHVybiAwOwo+PiArCj4+ICtlcnJfZHNpX2F0dGFjaDoKPj4gKwlt aXBpX2RzaV9kZXZpY2VfdW5yZWdpc3Rlcihkc2kpOwo+PiArZXJyX2RzaV9ob3N0Ogo+PiArCWRy bV9jb25uZWN0b3JfY2xlYW51cCgmcGRhdGEtPmNvbm5lY3Rvcik7Cj4+ICsJcmV0dXJuIHJldDsK Pj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgdGlfc25fYnJpZGdlX2Rpc2FibGUoc3RydWN0IGRy bV9icmlkZ2UgKmJyaWRnZSkKPj4gK3sKPj4gKwlzdHJ1Y3QgdGlfc25fYnJpZGdlICpwZGF0YSA9 IGJyaWRnZV90b190aV9zbl9icmlkZ2UoYnJpZGdlKTsKPj4gKwo+PiArCWlmIChwZGF0YS0+cGFu ZWwpIHsKPj4gKwkJZHJtX3BhbmVsX2Rpc2FibGUocGRhdGEtPnBhbmVsKTsKPj4gKwkJZHJtX3Bh bmVsX3VucHJlcGFyZShwZGF0YS0+cGFuZWwpOwo+PiArCX0KPj4gKwo+PiArCS8qIGRpc2FibGUg dmlkZW8gc3RyZWFtICovCj4+ICsJcmVnbWFwX3VwZGF0ZV9iaXRzKHBkYXRhLT5yZWdtYXAsIFNO X0VOSF9GUkFNRV9SRUcsCj4+ICsJCQkgICBTTl9FTkFCTEVfVklEX1NUUkVBTV9CSVQsIDApOwo+ PiArCS8qIHNlbWkgYXV0byBsaW5rIHRyYWluaW5nIG1vZGUgT0ZGICovCj4+ICsJcmVnbWFwX3dy aXRlKHBkYXRhLT5yZWdtYXAsIFNOX01MX1RYX01PREVfUkVHLCAwKTsKPj4gKwkvKiBkaXNhYmxl IERQIFBMTCAqLwo+PiArCXJlZ21hcF93cml0ZShwZGF0YS0+cmVnbWFwLCBTTl9QTExfRU5BQkxF X1JFRywgMCk7Cj4gCj4gTWF5YmUgaW4geW91ciBwYXJ0aWN1bGFyIGNhc2UgaXQgZG9lcyBub3Qg bWF0dGVyIGJ1dCBnZW5lcmFsbHkKPiBkcm1fcGFuZWxfZGlzYWJsZSBzaG91bGQgYmUgY2FsbGVk IDFzdCwgYnV0IGRybV9wYW5lbF91bnByZXBhcmUgc2hvdWxkCj4gYmUgY2FsbGVkIHNvbWV3aGVy ZSBhZnRlciBkaXNhYmxpbmcgdmlkZW8gc3RyZWFtLgoKT2sgaSB3aWwgbW92ZSBwYW5lbCB1bnBy ZXBhcmUgdG8gZW5kIGluIG5leHQgcGF0Y2hzZXQuCj4gCj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB1 MzIgdGlfc25fYnJpZGdlX2dldF9kc2lfZnJlcShzdHJ1Y3QgdGlfc25fYnJpZGdlICpwZGF0YSkK Pj4gK3sKPj4gKwl1MzIgYml0X3JhdGVfa2h6LCBjbGtfZnJlcV9raHo7Cj4+ICsJc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKm1vZGUgPQo+PiArCQkmcGRhdGEtPmJyaWRnZS5lbmNvZGVyLT5jcnRj LT5zdGF0ZS0+YWRqdXN0ZWRfbW9kZTsKPj4gKwo+PiArCWJpdF9yYXRlX2toeiA9IG1vZGUtPmNs b2NrICoKPj4gKwkJCW1pcGlfZHNpX3BpeGVsX2Zvcm1hdF90b19icHAocGRhdGEtPmRzaS0+Zm9y bWF0KTsKPj4gKwljbGtfZnJlcV9raHogPSBiaXRfcmF0ZV9raHogLyAocGRhdGEtPmRzaS0+bGFu ZXMgKiAyKTsKPj4gKwo+PiArCXJldHVybiBjbGtfZnJlcV9raHo7Cj4+ICt9Cj4+ICsKPj4gKy8q IGNsayBmcmVxdWVuY2llcyBzdXBwb3J0ZWQgYnkgYnJpZGdlIGluIEh6IGluIGNhc2UgZGVyaXZl ZCBmcm9tIAo+PiBSRUZDTEsgcGluICovCj4+ICtzdGF0aWMgY29uc3QgdTMyIHRpX3NuX2JyaWRn ZV9yZWZjbGtfbHV0W10gPSB7Cj4+ICsJMTIwMDAwMDAsCj4+ICsJMTkyMDAwMDAsCj4+ICsJMjYw MDAwMDAsCj4+ICsJMjcwMDAwMDAsCj4+ICsJMzg0MDAwMDAsCj4+ICt9Owo+PiArCj4+ICsvKiBj bGsgZnJlcXVlbmNpZXMgc3VwcG9ydGVkIGJ5IGJyaWRnZSBpbiBIeiBpbiBjYXNlIGRlcml2ZWQg ZnJvbSAKPj4gREFDUC9OIHBpbiAqLwo+PiArc3RhdGljIGNvbnN0IHUzMiB0aV9zbl9icmlkZ2Vf ZHNpY2xrX2x1dFtdID0gewo+PiArCTQ2ODAwMDAwMCwKPj4gKwkzODQwMDAwMDAsCj4+ICsJNDE2 MDAwMDAwLAo+PiArCTQ4NjAwMDAwMCwKPj4gKwk0NjA4MDAwMDAsCj4+ICt9Owo+PiArCj4+ICtz dGF0aWMgdm9pZCB0aV9zbl9icmlkZ2Vfc2V0X3JlZmNsa19mcmVxKHN0cnVjdCB0aV9zbl9icmlk Z2UgKnBkYXRhKQo+PiArewo+PiArCWludCBpOwo+PiArCXUzMiByZWZjbGtfcmF0ZTsKPj4gKwlj b25zdCB1MzIgKnJlZmNsa19sdXQ7Cj4+ICsJc2l6ZV90IHJlZmNsa19sdXRfc2l6ZTsKPj4gKwo+ PiArCWlmIChwZGF0YS0+cmVmY2xrKSB7Cj4+ICsJCXJlZmNsa19yYXRlID0gY2xrX2dldF9yYXRl KHBkYXRhLT5yZWZjbGspOwo+PiArCQlyZWZjbGtfbHV0ID0gdGlfc25fYnJpZGdlX3JlZmNsa19s dXQ7Cj4+ICsJCXJlZmNsa19sdXRfc2l6ZSA9IEFSUkFZX1NJWkUodGlfc25fYnJpZGdlX3JlZmNs a19sdXQpOwo+PiArCQljbGtfcHJlcGFyZV9lbmFibGUocGRhdGEtPnJlZmNsayk7Cj4+ICsJfSBl bHNlIHsKPj4gKwkJcmVmY2xrX3JhdGUgPSB0aV9zbl9icmlkZ2VfZ2V0X2RzaV9mcmVxKHBkYXRh KSAqIDEwMDA7Cj4+ICsJCXJlZmNsa19sdXQgPSB0aV9zbl9icmlkZ2VfZHNpY2xrX2x1dDsKPj4g KwkJcmVmY2xrX2x1dF9zaXplID0gQVJSQVlfU0laRSh0aV9zbl9icmlkZ2VfZHNpY2xrX2x1dCk7 Cj4+ICsJfQo+PiArCj4+ICsJLyogZm9yIGkgZXF1YWxzIHRvIHJlZmNsa19sdXRfc2l6ZSBtZWFu cyBkZWZhdWx0IGZyZXF1ZW5jeSAqLwo+PiArCWZvciAoaSA9IDA7IGkgPCByZWZjbGtfbHV0X3Np emU7IGkrKykKPj4gKwkJaWYgKHJlZmNsa19sdXRbaV0gPT0gcmVmY2xrX3JhdGUpCj4+ICsJCQli cmVhazsKPj4gKwo+PiArCXJlZ21hcF91cGRhdGVfYml0cyhwZGF0YS0+cmVnbWFwLCBTTl9EUFBM TF9TUkNfUkVHLAo+PiArCQkJICAgU05fUkVGQ0xLX0ZSRVFfQklUUywgaSA8PCBTTl9SRUZDTEtf RlJFUV9PRkZTRVQpOwo+PiArfQo+PiArCj4+ICsvKioKPj4gKyAqIExVVCBpbmRleCBjb3JyZXNw b25kcyB0byByZWdpc3RlciB2YWx1ZSBhbmQKPj4gKyAqIExVVCB2YWx1ZXMgY29ycmVzcG9uZHMg dG8gZHAgZGF0YSByYXRlIHN1cHBvcnRlZAo+PiArICogYnkgdGhlIGJyaWRnZSBpbiBNYnBzIHVu aXQuCj4+ICsgKi8KPj4gK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgdGlfc25fYnJpZGdlX2Rw X3JhdGVfbHV0W10gPSB7Cj4+ICsJMCwgMTYyMCwgMjE2MCwgMjQzMCwgMjcwMCwgMzI0MCwgNDMy MCwgNTQwMAo+PiArfTsKPj4gKwo+PiArc3RhdGljIHZvaWQgdGlfc25fYnJpZGdlX3NldF9kc2lf ZHBfcmF0ZShzdHJ1Y3QgdGlfc25fYnJpZGdlICpwZGF0YSkKPj4gK3sKPj4gKwl1bnNpZ25lZCBp bnQgYml0X3JhdGVfbWh6LCBjbGtfZnJlcV9taHosIGRwX3JhdGVfbWh6Owo+PiArCXVuc2lnbmVk IGludCB2YWwsIGk7Cj4+ICsJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUgPQo+PiArCQkm cGRhdGEtPmJyaWRnZS5lbmNvZGVyLT5jcnRjLT5zdGF0ZS0+YWRqdXN0ZWRfbW9kZTsKPj4gKwo+ PiArCS8qIHNldCBEU0lBIGNsayBmcmVxdWVuY3kgKi8KPj4gKwliaXRfcmF0ZV9taHogPSAobW9k ZS0+Y2xvY2sgLyAxMDAwKSAqCj4+ICsJCQltaXBpX2RzaV9waXhlbF9mb3JtYXRfdG9fYnBwKHBk YXRhLT5kc2ktPmZvcm1hdCk7Cj4+ICsJY2xrX2ZyZXFfbWh6ID0gYml0X3JhdGVfbWh6IC8gKHBk YXRhLT5kc2ktPmxhbmVzICogMik7Cj4+ICsKPj4gKwkvKiBmb3IgZWFjaCBpbmNyZW1lbnQgaW4g dmFsLCBmcmVxdWVuY3kgaW5jcmVhc2VzIGJ5IDVNSHogKi8KPj4gKwl2YWwgPSAoTUlOX0RTSV9D TEtfRlJFUV9NSFogLyA1KSArCj4+ICsJCSgoKGNsa19mcmVxX21oeiAtIE1JTl9EU0lfQ0xLX0ZS RVFfTUhaKSAvIDUpICYgMHhGRik7Cj4+ICsJcmVnbWFwX3dyaXRlKHBkYXRhLT5yZWdtYXAsIFNO X0RTSUFfQ0xLX0ZSRVFfUkVHLCB2YWwpOwo+PiArCj4+ICsJLyogc2V0IERQIGRhdGEgcmF0ZSAq Lwo+PiArCWRwX3JhdGVfbWh6ID0gKChiaXRfcmF0ZV9taHogLyBwZGF0YS0+ZHNpLT5sYW5lcykg KiAKPj4gRFBfQ0xLX0ZVREdFX05VTSkgLwo+PiArCQkJCQkJCURQX0NMS19GVURHRV9ERU47Cj4+ ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUodGlfc25fYnJpZGdlX2RwX3JhdGVfbHV0KSAt IDE7IGkrKykKPj4gKwkJaWYgKHRpX3NuX2JyaWRnZV9kcF9yYXRlX2x1dFtpXSA+IGRwX3JhdGVf bWh6KQo+PiArCQkJYnJlYWs7Cj4+ICsKPj4gKwlyZWdtYXBfdXBkYXRlX2JpdHMocGRhdGEtPnJl Z21hcCwgU05fREFUQVJBVEVfQ09ORklHX1JFRywKPj4gKwkJCSAgIFNOX0RQX0RBVEFfUkFURV9C SVRTLCBpIDw8IFNOX0RQX0RBVEFfUkFURV9PRkZTRVQpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMg dm9pZCB0aV9zbl9icmlkZ2Vfc2V0X3ZpZGVvX3RpbWluZ3Moc3RydWN0IHRpX3NuX2JyaWRnZSAK Pj4gKnBkYXRhKQo+PiArewo+PiArCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlID0KPj4g KwkJJnBkYXRhLT5icmlkZ2UuZW5jb2Rlci0+Y3J0Yy0+c3RhdGUtPmFkanVzdGVkX21vZGU7Cj4+ ICsJdTggaHN5bmNfcG9sYXJpdHkgPSAwLCB2c3luY19wb2xhcml0eSA9IDA7Cj4+ICsKPj4gKwlp ZiAobW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX1BIU1lOQykKPj4gKwkJaHN5bmNfcG9sYXJp dHkgPSAweDE7Cj4gCj4gWW91IGNhbiBhc3NpZ246Cj4gCj4gaHN5bmNfcG9sYXJpdHkgPSBCSVQo U05fU1lOQ19QT0xBUklUWV9PRkZTRVQpOwo+IAo+IGFuZCB0aGVuIHVzZSBpdCBkaXJlY3RseSBp biByZWdtYXBfd3JpdGUuCj4gCj4+ICsJaWYgKG1vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19Q VlNZTkMpCj4+ICsJCXZzeW5jX3BvbGFyaXR5ID0gMHgxOwo+IAo+IFRoZSBzYW1lIGhlcmUuCj4g Ck9rLgo+PiArCj4+ICsJdGlfc25fYnJpZGdlX3dyaXRlX3UxNihwZGF0YSwgU05fQ0hBX0FDVElW RV9MSU5FX0xFTkdUSF9MT1dfUkVHLAo+PiArCQkJICAgICAgIG1vZGUtPmhkaXNwbGF5KTsKPj4g Kwl0aV9zbl9icmlkZ2Vfd3JpdGVfdTE2KHBkYXRhLCBTTl9DSEFfVkVSVElDQUxfRElTUExBWV9T SVpFX0xPV19SRUcsCj4+ICsJCQkgICAgICAgbW9kZS0+dmRpc3BsYXkpOwo+PiArCXJlZ21hcF93 cml0ZShwZGF0YS0+cmVnbWFwLCBTTl9DSEFfSFNZTkNfUFVMU0VfV0lEVEhfTE9XX1JFRywKPj4g KwkJICAgICAobW9kZS0+aHN5bmNfZW5kIC0gbW9kZS0+aHN5bmNfc3RhcnQpICYgMHhGRik7Cj4+ ICsJcmVnbWFwX3dyaXRlKHBkYXRhLT5yZWdtYXAsIFNOX0NIQV9IU1lOQ19QVUxTRV9XSURUSF9I SUdIX1JFRywKPj4gKwkJICAgICAoKChtb2RlLT5oc3luY19lbmQgLSBtb2RlLT5oc3luY19zdGFy dCkgPj4gOCkgJiAweDdGKQo+PiArCQkgICAgIHwgKGhzeW5jX3BvbGFyaXR5IDw8IFNOX1NZTkNf UE9MQVJJVFlfT0ZGU0VUKSk7Cj4+ICsJcmVnbWFwX3dyaXRlKHBkYXRhLT5yZWdtYXAsIFNOX0NI QV9WU1lOQ19QVUxTRV9XSURUSF9MT1dfUkVHLAo+PiArCQkgICAgIChtb2RlLT52c3luY19lbmQg LSBtb2RlLT52c3luY19zdGFydCkgJiAweEZGKTsKPj4gKwlyZWdtYXBfd3JpdGUocGRhdGEtPnJl Z21hcCwgU05fQ0hBX1ZTWU5DX1BVTFNFX1dJRFRIX0hJR0hfUkVHLAo+PiArCQkgICAgKCgobW9k ZS0+dnN5bmNfZW5kIC0gbW9kZS0+dnN5bmNfc3RhcnQpID4+IDgpICYgMHg3RikKPj4gKwkJICAg IHwgKHZzeW5jX3BvbGFyaXR5IDw8IFNOX1NZTkNfUE9MQVJJVFlfT0ZGU0VUKSk7Cj4+ICsKPj4g KwlyZWdtYXBfd3JpdGUocGRhdGEtPnJlZ21hcCwgU05fQ0hBX0hPUklaT05UQUxfQkFDS19QT1JD SF9SRUcsCj4+ICsJCSAgICAgKG1vZGUtPmh0b3RhbCAtIG1vZGUtPmhzeW5jX2VuZCkgJiAweEZG KTsKPj4gKwlyZWdtYXBfd3JpdGUocGRhdGEtPnJlZ21hcCwgU05fQ0hBX1ZFUlRJQ0FMX0JBQ0tf UE9SQ0hfUkVHLAo+PiArCQkgICAgIChtb2RlLT52dG90YWwgLSBtb2RlLT52c3luY19lbmQpICYg MHhGRik7Cj4+ICsKPj4gKwlyZWdtYXBfd3JpdGUocGRhdGEtPnJlZ21hcCwgU05fQ0hBX0hPUkla T05UQUxfRlJPTlRfUE9SQ0hfUkVHLAo+PiArCQkgICAgIChtb2RlLT5oc3luY19zdGFydCAtIG1v ZGUtPmhkaXNwbGF5KSAmIDB4RkYpOwo+PiArCXJlZ21hcF93cml0ZShwZGF0YS0+cmVnbWFwLCBT Tl9DSEFfVkVSVElDQUxfRlJPTlRfUE9SQ0hfUkVHLAo+PiArCQkgICAgIChtb2RlLT52c3luY19z dGFydCAtIG1vZGUtPnZkaXNwbGF5KSAmIDB4RkYpOwo+PiArCj4+ICsJdXNsZWVwX3JhbmdlKDEw MDAwLCAxMDUwMCk7IC8qIDEwbXMgZGVsYXkgcmVjb21tZW5kZWQgYnkgc3BlYyAqLwo+PiArfQo+ PiArCj4+ICtzdGF0aWMgdm9pZCB0aV9zbl9icmlkZ2VfZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdl ICpicmlkZ2UpCj4+ICt7Cj4+ICsJc3RydWN0IHRpX3NuX2JyaWRnZSAqcGRhdGEgPSBicmlkZ2Vf dG9fdGlfc25fYnJpZGdlKGJyaWRnZSk7Cj4+ICsJdW5zaWduZWQgaW50IHZhbDsKPj4gKwo+PiAr CWlmIChwZGF0YS0+cGFuZWwpIHsKPj4gKwkJZHJtX3BhbmVsX3ByZXBhcmUocGRhdGEtPnBhbmVs KTsKPj4gKwkJLyogaW4gY2FzZSBkcm1fcGFuZWwgaXMgY29ubmVjdGVkIHRoZW4gSFBEIGlzIG5v dCBzdXBwb3J0ZWQgKi8KPj4gKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKHBkYXRhLT5yZWdtYXAsIFNO X0hQRF9ESVNBQkxFX1JFRywKPj4gKwkJCQkgICBTTl9IUERfRElTQUJMRV9CSVQsIFNOX0hQRF9E SVNBQkxFX0JJVCk7Cj4gCj4gSSB0aGluayBIUEQgc2hvdWxkIGJlIGRpc2FibGVkIG11Y2ggZWFy bGllciwgSSBndWVzcyBzb21ld2hlcmUgaW4KPiBpbml0aWFsaXphdGlvbi9wcm9iZS4KPiAKQXMg cGVyIHRoZSBkcml2ZXIgY29kZSwgd2UgYXJlIGVuYWJsaW5nIHRoZSBicmlkZ2UgcG93ZXIgc3Vw cGxpZXMgYW5kIApncGlvCm9ubHkgaW4gcHJlLWVuYWJsZSBmdW5jdGlvbiwgaSBjYW4gbW92ZSB0 aGlzIEhEUCBkaXNhYmxlIHRvIHByZS1lbmFibGUuCgo+PiArCX0KPj4gKwo+PiArCS8qIERTSV9B IGxhbmUgY29uZmlnICovCj4+ICsJdmFsID0gKDQgLSBwZGF0YS0+ZHNpLT5sYW5lcykgPDwgU05f RFNJQV9MQU5FX09GRlNFVDsKPj4gKwlyZWdtYXBfdXBkYXRlX2JpdHMocGRhdGEtPnJlZ21hcCwg U05fRFNJX0xBTkVTX1JFRywKPj4gKwkJCSAgIFNOX0RTSUFfTlVNX0xBTkVTX0JJVFMsIHZhbCk7 Cj4+ICsKPj4gKwkvKiBEUCBsYW5lIGNvbmZpZyAqLwo+PiArCXZhbCA9IChwZGF0YS0+ZHNpLT5s YW5lcyAtIDEpIDw8IFNOX0RQX0xBTkVfT0ZGU0VUOwo+PiArCXJlZ21hcF91cGRhdGVfYml0cyhw ZGF0YS0+cmVnbWFwLCBTTl9TU0NfQ09ORklHX1JFRywKPj4gKwkJCSAgIFNOX0RQX05VTV9MQU5F U19CSVRTLCB2YWwpOwo+PiArCj4+ICsJLyogc2V0IGRzaS9kcCBjbGsgZnJlcXVlbmN5IHZhbHVl ICovCj4+ICsJdGlfc25fYnJpZGdlX3NldF9kc2lfZHBfcmF0ZShwZGF0YSk7Cj4+ICsKPj4gKwkv KiBlbmFibGUgRFAgUExMICovCj4+ICsJcmVnbWFwX3dyaXRlKHBkYXRhLT5yZWdtYXAsIFNOX1BM TF9FTkFCTEVfUkVHLCAxKTsKPj4gKwl1c2xlZXBfcmFuZ2UoMTAwMDAsIDEwNTAwKTsgLyogMTBt cyBkZWxheSByZWNvbW1lbmRlZCBieSBzcGVjICovCj4+ICsKPj4gKwkvKioKPj4gKwkgKiBUaGUg U042NURTSTg2IG9ubHkgc3VwcG9ydHMgQVNTUiBEaXNwbGF5IEF1dGhlbnRpY2F0aW9uIG1ldGhv ZCAKPj4gYW5kCj4+ICsJICogdGhpcyBtZXRob2QgaXMgZW5hYmxlZCBieSBkZWZhdWx0LiBBbiBl RFAgcGFuZWwgbXVzdCBzdXBwb3J0IHRoaXMKPj4gKwkgKiBhdXRoZW50aWNhdGlvbiBtZXRob2Qu IFdlIG5lZWQgdG8gZW5hYmxlIHRoaXMgbWV0aG9kIGluIHRoZSBlRFAgCj4+IHBhbmVsCj4+ICsJ ICogYXQgRGlzcGxheVBvcnQgYWRkcmVzcyAweDAwMTBBIHByaW9yIHRvIGxpbmsgdHJhaW5pbmcu Cj4+ICsJICovCj4+ICsJcmVnbWFwX3dyaXRlKHBkYXRhLT5yZWdtYXAsIFNOX0FVWF9XREFUQTBf UkVHLCAweDAxKTsKPj4gKwlyZWdtYXBfd3JpdGUocGRhdGEtPnJlZ21hcCwgU05fQVVYX0FERFJf MTlfMTZfUkVHLCAweDAwKTsKPj4gKwlyZWdtYXBfd3JpdGUocGRhdGEtPnJlZ21hcCwgU05fQVVY X0FERFJfMTVfOF9SRUcsIDB4MDEpOwo+PiArCXJlZ21hcF93cml0ZShwZGF0YS0+cmVnbWFwLCBT Tl9BVVhfQUREUl83XzBfUkVHLCAweDBBKTsKPj4gKwlyZWdtYXBfd3JpdGUocGRhdGEtPnJlZ21h cCwgU05fQVVYX0xFTkdUSF9SRUcsIDB4MDEpOwo+PiArCXJlZ21hcF93cml0ZShwZGF0YS0+cmVn bWFwLCBTTl9BVVhfQ01EX1JFRywgMHg4MSk7Cj4+ICsJdXNsZWVwX3JhbmdlKDEwMDAwLCAxMDUw MCk7IC8qIDEwbXMgZGVsYXkgcmVjb21tZW5kZWQgYnkgc3BlYyAqLwo+PiArCj4+ICsJLyogU2Vt aSBhdXRvIGxpbmsgdHJhaW5pbmcgbW9kZSAqLwo+PiArCXJlZ21hcF93cml0ZShwZGF0YS0+cmVn bWFwLCBTTl9NTF9UWF9NT0RFX1JFRywgMHgwQSk7Cj4+ICsJbXNsZWVwKDIwKTsgLyogMjBtcyBk ZWxheSByZWNvbW1lbmRlZCBieSBzcGVjICovCj4+ICsKPj4gKwkvKiBjb25maWcgdmlkZW8gcGFy YW1ldGVycyAqLwo+PiArCXRpX3NuX2JyaWRnZV9zZXRfdmlkZW9fdGltaW5ncyhwZGF0YSk7Cj4+ ICsKPj4gKwkvKiBlbmFibGUgdmlkZW8gc3RyZWFtICovCj4+ICsJcmVnbWFwX3VwZGF0ZV9iaXRz KHBkYXRhLT5yZWdtYXAsIFNOX0VOSF9GUkFNRV9SRUcsCj4+ICsJCQkgICBTTl9FTkFCTEVfVklE X1NUUkVBTV9CSVQsIFNOX0VOQUJMRV9WSURfU1RSRUFNX0JJVCk7Cj4+ICsKPj4gKwlpZiAocGRh dGEtPnBhbmVsKQo+PiArCQlkcm1fcGFuZWxfZW5hYmxlKHBkYXRhLT5wYW5lbCk7Cj4+ICt9Cj4+ ICsKPj4gK3N0YXRpYyB2b2lkIHRpX3NuX2JyaWRnZV9wcmVfZW5hYmxlKHN0cnVjdCBkcm1fYnJp ZGdlICpicmlkZ2UpCj4+ICt7Cj4+ICsJc3RydWN0IHRpX3NuX2JyaWRnZSAqcGRhdGEgPSBicmlk Z2VfdG9fdGlfc25fYnJpZGdlKGJyaWRnZSk7Cj4+ICsKPj4gKwlwbV9ydW50aW1lX2dldF9zeW5j KHBkYXRhLT5kZXYpOwo+PiArCj4+ICsJLyogY29uZmlndXJlIGJyaWRnZSByZWZfY2xrICovCj4+ ICsJdGlfc25fYnJpZGdlX3NldF9yZWZjbGtfZnJlcShwZGF0YSk7Cj4+ICt9Cj4+ICsKPj4gK3N0 YXRpYyB2b2lkIHRpX3NuX2JyaWRnZV9wb3N0X2Rpc2FibGUoc3RydWN0IGRybV9icmlkZ2UgKmJy aWRnZSkKPj4gK3sKPj4gKwlzdHJ1Y3QgdGlfc25fYnJpZGdlICpwZGF0YSA9IGJyaWRnZV90b190 aV9zbl9icmlkZ2UoYnJpZGdlKTsKPj4gKwo+PiArCWlmIChwZGF0YS0+cmVmY2xrKQo+PiArCQlj bGtfZGlzYWJsZV91bnByZXBhcmUocGRhdGEtPnJlZmNsayk7Cj4+ICsKPj4gKwlwbV9ydW50aW1l X3B1dF9zeW5jKHBkYXRhLT5kZXYpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IGRybV9icmlkZ2VfZnVuY3MgdGlfc25fYnJpZGdlX2Z1bmNzID0gewo+PiArCS5hdHRhY2ggPSB0 aV9zbl9icmlkZ2VfYXR0YWNoLAo+PiArCS5wcmVfZW5hYmxlID0gdGlfc25fYnJpZGdlX3ByZV9l bmFibGUsCj4+ICsJLmVuYWJsZSA9IHRpX3NuX2JyaWRnZV9lbmFibGUsCj4+ICsJLmRpc2FibGUg PSB0aV9zbl9icmlkZ2VfZGlzYWJsZSwKPj4gKwkucG9zdF9kaXNhYmxlID0gdGlfc25fYnJpZGdl X3Bvc3RfZGlzYWJsZSwKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBpbnQgdGlfc25fYnJpZGdlX3Bh cnNlX2RzaV9ob3N0KHN0cnVjdCB0aV9zbl9icmlkZ2UgKnBkYXRhKQo+PiArewo+PiArCXN0cnVj dCBkZXZpY2Vfbm9kZSAqbnAgPSBwZGF0YS0+ZGV2LT5vZl9ub2RlOwo+PiArCj4+ICsJcGRhdGEt Pmhvc3Rfbm9kZSA9IG9mX2dyYXBoX2dldF9yZW1vdGVfbm9kZShucCwgMCwgMCk7Cj4+ICsKPj4g KwlpZiAoIXBkYXRhLT5ob3N0X25vZGUpIHsKPj4gKwkJRFJNX0VSUk9SKCJyZW1vdGUgZHNpIGhv c3Qgbm9kZSBub3QgZm91bmRcbiIpOwo+PiArCQlyZXR1cm4gLUVOT0RFVjsKPj4gKwl9Cj4+ICsK Pj4gKwlyZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCB0aV9zbl9icmlkZ2VfcHJv YmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKPj4gKwkgY29uc3Qgc3RydWN0IGkyY19kZXZp Y2VfaWQgKmlkKQo+PiArewo+PiArCXN0cnVjdCB0aV9zbl9icmlkZ2UgKnBkYXRhOwo+PiArCXN0 cnVjdCBkZXZpY2Vfbm9kZSAqZGRjX25vZGU7Cj4+ICsJaW50IHJldDsKPj4gKwo+PiArCWlmICgh aTJjX2NoZWNrX2Z1bmN0aW9uYWxpdHkoY2xpZW50LT5hZGFwdGVyLCBJMkNfRlVOQ19JMkMpKSB7 Cj4+ICsJCURSTV9FUlJPUigiZGV2aWNlIGRvZXNuJ3Qgc3VwcG9ydCBJMkNcbiIpOwo+PiArCQly ZXR1cm4gLUVOT0RFVjsKPj4gKwl9Cj4+ICsKPj4gKwlwZGF0YSA9IGRldm1fa3phbGxvYygmY2xp ZW50LT5kZXYsIHNpemVvZihzdHJ1Y3QgdGlfc25fYnJpZGdlKSwKPj4gKwkJCSAgICAgR0ZQX0tF Uk5FTCk7Cj4+ICsJaWYgKCFwZGF0YSkKPj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4+ICsKPj4gKwlw ZGF0YS0+cmVnbWFwID0gZGV2bV9yZWdtYXBfaW5pdF9pMmMoY2xpZW50LAo+PiArCQkJCQkgICAg ICZ0aV9zbl9icmlkZ2VfcmVnbWFwX2NvbmZpZyk7Cj4+ICsJaWYgKElTX0VSUihwZGF0YS0+cmVn bWFwKSkgewo+PiArCQlEUk1fRVJST1IoInJlZ21hcCBpMmMgaW5pdCBmYWlsZWRcbiIpOwo+PiAr CQlyZXR1cm4gUFRSX0VSUihwZGF0YS0+cmVnbWFwKTsKPj4gKwl9Cj4+ICsKPj4gKwlwZGF0YS0+ ZGV2ID0gJmNsaWVudC0+ZGV2Owo+PiArCWRldl9zZXRfZHJ2ZGF0YSgmY2xpZW50LT5kZXYsIHBk YXRhKTsKPj4gKwo+PiArCXBkYXRhLT5lbmFibGVfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0KHBkYXRh LT5kZXYsICJlbmFibGUiLAo+PiArCQkJCQkgICAgR1BJT0RfT1VUX0xPVyk7Cj4+ICsJaWYgKElT X0VSUihwZGF0YS0+ZW5hYmxlX2dwaW8pKSB7Cj4+ICsJCURSTV9FUlJPUigiZmFpbGVkIHRvIGdl dCBlbmFibGUgZ3BpbyBmcm9tIERUXG4iKTsKPj4gKwkJcmV0ID0gUFRSX0VSUihwZGF0YS0+ZW5h YmxlX2dwaW8pOwo+PiArCQlyZXR1cm4gcmV0Owo+PiArCX0KPj4gKwo+PiArCXJldCA9IHRpX3Nu X2JyaWRnZV9wYXJzZV9yZWd1bGF0b3JzKHBkYXRhKTsKPj4gKwlpZiAocmV0KSB7Cj4+ICsJCURS TV9FUlJPUigiZmFpbGVkIHRvIHBhcnNlIHJlZ3VsYXRvcnNcbiIpOwo+PiArCQlyZXR1cm4gcmV0 Owo+PiArCX0KPj4gKwo+PiArCXJldCA9IGRybV9vZl9maW5kX3BhbmVsX29yX2JyaWRnZShwZGF0 YS0+ZGV2LT5vZl9ub2RlLCAxLCAwLAo+PiArCQkJCQkgICZwZGF0YS0+cGFuZWwsIE5VTEwpOwo+ PiArCWlmIChyZXQpIHsKPj4gKwkJRFJNX0VSUk9SKCJjb3VsZCBub3QgZmluZCBhbnkgZHJtIHBh bmVsIG5vZGVcbiIpOwo+PiArCQlyZXR1cm4gcmV0Owo+PiArCX0KPj4gKwo+PiArCXBkYXRhLT5y ZWZjbGsgPSBkZXZtX2Nsa19nZXQocGRhdGEtPmRldiwgInJlZmNsayIpOwo+PiArCWlmIChJU19F UlIocGRhdGEtPnJlZmNsaykpIHsKPj4gKwkJcmV0ID0gUFRSX0VSUihwZGF0YS0+cmVmY2xrKTsK Pj4gKwkJaWYgKHJldCA9PSAtRVBST0JFX0RFRkVSKQo+PiArCQkJcmV0dXJuIHJldDsKPj4gKwkJ RFJNX0RFQlVHX0tNUygicmVmY2xrIG5vdCBmb3VuZFxuIik7Cj4+ICsJCXBkYXRhLT5yZWZjbGsg PSBOVUxMOwo+PiArCX0KPj4gKwo+PiArCWRkY19ub2RlID0gb2ZfcGFyc2VfcGhhbmRsZShwZGF0 YS0+ZGV2LT5vZl9ub2RlLCAiZGRjLWkyYy1idXMiLCAwKTsKPj4gKwlpZiAoZGRjX25vZGUpIHsK Pj4gKwkJcGRhdGEtPmRkYyA9IG9mX2ZpbmRfaTJjX2FkYXB0ZXJfYnlfbm9kZShkZGNfbm9kZSk7 Cj4+ICsJCW9mX25vZGVfcHV0KGRkY19ub2RlKTsKPj4gKwkJaWYgKCFwZGF0YS0+ZGRjKSB7Cj4+ ICsJCQlEUk1fREVCVUdfS01TKCJmYWlsZWQgdG8gcmVhZCBkZGMgbm9kZVxuIik7Cj4+ICsJCQly ZXR1cm4gLUVQUk9CRV9ERUZFUjsKPj4gKwkJfQo+PiArCX0gZWxzZSB7Cj4+ICsJCURSTV9ERUJV R19LTVMoIm5vIGRkYyBwcm9wZXJ0eSBmb3VuZFxuIik7Cj4+ICsJfQo+IAo+IEkgZ3Vlc3MgdGhl cmUgc2hvdWxkIGJlIGV4Y2x1c2l2ZWx5IHBhbmVsIG9yIGRkYywgcGxlYXNlIGZhaWwgaWYKPiBi b3RoL25vbmUgYXJlIHByZXNlbnQuCj4gCkp1c3QgY3VyaW91cywgY2FuJ3QgYW4gZWRwIHBhbmVs IHdpbGwgaGF2ZSBFRElEIGZsYXNoZWQ/Cj4gCj4gUmVnYXJkcwo+IEFuZHJ6ZWoKPiAKPj4gKwo+ PiArCXJldCA9IHRpX3NuX2JyaWRnZV9wYXJzZV9kc2lfaG9zdChwZGF0YSk7Cj4+ICsJaWYgKHJl dCkKPj4gKwkJcmV0dXJuIHJldDsKPj4gKwo+PiArCXBtX3J1bnRpbWVfZW5hYmxlKHBkYXRhLT5k ZXYpOwo+PiArCj4+ICsJaTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgcGRhdGEpOwo+PiArCj4+ ICsJcGRhdGEtPmJyaWRnZS5mdW5jcyA9ICZ0aV9zbl9icmlkZ2VfZnVuY3M7Cj4+ICsJcGRhdGEt PmJyaWRnZS5vZl9ub2RlID0gY2xpZW50LT5kZXYub2Zfbm9kZTsKPj4gKwo+PiArCWRybV9icmlk Z2VfYWRkKCZwZGF0YS0+YnJpZGdlKTsKPj4gKwo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ ICtzdGF0aWMgaW50IHRpX3NuX2JyaWRnZV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVu dCkKPj4gK3sKPj4gKwlzdHJ1Y3QgdGlfc25fYnJpZGdlICpwZGF0YSA9IGkyY19nZXRfY2xpZW50 ZGF0YShjbGllbnQpOwo+PiArCj4+ICsJaWYgKCFwZGF0YSkKPj4gKwkJcmV0dXJuIC1FSU5WQUw7 Cj4+ICsKPj4gKwlpZiAocGRhdGEtPmhvc3Rfbm9kZSkKPj4gKwkJb2Zfbm9kZV9wdXQocGRhdGEt Pmhvc3Rfbm9kZSk7Cj4+ICsKPj4gKwlwbV9ydW50aW1lX2Rpc2FibGUocGRhdGEtPmRldik7Cj4+ ICsKPj4gKwlpZiAocGRhdGEtPmRzaSkgewo+PiArCQltaXBpX2RzaV9kZXRhY2gocGRhdGEtPmRz aSk7Cj4+ICsJCW1pcGlfZHNpX2RldmljZV91bnJlZ2lzdGVyKHBkYXRhLT5kc2kpOwo+PiArCX0K Pj4gKwo+PiArCWRybV9icmlkZ2VfcmVtb3ZlKCZwZGF0YS0+YnJpZGdlKTsKPj4gKwlpMmNfcHV0 X2FkYXB0ZXIocGRhdGEtPmRkYyk7Cj4+ICsKPj4gKwlyZXR1cm4gMDsKPj4gK30KPj4gKwo+PiAr c3RhdGljIHN0cnVjdCBpMmNfZGV2aWNlX2lkIHRpX3NuX2JyaWRnZV9pZFtdID0gewo+PiArCXsg InRpLHNuNjVkc2k4NiIsIDB9LAo+PiArCXt9LAo+PiArfTsKPj4gK01PRFVMRV9ERVZJQ0VfVEFC TEUoaTJjLCB0aV9zbl9icmlkZ2VfaWQpOwo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9m X2RldmljZV9pZCB0aV9zbl9icmlkZ2VfbWF0Y2hfdGFibGVbXSA9IHsKPj4gKwl7LmNvbXBhdGli bGUgPSAidGksc242NWRzaTg2In0sCj4+ICsJe30sCj4+ICt9Owo+PiArTU9EVUxFX0RFVklDRV9U QUJMRShvZiwgdGlfc25fYnJpZGdlX21hdGNoX3RhYmxlKTsKPj4gKwo+PiArc3RhdGljIHN0cnVj dCBpMmNfZHJpdmVyIHRpX3NuX2JyaWRnZV9kcml2ZXIgPSB7Cj4+ICsJLmRyaXZlciA9IHsKPj4g KwkJLm5hbWUgPSAidGlfc242NWRzaTg2IiwKPj4gKwkJLm9mX21hdGNoX3RhYmxlID0gdGlfc25f YnJpZGdlX21hdGNoX3RhYmxlLAo+PiArCQkucG0gPSAmdGlfc25fYnJpZGdlX3BtX29wcywKPj4g Kwl9LAo+PiArCS5wcm9iZSA9IHRpX3NuX2JyaWRnZV9wcm9iZSwKPj4gKwkucmVtb3ZlID0gdGlf c25fYnJpZGdlX3JlbW92ZSwKPj4gKwkuaWRfdGFibGUgPSB0aV9zbl9icmlkZ2VfaWQsCj4+ICt9 Owo+PiArCj4+ICttb2R1bGVfaTJjX2RyaXZlcih0aV9zbl9icmlkZ2VfZHJpdmVyKTsKPj4gK01P RFVMRV9ERVNDUklQVElPTigic242NWRzaTg2IERTSSB0byBlRFAgYnJpZGdlIGRyaXZlciIpOwo+ PiArTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOwpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpGcmVlZHJlbm8gbWFpbGluZyBsaXN0CkZyZWVkcmVub0BsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9mcmVlZHJlbm8K