From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 2/6] drm/i915: Support for creating Stolen memory backed objects Date: Fri, 11 Dec 2015 12:19:45 +0000 Message-ID: <566ABF61.70703@linux.intel.com> References: <1449665182-10054-1-git-send-email-ankitprasad.r.sharma@intel.com> <1449665182-10054-3-git-send-email-ankitprasad.r.sharma@intel.com> <5668357A.5050005@linux.intel.com> <1449832964.12247.151.camel@ankitprasad-desktop> 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 ESMTP id 851527A192 for ; Fri, 11 Dec 2015 04:19:48 -0800 (PST) In-Reply-To: <1449832964.12247.151.camel@ankitprasad-desktop> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ankitprasad Sharma Cc: intel-gfx@lists.freedesktop.org, akash.goel@intel.com, shashidhar.hiremath@intel.com List-Id: intel-gfx@lists.freedesktop.org Ck9uIDExLzEyLzE1IDExOjIyLCBBbmtpdHByYXNhZCBTaGFybWEgd3JvdGU6Cj4gT24gV2VkLCAy MDE1LTEyLTA5IGF0IDE0OjA2ICswMDAwLCBUdnJ0a28gVXJzdWxpbiB3cm90ZToKPj4gSGksCj4+ Cj4+IE9uIDA5LzEyLzE1IDEyOjQ2LCBhbmtpdHByYXNhZC5yLnNoYXJtYUBpbnRlbC5jb20gd3Jv dGU6Cj4+PiBGcm9tOiBBbmtpdHByYXNhZCBTaGFybWEgPGFua2l0cHJhc2FkLnIuc2hhcm1hQGlu dGVsLmNvbT4KPj4+Cj4+PiBFeHRlbmQgdGhlIGRybV9pOTE1X2dlbV9jcmVhdGUgc3RydWN0dXJl IHRvIGFkZCBzdXBwb3J0IGZvcgo+Pj4gY3JlYXRpbmcgU3RvbGVuIG1lbW9yeSBiYWNrZWQgb2Jq ZWN0cy4gQWRkZWQgYSBuZXcgZmxhZyB0aHJvdWdoCj4+PiB3aGljaCB1c2VyIGNhbiBzcGVjaWZ5 IHRoZSBwcmVmZXJlbmNlIHRvIGFsbG9jYXRlIHRoZSBvYmplY3QgZnJvbQo+Pj4gc3RvbGVuIG1l bW9yeSwgd2hpY2ggaWYgc2V0LCBhbiBhdHRlbXB0IHdpbGwgYmUgbWFkZSB0byBhbGxvY2F0ZQo+ Pj4gdGhlIG9iamVjdCBmcm9tIHN0b2xlbiBtZW1vcnkgc3ViamVjdCB0byB0aGUgYXZhaWxhYmls aXR5IG9mCj4+PiBmcmVlIHNwYWNlIGluIHRoZSBzdG9sZW4gcmVnaW9uLgo+Pj4KPj4+IHYyOiBS ZWJhc2VkIHRvIHRoZSBsYXRlc3QgZHJtLWludGVsLW5pZ2h0bHkgKEFua2l0KQo+Pj4KPj4+IHYz OiBDaGFuZ2VkIHZlcnNpb25pbmcgb2YgR0VNX0NSRUFURSBwYXJhbSwgYWRkZWQgbmV3IGNvbW1l bnRzIChUdnJ0a28pCj4+Pgo+Pj4gdjQ6IENoYW5nZWQgc2l6ZSBmcm9tIDMyYiB0byA2NGIgdG8g cHJldmVudCB1c2Vyc3BhY2Ugb3ZlcmZsb3cgKFR2cnRrbykKPj4+IENvcnJlY3RlZCBmdW5jdGlv biBhcmd1bWVudHMgb3JkZXJpbmcgKENocmlzKQo+Pj4KPj4+IHY1OiBDb3JyZWN0ZWQgZnVuY3Rp b24gbmFtZSAoQ2hyaXMpCj4+Pgo+Pj4gVGVzdGNhc2U6IGlndC9nZW1fc3RvbGVuCj4+Pgo+Pj4g U2lnbmVkLW9mZi1ieTogQW5raXRwcmFzYWQgU2hhcm1hIDxhbmtpdHByYXNhZC5yLnNoYXJtYUBp bnRlbC5jb20+Cj4+PiBSZXZpZXdlZC1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGlu QGludGVsLmNvbT4KPj4+IC0tLQo+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEu YyAgICAgICAgfCAgMyArKysKPj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2Lmgg ICAgICAgIHwgIDIgKy0KPj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAg ICAgIHwgMzAgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCj4+PiAgICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYyB8ICA0ICsrLS0KPj4+ICAgIGluY2x1ZGUvdWFw aS9kcm0vaTkxNV9kcm0uaCAgICAgICAgICAgIHwgMTYgKysrKysrKysrKysrKysrKwo+Pj4gICAg NSBmaWxlcyBjaGFuZ2VkLCA0OSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQo+Pj4KPj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kbWEuYwo+Pj4gaW5kZXggZmZjYjljNi4uNjkyN2M3ZSAxMDA2NDQK Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKPj4+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKPj4+IEBAIC0xNzAsNiArMTcwLDkgQEAgc3RhdGlj IGludCBpOTE1X2dldHBhcmFtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4+ PiAgICAJY2FzZSBJOTE1X1BBUkFNX0hBU19SRVNPVVJDRV9TVFJFQU1FUjoKPj4+ICAgIAkJdmFs dWUgPSBIQVNfUkVTT1VSQ0VfU1RSRUFNRVIoZGV2KTsKPj4+ICAgIAkJYnJlYWs7Cj4+PiArCWNh c2UgSTkxNV9QQVJBTV9DUkVBVEVfVkVSU0lPTjoKPj4+ICsJCXZhbHVlID0gMjsKPj4+ICsJCWJy ZWFrOwo+Pj4gICAgCWRlZmF1bHQ6Cj4+PiAgICAJCURSTV9ERUJVRygiVW5rbm93biBwYXJhbWV0 ZXIgJWRcbiIsIHBhcmFtLT5wYXJhbSk7Cj4+PiAgICAJCXJldHVybiAtRUlOVkFMOwo+Pj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oCj4+PiBpbmRleCA4ZTU1NGQzLi5kNDUyNzRlIDEwMDY0NAo+Pj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+Pj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+Pj4gQEAgLTMyMTMsNyArMzIxMyw3IEBAIHZvaWQgaTkx NV9nZW1fc3RvbGVuX3JlbW92ZV9ub2RlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPj4+ICAgIGludCBpOTE1X2dlbV9pbml0X3N0b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KTsKPj4+ICAgIHZvaWQgaTkxNV9nZW1fY2xlYW51cF9zdG9sZW4oc3RydWN0IGRybV9kZXZpY2Ug KmRldik7Cj4+PiAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqCj4+PiAtaTkxNV9nZW1f b2JqZWN0X2NyZWF0ZV9zdG9sZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIHNpemUpOwo+ Pj4gK2k5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHU2NCBzaXplKTsKPj4+ICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICoKPj4+ICAgIGk5 MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuX2Zvcl9wcmVhbGxvY2F0ZWQoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKPj4+ICAgIAkJCQkJICAgICAgIHUzMiBzdG9sZW5fb2Zmc2V0LAo+Pj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbS5jCj4+PiBpbmRleCBkNTdlODUwLi4yOTZlNjNmIDEwMDY0NAo+Pj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+Pj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+Pj4gQEAgLTM3NSw2ICszNzUsNyBAQCBzdGF0aWMgaW50 Cj4+PiAgICBpOTE1X2dlbV9jcmVhdGUoc3RydWN0IGRybV9maWxlICpmaWxlLAo+Pj4gICAgCQlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+Pj4gICAgCQl1aW50NjRfdCBzaXplLAo+Pj4gKwkJdWlu dDMyX3QgZmxhZ3MsCj4+PiAgICAJCXVpbnQzMl90ICpoYW5kbGVfcCkKPj4+ICAgIHsKPj4+ICAg IAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+Pj4gQEAgLTM4NSw4ICszODYsMzEg QEAgaTkxNV9nZW1fY3JlYXRlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwKPj4+ICAgIAlpZiAoc2l6 ZSA9PSAwKQo+Pj4gICAgCQlyZXR1cm4gLUVJTlZBTDsKPj4+Cj4+PiArCWlmIChmbGFncyAmIF9f STkxNV9DUkVBVEVfVU5LTk9XTl9GTEFHUykKPj4+ICsJCXJldHVybiAtRUlOVkFMOwo+Pj4gKwo+ Pj4gICAgCS8qIEFsbG9jYXRlIHRoZSBuZXcgb2JqZWN0ICovCj4+PiAtCW9iaiA9IGk5MTVfZ2Vt X2FsbG9jX29iamVjdChkZXYsIHNpemUpOwo+Pj4gKwlpZiAoZmxhZ3MgJiBJOTE1X0NSRUFURV9Q TEFDRU1FTlRfU1RPTEVOKSB7Cj4+PiArCQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7 Cj4+PiArCQlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihkZXYsIHNpemUpOwo+ Pj4gKwkJaWYgKCFvYmopIHsKPj4+ICsJCQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4 KTsKPj4+ICsJCQlyZXR1cm4gLUVOT01FTTsKPj4+ICsJCX0KPj4+ICsKPj4+ICsJCS8qIEFsd2F5 cyBjbGVhciBmcmVzaCBidWZmZXJzIGJlZm9yZSBoYW5kaW5nIHRvIHVzZXJzcGFjZSAqLwo+Pj4g KwkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X2NsZWFyKG9iaik7Cj4+PiArCQlpZiAocmV0KSB7Cj4+ PiArCQkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJm9iai0+YmFzZSk7Cj4+PiArCQkJbXV0 ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4+PiArCQkJcmV0dXJuIHJldDsKPj4+ICsJ CX0KPj4+ICsKPj4+ICsJCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+Pj4gKwl9 IGVsc2Ugewo+Pj4gKwkJb2JqID0gaTkxNV9nZW1fYWxsb2Nfb2JqZWN0KGRldiwgc2l6ZSk7Cj4+ PiArCX0KPj4+ICsKPj4+ICAgIAlpZiAob2JqID09IE5VTEwpCj4+PiAgICAJCXJldHVybiAtRU5P TUVNOwo+Pj4KPj4+IEBAIC00MDksNyArNDMzLDcgQEAgaTkxNV9nZW1fZHVtYl9jcmVhdGUoc3Ry dWN0IGRybV9maWxlICpmaWxlLAo+Pj4gICAgCWFyZ3MtPnBpdGNoID0gQUxJR04oYXJncy0+d2lk dGggKiBESVZfUk9VTkRfVVAoYXJncy0+YnBwLCA4KSwgNjQpOwo+Pj4gICAgCWFyZ3MtPnNpemUg PSBhcmdzLT5waXRjaCAqIGFyZ3MtPmhlaWdodDsKPj4+ICAgIAlyZXR1cm4gaTkxNV9nZW1fY3Jl YXRlKGZpbGUsIGRldiwKPj4+IC0JCQkgICAgICAgYXJncy0+c2l6ZSwgJmFyZ3MtPmhhbmRsZSk7 Cj4+PiArCQkJICAgICAgIGFyZ3MtPnNpemUsIDAsICZhcmdzLT5oYW5kbGUpOwo+Pj4gICAgfQo+ Pj4KPj4+ICAgIC8qKgo+Pj4gQEAgLTQyMiw3ICs0NDYsNyBAQCBpOTE1X2dlbV9jcmVhdGVfaW9j dGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPj4+ICAgIAlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX2NyZWF0ZSAqYXJncyA9IGRhdGE7Cj4+Pgo+Pj4gICAgCXJldHVybiBpOTE1X2dl bV9jcmVhdGUoZmlsZSwgZGV2LAo+Pj4gLQkJCSAgICAgICBhcmdzLT5zaXplLCAmYXJncy0+aGFu ZGxlKTsKPj4+ICsJCQkgICAgICAgYXJncy0+c2l6ZSwgYXJncy0+ZmxhZ3MsICZhcmdzLT5oYW5k bGUpOwo+Pj4gICAgfQo+Pj4KPj4+ICAgIHN0YXRpYyBpbmxpbmUgaW50Cj4+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYwo+Pj4gaW5kZXggNTk4ZWQyZi4uYjk4YTNiZiAxMDA2 NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jCj4+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYwo+Pj4gQEAgLTU4Myw3 ICs1ODMsNyBAQCBjbGVhbnVwOgo+Pj4gICAgfQo+Pj4KPj4+ICAgIHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICoKPj4+IC1pOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbihzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB1MzIgc2l6ZSkKPj4+ICtpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xl bihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1NjQgc2l6ZSkKPj4+ICAgIHsKPj4+ICAgIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+Pj4gICAg CXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4+PiBAQCAtNTkzLDcgKzU5Myw3IEBA IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfc3RvbGVuKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUz MiBzaXplKQo+Pj4gICAgCWlmICghZHJtX21tX2luaXRpYWxpemVkKCZkZXZfcHJpdi0+bW0uc3Rv bGVuKSkKPj4+ICAgIAkJcmV0dXJuIE5VTEw7Cj4+Pgo+Pj4gLQlEUk1fREVCVUdfS01TKCJjcmVh dGluZyBzdG9sZW4gb2JqZWN0OiBzaXplPSV4XG4iLCBzaXplKTsKPj4+ICsJRFJNX0RFQlVHX0tN UygiY3JlYXRpbmcgc3RvbGVuIG9iamVjdDogc2l6ZT0lbGx4XG4iLCBzaXplKTsKPj4+ICAgIAlp ZiAoc2l6ZSA9PSAwKQo+Pj4gICAgCQlyZXR1cm4gTlVMTDsKPj4+Cj4+PiBkaWZmIC0tZ2l0IGEv aW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5o Cj4+PiBpbmRleCA2N2NlYmU2Li44ZTdlM2E0IDEwMDY0NAo+Pj4gLS0tIGEvaW5jbHVkZS91YXBp L2RybS9pOTE1X2RybS5oCj4+PiArKysgYi9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKPj4+ IEBAIC0zNTYsNiArMzU2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgZHJtX2k5MTVfaXJxX3dhaXQgewo+ Pj4gICAgI2RlZmluZSBJOTE1X1BBUkFNX0VVX1RPVEFMCQkgMzQKPj4+ICAgICNkZWZpbmUgSTkx NV9QQVJBTV9IQVNfR1BVX1JFU0VUCSAzNQo+Pj4gICAgI2RlZmluZSBJOTE1X1BBUkFNX0hBU19S RVNPVVJDRV9TVFJFQU1FUiAzNgo+Pj4gKyNkZWZpbmUgSTkxNV9QQVJBTV9DUkVBVEVfVkVSU0lP TgkgMzcKPj4+Cj4+PiAgICB0eXBlZGVmIHN0cnVjdCBkcm1faTkxNV9nZXRwYXJhbSB7Cj4+PiAg ICAJX19zMzIgcGFyYW07Cj4+PiBAQCAtNDU1LDYgKzQ1NiwyMSBAQCBzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2NyZWF0ZSB7Cj4+PiAgICAJICovCj4+PiAgICAJX191MzIgaGFuZGxlOwo+Pj4gICAgCV9f dTMyIHBhZDsKPj4+ICsJLyoqCj4+PiArCSAqIFJlcXVlc3RlZCBmbGFncyAoY3VycmVudGx5IHVz ZWQgZm9yIHBsYWNlbWVudAo+Pj4gKwkgKiAod2hpY2ggbWVtb3J5IGRvbWFpbikpCj4+PiArCSAq Cj4+PiArCSAqIFlvdSBjYW4gcmVxdWVzdCB0aGF0IHRoZSBvYmplY3QgYmUgY3JlYXRlZCBmcm9t IHNwZWNpYWwgbWVtb3J5Cj4+PiArCSAqIHJhdGhlciB0aGFuIHJlZ3VsYXIgc3lzdGVtIHBhZ2Vz IHVzaW5nIHRoaXMgcGFyYW1ldGVyLiBTdWNoCj4+PiArCSAqIGlycmVndWxhciBvYmplY3RzIG1h eSBoYXZlIGNlcnRhaW4gcmVzdHJpY3Rpb25zIChzdWNoIGFzIENQVQo+Pj4gKwkgKiBhY2Nlc3Mg dG8gYSBzdG9sZW4gb2JqZWN0IGlzIHZlcmJvdGVuKS4KPj4+ICsJICoKPj4+ICsJICogVGhpcyBj YW4gYmUgdXNlZCBpbiB0aGUgZnV0dXJlIGZvciBvdGhlciBwdXJwb3NlcyB0b28KPj4+ICsJICog ZS5nLiBzcGVjaWZ5aW5nIHRpbGluZy9jYWNoaW5nL21hZHZpc2UKPj4+ICsJICovCj4+PiArCV9f dTMyIGZsYWdzOwo+Pj4gKyNkZWZpbmUgSTkxNV9DUkVBVEVfUExBQ0VNRU5UX1NUT0xFTiAJKDE8 PDApIC8qIENhbm5vdCB1c2UgQ1BVIG1tYXBzICovCj4+PiArI2RlZmluZSBfX0k5MTVfQ1JFQVRF X1VOS05PV05fRkxBR1MJLShJOTE1X0NSRUFURV9QTEFDRU1FTlRfU1RPTEVOIDw8IDEpCj4+Cj4+ IEkndmUgYXNrZWQgaW4gYW5vdGhlciByZXBseSwgbm93IHRoYXQgdXNlcnNwYWNlIGNhbiBjcmVh dGUgYSBzdG9sZW4KPj4gb2JqZWN0LCB3aGF0IGhhcHBlbnMgaWYgaXQgdHJpZXMgdG8gdXNlIGl0 IGZvciBhIGJhdGNoIGJ1ZmZlcj8KPj4KPj4gQ2FuIGl0IGVuZCB1cCBpbiB0aGUgcmVsb2NhdGVf ZW50cnlfY3B1IHdpdGggYSBiYXRjaCBidWZmZXIgYWxsb2NhdGVkCj4+IGZyb20gc3RvbGVuLCB3 aGljaCB3b3VsZCB0aGVuIGNhbGwgaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlIGFuZCBjcmFzaD8K PiBUaGFua3MgZm9yIHBvaW50aW5nIGl0IG91dC4KPiBZZXMsIHRoaXMgaXMgZGVmaW5pdGVseSBh IHBvc3NpYmlsaXR5LCBpZiB3ZSBhbGxvY2F0ZSBiYXRjaGJ1ZmZlcnMgZnJvbQo+IHRoZSBzdG9s ZW4gcmVnaW9uLiBJIGhhdmUgc3RhcnRlZCB3b3JraW5nIG9uIHRoYXQsIHRvIGRvCj4gcmVsb2Nh dGVfZW50cnlfc3RvbGVuKCkgaWYgdGhlIG9iamVjdCBpcyBhbGxvY2F0ZWQgZnJvbSBzdG9sZW4u CgpPciBwZXJoYXBzIGl0IHdvdWxkIGJlIE9LIHRvIGp1c3QgZmFpbCB0aGUgZXhlY2J1Zj8KCkp1 c3QgdGhpbmtpbmcgdG8gc2ltcGxpZnkgdGhpbmdzLiBJcyBpdCByZXF1aXJlZCAob3IgZXhwZWN0 ZWQpIHRoYXQgCnVzZXJzIHdpbGwgbmVlZCBvciB3YW50IHRvIGNyZWF0ZSBiYXRjaCBidWZmZXJz IGZyb20gc3RvbGVuPwoKUmVnYXJkcywKClR2cnRrbwpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo=