From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ben Skeggs Subject: Re: [PATCH] pll/gk104: fix PLL instability due to bad configuration with gddr5 Date: Wed, 14 Oct 2015 08:53:47 +1000 Message-ID: <561D8B7B.4000208@gmail.com> References: <1444681109-380-1-git-send-email-nouveau@karolherbst.de> <1444681109-380-2-git-send-email-nouveau@karolherbst.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1444681109-380-2-git-send-email-nouveau-lIBOoy2+GI7scQ4cX5LuPg@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: nouveau-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Nouveau" To: Karol Herbst , nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: nouveau.vger.kernel.org LS0tLS1CRUdJTiBQR1AgU0lHTkVEIE1FU1NBR0UtLS0tLQpIYXNoOiBTSEEyNTYKCk9uIDEwLzEz LzIwMTUgMDY6MTggQU0sIEthcm9sIEhlcmJzdCB3cm90ZToKPiB0aGlzIHBhdGNoIHVzZXMgYW4g YXBwcm9hY2ggY2xvc2VyIHRvIHRoZSBudmlkaWEgZHJpdmVyIHRvIAo+IGNvbmZpZ3VyZSBib3Ro IFBMTHMgZm9yIGhpZ2ggZ2RkcjUgbWVtb3J5IGNsb2NrcyAodXN1YWxseSBhYm92ZSAKPiAyNDAw TUh6KQo+IAo+IHByZXZpb3VzbHkgbm91dmVhdSB1c2VkIHRoZSBvbmUgUExMIGFzIGl0IHdhcyB1 c2VkIGZvciB0aGUgbG93ZXIgCj4gY2xvY2tzIGFuZCBqdXN0IGFkanVzdGVkIHRoZSBzZWNvbmQg UExMIHRvIGdldCBhcyBjbG9zZSBhcyBwb3NzaWJsZQo+IHRvIHRoZSByZXF1ZXN0ZWQgY2xvY2su IFRoaXMgbWVhbnMgZm9yIG15IGNhcmQsIHRoYXQgSSBnb3QgYSA0MDUwCj4gTUh6IGNsb2NrIGFs bHRob3VnaCA0MDA4IE1IeiB3YXMgcmVxdWVzdGVkLgo+IAo+IG5vdyB0aGUgZHJpdmVyIGl0ZXJh dGVzIG92ZXIgYSBsaXN0IG9mIFBMTCBjb25maWd1cmF0aW9uIGFsc28gdXNlZAo+ICBieSB0aGUg bnZpZGlhIGRyaXZlciBhbmQgdGhlbiBhZGp1c3QgdGhlIHNlY29uZCBQTEwgdG8gZ2V0IG5lYXIg Cj4gdGhlIHJlcXVlc3RlZCBjbG9jay4gQWxzbyBpdCBob2xkIHRvIHNvbWUgcmVzdHJpY3Rpb24g SSBmb3VuZCB3aGlsZQo+IGFuYWx5emluZyB0aGUgUExMIGNvbmZpZ3VyYXRpb25zCj4gCj4gVGhp cyB3b24ndCBmaXggYWxsIGdkZHI1IGhpZ2ggY2xvY2sgaXNzdWVzIGl0c2VsZiwgYnV0IGl0IHNo b3VsZCBiZQo+IGZpbmUgb24gaHlicmlkIGdwdSBzeXN0ZW1zIGFzIGZvdW5kIG9uIG1hbnkgbGFw dG9wcyB0aGVzZSBkYXlzLiAKPiBBbHNvIHN3aXRjaGluZyB3aGlsZSBub3JtYWwgZGVza3RvcCB1 c2FnZSBzaG91bGQgYmUgYSBsb3QgbW9yZSAKPiBzdGFibGUgdGhhbiBiZWZvcmUuCkdpdmVuIHRo YXQgd2UgcmVhbGx5IGhhdmUgbm8gYmV0dGVyIGlkZWFzIHJpZ2h0IG5vdywgSSB0aGluayB0aGUg cGF0Y2gKaXMgYmFzaWNhbGx5IGZpbmUuCgpJIHRoaW5rIHRob3VnaCwgdGhhdCBnaXZlbiB0aGVz ZSBQTExzIGFyZSBsaW1pdGVkIHRvIEZCLCB0aGF0IHlvdSBtYXkKYXMgd2VsbCBqdXN0IHN0aWNr IHRoZSBjb2RlIGluIHN1YmRldi9mYi9yYW1nazEwNC5jIGFuZCBiZSBkb25lIHdpdGgKaXQsIHRo ZXJlJ3Mgbm8gbmVlZCBmb3IgaXQgdG8gbGl2ZSBpbiBzdWJkZXYvY2xrIGF0IGFsbC4KCkJlbi4K Cj4gCj4gU2lnbmVkLW9mZi1ieTogS2Fyb2wgSGVyYnN0IDxub3V2ZWF1QGthcm9saGVyYnN0LmRl PiAtLS0gCj4gZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvY2xrL0tidWlsZCAgICAgfCAgMSArIAo+ IGRybS9ub3V2ZWF1L252a20vc3ViZGV2L2Nsay9wbGwuaCAgICAgIHwgIDUgKysrIAo+IGRybS9u b3V2ZWF1L252a20vc3ViZGV2L2Nsay9wbGxnazEwNC5jIHwgNzcgCj4gKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKyAKPiBkcm0vbm91dmVhdS9udmttL3N1YmRldi9jbGsvcGxsZ3Qy MTUuYyB8ICA2ICsrKyAKPiBkcm0vbm91dmVhdS9udmttL3N1YmRldi9mYi9yYW1nazEwNC5jICB8 IDM5ICsrKysrKystLS0tLS0tLS0tIDUgCj4gZmlsZXMgY2hhbmdlZCwgMTA1IGluc2VydGlvbnMo KyksIDIzIGRlbGV0aW9ucygtKSBjcmVhdGUgbW9kZSAKPiAxMDA2NDQgZHJtL25vdXZlYXUvbnZr bS9zdWJkZXYvY2xrL3BsbGdrMTA0LmMKPiAKPiBkaWZmIC0tZ2l0IGEvZHJtL25vdXZlYXUvbnZr bS9zdWJkZXYvY2xrL0tidWlsZCAKPiBiL2RybS9ub3V2ZWF1L252a20vc3ViZGV2L2Nsay9LYnVp bGQgaW5kZXggZWQ3NzE3Yi4uNWFjMjNmZSAxMDA2NDQgCj4gLS0tIGEvZHJtL25vdXZlYXUvbnZr bS9zdWJkZXYvY2xrL0tidWlsZCArKysgCj4gYi9kcm0vbm91dmVhdS9udmttL3N1YmRldi9jbGsv S2J1aWxkIEBAIC0xMSwzICsxMSw0IEBAIG52a20teSArPSAKPiBudmttL3N1YmRldi9jbGsvZ2sy MGEubwo+IAo+IG52a20teSArPSBudmttL3N1YmRldi9jbGsvcGxsbnYwNC5vIG52a20teSArPSAK PiBudmttL3N1YmRldi9jbGsvcGxsZ3QyMTUubyArbnZrbS15ICs9IG52a20vc3ViZGV2L2Nsay9w bGxnazEwNC5vIAo+IGRpZmYgLS1naXQgYS9kcm0vbm91dmVhdS9udmttL3N1YmRldi9jbGsvcGxs LmggCj4gYi9kcm0vbm91dmVhdS9udmttL3N1YmRldi9jbGsvcGxsLmggaW5kZXggNDQwMjBhMy4u MWY1ZTBhMCAxMDA2NDQgCj4gLS0tIGEvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvY2xrL3BsbC5o ICsrKyAKPiBiL2RybS9ub3V2ZWF1L252a20vc3ViZGV2L2Nsay9wbGwuaCBAQCAtNCw4ICs0LDEz IEBAIHN0cnVjdCAKPiBudmttX3N1YmRldjsgc3RydWN0IG52Ymlvc19wbGw7Cj4gCj4gK2ludCBj YWxjX3BsbF9jbG9jayhpbnQgZk4sIGludCBNLCBpbnQgTiwgaW50IFAsIGludCBjbGspOyArIGlu dCAKPiBudjA0X3BsbF9jYWxjKHN0cnVjdCBudmttX3N1YmRldiAqLCBzdHJ1Y3QgbnZiaW9zX3Bs bCAqLCB1MzIgZnJlcSwgCj4gaW50ICpOMSwgaW50ICpNMSwgaW50ICpOMiwgaW50ICpNMiwgaW50 ICpQKTsgaW50IAo+IGd0MjE1X3BsbF9jYWxjKHN0cnVjdCBudmttX3N1YmRldiAqLCBzdHJ1Y3Qg bnZiaW9zX3BsbCAqLCB1MzIKPiBmcmVxLCBpbnQgKk4sIGludCAqZk4sIGludCAqTSwgaW50ICpQ KTsgK2ludAo+IGdrMTA0X3BsbF9jYWxjX2hpY2xrKGludCB0YXJnZXRfa2h6LCBpbnQgY3J5c3Rh bCwgKwkJaW50ICpOMSwgaW50Cj4gKmZOMSwgaW50ICpNMSwgaW50ICpQMSwgKyBpbnQgKk4yLCBp bnQgKk0yLCBpbnQgKlAyKTsgI2VuZGlmIGRpZmYKPiAtLWdpdCBhL2RybS9ub3V2ZWF1L252a20v c3ViZGV2L2Nsay9wbGxnazEwNC5jIAo+IGIvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvY2xrL3Bs bGdrMTA0LmMgbmV3IGZpbGUgbW9kZSAxMDA2NDQgaW5kZXgKPiAwMDAwMDAwLi40ODYzZTY0IC0t LSAvZGV2L251bGwgKysrIAo+IGIvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvY2xrL3BsbGdrMTA0 LmMgQEAgLTAsMCArMSw3NyBAQCArLyogKyAqIAo+IENvcHlyaWdodCAyMDE1IEthcm9sIEhlcmJz dCArICogKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIAo+IGZyZWUgb2YgY2hhcmdl LCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUKPiBh bmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksICsgKiB0 byBkZWFsIGluCj4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3 aXRob3V0IGxpbWl0YXRpb24gKyAqCj4gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwg bWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsCj4gc3VibGljZW5zZSwgKyAqIGFuZC9vciBzZWxs IGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQKPiBwZXJzb25zIHRvIHdob20g dGhlICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KPiB0aGUg Zm9sbG93aW5nIGNvbmRpdGlvbnM6ICsgKiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Ug YW5kCj4gdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiArICogYWxs IGNvcGllcyBvcgo+IHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gKyAqICsg KiBUSEUgU09GVFdBUkUgSVMKPiBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9G IEFOWSBLSU5ELCBFWFBSRVNTIE9SICsgKgo+IElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJ TUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgCj4gTUVSQ0hBTlRBQklMSVRZLCArICogRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIAo+IE5PTklORlJJTkdFTUVOVC4gIElOIE5P IEVWRU5UIFNIQUxMICsgKiBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBPUgo+ICBBVVRIT1IoUykg QkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgKyAqIE9USEVSIExJQUJJTElUWSwK PiAgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCAr ICogQVJJU0lORyAKPiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZU V0FSRSBPUiBUSEUgVVNFIE9SICsgKiAKPiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUu ICsgKiArICogQXV0aG9yczogS2Fyb2wgSGVyYnN0ICsgKi8gCj4gKyNpbmNsdWRlICJwbGwuaCIg KyAraW50ICtnazEwNF9wbGxfY2FsY19oaWNsayhpbnQgdGFyZ2V0X2toeiwgaW50Cj4gY3J5c3Rh bCwgKwkJaW50ICpOMSwgaW50ICpmTjEsIGludCAqTTEsIGludCAqUDEsICsJCWludCAqTjIsIGlu dAo+ICpNMiwgaW50ICpQMikgK3sgKwlpbnQgYmVzdF9jbGsgPSAwLCBiZXN0X2VyciA9IHRhcmdl dF9raHosIHBfcmVmLAo+IG5fcmVmOyArCWJvb2wgdXBwZXIgPSBmYWxzZTsgKyArCSpNMSA9IDE7 ICsJLyogTSBoYXMgdG8gYmUgMSwKPiBvdGhlcndpc2UgaXQgZ2V0cyB1bnN0YWJsZSAqLyArCSpN MiA9IDE7ICsJLyogY2FuIGJlIDEgb3IgMiwgCj4gc3RpY2tpbmcgd2l0aCAxIGZvciBzaW1wbGlj aXR5ICovICsJKlAyID0gMTsgKyArCWZvciAocF9yZWYgPSAweDc7Cj4gIHBfcmVmID49IDB4NTsg LS1wX3JlZikgeyArCQlmb3IgKG5fcmVmID0gMHgyNTsgbl9yZWYgPD0gMHgyYjsgCj4gKytuX3Jl ZikgeyArCQkJaW50IGN1cl9OLCBjdXJfY2xrLCBjdXJfZXJyOyArICsJCQljdXJfY2xrID0gCj4g Y2FsY19wbGxfY2xvY2soMCwgMSwgbl9yZWYsIHBfcmVmLCBjcnlzdGFsKTsgKwkJCWN1cl9OID0g dGFyZ2V0X2toego+IC8gY3VyX2NsazsgKwkJCWN1cl9lcnIgPSB0YXJnZXRfa2h6IC0gY2FsY19w bGxfY2xvY2soMHhmMDAwLCAxLAo+IGN1cl9OLCAxLCBjdXJfY2xrKTsgKyArCQkJLyogd2UgZm91 bmQgYSBiZXR0ZXIgY29tYmluYXRpb24gKi8gKyBpZgo+IChjdXJfZXJyIDwgYmVzdF9lcnIpIHsg KwkJCQliZXN0X2VyciA9IGN1cl9lcnI7ICsJCQkJYmVzdF9jbGsgPQo+IGN1cl9jbGs7ICsJCQkJ Kk4yID0gY3VyX047ICsJCQkJKk4xID0gbl9yZWY7ICsJCQkJKlAxID0gcF9yZWY7ICsKPiB1cHBl ciA9IGZhbHNlOyArCQkJfSArICsJCQljdXJfTiArPSAxOyArIGN1cl9lcnIgPQo+IGNhbGNfcGxs X2Nsb2NrKDB4ZjAwMCwgMSwgY3VyX04sIDEsIGN1cl9jbGspIC0gdGFyZ2V0X2toejsgKwkJCWlm Cj4gKGN1cl9lcnIgPCBiZXN0X2VycikgeyArCQkJCWJlc3RfZXJyID0gY3VyX2VycjsgKwkJCQli ZXN0X2NsayA9Cj4gY3VyX2NsazsgKwkJCQkqTjIgPSBjdXJfTjsgKwkJCQkqTjEgPSBuX3JlZjsg KyAqUDEgPSBwX3JlZjsgKyB1cHBlcgo+ID0gdHJ1ZTsgKwkJCX0gKwkJfSArCX0gKyArCS8qIGFk anVzdCBmTiB0byBnZXQgY2xvc2VyIHRvIHRoZSB0YXJnZXQKPiBjbG9jayAqLyArCSpmTjEgPSAo dTE2KSgoKChiZXN0X2VyciAvICpOMiAqICpQMikgKiAoKlAxICogKk0xKSkgPDwKPiAxMykgLyBj cnlzdGFsKTsgKwlpZiAodXBwZXIpICsJCSpmTjEgPSAodTE2KSgxIC0gKmZOMSk7ICsgKwlyZXR1 cm4KPiBjYWxjX3BsbF9jbG9jaygqZk4xLCAxLCAqTjEsICpQMSwgY3J5c3RhbCk7ICt9IGRpZmYg LS1naXQKPiBhL2RybS9ub3V2ZWF1L252a20vc3ViZGV2L2Nsay9wbGxndDIxNS5jIAo+IGIvZHJt L25vdXZlYXUvbnZrbS9zdWJkZXYvY2xrL3BsbGd0MjE1LmMgaW5kZXggYzZmY2NkNi4uZmU5ODg2 YyAKPiAxMDA2NDQgLS0tIGEvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvY2xrL3BsbGd0MjE1LmMg KysrIAo+IGIvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvY2xrL3BsbGd0MjE1LmMgQEAgLTI3LDYg KzI3LDEyIEBAIAo+ICNpbmNsdWRlIDxzdWJkZXYvYmlvcy9wbGwuaD4KPiAKPiBpbnQgK2NhbGNf cGxsX2Nsb2NrKGludCBmTiwgaW50IE0sIGludCBOLCBpbnQgUCwgaW50IGNsaykgK3sgKyAKPiBy ZXR1cm4gKChjbGsgKiBOKSArICgoKHUxNikoZk4gKyA0MDk2KSAqIGNsaykgPj4gMTMpKSAvIChN ICogUCk7Cj4gK30gKyAraW50IGd0MjE1X3BsbF9jYWxjKHN0cnVjdCBudmttX3N1YmRldiAqc3Vi ZGV2LCBzdHJ1Y3QKPiBudmJpb3NfcGxsICppbmZvLCB1MzIgZnJlcSwgaW50ICpwTiwgaW50ICpw Zk4sIGludCAqcE0sIGludCAqUCkgewo+IGRpZmYgLS1naXQgYS9kcm0vbm91dmVhdS9udmttL3N1 YmRldi9mYi9yYW1nazEwNC5jIAo+IGIvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvZmIvcmFtZ2sx MDQuYyBpbmRleCA5ODkzNTU2Li5jNDM3M2JmIAo+IDEwMDY0NCAtLS0gYS9kcm0vbm91dmVhdS9u dmttL3N1YmRldi9mYi9yYW1nazEwNC5jICsrKyAKPiBiL2RybS9ub3V2ZWF1L252a20vc3ViZGV2 L2ZiL3JhbWdrMTA0LmMgQEAgLTk2OCwzMSArOTY4LDI0IEBAIAo+IGdrMTA0X3JhbV9jYWxjX3hp dHMoc3RydWN0IGdrMTA0X3JhbSAqcmFtLCBzdHJ1Y3QgbnZrbV9yYW1fZGF0YSAKPiAqbmV4dCkg KiBrZXBsZXIgYm9hcmRzLCBubyBpZGVhIGhvdy93aHkgdGhleSdyZSBjaG9zZW4uICovIHJlZmNs ayA9Cj4gbmV4dC0+ZnJlcTsgLQlpZiAocmFtLT5tb2RlID09IDIpIC0JCXJlZmNsayA9IGZ1Yy0+ bWVtcGxsLnJlZmNsazsgLQo+IC0JLyogY2FsY3VsYXRlIHJlZnBsbCBjb2VmZmljaWVudHMgKi8g LQlyZXQgPSAKPiBndDIxNV9wbGxfY2FsYyhzdWJkZXYsICZmdWMtPnJlZnBsbCwgcmVmY2xrLCAm cmFtLT5OMSwgLQo+ICZyYW0tPmZOMSwgJnJhbS0+TTEsICZyYW0tPlAxKTsgLQlmdWMtPm1lbXBs bC5yZWZjbGsgPSByZXQ7IC0JaWYKPiAocmV0IDw9IDApIHsgLQkJbnZrbV9lcnJvcihzdWJkZXYs ICJ1bmFibGUgdG8gY2FsYyByZWZwbGxcbiIpOyAtCj4gcmV0dXJuIC1FSU5WQUw7IC0JfSAtIC0J LyogY2FsY3VsYXRlIG1lbXBsbCBjb2VmZmljaWVudHMsIGlmIHdlJ3JlCj4gdXNpbmcgaXQgKi8g aWYgKHJhbS0+bW9kZSA9PSAyKSB7IC0JCS8qIHBvc3QtZGl2aWRlciBkb2Vzbid0Cj4gd29yay4u LiB0aGUgcmVnIHRha2VzIHRoZSB2YWx1ZXMgYnV0IC0JCSAqIGFwcGVhcnMgdG8gY29tcGxldGVs eQo+IGlnbm9yZSBpdC4gIHRoZXJlICppcyogYSBiaXQgYXQgLQkJICogYml0IDI4IHRoYXQgYXBw ZWFycyB0byBkaXZpZGUKPiB0aGUgY2xvY2sgYnkgMiBpZiBzZXQuIC0gKi8gLQkJZnVjLT5tZW1w bGwubWluX3AgPSAxOyAtCj4gZnVjLT5tZW1wbGwubWF4X3AgPSAyOyAtIC0JCXJldCA9IGd0MjE1 X3BsbF9jYWxjKHN1YmRldiwKPiAmZnVjLT5tZW1wbGwsIG5leHQtPmZyZXEsIC0gJnJhbS0+TjIs IE5VTEwsICZyYW0tPk0yLCAmcmFtLT5QMik7ICsKPiByZXQgPSBnazEwNF9wbGxfY2FsY19oaWNs ayhuZXh0LT5mcmVxLCBzdWJkZXYtPmRldmljZS0+Y3J5c3RhbCwgKyAKPiAmcmFtLT5OMSwgJnJh bS0+Zk4xLCAmcmFtLT5NMSwgJnJhbS0+UDEsICsJCQkJJnJhbS0+TjIsICZyYW0tPk0yLCAKPiAm cmFtLT5QMik7ICsJCWZ1Yy0+bWVtcGxsLnJlZmNsayA9IHJldDsgKwkJaWYgKHJldCA8PSAwKSB7 ICsgCj4gbnZrbV9lcnJvcihzdWJkZXYsICJ1bmFibGUgdG8gY2FsYyBwbGxzXG4iKTsgKwkJCXJl dHVybiAtRUlOVkFMOyArIAo+IH0gKwkJbnZrbV9kZWJ1ZyhzdWJkZXYsICJzdWNlc3NmdWxseSBj YWxjZWQgUExMcyBmb3IgY2xvY2sgJWkga0h6IiAKPiArCQkJCSIgKHJlZmNsb2NrOiAlaSBrSHop XG4iLCBuZXh0LT5mcmVxLCByZXQpOyArCX0gZWxzZSB7ICsJCS8qIAo+IGNhbGN1bGF0ZSByZWZw bGwgY29lZmZpY2llbnRzICovICsJCXJldCA9IGd0MjE1X3BsbF9jYWxjKHN1YmRldiwgCj4gJmZ1 Yy0+cmVmcGxsLCByZWZjbGssICZyYW0tPk4xLCArCQkJCSAgICAgJnJhbS0+Zk4xLCAmcmFtLT5N MSwgCj4gJnJhbS0+UDEpOyArIGZ1Yy0+bWVtcGxsLnJlZmNsayA9IHJldDsgaWYgKHJldCA8PSAw KSB7IC0gCj4gbnZrbV9lcnJvcihzdWJkZXYsICJ1bmFibGUgdG8gY2FsYyBtZW1wbGxcbiIpOyAr IG52a21fZXJyb3Ioc3ViZGV2LAo+ICJ1bmFibGUgdG8gY2FsYyByZWZwbGxcbiIpOyByZXR1cm4g LUVJTlZBTDsgfSB9Cj4gCi0tLS0tQkVHSU4gUEdQIFNJR05BVFVSRS0tLS0tClZlcnNpb246IEdu dVBHIHYyCgppUUljQkFFQkNBQUdCUUpXSFl0N0FBb0pFSFlMbkdKUWtwSDdmKzBQLzNUYzdLTzg3 VUJvdnZaVFhoL2N4UVhwCjBzWGgzbldkL004bUJva3FIUEZGS1R1WDVjaThxSk5sUkJLblFwOW4w R0tHZS90bElyb25uSkxvVjNoZEZadW4KU2g2Slc5NlN5b21XN0ZDejJaeHBwRTdzYXN2Y2ZjRWNs eWcrc3VNdGlDekZVbmJ1OHhZUm1JQWdmOFFDM0dVawpQaGNENUpmWnNVYkV4QTlROUZYQW1pSTZz N1BZSDVHUHo1WmR1MUk0dCtEaWh1dnNoOHp0RWtkS2lSVFpqQ2ZuCnA3eVZxMSt0ZDBLTzAxMWRG V2lvUmZRc3pMelY3bHVmdFBDSG9CZVpOMmIyamIzMnY5SGFRSHVROTFHbFkwVy8Kek5PMXpnVVFw eGJiM2Nia0JtaFQ4bGJRaU9yMTYwTVBxZUttM2x1OWZzMk1yWEtnNngrOGlQaXNCNmhUU3JoNgps SVc4V0U5U3dJbHFBVmJ6ZDRtYnVWYTFObmdZdFhCSzRMR2k5aFRmYlVNYlo2aEJrdW9WSVdOd0ZN eFJQZGtxCnZrWVJhd29ZT2lKelZkRDQvUzFnVUMxR3JEaWhaZmZoeEhLRys5Mlo0bzRrdEVlbXZ4 SDB2RTd1TTl2N1huSHoKVTJVQnlyT25GcFBhYk1Xcm9MSXdBa2VpL1FLSzdjN2R2S0NQOXEyekRp RjBCWGxxYXhPOVBnN2VWV1hsNWwwbwoyV0tYcFVnaGtrbHo3NFJ6TmUrMjA1alVmY2p3QXNFTUJR SWM5Kzczd2NHRkFuTHkvZmgvZG5KSXJJeXlyU25mCkRHVWJGekdYcjZrNC9PQkdINWIwMEZjcTE4 VVlyYnR5Mk9WWHUxcWY1YlpmMGVnb2Q4RDc1MVFQblF3ZU1ITUUKY1AzME1IMFpFVlBXR2NoYmJx MjgKPUV6aloKLS0tLS1FTkQgUEdQIFNJR05BVFVSRS0tLS0tCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCk5vdXZlYXUgbWFpbGluZyBsaXN0Ck5vdXZlYXVA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9ub3V2ZWF1Cg==