From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [RFC] drm/amdgpu: Add macros and documentation for format modifiers. Date: Tue, 4 Sep 2018 19:48:09 +0200 Message-ID: References: <20180904010033.67611-1-bas@basnieuwenhuizen.nl> <72744df1-001b-bcd4-dcba-b6966a62c4ce@gmail.com> <20180904122604.GO21634@phenom.ffwll.local> <20180904130353.GQ21634@phenom.ffwll.local> Reply-To: christian.koenig-5C7GfCeVMHo@public.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: 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: Daniel Vetter , Bas Nieuwenhuizen Cc: =?UTF-8?Q?Nicolai_H=c3=a4hnle?= , Chad Versace , ML dri-devel , =?UTF-8?Q?Christian_K=c3=b6nig?= , amd-gfx list , Alex Deucher , Dave Airlie , =?UTF-8?B?TWFyZWsgT2zFocOhaw==?= List-Id: dri-devel@lists.freedesktop.org QW0gMDQuMDkuMjAxOCB1bSAxODozNyBzY2hyaWViIERhbmllbCBWZXR0ZXI6Cj4gT24gVHVlLCBT ZXAgNCwgMjAxOCBhdCA1OjUyIFBNLCBCYXMgTmlldXdlbmh1aXplbgo+IDxiYXNAYmFzbmlldXdl bmh1aXplbi5ubD4gd3JvdGU6Cj4+IE9uIFR1ZSwgU2VwIDQsIDIwMTggYXQgNDo0MyBQTSBEYW5p ZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+IHdyb3RlOgo+Pj4gT24gVHVlLCBTZXAgNCwgMjAx OCBhdCAzOjMzIFBNLCBCYXMgTmlldXdlbmh1aXplbgo+Pj4gPGJhc0BiYXNuaWV1d2VuaHVpemVu Lm5sPiB3cm90ZToKPj4+PiBPbiBUdWUsIFNlcCA0LCAyMDE4IGF0IDM6MDQgUE0gRGFuaWVsIFZl dHRlciA8ZGFuaWVsQGZmd2xsLmNoPiB3cm90ZToKPj4+Pj4gT24gVHVlLCBTZXAgMDQsIDIwMTgg YXQgMDI6MzM6MDJQTSArMDIwMCwgQmFzIE5pZXV3ZW5odWl6ZW4gd3JvdGU6Cj4+Pj4+PiBPbiBU dWUsIFNlcCA0LCAyMDE4IGF0IDI6MjYgUE0gRGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNo PiB3cm90ZToKPj4+Pj4+PiBPbiBUdWUsIFNlcCAwNCwgMjAxOCBhdCAxMjo0NDoxOVBNICswMjAw LCBDaHJpc3RpYW4gS8O2bmlnIHdyb3RlOgo+Pj4+Pj4+PiBBbSAwNC4wOS4yMDE4IHVtIDEyOjE1 IHNjaHJpZWIgRGFuaWVsIFN0b25lOgo+Pj4+Pj4+Pj4gSGksCj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4g T24gVHVlLCA0IFNlcCAyMDE4IGF0IDExOjA1LCBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVy QGZmd2xsLmNoPiB3cm90ZToKPj4+Pj4+Pj4+PiBPbiBUdWUsIFNlcCA0LCAyMDE4IGF0IDM6MDAg QU0sIEJhcyBOaWV1d2VuaHVpemVuIDxiYXNAYmFzbmlldXdlbmh1aXplbi5ubD4gd3JvdGU6Cj4+ Pj4+Pj4+Pj4+ICsvKiBUaGUgY2hpcCB0aGlzIGlzIGNvbXBhdGlibGUgd2l0aC4KPj4+Pj4+Pj4+ Pj4gKyAqCj4+Pj4+Pj4+Pj4+ICsgKiBJZiBjb21wcmVzc2lvbiBpcyBkaXNhYmxlZCwgdXNlCj4+ Pj4+Pj4+Pj4+ICsgKiAgIC0gQU1ER1BVX0NISVBfVEFISVRJIGZvciBHRlg2LUdGWDgKPj4+Pj4+ Pj4+Pj4gKyAqICAgLSBBTURHUFVfQ0hJUF9WRUdBMTAgZm9yIEdGWDkrCj4+Pj4+Pj4+Pj4+ICsg Kgo+Pj4+Pj4+Pj4+PiArICogV2l0aCBjb21wcmVzc2lvbiBlbmFibGVkIHBsZWFzZSB1c2UgdGhl IGV4YWN0IGNoaXAuCj4+Pj4+Pj4+Pj4+ICsgKgo+Pj4+Pj4+Pj4+PiArICogVE9ETzogRG8gc29t ZSBnZW5lcmF0aW9ucyBzaGFyZSBEQ0MgZm9ybWF0Pwo+Pj4+Pj4+Pj4+PiArICovCj4+Pj4+Pj4+ Pj4+ICsjZGVmaW5lIEFNREdQVV9NT0RJRklFUl9DSElQX0dFTl9TSElGVCAgICAgICAgICAgICAg ICAgNDAKPj4+Pj4+Pj4+Pj4gKyNkZWZpbmUgQU1ER1BVX01PRElGSUVSX0NISVBfR0VOX01BU0sg ICAgICAgICAgICAgICAgICAweGZmCj4+Pj4+Pj4+Pj4gRG8geW91IHJlYWxseSBuZWVkIGFsbCB0 aGUgY29tYmluYXRpb25zIGhlcmUgb2YgRENDICsgZ3B1IGdlbiArIHRpbGluZwo+Pj4+Pj4+Pj4+ IGRldGFpbHM/IFdoZW4gd2UgaGFkIHRoZSBlbnRpcmUgZGlzY3Vzc2lvbiB3aXRoIG52aWRpYSBm b2xrcyB0aGV5Cj4+Pj4+Pj4+Pj4gZXZlbnR1YWxseSBhZ3JlZWQgdGhhdCB0aGV5IGRvbid0IG5l ZWQgdGhlIG1hc3NpdmUgcGlsZSB3aXRoIGV2ZXJ5Cj4+Pj4+Pj4+Pj4gcG9zc2libGUgY29tYmlu YXRpb24uIERvIHlvdSByZWFsbHkgcGxhbiB0byBzaGFyZSBhbGwgdGhlc2UgZGlmZmVyZW50Cj4+ Pj4+Pj4+Pj4gdGhpbmdzPwo+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4gTm90ZSB0aGF0IGUuZy4gb24g aTkxNSB3ZSBzcGVjIHNvbWUgb2YgdGhlIHRpbGluZyBkZXBlbmRpbmcgdXBvbgo+Pj4+Pj4+Pj4+ IGJ1ZmZlciBzaXplIGFuZCBidWZmZXIgZm9ybWF0IChiZWNhdXNlIHRoYXQncyBob3cgdGhlIGh3 IHdvcmtzKSwgbm90Cj4+Pj4+Pj4+Pj4gdXNpbmcgZXhwbGljaXQgbW9kaWZpZXIgZmxhZ3MgZm9y IGV2ZXJ5dGhpbmcuCj4+Pj4+Pj4+PiBSaWdodC4gVGhlIGNvbmNsdXNpb24sIGFmdGVyIHBlb3Bs ZSB3ZW50IHRocm91Z2ggYW5kIHN0YXJ0ZWQgc29ydGluZwo+Pj4+Pj4+Pj4gb3V0IHRoZSBraW5k cyBvZiBmb3JtYXRzIGZvciB3aGljaCB0aGV5IHdvdWxkIF9hY3R1YWxseV8gZXhwb3J0IHJlYWwK Pj4+Pj4+Pj4+IGNvbG91ciBidWZmZXJzIGZvciwgdGhhdCBtb3N0IHZlbmRvcnMgZGVmaW5pdGVs eSBoYXZlIGZld2VyIHRoYW4KPj4+Pj4+Pj4+IDExNSw3OTIsMDg5LDIzNywzMTYsMTk1LDQyMyw1 NzAsOTg1LDAwOCw2ODcsOTA3LDg1MywyNjksOTg0LDY2NSw2NDAsNTY0LDAzOSw0NTcsNTg0LDAw Nyw5MTMsMTI5LDYzOSw5MzYKPj4+Pj4+Pj4+IHBvc3NpYmxlIGZvcm1hdHMgdG8gcmVwcmVzZW50 LCB2ZXJ5IGxpa2VseSBmZXdlciB0aGFuCj4+Pj4+Pj4+PiAzNDAsMjgyLDM2Niw5MjAsOTM4LDQ2 Myw0NjMsMzc0LDYwNyw0MzEsNzY4LDIxMSw0NTYgZm9ybWF0cywgcHJvYmFibHkKPj4+Pj4+Pj4+ IGZld2VyIHRoYW4gNzIsMDU3LDU5NCwwMzcsOTI3LDkzNiBmb3JtYXRzLCBhbmQgZXZlbiBzdGls bCBnZW5lcmFsbHkKPj4+Pj4+Pj4+IGZld2VyIHRoYW4gMjgxLDQ3NCw5NzYsNzEwLDY1NiBpZiB5 b3Ugd2FudCB0byBiZSBnZW5lcm91cyBhbmQgbGVhdmUgOAo+Pj4+Pj4+Pj4gYml0cyBvZiB0aGUg NTYgYXZhaWxhYmxlLgo+Pj4+Pj4+PiBUaGUgcHJvYmxlbSBoZXJlIGlzIHRoYXQgYXQgbGVhc3Qg Zm9yIHNvbWUgcGFyYW1ldGVycyB3ZSBhY3R1YWxseSBkb24ndCBrbm93Cj4+Pj4+Pj4+IHdoaWNo IGZvcm1hdHMgYXJlIGFjdHVhbGx5IHVzZWQuCj4+Pj4+Pj4+Cj4+Pj4+Pj4+IFRoZSBmb2xsb3dp bmcgYXJlIG5vdCByZWFsIHdvcmxkIGV4YW1wbGVzLCBidXQganVzdCB0byBleHBsYWluIHRoZSBn ZW5lcmFsCj4+Pj4+Pj4+IHByb2JsZW0uCj4+Pj4+Pj4+Cj4+Pj4+Pj4+IFRoZSBtZW1vcnkgY29u ZmlndXJhdGlvbiBmb3IgZXhhbXBsZSBjYW4gYmUgbm90IEFTSUMgc3BlY2lmaWMsIGJ1dCByYXRo ZXIKPj4+Pj4+Pj4gZGV0ZXJtaW5lZCBieSB3aG9ldmVyIHRvb2sgdGhlIEFTSUMgYW5kIGdsdWVk IGl0IHRvZ2V0aGVyIHdpdGggVlJBTSBvbiBhCj4+Pj4+Pj4+IGJvYXJkLiBJdCBpcyBub3QgbGlr ZWx5IHRoYXQgc29tZWJvZHkgcHV0cyBhbGwgdGhlIFZSQU0gY2hpcHMgb24gb25lCj4+Pj4+Pj4+ IGNoYW5uZWwsIGJ1dCBpdCBpcyBzdGlsbCBwZXJmZWN0bHkgcG9zc2libGUuCj4+Pj4+Pj4+Cj4+ Pj4+Pj4+IFNhbWUgaXMgdHJ1ZSBmb3IgdGhpbmdzIGxpa2UgaGFydmVzdGluZywgZS5nLiBvZiAx NiBjaGFubmVscyBoYWx2ZSBvZiB0aGVtCj4+Pj4+Pj4+IGNvdWxkIGJlIGJhZCBhbmQgd2UgbmVl ZCB0byBrbm93IHdoaWNoIHRvIGFjdHVhbGx5IHVzZS4KPj4+Pj4+PiBGb3IgbXkgdW5kZXJzdGFu ZGluZzogVGhpcyBsZWFrcyBvdXRzaWRlIHRoZSBjaGlwIHdoZW4gc2hhcmluZyBidWZmZXJzPwo+ Pj4+Pj4+IEFsbCB0aGUgaW5mb3JtYXRpb24geW91IG9ubHkgbmVlZCBsb2NhbGx5IHRvIGEgZ2l2 ZW4gYW1kZ3B1IGluc3RhbmNlCj4+Pj4+Pj4gZG9uJ3QgcmVhbGx5IG5lZWQgdG8gYmUgZW5jb2Rl ZCBpbiBtb2RpZmllcnMuCj4+Pj4+Pj4KPj4+Pj4+PiBQb2ludGVycyB0byBjb2RlIHdoZXJlIHRo aXMgaXMgYWxsIGRlY2lkZWQgKGtlcm5lbCBhbmQgcmFkZW9uc2kgd291bGQgYmUKPj4+Pj4+PiBn b29kIHN0YXJ0ZXJzIEkgZ3Vlc3MpIHdvdWxkIGJlIHJlYWxseSBnb29kIGhlcmUuCj4+Pj4+PiBJ IGV4dHJhY3RlZCB0aGUgaW5mb3JtYXRpb24gb24gd2hpY2ggYml0cyBhcmUgcmVsZXZhbnQgbW9z dGx5IGZyb20gdGhlCj4+Pj4+PiBBZGRyRnJvbUNvb3JkIGZ1bmN0aW9ucyBpbiBhZGRybGliIGlu IG1lc2E6Cj4+Pj4+Pgo+Pj4+Pj4gZm9yIG1hY3JvLXRpbGVzOgo+Pj4+Pj4gaHR0cHM6Ly9naXRs YWIuZnJlZWRlc2t0b3Aub3JnL21lc2EvbWVzYS9ibG9iL21hc3Rlci9zcmMvYW1kL2FkZHJsaWIv cjgwMC9lZ2JhZGRybGliLmNwcCNMMTU4Nwo+Pj4+Pj4KPj4+Pj4+IGZvciBtaWNyby10aWxlcyAo b3IgdGhlIG1pY3JvLXRpbGVzIGluIG1hY3JvLXRpbGVzKToKPj4+Pj4+Cj4+Pj4+PiBodHRwczov L2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvbWVzYS9tZXNhL2Jsb2IvbWFzdGVyL3NyYy9hbWQvYWRk cmxpYi9jb3JlL2FkZHJsaWIxLmNwcCNMMzAxNgo+Pj4+PiBTbyB0aGlzIGlzIHRoZSBkZWNvZGlu ZyB0aGluZy4gSG93IG1hbnkgb2YgdGhlc2UgYWN0dWFsbHkgZXhpc3QsIGV2ZW4gd2hlbgo+Pj4+ PiB0YWtpbmcgYWxsIHRoZSBvdGhlciBpbmZvcm1hdGlvbiBpbnRvIGFjY291bnQ/Cj4+Pj4+Cj4+ Pj4+IEUuZy4gZ2l2ZW4gYSBwbGF0Zm9ybSArIG1lbW9yeSBjb25maWcgKHNlZW1zIG5lZWRlZCkg KyBkcm1fZm91cmNjICsgc3RyaWRlCj4+Pj4+ICsgaGVpZ2h0ICsgd2lkdGgsIGhvdyBtdWNoIG9m IGFsbCB0aGVzZSBiaXRzIGRvIHlvdSBhY3R1YWxseSBzdGlsbCBmcmVlbHkKPj4+Pj4gcGljaz8K Pj4+PiBCYXNpY2FsbHkgeW91IHBpY2sgQVJSQVlfTU9ERSAobGluZWFyLCBtaWNyby10aWxlLCBt YWNyby10aWxlLCBzcGFyc2UsCj4+Pj4gdGhpY2sgdmFyaWFudHMgb2YgbWFjcm8tdGlsZSksIE1J Q1JPX1RJTEVfTU9ERShkaXNwbGF5LCBub24tZGlzcGxheSwKPj4+PiBkZXB0aCwgZGlzcGxheS1y b3RhdGVkKSArIHdoZXRoZXIgdG8gdXNlIGNvbXByZXNzaW9uLCBldmVyeXRoaW5nIGVsc2UKPj4+ PiBpcyBmaXhlZCBnaXZlbiB0aG9zZSBvcHRpb24sIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBjaGlw IGFuZCB0aGUKPj4+PiBmb3JtYXQuCj4+Pj4KPj4+Pgo+Pj4+PiBJdCBtaWdodCBiZSB0aGF0IGFs bCB0aGUgdGhpbmdzIHlvdSBuZWVkIHRvIGtub3cgZnJvbSB0aGUgbWVtb3J5IGNvbmZpZwo+Pj4+ PiBkb24ndCBlbmNvZGUgc21hbGxlciB0aGFuIHRoZSBtYWNyby9taWNyby93aGF0ZXZlciBlbHNl IHN0dWZmLiBCdXQgdGhhdCdzCj4+Pj4+IGtpbmRhIHRoZSBhbmdsZSB0aGF0IHdlIGxvb2tlZCBh dCB0aGlzIGZvciBldmVyeW9uZSBlbHNlLgo+Pj4+Pgo+Pj4+PiBFLmcuIGZvciBtdWx0aS1wbGFu ZSBzdHVmZiwgaWYgZXZlcnlvbmUgcGlja3MgdGhlIHNhbWUgY29uZmlnIGZvciB0aGUKPj4+Pj4g Mm5kLzNyZCBwbGFuZSwgdGhlbiB5b3UgZG9uJ3QgYWN0dWFsbHkgbmVlZCB0byBlbmNvZGUgdGhh dC4gSXQganVzdAo+Pj4+PiBiZWNvbWVzIHBhcnQgb2YgdGhlIGltcGxpZWQgc3R1ZmYgaW4gdGhl IG1vZGlmaWVyLgo+Pj4+IFRoZSBwcm9ibGVtIGlzIHNvbWUgR1BVcyBhcmUgY29tcGF0aWJsZSBm b3Igc2F5IDgtYnBwIGltYWdlcywgYnV0IG5vdAo+Pj4+IGZvciAzMi1icHAgc3VyZmFjZXMuIGUu Zy4gbGV0cyBsb29rIGF0IHRoZSBmb2xsb3dpbmcgdGFibGUgc2hvd2luZyB0aGUKPj4+PiBjdXJy ZW50IGNvbmZpZ3VyYXRpb24gZm9yIGFsbCBHRlg2LUdGWDggR1BVOgo+Pj4+Cj4+Pj4gZm9ybWF0 OiAoYmFuayB3aWR0aCwgYmFuayBoZWlnaHQsIG1hY3JvIHRpbGUgYXNwZWN0LCBudW0gYmFua3Mp IGZvcgo+Pj4+IDgtYnBwLCAxNi1icHAgYW5kIDMyIGJwcCBzaW5nbGUtc2FtcGxlIGZvbGxvd2Vk IGJ5IHRoZSBQSVBFX0NPTkZJRwo+Pj4+Cj4+Pj4gdmVyZGU6ICgxLCA0LCAyLCAxNikgKDEsIDIs IDIsIDE2KSAoMSwgMSwgMiwgMTYpIEFERFJfU1VSRl9QNF84eDE2Cj4+Pj4gb2xhbmQ6ICgxLCA0 LCAyLCAxNikgKDEsIDIsIDIsIDE2KSAoMSwgMSwgMiwgMTYpIEFERFJfU1VSRl9QNF84eDE2Cj4+ Pj4gaGFpbmFuOiAoMSwgNCwgMiwgMTYpICgxLCAyLCAyLCAxNikgKDEsIDEsIDIsIDE2KSBBRERS X1NVUkZfUDIKPj4+PiB0YWhpdGkvcGl0Y2Fpcm46ICgxLCA0LCAxLCAxNikgKDEsIDIsIDEsIDE2 KSAoMSwgMSwgMSwgMTYpCj4+Pj4gQUREUl9TVVJGX1A4XzMyeDMyXzh4MTYKPj4+PiBib25haXJl OiAoMSw0LDQsMTYpICgxLCAyLCA0LCAxNikgKDEsIDEsIDIsIDE2KSBBRERSX1NVUkZfUDRfMTZ4 MTYKPj4+PiBoYXdhaWk6ICgxLCA0LCAyLCAxNikgKDEsIDIsIDIsIDE2KSAoMSwgMSwgMSwgMTYp IEFERFJfU1VSRl9QMTZfMzJ4MzJfMTZ4MTYKPj4+PiBDSUsgQVBVczogKDEsNCw0LCA4KSwgKDEs Miw0LDgpLCAgKDEsIDIsIDIsIDgpIEFERFJfU1VSRl9QMgo+Pj4+IHRvcGF6OiAoNCwgNCwgMiwg OCkgKDQsIDQsIDIsIDgpICgyLCA0LCAyLCA4KSBBRERSX1NVUkZfUDIKPj4+PiBmaWppOiAoMSwg NCwgMiwgOCkgKDEsIDQsIDIsIDgpICgxLCA0LCAyLCA4KSBBRERSX1NVUkZfUDE2XzMyeDMyXzE2 eDE2Cj4+Pj4gdG9uZ2E6OiAoMSwgNCwgNCwgMTYpLCAoMSwgNCwgNCwgMTYpICgxLCA0LCA0LCAx NikgQUREUl9TVVJGX1A4XzMyeDMyXzE2eDE2Cj4+Pj4gcG9sYXJpczExLzEyOiAoMSwgNCwgNCwg MTYpLCAoMSwgNCwgNCwgMTYpICgxLCA0LCA0LCAxNikgQUREUl9TVVJGX1A0XzE2eDE2Cj4+Pj4g cG9sYXJpczEwOiAoMSwgNCwgNCwgMTYpLCAoMSwgNCwgNCwgMTYpICgxLCA0LCA0LCAxNikgQURE Ul9TVVJGX1A4XzMyeDMyXzE2eDE2Cj4+Pj4gc3RvbmV5LGNhcnJpem86ICgxLCA0LCA0LCA4KSAo MSwgMiwgNCwgOCksICgxLCAxLCAyLCA4KSBBRERSX1NVUkZfUDIKPj4+Pgo+Pj4+IFdlIHNlZSBo ZXJlIHRoYXQgZS5nLiBTdG9uZXkgYW5kIHRoZSBDSUsgQVBVcyBhcmUgY29tcGF0aWJsZSBmb3Ig OC1icHAKPj4+PiBhbmQgMTYtYnBwLCBidXQgbm90IDMyLWJwcC4gb3IgYm9uYWlyZSBhbmQgcG9s YXJpczExLzEyIGFyZSBvbmx5Cj4+Pj4gY29tcGF0aWJsZSBmb3IgOC1icHAuCj4+Pj4KPj4+PiBT byB3ZSBjYW4ndCBqdXN0IGFzc3VtZSB0aGF0IGlmIHRoZSBmaXJzdCBwbGFuZSBwcm9wZXJ0aWVz IG1hdGNoIHRoYXQKPj4+PiB0aGV5IGRvIHNvIGZvciB0aGUgc2Vjb25kIHBsYW5lLCBiZWNhdXNl IHdlIGRvbid0IGtub3cgd2hhdCBHUFUgaXQgaXMKPj4+PiBjb21pbmcgZnJvbS4KPj4+Pgo+Pj4+ IEFuZCB3ZSBjYW4gbWFrZSBhIGNhbm9uaWNhbCB0YWJsZSBmcm9tIHRoaXMgYnV0IHRoZW4gaWYg d2UgY2hhbmdlIHRoZQo+Pj4+IGFib3ZlIHRhYmxlcyBpbiB0aGUga2VybmVsIHRoYXQgcnVucyBp bnRvIGNvbXBhdGliaWxpdHkgaXNzdWVzLgo+Pj4KPj4+IEkgdGhpbmsgdGhhdCdzIHJvdWdobHkg d2hhdCBudmlkaWEgZW5kZWQgdXAgZG9pbmcgKG5vdCBzdXJlIHRoZXkKPj4+IHB1Ymxpc2hlZCBh bnl0aGluZywgaGF2ZW4ndCBzZWVuIGFueSBwYXRjaGVzIG9uIGRyaS1kZXZlbCkuIFR3byBwYXJ0 czoKPj4+IC0gQnVuY2ggb2YgZmxhZ3MvYml0cyBmb3IgdGhlIG1ham9yIG1vZGUsIGxpa2Uge2Rp c3BsYXksIG5vbi1kaXNwbGF5LAo+Pj4gRENDfSBhbmQgc28gb24uCj4+PiAtIEZvciBlYWNoIG9m IHRoZSBtYWpvciBtb2RlcyBhIGxpc3Qgb2YgZW51bWVyYXRlZCBtb2RlcyBhY3R1YWxseSB1c2Vk Cj4+PiBpbiByZWFsaXR5LiBGb3IgRENDIHRoaXMgd291bGQgYmUgdGhlIGdlbmVyYXRpb24sIGZv ciBtb3JlIHBsYWluCj4+PiBmb3JtYXRzIGl0IHdvdWxkIGJlIHRoZSBhYm92ZSB0YWJsZS4gVGFi bGUgZW50cmllcyB3b3VsZCBiZSBwZXItYnBwCj4+PiAoaW4gY2FzZSB0aGF0IG1hdHRlcnMsIG9y IHdoYXRldmVyIG1hdHRlcnMgZm9yIGFtZCBncHVzKS4KPj4+Cj4+PiBJbW8gd291bGQgYmUgdG90 YWxseSBvayB0byBwdXQgdGhlIHJlbGV2YW50IGxvb2t1cCB0YWJsZXMgaW50bwo+Pj4gZHJtX2Zv dXJjYy5oIGRpcmVjdGx5LiBPciBhbnkgb3RoZXIgc3VpdGFibGUgcGxhY2UuCj4+IFJpZ2h0LCB0 aGUgaXNzdWUgd291bGQgYmUgdGhhdCB0aGUgdGFibGVzIGFyZSBjb25maWd1cmVkIGludCBoZSBr ZXJuZWwKPj4KPj4gaHR0cHM6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9+YWdkNWYvbGludXgvdHJl ZS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjZfMC5jP2g9YW1kLXN0YWdpbmctZHJt LW5leHQjbjQxNwo+Pgo+PiBhbmQgaGF2aW5nIGEgc2hhcmVkIGhhcmRjb2RlZCB0YWJsZSBtZWFu cyB0aGF0IGlmIHRoZSBrZXJuZWwgdGFibGVzCj4+IGNoYW5nZSB3ZSBicmVhayB1c2Vyc3BhY2Uu IFRoYXQgd291bGQgYmUgYSBuZXcgY29tbWl0bWVudCBvbiB0aGUgc2lkZQo+PiBvZiB0aGUga2Vy bmVsIGRyaXZlci4KPj4KPj4gKElmIEkgY2FuIGdldCBhbiBva2F5IGZvciB0aGF0IGNvbW1pdG1l bnQgZnJvbSBBbGV4L0NocmlzdGlhbiBJJ2QgYmUKPj4gdG90YWxseSBoYXBweSB0byBzd2l0Y2gg aXQgb3ZlcikKPiBZZWFoIGl0J2QgbWFrZSB0aGF0IHRhYmxlIHVhcGkKClRoYXQgd29uJ3Qgd29y ay4gVGhvc2UgbGlzdHMgYXJlIG5vdCBuZWNlc3Nhcnkgc3RhYmxlLgoKV2hhdCB3ZSBjb3VsZCBk byBpcyB0byB1c2UgUENJLUlEIHBsdXMgdGlsZV9tb2RlL21hY3JvX3RpbGVfbW9kZSBpbmRleCAK cGx1cyBhIDhiaXQgdmVyc2lvbiBudW1iZXIuCgpTaG91bGRuJ3QgYmUgbW9yZSB0aGFuIDMyIGJp dHMgaW4gdG90YWwuCgpSZWdhcmRzLApDaHJpc3RpYW4uCgo+ICAgLSB3ZWxsIHRoZSBjb21wcmVz c2VkIGZyb20gd2l0aAo+IGR1cGxpY2F0ZXMgcmVtb3ZlZCwgaWYgeW91IHJlYWxseSB3YW50IHRv IG1ha2UgaXQgdGlueS4gQnV0IHlvdSBjYW4KPiBqdXN0IGFkZCBuZXcgZW50cmllcyBpZiB0aGUg aGV1cmlzdGljcyBmb3IgYSBnaXZlbiBwbGF0Zm9ybSBjaGFuZ2VzLAo+IGFzIGxvbmcgYXMgeW91 IGtlZXAgdGhlIG9sZCBlbnRyaWVzIHdvcmtpbmcgKGlmIHlvdSBzaGlwcGVkIHRoZW0gZXZlcgo+ IG9mYywgb3RoZXJ3aXNlIHRvdGFsbHkgb2sgdG8gY2hhbmdlIGFzIHlvdSBzZWUgZml0KS4KPiAt RGFuaWVsCj4KPj4+ICBGcm9tIGEgcXVpY2sgbG9vayBhYm91dCAxNiBiaXRzIHRvdGFsLiBHaXZl cyB5b3UgNDBiaXRzIG9mIHNlY29uZAo+Pj4gY2hhbmNlcyBhbmQgIm9vcHMgdG90YWxseSBzb3Jy eSIuCj4+IEkgcHVycG9zZWZ1bGx5IGxlZnQgOCBiaXRzIGFzIGEgdmVyc2lvbiBmaWVsZCBmb3Ig dGhvc2Ugb29wc2VzLgo+Pgo+Pj4gLURhbmllbAo+Pj4KPj4+Pj4gLURhbmllbAo+Pj4+Pgo+Pj4+ Pj4+IC1EYW5pZWwKPj4+Pj4+Pgo+Pj4+Pj4+PiBSZWdhcmRzLAo+Pj4+Pj4+PiBDaHJpc3RpYW4u Cj4+Pj4+Pj4+Cj4+Pj4+Pj4+PiBJZiB5b3UgZG8gdXNlIDI1NiBiaXRzIGluIG9yZGVyIHRvIHJl cHJlc2VudAo+Pj4+Pj4+Pj4gMTE1LDc5MiwwODksMjM3LDMxNiwxOTUsNDIzLDU3MCw5ODUsMDA4 LDY4Nyw5MDcsODUzLDI2OSw5ODQsNjY1LDY0MCw1NjQsMDM5LDQ1Nyw1ODQsMDA3LDkxMywxMjks NjM5LDkzNgo+Pj4+Pj4+Pj4gbW9kaWZpZXJzIHBlciBmb3JtYXQsIHVzZXJzcGFjZSB3b3VsZCBz dGFydCBoaXR0aW5nIE9PTSBwcmV0dHkgcXVpY2tseQo+Pj4+Pj4+Pj4gYXMgaXQgYXR0ZW1wdGVk IHRvIGVudW1lcmF0ZSBhbmQgbmVnb3RpYXRlIGFjY2VwdGFibGUgbW9kaWZpZXJzLgo+Pj4+Pj4+ Pj4gRWl0aGVyIHRoYXQgb3Igd2UgbmVlZCB0byByZXBsYWNlIHRoZSBmaXhlZCA2NC1iaXQgbW9k aWZpZXIgdG9rZW5zCj4+Pj4+Pj4+PiB3aXRoIHNvbWUga2luZCBvZiBlQlBGIHNjcmlwdC4KPj4+ Pj4+Pj4+Cj4+Pj4+Pj4+PiBDaGVlcnMsCj4+Pj4+Pj4+PiBEYW5pZWwKPj4+Pj4+Pj4+IF9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+Pj4+Pj4+PiBkcmkt ZGV2ZWwgbWFpbGluZyBsaXN0Cj4+Pj4+Pj4+PiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCj4+Pj4+Pj4+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2RyaS1kZXZlbAo+Pj4+Pj4+IC0tCj4+Pj4+Pj4gRGFuaWVsIFZldHRlcgo+Pj4+Pj4+IFNv ZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgo+Pj4+Pj4+IGh0dHA6Ly9ibG9nLmZm d2xsLmNoCj4+Pj4+Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KPj4+Pj4+PiBkcmktZGV2ZWwgbWFpbGluZyBsaXN0Cj4+Pj4+Pj4gZHJpLWRldmVsQGxp c3RzLmZyZWVkZXNrdG9wLm9yZwo+Pj4+Pj4+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCj4+Pj4+IC0tCj4+Pj4+IERhbmllbCBWZXR0ZXIK Pj4+Pj4gU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCj4+Pj4+IGh0dHA6Ly9i bG9nLmZmd2xsLmNoCj4+Pgo+Pj4KPj4+IC0tCj4+PiBEYW5pZWwgVmV0dGVyCj4+PiBTb2Z0d2Fy ZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KPj4+ICs0MSAoMCkgNzkgMzY1IDU3IDQ4IC0g aHR0cDovL2Jsb2cuZmZ3bGwuY2gKPgo+CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2FtZC1nZngK