RG9jdW1lbnRhdGlvbiBmb3IgZHZiLXVzYi1mcmFtZXdvcmsgbW9kdWxlIGFuZCBpdHMgZGV2aWNlcwoKSWRlYSBiZWhpbmQgdGhlIGR2Yi11c2ItZnJhbWV3b3JrCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKSW4gTWFyY2ggMjAwNSBJIGdvdCB0aGUgbmV3IFR3aW5oYW4gVVNCMi4wIERWQi1UIGRldmljZS4gVGhleSBwcm92aWRlZCBzcGVjcyBhbmQgYSBmaXJtd2FyZS4KClF1aXRlIGtlZW4gSSB3YW50ZWQgdG8gcHV0IHRoZSBkcml2ZXIgKHdpdGggc29tZSBxdWlya3Mgb2YgY291cnNlKSBpbnRvIGRpYnVzYi4KQWZ0ZXIgcmVhZGluZyBzb21lIHNwZWNzIGFuZCBkb2luZyBzb21lIFVTQiBzbm9vcGluZywgaXQgcmVhbGl6ZWQsIHRoYXQgdGhlCmRpYnVzYi1kcml2ZXIgd291bGQgYmUgYSBjb21wbGV0ZSBtZXNzIGFmdGVyd2FyZHMuIFNvIEkgZGVjaWRlZCB0byBkbyBpdCBpbiBhCmRpZmZlcmVudCB3YXk6IFdpdGggdGhlIGhlbHAgb2YgYSBkdmItdXNiLWZyYW1ld29yay4KClRoZSBmcmFtZXdvcmsgcHJvdmlkZXMgZ2VuZXJpYyBmdW5jdGlvbnMgKG1vc3RseSBrZXJuZWwgQVBJIGNhbGxzKSwgc3VjaCBhczoKCi0gVHJhbnNwb3J0IFN0cmVhbSBVUkIgaGFuZGxpbmcgaW4gY29uanVuY3Rpb24gd2l0aCBkdmItZGVtdXgtZmVlZC1jb250cm9sCiAgKGJ1bGsgYW5kIGlzb2MgYXJlIHN1cHBvcnRlZCkKLSByZWdpc3RlcmluZyB0aGUgZGV2aWNlIGZvciB0aGUgRFZCLUFQSQotIHJlZ2lzdGVyaW5nIGFuIEkyQy1hZGFwdGVyIGlmIGFwcGxpY2FibGUKLSByZW1vdGUtY29udHJvbC9pbnB1dC1kZXZpY2UgaGFuZGxpbmcKLSBmaXJtd2FyZSByZXF1ZXN0aW5nIGFuZCBsb2FkaW5nIChjdXJyZW50bHkganVzdCBmb3IgdGhlIEN5cHJlc3MgVVNCCiAgY29udHJvbGxlcnMpCi0gb3RoZXIgZnVuY3Rpb25zL21ldGhvZHMgd2hpY2ggY2FuIGJlIHNoYXJlZCBieSBzZXZlcmFsIGRyaXZlcnMgKHN1Y2ggYXMKICBmdW5jdGlvbnMgZm9yIGJ1bGstY29udHJvbC1jb21tYW5kcykKLSBUT0RPOiBhIEkyQy1jaHVua2VyLiBJdCBjcmVhdGVzIGRldmljZS1zcGVjaWZpYyBjaHVua3Mgb2YgcmVnaXN0ZXItYWNjZXNzZXMKICBkZXBlbmRpbmcgb24gbGVuZ3RoIG9mIGEgcmVnaXN0ZXIgYW5kIHRoZSBudW1iZXIgb2YgdmFsdWVzIHRoYXQgY2FuIGJlCiAgbXVsdGktd3JpdHRlbiBhbmQgbXVsdGktcmVhZC4KClRoZSBzb3VyY2UgY29kZSBvZiB0aGUgcGFydGljdWxhciBEVkIgVVNCIGRldmljZXMgZG9lcyBqdXN0IHRoZSBjb21tdW5pY2F0aW9uCndpdGggdGhlIGRldmljZSB2aWEgdGhlIGJ1cy4gVGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgRFZCLUFQSS1mdW5jdGlvbmFsaXR5CmlzIGRvbmUgdmlhIGNhbGxiYWNrcywgYXNzaWduZWQgaW4gYSBzdGF0aWMgZGV2aWNlLWRlc2NyaXB0aW9uIChzdHJ1Y3QKZHZiX3VzYl9kZXZpY2UpIGVhY2ggZGV2aWNlLWRyaXZlciBoYXMgdG8gaGF2ZS4KCkZvciBhbiBleGFtcGxlIGhhdmUgYSBsb29rIGluIGRyaXZlcnMvbWVkaWEvZHZiL2R2Yi11c2IvdnA3MDQ1Ki4KCk9iamVjdGl2ZSBpcyB0byBtaWdyYXRlIGFsbCB0aGUgdXNiLWRldmljZXMgKGRpYnVzYiwgY2luZXJneVQyLCBtYXliZSB0aGUKdHR1c2I7IGZsZXhjb3AtdXNiIGFscmVhZHkgYmVuZWZpdHMgZnJvbSB0aGUgZ2VuZXJpYyBmbGV4Y29wLWRldmljZSkgdG8gdXNlCnRoZSBkdmItdXNiLWxpYi4KClRPRE86IGR5bmFtaWMgZW5hYmxpbmcgYW5kIGRpc2FibGluZyBvZiB0aGUgcGlkLWZpbHRlciBpbiByZWdhcmQgdG8gbnVtYmVyIG9mCmZlZWRzIHJlcXVlc3RlZC4KClN1cHBvcnRlZCBkZXZpY2VzCj09PT09PT09PT09PT09PT09PT09PT09PQoKU2VlIHRoZSBMaW51eFRWIERWQiBXaWtpIGF0IHd3dy5saW51eHR2Lm9yZyBmb3IgYSBjb21wbGV0ZSBsaXN0IG9mCmNhcmRzL2RyaXZlcnMvZmlybXdhcmVzOgoKaHR0cDovL3d3dy5saW51eHR2Lm9yZy93aWtpL2luZGV4LnBocC9EVkJfVVNCCgowLiBIaXN0b3J5ICYgTmV3czoKICAyMDA1LTA2LTMwIC0gYWRkZWQgc3VwcG9ydCBmb3IgV2lkZVZpZXcgV1QtMjIwVSAoVGhhbmtzIHRvIFN0ZXZlIENoYW5nKQogIDIwMDUtMDUtMzAgLSBhZGRlZCBiYXNpYyBpc29jaHJvbm91cyBzdXBwb3J0IHRvIHRoZSBkdmItdXNiLWZyYW1ld29yawogICAgICAgICAgICAgICBhZGRlZCBzdXBwb3J0IGZvciBDb25leGFudCBIeWJyaWQgcmVmZXJlbmNlIGRlc2lnbiBhbmQgTmVidWxhIERpZ2lUViBVU0IKICAyMDA1LTA0LTE3IC0gYWxsIGRpYnVzYiBkZXZpY2VzIHBvcnRlZCB0byBtYWtlIHVzZSBvZiB0aGUgZHZiLXVzYi1mcmFtZXdvcmsKICAyMDA1LTA0LTAyIC0gcmUtZW5hYmxlZCBhbmQgaW1wcm92ZWQgcmVtb3RlIGNvbnRyb2wgY29kZS4KICAyMDA1LTAzLTMxIC0gcG9ydGVkIHRoZSBZYWt1bW8vSGFtYS9UeXBob29uIERWQi1UIFVTQjIuMCBkZXZpY2UgdG8gZHZiLXVzYi4KICAyMDA1LTAzLTMwIC0gZmlyc3QgY29tbWl0IG9mIHRoZSBkdmItdXNiLW1vZHVsZSBiYXNlZCBvbiB0aGUgZGlidXNiLXNvdXJjZS4gRmlyc3QgZGV2aWNlIGlzIGEgbmV3IGRyaXZlciBmb3IgdGhlCiAgICAgICAgICAgICAgIFR3aW5oYW5EVFYgQWxwaGEgLyBNYWdpY0JveCBJSSBVU0IyLjAtb25seSBEVkItVCBkZXZpY2UuCgogIChjaGFuZ2UgZnJvbSBkdmItZGlidXNiIHRvIGR2Yi11c2IpCiAgMjAwNS0wMy0yOCAtIGFkZGVkIHN1cHBvcnQgZm9yIHRoZSBBVmVyTWVkaWEgQXZlclRWIERWQi1UIFVTQjIuMCBkZXZpY2UgKFRoYW5rcyB0byBHbGVuIEhhcnJpcyBhbmQgSml1bi1LdWVpIEp1bmcsIEFWZXJNZWRpYSkKICAyMDA1LTAzLTE0IC0gYWRkZWQgc3VwcG9ydCBmb3IgdGhlIFR5cGhvb24vWWFrdW1vL0hBTUEgRFZCLVQgbW9iaWxlIFVTQjIuMAogIDIwMDUtMDItMTEgLSBhZGRlZCBzdXBwb3J0IGZvciB0aGUgS1dvcmxkL0FEU1RlY2ggSW5zdGFudCBEVkItVCBVU0IyLjAuIFRoYW5rcyBhIGxvdCB0byBKb2FjaGltIHZvbiBDYXJvbgogIDIwMDUtMDItMDIgLSBhZGRlZCBzdXBwb3J0IGZvciB0aGUgSGF1cHBhdWdlIFdpbi1UViBOb3ZhLVQgVVNCMgogIDIwMDUtMDEtMzEgLSBkaXN0b3J0ZWQgc3RyZWFtaW5nIGlzIGdvbmUgZm9yIFVTQjEuMSBkZXZpY2VzCiAgMjAwNS0wMS0xMyAtIG1vdmVkIHRoZSBtaXJyb3JlZCBwaWRfZmlsdGVyX3RhYmxlIGJhY2sgdG8gZHZiLWRpYnVzYgogICAgICAgICAgICAgLSBmaXJzdCBhbG1vc3Qgd29ya2luZyB2ZXJzaW9uIGZvciBIYW5mVGVrIFVNVC0wMTAKICAgICAgICAgICAgIC0gZm91bmQgb3V0LCB0aGF0IFlha3Vtby9IQU1BL1R5cGhvb24gYXJlIHByZWRlY2Vzc29ycyBvZiB0aGUgSGFuZlRlayBVTVQtMDEwCiAgMjAwNS0wMS0xMCAtIHJlZmFjdG9yaW5nIGNvbXBsZXRlZCwgbm93IGV2ZXJ5dGhpbmcgaXMgdmVyeSBkZWxpZ2h0ZnVsCiAgICAgICAgICAgICAtIHR1bmVyIHF1aXJrcyBmb3Igc29tZSB3ZWlyZCBkZXZpY2VzIChBcnRlYyBUMSBBTjIyMzUgZGV2aWNlIGhhcyBzb21ldGltZXMgYQogICAgICAgICAgICAgICBQYW5hc29uaWMgVHVuZXIgYXNzZW1ibGVkKS4gVHVuZXJwcm9iaW5nIGltcGxlbWVudGVkLiBUaGFua3MgYSBsb3QgdG8gR3VubmFyIFdpdHRpY2guCiAgMjAwNC0xMi0yOSAtIGFmdGVyIHNldmVyYWwgZGF5cyBvZiBzdHJ1Z2dsaW5nIGFyb3VuZCBidWcgb2Ygbm8gcmV0dXJuaW5nIFVSQnMgZml4ZWQuCiAgMjAwNC0xMi0yNiAtIHJlZmFjdG9yZWQgdGhlIGRpYnVzYi1kcml2ZXIsIHNwbGl0dGVkIGludG8gc2VwYXJhdGUgZmlsZXMKICAgICAgICAgICAgIC0gaTJjLXByb2JpbmcgZW5hYmxlZAogIDIwMDQtMTItMDYgLSBwb3NzaWJpbGl0eSBmb3IgZGVtb2QgaTJjLWFkZHJlc3MgcHJvYmluZwogICAgICAgICAgICAgLSBuZXcgdXNiIElEcyAoQ29tcHJvLCBBcnRlYykKICAyMDA0LTExLTIzIC0gbWVyZ2VkIGNoYW5nZXMgZnJvbSBEaUIzMDAwTUNfdmVyMi4xCiAgICAgICAgICAgICAtIHJldmlzZWQgdGhlIGRlYnVnZ2luZwogICAgICAgICAgICAgLSBwb3NzaWJpbGl0eSB0byBkZWxpdmVyIHRoZSBjb21wbGV0ZSBUUyBmb3IgVVNCMi4wCiAgMjAwNC0xMS0yMSAtIGZpcnN0IHdvcmtpbmcgdmVyc2lvbiBvZiB0aGUgZGliMzAwMG1jL3AgZnJvbnRlbmQgZHJpdmVyLgogIDIwMDQtMTEtMTIgLSBhZGRlZCBhZGRpdGlvbmFsIHJlbW90ZSBjb250cm9sIGtleXMuIFRoYW5rcyB0byBVd2UgSGFua2UuCiAgMjAwNC0xMS0wNyAtIGFkZGVkIHJlbW90ZSBjb250cm9sIHN1cHBvcnQuIFRoYW5rcyB0byBEYXZpZCBNYXR0aGV3cy4KICAyMDA0LTExLTA1IC0gYWRkZWQgc3VwcG9ydCBmb3IgYSBuZXcgZGV2aWNlcyAoR3JhbmR0ZWMvQXZlcm1lZGlhL0FydGVjKQogICAgICAgICAgICAgLSBtZXJnZWQgbXkgY2hhbmdlcyAoZm9yIGRpYjMwMDBtYi9kaWJ1c2IpIHRvIHRoZSBGRV9SRUZBQ1RPUklORywgYmVjYXVzZSBpdCBiZWNhbWUgSEVBRAogICAgICAgICAgICAgLSBtb3ZlZCB0cmFuc2ZlciBjb250cm9sIChwaWQgZmlsdGVyLCBmaWZvIGNvbnRyb2wpIGZyb20gdXNiIGRyaXZlciB0byBmcm9udGVuZCwgaXQgc2VlbXMKICAgICAgICAgICAgICAgYmV0dGVyIHNldHRsZWQgdGhlcmUgKGFkZGVkIHhmZXJfb3BzLXN0cnVjdCkKICAgICAgICAgICAgIC0gY3JlYXRlZCBhIGNvbW1vbiBmaWxlcyBmb3IgZnJvbnRlbmRzIChtYy9wL21iKQogIDIwMDQtMDktMjggLSBhZGRlZCBzdXBwb3J0IGZvciBhIG5ldyBkZXZpY2UgKFVua293biwgdmVuZG9yIElEIGlzIEh5cGVyLVBhbHRlaykKICAyMDA0LTA5LTIwIC0gYWRkZWQgc3VwcG9ydCBmb3IgYSBuZXcgZGV2aWNlIChDb21wcm8gRFZCLVUyMDAwKSwgdGhhbmtzCiAgICAgICAgICAgICAgIHRvIEFtYXVyeSBEZW1vbCBmb3IgcmVwb3J0aW5nCiAgICAgICAgICAgICAtIGNoYW5nZWQgdXNiIFRTIHRyYW5zZmVyIG1ldGhvZCAoc2V2ZXJhbCB1cmJzLCBzdG9wcGluZyB0cmFuc2ZlcgogICAgICAgICAgICAgICBiZWZvcmUgc2V0dGluZyBhIG5ldyBwaWQpCiAgMjAwNC0wOS0xMyAtIGFkZGVkIHN1cHBvcnQgZm9yIGEgbmV3IGRldmljZSAoQXJ0ZWMgVDEgVVNCIFRWQk9YKSwgdGhhbmtzCiAgICAgICAgICAgICAgIHRvIENocmlzdGlhbiBNb3RzY2hrZSBmb3IgcmVwb3J0aW5nCiAgMjAwNC0wOS0wNSAtIHJlbGVhc2VkIHRoZSBkaWJ1c2IgZGV2aWNlIGFuZCBkaWIzMDAwbWItZnJvbnRlbmQgZHJpdmVyCgogIChvbGQgbmV3cyBmb3IgdnA3MDQxLmMpCiAgMjAwNC0wNy0xNSAtIGZvdW5kIG91dCwgYnkgYWNjaWRlbnQsIHRoYXQgdGhlIGRldmljZSBoYXMgYSBUVUE2MDEwWFMgZm9yCiAgICAgICAgICAgICAgIFBMTAogIDIwMDQtMDctMTIgLSBmaWd1cmVkIG91dCwgdGhhdCB0aGUgZHJpdmVyIHNob3VsZCBhbHNvIHdvcmsgd2l0aCB0aGUKICAgICAgICAgICAgICAgQ1RTIFBvcnRhYmxlIChDaGluZXNlIFRlbGV2aXNpb24gU3lzdGVtKQogIDIwMDQtMDctMDggLSBmaXJtd2FyZS1leHRyYWN0aW9uLTIuNDIyLXByb2JsZW0gc29sdmVkLCBkcml2ZXIgaXMgbm93IHdvcmtpbmcKICAgICAgICAgICAgICAgcHJvcGVybHkgd2l0aCBmaXJtd2FyZSBleHRyYWN0ZWQgZnJvbSAyLjQyMgogICAgICAgICAgICAgLSAjaWYgZm9yIDIuNi40IChkdmIpLCBjb21waWxlIGlzc3VlCiAgICAgICAgICAgICAtIGNoYW5nZWQgZmlybXdhcmUgaGFuZGxpbmcsIHNlZSB2cDcwNDEudHh0IHNlYyAxLjEKICAyMDA0LTA3LTAyIC0gc29tZSB0dW5lciBtb2RpZmljYXRpb25zLCB2MC4xLCBjbGVhbnVwcywgZmlyc3QgcHVibGljCiAgMjAwNC0wNi0yOCAtIG5vdyB1c2luZyB0aGUgZHZiX2RteF9zd2ZpbHRlcl9wYWNrZXRzLCBldmVyeXRoaW5nCiAgICAgICAgICAgICAgIHJ1bnMgZmluZSBub3cKICAyMDA0LTA2LTI3IC0gYWJsZSB0byB3YXRjaCBhbmQgc3dpdGNoaW5nIGNoYW5uZWxzIChwcmUtYWxwaGEpCiAgICAgICAgICAgICAtIG5vIHNlY3Rpb24gZmlsdGVyaW5nIHlldAogIDIwMDQtMDYtMDYgLSBmaXJzdCBUUyByZWNlaXZlZCwgYnV0IGtlcm5lbCBvb3BzIDovCiAgMjAwNC0wNS0xNCAtIGZpcm13YXJlIGxvYWRlciBpcyB3b3JraW5nCiAgMjAwNC0wNS0xMSAtIHN0YXJ0IHdyaXRpbmcgdGhlIGRyaXZlcgoKMS4gSG93IHRvIHVzZT8KMS4xLiBGaXJtd2FyZQoKTW9zdCBvZiB0aGUgVVNCIGRyaXZlcnMgbmVlZCB0byBkb3dubG9hZCBhIGZpcm13YXJlIHRvIHRoZSBkZXZpY2UgYmVmb3JlIHN0YXJ0CndvcmtpbmcuCgpIYXZlIGEgbG9vayBhdCB0aGUgV2lraXBhZ2UgZm9yIHRoZSBEVkItVVNCLWRyaXZlcnMgdG8gZmluZCBvdXQsIHdoaWNoIGZpcm13YXJlCnlvdSBuZWVkIGZvciB5b3VyIGRldmljZToKCmh0dHA6Ly93d3cubGludXh0di5vcmcvd2lraS9pbmRleC5waHAvRFZCX1VTQgoKMS4yLiBDb21waWxpbmcKClNpbmNlIHRoZSBkcml2ZXIgaXMgaW4gdGhlIGxpbnV4IGtlcm5lbCwgYWN0aXZhdGluZyB0aGUgZHJpdmVyIGluCnlvdXIgZmF2b3JpdGUgY29uZmlnLWVudmlyb25tZW50IHNob3VsZCBzdWZmaWNpZW50LiBJIHJlY29tbWVuZAp0byBjb21waWxlIHRoZSBkcml2ZXIgYXMgbW9kdWxlLiBIb3RwbHVnIGRvZXMgdGhlIHJlc3QuCgpJZiB5b3UgdXNlIGR2Yi1rZXJuZWwgZW50ZXIgdGhlIGJ1aWxkLTIuNiBkaXJlY3RvcnkgcnVuICdtYWtlJyBhbmQgJ2luc21vZC5zaApsb2FkJyBhZnRlcndhcmRzLgoKMS4zLiBMb2FkaW5nIHRoZSBkcml2ZXJzCgpIb3RwbHVnIGlzIGFibGUgdG8gbG9hZCB0aGUgZHJpdmVyLCB3aGVuIGl0IGlzIG5lZWRlZCAoYmVjYXVzZSB5b3UgcGx1Z2dlZAppbiB0aGUgZGV2aWNlKS4KCklmIHlvdSB3YW50IHRvIGVuYWJsZSBkZWJ1ZyBvdXRwdXQsIHlvdSBoYXZlIHRvIGxvYWQgdGhlIGRyaXZlciBtYW51YWxseSBhbmQKZnJvbSB3aXRoaW5nIHRoZSBkdmIta2VybmVsIGN2cyByZXBvc2l0b3J5LgoKZmlyc3QgaGF2ZSBhIGxvb2ssIHdoaWNoIGRlYnVnIGxldmVsIGFyZSBhdmFpbGFibGU6Cgptb2RpbmZvIGR2Yi11c2IKbW9kaW5mbyBkdmItdXNiLXZwNzA0NQpldGMuCgptb2Rwcm9iZSBkdmItdXNiIGRlYnVnPTxsZXZlbD4KbW9kcHJvYmUgZHZiLXVzYi12cDcwNDUgZGVidWc9PGxldmVsPgpldGMuCgpzaG91bGQgZG8gdGhlIHRyaWNrLgoKV2hlbiB0aGUgZHJpdmVyIGlzIGxvYWRlZCBzdWNjZXNzZnVsbHksIHRoZSBmaXJtd2FyZSBmaWxlIHdhcyBpbgp0aGUgcmlnaHQgcGxhY2UgYW5kIHRoZSBkZXZpY2UgaXMgY29ubmVjdGVkLCB0aGUgIlBvd2VyIi1MRUQgc2hvdWxkIGJlCnR1cm5lZCBvbi4KCkF0IHRoaXMgcG9pbnQgeW91IHNob3VsZCBiZSBhYmxlIHRvIHN0YXJ0IGEgZHZiLWNhcGFibGUgYXBwbGljYXRpb24uIEknbSB1c2UKKHR8cyl6YXAsIG1wbGF5ZXIgYW5kIGR2YnNjYW4gdG8gdGVzdCB0aGUgYmFzaWNzLiBWRFIteGluZSBwcm92aWRlcyB0aGUKbG9uZy10ZXJtIHRlc3Qgc2NlbmFyaW8uCgoyLiBLbm93biBwcm9ibGVtcyBhbmQgYnVncwoKLSBEb24ndCByZW1vdmUgdGhlIFVTQiBkZXZpY2Ugd2hpbGUgcnVubmluZyBhbiBEVkIgYXBwbGljYXRpb24sIHlvdXIgc3lzdGVtCiAgd2lsbCBnbyBjcmF6eSBvciBkaWUgbW9zdCBsaWtlbHkuCgoyLjEuIEFkZGluZyBzdXBwb3J0IGZvciBkZXZpY2VzCgpUT0RPCgoyLjIuIFVTQjEuMSBCYW5kd2lkdGggbGltaXRhdGlvbgoKQSBsb3Qgb2YgdGhlIGN1cnJlbnRseSBzdXBwb3J0ZWQgZGV2aWNlcyBhcmUgVVNCMS4xIGFuZCB0aHVzIHRoZXkgaGF2ZSBhCm1heGltdW0gYmFuZHdpZHRoIG9mIGFib3V0IDUtNiBNQml0L3Mgd2hlbiBjb25uZWN0ZWQgdG8gYSBVU0IyLjAgaHViLgpUaGlzIGlzIG5vdCBlbm91Z2ggZm9yIHJlY2VpdmluZyB0aGUgY29tcGxldGUgdHJhbnNwb3J0IHN0cmVhbSBvZiBhCkRWQi1UIGNoYW5uZWwgKHdoaWNoIGlzIGFib3V0IDE2IE1CaXQvcykuIE5vcm1hbGx5IHRoaXMgaXMgbm90IGEKcHJvYmxlbSwgaWYgeW91IG9ubHkgd2FudCB0byB3YXRjaCBUViAodGhpcyBkb2VzIG5vdCBhcHBseSBmb3IgSERUViksCmJ1dCB3YXRjaGluZyBhIGNoYW5uZWwgd2hpbGUgcmVjb3JkaW5nIGFub3RoZXIgY2hhbm5lbCBvbiB0aGUgc2FtZQpmcmVxdWVuY3kgc2ltcGx5IGRvZXMgbm90IHdvcmsgdmVyeSB3ZWxsLiBUaGlzIGFwcGxpZXMgdG8gYWxsIFVTQjEuMQpEVkItVCBkZXZpY2VzLCBub3QganVzdCB0aGUgZHZiLXVzYi1kZXZpY2VzKQoKVGhlIGJ1Zywgd2hlcmUgdGhlIFRTIGlzIGRpc3RvcnRlZCBieSBhIGhlYXZ5IHVzYWdlIG9mIHRoZSBkZXZpY2UgaXMgZ29uZQpkZWZpbml0ZWx5LiBBbGwgZHZiLXVzYi1kZXZpY2VzIEkgd2FzIHVzaW5nIChUd2luaGFuLCBLd29ybGQsIERpQmNvbSkgYXJlCndvcmtpbmcgbGlrZSBjaGFybSBub3cgd2l0aCBWRFIuIFNvbWV0aW1lcyBJIGV2ZW4gd2FzIGFibGUgdG8gcmVjb3JkIGEgY2hhbm5lbAphbmQgd2F0Y2ggYW5vdGhlciBvbmUuCgoyLjMuIENvbW1lbnRzCgpQYXRjaGVzLCBjb21tZW50cyBhbmQgc3VnZ2VzdGlvbnMgYXJlIHZlcnkgdmVyeSB3ZWxjb21lLgoKMy4gQWNrbm93bGVkZ2VtZW50cwogICBBbWF1cnkgRGVtb2wgKGFkZW1vbEBkaWJjb20uZnIpIGFuZCBGcmFuY29pcyBLYW5vdW5uaWtvZmYgZnJvbSBEaUJjb20gZm9yCiAgICBwcm92aWRpbmcgc3BlY3MsIGNvZGUgYW5kIGhlbHAsIG9uIHdoaWNoIHRoZSBkdmItZGlidXNiLCBkaWIzMDAwbWIgYW5kCiAgICBkaWIzMDAwbWMgYXJlIGJhc2VkLgoKICAgRGF2aWQgTWF0dGhld3MgZm9yIGlkZW50aWZ5aW5nIGEgbmV3IGRldmljZSB0eXBlIChBcnRlYyBUMSB3aXRoIEFOMjIzNSkKICAgIGFuZCBmb3IgZXh0ZW5kaW5nIGRpYnVzYiB3aXRoIHJlbW90ZSBjb250cm9sIGV2ZW50IGhhbmRsaW5nLiBUaGFuayB5b3UuCgogICBBbGV4IFdvb2RzIGZvciBmcmVxdWVudGx5IGFuc3dlcmluZyBxdWVzdGlvbiBhYm91dCB1c2IgYW5kIGR2YgogICAgc3R1ZmYsIGEgYmlnIHRoYW5rIHlvdS4KCiAgIEJlcm5kIFdhZ25lciBmb3IgaGVscGluZyB3aXRoIGh1Z2UgYnVnIHJlcG9ydHMgYW5kIGRpc2N1c3Npb25zLgoKICAgR3VubmFyIFdpdHRpY2ggYW5kIEpvYWNoaW0gdm9uIENhcm9uIGZvciB0aGVpciB0cnVzdCBmb3IgcHJvdmlkaW5nCiAgICByb290LXNoZWxscyBvbiB0aGVpciBtYWNoaW5lcyB0byBpbXBsZW1lbnQgc3VwcG9ydCBmb3IgbmV3IGRldmljZXMuCgogICBBbGxhbiBUaGlyZCBhbmQgTWljaGFlbCBIdXRjaGluc29uIGZvciB0aGVpciBoZWxwIHRvIHdyaXRlIHRoZSBOZWJ1bGEKICAgIGRpZ2l0di1kcml2ZXIuCgogICBHbGVuIEhhcnJpcyBmb3IgYnJpbmdpbmcgdXAsIHRoYXQgdGhlcmUgaXMgYSBuZXcgZGlidXNiLWRldmljZSBhbmQgSml1bi1LdWVpCiAgICBKdW5nIGZyb20gQVZlck1lZGlhIHdobyBraW5kbHkgcHJvdmlkZWQgYSBzcGVjaWFsIGZpcm13YXJlIHRvIGdldCB0aGUgZGV2aWNlCiAgICB1cCBhbmQgcnVubmluZyBpbiBMaW51eC4KCiAgIEplbm5pZmVyIENoZW4sIEplZmYgYW5kIEphY2sgZnJvbSBUd2luaGFuIGZvciBraW5kbHkgc3VwcG9ydGluZyBieQoJd3JpdGluZyB0aGUgdnA3MDQ1LWRyaXZlci4KCiAgIFN0ZXZlIENoYW5nIGZyb20gV2lkZVZpZXcgZm9yIHByb3ZpZGluZyBpbmZvcm1hdGlvbiBmb3IgbmV3IGRldmljZXMgYW5kCglmaXJtd2FyZSBmaWxlcy4KCiAgIE1pY2hhZWwgUGF4dG9uIGZvciBzdWJtaXR0aW5nIHJlbW90ZSBjb250cm9sIGtleW1hcHMuCgogICBTb21lIGd1eXMgb24gdGhlIGxpbnV4LWR2YiBtYWlsaW5nIGxpc3QgZm9yIGVuY291cmFnaW5nIG1lLgoKICAgUGV0ZXIgU2NoaWxkbWFubiA+cGV0ZXIuc2NoaWxkbWFubi1ub3NwYW0tYXQtd2ViLmRlPCBmb3IgaGlzCiAgICB1c2VyLWxldmVsIGZpcm13YXJlIGxvYWRlciwgd2hpY2ggc2F2ZXMgYSBsb3Qgb2YgdGltZQogICAgKHdoZW4gd3JpdGluZyB0aGUgdnA3MDQxIGRyaXZlcikKCiAgIFVsZiBIZXJtZW5hdSBmb3IgaGVscGluZyBtZSBvdXQgd2l0aCB0cmFkaXRpb25hbCBjaGluZXNlLgoKICAgQW5kcukgU21va3R1biBhbmQgQ2hyaXN0aWFuIEZy9m1tZWwgZm9yIHN1cHBvcnRpbmcgbWUgd2l0aAogICAgaGFyZHdhcmUgYW5kIGxpc3RlbmluZyB0byBteSBwcm9ibGVtcyB2ZXJ5IHBhdGllbnRseS4K