From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Gordon Subject: Re: [PATCH v2] drm/i915: prevent out of range pt in the PDE macros (take 3) Date: Tue, 6 Oct 2015 12:21:05 +0100 Message-ID: <5613AEA1.30807@intel.com> References: <1443715175-32567-1-git-send-email-michel.thierry@intel.com> <1443791813-30551-1-git-send-email-michel.thierry@intel.com> <5612A6F4.7030706@intel.com> <5612AC86.3030202@intel.com> <20151006083822.GU3383@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 8FAE9720CF for ; Tue, 6 Oct 2015 04:21:07 -0700 (PDT) In-Reply-To: <20151006083822.GU3383@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 , Michel Thierry Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gMDYvMTAvMTUgMDk6MzgsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gT24gTW9uLCBPY3QgMDUs IDIwMTUgYXQgMDU6NTk6NTBQTSArMDEwMCwgTWljaGVsIFRoaWVycnkgd3JvdGU6Cj4+IE9uIDEw LzUvMjAxNSA1OjM2IFBNLCBEYXZlIEdvcmRvbiB3cm90ZToKPj4+IE9uIDAyLzEwLzE1IDE0OjE2 LCBNaWNoZWwgVGhpZXJyeSB3cm90ZToKPj4+PiBXZSB0cmllZCB0byBmaXggdGhpcyBpbiBjb21t aXQgZmRjNDU0YzE0ODRhICgiZHJtL2k5MTU6IFByZXZlbnQgb3V0IG9mCj4+Pj4gcmFuZ2UgcHQg aW4gZ2VuNl9mb3JfZWFjaF9wZGUiKS4KPj4+Pgo+Pj4+IEJ1dCB0aGUgc3RhdGljIGFuYWx5emVy IHN0aWxsIGNvbXBsYWlucyB0aGF0LCBqdXN0IGJlZm9yZSB3ZSBicmVhayBkdWUKPj4+PiB0byAi aXRlciA8IEk5MTVfUERFUyIsIHdlIGRvICJwdCA9IChwZCktPnBhZ2VfdGFibGVbaXRlcl0iIHdp dGggYW4KPj4+PiBpdGVyIHZhbHVlIHRoYXQgaXMgYmlnZ2VyIHRoYW4gSTkxNV9QREVTLiBPZiBj b3Vyc2UsIHRoaXMgaXNuJ3QgcmVhbGx5Cj4+Pj4gYSBwcm9ibGVtIHNpbmNlIG5vIG9uZSB1c2Vz IHB0IG91dHNpZGUgdGhlIG1hY3JvLiBTdGlsbCwgZXZlcnkgc2luZ2xlCj4+Pj4gbmV3IHVzYWdl IG9mIHRoZSBtYWNybyB3aWxsIGNyZWF0ZSBhIG5ldyBpc3N1ZSBmb3IgdXMgdG8gbWFyayBhcyBh Cj4+Pj4gZmFsc2UgcG9zaXRpdmUuCj4+Pj4KPj4+PiBBbHNvLCBQYXVsbyByZS1zdGFydGVkIHRo ZSBkaXNjdXNzaW9uIGEgd2hpbGUgYWdvIFsxXSwgYnV0IGRpZG4ndCBlbmQgdXAKPj4+PiBpbXBs ZW1lbnRlZC4KPj4+Pgo+Pj4+IEluIG9yZGVyIHRvICJzb2x2ZSIgdGhpcyAicHJvYmxlbSIsIHRo aXMgcGF0Y2ggdGFrZXMgdGhlIGlkZWFzIGZyb20KPj4+PiBDaHJpcyBhbmQgRGF2ZSwgYnV0IHRo YXQgY2hlY2sgd291bGQgY2hhbmdlIHRoZSBkZXNpcmVkIGJlaGF2aW9yIG9mIHRoZQo+Pj4+IGNv ZGUsIGJlY2F1c2UgdGhlIG9iamVjdCAoZm9yIGV4YW1wbGUgcGRwLT5wYWdlX2RpcmVjdG9yeVtp dGVyXSkgY2FuIGJlCj4+Pj4gbnVsbCBkdXJpbmcgaW5pdC9hbGxvYywgYW5kIEMgd291bGQgdGFr ZSB0aGlzIGFzIGZhbHNlLCBicmVha2luZyB0aGUgZm9yCj4+Pj4gbG9vcCBpbW1lZGlhdGVseS4K Pj4+Pgo+Pj4+IFRoaXMgaGFzIGJlZW4gYWxyZWFkeSB2ZXJpZmllZCB3aXRoICJzdGF0aWMgYW5h bHlzaXMgdG9vbHMiLgo+Pj4+Cj4+Pj4gWzFdaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9h cmNoaXZlcy9pbnRlbC1nZngvMjAxNS1KdW5lLzA2ODU0OC5odG1sCj4+Pj4KPj4+PiB2MjogTWFr ZSBpdCBhIHNpbmdsZSBzdGF0ZW1lbnQsIHdoaWxlIHByZXZlbnRpbmcgdGhlIGNvbW1vbiBzdWJl eHByZXNzaW9uCj4+Pj4gZWxpbWluYXRpb24gKENocmlzKQo+Pj4+Cj4+Pj4gQ2M6IFBhdWxvIFph bm9uaSA8cGF1bG8uci56YW5vbmlAaW50ZWwuY29tPgo+Pj4+IENjOiBDaHJpcyBXaWxzb24gPGNo cmlzQGNocmlzLXdpbHNvbi5jby51az4KPj4+PiBDYzogRGF2ZSBHb3Jkb24gPGRhdmlkLnMuZ29y ZG9uQGludGVsLmNvbT4KPj4+PiBTaWduZWQtb2ZmLWJ5OiBNaWNoZWwgVGhpZXJyeSA8bWljaGVs LnRoaWVycnlAaW50ZWwuY29tPgo+Pj4+IC0tLQo+Pj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZ3R0LmggfCAxNCArKysrKysrKy0tLS0tLQo+Pj4+ICAgMSBmaWxlIGNoYW5nZWQs IDggaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKPj4+Pgo+Pj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAo+Pj4+IGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZ3R0LmgKPj4+PiBpbmRleCA5ZmJiMDdkLi5hMjE2Mzk3IDEwMDY0NAo+ Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4+Pj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKPj4+PiBAQCAtMzk0LDcgKzM5NCw4 IEBAIHN0cnVjdCBpOTE1X2h3X3BwZ3R0IHsKPj4+PiAgICAqLwo+Pj4+ICAgI2RlZmluZSBnZW42 X2Zvcl9lYWNoX3BkZShwdCwgcGQsIHN0YXJ0LCBsZW5ndGgsIHRlbXAsIGl0ZXIpIFwKPj4+PiAg ICAgICBmb3IgKGl0ZXIgPSBnZW42X3BkZV9pbmRleChzdGFydCk7IFwKPj4+PiAtICAgICAgICAg cHQgPSAocGQpLT5wYWdlX3RhYmxlW2l0ZXJdLCBsZW5ndGggPiAwICYmIGl0ZXIgPCBJOTE1X1BE RVM7IFwKPj4+PiArICAgICAgICAgbGVuZ3RoID4gMCAmJiBpdGVyIDwgSTkxNV9QREVTID8gXAo+ Pj4+ICsgICAgICAgICAgICAocHQgPSAocGQpLT5wYWdlX3RhYmxlW2l0ZXJdKSwgMSA6IDA7IFwK Pj4+PiAgICAgICAgICAgIGl0ZXIrKywgXAo+Pj4+ICAgICAgICAgICAgdGVtcCA9IEFMSUdOKHN0 YXJ0KzEsIDEgPDwgR0VONl9QREVfU0hJRlQpIC0gc3RhcnQsIFwKPj4+PiAgICAgICAgICAgIHRl bXAgPSBtaW5fdCh1bnNpZ25lZCwgdGVtcCwgbGVuZ3RoKSwgXAo+Pj4+IEBAIC00NTksNyArNDYw LDggQEAgc3RhdGljIGlubGluZSB1aW50MzJfdCBnZW42X3BkZV9pbmRleCh1aW50MzJfdCBhZGRy KQo+Pj4+ICAgICovCj4+Pj4gICAjZGVmaW5lIGdlbjhfZm9yX2VhY2hfcGRlKHB0LCBwZCwgc3Rh cnQsIGxlbmd0aCwgdGVtcCwgaXRlcikgICAgICAgIFwKPj4+PiAgICAgICBmb3IgKGl0ZXIgPSBn ZW44X3BkZV9pbmRleChzdGFydCk7IFwKPj4+PiAtICAgICAgICAgcHQgPSAocGQpLT5wYWdlX3Rh YmxlW2l0ZXJdLCBsZW5ndGggPiAwICYmIGl0ZXIgPAo+Pj4+IEk5MTVfUERFUzsgICAgXAo+Pj4+ ICsgICAgICAgICBsZW5ndGggPiAwICYmIGl0ZXIgPCBJOTE1X1BERVMgPyBcCj4+Pj4gKyAgICAg ICAgICAgIChwdCA9IChwZCktPnBhZ2VfdGFibGVbaXRlcl0pLCAxIDogMDsgXAo+Pj4+ICAgICAg ICAgICAgaXRlcisrLCAgICAgICAgICAgICAgICBcCj4+Pj4gICAgICAgICAgICB0ZW1wID0gQUxJ R04oc3RhcnQrMSwgMSA8PCBHRU44X1BERV9TSElGVCkgLSBzdGFydCwgICAgXAo+Pj4+ICAgICAg ICAgICAgdGVtcCA9IG1pbih0ZW1wLCBsZW5ndGgpLCAgICAgICAgICAgICAgICAgICAgXAo+Pj4+ IEBAIC00NjcsOCArNDY5LDggQEAgc3RhdGljIGlubGluZSB1aW50MzJfdCBnZW42X3BkZV9pbmRl eCh1aW50MzJfdCBhZGRyKQo+Pj4+Cj4+Pj4gICAjZGVmaW5lIGdlbjhfZm9yX2VhY2hfcGRwZShw ZCwgcGRwLCBzdGFydCwgbGVuZ3RoLCB0ZW1wLCBpdGVyKSAgICBcCj4+Pj4gICAgICAgZm9yIChp dGVyID0gZ2VuOF9wZHBlX2luZGV4KHN0YXJ0KTsgXAo+Pj4+IC0gICAgICAgICBwZCA9IChwZHAp LT5wYWdlX2RpcmVjdG9yeVtpdGVyXSwgXAo+Pj4+IC0gICAgICAgICBsZW5ndGggPiAwICYmIChp dGVyIDwgSTkxNV9QRFBFU19QRVJfUERQKGRldikpOyBcCj4+Pj4gKyAgICAgICAgIGxlbmd0aCA+ IDAgJiYgKGl0ZXIgPCBJOTE1X1BEUEVTX1BFUl9QRFAoZGV2KSkgPyBcCj4+Pj4gKyAgICAgICAg ICAgIChwZCA9IChwZHApLT5wYWdlX2RpcmVjdG9yeVtpdGVyXSksIDEgOiAwOyBcCj4+Pj4gICAg ICAgICAgICBpdGVyKyssICAgICAgICAgICAgICAgIFwKPj4+PiAgICAgICAgICAgIHRlbXAgPSBB TElHTihzdGFydCsxLCAxIDw8IEdFTjhfUERQRV9TSElGVCkgLSBzdGFydCwgICAgXAo+Pj4+ICAg ICAgICAgICAgdGVtcCA9IG1pbih0ZW1wLCBsZW5ndGgpLCAgICAgICAgICAgICAgICAgICAgXAo+ Pj4+IEBAIC00NzYsOCArNDc4LDggQEAgc3RhdGljIGlubGluZSB1aW50MzJfdCBnZW42X3BkZV9p bmRleCh1aW50MzJfdCBhZGRyKQo+Pj4+Cj4+Pj4gICAjZGVmaW5lIGdlbjhfZm9yX2VhY2hfcG1s NGUocGRwLCBwbWw0LCBzdGFydCwgbGVuZ3RoLCB0ZW1wLCBpdGVyKSAgICBcCj4+Pj4gICAgICAg Zm9yIChpdGVyID0gZ2VuOF9wbWw0ZV9pbmRleChzdGFydCk7ICAgIFwKPj4+PiAtICAgICAgICAg cGRwID0gKHBtbDQpLT5wZHBzW2l0ZXJdLCBcCj4+Pj4gLSAgICAgICAgIGxlbmd0aCA+IDAgJiYg aXRlciA8IEdFTjhfUE1MNEVTX1BFUl9QTUw0OyBcCj4+Pj4gKyAgICAgICAgIGxlbmd0aCA+IDAg JiYgaXRlciA8IEdFTjhfUE1MNEVTX1BFUl9QTUw0ID8gXAo+Pj4+ICsgICAgICAgICAgICAocGRw ID0gKHBtbDQpLT5wZHBzW2l0ZXJdKSwgMSA6IDA7IFwKPj4+Cj4+PiB0aGlzIHdvbid0IGNvbXBp bGUgLS0gc2VlIGJlbG93Cj4+Cj4+IEhtbSwgaXQgY29tcGlsZWQgKGFsc28gZ290IHJpZCBvZiBv ZiB0aGUgImFuYWx5c2lzIHRvb2wgZXJyb3IiIGFuZCBkaWRuJ3QKPj4gc2VlIGFueSBiZWhhdmlv ciBjaGFuZ2UpLgo+Pgo+Pj4KPj4+PiAgICAgICAgICAgIGl0ZXIrKywgICAgICAgICAgICAgICAg XAo+Pj4+ICAgICAgICAgICAgdGVtcCA9IEFMSUdOKHN0YXJ0KzEsIDFVTEwgPDwgR0VOOF9QTUw0 RV9TSElGVCkgLSBzdGFydCwgICAgXAo+Pj4+ICAgICAgICAgICAgdGVtcCA9IG1pbih0ZW1wLCBs ZW5ndGgpLCAgICAgICAgICAgICAgICAgICAgXAo+Pj4KPj4+IFRoZSBtYW4gcGFnZSBmb3IgQyBv cGVyYXRvcnMgdGVsbHMgdXM6Cj4+Pgo+Pj4gICAgICAgICBPcGVyYXRvciAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgQXNzb2NpYXRpdml0eQo+Pj4gICAgICAgICAoKSBbXSAtPiAuICAgICAg ICAgICAgICAgICAgICAgICAgICAgbGVmdCB0byByaWdodAo+Pj4gICAgICAgICAhIH4gKysgLS0g KyAtICh0eXBlKSAqICYgc2l6ZW9mICAgICAgcmlnaHQgdG8gbGVmdAo+Pj4gICAgICAgICAqIC8g JSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCB0byByaWdodAo+Pj4gICAgICAg ICArIC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCB0byByaWdodAo+Pj4g ICAgICAgICA8PCA+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCB0byByaWdo dAo+Pj4gICAgICAgICA8IDw9ID4gPj0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCB0 byByaWdodAo+Pj4gICAgICAgICA9PSAhPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bGVmdCB0byByaWdodAo+Pj4gICAgICAgICAmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbGVmdCB0byByaWdodAo+Pj4gICAgICAgICBeICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbGVmdCB0byByaWdodAo+Pj4gICAgICAgICB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbGVmdCB0byByaWdodAo+Pj4gICAgICAgICAmJiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCB0byByaWdodAo+Pj4gICAgICAgICB8fCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCB0byByaWdodAo+Pj4gICAgICAgICA/ OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQgdG8gbGVmdAo+Pj4gICAg ICAgICA9ICs9IC09ICo9IC89ICU9IDw8PSA+Pj0gJj0gXj0gfD0gICAgcmlnaHQgdG8gbGVmdAo+ Pj4gICAgICAgICAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCB0byBy aWdodAo+Pj4KPj4+IFNvIHRoZXJlJ3MgYSBwcm9ibGVtIHdpdGggdGhlIGFib3ZlIGNvZGUsIGJl Y2F1c2UgdGhlIGNvbW1hIG9wZXJhdG9yIGlzCj4+PiBMT1dFUiBwcmVjZWRlbmNlIHRoYW4gZWl0 aGVyIGFzc2lnbm1lbnQgb3IgPzogWW91J2QgbmVlZCB0byBwdXQgdGhlCj4+PiBwYXJlbnRoZXNl cyBhcm91bmQgdGhlIChwZHAgPSAuLi4gLCAxKSBzZWN0aW9uLCBub3QganVzdCB0aGUgYXNzaWdu bWVudC4KPj4+Cj4+PiBPciBmb3IgeWV0IGFub3RoZXIgdmFyaWF0aW9uLCBob3cgYWJvdXQ6Cj4+ Pgo+Pj4gI2RlZmluZSBnZW44X2Zvcl9lYWNoX3BkcGUocGQsIHBkcCwgc3RhcnQsIGxlbmd0aCwg dGVtcCwgaXRlcikgICAgICAgICBcCj4+PiAgICAgICAgICBmb3IgKGl0ZXIgPSBnZW44X3BkcGVf aW5kZXgoc3RhcnQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4+PiAgICAgICAgICAg ICAgIGl0ZXIgPCBJOTE1X1BEUEVTX1BFUl9QRFAoZGV2KSAmJiAgICAgICAgICAgICAgICAgICAg ICAgICBcCj4+PiAgICAgICAgICAgICAgICAgIChwZCA9IChwZHApLT5wYWdlX2RpcmVjdG9yeVtp dGVyXSwgbGVuZ3RoID4gMCk7ICAgICAgICBcCj4+PiAgICAgICAgICAgICAgIGl0ZXIrKywgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4+PiAgICAg ICAgICAgICAgIHRlbXAgPSBBTElHTihzdGFydCsxLCAxIDw8IEdFTjhfUERQRV9TSElGVCkgLSBz dGFydCwgICAgICBcCj4+PiAgICAgICAgICAgICAgIHRlbXAgPSBtaW4odGVtcCwgbGVuZ3RoKSwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4+PiAgICAgICAgICAgICAgIHN0YXJ0 ICs9IHRlbXAsIGxlbmd0aCAtPSB0ZW1wKQo+Pj4KPj4+ICNkZWZpbmUgZ2VuOF9mb3JfZWFjaF9w bWw0ZShwZHAsIHBtbDQsIHN0YXJ0LCBsZW5ndGgsIHRlbXAsIGl0ZXIpICAgICAgXAo+Pj4gICAg ICAgICAgZm9yIChpdGVyID0gZ2VuOF9wbWw0ZV9pbmRleChzdGFydCk7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAo+Pj4gICAgICAgICAgICAgICBpdGVyIDwgR0VOOF9QTUw0RVNfUEVSX1BN TDQgJiYgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+Pj4gICAgICAgICAgICAgICAgICAo cGRwID0gKHBtbDQpLT5wZHBzW2l0ZXJdLCBsZW5ndGggPiAwKTsgICAgICAgICAgICAgICAgXAo+ Pj4gICAgICAgICAgICAgICBpdGVyKyssICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAo+Pj4gICAgICAgICAgICAgICB0ZW1wID0gQUxJR04oc3RhcnQr MSwgMVVMTCA8PCBHRU44X1BNTDRFX1NISUZUKSAtIHN0YXJ0LCAgXAo+Pj4gICAgICAgICAgICAg ICB0ZW1wID0gbWluKHRlbXAsIGxlbmd0aCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAo+Pj4gICAgICAgICAgICAgICBzdGFydCArPSB0ZW1wLCBsZW5ndGggLT0gdGVtcCkKPj4+ Cj4+PiB3aXRoIG5vIHVnbHkgPzogYXQgYWxsIDopCj4+Cj4+IFRoaXMgYWxzbyB3b3Jrcy4KPj4K Pj4gU2luY2UgaXQncyBhIGNoYW5nZSBmb3Igbm90IGEgcmVhbCBpc3N1ZSwgSSBkb24ndCBoYXZl IGEgcHJlZmVyZW5jZS4KPj4gSSBjYW4gc2VuZCBlaXRoZXIuCj4KPiBZZWFoLCBzaW5jZSA/OiBp cyBhIHRlcm5hcnkgb3BlcmF0b3IgcGFyc2luZyBpbXBsaWNpdGx5IGFkZHMgdGhlICgpIGluIHRo ZQo+IG1pZGRsZSBhbmQgYWx3YXlzIHBhcnNlcyBpdCBhcyBhID8gKGIpIDogYy4gSWYgbG93ZXIt bGV2ZWwgb3BlcmF0b3JzIGluCj4gdGhlIG1pZGRsZSBjb3VsZCBzcGxpdCB0aGUgdGVybmFyeSBv cGVyYXRvciB0aGVuIGl0IHdvdWxkIHJlc3VsdCBpbgo+IHBhcnNpbmcgZmFpbCAoc2luYyA/IHdp dGhvdXQgdGhlIDogaXMganVzdCB1c2VsZXNzKS4gU28gbGd0bS4gU29tZW9uZQo+IHdpbGxpbmcg dG8gc21hY2sgYW4gci1iIG9udG8gdGhlIHBhdGNoPwo+IC1EYW5pZWwKCkhtbW0gLi4uIGl0IGZh aWxlZCB0byBjb21waWxlIHdoZW4gSSB0cmllZCBpdCB5ZXN0ZXJkYXksIGJ1dCBJIHRoaW5rIEkg Cm11c3QgaGF2ZSBib2RnZWQgdGhlIGNvcHlwYXN0ZSBmcm9tIHRoZSBlbWFpbCB0byB0aGUgaGVh ZGVyIGZpbGUsIGFuZCAKdGhlbiBqdXN0IGFzc3VtZWQgdGhlIGVycm9yIG1lc3NhZ2UgbWVhbnQg c29tZXRoaW5nIHdhcyB3cm9uZyB3aXRoIHRoZSAKd2F5IGFsbCB0aG9zZSBsb3ctcHJlY2VkZW5j ZSBvcGVyYXRvcnMgd2VyZSBzdGFja2VkIHRvZ2V0aGVyLiBBbnl3YXkgSSAKanVzdCBkaWQgaXQg YWdhaW4gYW5kIGl0IGNvbXBpbGVzIE9LIG5vdywgc28gaXQgZ2V0cyBteQoKUmV2aWV3ZWQtYnk6 IERhdmUgR29yZG9uIDxkYXZpZC5zLmdvcmRvbkBpbnRlbC5jb20+CgouLi4gYWx0aG91Z2ggSSBz dGlsbCB0aGluayBteSB2ZXJzaW9uIGlzIChzbGlnaHRseSkgZWFzaWVyIHRvIHJlYWQuIE9yIApp dCBjb3VsZCBiZSBpbXByb3ZlZCBldmVuIG1vcmUgYnkgbW92aW5nIHRoZSBpbmNyZW1lbnQgb2Yg J2l0ZXInIHRvIHRoZSAKZW5kLCBtYWtpbmcgaXQgb25lIGxpbmUgc2hvcnRlciBhbmQgcGVyaGFw cyBoZWxwaW5nIHRoZSBjb21waWxlciBhIGxpdHRsZSA6KQoKI2RlZmluZSBnZW44X2Zvcl9lYWNo X3BtbDRlKHBkcCwgcG1sNCwgc3RhcnQsIGxlbmd0aCwgdGVtcCwgaXRlcikgICAgICBcCiAgICAg ICAgIGZvciAoaXRlciA9IGdlbjhfcG1sNGVfaW5kZXgoc3RhcnQpOyAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKICAgICAgICAgICAgICBpdGVyIDwgR0VOOF9QTUw0RVNfUEVSX1BNTDQgJiYg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgIChwZHAgPSAocG1s NCktPnBkcHNbaXRlcl0sIGxlbmd0aCA+IDApOyAgICAgICAgICAgICAgICBcCiAgICAgICAgICAg ICAgdGVtcCA9IEFMSUdOKHN0YXJ0KzEsIDFVTEwgPDwgR0VOOF9QTUw0RV9TSElGVCkgLSBzdGFy dCwgIFwKICAgICAgICAgICAgICB0ZW1wID0gbWluKHRlbXAsIGxlbmd0aCksICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgIHN0YXJ0ICs9IHRlbXAsIGxlbmd0 aCAtPSB0ZW1wLCArK2l0ZXIpCgpPciwgbm90aW5nIHRoYXQgJ3RlbXAnIGlzIG5ldmVyIHVzZWQg aW4gdGhlIGdlbmVyYXRlZCBsb29wIGJvZGllcywgd2UgCmNvdWxkIGVsaW1pbmF0ZSB0aGUgcGFy YW1ldGVyIGFuZCBtYWtlIGl0IGxvY2FsIHRvIHRoZSBsb29wIGhlYWRlciA6KQoKI2RlZmluZSBn ZW44X2Zvcl9lYWNoX3BtbDRlKHBkcCwgcG1sNCwgc3RhcnQsIGxlbmd0aCwgaXRlcikgICAgICAg ICAgICBcCiAgICAgICAgIGZvciAoaXRlciA9IGdlbjhfcG1sNGVfaW5kZXgoc3RhcnQpOyAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICBpdGVyIDwgR0VOOF9QTUw0RVNf UEVSX1BNTDQgJiYgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAg IChwZHAgPSAocG1sNCktPnBkcHNbaXRlcl0sIGxlbmd0aCA+IDApOyAgICAgICAgICAgICAgICBc CiAgICAgICAgICAgICAgKHsgdTY0IHRlbXAgPSBBTElHTihzdGFydCsxLCAxVUxMIDw8IEdFTjhf UE1MNEVfU0hJRlQpOyAgIFwKICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IG1pbih0ZW1wIC0g c3RhcnQsIGxlbmd0aCk7ICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICBz dGFydCArPSB0ZW1wLCBsZW5ndGggLT0gdGVtcDsgfSksICAgICAgICAgICAgICAgICBcCiAgICAg ICAgICAgICAgICAgKytpdGVyKQoKLkRhdmUuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAo=