SW50cm8KPT09PT0KClRoaXMgZG9jdW1lbnQgaXMgZGVzaWduZWQgdG8gcHJvdmlkZSBhIGxpc3Qgb2YgdGhlIG1pbmltdW0gbGV2ZWxzIG9mCnNvZnR3YXJlIG5lY2Vzc2FyeSB0byBydW4gdGhlIDIuNiBrZXJuZWxzLCBhcyB3ZWxsIGFzIHByb3ZpZGUgYnJpZWYKaW5zdHJ1Y3Rpb25zIHJlZ2FyZGluZyBhbnkgb3RoZXIgIkdvdGNoYXMiIHVzZXJzIG1heSBlbmNvdW50ZXIgd2hlbgp0cnlpbmcgbGlmZSBvbiB0aGUgQmxlZWRpbmcgRWRnZS4gIElmIHVwZ3JhZGluZyBmcm9tIGEgcHJlLTIuNC54Cmtlcm5lbCwgcGxlYXNlIGNvbnN1bHQgdGhlIENoYW5nZXMgZmlsZSBpbmNsdWRlZCB3aXRoIDIuNC54IGtlcm5lbHMgZm9yCmFkZGl0aW9uYWwgaW5mb3JtYXRpb247IG1vc3Qgb2YgdGhhdCBpbmZvcm1hdGlvbiB3aWxsIG5vdCBiZSByZXBlYXRlZApoZXJlLiAgQmFzaWNhbGx5LCB0aGlzIGRvY3VtZW50IGFzc3VtZXMgdGhhdCB5b3VyIHN5c3RlbSBpcyBhbHJlYWR5CmZ1bmN0aW9uYWwgYW5kIHJ1bm5pbmcgYXQgbGVhc3QgMi40Lngga2VybmVscy4KClRoaXMgZG9jdW1lbnQgaXMgb3JpZ2luYWxseSBiYXNlZCBvbiBteSAiQ2hhbmdlcyIgZmlsZSBmb3IgMi4wLngga2VybmVscwphbmQgdGhlcmVmb3JlIG93ZXMgY3JlZGl0IHRvIHRoZSBzYW1lIHBlb3BsZSBhcyB0aGF0IGZpbGUgKEphcmVkIE1hdWNoLApBeGVsIEJvbGR0LCBBbGVzc2FuZHJvIFNpZ2FsYSwgYW5kIGNvdW50bGVzcyBvdGhlciB1c2VycyBhbGwgb3ZlciB0aGUKJ25ldCkuCgpUaGUgbGF0ZXN0IHJldmlzaW9uIG9mIHRoaXMgZG9jdW1lbnQsIGluIHZhcmlvdXMgZm9ybWF0cywgY2FuIGFsd2F5cwpiZSBmb3VuZCBhdCA8aHR0cDovL2N5YmVyYnV6ei5nYXRlY2guZWR1L2thYm9vbS9saW51eC9DaGFuZ2VzLTIuNC8+LgoKRmVlbCBmcmVlIHRvIHRyYW5zbGF0ZSB0aGlzIGRvY3VtZW50LiAgSWYgeW91IGRvIHNvLCBwbGVhc2Ugc2VuZCBtZSBhClVSTCB0byB5b3VyIHRyYW5zbGF0aW9uIGZvciBpbmNsdXNpb24gaW4gZnV0dXJlIHJldmlzaW9ucyBvZiB0aGlzCmRvY3VtZW50LgoKU21vdHJpdGUgZmlsZSA8aHR0cDovL29ibG9tLnJuYy5ydS9saW51eC9rZXJuZWwvQ2hhbmdlcy5ydT4sIHlhdmx5YXVzaGlzeWEKcnVzc2tpbSBwZXJldm9kb20gZGFubm9nbyBkb2N1bWVudGEuCgpWaXNpdGUgPGh0dHA6Ly93d3cyLmFkaS51YW0uZXMvfmVuZGVyL3RlY25pY28vPiBwYXJhIG9idGVuZXIgbGEgdHJhZHVjY2nzbgphbCBlc3Bh8W9sIGRlIGVzdGUgZG9jdW1lbnRvIGVuIHZhcmlvcyBmb3JtYXRvcy4KCkVpbmUgZGV1dHNjaGUgVmVyc2lvbiBkaWVzZXIgRGF0ZWkgZmluZGVuIFNpZSB1bnRlcgo8aHR0cDovL3d3dy5zdGVmYW4td2ludGVyLmRlL0NoYW5nZXMtMi40LjAudHh0Pi4KCkxhc3QgdXBkYXRlZDogT2N0b2JlciAyOXRoLCAyMDAyCgpDaHJpcyBSaWNrZXIgKGthYm9vbUBnYXRlY2guZWR1IG9yIGNocmlzLnJpY2tlckBnZW5ldGljcy51dGFoLmVkdSkuCgpDdXJyZW50IE1pbmltYWwgUmVxdWlyZW1lbnRzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT0KClVwZ3JhZGUgdG8gYXQgKmxlYXN0KiB0aGVzZSBzb2Z0d2FyZSByZXZpc2lvbnMgYmVmb3JlIHRoaW5raW5nIHlvdSd2ZQplbmNvdW50ZXJlZCBhIGJ1ZyEgIElmIHlvdSdyZSB1bnN1cmUgd2hhdCB2ZXJzaW9uIHlvdSdyZSBjdXJyZW50bHkKcnVubmluZywgdGhlIHN1Z2dlc3RlZCBjb21tYW5kIHNob3VsZCB0ZWxsIHlvdS4KCkFnYWluLCBrZWVwIGluIG1pbmQgdGhhdCB0aGlzIGxpc3QgYXNzdW1lcyB5b3UgYXJlIGFscmVhZHkKZnVuY3Rpb25hbGx5IHJ1bm5pbmcgYSBMaW51eCAyLjQga2VybmVsLiAgQWxzbywgbm90IGFsbCB0b29scyBhcmUKbmVjZXNzYXJ5IG9uIGFsbCBzeXN0ZW1zOyBvYnZpb3VzbHksIGlmIHlvdSBkb24ndCBoYXZlIGFueSBJU0ROCmhhcmR3YXJlLCBmb3IgZXhhbXBsZSwgeW91IHByb2JhYmx5IG5lZWRuJ3QgY29uY2VybiB5b3Vyc2VsZiB3aXRoCmlzZG40ay11dGlscy4KCm8gIEdudSBDICAgICAgICAgICAgICAgICAgMi45NS4zICAgICAgICAgICAgICAgICAgIyBnY2MgLS12ZXJzaW9uCm8gIEdudSBtYWtlICAgICAgICAgICAgICAgMy43OS4xICAgICAgICAgICAgICAgICAgIyBtYWtlIC0tdmVyc2lvbgpvICBiaW51dGlscyAgICAgICAgICAgICAgIDIuMTIgICAgICAgICAgICAgICAgICAgICMgbGQgLXYKbyAgdXRpbC1saW51eCAgICAgICAgICAgICAyLjEwbyAgICAgICAgICAgICAgICAgICAjIGZkZm9ybWF0IC0tdmVyc2lvbgpvICBtb2R1bGUtaW5pdC10b29scyAgICAgIDAuOS4xMCAgICAgICAgICAgICAgICAgICMgZGVwbW9kIC1WCm8gIGUyZnNwcm9ncyAgICAgICAgICAgICAgMS4yOSAgICAgICAgICAgICAgICAgICAgIyB0dW5lMmZzCm8gIGpmc3V0aWxzICAgICAgICAgICAgICAgMS4xLjMgICAgICAgICAgICAgICAgICAgIyBmc2NrLmpmcyAtVgpvICByZWlzZXJmc3Byb2dzICAgICAgICAgIDMuNi4zICAgICAgICAgICAgICAgICAgICMgcmVpc2VyZnNjayAtViAyPiYxfGdyZXAgcmVpc2VyZnNwcm9ncwpvICB4ZnNwcm9ncyAgICAgICAgICAgICAgIDIuNi4wICAgICAgICAgICAgICAgICAgICMgeGZzX2RiIC1WCm8gIHBjbWNpYXV0aWxzICAgICAgICAgICAgMDA0Cm8gIHBjbWNpYS1jcyAgICAgICAgICAgICAgMy4xLjIxICAgICAgICAgICAgICAgICAgIyBjYXJkbWdyIC1WCm8gIHF1b3RhLXRvb2xzICAgICAgICAgICAgMy4wOSAgICAgICAgICAgICAgICAgICAgIyBxdW90YSAtVgpvICBQUFAgICAgICAgICAgICAgICAgICAgIDIuNC4wICAgICAgICAgICAgICAgICAgICMgcHBwZCAtLXZlcnNpb24KbyAgaXNkbjRrLXV0aWxzICAgICAgICAgICAzLjFwcmUxICAgICAgICAgICAgICAgICAjIGlzZG5jdHJsIDI+JjF8Z3JlcCB2ZXJzaW9uCm8gIG5mcy11dGlscyAgICAgICAgICAgICAgMS4wLjUgICAgICAgICAgICAgICAgICAgIyBzaG93bW91bnQgLS12ZXJzaW9uCm8gIHByb2NwcyAgICAgICAgICAgICAgICAgMy4yLjAgICAgICAgICAgICAgICAgICAgIyBwcyAtLXZlcnNpb24KbyAgb3Byb2ZpbGUgICAgICAgICAgICAgICAwLjkgICAgICAgICAgICAgICAgICAgICAjIG9wcm9maWxlZCAtLXZlcnNpb24KCktlcm5lbCBjb21waWxhdGlvbgo9PT09PT09PT09PT09PT09PT0KCkdDQwotLS0KClRoZSBnY2MgdmVyc2lvbiByZXF1aXJlbWVudHMgbWF5IHZhcnkgZGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIENQVSBpbiB5b3VyCmNvbXB1dGVyLiBUaGUgbmV4dCBwYXJhZ3JhcGggYXBwbGllcyB0byB1c2VycyBvZiB4ODYgQ1BVcywgYnV0IG5vdApuZWNlc3NhcmlseSB0byB1c2VycyBvZiBvdGhlciBDUFVzLiBVc2VycyBvZiBvdGhlciBDUFVzIHNob3VsZCBvYnRhaW4KaW5mb3JtYXRpb24gYWJvdXQgdGhlaXIgZ2NjIHZlcnNpb24gcmVxdWlyZW1lbnRzIGZyb20gYW5vdGhlciBzb3VyY2UuCgpUaGUgcmVjb21tZW5kZWQgY29tcGlsZXIgZm9yIHRoZSBrZXJuZWwgaXMgZ2NjIDIuOTUueCAoeCA+PSAzKSwgYW5kIGl0CnNob3VsZCBiZSB1c2VkIHdoZW4geW91IG5lZWQgYWJzb2x1dGUgc3RhYmlsaXR5LiBZb3UgbWF5IHVzZSBnY2MgMy4wLngKaW5zdGVhZCBpZiB5b3Ugd2lzaCwgYWx0aG91Z2ggaXQgbWF5IGNhdXNlIHByb2JsZW1zLiBMYXRlciB2ZXJzaW9ucyBvZiBnY2MgCmhhdmUgbm90IHJlY2VpdmVkIG11Y2ggdGVzdGluZyBmb3IgTGludXgga2VybmVsIGNvbXBpbGF0aW9uLCBhbmQgdGhlcmUgYXJlIAphbG1vc3QgY2VydGFpbmx5IGJ1Z3MgKG1haW5seSwgYnV0IG5vdCBleGNsdXNpdmVseSwgaW4gdGhlIGtlcm5lbCkgdGhhdAp3aWxsIG5lZWQgdG8gYmUgZml4ZWQgaW4gb3JkZXIgdG8gdXNlIHRoZXNlIGNvbXBpbGVycy4gSW4gYW55IGNhc2UsIHVzaW5nCnBnY2MgaW5zdGVhZCBvZiBwbGFpbiBnY2MgaXMganVzdCBhc2tpbmcgZm9yIHRyb3VibGUuCgpUaGUgUmVkIEhhdCBnY2MgMi45NiBjb21waWxlciBzdWJ0cmVlIGNhbiBhbHNvIGJlIHVzZWQgdG8gYnVpbGQgdGhpcyB0cmVlLgpZb3Ugc2hvdWxkIGVuc3VyZSB5b3UgdXNlIGdjYy0yLjk2LTc0IG9yIGxhdGVyLiBnY2MtMi45Ni01NCB3aWxsIG5vdCBidWlsZAp0aGUga2VybmVsIGNvcnJlY3RseS4KCkluIGFkZGl0aW9uLCBwbGVhc2UgcGF5IGF0dGVudGlvbiB0byBjb21waWxlciBvcHRpbWl6YXRpb24uICBBbnl0aGluZwpncmVhdGVyIHRoYW4gLU8yIG1heSBub3QgYmUgd2lzZS4gIFNpbWlsYXJseSwgaWYgeW91IGNob29zZSB0byB1c2UgZ2NjLTIuOTUueApvciBkZXJpdmF0aXZlcywgYmUgc3VyZSBub3QgdG8gdXNlIC1mc3RyaWN0LWFsaWFzaW5nICh3aGljaCwgZGVwZW5kaW5nIG9uCnlvdXIgdmVyc2lvbiBvZiBnY2MgMi45NS54LCBtYXkgbmVjZXNzaXRhdGUgdXNpbmcgLWZuby1zdHJpY3QtYWxpYXNpbmcpLgoKTWFrZQotLS0tCgpZb3Ugd2lsbCBuZWVkIEdudSBtYWtlIDMuNzkuMSBvciBsYXRlciB0byBidWlsZCB0aGUga2VybmVsLgoKQmludXRpbHMKLS0tLS0tLS0KCkxpbnV4IG9uIElBLTMyIGhhcyByZWNlbnRseSBzd2l0Y2hlZCBmcm9tIHVzaW5nIGFzODYgdG8gdXNpbmcgZ2FzIGZvcgphc3NlbWJsaW5nIHRoZSAxNi1iaXQgYm9vdCBjb2RlLCByZW1vdmluZyB0aGUgbmVlZCBmb3IgYXM4NiB0byBjb21waWxlCnlvdXIga2VybmVsLiAgVGhpcyBjaGFuZ2UgZG9lcywgaG93ZXZlciwgbWVhbiB0aGF0IHlvdSBuZWVkIGEgcmVjZW50CnJlbGVhc2Ugb2YgYmludXRpbHMuCgpTeXN0ZW0gdXRpbGl0aWVzCj09PT09PT09PT09PT09PT0KCkFyY2hpdGVjdHVyYWwgY2hhbmdlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkRldkZTIGhhcyBiZWVuIG9ic29sZXRlZCBpbiBmYXZvdXIgb2YgdWRldgooaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9saW51eC91dGlscy9rZXJuZWwvaG90cGx1Zy8pCgozMi1iaXQgVUlEIHN1cHBvcnQgaXMgbm93IGluIHBsYWNlLiAgSGF2ZSBmdW4hCgpMaW51eCBkb2N1bWVudGF0aW9uIGZvciBmdW5jdGlvbnMgaXMgdHJhbnNpdGlvbmluZyB0byBpbmxpbmUKZG9jdW1lbnRhdGlvbiB2aWEgc3BlY2lhbGx5LWZvcm1hdHRlZCBjb21tZW50cyBuZWFyIHRoZWlyCmRlZmluaXRpb25zIGluIHRoZSBzb3VyY2UuICBUaGVzZSBjb21tZW50cyBjYW4gYmUgY29tYmluZWQgd2l0aCB0aGUKU0dNTCB0ZW1wbGF0ZXMgaW4gdGhlIERvY3VtZW50YXRpb24vRG9jQm9vayBkaXJlY3RvcnkgdG8gbWFrZSBEb2NCb29rCmZpbGVzLCB3aGljaCBjYW4gdGhlbiBiZSBjb252ZXJ0ZWQgYnkgRG9jQm9vayBzdHlsZXNoZWV0cyB0byBQb3N0U2NyaXB0LApIVE1MLCBQREYgZmlsZXMsIGFuZCBzZXZlcmFsIG90aGVyIGZvcm1hdHMuICBJbiBvcmRlciB0byBjb252ZXJ0IGZyb20KRG9jQm9vayBmb3JtYXQgdG8gYSBmb3JtYXQgb2YgeW91ciBjaG9pY2UsIHlvdSdsbCBuZWVkIHRvIGluc3RhbGwgSmFkZSBhcwp3ZWxsIGFzIHRoZSBkZXNpcmVkIERvY0Jvb2sgc3R5bGVzaGVldHMuCgpVdGlsLWxpbnV4Ci0tLS0tLS0tLS0KCk5ldyB2ZXJzaW9ucyBvZiB1dGlsLWxpbnV4IHByb3ZpZGUgKmZkaXNrIHN1cHBvcnQgZm9yIGxhcmdlciBkaXNrcywKc3VwcG9ydCBuZXcgb3B0aW9ucyB0byBtb3VudCwgcmVjb2duaXplIG1vcmUgc3VwcG9ydGVkIHBhcnRpdGlvbgp0eXBlcywgaGF2ZSBhIGZkZm9ybWF0IHdoaWNoIHdvcmtzIHdpdGggMi40IGtlcm5lbHMsIGFuZCBzaW1pbGFyIGdvb2RpZXMuCllvdSdsbCBwcm9iYWJseSB3YW50IHRvIHVwZ3JhZGUuCgpLc3ltb29wcwotLS0tLS0tLQoKSWYgdGhlIHVudGhpbmthYmxlIGhhcHBlbnMgYW5kIHlvdXIga2VybmVsIG9vcHNlcywgeW91J2xsIG5lZWQgYSAyLjQKdmVyc2lvbiBvZiBrc3ltb29wcyB0byBkZWNvZGUgdGhlIHJlcG9ydDsgc2VlIFJFUE9SVElORy1CVUdTIGluIHRoZQpyb290IG9mIHRoZSBMaW51eCBzb3VyY2UgZm9yIG1vcmUgaW5mb3JtYXRpb24uCgpNb2R1bGUtSW5pdC1Ub29scwotLS0tLS0tLS0tLS0tLS0tLQoKQSBuZXcgbW9kdWxlIGxvYWRlciBpcyBub3cgaW4gdGhlIGtlcm5lbCB0aGF0IHJlcXVpcmVzIG1vZHVsZS1pbml0LXRvb2xzCnRvIHVzZS4gIEl0IGlzIGJhY2t3YXJkIGNvbXBhdGlibGUgd2l0aCB0aGUgMi40Lnggc2VyaWVzIGtlcm5lbHMuCgpNa2luaXRyZAotLS0tLS0tLQoKVGhlc2UgY2hhbmdlcyB0byB0aGUgL2xpYi9tb2R1bGVzIGZpbGUgdHJlZSBsYXlvdXQgYWxzbyByZXF1aXJlIHRoYXQKbWtpbml0cmQgYmUgdXBncmFkZWQuCgpFMmZzcHJvZ3MKLS0tLS0tLS0tCgpUaGUgbGF0ZXN0IHZlcnNpb24gb2YgZTJmc3Byb2dzIGZpeGVzIHNldmVyYWwgYnVncyBpbiBmc2NrIGFuZApkZWJ1Z2ZzLiAgT2J2aW91c2x5LCBpdCdzIGEgZ29vZCBpZGVhIHRvIHVwZ3JhZGUuCgpKRlN1dGlscwotLS0tLS0tLQoKVGhlIGpmc3V0aWxzIHBhY2thZ2UgY29udGFpbnMgdGhlIHV0aWxpdGllcyBmb3IgdGhlIGZpbGUgc3lzdGVtLgpUaGUgZm9sbG93aW5nIHV0aWxpdGllcyBhcmUgYXZhaWxhYmxlOgpvIGZzY2suamZzIC0gaW5pdGlhdGUgcmVwbGF5IG9mIHRoZSB0cmFuc2FjdGlvbiBsb2csIGFuZCBjaGVjawogIGFuZCByZXBhaXIgYSBKRlMgZm9ybWF0dGVkIHBhcnRpdGlvbi4KbyBta2ZzLmpmcyAtIGNyZWF0ZSBhIEpGUyBmb3JtYXR0ZWQgcGFydGl0aW9uLgpvIG90aGVyIGZpbGUgc3lzdGVtIHV0aWxpdGllcyBhcmUgYWxzbyBhdmFpbGFibGUgaW4gdGhpcyBwYWNrYWdlLgoKUmVpc2VyZnNwcm9ncwotLS0tLS0tLS0tLS0tCgpUaGUgcmVpc2VyZnNwcm9ncyBwYWNrYWdlIHNob3VsZCBiZSB1c2VkIGZvciByZWlzZXJmcy0zLjYueAooTGludXgga2VybmVscyAyLjQueCkuIEl0IGlzIGEgY29tYmluZWQgcGFja2FnZSBhbmQgY29udGFpbnMgd29ya2luZwp2ZXJzaW9ucyBvZiBta3JlaXNlcmZzLCByZXNpemVfcmVpc2VyZnMsIGRlYnVncmVpc2VyZnMgYW5kCnJlaXNlcmZzY2suIFRoZXNlIHV0aWxzIHdvcmsgb24gYm90aCBpMzg2IGFuZCBhbHBoYSBwbGF0Zm9ybXMuCgpYZnNwcm9ncwotLS0tLS0tLQoKVGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHhmc3Byb2dzIGNvbnRhaW5zIG1rZnMueGZzLCB4ZnNfZGIsIGFuZCB0aGUKeGZzX3JlcGFpciB1dGlsaXRpZXMsIGFtb25nIG90aGVycywgZm9yIHRoZSBYRlMgZmlsZXN5c3RlbS4gIEl0IGlzCmFyY2hpdGVjdHVyZSBpbmRlcGVuZGVudCBhbmQgYW55IHZlcnNpb24gZnJvbSAyLjAuMCBvbndhcmQgc2hvdWxkCndvcmsgY29ycmVjdGx5IHdpdGggdGhpcyB2ZXJzaW9uIG9mIHRoZSBYRlMga2VybmVsIGNvZGUgKDIuNi4wIG9yCmxhdGVyIGlzIHJlY29tbWVuZGVkLCBkdWUgdG8gc29tZSBzaWduaWZpY2FudCBpbXByb3ZlbWVudHMpLgoKUENNQ0lBdXRpbHMKLS0tLS0tLS0tLS0KClBDTUNJQXV0aWxzIHJlcGxhY2VzIHBjbWNpYS1jcyAoc2VlIGJlbG93KS4gSXQgcHJvcGVybHkgc2V0cyB1cApQQ01DSUEgc29ja2V0cyBhdCBzeXN0ZW0gc3RhcnR1cCBhbmQgbG9hZHMgdGhlIGFwcHJvcHJpYXRlIG1vZHVsZXMKZm9yIDE2LWJpdCBQQ01DSUEgZGV2aWNlcyBpZiB0aGUga2VybmVsIGlzIG1vZHVsYXJpemVkIGFuZCB0aGUgaG90cGx1ZwpzdWJzeXN0ZW0gaXMgdXNlZC4KClBjbWNpYS1jcwotLS0tLS0tLS0KClBDTUNJQSAoUEMgQ2FyZCkgc3VwcG9ydCBpcyBub3cgcGFydGlhbGx5IGltcGxlbWVudGVkIGluIHRoZSBtYWluCmtlcm5lbCBzb3VyY2UuIFRoZSAicGNtY2lhdXRpbHMiIHBhY2thZ2UgKHNlZSBhYm92ZSkgcmVwbGFjZXMgcGNtY2lhLWNzCmZvciBuZXdlc3Qga2VybmVscy4KClF1b3RhLXRvb2xzCi0tLS0tLS0tLS0tCgpTdXBwb3J0IGZvciAzMiBiaXQgdWlkJ3MgYW5kIGdpZCdzIGlzIHJlcXVpcmVkIGlmIHlvdSB3YW50IHRvIHVzZQp0aGUgbmV3ZXIgdmVyc2lvbiAyIHF1b3RhIGZvcm1hdC4gIFF1b3RhLXRvb2xzIHZlcnNpb24gMy4wNyBhbmQKbmV3ZXIgaGFzIHRoaXMgc3VwcG9ydC4gIFVzZSB0aGUgcmVjb21tZW5kZWQgdmVyc2lvbiBvciBuZXdlcgpmcm9tIHRoZSB0YWJsZSBhYm92ZS4KCkludGVsIElBMzIgbWljcm9jb2RlCi0tLS0tLS0tLS0tLS0tLS0tLS0tCgpBIGRyaXZlciBoYXMgYmVlbiBhZGRlZCB0byBhbGxvdyB1cGRhdGluZyBvZiBJbnRlbCBJQTMyIG1pY3JvY29kZSwKYWNjZXNzaWJsZSBhcyBib3RoIGEgZGV2ZnMgcmVndWxhciBmaWxlIGFuZCBhcyBhIG5vcm1hbCAobWlzYykKY2hhcmFjdGVyIGRldmljZS4gIElmIHlvdSBhcmUgbm90IHVzaW5nIGRldmZzIHlvdSBtYXkgbmVlZCB0bzoKCm1rZGlyIC9kZXYvY3B1Cm1rbm9kIC9kZXYvY3B1L21pY3JvY29kZSBjIDEwIDE4NApjaG1vZCAwNjQ0IC9kZXYvY3B1L21pY3JvY29kZQoKYXMgcm9vdCBiZWZvcmUgeW91IGNhbiB1c2UgdGhpcy4gIFlvdSdsbCBwcm9iYWJseSBhbHNvIHdhbnQgdG8KZ2V0IHRoZSB1c2VyLXNwYWNlIG1pY3JvY29kZV9jdGwgdXRpbGl0eSB0byB1c2Ugd2l0aCB0aGlzLgoKUG93ZXJ0d2VhawotLS0tLS0tLS0tCgpJZiB5b3UgYXJlIHJ1bm5pbmcgdjAuMS4xNyBvciBlYXJsaWVyLCB5b3Ugc2hvdWxkIHVwZ3JhZGUgdG8KdmVyc2lvbiB2MC45OS4wIG9yIGhpZ2hlci4gUnVubmluZyBvbGQgdmVyc2lvbnMgbWF5IGNhdXNlIHByb2JsZW1zCndpdGggcHJvZ3JhbXMgdXNpbmcgc2hhcmVkIG1lbW9yeS4KCnVkZXYKLS0tLQp1ZGV2IGlzIGEgdXNlcnNwYWNlIGFwcGxpY2F0aW9uIGZvciBwb3B1bGF0aW5nIC9kZXYgZHluYW1pY2FsbHkgd2l0aApvbmx5IGVudHJpZXMgZm9yIGRldmljZXMgYWN0dWFsbHkgcHJlc2VudC4gdWRldiByZXBsYWNlcyBkZXZmcy4KCk5ldHdvcmtpbmcKPT09PT09PT09PQoKR2VuZXJhbCBjaGFuZ2VzCi0tLS0tLS0tLS0tLS0tLQoKSWYgeW91IGhhdmUgYWR2YW5jZWQgbmV0d29yayBjb25maWd1cmF0aW9uIG5lZWRzLCB5b3Ugc2hvdWxkIHByb2JhYmx5CmNvbnNpZGVyIHVzaW5nIHRoZSBuZXR3b3JrIHRvb2xzIGZyb20gaXAtcm91dGUyLgoKUGFja2V0IEZpbHRlciAvIE5BVAotLS0tLS0tLS0tLS0tLS0tLS0tClRoZSBwYWNrZXQgZmlsdGVyaW5nIGFuZCBOQVQgY29kZSB1c2VzIHRoZSBzYW1lIHRvb2xzIGxpa2UgdGhlIHByZXZpb3VzIDIuNC54Cmtlcm5lbCBzZXJpZXMgKGlwdGFibGVzKS4gIEl0IHN0aWxsIGluY2x1ZGVzIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IG1vZHVsZXMKZm9yIDIuMi54LXN0eWxlIGlwY2hhaW5zIGFuZCAyLjAueC1zdHlsZSBpcGZ3YWRtLgoKUFBQCi0tLQoKVGhlIFBQUCBkcml2ZXIgaGFzIGJlZW4gcmVzdHJ1Y3R1cmVkIHRvIHN1cHBvcnQgbXVsdGlsaW5rIGFuZCB0bwplbmFibGUgaXQgdG8gb3BlcmF0ZSBvdmVyIGRpdmVyc2UgbWVkaWEgbGF5ZXJzLiAgSWYgeW91IHVzZSBQUFAsCnVwZ3JhZGUgcHBwZCB0byBhdCBsZWFzdCAyLjQuMC4KCklmIHlvdSBhcmUgbm90IHVzaW5nIGRldmZzLCB5b3UgbXVzdCBoYXZlIHRoZSBkZXZpY2UgZmlsZSAvZGV2L3BwcAp3aGljaCBjYW4gYmUgbWFkZSBieToKCm1rbm9kIC9kZXYvcHBwIGMgMTA4IDAKCmFzIHJvb3QuCgpJZiB5b3UgdXNlIGRldmZzZCBhbmQgYnVpbGQgcHBwIHN1cHBvcnQgYXMgbW9kdWxlcywgeW91IHdpbGwgbmVlZAp0aGUgZm9sbG93aW5nIGluIHlvdXIgL2V0Yy9kZXZmc2QuY29uZiBmaWxlOgoKTE9PS1VQCVBQUAlNT0RMT0FECgpJc2RuNGstdXRpbHMKLS0tLS0tLS0tLS0tCgpEdWUgdG8gY2hhbmdlcyBpbiB0aGUgbGVuZ3RoIG9mIHRoZSBwaG9uZSBudW1iZXIgZmllbGQsIGlzZG40ay11dGlscwpuZWVkcyB0byBiZSByZWNvbXBpbGVkIG9yIChwcmVmZXJhYmx5KSB1cGdyYWRlZC4KCk5GUy11dGlscwotLS0tLS0tLS0KCkluIDIuNCBhbmQgZWFybGllciBrZXJuZWxzLCB0aGUgbmZzIHNlcnZlciBuZWVkZWQgdG8ga25vdyBhYm91dCBhbnkKY2xpZW50IHRoYXQgZXhwZWN0ZWQgdG8gYmUgYWJsZSB0byBhY2Nlc3MgZmlsZXMgdmlhIE5GUy4gIFRoaXMKaW5mb3JtYXRpb24gd291bGQgYmUgZ2l2ZW4gdG8gdGhlIGtlcm5lbCBieSAibW91bnRkIiB3aGVuIHRoZSBjbGllbnQKbW91bnRlZCB0aGUgZmlsZXN5c3RlbSwgb3IgYnkgImV4cG9ydGZzIiBhdCBzeXN0ZW0gc3RhcnR1cC4gIGV4cG9ydGZzCndvdWxkIHRha2UgaW5mb3JtYXRpb24gYWJvdXQgYWN0aXZlIGNsaWVudHMgZnJvbSAvdmFyL2xpYi9uZnMvcm10YWIuCgpUaGlzIGFwcHJvYWNoIGlzIHF1aXRlIGZyYWdpbGUgYXMgaXQgZGVwZW5kcyBvbiBybXRhYiBiZWluZyBjb3JyZWN0CndoaWNoIGlzIG5vdCBhbHdheXMgZWFzeSwgcGFydGljdWxhcmx5IHdoZW4gdHJ5aW5nIHRvIGltcGxlbWVudApmYWlsLW92ZXIuICBFdmVuIHdoZW4gdGhlIHN5c3RlbSBpcyB3b3JraW5nIHdlbGwsIHJtdGFiIHN1ZmZlcnMgZnJvbQpnZXR0aW5nIGxvdHMgb2Ygb2xkIGVudHJpZXMgdGhhdCBuZXZlciBnZXQgcmVtb3ZlZC4KCldpdGggMi42IHdlIGhhdmUgdGhlIG9wdGlvbiBvZiBoYXZpbmcgdGhlIGtlcm5lbCB0ZWxsIG1vdW50ZCB3aGVuIGl0CmdldHMgYSByZXF1ZXN0IGZyb20gYW4gdW5rbm93biBob3N0LCBhbmQgbW91bnRkIGNhbiBnaXZlIGFwcHJvcHJpYXRlCmV4cG9ydCBpbmZvcm1hdGlvbiB0byB0aGUga2VybmVsLiAgVGhpcyByZW1vdmVzIHRoZSBkZXBlbmRlbmN5IG9uCnJtdGFiIGFuZCBtZWFucyB0aGF0IHRoZSBrZXJuZWwgb25seSBuZWVkcyB0byBrbm93IGFib3V0IGN1cnJlbnRseQphY3RpdmUgY2xpZW50cy4KClRvIGVuYWJsZSB0aGlzIG5ldyBmdW5jdGlvbmFsaXR5LCB5b3UgbmVlZCB0bzoKCiAgbW91bnQgLXQgbmZzZCBuZnNkIC9wcm9jL2ZzL25mcwoKYmVmb3JlIHJ1bm5pbmcgZXhwb3J0ZnMgb3IgbW91bnRkLiAgSXQgaXMgcmVjb21tZW5kZWQgdGhhdCBhbGwgTkZTCnNlcnZpY2VzIGJlIHByb3RlY3RlZCBmcm9tIHRoZSBpbnRlcm5ldC1hdC1sYXJnZSBieSBhIGZpcmV3YWxsIHdoZXJlCnRoYXQgaXMgcG9zc2libGUuCgpHZXR0aW5nIHVwZGF0ZWQgc29mdHdhcmUKPT09PT09PT09PT09PT09PT09PT09PT09CgpLZXJuZWwgY29tcGlsYXRpb24KKioqKioqKioqKioqKioqKioqCgpnY2MgMi45NS4zCi0tLS0tLS0tLS0KbyAgPGZ0cDovL2Z0cC5nbnUub3JnL2dudS9nY2MvZ2NjLTIuOTUuMy50YXIuZ3o+CgpNYWtlCi0tLS0KbyAgPGZ0cDovL2Z0cC5nbnUub3JnL2dudS9tYWtlLz4KCkJpbnV0aWxzCi0tLS0tLS0tCm8gIDxmdHA6Ly9mdHAua2VybmVsLm9yZy9wdWIvbGludXgvZGV2ZWwvYmludXRpbHMvPgoKU3lzdGVtIHV0aWxpdGllcwoqKioqKioqKioqKioqKioqCgpVdGlsLWxpbnV4Ci0tLS0tLS0tLS0KbyAgPGZ0cDovL2Z0cC5rZXJuZWwub3JnL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4Lz4KCktzeW1vb3BzCi0tLS0tLS0tCm8gIDxmdHA6Ly9mdHAua2VybmVsLm9yZy9wdWIvbGludXgvdXRpbHMva2VybmVsL2tzeW1vb3BzL3YyLjQvPgoKTW9kdWxlLUluaXQtVG9vbHMKLS0tLS0tLS0tLS0tLS0tLS0KbyAgPGZ0cDovL2Z0cC5rZXJuZWwub3JnL3B1Yi9saW51eC9rZXJuZWwvcGVvcGxlL3J1c3R5L21vZHVsZXMvPgoKTWtpbml0cmQKLS0tLS0tLS0KbyAgPGZ0cDovL3Jhd2hpZGUucmVkaGF0LmNvbS9wdWIvcmF3aGlkZS9TUlBNUy9TUlBNUy8+CgpFMmZzcHJvZ3MKLS0tLS0tLS0tCm8gIDxodHRwOi8vcHJkb3dubG9hZHMuc291cmNlZm9yZ2UubmV0L2UyZnNwcm9ncy9lMmZzcHJvZ3MtMS4yOS50YXIuZ3o+CgpKRlN1dGlscwotLS0tLS0tLQpvICA8aHR0cDovL2pmcy5zb3VyY2Vmb3JnZS5uZXQvPgoKUmVpc2VyZnNwcm9ncwotLS0tLS0tLS0tLS0tCm8gIDxodHRwOi8vd3d3Lm5hbWVzeXMuY29tL3B1Yi9yZWlzZXJmc3Byb2dzL3JlaXNlcmZzcHJvZ3MtMy42LjMudGFyLmd6PgoKWGZzcHJvZ3MKLS0tLS0tLS0KbyAgPGZ0cDovL29zcy5zZ2kuY29tL3Byb2plY3RzL3hmcy9kb3dubG9hZC8+CgpQY21jaWF1dGlscwotLS0tLS0tLS0tLQpvICA8ZnRwOi8vZnRwLmtlcm5lbC5vcmcvcHViL2xpbnV4L3V0aWxzL2tlcm5lbC9wY21jaWEvPgoKUGNtY2lhLWNzCi0tLS0tLS0tLQpvICA8aHR0cDovL3BjbWNpYS1jcy5zb3VyY2Vmb3JnZS5uZXQvPgoKUXVvdGEtdG9vbHMKLS0tLS0tLS0tLQpvICA8aHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9saW51eHF1b3RhLz4KCkRvY0Jvb2sgU3R5bGVzaGVldHMKLS0tLS0tLS0tLS0tLS0tLS0tLQpvICA8aHR0cDovL253YWxzaC5jb20vZG9jYm9vay9kc3NzbC8+CgpYTUxUTyBYU0xUIEZyb250ZW5kCi0tLS0tLS0tLS0tLS0tLS0tLS0KbyAgPGh0dHA6Ly9jeWJlcmVsay5uZXQvdGltL3htbHRvLz4KCkludGVsIFA2IG1pY3JvY29kZQotLS0tLS0tLS0tLS0tLS0tLS0KbyAgPGh0dHA6Ly93d3cudXJiYW5teXRoLm9yZy9taWNyb2NvZGUvPgoKUG93ZXJ0d2VhawotLS0tLS0tLS0tCm8gIDxodHRwOi8vcG93ZXJ0d2Vhay5zb3VyY2Vmb3JnZS5uZXQvPgoKdWRldgotLS0tCm8gPGh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvbGludXgvdXRpbHMva2VybmVsL2hvdHBsdWcvdWRldi5odG1sPgoKTmV0d29ya2luZwoqKioqKioqKioqCgpQUFAKLS0tCm8gIDxmdHA6Ly9mdHAuc2FtYmEub3JnL3B1Yi9wcHAvcHBwLTIuNC4wLnRhci5nej4KCklzZG40ay11dGlscwotLS0tLS0tLS0tLS0KbyAgPGZ0cDovL2Z0cC5pc2RuNGxpbnV4LmRlL3B1Yi9pc2RuNGxpbnV4L3V0aWxzL2lzZG40ay11dGlscy52My4xcHJlMS50YXIuZ3o+CgpORlMtdXRpbHMKLS0tLS0tLS0tCm8gIDxodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3Qvc2hvd2ZpbGVzLnBocD9ncm91cF9pZD0xND4KCklwdGFibGVzCi0tLS0tLS0tCm8gIDxodHRwOi8vd3d3LmlwdGFibGVzLm9yZy9kb3dubG9hZHMuaHRtbD4KCklwLXJvdXRlMgotLS0tLS0tLS0KbyAgPGZ0cDovL2Z0cC50dXgub3JnL3B1Yi9uZXQvaXAtcm91dGluZy9pcHJvdXRlMi0yLjIuNC1ub3ctc3M5OTEwMjMudGFyLmd6PgoKT1Byb2ZpbGUKLS0tLS0tLS0KbyAgPGh0dHA6Ly9vcHJvZmlsZS5zZi5uZXQvZG93bmxvYWQvPgoKTkZTLVV0aWxzCi0tLS0tLS0tLQpvICA8aHR0cDovL25mcy5zb3VyY2Vmb3JnZS5uZXQvPgoK