From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [RFC] handling of alpha mode (pre-multiplied/straight) in ARGB modes Date: Wed, 13 Jan 2016 16:58:04 +0200 Message-ID: <20160113145804.GH23290@intel.com> References: <5693B9C4.2040209@samsung.com> <20160111150749.GY8076@phenom.ffwll.local> <20160111152221.GB23290@intel.com> <56965B8F.4010701@samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 E3DE36E0CF for ; Wed, 13 Jan 2016 06:58:09 -0800 (PST) Content-Disposition: inline In-Reply-To: <56965B8F.4010701@samsung.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Marek Szyprowski Cc: DRI mailing list , Bartlomiej Zolnierkiewicz List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBKYW4gMTMsIDIwMTYgYXQgMDM6MTM6MzVQTSArMDEwMCwgTWFyZWsgU3p5cHJvd3Nr aSB3cm90ZToKPiBIZWxsbywKPiAKPiBPbiAyMDE2LTAxLTExIDE2OjIyLCBWaWxsZSBTeXJqw6Rs w6Qgd3JvdGU6Cj4gPiBPbiBNb24sIEphbiAxMSwgMjAxNiBhdCAwNDowNzo1MFBNICswMTAwLCBE YW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4+IE9uIE1vbiwgSmFuIDExLCAyMDE2IGF0IDAzOjE4OjQ0 UE0gKzAxMDAsIE1hcmVrIFN6eXByb3dza2kgd3JvdGU6Cj4gPj4+IERlYXIgQWxsLAo+ID4+Pgo+ ID4+PiBJIHdvdWxkIGxpa2UgdG8gYWRkIHN1cHBvcnQgZm9yIGNvbmZpZ3VyaW5nIGFscGhhIG1v ZGVzOiBzdHJhaWdodCBhbmQKPiA+Pj4gcHJlLW11bHRpcGxpZWQgZm9yIGJsZW5kaW5nIHRvIEV4 eW5vcyBEUk0gZHJpdmVyLiBGb3IgdGhvc2Ugd2hvIHNlZSB0aG9zZQo+ID4+PiB0ZXJtcyBmb3Ig dGhlIGZpcnN0IHRpbWU6Cj4gPj4+IDEuIHN0cmFpZ2h0IGFscGhhIG1vZGUgbWVhbnMgbWVhbnMg dGhhdCBhbGwgQSBhbmQgUkdCIHZhbHVlcyBhcmUgZnJvbSBmdWxsCj4gPj4+IDAuMjU1IHJhbmdl LAo+ID4+PiAyLiBwcmUtbXVsdGlwbGllZCBhbHBoYSBtb2RlIG1lYW5zIHRoYXQgQSBpcyBmcm9t IDAuLjI1NSByYW5nZSBhbmQgUkdCCj4gPj4+IHZhbHVlcyBhcmUgc2NhbGVkIHRvIDAuLkFMUEhB IHJhbmdlICh3aGVyZSBBTFBIQSBpcyB0aGUgQSB2YWx1ZSBmb3IgdGhlCj4gPj4+IGdpdmVuIHBp eGVsKS4KPiA+Pj4gVGhlIHByZS1tdWx0aXBsaWVkIG1vZGUgaXMgcXVpdGUgY29tbW9uIGluIHRl eHR1cmUgcHJvY2Vzc2luZy4KPiA+Pj4KPiA+Pj4gSSBkaWQgYSBsaXR0bGUgcmVzZWFyY2ggYW5k IGZvdW5kIHRoYXQgdGhlcmUgaXMgbm8gY29tbW9uIGFwcHJvYWNoIGZvcgo+ID4+PiBkZWZpbmlu ZyBzdHJhaWdodCBvciBwcmUtbXVsdGlwbGllZCBhbHBoYSBtb2RlcyBmb3IgQVJHQiBmcmFtZWJ1 ZmZlcnMuCj4gPj4+Cj4gPj4+ID5Gcm9tIHJlYWRpbmcgdGhlIHNvdXJjZXMgYW5kIHRoZSByZWdp c3RlciBuYW1lcyBJIGZvdW5kIHRoYXQgZm9sbG93aW5nCj4gPj4+IGRyaXZlcnMgdXNlIHByZS1t dWx0aXBsaWVkIG1vZGVzIGZvciBBUkdCIGZyYW1lYnVmZmVyczoKPiA+Pj4gcmFkZW9uIChhdCBs ZWFzdCBmb3IgQVJHQiBjdXJzb3JzKSwKPiA+Pj4gYW1kZ3B1IChjdXJzb3IpLAo+ID4+PiBpbnRl bCAoYWxsIEFSR0IgcGxhbmVzKSwKPiA+Pj4gcm9jayBjaGlwLgo+ID4+Pgo+ID4+PiBPbiB0aGUg b3RoZXIgaGFuZCwgdGhlcmUgYXJlIGRybSBkcml2ZXJzIHdoaWNoIHN1cHBvcnQgQVJHQiBtb2Rl cyBhbmQgdXNlCj4gPj4+IHN0cmFpZ2h0IGFscGhhIG1vZGVzOgo+ID4+PiBvbWFwLAo+ID4+PiBt c20uCj4gPj4+Cj4gPj4+IEZvciB0aGUgcmVzdCBvZiBkcml2ZXJzLCB3aGljaCBtaWdodCBkZWFs IHdpdGggcGVyLXBpeGVsIGFscGhhLCBJIHdhcyBub3QKPiA+Pj4gYWJsZSB0byBkZXRlcm1pbmUg ZnJvbSB0aGUgY29kZSBpZiB0aGUgcGl4ZWwgUkdCIHZhbHVlcyBhcmUgaW50ZXJwcmV0ZWQgYXMK PiA+Pj4gcGVyLW11bHRpcGxpZWQgb3Igc3RyYWlnaHQ6Cj4gPj4+IGF0bWVsX2hsY2RjLAo+ID4+ PiBzdGksCj4gPj4+IG1kcDUsCj4gPj4+IHNobW9iaWxlLAo+ID4+PiByY2FyLAo+ID4+PiB2YzQs Cj4gPj4+IGlteC4KPiA+PiBJbW8gaW4gY2FzZSBvZiBkb3VidC9taXhlZCBkZWZpbml0aW9ucyB0 aGUgc2VtYW50aWNzIG9mIHRoZSBiaWcgZGVza3RvcAo+ID4+IGRyaXZlcnMgc2hvdWxkIHdpbi4g VHJ1ZSBnZW5lcmljIHVzZXJzcGFjZSBpcyBtb3N0IGxpa2VseSBkZXZlbG9wZWQgb24KPiA+PiB0 aG9zZSwgZXZlcnl0aGluZyBlbHNlIHNob3VsZCBqdXN0IGFkanVzdC4gQW5kIGluIG1vc3QgY2Fz ZXMgd2UgY2FuIGdldAo+ID4+IGF3YXkgd2l0aCB0aGF0IG9uIGFybSBkcml2ZXJzIHNpbmNlIHRo ZXkgdGVuZCB0byBzaGlwIHVzZXJzcGFjZSBhbmQga2VybmVsCj4gPj4gaW4gbG9ja3N0ZXAuIEF0 IGxlYXN0IHdoZXJlIGl0IHJlYWxseSBtYXR0ZXJzLgo+ID4+Cj4gPj4+IEV4eW5vcyBEUk0gZHJp dmVyIG5vdyBtaXhlcyBwcmUtbXVsdGlwbGllZCBhbmQgc3RyYWlnaHQgbW9kZXMsIGRlcGVuZGlu ZyBvbgo+ID4+PiB0aGUgQ1JUQyBzdWItZHJpdmVyLgo+ID4+Pgo+ID4+PiBXaGlsZSBjaGVja2lu ZyB0aGUgY29kZSBJIGZvdW5kIGEgZm9sbG93aW5nIGNvbW1lbnQgaW4KPiA+Pj4gZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jIGluIHNrbF9wbGFuZV9jdGxfZm9ybWF0KCkgZnVuY3Rpb246Cj4gPj4+ IC8qCj4gPj4+ICAgKiBYWFg6IEZvciBBUkJHL0FCR1IgZm9ybWF0cyB3ZSBkZWZhdWx0IHRvIGV4 cGVjdGluZyBzY2Fub3V0IGJ1ZmZlcnMKPiA+Pj4gICAqIHRvIGJlIGFscmVhZHkgcHJlLW11bHRp cGxpZWQuIFdlIG5lZWQgdG8gYWRkIGEga25vYiAob3IgYSBkaWZmZXJlbnQKPiA+Pj4gICAqIERS TV9GT1JNQVQpIGZvciB1c2VyLXNwYWNlIHRvIGNvbmZpZ3VyZSB0aGF0Lgo+ID4+PiAgICovCj4g Pj4+Cj4gPj4+IFRoZSBxdWVzdGlvbiBpcyBob3cgdG8gY2xlYW51cCB0aGlzIGFtYmlndWl0aWVz IGFuZCBsZXQgZ2VuZXJpYyB1c2Vyc3BhY2UgdG8KPiA+Pj4gcHJvcGVybHkgdXNlIEFSR0IvQVJH QiBtb2RlcyB3aXRoIHByb3BlciBibGVuZGluZyBtb2RlLiBJIGNhbWUgdXAgd2l0aCB0aGUKPiA+ Pj4gZm9sbG93aW5nIDMgc29sdXRpb25zOgo+ID4+Pgo+ID4+PiAxLiBEZWZpbmUgbmV3IGZvdXJj YyB2YWx1ZXMgZm9yIHByZS1tdWx0aXBsaWVkIChvci9hbmQgc3RyYWlnaHQpIGFscGhhCj4gPj4+ IG1vZGVzLAo+ID4+PiAyLiBJbnRyb2R1Y2UgYSBuZXcgZnJhbWVidWZmZXIgZmxhZyBmb3IgcHJl LW11bHRpcGxpZWQgb3Igc3RyYWlnaHQgYWxwaGEgKG9yCj4gPj4+IGJvdGgpLAo+ID4+PiAzLiBJ bnRyb2R1Y2UgYSBuZXcgcGxhbmUgcHJvcGVydHkgZm9yIGNvbnRyb2xsaW5nIGFscGhhIGJsZW5k aW5nIG1vZGUuCj4gPj4+Cj4gPj4+IFRoZSBmaXJzdCBzb2x1dGlvbiBoYXMgc2VyaW91cyBjb21w YXRpYmlsaXR5IHByb2JsZW0sIGJlY2F1c2Ugd2UgY2FuIGVpdGhlcgo+ID4+PiBtYXAgZXhpc3Rp bmcgZm91cmNjIHRvIHByZS1tdWx0aXBsaWVkICh0byBmb2xsb3cgcmFkZW9uL2FtZGdwdSwgaW50 ZWwgYW5kCj4gPj4+IHJvY2tjaGlwIGJlaGF2aW9yKSBvciBzdHJhaWdodCBtb2RlLiBCb3RoIHdh eXMgaXQgd2lsbCBicmVhayBzb21lIGV4aXN0aW5nCj4gPj4+IGFwcGxpY2F0aW9ucy4gVG8gYXZv aWQgY29tcGF0aWJpbGl0eSBwcm9ibGVtIHdlIHdvdWxkIG5lZWQgdG8gYWRkIDIgbW9yZQo+ID4+ PiBzZXRzIG9mIGZvdXJjYyBhbmQgbGVhdmUgZXhpc3RpbmcgQVJHQiBtb2RlcyBhcyAnZHJpdmVy IGRlcGVuZGVudCcuCj4gPj4+Cj4gPj4+IFRoZSBzZWNvbmQgc29sdXRpb24gaXMgcHJvYmFibHkg YSBiaXQgbGVzcyBpbnRydXNpdmUsIGJ1dCBpdCBzdWZmZXJzIGZvciB0aGUKPiA+Pj4gc2ltaWxh ciBjb21wYXRpYmlsaXR5IHByb2JsZW0uIFRvIG1ha2UgdGhpcyBmZWF0dXJlIGNvbXBhdGlibGUg d2l0aCBleGlzdGluZwo+ID4+PiBjb2RlLCBwcm9iYWJseSAyIGZsYWdzIHdpbGwgYmUgbmVlZGVk OiBEUk1fTU9ERV9GQl9BTFBIQV9GT1JDRV9QUkVNVUxUSVBMSUVECj4gPj4+IGFuZCBEUk1fTU9E RV9GQl9BTFBIQV9GT1JDRV9TVFJBSUdIVC4gVGhpcyB3YXkgd2hlbiB1c2Vyc3BhY2UgcHJvdmlk ZXMgbm8KPiA+Pj4gZmxhZywgdGhlIGRyaXZlciBjYW4gdXNlIGl0cyBkZWZhdWx0IG1vZGUuCj4g Pj4+Cj4gPj4+IFRoaXJkIHNvbHV0aW9uIChhZGRpdGlvbmFsIHBsYW5lIHByb3BlcnR5KSBoYXMg YmVlbiBhbHJlYWR5IHByb3Bvc2VkOgo+ID4+PiBodHRwczovL2xrbWwub3JnL2xrbWwvMjAxNS82 LzE5LzMzMCwgaG93ZXZlciBJIGZvdW5kIG5vIGZvbGxvdy11cCBub3IKPiA+Pj4gY29tbWVudHMu IFNlcGFyYXRlIHByb3BlcnR5IGxldHMgYXQgbGVhc3QgZHJpdmVycyB0byBub3RpZnkgdXNlcnNw YWNlIGFib3V0Cj4gPj4+IGRyaXZlcidzIGRlZmF1bHQgYWxwaGEgbW9kZSBhbmQgbGV0cyBnZW5l cmljIGFwcGxpY2F0aW9uIHRvIHByb3Blcmx5IHNldCB0aGUKPiA+Pj4gcmVxdWVzdGVkIG1vZGUu IFRoZSBvbmx5IHByb2JsZW0gaXMgdGhhdCB0aGUgYWxwaGEgbW9kZSBpcyBub3QgZGlyZWN0bHkK PiA+Pj4gY29uZmlndXJlZCBvbiB0aGUgZnJhbWVidWZmZXIgb2JqZWN0LCB3aGVyZSBpbiBteSBv cGluaW9uIGl0IHNob3VsZCBiZQo+ID4+PiBzdG9yZWQuCj4gPj4+Cj4gPj4+IFBsZWFzZSBsZXQg bWUga25vdyB3aGljaCBhcHByb2FjaCBZb3UgbGlrZSBiZXN0IGFuZCB3aGljaCBzaG91bGQgSSB0 YWtlIGZvcgo+ID4+PiBpbnRyb2R1Y2luZyBnZW5lcmljIHdheSBvZiBjb25maWd1cmluZyBhbHBo YSBtb2RlLgo+ID4+IE9uZSBpZGVhIHRoYXQgd2FzIHRvc3NlZCBhcm91bmQgYSBmZXcgdGltZXMg aXMgdG8gZ28gZnVsbCBnZW5lcmljIGFuZAo+ID4+IGltcGxlbWVudCBzb21ldGhpbmcgbGlrZSBn bEJsZW5kRnVuYyBmb3IgcGxhbmVzLCBleGNlcHQgdGhhdCB3ZSdkIGFsc28KPiA+PiBwcmUtbXVs dGlwbGllZC9zdHJhaWdodCB2ZXJzaW9ucyB3aGVyZSBpdCBtYWtlcyBzZW5zZS4gRm9yIGRyaXZl cnMgdGhhdAo+ID4+IGNhbid0IHN1cHBvcnQgcHJlLW11bHRpcGxpZWQgYWxwaGEgdGhleSBjb3Vs ZCBzaW1wbHkgbGVhdmUgb3V0IHRoZXNlCj4gPj4gdmFsdWVzIGZyb20gdGhlIGJsZW5kLWZ1bmMg cHJvcGVydHkgKGxpa2Ugd2UgYWxyZWFkeSBhbGxvdyB3aXRoIGUuZy4KPiA+PiByb3RhdGlvbiwg d2hlbiBhIGRyaXZlciBjYW4ndCBkbyA5MC8yNzDCsCkuCj4gPj4KPiA+PiBXcnQgYmFja3dhcmRz IGNvbXBhdCBhIHByb3BlcnR5IHdvdWxkIHdvcmsgd2VsbCB0b286IElmIGl0J3Mgbm90IHRoZXJl Cj4gPj4gdGhlbiB1c2Vyc3BhY2Ugc2hvdWxkIGFzc3VtZSBvbGQgYmVoYXZpb3VyICh3aGljaCBz aG91bGQgYmUgcHJlLW11bHRpcGxpZWQKPiA+PiByZWFsbHksIGJ1dCBtaWdodCBiZSBzb21ld2hh dCBicm9rZW4gb24gc29tZSBkcml2ZXJzL2tlcm5lbCkuCj4gPj4KPiA+PiBEYW1pZW4gaGFkIHNv bWUgUkZDIGFib3V0IGFsbCB0aGlzIHdheSBiYWNrLCBidXQgY2FuJ3QgZmluZCBpdCByaWdodCBu b3cuCj4gPiBJIHJlbWVtYmUgaGUgc2FpZCBoZSB3YW50ZWQgdG8gd29yayBvbiBpdCwgYnV0IEkg ZG9uJ3QgcmVtZW1iZXIgc2VlaW5nCj4gPiBhbnl0aGluZyBjb21lIG91dCBvZiB0aGF0LiBJIGd1 ZXNzIGhlIGdvdCBzd2FsbG93ZWQgYnkgcGF0Y2h3b3JrLCBvciBJCj4gPiBqdXN0IG1pc3NlZCB0 aGUgcGF0Y2guCj4gPgo+ID4gVGhpcyBtYWlsIG1pZ2h0IGluY2x1ZGUgc29tZSBvZiBteSBtb3Jl IHJlY2VudCB0aG91Z2h0cyBvbiB0aGlzIG1hdHRlcgo+ID4gaHR0cDovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9hcmNoaXZlcy9pbnRlbC1nZngvMjAxNC1BcHJpbC8wNDI5NTYuaHRtbAo+IAo+IEkg YWxzbyBmb3VuZCB0aGlzIHBhdGNoOiBodHRwOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9w YXRjaC8yMzAwMC8KPiAKPiBIb3dldmVyIEkgc3RpbGwgZG9uJ3QgZ2V0IGEgY29tcGxldGUgcGlj dHVyZSBob3cgaXQgd291bGQgd29yay4gSWYgSSBnb3QgaXQKPiByaWdodCwgdGhlIHJlYWwgYmxl bmRpbmcgZnVuY3Rpb24gaXMgZGVmaW5lZCBieSBhIHBhaXIgb2YgdGhlIHZhbHVlcyAKPiBmcm9t IHRoZQo+IHByb3Bvc2VkIGVudW1zLCB3aGVyZSBvbmUgYXBwbGllcyB0byB0aGUgYmFja2dyb3Vu ZCAodGhlIGJsZW5kaW5nIHJlc3VsdCBvZgo+IGRlZXBlciBwbGFuZXMpIGFuZCB0aGUgc2Vjb25k IGFwcGxpZXMgdG8gdGhlIHByb2Nlc3NlZCBwbGFuZS4gU29tZQo+IGNvbWJpbmF0aW9ucyBvZiB0 aGUgcHJvcG9zZWQgZW51bXMgZG9lc24ndCBtYWtlIG11Y2ggc2Vuc2UgKGFuZCBlc3BlY2lhbGx5 Cj4gY2hhbmdpbmcgdGhlIGNvbnN0YW50IHplcm8gYW5kIG9uZSBtZWFucyBzaW1wbHkgY2hhbmdp bmcgdGhlIG9yZGVyIG9mIHRoZQo+IHBsYW5lcyksIHNvIEkgd29uZGVyIGlmIGl0IG1pZ2h0IGJl IGVhc2llciB0byBzaW1wbHkgY3JlYXRlIGFuIGVudW0gd2l0aAo+IGFsbCBzYW5lIHZhbHVlcyBm b3IgYmxlbmRpbmcgYW5kIGRvY3VtZW50IGl0IHJlYWxseSB3ZWxsPyBUaGlzIHdheSBkcml2ZXJz Cj4gd2lsbCBzaW1wbHkgaW5pdGlhbGl6ZSBvbmx5IHRoZSBzdXBwb3J0ZWQgYmxlbmRpbmcgbW9k ZXMuCgpUaGF0IHdhcyBteSBpZGVhIG1vcmUgb3IgbGVzcyB0b28uIFdlJ2Qgc3RpbGwgbW9kZWwg dGhpbmdzIGJhc2VkIG9uIHRoZQpHTCBzdHVmZiwgYnV0IHdlIG9ubHkgYWR2ZXJ0aXplIHNwZWNp ZmljIHNyYytkc3QgYmxlbmQgZmFjdG9yCmNvbWJpbmF0aW9ucy4gSWUuIGEgc2luZ2xlIGVudW0g cHJvcGVydHkgd2hlcmUgZWFjaCB2YWx1ZSBjb250YWlucyBib3RoCnRoZSBzcmMgYW5kIGRzdCBi bGVuZCBmYWN0b3IuCgo+IAo+IEkgYXNzdW1lIHRoYXQgdGhpcyB3YXkgYWxzbyB0aGUgc2VwYXJh dGUgZW51bXMgY2FuIGJlIGRlZmluZWQgZm9yIHN0cmFpZ2h0Cj4gYW5kIHByZS1tdWx0aXBsaWVk IGFscGhhIGJsZW5kaW5nIG1vZGVzLgo+IAo+IFRoZSBvdGhlciBwcm9ibGVtIG1lbnRpb25lZCBz b21ld2hlcmUgaXMgd2hlcmUgdG8gYXR0YWNoIHRoZSBibGVuZGluZwo+IHByb3BlcnR5LiBTb21l IHBhcmFtZXRlcnMgKGxpa2Ugc3RyYWlnaHQvcHJlLW11bHRpcGxpZWQgb3IgZW5hYmxpbmcgZ2xv YmFsCj4gYWxwaGEpIGNhbiBiZSBzZXQgb24gcGVyLXBsYW5lIGJhc2lzLCBidXQgSSBjYW4gaW1h Z2luZSB0aGF0IHNvbWUgcGFyYW1ldGVycwo+IGFyZSBnbG9iYWwgZm9yIHRoZSBnaXZlbiBjcnRj LgoKSSdtIHF1aXRlIGNvbnZpbmNlZCB0aGVzZSBkYXlzIHRoYXQgd2UgbmVlZCB0byBnbyBmb3Ig YSBwZXItcGxhbmUgcHJvcGVydHkuClRoaXMgb2YgY291cnNlIG1lYW5zIHRoYXQgd2hlbiBkZWFs aW5nIHdpdGggbXVsdGlwbGUgcGxhbmVzIHRoZSB1c2VyIG1heQpzdGlsbCBlbmQgdXAgcmVxdWVz dGluZyBhIHNldCBvZiBibGVuZCBlcXVhdGlvbnMgdGhhdCBjYW4ndCBiZSBzdXBwb3J0ZWQsCmJ1 dCBJIGRvbid0IHNlZSBhbnkgcmVhbCB3YXkgdG8gYXZvaWQgdGhhdC4KCj4gCj4gVGhlIGFub3Ro ZXIgaXRlbSByZWxhdGVkIHRvIGJsZW5kaW5nIGlzIGNvbG9yIGtleWluZy4gSXQgd2FzIG5vdCBt ZW50aW9uZWQKPiBpbiB0aGUgYWJvdmUgcHJvcG9zYWwgYXQgYWxsLCBidXQgc29tZSBoYXJkd2Fy ZSBjYW4gZG8gdGhhdC4gSSd2ZSBub3RpY2VkCj4gdGhhdCBzb21lIGhhcmR3YXJlIGFsc28gaXMg YWJsZSB0byBkbyBjb2xvciBrZXlpbmcgb25seSBmb3IgZXhhY3QgUkdCKEEpCj4gdmFsdWVzIGFu ZCBzb21lIGhhdmUgc2VwYXJhdGUgcmVnaXN0ZXJzIHRvIHNldCBSR0IgdG9sZXJhbmNlLiBUaGlz IGFsc28KPiBuZWVkIHRvIGJlIHN0YW5kYXJkaXplZCBzb21laG93LgoKWWVhaCwgSSB0aGluayB0 eXBpY2FsbHkgeW91IGhhdmUgdmFsdWUrbWFzaywgbWluK21heCttYXNrLCBvciBqdXN0Cm1pbitt YXguIEl0J3MgYWxzbyBoYXJkd2FyZSBkZXBlbmRlbnQgd2hldGhlciB0aG9zZSBhcmUgYXBwbGll ZCBhZ2FpbnN0CnRoZSByYXcgcGl4ZWwgdmFsdWUsIG9yIHBlcmhhcHMgc29tZSByYW5nZSBleHBh bmRlZCB2YWx1ZSwgb3IgZXZlbiBjb2xvcgpzcGFjZSBjb252ZXJ0ZWQgdmFsdWUuIEFub3RoZXIg aGFyZHdhcmUgZGVwZW5kZW50IGZhY3QgaXMgZXhhY3RseSB3aGljaApwbGFuZXMgdGFrZSBwYXJ0 IGluIHRoZSBjb2xvciBrZXlpbmcuIEkgc3VwcG9zZSBzb3VyY2Uga2V5aW5nIHNob3VsZCBiZQpl YXN5IHNpbmNlIGl0IHNob3VsZCBhcHBseSB0byBhIHNpbmdsZSBwbGFuZSwgYnV0IGRlc3RpbmF0 aW9uIGtleWluZyBhdApsZWFzdCBjYW4gb25seSBiZSBlZmZlY3RpdmUgYmV0d2VlbiBhIHNwZWNp ZmljIHN1YnNldCBvZiBwbGFuZXMgKHdoaWNoCmNhbiBjaGFuZ2UgZGVwZW5kaW5nIG9uIHdoaWNo IHBsYW5lcyBhcmUgYWN0dWFsbHkgZW5hYmxlZCkuIEFsc28gdGhlCnBsYW5lIHogb3JkZXIgbWF5 IGJlIGFmZmVjdGVkIGJ5IGRlc3RpbmF0aW9uIGtleWluZy4KClNvIHRoZXJlIGFyZSBxdWl0ZSBh IGZldyBoYXJkd2FyZSBkZXBlbmVudCB2YXJpYWJsZXMgaW4gdGhlIG1peCwgYW5kIHNvCkknbSBu b3Qgc3VyZSB0aGVyZSdzIGFueSByZWFzb25hYmxlIHdheSB0byBhYnN0cmFjdCBpdCBhbGwuCgpN YXliZSBpdCdzIGJlc3QgaWYgd2UganVzdCBkZWZpbmUgYSBzZXQgb2Ygc3RhbmRhcmRpc2ggcHJv cGVydGllcyBhbmQKZWFjaCBkcml2ZXIgY2FuIHBpY2sgd2hpY2hldmVyIG9uZXMgaXQgY2FuIGRv LCBhbmQgd2UganVzdCBpZ25vcmUgYWxsCnRoZSBvdGhlciBoYXJkd2FyZSBkZXBlbmRlbnQgZGV0 YWlscy4gU28gd2UgY291bGQgaGF2ZSBzb21ldGhpbmcgbGlrZToKZHN0LWNvbG9yLWtleS1taW4s IGRzdC1jb2xvci1rZXktbWF4LCBkc3QtY29sb3Ita2V5LXZhbHVlLApkc3QtY29sb3Ita2V5LW1h c2sKYW5kIHRoZSBzYW1lIGZvciBzb3VyY2Uga2V5aW5nLiBBbmQgd2UgY2FuIGRlZmluZSB0aGF0 IHRoZSB2YWx1ZXMgYmUKZW5jb2RlZCBhcyBzb21ldGhpbmcgbGlrZSAxNjoxNjoxNjoxNiBBUkdC L0FZQ2JDciAod2VsbCBJIGd1ZXNzIHdlJ2QKbGVhdmUgb3V0IHRoZSBhbHBoYSBmcm9tIGNvbG9y IGtleWluZyB2YWx1ZXMpLCB0aGUgZHJpdmVyIGJlaW5nIGZyZWUKdG8gaWdub3JlIGFzIG1hbnkg bG93IGJpdHMgYXMgaXQgd2FudHMuCgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsIE9UQwpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFp bGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=