From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 680F189209 for ; Mon, 29 Apr 2019 19:10:20 +0000 (UTC) From: Carlos Santa Date: Mon, 29 Apr 2019 12:09:34 -0700 Message-Id: <20190429190934.27620-1-carlos.santa@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [RFC v4] tests/gem_watchdog: Initial set of tests for GPU watchdog List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org Cc: Ursulin Tvrtko List-ID: VGhpcyB0ZXN0IGFkZHMgYmFzaWMgc2V0IG9mIHRlc3RzIHRvIHJlc2V0IHRoZSBkaWZmZXJlbnQK R1BVIGVuZ2luZXMgdGhyb3VnaCB0aGUgZ3B1IHdhdGNoZG9nIHRpbWVyLgoKQ3JlZGl0cyB0byBB bnRvbmlvIGZvciB0aGUgb3JpZ2luYWwgY29kZWJhc2UgdGhpcyBpcyBiYXNlZCBvbi4KCnYyOiBy ZW1vdmUgZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKCkgZHVyaW5nIHNldCAoQW50b25pbykKICAgIHJl bW92ZSBjbGVhcmluZyBvZiB0aGUgZW5naW5lc190aHJlc2hvbGRbXSBpbiB0aGUgZGVmYXVsdCBj YXNlCiAgICBpbnNpZGUgY29udGV4dF9zZXRfd2F0Y2hkb2coKS4gKEFudG9uaW8pCiAgICBmaXgg aW5kZXhpbmcgd2hlbiBjcmVhdGluZyBsb3cvaGlnaCBwcmlvcml0eSBjb250ZXh0cwogICAgZ2V0 IHJpZCBvZiAyIHRocmVhZHMgaWRlYSAoQW50b25pbykKICAgIGZpeCBjb250ZXh0IHByaW8gYnVn IGR1ZSB0byB3cm9uZyBpbmRleGluZyAoQW50b25pbykKdjM6IG5vIG5lZWQgdG8gZm9yY2UgY2xl YXIgZHJtX2k5MTVfZ2VtX3dhdGNoZG9nX3RpbWVvdXQgc3RydWN0CiAgICB3aGVuIHNldHRpbmcg dGhlIHdhdGNoZG9nIHRpbWVvdXRzIChBbnRvbmlvKQogICAgLXVzZSBnZW1fY29udGV4dF9zZXRf cHJpb3JpdHkoKSBpbnN0ZWFkIHRvIHVzZSBlcnJvciBjaGVja2luZwogICAgLWFsd2F5cyB1c2Ug YSBsb29wZXIgdG8gdGVzdCBhbGwgZW5naW5lcyAoQW50b25pbykKICAgIC1tb2RpZnkgdGVzdCBn cHVfd2F0Y2hvZGdfaGFuZ19sb25nX2JhdGNoX3NpbmdsZV9lbmdpbmUoKQogICAgdG8gdXNlIGEg Y291cGxlIG9mIGJhdGNoZXMgYW5kIHNldCB0aGUgdGltZW91dCBpbiBiZXR3ZWVuIHRoZW0gKEFu dG9uaW8pCiAgICAtbWFrZSB1c2Ugb2YgZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlKCkg KEFudG9uaW8pCnY0OiAtdGVzdHMgc2hvdWxkIGJlIGFibGUgdG8gaGFuZGxlIHMvdyB3YXRjaGRv ZyB0aW1lb3V0IChUdnJ0a28pCiAgICAtcmVtb3ZlIGRlYWQgY29kZSBpbnNpZGUgYmF0Y2hfYnVm ZmVyIGZhY3RvcnkgKFR2cnRrbykKICAgIC1zZXRfd2F0Y2hkb2coKSBzaG91bGQgcmV0dXJuIEVO T0RFViBmb3IgZmFpbCBjYXNlcyAoVHZydGtvKQogICAgLWVuY2xvc2UgbmFtZSwgcHJpb3JpdHkg YW5kIHJlc2V0IHBhcmFtcyBpbnNpZGUgYXJyYXkgKFR2cnRrbykKClRlc3QgUGxhbjoKCkFzc3Vt cHRpb25zOgoxLiBVc2UgZmVuY2Ugc3RhdHVzIHRvIGZpZ3VyZSBvdXQgd2hpY2ggY3R4IHdhcyBy ZXNldAoyLiBVc2Ugc3BpbiBiYXRjaGVzIHcvIHVzZXIgc3BhY2UgdGltZXJzIHRvIGNvbnRyb2wg ZHVyYXRpb24KYW5kIGNvcmtpbmcgdG8gY29udHJvbCBvcmRlcmluZwozLiBVc2UgY29udGV4dCBw cmlvcml0aWVzIHRvIGZvcmNlIHByZWVtcHRpb24KClRlc3RzOgoxLiBjdHgxLCBsb25nX2JhdGNo IC0+IGV4ZWN1dGUKMi4gY3R4MSwgc2V0X3dhdGNoZG9nIC0+IHJlc2V0CjMuIGN0eDIvY3R4MSAt PiBleGVjdXRlLCByZXNldAo0LiBjdHgxL2N0eDIgLT4gcmVzZXQsIGV4ZWN1dGUKNS4gY3R4MV9q dXN0X2JlbG93X3RocmVzaG9sZCAtPiBleGVjdXRlCjYuIGN0eF9vdmVyX3RoZV90aHJlc2hvbGQg LT4gcmVzZXQKNy4gc2V0IHdhdGNoZG9nIG9uIHNvbWUgZW5naW5lcyAtPiBleGVjdXRlCjguIHN1 Ym1pdCBsb25nX2JhdGNoIGFuZCBhZnRlciBoYWxmIG9mIHRoZQpleHBlY3RlZCBydW50aW1lIHN1 Ym1pdCBoaWdoZXIgcHJpbyBiYXRjaAo5LiBzdWJtaXQgbG93IHByaW8gYmF0Y2ggdy9vIHdhdGNo ZG9nIHRoZW4KaGlnaGVyIHByaW8gd2l0aCB3YXRjaGRvZwoKVW5zcmVzb2x2ZWQgaXRlbXM6CjEu IHRoZSB1QVBJIGFycmF5IG9mIHN0cnVjdHMuLi4KMi4gVGhlIGNoZWNrIGZvciBzeW5jX2ZlbmNl X3N0YXR1cygqZmVuY2UpCnJldHVybnMgLTEgaW5zdGVhZCBvZiBFSU8uCjMuIFRlc3RzIDUsNiBh bmQgOCBhYm92ZSBhcmUgdGJkCgpDYzogVXJzdWxpbiBUdnJ0a28gPHR2cnRrby51cnN1bGluQGlu dGVsLmNvbT4KQ2M6IEFudG9uaW8gQXJnZW56aWFubyA8YW50b25pby5hcmdlbnppYW5vQGludGVs LmNvbT4KQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpTaWduZWQt b2ZmLWJ5OiBDYXJsb3MgU2FudGEgPGNhcmxvcy5zYW50YUBpbnRlbC5jb20+Ci0tLQogdGVzdHMv TWFrZWZpbGUuc291cmNlcyAgICB8ICAgMyArCiB0ZXN0cy9pOTE1L2dlbV93YXRjaGRvZy5jIHwg NDYxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHRlc3Rz L21lc29uLmJ1aWxkICAgICAgICAgfCAgIDEgKwogMyBmaWxlcyBjaGFuZ2VkLCA0NjUgaW5zZXJ0 aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2k5MTUvZ2VtX3dhdGNoZG9nLmMKCmRp ZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFrZWZpbGUuc291cmNl cwppbmRleCAyMTQ2OThkLi43ZjE3ZjIwIDEwMDY0NAotLS0gYS90ZXN0cy9NYWtlZmlsZS5zb3Vy Y2VzCisrKyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKQEAgLTQ0NCw2ICs0NDQsOSBAQCBnZW1f dXNlcnB0cl9ibGl0c19TT1VSQ0VTID0gaTkxNS9nZW1fdXNlcnB0cl9ibGl0cy5jCiBURVNUU19w cm9ncyArPSBnZW1fd2FpdAogZ2VtX3dhaXRfU09VUkNFUyA9IGk5MTUvZ2VtX3dhaXQuYwogCitU RVNUU19wcm9ncyArPSBnZW1fd2F0Y2hkb2cKK2dlbV93YXRjaGRvZ19TT1VSQ0VTID0gaTkxNS9n ZW1fd2F0Y2hkb2cuYworCiBURVNUU19wcm9ncyArPSBnZW1fd29ya2Fyb3VuZHMKIGdlbV93b3Jr YXJvdW5kc19TT1VSQ0VTID0gaTkxNS9nZW1fd29ya2Fyb3VuZHMuYwogCmRpZmYgLS1naXQgYS90 ZXN0cy9pOTE1L2dlbV93YXRjaGRvZy5jIGIvdGVzdHMvaTkxNS9nZW1fd2F0Y2hkb2cuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lM2VhY2Q1Ci0tLSAvZGV2L251bGwKKysr IGIvdGVzdHMvaTkxNS9nZW1fd2F0Y2hkb2cuYwpAQCAtMCwwICsxLDQ2MSBAQAorLyoKKyAqIENv cHlyaWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBo ZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEK KyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZp bGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0 IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRz IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGlj ZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJt aXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNv LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUg Y29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRo ZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Ig c3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09G VFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwg RVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUg V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRI RSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBE QU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENP TlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElO IENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5H UworICogSU4gVEhFIFNPRlRXQVJFLgorICovCisjaW5jbHVkZSAiaWd0LmgiCisjaW5jbHVkZSAi aWd0X3N5c2ZzLmgiCisjaW5jbHVkZSAic3dfc3luYy5oIgorCisjaW5jbHVkZSA8cHRocmVhZC5o PgorI2luY2x1ZGUgPGZjbnRsLmg+CisKKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNpbmNsdWRl IDxzeXMvcG9sbC5oPgorI2luY2x1ZGUgPHN5cy9zaWduYWwuaD4KKyNpbmNsdWRlICJpOTE1L2dl bV9yaW5nLmgiCisKKyNkZWZpbmUgTE9DQUxfSTkxNV9FWEVDX0JTRF9TSElGVAkoMTMpCisjZGVm aW5lIExPQ0FMX0k5MTVfRVhFQ19CU0RfUklORzEgCSgxIDw8IExPQ0FMX0k5MTVfRVhFQ19CU0Rf U0hJRlQpCisjZGVmaW5lIExPQ0FMX0k5MTVfRVhFQ19CU0RfUklORzIgCSgyIDw8IExPQ0FMX0k5 MTVfRVhFQ19CU0RfU0hJRlQpCisKKyNkZWZpbmUgTUFYX1BSSU8gTE9DQUxfSTkxNV9DT05URVhU X01BWF9VU0VSX1BSSU9SSVRZCisjZGVmaW5lIERFRkFVTFRfUFJJTyBMT0NBTF9JOTE1X0NPTlRF WFRfREVGQVVMVF9QUklPUklUWQorI2RlZmluZSBNSU5fUFJJTyBMT0NBTF9JOTE1X0NPTlRFWFRf TUlOX1VTRVJfUFJJT1JJVFkKKyNkZWZpbmUgSElHSCAxCisjZGVmaW5lIExPVyAwCisjZGVmaW5l IFdBVENIRE9HX1RIUkVTSE9MRCAoMTAwKQorI2RlZmluZSBNQVhfRU5HSU5FUyA1CisjZGVmaW5l IFJFTkRFUl9DTEFTUyAwCisjZGVmaW5lIFZJREVPX0RFQ09ERV9DTEFTUyAxCisjZGVmaW5lIFZJ REVPX0VOSEFOQ0VNRU5UX0NMQVNTIDIKKyNkZWZpbmUgQ09QWV9FTkdJTkVfQ0xBU1MgMworI2Rl ZmluZSBMT0NBTF9JOTE1X0NPTlRFWFRfUEFSQU1fV0FUQ0hET0cgMHgxMAorCisjZGVmaW5lIEdF VF9SRVNFVF9TVEFUU19JT0NUTCBEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgMHgzMiwgc3Ry dWN0IGxvY2FsX2RybV9pOTE1X3Jlc2V0X3N0YXRzKQorc3RydWN0IGxvY2FsX2RybV9pOTE1X3Jl c2V0X3N0YXRzIHsKKwlfX3UzMiBjdHhfaWQ7CisJX191MzIgZmxhZ3M7CisJX191MzIgcmVzZXRf Y291bnQ7CisJX191MzIgYmF0Y2hfYWN0aXZlOworCV9fdTMyIGJhdGNoX3BlbmRpbmc7CisJX191 MzIgcGFkOworfTsKKworY29uc3QgdWludDY0X3QgdGltZW91dF8xMDBtcyA9IDEwMDAwMDAwMExM OworCitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3dhdGNoZG9nX3RpbWVvdXQgeworCXVuaW9uIHsKKwkJ c3RydWN0IHsKKwkJCS8qCisJCQkgKiBFbmdpbmUgY2xhc3MgJiBpbnN0YW5jZSB0byBiZSBjb25m aWd1cmVkIG9yIHF1ZXJpZWQuCisJCQkgKi8KKwkJCV9fdTE2IGVuZ2luZV9jbGFzczsKKwkJCV9f dTE2IGVuZ2luZV9pbnN0YW5jZTsKKwkJfTsKKwkJLyogSW5kZXggYmFzZWQgYWRkcmVzc2luZyBt b2RlICovCisJCV9fdTMyIGluZGV4OworCX07CisJLyogR1BVIEVuZ2luZSB3YXRjaGRvZyByZXNl dHMgdGltZW91dCBpbiB1cyAqLworCV9fdTMyIHRpbWVvdXRfdXM7Cit9OworCitzdGF0aWMgdm9p ZCBjbGVhcl9lcnJvcl9zdGF0ZShpbnQgZmQpCit7CisJaW50IGRpcjsKKworCWRpciA9IGlndF9z eXNmc19vcGVuKGZkKTsKKworCWlmIChkaXIgPCAwKQorCQlyZXR1cm47CisKKwkvKiBBbnkgd3Jp dGUgdG8gdGhlIGVycm9yIHN0YXRlIGNsZWFycyBpdCAqLworCWlndF9zeXNmc19zZXQoZGlyLCAi ZXJyb3IiLCAiIik7CisJY2xvc2UoZGlyKTsKK30KKworc3RhdGljIHVuc2lnbmVkIGludCBlMnJp bmcoaW50IGZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCit7Cisg ICAgcmV0dXJuIGdlbV9jbGFzc19pbnN0YW5jZV90b19lYl9mbGFncyhmZCwgZS0+Y2xhc3MsIGUt Pmluc3RhbmNlKTsKK30KKworc3RhdGljIGludCBjb250ZXh0X3NldF93YXRjaGRvZyhpbnQgZmQs IHVuc2lnbmVkIGVuZ2luZV9pZCwKKwkJCQkgY29uc3QgY2hhciAqZW5naW5lX25hbWUsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjdHhfaWQsIHVuc2lnbmVkIHRo cmVzaG9sZCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3dhdGNoZG9nX3RpbWVvdXQgZW5naW5l c190aHJlc2hvbGRbTUFYX0VOR0lORVNdOworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9w YXJhbSBhcmcgPSB7CisJCS5wYXJhbSA9IExPQ0FMX0k5MTVfQ09OVEVYVF9QQVJBTV9XQVRDSERP RywKKwkJLmN0eF9pZCA9IGN0eF9pZCwKKwkJLnNpemUgPSBzaXplb2YoZW5naW5lc190aHJlc2hv bGQpLAorCQkudmFsdWUgPSAodWludDY0X3QpJmVuZ2luZXNfdGhyZXNob2xkCisJfTsKKworCW1l bXNldCgmZW5naW5lc190aHJlc2hvbGQsIDAsIHNpemVvZihlbmdpbmVzX3RocmVzaG9sZCkpOwor CisJc3dpdGNoIChlbmdpbmVfaWQgJiBJOTE1X0VYRUNfUklOR19NQVNLKSB7CisJY2FzZSBJOTE1 X0VYRUNfUkVOREVSOgorCQllbmdpbmVzX3RocmVzaG9sZFtSRU5ERVJfQ0xBU1NdLnRpbWVvdXRf dXMgPSB0aHJlc2hvbGQ7CisJCWJyZWFrOworCWNhc2UgSTkxNV9FWEVDX0JMVDoKKwkJaWYgKF9f Z2VtX2NvbnRleHRfZ2V0X3BhcmFtKGZkLCAmYXJnKSA9PSAtRU5PREVWKQorCQkJcmV0dXJuIC1F Tk9ERVY7CisJCWVsc2UKKwkJCWVuZ2luZXNfdGhyZXNob2xkW0NPUFlfRU5HSU5FX0NMQVNTXS50 aW1lb3V0X3VzID0gdGhyZXNob2xkOworCQlicmVhazsKKwljYXNlIEk5MTVfRVhFQ19CU0Q6CisJ CWVuZ2luZXNfdGhyZXNob2xkW1ZJREVPX0RFQ09ERV9DTEFTU10udGltZW91dF91cyA9IHRocmVz aG9sZDsKKwkJYnJlYWs7CisJY2FzZSBJOTE1X0VYRUNfVkVCT1g6CisJCWVuZ2luZXNfdGhyZXNo b2xkW1ZJREVPX0VOSEFOQ0VNRU5UX0NMQVNTXS50aW1lb3V0X3VzID0gdGhyZXNob2xkOworCQli cmVhazsKKwlkZWZhdWx0OgorCQlicmVhazsKKwl9CisKKwlnZW1fY29udGV4dF9zZXRfcGFyYW0o ZmQsICZhcmcpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGJhdGNoX2J1ZmZlcl9m YWN0b3J5KHVpbnQzMl90IGZkLCB1aW50MzJfdCBjdHhfaWQsIHVuc2lnbmVkIGV4ZWNfaWQsCisJ CQkJIHVpbnQzMl90IHRhcmdldCwgdWludDMyX3Qgb2Zmc2V0LAorCQkJCSB1aW50MzJfdCAqaGFu ZGxlLCB1aW50NjRfdCB0aW1lb3V0LAorCQkJCSBpbnQgKmZlbmNlLCBpbnQgZmVuY2VfaW5kZXgp Cit7CisgICAgc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgb2JqWzJdOworICAgIHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSByZWxvYzsKKyAgICBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGV4ZWNidWY7CisgICAgaWd0X3NwaW5fdCAqc3BpbiA9IE5V TEw7CisgICAgY29uc3QgdWludDMyX3QgYmJlID0gTUlfQkFUQ0hfQlVGRkVSX0VORDsKKyAgICBp bnQgaSA9IDA7CisKKyAgICBnZW1fcXVpZXNjZW50X2dwdShmZCk7CisKKyAgICBtZW1zZXQoJmV4 ZWNidWYsIDAsIHNpemVvZihleGVjYnVmKSk7CisgICAgbWVtc2V0KCZvYmosIDAsIHNpemVvZihv YmopKTsKKyAgICBtZW1zZXQoJnJlbG9jLCAwLCBzaXplb2YocmVsb2MpKTsKKworICAgIGV4ZWNi dWYuYnVmZmVyc19wdHIgPSB0b191c2VyX3BvaW50ZXIob2JqKTsKKworICAgIGV4ZWNidWYuYnVm ZmVyX2NvdW50ID0gMjsKKyAgICBleGVjYnVmLmZsYWdzID0gZXhlY19pZCB8IEk5MTVfRVhFQ19G RU5DRV9PVVQgOworCisgICAgb2JqWzBdLmhhbmRsZSA9IHRhcmdldDsKKyAgICBvYmpbMV0uaGFu ZGxlID0gZ2VtX2NyZWF0ZShmZCwgNDA5Nik7CisKKyAgICBvYmpbMV0ucmVsb2NhdGlvbl9jb3Vu dCA9IDE7CisgICAgb2JqWzFdLnJlbG9jc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJnJlbG9jKTsK KworICAgIHJlbG9jLnRhcmdldF9oYW5kbGUgPSBvYmpbMF0uaGFuZGxlOworICAgIHJlbG9jLnJl YWRfZG9tYWlucyA9IEk5MTVfR0VNX0RPTUFJTl9DT01NQU5EOworICAgIHJlbG9jLndyaXRlX2Rv bWFpbiA9IEk5MTVfR0VNX0RPTUFJTl9DT01NQU5EOworICAgIHJlbG9jLmRlbHRhID0gb2Zmc2V0 ICogc2l6ZW9mKHVpbnQzMl90KTsKKworICAgIHJlbG9jLm9mZnNldCA9IGkgKiBzaXplb2YodWlu dDMyX3QpOworICAgIGdlbV93cml0ZShmZCwgb2JqWzFdLmhhbmRsZSwgMCwgJmJiZSwgc2l6ZW9m KGJiZSkpOworCisgICAgX19zeW5jX3N5bmNocm9uaXplKCk7CisKKyAgICBnZW1fc3luYyhmZCwg b2JqWzFdLmhhbmRsZSk7CisgICAgZXhlY2J1Zi5yc3ZkMSA9IGN0eF9pZDsKKyAgICBleGVjYnVm LnJzdmQyID0gLTE7CisKKyAgICBzcGluID0gaWd0X3NwaW5fYmF0Y2hfbmV3KGZkLCAuZGVwZW5k ZW5jeSA9IG9ialswXS5oYW5kbGUpOworICAgIGlndF9zcGluX2JhdGNoX3NldF90aW1lb3V0KHNw aW4sIHRpbWVvdXQpOworICAgIGlndF9hc3NlcnQoZ2VtX2JvX2J1c3koZmQsIG9ialswXS5oYW5k bGUpKTsKKworICAgIGdlbV9leGVjYnVmX3dyKGZkLCAmZXhlY2J1Zik7CisgICAgaWd0X3NwaW5f YmF0Y2hfZnJlZShmZCwgc3Bpbik7CisKKyAgICBmZW5jZVtmZW5jZV9pbmRleF0gPSBleGVjYnVm LnJzdmQyID4+IDMyOworCisgICAgZ2VtX2Nsb3NlKGZkLCBvYmpbMV0uaGFuZGxlKTsKKyAgICBn ZW1fcXVpZXNjZW50X2dwdShmZCk7Cit9CisKK3N0YXRpYyBpbnQgZ2VtX3Jlc2V0X3N0YXRzKGlu dCBmZCwgaW50IGN0eF9pZCwKKwkJCSAgIHN0cnVjdCBsb2NhbF9kcm1faTkxNV9yZXNldF9zdGF0 cyAqcnMpCit7CisJbWVtc2V0KHJzLCAwLCBzaXplb2YoKnJzKSk7CisJcnMtPmN0eF9pZCA9IGN0 eF9pZDsKKwlycy0+cmVzZXRfY291bnQgPSAtMTsKKworCWlndF9hc3NlcnQoZHJtSW9jdGwoZmQs IEdFVF9SRVNFVF9TVEFUU19JT0NUTCwgcnMpID09IDApOworCWlndF9hc3NlcnQocnMtPnJlc2V0 X2NvdW50ICE9IC0xKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBpbmplY3RfaGFu Zyh1aW50MzJfdCBmZCwgdW5zaWduZWQgZW5naW5lX2lkLCB1aW50MzJfdCBjdHhfaWQsCisJCQkg dW5zaWduZWQgZmxhZ3MpCit7CisJaWd0X2hhbmdfdCBoYW5nOworCWhhbmcgPSBpZ3RfaGFuZ19j dHgoZmQsIGN0eF9pZCwgZW5naW5lX2lkLCBmbGFncyk7CisJZ2VtX3N5bmMoZmQsIGhhbmcuc3Bp bi0+aGFuZGxlKTsKK30KKworc3RhdGljIHZvaWQgbG9uZ19iYXRjaChpbnQgZmQsIGludCBwcmlv MSwgaW50IHByaW8yLCBpbnQgcmVzZXRfY3R4MSwKKwkJCWludCByZXNldF9jdHgyKQoreworCXVu c2lnbmVkIGVuZ2luZV9pZCA9IDA7CisJdW5zaWduZWQgbmVuZ2luZSA9IDA7CisJY29uc3Qgc3Ry dWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplOworCXN0cnVjdCBsb2NhbF9kcm1faTkxNV9y ZXNldF9zdGF0cyByczsKKwl1aW50MzJfdCBjdHhbOF07CisJdWludDMyX3Qgc2NyYXRjaFs4XTsK Kwl1aW50MzJfdCBjdHgyWzhdOworCXVpbnQzMl90IHNjcmF0Y2gyWzhdOworCWludCAqZmVuY2Us IGkgPSAwOworCWludCBhY3RpdmVfY291bnQgPSAwOworCXVuc2lnbmVkIGZsYWdzID0gSEFOR19B TExPV19DQVBUVVJFOworCWNvbnN0IHVpbnQ2NF90IGJhdGNoX3RpbWVvdXRfbXMgPSB0aW1lb3V0 XzEwMG1zICogNDsKKworCWZlbmNlID0gKGludCAqKW1hbGxvYyhzaXplb2YoaW50KSo4KTsKKwlp Z3RfYXNzZXJ0KGZlbmNlKTsKKworCS8qIFRlc3QjMTogY3JlYXRlIHNvbWUgd29yayBhbmQgbGV0 IGl0IHJ1biAqLworCWZvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZShmZCwgZSkgeworCQll bmdpbmVfaWQgPSBlMnJpbmcoZmQsIGUpOworCisJCXNjcmF0Y2gyW25lbmdpbmVdID0gZ2VtX2Ny ZWF0ZShmZCwgNDA5Nik7CisJCWN0eDJbbmVuZ2luZV0gPSBnZW1fY29udGV4dF9jcmVhdGUoZmQp OworCQlnZW1fY29udGV4dF9zZXRfcHJpb3JpdHkoZmQsIGN0eDJbbmVuZ2luZV0sIHByaW8yKTsK KwkJYmF0Y2hfYnVmZmVyX2ZhY3RvcnkoZmQsIGN0eDJbbmVuZ2luZV0sIGVuZ2luZV9pZCwKKwkJ CQkgc2NyYXRjaDJbbmVuZ2luZV0sIDAsIE5VTEwsCisJCQkJIGJhdGNoX3RpbWVvdXRfbXMsIGZl bmNlLCBuZW5naW5lKTsKKworCQlzY3JhdGNoW25lbmdpbmVdID0gZ2VtX2NyZWF0ZShmZCwgNDA5 Nik7CisJCWN0eFtuZW5naW5lXSA9IGdlbV9jb250ZXh0X2NyZWF0ZShmZCk7CisJCWdlbV9jb250 ZXh0X3NldF9wcmlvcml0eShmZCwgY3R4W25lbmdpbmVdLCBwcmlvMSk7CisJCWJhdGNoX2J1ZmZl cl9mYWN0b3J5KGZkLCBjdHhbbmVuZ2luZV0sIGVuZ2luZV9pZCwKKwkJCQkgc2NyYXRjaFtuZW5n aW5lXSwgMCwgTlVMTCwKKwkJCQkgYmF0Y2hfdGltZW91dF9tcywgZmVuY2UsIG5lbmdpbmUpOwor CQlpZ3RfaW5mbygiVGVzdCAjMTogY3R4MSAtLT4gZXhlY3V0ZSBvbiAlc1xuIixlLT5uYW1lKTsK KwkJbmVuZ2luZSsrOworCX0KKworCWZvciAoaSA9IDA7IGkgPCBuZW5naW5lOyBpKyspIHsKKwkJ Y2xvc2UoZmVuY2VbaV0pOworCQlnZW1fY29udGV4dF9kZXN0cm95KGZkLCBjdHhbaV0pOworCQln ZW1fY29udGV4dF9kZXN0cm95KGZkLCBjdHgyW2ldKTsKKwkJZ2VtX2Nsb3NlKGZkLCBzY3JhdGNo W2ldKTsKKwkJZ2VtX2Nsb3NlKGZkLCBzY3JhdGNoMltpXSk7CisJfQorCisJbmVuZ2luZSA9IDA7 CisKKwkvKiBUZXN0IzI6IGNyZWF0ZSBzb21lIHdvcmssIHNldCBhIGdwdSB3YXRjaGRvZyB0aW1l b3V0IGFuZCBjYW5jZWwKKwkgICB0aGUgZXhlY3V0aW9uICovCisJZm9yX2VhY2hfZW5naW5lX2Ns YXNzX2luc3RhbmNlKGZkLCBlKSB7CisJCWVuZ2luZV9pZCA9IGUycmluZyhmZCwgZSk7CisKKwkJ LyogZ2V0IGN1cnJlbnQgYmF0Y2hfYWN0aXZlIGNvdW50ICovCisJCWlndF9hc3NlcnRfZXEoZ2Vt X3Jlc2V0X3N0YXRzKGZkLCAwLCAmcnMpLCAwKTsKKwkJYWN0aXZlX2NvdW50ID0gcnMuYmF0Y2hf YWN0aXZlOworCQlpZ3RfYXNzZXJ0X2VxKHJzLmJhdGNoX2FjdGl2ZSwgYWN0aXZlX2NvdW50KTsK KworCQlzY3JhdGNoMltuZW5naW5lXSA9IGdlbV9jcmVhdGUoZmQsIDQwOTYpOworCQljdHgyW25l bmdpbmVdID0gZ2VtX2NvbnRleHRfY3JlYXRlKGZkKTsKKwkJZ2VtX2NvbnRleHRfc2V0X3ByaW9y aXR5KGZkLCBjdHgyW25lbmdpbmVdLCBwcmlvMik7CisJCWJhdGNoX2J1ZmZlcl9mYWN0b3J5KGZk LCBjdHgyW25lbmdpbmVdLCBlbmdpbmVfaWQsCisJCQkJIHNjcmF0Y2gyW25lbmdpbmVdLCAwLCBO VUxMLAorCQkJCSBiYXRjaF90aW1lb3V0X21zLCBmZW5jZSwgbmVuZ2luZSk7CisKKwkJc2NyYXRj aFtuZW5naW5lXSA9IGdlbV9jcmVhdGUoZmQsIDQwOTYpOworCQljdHhbbmVuZ2luZV0gPSBnZW1f Y29udGV4dF9jcmVhdGUoZmQpOworCQlnZW1fY29udGV4dF9zZXRfcHJpb3JpdHkoZmQsIGN0eFtu ZW5naW5lXSwgcHJpbzEpOworCQliYXRjaF9idWZmZXJfZmFjdG9yeShmZCwgY3R4W25lbmdpbmVd LCBlbmdpbmVfaWQsCisJCQkJIHNjcmF0Y2hbbmVuZ2luZV0sIDAsIE5VTEwsCisJCQkJIGJhdGNo X3RpbWVvdXRfbXMsIGZlbmNlLCBuZW5naW5lKTsKKworCQlpZiAoY29udGV4dF9zZXRfd2F0Y2hk b2coZmQsIGVuZ2luZV9pZCwgZS0+bmFtZSwKKwkJCQkJIGN0eFtuZW5naW5lXSwKKwkJCQkJIFdB VENIRE9HX1RIUkVTSE9MRCkgPT0gLUVOT0RFVikgeworCQkJaWd0X2luZm8oIk5vIHN1cHBvcnQg Zm9yIGdwdSBoL3cgd2F0Y2hkb2cgb24gJXNcbiIsCisJCQkgZS0+bmFtZSk7CisJCQlnb3RvIHNr aXBfY2FzZTI7CisJCX0KKwkJY2xlYXJfZXJyb3Jfc3RhdGUoZmQpOworCQlpbmplY3RfaGFuZyhm ZCwgZW5naW5lX2lkLCBjdHhbbmVuZ2luZV0sIGZsYWdzKTsKKwkJYWN0aXZlX2NvdW50Kys7CisK KwkJLyogTm93IGNoZWNrIHRoZSBlbmdpbmUgd2FzIHJlc2V0IHN1Y2Nlc3NmdWxseSovCisJCS8v aWd0X2Fzc2VydF9lcShzeW5jX2ZlbmNlX3N0YXR1cygqZmVuY2UpLCAtRUlPKTsKKwkJaWd0X2lu Zm8oIlRlc3QgIzIgLS0+IGN0eDEgc2V0IHdhdGNoZG9nIGFuZCBjYW5jZWwgb24gJXMiCisJCQki IHdpdGggZmVuY2Ugc3RhdHVzOiAweCV4IFxuIiwgZS0+bmFtZSwKKwkJCQkJCSBzeW5jX2ZlbmNl X3N0YXR1cygqZmVuY2UpKTsKKworCQkvKiBjaGVjayBiYXRjaF9hY3RpdmUgY291bnQgb25jZSBh Z2FpbiBhZnRlciB0aGUgcmVzZXQgKi8KKwkJaWd0X2Fzc2VydF9lcShnZW1fcmVzZXRfc3RhdHMo ZmQsIDAsICZycyksIDApOworCQlhY3RpdmVfY291bnQgPSBycy5iYXRjaF9hY3RpdmU7CisJCWln dF9hc3NlcnRfZXEocnMuYmF0Y2hfYWN0aXZlLCBhY3RpdmVfY291bnQpOworCitza2lwX2Nhc2Uy OgorCQluZW5naW5lKys7CisJfQorCisJZm9yIChpID0gMDsgaSA8IG5lbmdpbmU7IGkrKykgewor CQljbG9zZShmZW5jZVtpXSk7CisJCWdlbV9jb250ZXh0X2Rlc3Ryb3koZmQsIGN0eFtpXSk7CisJ CWdlbV9jb250ZXh0X2Rlc3Ryb3koZmQsIGN0eDJbaV0pOworCQlnZW1fY2xvc2UoZmQsIHNjcmF0 Y2hbaV0pOworCQlnZW1fY2xvc2UoZmQsIHNjcmF0Y2gyW2ldKTsKKwl9CisKKwluZW5naW5lID0g MDsKKworCS8qIFRlc3QjMzogY3JlYXRlIDIgY3R4LCBzZXQgYSBncHUgd2F0Y2hkb2cgdGltZW91 dCBvbiBib3RoLAorCSAgIGFuZCBlaXRoZXIgcmVzZXQgb3IgZXhlY3V0ZSAqLworCWZvcl9lYWNo X2VuZ2luZV9jbGFzc19pbnN0YW5jZShmZCwgZSkgeworCQllbmdpbmVfaWQgPSBlMnJpbmcoZmQs IGUpOworCisJCS8qIGdldCBjdXJyZW50IGJhdGNoX2FjdGl2ZSBjb3VudCAqLworCQlpZ3RfYXNz ZXJ0X2VxKGdlbV9yZXNldF9zdGF0cyhmZCwgMCwgJnJzKSwgMCk7CisJCWFjdGl2ZV9jb3VudCA9 IHJzLmJhdGNoX2FjdGl2ZTsKKwkJaWd0X2Fzc2VydF9lcShycy5iYXRjaF9hY3RpdmUsIGFjdGl2 ZV9jb3VudCk7CisKKwkJc2NyYXRjaDJbbmVuZ2luZV0gPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsK KwkJY3R4MltuZW5naW5lXSA9IGdlbV9jb250ZXh0X2NyZWF0ZShmZCk7CisJCWdlbV9jb250ZXh0 X3NldF9wcmlvcml0eShmZCwgY3R4MltuZW5naW5lXSwgcHJpbzIpOworCQliYXRjaF9idWZmZXJf ZmFjdG9yeShmZCwgY3R4MltuZW5naW5lXSwgZW5naW5lX2lkLAorCQkJCSBzY3JhdGNoMltuZW5n aW5lXSwgMCwgTlVMTCwKKwkJCQkgYmF0Y2hfdGltZW91dF9tcywgZmVuY2UsIG5lbmdpbmUpOwor CisJCXNjcmF0Y2hbbmVuZ2luZV0gPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsKKwkJY3R4W25lbmdp bmVdID0gZ2VtX2NvbnRleHRfY3JlYXRlKGZkKTsKKwkJZ2VtX2NvbnRleHRfc2V0X3ByaW9yaXR5 KGZkLCBjdHhbbmVuZ2luZV0sIHByaW8xKTsKKwkJYmF0Y2hfYnVmZmVyX2ZhY3RvcnkoZmQsIGN0 eFtuZW5naW5lXSwgZW5naW5lX2lkLAorCQkJCSBzY3JhdGNoW25lbmdpbmVdLCAwLCBOVUxMLAor CQkJCSBiYXRjaF90aW1lb3V0X21zLCBmZW5jZSwgbmVuZ2luZSk7CisKKwkJaWYgKGNvbnRleHRf c2V0X3dhdGNoZG9nKGZkLCBlbmdpbmVfaWQsIGUtPm5hbWUsCisJCQkJCSBjdHgyW25lbmdpbmVd LAorCQkJCQkgV0FUQ0hET0dfVEhSRVNIT0xEKSA9PSAtRU5PREVWKSB7CisJCQlpZ3RfaW5mbygi Tm8gc3VwcG9ydCBmb3IgZ3B1IGgvdyB3YXRjaGRvZyBvbiAlc1xuIiwKKwkJCSBlLT5uYW1lKTsK KwkJCWdvdG8gc2tpcF9jYXNlMzsKKwkJfQorCisJCWlmIChyZXNldF9jdHgyKSB7CisJCQljbGVh cl9lcnJvcl9zdGF0ZShmZCk7CisJCQlpbmplY3RfaGFuZyhmZCwgZW5naW5lX2lkLCBjdHgyW25l bmdpbmVdLCBmbGFncyk7CisJCQlhY3RpdmVfY291bnQrKzsKKworCQkJLyogTm93IGNoZWNrIHRo ZSBlbmdpbmUgd2FzIHJlc2V0IHN1Y2Nlc3NmdWxseSAqLworCQkJLy9pZ3RfYXNzZXJ0X2VxKHN5 bmNfZmVuY2Vfc3RhdHVzKCpmZW5jZSksIC1FSU8pOworCQkJaWd0X2luZm8oIlRlc3QgIzMgY3R4 MS9jdHgyIC0tPiBzZXQgd2F0Y2hkb2cgYW5kIgorCQkJCSIgY2FuY2VsIGN0eDIgb24gJXMgd2l0 aCBmZW5jZSBzdGF0dXM6IDB4JXggXG4iLAorCQkJCQllLT5uYW1lLCBzeW5jX2ZlbmNlX3N0YXR1 cygqZmVuY2UpKTsKKworCQkJLyogY2hlY2sgYmF0Y2hfYWN0aXZlIGNvdW50IG9uY2UgYWdhaW4g YWZ0ZXIgdGhlIHJlc2V0ICovCisJCQlpZ3RfYXNzZXJ0X2VxKGdlbV9yZXNldF9zdGF0cyhmZCwg MCwgJnJzKSwgMCk7CisJCQlhY3RpdmVfY291bnQgPSBycy5iYXRjaF9hY3RpdmU7CisJCQlpZ3Rf YXNzZXJ0X2VxKHJzLmJhdGNoX2FjdGl2ZSwgYWN0aXZlX2NvdW50KTsKKwkJfQorCisJCWNvbnRl eHRfc2V0X3dhdGNoZG9nKGZkLCBlbmdpbmVfaWQsIGUtPm5hbWUsCisJCQkJCSBjdHhbbmVuZ2lu ZV0sCisJCQkJCSBXQVRDSERPR19USFJFU0hPTEQpOworCQlpZiAocmVzZXRfY3R4MSkgeworCQkJ Y2xlYXJfZXJyb3Jfc3RhdGUoZmQpOworCQkJaW5qZWN0X2hhbmcoZmQsIGVuZ2luZV9pZCwgY3R4 W25lbmdpbmVdLCBmbGFncyk7CisJCQlhY3RpdmVfY291bnQrKzsKKworCQkJLyogTm93IGNoZWNr IHRoZSBlbmdpbmUgd2FzIHJlc2V0IHN1Y2Nlc3NmdWxseSAqLworCQkJLy9pZ3RfYXNzZXJ0X2Vx KHN5bmNfZmVuY2Vfc3RhdHVzKCpmZW5jZSksIC1FSU8pOworCQkJaWd0X2luZm8oIlRlc3QgIzM6 IGN0eDEvY3R4MiAtLT4gc2V0IHdhdGNoZG9nIGFuZCIKKwkJCQkiIGNhbmNlbCBjdHgxIG9uICVz IHdpdGggZmVuY2Ugc3RhdHVzOiAweCV4XG4iLAorCQkJCWUtPm5hbWUsIHN5bmNfZmVuY2Vfc3Rh dHVzKCpmZW5jZSkpOworCisJCQkvKiBjaGVjayBiYXRjaF9hY3RpdmUgY291bnQgb25jZSBhZ2Fp biBhZnRlciB0aGUgcmVzZXQgKi8KKwkJCWlndF9hc3NlcnRfZXEoZ2VtX3Jlc2V0X3N0YXRzKGZk LCAwLCAmcnMpLCAwKTsKKwkJCWFjdGl2ZV9jb3VudCA9IHJzLmJhdGNoX2FjdGl2ZTsKKwkJCWln dF9hc3NlcnRfZXEocnMuYmF0Y2hfYWN0aXZlLCBhY3RpdmVfY291bnQpOworCQl9Citza2lwX2Nh c2UzOgorCQluZW5naW5lKys7CisJfQorCisJZm9yIChpID0gMDsgaSA8IG5lbmdpbmU7IGkrKykg eworCQljbG9zZShmZW5jZVtpXSk7CisJCWdlbV9jb250ZXh0X2Rlc3Ryb3koZmQsIGN0eFtpXSk7 CisJCWdlbV9jb250ZXh0X2Rlc3Ryb3koZmQsIGN0eDJbaV0pOworCQlnZW1fY2xvc2UoZmQsIHNj cmF0Y2hbaV0pOworCQlnZW1fY2xvc2UoZmQsIHNjcmF0Y2gyW2ldKTsKKwl9CisJbmVuZ2luZSA9 IDA7Cit9CisKK2lndF9tYWluCit7CisJaW50IGZkOworCXVuc2lnbmVkIGludCBuZW5naW5lID0g MCwgaT0wOworCXVuc2lnbmVkIGludCBlbmdpbmU7CisJY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1 dGlvbl9lbmdpbmUyICplOworCXN0cnVjdCB7CisJCWNoYXIgKm5hbWU7CisJCWludCBwcmlvWzJd OworCQlib29sIHJlc2V0WzJdOworCX0gdGVzdHNbXSA9IHsKKwkJeyJjdHgxLWV4ZWN1dGUtY3R4 Mi1leGVjdXRlLWFsbC1lbmdpbmVzIiwKKwkJe0RFRkFVTFRfUFJJTywgREVGQVVMVF9QUklPfSwg e2ZhbHNlLCBmYWxzZX19LAorCQl7ImN0eDEtcmVzZXQtY3R4Mi1leGVjdXRlLWFsbC1lbmdpbmVz IiwKKwkJe0RFRkFVTFRfUFJJTywgREVGQVVMVF9QUklPfSwge3RydWUsIGZhbHNlfX0sCisJCXsi Y3R4Mi1yZXNldC1jdHgxLWV4ZWN1dGUtYWxsLWVuZ2luZXMiLAorCQl7REVGQVVMVF9QUklPLCBE RUZBVUxUX1BSSU99LCB7ZmFsc2UsIHRydWV9fSwKKwkJeyJjdHgyLXJlc2V0LWN0eDEtcmVzZXQt YWxsLWVuZ2luZXMiLAorCQl7REVGQVVMVF9QUklPLCBERUZBVUxUX1BSSU99LCB7dHJ1ZSwgdHJ1 ZX19LAorCQl7ImN0eDEtaGlnaC1wcmlvLWV4ZWN1dGUtY3R4Mi1sb3ctcHJpby1leGVjdXRlLWFs bC1lbmdpbmVzIiwKKwkJe01BWF9QUklPLCBNSU5fUFJJT30sIHtmYWxzZSwgZmFsc2V9fSwKKwkJ eyJjdHgxLWhpZ2gtcHJpby1yZXNldC1jdHgyLWxvdy1wcmlvLWV4ZWN1dGUtYWxsLWVuZ2luZXMi LAorCQl7TUFYX1BSSU8sIE1JTl9QUklPfSwge3RydWUsIGZhbHNlfX0sCisJCXsiY3R4MS1sb3ct cHJpby1yZXNldC1jdHgyLWhpZ2gtcHJpby1leGVjdXRlLWFsbC1lbmdpbmVzIiwKKwkJe01JTl9Q UklPLCBNQVhfUFJJT30sIHt0cnVlLCBmYWxzZX19LAorCQl7ImN0eDEtbG93LXByaW8tcmVzZXQt Y3R4Mi1oaWdoLXByaW8tcmVzZXQtYWxsLWVuZ2luZXMiLAorCQl7TUlOX1BSSU8sIE1BWF9QUklP fSwge3RydWUsIHRydWV9fSwKKwl9OworCisJaWd0X3NraXBfb25fc2ltdWxhdGlvbigpOworCisJ aWd0X2ZpeHR1cmUgeworCQlmZCA9IGRybV9vcGVuX2RyaXZlcihEUklWRVJfSU5URUwpOworCQlp Z3RfcmVxdWlyZV9nZW0oZmQpOworCisJCWZvcl9lYWNoX3BoeXNpY2FsX2VuZ2luZShmZCwgZW5n aW5lKQorCQkJbmVuZ2luZSsrOworCQlpZ3RfcmVxdWlyZShuZW5naW5lKTsKKwl9CisKKwlpZ3Rf c3VidGVzdF9ncm91cCB7CisJCWZvcihpID0gMDsgaSA8IEFSUkFZX1NJWkUodGVzdHMpOyBpKysp IHsKKwkJCWlndF9zdWJ0ZXN0X2YoIiVzIiwgdGVzdHNbaV0ubmFtZSkgeworCQkJCWxvbmdfYmF0 Y2goIGZkLCB0ZXN0c1tpXS5wcmlvWzBdLAorCQkJCQkJdGVzdHNbaV0ucHJpb1sxXSwKKwkJCQkJ CXRlc3RzW2ldLnJlc2V0WzBdLAorCQkJCQkJdGVzdHNbaV0ucmVzZXRbMV0pOworCQkJfQorCQl9 CisJfQorCisgICAgaWd0X2ZpeHR1cmUgeworCWNsb3NlKGZkKTsKKyAgICB9Cit9CmRpZmYgLS1n aXQgYS90ZXN0cy9tZXNvbi5idWlsZCBiL3Rlc3RzL21lc29uLmJ1aWxkCmluZGV4IDUxNjdhNmMu LmIyODFiNzUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL21lc29uLmJ1aWxkCisrKyBiL3Rlc3RzL21lc29u LmJ1aWxkCkBAIC0yMTAsNiArMjEwLDcgQEAgaTkxNV9wcm9ncyA9IFsKIAknZ2VtX3VucmVmX2Fj dGl2ZV9idWZmZXJzJywKIAknZ2VtX3VzZXJwdHJfYmxpdHMnLAogCSdnZW1fd2FpdCcsCisgICAg ICAgICdnZW1fd2F0Y2hkb2cnLAogCSdnZW1fd29ya2Fyb3VuZHMnLAogCSdnZW1fd3JpdGVfcmVh ZF9yaW5nX3N3aXRjaCcsCiAJJ2k5MTVfZmJfdGlsaW5nJywKLS0gCjIuNy40CgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlz dAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=