From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Harrison Subject: Re: [PATCH 02/55] drm/i915: Reserve ring buffer space for i915_add_request() commands Date: Wed, 24 Jun 2015 18:05:08 +0100 Message-ID: <558AE344.90006@Intel.com> References: <1432917856-12261-3-git-send-email-John.C.Harrison@Intel.com> <1434731652-15672-1-git-send-email-John.C.Harrison@Intel.com> <20150622201233.GK25769@phenom.ffwll.local> <55894519.5010906@Intel.com> <20150623132406.GA25769@phenom.ffwll.local> <55897E9C.2060604@Intel.com> <20150623200015.GJ25769@phenom.ffwll.local> <558AA028.4090908@Intel.com> <20150624124533.GG25769@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 8FFF76E3F8 for ; Wed, 24 Jun 2015 10:05:35 -0700 (PDT) In-Reply-To: <20150624124533.GG25769@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: Intel-GFX@Lists.FreeDesktop.Org List-Id: intel-gfx@lists.freedesktop.org T24gMjQvMDYvMjAxNSAxMzo0NSwgRGFuaWVsIFZldHRlciB3cm90ZToKPiBPbiBXZWQsIEp1biAy NCwgMjAxNSBhdCAwMToxODo0OFBNICswMTAwLCBKb2huIEhhcnJpc29uIHdyb3RlOgo+PiBPbiAy My8wNi8yMDE1IDIxOjAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+Pj4gT24gVHVlLCBKdW4gMjMs IDIwMTUgYXQgMDQ6NDM6MjRQTSArMDEwMCwgSm9obiBIYXJyaXNvbiB3cm90ZToKPj4+PiBPbiAy My8wNi8yMDE1IDE0OjI0LCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+Pj4+PiBPbiBUdWUsIEp1biAy MywgMjAxNSBhdCAxMjozODowMVBNICswMTAwLCBKb2huIEhhcnJpc29uIHdyb3RlOgo+Pj4+Pj4g T24gMjIvMDYvMjAxNSAyMToxMiwgRGFuaWVsIFZldHRlciB3cm90ZToKPj4+Pj4+PiBPbiBGcmks IEp1biAxOSwgMjAxNSBhdCAwNTozNDoxMlBNICswMTAwLCBKb2huLkMuSGFycmlzb25ASW50ZWwu Y29tIHdyb3RlOgo+Pj4+Pj4+PiBGcm9tOiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25A SW50ZWwuY29tPgo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBJdCBpcyBhIGJhZCBpZGVhIGZvciBpOTE1X2Fk ZF9yZXF1ZXN0KCkgdG8gZmFpbC4gVGhlIHdvcmsgd2lsbCBhbHJlYWR5IGhhdmUgYmVlbgo+Pj4+ Pj4+PiBzZW5kIHRvIHRoZSByaW5nIGFuZCB3aWxsIGJlIHByb2Nlc3NlZCwgYnV0IHRoZXJlIHdp bGwgbm90IGJlIGFueSB0cmFja2luZyBvcgo+Pj4+Pj4+PiBtYW5hZ2VtZW50IG9mIHRoYXQgd29y ay4KPj4+Pj4+Pj4KPj4+Pj4+Pj4gVGhlIG9ubHkgd2F5IHRoZSBhZGQgcmVxdWVzdCBjYWxsIGNh biBmYWlsIGlzIGlmIGl0IGNhbid0IHdyaXRlIGl0cyBlcGlsb2d1ZQo+Pj4+Pj4+PiBjb21tYW5k cyB0byB0aGUgcmluZyAoY2FjaGUgZmx1c2hpbmcsIHNlcW5vIHVwZGF0ZXMsIGludGVycnVwdCBz aWduYWxsaW5nKS4gVGhlCj4+Pj4+Pj4+IHJlYXNvbnMgZm9yIHRoYXQgYXJlIG1vc3RseSBkb3du IHRvIHJ1bm5pbmcgb3V0IG9mIHJpbmcgYnVmZmVyIHNwYWNlIGFuZCB0aGUKPj4+Pj4+Pj4gcHJv YmxlbXMgYXNzb2NpYXRlZCB3aXRoIHRyeWluZyB0byBnZXQgc29tZSBtb3JlLiBUaGlzIHBhdGNo IHByZXZlbnRzIHRoYXQKPj4+Pj4+Pj4gc2l0dWF0aW9uIGZyb20gaGFwcGVuaW5nIGluIHRoZSBm aXJzdCBwbGFjZS4KPj4+Pj4+Pj4KPj4+Pj4+Pj4gV2hlbiBhIHJlcXVlc3QgaXMgY3JlYXRlZCwg aXQgbWFya3Mgc3VmZmljaWVudCBzcGFjZSBhcyByZXNlcnZlZCBmb3IgdGhlCj4+Pj4+Pj4+IGVw aWxvZ3VlIGNvbW1hbmRzLiBUaHVzIGd1YXJhbnRlZWluZyB0aGF0IGJ5IHRoZSB0aW1lIHRoZSBl cGlsb2d1ZSBpcyB3cml0dGVuLAo+Pj4+Pj4+PiB0aGVyZSB3aWxsIGJlIHBsZW50eSBvZiBzcGFj ZSBmb3IgaXQuIE5vdGUgdGhhdCBhIHJpbmdfYmVnaW4oKSBjYWxsIGlzIHJlcXVpcmVkCj4+Pj4+ Pj4+IHRvIGFjdHVhbGx5IHJlc2VydmUgdGhlIHNwYWNlIChhbmQgZG8gYW55IHBvdGVudGlhbCB3 YWl0aW5nKS4gSG93ZXZlciwgdGhhdCBpcwo+Pj4+Pj4+PiBub3QgY3VycmVudGx5IGRvbmUgYXQg cmVxdWVzdCBjcmVhdGlvbiB0aW1lLiBUaGlzIGlzIGJlY2F1c2UgdGhlIHJpbmdfYmVnaW4oKQo+ Pj4+Pj4+PiBjb2RlIGNhbiBhbGxvY2F0ZSBhIHJlcXVlc3QuIEhlbmNlIGNhbGxpbmcgYmVnaW4o KSBmcm9tIHRoZSByZXF1ZXN0IGFsbG9jYXRpb24KPj4+Pj4+Pj4gY29kZSB3b3VsZCBsZWFkIHRv IGluZmluaXRlIHJlY3Vyc2lvbiEgTGF0ZXIgcGF0Y2hlcyBpbiB0aGlzIHNlcmllcyByZW1vdmUg dGhlCj4+Pj4+Pj4+IG5lZWQgZm9yIGJlZ2luKCkgdG8gZG8gdGhlIGFsbG9jYXRlLiBBdCB0aGF0 IHBvaW50LCBpdCBiZWNvbWVzIHNhZmUgZm9yIHRoZQo+Pj4+Pj4+PiBhbGxvY2F0ZSB0byBjYWxs IGJlZ2luKCkgYW5kIHJlYWxseSByZXNlcnZlIHRoZSBzcGFjZS4KPj4+Pj4+Pj4KPj4+Pj4+Pj4g VW50aWwgdGhlbiwgdGhlcmUgaXMgYSBwb3RlbnRpYWwgZm9yIGluc3VmZmljaWVudCBzcGFjZSB0 byBiZSBhdmFpbGFibGUgYXQgdGhlCj4+Pj4+Pj4+IHBvaW50IG9mIGNhbGxpbmcgaTkxNV9hZGRf cmVxdWVzdCgpLiBIb3dldmVyLCB0aGF0IHdvdWxkIG9ubHkgYmUgaW4gdGhlIGNhc2UKPj4+Pj4+ Pj4gd2hlcmUgdGhlIHJlcXVlc3Qgd2FzIGNyZWF0ZWQgYW5kIGltbWVkaWF0ZWx5IHN1Ym1pdHRl ZCB3aXRob3V0IGV2ZXIgY2FsbGluZwo+Pj4+Pj4+PiByaW5nX2JlZ2luKCkgYW5kIGFkZGluZyBh bnkgd29yayB0byB0aGF0IHJlcXVlc3QuIFdoaWNoIHNob3VsZCBuZXZlciBoYXBwZW4uIEFuZAo+ Pj4+Pj4+PiBldmVuIGlmIGl0IGRvZXMsIGFuZCBpZiB0aGF0IHJlcXVlc3QgaGFwcGVucyB0byBm YWxsIGRvd24gdGhlIHRpbnkgd2luZG93IG9mCj4+Pj4+Pj4+IG9wcG9ydHVuaXR5IGZvciBmYWls aW5nIGR1ZSB0byBiZWluZyBvdXQgb2YgcmluZyBzcGFjZSB0aGVuIGRvZXMgaXQgcmVhbGx5Cj4+ Pj4+Pj4+IG1hdHRlciBiZWNhdXNlIHRoZSByZXF1ZXN0IHdhc24ndCBkb2luZyBhbnl0aGluZyBp biB0aGUgZmlyc3QgcGxhY2U/Cj4+Pj4+Pj4+Cj4+Pj4+Pj4+IHYyOiBVcGRhdGVkIHRoZSAncmVz ZXJ2ZWQgc3BhY2UgdG9vIHNtYWxsJyB3YXJuaW5nIHRvIGluY2x1ZGUgdGhlIG9mZmVuZGluZwo+ Pj4+Pj4+PiBzaXplcy4gQWRkZWQgYSAnY2FuY2VsJyBvcGVyYXRpb24gdG8gY2xlYW4gdXAgd2hl biBhIHJlcXVlc3QgaXMgYWJhbmRvbmVkLiBBZGRlZAo+Pj4+Pj4+PiByZS1pbml0aWFsaXNhdGlv biBvZiB0cmFja2luZyBzdGF0ZSBhZnRlciBhIGJ1ZmZlciB3cmFwIHRvIGtlZXAgdGhlIHNhbml0 eQo+Pj4+Pj4+PiBjaGVja3MgYWNjdXJhdGUuCj4+Pj4+Pj4+Cj4+Pj4+Pj4+IHYzOiBJbmNyZW1l bnRlZCB0aGUgcmVzZXJ2ZWQgc2l6ZSB0byBhY2NvbW1vZGF0ZSBJcm9ubGFrZSAoYWZ0ZXIgZmlu YWxseQo+Pj4+Pj4+PiBtYW5hZ2luZyB0byBydW4gb24gYW4gSUxLIHN5c3RlbSkuIEFsc28gZml4 ZWQgbWlzc2luZyB3cmFwIGNvZGUgaW4gTFJDIG1vZGUuCj4+Pj4+Pj4+Cj4+Pj4+Pj4+IHY0OiBB ZGRlZCBleHRyYSBjb21tZW50IGFuZCByZW1vdmVkIGR1cGxpY2F0ZSBXQVJOIChmZWVkYmFjayBm cm9tIFRvbWFzKS4KPj4+Pj4+Pj4KPj4+Pj4+Pj4gdjU6IFJlLXdyaXRlIG9mIHdyYXAgaGFuZGxp bmcgdG8gcHJldmVudCB1bm5lY2Vzc2FyeSBlYXJseSB3cmFwcyAoZmVlZGJhY2sgZnJvbQo+Pj4+ Pj4+PiBEYW5pZWwgVmV0dGVyKS4KPj4+Pj4+PiBUaGlzIGRpZG4ndCBhY3R1YWxseSBpbXBsZW1l bnQgd2hhdCBJIHN1Z2dlc3RlZCAod3JhcHBpbmcgaXMgdGhlIHdvcnN0Cj4+Pj4+Pj4gY2FzZSwg aGVuY2Ugc2tpcHBpbmcgdGhlIGNoZWNrIGZvciB0aGF0IGlzIGJyZWFraW5nIHRoZSBzYW5pdHkg Y2hlY2spIGFuZAo+Pj4+Pj4+IHNvIGNoYW5nZWQgdGhlIHBhdGNoIGZyb20gImNvcnJlY3QsIGJ1 dCBhIGJpdCBmcmFnaWxlIiB0byBicm9rZW4uIEkndmUKPj4+Pj4+PiBtZXJnZWQgdGhlIHByZXZp b3VzIHZlcnNpb24gaW5zdGVhZC4KPj4+Pj4+PiAtRGFuaWVsCj4+Pj4+PiBJJ20gY29uZnVzZWQu IEkgdGhvdWdodCB5b3VyIG1haW4gaXNzdWUgd2FzIHRoZSBlYXJseSB3cmFwcGluZyBub3QgdGhl Cj4+Pj4+PiBzYW5pdHkgY2hlY2suIFRoZSBjaGVjayBpcyB0byBlbnN1cmUgdGhhdCB0aGUgcmVz ZXJ2YXRpb24gaXMgbGFyZ2UgZW5vdWdoIHRvCj4+Pj4+PiBjb3ZlciBhbGwgdGhlIGNvbW1hbmRz IHdyaXR0ZW4gZHVyaW5nIHJlcXVlc3Qgc3VibWlzc2lvbi4gVGhhdCBzaG91bGQgbm90IGJlCj4+ Pj4+PiBhZmZlY3RlZCBieSB3aGV0aGVyIGEgd3JhcCBvY2N1cnMgb3Igbm90LiBXcmFwcGluZyBk b2VzIG5vdCBtYWdpY2FsbHkgYWRkIGFuCj4+Pj4+PiBleHRyYSBidW5jaCBvZiBkd29yZHMgdG8g dGhlIGVtaXRfcmVxdWVzdCgpIGNhbGwuIFdoZXJlYXMgbWFraW5nIHRoZSBjaGVjawo+Pj4+Pj4g d29yayB3aXRoIHRoZSB3cmFwIGNvbmRpdGlvbiByZXF1aXJlcyBhZGRpbmcgaW4gZXh0cmEgdHJh Y2tpbmcgc3RhdGUgb2YKPj4+Pj4+IGV4YWN0bHkgd2hlcmUgdGhlIHdyYXAgb2NjdXJyZWQuIFRo YXQgaXMgZXh0cmEgY29kZSB0aGF0IG9ubHkgZXhpc3RzIHRvCj4+Pj4+PiBjYXRjaCBzb21ldGhp bmcgaW4gdGhlIHZlcnkgcmFyZSBjYXNlIHdoaWNoIHNob3VsZCBhbHJlYWR5IGhhdmUgYmVlbiBj YXVnaHQKPj4+Pj4+IGluIHRoZSB2ZXJ5IGNvbW1vbiBjYXNlLiBJLmUuIGlmIHlvdXIgcmVzZXJ2 ZWQgc2l6ZSBpcyB0b28gc21hbGwgdGhlbiB5b3UKPj4+Pj4+IHdpbGwgaGl0IHRoZSB3YXJuaW5n IG9uIGV2ZXJ5IGJhdGNoIGJ1ZmZlciBzdWJtaXNzaW9uLgo+Pj4+PiBUaGUgcHJvYmxlbSBpcyB0 aGF0IGlmIHlvdSBhbGxvdyBhIHdyYXAgaW4gdGhlIHJlc2VydmUgc2l6ZSB0aGVuIHRoZQo+Pj4+ PiByaW5nc3BhY2UgcmVxdWlyZW1lbnRzIGFyZSBiaWdnZXIgdGhhbiBpZiB5b3UgZG9uJ3Qgd3Jh cC4gQW5kIHNpbmNlIHRoZQo+Pj4+PiBhZGQgcmVxdWVzdCBpcyBzcGxpdCB1cCBpbnRvIG1hbnkg aW50ZWxfcmluZ19iZWdpbiB0aGF0J3MgcG9zc2libGUuIEhlbmNlCj4+Pj4+IGlmIHlvdSBhbGxv dyB3cmFwcGluZyBpbiB0aGUgcmVzZXJ2ZWQgc3BhY2UsIHRoZW4gdGhlIG1vc3QgaW1wb3J0YW50 IGNhc2UKPj4+Pj4gZm9yIHRoZSBkZWJ1ZyBjaGVjayBpcyB0byBtYWtlIHN1cmUgdGhhdCBpdCBj YXRjaGVzIGFueSBraW5kIG9mCj4+Pj4+IHJlc2VydmF0aW9uIG92ZXJmbG93IHdoaWxlIHdyYXBw aW5nLiBUaGUgbm90LXdyYXBwZWQgY2FzZSBpcyBwcm9iYWJseSB0aGUKPj4+Pj4gYm9yaW5nIG9u ZS4KPj4+Pj4KPj4+Pj4gQW5kIGluZGVlZCBldmVudHVhbGx5IHdlIHNob3VsZCBvdmVyZmxvdyBz aW5jZSBhY2NvcmRpbmcgdG8geW91ciBjb21tZW50Cj4+Pj4+IHRoZSB3b3JzdCBjYXNlIGFkZCBy ZXF1ZXN0IG9uIGlsayBpcyAxMzYgZHdvcmRzLiBBbmQgdGhlIGxhcmdlc3QKPj4+Pj4gaW50ZWxf cmluZ19iZWdpbiBpbiB0aGVyZSBpcyAzMiBkd29yZHMsIHdoaWNoIG1lYW5zIGF0IG1vc3Qgd2Un bGwgdGhyb3cKPj4+Pj4gYXdheSAzMSBkd29yZHMgd2hlbiB3cmFwcGluZy4gV2hpY2ggbWVhbnMg dGhlIDE2MCBkd29yZHMgb2YgcmVzZXJ2YXRpb24KPj4+Pj4gYXJlIG5vdCBlbm91Z2ggc2luY2Ug d2UnZCBuZWVkIDE2NyBkd29yZHMgb2Ygc3BhY2UgZm9yIHRoZSB3b3JzdCBjYXNlLiBCdXQKPj4+ Pj4gc2luY2UgdGhlIHNwYWNlX2VuZCBkZWJ1ZyBjaGVjayB3YXMgYSBuby1vcCBmb3IgdGhlIHdy YXBwZWQgY2FzZSB5b3Ugd29uJ3QKPj4+Pj4gY2F0Y2ggdGhpcyBvbmUuCj4+Pj4gVGhlIG1pbmlt dW0gcmVzZXJ2YXRpb24gc2l6ZSBpbiB0aGlzIGNhc2UgaXMgc3RpbGwgb25seSAxMzYuIFRoZSBw cmVwYXJlCj4+Pj4gY29kZSBjaGVja3MgZm9yIHRoZSAzMiB3b3JkcyBhY3R1YWxseSByZXF1ZXN0 ZWQgYW5kIHdyYXBzIGlmIG5lY2Vzc2FyeS4gSXQKPj4+PiB0aGVuIGNoZWNrcyBmb3IgMTM2KzMy IHdvcmRzIG9mIHNwYWNlLiBJZiB0aGF0IHdvdWxkIGNhdXNlIGEgd3JhcCBpdCB3aWxsCj4+Pj4g dGhlbiBhZGQgb24gdGhlIGFtb3VudCBvZiBzcGFjZSBhY3R1YWxseSBsZWZ0IGluIHRoZSByaW5n IGFuZCB3YWl0IGZvciB0aGF0Cj4+Pj4gYmlnZ2VyIHRvdGFsLiBUaGF0IGd1YXJhbnRlZXMgdGhh dCBpdCBoYXMgd2FpdGVkIGZvciB0aGUgMTM2IGF0IHRoZSBzdGFydCBvZgo+Pj4+IHRoZSByaW5n LiBUaGUgY2FsbGVyIGlzIHRoZW4gZnJlZSB0byBmaWxsIGluIHRoZSAzMiB3b3JkcyBhbmQgdGhl cmUgaXMgc3RpbGwKPj4+PiBndWFyYW50ZWVkIHRvIGJlIGEgbWluaW11bSBvZiAxMzYgd29yZHMg YXZhaWxhYmxlICh3aXRoIG9yIHdpdGhvdXQgd3JhcHBpbmcpCj4+Pj4gYmVmb3JlIGFueSBmdXJ0 aGVyIHdhaXQgZm9yIHNwYWNlIGlzIG5lY2Vzc2FyeS4gVGh1cyB0aGUgYWRkX3JlcXVlc3QoKSBj b2RlCj4+Pj4gaXMgc2FmZSBmcm9tIGZlYXIgb2YgZmFpbHVyZSBpcnJlc3BlY3RpdmUgb2Ygd2hl cmUgYW55IHdyYXAgbWlnaHQgb2NjdXIuCj4+Pj4KPj4+Pgo+Pj4+PiBXcnQga2VlcGluZyB0cmFj ayBvZiB3cmFwcGluZyB3aGlsZSB0aGUgcmVzZXJ2YXRpb24gaXMgaW4gdXNlLCB0aGUKPj4+Pj4g Zm9sbG93aW5nIHNob3VsZCBkbyB0aGF0IHdpdGhvdXQgYW55IG5lZWQgb2YgYWRkaXRpb25hbCB0 cmFja2luZzoKPj4+Pj4KPj4+Pj4KPj4+Pj4gCWludCB1c2VkX3NpemUgPSByaW5nYnVmLT50YWls IC0gcmluZ2J1Zi0+cmVzZXJ2ZWRfdGFpbDsKPj4+Pj4KPj4+Pj4gCWlmICh1c2VkX3NpemUgPCAw KQo+Pj4+PiAJCXVzZWRfc2l6ZSArPSByaW5nYnVmLT5zaXplOwo+Pj4+Pgo+Pj4+PiAJV0FSTih1 c2VkX3NpemUgPCByaW5nYnVmLT5yZXNlcnZlZF9zaXplLAo+Pj4+PiAJICAgICAicmVxdWVzdCBy ZXNlcnZlZCBzaXplIHRvbyBzbWFsbDogJWQgdnMgJWQhXG4iLAo+Pj4+PiAJICAgICB1c2VkX3Np emUsIHJpbmdidWYtPnJlc2VydmVkX3NpemUpOwo+Pj4+Pgo+Pj4+PiBJIHdhcyBtaXN0YWtlbiB0 aGF0IHlvdSBjYW4gcmV1c2UgX19pbnRlbF9yaW5nX3NwYWNlIChzaW5jZSB0aGF0IGhhcwo+Pj4+ PiBzbGlnaHRseSBkaWZmZXJlbnQgcmVxdWlyZW1lbnRzKSwgYnV0IHRoaXMgZ2l2ZXMgeW91IGEg bmljZWx5IGxvY2FsaXplZAo+Pj4+PiBjaGVjayBmb3IgcmVzZXJ2YXRpb24gb3ZlcmZsb3cgd2hp Y2ggd29ya3MgZXZlbiB3aGVuIHlvdSB3cmFwLiBPZmMgaXQKPj4+Pj4gd29uJ3Qgd29yayBpZiBh biBhZGRfcmVxdWVzdCBpcyBiaWdnZXIgdGhhbiB0aGUgZW50aXJlIHJpbmcsIGJ1dCB0aGF0J3MK Pj4+Pj4gaW1wb3NzaWJsZSBhbnl3YXkgc2luY2Ugd2UgY2FuIGF0IG1vc3QgcmVzZXJ2ZSByaW5n YnVmLT5zaXplIC0KPj4+Pj4gSTkxNV9SSU5HX0ZSRUVfU1BBQ0UuCj4+Pj4gVGhlIHByb2JsZW0g d2l0aCB0aGUgYWJvdmUgY2FsY3VsYXRpb24gaXMgdGhhdCBpdCBpbmNsdWRlcyB0aGUgd2FzdGVk IHNwYWNlCj4+Pj4gYXQgdGhlIGVuZCBvZiB0aGUgcmluZy4gVGh1cyBpdCB3aWxsIGNvbXBsYWlu IHRoZSByZXNlcnZlZCBzaXplIHdhcyB0b28KPj4+PiBzbWFsbCB3aGVuIGluIGZhY3QgaXQgd2Fz IGp1c3QgZmluZS4KPj4+IE9rIEkgYWdhaW4gbWlzdW5kZXJzdG9vZCB5b3VyIHBhdGNoIGEgYml0 IHNpbmNlIGl0IGRpZG4ndCBxdWl0ZSBkbyB3aGF0IEkKPj4+IGV4cGVjdCwgYW5kIEkgc3RhbmQg Y29ycmVjdGVkIHRoYXQgdjUgd29ya3MgdG9vLiBCdXQgSSBzdGlsbCBzZWVtIHRvIGZhaWwKPj4+ IHRvIGdldCBteSBtYWluIGNvbmNlcm4gYWNyb3NzLiBJJ2xsIHNlZSB3aGV0aGVyIEkgY2FuIHdo aXAgdXAgYSBwYXRjaCBhcyBhCj4+PiBzaG9ydCBkZW1vbnN0cmF0aW9uLCBtYXliZSB0aGF0IGhl bHBzIHRvIHVuY29uZnVzZSB0aGlzIGRpY3Vzc2lvbi4KPj4+Cj4+PiBGb3Igbm93IEkgdGhpbmsg d2UncmUgY292ZXJlZCB3aXRoIGVpdGhlciB2NCBvciB2NSBzbyBzdGlja2luZyB3aXRoIGVpdGhl cgo+Pj4gaXMgb2sgd2l0aCBtZS4KPj4+IC1EYW5pZWwKPj4gSSB0aGluayB2NSBpcyBtdWNoIGJl dHRlci4gSXQgcmVkdWNlcyB0aGUgcmluZyBzcGFjZSB3YXN0YWdlIHdoaWNoIEkgdGhvdWdodAo+ PiB3YXMgeW91ciBtYWluIGNvbmNlcm4uCj4gT2sgd2l0aCBtZSB0b28gLSBJIHNpbXBseSBkaWRu J3QgcGljayBpdCB1cCB3aGVuIG1lcmdpbmcgeWVzdGVyZGF5IGJlY2F1c2UKPiBJIGNvdWxkbid0 IGltbWVkaWF0ZWx5IGNvbnZpbmNlIG15c2VsZiBpdCdzIGNvcnJlY3QsIGJ1dCByZWFsbHkgd2Fu dGVkIHRvCj4gcHVsbCBpbiB5b3VyIHNlcmllcy4gVW5mb3J0dW5hdGVseSBpdCdzIG5vdyBidXJy aWVkIGJlbG93IHBpbGVzIG9mCj4gcGF0Y2hlcywgc28gY2FuIHlvdSBwbGVhc2UgZG8gYSBkZWx0 YSBwYXRjaD8KRGVsdGEgcGF0Y2ggcG9zdGVkOiAgJ1tQQVRDSF0gZHJtL2k5MTU6IFJlc2VydmUg c3BhY2UgaW1wcm92ZW1lbnRzJy4KCgo+Cj4+IFRoZSBwcm9ibGVtIHdpdGggYSBtb3JlIHNpbXBs aXN0aWMgYXBwcm9hY2ggdGhhdCBqdXN0IGRvdWJsZXMgdGhlIG1pbmltdW0KPj4gcmVzZXJ2ZSBz aXplIHRvIGVuc3VyZSB0aGF0IGl0IHdpbGwgZml0IGJlZm9yZSBvciBhZnRlciBhIHdyYXAgaXMg dGhhdCB5b3UKPj4gYXJlIGRvdWJsaW5nIHRoZSByZXNlcnZlIHNpemUuIFRoYXQgdG9vIGlzIHJh dGhlciB3YXN0ZWZ1bCBvZiByaW5nIHNwYWNlLiBJdAo+PiBhbHNvIG1lYW5zIHRoYXQgeW91IG9u bHkgZmluZCBvdXQgd2hlbiB0aGUgcmVzZXJ2ZSBzaXplIGlzIHRvbyBzbWFsbCB3aGVuCj4+IHlv dSBoaXQgdGhlIG1heGltdW0gdXNhZ2UgY29pbmNpZGVudCB3aXRoIGEgd29yc3QgY2FzZSB3cmFw IHBvaW50LiBXaGVyZWFzCj4+IHRoZSB2NSBtZXRob2QgbWVhbnMgdGhhdCB5b3Ugbm90aWNlIGEg dG9vIHNtYWxsIHJlc2VydmUgd2hldGhlciB3cmFwcGluZyBvcgo+PiBub3QuCj4gV2UgZG9uJ3Qg bmVlZCB0byBkb3VibGUgdGhlIHJlc2VydmF0aW9uIHNpbmNlIHRoZSBhZGRfcmVxdWVzdCB0YWls IGlzCj4gc3BsaXQgdXAgaW50byBtYW55IGluZGl2aWR1YWwgaW50ZWxfcmluZ19iZWdpbi4gQW5k IHdlJ2Qgb25seSBuZWVkIHRvIHdyYXAKPiBmb3IgdGhlIGxhcmdlc3Qgb2YgdGhvc2UsIHdoaWNo IGlzIHN1YnN0YW50aWFsbHkgbGVzcyB0aGFuIHRoZSBlbnRpcmUKPiByZXNlcnZhdGlvbi4gRnVy dGhlcm1vcmUgd2l0aCB0aGUgcmVzZXJ2YXRpb24gdGhlc2UgY29tbWFuZHMgY2FuJ3QgZXZlcgo+ IGZhaWwsIHNvIGZvciB0aG9zZSB3ZSBrbm93IGFyZSBvbmx5IHVzZWQgaW4gdGhlIGFkZF9yZXF1 ZXN0IHRhaWwgd2UgY291bGQKPiBnbyB0byBhIHdyYXAtb25seSBpbnRlbF9yaW5nX2JlZ2luIHdo aWNoIG5ldmVyIHdhaXRzIGFuZCBoYXZlIG9uZSBhdCBhCj4gZHdvcmQgY21kIGJvdW5kYXJ5LiBU aGF0IG1lYW5zIHdlJ2QgbmVlZCB0byBvdmVyZXN0aW1hdGUgdGhlIG5lZWRlZAo+IHJpbmdidWZm ZXIgc3BhY2UgYnkganVzdCBhIGZldyBkd29yZHMgKG5hbWVseSB0aGUgc2l6ZSBvZiB0aGUgbG9u Z2VzdCBDUwo+IGNtZCB3ZSBlbWl0IHVuZGVyIHJlc2VydmF0aW9uKS4gV2hpY2ggaXMgYXJvdW5k IDYgZHdvcmRzIG9yIHNvIGlpcmMuIEFuZAo+IHRvIGF2b2lkIGNoYW5naW5nIGlsayB3ZSBjb3Vs ZCBqdXN0IHNwZWNpYWwgY2FzZSB0aGF0IGluIHJlc2VydmVfc3BhY2UoKS4KPgo+IEluIHByYWN0 aWNlIEkgZG9uJ3QgdGhpbmsgdGhlcmUgd291bGQgYmUgYW55IGRpZmZlcmVuY2Ugd2l0aCB5b3Vy IHY1IHNpbmNlCj4gZXNwZWNpYWxseSB3aXRoIHRoZSBzY2hlZHVsZXIgd2Ugc2hvdWxkbid0IGV2 ZXIgb3ZlcmZpbGwgcmluZ3MgcmVhbGx5LiBCdXQKPiB0aGUgY2xlYXIgdXBzaWRlIGlzIHRoYXQg dGhlIHJlc2VydmVfc3BhY2VfZW5kIGNoZWNrIHdvdWxkIGJlIGluZGVwZW5kZW50Cj4gb2YgYW55 IGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgaG93IHJlc2VydmF0aW9uIHZzLiB3cmFwcGluZyBp cyBkb25lCj4gZXhhY3RseS4gQW5kIGhlbmNlIHJvYnVzdCBhZ2FpbnN0IGFueSBmdXR1cmUgZnVt YmxlcyBpbiB0aGlzIGFyZWEuIExvb2tpbmcKPiBhdCBvdXIgaGlzdG9yeSBvZiB0aGUgcmVsZXZh bnQgY29kZSB3ZSBjYW4gZXhwZWN0IGEgbG90IG9mIHRob3NlLgo+IC1EYW5pZWwKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==