From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S964778AbcHBM3G (ORCPT ); Tue, 2 Aug 2016 08:29:06 -0400 Received: from mga09.intel.com ([134.134.136.24]:11219 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934785AbcHBM1N (ORCPT ); Tue, 2 Aug 2016 08:27:13 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.28,460,1464678000"; d="scan'208";a="1033595122" From: Jani Nikula To: Jiri Kosina , Linus Torvalds Cc: Dave Airlie , Daniel Vetter , DRI mailing list , Linux Kernel Mailing List , Chris Wilson Subject: Re: [git pull] drm for v4.8 In-Reply-To: Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo References: User-Agent: Notmuch/0.22+12~gbdd9442 (http://notmuchmail.org) Emacs/24.4.1 (x86_64-pc-linux-gnu) Date: Tue, 02 Aug 2016 15:27:04 +0300 Message-ID: <87fuqns6ef.fsf@intel.com> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 02 Aug 2016, Jiri Kosina wrote: > On Mon, 1 Aug 2016, Linus Torvalds wrote: > >> > This is the main drm pull request for 4.8, I'm down with a cold at the moment >> > so hopefully this isn't in too bad a state, I finished pulling stuff last >> > week mostly (nouveau fixes just went in today), so only this message should >> > be influenced by illness. Apologies to anyone who's major feature I missed :-) >> > >> > i915: >> > BXT support enabled by default >> > GVT-g infrastructure >> > GuC command submission and fixes >> > BXT workarounds >> > SKL/BKL workarounds >> > Demidlayering device registration >> > Thundering herd fixes >> > Missing pci ids >> > Atomic updates >> >> Hmm. I did the merge and pushed it out, but testing it on my laptop >> shows some very annoying flickering problem. > > In addition to that, what I see with current git (HEAD == 731c7d3a205, > i.e. the drm merge) is lockdep report during bootup about AB-BA between > mode_config.mutex and fb_notifier_list rwsem; will probably not have time > to look into it more (look at the code and / or bisect) until tomorrow, so > sending out early as a heads-up. > > Also, trying to suspend the machine to disk hangs, with the "suspend" LED > constantly blinking, LCD being blank, but the machine never actually > powering off. Not sure whether it might not be the very deadlock actually > triggering for real. There was [1] before my vacation to fix this, but it doesn't seem to have gone anywhere since. And it doesn't refer what caused the lockdep splat to begin with. BR, Jani. [1] http://patchwork.freedesktop.org/patch/msgid/1467286256-8870-1-git-send-email-chris@chris-wilson.co.uk > > > [ 8.731638] fbcon: inteldrmfb (fb0) is primary device > > [ 8.732611] ====================================================== > [ 8.732612] [ INFO: possible circular locking dependency detected ] > [ 8.732614] 4.7.0-10753-g731c7d3 #459 Not tainted > [ 8.732614] ------------------------------------------------------- > [ 8.732615] kworker/u8:3/60 is trying to acquire lock: > [ 8.732650] (&dev->mode_config.mutex){+.+.+.}, at: [] drm_modeset_lock_all+0x40/0x120 [drm] > [ 8.732651] > but task is already holding lock: > [ 8.732657] ((fb_notifier_list).rwsem){++++.+}, at: [] __blocking_notifier_call_chain+0x3a/0x70 > [ 8.732658] > which lock already depends on the new lock. > > [ 8.732658] > the existing dependency chain (in reverse order) is: > [ 8.732661] > -> #1 ((fb_notifier_list).rwsem){++++.+}: > [ 8.732665] [] lock_acquire+0xb0/0x1e0 > [ 8.732669] [] down_write+0x55/0xc0 > [ 8.732671] [] blocking_notifier_chain_register+0x21/0xb0 > [ 8.732674] [] fb_register_client+0x18/0x20 > [ 8.732676] [] backlight_device_register+0x138/0x250 > [ 8.732746] [] intel_backlight_device_register+0xa2/0x160 [i915] > [ 8.732791] [] intel_connector_register+0xe/0x10 [i915] > [ 8.732809] [] drm_connector_register+0x49/0x80 [drm] > [ 8.732827] [] drm_modeset_register_all+0x1d0/0x260 [drm] > [ 8.732843] [] drm_dev_register+0xc2/0xd0 [drm] > [ 8.732878] [] i915_driver_load+0x745/0x13e0 [i915] > [ 8.732914] [] i915_pci_probe+0x4f/0x70 [i915] > [ 8.732917] [] local_pci_probe+0x45/0xa0 > [ 8.732920] [] pci_device_probe+0xe1/0x130 > [ 8.732923] [] driver_probe_device+0x1a8/0x460 > [ 8.732925] [] __driver_attach+0xcd/0xf0 > [ 8.732927] [] bus_for_each_dev+0x64/0xa0 > [ 8.732929] [] driver_attach+0x1e/0x20 > [ 8.732931] [] bus_add_driver+0x1d3/0x290 > [ 8.732933] [] driver_register+0x60/0xe0 > [ 8.732935] [] __pci_register_driver+0x60/0x70 > [ 8.732972] [] i915_init+0x5d/0x64 [i915] > [ 8.732975] [] do_one_initcall+0x3d/0x160 > [ 8.732979] [] do_init_module+0x60/0x1dc > [ 8.732982] [] load_module+0x142e/0x1bf0 > [ 8.732984] [] SYSC_finit_module+0xa9/0xd0 > [ 8.732986] [] SyS_finit_module+0xe/0x10 > [ 8.732989] [] entry_SYSCALL_64_fastpath+0x1c/0xac > [ 8.732992] > -> #0 (&dev->mode_config.mutex){+.+.+.}: > [ 8.732995] [] __lock_acquire+0x16cc/0x1700 > [ 8.732997] [] lock_acquire+0xb0/0x1e0 > [ 8.732999] [] mutex_lock_nested+0x71/0x390 > [ 8.733019] [] drm_modeset_lock_all+0x40/0x120 [drm] > [ 8.733034] [] drm_fb_helper_restore_fbdev_mode_unlocked+0x2b/0x80 [drm_kms_helper] > [ 8.733043] [] drm_fb_helper_set_par+0x2c/0x50 [drm_kms_helper] > [ 8.733088] [] intel_fbdev_set_par+0x1a/0x60 [i915] > [ 8.733091] [] fbcon_init+0x4d8/0x550 > [ 8.733094] [] visual_init+0xd6/0x130 > [ 8.733097] [] do_bind_con_driver+0x146/0x310 > [ 8.733099] [] do_take_over_console+0x106/0x180 > [ 8.733101] [] do_fbcon_takeover+0x57/0xb0 > [ 8.733104] [] fbcon_event_notify+0x726/0x870 > [ 8.733106] [] notifier_call_chain+0x4e/0xa0 > [ 8.733109] [] __blocking_notifier_call_chain+0x53/0x70 > [ 8.733111] [] blocking_notifier_call_chain+0x16/0x20 > [ 8.733113] [] fb_notifier_call_chain+0x1b/0x20 > [ 8.733116] [] register_framebuffer+0x239/0x320 > [ 8.733126] [] drm_fb_helper_initial_config+0x25a/0x3a3 [drm_kms_helper] > [ 8.733169] [] intel_fbdev_initial_config+0x18/0x30 [i915] > [ 8.733172] [] async_run_entry_fn+0x4a/0x140 > [ 8.733174] [] process_one_work+0x1de/0x670 > [ 8.733176] [] worker_thread+0x125/0x4a0 > [ 8.733178] [] kthread+0xf2/0x110 > [ 8.733181] [] ret_from_fork+0x1f/0x40 > [ 8.733181] > other info that might help us debug this: > > [ 8.733182] Possible unsafe locking scenario: > > [ 8.733183] CPU0 CPU1 > [ 8.733183] ---- ---- > [ 8.733185] lock((fb_notifier_list).rwsem); > [ 8.733186] lock(&dev->mode_config.mutex); > [ 8.733187] lock((fb_notifier_list).rwsem); > [ 8.733188] lock(&dev->mode_config.mutex); > [ 8.733189] > *** DEADLOCK *** > > [ 8.733190] 6 locks held by kworker/u8:3/60: > [ 8.733194] #0: ("events_unbound"){.+.+.+}, at: [] process_one_work+0x15f/0x670 > [ 8.733198] #1: ((&entry->work)){+.+.+.}, at: [] process_one_work+0x15f/0x670 > [ 8.733201] #2: (registration_lock){+.+.+.}, at: [] register_framebuffer+0x27/0x320 > [ 8.733205] #3: (console_lock){+.+.+.}, at: [] register_framebuffer+0x256/0x320 > [ 8.733208] #4: (&fb_info->lock){+.+.+.}, at: [] lock_fb_info+0x1d/0x40 > [ 8.733212] #5: ((fb_notifier_list).rwsem){++++.+}, at: [] __blocking_notifier_call_chain+0x3a/0x70 > [ 8.733212] > stack backtrace: > [ 8.733214] CPU: 1 PID: 60 Comm: kworker/u8:3 Not tainted 4.7.0-10753-g731c7d3 #459 > [ 8.733215] Hardware name: LENOVO 7470BN2/7470BN2, BIOS 6DET38WW (2.02 ) 12/19/2008 > [ 8.733218] Workqueue: events_unbound async_run_entry_fn > [ 8.733221] 0000000000000000 ffff95f0b77537d8 ffffffff8d36c09e ffffffff8e822d00 > [ 8.733224] ffffffff8e822d00 ffff95f0b7753818 ffffffff8d18205b ffff95f0b7753850 > [ 8.733226] ffff95f0b774d718 0000000000000005 0000000000000006 ffff95f0b774cd40 > [ 8.733227] Call Trace: > [ 8.733230] [] dump_stack+0x67/0x99 > [ 8.733232] [] print_circular_bug+0x200/0x20e > [ 8.733235] [] __lock_acquire+0x16cc/0x1700 > [ 8.733238] [] ? sched_clock_local+0x18/0x80 > [ 8.733240] [] lock_acquire+0xb0/0x1e0 > [ 8.733260] [] ? drm_modeset_lock_all+0x40/0x120 [drm] > [ 8.733262] [] mutex_lock_nested+0x71/0x390 > [ 8.733281] [] ? drm_modeset_lock_all+0x40/0x120 [drm] > [ 8.733301] [] ? drm_modeset_lock_all+0x40/0x120 [drm] > [ 8.733304] [] ? kmem_cache_alloc_trace+0x25c/0x320 > [ 8.733322] [] ? drm_modeset_lock_all+0x25/0x120 [drm] > [ 8.733341] [] drm_modeset_lock_all+0x40/0x120 [drm] > [ 8.733351] [] drm_fb_helper_restore_fbdev_mode_unlocked+0x2b/0x80 [drm_kms_helper] > [ 8.733360] [] drm_fb_helper_set_par+0x2c/0x50 [drm_kms_helper] > [ 8.733403] [] intel_fbdev_set_par+0x1a/0x60 [i915] > [ 8.733406] [] fbcon_init+0x4d8/0x550 > [ 8.733408] [] visual_init+0xd6/0x130 > [ 8.733410] [] do_bind_con_driver+0x146/0x310 > [ 8.733413] [] do_take_over_console+0x106/0x180 > [ 8.733415] [] do_fbcon_takeover+0x57/0xb0 > [ 8.733417] [] fbcon_event_notify+0x726/0x870 > [ 8.733419] [] notifier_call_chain+0x4e/0xa0 > [ 8.733422] [] __blocking_notifier_call_chain+0x53/0x70 > [ 8.733424] [] blocking_notifier_call_chain+0x16/0x20 > [ 8.733426] [] fb_notifier_call_chain+0x1b/0x20 > [ 8.733427] [] register_framebuffer+0x239/0x320 > [ 8.733430] [] ? vga_switcheroo_client_fb_set+0x60/0x70 > [ 8.733440] [] drm_fb_helper_initial_config+0x25a/0x3a3 [drm_kms_helper] > [ 8.733483] [] intel_fbdev_initial_config+0x18/0x30 [i915] > [ 8.733484] [] async_run_entry_fn+0x4a/0x140 > [ 8.733486] [] process_one_work+0x1de/0x670 > [ 8.733488] [] ? process_one_work+0x15f/0x670 > [ 8.733490] [] worker_thread+0x125/0x4a0 > [ 8.733492] [] ? process_one_work+0x670/0x670 > [ 8.733494] [] kthread+0xf2/0x110 > [ 8.733497] [] ret_from_fork+0x1f/0x40 > [ 8.733499] [] ? kthread_create_on_node+0x220/0x220 -- Jani Nikula, Intel Open Source Technology Center From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [git pull] drm for v4.8 Date: Tue, 02 Aug 2016 15:27:04 +0300 Message-ID: <87fuqns6ef.fsf@intel.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id CB2DF6E58F for ; Tue, 2 Aug 2016 12:27:11 +0000 (UTC) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jiri Kosina , Linus Torvalds Cc: Daniel Vetter , Linux Kernel Mailing List , DRI mailing list List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCAwMiBBdWcgMjAxNiwgSmlyaSBLb3NpbmEgPGppa29zQGtlcm5lbC5vcmc+IHdyb3Rl Ogo+IE9uIE1vbiwgMSBBdWcgMjAxNiwgTGludXMgVG9ydmFsZHMgd3JvdGU6Cj4KPj4gPiBUaGlz IGlzIHRoZSBtYWluIGRybSBwdWxsIHJlcXVlc3QgZm9yIDQuOCwgSSdtIGRvd24gd2l0aCBhIGNv bGQgYXQgdGhlIG1vbWVudAo+PiA+IHNvIGhvcGVmdWxseSB0aGlzIGlzbid0IGluIHRvbyBiYWQg YSBzdGF0ZSwgSSBmaW5pc2hlZCBwdWxsaW5nIHN0dWZmIGxhc3QKPj4gPiB3ZWVrIG1vc3RseSAo bm91dmVhdSBmaXhlcyBqdXN0IHdlbnQgaW4gdG9kYXkpLCBzbyBvbmx5IHRoaXMgbWVzc2FnZSBz aG91bGQKPj4gPiBiZSBpbmZsdWVuY2VkIGJ5IGlsbG5lc3MuIEFwb2xvZ2llcyB0byBhbnlvbmUg d2hvJ3MgbWFqb3IgZmVhdHVyZSBJIG1pc3NlZCA6LSkKPj4gPgo+PiA+IGk5MTU6Cj4+ID4gICAg ICAgICBCWFQgc3VwcG9ydCBlbmFibGVkIGJ5IGRlZmF1bHQKPj4gPiAgICAgICAgIEdWVC1nIGlu ZnJhc3RydWN0dXJlCj4+ID4gICAgICAgICBHdUMgY29tbWFuZCBzdWJtaXNzaW9uIGFuZCBmaXhl cwo+PiA+ICAgICAgICAgQlhUIHdvcmthcm91bmRzCj4+ID4gICAgICAgICBTS0wvQktMIHdvcmth cm91bmRzCj4+ID4gICAgICAgICBEZW1pZGxheWVyaW5nIGRldmljZSByZWdpc3RyYXRpb24KPj4g PiAgICAgICAgIFRodW5kZXJpbmcgaGVyZCBmaXhlcwo+PiA+ICAgICAgICAgTWlzc2luZyBwY2kg aWRzCj4+ID4gICAgICAgICBBdG9taWMgdXBkYXRlcwo+PiAKPj4gSG1tLiBJIGRpZCB0aGUgbWVy Z2UgYW5kIHB1c2hlZCBpdCBvdXQsIGJ1dCB0ZXN0aW5nIGl0IG9uIG15IGxhcHRvcAo+PiBzaG93 cyBzb21lIHZlcnkgYW5ub3lpbmcgZmxpY2tlcmluZyBwcm9ibGVtLgo+Cj4gSW4gYWRkaXRpb24g dG8gdGhhdCwgd2hhdCBJIHNlZSB3aXRoIGN1cnJlbnQgZ2l0IChIRUFEID09IDczMWM3ZDNhMjA1 LCAKPiBpLmUuIHRoZSBkcm0gbWVyZ2UpIGlzIGxvY2tkZXAgcmVwb3J0IGR1cmluZyBib290dXAg YWJvdXQgQUItQkEgYmV0d2VlbiAKPiBtb2RlX2NvbmZpZy5tdXRleCBhbmQgZmJfbm90aWZpZXJf bGlzdCByd3NlbTsgd2lsbCBwcm9iYWJseSBub3QgaGF2ZSB0aW1lIAo+IHRvIGxvb2sgaW50byBp dCBtb3JlIChsb29rIGF0IHRoZSBjb2RlIGFuZCAvIG9yIGJpc2VjdCkgdW50aWwgdG9tb3Jyb3cs IHNvIAo+IHNlbmRpbmcgb3V0IGVhcmx5IGFzIGEgaGVhZHMtdXAuCj4KPiBBbHNvLCB0cnlpbmcg dG8gc3VzcGVuZCB0aGUgbWFjaGluZSB0byBkaXNrIGhhbmdzLCB3aXRoIHRoZSAic3VzcGVuZCIg TEVEIAo+IGNvbnN0YW50bHkgYmxpbmtpbmcsIExDRCBiZWluZyBibGFuaywgYnV0IHRoZSBtYWNo aW5lIG5ldmVyIGFjdHVhbGx5IAo+IHBvd2VyaW5nIG9mZi4gTm90IHN1cmUgd2hldGhlciBpdCBt aWdodCBub3QgYmUgdGhlIHZlcnkgZGVhZGxvY2sgYWN0dWFsbHkgCj4gdHJpZ2dlcmluZyBmb3Ig cmVhbC4KClRoZXJlIHdhcyBbMV0gYmVmb3JlIG15IHZhY2F0aW9uIHRvIGZpeCB0aGlzLCBidXQg aXQgZG9lc24ndCBzZWVtIHRvCmhhdmUgZ29uZSBhbnl3aGVyZSBzaW5jZS4gQW5kIGl0IGRvZXNu J3QgcmVmZXIgd2hhdCBjYXVzZWQgdGhlIGxvY2tkZXAKc3BsYXQgdG8gYmVnaW4gd2l0aC4KCkJS LApKYW5pLgoKWzFdIGh0dHA6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3BhdGNoL21zZ2lk LzE0NjcyODYyNTYtODg3MC0xLWdpdC1zZW5kLWVtYWlsLWNocmlzQGNocmlzLXdpbHNvbi5jby51 awoKPgo+Cj4gWyAgICA4LjczMTYzOF0gZmJjb246IGludGVsZHJtZmIgKGZiMCkgaXMgcHJpbWFy eSBkZXZpY2UKPgo+IFsgICAgOC43MzI2MTFdID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQo+IFsgICAgOC43MzI2MTJdIFsgSU5GTzogcG9zc2li bGUgY2lyY3VsYXIgbG9ja2luZyBkZXBlbmRlbmN5IGRldGVjdGVkIF0KPiBbICAgIDguNzMyNjE0 XSA0LjcuMC0xMDc1My1nNzMxYzdkMyAjNDU5IE5vdCB0YWludGVkCj4gWyAgICA4LjczMjYxNF0g LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ IFsgICAgOC43MzI2MTVdIGt3b3JrZXIvdTg6My82MCBpcyB0cnlpbmcgdG8gYWNxdWlyZSBsb2Nr Ogo+IFsgICAgOC43MzI2NTBdICAoJmRldi0+bW9kZV9jb25maWcubXV0ZXgpeysuKy4rLn0sIGF0 OiBbPGZmZmZmZmZmYzAyYmZkMDA+XSBkcm1fbW9kZXNldF9sb2NrX2FsbCsweDQwLzB4MTIwIFtk cm1dCj4gWyAgICA4LjczMjY1MV0gCj4gYnV0IHRhc2sgaXMgYWxyZWFkeSBob2xkaW5nIGxvY2s6 Cj4gWyAgICA4LjczMjY1N10gICgoZmJfbm90aWZpZXJfbGlzdCkucndzZW0peysrKysuK30sIGF0 OiBbPGZmZmZmZmZmOGQwOGZlMmE+XSBfX2Jsb2NraW5nX25vdGlmaWVyX2NhbGxfY2hhaW4rMHgz YS8weDcwCj4gWyAgICA4LjczMjY1OF0gCj4gd2hpY2ggbG9jayBhbHJlYWR5IGRlcGVuZHMgb24g dGhlIG5ldyBsb2NrLgo+Cj4gWyAgICA4LjczMjY1OF0gCj4gdGhlIGV4aXN0aW5nIGRlcGVuZGVu Y3kgY2hhaW4gKGluIHJldmVyc2Ugb3JkZXIpIGlzOgo+IFsgICAgOC43MzI2NjFdIAo+IC0+ICMx ICgoZmJfbm90aWZpZXJfbGlzdCkucndzZW0peysrKysuK306Cj4gWyAgICA4LjczMjY2NV0gICAg ICAgIFs8ZmZmZmZmZmY4ZDBjMjJkMD5dIGxvY2tfYWNxdWlyZSsweGIwLzB4MWUwCj4gWyAgICA4 LjczMjY2OV0gICAgICAgIFs8ZmZmZmZmZmY4ZDZhMGIyNT5dIGRvd25fd3JpdGUrMHg1NS8weGMw Cj4gWyAgICA4LjczMjY3MV0gICAgICAgIFs8ZmZmZmZmZmY4ZDA4ZmZiMT5dIGJsb2NraW5nX25v dGlmaWVyX2NoYWluX3JlZ2lzdGVyKzB4MjEvMHhiMAo+IFsgICAgOC43MzI2NzRdICAgICAgICBb PGZmZmZmZmZmOGQzZDEzMTg+XSBmYl9yZWdpc3Rlcl9jbGllbnQrMHgxOC8weDIwCj4gWyAgICA4 LjczMjY3Nl0gICAgICAgIFs8ZmZmZmZmZmY4ZDNkMGI4OD5dIGJhY2tsaWdodF9kZXZpY2VfcmVn aXN0ZXIrMHgxMzgvMHgyNTAKPiBbICAgIDguNzMyNzQ2XSAgICAgICAgWzxmZmZmZmZmZmMwNTY4 OTEyPl0gaW50ZWxfYmFja2xpZ2h0X2RldmljZV9yZWdpc3RlcisweGEyLzB4MTYwIFtpOTE1XQo+ IFsgICAgOC43MzI3OTFdICAgICAgICBbPGZmZmZmZmZmYzA1MzczNWU+XSBpbnRlbF9jb25uZWN0 b3JfcmVnaXN0ZXIrMHhlLzB4MTAgW2k5MTVdCj4gWyAgICA4LjczMjgwOV0gICAgICAgIFs8ZmZm ZmZmZmZjMDJhZTM4OT5dIGRybV9jb25uZWN0b3JfcmVnaXN0ZXIrMHg0OS8weDgwIFtkcm1dCj4g WyAgICA4LjczMjgyN10gICAgICAgIFs8ZmZmZmZmZmZjMDJiMjhhMD5dIGRybV9tb2Rlc2V0X3Jl Z2lzdGVyX2FsbCsweDFkMC8weDI2MCBbZHJtXQo+IFsgICAgOC43MzI4NDNdICAgICAgICBbPGZm ZmZmZmZmYzAyYTljMjI+XSBkcm1fZGV2X3JlZ2lzdGVyKzB4YzIvMHhkMCBbZHJtXQo+IFsgICAg OC43MzI4NzhdICAgICAgICBbPGZmZmZmZmZmYzA0YTZjZTU+XSBpOTE1X2RyaXZlcl9sb2FkKzB4 NzQ1LzB4MTNlMCBbaTkxNV0KPiBbICAgIDguNzMyOTE0XSAgICAgICAgWzxmZmZmZmZmZmMwNGIx NzNmPl0gaTkxNV9wY2lfcHJvYmUrMHg0Zi8weDcwIFtpOTE1XQo+IFsgICAgOC43MzI5MTddICAg ICAgICBbPGZmZmZmZmZmOGQzYWY3ZDU+XSBsb2NhbF9wY2lfcHJvYmUrMHg0NS8weGEwCj4gWyAg ICA4LjczMjkyMF0gICAgICAgIFs8ZmZmZmZmZmY4ZDNiMGJmMT5dIHBjaV9kZXZpY2VfcHJvYmUr MHhlMS8weDEzMAo+IFsgICAgOC43MzI5MjNdICAgICAgICBbPGZmZmZmZmZmOGQ0ODliZTg+XSBk cml2ZXJfcHJvYmVfZGV2aWNlKzB4MWE4LzB4NDYwCj4gWyAgICA4LjczMjkyNV0gICAgICAgIFs8 ZmZmZmZmZmY4ZDQ4OWY2ZD5dIF9fZHJpdmVyX2F0dGFjaCsweGNkLzB4ZjAKPiBbICAgIDguNzMy OTI3XSAgICAgICAgWzxmZmZmZmZmZjhkNDg3OGE0Pl0gYnVzX2Zvcl9lYWNoX2RldisweDY0LzB4 YTAKPiBbICAgIDguNzMyOTI5XSAgICAgICAgWzxmZmZmZmZmZjhkNDg5NGVlPl0gZHJpdmVyX2F0 dGFjaCsweDFlLzB4MjAKPiBbICAgIDguNzMyOTMxXSAgICAgICAgWzxmZmZmZmZmZjhkNDg4Zjgz Pl0gYnVzX2FkZF9kcml2ZXIrMHgxZDMvMHgyOTAKPiBbICAgIDguNzMyOTMzXSAgICAgICAgWzxm ZmZmZmZmZjhkNDhhZDMwPl0gZHJpdmVyX3JlZ2lzdGVyKzB4NjAvMHhlMAo+IFsgICAgOC43MzI5 MzVdICAgICAgICBbPGZmZmZmZmZmOGQzYWYxMDA+XSBfX3BjaV9yZWdpc3Rlcl9kcml2ZXIrMHg2 MC8weDcwCj4gWyAgICA4LjczMjk3Ml0gICAgICAgIFs8ZmZmZmZmZmZjMDVlYzA1ZD5dIGk5MTVf aW5pdCsweDVkLzB4NjQgW2k5MTVdCj4gWyAgICA4LjczMjk3NV0gICAgICAgIFs8ZmZmZmZmZmY4 ZDAwMDQxZD5dIGRvX29uZV9pbml0Y2FsbCsweDNkLzB4MTYwCj4gWyAgICA4LjczMjk3OV0gICAg ICAgIFs8ZmZmZmZmZmY4ZDE4MmJmZD5dIGRvX2luaXRfbW9kdWxlKzB4NjAvMHgxZGMKPiBbICAg IDguNzMyOTgyXSAgICAgICAgWzxmZmZmZmZmZjhkMTA3YTVlPl0gbG9hZF9tb2R1bGUrMHgxNDJl LzB4MWJmMAo+IFsgICAgOC43MzI5ODRdICAgICAgICBbPGZmZmZmZmZmOGQxMDg0NDk+XSBTWVND X2Zpbml0X21vZHVsZSsweGE5LzB4ZDAKPiBbICAgIDguNzMyOTg2XSAgICAgICAgWzxmZmZmZmZm ZjhkMTA4NDhlPl0gU3lTX2Zpbml0X21vZHVsZSsweGUvMHgxMAo+IFsgICAgOC43MzI5ODldICAg ICAgICBbPGZmZmZmZmZmOGQ2YTM4ZTk+XSBlbnRyeV9TWVNDQUxMXzY0X2Zhc3RwYXRoKzB4MWMv MHhhYwo+IFsgICAgOC43MzI5OTJdIAo+IC0+ICMwICgmZGV2LT5tb2RlX2NvbmZpZy5tdXRleCl7 Ky4rLisufToKPiBbICAgIDguNzMyOTk1XSAgICAgICAgWzxmZmZmZmZmZjhkMGMxZTdjPl0gX19s b2NrX2FjcXVpcmUrMHgxNmNjLzB4MTcwMAo+IFsgICAgOC43MzI5OTddICAgICAgICBbPGZmZmZm ZmZmOGQwYzIyZDA+XSBsb2NrX2FjcXVpcmUrMHhiMC8weDFlMAo+IFsgICAgOC43MzI5OTldICAg ICAgICBbPGZmZmZmZmZmOGQ2OWYyZDE+XSBtdXRleF9sb2NrX25lc3RlZCsweDcxLzB4MzkwCj4g WyAgICA4LjczMzAxOV0gICAgICAgIFs8ZmZmZmZmZmZjMDJiZmQwMD5dIGRybV9tb2Rlc2V0X2xv Y2tfYWxsKzB4NDAvMHgxMjAgW2RybV0KPiBbICAgIDguNzMzMDM0XSAgICAgICAgWzxmZmZmZmZm ZmMwNDc2NDBiPl0gZHJtX2ZiX2hlbHBlcl9yZXN0b3JlX2ZiZGV2X21vZGVfdW5sb2NrZWQrMHgy Yi8weDgwIFtkcm1fa21zX2hlbHBlcl0KPiBbICAgIDguNzMzMDQzXSAgICAgICAgWzxmZmZmZmZm ZmMwNDc2NDhjPl0gZHJtX2ZiX2hlbHBlcl9zZXRfcGFyKzB4MmMvMHg1MCBbZHJtX2ttc19oZWxw ZXJdCj4gWyAgICA4LjczMzA4OF0gICAgICAgIFs8ZmZmZmZmZmZjMDU0NzZhYT5dIGludGVsX2Zi ZGV2X3NldF9wYXIrMHgxYS8weDYwIFtpOTE1XQo+IFsgICAgOC43MzMwOTFdICAgICAgICBbPGZm ZmZmZmZmOGQzY2UyYjg+XSBmYmNvbl9pbml0KzB4NGQ4LzB4NTUwCj4gWyAgICA4LjczMzA5NF0g ICAgICAgIFs8ZmZmZmZmZmY4ZDQ1MDUyNj5dIHZpc3VhbF9pbml0KzB4ZDYvMHgxMzAKPiBbICAg IDguNzMzMDk3XSAgICAgICAgWzxmZmZmZmZmZjhkNDUyYWI2Pl0gZG9fYmluZF9jb25fZHJpdmVy KzB4MTQ2LzB4MzEwCj4gWyAgICA4LjczMzA5OV0gICAgICAgIFs8ZmZmZmZmZmY4ZDQ1MmY2Nj5d IGRvX3Rha2Vfb3Zlcl9jb25zb2xlKzB4MTA2LzB4MTgwCj4gWyAgICA4LjczMzEwMV0gICAgICAg IFs8ZmZmZmZmZmY4ZDNjOTc3Nz5dIGRvX2ZiY29uX3Rha2VvdmVyKzB4NTcvMHhiMAo+IFsgICAg OC43MzMxMDRdICAgICAgICBbPGZmZmZmZmZmOGQzY2VkZDY+XSBmYmNvbl9ldmVudF9ub3RpZnkr MHg3MjYvMHg4NzAKPiBbICAgIDguNzMzMTA2XSAgICAgICAgWzxmZmZmZmZmZjhkMDhmYmZlPl0g bm90aWZpZXJfY2FsbF9jaGFpbisweDRlLzB4YTAKPiBbICAgIDguNzMzMTA5XSAgICAgICAgWzxm ZmZmZmZmZjhkMDhmZTQzPl0gX19ibG9ja2luZ19ub3RpZmllcl9jYWxsX2NoYWluKzB4NTMvMHg3 MAo+IFsgICAgOC43MzMxMTFdICAgICAgICBbPGZmZmZmZmZmOGQwOGZlNzY+XSBibG9ja2luZ19u b3RpZmllcl9jYWxsX2NoYWluKzB4MTYvMHgyMAo+IFsgICAgOC43MzMxMTNdICAgICAgICBbPGZm ZmZmZmZmOGQzZDEzNWI+XSBmYl9ub3RpZmllcl9jYWxsX2NoYWluKzB4MWIvMHgyMAo+IFsgICAg OC43MzMxMTZdICAgICAgICBbPGZmZmZmZmZmOGQzZDMzNzk+XSByZWdpc3Rlcl9mcmFtZWJ1ZmZl cisweDIzOS8weDMyMAo+IFsgICAgOC43MzMxMjZdICAgICAgICBbPGZmZmZmZmZmYzA0NzY3MGE+ XSBkcm1fZmJfaGVscGVyX2luaXRpYWxfY29uZmlnKzB4MjVhLzB4M2EzIFtkcm1fa21zX2hlbHBl cl0KPiBbICAgIDguNzMzMTY5XSAgICAgICAgWzxmZmZmZmZmZmMwNTQ4OTM4Pl0gaW50ZWxfZmJk ZXZfaW5pdGlhbF9jb25maWcrMHgxOC8weDMwIFtpOTE1XQo+IFsgICAgOC43MzMxNzJdICAgICAg ICBbPGZmZmZmZmZmOGQwOTFhYWE+XSBhc3luY19ydW5fZW50cnlfZm4rMHg0YS8weDE0MAo+IFsg ICAgOC43MzMxNzRdICAgICAgICBbPGZmZmZmZmZmOGQwODc3MWU+XSBwcm9jZXNzX29uZV93b3Jr KzB4MWRlLzB4NjcwCj4gWyAgICA4LjczMzE3Nl0gICAgICAgIFs8ZmZmZmZmZmY4ZDA4N2NkNT5d IHdvcmtlcl90aHJlYWQrMHgxMjUvMHg0YTAKPiBbICAgIDguNzMzMTc4XSAgICAgICAgWzxmZmZm ZmZmZjhkMDhlN2UyPl0ga3RocmVhZCsweGYyLzB4MTEwCj4gWyAgICA4LjczMzE4MV0gICAgICAg IFs8ZmZmZmZmZmY4ZDZhM2IyZj5dIHJldF9mcm9tX2ZvcmsrMHgxZi8weDQwCj4gWyAgICA4Ljcz MzE4MV0gCj4gb3RoZXIgaW5mbyB0aGF0IG1pZ2h0IGhlbHAgdXMgZGVidWcgdGhpczoKPgo+IFsg ICAgOC43MzMxODJdICBQb3NzaWJsZSB1bnNhZmUgbG9ja2luZyBzY2VuYXJpbzoKPgo+IFsgICAg OC43MzMxODNdICAgICAgICBDUFUwICAgICAgICAgICAgICAgICAgICBDUFUxCj4gWyAgICA4Ljcz MzE4M10gICAgICAgIC0tLS0gICAgICAgICAgICAgICAgICAgIC0tLS0KPiBbICAgIDguNzMzMTg1 XSAgIGxvY2soKGZiX25vdGlmaWVyX2xpc3QpLnJ3c2VtKTsKPiBbICAgIDguNzMzMTg2XSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jaygmZGV2LT5tb2RlX2NvbmZpZy5tdXRleCk7 Cj4gWyAgICA4LjczMzE4N10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2soKGZi X25vdGlmaWVyX2xpc3QpLnJ3c2VtKTsKPiBbICAgIDguNzMzMTg4XSAgIGxvY2soJmRldi0+bW9k ZV9jb25maWcubXV0ZXgpOwo+IFsgICAgOC43MzMxODldIAo+ICAqKiogREVBRExPQ0sgKioqCj4K PiBbICAgIDguNzMzMTkwXSA2IGxvY2tzIGhlbGQgYnkga3dvcmtlci91ODozLzYwOgo+IFsgICAg OC43MzMxOTRdICAjMDogICgiZXZlbnRzX3VuYm91bmQiKXsuKy4rLit9LCBhdDogWzxmZmZmZmZm ZjhkMDg3NjlmPl0gcHJvY2Vzc19vbmVfd29yaysweDE1Zi8weDY3MAo+IFsgICAgOC43MzMxOThd ICAjMTogICgoJmVudHJ5LT53b3JrKSl7Ky4rLisufSwgYXQ6IFs8ZmZmZmZmZmY4ZDA4NzY5Zj5d IHByb2Nlc3Nfb25lX3dvcmsrMHgxNWYvMHg2NzAKPiBbICAgIDguNzMzMjAxXSAgIzI6ICAocmVn aXN0cmF0aW9uX2xvY2speysuKy4rLn0sIGF0OiBbPGZmZmZmZmZmOGQzZDMxNjc+XSByZWdpc3Rl cl9mcmFtZWJ1ZmZlcisweDI3LzB4MzIwCj4gWyAgICA4LjczMzIwNV0gICMzOiAgKGNvbnNvbGVf bG9jayl7Ky4rLisufSwgYXQ6IFs8ZmZmZmZmZmY4ZDNkMzM5Nj5dIHJlZ2lzdGVyX2ZyYW1lYnVm ZmVyKzB4MjU2LzB4MzIwCj4gWyAgICA4LjczMzIwOF0gICM0OiAgKCZmYl9pbmZvLT5sb2NrKXsr LisuKy59LCBhdDogWzxmZmZmZmZmZjhkM2QxNzhkPl0gbG9ja19mYl9pbmZvKzB4MWQvMHg0MAo+ IFsgICAgOC43MzMyMTJdICAjNTogICgoZmJfbm90aWZpZXJfbGlzdCkucndzZW0peysrKysuK30s IGF0OiBbPGZmZmZmZmZmOGQwOGZlMmE+XSBfX2Jsb2NraW5nX25vdGlmaWVyX2NhbGxfY2hhaW4r MHgzYS8weDcwCj4gWyAgICA4LjczMzIxMl0gCj4gc3RhY2sgYmFja3RyYWNlOgo+IFsgICAgOC43 MzMyMTRdIENQVTogMSBQSUQ6IDYwIENvbW06IGt3b3JrZXIvdTg6MyBOb3QgdGFpbnRlZCA0Ljcu MC0xMDc1My1nNzMxYzdkMyAjNDU5Cj4gWyAgICA4LjczMzIxNV0gSGFyZHdhcmUgbmFtZTogTEVO T1ZPIDc0NzBCTjIvNzQ3MEJOMiwgQklPUyA2REVUMzhXVyAoMi4wMiApIDEyLzE5LzIwMDgKPiBb ICAgIDguNzMzMjE4XSBXb3JrcXVldWU6IGV2ZW50c191bmJvdW5kIGFzeW5jX3J1bl9lbnRyeV9m bgo+IFsgICAgOC43MzMyMjFdICAwMDAwMDAwMDAwMDAwMDAwIGZmZmY5NWYwYjc3NTM3ZDggZmZm ZmZmZmY4ZDM2YzA5ZSBmZmZmZmZmZjhlODIyZDAwCj4gWyAgICA4LjczMzIyNF0gIGZmZmZmZmZm OGU4MjJkMDAgZmZmZjk1ZjBiNzc1MzgxOCBmZmZmZmZmZjhkMTgyMDViIGZmZmY5NWYwYjc3NTM4 NTAKPiBbICAgIDguNzMzMjI2XSAgZmZmZjk1ZjBiNzc0ZDcxOCAwMDAwMDAwMDAwMDAwMDA1IDAw MDAwMDAwMDAwMDAwMDYgZmZmZjk1ZjBiNzc0Y2Q0MAo+IFsgICAgOC43MzMyMjddIENhbGwgVHJh Y2U6Cj4gWyAgICA4LjczMzIzMF0gIFs8ZmZmZmZmZmY4ZDM2YzA5ZT5dIGR1bXBfc3RhY2srMHg2 Ny8weDk5Cj4gWyAgICA4LjczMzIzMl0gIFs8ZmZmZmZmZmY4ZDE4MjA1Yj5dIHByaW50X2NpcmN1 bGFyX2J1ZysweDIwMC8weDIwZQo+IFsgICAgOC43MzMyMzVdICBbPGZmZmZmZmZmOGQwYzFlN2M+ XSBfX2xvY2tfYWNxdWlyZSsweDE2Y2MvMHgxNzAwCj4gWyAgICA4LjczMzIzOF0gIFs8ZmZmZmZm ZmY4ZDBhMTdjOD5dID8gc2NoZWRfY2xvY2tfbG9jYWwrMHgxOC8weDgwCj4gWyAgICA4LjczMzI0 MF0gIFs8ZmZmZmZmZmY4ZDBjMjJkMD5dIGxvY2tfYWNxdWlyZSsweGIwLzB4MWUwCj4gWyAgICA4 LjczMzI2MF0gIFs8ZmZmZmZmZmZjMDJiZmQwMD5dID8gZHJtX21vZGVzZXRfbG9ja19hbGwrMHg0 MC8weDEyMCBbZHJtXQo+IFsgICAgOC43MzMyNjJdICBbPGZmZmZmZmZmOGQ2OWYyZDE+XSBtdXRl eF9sb2NrX25lc3RlZCsweDcxLzB4MzkwCj4gWyAgICA4LjczMzI4MV0gIFs8ZmZmZmZmZmZjMDJi ZmQwMD5dID8gZHJtX21vZGVzZXRfbG9ja19hbGwrMHg0MC8weDEyMCBbZHJtXQo+IFsgICAgOC43 MzMzMDFdICBbPGZmZmZmZmZmYzAyYmZkMDA+XSA/IGRybV9tb2Rlc2V0X2xvY2tfYWxsKzB4NDAv MHgxMjAgW2RybV0KPiBbICAgIDguNzMzMzA0XSAgWzxmZmZmZmZmZjhkMWVjODdjPl0gPyBrbWVt X2NhY2hlX2FsbG9jX3RyYWNlKzB4MjVjLzB4MzIwCj4gWyAgICA4LjczMzMyMl0gIFs8ZmZmZmZm ZmZjMDJiZmNlNT5dID8gZHJtX21vZGVzZXRfbG9ja19hbGwrMHgyNS8weDEyMCBbZHJtXQo+IFsg ICAgOC43MzMzNDFdICBbPGZmZmZmZmZmYzAyYmZkMDA+XSBkcm1fbW9kZXNldF9sb2NrX2FsbCsw eDQwLzB4MTIwIFtkcm1dCj4gWyAgICA4LjczMzM1MV0gIFs8ZmZmZmZmZmZjMDQ3NjQwYj5dIGRy bV9mYl9oZWxwZXJfcmVzdG9yZV9mYmRldl9tb2RlX3VubG9ja2VkKzB4MmIvMHg4MCBbZHJtX2tt c19oZWxwZXJdCj4gWyAgICA4LjczMzM2MF0gIFs8ZmZmZmZmZmZjMDQ3NjQ4Yz5dIGRybV9mYl9o ZWxwZXJfc2V0X3BhcisweDJjLzB4NTAgW2RybV9rbXNfaGVscGVyXQo+IFsgICAgOC43MzM0MDNd ICBbPGZmZmZmZmZmYzA1NDc2YWE+XSBpbnRlbF9mYmRldl9zZXRfcGFyKzB4MWEvMHg2MCBbaTkx NV0KPiBbICAgIDguNzMzNDA2XSAgWzxmZmZmZmZmZjhkM2NlMmI4Pl0gZmJjb25faW5pdCsweDRk OC8weDU1MAo+IFsgICAgOC43MzM0MDhdICBbPGZmZmZmZmZmOGQ0NTA1MjY+XSB2aXN1YWxfaW5p dCsweGQ2LzB4MTMwCj4gWyAgICA4LjczMzQxMF0gIFs8ZmZmZmZmZmY4ZDQ1MmFiNj5dIGRvX2Jp bmRfY29uX2RyaXZlcisweDE0Ni8weDMxMAo+IFsgICAgOC43MzM0MTNdICBbPGZmZmZmZmZmOGQ0 NTJmNjY+XSBkb190YWtlX292ZXJfY29uc29sZSsweDEwNi8weDE4MAo+IFsgICAgOC43MzM0MTVd ICBbPGZmZmZmZmZmOGQzYzk3Nzc+XSBkb19mYmNvbl90YWtlb3ZlcisweDU3LzB4YjAKPiBbICAg IDguNzMzNDE3XSAgWzxmZmZmZmZmZjhkM2NlZGQ2Pl0gZmJjb25fZXZlbnRfbm90aWZ5KzB4NzI2 LzB4ODcwCj4gWyAgICA4LjczMzQxOV0gIFs8ZmZmZmZmZmY4ZDA4ZmJmZT5dIG5vdGlmaWVyX2Nh bGxfY2hhaW4rMHg0ZS8weGEwCj4gWyAgICA4LjczMzQyMl0gIFs8ZmZmZmZmZmY4ZDA4ZmU0Mz5d IF9fYmxvY2tpbmdfbm90aWZpZXJfY2FsbF9jaGFpbisweDUzLzB4NzAKPiBbICAgIDguNzMzNDI0 XSAgWzxmZmZmZmZmZjhkMDhmZTc2Pl0gYmxvY2tpbmdfbm90aWZpZXJfY2FsbF9jaGFpbisweDE2 LzB4MjAKPiBbICAgIDguNzMzNDI2XSAgWzxmZmZmZmZmZjhkM2QxMzViPl0gZmJfbm90aWZpZXJf Y2FsbF9jaGFpbisweDFiLzB4MjAKPiBbICAgIDguNzMzNDI3XSAgWzxmZmZmZmZmZjhkM2QzMzc5 Pl0gcmVnaXN0ZXJfZnJhbWVidWZmZXIrMHgyMzkvMHgzMjAKPiBbICAgIDguNzMzNDMwXSAgWzxm ZmZmZmZmZjhkNDgxN2MwPl0gPyB2Z2Ffc3dpdGNoZXJvb19jbGllbnRfZmJfc2V0KzB4NjAvMHg3 MAo+IFsgICAgOC43MzM0NDBdICBbPGZmZmZmZmZmYzA0NzY3MGE+XSBkcm1fZmJfaGVscGVyX2lu aXRpYWxfY29uZmlnKzB4MjVhLzB4M2EzIFtkcm1fa21zX2hlbHBlcl0KPiBbICAgIDguNzMzNDgz XSAgWzxmZmZmZmZmZmMwNTQ4OTM4Pl0gaW50ZWxfZmJkZXZfaW5pdGlhbF9jb25maWcrMHgxOC8w eDMwIFtpOTE1XQo+IFsgICAgOC43MzM0ODRdICBbPGZmZmZmZmZmOGQwOTFhYWE+XSBhc3luY19y dW5fZW50cnlfZm4rMHg0YS8weDE0MAo+IFsgICAgOC43MzM0ODZdICBbPGZmZmZmZmZmOGQwODc3 MWU+XSBwcm9jZXNzX29uZV93b3JrKzB4MWRlLzB4NjcwCj4gWyAgICA4LjczMzQ4OF0gIFs8ZmZm ZmZmZmY4ZDA4NzY5Zj5dID8gcHJvY2Vzc19vbmVfd29yaysweDE1Zi8weDY3MAo+IFsgICAgOC43 MzM0OTBdICBbPGZmZmZmZmZmOGQwODdjZDU+XSB3b3JrZXJfdGhyZWFkKzB4MTI1LzB4NGEwCj4g WyAgICA4LjczMzQ5Ml0gIFs8ZmZmZmZmZmY4ZDA4N2JiMD5dID8gcHJvY2Vzc19vbmVfd29yaysw eDY3MC8weDY3MAo+IFsgICAgOC43MzM0OTRdICBbPGZmZmZmZmZmOGQwOGU3ZTI+XSBrdGhyZWFk KzB4ZjIvMHgxMTAKPiBbICAgIDguNzMzNDk3XSAgWzxmZmZmZmZmZjhkNmEzYjJmPl0gcmV0X2Zy b21fZm9yaysweDFmLzB4NDAKPiBbICAgIDguNzMzNDk5XSAgWzxmZmZmZmZmZjhkMDhlNmYwPl0g PyBrdGhyZWFkX2NyZWF0ZV9vbl9ub2RlKzB4MjIwLzB4MjIwCgotLSAKSmFuaSBOaWt1bGEsIElu dGVsIE9wZW4gU291cmNlIFRlY2hub2xvZ3kgQ2VudGVyCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVs QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=