From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Gordon Subject: Re: [PATCH v2 2/6] drm/i915/guc: Add GuC css header parser Date: Thu, 24 Sep 2015 20:04:46 +0100 Message-ID: <5604494E.4040609@intel.com> References: <1441929372-26140-1-git-send-email-yu.dai@intel.com> <1442954925-4022-1-git-send-email-yu.dai@intel.com> <1442954925-4022-3-git-send-email-yu.dai@intel.com> <56040778.6050103@intel.com> <56044229.8030308@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 2BCF66EF4E for ; Thu, 24 Sep 2015 12:05:29 -0700 (PDT) In-Reply-To: <56044229.8030308@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Yu Dai , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gMjQvMDkvMTUgMTk6MzQsIFl1IERhaSB3cm90ZToKPgo+Cj4gT24gMDkvMjQvMjAxNSAwNzoy MyBBTSwgRGF2ZSBHb3Jkb24gd3JvdGU6Cj4+IE9uIDIyLzA5LzE1IDIxOjQ4LCB5dS5kYWlAaW50 ZWwuY29tIHdyb3RlOgo+PiA+IEZyb206IEFsZXggRGFpIDx5dS5kYWlAaW50ZWwuY29tPgo+PiA+ Cj4+ID4gQnkgdXNpbmcgaW5mb3JtYXRpb24gZnJvbSBHdUMgY3NzIGhlYWRlciwgd2UgY2FuIGVs aW1pbmF0ZSBzb21lCj4+ID4gaGFyZCBjb2RlIHcuci50IHNpemUgb2Ygc29tZSBjb21wb25lbnRz IG9mIGZpcm13YXJlLgo+PiA+Cj4+ID4gdjI6IEFkZCBpbmRlbnQgaW50byBET0MgdG8gbWFrZSBm aXhlZC13aWR0aCBmb3JtYXQgcmF0aGVyIHRoYW4KPj4gPiBjaGFuZ2UgdGhlIHRtcGwuCj4+ID4K Pj4gPiB2MTogMSkgZ3VjX2Nzc19oZWFkZXIgaXMgZGVmaW5lZCBhcyBfX3BhY2tlZCBub3cKPj4g PiAgICAgIDIpIEFkZCBhbmQgY29ycmVjdCBHdUMgcmVsYXRlZCB0b3BpY3MgaW4ga2VybmVsL0Rv Ywo+PiA+Cj4+ID4gU2lnbmVkLW9mZi1ieTogQWxleCBEYWkgPHl1LmRhaUBpbnRlbC5jb20+Cj4+ ID4gLS0tCj4+ID4gICBEb2N1bWVudGF0aW9uL0RvY0Jvb2svZHJtLnRtcGwgICAgICAgICAgfCAg IDkgKystCj4+ID4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaCAgICAgICAgfCAg IDIgKy0KPj4gPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19md2lmLmggICB8ICAz NiArKysrKysrKysrKwo+PiA+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRl ci5jIHwgMTA3Cj4+ICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCj4+ID4gICA0IGZp bGVzIGNoYW5nZWQsIDExNyBpbnNlcnRpb25zKCspLCAzNyBkZWxldGlvbnMoLSkKPj4gPgo+PiA+ IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZHJtLnRtcGwKPj4gYi9Eb2N1bWVu dGF0aW9uL0RvY0Jvb2svZHJtLnRtcGwKPj4gPiBpbmRleCA2NmJjNjQ2Li4xMTYzMzJmIDEwMDY0 NAo+PiA+IC0tLSBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9kcm0udG1wbAo+PiA+ICsrKyBiL0Rv Y3VtZW50YXRpb24vRG9jQm9vay9kcm0udG1wbAo+PiA+IEBAIC00MTU1LDE0ICs0MTU1LDE5IEBA IGludCBudW1faW9jdGxzOzwvc3lub3BzaXM+Cj4+ID4gICAgICAgICA8dGl0bGU+R3VDLWJhc2Vk IENvbW1hbmQgU3VibWlzc2lvbjwvdGl0bGU+Cj4+ID4gICAgICAgICA8c2VjdDI+Li4vbGludXgt aW1hZ2UtNC4zLjAtcmMyLWRzZy0xMTAyMi1nOTc2NWNhZi1kc2ctaW50ZWwtbmlnaHRseV80LjMu MC1yYzItZHNnLTExMDIyLWc5NzY1Y2FmLWRzZy1pbnRlbC1uaWdodGx5LTdfYW1kNjQuZGViCj4+ ID4gICAgICAgICAgIDx0aXRsZT5HdUM8L3RpdGxlPgo+PiA+IC0hUGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2d1Y19sb2FkZXIuYyBHdUMtc3BlY2lmaWMgZmlybXdhcmUgbG9hZGVyCj4+ID4g KyFQZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jIEd1Qwo+PiA+ICAgIUlk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKPj4gPiAgICAgICAgIDwvc2Vj dDI+Cj4+ID4gICAgICAgICA8c2VjdDI+Cj4+ID4gICAgICAgICAgIDx0aXRsZT5HdUMgQ2xpZW50 PC90aXRsZT4KPj4gPiAtIVBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9u LmMgR3VDLWJhc2VkIGNvbW1hbmQKPj4gc3VibWlzc2lzb24KPj4gPiArIVBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgR3VDIENsaWVudAo+PiA+ICAgIUlkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKPj4gPiAgICAgICAgIDwvc2VjdDI+ Cj4+ID4gKyAgICAgIDxzZWN0Mj4KPj4gPiArICAgICAgICA8dGl0bGU+R3VDIEZpcm13YXJlIExh eW91dDwvdGl0bGU+Cj4+ID4gKyFQZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRl ci5jIEd1QyBGaXJtd2FyZSBMYXlvdXQKPj4gPiArIUlkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ndWNfbG9hZGVyLmMKPj4gPiArICAgICAgPC9zZWN0Mj4KPj4gPiAgICAgICA8L3NlY3QxPgo+ PiA+Cj4+ID4gICAgICAgPHNlY3QxPgo+PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9ndWMuaAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oCj4+ ID4gaW5kZXggNGVjMmQyNy4uZTEzODlmYyAxMDA2NDQKPj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9ndWMuaAo+PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2d1Yy5oCj4+ID4gQEAgLTcxLDYgKzcxLDcgQEAgc3RydWN0IGludGVsX2d1Y19mdyB7Cj4+ID4g ICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKiAgICBndWNfZndfb2JqOwo+PiA+ICAg ICAgIGVudW0gaW50ZWxfZ3VjX2Z3X3N0YXR1cyAgICBndWNfZndfZmV0Y2hfc3RhdHVzOwo+PiA+ ICAgICAgIGVudW0gaW50ZWxfZ3VjX2Z3X3N0YXR1cyAgICBndWNfZndfbG9hZF9zdGF0dXM7Cj4+ ID4gKyAgICBzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIgICAgICAgIGd1Y19md19oZWFkZXI7Cj4+ID4K Pj4gPiAgICAgICB1aW50MTZfdCAgICAgICAgICAgIGd1Y19md19tYWpvcl93YW50ZWQ7Cj4+ID4g ICAgICAgdWludDE2X3QgICAgICAgICAgICBndWNfZndfbWlub3Jfd2FudGVkOwo+PiA+IEBAIC04 MCw3ICs4MSw2IEBAIHN0cnVjdCBpbnRlbF9ndWNfZncgewo+PiA+Cj4+ID4gICBzdHJ1Y3QgaW50 ZWxfZ3VjIHsKPj4gPiAgICAgICBzdHJ1Y3QgaW50ZWxfZ3VjX2Z3IGd1Y19mdzsKPj4gPiAtCj4+ ID4gICAgICAgdWludDMyX3QgbG9nX2ZsYWdzOwo+PiA+ICAgICAgIHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpsb2dfb2JqOwo+PiA+Cj4+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2d1Y19md2lmLmgKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9n dWNfZndpZi5oCj4+ID4gaW5kZXggZTFmNDdiYS4uMDA2ZGMwZCAxMDA2NDQKPj4gPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfZndpZi5oCj4+ID4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2Z3aWYuaAo+PiA+IEBAIC0xMjIsNiArMTIyLDQyIEBACj4+ ID4KPj4gPiAgICNkZWZpbmUgR1VDX0NUTF9NQVhfRFdPUkRTICAgICAgICAoR1VDX0NUTF9SU1JW RCArIDEpCj4+ID4KPj4gPiArc3RydWN0IGd1Y19jc3NfaGVhZGVyIHsKPj4gPiArICAgIHVpbnQz Ml90IG1vZHVsZV90eXBlOwo+PiA+ICsgICAgdWludDMyX3QgaGVhZGVyX2xlbjsgLyogaGVhZGVy IGxlbmd0aCBwbHVzIHNpemUgb2YgYWxsIG90aGVyCj4+IGtleXMgKi8KPj4gPiArICAgIHVpbnQz Ml90IGhlYWRlcl92ZXJzaW9uOwo+PiA+ICsgICAgdWludDMyX3QgbW9kdWxlX2lkOwo+PiA+ICsg ICAgdWludDMyX3QgbW9kdWxlX3ZlbmRvcjsKPj4gPiArICAgIHVuaW9uIHsKPj4gPiArICAgICAg ICBzdHJ1Y3Qgewo+PiA+ICsgICAgICAgICAgICB1aW50OF90IGRheTsKPj4gPiArICAgICAgICAg ICAgdWludDhfdCBtb250aDsKPj4gPiArICAgICAgICAgICAgdWludDE2X3QgeWVhcjsKPj4gPiAr ICAgICAgICB9Owo+PiA+ICsgICAgICAgIHVpbnQzMl90IGRhdGU7Cj4+ID4gKyAgICB9Owo+PiA+ ICsgICAgdWludDMyX3Qgc2l6ZTsgLyogdUNvZGUgc2l6ZSBwbHVzIGhlYWRlcl9sZW4gKi8KPj4g PiArICAgIHVpbnQzMl90IGtleV9zaXplOwo+PiA+ICsgICAgdWludDMyX3QgbW9kdWx1c19zaXpl Owo+PiA+ICsgICAgdWludDMyX3QgZXhwb25lbnRfc2l6ZTsKPj4gPiArICAgIHVuaW9uIHsKPj4g PiArICAgICAgICBzdHJ1Y3Qgewo+PiA+ICsgICAgICAgICAgICB1aW50OF90IGhvdXI7Cj4+ID4g KyAgICAgICAgICAgIHVpbnQ4X3QgbWluOwo+PiA+ICsgICAgICAgICAgICB1aW50MTZfdCBzZWM7 Cj4+ID4gKyAgICAgICAgfTsKPj4gPiArICAgICAgICB1aW50MzJfdCB0aW1lOwo+PiA+ICsgICAg fTsKPj4gPiArCj4+ID4gKyAgICBjaGFyIHVzZXJuYW1lWzhdOwo+PiA+ICsgICAgY2hhciBidWls ZG51bWJlclsxMl07Cj4+ID4gKyAgICB1aW50MzJfdCBkZXZpY2VfaWQ7Cj4+ID4gKyAgICB1aW50 MzJfdCBndWNfc3dfdmVyc2lvbjsKPj4gPiArICAgIHVpbnQzMl90IHByb2RfcHJlcHJvZF9mdzsK Pj4gPiArICAgIHVpbnQzMl90IHJlc2VydmVkWzEyXTsKPj4gPiArICAgIHVpbnQzMl90IGhlYWRl cl9pbmZvOwo+PiA+ICt9IF9fcGFja2VkOwo+PiA+ICsKPj4gPiAgIHN0cnVjdCBndWNfZG9vcmJl bGxfaW5mbyB7Cj4+ID4gICAgICAgdTMyIGRiX3N0YXR1czsKPj4gPiAgICAgICB1MzIgY29va2ll Owo+PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVy LmMKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKPj4gPiBpbmRl eCA0MDI0MWYzLi5hNjcwM2I0IDEwMDY0NAo+PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Y19sb2FkZXIuYwo+PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2d1Y19sb2FkZXIuYwo+PiA+IEBAIC0yMTUsMTggKzIxNSwyOSBAQCBzdGF0aWMgaW5saW5lIGJv b2wgZ3VjX3Vjb2RlX3Jlc3BvbnNlKHN0cnVjdAo+PiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPj4gPiAgICAgICAgICAgKCh2YWwgJiBHU19NSUFfQ09SRV9TVEFURSkgJiYgdWtfdmFsID09 Cj4+IEdTX1VLRVJORUxfTEFQSUNfRE9ORSkpOwo+PiA+ICAgfQo+PiA+Cj4+ID4gLS8qCj4+ID4g LSAqIFRyYW5zZmVyIHRoZSBmaXJtd2FyZSBpbWFnZSB0byBSQU0gZm9yIGV4ZWN1dGlvbiBieSB0 aGUKPj4gbWljcm9jb250cm9sbGVyLgo+PiA+ICsvKioKPj4gPiArICogRE9DOiBHdUMgRmlybXdh cmUgTGF5b3V0Cj4+ID4gICAgKgo+PiA+IC0gKiBHdUMgRmlybXdhcmUgbGF5b3V0Ogo+PiA+IC0g KiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgIC0tLS0KPj4gPiAtICogfCAgICAg ICAgICBDU1MgaGVhZGVyICAgICAgICAgICB8ICAxMjhCCj4+ID4gLSAqIHwgY29udGFpbnMgbWFq b3IvbWlub3IgdmVyc2lvbiAgfAo+PiA+IC0gKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSsgIC0tLS0KPj4gPiAtICogfCAgICAgICAgICAgICB1Q29kZSAgICAgICAgICAgICB8Cj4+ ID4gLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgLS0tLQo+PiA+IC0gKiB8 ICAgICAgICAgUlNBIHNpZ25hdHVyZSAgICAgICAgIHwgIDI1NkIKPj4gPiAtICogKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAtLS0tCj4+ID4gKyAqIFRoZSBHdUMgZmlybXdhcmUg bGF5b3V0IGxvb2tzIGxpa2UgdGhpczoKPj4gPiArICoKPj4gPiArICogICAgICstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+PiA+ICsgKiAgICAgfCAgICAgICAgZ3VjX2Nzc19oZWFk ZXIgICAgICAgICB8Cj4+ID4gKyAqICAgICB8IGNvbnRhaW5zIG1ham9yL21pbm9yIHZlcnNpb24g IHwKPj4gPiArICogICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+PiA+ICsg KiAgICAgfCAgICAgICAgICAgICB1Q29kZSAgICAgICAgICAgICB8Cj4+ID4gKyAqICAgICArLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4gPiArICogICAgIHwgICAgICAgICBSU0Eg c2lnbmF0dXJlICAgICAgICAgfAo+PiA+ICsgKiAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rCj4+ID4gKyAqICAgICB8ICAgICAgICAgIG1vZHVsdXMga2V5ICAgICAgICAgIHwK Pj4gPiArICogICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+PiA+ICsgKiAg ICAgfCAgICAgICAgICBleHBvbmVudCB2YWwgICAgICAgICB8Cj4+ID4gKyAqICAgICArLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4gPiArICoKPj4gPiArICogVGhlIGZpcm13YXJl IG1heSBvciBtYXkgbm90IGhhdmUgbW9kdWx1cyBrZXkgYW5kIGV4cG9uZW50IGRhdGEuCj4+IFRo ZSBoZWFkZXIsCj4+ID4gKyAqIHVDb2RlIGFuZCBSU0Egc2lnbmF0dXJlIGFyZSBtdXN0LWhhdmUg Y29tcG9uZW50cyB0aGF0IHdpbGwgYmUKPj4gdXNlZCBieSBkcml2ZXIuCj4+ID4gKyAqIFNpemUg b2YgZWFjaCBjb21wb25lbnRzIChpbiBkd29yZHMpIGNhbiBiZSBmb3VuZCBpbiBoZWFkZXIuIElu Cj4+IHRoZSBjYXNlIHRoYXQKPj4gPiArICogbW9kdWx1cyBhbmQgZXhwb25lbnQgYXJlIG5vdCBw cmVzZW50IGluIGZ3LCB0aGUgc2l6ZSB2YWx1ZSBzdGlsbAo+PiBhcHBlYXJzIGluCj4+ID4gKyAq IGhlYWRlci4KPj4KPj4gSSB0aGluayB0aGlzIHBpY3R1cmUgJiBjb21tZW50YXJ5IGJlbG9uZ3Mg anVzdCBhaGVhZCBvZiB0aGUgc3RydWN0dXJlCj4+IGRlZmluaXRpb24gaW4gaW50ZWxfZ3VjX2Z3 aWYuaCwgcmF0aGVyIHRoYW4gd2l0aCB0aGUgY29kZSBoZXJlLiBBbHNvLAo+Cj4gWWVzLCB0aGlz IGNhbiBiZSBtb3ZlZCB0byBpbnRlbF9ndWNfZndpZi5oIHJpZ2h0IGJlZm9yZSBjc3NfaGVhZGVy Cj4gc3RydWN0dXJlIGRlZmluaXRpb24uCj4KPj4gcGVyaGFwcyB3ZSBuZWRlIGEgYml0IG1vcmUg ZXhwbGFuYXRpb24gb2YgdGhlICcqc2l6ZScgZmllbGRzLCBzaW5jZSB0aGV5Cj4+IGhhdmUgYmVl biBkZWZpbmVkIGluIHN1Y2ggYSBjb3VudGVyLWludHVpdGl2ZSB3YXkgOiggIEkgc3VnZ2VzdDoK Pj4KPj4gICAgKiBBbGwgdGhlICdzaXplcycgaW4gdGhlIENTUyBoZWFkZXIgYXJlIGV4cHJlc3Nl ZCBhcyBudW1iZXJzIG9mCj4+ICAgICogImR3b3JkcyIsIGFuZCB0aGVyZWZvcmUgaGF2ZSB0byBi ZSBtdWx0aXBsaWVkIGJ5IHNpemVvZiAodTMyKSB0bwo+PiAgICAqIGdldCBhY3R1YWwgc2l6ZXMg KGluIHRoZSBub3JtYWwgc2Vuc2Ugb2YgYnl0ZSBjb3VudHMpLgo+PiAgICAqCj4KPiBJbiBjb21t ZW50cywgSSBjbGVhcmx5IG1lbnRpb24gdGhhdCBhbGwgc2l6ZSBvZiB0aGVzZSBndWMgY29tcG9u ZW50cyBhcmUKPiBpbiBkd29yZHMuIEluIG5leHQgdmVyc2lvbiwgSSBjYW4gYWRkIHN1cmZpeCBf ZHdvcmQgdG8gYXZvaWQgY29uZnVzZS4KClRoZSBuYW1lcyBhcmUgc3lzdGVtYXRpY2FsbHkgKGlm IG5vdCB5ZXQgYXV0b21hdGljYWxseSkgZGVyaXZlZCBmcm9tIHRoZSAKR3VDIGhlYWRlciB2ZXJz aW9uLCBzbyBiZXN0IG5vdCB0byBjaGFuZ2UgdGhlbS4gVGhlIGNvbW1lbnQgKmluIHRoZSAKaGVh ZGVyIGZpbGUqIHdpbGwgc3VmZmljZS4KCj4+ICAgICogVGhlICdzaXplJyBmaWVsZCBpcyB0aGUg dG90YWwgc2l6ZSBvZiB0aGUgZGF0YSBpbiB0aGUgcGljdHVyZQo+PiAgICAqIGFib3ZlLCBhbmQg c2hvdWxkIG1hdGNoIHRoZSBzaXplIG9mIHRoZSBmaWxlIGFzIHByb3ZpZGVkIGJ5IHRoZQo+PiAg ICAqIGxvYWRlcjsgdGhlIGZpbGUgaXMgaW52YWxpZCBpZiB0aGlzIHNpemUgZmllbGQgaXMgZ3Jl YXRlciB0aGFuCj4+ICAgICogdGhlIGFjdHVhbCBmaWxlc2l6ZS4KPgo+IFRoaXMgaXMgbm90IHJp Z2h0IGFzc3VtcHRpb24uIEFuZCwgdGhhdCB3aWxsIGNoYW5nZSBzb21lIGV4cGVjdGF0aW9uCj4g YmVsb3cgcmVsYXRlZCB0byBzaXplIGNoZWNraW5nLiBJIHNob3VsZCBoYXZlIG1ha2UgbXkgY29t bWVudHMgbW9yZQo+IGNsZWFyLiBCdXQKCk9LLCBJIHNlZSwgd2UncmUgZ29pbmcgdG8gYWxsb3cg YSB0cnVuY2F0ZWQgaW1hZ2UgZmlsZSwgYXMgbG9uZyBhcyBvbmx5IAp1bnVzZWQgc2VjdGlvbnMg YXJlIG1pc3NpbmcgLi4uCgo+ICJUaGUgZmlybXdhcmUgbWF5IG9yIG1heSBub3QgaGF2ZSBtb2R1 bHVzIGtleSBhbmQgZXhwb25lbnQgZGF0YSAuLi4gSW4KPiB0aGUgY2FzZSB0aGF0IG1vZHVsdXMg YW5kIGV4cG9uZW50IGFyZSBub3QgcHJlc2VudCBpbiBmdywgdGhlIHNpemUgdmFsdWUKPiBzdGls bCBhcHBlYXJzIGluIGhlYWRlci4iCj4KPiBXZSBoYXZlIGRpc2N1c3NlZCB0aGlzIHdpdGggZmly bXdhcmUgdGVhbS4gU2luY2UgdGhlICdzaXplJyAoYWN0dWFsbHkKPiB0aGUgaGVhZGVyKSBpcyB1 c2VkIHRvIGdlbmVyYXRlIFJTQSBrZXksIHdlIGNhbid0IGNoYW5nZSBpdCBhZnRlcgo+IHNpZ25p bmcuIFNvLCB3ZSBoYXZlIGluZm9ybWF0aW9uIG9mIG1vZHVsdXMgZXRjLiBidXQgZHJpdmVyIGRv ZXNuJ3QgbmVlZAo+IHRoZW0gdG8gbG9hZCBmaXJtd2FyZS4gTGlrZWx5IHRoZXkgYXJlIG5vdCBw YXJ0IG9mIHRoZSByZWxlYXNlIGJpbiBmaWxlLgo+IFNvIHRoZSAnc2l6ZScgbWF5IGJlIGxhcmdl ciB0aGFuIHRoZSBiaW4gZmlsZSBzaXplLiBDdXJyZW50bHksIGZ3IGNoZWNrCj4gaXMgYmFzZWQg b24gdGhlIGZvbGxvd2luZyBydWxlcyAobWF5YmUgSSBuZWVkIGFkZCB0aGVzZSB0byB0aGUgY29t bWVudAo+IHRvbyk6Cj4KPiAxLiBIZWFkZXIsIHVDb2RlIGFuZCBSU0EgYXJlIG11c3QtaGF2ZSBj b21wb25lbnRzLgo+IDIuIEFsbCBmaXJtd2FyZSBjb21wb25lbnRzLCBpZiB0aGV5IHByZXNlbnQs IGFyZSBpbiB0aGUgc2VxdWVuY2UKPiAgICAgaWxsdXN0cmF0ZWQgaW4gdGhlIGxheW91dCB0YWJs ZS4KPiAzLiBTaXplIGluZm8gb2YgZWFjaCBjb21wb25lbnQgY2FuIGJlIGZvdW5kIGluIGhlYWRl ciwgaW4gZHdvcmRzLgo+IDQuIE1vZHVsdXMgYW5kIGV4cG9uZW50IGtleSBhcmUgbm90IHJlcXVp cmVkIGJ5IGRyaXZlci4gVGhleSBtYXkgbm90Cj4gICAgIGFwcGVhciBpbiBmdyBidXQgdGhlaXIg c2l6ZSBpbmZvIGFyZSByZWNvcmRlZCBpbiBoZWFkZXIgYW55d2F5Lgo+Cj4+ICAgICogVGhlICdo ZWFkZXJfbGVuJyBmaWVsZCBjb250YWlucyB0aGUgdG90YWwgc2l6ZSBvZiB0aGUgbm9uLXVDb2Rl Cj4+ICAgICogc2VjdGlvbnMgb2YgdGhlIGZpbGUgKGkuZS4gdGhlIHN1bSBvZiB0aGUgc2l6ZXMg b2YgdGhlIENTUyBoZWFkZXIsCj4+ICAgICogdGhlIFJTQSBzaWduYXR1cmUsIHRoZSBtb2R1bHVz IGtleSBhbmQgdGhlIGV4cG9uZW50KS4gVGh1cywgdG8gZmluZAo+PiAgICAqIHRoZSBzaXplIG9m IHRoZSB1Q29kZSB3ZSBzdWJ0cmFjdCB0aGlzIHRvdGFsIGZyb20gJ3NpemUnLCBidXQgdG8KPj4g ICAgKiBmaW5kIHRoZSBzaXplIG9mIHRoZSBDU1MgaGVhZGVyICh3aGljaCBhbHNvIGRlZmluZXMg dGhlIHN0YXJ0IG9mCj4+ICAgICogdGhlIHVDb2RlKSwgd2Ugc3VidHJhY3QgdGhlIG90aGVyIHRo cmVlIHNpemVzIGZyb20gdGhpcyB0b3RhbC4gVGhlCj4+ICAgICogc2l6ZSBvZiB0aGUgQ1NTIGhl YWRlciB0aHVzIGNhbGN1bGF0ZWQgc2hvdWxkIG1hdGNoIHNpemVvZihzdHJ1Y3QKPj4gICAgKiBn dWNfY3NzX2hlYWRlcikgKG9yIGV4Y2VlZCBpdDsgYWxsb3dpbmcgaXQgdG8gYmUgbGFyZ2VyIHBl cm1pdHMKPj4gICAgKiBmdXR1cmUgZXhwYW5zaW9uIG9mIHRoZSBDU1MgaGVhZGVyIG9yIGluc2Vy dGlvbiBvZiBleHRyYSBzZWN0aW9ucwo+PiAgICAqIGhlcmUpLiBUaGUgZmlsZSBpcyBpbnZhbGlk IGlmIHRoaXMgY2FsY3VsYXRlZCBzaXplIGlzIGxlc3MgdGhhbgo+PiAgICAqIHNpemVvZihzdHJ1 Y3QgZ3VjX2Nzc19oZWFkZXIpLgo+PiAgICAqCj4+ICAgICogVGhlIHNpemUgb2YgdGhlIFJTQSBz aWduYXR1cmUgbXVzdCBub3QgZXhjZWVkIHRoYXQgZXhwZWN0ZWQgYnkgdGhlCj4+ICAgICogaGFy ZHdhcmUuIFRoZSBmaWxlIGlzIGludmFsaWQgaWYgdGhlIHZhbHVlIG9mIHRoaXMgZmllbGQgaXMg bW9yZQo+PiAgICAqIHRoYW4gdGhlIHNpemUgb2YgdGhlIHNpZ25hdHVyZSBhcmVhIGluIHRoZSBH dUMgcmVnaXN0ZXIgc3BhY2UsCj4+ICAgICogY3VycmVudGx5IDB4MTAwIGJ5dGVzLgo+PiAgICAq Cj4+ICAgICogRHVlIHRvIHRoZSByZXF1aXJlbWVudHMgb2YgdGhlIERNQSBlbmdpbmUsIHRoZSB0 b3RhbCBzaXplIG9mIHRoZQo+PiAgICAqIHNlY3Rpb25zIHRoYXQgYXJlIERNQSdkIGludG8gdGhl IEd1QydzIG1lbW9yeSAoQ1NTIGhlYWRlciBwbHVzCj4+ICAgICogdUNvZGUpIG11c3QgYmUgYSBt dWx0aXBsZSBvZiB0aGUgY2FjaGUgbGluZSBzaXplLiBUaGUgZmlsZSBpcwo+PiAgICAqIGludmFs aWQgaWYgdGhpcyByZXF1aXJlbWVudCBpcyBub3QgbWV0Lgo+Cj4gQWxsIHN1Z2dlc3Rpb25zIGFi b3ZlIGFyZSB2YWxpZCBhdCBzb21lIHBvaW50cy4gSG93ZXZlciwgYmUgbm90ZSB0aGF0LAo+IHRo ZSBmaXJtd2FyZSBzaXplIGNoZWNraW5nIEkgcHV0IGludG8gY29kZSBpcyBhY3R1YWxseSB0byBw cm90ZWN0IGRyaXZlcgo+IC0ganVzdCBtYWtlIHN1cmUgd2UgZG9uJ3QgaGF2ZSBhIGJ1ZyBjaGVj ayBkdWUgdG8gbWVtb3J5IGFjY2Vzcwo+IHZpb2xhdGlvbi4gTm8gbWF0dGVyIGhvdyBtdWNoIHBy b3RlY3Rpb24geW91IHB1dCBpbnRvIGRyaXZlciwgeW91IHN0aWxsCj4gY2FuJ3QgcmVqZWN0IHRo ZSBjYXNlIGJ5IGRyaXZlciBpZiBzb21lb25lIG1vZGlmaWVzIG9uZSBieXRlIG9mIHVDb2RlLgo+ IFNvLCBhcyBsb25nIGFzIHdlIGhhdmUgdGhlIGJpdHMgb2YgaGVhZGVyLCB1Q29kZSBhbmQgUlNB LCB3ZSB3aWxsIGxvYWQKPiBpdC4gSFcgd2lsbCBmYWlsIGl0IGFueXdheSBpZiBhbnl0aGluZyBn b2VzIHdyb25nLgoKQWxsIHRoZSBjaGVja3MgSSBzdWdnZXN0ZWQgd2VyZSBvZiB0aGlzIHR5cGUu IEZvciBleGFtcGxlLCB0aGUgY2hhbmdlIApmcm9tIHVzaW5nIFVPU19SU0FfU0lHX1NJWkUgdG8g dGhlIGNhbGN1bGF0ZWQgUlNBLXNpZ25hdHVyZS1zaXplIHdvdWxkIApoYXZlIGFsbG93ZWQgYSBt YWxmb3JtZWQgZmlsZSB0byB0cmlnZ2VyIHdyaXRpbmcgYmV5b25kIHRoZSAyNTYgYnl0ZXMgb2Yg CnNpZ25hdHVyZS1yZWdpc3RlciBzcGFjZSwgd2l0aCB1bnByZWRpY3RhYmxlIGVmZmVjdHMuCgpF dmVuIGlmIHRoZSB0cmFpbGluZyBzZWN0aW9ucyB0aGVtc2VsdmVzIGhhdmUgYmVlbiByZW1vdmVk IGZyb20gdGhlIAppbWFnZSBmaWxlLCB0aGUgYXNzZXJ0aW9ucyBhYm91dCB0aGUgbnVtZXJpY2Fs IHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGUgCicqc2l6ZScgdmFsdWVzIGluIHRoZSBDU1MgaGVh ZGVyIHJlbWFpbiB2YWxpZCBhbmQgc2hvdWxkIGJlIGNoZWNrZWQuCgo+PiBUaGUgcmVzdCBvZiB0 aGlzIGNvbW1lbnQgY2FuIHN0YXkgd2l0aCB0aGUgY29kZSAuLi4KPj4KPj4gPiAgICAqCj4+ID4g ICAgKiBBcmNoaXRlY3R1cmFsbHksIHRoZSBETUEgZW5naW5lIGlzIGJpZGlyZWN0aW9uYWwsIGFu ZCBjYW4KPj4gcG90ZW50aWFsbHkgZXZlbgo+PiA+ICAgICogdHJhbnNmZXIgYmV0d2VlbiBHVFQg bG9jYXRpb25zLiBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgbGVmdCBvdXQKPj4gb2YgdGhlIEFQSQo+ PiA+IEBAIC0yMzYsMzAgKzI0Nyw0MiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZ3VjX3Vjb2RlX3Jl c3BvbnNlKHN0cnVjdAo+PiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gPiAgICAqIERN QSBlbmdpbmUgaW4gb25lIG9wZXJhdGlvbiwgd2hlcmVhcyB0aGUgUlNBIHNpZ25hdHVyZSBpcwo+ PiBsb2FkZWQgdmlhIE1NSU8uCj4+ID4gICAgKi8KPj4gPgo+PiA+IC0jZGVmaW5lIFVPU19DU1Nf SEVBREVSX09GRlNFVCAgICAgICAgMAo+PiA+IC0jZGVmaW5lIFVPU19WRVJfTUlOT1JfT0ZGU0VU ICAgICAgICAweDQ0Cj4+ID4gLSNkZWZpbmUgVU9TX1ZFUl9NQUpPUl9PRkZTRVQgICAgICAgIDB4 NDYKPj4gPiAtI2RlZmluZSBVT1NfQ1NTX0hFQURFUl9TSVpFICAgICAgICAweDgwCj4+ID4gLSNk ZWZpbmUgVU9TX1JTQV9TSUdfU0laRSAgICAgICAgMHgxMDAKPj4gPiAtCj4+ID4gKy8qCj4+ID4g KyAqIFRyYW5zZmVyIHRoZSBmaXJtd2FyZSBpbWFnZSB0byBSQU0gZm9yIGV4ZWN1dGlvbiBieSB0 aGUKPj4gbWljcm9jb250cm9sbGVyLgo+PiA+ICsgKi8KPj4gPiAgIHN0YXRpYyBpbnQgZ3VjX3Vj b2RlX3hmZXJfZG1hKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gPiAgIHsK Pj4gPiAgICAgICBzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5n dWNfZnc7Cj4+ID4gKyAgICBzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIgKmhlYWRlciA9ICZndWNfZnct Pmd1Y19md19oZWFkZXI7Cj4+ID4gICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmZ3 X29iaiA9IGd1Y19mdy0+Z3VjX2Z3X29iajsKPj4gPiAgICAgICB1bnNpZ25lZCBsb25nIG9mZnNl dDsKPj4gPiAgICAgICBzdHJ1Y3Qgc2dfdGFibGUgKnNnID0gZndfb2JqLT5wYWdlczsKPj4gPiAt ICAgIHUzMiBzdGF0dXMsIHVjb2RlX3NpemUsIHJzYVtVT1NfUlNBX1NJR19TSVpFIC8gc2l6ZW9m KHUzMildOwo+PiA+ICsgICAgdTMyIHN0YXR1cywgaGVhZGVyX3NpemUsIHJzYV9zaXplLCB1Y29k ZV9zaXplLCAqcnNhOwo+PiA+ICAgICAgIGludCBpLCByZXQgPSAwOwo+Pgo+PiBJIGRvbid0IGxp a2UgZG9pbmcgdGhlIGNvbXBsaWNhdGVkIHNpemUtYmFzZWQgY2FsY3VsYXRpb25zIGluIHRoZSBE TUEKPj4gcm91dGluZTsgSSdkIHJhdGhlciB0aGUgaW1wb3J0YW50IHZhbHVlcyAoUlNBIHN0YXJ0 L3NpemUsIENTUyt1Q29kZQo+PiBzdGFydC9zaXplKSB3ZXJlIHByZWNhbGN1bGF0ZWQgZHVyaW5n IGxvYWRpbmcgYW5kIHNhdmVkIGluIHRoZSBzdHJ1Y3QKPj4gaW50ZWxfZ3VjX2Z3IG9yIGEgbWVt YmVyIHRoZXJlb2Ygc28gdGhhdCB0aGlzIGNvZGUgYWxyZWFkeSBoYXMgdGhlIGV4YWN0Cj4+IG51 bWJlcnMgaXQgbmVlZHMgd2l0aG91dCBhbnkgZnVydGhlciBjb21wdXRhdGlvbi4KPgo+IFRoaXMg aXMgYSBnb29kIHBvaW50Lgo+Cj4+ID4gLSAgICAvKiB1Q29kZSBzaXplLCBhbHNvIGlzIHdoZXJl IFJTQSBzaWduYXR1cmUgc3RhcnRzICovCj4+ID4gLSAgICBvZmZzZXQgPSB1Y29kZV9zaXplID0g Z3VjX2Z3LT5ndWNfZndfc2l6ZSAtIFVPU19SU0FfU0lHX1NJWkU7Cj4+ID4gLSAgICBJOTE1X1dS SVRFKERNQV9DT1BZX1NJWkUsIHVjb2RlX3NpemUpOwo+PiA+ICsgICAgLyogVGhlIGhlYWRlciBw bHVzIHVDb2RlIHdpbGwgYmUgY29waWVkIHRvIFdPUENNIHZpYSBETUEsCj4+IGV4Y2x1ZGluZyBh bnkKPj4gPiArICAgICAqIG90aGVyIGNvbXBvbmVudHMgKi8KPj4gPiArICAgIGhlYWRlcl9zaXpl ID0gKGhlYWRlci0+aGVhZGVyX2xlbiAtIGhlYWRlci0+a2V5X3NpemUgLQo+PiA+ICsgICAgICAg IGhlYWRlci0+bW9kdWx1c19zaXplIC0gaGVhZGVyLT5leHBvbmVudF9zaXplKSAqIHNpemVvZih1 MzIpOwo+PiA+ICsgICAgdWNvZGVfc2l6ZSA9IChoZWFkZXItPnNpemUgLSBoZWFkZXItPmhlYWRl cl9sZW4pICogc2l6ZW9mKHUzMik7Cj4+ID4gKwo+PiA+ICsgICAgSTkxNV9XUklURShETUFfQ09Q WV9TSVpFLCBoZWFkZXJfc2l6ZSArIHVjb2RlX3NpemUpOwo+PiA+ICsKPj4gPiArICAgIC8qIHdo ZXJlIFJTQSBzaWduYXR1cmUgc3RhcnRzICovCj4+ID4gKyAgICBvZmZzZXQgPSBoZWFkZXJfc2l6 ZSArIHVjb2RlX3NpemU7Cj4+ID4gKwo+PiA+ICsgICAgcnNhX3NpemUgPSBoZWFkZXItPmtleV9z aXplICogc2l6ZW9mKHUzMik7CihoZWFkZXItPmtleV9zaXplIG1pZ2h0IGJlLCBzYXksIDB4ODAp ID0+IHJzYV9zaXplIGlzIDB4MjAwCj4+ID4gKyAgICByc2EgPSBrbWFsbG9jKHJzYV9zaXplLCBH RlBfS0VSTkVMKTsKPj4gPiArICAgIGlmICghcnNhKQo+PiA+ICsgICAgICAgIHJldHVybiAtRU5P TUVNOwo+PiA+Cj4+ID4gICAgICAgLyogQ29weSBSU0Egc2lnbmF0dXJlIGZyb20gdGhlIGZ3IGlt YWdlIHRvIEhXIGZvciB2ZXJpZmljYXRpb24gKi8KPj4gPiAtICAgIHNnX3Bjb3B5X3RvX2J1ZmZl cihzZy0+c2dsLCBzZy0+bmVudHMsIHJzYSwgVU9TX1JTQV9TSUdfU0laRSwKPj4gb2Zmc2V0KTsK Pj4gPiAtICAgIGZvciAoaSA9IDA7IGkgPCBVT1NfUlNBX1NJR19TSVpFIC8gc2l6ZW9mKHUzMik7 IGkrKykKPj4gPiArICAgIHNnX3Bjb3B5X3RvX2J1ZmZlcihzZy0+c2dsLCBzZy0+bmVudHMsIHJz YSwgcnNhX3NpemUsIG9mZnNldCk7Cj4+ID4gKyAgICBmb3IgKGkgPSAwOyBpIDwgcnNhX3NpemUg LyBzaXplb2YodTMyKTsgaSsrKQo+PiA+ICAgICAgICAgICBJOTE1X1dSSVRFKFVPU19SU0FfU0NS QVRDSF8wICsgaSAqIHNpemVvZih1MzIpLCByc2FbaV0pOwppKnNpemVvZih1MzIpIGhhZCBiZXR0 ZXIgbm90IGV4Y2VlZCAweDEwMCEgT09QUyEKPj4gPgo+PiA+ICsgICAga2ZyZWUocnNhKTsKPj4g PiArCj4+ID4gICAgICAgLyogU2V0IHRoZSBzb3VyY2UgYWRkcmVzcyBmb3IgdGhlIG5ldyBibG9i ICovCj4+ID4gICAgICAgb2Zmc2V0ID0gaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KGZ3X29iaik7 Cj4+ID4gICAgICAgSTkxNV9XUklURShETUFfQUREUl8wX0xPVywgbG93ZXJfMzJfYml0cyhvZmZz ZXQpKTsKPj4gPiBAQCAtNDY1LDEwICs0ODgsOCBAQCBzdGF0aWMgdm9pZCBndWNfZndfZmV0Y2go c3RydWN0IGRybV9kZXZpY2UKPj4gKmRldiwgc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3KQo+ PiA+ICAgewo+PiA+ICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4+ID4g ICAgICAgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdzsKPj4gPiAtICAgIGNvbnN0IHU4ICpjc3Nf aGVhZGVyOwo+PiA+IC0gICAgY29uc3Qgc2l6ZV90IG1pbnNpemUgPSBVT1NfQ1NTX0hFQURFUl9T SVpFICsgVU9TX1JTQV9TSUdfU0laRTsKPj4gPiAtICAgIGNvbnN0IHNpemVfdCBtYXhzaXplID0g R1VDX1dPUENNX1NJWkVfVkFMVUUgKyBVT1NfUlNBX1NJR19TSVpFCj4+ID4gLSAgICAgICAgICAg IC0gMHg4MDAwOyAvKiAzMmsgcmVzZXJ2ZWQgKDhLIHN0YWNrICsgMjRrIGNvbnRleHQpICovCj4+ ID4gKyAgICBzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIgKmNzc19oZWFkZXIgPSAmZ3VjX2Z3LT5ndWNf ZndfaGVhZGVyOwo+PiA+ICsgICAgc2l6ZV90IHNpemU7Cj4+ID4gICAgICAgaW50IGVycjsKPj4g Pgo+PiA+ICAgICAgIERSTV9ERUJVR19EUklWRVIoImJlZm9yZSByZXF1ZXN0aW5nIGZpcm13YXJl OiBHdUMgZncgZmV0Y2gKPj4gc3RhdHVzICVzXG4iLAo+PiA+IEBAIC00ODIsMTIgKzUwMywzMSBA QCBzdGF0aWMgdm9pZCBndWNfZndfZmV0Y2goc3RydWN0IGRybV9kZXZpY2UKPj4gKmRldiwgc3Ry dWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3KQo+PiA+Cj4+ID4gICAgICAgRFJNX0RFQlVHX0RSSVZF UigiZmV0Y2ggR3VDIGZ3IGZyb20gJXMgc3VjY2VlZGVkLCBmdyAlcFxuIiwKPj4gPiAgICAgICAg ICAgZ3VjX2Z3LT5ndWNfZndfcGF0aCwgZncpOwo+PiA+IC0gICAgRFJNX0RFQlVHX0RSSVZFUigi ZmlybXdhcmUgZmlsZSBzaXplICV6dSAobWluaW11bSAlenUsIG1heGltdW0KPj4gJXp1KVxuIiwK Pj4gPiAtICAgICAgICBmdy0+c2l6ZSwgbWluc2l6ZSwgbWF4c2l6ZSk7Cj4+ID4KPj4gPiAtICAg IC8qIENoZWNrIHRoZSBzaXplIG9mIHRoZSBibG9iIGJlZm9lIGV4YW1pbmluZyBidWZmZXIgY29u dGVudHMgKi8KPj4gPiAtICAgIGlmIChmdy0+c2l6ZSA8IG1pbnNpemUgfHwgZnctPnNpemUgPiBt YXhzaXplKQo+PiA+ICsgICAgLyogQ2hlY2sgdGhlIHNpemUgb2YgdGhlIGJsb2IgYmVmb3JlIGV4 YW1pbmluZyBidWZmZXIgY29udGVudHMgKi8KPj4gPiArICAgIGlmIChmdy0+c2l6ZSA8IHNpemVv ZihzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIpKSB7Cj4+ID4gKyAgICAgICAgRFJNX0VSUk9SKCJGaXJt d2FyZSBoZWFkZXIgaXMgbWlzc2luZ1xuIik7Cj4+ID4gKyAgICAgICAgZ290byBmYWlsOwo+PiA+ ICsgICAgfQo+PiA+ICsKPj4gPiArICAgIG1lbWNweShjc3NfaGVhZGVyLCBmdy0+ZGF0YSwgc2l6 ZW9mKHN0cnVjdCBndWNfY3NzX2hlYWRlcikpOwo+PiA+ICsKPj4gPiArICAgIC8qIEF0IGxlYXN0 LCBpdCBzaG91bGQgaGF2ZSBoZWFkZXIsIHVDb2RlIGFuZCBSU0EuIFNpemUgb2YgYWxsCj4+IHRo cmVlLiAqLwo+PiA+ICsgICAgc2l6ZSA9IChjc3NfaGVhZGVyLT5zaXplIC0gY3NzX2hlYWRlci0+ bW9kdWx1c19zaXplIC0KPj4gPiArICAgICAgICAgICAgY3NzX2hlYWRlci0+ZXhwb25lbnRfc2l6 ZSkgKiBzaXplb2YodTMyKTsKPj4gPiArICAgIGlmIChmdy0+c2l6ZSA8IHNpemUpIHsKPj4gPiAr ICAgICAgICBEUk1fRVJST1IoIk1pc3NpbmcgZmlybXdhcmUgY29tcG9uZW50c1xuIik7Cj4+ID4g ICAgICAgICAgIGdvdG8gZmFpbDsKPj4gPiArICAgIH0KPj4gPiArCj4+ID4gKyAgICAvKiBIZWFk ZXIgYW5kIHVDb2RlIHdpbGwgYmUgbG9hZGVkIHRvIFdPUENNLiBTaXplIG9mIHRoZSB0d28uICov Cj4+ID4gKyAgICBzaXplIC09IGNzc19oZWFkZXItPmtleV9zaXplICogc2l6ZW9mKHUzMik7Cj4+ ID4gKwo+PiA+ICsgICAgLyogVG9wIDMyayBvZiBXT1BDTSBpcyByZXNlcnZlZCAoOEsgc3RhY2sg KyAyNGsgUkM2IGNvbnRleHQpLiAqLwo+PiA+ICsgICAgaWYgKHNpemUgPiBHVUNfV09QQ01fU0la RV9WQUxVRSAtIDB4ODAwMCkgewo+PiA+ICsgICAgICAgIERSTV9FUlJPUigiRmlybXdhcmUgaXMg dG9vIGxhcmdlIHRvIGZpdCBpbiBXT1BDTVxuIik7Cj4+ID4gKyAgICAgICAgZ290byBmYWlsOwo+ PiA+ICsgICAgfQo+PiA+Cj4+ID4gICAgICAgLyoKPj4gPiAgICAgICAgKiBUaGUgR3VDIGZpcm13 YXJlIGltYWdlIGhhcyB0aGUgdmVyc2lvbiBudW1iZXIgZW1iZWRkZWQgYXQgYQo+PiB3ZWxsLWtu b3duCj4+ID4gQEAgLTQ5NSw5ICs1MzUsOCBAQCBzdGF0aWMgdm9pZCBndWNfZndfZmV0Y2goc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKPj4gc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3KQo+PiA+ ICAgICAgICAqIFRXTyBieXRlcyBlYWNoIChpLmUuIHUxNiksIGFsdGhvdWdoIGFsbCBwb2ludGVy cyBhbmQKPj4gb2Zmc2V0cyBhcmUgZGVmaW5lZAo+PiA+ICAgICAgICAqIGluIHRlcm1zIG9mIGJ5 dGVzICh1OCkuCj4+ID4gICAgICAgICovCj4+ID4gLSAgICBjc3NfaGVhZGVyID0gZnctPmRhdGEg KyBVT1NfQ1NTX0hFQURFUl9PRkZTRVQ7Cj4+ID4gLSAgICBndWNfZnctPmd1Y19md19tYWpvcl9m b3VuZCA9ICoodTE2ICopKGNzc19oZWFkZXIgKwo+PiBVT1NfVkVSX01BSk9SX09GRlNFVCk7Cj4+ ID4gLSAgICBndWNfZnctPmd1Y19md19taW5vcl9mb3VuZCA9ICoodTE2ICopKGNzc19oZWFkZXIg Kwo+PiBVT1NfVkVSX01JTk9SX09GRlNFVCk7Cj4+ID4gKyAgICBndWNfZnctPmd1Y19md19tYWpv cl9mb3VuZCA9IGNzc19oZWFkZXItPmd1Y19zd192ZXJzaW9uID4+IDE2Owo+PiA+ICsgICAgZ3Vj X2Z3LT5ndWNfZndfbWlub3JfZm91bmQgPSBjc3NfaGVhZGVyLT5ndWNfc3dfdmVyc2lvbiAmIDB4 RkZGRjsKPj4gPgo+PiA+ICAgICAgIGlmIChndWNfZnctPmd1Y19md19tYWpvcl9mb3VuZCAhPSBn dWNfZnctPmd1Y19md19tYWpvcl93YW50ZWQgfHwKPj4gPiAgICAgICAgICAgZ3VjX2Z3LT5ndWNf ZndfbWlub3JfZm91bmQgPCBndWNfZnctPmd1Y19md19taW5vcl93YW50ZWQpIHsKPj4gPgo+Pgo+ PiBXZSBuZWVkIHRvIHZhbGlkYXRlIGVhY2ggb2YgdGhlIHNpemVzIHJlYWQgZnJvbSB0aGUgYmlu YXJ5IGJsb2IgYmVmb3JlCj4+IHVzaW5nIHRoZW0gaW4gY2FsY3VsYXRpb25zLCBhbmQgd2UgdGhl biBhbHNvIG5lZWQgdG8gdmFsaWRhdGUgdGhlCj4+IHJlc3VsdHMgb2YgdGhlIGNhbGN1bGF0aW9u cywgdG8gcHJldmVudCBhbnlvbmUgc3Bvb2ZpbmcgdGhlIGxvYWRlciBpbnRvCj4+IHdyaXRpbmcg d2hlcmUgaXQgc2hvdWxkbid0Lgo+Pgo+PiBJbiBwYXJ0aWN1bGFyLCB3ZSBuZWVkIHRvIGNoZWNr Ogo+Pgo+PiAgICAgZnctPnNpemUgICAgICAgICAgICA+PSBzaXplb2Yoc3RydWN0IGd1Y19jc3Nf aGVhZGVyKQo+PiAgICAgY3NzX2hlYWRlci0+c2l6ZSAoKjQpICAgICAgICA8PSBmdy0+c2l6ZQo+ PiAgICAgY3NzX2hlYWRlci0+aGVhZGVyX2xlbiAgICAgICAgPD0gY3NzX2hlYWRlci0+c2l6ZQo+ PiAgICAgPT4gKHVDb2RlX3NpemUgPSBjc3NfaGVhZGVyLT5zaXplIC0gY3NzX2hlYWRlcl9sZW4p ID49IDAKPj4gICAgIGNzc19oZWFkZXItPmtleV9zaXplICgqNCkgICAgPD0gSFdfU0lHX1NJWkUg KDB4MTAwKQo+PiAgICAgY3NzX2hlYWRlci0+a2V5X3NpemUgICAgICAgIDw9IGNzc19oZWFkZXIt PmhlYWRlcl9sZW4KPj4gICAgIGNzc19oZWFkZXItPm1vZHVsdXNfc2l6ZSAgICA8PSBjc3NfaGVh ZGVyLT5oZWFkZXJfbGVuCj4+ICAgICBjc3NfaGVhZGVyLT5leHBvbmVudF9zaXplICAgIDw9IGNz c19oZWFkZXItPmhlYWRlcl9sZW4KPj4gICAgIGNzc19oZWFkZXItPmhlYWRlcl9sZW4gICAgICAg ID49IGNzc19oZWFkZXItPmtleV9zaXplICsKPj4gICAgICAgICAgICAgICAgICAgICAgICBjc3Nf aGVhZGVyLT5tb2R1bHVzX3NpemUgKwo+PiAgICAgICAgICAgICAgICAgICAgICAgIGNzc19oZWFk ZXItPmV4cG9uZW50X3NpemU7Cj4+ICAgICA9PiAoY3NzX2hlYWRlcl9zaXplID0gY3NzX2hlYWRl ci0+aGVhZGVyX2xlbgo+PiAgICAgICAgICAgICAgICAgLSBjc3NfaGVhZGVyLT5rZXlfc2l6ZQo+ PiAgICAgICAgICAgICAgICAgLSBjc3NfaGVhZGVyLT5tb2R1bHVzX3NpemUKPj4gICAgICAgICAg ICAgICAgIC0gY3NzX2hlYWRlci0+ZXhwb25lbnRfc2l6ZSkgPj0gMAo+PiAgICAgY3NzX2hlYWRl cl9zaXplICsgdUNvZGVfc2l6ZSAgICA9PSAwIG1vZCBjYWNoZWxpbmVzaXplCj4+Cj4+IChTaW5j ZSBhbGwgdGhlc2Ugc2l6ZXMgYXJlIHVuc2lnbmVkLCB3ZSBjYW4ndCAoYW5kIGRvbid0IG5lZWQg dG8pIGNoZWNrCj4+IGZvciBuZWdhdGl2ZSByZXN1bHRzIGZyb20gdGhlIHN1YnRyYWN0aW9ucywg YnV0IHdlIGNhbiBjaGVjayB0aGF0IGVhY2gKPj4gdmFsdWUgdGhhdCdzIGRlZmluZWQgYXMgaW5j bHVkaW5nIHRoZSBzdW0gb2Ygb3RoZXIgdmFsdWVzIGlzIGFjdHVhbGx5Cj4+IGxhcmdlIGVub3Vn aCBzbyB0aGF0IHRoZSBzdWJ0cmFjdGlvbnMgZ2l2ZSBtZWFuaW5nZnVsIHJlc3VsdHMpLgo+Pgo+ PiBTb21lIG9mIHRoZXNlIGNoZWNrcyBhcmUgYWxyZWFkeSB0aGVyZSwgYnV0IEkgdGhpbmsgd2Ug c2hvdWxkIGNvbXBsZXRlCj4+IGFsbCBvZiB0aGVtIHRvIGNhdGNoIGFueSBvdGhlciBpbnZhbGlk IGNvbWJpbmF0aW9ucyBvZiB2YWx1ZXMuIEFuZCB0aGVuCj4+IHNhdmUgdGhlIGNvbXB1dGVkIHN0 YXJ0L3NpemUgdmFsdWVzIHNvIHRoZSBETUEgY29kZSBjYW4ganVzdCByZXRyaWV2ZQo+PiB0aGUg cHJlY2FsY3VsYXRlZCB2YWx1ZXMuCj4KPiBJIG9ubHkgYWdyZWUgd2l0aCBjaGVjayBiZXR3ZWVu IGhlYWRlciBzaXplIGFuZCBmdyBzaXplLiBUaGlzIGFsbG93cwo+IGRyaXZlciBrZWVwcyBnb2lu ZyB3aXRob3V0IGJ1ZyBjaGVjay4gQWxsIG90aGVycyBiZXR3ZWVuIG1lbWJlcnMgd2l0aGluCj4g Y3NzX2hlYWRlciBhcmUgbm90IG5lZWRlZC4gVGhlIHJlYXNvbiBpcyBzaW1wbGUuIElmIHlvdSB0 cnVzdCBjb250ZW50IG9mCj4gY3NzX2hlYWRlciwgdGhlbiB5b3UgZG9uJ3QgbmVlZCB0byB2YWxp ZGF0ZSB0aGVtLiBJZiB5b3UgZG9uJ3QgdHJ1c3QgaXQsCj4gbm8gbmVlZCB0byBjaGVjayBpdCBh bnl3YXkuIEFnYWluLCBhcyBsb25nIGFzIHdlIGhhdmUgZW5vdWdoIGJpdHMgdG8KPiBsb2FkIHRv IEhXLCB3ZSB3aWxsIGxldCBpdCBnby4KPgo+IFRoYW5rcywKPiBBbGV4CgpXZSBjYW4ndCB0cnVz dCB0aGUgQ1NTIGhlYWRlciAqdW5sZXNzKiB3ZSB2YWxpZGF0ZSBpdCwgaW4gdGhlIHNlbnNlIG9m IAplbnN1cmluZyB0aGF0IGJhZCB2YWx1ZXMgaW4gaXQgd29uJ3QgY2F1c2UgdGhlIGRyaXZlciB0 byBkbyBhbnl0aGluZyBpdCAKc2hvdWxkbid0IChlLmcuIG91dCBvZiByYW5nZSBhY2Nlc3Nlcyku IEZvciBleGFtcGxlLCB3aGF0IGhhcHBlbnMgaWYgSSAKc2V0IGhlYWRlcl9sZW4gdG8gMHgxMDAg YW5kIG1vZHVsdXNfc2l6ZSB0byAweGZmZmZmZTAwPwoKT25seSBpZiBpdCBwYXNzZXMgYWxsIG91 ciBjaGVja3Mgc2hvdWxkIHdlIHB1dCBpdCBpbnRvIEd1QyBtZW1vcnk7IGFuZCAKdGhlbiB0aGUg R3VDIGdldHMgdGhlIGZpbmFsIHdvcmQgb24gd2hldGhlciBpdCdzIGdvb2Qgb3Igbm90LgoKLkRh dmUuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=