From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko 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: Thu, 26 Jan 2017 12:02:49 +0200 Message-ID: References: <1480943129-20524-1-git-send-email-andr2000@gmail.com> <1480943129-20524-2-git-send-email-andr2000@gmail.com> <20170124191352.GA20813@char.us.oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170124191352.GA20813@char.us.oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Konrad Rzeszutek Wilk 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 SGksIEtvbnJhZCEKCkZpcnN0IG9mIGFsbCB0aGFuayB5b3UgdmVyeSBtdWNoIGZvciB0aGUgdmFs dWFibGUgY29tbWVudHMKCmFuZCB5b3VyIHRpbWUhCgpUaGUgbnVtYmVyIG9mIGNoYW5nZXMgKG1v c3RseSBpbiBkZXNjcmlwdGlvbikgaXMgZ29pbmcgdG8KCmJlIGh1Z2UsIHNvIGRvIHlvdSB0aGlu ayBJIGNhbiBwdWJsaXNoIHNvbWV0aGluZyBsaWtlCgoiUkZDIHYxNiIgc28gd2UgY2FuIGRpc2N1 c3MgdGhlIHVwZGF0ZWQgcGF0Y2g/CgpUaGFuayB5b3UsCgpPbGVrc2FuZHIKCgpPbiAwMS8yNC8y MDE3IDA5OjEzIFBNLCBLb25yYWQgUnplc3p1dGVrIFdpbGsgd3JvdGU6Cj4gT24gTW9uLCBEZWMg MDUsIDIwMTYgYXQgMDM6MDU6MjlQTSArMDIwMCwgT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gd3Jv dGU6Cj4+IEZyb206IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxPbGVrc2FuZHJfQW5kcnVzaGNo ZW5rb0BlcGFtLmNvbT4KPiBVc3VhbGx5IG9uZSBhbHNvIHB1dHMgc29tZXRoaWduIGluIHRoZSBj b21taXQgZGVzY3JpcHRpb24uCj4KPiBXaGVuIEkgYXBwbGllZCB0aGlzIHRvIG1lIHRyZWUgSSBn b3Q6Cj4KPiBba29ucmFkQGNoYXIgeGVuXSQgZ2l0IGxvZyAtLW9uZWxpbmUgSEVBRF4uLgo+IGVj Yzc3MTEgVGhpcyBpcyB0aGUgQUJJIGZvciB0aGUgdHdvIGhhbHZlcyBvZiBhIHBhcmEtdmlydHVh bGl6ZWQgc291bmQgZHJpdmVyIHRvIGNvbW11bmljYXRlIHdpdGggZWFjaCB0byBvdGhlci4KPiBb a29ucmFkQGNoYXIgeGVuXSQKZml4ZWQKPiBBbHNvLCB0aGFuayB5b3UgZm9yIHRoZSBpbmNsdWRp bmcgdGhlIHBhaG9sZSBvdXRwdXQhCm5wCj4+IFNpZ25lZC1vZmYtYnk6IE9sZWtzYW5kciBBbmRy dXNoY2hlbmtvIDxPbGVrc2FuZHJfQW5kcnVzaGNoZW5rb0BlcGFtLmNvbT4KPj4gU2lnbmVkLW9m Zi1ieTogT2xla3NhbmRyIEdyeXRzb3YgPE9sZWtzYW5kcl9Hcnl0c292QGVwYW0uY29tPgo+PiBT aWduZWQtb2ZmLWJ5OiBPbGVrc2FuZHIgRG15dHJ5c2h5biA8b2xla3NhbmRyLmRteXRyeXNoeW5A Z2xvYmFsbG9naWMuY29tPgo+PiBTaWduZWQtb2ZmLWJ5OiBJdXJpaSBLb25vdmFsZW5rbyA8aXVy aWkua29ub3ZhbGVua29AZ2xvYmFsbG9naWMuY29tPgo+Pgo+PiAtLS0KPj4gQ2hhbmdlcyBzaW5j ZSB2MToKPj4gICAqIHJlbW92ZWQgX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXykpIGZyb20gYWxs IHN0cnVjdHVyZXMgZGVmaW5pdGlvbnMKPj4KPj4gQ2hhbmdlcyBzaW5jZSB2MjoKPj4gICAqIHJl bW92ZWQgYWxsIEMgc3RydWN0dXJlcwo+PiAgICogYWRkZWQgcHJvdG9jb2wgZGVzY3JpcHRpb24g YmV0d2VlbiBmcm9udGVuZCBhbmQgYmFja2VuZCBkcml2ZXJzCj4+Cj4+IENoYW5nZXMgc2luY2Ug djM6Cj4+ICAgKiBmaXhlZCBzb21lIHR5cG9zCj4+ICAgKiByZW5hbWVkIFhFTlNORF9QQ01fRk9S TUFUX0ZMT0FUXyoqIHRvIFhFTlNORF9QQ01fRk9STUFUX0YzMl8qKgo+PiAgICogcmVuYW1lZCBY RU5TTkRfUENNX0ZPUk1BVF9GTE9BVDY0XyoqIHRvIFhFTlNORF9QQ01fRk9STUFUX0Y2NF8qKgo+ PiAgICogYWRkZWQgJ2lkJyBmaWVsZCB0byB0aGUgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcGFja2V0 cwo+PiAgICogcmVuYW1lZCAnc3RyZWFtX2lkJyB0byAnc3RyZWFtJyBpbiB0aGUgcGFja2V0cyBk ZXNjcmlwdGlvbgo+PiAgICogcmVuYW1lZCAncGNtX2RhdGFfcmF0ZScgdG8gJ3BjbV9yYXRlJyBp biB0aGUgcGFja2V0cyBkZXNjcmlwdGlvbgo+PiAgICogcmVuYW1lZCAncGNtX3N0cmVhbV90eXBl JyB0byAncGNtX3R5cGUnIGluIHRoZSBwYWNrZXRzIGRlc2NyaXB0aW9uCj4+ICAgKiByZW1vdmVk ICdzdHJlYW1faWQnIGZpZWxkIGZyb20gdGhlIHJlc3BvbnNlIHBhY2tldHMKPj4KPj4gQ2hhbmdl cyBzaW5jZSB2NDoKPj4gICAqIHJlbmFtZWQgJ3N0cmVhbV9pZCcgYmFjayB0byB0aGUgdG8gJ3N0 cmVhbScgaW4gdGhlIHBhY2tldHMgZGVzY3JpcHRpb24KPj4gICAqIG1vdmVkICdpZCcgZmllbGQg dG8gdGhlIHVwcGVyIHBvc2l0aW9uIGluIHRoZSByZXNwb25zZSBwYWNrZXRzCj4+Cj4+IENoYW5n ZXMgc2luY2UgdjU6Cj4+ICAgKiBTbGlnaHRseSByZXdvcmtlZCByZXF1ZXN0L3Jlc3BvbnNlIHBh Y2tldHMKPj4gICAqIFNpemUgb2YgdGhlIHJlcXVlc3QvcmVzcG9uc2UgcGFja2V0IGlzIGNoYW5n ZWQgdG8gdGhlIDY0IGJ5dGVzCj4+ICAgKiBOb3cgcGFyYW1ldGVycyBmb3IgdGhlIFhFTlNORF9P UF9TRVRfVk9MVU1FL1hFTlNORF9PUF9HRVRfVk9MVU1FIGFyZQo+PiAgICAgcGFzc2VkIHZpYSBz aGFyZWQgcGFnZQo+PiAgICogQWRkZWQgcGFyYW1ldGVycyBmb3IgdGhlIFhlbkJ1cyBub2RlcyAo bm93IGVhY2ggc3RyZWFtIGNhbiBiZSBtYXBwZWQKPj4gICAgIHRvIHRoZSBkZWZpbmVkIHNvdW5k IGRldmljZSBpbiB0aGUgYmFja2VuZCB1c2luZyB0aG9zZSBwYXJhbWV0ZXJzKQo+PiAgICogQWRk ZWQgWGVuQnVzIHN0YXRlIGRpYWdyYW1zIGRlc2NyaXB0aW9uCj4+Cj4+IENoYW5nZXMgc2luY2Ug djY6Cj4+ICAgKiBSZXdvcmtlZCBzdHJlYW1zIGRlc2NyaXB0aW9uICBpbiB0aGUgQmFja2VuZCBY ZW5CdXMgTm9kZXMKPj4KPj4gQ2hhbmdlcyBzaW5jZSB2NzoKPj4gICAqIHJlLXdvcmtlZCBiYWNr ZW5kIGRldmljZSBwYXJhbWV0ZXJzIHRvIGJlIG1vcmUgZ2VuZXJpYyBhbmQgZmxleGlibGUKPj4g ICAqIGV4dGVuZGVkIGZyb250ZW5kIGRldmljZSBwYXJhbWV0ZXJzCj4+ICAgKiBzbGlnaHRseSB1 cGRhdGVkIHN0YXRlIG1hY2hpbmUgZGVzY3JpcHRpb24gYWRkZWQgbXV0ZS91bm11dGUgY29tbWFu ZHMKPj4gICAqIGFkZGVkIGNvbnN0YW50cyBmb3IgWGVuU3RvcmUgY29uZmlndXJhdGlvbiBzdHJp bmdzCj4+ICAgICAoZmllbGRzLCBQQ00gZm9ybWF0cyBldGMuKQo+PiAgICogY2hhbmdlZCByZXF1 ZXN0L3Jlc3BvbnNlIHN0cnVjdHVyZSBzaXplIGZyb20gNjQgb2N0ZXRzIHRvIDE2Cj4+ICAgKiBp bnRyb2R1Y2VkIGR5bmFtaWMgYnVmZmVyIGFsbG9jYXRpb24gaW5zdGVhZCBvZgo+PiAgICAgc3Rh dGljIFhFTlNORF9NQVhfUEFHRVNfUEVSX1JFUVVFU1QKPj4gICAqIHJlLXdvcmtlZCBvcGVuIHJl cXVlc3QgdG8gYWxsb3cgZHluYW1pYyBidWZmZXIgYWxsb2NhdGlvbgo+PiAgICogcmUtd29ya2Vk IHJlYWQvd3JpdGUvdm9sdW1lIHJlcXVlc3RzLCBzbyB0aGV5IGRvbid0IHBhc3MgZ3JlZnM6Cj4+ ICAgICBidWZmZXIgZnJvbSB0aGUgb3BlbiByZXF1ZXN0IGlzIHVzZWQgZm9yIHRoZXNlIG9wZXJh dGlvbnMgdG8gcGFzcyBkYXRhCj4+ICAgKiBzcGVjaWZpZWQgdHlwZSBvZiB0aGUgdm9sdW1lIHZh bHVlIHRvIGJlIGEgc2lnbmVkIHZhbHVlIGluIHN0ZXBzCj4+ICAgICBvZiAwLjAwMSBkQm0sIHdo aWxlIDAgYmVpbmcgMGRCbS4KPj4gICAqIGFkZGVkIExpbnV4IGluY2x1ZGUgZmlsZSB3aXRoIHN0 cnVjdHVyZSBkZWZpbml0aW9ucwo+Pgo+PiBDaGFuZ2VzIHNpbmNlIHY4Ogo+PiAgICogY2hhbmdl ZCBmcm9udGVuZC1pZCB0byBmcm9udGVuZF9pZAo+PiAgICogc2luZ2xlIHNvdW5kIGNhcmQgc3Vw cG9ydCwgY29uZmlndXJlZCB3aXRoIGJ1bmNoIG9mCj4+ICAgICBkZXZpY2VzL3N0cmVhbXMKPj4g ICAqIGNsYXJpZnVjYXRpb24gbWFkZSBvbiBzYW1wbGUgcmF0ZXMgYW5kIGZvcm1hdHMgZXhwcmVz c2VkIGFzCj4+ICAgICBkZWNpbWFscyB3L28gYW55IHBhcnRpY3VsYXIgb3JkZXJpbmcKPj4gICAq IHB1dCBkZXNjcmlwdGlvbiBvZiBtaWdyYXRpb24vZGlzY29ubmVjdGlvbiBzdGF0ZQo+PiAgICog cmVwbGFjZWQgX19hdHRyaWJ1dGVfXygocGFja2VkKSkgdG8gX19wYWNrZWQKPj4gICAqIGNoYW5n ZWQgcGFkZGluZyBvZiByaW5nIHN0cnVjdHVyZXMgdG8gNjQgdG8gZml0IGNhY2hlIGxpbmUKPj4g ICAqIHJlbW92ZWVkICNpZmRlZiBfX0tFUk5FTAo+PiAgICogZXhwbGljaXRseSBzdGF0ZWQgd2hp Y2ggaW5kaWNlcyBpbiBYZW5TdG9yZSBjb25maWd1cmF0aW9uCj4+ICAgICBhcmUgY29udGlndW91 cwo+PiAgICogYWRkZWQgZGVzY3JpcHRpb24gdG8gd2hhdCBmcm9udGVuZCdzIGRlZmF1bHRzIGFy ZQo+PiAgICogbWFkZSBuYW1lcyBvZiB2aXJ0dWFsIGNhcmQvZGV2aWNlcyBvcHRpb25hbAo+PiAg ICogcmVtb3ZlZCBQQ01fRk9STUFUX1NQRUNJQUwKPj4gICAqIGNoYW5nZWQgdm9sdW1lIHVuaXRz IGZyb20gZEJtIHRvIGRCCj4+Cj4+IENoYW5nZXMgc2luY2Ugdjk6Cj4+ICAgKiByZW1vdmVkIHNu ZGlmX2xpbnV4LmgKPj4gICAqIG1vdmVkIGFsbCBzdHJ1Y3R1cmVzIGZyb20gc25kaWZfbGludXgu aCB0byBzbmRpZi5oCj4+ICAgKiBzdHJ1Y3R1cmVzIHBhZGRlZCB3aGVyZSBuZWVkZWQKPj4gICAq IGZpeGVkIEh6IGNvbW1lbnQKPj4KPj4gQ2hhbmdlcyBzaW5jZSB2MTA6Cj4+ICAgKiBmaXhlZCB0 YWJzIHRvIDQgc3BhY2VzIHRvIGNvbXBseSB3aXRoIFhlbiBjb2Rpbmcgc3R5bGUKPj4gICAqIGFk ZGVkIHBsYWNlaG9sZGVycyB0byBlbXB0eSBzdHJ1Y3R1cmVzIChDODkgY29uY2VybikKPj4gICAq IGFkZGVkIG1pc3NpbmcgaGVhZGVyIGluY2x1ZGVzCj4+Cj4+IENoYW5nZXMgc2luY2UgdjExOgo+ PiAgICogYWRkZWQgWEVOU05EX1JTUF9OT1RTVVBQIGVycm9yIGNvZGUKPj4gICAqIGNoYW5nZWQg Z3JlZlswXSB0byBncmVmWzFdIHdpdGggY29tbWVudAo+PiAgICogbW9kaWZpZWQgY29tbWVudHMg b24gZW1wdHkgc3RydWN0dXJlcwo+PiAgICogcmVtb3ZlZCAiX18iIGZyb20gbWVtYmVyIG5hbWVz Cj4+ICAgKiBmaXhlZCBpbmRlbnRhdGlvbgo+PiAgICogYWRkZWQgcGFkZGluZyBpbiB1bmlvbiB4 ZW5zbmRfcmVzcAo+PiAgICogY2hhbmdlZCBfX1hFTl9QVUJMSUNfSU9fWEVOU05EX0hfXyB0byBf X1hFTl9QVUJMSUNfSU9fU05ESUZfSF9fCj4+Cj4+IENoYW5nZXMgc2luY2UgdjEyOgo+PiAgICog Y2hhbmdlZCBpbmRlbnRhdGlvbiBmb3IgZGVmaW5lcwo+PiAgICogbWlzc2VkICI7IiBhZnRlciBn cmVmWzFdCj4+ICAgKiBkb2N1bWVudGF0aW9uIGNoYW5nZXMKPj4gICAqIGNoYW5nZWQgcmVxL3Jl c3Agc3RydWN0dXJlcwo+PiAgICogY2hhbmdlZCB4ZW5zbmRfcGFnZV9kaXJlY3Rvcnkgc3RydWN0 dXJlCj4+ICAgKiBwYXNzIGJ1ZmZlciBzaXplIGluIG9wZW4gcmVxdWVzdAo+Pgo+PiBDaGFuZ2Vz IHNpbmNlIHYxMzoKPj4gICAqIG5vdGUgb24gdXNhZ2Ugb2YgZ3JhbnQgcmVmIDAKPj4gICAqIGFs bCBwYWdlIHNpemVzIGFyZSBYRU5fUEFHRV9TSVpFCj4+ICAgKiBwYWRkaW5nL3Jlc2VydmVkIGNs ZWFudXAvZml4ZXMKPj4gICAqIHJlbW92ZWQgZW1wdHkgc3RydWN0dXJlcwo+Pgo+PiBDaGFuZ2Vz IHNpbmNlIHYxNDoKPj4gICAqIHR1cm4gcGFkZGluZyBpbnRvIHJlc2VydmVkCj4+IC0tLQo+PiAt LS0KPj4gICB4ZW4vaW5jbHVkZS9wdWJsaWMvaW8vc25kaWYuaCB8IDY3MSArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4gICAxIGZpbGUgY2hhbmdlZCwgNjcxIGlu c2VydGlvbnMoKykKPj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2luY2x1ZGUvcHVibGljL2lv L3NuZGlmLmgKPj4KPj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9pby9zbmRpZi5o IGIveGVuL2luY2x1ZGUvcHVibGljL2lvL3NuZGlmLmgKPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQK Pj4gaW5kZXggMDAwMDAwMC4uNjBhNmQ4OAo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL3hlbi9p bmNsdWRlL3B1YmxpYy9pby9zbmRpZi5oCj4+IEBAIC0wLDAgKzEsNjcxIEBACj4+ICsvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCj4+ICsgKiBzbmRpZi5oCj4+ICsgKgo+PiArICogVW5pZmllZCBzb3Vu ZC1kZXZpY2UgSS9PIGludGVyZmFjZSBmb3IgWGVuIGd1ZXN0IE9TZXMuCj4+ICsgKgo+PiArICog UGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJz b24gb2J0YWluaW5nIGEgY29weQo+PiArICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRl ZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCj4+ICsgKiBkZWFsIGlu IHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1p dGF0aW9uIHRoZQo+PiArICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVi bGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCj4+ICsgKiBzZWxsIGNvcGllcyBv ZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2Fy ZSBpcwo+PiArICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcg Y29uZGl0aW9uczoKPj4gKyAqCj4+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg dGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgo+PiArICogYWxsIGNv cGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCj4+ICsgKgo+PiAr ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg QU5ZIEtJTkQsIEVYUFJFU1MgT1IKPj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJ TUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+PiArICogRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZF TlQgU0hBTEwgVEhFCj4+ICsgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJM RSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4+ICsgKiBMSUFCSUxJVFksIFdIRVRI RVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ PiArICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig VEhFIFVTRSBPUiBPVEhFUgo+PiArICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgo+PiArICoK Pj4gKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEdsb2JhbExvZ2ljIEluYy4KPj4gKyAqIENv cHlyaWdodCAoQykgMjAxNiBFUEFNIFN5c3RlbXMgSW5jLgo+PiArICoKPj4gKyAqIEF1dGhvcnM6 IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxPbGVrc2FuZHJfQW5kcnVzaGNoZW5rb0BlcGFtLmNv bT4KPj4gKyAqICAgICAgICAgIE9sZWtzYW5kciBHcnl0c292IDxPbGVrc2FuZHJfR3J5dHNvdkBl cGFtLmNvbT4KPj4gKyAqICAgICAgICAgIE9sZWtzYW5kciBEbXl0cnlzaHluIDxvbGVrc2FuZHIu ZG15dHJ5c2h5bkBnbG9iYWxsb2dpYy5jb20+Cj4+ICsgKiAgICAgICAgICBJdXJpaSBLb25vdmFs ZW5rbyA8aXVyaWkua29ub3ZhbGVua29AZ2xvYmFsbG9naWMuY29tPgo+PiArICovCj4+ICsKPj4g KyNpZm5kZWYgX19YRU5fUFVCTElDX0lPX1NORElGX0hfXwo+PiArI2RlZmluZSBfX1hFTl9QVUJM SUNfSU9fU05ESUZfSF9fCj4+ICsKPj4gKyNpbmNsdWRlICJyaW5nLmgiCj4+ICsjaW5jbHVkZSAi Li4vZ3JhbnRfdGFibGUuaCIKPj4gKwo+PiArLyoKPj4gKyAqIEZyb250LT5iYWNrIG5vdGlmaWNh dGlvbnM6IFdoZW4gZW5xdWV1aW5nIGEgbmV3IHJlcXVlc3QsIHNlbmRpbmcgYQo+PiArICogbm90 aWZpY2F0aW9uIGNhbiBiZSBtYWRlIGNvbmRpdGlvbmFsIG9uIHJlcV9ldmVudCAoaS5lLiwgdGhl IGdlbmVyaWMKPj4gKyAqIGhvbGQtb2ZmIG1lY2hhbmlzbSBwcm92aWRlZCBieSB0aGUgcmluZyBt YWNyb3MpLiBCYWNrZW5kcyBtdXN0IHNldAo+PiArICogcmVxX2V2ZW50IGFwcHJvcHJpYXRlbHkg KGUuZy4sIHVzaW5nIFJJTkdfRklOQUxfQ0hFQ0tfRk9SX1JFUVVFU1RTKCkpLgo+PiArICoKPj4g KyAqIEJhY2stPmZyb250IG5vdGlmaWNhdGlvbnM6IFdoZW4gZW5xdWV1aW5nIGEgbmV3IHJlc3Bv bnNlLCBzZW5kaW5nIGEKPj4gKyAqIG5vdGlmaWNhdGlvbiBjYW4gYmUgbWFkZSBjb25kaXRpb25h bCBvbiByc3BfZXZlbnQgKGkuZS4sIHRoZSBnZW5lcmljCj4+ICsgKiBob2xkLW9mZiBtZWNoYW5p c20gcHJvdmlkZWQgYnkgdGhlIHJpbmcgbWFjcm9zKS4gRnJvbnRlbmRzIG11c3Qgc2V0Cj4+ICsg KiByc3BfZXZlbnQgYXBwcm9wcmlhdGVseSAoZS5nLiwgdXNpbmcgUklOR19GSU5BTF9DSEVDS19G T1JfUkVTUE9OU0VTKCkpLgo+PiArICovCj4+ICsKPj4gKy8qCj4+ICsgKiBGZWF0dXJlIGFuZCBQ YXJhbWV0ZXIgTmVnb3RpYXRpb24KPj4gKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQo+PiArICogVGhlIHR3byBoYWx2ZXMgb2YgYSBQYXJhLXZpcnR1YWwgc291bmQgY2FyZCBk cml2ZXIgdXRpbGl6ZSBub2RlcyB3aXRoaW4gdGhlCj4+ICsgKiBYZW5TdG9yZSB0byBjb21tdW5p Y2F0ZSBjYXBhYmlsaXRpZXMgYW5kIHRvIG5lZ290aWF0ZSBvcGVyYXRpbmcgcGFyYW1ldGVycy4K Pj4gKyAqIFRoaXMgc2VjdGlvbiBlbnVtZXJhdGVzIHRoZXNlIG5vZGVzIHdoaWNoIHJlc2lkZSBp biB0aGUgcmVzcGVjdGl2ZSBmcm9udCBhbmQKPj4gKyAqIGJhY2tlbmQgcG9ydGlvbnMgb2YgdGhl IFhlblN0b3JlLCBmb2xsb3dpbmcgdGhlIFhlbkJ1cyBjb252ZW50aW9uLgo+PiArICoKPj4gKyAq IEFsbCBkYXRhIGluIHRoZSBYZW5TdG9yZSBpcyBzdG9yZWQgYXMgc3RyaW5ncy4gIE5vZGVzIHNw ZWNpZnlpbmcgbnVtZXJpYwo+PiArICogdmFsdWVzIGFyZSBlbmNvZGVkIGluIGRlY2ltYWwuICBJ bnRlZ2VyIHZhbHVlIHJhbmdlcyBsaXN0ZWQgYmVsb3cgYXJlCj4+ICsgKiBleHByZXNzZWQgYXMg Zml4ZWQgc2l6ZWQgaW50ZWdlciB0eXBlcyBjYXBhYmxlIG9mIHN0b3JpbmcgdGhlIGNvbnZlcnNp b24KPj4gKyAqIG9mIGEgcHJvcGVybHkgZm9ybWF0ZWQgbm9kZSBzdHJpbmcsIHdpdGhvdXQgbG9z cyBvZiBpbmZvcm1hdGlvbi4KPj4gKyAqCj4+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPj4gKyAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhY2tlbmQgWGVuQnVzIE5vZGVzCj4+ICsgKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKPj4gKyAqCj4+ICsgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tIEFkZHJlc3NpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+ICsg Kgo+PiArICogSW5kaWNlcyB1c2VkIHRvIGFkZHJlc3MgZnJvbnRlbmRzLCBkcml2ZXIgaW5zdGFu Y2VzLCBjYXJkcywKPj4gKyAqIGRldmljZXMgYW5kIHN0cmVhbXMuCj4+ICsgKgo+PiArICogZnJv bnRlbmRfaWQKPiBUaGUgcmVzdCBvZiB0aGUgZHJpdmVycyB1c2UgLSBpbnN0ZWFkIG9mIF8uCj4K PiBJcyB0aGVyZSBhIHBhcnRpY3VsYXIgcmVhc29uIHlvdSBuZWVkIHRvIGhhdmUgXyA/Cm5vIHJl YXNvbgo+Cj4gU2VlIHZzY3NpaWYuaCBhbmQgY29uc29sZSBhbmQgdmtiZC4gQWN0dWFsbHkgdGhl IGxhc3Qgb25lcwo+IGRvbid0IG1lbnRpb24gaXQgaW4gdGhlIGhlYWRlciBidXQgdGhlIGxpYnhs IGNvbnN0cnVjdHMgdGhlc2UuCkluZGVlZCwgSSB3aWxsIHJlbW92ZSB0aGlzIHNlY3Rpb24KPj4g KyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50Pgo+IHVpbnQzMl90Cj4+ICsgKgo+PiArICog ICAgICBEb21haW4gSUQgb2YgdGhlIHNvdW5kIGZyb250ZW5kLgo+PiArICoKPj4gKyAqIGRydl9p ZHgKPiBBZ2FpbiwgY2FuIHRoaXMgYmUgLSA/Cj4+ICsgKiAgICAgIFZhbHVlczogICAgICAgICA8 dWludD4KPiB1aW50MzJfdAo+PiArICoKPj4gKyAqICAgICAgWmVybyBiYXNlZCBjb250aWd1b3Vz IGluZGV4IG9mIHRoZSB2aXJ0dWFsaXplZCBzb3VuZCBkcml2ZXIgaW5zdGFuY2UgaW4KPj4gKyAq ICAgICAgdGhpcyBkb21haW4uIE11bHRpcGxlIFBWIGRyaXZlcnMgYXJlIGFsbG93ZWQgaW4gdGhl IGRvbWFpbgo+PiArICogICAgICBhdCB0aGUgc2FtZSB0aW1lLgo+IFRoaXMgaXMgbm90IG5lZWRl ZC4KPgo+IFdlIGFscmVhZHkgaGF2ZSB0aGlzIGluZm9ybWF0aW9uIGluIHRoZSBYZW5TdG9yZSBk aXJlY3Rvcnk6Cj4KPiAvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92c25kLzIvMC9mcm9udGVuZC1p ZCA9IDIKPiAvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92c25kLzIvMS9mcm9udGVuZC1pZCA9IDIK PiAuLgo+IC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZzbmQvMi9OL2Zyb250ZW5kLWlkID0gMgo+ Cj4gKHdoaWNoIHdvdWxkIGJlIHNpbWlsYXIgdG8gd2hhdCAndmJkJywgJ2NvbnNvbGUnIGFuZCAn dmlmJyBkbykuClJlbW92ZWQKPgo+PiArICoKPj4gKyAqIGRldl9pZAo+IHMvXy8tLwpkb25lCj4+ ICsgKiAgICAgIFZhbHVlczogICAgICAgICA8dWludD4KPiB1aW50XzMydAo+PiArICoKPj4gKyAq ICAgICAgVW5pcXVlIGRldmljZSBJRC4KPj4gKyAqICAgICAgRG9lc24ndCBoYXZlIHRvIGJlIHpl cm8gYmFzZWQgYW5kL29yIHRvIGJlIGNvbnRpZ3VvdXMuCj4gSXMgdWludCBlbm91Z2g/IE9yIHdv dWxkIGl0IGJlIGJldHRlciB0byBoYXZlIGFuIDxzdHJpbmc+IGlmIHRoaXMgaXMKPiBzb21lIGZv cm0gb2YgU0hBLTEgdmFsdWU/CmNoYW5nZWQgdG8gdWludDhfdAo+PiArICoKPj4gKyAqIHN0cmVh bV9pZHgKPiBzL18vLS8KZG9uZQo+PiArICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQ+Cj4g dWludF8zMnQKPgo+IFtlZGl0LCBiYXNlZCBvbiB0aGUgc3RydWN0IHhlbnNuZF9yZXEgIHRoaXMg aGFzIHRvIGJlIHVpbnRfOHRdID8KY2hhbmdlZCB0byB1aW50OF90Cj4+ICsgKgo+PiArICogICAg ICBaZXJvIGJhc2VkIGNvbnRpZ3VvdXMgaW5kZXggb2YgdGhlIHN0cmVhbSBvZiB0aGUgZGV2aWNl Lgo+PiArICoKPj4gKyAqIEV4YW1wbGUgZm9yIHRoZSBmcm9udGVuZCBydW5uaW5nIGluIGRvbWFp biA1LCBpbnN0YW5jZSBvZiB0aGUgZHJpdmVyCj4+ICsgKiBpbiB0aGUgZnJvbnQgaXMgMCAoc2lu Z2xlIG9yIGZpcnN0IFBWIGRyaXZlciksIGRldmljZSBpZCAyLAo+PiArICogZmlyc3Qgc3RyZWFt ICgwKToKPj4gKyAqIC9sb2NhbC9kb21haW4vPGZyb250ZW5kX2lkPi9kZXZpY2UvdnNuZC88ZHJ2 X2lkeD4vCj4+ICsgKiAgICAgICAgIGRldmljZS88ZGV2X2lkPi9zdHJlYW0vPHN0cmVhbV9pZHg+ L3R5cGUgPSAicCIKPj4gKyAqIC9sb2NhbC9kb21haW4vNS9kZXZpY2UvdnNuZC8wL2RldmljZS8y L3N0cmVhbS8wL3R5cGUgPSAicCIKPiBXaHkgZG8geW91IG5lZWQgJ2RldmljZScgPwpqdXN0IGZv ciBjbGFyaXR5OiB0aGUgaGllcmFyY2h5IG9mIHRoZSBzb3VuZCBkcml2ZXIgd291bGQKYmUgdGhh dCBhIGRldmljZSBtYXkgaGF2ZSBtdWx0aXBsZSBkaWZmZXJlbnQgc3RyZWFtcy4KU28sIGZyb20g cmVhZGFiaWxpdHkgUE9WIEkgd291bGQgc3RpbGwgaGF2ZSAiZGV2aWNlIiBpbiBwbGFjZQogRnJv bSB4ZW5zdG9yZSBkb2N1bWVudGF0aW9uOiAiRGF0YSBzaG91bGQgZ2VuZXJhbGx5IGJlCmh1bWFu LXJlYWRhYmxlIGZvciBlYXNlIG9mIG1hbmFnZW1lbnQgYW5kIGRlYnVnZ2luZyAiCkkgYXNzdW1l IHRoaXMgYWxzbyBhcHBsaWVzIHRvIHRoZSBzdHJ1Y3R1cmUgYXMgd2VsbAo+Cj4gQ291bGQgbm90 IHRoaXMgYmU6Cj4KPiAvbG9jYWwvZG9tYWluLzUvZGV2aWNlL3ZzbmQvMC8yL3N0cmVhbS8wL3R5 cGUgPSAicCIgPwp0aGVuIG9uZSBoYXMgdG8ga25vdyB0aGF0ICIyIiBzdGFuZHMgZm9yIGRldmlj ZS4Kc2VlIGFib3ZlLCBJIHdvdWxkIGtlZXAgImRldmljZSIgaGVyZQo+Cj4KPj4gKyAqCj4+ICsg Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUENNIHNldHRpbmdzIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+ICsgKgo+PiArICogRXZlcnkgdmlydHVhbGl6ZWQgc291 bmQgZnJvbnRlbmQgaGFzIHNldCBvZiBkZXZpY2VzIGFuZCBzdHJlYW1zLCBlYWNoCj4gZnJvbnRl bmQgb3IgYmFja2VuZD8KPgo+IEkgd291bGQgdGhpbmsgYmFja2VuZCBzaW5jZSB0aGlzIGlzIHN0 aWxsIHRoZSBiYWNrZW5kIHNlY3Rpb24/CnlvdSBhcmUgcmlnaHQsIG1vdmVkIHRvIGZyb250ZW5k J3Mgc2VjdGlvbgo+Cj4+ICsgKiBpcyBpbmRpdmlkdWFsbHkgY29uZmlndXJlZC4gUGFydCBvZiB0 aGUgUENNIGNvbmZpZ3VyYXRpb24gY2FuIGJlIGRlZmluZWQgYXQKPj4gKyAqIGhpZ2hlciBsZXZl bCBhbmQgYmUgZnVsbHkgb3IgcGFydGlhbGx5IHJlLXVzZWQgYnkgdGhlIHVuZGVybHlpbmcgbGF5 ZXJzLgo+PiArICogVGhlc2UgY29uZmlndXJhdGlvbiB2YWx1ZXMgYXJlOgo+PiArICogIG8gbnVt YmVyIG9mIGNoYW5uZWxzIChtaW4vbWF4KQo+PiArICogIG8gc3VwcG9ydGVkIHNhbXBsZSByYXRl cwo+PiArICogIG8gc3VwcG9ydGVkIHNhbXBsZSBmb3JtYXRzLgo+PiArICogRS5nLiBvbmUgY2Fu IGRlZmluZSB0aGVzZSB2YWx1ZXMgZm9yIHRoZSB3aG9sZSBkcml2ZXIsIGRldmljZSBvciBzdHJl YW0uCj4+ICsgKiBFdmVyeSB1bmRlcmx5aW5nIGxheWVyIGluIHR1cm4gY2FuIHJlLWRlZmluZSBz b21lIG9yIGFsbCBvZiB0aGVtIHRvIGJldHRlcgo+PiArICogZml0IGl0cyBuZWVkcy4gRm9yIGV4 YW1wbGUsIGRyaXZlciBtYXkgZGVmaW5lIG51bWJlciBvZiBjaGFubmVscyB0byBiZQo+PiArICog aW4gWzE7IDhdIHJhbmdlLCBhbmQgc29tZSBwYXJ0aWN1bGFyIHN0cmVhbSBtYXkgYmUgbGltaXRl ZCB0byBbMTsgMl0gb25seS4KPj4gKyAqIFRoZSBydWxlIGlzIHRoYXQgdGhlIHVuZGVybHlpbmcg bGF5ZXIgbXVzdCBiZSBhIHN1YnNldCBvZiB0aGUgdXBwZXIgbGF5ZXIKPj4gKyAqIHJhbmdlLgo+ IE9LLCBzbyB0aGVzZSBhcmUgbW9yZSBvZiAnZ2xvYmFsIG9uZXMnPwpraW5kIG9mLCB3aGF0IGlz IG1vcmUgdGhleSBjYW4gYmUgImdsb2JhbCIgdG8gYWxsIHRoZQp1bmRlcmx5aW5nIGxldmVscywg ZS5nLiBpZiBkZXZpY2UgY2hhbmdlcyBzb21lIG9mIHRoZQpwYXJhbWV0ZXJzIHRoZXkgYmVjb21l IGFkb3B0ZWQgYnkgc3RyZWFtcyBpZiBub3QKZXhwbGljaXRseSBjb25maWd1cmVkLiBUaGUgc2Ft ZSBpcyB0cnVlIGlmIGRldmljZSBjaGFuZ2VzCnBhcmFtZXRlcnMgc2V0IGF0IHRoZSBjYXJkIGxl dmVsLgpUaGlzIHdheSBvbmUgY2FuIGVhc2lseSB0YWlsb3IgcGFydGljdWxhciBwaWVjZXMgb2Yg dGhlCnN5c3RlbSB3L28gd3JpdGluZyBhbGwgc2V0dGluZ3MgYWdhaW4KPj4gKyAqCj4+ICsgKiBO b3RlOiBpZiBhbnkgb2YgdGhlIHZhbHVlcyBhcmUgbm90IGRlZmluZWQgdGhlbiBQViBkcml2ZXIg c2hvdWxkIHVzZQo+PiArICogaXRzIGRlZmF1bHQgdmFsdWVzIGluc3RlYWQuCj4KPiBIb3cgaXMg dGhhdCBzdXBwb3NlIHRvIHdvcms/IFdoYXQgaWYgdGhlIFBWIGRyaXZlciBieSBkZWZhdWx0IHdh bnRzCj4gdG8gdXNlIHNheSAzMTQxNTYgY2hhbm5lbHMgYW5kIHRoZSBiYWNrZW5kIGRvZXMgbm90 IGV4cG9zZSBhbnk/IENhbgo+IGl0IHVzZSB0aGF0PyBJIHByZXN1bWUgaXQgY291bGQgdHJ5Li4g YW5kIGl0IHdvdWxkIGZhaWwgYnV0IHRoYXQKPiBoYXJkbHkgc2VlbXMgbmljZS4KPgpJIHdpbGwg cHJvYmFibHkgcmVtb3ZlIHRoaXMgc2VudGVuY2UgYW5kIHRoZSBiZWxvdyBhdCBhbGwuCklmIG5v dCBkZWZpbmVkIHRoaXMgY291bGQgbWVhbiBhbiBlcnJvciBzdGF0ZQo+PiArICoKPj4gKyAqIGNo YW5uZWxzLW1pbgo+PiArICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQ+Cj4gdWludDMyX3QK Pj4gKyAqCj4+ICsgKiAgICAgIFRoZSBtaW5pbXVtIGFtb3VudCBvZiBjaGFubmVscyB0aGF0IGlz IHN1cHBvcnRlZC4KPj4gKyAqICAgICAgTXVzdCBiZSBhdCBsZWFzdCAxLiBJZiBub3QgZGVmaW5l ZCB0aGVuIHVzZSBmcm9udGVuZCdzIGRlZmF1bHQuCj4gVGhpcyBpcyBvZGQuIFRoaXMgd2hvbGUg c2VjdGlvbiBpcyBmb3IgdGhlIGJhY2tlbmQsIHNvIGhvdyBjYW4gdGhlIGJhY2tlbmQKPiBub3Qg aGF2ZSB0aGlzIGRlZmluZWQ/Cj4KPiBEbyB5b3UgbWVhbiB0byBzYXkgdGhhdCB0aGlzIHBhcmFt ZXRlciBpcyBvcHRpb25hbD8gUGVyaGFwcwo+IHRoZW4gc2F5IHJpZ2h0IGJlZm9yZSAnVGhlIG1p bmltdW0nIGluY2x1ZGUgJyhvcHRpb25hbCknCj4KPiBBbnlob3cgd2hlcmUgZG8geW91IGVudmlz aW9uIHRoaXMgb3B0aW9uYWwgZ2xvYmFsIHZhbHVlIHRvIGJlPwo+Cj4gL2xvY2FsL2RvbWFpbi8w L2JhY2tlbmQvdnNuZC81L2NoYW5uZWxzLVttaW58bWF4XSA/Cj4KPiBQZXJoYXBzIG1lbnRpb24g dGhhdCBpbiB0aGUgc3RhcnQgb2YgdGhpcyBzZWN0aW9uOgo+Cj4gVGhlc2UgZ2xvYmFsIHZhbHVl cyBhcmUgdW5kZXIgdGhlIGJhY2tlbmQgJ3ZzbmQnIGRpcmVjdG9yeSwgYXMKPiBzbzoKPgo+IC9s b2NhbC9kb21haW4vMC9iYWNrZW5kcy92c25kLzxmcm9udC1pZD4vY2hhbm5lbHMtW21pbnxtYXhd Cj4KPiBUaG91Z2h0IEkgdGhpbmsgdGhlcmUgaXMgcHJvYmFibHkgYSBiZXR0ZXIgd2F5IHRvCj4g c2F5IHRoaXMuLgp3ZWxsLCB0aGUgY29uZnVzaW9uIGNvbWVzIGZyb20gdGhlIGZhY3QgdGhhdCBJ IGhhdmUKZGVzY3JpYmVkIGFsbCB0aGlzIHVuZGVyIGJhY2tlbmQncyBzZWN0aW9uCm5vdyB3aGVu IEkgbW92ZSBpdCB0byB0aGUgZnJvbnRlbmQncyBzZWN0aW9uIGl0IHNob3VsZAptYWtlIG1vcmUg c2Vuc2UKPj4gKyAqCj4+ICsgKiBjaGFubmVscy1tYXgKPj4gKyAqICAgICAgVmFsdWVzOiAgICAg ICAgIDx1aW50Pgo+IHVpbnQzMl90CnVpbnQ4X3QKPj4gKyAqCj4+ICsgKiAgICAgIFRoZSBtYXhp bXVtIGFtb3VudCBvZiBjaGFubmVscyB0aGF0IGlzIHN1cHBvcnRlZC4KPj4gKyAqICAgICAgTXVz dCBiZSBhdCBsZWFzdCA8Y2hhbm5lbHMtbWluPi4gSWYgbm90IGRlZmluZWQgdGhlbiB1c2UgZnJv bnRlbmQncwo+PiArICogICAgICBkZWZhdWx0Lgo+IEkgYW0gc3RpbGwgaGF2aW5nIHRyb3VibGUg dW5kZXJzdGFuZGluZyBob3cgdGhlIGJhY2tlbmQgaXMgc3VwcG9zZQo+IHRvIHVzZSB0aGUgZnJv bnRlbmQncyBkZWZhdWx0Lgo+Cj4gUGVyaGFwcyB5b3Ugd2FudCB0byBzYXk6Cj4KPiBJZiB0aGlz IHZhbHVlIGlzIG5vdCBleHBvc2VkIGJ5IHRoZSBiYWNrZW5kIHRoZSBmcm9udGVuZAo+IGlzIHBl cm1pdHRlZCB0byB1c2UgaXRzIGRlZmF1bHQgdmFsdWVzLgo+Cj4gPwptb3ZlZCB0byBmcm9udGVu ZCdzIHNlY3Rpb24KPj4gKyAqCj4+ICsgKiBzYW1wbGUtcmF0ZXMKPj4gKyAqICAgICAgVmFsdWVz OiAgICAgICAgIDxsaXN0IG9mIHVpbnRzPgo+IC4uIG9mIHVpbnQzMl90CmRvbmUKPj4gKyAqCj4+ ICsgKiAgICAgIExpc3Qgb2Ygc3VwcG9ydGVkIHNhbXBsZSByYXRlcyBzZXBhcmF0ZWQgYnkgWEVO U05EX0xJU1RfU0VQQVJBVE9SLgo+PiArICogICAgICBJZiBub3QgZGVmaW5lZCB0aGVuIHVzZSBm cm9udGVuZCdzIGRlZmF1bHQuIFNhbXBsZSByYXRlcyBhcmUgZXhwcmVzc2VkCj4gQWhhaW4gdGhp cyAnSWYgbm90IGRlZmluZWQgdGhlbiB1c2UgZnJvbnRlbidkcyBkZWZhdWx0JyBjb3VsZCBiZSB3 cml0dGVuCj4gYSBiaXQgZGlmZmVyZW50bHkuCm1vdmVkIHRvIGZyb250ZW5kJ3Mgc2VjdGlvbgo+ PiArICogICAgICBhcyBhIGxpc3Qgb2YgZGVjaW1hbCB2YWx1ZXMgdy9vIGFueSBvcmRlcmluZyBy ZXF1aXJlbWVudC4KPj4gKyAqCj4+ICsgKiBzYW1wbGUtZm9ybWF0cwo+PiArICogICAgICBWYWx1 ZXM6ICAgICAgICAgPGxpc3Qgb2YgWEVOU05EX1BDTV9GT1JNQVRfWFhYX1NUUj4KPj4gKyAqCj4+ ICsgKiAgICAgIExpc3Qgb2Ygc3VwcG9ydGVkIHNhbXBsZSBmb3JtYXRzIHNlcGFyYXRlZCBieSBY RU5TTkRfTElTVF9TRVBBUkFUT1IuCj4+ICsgKiAgICAgIElmIG5vdCBkZWZpbmVkIHRoZW4gdXNl IGZyb250ZW5kJ3MgZGVmYXVsdC4KPiBBZ2FpbiwgdGhpcyBkb2VzIG5vdCBzb3VuZCByaWdodC4g VGhlIGJhY2tlbmQgaGFzIG5vIGNsdWUgd2hhdAo+IHRoZSBmcm9udGVuZCBkZWZhdWx0cyBhcmUu Cm1vdmVkIHRvIGZyb250ZW5kJ3Mgc2VjdGlvbgo+PiArICoKPj4gKyAqIGJ1ZmZlci1zaXplCj4+ ICsgKiAgICAgIFZhbHVlczogICAgICAgICA8dWludD4KPiB1aW50MzJfdApkb25lCj4+ICsgKgo+ PiArICogICAgICBUaGUgbWF4aW11bSBzaXplIGluIG9jdGV0cyBvZiB0aGUgYnVmZmVyIHRvIGFs bG9jYXRlIHBlciBzdHJlYW0uCj4+ICsgKgo+PiArICogRXhhbXBsZSBjb25maWd1cmF0aW9uOgo+ PiArICoKPj4gKyAqIERyaXZlciBjb25maWd1cmF0aW9uIHVzZWQgYnkgYWxsIHN0cmVhbXM6Cj4+ ICsgKiAvbG9jYWwvZG9tYWluLzUvZGV2aWNlL3ZzbmQvMC9zYW1wbGUtZm9ybWF0cyA9ICJzODt1 ODtzMTZfbGU7czE2X2JlIgo+IEh1aD8gQnV0IHRoaXMgaXMgYSBiYWNrZW5kIHZhbHVlPyBEb24n dCB5b3UgbWVhbjoKPgo+IC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZzbmQvNS9zYW1wbGUtZm9y bWF0cyA9ICJzODt1ODtzMTZfbGU7czE2X2JlIgo+ID8KbW92ZWQgdG8gZnJvbnRlbmQncyBzZWN0 aW9uCj4+ICsgKiBTdHJlYW0gb3ZlcnJpZGVzIHNhbXBsZSByYXRlcyBzdXBwb3J0ZWQ6Cj4gLUVQ QVJTRQpkb25lCj4KPj4gKyAqIC9sb2NhbC9kb21haW4vNS9kZXZpY2UvdnNuZC8wL2RldmljZS8y L3N0cmVhbS8wL3NhbXBsZS1yYXRlcyA9Cj4+ICsgKiAgICAgICAgIjgwMDA7MjIwNTA7NDQxMDA7 NDgwMDAiCj4gL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdnNuZC81LzIvc3RyZWFtLzAvc2FtcGxl LXJhdGVzID0iODAwMDsyMjA1MDs0NDEwMDs0ODAwMCIKPgo+IEJ1dCB0aGF0IGlzIHdyb25nIGFz IHRoaXMgc2VjdGlvbiBpcyBhYm91dCBnbG9iYWwgdmFsdWVzIHNvIHRoZXkKPiB3b3VsZCBiZSBt b3JlIGxpa2U6Cj4KPiAvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92c25kLzUvc2FtcGxlLXJhdGVz ID0iODAwMDsyMjA1MDs0NDEwMDs0ODAwMCIKPgo+ID8Kbm90IGFueW1vcmUsIGFzIEkgbW92ZSB0 aGVzZSB0byBmcm9udGVuZCdzIGNvbmZpZ3VyYXRpb24KPj4gKyAqCj4+ICsgKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tIFZpcnR1YWwgc291bmQgY2FyZCBzZXR0aW5ncyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQo+PiArICogc2hvcnQtbmFtZQo+PiArICogICAgICBWYWx1ZXM6ICAgICAgICAg PGNoYXJbMzJdPgo+PiArICoKPj4gKyAqICAgICAgU2hvcnQgbmFtZSBvZiB0aGUgdmlydHVhbCBz b3VuZCBjYXJkLiBPcHRpb25hbC4KPj4gKyAqCj4+ICsgKiBsb25nLW5hbWUKPj4gKyAqICAgICAg VmFsdWVzOiAgICAgICAgIDxjaGFyWzgwXT4KPj4gKyAqCj4+ICsgKiAgICAgIExvbmcgbmFtZSBv ZiB0aGUgdmlydHVhbCBzb3VuZCBjYXJkLiBPcHRpb25hbC4KPj4gKyAqCj4+ICsgKiBGb3IgZXhh bXBsZSwKPj4gKyAqIC9sb2NhbC9kb21haW4vNS9kZXZpY2UvdnNuZC8wL3Nob3J0LW5hbWUgPSAi VmlydHVhbCBhdWRpbyIKPj4gKyAqIC9sb2NhbC9kb21haW4vNS9kZXZpY2UvdnNuZC8wL2xvbmct bmFtZSA9Cj4+ICsgKiAgICAgICAgICJWaXJ0dWFsIGF1ZGlvIGF0IGNlbnRlciBzdGFjayIKPiBU aGlzIHNob3VsZCBiZSBpbnZlcnRlZC4gVGhhdCBpcyB0aGlzIGlzIG9uIHRoZSBiYWNrZW5kCj4g c2lkZToKPgo+IC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZzbmQvNS8wLzIvc2hvcnQtbmFtZSA9 ICJWaXJ0dWFsIGF1ZGlvIgo+Cj4gQW5kIHNvIG9uLgo+Cj4gQWxzbyBob3cgY29tZSB5b3VyIGV4 YW1wbGUgaXMgbWlzc2luZyB0aGUgZGV2aWNlIHBhcnQ/Ckkgd2lsbCBwdXQgYSBjb21wbGV0ZSBj b25maWd1cmF0aW9uIGV4YW1wbGUKPiBXYWl0LCB3aHkgZG8geW91IGhhdmUgYW4gYW4gZGV2aWNl IGJlbG93IGJ1dCAuLi4gbm90IGhlcmU/Cj4gV2h5IG5vdCBncm91cCB0aGVtIHRvZ2V0aGVyPwo+ Cj4gVGhhdCBpcyB3aHkgbm90IGhhdmUgJ3Nob3J0LW5hbWUnICwnbG9uZy1uYW1lJyBhbmQgJ25h bWUnIGluCj4gdGhlIHNhbWUgZGlyZWN0b3J5PwpuYW1lIGlzIGZvciBhIHN0cmVhbTsgc2hvcnQv bG9uZyBmb3IgdGhlIGNhcmQKPgo+PiArICoKPj4gKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0gRGV2aWNlIHNldHRpbmdzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+ ICsgKiBuYW1lCj4+ICsgKiAgICAgIFZhbHVlczogICAgICAgICA8Y2hhcls4MF0+Cj4+ICsgKgo+ PiArICogICAgICBOYW1lIG9mIHRoZSBzb3VuZCBkZXZpY2Ugd2l0aGluIHRoZSB2aXJ0dWFsIHNv dW5kIGNhcmQuIE9wdGlvbmFsLgo+PiArICoKPj4gKyAqIEZvciBleGFtcGxlLAo+PiArICogL2xv Y2FsL2RvbWFpbi81L2RldmljZS92c25kLzAvZGV2aWNlLzAvbmFtZSA9ICJHZW5lcmFsIGFuYWxv ZyIKPiBUaGUgZXhhbXBsZSB5b3UgdXNlZCBhdCBzdGFydCBoYWQgYSBkZXZpY2UgdmFsdWUgb2Yg Mi4gSXQgbWF5Cj4gYmUgYmV0dGVyIHRvIHVzZSB0aGF0IGhlcmUsIHNvIDoKPgo+IC9sb2NhbC9k b21haW4vMC9iYWNrZW5kL3ZzbmQvNS8yL25hbWUgPSAiR2VuZXJhbCBhbmFsb2ciCmRvbmUKPj4g KyAqCj4+ICsgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFN0cmVhbSBzZXR0aW5ncyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+ICsgKgo+PiArICogdHlwZQo+PiArICog ICAgICBWYWx1ZXM6ICAgICAgICAgInAiLCAiYyIKPj4gKyAqCj4+ICsgKiAgICAgIFN0cmVhbSB0 eXBlOiAicCIgLSBwbGF5YmFjayBzdHJlYW0sICJjIiAtIGNhcHR1cmUgc3RyZWFtCj4+ICsgKgo+ PiArICogICAgICBJZiBib3RoIGNhcHR1cmUgYW5kIHBsYXliYWNrIGFyZSBuZWVkZWQgdGhlbiB0 d28gc3RyZWFtcyBuZWVkIHRvIGJlCj4+ICsgKiAgICAgIGRlZmluZWQgdW5kZXIgdGhlIHNhbWUg ZGV2aWNlLiBGb3IgZXhhbXBsZSwKPj4gKyAqICAgICAgL2xvY2FsL2RvbWFpbi81L2RldmljZS92 c25kLzAvZGV2aWNlLzAvc3RyZWFtLzAvdHlwZSA9ICJwIgo+PiArICogICAgICAvbG9jYWwvZG9t YWluLzUvZGV2aWNlL3ZzbmQvMC9kZXZpY2UvMC9zdHJlYW0vMS90eXBlID0gImMiCj4gT0ssIGJ1 dCBhZ2FpbjoKPiAvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92c25kLzUvMi8wL3N0cmVhbS8wL3R5 cGUgPSAicCIKPiAvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92c25kLzUvMi8wL3N0cmVhbS8xL3R5 cGUgPSAiYyIKPgo+IERvIHlvdSB3YW50IGFsc28gYW4gJ2ZlYXR1cmUtdmVyc2lvbicgdG8gaWRl bnRpZnkgd2hhdCB2ZXJzaW9uCj4gdGhlIGJhY2tlbmQgZXhwb3Nlcz8KPgp3aWxsIGFkZCB0aGF0 Cj4+ICsgKgo+PiArICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4+ICsgKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICBGcm9udGVuZCBYZW5CdXMgTm9kZXMKPj4gKyAqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Kgo+PiArICoKPj4gKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUmVxdWVzdCBUcmFuc3BvcnQg UGFyYW1ldGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+PiArICoKPj4gKyAqIFRoZXNlIGFy ZSBwZXIgc3RyZWFtLgo+IC4uIHdoaWNoIG1lYW5zIHRoZXkgYXJlIGFsc28gcGVyIGRldmljZSBy aWdodD8KPgo+IFNvIG9uZSBjYW4gaGF2ZSBzb21ldGhpbmcgbGlrZSB0aGlzOgo+Cj4gL2xvY2Fs L2RvbWFpbi81L2RldmljZS92c25kLzIvc3RyZWFtLzAvZXZlbnQtY2hhbm5lbAo+IC9sb2NhbC9k b21haW4vNS9kZXZpY2UvdnNuZC8wL3N0cmVhbS8wL2V2ZW50LWNoYW5uZWwKPiAvbG9jYWwvZG9t YWluLzUvZGV2aWNlL3ZzbmQvMi9zdHJlYW0vMS9ldmVudC1jaGFubmVsCj4gL2xvY2FsL2RvbWFp bi81L2RldmljZS92c25kLzAvc3RyZWFtLzAvZXZlbnQtY2hhbm5lbAp5ZXMsIGV2ZXJ5IHN0cmVh bSBoYXMgaXRzIG93biBjb21tdW5pY2F0aW9uIGNoYW5uZWwKPj4gKyAqCj4+ICsgKiBldmVudC1j aGFubmVsCj4+ICsgKiAgICAgIFZhbHVlczogICAgICAgICA8dWludD4KPiB1aW50MzJfdApkb25l Cj4+ICsgKgo+PiArICogICAgICBUaGUgaWRlbnRpZmllciBvZiB0aGUgWGVuIGV2ZW50IGNoYW5u ZWwgdXNlZCB0byBzaWduYWwgYWN0aXZpdHkKPj4gKyAqICAgICAgaW4gdGhlIHJpbmcgYnVmZmVy Lgo+PiArICoKPj4gKyAqIHJpbmctcmVmCj4+ICsgKiAgICAgIFZhbHVlczogICAgICAgICA8dWlu dD4KPiB1aW50MzJfdApkb25lCj4+ICsgKgo+PiArICogICAgICBUaGUgWGVuIGdyYW50IHJlZmVy ZW5jZSBncmFudGluZyBwZXJtaXNzaW9uIGZvciB0aGUgYmFja2VuZCB0byBtYXAKPj4gKyAqICAg ICAgYSBzb2xlIHBhZ2UgaW4gYSBzaW5nbGUgcGFnZSBzaXplZCByaW5nIGJ1ZmZlci4KPj4gKyAq Cj4+ICsgKiBpbmRleAo+IFdoeSBub3QgJ3VuaXF1ZS1pZCcgPwptYWtlcyBzZW5zZSwgd2lsbCBj aGFuZ2UKPj4gKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50Pgo+IHVpbnQzMl90CmRvbmUK Pj4gKyAqCj4+ICsgKiAgICAgIEFmdGVyIHN0cmVhbSBpbml0aWFsaXphdGlvbiBpdCBpcyBhc3Np Z25lZCBhIHVuaXF1ZSBJRCAod2l0aGluIHRoZSBmcm9udAo+PiArICogICAgICBkcml2ZXIpLCBz byBldmVyeSBzdHJlYW0gb2YgdGhlIGZyb250ZW5kIGNhbiBiZSBpZGVudGlmaWVkIGJ5IHRoZQo+ PiArICogICAgICBiYWNrZW5kIGJ5IHRoaXMgSUQuIFRoaXMgaXMgbm90IGVxdWFsIHRvIHN0cmVh bV9pZHggYXMgdGhlIGxhdGVyIGlzCj4gcy9zdHJlYW1faWR4L3N0ZWFtLWlkeC8KZG9uZQo+PiAr ICogICAgICB6ZXJvIGJhc2VkIHdpdGhpbiBhIGRldmljZSwgYnV0IHRoaXMgaW5kZXggaXMgY29u dGlndW91cyB3aXRoaW4gdGhlCj4gY29udGluZ291cwpkb25lCj4+ICsgKiAgICAgIGRyaXZlci4K Pgo+PiArICovCj4+ICsKPj4gKy8qCj4+ICsgKiBTVEFURSBESUFHUkFNUwo+PiArICoKPj4gKyAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgo+PiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFN0YXJ0dXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCj4+ICsgKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKPj4gKyAqCj4+ICsgKiBUb29sIHN0YWNrIGNyZWF0ZXMgZnJvbnQgYW5k IGJhY2sgc3RhdGUgbm9kZXMgd2l0aCBpbml0aWFsIHN0YXRlCj4+ICsgKiBYZW5idXNTdGF0ZUlu aXRpYWxpc2luZy4KPj4gKyAqIFRvb2wgc3RhY2sgY3JlYXRlcyBhbmQgc2V0cyB1cCBmcm9udGVu ZCBzb3VuZCBjb25maWd1cmF0aW9uIG5vZGVzIHBlciBkb21haW4uCj4+ICsgKgo+PiArICogRnJv bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhY2sKPj4gKyAqID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PSAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Cj4+ICsgKiBYZW5idXNTdGF0ZUluaXRpYWxpc2luZyAgICAgICAgICAgICAgWGVuYnVz U3RhdGVJbml0aWFsaXNpbmcKPj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbyBRdWVyeSBiYWNrZW5kIGRldmljZSBpZGVudGlmaWNhdGlvbgo+PiArICogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuCj4+ICsgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gT3BlbiBhbmQgdmFsaWRhdGUgYmFja2VuZCBk ZXZpY2UuCj4+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwKPj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfAo+PiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBWCj4+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgWGVuYnVzU3RhdGVJbml0V2FpdAo+PiArICoKPj4gKyAqIG8gUXVlcnkgZnJvbnRl bmQgY29uZmlndXJhdGlvbgo+PiArICogbyBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZQo+PiArICog ICBldmVudCBjaGFubmVscyBwZXIgY29uZmlndXJlZAo+PiArICogICBwbGF5YmFjay9jYXB0dXJl IHN0cmVhbS4KPj4gKyAqIG8gUHVibGlzaCB0cmFuc3BvcnQgcGFyYW1ldGVycwo+PiArICogICB0 aGF0IHdpbGwgYmUgaW4gZWZmZWN0IGR1cmluZwo+PiArICogICB0aGlzIGNvbm5lY3Rpb24uCj4+ ICsgKiAgICAgICAgICAgICAgfAo+PiArICogICAgICAgICAgICAgIHwKPj4gKyAqICAgICAgICAg ICAgICBWCj4+ICsgKiBYZW5idXNTdGF0ZUluaXRpYWxpc2VkCj4+ICsgKgo+PiArICogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvIFF1ZXJ5IGZyb250ZW5kIHRyYW5zcG9y dCBwYXJhbWV0ZXJzLgo+PiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBvIENvbm5lY3QgdG8gdGhlIGV2ZW50IGNoYW5uZWxzLgo+PiArICogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4+ICsgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPj4gKyAqICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVgo+PiArICog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhlbmJ1c1N0YXRlQ29ubmVjdGVk Cj4+ICsgKgo+PiArICogIG8gQ3JlYXRlIGFuZCBpbml0aWFsaXplIE9TCj4+ICsgKiAgdmlydHVh bCBzb3VuZCBkZXZpY2UgaW5zdGFuY2VzCj4+ICsgKiAgYXMgcGVyIGNvbmZpZ3VyYXRpb24uCj4+ ICsgKiAgICAgICAgICAgICAgfAo+PiArICogICAgICAgICAgICAgIHwKPj4gKyAqICAgICAgICAg ICAgICBWCj4+ICsgKiBYZW5idXNTdGF0ZUNvbm5lY3RlZAo+PiArICoKPj4gKyAqICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYZW5idXNTdGF0ZVVua25vd24KPj4gKyAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYZW5idXNTdGF0ZUNsb3NlZAo+PiAr ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhlbmJ1c1N0YXRlQ2xvc2lu Zwo+PiArICogbyBSZW1vdmUgdmlydHVhbCBzb3VuZCBkZXZpY2UKPj4gKyAqIG8gUmVtb3ZlIGV2 ZW50IGNoYW5uZWxzCj4+ICsgKiAgICAgICAgICAgICAgfAo+PiArICogICAgICAgICAgICAgIHwK Pj4gKyAqICAgICAgICAgICAgICBWCj4+ICsgKiBYZW5idXNTdGF0ZUNsb3NlZAo+PiArICoKPj4g KyAqLwo+PiArCj4+ICsvKgo+PiArICogUENNIEZPUk1BVFMKPj4gKyAqCj4+ICsgKiBYRU5TTkRf UENNX0ZPUk1BVF88Zm9ybWF0PltfPGVuZGlhbj5dCj4+ICsgKgo+PiArICogZm9ybWF0OiA8Uy9V L0Y+PGJpdHM+IG9yIDxuYW1lPgo+PiArICogICAgIFMgLSBzaWduZWQsIFUgLSB1bnNpZ25lZCwg RiAtIGZsb2F0Cj4+ICsgKiAgICAgYml0cyAtIDgsIDE2LCAyNCwgMzIKPj4gKyAqICAgICBuYW1l IC0gTVVfTEFXLCBHU00sIGV0Yy4KPj4gKyAqCj4+ICsgKiBlbmRpYW46IDxMRS9CRT4sIG1heSBi ZSBhYnNlbnQKPj4gKyAqICAgICBMRSAtIExpdHRsZSBlbmRpYW4sIEJFIC0gQmlnIGVuZGlhbgo+ PiArICovCj4+ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1M4ICAgICAgICAgICAgMAo+PiAr I2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9VOCAgICAgICAgICAgIDEKPj4gKyNkZWZpbmUgWEVO U05EX1BDTV9GT1JNQVRfUzE2X0xFICAgICAgICAyCj4+ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9S TUFUX1MxNl9CRSAgICAgICAgMwo+PiArI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9VMTZfTEUg ICAgICAgIDQKPj4gKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfVTE2X0JFICAgICAgICA1Cj4+ ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1MyNF9MRSAgICAgICAgNgo+PiArI2RlZmluZSBY RU5TTkRfUENNX0ZPUk1BVF9TMjRfQkUgICAgICAgIDcKPj4gKyNkZWZpbmUgWEVOU05EX1BDTV9G T1JNQVRfVTI0X0xFICAgICAgICA4Cj4+ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1UyNF9C RSAgICAgICAgOQo+PiArI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9TMzJfTEUgICAgICAgIDEw Cj4+ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1MzMl9CRSAgICAgICAgMTEKPj4gKyNkZWZp bmUgWEVOU05EX1BDTV9GT1JNQVRfVTMyX0xFICAgICAgICAxMgo+PiArI2RlZmluZSBYRU5TTkRf UENNX0ZPUk1BVF9VMzJfQkUgICAgICAgIDEzCj4+ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFU X0YzMl9MRSAgICAgICAgMTQgLyogNC1ieXRlIGZsb2F0LCBJRUVFLTc1NCAzMi1iaXQsICovCj4+ ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX0YzMl9CRSAgICAgICAgMTUgLyogcmFuZ2UgLTEu MCB0byAxLjAgICAgICAgICAgICAgICovCj4+ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX0Y2 NF9MRSAgICAgICAgMTYgLyogOC1ieXRlIGZsb2F0LCBJRUVFLTc1NCA2NC1iaXQsICovCj4+ICsj ZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX0Y2NF9CRSAgICAgICAgMTcgLyogcmFuZ2UgLTEuMCB0 byAxLjAgICAgICAgICAgICAgICovCj4+ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX0lFQzk1 OF9TVUJGUkFNRV9MRSAxOAo+PiArI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9JRUM5NThfU1VC RlJBTUVfQkUgMTkKPj4gKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfTVVfTEFXICAgICAgICAy MAo+PiArI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9BX0xBVyAgICAgICAgIDIxCj4+ICsjZGVm aW5lIFhFTlNORF9QQ01fRk9STUFUX0lNQV9BRFBDTSAgICAgMjIKPj4gKyNkZWZpbmUgWEVOU05E X1BDTV9GT1JNQVRfTVBFRyAgICAgICAgICAyMwo+PiArI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1B VF9HU00gICAgICAgICAgIDI0Cj4+ICsKPj4gKy8qCj4+ICsgKiBSRVFVRVNUIENPREVTLgo+PiAr ICovCj4+ICsjZGVmaW5lIFhFTlNORF9PUF9PUEVOICAgICAgICAgICAgICAgICAgMAo+PiArI2Rl ZmluZSBYRU5TTkRfT1BfQ0xPU0UgICAgICAgICAgICAgICAgIDEKPj4gKyNkZWZpbmUgWEVOU05E X09QX1JFQUQgICAgICAgICAgICAgICAgICAyCj4+ICsjZGVmaW5lIFhFTlNORF9PUF9XUklURSAg ICAgICAgICAgICAgICAgMwo+PiArI2RlZmluZSBYRU5TTkRfT1BfU0VUX1ZPTFVNRSAgICAgICAg ICAgIDQKPj4gKyNkZWZpbmUgWEVOU05EX09QX0dFVF9WT0xVTUUgICAgICAgICAgICA1Cj4+ICsj ZGVmaW5lIFhFTlNORF9PUF9NVVRFICAgICAgICAgICAgICAgICAgNgo+PiArI2RlZmluZSBYRU5T TkRfT1BfVU5NVVRFICAgICAgICAgICAgICAgIDcKPj4gKwo+PiArLyoKPj4gKyAqIFhFTlNUT1JF IEZJRUxEIEFORCBQQVRIIE5BTUUgU1RSSU5HUywgSEVMUEVSUy4KPj4gKyAqLwo+PiArI2RlZmlu ZSBYRU5TTkRfRFJJVkVSX05BTUUgICAgICAgICAgICAgICJ2c25kIgo+PiArCj4+ICsjZGVmaW5l IFhFTlNORF9MSVNUX1NFUEFSQVRPUiAgICAgICAgICAgIjsiCj4+ICsvKiBQYXRoIGVudHJpZXMg Ki8KPj4gKyNkZWZpbmUgWEVOU05EX1BBVEhfREVWSUNFICAgICAgICAgICAgICAiZGV2aWNlIgo+ PiArI2RlZmluZSBYRU5TTkRfUEFUSF9TVFJFQU0gICAgICAgICAgICAgICJzdHJlYW0iCj4+ICsv KiBGaWVsZCBuYW1lcyAqLwo+PiArI2RlZmluZSBYRU5TTkRfRklFTERfVkNBUkRfU0hPUlRfTkFN RSAgICJzaG9ydC1uYW1lIgo+PiArI2RlZmluZSBYRU5TTkRfRklFTERfVkNBUkRfTE9OR19OQU1F ICAgICJsb25nLW5hbWUiCj4+ICsjZGVmaW5lIFhFTlNORF9GSUVMRF9SSU5HX1JFRiAgICAgICAg ICAgInJpbmctcmVmIgo+PiArI2RlZmluZSBYRU5TTkRfRklFTERfRVZUX0NITkwgICAgICAgICAg ICJldmVudC1jaGFubmVsIgo+PiArI2RlZmluZSBYRU5TTkRfRklFTERfREVWSUNFX05BTUUgICAg ICAgICJuYW1lIgo+PiArI2RlZmluZSBYRU5TTkRfRklFTERfVFlQRSAgICAgICAgICAgICAgICJ0 eXBlIgo+PiArI2RlZmluZSBYRU5TTkRfRklFTERfU1RSRUFNX0lOREVYICAgICAgICJpbmRleCIK Pj4gKyNkZWZpbmUgWEVOU05EX0ZJRUxEX0NIQU5ORUxTX01JTiAgICAgICAiY2hhbm5lbHMtbWlu Igo+PiArI2RlZmluZSBYRU5TTkRfRklFTERfQ0hBTk5FTFNfTUFYICAgICAgICJjaGFubmVscy1t YXgiCj4+ICsjZGVmaW5lIFhFTlNORF9GSUVMRF9TQU1QTEVfUkFURVMgICAgICAgInNhbXBsZS1y YXRlcyIKPj4gKyNkZWZpbmUgWEVOU05EX0ZJRUxEX1NBTVBMRV9GT1JNQVRTICAgICAic2FtcGxl LWZvcm1hdHMiCj4+ICsjZGVmaW5lIFhFTlNORF9GSUVMRF9CVUZGRVJfU0laRSAgICAgICAgImJ1 ZmZlci1zaXplIgo+PiArCj4+ICsvKiBTdHJlYW0gdHlwZSBmaWVsZCB2YWx1ZXMuICovCj4+ICsj ZGVmaW5lIFhFTlNORF9TVFJFQU1fVFlQRV9QTEFZQkFDSyAgICAgInAiCj4+ICsjZGVmaW5lIFhF TlNORF9TVFJFQU1fVFlQRV9DQVBUVVJFICAgICAgImMiCj4+ICsvKiBTYW1wbGUgcmF0ZSBtYXgg c3RyaW5nIGxlbmd0aCAqLwo+PiArI2RlZmluZSBYRU5TTkRfU0FNUExFX1JBVEVfTUFYX0xFTiAg ICAgIDYKPgo+IEhtLCBidXQgaXQgaXMgdWludDMyX3Qgd2hpY2ggY2FuIGJlIG11Y2ggbXVjaCBo aWdoZXIgdGhhbiA2Lgo+Cj4gNDI5NDk2NzI5NQo+Cj4gMTEgY2hhcmFjdGVycz8KZml4ZWQKPj4g Ky8qIFNhbXBsZSBmb3JtYXQgZmllbGQgdmFsdWVzICovCj4+ICsjZGVmaW5lIFhFTlNORF9TQU1Q TEVfRk9STUFUX01BWF9MRU4gICAgMjQKPiBZb3Ugc3VyZT8gWW91IG1heSB3YW50IHRvIG1ha2Ug dGhhdCBjbGVhciBpbiAnc2FtcGxlLWZvcm1hdCcKPiBzZWN0aW9uIHRoYXQgdGhlIG1heGltdW0g b2YgYSBzdHJpbmcgY2FuIGJlIDI0IGNoYXJhY3RlcnMuCmRvbmUKPgo+IEFuZCBhbHNvIGV4cGxh aW4gd2h5IDI0IGNoYXJhY3RlcnMuCm5vIHBhcnRpY3VsYXIgcmVhc29uLCBqdXN0IHRvIGZpdCBY RU5TTkRfUENNX0ZPUk1BVF8/Pz9fU1RSCmRvIHlvdSB3YW50IG1lIHRvIGNoYW5nZSBpdCB0byBz b21ldGhpbmcgZWxzZT8KPj4gKwo+PiArI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9TOF9TVFIg ICAgICAgICJzOCIKPj4gKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfVThfU1RSICAgICAgICAi dTgiCj4+ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1MxNl9MRV9TVFIgICAgInMxNl9sZSIK Pj4gKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfUzE2X0JFX1NUUiAgICAiczE2X2JlIgo+PiAr I2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9VMTZfTEVfU1RSICAgICJ1MTZfbGUiCj4+ICsjZGVm aW5lIFhFTlNORF9QQ01fRk9STUFUX1UxNl9CRV9TVFIgICAgInUxNl9iZSIKPj4gKyNkZWZpbmUg WEVOU05EX1BDTV9GT1JNQVRfUzI0X0xFX1NUUiAgICAiczI0X2xlIgo+PiArI2RlZmluZSBYRU5T TkRfUENNX0ZPUk1BVF9TMjRfQkVfU1RSICAgICJzMjRfYmUiCj4+ICsjZGVmaW5lIFhFTlNORF9Q Q01fRk9STUFUX1UyNF9MRV9TVFIgICAgInUyNF9sZSIKPj4gKyNkZWZpbmUgWEVOU05EX1BDTV9G T1JNQVRfVTI0X0JFX1NUUiAgICAidTI0X2JlIgo+PiArI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1B VF9TMzJfTEVfU1RSICAgICJzMzJfbGUiCj4+ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1Mz Ml9CRV9TVFIgICAgInMzMl9iZSIKPj4gKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfVTMyX0xF X1NUUiAgICAidTMyX2xlIgo+PiArI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9VMzJfQkVfU1RS ICAgICJ1MzJfYmUiCj4+ICsjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX0YzMl9MRV9TVFIgICAg ImZsb2F0X2xlIgo+PiArI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9GMzJfQkVfU1RSICAgICJm bG9hdF9iZSIKPj4gKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfRjY0X0xFX1NUUiAgICAiZmxv YXQ2NF9sZSIKPj4gKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfRjY0X0JFX1NUUiAgICAiZmxv YXQ2NF9iZSIKPj4gKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfSUVDOTU4X1NVQkZSQU1FX0xF X1NUUiAiaWVjOTU4X3N1YmZyYW1lX2xlIgo+PiArI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9J RUM5NThfU1VCRlJBTUVfQkVfU1RSICJpZWM5NThfc3ViZnJhbWVfYmUiCj4+ICsjZGVmaW5lIFhF TlNORF9QQ01fRk9STUFUX01VX0xBV19TVFIgICAgIm11X2xhdyIKPj4gKyNkZWZpbmUgWEVOU05E X1BDTV9GT1JNQVRfQV9MQVdfU1RSICAgICAiYV9sYXciCj4+ICsjZGVmaW5lIFhFTlNORF9QQ01f Rk9STUFUX0lNQV9BRFBDTV9TVFIgImltYV9hZHBjbSIKPj4gKyNkZWZpbmUgWEVOU05EX1BDTV9G T1JNQVRfTVBFR19TVFIgICAgICAibXBlZyIKPj4gKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRf R1NNX1NUUiAgICAgICAiZ3NtIgo+PiArCj4+ICsvKgo+PiArICogU1RBVFVTIFJFVFVSTiBDT0RF Uy4KPj4gKyAqLwo+PiArLyogT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQuICovCj4+ICsjZGVmaW5l IFhFTlNORF9SU1BfTk9UU1VQUCAgICAgICAgICAgICAgKC0yKQo+PiArLyogT3BlcmF0aW9uIGZh aWxlZCBmb3Igc29tZSB1bnNwZWNpZmllZCByZWFzb24gKGUuIGcuIC1FSU8pLiAqLwo+IElzIHRo YXQgdGhlIC1FSU8gZ29pbmcgdG8gYmUgZXhwb3NlZCBzb21ld2hlcmU/Cm5vCj4gICBJbnNpZGUg b2YgdGhlCj4gJ3N0cnVjdCB4ZW5zbmRfcmVzcCcgPwpubywgWEVOU05EX1JTUF8/Pz8gaXMgdXNl ZCB0aGVyZQo+Cj4gV291bGQgaXQgbWFrZSBzZW5zZSB0byBoYXZlIGl0IGV4cG9zZWQgdGhlcmU/ IElzIHRoYXQgd2hhdCAnc3RhdHVzJwo+IGlzIGZvcj8Kc2VlIGFib3ZlLCBYRU5TTkRfUlNQXz8/ Pwo+Cj4gV2h5IG5vdCBoYXZlIGFuICdlcnInIGFuZCBtYW5kYXRlIHRoYXQgaXQgdXNlIFBPU0lY IHJldHVybiB2YWx1ZXM/CndlbGwsIGlmIHdlIGFncmVlIG9uIFBPU0lYIHZhbHVlcyB0aGVuIEkg YW0gbW9yZSB0aGFuIG9rCj4KPj4gKyNkZWZpbmUgWEVOU05EX1JTUF9FUlJPUiAgICAgICAgICAg ICAgICAoLTEpCj4+ICsvKiBPcGVyYXRpb24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4gKi8KPj4g KyNkZWZpbmUgWEVOU05EX1JTUF9PS0FZICAgICAgICAgICAgICAgICAwCj4+ICsKPj4gKy8qCj4+ ICsgKiBBc3N1bXB0aW9uczoKPj4gKyAqICAgbyB1c2FnZSBvZiBncmFudCByZWZlcmVuY2UgMCBh cyBpbnZhbGlkIGdyYW50IHJlZmVyZW5jZToKPj4gKyAqICAgICBncmFudCByZWZlcmVuY2UgMCBp cyB2YWxpZCwgYnV0IG5ldmVyIGV4cG9zZWQgdG8gYSBQViBkcml2ZXIsCj4+ICsgKiAgICAgYmVj YXVzZSBvZiB0aGUgZmFjdCBpdCBpcyBhbHJlYWR5IGluIHVzZS9yZXNlcnZlZCBieSB0aGUgUFYg Y29uc29sZS4KPj4gKyAqICAgbyBhbGwgcmVmZXJlbmNlcyBpbiB0aGlzIGRvY3VtZW50IHRvIHBh Z2Ugc2l6ZXMgbXVzdCBiZSB0cmVhdGVkCj4+ICsgKiAgICAgYXMgcGFnZXMgb2Ygc2l6ZSBYRU5f UEFHRV9TSVpFIHVubGVzcyAgb3RoZXJ3aXNlIG5vdGVkLgo+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeLSBleHRyYSBzcGFjZQpmaXhlZAo+Cj4+ICsg Kgo+PiArICogRGVzY3JpcHRpb24gb2YgdGhlIHByb3RvY29sIGJldHdlZW4gZnJvbnRlbmQgYW5k IGJhY2tlbmQgZHJpdmVyLgo+IElzIHRoaXMgc3VwcG9zZSB0byBoYXZlIGFuOgo+IC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gdW5kZXJuZWF0aCBpdD8KZG9uZQo+ PiArICoKPj4gKyAqIFRoZSB0d28gaGFsdmVzIG9mIGEgUGFyYS12aXJ0dWFsIHNvdW5kIGRyaXZl ciBjb21tdW5pY2F0ZSB3aXRoCj4+ICsgKiBlYWNoIG90aGVyIHVzaW5nIGEgc2hhcmVkIHBhZ2Ug YW5kIGFuIGV2ZW50IGNoYW5uZWwuCj4gc2hhcmVkIHBhZ2VzIGFuZCBldmVudCBjaGFubmVscz8K Pgo+IFNpbmNlIGl0IGxvb2tzIGxpa2UgIHlvdSBjYW4gaGF2ZQo+Cj4gL2xvY2FsL2RvbWFpbi88 ZnJvbnRlbmQtaWQ+L2RldmljZS92c25kLzxkZXZpY2UtaWQ+L3N0cmVhbS88c3RyZWFtLWlkPi9l dmVudC1jaGFubmVsCj4KPiBBbmQgeW91IGNhbiBoYXZlIE4gZGV2aWNlLWlkIGFuZCBNIHN0cmVh bS1pZCA/CnJpZ2h0LCBkb25lCj4+ICsgKiBTaGFyZWQgcGFnZSBjb250YWlucyBhIHJpbmcgd2l0 aCByZXF1ZXN0L3Jlc3BvbnNlIHBhY2tldHMuCj4+ICsgKgo+PiArICogQWxsIHJlc2VydmVkIGZp ZWxkcyBpbiB0aGUgc3RydWN0dXJlcyBiZWxvdyBtdXN0IGJlIDAuCj4+ICsgKgo+PiArICogQWxs IHJlcXVlc3QgcGFja2V0cyBoYXZlIHRoZSBzYW1lIGxlbmd0aCAoMzIgb2N0ZXRzKQo+IFdoaWNo IGltcGxpZXMgeW91IGNhbiBoYXZlIGF0IG1heGltdW0gNjQgcmVxdWVzdHM/Cj4KPiBbNjQgYnl0 ZXMgZm9yIHRoZSBmb3VyIFJJTkdfSURYIGFsb25nIHdpdGggdGhlIDQ4IG9mIHBhZGRpbmcsIHRo YXQKPiBtZWFucyA0MDMyIGxlZnQsIGJ1dCBzaW5jZSB3ZSBuZWVkIHRoaXMgdG8gYmUgbW9kdWxv IDIgdGhlIGJlc3QKPiB3ZSBjYW4gZG8gaXMgMl42Lgp5b3UgbWVhbiB3ZSBoYXZlIHRvIHBhZCB0 aGUgc3RydWN0dXJlcyBzbyB0aGV5IGFyZSBhbGwKNjQgYnl0ZXMgbG9uZz8KPgo+Cj4+ICsgKiBB bGwgcmVxdWVzdCBwYWNrZXRzIGhhdmUgY29tbW9uIGhlYWRlcjoKPj4gKyAqICAgICAgICAgIDAg ICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgIDMgICAg ICAgIG9jdGV0Cj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKiB8ICAgICAgICAgICAgICAg ICBpZCAgICAgICAgICAgICAgICB8ICAgIG9wZXJhdGlvbiAgICB8ICAgICBzdHJlYW1faWR4ICB8 Cj4gV2h5IHRoZSBzdHJlYW1faWR4ID8gWW91ciAncmluZy1yZWYnIGlzIHJvb3RlZCBmcm9tIHRo ZSAnPHN0cmVhbS1pZHg+JyBzbwo+IHRoZSBmcm9udGVuZCBhbmQgYmFja2VuZCBhbHJlYWR5IGtu b3cgdGhpcy4KaW5kZWVkLCB3ZSBjYW4gcHJvYmFibHkgcmVtb3ZlIHRoaXMgZnJvbSBhbGwgdGhl IHN0cnVjdHVyZXMKPj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqIHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwKPj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqICAgaWQgLSB1aW50MTZfdCwgcHJpdmF0 ZSBndWVzdCB2YWx1ZSwgZWNob2VkIGluIHJlc3BvbnNlCj4+ICsgKiAgIG9wZXJhdGlvbiAtIHVp bnQ4X3QsIG9wZXJhdGlvbiBjb2RlCj4+ICsgKiAgIHN0cmVhbV9pZHggLSB1aW50OF90LCBpbmRl eCBvZiB0aGUgc3RyZWFtICgic3RyZWFtc19pZHgiIFhlblN0b3JlIGVudHJ5Cj4+ICsgKiAgICAg b2YgdGhlIHN0cmVhbSkKPiBXaHkgZG8geW91IG5lZWQgdGhpcyBkdXBsaWNhdGUgaW5mb3JtYXRp b24/Cml0IGRlc2NyaWJlcyBjb21tb24gaGVhZGVyIGFuZCBpdHMgdmFsdWVzCj4KPj4gKyAqCj4+ ICsgKgo+PiArICogUmVxdWVzdCBvcGVuIC0gb3BlbiBhIFBDTSBzdHJlYW0gZm9yIHBsYXliYWNr IG9yIGNhcHR1cmU6Cj4+ICsgKiAgICAgICAgICAwICAgICAgICAgICAgICAgICAxICAgICAgICAg ICAgICAgICAgMiAgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAo+PiArICogKy0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tKwo+PiArICogfCAgICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgfCBYRU5T TkRfT1BfT1BFTiAgfCAgICAgc3RyZWFtX2lkeCAgfAo+PiArICogKy0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+ PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfAo+PiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+PiArICogfCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNtX3JhdGUgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfAo+PiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+PiArICogfCAgcGNtX2Zvcm1h dCAgICAgfCAgcGNtX2NoYW5uZWxzICAgfCAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAg ICAgfAo+PiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+PiArICogfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBidWZmZXJfc3ogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+PiAr ICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tKwo+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICBncmVm X2RpcmVjdG9yeV9zdGFydCAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+IFBlcmhhcHMgJ2dy ZWZfbGlzdCcgPwpub3Qgc3VyZSwgaXQgaXMgdGhlIHN0YXJ0IG9mIHRoZSBwYWdlIGRpcmVjdG9y eSwgaXRzIGdyZWYKPgo+PiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+PiArICogfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfAo+PiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+PiArICogfC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAo+PiAr ICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tKwo+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+PiArICogKy0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tKwo+Cj4+ICsgKgo+PiArICogcGNtX3JhdGUgLSB1aW50MzJfdCwgc3RyZWFtIGRh dGEgcmF0ZSwgSHoKPj4gKyAqIHBjbV9mb3JtYXQgLSB1aW50OF90LCBYRU5TTkRfUENNX0ZPUk1B VF9YWFggdmFsdWUKPj4gKyAqIHBjbV9jaGFubmVscyAtIHVpbnQ4X3QsIG51bWJlciBvZiBjaGFu bmVscyBvZiB0aGlzIHN0cmVhbQo+IC4uIEFuZCBJIHByZXN1bWUgdGhpcyBzaG91bGQgYmUgYmV0 d2VlbiAnY2hhbm5lbHMtbWluJyBhbmQgJ2NoYW5uZWxzLW1heCc/Cj4gSXMgaXQgT0sgdG8gaGF2 ZSB0byBzYXkgMjU1ID8gV2hhdCBhcmUgdGhlIGJvdW5kYXJ5IHZhbHVlcz8KPgp5ZXMsIGl0IGlz IG9rIHRvIGJlIHVpbnQ4X3QsIElNTy4gSSB3aWxsIGNoYW5nZSB0aGUKeGVuc3RvcmUgdmFsdWVz IGRlc2NyaXB0aW9uIGFzIHdlbGwKPj4gKyAqIGJ1ZmZlcl9zeiAtIHVpbnQzMl90LCBidWZmZXIg c2l6ZSB0byBiZSBhbGxvY2F0ZWQgaW4gb2N0ZXRzCj4gSXMgdGhlcmUgYW4gbWF4aW11bT8gT3Ig YSBtaW5pbXVtPwo+Cj4gV2h5IGhhdmUgaXQgaW4gYnl0ZXM/ICBXaHkgbm90IGluIHRoZSBhbW91 bnQgb2YgZ3JhbnRzIHlvdSBuZWVkPwo+IFBlcmhhcHMgY2FsbCBpdCAnZ3JlZl9ucicgPyBUaGF0 IHdheSB5b3VyIGNvbXB1dGF0aW9uIG9uIGhvdwo+IG1hbnkgZ3JhbnRzIHlvdSBuZWVkIGlzIHdl bGwgc2ltcGxpZmllZC4KdGhlcmUgd2FzIGEgZGlzY3Vzc2lvbiBvbiB0aGF0OiAKaHR0cHM6Ly9t YXJjLmluZm8vP2w9eGVuLWRldmVsJm09MTQ4MDA4NTg5MzIwNTMzJnc9Mgo+Cj4KPj4gKyAqIGdy ZWZfZGlyZWN0b3J5X3N0YXJ0IC0gZ3JhbnRfcmVmX3QsIGEgcmVmZXJlbmNlIHRvIHRoZSBmaXJz dCBzaGFyZWQgcGFnZQo+IHMvZ3JlZl9kaXJlY3Rvcnlfc3RhcnQvZ3JlZl9saXN0LyA/Cm5vdCBz dXJlCj4+ICsgKiAgIGRlc2NyaWJpbmcgc2hhcmVkIGJ1ZmZlciByZWZlcmVuY2VzLiBBdCBsZWFz dCBvbmUgcGFnZSBleGlzdHMuIElmIHNoYXJlZAo+PiArICogICBidWZmZXIgc2l6ZSBleGNlZWRz IHdoYXQgY2FuIGJlIGFkZHJlc3NlZCBieSB0aGlzIHNpbmdsZSBwYWdlLCB0aGVuCj4gcy9zaGFy ZWQgYnVmZmVyIHNpemUvYnVmZmVyX3N6LyA/CndoeSwgSSBhbSBub3QgdXNpbmcgdmFyaWFibGUv ZmllbGQgbmFtZSBoZXJlLCBidXQgZXhwbGFpbmluZwpJIGNhbiBwdXQgdGhlIG5hbWUgaW4gYnJh Y2tldHMpCj4KPj4gKyAqICAgcmVmZXJlbmNlIHRvIHRoZSBuZXh0IHBhZ2UgbXVzdCBiZSBzdXBw bGllZCAoc2VlIGdyZWZfZGlyX25leHRfcGFnZSBiZWxvdykKPiBOb3cgd2hhdCBpZiBncmVmc19u ciAob3IgYnVmZmVyX3N6KSBpcyBzYXkgMSBwYWdlICg0MDk2KS4KPiBEb2VzIHRoYXQgbWVhbiB0 aGF0IGdyZWZfZGlyZWN0b3J5X3N0YXJ0IHN0aWxsIG5lZWRzIHRvIHBvaW50IHRvIHBhZ2UKPiB3 aGljaCBvbmx5IGhhcyB0d28gZW50cmllczogMCwgPGdyYW50IHJlZj4gPwo+Cj4gT3IgY2FuIGl0 IGJlIHNpbXBsaWZpZWQgYW5kIHRoaXMgZ3JlZl9kaXJlY3Rvcnlfc3RhcnQgd291bGQgYmUgdXNl ZCBmb3IKPiBkYXRhIGluc3RlYWQ/Cj4KPiBJIHRoaW5rIHRoYXQgaXMgd2hhdCB5b3Ugc2F5aW5n ICgiSWYgc2hhcmVkIC4uICIgd2hpY2ggd291bGQgaW1wbHkKPiB0aGF0IGlmICJpZiAhc2hhcmVk IiB0aGVuIHNvbWV0aGluZyBlbHNlIGNhbiBiZSBkb25lPykgYnV0IHRoZSBzdGFydAo+IHNheXM6 ICJhIHJlZmVyZW5jZSB0byB0aGUgZmlyc3Qgc2hhcmVkIHBhZ2UgZGVzY3JpYmluZCBzaGFyZWQg YnVmZmVyCj4gcmVmZXJlbmNlcyIgd2hpY2ggaW1wbGllcyB5b3UgZG8KPiBuZWVkIHRoaXMgZXh0 cmEgaW5kaXJlY3QgcGFnZSBldmVuIGlmIHRoZSBidWZmZXJfc3ogaXMgc2F5IDQwOTYuCj4gPwp5 ZXMsIHlvdSBnb3QgaXQgcmlnaHQuIHRoZSB1c2UtY2FzZXMgd2UgaGF2ZSBkbyB1c2UgYnVmZmVy cwpiaWdnZXIgdGhlbiA0Sywgc28gdGhpcyBpcyB3aHkgd2UgbmV2ZXIgdGhvdWdodCBvZiBzdWNo IGFuIG92ZXJoZWFkCj4KPgo+PiArICovCj4+ICsKPj4gK3N0cnVjdCB4ZW5zbmRfb3Blbl9yZXEg ewo+IHMvX29wZW5fcmVxL19yZXFfb3Blbi8KaXQgd2lsbCBiZSB5ZXQgYW5vdGhlciBmbGFtZSBo ZXJlLi4uCndpbGwga2VlcCBhcyBpcwo+PiArICAgIHVpbnQzMl90IHBjbV9yYXRlOyAvKiBpbiBI eiAqLwo+PiArICAgIHVpbnQ4X3QgcGNtX2Zvcm1hdDsKPj4gKyAgICB1aW50OF90IHBjbV9jaGFu bmVsczsKPj4gKyAgICB1aW50MTZfdCByZXNlcnZlZDsKPj4gKyAgICB1aW50MzJfdCBidWZmZXJf c3o7Cj4+ICsgICAgZ3JhbnRfcmVmX3QgZ3JlZl9kaXJlY3Rvcnlfc3RhcnQ7Cj4+ICt9Owo+PiAr Cj4+ICsvKgo+PiArICogU2hhcmVkIHBhZ2UgZm9yIFhFTlNORF9PUF9PUEVOIGJ1ZmZlciBkZXNj cmlwdG9yIChncmVmX2RpcmVjdG9yeSBpbiB0aGUKPj4gKyAqICAgcmVxdWVzdCkgZW1wbG95cyBh IGxpc3Qgb2YgcGFnZXMsIGRlc2NyaWJpbmcgYWxsIHBhZ2VzIG9mIHRoZSBzaGFyZWQgZGF0YQo+ PiArICogICBidWZmZXI6Cj4+ICsgKiAgICAgICAgICAwICAgICAgICAgICAgICAgICAxICAgICAg ICAgICAgICAgICAgMiAgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAo+PiArICogKy0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tKwo+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JlZl9kaXJfbmV4 dF9wYWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+PiArICogKy0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t Kwo+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JlZlswXSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfAo+PiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+PiArICog fC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvfAo+PiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+PiArICogfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ3JlZltpXSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfAo+PiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+PiArICogfC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAo+ PiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ3JlZltOIC0xXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+PiArICogKy0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tKwo+PiArICoKPj4gKyAqIGdyZWZfZGlyX25leHRfcGFnZSAtIGdyYW50X3Jl Zl90LCByZWZlcmVuY2UgdG8gdGhlIG5leHQgcGFnZSBkZXNjcmliaW5nCj4+ICsgKiAgIHBhZ2Ug ZGlyZWN0b3J5LiBNdXN0IGJlIDAgaWYgbm8gbW9yZSBwYWdlcyBpbiB0aGUgbGlzdC4KPiBzL25v IG1vcmUgcGFnZS90aGVyZSBhcmUgbm8gbW9yZS8KZG9uZQo+Cj4+ICsgKiBncmVmW2ldIC0gZ3Jh bnRfcmVmX3QsIHJlZmVyZW5jZSB0byBhIHNoYXJlZCBwYWdlIG9mIHRoZSBidWZmZXIKPj4gKyAq ICAgYWxsb2NhdGVkIGF0IFhFTlNORF9PUF9PUEVOCj4+ICsgKgo+PiArICogTnVtYmVyIG9mIGdy YW50X3JlZl90IGVudHJpZXMgaW4gdGhlIHdob2xlIHBhZ2UgZGlyZWN0b3J5IGlzIG5vdAo+PiAr ICogcGFzc2VkLCBidXQgaW5zdGVhZCBjYW4gYmUgY2FsY3VsYXRlZCBhczoKPj4gKyAqICAgbnVt X2dyZWZzX3RvdGFsID0gKFhFTlNORF9PUF9PUEVOLmJ1ZmZlcl9zeiArIFhFTl9QQUdFX1NJWkUg LSAxKSAvCj4+ICsgKiAgICAgICBYRU5fUEFHRV9TSVpFCj4KPiBBbmQgd2hhdCBhcmUgdGhlIGV4 cGVjdGVkIGVycm9ycz8gV291ZGwgaXQgbWFrZSBzZW5zZSB0byBkZWZpbmUgdGhvc2U/Cj4gU2F5 Ogo+Cj4gICBSZXR1cm5zOgo+ICAgCj4gICAtRU5PQlVGUzogQ2Fubm90IG1hcCB0aGF0IG1hbnkg YnVmZmVycy4KPiAgIC1FSU5WQUw6IEluY29ycmVjdCB2YWx1ZXMgaW4gdGhlIHJlcXVzdD8KQVRN LCB0aGUgWEVOU05EX1JTUF8/Pz8gYXJlIHJldHVybmVkCj4gICAtCj4+ICsgKi8KPj4gKwo+PiAr c3RydWN0IHhlbnNuZF9wYWdlX2RpcmVjdG9yeSB7Cj4+ICsgICAgZ3JhbnRfcmVmX3QgZ3JlZl9k aXJfbmV4dF9wYWdlOwo+PiArICAgIGdyYW50X3JlZl90IGdyZWZbMV07IC8qIFZhcmlhYmxlIGxl bmd0aCAqLwo+PiArfTsKPj4gKwo+PiArLyoKPj4gKyAqICBSZXF1ZXN0IGNsb3NlIC0gY2xvc2Ug YW4gb3BlbmVkIHBjbSBzdHJlYW06Cj4+ICsgKiAgICAgICAgICAwICAgICAgICAgICAgICAgICAx ICAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAo+PiArICog Ky0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tKwo+PiArICogfCAgICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAg ICAgfCBYRU5TTkRfT1BfQ0xPU0UgfCAgICAgc3RyZWFtX2lkeCAgfAo+PiArICogKy0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tKwo+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+PiArICogKy0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+ PiArICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvfAo+PiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+PiArICogfCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfAo+PiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+PiArICovCj4+ICsKPj4gKy8q Cj4+ICsgKiBSZXF1ZXN0IHJlYWQvd3JpdGUgLSB1c2VkIGZvciByZWFkIChmb3IgY2FwdHVyZSkg b3Igd3JpdGUgKGZvciBwbGF5YmFjayk6Cj4gTWF5YmUgc2F5IGFsc28gdGhhdCBYRU5TTkRfT1Bf T1BFTiBNVVNUIGJlIGNhbGxlZCBiZWZvcmUgdGhlc2Ugb3BlcmF0aW9ucwo+IGFyZSBwZXJtaXR0 ZWQuCm5vdCBzdXJlIHdlIG5lZWQgdGhpczogbm9ybWFsbHkgeW91IGhhdmUgdG8gb3BlbiBzb21l dGhpbmcKYmVmb3JlIHlvdSBjYW4gdXNlIGl0LCBlLmcuIGEgZmlsZQo+PiArICogICAgICAgICAg MCAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAgMyAg ICAgICAgb2N0ZXQKPj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqIHwgICAgICAgICAgICAg ICAgIGlkICAgICAgICAgICAgICAgIHwgICAgb3BlcmF0aW9uICAgIHwgICAgIHN0cmVhbV9pZHgg IHwKPj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPj4gKyAq ICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG9mZnNldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPj4gKyAqICstLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLSsKPj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPj4gKyAqICstLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsK Pj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwKPj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqIHwv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL3wKPj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqIHwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwKPj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqCj4+ICsgKiBvcGVyYXRpb24gLSBY RU5TTkRfT1BfUkVBRCBmb3IgcmVhZCBvciBYRU5TTkRfT1BfV1JJVEUgZm9yIHdyaXRlCj4+ICsg KiBvZmZzZXQgLSB1aW50MzJfdCwgcmVhZCBvciB3cml0ZSBkYXRhIG9mZnNldCB3aXRoaW4gdGhl IHNoYXJlZCBidWZmZXIKPj4gKyAqICAgcGFzc2VkIHdpdGggWEVOU05EX09QX09QRU4gcmVxdWVz dAo+IE1heSBhbHNvIHdhbnQgdG8gc2F5IHRoYXQgdGhpcyBvZmZzZXQgbXVzdCBiZSBsZXNzIHRo YW4gYnVmZmVyX3N6Lgo+Cj4gSW4gb2N0ZXRzPyBNYXkgd2FudCB0byBzYXkgdGhhdCBleHBsaWNp dGx5Lgpkb25lCj4KPj4gKyAqIGxlbmd0aCAtIHVpbnQzMl90LCByZWFkIG9yIHdyaXRlIGRhdGEg bGVuZ3RoCj4gSW4gb2N0ZXRzPwpkb25lCj4+ICsgKi8KPj4gKwo+PiArc3RydWN0IHhlbnNuZF9y d19yZXEgewo+PiArICAgIHVpbnQzMl90IG9mZnNldDsKPj4gKyAgICB1aW50MzJfdCBsZW47Cj4+ ICt9Owo+PiArCj4+ICsvKgo+PiArICogUmVxdWVzdCBzZXQvZ2V0IHZvbHVtZSAtIHNldC9nZXQg Y2hhbm5lbHMnIHZvbHVtZSBvZiB0aGUgc3RyZWFtIGdpdmVuOgo+PiArICogICAgICAgICAgMCAg ICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAgMyAgICAg ICAgb2N0ZXQKPj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqIHwgICAgICAgICAgICAgICAg IGlkICAgICAgICAgICAgICAgIHwgICAgb3BlcmF0aW9uICAgIHwgICAgIHN0cmVhbV9pZHggIHwK Pj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKPj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPj4gKyAqICst LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLSsKPj4gKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKPj4gKyAqICstLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLSsKPj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPj4gKyAqICstLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKPj4g KyAqCj4+ICsgKiBvcGVyYXRpb24gLSBYRU5TTkRfT1BfU0VUX1ZPTFVNRSBmb3Igdm9sdW1lIHNl dAo+PiArICogICBvciBYRU5TTkRfT1BfR0VUX1ZPTFVNRSBmb3Igdm9sdW1lIGdldAo+PiArICog QnVmZmVyIHBhc3NlZCB3aXRoIFhFTlNORF9PUF9PUEVOIGlzIHVzZWQgdG8gZXhjaGFuZ2Ugdm9s dW1lCj4+ICsgKiB2YWx1ZXM6Cj4gT2guIFRoYXQgbWVhbnMgeW91IHRoZXNlIG9wZXJhdGlvbiBh cmUgaW4gZWZmZWN0ICdiYXJyaWVyJyBvbmVzLgo+Cj4gQXMgdGhlIGJ1ZmZlciBtdXN0IGJlIGZs dXNoZWQgYmVmb3JlIGhhbmQgb3RoZXJ3aXNlIHlvdSB3b3VsZCBiZQo+IG92ZXJ3cml0aW5nIGRh dGEgc3RyZWFtIGluZm9ybWF0aW9uLgo+Cj4gWW91IHNob3VsZCBwcm9iYWJseSBtZW50aW9uIHRo aXMgc2VtYW50aWMgbmVlZD8KSSB0aGluayB0aGlzIGlzIGltcGxlbWVudGF0aW9uIHNwZWNpZmlj IGFuZCBzaG91bGRuJ3QKYmUgaW4gYSBnZW5lcmljIHByb3RvY29sCj4KPiBPciBhbHRlcm5hdGl2 ZWx5IHRoZSBYRU5TTkRfT1BfU0VUX1ZPTFVNRS9YRU5TTkRfT1BfR0VUX1ZPTFVNRSBjb3VsZCBo YXZlCj4gYSBzaW1pbGFyIHN0cnVjdHVyZSB0byAnc3RydWN0IHhlbnNuZF9yd19yZXEnIHNvIHRo YXQgeW91IGhhdmUKPiB0aGUgb2Zmc2V0IGFuZCBsZW4/CmEgcGFnZSBjYW4gaG9sZCBlbm91Z2gg dmFsdWVzLCBJTU8KPj4gKyAqCj4+ICsgKiAgICAgICAgICAwICAgICAgICAgICAgICAgICAxICAg ICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAo+PiArICogKy0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tKwo+PiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFu bmVsWzBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+PiArICogKy0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tKwo+PiArICogKy9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAo+PiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+PiAr ICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsW2ldICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfAo+PiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+PiArICogKy9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvfAo+PiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+PiArICogfCAgICAgICAgICAgICAg ICBjaGFubmVsW1hFTlNORF9PUF9PUEVOLnBjbV9jaGFubmVscyAtIDFdICAgICAgICAgICAgICAg fAo+PiArICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwo+PiArICoKPj4gKyAqIGNoYW5uZWxbaV0gLSBzaW50 MzJfdCwgdm9sdW1lIG9mIGktdGggY2hhbm5lbAo+IFlvdSBtYXkgd2FudCB0byBzYXkgdGhhdCBp IGlzIHVpbnQ4X3QuCmRvbmUKPgo+PiArICogVm9sdW1lIGlzIGV4cHJlc3NlZCBhcyBhIHNpZ25l ZCB2YWx1ZSBpbiBzdGVwcyBvZiAwLjAwMSBkQiwKPj4gKyAqIHdoaWxlIDAgYmVpbmcgMCBkQi4K Pj4gKyAqLwo+PiArCj4+ICsvKgo+PiArICogUmVxdWVzdCBtdXRlL3VubXV0ZSAtIG11dGUvdW5t dXRlIHN0cmVhbToKPj4gKyAqICAgICAgICAgIDAgICAgICAgICAgICAgICAgIDEgICAgICAgICAg ICAgICAgICAyICAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0Cj4+ICsgKiArLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0rCj4+ICsgKiB8ICAgICAgICAgICAgICAgICBpZCAgICAgICAgICAgICAgICB8ICAgIG9w ZXJhdGlvbiAgICB8ICAgICBzdHJlYW1faWR4ICB8Cj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCj4+ ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8Cj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKiB8L1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC98Cj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKiB8ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8Cj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKgo+PiArICogb3BlcmF0aW9uIC0gWEVO U05EX09QX01VVEUgZm9yIG11dGUgb3IgWEVOU05EX09QX1VOTVVURSBmb3IgdW5tdXRlCj4+ICsg KiBCdWZmZXIgcGFzc2VkIHdpdGggWEVOU05EX09QX09QRU4gaXMgdXNlZCB0byBleGNoYW5nZSBt dXRlL3VubXV0ZQo+PiArICogdmFsdWVzOgo+IEFnYWluLCBzYW1lIGNvbW1lbnRzIGFzIGFib3Zl Lgo+PiArICoKPj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9jdGV0Cj4+ICsgKiArLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rCj4+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxbMF0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+ICsg KiArL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC98Cj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKiB8ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxbaV0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8Cj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKiArL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98 Cj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKiB8ICAgICAgICAgICAgICAgIGNoYW5uZWxb WEVOU05EX09QX09QRU4ucGNtX2NoYW5uZWxzIC0gMV0gICAgICAgICAgICAgICB8Cj4+ICsgKiAr LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0rCj4+ICsgKgo+PiArICogY2hhbm5lbFtpXSAtIHVpbnQ4X3QsIG5vbi16 ZXJvIGlmIGktdGggY2hhbm5lbCBuZWVkcyB0byBiZSBtdXRlZC91bm11dGVkCj4+ICsgKi8KPj4g Kwo+PiArLyoKPj4gKyAqIEFsbCByZXNwb25zZSBwYWNrZXRzIGhhdmUgdGhlIHNhbWUgbGVuZ3Ro ICgzMiBvY3RldHMpCj4+ICsgKgo+PiArICogUmVzcG9uc2UgZm9yIGFsbCByZXF1ZXN0czoKPj4g KyAqICAgICAgICAgIDAgICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgICAyICAgICAg ICAgICAgICAgIDMgICAgICAgIG9jdGV0Cj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKiB8 ICAgICAgICAgICAgICAgICBpZCAgICAgICAgICAgICAgICB8ICAgIG9wZXJhdGlvbiAgICB8ICAg ICBzdHJlYW1faWR4ICB8Cj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKiB8ICAgICAgc3Rh dHVzICAgICB8ICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAg ICAgICB8Cj4+ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKiB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4+ ICsgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0rCj4+ICsgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98Cj4+ICsgKiArLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0rCj4+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2Vy dmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4+ICsgKiArLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0rCj4+ICsgKgo+PiArICogaWQgLSB1aW50MTZfdCwgY29waWVkIGZyb20gdGhlIHJlcXVlc3QK Pj4gKyAqIHN0cmVhbV9pZHggLSB1aW50OF90LCBjb3BpZWQgZnJvbSByZXF1ZXN0Cj4+ICsgKiBv cGVyYXRpb24gLSB1aW50OF90LCBYRU5TTkRfT1BfKiAtIGNvcGllZCBmcm9tIHJlcXVlc3QKPj4g KyAqIHN0YXR1cyAtIGludDhfdCwgcmVzcG9uc2Ugc3RhdHVzIChYRU5TTkRfUlNQXyopCj4gQ291 bGQgdGhpcyBiZWNvbWUgYW4gJ2VycicgYW5kIHRoZSBQT1NJWCB2YWx1ZXMgdXNlZCBmb3IgZXJy b3JzPwo+CndlIGNhbiBkaXNjdXNzIHRoaXMsIEkgYW0gZmluZSB3aXRoIHRoaXMgYXBwcm9hY2gg aWYgdGhlCkNvbW11bml0eSBhY2NlcHRzIHRoaXMKPj4gKyAqLwo+PiArCj4+ICtzdHJ1Y3QgeGVu c25kX3JlcSB7Cj4+ICsgICAgdWludDE2X3QgaWQ7Cj4+ICsgICAgdWludDhfdCBvcGVyYXRpb247 Cj4+ICsgICAgdWludDhfdCBzdHJlYW1faWR4Owo+PiArICAgIHVpbnQzMl90IHJlc2VydmVkOwo+ PiArICAgIHVuaW9uIHsKPj4gKyAgICAgICAgc3RydWN0IHhlbnNuZF9vcGVuX3JlcSBvcGVuOwo+ PiArICAgICAgICBzdHJ1Y3QgeGVuc25kX3J3X3JlcSBydzsKPj4gKyAgICAgICAgdWludDhfdCBy ZXNlcnZlZFsyNF07Cj4+ICsgICAgfSBvcDsKPj4gK307Cj4+ICsKPj4gK3N0cnVjdCB4ZW5zbmRf cmVzcCB7Cj4+ICsgICAgdWludDE2X3QgaWQ7Cj4+ICsgICAgdWludDhfdCBvcGVyYXRpb247Cj4+ ICsgICAgdWludDhfdCBzdHJlYW1faWR4Owo+PiArICAgIGludDhfdCBzdGF0dXM7Cj4+ICsgICAg dWludDhfdCByZXNlcnZlZFsyN107Cj4+ICt9Owo+PiArCj4+ICtERUZJTkVfUklOR19UWVBFUyh4 ZW5fc25kaWYsIHN0cnVjdCB4ZW5zbmRfcmVxLCBzdHJ1Y3QgeGVuc25kX3Jlc3ApOwo+PiArCj4+ ICsjZW5kaWYgLyogX19YRU5fUFVCTElDX0lPX1NORElGX0hfXyAqLwo+PiAtLSAKPj4gMi43LjQK Pj4KCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4t ZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMu eGVuLm9yZy94ZW4tZGV2ZWwK