VGhlIG1haW4gZnVuY3Rpb24gaXMgYSBmbHVzaCBjZWlsaW5nIGZsb29kbGlnaHQgYmVkIHJlYWRp bmcgbGlnaHQsIHdpdGggCnRoZSBYLTEwIGZ1bmN0aW9uIGFsbW9zdCByYXJlbHkgdXNlZCBmb3Ig c2VjdXJpdHkgcHVycG9zZXMuIFRoZXJlZm9yZSAKbWFudWFsIG9wZXJhdGlvbiBhdCB0aGUgc3dp dGNoIGlzIG5lY2Vzc2FyeS4gOigKCk9uIDEvMTAvMTMgNDo1OSBQTSwgQUsgd3JvdGU6Cj4gVGhl IGxlYWthZ2UgY3VycmVudCBtYXkgYXJpc2UgZnJvbSB0aGUgeDEwIGRldmljZSdzIGFiaWxpdHkg dG8gZGV0ZWN0Cj4gd2hlbiBhIGxhbXAgaXMgdHVybmVkIG9mZiwgdGhlbiBvbiBpbiBvcmRlciB0 byBpdHNlbGYgdHVybiBvbiBhdCB0aGUKPiBzYW1lIHRpbWUuICBZb3UgbWlnaHQgYmUgYWJsZSB0 byByZW1vdmUgdGhlIHNlbnNlIGxlYWthZ2UgcmVzaXN0b3IKPiBmcm9tIHRoZSB4MTAgY2lyY3Vp dCBhbmQgYXZvaWQgdGhlIExFRCBsaWdodCBibGlua2luZy4gIEluIHRoaXMgY2FzZSwKPiB0aGUg eDEwIGRldmljZSB3aWxsIG5vIGxvbmdlciBiZSBhYmxlIHRvIHNlbnNlIHRoZSBsYW1wIGJlaW5n IHR1cm5lZAo+IG9mZiB0aGVuIG9uIGFuZCB5b3Ugd2lsbCBoYXZlIHRvIG9wZXJhdGUgdGhlIHgx MCBkZXZpY2UgaXRzZWxmCj4gaW5zdGVhZC4KPgo+Cj4KPiBPbiBUaHUsIEphbiAxMCwgMjAxMyBh dCAxOjQ4IFBNLCBDYXJsIERlbmsgPGNkZW5rQHdpbmRzdHJlYW0ubmV0PiB3cm90ZToKPj4gSSB0 aGluayB0aGF0IHRoZSBsZWFrYWdlIGN1cnJlbnQsIGFsdGhvdWdoIHNtYWxsIGlzIHNvbWV0aGlu ZyBJIHdvdWxkCj4+IGxpa2UgdG8gZ2V0IHJpZCBvZiwgd2hpY2ggcG9pbnRzIHRvd2FyZCBhbiBY LTEwIGNvbnRyb2xsZXIgd2l0aCBhbgo+PiBhY3R1YWwgcmVsYXkuIFRoZSBjbGlja2luZyBpc24n dCBhIGNvbmNlcm4gc2luY2UgYWJvdXQgdGhlIG9ubHkgdGltZSBpdAo+PiB3b3VsZCBiZSBhY3R2 YXRlZCwgaXMgd2hlbiB0aGUgWC0xMCBjb250cm9sbGVyIChhIGNsb2NrIHdpdGggNCBwcmVzZXQK Pj4gdGltZXMgd2l0aCArLy0gMSBob3VyIHJhbmRvbSB2YXJpYWJpbGl0eSkgaXMgYWN0aXZhdGVk IHRvIHNpbXVsYXRlCj4+IHNvbWVvbmUgaG9tZSBpbiB0aGUgaG91c2UuCj4+Cj4+IEFsdGhvdWdo IEJvYidzIHN1Z2dlc3Rpb24gb2YgYWRkaW5nIGNhcGFjaXRvcnMgaGFzIG1lcml0LCBJIHRlbmQg dG8gaGVhZAo+PiBpbiB0aGUgZGlyZWN0aW9uIG9mIGEgdG90YWwgc2h1dCBvZmYuCj4+Cj4+IFNJ bmNlIEkgaGF2ZSBmb3VuZCB0aGUgSW5zdGVvbiAyNDc2RCBhbmQgaXQncyByZXBhbGNlbWVudCAy NDc3RCBkaW1tZXIKPj4gc3dpdGNoZXMgdGhhdCBzdXBwb3NlZGx5IHdpbGwgZG8gdGhlIGpvYi4g QW0gZ29pbmcgdG8gY2hlY2sgdG8gc2VlIGlmIGl0Cj4+IGlzIGxvY2FsbHkgYXZhaWxhYmxlIGFu ZCB0cnkgaXQuIEp1c3QgZGlzY292ZXJlZCB0aGVyZSBpcyBubyBuZXV0cmFsCj4+IHdpcmUgY29t aW5nIHRvIHRoZSBleGlzdGluZyBkaW1tZXIgc3dpdGNoLiBUaGF0J3MgYSBzbWFsbCBqb2IgdG8g cmVwbGFjZQo+PiB0aGUgMiB3aXJlIHJvbWV4IHdpdGggMyB3aXJlLCBvciBldmVuIHJ1biBhIHNl Y29uZCBjYWJsZSB0byBnZXQgdGhlCj4+IHBvd2VyIGludG8gdGhlIHdhbGwgYm94LiBBbHNvIGNv dWxkIHB1dCBhIFgtMTAgcmVsYXkgdW5pdCBhdCB0aGUgbG9jYWwKPj4gcG93ZXIgc291cmNlIHdo Y2loIHdvdWxkIHdvcmsgYWxzbywgYnV0J3MgbW9yZSB3b3JrLgo+Pgo+PiBUaGFua3MgZm9yIHRo ZSByZXBsaWVzLgo+Pgo+PiAgICBPbiAxLzEwLzEzIDE6MTQgUE0sIEx5bGUgSGF6ZWx3b29kIHdy b3RlOgo+Pj4gSSBiZWxpZXZlIHRoZSAibGVha2FnZSBjdXJyZW50IiBpc3N1ZSBpcyBvbmx5IGZv ciBkaW1tYWJsZSBsYW1wCj4+PiBtb2R1bGVzLiBUaGUgcmVsYXkgdHlwZSAiQXBwbGlhbmNlIE1v ZHVsZXMiIHNob3VsZCB3b3JrIGZpbmUgZm9yIHlvdSwKPj4+IGFzc3VtaW5nIHlvdSBoYXZlIGxv Y2FsIGRpbW1lcnMgQUZURVIgdGhlIG1vZHVsZSwgYW5kIHRoYXQgeW91IGRvbid0Cj4+PiBtaW5k IHRoZSBjbGlja2luZyBub2lzZSB3aGVuIG9wZXJhdGVkLgo+Pj4KPj4+IEkgdXNlZCB0byBoYXZl IG1vc3Qgb2YgbXkgaG91c2Ugc2V0IHVwIHdpdGggWC0xMCByZWxpYWJseS4gTXkKPj4+IGV4cGVy aWVuY2Ugd2FzIHRoYXQgdGhlIHBlcmZvcm1hbmNlIGRyb3BwZWQgb2ZmIGFzIHRoZSBudW1iZXIg b2YKPj4+IHN3aXRjaGluZyBzdXBwbGllcyBpbiB0aGUgaG91c2UgZ3Jldy4KPj4+Cj4+PiBPbiAx LzEwLzEzLCBKb++/vW8gQ2FybmVpcm8gPGJhcHRpc3RhLmNhcm5laXJvQGdtYWlsLmNvbT4gd3Jv dGU6Cj4+Pj4gaWYgeW91IGhhdmUgb25lIG9mIHRob3NlIG9uIG9mZiB1bml0cyB5b3UganVzdCBu ZWVkIGEgc3VpdGFibGUgbGVkIGRyaXZlcgo+Pj4+IHRoYXQgaXMgY29ubmVjdGVkIHRocm91Z2gg aXQuCj4+Pj4KPj4+PiBvciBkaWQgaSBnZXQgeW91IHdyb25nPwo+Pj4+Cj4+Pj4gY2hlZXJzLAo+ Pj4+Cj4+Pj4gSkMKPj4+Pgo+Pj4+Cj4+Pj4gMjAxMy8xLzEwIENhcmwgRGVuayA8Y2RlbmtAd2lu ZHN0cmVhbS5uZXQ+Cj4+Pj4KPj4+Pj4gbG9jYWxseS4gV2UgdXNlIHRoZSBYLTEwIHRvIHR1cm4g b24vb2ZmIGxpZ2h0cyBhcm91bmQgdGhlIGhvdXNlIGZvcgo+Pj4+Pgo+Pj4+IC0tCj4+Pj4gaHR0 cDovL3d3dy5waWNsaXN0LmNvbSBQSUMvU1ggRkFRICYgbGlzdCBhcmNoaXZlCj4+Pj4gVmlldy9j aGFuZ2UgeW91ciBtZW1iZXJzaGlwIG9wdGlvbnMgYXQKPj4+PiBodHRwOi8vbWFpbG1hbi5taXQu ZWR1L21haWxtYW4vbGlzdGluZm8vcGljbGlzdAo+Pj4+Cj4+IC0tCj4+IGh0dHA6Ly93d3cucGlj bGlzdC5jb20gUElDL1NYIEZBUSAmIGxpc3QgYXJjaGl2ZQo+PiBWaWV3L2NoYW5nZSB5b3VyIG1l bWJlcnNoaXAgb3B0aW9ucyBhdAo+PiBodHRwOi8vbWFpbG1hbi5taXQuZWR1L21haWxtYW4vbGlz dGluZm8vcGljbGlzdAoKLS0gCmh0dHA6Ly93d3cucGljbGlzdC5jb20gUElDL1NYIEZBUSAmIGxp c3QgYXJjaGl2ZQpWaWV3L2NoYW5nZSB5b3VyIG1lbWJlcnNoaXAgb3B0aW9ucyBhdApodHRwOi8v bWFpbG1hbi5taXQuZWR1L21haWxtYW4vbGlzdGluZm8vcGljbGlzdAo= .