From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rodrigo Vivi Subject: Re: [PATCH v2 0/7] Make GEN macros more similar Date: Tue, 27 Nov 2018 16:19:23 -0800 Message-ID: <20181128001923.GF4172@intel.com> References: <6d6d46ec-5f0f-78eb-295c-7926e4b068d2@linux.intel.com> <20181108005727.GB2885@ldmartin-desk.jf.intel.com> <20181119222054.GB9928@ldmartin-desk.jf.intel.com> <20181121221919.GF13148@intel.com> <92766e53-954c-9bd0-1736-2be115826c2b@linux.intel.com> <20181126184657.GD2683@intel.com> <87lg5ec3we.fsf@intel.com> <20181127093626.GB7436@ldmartin-desk.jf.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 01D786E008 for ; Wed, 28 Nov 2018 00:19:24 +0000 (UTC) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin Cc: intel-gfx@lists.freedesktop.org, Lucas De Marchi List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBOb3YgMjcsIDIwMTggYXQgMTE6MzU6NTRBTSArMDAwMCwgVHZydGtvIFVyc3VsaW4g d3JvdGU6Cj4gCj4gT24gMjcvMTEvMjAxOCAwOTozNiwgTHVjYXMgRGUgTWFyY2hpIHdyb3RlOgo+ ID4gT24gVHVlLCBOb3YgMjcsIDIwMTggYXQgMTA6Mzc6MjFBTSArMDIwMCwgSmFuaSBOaWt1bGEg d3JvdGU6Cj4gPiA+IE9uIE1vbiwgMjYgTm92IDIwMTgsIFJvZHJpZ28gVml2aSA8cm9kcmlnby52 aXZpQGludGVsLmNvbT4gd3JvdGU6Cj4gPiA+ID4gT24gVGh1LCBOb3YgMjIsIDIwMTggYXQgMDg6 NTQ6MzBBTSArMDAwMCwgVHZydGtvIFVyc3VsaW4gd3JvdGU6Cj4gPiA+ID4gPiAKPiA+ID4gPiA+ IAo+ID4gPiA+ID4gT24gMjEvMTEvMjAxOCAyMjoxOSwgUm9kcmlnbyBWaXZpIHdyb3RlOgo+ID4g PiA+ID4gPiBPbiBNb24sIE5vdiAxOSwgMjAxOCBhdCAwMjoyMDo1NVBNIC0wODAwLCBMdWNhcyBE ZSBNYXJjaGkgd3JvdGU6Cj4gPiA+ID4gPiA+ID4gT24gVGh1LCBOb3YgMDgsIDIwMTggYXQgMTE6 MjM6NDZBTSArMDAwMCwgVHZydGtvIFVyc3VsaW4gd3JvdGU6Cj4gPiA+ID4gPiA+ID4gPiAKPiA+ ID4gPiA+ID4gPiA+IE9uIDA4LzExLzIwMTggMDA6NTcsIEx1Y2FzIERlIE1hcmNoaSB3cm90ZToK PiA+ID4gPiA+ID4gPiA+ID4gT24gV2VkLCBOb3YgMDcsIDIwMTggYXQgMTA6MDU6MTlBTSArMDAw MCwgVHZydGtvIFVyc3VsaW4gd3JvdGU6Cj4gPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ ID4gPiA+ID4gT24gMDYvMTEvMjAxOCAyMTo1MSwgTHVjYXMgRGUgTWFyY2hpIHdyb3RlOgo+ID4g PiA+ID4gPiA+ID4gPiA+ID4gVGhpcyBpcyB0aGUgc2Vjb25kIHZlcnNpb24gb2YgdGhlIHNlcmll cyB0cnlpbmcgdG8gbWFrZSBHRU4gY2hlY2tzCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBtb3JlIHNp bWlsYXIuIFRoZXNlIG9yIHJvdWdobHkgdGhlIGNoYW5nZXMgZnJvbSB2MToKPiA+ID4gPiA+ID4g PiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gLSBXZSBkb24ndCBoYXZlIGEgc2luZ2xl IG1hY3JvIHJlY2VpdmluZyAyIG9yIDMgcGFyYW1ldGVycy4gTm93IHRoZXJlCj4gPiA+ID4gPiA+ ID4gPiA+ID4gPiAgICAgICBpcyBHVF9HRU5fUkFOR0UoKSwgYW5kIEdUX0dFTigpLiBUaGUgZmly cyBpcyB0aGUgY29udmVyc2lvbiBmcm9tCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgICBJU19H RU4oKSB3aGlsZSB0aGUgc2Vjb25kIGlzIHRoZSBjb252ZXJzaW9uIGZyb20gSVNfR0VOPE4+KCkK PiA+ID4gPiA+ID4gPiA+ID4gPiA+IC0gQnJpbmcgR0VOX0ZPUkVWRVIgYmFjayB0byBiZSB1c2Vk IHdpdGggYWJvdmUgbWFjcm9zCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAtIFBhdGNoIGNvbnZlcnRp bmcgPCwgPD0sID09LCA+LCA+PSAgY2hlY2tzIHVzaW5nIElOVEVMX0dFTigpIHRvCj4gPiA+ID4g PiA+ID4gPiA+ID4gPiAgICAgICB1c2UgdGhlIG1hY3JvcyBhYm92ZSB3YXMgYWRkZWQKPiA+ID4g PiA+ID4gPiA+ID4gPiA+IC0gSU5URUxfR0VOKCkgaXMgcmVtb3ZlZCB0byBhdm9pZCBpdCBiZWlu ZyB1c2VkIHdoZW4gd2Ugc2hvdWxkIHByZWZlcgo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAg dGhlIG5ldyBtYWNyb3MKPiA+ID4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gVGhlIGlkZWEgb2YgdGhlIG5hbWVzIGlzIHRvIHBhdmUgdGhlIHdheSBmb3IgY2hlY2tzIG9m IHRoZSBkaXNwbGF5IHZlcnNpb24sCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiB3aGljaCB3b3VsZCBi ZSBuYW1lZCBESVNQTEFZX0dFTigpLCBESVNQTEFZX0dFTl9SQU5HRSgpLgo+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBJbiB0aGUgY29tbWl0IG1lc3NhZ2VzIHdl IGhhdmUgdGhlIHNjcmlwdHMgdG8gcmVnZW5lcmF0ZSB0aGUgcGF0Y2ggdG8gbWFrZQo+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gaXQgZWFzaWVyIHRvIGFwcGx5IGFmdGVyIHRoZSBkaXNjdXNzaW9ucyBh bmQgYWxzbyB0byBiZSBhYmxlIHRvIGNvbnZlcnQKPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGluZmxp Z2h0IHBhdGNoZXMuCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ IFNvcnJ5IGluIGFkdmFuY2UgZm9yIHRoZSBub2lzZSB0aGlzIGNhdXNlcyBpbiB0aGUgY29kZWJh c2UsIGJ1dCBob3BlZnVsbHkKPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGl0IGlzIGZvciB0aGUgZ3Jl YXRlciBnb29kLgo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAK PiA+ID4gPiA+ID4gPiA+ID4gPiA+IEx1Y2FzIERlIE1hcmNoaSAoNik6Cj4gPiA+ID4gPiA+ID4g PiA+ID4gPiAgICAgICBSZXZlcnQgImRybS9pOTE1OiBLaWxsIEdFTl9GT1JFVkVSIgo+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gICAgICAgZHJtL2k5MTU6IHJlcGxhY2UgSVNfR0VOPE4+IHdpdGggR1Rf R0VOKC4uLiwgTikKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgIGRybS9pOTE1OiByZW5hbWUg SVNfR0VOOV8qIHRvIEdUX0dFTjlfKgo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgZHJtL2k5 MTU6IHJlcGxhY2UgZ2VuIGNoZWNrcyB1c2luZyBvcGVyYXRvcnMgYnkgR1RfR0VOL0dUX0dFTl9S QU5HRQo+ID4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiA+IEkgaGF2ZSByZXNl cnZhdGlvbnMgYWJvdXQgdGhpcyBwYXRjaCwgd2hlcmUgSSB0aGluayBmb3JjaW5nIG9ubHkgb25l IGZsYXZvdXIKPiA+ID4gPiA+ID4gPiA+ID4gPiBtYXliZSBpcyBub3QgdGhlIGJlc3QgdGhpbmcu IEJlY2F1c2UgZm9yIHBsYWluIGlmLWxhZGRlciBjYXNlcyBpdCBmZWVscyBtb3JlCj4gPiA+ID4g PiA+ID4gPiA+ID4gcmVhZGFibGUgdG8gc3RpY2sgd2l0aCB0aGUgY3VycmVudCBzY2hlbWUgb2Yg YXJpdGhtZXRpYyBjb21wYXJpc29ucy4gQW5kIGl0Cj4gPiA+ID4gPiA+ID4gPiA+ID4gaXMgbW9y ZSBlZmZpY2llbnQgaW4gY29kZSBhcyB3ZWxsLgo+ID4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ ID4gPiA+ID4gPiA+IFJhbmdlIGNoZWNrcyBhcmUgb24gdGhlIG90aGVyIGhhbmQgdXNlZnVsIGVp dGhlciB3aGVuIGNvbWJpbmVkIGluIHRoZSBzYW1lCj4gPiA+ID4gPiA+ID4gPiA+ID4gY29uZGl0 aW9uYWwgYXMgc29tZSBvdGhlciBiaXRtYXNrIGJhc2VkIHRlc3QsIG9yIHdoZW4gYm90aCBlbmRz IG9mIHRoZQo+ID4gPiA+ID4gPiA+ID4gPiA+IGNvbXBhcmlzb24gZWRnZSBhcmUgYm91bmQuCj4g PiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiBTbyBhcmUgeW91IGFnYWluc3QgY2hh bmdpbmcgdGhlID09IHRvIHVzZSB0aGUgbWFjcm9zLCBjaGFuZ2luZyB0aGUgPj0sID4sIDwsIDw9 LAo+ID4gPiA+ID4gPiA+ID4gPiBvciBhbGwgb2YgdGhlbT8KPiA+ID4gPiA+ID4gPiA+IAo+ID4g PiA+ID4gPiA+ID4gRGVmaW5pdGVseSBub3QgYWxsIG9mIHRoZW0uIEp1c3QgcGxhaW4gaWYgbGFk ZGVycyBJIHRoaW5rIGFyZSBkZWZpbml0ZWx5Cj4gPiA+ID4gPiA+ID4gPiBtb3JlIHJlYWRhYmxl IGluIHNvdXJjZSBhbmQgcmVzdWx0IGluIGJldHRlciBjb2RlIGluIHRoZSBub3JtYWwgZmFzaGlv biBvZjoKPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gICAgICBpZiAoZ2VuID49IDEx KQo+ID4gPiA+ID4gPiA+ID4gICAgICBlbHNlIGlmIChnZW4gPj0gOSkKPiA+ID4gPiA+ID4gPiA+ ICAgICAgZWxzZSBpZiAoZ2VuID49IDcpCj4gPiA+ID4gPiA+ID4gPiAgICAgIC4uLiBldGMgLi4u Cj4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+IFdoZXJlIEkgdGhpbmsgaXQgbWFrZXMg c2Vuc2UgaXMgd2hlbiBlaXRoZXIgYm90aCBlZGdlcyBhcmUgYm91bmQsIGxpa2U6Cj4gPiA+ID4g PiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ICAgICBpZiAoZ2VuIDwgMTEgfHwgZ2VuID49IDgpCj4g PiA+ID4gPiA+ID4gPiAgICAgaWYgKGdlbiA+PSAxMCB8fCBnZW4gPT0gOCkKPiA+ID4gPiA+ID4g PiAKPiA+ID4gPiA+ID4gPiBvaywgSSB3aWxsIHRha2UgYSBsb29rIGJlZm9yZSByZXNwaW5uaW5n IHRoaXMuCj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+IEJ1 dCBub3Qgc3VyZSBob3cgbWFueSBvZiB0aG9zZSB0aGVyZSBhcmUuCj4gPiA+ID4gPiA+ID4gPiAK PiA+ID4gPiA+ID4gPiA+IFdoYXQgZGVmaW5pdGVseSBleGlzdHMgaW4gbGFyZ2UtaXNoIG51bWJl cnMgYXJlOgo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gc3BlY2lhbGx5IG9uIGRpc3BsYXkgc2lk ZS4uLgo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gICAgICBp ZiAoZ2VuID49IDExIHx8ICBJU19QTEFURk9STSkKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IE15 IGdvYWwgaXMgZXhhY3RseSB0byBvcmdhbml6ZSB0aGUgZ2VuIG51bWJlcnMgaW4gYSB3YXkgdGhh dAo+ID4gPiA+ID4gPiB3ZSBtaW5pbWl6ZSB0aGlzIG1peCBhcyBtdWNoIGFzIHBvc3NpYmxlLgo+ ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gQXQgc29tZSBwb2lu dCBJIGhhZCBhIHByb3RvdHlwZSB3aGljaCBwdXRzIHRoZSBnZW4gYW5kIHBsYXRmb3JtIG1hc2tz IGludG8gYQo+ID4gPiA+ID4gPiA+ID4gYmFnIG9mIGJpdHMgYW5kIHRoZW4sIGRlcGVuZGluZyBv biBiaXRzIGxvY2FsaXR5LCB0aGlzIHRvbyBjYW4gYmUgY29tcHJlc3NlZAo+ID4gPiA+ID4gPiA+ ID4gdG8gYSBzaW5nbGUgYml0bWFzayB0ZXN0LiBIb3dldmVyIEkgZmVsdCB0aGF0IHdhcyBnb2lu ZyB0b28gZmFyLCBhbmQgdGhlCj4gPiA+ID4gPiA+ID4gPiBpc3N1ZSBpcyBhY2hpZXZpbmcgaW50 ZXJlc3RpbmcgYml0cyBsb2NhbGl0eSBmb3IgaXQgdG9vIHdvcmsuIEJ1dCBJIGRpZ3Jlc3MuCj4g PiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gTG9va2luZyBhdCB0aGUgY2hhbmdlcyB0 byA9PSwgdGhleSBzZWVtIHZlcnkgcmVhc29uYWJsZSBhbmQgaW4gYSBmZXcgY2FzZXMgaXQgYWxs b3dlZAo+ID4gPiA+ID4gPiA+ID4gPiB0aGUgbmV4dCBwYXRjaCB0byBtZXJnZSB0aGVtIGluIGEg R1RfR0VOX1JBTkdFKCkgLS0geWVzIHRoZSBwYXRjaCBvcmRlcmluZyB3YXMgb24KPiA+ID4gPiA+ ID4gPiA+ID4gcHVycG9zZSB0byBhbGxvdyB0aGF0Lgo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4g PiA+ID4gPiBZZXAgdGhvc2UgYXJlIHRoZSBnb29kIG9uZXMuCj4gPiA+ID4gPiA+ID4gPiAKPiA+ ID4gPiA+ID4gPiA+ID4gVGhlIG90aGVycyBhcmUgaW5kZWVkIGRlYmF0YWJsZS4gSG93ZXZlciBJ TU8gZm9yIHRoZSBjYXNlcyBpdCBtYWtlcyBzZW5zZSwKPiA+ID4gPiA+ID4gPiA+ID4gdGhlcmUn cyBhbHdheXMgdGhlIGZhbGxiYWNrCj4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4g PiBpZiAoZGV2X3ByaXYtPmluZm8uZ2VuID09IDEwKQo+ID4gPiA+ID4gPiA+ID4gPiAgICAgICAg Li4uCj4gPiA+ID4gPiA+ID4gPiA+IGVsc2UgaWYgKGRldl9wcml2LT5pbmZvLmdlbiA9PSAxMSkK PiA+ID4gPiA+ID4gPiA+ID4gICAgICAgIC4uLgo+ID4gPiA+ID4gPiA+ID4gPiBlbHNlIGlmIChk ZXZfcHJpdi0+aW5mby5nZW4gPCA1KQo+ID4gPiA+ID4gPiA+ID4gPiAgICAgICAgLi4uCj4gPiA+ ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiBXZSBjYW4gZ28gb24gYSBjYXNlIGJ5IGNh c2UgbWFubmVyIGluIHRoaXMgcGF0Y2ggcmF0aGVyIHRoYW4gdGhlIG1hc3MgY29udmVyc2lvbgo+ ID4gPiA+ID4gPiA+ID4gPiBmb3IgdGhlc2UuCj4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4g PiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gICAgICAgZHJtL2k5MTU6IG1lcmdlIGdl biBjaGVja3MgdG8gdXNlIHJhbmdlCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAgICAgICBkcm0vaTkx NTogcmVtb3ZlIElOVEVMX0dFTiBtYWNybwo+ID4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4g PiA+ID4gPiA+IEkgaGF2ZSByZXNlcnZhdGlvbnMgYWJvdXQgdGhpcyBhcyBhcyB3ZWxsLCBlc3Bl Y2lhbGx5IGNvbnNpZGVyaW5nIHRoZQo+ID4gPiA+ID4gPiA+ID4gPiA+IHByZXZpb3VzIHBhcmFn cmFwaC4gQnV0IGV2ZW4gb24gaXQncyBvd24gSSBhbSBub3Qgc3VyZSB3ZSB3YW50IHRvIGdvIGJh Y2sgdG8KPiA+ID4gPiA+ID4gPiA+ID4gPiBtb3JlIHZlcmJvc2UuCj4gPiA+ID4gPiA+ID4gPiA+ IAo+ID4gPiA+ID4gPiA+ID4gPiBzZWUgYWJvdmUuIElNTyBpdCdzIG5vdCBhY3R1YWxseSBzbyB2 ZXJib3NlIGFzIG9uZSB3b3VsZCB0aGluay4KPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ ID4gPiA+ICAgICAgICBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA9PSAxMSkKPiA+ID4gPiA+ID4g PiA+ID4gICAgICAgIHZzCj4gPiA+ID4gPiA+ID4gPiA+ICAgICAgICBpZiAoZGV2X3ByaXYtPmlu Zm8uZ2VuID09IDExKQo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiBJIHRoaW5rIGl0 IHNob3VsZCBiZToKPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gICAgICAgICAgaWYg KElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPT0gMTEpCj4gPiA+ID4gPiA+ID4gPiAKPiA+ID4g PiA+ID4gPiA+IFdoaWNoIGlzIGEgdGlueSBiaXQgbG9uZ2VyLi4KPiA+ID4gPiA+ID4gPiAKPiA+ ID4gPiA+ID4gPiBJZiBpdCdzIGxvbmdlciwgd2h5IGJvdGhlcj8gV2UgY291bGQganVzdCBhcyB3 ZWxsIGRvIGZvciB0aGUgaWYgbGFkZGVyczoKPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiBn ZW4gPSBkZXZfcHJpdi0+aW5mby5nZW47Cj4gPiA+ID4gPiA+ID4gb3IKPiA+ID4gPiA+ID4gPiBn ZW4gPSBJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuCj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ ID4gSW4geW91ciBvdGhlciBzZXJpZXMgeW91IHdvdWxkIGJlIG1vdmluZyBnZW4gdG8gYSBydW50 aW1lIGluZm8sIHNvIHRoaXMKPiA+ID4gPiA+ID4gPiB3b3VsZCBjYXVzZSB0aGUgc2FtZSBhbW91 bnQgb2YgY2h1cm4gKGFsdGhvdWdoIEkgZGlzYWdyZWUgd2l0aCBtb3ZpbmcgZ2VuIHRvIGEgcnVu dGltZQo+ID4gPiA+ID4gPiA+IGluZm8ganVzdCBiZWNhdXNlIG9mIHRoZSBtb2NrIHN0cnVjdCku Cj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ ID4gPiA+ID4gVGhlICJ2ZXJib3NlIiB2ZXJzaW9uIGlzIGFjdHVhbGx5IG9uZSBjaGFyYWN0ZXIg bGVzcyBhbmQgb25lIGxvb2t1cCBsZXNzCj4gPiA+ID4gPiA+ID4gPiA+IHRvIHdoYXQgdGhlIG1h Y3JvIGlzIGRvaW5nIHVuZGVybmVhdGguIE9mIGNvdXJzZSB0aGF0IG1lYW5zIGEgbG90IG9mIGNo dXJuCj4gPiA+ID4gPiA+ID4gPiA+IHRvIHRoZSBjb2RlYmFzZSB3aGVuL2lmIHdlIGNoYW5nZSB3 aGVyZSB0aGUgZ2VuIG51bWJlciBpcyBsb2NhdGVkLCBidXQgdGhhdAo+ID4gPiA+ID4gPiA+ID4g PiBudW1iZXIgaXMgYXQgdGhlIHNhbWUgcGxhY2Ugc2luY2UgaXRzIGludHJvZHVjdGlvbiBpbiAy MDEwCj4gPiA+ID4gPiA+ID4gPiA+IChjb21taXQgYzk2YzNhOGNiN2ZhZGNiMzNkOWE1ZWJlMzVm Y2VlOGI3ZDBhNzk0NikKPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gSSBhbSBwcmV0 dHkgc3VyZSB3ZSB3ZW50IHRocm91Z2ggcGF0Y2hlcyB0byBhKSBtb3ZlIHRvd2FyZHMgSU5URUxf SU5GTyBhbmQKPiA+ID4gPiA+ID4gPiA+IGIpIHJlcGxhY2UgSU5URUxfSU5GTyhkZXZfcHJpdikt PmdlbiB3aXRoIElOVEVMX0dFTi4gU28gSSBkb24ndCBzZWUgYW4KPiA+ID4gPiA+ID4gPiA+IGFk dmFudGFnZSBvZiByZXZlcnRpbmcgdGhhdCwganVzdCBzbyB0aGF0IHdlIGNhbiBsb3NlIHRoZSBJ U18gcHJlZml4IGJlbG93Lgo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiA+ID4gUGVy aGFwcyBpbiB0aGUgbmV3IHNjaGVtZSBvZiB0aGluZ3MgaXQgc2hvdWxkIGJlIHJlbmFtZWQgdG8g SU5URUxfR1RfR0VOPyBJCj4gPiA+ID4gPiA+ID4gPiA+ID4ga25vdyBpdCBkb2Vzbid0IGZpdCBu aWNlbHkgd2l0aCB0aGUgbmFtaW5nIHNjaGVtZSBvZiBHVC9ESVNQTEFZX0dFTi4uIHNvCj4gPiA+ ID4gPiA+ID4gPiA+ID4gbWF5YmU6Cj4gPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4g PiA+ID4gR1RfR0VOIC0+IElTX0dUX0dFTgo+ID4gPiA+ID4gPiA+ID4gPiA+IEdUX0dFTl9SQU5H RSAtPiBJU19HVF9HRU5fUkFOR0UKPiA+ID4gPiA+ID4gPiA+ID4gPiBJTlRFTF9HRU4gLT4gR1Rf R0VOIChidXQgY2h1cm4hPykKPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiA+IEkg c3RpbGwgdGhpbmsgSU5URUxfR0VOKCkgaXMgbm90IGJyaW5naW5nIG11Y2ggY2xhcml0eSBhbmQg Zm9yY2luZwo+ID4gPiA+ID4gPiA+ID4gPiB0aGUgb3RoZXIgbWFjcm9zIHRvIGhhdmUgdGhlIElT XyBwcmVmaXguCj4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+IElzIHRoZSBJU18gcHJl Zml4IHRoYXQgYmFkPwo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gSSBwZXJzb25hbGx5IGRvbid0 IGxpa2UgaXQuLi4gYnV0IG1heWJlIGl0IGlzIGp1c3QgbXkgYmFkIGVuZ2xpc2g/IQo+ID4gPiA+ ID4gPiAKPiA+ID4gPiA+ID4gMS4gaWYgZ2VuIDkKPiA+ID4gPiA+ID4gMi4gaWYgaXMgZ2VuIDkK PiA+ID4gPiA+ID4gMy4gaWYgdGhpcyBpcyBhIGdlbiA5IHBsYXRmb3JtCj4gPiA+ID4gPiA+IAo+ ID4gPiA+ID4gPiBJIGxpa2UgbW9yZSB0aGUgb3B0aW9uIDEuLi4KPiA+ID4gPiA+ID4gCj4gPiA+ ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+IEkgYWdyZWUgbXkgaWRlYSBkb2VzIG5vdCBkZWNy ZWFzZSB0aGUgYW1vdW50IG9mIGNodXJuLCBzaW5jZSBpdCBzYWlkIHRvCj4gPiA+ID4gPiA+ID4g PiByZXBsYWNlIElOVEVMX0dFTiB3aXRoIElOVEVMX0dUX0dFTi4gQnV0IGluIHRoZSBsaWdodCBv ZiB0aGUgR1QvRElTUExBWQo+ID4gPiA+ID4gPiA+ID4gc3BsaXQsIGFuZCBpZiB3ZSBhZ3JlZSB0 byBsZWF2ZSBhIGxvdCBvZiB0aGUgYXJpdGhtZXRpYyBjb21wYXJpc29uIGluCj4gPiA+ID4gPiA+ ID4gPiAoZGlhbGluZyBkb3duIG9mICJkcm0vaTkxNTogcmVwbGFjZSBnZW4gY2hlY2tzIHVzaW5n IG9wZXJhdG9ycyBieQo+ID4gPiA+ID4gPiA+ID4gR1RfR0VOL0dUX0dFTl9SQU5HRSIpLCB0aGVu IGl0IGZlZWxzIGdvaW5nIGJhY2sgdG8gSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbgo+ID4gPiA+ ID4gPiA+ID4gdGhyb3VnaG91dCB0aGUgY29kZSBpcyB1bmRvaW5nIHNvbWUgd29yaywganVzdCBz byB5b3UgY2FuIHJlbW92ZSB0aGUKPiA+ID4gPiA+ID4gPiA+IElOVEVMX0dFTiBtYWNybyBpbnN0 ZWFkIG9mIHJlbmFtaW5nIGl0IElOVEVMX0dUX0dFTi4KPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ ID4gPiA+ID4gRG9uJ3Qga25vdywgaXQncyBteSBvcGluaW9uIGF0IGxlYXN0IGFuZCBtb3JlIHBl b3BsZSBhcmUgd2VsY29tZSB0byBjaGltZSBpbgo+ID4gPiA+ID4gPiA+ID4gd2l0aCB0aGVpcnMu Cj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gQW55IG90aGVycyB0byBjaGltZSBpbiBvbiB0 aGlzPyBKYW5pLCBWaWxsZSwgUm9kcmlnbz8KPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IEkgZG9u J3QgbGlrZSBtaXhlZCBzdHlsZXMgbXVjaC4gSWYgd2UgZG9uJ3Qga2lsbCB0aGUgbWFjcm8gd2Ug d2lsbCBjb250aW51ZQo+ID4gPiA+ID4gPiBoYXZpbmcgbWl4ZWQgY2FzZXMuCj4gPiA+ID4gPiA+ IAo+ID4gPiA+ID4gPiBTbyBJJ20gaW4gZmF2b3Igb2YgdGhlIGFwcHJvYWNoIG9mIHRoaXMgc2Vy aWVzIGhlcmUuCj4gPiA+ID4gPiAKPiA+ID4gPiA+IEluY2x1ZGluZyB0aGUgcmVtb3ZhbCBvZiBJ TlRFTF9HRU4gbWFjcm8/IE9yIHdoYXQgZG8geW91IHByb3Bvc2UgZm9yIHRoYXQKPiA+ID4gPiA+ IG9uZT8gQ2FuJ3QgYmUgY2FsbGVkIEdUX0dFTiBub3cgc2luY2UgdGhhdCBoYXMgYmVlbiB1c2Vk IHVwLi4uCj4gPiA+ID4gCj4gPiA+ID4gWWVzLCBpbmNsdWRpbmcgdGhlIHJlbW92YWwgb2YgSU5U RUxfR0VOIG1hY3JvLgo+ID4gPiA+IAo+ID4gPiA+IEkgZG9uJ3QgbGlrZSB0aGUgbWl4ZWQgc3R5 bGVzIGxpa2UgdXNpbmcgSU5URUxfR0VOKGQpID4gNyBpbiBvbmUgcGxhY2UKPiA+ID4gPiBhbmQg SU5URUxfR0VOX1JBTkdFKGQsIDcsIEZPUkVWRVIpIGluIGFub3RoZXIgcGxhY2UuCj4gPiA+ID4g Cj4gPiA+ID4gVGhlIG1lYW5pbmcgaXMgdGhlIHNhbWUgc28gd2Ugc2hvdWxkIHN0aWNrIHdpdGgg b25lIG9mIHRoZSB1c2FnZXMuCj4gPiA+ID4gCj4gPiA+ID4gSSBzZWUgdGhhdCB0aGVyZSB3ZXJl IG1hbnkgY2FzZXMgd2hlcmUgaGF2aW5nIHRoZSBpbmZvLT5nZW4gbnVtYmVyCj4gPiA+ID4gZGly ZWN0bHkgaXMgdXNlZnVsLiBCdXQgSSdkIHByZWZlciB0byB1c2UgdGhhdCBvbiBhIGRpcmVjdCBm YXNoaW9uCj4gPiA+ID4gcmF0aGVyIHRoYW4ga2VlcGluZyB0aGlzIG1hY3JvLgo+ID4gPiA+IAo+ ID4gPiA+IEJlY2F1c2UgaWYgd2Uga2VlcCB0aGUgbWFjcm8gZGV2ZWxvcGVycyB3aWxsIGV2ZW50 dWFsbHkgZW5kIHVwCj4gPiA+ID4gYWRkaW5nIHRoZSBtaXhlZCBzdHlsZSBiYWNrLgo+ID4gPiA+ IAo+ID4gPiA+IFVzaW5nIGRpcmVjdCBpbmZvLT5nZW4gYXMgTHVjYXMgYWxyZWFkeSBzaG93ZWQg aGFzIGFsbW9zdCBzYW1lIG51bWJlcgo+ID4gPiA+IG9mIGNoYXJzIHRoYW4gdGhlIG1hY3JvLCBi dXQgcmVxdWlyZXMgbW9yZSBhdHRlbnRpb24gd2hhdCBpcyBhIGdvb2QKPiA+ID4gPiB0aGluZy4K PiA+ID4gCj4gPiA+IEkgcHJlZmVyIHVzaW5nIElOVEVMX0dFTigpIGJlY2F1c2UgaXQgaGlkZXMg d2hlcmUgdGhlIGdlbiBjb21lcyBmcm9tLAo+ID4gPiBhbmQgd2UgY2FuIGNoYW5nZSBpdCBvbiBh IHdoaW0uIElmIHdlIGtlZXAgdXNpbmcgZGV2X3ByaXYtPmluZm8uZ2VuCj4gPiA+IHdlJ2xsIG5l ZWQgdG8gY2hhbmdlIHRoYXQgYWxyZWFkeSB3aGVuIGluZm8gYmVjb21lcyBhIHBvaW50ZXIsCj4g PiA+IGkuZS4gZGV2X3ByaXYtPmluZm8tPmdlbi4gVGhyb3VnaG91dCB0aGUgY29kZWJhc2UuIFdp dGggSU5URUxfR0VOKCkgaXQncwo+ID4gPiBqdXN0IGEgY291cGxlIG9mIHBsYWNlcy4KPiA+IAo+ ID4gcGF0Y2ggNyBhY3R1YWxseSBkb2VzOgo+ID4gCj4gPiAtIElOVEVMX0dFTihFKQo+ID4gKyBJ TlRFTF9JTkZPKEUpLT5nZW4KPiA+IAo+ID4gU28gc3RpbGwgdXNpbmcgdGhlIG1hY3JvIGFuZCBp ZiBpbmZvIGJlY29tZXMgYSBwb2ludGVyIGl0IHdvdWxkIHN0aWxsIGJlCj4gPiBjb3JyZWN0LiBN eSBtYWluIG1vdGl2YXRpb24gZm9yIHJlbW92aW5nIGl0IGlzIG5vdCBJTlRFTF9HRU4oKSBpdHNl bGYsCj4gPiBidXQgYmVjYXVzZSB0aGF0IHdvdWxkIGZvcmNlIHVzIHRvIGtlZXAgdGhlIElTXyBw cmVmaXggaW4gdGhlIG90aGVyCj4gPiBtYWNyb3MuIElTX0dUX0dFTl9SQU5HRSBpcyB0b28gYmln IGFuZCB1Z2x5IElNTy4gIElmIG15Cj4gPiBwcmV2aW91cyBwcm9wb3NhbCBvZiB1c2luZyBhIHNp bmdsZSBtYWNybyBmb3IgYm90aCByYW5nZSBhbmQgc2luZ2xlIGdlbgo+ID4gd291bGQgYmUgYWNj ZXB0ZWQsIEkgdGhpbmsga2VlcGluZyB0aGUgSVNfIHByZWZpeCB3b3VsZCBub3QgYmUgc28gdWds eS4KPiA+IAo+ID4gQW55d2F5LCBjb25zaWRlcmluZyB0aGUgYWRkaXRpb24gb2YgZGlzcGxheSBt YWNyb3MsIGRvIHlvdSB0aGluayBpdCBzaG91bGQKPiA+IGJlIGxpa2UgYmVsb3c/Cj4gPiAKPiA+ IElTX0dFTiAtPiBJU19HVF9HRU4oKQo+ID4gICAgICAgICBgPiBJU19HVF9HRU5fUkFOR0UoKSAg KGRpYWxpbmcgZG93biBvbiB0aGUgY2hhbmdlcyBhcyBzdWdnZXN0ZWQgYnkKPiA+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBUdnJ0a28gdG8gcHJlc2VydmUgcGxhaW4gaWYgbGFkZGVy cyBhbmQKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW1wbGUgdW5ib3VuZCBy YW5nZXMpCj4gCj4gTW9yZSByYW5nZSBtYWNybyB1c2FnZSB3aWxsIGhlbHAgZnV0dXJlIHBlciBT S1UgYnVpbGRzIHdvcmsuIFNvIGFzIHNhaWQgaW4KPiBteSBwcmV2aW91cyByZXBseSwgaWYgcGVv cGxlIGNhbiBzdG9tYWNoIHRoaXMsIEkgYW0gb2theSB3aXRoIGhhdmluZyB0aGlzCj4gY29udmVy c2lvbiBhcyB3ZWxsLiAoRnJvbSBhcml0aG1ldGljIGdlbiBjb21wYXJpc29uIHRvIC4uLkdFTl9S QU5HRQo+IGV2ZXJ5d2hlcmUuKQo+IAo+IFRoYXQgd291bGQgYWxzbyBtYWtlcyB0aGUgcXVlc3Rp b24gb2YgSU5URUxfR0VOIG1vc3RseSBpcnJlbGV2YW50LiBTbyBJCj4gdGhpbmsgYWJvdmUgaXMg dGhlIG1haW4gcG9pbnQgdG8gY2xhcmlmeSBmaXJzdC4KPiAKPiBUaGVuIG9uIHRoZSBxdWVzdGlv biBvZiBJU18gcHJlZml4IG9yIG5vdCwgSSBkb24ndCBmZWVsIHZlcnkgc3Ryb25nbHkgYWJvdXQK PiBpdC4gSVNfIGhhcyBhIG5pY2UgcGFyYWxsZWwgd2l0aCBIQVNfIGFuZCBJU19wbGF0Zm9ybSwg YnV0IEkgYWdyZWUgaXQKPiBkb2Vzbid0IGxvb2sgdGhlIHByZXR0aWVzdCAoSVNfR1RfR0VOKS4g U28gZG9uJ3Qga25vdywgd2hhdGV2ZXIgdGhlIHZvdGUKPiBlbmRzIHVwIGJlaW5nLgoKb2theSwg dGhlIEhBU18gcGFyYWxsZWwgaXMgYSBnb29kIHBvaW50Li4uCgpidXQgc3RpbGwgaW4gdGhhdCBj YXNlIG15IGJyYWluIHByZWZlcnMKCmlmIEhBU19GRUFUVVJFCnRoYW4KaWYgRkVBVFVSRQoKYmVj YXVzZSAiRkVBVFVSRSB3aGF0PyIgTGlrZSBpZiBmZWF0dXJlIHdhcyBtb3JlICJ0cmFuc2l0aXZl IiByZXF1aXJpbmcgc29tZXRoaW5nIGVsc2UuCgp3aGlsZSBmb3IgImlzIiBteSBicmFpbiBwcmVm ZXJzCgppZiBQTEFURk9STQp0aGFuCmlmIElTX1BMQVRGT1JNCgpiZWNhdXNlIGhlcmUgaXQgc2Vl bXMgbW9yZSAiaW50cmFuc2l0aXZlIi4uLgpsaWtlLi4uIHNlbGYgY29udGFpbmVkIG1lYW5pbmcg d2hlcmUgImlzIiBjYW4gYmUgaW1wbGljaXQuCgo+IAo+IFJlZ2FyZHMsCj4gCj4gVHZydGtvCj4g Cj4gPiBJU19HRU48Tj4gLT4gSVNfR1RfR0VOKC4uLiwgTikKPiA+IElOVEVMX0dFTiAtPiBHVF9H RU4oKQo+ID4gCj4gPiBJU19ESVNQTEFZX0dFTigpCj4gPiBJU19ESVNQTEFZX0dFTl9SQU5HRSgp Cj4gPiBESVNQTEFZX0dFTigpCj4gPiAKPiA+IAo+ID4gT3RoZXIgb3B0aW9uOiBqdXN0IGRvIHRo ZSBJU19HRU48Tj4gSVNfR0VOKC4uLiwgTiksCj4gPiB0aGF0IHdhcyB0aGUgb3JpZ2luYWwgbW90 aXZhdGlvbiBmb3IgdGhpcyBzZXJpZXMsIGFuZCByZW1lbWJlciB0aGF0Cj4gPiBnZW4gaGVyZSBy ZWZlcnMgdG8gR1QuCj4gPiAKPiA+IEx1Y2FzIERlIE1hcmNoaQo+ID4gCj4gPiA+IAo+ID4gPiBJ ZiBtaXhlZCB1c2UgaXMgYSBwcm9ibGVtLCB0aGVuIHJlbmFtZSBnZW4gdG8gX19nZW4uIEkgZXZl biBzZW50IGEgcGF0Y2gKPiA+ID4gZm9yIGl0LCBidXQgZGlkbid0IGdldCBpdCBtZXJnZWQuCj4g PiA+IAo+ID4gPiBCUiwKPiA+ID4gSmFuaS4KPiA+ID4gCj4gPiA+IAo+ID4gPiAtLSAKPiA+ID4g SmFuaSBOaWt1bGEsIEludGVsIE9wZW4gU291cmNlIEdyYXBoaWNzIENlbnRlcgo+ID4gCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=