From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yaodong Li Subject: Re: [PATCH v3 1/4] drm/i915: Always do WOPCM partitioning based on real firmware sizes Date: Thu, 19 Apr 2018 14:17:44 -0700 Message-ID: <5c39528e-ba3c-6b8f-2329-d1f6aeb4bded@intel.com> References: <1523320940-32742-1-git-send-email-yaodong.li@intel.com> 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 ESMTPS id D727C6E680 for ; Thu, 19 Apr 2018 21:20:07 +0000 (UTC) In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Michal Wajdeczko , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gMDQvMTkvMjAxOCAwODozMSBBTSwgTWljaGFsIFdhamRlY3prbyB3cm90ZToKPiBPbiBNb24s IDE2IEFwciAyMDE4IDE5OjI4OjA0ICswMjAwLCBZYW9kb25nIExpIDx5YW9kb25nLmxpQGludGVs LmNvbT4gCj4gd3JvdGU6Cj4KPj4gT24gMDQvMTMvMjAxOCAwNzoxNSBQTSwgTWljaGFsIFdhamRl Y3prbyB3cm90ZToKPj4+IE9uIFR1ZSwgMTAgQXByIDIwMTggMDI6NDI6MTcgKzAyMDAsIEphY2tp ZSBMaSA8eWFvZG9uZy5saUBpbnRlbC5jb20+IAo+Pj4gd3JvdGU6Cj4+Pgo+Pj4+IEFmdGVyIGVu YWJsZWQgdGhlIFdPUENNIHdyaXRlLW9uY2UgcmVnaXN0ZXJzIGxvY2tpbmcgc3RhdHVzIGNoZWNr aW5nLAo+Pj4+IHJlbG9hZGluZyBvZiB0aGUgaTkxNSBtb2R1bGUgd2lsbCBmYWlsIHdpdGggbW9k cGFyYW0gZW5hYmxlX2d1YyBzZXQgCj4+Pj4gdG8gMwo+Pj4+IChlbmFibGUgR3VDIGFuZCBIdUMg ZmlybXdhcmUgbG9hZGluZykgaWYgdGhlIG1vZHVsZSB3YXMgb3JpZ2luYWxseSAKPj4+PiBsb2Fk ZWQKPj4+PiB3aXRoIGVuYWJsZV9ndWMgc2V0IHRvIDEgKG9ubHkgZW5hYmxlIEd1QyBmaXJtd2Fy ZSBsb2FkaW5nKS4KPj4+Cj4+PiBJcyB0aGlzIGZyZXF1ZW50IGFuZCByZXF1aXJlZCBzY2VuYXJp byA/IG9yIGp1c3QgZm9yIAo+Pj4gZGVidWcvZGV2ZWxvcG1lbnQgPwo+Pj4KPj4gTXkgdW5kZXJz dGFuZGluZyBpcyB0aGlzIHNob3VsZCBiZSBhIG5pY2UgdG8gaGF2ZSBmZWF0dXJlIGFuZCBtYWlu bHkgCj4+IGZvciBkZWJ1Z2dpbmcuCj4+Pj4gVGhpcyBpcwo+Pj4+IGJlY2F1c2UgV09QQ00gcmVn aXN0ZXJzIHdlcmUgdXBkYXRlZCBhbmQgbG9ja2VkIHdpdGhvdXQgY29uc2lkZXJpbmcgCj4+Pj4g dGhlIEh1Qwo+Pj4+IEZXIHNpemUuIFNpbmNlIHdlIG5lZWQgYm90aCBHdUMgYW5kIEh1QyBGVyBz aXplcyB0byBkZXRlcm1pbmUgdGhlIAo+Pj4+IGZpbmFsCj4+Pj4gbGF5b3V0IG9mIFdPUENNLCB3 ZSBzaG91bGQgYWx3YXlzIGNhbGN1bGF0ZSB0aGUgV09QQ00gbGF5b3V0IGJhc2VkIAo+Pj4+IG9u IHRoZQo+Pj4+IGFjdHVhbCBzaXplcyBvZiB0aGUgR3VDIGFuZCBIdUMgZmlybXdhcmUgYXZhaWxh YmxlIGZvciBhIHNwZWNpZmljIAo+Pj4+IHBsYXRmb3JtCj4+Pj4gaWYgd2UgbmVlZCBjb250aW51 ZSB0byBzdXBwb3J0IGVuYWJsZS9kaXNhYmxlIEh1QyBGVyBsb2FkaW5nIAo+Pj4+IGR5bmFtaWNh bGx5Cj4+Pj4gd2l0aCBlbmFibGVfZ3VjIG1vZHBhcmFtLgo+Pj4+Cj4+Pj4gVGhpcyBwYXRjaCBz cGxpdHMgdUMgZmlybXdhcmUgZmV0Y2hpbmcgaW50byB0d28gc3RhZ2VzLiBGaXJzdCBzdGFnZSAK Pj4+PiBpcyB0bwo+Pj4+IGZldGNoIHRoZSBmaXJtd2FyZSBpbWFnZSBhbmQgdmVyaWZ5IHRoZSBm aXJtd2FyZSBoZWFkZXIuIHVDIAo+Pj4+IGZpcm13YXJlIHdpbGwKPj4+PiBiZSBtYXJrZWQgYXMg dmVyaWZpZWQgYW5kIHRoaXMgd2lsbCBtYWtlIEZXIGluZm8gYXZhaWxhYmxlIGZvciAKPj4+PiBm b2xsb3dpbmcKPj4+PiBXT1BDTSBsYXlvdXQgY2FsY3VsYXRpb24uIFRoZSBzZWNvbmQgc3RhZ2Ug aXMgdG8gY3JlYXRlIGEgR0VNIAo+Pj4+IG9iamVjdCBhbmQKPj4+PiBjb3B5IHRoZSBGVyBkYXRh IGludG8gdGhlIGNyZWF0ZWQgR0VNIG9iamVjdCB3aGljaCB3aWxsIG9ubHkgYmUgCj4+Pj4gYXZh aWxhYmxlCj4+Pj4gd2hlbiBHdUMvSHVDIGxvYWRpbmcgaXMgZW5hYmxlZCBieSBlbmFibGVfZ3Vj IG1vZHBhcmFtLiBUaGlzIHdpbGwgCj4+Pj4gZ3VhcmFudGVlCj4+Pj4gdGhhdCB0aGUgV09QQ00g bGF5b3V0IHdpbGwgYmUgYWx3YXlzIGJlIGNhbGN1bGF0ZWQgY29ycmVjdGx5IAo+Pj4+IHdpdGhv dXQgbWFraW5nCj4+Pj4gYW55IGFzc3VtcHRpb25zIHRvIHRoZSBHdUMgYW5kIEh1QyBmaXJtd2Fy ZSBzaXplcy4KPj4+Cj4+PiBZb3UgYXJlIGFsc28gYXNzdW1pbmcgdGhhdCBvbiByZWxvYWQgZXhh Y3RseSB0aGUgc2FtZSBHdUMvSHVDIGZpcm13YXJlcwo+Pj4gd2lsbCBiZWUgdXNlZCBhcyBpbiBp bml0aWFsIHJ1bi4gVGhpcyB3aWxsIG1ha2UgdGhpcyB1c2VsZXNzIGZvciBkZWJ1Zy8KPj4+IGRl dmVsb3BtZW50IHNjZW5hcmlvcywgd2hlcmUgY3VzdG9tIGZ3IGFyZSBsaWtlbHkgdG8gYmUgc3Bl Y2lmaWVkLgo+Pj4KPj4gVGhpcyBwYXRjaCBpcyBtYWlubHkgZm9yIHByb3ZpZGluZyBhIHJlYWwg Zml4IHRvIHN1cHBvcnQgCj4+IGVuYWJsZV9ndWM9MS0+My0+MSB1c2UgY2FzZS4KPj4gSXQgYmFz ZWQgb24gdGhlIGZhY3QgdGhhdCBpdCBpcyBpbmV2aXRhYmxlIHRoYXQgc29tZXRpbWVzIHdlIG5l ZWQgdG8gCj4+IHJlYm9vdCB0aGUgc3lzdGVtCj4+IGlmIHRoZSBzdGF0dXMgb2YgdGhlIGZ3IHdh cyBjaGFuZ2VkIG9uIHRoZSBmaWxlIHN5c3RlbS4KPgo+IFdoYXQgZG8geW91IG1lYW4gYnkgInN0 YXR1cyBvZiB0aGUgZncgd2FzIGNoYW5nZWQgb24gdGhlIGZpbGUgc3lzdGVtIiA/Cj4gKiBjaGFu Z2Ugb2YgdGhlIGZ3IGJpbmFyeS92ZXJzaW9uL3NpemUsIG9yCj4gKiBjaGFuZ2UgZnJvbSBub3Qt cHJlc2VudCB0byBwcmVzZW50ID8KSSB0aGluayBpdCBzaG91bGQgaW5jbHVkZSBhbGwgb2YgdGhl IHByZXNlbmNlIGNoYW5nZXMsIGZpbGUgdXBkYXRlcy4KPgo+PiBJIGFtIG5vdCBzdXJlIGhvdyBv ZnRlbiB3ZSBzd2l0Y2ggYmV0d2VlbiBkaWZmZXJlbnQgSHVDIEZXIHdpdGggCj4+IGRpZmZlcmVu dCBzaXplcz8KPgo+IEp1c3QgYWJvdmUgeW91IHNhaWQgdGhhdCB5b3UgbmVlZCB0aGlzICJtYWlu bHkgZm9yIGRlYnVnZ2luZyIgc28KPiBJIHdvdWxkIGV4cGVjdCB0aGF0IHRoZW4gZGlmZmVyZW50 IGZ3IHNpemVzIGFyZSBleHBlY3RlZC4KPgo+Pj4gSWYgd2Ugd2FudCB0byBzdXBwb3J0IGVuYWJs ZV9ndWM9MS0+My0+MSBzY2VuYXJpb3MgZm9yIGRlYnVnL2RldiB0aGVuCj4+PiBtYXliZSBtb3Jl IGZsZXhpYmxlIHdpbGwgYmUgb3RoZXIgYXBwcm9hY2ggdGhhdCBtYWtlcyBhbGxvY2F0aW9ucyBm cm9tCj4+PiB0aGUgb3RoZXIgZW5kIGFzIHByb3Bvc2VkIGluIFsxXQo+Pj4KPj4+IFsxXSBodHRw czovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvcGF0Y2gvMjEyNDcxLwo+PiBBY3R1YWxseSwg SSBkbyB0aGluayB0aGlzIG1pZ2h0IGJlIG9uZSBvZiB0aGUgb3B0aW9ucywgYW5kIEkndmUgYWxz byAKPj4gcHV0IHNvbWUgY29tbWVudHMgb24gdGhpcwo+PiBzZXJpZXMuIFRoZSBtYWluIGNvbmNl cm4gSSBoYXZlIGlzIGl0IHN0aWxsIG1ha2UgYXNzdW1wdGlvbiBvbiB0aGUgCj4+IEd1QyBGVyBz aXplIGFuZCBtYXkKPgo+IEJ1dCBpbiBlbmFibGVfZ3VjPTEtLT4zIHNjZW5hcmlvLCBJIHdvdWxk IGFzc3VtZSB0aGF0IHRoZSBvbmx5IGRpZmZlcmVuY2UKPiB3aWxsIGJlIEh1QyBmdyAoYXMgd2l0 aCBlbmFibGU9MSB3ZSBhbHJlYWR5IGxvYWRlZCBHdUMpCkhtbSwgbXkgbWFpbiBjb25jZXJuIHRv IHRoZSBjdXJyZW50ICJmcm9tIHRoZSBlbmQiIHNvbHV0aW9uIGlzIGl0IG1ha2VzIAphc3N1bXB0 aW9uIG9uCnRoZSBHdUMgRlcgc2l6ZSBpbiBvcmRlciB0byBtZWV0IHRoZSBIVyByZXN0cmljdGlv bi4KPgo+IElmIHlvdSB3YW50IGp1c3QgdG8gdGVzdCBkaWZmZXJlbnQgR3VDIGZ3cywgdGhlbiBp dCBpcyBkaWZmZXJlbnQgc2NlbmFyaW8KPiBhcyB0aGVuIGVuYWJsZV9ndWMgd2lsbCBhbHdheXMg YmUgPSAxLgo+CndoYXQgSSBtZWFuIGlzIHRoZSAiZnJvbSB0aGUgZW5kIiBhcHByb2FjaCB3aWxs IGxlYWQgdG8gdGhlIHNhbWUgaXNzdWUgCmZvciBkaWZmZXJlbnQgR3VDIEZXIHNpemVzIC0gd2UK bWF5IGhhdmUgdG8gcmVib290IHRoZSBzeXN0ZW0gZm9yIEd1QyBGVyBkZWJ1Z2dpbmcgKGRpZmZl cmVudCBHdUMgRlcgCnNpemVzKSBldmVuIGlmIGVuYWJsZV9ndWMgaXMgYWx3YXlzCnNldCB0byAx LiBIb3dldmVyLCB3aXRoIHRoZSBjdXJyZW50ICJmcm9tIHRoZSBiZWdpbm5pbmciIHdheSB3ZSB3 b24ndCAKcnVuIGludG8gc3VjaCBwcm9ibGVtcwpmb3IgR3VDIEZXIGRlYnVnZ2luZyAoc2luY2Ug aXQncyBhbHJlYWR5IHVzZWQgdGhlIG1heCBhdmFpbGFibGUgc3BhY2UpLiAKVGh1cyBJIHRoaW5r IHdlIHNob3VsZApkZWZpbmUgdGhlIGVuYWJsZV9ndWMgPSAxLT4zLT4xIGFzIGZvbGxvd2luZzoK d2Ugd291bGQgc3VwcG9ydCB1c2Ugb2YgZW5hYmxlX2d1Yz0xLT4zLT4xIGNvcnJlY3RseSB3aXRo b3V0IHN5c3RlbSAKcmVib290IGZvciB0aGUgcHJlc2VudCBGV3MuIEEgc3lzdGVtCnJlYm9vdCB3 aWxsIGJlIGV4cGVjdGVkIChidXQgbm90IG5lY2Vzc2FyaWx5IGhhcHBlbiBpZiB3ZSBmb3VuZCBj dXJyZW50IApwYXJ0aXRpb24gd29ya3MgZm9yIHRoZSBuZXcgRldzKQpmb3IgYW55IEZXIGNoYW5n ZXMgKGluY2x1ZGluZyBhZGQvcmVtb3ZlL3VwZGF0ZSkuCgppZiB3ZSBkZWNpZGUgdG8gZHJvcCB0 aGUgc3VwcG9ydCBmb3IgZW5hYmxlX2d1Yz0xLT4zLT4xIHNpbmNlIGl0J3Mgb25seSAKZm9yIGRl YnVnZ2luZyBwdXJwb3NlIHRoZW4gd2Ugc2hvdWxkCmV4cGVjdCBhIHN5c3RlbSByZWJvb3QgZm9y IGVpdGhlciAiZnJvbSB0aGUgZW5kIiBvciAiZnJvbSB0aGUgYmVnaW5uaW5nIiAKc29sdXRpb25z IHNpbmNlIHdlIGNhbm5vdCAxMDAlIGhhdmUKdGhpcyBpc3N1ZSAoY2hhbmdpbmcgRlcgd2l0aG91 dCBhIHN5c3RlbSBib290KSBzb2x2ZWQuIFRoZXJlZm9yZSwgdGhlIApyZXF1aXJlIG9mIHN5c3Rl bSByZWJvb3Qgc2hvdWxkIG5vdCBiZQphIGJ1ZyB3aGVuIGl0IGNvbWVzIHRvIEZXIHVwZGF0aW5n LgoKPj4gcnVuIGludG8gdGhlIHNhbWUgaXNzdWUgaWYgdGhlIEd1QyBGVyBmYWlsZWQgdG8gbWVl dCB0aGUgcmVxdWlyZW1lbnQuCj4+IGFuZCBmb3IgZGVidWdnaW5nIHB1cnBvc2UgaXQgd291bGQg aGF2ZSB0aGUgc2FtZSBwb3NzaWJsZSBmb3IgCj4+IGRpZmZlcmVudCBHdUMgRlcgZGVidWdnaW5n Lgo+Pj4KPj4+Pgo+Pj4+IHYzOgo+Pj4+IMKgLSBSZWJhc2UKPj4+Pgo+Pj4+IFNpZ25lZC1vZmYt Ynk6IEphY2tpZSBMaSA8eWFvZG9uZy5saUBpbnRlbC5jb20+Cj4+Pj4gQ2M6IE1pY2hhbCBXYWpk ZWN6a28gPG1pY2hhbC53YWpkZWN6a29AaW50ZWwuY29tPgo+Pj4+IENjOiBTYWdhciBBcnVuIEth bWJsZSA8c2FnYXIuYS5rYW1ibGVAaW50ZWwuY29tPgo+Pj4+IENjOiBNaWNoYWwgV2luaWFyc2tp IDxtaWNoYWwud2luaWFyc2tpQGludGVsLmNvbT4KPj4+PiBDYzogSm9obiBTcG90c3dvb2QgPGpv aG4uYS5zcG90c3dvb2RAaW50ZWwuY29tPgo+Pj4+IENjOiBKb29uYXMgTGFodGluZW4gPGpvb25h cy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+Cj4+Pj4gLS0tCj4+Pj4gwqBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF91Yy5jwqDCoMKgIHwgMTQgKysrKy0tLS0tLS0tLS0KPj4+PiDCoGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjX2Z3LmMgfCAzMSAKPj4+PiArKysrKysrKysrKysrKysr KysrKy0tLS0tLS0tLS0tCj4+Pj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Y19mdy5o IHzCoCA3ICsrKysrLS0KPj4+PiDCoDMgZmlsZXMgY2hhbmdlZCwgMjkgaW5zZXJ0aW9ucygrKSwg MjMgZGVsZXRpb25zKC0pCj4+Pj4KPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfdWMuYyAKPj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmMKPj4+ PiBpbmRleCAxY2ZmYWY3Li43M2I4ZjZjIDEwMDY0NAo+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3VjLmMKPj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91 Yy5jCj4+Pj4gQEAgLTE3MiwxMSArMTcyLDggQEAgdm9pZCBpbnRlbF91Y19pbml0X2Vhcmx5KHN0 cnVjdCAKPj4+PiBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+Pj4+IMKgwqDCoCBzYW5pdGl6ZV9v cHRpb25zX2Vhcmx5KGk5MTUpOwo+Pj4+IC3CoMKgwqAgaWYgKFVTRVNfR1VDKGk5MTUpKQo+Pj4+ IC3CoMKgwqDCoMKgwqDCoCBpbnRlbF91Y19md19mZXRjaChpOTE1LCAmZ3VjLT5mdyk7Cj4+Pj4g LQo+Pj4+IC3CoMKgwqAgaWYgKFVTRVNfSFVDKGk5MTUpKQo+Pj4+IC3CoMKgwqDCoMKgwqDCoCBp bnRlbF91Y19md19mZXRjaChpOTE1LCAmaHVjLT5mdyk7Cj4+Pj4gK8KgwqDCoCBpbnRlbF91Y19m d19mZXRjaChpOTE1LCAmZ3VjLT5mdywgVVNFU19HVUMoaTkxNSkpOwo+Pj4+ICvCoMKgwqAgaW50 ZWxfdWNfZndfZmV0Y2goaTkxNSwgJmh1Yy0+ZncsIFVTRVNfSFVDKGk5MTUpKTsKPj4+Cj4+PiBI bW0sIHNpZGUgZWZmZWN0IG9mIHRob3NlIHVuY29uZGl0aW9uYWwgZmV0Y2hlcyBtaWdodCBiZSB1 bndhbnRlZCAKPj4+IHdhcm5pbmdzCj4+PiBhYm91dCBtaXNzaW5nIGZpcm13YXJlcyAob24gY29u ZmlncyB3aXRoIGRpc2FibGVkIGd1YykgYXMgd2VsbCBhcyAKPj4+IGV4dGVuZGVkCj4+PiBkcml2 ZXIgbG9hZCB0aW1lLgo+PiBIbW0sIGlmIEhBU19HVUMgaXMgZmFsc2UgdGhlbiBmdyBwYXRoIHdv dWxkIGJlIE5VTEwuIFRoZSBmZXRjaCB3aWxsIAo+PiByZXR1cm4gZGlyZWN0bHkuCj4KPiBJIHdh cyByZWZlcnJpbmcgdG8gc2NlbmFyaW8gd2hlbiBvbiBwbGF0Zm9ybSB3aXRoIEhBU19IVUMgYW5k IHdpdGgKPiBlbmFibGVfZ3VjPTEgKGp1c3Qgc3VibWlzc2lvbiwgbm8gSHVDKSB3ZSB3aWxsIHRy eSB0byBmZXRjaCBIdUMgZncKPiAodGhhdCBtYXkgbm90IGJlIHByZXNlbnQgYXQgYWxsKSBhbmQg dGhlbiBkcm9wIGl0IGFzIGRvbid0IG5lZWQgaXQuCj4KSSB0aGluayB0aGVyZSBhcmUgdHdvIHNj ZW5hcmlvcyBoZXJlIGZvciB0aGlzIHNwZWNpZmljIGNhc2UgLSBhIHBsYXRmb3JtIAp3aXRoIEhB U19IVUMgPSAxwqAgYW5kIG9ubHkgR3VDIHN1Ym1pc3Npb24gaXMgbmVlZGVkOgowKSBObyBIdUMg RlcgYXZhaWxhYmxlIC0gV2Ugc2hvdWxkIGV4cGVjdCBhIHN5c3RlbSByZWJvb3QgZm9yIGFkZGlu ZyBuZXcgRlcuCjEpIElmIEh1QyBGVyBpcyBwcmVzZW50IC0gYWx3YXlzIGdldCB0aGUgRlcgaGVh ZGVyIGluZm8gaW4gb3JkZXIgdG8gCnN1cHBvcnQgcG9zc2libGUgZW5hYmxlX2d1Yz0xLT4zLT4x LgoKSU1ITywgdGhlIHByb2JsZW0gd2UgaGF2ZSBoZXJlIGlzIHRoYXQgd2UgbmVlZCB0byBkZWZp bmUgdGhlIHVzZSBjYXNlIApwcmVjaXNlbHkuIGUuZy4gd2hldGhlciB3ZSBzaGFsbCBzdXBwb3J0 CmVuYWJsZV9ndWM9MS0+My0+MSBmbGF3bGVzc2x5PyBhbmQgd2hldGhlciB3ZSBzaGFsbCBzdXBw b3J0IGR5bmFtaWMgSHVDIApGVyBzaXplcyBmb3IgZGVidWdnaW5nIHJhdGhlciB0aGFuCnN1cHBv cnRpbmcgZHluYW1pYyBHdUMgRlcgc2l6ZXMgZm9yIGRlYnVnZ2luZyBwdXJwb3NlPwo+Pj4KPj4+ IERvIHdlIHJlYWxseSBuZWVkIHRvIHN1cHBvcnQgdGhpcyBjb3JuZXIgY2FzZSBlbmFibGVfZ3Vj PTEtPjMgYXQgYWxsIAo+Pj4gY29zdHM/Cj4+IEkgdGhpbmsgdGhpcyBpcyB0aGUgcmVhbCBzb2x1 dGlvbiBmb3IgdGhpcyBpc3N1ZSAod2l0aCBubyAKPj4gYXNzdW1wdGlvbikuIEhvd2V2ZXIsIHdl IGRvCj4+IG5lZWQgdG8gZGVjaWRlIHdoZXRoZXIgd2Ugc2hvdWxkIHN1cHBvcnQgc3VjaCBhIGNv cm5lciBjYXNlIHdoaWNoIGlzIAo+PiBtYWlubHkgZm9yCj4+IGRlYnVnZ2luZy4KPgo+IEknbSBy ZXBlYXRpbmcgaGVyZSBKb29uYXMnIGVhcmxpZXIgc3RhdGVtZW50Ogo+Cj4gIlRoZW4ganVzdCBy ZXF1aXJlIGEgcmVib290IGlmIGFmdGVyIHRoYXQgcGFydGl0aW9uaW5nLAo+IMKgY2hhbmdpbmcg dGhlIHBhcmFtZXRlciBjYXVzZXMgdGhlIEZXIG5vdCB0byBmaXQiCj4KVGhhdCdzIG15IHRob3Vn aHQgdG9vOikKClJlZ2FyZHMsCi1KYWNraWUKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cg==