From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Kazlauskas, Nicholas" Subject: Re: [PATCH v2 2/3] drm: Add variable refresh property to DRM CRTC Date: Wed, 10 Oct 2018 09:35:50 -0400 Message-ID: <3bb5e05d-f7e6-8e44-cfae-202191d64245@amd.com> References: <20180924181537.12092-1-nicholas.kazlauskas@amd.com> <20180924181537.12092-3-nicholas.kazlauskas@amd.com> <20180924183826.GX5565@intel.com> <4aa1583c-2be0-8cec-2857-6c3e489965b4@amd.com> <20180924202655.GA9144@intel.com> <20181005111059.1cd71f95@eldfell> <20181010101448.400f4010@eldfell> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181010101448.400f4010@eldfell> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: Pekka Paalanen Cc: nicolai.haehnle-5C7GfCeVMHo@public.gmane.org, michel-otUistvHUpPR7s880joybQ@public.gmane.org, Marek.Olsak-5C7GfCeVMHo@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, manasi.d.navare-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Daniel Vetter , Alexander.Deucher-5C7GfCeVMHo@public.gmane.org, Christian.Koenig-5C7GfCeVMHo@public.gmane.org, =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= List-Id: dri-devel@lists.freedesktop.org T24gMTAvMTAvMjAxOCAwMzoxNCBBTSwgUGVra2EgUGFhbGFuZW4gd3JvdGU6Cj4gT24gRnJpLCA1 IE9jdCAyMDE4IDEyOjIxOjIwIC0wNDAwCj4gIkthemxhdXNrYXMsIE5pY2hvbGFzIiA8bmljaG9s YXMua2F6bGF1c2thc0BhbWQuY29tPiB3cm90ZToKPiAKPj4gT24gMTAvMDUvMjAxOCAwNDoxMCBB TSwgUGVra2EgUGFhbGFuZW4gd3JvdGU6Cj4+PiBIaSwKPj4+Cj4+PiBJIGhhdmUgYSBzb21ld2hh dCBvZiBteSBvd24gdmlldyBvbiB3aGF0IHdvdWxkIGJlIGludm9sdmVkIHdpdGggVlJSLAo+Pj4g YW5kIEknZCBsaWtlIHRvIGhlYXIgd2hhdCB5b3UgdGhpbmsgb2YgaXQuIENvbW1lbnRzIGlubGlu ZS4KPj4+Cj4+Pgo+Pj4gT24gVHVlLCAyNSBTZXAgMjAxOCAwOTo1MTozNyAtMDQwMAo+Pj4gIkth emxhdXNrYXMsIE5pY2hvbGFzIiA8bmljaG9sYXMua2F6bGF1c2thc0BhbWQuY29tPiB3cm90ZToK Pj4+ICAgIAo+Pj4+IE9uIDA5LzI0LzIwMTggMDQ6MjYgUE0sIFZpbGxlIFN5cmrDpGzDpCB3cm90 ZToKPj4+Pj4gT24gTW9uLCBTZXAgMjQsIDIwMTggYXQgMDM6MDY6MDJQTSAtMDQwMCwgS2F6bGF1 c2thcywgTmljaG9sYXMgd3JvdGU6Cj4+Pj4+PiBPbiAwOS8yNC8yMDE4IDAyOjM4IFBNLCBWaWxs ZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4+Pj4+Pj4gT24gTW9uLCBTZXAgMjQsIDIwMTggYXQgMDI6MTU6 MzZQTSAtMDQwMCwgTmljaG9sYXMgS2F6bGF1c2thcyB3cm90ZToKPj4+Pj4+Pj4gVmFyaWFibGUg cmVmcmVzaCByYXRlIGFsZ29yaXRobXMgaGF2ZSB0eXBpY2FsbHkgYmVlbiBlbmFibGVkIG9ubHkK Pj4+Pj4+Pj4gd2hlbiB0aGUgZGlzcGxheSBpcyBjb3ZlcmVkIGJ5IGEgc2luZ2xlIHNvdXJjZSBv ZiBjb250ZW50Lgo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcg ZGVmYXVsdCBDUlRDIHByb3BlcnR5IHRoYXQgaGVscHMKPj4+Pj4+Pj4gaGludCB0byB0aGUgZHJp dmVyIHdoZW4gdGhlIENSVEMgY29tcG9zaXRpb24gaXMgc3VpdGFibGUgZm9yIHZhcmlhYmxlCj4+ Pj4+Pj4+IHJlZnJlc2ggcmF0ZSBhbGdvcml0aG1zLiBVc2Vyc3BhY2UgY2FuIHNldCB0aGlzIHBy b3BlcnR5IGR5bmFtaWNhbGx5Cj4+Pj4+Pj4+IGFzIHRoZSBjb21wb3NpdGlvbiBjaGFuZ2VzLgo+ Pj4+Pj4+Pgo+Pj4+Pj4+PiBXaGV0aGVyIHRoZSB2YXJpYWJsZSByZWZyZXNoIHJhdGUgYWxnb3Jp dGhtcyBhcmUgYWN0aXZlIHdpbGwgc3RpbGwKPj4+Pj4+Pj4gZGVwZW5kIG9uIHRoZSBDUlRDIGJl aW5nIHN1aXRhYmxlIGFuZCB0aGUgY29ubmVjdG9yIGJlaW5nIGNhcGFibGUKPj4+Pj4+Pj4gYW5k IGVuYWJsZWQgYnkgdGhlIHVzZXIgZm9yIHZhcmlhYmxlIHJlZnJlc2ggcmF0ZSBzdXBwb3J0Lgo+ Pj4+Pj4+Pgo+Pj4+Pj4+PiBJdCBpcyB3b3J0aCBub3RpbmcgdGhhdCB3aGlsZSB0aGUgcHJvcGVy dHkgaXMgYXRvbWljIGl0IGlzbid0IGZpbHRlcmVkCj4+Pj4+Pj4+IGZyb20gbGVnYWN5IHVzZXJz cGFjZSBxdWVyaWVzLiBUaGlzIGFsbG93cyBmb3IgWG9yZyB1c2Vyc3BhY2UgZHJpdmVycwo+Pj4+ Pj4+PiB0byBpbXBsZW1lbnQgc3VwcG9ydCBpbiBub24tYXRvbWljIHNldHVwcy4KPj4+Pj4+Pj4K Pj4+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogTmljaG9sYXMgS2F6bGF1c2thcyA8bmljaG9sYXMua2F6 bGF1c2thc0BhbWQuY29tPgo+IAo+IC4uLgo+IAo+Pj4+IFdoZW5ldmVyIEkgbWVudGlvbmVkIHZh cmlhYmxlIHJlZnJlc2ggImZlYXR1cmVzIiwgd2hhdCBJIHJlYWxseSBtZWFudAo+Pj4+IHdhcyBv cGVyYXRpbmcgaW4gb25lIG9mIHR3byBtb2RlczoKPj4+Pgo+Pj4+ICgxKSBMZXR0aW5nIHRoZSBk cml2ZXIgYW5kIGhhcmR3YXJlIGFkanVzdCByZWZyZXNoIGF1dG9tYXRpY2FsbHkgYmFzZWQKPj4+ PiBvbiB0aGUgZmxpcCByYXRlIG9uIGEgQ1JUQyBmcm9tIGEgc2luZ2xlIGFwcGxpY2F0aW9uCj4+ Pj4KPj4+PiAoMikgU2V0dGluZyBhIGZpeGVkIGZyYW1lIGR1cmF0aW9uIGJhc2VkIG9uIHRoZSBm bGlwIHJhdGUgb24gYSBDUlRDIGZyb20KPj4+PiBhIHNpbmdsZSBhcHBsaWNhdGlvbgo+Pj4KPj4+ IEkgd29uZGVyIGlmIHRoYXQncyB0b28gbXVjaCBtYWdpYyBpbiB0aGUga2VybmVsLi4uIHdoYXQg d291bGQgYmUgd3JvbmcKPj4+IHdpdGggc2ltcGx5IGZsaXBwaW5nIEFTQVAgd2hlbiBWUlIgaXMg YWN0aXZlPwo+Pj4KPj4+IEhvdyB3aWxsIHVzZXJzcGFjZSBiZSBhYmxlIHRvIHByZWRpY3QgY29t aW5nIGZsaXAgb3Bwb3J0dW5pdGllcyBpZiB0aGUKPj4+IGtlcm5lbCBkb2VzIHNvIG11Y2ggbWFn aWM/Cj4+Cj4+IFRoZSBrZXJuZWwgZHJpdmVyIGRvZXNuJ3QgbmVlZCB0byBkbyBtdWNoIG1vcmUg dGhhbiBsZXQgdGhlIGhhcmR3YXJlCj4+IGtub3cgdGhlIHZhcmlhYmxlIHJlZnJlc2ggcmFuZ2Uu IFRoZSAibWFnaWMiIGlzIHBlcmZvcm1lZCBieSBoYXJkd2FyZS4KPj4KPj4gTW9zdCBnYW1lcyB3 b3VsZCBsaWtlIHRvIHJlbmRlciBhcyBmYXN0IGFzIHBvc3NpYmxlIHRvIGRlbGl2ZXIgYSBtb3Jl Cj4+IHJlc3BvbnNpdmUgYW5kIHNtb290aGVyIGltYWdlIHRvIHRoZSB1c2VyLiBNYW55IG9mIHRo ZXNlIGFyZSBhbHNvCj4+IHJlc291cmNlIGludGVuc2l2ZSBhbmQgd29uJ3QgYWx3YXlzIGJlIGFi bGUgdG8gcmVuZGVyIGF0IHRoZSBmaXhlZAo+PiByZWZyZXNoIHJhdGUgb2YgdGhlIHBhbmVsIChl c3BlY2lhbGx5IGZvciBoaWdoZXIgcmVmcmVzaCByYXRlcyBsaWtlCj4+IDE0NEh6KS4gVGhlIHVz ZXIgd2lsbCBleHBlcmllbmNlIHN0dXR0ZXJpbmcgaWYgdGhlIGdhbWUgdGFrZXMgdG9vIGxvbmcK Pj4gdG8gcmVuZGVyIGFuZCBtaXNzZXMgdGhlIHZibGFuayB3aW5kb3cgZm9yIHRoZSBmbGlwLgo+ Pgo+PiBEeW5hbWljIFZSUiBhZGp1c3RtZW50IGNhbiByZXNvbHZlIHRoaXMgcHJvYmxlbS4gVGhl IGhhcmR3YXJlIGNhbiBsb3dlcgo+PiB0aGUgcmVmcmVzaCByYXRlIGFuZCBpbmNyZWFzZSB0aGUg dmJsYW5rIHdpbmRvdyBpbiByZXNwb25zZSB0byB0aGlzIHNvCj4+IHRoZSB1c2VyIGRvZXNuJ3Qg ZXhwZXJpZW5jZSBzdHV0dGVyaW5nIChvciBsYXRlbmN5KS4KPj4KPj4gVXNlcnNwYWNlIHNob3Vs ZG4ndCBwcmVkaWN0IGFueXRoaW5nLgo+IAo+IC4uLgo+IAo+Pj4+Pj4gVGhlIHJlYXNvbmluZyBm b3IgdGhlIHNwbGl0IGlzIGJlY2F1c2Ugbm90IGFsbCBjb250ZW50IGlzIHN1aXRhYmxlIGZvcgo+ Pj4+Pj4gdmFyaWFibGUgcmVmcmVzaC4gRGVza3RvcCBlbnZpcm9ubWVudHMsIHdlYiBicm93c2Vy cywgZXRjIG9ubHkgdHlwaWNhbGx5Cj4+Pj4+PiBmbGlwIHdoZW4gbmVlZGVkIC0gd2hpY2ggd2ls bCByZXN1bHQgaW4gZGlzcGxheSBmbGlja2VyaW5nLgo+Pj4KPj4+IEZsaWNrZXJpbmc/IFdoYXQg ZG8geW91IG1lYW4/Cj4+Cj4+IFRoaXMgaXMgYSBwcm9wZXJ0eSBvZiBob3cgcGFuZWxzIHdvcmsu Cj4+Cj4+IFRoZSBsdW1pbmFuY2UgZm9yIGEgcGFuZWwgd2lsbCB2YXJ5IGJhc2VkIG9uIGhvdyBs b25nIHRoZSB2cmVmcmVzaCBpcy4KPj4gU2luY2UgdGhlIHZyZWZyZXNoIGxlbmd0aCBpcyBjaGFu Z2luZyBhcyBwYXJ0IG9mIFZSUiB5b3UncmUgbW9yZSBsaWtlbHkKPj4gdG8gbm90aWNlIHRoZSBk aWZmZXJlbmNlIGluIGx1bWluYW5jZSB0aGUgYmlnZ2VyIHRoZSBkaWZmZXJlbmNlIGlzLgo+Pgo+ PiBUaGUgZGlmZmVyZW5jZSB3aWxsIGJlIGxhcmdlc3Qgd2hlbiBzd2l0Y2hpbmcgZnJvbSB0aGUg bWluIHZyZWZyZXNoIHRvCj4+IHRoZSBtYXggdnJlZnJlc2ggZHVyYXRpb24uCj4+Cj4+IExhcmdl IGRpZmZlcmVuY2VzIGNhbiBvY2N1ciBmb3IgYXBwbGljYXRpb25zIHRoYXQgcmVuZGVyIG9uIGRl bWFuZCBsaWtlCj4+IGEgd2ViIGJyb3dzZXIgKGFuZCB3aHkgeW91IHdvdWxkbid0IHdhbnQgVlJS IGVuYWJsZWQgZm9yIHRob3NlKS4gVGhlCj4+IGhhcmR3YXJlIHdvdWxkIGNvbnRpbnVvdXNseSB3 YWl0IGZvciBhIGZsaXAgdGhhdCBpc24ndCBjb21pbmcuIFRoZW4gaWYKPj4gdGhlIHVzZXIgbW92 ZXMgdGhlaXIgY3Vyc29yIG9yIHRoZSBwYWdlIHVwZGF0ZXMgaXQncyBnb2luZyB0byBoYXBwZW4K Pj4gInJhbmRvbWx5IiBpbiB0aGF0IHdpbmRvdyBhbmQgdGhlIGhhcmR3YXJlIHdpbGwgYWRqdXN0 IHRvIHRoYXQuCj4gCj4gSGkgTmljaG9sYXMsCj4gCj4gaXQgc2VlbXMgSSBoYXZlIHZlcnkgbXVj aCBtaXMtZ3Vlc3NlZCB3aGF0IFZSUiBhaW1zIHRvIGFjaGlldmUsIGFuZCB0aGUKPiBlZmZlY3Qg b24gbHVtaW5hbmNlIHNvdW5kcyBob3JyaWJsZS4KCkl0IHJlYWxseSBkZXBlbmRzIG9uIHRoZSBw YW5lbCBjaGFyYWN0ZXJpc3RpY3MgLSBsaWtlIHRoZSBWUlIgcmFuZ2UgYW5kIApwYW5lbCBicmln aHRuZXNzLiBTb21lIHBhbmVscyBjYW4gYmUgcGFydGljdWxhcmx5IHVucGxlYXNhbnQgYnV0IG90 aGVycyAKYXJlIGZpbmUuCgo+IAo+IFBlb3BsZSBoYXZlIHdvcmtlZCBmb3IgeWVhcnMgdG8gbWFr ZSBkaXNwbGF5IHRpbWluZ3MgbW9yZSBleHBsaWNpdCwKPiBnaXZpbmcgYmV0dGVyIGNvbnRyb2wg YW5kIHByZWRpY3RhYmlsaXR5IG92ZXIgdGhlbS4gSXQgc291bmRzIGxpa2UgVlJSCj4gaXMgbm90 IGFuIGltcHJvdmVtZW50IHRoYXQgYWxsb3dzIG5ldyBzbWFydGVyIHNvZnR3YXJlIHRvIHRha2Ug Y29udHJvbAo+IG9mIHRpbWluZ3MgZXZlbiBiZXR0ZXIuIEluc3RlYWQsIFZSUiBzZWVtcyB0byBi ZSBhIHN0ZXAgYmFja3dhcmRzLAo+IGludHJvZHVjaW5nIG1vcmUgdW5jZXJ0YWludHkgaW50byB0 aGUgdGltaW5ncy4gVGhlIGV4cGVjdGF0aW9uIG9mIGEKPiBmaXhlZCB1bmtub3duIHJlZnJlc2gg cmF0ZSBtdXN0IGJlIGJ1aWx0IGludG8gc29mdHdhcmUgZm9yIHRoZSBzb2Z0d2FyZQo+IHRvIHdv cmsgcmVhc29uYWJseSB3aGlsZSBWUlIgaXMgYWN0aXZlLiA+Cj4gIEZyb20geW91ciBjb21tZW50 cyBJIHVuZGVyc3Rvb2QgdGhhdCB0aGUgVlJSIGhhcmR3YXJlIHN0aWxsIHZlcnkgbXVjaAo+IGRl cGVuZHMgb24gYSBjb25zaXN0ZW50IHJlZnJlc2ggcmF0ZSwgZXhjZXB0IHRoZSBoYXJkd2FyZSAo bm90IHRoZQo+IHNvZnR3YXJlISkgY2FuIGFkZGl0aW9uYWxseSBzbGV3IHRoZSByZWZyZXNoIHJh dGUgb3ZlciB0aW1lLiBBYnJ1cHQKPiBjaGFuZ2VzIGluIGZyYW1lIHRpbWluZ3MgbXVzdCBzdGls bCBiZSBwcmV2ZW50ZWQsIGJ1dCBJIHdhc24ndCBxdWl0ZQo+IHN1cmUgaWYgeW91IG1lYW50IHRo ZSBoYXJkd2FyZSB3aWxsIGRvIHRoYXQgb3IgaWYgdGhlIHNvZnR3YXJlIG11c3QgZG8KPiB0aGF0 LCBzaW5jZSB5b3UgYXJlIHdvcnJpZWQgYWJvdXQgb24tZGVtYW5kIHVwZGF0aW5nIGFwcGxpY2F0 aW9ucwo+IGNhdXNpbmcgZmxpY2tlcmluZy4KPiAKPiBIZW5jZSwgVlJSIGxvb2tzIGxpa2UgYSBi YW5kLWFpZCBmb3Igb2xkIGFuZCBzaW1wbGUgYXBwbGljYXRpb25zIHRoYXQKPiB1c2UgYnJ1dGUg Zm9yY2UgKG1vcmUgZnBzLCBtYXhpbWl6ZSB0aGUgd29yayBsb2FkKSBpbiBhbiBhdHRlbXB0IHRv Cj4gbWFrZSB0aGluZ3Mgc21vb3RoZXIgYW5kIHRvIHJlZHVjZSBsYXRlbmN5LiBUaGVyZSBhcmUg bG90cyBvZiBzdWNoCj4gYXBwbGljYXRpb25zLCBzbyBWUlIgaGFzIGl0cyBwbGFjZS4gSXQgaXMg bXkgbWlzdGFrZSBvZiBhc3N1bWluZyBpdAo+IGNvdWxkIGRvIG1vcmUuIFllcywgSSBhbSBkaXNh cHBvaW50ZWQgdG8gcmVhbGl6ZSB0aGlzLgo+IAo+IEkgYmVsaWV2ZSB0aGF0IGZ1dHVyZSBkaXNw bGF5IHNlcnZlcnMgYW5kIGFwcGxpY2F0aW9ucyB0aGF0IGFjdHVhbGx5Cj4gY2FyZSBhYm91dCBk aXNwbGF5IHRpbWluZ3Mgd2lsbCBqdXN0IG9wdCBvdXQgZnJvbSBWUlIgdG8gZ2FpbiBiZXR0ZXIK PiBwcmVkaWN0YWJpbGl0eS4KPiAKPiBJIGFsc28gYmVsaWV2ZSB0aGF0IHlvdSB3aWxsIG5lZWQg dG8gYmxhY2tsaXN0IGFwcGxpY2F0aW9ucyBsaWtlIHZpZGVvCj4gcGxheWVycyB3aG9zZSBkZXZl bG9wZXJzIGhhdmUgc3BlbnQgYSBncmVhdCBkZWFsIG9mIGVmZm9ydCBpbiBtYWtpbmcgYQo+IHNt YXJ0IHNjaGVkdWxpbmcgYWxnb3JpdGhtIGZvciBmaXhlZCByYXRlIGRpc3BsYXkuIEkgYXNzdW1l IHRoYXQgYQo+IHNtYXJ0IHNoZWR1bGluZyBhbGdvcml0aG0gdGhhdCBpcyBiYXNlZCBvbiBwcmVk aWNpdGluZyB0aGUgbmV4dCBkaXNwbGF5Cj4gdGltZSBpbnN0YW50IHdpbGwgaW50ZXJhY3QgcG9v cmx5IHdpdGggVlJSLiBBIHZpZGVvIHBsYXllciB3aWxsIG5lZWQgdG8KPiBrbm93IGlmIGl0IGlz IGdldHRpbmcgZml4ZWQgcmF0ZSBvciBWUlIgdG8gY2hvb3NlIHRoZSBhcHByb3ByaWF0ZQo+IHRp bWluZyBhbGdvcml0aG0gLSB3aGVydGhlciBpdCBuZWVkcyB0byBhZGFwdCB0byB0aGUgZGlzcGxh eSByYXRlIG9yCj4gd2lsbCB0aGUgZGlzcGxheSByYXRlIGFkYXB0IHRvIGl0Lgo+IAo+IEluIHN1 bW1hcnksIFZSUiBpcyBvbmx5IGdvb2QgZm9yIGV4YWN0bHkgdGhlIHVzZSBjYXNlcyB5b3UgbGlz dGVkLCBhbmQKPiBmb3Igb3RoZXIgdXNlcyBpdCBjYW4gYmUgaGFybWZ1bCwganVzdCBsaWtlIHlv dSBzYWlkLgo+IAo+IEdpdmVuIHRoZSBhYm92ZSwgSSB0aGluayB3ZSBhcmUgbm93IHZlcnkgbXVj aCBvbiB0aGUgc2FtZSBwYWdlIGFib3V0Cj4gd2hhdCB0aGUgS01TIFVBQkkgc2hvdWxkIGxvb2sg bGlrZS4KCgpUaGUgdXNlLWNhc2UgZm9yIHRoZSBkeW5hbWljIGFkanVzdG1lbnQgbW9kZSBpcyBs YXJnZWx5IGdhbWVzLCB5ZXMuIEJ1dCAKSSBkb24ndCB0aGluayB0aGF0J3Mgc29tZXRoaW5nIHRv IGJlIGVudGlyZWx5IGRpc21pc3NpdmUgb2YuCgpUaGUgb2xkIGFuZCBzaW1wbGUgYXBwbGljYXRp b25zIGFyZSB0aGUgb25lcyB0aGF0IHdvdWxkIGJlbmVmaXQgdGhlIApsZWFzdCBmcm9tIHRoaXMg YmVjYXVzZSB0aGV5IHByb2JhYmx5IHJ1biBmYWlybHkgd2VsbCBvbiBuZXcgaGFyZHdhcmUuCgpN b2Rlcm4gZ2FtZXMgYmVuZWZpdCB0aGUgbW9zdCBmcm9tIHRoaXMgc2luY2UgdGhleSBoYXZlIGhp Z2ggcGVyZm9ybWFuY2UgCnJlcXVpcmVtZW50cy4gVGhlcmUncyBhbHNvIGEgZmFpciBhbW91bnQg b2YgdGhlc2UgdGl0bGVzIGNvbWluZyBvdXQgaW4gCnRoZSBsYXN0IGZldyB5ZWFycyBsYXJnZWx5 IGJlY2F1c2Ugb2YgdGhlIGNyb3NzLXBsYXRmb3JtIGRlcGxveW1lbnQgCmNhcGFiaWxpdGllcyBp biBwb3B1bGFyIGdhbWUgZW5naW5lcyBhbmQgZnJhbWV3b3Jrcy4KCldoaWxlIEkgZG9uJ3QgaGF2 ZSBhY3R1YWwgbnVtYmVycywgSSB0aGluayB0aGF0IG1vc3QgbW9kZXJuIGdhbWVzIHRoYXQgCmNv bWUgb3V0IG9uIExpbnV4IGFyZSBzY2FsYWJsZSB3aGVuIGl0IGNvbWVzIHRvIHJlZnJlc2ggcmF0 ZS4gVlJSIHBhbmVscyAKd2l0aCBhICJkZWNlbnQiIHJhbmdlIHdpbGwgc2VlIG5lYXJseSBhbGwg c3R1dHRlcmluZyBnb25lIGluIHByYWN0aWNlIAp3aXRoIG5vIG5lZ2F0aXZlIGltcGFjdCB0byB0 aGUgZXhwZXJpZW5jZSBhdCBhbGwuIFRoaXMgYWxzbyBiZW5lZml0cyAKZ2FtZXMgdGhhdCByZW5k ZXIgbG93ZXIgdGhhbiB0aGUgbW9uaXRvcidzIHJlZnJlc2ggYWxsIHRoZSB0aW1lLCBsaWtlIAo0 NUh6IG9uIGEgVlJSIG1vbml0b3Igd2l0aCBhIDQwLTYwSHogcmFuZ2UuCgpUaGUgZHluYW1pYyBh ZGp1c3RtZW50IGFsc28gd29ya3MgYXMgZXhwZWN0ZWQgd2l0aCBpbXBsaWNpdCB2c3luYyBvbi9v ZmYgCnZpYSBHTFggc3dhcCBjb250cm9sLiBMaWdodHdlaWdodCBnYW1lcyBkb24ndCBuZWVkIHRv IGJ1cm4gYSB0b24gb2YgCnBvd2VyIGlmIHRoZXkncmUgY2FwYWJsZSBvZiByZW5kZXJpbmcgYWJv dmUgdGhlIHJlZnJlc2ggcmF0ZSBvZiB0aGUgCm1vbml0b3IuIFZzeW5jIG9uIHdpbGwgc3RpbGwg Y2FwIHlvdSBhdCB0aGUgbW9kZSdzIHJlZnJlc2ggYXMgZXhwZWN0ZWQgCihsaWtlIDYwSHopLgoK VGhlIHBhdGNoZXMgSSd2ZSBwdXQgb3V0IHRhcmdldCB0aGlzIHVzZSBjYXNlIG1vc3RseSBiZWNh dXNlIG9mIHRoZSAKYmVuZWZpdCBmb3IgYSByZWxhdGl2ZWx5IHNpbXBsZSBpbnRlcmZhY2UuIFZS UiBjYW4gYW5kIGhhcyBiZWVuIHVzZWQgaW4gCm1vcmUgd2F5cyB0aGF0IHRoaXMsIGhvd2V2ZXIu CgpBbiBleGFtcGxlIHVzZWNhc2UgdGhhdCBkaWZmZXJzIGZyb20gdGhpcyB3b3VsZCBhY3R1YWxs eSBiZSB2aWRlbyAKcGxheWJhY2suIFRoZSBtb25pdG9yJ3MgcmVmcmVzaCByYXRlIGxpa2VseSBk b2Vzbid0IGFsaWduIHdpdGggdGhlIHZpZGVvIApjb250ZW50IHJhdGUuIEFuIEFQSSB0aGF0IGV4 cG9zZXMgZGlyZWN0IGNvbnRyb2wgb3ZlciBWUlIgKGxpa2UgdGhlIApyYW5nZSwgcmVmcmVzaCBk dXJhdGlvbiwgcHJlc2VudGF0aW9uIHRpbWVzdGFtcCkgY291bGQgYWxsb3cgdGhlIAphcHBsaWNh dGlvbiB0byBzcGVjaWZ5IHRoZSBjb250ZW50IHJhdGUgZGlyZWN0bHkgdG8gZGVsaXZlciBhIHNt b290aGVyIApwbGF5YmFjayBleHBlcmllbmNlLiBGb3IgZXhhbXBsZSwgaWYgeW91IGhhZCBhIDI0 ZnBzIHZpZGVvIGFuZCB0aGUgVlJSIApyYW5nZSB3YXMgNDAtNjBIeiB5b3UgY291bGQgdGFyZ2V0 IDQ4SHogdmlhIHNvbWUgQVBJIGhlcmUuCgo+IAo+IAo+PiBNb3N0IGNvbXBvc2l0b3JzIGZ1bmN0 aW9uIHdlbGwgdW5kZXIgdGhpcyBzdGFjay4gSXQgd2lsbCB2YXJ5Cj4+IGRlcGVuZGluZyBvbiBj b21wb3NpdG9yIHN1cHBvcnQgZm9yIHdpbmRvdyB1bnJlZGlyZWN0aW9uIHRvIGxldCB0aGUKPj4g d2luZG93IGZsaXAgdmlhIHRoZSBQcmVzZW50IGV4dGVuc2lvbi4gTXV0dGVyIGhhbmRsZXMgdGhp cyB3aXRob3V0Cj4+IGFueSBjb25maWd1cmF0aW9uIGFuZCBrd2luIGNhbiBiZSBjb25maWd1cmVk IHRvIHdvcmsgd2l0aCB0aGVzZQo+PiBwYXRjaGVzLiBDb21wdG9uIGNhbiBiZSBjb25maWd1cmVk IHRvIHN1cHBvcnQgdW5yZWRpcmVjdGlvbiBhcyB3ZWxsLgo+IAo+IFlvdSBhcmUgdGhpbmtpbmcg YWJvdXQgdGhlIGFwcGxpY2F0aW9ucy4gV2hhdCBhYm91dCB0aGUgY29tcG9zaXRvcgo+IGl0c2Vs Zj8gSXMgdGhlIENPVyBub3QgaGl0dGluZyB0aGUgUHJlc2VudCBkaXJlY3Qgc2Nhbm91dCBwYXRo LAo+IHRyaWdnZXJpbmcgVlJSLCB3aGVuIHdoYXQgaXMgYWN0dWFsbHkgc2hvd2luZyBpcyB0aGUg ZGVza3RvcCB3aXRoCj4gb24tZGVtYW5kIHJhbmRvbWx5IHVwZGF0aW5nIHdpbmRvd3M/Cj4gCj4+ IFRoZXNlIChhbW9uZyBvdGhlcnMpIGFyZSBjb3ZlcmVkIGFzIHBhcnQgb2YgdGhlIGJsYWNrbGlz dCBmb3IgdGhlCj4+IG1lc2EgcGF0Y2hlcy4gVGhleSBkbyBuZWVkIHRvIGJlIGV4cGxpY2l0bHkg ZXhjbHVkZWQuCj4gCj4gUmlnaHQsIHlvdSBibGFja2xpc3QgYWxsIGNvbXBvc2l0aW5nIG1hbmFn ZXJzIHRvIHByZXZlbnQgdGhlbSBmcm9tCj4gcmVncmVzc2luZy4gVGhhdCBmZWVscyBhIGJpdCB1 Z2x5IHRvIG1lLCBuZWVkaW5nIGV4Y2VwdGlvbnMgdG8gbm90Cj4gcmVncmVzcyB0aGluZ3MsIGJ1 dCBtYXliZSB0aGF0J3MgYnVzaW5lc3MgYXMgdXN1YWwgaW4gTWVzYT8KPiAKPiBGb3J0dW5hdGVs eSB0aGF0IHByb2JsZW0gd2l0aCBjb21wb3NpdGluZyBtYW5hZ2VycyB3b24ndCBleGlzdCB3aXRo Cj4gV2F5bGFuZC4KCkNvbXBvc2l0b3JzIGRvIGJyaW5nIG91dCB0aGUgd29yc3Qgd2hlbiBpdCBj b21lcyB0byBmbGlja2VyaW5nIGZvciBWUlIgCndpdGggdGhlIGR5bmFtaWMgbW9kZS4gQSBtb3Jl IGV4cGxpY2l0IEFQSSBtYXkgaGVscCBoZXJlIGluIHRoZSBmdXR1cmUuCgpJIHRoaW5rIHRoZSBi bGFja2xpc3QgYXBwcm9hY2ggaXMgc3RpbGwgdGhlIGJlc3Qgd2hlbiBjb21wYXJlZCB3aXRoIHRo ZSAKYWx0ZXJuYXRpdmVzLiBBdCBsZWFzdCB3aGVuIGl0IGNvbWVzIHRvIHN1cHBvcnRpbmcgdGhl IHZhc3QgbWFqb3JpdHkgb2YgCmV4aXN0aW5nIGFwcGxpY2F0aW9ucyB3aXRob3V0IGFueSBleHBs aWNpdCBjb25maWd1cmF0aW9uIGZyb20gdGhlIHVzZXIgCm9yIGRldmVsb3BlcnMuCgpJIHdvdWxk IGltYWdpbmUgeW91J3JlIHJpZ2h0IGFib3V0IGEgV2F5bGFuZCBpbXBsZW1lbnRhdGlvbiBiZWlu ZyAKY2xlYW5lciB3aGVuIGRlYWxpbmcgd2l0aCBzb21lIG9mIHRoZXNlIGlzc3Vlcy4KCj4gCj4g SW4gYW55IGNhc2UsIHRoZXJlIG11c3QgYWxzbyBiZSBhIHdheSBmb3IgYW4gYXBwbGljYXRpb24g dG8gZXhwbGljaXRseQo+IHNheSBpZiBpdCBzdXBwb3J0cyBWUlIgb3Igbm90IGFuZCB0byBrbm93 IGlmIGl0IGdldHMgVlJSIG9yIG5vdC4gQXJlCj4gdGhlcmUgbm8gRUdMIG9yIFZ1bGthbiBleHRl bnNpb25zIGZvciB0aGF0PwoKSSB0aGluayB0aGlzIGlzIGFuIGludGVyZXN0aW5nIGlkZWEgZ2l2 ZW4gd2hhdCdzIGFscmVhZHkgb3V0IHRoZXJlIGluIAp0ZXJtcyBvZiBzd2FwIGFuZCBwcmVzZW50 IGNvbnRyb2wuIFRoZXJlIHdhcyBzb21lIGRpc2N1c3Npb24gYWJvdXQgdGhpcyAKYW5kIHRoZSBi bGFja2xpc3Qgb24gdGhlIG1lc2EgbWFpbGluZyBsaXN0LgoKRm9yIHRoZSBjdXJyZW50IGltcGxl bWVudGF0aW9uIHRoZSBlYXNpZXN0IHdheSB0byBvdmVycmlkZSB0aGUgYmxhY2tsaXN0IAppcyB2 aWEgaW5jbHVkaW5nIGFuIGV4cGxpY2l0IGRyaWNvbmYgZmlsZSBmb3IgdGhlIGFwcGxpY2F0aW9u LiBBIApzZW1pLXJlY2VudCBjaGFuZ2UgaW4gbWVzYSBsZXRzIGFwcGxpY2F0aW9ucyBkbyB0aGlz IHdpdGhvdXQgb3ZlcnJpZGluZyAKdGhlIGdsb2JhbCBvciB1c2VyIGNvbmYuCgo+IAo+IAo+IFRo YW5rcywKPiBwcQo+IAoKTmljaG9sYXMgS2F6bGF1c2thcwpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2FtZC1nZngK