ZGlmZiAtLWdpdCBhL3NyYy9hc2NpaS5oIGIvc3JjL2FzY2lpLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGEzNDRlZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9hc2NpaS5oCkBAIC0wLDAgKzEsMjAxIEBACisvKiB2aTpzZXQgdHM9OCBzdHM9NCBzdz00OgorICoKKyAqIFZJTSAtIFZpIElNcHJvdmVkCWJ5IEJyYW0gTW9vbGVuYWFyCisgKgorICogRG8gIjpoZWxwIHVnYW5kYSIgIGluIFZpbSB0byByZWFkIGNvcHlpbmcgYW5kIHVzYWdlIGNvbmRpdGlvbnMuCisgKiBEbyAiOmhlbHAgY3JlZGl0cyIgaW4gVmltIHRvIHNlZSBhIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZC4KKyAqLworCisvKgorICogRGVmaW5pdGlvbnMgb2YgdmFyaW91cyBjb21tb24gY29udHJvbCBjaGFyYWN0ZXJzLgorICogRm9yIEVCQ0RJQyB3ZSBoYXZlIHRvIHVzZSBkaWZmZXJlbnQgdmFsdWVzLgorICovCisKKyNpZm5kZWYgRUJDRElDCisKKy8qIElGX0VCKEFTQ0lJX2NvbnN0YW50LCBFQkNESUNfY29uc3RhbnQpICovCisjZGVmaW5lIElGX0VCKGEsIGIpCWEKKworI2RlZmluZSBDaGFyT3JkKHgpCSgoeCkgPCAnYScgPyAoeCkgLSAnQScgOiAoeCkgLSAnYScpCisjZGVmaW5lIENoYXJPcmRMb3coeCkJKCh4KSAtICdhJykKKyNkZWZpbmUgQ2hhck9yZFVwKHgpCSgoeCkgLSAnQScpCisjZGVmaW5lIFJPVDEzKGMsIGEpCSgoKCgoYykgLSAoYSkpICsgMTMpICUgMjYpICsgKGEpKQorCisjZGVmaW5lIE5VTAkJJ1wwMDAnCisjZGVmaW5lIEJFTEwJCSdcMDA3JworI2RlZmluZSBCUwkJJ1wwMTAnCisjZGVmaW5lIFRBQgkJJ1wwMTEnCisjZGVmaW5lIE5MCQknXDAxMicKKyNkZWZpbmUgTkxfU1RSCQkoY2hhcl91ICopIlwwMTIiCisjZGVmaW5lIEZGCQknXDAxNCcKKyNkZWZpbmUgQ0FSCQknXDAxNScJLyogQ1IgaXMgdXNlZCBieSBNYWMgT1MgWCAqLworI2RlZmluZSBFU0MJCSdcMDMzJworI2RlZmluZSBFU0NfU1RSCQkoY2hhcl91ICopIlwwMzMiCisjZGVmaW5lIEVTQ19TVFJfbmMJIlwwMzMiCisjZGVmaW5lIERFTAkJMHg3ZgorI2RlZmluZSBERUxfU1RSCQkoY2hhcl91ICopIlwxNzciCisjZGVmaW5lIENTSQkJMHg5YgkvKiBDb250cm9sIFNlcXVlbmNlIEludHJvZHVjZXIgKi8KKyNkZWZpbmUgQ1NJX1NUUgkJIlwyMzMiCisjZGVmaW5lIERDUwkJMHg5MAkvKiBEZXZpY2UgQ29udHJvbCBTdHJpbmcgKi8KKyNkZWZpbmUgU1RFUk0JCTB4OWMJLyogU3RyaW5nIFRlcm1pbmF0b3IgKi8KKworI2RlZmluZSBQT1VORAkJMHhBMworCisjZGVmaW5lIEN0cmxfY2hyKHgpCShUT1VQUEVSX0FTQyh4KSBeIDB4NDApIC8qICc/JyAtPiBERUwsICdAJyAtPiBeQCwgZXRjLiAqLworI2RlZmluZSBNZXRhKHgpCQkoKHgpIHwgMHg4MCkKKworI2RlZmluZSBDVFJMX0ZfU1RSCSJcMDA2IgorI2RlZmluZSBDVFJMX0hfU1RSCSJcMDEwIgorI2RlZmluZSBDVFJMX1ZfU1RSCSJcMDI2IgorI2RlZmluZSBDVFJMX1dfU1RSCSJcMDI3IgorCisjZGVmaW5lIEN0cmxfQVQJCTAgICAvKiBAICovCisjZGVmaW5lIEN0cmxfQQkJMQorI2RlZmluZSBDdHJsX0IJCTIKKyNkZWZpbmUgQ3RybF9DCQkzCisjZGVmaW5lIEN0cmxfRAkJNAorI2RlZmluZSBDdHJsX0UJCTUKKyNkZWZpbmUgQ3RybF9GCQk2CisjZGVmaW5lIEN0cmxfRwkJNworI2RlZmluZSBDdHJsX0gJCTgKKyNkZWZpbmUgQ3RybF9JCQk5CisjZGVmaW5lIEN0cmxfSgkJMTAKKyNkZWZpbmUgQ3RybF9LCQkxMQorI2RlZmluZSBDdHJsX0wJCTEyCisjZGVmaW5lIEN0cmxfTQkJMTMKKyNkZWZpbmUgQ3RybF9OCQkxNAorI2RlZmluZSBDdHJsX08JCTE1CisjZGVmaW5lIEN0cmxfUAkJMTYKKyNkZWZpbmUgQ3RybF9RCQkxNworI2RlZmluZSBDdHJsX1IJCTE4CisjZGVmaW5lIEN0cmxfUwkJMTkKKyNkZWZpbmUgQ3RybF9UCQkyMAorI2RlZmluZSBDdHJsX1UJCTIxCisjZGVmaW5lIEN0cmxfVgkJMjIKKyNkZWZpbmUgQ3RybF9XCQkyMworI2RlZmluZSBDdHJsX1gJCTI0CisjZGVmaW5lIEN0cmxfWQkJMjUKKyNkZWZpbmUgQ3RybF9aCQkyNgorI2RlZmluZSBDdHJsX0xTQgkyNyAgLyogWyBMZWZ0IFNxdWFyZSBCcmFja2V0ICovCisjZGVmaW5lIEN0cmxfQlNMCTI4ICAvKiBcIEJhY2tTTGFzaCAqLworI2RlZmluZSBDdHJsX1JTQgkyOSAgLyogXSBSaWdodCBTcXVhcmUgQnJhY2tldCAqLworI2RlZmluZSBDdHJsX0hBVAkzMCAgLyogXiAqLworI2RlZmluZSBDdHJsX18JCTMxCisKKyNlbHNlCisKKy8qIEVCQ0RJQyAqLworCisvKiBJRl9FQihBU0NJSV9jb25zdGFudCwgRUJDRElDX2NvbnN0YW50KSAqLworI2RlZmluZSBJRl9FQihhLCBiKQliCisKKy8qCisgKiBGaW5kaW5nIHRoZSBwb3NpdGlvbiBpbiB0aGUgYWxwaGFiZXQgaXMgbm90IHN0cmFpZ2h0Zm9yd2FyZCBpbiBFQkNESUMuCisgKiBUaGVyZSBhcmUgZ2FwcyBpbiB0aGUgY29kZSB0YWJsZS4KKyAqICdhJyArIDEgPT0gJ2InLCBidXQ6ICdpJyArIDcgPT0gJ2onIGFuZCAncicgKyA4ID09ICdzJworICovCisjZGVmaW5lIENoYXJPcmRfXyhjKSAoKGMpIDwgKCdqJyAtICdhJykgPyAoYykgOiAoKGMpIDwgKCdzJyAtICdhJykgPyAoYykgLSA3IDogKGMpIC0gNyAtIDgpKQorI2RlZmluZSBDaGFyT3JkTG93KHgpIChDaGFyT3JkX18oKHgpIC0gJ2EnKSkKKyNkZWZpbmUgQ2hhck9yZFVwKHgpIChDaGFyT3JkX18oKHgpIC0gJ0EnKSkKKyNkZWZpbmUgQ2hhck9yZCh4KSAoaXN1cHBlcih4KSA/IENoYXJPcmRVcCh4KSA6IENoYXJPcmRMb3coeCkpCisKKyNkZWZpbmUgRUJDRElDX0NIQVJfQUREXyh4KSAoKHgpIDwgMD8nYSc6KHgpPjI1Pyd6JzoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiW3hdKQorI2RlZmluZSBFQkNESUNfQ0hBUl9BREQoYyxzKSAoaXN1cHBlcihjKSA/IHRvdXBwZXIoRUJDRElDX0NIQVJfQUREXyhDaGFyT3JkVXAoYykrKHMpKSkgOiBFQkNESUNfQ0hBUl9BRERfKENoYXJPcmRMb3coYykrKHMpKSkKKworI2RlZmluZSBSMTNfKGMpICgiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiWygoYykgKyAxMykgJSAyNl0pCisjZGVmaW5lIFJPVDEzKGMsIGEpICAoaXN1cHBlcihjKSA/IHRvdXBwZXIoUjEzXyhDaGFyT3JkVXAoYykpKSA6IFIxM18oQ2hhck9yZExvdyhjKSkpCisKKyNkZWZpbmUgTlVMCQknXDAwMCcKKyNkZWZpbmUgQkVMTAkJJ1x4MmYnCisjZGVmaW5lIEJTCQknXHgxNicKKyNkZWZpbmUgVEFCCQknXHgwNScKKyNkZWZpbmUgTkwJCSdceDE1JworI2RlZmluZSBOTF9TVFIJCShjaGFyX3UgKikiXHgxNSIKKyNkZWZpbmUgRkYJCSdceDBDJworI2RlZmluZSBDQVIJCSdceDBEJworI2RlZmluZSBFU0MJCSdceDI3JworI2RlZmluZSBFU0NfU1RSCQkoY2hhcl91ICopIlx4MjciCisjZGVmaW5lIEVTQ19TVFJfbmMJIlx4MjciCisjZGVmaW5lIERFTAkJMHgwNworI2RlZmluZSBERUxfU1RSCQkoY2hhcl91ICopIlwwMDciCisvKiBUT0RPOiBFQkNESUMgQ29kZSBwYWdlIGRlcGVuZGVudCAoaGVyZSAxMDQ3KSAqLworI2RlZmluZSBDU0kJCTB4OWIJLyogQ29udHJvbCBTZXF1ZW5jZSBJbnRyb2R1Y2VyICovCisjZGVmaW5lIENTSV9TVFIJCSJcMjMzIgorI2RlZmluZSBEQ1MJCTB4OTAJLyogRGV2aWNlIENvbnRyb2wgU3RyaW5nICovCisjZGVmaW5lIFNURVJNCQkweDljCS8qIFN0cmluZyBUZXJtaW5hdG9yICovCisKKyNkZWZpbmUgUE9VTkQJCSejJworCisjZGVmaW5lIENUUkxfRl9TVFIJIlwwNTYiCisjZGVmaW5lIENUUkxfSF9TVFIJIlwwMjYiCisjZGVmaW5lIENUUkxfVl9TVFIJIlwwNjIiCisjZGVmaW5lIENUUkxfV19TVFIJIlwwNDYiCisKKyNkZWZpbmUgQ3RybF9BVAkJMHgwMCAgIC8qIEAgKi8KKyNkZWZpbmUgQ3RybF9BCQkweDAxCisjZGVmaW5lIEN0cmxfQgkJMHgwMgorI2RlZmluZSBDdHJsX0MJCTB4MDMKKyNkZWZpbmUgQ3RybF9ECQkweDM3CisjZGVmaW5lIEN0cmxfRQkJMHgyRAorI2RlZmluZSBDdHJsX0YJCTB4MkUKKyNkZWZpbmUgQ3RybF9HCQkweDJGCisjZGVmaW5lIEN0cmxfSAkJMHgxNgorI2RlZmluZSBDdHJsX0kJCTB4MDUKKyNkZWZpbmUgQ3RybF9KCQkweDE1CisjZGVmaW5lIEN0cmxfSwkJMHgwQgorI2RlZmluZSBDdHJsX0wJCTB4MEMKKyNkZWZpbmUgQ3RybF9NCQkweDBECisjZGVmaW5lIEN0cmxfTgkJMHgwRQorI2RlZmluZSBDdHJsX08JCTB4MEYKKyNkZWZpbmUgQ3RybF9QCQkweDEwCisjZGVmaW5lIEN0cmxfUQkJMHgxMQorI2RlZmluZSBDdHJsX1IJCTB4MTIKKyNkZWZpbmUgQ3RybF9TCQkweDEzCisjZGVmaW5lIEN0cmxfVAkJMHgzQworI2RlZmluZSBDdHJsX1UJCTB4M0QKKyNkZWZpbmUgQ3RybF9WCQkweDMyCisjZGVmaW5lIEN0cmxfVwkJMHgyNgorI2RlZmluZSBDdHJsX1gJCTB4MTgKKyNkZWZpbmUgQ3RybF9ZCQkweDE5CisjZGVmaW5lIEN0cmxfWgkJMHgzRgorI2RlZmluZSBDdHJsX0xTQgkweDI3ICAvKiBbIExlZnQgU3F1YXJlIEJyYWNrZXQgKi8KKyNkZWZpbmUgQ3RybF9SU0IJMHgxRCAgLyogXSBSaWdodCBTcXVhcmUgQnJhY2tldCAqLworI2RlZmluZSBDdHJsX0JTTAkweDFDICAvKiBcIEJhY2tTTGFzaCAqLworI2RlZmluZSBDdHJsX0hBVAkweDFFICAvKiBeICovCisjZGVmaW5lIEN0cmxfXwkJMHgxRgorCisjZGVmaW5lIEN0cmxfY2hyKHgpCShDdHJsVGFibGVbKHgpXSkKK2V4dGVybiBjaGFyIEN0cmxUYWJsZVtdOworCisjZGVmaW5lIEN0cmxDaGFyKHgpCSgoeCA8ICcgJykgPyBDdHJsQ2hhclRhYmxlWyh4KV0gOiAwKQorZXh0ZXJuIGNoYXIgQ3RybENoYXJUYWJsZVtdOworCisjZGVmaW5lIE1ldGFDaGFyKHgpCSgoeCA8ICcgJykgPyBNZXRhQ2hhclRhYmxlWyh4KV0gOiAwKQorZXh0ZXJuIGNoYXIgTWV0YUNoYXJUYWJsZVtdOworCisjZW5kaWYgLyogZGVmaW5lZCBFQkNESUMgKi8KKworLyoKKyAqIENoYXJhY3RlciB0aGF0IHNlcGFyYXRlcyBkaXIgbmFtZXMgaW4gYSBwYXRoLgorICogRm9yIE1TLURPUywgV0lOMzIgYW5kIE9TLzIgd2UgdXNlIGEgYmFja3NsYXNoLiAgQSBzbGFzaCBtb3N0bHkgd29ya3MKKyAqIGZpbmUsIGJ1dCB0aGVyZSBhcmUgcGxhY2VzIHdoZXJlIGl0IGRvZXNuJ3QgKGUuZy4gaW4gYSBjb21tYW5kIG5hbWUpLgorICogRm9yIE1hY2ludG9zaCB3ZSB1c2UgYSBjb2xvbi4KKyAqIEZvciBBY29ybiB3ZSB1c2UgYSBkb3QuCisgKi8KKyNpZmRlZiBCQUNLU0xBU0hfSU5fRklMRU5BTUUKKyMgZGVmaW5lIFBBVEhTRVAJcHNlcGMKKyMgZGVmaW5lIFBBVEhTRVBTVFIJcHNlcHMKKyNlbHNlCisjIGlmZGVmIENPTE9OX0FTX1BBVEhTRVAKKyMgIGRlZmluZSBQQVRIU0VQCSc6JworIyAgZGVmaW5lIFBBVEhTRVBTVFIJIjoiCisjIGVsc2UKKyMgIGlmZGVmIFJJU0NPUworIyAgIGRlZmluZSBQQVRIU0VQCScuJworIyAgIGRlZmluZSBQQVRIU0VQU1RSCSIuIgorIyAgZWxzZQorIyAgIGRlZmluZSBQQVRIU0VQCScvJworIyAgIGRlZmluZSBQQVRIU0VQU1RSCSIvIgorIyAgZW5kaWYKKyMgZW5kaWYKKyNlbmRpZgo=