ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcG93ZXIvZGV2aWNlcy50eHQgYi9Eb2N1bWVudGF0aW9uL3Bvd2VyL2RldmljZXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkNGFlOWEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Bvd2VyL2RldmljZXMudHh0CkBAIC0wLDAgKzEsMzE5IEBACisKK0RldmljZSBQb3dlciBNYW5hZ2VtZW50CisKKworRGV2aWNlIHBvd2VyIG1hbmFnZW1lbnQgZW5jb21wYXNzZXMgdHdvIGFyZWFzIC0gdGhlIGFiaWxpdHkgdG8gc2F2ZQorc3RhdGUgYW5kIHRyYW5zaXRpb24gYSBkZXZpY2UgdG8gYSBsb3ctcG93ZXIgc3RhdGUgd2hlbiB0aGUgc3lzdGVtIGlzCitlbnRlcmluZyBhIGxvdy1wb3dlciBzdGF0ZTsgYW5kIHRoZSBhYmlsaXR5IHRvIHRyYW5zaXRpb24gYSBkZXZpY2UgdG8KK2EgbG93LXBvd2VyIHN0YXRlIHdoaWxlIHRoZSBzeXN0ZW0gaXMgcnVubmluZyAoYW5kIGluZGVwZW5kZW50bHkgb2YKK2FueSBvdGhlciBwb3dlciBtYW5hZ2VtZW50IGFjdGl2aXR5KS4gCisKKworTWV0aG9kcworCitUaGUgbWV0aG9kcyB0byBzdXNwZW5kIGFuZCByZXN1bWUgZGV2aWNlcyByZXNpZGUgaW4gc3RydWN0IGJ1c190eXBlOiAKKworc3RydWN0IGJ1c190eXBlIHsKKyAgICAgICAuLi4KKyAgICAgICBpbnQgICAgICAgICAgICAgKCpzdXNwZW5kKShzdHJ1Y3QgZGV2aWNlICogZGV2LCBwbV9tZXNzYWdlX3Qgc3RhdGUpOworICAgICAgIGludCAgICAgICAgICAgICAoKnJlc3VtZSkoc3RydWN0IGRldmljZSAqIGRldik7Cit9OworCitFYWNoIGJ1cyBkcml2ZXIgaXMgcmVzcG9uc2libGUgaW1wbGVtZW50aW5nIHRoZXNlIG1ldGhvZHMsIHRyYW5zbGF0aW5nCit0aGUgY2FsbCBpbnRvIGEgYnVzLXNwZWNpZmljIHJlcXVlc3QgYW5kIGZvcndhcmRpbmcgdGhlIGNhbGwgdG8gdGhlCitidXMtc3BlY2lmaWMgZHJpdmVycy4gRm9yIGV4YW1wbGUsIFBDSSBkcml2ZXJzIGltcGxlbWVudCBzdXNwZW5kKCkgYW5kCityZXN1bWUoKSBtZXRob2RzIGluIHN0cnVjdCBwY2lfZHJpdmVyLiBUaGUgUENJIGNvcmUgaXMgc2ltcGx5CityZXNwb25zaWJsZSBmb3IgdHJhbnNsYXRpbmcgdGhlIHBvaW50ZXJzIHRvIFBDSS1zcGVjaWZpYyBvbmVzIGFuZAorY2FsbGluZyB0aGUgbG93LWxldmVsIGRyaXZlci4KKworVGhpcyBpcyBkb25lIHRvIGEpIGVhc2UgdHJhbnNpdGlvbiB0byB0aGUgbmV3IHBvd2VyIG1hbmFnZW1lbnQgbWV0aG9kcworYW5kIGxldmVyYWdlIHRoZSBleGlzdGluZyBQTSBjb2RlIGluIHZhcmlvdXMgYnVzIGRyaXZlcnM7IGIpIGFsbG93CitidXNlcyB0byBpbXBsZW1lbnQgZ2VuZXJpYyBhbmQgZGVmYXVsdCBQTSByb3V0aW5lcyBmb3IgZGV2aWNlcywgYW5kIGMpCittYWtlIHRoZSBmbG93IG9mIGV4ZWN1dGlvbiBvYnZpb3VzIHRvIHRoZSByZWFkZXIuIAorCisKK1N5c3RlbSBQb3dlciBNYW5hZ2VtZW50CisKK1doZW4gdGhlIHN5c3RlbSBlbnRlcnMgYSBsb3ctcG93ZXIgc3RhdGUsIHRoZSBkZXZpY2UgdHJlZSBpcyB3YWxrZWQgaW4KK2EgZGVwdGgtZmlyc3QgZmFzaGlvbiB0byB0cmFuc2l0aW9uIGVhY2ggZGV2aWNlIGludG8gYSBsb3ctcG93ZXIKK3N0YXRlLiBUaGUgb3JkZXJpbmcgb2YgdGhlIGRldmljZSB0cmVlIGlzIGd1YXJhbnRlZWQgYnkgdGhlIG9yZGVyIGluCit3aGljaCBkZXZpY2VzIGdldCByZWdpc3RlcmVkIC0gY2hpbGRyZW4gYXJlIG5ldmVyIHJlZ2lzdGVyZWQgYmVmb3JlCit0aGVpciBhbmNlc3RvcnMsIGFuZCBkZXZpY2VzIGFyZSBwbGFjZWQgYXQgdGhlIGJhY2sgb2YgdGhlIGxpc3Qgd2hlbgorcmVnaXN0ZXJlZC4gQnkgd2Fsa2luZyB0aGUgbGlzdCBpbiByZXZlcnNlIG9yZGVyLCB3ZSBhcmUgZ3VhcmFudGVlZCB0bworc3VzcGVuZCBkZXZpY2VzIGluIHRoZSBwcm9wZXIgb3JkZXIuIAorCitEZXZpY2VzIGFyZSBzdXNwZW5kZWQgb25jZSB3aXRoIGludGVycnVwdHMgZW5hYmxlZC4gRHJpdmVycyBhcmUKK2V4cGVjdGVkIHRvIHN0b3AgSS9PIHRyYW5zYWN0aW9ucywgc2F2ZSBkZXZpY2Ugc3RhdGUsIGFuZCBwbGFjZSB0aGUKK2RldmljZSBpbnRvIGEgbG93LXBvd2VyIHN0YXRlLiBEcml2ZXJzIG1heSBzbGVlcCwgYWxsb2NhdGUgbWVtb3J5LAorZXRjLiBhdCB3aWxsLiAKKworU29tZSBkZXZpY2VzIGFyZSBicm9rZW4gYW5kIHdpbGwgaW5ldml0YWJseSBoYXZlIHByb2JsZW1zIHBvd2VyaW5nCitkb3duIG9yIGRpc2FibGluZyB0aGVtc2VsdmVzIHdpdGggaW50ZXJydXB0cyBlbmFibGVkLiBGb3IgdGhlc2UKK3NwZWNpYWwgY2FzZXMsIHRoZXkgbWF5IHJldHVybiAtRUFHQUlOLiBUaGlzIHdpbGwgcHV0IHRoZSBkZXZpY2Ugb24gYQorbGlzdCB0byBiZSB0YWtlbiBjYXJlIG9mIGxhdGVyLiBXaGVuIGludGVycnVwdHMgYXJlIGRpc2FibGVkLCBiZWZvcmUKK3dlIGVudGVyIHRoZSBsb3ctcG93ZXIgc3RhdGUsIHRoZWlyIGRyaXZlcnMgYXJlIGNhbGxlZCBhZ2FpbiB0byBwdXQKK3RoZWlyIGRldmljZSB0byBzbGVlcC4gCisKK09uIHJlc3VtZSwgdGhlIGRldmljZXMgdGhhdCByZXR1cm5lZCAtRUFHQUlOIHdpbGwgYmUgY2FsbGVkIHRvIHBvd2VyCit0aGVtc2VsdmVzIGJhY2sgb24gd2l0aCBpbnRlcnJ1cHRzIGRpc2FibGVkLiBPbmNlIGludGVycnVwdHMgaGF2ZSBiZWVuCityZS1lbmFibGVkLCB0aGUgcmVzdCBvZiB0aGUgZHJpdmVycyB3aWxsIGJlIGNhbGxlZCB0byByZXN1bWUgdGhlaXIKK2RldmljZXMuIE9uIHJlc3VtZSwgYSBkcml2ZXIgaXMgcmVzcG9uc2libGUgZm9yIHBvd2VyaW5nIGJhY2sgb24gZWFjaAorZGV2aWNlLCByZXN0b3Jpbmcgc3RhdGUsIGFuZCByZS1lbmFibGluZyBJL08gdHJhbnNhY3Rpb25zIGZvciB0aGF0CitkZXZpY2UuIAorCitTeXN0ZW0gZGV2aWNlcyBmb2xsb3cgYSBzbGlnaHRseSBkaWZmZXJlbnQgQVBJLCB3aGljaCBjYW4gYmUgZm91bmQgaW4KKworCWluY2x1ZGUvbGludXgvc3lzZGV2LmgKKwlkcml2ZXJzL2Jhc2Uvc3lzLmMKKworU3lzdGVtIGRldmljZXMgd2lsbCBvbmx5IGJlIHN1c3BlbmRlZCB3aXRoIGludGVycnVwdHMgZGlzYWJsZWQsIGFuZAorYWZ0ZXIgYWxsIG90aGVyIGRldmljZXMgaGF2ZSBiZWVuIHN1c3BlbmRlZC4gT24gcmVzdW1lLCB0aGV5IHdpbGwgYmUKK3Jlc3VtZWQgYmVmb3JlIGFueSBvdGhlciBkZXZpY2VzLCBhbmQgYWxzbyB3aXRoIGludGVycnVwdHMgZGlzYWJsZWQuCisKKworUnVudGltZSBQb3dlciBNYW5hZ2VtZW50CisKK01hbnkgZGV2aWNlcyBhcmUgYWJsZSB0byBkeW5hbWljYWxseSBwb3dlciBkb3duIHdoaWxlIHRoZSBzeXN0ZW0gaXMKK3N0aWxsIHJ1bm5pbmcuIFRoaXMgZmVhdHVyZSBpcyB1c2VmdWwgZm9yIGRldmljZXMgdGhhdCBhcmUgbm90IGJlaW5nCit1c2VkLCBhbmQgY2FuIG9mZmVyIHNpZ25pZmljYW50IHBvd2VyIHNhdmluZ3Mgb24gYSBydW5uaW5nIHN5c3RlbS4gCisKK0luIGVhY2ggZGV2aWNlJ3MgZGlyZWN0b3J5LCB0aGVyZSBpcyBhICdwb3dlcicgZGlyZWN0b3J5LCB3aGljaAorY29udGFpbnMgYXQgbGVhc3QgYSAnc3RhdGUnIGZpbGUuIFJlYWRpbmcgZnJvbSB0aGlzIGZpbGUgZGlzcGxheXMgd2hhdAorcG93ZXIgc3RhdGUgdGhlIGRldmljZSBpcyBjdXJyZW50bHkgaW4uIFdyaXRpbmcgdG8gdGhpcyBmaWxlIGluaXRpYXRlcworYSB0cmFuc2l0aW9uIHRvIHRoZSBzcGVjaWZpZWQgcG93ZXIgc3RhdGUsIHdoaWNoIG11c3QgYmUgYSBkZWNpbWFsIGluCit0aGUgcmFuZ2UgMS0zLCBpbmNsdXNpdmU7IG9yIDAgZm9yICdPbicuCisKK1RoZSBQTSBjb3JlIHdpbGwgY2FsbCB0aGUgLT5zdXNwZW5kKCkgbWV0aG9kIGluIHRoZSBidXNfdHlwZSBvYmplY3QKK3RoYXQgdGhlIGRldmljZSBiZWxvbmdzIHRvIGlmIHRoZSBzcGVjaWZpZWQgc3RhdGUgaXMgbm90IDAsIG9yCistPnJlc3VtZSgpIGlmIGl0IGlzLiAKKworTm90aGluZyB3aWxsIGhhcHBlbiBpZiB0aGUgc3BlY2lmaWVkIHN0YXRlIGlzIHRoZSBzYW1lIHN0YXRlIHRoZQorZGV2aWNlIGlzIGN1cnJlbnRseSBpbi4gCisKK0lmIHRoZSBkZXZpY2UgaXMgYWxyZWFkeSBpbiBhIGxvdy1wb3dlciBzdGF0ZSwgYW5kIHRoZSBzcGVjaWZpZWQgc3RhdGUKK2lzIGFub3RoZXIsIGJ1dCBkaWZmZXJlbnQsIGxvdy1wb3dlciBzdGF0ZSwgdGhlIC0+cmVzdW1lKCkgbWV0aG9kIHdpbGwKK2ZpcnN0IGJlIGNhbGxlZCB0byBwb3dlciB0aGUgZGV2aWNlIGJhY2sgb24sIHRoZW4gLT5zdXNwZW5kKCkgd2lsbCBiZQorY2FsbGVkIGFnYWluIHdpdGggdGhlIG5ldyBzdGF0ZS4gCisKK1RoZSBkcml2ZXIgaXMgcmVzcG9uc2libGUgZm9yIHNhdmluZyB0aGUgd29ya2luZyBzdGF0ZSBvZiB0aGUgZGV2aWNlCithbmQgcHV0dGluZyBpdCBpbnRvIHRoZSBsb3ctcG93ZXIgc3RhdGUgc3BlY2lmaWVkLiBJZiB0aGlzIHdhcworc3VjY2Vzc2Z1bCwgaXQgcmV0dXJucyAwLCBhbmQgdGhlIGRldmljZSdzIHBvd2VyX3N0YXRlIGZpZWxkIGlzCit1cGRhdGVkLiAKKworVGhlIGRyaXZlciBtdXN0IHRha2UgY2FyZSB0byBrbm93IHdoZXRoZXIgb3Igbm90IGl0IGlzIGFibGUgdG8KK3Byb3Blcmx5IHJlc3VtZSB0aGUgZGV2aWNlLCBpbmNsdWRpbmcgYWxsIHN0ZXAgb2YgcmVpbml0aWFsaXphdGlvbgorbmVjZXNzYXJ5LiAoVGhpcyBpcyB0aGUgaGFyZGVzdCBwYXJ0LCBhbmQgdGhlIG9uZSBtb3N0IHByb3RlY3RlZCBieQorTkRBJ2QgZG9jdW1lbnRzKS4gCisKK1RoZSBkcml2ZXIgbXVzdCBhbHNvIHRha2UgY2FyZSBub3QgdG8gc3VzcGVuZCBhIGRldmljZSB0aGF0IGlzCitjdXJyZW50bHkgaW4gdXNlLiBJdCBpcyB0aGVpciByZXNwb25zaWJpbGl0eSB0byBwcm92aWRlIHRoZWlyIG93bgorZXhjbHVzaW9uIG1lY2hhbmlzbXMuCisKK1RoZSBydW50aW1lIHBvd2VyIHRyYW5zaXRpb24gaGFwcGVucyB3aXRoIGludGVycnVwdHMgZW5hYmxlZC4gSWYgYQorZGV2aWNlIGNhbm5vdCBzdXBwb3J0IGJlaW5nIHBvd2VyZWQgZG93biB3aXRoIGludGVycnVwdHMsIGl0IG1heQorcmV0dXJuIC1FQUdBSU4gKGFzIGl0IHdvdWxkIGR1cmluZyBhIHN5c3RlbSBwb3dlciBtYW5hZ2VtZW50Cit0cmFuc2l0aW9uKSwgIGJ1dCBpdCB3aWxsIF9ub3RfIGJlIGNhbGxlZCBhZ2FpbiwgYW5kIHRoZSB0cmFuc2FjdGlvbgord2lsbCBmYWlsLgorCitUaGVyZSBpcyBjdXJyZW50bHkgbm8gd2F5IHRvIGtub3cgd2hhdCBzdGF0ZXMgYSBkZXZpY2Ugb3IgZHJpdmVyCitzdXBwb3J0cyBhIHByaW9yaS4gVGhpcyB3aWxsIGNoYW5nZSBpbiB0aGUgZnV0dXJlLiAKKworcG1fbWVzc2FnZV90IG1lYW5pbmcKKworcG1fbWVzc2FnZV90IGhhcyB0d28gZmllbGRzLiBldmVudCAoIm1ham9yIiksIGFuZCBmbGFncy4gIElmIGRyaXZlcgorZG9lcyBub3Qga25vdyBldmVudCBjb2RlLCBpdCBhYm9ydHMgdGhlIHJlcXVlc3QsIHJldHVybmluZyBlcnJvci4gU29tZQorZHJpdmVycyBtYXkgbmVlZCB0byBkZWFsIHdpdGggc3BlY2lhbCBjYXNlcyBiYXNlZCBvbiB0aGUgYWN0dWFsIHR5cGUKK29mIHN1c3BlbmQgb3BlcmF0aW9uIGJlaW5nIGRvbmUgYXQgdGhlIHN5c3RlbSBsZXZlbC4gVGhpcyBpcyB3aHkKK3RoZXJlIGFyZSBmbGFncy4KKworRXZlbnQgY29kZXMgYXJlOgorCitPTiAtLSBubyBuZWVkIHRvIGRvIGFueXRoaW5nIGV4Y2VwdCBzcGVjaWFsIGNhc2VzIGxpa2UgYnJva2VuCitIVy4KKworIyBOT1RJRklDQVRJT04gLS0gcHJldHR5IG11Y2ggc2FtZSBhcyBPTj8KKworRlJFRVpFIC0tIHN0b3AgRE1BIGFuZCBpbnRlcnJ1cHRzLCBhbmQgYmUgcHJlcGFyZWQgdG8gcmVpbml0IEhXIGZyb20KK3NjcmF0Y2guIFRoYXQgcHJvYmFibHkgbWVhbnMgc3RvcCBhY2NlcHRpbmcgdXBzdHJlYW0gcmVxdWVzdHMsIHRoZQorYWN0dWFsIHBvbGljeSBvZiB3aGF0IHRvIGRvIHdpdGggdGhlbSBiZWVpbmcgc3BlY2lmaWMgdG8gYSBnaXZlbgorZHJpdmVyLiBJdCdzIGFjY2VwdGFibGUgZm9yIGEgbmV0d29yayBkcml2ZXIgdG8ganVzdCBkcm9wIHBhY2tldHMKK3doaWxlIGEgYmxvY2sgZHJpdmVyIGlzIGV4cGVjdGVkIHRvIGJsb2NrIHRoZSBxdWV1ZSBzbyBubyByZXF1ZXN0IGlzCitsb3N0LiAoVXNlIElERSBhcyBhbiBleGFtcGxlIG9uIGhvdyB0byBkbyB0aGF0KS4gRlJFRVpFIHJlcXVpcmVzIG5vCitwb3dlciBzdGF0ZSBjaGFuZ2UsIGFuZCBpdCdzIGV4cGVjdGVkIGZvciBkcml2ZXJzIHRvIGJlIGFibGUgdG8KK3F1aWNrbHkgdHJhbnNpdGlvbiBiYWNrIHRvIG9wZXJhdGluZyBzdGF0ZS4KKworU1VTUEVORCAtLSBsaWtlIEZSRUVaRSwgYnV0IGFsc28gcHV0IGhhcmR3YXJlIGludG8gbG93LXBvd2VyIHN0YXRlLiBJZgordGhlcmUncyBuZWVkIHRvIGRpc3Rpbmd1aXNoIHNldmVyYWwgbGV2ZWxzIG9mIHNsZWVwLCBhZGRpdGlvbmFsIGZsYWcKK2lzIHByb2JhYmx5IGJlc3Qgd2F5IHRvIGRvIHRoYXQuCisKK1RyYW5zaXRpb25zIGFyZSBvbmx5IGZyb20gYSByZXN1bWVkIHN0YXRlIHRvIGEgc3VzcGVuZGVkIHN0YXRlLCBuZXZlcgorYmV0d2VlbiAyIHN1c3BlbmRlZCBzdGF0ZXMuIChPTiAtPiBGUkVFWkUgb3IgT04gLT4gU1VTUEVORCBjYW4gaGFwcGVuLAorRlJFRVpFIC0+IFNVU1BFTkQgb3IgU1VTUEVORCAtPiBGUkVFWkUgY2FuIG5vdCkuCisKK0FsbCBldmVudHMgYXJlOgorCitbTk9URSBOT1RFIE5PVEU6IElmIHlvdSBhcmUgZHJpdmVyIGF1dGhvciwgeW91IHNob3VsZCBub3QgY2FyZTsgeW91CitzaG91bGQgb25seSBsb29rIGF0IGV2ZW50LCBhbmQgaWdub3JlIGZsYWdzLl0KKworI1ByZXBhcmUgZm9yIHN1c3BlbmQgLS0gdXNlcmxhbmQgaXMgc3RpbGwgcnVubmluZyBidXQgd2UgYXJlIGdvaW5nIHRvCisjZW50ZXIgc3VzcGVuZCBzdGF0ZS4gVGhpcyBnaXZlcyBkcml2ZXJzIGNoYW5jZSB0byBsb2FkIGZpcm13YXJlIGZyb20KKyNkaXNrIGFuZCBzdG9yZSBpdCBpbiBtZW1vcnksIG9yIGRvIG90aGVyIGFjdGl2aXRpZXMgdGFodCByZXF1aXJlCisjb3BlcmF0aW5nIHVzZXJsYW5kLCBhYmlsaXR5IHRvIGttYWxsb2MgR0ZQX0tFUk5FTCwgZXRjLi4uIEFsbCBvZiB0aGVzZQorI2FyZSBmb3JiaWRlbiBvbmNlIHRoZSBzdXNwZW5kIGRhbmNlIGlzIHN0YXJ0ZWQuLiBldmVudCA9IE9OLCBmbGFncyA9CisjUFJFUEFSRV9UT19TVVNQRU5ECisKK0FwbSBzdGFuZGJ5IC0tIHByZXBhcmUgZm9yIEFQTSBldmVudC4gUXVpZXNjZSBkZXZpY2VzIHRvIG1ha2UgbGlmZQorZWFzaWVyIGZvciBBUE0gQklPUy4gZXZlbnQgPSBGUkVFWkUsIGZsYWdzID0gQVBNX1NUQU5EQlkKKworQXBtIHN1c3BlbmQgLS0gc2FtZSBhcyBBUE1fU1RBTkRCWSwgYnV0IGl0IHdlIHNob3VsZCBwcm9iYWJseSBhdm9pZAorc3Bpbm5pbmcgZG93biBkaXNrcy4gZXZlbnQgPSBGUkVFWkUsIGZsYWdzID0gQVBNX1NVU1BFTkQKKworU3lzdGVtIGhhbHQsIHJlYm9vdCAtLSBxdWllc2NlIGRldmljZXMgdG8gbWFrZSBsaWZlIGVhc2llciBmb3IgQklPUy4gZXZlbnQKKz0gRlJFRVpFLCBmbGFncyA9IFNZU1RFTV9IQUxUIG9yIFNZU1RFTV9SRUJPT1QKKworU3lzdGVtIHNodXRkb3duIC0tIGF0IGxlYXN0IGRpc2tzIG5lZWQgdG8gYmUgc3B1biBkb3duLCBvciBkYXRhIG1heSBiZQorbG9zdC4gUXVpZXNjZSBkZXZpY2VzLCBqdXN0IHRvIG1ha2UgbGlmZSBlYXNpZXIgZm9yIEJJT1MuIGV2ZW50ID0KK0ZSRUVaRSwgZmxhZ3MgPSBTWVNURU1fU0hVVERPV04KKworS2V4ZWMgICAgLS0gdHVybiBvZmYgRE1BcyBhbmQgcHV0IGhhcmR3YXJlIGludG8gc29tZSBzdGF0ZSB3aGVyZSBuZXcKK2tlcm5lbCBjYW4gdGFrZSBvdmVyLiBldmVudCA9IEZSRUVaRSwgZmxhZ3MgPSBLRVhFQworCitQb3dlcmRvd24gYXQgZW5kIG9mIHN3c3VzcCAtLSB2ZXJ5IHNpbWlsYXIgdG8gU1lTVEVNX1NIVVRET1dOLCBleGNlcHQgd2FrZQorbWF5IG5lZWQgdG8gYmUgZW5hYmxlZCBvbiBzb21lIGRldmljZXMuIFRoaXMgYWN0dWFsbHkgaGFzIGF0IGxlYXN0IDMKK3N1YnR5cGVzLCBzeXN0ZW0gY2FuIHJlYm9vdCwgZW50ZXIgUzQgYW5kIGVudGVyIFM1IGF0IHRoZSBlbmQgb2YKK3N3c3VzcC4gZXZlbnQgPSBGUkVFWkUsIGZsYWdzID0gU1dTVVNQIGFuZCBvbmUgb2YgU1lTVEVNX1JFQk9PVCwKK1NZU1RFTV9TSFVURE9XTiwgU1lTVEVNX1M0CisKK1N1c3BlbmQgdG8gcmFtICAtLSBwdXQgZGV2aWNlcyBpbnRvIGxvdyBwb3dlciBzdGF0ZS4gZXZlbnQgPSBTVVNQRU5ELAorZmxhZ3MgPSBTVVNQRU5EX1RPX1JBTQorCitGcmVlemUgZm9yIHN3c3VzcCBzbmFwc2hvdCAtLSBzdG9wIERNQSBhbmQgaW50ZXJydXB0cy4gTm8gbmVlZCB0byBwdXQKK2RldmljZXMgaW50byBsb3cgcG93ZXIgbW9kZSwgYnV0IHlvdSBtdXN0IGJlIGFibGUgdG8gcmVpbml0aWFsaXplCitkZXZpY2UgZnJvbSBzY3JhdGNoIGluIHJlc3VtZSBtZXRob2QuIFRoaXMgaGFzIHR3byBmbGF2b3JzLCBpdHMgZG9uZQorb25jZSBvbiBzdXNwZW5kaW5nIGtlcm5lbCwgb25jZSBvbiByZXN1bWluZyBrZXJuZWwuIGV2ZW50ID0gRlJFRVpFLAorZmxhZ3MgPSBEVVJJTkdfU1VTUEVORCBvciBEVVJJTkdfUkVTVU1FCisKK0RldmljZSBkZXRhY2ggcmVxdWVzdGVkIGZyb20gL3N5cyAtLSBkZWluaXRpYWxpemUgZGV2aWNlOyBwcm9hYmx5IHNhbWUgYXMKK1NZU1RFTV9TSFVURE9XTiwgSSBkbyBub3QgdW5kZXJzdGFuZCB0aGlzIG9uZSB0b28gbXVjaC4gcHJvYmFibHkgZXZlbnQKKz0gRlJFRVpFLCBmbGFncyA9IERFVl9ERVRBQ0guCisKKyNUaGVzZSBhcmUgbm90IHJlYWxseSBldmVudHMgc2VudDoKKyMKKyNTeXN0ZW0gZnVsbHkgb24gLS0gZGV2aWNlIGlzIHdvcmtpbmcgbm9ybWFsbHk7IHRoaXMgaXMgcHJvYmFibHkgbmV2ZXIKKyNwYXNzZWQgdG8gc3VzcGVuZCgpIG1ldGhvZC4uLiBldmVudCA9IE9OLCBmbGFncyA9IDAKKyMKKyNSZWFkeSBhZnRlciByZXN1bWUgLS0gdXNlcmxhbmQgaXMgbm93IHJ1bm5pbmcsIGFnYWluLiBUaW1lIHRvIGZyZWUgYW55CisjbWVtb3J5IHlvdSBhdGUgZHVyaW5nIHByZXBhcmUgdG8gc3VzcGVuZC4uLiBldmVudCA9IE9OLCBmbGFncyA9CisjUkVBRFlfQUZURVJfUkVTVU1FCisjCisKK0RyaXZlciBEZXRhY2ggUG93ZXIgTWFuYWdlbWVudAorCitUaGUga2VybmVsIG5vdyBzdXBwb3J0cyB0aGUgYWJpbGl0eSB0byBwbGFjZSBhIGRldmljZSBpbiBhIGxvdy1wb3dlcgorc3RhdGUgd2hlbiBpdCBpcyBkZXRhY2hlZCBmcm9tIGl0cyBkcml2ZXIsIHdoaWNoIGhhcHBlbnMgd2hlbiBpdHMKK21vZHVsZSBpcyByZW1vdmVkLiAKKworRWFjaCBkZXZpY2UgY29udGFpbnMgYSAnZGV0YWNoX3N0YXRlJyBmaWxlIGluIGl0cyBzeXNmcyBkaXJlY3RvcnkKK3doaWNoIGNhbiBiZSB1c2VkIHRvIGNvbnRyb2wgdGhpcyBzdGF0ZS4gUmVhZGluZyBmcm9tIHRoaXMgZmlsZQorZGlzcGxheXMgd2hhdCB0aGUgY3VycmVudCBkZXRhY2ggc3RhdGUgaXMgc2V0IHRvLiBUaGlzIGlzIDAgKE9uKSBieQorZGVmYXVsdC4gQSB1c2VyIG1heSB3cml0ZSBhIHBvc2l0aXZlIGludGVnZXIgdmFsdWUgdG8gdGhpcyBmaWxlIGluIHRoZQorcmFuZ2Ugb2YgMS00IGluY2x1c2l2ZS4gCisKK0EgdmFsdWUgb2YgMS0zIHdpbGwgaW5kaWNhdGUgdGhlIGRldmljZSBzaG91bGQgYmUgcGxhY2VkIGluIHRoYXQKK2xvdy1wb3dlciBzdGF0ZSwgd2hpY2ggd2lsbCBjYXVzZSAtPnN1c3BlbmQoKSB0byBiZSBjYWxsZWQgZm9yIHRoYXQKK2RldmljZS4gQSB2YWx1ZSBvZiA0IGluZGljYXRlcyB0aGF0IHRoZSBkZXZpY2Ugc2hvdWxkIGJlIHNodXRkb3duLCBzbworLT5zaHV0ZG93bigpIHdpbGwgYmUgY2FsbGVkIGZvciB0aGF0IGRldmljZS4gCisKK1RoZSBkcml2ZXIgaXMgcmVzcG9uc2libGUgZm9yIHJlaW5pdGlhbGl6aW5nIHRoZSBkZXZpY2Ugd2hlbiB0aGUKK21vZHVsZSBpcyByZS1pbnNlcnRlZCBkdXJpbmcgaXQncyAtPnByb2JlKCkgKG9yIGVxdWl2YWxlbnQpIG1ldGhvZC4gCitUaGUgZHJpdmVyIGNvcmUgd2lsbCBub3QgY2FsbCBhbnkgZXh0cmEgZnVuY3Rpb25zIHdoZW4gYmluZGluZyB0aGUKK2RldmljZSB0byB0aGUgZHJpdmVyLiAKKworcG1fbWVzc2FnZV90IG1lYW5pbmcKKworcG1fbWVzc2FnZV90IGhhcyB0d28gZmllbGRzLiBldmVudCAoIm1ham9yIiksIGFuZCBmbGFncy4gIElmIGRyaXZlcgorZG9lcyBub3Qga25vdyBldmVudCBjb2RlLCBpdCBhYm9ydHMgdGhlIHJlcXVlc3QsIHJldHVybmluZyBlcnJvci4gU29tZQorZHJpdmVycyBtYXkgbmVlZCB0byBkZWFsIHdpdGggc3BlY2lhbCBjYXNlcyBiYXNlZCBvbiB0aGUgYWN0dWFsIHR5cGUKK29mIHN1c3BlbmQgb3BlcmF0aW9uIGJlaW5nIGRvbmUgYXQgdGhlIHN5c3RlbSBsZXZlbC4gVGhpcyBpcyB3aHkKK3RoZXJlIGFyZSBmbGFncy4KKworRXZlbnQgY29kZXMgYXJlOgorCitPTiAtLSBubyBuZWVkIHRvIGRvIGFueXRoaW5nIGV4Y2VwdCBzcGVjaWFsIGNhc2VzIGxpa2UgYnJva2VuCitIVy4KKworIyBOT1RJRklDQVRJT04gLS0gcHJldHR5IG11Y2ggc2FtZSBhcyBPTj8KKworRlJFRVpFIC0tIHN0b3AgRE1BIGFuZCBpbnRlcnJ1cHRzLCBhbmQgYmUgcHJlcGFyZWQgdG8gcmVpbml0IEhXIGZyb20KK3NjcmF0Y2guIFRoYXQgcHJvYmFibHkgbWVhbnMgc3RvcCBhY2NlcHRpbmcgdXBzdHJlYW0gcmVxdWVzdHMsIHRoZQorYWN0dWFsIHBvbGljeSBvZiB3aGF0IHRvIGRvIHdpdGggdGhlbSBiZWluZyBzcGVjaWZpYyB0byBhIGdpdmVuCitkcml2ZXIuIEl0J3MgYWNjZXB0YWJsZSBmb3IgYSBuZXR3b3JrIGRyaXZlciB0byBqdXN0IGRyb3AgcGFja2V0cword2hpbGUgYSBibG9jayBkcml2ZXIgaXMgZXhwZWN0ZWQgdG8gYmxvY2sgdGhlIHF1ZXVlIHNvIG5vIHJlcXVlc3QgaXMKK2xvc3QuIChVc2UgSURFIGFzIGFuIGV4YW1wbGUgb24gaG93IHRvIGRvIHRoYXQpLiBGUkVFWkUgcmVxdWlyZXMgbm8KK3Bvd2VyIHN0YXRlIGNoYW5nZSwgYW5kIGl0J3MgZXhwZWN0ZWQgZm9yIGRyaXZlcnMgdG8gYmUgYWJsZSB0bworcXVpY2tseSB0cmFuc2l0aW9uIGJhY2sgdG8gb3BlcmF0aW5nIHN0YXRlLgorCitTVVNQRU5EIC0tIGxpa2UgRlJFRVpFLCBidXQgYWxzbyBwdXQgaGFyZHdhcmUgaW50byBsb3ctcG93ZXIgc3RhdGUuIElmCit0aGVyZSdzIG5lZWQgdG8gZGlzdGluZ3Vpc2ggc2V2ZXJhbCBsZXZlbHMgb2Ygc2xlZXAsIGFkZGl0aW9uYWwgZmxhZworaXMgcHJvYmFibHkgYmVzdCB3YXkgdG8gZG8gdGhhdC4KKworVHJhbnNpdGlvbnMgYXJlIG9ubHkgZnJvbSBhIHJlc3VtZWQgc3RhdGUgdG8gYSBzdXNwZW5kZWQgc3RhdGUsIG5ldmVyCitiZXR3ZWVuIDIgc3VzcGVuZGVkIHN0YXRlcy4gKE9OIC0+IEZSRUVaRSBvciBPTiAtPiBTVVNQRU5EIGNhbiBoYXBwZW4sCitGUkVFWkUgLT4gU1VTUEVORCBvciBTVVNQRU5EIC0+IEZSRUVaRSBjYW4gbm90KS4KKworQWxsIGV2ZW50cyBhcmU6CisKK1tOT1RFIE5PVEUgTk9URTogSWYgeW91IGFyZSBkcml2ZXIgYXV0aG9yLCB5b3Ugc2hvdWxkIG5vdCBjYXJlOyB5b3UKK3Nob3VsZCBvbmx5IGxvb2sgYXQgZXZlbnQsIGFuZCBpZ25vcmUgZmxhZ3MuXQorCisjUHJlcGFyZSBmb3Igc3VzcGVuZCAtLSB1c2VybGFuZCBpcyBzdGlsbCBydW5uaW5nIGJ1dCB3ZSBhcmUgZ29pbmcgdG8KKyNlbnRlciBzdXNwZW5kIHN0YXRlLiBUaGlzIGdpdmVzIGRyaXZlcnMgY2hhbmNlIHRvIGxvYWQgZmlybXdhcmUgZnJvbQorI2Rpc2sgYW5kIHN0b3JlIGl0IGluIG1lbW9yeSwgb3IgZG8gb3RoZXIgYWN0aXZpdGllcyB0YWh0IHJlcXVpcmUKKyNvcGVyYXRpbmcgdXNlcmxhbmQsIGFiaWxpdHkgdG8ga21hbGxvYyBHRlBfS0VSTkVMLCBldGMuLi4gQWxsIG9mIHRoZXNlCisjYXJlIGZvcmJpZGVuIG9uY2UgdGhlIHN1c3BlbmQgZGFuY2UgaXMgc3RhcnRlZC4uIGV2ZW50ID0gT04sIGZsYWdzID0KKyNQUkVQQVJFX1RPX1NVU1BFTkQKKworQXBtIHN0YW5kYnkgLS0gcHJlcGFyZSBmb3IgQVBNIGV2ZW50LiBRdWllc2NlIGRldmljZXMgdG8gbWFrZSBsaWZlCitlYXNpZXIgZm9yIEFQTSBCSU9TLiBldmVudCA9IEZSRUVaRSwgZmxhZ3MgPSBBUE1fU1RBTkRCWQorCitBcG0gc3VzcGVuZCAtLSBzYW1lIGFzIEFQTV9TVEFOREJZLCBidXQgaXQgd2Ugc2hvdWxkIHByb2JhYmx5IGF2b2lkCitzcGlubmluZyBkb3duIGRpc2tzLiBldmVudCA9IEZSRUVaRSwgZmxhZ3MgPSBBUE1fU1VTUEVORAorCitTeXN0ZW0gaGFsdCwgcmVib290IC0tIHF1aWVzY2UgZGV2aWNlcyB0byBtYWtlIGxpZmUgZWFzaWVyIGZvciBCSU9TLiBldmVudAorPSBGUkVFWkUsIGZsYWdzID0gU1lTVEVNX0hBTFQgb3IgU1lTVEVNX1JFQk9PVAorCitTeXN0ZW0gc2h1dGRvd24gLS0gYXQgbGVhc3QgZGlza3MgbmVlZCB0byBiZSBzcHVuIGRvd24sIG9yIGRhdGEgbWF5IGJlCitsb3N0LiBRdWllc2NlIGRldmljZXMsIGp1c3QgdG8gbWFrZSBsaWZlIGVhc2llciBmb3IgQklPUy4gZXZlbnQgPQorRlJFRVpFLCBmbGFncyA9IFNZU1RFTV9TSFVURE9XTgorCitLZXhlYyAgICAtLSB0dXJuIG9mZiBETUFzIGFuZCBwdXQgaGFyZHdhcmUgaW50byBzb21lIHN0YXRlIHdoZXJlIG5ldwora2VybmVsIGNhbiB0YWtlIG92ZXIuIGV2ZW50ID0gRlJFRVpFLCBmbGFncyA9IEtFWEVDCisKK1Bvd2VyZG93biBhdCBlbmQgb2Ygc3dzdXNwIC0tIHZlcnkgc2ltaWxhciB0byBTWVNURU1fU0hVVERPV04sIGV4Y2VwdCB3YWtlCittYXkgbmVlZCB0byBiZSBlbmFibGVkIG9uIHNvbWUgZGV2aWNlcy4gVGhpcyBhY3R1YWxseSBoYXMgYXQgbGVhc3QgMworc3VidHlwZXMsIHN5c3RlbSBjYW4gcmVib290LCBlbnRlciBTNCBhbmQgZW50ZXIgUzUgYXQgdGhlIGVuZCBvZgorc3dzdXNwLiBldmVudCA9IEZSRUVaRSwgZmxhZ3MgPSBTV1NVU1AgYW5kIG9uZSBvZiBTWVNURU1fUkVCT09ULAorU1lTVEVNX1NIVVRET1dOLCBTWVNURU1fUzQKKworU3VzcGVuZCB0byByYW0gIC0tIHB1dCBkZXZpY2VzIGludG8gbG93IHBvd2VyIHN0YXRlLiBldmVudCA9IFNVU1BFTkQsCitmbGFncyA9IFNVU1BFTkRfVE9fUkFNCisKK0ZyZWV6ZSBmb3Igc3dzdXNwIHNuYXBzaG90IC0tIHN0b3AgRE1BIGFuZCBpbnRlcnJ1cHRzLiBObyBuZWVkIHRvIHB1dAorZGV2aWNlcyBpbnRvIGxvdyBwb3dlciBtb2RlLCBidXQgeW91IG11c3QgYmUgYWJsZSB0byByZWluaXRpYWxpemUKK2RldmljZSBmcm9tIHNjcmF0Y2ggaW4gcmVzdW1lIG1ldGhvZC4gVGhpcyBoYXMgdHdvIGZsYXZvcnMsIGl0cyBkb25lCitvbmNlIG9uIHN1c3BlbmRpbmcga2VybmVsLCBvbmNlIG9uIHJlc3VtaW5nIGtlcm5lbC4gZXZlbnQgPSBGUkVFWkUsCitmbGFncyA9IERVUklOR19TVVNQRU5EIG9yIERVUklOR19SRVNVTUUKKworRGV2aWNlIGRldGFjaCByZXF1ZXN0ZWQgZnJvbSAvc3lzIC0tIGRlaW5pdGlhbGl6ZSBkZXZpY2U7IHByb2FibHkgc2FtZSBhcworU1lTVEVNX1NIVVRET1dOLCBJIGRvIG5vdCB1bmRlcnN0YW5kIHRoaXMgb25lIHRvbyBtdWNoLiBwcm9iYWJseSBldmVudAorPSBGUkVFWkUsIGZsYWdzID0gREVWX0RFVEFDSC4KKworI1RoZXNlIGFyZSBub3QgcmVhbGx5IGV2ZW50cyBzZW50OgorIworI1N5c3RlbSBmdWxseSBvbiAtLSBkZXZpY2UgaXMgd29ya2luZyBub3JtYWxseTsgdGhpcyBpcyBwcm9iYWJseSBuZXZlcgorI3Bhc3NlZCB0byBzdXNwZW5kKCkgbWV0aG9kLi4uIGV2ZW50ID0gT04sIGZsYWdzID0gMAorIworI1JlYWR5IGFmdGVyIHJlc3VtZSAtLSB1c2VybGFuZCBpcyBub3cgcnVubmluZywgYWdhaW4uIFRpbWUgdG8gZnJlZSBhbnkKKyNtZW1vcnkgeW91IGF0ZSBkdXJpbmcgcHJlcGFyZSB0byBzdXNwZW5kLi4uIGV2ZW50ID0gT04sIGZsYWdzID0KKyNSRUFEWV9BRlRFUl9SRVNVTUUKKyMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcG93ZXIvaW50ZXJmYWNlLnR4dCBiL0RvY3VtZW50YXRpb24vcG93ZXIvaW50ZXJmYWNlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNWViZGE1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9wb3dlci9pbnRlcmZhY2UudHh0CkBAIC0wLDAgKzEsNDMgQEAKK1Bvd2VyIE1hbmFnZW1lbnQgSW50ZXJmYWNlCisKKworVGhlIHBvd2VyIG1hbmFnZW1lbnQgc3Vic3lzdGVtIHByb3ZpZGVzIGEgdW5pZmllZCBzeXNmcyBpbnRlcmZhY2UgdG8gCit1c2Vyc3BhY2UsIHJlZ2FyZGxlc3Mgb2Ygd2hhdCBhcmNoaXRlY3R1cmUgb3IgcGxhdGZvcm0gb25lIGlzCitydW5uaW5nLiBUaGUgaW50ZXJmYWNlIGV4aXN0cyBpbiAvc3lzL3Bvd2VyLyBkaXJlY3RvcnkgKGFzc3VtaW5nIHN5c2ZzCitpcyBtb3VudGVkIGF0IC9zeXMpLiAKKworL3N5cy9wb3dlci9zdGF0ZSBjb250cm9scyBzeXN0ZW0gcG93ZXIgc3RhdGUuIFJlYWRpbmcgZnJvbSB0aGlzIGZpbGUKK3JldHVybnMgd2hhdCBzdGF0ZXMgYXJlIHN1cHBvcnRlZCwgd2hpY2ggaXMgaGFyZC1jb2RlZCB0byAnc3RhbmRieScKKyhQb3dlci1PbiBTdXNwZW5kKSwgJ21lbScgKFN1c3BlbmQtdG8tUkFNKSwgYW5kICdkaXNrJworKFN1c3BlbmQtdG8tRGlzaykuIAorCitXcml0aW5nIHRvIHRoaXMgZmlsZSBvbmUgb2YgdGhvc2Ugc3RyaW5ncyBjYXVzZXMgdGhlIHN5c3RlbSB0bwordHJhbnNpdGlvbiBpbnRvIHRoYXQgc3RhdGUuIFBsZWFzZSBzZWUgdGhlIGZpbGUKK0RvY3VtZW50YXRpb24vcG93ZXIvc3RhdGVzLnR4dCBmb3IgYSBkZXNjcmlwdGlvbiBvZiBlYWNoIG9mIHRob3NlCitzdGF0ZXMuCisKKworL3N5cy9wb3dlci9kaXNrIGNvbnRyb2xzIHRoZSBvcGVyYXRpbmcgbW9kZSBvZiB0aGUgc3VzcGVuZC10by1kaXNrCittZWNoYW5pc20uIFN1c3BlbmQtdG8tZGlzayBjYW4gYmUgaGFuZGxlZCBpbiBzZXZlcmFsIHdheXMuIFRoZQorZ3JlYXRlc3QgZGlzdGluY3Rpb24gaXMgd2hvIHdyaXRlcyBtZW1vcnkgdG8gZGlzayAtIHRoZSBmaXJtd2FyZSBvcgordGhlIGtlcm5lbC4gSWYgdGhlIGZpcm13YXJlIGRvZXMgaXQsIHdlIGFzc3VtZSB0aGF0IGl0IGFsc28gaGFuZGxlcworc3VzcGVuZGluZyB0aGUgc3lzdGVtLiAKKworSWYgdGhlIGtlcm5lbCBkb2VzIGl0LCB0aGVuIHdlIGhhdmUgdGhyZWUgb3B0aW9ucyBmb3IgcHV0dGluZyB0aGUgc3lzdGVtCit0byBzbGVlcCAtIHVzaW5nIHRoZSBwbGF0Zm9ybSBkcml2ZXIgKGUuZy4gQUNQSSBvciBvdGhlciBQTQorcmVnaXN0ZXJzKSwgcG93ZXJpbmcgb2ZmIHRoZSBzeXN0ZW0gb3IgcmVib290aW5nIHRoZSBzeXN0ZW0gKGZvcgordGVzdGluZykuIFRoZSBzeXN0ZW0gd2lsbCBzdXBwb3J0IGVpdGhlciAnZmlybXdhcmUnIG9yICdwbGF0Zm9ybScsIGFuZAordGhhdCBpcyBrbm93biBhIHByaW9yaS4gQnV0LCB0aGUgdXNlciBtYXkgY2hvb3NlICdzaHV0ZG93bicgb3IKKydyZWJvb3QnIGFzIGFsdGVybmF0aXZlcy4gCisKK1JlYWRpbmcgZnJvbSB0aGlzIGZpbGUgd2lsbCBkaXNwbGF5IHdoYXQgdGhlIG1vZGUgaXMgY3VycmVudGx5IHNldAordG8uIFdyaXRpbmcgdG8gdGhpcyBmaWxlIHdpbGwgYWNjZXB0IG9uZSBvZgorCisgICAgICAgJ2Zpcm13YXJlJworICAgICAgICdwbGF0Zm9ybScKKyAgICAgICAnc2h1dGRvd24nCisgICAgICAgJ3JlYm9vdCcKKworSXQgd2lsbCBvbmx5IGNoYW5nZSB0byAnZmlybXdhcmUnIG9yICdwbGF0Zm9ybScgaWYgdGhlIHN5c3RlbSBzdXBwb3J0cworaXQuIAorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Bvd2VyL2tlcm5lbF90aHJlYWRzLnR4dCBiL0RvY3VtZW50YXRpb24vcG93ZXIva2VybmVsX3RocmVhZHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwYjU0ODEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Bvd2VyL2tlcm5lbF90aHJlYWRzLnR4dApAQCAtMCwwICsxLDQxIEBACitLRVJORUwgVEhSRUFEUworCisKK0ZyZWV6ZXIKKworVXBvbiBlbnRlcmluZyBhIHN1c3BlbmRlZCBzdGF0ZSB0aGUgc3lzdGVtIHdpbGwgZnJlZXplIGFsbAordGFza3MuIFRoaXMgaXMgZG9uZSBieSBkZWxpdmVyaW5nIHBzZXVkb3NpZ25hbHMuIFRoaXMgYWZmZWN0cwora2VybmVsIHRocmVhZHMsIHRvby4gVG8gc3VjY2Vzc2Z1bGx5IGZyZWV6ZSBhIGtlcm5lbCB0aHJlYWQKK3RoZSB0aHJlYWQgaGFzIHRvIGNoZWNrIGZvciB0aGUgcHNldWRvc2lnbmFsIGFuZCBlbnRlciB0aGUKK3JlZnJpZ2VyYXRvci4gQ29kZSB0byBkbyB0aGlzIGxvb2tzIGxpa2UgdGhpczoKKworCWRvIHsKKwkJaHViX2V2ZW50cygpOworCQl3YWl0X2V2ZW50X2ludGVycnVwdGlibGUoa2h1YmRfd2FpdCwgIWxpc3RfZW1wdHkoJmh1Yl9ldmVudF9saXN0KSk7CisJCWlmIChjdXJyZW50LT5mbGFncyAmIFBGX0ZSRUVaRSkKKwkJCXJlZnJpZ2VyYXRvcihQRl9GUkVFWkUpOworCX0gd2hpbGUgKCFzaWduYWxfcGVuZGluZyhjdXJyZW50KSk7CisKK2Zyb20gZHJpdmVycy91c2IvY29yZS9odWIuYzo6aHViX3RocmVhZCgpCisKKworVGhlIFVuZnJlZXphYmxlCisKK1NvbWUga2VybmVsIHRocmVhZHMgaG93ZXZlciwgbXVzdCBub3QgYmUgZnJvemVuLiBUaGUga2VybmVsIG11c3QKK2JlIGFibGUgdG8gZmluaXNoIHBlbmRpbmcgSU8gb3BlcmF0aW9ucyBhbmQgbGF0ZXIgb24gYmUgYWJsZSB0bword3JpdGUgdGhlIG1lbW9yeSBpbWFnZSB0byBkaXNrLiBLZXJuZWwgdGhyZWFkcyBuZWVkZWQgdG8gZG8gSU8KK211c3Qgc3RheSBhd2FrZS4gU3VjaCB0aHJlYWRzIG11c3QgbWFyayB0aGVtc2VsdmVzIHVuZnJlZXphYmxlCitsaWtlIHRoaXM6CisKKwkvKgorCSAqIFRoaXMgdGhyZWFkIGRvZXNuJ3QgbmVlZCBhbnkgdXNlci1sZXZlbCBhY2Nlc3MsCisJICogc28gZ2V0IHJpZCBvZiBhbGwgb3VyIHJlc291cmNlcy4KKwkgKi8KKwlkYWVtb25pemUoInVzYi1zdG9yYWdlIik7CisKKwljdXJyZW50LT5mbGFncyB8PSBQRl9OT0ZSRUVaRTsKKworZnJvbSBkcml2ZXJzL3VzYi9zdG9yYWdlL3VzYi5jOjp1c2Jfc3Rvcl9jb250cm9sX3RocmVhZCgpCisKK1N1Y2ggZHJpdmVycyBhcmUgdGhlbXNlbHZlcyByZXNwb25zaWJsZSBmb3Igc3RheWluZyBxdWlldCBkdXJpbmcKK3RoZSBhY3R1YWwgc25hcHNob3R0aW5nLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wb3dlci9wY2kudHh0IGIvRG9jdW1lbnRhdGlvbi9wb3dlci9wY2kudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4NTQyOGUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Bvd2VyL3BjaS50eHQKQEAgLTAsMCArMSwzMzIgQEAKKworUENJIFBvd2VyIE1hbmFnZW1lbnQKK35+fn5+fn5+fn5+fn5+fn5+fn5+CisKK0FuIG92ZXJ2aWV3IG9mIHRoZSBjb25jZXB0cyBhbmQgdGhlIHJlbGF0ZWQgZnVuY3Rpb25zIGluIHRoZSBMaW51eCBrZXJuZWwKKworUGF0cmljayBNb2NoZWwgPG1vY2hlbEB0cmFuc21ldGEuY29tPgorKGFuZCBvdGhlcnMpCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisxLiBPdmVydmlldworMi4gSG93IHRoZSBQQ0kgU3Vic3lzdGVtIERvZXMgUG93ZXIgTWFuYWdlbWVudAorMy4gUENJIFV0aWxpdHkgRnVuY3Rpb25zCis0LiBQQ0kgRGV2aWNlIERyaXZlcnMKKzUuIFJlc291cmNlcworCisxLiBPdmVydmlldworfn5+fn5+fn5+fn4KKworVGhlIFBDSSBQb3dlciBNYW5hZ2VtZW50IFNwZWNpZmljYXRpb24gd2FzIGludHJvZHVjZWQgYmV0d2VlbiB0aGUgUENJIDIuMSBhbmQKK1BDSSAyLjIgU3BlY2lmaWNhdGlvbnMuIEl0IGEgc3RhbmRhcmQgaW50ZXJmYWNlIGZvciBjb250cm9sbGluZyB2YXJpb3VzIAorcG93ZXIgbWFuYWdlbWVudCBvcGVyYXRpb25zLgorCitJbXBsZW1lbnRhdGlvbiBvZiB0aGUgUENJIFBNIFNwZWMgaXMgb3B0aW9uYWwsIGFzIGFyZSBzZXZlcmFsIHN1Yi1jb21wb25lbnRzIG9mCitpdC4gSWYgYSBkZXZpY2Ugc3VwcG9ydHMgdGhlIFBDSSBQTSBTcGVjLCB0aGUgZGV2aWNlIHdpbGwgaGF2ZSBhbiA4IGJ5dGUKK2NhcGFiaWxpdHkgZmllbGQgaW4gaXRzIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlLiBUaGlzIGZpZWxkIGlzIHVzZWQgdG8gZGVzY3JpYmUKK2FuZCBjb250cm9sIHRoZSBzdGFuZGFyZCBQQ0kgcG93ZXIgbWFuYWdlbWVudCBmZWF0dXJlcy4KKworVGhlIFBDSSBQTSBzcGVjIGRlZmluZXMgNCBvcGVyYXRpbmcgc3RhdGVzIGZvciBkZXZpY2VzIChEMCAtIEQzKSBhbmQgZm9yIGJ1c2VzCisoQjAgLSBCMykuIFRoZSBoaWdoZXIgdGhlIG51bWJlciwgdGhlIGxlc3MgcG93ZXIgdGhlIGRldmljZSBjb25zdW1lcy4gSG93ZXZlciwKK3RoZSBoaWdoZXIgdGhlIG51bWJlciwgdGhlIGxvbmdlciB0aGUgbGF0ZW5jeSBpcyBmb3IgdGhlIGRldmljZSB0byByZXR1cm4gdG8gCithbiBvcGVyYXRpb25hbCBzdGF0ZSAoRDApLgorCitUaGVyZSBhcmUgYWN0dWFsbHkgdHdvIEQzIHN0YXRlcy4gIFdoZW4gc29tZW9uZSB0YWxrcyBhYm91dCBEMywgdGhleSB1c3VhbGx5CittZWFuIEQzaG90LCB3aGljaCBjb3JyZXNwb25kcyB0byBhbiBBQ1BJIEQyIHN0YXRlIChwb3dlciBpcyByZWR1Y2VkLCB0aGUKK2RldmljZSBtYXkgbG9zZSBzb21lIGNvbnRleHQpLiAgQnV0IHRoZXkgbWF5IGFsc28gbWVhbiBEM2NvbGQsIHdoaWNoIGlzIGFuCitBQ1BJIEQzIHN0YXRlIChwb3dlciBpcyBmdWxseSBvZmYsIGFsbCBzdGF0ZSB3YXMgZGlzY2FyZGVkKTsgb3IgYm90aC4KKworQnVzIHBvd2VyIG1hbmFnZW1lbnQgaXMgbm90IGNvdmVyZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIHRoaXMgZG9jdW1lbnQuCisKK05vdGUgdGhhdCBhbGwgUENJIGRldmljZXMgc3VwcG9ydCBEMCBhbmQgRDNjb2xkIGJ5IGRlZmF1bHQsIHJlZ2FyZGxlc3Mgb2YKK3doZXRoZXIgb3Igbm90IHRoZXkgaW1wbGVtZW50IGFueSBvZiB0aGUgUENJIFBNIHNwZWMuCisKK1RoZSBwb3NzaWJsZSBzdGF0ZSB0cmFuc2l0aW9ucyB0aGF0IGEgZGV2aWNlIGNhbiB1bmRlcmdvIGFyZToKKworKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgQ3VycmVudCBTdGF0ZSB8IE5ldyBTdGF0ZSB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBEMCAgICAgICAgICAgIHwgRDEsIEQyLCBEM3wKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IEQxICAgICAgICAgICAgfCBEMiwgRDMgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgRDIgICAgICAgICAgICB8IEQzICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBEMSwgRDIsIEQzICAgIHwgRDAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisKK05vdGUgdGhhdCB3aGVuIHRoZSBzeXN0ZW0gaXMgZW50ZXJpbmcgYSBnbG9iYWwgc3VzcGVuZCBzdGF0ZSwgYWxsIGRldmljZXMgd2lsbAorYmUgcGxhY2VkIGludG8gRDMgYW5kIHdoZW4gcmVzdW1pbmcsIGFsbCBkZXZpY2VzIHdpbGwgYmUgcGxhY2VkIGludG8gRDAuCitIb3dldmVyLCB3aGVuIHRoZSBzeXN0ZW0gaXMgcnVubmluZywgb3RoZXIgc3RhdGUgdHJhbnNpdGlvbnMgYXJlIHBvc3NpYmxlLgorCisyLiBIb3cgVGhlIFBDSSBTdWJzeXN0ZW0gSGFuZGxlcyBQb3dlciBNYW5hZ2VtZW50Cit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1RoZSBQQ0kgc3VzcGVuZC9yZXN1bWUgZnVuY3Rpb25hbGl0eSBpcyBhY2Nlc3NlZCBpbmRpcmVjdGx5IHZpYSB0aGUgUG93ZXIKK01hbmFnZW1lbnQgc3Vic3lzdGVtLiBBdCBib290LCB0aGUgUENJIGRyaXZlciByZWdpc3RlcnMgYSBwb3dlciBtYW5hZ2VtZW50CitjYWxsYmFjayB3aXRoIHRoYXQgbGF5ZXIuIFVwb24gZW50ZXJpbmcgYSBzdXNwZW5kIHN0YXRlLCB0aGUgUE0gbGF5ZXIgaXRlcmF0ZXMKK3Rocm91Z2ggYWxsIG9mIGl0cyByZWdpc3RlcmVkIGNhbGxiYWNrcy4gVGhpcyBjdXJyZW50bHkgdGFrZXMgcGxhY2Ugb25seSBkdXJpbmcKK0FQTSBzdGF0ZSB0cmFuc2l0aW9ucy4KKworVXBvbiBnb2luZyB0byBzbGVlcCwgdGhlIFBDSSBzdWJzeXN0ZW0gd2Fsa3MgaXRzIGRldmljZSB0cmVlIHR3aWNlLiBCb3RoIHRpbWVzLAoraXQgZG9lcyBhIGRlcHRoIGZpcnN0IHdhbGsgb2YgdGhlIGRldmljZSB0cmVlLiBUaGUgZmlyc3Qgd2FsayBzYXZlcyBlYWNoIG9mIHRoZQorZGV2aWNlJ3Mgc3RhdGUgYW5kIGNoZWNrcyBmb3IgZGV2aWNlcyB0aGF0IHdpbGwgcHJldmVudCB0aGUgc3lzdGVtIGZyb20gZW50ZXJpbmcKK2EgZ2xvYmFsIHBvd2VyIHN0YXRlLiBUaGUgbmV4dCB3YWxrIHRoZW4gcGxhY2VzIHRoZSBkZXZpY2VzIGluIGEgbG93IHBvd2VyCitzdGF0ZS4KKworVGhlIGZpcnN0IHdhbGsgYWxsb3dzIGEgZ3JhY2VmdWwgcmVjb3ZlcnkgaW4gdGhlIGV2ZW50IG9mIGEgZmFpbHVyZSwgc2luY2Ugbm9uZQorb2YgdGhlIGRldmljZXMgaGF2ZSBhY3R1YWxseSBiZWVuIHBvd2VyZWQgZG93bi4KKworSW4gYm90aCB3YWxrcywgaW4gcGFydGljdWxhciB0aGUgc2Vjb25kLCBhbGwgY2hpbGRyZW4gb2YgYSBicmlkZ2UgYXJlIHRvdWNoZWQKK2JlZm9yZSB0aGUgYWN0dWFsIGJyaWRnZSBpdHNlbGYuIFRoaXMgYWxsb3dzIHRoZSBicmlkZ2UgdG8gcmV0YWluIHBvd2VyIHdoaWxlCitpdHMgY2hpbGRyZW4gYXJlIGJlaW5nIGFjY2Vzc2VkLgorCitVcG9uIHJlc3VtaW5nIGZyb20gc2xlZXAsIGp1c3QgdGhlIG9wcG9zaXRlIG11c3QgYmUgdHJ1ZTogYWxsIGJyaWRnZXMgbXVzdCBiZQorcG93ZXJlZCBvbiBhbmQgcmVzdG9yZWQgYmVmb3JlIHRoZWlyIGNoaWxkcmVuIGFyZSBwb3dlcmVkIG9uLiBUaGlzIGlzIGVhc2lseQorYWNjb21wbGlzaGVkIHdpdGggYSBicmVhZHRoLWZpcnN0IHdhbGsgb2YgdGhlIFBDSSBkZXZpY2UgdHJlZS4KKworCiszLiBQQ0kgVXRpbGl0eSBGdW5jdGlvbnMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitUaGVzZSBhcmUgaGVscGVyIGZ1bmN0aW9ucyBkZXNpZ25lZCB0byBiZSBjYWxsZWQgYnkgaW5kaXZpZHVhbCBkZXZpY2UgZHJpdmVycy4KK0Fzc3VtaW5nIHRoYXQgYSBkZXZpY2UgYmVoYXZlcyBhcyBhZHZlcnRpc2VkLCB0aGVzZSBzaG91bGQgYmUgYXBwbGljYWJsZSBpbiBtb3N0CitjYXNlcy4gSG93ZXZlciwgcmVzdWx0cyBtYXkgdmFyeS4KKworTm90ZSB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBhcmUgbmV2ZXIgaW1wbGljaXRseSBjYWxsZWQgZm9yIHRoZSBkcml2ZXIuIFRoZSBkcml2ZXIKK2lzIGFsd2F5cyByZXNwb25zaWJsZSBmb3IgZGVjaWRpbmcgd2hlbiBhbmQgaWYgdG8gY2FsbCB0aGVzZS4KKworCitwY2lfc2F2ZV9zdGF0ZQorLS0tLS0tLS0tLS0tLS0KKworVXNhZ2U6CisJcGNpX3NhdmVfc3RhdGUoZGV2LCBidWZmZXIpOworCitEZXNjcmlwdGlvbjoKKwlTYXZlIGZpcnN0IDY0IGJ5dGVzIG9mIFBDSSBjb25maWcgc3BhY2UuIEJ1ZmZlciBtdXN0IGJlIGFsbG9jYXRlZCBieQorCWNhbGxlci4KKworCitwY2lfcmVzdG9yZV9zdGF0ZQorLS0tLS0tLS0tLS0tLS0tLS0KKworVXNhZ2U6CisJcGNpX3Jlc3RvcmVfc3RhdGUoZGV2LCBidWZmZXIpOworCitEZXNjcmlwdGlvbjoKKwlSZXN0b3JlIHByZXZpb3VzbHkgc2F2ZWQgY29uZmlnIHNwYWNlLiAoRmlyc3QgNjQgYnl0ZXMgb25seSk7CisKKwlJZiBidWZmZXIgaXMgTlVMTCwgdGhlbiByZXN0b3JlIHdoYXQgaW5mb3JtYXRpb24gd2Uga25vdyBhYm91dCB0aGUKKwlkZXZpY2UgZnJvbSBib290dXA6IEJBUnMgYW5kIGludGVycnVwdCBsaW5lLgorCisKK3BjaV9zZXRfcG93ZXJfc3RhdGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworVXNhZ2U6CisJcGNpX3NldF9wb3dlcl9zdGF0ZShkZXYsIHN0YXRlKTsKKworRGVzY3JpcHRpb246CisJVHJhbnNpdGlvbiBkZXZpY2UgdG8gbG93IHBvd2VyIHN0YXRlIHVzaW5nIFBDSSBQTSBDYXBhYmlsaXRpZXMKKwlyZWdpc3RlcnMuCisKKwlXaWxsIGZhaWwgdW5kZXIgb25lIG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKwktIElmIHN0YXRlIGlzIGxlc3MgdGhhbiBjdXJyZW50IHN0YXRlLCBidXQgbm90IEQwIChpbGxlZ2FsIHRyYW5zaXRpb24pCisJLSBEZXZpY2UgZG9lc24ndCBzdXBwb3J0IFBNIENhcGFiaWxpdGllcworCS0gRGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgcmVxdWVzdGVkIHN0YXRlCisKKworcGNpX2VuYWJsZV93YWtlCistLS0tLS0tLS0tLS0tLS0KKworVXNhZ2U6CisJcGNpX2VuYWJsZV93YWtlKGRldiwgc3RhdGUsIGVuYWJsZSk7CisKK0Rlc2NyaXB0aW9uOgorCUVuYWJsZSBkZXZpY2UgdG8gZ2VuZXJhdGUgUE1FIyBkdXJpbmcgbG93IHBvd2VyIHN0YXRlIHVzaW5nIFBDSSBQTSAKKwlDYXBhYmlsaXRpZXMuCisKKwlDaGVja3Mgd2hldGhlciBpZiBkZXZpY2Ugc3VwcG9ydHMgZ2VuZXJhdGluZyBQTUUjIGZyb20gcmVxdWVzdGVkIHN0YXRlCisJYW5kIGZhaWwgaWYgaXQgZG9lcyBub3QsIHVubGVzcyBlbmFibGUgPT0gMCAocmVxdWVzdCBpcyB0byBkaXNhYmxlIHdha2UKKwlldmVudHMsIHdoaWNoIGlzIGltcGxpY2l0IGlmIGl0IGRvZXNuJ3QgZXZlbiBzdXBwb3J0IGl0IGluIHRoZSBmaXJzdAorCXBsYWNlKS4KKworCU5vdGUgdGhhdCB0aGUgUE1DIFJlZ2lzdGVyIGluIHRoZSBkZXZpY2UncyBQTSBDYXBhYmlsdGllcyBoYXMgYSBiaXRtYXNrCisJb2YgdGhlIHN0YXRlcyBpdCBzdXBwb3J0cyBnZW5lcmF0aW5nIFBNRSMgZnJvbS4gRDNob3QgaXMgYml0IDMgYW5kCisJRDNjb2xkIGlzIGJpdCA0LiBTbywgd2hpbGUgYSB2YWx1ZSBvZiA0IGFzIHRoZSBzdGF0ZSBtYXkgbm90IHNlZW0KKwlzZW1hbnRpY2FsbHkgY29ycmVjdCwgaXQgaXMuIAorCisKKzQuIFBDSSBEZXZpY2UgRHJpdmVycworfn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1RoZXNlIGZ1bmN0aW9ucyBhcmUgaW50ZW5kZWQgZm9yIHVzZSBieSBpbmRpdmlkdWFsIGRyaXZlcnMsIGFuZCBhcmUgZGVmaW5lZCBpbiAKK3N0cnVjdCBwY2lfZHJpdmVyOgorCisgICAgICAgIGludCAgKCpzYXZlX3N0YXRlKSAoc3RydWN0IHBjaV9kZXYgKmRldiwgdTMyIHN0YXRlKTsKKyAgICAgICAgaW50ICAoKnN1c3BlbmQpIChzdHJ1Y3QgcGNpX2RldiAqZGV2LCB1MzIgc3RhdGUpOworICAgICAgICBpbnQgICgqcmVzdW1lKSAoc3RydWN0IHBjaV9kZXYgKmRldik7CisgICAgICAgIGludCAgKCplbmFibGVfd2FrZSkgKHN0cnVjdCBwY2lfZGV2ICpkZXYsIHUzMiBzdGF0ZSwgaW50IGVuYWJsZSk7CisKKworc2F2ZV9zdGF0ZQorLS0tLS0tLS0tLQorCitVc2FnZToKKworaWYgKGRldi0+ZHJpdmVyICYmIGRldi0+ZHJpdmVyLT5zYXZlX3N0YXRlKQorCWRldi0+ZHJpdmVyLT5zYXZlX3N0YXRlKGRldixzdGF0ZSk7CisKK1RoZSBkcml2ZXIgc2hvdWxkIHVzZSB0aGlzIGNhbGxiYWNrIHRvIHNhdmUgZGV2aWNlIHN0YXRlLiBJdCBzaG91bGQgdGFrZSBpbnRvCithY2NvdW50IHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBkZXZpY2UgYW5kIHRoZSByZXF1ZXN0ZWQgc3RhdGUgaW4gb3JkZXIgdG8KK2F2b2lkIGFueSB1bm5lY2Vzc2FyeSBvcGVyYXRpb25zLgorCitGb3IgZXhhbXBsZSwgYSB2aWRlbyBjYXJkIHRoYXQgc3VwcG9ydHMgYWxsIDQgc3RhdGVzIChEMC1EMyksIGFsbCBjb250cm9sbGVyCitjb250ZXh0IGlzIHByZXNlcnZlZCB3aGVuIGVudGVyaW5nIEQxLCBidXQgdGhlIHNjcmVlbiBpcyBwbGFjZWQgaW50byBhIGxvdyBwb3dlcgorc3RhdGUgKGJsYW5rZWQpLiAKKworVGhlIGRyaXZlciBjYW4gYWxzbyBpbnRlcnByZXQgdGhpcyBmdW5jdGlvbiBhcyBhIG5vdGlmaWNhdGlvbiB0aGF0IGl0IG1heSBiZQorZW50ZXJpbmcgYSBzbGVlcCBzdGF0ZSBpbiB0aGUgbmVhciBmdXR1cmUuIElmIGl0IGtub3dzIHRoYXQgdGhlIGRldmljZSBjYW5ub3QKK2VudGVyIHRoZSByZXF1ZXN0ZWQgc3RhdGUsIGVpdGhlciBiZWNhdXNlIG9mIGxhY2sgb2Ygc3VwcG9ydCBmb3IgaXQsIG9yIGJlY2F1c2UKK3RoZSBkZXZpY2UgaXMgbWlkZGxlIG9mIHNvbWUgY3JpdGljYWwgb3BlcmF0aW9uLCB0aGVuIGl0IHNob3VsZCBmYWlsLgorCitUaGlzIGZ1bmN0aW9uIHNob3VsZCBub3QgYmUgdXNlZCB0byBzZXQgYW55IHN0YXRlIGluIHRoZSBkZXZpY2Ugb3IgdGhlIGRyaXZlcgorYmVjYXVzZSB0aGUgZGV2aWNlIG1heSBub3QgYWN0dWFsbHkgZW50ZXIgdGhlIHNsZWVwIHN0YXRlIChlLmcuIGFub3RoZXIgZHJpdmVyCitsYXRlciBjYXVzZXMgY2F1c2VzIGEgZ2xvYmFsIHN0YXRlIHRyYW5zaXRpb24gdG8gZmFpbCkuCisKK05vdGUgdGhhdCBpbiBpbnRlcm1lZGlhdGUgbG93IHBvd2VyIHN0YXRlcywgYSBkZXZpY2UncyBJL08gYW5kIG1lbW9yeSBzcGFjZXMgbWF5CitiZSBkaXNhYmxlZCBhbmQgbWF5IG5vdCBiZSBhdmFpbGFibGUgaW4gc3Vic2VxdWVudCB0cmFuc2l0aW9ucyB0byBsb3dlciBwb3dlcgorc3RhdGVzLgorCisKK3N1c3BlbmQKKy0tLS0tLS0KKworVXNhZ2U6CisKK2lmIChkZXYtPmRyaXZlciAmJiBkZXYtPmRyaXZlci0+c3VzcGVuZCkKKwlkZXYtPmRyaXZlci0+c3VzcGVuZChkZXYsc3RhdGUpOworCitBIGRyaXZlciB1c2VzIHRoaXMgZnVuY3Rpb24gdG8gYWN0dWFsbHkgdHJhbnNpdGlvbiB0aGUgZGV2aWNlIGludG8gYSBsb3cgcG93ZXIKK3N0YXRlLiBUaGlzIHNob3VsZCBpbmNsdWRlIGRpc2FibGluZyBJL08sIElSUXMsIGFuZCBidXMtbWFzdGVyaW5nLCBhcyB3ZWxsIGFzCitwaHlzaWNhbGx5IHRyYW5zaXRpb25pbmcgdGhlIGRldmljZSB0byBhIGxvd2VyIHBvd2VyIHN0YXRlOyBpdCBtYXkgYWxzbyBpbmNsdWRlCitjYWxscyB0byBwY2lfZW5hYmxlX3dha2UoKS4KKworQnVzIG1hc3RlcmluZyBtYXkgYmUgZGlzYWJsZWQgYnkgZG9pbmc6CisKK3BjaV9kaXNhYmxlX2RldmljZShkZXYpOworCitGb3IgZGV2aWNlcyB0aGF0IHN1cHBvcnQgdGhlIFBDSSBQTSBTcGVjLCB0aGlzIG1heSBiZSB1c2VkIHRvIHNldCB0aGUgZGV2aWNlJ3MKK3Bvd2VyIHN0YXRlIHRvIG1hdGNoIHRoZSBzdXNwZW5kKCkgcGFyYW1ldGVyOgorCitwY2lfc2V0X3Bvd2VyX3N0YXRlKGRldixzdGF0ZSk7CisKK1RoZSBkcml2ZXIgaXMgYWxzbyByZXNwb25zaWJsZSBmb3IgZGlzYWJsaW5nIGFueSBvdGhlciBkZXZpY2Utc3BlY2lmaWMgZmVhdHVyZXMKKyhlLmcgYmxhbmtpbmcgc2NyZWVuLCB0dXJuaW5nIG9mZiBvbi1jYXJkIG1lbW9yeSwgZXRjKS4KKworVGhlIGRyaXZlciBzaG91bGQgYmUgc3VyZSB0byB0cmFjayB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgZGV2aWNlLCBhcyBpdCBtYXkKK29idmlhdGUgdGhlIG5lZWQgZm9yIHNvbWUgb3BlcmF0aW9ucy4KKworVGhlIGRyaXZlciBzaG91bGQgdXBkYXRlIHRoZSBjdXJyZW50X3N0YXRlIGZpZWxkIGluIGl0cyBwY2lfZGV2IHN0cnVjdHVyZSBpbgordGhpcyBmdW5jdGlvbiwgZXhjZXB0IGZvciBQTS1jYXBhYmxlIGRldmljZXMgd2hlbiBwY2lfc2V0X3Bvd2VyX3N0YXRlIGlzIHVzZWQuCisKK3Jlc3VtZQorLS0tLS0tCisKK1VzYWdlOgorCitpZiAoZGV2LT5kcml2ZXIgJiYgZGV2LT5kcml2ZXItPnN1c3BlbmQpCisJZGV2LT5kcml2ZXItPnJlc3VtZShkZXYpCisKK1RoZSByZXN1bWUgY2FsbGJhY2sgbWF5IGJlIGNhbGxlZCBmcm9tIGFueSBwb3dlciBzdGF0ZSwgYW5kIGlzIGFsd2F5cyBtZWFudCB0bwordHJhbnNpdGlvbiB0aGUgZGV2aWNlIHRvIHRoZSBEMCBzdGF0ZS4gCisKK1RoZSBkcml2ZXIgaXMgcmVzcG9uc2libGUgZm9yIHJlZW5hYmxpbmcgYW55IGZlYXR1cmVzIG9mIHRoZSBkZXZpY2UgdGhhdCBoYWQKK2JlZW4gZGlzYWJsZWQgZHVyaW5nIHByZXZpb3VzIHN1c3BlbmQgY2FsbHMsIHN1Y2ggYXMgSVJRcyBhbmQgYnVzIG1hc3RlcmluZywKK2FzIHdlbGwgYXMgY2FsbGluZyBwY2lfcmVzdG9yZV9zdGF0ZSgpLgorCitJZiB0aGUgZGV2aWNlIGlzIGN1cnJlbnRseSBpbiBEMywgaXQgbWF5IG5lZWQgdG8gYmUgcmVpbml0aWFsaXplZCBpbiByZXN1bWUoKS4KKworICAqIFNvbWUgdHlwZXMgb2YgZGV2aWNlcywgbGlrZSBidXMgY29udHJvbGxlcnMsIHdpbGwgcHJlc2VydmUgY29udGV4dCBpbiBEM2hvdAorICAgICh1c2luZyBWY2MgcG93ZXIpLiAgVGhlaXIgZHJpdmVycyB3aWxsIG9mdGVuIHdhbnQgdG8gYXZvaWQgcmUtaW5pdGlhbGl6aW5nCisgICAgdGhlbSBhZnRlciByZS1lbnRlcmluZyBEMCAocGVyaGFwcyB0byBhdm9pZCByZXNldHRpbmcgZG93bnN0cmVhbSBkZXZpY2VzKS4KKworICAqIE90aGVyIGtpbmRzIG9mIGRldmljZXMgaW4gRDNob3Qgd2lsbCBkaXNjYXJkIGRldmljZSBjb250ZXh0IGFzIHBhcnQgb2YgYQorICAgIHNvZnQgcmVzZXQgd2hlbiByZS1lbnRlcmluZyB0aGUgRDAgc3RhdGUuCisgICAgCisgICogRGV2aWNlcyByZXN1bWluZyBmcm9tIEQzY29sZCBhbHdheXMgZ28gdGhyb3VnaCBhIHBvd2VyLW9uIHJlc2V0LiAgU29tZQorICAgIGRldmljZSBjb250ZXh0IGNhbiBhbHNvIGJlIHByZXNlcnZlZCB1c2luZyBWYXV4IHBvd2VyLgorCisgICogU29tZSBzeXN0ZW1zIGhpZGUgRDNjb2xkIHJlc3VtZSBwYXRocyBmcm9tIGRyaXZlcnMuICBGb3IgZXhhbXBsZSwgb24gUENzCisgICAgdGhlIHJlc3VtZSBwYXRoIGZvciBzdXNwZW5kLXRvLWRpc2sgb2Z0ZW4gcnVucyBCSU9TIHBvd2VydXAgY29kZSwgd2hpY2gKKyAgICB3aWxsIHNvbWV0aW1lcyByZS1pbml0aWFsaXplIHRoZSBkZXZpY2UuCisKK1RvIGhhbmRsZSByZXNldHMgZHVyaW5nIEQzIHRvIEQwIHRyYW5zaXRpb25zLCBpdCBtYXkgYmUgY29udmVuaWVudCB0byBzaGFyZQorZGV2aWNlIGluaXRpYWxpemF0aW9uIGNvZGUgYmV0d2VlbiBwcm9iZSgpIGFuZCByZXN1bWUoKS4gIERldmljZSBwYXJhbWV0ZXJzCitjYW4gYWxzbyBiZSBzYXZlZCBiZWZvcmUgdGhlIGRyaXZlciBzdXNwZW5kcyBpbnRvIEQzLCBhdm9pZGluZyByZS1wcm9iZS4KKworSWYgdGhlIGRldmljZSBzdXBwb3J0cyB0aGUgUENJIFBNIFNwZWMsIGl0IGNhbiB1c2UgdGhpcyB0byBwaHlzaWNhbGx5IHRyYW5zaXRpb24KK3RoZSBkZXZpY2UgdG8gRDA6CisKK3BjaV9zZXRfcG93ZXJfc3RhdGUoZGV2LDApOworCitOb3RlIHRoYXQgaWYgdGhlIGVudGlyZSBzeXN0ZW0gaXMgdHJhbnNpdGlvbmluZyBvdXQgb2YgYSBnbG9iYWwgc2xlZXAgc3RhdGUsIGFsbAorZGV2aWNlcyB3aWxsIGJlIHBsYWNlZCBpbiB0aGUgRDAgc3RhdGUsIHNvIHRoaXMgaXMgbm90IG5lY2Vzc2FyeS4gSG93ZXZlciwgaW4KK3RoZSBldmVudCB0aGF0IHRoZSBkZXZpY2UgaXMgcGxhY2VkIGluIHRoZSBEMyBzdGF0ZSBkdXJpbmcgbm9ybWFsIG9wZXJhdGlvbiwKK3RoaXMgY2FsbCBpcyBuZWNlc3NhcnkuIEl0IGlzIGltcG9zc2libGUgdG8gZGV0ZXJtaW5lIHdoaWNoIG9mIHRoZSB0d28gZXZlbnRzIGlzCit0YWtpbmcgcGxhY2UgaW4gdGhlIGRyaXZlciwgc28gaXQgaXMgYWx3YXlzIGEgZ29vZCBpZGVhIHRvIG1ha2UgdGhhdCBjYWxsLgorCitUaGUgZHJpdmVyIHNob3VsZCB0YWtlIG5vdGUgb2YgdGhlIHN0YXRlIHRoYXQgaXQgaXMgcmVzdW1pbmcgZnJvbSBpbiBvcmRlciB0bworZW5zdXJlIGNvcnJlY3QgKGFuZCBzcGVlZHkpIG9wZXJhdGlvbi4KKworVGhlIGRyaXZlciBzaG91bGQgdXBkYXRlIHRoZSBjdXJyZW50X3N0YXRlIGZpZWxkIGluIGl0cyBwY2lfZGV2IHN0cnVjdHVyZSBpbgordGhpcyBmdW5jdGlvbiwgZXhjZXB0IGZvciBQTS1jYXBhYmxlIGRldmljZXMgd2hlbiBwY2lfc2V0X3Bvd2VyX3N0YXRlIGlzIHVzZWQuCisKKworZW5hYmxlX3dha2UKKy0tLS0tLS0tLS0tCisKK1VzYWdlOgorCitpZiAoZGV2LT5kcml2ZXIgJiYgZGV2LT5kcml2ZXItPmVuYWJsZV93YWtlKQorCWRldi0+ZHJpdmVyLT5lbmFibGVfd2FrZShkZXYsc3RhdGUsZW5hYmxlKTsKKworVGhpcyBjYWxsYmFjayBpcyBnZW5lcmFsbHkgb25seSByZWxldmFudCBmb3IgZGV2aWNlcyB0aGF0IHN1cHBvcnQgdGhlIFBDSSBQTQorc3BlYyBhbmQgaGF2ZSB0aGUgYWJpbGl0eSB0byBnZW5lcmF0ZSBhIFBNRSMgKFBvd2VyIE1hbmFnZW1lbnQgRXZlbnQgU2lnbmFsKQordG8gd2FrZSB0aGUgc3lzdGVtIHVwLiAoSG93ZXZlciwgaXQgaXMgcG9zc2libGUgdGhhdCBhIGRldmljZSBtYXkgc3VwcG9ydCAKK3NvbWUgbm9uLXN0YW5kYXJkIHdheSBvZiBnZW5lcmF0aW5nIGEgd2FrZSBldmVudCBvbiBzbGVlcC4pCisKK0JpdHMgMTU6MTEgb2YgdGhlIFBNQyAoUG93ZXIgTWdtdCBDYXBhYmlsaXRpZXMpIFJlZ2lzdGVyIGluIGEgZGV2aWNlJ3MKK1BNIENhcGFiaWx0aWVzIGRlc2NyaWJlIHdoYXQgcG93ZXIgc3RhdGVzIHRoZSBkZXZpY2Ugc3VwcG9ydHMgZ2VuZXJhdGluZyBhIAord2FrZSBldmVudCBmcm9tOgorCisrLS0tLS0tLS0tLS0tLS0tLS0tKworfCAgQml0ICB8ICBTdGF0ZSAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0rCit8ICAxMSAgIHwgICBEMCAgICAgfAorfCAgMTIgICB8ICAgRDEgICAgIHwKK3wgIDEzICAgfCAgIEQyICAgICB8Cit8ICAxNCAgIHwgICBEM2hvdCAgfAorfCAgMTUgICB8ICAgRDNjb2xkIHwKKystLS0tLS0tLS0tLS0tLS0tLS0rCisKK0EgZGV2aWNlIGNhbiB1c2UgdGhpcyB0byBlbmFibGUgd2FrZSBldmVudHM6CisKKwkgcGNpX2VuYWJsZV93YWtlKGRldixzdGF0ZSxlbmFibGUpOworCitOb3RlIHRoYXQgdG8gZW5hYmxlIFBNRSMgZnJvbSBEM2NvbGQsIGEgdmFsdWUgb2YgNCBzaG91bGQgYmUgcGFzc2VkIHRvIAorcGNpX2VuYWJsZV93YWtlIChzaW5jZSBpdCB1c2VzIGFuIGluZGV4IGludG8gYSBiaXRtYXNrKS4gSWYgYSBkcml2ZXIgZ2V0cworYSByZXF1ZXN0IHRvIGVuYWJsZSB3YWtlIGV2ZW50cyBmcm9tIEQzLCB0d28gY2FsbHMgc2hvdWxkIGJlIG1hZGUgdG8gCitwY2lfZW5hYmxlX3dha2UgKG9uZSBmb3IgYm90aCBEM2hvdCBhbmQgRDNjb2xkKS4KKworCis1LiBSZXNvdXJjZXMKK35+fn5+fn5+fn5+fgorCitQQ0kgTG9jYWwgQnVzIFNwZWNpZmljYXRpb24gCitQQ0kgQnVzIFBvd2VyIE1hbmFnZW1lbnQgSW50ZXJmYWNlIFNwZWNpZmljYXRpb24KKworICBodHRwOi8vcGNpc2lnLm9yZworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Bvd2VyL3N0YXRlcy50eHQgYi9Eb2N1bWVudGF0aW9uL3Bvd2VyL3N0YXRlcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2U1ZTVkMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vcG93ZXIvc3RhdGVzLnR4dApAQCAtMCwwICsxLDc5IEBACisKK1N5c3RlbSBQb3dlciBNYW5hZ2VtZW50IFN0YXRlcworCisKK1RoZSBrZXJuZWwgc3VwcG9ydHMgdGhyZWUgcG93ZXIgbWFuYWdlbWVudCBzdGF0ZXMgZ2VuZXJpY2FsbHksIHRob3VnaAorZWFjaCBpcyBkZXBlbmRlbnQgb24gcGxhdGZvcm0gc3VwcG9ydCBjb2RlIHRvIGltcGxlbWVudCB0aGUgbG93LWxldmVsCitkZXRhaWxzIGZvciBlYWNoIHN0YXRlLiBUaGlzIGZpbGUgZGVzY3JpYmVzIGVhY2ggc3RhdGUsIHdoYXQgdGhleSBhcmUKK2NvbW1vbmx5IGNhbGxlZCwgd2hhdCBBQ1BJIHN0YXRlIHRoZXkgbWFwIHRvLCBhbmQgd2hhdCBzdHJpbmcgdG8gd3JpdGUKK3RvIC9zeXMvcG93ZXIvc3RhdGUgdG8gZW50ZXIgdGhhdCBzdGF0ZQorCisKK1N0YXRlOgkJU3RhbmRieSAvIFBvd2VyLU9uIFN1c3BlbmQKK0FDUEkgU3RhdGU6CVMxCitTdHJpbmc6CQkic3RhbmRieSIKKworVGhpcyBzdGF0ZSBvZmZlcnMgbWluaW1hbCwgdGhvdWdoIHJlYWwsIHBvd2VyIHNhdmluZ3MsIHdoaWxlIHByb3ZpZGluZworYSB2ZXJ5IGxvdy1sYXRlbmN5IHRyYW5zaXRpb24gYmFjayB0byBhIHdvcmtpbmcgc3lzdGVtLiBObyBvcGVyYXRpbmcKK3N0YXRlIGlzIGxvc3QgKHRoZSBDUFUgcmV0YWlucyBwb3dlciksIHNvIHRoZSBzeXN0ZW0gZWFzaWx5IHN0YXJ0cyB1cAorYWdhaW4gd2hlcmUgaXQgbGVmdCBvZmYuIAorCitXZSB0cnkgdG8gcHV0IGRldmljZXMgaW4gYSBsb3ctcG93ZXIgc3RhdGUgZXF1aXZhbGVudCB0byBEMSwgd2hpY2gKK2Fsc28gb2ZmZXJzIGxvdyBwb3dlciBzYXZpbmdzLCBidXQgbG93IHJlc3VtZSBsYXRlbmN5LiBOb3QgYWxsIGRldmljZXMKK3N1cHBvcnQgRDEsIGFuZCB0aG9zZSB0aGF0IGRvbid0IGFyZSBsZWZ0IG9uLiAKKworQSB0cmFuc2l0aW9uIGZyb20gU3RhbmRieSB0byB0aGUgT24gc3RhdGUgc2hvdWxkIHRha2UgYWJvdXQgMS0yCitzZWNvbmRzLiAKKworCitTdGF0ZToJCVN1c3BlbmQtdG8tUkFNCitBQ1BJIFN0YXRlOglTMworU3RyaW5nOgkJIm1lbSIKKworVGhpcyBzdGF0ZSBvZmZlcnMgc2lnbmlmaWNhbnQgcG93ZXIgc2F2aW5ncyBhcyBldmVyeXRoaW5nIGluIHRoZQorc3lzdGVtIGlzIHB1dCBpbnRvIGEgbG93LXBvd2VyIHN0YXRlLCBleGNlcHQgZm9yIG1lbW9yeSwgd2hpY2ggaXMKK3BsYWNlZCBpbiBzZWxmLXJlZnJlc2ggbW9kZSB0byByZXRhaW4gaXRzIGNvbnRlbnRzLiAKKworU3lzdGVtIGFuZCBkZXZpY2Ugc3RhdGUgaXMgc2F2ZWQgYW5kIGtlcHQgaW4gbWVtb3J5LiBBbGwgZGV2aWNlcyBhcmUKK3N1c3BlbmRlZCBhbmQgcHV0IGludG8gRDMuIEluIG1hbnkgY2FzZXMsIGFsbCBwZXJpcGhlcmFsIGJ1c2VzIGxvc2UKK3Bvd2VyIHdoZW4gZW50ZXJpbmcgU1RSLCBzbyBkZXZpY2VzIG11c3QgYmUgYWJsZSB0byBoYW5kbGUgdGhlCit0cmFuc2l0aW9uIGJhY2sgdG8gdGhlIE9uIHN0YXRlLiAKKworRm9yIGF0IGxlYXN0IEFDUEksIFNUUiByZXF1aXJlcyBzb21lIG1pbmltYWwgYm9vdC1zdHJhcHBpbmcgY29kZSB0bworcmVzdW1lIHRoZSBzeXN0ZW0gZnJvbSBTVFIuIFRoaXMgbWF5IGJlIHRydWUgb24gb3RoZXIgcGxhdGZvcm1zLiAKKworQSB0cmFuc2l0aW9uIGZyb20gU3VzcGVuZC10by1SQU0gdG8gdGhlIE9uIHN0YXRlIHNob3VsZCB0YWtlIGFib3V0CiszLTUgc2Vjb25kcy4gCisKKworU3RhdGU6CQlTdXNwZW5kLXRvLWRpc2sKK0FDUEkgU3RhdGU6CVM0CitTdHJpbmc6CQkiZGlzayIKKworVGhpcyBzdGF0ZSBvZmZlcnMgdGhlIGdyZWF0ZXN0IHBvd2VyIHNhdmluZ3MsIGFuZCBjYW4gYmUgdXNlZCBldmVuIGluCit0aGUgYWJzZW5jZSBvZiBsb3ctbGV2ZWwgcGxhdGZvcm0gc3VwcG9ydCBmb3IgcG93ZXIgbWFuYWdlbWVudC4gVGhpcworc3RhdGUgb3BlcmF0ZXMgc2ltaWxhcmx5IHRvIFN1c3BlbmQtdG8tUkFNLCBidXQgaW5jbHVkZXMgYSBmaW5hbCBzdGVwCitvZiB3cml0aW5nIG1lbW9yeSBjb250ZW50cyB0byBkaXNrLiBPbiByZXN1bWUsIHRoaXMgaXMgcmVhZCBhbmQgbWVtb3J5CitpcyByZXN0b3JlZCB0byBpdHMgcHJlLXN1c3BlbmQgc3RhdGUuIAorCitTVEQgY2FuIGJlIGhhbmRsZWQgYnkgdGhlIGZpcm13YXJlIG9yIHRoZSBrZXJuZWwuIElmIGl0IGlzIGhhbmRsZWQgYnkKK3RoZSBmaXJtd2FyZSwgaXQgdXN1YWxseSByZXF1aXJlcyBhIGRlZGljYXRlZCBwYXJ0aXRpb24gdGhhdCBtdXN0IGJlCitzZXR1cCB2aWEgYW5vdGhlciBvcGVyYXRpbmcgc3lzdGVtIGZvciBpdCB0byB1c2UuIERlc3BpdGUgdGhlCitpbmNvbnZlbmllbmNlLCB0aGlzIG1ldGhvZCByZXF1aXJlcyBtaW5pbWFsIHdvcmsgYnkgdGhlIGtlcm5lbCwgc2luY2UKK3RoZSBmaXJtd2FyZSB3aWxsIGFsc28gaGFuZGxlIHJlc3RvcmluZyBtZW1vcnkgY29udGVudHMgb24gcmVzdW1lLiAKKworSWYgdGhlIGtlcm5lbCBpcyByZXNwb25zaWJsZSBmb3IgcGVyc2lzdGFudGx5IHNhdmluZyBzdGF0ZSwgYSBtZWNoYW5pc20gCitjYWxsZWQgJ3N3c3VzcCcgKFN3YXAgU3VzcGVuZCkgaXMgdXNlZCB0byB3cml0ZSBtZW1vcnkgY29udGVudHMgdG8KK2ZyZWUgc3dhcCBzcGFjZS4gc3dzdXNwIGhhcyBzb21lIHJlc3RyaWN0aXZlIHJlcXVpcmVtZW50cywgYnV0IHNob3VsZAord29yayBpbiBtb3N0IGNhc2VzLiBTb21lLCBhbGJlaXQgb3V0ZGF0ZWQsIGRvY3VtZW50YXRpb24gY2FuIGJlIGZvdW5kCitpbiBEb2N1bWVudGF0aW9uL3Bvd2VyL3N3c3VzcC50eHQuIAorCitPbmNlIG1lbW9yeSBzdGF0ZSBpcyB3cml0dGVuIHRvIGRpc2ssIHRoZSBzeXN0ZW0gbWF5IGVpdGhlciBlbnRlciBhCitsb3ctcG93ZXIgc3RhdGUgKGxpa2UgQUNQSSBTNCksIG9yIGl0IG1heSBzaW1wbHkgcG93ZXIgZG93bi4gUG93ZXJpbmcKK2Rvd24gb2ZmZXJzIGdyZWF0ZXIgc2F2aW5ncywgYW5kIGFsbG93cyB0aGlzIG1lY2hhbmlzbSB0byB3b3JrIG9uIGFueQorc3lzdGVtLiBIb3dldmVyLCBlbnRlcmluZyBhIHJlYWwgbG93LXBvd2VyIHN0YXRlIGFsbG93cyB0aGUgdXNlciB0bwordHJpZ2dlciB3YWtlIHVwIGV2ZW50cyAoZS5nLiBwcmVzc2luZyBhIGtleSBvciBvcGVuaW5nIGEgbGFwdG9wIGxpZCkuIAorCitBIHRyYW5zaXRpb24gZnJvbSBTdXNwZW5kLXRvLURpc2sgdG8gdGhlIE9uIHN0YXRlIHNob3VsZCB0YWtlIGFib3V0IDMwCitzZWNvbmRzLCB0aG91Z2ggaXQncyB0eXBpY2FsbHkgYSBiaXQgbW9yZSB3aXRoIHRoZSBjdXJyZW50CitpbXBsZW1lbnRhdGlvbi4gCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Bvd2VyL3N3c3VzcC50eHQgYi9Eb2N1bWVudGF0aW9uL3Bvd2VyL3N3c3VzcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzdjMzQ1OQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vcG93ZXIvc3dzdXNwLnR4dApAQCAtMCwwICsxLDIzNSBAQAorRnJvbSBrZXJuZWwvc3VzcGVuZC5jOgorCisgKiBCSUcgRkFUIFdBUk5JTkcgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogSWYgeW91IGhhdmUgdW5zdXBwb3J0ZWQgKCopIGRldmljZXMgdXNpbmcgRE1BLi4uCisgKgkJCQkuLi5zYXkgZ29vZGJ5ZSB0byB5b3VyIGRhdGEuCisgKgorICogSWYgeW91IHRvdWNoIGFueXRoaW5nIG9uIGRpc2sgYmV0d2VlbiBzdXNwZW5kIGFuZCByZXN1bWUuLi4KKyAqCQkJCS4uLmtpc3MgeW91ciBkYXRhIGdvb2RieWUuCisgKgorICogSWYgeW91ciBkaXNrIGRyaXZlciBkb2VzIG5vdCBzdXBwb3J0IHN1c3BlbmQuLi4gKElERSBkb2VzKQorICoJCQkJLi4ueW91J2QgYmV0dGVyIGZpbmQgb3V0IGhvdyB0byBnZXQgYWxvbmcKKyAqCQkJCSAgIHdpdGhvdXQgeW91ciBkYXRhLgorICoKKyAqIElmIHlvdSBjaGFuZ2Uga2VybmVsIGNvbW1hbmQgbGluZSBiZXR3ZWVuIHN1c3BlbmQgYW5kIHJlc3VtZS4uLgorICoJCQkgICAgICAgIC4uLnByZXBhcmUgZm9yIG5hc3R5IGZzY2sgb3Igd29yc2UuCisgKgorICogSWYgeW91IGNoYW5nZSB5b3VyIGhhcmR3YXJlIHdoaWxlIHN5c3RlbSBpcyBzdXNwZW5kZWQuLi4KKyAqCQkJICAgICAgICAuLi53ZWxsLCBpdCB3YXMgbm90IGdvb2QgaWRlYS4KKyAqCisgKiAoKikgc3VzcGVuZC9yZXN1bWUgc3VwcG9ydCBpcyBuZWVkZWQgdG8gbWFrZSBpdCBzYWZlLgorCitZb3UgbmVlZCB0byBhcHBlbmQgcmVzdW1lPS9kZXYveW91cl9zd2FwX3BhcnRpdGlvbiB0byBrZXJuZWwgY29tbWFuZAorbGluZS4gVGhlbiB5b3Ugc3VzcGVuZCBieQorCitlY2hvIHNodXRkb3duID4gL3N5cy9wb3dlci9kaXNrOyBlY2hvIGRpc2sgPiAvc3lzL3Bvd2VyL3N0YXRlCisKKy4gSWYgeW91IGZlZWwgQUNQSSB3b3JrcyBwcmV0dHkgd2VsbCBvbiB5b3VyIHN5c3RlbSwgeW91IG1pZ2h0IHRyeQorCitlY2hvIHBsYXRmb3JtID4gL3N5cy9wb3dlci9kaXNrOyBlY2hvIGRpc2sgPiAvc3lzL3Bvd2VyL3N0YXRlCisKKworCitBcnRpY2xlIGFib3V0IGdvYWxzIGFuZCBpbXBsZW1lbnRhdGlvbiBvZiBTb2Z0d2FyZSBTdXNwZW5kIGZvciBMaW51eAorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KK0F1dGhvcjogR4LhYm9yIEt1dGkKK0xhc3QgcmV2aXNlZDogMjAwMy0xMC0yMCBieSBQYXZlbCBNYWNoZWsKKworSWRlYSBhbmQgZ29hbHMgdG8gYWNoaWV2ZQorCitOb3dhZGF5cyBpdCBpcyBjb21tb24gaW4gc2V2ZXJhbCBsYXB0b3BzIHRoYXQgdGhleSBoYXZlIGEgc3VzcGVuZCBidXR0b24uIEl0CitzYXZlcyB0aGUgc3RhdGUgb2YgdGhlIG1hY2hpbmUgdG8gYSBmaWxlc3lzdGVtIG9yIHRvIGEgcGFydGl0aW9uIGFuZCBzd2l0Y2hlcwordG8gc3RhbmRieSBtb2RlLiBMYXRlciByZXN1bWluZyB0aGUgbWFjaGluZSB0aGUgc2F2ZWQgc3RhdGUgaXMgbG9hZGVkIGJhY2sgdG8KK3JhbSBhbmQgdGhlIG1hY2hpbmUgY2FuIGNvbnRpbnVlIGl0cyB3b3JrLiBJdCBoYXMgdHdvIHJlYWwgYmVuZWZpdHMuIEZpcnN0IHdlCitzYXZlIG91cnNlbHZlcyB0aGUgdGltZSBtYWNoaW5lIGdvZXMgZG93biBhbmQgbGF0ZXIgYm9vdHMgdXAsIGVuZXJneSBjb3N0cworYXJlIHJlYWwgaGlnaCB3aGVuIHJ1bm5pbmcgZnJvbSBiYXR0ZXJpZXMuIFRoZSBvdGhlciBnYWluIGlzIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0bworaW50ZXJydXB0IG91ciBwcm9ncmFtcyBzbyBwcm9jZXNzZXMgdGhhdCBhcmUgY2FsY3VsYXRpbmcgc29tZXRoaW5nIGZvciBhIGxvbmcKK3RpbWUgc2hvdWxkbid0IG5lZWQgdG8gYmUgd3JpdHRlbiBpbnRlcnJ1cHRpYmxlLgorCitzd3N1c3Agc2F2ZXMgdGhlIHN0YXRlIG9mIHRoZSBtYWNoaW5lIGludG8gYWN0aXZlIHN3YXBzIGFuZCB0aGVuIHJlYm9vdHMgb3IKK3Bvd2VyZG93bnMuICBZb3UgbXVzdCBleHBsaWNpdGx5IHNwZWNpZnkgdGhlIHN3YXAgcGFydGl0aW9uIHRvIHJlc3VtZSBmcm9tIHdpdGgKK2BgcmVzdW1lPScnIGtlcm5lbCBvcHRpb24uIElmIHNpZ25hdHVyZSBpcyBmb3VuZCBpdCBsb2FkcyBhbmQgcmVzdG9yZXMgc2F2ZWQKK3N0YXRlLiBJZiB0aGUgb3B0aW9uIGBgbm9yZXN1bWUnJyBpcyBzcGVjaWZpZWQgYXMgYSBib290IHBhcmFtZXRlciwgaXQgc2tpcHMKK3RoZSByZXN1bWluZy4KKworSW4gdGhlIG1lYW50aW1lIHdoaWxlIHRoZSBzeXN0ZW0gaXMgc3VzcGVuZGVkIHlvdSBzaG91bGQgbm90IGFkZC9yZW1vdmUgYW55CitvZiB0aGUgaGFyZHdhcmUsIHdyaXRlIHRvIHRoZSBmaWxlc3lzdGVtcywgZXRjLgorCitTbGVlcCBzdGF0ZXMgc3VtbWFyeQorPT09PT09PT09PT09PT09PT09PT0KKworVGhlcmUgYXJlIHRocmVlIGRpZmZlcmVudCBpbnRlcmZhY2VzIHlvdSBjYW4gdXNlLCAvcHJvYy9hY3BpIHNob3VsZAord29yayBsaWtlIHRoaXM6CisKK0luIGEgcmVhbGx5IHBlcmZlY3Qgd29ybGQ6CitlY2hvIDEgPiAvcHJvYy9hY3BpL3NsZWVwICAgICAgICMgZm9yIHN0YW5kYnkKK2VjaG8gMiA+IC9wcm9jL2FjcGkvc2xlZXAgICAgICAgIyBmb3Igc3VzcGVuZCB0byByYW0KK2VjaG8gMyA+IC9wcm9jL2FjcGkvc2xlZXAgICAgICAgIyBmb3Igc3VzcGVuZCB0byByYW0sIGJ1dCB3aXRoIG1vcmUgcG93ZXIgY29uc2VydmF0aXZlCitlY2hvIDQgPiAvcHJvYy9hY3BpL3NsZWVwICAgICAgICMgZm9yIHN1c3BlbmQgdG8gZGlzaworZWNobyA1ID4gL3Byb2MvYWNwaS9zbGVlcCAgICAgICAjIGZvciBzaHV0ZG93biB1bmZyaWVuZGx5IHRoZSBzeXN0ZW0KKworYW5kIHBlcmhhcHMKK2VjaG8gNGIgPiAvcHJvYy9hY3BpL3NsZWVwICAgICAgIyBmb3Igc3VzcGVuZCB0byBkaXNrIHZpYSBzNGJpb3MKKworRnJlcXVlbnRseSBBc2tlZCBRdWVzdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1E6IHdlbGwsIHN1c3BlbmRpbmcgYSBzZXJ2ZXIgaXMgSU1ITyBhIHJlYWxseSBzdHVwaWQgdGhpbmcsCitidXQuLi4gKERpZWdvIFp1Y2NhdG8pOgorCitBOiBZb3UgYm91Z2h0IG5ldyBVUFMgZm9yIHlvdXIgc2VydmVyLiBIb3cgZG8geW91IGluc3RhbGwgaXQgd2l0aG91dAorYnJpbmdpbmcgbWFjaGluZSBkb3duPyBTdXNwZW5kIHRvIGRpc2ssIHJlYXJyYW5nZSBwb3dlciBjYWJsZXMsCityZXN1bWUuCisKK1lvdSBoYXZlIHlvdXIgc2VydmVyIG9uIFVQUy4gUG93ZXIgZGllZCwgYW5kIFVQUyBpcyBpbmRpY2F0aW5nIDMwCitzZWNvbmRzIHRvIGZhaWx1cmUuIFdoYXQgZG8geW91IGRvPyBTdXNwZW5kIHRvIGRpc2suCisKK0V0aGVybmV0IGNhcmQgaW4geW91ciBzZXJ2ZXIgZGllZC4gWW91IHdhbnQgdG8gcmVwbGFjZSBpdC4gWW91cgorc2VydmVyIGlzIG5vdCBob3RwbHVnIGNhcGFibGUuIFdoYXQgZG8geW91IGRvPyBTdXNwZW5kIHRvIGRpc2ssCityZXBsYWNlIGV0aGVybmV0IGNhcmQsIHJlc3VtZS4gSWYgeW91IGFyZSBmYXN0IHlvdXIgdXNlcnMgd2lsbCBub3QKK2V2ZW4gc2VlIGJyb2tlbiBjb25uZWN0aW9ucy4KKworCitROiBNYXliZSBJJ20gbWlzc2luZyBzb21ldGhpbmcsIGJ1dCB3aHkgZG9uJ3QgdGhlIHJlZ3VsYXIgSS9PIHBhdGhzIHdvcms/CisKK0E6IFdlIGRvIHVzZSB0aGUgcmVndWxhciBJL08gcGF0aHMuIEhvd2V2ZXIgd2UgY2Fubm90IHJlc3RvcmUgdGhlIGRhdGEKK3RvIGl0cyBvcmlnaW5hbCBsb2NhdGlvbiBhcyB3ZSBsb2FkIGl0LiBUaGF0IHdvdWxkIGNyZWF0ZSBhbgoraW5jb25zaXN0ZW50IGtlcm5lbCBzdGF0ZSB3aGljaCB3b3VsZCBjZXJ0YWlubHkgcmVzdWx0IGluIGFuIG9vcHMuCitJbnN0ZWFkLCB3ZSBsb2FkIHRoZSBpbWFnZSBpbnRvIHVudXNlZCBtZW1vcnkgYW5kIHRoZW4gYXRvbWljYWxseSBjb3B5CitpdCBiYWNrIHRvIGl0IG9yaWdpbmFsIGxvY2F0aW9uLiBUaGlzIGltcGxpZXMsIG9mIGNvdXJzZSwgYSBtYXhpbXVtCitpbWFnZSBzaXplIG9mIGhhbGYgdGhlIGFtb3VudCBvZiBtZW1vcnkuCisKK1RoZXJlIGFyZSB0d28gc29sdXRpb25zIHRvIHRoaXM6CisKKyogcmVxdWlyZSBoYWxmIG9mIG1lbW9yeSB0byBiZSBmcmVlIGR1cmluZyBzdXNwZW5kLiBUaGF0IHdheSB5b3UgY2FuCityZWFkICJuZXciIGRhdGEgb250byBmcmVlIHNwb3RzLCB0aGVuIGNsaSBhbmQgY29weQorCisqIGFzc3VtZSB3ZSBoYWQgc3BlY2lhbCAicG9sbGluZyIgaWRlIGRyaXZlciB0aGF0IG9ubHkgdXNlcyBtZW1vcnkKK2JldHdlZW4gMC02NDBLQi4gVGhhdCB3YXksIEknZCBoYXZlIHRvIG1ha2Ugc3VyZSB0aGF0IDAtNjQwS0IgaXMgZnJlZQorZHVyaW5nIHN1c3BlbmRpbmcsIGJ1dCBvdGhlcndpc2UgaXQgd291bGQgd29yay4uLgorCitzdXNwZW5kMiBzaGFyZXMgdGhpcyBmdW5kYW1lbnRhbCBsaW1pdGF0aW9uLCBidXQgZG9lcyBub3QgaW5jbHVkZSB1c2VyCitkYXRhIGFuZCBkaXNrIGNhY2hlcyBpbnRvICJ1c2VkIG1lbW9yeSIgYnkgc2F2aW5nIHRoZW0gaW4KK2FkdmFuY2UuIFRoYXQgbWVhbnMgdGhhdCB0aGUgbGltaXRhdGlvbiBnb2VzIGF3YXkgaW4gcHJhY3RpY2UuCisKK1E6IERvZXMgbGludXggc3VwcG9ydCBBQ1BJIFM0PworCitBOiBZZXMuIFRoYXQncyB3aGF0IGVjaG8gcGxhdGZvcm0gPiAvc3lzL3Bvd2VyL2Rpc2sgZG9lcy4KKworUTogTXkgbWFjaGluZSBkb2Vzbid0IHdvcmsgd2l0aCBBQ1BJLiBIb3cgY2FuIEkgdXNlIHN3c3VzcCB0aGFuID8KKworQTogRG8gYSByZWJvb3QoKSBzeXNjYWxsIHdpdGggcmlnaHQgcGFyYW1ldGVycy4gV2FybmluZzogZ2xpYmMgZ2V0cyBpbgoraXRzIHdheSwgc28gY2hlY2sgd2l0aCBzdHJhY2U6CisKK3JlYm9vdChMSU5VWF9SRUJPT1RfTUFHSUMxLCBMSU5VWF9SRUJPT1RfTUFHSUMyLCAweGQwMDBmY2UyKQorCisoVGhhbmtzIHRvIFBldGVyIE9zdGVybHVuZDopCisKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzeXNjYWxsLmg+CisKKyNkZWZpbmUgTElOVVhfUkVCT09UX01BR0lDMSAgICAgMHhmZWUxZGVhZAorI2RlZmluZSBMSU5VWF9SRUJPT1RfTUFHSUMyICAgICA2NzIyNzQ3OTMKKyNkZWZpbmUgTElOVVhfUkVCT09UX0NNRF9TV19TVVNQRU5EICAgICAweEQwMDBGQ0UyCisKK2ludCBtYWluKCkKK3sKKyAgICBzeXNjYWxsKFNZU19yZWJvb3QsIExJTlVYX1JFQk9PVF9NQUdJQzEsIExJTlVYX1JFQk9PVF9NQUdJQzIsCisgICAgICAgICAgICBMSU5VWF9SRUJPT1RfQ01EX1NXX1NVU1BFTkQsIDApOworICAgIHJldHVybiAwOworfQorCitBbHNvIC9zeXMvIGludGVyZmFjZSBzaG91bGQgYmUgc3RpbGwgcHJlc2VudC4KKworUTogV2hhdCBpcyAnc3VzcGVuZDInPworCitBOiBzdXNwZW5kMiBpcyAnU29mdHdhcmUgU3VzcGVuZCAyJywgYSBmb3JrZWQgaW1wbGVtZW50YXRpb24gb2YKK3N1c3BlbmQtdG8tZGlzayB3aGljaCBpcyBhdmFpbGFibGUgYXMgc2VwYXJhdGUgcGF0Y2hlcyBmb3IgMi40IGFuZCAyLjYKK2tlcm5lbHMgZnJvbSBzd3N1c3Auc291cmNlZm9yZ2UubmV0LiBJdCBpbmNsdWRlcyBzdXBwb3J0IGZvciBTTVAsIDRHQgoraGlnaG1lbSBhbmQgcHJlZW1wdGlvbi4gSXQgYWxzbyBoYXMgYSBleHRlbnNpYmxlIGFyY2hpdGVjdHVyZSB0aGF0CithbGxvd3MgZm9yIGFyYml0cmFyeSB0cmFuc2Zvcm1hdGlvbnMgb24gdGhlIGltYWdlIChjb21wcmVzc2lvbiwKK2VuY3J5cHRpb24pIGFuZCBhcmJpdHJhcnkgYmFja2VuZHMgZm9yIHdyaXRpbmcgdGhlIGltYWdlIChlZyB0byBzd2FwCitvciBhbiBORlMgc2hhcmVbV29yayBJbiBQcm9ncmVzc10pLiBRdWVzdGlvbnMgcmVnYXJkaW5nIHN1c3BlbmQyCitzaG91bGQgYmUgc2VudCB0byB0aGUgbWFpbGluZyBsaXN0IGF2YWlsYWJsZSB0aHJvdWdoIHRoZSBzdXNwZW5kMgord2Vic2l0ZSwgYW5kIG5vdCB0byB0aGUgTGludXggS2VybmVsIE1haWxpbmcgTGlzdC4gV2UgYXJlIHdvcmtpbmcKK3Rvd2FyZCBtZXJnaW5nIHN1c3BlbmQyIGludG8gdGhlIG1haW5saW5lIGtlcm5lbC4KKworUTogQSBrZXJuZWwgdGhyZWFkIG11c3Qgdm9sdW50YXJpbHkgZnJlZXplIGl0c2VsZiAoY2FsbCAncmVmcmlnZXJhdG9yJykuCitJIGZvdW5kIHNvbWUga2VybmVsIHRocmVhZHMgdGhhdCBkb24ndCBkbyBpdCwgYW5kIHRoZXkgZG9uJ3QgZnJlZXplCitzbyB0aGUgc3lzdGVtIGNhbid0IHNsZWVwLiBJcyB0aGlzIGEga25vd24gYmVoYXZpb3I/CisKK0E6IEFsbCBzdWNoIGtlcm5lbCB0aHJlYWRzIG5lZWQgdG8gYmUgZml4ZWQsIG9uZSBieSBvbmUuIFNlbGVjdCB0aGUKK3BsYWNlIHdoZXJlIHRoZSB0aHJlYWQgaXMgc2FmZSB0byBiZSBmcm96ZW4gKG5vIGtlcm5lbCBzZW1hcGhvcmVzCitzaG91bGQgYmUgaGVsZCBhdCB0aGF0IHBvaW50IGFuZCBpdCBtdXN0IGJlIHNhZmUgdG8gc2xlZXAgdGhlcmUpLCBhbmQKK2FkZDoKKworICAgICAgICAgICAgaWYgKGN1cnJlbnQtPmZsYWdzICYgUEZfRlJFRVpFKQorICAgICAgICAgICAgICAgICAgICByZWZyaWdlcmF0b3IoUEZfRlJFRVpFKTsKKworSWYgdGhlIHRocmVhZCBpcyBuZWVkZWQgZm9yIHdyaXRpbmcgdGhlIGltYWdlIHRvIHN0b3JhZ2UsIHlvdSBzaG91bGQKK2luc3RlYWQgc2V0IHRoZSBQRl9OT0ZSRUVaRSBwcm9jZXNzIGZsYWcgd2hlbiBjcmVhdGluZyB0aGUgdGhyZWFkLgorCisKK1E6IFdoYXQgaXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBiZXR3ZWVuICJwbGF0Zm9ybSIsICJzaHV0ZG93biIgYW5kCisiZmlybXdhcmUiIGluIC9zeXMvcG93ZXIvZGlzaz8KKworQToKKworc2h1dGRvd246IHNhdmUgc3RhdGUgaW4gbGludXgsIHRoZW4gdGVsbCBiaW9zIHRvIHBvd2VyZG93bgorCitwbGF0Zm9ybTogc2F2ZSBzdGF0ZSBpbiBsaW51eCwgdGhlbiB0ZWxsIGJpb3MgdG8gcG93ZXJkb3duIGFuZCBibGluaworICAgICAgICAgICJzdXNwZW5kZWQgbGVkIgorCitmaXJtd2FyZTogdGVsbCBiaW9zIHRvIHNhdmUgc3RhdGUgaXRzZWxmIFtuZWVkcyBCSU9TLXNwZWNpZmljIHN1c3BlbmQKKwkgIHBhcnRpdGlvbiwgYW5kIGhhcyB2ZXJ5IGxpdHRsZSB0byBkbyB3aXRoIHN3c3VzcF0KKworInBsYXRmb3JtIiBpcyBhY3R1YWxseSByaWdodCB0aGluZyB0byBkbywgYnV0ICJzaHV0ZG93biIgaXMgbW9zdAorcmVsaWFibGUuCisKK1E6IEkgZG8gbm90IHVuZGVyc3RhbmQgd2h5IHlvdSBoYXZlIHN1Y2ggc3Ryb25nIG9iamVjdGlvbnMgdG8gaWRlYSBvZgorc2VsZWN0aXZlIHN1c3BlbmQuCisKK0E6IERvIHNlbGVjdGl2ZSBzdXNwZW5kIGR1cmluZyBydW50aW1lIHBvd2VyIG1hbmFnbWVudCwgdGhhdCdzIG9rYXkuIEJ1dAoraXRzIHVzZWxlc3MgZm9yIHN1c3BlbmQtdG8tZGlzay4gKEFuZCBJIGRvIG5vdCBzZWUgaG93IHlvdSBjb3VsZCB1c2UKK2l0IGZvciBzdXNwZW5kLXRvLXJhbSwgSSBob3BlIHlvdSBkbyBub3Qgd2FudCB0aGF0KS4KKworTGV0cyBzZWUsIHNvIHlvdSBzdWdnZXN0IHRvCisKKyogU1VTUEVORCBhbGwgYnV0IHN3YXAgZGV2aWNlIGFuZCBwYXJlbnRzCisqIFNuYXBzaG90CisqIFdyaXRlIGltYWdlIHRvIGRpc2sKKyogU1VTUEVORCBzd2FwIGRldmljZSBhbmQgcGFyZW50cworKiBQb3dlcmRvd24KKworT2ggbm8sIHRoYXQgZG9lcyBub3Qgd29yaywgaWYgc3dhcCBkZXZpY2Ugb3IgaXRzIHBhcmVudHMgdXNlcyBETUEsCit5b3UndmUgY29ycnVwdGVkIGRhdGEuIFlvdSdkIGhhdmUgdG8gZG8KKworKiBTVVNQRU5EIGFsbCBidXQgc3dhcCBkZXZpY2UgYW5kIHBhcmVudHMKKyogRlJFRVpFIHN3YXAgZGV2aWNlIGFuZCBwYXJlbnRzCisqIFNuYXBzaG90CisqIFVORlJFRVpFIHN3YXAgZGV2aWNlIGFuZCBwYXJlbnRzCisqIFdyaXRlCisqIFNVU1BFTkQgc3dhcCBkZXZpY2UgYW5kIHBhcmVudHMKKworV2hpY2ggbWVhbnMgdGhhdCB5b3Ugc3RpbGwgbmVlZCB0aGF0IEZSRUVaRSBzdGF0ZSwgYW5kIHlvdSBnZXQgbW9yZQorY29tcGxpY2F0ZWQgY29kZS4gKEFuZCBJIGhhdmUgbm90IHlldCBpbnRyb2R1Y2UgZGV0YWlscyBsaWtlIHN5c3RlbQorZGV2aWNlcykuCisKK1E6IFRoZXJlIGRvbid0IHNlZW0gdG8gYmUgYW55IGdlbmVyYWxseSB1c2VmdWwgYmVoYXZpb3JhbAorZGlzdGluY3Rpb25zIGJldHdlZW4gU1VTUEVORCBhbmQgRlJFRVpFLgorCitBOiBEb2luZyBTVVNQRU5EIHdoZW4geW91IGFyZSBhc2tlZCB0byBkbyBGUkVFWkUgaXMgYWx3YXlzIGNvcnJlY3QsCitidXQgaXQgbWF5IGJlIHVubmVjY2Vzc2FyaWx5IHNsb3cuIElmIHlvdSB3YW50IFVTQiB0byBzdGF5IHNpbXBsZSwKK3Nsb3duZXNzIG1heSBub3QgbWF0dGVyIHRvIHlvdS4gSXQgY2FuIGFsd2F5cyBiZSBmaXhlZCBsYXRlci4KKworRm9yIGRldmljZXMgbGlrZSBkaXNrIGl0IGRvZXMgbWF0dGVyLCB5b3UgZG8gbm90IHdhbnQgdG8gc3BpbmRvd24gZm9yCitGUkVFWkUuCisKK1E6IEFmdGVyIHJlc3VtaW5nLCBzeXN0ZW0gaXMgcGFnaW5nIGhlYXZpbGx5LCBsZWFkaW5nIHRvIHZlcnkgYmFkIGludGVyYWN0aXZpdHkuCisKK0E6IFRyeSBydW5uaW5nCisKK2NhdCBgY2F0IC9wcm9jL1swLTldKi9tYXBzIHwgZ3JlcCAvIHwgc2VkICdzOi4qIC86LzonIHwgc29ydCAtdWAgPiAvZGV2L251bGwKKworYWZ0ZXIgcmVzdW1lLiBzd2Fwb2ZmIC1hOyBzd2Fwb24gLWEgbWF5IGFsc28gYmUgdXNlZnVsbC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcG93ZXIvdHJpY2tzLnR4dCBiL0RvY3VtZW50YXRpb24vcG93ZXIvdHJpY2tzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNmQ1OGQzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9wb3dlci90cmlja3MudHh0CkBAIC0wLDAgKzEsMjcgQEAKKwlzd3N1c3AvUzMgdHJpY2tzCisJfn5+fn5+fn5+fn5+fn5+fgorUGF2ZWwgTWFjaGVrIDxwYXZlbEBzdXNlLmN6PgorCitJZiB5b3Ugd2FudCB0byB0cmljayBzd3N1c3AvUzMgaW50byB3b3JraW5nLCB5b3UgbWlnaHQgd2FudCB0byB0cnk6CisKKyogZ28gd2l0aCBtaW5pbWFsIGNvbmZpZywgdHVybiBvZmYgZHJpdmVycyBsaWtlIFVTQiwgQUdQIHlvdSBkb24ndAorICByZWFsbHkgbmVlZAorCisqIHR1cm4gb2ZmIEFQSUMgYW5kIHByZWVtcHQKKworKiB1c2UgZXh0Mi4gQXQgbGVhc3QgaXQgaGFzIHdvcmtpbmcgZnNjay4gW0lmIHNvbWV0aGluZyBzZWVtZXMgdG8gZ28KKyAgd3JvbmcsIGZvcmNlIGZzY2sgd2hlbiB5b3UgaGF2ZSBhIGNoYW5jZV0KKworKiB0dXJuIG9mZiBtb2R1bGVzCisKKyogdXNlIHZnYSB0ZXh0IGNvbnNvbGUsIHNodXQgZG93biBYLiBbSWYgeW91IHJlYWxseSB3YW50IFgsIHlvdSBtaWdodAorICB3YW50IHRvIHRyeSB2ZXNhZmIgbGF0ZXJdCisKKyogdHJ5IHJ1bm5pbmcgYXMgZmV3IHByb2Nlc3NlcyBhcyBwb3NzaWJsZSwgcHJlZmVyYWJseSBnbyB0byBzaW5nbGUKKyAgdXNlciBtb2RlLgorCisqIGR1ZSB0byB2aWRlbyBpc3N1ZXMsIHN3c3VzcCBzaG91bGQgYmUgZWFzaWVyIHRvIGdldCB3b3JraW5nIHRoYW4KKyAgUzMuIFRyeSB0aGF0IGZpcnN0LgorCitXaGVuIHlvdSBtYWtlIGl0IHdvcmssIHRyeSB0byBmaW5kIG91dCB3aGF0IGV4YWN0bHkgd2FzIGl0IHRoYXQgYnJva2UKK3N1c3BlbmQsIGFuZCBwcmVmZXJhYmx5IGZpeCB0aGF0LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wb3dlci92aWRlby50eHQgYi9Eb2N1bWVudGF0aW9uL3Bvd2VyL3ZpZGVvLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Njg2OTY4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9wb3dlci92aWRlby50eHQKQEAgLTAsMCArMSwxNjkgQEAKKworCQlWaWRlbyBpc3N1ZXMgd2l0aCBTMyByZXN1bWUKKwkJfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisJCSAgMjAwMy0yMDA1LCBQYXZlbCBNYWNoZWsKKworRHVyaW5nIFMzIHJlc3VtZSwgaGFyZHdhcmUgbmVlZHMgdG8gYmUgcmVpbml0aWFsaXplZC4gRm9yIG1vc3QKK2RldmljZXMsIHRoaXMgaXMgZWFzeSwgYW5kIGtlcm5lbCBkcml2ZXIga25vd3MgaG93IHRvIGRvCitpdC4gVW5mb3J0dW5hdGVseSB0aGVyZSdzIG9uZSBleGNlcHRpb246IHZpZGVvIGNhcmQuIFRob3NlIGFyZSB1c3VhbGx5Citpbml0aWFsaXplZCBieSBCSU9TLCBhbmQga2VybmVsIGRvZXMgbm90IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIHRvCitib290IHZpZGVvIGNhcmQuIChLZXJuZWwgdXN1YWxseSBkb2VzIG5vdCBldmVuIGNvbnRhaW4gdmlkZW8gY2FyZAorZHJpdmVyIC0tIHZlc2FmYiBhbmQgdmdhY29uIGFyZSB3aWRlbHkgdXNlZCkuCisKK1RoaXMgaXMgbm90IHByb2JsZW0gZm9yIHN3c3VzcCwgYmVjYXVzZSBkdXJpbmcgc3dzdXNwIHJlc3VtZSwgQklPUyBpcworcnVuIG5vcm1hbGx5IHNvIHZpZGVvIGNhcmQgaXMgbm9ybWFsbHkgaW5pdGlhbGl6ZWQuIFMzIGhhcyBhYnNvbHV0ZWx5CitubyBjaGFuY2Ugb2Ygd29ya2luZyB3aXRoIFNNUC9IVC4gQmUgc3VyZSBpdCB0byB0dXJuIGl0IG9mZiBiZWZvcmUKK3Rlc3RpbmcgKHN3c3VzcCBzaG91bGQgd29yayBvaywgT1RPSCkuCisKK1RoZXJlIGFyZSBhIGZldyB0eXBlcyBvZiBzeXN0ZW1zIHdoZXJlIHZpZGVvIHdvcmtzIGFmdGVyIFMzIHJlc3VtZToKKworKDEpIHN5c3RlbXMgd2hlcmUgdmlkZW8gc3RhdGUgaXMgcHJlc2VydmVkIG92ZXIgUzMuCisKKygyKSBzeXN0ZW1zIHdoZXJlIGl0IGlzIHBvc3NpYmxlIHRvIGNhbGwgdGhlIHZpZGVvIEJJT1MgZHVyaW5nIFMzCisgIHJlc3VtZS4gVW5mb3J0dW5hdGVseSwgaXQgaXMgbm90IGNvcnJlY3QgdG8gY2FsbCB0aGUgdmlkZW8gQklPUyBhdAorICB0aGF0IHBvaW50LCBidXQgaXQgaGFwcGVucyB0byB3b3JrIG9uIHNvbWUgbWFjaGluZXMuIFVzZQorICBhY3BpX3NsZWVwPXMzX2Jpb3MuCisKKygzKSBzeXN0ZW1zIHRoYXQgaW5pdGlhbGl6ZSB2aWRlbyBjYXJkIGludG8gdmdhIHRleHQgbW9kZSBhbmQgd2hlcmUKKyAgdGhlIEJJT1Mgd29ya3Mgd2VsbCBlbm91Z2ggdG8gYmUgYWJsZSB0byBzZXQgdmlkZW8gbW9kZS4gVXNlCisgIGFjcGlfc2xlZXA9czNfbW9kZSBvbiB0aGVzZS4KKworKDQpIG9uIHNvbWUgc3lzdGVtcyBzM19iaW9zIGtpY2tzIHZpZGVvIGludG8gdGV4dCBtb2RlLCBhbmQKKyAgYWNwaV9zbGVlcD1zM19iaW9zLHMzX21vZGUgaXMgbmVlZGVkLgorCisoNSkgcmFkZW9uIHN5c3RlbXMsIHdoZXJlIFggY2FuIHNvZnQtYm9vdCB5b3VyIHZpZGVvIGNhcmQuIFlvdSdsbCBuZWVkCisgIG5ldyBlbm91Z2ggWCwgYW5kIHBsYWluIHRleHQgY29uc29sZSAobm8gdmVzYWZiIG9yIHJhZGVvbmZiKSwgc2VlCisgIGh0dHA6Ly93d3cuZG9lc2kuZ214aG9tZS5kZS9saW51eC90bTgwMHMzL3MzLmh0bWwuIEFjdHVhbGx5IHlvdQorICBzaG91bGQgcHJvYmFibHkgdXNlIHZiZXRvb2wgKDYpIGluc3RlYWQuCisKKyg2KSBvdGhlciByYWRlb24gc3lzdGVtcywgd2hlcmUgdmJldG9vbCBpcyBlbm91Z2ggdG8gYnJpbmcgc3lzdGVtIGJhY2sKKyAgdG8gbGlmZS4gSXQgbmVlZHMgdGV4dCBjb25zb2xlIHRvIGJlIHdvcmtpbmcuIERvIHZiZXRvb2wgdmJlc3RhdGUKKyAgc2F2ZSA+IC90bXAvZGVsbWU7IGVjaG8gMyA+IC9wcm9jL2FjcGkvc2xlZXA7IHZiZXRvb2wgcG9zdDsgdmJldG9vbAorICB2YmVzdGF0ZSByZXN0b3JlIDwgL3RtcC9kZWxtZTsgc2V0Zm9udCA8d2hhdGV2ZXI+LCBhbmQgeW91ciB2aWRlbworICBzaG91bGQgd29yay4KKworKDcpIG9uIHNvbWUgc3lzdGVtcywgaXQgaXMgcG9zc2libGUgdG8gYm9vdCBtb3N0IG9mIGtlcm5lbCwgYW5kIHRoZW4KKyAgUE9TVGluZyBiaW9zIHdvcmtzLiBPbGUgUm9obmUgaGFzIHBhdGNoIHRvIGRvIGp1c3QgdGhhdCBhdAorICBodHRwOi8vZGV2LmdlbnRvby5vcmcvfm1hcmluZWFtL3BhdGNoLXJhZGVvbmZiLTIuNi4xMS1yYzItbW0yLgorCitOb3csIGlmIHlvdSBwYXNzIGFjcGlfc2xlZXA9c29tZXRoaW5nLCBhbmQgaXQgZG9lcyBub3Qgd29yayB3aXRoIHlvdXIKK2Jpb3MsIHlvdSdsbCBnZXQgYSBoYXJkIGNyYXNoIGR1cmluZyByZXN1bWUuIEJlIGNhcmVmdWwuIEFsc28gaXQgaXMKK3NhZmVzdCB0byBkbyB5b3VyIGV4cGVyaW1lbnRzIHdpdGggcGxhaW4gb2xkIFZHQSBjb25zb2xlLiBUaGUgdmVzYWZiCithbmQgcmFkZW9uZmIgKGV0YykgZHJpdmVycyBoYXZlIGEgdGVuZGVuY3kgdG8gY3Jhc2ggdGhlIG1hY2hpbmUgZHVyaW5nCityZXN1bWUuCisKK1lvdSBtYXkgaGF2ZSBhIHN5c3RlbSB3aGVyZSBub25lIG9mIGFib3ZlIHdvcmtzLiBBdCB0aGF0IHBvaW50IHlvdQorZWl0aGVyIGludmVudCBhbm90aGVyIHVnbHkgaGFjayB0aGF0IHdvcmtzLCBvciB3cml0ZSBwcm9wZXIgZHJpdmVyIGZvcgoreW91ciB2aWRlbyBjYXJkIChnb29kIGx1Y2sgZ2V0dGluZyBkb2NzIDotKCkuIE1heWJlIHN1c3BlbmRpbmcgZnJvbSBYCisocHJvcGVyIFgsIGtub3dpbmcgeW91ciBoYXJkd2FyZSwgbm90IFhGNjhfRkJjb24pIG1pZ2h0IGhhdmUgYmV0dGVyCitjaGFuY2Ugb2Ygd29ya2luZy4KKworVGFibGUgb2Yga25vd24gd29ya2luZyBzeXN0ZW1zOgorCitNb2RlbCAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhY2sgKG9yICJob3cgdG8gZG8gaXQiKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBY2VyIEFzcGlyZSAxNDA2TEMJCW9sZSdzIGxhdGUgQklPUyBpbml0ICg3KSwgdHVybiBvZmYgRFJJCitBY2VyIFRNIDI0MkZYCQkJdmJldG9vbCAoNikKK0FjZXIgVE0gQzMwMCAgICAgICAgICAgICAgICAgICAgdmdhPW5vcm1hbCAob25seSBzdXNwZW5kIG9uIGNvbnNvbGUsIG5vdCBpbiBYKSwgdmJldG9vbCAoNikKK0FjZXIgVE0gNDA1MkxDaQkJICAgICAgICBzM19iaW9zICgyKQorQWNlciBUTSA2MzZMY2kJCQlzM19iaW9zIHZnYT1ub3JtYWwgKDIpCitBY2VyIFRNIDY1MCAoUmFkZW9uIE03KQkJdmdhPW5vcm1hbCBwbHVzIGJvb3QtcmFkZW9uICg1KSBnZXRzIHRleHQgY29uc29sZSBiYWNrCitBY2VyIFRNIDY2MAkJCT8/PyAoKikKK0FjZXIgVE0gODAwCQkJdmdhPW5vcm1hbCwgWCBwYXRjaGVzLCBzZWUgd2VicGFnZSAoNSkgb3IgdmJldG9vbCAoNikKK0FjZXIgVE0gODAzCQkJdmdhPW5vcm1hbCwgWCBwYXRjaGVzLCBzZWUgd2VicGFnZSAoNSkgb3IgdmJldG9vbCAoNikKK0FjZXIgVE0gODAzTENpCQkJdmdhPW5vcm1hbCwgdmJldG9vbCAoNikKK0FyaW1hIFc3MzBhCQkJdmJldG9vbCBuZWVkZWQgKDYpCitBc3VzIEwyNDAwRCAgICAgICAgICAgICAgICAgICAgIHMzX21vZGUgKDMpKCoqKikgKFMxIGFsc28gd29ya3MgT0spCitBc3VzIEwzODAwQyAoUmFkZW9uIE03KQkJczNfYmlvcyAoMikgKFMxIGFsc28gd29ya3MgT0spCitBc3VzIE02TkUJCQk/Pz8gKCopCitBdGhsb242NCBkZXNrdG9wIHByb3RvdHlwZQlzM19iaW9zICgyKQorQ29tcGFsIENMLTUwCQkJPz8/ICgqKQorQ29tcGFxIEFybWFkYSBFNTAwIC0gUDMtNzAwICAgICBub25lICgxKSAoUzEgYWxzbyB3b3JrcyBPSykKK0NvbXBhcSBFdm8gTjYyMGMJCXZnYT1ub3JtYWwsIHMzX2Jpb3MgKDIpCitEZWxsIDYwMG0sIEFUSSBSMjUwIExmCQlub25lICgxKSwgYnV0IG5lZWRzIHhvcmcteDExLTYuOC4xLjkwMi0xCitEZWxsIEQ2MDAsIEFUSSBSVjI1MCAgICAgICAgICAgIHZnYT1ub3JtYWwgYW5kIFgsIG9yIHRyeSB2YmVzdGF0ZSAoNikKK0RlbGwgSW5zcGlyb24gNDAwMAkJPz8/ICgqKQorRGVsbCBJbnNwaXJvbiA1MDBtCQk/Pz8gKCopCitEZWxsIEluc3Bpcm9uIDYwMG0JCT8/PyAoKikKK0RlbGwgSW5zcGlyb24gODIwMAkJPz8/ICgqKQorRGVsbCBJbnNwaXJvbiA4NTAwCQk/Pz8gKCopCitEZWxsIEluc3Bpcm9uIDg2MDAJCT8/PyAoKikKK2VNYWNoaW5lcyBhdGhsb242NCBtYWNoaW5lcwl2YmV0b29sIG5lZWRlZCAoNikgKHNvbWVvbmUgcGxlYXNlIGdldCBtZSBtb2RlbCAjcykKK0hQIE5DNjAwMAkJCXMzX2Jpb3MsIG1heSBub3QgdXNlIHJhZGVvbmZiICgyKTsgb3IgdmJldG9vbCAoNikKK0hQIE5YNzAwMAkJCT8/PyAoKikKK0hQIFBhdmlsaW9uIFpENzAwMAkJdmJldG9vbCBwb3N0IG5lZWRlZCwgbmVlZCBvcGVuLXNvdXJjZSBudiBkcml2ZXIgZm9yIFgKK0hQIE9tbmlib29rIFhFMwlhdGhsb24gdmVyc2lvbglub25lICgxKQorSFAgT21uaWJvb2sgWEUzR0MJCW5vbmUgKDEpLCB2aWRlbyBpcyBTMyBTYXZhZ2UvSVgtTVYKK0lCTSBUUCBUMjAsIG1vZGVsIDI2NDctNDRHCW5vbmUgKDEpLCB2aWRlbyBpcyBTMyBJbmMuIDg2QzI3MC0yOTQgU2F2YWdlL0lYLU1WLCB2ZXNhZmIgZ2V0cyAiaW50ZXJlc3RpbmciIGJ1dCBYIHdvcmsuCitJQk0gVFAgQTMxIC8gVHlwZSAyNjUyLU01RyAgICAgIHMzX21vZGUgKDMpIFt3b3JrcyBvayB3aXRoIEJJT1MgMS4wNCAyMDAyLTA4LTIzLCBidXQgbm90IGF0IGFsbCB3aXRoIEJJT1MgMS4xMSAyMDA0LTExLTA1IDotKF0KK0lCTSBUUCBSMzIgLyBUeXBlIDI2NTgtTU1HICAgICAgbm9uZSAoMSkKK0lCTSBUUCBSNDAgMjcyMkIzRwkJPz8/ICgqKQorSUJNIFRQIFI1MHAgLyBUeXBlIDE4MzItMjJVICAgICBzM19iaW9zICgyKQorSUJNIFRQIFI1MQkJCT8/PyAoKikKK0lCTSBUUCBUMzAJMjM2NjgxQQkJPz8/ICgqKQorSUJNIFRQIFQ0MCAvIFR5cGUgMjM3My1NVTQgICAgICBub25lICgxKQorSUJNIFRQIFQ0MHAJCQlub25lICgxKQorSUJNIFRQIFI0MHAJCQlzM19iaW9zICgyKQorSUJNIFRQIFQ0MXAJCQlzM19iaW9zICgyKSwgc3dpdGNoIHRvIFggYWZ0ZXIgcmVzdW1lCitJQk0gVFAgVDQyCQkJPz8/ICgqKQorSUJNIFRoaW5rUGFkIFQ0MnAgKDIzNzMtR1RHKQlzM19iaW9zICgyKQorSUJNIFRQIFgyMAkJCT8/PyAoKikKK0lCTSBUUCBYMzAJCQk/Pz8gKCopCitJQk0gVFAgWDMxIC8gVHlwZSAyNjcyLVhYSCAgICAgIG5vbmUgKDEpLCB1c2UgcmFkZW9udG9vbCAoaHR0cDovL2ZkZC5jb20vc29mdHdhcmUvcmFkZW9uLykgdG8gdHVybiBvZmYgYmFja2xpZ2h0LgorSUJNIFRoaW5rcGFkIFg0MCBUeXBlIDIzNzEtN0pHICBzM19iaW9zLHMzX21vZGUgKDQpCitNZWRpb24gTUQ0MjIwCQkJPz8/ICgqKQorU2Ftc3VuZyBQMzUJCQl2YmV0b29sIG5lZWRlZCAoNikKK1NoYXJwIFBDLUFSMTAgKEFUSSByYWdlKQlub25lICgxKQorU29ueSBWYWlvIFBDRy1GNDAzCQk/Pz8gKCopCitTb255IFZhaW8gUENHLU41MDVTTgkJPz8/ICgqKQorU29ueSBWYWlvIHZnbi1zMjYwCQlYIG9yIGJvb3QtcmFkZW9uIGNhbiBpbml0IGl0ICg1KQorVG9zaGliYSBMaWJyZXR0byBMNQkJbm9uZSAoMSkKK1Rvc2hpYmEgU2F0ZWxsaXRlIDQwMzBDRFQJczNfbW9kZSAoMykKK1Rvc2hpYmEgU2F0ZWxsaXRlIDQwODBYQ0RUICAgICAgczNfbW9kZSAoMykKK1Rvc2hpYmEgU2F0ZWxsaXRlIDQwOTBYQ0RUICAgICAgPz8/ICgqKQorVG9zaGliYSBTYXRlbGxpdGUgUDEwLTU1NCAgICAgICBzM19iaW9zLHMzX21vZGUgKDQpKCoqKiopCitVbml3aWxsIDI0NElJTwkJCT8/PyAoKikKKworCisoKikgZnJvbSBodHRwOi8vd3d3LnVidW50dWxpbnV4Lm9yZy93aWtpL0hvYXJ5UE1SZXN1bHRzLCBub3Qgc3VyZQorICAgIHdoaWNoIG9wdGlvbnMgdG8gdXNlLiBJZiB5b3Uga25vdywgcGxlYXNlIHRlbGwgbWUuCisKKygqKiopIFRvIGJlIHRlc3RlZCB3aXRoIGEgbmV3ZXIga2VybmVsLgorCisoKioqKikgTm90IHdpdGggU01QIGtlcm5lbCwgVVAgb25seS4KKworVkJFdG9vbCBkZXRhaWxzCit+fn5+fn5+fn5+fn5+fn4KKyh3aXRoIHRoYW5rcyB0byBDYXJsLURhbmllbCBIYWlsZmluZ2VyKQorCitGaXJzdCwgYm9vdCBpbnRvIFggYW5kIHJ1biB0aGUgZm9sbG93aW5nIHNjcmlwdCBPTkNFOgorIyEvYmluL2Jhc2gKK3N0YXRlZGlyPS9yb290L3MzL3N0YXRlCitta2RpciAtcCAkc3RhdGVkaXIKK2NodnQgMgorc2xlZXAgMQordmJldG9vbCB2YmVzdGF0ZSBzYXZlID4kc3RhdGVkaXIvdmJlCisKKworVG8gc3VzcGVuZCBhbmQgcmVzdW1lIHByb3Blcmx5LCBjYWxsIHRoZSBmb2xsb3dpbmcgc2NyaXB0IGFzIHJvb3Q6CisjIS9iaW4vYmFzaAorc3RhdGVkaXI9L3Jvb3QvczMvc3RhdGUKK2N1cmNvbnM9YGZnY29uc29sZWAKK2Z1c2VyIC9kZXYvdHR5JGN1cmNvbnMgMj4vZGV2L251bGx8eGFyZ3MgcHMgLW8gY29tbT0gLXB8Z3JlcCAtcSBYICYmIGNodnQgMgorY2F0IC9kZXYvdmNzYSA+JHN0YXRlZGlyL3Zjc2EKK3N5bmMKK2VjaG8gMyA+L3Byb2MvYWNwaS9zbGVlcAorc3luYwordmJldG9vbCBwb3N0Cit2YmV0b29sIHZiZXN0YXRlIHJlc3RvcmUgPCRzdGF0ZWRpci92YmUKK2NhdCAkc3RhdGVkaXIvdmNzYSA+L2Rldi92Y3NhCityY2tiZCByZXN0YXJ0CitjaHZ0ICRbY3VyY29ucyU2KzFdCitjaHZ0ICRjdXJjb25zCisKKworVW5sZXNzIHlvdSBjaGFuZ2UgeW91ciBncmFwaGljcyBjYXJkIG9yIG90aGVyIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24sCit0aGUgc3RhdGUgb25jZSBzYXZlZCB3aWxsIGJlIE9LIGZvciBldmVyeSByZXN1bWUgYWZ0ZXJ3YXJkcy4KK05PVEU6IFRoZSAicmNrYmQgcmVzdGFydCIgY29tbWFuZCBtYXkgYmUgZGlmZmVyZW50IGZvciB5b3VyCitkaXN0cmlidXRpb24uIFNpbXBseSByZXBsYWNlIGl0IHdpdGggdGhlIGNvbW1hbmQgeW91IHdvdWxkIHVzZSB0bworc2V0IHRoZSBmb250cyBvbiBzY3JlZW4uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Bvd2VyL3ZpZGVvX2V4dGVuc2lvbi50eHQgYi9Eb2N1bWVudGF0aW9uL3Bvd2VyL3ZpZGVvX2V4dGVuc2lvbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGUzM2Q3YzgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Bvd2VyL3ZpZGVvX2V4dGVuc2lvbi50eHQKQEAgLTAsMCArMSwzNCBAQAorVGhpcyBkcml2ZXIgaW1wbGVtZW50IHRoZSBBQ1BJIEV4dGVuc2lvbnMgRm9yIERpc3BsYXkgQWRhcHRlcnMKK2ZvciBpbnRlZ3JhdGVkIGdyYXBoaWNzIGRldmljZXMgb24gbW90aGVyYm9hcmQsIGFzIHNwZWNpZmllZCBpbgorQUNQSSAyLjAgU3BlY2lmaWNhdGlvbiwgQXBwZW5kaXggQiwgYWxsb3dpbmcgdG8gcGVyZm9ybSBzb21lIGJhc2ljCitjb250cm9sIGxpa2UgZGVmaW5pbmcgdGhlIHZpZGVvIFBPU1QgZGV2aWNlLCByZXRyaWV2aW5nIEVESUQgaW5mb3JtYXRpb24KK29yIHRvIHNldHVwIGEgdmlkZW8gb3V0cHV0LCBldGMuICBOb3RlIHRoYXQgdGhpcyBpcyBhbiByZWYuIGltcGxlbWVudGF0aW9uIG9ubHkuCitJdCBtYXkgb3IgbWF5IG5vdCB3b3JrIGZvciB5b3VyIGludGVncmF0ZWQgdmlkZW8gZGV2aWNlLgorCitJbnRlcmZhY2VzIGV4cG9zZWQgdG8gdXNlcmxhbmQgdGhyb3VnaCAvcHJvYy9hY3BpL3ZpZGVvOgorCitWR0EvaW5mbyA6IGRpc3BsYXkgdGhlIHN1cHBvcnRlZCB2aWRlbyBidXMgZGV2aWNlIGNhcGFiaWxpdHkgbGlrZSAsVmlkZW8gUk9NLCBDUlQvTENEL1RWLgorVkdBL1JPTSA6ICBVc2VkIHRvIGdldCBhIGNvcHkgb2YgdGhlIGRpc3BsYXkgZGV2aWNlcycgUk9NIGRhdGEgKHVwIHRvIDRrKS4KK1ZHQS9QT1NUX2luZm8gOiBVc2VkIHRvIGRldGVybWluZSB3aGF0IG9wdGlvbnMgYXJlIGltcGxlbWVudGVkLgorVkdBL1BPU1QgOiBVc2VkIHRvIGdldC9zZXQgUE9TVCBkZXZpY2UuCitWR0EvRE9TIDogVXNlZCB0byBnZXQvc2V0IG93bmVyc2hpcCBvZiBvdXRwdXQgc3dpdGNoaW5nOgorCVBsZWFzZSByZWZlciBBQ1BJIHNwZWMgQi40LjEgX0RPUworVkdBL0NSVCA6IENSVCBvdXRwdXQKK1ZHQS9MQ0QgOiBMQ0Qgb3V0cHV0CitWR0EvVFYgOiBUViBvdXRwdXQgCitWR0EvKi9icmlnaHRuZXNzIDogVXNlZCB0byBnZXQvc2V0IGJyaWdodG5lc3Mgb2Ygb3V0cHV0IGRldmljZQorCitOb3RpZnkgZXZlbnQgdGhyb3VnaCAvcHJvYy9hY3BpL2V2ZW50OgorCisjZGVmaW5lIEFDUElfVklERU9fTk9USUZZX1NXSVRDSCAgICAgICAgMHg4MAorI2RlZmluZSBBQ1BJX1ZJREVPX05PVElGWV9QUk9CRSAgICAgICAgIDB4ODEKKyNkZWZpbmUgQUNQSV9WSURFT19OT1RJRllfQ1lDTEUgICAgICAgICAweDgyCisjZGVmaW5lIEFDUElfVklERU9fTk9USUZZX05FWFRfT1VUUFVUICAgMHg4MworI2RlZmluZSBBQ1BJX1ZJREVPX05PVElGWV9QUkVWX09VVFBVVCAgIDB4ODQKKworI2RlZmluZSBBQ1BJX1ZJREVPX05PVElGWV9DWUNMRV9CUklHSFRORVNTICAgICAgMHg4MgorI2RlZmluZSBBQ1BJX1ZJREVPX05PVElGWV9JTkNfQlJJR0hUTkVTUyAgICAgICAgMHg4MworI2RlZmluZSBBQ1BJX1ZJREVPX05PVElGWV9ERUNfQlJJR0hUTkVTUyAgICAgICAgMHg4NAorI2RlZmluZSBBQ1BJX1ZJREVPX05PVElGWV9aRVJPX0JSSUdIVE5FU1MgICAgICAgMHg4NQorI2RlZmluZSBBQ1BJX1ZJREVPX05PVElGWV9ESVNQTEFZX09GRiAgICAgICAgICAgMHg4NgorCg==