From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: References: <20180319182205.29454-1-tvrtko.ursulin@linux.intel.com> <20180319182205.29454-5-tvrtko.ursulin@linux.intel.com> <152149308453.3594.8973938010545694941@mail.alporthouse.com> From: Tvrtko Ursulin Message-ID: <87510b5a-221f-28f2-df6d-86bdac580f52@linux.intel.com> Date: Fri, 23 Mar 2018 10:08:05 +0000 MIME-Version: 1.0 In-Reply-To: <152149308453.3594.8973938010545694941@mail.alporthouse.com> Content-Language: en-GB Subject: Re: [igt-dev] [Intel-gfx] [PATCH i-g-t 4/5] tests/perf_pmu: Add tests for engine queued/runnable/running stats 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: Chris Wilson , Tvrtko Ursulin , igt-dev@lists.freedesktop.org Cc: Intel-gfx@lists.freedesktop.org List-ID: Ck9uIDE5LzAzLzIwMTggMjA6NTgsIENocmlzIFdpbHNvbiB3cm90ZToKPiBRdW90aW5nIFR2cnRr byBVcnN1bGluICgyMDE4LTAzLTE5IDE4OjIyOjA0KQo+PiBGcm9tOiBUdnJ0a28gVXJzdWxpbiA8 dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+Pgo+PiBTaW1wbGUgdGVzdHMgdG8gY2hlY2sgcmVw b3J0ZWQgcXVldWUgZGVwdGhzIGFyZSBjb3JyZWN0Lgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBUdnJ0 a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+PiAtLS0KPj4gICB0ZXN0cy9w ZXJmX3BtdS5jIHwgMjI0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKPj4gICAxIGZpbGUgY2hhbmdlZCwgMjI0IGluc2VydGlvbnMoKykKPj4K Pj4gZGlmZiAtLWdpdCBhL3Rlc3RzL3BlcmZfcG11LmMgYi90ZXN0cy9wZXJmX3BtdS5jCj4+IGlu ZGV4IDQ2OWI5YmVjZGJhYy4uMjA2YzE4OTYwYjdiIDEwMDY0NAo+PiAtLS0gYS90ZXN0cy9wZXJm X3BtdS5jCj4+ICsrKyBiL3Rlc3RzL3BlcmZfcG11LmMKPj4gQEAgLTk2Niw2ICs5NjYsMTk2IEBA IG11bHRpX2NsaWVudChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2Vu Z2luZTIgKmUpCj4+ICAgICAgICAgIGFzc2VydF93aXRoaW5fZXBzaWxvbih2YWxbMV0sIHBlcmZf c2xlcHRbMV0sIHRvbGVyYW5jZSk7Cj4+ICAgfQo+PiAgIAo+PiArc3RhdGljIGRvdWJsZSBjYWxj X3F1ZXVlZCh1aW50NjRfdCBkX3ZhbCwgdWludDY0X3QgZF9ucykKPj4gK3sKPj4gKyAgICAgICBy ZXR1cm4gKGRvdWJsZSlkX3ZhbCAqIDFlOSAvIEk5MTVfU0FNUExFX1FVRVVFRF9ESVZJU09SIC8g ZF9uczsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQKPj4gK3F1ZXVlZChpbnQgZ2VtX2ZkLCBj b25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCj4+ICt7Cj4+ICsgICAgICAg Y29uc3QgdW5zaWduZWQgbG9uZyBlbmdpbmUgPSBlMnJpbmcoZ2VtX2ZkLCBlKTsKPj4gKyAgICAg ICBjb25zdCB1bnNpZ25lZCBpbnQgbWF4X3JxID0gMTA7Cj4+ICsgICAgICAgZG91YmxlIHF1ZXVl ZFttYXhfcnEgKyAxXTsKPj4gKyAgICAgICB1aW50MzJfdCBib1ttYXhfcnEgKyAxXTsKPj4gKyAg ICAgICB1bnNpZ25lZCBpbnQgbiwgaTsKPj4gKyAgICAgICB1aW50NjRfdCB2YWxbMl07Cj4+ICsg ICAgICAgdWludDY0X3QgdHNbMl07Cj4+ICsgICAgICAgaW50IGZkOwo+IAo+IGlndF9yZXF1aXJl X3N3X3N5bmMoKTsKPiAKPiBJIGd1ZXNzIHdlIHNob3VsZCBkbyBpZ3RfcmVxdWlyZV9jb3JrKENP UktfU1lOQ19GRCkgb3Igc29tZXRoaW5nIGxpa2UKPiB0aGF0Lgo+IAo+PiArCj4+ICsgICAgICAg bWVtc2V0KHF1ZXVlZCwgMCwgc2l6ZW9mKHF1ZXVlZCkpOwo+PiArICAgICAgIG1lbXNldChibywg MCwgc2l6ZW9mKGJvKSk7Cj4+ICsKPj4gKyAgICAgICBmZCA9IG9wZW5fcG11KEk5MTVfUE1VX0VO R0lORV9RVUVVRUQoZS0+Y2xhc3MsIGUtPmluc3RhbmNlKSk7Cj4+ICsKPj4gKyAgICAgICBmb3Ig KG4gPSAwOyBuIDw9IG1heF9ycTsgbisrKSB7Cj4+ICsgICAgICAgICAgICAgICBpbnQgZmVuY2Ug PSAtMTsKPj4gKyAgICAgICAgICAgICAgIHN0cnVjdCBpZ3RfY29yayBjb3JrID0geyAuZmQgPSBm ZW5jZSwgLnR5cGUgPSBDT1JLX1NZTkNfRkQgfTsKPiAKPiBJR1RfQ09SS19GRU5DRShjb3JrKTsg aWYgeW91IHByZWZlcgoKTWlzc2VkIGl0LgoKPiAKPj4gKwo+PiArICAgICAgICAgICAgICAgZ2Vt X3F1aWVzY2VudF9ncHUoZ2VtX2ZkKTsKPj4gKwo+PiArICAgICAgICAgICAgICAgaWYgKG4pCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgIGZlbmNlID0gaWd0X2NvcmtfcGx1ZygmY29yaywgLTEp Owo+PiArCj4+ICsgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Cj4+ICsg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyIG9i aiA9IHsgfTsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9l eGVjYnVmZmVyMiBlYiA9IHsgfTsKPj4gKwo+PiArICAgICAgICAgICAgICAgICAgICAgICBpZiAo IWJvW2ldKSB7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDMy X3QgYmJlID0gTUlfQkFUQ0hfQlVGRkVSX0VORDsKPj4gKwo+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJvW2ldID0gZ2VtX2NyZWF0ZShnZW1fZmQsIDQwOTYpOwo+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGdlbV93cml0ZShnZW1fZmQsIGJvW2ldLCA0MDkyLCAm YmJlLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yo YmJlKSk7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIH0KPj4gKwo+PiArICAgICAgICAgICAg ICAgICAgICAgICBvYmouaGFuZGxlID0gYm9baV07Cj4gCj4gTG9va3MgbGlrZSB5b3UgY2FuIHVz ZSBqdXN0IHRoZSBvbmUgaGFuZGxlIG11bHRpcGxlIHRpbWVzPwoKSG0geWVhaC4KCj4gCj4+ICsK Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgZWIuYnVmZmVyX2NvdW50ID0gMTsKPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgZWIuYnVmZmVyc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJm9iaik7 Cj4+ICsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgZWIuZmxhZ3MgPSBlbmdpbmUgfCBJOTE1 X0VYRUNfRkVOQ0VfSU47Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGViLnJzdmQyID0gZmVu Y2U7Cj4gCj4gWW91IGRvIGhvd2V2ZXIgYWxzbyB3YW50IHRvIGNoZWNrIHdpdGggb25lIGNvbnRl eHQgcGVyIGV4ZWNidWYuCgpPay4KCj4gCj4gaWYgKGZsYWdzICYgQ09OVEVYVFMpCj4gCWViLnJz dmQxID0gZ2VtX2NvbnRleHRfY3JlYXRlKGZkKTsKPj4gKwo+PiArICAgICAgICAgICAgICAgICAg ICAgICBnZW1fZXhlY2J1ZihnZW1fZmQsICZlYik7Cj4gCj4gaWYgKGZsYWdzICYgQ09OVEVYVFMp Cj4gCWdlbV9jb250ZXh0X2Rlc3Ryb3koZmQsIGViLnJzdmQxKTsKPiAJZWIucnN2ZDEgPSBnZW1f Y29udGV4dF9jcmVhdGUoKTsKPiAKPj4gKyAgICAgICAgICAgICAgIH0KPj4gKwo+PiArICAgICAg ICAgICAgICAgdmFsWzBdID0gX19wbXVfcmVhZF9zaW5nbGUoZmQsICZ0c1swXSk7Cj4+ICsgICAg ICAgICAgICAgICB1c2xlZXAoYmF0Y2hfZHVyYXRpb25fbnMgLyAxMDAwKTsKPj4gKyAgICAgICAg ICAgICAgIHZhbFsxXSA9IF9fcG11X3JlYWRfc2luZ2xlKGZkLCAmdHNbMV0pOwo+PiArCj4+ICsg ICAgICAgICAgICAgICBxdWV1ZWRbbl0gPSBjYWxjX3F1ZXVlZCh2YWxbMV0gLSB2YWxbMF0sIHRz WzFdIC0gdHNbMF0pOwo+PiArICAgICAgICAgICAgICAgaWd0X2luZm8oIm49JXUgcXVldWVkPSUu MmZcbiIsIG4sIHF1ZXVlZFtuXSk7Cj4+ICsKPj4gKyAgICAgICAgICAgICAgIGlmIChmZW5jZSA+ PSAwKQo+PiArICAgICAgICAgICAgICAgICAgICAgICBpZ3RfY29ya191bnBsdWcoJmNvcmspOwo+ IAo+IE1heWJlIHdlIHNob3VsZCBqdXN0IG1ha2UgdGhpcyBhIG5vLW9wIHdoZW4gdXNlZCBvbiBh biB1bnBsdWdnZWQgY29yay4KCkRvbid0IGtub3cgcmVhbGx5LCB0aGVyZSdzIGFuIGFzc2VydCBp biB0aGVyZSBhbmQgSSBkaWRuJ3QgZmVlbCBsaWtlIApldmFsdWF0aW5nIGFsbCBjYWxsZXJzLgoK PiAKPj4gKwo+PiArICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykKPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgZ2VtX3N5bmMoZ2VtX2ZkLCBib1tpXSk7Cj4+ICsgICAgICAg fQo+PiArCj4+ICsgICAgICAgY2xvc2UoZmQpOwo+PiArCj4+ICsgICAgICAgZm9yIChpID0gMDsg aSA8IG1heF9ycTsgaSsrKSB7Cj4+ICsgICAgICAgICAgICAgICBpZiAoYm9baV0pCj4+ICsgICAg ICAgICAgICAgICAgICAgICAgIGdlbV9jbG9zZShnZW1fZmQsIGJvW2ldKTsKPj4gKyAgICAgICB9 Cj4+ICsKPj4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDw9IG1heF9ycTsgaSsrKQo+PiArICAgICAg ICAgICAgICAgYXNzZXJ0X3dpdGhpbl9lcHNpbG9uKHF1ZXVlZFtpXSwgaSwgdG9sZXJhbmNlKTsK Pj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQKPj4gK3J1bm5hYmxlKGludCBnZW1fZmQsIGNvbnN0 IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKPj4gK3sKPj4gKyAgICAgICBjb25z dCB1bnNpZ25lZCBsb25nIGVuZ2luZSA9IGUycmluZyhnZW1fZmQsIGUpOwo+PiArICAgICAgIGNv bnN0IHVuc2lnbmVkIGludCBtYXhfcnEgPSAxMDsKPj4gKyAgICAgICBpZ3Rfc3Bpbl90ICpzcGlu W21heF9ycSArIDFdOwo+PiArICAgICAgIGRvdWJsZSBydW5uYWJsZVttYXhfcnEgKyAxXTsKPj4g KyAgICAgICB1aW50MzJfdCBjdHhbbWF4X3JxXTsKPj4gKyAgICAgICB1bnNpZ25lZCBpbnQgbiwg aTsKPj4gKyAgICAgICB1aW50NjRfdCB2YWxbMl07Cj4+ICsgICAgICAgdWludDY0X3QgdHNbMl07 Cj4+ICsgICAgICAgaW50IGZkOwo+PiArCj4+ICsgICAgICAgbWVtc2V0KHJ1bm5hYmxlLCAwLCBz aXplb2YocnVubmFibGUpKTsKPj4gKyAgICAgICBtZW1zZXQoY3R4LCAwLCBzaXplb2YoY3R4KSk7 Cj4+ICsKPj4gKyAgICAgICBmZCA9IG9wZW5fcG11KEk5MTVfUE1VX0VOR0lORV9SVU5OQUJMRShl LT5jbGFzcywgZS0+aW5zdGFuY2UpKTsKPj4gKwo+PiArICAgICAgIGZvciAobiA9IDA7IG4gPD0g bWF4X3JxOyBuKyspIHsKPj4gKyAgICAgICAgICAgICAgIGdlbV9xdWllc2NlbnRfZ3B1KGdlbV9m ZCk7Cj4+ICsKPj4gKyAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKPj4g KyAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjdHhbaV0pCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY3R4W2ldID0gZ2VtX2NvbnRleHRfY3JlYXRlKGdlbV9mZCk7Cj4+ICsK Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gMCkKPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzcGluW2ldID0gX19zcGluX3BvbGwoZ2VtX2ZkLCBjdHhbaV0sIGVu Z2luZSk7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzcGluW2ldID0gX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZ2VtX2ZkLCBj dHhbaV0sCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGVuZ2luZSwgMCk7Cj4+ICsgICAgICAgICAgICAgICB9Cj4+ICsKPj4g KyAgICAgICAgICAgICAgIGlmIChuKQo+PiArICAgICAgICAgICAgICAgICAgICAgICBfX3NwaW5f d2FpdChnZW1fZmQsIHNwaW5bMF0pOwo+PiArCj4+ICsgICAgICAgICAgICAgICB2YWxbMF0gPSBf X3BtdV9yZWFkX3NpbmdsZShmZCwgJnRzWzBdKTsKPj4gKyAgICAgICAgICAgICAgIHVzbGVlcChi YXRjaF9kdXJhdGlvbl9ucyAvIDEwMDApOwo+PiArICAgICAgICAgICAgICAgdmFsWzFdID0gX19w bXVfcmVhZF9zaW5nbGUoZmQsICZ0c1sxXSk7Cj4+ICsKPj4gKyAgICAgICAgICAgICAgIHJ1bm5h YmxlW25dID0gY2FsY19xdWV1ZWQodmFsWzFdIC0gdmFsWzBdLCB0c1sxXSAtIHRzWzBdKTsKPj4g KyAgICAgICAgICAgICAgIGlndF9pbmZvKCJuPSV1IHJ1bm5hYmxlPSUuMmZcbiIsIG4sIHJ1bm5h YmxlW25dKTsKPj4gKwo+PiArICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykg ewo+PiArICAgICAgICAgICAgICAgICAgICAgICBlbmRfc3BpbihnZW1fZmQsIHNwaW5baV0sIEZM QUdfU1lOQyk7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGlndF9zcGluX2JhdGNoX2ZyZWUo Z2VtX2ZkLCBzcGluW2ldKTsKPj4gKyAgICAgICAgICAgICAgIH0KPj4gKyAgICAgICB9Cj4+ICsK Pj4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgbWF4X3JxOyBpKyspIHsKPj4gKyAgICAgICAgICAg ICAgIGlmIChjdHhbaV0pCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGdlbV9jb250ZXh0X2Rl c3Ryb3koZ2VtX2ZkLCBjdHhbaV0pOwo+IAo+IEkgd291bGQganVzdCBjcmVhdGUgdGhlIGNvbnRl eHRzIHVuY29uZGl0aW9uYWxseS4KCkNhbiBkby4KCj4gCj4+ICsgICAgICAgfQo+PiArCj4+ICsg ICAgICAgY2xvc2UoZmQpOwo+PiArCj4+ICsgICAgICAgYXNzZXJ0X3dpdGhpbl9lcHNpbG9uKHJ1 bm5hYmxlWzBdLCAwLCB0b2xlcmFuY2UpOwo+PiArICAgICAgIGlndF9hc3NlcnQocnVubmFibGVb bWF4X3JxXSA+IDAuMCk7Cj4+ICsgICAgICAgYXNzZXJ0X3dpdGhpbl9lcHNpbG9uKHJ1bm5hYmxl W21heF9ycV0gLSBydW5uYWJsZVttYXhfcnEgLSAxXSwgMSwKPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdG9sZXJhbmNlKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQKPj4gK3J1 bm5pbmcoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICpl KQo+PiArewo+PiArICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgZW5naW5lID0gZTJyaW5nKGdl bV9mZCwgZSk7Cj4+ICsgICAgICAgY29uc3QgdW5zaWduZWQgaW50IG1heF9ycSA9IDEwOwo+PiAr ICAgICAgIGlndF9zcGluX3QgKnNwaW5bbWF4X3JxICsgMV07Cj4+ICsgICAgICAgZG91YmxlIHJ1 bm5pbmdbbWF4X3JxICsgMV07Cj4+ICsgICAgICAgdW5zaWduZWQgaW50IG4sIGk7Cj4+ICsgICAg ICAgdWludDY0X3QgdmFsWzJdOwo+PiArICAgICAgIHVpbnQ2NF90IHRzWzJdOwo+PiArICAgICAg IGludCBmZDsKPj4gKwo+PiArICAgICAgIG1lbXNldChydW5uaW5nLCAwLCBzaXplb2YocnVubmlu ZykpOwo+PiArICAgICAgIG1lbXNldChzcGluLCAwLCBzaXplb2Yoc3BpbikpOwo+PiArCj4+ICsg ICAgICAgZmQgPSBvcGVuX3BtdShJOTE1X1BNVV9FTkdJTkVfUlVOTklORyhlLT5jbGFzcywgZS0+ aW5zdGFuY2UpKTsKPj4gKwo+PiArICAgICAgIGZvciAobiA9IDA7IG4gPD0gbWF4X3JxOyBuKysp IHsKPj4gKyAgICAgICAgICAgICAgIGdlbV9xdWllc2NlbnRfZ3B1KGdlbV9mZCk7Cj4+ICsKPj4g KyAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgaWYgKGkgPT0gMCkKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzcGluW2ldID0gX19zcGluX3BvbGwoZ2VtX2ZkLCAwLCBlbmdpbmUpOwo+PiArICAgICAgICAg ICAgICAgICAgICAgICBlbHNlCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Bp bltpXSA9IF9faWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwgMCwKPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lLCAw KTsKPj4gKyAgICAgICAgICAgICAgIH0KPj4gKwo+PiArICAgICAgICAgICAgICAgaWYgKG4pCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgIF9fc3Bpbl93YWl0KGdlbV9mZCwgc3BpblswXSk7Cj4g Cj4gU28gY3JlYXRlIE4gcmVxdWVzdHMgb24gdGhlIHNhbWUgY29udGV4dCBzbyB0aGF0IHJ1bm5p bmcgPT0gTiBkdWUgdG8KPiBsaXRlLXJlc3RvcmUgZXZlcnkgdGltZS4gSSBoYXZlIHNvbWUgY2F2 ZWF0cyB0aGF0IHRoaXMgcmVsaWVzIG9uIHRoZQo+IHByZWNpc2UgaW1wbGVtZW50YXRpb24sIGUu Zy4gSSBkb24ndCB0aGluayBpdCB3aWxsIHdvcmsgZm9yIGd1YyAodXNpbmcKPiBleGVjbGlzdHMg ZW11bGF0aW9uIHdpdGggbm8gbGl0ZS1yZXN0b3JlKSBmb3IgTiA+IDIgb3IgOCwgb3IgaWYgd2Ug Z2V0Cj4gY3JlYXRpdmUgd2l0aCBleGVjbGlzdHMuCgpZZXAsIEkgdGhpbmsgaXQgZG9lc24ndCB3 b3JrIHdpdGggR3VDLiBXZWxsLCB0aGUgYXNzZXJ0IHdvdWxkIG5lZWQgdG8gYmUgCmRpZmZlcmVu dCBhcyBtaW5pbXVtLgoKRm9yIE4gPiAyIGFuZCBleGVjbGlzdHMgSSB0aGluayBpdCB3b3JrcyBz aW5jZSBpdCBvbmx5IG5lZWRzIHBvcnQgMC4KClJ1bm5hYmxlIHN1YnRlc3Qgb24gdGhlIG90aGVy IGhhbmQgdHJpZXMgdG8gYmUgZmxleGlibGUgdG93YXJkcyAKZGlmZmVyZW50IHBvc3NpYmxlIE5z IGFscmVhZHkuIEkgZ3Vlc3MgZm9yIHJ1bm5pbmcgSSBjb3VsZCBkb3duZ3JhZGUgdGhlIAphc3Nl cnRzIHRvIGp1c3QgY2hlY2sgcnVubmluZ1tOICsgMV0gPj0gcnVubmluZ1tOXSBhbmQgcnVubmlu Z1sxXSA+IDAuCgo+IAo+PiArCj4+ICsgICAgICAgICAgICAgICB2YWxbMF0gPSBfX3BtdV9yZWFk X3NpbmdsZShmZCwgJnRzWzBdKTsKPj4gKyAgICAgICAgICAgICAgIHVzbGVlcChiYXRjaF9kdXJh dGlvbl9ucyAvIDEwMDApOwo+PiArICAgICAgICAgICAgICAgdmFsWzFdID0gX19wbXVfcmVhZF9z aW5nbGUoZmQsICZ0c1sxXSk7Cj4+ICsKPj4gKyAgICAgICAgICAgICAgIHJ1bm5pbmdbbl0gPSBj YWxjX3F1ZXVlZCh2YWxbMV0gLSB2YWxbMF0sIHRzWzFdIC0gdHNbMF0pOwo+PiArICAgICAgICAg ICAgICAgaWd0X2luZm8oIm49JXUgcnVubmluZz0lLjJmXG4iLCBuLCBydW5uaW5nW25dKTsKPj4g Kwo+PiArICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewo+PiArICAgICAg ICAgICAgICAgICAgICAgICBlbmRfc3BpbihnZW1fZmQsIHNwaW5baV0sIEZMQUdfU1lOQyk7Cj4+ ICsgICAgICAgICAgICAgICAgICAgICAgIGlndF9zcGluX2JhdGNoX2ZyZWUoZ2VtX2ZkLCBzcGlu W2ldKTsKPj4gKyAgICAgICAgICAgICAgIH0KPj4gKyAgICAgICB9Cj4+ICsKPj4gKyAgICAgICBj bG9zZShmZCk7Cj4+ICsKPj4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDw9IG1heF9ycTsgaSsrKQo+ PiArICAgICAgICAgICAgICAgYXNzZXJ0X3dpdGhpbl9lcHNpbG9uKHJ1bm5pbmdbaV0sIGksIHRv bGVyYW5jZSk7Cj4+ICt9Cj4gCj4gT2ssIHRoZSB0ZXN0cyBsb29rIGxpa2UgdGhleSBzaG91bGQg YmUgY292ZXJpbmcgdGhlIGNvdW50ZXJzLgo+IAo+IERvIHdlIG5lZWQgdG8gZG8gYW4gYWxsLWVu Z2luZXMgcGFzcyB0byBjaGVjayBjb25jdXJyZW50IHVzYWdlPwoKRGVwZW5kcyBob3cgZ3JleSBp cyB5b3VyIGFwcHJvYWNoIGJldHdlZW4gd2hpdGUgYm94IGFuZCBibGFjayBib3ggdGVzdGluZy4K CkJ1dCB3aGF0IGlzIGRlZmluaXRlbHkgbmVlZGVkIGlzIHNvbWUgdGVzdHMgaW52b2x2aW5nIGhh bmdzLCByZXNldHMgYW5kIApwcmVlbXB0aW9uLCBzaW5jZSBJIGFtIHByZXR0eSBzdXJlIGEgYnVn IHNuZWFrZWQgaW4gc29tZXdoZXJlIGluIHRob3NlIAphcmVhcy4KClJlZ2FyZHMsCgpUdnJ0a28K X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBt YWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2Cg==