From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v4] drm/i915/guc: Clean up locks in GuC Date: Mon, 25 Jan 2016 17:01:34 +0100 Message-ID: <20160125160134.GP11240@phenom.ffwll.local> References: <1448319778-29282-1-git-send-email-yu.dai@intel.com> <1449104189-27591-1-git-send-email-yu.dai@intel.com> <56A20A72.6060202@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-f66.google.com (mail-wm0-f66.google.com [74.125.82.66]) by gabe.freedesktop.org (Postfix) with ESMTPS id 18E3C6E4A2 for ; Mon, 25 Jan 2016 08:01:27 -0800 (PST) Received: by mail-wm0-f66.google.com with SMTP id 123so12141031wmz.2 for ; Mon, 25 Jan 2016 08:01:27 -0800 (PST) Content-Disposition: inline In-Reply-To: <56A20A72.6060202@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBKYW4gMjIsIDIwMTYgYXQgMTA6NTQ6NDJBTSArMDAwMCwgVHZydGtvIFVyc3VsaW4g d3JvdGU6Cj4gCj4gT24gMDMvMTIvMTUgMDA6NTYsIHl1LmRhaUBpbnRlbC5jb20gd3JvdGU6Cj4g PiBGcm9tOiBBbGV4IERhaSA8eXUuZGFpQGludGVsLmNvbT4KPiA+IAo+ID4gRm9yIG5vdywgcmVt b3ZlIHRoZSBzcGlubG9ja3MgdGhhdCBwcm90ZWN0ZWQgdGhlIEd1QydzCj4gPiBzdGF0aXN0aWNz IGJsb2NrIGFuZCB3b3JrIHF1ZXVlOyB0aGV5IGFyZSBvbmx5IGFjY2Vzc2VkCj4gPiBieSBjb2Rl IHRoYXQgYWxyZWFkeSBob2xkcyB0aGUgZ2xvYmFsIHN0cnVjdF9tdXRleCwgYW5kCj4gPiBzbyBh cmUgcmVkdW5kYW50ICh1bnRpbCB0aGUgYmlnIHN0cnVjdF9tdXRleCByZXdyaXRlISkuCj4gPiAK PiA+IFRoZSBzcGVjaWZpYyBwcm9ibGVtIHRoYXQgdGhlIHNwaW5sb2NrcyBjYXVzZWQgd2FzIHRo YXQKPiA+IGlmIHRoZSB3b3JrIHF1ZXVlIHdhcyBmdWxsLCB0aGUgZHJpdmVyIHdvdWxkIHRyeSB0 bwo+ID4gc3BpbndhaXQgZm9yIG9uZSBqaWZmeSwgYnV0IHdpdGggaW50ZXJydXB0cyBkaXNhYmxl ZCB0aGUKPiA+IGppZmZ5IGNvdW50IHdvdWxkIG5vdCBhZHZhbmNlLCBsZWFkaW5nIHRvIGEgc3lz dGVtIGhhbmcuCj4gPiBUaGUgaXNzdWUgd2FzIGZvdW5kIHVzaW5nIHRlc3QgY2FzZSBpZ3QvZ2Vt X2Nsb3NlX3JhY2UuCj4gPiAKPiA+IFRoZSBuZXcgdmVyc2lvbiB3aWxsIHVzbGVlcCgpIGluc3Rl YWQsIHN0aWxsIGhvbGRpbmcKPiA+IHRoZSBzdHJ1Y3RfbXV0ZXggYnV0IHdpdGhvdXQgYW55IHNw aW5sb2Nrcy4KPiA+IAo+ID4gdjQ6IFJlb3JnYW5pemUgY29tbWl0IG1lc3NhZ2UgKERhdmUgR29y ZG9uKQo+ID4gdjM6IFJlbW92ZSB1bm5lY2Vzc2FyeSB3aGl0ZXNwYWNlIGNodXJuCj4gPiB2Mjog Q2xlYW4gdXAgd3FfbG9jayB0b28KPiA+IHYxOiBDbGVhbiB1cCBob3N0Mmd1YyBsb2NrIGFzIHdl bGwKPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTogQWxleCBEYWkgPHl1LmRhaUBpbnRlbC5jb20+Cj4g PiAtLS0KPiA+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgICAgIHwg MTIgKysrKysrLS0tLS0tCj4gPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1p c3Npb24uYyB8IDMxICsrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4gICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaCAgICAgICAgICAgfCAgNCAtLS0tCj4gPiAgIDMgZmls ZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMzUgZGVsZXRpb25zKC0pCj4gPiAKPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gPiBpbmRleCBhNzI4ZmYxLi5kNmI3ODE3IDEw MDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiA+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gPiBAQCAtMjQ3MywxNSAr MjQ3MywxNSBAQCBzdGF0aWMgaW50IGk5MTVfZ3VjX2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2 b2lkICpkYXRhKQo+ID4gICAJaWYgKCFIQVNfR1VDX1NDSEVEKGRldl9wcml2LT5kZXYpKQo+ID4g ICAJCXJldHVybiAwOwo+ID4gICAKPiA+ICsJaWYgKG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgm ZGV2LT5zdHJ1Y3RfbXV0ZXgpKQo+ID4gKwkJcmV0dXJuIDA7Cj4gPiArCj4gPiAgIAkvKiBUYWtl IGEgbG9jYWwgY29weSBvZiB0aGUgR3VDIGRhdGEsIHNvIHdlIGNhbiBkdW1wIGl0IGF0IGxlaXN1 cmUgKi8KPiA+IC0Jc3Bpbl9sb2NrKCZkZXZfcHJpdi0+Z3VjLmhvc3QyZ3VjX2xvY2spOwo+ID4g ICAJZ3VjID0gZGV2X3ByaXYtPmd1YzsKPiA+IC0JaWYgKGd1Yy5leGVjYnVmX2NsaWVudCkgewo+ ID4gLQkJc3Bpbl9sb2NrKCZndWMuZXhlY2J1Zl9jbGllbnQtPndxX2xvY2spOwo+ID4gKwlpZiAo Z3VjLmV4ZWNidWZfY2xpZW50KQo+ID4gICAJCWNsaWVudCA9ICpndWMuZXhlY2J1Zl9jbGllbnQ7 Cj4gPiAtCQlzcGluX3VubG9jaygmZ3VjLmV4ZWNidWZfY2xpZW50LT53cV9sb2NrKTsKPiA+IC0J fQo+ID4gLQlzcGluX3VubG9jaygmZGV2X3ByaXYtPmd1Yy5ob3N0Mmd1Y19sb2NrKTsKPiA+ICsK PiA+ICsJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gPiAgIAo+ID4gICAJc2Vx X3ByaW50ZihtLCAiR3VDIHRvdGFsIGFjdGlvbiBjb3VudDogJWxsdVxuIiwgZ3VjLmFjdGlvbl9j b3VudCk7Cj4gPiAgIAlzZXFfcHJpbnRmKG0sICJHdUMgYWN0aW9uIGZhaWx1cmUgY291bnQ6ICV1 XG4iLCBndWMuYWN0aW9uX2ZhaWwpOwo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3Vj X3N1Ym1pc3Npb24uYwo+ID4gaW5kZXggZWQ5ZjEwMC4uYTdmOTc4NSAxMDA2NDQKPiA+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+ID4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCj4gPiBAQCAtODYsNyArODYs NiBAQCBzdGF0aWMgaW50IGhvc3QyZ3VjX2FjdGlvbihzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHUz MiAqZGF0YSwgdTMyIGxlbikKPiA+ICAgCQlyZXR1cm4gLUVJTlZBTDsKPiA+ICAgCj4gPiAgIAlp bnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4gPiAt CXNwaW5fbG9jaygmZGV2X3ByaXYtPmd1Yy5ob3N0Mmd1Y19sb2NrKTsKPiA+ICAgCj4gPiAgIAlk ZXZfcHJpdi0+Z3VjLmFjdGlvbl9jb3VudCArPSAxOwo+ID4gICAJZGV2X3ByaXYtPmd1Yy5hY3Rp b25fY21kID0gZGF0YVswXTsKPiA+IEBAIC0xMTksNyArMTE4LDYgQEAgc3RhdGljIGludCBob3N0 Mmd1Y19hY3Rpb24oc3RydWN0IGludGVsX2d1YyAqZ3VjLCB1MzIgKmRhdGEsIHUzMiBsZW4pCj4g PiAgIAl9Cj4gPiAgIAlkZXZfcHJpdi0+Z3VjLmFjdGlvbl9zdGF0dXMgPSBzdGF0dXM7Cj4gPiAg IAo+ID4gLQlzcGluX3VubG9jaygmZGV2X3ByaXYtPmd1Yy5ob3N0Mmd1Y19sb2NrKTsKPiA+ICAg CWludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKPiA+ ICAgCj4gPiAgIAlyZXR1cm4gcmV0Owo+ID4gQEAgLTI5MiwxNiArMjkwLDEyIEBAIHN0YXRpYyB1 aW50MzJfdCBzZWxlY3RfZG9vcmJlbGxfY2FjaGVsaW5lKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykK PiA+ICAgCWNvbnN0IHVpbnQzMl90IGNhY2hlbGluZV9zaXplID0gY2FjaGVfbGluZV9zaXplKCk7 Cj4gPiAgIAl1aW50MzJfdCBvZmZzZXQ7Cj4gPiAgIAo+ID4gLQlzcGluX2xvY2soJmd1Yy0+aG9z dDJndWNfbG9jayk7Cj4gPiAtCj4gPiAgIAkvKiBEb29yYmVsbCB1c2VzIGEgc2luZ2xlIGNhY2hl IGxpbmUgd2l0aGluIGEgcGFnZSAqLwo+ID4gICAJb2Zmc2V0ID0gb2Zmc2V0X2luX3BhZ2UoZ3Vj LT5kYl9jYWNoZWxpbmUpOwo+ID4gICAKPiA+ICAgCS8qIE1vdmluZyB0byBuZXh0IGNhY2hlIGxp bmUgdG8gcmVkdWNlIGNvbnRlbnRpb24gKi8KPiA+ICAgCWd1Yy0+ZGJfY2FjaGVsaW5lICs9IGNh Y2hlbGluZV9zaXplOwo+ID4gICAKPiA+IC0Jc3Bpbl91bmxvY2soJmd1Yy0+aG9zdDJndWNfbG9j ayk7Cj4gPiAtCj4gPiAgIAlEUk1fREVCVUdfRFJJVkVSKCJzZWxlY3RlZCBkb29yYmVsbCBjYWNo ZWxpbmUgMHgleCwgbmV4dCAweCV4LCBsaW5lc2l6ZSAldVxuIiwKPiA+ICAgCQkJb2Zmc2V0LCBn dWMtPmRiX2NhY2hlbGluZSwgY2FjaGVsaW5lX3NpemUpOwo+ID4gICAKPiA+IEBAIC0zMjIsMTMg KzMxNiwxMSBAQCBzdGF0aWMgdWludDE2X3QgYXNzaWduX2Rvb3JiZWxsKHN0cnVjdCBpbnRlbF9n dWMgKmd1YywgdWludDMyX3QgcHJpb3JpdHkpCj4gPiAgIAljb25zdCB1aW50MTZfdCBlbmQgPSBz dGFydCArIGhhbGY7Cj4gPiAgIAl1aW50MTZfdCBpZDsKPiA+ICAgCj4gPiAtCXNwaW5fbG9jaygm Z3VjLT5ob3N0Mmd1Y19sb2NrKTsKPiA+ICAgCWlkID0gZmluZF9uZXh0X3plcm9fYml0KGd1Yy0+ ZG9vcmJlbGxfYml0bWFwLCBlbmQsIHN0YXJ0KTsKPiA+ICAgCWlmIChpZCA9PSBlbmQpCj4gPiAg IAkJaWQgPSBHVUNfSU5WQUxJRF9ET09SQkVMTF9JRDsKPiA+ICAgCWVsc2UKPiA+ICAgCQliaXRt YXBfc2V0KGd1Yy0+ZG9vcmJlbGxfYml0bWFwLCBpZCwgMSk7Cj4gPiAtCXNwaW5fdW5sb2NrKCZn dWMtPmhvc3QyZ3VjX2xvY2spOwo+ID4gICAKPiA+ICAgCURSTV9ERUJVR19EUklWRVIoImFzc2ln bmVkICVzIHByaW9yaXR5IGRvb3JiZWxsIGlkIDB4JXhcbiIsCj4gPiAgIAkJCWhpX3ByaSA/ICJo aWdoIiA6ICJub3JtYWwiLCBpZCk7Cj4gPiBAQCAtMzM4LDkgKzMzMCw3IEBAIHN0YXRpYyB1aW50 MTZfdCBhc3NpZ25fZG9vcmJlbGwoc3RydWN0IGludGVsX2d1YyAqZ3VjLCB1aW50MzJfdCBwcmlv cml0eSkKPiA+ICAgCj4gPiAgIHN0YXRpYyB2b2lkIHJlbGVhc2VfZG9vcmJlbGwoc3RydWN0IGlu dGVsX2d1YyAqZ3VjLCB1aW50MTZfdCBpZCkKPiA+ICAgewo+ID4gLQlzcGluX2xvY2soJmd1Yy0+ aG9zdDJndWNfbG9jayk7Cj4gPiAgIAliaXRtYXBfY2xlYXIoZ3VjLT5kb29yYmVsbF9iaXRtYXAs IGlkLCAxKTsKPiA+IC0Jc3Bpbl91bmxvY2soJmd1Yy0+aG9zdDJndWNfbG9jayk7Cj4gPiAgIH0K PiA+ICAgCj4gPiAgIC8qCj4gPiBAQCAtNDg3LDE2ICs0NzcsMTMgQEAgc3RhdGljIGludCBndWNf Z2V0X3dvcmtxdWV1ZV9zcGFjZShzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpnYywgdTMyICpvZmZz ZXQpCj4gPiAgIAlzdHJ1Y3QgZ3VjX3Byb2Nlc3NfZGVzYyAqZGVzYzsKPiA+ICAgCXZvaWQgKmJh c2U7Cj4gPiAgIAl1MzIgc2l6ZSA9IHNpemVvZihzdHJ1Y3QgZ3VjX3dxX2l0ZW0pOwo+ID4gLQlp bnQgcmV0ID0gMCwgdGltZW91dF9jb3VudGVyID0gMjAwOwo+ID4gKwlpbnQgcmV0ID0gLUVUSU1F RE9VVCwgdGltZW91dF9jb3VudGVyID0gMjAwOwo+ID4gICAKPiA+ICAgCWJhc2UgPSBrbWFwX2F0 b21pYyhpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2UoZ2MtPmNsaWVudF9vYmosIDApKTsKPiA+ICAg CWRlc2MgPSBiYXNlICsgZ2MtPnByb2NfZGVzY19vZmZzZXQ7Cj4gPiAgIAo+ID4gICAJd2hpbGUg KHRpbWVvdXRfY291bnRlci0tID4gMCkgewo+ID4gLQkJcmV0ID0gd2FpdF9mb3JfYXRvbWljKENJ UkNfU1BBQ0UoZ2MtPndxX3RhaWwsIGRlc2MtPmhlYWQsCj4gPiAtCQkJCWdjLT53cV9zaXplKSA+ PSBzaXplLCAxKTsKPiA+IC0KPiA+IC0JCWlmICghcmV0KSB7Cj4gPiArCQlpZiAoQ0lSQ19TUEFD RShnYy0+d3FfdGFpbCwgZGVzYy0+aGVhZCwgZ2MtPndxX3NpemUpID49IHNpemUpIHsKPiA+ICAg CQkJKm9mZnNldCA9IGdjLT53cV90YWlsOwo+ID4gICAKPiA+ICAgCQkJLyogYWR2YW5jZSB0aGUg dGFpbCBmb3IgbmV4dCB3b3JrcXVldWUgaXRlbSAqLwo+ID4gQEAgLTUwNSw3ICs0OTIsMTEgQEAg c3RhdGljIGludCBndWNfZ2V0X3dvcmtxdWV1ZV9zcGFjZShzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50 ICpnYywgdTMyICpvZmZzZXQpCj4gPiAgIAo+ID4gICAJCQkvKiB0aGlzIHdpbGwgYnJlYWsgdGhl IGxvb3AgKi8KPiA+ICAgCQkJdGltZW91dF9jb3VudGVyID0gMDsKPiA+ICsJCQlyZXQgPSAwOwo+ ID4gICAJCX0KPiA+ICsKPiA+ICsJCWlmICh0aW1lb3V0X2NvdW50ZXIpCj4gPiArCQkJdXNsZWVw X3JhbmdlKDEwMDAsIDIwMDApOwo+IAo+IFNsZWVwaW5nIGlzIGlsbGVnYWwgd2hpbGUgaG9sZGlu ZyBrbWFwX2F0b21pYyBtYXBwaW5nOgo+IAo+IFsgICAzNC4wOTg3OThdIEJVRzogc2NoZWR1bGlu ZyB3aGlsZSBhdG9taWM6IGdlbV9jbG9zZV9yYWNlLzE5NDEvMHgwMDAwMDAwMgo+IFsgICAzNC4w OTg4MjJdIE1vZHVsZXMgbGlua2VkIGluOiBoaWRfZ2VuZXJpYyB1c2JoaWQgaTkxNSBhc2l4IHVz Ym5ldCBsaWJwaHkgbWlpIGkyY19hbGdvX2JpdCBkcm1fa21zX2hlbHBlciBjZmJmaWxscmVjdCBz eXNjb3B5YXJlYSBjZmJpbWdibHQgc3lzZmlsbHJlY3Qgc3lzaW1nYmx0IGZiX3N5c19mb3BzIGNm YmNvcHlhcmVhIGRybSBjb3JldGVtcCBpMmNfaGlkIGhpZCB2aWRlbyBwaW5jdHJsX3N1bnJpc2Vw b2ludCBwaW5jdHJsX2ludGVsIGFjcGlfcGFkIG5sc19pc284ODU5XzEgZTEwMDBlIHB0cCBwc21v dXNlIHBwc19jb3JlIGFoY2kgbGliYWhjaQo+IFsgICAzNC4wOTg4MjRdIENQVTogMCBQSUQ6IDE5 NDEgQ29tbTogZ2VtX2Nsb3NlX3JhY2UgVGFpbnRlZDogRyAgICAgVSAgICAgICAgICA0LjQuMC0x NjAxMjErICMxMjMKPiBbICAgMzQuMDk4ODI0XSBIYXJkd2FyZSBuYW1lOiBJbnRlbCBDb3Jwb3Jh dGlvbiBTa3lsYWtlIENsaWVudCBwbGF0Zm9ybS9Ta3lsYWtlIEFJTyBERFIzTCBSVlAxMCwgQklP UyBTS0xTRTJSMS5SMDAuWDEwMC5CMDEuMTUwOTIyMDU1MSAwOS8yMi8yMDE1Cj4gWyAgIDM0LjA5 ODgyNV0gIDAwMDAwMDAwMDAwMTNlNDAgZmZmZjg4MDE2NmMyN2E3OCBmZmZmZmZmZjgxMjgwZDAy IGZmZmY4ODAxNzJjMTNlNDAKPiBbICAgMzQuMDk4ODI2XSAgZmZmZjg4MDE2NmMyN2E4OCBmZmZm ZmZmZjgxMGMyMDNhIGZmZmY4ODAxNjZjMjdhYzggZmZmZmZmZmY4MTRlYzgwOAo+IFsgICAzNC4w OTg4MjddICBmZmZmODgwMTZiN2M2MDAwIGZmZmY4ODAxNjZjMjgwMDAgMDAwMDAwMDAwMDBmNDI0 MCAwMDAwMDAwMDAwMDAwMDAxCj4gWyAgIDM0LjA5ODgyN10gQ2FsbCBUcmFjZToKPiBbICAgMzQu MDk4ODMxXSAgWzxmZmZmZmZmZjgxMjgwZDAyPl0gZHVtcF9zdGFjaysweDRiLzB4NzkKPiBbICAg MzQuMDk4ODMzXSAgWzxmZmZmZmZmZjgxMGMyMDNhPl0gX19zY2hlZHVsZV9idWcrMHg0MS8weDRm Cj4gWyAgIDM0LjA5ODgzNF0gIFs8ZmZmZmZmZmY4MTRlYzgwOD5dIF9fc2NoZWR1bGUrMHg1YTgv MHg2OTAKPiBbICAgMzQuMDk4ODM1XSAgWzxmZmZmZmZmZjgxNGVjOTI3Pl0gc2NoZWR1bGUrMHgz Ny8weDgwCj4gWyAgIDM0LjA5ODgzNl0gIFs8ZmZmZmZmZmY4MTRlZjNmZD5dIHNjaGVkdWxlX2hy dGltZW91dF9yYW5nZV9jbG9jaysweGFkLzB4MTMwCj4gWyAgIDM0LjA5ODgzN10gIFs8ZmZmZmZm ZmY4MTA5MGJlMD5dID8gaHJ0aW1lcl9pbml0KzB4MTAvMHgxMAo+IFsgICAzNC4wOTg4MzhdICBb PGZmZmZmZmZmODE0ZWYzZjE+XSA/IHNjaGVkdWxlX2hydGltZW91dF9yYW5nZV9jbG9jaysweGEx LzB4MTMwCj4gWyAgIDM0LjA5ODgzOV0gIFs8ZmZmZmZmZmY4MTRlZjQ4ZT5dIHNjaGVkdWxlX2hy dGltZW91dF9yYW5nZSsweGUvMHgxMAo+IFsgICAzNC4wOTg4NDBdICBbPGZmZmZmZmZmODE0ZWVm OWI+XSB1c2xlZXBfcmFuZ2UrMHgzYi8weDQwCj4gWyAgIDM0LjA5ODg1M10gIFs8ZmZmZmZmZmZh MDFlYzEwOT5dIGk5MTVfZ3VjX3dxX2NoZWNrX3NwYWNlKzB4MTE5LzB4MjEwIFtpOTE1XQo+IFsg ICAzNC4wOTg4NjFdICBbPGZmZmZmZmZmYTAxZGE0N2M+XSBpbnRlbF9sb2dpY2FsX3JpbmdfYWxs b2NfcmVxdWVzdF9leHRyYXMrMHg1Yy8weDcwIFtpOTE1XQo+IFsgICAzNC4wOTg4NjldICBbPGZm ZmZmZmZmYTAxY2RiZjE+XSBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKzB4OTEvMHgxNzAgW2k5MTVd Cj4gWyAgIDM0LjA5ODg3NV0gIFs8ZmZmZmZmZmZhMDFjMWMwNz5dIGk5MTVfZ2VtX2RvX2V4ZWNi dWZmZXIuaXNyYS4yNSsweGJjNy8weDEyYTAgW2k5MTVdCj4gWyAgIDM0LjA5ODg4Ml0gIFs8ZmZm ZmZmZmZhMDFjYjc4NT5dID8gaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlc19ndHQrMHgyMjUvMHgz YzAgW2k5MTVdCj4gWyAgIDM0LjA5ODg4OV0gIFs8ZmZmZmZmZmZhMDFkMWZiNj5dID8gaTkxNV9n ZW1fcHdyaXRlX2lvY3RsKzB4ZDYvMHg5ZjAgW2k5MTVdCj4gWyAgIDM0LjA5ODg5NV0gIFs8ZmZm ZmZmZmZhMDFjMmU2OD5dIGk5MTVfZ2VtX2V4ZWNidWZmZXIyKzB4YTgvMHgyNTAgW2k5MTVdCj4g WyAgIDM0LjA5ODkwMF0gIFs8ZmZmZmZmZmZhMDBmNjVkOD5dIGRybV9pb2N0bCsweDI1OC8weDRm MCBbZHJtXQo+IFsgICAzNC4wOTg5MDZdICBbPGZmZmZmZmZmYTAxYzJkYzA+XSA/IGk5MTVfZ2Vt X2V4ZWNidWZmZXIrMHgzNDAvMHgzNDAgW2k5MTVdCj4gWyAgIDM0LjA5ODkwOF0gIFs8ZmZmZmZm ZmY4MTExNTkwZD5dIGRvX3Zmc19pb2N0bCsweDJjZC8weDRhMAo+IFsgICAzNC4wOTg5MDldICBb PGZmZmZmZmZmODExMWVhYzI+XSA/IF9fZmdldCsweDcyLzB4YjAKPiBbICAgMzQuMDk4OTEwXSAg WzxmZmZmZmZmZjgxMTE1YjFjPl0gU3lTX2lvY3RsKzB4M2MvMHg3MAo+IFsgICAzNC4wOTg5MTFd ICBbPGZmZmZmZmZmODE0ZWZmZDc+XSBlbnRyeV9TWVNDQUxMXzY0X2Zhc3RwYXRoKzB4MTIvMHg2 YQo+IFsgICAzNC4xMDAyMDhdIC0tLS0tLS0tLS0tLVsgY3V0IGhlcmUgXS0tLS0tLS0tLS0tLQo+ IAo+IEkgZG9uJ3Qga25vdyB0aGUgY29kZSB3ZWxsIGVub3VnaCB0byBzdWdnZXN0IGEgc3VpdGFi bGUgZml4LgoKQ29kZSByZWFsbHksIHJlYWxseSwgcmVhbGx5IHNob3VsZCBiZSBydW4gd2l0aCBm dWxsIGRlYnVnIHRvb2xpbmcgKGFuZCB0aGUKYWJvdmUgaXMgb25lIG9mIHRoZSBtb3N0IGJhc2lj IG9uZXMpIGVuYWJsZWQuCgpJIHRoaW5rIHRoZSBiZXN0IGFwcHJvYWNoIHdvdWxkIGJlIHRvOgot IGluc3RhbGwgR3VDIGZpcm13YXJlIG9uIGFsbCBDSSBtYWNoaW5lcy4gUGxlYXNlIGNvb3JkaW5h dGUgd2l0aAogIERhbmllbGEmVG9taSBvbiB0aGlzLCBhbmQgY2M6IGludGVsLWdmeC1jaUBlY2xp c3RzLmludGVsLmNvbSBvbiBhbnkgc3VjaAogIG1haWxzLgoKLSBFdmVyeSBwYXRjaCBzZXJpZXMg dGhhdCB0b3VjaGVzIHN0aWxsIGRpc2FibGVkIGNvZGUgbmVlZHMgdG8gaW5jbHVkZSBhCiAgcGF0 Y2ggdG8gZW5hYmxlIEd1QyAob3Igd2hhdGV2ZXIgaXQgaXMpIGJ5IGRlZmF1bHQuIE9mIGNvdXJz ZSB0aGF0IHBhdGNoCiAgbXVzdCBoYXZlIGEgRE9OVE1FUkdFIG9yIHNpbWlsYXIgdGFnLCBpZiB0 aGUgZmVhdHVyZSBpc24ndCAxMDAlIHJlYWR5CiAgZm9yIHByaW1lIHRpbWUgeWV0LiBUaGlzIHdh eSB3ZSBjYW4gZW5saXN0IENJIHRvIGh1bnQgZm9yIHN0dWZmIGxpa2UgdGhlCiAgYWJvdmUsIGFu ZCBpdCdzIF9yZWFsbHlfIGdvb2QgYXQgdGhhdC4KCkFsZXgmVHZydGtvLCBjYW4geW91IHBsZWFz ZSB0YWtlIGNhcmUgb2YgdGhpcz8KClRoYW5rcywgRGFuaWVsCi0tIApEYW5pZWwgVmV0dGVyClNv ZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZngg bWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=