From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id 89E9F897EF for ; Wed, 22 May 2019 13:45:36 +0000 (UTC) References: <20190522133834.2803-1-andi.shyti@intel.com> From: Tvrtko Ursulin Message-ID: Date: Wed, 22 May 2019 14:45:33 +0100 MIME-Version: 1.0 In-Reply-To: <20190522133834.2803-1-andi.shyti@intel.com> Content-Language: en-US Subject: Re: [igt-dev] [PATCH v25 02/14] lib/i915: add gem_engine_topology library and for_each loop definition List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Andi Shyti , IGT dev Cc: Andi Shyti List-ID: Ck9uIDIyLzA1LzIwMTkgMTQ6MzgsIEFuZGkgU2h5dGkgd3JvdGU6Cj4gVGhlIGdlbV9lbmdpbmVf dG9wb2xvZ3kgbGlicmFyeSBpcyBhIHNldCBvZiBmdW5jdGlvbnMgdGhhdAo+IGludGVyZmFjZSB3 aXRoIHRoZSBxdWVyeSBhbmQgZ2V0cGFyYW0vc2V0cGFyYW0gaW9jdGxzLgo+IAo+IFRoZSBsaWJy YXJ5J3MgYWNjZXNzIHBvaW50IGlzIHRoZSAnaW50ZWxfaW5pdF9lbmdpbmVfbGlzdCgpJwo+IGZ1 bmN0aW9uIHRoYXQsIGV2ZXJ5dGltZSBpcyBjYWxsZWQsIGdlbmVyYXRlcyB0aGUgbGlzdCBvZiBh Y3RpdmUKPiBlbmdpbmVzIGFuZCByZXR1cm5zIHRoZW0gaW4gYSAnc3RydWN0IGludGVsX2VuZ2lu ZV9kYXRhJy4gVGhlCj4gc3RydWN0dXJlIGNvbnRhaW5zIG9ubHkgdGhlIGVuZ2luZXMgdGhhdCBh cmUgYWN0aXZlbHkgcHJlc2VudCBpbgo+IHRoZSBHUFUuCj4gCj4gVGhlIGZ1bmN0aW9uIGNhbiB3 b3JrIGluIGJvdGggdGhlIGNhc2VzIHRoYXQgdGhlIHF1ZXJ5IGFuZAo+IGdldHBhcmFtIGlvY3Rs cyBhcmUgaW1wbGVtZW50ZWQgb3Igbm90IGJ5IHRoZSBydW5uaW5nIGtlcm5lbC4gSW4KPiBjYXNl IHRoZXkgYXJlIGltcGxlbWVudGVkLCBhIHF1ZXJ5IGlzIG1hZGUgdG8gdGhlIGRyaXZlciB0byBm ZXRjaAo+IHRoZSBsaXN0IG9mIGFjdGl2ZSBlbmdpbmVzLiBJbiBjYXNlIHRoZXkgYXJlIG5vdCBp bXBsZW1lbnRlZCwgdGhlCj4gbGlzdCBpcyB0YWtlbiBmcm9tIHRoZSAnaW50ZWxfZXhlY3V0aW9u X2VuZ2luZXMyJyBhcnJheSBhbmQKPiBzdG9yZWQgb25seSBhZnRlciBjaGVja2luZyB0aGVpciBw cmVzZW5jZS4KPiAKPiBUaGUgZ2VtX2VuZ2luZV90b3BvbG9neSBsaWJyYXJ5IHByb3ZpZGVzIHNv bWUgaXRlcmF0aW9uIGhlbHBlcnM6Cj4gCj4gICAtIGludGVsX2dldF9jdXJyZW50X2VuZ2luZSgp OiBwcm92aWRlcyB0aGUgY3VycmVudCBlbmdpbmUgaW4gdGhlCj4gICAgIGl0ZXJhdGlvbi4KPiAK PiAgIC0gaW50ZWxfZ2V0X2N1cnJlbnRfcGh5c2ljYWxfZW5naW5lKCk6IHByb3ZpZGVzIHRoZSBj dXJyZW50Cj4gICAgIHBoeXNpY2FsIGVuZ2luZSwgaWYgdGhlIGN1cnJlbnQgZW5naW5lIGlzIGEg dmlydHVhbCBlbmdpbmUsCj4gICAgIGl0IG1vdmVzIGZvcndhcmQgdW50aWwgaXQgZmluZHMgYSBw aHlzaWNhbCBlbmdpbmUuCj4gCj4gICAtIGludGVsX25leHRfZW5naW5lKCkgaXQganVzdCBpbmNy ZW1lbnRzIHRoZSBjb3VudGVyIHNvIHRoYXQgaXQKPiAgICAgcG9pbnRzIHRvIHRoZSBuZXh0IGVu Z2luZS4KPiAKPiBFeHRlbmQgdGhlICdmb3JfZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFuY2UnIHNv IHRoYXQgaXQgY2FuIGxvb3AKPiB1c2luZyB0aGUgbmV3ICdpbnRlbF9pbml0X2VuZ2luZV9saXN0 KCknIGFuZCByZW5hbWUgaXQgdG8KPiAnZm9yX2VhY2hfY29udGV4dF9lbmdpbmUnLgo+IAo+IE1v dmUgJ19fZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlJyB0byBnZW1fZW5naW5lX3RvcG9s b2d5LmgKPiBhbmQgcmVuYW1lIGl0IHRvICdfX2Zvcl9lYWNoX3N0YXRpY19lbmdpbmUnLgo+IAo+ IFVwZGF0ZSBhY2NvcmRpbmdseSB0ZXN0cy9wZXJmX3BtdS5jIHRvIHVzZSBjb3JyZWN0bHkgdGhl IG5ldwo+IGZvcl9lYWNoIGxvb3BzLgo+IAo+IFNpZ25lZC1vZmYtYnk6IEFuZGkgU2h5dGkgPGFu ZGkuc2h5dGlAaW50ZWwuY29tPgo+IC0tLQo+IEhpLAo+IAo+IHRoaXMgY29tZXMgZnJvbSB0aGUg bGFzdCByZXZpZXdzIGZyb20gVHZydGtvLCB0aGFua3MsIFR2cnRrbyEKPiAKPiBjaGFuZ2VzIGZy b20gcGF0Y2ggMjQ6Cj4gLSBTSVpFT0ZfQ1RYX1BBUkFNIGFuZCBTSVpFT0ZfUVVFUlkgZGVmaW5l cyBoYXZlIGJlZW4gbW92ZWQgaW4KPiAgICB0aGUgLmMgZmlsZSBmcm9tIHRoZSAuaAo+IAo+IC0g YWRkZWQgY29tbWVudCB0byBzcGVjaWZ5IHRoYXQgLnNpemUgZnJvbSAic3RydWN0Cj4gICAgZHJt X2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0iIGNvbnRhaW5zIHRoZSBlbmdpbmUgY291bnQgaW5zdGVh ZAo+ICAgIG9mIHRoZSBkYXRhIHN0cnVjdHVyZSBzaXplCj4gCj4gLSB2aXJ0dWFsIGVuZ2luZXMg bmVlZCB0byBiZSBjaGVja2VkIGFnYWluc3QKPiAgICAiY2xhc3MgPT0gSTkxNV9FTkdJTkVfQ0xB U1NfSU5WQUxJRCIgYW5kCj4gICAgImluc3RhbmNlID09IEk5MTVfRU5HSU5FX0NMQVNTX0lOVkFM SURfVklSVFVBTCIKPiAKPiAtIHdoZW4gYW4gZW5naW5lIHVua25vd24gaXMgZm91bmQsIGZsYWdz IGFyZSBzZXQgdG8gLTEuCj4gCj4gVGhhbmtzLAo+IEFuZGkKPiAKPiAgIGxpYi9NYWtlZmlsZS5z b3VyY2VzICAgICAgICAgICB8ICAgMiArCj4gICBsaWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5 LmMgfCAyOTggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gICBsaWIvaTkxNS9n ZW1fZW5naW5lX3RvcG9sb2d5LmggfCAgNzAgKysrKysrKysKPiAgIGxpYi9pZ3QuaCAgICAgICAg ICAgICAgICAgICAgICB8ICAgMSArCj4gICBsaWIvaWd0X2d0LmggICAgICAgICAgICAgICAgICAg fCAgIDIgKwo+ICAgbGliL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgIHwgICAxICsKPiAgIDYg ZmlsZXMgY2hhbmdlZCwgMzc0IGluc2VydGlvbnMoKykKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBs aWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmMKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIv aTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmgKPiAKPiBkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxl LnNvdXJjZXMgYi9saWIvTWFrZWZpbGUuc291cmNlcwo+IGluZGV4IDk3Njg1ODIzODk0Yi4uZWY5 NmJkMDlkMDQ5IDEwMDY0NAo+IC0tLSBhL2xpYi9NYWtlZmlsZS5zb3VyY2VzCj4gKysrIGIvbGli L01ha2VmaWxlLnNvdXJjZXMKPiBAQCAtMTMsNiArMTMsOCBAQCBsaWJfc291cmNlX2xpc3QgPQkg CVwKPiAgIAlpOTE1L2dlbV9yaW5nLmMJXAo+ICAgCWk5MTUvZ2VtX21tYW4uYwlcCj4gICAJaTkx NS9nZW1fbW1hbi5oCVwKPiArCWk5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jCVwKPiArCWk5MTUv Z2VtX2VuZ2luZV90b3BvbG9neS5oCVwKPiAgIAlpOTE1XzNkLmgJCVwKPiAgIAlpOTE1X3JlZy5o CQlcCj4gICAJaTkxNV9wY2lpZHMuaAkJXAo+IGRpZmYgLS1naXQgYS9saWIvaTkxNS9nZW1fZW5n aW5lX3RvcG9sb2d5LmMgYi9saWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmMKPiBuZXcgZmls ZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uZGQyNmZhZTAwODUzCj4gLS0tIC9k ZXYvbnVsbAo+ICsrKyBiL2xpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuYwo+IEBAIC0wLDAg KzEsMjk4IEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0aW9u Cj4gKyAqCj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdl LCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBh bmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gKyAq IHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3 aXRob3V0IGxpbWl0YXRpb24KPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwg bWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4gKyAqIGFuZC9vciBzZWxs IGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRo ZQo+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZv bGxvd2luZyBjb25kaXRpb25zOgo+ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGlj ZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gKyAqIHBh cmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBw b3J0aW9ucyBvZiB0aGUKPiArICogU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJ UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNT IE9SCj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJB TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPiArICogVEhF IEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERB TUFHRVMgT1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBD T05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiArICogRlJPTSwgT1VUIE9GIE9S IElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFM SU5HUwo+ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgImRybXRl c3QuaCIKPiArI2luY2x1ZGUgImlvY3RsX3dyYXBwZXJzLmgiCj4gKwo+ICsjaW5jbHVkZSAiaTkx NS9nZW1fZW5naW5lX3RvcG9sb2d5LmgiCj4gKwo+ICsvKgo+ICsgKiBMaW1pdCB3aGF0IHdlIHN1 cHBvcnQgZm9yIHNpbXBsaWNpdHkgZHVlIGxpbWl0YXRpb24gaW4gaG93IG11Y2ggd2UKPiArICog Y2FuIGFkZHJlc3MgdmlhIGV4ZWNidWYyLgo+ICsgKi8KPiArI2RlZmluZSBTSVpFT0ZfQ1RYX1BB UkFNCW9mZnNldG9mKHN0cnVjdCBpOTE1X2NvbnRleHRfcGFyYW1fZW5naW5lcywgXAo+ICsJCQkJ CSBlbmdpbmVzW0dFTV9NQVhfRU5HSU5FU10pCj4gKyNkZWZpbmUgU0laRU9GX1FVRVJZCQlvZmZz ZXRvZihzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfZW5naW5lX2luZm8sIFwKPiArCQkJCQkgZW5naW5l c1tHRU1fTUFYX0VOR0lORVNdKQo+ICsKPiArI2RlZmluZSBERUZJTkVfQ09OVEVYVF9FTkdJTkVT X1BBUkFNKGVfXywgcF9fLCBjX18sIE5fXykgXAo+ICsJCUk5MTVfREVGSU5FX0NPTlRFWFRfUEFS QU1fRU5HSU5FUyhlX18sIE5fXyk7IFwKPiArCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRf cGFyYW0gcF9fID0geyBcCj4gKwkJCS5wYXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9FTkdJTkVT LCBcCj4gKwkJCS5jdHhfaWQgPSBjX18sIFwKPiArCQkJLnNpemUgPSBTSVpFT0ZfQ1RYX1BBUkFN LCBcCj4gKwkJCS52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcigmZV9fKSwgXAo+ICsJCX0KPiArCj4g K3N0YXRpYyBpbnQgX19nZW1fcXVlcnkoaW50IGZkLCBzdHJ1Y3QgZHJtX2k5MTVfcXVlcnkgKnEp Cj4gK3sKPiArCWludCBlcnIgPSAwOwo+ICsKPiArCWlmIChpZ3RfaW9jdGwoZmQsIERSTV9JT0NU TF9JOTE1X1FVRVJZLCBxKSkKPiArCQllcnIgPSAtZXJybm87Cj4gKwo+ICsJZXJybm8gPSAwOwo+ ICsJcmV0dXJuIGVycjsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZ2VtX3F1ZXJ5KGludCBmZCwg c3RydWN0IGRybV9pOTE1X3F1ZXJ5ICpxKQo+ICt7Cj4gKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX3F1 ZXJ5KGZkLCBxKSwgMCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHF1ZXJ5X2VuZ2luZXMoaW50 IGZkLAo+ICsJCQkgIHN0cnVjdCBkcm1faTkxNV9xdWVyeV9lbmdpbmVfaW5mbyAqcXVlcnlfZW5n aW5lcywKPiArCQkJICBpbnQgbGVuZ3RoKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlf aXRlbSBpdGVtID0geyB9Owo+ICsJc3RydWN0IGRybV9pOTE1X3F1ZXJ5IHF1ZXJ5ID0geyB9Owo+ ICsKPiArCWl0ZW0ucXVlcnlfaWQgPSBEUk1fSTkxNV9RVUVSWV9FTkdJTkVfSU5GTzsKPiArCXF1 ZXJ5Lml0ZW1zX3B0ciA9IHRvX3VzZXJfcG9pbnRlcigmaXRlbSk7Cj4gKwlxdWVyeS5udW1faXRl bXMgPSAxOwo+ICsJaXRlbS5sZW5ndGggPSBsZW5ndGg7Cj4gKwo+ICsJaXRlbS5kYXRhX3B0ciA9 IHRvX3VzZXJfcG9pbnRlcihxdWVyeV9lbmdpbmVzKTsKPiArCj4gKwlnZW1fcXVlcnkoZmQsICZx dWVyeSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGN0eF9tYXBfZW5naW5lcyhpbnQgZmQsIHN0 cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSAqZWQsCj4gKwkJCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X2NvbnRleHRfcGFyYW0gKnBhcmFtKQo+ICt7Cj4gKwlzdHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFt X2VuZ2luZXMgKmVuZ2luZXMgPQo+ICsJCQkoc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdp bmVzICopIHBhcmFtLT52YWx1ZTsKPiArCWludCBpID0gMDsKPiArCj4gKwlmb3IgKHR5cGVvZihl bmdpbmVzLT5lbmdpbmVzWzBdKSAqcCA9Cj4gKwkgICAgICZlbmdpbmVzLT5lbmdpbmVzWzBdOwo+ ICsJICAgICBpIDwgZWQtPm5lbmdpbmVzOyBpKyssIHArKykgewo+ICsJCXAtPmVuZ2luZV9jbGFz cyA9IGVkLT5lbmdpbmVzW2ldLmNsYXNzOwo+ICsJCXAtPmVuZ2luZV9pbnN0YW5jZSA9IGVkLT5l bmdpbmVzW2ldLmluc3RhbmNlOwo+ICsJfQo+ICsKPiArCXBhcmFtLT5zaXplID0gb2Zmc2V0b2Yo dHlwZW9mKCplbmdpbmVzKSwgZW5naW5lc1tpXSk7Cj4gKwllbmdpbmVzLT5leHRlbnNpb25zID0g MDsKPiArCj4gKwlnZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsIHBhcmFtKTsKPiArfQo+ICsKPiAr c3RhdGljIHZvaWQgaW5pdF9lbmdpbmUoc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICpl MiwKPiArCQkJaW50IGNsYXNzLCBpbnQgaW5zdGFuY2UsIHVpbnQ2NF90IGZsYWdzKQo+ICt7Cj4g Kwljb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKl9fZTI7Cj4gKwlzdGF0aWMg Y29uc3QgY2hhciAqdW5rbm93bl9uYW1lID0gInVua25vd24iLAo+ICsJCQkgICp2aXJ0dWFsX25h bWUgPSAidmlydHVhbCI7Cj4gKwo+ICsJZTItPmNsYXNzICAgID0gY2xhc3M7Cj4gKwllMi0+aW5z dGFuY2UgPSBpbnN0YW5jZTsKPiArCWUyLT5mbGFncyAgICA9IGZsYWdzOwo+ICsKPiArCS8qIGVu Z2luZSBpcyBhIHZpcnR1YWwgZW5naW5lICovCj4gKwlpZiAoY2xhc3MgPT0gSTkxNV9FTkdJTkVf Q0xBU1NfSU5WQUxJRCAmJgo+ICsJICAgIGluc3RhbmNlID09IEk5MTVfRU5HSU5FX0NMQVNTX0lO VkFMSURfVklSVFVBTCkgewo+ICsJCWUyLT5uYW1lID0gdmlydHVhbF9uYW1lOwo+ICsJCWUyLT5p c192aXJ0dWFsID0gdHJ1ZTsKPiArCQlyZXR1cm47Cj4gKwl9Cj4gKwo+ICsJX19mb3JfZWFjaF9z dGF0aWNfZW5naW5lKF9fZTIpCj4gKwkJaWYgKF9fZTItPmNsYXNzID09IGNsYXNzICYmIF9fZTIt Pmluc3RhbmNlID09IGluc3RhbmNlKQo+ICsJCQlicmVhazsKPiArCj4gKwlpZiAoX19lMi0+bmFt ZSkgewo+ICsJCWUyLT5uYW1lID0gX19lMi0+bmFtZTsKPiArCX0gZWxzZSB7Cj4gKwkJaWd0X3dh cm4oImZvdW5kIHVua25vd24gZW5naW5lICglZCwgJWQpIiwgY2xhc3MsIGluc3RhbmNlKTsKPiAr CQllMi0+bmFtZSA9IHVua25vd25fbmFtZTsKPiArCQllMi0+ZmxhZ3MgPSAtMTsKPiArCX0KPiAr Cj4gKwkvKiBqdXN0IHRvIHJlbWFyayBpdCAqLwo+ICsJZTItPmlzX3ZpcnR1YWwgPSBmYWxzZTsK PiArfQo+ICsKPiArc3RhdGljIHZvaWQgcXVlcnlfZW5naW5lX2xpc3QoaW50IGZkLCBzdHJ1Y3Qg aW50ZWxfZW5naW5lX2RhdGEgKmVkKQo+ICt7Cj4gKwl1aW50OF90IGJ1ZmZbU0laRU9GX1FVRVJZ XSA9IHsgfTsKPiArCXN0cnVjdCBkcm1faTkxNV9xdWVyeV9lbmdpbmVfaW5mbyAqcXVlcnlfZW5n aW5lID0KPiArCQkJKHN0cnVjdCBkcm1faTkxNV9xdWVyeV9lbmdpbmVfaW5mbyAqKSBidWZmOwo+ ICsJaW50IGk7Cj4gKwo+ICsJcXVlcnlfZW5naW5lcyhmZCwgcXVlcnlfZW5naW5lLCBTSVpFT0Zf UVVFUlkpOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBxdWVyeV9lbmdpbmUtPm51bV9lbmdpbmVz OyBpKyspCj4gKwkJaW5pdF9lbmdpbmUoJmVkLT5lbmdpbmVzW2ldLAo+ICsJCQkgICAgcXVlcnlf ZW5naW5lLT5lbmdpbmVzW2ldLmVuZ2luZS5lbmdpbmVfY2xhc3MsCj4gKwkJCSAgICBxdWVyeV9l bmdpbmUtPmVuZ2luZXNbaV0uZW5naW5lLmVuZ2luZV9pbnN0YW5jZSwgaSk7Cj4gKwo+ICsJZWQt Pm5lbmdpbmVzID0gcXVlcnlfZW5naW5lLT5udW1fZW5naW5lczsKPiArfQo+ICsKPiArc3RydWN0 IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICoKPiAraW50ZWxfZ2V0X2N1cnJlbnRfZW5naW5lKHN0 cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSAqZWQpCj4gK3sKPiArCWlmICghZWQtPm4pCj4gKwkJZWQt PmN1cnJlbnRfZW5naW5lID0gJmVkLT5lbmdpbmVzWzBdOwo+ICsJZWxzZSBpZiAoZWQtPm4gPj0g ZWQtPm5lbmdpbmVzKQo+ICsJCWVkLT5jdXJyZW50X2VuZ2luZSA9IE5VTEw7Cj4gKwo+ICsJcmV0 dXJuIGVkLT5jdXJyZW50X2VuZ2luZTsKPiArfQo+ICsKPiArdm9pZCBpbnRlbF9uZXh0X2VuZ2lu ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgKmVkKQo+ICt7Cj4gKwlpZiAoZWQtPm4gKyAxIDwg ZWQtPm5lbmdpbmVzKSB7Cj4gKwkJZWQtPm4rKzsKPiArCQllZC0+Y3VycmVudF9lbmdpbmUgPSAm ZWQtPmVuZ2luZXNbZWQtPm5dOwo+ICsJfSBlbHNlIHsKPiArCQllZC0+biA9IGVkLT5uZW5naW5l czsKPiArCQllZC0+Y3VycmVudF9lbmdpbmUgPSBOVUxMOwo+ICsJfQo+ICt9Cj4gKwo+ICtzdHJ1 Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKgo+ICtpbnRlbF9nZXRfY3VycmVudF9waHlzaWNh bF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9kYXRhICplZCkKPiArewo+ICsJc3RydWN0IGlu dGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplOwo+ICsKPiArCWZvciAoZSA9IGludGVsX2dldF9jdXJy ZW50X2VuZ2luZShlZCk7Cj4gKwkgICAgIGUgJiYgZS0+aXNfdmlydHVhbDsKPiArCSAgICAgaW50 ZWxfbmV4dF9lbmdpbmUoZWQpKQo+ICsJCTsKPiArCj4gKwlyZXR1cm4gZTsKPiArfQo+ICsKPiAr c3RhdGljIGludCBnZW1fdG9wb2xvZ3lfZ2V0X3BhcmFtKGludCBmZCwKPiArCQkJCSAgc3RydWN0 IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtICpwKQo+ICt7Cj4gKwlpZiAoaWd0X29ubHlfbGlz dF9zdWJ0ZXN0cygpKQo+ICsJCXJldHVybiAtRU5PREVWOwo+ICsKPiArCWlmIChfX2dlbV9jb250 ZXh0X2dldF9wYXJhbShmZCwgcCkpCj4gKwkJcmV0dXJuIC0xOyAvKiB1c2luZyBkZWZhdWx0IGVu Z2luZSBtYXAgKi8KPiArCj4gKwlpZiAoIXAtPnNpemUpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJ Lyogc2l6ZSB3aWxsIHN0b3JlIHRoZSBlbmdpbmUgY291bnQgKi8KPiArCXAtPnNpemUgPSAocC0+ c2l6ZSAtIHNpemVvZihzdHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFtX2VuZ2luZXMpKSAvCj4gKwkJ ICAob2Zmc2V0b2Yoc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdpbmVzLAo+ICsJCQkgICAg ZW5naW5lc1sxXSkgLQo+ICsJCSAgc2l6ZW9mKHN0cnVjdCBpOTE1X2NvbnRleHRfcGFyYW1fZW5n aW5lcykpOwo+ICsKPiArCWlndF9hc3NlcnRfZihwLT5zaXplIDw9IEdFTV9NQVhfRU5HSU5FUywg InVuc3VwcG9ydGVkIGVuZ2luZSBjb3VudFxuIik7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiAr Cj4gK3N0cnVjdCBpbnRlbF9lbmdpbmVfZGF0YSBpbnRlbF9pbml0X2VuZ2luZV9saXN0KGludCBm ZCwgdWludDMyX3QgY3R4X2lkKQo+ICt7Cj4gKwlERUZJTkVfQ09OVEVYVF9FTkdJTkVTX1BBUkFN KGVuZ2luZXMsIHBhcmFtLCBjdHhfaWQsIEdFTV9NQVhfRU5HSU5FUyk7Cj4gKwlzdHJ1Y3QgaW50 ZWxfZW5naW5lX2RhdGEgZW5naW5lX2RhdGEgPSB7IH07Cj4gKwlpbnQgaTsKPiArCj4gKwlpZiAo Z2VtX3RvcG9sb2d5X2dldF9wYXJhbShmZCwgJnBhcmFtKSkgewo+ICsJCS8qIGlmIGtlcm5lbCBk b2VzIG5vdCBzdXBwb3J0IGVuZ2luZS9jb250ZXh0IG1hcHBpbmcgKi8KPiArCQljb25zdCBzdHJ1 Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUyOwo+ICsKPiArCQlpZ3RfZGVidWcoInVzaW5n IHByZS1hbGxvY2F0ZWQgZW5naW5lIGxpc3RcbiIpOwo+ICsKPiArCQlfX2Zvcl9lYWNoX3N0YXRp Y19lbmdpbmUoZTIpIHsKPiArCQkJc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICpfX2Uy ID0KPiArCQkJCSZlbmdpbmVfZGF0YS5lbmdpbmVzW2VuZ2luZV9kYXRhLm5lbmdpbmVzXTsKPiAr Cj4gKwkJCWlmICghaWd0X29ubHlfbGlzdF9zdWJ0ZXN0cygpKSB7Cj4gKwkJCQlfX2UyLT5mbGFn cyA9IGdlbV9jbGFzc19pbnN0YW5jZV90b19lYl9mbGFncyhmZCwKPiArCQkJCQkJZTItPmNsYXNz LCBlMi0+aW5zdGFuY2UpOwo+ICsKPiArCQkJCWlmICghZ2VtX2hhc19yaW5nKGZkLCBfX2UyLT5m bGFncykpCj4gKwkJCQkJY29udGludWU7Cj4gKwkJCX0gZWxzZSB7Cj4gKwkJCQlfX2UyLT5mbGFn cyA9IC0xOyAvKiAweGZmZi4uLiAqLwo+ICsJCQl9Cj4gKwo+ICsJCQlfX2UyLT5uYW1lICAgICAg ID0gZTItPm5hbWU7Cj4gKwkJCV9fZTItPmluc3RhbmNlICAgPSBlMi0+aW5zdGFuY2U7Cj4gKwkJ CV9fZTItPmNsYXNzICAgICAgPSBlMi0+Y2xhc3M7Cj4gKwkJCV9fZTItPmlzX3ZpcnR1YWwgPSBm YWxzZTsKPiArCj4gKwkJCWVuZ2luZV9kYXRhLm5lbmdpbmVzKys7Cj4gKwkJfQo+ICsJCXJldHVy biBlbmdpbmVfZGF0YTsKPiArCX0KPiArCj4gKwlpZiAoIXBhcmFtLnNpemUpIHsKPiArCQlxdWVy eV9lbmdpbmVfbGlzdChmZCwgJmVuZ2luZV9kYXRhKTsKPiArCQljdHhfbWFwX2VuZ2luZXMoZmQs ICZlbmdpbmVfZGF0YSwgJnBhcmFtKTsKPiArCX0gZWxzZSB7Cj4gKwkJLyogcGFyYW0uc2l6ZSBj b250YWlucyB0aGUgZW5naW5lIGNvdW50ICovCj4gKwkJZm9yIChpID0gMDsgaSA8IHBhcmFtLnNp emU7IGkrKykKPiArCQkJaW5pdF9lbmdpbmUoJmVuZ2luZV9kYXRhLmVuZ2luZXNbaV0sCj4gKwkJ CQkgICAgZW5naW5lcy5lbmdpbmVzW2ldLmVuZ2luZV9jbGFzcywKPiArCQkJCSAgICBlbmdpbmVz LmVuZ2luZXNbaV0uZW5naW5lX2luc3RhbmNlLAo+ICsJCQkJICAgIGkpOwo+ICsKPiArCQllbmdp bmVfZGF0YS5uZW5naW5lcyA9IGk7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIGVuZ2luZV9kYXRhOwo+ ICt9Cj4gKwo+ICtpbnQgZ2VtX2NvbnRleHRfbG9va3VwX2VuZ2luZShpbnQgZmQsIHVpbnQ2NF90 IGVuZ2luZSwgdWludDMyX3QgY3R4X2lkLAo+ICsJCQkgICAgICBzdHJ1Y3QgaW50ZWxfZXhlY3V0 aW9uX2VuZ2luZTIgKmUpCj4gK3sKPiArCURFRklORV9DT05URVhUX0VOR0lORVNfUEFSQU0oZW5n aW5lcywgcGFyYW0sIGN0eF9pZCwgR0VNX01BWF9FTkdJTkVTKTsKPiArCj4gKwkvKiBhIGJpdCBw YXJhbm9pYyAqLwo+ICsJaWd0X2Fzc2VydChlKTsKPiArCj4gKwlpZiAoZ2VtX3RvcG9sb2d5X2dl dF9wYXJhbShmZCwgJnBhcmFtKSB8fCAhcGFyYW0uc2l6ZSkKPiArCQlyZXR1cm4gLUVJTlZBTDsK PiArCj4gKwllLT5jbGFzcyA9IGVuZ2luZXMuZW5naW5lc1tlbmdpbmVdLmVuZ2luZV9jbGFzczsK PiArCWUtPmluc3RhbmNlID0gZW5naW5lcy5lbmdpbmVzW2VuZ2luZV0uZW5naW5lX2luc3RhbmNl Owo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICt2b2lkIGdlbV9jb250ZXh0X3NldF9hbGxf ZW5naW5lcyhpbnQgZmQsIHVpbnQzMl90IGN0eCkKPiArewo+ICsJREVGSU5FX0NPTlRFWFRfRU5H SU5FU19QQVJBTShlbmdpbmVzLCBwYXJhbSwgY3R4LCBHRU1fTUFYX0VOR0lORVMpOwo+ICsJc3Ry dWN0IGludGVsX2VuZ2luZV9kYXRhIGVuZ2luZV9kYXRhID0geyB9Owo+ICsKPiArCWlmICghZ2Vt X3RvcG9sb2d5X2dldF9wYXJhbShmZCwgJnBhcmFtKSAmJiAhcGFyYW0uc2l6ZSkgewo+ICsJCXF1 ZXJ5X2VuZ2luZV9saXN0KGZkLCAmZW5naW5lX2RhdGEpOwo+ICsJCWN0eF9tYXBfZW5naW5lcyhm ZCwgJmVuZ2luZV9kYXRhLCAmcGFyYW0pOwo+ICsJfQo+ICt9Cj4gKwo+ICtib29sIGdlbV9oYXNf ZW5naW5lX3RvcG9sb2d5KGludCBmZCkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9jb250 ZXh0X3BhcmFtIHBhcmFtID0gewo+ICsJCS5wYXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9FTkdJ TkVTLAo+ICsJfTsKPiArCj4gKwlyZXR1cm4gIV9fZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGZkLCAm cGFyYW0pOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2xpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3ku aCBiL2xpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi4yNDE1ZmQxZTM3OWIKPiAtLS0gL2Rldi9udWxsCj4gKysr IGIvbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oCj4gQEAgLTAsMCArMSw3MCBAQAo+ICsv Kgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKgo+ICsgKiBQ ZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNv biBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQg ZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ICsgKiB0byBkZWFsIGluIHRo ZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0 aW9uCj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNo LCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhl IFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiArICogU29mdHdh cmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0 aW9uczoKPiArICoKPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVy bWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNoYWxs IGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhl Cj4gKyAqIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFT IElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBM SUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNI QU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5P TklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gKyAqIFRIRSBBVVRIT1JTIE9SIENP UFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVS Cj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQg T1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9O IFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKPiArICogSU4g VEhFIFNPRlRXQVJFLgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgR0VNX0VOR0lORV9UT1BPTE9HWV9I Cj4gKyNkZWZpbmUgR0VNX0VOR0lORV9UT1BPTE9HWV9ICj4gKwo+ICsjaW5jbHVkZSAiaWd0X2d0 LmgiCj4gKyNpbmNsdWRlICJpOTE1X2RybS5oIgo+ICsKPiArI2RlZmluZSBHRU1fTUFYX0VOR0lO RVMJCUk5MTVfRVhFQ19SSU5HX01BU0sgKyAxCj4gKwo+ICtzdHJ1Y3QgaW50ZWxfZW5naW5lX2Rh dGEgewo+ICsJdWludDMyX3QgbmVuZ2luZXM7Cj4gKwl1aW50MzJfdCBuOwo+ICsJc3RydWN0IGlu dGVsX2V4ZWN1dGlvbl9lbmdpbmUyICpjdXJyZW50X2VuZ2luZTsKPiArCXN0cnVjdCBpbnRlbF9l eGVjdXRpb25fZW5naW5lMiBlbmdpbmVzW0dFTV9NQVhfRU5HSU5FU107Cj4gK307Cj4gKwo+ICti b29sIGdlbV9oYXNfZW5naW5lX3RvcG9sb2d5KGludCBmZCk7Cj4gK3N0cnVjdCBpbnRlbF9lbmdp bmVfZGF0YSBpbnRlbF9pbml0X2VuZ2luZV9saXN0KGludCBmZCwgdWludDMyX3QgY3R4X2lkKTsK PiArCj4gKy8qIGl0ZXJhdGlvbiBmdW5jdGlvbnMgKi8KPiArc3RydWN0IGludGVsX2V4ZWN1dGlv bl9lbmdpbmUyICoKPiAraW50ZWxfZ2V0X2N1cnJlbnRfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdp bmVfZGF0YSAqZWQpOwo+ICsKPiArc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICoKPiAr aW50ZWxfZ2V0X2N1cnJlbnRfcGh5c2ljYWxfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfZGF0 YSAqZWQpOwo+ICsKPiArdm9pZCBpbnRlbF9uZXh0X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5l X2RhdGEgKmVkKTsKPiArCj4gK2ludCBnZW1fY29udGV4dF9sb29rdXBfZW5naW5lKGludCBmZCwg dWludDY0X3QgZW5naW5lLCB1aW50MzJfdCBjdHhfaWQsCj4gKwkJCSAgICAgIHN0cnVjdCBpbnRl bF9leGVjdXRpb25fZW5naW5lMiAqZSk7Cj4gKwo+ICt2b2lkIGdlbV9jb250ZXh0X3NldF9hbGxf ZW5naW5lcyhpbnQgZmQsIHVpbnQzMl90IGN0eCk7Cj4gKwo+ICsjZGVmaW5lIF9fZm9yX2VhY2hf c3RhdGljX2VuZ2luZShlX18pIFwKPiArCWZvciAoKGVfXykgPSBpbnRlbF9leGVjdXRpb25fZW5n aW5lczI7IChlX18pLT5uYW1lOyAoZV9fKSsrKQo+ICsKPiArI2RlZmluZSBmb3JfZWFjaF9jb250 ZXh0X2VuZ2luZShmZF9fLCBjdHhfXywgZV9fKSBcCj4gKwlmb3IgKHN0cnVjdCBpbnRlbF9lbmdp bmVfZGF0YSBpX18gPSBpbnRlbF9pbml0X2VuZ2luZV9saXN0KGZkX18sIGN0eF9fKTsgXAo+ICsJ ICAgICAoKGVfXykgPSBpbnRlbF9nZXRfY3VycmVudF9lbmdpbmUoJmlfXykpOyBcCj4gKwkgICAg IGludGVsX25leHRfZW5naW5lKCZpX18pKQo+ICsKPiArLyogbmVlZHMgdG8gcmVwbGFjZSAiZm9y X2VhY2hfcGh5c2ljYWxfZW5naW5lIiB3aGVuIGNvbmZsaWN0cyBhcmUgZml4ZWQgKi8KPiArI2Rl ZmluZSBfX2Zvcl9lYWNoX3BoeXNpY2FsX2VuZ2luZShmZF9fLCBlX18pIFwKPiArCWZvciAoc3Ry dWN0IGludGVsX2VuZ2luZV9kYXRhIGlfXyA9IGludGVsX2luaXRfZW5naW5lX2xpc3QoZmRfXywg MCk7IFwKPiArCSAgICAgKChlX18pID0gaW50ZWxfZ2V0X2N1cnJlbnRfcGh5c2ljYWxfZW5naW5l KCZpX18pKTsgXAo+ICsJICAgICBpbnRlbF9uZXh0X2VuZ2luZSgmaV9fKSkKPiArCj4gKyNlbmRp ZiAvKiBHRU1fRU5HSU5FX1RPUE9MT0dZX0ggKi8KPiBkaWZmIC0tZ2l0IGEvbGliL2lndC5oIGIv bGliL2lndC5oCj4gaW5kZXggNTg1MmQ1NTcxZjhiLi5hM2QzZWRjMmQ1YWMgMTAwNjQ0Cj4gLS0t IGEvbGliL2lndC5oCj4gKysrIGIvbGliL2lndC5oCj4gQEAgLTU0LDUgKzU0LDYgQEAKPiAgICNp bmNsdWRlICJtZWRpYV9zcGluLmgiCj4gICAjaW5jbHVkZSAicmVuZGVyY29weS5oIgo+ICAgI2lu Y2x1ZGUgImk5MTUvZ2VtX21tYW4uaCIKPiArI2luY2x1ZGUgImk5MTUvZ2VtX2VuZ2luZV90b3Bv bG9neS5oIgo+ICAgCj4gICAjZW5kaWYgLyogSUdUX0ggKi8KPiBkaWZmIC0tZ2l0IGEvbGliL2ln dF9ndC5oIGIvbGliL2lndF9ndC5oCj4gaW5kZXggNDc1YzBiM2MzY2M2Li41MmIyZjFlYTk1YTUg MTAwNjQ0Cj4gLS0tIGEvbGliL2lndF9ndC5oCj4gKysrIGIvbGliL2lndF9ndC5oCj4gQEAgLTk1 LDYgKzk1LDggQEAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiB7 Cj4gICAJY29uc3QgY2hhciAqbmFtZTsKPiAgIAlpbnQgY2xhc3M7Cj4gICAJaW50IGluc3RhbmNl Owo+ICsJdWludDY0X3QgZmxhZ3M7Cj4gKwlib29sIGlzX3ZpcnR1YWw7Cj4gICB9IGludGVsX2V4 ZWN1dGlvbl9lbmdpbmVzMltdOwo+ICAgCj4gICB1bnNpZ25lZCBpbnQKPiBkaWZmIC0tZ2l0IGEv bGliL21lc29uLmJ1aWxkIGIvbGliL21lc29uLmJ1aWxkCj4gaW5kZXggODA3MzY4Njg2N2Q0Li5i NmQ4ZTZjYTVhN2UgMTAwNjQ0Cj4gLS0tIGEvbGliL21lc29uLmJ1aWxkCj4gKysrIGIvbGliL21l c29uLmJ1aWxkCj4gQEAgLTUsNiArNSw3IEBAIGxpYl9zb3VyY2VzID0gWwo+ICAgCSdpOTE1L2dl bV9zdWJtaXNzaW9uLmMnLAo+ICAgCSdpOTE1L2dlbV9yaW5nLmMnLAo+ICAgCSdpOTE1L2dlbV9t bWFuLmMnLAo+ICsJJ2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5jJywKPiAgIAknaWd0X2NvbG9y X2VuY29kaW5nLmMnLAo+ICAgCSdpZ3RfZGVidWdmcy5jJywKPiAgIAknaWd0X2RldmljZS5jJywK PiAKClJldmlld2VkLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29t PgoKUmVnYXJkcywKClR2cnRrbwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1k ZXY=