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 5C0288947A for ; Mon, 18 Nov 2019 11:33:36 +0000 (UTC) References: <20191115121445.11693-1-petri.latvala@intel.com> <20191118100559.GU25209@platvala-desk.ger.corp.intel.com> From: Tvrtko Ursulin Message-ID: <28cf55ee-cb33-8750-d9fe-eb25a42f1d8c@linux.intel.com> Date: Mon, 18 Nov 2019 11:33:32 +0000 MIME-Version: 1.0 In-Reply-To: <20191118100559.GU25209@platvala-desk.ger.corp.intel.com> Content-Language: en-US Subject: Re: [igt-dev] [RFC PATCH i-g-t] lib/i915: Generate engine names at runtime 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: Petri Latvala Cc: igt-dev@lists.freedesktop.org, Tvrtko Ursulin List-ID: Ck9uIDE4LzExLzIwMTkgMTA6MDUsIFBldHJpIExhdHZhbGEgd3JvdGU6Cj4gT24gRnJpLCBOb3Yg MTUsIDIwMTkgYXQgMDQ6MDE6NDVQTSArMDAwMCwgVHZydGtvIFVyc3VsaW4gd3JvdGU6Cj4+IE9u IDE1LzExLzIwMTkgMTI6MTQsIFBldHJpIExhdHZhbGEgd3JvdGU6Cj4+PiBUaGUga2VybmVsIHN1 cHBsaWVzIHVzIGFuIGVuZ2luZSBsaXN0IHdpdGggZW5naW5lIGNsYXNzIGFuZCBhbgo+Pj4gaW5z dGFuY2UgaWQuIElmIHRoZSBoYXJkY29kZWQgZW5naW5lIGxpc3QgZG9lc24ndCBoYXZlIHRoZQo+ Pj4gY2xhc3MraW5zdGFuY2Ugd2UgZ2V0LCBjb25zdHJ1Y3QgdGhlIGVuZ2luZSBuYW1lIHdpdGgg cHJpbnRmIGluc3RlYWQKPj4+IG9mIGNhbGxpbmcgYWRkaXRpb25hbCBlbmdpbmVzICJ1bmtub3du Ii4KPj4+Cj4+PiBTaWduZWQtb2ZmLWJ5OiBQZXRyaSBMYXR2YWxhIDxwZXRyaS5sYXR2YWxhQGlu dGVsLmNvbT4KPj4+IENjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4K Pj4+IENjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+Pj4gQ2M6 IEFuZGkgU2h5dGkgPGFuZGkuc2h5dGlAaW50ZWwuY29tPgo+Pj4gQ2M6IEthdGFyenluYSBEZWMg PGthdGFyenluYS5kZWNAaW50ZWwuY29tPgo+Pj4KPj4+IC0tLQo+Pj4gICAgbGliL2k5MTUvZ2Vt X2VuZ2luZV90b3BvbG9neS5jIHwgMjcgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCj4+PiAg ICBsaWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmggfCAgMiArLQo+Pj4gICAgbGliL2lndF9n dC5jICAgICAgICAgICAgICAgICAgIHwgIDggKysrKysrKysKPj4+ICAgIGxpYi9pZ3RfZ3QuaCAg ICAgICAgICAgICAgICAgICB8ICA3ICsrKysrKy0KPj4+ICAgIDQgZmlsZXMgY2hhbmdlZCwgMzQg aW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCj4+Pgo+Pj4gZGlmZiAtLWdpdCBhL2xpYi9p OTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuYyBiL2xpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3ku Ywo+Pj4gaW5kZXggNzkwZDQ1NWYuLjA3MDdmMjM3IDEwMDY0NAo+Pj4gLS0tIGEvbGliL2k5MTUv Z2VtX2VuZ2luZV90b3BvbG9neS5jCj4+PiArKysgYi9saWIvaTkxNS9nZW1fZW5naW5lX3RvcG9s b2d5LmMKPj4+IEBAIC0xMDMsNiArMTAzLDcgQEAgc3RhdGljIHZvaWQgaW5pdF9lbmdpbmUoc3Ry dWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplMiwKPj4+ICAgIAljb25zdCBzdHJ1Y3QgaW50 ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKl9fZTI7Cj4+PiAgICAJc3RhdGljIGNvbnN0IGNoYXIgKnVu a25vd25fbmFtZSA9ICJ1bmtub3duIiwKPj4+ICAgIAkJCSAgKnZpcnR1YWxfbmFtZSA9ICJ2aXJ0 dWFsIjsKPj4+ICsJY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmVfY2xhc3MgKmNs czsKPj4+ICAgIAllMi0+Y2xhc3MgICAgPSBjbGFzczsKPj4+ICAgIAllMi0+aW5zdGFuY2UgPSBp bnN0YW5jZTsKPj4+IEBAIC0xMTEsNyArMTEyLDcgQEAgc3RhdGljIHZvaWQgaW5pdF9lbmdpbmUo c3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplMiwKPj4+ICAgIAkvKiBlbmdpbmUgaXMg YSB2aXJ0dWFsIGVuZ2luZSAqLwo+Pj4gICAgCWlmIChjbGFzcyA9PSBJOTE1X0VOR0lORV9DTEFT U19JTlZBTElEICYmCj4+PiAgICAJICAgIGluc3RhbmNlID09IEk5MTVfRU5HSU5FX0NMQVNTX0lO VkFMSURfVklSVFVBTCkgewo+Pj4gLQkJZTItPm5hbWUgPSB2aXJ0dWFsX25hbWU7Cj4+PiArCQlz dHJuY3B5KGUyLT5uYW1lLCB2aXJ0dWFsX25hbWUsIHNpemVvZihlMi0+bmFtZSkpOwo+Pj4gICAg CQllMi0+aXNfdmlydHVhbCA9IHRydWU7Cj4+PiAgICAJCXJldHVybjsKPj4+ICAgIAl9Cj4+PiBA QCAtMTIwLDEyICsxMjEsMjIgQEAgc3RhdGljIHZvaWQgaW5pdF9lbmdpbmUoc3RydWN0IGludGVs X2V4ZWN1dGlvbl9lbmdpbmUyICplMiwKPj4+ICAgIAkJaWYgKF9fZTItPmNsYXNzID09IGNsYXNz ICYmIF9fZTItPmluc3RhbmNlID09IGluc3RhbmNlKQo+Pj4gICAgCQkJYnJlYWs7Cj4+PiAtCWlm IChfX2UyLT5uYW1lKSB7Cj4+PiAtCQllMi0+bmFtZSA9IF9fZTItPm5hbWU7Cj4+PiArCWlmIChf X2UyLT5uYW1lWzBdKSB7Cj4+PiArCQlzdHJuY3B5KGUyLT5uYW1lLCBfX2UyLT5uYW1lLCBzaXpl b2YoZTItPm5hbWUpKTsKPj4+ICAgIAl9IGVsc2Ugewo+Pj4gLQkJaWd0X3dhcm4oImZvdW5kIHVu a25vd24gZW5naW5lICglZCwgJWQpXG4iLCBjbGFzcywgaW5zdGFuY2UpOwo+Pj4gLQkJZTItPm5h bWUgPSB1bmtub3duX25hbWU7Cj4+PiAtCQllMi0+ZmxhZ3MgPSAtMTsKPj4+ICsJCWZvciAoY2xz ID0gaW50ZWxfZXhlY3V0aW9uX2VuZ2luZV9jbGFzc19tYXA7IGNscy0+bmFtZTsgY2xzKyspIHsK Pj4+ICsJCQlpZiAoY2xzLT5jbGFzcyA9PSBjbGFzcykgewo+Pj4gKwkJCQlzbnByaW50ZihlMi0+ bmFtZSwgc2l6ZW9mKGUyLT5uYW1lKSwgIiVzJWQiLCBjbHMtPm5hbWUsIGluc3RhbmNlKTsKPj4+ ICsJCQkJaWd0X2luZm8oInVua25vd24gYnV0IHN1cHBvcnRlZCBlbmdpbmUgJXMgZm91bmRcbiIs IGUyLT5uYW1lKTsKPj4KPj4gSG0gbm90IHJlYWxseSB1bmtub3duLCBqdXN0IGEgbmV3IGluc3Rh bmNlIHJlbGF0aXZlIHRvIHRoZSBzdGF0aWMgdGFibGUuIEknZAo+PiBwcm9iYWJseSBkb3duZ3Jh ZGUgdGhpcyB0byBkZWJ1ZyBsZXZlbD8KPiAKPiBBaCwgYSBsZWZ0b3ZlciBmcm9tIG15IGRlYnVn Z2luZywgaXJvbmljYWxseS4KPiAKPj4KPj4+ICsJCQkJYnJlYWs7Cj4+PiArCQkJfQo+Pj4gKwkJ fQo+Pj4gKwo+Pj4gKwkJaWYgKCFlMi0+bmFtZVswXSkgewo+Pj4gKwkJCWlndF9pbmZvKCJmb3Vu ZCB1bmtub3duIGVuZ2luZSAoJWQsICVkKVxuIiwgY2xhc3MsIGluc3RhbmNlKTsKPj4+ICsJCQlz dHJuY3B5KGUyLT5uYW1lLCB1bmtub3duX25hbWUsIHNpemVvZihlMi0+bmFtZSkpOwo+Pgo+PiB1 bmtub3duPGNsYXNzPjo8aW5zdGFuY2U+ID8KPj4KPj4gQW5kIHNheSB1bmtub3duIF9jbGFzc18g aW4gdGhlIGxvZyBtZXNzYWdlPwo+IAo+IE9rLgo+IAo+Pgo+Pgo+Pj4gKwkJCWUyLT5mbGFncyA9 IC0xOwo+Pj4gKwkJfQo+Pj4gICAgCX0KPj4+ICAgIAkvKiBqdXN0IHRvIHJlbWFyayBpdCAqLwo+ Pj4gQEAgLTIyMyw3ICsyMzQsNyBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2RhdGEgaW50ZWxfaW5p dF9lbmdpbmVfbGlzdChpbnQgZmQsIHVpbnQzMl90IGN0eF9pZCkKPj4+ICAgIAkJCXN0cnVjdCBp bnRlbF9leGVjdXRpb25fZW5naW5lMiAqX19lMiA9Cj4+PiAgICAJCQkJJmVuZ2luZV9kYXRhLmVu Z2luZXNbZW5naW5lX2RhdGEubmVuZ2luZXNdOwo+Pj4gLQkJCV9fZTItPm5hbWUgICAgICAgPSBl Mi0+bmFtZTsKPj4+ICsJCQlzdHJuY3B5KF9fZTItPm5hbWUsIGUyLT5uYW1lLCBzaXplb2YoX19l Mi0+bmFtZSkpOwo+Pj4gICAgCQkJX19lMi0+aW5zdGFuY2UgICA9IGUyLT5pbnN0YW5jZTsKPj4+ ICAgIAkJCV9fZTItPmNsYXNzICAgICAgPSBlMi0+Y2xhc3M7Cj4+PiAgICAJCQlfX2UyLT5mbGFn cyAgICAgID0gZTItPmZsYWdzOwo+Pj4gQEAgLTMwMiw3ICszMTMsNyBAQCBzdHJ1Y3QgaW50ZWxf ZXhlY3V0aW9uX2VuZ2luZTIgZ2VtX2ViX2ZsYWdzX3RvX2VuZ2luZSh1bnNpZ25lZCBpbnQgZmxh Z3MpCj4+PiAgICAJaWYgKHJpbmcgPT0gSTkxNV9FWEVDX0RFRkFVTFQpIHsKPj4+ICAgIAkJZTJf Xy5mbGFncyA9IEk5MTVfRVhFQ19ERUZBVUxUOwo+Pj4gLQkJZTJfXy5uYW1lID0gImRlZmF1bHQi Owo+Pj4gKwkJc3RybmNweShlMl9fLm5hbWUsICJkZWZhdWx0Iiwgc2l6ZW9mKGUyX18ubmFtZSkp Owo+Pj4gICAgCX0gZWxzZSB7Cj4+PiAgICAJCWNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25f ZW5naW5lMiAqZTI7Cj4+PiBkaWZmIC0tZ2l0IGEvbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9n eS5oIGIvbGliL2k5MTUvZ2VtX2VuZ2luZV90b3BvbG9neS5oCj4+PiBpbmRleCBkOTg3NzNlMC4u NTI1NzQxY2MgMTAwNjQ0Cj4+PiAtLS0gYS9saWIvaTkxNS9nZW1fZW5naW5lX3RvcG9sb2d5LmgK Pj4+ICsrKyBiL2xpYi9pOTE1L2dlbV9lbmdpbmVfdG9wb2xvZ3kuaAo+Pj4gQEAgLTYxLDcgKzYx LDcgQEAgYm9vbCBnZW1fZW5naW5lX2lzX2VxdWFsKGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRp b25fZW5naW5lMiAqZTEsCj4+PiAgICBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgZ2Vt X2ViX2ZsYWdzX3RvX2VuZ2luZSh1bnNpZ25lZCBpbnQgZmxhZ3MpOwo+Pj4gICAgI2RlZmluZSBf X2Zvcl9lYWNoX3N0YXRpY19lbmdpbmUoZV9fKSBcCj4+PiAtCWZvciAoKGVfXykgPSBpbnRlbF9l eGVjdXRpb25fZW5naW5lczI7IChlX18pLT5uYW1lOyAoZV9fKSsrKQo+Pj4gKwlmb3IgKChlX18p ID0gaW50ZWxfZXhlY3V0aW9uX2VuZ2luZXMyOyAoZV9fKS0+bmFtZVswXTsgKGVfXykrKykKPj4+ ICAgICNkZWZpbmUgZm9yX2VhY2hfY29udGV4dF9lbmdpbmUoZmRfXywgY3R4X18sIGVfXykgXAo+ Pj4gICAgCWZvciAoc3RydWN0IGludGVsX2VuZ2luZV9kYXRhIGlfXyA9IGludGVsX2luaXRfZW5n aW5lX2xpc3QoZmRfXywgY3R4X18pOyBcCj4+PiBkaWZmIC0tZ2l0IGEvbGliL2lndF9ndC5jIGIv bGliL2lndF9ndC5jCj4+PiBpbmRleCAyNTZjN2NiYy4uMjVlNmM0NTUgMTAwNjQ0Cj4+PiAtLS0g YS9saWIvaWd0X2d0LmMKPj4+ICsrKyBiL2xpYi9pZ3RfZ3QuYwo+Pj4gQEAgLTU5Niw2ICs1OTYs MTQgQEAgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyIGludGVsX2V4ZWN1dGlv bl9lbmdpbmVzMltdID0gewo+Pj4gICAgCXsgfQo+Pj4gICAgfTsKPj4+ICtjb25zdCBzdHJ1Y3Qg aW50ZWxfZXhlY3V0aW9uX2VuZ2luZV9jbGFzcyBpbnRlbF9leGVjdXRpb25fZW5naW5lX2NsYXNz X21hcFtdID0gewo+Pj4gKwl7ICJyY3MiLCBJOTE1X0VOR0lORV9DTEFTU19SRU5ERVIgfSwKPj4+ ICsJeyAiYmNzIiwgSTkxNV9FTkdJTkVfQ0xBU1NfQ09QWSB9LAo+Pj4gKwl7ICJ2Y3MiLCBJOTE1 X0VOR0lORV9DTEFTU19WSURFTyB9LAo+Pj4gKwl7ICJ2ZWNzIiwgSTkxNV9FTkdJTkVfQ0xBU1Nf VklERU9fRU5IQU5DRSB9LAo+Pj4gKwl7IH0KPj4+ICt9Owo+Pj4gKwo+Pj4gICAgaW50IGdlbV9l eGVjYnVmX2ZsYWdzX3RvX2VuZ2luZV9jbGFzcyh1bnNpZ25lZCBpbnQgZmxhZ3MpCj4+PiAgICB7 Cj4+PiAgICAJc3dpdGNoIChmbGFncyAmIDB4M2YpIHsKPj4+IGRpZmYgLS1naXQgYS9saWIvaWd0 X2d0LmggYi9saWIvaWd0X2d0LmgKPj4+IGluZGV4IDY2MDg4ZDM5Li4wMjY4MDMxZiAxMDA2NDQK Pj4+IC0tLSBhL2xpYi9pZ3RfZ3QuaAo+Pj4gKysrIGIvbGliL2lndF9ndC5oCj4+PiBAQCAtOTUs MTMgKzk1LDE4IEBAIGJvb2wgZ2VtX2Nhbl9zdG9yZV9kd29yZChpbnQgZmQsIHVuc2lnbmVkIGlu dCBlbmdpbmUpOwo+Pj4gICAgYm9vbCBnZW1fY2xhc3NfY2FuX3N0b3JlX2R3b3JkKGludCBmZCwg aW50IGNsYXNzKTsKPj4+ICAgIGV4dGVybiBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2Vu Z2luZTIgewo+Pj4gLQljb25zdCBjaGFyICpuYW1lOwo+Pj4gKwljaGFyIG5hbWVbMTBdOwo+Pj4g ICAgCWludCBjbGFzczsKPj4+ICAgIAlpbnQgaW5zdGFuY2U7Cj4+PiAgICAJdWludDY0X3QgZmxh Z3M7Cj4+PiAgICAJYm9vbCBpc192aXJ0dWFsOwo+Pj4gICAgfSBpbnRlbF9leGVjdXRpb25fZW5n aW5lczJbXTsKPj4+ICtleHRlcm4gY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmVf Y2xhc3Mgewo+Pj4gKwljb25zdCBjaGFyICpuYW1lOwo+Pj4gKwlpbnQgY2xhc3M7Cj4+PiArfSBp bnRlbF9leGVjdXRpb25fZW5naW5lX2NsYXNzX21hcFtdOwo+Pj4gKwo+Pj4gICAgaW50IGdlbV9l eGVjYnVmX2ZsYWdzX3RvX2VuZ2luZV9jbGFzcyh1bnNpZ25lZCBpbnQgZmxhZ3MpOwo+Pj4gICAg I2VuZGlmIC8qIElHVF9HVF9IICovCj4+Pgo+Pgo+PiBJbXBsZW1lbnRhdGlvbiBsb29rcyBva2F5 IHRvIG1lLCBidXQgd2hhdCBkb2VzIGl0IGdhaW5zIHVzPyBQb3RlbnRpYWxseQo+PiBpbnRyb2R1 Y2VzIGEgc2xpZ2h0IGNvbmZ1c2lvbiBiZXR3ZWVuIHN1YnRlc3RzIGFzIGVudW1lcmF0ZWQgYnkg ZW5naW5lIGFuZAo+PiBlbmdpbmVzIGl0ZXJhdGVkIGluc2lkZSBzb21lIHRlc3RzLgo+IAo+IFdo ZW4gYWxsIHRlc3RzIHRoYXQgZW51bWVyYXRlIHN1YnRlc3RzIHBlciBlbmdpbmUgaGF2ZSBiZWVu IGNvbnZlcnRlZAo+IHRvIGR5bmFtaWMgc3VidGVzdHMsIHRoaXMgcmVkdWNlcyB0aGUgcG9zc2li bGUgbWFpbnRlbmFuY2UgYnVyZGVuIGluCj4gdGhlIGNvbWluZyB5ZWFycyB3aGVuIHdlIG1pZ2h0 IGhhdmUgbW9yZSBlbmdpbmVzLiBJbWFnaW5lIGhhdmluZyBhIG5ldwo+IGRldmljZSB0b21vcnJv dyB3aXRoIHZjczMgZm9yIGV4YW1wbGUuIFdpdGggdGhpcyBwYXRjaCBpdCBkb2Vzbid0Cj4gcmVx dWlyZSBmdXJ0aGVyIElHVCBjaGFuZ2VzIHRvIGJlIHRlc3RlZC4KPiAKPiBJIHNob3VsZCBoYXZl IHNhaWQgdGhhdCBtZXJnaW5nIHRoaXMgcHJhY3RpY2FsbHkgcmVxdWlyZXMgYWxsCj4gcGVyLWVu Z2luZSBzdWJ0ZXN0IGVudW1lcmF0aW9uIGNvbnZlcnRlZCB0byBkeW5hbWljIHN1YnRlc3RzIGZp cnN0Li4uCj4gCj4gCj4+Cj4+IE9ubHkgYW4gaW50ZXJpbSBzdGVwIGJlZm9yZSBlbGltaW5hdGlv biBvZiB0aGUgc3RhdGljIGFycmF5PyBCdXQgZGFuZ2VyIGlzCj4+IGluIHRoZSBhYm92ZSBtaXNt YXRjaC4KPiAKPiBXaGF0IG1pc21hdGNoPyAqY29uZnVzaW9uKiBJZiB5b3UgbWVhbiB0aGUgZW51 bWVyYXRpb24sIEkgaG9wZSB0aGUKPiBhYm92ZSBwYXJhZ3JhcGggYWxsZXZpYXRlcyB0aGUgZGFu Z2VycyB5b3Ugc2VlLgo+IAo+IEludGVyaW0gc3RlcCB5ZXMsIEkgd291bGRuJ3QgY2FsbCB0aGlz IGFueXdoZXJlIGNsb3NlIHRvIGNsZWFuIGNvZGUKPiBhdG0uCj4gCj4gQ3VycmVudGx5IHdlIG5l ZWQgdGhlIHN0YXRpYyBhcnJheSBmb3IgdHdvIHRoaW5nczoKPiAKPiAxKSBzdWJ0ZXN0IGVudW1l cmF0aW9uCj4gMikgY2FycnlpbmcgdGhlIGZsYWdzIGZvciB0aGUgIm9sZC1zdHlsZSIgZXhlY3V0 aW9uCj4gCj4gSSdtIGhvcGluZyB3ZSBjYW4gZHJvcCAxKSBzb29uZXIgdGhhbiBsYXRlci4KCk5v IG5lZWQgdG8gZXhwbGFpbiB0aGUgYWR2YW50YWdlcy4gOykgSWYgdGhpcyB3b3VsZCBiZSBtZXJn ZWQgdG9nZXRoZXIgCndpdGggcmVtb3ZhbCBvZiB0aGUgc3RhdGljIGFycmF5LCB0aGF0IGlzLCBh bGwgZW5naW5lIHRlc3RzIHdlcmUgCmNvbnZlcnRlZCB0byBkeW5hbWljLCB0aGVyZSB3b3VsZCBi ZSBubyBpc3N1ZS4gQnV0IGlmIHdlIG1lcmdlIHRoaXMgCmJlZm9yZSwgdGhlbiB3ZSBoYXZlIGEg Y29uZnVzaW9uIHdoZXJlIHNvbWUgdGVzdHMsIHdoaWNoIHNlZW1pbmdseSB1c2UgCnRoZSBuZXcg QVBJIChoYXZlIGJlZW4gY29udmVydGVkKSwgY2FuIHNlZSBzb21lIGVuZ2luZXMgYW5kIHNvbWUg Y2Fubm90LgoKSSB0aGluayB0aGF0IGNvbXBsYWludCB3b3VsZCBnbyBhd2F5IGlmIHlvdSBkaWRu J3QgaW5jbHVkZSB0aGUgInVua25vd24gCmJ1dCBzdXBwb3J0ZWQiIGNoYW5nZSBpbiB0aGlzIHBh dGNoLiBUaGVuIGl0IHdvdWxkIGJlaGF2ZSBsaWtlIHRoZSAKY3VycmVudCBjb2RlIHdoZXJlIGlm IHRoZSBlbmdpbmUgaXMgbm90IGluIHRoZSBzdGF0aWMgbGlzdCBpdCBhbHdheXMgCnJlZnVzZXMg dG8gdXNlIGl0LgoKQWx0aG91Z2ggSSBhbSBub3Qgc3VyZSBob3cgaW1wb3J0YW50IHRoYXQgaXMs IEkgZ3Vlc3MgaXQgaXMgb3BlbiBmb3IgCmRpc2N1c3Npb24uCgpQZXJoYXBzIHlvdSBjb3VsZCBz cGxpdCB0aGUgcGF0Y2ggaW50byB0d28sIHdoZXJlIHRoZSBmaXJzdCBvbmUganVzdCAKYWRkcyB0 aGUgcnVudGltZSBuYW1lIGdlbmVyYXRpb24sIGFuZCBzZWNvbmQgb25lIGV4dGVuZHMgd2l0aCBz dXBwb3J0IApmb3IgdW5rbm93biBlbmdpbmVzIG9mIGEga25vd24gY2xhc3M/CgpSZWdhcmRzLAoK VHZydGtvCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmln dC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==