From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Clark Date: Wed, 22 Jun 2011 13:07:06 +0000 Subject: Re: Some questions about DRM(Direct Rendering Manager) Message-Id: List-Id: References: <4E016EDC.30200@samsung.com> <4E0185E7.8020708@samsung.com> In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset="euc-kr" Content-Transfer-Encoding: base64 To: InKi Dae Cc: linux-fbdev , Kukjin Kim , Kyungmin Park , dri-devel@lists.freedesktop.org, daeinki , Paul Mundt , jesse.barnes@intel.com, linux-arm-kernel@lists.infradead.org ZndpdywgZHJtX2ZiX2hlbHBlcl9zaW5nbGVfZmJfcHJvYmUoKSBjYWxscyByZWdpc3Rlcl9mcmFt ZWJ1ZmZlcigpIChpZgp0aGF0IHdhcyB0aGUgcXVlc3Rpb24/KQoKQlIsCi1SCgoyMDExLzYvMjIg SW5LaSBEYWUgPGRhZWlua2lAZ21haWwuY29tPjoKPiBJdCBhZGRzIGRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcgdG8gdGhpcyBtYWlsIHRocmVhZC4KPiBUaGFuayB5b3UuCj4KPiAyMDEx s+IgNr/5IDIywM8gv8DIxCAzOjA0LCBkYWVpbmtpIDxpbmtpLmRhZUBzYW1zdW5nLmNvbT601MDH ILi7Ogo+PiBiZWxvdyBpcyBhZGRpdGlvbmFsIGNvbW1lbnRzLgo+Pgo+PiBkYWVpbmtpIL60ILHb Ogo+Pj4gSGkgYWxsLAo+Pj4KPj4+IEknbSB3cml0aW5nIFNhbXN1bmcgU29DIGJhc2VkIERSTSBm cmFtZXdvcmsgYW5kIHRoaXMgb25lIGluY2x1ZGVzIEZJTUQKPj4+IGFuZCBIRE1JIGRyaXZlciBh cyBoYXJkd2FyZSBkZXBlbmRlbnQgbW9kdWxlcy4gYW5kIGZvciBub3csIGVuY29kZXIsCj4+PiBj b25uZWN0b3IsIGNydGMgYW5kIGZiIG1vZHVsZSBoYXMgYmVlbiBtYXRlcmlhbGl6ZWQgYWxtb3N0 LiBidXQgSSdtCj4+PiBjb250ZW5kaW5nIHdpdGggIGZyYW1lYnVmZmVyIHNldHRpbmcgaXNzdWUo Y3JlYXRlZCBmYl9pbmZvIHNob3VsZCBiZQo+Pj4gcmVnaXN0ZXJlZCB0byBsaW51eCBmcmFtZWJ1 ZmZlciB0aHJvdWdoIHJlZ2lzdGVyX2ZyYW1lYnVmZmVyKCkgb3Igbm90KWFzCj4+PiBkZWZhdWx0 IGZyYW1lYnVmZmVyIGF0IGJvb3RpbmcgdGltZS4KPj4+Cj4+PiBhdCBkcm1fZmJfaGVscGVyX3Np bmdsZV9mYl9wcm9iZSgpIG9mIGRybV9mYl9oZWxwZXIuYyBmaWxlLCBmYl9oZWxwZXIncwo+Pj4g ZmJfcHJvYmUgY2FsbGJhY2sgaXMgY2FsbGVkIGFuZCB0aGlzIG9uZSBjcmVhdGVzIG5ldyBmcmFt ZWJ1ZmZlciBhbmQKPj4+IHJldHVybnMgYSB2YWx1ZSBtb3JlIHRoZW4gMCBpZiB0cnVlLiBpbnRl cm5hbGx5LCB0aGlzIHByb2Nlc3MgY3JlYXRlcyBhbgo+Pj4gZmJfaW5mbyBvYmplY3QgYW5kIGRy bV9mcmFtZWJ1ZmZlciBhbmQgdGhlbiBkcm1fZnJhbWVidWZmZXIgd291bGQgYmUKPj4+IGFkZGVk IHRvIG1vZGVfY29uZmlnLmZiX2xpc3Qgb2YgdGhlIGRybV9kZXZpY2UuCj4+Pgo+PiBpdCdzIG15 IG1pc3Rha2UuIHJldHVybiB2YWx1ZSBpcyAwIGlmIHRydWUsIG5vbnplcm8gb3RoZXJ3aXNlLgo+ Pgo+Pj4gYSB2YWx1ZSByZXR1cm5lZCwgbmV3X2ZiIGlzIHVzZWQgdG8gZGVjaWRlIHRoYXQgaXQg Y2FsbHMKPj4+IHJlZ2lzdGVyX2ZyYW1lYnVmZmVyKCkgb3IgZHJtX2ZiX2hlbHBlcl9zZXRfcGFy KCkuIGF0IHRoaXMgcG9pbnQsIEkgYW0KPj4+IGNvbmZ1c2VkIGl0J3MgYSBnb29kIHdheSB0byBj YWxsIHJlZ2lzdGVyX2ZyYW1lYnVmZmVyKCkgb3RoZXJ3aXNlCj4+PiBkcm1fZmJfaGVscGVyX3Nl dF9wYXIoKS4gaWYgcmVnaXN0ZXJfZnJhbWVidWZmZXIoKSBpcyBjYWxsZWQgdGhlbiBJCj4+PiBn dWVzcyBkcm1fZmJfaGVscGVyX3NldF9wYXIoKSBvciBkcm1fY3J0Y19oZWxwZXJfc2V0X2NvbmZp ZygpIHNob3VsZCBiZQo+Pj4gY2FsbGVkIHNvbWV3aGVyZSBzdWJzZXF1ZW50bHkgdG8gYXBwbHkg dGhpcyBvbmUgdG8gcmVhbCBoYXJkd2FyZSBiZWNhdXNlCj4+PiBwcmV2aW91cyBwcm9jZXNzIGlz IGp1c3QgZm9yIG1haW50YWluaW5nIGRhdGEgbG9naWNhbGx5Lihub3Qgc2V0IHVwIGRhdGEKPj4+ IHRvIGgvdykKPj4+Cj4+PiBpdCdzIGEgcmlnaHQgd2F5IHRvIGNhbGwgcmVnaXN0ZXJfZnJhbWVi dWZmZXIoKSBhbmQgdGhlbgo+Pj4gZHJtX2ZiX2hlbHBlcl9zZXRfcGFyKCkgb3IgZHJtX2NydGNf aGVscGVyX3NldF9jb25maWcoKT8gb3RoZXJ3aXNlIGp1c3QKPj4+IG9ubHkgZHJtX2ZiX2hlbHBl cl9zZXRfcGFyKCkgb3IgZHJtX2NydGNfaGVscGVyX3NldF9jb25maWcoKSBpZ25vcmluZwo+Pj4g cmVnaXN0ZXJfZnJhbWVidWZmZXIoKT8gYW5kIHdoYXQgaXMgdGhlIHB1cnBvc2Ugb2YgdXNpbmcK Pj4+IHJlZ2lzdGVyX2ZyYW1lYnVmZmVyKCk/Cj4+Pgo+PiBJIHVuZGVyc3Rvb2QgdGhhdCBpZiBm Yl9wcm9iZSgpIGNhbGxiYWNrIGlzIGZhaWwgdGhlbiBmYl9pbmZvIG9iamVjdCBpcwo+PiByZWdp c3RlcmVkIHRvIGxpbnV4IGZyYW1lYnVmZmVyIHRocm91Z2ggcmVnaXN0ZXJfZnJhbWVidWZmZXIo KQo+PiBvdGhlcndpc2UoaWYgdHJ1ZSkgaGFyZHdhcmUgY29uZmlndXJhdGlvbiB3b3VsZCBiZSBj b21wbGV0ZWQgYnkKPj4gZHJtX2ZiX2hlbHBlcl9zZXRfcGFyKCkgc28gdGhlIHJlYXNvbiBvZiB1 c2luZyByZWdpc3Rlcl9mcmFtZWJ1ZmZlcigpIGlzCj4+IHRoYXQgdGhlIGNhc2Ugb2YgZmFpbGlu ZyBmYl9wcm9iZSgpIGNhbGxiYWNrLCBpdCBpcyBmb3IgZHJhd2luZyBvbiBvbmx5Cj4+IGxpbnV4 IGZyYW1lYnVmZmVyLiBpcyBpdCByaWdodD8KPj4KPj4+IEluIG15IGNhc2UsIGZpcnN0LCByZWdp c3Rlcl9mcmFtZWJ1ZmZlcigpIGlzIGNhbGxlZCBhbmQgdGhlbiBpZiBkZXNpcmVkCj4+PiBkZWZh dWx0IGNydGMgaWQgaXMgbWF0Y2hlZCB3aXRoIGRybV9mYl9oZWxwZXItPmNydGNfaW5mb1swIH4g bl0uY3J0Y19pZCwKPj4+IGl0IGdldHMgbW9kZV9zZXQgb2YgZHJtX2ZiX2hlbHBlci0+Y3J0Y19p bmZvW25dIGFuZCB0aGVuICBpdCBjYWxscwo+Pj4gZHJtX2NydGNfaGVscGVyX3NldF9jb25maWco bW9kZV9zZXQpLiBhdCB0aGlzIHRpbWUsIGFsbCB0aGUgaGFyZHdhcmUKPj4+IGNvbmZpZ3VyYXRp b25zIHdvdWxkIGJlIGNvbXBsZXRlZC4KPj4+Cj4+PiB0aGFuayB5b3UgaW4gYWR2YW5jZS4KPj4+ Cj4+PiBCZXN0IFJlZ2FyZHMKPj4+IElua2kgRGFlLgo+Pj4KPj4KPj4KPj4gX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gbGludXgtYXJtLWtlcm5lbCBt YWlsaW5nIGxpc3QKPj4gbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCj4+IGh0 dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5l bAo+Pgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4g ZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK PiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs Cj4KLS0KVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNlbmQgdGhlIGxpbmUgInVuc3Vi c2NyaWJlIGxpbnV4LWZiZGV2IiBpbgp0aGUgYm9keSBvZiBhIG1lc3NhZ2UgdG8gbWFqb3Jkb21v QHZnZXIua2VybmVsLm9yZwpNb3JlIG1ham9yZG9tbyBpbmZvIGF0ICBodHRwOi8vdmdlci5rZXJu ZWwub3JnL21ham9yZG9tby1pbmZvLmh0bWw= From mboxrd@z Thu Jan 1 00:00:00 1970 From: robdclark@gmail.com (Rob Clark) Date: Wed, 22 Jun 2011 08:07:06 -0500 Subject: Some questions about DRM(Direct Rendering Manager) In-Reply-To: References: <4E016EDC.30200@samsung.com> <4E0185E7.8020708@samsung.com> Message-ID: To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org fwiw, drm_fb_helper_single_fb_probe() calls register_framebuffer() (if that was the question?) BR, -R 2011/6/22 InKi Dae : > It adds dri-devel at lists.freedesktop.org to this mail thread. > Thank you. > > 2011? 6? 22? ?? 3:04, daeinki ?? ?: >> below is additional comments. >> >> daeinki ? ?: >>> Hi all, >>> >>> I'm writing Samsung SoC based DRM framework and this one includes FIMD >>> and HDMI driver as hardware dependent modules. and for now, encoder, >>> connector, crtc and fb module has been materialized almost. but I'm >>> contending with framebuffer setting issue(created fb_info should be >>> registered to linux framebuffer through register_framebuffer() or not)as >>> default framebuffer at booting time. >>> >>> at drm_fb_helper_single_fb_probe() of drm_fb_helper.c file, fb_helper's >>> fb_probe callback is called and this one creates new framebuffer and >>> returns a value more then 0 if true. internally, this process creates an >>> fb_info object and drm_framebuffer and then drm_framebuffer would be >>> added to mode_config.fb_list of the drm_device. >>> >> it's my mistake. return value is 0 if true, nonzero otherwise. >> >>> a value returned, new_fb is used to decide that it calls >>> register_framebuffer() or drm_fb_helper_set_par(). at this point, I am >>> confused it's a good way to call register_framebuffer() otherwise >>> drm_fb_helper_set_par(). if register_framebuffer() is called then I >>> guess drm_fb_helper_set_par() or drm_crtc_helper_set_config() should be >>> called somewhere subsequently to apply this one to real hardware because >>> previous process is just for maintaining data logically.(not set up data >>> to h/w) >>> >>> it's a right way to call register_framebuffer() and then >>> drm_fb_helper_set_par() or drm_crtc_helper_set_config()? otherwise just >>> only drm_fb_helper_set_par() or drm_crtc_helper_set_config() ignoring >>> register_framebuffer()? and what is the purpose of using >>> register_framebuffer()? >>> >> I understood that if fb_probe() callback is fail then fb_info object is >> registered to linux framebuffer through register_framebuffer() >> otherwise(if true) hardware configuration would be completed by >> drm_fb_helper_set_par() so the reason of using register_framebuffer() is >> that the case of failing fb_probe() callback, it is for drawing on only >> linux framebuffer. is it right? >> >>> In my case, first, register_framebuffer() is called and then if desired >>> default crtc id is matched with drm_fb_helper->crtc_info[0 ~ n].crtc_id, >>> it gets mode_set of drm_fb_helper->crtc_info[n] and then it calls >>> drm_crtc_helper_set_config(mode_set). at this time, all the hardware >>> configurations would be completed. >>> >>> thank you in advance. >>> >>> Best Regards >>> Inki Dae. >>> >> >> >> _______________________________________________ >> linux-arm-kernel mailing list >> linux-arm-kernel at lists.infradead.org >> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel >> > _______________________________________________ > dri-devel mailing list > dri-devel at lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/dri-devel > From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Clark Subject: Re: Some questions about DRM(Direct Rendering Manager) Date: Wed, 22 Jun 2011 08:07:06 -0500 Message-ID: References: <4E016EDC.30200@samsung.com> <4E0185E7.8020708@samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset="euc-kr" Content-Transfer-Encoding: base64 Return-path: Received: from mail-bw0-f49.google.com (mail-bw0-f49.google.com [209.85.214.49]) by gabe.freedesktop.org (Postfix) with ESMTP id DF9299E732 for ; Wed, 22 Jun 2011 06:07:08 -0700 (PDT) Received: by bwz1 with SMTP id 1so941228bwz.36 for ; Wed, 22 Jun 2011 06:07:08 -0700 (PDT) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org Errors-To: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org To: InKi Dae Cc: linux-fbdev , Kukjin Kim , Kyungmin Park , dri-devel@lists.freedesktop.org, daeinki , Paul Mundt , jesse.barnes@intel.com, linux-arm-kernel@lists.infradead.org List-Id: dri-devel@lists.freedesktop.org ZndpdywgZHJtX2ZiX2hlbHBlcl9zaW5nbGVfZmJfcHJvYmUoKSBjYWxscyByZWdpc3Rlcl9mcmFt ZWJ1ZmZlcigpIChpZgp0aGF0IHdhcyB0aGUgcXVlc3Rpb24/KQoKQlIsCi1SCgoyMDExLzYvMjIg SW5LaSBEYWUgPGRhZWlua2lAZ21haWwuY29tPjoKPiBJdCBhZGRzIGRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcgdG8gdGhpcyBtYWlsIHRocmVhZC4KPiBUaGFuayB5b3UuCj4KPiAyMDEx s+IgNr/5IDIywM8gv8DIxCAzOjA0LCBkYWVpbmtpIDxpbmtpLmRhZUBzYW1zdW5nLmNvbT601MDH ILi7Ogo+PiBiZWxvdyBpcyBhZGRpdGlvbmFsIGNvbW1lbnRzLgo+Pgo+PiBkYWVpbmtpIL60ILHb Ogo+Pj4gSGkgYWxsLAo+Pj4KPj4+IEknbSB3cml0aW5nIFNhbXN1bmcgU29DIGJhc2VkIERSTSBm cmFtZXdvcmsgYW5kIHRoaXMgb25lIGluY2x1ZGVzIEZJTUQKPj4+IGFuZCBIRE1JIGRyaXZlciBh cyBoYXJkd2FyZSBkZXBlbmRlbnQgbW9kdWxlcy4gYW5kIGZvciBub3csIGVuY29kZXIsCj4+PiBj b25uZWN0b3IsIGNydGMgYW5kIGZiIG1vZHVsZSBoYXMgYmVlbiBtYXRlcmlhbGl6ZWQgYWxtb3N0 LiBidXQgSSdtCj4+PiBjb250ZW5kaW5nIHdpdGggIGZyYW1lYnVmZmVyIHNldHRpbmcgaXNzdWUo Y3JlYXRlZCBmYl9pbmZvIHNob3VsZCBiZQo+Pj4gcmVnaXN0ZXJlZCB0byBsaW51eCBmcmFtZWJ1 ZmZlciB0aHJvdWdoIHJlZ2lzdGVyX2ZyYW1lYnVmZmVyKCkgb3Igbm90KWFzCj4+PiBkZWZhdWx0 IGZyYW1lYnVmZmVyIGF0IGJvb3RpbmcgdGltZS4KPj4+Cj4+PiBhdCBkcm1fZmJfaGVscGVyX3Np bmdsZV9mYl9wcm9iZSgpIG9mIGRybV9mYl9oZWxwZXIuYyBmaWxlLCBmYl9oZWxwZXIncwo+Pj4g ZmJfcHJvYmUgY2FsbGJhY2sgaXMgY2FsbGVkIGFuZCB0aGlzIG9uZSBjcmVhdGVzIG5ldyBmcmFt ZWJ1ZmZlciBhbmQKPj4+IHJldHVybnMgYSB2YWx1ZSBtb3JlIHRoZW4gMCBpZiB0cnVlLiBpbnRl cm5hbGx5LCB0aGlzIHByb2Nlc3MgY3JlYXRlcyBhbgo+Pj4gZmJfaW5mbyBvYmplY3QgYW5kIGRy bV9mcmFtZWJ1ZmZlciBhbmQgdGhlbiBkcm1fZnJhbWVidWZmZXIgd291bGQgYmUKPj4+IGFkZGVk IHRvIG1vZGVfY29uZmlnLmZiX2xpc3Qgb2YgdGhlIGRybV9kZXZpY2UuCj4+Pgo+PiBpdCdzIG15 IG1pc3Rha2UuIHJldHVybiB2YWx1ZSBpcyAwIGlmIHRydWUsIG5vbnplcm8gb3RoZXJ3aXNlLgo+ Pgo+Pj4gYSB2YWx1ZSByZXR1cm5lZCwgbmV3X2ZiIGlzIHVzZWQgdG8gZGVjaWRlIHRoYXQgaXQg Y2FsbHMKPj4+IHJlZ2lzdGVyX2ZyYW1lYnVmZmVyKCkgb3IgZHJtX2ZiX2hlbHBlcl9zZXRfcGFy KCkuIGF0IHRoaXMgcG9pbnQsIEkgYW0KPj4+IGNvbmZ1c2VkIGl0J3MgYSBnb29kIHdheSB0byBj YWxsIHJlZ2lzdGVyX2ZyYW1lYnVmZmVyKCkgb3RoZXJ3aXNlCj4+PiBkcm1fZmJfaGVscGVyX3Nl dF9wYXIoKS4gaWYgcmVnaXN0ZXJfZnJhbWVidWZmZXIoKSBpcyBjYWxsZWQgdGhlbiBJCj4+PiBn dWVzcyBkcm1fZmJfaGVscGVyX3NldF9wYXIoKSBvciBkcm1fY3J0Y19oZWxwZXJfc2V0X2NvbmZp ZygpIHNob3VsZCBiZQo+Pj4gY2FsbGVkIHNvbWV3aGVyZSBzdWJzZXF1ZW50bHkgdG8gYXBwbHkg dGhpcyBvbmUgdG8gcmVhbCBoYXJkd2FyZSBiZWNhdXNlCj4+PiBwcmV2aW91cyBwcm9jZXNzIGlz IGp1c3QgZm9yIG1haW50YWluaW5nIGRhdGEgbG9naWNhbGx5Lihub3Qgc2V0IHVwIGRhdGEKPj4+ IHRvIGgvdykKPj4+Cj4+PiBpdCdzIGEgcmlnaHQgd2F5IHRvIGNhbGwgcmVnaXN0ZXJfZnJhbWVi dWZmZXIoKSBhbmQgdGhlbgo+Pj4gZHJtX2ZiX2hlbHBlcl9zZXRfcGFyKCkgb3IgZHJtX2NydGNf aGVscGVyX3NldF9jb25maWcoKT8gb3RoZXJ3aXNlIGp1c3QKPj4+IG9ubHkgZHJtX2ZiX2hlbHBl cl9zZXRfcGFyKCkgb3IgZHJtX2NydGNfaGVscGVyX3NldF9jb25maWcoKSBpZ25vcmluZwo+Pj4g cmVnaXN0ZXJfZnJhbWVidWZmZXIoKT8gYW5kIHdoYXQgaXMgdGhlIHB1cnBvc2Ugb2YgdXNpbmcK Pj4+IHJlZ2lzdGVyX2ZyYW1lYnVmZmVyKCk/Cj4+Pgo+PiBJIHVuZGVyc3Rvb2QgdGhhdCBpZiBm Yl9wcm9iZSgpIGNhbGxiYWNrIGlzIGZhaWwgdGhlbiBmYl9pbmZvIG9iamVjdCBpcwo+PiByZWdp c3RlcmVkIHRvIGxpbnV4IGZyYW1lYnVmZmVyIHRocm91Z2ggcmVnaXN0ZXJfZnJhbWVidWZmZXIo KQo+PiBvdGhlcndpc2UoaWYgdHJ1ZSkgaGFyZHdhcmUgY29uZmlndXJhdGlvbiB3b3VsZCBiZSBj b21wbGV0ZWQgYnkKPj4gZHJtX2ZiX2hlbHBlcl9zZXRfcGFyKCkgc28gdGhlIHJlYXNvbiBvZiB1 c2luZyByZWdpc3Rlcl9mcmFtZWJ1ZmZlcigpIGlzCj4+IHRoYXQgdGhlIGNhc2Ugb2YgZmFpbGlu ZyBmYl9wcm9iZSgpIGNhbGxiYWNrLCBpdCBpcyBmb3IgZHJhd2luZyBvbiBvbmx5Cj4+IGxpbnV4 IGZyYW1lYnVmZmVyLiBpcyBpdCByaWdodD8KPj4KPj4+IEluIG15IGNhc2UsIGZpcnN0LCByZWdp c3Rlcl9mcmFtZWJ1ZmZlcigpIGlzIGNhbGxlZCBhbmQgdGhlbiBpZiBkZXNpcmVkCj4+PiBkZWZh dWx0IGNydGMgaWQgaXMgbWF0Y2hlZCB3aXRoIGRybV9mYl9oZWxwZXItPmNydGNfaW5mb1swIH4g bl0uY3J0Y19pZCwKPj4+IGl0IGdldHMgbW9kZV9zZXQgb2YgZHJtX2ZiX2hlbHBlci0+Y3J0Y19p bmZvW25dIGFuZCB0aGVuICBpdCBjYWxscwo+Pj4gZHJtX2NydGNfaGVscGVyX3NldF9jb25maWco bW9kZV9zZXQpLiBhdCB0aGlzIHRpbWUsIGFsbCB0aGUgaGFyZHdhcmUKPj4+IGNvbmZpZ3VyYXRp b25zIHdvdWxkIGJlIGNvbXBsZXRlZC4KPj4+Cj4+PiB0aGFuayB5b3UgaW4gYWR2YW5jZS4KPj4+ Cj4+PiBCZXN0IFJlZ2FyZHMKPj4+IElua2kgRGFlLgo+Pj4KPj4KPj4KPj4gX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gbGludXgtYXJtLWtlcm5lbCBt YWlsaW5nIGxpc3QKPj4gbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCj4+IGh0 dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5l bAo+Pgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4g ZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK PiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs Cj4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK