From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 05/12] dma-buf: add explicit buffer pinning Date: Wed, 17 Apr 2019 16:30:51 +0200 Message-ID: <20190417143051.GG13337@phenom.ffwll.local> References: <20190416183841.1577-1-christian.koenig@amd.com> <20190416183841.1577-6-christian.koenig@amd.com> <20190417142002.GE13337@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20190417142002.GE13337-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: Christian =?iso-8859-1?Q?K=F6nig?= , sumit.semwal-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, linux-media-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linaro-mm-sig-cunTk1MwBs8s++Sfvej+rw@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org T24gV2VkLCBBcHIgMTcsIDIwMTkgYXQgMDQ6MjA6MDJQTSArMDIwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBUdWUsIEFwciAxNiwgMjAxOSBhdCAwODozODozNFBNICswMjAwLCBDaHJpc3Rp YW4gS8O2bmlnIHdyb3RlOgo+ID4gQWRkIG9wdGlvbmFsIGV4cGxpY2l0IHBpbm5pbmcgY2FsbGJh Y2tzIGluc3RlYWQgb2YgaW1wbGljaXRseSBhc3N1bWUgdGhlCj4gPiBleHBvcnRlciBwaW5zIHRo ZSBidWZmZXIgd2hlbiBhIG1hcHBpbmcgaXMgY3JlYXRlZC4KPiA+IAo+ID4gU2lnbmVkLW9mZi1i eTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgo+IAo+IERvbid0 IHdlIG5lZWQgdGhpcyB0b2dldGhlciB3aXRoIHRoZSBpbnZhbGlkYXRlIGNhbGxiYWNrIGFuZCB0 aGUgZHluYW1pYwo+IHN0dWZmPyBBbHNvIEknbSBhc3N1bWluZyB0aGF0IHBpbi91bnBpbiBpcyBw cmV0dHkgbXVjaCByZXF1aXJlZCBmb3IKPiBkeW5hbWljIGJvLCBzbyBjb3VsZCB3ZSBsb29rIGF0 IHRoZXNlIGNhbGxiYWNrcyBpbnN0ZWFkIG9mIHRoZSBkeW5hbWljCj4gZmxhZyB5b3UgYWRkIGlu IHBhdGNoIDEuCj4gCj4gSSdtIGFzc3VtaW5nIGZvbGxvd2luZyBydWxlcyBob2xkOgo+IG5vIHBp bi91cGluIGZyb20gZXhwb3J0ZXI6Cj4gCj4gZG1hLWJ1ZiBpcyBub3QgZHluYW1pYywgYW5kIHBp bm5lZCBmb3IgdGhlIGR1cmF0aW9uIG9mIG1hcC91bm1hcC4gSSdtCj4gbm90IDEwMCUgc3VyZSB3 aGV0aGVyIHJlYWxseSBldmVyeW9uZSB3YW50cyB0aGUgbWFwcGluZyB0byBiZSBjYWNoZWQgZm9y Cj4gdGhlIGVudGlyZSBhdHRhY2htZW50LCBvbmx5IGRybV9wcmltZSBkb2VzIHRoYXQuIEFuZCB0 aGF0J3Mgbm90IHRoZSBvbmx5Cj4gZG1hLWJ1ZiBpbXBvcnRlci4KPiAKPiBwaW4vdW5waW4gY2Fs bHMgYXJlIG5vb3BzLgo+IAo+IHBpbi91bnBpbiBleGlzdCBpbiB0aGUgZXhwb3J0ZXIsIGJ1dCBp bXBvcnRlciBoYXMgbm90IHByb3ZpZGVkIGFuCj4gaW52YWxpZGF0ZSBjYWxsYmFjazoKPiAKPiBX ZSBtYXAgYXQgYXR0YWNoIHRpbWUsIGFuZCB3ZSBhbHNvIGhhdmUgdG8gcGluLCBzaW5jZSB0aGUg aW1wb3J0ZXIgY2FuJ3QKPiBoYW5kbGUgdGhlIGJ1ZmZlciBkaXNhcHBlYXJpbmcsIGF0IGF0dGFj aCB0aW1lLiBXZSB1bm1hcC91bnBpbiBhdCBkZXRhY2guCgpGb3IgdGhpcyBjYXNlIHdlIHNob3Vs ZCBoYXZlIGEgV0FSTiBpbiBwaW4vdW5waW4sIHRvIG1ha2Ugc3VyZSBpbXBvcnRlcnMKZG9uJ3Qg ZG8gc29tZXRoaW5nIHN0dXBpZC4gT25lIG1vcmUgdGhvdWdodCBiZWxvdyBvbiBwaW4vdW5waW4u Cgo+IHBpbi91bnBpbiBmcm9tIGV4cG9ydGVyLCBpbnZhbGlkYXRlIGZyb20gaW1wb3J0ZXI6Cj4g Cj4gRnVsbCBkeW5hbWljIG1hcHBpbmcuIFdlIGFzc3VtZSB0aGUgaW1wb3J0ZXIgd2lsbCBkbyBj YWNoaW5nLCBhdHRhY2gKPiBmZW5jZXMgYXMgbmVlZGVkLCBhbmQgcGluIHRoZSB1bmRlcmx5aW5n IGJvIHdoZW4gaXQgbmVlZHMgaXQgaXQKPiBwZXJtYW5lbnRseSwgd2l0aG91dCBhdHRhY2hpbmcg ZmVuY2VzIChpLmUuIHRoZSBzY2Fub3V0IGNhc2UpLgo+IAo+IEFzc3VtaW5nIEknbSBub3QgdGVy cmlibHkgb2ZmIHdpdGggbXkgdW5kZXJzdGFuZGluZywgdGhlbiBJIHRoaW5rIGl0J2QgYmUKPiBi ZXN0IHRvIGludHJvZHVjZSB0aGUgZW50aXJlIG5ldyBkbWEtYnVmIGFwaSBpbiB0aGUgZmlyc3Qg cGF0Y2gsIGFuZCBmbGVzaAo+IGl0IG91dCBsYXRlci4gSW5zdGVhZCBvZiBzcHJlYWQgb3ZlciBh IGZldyBwYXRjaGVzLiBQbHVzIHRoZSBhYm92ZSAobWF5YmUKPiBwcmV0dGllcikgYXMgYSBuaWNl IGtlcm5lbGRvYyBvdmVydmlldyBjb21tZW50IGZvciBob3cgZHluYW1pYyBkbWEtYnVmIGlzCj4g c3VwcG9zZWQgdG8gd29yayByZWFsbHkuCj4gLURhbmllbAo+IAo+ID4gLS0tCj4gPiAgZHJpdmVy cy9kbWEtYnVmL2RtYS1idWYuYyB8IDM5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwo+ID4gIGluY2x1ZGUvbGludXgvZG1hLWJ1Zi5oICAgfCAzNyArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrLS0tLS0tCj4gPiAgMiBmaWxlcyBjaGFuZ2VkLCA3MCBpbnNlcnRp b25zKCspLCA2IGRlbGV0aW9ucygtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEt YnVmL2RtYS1idWYuYyBiL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtYnVmLmMKPiA+IGluZGV4IGEzNzM4 ZmFiMzkyNy4uZjIzZmY4MzU1NTA1IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9kbWEtYnVmL2Rt YS1idWYuYwo+ID4gKysrIGIvZHJpdmVycy9kbWEtYnVmL2RtYS1idWYuYwo+ID4gQEAgLTYzMCw2 ICs2MzAsNDEgQEAgdm9pZCBkbWFfYnVmX2RldGFjaChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLCBz dHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gpCj4gPiAgfQo+ID4gIEVYUE9SVF9TWU1C T0xfR1BMKGRtYV9idWZfZGV0YWNoKTsKPiA+ICAKPiA+ICsvKioKPiA+ICsgKiBkbWFfYnVmX3Bp biAtIExvY2sgZG93biB0aGUgRE1BLWJ1Zgo+ID4gKyAqCj4gPiArICogQGRtYWJ1ZjoJW2luXQlE TUEtYnVmIHRvIGxvY2sgZG93bi4KPiA+ICsgKgo+ID4gKyAqIFJldHVybnM6Cj4gPiArICogMCBv biBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCj4gPiArICovCj4gPiAr aW50IGRtYV9idWZfcGluKHN0cnVjdCBkbWFfYnVmICpkbWFidWYpCgpIbSwgSSB0aGluayBpdCdk IGJlIGJldHRlciB0byBwaW4gdGhlIGF0dGFjaG1lbnQsIG5vdCB0aGUgdW5kZXJseWluZwpidWZm ZXIuIEF0dGFjaG1lbnQgaXMgdGhlIHRoaW4gdGhlIGltcG9ydGVyIHdpbGwgaGF2ZSB0byBwaW4s IGFuZCBpdCdzIGF0CmF0dGFjaC9kZXRhY2ggdGltZSB3aGVyZSBkbWEtYnVmIG5lZWRzIHRvIHBp biBmb3IgaW1wb3J0ZXJzIHdobyBkb24ndAp1bmRlcnN0YW5kIGR5bmFtaWMgYnVmZmVyIHNoYXJp bmcuCgpQbHVzIHdoZW4gd2UgcHV0IHRoYXQgb250byBhdHRhY2htZW50cywgd2UgY2FuIGRvIGEK CglXQVJOX09OKCFhdHRhY2gtPmludmFsaWRhdGUpOwoKc2FuaXR5IGNoZWNrLiBJIHRoaW5rIHRo YXQgd291bGQgYmUgZ29vZCB0byBoYXZlLgotRGFuaWVsCgo+ID4gK3sKPiA+ICsJaW50IHJldCA9 IDA7Cj4gPiArCj4gPiArCXJlc2VydmF0aW9uX29iamVjdF9hc3NlcnRfaGVsZChkbWFidWYtPnJl c3YpOwo+ID4gKwo+ID4gKwlpZiAoZG1hYnVmLT5vcHMtPnBpbikKPiA+ICsJCXJldCA9IGRtYWJ1 Zi0+b3BzLT5waW4oZG1hYnVmKTsKPiA+ICsKPiA+ICsJcmV0dXJuIHJldDsKPiA+ICt9Cj4gPiAr RVhQT1JUX1NZTUJPTF9HUEwoZG1hX2J1Zl9waW4pOwo+ID4gKwo+ID4gKy8qKgo+ID4gKyAqIGRt YV9idWZfdW5waW4gLSBSZW1vdmUgbG9jayBmcm9tIERNQS1idWYKPiA+ICsgKgo+ID4gKyAqIEBk bWFidWY6CVtpbl0JRE1BLWJ1ZiB0byB1bmxvY2suCj4gPiArICovCj4gPiArdm9pZCBkbWFfYnVm X3VucGluKHN0cnVjdCBkbWFfYnVmICpkbWFidWYpCj4gPiArewo+ID4gKwlyZXNlcnZhdGlvbl9v YmplY3RfYXNzZXJ0X2hlbGQoZG1hYnVmLT5yZXN2KTsKPiA+ICsKPiA+ICsJaWYgKGRtYWJ1Zi0+ b3BzLT51bnBpbikKPiA+ICsJCWRtYWJ1Zi0+b3BzLT51bnBpbihkbWFidWYpOwo+ID4gK30KPiA+ ICtFWFBPUlRfU1lNQk9MX0dQTChkbWFfYnVmX3VucGluKTsKPiA+ICsKPiA+ICAvKioKPiA+ICAg KiBkbWFfYnVmX21hcF9hdHRhY2htZW50X2xvY2tlZCAtIE1hcHMgdGhlIGJ1ZmZlciBpbnRvIF9k ZXZpY2VfIGFkZHJlc3Mgc3BhY2UKPiA+ICAgKiB3aXRoIHRoZSByZXNlcnZhdGlvbiBsb2NrIGhl bGQuIElzIGEgd3JhcHBlciBmb3IgbWFwX2RtYV9idWYoKSBvZiB0aGUKPiA+IEBAIC02NjYsNiAr NzAxLDggQEAgZG1hX2J1Zl9tYXBfYXR0YWNobWVudF9sb2NrZWQoc3RydWN0IGRtYV9idWZfYXR0 YWNobWVudCAqYXR0YWNoLAo+ID4gIAkgKi8KPiA+ICAJaWYgKGF0dGFjaC0+aW52YWxpZGF0ZSkK PiA+ICAJCWxpc3RfZGVsKCZhdHRhY2gtPm5vZGUpOwo+ID4gKwllbHNlCj4gPiArCQlkbWFfYnVm X3BpbihhdHRhY2gtPmRtYWJ1Zik7Cj4gPiAgCXNnX3RhYmxlID0gYXR0YWNoLT5kbWFidWYtPm9w cy0+bWFwX2RtYV9idWYoYXR0YWNoLCBkaXJlY3Rpb24pOwo+ID4gIAlpZiAoYXR0YWNoLT5pbnZh bGlkYXRlKQo+ID4gIAkJbGlzdF9hZGQoJmF0dGFjaC0+bm9kZSwgJmF0dGFjaC0+ZG1hYnVmLT5h dHRhY2htZW50cyk7Cj4gPiBAQCAtNzM1LDYgKzc3Miw4IEBAIHZvaWQgZG1hX2J1Zl91bm1hcF9h dHRhY2htZW50X2xvY2tlZChzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gsCj4gPiAg Cj4gPiAgCWF0dGFjaC0+ZG1hYnVmLT5vcHMtPnVubWFwX2RtYV9idWYoYXR0YWNoLCBzZ190YWJs ZSwKPiA+ICAJCQkJCQlkaXJlY3Rpb24pOwo+ID4gKwlpZiAoIWF0dGFjaC0+aW52YWxpZGF0ZSkK PiA+ICsJCWRtYV9idWZfdW5waW4oYXR0YWNoLT5kbWFidWYpOwo+ID4gIH0KPiA+ICBFWFBPUlRf U1lNQk9MX0dQTChkbWFfYnVmX3VubWFwX2F0dGFjaG1lbnRfbG9ja2VkKTsKPiA+ICAKPiA+IGRp ZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RtYS1idWYuaCBiL2luY2x1ZGUvbGludXgvZG1hLWJ1 Zi5oCj4gPiBpbmRleCBlY2U0NjM4MzU5YTguLmE2MTViNzRlNTg5NCAxMDA2NDQKPiA+IC0tLSBh L2luY2x1ZGUvbGludXgvZG1hLWJ1Zi5oCj4gPiArKysgYi9pbmNsdWRlL2xpbnV4L2RtYS1idWYu aAo+ID4gQEAgLTEwMCwxNCArMTAwLDQwIEBAIHN0cnVjdCBkbWFfYnVmX29wcyB7Cj4gPiAgCSAq Lwo+ID4gIAl2b2lkICgqZGV0YWNoKShzdHJ1Y3QgZG1hX2J1ZiAqLCBzdHJ1Y3QgZG1hX2J1Zl9h dHRhY2htZW50ICopOwo+ID4gIAo+ID4gKwkvKioKPiA+ICsJICogQHBpbl9kbWFfYnVmOgo+ID4g KwkgKgo+ID4gKwkgKiBUaGlzIGlzIGNhbGxlZCBieSBkbWFfYnVmX3BpbiBhbmQgbGV0cyB0aGUg ZXhwb3J0ZXIga25vdyB0aGF0IGFuCj4gPiArCSAqIGltcG9ydGVyIGFzc3VtZXMgdGhhdCB0aGUg RE1BLWJ1ZiBjYW4ndCBiZSBpbnZhbGlkYXRlZCBhbnkgbW9yZS4KPiA+ICsJICoKPiA+ICsJICog VGhpcyBpcyBjYWxsZWQgd2l0aCB0aGUgZG1hYnVmLT5yZXN2IG9iamVjdCBsb2NrZWQuCj4gPiAr CSAqCj4gPiArCSAqIFRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwuCj4gPiArCSAqCj4gPiArCSAq IFJldHVybnM6Cj4gPiArCSAqCj4gPiArCSAqIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3Ig Y29kZSBvbiBmYWlsdXJlLgo+ID4gKwkgKi8KPiA+ICsJaW50ICgqcGluKShzdHJ1Y3QgZG1hX2J1 ZiAqKTsKPiA+ICsKPiA+ICsJLyoqCj4gPiArCSAqIEB1bnBpbl9kbWFfYnVmOgo+ID4gKwkgKgo+ ID4gKwkgKiBUaGlzIGlzIGNhbGxlZCBieSBkbWFfYnVmX3VucGluIGFuZCBsZXRzIHRoZSBleHBv cnRlciBrbm93IHRoYXQgYW4KPiA+ICsJICogaW1wb3J0ZXIgZG9lc24ndCBuZWVkIHRvIHRoZSBE TUEtYnVmIHRvIHN0YXkgd2VyZSBpdCBpcyBhbnkgbW9yZS4KPiA+ICsJICoKPiA+ICsJICogVGhp cyBpcyBjYWxsZWQgd2l0aCB0aGUgZG1hYnVmLT5yZXN2IG9iamVjdCBsb2NrZWQuCj4gPiArCSAq Cj4gPiArCSAqIFRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwuCj4gPiArCSAqLwo+ID4gKwl2b2lk ICgqdW5waW4pKHN0cnVjdCBkbWFfYnVmICopOwo+ID4gKwo+ID4gIAkvKioKPiA+ICAJICogQG1h cF9kbWFfYnVmOgo+ID4gIAkgKgo+ID4gIAkgKiBUaGlzIGlzIGNhbGxlZCBieSBkbWFfYnVmX21h cF9hdHRhY2htZW50KCkgYW5kIGlzIHVzZWQgdG8gbWFwIGEKPiA+ICAJICogc2hhcmVkICZkbWFf YnVmIGludG8gZGV2aWNlIGFkZHJlc3Mgc3BhY2UsIGFuZCBpdCBpcyBtYW5kYXRvcnkuIEl0Cj4g PiAtCSAqIGNhbiBvbmx5IGJlIGNhbGxlZCBpZiBAYXR0YWNoIGhhcyBiZWVuIGNhbGxlZCBzdWNj ZXNzZnVsbHkuIFRoaXMKPiA+IC0JICogZXNzZW50aWFsbHkgcGlucyB0aGUgRE1BIGJ1ZmZlciBp bnRvIHBsYWNlLCBhbmQgaXQgY2Fubm90IGJlIG1vdmVkCj4gPiAtCSAqIGFueSBtb3JlCj4gPiAr CSAqIGNhbiBvbmx5IGJlIGNhbGxlZCBpZiBAYXR0YWNoIGhhcyBiZWVuIGNhbGxlZCBzdWNjZXNz ZnVsbHkuCj4gPiAgCSAqCj4gPiAgCSAqIFRoaXMgY2FsbCBtYXkgc2xlZXAsIGUuZy4gd2hlbiB0 aGUgYmFja2luZyBzdG9yYWdlIGZpcnN0IG5lZWRzIHRvIGJlCj4gPiAgCSAqIGFsbG9jYXRlZCwg b3IgbW92ZWQgdG8gYSBsb2NhdGlvbiBzdWl0YWJsZSBmb3IgYWxsIGN1cnJlbnRseSBhdHRhY2hl ZAo+ID4gQEAgLTE0OCw5ICsxNzQsNiBAQCBzdHJ1Y3QgZG1hX2J1Zl9vcHMgewo+ID4gIAkgKgo+ ID4gIAkgKiBUaGlzIGlzIGNhbGxlZCBieSBkbWFfYnVmX3VubWFwX2F0dGFjaG1lbnQoKSBhbmQg c2hvdWxkIHVubWFwIGFuZAo+ID4gIAkgKiByZWxlYXNlIHRoZSAmc2dfdGFibGUgYWxsb2NhdGVk IGluIEBtYXBfZG1hX2J1ZiwgYW5kIGl0IGlzIG1hbmRhdG9yeS4KPiA+IC0JICogSXQgc2hvdWxk IGFsc28gdW5waW4gdGhlIGJhY2tpbmcgc3RvcmFnZSBpZiB0aGlzIGlzIHRoZSBsYXN0IG1hcHBp bmcKPiA+IC0JICogb2YgdGhlIERNQSBidWZmZXIsIGl0IHRoZSBleHBvcnRlciBzdXBwb3J0cyBi YWNraW5nIHN0b3JhZ2UKPiA+IC0JICogbWlncmF0aW9uLgo+ID4gIAkgKgo+ID4gIAkgKiBUaGlz IGlzIGFsd2F5cyBjYWxsZWQgd2l0aCB0aGUgZG1hYnVmLT5yZXN2IG9iamVjdCBsb2NrZWQgd2hl bgo+ID4gIAkgKiBub19zZ3RfY2FjaGUgaXMgdHJ1ZS4KPiA+IEBAIC00NDIsNiArNDY1LDggQEAg aW50IGRtYV9idWZfZmQoc3RydWN0IGRtYV9idWYgKmRtYWJ1ZiwgaW50IGZsYWdzKTsKPiA+ICBz dHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1Zl9nZXQoaW50IGZkKTsKPiA+ICB2b2lkIGRtYV9idWZfcHV0 KHN0cnVjdCBkbWFfYnVmICpkbWFidWYpOwo+ID4gIAo+ID4gK2ludCBkbWFfYnVmX3BpbihzdHJ1 Y3QgZG1hX2J1ZiAqZG1hYnVmKTsKPiA+ICt2b2lkIGRtYV9idWZfdW5waW4oc3RydWN0IGRtYV9i dWYgKmRtYWJ1Zik7Cj4gPiAgc3RydWN0IHNnX3RhYmxlICpkbWFfYnVmX21hcF9hdHRhY2htZW50 X2xvY2tlZChzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICosCj4gPiAgCQkJCQkgICAgICAgZW51 bSBkbWFfZGF0YV9kaXJlY3Rpb24pOwo+ID4gIHN0cnVjdCBzZ190YWJsZSAqZG1hX2J1Zl9tYXBf YXR0YWNobWVudChzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICosCj4gPiAtLSAKPiA+IDIuMTcu MQo+ID4gCj4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Xwo+ID4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+ID4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNr dG9wLm9yZwo+ID4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9kcmktZGV2ZWwKPiAKPiAtLSAKPiBEYW5pZWwgVmV0dGVyCj4gU29mdHdhcmUgRW5naW5lZXIs IEludGVsIENvcnBvcmF0aW9uCj4gaHR0cDovL2Jsb2cuZmZ3bGwuY2gKCi0tIApEYW5pZWwgVmV0 dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZnds bC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQt Z2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZng=