RG9jdW1lbnRhdGlvbiBmb3IgZHZiLXVzYi1mcmFtZXdvcmsgbW9kdWxlIGFuZCBpdHMgZGV2aWNlcwoKSWRlYSBiZWhpbmQgdGhlIGR2Yi11c2ItZnJhbWV3b3JrCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKSW4gTWFyY2ggMjAwNSBJIGdvdCB0aGUgbmV3IFR3aW5oYW4gVVNCMi4wIERWQi1UIGRldmljZS4gVGhleSBwcm92aWRlZCBzcGVjcyBhbmQgYSBmaXJtd2FyZS4KClF1aXRlIGtlZW4gSSB3YW50ZWQgdG8gcHV0IHRoZSBkcml2ZXIgKHdpdGggc29tZSBxdWlya3Mgb2YgY291cnNlKSBpbnRvIGRpYnVzYi4KQWZ0ZXIgcmVhZGluZyBzb21lIHNwZWNzIGFuZCBkb2luZyBzb21lIFVTQiBzbm9vcGluZywgaXQgcmVhbGl6ZWQsIHRoYXQgdGhlCmRpYnVzYi1kcml2ZXIgd291bGQgYmUgYSBjb21wbGV0ZSBtZXNzIGFmdGVyd2FyZHMuIFNvIEkgZGVjaWRlZCB0byBkbyBpdCBpbiBhCmRpZmZlcmVudCB3YXk6IFdpdGggdGhlIGhlbHAgb2YgYSBkdmItdXNiLWZyYW1ld29yay4KClRoZSBmcmFtZXdvcmsgcHJvdmlkZXMgZ2VuZXJpYyBmdW5jdGlvbnMgKG1vc3RseSBrZXJuZWwgQVBJIGNhbGxzKSwgc3VjaCBhczoKCi0gVHJhbnNwb3J0IFN0cmVhbSBVUkIgaGFuZGxpbmcgaW4gY29uanVuY3Rpb24gd2l0aCBkdmItZGVtdXgtZmVlZC1jb250cm9sCiAgKGJ1bGsgYW5kIGlzb2MgYXJlIHN1cHBvcnRlZCkKLSByZWdpc3RlcmluZyB0aGUgZGV2aWNlIGZvciB0aGUgRFZCLUFQSQotIHJlZ2lzdGVyaW5nIGFuIEkyQy1hZGFwdGVyIGlmIGFwcGxpY2FibGUKLSByZW1vdGUtY29udHJvbC9pbnB1dC1kZXZpY2UgaGFuZGxpbmcKLSBmaXJtd2FyZSByZXF1ZXN0aW5nIGFuZCBsb2FkaW5nIChjdXJyZW50bHkganVzdCBmb3IgdGhlIEN5cHJlc3MgVVNCCiAgY29udHJvbGxlcnMpCi0gb3RoZXIgZnVuY3Rpb25zL21ldGhvZHMgd2hpY2ggY2FuIGJlIHNoYXJlZCBieSBzZXZlcmFsIGRyaXZlcnMgKHN1Y2ggYXMKICBmdW5jdGlvbnMgZm9yIGJ1bGstY29udHJvbC1jb21tYW5kcykKLSBUT0RPOiBhIEkyQy1jaHVua2VyLiBJdCBjcmVhdGVzIGRldmljZS1zcGVjaWZpYyBjaHVua3Mgb2YgcmVnaXN0ZXItYWNjZXNzZXMKICBkZXBlbmRpbmcgb24gbGVuZ3RoIG9mIGEgcmVnaXN0ZXIgYW5kIHRoZSBudW1iZXIgb2YgdmFsdWVzIHRoYXQgY2FuIGJlCiAgbXVsdGktd3JpdHRlbiBhbmQgbXVsdGktcmVhZC4KClRoZSBzb3VyY2UgY29kZSBvZiB0aGUgcGFydGljdWxhciBEVkIgVVNCIGRldmljZXMgZG9lcyBqdXN0IHRoZSBjb21tdW5pY2F0aW9uCndpdGggdGhlIGRldmljZSB2aWEgdGhlIGJ1cy4gVGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgRFZCLUFQSS1mdW5jdGlvbmFsaXR5CmlzIGRvbmUgdmlhIGNhbGxiYWNrcywgYXNzaWduZWQgaW4gYSBzdGF0aWMgZGV2aWNlLWRlc2NyaXB0aW9uIChzdHJ1Y3QKZHZiX3VzYl9kZXZpY2UpIGVhY2ggZGV2aWNlLWRyaXZlciBoYXMgdG8gaGF2ZS4KCkZvciBhbiBleGFtcGxlIGhhdmUgYSBsb29rIGluIGRyaXZlcnMvbWVkaWEvZHZiL2R2Yi11c2IvdnA3MDQ1Ki4KCk9iamVjdGl2ZSBpcyB0byBtaWdyYXRlIGFsbCB0aGUgdXNiLWRldmljZXMgKGRpYnVzYiwgY2luZXJneVQyLCBtYXliZSB0aGUKdHR1c2I7IGZsZXhjb3AtdXNiIGFscmVhZHkgYmVuZWZpdHMgZnJvbSB0aGUgZ2VuZXJpYyBmbGV4Y29wLWRldmljZSkgdG8gdXNlCnRoZSBkdmItdXNiLWxpYi4KClRPRE86IGR5bmFtaWMgZW5hYmxpbmcgYW5kIGRpc2FibGluZyBvZiB0aGUgcGlkLWZpbHRlciBpbiByZWdhcmQgdG8gbnVtYmVyIG9mCmZlZWRzIHJlcXVlc3RlZC4KClN1cHBvcnRlZCBkZXZpY2VzCj09PT09PT09PT09PT09PT09PT09PT09PQoKU2VlIHRoZSBMaW51eFRWIERWQiBXaWtpIGF0IHd3dy5saW51eHR2Lm9yZyBmb3IgYSBjb21wbGV0ZSBsaXN0IG9mCmNhcmRzL2RyaXZlcnMvZmlybXdhcmVzOgoKaHR0cDovL3d3dy5saW51eHR2Lm9yZy93aWtpL2luZGV4LnBocC9EVkJfVVNCCgowLiBIaXN0b3J5ICYgTmV3czoKICAyMDA1LTA1LTMwIC0gYWRkZWQgYmFzaWMgaXNvY2hyb25vdXMgc3VwcG9ydCB0byB0aGUgZHZiLXVzYi1mcmFtZXdvcmsKICAgICAgICAgICAgICAgYWRkZWQgc3VwcG9ydCBmb3IgQ29uZXhhbnQgSHlicmlkIHJlZmVyZW5jZSBkZXNpZ24gYW5kIE5lYnVsYSBEaWdpVFYgVVNCCiAgMjAwNS0wNC0xNyAtIGFsbCBkaWJ1c2IgZGV2aWNlcyBwb3J0ZWQgdG8gbWFrZSB1c2Ugb2YgdGhlIGR2Yi11c2ItZnJhbWV3b3JrCiAgMjAwNS0wNC0wMiAtIHJlLWVuYWJsZWQgYW5kIGltcHJvdmVkIHJlbW90ZSBjb250cm9sIGNvZGUuCiAgMjAwNS0wMy0zMSAtIHBvcnRlZCB0aGUgWWFrdW1vL0hhbWEvVHlwaG9vbiBEVkItVCBVU0IyLjAgZGV2aWNlIHRvIGR2Yi11c2IuCiAgMjAwNS0wMy0zMCAtIGZpcnN0IGNvbW1pdCBvZiB0aGUgZHZiLXVzYi1tb2R1bGUgYmFzZWQgb24gdGhlIGRpYnVzYi1zb3VyY2UuIEZpcnN0IGRldmljZSBpcyBhIG5ldyBkcml2ZXIgZm9yIHRoZQogICAgICAgICAgICAgICBUd2luaGFuRFRWIEFscGhhIC8gTWFnaWNCb3ggSUkgVVNCMi4wLW9ubHkgRFZCLVQgZGV2aWNlLgoKICAoY2hhbmdlIGZyb20gZHZiLWRpYnVzYiB0byBkdmItdXNiKQogIDIwMDUtMDMtMjggLSBhZGRlZCBzdXBwb3J0IGZvciB0aGUgQVZlck1lZGlhIEF2ZXJUViBEVkItVCBVU0IyLjAgZGV2aWNlIChUaGFua3MgdG8gR2xlbiBIYXJyaXMgYW5kIEppdW4tS3VlaSBKdW5nLCBBVmVyTWVkaWEpCiAgMjAwNS0wMy0xNCAtIGFkZGVkIHN1cHBvcnQgZm9yIHRoZSBUeXBob29uL1lha3Vtby9IQU1BIERWQi1UIG1vYmlsZSBVU0IyLjAKICAyMDA1LTAyLTExIC0gYWRkZWQgc3VwcG9ydCBmb3IgdGhlIEtXb3JsZC9BRFNUZWNoIEluc3RhbnQgRFZCLVQgVVNCMi4wLiBUaGFua3MgYSBsb3QgdG8gSm9hY2hpbSB2b24gQ2Fyb24KICAyMDA1LTAyLTAyIC0gYWRkZWQgc3VwcG9ydCBmb3IgdGhlIEhhdXBwYXVnZSBXaW4tVFYgTm92YS1UIFVTQjIKICAyMDA1LTAxLTMxIC0gZGlzdG9ydGVkIHN0cmVhbWluZyBpcyBnb25lIGZvciBVU0IxLjEgZGV2aWNlcwogIDIwMDUtMDEtMTMgLSBtb3ZlZCB0aGUgbWlycm9yZWQgcGlkX2ZpbHRlcl90YWJsZSBiYWNrIHRvIGR2Yi1kaWJ1c2IKICAgICAgICAgICAgIC0gZmlyc3QgYWxtb3N0IHdvcmtpbmcgdmVyc2lvbiBmb3IgSGFuZlRlayBVTVQtMDEwCiAgICAgICAgICAgICAtIGZvdW5kIG91dCwgdGhhdCBZYWt1bW8vSEFNQS9UeXBob29uIGFyZSBwcmVkZXNzb3JzIG9mIHRoZSBIYW5mVGVrIFVNVC0wMTAKICAyMDA1LTAxLTEwIC0gcmVmYWN0b3JpbmcgY29tcGxldGVkLCBub3cgZXZlcnl0aGluZyBpcyB2ZXJ5IGRlbGlnaHRmdWwKICAgICAgICAgICAgIC0gdHVuZXIgcXVpcmtzIGZvciBzb21lIHdlaXJkIGRldmljZXMgKEFydGVjIFQxIEFOMjIzNSBkZXZpY2UgaGFzIHNvbWV0aW1lcyBhCiAgICAgICAgICAgICAgIFBhbmFzb25pYyBUdW5lciBhc3NlbWJsZWQpLiBUdW5lcnByb2JpbmcgaW1wbGVtZW50ZWQuIFRoYW5rcyBhIGxvdCB0byBHdW5uYXIgV2l0dGljaC4KICAyMDA0LTEyLTI5IC0gYWZ0ZXIgc2V2ZXJhbCBkYXlzIG9mIHN0cnVnZ2xpbmcgYXJvdW5kIGJ1ZyBvZiBubyByZXR1cm5pbmcgVVJCcyBmaXhlZC4KICAyMDA0LTEyLTI2IC0gcmVmYWN0b3JlZCB0aGUgZGlidXNiLWRyaXZlciwgc3BsaXR0ZWQgaW50byBzZXBhcmF0ZSBmaWxlcwogICAgICAgICAgICAgLSBpMmMtcHJvYmluZyBlbmFibGVkCiAgMjAwNC0xMi0wNiAtIHBvc3NpYmlsaXR5IGZvciBkZW1vZCBpMmMtYWRkcmVzcyBwcm9iaW5nCiAgICAgICAgICAgICAtIG5ldyB1c2IgSURzIChDb21wcm8sIEFydGVjKQogIDIwMDQtMTEtMjMgLSBtZXJnZWQgY2hhbmdlcyBmcm9tIERpQjMwMDBNQ192ZXIyLjEKICAgICAgICAgICAgIC0gcmV2aXNlZCB0aGUgZGVidWdnaW5nCiAgICAgICAgICAgICAtIHBvc3NpYmlsaXR5IHRvIGRlbGl2ZXIgdGhlIGNvbXBsZXRlIFRTIGZvciBVU0IyLjAKICAyMDA0LTExLTIxIC0gZmlyc3Qgd29ya2luZyB2ZXJzaW9uIG9mIHRoZSBkaWIzMDAwbWMvcCBmcm9udGVuZCBkcml2ZXIuCiAgMjAwNC0xMS0xMiAtIGFkZGVkIGFkZGl0aW9uYWwgcmVtb3RlIGNvbnRyb2wga2V5cy4gVGhhbmtzIHRvIFV3ZSBIYW5rZS4KICAyMDA0LTExLTA3IC0gYWRkZWQgcmVtb3RlIGNvbnRyb2wgc3VwcG9ydC4gVGhhbmtzIHRvIERhdmlkIE1hdHRoZXdzLgogIDIwMDQtMTEtMDUgLSBhZGRlZCBzdXBwb3J0IGZvciBhIG5ldyBkZXZpY2VzIChHcmFuZHRlYy9BdmVybWVkaWEvQXJ0ZWMpCiAgICAgICAgICAgICAtIG1lcmdlZCBteSBjaGFuZ2VzIChmb3IgZGliMzAwMG1iL2RpYnVzYikgdG8gdGhlIEZFX1JFRkFDVE9SSU5HLCBiZWNhdXNlIGl0IGJlY2FtZSBIRUFECiAgICAgICAgICAgICAtIG1vdmVkIHRyYW5zZmVyIGNvbnRyb2wgKHBpZCBmaWx0ZXIsIGZpZm8gY29udHJvbCkgZnJvbSB1c2IgZHJpdmVyIHRvIGZyb250ZW5kLCBpdCBzZWVtcwogICAgICAgICAgICAgICBiZXR0ZXIgc2V0dGxlZCB0aGVyZSAoYWRkZWQgeGZlcl9vcHMtc3RydWN0KQogICAgICAgICAgICAgLSBjcmVhdGVkIGEgY29tbW9uIGZpbGVzIGZvciBmcm9udGVuZHMgKG1jL3AvbWIpCiAgMjAwNC0wOS0yOCAtIGFkZGVkIHN1cHBvcnQgZm9yIGEgbmV3IGRldmljZSAoVW5rb3duLCB2ZW5kb3IgSUQgaXMgSHlwZXItUGFsdGVrKQogIDIwMDQtMDktMjAgLSBhZGRlZCBzdXBwb3J0IGZvciBhIG5ldyBkZXZpY2UgKENvbXBybyBEVkItVTIwMDApLCB0aGFua3MKICAgICAgICAgICAgICAgdG8gQW1hdXJ5IERlbW9sIGZvciByZXBvcnRpbmcKICAgICAgICAgICAgIC0gY2hhbmdlZCB1c2IgVFMgdHJhbnNmZXIgbWV0aG9kIChzZXZlcmFsIHVyYnMsIHN0b3BwaW5nIHRyYW5zZmVyCiAgICAgICAgICAgICAgIGJlZm9yZSBzZXR0aW5nIGEgbmV3IHBpZCkKICAyMDA0LTA5LTEzIC0gYWRkZWQgc3VwcG9ydCBmb3IgYSBuZXcgZGV2aWNlIChBcnRlYyBUMSBVU0IgVFZCT1gpLCB0aGFua3MKICAgICAgICAgICAgICAgdG8gQ2hyaXN0aWFuIE1vdHNjaGtlIGZvciByZXBvcnRpbmcKICAyMDA0LTA5LTA1IC0gcmVsZWFzZWQgdGhlIGRpYnVzYiBkZXZpY2UgYW5kIGRpYjMwMDBtYi1mcm9udGVuZCBkcml2ZXIKCiAgKG9sZCBuZXdzIGZvciB2cDcwNDEuYykKICAyMDA0LTA3LTE1IC0gZm91bmQgb3V0LCBieSBhY2NpZGVudCwgdGhhdCB0aGUgZGV2aWNlIGhhcyBhIFRVQTYwMTBYUyBmb3IKICAgICAgICAgICAgICAgUExMCiAgMjAwNC0wNy0xMiAtIGZpZ3VyZWQgb3V0LCB0aGF0IHRoZSBkcml2ZXIgc2hvdWxkIGFsc28gd29yayB3aXRoIHRoZQogICAgICAgICAgICAgICBDVFMgUG9ydGFibGUgKENoaW5lc2UgVGVsZXZpc2lvbiBTeXN0ZW0pCiAgMjAwNC0wNy0wOCAtIGZpcm13YXJlLWV4dHJhY3Rpb24tMi40MjItcHJvYmxlbSBzb2x2ZWQsIGRyaXZlciBpcyBub3cgd29ya2luZwogICAgICAgICAgICAgICBwcm9wZXJseSB3aXRoIGZpcm13YXJlIGV4dHJhY3RlZCBmcm9tIDIuNDIyCiAgICAgICAgICAgICAtICNpZiBmb3IgMi42LjQgKGR2YiksIGNvbXBpbGUgaXNzdWUKICAgICAgICAgICAgIC0gY2hhbmdlZCBmaXJtd2FyZSBoYW5kbGluZywgc2VlIHZwNzA0MS50eHQgc2VjIDEuMQogIDIwMDQtMDctMDIgLSBzb21lIHR1bmVyIG1vZGlmaWNhdGlvbnMsIHYwLjEsIGNsZWFudXBzLCBmaXJzdCBwdWJsaWMKICAyMDA0LTA2LTI4IC0gbm93IHVzaW5nIHRoZSBkdmJfZG14X3N3ZmlsdGVyX3BhY2tldHMsIGV2ZXJ5dGhpbmcKICAgICAgICAgICAgICAgcnVucyBmaW5lIG5vdwogIDIwMDQtMDYtMjcgLSBhYmxlIHRvIHdhdGNoIGFuZCBzd2l0Y2hpbmcgY2hhbm5lbHMgKHByZS1hbHBoYSkKICAgICAgICAgICAgIC0gbm8gc2VjdGlvbiBmaWx0ZXJpbmcgeWV0CiAgMjAwNC0wNi0wNiAtIGZpcnN0IFRTIHJlY2VpdmVkLCBidXQga2VybmVsIG9vcHMgOi8KICAyMDA0LTA1LTE0IC0gZmlybXdhcmUgbG9hZGVyIGlzIHdvcmtpbmcKICAyMDA0LTA1LTExIC0gc3RhcnQgd3JpdGluZyB0aGUgZHJpdmVyCgoxLiBIb3cgdG8gdXNlPwoxLjEuIEZpcm13YXJlCgpNb3N0IG9mIHRoZSBVU0IgZHJpdmVycyBuZWVkIHRvIGRvd25sb2FkIGEgZmlybXdhcmUgdG8gc3RhcnQgd29ya2luZy4KCmZvciBVU0IxLjEgKEFOMjEzNSkgeW91IG5lZWQ6IGR2Yi11c2ItZGlidXNiLTUuMC4wLjExLmZ3CmZvciBVU0IyLjAgSGFuZlRlazogZHZiLXVzYi11bXQtMDEwLTAyLmZ3CmZvciBVU0IyLjAgRGlCY29tOiBkdmItdXNiLWRpYnVzYi02LjAuMC44LmZ3CmZvciBVU0IyLjAgQVZlck1lZGlhIEF2ZXJUViBEVkItVCBVU0IyOiBkdmItdXNiLWF2ZXJ0di1hODAwLTAxLmZ3CmZvciBVU0IyLjAgVHdpbmhhbkRUViBBbHBoYS9NYWdpY0JveCBJSTogZHZiLXVzYi12cDcwNDUtMDEuZncKClRoZSBmaWxlcyBjYW4gYmUgZm91bmQgb24gaHR0cDovL3d3dy5saW51eHR2Lm9yZy9kb3dubG9hZC9maXJtd2FyZS8gLgoKV2UgZG8gbm90IGhhdmUgdGhlIHBlcm1pc3Npb24gKHlldCkgdG8gcHVibGlzaCB0aGUgZm9sbG93aW5nIGZpcm13YXJlLWZpbGVzLgpZb3UnbGwgbmVlZCB0byBleHRyYWN0IHRoZW0gZnJvbSB0aGUgd2luZG93cyBkcml2ZXJzLgoKWW91IHNob3VsZCBiZSBhYmxlIHRvIHVzZSAiZ2V0X2R2Yl9maXJtd2FyZSBkdmItdXNiIiB0byBnZXQgdGhlIGZpcm13YXJlOgoKZm9yIFVTQjEuMSAoQU4yMjM1KSAoYSBmZXcgQXJ0ZWMgVDEgZGV2aWNlcyk6IGR2Yi11c2ItZGlidXNiLWFuMjIzNS0wMS5mdwpmb3IgVVNCMi4wIEhhdXBwYXVnZTogZHZiLXVzYi1ub3ZhLXQtdXNiMi0wMS5mdwpmb3IgVVNCMi4wIEFEU1RlY2gvS3dvcmxkIFVTQjIuMDogZHZiLXVzYi1hZHN0ZWNoLXVzYjItMDEuZncKZm9yIFVTQjIuMCBZYWt1bW8vVHlwaG9vbi9IYW1hOiBkdmItdXNiLWR0dDIwMHUtMDEuZncKCjEuMi4gQ29tcGlsaW5nCgpTaW5jZSB0aGUgZHJpdmVyIGlzIGluIHRoZSBsaW51eCBrZXJuZWwsIGFjdGl2YXRpbmcgdGhlIGRyaXZlciBpbgp5b3VyIGZhdm9yaXRlIGNvbmZpZy1lbnZpcm9ubWVudCBzaG91bGQgc3VmZmljaWVudC4gSSByZWNvbW1lbmQKdG8gY29tcGlsZSB0aGUgZHJpdmVyIGFzIG1vZHVsZS4gSG90cGx1ZyBkb2VzIHRoZSByZXN0LgoKSWYgeW91IHVzZSBkdmIta2VybmVsIGVudGVyIHRoZSBidWlsZC0yLjYgZGlyZWN0b3J5IHJ1biAnbWFrZScgYW5kICdpbnNtb2Quc2gKbG9hZCcgYWZ0ZXJ3YXJkcy4KCjEuMy4gTG9hZGluZyB0aGUgZHJpdmVycwoKSG90cGx1ZyBpcyBhYmxlIHRvIGxvYWQgdGhlIGRyaXZlciwgd2hlbiBpdCBpcyBuZWVkZWQgKGJlY2F1c2UgeW91IHBsdWdnZWQKaW4gdGhlIGRldmljZSkuCgpJZiB5b3Ugd2FudCB0byBlbmFibGUgZGVidWcgb3V0cHV0LCB5b3UgaGF2ZSB0byBsb2FkIHRoZSBkcml2ZXIgbWFudWFsbHkgYW5kCmZyb20gd2l0aGluZyB0aGUgZHZiLWtlcm5lbCBjdnMgcmVwb3NpdG9yeS4KCmZpcnN0IGhhdmUgYSBsb29rLCB3aGljaCBkZWJ1ZyBsZXZlbCBhcmUgYXZhaWxhYmxlOgoKbW9kaW5mbyBkdmItdXNiCm1vZGluZm8gZHZiLXVzYi12cDcwNDUKZXRjLgoKbW9kcHJvYmUgZHZiLXVzYiBkZWJ1Zz08bGV2ZWw+Cm1vZHByb2JlIGR2Yi11c2ItdnA3MDQ1IGRlYnVnPTxsZXZlbD4KZXRjLgoKc2hvdWxkIGRvIHRoZSB0cmljay4KCldoZW4gdGhlIGRyaXZlciBpcyBsb2FkZWQgc3VjY2Vzc2Z1bGx5LCB0aGUgZmlybXdhcmUgZmlsZSB3YXMgaW4KdGhlIHJpZ2h0IHBsYWNlIGFuZCB0aGUgZGV2aWNlIGlzIGNvbm5lY3RlZCwgdGhlICJQb3dlciItTEVEIHNob3VsZCBiZQp0dXJuZWQgb24uCgpBdCB0aGlzIHBvaW50IHlvdSBzaG91bGQgYmUgYWJsZSB0byBzdGFydCBhIGR2Yi1jYXBhYmxlIGFwcGxpY2F0aW9uLiBJJ20gdXNlCih0fHMpemFwLCBtcGxheWVyIGFuZCBkdmJzY2FuIHRvIHRlc3QgdGhlIGJhc2ljcy4gVkRSLXhpbmUgcHJvdmlkZXMgdGhlCmxvbmctdGVybSB0ZXN0IHNjZW5hcmlvLgoKMi4gS25vd24gcHJvYmxlbXMgYW5kIGJ1Z3MKCi0gRG9uJ3QgcmVtb3ZlIHRoZSBVU0IgZGV2aWNlIHdoaWxlIHJ1bm5pbmcgYW4gRFZCIGFwcGxpY2F0aW9uLCB5b3VyIHN5c3RlbQogIHdpbGwgZ28gY3Jhenkgb3IgZGllIG1vc3QgbGlrZWx5LgoKMi4xLiBBZGRpbmcgc3VwcG9ydCBmb3IgZGV2aWNlcwoKVE9ETwoKMi4yLiBVU0IxLjEgQmFuZHdpZHRoIGxpbWl0YXRpb24KCkEgbG90IG9mIHRoZSBjdXJyZW50bHkgc3VwcG9ydGVkIGRldmljZXMgYXJlIFVTQjEuMSBhbmQgdGh1cyB0aGV5IGhhdmUgYQptYXhpbXVtIGJhbmR3aWR0aCBvZiBhYm91dCA1LTYgTUJpdC9zIHdoZW4gY29ubmVjdGVkIHRvIGEgVVNCMi4wIGh1Yi4KVGhpcyBpcyBub3QgZW5vdWdoIGZvciByZWNlaXZpbmcgdGhlIGNvbXBsZXRlIHRyYW5zcG9ydCBzdHJlYW0gb2YgYQpEVkItVCBjaGFubmVsICh3aGljaCBpcyBhYm91dCAxNiBNQml0L3MpLiBOb3JtYWxseSB0aGlzIGlzIG5vdCBhCnByb2JsZW0sIGlmIHlvdSBvbmx5IHdhbnQgdG8gd2F0Y2ggVFYgKHRoaXMgZG9lcyBub3QgYXBwbHkgZm9yIEhEVFYpLApidXQgd2F0Y2hpbmcgYSBjaGFubmVsIHdoaWxlIHJlY29yZGluZyBhbm90aGVyIGNoYW5uZWwgb24gdGhlIHNhbWUKZnJlcXVlbmN5IHNpbXBseSBkb2VzIG5vdCB3b3JrIHZlcnkgd2VsbC4gVGhpcyBhcHBsaWVzIHRvIGFsbCBVU0IxLjEKRFZCLVQgZGV2aWNlcywgbm90IGp1c3QgdGhlIGR2Yi11c2ItZGV2aWNlcykKClRoZSBidWcsIHdoZXJlIHRoZSBUUyBpcyBkaXN0b3J0ZWQgYnkgYSBoZWF2eSB1c2FnZSBvZiB0aGUgZGV2aWNlIGlzIGdvbmUKZGVmaW5pdGVseS4gQWxsIGR2Yi11c2ItZGV2aWNlcyBJIHdhcyB1c2luZyAoVHdpbmhhbiwgS3dvcmxkLCBEaUJjb20pIGFyZQp3b3JraW5nIGxpa2UgY2hhcm0gbm93IHdpdGggVkRSLiBTb21ldGltZXMgSSBldmVuIHdhcyBhYmxlIHRvIHJlY29yZCBhIGNoYW5uZWwKYW5kIHdhdGNoIGFub3RoZXIgb25lLgoKMi4zLiBDb21tZW50cwoKUGF0Y2hlcywgY29tbWVudHMgYW5kIHN1Z2dlc3Rpb25zIGFyZSB2ZXJ5IHZlcnkgd2VsY29tZS4KCjMuIEFja25vd2xlZGdlbWVudHMKICAgQW1hdXJ5IERlbW9sIChhZGVtb2xAZGliY29tLmZyKSBhbmQgRnJhbmNvaXMgS2Fub3Vubmlrb2ZmIGZyb20gRGlCY29tIGZvcgogICAgcHJvdmlkaW5nIHNwZWNzLCBjb2RlIGFuZCBoZWxwLCBvbiB3aGljaCB0aGUgZHZiLWRpYnVzYiwgZGliMzAwMG1iIGFuZAogICAgZGliMzAwMG1jIGFyZSBiYXNlZC4KCiAgIERhdmlkIE1hdHRoZXdzIGZvciBpZGVudGlmeWluZyBhIG5ldyBkZXZpY2UgdHlwZSAoQXJ0ZWMgVDEgd2l0aCBBTjIyMzUpCiAgICBhbmQgZm9yIGV4dGVuZGluZyBkaWJ1c2Igd2l0aCByZW1vdGUgY29udHJvbCBldmVudCBoYW5kbGluZy4gVGhhbmsgeW91LgoKICAgQWxleCBXb29kcyBmb3IgZnJlcXVlbnRseSBhbnN3ZXJpbmcgcXVlc3Rpb24gYWJvdXQgdXNiIGFuZCBkdmIKICAgIHN0dWZmLCBhIGJpZyB0aGFuayB5b3UuCgogICBCZXJuZCBXYWduZXIgZm9yIGhlbHBpbmcgd2l0aCBodWdlIGJ1ZyByZXBvcnRzIGFuZCBkaXNjdXNzaW9ucy4KCiAgIEd1bm5hciBXaXR0aWNoIGFuZCBKb2FjaGltIHZvbiBDYXJvbiBmb3IgdGhlaXIgdHJ1c3QgZm9yIHByb3ZpZGluZwogICAgcm9vdC1zaGVsbHMgb24gdGhlaXIgbWFjaGluZXMgdG8gaW1wbGVtZW50IHN1cHBvcnQgZm9yIG5ldyBkZXZpY2VzLgoKICAgQWxsYW4gVGhpcmQgYW5kIE1pY2hhZWwgSHV0Y2hpbnNvbiBmb3IgdGhlaXIgaGVscCB0byB3cml0ZSB0aGUgTmVidWxhCiAgICBkaWdpdHYtZHJpdmVyLgoKICAgR2xlbiBIYXJyaXMgZm9yIGJyaW5naW5nIHVwLCB0aGF0IHRoZXJlIGlzIGEgbmV3IGRpYnVzYi1kZXZpY2UgYW5kIEppdW4tS3VlaQogICAgSnVuZyBmcm9tIEFWZXJNZWRpYSB3aG8ga2luZGx5IHByb3ZpZGVkIGEgc3BlY2lhbCBmaXJtd2FyZSB0byBnZXQgdGhlIGRldmljZQogICAgdXAgYW5kIHJ1bm5pbmcgaW4gTGludXguCgogICBKZW5uaWZlciBDaGVuLCBKZWZmIGFuZCBKYWNrIGZyb20gVHdpbmhhbiBmb3Iga2luZGx5IHN1cHBvcnRpbmcgYnkKCXdyaXRpbmcgdGhlIHZwNzA0NS1kcml2ZXIuCgogICBTb21lIGd1eXMgb24gdGhlIGxpbnV4LWR2YiBtYWlsaW5nIGxpc3QgZm9yIGVuY291cmFnaW5nIG1lCgogICBQZXRlciBTY2hpbGRtYW5uID5wZXRlci5zY2hpbGRtYW5uLW5vc3BhbS1hdC13ZWIuZGU8IGZvciBoaXMKICAgIHVzZXItbGV2ZWwgZmlybXdhcmUgbG9hZGVyLCB3aGljaCBzYXZlcyBhIGxvdCBvZiB0aW1lCiAgICAod2hlbiB3cml0aW5nIHRoZSB2cDcwNDEgZHJpdmVyKQoKICAgVWxmIEhlcm1lbmF1IGZvciBoZWxwaW5nIG1lIG91dCB3aXRoIHRyYWRpdGlvbmFsIGNoaW5lc2UuCgogICBBbmRy6SBTbW9rdHVuIGFuZCBDaHJpc3RpYW4gRnL2bW1lbCBmb3Igc3VwcG9ydGluZyBtZSB3aXRoCiAgICBoYXJkd2FyZSBhbmQgbGlzdGVuaW5nIHRvIG15IHByb2JsZW1zIHZlcnkgcGF0aWVudGx5Lgo=