From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [PATCH v15] This is the ABI for the two halves of a para-virtualized sound driver to communicate with each to other. Date: Tue, 24 Jan 2017 14:13:52 -0500 Message-ID: <20170124191352.GA20813@char.us.oracle.com> References: <1480943129-20524-1-git-send-email-andr2000@gmail.com> <1480943129-20524-2-git-send-email-andr2000@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1480943129-20524-2-git-send-email-andr2000@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Oleksandr Andrushchenko Cc: lars.kurth@citrix.com, iurii.konovalenko@globallogic.com, vlad.babchuk@gmail.com, ian.jackson@eu.citrix.com, dario.faggioli@citrix.com, tim@xen.org, julien.grall@arm.com, andrii.anisov@gmail.com, olekstysh@gmail.com, embedded-pv-devel@lists.xenproject.org, al1img@gmail.com, david.vrabel@citrix.com, JBeulich@suse.com, xen-devel@lists.xenproject.org, oleksandr.dmytryshyn@globallogic.com, joculator@gmail.com List-Id: xen-devel@lists.xenproject.org T24gTW9uLCBEZWMgMDUsIDIwMTYgYXQgMDM6MDU6MjlQTSArMDIwMCwgT2xla3NhbmRyIEFuZHJ1 c2hjaGVua28gd3JvdGU6Cj4gRnJvbTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPE9sZWtzYW5k cl9BbmRydXNoY2hlbmtvQGVwYW0uY29tPgoKVXN1YWxseSBvbmUgYWxzbyBwdXRzIHNvbWV0aGln biBpbiB0aGUgY29tbWl0IGRlc2NyaXB0aW9uLgoKV2hlbiBJIGFwcGxpZWQgdGhpcyB0byBtZSB0 cmVlIEkgZ290OgoKW2tvbnJhZEBjaGFyIHhlbl0kIGdpdCBsb2cgLS1vbmVsaW5lIEhFQUReLi4K ZWNjNzcxMSBUaGlzIGlzIHRoZSBBQkkgZm9yIHRoZSB0d28gaGFsdmVzIG9mIGEgcGFyYS12aXJ0 dWFsaXplZCBzb3VuZCBkcml2ZXIgdG8gY29tbXVuaWNhdGUgd2l0aCBlYWNoIHRvIG90aGVyLgpb a29ucmFkQGNoYXIgeGVuXSQgCgpBbHNvLCB0aGFuayB5b3UgZm9yIHRoZSBpbmNsdWRpbmcgdGhl IHBhaG9sZSBvdXRwdXQhCgo+IAo+IFNpZ25lZC1vZmYtYnk6IE9sZWtzYW5kciBBbmRydXNoY2hl bmtvIDxPbGVrc2FuZHJfQW5kcnVzaGNoZW5rb0BlcGFtLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBP bGVrc2FuZHIgR3J5dHNvdiA8T2xla3NhbmRyX0dyeXRzb3ZAZXBhbS5jb20+Cj4gU2lnbmVkLW9m Zi1ieTogT2xla3NhbmRyIERteXRyeXNoeW4gPG9sZWtzYW5kci5kbXl0cnlzaHluQGdsb2JhbGxv Z2ljLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBJdXJpaSBLb25vdmFsZW5rbyA8aXVyaWkua29ub3Zh bGVua29AZ2xvYmFsbG9naWMuY29tPgo+IAo+IC0tLQo+IENoYW5nZXMgc2luY2UgdjE6Cj4gICog cmVtb3ZlZCBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSkgZnJvbSBhbGwgc3RydWN0dXJlcyBk ZWZpbml0aW9ucwo+IAo+IENoYW5nZXMgc2luY2UgdjI6Cj4gICogcmVtb3ZlZCBhbGwgQyBzdHJ1 Y3R1cmVzCj4gICogYWRkZWQgcHJvdG9jb2wgZGVzY3JpcHRpb24gYmV0d2VlbiBmcm9udGVuZCBh bmQgYmFja2VuZCBkcml2ZXJzCj4gCj4gQ2hhbmdlcyBzaW5jZSB2MzoKPiAgKiBmaXhlZCBzb21l IHR5cG9zCj4gICogcmVuYW1lZCBYRU5TTkRfUENNX0ZPUk1BVF9GTE9BVF8qKiB0byBYRU5TTkRf UENNX0ZPUk1BVF9GMzJfKioKPiAgKiByZW5hbWVkIFhFTlNORF9QQ01fRk9STUFUX0ZMT0FUNjRf KiogdG8gWEVOU05EX1BDTV9GT1JNQVRfRjY0XyoqCj4gICogYWRkZWQgJ2lkJyBmaWVsZCB0byB0 aGUgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcGFja2V0cwo+ICAqIHJlbmFtZWQgJ3N0cmVhbV9pZCcg dG8gJ3N0cmVhbScgaW4gdGhlIHBhY2tldHMgZGVzY3JpcHRpb24KPiAgKiByZW5hbWVkICdwY21f ZGF0YV9yYXRlJyB0byAncGNtX3JhdGUnIGluIHRoZSBwYWNrZXRzIGRlc2NyaXB0aW9uCj4gICog cmVuYW1lZCAncGNtX3N0cmVhbV90eXBlJyB0byAncGNtX3R5cGUnIGluIHRoZSBwYWNrZXRzIGRl c2NyaXB0aW9uCj4gICogcmVtb3ZlZCAnc3RyZWFtX2lkJyBmaWVsZCBmcm9tIHRoZSByZXNwb25z ZSBwYWNrZXRzCj4gCj4gQ2hhbmdlcyBzaW5jZSB2NDoKPiAgKiByZW5hbWVkICdzdHJlYW1faWQn IGJhY2sgdG8gdGhlIHRvICdzdHJlYW0nIGluIHRoZSBwYWNrZXRzIGRlc2NyaXB0aW9uCj4gICog bW92ZWQgJ2lkJyBmaWVsZCB0byB0aGUgdXBwZXIgcG9zaXRpb24gaW4gdGhlIHJlc3BvbnNlIHBh Y2tldHMKPiAKPiBDaGFuZ2VzIHNpbmNlIHY1Ogo+ICAqIFNsaWdodGx5IHJld29ya2VkIHJlcXVl c3QvcmVzcG9uc2UgcGFja2V0cwo+ICAqIFNpemUgb2YgdGhlIHJlcXVlc3QvcmVzcG9uc2UgcGFj a2V0IGlzIGNoYW5nZWQgdG8gdGhlIDY0IGJ5dGVzCj4gICogTm93IHBhcmFtZXRlcnMgZm9yIHRo ZSBYRU5TTkRfT1BfU0VUX1ZPTFVNRS9YRU5TTkRfT1BfR0VUX1ZPTFVNRSBhcmUKPiAgICBwYXNz ZWQgdmlhIHNoYXJlZCBwYWdlCj4gICogQWRkZWQgcGFyYW1ldGVycyBmb3IgdGhlIFhlbkJ1cyBu b2RlcyAobm93IGVhY2ggc3RyZWFtIGNhbiBiZSBtYXBwZWQKPiAgICB0byB0aGUgZGVmaW5lZCBz b3VuZCBkZXZpY2UgaW4gdGhlIGJhY2tlbmQgdXNpbmcgdGhvc2UgcGFyYW1ldGVycykKPiAgKiBB ZGRlZCBYZW5CdXMgc3RhdGUgZGlhZ3JhbXMgZGVzY3JpcHRpb24KPiAKPiBDaGFuZ2VzIHNpbmNl IHY2Ogo+ICAqIFJld29ya2VkIHN0cmVhbXMgZGVzY3JpcHRpb24gIGluIHRoZSBCYWNrZW5kIFhl bkJ1cyBOb2Rlcwo+IAo+IENoYW5nZXMgc2luY2Ugdjc6Cj4gICogcmUtd29ya2VkIGJhY2tlbmQg ZGV2aWNlIHBhcmFtZXRlcnMgdG8gYmUgbW9yZSBnZW5lcmljIGFuZCBmbGV4aWJsZQo+ICAqIGV4 dGVuZGVkIGZyb250ZW5kIGRldmljZSBwYXJhbWV0ZXJzCj4gICogc2xpZ2h0bHkgdXBkYXRlZCBz dGF0ZSBtYWNoaW5lIGRlc2NyaXB0aW9uIGFkZGVkIG11dGUvdW5tdXRlIGNvbW1hbmRzCj4gICog YWRkZWQgY29uc3RhbnRzIGZvciBYZW5TdG9yZSBjb25maWd1cmF0aW9uIHN0cmluZ3MKPiAgICAo ZmllbGRzLCBQQ00gZm9ybWF0cyBldGMuKQo+ICAqIGNoYW5nZWQgcmVxdWVzdC9yZXNwb25zZSBz dHJ1Y3R1cmUgc2l6ZSBmcm9tIDY0IG9jdGV0cyB0byAxNgo+ICAqIGludHJvZHVjZWQgZHluYW1p YyBidWZmZXIgYWxsb2NhdGlvbiBpbnN0ZWFkIG9mCj4gICAgc3RhdGljIFhFTlNORF9NQVhfUEFH RVNfUEVSX1JFUVVFU1QKPiAgKiByZS13b3JrZWQgb3BlbiByZXF1ZXN0IHRvIGFsbG93IGR5bmFt aWMgYnVmZmVyIGFsbG9jYXRpb24KPiAgKiByZS13b3JrZWQgcmVhZC93cml0ZS92b2x1bWUgcmVx dWVzdHMsIHNvIHRoZXkgZG9uJ3QgcGFzcyBncmVmczoKPiAgICBidWZmZXIgZnJvbSB0aGUgb3Bl biByZXF1ZXN0IGlzIHVzZWQgZm9yIHRoZXNlIG9wZXJhdGlvbnMgdG8gcGFzcyBkYXRhCj4gICog c3BlY2lmaWVkIHR5cGUgb2YgdGhlIHZvbHVtZSB2YWx1ZSB0byBiZSBhIHNpZ25lZCB2YWx1ZSBp biBzdGVwcwo+ICAgIG9mIDAuMDAxIGRCbSwgd2hpbGUgMCBiZWluZyAwZEJtLgo+ICAqIGFkZGVk IExpbnV4IGluY2x1ZGUgZmlsZSB3aXRoIHN0cnVjdHVyZSBkZWZpbml0aW9ucwo+IAo+IENoYW5n ZXMgc2luY2Ugdjg6Cj4gICogY2hhbmdlZCBmcm9udGVuZC1pZCB0byBmcm9udGVuZF9pZAo+ICAq IHNpbmdsZSBzb3VuZCBjYXJkIHN1cHBvcnQsIGNvbmZpZ3VyZWQgd2l0aCBidW5jaCBvZgo+ICAg IGRldmljZXMvc3RyZWFtcwo+ICAqIGNsYXJpZnVjYXRpb24gbWFkZSBvbiBzYW1wbGUgcmF0ZXMg YW5kIGZvcm1hdHMgZXhwcmVzc2VkIGFzCj4gICAgZGVjaW1hbHMgdy9vIGFueSBwYXJ0aWN1bGFy IG9yZGVyaW5nCj4gICogcHV0IGRlc2NyaXB0aW9uIG9mIG1pZ3JhdGlvbi9kaXNjb25uZWN0aW9u IHN0YXRlCj4gICogcmVwbGFjZWQgX19hdHRyaWJ1dGVfXygocGFja2VkKSkgdG8gX19wYWNrZWQK PiAgKiBjaGFuZ2VkIHBhZGRpbmcgb2YgcmluZyBzdHJ1Y3R1cmVzIHRvIDY0IHRvIGZpdCBjYWNo ZSBsaW5lCj4gICogcmVtb3ZlZWQgI2lmZGVmIF9fS0VSTkVMCj4gICogZXhwbGljaXRseSBzdGF0 ZWQgd2hpY2ggaW5kaWNlcyBpbiBYZW5TdG9yZSBjb25maWd1cmF0aW9uCj4gICAgYXJlIGNvbnRp Z3VvdXMKPiAgKiBhZGRlZCBkZXNjcmlwdGlvbiB0byB3aGF0IGZyb250ZW5kJ3MgZGVmYXVsdHMg YXJlCj4gICogbWFkZSBuYW1lcyBvZiB2aXJ0dWFsIGNhcmQvZGV2aWNlcyBvcHRpb25hbAo+ICAq IHJlbW92ZWQgUENNX0ZPUk1BVF9TUEVDSUFMCj4gICogY2hhbmdlZCB2b2x1bWUgdW5pdHMgZnJv bSBkQm0gdG8gZEIKPiAKPiBDaGFuZ2VzIHNpbmNlIHY5Ogo+ICAqIHJlbW92ZWQgc25kaWZfbGlu dXguaAo+ICAqIG1vdmVkIGFsbCBzdHJ1Y3R1cmVzIGZyb20gc25kaWZfbGludXguaCB0byBzbmRp Zi5oCj4gICogc3RydWN0dXJlcyBwYWRkZWQgd2hlcmUgbmVlZGVkCj4gICogZml4ZWQgSHogY29t bWVudAo+IAo+IENoYW5nZXMgc2luY2UgdjEwOgo+ICAqIGZpeGVkIHRhYnMgdG8gNCBzcGFjZXMg dG8gY29tcGx5IHdpdGggWGVuIGNvZGluZyBzdHlsZQo+ICAqIGFkZGVkIHBsYWNlaG9sZGVycyB0 byBlbXB0eSBzdHJ1Y3R1cmVzIChDODkgY29uY2VybikKPiAgKiBhZGRlZCBtaXNzaW5nIGhlYWRl ciBpbmNsdWRlcwo+IAo+IENoYW5nZXMgc2luY2UgdjExOgo+ICAqIGFkZGVkIFhFTlNORF9SU1Bf Tk9UU1VQUCBlcnJvciBjb2RlCj4gICogY2hhbmdlZCBncmVmWzBdIHRvIGdyZWZbMV0gd2l0aCBj b21tZW50Cj4gICogbW9kaWZpZWQgY29tbWVudHMgb24gZW1wdHkgc3RydWN0dXJlcwo+ICAqIHJl bW92ZWQgIl9fIiBmcm9tIG1lbWJlciBuYW1lcwo+ICAqIGZpeGVkIGluZGVudGF0aW9uCj4gICog YWRkZWQgcGFkZGluZyBpbiB1bmlvbiB4ZW5zbmRfcmVzcAo+ICAqIGNoYW5nZWQgX19YRU5fUFVC TElDX0lPX1hFTlNORF9IX18gdG8gX19YRU5fUFVCTElDX0lPX1NORElGX0hfXwo+IAo+IENoYW5n ZXMgc2luY2UgdjEyOgo+ICAqIGNoYW5nZWQgaW5kZW50YXRpb24gZm9yIGRlZmluZXMKPiAgKiBt aXNzZWQgIjsiIGFmdGVyIGdyZWZbMV0KPiAgKiBkb2N1bWVudGF0aW9uIGNoYW5nZXMKPiAgKiBj aGFuZ2VkIHJlcS9yZXNwIHN0cnVjdHVyZXMKPiAgKiBjaGFuZ2VkIHhlbnNuZF9wYWdlX2RpcmVj dG9yeSBzdHJ1Y3R1cmUKPiAgKiBwYXNzIGJ1ZmZlciBzaXplIGluIG9wZW4gcmVxdWVzdAo+IAo+ IENoYW5nZXMgc2luY2UgdjEzOgo+ICAqIG5vdGUgb24gdXNhZ2Ugb2YgZ3JhbnQgcmVmIDAKPiAg KiBhbGwgcGFnZSBzaXplcyBhcmUgWEVOX1BBR0VfU0laRQo+ICAqIHBhZGRpbmcvcmVzZXJ2ZWQg Y2xlYW51cC9maXhlcwo+ICAqIHJlbW92ZWQgZW1wdHkgc3RydWN0dXJlcwo+IAo+IENoYW5nZXMg c2luY2UgdjE0Ogo+ICAqIHR1cm4gcGFkZGluZyBpbnRvIHJlc2VydmVkCj4gLS0tCj4gLS0tCj4g IHhlbi9pbmNsdWRlL3B1YmxpYy9pby9zbmRpZi5oIHwgNjcxICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwo+ICAxIGZpbGUgY2hhbmdlZCwgNjcxIGluc2VydGlvbnMo KykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL3B1YmxpYy9pby9zbmRpZi5oCj4g Cj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9pby9zbmRpZi5oIGIveGVuL2luY2x1 ZGUvcHVibGljL2lvL3NuZGlmLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAw MDAuLjYwYTZkODgKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIveGVuL2luY2x1ZGUvcHVibGljL2lv L3NuZGlmLmgKPiBAQCAtMCwwICsxLDY3MSBAQAo+ICsvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4g KyAqIHNuZGlmLmgKPiArICoKPiArICogVW5pZmllZCBzb3VuZC1kZXZpY2UgSS9PIGludGVyZmFj ZSBmb3IgWGVuIGd1ZXN0IE9TZXMuCj4gKyAqCj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdy YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKPiAr ICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0 aGUgIlNvZnR3YXJlIiksIHRvCj4gKyAqIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVz dHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCj4gKyAqIHJpZ2h0cyB0 byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vu c2UsIGFuZC9vcgo+ICsgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJt aXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwo+ICsgKiBmdXJuaXNoZWQgdG8gZG8g c28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ICsgKgo+ICsgKiBUaGUg YWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBi ZSBpbmNsdWRlZCBpbgo+ICsgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9m IHRoZSBTb2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJ UyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiArICogSU1QTElF RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO VEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05J TkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQo+ICsgKiBBVVRIT1JTIE9SIENPUFlS SUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4g KyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Ig T1RIRVJXSVNFLCBBUklTSU5HCj4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJ VEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKPiArICogREVBTElOR1MgSU4gVEhF IFNPRlRXQVJFLgo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBHbG9iYWxMb2dp YyBJbmMuCj4gKyAqIENvcHlyaWdodCAoQykgMjAxNiBFUEFNIFN5c3RlbXMgSW5jLgo+ICsgKgo+ ICsgKiBBdXRob3JzOiBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyA8T2xla3NhbmRyX0FuZHJ1c2hj aGVua29AZXBhbS5jb20+Cj4gKyAqICAgICAgICAgIE9sZWtzYW5kciBHcnl0c292IDxPbGVrc2Fu ZHJfR3J5dHNvdkBlcGFtLmNvbT4KPiArICogICAgICAgICAgT2xla3NhbmRyIERteXRyeXNoeW4g PG9sZWtzYW5kci5kbXl0cnlzaHluQGdsb2JhbGxvZ2ljLmNvbT4KPiArICogICAgICAgICAgSXVy aWkgS29ub3ZhbGVua28gPGl1cmlpLmtvbm92YWxlbmtvQGdsb2JhbGxvZ2ljLmNvbT4KPiArICov Cj4gKwo+ICsjaWZuZGVmIF9fWEVOX1BVQkxJQ19JT19TTkRJRl9IX18KPiArI2RlZmluZSBfX1hF Tl9QVUJMSUNfSU9fU05ESUZfSF9fCj4gKwo+ICsjaW5jbHVkZSAicmluZy5oIgo+ICsjaW5jbHVk ZSAiLi4vZ3JhbnRfdGFibGUuaCIKPiArCj4gKy8qCj4gKyAqIEZyb250LT5iYWNrIG5vdGlmaWNh dGlvbnM6IFdoZW4gZW5xdWV1aW5nIGEgbmV3IHJlcXVlc3QsIHNlbmRpbmcgYQo+ICsgKiBub3Rp ZmljYXRpb24gY2FuIGJlIG1hZGUgY29uZGl0aW9uYWwgb24gcmVxX2V2ZW50IChpLmUuLCB0aGUg Z2VuZXJpYwo+ICsgKiBob2xkLW9mZiBtZWNoYW5pc20gcHJvdmlkZWQgYnkgdGhlIHJpbmcgbWFj cm9zKS4gQmFja2VuZHMgbXVzdCBzZXQKPiArICogcmVxX2V2ZW50IGFwcHJvcHJpYXRlbHkgKGUu Zy4sIHVzaW5nIFJJTkdfRklOQUxfQ0hFQ0tfRk9SX1JFUVVFU1RTKCkpLgo+ICsgKgo+ICsgKiBC YWNrLT5mcm9udCBub3RpZmljYXRpb25zOiBXaGVuIGVucXVldWluZyBhIG5ldyByZXNwb25zZSwg c2VuZGluZyBhCj4gKyAqIG5vdGlmaWNhdGlvbiBjYW4gYmUgbWFkZSBjb25kaXRpb25hbCBvbiBy c3BfZXZlbnQgKGkuZS4sIHRoZSBnZW5lcmljCj4gKyAqIGhvbGQtb2ZmIG1lY2hhbmlzbSBwcm92 aWRlZCBieSB0aGUgcmluZyBtYWNyb3MpLiBGcm9udGVuZHMgbXVzdCBzZXQKPiArICogcnNwX2V2 ZW50IGFwcHJvcHJpYXRlbHkgKGUuZy4sIHVzaW5nIFJJTkdfRklOQUxfQ0hFQ0tfRk9SX1JFU1BP TlNFUygpKS4KPiArICovCj4gKwo+ICsvKgo+ICsgKiBGZWF0dXJlIGFuZCBQYXJhbWV0ZXIgTmVn b3RpYXRpb24KPiArICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj4gKyAqIFRo ZSB0d28gaGFsdmVzIG9mIGEgUGFyYS12aXJ0dWFsIHNvdW5kIGNhcmQgZHJpdmVyIHV0aWxpemUg bm9kZXMgd2l0aGluIHRoZQo+ICsgKiBYZW5TdG9yZSB0byBjb21tdW5pY2F0ZSBjYXBhYmlsaXRp ZXMgYW5kIHRvIG5lZ290aWF0ZSBvcGVyYXRpbmcgcGFyYW1ldGVycy4KPiArICogVGhpcyBzZWN0 aW9uIGVudW1lcmF0ZXMgdGhlc2Ugbm9kZXMgd2hpY2ggcmVzaWRlIGluIHRoZSByZXNwZWN0aXZl IGZyb250IGFuZAo+ICsgKiBiYWNrZW5kIHBvcnRpb25zIG9mIHRoZSBYZW5TdG9yZSwgZm9sbG93 aW5nIHRoZSBYZW5CdXMgY29udmVudGlvbi4KPiArICoKPiArICogQWxsIGRhdGEgaW4gdGhlIFhl blN0b3JlIGlzIHN0b3JlZCBhcyBzdHJpbmdzLiAgTm9kZXMgc3BlY2lmeWluZyBudW1lcmljCj4g KyAqIHZhbHVlcyBhcmUgZW5jb2RlZCBpbiBkZWNpbWFsLiAgSW50ZWdlciB2YWx1ZSByYW5nZXMg bGlzdGVkIGJlbG93IGFyZQo+ICsgKiBleHByZXNzZWQgYXMgZml4ZWQgc2l6ZWQgaW50ZWdlciB0 eXBlcyBjYXBhYmxlIG9mIHN0b3JpbmcgdGhlIGNvbnZlcnNpb24KPiArICogb2YgYSBwcm9wZXJs eSBmb3JtYXRlZCBub2RlIHN0cmluZywgd2l0aG91dCBsb3NzIG9mIGluZm9ybWF0aW9uLgo+ICsg Kgo+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKPiArICogICAgICAgICAgICAgICAgICAgICAgICAg ICAgQmFja2VuZCBYZW5CdXMgTm9kZXMKPiArICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gKyAqCj4g KyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQWRkcmVzc2luZyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiArICoKPiArICogSW5kaWNlcyB1c2VkIHRvIGFkZHJl c3MgZnJvbnRlbmRzLCBkcml2ZXIgaW5zdGFuY2VzLCBjYXJkcywKPiArICogZGV2aWNlcyBhbmQg c3RyZWFtcy4KPiArICoKPiArICogZnJvbnRlbmRfaWQKClRoZSByZXN0IG9mIHRoZSBkcml2ZXJz IHVzZSAtIGluc3RlYWQgb2YgXy4KCklzIHRoZXJlIGEgcGFydGljdWxhciByZWFzb24geW91IG5l ZWQgdG8gaGF2ZSBfID8KClNlZSB2c2NzaWlmLmggYW5kIGNvbnNvbGUgYW5kIHZrYmQuIEFjdHVh bGx5IHRoZSBsYXN0IG9uZXMKZG9uJ3QgbWVudGlvbiBpdCBpbiB0aGUgaGVhZGVyIGJ1dCB0aGUg bGlieGwgY29uc3RydWN0cyB0aGVzZS4KCj4gKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50 PgoKdWludDMyX3QKPiArICoKPiArICogICAgICBEb21haW4gSUQgb2YgdGhlIHNvdW5kIGZyb250 ZW5kLgo+ICsgKgo+ICsgKiBkcnZfaWR4CgpBZ2FpbiwgY2FuIHRoaXMgYmUgLSA/Cj4gKyAqICAg ICAgVmFsdWVzOiAgICAgICAgIDx1aW50PgoKdWludDMyX3QKPiArICoKPiArICogICAgICBaZXJv IGJhc2VkIGNvbnRpZ3VvdXMgaW5kZXggb2YgdGhlIHZpcnR1YWxpemVkIHNvdW5kIGRyaXZlciBp bnN0YW5jZSBpbgo+ICsgKiAgICAgIHRoaXMgZG9tYWluLiBNdWx0aXBsZSBQViBkcml2ZXJzIGFy ZSBhbGxvd2VkIGluIHRoZSBkb21haW4KPiArICogICAgICBhdCB0aGUgc2FtZSB0aW1lLgoKVGhp cyBpcyBub3QgbmVlZGVkLgoKV2UgYWxyZWFkeSBoYXZlIHRoaXMgaW5mb3JtYXRpb24gaW4gdGhl IFhlblN0b3JlIGRpcmVjdG9yeToKCi9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZzbmQvMi8wL2Zy b250ZW5kLWlkID0gMgovbG9jYWwvZG9tYWluLzAvYmFja2VuZC92c25kLzIvMS9mcm9udGVuZC1p ZCA9IDIKLi4KL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdnNuZC8yL04vZnJvbnRlbmQtaWQgPSAy Cgood2hpY2ggd291bGQgYmUgc2ltaWxhciB0byB3aGF0ICd2YmQnLCAnY29uc29sZScgYW5kICd2 aWYnIGRvKS4KCj4gKyAqCj4gKyAqIGRldl9pZAoKcy9fLy0vCj4gKyAqICAgICAgVmFsdWVzOiAg ICAgICAgIDx1aW50PgoKdWludF8zMnQKPiArICoKPiArICogICAgICBVbmlxdWUgZGV2aWNlIElE Lgo+ICsgKiAgICAgIERvZXNuJ3QgaGF2ZSB0byBiZSB6ZXJvIGJhc2VkIGFuZC9vciB0byBiZSBj b250aWd1b3VzLgoKSXMgdWludCBlbm91Z2g/IE9yIHdvdWxkIGl0IGJlIGJldHRlciB0byBoYXZl IGFuIDxzdHJpbmc+IGlmIHRoaXMgaXMKc29tZSBmb3JtIG9mIFNIQS0xIHZhbHVlPwoKPiArICoK PiArICogc3RyZWFtX2lkeAoKcy9fLy0vCj4gKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50 PgoKdWludF8zMnQKCltlZGl0LCBiYXNlZCBvbiB0aGUgc3RydWN0IHhlbnNuZF9yZXEgIHRoaXMg aGFzIHRvIGJlIHVpbnRfOHRdID8KCj4gKyAqCj4gKyAqICAgICAgWmVybyBiYXNlZCBjb250aWd1 b3VzIGluZGV4IG9mIHRoZSBzdHJlYW0gb2YgdGhlIGRldmljZS4KPiArICoKPiArICogRXhhbXBs ZSBmb3IgdGhlIGZyb250ZW5kIHJ1bm5pbmcgaW4gZG9tYWluIDUsIGluc3RhbmNlIG9mIHRoZSBk cml2ZXIKPiArICogaW4gdGhlIGZyb250IGlzIDAgKHNpbmdsZSBvciBmaXJzdCBQViBkcml2ZXIp LCBkZXZpY2UgaWQgMiwKPiArICogZmlyc3Qgc3RyZWFtICgwKToKPiArICogL2xvY2FsL2RvbWFp bi88ZnJvbnRlbmRfaWQ+L2RldmljZS92c25kLzxkcnZfaWR4Pi8KPiArICogICAgICAgICBkZXZp Y2UvPGRldl9pZD4vc3RyZWFtLzxzdHJlYW1faWR4Pi90eXBlID0gInAiCj4gKyAqIC9sb2NhbC9k b21haW4vNS9kZXZpY2UvdnNuZC8wL2RldmljZS8yL3N0cmVhbS8wL3R5cGUgPSAicCIKCldoeSBk byB5b3UgbmVlZCAnZGV2aWNlJyA/CgpDb3VsZCBub3QgdGhpcyBiZToKCi9sb2NhbC9kb21haW4v NS9kZXZpY2UvdnNuZC8wLzIvc3RyZWFtLzAvdHlwZSA9ICJwIiA/CgoKPiArICoKPiArICotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFBDTSBzZXR0aW5ncyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQo+ICsgKgo+ICsgKiBFdmVyeSB2aXJ0dWFsaXplZCBzb3VuZCBmcm9u dGVuZCBoYXMgc2V0IG9mIGRldmljZXMgYW5kIHN0cmVhbXMsIGVhY2gKCmZyb250ZW5kIG9yIGJh Y2tlbmQ/CgpJIHdvdWxkIHRoaW5rIGJhY2tlbmQgc2luY2UgdGhpcyBpcyBzdGlsbCB0aGUgYmFj a2VuZCBzZWN0aW9uPwoKPiArICogaXMgaW5kaXZpZHVhbGx5IGNvbmZpZ3VyZWQuIFBhcnQgb2Yg dGhlIFBDTSBjb25maWd1cmF0aW9uIGNhbiBiZSBkZWZpbmVkIGF0Cj4gKyAqIGhpZ2hlciBsZXZl bCBhbmQgYmUgZnVsbHkgb3IgcGFydGlhbGx5IHJlLXVzZWQgYnkgdGhlIHVuZGVybHlpbmcgbGF5 ZXJzLgo+ICsgKiBUaGVzZSBjb25maWd1cmF0aW9uIHZhbHVlcyBhcmU6Cj4gKyAqICBvIG51bWJl ciBvZiBjaGFubmVscyAobWluL21heCkKPiArICogIG8gc3VwcG9ydGVkIHNhbXBsZSByYXRlcwo+ ICsgKiAgbyBzdXBwb3J0ZWQgc2FtcGxlIGZvcm1hdHMuCj4gKyAqIEUuZy4gb25lIGNhbiBkZWZp bmUgdGhlc2UgdmFsdWVzIGZvciB0aGUgd2hvbGUgZHJpdmVyLCBkZXZpY2Ugb3Igc3RyZWFtLgo+ ICsgKiBFdmVyeSB1bmRlcmx5aW5nIGxheWVyIGluIHR1cm4gY2FuIHJlLWRlZmluZSBzb21lIG9y IGFsbCBvZiB0aGVtIHRvIGJldHRlcgo+ICsgKiBmaXQgaXRzIG5lZWRzLiBGb3IgZXhhbXBsZSwg ZHJpdmVyIG1heSBkZWZpbmUgbnVtYmVyIG9mIGNoYW5uZWxzIHRvIGJlCj4gKyAqIGluIFsxOyA4 XSByYW5nZSwgYW5kIHNvbWUgcGFydGljdWxhciBzdHJlYW0gbWF5IGJlIGxpbWl0ZWQgdG8gWzE7 IDJdIG9ubHkuCj4gKyAqIFRoZSBydWxlIGlzIHRoYXQgdGhlIHVuZGVybHlpbmcgbGF5ZXIgbXVz dCBiZSBhIHN1YnNldCBvZiB0aGUgdXBwZXIgbGF5ZXIKPiArICogcmFuZ2UuCgpPSywgc28gdGhl c2UgYXJlIG1vcmUgb2YgJ2dsb2JhbCBvbmVzJz8KCj4gKyAqCj4gKyAqIE5vdGU6IGlmIGFueSBv ZiB0aGUgdmFsdWVzIGFyZSBub3QgZGVmaW5lZCB0aGVuIFBWIGRyaXZlciBzaG91bGQgdXNlCj4g KyAqIGl0cyBkZWZhdWx0IHZhbHVlcyBpbnN0ZWFkLgoKCkhvdyBpcyB0aGF0IHN1cHBvc2UgdG8g d29yaz8gV2hhdCBpZiB0aGUgUFYgZHJpdmVyIGJ5IGRlZmF1bHQgd2FudHMKdG8gdXNlIHNheSAz MTQxNTYgY2hhbm5lbHMgYW5kIHRoZSBiYWNrZW5kIGRvZXMgbm90IGV4cG9zZSBhbnk/IENhbgpp dCB1c2UgdGhhdD8gSSBwcmVzdW1lIGl0IGNvdWxkIHRyeS4uIGFuZCBpdCB3b3VsZCBmYWlsIGJ1 dCB0aGF0CmhhcmRseSBzZWVtcyBuaWNlLgoKPiArICoKPiArICogY2hhbm5lbHMtbWluCj4gKyAq ICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50PgoKdWludDMyX3QKPiArICoKPiArICogICAgICBU aGUgbWluaW11bSBhbW91bnQgb2YgY2hhbm5lbHMgdGhhdCBpcyBzdXBwb3J0ZWQuCj4gKyAqICAg ICAgTXVzdCBiZSBhdCBsZWFzdCAxLiBJZiBub3QgZGVmaW5lZCB0aGVuIHVzZSBmcm9udGVuZCdz IGRlZmF1bHQuCgpUaGlzIGlzIG9kZC4gVGhpcyB3aG9sZSBzZWN0aW9uIGlzIGZvciB0aGUgYmFj a2VuZCwgc28gaG93IGNhbiB0aGUgYmFja2VuZApub3QgaGF2ZSB0aGlzIGRlZmluZWQ/CgpEbyB5 b3UgbWVhbiB0byBzYXkgdGhhdCB0aGlzIHBhcmFtZXRlciBpcyBvcHRpb25hbD8gUGVyaGFwcwp0 aGVuIHNheSByaWdodCBiZWZvcmUgJ1RoZSBtaW5pbXVtJyBpbmNsdWRlICcob3B0aW9uYWwpJwoK QW55aG93IHdoZXJlIGRvIHlvdSBlbnZpc2lvbiB0aGlzIG9wdGlvbmFsIGdsb2JhbCB2YWx1ZSB0 byBiZT8KCi9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZzbmQvNS9jaGFubmVscy1bbWlufG1heF0g PwoKUGVyaGFwcyBtZW50aW9uIHRoYXQgaW4gdGhlIHN0YXJ0IG9mIHRoaXMgc2VjdGlvbjoKClRo ZXNlIGdsb2JhbCB2YWx1ZXMgYXJlIHVuZGVyIHRoZSBiYWNrZW5kICd2c25kJyBkaXJlY3Rvcnks IGFzCnNvOgoKL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmRzL3ZzbmQvPGZyb250LWlkPi9jaGFubmVs cy1bbWlufG1heF0KClRob3VnaHQgSSB0aGluayB0aGVyZSBpcyBwcm9iYWJseSBhIGJldHRlciB3 YXkgdG8gCnNheSB0aGlzLi4KCj4gKyAqCj4gKyAqIGNoYW5uZWxzLW1heAo+ICsgKiAgICAgIFZh bHVlczogICAgICAgICA8dWludD4KCnVpbnQzMl90Cj4gKyAqCj4gKyAqICAgICAgVGhlIG1heGlt dW0gYW1vdW50IG9mIGNoYW5uZWxzIHRoYXQgaXMgc3VwcG9ydGVkLgo+ICsgKiAgICAgIE11c3Qg YmUgYXQgbGVhc3QgPGNoYW5uZWxzLW1pbj4uIElmIG5vdCBkZWZpbmVkIHRoZW4gdXNlIGZyb250 ZW5kJ3MKPiArICogICAgICBkZWZhdWx0LgoKSSBhbSBzdGlsbCBoYXZpbmcgdHJvdWJsZSB1bmRl cnN0YW5kaW5nIGhvdyB0aGUgYmFja2VuZCBpcyBzdXBwb3NlCnRvIHVzZSB0aGUgZnJvbnRlbmQn cyBkZWZhdWx0LgoKUGVyaGFwcyB5b3Ugd2FudCB0byBzYXk6CgpJZiB0aGlzIHZhbHVlIGlzIG5v dCBleHBvc2VkIGJ5IHRoZSBiYWNrZW5kIHRoZSBmcm9udGVuZAppcyBwZXJtaXR0ZWQgdG8gdXNl IGl0cyBkZWZhdWx0IHZhbHVlcy4KCj8KPiArICoKPiArICogc2FtcGxlLXJhdGVzCj4gKyAqICAg ICAgVmFsdWVzOiAgICAgICAgIDxsaXN0IG9mIHVpbnRzPgoKLi4gb2YgdWludDMyX3QKPiArICoK PiArICogICAgICBMaXN0IG9mIHN1cHBvcnRlZCBzYW1wbGUgcmF0ZXMgc2VwYXJhdGVkIGJ5IFhF TlNORF9MSVNUX1NFUEFSQVRPUi4KPiArICogICAgICBJZiBub3QgZGVmaW5lZCB0aGVuIHVzZSBm cm9udGVuZCdzIGRlZmF1bHQuIFNhbXBsZSByYXRlcyBhcmUgZXhwcmVzc2VkCgpBaGFpbiB0aGlz ICdJZiBub3QgZGVmaW5lZCB0aGVuIHVzZSBmcm9udGVuJ2RzIGRlZmF1bHQnIGNvdWxkIGJlIHdy aXR0ZW4KYSBiaXQgZGlmZmVyZW50bHkuCj4gKyAqICAgICAgYXMgYSBsaXN0IG9mIGRlY2ltYWwg dmFsdWVzIHcvbyBhbnkgb3JkZXJpbmcgcmVxdWlyZW1lbnQuCj4gKyAqCj4gKyAqIHNhbXBsZS1m b3JtYXRzCj4gKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDxsaXN0IG9mIFhFTlNORF9QQ01fRk9S TUFUX1hYWF9TVFI+Cj4gKyAqCj4gKyAqICAgICAgTGlzdCBvZiBzdXBwb3J0ZWQgc2FtcGxlIGZv cm1hdHMgc2VwYXJhdGVkIGJ5IFhFTlNORF9MSVNUX1NFUEFSQVRPUi4KPiArICogICAgICBJZiBu b3QgZGVmaW5lZCB0aGVuIHVzZSBmcm9udGVuZCdzIGRlZmF1bHQuCgpBZ2FpbiwgdGhpcyBkb2Vz IG5vdCBzb3VuZCByaWdodC4gVGhlIGJhY2tlbmQgaGFzIG5vIGNsdWUgd2hhdAp0aGUgZnJvbnRl bmQgZGVmYXVsdHMgYXJlLgo+ICsgKgo+ICsgKiBidWZmZXItc2l6ZQo+ICsgKiAgICAgIFZhbHVl czogICAgICAgICA8dWludD4KCnVpbnQzMl90Cj4gKyAqCj4gKyAqICAgICAgVGhlIG1heGltdW0g c2l6ZSBpbiBvY3RldHMgb2YgdGhlIGJ1ZmZlciB0byBhbGxvY2F0ZSBwZXIgc3RyZWFtLgo+ICsg Kgo+ICsgKiBFeGFtcGxlIGNvbmZpZ3VyYXRpb246Cj4gKyAqCj4gKyAqIERyaXZlciBjb25maWd1 cmF0aW9uIHVzZWQgYnkgYWxsIHN0cmVhbXM6Cj4gKyAqIC9sb2NhbC9kb21haW4vNS9kZXZpY2Uv dnNuZC8wL3NhbXBsZS1mb3JtYXRzID0gInM4O3U4O3MxNl9sZTtzMTZfYmUiCgpIdWg/IEJ1dCB0 aGlzIGlzIGEgYmFja2VuZCB2YWx1ZT8gRG9uJ3QgeW91IG1lYW46CgovbG9jYWwvZG9tYWluLzAv YmFja2VuZC92c25kLzUvc2FtcGxlLWZvcm1hdHMgPSAiczg7dTg7czE2X2xlO3MxNl9iZSIKPwoK PiArICogU3RyZWFtIG92ZXJyaWRlcyBzYW1wbGUgcmF0ZXMgc3VwcG9ydGVkOgoKLUVQQVJTRQoK PiArICogL2xvY2FsL2RvbWFpbi81L2RldmljZS92c25kLzAvZGV2aWNlLzIvc3RyZWFtLzAvc2Ft cGxlLXJhdGVzID0KPiArICogICAgICAgICI4MDAwOzIyMDUwOzQ0MTAwOzQ4MDAwIgoKL2xvY2Fs L2RvbWFpbi8wL2JhY2tlbmQvdnNuZC81LzIvc3RyZWFtLzAvc2FtcGxlLXJhdGVzID0iODAwMDsy MjA1MDs0NDEwMDs0ODAwMCIKCkJ1dCB0aGF0IGlzIHdyb25nIGFzIHRoaXMgc2VjdGlvbiBpcyBh Ym91dCBnbG9iYWwgdmFsdWVzIHNvIHRoZXkKd291bGQgYmUgbW9yZSBsaWtlOgoKL2xvY2FsL2Rv bWFpbi8wL2JhY2tlbmQvdnNuZC81L3NhbXBsZS1yYXRlcyA9IjgwMDA7MjIwNTA7NDQxMDA7NDgw MDAiCgo/Cgo+ICsgKgo+ICsgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFZpcnR1YWwgc291bmQg Y2FyZCBzZXR0aW5ncyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICsgKiBzaG9ydC1uYW1l Cj4gKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDxjaGFyWzMyXT4KPiArICoKPiArICogICAgICBT aG9ydCBuYW1lIG9mIHRoZSB2aXJ0dWFsIHNvdW5kIGNhcmQuIE9wdGlvbmFsLgo+ICsgKgo+ICsg KiBsb25nLW5hbWUKPiArICogICAgICBWYWx1ZXM6ICAgICAgICAgPGNoYXJbODBdPgo+ICsgKgo+ ICsgKiAgICAgIExvbmcgbmFtZSBvZiB0aGUgdmlydHVhbCBzb3VuZCBjYXJkLiBPcHRpb25hbC4K PiArICoKPiArICogRm9yIGV4YW1wbGUsCj4gKyAqIC9sb2NhbC9kb21haW4vNS9kZXZpY2UvdnNu ZC8wL3Nob3J0LW5hbWUgPSAiVmlydHVhbCBhdWRpbyIKPiArICogL2xvY2FsL2RvbWFpbi81L2Rl dmljZS92c25kLzAvbG9uZy1uYW1lID0KPiArICogICAgICAgICAiVmlydHVhbCBhdWRpbyBhdCBj ZW50ZXIgc3RhY2siCgpUaGlzIHNob3VsZCBiZSBpbnZlcnRlZC4gVGhhdCBpcyB0aGlzIGlzIG9u IHRoZSBiYWNrZW5kCnNpZGU6CgovbG9jYWwvZG9tYWluLzAvYmFja2VuZC92c25kLzUvMC8yL3No b3J0LW5hbWUgPSAiVmlydHVhbCBhdWRpbyIKCkFuZCBzbyBvbi4KCkFsc28gaG93IGNvbWUgeW91 ciBleGFtcGxlIGlzIG1pc3NpbmcgdGhlIGRldmljZSBwYXJ0PwoKV2FpdCwgd2h5IGRvIHlvdSBo YXZlIGFuIGFuIGRldmljZSBiZWxvdyBidXQgLi4uIG5vdCBoZXJlPwpXaHkgbm90IGdyb3VwIHRo ZW0gdG9nZXRoZXI/CgpUaGF0IGlzIHdoeSBub3QgaGF2ZSAnc2hvcnQtbmFtZScgLCdsb25nLW5h bWUnIGFuZCAnbmFtZScgaW4KdGhlIHNhbWUgZGlyZWN0b3J5PwoKPiArICoKPiArICotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEZXZpY2Ugc2V0dGluZ3MgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KPiArICogbmFtZQo+ICsgKiAgICAgIFZhbHVlczogICAgICAgICA8Y2hh cls4MF0+Cj4gKyAqCj4gKyAqICAgICAgTmFtZSBvZiB0aGUgc291bmQgZGV2aWNlIHdpdGhpbiB0 aGUgdmlydHVhbCBzb3VuZCBjYXJkLiBPcHRpb25hbC4KPiArICoKPiArICogRm9yIGV4YW1wbGUs Cj4gKyAqIC9sb2NhbC9kb21haW4vNS9kZXZpY2UvdnNuZC8wL2RldmljZS8wL25hbWUgPSAiR2Vu ZXJhbCBhbmFsb2ciCgpUaGUgZXhhbXBsZSB5b3UgdXNlZCBhdCBzdGFydCBoYWQgYSBkZXZpY2Ug dmFsdWUgb2YgMi4gSXQgbWF5CmJlIGJldHRlciB0byB1c2UgdGhhdCBoZXJlLCBzbyA6CgovbG9j YWwvZG9tYWluLzAvYmFja2VuZC92c25kLzUvMi9uYW1lID0gIkdlbmVyYWwgYW5hbG9nIgo+ICsg Kgo+ICsgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFN0cmVhbSBzZXR0aW5ncyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gKyAqCj4gKyAqIHR5cGUKPiArICogICAgICBW YWx1ZXM6ICAgICAgICAgInAiLCAiYyIKPiArICoKPiArICogICAgICBTdHJlYW0gdHlwZTogInAi IC0gcGxheWJhY2sgc3RyZWFtLCAiYyIgLSBjYXB0dXJlIHN0cmVhbQo+ICsgKgo+ICsgKiAgICAg IElmIGJvdGggY2FwdHVyZSBhbmQgcGxheWJhY2sgYXJlIG5lZWRlZCB0aGVuIHR3byBzdHJlYW1z IG5lZWQgdG8gYmUKPiArICogICAgICBkZWZpbmVkIHVuZGVyIHRoZSBzYW1lIGRldmljZS4gRm9y IGV4YW1wbGUsCj4gKyAqICAgICAgL2xvY2FsL2RvbWFpbi81L2RldmljZS92c25kLzAvZGV2aWNl LzAvc3RyZWFtLzAvdHlwZSA9ICJwIgo+ICsgKiAgICAgIC9sb2NhbC9kb21haW4vNS9kZXZpY2Uv dnNuZC8wL2RldmljZS8wL3N0cmVhbS8xL3R5cGUgPSAiYyIKCk9LLCBidXQgYWdhaW46Ci9sb2Nh bC9kb21haW4vMC9iYWNrZW5kL3ZzbmQvNS8yLzAvc3RyZWFtLzAvdHlwZSA9ICJwIgovbG9jYWwv ZG9tYWluLzAvYmFja2VuZC92c25kLzUvMi8wL3N0cmVhbS8xL3R5cGUgPSAiYyIKCkRvIHlvdSB3 YW50IGFsc28gYW4gJ2ZlYXR1cmUtdmVyc2lvbicgdG8gaWRlbnRpZnkgd2hhdCB2ZXJzaW9uCnRo ZSBiYWNrZW5kIGV4cG9zZXM/CgoKPiArICoKPiArICoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gKyAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyb250ZW5kIFhlbkJ1cyBOb2Rlcwo+ICsgKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKPiArICoKPiArICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBSZXF1 ZXN0IFRyYW5zcG9ydCBQYXJhbWV0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gKyAqCj4g KyAqIFRoZXNlIGFyZSBwZXIgc3RyZWFtLgoKLi4gd2hpY2ggbWVhbnMgdGhleSBhcmUgYWxzbyBw ZXIgZGV2aWNlIHJpZ2h0PwoKU28gb25lIGNhbiBoYXZlIHNvbWV0aGluZyBsaWtlIHRoaXM6Cgov bG9jYWwvZG9tYWluLzUvZGV2aWNlL3ZzbmQvMi9zdHJlYW0vMC9ldmVudC1jaGFubmVsCi9sb2Nh bC9kb21haW4vNS9kZXZpY2UvdnNuZC8wL3N0cmVhbS8wL2V2ZW50LWNoYW5uZWwKL2xvY2FsL2Rv bWFpbi81L2RldmljZS92c25kLzIvc3RyZWFtLzEvZXZlbnQtY2hhbm5lbAovbG9jYWwvZG9tYWlu LzUvZGV2aWNlL3ZzbmQvMC9zdHJlYW0vMC9ldmVudC1jaGFubmVsCgo+ICsgKgo+ICsgKiBldmVu dC1jaGFubmVsCj4gKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50PgoKdWludDMyX3QKPiAr ICoKPiArICogICAgICBUaGUgaWRlbnRpZmllciBvZiB0aGUgWGVuIGV2ZW50IGNoYW5uZWwgdXNl ZCB0byBzaWduYWwgYWN0aXZpdHkKPiArICogICAgICBpbiB0aGUgcmluZyBidWZmZXIuCj4gKyAq Cj4gKyAqIHJpbmctcmVmCj4gKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50PgoKdWludDMy X3QKPiArICoKPiArICogICAgICBUaGUgWGVuIGdyYW50IHJlZmVyZW5jZSBncmFudGluZyBwZXJt aXNzaW9uIGZvciB0aGUgYmFja2VuZCB0byBtYXAKPiArICogICAgICBhIHNvbGUgcGFnZSBpbiBh IHNpbmdsZSBwYWdlIHNpemVkIHJpbmcgYnVmZmVyLgo+ICsgKgo+ICsgKiBpbmRleAoKV2h5IG5v dCAndW5pcXVlLWlkJyA/Cj4gKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50PgoKdWludDMy X3QKCj4gKyAqCj4gKyAqICAgICAgQWZ0ZXIgc3RyZWFtIGluaXRpYWxpemF0aW9uIGl0IGlzIGFz c2lnbmVkIGEgdW5pcXVlIElEICh3aXRoaW4gdGhlIGZyb250Cj4gKyAqICAgICAgZHJpdmVyKSwg c28gZXZlcnkgc3RyZWFtIG9mIHRoZSBmcm9udGVuZCBjYW4gYmUgaWRlbnRpZmllZCBieSB0aGUK PiArICogICAgICBiYWNrZW5kIGJ5IHRoaXMgSUQuIFRoaXMgaXMgbm90IGVxdWFsIHRvIHN0cmVh bV9pZHggYXMgdGhlIGxhdGVyIGlzCgpzL3N0cmVhbV9pZHgvc3RlYW0taWR4LwoKPiArICogICAg ICB6ZXJvIGJhc2VkIHdpdGhpbiBhIGRldmljZSwgYnV0IHRoaXMgaW5kZXggaXMgY29udGlndW91 cyB3aXRoaW4gdGhlCgpjb250aW5nb3VzCj4gKyAqICAgICAgZHJpdmVyLgoKCj4gKyAqLwo+ICsK PiArLyoKPiArICogU1RBVEUgRElBR1JBTVMKPiArICoKPiArICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Cj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFydHVwICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKgo+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiArICoK PiArICogVG9vbCBzdGFjayBjcmVhdGVzIGZyb250IGFuZCBiYWNrIHN0YXRlIG5vZGVzIHdpdGgg aW5pdGlhbCBzdGF0ZQo+ICsgKiBYZW5idXNTdGF0ZUluaXRpYWxpc2luZy4KPiArICogVG9vbCBz dGFjayBjcmVhdGVzIGFuZCBzZXRzIHVwIGZyb250ZW5kIHNvdW5kIGNvbmZpZ3VyYXRpb24gbm9k ZXMgcGVyIGRvbWFpbi4KPiArICoKPiArICogRnJvbnQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEJhY2sKPiArICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAgID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KPiArICogWGVuYnVzU3RhdGVJbml0 aWFsaXNpbmcgICAgICAgICAgICAgIFhlbmJ1c1N0YXRlSW5pdGlhbGlzaW5nCj4gKyAqICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyBRdWVyeSBiYWNrZW5kIGRldmljZSBp ZGVudGlmaWNhdGlvbgo+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGF0YS4KPiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvIE9w ZW4gYW5kIHZhbGlkYXRlIGJhY2tlbmQgZGV2aWNlLgo+ICsgKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPiArICogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4gKyAqICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVgo+ICsgKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWGVuYnVzU3RhdGVJbml0V2FpdAo+ICsgKgo+ ICsgKiBvIFF1ZXJ5IGZyb250ZW5kIGNvbmZpZ3VyYXRpb24KPiArICogbyBBbGxvY2F0ZSBhbmQg aW5pdGlhbGl6ZQo+ICsgKiAgIGV2ZW50IGNoYW5uZWxzIHBlciBjb25maWd1cmVkCj4gKyAqICAg cGxheWJhY2svY2FwdHVyZSBzdHJlYW0uCj4gKyAqIG8gUHVibGlzaCB0cmFuc3BvcnQgcGFyYW1l dGVycwo+ICsgKiAgIHRoYXQgd2lsbCBiZSBpbiBlZmZlY3QgZHVyaW5nCj4gKyAqICAgdGhpcyBj b25uZWN0aW9uLgo+ICsgKiAgICAgICAgICAgICAgfAo+ICsgKiAgICAgICAgICAgICAgfAo+ICsg KiAgICAgICAgICAgICAgVgo+ICsgKiBYZW5idXNTdGF0ZUluaXRpYWxpc2VkCj4gKyAqCj4gKyAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyBRdWVyeSBmcm9udGVuZCB0 cmFuc3BvcnQgcGFyYW1ldGVycy4KPiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvIENvbm5lY3QgdG8gdGhlIGV2ZW50IGNoYW5uZWxzLgo+ICsgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPiArICogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4gKyAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVgo+ICsg KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWGVuYnVzU3RhdGVDb25uZWN0 ZWQKPiArICoKPiArICogIG8gQ3JlYXRlIGFuZCBpbml0aWFsaXplIE9TCj4gKyAqICB2aXJ0dWFs IHNvdW5kIGRldmljZSBpbnN0YW5jZXMKPiArICogIGFzIHBlciBjb25maWd1cmF0aW9uLgo+ICsg KiAgICAgICAgICAgICAgfAo+ICsgKiAgICAgICAgICAgICAgfAo+ICsgKiAgICAgICAgICAgICAg Vgo+ICsgKiBYZW5idXNTdGF0ZUNvbm5lY3RlZAo+ICsgKgo+ICsgKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgWGVuYnVzU3RhdGVVbmtub3duCj4gKyAqICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBYZW5idXNTdGF0ZUNsb3NlZAo+ICsgKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWGVuYnVzU3RhdGVDbG9zaW5nCj4gKyAqIG8g UmVtb3ZlIHZpcnR1YWwgc291bmQgZGV2aWNlCj4gKyAqIG8gUmVtb3ZlIGV2ZW50IGNoYW5uZWxz Cj4gKyAqICAgICAgICAgICAgICB8Cj4gKyAqICAgICAgICAgICAgICB8Cj4gKyAqICAgICAgICAg ICAgICBWCj4gKyAqIFhlbmJ1c1N0YXRlQ2xvc2VkCj4gKyAqCj4gKyAqLwo+ICsKPiArLyoKPiAr ICogUENNIEZPUk1BVFMKPiArICoKPiArICogWEVOU05EX1BDTV9GT1JNQVRfPGZvcm1hdD5bXzxl bmRpYW4+XQo+ICsgKgo+ICsgKiBmb3JtYXQ6IDxTL1UvRj48Yml0cz4gb3IgPG5hbWU+Cj4gKyAq ICAgICBTIC0gc2lnbmVkLCBVIC0gdW5zaWduZWQsIEYgLSBmbG9hdAo+ICsgKiAgICAgYml0cyAt IDgsIDE2LCAyNCwgMzIKPiArICogICAgIG5hbWUgLSBNVV9MQVcsIEdTTSwgZXRjLgo+ICsgKgo+ ICsgKiBlbmRpYW46IDxMRS9CRT4sIG1heSBiZSBhYnNlbnQKPiArICogICAgIExFIC0gTGl0dGxl IGVuZGlhbiwgQkUgLSBCaWcgZW5kaWFuCj4gKyAqLwo+ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9S TUFUX1M4ICAgICAgICAgICAgMAo+ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1U4ICAgICAg ICAgICAgMQo+ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1MxNl9MRSAgICAgICAgMgo+ICsj ZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1MxNl9CRSAgICAgICAgMwo+ICsjZGVmaW5lIFhFTlNO RF9QQ01fRk9STUFUX1UxNl9MRSAgICAgICAgNAo+ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFU X1UxNl9CRSAgICAgICAgNQo+ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1MyNF9MRSAgICAg ICAgNgo+ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1MyNF9CRSAgICAgICAgNwo+ICsjZGVm aW5lIFhFTlNORF9QQ01fRk9STUFUX1UyNF9MRSAgICAgICAgOAo+ICsjZGVmaW5lIFhFTlNORF9Q Q01fRk9STUFUX1UyNF9CRSAgICAgICAgOQo+ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1Mz Ml9MRSAgICAgICAgMTAKPiArI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9TMzJfQkUgICAgICAg IDExCj4gKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfVTMyX0xFICAgICAgICAxMgo+ICsjZGVm aW5lIFhFTlNORF9QQ01fRk9STUFUX1UzMl9CRSAgICAgICAgMTMKPiArI2RlZmluZSBYRU5TTkRf UENNX0ZPUk1BVF9GMzJfTEUgICAgICAgIDE0IC8qIDQtYnl0ZSBmbG9hdCwgSUVFRS03NTQgMzIt Yml0LCAqLwo+ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX0YzMl9CRSAgICAgICAgMTUgLyog cmFuZ2UgLTEuMCB0byAxLjAgICAgICAgICAgICAgICovCj4gKyNkZWZpbmUgWEVOU05EX1BDTV9G T1JNQVRfRjY0X0xFICAgICAgICAxNiAvKiA4LWJ5dGUgZmxvYXQsIElFRUUtNzU0IDY0LWJpdCwg Ki8KPiArI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9GNjRfQkUgICAgICAgIDE3IC8qIHJhbmdl IC0xLjAgdG8gMS4wICAgICAgICAgICAgICAqLwo+ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFU X0lFQzk1OF9TVUJGUkFNRV9MRSAxOAo+ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX0lFQzk1 OF9TVUJGUkFNRV9CRSAxOQo+ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX01VX0xBVyAgICAg ICAgMjAKPiArI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9BX0xBVyAgICAgICAgIDIxCj4gKyNk ZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfSU1BX0FEUENNICAgICAyMgo+ICsjZGVmaW5lIFhFTlNO RF9QQ01fRk9STUFUX01QRUcgICAgICAgICAgMjMKPiArI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1B VF9HU00gICAgICAgICAgIDI0Cj4gKwo+ICsvKgo+ICsgKiBSRVFVRVNUIENPREVTLgo+ICsgKi8K PiArI2RlZmluZSBYRU5TTkRfT1BfT1BFTiAgICAgICAgICAgICAgICAgIDAKPiArI2RlZmluZSBY RU5TTkRfT1BfQ0xPU0UgICAgICAgICAgICAgICAgIDEKPiArI2RlZmluZSBYRU5TTkRfT1BfUkVB RCAgICAgICAgICAgICAgICAgIDIKPiArI2RlZmluZSBYRU5TTkRfT1BfV1JJVEUgICAgICAgICAg ICAgICAgIDMKPiArI2RlZmluZSBYRU5TTkRfT1BfU0VUX1ZPTFVNRSAgICAgICAgICAgIDQKPiAr I2RlZmluZSBYRU5TTkRfT1BfR0VUX1ZPTFVNRSAgICAgICAgICAgIDUKPiArI2RlZmluZSBYRU5T TkRfT1BfTVVURSAgICAgICAgICAgICAgICAgIDYKPiArI2RlZmluZSBYRU5TTkRfT1BfVU5NVVRF ICAgICAgICAgICAgICAgIDcKPiArCj4gKy8qCj4gKyAqIFhFTlNUT1JFIEZJRUxEIEFORCBQQVRI IE5BTUUgU1RSSU5HUywgSEVMUEVSUy4KPiArICovCj4gKyNkZWZpbmUgWEVOU05EX0RSSVZFUl9O QU1FICAgICAgICAgICAgICAidnNuZCIKPiArCj4gKyNkZWZpbmUgWEVOU05EX0xJU1RfU0VQQVJB VE9SICAgICAgICAgICAiOyIKPiArLyogUGF0aCBlbnRyaWVzICovCj4gKyNkZWZpbmUgWEVOU05E X1BBVEhfREVWSUNFICAgICAgICAgICAgICAiZGV2aWNlIgo+ICsjZGVmaW5lIFhFTlNORF9QQVRI X1NUUkVBTSAgICAgICAgICAgICAgInN0cmVhbSIKPiArLyogRmllbGQgbmFtZXMgKi8KPiArI2Rl ZmluZSBYRU5TTkRfRklFTERfVkNBUkRfU0hPUlRfTkFNRSAgICJzaG9ydC1uYW1lIgo+ICsjZGVm aW5lIFhFTlNORF9GSUVMRF9WQ0FSRF9MT05HX05BTUUgICAgImxvbmctbmFtZSIKPiArI2RlZmlu ZSBYRU5TTkRfRklFTERfUklOR19SRUYgICAgICAgICAgICJyaW5nLXJlZiIKPiArI2RlZmluZSBY RU5TTkRfRklFTERfRVZUX0NITkwgICAgICAgICAgICJldmVudC1jaGFubmVsIgo+ICsjZGVmaW5l IFhFTlNORF9GSUVMRF9ERVZJQ0VfTkFNRSAgICAgICAgIm5hbWUiCj4gKyNkZWZpbmUgWEVOU05E X0ZJRUxEX1RZUEUgICAgICAgICAgICAgICAidHlwZSIKPiArI2RlZmluZSBYRU5TTkRfRklFTERf U1RSRUFNX0lOREVYICAgICAgICJpbmRleCIKPiArI2RlZmluZSBYRU5TTkRfRklFTERfQ0hBTk5F TFNfTUlOICAgICAgICJjaGFubmVscy1taW4iCj4gKyNkZWZpbmUgWEVOU05EX0ZJRUxEX0NIQU5O RUxTX01BWCAgICAgICAiY2hhbm5lbHMtbWF4Igo+ICsjZGVmaW5lIFhFTlNORF9GSUVMRF9TQU1Q TEVfUkFURVMgICAgICAgInNhbXBsZS1yYXRlcyIKPiArI2RlZmluZSBYRU5TTkRfRklFTERfU0FN UExFX0ZPUk1BVFMgICAgICJzYW1wbGUtZm9ybWF0cyIKPiArI2RlZmluZSBYRU5TTkRfRklFTERf QlVGRkVSX1NJWkUgICAgICAgICJidWZmZXItc2l6ZSIKPiArCj4gKy8qIFN0cmVhbSB0eXBlIGZp ZWxkIHZhbHVlcy4gKi8KPiArI2RlZmluZSBYRU5TTkRfU1RSRUFNX1RZUEVfUExBWUJBQ0sgICAg ICJwIgo+ICsjZGVmaW5lIFhFTlNORF9TVFJFQU1fVFlQRV9DQVBUVVJFICAgICAgImMiCj4gKy8q IFNhbXBsZSByYXRlIG1heCBzdHJpbmcgbGVuZ3RoICovCj4gKyNkZWZpbmUgWEVOU05EX1NBTVBM RV9SQVRFX01BWF9MRU4gICAgICA2CgoKSG0sIGJ1dCBpdCBpcyB1aW50MzJfdCB3aGljaCBjYW4g YmUgbXVjaCBtdWNoIGhpZ2hlciB0aGFuIDYuCgo0Mjk0OTY3Mjk1CgoxMSBjaGFyYWN0ZXJzPwoK PiArLyogU2FtcGxlIGZvcm1hdCBmaWVsZCB2YWx1ZXMgKi8KPiArI2RlZmluZSBYRU5TTkRfU0FN UExFX0ZPUk1BVF9NQVhfTEVOICAgIDI0CgpZb3Ugc3VyZT8gWW91IG1heSB3YW50IHRvIG1ha2Ug dGhhdCBjbGVhciBpbiAnc2FtcGxlLWZvcm1hdCcKc2VjdGlvbiB0aGF0IHRoZSBtYXhpbXVtIG9m IGEgc3RyaW5nIGNhbiBiZSAyNCBjaGFyYWN0ZXJzLgoKCkFuZCBhbHNvIGV4cGxhaW4gd2h5IDI0 IGNoYXJhY3RlcnMuCj4gKwo+ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1M4X1NUUiAgICAg ICAgInM4Igo+ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1U4X1NUUiAgICAgICAgInU4Igo+ ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1MxNl9MRV9TVFIgICAgInMxNl9sZSIKPiArI2Rl ZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9TMTZfQkVfU1RSICAgICJzMTZfYmUiCj4gKyNkZWZpbmUg WEVOU05EX1BDTV9GT1JNQVRfVTE2X0xFX1NUUiAgICAidTE2X2xlIgo+ICsjZGVmaW5lIFhFTlNO RF9QQ01fRk9STUFUX1UxNl9CRV9TVFIgICAgInUxNl9iZSIKPiArI2RlZmluZSBYRU5TTkRfUENN X0ZPUk1BVF9TMjRfTEVfU1RSICAgICJzMjRfbGUiCj4gKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JN QVRfUzI0X0JFX1NUUiAgICAiczI0X2JlIgo+ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1Uy NF9MRV9TVFIgICAgInUyNF9sZSIKPiArI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9VMjRfQkVf U1RSICAgICJ1MjRfYmUiCj4gKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfUzMyX0xFX1NUUiAg ICAiczMyX2xlIgo+ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1MzMl9CRV9TVFIgICAgInMz Ml9iZSIKPiArI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9VMzJfTEVfU1RSICAgICJ1MzJfbGUi Cj4gKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfVTMyX0JFX1NUUiAgICAidTMyX2JlIgo+ICsj ZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX0YzMl9MRV9TVFIgICAgImZsb2F0X2xlIgo+ICsjZGVm aW5lIFhFTlNORF9QQ01fRk9STUFUX0YzMl9CRV9TVFIgICAgImZsb2F0X2JlIgo+ICsjZGVmaW5l IFhFTlNORF9QQ01fRk9STUFUX0Y2NF9MRV9TVFIgICAgImZsb2F0NjRfbGUiCj4gKyNkZWZpbmUg WEVOU05EX1BDTV9GT1JNQVRfRjY0X0JFX1NUUiAgICAiZmxvYXQ2NF9iZSIKPiArI2RlZmluZSBY RU5TTkRfUENNX0ZPUk1BVF9JRUM5NThfU1VCRlJBTUVfTEVfU1RSICJpZWM5NThfc3ViZnJhbWVf bGUiCj4gKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfSUVDOTU4X1NVQkZSQU1FX0JFX1NUUiAi aWVjOTU4X3N1YmZyYW1lX2JlIgo+ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX01VX0xBV19T VFIgICAgIm11X2xhdyIKPiArI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9BX0xBV19TVFIgICAg ICJhX2xhdyIKPiArI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9JTUFfQURQQ01fU1RSICJpbWFf YWRwY20iCj4gKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfTVBFR19TVFIgICAgICAibXBlZyIK PiArI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9HU01fU1RSICAgICAgICJnc20iCj4gKwo+ICsv Kgo+ICsgKiBTVEFUVVMgUkVUVVJOIENPREVTLgo+ICsgKi8KPiArLyogT3BlcmF0aW9uIG5vdCBz dXBwb3J0ZWQuICovCj4gKyNkZWZpbmUgWEVOU05EX1JTUF9OT1RTVVBQICAgICAgICAgICAgICAo LTIpCj4gKy8qIE9wZXJhdGlvbiBmYWlsZWQgZm9yIHNvbWUgdW5zcGVjaWZpZWQgcmVhc29uIChl LiBnLiAtRUlPKS4gKi8KCklzIHRoYXQgdGhlIC1FSU8gZ29pbmcgdG8gYmUgZXhwb3NlZCBzb21l d2hlcmU/IEluc2lkZSBvZiB0aGUgCidzdHJ1Y3QgeGVuc25kX3Jlc3AnID8KCldvdWxkIGl0IG1h a2Ugc2Vuc2UgdG8gaGF2ZSBpdCBleHBvc2VkIHRoZXJlPyBJcyB0aGF0IHdoYXQgJ3N0YXR1cycK aXMgZm9yPwoKV2h5IG5vdCBoYXZlIGFuICdlcnInIGFuZCBtYW5kYXRlIHRoYXQgaXQgdXNlIFBP U0lYIHJldHVybiB2YWx1ZXM/CgoKPiArI2RlZmluZSBYRU5TTkRfUlNQX0VSUk9SICAgICAgICAg ICAgICAgICgtMSkKPiArLyogT3BlcmF0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuICovCj4g KyNkZWZpbmUgWEVOU05EX1JTUF9PS0FZICAgICAgICAgICAgICAgICAwCj4gKwo+ICsvKgo+ICsg KiBBc3N1bXB0aW9uczoKPiArICogICBvIHVzYWdlIG9mIGdyYW50IHJlZmVyZW5jZSAwIGFzIGlu dmFsaWQgZ3JhbnQgcmVmZXJlbmNlOgo+ICsgKiAgICAgZ3JhbnQgcmVmZXJlbmNlIDAgaXMgdmFs aWQsIGJ1dCBuZXZlciBleHBvc2VkIHRvIGEgUFYgZHJpdmVyLAo+ICsgKiAgICAgYmVjYXVzZSBv ZiB0aGUgZmFjdCBpdCBpcyBhbHJlYWR5IGluIHVzZS9yZXNlcnZlZCBieSB0aGUgUFYgY29uc29s ZS4KPiArICogICBvIGFsbCByZWZlcmVuY2VzIGluIHRoaXMgZG9jdW1lbnQgdG8gcGFnZSBzaXpl cyBtdXN0IGJlIHRyZWF0ZWQKPiArICogICAgIGFzIHBhZ2VzIG9mIHNpemUgWEVOX1BBR0VfU0la RSB1bmxlc3MgIG90aGVyd2lzZSBub3RlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXi0gZXh0cmEgc3BhY2UKCj4gKyAqCj4gKyAqIERlc2NyaXB0aW9u IG9mIHRoZSBwcm90b2NvbCBiZXR3ZWVuIGZyb250ZW5kIGFuZCBiYWNrZW5kIGRyaXZlci4KCklz IHRoaXMgc3VwcG9zZSB0byBoYXZlIGFuOgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQp1bmRlcm5lYXRoIGl0PwoKPiArICoKPiArICogVGhlIHR3byBoYWx2ZXMgb2Yg YSBQYXJhLXZpcnR1YWwgc291bmQgZHJpdmVyIGNvbW11bmljYXRlIHdpdGgKPiArICogZWFjaCBv dGhlciB1c2luZyBhIHNoYXJlZCBwYWdlIGFuZCBhbiBldmVudCBjaGFubmVsLgoKc2hhcmVkIHBh Z2VzIGFuZCBldmVudCBjaGFubmVscz8gCgpTaW5jZSBpdCBsb29rcyBsaWtlICB5b3UgY2FuIGhh dmUKCi9sb2NhbC9kb21haW4vPGZyb250ZW5kLWlkPi9kZXZpY2UvdnNuZC88ZGV2aWNlLWlkPi9z dHJlYW0vPHN0cmVhbS1pZD4vZXZlbnQtY2hhbm5lbAoKQW5kIHlvdSBjYW4gaGF2ZSBOIGRldmlj ZS1pZCBhbmQgTSBzdHJlYW0taWQgPwoKPiArICogU2hhcmVkIHBhZ2UgY29udGFpbnMgYSByaW5n IHdpdGggcmVxdWVzdC9yZXNwb25zZSBwYWNrZXRzLgo+ICsgKgo+ICsgKiBBbGwgcmVzZXJ2ZWQg ZmllbGRzIGluIHRoZSBzdHJ1Y3R1cmVzIGJlbG93IG11c3QgYmUgMC4KPiArICoKPiArICogQWxs IHJlcXVlc3QgcGFja2V0cyBoYXZlIHRoZSBzYW1lIGxlbmd0aCAoMzIgb2N0ZXRzKQoKV2hpY2gg aW1wbGllcyB5b3UgY2FuIGhhdmUgYXQgbWF4aW11bSA2NCByZXF1ZXN0cz8KCls2NCBieXRlcyBm b3IgdGhlIGZvdXIgUklOR19JRFggYWxvbmcgd2l0aCB0aGUgNDggb2YgcGFkZGluZywgdGhhdApt ZWFucyA0MDMyIGxlZnQsIGJ1dCBzaW5jZSB3ZSBuZWVkIHRoaXMgdG8gYmUgbW9kdWxvIDIgdGhl IGJlc3QKd2UgY2FuIGRvIGlzIDJeNi4gCgoKPiArICogQWxsIHJlcXVlc3QgcGFja2V0cyBoYXZl IGNvbW1vbiBoZWFkZXI6Cj4gKyAqICAgICAgICAgIDAgICAgICAgICAgICAgICAgIDEgICAgICAg ICAgICAgICAgICAyICAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0Cj4gKyAqICstLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgfCAgICBv cGVyYXRpb24gICAgfCAgICAgc3RyZWFtX2lkeCAgfAoKV2h5IHRoZSBzdHJlYW1faWR4ID8gWW91 ciAncmluZy1yZWYnIGlzIHJvb3RlZCBmcm9tIHRoZSAnPHN0cmVhbS1pZHg+JyBzbwp0aGUgZnJv bnRlbmQgYW5kIGJhY2tlbmQgYWxyZWFkeSBrbm93IHRoaXMuCgo+ICsgKiArLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0rCj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwKPiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiAg IGlkIC0gdWludDE2X3QsIHByaXZhdGUgZ3Vlc3QgdmFsdWUsIGVjaG9lZCBpbiByZXNwb25zZQo+ ICsgKiAgIG9wZXJhdGlvbiAtIHVpbnQ4X3QsIG9wZXJhdGlvbiBjb2RlCj4gKyAqICAgc3RyZWFt X2lkeCAtIHVpbnQ4X3QsIGluZGV4IG9mIHRoZSBzdHJlYW0gKCJzdHJlYW1zX2lkeCIgWGVuU3Rv cmUgZW50cnkKPiArICogICAgIG9mIHRoZSBzdHJlYW0pCgpXaHkgZG8geW91IG5lZWQgdGhpcyBk dXBsaWNhdGUgaW5mb3JtYXRpb24/Cgo+ICsgKgo+ICsgKgo+ICsgKiBSZXF1ZXN0IG9wZW4gLSBv cGVuIGEgUENNIHN0cmVhbSBmb3IgcGxheWJhY2sgb3IgY2FwdHVyZToKPiArICogICAgICAgICAg MCAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAgMyAg ICAgICAgb2N0ZXQKPiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAgICAgICAgICAgICAg ICBpZCAgICAgICAgICAgICAgICB8IFhFTlNORF9PUF9PUEVOICB8ICAgICBzdHJlYW1faWR4ICB8 Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+ICsgKiArLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjbV9y YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPiArICogKy0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t Kwo+ICsgKiB8ICBwY21fZm9ybWF0ICAgICB8ICBwY21fY2hhbm5lbHMgICB8ICAgICAgICAgICAg IHJlc2VydmVkICAgICAgICAgICAgICB8Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3ogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAg ICAgICAgICAgICAgZ3JlZl9kaXJlY3Rvcnlfc3RhcnQgICAgICAgICAgICAgICAgICAgICAgICAg IHwKClBlcmhhcHMgJ2dyZWZfbGlzdCcgPwoKPiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvfAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPiArICog Ky0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tKwoKCj4gKyAqCj4gKyAqIHBjbV9yYXRlIC0gdWludDMyX3QsIHN0cmVh bSBkYXRhIHJhdGUsIEh6Cj4gKyAqIHBjbV9mb3JtYXQgLSB1aW50OF90LCBYRU5TTkRfUENNX0ZP Uk1BVF9YWFggdmFsdWUKPiArICogcGNtX2NoYW5uZWxzIC0gdWludDhfdCwgbnVtYmVyIG9mIGNo YW5uZWxzIG9mIHRoaXMgc3RyZWFtCgouLiBBbmQgSSBwcmVzdW1lIHRoaXMgc2hvdWxkIGJlIGJl dHdlZW4gJ2NoYW5uZWxzLW1pbicgYW5kICdjaGFubmVscy1tYXgnPwpJcyBpdCBPSyB0byBoYXZl IHRvIHNheSAyNTUgPyBXaGF0IGFyZSB0aGUgYm91bmRhcnkgdmFsdWVzPwoKCj4gKyAqIGJ1ZmZl cl9zeiAtIHVpbnQzMl90LCBidWZmZXIgc2l6ZSB0byBiZSBhbGxvY2F0ZWQgaW4gb2N0ZXRzCgpJ cyB0aGVyZSBhbiBtYXhpbXVtPyBPciBhIG1pbmltdW0/IAoKV2h5IGhhdmUgaXQgaW4gYnl0ZXM/ ICBXaHkgbm90IGluIHRoZSBhbW91bnQgb2YgZ3JhbnRzIHlvdSBuZWVkPwpQZXJoYXBzIGNhbGwg aXQgJ2dyZWZfbnInID8gVGhhdCB3YXkgeW91ciBjb21wdXRhdGlvbiBvbiBob3cKbWFueSBncmFu dHMgeW91IG5lZWQgaXMgd2VsbCBzaW1wbGlmaWVkLgoKCj4gKyAqIGdyZWZfZGlyZWN0b3J5X3N0 YXJ0IC0gZ3JhbnRfcmVmX3QsIGEgcmVmZXJlbmNlIHRvIHRoZSBmaXJzdCBzaGFyZWQgcGFnZQoK cy9ncmVmX2RpcmVjdG9yeV9zdGFydC9ncmVmX2xpc3QvID8KPiArICogICBkZXNjcmliaW5nIHNo YXJlZCBidWZmZXIgcmVmZXJlbmNlcy4gQXQgbGVhc3Qgb25lIHBhZ2UgZXhpc3RzLiBJZiBzaGFy ZWQKPiArICogICBidWZmZXIgc2l6ZSBleGNlZWRzIHdoYXQgY2FuIGJlIGFkZHJlc3NlZCBieSB0 aGlzIHNpbmdsZSBwYWdlLCB0aGVuCgpzL3NoYXJlZCBidWZmZXIgc2l6ZS9idWZmZXJfc3ovID8K Cj4gKyAqICAgcmVmZXJlbmNlIHRvIHRoZSBuZXh0IHBhZ2UgbXVzdCBiZSBzdXBwbGllZCAoc2Vl IGdyZWZfZGlyX25leHRfcGFnZSBiZWxvdykKCk5vdyB3aGF0IGlmIGdyZWZzX25yIChvciBidWZm ZXJfc3opIGlzIHNheSAxIHBhZ2UgKDQwOTYpLgpEb2VzIHRoYXQgbWVhbiB0aGF0IGdyZWZfZGly ZWN0b3J5X3N0YXJ0IHN0aWxsIG5lZWRzIHRvIHBvaW50IHRvIHBhZ2UKd2hpY2ggb25seSBoYXMg dHdvIGVudHJpZXM6IDAsIDxncmFudCByZWY+ID8KCk9yIGNhbiBpdCBiZSBzaW1wbGlmaWVkIGFu ZCB0aGlzIGdyZWZfZGlyZWN0b3J5X3N0YXJ0IHdvdWxkIGJlIHVzZWQgZm9yIApkYXRhIGluc3Rl YWQ/CgpJIHRoaW5rIHRoYXQgaXMgd2hhdCB5b3Ugc2F5aW5nICgiSWYgc2hhcmVkIC4uICIgd2hp Y2ggd291bGQgaW1wbHkKdGhhdCBpZiAiaWYgIXNoYXJlZCIgdGhlbiBzb21ldGhpbmcgZWxzZSBj YW4gYmUgZG9uZT8pIGJ1dCB0aGUgc3RhcnQKc2F5czogImEgcmVmZXJlbmNlIHRvIHRoZSBmaXJz dCBzaGFyZWQgcGFnZSBkZXNjcmliaW5kIHNoYXJlZCBidWZmZXIKcmVmZXJlbmNlcyIgd2hpY2gg aW1wbGllcyB5b3UgZG8KbmVlZCB0aGlzIGV4dHJhIGluZGlyZWN0IHBhZ2UgZXZlbiBpZiB0aGUg YnVmZmVyX3N6IGlzIHNheSA0MDk2Lgo/CgoKCj4gKyAqLwo+ICsKPiArc3RydWN0IHhlbnNuZF9v cGVuX3JlcSB7CgpzL19vcGVuX3JlcS9fcmVxX29wZW4vCgo+ICsgICAgdWludDMyX3QgcGNtX3Jh dGU7IC8qIGluIEh6ICovCj4gKyAgICB1aW50OF90IHBjbV9mb3JtYXQ7Cj4gKyAgICB1aW50OF90 IHBjbV9jaGFubmVsczsKPiArICAgIHVpbnQxNl90IHJlc2VydmVkOwo+ICsgICAgdWludDMyX3Qg YnVmZmVyX3N6Owo+ICsgICAgZ3JhbnRfcmVmX3QgZ3JlZl9kaXJlY3Rvcnlfc3RhcnQ7Cj4gK307 Cj4gKwo+ICsvKgo+ICsgKiBTaGFyZWQgcGFnZSBmb3IgWEVOU05EX09QX09QRU4gYnVmZmVyIGRl c2NyaXB0b3IgKGdyZWZfZGlyZWN0b3J5IGluIHRoZQo+ICsgKiAgIHJlcXVlc3QpIGVtcGxveXMg YSBsaXN0IG9mIHBhZ2VzLCBkZXNjcmliaW5nIGFsbCBwYWdlcyBvZiB0aGUgc2hhcmVkIGRhdGEK PiArICogICBidWZmZXI6Cj4gKyAqICAgICAgICAgIDAgICAgICAgICAgICAgICAgIDEgICAgICAg ICAgICAgICAgICAyICAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0Cj4gKyAqICstLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JlZl9kaXJfbmV4dF9w YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCj4g KyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyZWZbMF0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwKPiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8L1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC98Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ3JlZltpXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+ ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKPiArICogKy0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tKwo+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmVmW04g LTFdICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsK PiArICoKPiArICogZ3JlZl9kaXJfbmV4dF9wYWdlIC0gZ3JhbnRfcmVmX3QsIHJlZmVyZW5jZSB0 byB0aGUgbmV4dCBwYWdlIGRlc2NyaWJpbmcKPiArICogICBwYWdlIGRpcmVjdG9yeS4gTXVzdCBi ZSAwIGlmIG5vIG1vcmUgcGFnZXMgaW4gdGhlIGxpc3QuCgpzL25vIG1vcmUgcGFnZS90aGVyZSBh cmUgbm8gbW9yZS8KCj4gKyAqIGdyZWZbaV0gLSBncmFudF9yZWZfdCwgcmVmZXJlbmNlIHRvIGEg c2hhcmVkIHBhZ2Ugb2YgdGhlIGJ1ZmZlcgo+ICsgKiAgIGFsbG9jYXRlZCBhdCBYRU5TTkRfT1Bf T1BFTgo+ICsgKgo+ICsgKiBOdW1iZXIgb2YgZ3JhbnRfcmVmX3QgZW50cmllcyBpbiB0aGUgd2hv bGUgcGFnZSBkaXJlY3RvcnkgaXMgbm90Cj4gKyAqIHBhc3NlZCwgYnV0IGluc3RlYWQgY2FuIGJl IGNhbGN1bGF0ZWQgYXM6Cj4gKyAqICAgbnVtX2dyZWZzX3RvdGFsID0gKFhFTlNORF9PUF9PUEVO LmJ1ZmZlcl9zeiArIFhFTl9QQUdFX1NJWkUgLSAxKSAvCj4gKyAqICAgICAgIFhFTl9QQUdFX1NJ WkUKCgpBbmQgd2hhdCBhcmUgdGhlIGV4cGVjdGVkIGVycm9ycz8gV291ZGwgaXQgbWFrZSBzZW5z ZSB0byBkZWZpbmUgdGhvc2U/ClNheToKCiBSZXR1cm5zOgogCiAtRU5PQlVGUzogQ2Fubm90IG1h cCB0aGF0IG1hbnkgYnVmZmVycy4KIC1FSU5WQUw6IEluY29ycmVjdCB2YWx1ZXMgaW4gdGhlIHJl cXVzdD8KCiAtCj4gKyAqLwo+ICsKPiArc3RydWN0IHhlbnNuZF9wYWdlX2RpcmVjdG9yeSB7Cj4g KyAgICBncmFudF9yZWZfdCBncmVmX2Rpcl9uZXh0X3BhZ2U7Cj4gKyAgICBncmFudF9yZWZfdCBn cmVmWzFdOyAvKiBWYXJpYWJsZSBsZW5ndGggKi8KPiArfTsKPiArCj4gKy8qCj4gKyAqICBSZXF1 ZXN0IGNsb3NlIC0gY2xvc2UgYW4gb3BlbmVkIHBjbSBzdHJlYW06Cj4gKyAqICAgICAgICAgIDAg ICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgIDMgICAg ICAgIG9jdGV0Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgICAg aWQgICAgICAgICAgICAgICAgfCBYRU5TTkRfT1BfQ0xPU0UgfCAgICAgc3RyZWFtX2lkeCAgfAo+ ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPiArICogKy0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tKwo+ICsgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsK PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqLwo+ICsK PiArLyoKPiArICogUmVxdWVzdCByZWFkL3dyaXRlIC0gdXNlZCBmb3IgcmVhZCAoZm9yIGNhcHR1 cmUpIG9yIHdyaXRlIChmb3IgcGxheWJhY2spOgoKTWF5YmUgc2F5IGFsc28gdGhhdCBYRU5TTkRf T1BfT1BFTiBNVVNUIGJlIGNhbGxlZCBiZWZvcmUgdGhlc2Ugb3BlcmF0aW9ucwphcmUgcGVybWl0 dGVkLgoKPiArICogICAgICAgICAgMCAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAg IDIgICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKPiArICogKy0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+ ICsgKiB8ICAgICAgICAgICAgICAgICBpZCAgICAgICAgICAgICAgICB8ICAgIG9wZXJhdGlvbiAg ICB8ICAgICBzdHJlYW1faWR4ICB8Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG9mZnNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK PiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsZW5ndGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4gKyAqICstLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZl ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+ICsgKiArLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0r Cj4gKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKPiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKPiArICoKPiArICogb3BlcmF0aW9u IC0gWEVOU05EX09QX1JFQUQgZm9yIHJlYWQgb3IgWEVOU05EX09QX1dSSVRFIGZvciB3cml0ZQo+ ICsgKiBvZmZzZXQgLSB1aW50MzJfdCwgcmVhZCBvciB3cml0ZSBkYXRhIG9mZnNldCB3aXRoaW4g dGhlIHNoYXJlZCBidWZmZXIKPiArICogICBwYXNzZWQgd2l0aCBYRU5TTkRfT1BfT1BFTiByZXF1 ZXN0CgpNYXkgYWxzbyB3YW50IHRvIHNheSB0aGF0IHRoaXMgb2Zmc2V0IG11c3QgYmUgbGVzcyB0 aGFuIGJ1ZmZlcl9zei4KCkluIG9jdGV0cz8gTWF5IHdhbnQgdG8gc2F5IHRoYXQgZXhwbGljaXRs eS4KCgo+ICsgKiBsZW5ndGggLSB1aW50MzJfdCwgcmVhZCBvciB3cml0ZSBkYXRhIGxlbmd0aAoK SW4gb2N0ZXRzPwoKPiArICovCj4gKwo+ICtzdHJ1Y3QgeGVuc25kX3J3X3JlcSB7Cj4gKyAgICB1 aW50MzJfdCBvZmZzZXQ7Cj4gKyAgICB1aW50MzJfdCBsZW47Cj4gK307Cj4gKwo+ICsvKgo+ICsg KiBSZXF1ZXN0IHNldC9nZXQgdm9sdW1lIC0gc2V0L2dldCBjaGFubmVscycgdm9sdW1lIG9mIHRo ZSBzdHJlYW0gZ2l2ZW46Cj4gKyAqICAgICAgICAgIDAgICAgICAgICAgICAgICAgIDEgICAgICAg ICAgICAgICAgICAyICAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0Cj4gKyAqICstLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgfCAgICBv cGVyYXRpb24gICAgfCAgICAgc3RyZWFtX2lkeCAgfAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCj4g KyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwKPiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8L1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC98Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+ ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqCj4gKyAqIG9wZXJhdGlvbiAtIFhFTlNORF9PUF9T RVRfVk9MVU1FIGZvciB2b2x1bWUgc2V0Cj4gKyAqICAgb3IgWEVOU05EX09QX0dFVF9WT0xVTUUg Zm9yIHZvbHVtZSBnZXQKPiArICogQnVmZmVyIHBhc3NlZCB3aXRoIFhFTlNORF9PUF9PUEVOIGlz IHVzZWQgdG8gZXhjaGFuZ2Ugdm9sdW1lCj4gKyAqIHZhbHVlczoKCk9oLiBUaGF0IG1lYW5zIHlv dSB0aGVzZSBvcGVyYXRpb24gYXJlIGluIGVmZmVjdCAnYmFycmllcicgb25lcy4KCkFzIHRoZSBi dWZmZXIgbXVzdCBiZSBmbHVzaGVkIGJlZm9yZSBoYW5kIG90aGVyd2lzZSB5b3Ugd291bGQgYmUK b3ZlcndyaXRpbmcgZGF0YSBzdHJlYW0gaW5mb3JtYXRpb24uCgpZb3Ugc2hvdWxkIHByb2JhYmx5 IG1lbnRpb24gdGhpcyBzZW1hbnRpYyBuZWVkPwoKT3IgYWx0ZXJuYXRpdmVseSB0aGUgWEVOU05E X09QX1NFVF9WT0xVTUUvWEVOU05EX09QX0dFVF9WT0xVTUUgY291bGQgaGF2ZQphIHNpbWlsYXIg c3RydWN0dXJlIHRvICdzdHJ1Y3QgeGVuc25kX3J3X3JlcScgc28gdGhhdCB5b3UgaGF2ZQp0aGUg b2Zmc2V0IGFuZCBsZW4/Cgo+ICsgKgo+ICsgKiAgICAgICAgICAwICAgICAgICAgICAgICAgICAx ICAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAo+ICsgKiAr LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh bm5lbFswXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPiArICogKy0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tKwo+ICsgKiArL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKPiArICog fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsW2ldICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqICsvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL3wKPiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAgICAgICAgICAgICAgIGNoYW5u ZWxbWEVOU05EX09QX09QRU4ucGNtX2NoYW5uZWxzIC0gMV0gICAgICAgICAgICAgICB8Cj4gKyAq ICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLSsKPiArICoKPiArICogY2hhbm5lbFtpXSAtIHNpbnQzMl90LCB2b2x1 bWUgb2YgaS10aCBjaGFubmVsCgpZb3UgbWF5IHdhbnQgdG8gc2F5IHRoYXQgaSBpcyB1aW50OF90 LgoKCj4gKyAqIFZvbHVtZSBpcyBleHByZXNzZWQgYXMgYSBzaWduZWQgdmFsdWUgaW4gc3RlcHMg b2YgMC4wMDEgZEIsCj4gKyAqIHdoaWxlIDAgYmVpbmcgMCBkQi4KPiArICovCj4gKwo+ICsvKgo+ ICsgKiBSZXF1ZXN0IG11dGUvdW5tdXRlIC0gbXV0ZS91bm11dGUgc3RyZWFtOgoKPiArICogICAg ICAgICAgMCAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAg ICAgMyAgICAgICAgb2N0ZXQKPiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAgICAgICAg ICAgICAgICBpZCAgICAgICAgICAgICAgICB8ICAgIG9wZXJhdGlvbiAgICB8ICAgICBzdHJlYW1f aWR4ICB8Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+ICsg KiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKPiArICogKy0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tKwo+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKPiAr ICoKPiArICogb3BlcmF0aW9uIC0gWEVOU05EX09QX01VVEUgZm9yIG11dGUgb3IgWEVOU05EX09Q X1VOTVVURSBmb3IgdW5tdXRlCj4gKyAqIEJ1ZmZlciBwYXNzZWQgd2l0aCBYRU5TTkRfT1BfT1BF TiBpcyB1c2VkIHRvIGV4Y2hhbmdlIG11dGUvdW5tdXRlCj4gKyAqIHZhbHVlczoKCkFnYWluLCBz YW1lIGNvbW1lbnRzIGFzIGFib3ZlLgo+ICsgKgo+ICsgKiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvY3RldAo+ ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY2hhbm5lbFswXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPiArICogKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKwo+ICsgKiArL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsK PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsW2ldICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqICsvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL3wKPiArICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAgICAgICAgICAgICAg IGNoYW5uZWxbWEVOU05EX09QX09QRU4ucGNtX2NoYW5uZWxzIC0gMV0gICAgICAgICAgICAgICB8 Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKPiArICoKPiArICogY2hhbm5lbFtpXSAtIHVpbnQ4X3Qs IG5vbi16ZXJvIGlmIGktdGggY2hhbm5lbCBuZWVkcyB0byBiZSBtdXRlZC91bm11dGVkCj4gKyAq Lwo+ICsKPiArLyoKPiArICogQWxsIHJlc3BvbnNlIHBhY2tldHMgaGF2ZSB0aGUgc2FtZSBsZW5n dGggKDMyIG9jdGV0cykKPiArICoKPiArICogUmVzcG9uc2UgZm9yIGFsbCByZXF1ZXN0czoKPiAr ICogICAgICAgICAgMCAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgIDIgICAgICAg ICAgICAgICAgMyAgICAgICAgb2N0ZXQKPiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAg ICAgICAgICAgICAgICBpZCAgICAgICAgICAgICAgICB8ICAgIG9wZXJhdGlvbiAgICB8ICAgICBz dHJlYW1faWR4ICB8Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgIHN0YXR1cyAg ICAgfCAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAg fAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPiArICogKy0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tKwo+ICsgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98Cj4gKyAqICstLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LSsKPiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqCj4g KyAqIGlkIC0gdWludDE2X3QsIGNvcGllZCBmcm9tIHRoZSByZXF1ZXN0Cj4gKyAqIHN0cmVhbV9p ZHggLSB1aW50OF90LCBjb3BpZWQgZnJvbSByZXF1ZXN0Cj4gKyAqIG9wZXJhdGlvbiAtIHVpbnQ4 X3QsIFhFTlNORF9PUF8qIC0gY29waWVkIGZyb20gcmVxdWVzdAo+ICsgKiBzdGF0dXMgLSBpbnQ4 X3QsIHJlc3BvbnNlIHN0YXR1cyAoWEVOU05EX1JTUF8qKQoKQ291bGQgdGhpcyBiZWNvbWUgYW4g J2VycicgYW5kIHRoZSBQT1NJWCB2YWx1ZXMgdXNlZCBmb3IgZXJyb3JzPwoKPiArICovCj4gKwo+ ICtzdHJ1Y3QgeGVuc25kX3JlcSB7Cj4gKyAgICB1aW50MTZfdCBpZDsKPiArICAgIHVpbnQ4X3Qg b3BlcmF0aW9uOwo+ICsgICAgdWludDhfdCBzdHJlYW1faWR4Owo+ICsgICAgdWludDMyX3QgcmVz ZXJ2ZWQ7Cj4gKyAgICB1bmlvbiB7Cj4gKyAgICAgICAgc3RydWN0IHhlbnNuZF9vcGVuX3JlcSBv cGVuOwo+ICsgICAgICAgIHN0cnVjdCB4ZW5zbmRfcndfcmVxIHJ3Owo+ICsgICAgICAgIHVpbnQ4 X3QgcmVzZXJ2ZWRbMjRdOwo+ICsgICAgfSBvcDsKPiArfTsKPiArCj4gK3N0cnVjdCB4ZW5zbmRf cmVzcCB7Cj4gKyAgICB1aW50MTZfdCBpZDsKPiArICAgIHVpbnQ4X3Qgb3BlcmF0aW9uOwo+ICsg ICAgdWludDhfdCBzdHJlYW1faWR4Owo+ICsgICAgaW50OF90IHN0YXR1czsKPiArICAgIHVpbnQ4 X3QgcmVzZXJ2ZWRbMjddOwo+ICt9Owo+ICsKPiArREVGSU5FX1JJTkdfVFlQRVMoeGVuX3NuZGlm LCBzdHJ1Y3QgeGVuc25kX3JlcSwgc3RydWN0IHhlbnNuZF9yZXNwKTsKPiArCj4gKyNlbmRpZiAv KiBfX1hFTl9QVUJMSUNfSU9fU05ESUZfSF9fICovCj4gLS0gCj4gMi43LjQKPiAKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5n IGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1k ZXZlbAo=