From mboxrd@z Thu Jan 1 00:00:00 1970 From: Abdiel Janulgue Subject: Re: [i-g-t PATCH v6 1/4] lib: add igt_dummyload Date: Tue, 15 Nov 2016 16:21:46 +0200 Message-ID: References: <20161111161652.yucobtlspgf3lulu@phenom.ffwll.local> <1479147882-27003-1-git-send-email-abdiel.janulgue@linux.intel.com> <1479147882-27003-2-git-send-email-abdiel.janulgue@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id A80416E004 for ; Tue, 15 Nov 2016 14:21:51 +0000 (UTC) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tomeu Vizoso Cc: Daniel Vetter , Intel Graphics Development List-Id: intel-gfx@lists.freedesktop.org CgpPbiAxNS4xMS4yMDE2IDEyOjU5LCBUb21ldSBWaXpvc28gd3JvdGU6Cj4gT24gMTQgTm92ZW1i ZXIgMjAxNiBhdCAxOToyNCwgQWJkaWVsIEphbnVsZ3VlCj4gPGFiZGllbC5qYW51bGd1ZUBsaW51 eC5pbnRlbC5jb20+IHdyb3RlOgo+PiBBIGxvdCBvZiBpZ3QgdGVzdGNhc2VzIG5lZWQgc29tZSBH UFUgd29ya2xvYWQgdG8gbWFrZSBzdXJlIGEgcmFjZQo+PiB3aW5kb3cgaXMgYmlnIGVub3VnaC4g VW5mb3J0dW5hdGVseSBoYXZpbmcgYSBmaXhlZCBhbW91bnQgb2YKPj4gd29ya2xvYWQgbGVhZHMg dG8gc3B1cmlvdXMgdGVzdCBmYWlsdXJlcyBvciBvdmVydGx5IGxvbmcgcnVudGltZXMKPj4gb24g c29tZSBmYXN0L3Nsb3cgcGxhdGZvcm1zLiBUaGlzIGxpYnJhcnkgY29udGFpbnMgZnVuY3Rpb25h bGl0eQo+PiB0byBzdWJtaXQgR1BVIHdvcmtsb2FkcyB0aGF0IHNob3VsZCBjb25zdW1lIGV4YWN0 bHkgYSBzcGVjaWZpYwo+PiBhbW91bnQgb2YgdGltZS4KPj4KPj4gdjIgOiBBZGQgcmVjdXJzaXZl IGJhdGNoIGZlYXR1cmUgZnJvbSBDaHJpcwo+PiB2MyA6IERyb3AgYXV0by10dW5lZCBzdHVmZi4g QWRkIGJvIGRlcGVuZGVjeSB0byByZWN1cnNpdmUgYmF0Y2gKPj4gICAgICBieSBhZGRpbmcgYSBk dW1teSByZWxvYyB0byB0aGUgYm8gYXMgc3VnZ2VzdGVkIGJ5IFZpbGxlLgo+PiB2NDogIEZpeCBk ZXBlbmRlbmN5IHJlbG9jIGFzIHdyaXRlIGluc3RlYWQgb2YgcmVhZCAoVmlsbGUpLgo+PiAgICAg IEZpeCB3cm9uZyBoYW5kbGluZyBvZiBiYXRjaGJ1ZmZlciBzdGFydCBvbiBJTEsgY2F1c2luZwo+ PiAgICAgIHRlc3QgZmFpbHVyZQo+PiB2NTogIENvbnZlcnQga21zX2J1c3kgdG8gdXNlIHRoaXMg YXBpCj4+IHY2OiAgQWRkIHRoaXMgbGlicmFyeSB0byBkb2NzCj4+Cj4+IENjOiBEYW5pZWwgVmV0 dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgo+PiBDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxs ZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPj4gQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hy aXMtd2lsc29uLmNvLnVrPgo+PiBTaWduZWQtb2ZmLWJ5OiBBYmRpZWwgSmFudWxndWUgPGFiZGll bC5qYW51bGd1ZUBsaW51eC5pbnRlbC5jb20+Cj4+IC0tLQo+PiAgLi4uL2ludGVsLWdwdS10b29s cy9pbnRlbC1ncHUtdG9vbHMtZG9jcy54bWwgICAgICAgfCAgIDEgKwo+PiAgbGliL01ha2VmaWxl LnNvdXJjZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwo+PiAgbGliL2ln dC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwo+PiAg bGliL2lndF9kdW1teWxvYWQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyNzYg KysrKysrKysrKysrKysrKysrKysrCj4+ICBsaWIvaWd0X2R1bW15bG9hZC5oICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICA0MiArKysrCj4+ICA1IGZpbGVzIGNoYW5nZWQsIDMyMiBp bnNlcnRpb25zKCspCj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2lndF9kdW1teWxvYWQuYwo+ PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9pZ3RfZHVtbXlsb2FkLmgKPj4KPj4gZGlmZiAtLWdp dCBhL2RvY3MvcmVmZXJlbmNlL2ludGVsLWdwdS10b29scy9pbnRlbC1ncHUtdG9vbHMtZG9jcy54 bWwgYi9kb2NzL3JlZmVyZW5jZS9pbnRlbC1ncHUtdG9vbHMvaW50ZWwtZ3B1LXRvb2xzLWRvY3Mu eG1sCj4+IGluZGV4IGM4NjJmMmEuLjU1OTAyYWIgMTAwNjQ0Cj4+IC0tLSBhL2RvY3MvcmVmZXJl bmNlL2ludGVsLWdwdS10b29scy9pbnRlbC1ncHUtdG9vbHMtZG9jcy54bWwKPj4gKysrIGIvZG9j cy9yZWZlcmVuY2UvaW50ZWwtZ3B1LXRvb2xzL2ludGVsLWdwdS10b29scy1kb2NzLnhtbAo+PiBA QCAtMzIsNiArMzIsNyBAQAo+PiAgICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9pbnRlbF9pby54 bWwiLz4KPj4gICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvaWd0X3ZjNC54bWwiLz4KPj4gICAg ICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvaWd0X3ZnZW0ueG1sIi8+Cj4+ICsgICAgPHhpOmluY2x1 ZGUgaHJlZj0ieG1sL2lndF9kdW1teWxvYWQueG1sIi8+Cj4+ICAgIDwvY2hhcHRlcj4KPj4gICAg PHhpOmluY2x1ZGUgaHJlZj0ieG1sL2lndF90ZXN0X3Byb2dyYW1zLnhtbCIvPgo+Pgo+PiBkaWZm IC0tZ2l0IGEvbGliL01ha2VmaWxlLnNvdXJjZXMgYi9saWIvTWFrZWZpbGUuc291cmNlcwo+PiBp bmRleCBlOGUyNzdiLi43ZmM1ZWMyIDEwMDY0NAo+PiAtLS0gYS9saWIvTWFrZWZpbGUuc291cmNl cwo+PiArKysgYi9saWIvTWFrZWZpbGUuc291cmNlcwo+PiBAQCAtNzUsNiArNzUsOCBAQCBsaWJf c291cmNlX2xpc3QgPSAgICAgICAgICAgICBcCj4+ICAgICAgICAgaWd0X2RyYXcuaCAgICAgICAg ICAgICAgXAo+PiAgICAgICAgIGlndF9wbS5jICAgICAgICAgICAgICAgIFwKPj4gICAgICAgICBp Z3RfcG0uaCAgICAgICAgICAgICAgICBcCj4+ICsgICAgICAgaWd0X2R1bW15bG9hZC5jICAgICAg ICAgXAo+PiArICAgICAgIGlndF9kdW1teWxvYWQuaCAgICAgICAgIFwKPj4gICAgICAgICB1d2ls ZG1hdC91d2lsZG1hdC5oICAgICBcCj4+ICAgICAgICAgdXdpbGRtYXQvdXdpbGRtYXQuYyAgICAg XAo+PiAgICAgICAgICQoTlVMTCkKPj4gZGlmZiAtLWdpdCBhL2xpYi9pZ3QuaCBiL2xpYi9pZ3Qu aAo+PiBpbmRleCBkNzUxZjI0Li5hMDAyOGQ1IDEwMDY0NAo+PiAtLS0gYS9saWIvaWd0LmgKPj4g KysrIGIvbGliL2lndC5oCj4+IEBAIC0zMiw2ICszMiw3IEBACj4+ICAjaW5jbHVkZSAiaWd0X2Nv cmUuaCIKPj4gICNpbmNsdWRlICJpZ3RfZGVidWdmcy5oIgo+PiAgI2luY2x1ZGUgImlndF9kcmF3 LmgiCj4+ICsjaW5jbHVkZSAiaWd0X2R1bW15bG9hZC5oIgo+PiAgI2luY2x1ZGUgImlndF9mYi5o Igo+PiAgI2luY2x1ZGUgImlndF9ndC5oIgo+PiAgI2luY2x1ZGUgImlndF9rbXMuaCIKPj4gZGlm ZiAtLWdpdCBhL2xpYi9pZ3RfZHVtbXlsb2FkLmMgYi9saWIvaWd0X2R1bW15bG9hZC5jCj4+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAuLmI5MzRmZDUKPj4gLS0tIC9kZXYv bnVsbAo+PiArKysgYi9saWIvaWd0X2R1bW15bG9hZC5jCj4+IEBAIC0wLDAgKzEsMjc2IEBACj4+ ICsvKgo+PiArICogQ29weXJpZ2h0IMKpIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24KPj4gKyAqCj4+ ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55 IHBlcnNvbiBvYnRhaW5pbmcgYQo+PiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3Nv Y2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPj4gKyAqIHRvIGRl YWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0 IGxpbWl0YXRpb24KPj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdl LCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+PiArICogYW5kL29yIHNlbGwgY29w aWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4+ ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxv d2luZyBjb25kaXRpb25zOgo+PiArICoKPj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl IGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPj4gKyAqIHBh cmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBw b3J0aW9ucyBvZiB0aGUKPj4gKyAqIFNvZnR3YXJlLgo+PiArICoKPj4gKyAqIFRIRSBTT0ZUV0FS RSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBS RVNTIE9SCj4+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+PiAr ICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xB SU0sIERBTUFHRVMgT1IgT1RIRVIKPj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJ T04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4+ICsgKiBGUk9NLCBP VVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9U SEVSIERFQUxJTkdTCj4+ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4+ICsgKgo+PiArICovCj4+ICsK Pj4gKyNpbmNsdWRlICJpZ3QuaCIKPj4gKyNpbmNsdWRlICJpZ3RfZHVtbXlsb2FkLmgiCj4+ICsj aW5jbHVkZSA8dGltZS5oPgo+PiArI2luY2x1ZGUgPHNpZ25hbC5oPgo+PiArI2luY2x1ZGUgPHN5 cy9zeXNjYWxsLmg+Cj4+ICsKPj4gKy8qKgo+PiArICogU0VDVElPTjppZ3RfZHVtbXlsb2FkCj4+ ICsgKiBAc2hvcnRfZGVzY3JpcHRpb246IExpYnJhcnkgZm9yIHN1Ym1pdHRpbmcgR1BVIHdvcmts b2Fkcwo+PiArICogQHRpdGxlOiBEdW1teWxvYWQKPj4gKyAqIEBpbmNsdWRlOiBpZ3QuaAo+PiAr ICoKPj4gKyAqIEEgbG90IG9mIGlndCB0ZXN0Y2FzZXMgbmVlZCBzb21lIEdQVSB3b3JrbG9hZCB0 byBtYWtlIHN1cmUgYSByYWNlIHdpbmRvdyBpcwo+PiArICogYmlnIGVub3VnaC4gVW5mb3J0dW5h dGVseSBoYXZpbmcgYSBmaXhlZCBhbW91bnQgb2Ygd29ya2xvYWQgbGVhZHMgdG8KPj4gKyAqIHNw dXJpb3VzIHRlc3QgZmFpbHVyZXMgb3Igb3ZlcnRseSBsb25nIHJ1bnRpbWVzIG9uIHNvbWUgZmFz dC9zbG93IHBsYXRmb3Jtcy4KPiAKPiBzL292ZXJ0bHkvb3Zlcmx5Cj4gCj4+ICsgKiBUaGlzIGxp YnJhcnkgY29udGFpbnMgZnVuY3Rpb25hbGl0eSB0byBzdWJtaXQgR1BVIHdvcmtsb2FkcyB0aGF0 IHNob3VsZAo+PiArICogY29uc3VtZSBleGFjdGx5IGEgc3BlY2lmaWMgYW1vdW50IG9mIHRpbWUu Cj4+ICsgKi8KPj4gKwo+PiArI2RlZmluZSBOU0VDX1BFUl9TRUMgMTAwMDAwMDAwMEwKPiAKPiBU aW1lIHRvIHB1dCB0aGlzIGluIGEgaGVhZGVyIGluIGxpYj8gV2l0aCB0aGlzIHNlcmllcyBhcHBs aWVkIHdlIHdvdWxkCj4gaGF2ZSA3IHNlcGFyYXRlIGRlZmluaXRpb25zLgo+IAo+PiArI2RlZmlu ZSBnZXR0aWQoKSBzeXNjYWxsKF9fTlJfZ2V0dGlkKQo+PiArI2RlZmluZSBzaWdldl9ub3RpZnlf dGhyZWFkX2lkIF9zaWdldl91bi5fdGlkCj4gCj4gR3Vlc3MgdGhpcyBzaG91bGQgYmUgZmluZSBh cyB3ZWxsIHRvIGJlIGluIGEgc2luZ2xlIHBsYWNlIGJlY2F1c2UgSUdUCj4ga25vd3Mgd2hhdCBp dCdzIGRvaW5nIHJlZ2FyZGluZyBUSURzPwo+IAo+PiArI2RlZmluZSBMT0NBTF9JOTE1X0VYRUNf QlNEX1NISUZUICAgICAgKDEzKQo+PiArI2RlZmluZSBMT0NBTF9JOTE1X0VYRUNfQlNEX01BU0sg ICAgICAgKDMgPDwgTE9DQUxfSTkxNV9FWEVDX0JTRF9TSElGVCkKPj4gKwo+PiArI2RlZmluZSBF TkdJTkVfTUFTSyAgKEk5MTVfRVhFQ19SSU5HX01BU0sgfCBMT0NBTF9JOTE1X0VYRUNfQlNEX01B U0spCj4+ICsKPj4gK3N0YXRpYyB2b2lkCj4+ICtmaWxsX29iamVjdChzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2V4ZWNfb2JqZWN0MiAqb2JqLCB1aW50MzJfdCBnZW1faGFuZGxlLAo+PiArICAgICAgICAg ICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50cnkgKnJlbG9jcywgdWludDMyX3Qg Y291bnQpCj4+ICt7Cj4+ICsgICAgICAgbWVtc2V0KG9iaiwgMCwgc2l6ZW9mKCpvYmopKTsKPj4g KyAgICAgICBvYmotPmhhbmRsZSA9IGdlbV9oYW5kbGU7Cj4+ICsgICAgICAgb2JqLT5yZWxvY2F0 aW9uX2NvdW50ID0gY291bnQ7Cj4+ICsgICAgICAgb2JqLT5yZWxvY3NfcHRyID0gKHVpbnRwdHJf dClyZWxvY3M7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkCj4+ICtmaWxsX3JlbG9jKHN0cnVj dCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSAqcmVsb2MsCj4+ICsgICAgICAgICAgdWlu dDMyX3QgZ2VtX2hhbmRsZSwgdWludDMyX3Qgb2Zmc2V0LAo+PiArICAgICAgICAgIHVpbnQzMl90 IHJlYWRfZG9tYWlucywgdWludDMyX3Qgd3JpdGVfZG9tYWlucykKPj4gK3sKPj4gKyAgICAgICBy ZWxvYy0+dGFyZ2V0X2hhbmRsZSA9IGdlbV9oYW5kbGU7Cj4+ICsgICAgICAgcmVsb2MtPmRlbHRh ID0gMDsKPj4gKyAgICAgICByZWxvYy0+b2Zmc2V0ID0gb2Zmc2V0ICogc2l6ZW9mKHVpbnQzMl90 KTsKPj4gKyAgICAgICByZWxvYy0+cHJlc3VtZWRfb2Zmc2V0ID0gMDsKPj4gKyAgICAgICByZWxv Yy0+cmVhZF9kb21haW5zID0gcmVhZF9kb21haW5zOwo+PiArICAgICAgIHJlbG9jLT53cml0ZV9k b21haW4gPSB3cml0ZV9kb21haW5zOwo+PiArfQo+PiArCj4+ICsKPj4gK3N0YXRpYyB1aW50MzJf dCAqYmF0Y2g7Cj4gCj4gTWF5YmUgYWRkIGEgY29tbWVudCBleHBsYWluaW5nIHdoeSBhIGdsb2Jh bCBpcyBuZWVkZWQ/Cj4gCj4+ICsKPj4gK3N0YXRpYyB1aW50MzJfdCBlbWl0X3JlY3Vyc2l2ZV9i YXRjaChpbnQgZmQsIGludCBlbmdpbmUsIHVuc2lnbmVkIGRlcF9oYW5kbGUpCj4+ICt7Cj4+ICsg ICAgICAgY29uc3QgaW50IGdlbiA9IGludGVsX2dlbihpbnRlbF9nZXRfZHJtX2RldmlkKGZkKSk7 Cj4+ICsgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgb2JqWzJdOwo+PiAr ICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSByZWxvY3NbMl07Cj4+ ICsgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiBleGVjYnVmOwo+PiArICAg ICAgIHVuc2lnbmVkIGVuZ2luZXNbMTZdOwo+PiArICAgICAgIHVuc2lnbmVkIG5lbmdpbmUsIGhh bmRsZTsKPj4gKyAgICAgICBpbnQgaSA9IDAsIHJlbG9jX2NvdW50ID0gMCwgYnVmX2NvdW50ID0g MDsKPj4gKwo+PiArICAgICAgIGJ1Zl9jb3VudCA9IDA7Cj4+ICsgICAgICAgbmVuZ2luZSA9IDA7 Cj4+ICsgICAgICAgaWYgKGVuZ2luZSA8IDApIHsKPj4gKyAgICAgICAgICAgICAgIGZvcl9lYWNo X2VuZ2luZShmZCwgZW5naW5lKQo+PiArICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW5naW5l KQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZ2luZXNbbmVuZ2luZSsrXSA9 IGVuZ2luZTsKPj4gKyAgICAgICB9IGVsc2Ugewo+PiArICAgICAgICAgICAgICAgaWd0X3JlcXVp cmUoZ2VtX2hhc19yaW5nKGZkLCBlbmdpbmUpKTsKPiAKPiBUaGVyZSdzIGdlbV9yZXF1aXJlX3Jp bmcuCj4gCj4+ICsgICAgICAgICAgICAgICBlbmdpbmVzW25lbmdpbmUrK10gPSBlbmdpbmU7Cj4+ ICsgICAgICAgfQo+PiArICAgICAgIGlndF9yZXF1aXJlKG5lbmdpbmUpOwo+PiArCj4+ICsgICAg ICAgbWVtc2V0KCZleGVjYnVmLCAwLCBzaXplb2YoZXhlY2J1ZikpOwo+PiArICAgICAgIG1lbXNl dChvYmosIDAsIHNpemVvZihvYmopKTsKPj4gKyAgICAgICBtZW1zZXQocmVsb2NzLCAwLCBzaXpl b2YocmVsb2NzKSk7Cj4+ICsKPj4gKyAgICAgICBleGVjYnVmLmJ1ZmZlcnNfcHRyID0gKHVpbnRw dHJfdCkgb2JqOwo+PiArICAgICAgIGhhbmRsZSA9IGdlbV9jcmVhdGUoZmQsIDQwOTYpOwo+IAo+ IE1heSBiZSB3b3J0aCBkZWZpbmluZyBhIGNvbnN0YW50IHNvIHdlIGRvbid0IHJlcGVhdCB0aGUg c2FtZSBoYXJkY29kZWQKPiB2YWx1ZSBzbyBtYW55IHRpbWVzPwo+IAo+PiArICAgICAgIGJhdGNo ID0gZ2VtX21tYXBfX2d0dChmZCwgaGFuZGxlLCA0MDk2LCBQUk9UX1dSSVRFKTsKPiAKPiBXb3Vs ZCBpdCBtYWtlIHNlbnNlIHRvIGFzc2VydCB0aGF0IGJhdGNoIGlzIGVtcHR5IGp1c3QgaW4gY2Fz ZT8KPiAKPj4gKyAgICAgICBnZW1fc2V0X2RvbWFpbihmZCwgaGFuZGxlLAo+PiArICAgICAgICAg ICAgICAgICAgICAgICBJOTE1X0dFTV9ET01BSU5fR1RULCBJOTE1X0dFTV9ET01BSU5fR1RUKTsK Pj4gKwo+PiArICAgICAgIGlmIChuZW5naW5lID09IDEgJiYgZGVwX2hhbmRsZSA+IDApIHsKPiAK PiBXaGF0IGlmIHRoZXJlJ3MgYSBkZXBlbmRlbmN5IGFuZCBubyBzcGVjaWZpYyBlbmdpbmUgaXMg cGFzc2VkPyBJZgo+IHRoYXQncyBpbnZhbGlkLCB0aGVuIGFuIGFzc2VydCBtaWdodCBiZSBnb29k Lgo+IAo+PiArICAgICAgICAgICAgICAgLyogZHVtbXkgd3JpdGUgdG8gZGVwZW5kZW5jeSAqLwo+ PiArICAgICAgICAgICAgICAgZmlsbF9vYmplY3QoJm9ialtidWZfY291bnRdLCBkZXBfaGFuZGxl LCBOVUxMLCAwKTsKPj4gKyAgICAgICAgICAgICAgIGJ1Zl9jb3VudCsrOwo+PiArCj4+ICsgICAg ICAgICAgICAgICBmaWxsX3JlbG9jKCZyZWxvY3NbcmVsb2NfY291bnRdLCBkZXBfaGFuZGxlLCBp LAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICBJOTE1X0dFTV9ET01BSU5fUkVOREVSLAo+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICBJOTE1X0dFTV9ET01BSU5fUkVOREVSKTsKPj4g KyAgICAgICAgICAgICAgIGJhdGNoW2krK10gPSAwOyAvKiByZWxvYyAqLwo+PiArICAgICAgICAg ICAgICAgcmVsb2NfY291bnQrKzsKPj4gKyAgICAgICAgICAgICAgIGJhdGNoW2krK10gPSBNSV9O T09QOwo+PiArICAgICAgIH0KPj4gKwo+PiArICAgICAgIGlmIChnZW4gPj0gOCkgewo+PiArICAg ICAgICAgICAgICAgYmF0Y2hbaSsrXSA9IE1JX0JBVENIX0JVRkZFUl9TVEFSVCB8IDEgPDwgOCB8 IDE7Cj4+ICsgICAgICAgICAgICAgICAvKiByZWN1cnNlICovCj4+ICsgICAgICAgICAgICAgICBm aWxsX3JlbG9jKCZyZWxvY3NbcmVsb2NfY291bnRdLCBoYW5kbGUsIGksCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgIEk5MTVfR0VNX0RPTUFJTl9DT01NQU5ELCAwKTsKPj4gKyAgICAgICAg ICAgICAgIGJhdGNoW2krK10gPSAwOwo+PiArICAgICAgICAgICAgICAgYmF0Y2hbaSsrXSA9IDA7 Cj4+ICsgICAgICAgfSBlbHNlIGlmIChnZW4gPj0gNikgewo+PiArICAgICAgICAgICAgICAgYmF0 Y2hbaSsrXSA9IE1JX0JBVENIX0JVRkZFUl9TVEFSVCB8IDEgPDwgODsKPj4gKyAgICAgICAgICAg ICAgIC8qIHJlY3Vyc2UgKi8KPj4gKyAgICAgICAgICAgICAgIGZpbGxfcmVsb2MoJnJlbG9jc1ty ZWxvY19jb3VudF0sIGhhbmRsZSwgaSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgSTkx NV9HRU1fRE9NQUlOX0NPTU1BTkQsIDApOwo+PiArICAgICAgICAgICAgICAgYmF0Y2hbaSsrXSA9 IDA7Cj4+ICsgICAgICAgfSBlbHNlIHsKPj4gKyAgICAgICAgICAgICAgIGJhdGNoW2krK10gPSBN SV9CQVRDSF9CVUZGRVJfU1RBUlQgfCAyIDw8IDYgfAo+PiArICAgICAgICAgICAgICAgICAgICAg ICAoKGdlbiA8IDQpID8gMSA6IDApOwo+PiArICAgICAgICAgICAgICAgLyogcmVjdXJzZSAqLwo+ PiArICAgICAgICAgICAgICAgZmlsbF9yZWxvYygmcmVsb2NzW3JlbG9jX2NvdW50XSwgaGFuZGxl LCBpLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICBJOTE1X0dFTV9ET01BSU5fQ09NTUFO RCwgMCk7Cj4+ICsgICAgICAgICAgICAgICBiYXRjaFtpKytdID0gMDsKPj4gKyAgICAgICAgICAg ICAgIGlmIChnZW4gPCA0KQo+PiArICAgICAgICAgICAgICAgICAgICAgICByZWxvY3NbcmVsb2Nf Y291bnRdLmRlbHRhID0gMTsKPj4gKyAgICAgICB9Cj4+ICsgICAgICAgcmVsb2NfY291bnQrKzsK Pj4gKwo+PiArICAgICAgIGZpbGxfb2JqZWN0KCZvYmpbYnVmX2NvdW50XSwgaGFuZGxlLCByZWxv Y3MsIHJlbG9jX2NvdW50KTsKPj4gKyAgICAgICBidWZfY291bnQrKzsKPj4gKwo+PiArICAgICAg IGZvciAoaSA9IDA7IGkgPCBuZW5naW5lOyBpKyspIHsKPj4gKyAgICAgICAgICAgICAgIGV4ZWNi dWYuZmxhZ3MgJj0gfkVOR0lORV9NQVNLOwo+PiArICAgICAgICAgICAgICAgZXhlY2J1Zi5mbGFn cyA9IGVuZ2luZXNbaV07Cj4+ICsgICAgICAgICAgICAgICBleGVjYnVmLmJ1ZmZlcl9jb3VudCA9 IGJ1Zl9jb3VudDsKPj4gKyAgICAgICAgICAgICAgIGdlbV9leGVjYnVmKGZkLCAmZXhlY2J1Zik7 Cj4+ICsgICAgICAgfQo+PiArCj4+ICsgICAgICAgcmV0dXJuIGhhbmRsZTsKPj4gK30KPj4gKwo+ PiArc3RhdGljIHZvaWQgc2lnaXRlcihpbnQgc2lnLCBzaWdpbmZvX3QgKmluZm8sIHZvaWQgKmFy ZykKPj4gK3sKPj4gKyAgICAgICAqYmF0Y2ggPSBNSV9CQVRDSF9CVUZGRVJfRU5EOwo+PiArICAg ICAgIF9fc3luY19zeW5jaHJvbml6ZSgpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdGltZXJfdCBz ZXR1cF9iYXRjaF9leGl0X3RpbWVyKGludDY0X3QgbnMpCj4+ICt7Cj4+ICsgICAgICAgdGltZXJf dCB0aW1lcjsKPj4gKyAgICAgICBzdHJ1Y3Qgc2lnZXZlbnQgc2V2Owo+PiArICAgICAgIHN0cnVj dCBzaWdhY3Rpb24gYWN0Owo+PiArICAgICAgIHN0cnVjdCBpdGltZXJzcGVjIGl0czsKPj4gKwo+ PiArICAgICAgIG1lbXNldCgmc2V2LCAwLCBzaXplb2Yoc2V2KSk7Cj4+ICsgICAgICAgc2V2LnNp Z2V2X25vdGlmeSA9IFNJR0VWX1NJR05BTCB8IFNJR0VWX1RIUkVBRF9JRDsKPj4gKyAgICAgICBz ZXYuc2lnZXZfbm90aWZ5X3RocmVhZF9pZCA9IGdldHRpZCgpOwo+PiArICAgICAgIHNldi5zaWdl dl9zaWdubyA9IFNJR1JUTUlOICsgMTsKPj4gKyAgICAgICBpZ3RfYXNzZXJ0KHRpbWVyX2NyZWF0 ZShDTE9DS19NT05PVE9OSUMsICZzZXYsICZ0aW1lcikgPT0gMCk7Cj4+ICsgICAgICAgaWd0X2Fz c2VydCh0aW1lciA+IDApOwo+PiArCj4+ICsgICAgICAgbWVtc2V0KCZhY3QsIDAsIHNpemVvZihh Y3QpKTsKPj4gKyAgICAgICBhY3Quc2Ffc2lnYWN0aW9uID0gc2lnaXRlcjsKPj4gKyAgICAgICBh Y3Quc2FfZmxhZ3MgPSBTQV9TSUdJTkZPOwo+PiArICAgICAgIGlndF9hc3NlcnQoc2lnYWN0aW9u KFNJR1JUTUlOICsgMSwgJmFjdCwgTlVMTCkgPT0gMCk7Cj4+ICsKPj4gKyAgICAgICBtZW1zZXQo Jml0cywgMCwgc2l6ZW9mKGl0cykpOwo+PiArICAgICAgIGl0cy5pdF92YWx1ZS50dl9zZWMgPSBu cyAvIE5TRUNfUEVSX1NFQzsKPj4gKyAgICAgICBpdHMuaXRfdmFsdWUudHZfbnNlYyA9IG5zICUg TlNFQ19QRVJfU0VDOwo+PiArICAgICAgIGlndF9hc3NlcnQodGltZXJfc2V0dGltZSh0aW1lciwg MCwgJml0cywgTlVMTCkgPT0gMCk7Cj4+ICsKPj4gKyAgICAgICByZXR1cm4gdGltZXI7Cj4+ICt9 Cj4+ICsKPj4gKy8qKgo+PiArICogaWd0X3NwaW5fYmF0Y2g6Cj4+ICsgKiBAZmQ6IG9wZW4gaTkx NSBkcm0gZmlsZSBkZXNjcmlwdG9yCj4+ICsgKiBAbnM6IGFtb3VudCBvZiB0aW1lIGluIG5hbm9z ZWNvbmRzIHRoZSBiYXRjaCBleGVjdXRlcyBhZnRlciB0ZXJtaW5hdGluZy4KPj4gKyAqICAgICAg SWYgdmFsdWUgaXMgbGVzcyB0aGFuIDAsIGV4ZWN1dGUgYmF0Y2ggZm9yZXZlci4KPj4gKyAqIEBl bmdpbmU6IFJpbmcgdG8gZXhlY3V0ZSBiYXRjaCBPUidkIHdpdGggZXhlY2J1ZiBmbGFncy4gSWYg dmFsdWUgaXMgbGVzcwo+PiArICogICAgICAgICAgdGhhbiAwLCBleGVjdXRlIG9uIGFsbCBhdmFp bGFibGUgcmluZ3MuCj4+ICsgKiBAZGVwX2hhbmRsZTogaGFuZGxlIHRvIGEgYnVmZmVyIG9iamVj dCBkZXBlbmRlbmN5LiBJZiBncmVhdGVyIHRoYW4gMCwgYWRkIGEKPj4gKyAqICAgICAgICAgICAg ICByZWxvY2F0aW9uIGVudHJ5IHRvIHRoaXMgYnVmZmVyIHdpdGhpbiB0aGUgYmF0Y2guCj4+ICsg Kgo+PiArICogU3RhcnQgYSByZWN1cnNpdmUgYmF0Y2ggb24gYSByaW5nIHRoYXQgdGVybWluYXRl cyBhZnRlciBhbiBleGFjdCBhbW91bnQKPj4gKyAqIG9mIHRpbWUgaGFzIGVsYXBzZWQuIEltbWVk aWF0ZWx5IHJldHVybnMgYSAjaWd0X3NwaW5fdCB0aGF0IGNvbnRhaW5zIHRoZQo+PiArICogYmF0 Y2gncyBoYW5kbGUgdGhhdCBjYW4gYmUgd2FpdGVkIHVwb24uIFRoZSByZXR1cm5lZCBzdHJ1Y3R1 cmUgbXVzdCBiZSBwYXNzZWQgdG8KPj4gKyAqIGlndF9wb3N0X3NwaW5fYmF0Y2goKSBmb3IgcG9z dC1wcm9jZXNzaW5nLgo+PiArICoKPj4gKyAqIFJldHVybnM6Cj4+ICsgKiBTdHJ1Y3R1cmUgd2l0 aCBoZWxwZXIgaW50ZXJuYWwgc3RhdGUgZm9yIGlndF9wb3N0X3NwaW5fYmF0Y2goKS4KPj4gKyAq Lwo+PiAraWd0X3NwaW5fdCBpZ3Rfc3Bpbl9iYXRjaChpbnQgZmQsIGludDY0X3QgbnMsIGludCBl bmdpbmUsIHVuc2lnbmVkIGRlcF9oYW5kbGUpCj4+ICt7Cj4+ICsgICAgICAgdGltZXJfdCB0aW1l cjsKPj4gKyAgICAgICB1aW50MzJfdCBoYW5kbGUgPSBlbWl0X3JlY3Vyc2l2ZV9iYXRjaChmZCwg ZW5naW5lLCBkZXBfaGFuZGxlKTsKPj4gKyAgICAgICBpbnQ2NF90IHdhaXRfdGltZW91dCA9IDA7 Cj4+ICsgICAgICAgaWd0X2Fzc2VydF9lcShnZW1fd2FpdChmZCwgaGFuZGxlLCAmd2FpdF90aW1l b3V0KSwgLUVUSU1FKTsKPj4gKwo+PiArICAgICAgIGlmIChucyA8IDEpIHsKPj4gKyAgICAgICAg ICAgICAgIGlmIChucyA9PSAwKSB7Cj4gCj4gVGhpcyBibG9jayBjYW4gYmUgb25lIGxldmVsIGhp Z2hlciwgYW5kIHRoZW4geW91IGNhbiBoYXZlIGEgY29uZGl0aW9uCj4gZm9yIG5zIDwgMCwgd2hp Y2ggd2lsbCB0aGVuIG1hdGNoIHRoZSBmdW5jdGlvbiBkb2NzLgo+IAo+PiArICAgICAgICAgICAg ICAgICAgICAgICAqYmF0Y2ggPSBNSV9CQVRDSF9CVUZGRVJfRU5EOwo+PiArICAgICAgICAgICAg ICAgICAgICAgICBfX3N5bmNfc3luY2hyb25pemUoKTsKPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIChpZ3Rfc3Bpbl90KXsgaGFuZGxlLCBiYXRjaCwgMH07Cj4+ICsgICAgICAgICAg ICAgICB9Cj4+ICsgICAgICAgICAgICAgICByZXR1cm4gKGlndF9zcGluX3QpeyBoYW5kbGUsIGJh dGNoLCAwIH07Cj4+ICsgICAgICAgfQo+PiArICAgICAgIHRpbWVyID0gc2V0dXBfYmF0Y2hfZXhp dF90aW1lcihucyk7Cj4+ICsKPj4gKyAgICAgICByZXR1cm4gKGlndF9zcGluX3QpeyBoYW5kbGUs IGJhdGNoLCB0aW1lciB9Owo+PiArfQo+PiArCj4+ICsvKioKPj4gKyAqIGlndF9wb3N0X3NwaW5f YmF0Y2g6Cj4+ICsgKiBAZmQ6IG9wZW4gaTkxNSBkcm0gZmlsZSBkZXNjcmlwdG9yCj4+ICsgKiBA YXJnOiBzcGluIGJhdGNoIHN0YXRlIGZyb20gaWd0X3NwaW5fYmF0Y2goKQo+PiArICoKPj4gKyAq IFRoaXMgZnVuY3Rpb24gZG9lcyB0aGUgbmVjZXNzYXJ5IHBvc3QtcHJvY2Vzc2luZyBhZnRlciBz dGFydGluZyBhIHJlY3Vyc2l2ZQo+PiArICogYmF0Y2ggd2l0aCBpZ3Rfc3Bpbl9iYXRjaCgpLgo+ PiArICovCj4+ICt2b2lkIGlndF9wb3N0X3NwaW5fYmF0Y2goaW50IGZkLCBpZ3Rfc3Bpbl90IGFy ZykKPj4gK3sKPj4gKyAgICAgICBpZiAoYXJnLmhhbmRsZSA9PSAwKQo+PiArICAgICAgICAgICAg ICAgcmV0dXJuOwo+PiArCj4+ICsgICAgICAgaWYgKGFyZy50aW1lciA+IDApCj4+ICsgICAgICAg ICAgICAgICB0aW1lcl9kZWxldGUoYXJnLnRpbWVyKTsKPj4gKwo+PiArICAgICAgIGdlbV9jbG9z ZShmZCwgYXJnLmhhbmRsZSk7Cj4+ICsgICAgICAgbXVubWFwKGFyZy5iYXRjaCwgNDA5Nik7Cj4+ ICt9Cj4+ICsKPj4gKwo+PiArLyoqCj4+ICsgKiBpZ3Rfc3Bpbl9iYXRjaF93YWl0Ogo+PiArICog QGZkOiBvcGVuIGk5MTUgZHJtIGZpbGUgZGVzY3JpcHRvcgo+PiArICogQG5zOiBhbW91bnQgb2Yg dGltZSBpbiBuYW5vc2Vjb25kcyB0aGUgYmF0Y2ggZXhlY3V0ZXMgYWZ0ZXIgdGVybWluYXRpbmcu Cj4+ICsgKiAgICAgIElmIHZhbHVlIGlzIGxlc3MgdGhhbiAwLCBleGVjdXRlIGJhdGNoIGZvcmV2 ZXIuCj4+ICsgKiBAZW5naW5lOiByaW5nIHRvIGV4ZWN1dGUgYmF0Y2ggT1InZCB3aXRoIGV4ZWNi dWYgZmxhZ3MuIElmIHZhbHVlIGlzIGxlc3MKPj4gKyAqICAgICAgICAgIHRoYW4gMCwgZXhlY3V0 ZSBvbiBhbGwgYXZhaWxhYmxlIHJpbmdzLgo+PiArICogQGRlcF9oYW5kbGU6IGhhbmRsZSB0byBh IGJ1ZmZlciBvYmplY3QgZGVwZW5kZW5jeS4gSWYgZ3JlYXRlciB0aGFuIDAsIGluY2x1ZGUKPj4g KyAqICAgICAgICAgICAgICB0aGlzIGJ1ZmZlciBvbiB0aGUgd2FpdCBkZXBlbmRlbmN5Cj4+ICsg Kgo+PiArICogVGhpcyBpcyBzaW1pbGFyIHRvIGlndF9zcGluX2JhdGNoKCksIGJ1dCB3YWl0cyBv biB0aGUgcmVjdXJzaXZlIGJhdGNoIHRvIGZpbmlzaAo+PiArICogaW5zdGVhZCBvZiByZXR1cm5p bmcgcmlnaHQgYXdheS4gVGhlIGZ1bmN0aW9uIGFsc28gZG9lcyB0aGUgbmVjZXNzYXJ5Cj4+ICsg KiBwb3N0LXByb2Nlc3NpbmcgYXV0b21hdGljYWxseSBpZiBzZXQgdG8gdGltZW91dC4KPj4gKyAq Lwo+PiArdm9pZCBpZ3Rfc3Bpbl9iYXRjaF93YWl0KGludCBmZCwgaW50NjRfdCBucywgaW50IGVu Z2luZSwgdW5zaWduZWQgZGVwX2hhbmRsZSkKPj4gK3sKPj4gKyAgICAgICBpZ3Rfc3Bpbl90IHNw aW4gPSBpZ3Rfc3Bpbl9iYXRjaChmZCwgbnMsIGVuZ2luZSwgZGVwX2hhbmRsZSk7Cj4+ICsgICAg ICAgaW50NjRfdCB3YWl0X3RpbWVvdXQgPSBucyArICgwLjUgKiBOU0VDX1BFUl9TRUMpOwo+PiAr ICAgICAgIGlndF9hc3NlcnRfZXEoZ2VtX3dhaXQoZmQsIHNwaW4uaGFuZGxlLCAmd2FpdF90aW1l b3V0KSwgMCk7Cj4+ICsKPj4gKyAgICAgICBpZ3RfcG9zdF9zcGluX2JhdGNoKGZkLCBzcGluKTsK Pj4gK30KPj4gZGlmZiAtLWdpdCBhL2xpYi9pZ3RfZHVtbXlsb2FkLmggYi9saWIvaWd0X2R1bW15 bG9hZC5oCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAuLjc5ZWFkMmMK Pj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9saWIvaWd0X2R1bW15bG9hZC5oCj4+IEBAIC0wLDAg KzEsNDIgQEAKPj4gKy8qCj4+ICsgKiBDb3B5cmlnaHQgwqkgMjAxNiBJbnRlbCBDb3Jwb3JhdGlv bgo+PiArICoKPj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hh cmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdh cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ PiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVk aW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+PiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1v ZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4+ICsgKiBhbmQv b3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8g d2hvbSB0aGUKPj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0 byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4+ICsgKgo+PiArICogVGhlIGFib3ZlIGNvcHly aWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4 dAo+PiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1 YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQo+PiArICogU29mdHdhcmUuCj4+ICsgKgo+PiArICog VEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5Z IEtJTkQsIEVYUFJFU1MgT1IKPj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+PiArICogRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5U IFNIQUxMCj4+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUg Rk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+PiArICogTElBQklMSVRZLCBXSEVUSEVS IElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPj4g KyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRI RSBVU0UgT1IgT1RIRVIgREVBTElOR1MKPj4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPj4gKyAqCj4+ ICsgKi8KPj4gKwo+PiArI2lmbmRlZiBfX0lHVF9EVU1NWUxPQURfSF9fCj4+ICsjZGVmaW5lIF9f SUdUX0RVTU1ZTE9BRF9IX18KPj4gKwo+PiArdHlwZWRlZiBzdHJ1Y3QgaWd0X3NwaW4gewo+PiAr ICAgICAgIHVuc2lnbmVkIGhhbmRsZTsKPj4gKyAgICAgICB1aW50MzJfdCAqYmF0Y2g7Cj4+ICsg ICAgICAgdGltZXJfdCB0aW1lcjsKPj4gK30gaWd0X3NwaW5fdDsKPj4gKwo+PiArCj4+ICtpZ3Rf c3Bpbl90IGlndF9zcGluX2JhdGNoKGludCBmZCwgaW50NjRfdCBucywgaW50IGVuZ2luZSwgdW5z aWduZWQgZGVwX2hhbmRsZSk7Cj4+ICsKPj4gK3ZvaWQgaWd0X3Bvc3Rfc3Bpbl9iYXRjaChpbnQg ZmQsIGlndF9zcGluX3QgYXJnKTsKPj4gKwo+PiArdm9pZCBpZ3Rfc3Bpbl9iYXRjaF93YWl0KGlu dCBmZCwgaW50NjRfdCBucywgaW50IGVuZ2luZSwgdW5zaWduZWQgZGVwX2hhbmRsZSk7Cj4gCj4g U29ycnkgYWJvdXQgdGhlIGJpa2VzaGVkZGluZyBhdCB2NiwgYnV0IGp1c3QgaW4gY2FzZSB5b3Ug bGlrZSB0aGUKPiBpZGVhOiB3aGF0IGFib3V0IGNhbGxpbmcgdGhlc2UgZnVuY3Rpb25zIGlndF9z cGluX2JhdGNoX25ldygpIGFuZAo+IGlndF9zcGluX2JhdGNoX2ZyZWUoKSBhcyBpbiBpZ3RfcGlw ZV9jcmNfbmV3IGFuZCBpZ3RfcGlwZV9jcmNfZnJlZT8gT3IKPiBfYWxsb2MgYW5kIF9mcmVlLCBh cyB3aXRoIGludGVsX2JhdGNoYnVmZmVyLgo+IAo+IEknbSBzYXlpbmcgdGhpcyBiZWNhdXNlIHRo ZSBmaXJzdCB0aW1lIEkgcmVhZCBpZ3RfcG9zdF9zcGluX2JhdGNoIEkKPiB0aG91Z2h0IGl0IHdh cyBhYm91dCBwb3N0aW5nIHRoZSBiYXRjaGJ1ZmZlciwgYW5kIGFsbCB0aGUKPiBwb3N0LXByb2Nl c3Npbmcgc2VlbXMgdG8ganVzdCBiZSByZWd1bGFyIGNsZWFudXAuCgpUaGUgYXBpIHdhcyBwYXR0 ZXJuZWQgYWZ0ZXIgaWd0X2hhbmdfcmluZyBhbmQgaWd0X3Bvc3RfaGFuZ19yaW5nLiBUaGUKcG9z dF9oYW5nIGluIHRoYXQgYWZvcmVtZW50aW9uZWQgdGVzdCBjYXNlIGFsc28gZG9lcyBqYW5pdG9y aWFsIHRhc2tzLgpCdXQgaW4gYW55IGNhc2UsIEkgZG9uJ3QgbWluZCBwb3N0Zml4aW5nIHRoaXMg dG8gX25ldyBhbmQgX2ZyZWUKCj4gQWxzbywgYXJlIHlvdSBjb21wbGV0ZWx5IHN1cmUgdGhhdCBh bHdheXMgdGhlIHBvaW50IHdoZXJlIHRoZQo+IGJhdGNoYnVmZmVyIGlzIGNyZWF0ZWQgaXMgYWxz byB0aGUgcG9pbnQgd2hlcmUgaXQgaGFzIHRvIGJlIHN0YXJ0ZWQ/CgpJIGRvbid0IHNlZSBhbnkg cmVhc29uIHdoeSBub3Q/IGlndF9zcGluX2JhdGNoIGFzc2VydHMgYW55d2F5IHdoZW4gaXQKZmFp bHMgdG8gbWFrZSBhIHJlY3Vyc2l2ZSBiYXRjaCAvIHRoZSBHUFUgaXMgbGVmdCBpbiBhbiBpZGxl IHN0YXRlLgoKLSBBYmRpZWwKCgo+IE90aGVyd2lzZSwgYSBzZXBhcmF0ZSBfc3RhcnQgZnVuY3Rp b24gd291bGQgZ2l2ZSB0aGF0IGZsZXhpYmlsaXR5IGFuZAo+IHRoZSBBUEkgbWF5IGJlIGEgYml0 IG1vcmUgZXhwbGljaXQuCj4gCj4gUmVnYXJkcywKPiAKPiBUb21ldQo+IAo+PiArCj4+ICsKPj4g KyNlbmRpZiAvKiBfX0lHVF9EVU1NWUxPQURfSF9fICovCj4+IC0tCj4+IDIuNy40Cj4+Cj4+IF9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+IEludGVsLWdm eCBtYWlsaW5nIGxpc3QKPj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+PiBodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo+IApf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZngg bWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK