From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yu Dai Subject: Re: [PATCH v2 2/6] drm/i915/guc: Add GuC css header parser Date: Thu, 24 Sep 2015 13:23:07 -0700 Message-ID: <56045BAB.60207@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> <5604494E.4040609@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 CFF186E261 for ; Thu, 24 Sep 2015 13:24:37 -0700 (PDT) In-Reply-To: <5604494E.4040609@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Dave Gordon , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org CgpPbiAwOS8yNC8yMDE1IDEyOjA0IFBNLCBEYXZlIEdvcmRvbiB3cm90ZToKPiBPbiAyNC8wOS8x NSAxOTozNCwgWXUgRGFpIHdyb3RlOgo+ID4KPiA+Cj4gPiBPbiAwOS8yNC8yMDE1IDA3OjIzIEFN LCBEYXZlIEdvcmRvbiB3cm90ZToKPiA+PiBPbiAyMi8wOS8xNSAyMTo0OCwgeXUuZGFpQGludGVs LmNvbSB3cm90ZToKPiA+PiA+IEZyb206IEFsZXggRGFpIDx5dS5kYWlAaW50ZWwuY29tPgo+ID4+ ID4KPiA+PiA+IEJ5IHVzaW5nIGluZm9ybWF0aW9uIGZyb20gR3VDIGNzcyBoZWFkZXIsIHdlIGNh biBlbGltaW5hdGUgc29tZQo+ID4+ID4gaGFyZCBjb2RlIHcuci50IHNpemUgb2Ygc29tZSBjb21w b25lbnRzIG9mIGZpcm13YXJlLgo+ID4+ID4KPiA+PiA+IHYyOiBBZGQgaW5kZW50IGludG8gRE9D IHRvIG1ha2UgZml4ZWQtd2lkdGggZm9ybWF0IHJhdGhlciB0aGFuCj4gPj4gPiBjaGFuZ2UgdGhl IHRtcGwuCj4gPj4gPgo+ID4+ID4gdjE6IDEpIGd1Y19jc3NfaGVhZGVyIGlzIGRlZmluZWQgYXMg X19wYWNrZWQgbm93Cj4gPj4gPiAgICAgIDIpIEFkZCBhbmQgY29ycmVjdCBHdUMgcmVsYXRlZCB0 b3BpY3MgaW4ga2VybmVsL0RvYwo+ID4+ID4KPiA+PiA+IFNpZ25lZC1vZmYtYnk6IEFsZXggRGFp IDx5dS5kYWlAaW50ZWwuY29tPgo+ID4+ID4gLS0tCj4gPj4gPiAgIERvY3VtZW50YXRpb24vRG9j Qm9vay9kcm0udG1wbCAgICAgICAgICB8ICAgOSArKy0KPiA+PiA+ICAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZ3VjLmggICAgICAgIHwgICAyICstCj4gPj4gPiAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2d1Y19md2lmLmggICB8ICAzNiArKysrKysrKysrKwo+ID4+ID4gICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMgfCAxMDcKPiA+PiArKysrKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tLQo+ID4+ID4gICA0IGZpbGVzIGNoYW5nZWQsIDExNyBpbnNl cnRpb25zKCspLCAzNyBkZWxldGlvbnMoLSkKPiA+PiA+Cj4gPj4gPiBkaWZmIC0tZ2l0IGEvRG9j dW1lbnRhdGlvbi9Eb2NCb29rL2RybS50bXBsCj4gPj4gYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2sv ZHJtLnRtcGwKPiA+PiA+IGluZGV4IDY2YmM2NDYuLjExNjMzMmYgMTAwNjQ0Cj4gPj4gPiAtLS0g YS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZHJtLnRtcGwKPiA+PiA+ICsrKyBiL0RvY3VtZW50YXRp b24vRG9jQm9vay9kcm0udG1wbAo+ID4+ID4gQEAgLTQxNTUsMTQgKzQxNTUsMTkgQEAgaW50IG51 bV9pb2N0bHM7PC9zeW5vcHNpcz4KPiA+PiA+ICAgICAgICAgPHRpdGxlPkd1Qy1iYXNlZCBDb21t YW5kIFN1Ym1pc3Npb248L3RpdGxlPgo+ID4+ID4gICAgICAgICA8c2VjdDI+Li4vbGludXgtaW1h Z2UtNC4zLjAtcmMyLWRzZy0xMTAyMi1nOTc2NWNhZi1kc2ctaW50ZWwtbmlnaHRseV80LjMuMC1y YzItZHNnLTExMDIyLWc5NzY1Y2FmLWRzZy1pbnRlbC1uaWdodGx5LTdfYW1kNjQuZGViCj4gPj4g PiAgICAgICAgICAgPHRpdGxlPkd1QzwvdGl0bGU+Cj4gPj4gPiAtIVBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMgR3VDLXNwZWNpZmljIGZpcm13YXJlIGxvYWRlcgo+ID4+ ID4gKyFQZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jIEd1Qwo+ID4+ID4g ICAhSWRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYwo+ID4+ID4gICAgICAg ICA8L3NlY3QyPgo+ID4+ID4gICAgICAgICA8c2VjdDI+Cj4gPj4gPiAgICAgICAgICAgPHRpdGxl Pkd1QyBDbGllbnQ8L3RpdGxlPgo+ID4+ID4gLSFQZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n dWNfc3VibWlzc2lvbi5jIEd1Qy1iYXNlZCBjb21tYW5kCj4gPj4gc3VibWlzc2lzb24KPiA+PiA+ ICshUGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyBHdUMgQ2xpZW50 Cj4gPj4gPiAgICFJZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCj4g Pj4gPiAgICAgICAgIDwvc2VjdDI+Cj4gPj4gPiArICAgICAgPHNlY3QyPgo+ID4+ID4gKyAgICAg ICAgPHRpdGxlPkd1QyBGaXJtd2FyZSBMYXlvdXQ8L3RpdGxlPgo+ID4+ID4gKyFQZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jIEd1QyBGaXJtd2FyZSBMYXlvdXQKPiA+PiA+ ICshSWRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYwo+ID4+ID4gKyAgICAg IDwvc2VjdDI+Cj4gPj4gPiAgICAgICA8L3NlY3QxPgo+ID4+ID4KPiA+PiA+ICAgICAgIDxzZWN0 MT4KPiA+PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaAo+ ID4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgKPiA+PiA+IGluZGV4IDRlYzJk MjcuLmUxMzg5ZmMgMTAwNjQ0Cj4gPj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ndWMuaAo+ID4+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgKPiA+ PiA+IEBAIC03MSw2ICs3MSw3IEBAIHN0cnVjdCBpbnRlbF9ndWNfZncgewo+ID4+ID4gICAgICAg c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKiAgICBndWNfZndfb2JqOwo+ID4+ID4gICAgICAg ZW51bSBpbnRlbF9ndWNfZndfc3RhdHVzICAgIGd1Y19md19mZXRjaF9zdGF0dXM7Cj4gPj4gPiAg ICAgICBlbnVtIGludGVsX2d1Y19md19zdGF0dXMgICAgZ3VjX2Z3X2xvYWRfc3RhdHVzOwo+ID4+ ID4gKyAgICBzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIgICAgICAgIGd1Y19md19oZWFkZXI7Cj4gPj4g Pgo+ID4+ID4gICAgICAgdWludDE2X3QgICAgICAgICAgICBndWNfZndfbWFqb3Jfd2FudGVkOwo+ ID4+ID4gICAgICAgdWludDE2X3QgICAgICAgICAgICBndWNfZndfbWlub3Jfd2FudGVkOwo+ID4+ ID4gQEAgLTgwLDcgKzgxLDYgQEAgc3RydWN0IGludGVsX2d1Y19mdyB7Cj4gPj4gPgo+ID4+ID4g ICBzdHJ1Y3QgaW50ZWxfZ3VjIHsKPiA+PiA+ICAgICAgIHN0cnVjdCBpbnRlbF9ndWNfZncgZ3Vj X2Z3Owo+ID4+ID4gLQo+ID4+ID4gICAgICAgdWludDMyX3QgbG9nX2ZsYWdzOwo+ID4+ID4gICAg ICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmxvZ19vYmo7Cj4gPj4gPgo+ID4+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19md2lmLmgKPiA+PiBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19md2lmLmgKPiA+PiA+IGluZGV4IGUxZjQ3YmEu LjAwNmRjMGQgMTAwNjQ0Cj4gPj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9n dWNfZndpZi5oCj4gPj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfZndp Zi5oCj4gPj4gPiBAQCAtMTIyLDYgKzEyMiw0MiBAQAo+ID4+ID4KPiA+PiA+ICAgI2RlZmluZSBH VUNfQ1RMX01BWF9EV09SRFMgICAgICAgIChHVUNfQ1RMX1JTUlZEICsgMSkKPiA+PiA+Cj4gPj4g PiArc3RydWN0IGd1Y19jc3NfaGVhZGVyIHsKPiA+PiA+ICsgICAgdWludDMyX3QgbW9kdWxlX3R5 cGU7Cj4gPj4gPiArICAgIHVpbnQzMl90IGhlYWRlcl9sZW47IC8qIGhlYWRlciBsZW5ndGggcGx1 cyBzaXplIG9mIGFsbCBvdGhlcgo+ID4+IGtleXMgKi8KPiA+PiA+ICsgICAgdWludDMyX3QgaGVh ZGVyX3ZlcnNpb247Cj4gPj4gPiArICAgIHVpbnQzMl90IG1vZHVsZV9pZDsKPiA+PiA+ICsgICAg dWludDMyX3QgbW9kdWxlX3ZlbmRvcjsKPiA+PiA+ICsgICAgdW5pb24gewo+ID4+ID4gKyAgICAg ICAgc3RydWN0IHsKPiA+PiA+ICsgICAgICAgICAgICB1aW50OF90IGRheTsKPiA+PiA+ICsgICAg ICAgICAgICB1aW50OF90IG1vbnRoOwo+ID4+ID4gKyAgICAgICAgICAgIHVpbnQxNl90IHllYXI7 Cj4gPj4gPiArICAgICAgICB9Owo+ID4+ID4gKyAgICAgICAgdWludDMyX3QgZGF0ZTsKPiA+PiA+ ICsgICAgfTsKPiA+PiA+ICsgICAgdWludDMyX3Qgc2l6ZTsgLyogdUNvZGUgc2l6ZSBwbHVzIGhl YWRlcl9sZW4gKi8KPiA+PiA+ICsgICAgdWludDMyX3Qga2V5X3NpemU7Cj4gPj4gPiArICAgIHVp bnQzMl90IG1vZHVsdXNfc2l6ZTsKPiA+PiA+ICsgICAgdWludDMyX3QgZXhwb25lbnRfc2l6ZTsK PiA+PiA+ICsgICAgdW5pb24gewo+ID4+ID4gKyAgICAgICAgc3RydWN0IHsKPiA+PiA+ICsgICAg ICAgICAgICB1aW50OF90IGhvdXI7Cj4gPj4gPiArICAgICAgICAgICAgdWludDhfdCBtaW47Cj4g Pj4gPiArICAgICAgICAgICAgdWludDE2X3Qgc2VjOwo+ID4+ID4gKyAgICAgICAgfTsKPiA+PiA+ ICsgICAgICAgIHVpbnQzMl90IHRpbWU7Cj4gPj4gPiArICAgIH07Cj4gPj4gPiArCj4gPj4gPiAr ICAgIGNoYXIgdXNlcm5hbWVbOF07Cj4gPj4gPiArICAgIGNoYXIgYnVpbGRudW1iZXJbMTJdOwo+ ID4+ID4gKyAgICB1aW50MzJfdCBkZXZpY2VfaWQ7Cj4gPj4gPiArICAgIHVpbnQzMl90IGd1Y19z d192ZXJzaW9uOwo+ID4+ID4gKyAgICB1aW50MzJfdCBwcm9kX3ByZXByb2RfZnc7Cj4gPj4gPiAr ICAgIHVpbnQzMl90IHJlc2VydmVkWzEyXTsKPiA+PiA+ICsgICAgdWludDMyX3QgaGVhZGVyX2lu Zm87Cj4gPj4gPiArfSBfX3BhY2tlZDsKPiA+PiA+ICsKPiA+PiA+ICAgc3RydWN0IGd1Y19kb29y YmVsbF9pbmZvIHsKPiA+PiA+ICAgICAgIHUzMiBkYl9zdGF0dXM7Cj4gPj4gPiAgICAgICB1MzIg Y29va2llOwo+ID4+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1 Y19sb2FkZXIuYwo+ID4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5j Cj4gPj4gPiBpbmRleCA0MDI0MWYzLi5hNjcwM2I0IDEwMDY0NAo+ID4+ID4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCj4gPj4gPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKPiA+PiA+IEBAIC0yMTUsMTggKzIxNSwyOSBA QCBzdGF0aWMgaW5saW5lIGJvb2wgZ3VjX3Vjb2RlX3Jlc3BvbnNlKHN0cnVjdAo+ID4+IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4+ID4gICAgICAgICAgICgodmFsICYgR1NfTUlBX0NP UkVfU1RBVEUpICYmIHVrX3ZhbCA9PQo+ID4+IEdTX1VLRVJORUxfTEFQSUNfRE9ORSkpOwo+ID4+ ID4gICB9Cj4gPj4gPgo+ID4+ID4gLS8qCj4gPj4gPiAtICogVHJhbnNmZXIgdGhlIGZpcm13YXJl IGltYWdlIHRvIFJBTSBmb3IgZXhlY3V0aW9uIGJ5IHRoZQo+ID4+IG1pY3JvY29udHJvbGxlci4K PiA+PiA+ICsvKioKPiA+PiA+ICsgKiBET0M6IEd1QyBGaXJtd2FyZSBMYXlvdXQKPiA+PiA+ICAg ICoKPiA+PiA+IC0gKiBHdUMgRmlybXdhcmUgbGF5b3V0Ogo+ID4+ID4gLSAqICstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgLS0tLQo+ID4+ID4gLSAqIHwgICAgICAgICAgQ1NTIGhl YWRlciAgICAgICAgICAgfCAgMTI4Qgo+ID4+ID4gLSAqIHwgY29udGFpbnMgbWFqb3IvbWlub3Ig dmVyc2lvbiAgfAo+ID4+ID4gLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAg LS0tLQo+ID4+ID4gLSAqIHwgICAgICAgICAgICAgdUNvZGUgICAgICAgICAgICAgfAo+ID4+ID4g LSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgLS0tLQo+ID4+ID4gLSAqIHwg ICAgICAgICBSU0Egc2lnbmF0dXJlICAgICAgICAgfCAgMjU2Qgo+ID4+ID4gLSAqICstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgLS0tLQo+ID4+ID4gKyAqIFRoZSBHdUMgZmlybXdh cmUgbGF5b3V0IGxvb2tzIGxpa2UgdGhpczoKPiA+PiA+ICsgKgo+ID4+ID4gKyAqICAgICArLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPiA+PiA+ICsgKiAgICAgfCAgICAgICAgZ3Vj X2Nzc19oZWFkZXIgICAgICAgICB8Cj4gPj4gPiArICogICAgIHwgY29udGFpbnMgbWFqb3IvbWlu b3IgdmVyc2lvbiAgfAo+ID4+ID4gKyAqICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSsKPiA+PiA+ICsgKiAgICAgfCAgICAgICAgICAgICB1Q29kZSAgICAgICAgICAgICB8Cj4g Pj4gPiArICogICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+ID4+ID4gKyAq ICAgICB8ICAgICAgICAgUlNBIHNpZ25hdHVyZSAgICAgICAgIHwKPiA+PiA+ICsgKiAgICAgKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4gPj4gPiArICogICAgIHwgICAgICAgICAg bW9kdWx1cyBrZXkgICAgICAgICAgfAo+ID4+ID4gKyAqICAgICArLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSsKPiA+PiA+ICsgKiAgICAgfCAgICAgICAgICBleHBvbmVudCB2YWwgICAg ICAgICB8Cj4gPj4gPiArICogICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+ ID4+ID4gKyAqCj4gPj4gPiArICogVGhlIGZpcm13YXJlIG1heSBvciBtYXkgbm90IGhhdmUgbW9k dWx1cyBrZXkgYW5kIGV4cG9uZW50IGRhdGEuCj4gPj4gVGhlIGhlYWRlciwKPiA+PiA+ICsgKiB1 Q29kZSBhbmQgUlNBIHNpZ25hdHVyZSBhcmUgbXVzdC1oYXZlIGNvbXBvbmVudHMgdGhhdCB3aWxs IGJlCj4gPj4gdXNlZCBieSBkcml2ZXIuCj4gPj4gPiArICogU2l6ZSBvZiBlYWNoIGNvbXBvbmVu dHMgKGluIGR3b3JkcykgY2FuIGJlIGZvdW5kIGluIGhlYWRlci4gSW4KPiA+PiB0aGUgY2FzZSB0 aGF0Cj4gPj4gPiArICogbW9kdWx1cyBhbmQgZXhwb25lbnQgYXJlIG5vdCBwcmVzZW50IGluIGZ3 LCB0aGUgc2l6ZSB2YWx1ZSBzdGlsbAo+ID4+IGFwcGVhcnMgaW4KPiA+PiA+ICsgKiBoZWFkZXIu Cj4gPj4KPiA+PiBJIHRoaW5rIHRoaXMgcGljdHVyZSAmIGNvbW1lbnRhcnkgYmVsb25ncyBqdXN0 IGFoZWFkIG9mIHRoZSBzdHJ1Y3R1cmUKPiA+PiBkZWZpbml0aW9uIGluIGludGVsX2d1Y19md2lm LmgsIHJhdGhlciB0aGFuIHdpdGggdGhlIGNvZGUgaGVyZS4gQWxzbywKPiA+Cj4gPiBZZXMsIHRo aXMgY2FuIGJlIG1vdmVkIHRvIGludGVsX2d1Y19md2lmLmggcmlnaHQgYmVmb3JlIGNzc19oZWFk ZXIKPiA+IHN0cnVjdHVyZSBkZWZpbml0aW9uLgo+ID4KPiA+PiBwZXJoYXBzIHdlIG5lZGUgYSBi aXQgbW9yZSBleHBsYW5hdGlvbiBvZiB0aGUgJypzaXplJyBmaWVsZHMsIHNpbmNlIHRoZXkKPiA+ PiBoYXZlIGJlZW4gZGVmaW5lZCBpbiBzdWNoIGEgY291bnRlci1pbnR1aXRpdmUgd2F5IDooICBJ IHN1Z2dlc3Q6Cj4gPj4KPiA+PiAgICAqIEFsbCB0aGUgJ3NpemVzJyBpbiB0aGUgQ1NTIGhlYWRl ciBhcmUgZXhwcmVzc2VkIGFzIG51bWJlcnMgb2YKPiA+PiAgICAqICJkd29yZHMiLCBhbmQgdGhl cmVmb3JlIGhhdmUgdG8gYmUgbXVsdGlwbGllZCBieSBzaXplb2YgKHUzMikgdG8KPiA+PiAgICAq IGdldCBhY3R1YWwgc2l6ZXMgKGluIHRoZSBub3JtYWwgc2Vuc2Ugb2YgYnl0ZSBjb3VudHMpLgo+ ID4+ICAgICoKPiA+Cj4gPiBJbiBjb21tZW50cywgSSBjbGVhcmx5IG1lbnRpb24gdGhhdCBhbGwg c2l6ZSBvZiB0aGVzZSBndWMgY29tcG9uZW50cyBhcmUKPiA+IGluIGR3b3Jkcy4gSW4gbmV4dCB2 ZXJzaW9uLCBJIGNhbiBhZGQgc3VyZml4IF9kd29yZCB0byBhdm9pZCBjb25mdXNlLgo+Cj4gVGhl IG5hbWVzIGFyZSBzeXN0ZW1hdGljYWxseSAoaWYgbm90IHlldCBhdXRvbWF0aWNhbGx5KSBkZXJp dmVkIGZyb20gdGhlCj4gR3VDIGhlYWRlciB2ZXJzaW9uLCBzbyBiZXN0IG5vdCB0byBjaGFuZ2Ug dGhlbS4gVGhlIGNvbW1lbnQgKmluIHRoZQo+IGhlYWRlciBmaWxlKiB3aWxsIHN1ZmZpY2UuCj4K PiA+PiAgICAqIFRoZSAnc2l6ZScgZmllbGQgaXMgdGhlIHRvdGFsIHNpemUgb2YgdGhlIGRhdGEg aW4gdGhlIHBpY3R1cmUKPiA+PiAgICAqIGFib3ZlLCBhbmQgc2hvdWxkIG1hdGNoIHRoZSBzaXpl IG9mIHRoZSBmaWxlIGFzIHByb3ZpZGVkIGJ5IHRoZQo+ID4+ICAgICogbG9hZGVyOyB0aGUgZmls ZSBpcyBpbnZhbGlkIGlmIHRoaXMgc2l6ZSBmaWVsZCBpcyBncmVhdGVyIHRoYW4KPiA+PiAgICAq IHRoZSBhY3R1YWwgZmlsZXNpemUuCj4gPgo+ID4gVGhpcyBpcyBub3QgcmlnaHQgYXNzdW1wdGlv bi4gQW5kLCB0aGF0IHdpbGwgY2hhbmdlIHNvbWUgZXhwZWN0YXRpb24KPiA+IGJlbG93IHJlbGF0 ZWQgdG8gc2l6ZSBjaGVja2luZy4gSSBzaG91bGQgaGF2ZSBtYWtlIG15IGNvbW1lbnRzIG1vcmUK PiA+IGNsZWFyLiBCdXQKPgo+IE9LLCBJIHNlZSwgd2UncmUgZ29pbmcgdG8gYWxsb3cgYSB0cnVu Y2F0ZWQgaW1hZ2UgZmlsZSwgYXMgbG9uZyBhcyBvbmx5Cj4gdW51c2VkIHNlY3Rpb25zIGFyZSBt aXNzaW5nIC4uLgo+Cj4gPiAiVGhlIGZpcm13YXJlIG1heSBvciBtYXkgbm90IGhhdmUgbW9kdWx1 cyBrZXkgYW5kIGV4cG9uZW50IGRhdGEgLi4uIEluCj4gPiB0aGUgY2FzZSB0aGF0IG1vZHVsdXMg YW5kIGV4cG9uZW50IGFyZSBub3QgcHJlc2VudCBpbiBmdywgdGhlIHNpemUgdmFsdWUKPiA+IHN0 aWxsIGFwcGVhcnMgaW4gaGVhZGVyLiIKPiA+Cj4gPiBXZSBoYXZlIGRpc2N1c3NlZCB0aGlzIHdp dGggZmlybXdhcmUgdGVhbS4gU2luY2UgdGhlICdzaXplJyAoYWN0dWFsbHkKPiA+IHRoZSBoZWFk ZXIpIGlzIHVzZWQgdG8gZ2VuZXJhdGUgUlNBIGtleSwgd2UgY2FuJ3QgY2hhbmdlIGl0IGFmdGVy Cj4gPiBzaWduaW5nLiBTbywgd2UgaGF2ZSBpbmZvcm1hdGlvbiBvZiBtb2R1bHVzIGV0Yy4gYnV0 IGRyaXZlciBkb2Vzbid0IG5lZWQKPiA+IHRoZW0gdG8gbG9hZCBmaXJtd2FyZS4gTGlrZWx5IHRo ZXkgYXJlIG5vdCBwYXJ0IG9mIHRoZSByZWxlYXNlIGJpbiBmaWxlLgo+ID4gU28gdGhlICdzaXpl JyBtYXkgYmUgbGFyZ2VyIHRoYW4gdGhlIGJpbiBmaWxlIHNpemUuIEN1cnJlbnRseSwgZncgY2hl Y2sKPiA+IGlzIGJhc2VkIG9uIHRoZSBmb2xsb3dpbmcgcnVsZXMgKG1heWJlIEkgbmVlZCBhZGQg dGhlc2UgdG8gdGhlIGNvbW1lbnQKPiA+IHRvbyk6Cj4gPgo+ID4gMS4gSGVhZGVyLCB1Q29kZSBh bmQgUlNBIGFyZSBtdXN0LWhhdmUgY29tcG9uZW50cy4KPiA+IDIuIEFsbCBmaXJtd2FyZSBjb21w b25lbnRzLCBpZiB0aGV5IHByZXNlbnQsIGFyZSBpbiB0aGUgc2VxdWVuY2UKPiA+ICAgICBpbGx1 c3RyYXRlZCBpbiB0aGUgbGF5b3V0IHRhYmxlLgo+ID4gMy4gU2l6ZSBpbmZvIG9mIGVhY2ggY29t cG9uZW50IGNhbiBiZSBmb3VuZCBpbiBoZWFkZXIsIGluIGR3b3Jkcy4KPiA+IDQuIE1vZHVsdXMg YW5kIGV4cG9uZW50IGtleSBhcmUgbm90IHJlcXVpcmVkIGJ5IGRyaXZlci4gVGhleSBtYXkgbm90 Cj4gPiAgICAgYXBwZWFyIGluIGZ3IGJ1dCB0aGVpciBzaXplIGluZm8gYXJlIHJlY29yZGVkIGlu IGhlYWRlciBhbnl3YXkuCj4gPgo+ID4+ICAgICogVGhlICdoZWFkZXJfbGVuJyBmaWVsZCBjb250 YWlucyB0aGUgdG90YWwgc2l6ZSBvZiB0aGUgbm9uLXVDb2RlCj4gPj4gICAgKiBzZWN0aW9ucyBv ZiB0aGUgZmlsZSAoaS5lLiB0aGUgc3VtIG9mIHRoZSBzaXplcyBvZiB0aGUgQ1NTIGhlYWRlciwK PiA+PiAgICAqIHRoZSBSU0Egc2lnbmF0dXJlLCB0aGUgbW9kdWx1cyBrZXkgYW5kIHRoZSBleHBv bmVudCkuIFRodXMsIHRvIGZpbmQKPiA+PiAgICAqIHRoZSBzaXplIG9mIHRoZSB1Q29kZSB3ZSBz dWJ0cmFjdCB0aGlzIHRvdGFsIGZyb20gJ3NpemUnLCBidXQgdG8KPiA+PiAgICAqIGZpbmQgdGhl IHNpemUgb2YgdGhlIENTUyBoZWFkZXIgKHdoaWNoIGFsc28gZGVmaW5lcyB0aGUgc3RhcnQgb2YK PiA+PiAgICAqIHRoZSB1Q29kZSksIHdlIHN1YnRyYWN0IHRoZSBvdGhlciB0aHJlZSBzaXplcyBm cm9tIHRoaXMgdG90YWwuIFRoZQo+ID4+ICAgICogc2l6ZSBvZiB0aGUgQ1NTIGhlYWRlciB0aHVz IGNhbGN1bGF0ZWQgc2hvdWxkIG1hdGNoIHNpemVvZihzdHJ1Y3QKPiA+PiAgICAqIGd1Y19jc3Nf aGVhZGVyKSAob3IgZXhjZWVkIGl0OyBhbGxvd2luZyBpdCB0byBiZSBsYXJnZXIgcGVybWl0cwo+ ID4+ICAgICogZnV0dXJlIGV4cGFuc2lvbiBvZiB0aGUgQ1NTIGhlYWRlciBvciBpbnNlcnRpb24g b2YgZXh0cmEgc2VjdGlvbnMKPiA+PiAgICAqIGhlcmUpLiBUaGUgZmlsZSBpcyBpbnZhbGlkIGlm IHRoaXMgY2FsY3VsYXRlZCBzaXplIGlzIGxlc3MgdGhhbgo+ID4+ICAgICogc2l6ZW9mKHN0cnVj dCBndWNfY3NzX2hlYWRlcikuCj4gPj4gICAgKgo+ID4+ICAgICogVGhlIHNpemUgb2YgdGhlIFJT QSBzaWduYXR1cmUgbXVzdCBub3QgZXhjZWVkIHRoYXQgZXhwZWN0ZWQgYnkgdGhlCj4gPj4gICAg KiBoYXJkd2FyZS4gVGhlIGZpbGUgaXMgaW52YWxpZCBpZiB0aGUgdmFsdWUgb2YgdGhpcyBmaWVs ZCBpcyBtb3JlCj4gPj4gICAgKiB0aGFuIHRoZSBzaXplIG9mIHRoZSBzaWduYXR1cmUgYXJlYSBp biB0aGUgR3VDIHJlZ2lzdGVyIHNwYWNlLAo+ID4+ICAgICogY3VycmVudGx5IDB4MTAwIGJ5dGVz Lgo+ID4+ICAgICoKPiA+PiAgICAqIER1ZSB0byB0aGUgcmVxdWlyZW1lbnRzIG9mIHRoZSBETUEg ZW5naW5lLCB0aGUgdG90YWwgc2l6ZSBvZiB0aGUKPiA+PiAgICAqIHNlY3Rpb25zIHRoYXQgYXJl IERNQSdkIGludG8gdGhlIEd1QydzIG1lbW9yeSAoQ1NTIGhlYWRlciBwbHVzCj4gPj4gICAgKiB1 Q29kZSkgbXVzdCBiZSBhIG11bHRpcGxlIG9mIHRoZSBjYWNoZSBsaW5lIHNpemUuIFRoZSBmaWxl IGlzCj4gPj4gICAgKiBpbnZhbGlkIGlmIHRoaXMgcmVxdWlyZW1lbnQgaXMgbm90IG1ldC4KPiA+ Cj4gPiBBbGwgc3VnZ2VzdGlvbnMgYWJvdmUgYXJlIHZhbGlkIGF0IHNvbWUgcG9pbnRzLiBIb3dl dmVyLCBiZSBub3RlIHRoYXQsCj4gPiB0aGUgZmlybXdhcmUgc2l6ZSBjaGVja2luZyBJIHB1dCBp bnRvIGNvZGUgaXMgYWN0dWFsbHkgdG8gcHJvdGVjdCBkcml2ZXIKPiA+IC0ganVzdCBtYWtlIHN1 cmUgd2UgZG9uJ3QgaGF2ZSBhIGJ1ZyBjaGVjayBkdWUgdG8gbWVtb3J5IGFjY2Vzcwo+ID4gdmlv bGF0aW9uLiBObyBtYXR0ZXIgaG93IG11Y2ggcHJvdGVjdGlvbiB5b3UgcHV0IGludG8gZHJpdmVy LCB5b3Ugc3RpbGwKPiA+IGNhbid0IHJlamVjdCB0aGUgY2FzZSBieSBkcml2ZXIgaWYgc29tZW9u ZSBtb2RpZmllcyBvbmUgYnl0ZSBvZiB1Q29kZS4KPiA+IFNvLCBhcyBsb25nIGFzIHdlIGhhdmUg dGhlIGJpdHMgb2YgaGVhZGVyLCB1Q29kZSBhbmQgUlNBLCB3ZSB3aWxsIGxvYWQKPiA+IGl0LiBI VyB3aWxsIGZhaWwgaXQgYW55d2F5IGlmIGFueXRoaW5nIGdvZXMgd3JvbmcuCj4KPiBBbGwgdGhl IGNoZWNrcyBJIHN1Z2dlc3RlZCB3ZXJlIG9mIHRoaXMgdHlwZS4gRm9yIGV4YW1wbGUsIHRoZSBj aGFuZ2UKPiBmcm9tIHVzaW5nIFVPU19SU0FfU0lHX1NJWkUgdG8gdGhlIGNhbGN1bGF0ZWQgUlNB LXNpZ25hdHVyZS1zaXplIHdvdWxkCj4gaGF2ZSBhbGxvd2VkIGEgbWFsZm9ybWVkIGZpbGUgdG8g dHJpZ2dlciB3cml0aW5nIGJleW9uZCB0aGUgMjU2IGJ5dGVzIG9mCj4gc2lnbmF0dXJlLXJlZ2lz dGVyIHNwYWNlLCB3aXRoIHVucHJlZGljdGFibGUgZWZmZWN0cy4KPgo+IEV2ZW4gaWYgdGhlIHRy YWlsaW5nIHNlY3Rpb25zIHRoZW1zZWx2ZXMgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUKPiBp bWFnZSBmaWxlLCB0aGUgYXNzZXJ0aW9ucyBhYm91dCB0aGUgbnVtZXJpY2FsIHJlbGF0aW9uc2hp cHMgYmV0d2VlbiB0aGUKPiAnKnNpemUnIHZhbHVlcyBpbiB0aGUgQ1NTIGhlYWRlciByZW1haW4g dmFsaWQgYW5kIHNob3VsZCBiZSBjaGVja2VkLgo+Cj4gPj4gVGhlIHJlc3Qgb2YgdGhpcyBjb21t ZW50IGNhbiBzdGF5IHdpdGggdGhlIGNvZGUgLi4uCj4gPj4KPiA+PiA+ICAgICoKPiA+PiA+ICAg ICogQXJjaGl0ZWN0dXJhbGx5LCB0aGUgRE1BIGVuZ2luZSBpcyBiaWRpcmVjdGlvbmFsLCBhbmQg Y2FuCj4gPj4gcG90ZW50aWFsbHkgZXZlbgo+ID4+ID4gICAgKiB0cmFuc2ZlciBiZXR3ZWVuIEdU VCBsb2NhdGlvbnMuIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBsZWZ0IG91dAo+ID4+IG9mIHRoZSBB UEkKPiA+PiA+IEBAIC0yMzYsMzAgKzI0Nyw0MiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZ3VjX3Vj b2RlX3Jlc3BvbnNlKHN0cnVjdAo+ID4+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4+ ID4gICAgKiBETUEgZW5naW5lIGluIG9uZSBvcGVyYXRpb24sIHdoZXJlYXMgdGhlIFJTQSBzaWdu YXR1cmUgaXMKPiA+PiBsb2FkZWQgdmlhIE1NSU8uCj4gPj4gPiAgICAqLwo+ID4+ID4KPiA+PiA+ IC0jZGVmaW5lIFVPU19DU1NfSEVBREVSX09GRlNFVCAgICAgICAgMAo+ID4+ID4gLSNkZWZpbmUg VU9TX1ZFUl9NSU5PUl9PRkZTRVQgICAgICAgIDB4NDQKPiA+PiA+IC0jZGVmaW5lIFVPU19WRVJf TUFKT1JfT0ZGU0VUICAgICAgICAweDQ2Cj4gPj4gPiAtI2RlZmluZSBVT1NfQ1NTX0hFQURFUl9T SVpFICAgICAgICAweDgwCj4gPj4gPiAtI2RlZmluZSBVT1NfUlNBX1NJR19TSVpFICAgICAgICAw eDEwMAo+ID4+ID4gLQo+ID4+ID4gKy8qCj4gPj4gPiArICogVHJhbnNmZXIgdGhlIGZpcm13YXJl IGltYWdlIHRvIFJBTSBmb3IgZXhlY3V0aW9uIGJ5IHRoZQo+ID4+IG1pY3JvY29udHJvbGxlci4K PiA+PiA+ICsgKi8KPiA+PiA+ICAgc3RhdGljIGludCBndWNfdWNvZGVfeGZlcl9kbWEoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4+ID4gICB7Cj4gPj4gPiAgICAgICBzdHJ1 Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7Cj4gPj4gPiAr ICAgIHN0cnVjdCBndWNfY3NzX2hlYWRlciAqaGVhZGVyID0gJmd1Y19mdy0+Z3VjX2Z3X2hlYWRl cjsKPiA+PiA+ICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpmd19vYmogPSBndWNf ZnctPmd1Y19md19vYmo7Cj4gPj4gPiAgICAgICB1bnNpZ25lZCBsb25nIG9mZnNldDsKPiA+PiA+ ICAgICAgIHN0cnVjdCBzZ190YWJsZSAqc2cgPSBmd19vYmotPnBhZ2VzOwo+ID4+ID4gLSAgICB1 MzIgc3RhdHVzLCB1Y29kZV9zaXplLCByc2FbVU9TX1JTQV9TSUdfU0laRSAvIHNpemVvZih1MzIp XTsKPiA+PiA+ICsgICAgdTMyIHN0YXR1cywgaGVhZGVyX3NpemUsIHJzYV9zaXplLCB1Y29kZV9z aXplLCAqcnNhOwo+ID4+ID4gICAgICAgaW50IGksIHJldCA9IDA7Cj4gPj4KPiA+PiBJIGRvbid0 IGxpa2UgZG9pbmcgdGhlIGNvbXBsaWNhdGVkIHNpemUtYmFzZWQgY2FsY3VsYXRpb25zIGluIHRo ZSBETUEKPiA+PiByb3V0aW5lOyBJJ2QgcmF0aGVyIHRoZSBpbXBvcnRhbnQgdmFsdWVzIChSU0Eg c3RhcnQvc2l6ZSwgQ1NTK3VDb2RlCj4gPj4gc3RhcnQvc2l6ZSkgd2VyZSBwcmVjYWxjdWxhdGVk IGR1cmluZyBsb2FkaW5nIGFuZCBzYXZlZCBpbiB0aGUgc3RydWN0Cj4gPj4gaW50ZWxfZ3VjX2Z3 IG9yIGEgbWVtYmVyIHRoZXJlb2Ygc28gdGhhdCB0aGlzIGNvZGUgYWxyZWFkeSBoYXMgdGhlIGV4 YWN0Cj4gPj4gbnVtYmVycyBpdCBuZWVkcyB3aXRob3V0IGFueSBmdXJ0aGVyIGNvbXB1dGF0aW9u Lgo+ID4KPiA+IFRoaXMgaXMgYSBnb29kIHBvaW50Lgo+ID4KPiA+PiA+IC0gICAgLyogdUNvZGUg c2l6ZSwgYWxzbyBpcyB3aGVyZSBSU0Egc2lnbmF0dXJlIHN0YXJ0cyAqLwo+ID4+ID4gLSAgICBv ZmZzZXQgPSB1Y29kZV9zaXplID0gZ3VjX2Z3LT5ndWNfZndfc2l6ZSAtIFVPU19SU0FfU0lHX1NJ WkU7Cj4gPj4gPiAtICAgIEk5MTVfV1JJVEUoRE1BX0NPUFlfU0laRSwgdWNvZGVfc2l6ZSk7Cj4g Pj4gPiArICAgIC8qIFRoZSBoZWFkZXIgcGx1cyB1Q29kZSB3aWxsIGJlIGNvcGllZCB0byBXT1BD TSB2aWEgRE1BLAo+ID4+IGV4Y2x1ZGluZyBhbnkKPiA+PiA+ICsgICAgICogb3RoZXIgY29tcG9u ZW50cyAqLwo+ID4+ID4gKyAgICBoZWFkZXJfc2l6ZSA9IChoZWFkZXItPmhlYWRlcl9sZW4gLSBo ZWFkZXItPmtleV9zaXplIC0KPiA+PiA+ICsgICAgICAgIGhlYWRlci0+bW9kdWx1c19zaXplIC0g aGVhZGVyLT5leHBvbmVudF9zaXplKSAqIHNpemVvZih1MzIpOwo+ID4+ID4gKyAgICB1Y29kZV9z aXplID0gKGhlYWRlci0+c2l6ZSAtIGhlYWRlci0+aGVhZGVyX2xlbikgKiBzaXplb2YodTMyKTsK PiA+PiA+ICsKPiA+PiA+ICsgICAgSTkxNV9XUklURShETUFfQ09QWV9TSVpFLCBoZWFkZXJfc2l6 ZSArIHVjb2RlX3NpemUpOwo+ID4+ID4gKwo+ID4+ID4gKyAgICAvKiB3aGVyZSBSU0Egc2lnbmF0 dXJlIHN0YXJ0cyAqLwo+ID4+ID4gKyAgICBvZmZzZXQgPSBoZWFkZXJfc2l6ZSArIHVjb2RlX3Np emU7Cj4gPj4gPiArCj4gPj4gPiArICAgIHJzYV9zaXplID0gaGVhZGVyLT5rZXlfc2l6ZSAqIHNp emVvZih1MzIpOwo+IChoZWFkZXItPmtleV9zaXplIG1pZ2h0IGJlLCBzYXksIDB4ODApID0+IHJz YV9zaXplIGlzIDB4MjAwCj4gPj4gPiArICAgIHJzYSA9IGttYWxsb2MocnNhX3NpemUsIEdGUF9L RVJORUwpOwo+ID4+ID4gKyAgICBpZiAoIXJzYSkKPiA+PiA+ICsgICAgICAgIHJldHVybiAtRU5P TUVNOwo+ID4+ID4KPiA+PiA+ICAgICAgIC8qIENvcHkgUlNBIHNpZ25hdHVyZSBmcm9tIHRoZSBm dyBpbWFnZSB0byBIVyBmb3IgdmVyaWZpY2F0aW9uICovCj4gPj4gPiAtICAgIHNnX3Bjb3B5X3Rv X2J1ZmZlcihzZy0+c2dsLCBzZy0+bmVudHMsIHJzYSwgVU9TX1JTQV9TSUdfU0laRSwKPiA+PiBv ZmZzZXQpOwo+ID4+ID4gLSAgICBmb3IgKGkgPSAwOyBpIDwgVU9TX1JTQV9TSUdfU0laRSAvIHNp emVvZih1MzIpOyBpKyspCj4gPj4gPiArICAgIHNnX3Bjb3B5X3RvX2J1ZmZlcihzZy0+c2dsLCBz Zy0+bmVudHMsIHJzYSwgcnNhX3NpemUsIG9mZnNldCk7Cj4gPj4gPiArICAgIGZvciAoaSA9IDA7 IGkgPCByc2Ffc2l6ZSAvIHNpemVvZih1MzIpOyBpKyspCj4gPj4gPiAgICAgICAgICAgSTkxNV9X UklURShVT1NfUlNBX1NDUkFUQ0hfMCArIGkgKiBzaXplb2YodTMyKSwgcnNhW2ldKTsKPiBpKnNp emVvZih1MzIpIGhhZCBiZXR0ZXIgbm90IGV4Y2VlZCAweDEwMCEgT09QUyEKPiA+PiA+Cj4gPj4g PiArICAgIGtmcmVlKHJzYSk7Cj4gPj4gPiArCj4gPj4gPiAgICAgICAvKiBTZXQgdGhlIHNvdXJj ZSBhZGRyZXNzIGZvciB0aGUgbmV3IGJsb2IgKi8KPiA+PiA+ICAgICAgIG9mZnNldCA9IGk5MTVf Z2VtX29ial9nZ3R0X29mZnNldChmd19vYmopOwo+ID4+ID4gICAgICAgSTkxNV9XUklURShETUFf QUREUl8wX0xPVywgbG93ZXJfMzJfYml0cyhvZmZzZXQpKTsKPiA+PiA+IEBAIC00NjUsMTAgKzQ4 OCw4IEBAIHN0YXRpYyB2b2lkIGd1Y19md19mZXRjaChzdHJ1Y3QgZHJtX2RldmljZQo+ID4+ICpk ZXYsIHN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdykKPiA+PiA+ICAgewo+ID4+ID4gICAgICAg c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiA+PiA+ICAgICAgIGNvbnN0IHN0cnVj dCBmaXJtd2FyZSAqZnc7Cj4gPj4gPiAtICAgIGNvbnN0IHU4ICpjc3NfaGVhZGVyOwo+ID4+ID4g LSAgICBjb25zdCBzaXplX3QgbWluc2l6ZSA9IFVPU19DU1NfSEVBREVSX1NJWkUgKyBVT1NfUlNB X1NJR19TSVpFOwo+ID4+ID4gLSAgICBjb25zdCBzaXplX3QgbWF4c2l6ZSA9IEdVQ19XT1BDTV9T SVpFX1ZBTFVFICsgVU9TX1JTQV9TSUdfU0laRQo+ID4+ID4gLSAgICAgICAgICAgIC0gMHg4MDAw OyAvKiAzMmsgcmVzZXJ2ZWQgKDhLIHN0YWNrICsgMjRrIGNvbnRleHQpICovCj4gPj4gPiArICAg IHN0cnVjdCBndWNfY3NzX2hlYWRlciAqY3NzX2hlYWRlciA9ICZndWNfZnctPmd1Y19md19oZWFk ZXI7Cj4gPj4gPiArICAgIHNpemVfdCBzaXplOwo+ID4+ID4gICAgICAgaW50IGVycjsKPiA+PiA+ Cj4gPj4gPiAgICAgICBEUk1fREVCVUdfRFJJVkVSKCJiZWZvcmUgcmVxdWVzdGluZyBmaXJtd2Fy ZTogR3VDIGZ3IGZldGNoCj4gPj4gc3RhdHVzICVzXG4iLAo+ID4+ID4gQEAgLTQ4MiwxMiArNTAz LDMxIEBAIHN0YXRpYyB2b2lkIGd1Y19md19mZXRjaChzdHJ1Y3QgZHJtX2RldmljZQo+ID4+ICpk ZXYsIHN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdykKPiA+PiA+Cj4gPj4gPiAgICAgICBEUk1f REVCVUdfRFJJVkVSKCJmZXRjaCBHdUMgZncgZnJvbSAlcyBzdWNjZWVkZWQsIGZ3ICVwXG4iLAo+ ID4+ID4gICAgICAgICAgIGd1Y19mdy0+Z3VjX2Z3X3BhdGgsIGZ3KTsKPiA+PiA+IC0gICAgRFJN X0RFQlVHX0RSSVZFUigiZmlybXdhcmUgZmlsZSBzaXplICV6dSAobWluaW11bSAlenUsIG1heGlt dW0KPiA+PiAlenUpXG4iLAo+ID4+ID4gLSAgICAgICAgZnctPnNpemUsIG1pbnNpemUsIG1heHNp emUpOwo+ID4+ID4KPiA+PiA+IC0gICAgLyogQ2hlY2sgdGhlIHNpemUgb2YgdGhlIGJsb2IgYmVm b2UgZXhhbWluaW5nIGJ1ZmZlciBjb250ZW50cyAqLwo+ID4+ID4gLSAgICBpZiAoZnctPnNpemUg PCBtaW5zaXplIHx8IGZ3LT5zaXplID4gbWF4c2l6ZSkKPiA+PiA+ICsgICAgLyogQ2hlY2sgdGhl IHNpemUgb2YgdGhlIGJsb2IgYmVmb3JlIGV4YW1pbmluZyBidWZmZXIgY29udGVudHMgKi8KPiA+ PiA+ICsgICAgaWYgKGZ3LT5zaXplIDwgc2l6ZW9mKHN0cnVjdCBndWNfY3NzX2hlYWRlcikpIHsK PiA+PiA+ICsgICAgICAgIERSTV9FUlJPUigiRmlybXdhcmUgaGVhZGVyIGlzIG1pc3NpbmdcbiIp Owo+ID4+ID4gKyAgICAgICAgZ290byBmYWlsOwo+ID4+ID4gKyAgICB9Cj4gPj4gPiArCj4gPj4g PiArICAgIG1lbWNweShjc3NfaGVhZGVyLCBmdy0+ZGF0YSwgc2l6ZW9mKHN0cnVjdCBndWNfY3Nz X2hlYWRlcikpOwo+ID4+ID4gKwo+ID4+ID4gKyAgICAvKiBBdCBsZWFzdCwgaXQgc2hvdWxkIGhh dmUgaGVhZGVyLCB1Q29kZSBhbmQgUlNBLiBTaXplIG9mIGFsbAo+ID4+IHRocmVlLiAqLwo+ID4+ ID4gKyAgICBzaXplID0gKGNzc19oZWFkZXItPnNpemUgLSBjc3NfaGVhZGVyLT5tb2R1bHVzX3Np emUgLQo+ID4+ID4gKyAgICAgICAgICAgIGNzc19oZWFkZXItPmV4cG9uZW50X3NpemUpICogc2l6 ZW9mKHUzMik7Cj4gPj4gPiArICAgIGlmIChmdy0+c2l6ZSA8IHNpemUpIHsKPiA+PiA+ICsgICAg ICAgIERSTV9FUlJPUigiTWlzc2luZyBmaXJtd2FyZSBjb21wb25lbnRzXG4iKTsKPiA+PiA+ICAg ICAgICAgICBnb3RvIGZhaWw7Cj4gPj4gPiArICAgIH0KPiA+PiA+ICsKPiA+PiA+ICsgICAgLyog SGVhZGVyIGFuZCB1Q29kZSB3aWxsIGJlIGxvYWRlZCB0byBXT1BDTS4gU2l6ZSBvZiB0aGUgdHdv LiAqLwo+ID4+ID4gKyAgICBzaXplIC09IGNzc19oZWFkZXItPmtleV9zaXplICogc2l6ZW9mKHUz Mik7Cj4gPj4gPiArCj4gPj4gPiArICAgIC8qIFRvcCAzMmsgb2YgV09QQ00gaXMgcmVzZXJ2ZWQg KDhLIHN0YWNrICsgMjRrIFJDNiBjb250ZXh0KS4gKi8KPiA+PiA+ICsgICAgaWYgKHNpemUgPiBH VUNfV09QQ01fU0laRV9WQUxVRSAtIDB4ODAwMCkgewo+ID4+ID4gKyAgICAgICAgRFJNX0VSUk9S KCJGaXJtd2FyZSBpcyB0b28gbGFyZ2UgdG8gZml0IGluIFdPUENNXG4iKTsKPiA+PiA+ICsgICAg ICAgIGdvdG8gZmFpbDsKPiA+PiA+ICsgICAgfQo+ID4+ID4KPiA+PiA+ICAgICAgIC8qCj4gPj4g PiAgICAgICAgKiBUaGUgR3VDIGZpcm13YXJlIGltYWdlIGhhcyB0aGUgdmVyc2lvbiBudW1iZXIg ZW1iZWRkZWQgYXQgYQo+ID4+IHdlbGwta25vd24KPiA+PiA+IEBAIC00OTUsOSArNTM1LDggQEAg c3RhdGljIHZvaWQgZ3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPj4gc3Ry dWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3KQo+ID4+ID4gICAgICAgICogVFdPIGJ5dGVzIGVhY2gg KGkuZS4gdTE2KSwgYWx0aG91Z2ggYWxsIHBvaW50ZXJzIGFuZAo+ID4+IG9mZnNldHMgYXJlIGRl ZmluZWQKPiA+PiA+ICAgICAgICAqIGluIHRlcm1zIG9mIGJ5dGVzICh1OCkuCj4gPj4gPiAgICAg ICAgKi8KPiA+PiA+IC0gICAgY3NzX2hlYWRlciA9IGZ3LT5kYXRhICsgVU9TX0NTU19IRUFERVJf T0ZGU0VUOwo+ID4+ID4gLSAgICBndWNfZnctPmd1Y19md19tYWpvcl9mb3VuZCA9ICoodTE2ICop KGNzc19oZWFkZXIgKwo+ID4+IFVPU19WRVJfTUFKT1JfT0ZGU0VUKTsKPiA+PiA+IC0gICAgZ3Vj X2Z3LT5ndWNfZndfbWlub3JfZm91bmQgPSAqKHUxNiAqKShjc3NfaGVhZGVyICsKPiA+PiBVT1Nf VkVSX01JTk9SX09GRlNFVCk7Cj4gPj4gPiArICAgIGd1Y19mdy0+Z3VjX2Z3X21ham9yX2ZvdW5k ID0gY3NzX2hlYWRlci0+Z3VjX3N3X3ZlcnNpb24gPj4gMTY7Cj4gPj4gPiArICAgIGd1Y19mdy0+ Z3VjX2Z3X21pbm9yX2ZvdW5kID0gY3NzX2hlYWRlci0+Z3VjX3N3X3ZlcnNpb24gJiAweEZGRkY7 Cj4gPj4gPgo+ID4+ID4gICAgICAgaWYgKGd1Y19mdy0+Z3VjX2Z3X21ham9yX2ZvdW5kICE9IGd1 Y19mdy0+Z3VjX2Z3X21ham9yX3dhbnRlZCB8fAo+ID4+ID4gICAgICAgICAgIGd1Y19mdy0+Z3Vj X2Z3X21pbm9yX2ZvdW5kIDwgZ3VjX2Z3LT5ndWNfZndfbWlub3Jfd2FudGVkKSB7Cj4gPj4gPgo+ ID4+Cj4gPj4gV2UgbmVlZCB0byB2YWxpZGF0ZSBlYWNoIG9mIHRoZSBzaXplcyByZWFkIGZyb20g dGhlIGJpbmFyeSBibG9iIGJlZm9yZQo+ID4+IHVzaW5nIHRoZW0gaW4gY2FsY3VsYXRpb25zLCBh bmQgd2UgdGhlbiBhbHNvIG5lZWQgdG8gdmFsaWRhdGUgdGhlCj4gPj4gcmVzdWx0cyBvZiB0aGUg Y2FsY3VsYXRpb25zLCB0byBwcmV2ZW50IGFueW9uZSBzcG9vZmluZyB0aGUgbG9hZGVyIGludG8K PiA+PiB3cml0aW5nIHdoZXJlIGl0IHNob3VsZG4ndC4KPiA+Pgo+ID4+IEluIHBhcnRpY3VsYXIs IHdlIG5lZWQgdG8gY2hlY2s6Cj4gPj4KPiA+PiAgICAgZnctPnNpemUgICAgICAgICAgICA+PSBz aXplb2Yoc3RydWN0IGd1Y19jc3NfaGVhZGVyKQo+ID4+ICAgICBjc3NfaGVhZGVyLT5zaXplICgq NCkgICAgICAgIDw9IGZ3LT5zaXplCj4gPj4gICAgIGNzc19oZWFkZXItPmhlYWRlcl9sZW4gICAg ICAgIDw9IGNzc19oZWFkZXItPnNpemUKPiA+PiAgICAgPT4gKHVDb2RlX3NpemUgPSBjc3NfaGVh ZGVyLT5zaXplIC0gY3NzX2hlYWRlcl9sZW4pID49IDAKPiA+PiAgICAgY3NzX2hlYWRlci0+a2V5 X3NpemUgKCo0KSAgICA8PSBIV19TSUdfU0laRSAoMHgxMDApCj4gPj4gICAgIGNzc19oZWFkZXIt PmtleV9zaXplICAgICAgICA8PSBjc3NfaGVhZGVyLT5oZWFkZXJfbGVuCj4gPj4gICAgIGNzc19o ZWFkZXItPm1vZHVsdXNfc2l6ZSAgICA8PSBjc3NfaGVhZGVyLT5oZWFkZXJfbGVuCj4gPj4gICAg IGNzc19oZWFkZXItPmV4cG9uZW50X3NpemUgICAgPD0gY3NzX2hlYWRlci0+aGVhZGVyX2xlbgo+ ID4+ICAgICBjc3NfaGVhZGVyLT5oZWFkZXJfbGVuICAgICAgICA+PSBjc3NfaGVhZGVyLT5rZXlf c2l6ZSArCj4gPj4gICAgICAgICAgICAgICAgICAgICAgICBjc3NfaGVhZGVyLT5tb2R1bHVzX3Np emUgKwo+ID4+ICAgICAgICAgICAgICAgICAgICAgICAgY3NzX2hlYWRlci0+ZXhwb25lbnRfc2l6 ZTsKPiA+PiAgICAgPT4gKGNzc19oZWFkZXJfc2l6ZSA9IGNzc19oZWFkZXItPmhlYWRlcl9sZW4K PiA+PiAgICAgICAgICAgICAgICAgLSBjc3NfaGVhZGVyLT5rZXlfc2l6ZQo+ID4+ICAgICAgICAg ICAgICAgICAtIGNzc19oZWFkZXItPm1vZHVsdXNfc2l6ZQo+ID4+ICAgICAgICAgICAgICAgICAt IGNzc19oZWFkZXItPmV4cG9uZW50X3NpemUpID49IDAKPiA+PiAgICAgY3NzX2hlYWRlcl9zaXpl ICsgdUNvZGVfc2l6ZSAgICA9PSAwIG1vZCBjYWNoZWxpbmVzaXplCj4gPj4KPiA+PiAoU2luY2Ug YWxsIHRoZXNlIHNpemVzIGFyZSB1bnNpZ25lZCwgd2UgY2FuJ3QgKGFuZCBkb24ndCBuZWVkIHRv KSBjaGVjawo+ID4+IGZvciBuZWdhdGl2ZSByZXN1bHRzIGZyb20gdGhlIHN1YnRyYWN0aW9ucywg YnV0IHdlIGNhbiBjaGVjayB0aGF0IGVhY2gKPiA+PiB2YWx1ZSB0aGF0J3MgZGVmaW5lZCBhcyBp bmNsdWRpbmcgdGhlIHN1bSBvZiBvdGhlciB2YWx1ZXMgaXMgYWN0dWFsbHkKPiA+PiBsYXJnZSBl bm91Z2ggc28gdGhhdCB0aGUgc3VidHJhY3Rpb25zIGdpdmUgbWVhbmluZ2Z1bCByZXN1bHRzKS4K PiA+Pgo+ID4+IFNvbWUgb2YgdGhlc2UgY2hlY2tzIGFyZSBhbHJlYWR5IHRoZXJlLCBidXQgSSB0 aGluayB3ZSBzaG91bGQgY29tcGxldGUKPiA+PiBhbGwgb2YgdGhlbSB0byBjYXRjaCBhbnkgb3Ro ZXIgaW52YWxpZCBjb21iaW5hdGlvbnMgb2YgdmFsdWVzLiBBbmQgdGhlbgo+ID4+IHNhdmUgdGhl IGNvbXB1dGVkIHN0YXJ0L3NpemUgdmFsdWVzIHNvIHRoZSBETUEgY29kZSBjYW4ganVzdCByZXRy aWV2ZQo+ID4+IHRoZSBwcmVjYWxjdWxhdGVkIHZhbHVlcy4KPiA+Cj4gPiBJIG9ubHkgYWdyZWUg d2l0aCBjaGVjayBiZXR3ZWVuIGhlYWRlciBzaXplIGFuZCBmdyBzaXplLiBUaGlzIGFsbG93cwo+ ID4gZHJpdmVyIGtlZXBzIGdvaW5nIHdpdGhvdXQgYnVnIGNoZWNrLiBBbGwgb3RoZXJzIGJldHdl ZW4gbWVtYmVycyB3aXRoaW4KPiA+IGNzc19oZWFkZXIgYXJlIG5vdCBuZWVkZWQuIFRoZSByZWFz b24gaXMgc2ltcGxlLiBJZiB5b3UgdHJ1c3QgY29udGVudCBvZgo+ID4gY3NzX2hlYWRlciwgdGhl biB5b3UgZG9uJ3QgbmVlZCB0byB2YWxpZGF0ZSB0aGVtLiBJZiB5b3UgZG9uJ3QgdHJ1c3QgaXQs Cj4gPiBubyBuZWVkIHRvIGNoZWNrIGl0IGFueXdheS4gQWdhaW4sIGFzIGxvbmcgYXMgd2UgaGF2 ZSBlbm91Z2ggYml0cyB0bwo+ID4gbG9hZCB0byBIVywgd2Ugd2lsbCBsZXQgaXQgZ28uCj4gPgo+ ID4gVGhhbmtzLAo+ID4gQWxleAo+Cj4gV2UgY2FuJ3QgdHJ1c3QgdGhlIENTUyBoZWFkZXIgKnVu bGVzcyogd2UgdmFsaWRhdGUgaXQsIGluIHRoZSBzZW5zZSBvZgo+IGVuc3VyaW5nIHRoYXQgYmFk IHZhbHVlcyBpbiBpdCB3b24ndCBjYXVzZSB0aGUgZHJpdmVyIHRvIGRvIGFueXRoaW5nIGl0Cj4g c2hvdWxkbid0IChlLmcuIG91dCBvZiByYW5nZSBhY2Nlc3NlcykuIEZvciBleGFtcGxlLCB3aGF0 IGhhcHBlbnMgaWYgSQo+IHNldCBoZWFkZXJfbGVuIHRvIDB4MTAwIGFuZCBtb2R1bHVzX3NpemUg dG8gMHhmZmZmZmUwMD8KPgoKV2Ugd2lsbCB1c2Ugd2hhdGV2ZXIgcHJvdmlkZWQgZnJvbSBoZWFk ZXIgdG8gY2FsY3VsYXRlIHVDb2RlIHNpemUgYW5kIApSU0Egb2Zmc2V0IGV0Yy4gSWYgYWxsIG9m IHRoZW0gYXJlIHdpdGhpbiB0aGUgYmluIGZpbGUgcmFuZ2UsIHdlIHdpbGwgCmxvYWQgaXQuIE90 aGVyd2lzZSwgcmVqZWN0IGl0IHRvIGF2b2lkIFNXIG1lbW9yeSBhY2Nlc3MgdmlvbGF0aW9uLiBU aGlzIAppcyBhbHJlYWR5IGltcGxlbWVudGVkLiBNeSBwb2ludCBpczogaWYgd2UgY2FuJ3QgdHJ1 c3QgdGhlIENTUyBoZWFkZXIsIAp0aGVuIHRoZSBjaGVjayBzdWNoIGFzIChjc3NfaGVhZGVyLkEg Pj0gY3NzX2hlYWRlci5CIC0gY3NzX2hlYWRlci5DKSAKaXRzZWxmIGlzIGluc2lnbmlmaWNhbnQu IFllcywgaGVhZGVyIGRhdGEgbWlnaHQgYmUgY29ycnVwdGVkLiBIVyB3aWxsIAp2ZXJpZnkgaXQg YXMgcGFydCBvZiBSU0Ega2V5IGF1dGhlbnRpY2F0aW9uIGFueXdheS4KCi1BbGV4CgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK