ZGlmZiAtLWdpdCBhL2NyeXB0by9LY29uZmlnIGIvY3J5cHRvL0tjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTM2NzU0ZgotLS0gL2Rldi9udWxsCisrKyBiL2NyeXB0by9LY29uZmlnCkBAIC0wLDAgKzEsMjkyIEBACisjCisjIENyeXB0b2dyYXBoaWMgQVBJIENvbmZpZ3VyYXRpb24KKyMKKworbWVudSAiQ3J5cHRvZ3JhcGhpYyBvcHRpb25zIgorCitjb25maWcgQ1JZUFRPCisJYm9vbCAiQ3J5cHRvZ3JhcGhpYyBBUEkiCisJaGVscAorCSAgVGhpcyBvcHRpb24gcHJvdmlkZXMgdGhlIGNvcmUgQ3J5cHRvZ3JhcGhpYyBBUEkuCisKK2NvbmZpZyBDUllQVE9fSE1BQworCWJvb2wgIkhNQUMgc3VwcG9ydCIKKwlkZXBlbmRzIG9uIENSWVBUTworCWhlbHAKKwkgIEhNQUM6IEtleWVkLUhhc2hpbmcgZm9yIE1lc3NhZ2UgQXV0aGVudGljYXRpb24gKFJGQzIxMDQpLgorCSAgVGhpcyBpcyByZXF1aXJlZCBmb3IgSVBTZWMuCisKK2NvbmZpZyBDUllQVE9fTlVMTAorCXRyaXN0YXRlICJOdWxsIGFsZ29yaXRobXMiCisJZGVwZW5kcyBvbiBDUllQVE8KKwloZWxwCisJICBUaGVzZSBhcmUgJ051bGwnIGFsZ29yaXRobXMsIHVzZWQgYnkgSVBzZWMsIHdoaWNoIGRvIG5vdGhpbmcuCisKK2NvbmZpZyBDUllQVE9fTUQ0CisJdHJpc3RhdGUgIk1ENCBkaWdlc3QgYWxnb3JpdGhtIgorCWRlcGVuZHMgb24gQ1JZUFRPCisJaGVscAorCSAgTUQ0IG1lc3NhZ2UgZGlnZXN0IGFsZ29yaXRobSAoUkZDMTMyMCkuCisKK2NvbmZpZyBDUllQVE9fTUQ1CisJdHJpc3RhdGUgIk1ENSBkaWdlc3QgYWxnb3JpdGhtIgorCWRlcGVuZHMgb24gQ1JZUFRPCisJaGVscAorCSAgTUQ1IG1lc3NhZ2UgZGlnZXN0IGFsZ29yaXRobSAoUkZDMTMyMSkuCisKK2NvbmZpZyBDUllQVE9fU0hBMQorCXRyaXN0YXRlICJTSEExIGRpZ2VzdCBhbGdvcml0aG0iCisJZGVwZW5kcyBvbiBDUllQVE8KKwloZWxwCisJICBTSEEtMSBzZWN1cmUgaGFzaCBzdGFuZGFyZCAoRklQUyAxODAtMS9ERklQUyAxODAtMikuCisKK2NvbmZpZyBDUllQVE9fU0hBMV9aOTkwCisJdHJpc3RhdGUgIlNIQTEgZGlnZXN0IGFsZ29yaXRobSBmb3IgSUJNIHpTZXJpZXMgejk5MCIKKwlkZXBlbmRzIG9uIENSWVBUTyAmJiBBUkNIX1MzOTAKKwloZWxwCisJICBTSEEtMSBzZWN1cmUgaGFzaCBzdGFuZGFyZCAoRklQUyAxODAtMS9ERklQUyAxODAtMikuCisKK2NvbmZpZyBDUllQVE9fU0hBMjU2CisJdHJpc3RhdGUgIlNIQTI1NiBkaWdlc3QgYWxnb3JpdGhtIgorCWRlcGVuZHMgb24gQ1JZUFRPCisJaGVscAorCSAgU0hBMjU2IHNlY3VyZSBoYXNoIHN0YW5kYXJkIChERklQUyAxODAtMikuCisJICAKKwkgIFRoaXMgdmVyc2lvbiBvZiBTSEEgaW1wbGVtZW50cyBhIDI1NiBiaXQgaGFzaCB3aXRoIDEyOCBiaXRzIG9mCisJICBzZWN1cml0eSBhZ2FpbnN0IGNvbGxpc2lvbiBhdHRhY2tzLgorCitjb25maWcgQ1JZUFRPX1NIQTUxMgorCXRyaXN0YXRlICJTSEEzODQgYW5kIFNIQTUxMiBkaWdlc3QgYWxnb3JpdGhtcyIKKwlkZXBlbmRzIG9uIENSWVBUTworCWhlbHAKKwkgIFNIQTUxMiBzZWN1cmUgaGFzaCBzdGFuZGFyZCAoREZJUFMgMTgwLTIpLgorCSAgCisJICBUaGlzIHZlcnNpb24gb2YgU0hBIGltcGxlbWVudHMgYSA1MTIgYml0IGhhc2ggd2l0aCAyNTYgYml0cyBvZgorCSAgc2VjdXJpdHkgYWdhaW5zdCBjb2xsaXNpb24gYXR0YWNrcy4KKworCSAgVGhpcyBjb2RlIGFsc28gaW5jbHVkZXMgU0hBLTM4NCwgYSAzODQgYml0IGhhc2ggd2l0aCAxOTIgYml0cworCSAgb2Ygc2VjdXJpdHkgYWdhaW5zdCBjb2xsaXNpb24gYXR0YWNrcy4KKworY29uZmlnIENSWVBUT19XUDUxMgorCXRyaXN0YXRlICJXaGlybHBvb2wgZGlnZXN0IGFsZ29yaXRobXMiCisJZGVwZW5kcyBvbiBDUllQVE8KKwloZWxwCisJICBXaGlybHBvb2wgaGFzaCBhbGdvcml0aG0gNTEyLCAzODQgYW5kIDI1Ni1iaXQgaGFzaGVzCisKKwkgIFdoaXJscG9vbC01MTIgaXMgcGFydCBvZiB0aGUgTkVTU0lFIGNyeXB0b2dyYXBoaWMgcHJpbWl0aXZlcy4KKwkgIFdoaXJscG9vbCB3aWxsIGJlIHBhcnQgb2YgdGhlIElTTy9JRUMgMTAxMTgtMzoyMDAzKEUpIHN0YW5kYXJkCisKKwkgIFNlZSBhbHNvOgorCSAgPGh0dHA6Ly9wbGFuZXRhLnRlcnJhLmNvbS5ici9pbmZvcm1hdGljYS9wYXVsb2JhcnJldG8vV2hpcmxwb29sUGFnZS5odG1sPgorCitjb25maWcgQ1JZUFRPX1RHUjE5MgorCXRyaXN0YXRlICJUaWdlciBkaWdlc3QgYWxnb3JpdGhtcyIKKwlkZXBlbmRzIG9uIENSWVBUTworCWhlbHAKKwkgIFRpZ2VyIGhhc2ggYWxnb3JpdGhtIDE5MiwgMTYwIGFuZCAxMjgtYml0IGhhc2hlcworCisJICBUaWdlciBpcyBhIGhhc2ggZnVuY3Rpb24gb3B0aW1pemVkIGZvciA2NC1iaXQgcHJvY2Vzc29ycyB3aGlsZQorCSAgc3RpbGwgaGF2aW5nIGRlY2VudCBwZXJmb3JtYW5jZSBvbiAzMi1iaXQgcHJvY2Vzc29ycy4KKwkgIFRpZ2VyIHdhcyBkZXZlbG9wZWQgYnkgUm9zcyBBbmRlcnNvbiBhbmQgRWxpIEJpaGFtLgorCisJICBTZWUgYWxzbzoKKwkgIDxodHRwOi8vd3d3LmNzLnRlY2huaW9uLmFjLmlsL35iaWhhbS9SZXBvcnRzL1RpZ2VyLz4uCisKK2NvbmZpZyBDUllQVE9fREVTCisJdHJpc3RhdGUgIkRFUyBhbmQgVHJpcGxlIERFUyBFREUgY2lwaGVyIGFsZ29yaXRobXMiCisJZGVwZW5kcyBvbiBDUllQVE8KKwloZWxwCisJICBERVMgY2lwaGVyIGFsZ29yaXRobSAoRklQUyA0Ni0yKSwgYW5kIFRyaXBsZSBERVMgRURFIChGSVBTIDQ2LTMpLgorCitjb25maWcgQ1JZUFRPX0RFU19aOTkwCisJdHJpc3RhdGUgIkRFUyBhbmQgVHJpcGxlIERFUyBjaXBoZXIgYWxnb3JpdGhtcyBmb3IgSUJNIHpTZXJpZXMgejk5MCIKKwlkZXBlbmRzIG9uIENSWVBUTyAmJiBBUkNIX1MzOTAKKwloZWxwCisJICBERVMgY2lwaGVyIGFsZ29yaXRobSAoRklQUyA0Ni0yKSwgYW5kIFRyaXBsZSBERVMgRURFIChGSVBTIDQ2LTMpLgorCitjb25maWcgQ1JZUFRPX0JMT1dGSVNICisJdHJpc3RhdGUgIkJsb3dmaXNoIGNpcGhlciBhbGdvcml0aG0iCisJZGVwZW5kcyBvbiBDUllQVE8KKwloZWxwCisJICBCbG93ZmlzaCBjaXBoZXIgYWxnb3JpdGhtLCBieSBCcnVjZSBTY2huZWllci4KKwkgIAorCSAgVGhpcyBpcyBhIHZhcmlhYmxlIGtleSBsZW5ndGggY2lwaGVyIHdoaWNoIGNhbiB1c2Uga2V5cyBmcm9tIDMyCisJICBiaXRzIHRvIDQ0OCBiaXRzIGluIGxlbmd0aC4gIEl0J3MgZmFzdCwgc2ltcGxlIGFuZCBzcGVjaWZpY2FsbHkKKwkgIGRlc2lnbmVkIGZvciB1c2Ugb24gImxhcmdlIG1pY3JvcHJvY2Vzc29ycyIuCisJICAKKwkgIFNlZSBhbHNvOgorCSAgPGh0dHA6Ly93d3cuc2NobmVpZXIuY29tL2Jsb3dmaXNoLmh0bWw+CisKK2NvbmZpZyBDUllQVE9fVFdPRklTSAorCXRyaXN0YXRlICJUd29maXNoIGNpcGhlciBhbGdvcml0aG0iCisJZGVwZW5kcyBvbiBDUllQVE8KKwloZWxwCisJICBUd29maXNoIGNpcGhlciBhbGdvcml0aG0uCisJICAKKwkgIFR3b2Zpc2ggd2FzIHN1Ym1pdHRlZCBhcyBhbiBBRVMgKEFkdmFuY2VkIEVuY3J5cHRpb24gU3RhbmRhcmQpCisJICBjYW5kaWRhdGUgY2lwaGVyIGJ5IHJlc2VhcmNoZXJzIGF0IENvdW50ZXJQYW5lIFN5c3RlbXMuICBJdCBpcyBhCisJICAxNiByb3VuZCBibG9jayBjaXBoZXIgc3VwcG9ydGluZyBrZXkgc2l6ZXMgb2YgMTI4LCAxOTIsIGFuZCAyNTYKKwkgIGJpdHMuCisJICAKKwkgIFNlZSBhbHNvOgorCSAgPGh0dHA6Ly93d3cuc2NobmVpZXIuY29tL3R3b2Zpc2guaHRtbD4KKworY29uZmlnIENSWVBUT19TRVJQRU5UCisJdHJpc3RhdGUgIlNlcnBlbnQgY2lwaGVyIGFsZ29yaXRobSIKKwlkZXBlbmRzIG9uIENSWVBUTworCWhlbHAKKwkgIFNlcnBlbnQgY2lwaGVyIGFsZ29yaXRobSwgYnkgQW5kZXJzb24sIEJpaGFtICYgS251ZHNlbi4KKworCSAgS2V5cyBhcmUgYWxsb3dlZCB0byBiZSBmcm9tIDAgdG8gMjU2IGJpdHMgaW4gbGVuZ3RoLCBpbiBzdGVwcworCSAgb2YgOCBiaXRzLiAgQWxzbyBpbmNsdWRlcyB0aGUgJ1RuZXByZXMnIGFsZ29yaXRobSwgYSByZXZlcnNlZAorCSAgdmFyaWFudCBvZiBTZXJwZW50IGZvciBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGtlcm5lbGkgY29kZS4KKworCSAgU2VlIGFsc286CisJICA8aHR0cDovL3d3dy5jbC5jYW0uYWMudWsvfnJqYTE0L3NlcnBlbnQuaHRtbD4KKworY29uZmlnIENSWVBUT19BRVMKKwl0cmlzdGF0ZSAiQUVTIGNpcGhlciBhbGdvcml0aG1zIgorCWRlcGVuZHMgb24gQ1JZUFRPICYmICEoWDg2ICYmICFYODZfNjQpCisJaGVscAorCSAgQUVTIGNpcGhlciBhbGdvcml0aG1zIChGSVBTLTE5NykuIEFFUyB1c2VzIHRoZSBSaWpuZGFlbCAKKwkgIGFsZ29yaXRobS4KKworCSAgUmlqbmRhZWwgYXBwZWFycyB0byBiZSBjb25zaXN0ZW50bHkgYSB2ZXJ5IGdvb2QgcGVyZm9ybWVyIGluCisJICBib3RoIGhhcmR3YXJlIGFuZCBzb2Z0d2FyZSBhY3Jvc3MgYSB3aWRlIHJhbmdlIG9mIGNvbXB1dGluZyAKKwkgIGVudmlyb25tZW50cyByZWdhcmRsZXNzIG9mIGl0cyB1c2UgaW4gZmVlZGJhY2sgb3Igbm9uLWZlZWRiYWNrIAorCSAgbW9kZXMuIEl0cyBrZXkgc2V0dXAgdGltZSBpcyBleGNlbGxlbnQsIGFuZCBpdHMga2V5IGFnaWxpdHkgaXMgCisJICBnb29kLiBSaWpuZGFlbCdzIHZlcnkgbG93IG1lbW9yeSByZXF1aXJlbWVudHMgbWFrZSBpdCB2ZXJ5IHdlbGwgCisJICBzdWl0ZWQgZm9yIHJlc3RyaWN0ZWQtc3BhY2UgZW52aXJvbm1lbnRzLCBpbiB3aGljaCBpdCBhbHNvIAorCSAgZGVtb25zdHJhdGVzIGV4Y2VsbGVudCBwZXJmb3JtYW5jZS4gUmlqbmRhZWwncyBvcGVyYXRpb25zIGFyZSAKKwkgIGFtb25nIHRoZSBlYXNpZXN0IHRvIGRlZmVuZCBhZ2FpbnN0IHBvd2VyIGFuZCB0aW1pbmcgYXR0YWNrcy4JCisKKwkgIFRoZSBBRVMgc3BlY2lmaWVzIHRocmVlIGtleSBzaXplczogMTI4LCAxOTIgYW5kIDI1NiBiaXRzCSAgCisKKwkgIFNlZSA8aHR0cDovL2NzcmMubmlzdC5nb3YvQ3J5cHRvVG9vbGtpdC9hZXMvPiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworY29uZmlnIENSWVBUT19BRVNfNTg2CisJdHJpc3RhdGUgIkFFUyBjaXBoZXIgYWxnb3JpdGhtcyAoaTU4NikiCisJZGVwZW5kcyBvbiBDUllQVE8gJiYgKFg4NiAmJiAhWDg2XzY0KQorCWhlbHAKKwkgIEFFUyBjaXBoZXIgYWxnb3JpdGhtcyAoRklQUy0xOTcpLiBBRVMgdXNlcyB0aGUgUmlqbmRhZWwgCisJICBhbGdvcml0aG0uCisKKwkgIFJpam5kYWVsIGFwcGVhcnMgdG8gYmUgY29uc2lzdGVudGx5IGEgdmVyeSBnb29kIHBlcmZvcm1lciBpbgorCSAgYm90aCBoYXJkd2FyZSBhbmQgc29mdHdhcmUgYWNyb3NzIGEgd2lkZSByYW5nZSBvZiBjb21wdXRpbmcgCisJICBlbnZpcm9ubWVudHMgcmVnYXJkbGVzcyBvZiBpdHMgdXNlIGluIGZlZWRiYWNrIG9yIG5vbi1mZWVkYmFjayAKKwkgIG1vZGVzLiBJdHMga2V5IHNldHVwIHRpbWUgaXMgZXhjZWxsZW50LCBhbmQgaXRzIGtleSBhZ2lsaXR5IGlzIAorCSAgZ29vZC4gUmlqbmRhZWwncyB2ZXJ5IGxvdyBtZW1vcnkgcmVxdWlyZW1lbnRzIG1ha2UgaXQgdmVyeSB3ZWxsIAorCSAgc3VpdGVkIGZvciByZXN0cmljdGVkLXNwYWNlIGVudmlyb25tZW50cywgaW4gd2hpY2ggaXQgYWxzbyAKKwkgIGRlbW9uc3RyYXRlcyBleGNlbGxlbnQgcGVyZm9ybWFuY2UuIFJpam5kYWVsJ3Mgb3BlcmF0aW9ucyBhcmUgCisJICBhbW9uZyB0aGUgZWFzaWVzdCB0byBkZWZlbmQgYWdhaW5zdCBwb3dlciBhbmQgdGltaW5nIGF0dGFja3MuCQorCisJICBUaGUgQUVTIHNwZWNpZmllcyB0aHJlZSBrZXkgc2l6ZXM6IDEyOCwgMTkyIGFuZCAyNTYgYml0cwkgIAorCisJICBTZWUgPGh0dHA6Ly9jc3JjLm5pc3QuZ292L2VuY3J5cHRpb24vYWVzLz4gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKK2NvbmZpZyBDUllQVE9fQ0FTVDUKKwl0cmlzdGF0ZSAiQ0FTVDUgKENBU1QtMTI4KSBjaXBoZXIgYWxnb3JpdGhtIgorCWRlcGVuZHMgb24gQ1JZUFRPCisJaGVscAorCSAgVGhlIENBU1Q1IGVuY3J5cHRpb24gYWxnb3JpdGhtIChzeW5vbnltb3VzIHdpdGggQ0FTVC0xMjgpIGlzCisJICBkZXNjcmliZWQgaW4gUkZDMjE0NC4KKworY29uZmlnIENSWVBUT19DQVNUNgorCXRyaXN0YXRlICJDQVNUNiAoQ0FTVC0yNTYpIGNpcGhlciBhbGdvcml0aG0iCisJZGVwZW5kcyBvbiBDUllQVE8KKwloZWxwCisJICBUaGUgQ0FTVDYgZW5jcnlwdGlvbiBhbGdvcml0aG0gKHN5bm9ueW1vdXMgd2l0aCBDQVNULTI1NikgaXMKKwkgIGRlc2NyaWJlZCBpbiBSRkMyNjEyLgorCitjb25maWcgQ1JZUFRPX1RFQQorCXRyaXN0YXRlICJURUEgYW5kIFhURUEgY2lwaGVyIGFsZ29yaXRobXMiCisJZGVwZW5kcyBvbiBDUllQVE8KKwloZWxwCisJICBURUEgY2lwaGVyIGFsZ29yaXRobS4KKworCSAgVGlueSBFbmNyeXB0aW9uIEFsZ29yaXRobSBpcyBhIHNpbXBsZSBjaXBoZXIgdGhhdCB1c2VzCisJICBtYW55IHJvdW5kcyBmb3Igc2VjdXJpdHkuICBJdCBpcyB2ZXJ5IGZhc3QgYW5kIHVzZXMKKwkgIGxpdHRsZSBtZW1vcnkuCisKKwkgIFh0ZW5kZW5kIFRpbnkgRW5jcnlwdGlvbiBBbGdvcml0aG0gaXMgYSBtb2RpZmljYXRpb24gdG8KKwkgIHRoZSBURUEgYWxnb3JpdGhtIHRvIGFkZHJlc3MgYSBwb3RlbnRpYWwga2V5IHdlYWtuZXNzCisJICBpbiB0aGUgVEVBIGFsZ29yaXRobS4KKworY29uZmlnIENSWVBUT19BUkM0CisJdHJpc3RhdGUgIkFSQzQgY2lwaGVyIGFsZ29yaXRobSIKKwlkZXBlbmRzIG9uIENSWVBUTworCWhlbHAKKwkgIEFSQzQgY2lwaGVyIGFsZ29yaXRobS4KKworCSAgQVJDNCBpcyBhIHN0cmVhbSBjaXBoZXIgdXNpbmcga2V5cyByYW5naW5nIGZyb20gOCBiaXRzIHRvIDIwNDgKKwkgIGJpdHMgaW4gbGVuZ3RoLiAgVGhpcyBhbGdvcml0aG0gaXMgcmVxdWlyZWQgZm9yIGRyaXZlci1iYXNlZCAKKwkgIFdFUCwgYnV0IGl0IHNob3VsZCBub3QgYmUgZm9yIG90aGVyIHB1cnBvc2VzIGJlY2F1c2Ugb2YgdGhlCisJICB3ZWFrbmVzcyBvZiB0aGUgYWxnb3JpdGhtLgorCitjb25maWcgQ1JZUFRPX0tIQVpBRAorCXRyaXN0YXRlICJLaGF6YWQgY2lwaGVyIGFsZ29yaXRobSIKKwlkZXBlbmRzIG9uIENSWVBUTworCWhlbHAKKwkgIEtoYXphZCBjaXBoZXIgYWxnb3JpdGhtLgorCisJICBLaGF6YWQgd2FzIGEgZmluYWxpc3QgaW4gdGhlIGluaXRpYWwgTkVTU0lFIGNvbXBldGl0aW9uLiAgSXQgaXMKKwkgIGFuIGFsZ29yaXRobSBvcHRpbWl6ZWQgZm9yIDY0LWJpdCBwcm9jZXNzb3JzIHdpdGggZ29vZCBwZXJmb3JtYW5jZQorCSAgb24gMzItYml0IHByb2Nlc3NvcnMuICBLaGF6YWQgdXNlcyBhbiAxMjggYml0IGtleSBzaXplLgorCisJICBTZWUgYWxzbzoKKwkgIDxodHRwOi8vcGxhbmV0YS50ZXJyYS5jb20uYnIvaW5mb3JtYXRpY2EvcGF1bG9iYXJyZXRvL0toYXphZFBhZ2UuaHRtbD4KKworY29uZmlnIENSWVBUT19BTlVCSVMKKwl0cmlzdGF0ZSAiQW51YmlzIGNpcGhlciBhbGdvcml0aG0iCisJZGVwZW5kcyBvbiBDUllQVE8KKwloZWxwCisJICBBbnViaXMgY2lwaGVyIGFsZ29yaXRobS4KKworCSAgQW51YmlzIGlzIGEgdmFyaWFibGUga2V5IGxlbmd0aCBjaXBoZXIgd2hpY2ggY2FuIHVzZSBrZXlzIGZyb20gCisJICAxMjggYml0cyB0byAzMjAgYml0cyBpbiBsZW5ndGguICBJdCB3YXMgZXZhbHVhdGVkIGFzIGEgZW50cmFudAorCSAgaW4gdGhlIE5FU1NJRSBjb21wZXRpdGlvbi4KKwkgIAorCSAgU2VlIGFsc286CisJICA8aHR0cHM6Ly93d3cuY29zaWMuZXNhdC5rdWxldXZlbi5hYy5iZS9uZXNzaWUvcmVwb3J0cy8+CisJICA8aHR0cDovL3BsYW5ldGEudGVycmEuY29tLmJyL2luZm9ybWF0aWNhL3BhdWxvYmFycmV0by9BbnViaXNQYWdlLmh0bWw+CisKKworY29uZmlnIENSWVBUT19ERUZMQVRFCisJdHJpc3RhdGUgIkRlZmxhdGUgY29tcHJlc3Npb24gYWxnb3JpdGhtIgorCWRlcGVuZHMgb24gQ1JZUFRPCisJc2VsZWN0IFpMSUJfSU5GTEFURQorCXNlbGVjdCBaTElCX0RFRkxBVEUKKwloZWxwCisJICBUaGlzIGlzIHRoZSBEZWZsYXRlIGFsZ29yaXRobSAoUkZDMTk1MSksIHNwZWNpZmllZCBmb3IgdXNlIGluCisJICBJUFNlYyB3aXRoIHRoZSBJUENPTVAgcHJvdG9jb2wgKFJGQzMxNzMsIFJGQzIzOTQpLgorCSAgCisJICBZb3Ugd2lsbCBtb3N0IHByb2JhYmx5IHdhbnQgdGhpcyBpZiB1c2luZyBJUFNlYy4KKworY29uZmlnIENSWVBUT19NSUNIQUVMX01JQworCXRyaXN0YXRlICJNaWNoYWVsIE1JQyBrZXllZCBkaWdlc3QgYWxnb3JpdGhtIgorCWRlcGVuZHMgb24gQ1JZUFRPCisJaGVscAorCSAgTWljaGFlbCBNSUMgaXMgdXNlZCBmb3IgbWVzc2FnZSBpbnRlZ3JpdHkgcHJvdGVjdGlvbiBpbiBUS0lQCisJICAoSUVFRSA4MDIuMTFpKS4gVGhpcyBhbGdvcml0aG0gaXMgcmVxdWlyZWQgZm9yIFRLSVAsIGJ1dCBpdAorCSAgc2hvdWxkIG5vdCBiZSB1c2VkIGZvciBvdGhlciBwdXJwb3NlcyBiZWNhdXNlIG9mIHRoZSB3ZWFrbmVzcworCSAgb2YgdGhlIGFsZ29yaXRobS4KKworY29uZmlnIENSWVBUT19DUkMzMkMKKwl0cmlzdGF0ZSAiQ1JDMzJjIENSQyBhbGdvcml0aG0iCisJZGVwZW5kcyBvbiBDUllQVE8KKwlzZWxlY3QgTElCQ1JDMzJDCisJaGVscAorCSAgQ2FzdGFnbm9saSwgZXQgYWwgQ3ljbGljIFJlZHVuZGFuY3ktQ2hlY2sgQWxnb3JpdGhtLiAgVXNlZAorCSAgYnkgaVNDU0kgZm9yIGhlYWRlciBhbmQgZGF0YSBkaWdlc3RzIGFuZCBieSBvdGhlcnMuCisJICBTZWUgQ2FzdGFnbm9saTkzLiAgVGhpcyBpbXBsZW1lbnRhdGlvbiB1c2VzIGxpYi9saWJjcmMzMmMuCisgICAgICAgICAgTW9kdWxlIHdpbGwgYmUgY3JjMzJjLgorCitjb25maWcgQ1JZUFRPX1RFU1QKKwl0cmlzdGF0ZSAiVGVzdGluZyBtb2R1bGUiCisJZGVwZW5kcyBvbiBDUllQVE8KKwloZWxwCisJICBRdWljayAmIGRpcnR5IGNyeXB0byB0ZXN0IG1vZHVsZS4KKworc291cmNlICJkcml2ZXJzL2NyeXB0by9LY29uZmlnIgorZW5kbWVudQorCmRpZmYgLS1naXQgYS9jcnlwdG8vTWFrZWZpbGUgYi9jcnlwdG8vTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDI4N2I5ZQotLS0gL2Rldi9udWxsCisrKyBiL2NyeXB0by9NYWtlZmlsZQpAQCAtMCwwICsxLDM0IEBACisjCisjIENyeXB0b2dyYXBoaWMgQVBJCisjCisKK3Byb2MtY3J5cHRvLSQoQ09ORklHX1BST0NfRlMpID0gcHJvYy5vCisKK29iai0kKENPTkZJR19DUllQVE8pICs9IGFwaS5vIHNjYXR0ZXJ3YWxrLm8gY2lwaGVyLm8gZGlnZXN0Lm8gY29tcHJlc3MubyBcCisJCQkkKHByb2MtY3J5cHRvLXkpCisKK29iai0kKENPTkZJR19DUllQVE9fSE1BQykgKz0gaG1hYy5vCitvYmotJChDT05GSUdfQ1JZUFRPX05VTEwpICs9IGNyeXB0b19udWxsLm8KK29iai0kKENPTkZJR19DUllQVE9fTUQ0KSArPSBtZDQubworb2JqLSQoQ09ORklHX0NSWVBUT19NRDUpICs9IG1kNS5vCitvYmotJChDT05GSUdfQ1JZUFRPX1NIQTEpICs9IHNoYTEubworb2JqLSQoQ09ORklHX0NSWVBUT19TSEEyNTYpICs9IHNoYTI1Ni5vCitvYmotJChDT05GSUdfQ1JZUFRPX1NIQTUxMikgKz0gc2hhNTEyLm8KK29iai0kKENPTkZJR19DUllQVE9fV1A1MTIpICs9IHdwNTEyLm8KK29iai0kKENPTkZJR19DUllQVE9fVEdSMTkyKSArPSB0Z3IxOTIubworb2JqLSQoQ09ORklHX0NSWVBUT19ERVMpICs9IGRlcy5vCitvYmotJChDT05GSUdfQ1JZUFRPX0JMT1dGSVNIKSArPSBibG93ZmlzaC5vCitvYmotJChDT05GSUdfQ1JZUFRPX1RXT0ZJU0gpICs9IHR3b2Zpc2gubworb2JqLSQoQ09ORklHX0NSWVBUT19TRVJQRU5UKSArPSBzZXJwZW50Lm8KK29iai0kKENPTkZJR19DUllQVE9fQUVTKSArPSBhZXMubworb2JqLSQoQ09ORklHX0NSWVBUT19DQVNUNSkgKz0gY2FzdDUubworb2JqLSQoQ09ORklHX0NSWVBUT19DQVNUNikgKz0gY2FzdDYubworb2JqLSQoQ09ORklHX0NSWVBUT19BUkM0KSArPSBhcmM0Lm8KK29iai0kKENPTkZJR19DUllQVE9fVEVBKSArPSB0ZWEubworb2JqLSQoQ09ORklHX0NSWVBUT19LSEFaQUQpICs9IGtoYXphZC5vCitvYmotJChDT05GSUdfQ1JZUFRPX0FOVUJJUykgKz0gYW51YmlzLm8KK29iai0kKENPTkZJR19DUllQVE9fREVGTEFURSkgKz0gZGVmbGF0ZS5vCitvYmotJChDT05GSUdfQ1JZUFRPX01JQ0hBRUxfTUlDKSArPSBtaWNoYWVsX21pYy5vCitvYmotJChDT05GSUdfQ1JZUFRPX0NSQzMyQykgKz0gY3JjMzJjLm8KKworb2JqLSQoQ09ORklHX0NSWVBUT19URVNUKSArPSB0Y3J5cHQubwpkaWZmIC0tZ2l0IGEvY3J5cHRvL2Flcy5jIGIvY3J5cHRvL2Flcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwZGQ3YzMKLS0tIC9kZXYvbnVsbAorKysgYi9jcnlwdG8vYWVzLmMKQEAgLTAsMCArMSw0NTEgQEAKKy8qIAorICogQ3J5cHRvZ3JhcGhpYyBBUEkuCisgKgorICogQUVTIENpcGhlciBBbGdvcml0aG0uCisgKgorICogQmFzZWQgb24gQnJpYW4gR2xhZG1hbidzIGNvZGUuCisgKgorICogTGludXggZGV2ZWxvcGVyczoKKyAqICBBbGV4YW5kZXIgS2plbGRhYXMgPGFzdG9yQGZhc3Qubm8+CisgKiAgSGVyYmVydCBWYWxlcmlvIFJpZWRlbCA8aHZyQGh2cmxhYi5vcmc+CisgKiAgS3lsZSBNY01hcnRpbiA8a3lsZUBkZWJpYW4ub3JnPgorICogIEFkYW0gSi4gUmljaHRlciA8YWRhbUB5Z2dkcmFzaWwuY29tPiAoY29udmVyc2lvbiB0byAyLjUgQVBJKS4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogQ29weXJpZ2h0IChjKSAyMDAyLCBEciBCcmlhbiBHbGFkbWFuIDxicmdAZ2xhZG1hbi5tZS51az4sIFdvcmNlc3RlciwgVUsuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIExJQ0VOU0UgVEVSTVMKKyAqCisgKiBUaGUgZnJlZSBkaXN0cmlidXRpb24gYW5kIHVzZSBvZiB0aGlzIHNvZnR3YXJlIGluIGJvdGggc291cmNlIGFuZCBiaW5hcnkKKyAqIGZvcm0gaXMgYWxsb3dlZCAod2l0aCBvciB3aXRob3V0IGNoYW5nZXMpIHByb3ZpZGVkIHRoYXQ6CisgKgorICogICAxLiBkaXN0cmlidXRpb25zIG9mIHRoaXMgc291cmNlIGNvZGUgaW5jbHVkZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcjsKKyAqCisgKiAgIDIuIGRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gaW5jbHVkZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgYXNzb2NpYXRlZCBtYXRlcmlhbHM7CisgKgorICogICAzLiB0aGUgY29weXJpZ2h0IGhvbGRlcidzIG5hbWUgaXMgbm90IHVzZWQgdG8gZW5kb3JzZSBwcm9kdWN0cworICogICAgICBidWlsdCB1c2luZyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIEFMVEVSTkFUSVZFTFksIHByb3ZpZGVkIHRoYXQgdGhpcyBub3RpY2UgaXMgcmV0YWluZWQgaW4gZnVsbCwgdGhpcyBwcm9kdWN0CisgKiBtYXkgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSwKKyAqIGluIHdoaWNoIGNhc2UgdGhlIHByb3Zpc2lvbnMgb2YgdGhlIEdQTCBhcHBseSBJTlNURUFEIE9GIHRob3NlIGdpdmVuIGFib3ZlLgorICoKKyAqIERJU0NMQUlNRVIKKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcyBpcycgd2l0aCBubyBleHBsaWNpdCBvciBpbXBsaWVkIHdhcnJhbnRpZXMKKyAqIGluIHJlc3BlY3Qgb2YgaXRzIHByb3BlcnRpZXMsIGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvLCBjb3JyZWN0bmVzcworICogYW5kL29yIGZpdG5lc3MgZm9yIHB1cnBvc2UuCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisvKiBTb21lIGNoYW5nZXMgZnJvbSB0aGUgR2xhZG1hbiB2ZXJzaW9uOgorICAgIHMvUklKTkRBRUwoZV9rZXkpL0VfS0VZL2cKKyAgICBzL1JJSk5EQUVMKGRfa2V5KS9EX0tFWS9nCisqLworCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaW5jbHVkZSA8bGludXgvZXJybm8uaD4KKyNpbmNsdWRlIDxsaW51eC9jcnlwdG8uaD4KKyNpbmNsdWRlIDxhc20vYnl0ZW9yZGVyLmg+CisKKyNkZWZpbmUgQUVTX01JTl9LRVlfU0laRQkxNgorI2RlZmluZSBBRVNfTUFYX0tFWV9TSVpFCTMyCisKKyNkZWZpbmUgQUVTX0JMT0NLX1NJWkUJCTE2CisKKy8qCisgKiAjZGVmaW5lIGJ5dGUoeCwgbnIpICgodW5zaWduZWQgY2hhcikoKHgpID4+IChucio4KSkpIAorICovCitpbmxpbmUgc3RhdGljIHU4CitieXRlKGNvbnN0IHUzMiB4LCBjb25zdCB1bnNpZ25lZCBuKQoreworCXJldHVybiB4ID4+IChuIDw8IDMpOworfQorCisjZGVmaW5lIHUzMl9pbih4KSBsZTMyX3RvX2NwdSgqKGNvbnN0IHUzMiAqKSh4KSkKKyNkZWZpbmUgdTMyX291dCh0bywgZnJvbSkgKCoodTMyICopKHRvKSA9IGNwdV90b19sZTMyKGZyb20pKQorCitzdHJ1Y3QgYWVzX2N0eCB7CisJaW50IGtleV9sZW5ndGg7CisJdTMyIEVbNjBdOworCXUzMiBEWzYwXTsKK307CisKKyNkZWZpbmUgRV9LRVkgY3R4LT5FCisjZGVmaW5lIERfS0VZIGN0eC0+RAorCitzdGF0aWMgdTggcG93X3RhYlsyNTZdIF9faW5pdGRhdGE7CitzdGF0aWMgdTggbG9nX3RhYlsyNTZdIF9faW5pdGRhdGE7CitzdGF0aWMgdTggc2J4X3RhYlsyNTZdIF9faW5pdGRhdGE7CitzdGF0aWMgdTggaXNiX3RhYlsyNTZdIF9faW5pdGRhdGE7CitzdGF0aWMgdTMyIHJjb190YWJbMTBdOworc3RhdGljIHUzMiBmdF90YWJbNF1bMjU2XTsKK3N0YXRpYyB1MzIgaXRfdGFiWzRdWzI1Nl07CisKK3N0YXRpYyB1MzIgZmxfdGFiWzRdWzI1Nl07CitzdGF0aWMgdTMyIGlsX3RhYls0XVsyNTZdOworCitzdGF0aWMgaW5saW5lIHU4IF9faW5pdAorZl9tdWx0ICh1OCBhLCB1OCBiKQoreworCXU4IGFhID0gbG9nX3RhYlthXSwgY2MgPSBhYSArIGxvZ190YWJbYl07CisKKwlyZXR1cm4gcG93X3RhYltjYyArIChjYyA8IGFhID8gMSA6IDApXTsKK30KKworI2RlZmluZSBmZl9tdWx0KGEsYikgICAgKGEgJiYgYiA/IGZfbXVsdChhLCBiKSA6IDApCisKKyNkZWZpbmUgZl9ybihibywgYmksIG4sIGspCQkJCQlcCisgICAgYm9bbl0gPSAgZnRfdGFiWzBdW2J5dGUoYmlbbl0sMCldIF4JCQkJXAorICAgICAgICAgICAgIGZ0X3RhYlsxXVtieXRlKGJpWyhuICsgMSkgJiAzXSwxKV0gXgkJXAorICAgICAgICAgICAgIGZ0X3RhYlsyXVtieXRlKGJpWyhuICsgMikgJiAzXSwyKV0gXgkJXAorICAgICAgICAgICAgIGZ0X3RhYlszXVtieXRlKGJpWyhuICsgMykgJiAzXSwzKV0gXiAqKGsgKyBuKQorCisjZGVmaW5lIGlfcm4oYm8sIGJpLCBuLCBrKQkJCQkJXAorICAgIGJvW25dID0gIGl0X3RhYlswXVtieXRlKGJpW25dLDApXSBeCQkJCVwKKyAgICAgICAgICAgICBpdF90YWJbMV1bYnl0ZShiaVsobiArIDMpICYgM10sMSldIF4JCVwKKyAgICAgICAgICAgICBpdF90YWJbMl1bYnl0ZShiaVsobiArIDIpICYgM10sMildIF4JCVwKKyAgICAgICAgICAgICBpdF90YWJbM11bYnl0ZShiaVsobiArIDEpICYgM10sMyldIF4gKihrICsgbikKKworI2RlZmluZSBsc19ib3goeCkJCQkJXAorICAgICggZmxfdGFiWzBdW2J5dGUoeCwgMCldIF4JCQlcCisgICAgICBmbF90YWJbMV1bYnl0ZSh4LCAxKV0gXgkJCVwKKyAgICAgIGZsX3RhYlsyXVtieXRlKHgsIDIpXSBeCQkJXAorICAgICAgZmxfdGFiWzNdW2J5dGUoeCwgMyldICkKKworI2RlZmluZSBmX3JsKGJvLCBiaSwgbiwgaykJCQkJCVwKKyAgICBib1tuXSA9ICBmbF90YWJbMF1bYnl0ZShiaVtuXSwwKV0gXgkJCQlcCisgICAgICAgICAgICAgZmxfdGFiWzFdW2J5dGUoYmlbKG4gKyAxKSAmIDNdLDEpXSBeCQlcCisgICAgICAgICAgICAgZmxfdGFiWzJdW2J5dGUoYmlbKG4gKyAyKSAmIDNdLDIpXSBeCQlcCisgICAgICAgICAgICAgZmxfdGFiWzNdW2J5dGUoYmlbKG4gKyAzKSAmIDNdLDMpXSBeICooayArIG4pCisKKyNkZWZpbmUgaV9ybChibywgYmksIG4sIGspCQkJCQlcCisgICAgYm9bbl0gPSAgaWxfdGFiWzBdW2J5dGUoYmlbbl0sMCldIF4JCQkJXAorICAgICAgICAgICAgIGlsX3RhYlsxXVtieXRlKGJpWyhuICsgMykgJiAzXSwxKV0gXgkJXAorICAgICAgICAgICAgIGlsX3RhYlsyXVtieXRlKGJpWyhuICsgMikgJiAzXSwyKV0gXgkJXAorICAgICAgICAgICAgIGlsX3RhYlszXVtieXRlKGJpWyhuICsgMSkgJiAzXSwzKV0gXiAqKGsgKyBuKQorCitzdGF0aWMgdm9pZCBfX2luaXQKK2dlbl90YWJzICh2b2lkKQoreworCXUzMiBpLCB0OworCXU4IHAsIHE7CisKKwkvKiBsb2cgYW5kIHBvd2VyIHRhYmxlcyBmb3IgR0YoMioqOCkgZmluaXRlIGZpZWxkIHdpdGgKKwkgICAweDAxMWIgYXMgbW9kdWxhciBwb2x5bm9taWFsIC0gdGhlIHNpbXBsZXN0IHByaW1pdGl2ZQorCSAgIHJvb3QgaXMgMHgwMywgdXNlZCBoZXJlIHRvIGdlbmVyYXRlIHRoZSB0YWJsZXMgKi8KKworCWZvciAoaSA9IDAsIHAgPSAxOyBpIDwgMjU2OyArK2kpIHsKKwkJcG93X3RhYltpXSA9ICh1OCkgcDsKKwkJbG9nX3RhYltwXSA9ICh1OCkgaTsKKworCQlwIF49IChwIDw8IDEpIF4gKHAgJiAweDgwID8gMHgwMWIgOiAwKTsKKwl9CisKKwlsb2dfdGFiWzFdID0gMDsKKworCWZvciAoaSA9IDAsIHAgPSAxOyBpIDwgMTA7ICsraSkgeworCQlyY29fdGFiW2ldID0gcDsKKworCQlwID0gKHAgPDwgMSkgXiAocCAmIDB4ODAgPyAweDAxYiA6IDApOworCX0KKworCWZvciAoaSA9IDA7IGkgPCAyNTY7ICsraSkgeworCQlwID0gKGkgPyBwb3dfdGFiWzI1NSAtIGxvZ190YWJbaV1dIDogMCk7CisJCXEgPSAoKHAgPj4gNykgfCAocCA8PCAxKSkgXiAoKHAgPj4gNikgfCAocCA8PCAyKSk7CisJCXAgXj0gMHg2MyBeIHEgXiAoKHEgPj4gNikgfCAocSA8PCAyKSk7CisJCXNieF90YWJbaV0gPSBwOworCQlpc2JfdGFiW3BdID0gKHU4KSBpOworCX0KKworCWZvciAoaSA9IDA7IGkgPCAyNTY7ICsraSkgeworCQlwID0gc2J4X3RhYltpXTsKKworCQl0ID0gcDsKKwkJZmxfdGFiWzBdW2ldID0gdDsKKwkJZmxfdGFiWzFdW2ldID0gcm9sMzIodCwgOCk7CisJCWZsX3RhYlsyXVtpXSA9IHJvbDMyKHQsIDE2KTsKKwkJZmxfdGFiWzNdW2ldID0gcm9sMzIodCwgMjQpOworCisJCXQgPSAoKHUzMikgZmZfbXVsdCAoMiwgcCkpIHwKKwkJICAgICgodTMyKSBwIDw8IDgpIHwKKwkJICAgICgodTMyKSBwIDw8IDE2KSB8ICgodTMyKSBmZl9tdWx0ICgzLCBwKSA8PCAyNCk7CisKKwkJZnRfdGFiWzBdW2ldID0gdDsKKwkJZnRfdGFiWzFdW2ldID0gcm9sMzIodCwgOCk7CisJCWZ0X3RhYlsyXVtpXSA9IHJvbDMyKHQsIDE2KTsKKwkJZnRfdGFiWzNdW2ldID0gcm9sMzIodCwgMjQpOworCisJCXAgPSBpc2JfdGFiW2ldOworCisJCXQgPSBwOworCQlpbF90YWJbMF1baV0gPSB0OworCQlpbF90YWJbMV1baV0gPSByb2wzMih0LCA4KTsKKwkJaWxfdGFiWzJdW2ldID0gcm9sMzIodCwgMTYpOworCQlpbF90YWJbM11baV0gPSByb2wzMih0LCAyNCk7CisKKwkJdCA9ICgodTMyKSBmZl9tdWx0ICgxNCwgcCkpIHwKKwkJICAgICgodTMyKSBmZl9tdWx0ICg5LCBwKSA8PCA4KSB8CisJCSAgICAoKHUzMikgZmZfbXVsdCAoMTMsIHApIDw8IDE2KSB8CisJCSAgICAoKHUzMikgZmZfbXVsdCAoMTEsIHApIDw8IDI0KTsKKworCQlpdF90YWJbMF1baV0gPSB0OworCQlpdF90YWJbMV1baV0gPSByb2wzMih0LCA4KTsKKwkJaXRfdGFiWzJdW2ldID0gcm9sMzIodCwgMTYpOworCQlpdF90YWJbM11baV0gPSByb2wzMih0LCAyNCk7CisJfQorfQorCisjZGVmaW5lIHN0YXJfeCh4KSAoKCh4KSAmIDB4N2Y3ZjdmN2YpIDw8IDEpIF4gKCgoKHgpICYgMHg4MDgwODA4MCkgPj4gNykgKiAweDFiKQorCisjZGVmaW5lIGltaXhfY29sKHkseCkgICAgICAgXAorICAgIHUgICA9IHN0YXJfeCh4KTsgICAgICAgIFwKKyAgICB2ICAgPSBzdGFyX3godSk7ICAgICAgICBcCisgICAgdyAgID0gc3Rhcl94KHYpOyAgICAgICAgXAorICAgIHQgICA9IHcgXiAoeCk7ICAgICAgICAgIFwKKyAgICh5KSAgPSB1IF4gdiBeIHc7ICAgICAgICBcCisgICAoeSkgXj0gcm9yMzIodSBeIHQsICA4KSBeIFwKKyAgICAgICAgICByb3IzMih2IF4gdCwgMTYpIF4gXAorICAgICAgICAgIHJvcjMyKHQsMjQpCisKKy8qIGluaXRpYWxpc2UgdGhlIGtleSBzY2hlZHVsZSBmcm9tIHRoZSB1c2VyIHN1cHBsaWVkIGtleSAqLworCisjZGVmaW5lIGxvb3A0KGkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoreyAgIHQgPSByb3IzMih0LCAgOCk7IHQgPSBsc19ib3godCkgXiByY29fdGFiW2ldOyAgICBcCisgICAgdCBePSBFX0tFWVs0ICogaV07ICAgICBFX0tFWVs0ICogaSArIDRdID0gdDsgICAgXAorICAgIHQgXj0gRV9LRVlbNCAqIGkgKyAxXTsgRV9LRVlbNCAqIGkgKyA1XSA9IHQ7ICAgIFwKKyAgICB0IF49IEVfS0VZWzQgKiBpICsgMl07IEVfS0VZWzQgKiBpICsgNl0gPSB0OyAgICBcCisgICAgdCBePSBFX0tFWVs0ICogaSArIDNdOyBFX0tFWVs0ICogaSArIDddID0gdDsgICAgXAorfQorCisjZGVmaW5lIGxvb3A2KGkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoreyAgIHQgPSByb3IzMih0LCAgOCk7IHQgPSBsc19ib3godCkgXiByY29fdGFiW2ldOyAgICBcCisgICAgdCBePSBFX0tFWVs2ICogaV07ICAgICBFX0tFWVs2ICogaSArIDZdID0gdDsgICAgXAorICAgIHQgXj0gRV9LRVlbNiAqIGkgKyAxXTsgRV9LRVlbNiAqIGkgKyA3XSA9IHQ7ICAgIFwKKyAgICB0IF49IEVfS0VZWzYgKiBpICsgMl07IEVfS0VZWzYgKiBpICsgOF0gPSB0OyAgICBcCisgICAgdCBePSBFX0tFWVs2ICogaSArIDNdOyBFX0tFWVs2ICogaSArIDldID0gdDsgICAgXAorICAgIHQgXj0gRV9LRVlbNiAqIGkgKyA0XTsgRV9LRVlbNiAqIGkgKyAxMF0gPSB0OyAgIFwKKyAgICB0IF49IEVfS0VZWzYgKiBpICsgNV07IEVfS0VZWzYgKiBpICsgMTFdID0gdDsgICBcCit9CisKKyNkZWZpbmUgbG9vcDgoaSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit7ICAgdCA9IHJvcjMyKHQsICA4KTsgOyB0ID0gbHNfYm94KHQpIF4gcmNvX3RhYltpXTsgIFwKKyAgICB0IF49IEVfS0VZWzggKiBpXTsgICAgIEVfS0VZWzggKiBpICsgOF0gPSB0OyAgICBcCisgICAgdCBePSBFX0tFWVs4ICogaSArIDFdOyBFX0tFWVs4ICogaSArIDldID0gdDsgICAgXAorICAgIHQgXj0gRV9LRVlbOCAqIGkgKyAyXTsgRV9LRVlbOCAqIGkgKyAxMF0gPSB0OyAgIFwKKyAgICB0IF49IEVfS0VZWzggKiBpICsgM107IEVfS0VZWzggKiBpICsgMTFdID0gdDsgICBcCisgICAgdCAgPSBFX0tFWVs4ICogaSArIDRdIF4gbHNfYm94KHQpOyAgICBcCisgICAgRV9LRVlbOCAqIGkgKyAxMl0gPSB0OyAgICAgICAgICAgICAgICBcCisgICAgdCBePSBFX0tFWVs4ICogaSArIDVdOyBFX0tFWVs4ICogaSArIDEzXSA9IHQ7ICAgXAorICAgIHQgXj0gRV9LRVlbOCAqIGkgKyA2XTsgRV9LRVlbOCAqIGkgKyAxNF0gPSB0OyAgIFwKKyAgICB0IF49IEVfS0VZWzggKiBpICsgN107IEVfS0VZWzggKiBpICsgMTVdID0gdDsgICBcCit9CisKK3N0YXRpYyBpbnQKK2Flc19zZXRfa2V5KHZvaWQgKmN0eF9hcmcsIGNvbnN0IHU4ICppbl9rZXksIHVuc2lnbmVkIGludCBrZXlfbGVuLCB1MzIgKmZsYWdzKQoreworCXN0cnVjdCBhZXNfY3R4ICpjdHggPSBjdHhfYXJnOworCXUzMiBpLCB0LCB1LCB2LCB3OworCisJaWYgKGtleV9sZW4gIT0gMTYgJiYga2V5X2xlbiAhPSAyNCAmJiBrZXlfbGVuICE9IDMyKSB7CisJCSpmbGFncyB8PSBDUllQVE9fVEZNX1JFU19CQURfS0VZX0xFTjsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJY3R4LT5rZXlfbGVuZ3RoID0ga2V5X2xlbjsKKworCUVfS0VZWzBdID0gdTMyX2luIChpbl9rZXkpOworCUVfS0VZWzFdID0gdTMyX2luIChpbl9rZXkgKyA0KTsKKwlFX0tFWVsyXSA9IHUzMl9pbiAoaW5fa2V5ICsgOCk7CisJRV9LRVlbM10gPSB1MzJfaW4gKGluX2tleSArIDEyKTsKKworCXN3aXRjaCAoa2V5X2xlbikgeworCWNhc2UgMTY6CisJCXQgPSBFX0tFWVszXTsKKwkJZm9yIChpID0gMDsgaSA8IDEwOyArK2kpCisJCQlsb29wNCAoaSk7CisJCWJyZWFrOworCisJY2FzZSAyNDoKKwkJRV9LRVlbNF0gPSB1MzJfaW4gKGluX2tleSArIDE2KTsKKwkJdCA9IEVfS0VZWzVdID0gdTMyX2luIChpbl9rZXkgKyAyMCk7CisJCWZvciAoaSA9IDA7IGkgPCA4OyArK2kpCisJCQlsb29wNiAoaSk7CisJCWJyZWFrOworCisJY2FzZSAzMjoKKwkJRV9LRVlbNF0gPSB1MzJfaW4gKGluX2tleSArIDE2KTsKKwkJRV9LRVlbNV0gPSB1MzJfaW4gKGluX2tleSArIDIwKTsKKwkJRV9LRVlbNl0gPSB1MzJfaW4gKGluX2tleSArIDI0KTsKKwkJdCA9IEVfS0VZWzddID0gdTMyX2luIChpbl9rZXkgKyAyOCk7CisJCWZvciAoaSA9IDA7IGkgPCA3OyArK2kpCisJCQlsb29wOCAoaSk7CisJCWJyZWFrOworCX0KKworCURfS0VZWzBdID0gRV9LRVlbMF07CisJRF9LRVlbMV0gPSBFX0tFWVsxXTsKKwlEX0tFWVsyXSA9IEVfS0VZWzJdOworCURfS0VZWzNdID0gRV9LRVlbM107CisKKwlmb3IgKGkgPSA0OyBpIDwga2V5X2xlbiArIDI0OyArK2kpIHsKKwkJaW1peF9jb2wgKERfS0VZW2ldLCBFX0tFWVtpXSk7CisJfQorCisJcmV0dXJuIDA7Cit9CisKKy8qIGVuY3J5cHQgYSBibG9jayBvZiB0ZXh0ICovCisKKyNkZWZpbmUgZl9ucm91bmQoYm8sIGJpLCBrKSBcCisgICAgZl9ybihibywgYmksIDAsIGspOyAgICAgXAorICAgIGZfcm4oYm8sIGJpLCAxLCBrKTsgICAgIFwKKyAgICBmX3JuKGJvLCBiaSwgMiwgayk7ICAgICBcCisgICAgZl9ybihibywgYmksIDMsIGspOyAgICAgXAorICAgIGsgKz0gNAorCisjZGVmaW5lIGZfbHJvdW5kKGJvLCBiaSwgaykgXAorICAgIGZfcmwoYm8sIGJpLCAwLCBrKTsgICAgIFwKKyAgICBmX3JsKGJvLCBiaSwgMSwgayk7ICAgICBcCisgICAgZl9ybChibywgYmksIDIsIGspOyAgICAgXAorICAgIGZfcmwoYm8sIGJpLCAzLCBrKQorCitzdGF0aWMgdm9pZCBhZXNfZW5jcnlwdCh2b2lkICpjdHhfYXJnLCB1OCAqb3V0LCBjb25zdCB1OCAqaW4pCit7CisJY29uc3Qgc3RydWN0IGFlc19jdHggKmN0eCA9IGN0eF9hcmc7CisJdTMyIGIwWzRdLCBiMVs0XTsKKwljb25zdCB1MzIgKmtwID0gRV9LRVkgKyA0OworCisJYjBbMF0gPSB1MzJfaW4gKGluKSBeIEVfS0VZWzBdOworCWIwWzFdID0gdTMyX2luIChpbiArIDQpIF4gRV9LRVlbMV07CisJYjBbMl0gPSB1MzJfaW4gKGluICsgOCkgXiBFX0tFWVsyXTsKKwliMFszXSA9IHUzMl9pbiAoaW4gKyAxMikgXiBFX0tFWVszXTsKKworCWlmIChjdHgtPmtleV9sZW5ndGggPiAyNCkgeworCQlmX25yb3VuZCAoYjEsIGIwLCBrcCk7CisJCWZfbnJvdW5kIChiMCwgYjEsIGtwKTsKKwl9CisKKwlpZiAoY3R4LT5rZXlfbGVuZ3RoID4gMTYpIHsKKwkJZl9ucm91bmQgKGIxLCBiMCwga3ApOworCQlmX25yb3VuZCAoYjAsIGIxLCBrcCk7CisJfQorCisJZl9ucm91bmQgKGIxLCBiMCwga3ApOworCWZfbnJvdW5kIChiMCwgYjEsIGtwKTsKKwlmX25yb3VuZCAoYjEsIGIwLCBrcCk7CisJZl9ucm91bmQgKGIwLCBiMSwga3ApOworCWZfbnJvdW5kIChiMSwgYjAsIGtwKTsKKwlmX25yb3VuZCAoYjAsIGIxLCBrcCk7CisJZl9ucm91bmQgKGIxLCBiMCwga3ApOworCWZfbnJvdW5kIChiMCwgYjEsIGtwKTsKKwlmX25yb3VuZCAoYjEsIGIwLCBrcCk7CisJZl9scm91bmQgKGIwLCBiMSwga3ApOworCisJdTMyX291dCAob3V0LCBiMFswXSk7CisJdTMyX291dCAob3V0ICsgNCwgYjBbMV0pOworCXUzMl9vdXQgKG91dCArIDgsIGIwWzJdKTsKKwl1MzJfb3V0IChvdXQgKyAxMiwgYjBbM10pOworfQorCisvKiBkZWNyeXB0IGEgYmxvY2sgb2YgdGV4dCAqLworCisjZGVmaW5lIGlfbnJvdW5kKGJvLCBiaSwgaykgXAorICAgIGlfcm4oYm8sIGJpLCAwLCBrKTsgICAgIFwKKyAgICBpX3JuKGJvLCBiaSwgMSwgayk7ICAgICBcCisgICAgaV9ybihibywgYmksIDIsIGspOyAgICAgXAorICAgIGlfcm4oYm8sIGJpLCAzLCBrKTsgICAgIFwKKyAgICBrIC09IDQKKworI2RlZmluZSBpX2xyb3VuZChibywgYmksIGspIFwKKyAgICBpX3JsKGJvLCBiaSwgMCwgayk7ICAgICBcCisgICAgaV9ybChibywgYmksIDEsIGspOyAgICAgXAorICAgIGlfcmwoYm8sIGJpLCAyLCBrKTsgICAgIFwKKyAgICBpX3JsKGJvLCBiaSwgMywgaykKKworc3RhdGljIHZvaWQgYWVzX2RlY3J5cHQodm9pZCAqY3R4X2FyZywgdTggKm91dCwgY29uc3QgdTggKmluKQoreworCWNvbnN0IHN0cnVjdCBhZXNfY3R4ICpjdHggPSBjdHhfYXJnOworCXUzMiBiMFs0XSwgYjFbNF07CisJY29uc3QgaW50IGtleV9sZW4gPSBjdHgtPmtleV9sZW5ndGg7CisJY29uc3QgdTMyICprcCA9IERfS0VZICsga2V5X2xlbiArIDIwOworCisJYjBbMF0gPSB1MzJfaW4gKGluKSBeIEVfS0VZW2tleV9sZW4gKyAyNF07CisJYjBbMV0gPSB1MzJfaW4gKGluICsgNCkgXiBFX0tFWVtrZXlfbGVuICsgMjVdOworCWIwWzJdID0gdTMyX2luIChpbiArIDgpIF4gRV9LRVlba2V5X2xlbiArIDI2XTsKKwliMFszXSA9IHUzMl9pbiAoaW4gKyAxMikgXiBFX0tFWVtrZXlfbGVuICsgMjddOworCisJaWYgKGtleV9sZW4gPiAyNCkgeworCQlpX25yb3VuZCAoYjEsIGIwLCBrcCk7CisJCWlfbnJvdW5kIChiMCwgYjEsIGtwKTsKKwl9CisKKwlpZiAoa2V5X2xlbiA+IDE2KSB7CisJCWlfbnJvdW5kIChiMSwgYjAsIGtwKTsKKwkJaV9ucm91bmQgKGIwLCBiMSwga3ApOworCX0KKworCWlfbnJvdW5kIChiMSwgYjAsIGtwKTsKKwlpX25yb3VuZCAoYjAsIGIxLCBrcCk7CisJaV9ucm91bmQgKGIxLCBiMCwga3ApOworCWlfbnJvdW5kIChiMCwgYjEsIGtwKTsKKwlpX25yb3VuZCAoYjEsIGIwLCBrcCk7CisJaV9ucm91bmQgKGIwLCBiMSwga3ApOworCWlfbnJvdW5kIChiMSwgYjAsIGtwKTsKKwlpX25yb3VuZCAoYjAsIGIxLCBrcCk7CisJaV9ucm91bmQgKGIxLCBiMCwga3ApOworCWlfbHJvdW5kIChiMCwgYjEsIGtwKTsKKworCXUzMl9vdXQgKG91dCwgYjBbMF0pOworCXUzMl9vdXQgKG91dCArIDQsIGIwWzFdKTsKKwl1MzJfb3V0IChvdXQgKyA4LCBiMFsyXSk7CisJdTMyX291dCAob3V0ICsgMTIsIGIwWzNdKTsKK30KKworCitzdGF0aWMgc3RydWN0IGNyeXB0b19hbGcgYWVzX2FsZyA9IHsKKwkuY3JhX25hbWUJCT0JImFlcyIsCisJLmNyYV9mbGFncwkJPQlDUllQVE9fQUxHX1RZUEVfQ0lQSEVSLAorCS5jcmFfYmxvY2tzaXplCQk9CUFFU19CTE9DS19TSVpFLAorCS5jcmFfY3R4c2l6ZQkJPQlzaXplb2Yoc3RydWN0IGFlc19jdHgpLAorCS5jcmFfbW9kdWxlCQk9CVRISVNfTU9EVUxFLAorCS5jcmFfbGlzdAkJPQlMSVNUX0hFQURfSU5JVChhZXNfYWxnLmNyYV9saXN0KSwKKwkuY3JhX3UJCQk9CXsKKwkJLmNpcGhlciA9IHsKKwkJCS5jaWFfbWluX2tleXNpemUJPQlBRVNfTUlOX0tFWV9TSVpFLAorCQkJLmNpYV9tYXhfa2V5c2l6ZQk9CUFFU19NQVhfS0VZX1NJWkUsCisJCQkuY2lhX3NldGtleQkgICAJPSAJYWVzX3NldF9rZXksCisJCQkuY2lhX2VuY3J5cHQJIAk9CWFlc19lbmNyeXB0LAorCQkJLmNpYV9kZWNyeXB0CSAgCT0JYWVzX2RlY3J5cHQKKwkJfQorCX0KK307CisKK3N0YXRpYyBpbnQgX19pbml0IGFlc19pbml0KHZvaWQpCit7CisJZ2VuX3RhYnMoKTsKKwlyZXR1cm4gY3J5cHRvX3JlZ2lzdGVyX2FsZygmYWVzX2FsZyk7Cit9CisKK3N0YXRpYyB2b2lkIF9fZXhpdCBhZXNfZmluaSh2b2lkKQoreworCWNyeXB0b191bnJlZ2lzdGVyX2FsZygmYWVzX2FsZyk7Cit9CisKK21vZHVsZV9pbml0KGFlc19pbml0KTsKK21vZHVsZV9leGl0KGFlc19maW5pKTsKKworTU9EVUxFX0RFU0NSSVBUSU9OKCJSaWpuZGFlbCAoQUVTKSBDaXBoZXIgQWxnb3JpdGhtIik7CitNT0RVTEVfTElDRU5TRSgiRHVhbCBCU0QvR1BMIik7CisKZGlmZiAtLWdpdCBhL2NyeXB0by9hbnViaXMuYyBiL2NyeXB0by9hbnViaXMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTI1ZWIwCi0tLSAvZGV2L251bGwKKysrIGIvY3J5cHRvL2FudWJpcy5jCkBAIC0wLDAgKzEsNzE5IEBACisvKgorICogQ3J5cHRvZ3JhcGhpYyBBUEkuCisgKgorICogQW51YmlzIEFsZ29yaXRobQorICoKKyAqIFRoZSBBbnViaXMgYWxnb3JpdGhtIHdhcyBkZXZlbG9wZWQgYnkgUGF1bG8gUy4gTC4gTS4gQmFycmV0byBhbmQKKyAqIFZpbmNlbnQgUmlqbWVuLgorICoKKyAqIFNlZQorICoKKyAqCVAuUy5MLk0uIEJhcnJldG8sIFYuIFJpam1lbiwKKyAqCWBgVGhlIEFudWJpcyBibG9jayBjaXBoZXIsJycKKyAqCU5FU1NJRSBzdWJtaXNzaW9uLCAyMDAwLgorICoKKyAqIFRoaXMgc29mdHdhcmUgaW1wbGVtZW50cyB0aGUgInR3ZWFrZWQiIHZlcnNpb24gb2YgQW51YmlzLgorICogT25seSB0aGUgUy1ib3ggYW5kIChjb25zZXF1ZW50bHkpIHRoZSByb3VuZHMgY29uc3RhbnRzIGhhdmUgYmVlbgorICogY2hhbmdlZC4KKyAqCisgKiBUaGUgb3JpZ2luYWwgYXV0aG9ycyBoYXZlIGRpc2NsYWltZWQgYWxsIGNvcHlyaWdodCBpbnRlcmVzdCBpbiB0aGlzCisgKiBjb2RlIGFuZCB0aHVzIHB1dCBpdCBpbiB0aGUgcHVibGljIGRvbWFpbi4gVGhlIHN1YnNlcXVlbnQgYXV0aG9ycworICogaGF2ZSBwdXQgdGhpcyB1bmRlciB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCisgKgorICogQnkgQWFyb24gR3JvdGhlIGFqZ3JvdGhlQHlhaG9vLmNvbSwgT2N0b2JlciAyOCwgMjAwNAorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICovCisKKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvbW0uaD4KKyNpbmNsdWRlIDxhc20vc2NhdHRlcmxpc3QuaD4KKyNpbmNsdWRlIDxsaW51eC9jcnlwdG8uaD4KKworI2RlZmluZSBBTlVCSVNfTUlOX0tFWV9TSVpFCTE2CisjZGVmaW5lIEFOVUJJU19NQVhfS0VZX1NJWkUJNDAKKyNkZWZpbmUgQU5VQklTX0JMT0NLX1NJWkUJMTYKKyNkZWZpbmUgQU5VQklTX01BWF9OCQkxMAorI2RlZmluZSBBTlVCSVNfTUFYX1JPVU5EUwkoOCArIEFOVUJJU19NQVhfTikKKworc3RydWN0IGFudWJpc19jdHggeworCWludCBrZXlfbGVuOyAvLyBpbiBiaXRzCisJaW50IFI7CisJdTMyIEVbQU5VQklTX01BWF9ST1VORFMgKyAxXVs0XTsKKwl1MzIgRFtBTlVCSVNfTUFYX1JPVU5EUyArIDFdWzRdOworfTsKKworc3RhdGljIGNvbnN0IHUzMiBUMFsyNTZdID0geworCTB4YmE2OWQyYmJVLCAweDU0YTg0ZGU1VSwgMHgyZjVlYmNlMlUsIDB4NzRlOGNkMjVVLAorCTB4NTNhNjUxZjdVLCAweGQzYmI2YmQwVSwgMHhkMmI5NmZkNlUsIDB4NGQ5YTI5YjNVLAorCTB4NTBhMDVkZmRVLCAweGFjNDU4YWNmVSwgMHg4ZDA3MGUwOVUsIDB4YmY2M2M2YTVVLAorCTB4NzBlMGRkM2RVLCAweDUyYTQ1NWYxVSwgMHg5YTI5NTI3YlUsIDB4NGM5ODJkYjVVLAorCTB4ZWFjOThmNDZVLCAweGQ1Yjc3M2M0VSwgMHg5NzMzNjY1NVUsIDB4ZDFiZjYzZGNVLAorCTB4MzM2NmNjYWFVLCAweDUxYTI1OWZiVSwgMHg1YmI2NzFjN1UsIDB4YTY1MWEyZjNVLAorCTB4ZGVhMTVmZmVVLCAweDQ4OTAzZGFkVSwgMHhhODRkOWFkN1UsIDB4OTkyZjVlNzFVLAorCTB4ZGJhYjRiZTBVLCAweDMyNjRjOGFjVSwgMHhiNzczZTY5NVUsIDB4ZmNlNWQ3MzJVLAorCTB4ZTNkYmFiNzBVLCAweDllMjE0MjYzVSwgMHg5MTNmN2U0MVUsIDB4OWIyYjU2N2RVLAorCTB4ZTJkOWFmNzZVLCAweGJiNmJkNmJkVSwgMHg0MTgyMTk5YlUsIDB4NmVkY2E1NzlVLAorCTB4YTU1N2FlZjlVLCAweGNiOGIwYjgwVSwgMHg2YmQ2YjE2N1UsIDB4OTUzNzZlNTlVLAorCTB4YTE1ZmJlZTFVLCAweGYzZmJlYjEwVSwgMHhiMTdmZmU4MVUsIDB4MDIwNDA4MGNVLAorCTB4Y2M4NTE3OTJVLCAweGM0OTUzN2EyVSwgMHgxZDNhNzQ0ZVUsIDB4MTQyODUwNzhVLAorCTB4YzM5YjJiYjBVLCAweDYzYzY5MTU3VSwgMHhkYWE5NGZlNlUsIDB4NWRiYTY5ZDNVLAorCTB4NWZiZTYxZGZVLCAweGRjYTU1N2YyVSwgMHg3ZGZhZTkxM1UsIDB4Y2Q4NzEzOTRVLAorCTB4N2ZmZWUxMWZVLCAweDVhYjQ3NWMxVSwgMHg2Y2Q4YWQ3NVUsIDB4NWNiODZkZDVVLAorCTB4ZjdmM2ZiMDhVLCAweDI2NGM5OGQ0VSwgMHhmZmUzZGIzOFUsIDB4ZWRjNzkzNTRVLAorCTB4ZThjZDg3NGFVLCAweDlkMjc0ZTY5VSwgMHg2ZmRlYTE3ZlUsIDB4OGUwMTAyMDNVLAorCTB4MTkzMjY0NTZVLCAweGEwNWRiYWU3VSwgMHhmMGZkZTcxYVUsIDB4ODkwZjFlMTFVLAorCTB4MGYxZTNjMjJVLCAweDA3MGUxYzEyVSwgMHhhZjQzODZjNVUsIDB4ZmJlYmNiMjBVLAorCTB4MDgxMDIwMzBVLCAweDE1MmE1NDdlVSwgMHgwZDFhMzQyZVUsIDB4MDQwODEwMThVLAorCTB4MDEwMjA0MDZVLCAweDY0Yzg4ZDQ1VSwgMHhkZmEzNWJmOFUsIDB4NzZlY2M1MjlVLAorCTB4NzlmMmY5MGJVLCAweGRkYTc1M2Y0VSwgMHgzZDdhZjQ4ZVUsIDB4MTYyYzU4NzRVLAorCTB4M2Y3ZWZjODJVLCAweDM3NmVkY2IyVSwgMHg2ZGRhYTk3M1UsIDB4Mzg3MGUwOTBVLAorCTB4Yjk2ZmRlYjFVLCAweDczZTZkMTM3VSwgMHhlOWNmODM0Y1UsIDB4MzU2YWQ0YmVVLAorCTB4NTVhYTQ5ZTNVLCAweDcxZTJkOTNiVSwgMHg3YmY2ZjEwN1UsIDB4OGMwNTBhMGZVLAorCTB4NzJlNGQ1MzFVLCAweDg4MGQxYTE3VSwgMHhmNmYxZmYwZVUsIDB4MmE1NGE4ZmNVLAorCTB4M2U3Y2Y4ODRVLCAweDVlYmM2NWQ5VSwgMHgyNzRlOWNkMlUsIDB4NDY4YzA1ODlVLAorCTB4MGMxODMwMjhVLCAweDY1Y2E4OTQzVSwgMHg2OGQwYmQ2ZFUsIDB4NjFjMjk5NWJVLAorCTB4MDMwNjBjMGFVLCAweGMxOWYyM2JjVSwgMHg1N2FlNDFlZlUsIDB4ZDZiMTdmY2VVLAorCTB4ZDlhZjQzZWNVLCAweDU4YjA3ZGNkVSwgMHhkOGFkNDdlYVUsIDB4NjZjYzg1NDlVLAorCTB4ZDdiMzdiYzhVLCAweDNhNzRlODljVSwgMHhjODhkMDc4YVUsIDB4M2M3OGYwODhVLAorCTB4ZmFlOWNmMjZVLCAweDk2MzE2MjUzVSwgMHhhNzUzYTZmNVUsIDB4OTgyZDVhNzdVLAorCTB4ZWNjNTk3NTJVLCAweGI4NmRkYWI3VSwgMHhjNzkzM2JhOFUsIDB4YWU0MTgyYzNVLAorCTB4NjlkMmI5NmJVLCAweDRiOTYzMWE3VSwgMHhhYjRiOTZkZFUsIDB4YTk0ZjllZDFVLAorCTB4NjdjZTgxNGZVLCAweDBhMTQyODNjVSwgMHg0NzhlMDE4ZlUsIDB4ZjJmOWVmMTZVLAorCTB4YjU3N2VlOTlVLCAweDIyNDQ4OGNjVSwgMHhlNWQ3YjM2NFUsIDB4ZWVjMTlmNWVVLAorCTB4YmU2MWMyYTNVLCAweDJiNTZhY2ZhVSwgMHg4MTFmM2UyMVUsIDB4MTIyNDQ4NmNVLAorCTB4ODMxYjM2MmRVLCAweDFiMzY2YzVhVSwgMHgwZTFjMzgyNFUsIDB4MjM0NjhjY2FVLAorCTB4ZjVmN2YzMDRVLCAweDQ1OGEwOTgzVSwgMHgyMTQyODRjNlUsIDB4Y2U4MTFmOWVVLAorCTB4NDk5MjM5YWJVLCAweDJjNThiMGU4VSwgMHhmOWVmYzMyY1UsIDB4ZTZkMWJmNmVVLAorCTB4YjY3MWUyOTNVLCAweDI4NTBhMGYwVSwgMHgxNzJlNWM3MlUsIDB4ODIxOTMyMmJVLAorCTB4MWEzNDY4NWNVLCAweDhiMGIxNjFkVSwgMHhmZWUxZGYzZVUsIDB4OGEwOTEyMWJVLAorCTB4MDkxMjI0MzZVLCAweGM5OGYwMzhjVSwgMHg4NzEzMjYzNVUsIDB4NGU5YzI1YjlVLAorCTB4ZTFkZmEzN2NVLCAweDJlNWNiOGU0VSwgMHhlNGQ1Yjc2MlUsIDB4ZTBkZGE3N2FVLAorCTB4ZWJjYjhiNDBVLCAweDkwM2Q3YTQ3VSwgMHhhNDU1YWFmZlUsIDB4MWUzYzc4NDRVLAorCTB4ODUxNzJlMzlVLCAweDYwYzA5ZDVkVSwgMHgwMDAwMDAwMFUsIDB4MjU0YTk0ZGVVLAorCTB4ZjRmNWY3MDJVLCAweGYxZmZlMzFjVSwgMHg5NDM1NmE1ZlUsIDB4MGIxNjJjM2FVLAorCTB4ZTdkM2JiNjhVLCAweDc1ZWFjOTIzVSwgMHhlZmMzOWI1OFUsIDB4MzQ2OGQwYjhVLAorCTB4MzE2MmM0YTZVLCAweGQ0YjU3N2MyVSwgMHhkMGJkNjdkYVUsIDB4ODYxMTIyMzNVLAorCTB4N2VmY2U1MTlVLCAweGFkNDc4ZWM5VSwgMHhmZGU3ZDMzNFUsIDB4Mjk1MmE0ZjZVLAorCTB4MzA2MGMwYTBVLCAweDNiNzZlYzlhVSwgMHg5ZjIzNDY2NVUsIDB4ZjhlZGM3MmFVLAorCTB4YzY5MTNmYWVVLCAweDEzMjY0YzZhVSwgMHgwNjBjMTgxNFUsIDB4MDUwYTE0MWVVLAorCTB4YzU5NzMzYTRVLCAweDExMjI0NDY2VSwgMHg3N2VlYzEyZlUsIDB4N2NmOGVkMTVVLAorCTB4N2FmNGY1MDFVLCAweDc4ZjBmZDBkVSwgMHgzNjZjZDhiNFUsIDB4MWMzODcwNDhVLAorCTB4Mzk3MmU0OTZVLCAweDU5YjI3OWNiVSwgMHgxODMwNjA1MFUsIDB4NTZhYzQ1ZTlVLAorCTB4YjM3YmY2OGRVLCAweGIwN2RmYTg3VSwgMHgyNDQ4OTBkOFUsIDB4MjA0MDgwYzBVLAorCTB4YjI3OWYyOGJVLCAweDkyMzk3MjRiVSwgMHhhMzViYjZlZFUsIDB4YzA5ZDI3YmFVLAorCTB4NDQ4ODBkODVVLCAweDYyYzQ5NTUxVSwgMHgxMDIwNDA2MFUsIDB4YjQ3NWVhOWZVLAorCTB4ODQxNTJhM2ZVLCAweDQzODYxMTk3VSwgMHg5MzNiNzY0ZFUsIDB4YzI5OTJmYjZVLAorCTB4NGE5NDM1YTFVLCAweGJkNjdjZWE5VSwgMHg4ZjAzMDYwNVUsIDB4MmQ1YWI0ZWVVLAorCTB4YmM2NWNhYWZVLCAweDljMjU0YTZmVSwgMHg2YWQ0YjU2MVUsIDB4NDA4MDFkOWRVLAorCTB4Y2Y4MzFiOThVLCAweGEyNTliMmViVSwgMHg4MDFkM2EyN1UsIDB4NGY5ZTIxYmZVLAorCTB4MWYzZTdjNDJVLCAweGNhODkwZjg2VSwgMHhhYTQ5OTJkYlUsIDB4NDI4NDE1OTFVLAorfTsKKworc3RhdGljIGNvbnN0IHUzMiBUMVsyNTZdID0geworCTB4NjliYWJiZDJVLCAweGE4NTRlNTRkVSwgMHg1ZTJmZTJiY1UsIDB4ZTg3NDI1Y2RVLAorCTB4YTY1M2Y3NTFVLCAweGJiZDNkMDZiVSwgMHhiOWQyZDY2ZlUsIDB4OWE0ZGIzMjlVLAorCTB4YTA1MGZkNWRVLCAweDQ1YWNjZjhhVSwgMHgwNzhkMDkwZVUsIDB4NjNiZmE1YzZVLAorCTB4ZTA3MDNkZGRVLCAweGE0NTJmMTU1VSwgMHgyOTlhN2I1MlUsIDB4OTg0Y2I1MmRVLAorCTB4YzllYTQ2OGZVLCAweGI3ZDVjNDczVSwgMHgzMzk3NTU2NlUsIDB4YmZkMWRjNjNVLAorCTB4NjYzM2FhY2NVLCAweGEyNTFmYjU5VSwgMHhiNjViYzc3MVUsIDB4NTFhNmYzYTJVLAorCTB4YTFkZWZlNWZVLCAweDkwNDhhZDNkVSwgMHg0ZGE4ZDc5YVUsIDB4MmY5OTcxNWVVLAorCTB4YWJkYmUwNGJVLCAweDY0MzJhY2M4VSwgMHg3M2I3OTVlNlUsIDB4ZTVmYzMyZDdVLAorCTB4ZGJlMzcwYWJVLCAweDIxOWU2MzQyVSwgMHgzZjkxNDE3ZVUsIDB4MmI5YjdkNTZVLAorCTB4ZDllMjc2YWZVLCAweDZiYmJiZGQ2VSwgMHg4MjQxOWIxOVUsIDB4ZGM2ZTc5YTVVLAorCTB4NTdhNWY5YWVVLCAweDhiY2I4MDBiVSwgMHhkNjZiNjdiMVUsIDB4Mzc5NTU5NmVVLAorCTB4NWZhMWUxYmVVLCAweGZiZjMxMGViVSwgMHg3ZmIxODFmZVUsIDB4MDQwMjBjMDhVLAorCTB4ODVjYzkyMTdVLCAweDk1YzRhMjM3VSwgMHgzYTFkNGU3NFUsIDB4MjgxNDc4NTBVLAorCTB4OWJjM2IwMmJVLCAweGM2NjM1NzkxVSwgMHhhOWRhZTY0ZlUsIDB4YmE1ZGQzNjlVLAorCTB4YmU1ZmRmNjFVLCAweGE1ZGNmMjU3VSwgMHhmYTdkMTNlOVUsIDB4ODdjZDk0MTNVLAorCTB4ZmU3ZjFmZTFVLCAweGI0NWFjMTc1VSwgMHhkODZjNzVhZFUsIDB4Yjg1Y2Q1NmRVLAorCTB4ZjNmNzA4ZmJVLCAweDRjMjZkNDk4VSwgMHhlM2ZmMzhkYlUsIDB4YzdlZDU0OTNVLAorCTB4Y2RlODRhODdVLCAweDI3OWQ2OTRlVSwgMHhkZTZmN2ZhMVUsIDB4MDE4ZTAzMDJVLAorCTB4MzIxOTU2NjRVLCAweDVkYTBlN2JhVSwgMHhmZGYwMWFlN1UsIDB4MGY4OTExMWVVLAorCTB4MWUwZjIyM2NVLCAweDBlMDcxMjFjVSwgMHg0M2FmYzU4NlUsIDB4ZWJmYjIwY2JVLAorCTB4MTAwODMwMjBVLCAweDJhMTU3ZTU0VSwgMHgxYTBkMmUzNFUsIDB4MDgwNDE4MTBVLAorCTB4MDIwMTA2MDRVLCAweGM4NjQ0NThkVSwgMHhhM2RmZjg1YlUsIDB4ZWM3NjI5YzVVLAorCTB4ZjI3OTBiZjlVLCAweGE3ZGRmNDUzVSwgMHg3YTNkOGVmNFUsIDB4MmMxNjc0NThVLAorCTB4N2UzZjgyZmNVLCAweDZlMzdiMmRjVSwgMHhkYTZkNzNhOVUsIDB4NzAzODkwZTBVLAorCTB4NmZiOWIxZGVVLCAweGU2NzMzN2QxVSwgMHhjZmU5NGM4M1UsIDB4NmEzNWJlZDRVLAorCTB4YWE1NWUzNDlVLCAweGUyNzEzYmQ5VSwgMHhmNjdiMDdmMVUsIDB4MDU4YzBmMGFVLAorCTB4ZTQ3MjMxZDVVLCAweDBkODgxNzFhVSwgMHhmMWY2MGVmZlUsIDB4NTQyYWZjYThVLAorCTB4N2MzZTg0ZjhVLCAweGJjNWVkOTY1VSwgMHg0ZTI3ZDI5Y1UsIDB4OGM0Njg5MDVVLAorCTB4MTgwYzI4MzBVLCAweGNhNjU0Mzg5VSwgMHhkMDY4NmRiZFUsIDB4YzI2MTViOTlVLAorCTB4MDYwMzBhMGNVLCAweDlmYzFiYzIzVSwgMHhhZTU3ZWY0MVUsIDB4YjFkNmNlN2ZVLAorCTB4YWZkOWVjNDNVLCAweGIwNThjZDdkVSwgMHhhZGQ4ZWE0N1UsIDB4Y2M2NjQ5ODVVLAorCTB4YjNkN2M4N2JVLCAweDc0M2E5Y2U4VSwgMHg4ZGM4OGEwN1UsIDB4NzgzYzg4ZjBVLAorCTB4ZTlmYTI2Y2ZVLCAweDMxOTY1MzYyVSwgMHg1M2E3ZjVhNlUsIDB4MmQ5ODc3NWFVLAorCTB4YzVlYzUyOTdVLCAweDZkYjhiN2RhVSwgMHg5M2M3YTgzYlUsIDB4NDFhZWMzODJVLAorCTB4ZDI2OTZiYjlVLCAweDk2NGJhNzMxVSwgMHg0YmFiZGQ5NlUsIDB4NGZhOWQxOWVVLAorCTB4Y2U2NzRmODFVLCAweDE0MGEzYzI4VSwgMHg4ZTQ3OGYwMVUsIDB4ZjlmMjE2ZWZVLAorCTB4NzdiNTk5ZWVVLCAweDQ0MjJjYzg4VSwgMHhkN2U1NjRiM1UsIDB4YzFlZTVlOWZVLAorCTB4NjFiZWEzYzJVLCAweDU2MmJmYWFjVSwgMHgxZjgxMjEzZVUsIDB4MjQxMjZjNDhVLAorCTB4MWI4MzJkMzZVLCAweDM2MWI1YTZjVSwgMHgxYzBlMjQzOFUsIDB4NDYyM2NhOGNVLAorCTB4ZjdmNTA0ZjNVLCAweDhhNDU4MzA5VSwgMHg0MjIxYzY4NFUsIDB4ODFjZTllMWZVLAorCTB4OTI0OWFiMzlVLCAweDU4MmNlOGIwVSwgMHhlZmY5MmNjM1UsIDB4ZDFlNjZlYmZVLAorCTB4NzFiNjkzZTJVLCAweDUwMjhmMGEwVSwgMHgyZTE3NzI1Y1UsIDB4MTk4MjJiMzJVLAorCTB4MzQxYTVjNjhVLCAweDBiOGIxZDE2VSwgMHhlMWZlM2VkZlUsIDB4MDk4YTFiMTJVLAorCTB4MTIwOTM2MjRVLCAweDhmYzk4YzAzVSwgMHgxMzg3MzUyNlUsIDB4OWM0ZWI5MjVVLAorCTB4ZGZlMTdjYTNVLCAweDVjMmVlNGI4VSwgMHhkNWU0NjJiN1UsIDB4ZGRlMDdhYTdVLAorCTB4Y2JlYjQwOGJVLCAweDNkOTA0NzdhVSwgMHg1NWE0ZmZhYVUsIDB4M2MxZTQ0NzhVLAorCTB4MTc4NTM5MmVVLCAweGMwNjA1ZDlkVSwgMHgwMDAwMDAwMFUsIDB4NGEyNWRlOTRVLAorCTB4ZjVmNDAyZjdVLCAweGZmZjExY2UzVSwgMHgzNTk0NWY2YVUsIDB4MTYwYjNhMmNVLAorCTB4ZDNlNzY4YmJVLCAweGVhNzUyM2M5VSwgMHhjM2VmNTg5YlUsIDB4NjgzNGI4ZDBVLAorCTB4NjIzMWE2YzRVLCAweGI1ZDRjMjc3VSwgMHhiZGQwZGE2N1UsIDB4MTE4NjMzMjJVLAorCTB4ZmM3ZTE5ZTVVLCAweDQ3YWRjOThlVSwgMHhlN2ZkMzRkM1UsIDB4NTIyOWY2YTRVLAorCTB4NjAzMGEwYzBVLCAweDc2M2I5YWVjVSwgMHgyMzlmNjU0NlUsIDB4ZWRmODJhYzdVLAorCTB4OTFjNmFlM2ZVLCAweDI2MTM2YTRjVSwgMHgwYzA2MTQxOFUsIDB4MGEwNTFlMTRVLAorCTB4OTdjNWE0MzNVLCAweDIyMTE2NjQ0VSwgMHhlZTc3MmZjMVUsIDB4Zjg3YzE1ZWRVLAorCTB4ZjQ3YTAxZjVVLCAweGYwNzgwZGZkVSwgMHg2YzM2YjRkOFUsIDB4MzgxYzQ4NzBVLAorCTB4NzIzOTk2ZTRVLCAweGIyNTljYjc5VSwgMHgzMDE4NTA2MFUsIDB4YWM1NmU5NDVVLAorCTB4N2JiMzhkZjZVLCAweDdkYjA4N2ZhVSwgMHg0ODI0ZDg5MFUsIDB4NDAyMGMwODBVLAorCTB4NzliMjhiZjJVLCAweDM5OTI0YjcyVSwgMHg1YmEzZWRiNlUsIDB4OWRjMGJhMjdVLAorCTB4ODg0NDg1MGRVLCAweGM0NjI1MTk1VSwgMHgyMDEwNjA0MFUsIDB4NzViNDlmZWFVLAorCTB4MTU4NDNmMmFVLCAweDg2NDM5NzExVSwgMHgzYjkzNGQ3NlUsIDB4OTljMmI2MmZVLAorCTB4OTQ0YWExMzVVLCAweDY3YmRhOWNlVSwgMHgwMzhmMDUwNlUsIDB4NWEyZGVlYjRVLAorCTB4NjViY2FmY2FVLCAweDI1OWM2ZjRhVSwgMHhkNDZhNjFiNVUsIDB4ODA0MDlkMWRVLAorCTB4ODNjZjk4MWJVLCAweDU5YTJlYmIyVSwgMHgxZDgwMjczYVUsIDB4OWU0ZmJmMjFVLAorCTB4M2UxZjQyN2NVLCAweDg5Y2E4NjBmVSwgMHg0OWFhZGI5MlUsIDB4ODQ0MjkxMTVVLAorfTsKKworc3RhdGljIGNvbnN0IHUzMiBUMlsyNTZdID0geworCTB4ZDJiYmJhNjlVLCAweDRkZTU1NGE4VSwgMHhiY2UyMmY1ZVUsIDB4Y2QyNTc0ZThVLAorCTB4NTFmNzUzYTZVLCAweDZiZDBkM2JiVSwgMHg2ZmQ2ZDJiOVUsIDB4MjliMzRkOWFVLAorCTB4NWRmZDUwYTBVLCAweDhhY2ZhYzQ1VSwgMHgwZTA5OGQwN1UsIDB4YzZhNWJmNjNVLAorCTB4ZGQzZDcwZTBVLCAweDU1ZjE1MmE0VSwgMHg1MjdiOWEyOVUsIDB4MmRiNTRjOThVLAorCTB4OGY0NmVhYzlVLCAweDczYzRkNWI3VSwgMHg2NjU1OTczM1UsIDB4NjNkY2QxYmZVLAorCTB4Y2NhYTMzNjZVLCAweDU5ZmI1MWEyVSwgMHg3MWM3NWJiNlUsIDB4YTJmM2E2NTFVLAorCTB4NWZmZWRlYTFVLCAweDNkYWQ0ODkwVSwgMHg5YWQ3YTg0ZFUsIDB4NWU3MTk5MmZVLAorCTB4NGJlMGRiYWJVLCAweGM4YWMzMjY0VSwgMHhlNjk1Yjc3M1UsIDB4ZDczMmZjZTVVLAorCTB4YWI3MGUzZGJVLCAweDQyNjM5ZTIxVSwgMHg3ZTQxOTEzZlUsIDB4NTY3ZDliMmJVLAorCTB4YWY3NmUyZDlVLCAweGQ2YmRiYjZiVSwgMHgxOTliNDE4MlUsIDB4YTU3OTZlZGNVLAorCTB4YWVmOWE1NTdVLCAweDBiODBjYjhiVSwgMHhiMTY3NmJkNlUsIDB4NmU1OTk1MzdVLAorCTB4YmVlMWExNWZVLCAweGViMTBmM2ZiVSwgMHhmZTgxYjE3ZlUsIDB4MDgwYzAyMDRVLAorCTB4MTc5MmNjODVVLCAweDM3YTJjNDk1VSwgMHg3NDRlMWQzYVUsIDB4NTA3ODE0MjhVLAorCTB4MmJiMGMzOWJVLCAweDkxNTc2M2M2VSwgMHg0ZmU2ZGFhOVUsIDB4NjlkMzVkYmFVLAorCTB4NjFkZjVmYmVVLCAweDU3ZjJkY2E1VSwgMHhlOTEzN2RmYVUsIDB4MTM5NGNkODdVLAorCTB4ZTExZjdmZmVVLCAweDc1YzE1YWI0VSwgMHhhZDc1NmNkOFUsIDB4NmRkNTVjYjhVLAorCTB4ZmIwOGY3ZjNVLCAweDk4ZDQyNjRjVSwgMHhkYjM4ZmZlM1UsIDB4OTM1NGVkYzdVLAorCTB4ODc0YWU4Y2RVLCAweDRlNjk5ZDI3VSwgMHhhMTdmNmZkZVUsIDB4MDIwMzhlMDFVLAorCTB4NjQ1NjE5MzJVLCAweGJhZTdhMDVkVSwgMHhlNzFhZjBmZFUsIDB4MWUxMTg5MGZVLAorCTB4M2MyMjBmMWVVLCAweDFjMTIwNzBlVSwgMHg4NmM1YWY0M1UsIDB4Y2IyMGZiZWJVLAorCTB4MjAzMDA4MTBVLCAweDU0N2UxNTJhVSwgMHgzNDJlMGQxYVUsIDB4MTAxODA0MDhVLAorCTB4MDQwNjAxMDJVLCAweDhkNDU2NGM4VSwgMHg1YmY4ZGZhM1UsIDB4YzUyOTc2ZWNVLAorCTB4ZjkwYjc5ZjJVLCAweDUzZjRkZGE3VSwgMHhmNDhlM2Q3YVUsIDB4NTg3NDE2MmNVLAorCTB4ZmM4MjNmN2VVLCAweGRjYjIzNzZlVSwgMHhhOTczNmRkYVUsIDB4ZTA5MDM4NzBVLAorCTB4ZGViMWI5NmZVLCAweGQxMzc3M2U2VSwgMHg4MzRjZTljZlUsIDB4ZDRiZTM1NmFVLAorCTB4NDllMzU1YWFVLCAweGQ5M2I3MWUyVSwgMHhmMTA3N2JmNlUsIDB4MGEwZjhjMDVVLAorCTB4ZDUzMTcyZTRVLCAweDFhMTc4ODBkVSwgMHhmZjBlZjZmMVUsIDB4YThmYzJhNTRVLAorCTB4Zjg4NDNlN2NVLCAweDY1ZDk1ZWJjVSwgMHg5Y2QyMjc0ZVUsIDB4MDU4OTQ2OGNVLAorCTB4MzAyODBjMThVLCAweDg5NDM2NWNhVSwgMHhiZDZkNjhkMFUsIDB4OTk1YjYxYzJVLAorCTB4MGMwYTAzMDZVLCAweDIzYmNjMTlmVSwgMHg0MWVmNTdhZVUsIDB4N2ZjZWQ2YjFVLAorCTB4NDNlY2Q5YWZVLCAweDdkY2Q1OGIwVSwgMHg0N2VhZDhhZFUsIDB4ODU0OTY2Y2NVLAorCTB4N2JjOGQ3YjNVLCAweGU4OWMzYTc0VSwgMHgwNzhhYzg4ZFUsIDB4ZjA4ODNjNzhVLAorCTB4Y2YyNmZhZTlVLCAweDYyNTM5NjMxVSwgMHhhNmY1YTc1M1UsIDB4NWE3Nzk4MmRVLAorCTB4OTc1MmVjYzVVLCAweGRhYjdiODZkVSwgMHgzYmE4Yzc5M1UsIDB4ODJjM2FlNDFVLAorCTB4Yjk2YjY5ZDJVLCAweDMxYTc0Yjk2VSwgMHg5NmRkYWI0YlUsIDB4OWVkMWE5NGZVLAorCTB4ODE0ZjY3Y2VVLCAweDI4M2MwYTE0VSwgMHgwMThmNDc4ZVUsIDB4ZWYxNmYyZjlVLAorCTB4ZWU5OWI1NzdVLCAweDg4Y2MyMjQ0VSwgMHhiMzY0ZTVkN1UsIDB4OWY1ZWVlYzFVLAorCTB4YzJhM2JlNjFVLCAweGFjZmEyYjU2VSwgMHgzZTIxODExZlUsIDB4NDg2YzEyMjRVLAorCTB4MzYyZDgzMWJVLCAweDZjNWExYjM2VSwgMHgzODI0MGUxY1UsIDB4OGNjYTIzNDZVLAorCTB4ZjMwNGY1ZjdVLCAweDA5ODM0NThhVSwgMHg4NGM2MjE0MlUsIDB4MWY5ZWNlODFVLAorCTB4MzlhYjQ5OTJVLCAweGIwZTgyYzU4VSwgMHhjMzJjZjllZlUsIDB4YmY2ZWU2ZDFVLAorCTB4ZTI5M2I2NzFVLCAweGEwZjAyODUwVSwgMHg1YzcyMTcyZVUsIDB4MzIyYjgyMTlVLAorCTB4Njg1YzFhMzRVLCAweDE2MWQ4YjBiVSwgMHhkZjNlZmVlMVUsIDB4MTIxYjhhMDlVLAorCTB4MjQzNjA5MTJVLCAweDAzOGNjOThmVSwgMHgyNjM1ODcxM1UsIDB4MjViOTRlOWNVLAorCTB4YTM3Y2UxZGZVLCAweGI4ZTQyZTVjVSwgMHhiNzYyZTRkNVUsIDB4YTc3YWUwZGRVLAorCTB4OGI0MGViY2JVLCAweDdhNDc5MDNkVSwgMHhhYWZmYTQ1NVUsIDB4Nzg0NDFlM2NVLAorCTB4MmUzOTg1MTdVLCAweDlkNWQ2MGMwVSwgMHgwMDAwMDAwMFUsIDB4OTRkZTI1NGFVLAorCTB4ZjcwMmY0ZjVVLCAweGUzMWNmMWZmVSwgMHg2YTVmOTQzNVUsIDB4MmMzYTBiMTZVLAorCTB4YmI2OGU3ZDNVLCAweGM5MjM3NWVhVSwgMHg5YjU4ZWZjM1UsIDB4ZDBiODM0NjhVLAorCTB4YzRhNjMxNjJVLCAweDc3YzJkNGI1VSwgMHg2N2RhZDBiZFUsIDB4MjIzMzg2MTFVLAorCTB4ZTUxOTdlZmNVLCAweDhlYzlhZDQ3VSwgMHhkMzM0ZmRlN1UsIDB4YTRmNjI5NTJVLAorCTB4YzBhMDMwNjBVLCAweGVjOWEzYjc2VSwgMHg0NjY1OWYyM1UsIDB4YzcyYWY4ZWRVLAorCTB4M2ZhZWM2OTFVLCAweDRjNmExMzI2VSwgMHgxODE0MDYwY1UsIDB4MTQxZTA1MGFVLAorCTB4MzNhNGM1OTdVLCAweDQ0NjYxMTIyVSwgMHhjMTJmNzdlZVUsIDB4ZWQxNTdjZjhVLAorCTB4ZjUwMTdhZjRVLCAweGZkMGQ3OGYwVSwgMHhkOGI0MzY2Y1UsIDB4NzA0ODFjMzhVLAorCTB4ZTQ5NjM5NzJVLCAweDc5Y2I1OWIyVSwgMHg2MDUwMTgzMFUsIDB4NDVlOTU2YWNVLAorCTB4ZjY4ZGIzN2JVLCAweGZhODdiMDdkVSwgMHg5MGQ4MjQ0OFUsIDB4ODBjMDIwNDBVLAorCTB4ZjI4YmIyNzlVLCAweDcyNGI5MjM5VSwgMHhiNmVkYTM1YlUsIDB4MjdiYWMwOWRVLAorCTB4MGQ4NTQ0ODhVLCAweDk1NTE2MmM0VSwgMHg0MDYwMTAyMFUsIDB4ZWE5ZmI0NzVVLAorCTB4MmEzZjg0MTVVLCAweDExOTc0Mzg2VSwgMHg3NjRkOTMzYlUsIDB4MmZiNmMyOTlVLAorCTB4MzVhMTRhOTRVLCAweGNlYTliZDY3VSwgMHgwNjA1OGYwM1UsIDB4YjRlZTJkNWFVLAorCTB4Y2FhZmJjNjVVLCAweDRhNmY5YzI1VSwgMHhiNTYxNmFkNFUsIDB4MWQ5ZDQwODBVLAorCTB4MWI5OGNmODNVLCAweGIyZWJhMjU5VSwgMHgzYTI3ODAxZFUsIDB4MjFiZjRmOWVVLAorCTB4N2M0MjFmM2VVLCAweDBmODZjYTg5VSwgMHg5MmRiYWE0OVUsIDB4MTU5MTQyODRVLAorfTsKKworc3RhdGljIGNvbnN0IHUzMiBUM1syNTZdID0geworCTB4YmJkMjY5YmFVLCAweGU1NGRhODU0VSwgMHhlMmJjNWUyZlUsIDB4MjVjZGU4NzRVLAorCTB4Zjc1MWE2NTNVLCAweGQwNmJiYmQzVSwgMHhkNjZmYjlkMlUsIDB4YjMyOTlhNGRVLAorCTB4ZmQ1ZGEwNTBVLCAweGNmOGE0NWFjVSwgMHgwOTBlMDc4ZFUsIDB4YTVjNjYzYmZVLAorCTB4M2RkZGUwNzBVLCAweGYxNTVhNDUyVSwgMHg3YjUyMjk5YVUsIDB4YjUyZDk4NGNVLAorCTB4NDY4ZmM5ZWFVLCAweGM0NzNiN2Q1VSwgMHg1NTY2MzM5N1UsIDB4ZGM2M2JmZDFVLAorCTB4YWFjYzY2MzNVLCAweGZiNTlhMjUxVSwgMHhjNzcxYjY1YlUsIDB4ZjNhMjUxYTZVLAorCTB4ZmU1ZmExZGVVLCAweGFkM2Q5MDQ4VSwgMHhkNzlhNGRhOFUsIDB4NzE1ZTJmOTlVLAorCTB4ZTA0YmFiZGJVLCAweGFjYzg2NDMyVSwgMHg5NWU2NzNiN1UsIDB4MzJkN2U1ZmNVLAorCTB4NzBhYmRiZTNVLCAweDYzNDIyMTllVSwgMHg0MTdlM2Y5MVUsIDB4N2Q1NjJiOWJVLAorCTB4NzZhZmQ5ZTJVLCAweGJkZDY2YmJiVSwgMHg5YjE5ODI0MVUsIDB4NzlhNWRjNmVVLAorCTB4ZjlhZTU3YTVVLCAweDgwMGI4YmNiVSwgMHg2N2IxZDY2YlUsIDB4NTk2ZTM3OTVVLAorCTB4ZTFiZTVmYTFVLCAweDEwZWJmYmYzVSwgMHg4MWZlN2ZiMVUsIDB4MGMwODA0MDJVLAorCTB4OTIxNzg1Y2NVLCAweGEyMzc5NWM0VSwgMHg0ZTc0M2ExZFUsIDB4Nzg1MDI4MTRVLAorCTB4YjAyYjliYzNVLCAweDU3OTFjNjYzVSwgMHhlNjRmYTlkYVUsIDB4ZDM2OWJhNWRVLAorCTB4ZGY2MWJlNWZVLCAweGYyNTdhNWRjVSwgMHgxM2U5ZmE3ZFUsIDB4OTQxMzg3Y2RVLAorCTB4MWZlMWZlN2ZVLCAweGMxNzViNDVhVSwgMHg3NWFkZDg2Y1UsIDB4ZDU2ZGI4NWNVLAorCTB4MDhmYmYzZjdVLCAweGQ0OTg0YzI2VSwgMHgzOGRiZTNmZlUsIDB4NTQ5M2M3ZWRVLAorCTB4NGE4N2NkZThVLCAweDY5NGUyNzlkVSwgMHg3ZmExZGU2ZlUsIDB4MDMwMjAxOGVVLAorCTB4NTY2NDMyMTlVLCAweGU3YmE1ZGEwVSwgMHgxYWU3ZmRmMFUsIDB4MTExZTBmODlVLAorCTB4MjIzYzFlMGZVLCAweDEyMWMwZTA3VSwgMHhjNTg2NDNhZlUsIDB4MjBjYmViZmJVLAorCTB4MzAyMDEwMDhVLCAweDdlNTQyYTE1VSwgMHgyZTM0MWEwZFUsIDB4MTgxMDA4MDRVLAorCTB4MDYwNDAyMDFVLCAweDQ1OGRjODY0VSwgMHhmODViYTNkZlUsIDB4MjljNWVjNzZVLAorCTB4MGJmOWYyNzlVLCAweGY0NTNhN2RkVSwgMHg4ZWY0N2EzZFUsIDB4NzQ1ODJjMTZVLAorCTB4ODJmYzdlM2ZVLCAweGIyZGM2ZTM3VSwgMHg3M2E5ZGE2ZFUsIDB4OTBlMDcwMzhVLAorCTB4YjFkZTZmYjlVLCAweDM3ZDFlNjczVSwgMHg0YzgzY2ZlOVUsIDB4YmVkNDZhMzVVLAorCTB4ZTM0OWFhNTVVLCAweDNiZDllMjcxVSwgMHgwN2YxZjY3YlUsIDB4MGYwYTA1OGNVLAorCTB4MzFkNWU0NzJVLCAweDE3MWEwZDg4VSwgMHgwZWZmZjFmNlUsIDB4ZmNhODU0MmFVLAorCTB4ODRmODdjM2VVLCAweGQ5NjViYzVlVSwgMHhkMjljNGUyN1UsIDB4ODkwNThjNDZVLAorCTB4MjgzMDE4MGNVLCAweDQzODljYTY1VSwgMHg2ZGJkZDA2OFUsIDB4NWI5OWMyNjFVLAorCTB4MGEwYzA2MDNVLCAweGJjMjM5ZmMxVSwgMHhlZjQxYWU1N1UsIDB4Y2U3ZmIxZDZVLAorCTB4ZWM0M2FmZDlVLCAweGNkN2RiMDU4VSwgMHhlYTQ3YWRkOFUsIDB4NDk4NWNjNjZVLAorCTB4Yzg3YmIzZDdVLCAweDljZTg3NDNhVSwgMHg4YTA3OGRjOFUsIDB4ODhmMDc4M2NVLAorCTB4MjZjZmU5ZmFVLCAweDUzNjIzMTk2VSwgMHhmNWE2NTNhN1UsIDB4Nzc1YTJkOThVLAorCTB4NTI5N2M1ZWNVLCAweGI3ZGE2ZGI4VSwgMHhhODNiOTNjN1UsIDB4YzM4MjQxYWVVLAorCTB4NmJiOWQyNjlVLCAweGE3MzE5NjRiVSwgMHhkZDk2NGJhYlUsIDB4ZDE5ZTRmYTlVLAorCTB4NGY4MWNlNjdVLCAweDNjMjgxNDBhVSwgMHg4ZjAxOGU0N1UsIDB4MTZlZmY5ZjJVLAorCTB4OTllZTc3YjVVLCAweGNjODg0NDIyVSwgMHg2NGIzZDdlNVUsIDB4NWU5ZmMxZWVVLAorCTB4YTNjMjYxYmVVLCAweGZhYWM1NjJiVSwgMHgyMTNlMWY4MVUsIDB4NmM0ODI0MTJVLAorCTB4MmQzNjFiODNVLCAweDVhNmMzNjFiVSwgMHgyNDM4MWMwZVUsIDB4Y2E4YzQ2MjNVLAorCTB4MDRmM2Y3ZjVVLCAweDgzMDk4YTQ1VSwgMHhjNjg0NDIyMVUsIDB4OWUxZjgxY2VVLAorCTB4YWIzOTkyNDlVLCAweGU4YjA1ODJjVSwgMHgyY2MzZWZmOVUsIDB4NmViZmQxZTZVLAorCTB4OTNlMjcxYjZVLCAweGYwYTA1MDI4VSwgMHg3MjVjMmUxN1UsIDB4MmIzMjE5ODJVLAorCTB4NWM2ODM0MWFVLCAweDFkMTYwYjhiVSwgMHgzZWRmZTFmZVUsIDB4MWIxMjA5OGFVLAorCTB4MzYyNDEyMDlVLCAweDhjMDM4ZmM5VSwgMHgzNTI2MTM4N1UsIDB4YjkyNTljNGVVLAorCTB4N2NhM2RmZTFVLCAweGU0Yjg1YzJlVSwgMHg2MmI3ZDVlNFUsIDB4N2FhN2RkZTBVLAorCTB4NDA4YmNiZWJVLCAweDQ3N2EzZDkwVSwgMHhmZmFhNTVhNFUsIDB4NDQ3ODNjMWVVLAorCTB4MzkyZTE3ODVVLCAweDVkOWRjMDYwVSwgMHgwMDAwMDAwMFUsIDB4ZGU5NDRhMjVVLAorCTB4MDJmN2Y1ZjRVLCAweDFjZTNmZmYxVSwgMHg1ZjZhMzU5NFUsIDB4M2EyYzE2MGJVLAorCTB4NjhiYmQzZTdVLCAweDIzYzllYTc1VSwgMHg1ODliYzNlZlUsIDB4YjhkMDY4MzRVLAorCTB4YTZjNDYyMzFVLCAweGMyNzdiNWQ0VSwgMHhkYTY3YmRkMFUsIDB4MzMyMjExODZVLAorCTB4MTllNWZjN2VVLCAweGM5OGU0N2FkVSwgMHgzNGQzZTdmZFUsIDB4ZjZhNDUyMjlVLAorCTB4YTBjMDYwMzBVLCAweDlhZWM3NjNiVSwgMHg2NTQ2MjM5ZlUsIDB4MmFjN2VkZjhVLAorCTB4YWUzZjkxYzZVLCAweDZhNGMyNjEzVSwgMHgxNDE4MGMwNlUsIDB4MWUxNDBhMDVVLAorCTB4YTQzMzk3YzVVLCAweDY2NDQyMjExVSwgMHgyZmMxZWU3N1UsIDB4MTVlZGY4N2NVLAorCTB4MDFmNWY0N2FVLCAweDBkZmRmMDc4VSwgMHhiNGQ4NmMzNlUsIDB4NDg3MDM4MWNVLAorCTB4OTZlNDcyMzlVLCAweGNiNzliMjU5VSwgMHg1MDYwMzAxOFUsIDB4ZTk0NWFjNTZVLAorCTB4OGRmNjdiYjNVLCAweDg3ZmE3ZGIwVSwgMHhkODkwNDgyNFUsIDB4YzA4MDQwMjBVLAorCTB4OGJmMjc5YjJVLCAweDRiNzIzOTkyVSwgMHhlZGI2NWJhM1UsIDB4YmEyNzlkYzBVLAorCTB4ODUwZDg4NDRVLCAweDUxOTVjNDYyVSwgMHg2MDQwMjAxMFUsIDB4OWZlYTc1YjRVLAorCTB4M2YyYTE1ODRVLCAweDk3MTE4NjQzVSwgMHg0ZDc2M2I5M1UsIDB4YjYyZjk5YzJVLAorCTB4YTEzNTk0NGFVLCAweGE5Y2U2N2JkVSwgMHgwNTA2MDM4ZlUsIDB4ZWViNDVhMmRVLAorCTB4YWZjYTY1YmNVLCAweDZmNGEyNTljVSwgMHg2MWI1ZDQ2YVUsIDB4OWQxZDgwNDBVLAorCTB4OTgxYjgzY2ZVLCAweGViYjI1OWEyVSwgMHgyNzNhMWQ4MFUsIDB4YmYyMTllNGZVLAorCTB4NDI3YzNlMWZVLCAweDg2MGY4OWNhVSwgMHhkYjkyNDlhYVUsIDB4OTExNTg0NDJVLAorfTsKKworc3RhdGljIGNvbnN0IHUzMiBUNFsyNTZdID0geworCTB4YmFiYWJhYmFVLCAweDU0NTQ1NDU0VSwgMHgyZjJmMmYyZlUsIDB4NzQ3NDc0NzRVLAorCTB4NTM1MzUzNTNVLCAweGQzZDNkM2QzVSwgMHhkMmQyZDJkMlUsIDB4NGQ0ZDRkNGRVLAorCTB4NTA1MDUwNTBVLCAweGFjYWNhY2FjVSwgMHg4ZDhkOGQ4ZFUsIDB4YmZiZmJmYmZVLAorCTB4NzA3MDcwNzBVLCAweDUyNTI1MjUyVSwgMHg5YTlhOWE5YVUsIDB4NGM0YzRjNGNVLAorCTB4ZWFlYWVhZWFVLCAweGQ1ZDVkNWQ1VSwgMHg5Nzk3OTc5N1UsIDB4ZDFkMWQxZDFVLAorCTB4MzMzMzMzMzNVLCAweDUxNTE1MTUxVSwgMHg1YjViNWI1YlUsIDB4YTZhNmE2YTZVLAorCTB4ZGVkZWRlZGVVLCAweDQ4NDg0ODQ4VSwgMHhhOGE4YThhOFUsIDB4OTk5OTk5OTlVLAorCTB4ZGJkYmRiZGJVLCAweDMyMzIzMjMyVSwgMHhiN2I3YjdiN1UsIDB4ZmNmY2ZjZmNVLAorCTB4ZTNlM2UzZTNVLCAweDllOWU5ZTllVSwgMHg5MTkxOTE5MVUsIDB4OWI5YjliOWJVLAorCTB4ZTJlMmUyZTJVLCAweGJiYmJiYmJiVSwgMHg0MTQxNDE0MVUsIDB4NmU2ZTZlNmVVLAorCTB4YTVhNWE1YTVVLCAweGNiY2JjYmNiVSwgMHg2YjZiNmI2YlUsIDB4OTU5NTk1OTVVLAorCTB4YTFhMWExYTFVLCAweGYzZjNmM2YzVSwgMHhiMWIxYjFiMVUsIDB4MDIwMjAyMDJVLAorCTB4Y2NjY2NjY2NVLCAweGM0YzRjNGM0VSwgMHgxZDFkMWQxZFUsIDB4MTQxNDE0MTRVLAorCTB4YzNjM2MzYzNVLCAweDYzNjM2MzYzVSwgMHhkYWRhZGFkYVUsIDB4NWQ1ZDVkNWRVLAorCTB4NWY1ZjVmNWZVLCAweGRjZGNkY2RjVSwgMHg3ZDdkN2Q3ZFUsIDB4Y2RjZGNkY2RVLAorCTB4N2Y3ZjdmN2ZVLCAweDVhNWE1YTVhVSwgMHg2YzZjNmM2Y1UsIDB4NWM1YzVjNWNVLAorCTB4ZjdmN2Y3ZjdVLCAweDI2MjYyNjI2VSwgMHhmZmZmZmZmZlUsIDB4ZWRlZGVkZWRVLAorCTB4ZThlOGU4ZThVLCAweDlkOWQ5ZDlkVSwgMHg2ZjZmNmY2ZlUsIDB4OGU4ZThlOGVVLAorCTB4MTkxOTE5MTlVLCAweGEwYTBhMGEwVSwgMHhmMGYwZjBmMFUsIDB4ODk4OTg5ODlVLAorCTB4MGYwZjBmMGZVLCAweDA3MDcwNzA3VSwgMHhhZmFmYWZhZlUsIDB4ZmJmYmZiZmJVLAorCTB4MDgwODA4MDhVLCAweDE1MTUxNTE1VSwgMHgwZDBkMGQwZFUsIDB4MDQwNDA0MDRVLAorCTB4MDEwMTAxMDFVLCAweDY0NjQ2NDY0VSwgMHhkZmRmZGZkZlUsIDB4NzY3Njc2NzZVLAorCTB4Nzk3OTc5NzlVLCAweGRkZGRkZGRkVSwgMHgzZDNkM2QzZFUsIDB4MTYxNjE2MTZVLAorCTB4M2YzZjNmM2ZVLCAweDM3MzczNzM3VSwgMHg2ZDZkNmQ2ZFUsIDB4MzgzODM4MzhVLAorCTB4YjliOWI5YjlVLCAweDczNzM3MzczVSwgMHhlOWU5ZTllOVUsIDB4MzUzNTM1MzVVLAorCTB4NTU1NTU1NTVVLCAweDcxNzE3MTcxVSwgMHg3YjdiN2I3YlUsIDB4OGM4YzhjOGNVLAorCTB4NzI3MjcyNzJVLCAweDg4ODg4ODg4VSwgMHhmNmY2ZjZmNlUsIDB4MmEyYTJhMmFVLAorCTB4M2UzZTNlM2VVLCAweDVlNWU1ZTVlVSwgMHgyNzI3MjcyN1UsIDB4NDY0NjQ2NDZVLAorCTB4MGMwYzBjMGNVLCAweDY1NjU2NTY1VSwgMHg2ODY4Njg2OFUsIDB4NjE2MTYxNjFVLAorCTB4MDMwMzAzMDNVLCAweGMxYzFjMWMxVSwgMHg1NzU3NTc1N1UsIDB4ZDZkNmQ2ZDZVLAorCTB4ZDlkOWQ5ZDlVLCAweDU4NTg1ODU4VSwgMHhkOGQ4ZDhkOFUsIDB4NjY2NjY2NjZVLAorCTB4ZDdkN2Q3ZDdVLCAweDNhM2EzYTNhVSwgMHhjOGM4YzhjOFUsIDB4M2MzYzNjM2NVLAorCTB4ZmFmYWZhZmFVLCAweDk2OTY5Njk2VSwgMHhhN2E3YTdhN1UsIDB4OTg5ODk4OThVLAorCTB4ZWNlY2VjZWNVLCAweGI4YjhiOGI4VSwgMHhjN2M3YzdjN1UsIDB4YWVhZWFlYWVVLAorCTB4Njk2OTY5NjlVLCAweDRiNGI0YjRiVSwgMHhhYmFiYWJhYlUsIDB4YTlhOWE5YTlVLAorCTB4Njc2NzY3NjdVLCAweDBhMGEwYTBhVSwgMHg0NzQ3NDc0N1UsIDB4ZjJmMmYyZjJVLAorCTB4YjViNWI1YjVVLCAweDIyMjIyMjIyVSwgMHhlNWU1ZTVlNVUsIDB4ZWVlZWVlZWVVLAorCTB4YmViZWJlYmVVLCAweDJiMmIyYjJiVSwgMHg4MTgxODE4MVUsIDB4MTIxMjEyMTJVLAorCTB4ODM4MzgzODNVLCAweDFiMWIxYjFiVSwgMHgwZTBlMGUwZVUsIDB4MjMyMzIzMjNVLAorCTB4ZjVmNWY1ZjVVLCAweDQ1NDU0NTQ1VSwgMHgyMTIxMjEyMVUsIDB4Y2VjZWNlY2VVLAorCTB4NDk0OTQ5NDlVLCAweDJjMmMyYzJjVSwgMHhmOWY5ZjlmOVUsIDB4ZTZlNmU2ZTZVLAorCTB4YjZiNmI2YjZVLCAweDI4MjgyODI4VSwgMHgxNzE3MTcxN1UsIDB4ODI4MjgyODJVLAorCTB4MWExYTFhMWFVLCAweDhiOGI4YjhiVSwgMHhmZWZlZmVmZVUsIDB4OGE4YThhOGFVLAorCTB4MDkwOTA5MDlVLCAweGM5YzljOWM5VSwgMHg4Nzg3ODc4N1UsIDB4NGU0ZTRlNGVVLAorCTB4ZTFlMWUxZTFVLCAweDJlMmUyZTJlVSwgMHhlNGU0ZTRlNFUsIDB4ZTBlMGUwZTBVLAorCTB4ZWJlYmViZWJVLCAweDkwOTA5MDkwVSwgMHhhNGE0YTRhNFUsIDB4MWUxZTFlMWVVLAorCTB4ODU4NTg1ODVVLCAweDYwNjA2MDYwVSwgMHgwMDAwMDAwMFUsIDB4MjUyNTI1MjVVLAorCTB4ZjRmNGY0ZjRVLCAweGYxZjFmMWYxVSwgMHg5NDk0OTQ5NFUsIDB4MGIwYjBiMGJVLAorCTB4ZTdlN2U3ZTdVLCAweDc1NzU3NTc1VSwgMHhlZmVmZWZlZlUsIDB4MzQzNDM0MzRVLAorCTB4MzEzMTMxMzFVLCAweGQ0ZDRkNGQ0VSwgMHhkMGQwZDBkMFUsIDB4ODY4Njg2ODZVLAorCTB4N2U3ZTdlN2VVLCAweGFkYWRhZGFkVSwgMHhmZGZkZmRmZFUsIDB4MjkyOTI5MjlVLAorCTB4MzAzMDMwMzBVLCAweDNiM2IzYjNiVSwgMHg5ZjlmOWY5ZlUsIDB4ZjhmOGY4ZjhVLAorCTB4YzZjNmM2YzZVLCAweDEzMTMxMzEzVSwgMHgwNjA2MDYwNlUsIDB4MDUwNTA1MDVVLAorCTB4YzVjNWM1YzVVLCAweDExMTExMTExVSwgMHg3Nzc3Nzc3N1UsIDB4N2M3YzdjN2NVLAorCTB4N2E3YTdhN2FVLCAweDc4Nzg3ODc4VSwgMHgzNjM2MzYzNlUsIDB4MWMxYzFjMWNVLAorCTB4MzkzOTM5MzlVLCAweDU5NTk1OTU5VSwgMHgxODE4MTgxOFUsIDB4NTY1NjU2NTZVLAorCTB4YjNiM2IzYjNVLCAweGIwYjBiMGIwVSwgMHgyNDI0MjQyNFUsIDB4MjAyMDIwMjBVLAorCTB4YjJiMmIyYjJVLCAweDkyOTI5MjkyVSwgMHhhM2EzYTNhM1UsIDB4YzBjMGMwYzBVLAorCTB4NDQ0NDQ0NDRVLCAweDYyNjI2MjYyVSwgMHgxMDEwMTAxMFUsIDB4YjRiNGI0YjRVLAorCTB4ODQ4NDg0ODRVLCAweDQzNDM0MzQzVSwgMHg5MzkzOTM5M1UsIDB4YzJjMmMyYzJVLAorCTB4NGE0YTRhNGFVLCAweGJkYmRiZGJkVSwgMHg4ZjhmOGY4ZlUsIDB4MmQyZDJkMmRVLAorCTB4YmNiY2JjYmNVLCAweDljOWM5YzljVSwgMHg2YTZhNmE2YVUsIDB4NDA0MDQwNDBVLAorCTB4Y2ZjZmNmY2ZVLCAweGEyYTJhMmEyVSwgMHg4MDgwODA4MFUsIDB4NGY0ZjRmNGZVLAorCTB4MWYxZjFmMWZVLCAweGNhY2FjYWNhVSwgMHhhYWFhYWFhYVUsIDB4NDI0MjQyNDJVLAorfTsKKworc3RhdGljIGNvbnN0IHUzMiBUNVsyNTZdID0geworCTB4MDAwMDAwMDBVLCAweDAxMDIwNjA4VSwgMHgwMjA0MGMxMFUsIDB4MDMwNjBhMThVLAorCTB4MDQwODE4MjBVLCAweDA1MGExZTI4VSwgMHgwNjBjMTQzMFUsIDB4MDcwZTEyMzhVLAorCTB4MDgxMDMwNDBVLCAweDA5MTIzNjQ4VSwgMHgwYTE0M2M1MFUsIDB4MGIxNjNhNThVLAorCTB4MGMxODI4NjBVLCAweDBkMWEyZTY4VSwgMHgwZTFjMjQ3MFUsIDB4MGYxZTIyNzhVLAorCTB4MTAyMDYwODBVLCAweDExMjI2Njg4VSwgMHgxMjI0NmM5MFUsIDB4MTMyNjZhOThVLAorCTB4MTQyODc4YTBVLCAweDE1MmE3ZWE4VSwgMHgxNjJjNzRiMFUsIDB4MTcyZTcyYjhVLAorCTB4MTgzMDUwYzBVLCAweDE5MzI1NmM4VSwgMHgxYTM0NWNkMFUsIDB4MWIzNjVhZDhVLAorCTB4MWMzODQ4ZTBVLCAweDFkM2E0ZWU4VSwgMHgxZTNjNDRmMFUsIDB4MWYzZTQyZjhVLAorCTB4MjA0MGMwMWRVLCAweDIxNDJjNjE1VSwgMHgyMjQ0Y2MwZFUsIDB4MjM0NmNhMDVVLAorCTB4MjQ0OGQ4M2RVLCAweDI1NGFkZTM1VSwgMHgyNjRjZDQyZFUsIDB4Mjc0ZWQyMjVVLAorCTB4Mjg1MGYwNWRVLCAweDI5NTJmNjU1VSwgMHgyYTU0ZmM0ZFUsIDB4MmI1NmZhNDVVLAorCTB4MmM1OGU4N2RVLCAweDJkNWFlZTc1VSwgMHgyZTVjZTQ2ZFUsIDB4MmY1ZWUyNjVVLAorCTB4MzA2MGEwOWRVLCAweDMxNjJhNjk1VSwgMHgzMjY0YWM4ZFUsIDB4MzM2NmFhODVVLAorCTB4MzQ2OGI4YmRVLCAweDM1NmFiZWI1VSwgMHgzNjZjYjRhZFUsIDB4Mzc2ZWIyYTVVLAorCTB4Mzg3MDkwZGRVLCAweDM5NzI5NmQ1VSwgMHgzYTc0OWNjZFUsIDB4M2I3NjlhYzVVLAorCTB4M2M3ODg4ZmRVLCAweDNkN2E4ZWY1VSwgMHgzZTdjODRlZFUsIDB4M2Y3ZTgyZTVVLAorCTB4NDA4MDlkM2FVLCAweDQxODI5YjMyVSwgMHg0Mjg0OTEyYVUsIDB4NDM4Njk3MjJVLAorCTB4NDQ4ODg1MWFVLCAweDQ1OGE4MzEyVSwgMHg0NjhjODkwYVUsIDB4NDc4ZThmMDJVLAorCTB4NDg5MGFkN2FVLCAweDQ5OTJhYjcyVSwgMHg0YTk0YTE2YVUsIDB4NGI5NmE3NjJVLAorCTB4NGM5OGI1NWFVLCAweDRkOWFiMzUyVSwgMHg0ZTljYjk0YVUsIDB4NGY5ZWJmNDJVLAorCTB4NTBhMGZkYmFVLCAweDUxYTJmYmIyVSwgMHg1MmE0ZjFhYVUsIDB4NTNhNmY3YTJVLAorCTB4NTRhOGU1OWFVLCAweDU1YWFlMzkyVSwgMHg1NmFjZTk4YVUsIDB4NTdhZWVmODJVLAorCTB4NThiMGNkZmFVLCAweDU5YjJjYmYyVSwgMHg1YWI0YzFlYVUsIDB4NWJiNmM3ZTJVLAorCTB4NWNiOGQ1ZGFVLCAweDVkYmFkM2QyVSwgMHg1ZWJjZDljYVUsIDB4NWZiZWRmYzJVLAorCTB4NjBjMDVkMjdVLCAweDYxYzI1YjJmVSwgMHg2MmM0NTEzN1UsIDB4NjNjNjU3M2ZVLAorCTB4NjRjODQ1MDdVLCAweDY1Y2E0MzBmVSwgMHg2NmNjNDkxN1UsIDB4NjdjZTRmMWZVLAorCTB4NjhkMDZkNjdVLCAweDY5ZDI2YjZmVSwgMHg2YWQ0NjE3N1UsIDB4NmJkNjY3N2ZVLAorCTB4NmNkODc1NDdVLCAweDZkZGE3MzRmVSwgMHg2ZWRjNzk1N1UsIDB4NmZkZTdmNWZVLAorCTB4NzBlMDNkYTdVLCAweDcxZTIzYmFmVSwgMHg3MmU0MzFiN1UsIDB4NzNlNjM3YmZVLAorCTB4NzRlODI1ODdVLCAweDc1ZWEyMzhmVSwgMHg3NmVjMjk5N1UsIDB4NzdlZTJmOWZVLAorCTB4NzhmMDBkZTdVLCAweDc5ZjIwYmVmVSwgMHg3YWY0MDFmN1UsIDB4N2JmNjA3ZmZVLAorCTB4N2NmODE1YzdVLCAweDdkZmExM2NmVSwgMHg3ZWZjMTlkN1UsIDB4N2ZmZTFmZGZVLAorCTB4ODAxZDI3NzRVLCAweDgxMWYyMTdjVSwgMHg4MjE5MmI2NFUsIDB4ODMxYjJkNmNVLAorCTB4ODQxNTNmNTRVLCAweDg1MTczOTVjVSwgMHg4NjExMzM0NFUsIDB4ODcxMzM1NGNVLAorCTB4ODgwZDE3MzRVLCAweDg5MGYxMTNjVSwgMHg4YTA5MWIyNFUsIDB4OGIwYjFkMmNVLAorCTB4OGMwNTBmMTRVLCAweDhkMDcwOTFjVSwgMHg4ZTAxMDMwNFUsIDB4OGYwMzA1MGNVLAorCTB4OTAzZDQ3ZjRVLCAweDkxM2Y0MWZjVSwgMHg5MjM5NGJlNFUsIDB4OTMzYjRkZWNVLAorCTB4OTQzNTVmZDRVLCAweDk1Mzc1OWRjVSwgMHg5NjMxNTNjNFUsIDB4OTczMzU1Y2NVLAorCTB4OTgyZDc3YjRVLCAweDk5MmY3MWJjVSwgMHg5YTI5N2JhNFUsIDB4OWIyYjdkYWNVLAorCTB4OWMyNTZmOTRVLCAweDlkMjc2OTljVSwgMHg5ZTIxNjM4NFUsIDB4OWYyMzY1OGNVLAorCTB4YTA1ZGU3NjlVLCAweGExNWZlMTYxVSwgMHhhMjU5ZWI3OVUsIDB4YTM1YmVkNzFVLAorCTB4YTQ1NWZmNDlVLCAweGE1NTdmOTQxVSwgMHhhNjUxZjM1OVUsIDB4YTc1M2Y1NTFVLAorCTB4YTg0ZGQ3MjlVLCAweGE5NGZkMTIxVSwgMHhhYTQ5ZGIzOVUsIDB4YWI0YmRkMzFVLAorCTB4YWM0NWNmMDlVLCAweGFkNDdjOTAxVSwgMHhhZTQxYzMxOVUsIDB4YWY0M2M1MTFVLAorCTB4YjA3ZDg3ZTlVLCAweGIxN2Y4MWUxVSwgMHhiMjc5OGJmOVUsIDB4YjM3YjhkZjFVLAorCTB4YjQ3NTlmYzlVLCAweGI1Nzc5OWMxVSwgMHhiNjcxOTNkOVUsIDB4Yjc3Mzk1ZDFVLAorCTB4Yjg2ZGI3YTlVLCAweGI5NmZiMWExVSwgMHhiYTY5YmJiOVUsIDB4YmI2YmJkYjFVLAorCTB4YmM2NWFmODlVLCAweGJkNjdhOTgxVSwgMHhiZTYxYTM5OVUsIDB4YmY2M2E1OTFVLAorCTB4YzA5ZGJhNGVVLCAweGMxOWZiYzQ2VSwgMHhjMjk5YjY1ZVUsIDB4YzM5YmIwNTZVLAorCTB4YzQ5NWEyNmVVLCAweGM1OTdhNDY2VSwgMHhjNjkxYWU3ZVUsIDB4Yzc5M2E4NzZVLAorCTB4Yzg4ZDhhMGVVLCAweGM5OGY4YzA2VSwgMHhjYTg5ODYxZVUsIDB4Y2I4YjgwMTZVLAorCTB4Y2M4NTkyMmVVLCAweGNkODc5NDI2VSwgMHhjZTgxOWUzZVUsIDB4Y2Y4Mzk4MzZVLAorCTB4ZDBiZGRhY2VVLCAweGQxYmZkY2M2VSwgMHhkMmI5ZDZkZVUsIDB4ZDNiYmQwZDZVLAorCTB4ZDRiNWMyZWVVLCAweGQ1YjdjNGU2VSwgMHhkNmIxY2VmZVUsIDB4ZDdiM2M4ZjZVLAorCTB4ZDhhZGVhOGVVLCAweGQ5YWZlYzg2VSwgMHhkYWE5ZTY5ZVUsIDB4ZGJhYmUwOTZVLAorCTB4ZGNhNWYyYWVVLCAweGRkYTdmNGE2VSwgMHhkZWExZmViZVUsIDB4ZGZhM2Y4YjZVLAorCTB4ZTBkZDdhNTNVLCAweGUxZGY3YzViVSwgMHhlMmQ5NzY0M1UsIDB4ZTNkYjcwNGJVLAorCTB4ZTRkNTYyNzNVLCAweGU1ZDc2NDdiVSwgMHhlNmQxNmU2M1UsIDB4ZTdkMzY4NmJVLAorCTB4ZThjZDRhMTNVLCAweGU5Y2Y0YzFiVSwgMHhlYWM5NDYwM1UsIDB4ZWJjYjQwMGJVLAorCTB4ZWNjNTUyMzNVLCAweGVkYzc1NDNiVSwgMHhlZWMxNWUyM1UsIDB4ZWZjMzU4MmJVLAorCTB4ZjBmZDFhZDNVLCAweGYxZmYxY2RiVSwgMHhmMmY5MTZjM1UsIDB4ZjNmYjEwY2JVLAorCTB4ZjRmNTAyZjNVLCAweGY1ZjcwNGZiVSwgMHhmNmYxMGVlM1UsIDB4ZjdmMzA4ZWJVLAorCTB4ZjhlZDJhOTNVLCAweGY5ZWYyYzliVSwgMHhmYWU5MjY4M1UsIDB4ZmJlYjIwOGJVLAorCTB4ZmNlNTMyYjNVLCAweGZkZTczNGJiVSwgMHhmZWUxM2VhM1UsIDB4ZmZlMzM4YWJVLAorfTsKKworc3RhdGljIGNvbnN0IHUzMiByY1tdID0geworCTB4YmE1NDJmNzRVLCAweDUzZDNkMjRkVSwgMHg1MGFjOGRiZlUsIDB4NzA1MjlhNGNVLAorCTB4ZWFkNTk3ZDFVLCAweDMzNTE1YmE2VSwgMHhkZTQ4YTg5OVUsIDB4ZGIzMmI3ZmNVLAorCTB4ZTM5ZTkxOWJVLCAweGUyYmI0MTZlVSwgMHhhNWNiNmI5NVUsIDB4YTFmM2IxMDJVLAorCTB4Y2NjNDFkMTRVLCAweGMzNjNkYTVkVSwgMHg1ZmRjN2RjZFUsIDB4N2Y1YTZjNWNVLAorCTB4ZjcyNmZmZWRVLCAweGU4OWQ2ZjhlVSwgMHgxOWEwZjA4OVUsCit9OworCitzdGF0aWMgaW50IGFudWJpc19zZXRrZXkodm9pZCAqY3R4X2FyZywgY29uc3QgdTggKmluX2tleSwKKwkJCSB1bnNpZ25lZCBpbnQga2V5X2xlbiwgdTMyICpmbGFncykKK3sKKworCWludCBOLCBSLCBpLCBwb3MsIHI7CisJdTMyIGthcHBhW0FOVUJJU19NQVhfTl07CisJdTMyIGludGVyW0FOVUJJU19NQVhfTl07CisKKwlzdHJ1Y3QgYW51YmlzX2N0eCAqY3R4ID0gY3R4X2FyZzsKKworCXN3aXRjaCAoa2V5X2xlbikKKwl7CisJCWNhc2UgMTY6IGNhc2UgMjA6IGNhc2UgMjQ6IGNhc2UgMjg6CisJCWNhc2UgMzI6IGNhc2UgMzY6IGNhc2UgNDA6CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCSpmbGFncyB8PSBDUllQVE9fVEZNX1JFU19CQURfS0VZX0xFTjsKKwkJCXJldHVybiAtIEVJTlZBTDsKKwl9CisKKwljdHgtPmtleV9sZW4gPSBrZXlfbGVuICogODsKKwlOID0gY3R4LT5rZXlfbGVuID4+IDU7CisJY3R4LT5SID0gUiA9IDggKyBOOworCisJLyogKiBtYXAgY2lwaGVyIGtleSB0byBpbml0aWFsIGtleSBzdGF0ZSAobXUpOiAqLworCQlmb3IgKGkgPSAwLCBwb3MgPSAwOyBpIDwgTjsgaSsrLCBwb3MgKz0gNCkgeworCQlrYXBwYVtpXSA9CisJCQkoaW5fa2V5W3BvcyAgICBdIDw8IDI0KSBeCisJCQkoaW5fa2V5W3BvcyArIDFdIDw8IDE2KSBeCisJCQkoaW5fa2V5W3BvcyArIDJdIDw8ICA4KSBeCisJCQkoaW5fa2V5W3BvcyArIDNdICAgICAgKTsKKwl9CisKKwkvKgorCSAqIGdlbmVyYXRlIFIgKyAxIHJvdW5kIGtleXM6CisJICovCisJZm9yIChyID0gMDsgciA8PSBSOyByKyspIHsKKwkJdTMyIEswLCBLMSwgSzIsIEszOworCQkvKgorCQkgKiBnZW5lcmF0ZSByLXRoIHJvdW5kIGtleSBLXnI6CisJCSAqLworCQlLMCA9IFQ0WyhrYXBwYVtOIC0gMV0gPj4gMjQpICAgICAgIF07CisJCUsxID0gVDRbKGthcHBhW04gLSAxXSA+PiAxNikgJiAweGZmXTsKKwkJSzIgPSBUNFsoa2FwcGFbTiAtIDFdID4+ICA4KSAmIDB4ZmZdOworCQlLMyA9IFQ0WyhrYXBwYVtOIC0gMV0gICAgICApICYgMHhmZl07CisJCWZvciAoaSA9IE4gLSAyOyBpID49IDA7IGktLSkgeworCQkJSzAgPSBUNFsoa2FwcGFbaV0gPj4gMjQpICAgICAgIF0gXgorCQkJCShUNVsoSzAgPj4gMjQpICAgICAgIF0gJiAweGZmMDAwMDAwVSkgXgorCQkJCShUNVsoSzAgPj4gMTYpICYgMHhmZl0gJiAweDAwZmYwMDAwVSkgXgorCQkJCShUNVsoSzAgPj4gIDgpICYgMHhmZl0gJiAweDAwMDBmZjAwVSkgXgorCQkJCShUNVsoSzAgICAgICApICYgMHhmZl0gJiAweDAwMDAwMGZmVSk7CisJCQlLMSA9IFQ0WyhrYXBwYVtpXSA+PiAxNikgJiAweGZmXSBeCisJCQkJKFQ1WyhLMSA+PiAyNCkgICAgICAgXSAmIDB4ZmYwMDAwMDBVKSBeCisJCQkJKFQ1WyhLMSA+PiAxNikgJiAweGZmXSAmIDB4MDBmZjAwMDBVKSBeCisJCQkJKFQ1WyhLMSA+PiAgOCkgJiAweGZmXSAmIDB4MDAwMGZmMDBVKSBeCisJCQkJKFQ1WyhLMSAgICAgICkgJiAweGZmXSAmIDB4MDAwMDAwZmZVKTsKKwkJCUsyID0gVDRbKGthcHBhW2ldID4+ICA4KSAmIDB4ZmZdIF4KKwkJCQkoVDVbKEsyID4+IDI0KSAgICAgICBdICYgMHhmZjAwMDAwMFUpIF4KKwkJCQkoVDVbKEsyID4+IDE2KSAmIDB4ZmZdICYgMHgwMGZmMDAwMFUpIF4KKwkJCQkoVDVbKEsyID4+ICA4KSAmIDB4ZmZdICYgMHgwMDAwZmYwMFUpIF4KKwkJCQkoVDVbKEsyICAgICAgKSAmIDB4ZmZdICYgMHgwMDAwMDBmZlUpOworCQkJSzMgPSBUNFsoa2FwcGFbaV0gICAgICApICYgMHhmZl0gXgorCQkJCShUNVsoSzMgPj4gMjQpICAgICAgIF0gJiAweGZmMDAwMDAwVSkgXgorCQkJCShUNVsoSzMgPj4gMTYpICYgMHhmZl0gJiAweDAwZmYwMDAwVSkgXgorCQkJCShUNVsoSzMgPj4gIDgpICYgMHhmZl0gJiAweDAwMDBmZjAwVSkgXgorCQkJCShUNVsoSzMgICAgICApICYgMHhmZl0gJiAweDAwMDAwMGZmVSk7CisJCX0KKworCQljdHgtPkVbcl1bMF0gPSBLMDsKKwkJY3R4LT5FW3JdWzFdID0gSzE7CisJCWN0eC0+RVtyXVsyXSA9IEsyOworCQljdHgtPkVbcl1bM10gPSBLMzsKKworCQkvKgorCQkgKiBjb21wdXRlIGthcHBhXntyKzF9IGZyb20ga2FwcGFecjoKKwkJICovCisJCWlmIChyID09IFIpIHsKKwkJCWJyZWFrOworCQl9CisJCWZvciAoaSA9IDA7IGkgPCBOOyBpKyspIHsKKwkJCWludCBqID0gaTsKKwkJCWludGVyW2ldICA9IFQwWyhrYXBwYVtqLS1dID4+IDI0KSAgICAgICBdOworCQkJaWYgKGogPCAwKSBqID0gTiAtIDE7CisJCQlpbnRlcltpXSBePSBUMVsoa2FwcGFbai0tXSA+PiAxNikgJiAweGZmXTsKKwkJCWlmIChqIDwgMCkgaiA9IE4gLSAxOworCQkJaW50ZXJbaV0gXj0gVDJbKGthcHBhW2otLV0gPj4gIDgpICYgMHhmZl07CisJCQlpZiAoaiA8IDApIGogPSBOIC0gMTsKKwkJCWludGVyW2ldIF49IFQzWyhrYXBwYVtqICBdICAgICAgKSAmIDB4ZmZdOworCQl9CisJCWthcHBhWzBdID0gaW50ZXJbMF0gXiByY1tyXTsKKwkJZm9yIChpID0gMTsgaSA8IE47IGkrKykgeworCQkJa2FwcGFbaV0gPSBpbnRlcltpXTsKKwkJfQorCX0KKworCS8qCisJICogZ2VuZXJhdGUgaW52ZXJzZSBrZXkgc2NoZWR1bGU6IEsnXjAgPSBLXlIsIEsnXlIgPQorCSAqIAkJCQkgIEteMCwgSydeciA9IHRoZXRhKEtee1Itcn0pOgorCSAqLworCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKKwkJY3R4LT5EWzBdW2ldID0gY3R4LT5FW1JdW2ldOworCQljdHgtPkRbUl1baV0gPSBjdHgtPkVbMF1baV07CisJfQorCWZvciAociA9IDE7IHIgPCBSOyByKyspIHsKKwkJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgeworCQkJdTMyIHYgPSBjdHgtPkVbUiAtIHJdW2ldOworCQkJY3R4LT5EW3JdW2ldID0KKwkJCQlUMFtUNFsodiA+PiAyNCkgICAgICAgXSAmIDB4ZmZdIF4KKwkJCQlUMVtUNFsodiA+PiAxNikgJiAweGZmXSAmIDB4ZmZdIF4KKwkJCQlUMltUNFsodiA+PiAgOCkgJiAweGZmXSAmIDB4ZmZdIF4KKwkJCQlUM1tUNFsodiAgICAgICkgJiAweGZmXSAmIDB4ZmZdOworCQl9CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGFudWJpc19jcnlwdCh1MzIgcm91bmRLZXlbQU5VQklTX01BWF9ST1VORFMgKyAxXVs0XSwKKwkJdTggKmNpcGhlcnRleHQsIGNvbnN0IHU4ICpwbGFpbnRleHQsIGNvbnN0IGludCBSKQoreworCWludCBpLCBwb3MsIHI7CisJdTMyIHN0YXRlWzRdOworCXUzMiBpbnRlcls0XTsKKworCS8qCisJICogbWFwIHBsYWludGV4dCBibG9jayB0byBjaXBoZXIgc3RhdGUgKG11KQorCSAqIGFuZCBhZGQgaW5pdGlhbCByb3VuZCBrZXkgKHNpZ21hW0teMF0pOgorCSAqLworCWZvciAoaSA9IDAsIHBvcyA9IDA7IGkgPCA0OyBpKyssIHBvcyArPSA0KSB7CisJCXN0YXRlW2ldID0KKwkJCShwbGFpbnRleHRbcG9zICAgIF0gPDwgMjQpIF4KKwkJCShwbGFpbnRleHRbcG9zICsgMV0gPDwgMTYpIF4KKwkJCShwbGFpbnRleHRbcG9zICsgMl0gPDwgIDgpIF4KKwkJCShwbGFpbnRleHRbcG9zICsgM10gICAgICApIF4KKwkJCXJvdW5kS2V5WzBdW2ldOworCX0KKworCS8qCisJICogUiAtIDEgZnVsbCByb3VuZHM6CisJICovCisKKwlmb3IgKHIgPSAxOyByIDwgUjsgcisrKSB7CisJCWludGVyWzBdID0KKwkJCVQwWyhzdGF0ZVswXSA+PiAyNCkgICAgICAgXSBeCisJCQlUMVsoc3RhdGVbMV0gPj4gMjQpICAgICAgIF0gXgorCQkJVDJbKHN0YXRlWzJdID4+IDI0KSAgICAgICBdIF4KKwkJCVQzWyhzdGF0ZVszXSA+PiAyNCkgICAgICAgXSBeCisJCQlyb3VuZEtleVtyXVswXTsKKwkJaW50ZXJbMV0gPQorCQkJVDBbKHN0YXRlWzBdID4+IDE2KSAmIDB4ZmZdIF4KKwkJCVQxWyhzdGF0ZVsxXSA+PiAxNikgJiAweGZmXSBeCisJCQlUMlsoc3RhdGVbMl0gPj4gMTYpICYgMHhmZl0gXgorCQkJVDNbKHN0YXRlWzNdID4+IDE2KSAmIDB4ZmZdIF4KKwkJCXJvdW5kS2V5W3JdWzFdOworCQlpbnRlclsyXSA9CisJCQlUMFsoc3RhdGVbMF0gPj4gIDgpICYgMHhmZl0gXgorCQkJVDFbKHN0YXRlWzFdID4+ICA4KSAmIDB4ZmZdIF4KKwkJCVQyWyhzdGF0ZVsyXSA+PiAgOCkgJiAweGZmXSBeCisJCQlUM1soc3RhdGVbM10gPj4gIDgpICYgMHhmZl0gXgorCQkJcm91bmRLZXlbcl1bMl07CisJCWludGVyWzNdID0KKwkJCVQwWyhzdGF0ZVswXSAgICAgICkgJiAweGZmXSBeCisJCQlUMVsoc3RhdGVbMV0gICAgICApICYgMHhmZl0gXgorCQkJVDJbKHN0YXRlWzJdICAgICAgKSAmIDB4ZmZdIF4KKwkJCVQzWyhzdGF0ZVszXSAgICAgICkgJiAweGZmXSBeCisJCQlyb3VuZEtleVtyXVszXTsKKwkJc3RhdGVbMF0gPSBpbnRlclswXTsKKwkJc3RhdGVbMV0gPSBpbnRlclsxXTsKKwkJc3RhdGVbMl0gPSBpbnRlclsyXTsKKwkJc3RhdGVbM10gPSBpbnRlclszXTsKKwl9CisKKwkvKgorCSAqIGxhc3Qgcm91bmQ6CisJICovCisKKwlpbnRlclswXSA9CisJCShUMFsoc3RhdGVbMF0gPj4gMjQpICAgICAgIF0gJiAweGZmMDAwMDAwVSkgXgorCQkoVDFbKHN0YXRlWzFdID4+IDI0KSAgICAgICBdICYgMHgwMGZmMDAwMFUpIF4KKwkJKFQyWyhzdGF0ZVsyXSA+PiAyNCkgICAgICAgXSAmIDB4MDAwMGZmMDBVKSBeCisJCShUM1soc3RhdGVbM10gPj4gMjQpICAgICAgIF0gJiAweDAwMDAwMGZmVSkgXgorCQlyb3VuZEtleVtSXVswXTsKKwlpbnRlclsxXSA9CisJCShUMFsoc3RhdGVbMF0gPj4gMTYpICYgMHhmZl0gJiAweGZmMDAwMDAwVSkgXgorCQkoVDFbKHN0YXRlWzFdID4+IDE2KSAmIDB4ZmZdICYgMHgwMGZmMDAwMFUpIF4KKwkJKFQyWyhzdGF0ZVsyXSA+PiAxNikgJiAweGZmXSAmIDB4MDAwMGZmMDBVKSBeCisJCShUM1soc3RhdGVbM10gPj4gMTYpICYgMHhmZl0gJiAweDAwMDAwMGZmVSkgXgorCQlyb3VuZEtleVtSXVsxXTsKKwlpbnRlclsyXSA9CisJCShUMFsoc3RhdGVbMF0gPj4gIDgpICYgMHhmZl0gJiAweGZmMDAwMDAwVSkgXgorCQkoVDFbKHN0YXRlWzFdID4+ICA4KSAmIDB4ZmZdICYgMHgwMGZmMDAwMFUpIF4KKwkJKFQyWyhzdGF0ZVsyXSA+PiAgOCkgJiAweGZmXSAmIDB4MDAwMGZmMDBVKSBeCisJCShUM1soc3RhdGVbM10gPj4gIDgpICYgMHhmZl0gJiAweDAwMDAwMGZmVSkgXgorCQlyb3VuZEtleVtSXVsyXTsKKwlpbnRlclszXSA9CisJCShUMFsoc3RhdGVbMF0gICAgICApICYgMHhmZl0gJiAweGZmMDAwMDAwVSkgXgorCQkoVDFbKHN0YXRlWzFdICAgICAgKSAmIDB4ZmZdICYgMHgwMGZmMDAwMFUpIF4KKwkJKFQyWyhzdGF0ZVsyXSAgICAgICkgJiAweGZmXSAmIDB4MDAwMGZmMDBVKSBeCisJCShUM1soc3RhdGVbM10gICAgICApICYgMHhmZl0gJiAweDAwMDAwMGZmVSkgXgorCQlyb3VuZEtleVtSXVszXTsKKworCS8qCisJICogbWFwIGNpcGhlciBzdGF0ZSB0byBjaXBoZXJ0ZXh0IGJsb2NrIChtdV57LTF9KToKKwkgKi8KKworCWZvciAoaSA9IDAsIHBvcyA9IDA7IGkgPCA0OyBpKyssIHBvcyArPSA0KSB7CisJCXUzMiB3ID0gaW50ZXJbaV07CisJCWNpcGhlcnRleHRbcG9zICAgIF0gPSAodTgpKHcgPj4gMjQpOworCQljaXBoZXJ0ZXh0W3BvcyArIDFdID0gKHU4KSh3ID4+IDE2KTsKKwkJY2lwaGVydGV4dFtwb3MgKyAyXSA9ICh1OCkodyA+PiAgOCk7CisJCWNpcGhlcnRleHRbcG9zICsgM10gPSAodTgpKHcgICAgICApOworCX0KK30KKworc3RhdGljIHZvaWQgYW51YmlzX2VuY3J5cHQodm9pZCAqY3R4X2FyZywgdTggKmRzdCwgY29uc3QgdTggKnNyYykKK3sKKwlzdHJ1Y3QgYW51YmlzX2N0eCAqY3R4ID0gY3R4X2FyZzsKKwlhbnViaXNfY3J5cHQoY3R4LT5FLCBkc3QsIHNyYywgY3R4LT5SKTsKK30KKworc3RhdGljIHZvaWQgYW51YmlzX2RlY3J5cHQodm9pZCAqY3R4X2FyZywgdTggKmRzdCwgY29uc3QgdTggKnNyYykKK3sKKwlzdHJ1Y3QgYW51YmlzX2N0eCAqY3R4ID0gY3R4X2FyZzsKKwlhbnViaXNfY3J5cHQoY3R4LT5ELCBkc3QsIHNyYywgY3R4LT5SKTsKK30KKworc3RhdGljIHN0cnVjdCBjcnlwdG9fYWxnIGFudWJpc19hbGcgPSB7CisJLmNyYV9uYW1lCQk9CSJhbnViaXMiLAorCS5jcmFfZmxhZ3MJCT0JQ1JZUFRPX0FMR19UWVBFX0NJUEhFUiwKKwkuY3JhX2Jsb2Nrc2l6ZQkJPQlBTlVCSVNfQkxPQ0tfU0laRSwKKwkuY3JhX2N0eHNpemUJCT0Jc2l6ZW9mIChzdHJ1Y3QgYW51YmlzX2N0eCksCisJLmNyYV9tb2R1bGUJCT0JVEhJU19NT0RVTEUsCisJLmNyYV9saXN0CQk9CUxJU1RfSEVBRF9JTklUKGFudWJpc19hbGcuY3JhX2xpc3QpLAorCS5jcmFfdQkJCT0JeyAuY2lwaGVyID0geworCS5jaWFfbWluX2tleXNpemUJPQlBTlVCSVNfTUlOX0tFWV9TSVpFLAorCS5jaWFfbWF4X2tleXNpemUJPQlBTlVCSVNfTUFYX0tFWV9TSVpFLAorCS5jaWFfc2V0a2V5CQk9IAlhbnViaXNfc2V0a2V5LAorCS5jaWFfZW5jcnlwdAkJPQlhbnViaXNfZW5jcnlwdCwKKwkuY2lhX2RlY3J5cHQJCT0JYW51YmlzX2RlY3J5cHQgfSB9Cit9OworCitzdGF0aWMgaW50IF9faW5pdCBpbml0KHZvaWQpCit7CisJaW50IHJldCA9IDA7CisJCisJcmV0ID0gY3J5cHRvX3JlZ2lzdGVyX2FsZygmYW51YmlzX2FsZyk7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQgX19leGl0IGZpbmkodm9pZCkKK3sKKwljcnlwdG9fdW5yZWdpc3Rlcl9hbGcoJmFudWJpc19hbGcpOworfQorCittb2R1bGVfaW5pdChpbml0KTsKK21vZHVsZV9leGl0KGZpbmkpOworCitNT0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfREVTQ1JJUFRJT04oIkFudWJpcyBDcnlwdG9ncmFwaGljIEFsZ29yaXRobSIpOwpkaWZmIC0tZ2l0IGEvY3J5cHRvL2FwaS5jIGIvY3J5cHRvL2FwaS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5NDE2OWEKLS0tIC9kZXYvbnVsbAorKysgYi9jcnlwdG8vYXBpLmMKQEAgLTAsMCArMSwyMzMgQEAKKy8qCisgKiBTY2F0dGVybGlzdCBDcnlwdG9ncmFwaGljIEFQSS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDIgSmFtZXMgTW9ycmlzIDxqbW9ycmlzQGludGVyY29kZS5jb20uYXU+CisgKiBDb3B5cmlnaHQgKGMpIDIwMDIgRGF2aWQgUy4gTWlsbGVyIChkYXZlbUByZWRoYXQuY29tKQorICoKKyAqIFBvcnRpb25zIGRlcml2ZWQgZnJvbSBDcnlwdG9hcGksIGJ5IEFsZXhhbmRlciBLamVsZGFhcyA8YXN0b3JAZmFzdC5ubz4KKyAqIGFuZCBOZXR0bGUsIGJ5IE5pZWxzIE32bGxlci4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKKyAqIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgCisgKiBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKi8KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvY3J5cHRvLmg+CisjaW5jbHVkZSA8bGludXgvZXJybm8uaD4KKyNpbmNsdWRlIDxsaW51eC9yd3NlbS5oPgorI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KKyNpbmNsdWRlICJpbnRlcm5hbC5oIgorCitMSVNUX0hFQUQoY3J5cHRvX2FsZ19saXN0KTsKK0RFQ0xBUkVfUldTRU0oY3J5cHRvX2FsZ19zZW0pOworCitzdGF0aWMgaW5saW5lIGludCBjcnlwdG9fYWxnX2dldChzdHJ1Y3QgY3J5cHRvX2FsZyAqYWxnKQoreworCXJldHVybiB0cnlfbW9kdWxlX2dldChhbGctPmNyYV9tb2R1bGUpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgY3J5cHRvX2FsZ19wdXQoc3RydWN0IGNyeXB0b19hbGcgKmFsZykKK3sKKwltb2R1bGVfcHV0KGFsZy0+Y3JhX21vZHVsZSk7Cit9CisKK3N0cnVjdCBjcnlwdG9fYWxnICpjcnlwdG9fYWxnX2xvb2t1cChjb25zdCBjaGFyICpuYW1lKQoreworCXN0cnVjdCBjcnlwdG9fYWxnICpxLCAqYWxnID0gTlVMTDsKKworCWlmICghbmFtZSkKKwkJcmV0dXJuIE5VTEw7CisJCisJZG93bl9yZWFkKCZjcnlwdG9fYWxnX3NlbSk7CisJCisJbGlzdF9mb3JfZWFjaF9lbnRyeShxLCAmY3J5cHRvX2FsZ19saXN0LCBjcmFfbGlzdCkgeworCQlpZiAoIShzdHJjbXAocS0+Y3JhX25hbWUsIG5hbWUpKSkgeworCQkJaWYgKGNyeXB0b19hbGdfZ2V0KHEpKQorCQkJCWFsZyA9IHE7CisJCQlicmVhazsKKwkJfQorCX0KKwkKKwl1cF9yZWFkKCZjcnlwdG9fYWxnX3NlbSk7CisJcmV0dXJuIGFsZzsKK30KKworc3RhdGljIGludCBjcnlwdG9faW5pdF9mbGFncyhzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtLCB1MzIgZmxhZ3MpCit7CisJdGZtLT5jcnRfZmxhZ3MgPSAwOworCQorCXN3aXRjaCAoY3J5cHRvX3RmbV9hbGdfdHlwZSh0Zm0pKSB7CisJY2FzZSBDUllQVE9fQUxHX1RZUEVfQ0lQSEVSOgorCQlyZXR1cm4gY3J5cHRvX2luaXRfY2lwaGVyX2ZsYWdzKHRmbSwgZmxhZ3MpOworCQkKKwljYXNlIENSWVBUT19BTEdfVFlQRV9ESUdFU1Q6CisJCXJldHVybiBjcnlwdG9faW5pdF9kaWdlc3RfZmxhZ3ModGZtLCBmbGFncyk7CisJCQorCWNhc2UgQ1JZUFRPX0FMR19UWVBFX0NPTVBSRVNTOgorCQlyZXR1cm4gY3J5cHRvX2luaXRfY29tcHJlc3NfZmxhZ3ModGZtLCBmbGFncyk7CisJCisJZGVmYXVsdDoKKwkJYnJlYWs7CisJfQorCQorCUJVRygpOworCXJldHVybiAtRUlOVkFMOworfQorCitzdGF0aWMgaW50IGNyeXB0b19pbml0X29wcyhzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtKQoreworCXN3aXRjaCAoY3J5cHRvX3RmbV9hbGdfdHlwZSh0Zm0pKSB7CisJY2FzZSBDUllQVE9fQUxHX1RZUEVfQ0lQSEVSOgorCQlyZXR1cm4gY3J5cHRvX2luaXRfY2lwaGVyX29wcyh0Zm0pOworCQkKKwljYXNlIENSWVBUT19BTEdfVFlQRV9ESUdFU1Q6CisJCXJldHVybiBjcnlwdG9faW5pdF9kaWdlc3Rfb3BzKHRmbSk7CisJCQorCWNhc2UgQ1JZUFRPX0FMR19UWVBFX0NPTVBSRVNTOgorCQlyZXR1cm4gY3J5cHRvX2luaXRfY29tcHJlc3Nfb3BzKHRmbSk7CisJCisJZGVmYXVsdDoKKwkJYnJlYWs7CisJfQorCQorCUJVRygpOworCXJldHVybiAtRUlOVkFMOworfQorCitzdGF0aWMgdm9pZCBjcnlwdG9fZXhpdF9vcHMoc3RydWN0IGNyeXB0b190Zm0gKnRmbSkKK3sKKwlzd2l0Y2ggKGNyeXB0b190Zm1fYWxnX3R5cGUodGZtKSkgeworCWNhc2UgQ1JZUFRPX0FMR19UWVBFX0NJUEhFUjoKKwkJY3J5cHRvX2V4aXRfY2lwaGVyX29wcyh0Zm0pOworCQlicmVhazsKKwkJCisJY2FzZSBDUllQVE9fQUxHX1RZUEVfRElHRVNUOgorCQljcnlwdG9fZXhpdF9kaWdlc3Rfb3BzKHRmbSk7CisJCWJyZWFrOworCQkKKwljYXNlIENSWVBUT19BTEdfVFlQRV9DT01QUkVTUzoKKwkJY3J5cHRvX2V4aXRfY29tcHJlc3Nfb3BzKHRmbSk7CisJCWJyZWFrOworCQorCWRlZmF1bHQ6CisJCUJVRygpOworCQkKKwl9Cit9CisKK3N0cnVjdCBjcnlwdG9fdGZtICpjcnlwdG9fYWxsb2NfdGZtKGNvbnN0IGNoYXIgKm5hbWUsIHUzMiBmbGFncykKK3sKKwlzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtID0gTlVMTDsKKwlzdHJ1Y3QgY3J5cHRvX2FsZyAqYWxnOworCisJYWxnID0gY3J5cHRvX2FsZ19tb2RfbG9va3VwKG5hbWUpOworCWlmIChhbGcgPT0gTlVMTCkKKwkJZ290byBvdXQ7CisJCisJdGZtID0ga21hbGxvYyhzaXplb2YoKnRmbSkgKyBhbGctPmNyYV9jdHhzaXplLCBHRlBfS0VSTkVMKTsKKwlpZiAodGZtID09IE5VTEwpCisJCWdvdG8gb3V0X3B1dDsKKworCW1lbXNldCh0Zm0sIDAsIHNpemVvZigqdGZtKSArIGFsZy0+Y3JhX2N0eHNpemUpOworCQorCXRmbS0+X19jcnRfYWxnID0gYWxnOworCQorCWlmIChjcnlwdG9faW5pdF9mbGFncyh0Zm0sIGZsYWdzKSkKKwkJZ290byBvdXRfZnJlZV90Zm07CisJCQorCWlmIChjcnlwdG9faW5pdF9vcHModGZtKSkgeworCQljcnlwdG9fZXhpdF9vcHModGZtKTsKKwkJZ290byBvdXRfZnJlZV90Zm07CisJfQorCisJZ290byBvdXQ7CisKK291dF9mcmVlX3RmbToKKwlrZnJlZSh0Zm0pOworCXRmbSA9IE5VTEw7CitvdXRfcHV0OgorCWNyeXB0b19hbGdfcHV0KGFsZyk7CitvdXQ6CisJcmV0dXJuIHRmbTsKK30KKwordm9pZCBjcnlwdG9fZnJlZV90Zm0oc3RydWN0IGNyeXB0b190Zm0gKnRmbSkKK3sKKwlzdHJ1Y3QgY3J5cHRvX2FsZyAqYWxnID0gdGZtLT5fX2NydF9hbGc7CisJaW50IHNpemUgPSBzaXplb2YoKnRmbSkgKyBhbGctPmNyYV9jdHhzaXplOworCisJY3J5cHRvX2V4aXRfb3BzKHRmbSk7CisJY3J5cHRvX2FsZ19wdXQoYWxnKTsKKwltZW1zZXQodGZtLCAwLCBzaXplKTsKKwlrZnJlZSh0Zm0pOworfQorCitpbnQgY3J5cHRvX3JlZ2lzdGVyX2FsZyhzdHJ1Y3QgY3J5cHRvX2FsZyAqYWxnKQoreworCWludCByZXQgPSAwOworCXN0cnVjdCBjcnlwdG9fYWxnICpxOworCQorCWRvd25fd3JpdGUoJmNyeXB0b19hbGdfc2VtKTsKKwkKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHEsICZjcnlwdG9fYWxnX2xpc3QsIGNyYV9saXN0KSB7CisJCWlmICghKHN0cmNtcChxLT5jcmFfbmFtZSwgYWxnLT5jcmFfbmFtZSkpKSB7CisJCQlyZXQgPSAtRUVYSVNUOworCQkJZ290byBvdXQ7CisJCX0KKwl9CisJCisJbGlzdF9hZGRfdGFpbCgmYWxnLT5jcmFfbGlzdCwgJmNyeXB0b19hbGdfbGlzdCk7CitvdXQ6CQorCXVwX3dyaXRlKCZjcnlwdG9fYWxnX3NlbSk7CisJcmV0dXJuIHJldDsKK30KKworaW50IGNyeXB0b191bnJlZ2lzdGVyX2FsZyhzdHJ1Y3QgY3J5cHRvX2FsZyAqYWxnKQoreworCWludCByZXQgPSAtRU5PRU5UOworCXN0cnVjdCBjcnlwdG9fYWxnICpxOworCQorCUJVR19PTighYWxnLT5jcmFfbW9kdWxlKTsKKwkKKwlkb3duX3dyaXRlKCZjcnlwdG9fYWxnX3NlbSk7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShxLCAmY3J5cHRvX2FsZ19saXN0LCBjcmFfbGlzdCkgeworCQlpZiAoYWxnID09IHEpIHsKKwkJCWxpc3RfZGVsKCZhbGctPmNyYV9saXN0KTsKKwkJCXJldCA9IDA7CisJCQlnb3RvIG91dDsKKwkJfQorCX0KK291dDoJCisJdXBfd3JpdGUoJmNyeXB0b19hbGdfc2VtKTsKKwlyZXR1cm4gcmV0OworfQorCitpbnQgY3J5cHRvX2FsZ19hdmFpbGFibGUoY29uc3QgY2hhciAqbmFtZSwgdTMyIGZsYWdzKQoreworCWludCByZXQgPSAwOworCXN0cnVjdCBjcnlwdG9fYWxnICphbGcgPSBjcnlwdG9fYWxnX21vZF9sb29rdXAobmFtZSk7CisJCisJaWYgKGFsZykgeworCQljcnlwdG9fYWxnX3B1dChhbGcpOworCQlyZXQgPSAxOworCX0KKwkKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IF9faW5pdCBpbml0X2NyeXB0byh2b2lkKQoreworCXByaW50ayhLRVJOX0lORk8gIkluaXRpYWxpemluZyBDcnlwdG9ncmFwaGljIEFQSVxuIik7CisJY3J5cHRvX2luaXRfcHJvYygpOworCXJldHVybiAwOworfQorCitfX2luaXRjYWxsKGluaXRfY3J5cHRvKTsKKworRVhQT1JUX1NZTUJPTF9HUEwoY3J5cHRvX3JlZ2lzdGVyX2FsZyk7CitFWFBPUlRfU1lNQk9MX0dQTChjcnlwdG9fdW5yZWdpc3Rlcl9hbGcpOworRVhQT1JUX1NZTUJPTF9HUEwoY3J5cHRvX2FsbG9jX3RmbSk7CitFWFBPUlRfU1lNQk9MX0dQTChjcnlwdG9fZnJlZV90Zm0pOworRVhQT1JUX1NZTUJPTF9HUEwoY3J5cHRvX2FsZ19hdmFpbGFibGUpOwpkaWZmIC0tZ2l0IGEvY3J5cHRvL2FyYzQuYyBiL2NyeXB0by9hcmM0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWVmYmNhYQotLS0gL2Rldi9udWxsCisrKyBiL2NyeXB0by9hcmM0LmMKQEAgLTAsMCArMSwxMDMgQEAKKy8qIAorICogQ3J5cHRvZ3JhcGhpYyBBUEkKKyAqCisgKiBBUkM0IENpcGhlciBBbGdvcml0aG0KKyAqCisgKiBKb24gT2JlcmhlaWRlIDxqb25Ab2JlcmhlaWRlLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqLworI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9jcnlwdG8uaD4KKworI2RlZmluZSBBUkM0X01JTl9LRVlfU0laRQkxCisjZGVmaW5lIEFSQzRfTUFYX0tFWV9TSVpFCTI1NgorI2RlZmluZSBBUkM0X0JMT0NLX1NJWkUJCTEKKworc3RydWN0IGFyYzRfY3R4IHsKKwl1OCBTWzI1Nl07CisJdTggeCwgeTsKK307CisKK3N0YXRpYyBpbnQgYXJjNF9zZXRfa2V5KHZvaWQgKmN0eF9hcmcsIGNvbnN0IHU4ICppbl9rZXksIHVuc2lnbmVkIGludCBrZXlfbGVuLCB1MzIgKmZsYWdzKQoreworCXN0cnVjdCBhcmM0X2N0eCAqY3R4ID0gY3R4X2FyZzsKKwlpbnQgaSwgaiA9IDAsIGsgPSAwOworCisJY3R4LT54ID0gMTsKKwljdHgtPnkgPSAwOworCisJZm9yKGkgPSAwOyBpIDwgMjU2OyBpKyspCisJCWN0eC0+U1tpXSA9IGk7CisKKwlmb3IoaSA9IDA7IGkgPCAyNTY7IGkrKykKKwl7CisJCXU4IGEgPSBjdHgtPlNbaV07CisJCWogPSAoaiArIGluX2tleVtrXSArIGEpICYgMHhmZjsKKwkJY3R4LT5TW2ldID0gY3R4LT5TW2pdOworCQljdHgtPlNbal0gPSBhOworCQlpZigrK2sgPj0ga2V5X2xlbikKKwkJCWsgPSAwOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBhcmM0X2NyeXB0KHZvaWQgKmN0eF9hcmcsIHU4ICpvdXQsIGNvbnN0IHU4ICppbikKK3sKKwlzdHJ1Y3QgYXJjNF9jdHggKmN0eCA9IGN0eF9hcmc7CisKKwl1OCAqY29uc3QgUyA9IGN0eC0+UzsKKwl1OCB4ID0gY3R4LT54OworCXU4IHkgPSBjdHgtPnk7CisJdTggYSwgYjsKKworCWEgPSBTW3hdOworCXkgPSAoeSArIGEpICYgMHhmZjsKKwliID0gU1t5XTsKKwlTW3hdID0gYjsKKwlTW3ldID0gYTsKKwl4ID0gKHggKyAxKSAmIDB4ZmY7CisJKm91dCsrID0gKmluIF4gU1soYSArIGIpICYgMHhmZl07CisKKwljdHgtPnggPSB4OworCWN0eC0+eSA9IHk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgY3J5cHRvX2FsZyBhcmM0X2FsZyA9IHsKKwkuY3JhX25hbWUJCT0JImFyYzQiLAorCS5jcmFfZmxhZ3MJCT0JQ1JZUFRPX0FMR19UWVBFX0NJUEhFUiwKKwkuY3JhX2Jsb2Nrc2l6ZQkJPQlBUkM0X0JMT0NLX1NJWkUsCisJLmNyYV9jdHhzaXplCQk9CXNpemVvZihzdHJ1Y3QgYXJjNF9jdHgpLAorCS5jcmFfbW9kdWxlCQk9CVRISVNfTU9EVUxFLAorCS5jcmFfbGlzdAkJPQlMSVNUX0hFQURfSU5JVChhcmM0X2FsZy5jcmFfbGlzdCksCisJLmNyYV91CQkJPQl7IC5jaXBoZXIgPSB7CisJLmNpYV9taW5fa2V5c2l6ZQk9CUFSQzRfTUlOX0tFWV9TSVpFLAorCS5jaWFfbWF4X2tleXNpemUJPQlBUkM0X01BWF9LRVlfU0laRSwKKwkuY2lhX3NldGtleQkgICAJPSAJYXJjNF9zZXRfa2V5LAorCS5jaWFfZW5jcnlwdAkgCT0JYXJjNF9jcnlwdCwKKwkuY2lhX2RlY3J5cHQJICAJPQlhcmM0X2NyeXB0IH0gfQorfTsKKworc3RhdGljIGludCBfX2luaXQgYXJjNF9pbml0KHZvaWQpCit7CisJcmV0dXJuIGNyeXB0b19yZWdpc3Rlcl9hbGcoJmFyYzRfYWxnKTsKK30KKworCitzdGF0aWMgdm9pZCBfX2V4aXQgYXJjNF9leGl0KHZvaWQpCit7CisJY3J5cHRvX3VucmVnaXN0ZXJfYWxnKCZhcmM0X2FsZyk7Cit9CisKK21vZHVsZV9pbml0KGFyYzRfaW5pdCk7Cittb2R1bGVfZXhpdChhcmM0X2V4aXQpOworCitNT0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfREVTQ1JJUFRJT04oIkFSQzQgQ2lwaGVyIEFsZ29yaXRobSIpOworTU9EVUxFX0FVVEhPUigiSm9uIE9iZXJoZWlkZSA8am9uQG9iZXJoZWlkZS5vcmc+Iik7CmRpZmYgLS1naXQgYS9jcnlwdG8vYmxvd2Zpc2guYyBiL2NyeXB0by9ibG93ZmlzaC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4YjI5ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9jcnlwdG8vYmxvd2Zpc2guYwpAQCAtMCwwICsxLDQ3OCBAQAorLyogCisgKiBDcnlwdG9ncmFwaGljIEFQSS4KKyAqCisgKiBCbG93ZmlzaCBDaXBoZXIgQWxnb3JpdGhtLCBieSBCcnVjZSBTY2huZWllci4KKyAqIGh0dHA6Ly93d3cuY291bnRlcnBhbmUuY29tL2Jsb3dmaXNoLmh0bWwKKyAqCisgKiBBZGFwdGVkIGZyb20gS2VybmVsaSBpbXBsZW1lbnRhdGlvbi4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIEhlcmJlcnQgVmFsZXJpbyBSaWVkZWwgPGh2ckBodnJsYWIub3JnPgorICogQ29weXJpZ2h0IChjKSBLeWxlIE1jTWFydGluIDxreWxlQGRlYmlhbi5vcmc+CisgKiBDb3B5cmlnaHQgKGMpIDIwMDIgSmFtZXMgTW9ycmlzIDxqbW9ycmlzQGludGVyY29kZS5jb20uYXU+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKi8KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvbW0uaD4KKyNpbmNsdWRlIDxhc20vc2NhdHRlcmxpc3QuaD4KKyNpbmNsdWRlIDxsaW51eC9jcnlwdG8uaD4KKworI2RlZmluZSBCRl9CTE9DS19TSVpFIDgKKyNkZWZpbmUgQkZfTUlOX0tFWV9TSVpFIDQKKyNkZWZpbmUgQkZfTUFYX0tFWV9TSVpFIDU2CisKK3N0cnVjdCBiZl9jdHggeworCXUzMiBwWzE4XTsKKwl1MzIgc1sxMDI0XTsKK307CisKK3N0YXRpYyBjb25zdCB1MzIgYmZfcGJveFsxNiArIDJdID0geworCTB4MjQzZjZhODgsIDB4ODVhMzA4ZDMsIDB4MTMxOThhMmUsIDB4MDM3MDczNDQsCisJMHhhNDA5MzgyMiwgMHgyOTlmMzFkMCwgMHgwODJlZmE5OCwgMHhlYzRlNmM4OSwKKwkweDQ1MjgyMWU2LCAweDM4ZDAxMzc3LCAweGJlNTQ2NmNmLCAweDM0ZTkwYzZjLAorCTB4YzBhYzI5YjcsIDB4Yzk3YzUwZGQsIDB4M2Y4NGQ1YjUsIDB4YjU0NzA5MTcsCisJMHg5MjE2ZDVkOSwgMHg4OTc5ZmIxYiwKK307CisKK3N0YXRpYyBjb25zdCB1MzIgYmZfc2JveFsyNTYgKiA0XSA9IHsKKwkweGQxMzEwYmE2LCAweDk4ZGZiNWFjLCAweDJmZmQ3MmRiLCAweGQwMWFkZmI3LAorCTB4YjhlMWFmZWQsIDB4NmEyNjdlOTYsIDB4YmE3YzkwNDUsIDB4ZjEyYzdmOTksCisJMHgyNGExOTk0NywgMHhiMzkxNmNmNywgMHgwODAxZjJlMiwgMHg4NThlZmMxNiwKKwkweDYzNjkyMGQ4LCAweDcxNTc0ZTY5LCAweGE0NThmZWEzLCAweGY0OTMzZDdlLAorCTB4MGQ5NTc0OGYsIDB4NzI4ZWI2NTgsIDB4NzE4YmNkNTgsIDB4ODIxNTRhZWUsCisJMHg3YjU0YTQxZCwgMHhjMjVhNTliNSwgMHg5YzMwZDUzOSwgMHgyYWYyNjAxMywKKwkweGM1ZDFiMDIzLCAweDI4NjA4NWYwLCAweGNhNDE3OTE4LCAweGI4ZGIzOGVmLAorCTB4OGU3OWRjYjAsIDB4NjAzYTE4MGUsIDB4NmM5ZTBlOGIsIDB4YjAxZThhM2UsCisJMHhkNzE1NzdjMSwgMHhiZDMxNGIyNywgMHg3OGFmMmZkYSwgMHg1NTYwNWM2MCwKKwkweGU2NTUyNWYzLCAweGFhNTVhYjk0LCAweDU3NDg5ODYyLCAweDYzZTgxNDQwLAorCTB4NTVjYTM5NmEsIDB4MmFhYjEwYjYsIDB4YjRjYzVjMzQsIDB4MTE0MWU4Y2UsCisJMHhhMTU0ODZhZiwgMHg3YzcyZTk5MywgMHhiM2VlMTQxMSwgMHg2MzZmYmMyYSwKKwkweDJiYTljNTVkLCAweDc0MTgzMWY2LCAweGNlNWMzZTE2LCAweDliODc5MzFlLAorCTB4YWZkNmJhMzMsIDB4NmMyNGNmNWMsIDB4N2EzMjUzODEsIDB4Mjg5NTg2NzcsCisJMHgzYjhmNDg5OCwgMHg2YjRiYjlhZiwgMHhjNGJmZTgxYiwgMHg2NjI4MjE5MywKKwkweDYxZDgwOWNjLCAweGZiMjFhOTkxLCAweDQ4N2NhYzYwLCAweDVkZWM4MDMyLAorCTB4ZWY4NDVkNWQsIDB4ZTk4NTc1YjEsIDB4ZGMyNjIzMDIsIDB4ZWI2NTFiODgsCisJMHgyMzg5M2U4MSwgMHhkMzk2YWNjNSwgMHgwZjZkNmZmMywgMHg4M2Y0NDIzOSwKKwkweDJlMGI0NDgyLCAweGE0ODQyMDA0LCAweDY5YzhmMDRhLCAweDllMWY5YjVlLAorCTB4MjFjNjY4NDIsIDB4ZjZlOTZjOWEsIDB4NjcwYzljNjEsIDB4YWJkMzg4ZjAsCisJMHg2YTUxYTBkMiwgMHhkODU0MmY2OCwgMHg5NjBmYTcyOCwgMHhhYjUxMzNhMywKKwkweDZlZWYwYjZjLCAweDEzN2EzYmU0LCAweGJhM2JmMDUwLCAweDdlZmIyYTk4LAorCTB4YTFmMTY1MWQsIDB4MzlhZjAxNzYsIDB4NjZjYTU5M2UsIDB4ODI0MzBlODgsCisJMHg4Y2VlODYxOSwgMHg0NTZmOWZiNCwgMHg3ZDg0YTVjMywgMHgzYjhiNWViZSwKKwkweGUwNmY3NWQ4LCAweDg1YzEyMDczLCAweDQwMWE0NDlmLCAweDU2YzE2YWE2LAorCTB4NGVkM2FhNjIsIDB4MzYzZjc3MDYsIDB4MWJmZWRmNzIsIDB4NDI5YjAyM2QsCisJMHgzN2QwZDcyNCwgMHhkMDBhMTI0OCwgMHhkYjBmZWFkMywgMHg0OWYxYzA5YiwKKwkweDA3NTM3MmM5LCAweDgwOTkxYjdiLCAweDI1ZDQ3OWQ4LCAweGY2ZThkZWY3LAorCTB4ZTNmZTUwMWEsIDB4YjY3OTRjM2IsIDB4OTc2Y2UwYmQsIDB4MDRjMDA2YmEsCisJMHhjMWE5NGZiNiwgMHg0MDlmNjBjNCwgMHg1ZTVjOWVjMiwgMHgxOTZhMjQ2MywKKwkweDY4ZmI2ZmFmLCAweDNlNmM1M2I1LCAweDEzMzliMmViLCAweDNiNTJlYzZmLAorCTB4NmRmYzUxMWYsIDB4OWIzMDk1MmMsIDB4Y2M4MTQ1NDQsIDB4YWY1ZWJkMDksCisJMHhiZWUzZDAwNCwgMHhkZTMzNGFmZCwgMHg2NjBmMjgwNywgMHgxOTJlNGJiMywKKwkweGMwY2JhODU3LCAweDQ1Yzg3NDBmLCAweGQyMGI1ZjM5LCAweGI5ZDNmYmRiLAorCTB4NTU3OWMwYmQsIDB4MWE2MDMyMGEsIDB4ZDZhMTAwYzYsIDB4NDAyYzcyNzksCisJMHg2NzlmMjVmZSwgMHhmYjFmYTNjYywgMHg4ZWE1ZTlmOCwgMHhkYjMyMjJmOCwKKwkweDNjNzUxNmRmLCAweGZkNjE2YjE1LCAweDJmNTAxZWM4LCAweGFkMDU1MmFiLAorCTB4MzIzZGI1ZmEsIDB4ZmQyMzg3NjAsIDB4NTMzMTdiNDgsIDB4M2UwMGRmODIsCisJMHg5ZTVjNTdiYiwgMHhjYTZmOGNhMCwgMHgxYTg3NTYyZSwgMHhkZjE3NjlkYiwKKwkweGQ1NDJhOGY2LCAweDI4N2VmZmMzLCAweGFjNjczMmM2LCAweDhjNGY1NTczLAorCTB4Njk1YjI3YjAsIDB4YmJjYTU4YzgsIDB4ZTFmZmEzNWQsIDB4YjhmMDExYTAsCisJMHgxMGZhM2Q5OCwgMHhmZDIxODNiOCwgMHg0YWZjYjU2YywgMHgyZGQxZDM1YiwKKwkweDlhNTNlNDc5LCAweGI2Zjg0NTY1LCAweGQyOGU0OWJjLCAweDRiZmI5NzkwLAorCTB4ZTFkZGYyZGEsIDB4YTRjYjdlMzMsIDB4NjJmYjEzNDEsIDB4Y2VlNGM2ZTgsCisJMHhlZjIwY2FkYSwgMHgzNjc3NGMwMSwgMHhkMDdlOWVmZSwgMHgyYmYxMWZiNCwKKwkweDk1ZGJkYTRkLCAweGFlOTA5MTk4LCAweGVhYWQ4ZTcxLCAweDZiOTNkNWEwLAorCTB4ZDA4ZWQxZDAsIDB4YWZjNzI1ZTAsIDB4OGUzYzViMmYsIDB4OGU3NTk0YjcsCisJMHg4ZmY2ZTJmYiwgMHhmMjEyMmI2NCwgMHg4ODg4YjgxMiwgMHg5MDBkZjAxYywKKwkweDRmYWQ1ZWEwLCAweDY4OGZjMzFjLCAweGQxY2ZmMTkxLCAweGIzYThjMWFkLAorCTB4MmYyZjIyMTgsIDB4YmUwZTE3NzcsIDB4ZWE3NTJkZmUsIDB4OGIwMjFmYTEsCisJMHhlNWEwY2MwZiwgMHhiNTZmNzRlOCwgMHgxOGFjZjNkNiwgMHhjZTg5ZTI5OSwKKwkweGI0YTg0ZmUwLCAweGZkMTNlMGI3LCAweDdjYzQzYjgxLCAweGQyYWRhOGQ5LAorCTB4MTY1ZmEyNjYsIDB4ODA5NTc3MDUsIDB4OTNjYzczMTQsIDB4MjExYTE0NzcsCisJMHhlNmFkMjA2NSwgMHg3N2I1ZmE4NiwgMHhjNzU0NDJmNSwgMHhmYjlkMzVjZiwKKwkweGViY2RhZjBjLCAweDdiM2U4OWEwLCAweGQ2NDExYmQzLCAweGFlMWU3ZTQ5LAorCTB4MDAyNTBlMmQsIDB4MjA3MWIzNWUsIDB4MjI2ODAwYmIsIDB4NTdiOGUwYWYsCisJMHgyNDY0MzY5YiwgMHhmMDA5YjkxZSwgMHg1NTYzOTExZCwgMHg1OWRmYTZhYSwKKwkweDc4YzE0Mzg5LCAweGQ5NWE1MzdmLCAweDIwN2Q1YmEyLCAweDAyZTViOWM1LAorCTB4ODMyNjAzNzYsIDB4NjI5NWNmYTksIDB4MTFjODE5NjgsIDB4NGU3MzRhNDEsCisJMHhiMzQ3MmRjYSwgMHg3YjE0YTk0YSwgMHgxYjUxMDA1MiwgMHg5YTUzMjkxNSwKKwkweGQ2MGY1NzNmLCAweGJjOWJjNmU0LCAweDJiNjBhNDc2LCAweDgxZTY3NDAwLAorCTB4MDhiYTZmYjUsIDB4NTcxYmU5MWYsIDB4ZjI5NmVjNmIsIDB4MmEwZGQ5MTUsCisJMHhiNjYzNjUyMSwgMHhlN2I5ZjliNiwgMHhmZjM0MDUyZSwgMHhjNTg1NTY2NCwKKwkweDUzYjAyZDVkLCAweGE5OWY4ZmExLCAweDA4YmE0Nzk5LCAweDZlODUwNzZhLAorCTB4NGI3YTcwZTksIDB4YjViMzI5NDQsIDB4ZGI3NTA5MmUsIDB4YzQxOTI2MjMsCisJMHhhZDZlYTZiMCwgMHg0OWE3ZGY3ZCwgMHg5Y2VlNjBiOCwgMHg4ZmVkYjI2NiwKKwkweGVjYWE4YzcxLCAweDY5OWExN2ZmLCAweDU2NjQ1MjZjLCAweGMyYjE5ZWUxLAorCTB4MTkzNjAyYTUsIDB4NzUwOTRjMjksIDB4YTA1OTEzNDAsIDB4ZTQxODNhM2UsCisJMHgzZjU0OTg5YSwgMHg1YjQyOWQ2NSwgMHg2YjhmZTRkNiwgMHg5OWY3M2ZkNiwKKwkweGExZDI5YzA3LCAweGVmZTgzMGY1LCAweDRkMmQzOGU2LCAweGYwMjU1ZGMxLAorCTB4NGNkZDIwODYsIDB4ODQ3MGViMjYsIDB4NjM4MmU5YzYsIDB4MDIxZWNjNWUsCisJMHgwOTY4NmIzZiwgMHgzZWJhZWZjOSwgMHgzYzk3MTgxNCwgMHg2YjZhNzBhMSwKKwkweDY4N2YzNTg0LCAweDUyYTBlMjg2LCAweGI3OWM1MzA1LCAweGFhNTAwNzM3LAorCTB4M2UwNzg0MWMsIDB4N2ZkZWFlNWMsIDB4OGU3ZDQ0ZWMsIDB4NTcxNmYyYjgsCisJMHhiMDNhZGEzNywgMHhmMDUwMGMwZCwgMHhmMDFjMWYwNCwgMHgwMjAwYjNmZiwKKwkweGFlMGNmNTFhLCAweDNjYjU3NGIyLCAweDI1ODM3YTU4LCAweGRjMDkyMWJkLAorCTB4ZDE5MTEzZjksIDB4N2NhOTJmZjYsIDB4OTQzMjQ3NzMsIDB4MjJmNTQ3MDEsCisJMHgzYWU1ZTU4MSwgMHgzN2MyZGFkYywgMHhjOGI1NzYzNCwgMHg5YWYzZGRhNywKKwkweGE5NDQ2MTQ2LCAweDBmZDAwMzBlLCAweGVjYzhjNzNlLCAweGE0NzUxZTQxLAorCTB4ZTIzOGNkOTksIDB4M2JlYTBlMmYsIDB4MzI4MGJiYTEsIDB4MTgzZWIzMzEsCisJMHg0ZTU0OGIzOCwgMHg0ZjZkYjkwOCwgMHg2ZjQyMGQwMywgMHhmNjBhMDRiZiwKKwkweDJjYjgxMjkwLCAweDI0OTc3Yzc5LCAweDU2NzliMDcyLCAweGJjYWY4OWFmLAorCTB4ZGU5YTc3MWYsIDB4ZDk5MzA4MTAsIDB4YjM4YmFlMTIsIDB4ZGNjZjNmMmUsCisJMHg1NTEyNzIxZiwgMHgyZTZiNzEyNCwgMHg1MDFhZGRlNiwgMHg5Zjg0Y2Q4NywKKwkweDdhNTg0NzE4LCAweDc0MDhkYTE3LCAweGJjOWY5YWJjLCAweGU5NGI3ZDhjLAorCTB4ZWM3YWVjM2EsIDB4ZGI4NTFkZmEsIDB4NjMwOTQzNjYsIDB4YzQ2NGMzZDIsCisJMHhlZjFjMTg0NywgMHgzMjE1ZDkwOCwgMHhkZDQzM2IzNywgMHgyNGMyYmExNiwKKwkweDEyYTE0ZDQzLCAweDJhNjVjNDUxLCAweDUwOTQwMDAyLCAweDEzM2FlNGRkLAorCTB4NzFkZmY4OWUsIDB4MTAzMTRlNTUsIDB4ODFhYzc3ZDYsIDB4NWYxMTE5OWIsCisJMHgwNDM1NTZmMSwgMHhkN2EzYzc2YiwgMHgzYzExMTgzYiwgMHg1OTI0YTUwOSwKKwkweGYyOGZlNmVkLCAweDk3ZjFmYmZhLCAweDllYmFiZjJjLCAweDFlMTUzYzZlLAorCTB4ODZlMzQ1NzAsIDB4ZWFlOTZmYjEsIDB4ODYwZTVlMGEsIDB4NWEzZTJhYjMsCisJMHg3NzFmZTcxYywgMHg0ZTNkMDZmYSwgMHgyOTY1ZGNiOSwgMHg5OWU3MWQwZiwKKwkweDgwM2U4OWQ2LCAweDUyNjZjODI1LCAweDJlNGNjOTc4LCAweDljMTBiMzZhLAorCTB4YzYxNTBlYmEsIDB4OTRlMmVhNzgsIDB4YTVmYzNjNTMsIDB4MWUwYTJkZjQsCisJMHhmMmY3NGVhNywgMHgzNjFkMmIzZCwgMHgxOTM5MjYwZiwgMHgxOWMyNzk2MCwKKwkweDUyMjNhNzA4LCAweGY3MTMxMmI2LCAweGViYWRmZTZlLCAweGVhYzMxZjY2LAorCTB4ZTNiYzQ1OTUsIDB4YTY3YmM4ODMsIDB4YjE3ZjM3ZDEsIDB4MDE4Y2ZmMjgsCisJMHhjMzMyZGRlZiwgMHhiZTZjNWFhNSwgMHg2NTU4MjE4NSwgMHg2OGFiOTgwMiwKKwkweGVlY2VhNTBmLCAweGRiMmY5NTNiLCAweDJhZWY3ZGFkLCAweDViNmUyZjg0LAorCTB4MTUyMWI2MjgsIDB4MjkwNzYxNzAsIDB4ZWNkZDQ3NzUsIDB4NjE5ZjE1MTAsCisJMHgxM2NjYTgzMCwgMHhlYjYxYmQ5NiwgMHgwMzM0ZmUxZSwgMHhhYTAzNjNjZiwKKwkweGI1NzM1YzkwLCAweDRjNzBhMjM5LCAweGQ1OWU5ZTBiLCAweGNiYWFkZTE0LAorCTB4ZWVjYzg2YmMsIDB4NjA2MjJjYTcsIDB4OWNhYjVjYWIsIDB4YjJmMzg0NmUsCisJMHg2NDhiMWVhZiwgMHgxOWJkZjBjYSwgMHhhMDIzNjliOSwgMHg2NTVhYmI1MCwKKwkweDQwNjg1YTMyLCAweDNjMmFiNGIzLCAweDMxOWVlOWQ1LCAweGMwMjFiOGY3LAorCTB4OWI1NDBiMTksIDB4ODc1ZmEwOTksIDB4OTVmNzk5N2UsIDB4NjIzZDdkYTgsCisJMHhmODM3ODg5YSwgMHg5N2UzMmQ3NywgMHgxMWVkOTM1ZiwgMHgxNjY4MTI4MSwKKwkweDBlMzU4ODI5LCAweGM3ZTYxZmQ2LCAweDk2ZGVkZmExLCAweDc4NThiYTk5LAorCTB4NTdmNTg0YTUsIDB4MWIyMjcyNjMsIDB4OWI4M2MzZmYsIDB4MWFjMjQ2OTYsCisJMHhjZGIzMGFlYiwgMHg1MzJlMzA1NCwgMHg4ZmQ5NDhlNCwgMHg2ZGJjMzEyOCwKKwkweDU4ZWJmMmVmLCAweDM0YzZmZmVhLCAweGZlMjhlZDYxLCAweGVlN2MzYzczLAorCTB4NWQ0YTE0ZDksIDB4ZTg2NGI3ZTMsIDB4NDIxMDVkMTQsIDB4MjAzZTEzZTAsCisJMHg0NWVlZTJiNiwgMHhhM2FhYWJlYSwgMHhkYjZjNGYxNSwgMHhmYWNiNGZkMCwKKwkweGM3NDJmNDQyLCAweGVmNmFiYmI1LCAweDY1NGYzYjFkLCAweDQxY2QyMTA1LAorCTB4ZDgxZTc5OWUsIDB4ODY4NTRkYzcsIDB4ZTQ0YjQ3NmEsIDB4M2Q4MTYyNTAsCisJMHhjZjYyYTFmMiwgMHg1YjhkMjY0NiwgMHhmYzg4ODNhMCwgMHhjMWM3YjZhMywKKwkweDdmMTUyNGMzLCAweDY5Y2I3NDkyLCAweDQ3ODQ4YTBiLCAweDU2OTJiMjg1LAorCTB4MDk1YmJmMDAsIDB4YWQxOTQ4OWQsIDB4MTQ2MmIxNzQsIDB4MjM4MjBlMDAsCisJMHg1ODQyOGQyYSwgMHgwYzU1ZjVlYSwgMHgxZGFkZjQzZSwgMHgyMzNmNzA2MSwKKwkweDMzNzJmMDkyLCAweDhkOTM3ZTQxLCAweGQ2NWZlY2YxLCAweDZjMjIzYmRiLAorCTB4N2NkZTM3NTksIDB4Y2JlZTc0NjAsIDB4NDA4NWYyYTcsIDB4Y2U3NzMyNmUsCisJMHhhNjA3ODA4NCwgMHgxOWY4NTA5ZSwgMHhlOGVmZDg1NSwgMHg2MWQ5OTczNSwKKwkweGE5NjlhN2FhLCAweGM1MGMwNmMyLCAweDVhMDRhYmZjLCAweDgwMGJjYWRjLAorCTB4OWU0NDdhMmUsIDB4YzM0NTM0ODQsIDB4ZmRkNTY3MDUsIDB4MGUxZTllYzksCisJMHhkYjczZGJkMywgMHgxMDU1ODhjZCwgMHg2NzVmZGE3OSwgMHhlMzY3NDM0MCwKKwkweGM1YzQzNDY1LCAweDcxM2UzOGQ4LCAweDNkMjhmODllLCAweGYxNmRmZjIwLAorCTB4MTUzZTIxZTcsIDB4OGZiMDNkNGEsIDB4ZTZlMzlmMmIsIDB4ZGI4M2FkZjcsCisJMHhlOTNkNWE2OCwgMHg5NDgxNDBmNywgMHhmNjRjMjYxYywgMHg5NDY5MjkzNCwKKwkweDQxMTUyMGY3LCAweDc2MDJkNGY3LCAweGJjZjQ2YjJlLCAweGQ0YTIwMDY4LAorCTB4ZDQwODI0NzEsIDB4MzMyMGY0NmEsIDB4NDNiN2Q0YjcsIDB4NTAwMDYxYWYsCisJMHgxZTM5ZjYyZSwgMHg5NzI0NDU0NiwgMHgxNDIxNGY3NCwgMHhiZjhiODg0MCwKKwkweDRkOTVmYzFkLCAweDk2YjU5MWFmLCAweDcwZjRkZGQzLCAweDY2YTAyZjQ1LAorCTB4YmZiYzA5ZWMsIDB4MDNiZDk3ODUsIDB4N2ZhYzZkZDAsIDB4MzFjYjg1MDQsCisJMHg5NmViMjdiMywgMHg1NWZkMzk0MSwgMHhkYTI1NDdlNiwgMHhhYmNhMGE5YSwKKwkweDI4NTA3ODI1LCAweDUzMDQyOWY0LCAweDBhMmM4NmRhLCAweGU5YjY2ZGZiLAorCTB4NjhkYzE0NjIsIDB4ZDc0ODY5MDAsIDB4NjgwZWMwYTQsIDB4MjdhMThkZWUsCisJMHg0ZjNmZmVhMiwgMHhlODg3YWQ4YywgMHhiNThjZTAwNiwgMHg3YWY0ZDZiNiwKKwkweGFhY2UxZTdjLCAweGQzMzc1ZmVjLCAweGNlNzhhMzk5LCAweDQwNmIyYTQyLAorCTB4MjBmZTllMzUsIDB4ZDlmMzg1YjksIDB4ZWUzOWQ3YWIsIDB4M2IxMjRlOGIsCisJMHgxZGM5ZmFmNywgMHg0YjZkMTg1NiwgMHgyNmEzNjYzMSwgMHhlYWUzOTdiMiwKKwkweDNhNmVmYTc0LCAweGRkNWI0MzMyLCAweDY4NDFlN2Y3LCAweGNhNzgyMGZiLAorCTB4ZmIwYWY1NGUsIDB4ZDhmZWIzOTcsIDB4NDU0MDU2YWMsIDB4YmE0ODk1MjcsCisJMHg1NTUzM2EzYSwgMHgyMDgzOGQ4NywgMHhmZTZiYTliNywgMHhkMDk2OTU0YiwKKwkweDU1YTg2N2JjLCAweGExMTU5YTU4LCAweGNjYTkyOTYzLCAweDk5ZTFkYjMzLAorCTB4YTYyYTRhNTYsIDB4M2YzMTI1ZjksIDB4NWVmNDdlMWMsIDB4OTAyOTMxN2MsCisJMHhmZGY4ZTgwMiwgMHgwNDI3MmY3MCwgMHg4MGJiMTU1YywgMHgwNTI4MmNlMywKKwkweDk1YzExNTQ4LCAweGU0YzY2ZDIyLCAweDQ4YzExMzNmLCAweGM3MGY4NmRjLAorCTB4MDdmOWM5ZWUsIDB4NDEwNDFmMGYsIDB4NDA0Nzc5YTQsIDB4NWQ4ODZlMTcsCisJMHgzMjVmNTFlYiwgMHhkNTliYzBkMSwgMHhmMmJjYzE4ZiwgMHg0MTExMzU2NCwKKwkweDI1N2I3ODM0LCAweDYwMmE5YzYwLCAweGRmZjhlOGEzLCAweDFmNjM2YzFiLAorCTB4MGUxMmI0YzIsIDB4MDJlMTMyOWUsIDB4YWY2NjRmZDEsIDB4Y2FkMTgxMTUsCisJMHg2YjIzOTVlMCwgMHgzMzNlOTJlMSwgMHgzYjI0MGI2MiwgMHhlZWJlYjkyMiwKKwkweDg1YjJhMjBlLCAweGU2YmEwZDk5LCAweGRlNzIwYzhjLCAweDJkYTJmNzI4LAorCTB4ZDAxMjc4NDUsIDB4OTViNzk0ZmQsIDB4NjQ3ZDA4NjIsIDB4ZTdjY2Y1ZjAsCisJMHg1NDQ5YTM2ZiwgMHg4NzdkNDhmYSwgMHhjMzlkZmQyNywgMHhmMzNlOGQxZSwKKwkweDBhNDc2MzQxLCAweDk5MmVmZjc0LCAweDNhNmY2ZWFiLCAweGY0ZjhmZDM3LAorCTB4YTgxMmRjNjAsIDB4YTFlYmRkZjgsIDB4OTkxYmUxNGMsIDB4ZGI2ZTZiMGQsCisJMHhjNjdiNTUxMCwgMHg2ZDY3MmMzNywgMHgyNzY1ZDQzYiwgMHhkY2QwZTgwNCwKKwkweGYxMjkwZGM3LCAweGNjMDBmZmEzLCAweGI1MzkwZjkyLCAweDY5MGZlZDBiLAorCTB4NjY3YjlmZmIsIDB4Y2VkYjdkOWMsIDB4YTA5MWNmMGIsIDB4ZDkxNTVlYTMsCisJMHhiYjEzMmY4OCwgMHg1MTViYWQyNCwgMHg3Yjk0NzliZiwgMHg3NjNiZDZlYiwKKwkweDM3MzkyZWIzLCAweGNjMTE1OTc5LCAweDgwMjZlMjk3LCAweGY0MmUzMTJkLAorCTB4Njg0MmFkYTcsIDB4YzY2YTJiM2IsIDB4MTI3NTRjY2MsIDB4NzgyZWYxMWMsCisJMHg2YTEyNDIzNywgMHhiNzkyNTFlNywgMHgwNmExYmJlNiwgMHg0YmZiNjM1MCwKKwkweDFhNmIxMDE4LCAweDExY2FlZGZhLCAweDNkMjViZGQ4LCAweGUyZTFjM2M5LAorCTB4NDQ0MjE2NTksIDB4MGExMjEzODYsIDB4ZDkwY2VjNmUsIDB4ZDVhYmVhMmEsCisJMHg2NGFmNjc0ZSwgMHhkYTg2YTg1ZiwgMHhiZWJmZTk4OCwgMHg2NGU0YzNmZSwKKwkweDlkYmM4MDU3LCAweGYwZjdjMDg2LCAweDYwNzg3YmY4LCAweDYwMDM2MDRkLAorCTB4ZDFmZDgzNDYsIDB4ZjYzODFmYjAsIDB4Nzc0NWFlMDQsIDB4ZDczNmZjY2MsCisJMHg4MzQyNmIzMywgMHhmMDFlYWI3MSwgMHhiMDgwNDE4NywgMHgzYzAwNWU1ZiwKKwkweDc3YTA1N2JlLCAweGJkZThhZTI0LCAweDU1NDY0Mjk5LCAweGJmNTgyZTYxLAorCTB4NGU1OGY0OGYsIDB4ZjJkZGZkYTIsIDB4ZjQ3NGVmMzgsIDB4ODc4OWJkYzIsCisJMHg1MzY2ZjljMywgMHhjOGIzOGU3NCwgMHhiNDc1ZjI1NSwgMHg0NmZjZDliOSwKKwkweDdhZWIyNjYxLCAweDhiMWRkZjg0LCAweDg0NmEwZTc5LCAweDkxNWY5NWUyLAorCTB4NDY2ZTU5OGUsIDB4MjBiNDU3NzAsIDB4OGNkNTU1OTEsIDB4YzkwMmRlNGMsCisJMHhiOTBiYWNlMSwgMHhiYjgyMDVkMCwgMHgxMWE4NjI0OCwgMHg3NTc0YTk5ZSwKKwkweGI3N2YxOWI2LCAweGUwYTlkYzA5LCAweDY2MmQwOWExLCAweGM0MzI0NjMzLAorCTB4ZTg1YTFmMDIsIDB4MDlmMGJlOGMsIDB4NGE5OWEwMjUsIDB4MWQ2ZWZlMTAsCisJMHgxYWI5M2QxZCwgMHgwYmE1YTRkZiwgMHhhMTg2ZjIwZiwgMHgyODY4ZjE2OSwKKwkweGRjYjdkYTgzLCAweDU3MzkwNmZlLCAweGExZTJjZTliLCAweDRmY2Q3ZjUyLAorCTB4NTAxMTVlMDEsIDB4YTcwNjgzZmEsIDB4YTAwMmI1YzQsIDB4MGRlNmQwMjcsCisJMHg5YWY4OGMyNywgMHg3NzNmODY0MSwgMHhjMzYwNGMwNiwgMHg2MWE4MDZiNSwKKwkweGYwMTc3YTI4LCAweGMwZjU4NmUwLCAweDAwNjA1OGFhLCAweDMwZGM3ZDYyLAorCTB4MTFlNjllZDcsIDB4MjMzOGVhNjMsIDB4NTNjMmRkOTQsIDB4YzJjMjE2MzQsCisJMHhiYmNiZWU1NiwgMHg5MGJjYjZkZSwgMHhlYmZjN2RhMSwgMHhjZTU5MWQ3NiwKKwkweDZmMDVlNDA5LCAweDRiN2MwMTg4LCAweDM5NzIwYTNkLCAweDdjOTI3YzI0LAorCTB4ODZlMzcyNWYsIDB4NzI0ZDlkYjksIDB4MWFjMTViYjQsIDB4ZDM5ZWI4ZmMsCisJMHhlZDU0NTU3OCwgMHgwOGZjYTViNSwgMHhkODNkN2NkMywgMHg0ZGFkMGZjNCwKKwkweDFlNTBlZjVlLCAweGIxNjFlNmY4LCAweGEyODUxNGQ5LCAweDZjNTExMzNjLAorCTB4NmZkNWM3ZTcsIDB4NTZlMTRlYzQsIDB4MzYyYWJmY2UsIDB4ZGRjNmM4MzcsCisJMHhkNzlhMzIzNCwgMHg5MjYzODIxMiwgMHg2NzBlZmE4ZSwgMHg0MDYwMDBlMCwKKwkweDNhMzljZTM3LCAweGQzZmFmNWNmLCAweGFiYzI3NzM3LCAweDVhYzUyZDFiLAorCTB4NWNiMDY3OWUsIDB4NGZhMzM3NDIsIDB4ZDM4MjI3NDAsIDB4OTliYzliYmUsCisJMHhkNTExOGU5ZCwgMHhiZjBmNzMxNSwgMHhkNjJkMWM3ZSwgMHhjNzAwYzQ3YiwKKwkweGI3OGMxYjZiLCAweDIxYTE5MDQ1LCAweGIyNmViMWJlLCAweDZhMzY2ZWI0LAorCTB4NTc0OGFiMmYsIDB4YmM5NDZlNzksIDB4YzZhMzc2ZDIsIDB4NjU0OWMyYzgsCisJMHg1MzBmZjhlZSwgMHg0NjhkZGU3ZCwgMHhkNTczMGExZCwgMHg0Y2QwNGRjNiwKKwkweDI5MzliYmRiLCAweGE5YmE0NjUwLCAweGFjOTUyNmU4LCAweGJlNWVlMzA0LAorCTB4YTFmYWQ1ZjAsIDB4NmEyZDUxOWEsIDB4NjNlZjhjZTIsIDB4OWE4NmVlMjIsCisJMHhjMDg5YzJiOCwgMHg0MzI0MmVmNiwgMHhhNTFlMDNhYSwgMHg5Y2YyZDBhNCwKKwkweDgzYzA2MWJhLCAweDliZTk2YTRkLCAweDhmZTUxNTUwLCAweGJhNjQ1YmQ2LAorCTB4MjgyNmEyZjksIDB4YTczYTNhZTEsIDB4NGJhOTk1ODYsIDB4ZWY1NTYyZTksCisJMHhjNzJmZWZkMywgMHhmNzUyZjdkYSwgMHgzZjA0NmY2OSwgMHg3N2ZhMGE1OSwKKwkweDgwZTRhOTE1LCAweDg3YjA4NjAxLCAweDliMDllNmFkLCAweDNiM2VlNTkzLAorCTB4ZTk5MGZkNWEsIDB4OWUzNGQ3OTcsIDB4MmNmMGI3ZDksIDB4MDIyYjhiNTEsCisJMHg5NmQ1YWMzYSwgMHgwMTdkYTY3ZCwgMHhkMWNmM2VkNiwgMHg3YzdkMmQyOCwKKwkweDFmOWYyNWNmLCAweGFkZjJiODliLCAweDVhZDZiNDcyLCAweDVhODhmNTRjLAorCTB4ZTAyOWFjNzEsIDB4ZTAxOWE1ZTYsIDB4NDdiMGFjZmQsIDB4ZWQ5M2ZhOWIsCisJMHhlOGQzYzQ4ZCwgMHgyODNiNTdjYywgMHhmOGQ1NjYyOSwgMHg3OTEzMmUyOCwKKwkweDc4NWYwMTkxLCAweGVkNzU2MDU1LCAweGY3OTYwZTQ0LCAweGUzZDM1ZThjLAorCTB4MTUwNTZkZDQsIDB4ODhmNDZkYmEsIDB4MDNhMTYxMjUsIDB4MDU2NGYwYmQsCisJMHhjM2ViOWUxNSwgMHgzYzkwNTdhMiwgMHg5NzI3MWFlYywgMHhhOTNhMDcyYSwKKwkweDFiM2Y2ZDliLCAweDFlNjMyMWY1LCAweGY1OWM2NmZiLCAweDI2ZGNmMzE5LAorCTB4NzUzM2Q5MjgsIDB4YjE1NWZkZjUsIDB4MDM1NjM0ODIsIDB4OGFiYTNjYmIsCisJMHgyODUxNzcxMSwgMHhjMjBhZDlmOCwgMHhhYmNjNTE2NywgMHhjY2FkOTI1ZiwKKwkweDRkZTgxNzUxLCAweDM4MzBkYzhlLCAweDM3OWQ1ODYyLCAweDkzMjBmOTkxLAorCTB4ZWE3YTkwYzIsIDB4ZmIzZTdiY2UsIDB4NTEyMWNlNjQsIDB4Nzc0ZmJlMzIsCisJMHhhOGI2ZTM3ZSwgMHhjMzI5M2Q0NiwgMHg0OGRlNTM2OSwgMHg2NDEzZTY4MCwKKwkweGEyYWUwODEwLCAweGRkNmRiMjI0LCAweDY5ODUyZGZkLCAweDA5MDcyMTY2LAorCTB4YjM5YTQ2MGEsIDB4NjQ0NWMwZGQsIDB4NTg2Y2RlY2YsIDB4MWMyMGM4YWUsCisJMHg1YmJlZjdkZCwgMHgxYjU4OGQ0MCwgMHhjY2QyMDE3ZiwgMHg2YmI0ZTNiYiwKKwkweGRkYTI2YTdlLCAweDNhNTlmZjQ1LCAweDNlMzUwYTQ0LCAweGJjYjRjZGQ1LAorCTB4NzJlYWNlYTgsIDB4ZmE2NDg0YmIsIDB4OGQ2NjEyYWUsIDB4YmYzYzZmNDcsCisJMHhkMjliZTQ2MywgMHg1NDJmNWQ5ZSwgMHhhZWMyNzcxYiwgMHhmNjRlNjM3MCwKKwkweDc0MGUwZDhkLCAweGU3NWIxMzU3LCAweGY4NzIxNjcxLCAweGFmNTM3ZDVkLAorCTB4NDA0MGNiMDgsIDB4NGViNGUyY2MsIDB4MzRkMjQ2NmEsIDB4MDExNWFmODQsCisJMHhlMWIwMDQyOCwgMHg5NTk4M2ExZCwgMHgwNmI4OWZiNCwgMHhjZTZlYTA0OCwKKwkweDZmM2YzYjgyLCAweDM1MjBhYjgyLCAweDAxMWExZDRiLCAweDI3NzIyN2Y4LAorCTB4NjExNTYwYjEsIDB4ZTc5MzNmZGMsIDB4YmIzYTc5MmIsIDB4MzQ0NTI1YmQsCisJMHhhMDg4MzllMSwgMHg1MWNlNzk0YiwgMHgyZjMyYzliNywgMHhhMDFmYmFjOSwKKwkweGUwMWNjODdlLCAweGJjYzdkMWY2LCAweGNmMDExMWMzLCAweGExZThhYWM3LAorCTB4MWE5MDg3NDksIDB4ZDQ0ZmJkOWEsIDB4ZDBkYWRlY2IsIDB4ZDUwYWRhMzgsCisJMHgwMzM5YzMyYSwgMHhjNjkxMzY2NywgMHg4ZGY5MzE3YywgMHhlMGIxMmI0ZiwKKwkweGY3OWU1OWI3LCAweDQzZjViYjNhLCAweGYyZDUxOWZmLCAweDI3ZDk0NTljLAorCTB4YmY5NzIyMmMsIDB4MTVlNmZjMmEsIDB4MGY5MWZjNzEsIDB4OWI5NDE1MjUsCisJMHhmYWU1OTM2MSwgMHhjZWI2OWNlYiwgMHhjMmE4NjQ1OSwgMHgxMmJhYThkMSwKKwkweGI2YzEwNzVlLCAweGUzMDU2YTBjLCAweDEwZDI1MDY1LCAweGNiMDNhNDQyLAorCTB4ZTBlYzZlMGUsIDB4MTY5OGRiM2IsIDB4NGM5OGEwYmUsIDB4MzI3OGU5NjQsCisJMHg5ZjFmOTUzMiwgMHhlMGQzOTJkZiwgMHhkM2EwMzQyYiwgMHg4OTcxZjIxZSwKKwkweDFiMGE3NDQxLCAweDRiYTMzNDhjLCAweGM1YmU3MTIwLCAweGMzNzYzMmQ4LAorCTB4ZGYzNTlmOGQsIDB4OWI5OTJmMmUsIDB4ZTYwYjZmNDcsIDB4MGZlM2YxMWQsCisJMHhlNTRjZGE1NCwgMHgxZWRhZDg5MSwgMHhjZTYyNzljZiwgMHhjZDNlN2U2ZiwKKwkweDE2MThiMTY2LCAweGZkMmMxZDA1LCAweDg0OGZkMmM1LCAweGY2ZmIyMjk5LAorCTB4ZjUyM2YzNTcsIDB4YTYzMjc2MjMsIDB4OTNhODM1MzEsIDB4NTZjY2NkMDIsCisJMHhhY2YwODE2MiwgMHg1YTc1ZWJiNSwgMHg2ZTE2MzY5NywgMHg4OGQyNzNjYywKKwkweGRlOTY2MjkyLCAweDgxYjk0OWQwLCAweDRjNTA5MDFiLCAweDcxYzY1NjE0LAorCTB4ZTZjNmM3YmQsIDB4MzI3YTE0MGEsIDB4NDVlMWQwMDYsIDB4YzNmMjdiOWEsCisJMHhjOWFhNTNmZCwgMHg2MmE4MGYwMCwgMHhiYjI1YmZlMiwgMHgzNWJkZDJmNiwKKwkweDcxMTI2OTA1LCAweGIyMDQwMjIyLCAweGI2Y2JjZjdjLCAweGNkNzY5YzJiLAorCTB4NTMxMTNlYzAsIDB4MTY0MGUzZDMsIDB4MzhhYmJkNjAsIDB4MjU0N2FkZjAsCisJMHhiYTM4MjA5YywgMHhmNzQ2Y2U3NiwgMHg3N2FmYTFjNSwgMHgyMDc1NjA2MCwKKwkweDg1Y2JmZTRlLCAweDhhZTg4ZGQ4LCAweDdhYWFmOWIwLCAweDRjZjlhYTdlLAorCTB4MTk0OGMyNWMsIDB4MDJmYjhhOGMsIDB4MDFjMzZhZTQsIDB4ZDZlYmUxZjksCisJMHg5MGQ0Zjg2OSwgMHhhNjVjZGVhMCwgMHgzZjA5MjUyZCwgMHhjMjA4ZTY5ZiwKKwkweGI3NGU2MTMyLCAweGNlNzdlMjViLCAweDU3OGZkZmUzLCAweDNhYzM3MmU2LAorfTsKKworLyogCisgKiBSb3VuZCBsb29wIHVucm9sbGluZyBtYWNyb3MsIFMgaXMgYSBwb2ludGVyIHRvIGEgUy1Cb3ggYXJyYXkKKyAqIG9yZ2FuaXplZCBpbiA0IHVuc2lnbmVkIGxvbmdzIGF0IGEgcm93LgorICovCisjZGVmaW5lIEdFVDMyXzMoeCkgKCgoeCkgJiAweGZmKSkKKyNkZWZpbmUgR0VUMzJfMih4KSAoKCh4KSA+PiAoOCkpICYgKDB4ZmYpKQorI2RlZmluZSBHRVQzMl8xKHgpICgoKHgpID4+ICgxNikpICYgKDB4ZmYpKQorI2RlZmluZSBHRVQzMl8wKHgpICgoKHgpID4+ICgyNCkpICYgKDB4ZmYpKQorCisjZGVmaW5lIGJmX0YoeCkgKCgoU1tHRVQzMl8wKHgpXSArIFNbMjU2ICsgR0VUMzJfMSh4KV0pIF4gXAorICAgICAgICAgIFNbNTEyICsgR0VUMzJfMih4KV0pICsgU1s3NjggKyBHRVQzMl8zKHgpXSkKKworI2RlZmluZSBST1VORChhLCBiLCBuKSAgYiBePSBQW25dOyBhIF49IGJmX0YgKGIpCisKKy8qCisgKiBUaGUgYmxvd2Zpc2ggZW5jaXBoZXIsIHByb2Nlc3NlcyA2NC1iaXQgYmxvY2tzLgorICogTk9URTogVGhpcyBmdW5jdGlvbiBNVVNUTidUIHJlc3BlY3QgZW5kaWFuZXNzIAorICovCitzdGF0aWMgdm9pZCBlbmNyeXB0X2Jsb2NrKHN0cnVjdCBiZl9jdHggKmJjdHgsIHUzMiAqZHN0LCB1MzIgKnNyYykKK3sKKwljb25zdCB1MzIgKlAgPSBiY3R4LT5wOworCWNvbnN0IHUzMiAqUyA9IGJjdHgtPnM7CisJdTMyIHlsID0gc3JjWzBdOworCXUzMiB5ciA9IHNyY1sxXTsKKworCVJPVU5EKHlyLCB5bCwgMCk7CisJUk9VTkQoeWwsIHlyLCAxKTsKKwlST1VORCh5ciwgeWwsIDIpOworCVJPVU5EKHlsLCB5ciwgMyk7CisJUk9VTkQoeXIsIHlsLCA0KTsKKwlST1VORCh5bCwgeXIsIDUpOworCVJPVU5EKHlyLCB5bCwgNik7CisJUk9VTkQoeWwsIHlyLCA3KTsKKwlST1VORCh5ciwgeWwsIDgpOworCVJPVU5EKHlsLCB5ciwgOSk7CisJUk9VTkQoeXIsIHlsLCAxMCk7CisJUk9VTkQoeWwsIHlyLCAxMSk7CisJUk9VTkQoeXIsIHlsLCAxMik7CisJUk9VTkQoeWwsIHlyLCAxMyk7CisJUk9VTkQoeXIsIHlsLCAxNCk7CisJUk9VTkQoeWwsIHlyLCAxNSk7CisKKwl5bCBePSBQWzE2XTsKKwl5ciBePSBQWzE3XTsKKworCWRzdFswXSA9IHlyOworCWRzdFsxXSA9IHlsOworfQorCitzdGF0aWMgdm9pZCBiZl9lbmNyeXB0KHZvaWQgKmN0eCwgdTggKmRzdCwgY29uc3QgdTggKnNyYykKK3sKKwljb25zdCBfX2JlMzIgKmluX2JsayA9IChjb25zdCBfX2JlMzIgKilzcmM7CisJX19iZTMyICpjb25zdCBvdXRfYmxrID0gKF9fYmUzMiAqKWRzdDsKKwl1MzIgaW4zMlsyXSwgb3V0MzJbMl07CisKKwlpbjMyWzBdID0gYmUzMl90b19jcHUoaW5fYmxrWzBdKTsKKwlpbjMyWzFdID0gYmUzMl90b19jcHUoaW5fYmxrWzFdKTsKKwllbmNyeXB0X2Jsb2NrKGN0eCwgb3V0MzIsIGluMzIpOworCW91dF9ibGtbMF0gPSBjcHVfdG9fYmUzMihvdXQzMlswXSk7CisJb3V0X2Jsa1sxXSA9IGNwdV90b19iZTMyKG91dDMyWzFdKTsKK30KKworc3RhdGljIHZvaWQgYmZfZGVjcnlwdCh2b2lkICpjdHgsIHU4ICpkc3QsIGNvbnN0IHU4ICpzcmMpCit7CisJY29uc3QgX19iZTMyICppbl9ibGsgPSAoY29uc3QgX19iZTMyICopc3JjOworCV9fYmUzMiAqY29uc3Qgb3V0X2JsayA9IChfX2JlMzIgKilkc3Q7CisJY29uc3QgdTMyICpQID0gKChzdHJ1Y3QgYmZfY3R4ICopY3R4KS0+cDsKKwljb25zdCB1MzIgKlMgPSAoKHN0cnVjdCBiZl9jdHggKiljdHgpLT5zOworCXUzMiB5bCA9IGJlMzJfdG9fY3B1KGluX2Jsa1swXSk7CisJdTMyIHlyID0gYmUzMl90b19jcHUoaW5fYmxrWzFdKTsKKworCVJPVU5EKHlyLCB5bCwgMTcpOworCVJPVU5EKHlsLCB5ciwgMTYpOworCVJPVU5EKHlyLCB5bCwgMTUpOworCVJPVU5EKHlsLCB5ciwgMTQpOworCVJPVU5EKHlyLCB5bCwgMTMpOworCVJPVU5EKHlsLCB5ciwgMTIpOworCVJPVU5EKHlyLCB5bCwgMTEpOworCVJPVU5EKHlsLCB5ciwgMTApOworCVJPVU5EKHlyLCB5bCwgOSk7CisJUk9VTkQoeWwsIHlyLCA4KTsKKwlST1VORCh5ciwgeWwsIDcpOworCVJPVU5EKHlsLCB5ciwgNik7CisJUk9VTkQoeXIsIHlsLCA1KTsKKwlST1VORCh5bCwgeXIsIDQpOworCVJPVU5EKHlyLCB5bCwgMyk7CisJUk9VTkQoeWwsIHlyLCAyKTsKKworCXlsIF49IFBbMV07CisJeXIgXj0gUFswXTsKKworCW91dF9ibGtbMF0gPSBjcHVfdG9fYmUzMih5cik7CisJb3V0X2Jsa1sxXSA9IGNwdV90b19iZTMyKHlsKTsKK30KKworLyogCisgKiBDYWxjdWxhdGVzIHRoZSBibG93ZmlzaCBTIGFuZCBQIGJveGVzIGZvciBlbmNyeXB0aW9uIGFuZCBkZWNyeXB0aW9uLgorICovCitzdGF0aWMgaW50IGJmX3NldGtleSh2b2lkICpjdHgsIGNvbnN0IHU4ICprZXksIHVuc2lnbmVkIGludCBrZXlsZW4sIHUzMiAqZmxhZ3MpCit7CisJc2hvcnQgaSwgaiwgY291bnQ7CisJdTMyIGRhdGFbMl0sIHRlbXA7CisJdTMyICpQID0gKChzdHJ1Y3QgYmZfY3R4ICopY3R4KS0+cDsKKwl1MzIgKlMgPSAoKHN0cnVjdCBiZl9jdHggKiljdHgpLT5zOworCisJLyogQ29weSB0aGUgaW5pdGlhbGl6YXRpb24gcy1ib3hlcyAqLworCWZvciAoaSA9IDAsIGNvdW50ID0gMDsgaSA8IDI1NjsgaSsrKQorCQlmb3IgKGogPSAwOyBqIDwgNDsgaisrLCBjb3VudCsrKQorCQkJU1tjb3VudF0gPSBiZl9zYm94W2NvdW50XTsKKworCS8qIFNldCB0aGUgcC1ib3hlcyAqLworCWZvciAoaSA9IDA7IGkgPCAxNiArIDI7IGkrKykKKwkJUFtpXSA9IGJmX3Bib3hbaV07CisKKwkvKiBBY3R1YWwgc3Via2V5IGdlbmVyYXRpb24gKi8KKwlmb3IgKGogPSAwLCBpID0gMDsgaSA8IDE2ICsgMjsgaSsrKSB7CisJCXRlbXAgPSAoKCh1MzIgKWtleVtqXSA8PCAyNCkgfAorCQkJKCh1MzIgKWtleVsoaiArIDEpICUga2V5bGVuXSA8PCAxNikgfAorCQkJKCh1MzIgKWtleVsoaiArIDIpICUga2V5bGVuXSA8PCA4KSB8CisJCQkoKHUzMiApa2V5WyhqICsgMykgJSBrZXlsZW5dKSk7CisKKwkJUFtpXSA9IFBbaV0gXiB0ZW1wOworCQlqID0gKGogKyA0KSAlIGtleWxlbjsKKwl9CisKKwlkYXRhWzBdID0gMHgwMDAwMDAwMDsKKwlkYXRhWzFdID0gMHgwMDAwMDAwMDsKKworCWZvciAoaSA9IDA7IGkgPCAxNiArIDI7IGkgKz0gMikgeworCQllbmNyeXB0X2Jsb2NrKChzdHJ1Y3QgYmZfY3R4ICopY3R4LCBkYXRhLCBkYXRhKTsKKworCQlQW2ldID0gZGF0YVswXTsKKwkJUFtpICsgMV0gPSBkYXRhWzFdOworCX0KKworCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKKwkJZm9yIChqID0gMCwgY291bnQgPSBpICogMjU2OyBqIDwgMjU2OyBqICs9IDIsIGNvdW50ICs9IDIpIHsKKwkJCWVuY3J5cHRfYmxvY2soKHN0cnVjdCBiZl9jdHggKiljdHgsIGRhdGEsIGRhdGEpOworCisJCQlTW2NvdW50XSA9IGRhdGFbMF07CisJCQlTW2NvdW50ICsgMV0gPSBkYXRhWzFdOworCQl9CisJfQorCQorCS8qIEJydWNlIHNheXMgbm90IHRvIGJvdGhlciB3aXRoIHRoZSB3ZWFrIGtleSBjaGVjay4gKi8KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBjcnlwdG9fYWxnIGFsZyA9IHsKKwkuY3JhX25hbWUJCT0JImJsb3dmaXNoIiwKKwkuY3JhX2ZsYWdzCQk9CUNSWVBUT19BTEdfVFlQRV9DSVBIRVIsCisJLmNyYV9ibG9ja3NpemUJCT0JQkZfQkxPQ0tfU0laRSwKKwkuY3JhX2N0eHNpemUJCT0Jc2l6ZW9mKHN0cnVjdCBiZl9jdHgpLAorCS5jcmFfbW9kdWxlCQk9CVRISVNfTU9EVUxFLAorCS5jcmFfbGlzdAkJPQlMSVNUX0hFQURfSU5JVChhbGcuY3JhX2xpc3QpLAorCS5jcmFfdQkJCT0JeyAuY2lwaGVyID0geworCS5jaWFfbWluX2tleXNpemUJPQlCRl9NSU5fS0VZX1NJWkUsCisJLmNpYV9tYXhfa2V5c2l6ZQk9CUJGX01BWF9LRVlfU0laRSwKKwkuY2lhX3NldGtleSAgIAkJPSAJYmZfc2V0a2V5LAorCS5jaWFfZW5jcnlwdCAJCT0JYmZfZW5jcnlwdCwKKwkuY2lhX2RlY3J5cHQgIAkJPQliZl9kZWNyeXB0IH0gfQorfTsKKworc3RhdGljIGludCBfX2luaXQgaW5pdCh2b2lkKQoreworCXJldHVybiBjcnlwdG9fcmVnaXN0ZXJfYWxnKCZhbGcpOworfQorCitzdGF0aWMgdm9pZCBfX2V4aXQgZmluaSh2b2lkKQoreworCWNyeXB0b191bnJlZ2lzdGVyX2FsZygmYWxnKTsKK30KKworbW9kdWxlX2luaXQoaW5pdCk7Cittb2R1bGVfZXhpdChmaW5pKTsKKworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0RFU0NSSVBUSU9OKCJCbG93ZmlzaCBDaXBoZXIgQWxnb3JpdGhtIik7CmRpZmYgLS1naXQgYS9jcnlwdG8vY2FzdDUuYyBiL2NyeXB0by9jYXN0NS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjNDJmNDIKLS0tIC9kZXYvbnVsbAorKysgYi9jcnlwdG8vY2FzdDUuYwpAQCAtMCwwICsxLDg0OCBAQAorLyogS2VybmVsIGNyeXB0b2dyYXBoaWMgYXBpLgorKiBjYXN0NS5jIC0gQ2FzdDUgY2lwaGVyIGFsZ29yaXRobSAocmZjMjE0NCkuCisqCisqIERlcml2ZWQgZnJvbSBHbnVQRyBpbXBsZW1lbnRhdGlvbiBvZiBjYXN0NS4KKyoKKyogTWFqb3IgQ2hhbmdlcy4KKyogCUNvbXBsZXRlIGNvbmZvcm1hbmNlIHRvIHJmYzIxNDQuCisqIAlTdXBwb3J0cyBrZXkgc2l6ZSBmcm9tIDQwIHRvIDEyOCBiaXRzLgorKgorKiBDb3B5cmlnaHQgKEMpIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisqIENvcHlyaWdodCAoQykgMjAwMyBLYXJ0aWtleSBNYWhlbmRyYSBCaGF0dCA8a2FydGlrX21lQGhvdG1haWwuY29tPi4KKyoKKyogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyogdW5kZXIgdGhlIHRlcm1zIG9mIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZQorKiBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pCisqIGFueSBsYXRlciB2ZXJzaW9uLgorKgorKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBCisqLworCisKKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvY3J5cHRvLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvZXJybm8uaD4KKyNpbmNsdWRlIDxsaW51eC9zdHJpbmcuaD4KKworI2RlZmluZSBDQVNUNV9CTE9DS19TSVpFIDgKKyNkZWZpbmUgQ0FTVDVfTUlOX0tFWV9TSVpFIDUKKyNkZWZpbmUgQ0FTVDVfTUFYX0tFWV9TSVpFIDE2CisKK3N0cnVjdCBjYXN0NV9jdHggeworCXUzMiBLbVsxNl07CisJdTggS3JbMTZdOworCWludCBycjsJLyogcnI/bnVtYmVyIG9mIHJvdW5kcyA9IDE2Om51bWJlciBvZiByb3VuZHMgPSAxMjsgKHJmYyAyMTQ0KSAqLworfTsKKworCitzdGF0aWMgY29uc3QgdTMyIHMxWzI1Nl0gPSB7CisJMHgzMGZiNDBkNCwgMHg5ZmEwZmYwYiwgMHg2YmVjY2QyZiwgMHgzZjI1OGM3YSwgMHgxZTIxM2YyZiwKKwkweDljMDA0ZGQzLCAweDYwMDNlNTQwLCAweGNmOWZjOTQ5LAorCTB4YmZkNGFmMjcsIDB4ODhiYmJkYjUsIDB4ZTIwMzQwOTAsIDB4OThkMDk2NzUsIDB4NmU2M2EwZTAsCisJMHgxNWMzNjFkMiwgMHhjMmU3NjYxZCwgMHgyMmQ0ZmY4ZSwKKwkweDI4NjgzYjZmLCAweGMwN2ZkMDU5LCAweGZmMjM3OWM4LCAweDc3NWY1MGUyLCAweDQzYzM0MGQzLAorCTB4ZGYyZjg2NTYsIDB4ODg3Y2E0MWEsIDB4YTJkMmJkMmQsCisJMHhhMWM5ZTBkNiwgMHgzNDZjNDgxOSwgMHg2MWI3NmQ4NywgMHgyMjU0MGYyZiwgMHgyYWJlMzJlMSwKKwkweGFhNTQxNjZiLCAweDIyNTY4ZTNhLCAweGEyZDM0MWQwLAorCTB4NjZkYjQwYzgsIDB4YTc4NDM5MmYsIDB4MDA0ZGZmMmYsIDB4MmRiOWQyZGUsIDB4OTc5NDNmYWMsCisJMHg0YTk3YzFkOCwgMHg1Mjc2NDRiNywgMHhiNWY0MzdhNywKKwkweGI4MmNiYWVmLCAweGQ3NTFkMTU5LCAweDZmZjdmMGVkLCAweDVhMDk3YTFmLCAweDgyN2I2OGQwLAorCTB4OTBlY2Y1MmUsIDB4MjJiMGMwNTQsIDB4YmM4ZTU5MzUsCisJMHg0YjZkMmY3ZiwgMHg1MGJiNjRhMiwgMHhkMjY2NDkxMCwgMHhiZWU1ODEyZCwgMHhiNzMzMjI5MCwKKwkweGU5M2IxNTlmLCAweGI0OGVlNDExLCAweDRiZmYzNDVkLAorCTB4ZmQ0NWMyNDAsIDB4YWQzMTk3M2YsIDB4YzRmNmQwMmUsIDB4NTVmYzgxNjUsIDB4ZDViMWNhYWQsCisJMHhhMWFjMmRhZSwgMHhhMmQ0Yjc2ZCwgMHhjMTliMGM1MCwKKwkweDg4MjI0MGYyLCAweDBjNmU0ZjM4LCAweGE0ZTRiZmQ3LCAweDRmNWJhMjcyLCAweDU2NGMxZDJmLAorCTB4YzU5YzUzMTksIDB4Yjk0OWUzNTQsIDB4YjA0NjY5ZmUsCisJMHhiMWI2YWI4YSwgMHhjNzEzNThkZCwgMHg2Mzg1YzU0NSwgMHgxMTBmOTM1ZCwgMHg1NzUzOGFkNSwKKwkweDZhMzkwNDkzLCAweGU2M2QzN2UwLCAweDJhNTRmNmIzLAorCTB4M2E3ODdkNWYsIDB4NjI3NmEwYjUsIDB4MTlhNmZjZGYsIDB4N2E0MjIwNmEsIDB4MjlmOWQ0ZDUsCisJMHhmNjFiMTg5MSwgMHhiYjcyMjc1ZSwgMHhhYTUwODE2NywKKwkweDM4OTAxMDkxLCAweGM2YjUwNWViLCAweDg0YzdjYjhjLCAweDJhZDc1YTBmLCAweDg3NGExNDI3LAorCTB4YTJkMTkzNmIsIDB4MmFkMjg2YWYsIDB4YWE1NmQyOTEsCisJMHhkNzg5NDM2MCwgMHg0MjVjNzUwZCwgMHg5M2IzOWUyNiwgMHgxODcxODRjOSwgMHg2YzAwYjMyZCwKKwkweDczZTJiYjE0LCAweGEwYmViYzNjLCAweDU0NjIzNzc5LAorCTB4NjQ0NTllYWIsIDB4M2YzMjhiODIsIDB4NzcxOGNmODIsIDB4NTlhMmNlYTYsIDB4MDRlZTAwMmUsCisJMHg4OWZlNzhlNiwgMHgzZmFiMDk1MCwgMHgzMjVmZjZjMiwKKwkweDgxMzgzZjA1LCAweDY5NjNjNWM4LCAweDc2Y2I1YWQ2LCAweGQ0OTk3NGM5LCAweGNhMTgwZGNmLAorCTB4MzgwNzgyZDUsIDB4YzdmYTVjZjYsIDB4OGFjMzE1MTEsCisJMHgzNWU3OWUxMywgMHg0N2RhOTFkMCwgMHhmNDBmOTA4NiwgMHhhN2UyNDE5ZSwgMHgzMTM2NjI0MSwKKwkweDA1MWVmNDk1LCAweGFhNTczYjA0LCAweDRhODA1ZDhkLAorCTB4NTQ4MzAwZDAsIDB4MDAzMjJhM2MsIDB4YmY2NGNkZGYsIDB4YmE1N2E2OGUsIDB4NzVjNjM3MmIsCisJMHg1MGFmZDM0MSwgMHhhN2MxMzI3NSwgMHg5MTVhMGJmNSwKKwkweDZiNTRiZmFiLCAweDJiMGIxNDI2LCAweGFiNGNjOWQ3LCAweDQ0OWNjZDgyLCAweGY3ZmJmMjY1LAorCTB4YWI4NWM1ZjMsIDB4MWI1NWRiOTQsIDB4YWFkNGUzMjQsCisJMHhjZmE0YmQzZiwgMHgyZGVhYTNlMiwgMHg5ZTIwNGQwMiwgMHhjOGJkMjVhYywgMHhlYWRmNTViMywKKwkweGQ1YmQ5ZTk4LCAweGUzMTIzMWIyLCAweDJhZDVhZDZjLAorCTB4OTU0MzI5ZGUsIDB4YWRiZTQ1MjgsIDB4ZDg3MTBmNjksIDB4YWE1MWM5MGYsIDB4YWE3ODZiZjYsCisJMHgyMjUxM2YxZSwgMHhhYTUxYTc5YiwgMHgyYWQzNDRjYywKKwkweDdiNWE0MWYwLCAweGQzN2NmYmFkLCAweDFiMDY5NTA1LCAweDQxZWNlNDkxLCAweGI0YzMzMmU2LAorCTB4MDMyMjY4ZDQsIDB4Yzk2MDBhY2MsIDB4Y2UzODdlNmQsCisJMHhiZjZiYjE2YywgMHg2YTcwZmI3OCwgMHgwZDAzZDljOSwgMHhkNGRmMzlkZSwgMHhlMDEwNjNkYSwKKwkweDQ3MzZmNDY0LCAweDVhZDMyOGQ4LCAweGIzNDdjYzk2LAorCTB4NzViYjBmYzMsIDB4OTg1MTFiZmIsIDB4NGZmYmNjMzUsIDB4YjU4YmNmNmEsIDB4ZTExZjBhYmMsCisJMHhiZmM1ZmU0YSwgMHhhNzBhZWMxMCwgMHhhYzM5NTcwYSwKKwkweDNmMDQ0NDJmLCAweDYxODhiMTUzLCAweGUwMzk3YTJlLCAweDU3MjdjYjc5LCAweDljZWI0MThmLAorCTB4MWNhY2Q2OGQsIDB4MmFkMzdjOTYsIDB4MDE3NWNiOWQsCisJMHhjNjlkZmYwOSwgMHhjNzViNjVmMCwgMHhkOWRiNDBkOCwgMHhlYzBlNzc3OSwgMHg0NzQ0ZWFkNCwKKwkweGIxMWMzMjc0LCAweGRkMjRjYjllLCAweDdlMWM1NGJkLAorCTB4ZjAxMTQ0ZjksIDB4ZDIyNDBlYjEsIDB4OTY3NWIzZmQsIDB4YTNhYzM3NTUsIDB4ZDQ3YzI3YWYsCisJMHg1MWM4NWY0ZCwgMHg1NjkwNzU5NiwgMHhhNWJiMTVlNiwKKwkweDU4MDMwNGYwLCAweGNhMDQyY2YxLCAweDAxMWEzN2VhLCAweDhkYmZhYWRiLCAweDM1YmEzZTRhLAorCTB4MzUyNmZmYTAsIDB4YzM3YjRkMDksIDB4YmMzMDZlZDksCisJMHg5OGE1MjY2NiwgMHg1NjQ4ZjcyNSwgMHhmZjVlNTY5ZCwgMHgwY2VkNjNkMCwgMHg3YzYzYjJjZiwKKwkweDcwMGI0NWUxLCAweGQ1ZWE1MGYxLCAweDg1YTkyODcyLAorCTB4YWYxZmJkYTcsIDB4ZDQyMzQ4NzAsIDB4YTc4NzBiZjMsIDB4MmQzYjRkNzksIDB4NDJlMDQxOTgsCisJMHgwY2QwZWRlNywgMHgyNjQ3MGRiOCwgMHhmODgxODE0YywKKwkweDQ3NGQ2YWQ3LCAweDdjMGM1ZTVjLCAweGQxMjMxOTU5LCAweDM4MWI3Mjk4LCAweGY1ZDJmNGRiLAorCTB4YWI4Mzg2NTMsIDB4NmUyZjFlMjMsIDB4ODM3MTljOWUsCisJMHhiZDkxZTA0NiwgMHg5YTU2NDU2ZSwgMHhkYzM5MjAwYywgMHgyMGM4YzU3MSwgMHg5NjJiZGExYywKKwkweGUxZTY5NmZmLCAweGIxNDFhYjA4LCAweDdjY2E4OWI5LAorCTB4MWE2OWU3ODMsIDB4MDJjYzQ4NDMsIDB4YTJmN2M1NzksIDB4NDI5ZWY0N2QsIDB4NDI3YjE2OWMsCisJMHg1YWM5ZjA0OSwgMHhkZDhmMGYwMCwgMHg1YzgxNjViZgorfTsKK3N0YXRpYyBjb25zdCB1MzIgczJbMjU2XSA9IHsKKwkweDFmMjAxMDk0LCAweGVmMGJhNzViLCAweDY5ZTNjZjdlLCAweDM5M2Y0MzgwLCAweGZlNjFjZjdhLAorCTB4ZWVjNTIwN2EsIDB4NTU4ODljOTQsIDB4NzJmYzA2NTEsCisJMHhhZGE3ZWY3OSwgMHg0ZTFkNzIzNSwgMHhkNTVhNjNjZSwgMHhkZTA0MzZiYSwgMHg5OWM0MzBlZiwKKwkweDVmMGMwNzk0LCAweDE4ZGNkYjdkLCAweGExZDZlZmYzLAorCTB4YTBiNTJmN2IsIDB4NTllODM2MDUsIDB4ZWUxNWIwOTQsIDB4ZTlmZmQ5MDksIDB4ZGM0NDAwODYsCisJMHhlZjk0NDQ1OSwgMHhiYTgzY2NiMywgMHhlMGMzY2RmYiwKKwkweGQxZGE0MTgxLCAweDNiMDkyYWIxLCAweGY5OTdmMWMxLCAweGE1ZTZjZjdiLCAweDAxNDIwZGRiLAorCTB4ZTRlN2VmNWIsIDB4MjVhMWZmNDEsIDB4ZTE4MGY4MDYsCisJMHgxZmM0MTA4MCwgMHgxNzliZWU3YSwgMHhkMzdhYzZhOSwgMHhmZTU4MzBhNCwgMHg5OGRlOGI3ZiwKKwkweDc3ZTgzZjRlLCAweDc5OTI5MjY5LCAweDI0ZmE5ZjdiLAorCTB4ZTExM2M4NWIsIDB4YWNjNDAwODMsIDB4ZDc1MDM1MjUsIDB4ZjdlYTYxNWYsIDB4NjIxNDMxNTQsCisJMHgwZDU1NGI2MywgMHg1ZDY4MTEyMSwgMHhjODY2YzM1OSwKKwkweDNkNjNjZjczLCAweGNlZTIzNGMwLCAweGQ0ZDg3ZTg3LCAweDVjNjcyYjIxLCAweDA3MWY2MTgxLAorCTB4MzlmNzYyN2YsIDB4MzYxZTMwODQsIDB4ZTRlYjU3M2IsCisJMHg2MDJmNjRhNCwgMHhkNjNhY2Q5YywgMHgxYmJjNDYzNSwgMHg5ZTgxMDMyZCwgMHgyNzAxZjUwYywKKwkweDk5ODQ3YWI0LCAweGEwZTNkZjc5LCAweGJhNmNmMzhjLAorCTB4MTA4NDMwOTQsIDB4MjUzN2E5NWUsIDB4ZjQ2ZjZmZmUsIDB4YTFmZjNiMWYsIDB4MjA4Y2ZiNmEsCisJMHg4ZjQ1OGM3NCwgMHhkOWUwYTIyNywgMHg0ZWM3M2EzNCwKKwkweGZjODg0ZjY5LCAweDNlNGRlOGRmLCAweGVmMGUwMDg4LCAweDM1NTk2NDhkLCAweDhhNDUzODhjLAorCTB4MWQ4MDQzNjYsIDB4NzIxZDliZmQsIDB4YTU4Njg0YmIsCisJMHhlODI1NjMzMywgMHg4NDRlODIxMiwgMHgxMjhkODA5OCwgMHhmZWQzM2ZiNCwgMHhjZTI4MGFlMSwKKwkweDI3ZTE5YmE1LCAweGQ1YTZjMjUyLCAweGU0OTc1NGJkLAorCTB4YzVkNjU1ZGQsIDB4ZWI2NjcwNjQsIDB4Nzc4NDBiNGQsIDB4YTFiNmE4MDEsIDB4ODRkYjI2YTksCisJMHhlMGI1NjcxNCwgMHgyMWYwNDNiNywgMHhlNWQwNTg2MCwKKwkweDU0ZjAzMDg0LCAweDA2NmZmNDcyLCAweGEzMWFhMTUzLCAweGRhZGM0NzU1LCAweGI1NjI1ZGJmLAorCTB4Njg1NjFiZTYsIDB4ODNjYTZiOTQsIDB4MmQ2ZWQyM2IsCisJMHhlY2NmMDFkYiwgMHhhNmQzZDBiYSwgMHhiNjgwM2Q1YywgMHhhZjc3YTcwOSwgMHgzM2I0YTM0YywKKwkweDM5N2JjOGQ2LCAweDVlZTIyYjk1LCAweDVmMGU1MzA0LAorCTB4ODFlZDZmNjEsIDB4MjBlNzQzNjQsIDB4YjQ1ZTEzNzgsIDB4ZGUxODYzOWIsIDB4ODgxY2ExMjIsCisJMHhiOTY3MjZkMSwgMHg4MDQ5YTdlOCwgMHgyMmI3ZGE3YiwKKwkweDVlNTUyZDI1LCAweDUyNzJkMjM3LCAweDc5ZDI5NTFjLCAweGM2MGQ4OTRjLCAweDQ4OGNiNDAyLAorCTB4MWJhNGZlNWIsIDB4YTRiMDlmNmIsIDB4MWNhODE1Y2YsCisJMHhhMjBjMzAwNSwgMHg4ODcxZGY2MywgMHhiOWRlMmZjYiwgMHgwY2M2YzllOSwgMHgwYmVlZmY1MywKKwkweGUzMjE0NTE3LCAweGI0NTQyODM1LCAweDlmNjMyOTNjLAorCTB4ZWU0MWU3MjksIDB4NmUxZDJkN2MsIDB4NTAwNDUyODYsIDB4MWU2Njg1ZjMsIDB4ZjMzNDAxYzYsCisJMHgzMGEyMmM5NSwgMHgzMWE3MDg1MCwgMHg2MDkzMGYxMywKKwkweDczZjk4NDE3LCAweGExMjY5ODU5LCAweGVjNjQ1YzQ0LCAweDUyYzg3N2E5LCAweGNkZmYzM2E2LAorCTB4YTAyYjE3NDEsIDB4N2NiYWQ5YTIsIDB4MjE4MDAzNmYsCisJMHg1MGQ5OWMwOCwgMHhjYjNmNDg2MSwgMHhjMjZiZDc2NSwgMHg2NGEzZjZhYiwgMHg4MDM0MjY3NiwKKwkweDI1YTc1ZTdiLCAweGU0ZTZkMWZjLCAweDIwYzcxMGU2LAorCTB4Y2RmMGI2ODAsIDB4MTc4NDRkM2IsIDB4MzFlZWY4NGQsIDB4N2UwODI0ZTQsIDB4MmNjYjQ5ZWIsCisJMHg4NDZhM2JhZSwgMHg4ZmY3Nzg4OCwgMHhlZTVkNjBmNiwKKwkweDdhZjc1NjczLCAweDJmZGQ1Y2RiLCAweGExMTYzMWMxLCAweDMwZjY2ZjQzLCAweGIzZmFlYzU0LAorCTB4MTU3ZmQ3ZmEsIDB4ZWY4NTc5Y2MsIDB4ZDE1MmRlNTgsCisJMHhkYjJmZmQ1ZSwgMHg4ZjMyY2UxOSwgMHgzMDZhZjk3YSwgMHgwMmYwM2VmOCwgMHg5OTMxOWFkNSwKKwkweGMyNDJmYTBmLCAweGE3ZTNlYmIwLCAweGM2OGU0OTA2LAorCTB4YjhkYTIzMGMsIDB4ODA4MjMwMjgsIDB4ZGNkZWYzYzgsIDB4ZDM1ZmIxNzEsIDB4MDg4YTFiYzgsCisJMHhiZWMwYzU2MCwgMHg2MWEzYzllOCwgMHhiY2E4ZjU0ZCwKKwkweGM3MmZlZmZhLCAweDIyODIyZTk5LCAweDgyYzU3MGI0LCAweGQ4ZDk0ZTg5LCAweDhiMWMzNGJjLAorCTB4MzAxZTE2ZTYsIDB4MjczYmU5NzksIDB4YjBmZmVhYTYsCisJMHg2MWQ5YjhjNiwgMHgwMGIyNDg2OSwgMHhiN2ZmY2UzZiwgMHgwOGRjMjgzYiwgMHg0M2RhZjY1YSwKKwkweGY3ZTE5Nzk4LCAweDc2MTliNzJmLCAweDhmMWM5YmE0LAorCTB4ZGM4NjM3YTAsIDB4MTZhN2QzYjEsIDB4OWZjMzkzYjcsIDB4YTcxMzZlZWIsIDB4YzZiY2M2M2UsCisJMHgxYTUxMzc0MiwgMHhlZjY4MjhiYywgMHg1MjAzNjVkNiwKKwkweDJkNmE3N2FiLCAweDM1MjdlZDRiLCAweDgyMWZkMjE2LCAweDA5NWM2ZTJlLCAweGRiOTJmMmZiLAorCTB4NWVlYTI5Y2IsIDB4MTQ1ODkyZjUsIDB4OTE1ODRmN2YsCisJMHg1NDgzNjk3YiwgMHgyNjY3YThjYywgMHg4NTE5NjA0OCwgMHg4YzRiYWNlYSwgMHg4MzM4NjBkNCwKKwkweDBkMjNlMGY5LCAweDZjMzg3ZThhLCAweDBhZTZkMjQ5LAorCTB4YjI4NDYwMGMsIDB4ZDgzNTczMWQsIDB4ZGNiMWM2NDcsIDB4YWM0YzU2ZWEsIDB4M2ViZDgxYjMsCisJMHgyMzBlYWJiMCwgMHg2NDM4YmM4NywgMHhmMGI1YjFmYSwKKwkweDhmNWVhMmIzLCAweGZjMTg0NjQyLCAweDBhMDM2YjdhLCAweDRmYjA4OWJkLCAweDY0OWRhNTg5LAorCTB4YTM0NTQxNWUsIDB4NWMwMzgzMjMsIDB4M2U1ZDNiYjksCisJMHg0M2Q3OTU3MiwgMHg3ZTZkZDA3YywgMHgwNmRmZGYxZSwgMHg2YzZjYzRlZiwgMHg3MTYwYTUzOSwKKwkweDczYmZiZTcwLCAweDgzODc3NjA1LCAweDQ1MjNlY2YxCit9Oworc3RhdGljIGNvbnN0IHUzMiBzM1syNTZdID0geworCTB4OGRlZmMyNDAsIDB4MjVmYTVkOWYsIDB4ZWI5MDNkYmYsIDB4ZTgxMGM5MDcsIDB4NDc2MDdmZmYsCisJMHgzNjlmZTQ0YiwgMHg4YzFmYzY0NCwgMHhhZWNlY2E5MCwKKwkweGJlYjFmOWJmLCAweGVlZmJjYWVhLCAweGU4Y2YxOTUwLCAweDUxZGYwN2FlLCAweDkyMGU4ODA2LAorCTB4ZjBhZDA1NDgsIDB4ZTEzYzhkODMsIDB4OTI3MDEwZDUsCisJMHgxMTEwN2Q5ZiwgMHgwNzY0N2RiOSwgMHhiMmUzZTRkNCwgMHgzZDRmMjg1ZSwgMHhiOWFmYTgyMCwKKwkweGZhZGU4MmUwLCAweGEwNjcyNjhiLCAweDgyNzI3OTJlLAorCTB4NTUzZmIyYzAsIDB4NDg5YWUyMmIsIDB4ZDRlZjk3OTQsIDB4MTI1ZTNmYmMsIDB4MjFmZmZjZWUsCisJMHg4MjViMWJmZCwgMHg5MjU1YzVlZCwgMHgxMjU3YTI0MCwKKwkweDRlMWE4MzAyLCAweGJhZTA3ZmZmLCAweDUyODI0NmU3LCAweDhlNTcxNDBlLCAweDMzNzNmN2JmLAorCTB4OGM5ZjgxODgsIDB4YTZmYzRlZTgsIDB4Yzk4MmI1YTUsCisJMHhhOGMwMWRiNywgMHg1NzlmYzI2NCwgMHg2NzA5NGYzMSwgMHhmMmJkM2Y1ZiwgMHg0MGZmZjdjMSwKKwkweDFmYjc4ZGZjLCAweDhlNmJkMmMxLCAweDQzN2JlNTliLAorCTB4OTliMDNkYmYsIDB4YjVkYmM2NGIsIDB4NjM4ZGMwZTYsIDB4NTU4MTlkOTksIDB4YTE5N2M4MWMsCisJMHg0YTAxMmQ2ZSwgMHhjNTg4NGEyOCwgMHhjY2MzNmY3MSwKKwkweGI4NDNjMjEzLCAweDZjMDc0M2YxLCAweDgzMDk4OTNjLCAweDBmZWRkZDVmLCAweDJmN2ZlODUwLAorCTB4ZDdjMDdmN2UsIDB4MDI1MDdmYmYsIDB4NWFmYjlhMDQsCisJMHhhNzQ3ZDJkMCwgMHgxNjUxMTkyZSwgMHhhZjcwYmYzZSwgMHg1OGMzMTM4MCwgMHg1Zjk4MzAyZSwKKwkweDcyN2NjM2M0LCAweDBhMGZiNDAyLCAweDBmN2ZlZjgyLAorCTB4OGM5NmZkYWQsIDB4NWQyYzJhYWUsIDB4OGVlOTlhNDksIDB4NTBkYTg4YjgsIDB4ODQyN2Y0YTAsCisJMHgxZWFjNTc5MCwgMHg3OTZmYjQ0OSwgMHg4MjUyZGMxNSwKKwkweGVmYmQ3ZDliLCAweGE2NzI1OTdkLCAweGFkYTg0MGQ4LCAweDQ1ZjU0NTA0LCAweGZhNWQ3NDAzLAorCTB4ZTgzZWMzMDUsIDB4NGY5MTc1MWEsIDB4OTI1NjY5YzIsCisJMHgyM2VmZTk0MSwgMHhhOTAzZjEyZSwgMHg2MDI3MGRmMiwgMHgwMjc2ZTRiNiwgMHg5NGZkNjU3NCwKKwkweDkyNzk4NWIyLCAweDgyNzZkYmNiLCAweDAyNzc4MTc2LAorCTB4ZjhhZjkxOGQsIDB4NGU0OGY3OWUsIDB4OGY2MTZkZGYsIDB4ZTI5ZDg0MGUsIDB4ODQyZjdkODMsCisJMHgzNDBjZTVjOCwgMHg5NmJiYjY4MiwgMHg5M2I0YjE0OCwKKwkweGVmMzAzY2FiLCAweDk4NGZhZjI4LCAweDc3OWZhZjliLCAweDkyZGM1NjBkLCAweDIyNGQxZTIwLAorCTB4ODQzN2FhODgsIDB4N2QyOWRjOTYsIDB4Mjc1NmQzZGMsCisJMHg4YjkwN2NlZSwgMHhiNTFmZDI0MCwgMHhlN2MwN2NlMywgMHhlNTY2YjRhMSwgMHhjM2U5NjE1ZSwKKwkweDNjZjgyMDlkLCAweDYwOTRkMWUzLCAweGNkOWNhMzQxLAorCTB4NWM3NjQ2MGUsIDB4MDBlYTk4M2IsIDB4ZDRkNjc4ODEsIDB4ZmQ0NzU3MmMsIDB4Zjc2Y2VkZDksCisJMHhiZGE4MjI5YywgMHgxMjdkYWRhYSwgMHg0MzhhMDc0ZSwKKwkweDFmOTdjMDkwLCAweDA4MWJkYjhhLCAweDkzYTA3ZWJlLCAweGI5MzhjYTE1LCAweDk3YjAzY2ZmLAorCTB4M2RjMmMwZjgsIDB4OGQxYWIyZWMsIDB4NjQzODBlNTEsCisJMHg2OGNjN2JmYiwgMHhkOTBmMjc4OCwgMHgxMjQ5MDE4MSwgMHg1ZGU1ZmZkNCwgMHhkZDdlZjg2YSwKKwkweDc2YTJlMjE0LCAweGI5YTQwMzY4LCAweDkyNWQ5NThmLAorCTB4NGIzOWZmZmEsIDB4YmEzOWFlZTksIDB4YTRmZmQzMGIsIDB4ZmFmNzkzM2IsIDB4NmQ0OTg2MjMsCisJMHgxOTNjYmNmYSwgMHgyNzYyNzU0NSwgMHg4MjVjZjQ3YSwKKwkweDYxYmQ4YmEwLCAweGQxMWU0MmQxLCAweGNlYWQwNGY0LCAweDEyN2VhMzkyLCAweDEwNDI4ZGI3LAorCTB4ODI3MmE5NzIsIDB4OTI3MGM0YTgsIDB4MTI3ZGU1MGIsCisJMHgyODViYTFjOCwgMHgzYzYyZjQ0ZiwgMHgzNWMwZWFhNSwgMHhlODA1ZDIzMSwgMHg0Mjg5MjlmYiwKKwkweGI0ZmNkZjgyLCAweDRmYjY2YTUzLCAweDBlN2RjMTViLAorCTB4MWYwODFmYWIsIDB4MTA4NjE4YWUsIDB4ZmNmZDA4NmQsIDB4ZjlmZjI4ODksIDB4Njk0YmNjMTEsCisJMHgyMzZhNWNhZSwgMHgxMmRlY2E0ZCwgMHgyYzNmOGNjNSwKKwkweGQyZDAyZGZlLCAweGY4ZWY1ODk2LCAweGU0Y2Y1MmRhLCAweDk1MTU1YjY3LCAweDQ5NGE0ODhjLAorCTB4YjliNmE4MGMsIDB4NWM4ZjgyYmMsIDB4ODlkMzZiNDUsCisJMHgzYTYwOTQzNywgMHhlYzAwYzlhOSwgMHg0NDcxNTI1MywgMHgwYTg3NGI0OSwgMHhkNzczYmM0MCwKKwkweDdjMzQ2NzFjLCAweDAyNzE3ZWY2LCAweDRmZWI1NTM2LAorCTB4YTJkMDJmZmYsIDB4ZDJiZjYwYzQsIDB4ZDQzZjAzYzAsIDB4NTBiNGVmNmQsIDB4MDc0NzhjZDEsCisJMHgwMDZlMTg4OCwgMHhhMmU1M2Y1NSwgMHhiOWU2ZDRiYywKKwkweGEyMDQ4MDE2LCAweDk3NTczODMzLCAweGQ3MjA3ZDY3LCAweGRlMGY4ZjNkLCAweDcyZjg3YjMzLAorCTB4YWJjYzRmMzMsIDB4NzY4OGM1NWQsIDB4N2IwMGE2YjAsCisJMHg5NDdiMDAwMSwgMHg1NzAwNzVkMiwgMHhmOWJiODhmOCwgMHg4OTQyMDE5ZSwgMHg0MjY0YTVmZiwKKwkweDg1NjMwMmUwLCAweDcyZGJkOTJiLCAweGVlOTcxYjY5LAorCTB4NmVhMjJmZGUsIDB4NWYwOGFlMmIsIDB4YWY3YTYxNmQsIDB4ZTVjOTg3NjcsIDB4Y2YxZmViZDIsCisJMHg2MWVmYzhjMiwgMHhmMWFjMjU3MSwgMHhjYzgyMzljMiwKKwkweDY3MjE0Y2I4LCAweGIxZTU4M2QxLCAweGI3ZGMzZTYyLCAweDdmMTBiZGNlLCAweGY5MGE1YzM4LAorCTB4MGZmMDQ0M2QsIDB4NjA2ZTZkYzYsIDB4NjA1NDNhNDksCisJMHg1NzI3YzE0OCwgMHgyYmU5OGExZCwgMHg4YWI0MTczOCwgMHgyMGUxYmUyNCwgMHhhZjk2ZGEwZiwKKwkweDY4NDU4NDI1LCAweDk5ODMzYmU1LCAweDYwMGQ0NTdkLAorCTB4MjgyZjkzNTAsIDB4ODMzNGIzNjIsIDB4ZDkxZDExMjAsIDB4MmI2ZDhkYTAsIDB4NjQyYjFlMzEsCisJMHg5YzMwNWEwMCwgMHg1MmJjZTY4OCwgMHgxYjAzNTg4YSwKKwkweGY3YmFlZmQ1LCAweDQxNDJlZDljLCAweGE0MzE1YzExLCAweDgzMzIzZWM1LCAweGRmZWY0NjM2LAorCTB4YTEzM2M1MDEsIDB4ZTlkMzUzMWMsIDB4ZWUzNTM3ODMKK307CitzdGF0aWMgY29uc3QgdTMyIHM0WzI1Nl0gPSB7CisJMHg5ZGIzMDQyMCwgMHgxZmI2ZTlkZSwgMHhhN2JlN2JlZiwgMHhkMjczYTI5OCwgMHg0YTRmN2JkYiwKKwkweDY0YWQ4YzU3LCAweDg1NTEwNDQzLCAweGZhMDIwZWQxLAorCTB4N2UyODdhZmYsIDB4ZTYwZmI2NjMsIDB4MDk1ZjM1YTEsIDB4NzllYmYxMjAsIDB4ZmQwNTlkNDMsCisJMHg2NDk3YjdiMSwgMHhmMzY0MWY2MywgMHgyNDFlNGFkZiwKKwkweDI4MTQ3ZjVmLCAweDRmYTJiOGNkLCAweGM5NDMwMDQwLCAweDBjYzMyMjIwLCAweGZkZDMwYjMwLAorCTB4YzBhNTM3NGYsIDB4MWQyZDAwZDksIDB4MjQxNDdiMTUsCisJMHhlZTRkMTExYSwgMHgwZmNhNTE2NywgMHg3MWZmOTA0YywgMHgyZDE5NWZmZSwgMHgxYTA1NjQ1ZiwKKwkweDBjMTNmZWZlLCAweDA4MWIwOGNhLCAweDA1MTcwMTIxLAorCTB4ODA1MzAxMDAsIDB4ZTgzZTVlZmUsIDB4YWM5YWY0ZjgsIDB4N2ZlNzI3MDEsIDB4ZDJiOGVlNWYsCisJMHgwNmRmNDI2MSwgMHhiYjllOWI4YSwgMHg3MjkzZWEyNSwKKwkweGNlODRmZmRmLCAweGY1NzE4ODAxLCAweDNkZDY0YjA0LCAweGEyNmYyNjNiLCAweDdlZDQ4NDAwLAorCTB4NTQ3ZWViZTYsIDB4NDQ2ZDRjYTAsIDB4NmNmM2Q2ZjUsCisJMHgyNjQ5YWJkZiwgMHhhZWEwYzdmNSwgMHgzNjMzOGNjMSwgMHg1MDNmN2U5MywgMHhkMzc3MjA2MSwKKwkweDExYjYzOGUxLCAweDcyNTAwZTAzLCAweGY4MGViMmJiLAorCTB4YWJlMDUwMmUsIDB4ZWM4ZDc3ZGUsIDB4NTc5NzFlODEsIDB4ZTE0ZjY3NDYsIDB4YzkzMzU0MDAsCisJMHg2OTIwMzE4ZiwgMHgwODFkYmI5OSwgMHhmZmMzMDRhNSwKKwkweDRkMzUxODA1LCAweDdmM2Q1Y2UzLCAweGE2Yzg2NmM2LCAweDVkNWJjY2E5LCAweGRhZWM2ZmVhLAorCTB4OWY5MjZmOTEsIDB4OWY0NjIyMmYsIDB4Mzk5MTQ2N2QsCisJMHhhNWJmNmQ4ZSwgMHgxMTQzYzQ0ZiwgMHg0Mzk1ODMwMiwgMHhkMDIxNGVlYiwgMHgwMjIwODNiOCwKKwkweDNmYjYxODBjLCAweDE4Zjg5MzFlLCAweDI4MTY1OGU2LAorCTB4MjY0ODZlM2UsIDB4OGJkNzhhNzAsIDB4NzQ3N2U0YzEsIDB4YjUwNmUwN2MsIDB4ZjMyZDBhMjUsCisJMHg3OTA5OGIwMiwgMHhlNGVhYmI4MSwgMHgyODEyM2IyMywKKwkweDY5ZGVhZDM4LCAweDE1NzRjYTE2LCAweGRmODcxYjYyLCAweDIxMWM0MGI3LCAweGE1MWE5ZWY5LAorCTB4MDAxNDM3N2IsIDB4MDQxZThhYzgsIDB4MDkxMTQwMDMsCisJMHhiZDU5ZTRkMiwgMHhlM2QxNTZkNSwgMHg0ZmU4NzZkNSwgMHgyZjkxYTM0MCwgMHg1NTdiZThkZSwKKwkweDAwZWFlNGE3LCAweDBjZTVjMmVjLCAweDRkYjRiYmE2LAorCTB4ZTc1NmJkZmYsIDB4ZGQzMzY5YWMsIDB4ZWMxN2IwMzUsIDB4MDY1NzIzMjcsIDB4OTlhZmM4YjAsCisJMHg1NmM4YzM5MSwgMHg2YjY1ODExYywgMHg1ZTE0NjExOSwKKwkweDZlODVjYjc1LCAweGJlMDdjMDAyLCAweGMyMzI1NTc3LCAweDg5M2ZmNGVjLCAweDViYmZjOTJkLAorCTB4ZDBlYzNiMjUsIDB4Yjc4MDFhYjcsIDB4OGQ2ZDNiMjQsCisJMHgyMGM3NjNlZiwgMHhjMzY2YTVmYywgMHg5YzM4Mjg4MCwgMHgwYWNlMzIwNSwgMHhhYWM5NTQ4YSwKKwkweGVjYTFkN2M3LCAweDA0MWFmYTMyLCAweDFkMTY2MjVhLAorCTB4NjcwMTkwMmMsIDB4OWI3NTdhNTQsIDB4MzFkNDc3ZjcsIDB4OTEyNmIwMzEsIDB4MzZjYzZmZGIsCisJMHhjNzBiOGI0NiwgMHhkOWU2NmE0OCwgMHg1NmU1NWE3OSwKKwkweDAyNmE0Y2ViLCAweDUyNDM3ZWZmLCAweDJmOGY3NmI0LCAweDBkZjk4MGE1LCAweDg2NzRjZGUzLAorCTB4ZWRkYTA0ZWIsIDB4MTdhOWJlMDQsIDB4MmMxOGY0ZGYsCisJMHhiNzc0N2Y5ZCwgMHhhYjJhZjdiNCwgMHhlZmMzNGQyMCwgMHgyZTA5NmI3YywgMHgxNzQxYTI1NCwKKwkweGU1YjZhMDM1LCAweDIxM2Q0MmY2LCAweDJjMWM3YzI2LAorCTB4NjFjMmY1MGYsIDB4NjU1MmRhZjksIDB4ZDJjMjMxZjgsIDB4MjUxMzBmNjksIDB4ZDgxNjdmYTIsCisJMHgwNDE4ZjJjOCwgMHgwMDFhOTZhNiwgMHgwZDE1MjZhYiwKKwkweDYzMzE1YzIxLCAweDVlMGE3MmVjLCAweDQ5YmFmZWZkLCAweDE4NzkwOGQ5LCAweDhkMGRiZDg2LAorCTB4MzExMTcwYTcsIDB4M2U5YjY0MGMsIDB4Y2MzZTEwZDcsCisJMHhkNWNhZDNiNiwgMHgwY2FlYzM4OCwgMHhmNzMwMDFlMSwgMHg2YzcyOGFmZiwgMHg3MWVhZTJhMSwKKwkweDFmOWFmMzZlLCAweGNmY2JkMTJmLCAweGMxZGU4NDE3LAorCTB4YWMwN2JlNmIsIDB4Y2I0NGExZDgsIDB4OGI5YjBmNTYsIDB4MDEzOTg4YzMsIDB4YjFjNTJmY2EsCisJMHhiNGJlMzFjZCwgMHhkODc4MjgwNiwgMHgxMmEzYTRlMiwKKwkweDZmN2RlNTMyLCAweDU4ZmQ3ZWI2LCAweGQwMWVlOTAwLCAweDI0YWRmZmMyLCAweGY0OTkwZmM1LAorCTB4OTcxMWFhYzUsIDB4MDAxZDdiOTUsIDB4ODJlNWU3ZDIsCisJMHgxMDk4NzNmNiwgMHgwMDYxMzA5NiwgMHhjMzJkOTUyMSwgMHhhZGExMjFmZiwgMHgyOTkwODQxNSwKKwkweDdmYmI5NzdmLCAweGFmOWViM2RiLCAweDI5YzllZDJhLAorCTB4NWNlMmE0NjUsIDB4YTczMGYzMmMsIDB4ZDBhYTNmZTgsIDB4OGE1Y2MwOTEsIDB4ZDQ5ZTJjZTcsCisJMHgwY2U0NTRhOSwgMHhkNjBhY2Q4NiwgMHgwMTVmMTkxOSwKKwkweDc3MDc5MTAzLCAweGRlYTAzYWY2LCAweDc4YTg1NjVlLCAweGRlZTM1NmRmLCAweDIxZjA1Y2JlLAorCTB4OGI3NWUzODcsIDB4YjNjNTA2NTEsIDB4YjhhNWMzZWYsCisJMHhkOGVlYjZkMiwgMHhlNTIzYmU3NywgMHhjMjE1NDUyOSwgMHgyZjY5ZWZkZiwgMHhhZmU2N2FmYiwKKwkweGY0NzBjNGIyLCAweGYzZTBlYjViLCAweGQ2Y2M5ODc2LAorCTB4MzllNDQ2MGMsIDB4MWZkYTg1MzgsIDB4MTk4NzgzMmYsIDB4Y2EwMDczNjcsIDB4YTk5MTQ0ZjgsCisJMHgyOTZiMjk5ZSwgMHg0OTJmYzI5NSwgMHg5MjY2YmVhYiwKKwkweGI1Njc2ZTY5LCAweDliZDNkZGRhLCAweGRmN2UwNTJmLCAweGRiMjU3MDFjLCAweDFiNWU1MWVlLAorCTB4ZjY1MzI0ZTYsIDB4NmFmY2UzNmMsIDB4MDMxNmNjMDQsCisJMHg4NjQ0MjEzZSwgMHhiN2RjNTlkMCwgMHg3OTY1MjkxZiwgMHhjY2Q2ZmQ0MywgMHg0MTgyMzk3OSwKKwkweDkzMmJjZGY2LCAweGI2NTdjMzRkLCAweDRlZGZkMjgyLAorCTB4N2FlNTI5MGMsIDB4M2NiOTUzNmIsIDB4ODUxZTIwZmUsIDB4OTgzMzU1N2UsIDB4MTNlY2YwYjAsCisJMHhkM2ZmYjM3MiwgMHgzZjg1YzVjMSwgMHgwYWVmN2VkMgorfTsKK3N0YXRpYyBjb25zdCB1MzIgczVbMjU2XSA9IHsKKwkweDdlYzkwYzA0LCAweDJjNmU3NGI5LCAweDliMGU2NmRmLCAweGE2MzM3OTExLCAweGI4NmE3ZmZmLAorCTB4MWRkMzU4ZjUsIDB4NDRkZDlkNDQsIDB4MTczMTE2N2YsCisJMHgwOGZiZjFmYSwgMHhlN2Y1MTFjYywgMHhkMjA1MWIwMCwgMHg3MzVhYmEwMCwgMHgyYWI3MjJkOCwKKwkweDM4NjM4MWNiLCAweGFjZjYyNDNhLCAweDY5YmVmZDdhLAorCTB4ZTZhMmU3N2YsIDB4ZjBjNzIwY2QsIDB4YzQ0OTQ4MTYsIDB4Y2NmNWMxODAsIDB4Mzg4NTE2NDAsCisJMHgxNWIwYTg0OCwgMHhlNjhiMThjYiwgMHg0Y2FhZGVmZiwKKwkweDVmNDgwYTAxLCAweDA0MTJiMmFhLCAweDI1OTgxNGZjLCAweDQxZDBlZmUyLCAweDRlNDBiNDhkLAorCTB4MjQ4ZWI2ZmIsIDB4OGRiYTFjZmUsIDB4NDFhOTliMDIsCisJMHgxYTU1MGEwNCwgMHhiYThmNjVjYiwgMHg3MjUxZjRlNywgMHg5NWE1MTcyNSwgMHhjMTA2ZWNkNywKKwkweDk3YTU5ODBhLCAweGM1MzliOWFhLCAweDRkNzlmZTZhLAorCTB4ZjJmM2Y3NjMsIDB4NjhhZjgwNDAsIDB4ZWQwYzllNTYsIDB4MTFiNDk1OGIsIDB4ZTFlYjVhODgsCisJMHg4NzA5ZTZiMCwgMHhkN2UwNzE1NiwgMHg0ZTI5ZmVhNywKKwkweDYzNjZlNTJkLCAweDAyZDFjMDAwLCAweGM0YWM4ZTA1LCAweDkzNzdmNTcxLCAweDBjMDUzNzJhLAorCTB4NTc4NTM1ZjIsIDB4MjI2MWJlMDIsIDB4ZDY0MmEwYzksCisJMHhkZjEzYTI4MCwgMHg3NGI1NWJkMiwgMHg2ODIxOTljMCwgMHhkNDIxZTVlYywgMHg1M2ZiM2NlOCwKKwkweGM4YWRlZGIzLCAweDI4YTg3ZmM5LCAweDNkOTU5OTgxLAorCTB4NWMxZmY5MDAsIDB4ZmUzOGQzOTksIDB4MGM0ZWZmMGIsIDB4MDYyNDA3ZWEsIDB4YWEyZjRmYjEsCisJMHg0ZmI5Njk3NiwgMHg5MGM3OTUwNSwgMHhiMGE4YTc3NCwKKwkweGVmNTVhMWZmLCAweGU1OWNhMmMyLCAweGE2YjYyZDI3LCAweGU2NmE0MjYzLCAweGRmNjUwMDFmLAorCTB4MGVjNTA5NjYsIDB4ZGZkZDU1YmMsIDB4MjlkZTA2NTUsCisJMHg5MTFlNzM5YSwgMHgxN2FmODk3NSwgMHgzMmM3OTExYywgMHg4OWY4OTQ2OCwgMHgwZDAxZTk4MCwKKwkweDUyNDc1NWY0LCAweDAzYjYzY2M5LCAweDBjYzg0NGIyLAorCTB4YmNmM2YwYWEsIDB4ODdhYzM2ZTksIDB4ZTUzYTc0MjYsIDB4MDFiM2Q4MmIsIDB4MWE5ZTc0NDksCisJMHg2NGVlMmQ3ZSwgMHhjZGRiYjFkYSwgMHgwMWM5NDkxMCwKKwkweGI4NjhiZjgwLCAweDBkMjZmM2ZkLCAweDkzNDJlZGU3LCAweDA0YTVjMjg0LCAweDYzNjczN2I2LAorCTB4NTBmNWI2MTYsIDB4ZjI0NzY2ZTMsIDB4OGVjYTM2YzEsCisJMHgxMzZlMDVkYiwgMHhmZWYxODM5MSwgMHhmYjg4N2EzNywgMHhkNmU3ZjdkNCwgMHhjN2ZiN2RjOSwKKwkweDMwNjNmY2RmLCAweGI2ZjU4OWRlLCAweGVjMjk0MWRhLAorCTB4MjZlNDY2OTUsIDB4Yjc1NjY0MTksIDB4ZjY1NGVmYzUsIDB4ZDA4ZDU4YjcsIDB4NDg5MjU0MDEsCisJMHhjMWJhY2I3ZiwgMHhlNWZmNTUwZiwgMHhiNjA4MzA0OSwKKwkweDViYjVkMGU4LCAweDg3ZDcyZTVhLCAweGFiNmE2ZWUxLCAweDIyM2E2NmNlLCAweGM2MmJmM2NkLAorCTB4OWUwODg1ZjksIDB4NjhjYjNlNDcsIDB4MDg2YzAxMGYsCisJMHhhMjFkZTgyMCwgMHhkMThiNjlkZSwgMHhmM2Y2NTc3NywgMHhmYTAyYzNmNiwgMHg0MDdlZGFjMywKKwkweGNiYjNkNTUwLCAweDE3OTMwODRkLCAweGIwZDcwZWJhLAorCTB4MGFiMzc4ZDUsIDB4ZDk1MWZiMGMsIDB4ZGVkN2RhNTYsIDB4NDEyNGJiZTQsIDB4OTRjYTBiNTYsCisJMHgwZjU3NTVkMSwgMHhlMGUxZTU2ZSwgMHg2MTg0YjViZSwKKwkweDU4MGEyNDlmLCAweDk0Zjc0YmMwLCAweGUzMjc4ODhlLCAweDlmN2I1NTYxLCAweGMzZGMwMjgwLAorCTB4MDU2ODc3MTUsIDB4NjQ2YzZiZDcsIDB4NDQ5MDRkYjMsCisJMHg2NmI0ZjBhMywgMHhjMGYxNjQ4YSwgMHg2OTdlZDVhZiwgMHg0OWU5MmZmNiwgMHgzMDllMzc0ZiwKKwkweDJjYjYzNTZhLCAweDg1ODA4NTczLCAweDQ5OTFmODQwLAorCTB4NzZmMGFlMDIsIDB4MDgzYmU4NGQsIDB4Mjg0MjFjOWEsIDB4NDQ0ODk0MDYsIDB4NzM2ZTRjYjgsCisJMHhjMTA5MjkxMCwgMHg4YmM5NWZjNiwgMHg3ZDg2OWNmNCwKKwkweDEzNGY2MTZmLCAweDJlNzcxMThkLCAweGIzMWIyYmUxLCAweGFhOTBiNDcyLCAweDNjYTVkNzE3LAorCTB4N2QxNjFiYmEsIDB4OWNhZDkwMTAsIDB4YWY0NjJiYTIsCisJMHg5ZmU0NTlkMiwgMHg0NWQzNDU1OSwgMHhkOWYyZGExMywgMHhkYmM2NTQ4NywgMHhmM2U0Zjk0ZSwKKwkweDE3NmQ0ODZmLCAweDA5N2MxM2VhLCAweDYzMWRhNWM3LAorCTB4NDQ1ZjczODIsIDB4MTc1NjgzZjQsIDB4Y2RjNjZhOTcsIDB4NzBiZTAyODgsIDB4YjNjZGNmNzIsCisJMHg2ZTVkZDJmMywgMHgyMDkzNjA3OSwgMHg0NTliODBhNSwKKwkweGJlNjBlMmRiLCAweGE5YzIzMTAxLCAweGViYTUzMTVjLCAweDIyNGU0MmYyLCAweDFjNWMxNTcyLAorCTB4ZjY3MjFiMmMsIDB4MWFkMmZmZjMsIDB4OGMyNTQwNGUsCisJMHgzMjRlZDcyZiwgMHg0MDY3YjdmZCwgMHgwNTIzMTM4ZSwgMHg1Y2EzYmM3OCwgMHhkYzBmZDY2ZSwKKwkweDc1OTIyMjgzLCAweDc4NGQ2YjE3LCAweDU4ZWJiMTZlLAorCTB4NDQwOTRmODUsIDB4M2Y0ODFkODcsIDB4ZmNmZWFlN2IsIDB4NzdiNWZmNzYsIDB4OGMyMzAyYmYsCisJMHhhYWY0NzU1NiwgMHg1ZjQ2YjAyYSwgMHgyYjA5MjgwMSwKKwkweDNkMzhmNWY3LCAweDBjYTgxZjM2LCAweDUyYWY0YThhLCAweDY2ZDVlN2MwLCAweGRmM2IwODc0LAorCTB4OTUwNTUxMTAsIDB4MWI1YWQ3YTgsIDB4ZjYxZWQ1YWQsCisJMHg2Y2Y2ZTQ3OSwgMHgyMDc1ODE4NCwgMHhkMGNlZmE2NSwgMHg4OGY3YmU1OCwgMHg0YTA0NjgyNiwKKwkweDBmZjZmOGYzLCAweGEwOWM3ZjcwLCAweDUzNDZhYmEwLAorCTB4NWNlOTZjMjgsIDB4ZTE3NmVkYTMsIDB4NmJhYzMwN2YsIDB4Mzc2ODI5ZDIsIDB4ODUzNjBmYTksCisJMHgxN2UzZmUyYSwgMHgyNGI3OTc2NywgMHhmNWE5NmIyMCwKKwkweGQ2Y2QyNTk1LCAweDY4ZmYxZWJmLCAweDc1NTU0NDJjLCAweGYxOWYwNmJlLCAweGY5ZTA2NTlhLAorCTB4ZWViOTQ5MWQsIDB4MzQwMTA3MTgsIDB4YmIzMGNhYjgsCisJMHhlODIyZmUxNSwgMHg4ODU3MDk4MywgMHg3NTBlNjI0OSwgMHhkYTYyN2U1NSwgMHg1ZTc2ZmZhOCwKKwkweGIxNTM0NTQ2LCAweDZkNDdkZTA4LCAweGVmZTllN2Q0Cit9Oworc3RhdGljIGNvbnN0IHUzMiBzNlsyNTZdID0geworCTB4ZjZmYThmOWQsIDB4MmNhYzZjZTEsIDB4NGNhMzQ4NjcsIDB4ZTIzMzdmN2MsIDB4OTVkYjA4ZTcsCisJMHgwMTY4NDNiNCwgMHhlY2VkNWNiYywgMHgzMjU1NTNhYywKKwkweGJmOWYwOTYwLCAweGRmYTFlMmVkLCAweDgzZjA1NzlkLCAweDYzZWQ4NmI5LCAweDFhYjZhNmI4LAorCTB4ZGU1ZWJlMzksIDB4ZjM4ZmY3MzIsIDB4ODk4OWIxMzgsCisJMHgzM2YxNDk2MSwgMHhjMDE5MzdiZCwgMHhmNTA2YzZkYSwgMHhlNDYyNWU3ZSwgMHhhMzA4ZWE5OSwKKwkweDRlMjNlMzNjLCAweDc5Y2JkN2NjLCAweDQ4YTE0MzY3LAorCTB4YTMxNDk2MTksIDB4ZmVjOTRiZDUsIDB4YTExNDE3NGEsIDB4ZWFhMDE4NjYsIDB4YTA4NGRiMmQsCisJMHgwOWE4NDg2ZiwgMHhhODg4NjE0YSwgMHgyOTAwYWY5OCwKKwkweDAxNjY1OTkxLCAweGUxOTkyODYzLCAweGM4ZjMwYzYwLCAweDJlNzhlZjNjLCAweGQwZDUxOTMyLAorCTB4Y2YwZmVjMTQsIDB4ZjdjYTA3ZDIsIDB4ZDBhODIwNzIsCisJMHhmZDQxMTk3ZSwgMHg5MzA1YTZiMCwgMHhlODZiZTNkYSwgMHg3NGJlZDNjZCwgMHgzNzJkYTUzYywKKwkweDRjN2Y0NDQ4LCAweGRhYjVkNDQwLCAweDZkYmEwZWMzLAorCTB4MDgzOTE5YTcsIDB4OWZiYWVlZDksIDB4NDlkYmNmYjAsIDB4NGU2NzBjNTMsIDB4NWMzZDljMDEsCisJMHg2NGJkYjk0MSwgMHgyYzBlNjM2YSwgMHhiYTdkZDljZCwKKwkweGVhNmY3Mzg4LCAweGU3MGJjNzYyLCAweDM1ZjI5YWRiLCAweDVjNGNkZDhkLCAweGYwZDQ4ZDhjLAorCTB4Yjg4MTUzZTIsIDB4MDhhMTk4NjYsIDB4MWFlMmVhYzgsCisJMHgyODRjYWY4OSwgMHhhYTkyODIyMywgMHg5MzM0YmU1MywgMHgzYjNhMjFiZiwgMHgxNjQzNGJlMywKKwkweDlhZWEzOTA2LCAweGVmZThjMzZlLCAweGY4OTBjZGQ5LAorCTB4ODAyMjZkYWUsIDB4YzM0MGE0YTMsIDB4ZGY3ZTljMDksIDB4YTY5NGE4MDcsIDB4NWI3YzVlY2MsCisJMHgyMjFkYjNhNiwgMHg5YTY5YTAyZiwgMHg2ODgxOGE1NCwKKwkweGNlYjIyOTZmLCAweDUzYzA4NDNhLCAweGZlODkzNjU1LCAweDI1YmZlNjhhLCAweGI0NjI4YWJjLAorCTB4Y2YyMjJlYmYsIDB4MjVhYzZmNDgsIDB4YTlhOTkzODcsCisJMHg1M2JkZGI2NSwgMHhlNzZmZmJlNywgMHhlOTY3ZmQ3OCwgMHgwYmE5MzU2MywgMHg4ZTM0MmJjMSwKKwkweGU4YTExYmU5LCAweDQ5ODA3NDBkLCAweGM4MDg3ZGZjLAorCTB4OGRlNGJmOTksIDB4YTExMTAxYTAsIDB4N2ZkMzc5NzUsIDB4ZGE1YTI2YzAsIDB4ZTgxZjk5NGYsCisJMHg5NTI4Y2Q4OSwgMHhmZDMzOWZlZCwgMHhiODc4MzRiZiwKKwkweDVmMDQ0NTZkLCAweDIyMjU4Njk4LCAweGM5YzRjODNiLCAweDJkYzE1NmJlLCAweDRmNjI4ZGFhLAorCTB4NTdmNTVlYzUsIDB4ZTIyMjBhYmUsIDB4ZDI5MTZlYmYsCisJMHg0ZWM3NWI5NSwgMHgyNGYyYzNjMCwgMHg0MmQxNWQ5OSwgMHhjZDBkN2ZhMCwgMHg3YjZlMjdmZiwKKwkweGE4ZGM4YWYwLCAweDczNDVjMTA2LCAweGY0MWUyMzJmLAorCTB4MzUxNjIzODYsIDB4ZTZlYTg5MjYsIDB4MzMzM2IwOTQsIDB4MTU3ZWM2ZjIsIDB4MzcyYjc0YWYsCisJMHg2OTI1NzNlNCwgMHhlOWE5ZDg0OCwgMHhmMzE2MDI4OSwKKwkweDNhNjJlZjFkLCAweGE3ODdlMjM4LCAweGYzYTVmNjc2LCAweDc0MzY0ODUzLCAweDIwOTUxMDYzLAorCTB4NDU3NjY5OGQsIDB4YjZmYWQ0MDcsIDB4NTkyYWY5NTAsCisJMHgzNmY3MzUyMywgMHg0Y2ZiNmU4NywgMHg3ZGE0Y2VjMCwgMHg2YzE1MmRhYSwgMHhjYjAzOTZhOCwKKwkweGM1MGRmZTVkLCAweGZjZDcwN2FiLCAweDA5MjFjNDJmLAorCTB4ODlkZmYwYmIsIDB4NWZlMmJlNzgsIDB4NDQ4ZjRmMzMsIDB4NzU0NjEzYzksIDB4MmIwNWQwOGQsCisJMHg0OGI5ZDU4NSwgMHhkYzA0OTQ0MSwgMHhjODA5OGY5YiwKKwkweDdkZWRlNzg2LCAweGMzOWEzMzczLCAweDQyNDEwMDA1LCAweDZhMDkxNzUxLCAweDBlZjNjOGE2LAorCTB4ODkwMDcyZDYsIDB4MjgyMDc2ODIsIDB4YTlhOWY3YmUsCisJMHhiZjMyNjc5ZCwgMHhkNDViNWI3NSwgMHhiMzUzZmQwMCwgMHhjYmIwZTM1OCwgMHg4MzBmMjIwYSwKKwkweDFmOGZiMjE0LCAweGQzNzJjZjA4LCAweGNjM2M0YTEzLAorCTB4OGNmNjMxNjYsIDB4MDYxYzg3YmUsIDB4ODhjOThmODgsIDB4NjA2MmUzOTcsIDB4NDdjZjhlN2EsCisJMHhiNmM4NTI4MywgMHgzY2MyYWNmYiwgMHgzZmMwNjk3NiwKKwkweDRlOGYwMjUyLCAweDY0ZDgzMTRkLCAweGRhMzg3MGUzLCAweDFlNjY1NDU5LCAweGMxMDkwOGYwLAorCTB4NTEzMDIxYTUsIDB4NmM1YjY4YjcsIDB4ODIyZjhhYTAsCisJMHgzMDA3Y2QzZSwgMHg3NDcxOWVlZiwgMHhkYzg3MjY4MSwgMHgwNzMzNDBkNCwgMHg3ZTQzMmZkOSwKKwkweDBjNWVjMjQxLCAweDg4MDkyODZjLCAweGY1OTJkODkxLAorCTB4MDhhOTMwZjYsIDB4OTU3ZWYzMDUsIDB4YjdmYmZmYmQsIDB4YzI2NmU5NmYsIDB4NmZlNGFjOTgsCisJMHhiMTczZWNjMCwgMHhiYzYwYjQyYSwgMHg5NTM0OThkYSwKKwkweGZiYTFhZTEyLCAweDJkNGJkNzM2LCAweDBmMjVmYWFiLCAweGE0ZjNmY2ViLCAweGUyOTY5MTIzLAorCTB4MjU3ZjBjM2QsIDB4OTM0OGFmNDksIDB4MzYxNDAwYmMsCisJMHhlODgxNmY0YSwgMHgzODE0ZjIwMCwgMHhhM2Y5NDA0MywgMHg5YzdhNTRjMiwgMHhiYzcwNGY1NywKKwkweGRhNDFlN2Y5LCAweGMyNWFkMzNhLCAweDU0ZjRhMDg0LAorCTB4YjE3ZjU1MDUsIDB4NTkzNTdjYmUsIDB4ZWRiZDE1YzgsIDB4N2Y5N2M1YWIsIDB4YmE1YWM3YjUsCisJMHhiNmY2ZGVhZiwgMHgzYTQ3OWMzYSwgMHg1MzAyZGEyNSwKKwkweDY1M2Q3ZTZhLCAweDU0MjY4ZDQ5LCAweDUxYTQ3N2VhLCAweDUwMTdkNTViLCAweGQ3ZDI1ZDg4LAorCTB4NDQxMzZjNzYsIDB4MDQwNGE4YzgsIDB4YjhlNWExMjEsCisJMHhiODFhOTI4YSwgMHg2MGVkNTg2OSwgMHg5N2M1NWI5NiwgMHhlYWVjOTkxYiwgMHgyOTkzNTkxMywKKwkweDAxZmRiN2YxLCAweDA4OGU4ZGZhLCAweDlhYjZmNmY1LAorCTB4M2I0Y2JmOWYsIDB4NGE1ZGUzYWIsIDB4ZTYwNTFkMzUsIDB4YTBlMWQ4NTUsIDB4ZDM2YjRjZjEsCisJMHhmNTQ0ZWRlYiwgMHhiMGU5MzUyNCwgMHhiZWJiOGZiZCwKKwkweGEyZDc2MmNmLCAweDQ5YzkyZjU0LCAweDM4YjVmMzMxLCAweDcxMjhhNDU0LCAweDQ4MzkyOTA1LAorCTB4YTY1YjFkYjgsIDB4ODUxYzk3YmQsIDB4ZDY3NWNmMmYKK307CitzdGF0aWMgY29uc3QgdTMyIHM3WzI1Nl0gPSB7CisJMHg4NWUwNDAxOSwgMHgzMzJiZjU2NywgMHg2NjJkYmZmZiwgMHhjZmM2NTY5MywgMHgyYThkN2Y2ZiwKKwkweGFiOWJjOTEyLCAweGRlNjAwOGExLCAweDIwMjhkYTFmLAorCTB4MDIyN2JjZTcsIDB4NGQ2NDI5MTYsIDB4MThmYWMzMDAsIDB4NTBmMThiODIsIDB4MmNiMmNiMTEsCisJMHhiMjMyZTc1YywgMHg0YjM2OTVmMiwgMHhiMjg3MDdkZSwKKwkweGEwNWZiY2Y2LCAweGNkNDE4MWU5LCAweGUxNTAyMTBjLCAweGUyNGVmMWJkLCAweGIxNjhjMzgxLAorCTB4ZmRlNGU3ODksIDB4NWM3OWIwZDgsIDB4MWU4YmZkNDMsCisJMHg0ZDQ5NTAwMSwgMHgzOGJlNDM0MSwgMHg5MTNjZWUxZCwgMHg5MmE3OWMzZiwgMHgwODk3NjZiZSwKKwkweGJhZWVhZGY0LCAweDEyODZiZWNmLCAweGI2ZWFjYjE5LAorCTB4MjY2MGMyMDAsIDB4NzU2NWJkZTQsIDB4NjQyNDFmN2EsIDB4ODI0OGRjYTksIDB4YzNiM2FkNjYsCisJMHgyODEzNjA4NiwgMHgwYmQ4ZGZhOCwgMHgzNTZkMWNmMiwKKwkweDEwNzc4OWJlLCAweGIzYjJlOWNlLCAweDA1MDJhYThmLCAweDBiYzAzNTFlLCAweDE2NmJmNTJhLAorCTB4ZWIxMmZmODIsIDB4ZTM0ODY5MTEsIDB4ZDM0ZDc1MTYsCisJMHg0ZTdiM2FmZiwgMHg1ZjQzNjcxYiwgMHg5Y2Y2ZTAzNywgMHg0OTgxYWM4MywgMHgzMzQyNjZjZSwKKwkweDhjOTM0MWI3LCAweGQwZDg1NGMwLCAweGNiM2E2Yzg4LAorCTB4NDdiYzI4MjksIDB4NDcyNWJhMzcsIDB4YTY2YWQyMmIsIDB4N2FkNjFmMWUsIDB4MGM1Y2JhZmEsCisJMHg0NDM3ZjEwNywgMHhiNmU3OTk2MiwgMHg0MmQyZDgxNiwKKwkweDBhOTYxMjg4LCAweGUxYTVjMDZlLCAweDEzNzQ5ZTY3LCAweDcyZmMwODFhLCAweGIxZDEzOWY3LAorCTB4Zjk1ODM3NDUsIDB4Y2YxOWRmNTgsIDB4YmVjM2Y3NTYsCisJMHhjMDZlYmEzMCwgMHgwNzIxMWIyNCwgMHg0NWMyODgyOSwgMHhjOTVlMzE3ZiwgMHhiYzhlYzUxMSwKKwkweDM4YmM0NmU5LCAweGM2ZTZmYTE0LCAweGJhZTg1ODRhLAorCTB4YWQ0ZWJjNDYsIDB4NDY4ZjUwOGIsIDB4NzgyOTQzNWYsIDB4ZjEyNDE4M2IsIDB4ODIxZGJhOWYsCisJMHhhZmY2MGZmNCwgMHhlYTJjNGU2ZCwgMHgxNmUzOTI2NCwKKwkweDkyNTQ0YThiLCAweDAwOWI0ZmMzLCAweGFiYTY4Y2VkLCAweDlhYzk2Zjc4LCAweDA2YTViNzlhLAorCTB4YjI4NTZlNmUsIDB4MWFlYzNjYTksIDB4YmU4Mzg2ODgsCisJMHgwZTA4MDRlOSwgMHg1NWYxYmU1NiwgMHhlN2U1MzYzYiwgMHhiM2ExZjI1ZCwgMHhmN2RlYmI4NSwKKwkweDYxZmUwMzNjLCAweDE2NzQ2MjMzLCAweDNjMDM0YzI4LAorCTB4ZGE2ZDBjNzQsIDB4NzlhYWM1NmMsIDB4M2NlNGUxYWQsIDB4NTFmMGM4MDIsIDB4OThmOGYzNWEsCisJMHgxNjI2YTQ5ZiwgMHhlZWQ4MmIyOSwgMHgxZDM4MmZlMywKKwkweDBjNGZiOTlhLCAweGJiMzI1Nzc4LCAweDNlYzZkOTdiLCAweDZlNzdhNmE5LCAweGNiNjU4YjVjLAorCTB4ZDQ1MjMwYzcsIDB4MmJkMTQwOGIsIDB4NjBjMDNlYjcsCisJMHhiOTA2OGQ3OCwgMHhhMzM3NTRmNCwgMHhmNDMwYzg3ZCwgMHhjOGE3MTMwMiwgMHhiOTZkOGMzMiwKKwkweGViZDRlN2JlLCAweGJlOGI5ZDJkLCAweDc5NzlmYjA2LAorCTB4ZTcyMjUzMDgsIDB4OGI3NWNmNzcsIDB4MTFlZjhkYTQsIDB4ZTA4M2M4NTgsIDB4OGQ2Yjc4NmYsCisJMHg1YTYzMTdhNiwgMHhmYTVjZjdhMCwgMHg1ZGRhMDAzMywKKwkweGYyOGViZmIwLCAweGY1YjljMzEwLCAweGEwZWFjMjgwLCAweDA4Yjk3NjdhLCAweGEzZDlkMmIwLAorCTB4NzlkMzQyMTcsIDB4MDIxYTcxOGQsIDB4OWFjNjMzNmEsCisJMHgyNzExZmQ2MCwgMHg0MzgwNTBlMywgMHgwNjk5MDhhOCwgMHgzZDdmZWRjNCwgMHg4MjZkMmJlZiwKKwkweDRlZWI4NDc2LCAweDQ4OGRjZjI1LCAweDM2YzlkNTY2LAorCTB4MjhlNzRlNDEsIDB4YzI2MTBhY2EsIDB4M2Q0OWE5Y2YsIDB4YmFlM2I5ZGYsIDB4YjY1ZjhkZTYsCisJMHg5MmFlYWY2NCwgMHgzYWM3ZDVlNiwgMHg5ZWE4MDUwOSwKKwkweGYyMmIwMTdkLCAweGE0MTczZjcwLCAweGRkMWUxNmMzLCAweDE1ZTBkN2Y5LCAweDUwYjFiODg3LAorCTB4MmI5ZjRmZDUsIDB4NjI1YWJhODIsIDB4NmEwMTc5NjIsCisJMHgyZWMwMWI5YywgMHgxNTQ4OGFhOSwgMHhkNzE2ZTc0MCwgMHg0MDA1NWEyYywgMHg5M2QyOWEyMiwKKwkweGUzMmRiZjlhLCAweDA1ODc0NWI5LCAweDM0NTNkYzFlLAorCTB4ZDY5OTI5NmUsIDB4NDk2Y2ZmNmYsIDB4MWM5ZjQ5ODYsIDB4ZGZlMmVkMDcsIDB4Yjg3MjQyZDEsCisJMHgxOWRlN2VhZSwgMHgwNTNlNTYxYSwgMHgxNWFkNmY4YywKKwkweDY2NjI2YzFjLCAweDcxNTRjMjRjLCAweGVhMDgyYjJhLCAweDkzZWIyOTM5LCAweDE3ZGNiMGYwLAorCTB4NThkNGYyYWUsIDB4OWVhMjk0ZmIsIDB4NTJjZjU2NGMsCisJMHg5ODgzZmU2NiwgMHgyZWM0MDU4MSwgMHg3NjM5NTNjMywgMHgwMWQ2NjkyZSwgMHhkM2EwYzEwOCwKKwkweGExZTcxNjBlLCAweGU0ZjJkZmE2LCAweDY5M2VkMjg1LAorCTB4NzQ5MDQ2OTgsIDB4NGMyYjBlZGQsIDB4NGY3NTc2NTYsIDB4NWQzOTMzNzgsIDB4YTEzMjIzNGYsCisJMHgzZDMyMWM1ZCwgMHhjM2Y1ZTE5NCwgMHg0YjI2OTMwMSwKKwkweGM3OWYwMjJmLCAweDNjOTk3ZTdlLCAweDVlNGY5NTA0LCAweDNmZmFmYmJkLCAweDc2ZjdhZDBlLAorCTB4Mjk2NjkzZjQsIDB4M2QxZmNlNmYsIDB4YzYxZTQ1YmUsCisJMHhkM2I1YWIzNCwgMHhmNzJiZjliNywgMHgxYjA0MzRjMCwgMHg0ZTcyYjU2NywgMHg1NTkyYTMzZCwKKwkweGI1MjI5MzAxLCAweGNmZDJhODdmLCAweDYwYWViNzY3LAorCTB4MTgxNDM4NmIsIDB4MzBiY2MzM2QsIDB4MzhhMGMwN2QsIDB4ZmQxNjA2ZjIsIDB4YzM2MzUxOWIsCisJMHg1ODlkZDM5MCwgMHg1NDc5ZjhlNiwgMHgxY2I4ZDY0NywKKwkweDk3ZmQ2MWE5LCAweGVhNzc1OWY0LCAweDJkNTc1MzlkLCAweDU2OWE1OGNmLCAweGU4NGU2M2FkLAorCTB4NDYyZTFiNzgsIDB4NjU4MGY4N2UsIDB4ZjM4MTc5MTQsCisJMHg5MWRhNTVmNCwgMHg0MGEyMzBmMywgMHhkMTk4OGYzNSwgMHhiNmUzMThkMiwgMHgzZmZhNTBiYywKKwkweDNkNDBmMDIxLCAweGMzYzBiZGFlLCAweDQ5NThjMjRjLAorCTB4NTE4ZjM2YjIsIDB4ODRiMWQzNzAsIDB4MGZlZGNlODMsIDB4ODc4ZGRhZGEsIDB4ZjJhMjc5YzcsCisJMHg5NGUwMWJlOCwgMHg5MDcxNmY0YiwgMHg5NTRiOGFhMworfTsKK3N0YXRpYyBjb25zdCB1MzIgc2I4WzI1Nl0gPSB7CisJMHhlMjE2MzAwZCwgMHhiYmRkZmZmYywgMHhhN2ViZGFiZCwgMHgzNTY0ODA5NSwgMHg3Nzg5ZjhiNywKKwkweGU2YzExMjFiLCAweDBlMjQxNjAwLCAweDA1MmNlOGI1LAorCTB4MTFhOWNmYjAsIDB4ZTU5NTJmMTEsIDB4ZWNlNzk5MGEsIDB4OTM4NmQxNzQsIDB4MmE0MjkzMWMsCisJMHg3NmUzODExMSwgMHhiMTJkZWYzYSwgMHgzN2RkZGRmYywKKwkweGRlOWFkZWIxLCAweDBhMGNjMzJjLCAweGJlMTk3MDI5LCAweDg0YTAwOTQwLCAweGJiMjQzYTBmLAorCTB4YjRkMTM3Y2YsIDB4YjQ0ZTc5ZjAsIDB4MDQ5ZWVkZmQsCisJMHgwYjE1YTE1ZCwgMHg0ODBkMzE2OCwgMHg4YmJiZGU1YSwgMHg2NjlkZWQ0MiwgMHhjN2VjZTgzMSwKKwkweDNmOGY5NWU3LCAweDcyZGYxOTFiLCAweDc1ODAzMzBkLAorCTB4OTQwNzQyNTEsIDB4NWM3ZGNkZmEsIDB4YWJiZTZkNjMsIDB4YWE0MDIxNjQsIDB4YjMwMWQ0MGEsCisJMHgwMmU3ZDFjYSwgMHg1MzU3MWRhZSwgMHg3YTMxODJhMiwKKwkweDEyYThkZGVjLCAweGZkYWEzMzVkLCAweDE3NmY0M2U4LCAweDcxZmI0NmQ0LCAweDM4MTI5MDIyLAorCTB4Y2U5NDlhZDQsIDB4Yjg0NzY5YWQsIDB4OTY1YmQ4NjIsCisJMHg4MmYzZDA1NSwgMHg2NmZiOTc2NywgMHgxNWI4MGI0ZSwgMHgxZDViNDdhMCwgMHg0Y2ZkZTA2ZiwKKwkweGMyOGVjNGI4LCAweDU3ZTg3MjZlLCAweDY0N2E3OGZjLAorCTB4OTk4NjVkNDQsIDB4NjA4YmQ1OTMsIDB4NmMyMDBlMDMsIDB4MzlkYzVmZjYsIDB4NWQwYjAwYTMsCisJMHhhZTYzYWZmMiwgMHg3ZThiZDYzMiwgMHg3MDEwOGMwYywKKwkweGJiZDM1MDQ5LCAweDI5OThkZjA0LCAweDk4MGNmNDJhLCAweDliNmRmNDkxLCAweDllN2VkZDUzLAorCTB4MDY5MTg1NDgsIDB4NThjYjdlMDcsIDB4M2I3NGVmMmUsCisJMHg1MjJmZmZiMSwgMHhkMjQ3MDhjYywgMHgxYzdlMjdjZCwgMHhhNGViMjE1YiwgMHgzY2YxZDJlMiwKKwkweDE5YjQ3YTM4LCAweDQyNGY3NjE4LCAweDM1ODU2MDM5LAorCTB4OWQxN2RlZTcsIDB4MjdlYjM1ZTYsIDB4YzlhZmY2N2IsIDB4MzZiYWY1YjgsIDB4MDljNDY3Y2QsCisJMHhjMTg5MTBiMSwgMHhlMTFkYmY3YiwgMHgwNmNkMWFmOCwKKwkweDcxNzBjNjA4LCAweDJkNWUzMzU0LCAweGQ0ZGU0OTVhLCAweDY0YzZkMDA2LCAweGJjYzBjNjJjLAorCTB4M2RkMDBkYjMsIDB4NzA4ZjhmMzQsIDB4NzdkNTFiNDIsCisJMHgyNjRmNjIwZiwgMHgyNGI4ZDJiZiwgMHgxNWMxYjc5ZSwgMHg0NmE1MjU2NCwgMHhmOGQ3ZTU0ZSwKKwkweDNlMzc4MTYwLCAweDc4OTVjZGE1LCAweDg1OWMxNWE1LAorCTB4ZTY0NTk3ODgsIDB4YzM3YmM3NWYsIDB4ZGIwN2JhMGMsIDB4MDY3NmEzYWIsIDB4N2YyMjliMWUsCisJMHgzMTg0MmU3YiwgMHgyNDI1OWZkNywgMHhmOGJlZjQ3MiwKKwkweDgzNWZmY2I4LCAweDZkZjRjMWYyLCAweDk2ZjViMTk1LCAweGZkMGFmMGZjLCAweGIwZmUxMzRjLAorCTB4ZTI1MDZkM2QsIDB4NGY5YjEyZWEsIDB4ZjIxNWYyMjUsCisJMHhhMjIzNzM2ZiwgMHg5ZmI0YzQyOCwgMHgyNWQwNDk3OSwgMHgzNGM3MTNmOCwgMHhjNDYxODE4NywKKwkweGVhN2E2ZTk4LCAweDdjZDE2ZWZjLCAweDE0MzY4NzZjLAorCTB4ZjE1NDQxMDcsIDB4YmVkZWVlMTQsIDB4NTZlOWFmMjcsIDB4YTA0YWE0NDEsIDB4M2NmN2M4OTksCisJMHg5MmVjYmFlNiwgMHhkZDY3MDE2ZCwgMHgxNTE2ODJlYiwKKwkweGE4NDJlZWRmLCAweGZkYmE2MGI0LCAweGYxOTA3Yjc1LCAweDIwZTMwMzBmLCAweDI0ZDhjMjllLAorCTB4ZTEzOTY3M2IsIDB4ZWZhNjNmYjgsIDB4NzE4NzMwNTQsCisJMHhiNmYyY2YzYiwgMHg5ZjMyNjQ0MiwgMHhjYjE1YTRjYywgMHhiMDFhNDUwNCwgMHhmMWU0N2Q4ZCwKKwkweDg0NGExYmU1LCAweGJhZTdkZmRjLCAweDQyY2JkYTcwLAorCTB4Y2Q3ZGFlMGEsIDB4NTdlODViN2EsIDB4ZDUzZjVhZjYsIDB4MjBjZjRkOGMsIDB4Y2VhNGQ0MjgsCisJMHg3OWQxMzBhNCwgMHgzNDg2ZWJmYiwgMHgzM2QzY2RkYywKKwkweDc3ODUzYjUzLCAweDM3ZWZmY2I1LCAweGM1MDY4Nzc4LCAweGU1ODBiM2U2LCAweDRlNjhiOGY0LAorCTB4YzVjOGIzN2UsIDB4MGQ4MDllYTIsIDB4Mzk4ZmViN2MsCisJMHgxMzJhNGY5NCwgMHg0M2I3OTUwZSwgMHgyZmVlN2QxYywgMHgyMjM2MTNiZCwgMHhkZDA2Y2FhMiwKKwkweDM3ZGY5MzJiLCAweGM0MjQ4Mjg5LCAweGFjZjNlYmMzLAorCTB4NTcxNWY2YjcsIDB4ZWYzNDc4ZGQsIDB4ZjI2NzYxNmYsIDB4YzE0OGNiZTQsIDB4OTA1MjgxNWUsCisJMHg1ZTQxMGZhYiwgMHhiNDhhMjQ2NSwgMHgyZWRhN2ZhNCwKKwkweGU4N2I0MGU0LCAweGU5OGVhMDg0LCAweDU4ODllOWUxLCAweGVmZDM5MGZjLCAweGRkMDdkMzViLAorCTB4ZGI0ODU2OTQsIDB4MzhkN2U1YjIsIDB4NTc3MjAxMDEsCisJMHg3MzBlZGViYywgMHg1YjY0MzExMywgMHg5NDkxN2U0ZiwgMHg1MDNjMmZiYSwgMHg2NDZmMTI4MiwKKwkweDc1MjNkMjRhLCAweGUwNzc5Njk1LCAweGY5YzE3YThmLAorCTB4N2E1YjIxMjEsIDB4ZDE4N2I4OTYsIDB4MjkyNjNhNGQsIDB4YmE1MTBjZGYsIDB4ODFmNDdjOWYsCisJMHhhZDExNjNlZCwgMHhlYTdiNTk2NSwgMHgxYTAwNzI2ZSwKKwkweDExNDAzMDkyLCAweDAwZGE2ZDc3LCAweDRhMGNkZDYxLCAweGFkMWY0NjAzLCAweDYwNWJkZmIwLAorCTB4OWVlZGMzNjQsIDB4MjJlYmU2YTgsIDB4Y2VlN2QyOGEsCisJMHhhMGU3MzZhMCwgMHg1NTY0YTZiOSwgMHgxMDg1MzIwOSwgMHhjN2ViOGYzNywgMHgyZGU3MDVjYSwKKwkweDg5NTE1NzBmLCAweGRmMDk4MjJiLCAweGJkNjkxYTZjLAorCTB4YWExMmU0ZjIsIDB4ODc0NTFjMGYsIDB4ZTBmNmEyN2EsIDB4M2FkYTQ4MTksIDB4NGNmMTc2NGYsCisJMHgwZDc3MWMyYiwgMHg2N2NkYjE1NiwgMHgzNTBkODM4NCwKKwkweDU5MzhmYTBmLCAweDQyMzk5ZWYzLCAweDM2OTk3YjA3LCAweDBlODQwOTNkLCAweDRhYTkzZTYxLAorCTB4ODM2MGQ4N2IsIDB4MWZhOThiMGMsIDB4MTE0OTM4MmMsCisJMHhlOTc2MjVhNSwgMHgwNjE0ZDFiNywgMHgwZTI1MjQ0YiwgMHgwYzc2ODM0NywgMHg1ODllOGQ4MiwKKwkweDBkMjA1OWQxLCAweGE0NjZiYjFlLCAweGY4ZGEwYTgyLAorCTB4MDRmMTkxMzAsIDB4YmE2ZTRlYzAsIDB4OTkyNjUxNjQsIDB4MWVlNzIzMGQsIDB4NTBiMmFkODAsCisJMHhlYWVlNjgwMSwgMHg4ZGIyYTI4MywgMHhlYThiZjU5ZQorfTsKKworI2RlZmluZSBGMShELG0scikgICggIChJID0gKChtKSArIChEKSkpLCAoST1yb2wzMihJLChyKSkpLCAgIFwKKyAgICAoKChzMVtJID4+IDI0XSBeIHMyWyhJPj4xNikmMHhmZl0pIC0gczNbKEk+PjgpJjB4ZmZdKSArIHM0W0kmMHhmZl0pICkKKyNkZWZpbmUgRjIoRCxtLHIpICAoICAoSSA9ICgobSkgXiAoRCkpKSwgKEk9cm9sMzIoSSwocikpKSwgICBcCisgICAgKCgoczFbSSA+PiAyNF0gLSBzMlsoST4+MTYpJjB4ZmZdKSArIHMzWyhJPj44KSYweGZmXSkgXiBzNFtJJjB4ZmZdKSApCisjZGVmaW5lIEYzKEQsbSxyKSAgKCAgKEkgPSAoKG0pIC0gKEQpKSksIChJPXJvbDMyKEksKHIpKSksICAgXAorICAgICgoKHMxW0kgPj4gMjRdICsgczJbKEk+PjE2KSYweGZmXSkgXiBzM1soST4+OCkmMHhmZl0pIC0gczRbSSYweGZmXSkgKQorCisKK3N0YXRpYyB2b2lkIGNhc3Q1X2VuY3J5cHQodm9pZCAqY3R4LCB1OCAqIG91dGJ1ZiwgY29uc3QgdTggKiBpbmJ1ZikKK3sKKwlzdHJ1Y3QgY2FzdDVfY3R4ICpjID0gKHN0cnVjdCBjYXN0NV9jdHggKikgY3R4OworCXUzMiBsLCByLCB0OworCXUzMiBJOwkJCS8qIHVzZWQgYnkgdGhlIEZ4IG1hY3JvcyAqLworCXUzMiAqS207CisJdTggKktyOworCisJS20gPSBjLT5LbTsKKwlLciA9IGMtPktyOworCisJLyogKEwwLFIwKSA8LS0gKG0xLi4ubTY0KS4gIChTcGxpdCB0aGUgcGxhaW50ZXh0IGludG8gbGVmdCBhbmQKKwkgKiByaWdodCAzMi1iaXQgaGFsdmVzIEwwID0gbTEuLi5tMzIgYW5kIFIwID0gbTMzLi4ubTY0LikKKwkgKi8KKwlsID0gaW5idWZbMF0gPDwgMjQgfCBpbmJ1ZlsxXSA8PCAxNiB8IGluYnVmWzJdIDw8IDggfCBpbmJ1ZlszXTsKKwlyID0gaW5idWZbNF0gPDwgMjQgfCBpbmJ1Zls1XSA8PCAxNiB8IGluYnVmWzZdIDw8IDggfCBpbmJ1Zls3XTsKKworCS8qICgxNiByb3VuZHMpIGZvciBpIGZyb20gMSB0byAxNiwgY29tcHV0ZSBMaSBhbmQgUmkgYXMgZm9sbG93czoKKwkgKiAgTGkgPSBSaS0xOworCSAqICBSaSA9IExpLTEgXiBmKFJpLTEsS21pLEtyaSksIHdoZXJlIGYgaXMgZGVmaW5lZCBpbiBTZWN0aW9uIDIuMgorCSAqIFJvdW5kcyAxLCA0LCA3LCAxMCwgMTMsIGFuZCAxNiB1c2UgZiBmdW5jdGlvbiBUeXBlIDEuCisJICogUm91bmRzIDIsIDUsIDgsIDExLCBhbmQgMTQgdXNlIGYgZnVuY3Rpb24gVHlwZSAyLgorCSAqIFJvdW5kcyAzLCA2LCA5LCAxMiwgYW5kIDE1IHVzZSBmIGZ1bmN0aW9uIFR5cGUgMy4KKwkgKi8KKworCWlmICghKGMtPnJyKSkgeworCQl0ID0gbDsgbCA9IHI7IHIgPSB0IF4gRjEociwgS21bMF0sIEtyWzBdKTsKKwkJdCA9IGw7IGwgPSByOyByID0gdCBeIEYyKHIsIEttWzFdLCBLclsxXSk7CisJCXQgPSBsOyBsID0gcjsgciA9IHQgXiBGMyhyLCBLbVsyXSwgS3JbMl0pOworCQl0ID0gbDsgbCA9IHI7IHIgPSB0IF4gRjEociwgS21bM10sIEtyWzNdKTsKKwkJdCA9IGw7IGwgPSByOyByID0gdCBeIEYyKHIsIEttWzRdLCBLcls0XSk7CisJCXQgPSBsOyBsID0gcjsgciA9IHQgXiBGMyhyLCBLbVs1XSwgS3JbNV0pOworCQl0ID0gbDsgbCA9IHI7IHIgPSB0IF4gRjEociwgS21bNl0sIEtyWzZdKTsKKwkJdCA9IGw7IGwgPSByOyByID0gdCBeIEYyKHIsIEttWzddLCBLcls3XSk7CisJCXQgPSBsOyBsID0gcjsgciA9IHQgXiBGMyhyLCBLbVs4XSwgS3JbOF0pOworCQl0ID0gbDsgbCA9IHI7IHIgPSB0IF4gRjEociwgS21bOV0sIEtyWzldKTsKKwkJdCA9IGw7IGwgPSByOyByID0gdCBeIEYyKHIsIEttWzEwXSwgS3JbMTBdKTsKKwkJdCA9IGw7IGwgPSByOyByID0gdCBeIEYzKHIsIEttWzExXSwgS3JbMTFdKTsKKwkJdCA9IGw7IGwgPSByOyByID0gdCBeIEYxKHIsIEttWzEyXSwgS3JbMTJdKTsKKwkJdCA9IGw7IGwgPSByOyByID0gdCBeIEYyKHIsIEttWzEzXSwgS3JbMTNdKTsKKwkJdCA9IGw7IGwgPSByOyByID0gdCBeIEYzKHIsIEttWzE0XSwgS3JbMTRdKTsKKwkJdCA9IGw7IGwgPSByOyByID0gdCBeIEYxKHIsIEttWzE1XSwgS3JbMTVdKTsKKwl9IGVsc2UgeworCQl0ID0gbDsgbCA9IHI7IHIgPSB0IF4gRjEociwgS21bMF0sIEtyWzBdKTsKKwkJdCA9IGw7IGwgPSByOyByID0gdCBeIEYyKHIsIEttWzFdLCBLclsxXSk7CisJCXQgPSBsOyBsID0gcjsgciA9IHQgXiBGMyhyLCBLbVsyXSwgS3JbMl0pOworCQl0ID0gbDsgbCA9IHI7IHIgPSB0IF4gRjEociwgS21bM10sIEtyWzNdKTsKKwkJdCA9IGw7IGwgPSByOyByID0gdCBeIEYyKHIsIEttWzRdLCBLcls0XSk7CisJCXQgPSBsOyBsID0gcjsgciA9IHQgXiBGMyhyLCBLbVs1XSwgS3JbNV0pOworCQl0ID0gbDsgbCA9IHI7IHIgPSB0IF4gRjEociwgS21bNl0sIEtyWzZdKTsKKwkJdCA9IGw7IGwgPSByOyByID0gdCBeIEYyKHIsIEttWzddLCBLcls3XSk7CisJCXQgPSBsOyBsID0gcjsgciA9IHQgXiBGMyhyLCBLbVs4XSwgS3JbOF0pOworCQl0ID0gbDsgbCA9IHI7IHIgPSB0IF4gRjEociwgS21bOV0sIEtyWzldKTsKKwkJdCA9IGw7IGwgPSByOyByID0gdCBeIEYyKHIsIEttWzEwXSwgS3JbMTBdKTsKKwkJdCA9IGw7IGwgPSByOyByID0gdCBeIEYzKHIsIEttWzExXSwgS3JbMTFdKTsKKwl9CisKKwkvKiBjMS4uLmM2NCA8LS0gKFIxNixMMTYpLiAgKEV4Y2hhbmdlIGZpbmFsIGJsb2NrcyBMMTYsIFIxNiBhbmQKKwkgKiAgY29uY2F0ZW5hdGUgdG8gZm9ybSB0aGUgY2lwaGVydGV4dC4pICovCisJb3V0YnVmWzBdID0gKHIgPj4gMjQpICYgMHhmZjsKKwlvdXRidWZbMV0gPSAociA+PiAxNikgJiAweGZmOworCW91dGJ1ZlsyXSA9IChyID4+IDgpICYgMHhmZjsKKwlvdXRidWZbM10gPSByICYgMHhmZjsKKwlvdXRidWZbNF0gPSAobCA+PiAyNCkgJiAweGZmOworCW91dGJ1Zls1XSA9IChsID4+IDE2KSAmIDB4ZmY7CisJb3V0YnVmWzZdID0gKGwgPj4gOCkgJiAweGZmOworCW91dGJ1Zls3XSA9IGwgJiAweGZmOworfQorCitzdGF0aWMgdm9pZCBjYXN0NV9kZWNyeXB0KHZvaWQgKmN0eCwgdTggKiBvdXRidWYsIGNvbnN0IHU4ICogaW5idWYpCit7CisJc3RydWN0IGNhc3Q1X2N0eCAqYyA9IChzdHJ1Y3QgY2FzdDVfY3R4ICopIGN0eDsKKwl1MzIgbCwgciwgdDsKKwl1MzIgSTsKKwl1MzIgKkttOworCXU4ICpLcjsKKworCUttID0gYy0+S207CisJS3IgPSBjLT5LcjsKKworCWwgPSBpbmJ1ZlswXSA8PCAyNCB8IGluYnVmWzFdIDw8IDE2IHwgaW5idWZbMl0gPDwgOCB8IGluYnVmWzNdOworCXIgPSBpbmJ1Zls0XSA8PCAyNCB8IGluYnVmWzVdIDw8IDE2IHwgaW5idWZbNl0gPDwgOCB8IGluYnVmWzddOworCisJaWYgKCEoYy0+cnIpKSB7CisJCXQgPSBsOyBsID0gcjsgciA9IHQgXiBGMShyLCBLbVsxNV0sIEtyWzE1XSk7CisJCXQgPSBsOyBsID0gcjsgciA9IHQgXiBGMyhyLCBLbVsxNF0sIEtyWzE0XSk7CisJCXQgPSBsOyBsID0gcjsgciA9IHQgXiBGMihyLCBLbVsxM10sIEtyWzEzXSk7CisJCXQgPSBsOyBsID0gcjsgciA9IHQgXiBGMShyLCBLbVsxMl0sIEtyWzEyXSk7CisJCXQgPSBsOyBsID0gcjsgciA9IHQgXiBGMyhyLCBLbVsxMV0sIEtyWzExXSk7CisJCXQgPSBsOyBsID0gcjsgciA9IHQgXiBGMihyLCBLbVsxMF0sIEtyWzEwXSk7CisJCXQgPSBsOyBsID0gcjsgciA9IHQgXiBGMShyLCBLbVs5XSwgS3JbOV0pOworCQl0ID0gbDsgbCA9IHI7IHIgPSB0IF4gRjMociwgS21bOF0sIEtyWzhdKTsKKwkJdCA9IGw7IGwgPSByOyByID0gdCBeIEYyKHIsIEttWzddLCBLcls3XSk7CisJCXQgPSBsOyBsID0gcjsgciA9IHQgXiBGMShyLCBLbVs2XSwgS3JbNl0pOworCQl0ID0gbDsgbCA9IHI7IHIgPSB0IF4gRjMociwgS21bNV0sIEtyWzVdKTsKKwkJdCA9IGw7IGwgPSByOyByID0gdCBeIEYyKHIsIEttWzRdLCBLcls0XSk7CisJCXQgPSBsOyBsID0gcjsgciA9IHQgXiBGMShyLCBLbVszXSwgS3JbM10pOworCQl0ID0gbDsgbCA9IHI7IHIgPSB0IF4gRjMociwgS21bMl0sIEtyWzJdKTsKKwkJdCA9IGw7IGwgPSByOyByID0gdCBeIEYyKHIsIEttWzFdLCBLclsxXSk7CisJCXQgPSBsOyBsID0gcjsgciA9IHQgXiBGMShyLCBLbVswXSwgS3JbMF0pOworCX0gZWxzZSB7CisJCXQgPSBsOyBsID0gcjsgciA9IHQgXiBGMyhyLCBLbVsxMV0sIEtyWzExXSk7CisJCXQgPSBsOyBsID0gcjsgciA9IHQgXiBGMihyLCBLbVsxMF0sIEtyWzEwXSk7CisJCXQgPSBsOyBsID0gcjsgciA9IHQgXiBGMShyLCBLbVs5XSwgS3JbOV0pOworCQl0ID0gbDsgbCA9IHI7IHIgPSB0IF4gRjMociwgS21bOF0sIEtyWzhdKTsKKwkJdCA9IGw7IGwgPSByOyByID0gdCBeIEYyKHIsIEttWzddLCBLcls3XSk7CisJCXQgPSBsOyBsID0gcjsgciA9IHQgXiBGMShyLCBLbVs2XSwgS3JbNl0pOworCQl0ID0gbDsgbCA9IHI7IHIgPSB0IF4gRjMociwgS21bNV0sIEtyWzVdKTsKKwkJdCA9IGw7IGwgPSByOyByID0gdCBeIEYyKHIsIEttWzRdLCBLcls0XSk7CisJCXQgPSBsOyBsID0gcjsgciA9IHQgXiBGMShyLCBLbVszXSwgS3JbM10pOworCQl0ID0gbDsgbCA9IHI7IHIgPSB0IF4gRjMociwgS21bMl0sIEtyWzJdKTsKKwkJdCA9IGw7IGwgPSByOyByID0gdCBeIEYyKHIsIEttWzFdLCBLclsxXSk7CisJCXQgPSBsOyBsID0gcjsgciA9IHQgXiBGMShyLCBLbVswXSwgS3JbMF0pOworCX0KKworCW91dGJ1ZlswXSA9IChyID4+IDI0KSAmIDB4ZmY7CisJb3V0YnVmWzFdID0gKHIgPj4gMTYpICYgMHhmZjsKKwlvdXRidWZbMl0gPSAociA+PiA4KSAmIDB4ZmY7CisJb3V0YnVmWzNdID0gciAmIDB4ZmY7CisJb3V0YnVmWzRdID0gKGwgPj4gMjQpICYgMHhmZjsKKwlvdXRidWZbNV0gPSAobCA+PiAxNikgJiAweGZmOworCW91dGJ1Zls2XSA9IChsID4+IDgpICYgMHhmZjsKKwlvdXRidWZbN10gPSBsICYgMHhmZjsKK30KKworc3RhdGljIHZvaWQga2V5X3NjaGVkdWxlKHUzMiAqIHgsIHUzMiAqIHosIHUzMiAqIGspCit7CisKKyNkZWZpbmUgeGkoaSkgICAoKHhbKGkpLzRdID4+ICg4KigzLSgoaSklNCkpKSkgJiAweGZmKQorI2RlZmluZSB6aShpKSAgICgoelsoaSkvNF0gPj4gKDgqKDMtKChpKSU0KSkpKSAmIDB4ZmYpCisKKwl6WzBdID0geFswXSBeIHM1W3hpKDEzKV0gXiBzNlt4aSgxNSldIF4gczdbeGkoMTIpXSBeIHNiOFt4aSgxNCldIF4KKwkgICAgczdbeGkoOCldOworCXpbMV0gPSB4WzJdIF4gczVbemkoMCldIF4gczZbemkoMildIF4gczdbemkoMSldIF4gc2I4W3ppKDMpXSBeCisJICAgIHNiOFt4aSgxMCldOworCXpbMl0gPSB4WzNdIF4gczVbemkoNyldIF4gczZbemkoNildIF4gczdbemkoNSldIF4gc2I4W3ppKDQpXSBeCisJICAgIHM1W3hpKDkpXTsKKwl6WzNdID0geFsxXSBeIHM1W3ppKDEwKV0gXiBzNlt6aSg5KV0gXiBzN1t6aSgxMSldIF4gc2I4W3ppKDgpXSBeCisJICAgIHM2W3hpKDExKV07CisJa1swXSA9IHM1W3ppKDgpXSBeIHM2W3ppKDkpXSBeIHM3W3ppKDcpXSBeIHNiOFt6aSg2KV0gXiBzNVt6aSgyKV07CisJa1sxXSA9IHM1W3ppKDEwKV0gXiBzNlt6aSgxMSldIF4gczdbemkoNSldIF4gc2I4W3ppKDQpXSBeCisJICAgIHM2W3ppKDYpXTsKKwlrWzJdID0gczVbemkoMTIpXSBeIHM2W3ppKDEzKV0gXiBzN1t6aSgzKV0gXiBzYjhbemkoMildIF4KKwkgICAgczdbemkoOSldOworCWtbM10gPSBzNVt6aSgxNCldIF4gczZbemkoMTUpXSBeIHM3W3ppKDEpXSBeIHNiOFt6aSgwKV0gXgorCSAgICBzYjhbemkoMTIpXTsKKworCXhbMF0gPSB6WzJdIF4gczVbemkoNSldIF4gczZbemkoNyldIF4gczdbemkoNCldIF4gc2I4W3ppKDYpXSBeCisJICAgIHM3W3ppKDApXTsKKwl4WzFdID0gelswXSBeIHM1W3hpKDApXSBeIHM2W3hpKDIpXSBeIHM3W3hpKDEpXSBeIHNiOFt4aSgzKV0gXgorCSAgICBzYjhbemkoMildOworCXhbMl0gPSB6WzFdIF4gczVbeGkoNyldIF4gczZbeGkoNildIF4gczdbeGkoNSldIF4gc2I4W3hpKDQpXSBeCisJICAgIHM1W3ppKDEpXTsKKwl4WzNdID0gelszXSBeIHM1W3hpKDEwKV0gXiBzNlt4aSg5KV0gXiBzN1t4aSgxMSldIF4gc2I4W3hpKDgpXSBeCisJICAgIHM2W3ppKDMpXTsKKwlrWzRdID0gczVbeGkoMyldIF4gczZbeGkoMildIF4gczdbeGkoMTIpXSBeIHNiOFt4aSgxMyldIF4KKwkgICAgczVbeGkoOCldOworCWtbNV0gPSBzNVt4aSgxKV0gXiBzNlt4aSgwKV0gXiBzN1t4aSgxNCldIF4gc2I4W3hpKDE1KV0gXgorCSAgICBzNlt4aSgxMyldOworCWtbNl0gPSBzNVt4aSg3KV0gXiBzNlt4aSg2KV0gXiBzN1t4aSg4KV0gXiBzYjhbeGkoOSldIF4gczdbeGkoMyldOworCWtbN10gPSBzNVt4aSg1KV0gXiBzNlt4aSg0KV0gXiBzN1t4aSgxMCldIF4gc2I4W3hpKDExKV0gXgorCSAgICBzYjhbeGkoNyldOworCisJelswXSA9IHhbMF0gXiBzNVt4aSgxMyldIF4gczZbeGkoMTUpXSBeIHM3W3hpKDEyKV0gXiBzYjhbeGkoMTQpXSBeCisJICAgIHM3W3hpKDgpXTsKKwl6WzFdID0geFsyXSBeIHM1W3ppKDApXSBeIHM2W3ppKDIpXSBeIHM3W3ppKDEpXSBeIHNiOFt6aSgzKV0gXgorCSAgICBzYjhbeGkoMTApXTsKKwl6WzJdID0geFszXSBeIHM1W3ppKDcpXSBeIHM2W3ppKDYpXSBeIHM3W3ppKDUpXSBeIHNiOFt6aSg0KV0gXgorCSAgICBzNVt4aSg5KV07CisJelszXSA9IHhbMV0gXiBzNVt6aSgxMCldIF4gczZbemkoOSldIF4gczdbemkoMTEpXSBeIHNiOFt6aSg4KV0gXgorCSAgICBzNlt4aSgxMSldOworCWtbOF0gPSBzNVt6aSgzKV0gXiBzNlt6aSgyKV0gXiBzN1t6aSgxMildIF4gc2I4W3ppKDEzKV0gXgorCSAgICBzNVt6aSg5KV07CisJa1s5XSA9IHM1W3ppKDEpXSBeIHM2W3ppKDApXSBeIHM3W3ppKDE0KV0gXiBzYjhbemkoMTUpXSBeCisJICAgIHM2W3ppKDEyKV07CisJa1sxMF0gPSBzNVt6aSg3KV0gXiBzNlt6aSg2KV0gXiBzN1t6aSg4KV0gXiBzYjhbemkoOSldIF4gczdbemkoMildOworCWtbMTFdID0gczVbemkoNSldIF4gczZbemkoNCldIF4gczdbemkoMTApXSBeIHNiOFt6aSgxMSldIF4KKwkgICAgc2I4W3ppKDYpXTsKKworCXhbMF0gPSB6WzJdIF4gczVbemkoNSldIF4gczZbemkoNyldIF4gczdbemkoNCldIF4gc2I4W3ppKDYpXSBeCisJICAgIHM3W3ppKDApXTsKKwl4WzFdID0gelswXSBeIHM1W3hpKDApXSBeIHM2W3hpKDIpXSBeIHM3W3hpKDEpXSBeIHNiOFt4aSgzKV0gXgorCSAgICBzYjhbemkoMildOworCXhbMl0gPSB6WzFdIF4gczVbeGkoNyldIF4gczZbeGkoNildIF4gczdbeGkoNSldIF4gc2I4W3hpKDQpXSBeCisJICAgIHM1W3ppKDEpXTsKKwl4WzNdID0gelszXSBeIHM1W3hpKDEwKV0gXiBzNlt4aSg5KV0gXiBzN1t4aSgxMSldIF4gc2I4W3hpKDgpXSBeCisJICAgIHM2W3ppKDMpXTsKKwlrWzEyXSA9IHM1W3hpKDgpXSBeIHM2W3hpKDkpXSBeIHM3W3hpKDcpXSBeIHNiOFt4aSg2KV0gXiBzNVt4aSgzKV07CisJa1sxM10gPSBzNVt4aSgxMCldIF4gczZbeGkoMTEpXSBeIHM3W3hpKDUpXSBeIHNiOFt4aSg0KV0gXgorCSAgICBzNlt4aSg3KV07CisJa1sxNF0gPSBzNVt4aSgxMildIF4gczZbeGkoMTMpXSBeIHM3W3hpKDMpXSBeIHNiOFt4aSgyKV0gXgorCSAgICBzN1t4aSg4KV07CisJa1sxNV0gPSBzNVt4aSgxNCldIF4gczZbeGkoMTUpXSBeIHM3W3hpKDEpXSBeIHNiOFt4aSgwKV0gXgorCSAgICBzYjhbeGkoMTMpXTsKKworI3VuZGVmIHhpCisjdW5kZWYgemkKK30KKworCitzdGF0aWMgaW50CitjYXN0NV9zZXRrZXkodm9pZCAqY3R4LCBjb25zdCB1OCAqIGtleSwgdW5zaWduZWQga2V5X2xlbiwgdTMyICogZmxhZ3MpCit7CisJaW50IGk7CisJdTMyIHhbNF07CisJdTMyIHpbNF07CisJdTMyIGtbMTZdOworCXU4IHBfa2V5WzE2XTsKKwlzdHJ1Y3QgY2FzdDVfY3R4ICpjID0gKHN0cnVjdCBjYXN0NV9jdHggKikgY3R4OworCQorCWlmIChrZXlfbGVuIDwgNSB8fCBrZXlfbGVuID4gMTYpIHsKKwkJKmZsYWdzIHw9IENSWVBUT19URk1fUkVTX0JBRF9LRVlfTEVOOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwljLT5yciA9IGtleV9sZW4gPD0gMTAgPyAxIDogMDsKKworCW1lbXNldChwX2tleSwgMCwgMTYpOworCW1lbWNweShwX2tleSwga2V5LCBrZXlfbGVuKTsKKworCisJeFswXSA9IHBfa2V5WzBdIDw8IDI0IHwgcF9rZXlbMV0gPDwgMTYgfCBwX2tleVsyXSA8PCA4IHwgcF9rZXlbM107CisJeFsxXSA9IHBfa2V5WzRdIDw8IDI0IHwgcF9rZXlbNV0gPDwgMTYgfCBwX2tleVs2XSA8PCA4IHwgcF9rZXlbN107CisJeFsyXSA9CisJICAgIHBfa2V5WzhdIDw8IDI0IHwgcF9rZXlbOV0gPDwgMTYgfCBwX2tleVsxMF0gPDwgOCB8IHBfa2V5WzExXTsKKwl4WzNdID0KKwkgICAgcF9rZXlbMTJdIDw8IDI0IHwgcF9rZXlbMTNdIDw8IDE2IHwgcF9rZXlbMTRdIDw8IDggfCBwX2tleVsxNV07CisKKwlrZXlfc2NoZWR1bGUoeCwgeiwgayk7CisJZm9yIChpID0gMDsgaSA8IDE2OyBpKyspCisJCWMtPkttW2ldID0ga1tpXTsKKwlrZXlfc2NoZWR1bGUoeCwgeiwgayk7CisJZm9yIChpID0gMDsgaSA8IDE2OyBpKyspCisJCWMtPktyW2ldID0ga1tpXSAmIDB4MWY7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgY3J5cHRvX2FsZyBhbGcgPSB7CisJLmNyYV9uYW1lIAk9ICJjYXN0NSIsCisJLmNyYV9mbGFncyAJPSBDUllQVE9fQUxHX1RZUEVfQ0lQSEVSLAorCS5jcmFfYmxvY2tzaXplIAk9IENBU1Q1X0JMT0NLX1NJWkUsCisJLmNyYV9jdHhzaXplIAk9IHNpemVvZihzdHJ1Y3QgY2FzdDVfY3R4KSwKKwkuY3JhX21vZHVsZSAJPSBUSElTX01PRFVMRSwKKwkuY3JhX2xpc3QgCT0gTElTVF9IRUFEX0lOSVQoYWxnLmNyYV9saXN0KSwKKwkuY3JhX3UgCQk9IHsKKwkJLmNpcGhlciA9IHsKKwkJCS5jaWFfbWluX2tleXNpemUgPSBDQVNUNV9NSU5fS0VZX1NJWkUsCisJCQkuY2lhX21heF9rZXlzaXplID0gQ0FTVDVfTUFYX0tFWV9TSVpFLAorCQkJLmNpYV9zZXRrZXkgPSBjYXN0NV9zZXRrZXksCisJCQkuY2lhX2VuY3J5cHQgPSBjYXN0NV9lbmNyeXB0LAorCQkJLmNpYV9kZWNyeXB0ID0gY2FzdDVfZGVjcnlwdAorCQl9CisJfQorfTsKKworc3RhdGljIGludCBfX2luaXQgaW5pdCh2b2lkKQoreworCXJldHVybiBjcnlwdG9fcmVnaXN0ZXJfYWxnKCZhbGcpOworfQorCitzdGF0aWMgdm9pZCBfX2V4aXQgZmluaSh2b2lkKQoreworCWNyeXB0b191bnJlZ2lzdGVyX2FsZygmYWxnKTsKK30KKworbW9kdWxlX2luaXQoaW5pdCk7Cittb2R1bGVfZXhpdChmaW5pKTsKKworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0RFU0NSSVBUSU9OKCJDYXN0NSBDaXBoZXIgQWxnb3JpdGhtIik7CisKZGlmZiAtLWdpdCBhL2NyeXB0by9jYXN0Ni5jIGIvY3J5cHRvL2Nhc3Q2LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ViMDgxMAotLS0gL2Rldi9udWxsCisrKyBiL2NyeXB0by9jYXN0Ni5jCkBAIC0wLDAgKzEsNTYwIEBACisvKiBLZXJuZWwgY3J5cHRvZ3JhcGhpYyBhcGkuCisgKiBjYXN0Ni5jIC0gQ2FzdDYgY2lwaGVyIGFsZ29yaXRobSBbcmZjMjYxMl0uCisgKgorICogQ0FTVC0yNTYgKCpjYXN0NiopIGlzIGEgREVTIGxpa2UgU3Vic3RpdHV0aW9uLVBlcm11dGF0aW9uIE5ldHdvcmsgKFNQTikKKyAqIGNyeXB0b3N5c3RlbSBidWlsdCB1cG9uIHRoZSBDQVNULTEyOCAoKmNhc3Q1KikgW3JmYzIxNDRdIGVuY3J5cHRpb24KKyAqIGFsZ29yaXRobS4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMgS2FydGlrZXkgTWFoZW5kcmEgQmhhdHQgPGthcnRpa19tZUBob3RtYWlsLmNvbT4uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKKyAqIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikKKyAqIGFueSBsYXRlciB2ZXJzaW9uLgorICogCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EKKyAqLworCisKKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvY3J5cHRvLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvZXJybm8uaD4KKyNpbmNsdWRlIDxsaW51eC9zdHJpbmcuaD4KKworI2RlZmluZSBDQVNUNl9CTE9DS19TSVpFIDE2CisjZGVmaW5lIENBU1Q2X01JTl9LRVlfU0laRSAxNgorI2RlZmluZSBDQVNUNl9NQVhfS0VZX1NJWkUgMzIKKworc3RydWN0IGNhc3Q2X2N0eCB7CisJdTMyIEttWzEyXVs0XTsKKwl1OCBLclsxMl1bNF07Cit9OworCisjZGVmaW5lIEYxKEQscixtKSAgKCAgKEkgPSAoKG0pICsgKEQpKSksIChJPXJvbDMyKEksKHIpKSksICAgXAorICAgICgoKHMxW0kgPj4gMjRdIF4gczJbKEk+PjE2KSYweGZmXSkgLSBzM1soST4+OCkmMHhmZl0pICsgczRbSSYweGZmXSkgKQorI2RlZmluZSBGMihELHIsbSkgICggIChJID0gKChtKSBeIChEKSkpLCAoST1yb2wzMihJLChyKSkpLCAgIFwKKyAgICAoKChzMVtJID4+IDI0XSAtIHMyWyhJPj4xNikmMHhmZl0pICsgczNbKEk+PjgpJjB4ZmZdKSBeIHM0W0kmMHhmZl0pICkKKyNkZWZpbmUgRjMoRCxyLG0pICAoICAoSSA9ICgobSkgLSAoRCkpKSwgKEk9cm9sMzIoSSwocikpKSwgICBcCisgICAgKCgoczFbSSA+PiAyNF0gKyBzMlsoST4+MTYpJjB4ZmZdKSBeIHMzWyhJPj44KSYweGZmXSkgLSBzNFtJJjB4ZmZdKSApCisKK3N0YXRpYyBjb25zdCB1MzIgczFbMjU2XSA9IHsKKwkweDMwZmI0MGQ0LCAweDlmYTBmZjBiLCAweDZiZWNjZDJmLCAweDNmMjU4YzdhLCAweDFlMjEzZjJmLAorCTB4OWMwMDRkZDMsIDB4NjAwM2U1NDAsIDB4Y2Y5ZmM5NDksCisJMHhiZmQ0YWYyNywgMHg4OGJiYmRiNSwgMHhlMjAzNDA5MCwgMHg5OGQwOTY3NSwgMHg2ZTYzYTBlMCwKKwkweDE1YzM2MWQyLCAweGMyZTc2NjFkLCAweDIyZDRmZjhlLAorCTB4Mjg2ODNiNmYsIDB4YzA3ZmQwNTksIDB4ZmYyMzc5YzgsIDB4Nzc1ZjUwZTIsIDB4NDNjMzQwZDMsCisJMHhkZjJmODY1NiwgMHg4ODdjYTQxYSwgMHhhMmQyYmQyZCwKKwkweGExYzllMGQ2LCAweDM0NmM0ODE5LCAweDYxYjc2ZDg3LCAweDIyNTQwZjJmLCAweDJhYmUzMmUxLAorCTB4YWE1NDE2NmIsIDB4MjI1NjhlM2EsIDB4YTJkMzQxZDAsCisJMHg2NmRiNDBjOCwgMHhhNzg0MzkyZiwgMHgwMDRkZmYyZiwgMHgyZGI5ZDJkZSwgMHg5Nzk0M2ZhYywKKwkweDRhOTdjMWQ4LCAweDUyNzY0NGI3LCAweGI1ZjQzN2E3LAorCTB4YjgyY2JhZWYsIDB4ZDc1MWQxNTksIDB4NmZmN2YwZWQsIDB4NWEwOTdhMWYsIDB4ODI3YjY4ZDAsCisJMHg5MGVjZjUyZSwgMHgyMmIwYzA1NCwgMHhiYzhlNTkzNSwKKwkweDRiNmQyZjdmLCAweDUwYmI2NGEyLCAweGQyNjY0OTEwLCAweGJlZTU4MTJkLCAweGI3MzMyMjkwLAorCTB4ZTkzYjE1OWYsIDB4YjQ4ZWU0MTEsIDB4NGJmZjM0NWQsCisJMHhmZDQ1YzI0MCwgMHhhZDMxOTczZiwgMHhjNGY2ZDAyZSwgMHg1NWZjODE2NSwgMHhkNWIxY2FhZCwKKwkweGExYWMyZGFlLCAweGEyZDRiNzZkLCAweGMxOWIwYzUwLAorCTB4ODgyMjQwZjIsIDB4MGM2ZTRmMzgsIDB4YTRlNGJmZDcsIDB4NGY1YmEyNzIsIDB4NTY0YzFkMmYsCisJMHhjNTljNTMxOSwgMHhiOTQ5ZTM1NCwgMHhiMDQ2NjlmZSwKKwkweGIxYjZhYjhhLCAweGM3MTM1OGRkLCAweDYzODVjNTQ1LCAweDExMGY5MzVkLCAweDU3NTM4YWQ1LAorCTB4NmEzOTA0OTMsIDB4ZTYzZDM3ZTAsIDB4MmE1NGY2YjMsCisJMHgzYTc4N2Q1ZiwgMHg2Mjc2YTBiNSwgMHgxOWE2ZmNkZiwgMHg3YTQyMjA2YSwgMHgyOWY5ZDRkNSwKKwkweGY2MWIxODkxLCAweGJiNzIyNzVlLCAweGFhNTA4MTY3LAorCTB4Mzg5MDEwOTEsIDB4YzZiNTA1ZWIsIDB4ODRjN2NiOGMsIDB4MmFkNzVhMGYsIDB4ODc0YTE0MjcsCisJMHhhMmQxOTM2YiwgMHgyYWQyODZhZiwgMHhhYTU2ZDI5MSwKKwkweGQ3ODk0MzYwLCAweDQyNWM3NTBkLCAweDkzYjM5ZTI2LCAweDE4NzE4NGM5LCAweDZjMDBiMzJkLAorCTB4NzNlMmJiMTQsIDB4YTBiZWJjM2MsIDB4NTQ2MjM3NzksCisJMHg2NDQ1OWVhYiwgMHgzZjMyOGI4MiwgMHg3NzE4Y2Y4MiwgMHg1OWEyY2VhNiwgMHgwNGVlMDAyZSwKKwkweDg5ZmU3OGU2LCAweDNmYWIwOTUwLCAweDMyNWZmNmMyLAorCTB4ODEzODNmMDUsIDB4Njk2M2M1YzgsIDB4NzZjYjVhZDYsIDB4ZDQ5OTc0YzksIDB4Y2ExODBkY2YsCisJMHgzODA3ODJkNSwgMHhjN2ZhNWNmNiwgMHg4YWMzMTUxMSwKKwkweDM1ZTc5ZTEzLCAweDQ3ZGE5MWQwLCAweGY0MGY5MDg2LCAweGE3ZTI0MTllLCAweDMxMzY2MjQxLAorCTB4MDUxZWY0OTUsIDB4YWE1NzNiMDQsIDB4NGE4MDVkOGQsCisJMHg1NDgzMDBkMCwgMHgwMDMyMmEzYywgMHhiZjY0Y2RkZiwgMHhiYTU3YTY4ZSwgMHg3NWM2MzcyYiwKKwkweDUwYWZkMzQxLCAweGE3YzEzMjc1LCAweDkxNWEwYmY1LAorCTB4NmI1NGJmYWIsIDB4MmIwYjE0MjYsIDB4YWI0Y2M5ZDcsIDB4NDQ5Y2NkODIsIDB4ZjdmYmYyNjUsCisJMHhhYjg1YzVmMywgMHgxYjU1ZGI5NCwgMHhhYWQ0ZTMyNCwKKwkweGNmYTRiZDNmLCAweDJkZWFhM2UyLCAweDllMjA0ZDAyLCAweGM4YmQyNWFjLCAweGVhZGY1NWIzLAorCTB4ZDViZDllOTgsIDB4ZTMxMjMxYjIsIDB4MmFkNWFkNmMsCisJMHg5NTQzMjlkZSwgMHhhZGJlNDUyOCwgMHhkODcxMGY2OSwgMHhhYTUxYzkwZiwgMHhhYTc4NmJmNiwKKwkweDIyNTEzZjFlLCAweGFhNTFhNzliLCAweDJhZDM0NGNjLAorCTB4N2I1YTQxZjAsIDB4ZDM3Y2ZiYWQsIDB4MWIwNjk1MDUsIDB4NDFlY2U0OTEsIDB4YjRjMzMyZTYsCisJMHgwMzIyNjhkNCwgMHhjOTYwMGFjYywgMHhjZTM4N2U2ZCwKKwkweGJmNmJiMTZjLCAweDZhNzBmYjc4LCAweDBkMDNkOWM5LCAweGQ0ZGYzOWRlLCAweGUwMTA2M2RhLAorCTB4NDczNmY0NjQsIDB4NWFkMzI4ZDgsIDB4YjM0N2NjOTYsCisJMHg3NWJiMGZjMywgMHg5ODUxMWJmYiwgMHg0ZmZiY2MzNSwgMHhiNThiY2Y2YSwgMHhlMTFmMGFiYywKKwkweGJmYzVmZTRhLCAweGE3MGFlYzEwLCAweGFjMzk1NzBhLAorCTB4M2YwNDQ0MmYsIDB4NjE4OGIxNTMsIDB4ZTAzOTdhMmUsIDB4NTcyN2NiNzksIDB4OWNlYjQxOGYsCisJMHgxY2FjZDY4ZCwgMHgyYWQzN2M5NiwgMHgwMTc1Y2I5ZCwKKwkweGM2OWRmZjA5LCAweGM3NWI2NWYwLCAweGQ5ZGI0MGQ4LCAweGVjMGU3Nzc5LCAweDQ3NDRlYWQ0LAorCTB4YjExYzMyNzQsIDB4ZGQyNGNiOWUsIDB4N2UxYzU0YmQsCisJMHhmMDExNDRmOSwgMHhkMjI0MGViMSwgMHg5Njc1YjNmZCwgMHhhM2FjMzc1NSwgMHhkNDdjMjdhZiwKKwkweDUxYzg1ZjRkLCAweDU2OTA3NTk2LCAweGE1YmIxNWU2LAorCTB4NTgwMzA0ZjAsIDB4Y2EwNDJjZjEsIDB4MDExYTM3ZWEsIDB4OGRiZmFhZGIsIDB4MzViYTNlNGEsCisJMHgzNTI2ZmZhMCwgMHhjMzdiNGQwOSwgMHhiYzMwNmVkOSwKKwkweDk4YTUyNjY2LCAweDU2NDhmNzI1LCAweGZmNWU1NjlkLCAweDBjZWQ2M2QwLCAweDdjNjNiMmNmLAorCTB4NzAwYjQ1ZTEsIDB4ZDVlYTUwZjEsIDB4ODVhOTI4NzIsCisJMHhhZjFmYmRhNywgMHhkNDIzNDg3MCwgMHhhNzg3MGJmMywgMHgyZDNiNGQ3OSwgMHg0MmUwNDE5OCwKKwkweDBjZDBlZGU3LCAweDI2NDcwZGI4LCAweGY4ODE4MTRjLAorCTB4NDc0ZDZhZDcsIDB4N2MwYzVlNWMsIDB4ZDEyMzE5NTksIDB4MzgxYjcyOTgsIDB4ZjVkMmY0ZGIsCisJMHhhYjgzODY1MywgMHg2ZTJmMWUyMywgMHg4MzcxOWM5ZSwKKwkweGJkOTFlMDQ2LCAweDlhNTY0NTZlLCAweGRjMzkyMDBjLCAweDIwYzhjNTcxLCAweDk2MmJkYTFjLAorCTB4ZTFlNjk2ZmYsIDB4YjE0MWFiMDgsIDB4N2NjYTg5YjksCisJMHgxYTY5ZTc4MywgMHgwMmNjNDg0MywgMHhhMmY3YzU3OSwgMHg0MjllZjQ3ZCwgMHg0MjdiMTY5YywKKwkweDVhYzlmMDQ5LCAweGRkOGYwZjAwLCAweDVjODE2NWJmCit9OworCitzdGF0aWMgY29uc3QgdTMyIHMyWzI1Nl0gPSB7CisJMHgxZjIwMTA5NCwgMHhlZjBiYTc1YiwgMHg2OWUzY2Y3ZSwgMHgzOTNmNDM4MCwgMHhmZTYxY2Y3YSwKKwkweGVlYzUyMDdhLCAweDU1ODg5Yzk0LCAweDcyZmMwNjUxLAorCTB4YWRhN2VmNzksIDB4NGUxZDcyMzUsIDB4ZDU1YTYzY2UsIDB4ZGUwNDM2YmEsIDB4OTljNDMwZWYsCisJMHg1ZjBjMDc5NCwgMHgxOGRjZGI3ZCwgMHhhMWQ2ZWZmMywKKwkweGEwYjUyZjdiLCAweDU5ZTgzNjA1LCAweGVlMTViMDk0LCAweGU5ZmZkOTA5LCAweGRjNDQwMDg2LAorCTB4ZWY5NDQ0NTksIDB4YmE4M2NjYjMsIDB4ZTBjM2NkZmIsCisJMHhkMWRhNDE4MSwgMHgzYjA5MmFiMSwgMHhmOTk3ZjFjMSwgMHhhNWU2Y2Y3YiwgMHgwMTQyMGRkYiwKKwkweGU0ZTdlZjViLCAweDI1YTFmZjQxLCAweGUxODBmODA2LAorCTB4MWZjNDEwODAsIDB4MTc5YmVlN2EsIDB4ZDM3YWM2YTksIDB4ZmU1ODMwYTQsIDB4OThkZThiN2YsCisJMHg3N2U4M2Y0ZSwgMHg3OTkyOTI2OSwgMHgyNGZhOWY3YiwKKwkweGUxMTNjODViLCAweGFjYzQwMDgzLCAweGQ3NTAzNTI1LCAweGY3ZWE2MTVmLCAweDYyMTQzMTU0LAorCTB4MGQ1NTRiNjMsIDB4NWQ2ODExMjEsIDB4Yzg2NmMzNTksCisJMHgzZDYzY2Y3MywgMHhjZWUyMzRjMCwgMHhkNGQ4N2U4NywgMHg1YzY3MmIyMSwgMHgwNzFmNjE4MSwKKwkweDM5Zjc2MjdmLCAweDM2MWUzMDg0LCAweGU0ZWI1NzNiLAorCTB4NjAyZjY0YTQsIDB4ZDYzYWNkOWMsIDB4MWJiYzQ2MzUsIDB4OWU4MTAzMmQsIDB4MjcwMWY1MGMsCisJMHg5OTg0N2FiNCwgMHhhMGUzZGY3OSwgMHhiYTZjZjM4YywKKwkweDEwODQzMDk0LCAweDI1MzdhOTVlLCAweGY0NmY2ZmZlLCAweGExZmYzYjFmLCAweDIwOGNmYjZhLAorCTB4OGY0NThjNzQsIDB4ZDllMGEyMjcsIDB4NGVjNzNhMzQsCisJMHhmYzg4NGY2OSwgMHgzZTRkZThkZiwgMHhlZjBlMDA4OCwgMHgzNTU5NjQ4ZCwgMHg4YTQ1Mzg4YywKKwkweDFkODA0MzY2LCAweDcyMWQ5YmZkLCAweGE1ODY4NGJiLAorCTB4ZTgyNTYzMzMsIDB4ODQ0ZTgyMTIsIDB4MTI4ZDgwOTgsIDB4ZmVkMzNmYjQsIDB4Y2UyODBhZTEsCisJMHgyN2UxOWJhNSwgMHhkNWE2YzI1MiwgMHhlNDk3NTRiZCwKKwkweGM1ZDY1NWRkLCAweGViNjY3MDY0LCAweDc3ODQwYjRkLCAweGExYjZhODAxLCAweDg0ZGIyNmE5LAorCTB4ZTBiNTY3MTQsIDB4MjFmMDQzYjcsIDB4ZTVkMDU4NjAsCisJMHg1NGYwMzA4NCwgMHgwNjZmZjQ3MiwgMHhhMzFhYTE1MywgMHhkYWRjNDc1NSwgMHhiNTYyNWRiZiwKKwkweDY4NTYxYmU2LCAweDgzY2E2Yjk0LCAweDJkNmVkMjNiLAorCTB4ZWNjZjAxZGIsIDB4YTZkM2QwYmEsIDB4YjY4MDNkNWMsIDB4YWY3N2E3MDksIDB4MzNiNGEzNGMsCisJMHgzOTdiYzhkNiwgMHg1ZWUyMmI5NSwgMHg1ZjBlNTMwNCwKKwkweDgxZWQ2ZjYxLCAweDIwZTc0MzY0LCAweGI0NWUxMzc4LCAweGRlMTg2MzliLCAweDg4MWNhMTIyLAorCTB4Yjk2NzI2ZDEsIDB4ODA0OWE3ZTgsIDB4MjJiN2RhN2IsCisJMHg1ZTU1MmQyNSwgMHg1MjcyZDIzNywgMHg3OWQyOTUxYywgMHhjNjBkODk0YywgMHg0ODhjYjQwMiwKKwkweDFiYTRmZTViLCAweGE0YjA5ZjZiLCAweDFjYTgxNWNmLAorCTB4YTIwYzMwMDUsIDB4ODg3MWRmNjMsIDB4YjlkZTJmY2IsIDB4MGNjNmM5ZTksIDB4MGJlZWZmNTMsCisJMHhlMzIxNDUxNywgMHhiNDU0MjgzNSwgMHg5ZjYzMjkzYywKKwkweGVlNDFlNzI5LCAweDZlMWQyZDdjLCAweDUwMDQ1Mjg2LCAweDFlNjY4NWYzLCAweGYzMzQwMWM2LAorCTB4MzBhMjJjOTUsIDB4MzFhNzA4NTAsIDB4NjA5MzBmMTMsCisJMHg3M2Y5ODQxNywgMHhhMTI2OTg1OSwgMHhlYzY0NWM0NCwgMHg1MmM4NzdhOSwgMHhjZGZmMzNhNiwKKwkweGEwMmIxNzQxLCAweDdjYmFkOWEyLCAweDIxODAwMzZmLAorCTB4NTBkOTljMDgsIDB4Y2IzZjQ4NjEsIDB4YzI2YmQ3NjUsIDB4NjRhM2Y2YWIsIDB4ODAzNDI2NzYsCisJMHgyNWE3NWU3YiwgMHhlNGU2ZDFmYywgMHgyMGM3MTBlNiwKKwkweGNkZjBiNjgwLCAweDE3ODQ0ZDNiLCAweDMxZWVmODRkLCAweDdlMDgyNGU0LCAweDJjY2I0OWViLAorCTB4ODQ2YTNiYWUsIDB4OGZmNzc4ODgsIDB4ZWU1ZDYwZjYsCisJMHg3YWY3NTY3MywgMHgyZmRkNWNkYiwgMHhhMTE2MzFjMSwgMHgzMGY2NmY0MywgMHhiM2ZhZWM1NCwKKwkweDE1N2ZkN2ZhLCAweGVmODU3OWNjLCAweGQxNTJkZTU4LAorCTB4ZGIyZmZkNWUsIDB4OGYzMmNlMTksIDB4MzA2YWY5N2EsIDB4MDJmMDNlZjgsIDB4OTkzMTlhZDUsCisJMHhjMjQyZmEwZiwgMHhhN2UzZWJiMCwgMHhjNjhlNDkwNiwKKwkweGI4ZGEyMzBjLCAweDgwODIzMDI4LCAweGRjZGVmM2M4LCAweGQzNWZiMTcxLCAweDA4OGExYmM4LAorCTB4YmVjMGM1NjAsIDB4NjFhM2M5ZTgsIDB4YmNhOGY1NGQsCisJMHhjNzJmZWZmYSwgMHgyMjgyMmU5OSwgMHg4MmM1NzBiNCwgMHhkOGQ5NGU4OSwgMHg4YjFjMzRiYywKKwkweDMwMWUxNmU2LCAweDI3M2JlOTc5LCAweGIwZmZlYWE2LAorCTB4NjFkOWI4YzYsIDB4MDBiMjQ4NjksIDB4YjdmZmNlM2YsIDB4MDhkYzI4M2IsIDB4NDNkYWY2NWEsCisJMHhmN2UxOTc5OCwgMHg3NjE5YjcyZiwgMHg4ZjFjOWJhNCwKKwkweGRjODYzN2EwLCAweDE2YTdkM2IxLCAweDlmYzM5M2I3LCAweGE3MTM2ZWViLCAweGM2YmNjNjNlLAorCTB4MWE1MTM3NDIsIDB4ZWY2ODI4YmMsIDB4NTIwMzY1ZDYsCisJMHgyZDZhNzdhYiwgMHgzNTI3ZWQ0YiwgMHg4MjFmZDIxNiwgMHgwOTVjNmUyZSwgMHhkYjkyZjJmYiwKKwkweDVlZWEyOWNiLCAweDE0NTg5MmY1LCAweDkxNTg0ZjdmLAorCTB4NTQ4MzY5N2IsIDB4MjY2N2E4Y2MsIDB4ODUxOTYwNDgsIDB4OGM0YmFjZWEsIDB4ODMzODYwZDQsCisJMHgwZDIzZTBmOSwgMHg2YzM4N2U4YSwgMHgwYWU2ZDI0OSwKKwkweGIyODQ2MDBjLCAweGQ4MzU3MzFkLCAweGRjYjFjNjQ3LCAweGFjNGM1NmVhLCAweDNlYmQ4MWIzLAorCTB4MjMwZWFiYjAsIDB4NjQzOGJjODcsIDB4ZjBiNWIxZmEsCisJMHg4ZjVlYTJiMywgMHhmYzE4NDY0MiwgMHgwYTAzNmI3YSwgMHg0ZmIwODliZCwgMHg2NDlkYTU4OSwKKwkweGEzNDU0MTVlLCAweDVjMDM4MzIzLCAweDNlNWQzYmI5LAorCTB4NDNkNzk1NzIsIDB4N2U2ZGQwN2MsIDB4MDZkZmRmMWUsIDB4NmM2Y2M0ZWYsIDB4NzE2MGE1MzksCisJMHg3M2JmYmU3MCwgMHg4Mzg3NzYwNSwgMHg0NTIzZWNmMQorfTsKKworc3RhdGljIGNvbnN0IHUzMiBzM1syNTZdID0geworCTB4OGRlZmMyNDAsIDB4MjVmYTVkOWYsIDB4ZWI5MDNkYmYsIDB4ZTgxMGM5MDcsIDB4NDc2MDdmZmYsCisJMHgzNjlmZTQ0YiwgMHg4YzFmYzY0NCwgMHhhZWNlY2E5MCwKKwkweGJlYjFmOWJmLCAweGVlZmJjYWVhLCAweGU4Y2YxOTUwLCAweDUxZGYwN2FlLCAweDkyMGU4ODA2LAorCTB4ZjBhZDA1NDgsIDB4ZTEzYzhkODMsIDB4OTI3MDEwZDUsCisJMHgxMTEwN2Q5ZiwgMHgwNzY0N2RiOSwgMHhiMmUzZTRkNCwgMHgzZDRmMjg1ZSwgMHhiOWFmYTgyMCwKKwkweGZhZGU4MmUwLCAweGEwNjcyNjhiLCAweDgyNzI3OTJlLAorCTB4NTUzZmIyYzAsIDB4NDg5YWUyMmIsIDB4ZDRlZjk3OTQsIDB4MTI1ZTNmYmMsIDB4MjFmZmZjZWUsCisJMHg4MjViMWJmZCwgMHg5MjU1YzVlZCwgMHgxMjU3YTI0MCwKKwkweDRlMWE4MzAyLCAweGJhZTA3ZmZmLCAweDUyODI0NmU3LCAweDhlNTcxNDBlLCAweDMzNzNmN2JmLAorCTB4OGM5ZjgxODgsIDB4YTZmYzRlZTgsIDB4Yzk4MmI1YTUsCisJMHhhOGMwMWRiNywgMHg1NzlmYzI2NCwgMHg2NzA5NGYzMSwgMHhmMmJkM2Y1ZiwgMHg0MGZmZjdjMSwKKwkweDFmYjc4ZGZjLCAweDhlNmJkMmMxLCAweDQzN2JlNTliLAorCTB4OTliMDNkYmYsIDB4YjVkYmM2NGIsIDB4NjM4ZGMwZTYsIDB4NTU4MTlkOTksIDB4YTE5N2M4MWMsCisJMHg0YTAxMmQ2ZSwgMHhjNTg4NGEyOCwgMHhjY2MzNmY3MSwKKwkweGI4NDNjMjEzLCAweDZjMDc0M2YxLCAweDgzMDk4OTNjLCAweDBmZWRkZDVmLCAweDJmN2ZlODUwLAorCTB4ZDdjMDdmN2UsIDB4MDI1MDdmYmYsIDB4NWFmYjlhMDQsCisJMHhhNzQ3ZDJkMCwgMHgxNjUxMTkyZSwgMHhhZjcwYmYzZSwgMHg1OGMzMTM4MCwgMHg1Zjk4MzAyZSwKKwkweDcyN2NjM2M0LCAweDBhMGZiNDAyLCAweDBmN2ZlZjgyLAorCTB4OGM5NmZkYWQsIDB4NWQyYzJhYWUsIDB4OGVlOTlhNDksIDB4NTBkYTg4YjgsIDB4ODQyN2Y0YTAsCisJMHgxZWFjNTc5MCwgMHg3OTZmYjQ0OSwgMHg4MjUyZGMxNSwKKwkweGVmYmQ3ZDliLCAweGE2NzI1OTdkLCAweGFkYTg0MGQ4LCAweDQ1ZjU0NTA0LCAweGZhNWQ3NDAzLAorCTB4ZTgzZWMzMDUsIDB4NGY5MTc1MWEsIDB4OTI1NjY5YzIsCisJMHgyM2VmZTk0MSwgMHhhOTAzZjEyZSwgMHg2MDI3MGRmMiwgMHgwMjc2ZTRiNiwgMHg5NGZkNjU3NCwKKwkweDkyNzk4NWIyLCAweDgyNzZkYmNiLCAweDAyNzc4MTc2LAorCTB4ZjhhZjkxOGQsIDB4NGU0OGY3OWUsIDB4OGY2MTZkZGYsIDB4ZTI5ZDg0MGUsIDB4ODQyZjdkODMsCisJMHgzNDBjZTVjOCwgMHg5NmJiYjY4MiwgMHg5M2I0YjE0OCwKKwkweGVmMzAzY2FiLCAweDk4NGZhZjI4LCAweDc3OWZhZjliLCAweDkyZGM1NjBkLCAweDIyNGQxZTIwLAorCTB4ODQzN2FhODgsIDB4N2QyOWRjOTYsIDB4Mjc1NmQzZGMsCisJMHg4YjkwN2NlZSwgMHhiNTFmZDI0MCwgMHhlN2MwN2NlMywgMHhlNTY2YjRhMSwgMHhjM2U5NjE1ZSwKKwkweDNjZjgyMDlkLCAweDYwOTRkMWUzLCAweGNkOWNhMzQxLAorCTB4NWM3NjQ2MGUsIDB4MDBlYTk4M2IsIDB4ZDRkNjc4ODEsIDB4ZmQ0NzU3MmMsIDB4Zjc2Y2VkZDksCisJMHhiZGE4MjI5YywgMHgxMjdkYWRhYSwgMHg0MzhhMDc0ZSwKKwkweDFmOTdjMDkwLCAweDA4MWJkYjhhLCAweDkzYTA3ZWJlLCAweGI5MzhjYTE1LCAweDk3YjAzY2ZmLAorCTB4M2RjMmMwZjgsIDB4OGQxYWIyZWMsIDB4NjQzODBlNTEsCisJMHg2OGNjN2JmYiwgMHhkOTBmMjc4OCwgMHgxMjQ5MDE4MSwgMHg1ZGU1ZmZkNCwgMHhkZDdlZjg2YSwKKwkweDc2YTJlMjE0LCAweGI5YTQwMzY4LCAweDkyNWQ5NThmLAorCTB4NGIzOWZmZmEsIDB4YmEzOWFlZTksIDB4YTRmZmQzMGIsIDB4ZmFmNzkzM2IsIDB4NmQ0OTg2MjMsCisJMHgxOTNjYmNmYSwgMHgyNzYyNzU0NSwgMHg4MjVjZjQ3YSwKKwkweDYxYmQ4YmEwLCAweGQxMWU0MmQxLCAweGNlYWQwNGY0LCAweDEyN2VhMzkyLCAweDEwNDI4ZGI3LAorCTB4ODI3MmE5NzIsIDB4OTI3MGM0YTgsIDB4MTI3ZGU1MGIsCisJMHgyODViYTFjOCwgMHgzYzYyZjQ0ZiwgMHgzNWMwZWFhNSwgMHhlODA1ZDIzMSwgMHg0Mjg5MjlmYiwKKwkweGI0ZmNkZjgyLCAweDRmYjY2YTUzLCAweDBlN2RjMTViLAorCTB4MWYwODFmYWIsIDB4MTA4NjE4YWUsIDB4ZmNmZDA4NmQsIDB4ZjlmZjI4ODksIDB4Njk0YmNjMTEsCisJMHgyMzZhNWNhZSwgMHgxMmRlY2E0ZCwgMHgyYzNmOGNjNSwKKwkweGQyZDAyZGZlLCAweGY4ZWY1ODk2LCAweGU0Y2Y1MmRhLCAweDk1MTU1YjY3LCAweDQ5NGE0ODhjLAorCTB4YjliNmE4MGMsIDB4NWM4ZjgyYmMsIDB4ODlkMzZiNDUsCisJMHgzYTYwOTQzNywgMHhlYzAwYzlhOSwgMHg0NDcxNTI1MywgMHgwYTg3NGI0OSwgMHhkNzczYmM0MCwKKwkweDdjMzQ2NzFjLCAweDAyNzE3ZWY2LCAweDRmZWI1NTM2LAorCTB4YTJkMDJmZmYsIDB4ZDJiZjYwYzQsIDB4ZDQzZjAzYzAsIDB4NTBiNGVmNmQsIDB4MDc0NzhjZDEsCisJMHgwMDZlMTg4OCwgMHhhMmU1M2Y1NSwgMHhiOWU2ZDRiYywKKwkweGEyMDQ4MDE2LCAweDk3NTczODMzLCAweGQ3MjA3ZDY3LCAweGRlMGY4ZjNkLCAweDcyZjg3YjMzLAorCTB4YWJjYzRmMzMsIDB4NzY4OGM1NWQsIDB4N2IwMGE2YjAsCisJMHg5NDdiMDAwMSwgMHg1NzAwNzVkMiwgMHhmOWJiODhmOCwgMHg4OTQyMDE5ZSwgMHg0MjY0YTVmZiwKKwkweDg1NjMwMmUwLCAweDcyZGJkOTJiLCAweGVlOTcxYjY5LAorCTB4NmVhMjJmZGUsIDB4NWYwOGFlMmIsIDB4YWY3YTYxNmQsIDB4ZTVjOTg3NjcsIDB4Y2YxZmViZDIsCisJMHg2MWVmYzhjMiwgMHhmMWFjMjU3MSwgMHhjYzgyMzljMiwKKwkweDY3MjE0Y2I4LCAweGIxZTU4M2QxLCAweGI3ZGMzZTYyLCAweDdmMTBiZGNlLCAweGY5MGE1YzM4LAorCTB4MGZmMDQ0M2QsIDB4NjA2ZTZkYzYsIDB4NjA1NDNhNDksCisJMHg1NzI3YzE0OCwgMHgyYmU5OGExZCwgMHg4YWI0MTczOCwgMHgyMGUxYmUyNCwgMHhhZjk2ZGEwZiwKKwkweDY4NDU4NDI1LCAweDk5ODMzYmU1LCAweDYwMGQ0NTdkLAorCTB4MjgyZjkzNTAsIDB4ODMzNGIzNjIsIDB4ZDkxZDExMjAsIDB4MmI2ZDhkYTAsIDB4NjQyYjFlMzEsCisJMHg5YzMwNWEwMCwgMHg1MmJjZTY4OCwgMHgxYjAzNTg4YSwKKwkweGY3YmFlZmQ1LCAweDQxNDJlZDljLCAweGE0MzE1YzExLCAweDgzMzIzZWM1LCAweGRmZWY0NjM2LAorCTB4YTEzM2M1MDEsIDB4ZTlkMzUzMWMsIDB4ZWUzNTM3ODMKK307CisKK3N0YXRpYyBjb25zdCB1MzIgczRbMjU2XSA9IHsKKwkweDlkYjMwNDIwLCAweDFmYjZlOWRlLCAweGE3YmU3YmVmLCAweGQyNzNhMjk4LCAweDRhNGY3YmRiLAorCTB4NjRhZDhjNTcsIDB4ODU1MTA0NDMsIDB4ZmEwMjBlZDEsCisJMHg3ZTI4N2FmZiwgMHhlNjBmYjY2MywgMHgwOTVmMzVhMSwgMHg3OWViZjEyMCwgMHhmZDA1OWQ0MywKKwkweDY0OTdiN2IxLCAweGYzNjQxZjYzLCAweDI0MWU0YWRmLAorCTB4MjgxNDdmNWYsIDB4NGZhMmI4Y2QsIDB4Yzk0MzAwNDAsIDB4MGNjMzIyMjAsIDB4ZmRkMzBiMzAsCisJMHhjMGE1Mzc0ZiwgMHgxZDJkMDBkOSwgMHgyNDE0N2IxNSwKKwkweGVlNGQxMTFhLCAweDBmY2E1MTY3LCAweDcxZmY5MDRjLCAweDJkMTk1ZmZlLCAweDFhMDU2NDVmLAorCTB4MGMxM2ZlZmUsIDB4MDgxYjA4Y2EsIDB4MDUxNzAxMjEsCisJMHg4MDUzMDEwMCwgMHhlODNlNWVmZSwgMHhhYzlhZjRmOCwgMHg3ZmU3MjcwMSwgMHhkMmI4ZWU1ZiwKKwkweDA2ZGY0MjYxLCAweGJiOWU5YjhhLCAweDcyOTNlYTI1LAorCTB4Y2U4NGZmZGYsIDB4ZjU3MTg4MDEsIDB4M2RkNjRiMDQsIDB4YTI2ZjI2M2IsIDB4N2VkNDg0MDAsCisJMHg1NDdlZWJlNiwgMHg0NDZkNGNhMCwgMHg2Y2YzZDZmNSwKKwkweDI2NDlhYmRmLCAweGFlYTBjN2Y1LCAweDM2MzM4Y2MxLCAweDUwM2Y3ZTkzLCAweGQzNzcyMDYxLAorCTB4MTFiNjM4ZTEsIDB4NzI1MDBlMDMsIDB4ZjgwZWIyYmIsCisJMHhhYmUwNTAyZSwgMHhlYzhkNzdkZSwgMHg1Nzk3MWU4MSwgMHhlMTRmNjc0NiwgMHhjOTMzNTQwMCwKKwkweDY5MjAzMThmLCAweDA4MWRiYjk5LCAweGZmYzMwNGE1LAorCTB4NGQzNTE4MDUsIDB4N2YzZDVjZTMsIDB4YTZjODY2YzYsIDB4NWQ1YmNjYTksIDB4ZGFlYzZmZWEsCisJMHg5ZjkyNmY5MSwgMHg5ZjQ2MjIyZiwgMHgzOTkxNDY3ZCwKKwkweGE1YmY2ZDhlLCAweDExNDNjNDRmLCAweDQzOTU4MzAyLCAweGQwMjE0ZWViLCAweDAyMjA4M2I4LAorCTB4M2ZiNjE4MGMsIDB4MThmODkzMWUsIDB4MjgxNjU4ZTYsCisJMHgyNjQ4NmUzZSwgMHg4YmQ3OGE3MCwgMHg3NDc3ZTRjMSwgMHhiNTA2ZTA3YywgMHhmMzJkMGEyNSwKKwkweDc5MDk4YjAyLCAweGU0ZWFiYjgxLCAweDI4MTIzYjIzLAorCTB4NjlkZWFkMzgsIDB4MTU3NGNhMTYsIDB4ZGY4NzFiNjIsIDB4MjExYzQwYjcsIDB4YTUxYTllZjksCisJMHgwMDE0Mzc3YiwgMHgwNDFlOGFjOCwgMHgwOTExNDAwMywKKwkweGJkNTllNGQyLCAweGUzZDE1NmQ1LCAweDRmZTg3NmQ1LCAweDJmOTFhMzQwLCAweDU1N2JlOGRlLAorCTB4MDBlYWU0YTcsIDB4MGNlNWMyZWMsIDB4NGRiNGJiYTYsCisJMHhlNzU2YmRmZiwgMHhkZDMzNjlhYywgMHhlYzE3YjAzNSwgMHgwNjU3MjMyNywgMHg5OWFmYzhiMCwKKwkweDU2YzhjMzkxLCAweDZiNjU4MTFjLCAweDVlMTQ2MTE5LAorCTB4NmU4NWNiNzUsIDB4YmUwN2MwMDIsIDB4YzIzMjU1NzcsIDB4ODkzZmY0ZWMsIDB4NWJiZmM5MmQsCisJMHhkMGVjM2IyNSwgMHhiNzgwMWFiNywgMHg4ZDZkM2IyNCwKKwkweDIwYzc2M2VmLCAweGMzNjZhNWZjLCAweDljMzgyODgwLCAweDBhY2UzMjA1LCAweGFhYzk1NDhhLAorCTB4ZWNhMWQ3YzcsIDB4MDQxYWZhMzIsIDB4MWQxNjYyNWEsCisJMHg2NzAxOTAyYywgMHg5Yjc1N2E1NCwgMHgzMWQ0NzdmNywgMHg5MTI2YjAzMSwgMHgzNmNjNmZkYiwKKwkweGM3MGI4YjQ2LCAweGQ5ZTY2YTQ4LCAweDU2ZTU1YTc5LAorCTB4MDI2YTRjZWIsIDB4NTI0MzdlZmYsIDB4MmY4Zjc2YjQsIDB4MGRmOTgwYTUsIDB4ODY3NGNkZTMsCisJMHhlZGRhMDRlYiwgMHgxN2E5YmUwNCwgMHgyYzE4ZjRkZiwKKwkweGI3NzQ3ZjlkLCAweGFiMmFmN2I0LCAweGVmYzM0ZDIwLCAweDJlMDk2YjdjLCAweDE3NDFhMjU0LAorCTB4ZTViNmEwMzUsIDB4MjEzZDQyZjYsIDB4MmMxYzdjMjYsCisJMHg2MWMyZjUwZiwgMHg2NTUyZGFmOSwgMHhkMmMyMzFmOCwgMHgyNTEzMGY2OSwgMHhkODE2N2ZhMiwKKwkweDA0MThmMmM4LCAweDAwMWE5NmE2LCAweDBkMTUyNmFiLAorCTB4NjMzMTVjMjEsIDB4NWUwYTcyZWMsIDB4NDliYWZlZmQsIDB4MTg3OTA4ZDksIDB4OGQwZGJkODYsCisJMHgzMTExNzBhNywgMHgzZTliNjQwYywgMHhjYzNlMTBkNywKKwkweGQ1Y2FkM2I2LCAweDBjYWVjMzg4LCAweGY3MzAwMWUxLCAweDZjNzI4YWZmLCAweDcxZWFlMmExLAorCTB4MWY5YWYzNmUsIDB4Y2ZjYmQxMmYsIDB4YzFkZTg0MTcsCisJMHhhYzA3YmU2YiwgMHhjYjQ0YTFkOCwgMHg4YjliMGY1NiwgMHgwMTM5ODhjMywgMHhiMWM1MmZjYSwKKwkweGI0YmUzMWNkLCAweGQ4NzgyODA2LCAweDEyYTNhNGUyLAorCTB4NmY3ZGU1MzIsIDB4NThmZDdlYjYsIDB4ZDAxZWU5MDAsIDB4MjRhZGZmYzIsIDB4ZjQ5OTBmYzUsCisJMHg5NzExYWFjNSwgMHgwMDFkN2I5NSwgMHg4MmU1ZTdkMiwKKwkweDEwOTg3M2Y2LCAweDAwNjEzMDk2LCAweGMzMmQ5NTIxLCAweGFkYTEyMWZmLCAweDI5OTA4NDE1LAorCTB4N2ZiYjk3N2YsIDB4YWY5ZWIzZGIsIDB4MjljOWVkMmEsCisJMHg1Y2UyYTQ2NSwgMHhhNzMwZjMyYywgMHhkMGFhM2ZlOCwgMHg4YTVjYzA5MSwgMHhkNDllMmNlNywKKwkweDBjZTQ1NGE5LCAweGQ2MGFjZDg2LCAweDAxNWYxOTE5LAorCTB4NzcwNzkxMDMsIDB4ZGVhMDNhZjYsIDB4NzhhODU2NWUsIDB4ZGVlMzU2ZGYsIDB4MjFmMDVjYmUsCisJMHg4Yjc1ZTM4NywgMHhiM2M1MDY1MSwgMHhiOGE1YzNlZiwKKwkweGQ4ZWViNmQyLCAweGU1MjNiZTc3LCAweGMyMTU0NTI5LCAweDJmNjllZmRmLCAweGFmZTY3YWZiLAorCTB4ZjQ3MGM0YjIsIDB4ZjNlMGViNWIsIDB4ZDZjYzk4NzYsCisJMHgzOWU0NDYwYywgMHgxZmRhODUzOCwgMHgxOTg3ODMyZiwgMHhjYTAwNzM2NywgMHhhOTkxNDRmOCwKKwkweDI5NmIyOTllLCAweDQ5MmZjMjk1LCAweDkyNjZiZWFiLAorCTB4YjU2NzZlNjksIDB4OWJkM2RkZGEsIDB4ZGY3ZTA1MmYsIDB4ZGIyNTcwMWMsIDB4MWI1ZTUxZWUsCisJMHhmNjUzMjRlNiwgMHg2YWZjZTM2YywgMHgwMzE2Y2MwNCwKKwkweDg2NDQyMTNlLCAweGI3ZGM1OWQwLCAweDc5NjUyOTFmLCAweGNjZDZmZDQzLCAweDQxODIzOTc5LAorCTB4OTMyYmNkZjYsIDB4YjY1N2MzNGQsIDB4NGVkZmQyODIsCisJMHg3YWU1MjkwYywgMHgzY2I5NTM2YiwgMHg4NTFlMjBmZSwgMHg5ODMzNTU3ZSwgMHgxM2VjZjBiMCwKKwkweGQzZmZiMzcyLCAweDNmODVjNWMxLCAweDBhZWY3ZWQyCit9OworCitzdGF0aWMgY29uc3QgdTMyIFRtWzI0XVs4XSA9IHsKKwl7IDB4NWE4Mjc5OTksIDB4Yzk1YzY1M2EsIDB4MzgzNjUwZGIsIDB4YTcxMDNjN2MsIDB4MTVlYTI4MWQsCisJCTB4ODRjNDEzYmUsIDB4ZjM5ZGZmNWYsIDB4NjI3N2ViMDAgfSAsIAorCXsgMHhkMTUxZDZhMSwgMHg0MDJiYzI0MiwgMHhhZjA1YWRlMywgMHgxZGRmOTk4NCwgMHg4Y2I5ODUyNSwKKwkJMHhmYjkzNzBjNiwgMHg2YTZkNWM2NywgMHhkOTQ3NDgwOCB9ICwKKwl7IDB4NDgyMTMzYTksIDB4YjZmYjFmNGEsIDB4MjVkNTBhZWIsIDB4OTRhZWY2OGMsIDB4MDM4OGUyMmQsCisJCTB4NzI2MmNkY2UsIDB4ZTEzY2I5NmYsIDB4NTAxNmE1MTAgfSAsCisJeyAweGJlZjA5MGIxLCAweDJkY2E3YzUyLCAweDljYTQ2N2YzLCAweDBiN2U1Mzk0LCAweDdhNTgzZjM1LAorCQkweGU5MzIyYWQ2LCAweDU4MGMxNjc3LCAweGM2ZTYwMjE4IH0gLAorCXsgMHgzNWJmZWRiOSwgMHhhNDk5ZDk1YSwgMHgxMzczYzRmYiwgMHg4MjRkYjA5YywgMHhmMTI3OWMzZCwKKwkJMHg2MDAxODdkZSwgMHhjZWRiNzM3ZiwgMHgzZGI1NWYyMCB9ICwKKwl7IDB4YWM4ZjRhYzEsIDB4MWI2OTM2NjIsIDB4OGE0MzIyMDMsIDB4ZjkxZDBkYTQsIDB4NjdmNmY5NDUsCisJCTB4ZDZkMGU0ZTYsIDB4NDVhYWQwODcsIDB4YjQ4NGJjMjggfSAsCisJeyAweDIzNWVhN2M5LCAweDkyMzg5MzZhLCAweDAxMTI3ZjBiLCAweDZmZWM2YWFjLCAweGRlYzY1NjRkLAorCQkweDRkYTA0MWVlLCAweGJjN2EyZDhmLCAweDJiNTQxOTMwIH0gLAorCXsgMHg5YTJlMDRkMSwgMHgwOTA3ZjA3MiwgMHg3N2UxZGMxMywgMHhlNmJiYzdiNCwgMHg1NTk1YjM1NSwKKwkJMHhjNDZmOWVmNiwgMHgzMzQ5OGE5NywgMHhhMjIzNzYzOCB9ICwKKwl7IDB4MTBmZDYxZDksIDB4N2ZkNzRkN2EsIDB4ZWViMTM5MWIsIDB4NWQ4YjI0YmMsIDB4Y2M2NTEwNWQsCisJCTB4M2IzZWZiZmUsIDB4YWExOGU3OWYsIDB4MThmMmQzNDAgfSAsCisJeyAweDg3Y2NiZWUxLCAweGY2YTZhYTgyLCAweDY1ODA5NjIzLCAweGQ0NWE4MWM0LCAweDQzMzQ2ZDY1LAorCQkweGIyMGU1OTA2LCAweDIwZTg0NGE3LCAweDhmYzIzMDQ4IH0gLAorCXsgMHhmZTljMWJlOSwgMHg2ZDc2MDc4YSwgMHhkYzRmZjMyYiwgMHg0YjI5ZGVjYywgMHhiYTAzY2E2ZCwKKwkJMHgyOGRkYjYwZSwgMHg5N2I3YTFhZiwgMHgwNjkxOGQ1MCB9ICwKKwl7IDB4NzU2Yjc4ZjEsIDB4ZTQ0NTY0OTIsIDB4NTMxZjUwMzMsIDB4YzFmOTNiZDQsIDB4MzBkMzI3NzUsCisJCTB4OWZhZDEzMTYsIDB4MGU4NmZlYjcsIDB4N2Q2MGVhNTggfSAsCisJeyAweGVjM2FkNWY5LCAweDViMTRjMTlhLCAweGM5ZWVhZDNiLCAweDM4Yzg5OGRjLCAweGE3YTI4NDdkLAorCQkweDE2N2M3MDFlLCAweDg1NTY1YmJmLCAweGY0MzA0NzYwIH0gLAorCXsgMHg2MzBhMzMwMSwgMHhkMWU0MWVhMiwgMHg0MGJlMGE0MywgMHhhZjk3ZjVlNCwgMHgxZTcxZTE4NSwKKwkJMHg4ZDRiY2QyNiwgMHhmYzI1YjhjNywgMHg2YWZmYTQ2OCB9ICwKKwl7IDB4ZDlkOTkwMDksIDB4NDhiMzdiYWEsIDB4Yjc4ZDY3NGIsIDB4MjY2NzUyZWMsIDB4OTU0MTNlOGQsCisJCTB4MDQxYjJhMmUsIDB4NzJmNTE1Y2YsIDB4ZTFjZjAxNzAgfSAsCisJeyAweDUwYThlZDExLCAweGJmODJkOGIyLCAweDJlNWNjNDUzLCAweDlkMzZhZmY0LCAweDBjMTA5Yjk1LAorCQkweDdhZWE4NzM2LCAweGU5YzQ3MmQ3LCAweDU4OWU1ZTc4IH0gLAorCXsgMHhjNzc4NGExOSwgMHgzNjUyMzViYSwgMHhhNTJjMjE1YiwgMHgxNDA2MGNmYywgMHg4MmRmZjg5ZCwKKwkJMHhmMWI5ZTQzZSwgMHg2MDkzY2ZkZiwgMHhjZjZkYmI4MCB9ICwKKwl7IDB4M2U0N2E3MjEsIDB4YWQyMTkyYzIsIDB4MWJmYjdlNjMsIDB4OGFkNTZhMDQsIDB4ZjlhZjU1YTUsCisJCTB4Njg4OTQxNDYsIDB4ZDc2MzJjZTcsIDB4NDYzZDE4ODggfSAsCisJeyAweGI1MTcwNDI5LCAweDIzZjBlZmNhLCAweDkyY2FkYjZiLCAweDAxYTRjNzBjLCAweDcwN2ViMmFkLAorCQkweGRmNTg5ZTRlLCAweDRlMzI4OWVmLCAweGJkMGM3NTkwIH0gLAorCXsgMHgyYmU2NjEzMSwgMHg5YWMwNGNkMiwgMHgwOTlhMzg3MywgMHg3ODc0MjQxNCwgMHhlNzRlMGZiNSwKKwkJMHg1NjI3ZmI1NiwgMHhjNTAxZTZmNywgMHgzM2RiZDI5OCB9ICwKKwl7IDB4YTJiNWJlMzksIDB4MTE4ZmE5ZGEsIDB4ODA2OTk1N2IsIDB4ZWY0MzgxMWMsIDB4NWUxZDZjYmQsCisJCTB4Y2NmNzU4NWUsIDB4M2JkMTQzZmYsIDB4YWFhYjJmYTAgfSAsCisJeyAweDE5ODUxYjQxLCAweDg4NWYwNmUyLCAweGY3MzhmMjgzLCAweDY2MTJkZTI0LCAweGQ0ZWNjOWM1LAorCQkweDQzYzZiNTY2LCAweGIyYTBhMTA3LCAweDIxN2E4Y2E4IH0gLAorCXsgMHg5MDU0Nzg0OSwgMHhmZjJlNjNlYSwgMHg2ZTA4NGY4YiwgMHhkY2UyM2IyYywgMHg0YmJjMjZjZCwKKwkJMHhiYTk2MTI2ZSwgMHgyOTZmZmUwZiwgMHg5ODQ5ZTliMCB9ICwKKwl7IDB4MDcyM2Q1NTEsIDB4NzVmZGMwZjIsIDB4ZTRkN2FjOTMsIDB4NTNiMTk4MzQsIDB4YzI4YjgzZDUsCisJCTB4MzE2NTZmNzYsIDB4YTAzZjViMTcsIDB4MGYxOTQ2YjggfQorfTsKKworc3RhdGljIGNvbnN0IHU4IFRyWzRdWzhdID0geworCXsgMHgxMywgMHgwNCwgMHgxNSwgMHgwNiwgMHgxNywgMHgwOCwgMHgxOSwgMHgwYSB9ICwKKwl7IDB4MWIsIDB4MGMsIDB4MWQsIDB4MGUsIDB4MWYsIDB4MTAsIDB4MDEsIDB4MTIgfSAsCisJeyAweDAzLCAweDE0LCAweDA1LCAweDE2LCAweDA3LCAweDE4LCAweDA5LCAweDFhIH0gLAorCXsgMHgwYiwgMHgxYywgMHgwZCwgMHgxZSwgMHgwZiwgMHgwMCwgMHgxMSwgMHgwMiB9Cit9OworCisvKiBmb3J3YXJkIG9jdGF2ZSAqLworc3RhdGljIGlubGluZSB2b2lkIFcodTMyICprZXksIHVuc2lnbmVkIGludCBpKSB7CisJdTMyIEk7CisJa2V5WzZdIF49IEYxKGtleVs3XSwgVHJbaSAlIDRdWzBdLCBUbVtpXVswXSk7CisJa2V5WzVdIF49IEYyKGtleVs2XSwgVHJbaSAlIDRdWzFdLCBUbVtpXVsxXSk7CisJa2V5WzRdIF49IEYzKGtleVs1XSwgVHJbaSAlIDRdWzJdLCBUbVtpXVsyXSk7CisJa2V5WzNdIF49IEYxKGtleVs0XSwgVHJbaSAlIDRdWzNdLCBUbVtpXVszXSk7CisJa2V5WzJdIF49IEYyKGtleVszXSwgVHJbaSAlIDRdWzRdLCBUbVtpXVs0XSk7CisJa2V5WzFdIF49IEYzKGtleVsyXSwgVHJbaSAlIDRdWzVdLCBUbVtpXVs1XSk7CisJa2V5WzBdIF49IEYxKGtleVsxXSwgVHJbaSAlIDRdWzZdLCBUbVtpXVs2XSk7CQorCWtleVs3XSBePSBGMihrZXlbMF0sIFRyW2kgJSA0XVs3XSwgVG1baV1bN10pOworfQorCitzdGF0aWMgaW50CitjYXN0Nl9zZXRrZXkodm9pZCAqY3R4LCBjb25zdCB1OCAqIGluX2tleSwgdW5zaWduZWQga2V5X2xlbiwgdTMyICogZmxhZ3MpCit7CisJaW50IGk7CisJdTMyIGtleVs4XTsKKwl1OCBwX2tleVszMl07IC8qIHBhZGRlZCBrZXkgKi8KKwlzdHJ1Y3QgY2FzdDZfY3R4ICpjID0gKHN0cnVjdCBjYXN0Nl9jdHggKikgY3R4OworCisJaWYgKGtleV9sZW4gPCAxNiB8fCBrZXlfbGVuID4gMzIgfHwga2V5X2xlbiAlIDQgIT0gMCkgeworCQkqZmxhZ3MgfD0gQ1JZUFRPX1RGTV9SRVNfQkFEX0tFWV9MRU47CisJCXJldHVybiAtRUlOVkFMOworCX0JCisKKwltZW1zZXQgKHBfa2V5LCAwLCAzMik7CisJbWVtY3B5IChwX2tleSwgaW5fa2V5LCBrZXlfbGVuKTsKKwkKKwlrZXlbMF0gPSBwX2tleVswXSA8PCAyNCB8IHBfa2V5WzFdIDw8IDE2IHwgcF9rZXlbMl0gPDwgOCB8IHBfa2V5WzNdOwkJLyogQSAqLworCWtleVsxXSA9IHBfa2V5WzRdIDw8IDI0IHwgcF9rZXlbNV0gPDwgMTYgfCBwX2tleVs2XSA8PCA4IHwgcF9rZXlbN107CQkvKiBCICovCisJa2V5WzJdID0gcF9rZXlbOF0gPDwgMjQgfCBwX2tleVs5XSA8PCAxNiB8IHBfa2V5WzEwXSA8PCA4IHwgcF9rZXlbMTFdOwkJLyogQyAqLworCWtleVszXSA9IHBfa2V5WzEyXSA8PCAyNCB8IHBfa2V5WzEzXSA8PCAxNiB8IHBfa2V5WzE0XSA8PCA4IHwgcF9rZXlbMTVdOwkvKiBEICovCisJa2V5WzRdID0gcF9rZXlbMTZdIDw8IDI0IHwgcF9rZXlbMTddIDw8IDE2IHwgcF9rZXlbMThdIDw8IDggfCBwX2tleVsxOV07CS8qIEUgKi8KKwlrZXlbNV0gPSBwX2tleVsyMF0gPDwgMjQgfCBwX2tleVsyMV0gPDwgMTYgfCBwX2tleVsyMl0gPDwgOCB8IHBfa2V5WzIzXTsJLyogRiAqLworCWtleVs2XSA9IHBfa2V5WzI0XSA8PCAyNCB8IHBfa2V5WzI1XSA8PCAxNiB8IHBfa2V5WzI2XSA8PCA4IHwgcF9rZXlbMjddOwkvKiBHICovCisJa2V5WzddID0gcF9rZXlbMjhdIDw8IDI0IHwgcF9rZXlbMjldIDw8IDE2IHwgcF9rZXlbMzBdIDw8IDggfCBwX2tleVszMV07CS8qIEggKi8KKwkKKworCisJZm9yIChpID0gMDsgaSA8IDEyOyBpKyspIHsKKwkJVyAoa2V5LCAyICogaSk7CisJCVcgKGtleSwgMiAqIGkgKyAxKTsKKwkJCisJCWMtPktyW2ldWzBdID0ga2V5WzBdICYgMHgxZjsKKwkJYy0+S3JbaV1bMV0gPSBrZXlbMl0gJiAweDFmOworCQljLT5LcltpXVsyXSA9IGtleVs0XSAmIDB4MWY7CisJCWMtPktyW2ldWzNdID0ga2V5WzZdICYgMHgxZjsKKwkJCisJCWMtPkttW2ldWzBdID0ga2V5WzddOworCQljLT5LbVtpXVsxXSA9IGtleVs1XTsKKwkJYy0+S21baV1bMl0gPSBrZXlbM107CisJCWMtPkttW2ldWzNdID0ga2V5WzFdOworCX0KKworCXJldHVybiAwOworfQorCisvKmZvcndhcmQgcXVhZCByb3VuZCovCitzdGF0aWMgaW5saW5lIHZvaWQgUSAodTMyICogYmxvY2ssIHU4ICogS3IsIHUzMiAqIEttKSB7CisJdTMyIEk7CisJYmxvY2tbMl0gXj0gRjEoYmxvY2tbM10sIEtyWzBdLCBLbVswXSk7CisJYmxvY2tbMV0gXj0gRjIoYmxvY2tbMl0sIEtyWzFdLCBLbVsxXSk7CisJYmxvY2tbMF0gXj0gRjMoYmxvY2tbMV0sIEtyWzJdLCBLbVsyXSk7CisJYmxvY2tbM10gXj0gRjEoYmxvY2tbMF0sIEtyWzNdLCBLbVszXSk7CQkKK30KKworLypyZXZlcnNlIHF1YWQgcm91bmQqLworc3RhdGljIGlubGluZSB2b2lkIFFCQVIgKHUzMiAqIGJsb2NrLCB1OCAqIEtyLCB1MzIgKiBLbSkgeworCXUzMiBJOworICAgICAgICBibG9ja1szXSBePSBGMShibG9ja1swXSwgS3JbM10sIEttWzNdKTsKKyAgICAgICAgYmxvY2tbMF0gXj0gRjMoYmxvY2tbMV0sIEtyWzJdLCBLbVsyXSk7CisgICAgICAgIGJsb2NrWzFdIF49IEYyKGJsb2NrWzJdLCBLclsxXSwgS21bMV0pOworICAgICAgICBibG9ja1syXSBePSBGMShibG9ja1szXSwgS3JbMF0sIEttWzBdKTsKK30KKworc3RhdGljIHZvaWQgY2FzdDZfZW5jcnlwdCAodm9pZCAqIGN0eCwgdTggKiBvdXRidWYsIGNvbnN0IHU4ICogaW5idWYpIHsKKwlzdHJ1Y3QgY2FzdDZfY3R4ICogYyA9IChzdHJ1Y3QgY2FzdDZfY3R4ICopY3R4OworCXUzMiBibG9ja1s0XTsKKwl1MzIgKiBLbTsgCisJdTggKiBLcjsKKworCWJsb2NrWzBdID0gaW5idWZbMF0gPDwgMjQgfCBpbmJ1ZlsxXSA8PCAxNiB8IGluYnVmWzJdIDw8IDggfCBpbmJ1ZlszXTsKKwlibG9ja1sxXSA9IGluYnVmWzRdIDw8IDI0IHwgaW5idWZbNV0gPDwgMTYgfCBpbmJ1Zls2XSA8PCA4IHwgaW5idWZbN107CisJYmxvY2tbMl0gPSBpbmJ1Zls4XSA8PCAyNCB8IGluYnVmWzldIDw8IDE2IHwgaW5idWZbMTBdIDw8IDggfCBpbmJ1ZlsxMV07CisJYmxvY2tbM10gPSBpbmJ1ZlsxMl0gPDwgMjQgfCBpbmJ1ZlsxM10gPDwgMTYgfCBpbmJ1ZlsxNF0gPDwgOCB8IGluYnVmWzE1XTsKKworCUttID0gYy0+S21bMF07IEtyID0gYy0+S3JbMF07IFEgKGJsb2NrLCBLciwgS20pOworCUttID0gYy0+S21bMV07IEtyID0gYy0+S3JbMV07IFEgKGJsb2NrLCBLciwgS20pOworCUttID0gYy0+S21bMl07IEtyID0gYy0+S3JbMl07IFEgKGJsb2NrLCBLciwgS20pOworCUttID0gYy0+S21bM107IEtyID0gYy0+S3JbM107IFEgKGJsb2NrLCBLciwgS20pOworCUttID0gYy0+S21bNF07IEtyID0gYy0+S3JbNF07IFEgKGJsb2NrLCBLciwgS20pOworCUttID0gYy0+S21bNV07IEtyID0gYy0+S3JbNV07IFEgKGJsb2NrLCBLciwgS20pOworCUttID0gYy0+S21bNl07IEtyID0gYy0+S3JbNl07IFFCQVIgKGJsb2NrLCBLciwgS20pOworCUttID0gYy0+S21bN107IEtyID0gYy0+S3JbN107IFFCQVIgKGJsb2NrLCBLciwgS20pOworCUttID0gYy0+S21bOF07IEtyID0gYy0+S3JbOF07IFFCQVIgKGJsb2NrLCBLciwgS20pOworCUttID0gYy0+S21bOV07IEtyID0gYy0+S3JbOV07IFFCQVIgKGJsb2NrLCBLciwgS20pOworCUttID0gYy0+S21bMTBdOyBLciA9IGMtPktyWzEwXTsgUUJBUiAoYmxvY2ssIEtyLCBLbSk7CisJS20gPSBjLT5LbVsxMV07IEtyID0gYy0+S3JbMTFdOyBRQkFSIChibG9jaywgS3IsIEttKTsKKwkKKwlvdXRidWZbMF0gPSAoYmxvY2tbMF0gPj4gMjQpICYgMHhmZjsKKwlvdXRidWZbMV0gPSAoYmxvY2tbMF0gPj4gMTYpICYgMHhmZjsKKwlvdXRidWZbMl0gPSAoYmxvY2tbMF0gPj4gOCkgJiAweGZmOworCW91dGJ1ZlszXSA9IGJsb2NrWzBdICYgMHhmZjsKKwlvdXRidWZbNF0gPSAoYmxvY2tbMV0gPj4gMjQpICYgMHhmZjsKKwlvdXRidWZbNV0gPSAoYmxvY2tbMV0gPj4gMTYpICYgMHhmZjsKKwlvdXRidWZbNl0gPSAoYmxvY2tbMV0gPj4gOCkgJiAweGZmOworCW91dGJ1Zls3XSA9IGJsb2NrWzFdICYgMHhmZjsKKwlvdXRidWZbOF0gPSAoYmxvY2tbMl0gPj4gMjQpICYgMHhmZjsKKwlvdXRidWZbOV0gPSAoYmxvY2tbMl0gPj4gMTYpICYgMHhmZjsKKwlvdXRidWZbMTBdID0gKGJsb2NrWzJdID4+IDgpICYgMHhmZjsKKwlvdXRidWZbMTFdID0gYmxvY2tbMl0gJiAweGZmOworCW91dGJ1ZlsxMl0gPSAoYmxvY2tbM10gPj4gMjQpICYgMHhmZjsKKwlvdXRidWZbMTNdID0gKGJsb2NrWzNdID4+IDE2KSAmIDB4ZmY7CisJb3V0YnVmWzE0XSA9IChibG9ja1szXSA+PiA4KSAmIDB4ZmY7CisJb3V0YnVmWzE1XSA9IGJsb2NrWzNdICYgMHhmZjsJCit9CQorCitzdGF0aWMgdm9pZCBjYXN0Nl9kZWNyeXB0ICh2b2lkICogY3R4LCB1OCAqIG91dGJ1ZiwgY29uc3QgdTggKiBpbmJ1ZikgeworCXN0cnVjdCBjYXN0Nl9jdHggKiBjID0gKHN0cnVjdCBjYXN0Nl9jdHggKiljdHg7CisJdTMyIGJsb2NrWzRdOworCXUzMiAqIEttOyAKKwl1OCAqIEtyOworCisJYmxvY2tbMF0gPSBpbmJ1ZlswXSA8PCAyNCB8IGluYnVmWzFdIDw8IDE2IHwgaW5idWZbMl0gPDwgOCB8IGluYnVmWzNdOworCWJsb2NrWzFdID0gaW5idWZbNF0gPDwgMjQgfCBpbmJ1Zls1XSA8PCAxNiB8IGluYnVmWzZdIDw8IDggfCBpbmJ1Zls3XTsKKwlibG9ja1syXSA9IGluYnVmWzhdIDw8IDI0IHwgaW5idWZbOV0gPDwgMTYgfCBpbmJ1ZlsxMF0gPDwgOCB8IGluYnVmWzExXTsKKwlibG9ja1szXSA9IGluYnVmWzEyXSA8PCAyNCB8IGluYnVmWzEzXSA8PCAxNiB8IGluYnVmWzE0XSA8PCA4IHwgaW5idWZbMTVdOworCisJS20gPSBjLT5LbVsxMV07IEtyID0gYy0+S3JbMTFdOyBRIChibG9jaywgS3IsIEttKTsKKwlLbSA9IGMtPkttWzEwXTsgS3IgPSBjLT5LclsxMF07IFEgKGJsb2NrLCBLciwgS20pOworCUttID0gYy0+S21bOV07IEtyID0gYy0+S3JbOV07IFEgKGJsb2NrLCBLciwgS20pOworCUttID0gYy0+S21bOF07IEtyID0gYy0+S3JbOF07IFEgKGJsb2NrLCBLciwgS20pOworCUttID0gYy0+S21bN107IEtyID0gYy0+S3JbN107IFEgKGJsb2NrLCBLciwgS20pOworCUttID0gYy0+S21bNl07IEtyID0gYy0+S3JbNl07IFEgKGJsb2NrLCBLciwgS20pOworCUttID0gYy0+S21bNV07IEtyID0gYy0+S3JbNV07IFFCQVIgKGJsb2NrLCBLciwgS20pOworCUttID0gYy0+S21bNF07IEtyID0gYy0+S3JbNF07IFFCQVIgKGJsb2NrLCBLciwgS20pOworCUttID0gYy0+S21bM107IEtyID0gYy0+S3JbM107IFFCQVIgKGJsb2NrLCBLciwgS20pOworCUttID0gYy0+S21bMl07IEtyID0gYy0+S3JbMl07IFFCQVIgKGJsb2NrLCBLciwgS20pOworCUttID0gYy0+S21bMV07IEtyID0gYy0+S3JbMV07IFFCQVIgKGJsb2NrLCBLciwgS20pOworCUttID0gYy0+S21bMF07IEtyID0gYy0+S3JbMF07IFFCQVIgKGJsb2NrLCBLciwgS20pOworCQorCW91dGJ1ZlswXSA9IChibG9ja1swXSA+PiAyNCkgJiAweGZmOworCW91dGJ1ZlsxXSA9IChibG9ja1swXSA+PiAxNikgJiAweGZmOworCW91dGJ1ZlsyXSA9IChibG9ja1swXSA+PiA4KSAmIDB4ZmY7CisJb3V0YnVmWzNdID0gYmxvY2tbMF0gJiAweGZmOworCW91dGJ1Zls0XSA9IChibG9ja1sxXSA+PiAyNCkgJiAweGZmOworCW91dGJ1Zls1XSA9IChibG9ja1sxXSA+PiAxNikgJiAweGZmOworCW91dGJ1Zls2XSA9IChibG9ja1sxXSA+PiA4KSAmIDB4ZmY7CisJb3V0YnVmWzddID0gYmxvY2tbMV0gJiAweGZmOworCW91dGJ1Zls4XSA9IChibG9ja1syXSA+PiAyNCkgJiAweGZmOworCW91dGJ1Zls5XSA9IChibG9ja1syXSA+PiAxNikgJiAweGZmOworCW91dGJ1ZlsxMF0gPSAoYmxvY2tbMl0gPj4gOCkgJiAweGZmOworCW91dGJ1ZlsxMV0gPSBibG9ja1syXSAmIDB4ZmY7CisJb3V0YnVmWzEyXSA9IChibG9ja1szXSA+PiAyNCkgJiAweGZmOworCW91dGJ1ZlsxM10gPSAoYmxvY2tbM10gPj4gMTYpICYgMHhmZjsKKwlvdXRidWZbMTRdID0gKGJsb2NrWzNdID4+IDgpICYgMHhmZjsKKwlvdXRidWZbMTVdID0gYmxvY2tbM10gJiAweGZmOwkKK30JCisKK3N0YXRpYyBzdHJ1Y3QgY3J5cHRvX2FsZyBhbGcgPSB7CisJLmNyYV9uYW1lID0gImNhc3Q2IiwKKwkuY3JhX2ZsYWdzID0gQ1JZUFRPX0FMR19UWVBFX0NJUEhFUiwKKwkuY3JhX2Jsb2Nrc2l6ZSA9IENBU1Q2X0JMT0NLX1NJWkUsCisJLmNyYV9jdHhzaXplID0gc2l6ZW9mKHN0cnVjdCBjYXN0Nl9jdHgpLAorCS5jcmFfbW9kdWxlID0gVEhJU19NT0RVTEUsCisJLmNyYV9saXN0ID0gTElTVF9IRUFEX0lOSVQoYWxnLmNyYV9saXN0KSwKKwkuY3JhX3UgPSB7CisJCSAgLmNpcGhlciA9IHsKKwkJCSAgICAgLmNpYV9taW5fa2V5c2l6ZSA9IENBU1Q2X01JTl9LRVlfU0laRSwKKwkJCSAgICAgLmNpYV9tYXhfa2V5c2l6ZSA9IENBU1Q2X01BWF9LRVlfU0laRSwKKwkJCSAgICAgLmNpYV9zZXRrZXkgPSBjYXN0Nl9zZXRrZXksCisJCQkgICAgIC5jaWFfZW5jcnlwdCA9IGNhc3Q2X2VuY3J5cHQsCisJCQkgICAgIC5jaWFfZGVjcnlwdCA9IGNhc3Q2X2RlY3J5cHR9CisJCSAgfQorfTsKKworc3RhdGljIGludCBfX2luaXQgaW5pdCh2b2lkKQoreworCXJldHVybiBjcnlwdG9fcmVnaXN0ZXJfYWxnKCZhbGcpOworfQorCitzdGF0aWMgdm9pZCBfX2V4aXQgZmluaSh2b2lkKQoreworCWNyeXB0b191bnJlZ2lzdGVyX2FsZygmYWxnKTsKK30KKworbW9kdWxlX2luaXQoaW5pdCk7Cittb2R1bGVfZXhpdChmaW5pKTsKKworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0RFU0NSSVBUSU9OKCJDYXN0NiBDaXBoZXIgQWxnb3JpdGhtIik7CmRpZmYgLS1naXQgYS9jcnlwdG8vY2lwaGVyLmMgYi9jcnlwdG8vY2lwaGVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQzNGNlNwotLS0gL2Rldi9udWxsCisrKyBiL2NyeXB0by9jaXBoZXIuYwpAQCAtMCwwICsxLDM0MSBAQAorLyoKKyAqIENyeXB0b2dyYXBoaWMgQVBJLgorICoKKyAqIENpcGhlciBvcGVyYXRpb25zLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwMiBKYW1lcyBNb3JyaXMgPGptb3JyaXNAaW50ZXJjb2RlLmNvbS5hdT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKKyAqIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgCisgKiBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKi8KKyNpbmNsdWRlIDxsaW51eC9jb21waWxlci5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L2NyeXB0by5oPgorI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+CisjaW5jbHVkZSA8bGludXgvbW0uaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+CisjaW5jbHVkZSA8YXNtL3NjYXR0ZXJsaXN0Lmg+CisjaW5jbHVkZSAiaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJzY2F0dGVyd2Fsay5oIgorCit0eXBlZGVmIHZvaWQgKGNyeXB0Zm5fdCkodm9pZCAqLCB1OCAqLCBjb25zdCB1OCAqKTsKK3R5cGVkZWYgdm9pZCAocHJvY2ZuX3QpKHN0cnVjdCBjcnlwdG9fdGZtICosIHU4ICosCisgICAgICAgICAgICAgICAgICAgICAgICB1OCosIGNyeXB0Zm5fdCwgdm9pZCAqKTsKKworc3RhdGljIGlubGluZSB2b2lkIHhvcl82NCh1OCAqYSwgY29uc3QgdTggKmIpCit7CisJKCh1MzIgKilhKVswXSBePSAoKHUzMiAqKWIpWzBdOworCSgodTMyICopYSlbMV0gXj0gKCh1MzIgKiliKVsxXTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHhvcl8xMjgodTggKmEsIGNvbnN0IHU4ICpiKQoreworCSgodTMyICopYSlbMF0gXj0gKCh1MzIgKiliKVswXTsKKwkoKHUzMiAqKWEpWzFdIF49ICgodTMyICopYilbMV07CisJKCh1MzIgKilhKVsyXSBePSAoKHUzMiAqKWIpWzJdOworCSgodTMyICopYSlbM10gXj0gKCh1MzIgKiliKVszXTsKK30KKyAKK3N0YXRpYyBpbmxpbmUgdm9pZCAqcHJlcGFyZV9zcmMoc3RydWN0IHNjYXR0ZXJfd2FsayAqd2FsaywgaW50IGJzaXplLAorCQkJCXZvaWQgKnRtcCwgaW50IGluX3BsYWNlKQoreworCXZvaWQgKnNyYyA9IHdhbGstPmRhdGE7CisJaW50IG4gPSBic2l6ZTsKKworCWlmICh1bmxpa2VseShzY2F0dGVyd2Fsa19hY3Jvc3NfcGFnZXMod2FsaywgYnNpemUpKSkgeworCQlzcmMgPSB0bXA7CisJCW4gPSBzY2F0dGVyd2Fsa19jb3B5Y2h1bmtzKHNyYywgd2FsaywgYnNpemUsIDApOworCX0KKwlzY2F0dGVyd2Fsa19hZHZhbmNlKHdhbGssIG4pOworCXJldHVybiBzcmM7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCAqcHJlcGFyZV9kc3Qoc3RydWN0IHNjYXR0ZXJfd2FsayAqd2FsaywgaW50IGJzaXplLAorCQkJCXZvaWQgKnRtcCwgaW50IGluX3BsYWNlKQoreworCXZvaWQgKmRzdCA9IHdhbGstPmRhdGE7CisKKwlpZiAodW5saWtlbHkoc2NhdHRlcndhbGtfYWNyb3NzX3BhZ2VzKHdhbGssIGJzaXplKSkgfHwgaW5fcGxhY2UpCisJCWRzdCA9IHRtcDsKKwlyZXR1cm4gZHN0OworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgY29tcGxldGVfc3JjKHN0cnVjdCBzY2F0dGVyX3dhbGsgKndhbGssIGludCBic2l6ZSwKKwkJCQl2b2lkICpzcmMsIGludCBpbl9wbGFjZSkKK3sKK30KKworc3RhdGljIGlubGluZSB2b2lkIGNvbXBsZXRlX2RzdChzdHJ1Y3Qgc2NhdHRlcl93YWxrICp3YWxrLCBpbnQgYnNpemUsCisJCQkJdm9pZCAqZHN0LCBpbnQgaW5fcGxhY2UpCit7CisJaW50IG4gPSBic2l6ZTsKKworCWlmICh1bmxpa2VseShzY2F0dGVyd2Fsa19hY3Jvc3NfcGFnZXMod2FsaywgYnNpemUpKSkKKwkJbiA9IHNjYXR0ZXJ3YWxrX2NvcHljaHVua3MoZHN0LCB3YWxrLCBic2l6ZSwgMSk7CisJZWxzZSBpZiAoaW5fcGxhY2UpCisJCW1lbWNweSh3YWxrLT5kYXRhLCBkc3QsIGJzaXplKTsKKwlzY2F0dGVyd2Fsa19hZHZhbmNlKHdhbGssIG4pOworfQorCisvKiAKKyAqIEdlbmVyaWMgZW5jcnlwdC9kZWNyeXB0IHdyYXBwZXIgZm9yIGNpcGhlcnMsIGhhbmRsZXMgb3BlcmF0aW9ucyBhY3Jvc3MKKyAqIG11bHRpcGxlIHBhZ2UgYm91bmRhcmllcyBieSB1c2luZyB0ZW1wb3JhcnkgYmxvY2tzLiAgSW4gdXNlciBjb250ZXh0LAorICogdGhlIGtlcm5lbCBpcyBnaXZlbiBhIGNoYW5jZSB0byBzY2hlZHVsZSB1cyBvbmNlIHBlciBibG9jay4KKyAqLworc3RhdGljIGludCBjcnlwdChzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtLAorCQkgc3RydWN0IHNjYXR0ZXJsaXN0ICpkc3QsCisJCSBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNyYywKKyAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG5ieXRlcywgY3J5cHRmbl90IGNyZm4sCisgICAgICAgICAgICAgICAgIHByb2Nmbl90IHByZm4sIHZvaWQgKmluZm8pCit7CisJc3RydWN0IHNjYXR0ZXJfd2FsayB3YWxrX2luLCB3YWxrX291dDsKKwljb25zdCB1bnNpZ25lZCBpbnQgYnNpemUgPSBjcnlwdG9fdGZtX2FsZ19ibG9ja3NpemUodGZtKTsKKwl1OCB0bXBfc3JjW2JzaXplXTsKKwl1OCB0bXBfZHN0W2JzaXplXTsKKworCWlmICghbmJ5dGVzKQorCQlyZXR1cm4gMDsKKworCWlmIChuYnl0ZXMgJSBic2l6ZSkgeworCQl0Zm0tPmNydF9mbGFncyB8PSBDUllQVE9fVEZNX1JFU19CQURfQkxPQ0tfTEVOOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlzY2F0dGVyd2Fsa19zdGFydCgmd2Fsa19pbiwgc3JjKTsKKwlzY2F0dGVyd2Fsa19zdGFydCgmd2Fsa19vdXQsIGRzdCk7CisKKwlmb3IoOzspIHsKKwkJdTggKnNyY19wLCAqZHN0X3A7CisJCWludCBpbl9wbGFjZTsKKworCQlzY2F0dGVyd2Fsa19tYXAoJndhbGtfaW4sIDApOworCQlzY2F0dGVyd2Fsa19tYXAoJndhbGtfb3V0LCAxKTsKKworCQlpbl9wbGFjZSA9IHNjYXR0ZXJ3YWxrX3NhbWVidWYoJndhbGtfaW4sICZ3YWxrX291dCk7CisKKwkJZG8geworCQkJc3JjX3AgPSBwcmVwYXJlX3NyYygmd2Fsa19pbiwgYnNpemUsIHRtcF9zcmMsCisJCQkJCSAgICBpbl9wbGFjZSk7CisJCQlkc3RfcCA9IHByZXBhcmVfZHN0KCZ3YWxrX291dCwgYnNpemUsIHRtcF9kc3QsCisJCQkJCSAgICBpbl9wbGFjZSk7CisKKwkJCXByZm4odGZtLCBkc3RfcCwgc3JjX3AsIGNyZm4sIGluZm8pOworCisJCQljb21wbGV0ZV9zcmMoJndhbGtfaW4sIGJzaXplLCBzcmNfcCwgaW5fcGxhY2UpOworCQkJY29tcGxldGVfZHN0KCZ3YWxrX291dCwgYnNpemUsIGRzdF9wLCBpbl9wbGFjZSk7CisKKwkJCW5ieXRlcyAtPSBic2l6ZTsKKwkJfSB3aGlsZSAobmJ5dGVzICYmCisJCQkgIXNjYXR0ZXJ3YWxrX2Fjcm9zc19wYWdlcygmd2Fsa19pbiwgYnNpemUpICYmCisJCQkgIXNjYXR0ZXJ3YWxrX2Fjcm9zc19wYWdlcygmd2Fsa19vdXQsIGJzaXplKSk7CisKKwkJc2NhdHRlcndhbGtfZG9uZSgmd2Fsa19pbiwgMCwgbmJ5dGVzKTsKKwkJc2NhdHRlcndhbGtfZG9uZSgmd2Fsa19vdXQsIDEsIG5ieXRlcyk7CisKKwkJaWYgKCFuYnl0ZXMpCisJCQlyZXR1cm4gMDsKKworCQljcnlwdG9feWllbGQodGZtKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGNiY19wcm9jZXNzX2VuY3J5cHQoc3RydWN0IGNyeXB0b190Zm0gKnRmbSwgdTggKmRzdCwgdTggKnNyYywKKwkJCQljcnlwdGZuX3QgZm4sIHZvaWQgKmluZm8pCit7CisJdTggKml2ID0gaW5mbzsKKworCXRmbS0+Y3J0X3UuY2lwaGVyLmNpdF94b3JfYmxvY2soaXYsIHNyYyk7CisJZm4oY3J5cHRvX3RmbV9jdHgodGZtKSwgZHN0LCBpdik7CisJbWVtY3B5KGl2LCBkc3QsIGNyeXB0b190Zm1fYWxnX2Jsb2Nrc2l6ZSh0Zm0pKTsKK30KKworc3RhdGljIHZvaWQgY2JjX3Byb2Nlc3NfZGVjcnlwdChzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtLCB1OCAqZHN0LCB1OCAqc3JjLAorCQkJCWNyeXB0Zm5fdCBmbiwgdm9pZCAqaW5mbykKK3sKKwl1OCAqaXYgPSBpbmZvOworCisJZm4oY3J5cHRvX3RmbV9jdHgodGZtKSwgZHN0LCBzcmMpOworCXRmbS0+Y3J0X3UuY2lwaGVyLmNpdF94b3JfYmxvY2soZHN0LCBpdik7CisJbWVtY3B5KGl2LCBzcmMsIGNyeXB0b190Zm1fYWxnX2Jsb2Nrc2l6ZSh0Zm0pKTsKK30KKworc3RhdGljIHZvaWQgZWNiX3Byb2Nlc3Moc3RydWN0IGNyeXB0b190Zm0gKnRmbSwgdTggKmRzdCwgdTggKnNyYywKKwkJCWNyeXB0Zm5fdCBmbiwgdm9pZCAqaW5mbykKK3sKKwlmbihjcnlwdG9fdGZtX2N0eCh0Zm0pLCBkc3QsIHNyYyk7Cit9CisKK3N0YXRpYyBpbnQgc2V0a2V5KHN0cnVjdCBjcnlwdG9fdGZtICp0Zm0sIGNvbnN0IHU4ICprZXksIHVuc2lnbmVkIGludCBrZXlsZW4pCit7CisJc3RydWN0IGNpcGhlcl9hbGcgKmNpYSA9ICZ0Zm0tPl9fY3J0X2FsZy0+Y3JhX2NpcGhlcjsKKwkKKwlpZiAoa2V5bGVuIDwgY2lhLT5jaWFfbWluX2tleXNpemUgfHwga2V5bGVuID4gY2lhLT5jaWFfbWF4X2tleXNpemUpIHsKKwkJdGZtLT5jcnRfZmxhZ3MgfD0gQ1JZUFRPX1RGTV9SRVNfQkFEX0tFWV9MRU47CisJCXJldHVybiAtRUlOVkFMOworCX0gZWxzZQorCQlyZXR1cm4gY2lhLT5jaWFfc2V0a2V5KGNyeXB0b190Zm1fY3R4KHRmbSksIGtleSwga2V5bGVuLAorCQkgICAgICAgICAgICAgICAgICAgICAgICZ0Zm0tPmNydF9mbGFncyk7Cit9CisKK3N0YXRpYyBpbnQgZWNiX2VuY3J5cHQoc3RydWN0IGNyeXB0b190Zm0gKnRmbSwKKwkJICAgICAgIHN0cnVjdCBzY2F0dGVybGlzdCAqZHN0LAorICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNyYywgdW5zaWduZWQgaW50IG5ieXRlcykKK3sKKwlyZXR1cm4gY3J5cHQodGZtLCBkc3QsIHNyYywgbmJ5dGVzLAorCSAgICAgICAgICAgICB0Zm0tPl9fY3J0X2FsZy0+Y3JhX2NpcGhlci5jaWFfZW5jcnlwdCwKKwkgICAgICAgICAgICAgZWNiX3Byb2Nlc3MsIE5VTEwpOworfQorCitzdGF0aWMgaW50IGVjYl9kZWNyeXB0KHN0cnVjdCBjcnlwdG9fdGZtICp0Zm0sCisgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY2F0dGVybGlzdCAqZHN0LAorICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNyYywKKwkJICAgICAgIHVuc2lnbmVkIGludCBuYnl0ZXMpCit7CisJcmV0dXJuIGNyeXB0KHRmbSwgZHN0LCBzcmMsIG5ieXRlcywKKwkgICAgICAgICAgICAgdGZtLT5fX2NydF9hbGctPmNyYV9jaXBoZXIuY2lhX2RlY3J5cHQsCisJICAgICAgICAgICAgIGVjYl9wcm9jZXNzLCBOVUxMKTsKK30KKworc3RhdGljIGludCBjYmNfZW5jcnlwdChzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtLAorICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKmRzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNjYXR0ZXJsaXN0ICpzcmMsCisJCSAgICAgICB1bnNpZ25lZCBpbnQgbmJ5dGVzKQoreworCXJldHVybiBjcnlwdCh0Zm0sIGRzdCwgc3JjLCBuYnl0ZXMsCisJICAgICAgICAgICAgIHRmbS0+X19jcnRfYWxnLT5jcmFfY2lwaGVyLmNpYV9lbmNyeXB0LAorCSAgICAgICAgICAgICBjYmNfcHJvY2Vzc19lbmNyeXB0LCB0Zm0tPmNydF9jaXBoZXIuY2l0X2l2KTsKK30KKworc3RhdGljIGludCBjYmNfZW5jcnlwdF9pdihzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKmRzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNjYXR0ZXJsaXN0ICpzcmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBuYnl0ZXMsIHU4ICppdikKK3sKKwlyZXR1cm4gY3J5cHQodGZtLCBkc3QsIHNyYywgbmJ5dGVzLAorCSAgICAgICAgICAgICB0Zm0tPl9fY3J0X2FsZy0+Y3JhX2NpcGhlci5jaWFfZW5jcnlwdCwKKwkgICAgICAgICAgICAgY2JjX3Byb2Nlc3NfZW5jcnlwdCwgaXYpOworfQorCitzdGF0aWMgaW50IGNiY19kZWNyeXB0KHN0cnVjdCBjcnlwdG9fdGZtICp0Zm0sCisgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY2F0dGVybGlzdCAqZHN0LAorICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNyYywKKwkJICAgICAgIHVuc2lnbmVkIGludCBuYnl0ZXMpCit7CisJcmV0dXJuIGNyeXB0KHRmbSwgZHN0LCBzcmMsIG5ieXRlcywKKwkgICAgICAgICAgICAgdGZtLT5fX2NydF9hbGctPmNyYV9jaXBoZXIuY2lhX2RlY3J5cHQsCisJICAgICAgICAgICAgIGNiY19wcm9jZXNzX2RlY3J5cHQsIHRmbS0+Y3J0X2NpcGhlci5jaXRfaXYpOworfQorCitzdGF0aWMgaW50IGNiY19kZWNyeXB0X2l2KHN0cnVjdCBjcnlwdG9fdGZtICp0Zm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY2F0dGVybGlzdCAqZHN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG5ieXRlcywgdTggKml2KQoreworCXJldHVybiBjcnlwdCh0Zm0sIGRzdCwgc3JjLCBuYnl0ZXMsCisJICAgICAgICAgICAgIHRmbS0+X19jcnRfYWxnLT5jcmFfY2lwaGVyLmNpYV9kZWNyeXB0LAorCSAgICAgICAgICAgICBjYmNfcHJvY2Vzc19kZWNyeXB0LCBpdik7Cit9CisKK3N0YXRpYyBpbnQgbm9jcnlwdChzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtLAorICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY2F0dGVybGlzdCAqZHN0LAorICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY2F0dGVybGlzdCAqc3JjLAorCQkgICB1bnNpZ25lZCBpbnQgbmJ5dGVzKQoreworCXJldHVybiAtRU5PU1lTOworfQorCitzdGF0aWMgaW50IG5vY3J5cHRfaXYoc3RydWN0IGNyeXB0b190Zm0gKnRmbSwKKyAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKmRzdCwKKyAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNyYywKKyAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbmJ5dGVzLCB1OCAqaXYpCit7CisJcmV0dXJuIC1FTk9TWVM7Cit9CisKK2ludCBjcnlwdG9faW5pdF9jaXBoZXJfZmxhZ3Moc3RydWN0IGNyeXB0b190Zm0gKnRmbSwgdTMyIGZsYWdzKQoreworCXUzMiBtb2RlID0gZmxhZ3MgJiBDUllQVE9fVEZNX01PREVfTUFTSzsKKwkKKwl0Zm0tPmNydF9jaXBoZXIuY2l0X21vZGUgPSBtb2RlID8gbW9kZSA6IENSWVBUT19URk1fTU9ERV9FQ0I7CisJaWYgKGZsYWdzICYgQ1JZUFRPX1RGTV9SRVFfV0VBS19LRVkpCisJCXRmbS0+Y3J0X2ZsYWdzID0gQ1JZUFRPX1RGTV9SRVFfV0VBS19LRVk7CisJCisJcmV0dXJuIDA7Cit9CisKK2ludCBjcnlwdG9faW5pdF9jaXBoZXJfb3BzKHN0cnVjdCBjcnlwdG9fdGZtICp0Zm0pCit7CisJaW50IHJldCA9IDA7CisJc3RydWN0IGNpcGhlcl90Zm0gKm9wcyA9ICZ0Zm0tPmNydF9jaXBoZXI7CisKKwlvcHMtPmNpdF9zZXRrZXkgPSBzZXRrZXk7CisKKwlzd2l0Y2ggKHRmbS0+Y3J0X2NpcGhlci5jaXRfbW9kZSkgeworCWNhc2UgQ1JZUFRPX1RGTV9NT0RFX0VDQjoKKwkJb3BzLT5jaXRfZW5jcnlwdCA9IGVjYl9lbmNyeXB0OworCQlvcHMtPmNpdF9kZWNyeXB0ID0gZWNiX2RlY3J5cHQ7CisJCWJyZWFrOworCQkKKwljYXNlIENSWVBUT19URk1fTU9ERV9DQkM6CisJCW9wcy0+Y2l0X2VuY3J5cHQgPSBjYmNfZW5jcnlwdDsKKwkJb3BzLT5jaXRfZGVjcnlwdCA9IGNiY19kZWNyeXB0OworCQlvcHMtPmNpdF9lbmNyeXB0X2l2ID0gY2JjX2VuY3J5cHRfaXY7CisJCW9wcy0+Y2l0X2RlY3J5cHRfaXYgPSBjYmNfZGVjcnlwdF9pdjsKKwkJYnJlYWs7CisJCQorCWNhc2UgQ1JZUFRPX1RGTV9NT0RFX0NGQjoKKwkJb3BzLT5jaXRfZW5jcnlwdCA9IG5vY3J5cHQ7CisJCW9wcy0+Y2l0X2RlY3J5cHQgPSBub2NyeXB0OworCQlvcHMtPmNpdF9lbmNyeXB0X2l2ID0gbm9jcnlwdF9pdjsKKwkJb3BzLT5jaXRfZGVjcnlwdF9pdiA9IG5vY3J5cHRfaXY7CisJCWJyZWFrOworCQorCWNhc2UgQ1JZUFRPX1RGTV9NT0RFX0NUUjoKKwkJb3BzLT5jaXRfZW5jcnlwdCA9IG5vY3J5cHQ7CisJCW9wcy0+Y2l0X2RlY3J5cHQgPSBub2NyeXB0OworCQlvcHMtPmNpdF9lbmNyeXB0X2l2ID0gbm9jcnlwdF9pdjsKKwkJb3BzLT5jaXRfZGVjcnlwdF9pdiA9IG5vY3J5cHRfaXY7CisJCWJyZWFrOworCisJZGVmYXVsdDoKKwkJQlVHKCk7CisJfQorCQorCWlmIChvcHMtPmNpdF9tb2RlID09IENSWVBUT19URk1fTU9ERV9DQkMpIHsKKwkgICAgCQorCSAgICAJc3dpdGNoIChjcnlwdG9fdGZtX2FsZ19ibG9ja3NpemUodGZtKSkgeworCSAgICAJY2FzZSA4OgorCSAgICAJCW9wcy0+Y2l0X3hvcl9ibG9jayA9IHhvcl82NDsKKwkgICAgCQlicmVhazsKKwkgICAgCQkKKwkgICAgCWNhc2UgMTY6CisJICAgIAkJb3BzLT5jaXRfeG9yX2Jsb2NrID0geG9yXzEyODsKKwkgICAgCQlicmVhazsKKwkgICAgCQkKKwkgICAgCWRlZmF1bHQ6CisJICAgIAkJcHJpbnRrKEtFUk5fV0FSTklORyAiJXM6IGJsb2NrIHNpemUgJXUgbm90IHN1cHBvcnRlZFxuIiwKKwkgICAgCQkgICAgICAgY3J5cHRvX3RmbV9hbGdfbmFtZSh0Zm0pLAorCSAgICAJCSAgICAgICBjcnlwdG9fdGZtX2FsZ19ibG9ja3NpemUodGZtKSk7CisJICAgIAkJcmV0ID0gLUVJTlZBTDsKKwkgICAgCQlnb3RvIG91dDsKKwkgICAgCX0KKwkgICAgCQorCQlvcHMtPmNpdF9pdnNpemUgPSBjcnlwdG9fdGZtX2FsZ19ibG9ja3NpemUodGZtKTsKKwkgICAgCW9wcy0+Y2l0X2l2ID0ga21hbGxvYyhvcHMtPmNpdF9pdnNpemUsIEdGUF9LRVJORUwpOworCQlpZiAob3BzLT5jaXRfaXYgPT0gTlVMTCkKKwkJCXJldCA9IC1FTk9NRU07CisJfQorCitvdXQ6CQorCXJldHVybiByZXQ7Cit9CisKK3ZvaWQgY3J5cHRvX2V4aXRfY2lwaGVyX29wcyhzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtKQoreworCWlmICh0Zm0tPmNydF9jaXBoZXIuY2l0X2l2KQorCQlrZnJlZSh0Zm0tPmNydF9jaXBoZXIuY2l0X2l2KTsKK30KZGlmZiAtLWdpdCBhL2NyeXB0by9jb21wcmVzcy5jIGIvY3J5cHRvL2NvbXByZXNzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWIzNmQ5MwotLS0gL2Rldi9udWxsCisrKyBiL2NyeXB0by9jb21wcmVzcy5jCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDcnlwdG9ncmFwaGljIEFQSS4KKyAqCisgKiBDb21wcmVzc2lvbiBvcGVyYXRpb25zLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwMiBKYW1lcyBNb3JyaXMgPGptb3JyaXNAaW50ZXJjb2RlLmNvbS5hdT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKKyAqIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgCisgKiBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKi8KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2luY2x1ZGUgPGxpbnV4L2NyeXB0by5oPgorI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+CisjaW5jbHVkZSA8YXNtL3NjYXR0ZXJsaXN0Lmg+CisjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+CisjaW5jbHVkZSAiaW50ZXJuYWwuaCIKKworc3RhdGljIGludCBjcnlwdG9fY29tcHJlc3Moc3RydWN0IGNyeXB0b190Zm0gKnRmbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1OCAqc3JjLCB1bnNpZ25lZCBpbnQgc2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OCAqZHN0LCB1bnNpZ25lZCBpbnQgKmRsZW4pCit7CisJcmV0dXJuIHRmbS0+X19jcnRfYWxnLT5jcmFfY29tcHJlc3MuY29hX2NvbXByZXNzKGNyeXB0b190Zm1fY3R4KHRmbSksCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYywgc2xlbiwgZHN0LAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbGVuKTsKK30KKworc3RhdGljIGludCBjcnlwdG9fZGVjb21wcmVzcyhzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1OCAqc3JjLCB1bnNpZ25lZCBpbnQgc2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTggKmRzdCwgdW5zaWduZWQgaW50ICpkbGVuKQoreworCXJldHVybiB0Zm0tPl9fY3J0X2FsZy0+Y3JhX2NvbXByZXNzLmNvYV9kZWNvbXByZXNzKGNyeXB0b190Zm1fY3R4KHRmbSksCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjLCBzbGVuLCBkc3QsCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGxlbik7Cit9CisKK2ludCBjcnlwdG9faW5pdF9jb21wcmVzc19mbGFncyhzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtLCB1MzIgZmxhZ3MpCit7CisJcmV0dXJuIGZsYWdzID8gLUVJTlZBTCA6IDA7Cit9CisKK2ludCBjcnlwdG9faW5pdF9jb21wcmVzc19vcHMoc3RydWN0IGNyeXB0b190Zm0gKnRmbSkKK3sKKwlpbnQgcmV0ID0gMDsKKwlzdHJ1Y3QgY29tcHJlc3NfdGZtICpvcHMgPSAmdGZtLT5jcnRfY29tcHJlc3M7CisJCisJcmV0ID0gdGZtLT5fX2NydF9hbGctPmNyYV9jb21wcmVzcy5jb2FfaW5pdChjcnlwdG9fdGZtX2N0eCh0Zm0pKTsKKwlpZiAocmV0KQorCQlnb3RvIG91dDsKKworCW9wcy0+Y290X2NvbXByZXNzID0gY3J5cHRvX2NvbXByZXNzOworCW9wcy0+Y290X2RlY29tcHJlc3MgPSBjcnlwdG9fZGVjb21wcmVzczsKKwkKK291dDoKKwlyZXR1cm4gcmV0OworfQorCit2b2lkIGNyeXB0b19leGl0X2NvbXByZXNzX29wcyhzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtKQoreworCXRmbS0+X19jcnRfYWxnLT5jcmFfY29tcHJlc3MuY29hX2V4aXQoY3J5cHRvX3RmbV9jdHgodGZtKSk7Cit9CmRpZmYgLS1naXQgYS9jcnlwdG8vY3JjMzJjLmMgYi9jcnlwdG8vY3JjMzJjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjU2OTU2YwotLS0gL2Rldi9udWxsCisrKyBiL2NyeXB0by9jcmMzMmMuYwpAQCAtMCwwICsxLDExMCBAQAorLyogCisgKiBDcnlwdG9ncmFwaGljIEFQSS4KKyAqCisgKiBDUkMzMkMgY2hrc3VtCisgKgorICogVGhpcyBtb2R1bGUgZmlsZSBpcyBhIHdyYXBwZXIgdG8gaW52b2tlIHRoZSBsaWIvY3JjMzJjIHJvdXRpbmVzLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZQorICogU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSAKKyAqIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqLworI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9zdHJpbmcuaD4KKyNpbmNsdWRlIDxsaW51eC9jcnlwdG8uaD4KKyNpbmNsdWRlIDxsaW51eC9jcmMzMmMuaD4KKyNpbmNsdWRlIDxhc20vYnl0ZW9yZGVyLmg+CisKKyNkZWZpbmUgQ0hLU1VNX0JMT0NLX1NJWkUJMzIKKyNkZWZpbmUgQ0hLU1VNX0RJR0VTVF9TSVpFCTQKKworc3RydWN0IGNoa3N1bV9jdHggeworCXUzMiBjcmM7Cit9OworCisvKgorICogU3RlcHMgdGhyb3VnaCBidWZmZXIgb25lIGJ5dGUgYXQgYXQgdGltZSwgY2FsY3VsYXRlcyByZWZsZWN0ZWQgCisgKiBjcmMgdXNpbmcgdGFibGUuCisgKi8KKworc3RhdGljIHZvaWQgY2hrc3VtX2luaXQodm9pZCAqY3R4KQoreworCXN0cnVjdCBjaGtzdW1fY3R4ICptY3R4ID0gY3R4OworCisJbWN0eC0+Y3JjID0gfih1MzIpMDsJCQkvKiBjb21tb24gdXNhZ2UgKi8KK30KKworLyoKKyAqIFNldHRpbmcgdGhlIHNlZWQgYWxsb3dzIGFyYml0cmFyeSBhY2N1bXVsYXRvcnMgYW5kIGZsZXhpYmxlIFhPUiBwb2xpY3kKKyAqIElmIHlvdXIgYWxnb3JpdGhtIHN0YXJ0cyB3aXRoIH4wLCB0aGVuIFhPUiB3aXRoIH4wIGJlZm9yZSB5b3Ugc2V0CisgKiB0aGUgc2VlZC4KKyAqLworc3RhdGljIGludCBjaGtzdW1fc2V0a2V5KHZvaWQgKmN0eCwgY29uc3QgdTggKmtleSwgdW5zaWduZWQgaW50IGtleWxlbiwKKwkgICAgICAgICAgICAgICAgICB1MzIgKmZsYWdzKQoreworCXN0cnVjdCBjaGtzdW1fY3R4ICptY3R4ID0gY3R4OworCisJaWYgKGtleWxlbiAhPSBzaXplb2YobWN0eC0+Y3JjKSkgeworCQlpZiAoZmxhZ3MpCisJCQkqZmxhZ3MgPSBDUllQVE9fVEZNX1JFU19CQURfS0VZX0xFTjsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCW1jdHgtPmNyYyA9IF9fY3B1X3RvX2xlMzIoKih1MzIgKilrZXkpOworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBjaGtzdW1fdXBkYXRlKHZvaWQgKmN0eCwgY29uc3QgdTggKmRhdGEsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisJc3RydWN0IGNoa3N1bV9jdHggKm1jdHggPSBjdHg7CisJdTMyIG1jcmM7CisKKwltY3JjID0gY3JjMzJjKG1jdHgtPmNyYywgZGF0YSwgKHNpemVfdClsZW5ndGgpOworCisJbWN0eC0+Y3JjID0gbWNyYzsKK30KKworc3RhdGljIHZvaWQgY2hrc3VtX2ZpbmFsKHZvaWQgKmN0eCwgdTggKm91dCkKK3sKKwlzdHJ1Y3QgY2hrc3VtX2N0eCAqbWN0eCA9IGN0eDsKKwl1MzIgbWNyYyA9IChtY3R4LT5jcmMgXiB+KHUzMikwKTsKKwkKKwkqKHUzMiAqKW91dCA9IF9fbGUzMl90b19jcHUobWNyYyk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgY3J5cHRvX2FsZyBhbGcgPSB7CisJLmNyYV9uYW1lCT0JImNyYzMyYyIsCisJLmNyYV9mbGFncwk9CUNSWVBUT19BTEdfVFlQRV9ESUdFU1QsCisJLmNyYV9ibG9ja3NpemUJPQlDSEtTVU1fQkxPQ0tfU0laRSwKKwkuY3JhX2N0eHNpemUJPQlzaXplb2Yoc3RydWN0IGNoa3N1bV9jdHgpLAorCS5jcmFfbW9kdWxlCT0JVEhJU19NT0RVTEUsCisJLmNyYV9saXN0CT0JTElTVF9IRUFEX0lOSVQoYWxnLmNyYV9saXN0KSwKKwkuY3JhX3UJCT0JeworCQkuZGlnZXN0ID0geworCQkJIC5kaWFfZGlnZXN0c2l6ZT0JQ0hLU1VNX0RJR0VTVF9TSVpFLAorCQkJIC5kaWFfc2V0a2V5CT0JY2hrc3VtX3NldGtleSwKKwkJCSAuZGlhX2luaXQgICAJPSAJY2hrc3VtX2luaXQsCisJCQkgLmRpYV91cGRhdGUgCT0JY2hrc3VtX3VwZGF0ZSwKKwkJCSAuZGlhX2ZpbmFsICAJPQljaGtzdW1fZmluYWwKKwkJIH0KKwl9Cit9OworCitzdGF0aWMgaW50IF9faW5pdCBpbml0KHZvaWQpCit7CisJcmV0dXJuIGNyeXB0b19yZWdpc3Rlcl9hbGcoJmFsZyk7Cit9CisKK3N0YXRpYyB2b2lkIF9fZXhpdCBmaW5pKHZvaWQpCit7CisJY3J5cHRvX3VucmVnaXN0ZXJfYWxnKCZhbGcpOworfQorCittb2R1bGVfaW5pdChpbml0KTsKK21vZHVsZV9leGl0KGZpbmkpOworCitNT0RVTEVfQVVUSE9SKCJDbGF5IEhhYXBhbGEgPGNoYWFwYWxhQGNpc2NvLmNvbT4iKTsKK01PRFVMRV9ERVNDUklQVElPTigiQ1JDMzJjIChDYXN0YWdub2xpKSBjYWxjdWxhdGlvbnMgd3JhcHBlciBmb3IgbGliL2NyYzMyYyIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwpkaWZmIC0tZ2l0IGEvY3J5cHRvL2NyeXB0b19udWxsLmMgYi9jcnlwdG8vY3J5cHRvX251bGwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjkxZDMxCi0tLSAvZGV2L251bGwKKysrIGIvY3J5cHRvL2NyeXB0b19udWxsLmMKQEAgLTAsMCArMSwxMzcgQEAKKy8qIAorICogQ3J5cHRvZ3JhcGhpYyBBUEkuCisgKgorICogTnVsbCBhbGdvcml0aG1zLCBha2EgTXVjaCBBZG8gQWJvdXQgTm90aGluZy4KKyAqCisgKiBUaGVzZSBhcmUgbmVlZGVkIGZvciBJUHNlYywgYW5kIG1heSBiZSB1c2VmdWwgaW4gZ2VuZXJhbCBmb3IKKyAqIHRlc3RpbmcgJiBkZWJ1Z2dpbmcuCisgKiAKKyAqIFRoZSBudWxsIGNpcGhlciBpcyBjb21wbGlhbnQgd2l0aCBSRkMyNDEwLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwMiBKYW1lcyBNb3JyaXMgPGptb3JyaXNAaW50ZXJjb2RlLmNvbS5hdT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqLworI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9tbS5oPgorI2luY2x1ZGUgPGFzbS9zY2F0dGVybGlzdC5oPgorI2luY2x1ZGUgPGxpbnV4L2NyeXB0by5oPgorCisjZGVmaW5lIE5VTExfS0VZX1NJWkUJCTAKKyNkZWZpbmUgTlVMTF9CTE9DS19TSVpFCQkxCisjZGVmaW5lIE5VTExfRElHRVNUX1NJWkUJMAorCitzdGF0aWMgaW50IG51bGxfY29tcHJlc3Modm9pZCAqY3R4LCBjb25zdCB1OCAqc3JjLCB1bnNpZ25lZCBpbnQgc2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1OCAqZHN0LCB1bnNpZ25lZCBpbnQgKmRsZW4pCit7IHJldHVybiAwOyB9CisKK3N0YXRpYyBpbnQgbnVsbF9kZWNvbXByZXNzKHZvaWQgKmN0eCwgY29uc3QgdTggKnNyYywgdW5zaWduZWQgaW50IHNsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1OCAqZHN0LCB1bnNpZ25lZCBpbnQgKmRsZW4pCit7IHJldHVybiAwOyB9CisKK3N0YXRpYyB2b2lkIG51bGxfaW5pdCh2b2lkICpjdHgpCit7IH0KKworc3RhdGljIHZvaWQgbnVsbF91cGRhdGUodm9pZCAqY3R4LCBjb25zdCB1OCAqZGF0YSwgdW5zaWduZWQgaW50IGxlbikKK3sgfQorCitzdGF0aWMgdm9pZCBudWxsX2ZpbmFsKHZvaWQgKmN0eCwgdTggKm91dCkKK3sgfQorCitzdGF0aWMgaW50IG51bGxfc2V0a2V5KHZvaWQgKmN0eCwgY29uc3QgdTggKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGtleWxlbiwgdTMyICpmbGFncykKK3sgcmV0dXJuIDA7IH0KKworc3RhdGljIHZvaWQgbnVsbF9lbmNyeXB0KHZvaWQgKmN0eCwgdTggKmRzdCwgY29uc3QgdTggKnNyYykKK3sgfQorCitzdGF0aWMgdm9pZCBudWxsX2RlY3J5cHQodm9pZCAqY3R4LCB1OCAqZHN0LCBjb25zdCB1OCAqc3JjKQoreyB9CisKK3N0YXRpYyBzdHJ1Y3QgY3J5cHRvX2FsZyBjb21wcmVzc19udWxsID0geworCS5jcmFfbmFtZQkJPQkiY29tcHJlc3NfbnVsbCIsCisJLmNyYV9mbGFncwkJPQlDUllQVE9fQUxHX1RZUEVfQ09NUFJFU1MsCisJLmNyYV9ibG9ja3NpemUJCT0JTlVMTF9CTE9DS19TSVpFLAorCS5jcmFfY3R4c2l6ZQkJPQkwLAorCS5jcmFfbW9kdWxlCQk9CVRISVNfTU9EVUxFLAorCS5jcmFfbGlzdAkJPSAgICAgICBMSVNUX0hFQURfSU5JVChjb21wcmVzc19udWxsLmNyYV9saXN0KSwKKwkuY3JhX3UJCQk9CXsgLmNvbXByZXNzID0geworCS5jb2FfY29tcHJlc3MgCQk9CW51bGxfY29tcHJlc3MsCisJLmNvYV9kZWNvbXByZXNzCQk9CW51bGxfZGVjb21wcmVzcyB9IH0KK307CisKK3N0YXRpYyBzdHJ1Y3QgY3J5cHRvX2FsZyBkaWdlc3RfbnVsbCA9IHsKKwkuY3JhX25hbWUJCT0JImRpZ2VzdF9udWxsIiwKKwkuY3JhX2ZsYWdzCQk9CUNSWVBUT19BTEdfVFlQRV9ESUdFU1QsCisJLmNyYV9ibG9ja3NpemUJCT0JTlVMTF9CTE9DS19TSVpFLAorCS5jcmFfY3R4c2l6ZQkJPQkwLAorCS5jcmFfbW9kdWxlCQk9CVRISVNfTU9EVUxFLAorCS5jcmFfbGlzdAkJPSAgICAgICBMSVNUX0hFQURfSU5JVChkaWdlc3RfbnVsbC5jcmFfbGlzdCksCQorCS5jcmFfdQkJCT0JeyAuZGlnZXN0ID0geworCS5kaWFfZGlnZXN0c2l6ZQkJPQlOVUxMX0RJR0VTVF9TSVpFLAorCS5kaWFfaW5pdCAgIAkJPQludWxsX2luaXQsCisJLmRpYV91cGRhdGUgCQk9CW51bGxfdXBkYXRlLAorCS5kaWFfZmluYWwgIAkJPQludWxsX2ZpbmFsIH0gfQorfTsKKworc3RhdGljIHN0cnVjdCBjcnlwdG9fYWxnIGNpcGhlcl9udWxsID0geworCS5jcmFfbmFtZQkJPQkiY2lwaGVyX251bGwiLAorCS5jcmFfZmxhZ3MJCT0JQ1JZUFRPX0FMR19UWVBFX0NJUEhFUiwKKwkuY3JhX2Jsb2Nrc2l6ZQkJPQlOVUxMX0JMT0NLX1NJWkUsCisJLmNyYV9jdHhzaXplCQk9CTAsCisJLmNyYV9tb2R1bGUJCT0JVEhJU19NT0RVTEUsCisJLmNyYV9saXN0CQk9CUxJU1RfSEVBRF9JTklUKGNpcGhlcl9udWxsLmNyYV9saXN0KSwKKwkuY3JhX3UJCQk9CXsgLmNpcGhlciA9IHsKKwkuY2lhX21pbl9rZXlzaXplCT0JTlVMTF9LRVlfU0laRSwKKwkuY2lhX21heF9rZXlzaXplCT0JTlVMTF9LRVlfU0laRSwKKwkuY2lhX3NldGtleQkJPSAJbnVsbF9zZXRrZXksCisJLmNpYV9lbmNyeXB0CQk9CW51bGxfZW5jcnlwdCwKKwkuY2lhX2RlY3J5cHQJCT0JbnVsbF9kZWNyeXB0IH0gfQorfTsKKworTU9EVUxFX0FMSUFTKCJjb21wcmVzc19udWxsIik7CitNT0RVTEVfQUxJQVMoImRpZ2VzdF9udWxsIik7CitNT0RVTEVfQUxJQVMoImNpcGhlcl9udWxsIik7CisKK3N0YXRpYyBpbnQgX19pbml0IGluaXQodm9pZCkKK3sKKwlpbnQgcmV0ID0gMDsKKwkKKwlyZXQgPSBjcnlwdG9fcmVnaXN0ZXJfYWxnKCZjaXBoZXJfbnVsbCk7CisJaWYgKHJldCA8IDApCisJCWdvdG8gb3V0OworCisJcmV0ID0gY3J5cHRvX3JlZ2lzdGVyX2FsZygmZGlnZXN0X251bGwpOworCWlmIChyZXQgPCAwKSB7CisJCWNyeXB0b191bnJlZ2lzdGVyX2FsZygmY2lwaGVyX251bGwpOworCQlnb3RvIG91dDsKKwl9CisKKwlyZXQgPSBjcnlwdG9fcmVnaXN0ZXJfYWxnKCZjb21wcmVzc19udWxsKTsKKwlpZiAocmV0IDwgMCkgeworCQljcnlwdG9fdW5yZWdpc3Rlcl9hbGcoJmRpZ2VzdF9udWxsKTsKKwkJY3J5cHRvX3VucmVnaXN0ZXJfYWxnKCZjaXBoZXJfbnVsbCk7CisJCWdvdG8gb3V0OworCX0KKworb3V0OgkKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBfX2V4aXQgZmluaSh2b2lkKQoreworCWNyeXB0b191bnJlZ2lzdGVyX2FsZygmY29tcHJlc3NfbnVsbCk7CisJY3J5cHRvX3VucmVnaXN0ZXJfYWxnKCZkaWdlc3RfbnVsbCk7CisJY3J5cHRvX3VucmVnaXN0ZXJfYWxnKCZjaXBoZXJfbnVsbCk7Cit9CisKK21vZHVsZV9pbml0KGluaXQpOworbW9kdWxlX2V4aXQoZmluaSk7CisKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9ERVNDUklQVElPTigiTnVsbCBDcnlwdG9ncmFwaGljIEFsZ29yaXRobXMiKTsKZGlmZiAtLWdpdCBhL2NyeXB0by9kZWZsYXRlLmMgYi9jcnlwdG8vZGVmbGF0ZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3ZDc2NTUKLS0tIC9kZXYvbnVsbAorKysgYi9jcnlwdG8vZGVmbGF0ZS5jCkBAIC0wLDAgKzEsMjIzIEBACisvKiAKKyAqIENyeXB0b2dyYXBoaWMgQVBJLgorICoKKyAqIERlZmxhdGUgYWxnb3JpdGhtIChSRkMgMTk1MSksIGltcGxlbWVudGVkIGhlcmUgcHJpbWFyaWx5IGZvciB1c2UKKyAqIGJ5IElQQ09NUCAoUkZDIDMxNzMgJiBSRkMgMjM5NCkuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDAzIEphbWVzIE1vcnJpcyA8am1vcnJpc0BpbnRlcmNvZGUuY29tLmF1PgorICogCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKKyAqIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgCisgKiBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBGSVhNRTogZGVmbGF0ZSB0cmFuc2Zvcm1zIHdpbGwgcmVxdWlyZSB1cCB0byBhIHRvdGFsIG9mIGFib3V0IDQzNmsgb2Yga2VybmVsCisgKiBtZW1vcnkgb24gaTM4NiAoMzkwayBmb3IgY29tcHJlc3Npb24sIHRoZSByZXN0IGZvciBkZWNvbXByZXNzaW9uKSwgYXMgdGhlCisgKiBjdXJyZW50IHpsaWIga2VybmVsIGNvZGUgdXNlcyBhIHdvcnN0IGNhc2UgcHJlLWFsbG9jYXRpb24gc3lzdGVtIGJ5IGRlZmF1bHQuCisgKiBUaGlzIG5lZWRzIHRvIGJlIGZpeGVkIHNvIHRoYXQgdGhlIGFtb3VudCBvZiBtZW1vcnkgcmVxdWlyZWQgaXMgcHJvcGVybHkKKyAqIHJlbGF0ZWQgdG8gdGhlICB3aW5iaXRzIGFuZCBtZW1sZXZlbCBwYXJhbWV0ZXJzLgorICoKKyAqIFRoZSBkZWZhdWx0IHdpbmJpdHMgb2YgMTEgc2hvdWxkIHN1aXQgbW9zdCBwYWNrZXRzLCBhbmQgaXQgbWF5IGJlIHNvbWV0aGluZworICogdG8gY29uZmlndXJlIG9uIGEgcGVyLXRmbSBiYXNpcyBpbiB0aGUgZnV0dXJlLgorICoKKyAqIEN1cnJlbnRseSwgY29tcHJlc3Npb24gaGlzdG9yeSBpcyBub3QgbWFpbnRhaW5lZCBiZXR3ZWVuIHRmbSBjYWxscywgYXMKKyAqIGl0IGlzIG5vdCBuZWVkZWQgZm9yIElQQ09NUCBhbmQga2VlcHMgdGhlIGNvZGUgc2ltcGxlci4gIEl0IGNhbiBiZQorICogaW1wbGVtZW50ZWQgaWYgc29tZW9uZSB3YW50cyBpdC4KKyAqLworI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9jcnlwdG8uaD4KKyNpbmNsdWRlIDxsaW51eC96bGliLmg+CisjaW5jbHVkZSA8bGludXgvdm1hbGxvYy5oPgorI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgorI2luY2x1ZGUgPGxpbnV4L21tLmg+CisjaW5jbHVkZSA8bGludXgvbmV0Lmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorCisjZGVmaW5lIERFRkxBVEVfREVGX0xFVkVMCQlaX0RFRkFVTFRfQ09NUFJFU1NJT04KKyNkZWZpbmUgREVGTEFURV9ERUZfV0lOQklUUwkJMTEKKyNkZWZpbmUgREVGTEFURV9ERUZfTUVNTEVWRUwJCU1BWF9NRU1fTEVWRUwKKworc3RydWN0IGRlZmxhdGVfY3R4IHsKKwlzdHJ1Y3Qgel9zdHJlYW1fcyBjb21wX3N0cmVhbTsKKwlzdHJ1Y3Qgel9zdHJlYW1fcyBkZWNvbXBfc3RyZWFtOworfTsKKworc3RhdGljIGludCBkZWZsYXRlX2NvbXBfaW5pdChzdHJ1Y3QgZGVmbGF0ZV9jdHggKmN0eCkKK3sKKwlpbnQgcmV0ID0gMDsKKwlzdHJ1Y3Qgel9zdHJlYW1fcyAqc3RyZWFtID0gJmN0eC0+Y29tcF9zdHJlYW07CisKKwlzdHJlYW0tPndvcmtzcGFjZSA9IHZtYWxsb2MoemxpYl9kZWZsYXRlX3dvcmtzcGFjZXNpemUoKSk7CisJaWYgKCFzdHJlYW0tPndvcmtzcGFjZSApIHsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290byBvdXQ7CisJfQorCW1lbXNldChzdHJlYW0tPndvcmtzcGFjZSwgMCwgemxpYl9kZWZsYXRlX3dvcmtzcGFjZXNpemUoKSk7CisJcmV0ID0gemxpYl9kZWZsYXRlSW5pdDIoc3RyZWFtLCBERUZMQVRFX0RFRl9MRVZFTCwgWl9ERUZMQVRFRCwKKwkgICAgICAgICAgICAgICAgICAgICAgICAtREVGTEFURV9ERUZfV0lOQklUUywgREVGTEFURV9ERUZfTUVNTEVWRUwsCisJICAgICAgICAgICAgICAgICAgICAgICAgWl9ERUZBVUxUX1NUUkFURUdZKTsKKwlpZiAocmV0ICE9IFpfT0spIHsKKwkJcmV0ID0gLUVJTlZBTDsKKwkJZ290byBvdXRfZnJlZTsKKwl9CitvdXQ6CQorCXJldHVybiByZXQ7CitvdXRfZnJlZToKKwl2ZnJlZShzdHJlYW0tPndvcmtzcGFjZSk7CisJZ290byBvdXQ7Cit9CisKK3N0YXRpYyBpbnQgZGVmbGF0ZV9kZWNvbXBfaW5pdChzdHJ1Y3QgZGVmbGF0ZV9jdHggKmN0eCkKK3sKKwlpbnQgcmV0ID0gMDsKKwlzdHJ1Y3Qgel9zdHJlYW1fcyAqc3RyZWFtID0gJmN0eC0+ZGVjb21wX3N0cmVhbTsKKworCXN0cmVhbS0+d29ya3NwYWNlID0ga21hbGxvYyh6bGliX2luZmxhdGVfd29ya3NwYWNlc2l6ZSgpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXN0cmVhbS0+d29ya3NwYWNlICkgeworCQlyZXQgPSAtRU5PTUVNOworCQlnb3RvIG91dDsKKwl9CisJbWVtc2V0KHN0cmVhbS0+d29ya3NwYWNlLCAwLCB6bGliX2luZmxhdGVfd29ya3NwYWNlc2l6ZSgpKTsKKwlyZXQgPSB6bGliX2luZmxhdGVJbml0MihzdHJlYW0sIC1ERUZMQVRFX0RFRl9XSU5CSVRTKTsKKwlpZiAocmV0ICE9IFpfT0spIHsKKwkJcmV0ID0gLUVJTlZBTDsKKwkJZ290byBvdXRfZnJlZTsKKwl9CitvdXQ6CisJcmV0dXJuIHJldDsKK291dF9mcmVlOgorCWtmcmVlKHN0cmVhbS0+d29ya3NwYWNlKTsKKwlnb3RvIG91dDsKK30KKworc3RhdGljIHZvaWQgZGVmbGF0ZV9jb21wX2V4aXQoc3RydWN0IGRlZmxhdGVfY3R4ICpjdHgpCit7CisJdmZyZWUoY3R4LT5jb21wX3N0cmVhbS53b3Jrc3BhY2UpOworfQorCitzdGF0aWMgdm9pZCBkZWZsYXRlX2RlY29tcF9leGl0KHN0cnVjdCBkZWZsYXRlX2N0eCAqY3R4KQoreworCWtmcmVlKGN0eC0+ZGVjb21wX3N0cmVhbS53b3Jrc3BhY2UpOworfQorCitzdGF0aWMgaW50IGRlZmxhdGVfaW5pdCh2b2lkICpjdHgpCit7CisJaW50IHJldDsKKwkKKwlyZXQgPSBkZWZsYXRlX2NvbXBfaW5pdChjdHgpOworCWlmIChyZXQpCisJCWdvdG8gb3V0OworCXJldCA9IGRlZmxhdGVfZGVjb21wX2luaXQoY3R4KTsKKwlpZiAocmV0KQorCQlkZWZsYXRlX2NvbXBfZXhpdChjdHgpOworb3V0OgorCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIGRlZmxhdGVfZXhpdCh2b2lkICpjdHgpCit7CisJZGVmbGF0ZV9jb21wX2V4aXQoY3R4KTsKKwlkZWZsYXRlX2RlY29tcF9leGl0KGN0eCk7Cit9CisKK3N0YXRpYyBpbnQgZGVmbGF0ZV9jb21wcmVzcyh2b2lkICpjdHgsIGNvbnN0IHU4ICpzcmMsIHVuc2lnbmVkIGludCBzbGVuLAorCSAgICAgICAgICAgICAgICAgICAgdTggKmRzdCwgdW5zaWduZWQgaW50ICpkbGVuKQoreworCWludCByZXQgPSAwOworCXN0cnVjdCBkZWZsYXRlX2N0eCAqZGN0eCA9IGN0eDsKKwlzdHJ1Y3Qgel9zdHJlYW1fcyAqc3RyZWFtID0gJmRjdHgtPmNvbXBfc3RyZWFtOworCisJcmV0ID0gemxpYl9kZWZsYXRlUmVzZXQoc3RyZWFtKTsKKwlpZiAocmV0ICE9IFpfT0spIHsKKwkJcmV0ID0gLUVJTlZBTDsKKwkJZ290byBvdXQ7CisJfQorCisJc3RyZWFtLT5uZXh0X2luID0gKHU4ICopc3JjOworCXN0cmVhbS0+YXZhaWxfaW4gPSBzbGVuOworCXN0cmVhbS0+bmV4dF9vdXQgPSAodTggKilkc3Q7CisJc3RyZWFtLT5hdmFpbF9vdXQgPSAqZGxlbjsKKworCXJldCA9IHpsaWJfZGVmbGF0ZShzdHJlYW0sIFpfRklOSVNIKTsKKwlpZiAocmV0ICE9IFpfU1RSRUFNX0VORCkgeworCQlyZXQgPSAtRUlOVkFMOworCQlnb3RvIG91dDsKKwl9CisJcmV0ID0gMDsKKwkqZGxlbiA9IHN0cmVhbS0+dG90YWxfb3V0Oworb3V0OgorCXJldHVybiByZXQ7Cit9CisgCitzdGF0aWMgaW50IGRlZmxhdGVfZGVjb21wcmVzcyh2b2lkICpjdHgsIGNvbnN0IHU4ICpzcmMsIHVuc2lnbmVkIGludCBzbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTggKmRzdCwgdW5zaWduZWQgaW50ICpkbGVuKQoreworCQorCWludCByZXQgPSAwOworCXN0cnVjdCBkZWZsYXRlX2N0eCAqZGN0eCA9IGN0eDsKKwlzdHJ1Y3Qgel9zdHJlYW1fcyAqc3RyZWFtID0gJmRjdHgtPmRlY29tcF9zdHJlYW07CisKKwlyZXQgPSB6bGliX2luZmxhdGVSZXNldChzdHJlYW0pOworCWlmIChyZXQgIT0gWl9PSykgeworCQlyZXQgPSAtRUlOVkFMOworCQlnb3RvIG91dDsKKwl9CisKKwlzdHJlYW0tPm5leHRfaW4gPSAodTggKilzcmM7CisJc3RyZWFtLT5hdmFpbF9pbiA9IHNsZW47CisJc3RyZWFtLT5uZXh0X291dCA9ICh1OCAqKWRzdDsKKwlzdHJlYW0tPmF2YWlsX291dCA9ICpkbGVuOworCisJcmV0ID0gemxpYl9pbmZsYXRlKHN0cmVhbSwgWl9TWU5DX0ZMVVNIKTsKKwkvKgorCSAqIFdvcmsgYXJvdW5kIGEgYnVnIGluIHpsaWIsIHdoaWNoIHNvbWV0aW1lcyB3YW50cyB0byB0YXN0ZSBhbiBleHRyYQorCSAqIGJ5dGUgd2hlbiBiZWluZyB1c2VkIGluIHRoZSAodW5kb2N1bWVudGVkKSByYXcgZGVmbGF0ZSBtb2RlLgorCSAqIChGcm9tIFVTQUdJKS4KKwkgKi8KKwlpZiAocmV0ID09IFpfT0sgJiYgIXN0cmVhbS0+YXZhaWxfaW4gJiYgc3RyZWFtLT5hdmFpbF9vdXQpIHsKKwkJdTggemVyb3N0dWZmID0gMDsKKwkJc3RyZWFtLT5uZXh0X2luID0gJnplcm9zdHVmZjsKKwkJc3RyZWFtLT5hdmFpbF9pbiA9IDE7IAorCQlyZXQgPSB6bGliX2luZmxhdGUoc3RyZWFtLCBaX0ZJTklTSCk7CisJfQorCWlmIChyZXQgIT0gWl9TVFJFQU1fRU5EKSB7CisJCXJldCA9IC1FSU5WQUw7CisJCWdvdG8gb3V0OworCX0KKwlyZXQgPSAwOworCSpkbGVuID0gc3RyZWFtLT50b3RhbF9vdXQ7CitvdXQ6CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHN0cnVjdCBjcnlwdG9fYWxnIGFsZyA9IHsKKwkuY3JhX25hbWUJCT0gImRlZmxhdGUiLAorCS5jcmFfZmxhZ3MJCT0gQ1JZUFRPX0FMR19UWVBFX0NPTVBSRVNTLAorCS5jcmFfY3R4c2l6ZQkJPSBzaXplb2Yoc3RydWN0IGRlZmxhdGVfY3R4KSwKKwkuY3JhX21vZHVsZQkJPSBUSElTX01PRFVMRSwKKwkuY3JhX2xpc3QJCT0gTElTVF9IRUFEX0lOSVQoYWxnLmNyYV9saXN0KSwKKwkuY3JhX3UJCQk9IHsgLmNvbXByZXNzID0geworCS5jb2FfaW5pdAkJPSBkZWZsYXRlX2luaXQsCisJLmNvYV9leGl0CQk9IGRlZmxhdGVfZXhpdCwKKwkuY29hX2NvbXByZXNzIAkJPSBkZWZsYXRlX2NvbXByZXNzLAorCS5jb2FfZGVjb21wcmVzcyAgCT0gZGVmbGF0ZV9kZWNvbXByZXNzIH0gfQorfTsKKworc3RhdGljIGludCBfX2luaXQgaW5pdCh2b2lkKQoreworCXJldHVybiBjcnlwdG9fcmVnaXN0ZXJfYWxnKCZhbGcpOworfQorCitzdGF0aWMgdm9pZCBfX2V4aXQgZmluaSh2b2lkKQoreworCWNyeXB0b191bnJlZ2lzdGVyX2FsZygmYWxnKTsKK30KKworbW9kdWxlX2luaXQoaW5pdCk7Cittb2R1bGVfZXhpdChmaW5pKTsKKworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0RFU0NSSVBUSU9OKCJEZWZsYXRlIENvbXByZXNzaW9uIEFsZ29yaXRobSBmb3IgSVBDT01QIik7CitNT0RVTEVfQVVUSE9SKCJKYW1lcyBNb3JyaXMgPGptb3JyaXNAaW50ZXJjb2RlLmNvbS5hdT4iKTsKKwpkaWZmIC0tZ2l0IGEvY3J5cHRvL2Rlcy5jIGIvY3J5cHRvL2Rlcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjN2U2ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9jcnlwdG8vZGVzLmMKQEAgLTAsMCArMSwxMjk5IEBACisvKiAKKyAqIENyeXB0b2dyYXBoaWMgQVBJLgorICoKKyAqIERFUyAmIFRyaXBsZSBERVMgRURFIENpcGhlciBBbGdvcml0aG1zLgorICoKKyAqIE9yaWdpbmFsbHkgcmVsZWFzZWQgYXMgZGVzY29yZSBieSBEYW5hIEwuIEhvdyA8aG93QGlzbC5zdGFuZm9yZC5lZHU+LgorICogTW9kaWZpZWQgYnkgUmFpbWFyIEZhbGtlIDxyZjEzQGluZi50dS1kcmVzZGVuLmRlPiBmb3IgdGhlIExpbnV4LUtlcm5lbC4KKyAqIERlcml2ZWQgZnJvbSBDcnlwdG9hcGkgYW5kIE5ldHRsZSBpbXBsZW1lbnRhdGlvbnMsIGFkYXB0ZWQgZm9yIGluLXBsYWNlCisgKiBzY2F0dGVybGlzdCBpbnRlcmZhY2UuICBDaGFuZ2VkIExHUEwgdG8gR1BMIHBlciBzZWN0aW9uIDMgb2YgdGhlIExHUEwuCisgKgorICogQ29weXJpZ2h0IChjKSAxOTkyIERhbmEgTC4gSG93LgorICogQ29weXJpZ2h0IChjKSBSYWltYXIgRmFsa2UgPHJmMTNAaW5mLnR1LWRyZXNkZW4uZGU+IAorICogQ29weXJpZ2h0IChjKSBHaXNsZSBT5mxlbnNtaW5kZSA8Z2lzbGVAaWkudWliLm5vPgorICogQ29weXJpZ2h0IChDKSAyMDAxIE5pZWxzIE32bGxlci4KKyAqIENvcHlyaWdodCAoYykgMjAwMiBKYW1lcyBNb3JyaXMgPGptb3JyaXNAaW50ZXJjb2RlLmNvbS5hdT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqLworI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9tbS5oPgorI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+CisjaW5jbHVkZSA8YXNtL3NjYXR0ZXJsaXN0Lmg+CisjaW5jbHVkZSA8bGludXgvY3J5cHRvLmg+CisKKyNkZWZpbmUgREVTX0tFWV9TSVpFCQk4CisjZGVmaW5lIERFU19FWFBLRVlfV09SRFMJMzIKKyNkZWZpbmUgREVTX0JMT0NLX1NJWkUJCTgKKworI2RlZmluZSBERVMzX0VERV9LRVlfU0laRQkoMyAqIERFU19LRVlfU0laRSkKKyNkZWZpbmUgREVTM19FREVfRVhQS0VZX1dPUkRTCSgzICogREVTX0VYUEtFWV9XT1JEUykKKyNkZWZpbmUgREVTM19FREVfQkxPQ0tfU0laRQlERVNfQkxPQ0tfU0laRQorCisjZGVmaW5lIFJPUihkLGMsbykJKChkKSA9IChkKSA+PiAoYykgfCAoZCkgPDwgKG8pKQorCitzdHJ1Y3QgZGVzX2N0eCB7CisJdTggaXZbREVTX0JMT0NLX1NJWkVdOworCXUzMiBleHBrZXlbREVTX0VYUEtFWV9XT1JEU107Cit9OworCitzdHJ1Y3QgZGVzM19lZGVfY3R4IHsKKwl1OCBpdltERVNfQkxPQ0tfU0laRV07CisJdTMyIGV4cGtleVtERVMzX0VERV9FWFBLRVlfV09SRFNdOworfTsKKworc3RhdGljIGNvbnN0IHUzMiBkZXNfa2V5bWFwW10gPSB7CisJMHgwMjA4MDAwOCwgMHgwMjA4MjAwMCwgMHgwMDAwMjAwOCwgMHgwMDAwMDAwMCwKKwkweDAyMDAyMDAwLCAweDAwMDgwMDA4LCAweDAyMDgwMDAwLCAweDAyMDgyMDA4LAorCTB4MDAwMDAwMDgsIDB4MDIwMDAwMDAsIDB4MDAwODIwMDAsIDB4MDAwMDIwMDgsCisJMHgwMDA4MjAwOCwgMHgwMjAwMjAwOCwgMHgwMjAwMDAwOCwgMHgwMjA4MDAwMCwKKwkweDAwMDAyMDAwLCAweDAwMDgyMDA4LCAweDAwMDgwMDA4LCAweDAyMDAyMDAwLAorCTB4MDIwODIwMDgsIDB4MDIwMDAwMDgsIDB4MDAwMDAwMDAsIDB4MDAwODIwMDAsCisJMHgwMjAwMDAwMCwgMHgwMDA4MDAwMCwgMHgwMjAwMjAwOCwgMHgwMjA4MDAwOCwKKwkweDAwMDgwMDAwLCAweDAwMDAyMDAwLCAweDAyMDgyMDAwLCAweDAwMDAwMDA4LAorCTB4MDAwODAwMDAsIDB4MDAwMDIwMDAsIDB4MDIwMDAwMDgsIDB4MDIwODIwMDgsCisJMHgwMDAwMjAwOCwgMHgwMjAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDA4MjAwMCwKKwkweDAyMDgwMDA4LCAweDAyMDAyMDA4LCAweDAyMDAyMDAwLCAweDAwMDgwMDA4LAorCTB4MDIwODIwMDAsIDB4MDAwMDAwMDgsIDB4MDAwODAwMDgsIDB4MDIwMDIwMDAsCisJMHgwMjA4MjAwOCwgMHgwMDA4MDAwMCwgMHgwMjA4MDAwMCwgMHgwMjAwMDAwOCwKKwkweDAwMDgyMDAwLCAweDAwMDAyMDA4LCAweDAyMDAyMDA4LCAweDAyMDgwMDAwLAorCTB4MDAwMDAwMDgsIDB4MDIwODIwMDAsIDB4MDAwODIwMDgsIDB4MDAwMDAwMDAsCisJMHgwMjAwMDAwMCwgMHgwMjA4MDAwOCwgMHgwMDAwMjAwMCwgMHgwMDA4MjAwOCwKKworCTB4MDgwMDAwMDQsIDB4MDAwMjAwMDQsIDB4MDAwMDAwMDAsIDB4MDgwMjAyMDAsCisJMHgwMDAyMDAwNCwgMHgwMDAwMDIwMCwgMHgwODAwMDIwNCwgMHgwMDAyMDAwMCwKKwkweDAwMDAwMjA0LCAweDA4MDIwMjA0LCAweDAwMDIwMjAwLCAweDA4MDAwMDAwLAorCTB4MDgwMDAyMDAsIDB4MDgwMDAwMDQsIDB4MDgwMjAwMDAsIDB4MDAwMjAyMDQsCisJMHgwMDAyMDAwMCwgMHgwODAwMDIwNCwgMHgwODAyMDAwNCwgMHgwMDAwMDAwMCwKKwkweDAwMDAwMjAwLCAweDAwMDAwMDA0LCAweDA4MDIwMjAwLCAweDA4MDIwMDA0LAorCTB4MDgwMjAyMDQsIDB4MDgwMjAwMDAsIDB4MDgwMDAwMDAsIDB4MDAwMDAyMDQsCisJMHgwMDAwMDAwNCwgMHgwMDAyMDIwMCwgMHgwMDAyMDIwNCwgMHgwODAwMDIwMCwKKwkweDAwMDAwMjA0LCAweDA4MDAwMDAwLCAweDA4MDAwMjAwLCAweDAwMDIwMjA0LAorCTB4MDgwMjAyMDAsIDB4MDAwMjAwMDQsIDB4MDAwMDAwMDAsIDB4MDgwMDAyMDAsCisJMHgwODAwMDAwMCwgMHgwMDAwMDIwMCwgMHgwODAyMDAwNCwgMHgwMDAyMDAwMCwKKwkweDAwMDIwMDA0LCAweDA4MDIwMjA0LCAweDAwMDIwMjAwLCAweDAwMDAwMDA0LAorCTB4MDgwMjAyMDQsIDB4MDAwMjAyMDAsIDB4MDAwMjAwMDAsIDB4MDgwMDAyMDQsCisJMHgwODAwMDAwNCwgMHgwODAyMDAwMCwgMHgwMDAyMDIwNCwgMHgwMDAwMDAwMCwKKwkweDAwMDAwMjAwLCAweDA4MDAwMDA0LCAweDA4MDAwMjA0LCAweDA4MDIwMjAwLAorCTB4MDgwMjAwMDAsIDB4MDAwMDAyMDQsIDB4MDAwMDAwMDQsIDB4MDgwMjAwMDQsCisKKwkweDgwMDQwMTAwLCAweDAxMDAwMTAwLCAweDgwMDAwMDAwLCAweDgxMDQwMTAwLAorCTB4MDAwMDAwMDAsIDB4MDEwNDAwMDAsIDB4ODEwMDAxMDAsIDB4ODAwNDAwMDAsCisJMHgwMTA0MDEwMCwgMHg4MTAwMDAwMCwgMHgwMTAwMDAwMCwgMHg4MDAwMDEwMCwKKwkweDgxMDAwMDAwLCAweDgwMDQwMTAwLCAweDAwMDQwMDAwLCAweDAxMDAwMDAwLAorCTB4ODEwNDAwMDAsIDB4MDAwNDAxMDAsIDB4MDAwMDAxMDAsIDB4ODAwMDAwMDAsCisJMHgwMDA0MDEwMCwgMHg4MTAwMDEwMCwgMHgwMTA0MDAwMCwgMHgwMDAwMDEwMCwKKwkweDgwMDAwMTAwLCAweDAwMDAwMDAwLCAweDgwMDQwMDAwLCAweDAxMDQwMTAwLAorCTB4MDEwMDAxMDAsIDB4ODEwNDAwMDAsIDB4ODEwNDAxMDAsIDB4MDAwNDAwMDAsCisJMHg4MTA0MDAwMCwgMHg4MDAwMDEwMCwgMHgwMDA0MDAwMCwgMHg4MTAwMDAwMCwKKwkweDAwMDQwMTAwLCAweDAxMDAwMTAwLCAweDgwMDAwMDAwLCAweDAxMDQwMDAwLAorCTB4ODEwMDAxMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAxMDAsIDB4ODAwNDAwMDAsCisJMHgwMDAwMDAwMCwgMHg4MTA0MDAwMCwgMHgwMTA0MDEwMCwgMHgwMDAwMDEwMCwKKwkweDAxMDAwMDAwLCAweDgxMDQwMTAwLCAweDgwMDQwMTAwLCAweDAwMDQwMDAwLAorCTB4ODEwNDAxMDAsIDB4ODAwMDAwMDAsIDB4MDEwMDAxMDAsIDB4ODAwNDAxMDAsCisJMHg4MDA0MDAwMCwgMHgwMDA0MDEwMCwgMHgwMTA0MDAwMCwgMHg4MTAwMDEwMCwKKwkweDgwMDAwMTAwLCAweDAxMDAwMDAwLCAweDgxMDAwMDAwLCAweDAxMDQwMTAwLAorCisJMHgwNDAxMDgwMSwgMHgwMDAwMDAwMCwgMHgwMDAxMDgwMCwgMHgwNDAxMDAwMCwKKwkweDA0MDAwMDAxLCAweDAwMDAwODAxLCAweDA0MDAwODAwLCAweDAwMDEwODAwLAorCTB4MDAwMDA4MDAsIDB4MDQwMTAwMDEsIDB4MDAwMDAwMDEsIDB4MDQwMDA4MDAsCisJMHgwMDAxMDAwMSwgMHgwNDAxMDgwMCwgMHgwNDAxMDAwMCwgMHgwMDAwMDAwMSwKKwkweDAwMDEwMDAwLCAweDA0MDAwODAxLCAweDA0MDEwMDAxLCAweDAwMDAwODAwLAorCTB4MDAwMTA4MDEsIDB4MDQwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMTAwMDEsCisJMHgwNDAwMDgwMSwgMHgwMDAxMDgwMSwgMHgwNDAxMDgwMCwgMHgwNDAwMDAwMSwKKwkweDA0MDAwMDAwLCAweDAwMDEwMDAwLCAweDAwMDAwODAxLCAweDA0MDEwODAxLAorCTB4MDAwMTAwMDEsIDB4MDQwMTA4MDAsIDB4MDQwMDA4MDAsIDB4MDAwMTA4MDEsCisJMHgwNDAxMDgwMSwgMHgwMDAxMDAwMSwgMHgwNDAwMDAwMSwgMHgwMDAwMDAwMCwKKwkweDA0MDAwMDAwLCAweDAwMDAwODAxLCAweDAwMDEwMDAwLCAweDA0MDEwMDAxLAorCTB4MDAwMDA4MDAsIDB4MDQwMDAwMDAsIDB4MDAwMTA4MDEsIDB4MDQwMDA4MDEsCisJMHgwNDAxMDgwMCwgMHgwMDAwMDgwMCwgMHgwMDAwMDAwMCwgMHgwNDAwMDAwMSwKKwkweDAwMDAwMDAxLCAweDA0MDEwODAxLCAweDAwMDEwODAwLCAweDA0MDEwMDAwLAorCTB4MDQwMTAwMDEsIDB4MDAwMTAwMDAsIDB4MDAwMDA4MDEsIDB4MDQwMDA4MDAsCisJMHgwNDAwMDgwMSwgMHgwMDAwMDAwMSwgMHgwNDAxMDAwMCwgMHgwMDAxMDgwMCwKKworCTB4MDAwMDA0MDAsIDB4MDAwMDAwMjAsIDB4MDAxMDAwMjAsIDB4NDAxMDAwMDAsCisJMHg0MDEwMDQyMCwgMHg0MDAwMDQwMCwgMHgwMDAwMDQyMCwgMHgwMDAwMDAwMCwKKwkweDAwMTAwMDAwLCAweDQwMTAwMDIwLCAweDQwMDAwMDIwLCAweDAwMTAwNDAwLAorCTB4NDAwMDAwMDAsIDB4MDAxMDA0MjAsIDB4MDAxMDA0MDAsIDB4NDAwMDAwMjAsCisJMHg0MDEwMDAyMCwgMHgwMDAwMDQwMCwgMHg0MDAwMDQwMCwgMHg0MDEwMDQyMCwKKwkweDAwMDAwMDAwLCAweDAwMTAwMDIwLCAweDQwMTAwMDAwLCAweDAwMDAwNDIwLAorCTB4NDAxMDA0MDAsIDB4NDAwMDA0MjAsIDB4MDAxMDA0MjAsIDB4NDAwMDAwMDAsCisJMHg0MDAwMDQyMCwgMHg0MDEwMDQwMCwgMHgwMDAwMDAyMCwgMHgwMDEwMDAwMCwKKwkweDQwMDAwNDIwLCAweDAwMTAwNDAwLCAweDQwMTAwNDAwLCAweDQwMDAwMDIwLAorCTB4MDAwMDA0MDAsIDB4MDAwMDAwMjAsIDB4MDAxMDAwMDAsIDB4NDAxMDA0MDAsCisJMHg0MDEwMDAyMCwgMHg0MDAwMDQyMCwgMHgwMDAwMDQyMCwgMHgwMDAwMDAwMCwKKwkweDAwMDAwMDIwLCAweDQwMTAwMDAwLCAweDQwMDAwMDAwLCAweDAwMTAwMDIwLAorCTB4MDAwMDAwMDAsIDB4NDAxMDAwMjAsIDB4MDAxMDAwMjAsIDB4MDAwMDA0MjAsCisJMHg0MDAwMDAyMCwgMHgwMDAwMDQwMCwgMHg0MDEwMDQyMCwgMHgwMDEwMDAwMCwKKwkweDAwMTAwNDIwLCAweDQwMDAwMDAwLCAweDQwMDAwNDAwLCAweDQwMTAwNDIwLAorCTB4NDAxMDAwMDAsIDB4MDAxMDA0MjAsIDB4MDAxMDA0MDAsIDB4NDAwMDA0MDAsCisKKwkweDAwODAwMDAwLCAweDAwMDAxMDAwLCAweDAwMDAwMDQwLCAweDAwODAxMDQyLAorCTB4MDA4MDEwMDIsIDB4MDA4MDAwNDAsIDB4MDAwMDEwNDIsIDB4MDA4MDEwMDAsCisJMHgwMDAwMTAwMCwgMHgwMDAwMDAwMiwgMHgwMDgwMDAwMiwgMHgwMDAwMTA0MCwKKwkweDAwODAwMDQyLCAweDAwODAxMDAyLCAweDAwODAxMDQwLCAweDAwMDAwMDAwLAorCTB4MDAwMDEwNDAsIDB4MDA4MDAwMDAsIDB4MDAwMDEwMDIsIDB4MDAwMDAwNDIsCisJMHgwMDgwMDA0MCwgMHgwMDAwMTA0MiwgMHgwMDAwMDAwMCwgMHgwMDgwMDAwMiwKKwkweDAwMDAwMDAyLCAweDAwODAwMDQyLCAweDAwODAxMDQyLCAweDAwMDAxMDAyLAorCTB4MDA4MDEwMDAsIDB4MDAwMDAwNDAsIDB4MDAwMDAwNDIsIDB4MDA4MDEwNDAsCisJMHgwMDgwMTA0MCwgMHgwMDgwMDA0MiwgMHgwMDAwMTAwMiwgMHgwMDgwMTAwMCwKKwkweDAwMDAxMDAwLCAweDAwMDAwMDAyLCAweDAwODAwMDAyLCAweDAwODAwMDQwLAorCTB4MDA4MDAwMDAsIDB4MDAwMDEwNDAsIDB4MDA4MDEwNDIsIDB4MDAwMDAwMDAsCisJMHgwMDAwMTA0MiwgMHgwMDgwMDAwMCwgMHgwMDAwMDA0MCwgMHgwMDAwMTAwMiwKKwkweDAwODAwMDQyLCAweDAwMDAwMDQwLCAweDAwMDAwMDAwLCAweDAwODAxMDQyLAorCTB4MDA4MDEwMDIsIDB4MDA4MDEwNDAsIDB4MDAwMDAwNDIsIDB4MDAwMDEwMDAsCisJMHgwMDAwMTA0MCwgMHgwMDgwMTAwMiwgMHgwMDgwMDA0MCwgMHgwMDAwMDA0MiwKKwkweDAwMDAwMDAyLCAweDAwMDAxMDQyLCAweDAwODAxMDAwLCAweDAwODAwMDAyLAorCisJMHgxMDQwMDAwMCwgMHgwMDQwNDAxMCwgMHgwMDAwMDAxMCwgMHgxMDQwMDAxMCwKKwkweDEwMDA0MDAwLCAweDAwNDAwMDAwLCAweDEwNDAwMDEwLCAweDAwMDA0MDEwLAorCTB4MDA0MDAwMTAsIDB4MDAwMDQwMDAsIDB4MDA0MDQwMDAsIDB4MTAwMDAwMDAsCisJMHgxMDQwNDAxMCwgMHgxMDAwMDAxMCwgMHgxMDAwMDAwMCwgMHgxMDQwNDAwMCwKKwkweDAwMDAwMDAwLCAweDEwMDA0MDAwLCAweDAwNDA0MDEwLCAweDAwMDAwMDEwLAorCTB4MTAwMDAwMTAsIDB4MTA0MDQwMTAsIDB4MDAwMDQwMDAsIDB4MTA0MDAwMDAsCisJMHgxMDQwNDAwMCwgMHgwMDQwMDAxMCwgMHgxMDAwNDAxMCwgMHgwMDQwNDAwMCwKKwkweDAwMDA0MDEwLCAweDAwMDAwMDAwLCAweDAwNDAwMDAwLCAweDEwMDA0MDEwLAorCTB4MDA0MDQwMTAsIDB4MDAwMDAwMTAsIDB4MTAwMDAwMDAsIDB4MDAwMDQwMDAsCisJMHgxMDAwMDAxMCwgMHgxMDAwNDAwMCwgMHgwMDQwNDAwMCwgMHgxMDQwMDAxMCwKKwkweDAwMDAwMDAwLCAweDAwNDA0MDEwLCAweDAwMDA0MDEwLCAweDEwNDA0MDAwLAorCTB4MTAwMDQwMDAsIDB4MDA0MDAwMDAsIDB4MTA0MDQwMTAsIDB4MTAwMDAwMDAsCisJMHgxMDAwNDAxMCwgMHgxMDQwMDAwMCwgMHgwMDQwMDAwMCwgMHgxMDQwNDAxMCwKKwkweDAwMDA0MDAwLCAweDAwNDAwMDEwLCAweDEwNDAwMDEwLCAweDAwMDA0MDEwLAorCTB4MDA0MDAwMTAsIDB4MDAwMDAwMDAsIDB4MTA0MDQwMDAsIDB4MTAwMDAwMTAsCisJMHgxMDQwMDAwMCwgMHgxMDAwNDAxMCwgMHgwMDAwMDAxMCwgMHgwMDQwNDAwMCwKKworCTB4MDAyMDgwODAsIDB4MDAwMDgwMDAsIDB4MjAyMDAwMDAsIDB4MjAyMDgwODAsCisJMHgwMDIwMDAwMCwgMHgyMDAwODA4MCwgMHgyMDAwODAwMCwgMHgyMDIwMDAwMCwKKwkweDIwMDA4MDgwLCAweDAwMjA4MDgwLCAweDAwMjA4MDAwLCAweDIwMDAwMDgwLAorCTB4MjAyMDAwODAsIDB4MDAyMDAwMDAsIDB4MDAwMDAwMDAsIDB4MjAwMDgwMDAsCisJMHgwMDAwODAwMCwgMHgyMDAwMDAwMCwgMHgwMDIwMDA4MCwgMHgwMDAwODA4MCwKKwkweDIwMjA4MDgwLCAweDAwMjA4MDAwLCAweDIwMDAwMDgwLCAweDAwMjAwMDgwLAorCTB4MjAwMDAwMDAsIDB4MDAwMDAwODAsIDB4MDAwMDgwODAsIDB4MjAyMDgwMDAsCisJMHgwMDAwMDA4MCwgMHgyMDIwMDA4MCwgMHgyMDIwODAwMCwgMHgwMDAwMDAwMCwKKwkweDAwMDAwMDAwLCAweDIwMjA4MDgwLCAweDAwMjAwMDgwLCAweDIwMDA4MDAwLAorCTB4MDAyMDgwODAsIDB4MDAwMDgwMDAsIDB4MjAwMDAwODAsIDB4MDAyMDAwODAsCisJMHgyMDIwODAwMCwgMHgwMDAwMDA4MCwgMHgwMDAwODA4MCwgMHgyMDIwMDAwMCwKKwkweDIwMDA4MDgwLCAweDIwMDAwMDAwLCAweDIwMjAwMDAwLCAweDAwMjA4MDAwLAorCTB4MjAyMDgwODAsIDB4MDAwMDgwODAsIDB4MDAyMDgwMDAsIDB4MjAyMDAwODAsCisJMHgwMDIwMDAwMCwgMHgyMDAwMDA4MCwgMHgyMDAwODAwMCwgMHgwMDAwMDAwMCwKKwkweDAwMDA4MDAwLCAweDAwMjAwMDAwLCAweDIwMjAwMDgwLCAweDAwMjA4MDgwLAorCTB4MjAwMDAwMDAsIDB4MjAyMDgwMDAsIDB4MDAwMDAwODAsIDB4MjAwMDgwODAsCit9OworCitzdGF0aWMgY29uc3QgdTggcm90b3JzW10gPSB7CisJMzQsIDEzLCAgNSwgNDYsIDQ3LCAxOCwgMzIsIDQxLCAxMSwgNTMsIDMzLCAyMCwKKwkxNCwgMzYsIDMwLCAyNCwgNDksICAyLCAxNSwgMzcsIDQyLCA1MCwgIDAsIDIxLAorCTM4LCA0OCwgIDYsIDI2LCAzOSwgIDQsIDUyLCAyNSwgMTIsIDI3LCAzMSwgNDAsCisJMSwgMTcsIDI4LCAyOSwgMjMsIDUxLCAzNSwgIDcsICAzLCAyMiwgIDksIDQzLAorCisJNDEsIDIwLCAxMiwgNTMsIDU0LCAyNSwgMzksIDQ4LCAxOCwgMzEsIDQwLCAyNywKKwkyMSwgNDMsIDM3LCAgMCwgIDEsICA5LCAyMiwgNDQsIDQ5LCAgMiwgIDcsIDI4LAorCTQ1LCA1NSwgMTMsIDMzLCA0NiwgMTEsICA2LCAzMiwgMTksIDM0LCAzOCwgNDcsCisJOCwgMjQsIDM1LCAzNiwgMzAsICAzLCA0MiwgMTQsIDEwLCAyOSwgMTYsIDUwLAorCisJNTUsIDM0LCAyNiwgMzgsIDExLCAzOSwgNTMsICA1LCAzMiwgNDUsIDU0LCA0MSwKKwkzNSwgIDIsIDUxLCAxNCwgMTUsIDIzLCAzNiwgIDMsICA4LCAxNiwgMjEsIDQyLAorCTYsIDEyLCAyNywgNDcsIDMxLCAyNSwgMjAsIDQ2LCAzMywgNDgsIDUyLCAgNCwKKwkyMiwgIDcsIDQ5LCA1MCwgNDQsIDE3LCAgMSwgMjgsIDI0LCA0MywgMzAsICA5LAorCisJMTIsIDQ4LCA0MCwgNTIsIDI1LCA1MywgMzgsIDE5LCA0NiwgIDYsIDExLCA1NSwKKwk0OSwgMTYsIDEwLCAyOCwgMjksIDM3LCA1MCwgMTcsIDIyLCAzMCwgMzUsICAxLAorCTIwLCAyNiwgNDEsICA0LCA0NSwgMzksIDM0LCAzMSwgNDcsICA1LCAxMywgMTgsCisJMzYsIDIxLCAgOCwgIDksICAzLCAgMCwgMTUsIDQyLCAgNywgIDIsIDQ0LCAyMywKKworCTI2LCAgNSwgNTQsIDEzLCAzOSwgMzgsIDUyLCAzMywgMzEsIDIwLCAyNSwgMTIsCisJOCwgMzAsIDI0LCA0MiwgNDMsIDUxLCAgOSwgIDAsIDM2LCA0NCwgNDksIDE1LAorCTM0LCA0MCwgNTUsIDE4LCAgNiwgNTMsIDQ4LCA0NSwgIDQsIDE5LCAyNywgMzIsCisJNTAsIDM1LCAyMiwgMjMsIDE3LCAxNCwgMjksICAxLCAyMSwgMTYsICAzLCAzNywKKworCTQwLCAxOSwgMTEsIDI3LCA1MywgNTIsIDEzLCA0NywgNDUsIDM0LCAzOSwgMjYsCisJMjIsIDQ0LCAgNywgIDEsICAyLCAxMCwgMjMsIDE0LCA1MCwgIDMsICA4LCAyOSwKKwk0OCwgNTQsIDEyLCAzMiwgMjAsIDM4LCAgNSwgIDYsIDE4LCAzMywgNDEsIDQ2LAorCTksIDQ5LCAzNiwgMzcsICAwLCAyOCwgNDMsIDE1LCAzNSwgMzAsIDE3LCA1MSwKKworCTU0LCAzMywgMjUsIDQxLCAzOCwgMTMsIDI3LCAgNCwgIDYsIDQ4LCA1MywgNDAsCisJMzYsICAzLCAyMSwgMTUsIDE2LCAyNCwgMzcsIDI4LCAgOSwgMTcsIDIyLCA0MywKKwk1LCAxMSwgMjYsIDQ2LCAzNCwgNTIsIDE5LCAyMCwgMzIsIDQ3LCA1NSwgMzEsCisJMjMsICA4LCA1MCwgNTEsIDE0LCA0MiwgIDIsIDI5LCA0OSwgNDQsICAwLCAxMCwKKworCTExLCA0NywgMzksIDU1LCA1MiwgMjcsIDQxLCAxOCwgMjAsICA1LCAzOCwgNTQsCisJNTAsIDE3LCAzNSwgMjksIDMwLCAgNywgNTEsIDQyLCAyMywgIDAsIDM2LCAgMiwKKwkxOSwgMjUsIDQwLCAzMSwgNDgsIDEzLCAzMywgMzQsIDQ2LCAgNCwgMTIsIDQ1LAorCTM3LCAyMiwgIDksIDEwLCAyOCwgIDEsIDE2LCA0MywgIDgsICAzLCAxNCwgMjQsCisKKwkxOCwgNTQsIDQ2LCAgNSwgIDYsIDM0LCA0OCwgMjUsIDI3LCAxMiwgNDUsICA0LAorCTIsIDI0LCA0MiwgMzYsIDM3LCAxNCwgIDMsIDQ5LCAzMCwgIDcsIDQzLCAgOSwKKwkyNiwgMzIsIDQ3LCAzOCwgNTUsIDIwLCA0MCwgNDEsIDUzLCAxMSwgMTksIDUyLAorCTQ0LCAyOSwgMTYsIDE3LCAzNSwgIDgsIDIzLCA1MCwgMTUsIDEwLCAyMSwgIDAsCisKKwkzMiwgMTEsIDMxLCAxOSwgMjAsIDQ4LCAgNSwgMzksIDQxLCAyNiwgIDYsIDE4LAorCTE2LCAgNywgIDEsIDUwLCA1MSwgMjgsIDE3LCAgOCwgNDQsIDIxLCAgMiwgMjMsCisJNDAsIDQ2LCAgNCwgNTIsIDEyLCAzNCwgNTQsIDU1LCAzOCwgMjUsIDMzLCAxMywKKwkzLCA0MywgMzAsICAwLCA0OSwgMjIsIDM3LCAgOSwgMjksIDI0LCAzNSwgMTQsCisKKwk0NiwgMjUsIDQ1LCAzMywgMzQsICA1LCAxOSwgNTMsIDU1LCA0MCwgMjAsIDMyLAorCTMwLCAyMSwgMTUsICA5LCAxMCwgNDIsICAwLCAyMiwgIDMsIDM1LCAxNiwgMzcsCisJNTQsIDMxLCAxOCwgMTMsIDI2LCA0OCwgMTEsIDEyLCA1MiwgMzksIDQ3LCAyNywKKwkxNywgIDIsIDQ0LCAxNCwgIDgsIDM2LCA1MSwgMjMsIDQzLCAgNywgNDksIDI4LAorCisJMzEsIDM5LCAgNiwgNDcsIDQ4LCAxOSwgMzMsIDM4LCAxMiwgNTQsIDM0LCA0NiwKKwk0NCwgMzUsIDI5LCAyMywgMjQsICAxLCAxNCwgMzYsIDE3LCA0OSwgMzAsIDUxLAorCTExLCA0NSwgMzIsIDI3LCA0MCwgIDUsIDI1LCAyNiwgMTMsIDUzLCAgNCwgNDEsCisJMCwgMTYsICAzLCAyOCwgMjIsIDUwLCAxMCwgMzcsICAyLCAyMSwgIDgsIDQyLAorCisJNDUsIDUzLCAyMCwgIDQsICA1LCAzMywgNDcsIDUyLCAyNiwgMTEsIDQ4LCAzMSwKKwkzLCA0OSwgNDMsIDM3LCAgNywgMTUsIDI4LCA1MCwgIDAsICA4LCA0NCwgMTAsCisJMjUsICA2LCA0NiwgNDEsIDU0LCAxOSwgMzksIDQwLCAyNywgMzgsIDE4LCA1NSwKKwkxNCwgMzAsIDE3LCA0MiwgMzYsICA5LCAyNCwgNTEsIDE2LCAzNSwgMjIsICAxLAorCisJNiwgMzgsIDM0LCAxOCwgMTksIDQ3LCAgNCwgMTMsIDQwLCAyNSwgIDUsIDQ1LAorCTE3LCAgOCwgIDIsIDUxLCAyMSwgMjksIDQyLCAgOSwgMTQsIDIyLCAgMywgMjQsCisJMzksIDIwLCAzMSwgNTUsIDExLCAzMywgNTMsIDU0LCA0MSwgNTIsIDMyLCAxMiwKKwkyOCwgNDQsICAwLCAgMSwgNTAsIDIzLCAgNywgMTAsIDMwLCA0OSwgMzYsIDE1LAorCisJMjAsIDUyLCA0OCwgMzIsIDMzLCAgNCwgMTgsIDI3LCA1NCwgMzksIDE5LCAgNiwKKwkwLCAyMiwgMTYsIDEwLCAzNSwgNDMsICAxLCAyMywgMjgsIDM2LCAxNywgIDcsCisJNTMsIDM0LCA0NSwgMTIsIDI1LCA0NywgMzgsIDExLCA1NSwgMTMsIDQ2LCAyNiwKKwk0MiwgIDMsIDE0LCAxNSwgIDksIDM3LCAyMSwgMjQsIDQ0LCAgOCwgNTAsIDI5LAorCisJMjcsICA2LCA1NSwgMzksIDQwLCAxMSwgMjUsIDM0LCAgNCwgNDYsIDI2LCAxMywKKwk3LCAyOSwgMjMsIDE3LCA0MiwgNTAsICA4LCAzMCwgMzUsIDQzLCAyNCwgMTQsCisJMzEsIDQxLCA1MiwgMTksIDMyLCA1NCwgNDUsIDE4LCAgNSwgMjAsIDUzLCAzMywKKwk0OSwgMTAsIDIxLCAyMiwgMTYsIDQ0LCAyOCwgIDAsIDUxLCAxNSwgIDIsIDM2LAorfTsKKworc3RhdGljIGNvbnN0IHU4IHBhcml0eVtdID0geworCTgsMSwwLDgsMCw4LDgsMCwwLDgsOCwwLDgsMCwyLDgsMCw4LDgsMCw4LDAsMCw4LDgsMCwwLDgsMCw4LDgsMywKKwkwLDgsOCwwLDgsMCwwLDgsOCwwLDAsOCwwLDgsOCwwLDgsMCwwLDgsMCw4LDgsMCwwLDgsOCwwLDgsMCwwLDgsCisJMCw4LDgsMCw4LDAsMCw4LDgsMCwwLDgsMCw4LDgsMCw4LDAsMCw4LDAsOCw4LDAsMCw4LDgsMCw4LDAsMCw4LAorCTgsMCwwLDgsMCw4LDgsMCwwLDgsOCwwLDgsMCwwLDgsMCw4LDgsMCw4LDAsMCw4LDgsMCwwLDgsMCw4LDgsMCwKKwkwLDgsOCwwLDgsMCwwLDgsOCwwLDAsOCwwLDgsOCwwLDgsMCwwLDgsMCw4LDgsMCwwLDgsOCwwLDgsMCwwLDgsCisJOCwwLDAsOCwwLDgsOCwwLDAsOCw4LDAsOCwwLDAsOCwwLDgsOCwwLDgsMCwwLDgsOCwwLDAsOCwwLDgsOCwwLAorCTgsMCwwLDgsMCw4LDgsMCwwLDgsOCwwLDgsMCwwLDgsMCw4LDgsMCw4LDAsMCw4LDgsMCwwLDgsMCw4LDgsMCwKKwk0LDgsOCwwLDgsMCwwLDgsOCwwLDAsOCwwLDgsOCwwLDgsNSwwLDgsMCw4LDgsMCwwLDgsOCwwLDgsMCw2LDgsCit9OworCisKK3N0YXRpYyB2b2lkIGRlc19zbWFsbF9maXBzX2VuY3J5cHQodTMyICpleHBrZXksIHU4ICpkc3QsIGNvbnN0IHU4ICpzcmMpCit7CisJdTMyIHgsIHksIHo7CisJCisJeCAgPSBzcmNbN107CisJeCA8PD0gODsKKwl4IHw9IHNyY1s2XTsKKwl4IDw8PSA4OworCXggfD0gc3JjWzVdOworCXggPDw9IDg7CisJeCB8PSBzcmNbNF07CisJeSAgPSBzcmNbM107CisJeSA8PD0gODsKKwl5IHw9IHNyY1syXTsKKwl5IDw8PSA4OworCXkgfD0gc3JjWzFdOworCXkgPDw9IDg7CisJeSB8PSBzcmNbMF07CisJeiAgPSAoKHggPj4gMDA0KSBeIHkpICYgMHgwRjBGMEYwRkw7CisJeCBePSB6IDw8IDAwNDsKKwl5IF49IHo7CisJeiAgPSAoKHkgPj4gMDIwKSBeIHgpICYgMHgwMDAwRkZGRkw7CisJeSBePSB6IDw8IDAyMDsKKwl4IF49IHo7CisJeiAgPSAoKHggPj4gMDAyKSBeIHkpICYgMHgzMzMzMzMzM0w7CisJeCBePSB6IDw8IDAwMjsKKwl5IF49IHo7CisJeiAgPSAoKHkgPj4gMDEwKSBeIHgpICYgMHgwMEZGMDBGRkw7CisJeSBePSB6IDw8IDAxMDsKKwl4IF49IHo7CisJeCAgPSB4ID4+IDEgfCB4IDw8IDMxOworCXogID0gKHggXiB5KSAmIDB4NTU1NTU1NTVMOworCXkgXj0gejsKKwl4IF49IHo7CisJeSAgPSB5ID4+IDEgfCB5IDw8IDMxOworCXogID0gZXhwa2V5WzBdOworCXogXj0geTsKKwl4IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMTkyKSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDEyOCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyA2NCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXggXj0gKiAodTMyICopICgodTggKikgZGVzX2tleW1hcCArICgweEZDICYgeikpOworCXogID0gZXhwa2V5WzFdOworCXogXj0geTsKKwl6ICA9IHogPDwgNCB8IHogPj4gMjg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDQ0OCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAzODQpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl4IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMzIwKSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDI1NikgKyAoMHhGQyAmIHopKTsKKwl6ICA9IGV4cGtleVsyXTsKKwl6IF49IHg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDE5MikgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAxMjgpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl5IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgNjQpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl5IF49ICogKHUzMiAqKSAoKHU4ICopIGRlc19rZXltYXAgKyAoMHhGQyAmIHopKTsKKwl6ICA9IGV4cGtleVszXTsKKwl6IF49IHg7CisJeiAgPSB6IDw8IDQgfCB6ID4+IDI4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyA0NDgpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl5IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMzg0KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDMyMCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAyNTYpICsgKDB4RkMgJiB6KSk7CisJeiAgPSBleHBrZXlbNF07CisJeiBePSB5OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAxOTIpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl4IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMTI4KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDY0KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSBkZXNfa2V5bWFwICsgKDB4RkMgJiB6KSk7CisJeiAgPSBleHBrZXlbNV07CisJeiBePSB5OworCXogID0geiA8PCA0IHwgeiA+PiAyODsKKwl4IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgNDQ4KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDM4NCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAzMjApICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl4IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMjU2KSArICgweEZDICYgeikpOworCXogID0gZXhwa2V5WzZdOworCXogXj0geDsKKwl5IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMTkyKSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDEyOCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyA2NCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXkgXj0gKiAodTMyICopICgodTggKikgZGVzX2tleW1hcCArICgweEZDICYgeikpOworCXogID0gZXhwa2V5WzddOworCXogXj0geDsKKwl6ICA9IHogPDwgNCB8IHogPj4gMjg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDQ0OCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAzODQpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl5IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMzIwKSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDI1NikgKyAoMHhGQyAmIHopKTsKKwl6ICA9IGV4cGtleVs4XTsKKwl6IF49IHk7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDE5MikgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAxMjgpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl4IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgNjQpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl4IF49ICogKHUzMiAqKSAoKHU4ICopIGRlc19rZXltYXAgKyAoMHhGQyAmIHopKTsKKwl6ICA9IGV4cGtleVs5XTsKKwl6IF49IHk7CisJeiAgPSB6IDw8IDQgfCB6ID4+IDI4OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyA0NDgpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl4IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMzg0KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDMyMCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAyNTYpICsgKDB4RkMgJiB6KSk7CisJeiAgPSBleHBrZXlbMTBdOworCXogXj0geDsKKwl5IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMTkyKSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDEyOCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyA2NCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXkgXj0gKiAodTMyICopICgodTggKikgZGVzX2tleW1hcCArICgweEZDICYgeikpOworCXogID0gZXhwa2V5WzExXTsKKwl6IF49IHg7CisJeiAgPSB6IDw8IDQgfCB6ID4+IDI4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyA0NDgpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl5IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMzg0KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDMyMCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAyNTYpICsgKDB4RkMgJiB6KSk7CisJeiAgPSBleHBrZXlbMTJdOworCXogXj0geTsKKwl4IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMTkyKSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDEyOCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyA2NCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXggXj0gKiAodTMyICopICgodTggKikgZGVzX2tleW1hcCArICgweEZDICYgeikpOworCXogID0gZXhwa2V5WzEzXTsKKwl6IF49IHk7CisJeiAgPSB6IDw8IDQgfCB6ID4+IDI4OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyA0NDgpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl4IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMzg0KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDMyMCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAyNTYpICsgKDB4RkMgJiB6KSk7CisJeiAgPSBleHBrZXlbMTRdOworCXogXj0geDsKKwl5IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMTkyKSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDEyOCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyA2NCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXkgXj0gKiAodTMyICopICgodTggKikgZGVzX2tleW1hcCArICgweEZDICYgeikpOworCXogID0gZXhwa2V5WzE1XTsKKwl6IF49IHg7CisJeiAgPSB6IDw8IDQgfCB6ID4+IDI4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyA0NDgpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl5IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMzg0KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDMyMCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAyNTYpICsgKDB4RkMgJiB6KSk7CisJeiAgPSBleHBrZXlbMTZdOworCXogXj0geTsKKwl4IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMTkyKSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDEyOCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyA2NCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXggXj0gKiAodTMyICopICgodTggKikgZGVzX2tleW1hcCArICgweEZDICYgeikpOworCXogID0gZXhwa2V5WzE3XTsKKwl6IF49IHk7CisJeiAgPSB6IDw8IDQgfCB6ID4+IDI4OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyA0NDgpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl4IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMzg0KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDMyMCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAyNTYpICsgKDB4RkMgJiB6KSk7CisJeiAgPSBleHBrZXlbMThdOworCXogXj0geDsKKwl5IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMTkyKSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDEyOCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyA2NCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXkgXj0gKiAodTMyICopICgodTggKikgZGVzX2tleW1hcCArICgweEZDICYgeikpOworCXogID0gZXhwa2V5WzE5XTsKKwl6IF49IHg7CisJeiAgPSB6IDw8IDQgfCB6ID4+IDI4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyA0NDgpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl5IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMzg0KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDMyMCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAyNTYpICsgKDB4RkMgJiB6KSk7CisJeiAgPSBleHBrZXlbMjBdOworCXogXj0geTsKKwl4IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMTkyKSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDEyOCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyA2NCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXggXj0gKiAodTMyICopICgodTggKikgZGVzX2tleW1hcCArICgweEZDICYgeikpOworCXogID0gZXhwa2V5WzIxXTsKKwl6IF49IHk7CisJeiAgPSB6IDw8IDQgfCB6ID4+IDI4OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyA0NDgpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl4IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMzg0KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDMyMCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAyNTYpICsgKDB4RkMgJiB6KSk7CisJeiAgPSBleHBrZXlbMjJdOworCXogXj0geDsKKwl5IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMTkyKSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDEyOCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyA2NCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXkgXj0gKiAodTMyICopICgodTggKikgZGVzX2tleW1hcCArICgweEZDICYgeikpOworCXogID0gZXhwa2V5WzIzXTsKKwl6IF49IHg7CisJeiAgPSB6IDw8IDQgfCB6ID4+IDI4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyA0NDgpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl5IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMzg0KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDMyMCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAyNTYpICsgKDB4RkMgJiB6KSk7CisJeiAgPSBleHBrZXlbMjRdOworCXogXj0geTsKKwl4IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMTkyKSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDEyOCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyA2NCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXggXj0gKiAodTMyICopICgodTggKikgZGVzX2tleW1hcCArICgweEZDICYgeikpOworCXogID0gZXhwa2V5WzI1XTsKKwl6IF49IHk7CisJeiAgPSB6IDw8IDQgfCB6ID4+IDI4OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyA0NDgpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl4IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMzg0KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDMyMCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAyNTYpICsgKDB4RkMgJiB6KSk7CisJeiAgPSBleHBrZXlbMjZdOworCXogXj0geDsKKwl5IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMTkyKSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDEyOCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyA2NCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXkgXj0gKiAodTMyICopICgodTggKikgZGVzX2tleW1hcCArICgweEZDICYgeikpOworCXogID0gZXhwa2V5WzI3XTsKKwl6IF49IHg7CisJeiAgPSB6IDw8IDQgfCB6ID4+IDI4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyA0NDgpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl5IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMzg0KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDMyMCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAyNTYpICsgKDB4RkMgJiB6KSk7CisJeiAgPSBleHBrZXlbMjhdOworCXogXj0geTsKKwl4IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMTkyKSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDEyOCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyA2NCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXggXj0gKiAodTMyICopICgodTggKikgZGVzX2tleW1hcCArICgweEZDICYgeikpOworCXogID0gZXhwa2V5WzI5XTsKKwl6IF49IHk7CisJeiAgPSB6IDw8IDQgfCB6ID4+IDI4OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyA0NDgpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl4IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMzg0KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDMyMCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAyNTYpICsgKDB4RkMgJiB6KSk7CisJeiAgPSBleHBrZXlbMzBdOworCXogXj0geDsKKwl5IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMTkyKSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDEyOCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyA2NCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXkgXj0gKiAodTMyICopICgodTggKikgZGVzX2tleW1hcCArICgweEZDICYgeikpOworCXogID0gZXhwa2V5WzMxXTsKKwl6IF49IHg7CisJeiAgPSB6IDw8IDQgfCB6ID4+IDI4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyA0NDgpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl5IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMzg0KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDMyMCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAyNTYpICsgKDB4RkMgJiB6KSk7CisJeCAgPSB4IDw8IDEgfCB4ID4+IDMxOworCXogID0gKHggXiB5KSAmIDB4NTU1NTU1NTVMOworCXkgXj0gejsKKwl4IF49IHo7CisJeSAgPSB5IDw8IDEgfCB5ID4+IDMxOworCXogID0gKCh4ID4+IDAxMCkgXiB5KSAmIDB4MDBGRjAwRkZMOworCXggXj0geiA8PCAwMTA7CisJeSBePSB6OworCXogID0gKCh5ID4+IDAwMikgXiB4KSAmIDB4MzMzMzMzMzNMOworCXkgXj0geiA8PCAwMDI7CisJeCBePSB6OworCXogID0gKCh4ID4+IDAyMCkgXiB5KSAmIDB4MDAwMEZGRkZMOworCXggXj0geiA8PCAwMjA7CisJeSBePSB6OworCXogID0gKCh5ID4+IDAwNCkgXiB4KSAmIDB4MEYwRjBGMEZMOworCXkgXj0geiA8PCAwMDQ7CisJeCBePSB6OworCWRzdFswXSA9IHg7CisJeCA+Pj0gODsKKwlkc3RbMV0gPSB4OworCXggPj49IDg7CisJZHN0WzJdID0geDsKKwl4ID4+PSA4OworCWRzdFszXSA9IHg7CisJZHN0WzRdID0geTsKKwl5ID4+PSA4OworCWRzdFs1XSA9IHk7CisJeSA+Pj0gODsKKwlkc3RbNl0gPSB5OworCXkgPj49IDg7CisJZHN0WzddID0geTsKK30KKworc3RhdGljIHZvaWQgZGVzX3NtYWxsX2ZpcHNfZGVjcnlwdCh1MzIgKmV4cGtleSwgdTggKmRzdCwgY29uc3QgdTggKnNyYykKK3sKKwl1MzIgeCwgeSwgejsKKwkKKwl4ICA9IHNyY1s3XTsKKwl4IDw8PSA4OworCXggfD0gc3JjWzZdOworCXggPDw9IDg7CisJeCB8PSBzcmNbNV07CisJeCA8PD0gODsKKwl4IHw9IHNyY1s0XTsKKwl5ICA9IHNyY1szXTsKKwl5IDw8PSA4OworCXkgfD0gc3JjWzJdOworCXkgPDw9IDg7CisJeSB8PSBzcmNbMV07CisJeSA8PD0gODsKKwl5IHw9IHNyY1swXTsKKwl6ICA9ICgoeCA+PiAwMDQpIF4geSkgJiAweDBGMEYwRjBGTDsKKwl4IF49IHogPDwgMDA0OworCXkgXj0gejsKKwl6ICA9ICgoeSA+PiAwMjApIF4geCkgJiAweDAwMDBGRkZGTDsKKwl5IF49IHogPDwgMDIwOworCXggXj0gejsKKwl6ICA9ICgoeCA+PiAwMDIpIF4geSkgJiAweDMzMzMzMzMzTDsKKwl4IF49IHogPDwgMDAyOworCXkgXj0gejsKKwl6ICA9ICgoeSA+PiAwMTApIF4geCkgJiAweDAwRkYwMEZGTDsKKwl5IF49IHogPDwgMDEwOworCXggXj0gejsKKwl4ICA9IHggPj4gMSB8IHggPDwgMzE7CisJeiAgPSAoeCBeIHkpICYgMHg1NTU1NTU1NUw7CisJeSBePSB6OworCXggXj0gejsKKwl5ICA9IHkgPj4gMSB8IHkgPDwgMzE7CisJeiAgPSBleHBrZXlbMzFdOworCXogXj0geTsKKwl6ICA9IHogPDwgNCB8IHogPj4gMjg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDQ0OCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAzODQpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl4IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMzIwKSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDI1NikgKyAoMHhGQyAmIHopKTsKKwl6ICA9IGV4cGtleVszMF07CisJeiBePSB5OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAxOTIpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl4IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMTI4KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDY0KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSBkZXNfa2V5bWFwICsgKDB4RkMgJiB6KSk7CisJeiAgPSBleHBrZXlbMjldOworCXogXj0geDsKKwl6ICA9IHogPDwgNCB8IHogPj4gMjg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDQ0OCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAzODQpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl5IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMzIwKSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDI1NikgKyAoMHhGQyAmIHopKTsKKwl6ICA9IGV4cGtleVsyOF07CisJeiBePSB4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAxOTIpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl5IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMTI4KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDY0KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSBkZXNfa2V5bWFwICsgKDB4RkMgJiB6KSk7CisJeiAgPSBleHBrZXlbMjddOworCXogXj0geTsKKwl6ICA9IHogPDwgNCB8IHogPj4gMjg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDQ0OCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAzODQpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl4IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMzIwKSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDI1NikgKyAoMHhGQyAmIHopKTsKKwl6ICA9IGV4cGtleVsyNl07CisJeiBePSB5OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAxOTIpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl4IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMTI4KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDY0KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSBkZXNfa2V5bWFwICsgKDB4RkMgJiB6KSk7CisJeiAgPSBleHBrZXlbMjVdOworCXogXj0geDsKKwl6ICA9IHogPDwgNCB8IHogPj4gMjg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDQ0OCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAzODQpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl5IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMzIwKSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDI1NikgKyAoMHhGQyAmIHopKTsKKwl6ICA9IGV4cGtleVsyNF07CisJeiBePSB4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAxOTIpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl5IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMTI4KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDY0KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSBkZXNfa2V5bWFwICsgKDB4RkMgJiB6KSk7CisJeiAgPSBleHBrZXlbMjNdOworCXogXj0geTsKKwl6ICA9IHogPDwgNCB8IHogPj4gMjg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDQ0OCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAzODQpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl4IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMzIwKSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDI1NikgKyAoMHhGQyAmIHopKTsKKwl6ICA9IGV4cGtleVsyMl07CisJeiBePSB5OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAxOTIpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl4IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMTI4KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDY0KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSBkZXNfa2V5bWFwICsgKDB4RkMgJiB6KSk7CisJeiAgPSBleHBrZXlbMjFdOworCXogXj0geDsKKwl6ICA9IHogPDwgNCB8IHogPj4gMjg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDQ0OCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAzODQpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl5IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMzIwKSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDI1NikgKyAoMHhGQyAmIHopKTsKKwl6ICA9IGV4cGtleVsyMF07CisJeiBePSB4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAxOTIpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl5IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMTI4KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDY0KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSBkZXNfa2V5bWFwICsgKDB4RkMgJiB6KSk7CisJeiAgPSBleHBrZXlbMTldOworCXogXj0geTsKKwl6ICA9IHogPDwgNCB8IHogPj4gMjg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDQ0OCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAzODQpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl4IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMzIwKSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDI1NikgKyAoMHhGQyAmIHopKTsKKwl6ICA9IGV4cGtleVsxOF07CisJeiBePSB5OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAxOTIpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl4IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMTI4KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDY0KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSBkZXNfa2V5bWFwICsgKDB4RkMgJiB6KSk7CisJeiAgPSBleHBrZXlbMTddOworCXogXj0geDsKKwl6ICA9IHogPDwgNCB8IHogPj4gMjg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDQ0OCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAzODQpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl5IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMzIwKSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDI1NikgKyAoMHhGQyAmIHopKTsKKwl6ICA9IGV4cGtleVsxNl07CisJeiBePSB4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAxOTIpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl5IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMTI4KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDY0KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSBkZXNfa2V5bWFwICsgKDB4RkMgJiB6KSk7CisJeiAgPSBleHBrZXlbMTVdOworCXogXj0geTsKKwl6ICA9IHogPDwgNCB8IHogPj4gMjg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDQ0OCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAzODQpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl4IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMzIwKSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDI1NikgKyAoMHhGQyAmIHopKTsKKwl6ICA9IGV4cGtleVsxNF07CisJeiBePSB5OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAxOTIpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl4IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMTI4KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDY0KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSBkZXNfa2V5bWFwICsgKDB4RkMgJiB6KSk7CisJeiAgPSBleHBrZXlbMTNdOworCXogXj0geDsKKwl6ICA9IHogPDwgNCB8IHogPj4gMjg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDQ0OCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAzODQpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl5IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMzIwKSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDI1NikgKyAoMHhGQyAmIHopKTsKKwl6ICA9IGV4cGtleVsxMl07CisJeiBePSB4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAxOTIpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl5IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMTI4KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDY0KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSBkZXNfa2V5bWFwICsgKDB4RkMgJiB6KSk7CisJeiAgPSBleHBrZXlbMTFdOworCXogXj0geTsKKwl6ICA9IHogPDwgNCB8IHogPj4gMjg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDQ0OCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAzODQpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl4IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMzIwKSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDI1NikgKyAoMHhGQyAmIHopKTsKKwl6ICA9IGV4cGtleVsxMF07CisJeiBePSB5OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAxOTIpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl4IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMTI4KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDY0KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSBkZXNfa2V5bWFwICsgKDB4RkMgJiB6KSk7CisJeiAgPSBleHBrZXlbOV07CisJeiBePSB4OworCXogID0geiA8PCA0IHwgeiA+PiAyODsKKwl5IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgNDQ4KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDM4NCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAzMjApICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl5IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMjU2KSArICgweEZDICYgeikpOworCXogID0gZXhwa2V5WzhdOworCXogXj0geDsKKwl5IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMTkyKSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDEyOCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyA2NCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXkgXj0gKiAodTMyICopICgodTggKikgZGVzX2tleW1hcCArICgweEZDICYgeikpOworCXogID0gZXhwa2V5WzddOworCXogXj0geTsKKwl6ICA9IHogPDwgNCB8IHogPj4gMjg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDQ0OCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAzODQpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl4IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMzIwKSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDI1NikgKyAoMHhGQyAmIHopKTsKKwl6ICA9IGV4cGtleVs2XTsKKwl6IF49IHk7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDE5MikgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAxMjgpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl4IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgNjQpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl4IF49ICogKHUzMiAqKSAoKHU4ICopIGRlc19rZXltYXAgKyAoMHhGQyAmIHopKTsKKwl6ICA9IGV4cGtleVs1XTsKKwl6IF49IHg7CisJeiAgPSB6IDw8IDQgfCB6ID4+IDI4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyA0NDgpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl5IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMzg0KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDMyMCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAyNTYpICsgKDB4RkMgJiB6KSk7CisJeiAgPSBleHBrZXlbNF07CisJeiBePSB4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAxOTIpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl5IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMTI4KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDY0KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSBkZXNfa2V5bWFwICsgKDB4RkMgJiB6KSk7CisJeiAgPSBleHBrZXlbM107CisJeiBePSB5OworCXogID0geiA8PCA0IHwgeiA+PiAyODsKKwl4IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgNDQ4KSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDM4NCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAzMjApICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl4IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMjU2KSArICgweEZDICYgeikpOworCXogID0gZXhwa2V5WzJdOworCXogXj0geTsKKwl4IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMTkyKSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeCBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDEyOCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXggXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyA2NCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXggXj0gKiAodTMyICopICgodTggKikgZGVzX2tleW1hcCArICgweEZDICYgeikpOworCXogID0gZXhwa2V5WzFdOworCXogXj0geDsKKwl6ICA9IHogPDwgNCB8IHogPj4gMjg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDQ0OCkgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAzODQpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl5IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgMzIwKSArICgweEZDICYgeikpOworCXogPj49IDg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDI1NikgKyAoMHhGQyAmIHopKTsKKwl6ICA9IGV4cGtleVswXTsKKwl6IF49IHg7CisJeSBePSAqICh1MzIgKikgKCh1OCAqKSAoZGVzX2tleW1hcCArIDE5MikgKyAoMHhGQyAmIHopKTsKKwl6ID4+PSA4OworCXkgXj0gKiAodTMyICopICgodTggKikgKGRlc19rZXltYXAgKyAxMjgpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl5IF49ICogKHUzMiAqKSAoKHU4ICopIChkZXNfa2V5bWFwICsgNjQpICsgKDB4RkMgJiB6KSk7CisJeiA+Pj0gODsKKwl5IF49ICogKHUzMiAqKSAoKHU4ICopIGRlc19rZXltYXAgKyAoMHhGQyAmIHopKTsKKwl4ICA9IHggPDwgMSB8IHggPj4gMzE7CisJeiAgPSAoeCBeIHkpICYgMHg1NTU1NTU1NUw7CisJeSBePSB6OworCXggXj0gejsKKwl5ICA9IHkgPDwgMSB8IHkgPj4gMzE7CisJeiAgPSAoKHggPj4gMDEwKSBeIHkpICYgMHgwMEZGMDBGRkw7CisJeCBePSB6IDw8IDAxMDsKKwl5IF49IHo7CisJeiAgPSAoKHkgPj4gMDAyKSBeIHgpICYgMHgzMzMzMzMzM0w7CisJeSBePSB6IDw8IDAwMjsKKwl4IF49IHo7CisJeiAgPSAoKHggPj4gMDIwKSBeIHkpICYgMHgwMDAwRkZGRkw7CisJeCBePSB6IDw8IDAyMDsKKwl5IF49IHo7CisJeiAgPSAoKHkgPj4gMDA0KSBeIHgpICYgMHgwRjBGMEYwRkw7CisJeSBePSB6IDw8IDAwNDsKKwl4IF49IHo7CisJZHN0WzBdID0geDsKKwl4ID4+PSA4OworCWRzdFsxXSA9IHg7CisJeCA+Pj0gODsKKwlkc3RbMl0gPSB4OworCXggPj49IDg7CisJZHN0WzNdID0geDsKKwlkc3RbNF0gPSB5OworCXkgPj49IDg7CisJZHN0WzVdID0geTsKKwl5ID4+PSA4OworCWRzdFs2XSA9IHk7CisJeSA+Pj0gODsKKwlkc3RbN10gPSB5OworfQorCisvKgorICogUkZDMjQ1MTogV2VhayBrZXkgY2hlY2tzIFNIT1VMRCBiZSBwZXJmb3JtZWQuCisgKi8KK3N0YXRpYyBpbnQgc2V0a2V5KHUzMiAqZXhwa2V5LCBjb25zdCB1OCAqa2V5LCB1bnNpZ25lZCBpbnQga2V5bGVuLCB1MzIgKmZsYWdzKQoreworCWNvbnN0IHU4ICprOworCXU4ICpiMCwgKmIxOworCXUzMiBuLCB3OworCXU4IGJpdHMwWzU2XSwgYml0czFbNTZdOworCisJbiAgPSBwYXJpdHlba2V5WzBdXTsgbiA8PD0gNDsKKwluIHw9IHBhcml0eVtrZXlbMV1dOyBuIDw8PSA0OworCW4gfD0gcGFyaXR5W2tleVsyXV07IG4gPDw9IDQ7CisJbiB8PSBwYXJpdHlba2V5WzNdXTsgbiA8PD0gNDsKKwluIHw9IHBhcml0eVtrZXlbNF1dOyBuIDw8PSA0OworCW4gfD0gcGFyaXR5W2tleVs1XV07IG4gPDw9IDQ7CisJbiB8PSBwYXJpdHlba2V5WzZdXTsgbiA8PD0gNDsKKwluIHw9IHBhcml0eVtrZXlbN11dOworCXcgPSAweDg4ODg4ODg4TDsKKwkKKwlpZiAoKCpmbGFncyAmIENSWVBUT19URk1fUkVRX1dFQUtfS0VZKQorCSAgICAmJiAhKChuIC0gKHcgPj4gMykpICYgdykpIHsgIC8qIDEgaW4gMTBeMTAga2V5cyBwYXNzZXMgdGhpcyB0ZXN0ICovCisJCWlmIChuIDwgMHg0MTQxNTE1MSkgeworCQkJaWYgKG4gPCAweDMxMzEyMTIxKSB7CisJCQkJaWYgKG4gPCAweDE0MTQxNTE1KSB7CisJCQkJCS8qIDAxIDAxIDAxIDAxIDAxIDAxIDAxIDAxICovCisJCQkJCWlmIChuID09IDB4MTExMTExMTEpIGdvdG8gd2VhazsKKwkJCQkJLyogMDEgMUYgMDEgMUYgMDEgMEUgMDEgMEUgKi8KKwkJCQkJaWYgKG4gPT0gMHgxMzEzMTIxMikgZ290byB3ZWFrOworCQkJCX0gZWxzZSB7CisJCQkJCS8qIDAxIEUwIDAxIEUwIDAxIEYxIDAxIEYxICovCisJCQkJCWlmIChuID09IDB4MTQxNDE1MTUpIGdvdG8gd2VhazsKKwkJCQkJLyogMDEgRkUgMDEgRkUgMDEgRkUgMDEgRkUgKi8KKwkJCQkJaWYgKG4gPT0gMHgxNjE2MTYxNikgZ290byB3ZWFrOworCQkJCX0KKwkJCX0gZWxzZSB7CisJCQkJaWYgKG4gPCAweDM0MzQyNTI1KSB7CisJCQkJCS8qIDFGIDAxIDFGIDAxIDBFIDAxIDBFIDAxICovCisJCQkJCWlmIChuID09IDB4MzEzMTIxMjEpIGdvdG8gd2VhazsKKwkJCQkJLyogMUYgMUYgMUYgMUYgMEUgMEUgMEUgMEUgKD8pICovCisJCQkJCWlmIChuID09IDB4MzMzMzIyMjIpIGdvdG8gd2VhazsKKwkJCQl9IGVsc2UgeworCQkJCQkvKiAxRiBFMCAxRiBFMCAwRSBGMSAwRSBGMSAqLworCQkJCQlpZiAobiA9PSAweDM0MzQyNTI1KSBnb3RvIHdlYWs7CisJCQkJCS8qIDFGIEZFIDFGIEZFIDBFIEZFIDBFIEZFICovCisJCQkJCWlmIChuID09IDB4MzYzNjI2MjYpIGdvdG8gd2VhazsKKwkJCQl9CisJCQl9CisJCX0gZWxzZSB7CisJCQlpZiAobiA8IDB4NjE2MTYxNjEpIHsKKwkJCQlpZiAobiA8IDB4NDQ0NDU1NTUpIHsKKwkJCQkJLyogRTAgMDEgRTAgMDEgRjEgMDEgRjEgMDEgKi8KKwkJCQkJaWYgKG4gPT0gMHg0MTQxNTE1MSkgZ290byB3ZWFrOworCQkJCQkvKiBFMCAxRiBFMCAxRiBGMSAwRSBGMSAwRSAqLworCQkJCQlpZiAobiA9PSAweDQzNDM1MjUyKSBnb3RvIHdlYWs7CisJCQkJfSBlbHNlIHsKKwkJCQkJLyogRTAgRTAgRTAgRTAgRjEgRjEgRjEgRjEgKD8pICovCisJCQkJCWlmIChuID09IDB4NDQ0NDU1NTUpIGdvdG8gd2VhazsKKwkJCQkJLyogRTAgRkUgRTAgRkUgRjEgRkUgRjEgRkUgKi8KKwkJCQkJaWYgKG4gPT0gMHg0NjQ2NTY1NikgZ290byB3ZWFrOworCQkJCX0KKwkJCX0gZWxzZSB7CisJCQkJaWYgKG4gPCAweDY0NjQ2NTY1KSB7CisJCQkJCS8qIEZFIDAxIEZFIDAxIEZFIDAxIEZFIDAxICovCisJCQkJCWlmIChuID09IDB4NjE2MTYxNjEpIGdvdG8gd2VhazsKKwkJCQkJLyogRkUgMUYgRkUgMUYgRkUgMEUgRkUgMEUgKi8KKwkJCQkJaWYgKG4gPT0gMHg2MzYzNjI2MikgZ290byB3ZWFrOworCQkJCX0gZWxzZSB7CisJCQkJCS8qIEZFIEUwIEZFIEUwIEZFIEYxIEZFIEYxICovCisJCQkJCWlmIChuID09IDB4NjQ2NDY1NjUpIGdvdG8gd2VhazsKKwkJCQkJLyogRkUgRkUgRkUgRkUgRkUgRkUgRkUgRkUgKi8KKwkJCQkJaWYgKG4gPT0gMHg2NjY2NjY2NikgZ290byB3ZWFrOworCQkJCX0KKwkJCX0KKwkJfQorCQorCQlnb3RvIG5vdF93ZWFrOword2VhazoKKwkJKmZsYWdzIHw9IENSWVBUT19URk1fUkVTX1dFQUtfS0VZOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKK25vdF93ZWFrOgorCisJLyogZXhwbG9kZSB0aGUgYml0cyAqLworCW4gPSA1NjsKKwliMCA9IGJpdHMwOworCWIxID0gYml0czE7CisJCisJZG8geworCQl3ID0gKDI1NiB8ICprZXkrKykgPDwgMjsKKwkJZG8geworCQkJLS1uOworCQkJYjFbbl0gPSA4ICYgdzsKKwkJCXcgPj49IDE7CisJCQliMFtuXSA9IDQgJiB3OworCQl9IHdoaWxlICggdyA+PSAxNiApOworCX0gd2hpbGUgKCBuICk7CisJCisJLyogcHV0IHRoZSBiaXRzIGluIHRoZSBjb3JyZWN0IHBsYWNlcyAqLworCW4gPSAxNjsKKwlrID0gcm90b3JzOworCQorCWRvIHsKKwkJdyAgID0gKGIxW2tbIDAgICBdXSB8IGIwW2tbIDEgICBdXSkgPDwgNDsKKwkJdyAgfD0gKGIxW2tbIDIgICBdXSB8IGIwW2tbIDMgICBdXSkgPDwgMjsKKwkJdyAgfD0gIGIxW2tbIDQgICBdXSB8IGIwW2tbIDUgICBdXTsKKwkJdyA8PD0gODsKKwkJdyAgfD0gKGIxW2tbIDYgICBdXSB8IGIwW2tbIDcgICBdXSkgPDwgNDsKKwkJdyAgfD0gKGIxW2tbIDggICBdXSB8IGIwW2tbIDkgICBdXSkgPDwgMjsKKwkJdyAgfD0gIGIxW2tbMTAgICBdXSB8IGIwW2tbMTEgICBdXTsKKwkJdyA8PD0gODsKKwkJdyAgfD0gKGIxW2tbMTIgICBdXSB8IGIwW2tbMTMgICBdXSkgPDwgNDsKKwkJdyAgfD0gKGIxW2tbMTQgICBdXSB8IGIwW2tbMTUgICBdXSkgPDwgMjsKKwkJdyAgfD0gIGIxW2tbMTYgICBdXSB8IGIwW2tbMTcgICBdXTsKKwkJdyA8PD0gODsKKwkJdyAgfD0gKGIxW2tbMTggICBdXSB8IGIwW2tbMTkgICBdXSkgPDwgNDsKKwkJdyAgfD0gKGIxW2tbMjAgICBdXSB8IGIwW2tbMjEgICBdXSkgPDwgMjsKKwkJdyAgfD0gIGIxW2tbMjIgICBdXSB8IGIwW2tbMjMgICBdXTsKKwkJZXhwa2V5WzBdID0gdzsKKwkJCisJCXcgICA9IChiMVtrWyAwKzI0XV0gfCBiMFtrWyAxKzI0XV0pIDw8IDQ7CisJCXcgIHw9IChiMVtrWyAyKzI0XV0gfCBiMFtrWyAzKzI0XV0pIDw8IDI7CisJCXcgIHw9ICBiMVtrWyA0KzI0XV0gfCBiMFtrWyA1KzI0XV07CisJCXcgPDw9IDg7CisJCXcgIHw9IChiMVtrWyA2KzI0XV0gfCBiMFtrWyA3KzI0XV0pIDw8IDQ7CisJCXcgIHw9IChiMVtrWyA4KzI0XV0gfCBiMFtrWyA5KzI0XV0pIDw8IDI7CisJCXcgIHw9ICBiMVtrWzEwKzI0XV0gfCBiMFtrWzExKzI0XV07CisJCXcgPDw9IDg7CisJCXcgIHw9IChiMVtrWzEyKzI0XV0gfCBiMFtrWzEzKzI0XV0pIDw8IDQ7CisJCXcgIHw9IChiMVtrWzE0KzI0XV0gfCBiMFtrWzE1KzI0XV0pIDw8IDI7CisJCXcgIHw9ICBiMVtrWzE2KzI0XV0gfCBiMFtrWzE3KzI0XV07CisJCXcgPDw9IDg7CisJCXcgIHw9IChiMVtrWzE4KzI0XV0gfCBiMFtrWzE5KzI0XV0pIDw8IDQ7CisJCXcgIHw9IChiMVtrWzIwKzI0XV0gfCBiMFtrWzIxKzI0XV0pIDw8IDI7CisJCXcgIHw9ICBiMVtrWzIyKzI0XV0gfCBiMFtrWzIzKzI0XV07CisJCQorCQlST1IodywgNCwgMjgpOyAgICAgIC8qIGNvdWxkIGJlIGVsaW1pbmF0ZWQgKi8KKwkJZXhwa2V5WzFdID0gdzsKKworCQlrICs9IDQ4OworCQlleHBrZXkgKz0gMjsKKwl9IHdoaWxlICgtLW4pOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZGVzX3NldGtleSh2b2lkICpjdHgsIGNvbnN0IHU4ICprZXksIHVuc2lnbmVkIGludCBrZXlsZW4sIHUzMiAqZmxhZ3MpCit7CisJcmV0dXJuIHNldGtleSgoKHN0cnVjdCBkZXNfY3R4ICopY3R4KS0+ZXhwa2V5LCBrZXksIGtleWxlbiwgZmxhZ3MpOworfQorCitzdGF0aWMgdm9pZCBkZXNfZW5jcnlwdCh2b2lkICpjdHgsIHU4ICpkc3QsIGNvbnN0IHU4ICpzcmMpCit7CisJZGVzX3NtYWxsX2ZpcHNfZW5jcnlwdCgoKHN0cnVjdCBkZXNfY3R4ICopY3R4KS0+ZXhwa2V5LCBkc3QsIHNyYyk7Cit9CisKK3N0YXRpYyB2b2lkIGRlc19kZWNyeXB0KHZvaWQgKmN0eCwgdTggKmRzdCwgY29uc3QgdTggKnNyYykKK3sKKwlkZXNfc21hbGxfZmlwc19kZWNyeXB0KCgoc3RydWN0IGRlc19jdHggKiljdHgpLT5leHBrZXksIGRzdCwgc3JjKTsKK30KKworLyogCisgKiBSRkMyNDUxOgorICoKKyAqICAgRm9yIERFUy1FREUzLCB0aGVyZSBpcyBubyBrbm93biBuZWVkIHRvIHJlamVjdCB3ZWFrIG9yCisgKiAgIGNvbXBsZW1lbnRhdGlvbiBrZXlzLiAgQW55IHdlYWtuZXNzIGlzIG9idmlhdGVkIGJ5IHRoZSB1c2Ugb2YKKyAqICAgbXVsdGlwbGUga2V5cy4KKyAqCisgKiAgIEhvd2V2ZXIsIGlmIHRoZSBmaXJzdCB0d28gb3IgbGFzdCB0d28gaW5kZXBlbmRlbnQgNjQtYml0IGtleXMgYXJlCisgKiAgIGVxdWFsIChrMSA9PSBrMiBvciBrMiA9PSBrMyksIHRoZW4gdGhlIERFUzMgb3BlcmF0aW9uIGlzIHNpbXBseSB0aGUKKyAqICAgc2FtZSBhcyBERVMuICBJbXBsZW1lbnRlcnMgTVVTVCByZWplY3Qga2V5cyB0aGF0IGV4aGliaXQgdGhpcworICogICBwcm9wZXJ0eS4KKyAqCisgKi8KK3N0YXRpYyBpbnQgZGVzM19lZGVfc2V0a2V5KHZvaWQgKmN0eCwgY29uc3QgdTggKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBrZXlsZW4sIHUzMiAqZmxhZ3MpCit7CisJdW5zaWduZWQgaW50IGksIG9mZjsKKwlzdHJ1Y3QgZGVzM19lZGVfY3R4ICpkY3R4ID0gY3R4OworCisJaWYgKCEobWVtY21wKGtleSwgJmtleVtERVNfS0VZX1NJWkVdLCBERVNfS0VZX1NJWkUpICYmIAorCSAgICBtZW1jbXAoJmtleVtERVNfS0VZX1NJWkVdLCAma2V5W0RFU19LRVlfU0laRSAqIDJdLAorCSAgICAJCQkJCURFU19LRVlfU0laRSkpKSB7CisKKwkJKmZsYWdzIHw9IENSWVBUT19URk1fUkVTX0JBRF9LRVlfU0NIRUQ7CisJCXJldHVybiAtRUlOVkFMOworCX0KKwkKKwlmb3IgKGkgPSAwLCBvZmYgPSAwOyBpIDwgMzsgaSsrLCBvZmYgKz0gREVTX0VYUEtFWV9XT1JEUywKKwkJCQkJCQlrZXkgKz0gREVTX0tFWV9TSVpFKSB7CisJCWludCByZXQgPSBzZXRrZXkoJmRjdHgtPmV4cGtleVtvZmZdLCBrZXksIERFU19LRVlfU0laRSwgZmxhZ3MpOworCQlpZiAocmV0IDwgMCkKKwkJCXJldHVybiByZXQ7CisJfQkKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZGVzM19lZGVfZW5jcnlwdCh2b2lkICpjdHgsIHU4ICpkc3QsIGNvbnN0IHU4ICpzcmMpCit7CisJc3RydWN0IGRlczNfZWRlX2N0eCAqZGN0eCA9IGN0eDsKKwkKKwlkZXNfc21hbGxfZmlwc19lbmNyeXB0KGRjdHgtPmV4cGtleSwgZHN0LCBzcmMpOworCWRlc19zbWFsbF9maXBzX2RlY3J5cHQoJmRjdHgtPmV4cGtleVtERVNfRVhQS0VZX1dPUkRTXSwgZHN0LCBkc3QpOworCWRlc19zbWFsbF9maXBzX2VuY3J5cHQoJmRjdHgtPmV4cGtleVtERVNfRVhQS0VZX1dPUkRTICogMl0sIGRzdCwgZHN0KTsKK30KKworc3RhdGljIHZvaWQgZGVzM19lZGVfZGVjcnlwdCh2b2lkICpjdHgsIHU4ICpkc3QsIGNvbnN0IHU4ICpzcmMpCit7CisJc3RydWN0IGRlczNfZWRlX2N0eCAqZGN0eCA9IGN0eDsKKworCWRlc19zbWFsbF9maXBzX2RlY3J5cHQoJmRjdHgtPmV4cGtleVtERVNfRVhQS0VZX1dPUkRTICogMl0sIGRzdCwgc3JjKTsKKwlkZXNfc21hbGxfZmlwc19lbmNyeXB0KCZkY3R4LT5leHBrZXlbREVTX0VYUEtFWV9XT1JEU10sIGRzdCwgZHN0KTsKKwlkZXNfc21hbGxfZmlwc19kZWNyeXB0KGRjdHgtPmV4cGtleSwgZHN0LCBkc3QpOworfQorCitzdGF0aWMgc3RydWN0IGNyeXB0b19hbGcgZGVzX2FsZyA9IHsKKwkuY3JhX25hbWUJCT0JImRlcyIsCisJLmNyYV9mbGFncwkJPQlDUllQVE9fQUxHX1RZUEVfQ0lQSEVSLAorCS5jcmFfYmxvY2tzaXplCQk9CURFU19CTE9DS19TSVpFLAorCS5jcmFfY3R4c2l6ZQkJPQlzaXplb2Yoc3RydWN0IGRlc19jdHgpLAorCS5jcmFfbW9kdWxlCQk9CVRISVNfTU9EVUxFLAorCS5jcmFfbGlzdAkJPQlMSVNUX0hFQURfSU5JVChkZXNfYWxnLmNyYV9saXN0KSwKKwkuY3JhX3UJCQk9CXsgLmNpcGhlciA9IHsKKwkuY2lhX21pbl9rZXlzaXplCT0JREVTX0tFWV9TSVpFLAorCS5jaWFfbWF4X2tleXNpemUJPQlERVNfS0VZX1NJWkUsCisJLmNpYV9zZXRrZXkJCT0gCWRlc19zZXRrZXksCisJLmNpYV9lbmNyeXB0CQk9CWRlc19lbmNyeXB0LAorCS5jaWFfZGVjcnlwdAkJPQlkZXNfZGVjcnlwdCB9IH0KK307CisKK3N0YXRpYyBzdHJ1Y3QgY3J5cHRvX2FsZyBkZXMzX2VkZV9hbGcgPSB7CisJLmNyYV9uYW1lCQk9CSJkZXMzX2VkZSIsCisJLmNyYV9mbGFncwkJPQlDUllQVE9fQUxHX1RZUEVfQ0lQSEVSLAorCS5jcmFfYmxvY2tzaXplCQk9CURFUzNfRURFX0JMT0NLX1NJWkUsCisJLmNyYV9jdHhzaXplCQk9CXNpemVvZihzdHJ1Y3QgZGVzM19lZGVfY3R4KSwKKwkuY3JhX21vZHVsZQkJPQlUSElTX01PRFVMRSwKKwkuY3JhX2xpc3QJCT0JTElTVF9IRUFEX0lOSVQoZGVzM19lZGVfYWxnLmNyYV9saXN0KSwKKwkuY3JhX3UJCQk9CXsgLmNpcGhlciA9IHsKKwkuY2lhX21pbl9rZXlzaXplCT0JREVTM19FREVfS0VZX1NJWkUsCisJLmNpYV9tYXhfa2V5c2l6ZQk9CURFUzNfRURFX0tFWV9TSVpFLAorCS5jaWFfc2V0a2V5CSAgIAk9IAlkZXMzX2VkZV9zZXRrZXksCisJLmNpYV9lbmNyeXB0CSAJPQlkZXMzX2VkZV9lbmNyeXB0LAorCS5jaWFfZGVjcnlwdAkgIAk9CWRlczNfZWRlX2RlY3J5cHQgfSB9Cit9OworCitNT0RVTEVfQUxJQVMoImRlczNfZWRlIik7CisKK3N0YXRpYyBpbnQgX19pbml0IGluaXQodm9pZCkKK3sKKwlpbnQgcmV0ID0gMDsKKwkKKwlyZXQgPSBjcnlwdG9fcmVnaXN0ZXJfYWxnKCZkZXNfYWxnKTsKKwlpZiAocmV0IDwgMCkKKwkJZ290byBvdXQ7CisKKwlyZXQgPSBjcnlwdG9fcmVnaXN0ZXJfYWxnKCZkZXMzX2VkZV9hbGcpOworCWlmIChyZXQgPCAwKQorCQljcnlwdG9fdW5yZWdpc3Rlcl9hbGcoJmRlc19hbGcpOworb3V0OgkKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBfX2V4aXQgZmluaSh2b2lkKQoreworCWNyeXB0b191bnJlZ2lzdGVyX2FsZygmZGVzM19lZGVfYWxnKTsKKwljcnlwdG9fdW5yZWdpc3Rlcl9hbGcoJmRlc19hbGcpOworfQorCittb2R1bGVfaW5pdChpbml0KTsKK21vZHVsZV9leGl0KGZpbmkpOworCitNT0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfREVTQ1JJUFRJT04oIkRFUyAmIFRyaXBsZSBERVMgRURFIENpcGhlciBBbGdvcml0aG1zIik7CmRpZmYgLS1naXQgYS9jcnlwdG8vZGlnZXN0LmMgYi9jcnlwdG8vZGlnZXN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDliNmFjOQotLS0gL2Rldi9udWxsCisrKyBiL2NyeXB0by9kaWdlc3QuYwpAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENyeXB0b2dyYXBoaWMgQVBJLgorICoKKyAqIERpZ2VzdCBvcGVyYXRpb25zLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwMiBKYW1lcyBNb3JyaXMgPGptb3JyaXNAaW50ZXJjb2RlLmNvbS5hdT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKKyAqIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgCisgKiBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKi8KKyNpbmNsdWRlIDxsaW51eC9jcnlwdG8uaD4KKyNpbmNsdWRlIDxsaW51eC9tbS5oPgorI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+CisjaW5jbHVkZSA8bGludXgvaGlnaG1lbS5oPgorI2luY2x1ZGUgPGFzbS9zY2F0dGVybGlzdC5oPgorI2luY2x1ZGUgImludGVybmFsLmgiCisKK3N0YXRpYyB2b2lkIGluaXQoc3RydWN0IGNyeXB0b190Zm0gKnRmbSkKK3sKKwl0Zm0tPl9fY3J0X2FsZy0+Y3JhX2RpZ2VzdC5kaWFfaW5pdChjcnlwdG9fdGZtX2N0eCh0Zm0pKTsKK30KKworc3RhdGljIHZvaWQgdXBkYXRlKHN0cnVjdCBjcnlwdG9fdGZtICp0Zm0sCisgICAgICAgICAgICAgICAgICAgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZywgdW5zaWduZWQgaW50IG5zZykKK3sKKwl1bnNpZ25lZCBpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBuc2c7IGkrKykgeworCisJCXN0cnVjdCBwYWdlICpwZyA9IHNnW2ldLnBhZ2U7CisJCXVuc2lnbmVkIGludCBvZmZzZXQgPSBzZ1tpXS5vZmZzZXQ7CisJCXVuc2lnbmVkIGludCBsID0gc2dbaV0ubGVuZ3RoOworCisJCWRvIHsKKwkJCXVuc2lnbmVkIGludCBieXRlc19mcm9tX3BhZ2UgPSBtaW4obCwgKCh1bnNpZ25lZCBpbnQpCisJCQkJCQkJICAgKFBBR0VfU0laRSkpIC0gCisJCQkJCQkJICAgb2Zmc2V0KTsKKwkJCWNoYXIgKnAgPSBjcnlwdG9fa21hcChwZywgMCkgKyBvZmZzZXQ7CisKKwkJCXRmbS0+X19jcnRfYWxnLT5jcmFfZGlnZXN0LmRpYV91cGRhdGUKKwkJCQkJKGNyeXB0b190Zm1fY3R4KHRmbSksIHAsCisJCQkJCSBieXRlc19mcm9tX3BhZ2UpOworCQkJY3J5cHRvX2t1bm1hcChwLCAwKTsKKwkJCWNyeXB0b195aWVsZCh0Zm0pOworCQkJb2Zmc2V0ID0gMDsKKwkJCXBnKys7CisJCQlsIC09IGJ5dGVzX2Zyb21fcGFnZTsKKwkJfSB3aGlsZSAobCA+IDApOworCX0KK30KKworc3RhdGljIHZvaWQgZmluYWwoc3RydWN0IGNyeXB0b190Zm0gKnRmbSwgdTggKm91dCkKK3sKKwl0Zm0tPl9fY3J0X2FsZy0+Y3JhX2RpZ2VzdC5kaWFfZmluYWwoY3J5cHRvX3RmbV9jdHgodGZtKSwgb3V0KTsKK30KKworc3RhdGljIGludCBzZXRrZXkoc3RydWN0IGNyeXB0b190Zm0gKnRmbSwgY29uc3QgdTggKmtleSwgdW5zaWduZWQgaW50IGtleWxlbikKK3sKKwl1MzIgZmxhZ3M7CisJaWYgKHRmbS0+X19jcnRfYWxnLT5jcmFfZGlnZXN0LmRpYV9zZXRrZXkgPT0gTlVMTCkKKwkJcmV0dXJuIC1FTk9TWVM7CisJcmV0dXJuIHRmbS0+X19jcnRfYWxnLT5jcmFfZGlnZXN0LmRpYV9zZXRrZXkoY3J5cHRvX3RmbV9jdHgodGZtKSwKKwkJCQkJCSAgICAga2V5LCBrZXlsZW4sICZmbGFncyk7Cit9CisKK3N0YXRpYyB2b2lkIGRpZ2VzdChzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtLAorICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY2F0dGVybGlzdCAqc2csIHVuc2lnbmVkIGludCBuc2csIHU4ICpvdXQpCit7CisJdW5zaWduZWQgaW50IGk7CisKKwl0Zm0tPmNydF9kaWdlc3QuZGl0X2luaXQodGZtKTsKKwkJCisJZm9yIChpID0gMDsgaSA8IG5zZzsgaSsrKSB7CisJCWNoYXIgKnAgPSBjcnlwdG9fa21hcChzZ1tpXS5wYWdlLCAwKSArIHNnW2ldLm9mZnNldDsKKwkJdGZtLT5fX2NydF9hbGctPmNyYV9kaWdlc3QuZGlhX3VwZGF0ZShjcnlwdG9fdGZtX2N0eCh0Zm0pLAorCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAsIHNnW2ldLmxlbmd0aCk7CisJCWNyeXB0b19rdW5tYXAocCwgMCk7CisJCWNyeXB0b195aWVsZCh0Zm0pOworCX0KKwljcnlwdG9fZGlnZXN0X2ZpbmFsKHRmbSwgb3V0KTsKK30KKworaW50IGNyeXB0b19pbml0X2RpZ2VzdF9mbGFncyhzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtLCB1MzIgZmxhZ3MpCit7CisJcmV0dXJuIGZsYWdzID8gLUVJTlZBTCA6IDA7Cit9CisKK2ludCBjcnlwdG9faW5pdF9kaWdlc3Rfb3BzKHN0cnVjdCBjcnlwdG9fdGZtICp0Zm0pCit7CisJc3RydWN0IGRpZ2VzdF90Zm0gKm9wcyA9ICZ0Zm0tPmNydF9kaWdlc3Q7CisJCisJb3BzLT5kaXRfaW5pdAk9IGluaXQ7CisJb3BzLT5kaXRfdXBkYXRlCT0gdXBkYXRlOworCW9wcy0+ZGl0X2ZpbmFsCT0gZmluYWw7CisJb3BzLT5kaXRfZGlnZXN0CT0gZGlnZXN0OworCW9wcy0+ZGl0X3NldGtleQk9IHNldGtleTsKKwkKKwlyZXR1cm4gY3J5cHRvX2FsbG9jX2htYWNfYmxvY2sodGZtKTsKK30KKwordm9pZCBjcnlwdG9fZXhpdF9kaWdlc3Rfb3BzKHN0cnVjdCBjcnlwdG9fdGZtICp0Zm0pCit7CisJY3J5cHRvX2ZyZWVfaG1hY19ibG9jayh0Zm0pOworfQpkaWZmIC0tZ2l0IGEvY3J5cHRvL2htYWMuYyBiL2NyeXB0by9obWFjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQ3ZGY5MgotLS0gL2Rldi9udWxsCisrKyBiL2NyeXB0by9obWFjLmMKQEAgLTAsMCArMSwxMzQgQEAKKy8qCisgKiBDcnlwdG9ncmFwaGljIEFQSS4KKyAqCisgKiBITUFDOiBLZXllZC1IYXNoaW5nIGZvciBNZXNzYWdlIEF1dGhlbnRpY2F0aW9uIChSRkMyMTA0KS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDIgSmFtZXMgTW9ycmlzIDxqbW9ycmlzQGludGVyY29kZS5jb20uYXU+CisgKgorICogVGhlIEhNQUMgaW1wbGVtZW50YXRpb24gaXMgZGVyaXZlZCBmcm9tIFVTQUdJLgorICogQ29weXJpZ2h0IChjKSAyMDAyIEthenVub3JpIE1peWF6YXdhIDxtaXlhemF3YUBsaW51eC1pcHY2Lm9yZz4gLyBVU0FHSQorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZQorICogU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSAKKyAqIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqLworI2luY2x1ZGUgPGxpbnV4L2NyeXB0by5oPgorI2luY2x1ZGUgPGxpbnV4L21tLmg+CisjaW5jbHVkZSA8bGludXgvaGlnaG1lbS5oPgorI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KKyNpbmNsdWRlIDxhc20vc2NhdHRlcmxpc3QuaD4KKyNpbmNsdWRlICJpbnRlcm5hbC5oIgorCitzdGF0aWMgdm9pZCBoYXNoX2tleShzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtLCB1OCAqa2V5LCB1bnNpZ25lZCBpbnQga2V5bGVuKQoreworCXN0cnVjdCBzY2F0dGVybGlzdCB0bXA7CisJCisJdG1wLnBhZ2UgPSB2aXJ0X3RvX3BhZ2Uoa2V5KTsKKwl0bXAub2Zmc2V0ID0gb2Zmc2V0X2luX3BhZ2Uoa2V5KTsKKwl0bXAubGVuZ3RoID0ga2V5bGVuOworCWNyeXB0b19kaWdlc3RfZGlnZXN0KHRmbSwgJnRtcCwgMSwga2V5KTsKKwkJCit9CisKK2ludCBjcnlwdG9fYWxsb2NfaG1hY19ibG9jayhzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtKQoreworCWludCByZXQgPSAwOworCisJQlVHX09OKCFjcnlwdG9fdGZtX2FsZ19ibG9ja3NpemUodGZtKSk7CisJCisJdGZtLT5jcnRfZGlnZXN0LmRpdF9obWFjX2Jsb2NrID0ga21hbGxvYyhjcnlwdG9fdGZtX2FsZ19ibG9ja3NpemUodGZtKSwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdGUF9LRVJORUwpOworCWlmICh0Zm0tPmNydF9kaWdlc3QuZGl0X2htYWNfYmxvY2sgPT0gTlVMTCkKKwkJcmV0ID0gLUVOT01FTTsKKworCXJldHVybiByZXQ7CisJCQorfQorCit2b2lkIGNyeXB0b19mcmVlX2htYWNfYmxvY2soc3RydWN0IGNyeXB0b190Zm0gKnRmbSkKK3sKKwlpZiAodGZtLT5jcnRfZGlnZXN0LmRpdF9obWFjX2Jsb2NrKQorCQlrZnJlZSh0Zm0tPmNydF9kaWdlc3QuZGl0X2htYWNfYmxvY2spOworfQorCit2b2lkIGNyeXB0b19obWFjX2luaXQoc3RydWN0IGNyeXB0b190Zm0gKnRmbSwgdTggKmtleSwgdW5zaWduZWQgaW50ICprZXlsZW4pCit7CisJdW5zaWduZWQgaW50IGk7CisJc3RydWN0IHNjYXR0ZXJsaXN0IHRtcDsKKwljaGFyICppcGFkID0gdGZtLT5jcnRfZGlnZXN0LmRpdF9obWFjX2Jsb2NrOworCQorCWlmICgqa2V5bGVuID4gY3J5cHRvX3RmbV9hbGdfYmxvY2tzaXplKHRmbSkpIHsKKwkJaGFzaF9rZXkodGZtLCBrZXksICprZXlsZW4pOworCQkqa2V5bGVuID0gY3J5cHRvX3RmbV9hbGdfZGlnZXN0c2l6ZSh0Zm0pOworCX0KKworCW1lbXNldChpcGFkLCAwLCBjcnlwdG9fdGZtX2FsZ19ibG9ja3NpemUodGZtKSk7CisJbWVtY3B5KGlwYWQsIGtleSwgKmtleWxlbik7CisKKwlmb3IgKGkgPSAwOyBpIDwgY3J5cHRvX3RmbV9hbGdfYmxvY2tzaXplKHRmbSk7IGkrKykKKwkJaXBhZFtpXSBePSAweDM2OworCisJdG1wLnBhZ2UgPSB2aXJ0X3RvX3BhZ2UoaXBhZCk7CisJdG1wLm9mZnNldCA9IG9mZnNldF9pbl9wYWdlKGlwYWQpOworCXRtcC5sZW5ndGggPSBjcnlwdG9fdGZtX2FsZ19ibG9ja3NpemUodGZtKTsKKwkKKwljcnlwdG9fZGlnZXN0X2luaXQodGZtKTsKKwljcnlwdG9fZGlnZXN0X3VwZGF0ZSh0Zm0sICZ0bXAsIDEpOworfQorCit2b2lkIGNyeXB0b19obWFjX3VwZGF0ZShzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZywgdW5zaWduZWQgaW50IG5zZykKK3sKKwljcnlwdG9fZGlnZXN0X3VwZGF0ZSh0Zm0sIHNnLCBuc2cpOworfQorCit2b2lkIGNyeXB0b19obWFjX2ZpbmFsKHN0cnVjdCBjcnlwdG9fdGZtICp0Zm0sIHU4ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqa2V5bGVuLCB1OCAqb3V0KQoreworCXVuc2lnbmVkIGludCBpOworCXN0cnVjdCBzY2F0dGVybGlzdCB0bXA7CisJY2hhciAqb3BhZCA9IHRmbS0+Y3J0X2RpZ2VzdC5kaXRfaG1hY19ibG9jazsKKwkKKwlpZiAoKmtleWxlbiA+IGNyeXB0b190Zm1fYWxnX2Jsb2Nrc2l6ZSh0Zm0pKSB7CisJCWhhc2hfa2V5KHRmbSwga2V5LCAqa2V5bGVuKTsKKwkJKmtleWxlbiA9IGNyeXB0b190Zm1fYWxnX2RpZ2VzdHNpemUodGZtKTsKKwl9CisKKwljcnlwdG9fZGlnZXN0X2ZpbmFsKHRmbSwgb3V0KTsKKworCW1lbXNldChvcGFkLCAwLCBjcnlwdG9fdGZtX2FsZ19ibG9ja3NpemUodGZtKSk7CisJbWVtY3B5KG9wYWQsIGtleSwgKmtleWxlbik7CisJCQorCWZvciAoaSA9IDA7IGkgPCBjcnlwdG9fdGZtX2FsZ19ibG9ja3NpemUodGZtKTsgaSsrKQorCQlvcGFkW2ldIF49IDB4NWM7CisKKwl0bXAucGFnZSA9IHZpcnRfdG9fcGFnZShvcGFkKTsKKwl0bXAub2Zmc2V0ID0gb2Zmc2V0X2luX3BhZ2Uob3BhZCk7CisJdG1wLmxlbmd0aCA9IGNyeXB0b190Zm1fYWxnX2Jsb2Nrc2l6ZSh0Zm0pOworCisJY3J5cHRvX2RpZ2VzdF9pbml0KHRmbSk7CisJY3J5cHRvX2RpZ2VzdF91cGRhdGUodGZtLCAmdG1wLCAxKTsKKwkKKwl0bXAucGFnZSA9IHZpcnRfdG9fcGFnZShvdXQpOworCXRtcC5vZmZzZXQgPSBvZmZzZXRfaW5fcGFnZShvdXQpOworCXRtcC5sZW5ndGggPSBjcnlwdG9fdGZtX2FsZ19kaWdlc3RzaXplKHRmbSk7CisJCisJY3J5cHRvX2RpZ2VzdF91cGRhdGUodGZtLCAmdG1wLCAxKTsKKwljcnlwdG9fZGlnZXN0X2ZpbmFsKHRmbSwgb3V0KTsKK30KKwordm9pZCBjcnlwdG9faG1hYyhzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtLCB1OCAqa2V5LCB1bnNpZ25lZCBpbnQgKmtleWxlbiwKKyAgICAgICAgICAgICAgICAgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZywgdW5zaWduZWQgaW50IG5zZywgdTggKm91dCkKK3sKKwljcnlwdG9faG1hY19pbml0KHRmbSwga2V5LCBrZXlsZW4pOworCWNyeXB0b19obWFjX3VwZGF0ZSh0Zm0sIHNnLCBuc2cpOworCWNyeXB0b19obWFjX2ZpbmFsKHRmbSwga2V5LCBrZXlsZW4sIG91dCk7Cit9CisKK0VYUE9SVF9TWU1CT0xfR1BMKGNyeXB0b19obWFjX2luaXQpOworRVhQT1JUX1NZTUJPTF9HUEwoY3J5cHRvX2htYWNfdXBkYXRlKTsKK0VYUE9SVF9TWU1CT0xfR1BMKGNyeXB0b19obWFjX2ZpbmFsKTsKK0VYUE9SVF9TWU1CT0xfR1BMKGNyeXB0b19obWFjKTsKKwpkaWZmIC0tZ2l0IGEvY3J5cHRvL2ludGVybmFsLmggYi9jcnlwdG8vaW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjhlNDM4Ci0tLSAvZGV2L251bGwKKysrIGIvY3J5cHRvL2ludGVybmFsLmgKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIENyeXB0b2dyYXBoaWMgQVBJLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwMiBKYW1lcyBNb3JyaXMgPGptb3JyaXNAaW50ZXJjb2RlLmNvbS5hdT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKKyAqIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgCisgKiBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKi8KKyNpZm5kZWYgX0NSWVBUT19JTlRFUk5BTF9ICisjZGVmaW5lIF9DUllQVE9fSU5URVJOQUxfSAorI2luY2x1ZGUgPGxpbnV4L2NyeXB0by5oPgorI2luY2x1ZGUgPGxpbnV4L21tLmg+CisjaW5jbHVkZSA8bGludXgvaGlnaG1lbS5oPgorI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9rbW9kLmg+CisjaW5jbHVkZSA8YXNtL2ttYXBfdHlwZXMuaD4KKworZXh0ZXJuIGVudW0ga21fdHlwZSBjcnlwdG9fa21fdHlwZXNbXTsKKworc3RhdGljIGlubGluZSBlbnVtIGttX3R5cGUgY3J5cHRvX2ttYXBfdHlwZShpbnQgb3V0KQoreworCXJldHVybiBjcnlwdG9fa21fdHlwZXNbKGluX3NvZnRpcnEoKSA/IDIgOiAwKSArIG91dF07Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCAqY3J5cHRvX2ttYXAoc3RydWN0IHBhZ2UgKnBhZ2UsIGludCBvdXQpCit7CisJcmV0dXJuIGttYXBfYXRvbWljKHBhZ2UsIGNyeXB0b19rbWFwX3R5cGUob3V0KSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBjcnlwdG9fa3VubWFwKHZvaWQgKnZhZGRyLCBpbnQgb3V0KQoreworCWt1bm1hcF9hdG9taWModmFkZHIsIGNyeXB0b19rbWFwX3R5cGUob3V0KSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBjcnlwdG9feWllbGQoc3RydWN0IGNyeXB0b190Zm0gKnRmbSkKK3sKKwlpZiAoIWluX3NvZnRpcnEoKSkKKwkJY29uZF9yZXNjaGVkKCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCAqY3J5cHRvX3RmbV9jdHgoc3RydWN0IGNyeXB0b190Zm0gKnRmbSkKK3sKKwlyZXR1cm4gKHZvaWQgKikmdGZtWzFdOworfQorCitzdHJ1Y3QgY3J5cHRvX2FsZyAqY3J5cHRvX2FsZ19sb29rdXAoY29uc3QgY2hhciAqbmFtZSk7CisKKy8qIEEgZmFyIG1vcmUgaW50ZWxsaWdlbnQgdmVyc2lvbiBvZiB0aGlzIGlzIHBsYW5uZWQuICBGb3Igbm93LCBqdXN0CisgKiB0cnkgYW4gZXhhY3QgbWF0Y2ggb24gdGhlIG5hbWUgb2YgdGhlIGFsZ29yaXRobS4gKi8KK3N0YXRpYyBpbmxpbmUgc3RydWN0IGNyeXB0b19hbGcgKmNyeXB0b19hbGdfbW9kX2xvb2t1cChjb25zdCBjaGFyICpuYW1lKQoreworCXJldHVybiB0cnlfdGhlbl9yZXF1ZXN0X21vZHVsZShjcnlwdG9fYWxnX2xvb2t1cChuYW1lKSwgbmFtZSk7Cit9CisKKyNpZmRlZiBDT05GSUdfQ1JZUFRPX0hNQUMKK2ludCBjcnlwdG9fYWxsb2NfaG1hY19ibG9jayhzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtKTsKK3ZvaWQgY3J5cHRvX2ZyZWVfaG1hY19ibG9jayhzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtKTsKKyNlbHNlCitzdGF0aWMgaW5saW5lIGludCBjcnlwdG9fYWxsb2NfaG1hY19ibG9jayhzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtKQoreworCXJldHVybiAwOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgY3J5cHRvX2ZyZWVfaG1hY19ibG9jayhzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtKQoreyB9CisjZW5kaWYKKworI2lmZGVmIENPTkZJR19QUk9DX0ZTCit2b2lkIF9faW5pdCBjcnlwdG9faW5pdF9wcm9jKHZvaWQpOworI2Vsc2UKK3N0YXRpYyBpbmxpbmUgdm9pZCBjcnlwdG9faW5pdF9wcm9jKHZvaWQpCit7IH0KKyNlbmRpZgorCitpbnQgY3J5cHRvX2luaXRfZGlnZXN0X2ZsYWdzKHN0cnVjdCBjcnlwdG9fdGZtICp0Zm0sIHUzMiBmbGFncyk7CitpbnQgY3J5cHRvX2luaXRfY2lwaGVyX2ZsYWdzKHN0cnVjdCBjcnlwdG9fdGZtICp0Zm0sIHUzMiBmbGFncyk7CitpbnQgY3J5cHRvX2luaXRfY29tcHJlc3NfZmxhZ3Moc3RydWN0IGNyeXB0b190Zm0gKnRmbSwgdTMyIGZsYWdzKTsKKworaW50IGNyeXB0b19pbml0X2RpZ2VzdF9vcHMoc3RydWN0IGNyeXB0b190Zm0gKnRmbSk7CitpbnQgY3J5cHRvX2luaXRfY2lwaGVyX29wcyhzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtKTsKK2ludCBjcnlwdG9faW5pdF9jb21wcmVzc19vcHMoc3RydWN0IGNyeXB0b190Zm0gKnRmbSk7CisKK3ZvaWQgY3J5cHRvX2V4aXRfZGlnZXN0X29wcyhzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtKTsKK3ZvaWQgY3J5cHRvX2V4aXRfY2lwaGVyX29wcyhzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtKTsKK3ZvaWQgY3J5cHRvX2V4aXRfY29tcHJlc3Nfb3BzKHN0cnVjdCBjcnlwdG9fdGZtICp0Zm0pOworCisjZW5kaWYJLyogX0NSWVBUT19JTlRFUk5BTF9IICovCisKZGlmZiAtLWdpdCBhL2NyeXB0by9raGF6YWQuYyBiL2NyeXB0by9raGF6YWQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzhjYjBkCi0tLSAvZGV2L251bGwKKysrIGIvY3J5cHRvL2toYXphZC5jCkBAIC0wLDAgKzEsOTE1IEBACisvKgorICogQ3J5cHRvZ3JhcGhpYyBBUEkuCisgKgorICogS2hhemFkIEFsZ29yaXRobQorICoKKyAqIFRoZSBLaGF6YWQgYWxnb3JpdGhtIHdhcyBkZXZlbG9wZWQgYnkgUGF1bG8gUy4gTC4gTS4gQmFycmV0byBhbmQKKyAqIFZpbmNlbnQgUmlqbWVuLiAgSXQgd2FzIGEgZmluYWxpc3QgaW4gdGhlIE5FU1NJRSBlbmNyeXB0aW9uIGNvbnRlc3QuCisgKgorICogVGhlIG9yaWdpbmFsIGF1dGhvcnMgaGF2ZSBkaXNjbGFpbWVkIGFsbCBjb3B5cmlnaHQgaW50ZXJlc3QgaW4gdGhpcworICogY29kZSBhbmQgdGh1cyBwdXQgaXQgaW4gdGhlIHB1YmxpYyBkb21haW4uIFRoZSBzdWJzZXF1ZW50IGF1dGhvcnMKKyAqIGhhdmUgcHV0IHRoaXMgdW5kZXIgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorICoKKyAqIEJ5IEFhcm9uIEdyb3RoZSBhamdyb3RoZUB5YWhvby5jb20sIEF1Z3VzdCAxLCAyMDA0CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9tbS5oPgorI2luY2x1ZGUgPGFzbS9zY2F0dGVybGlzdC5oPgorI2luY2x1ZGUgPGxpbnV4L2NyeXB0by5oPgorCisjZGVmaW5lIEtIQVpBRF9LRVlfU0laRQkJMTYKKyNkZWZpbmUgS0hBWkFEX0JMT0NLX1NJWkUJOAorI2RlZmluZSBLSEFaQURfUk9VTkRTCQk4CisKK3N0cnVjdCBraGF6YWRfY3R4IHsKKwl1NjQgRVtLSEFaQURfUk9VTkRTICsgMV07CisJdTY0IERbS0hBWkFEX1JPVU5EUyArIDFdOworfTsKKworc3RhdGljIGNvbnN0IHU2NCBUMFsyNTZdID0geworCTB4YmFkM2QyNjhiYmI5NmEwMVVMTCwgMHg1NGZjNGQxOWU1OWE2NmIxVUxMLCAweDJmNzFiYzkzZTI2NTE0Y2RVTEwsCisJMHg3NDljY2RiOTI1ODcxYjUxVUxMLCAweDUzZjU1MTAyZjdhMjU3YTRVTEwsIDB4ZDM2ODZiYjhkMGQ2YmUwM1VMTCwKKwkweGQyNmI2ZmJkZDZkZWI1MDRVTEwsIDB4NGRkNzI5NjRiMzUyODVmZVVMTCwgMHg1MGYwNWQwZGZkYmE0YWFkVUxMLAorCTB4YWNlOThhMjZjZjA5ZTA2M1VMTCwgMHg4ZDhhMGU4MzA5MWM5Njg0VUxMLCAweGJmZGNjNjc5YTU5MTRkMWFVTEwsCisJMHg3MDkwZGRhZDNkYTczNzRkVUxMLCAweDUyZjY1NTA3ZjFhYTVjYTNVTEwsIDB4OWFiMzUyYzg3YmE0MTdlMVVMTCwKKwkweDRjZDQyZDYxYjU1YThlZjlVTEwsIDB4ZWEyMzhmNjU0NjAzMjBhY1VMTCwgMHhkNTYyNzNhNmM0ZTY4NDExVUxMLAorCTB4OTdhNDY2ZjE1NWNjNjhjMlVMTCwgMHhkMTZlNjNiMmRjYzZhODBkVUxMLCAweDMzNTVjY2ZmYWE4NWQwOTlVTEwsCisJMHg1MWYzNTkwOGZiYjI0MWFhVUxMLCAweDViZWQ3MTJhYzdlMjBmOWNVTEwsIDB4YTZmN2EyMDRmMzU5YWU1NVVMTCwKKwkweGRlN2Y1ZjgxZmViZWMxMjBVTEwsIDB4NDhkODNkNzVhZDdhYTJlNVVMTCwgMHhhOGU1OWEzMmQ3MjljYzdmVUxMLAorCTB4OTliNjVlYzc3MWJjMGFlOFVMTCwgMHhkYjcwNGI5MGUwOTZlNjNiVUxMLCAweDMyNTZjOGZhYWM4ZGRiOWVVTEwsCisJMHhiN2M0ZTY1MTk1ZDExNTIyVUxMLCAweGZjMTlkNzJiMzJiM2FhY2VVTEwsIDB4ZTMzOGFiNDg3MDRiNzM5M1VMTCwKKwkweDllYmY0MmRjNjM4NDNiZmRVTEwsIDB4OTFhZTdlZWY0MWZjNTJkMFVMTCwgMHg5YmIwNTZjZDdkYWMxY2U2VUxMLAorCTB4ZTIzYmFmNGQ3NjQzNzg5NFVMTCwgMHhiYmQwZDY2ZGJkYjE2MTA2VUxMLCAweDQxYzMxOTU4OWIzMmYxZGFVTEwsCisJMHg2ZWIyYTVjYjc5NTdlNTE3VUxMLCAweGE1ZjJhZTBiZjk0MWIzNWNVTEwsIDB4Y2I0MDBiYzA4MDE2NTY0YlVMTCwKKwkweDZiYmRiMWRhNjc3ZmMyMGNVTEwsIDB4OTVhMjZlZmI1OWRjN2VjY1VMTCwgMHhhMWZlYmUxZmUxNjE5ZjQwVUxMLAorCTB4ZjMwOGViMTgxMGNiYzNlM1VMTCwgMHhiMWNlZmU0ZjgxZTEyZjMwVUxMLCAweDAyMDYwODBhMGMxMDE2MGVVTEwsCisJMHhjYzQ5MTdkYjkyMmU2NzVlVUxMLCAweGM0NTEzN2YzYTI2ZTNmNjZVTEwsIDB4MWQyNzc0Njk0ZWU4Y2Y1M1VMTCwKKwkweDE0M2M1MDQ0NzhhMDljNmNVTEwsIDB4YzM1ODJiZThiMDU2MGU3M1VMTCwgMHg2M2E1OTFmMjU3M2Y5YTM0VUxMLAorCTB4ZGE3MzRmOTVlNjllZWQzY1VMTCwgMHg1ZGU3NjkzNGQzZDIzNThlVUxMLCAweDVmZTE2MTNlZGZjMjIzODBVTEwsCisJMHhkYzc5NTc4YmYyYWVkNzJlVUxMLCAweDdkODdlOTk0MTNjZjQ4NmVVTEwsIDB4Y2Q0YTEzZGU5NDI2NmM1OVVMTCwKKwkweDdmODFlMTllMWZkZjVlNjBVTEwsIDB4NWFlZTc1MmZjMWVhMDQ5YlVMTCwgMHg2Y2I0YWRjMTc1NDdmMzE5VUxMLAorCTB4NWNlNDZkMzFkNWRhM2U4OVVMTCwgMHhmNzA0ZmIwYzA4ZWJlZmZmVUxMLCAweDI2NmE5OGJlZDQyZDQ3ZjJVTEwsCisJMHhmZjFjZGIyNDM4YWJiN2M3VUxMLCAweGVkMmE5MzdlNTQzYjExYjlVTEwsIDB4ZTgyNTg3NmY0YTEzMzZhMlVMTCwKKwkweDlkYmE0ZWQzNjk5YzI2ZjRVTEwsIDB4NmZiMWExY2U3ZjVmZWUxMFVMTCwgMHg4ZThmMDI4YzAzMDQ4YjhkVUxMLAorCTB4MTkyYjY0N2Q1NmM4ZTM0ZlVMTCwgMHhhMGZkYmExYWU3Njk5NDQ3VUxMLCAweGYwMGRlNzE3MWFkM2RlZWFVTEwsCisJMHg4OTg2MWU5NzExM2NiYTk4VUxMLCAweDBmMTEzYzMzMjI3ODY5MmRVTEwsIDB4MDcwOTFjMWIxMjM4MzExNVVMTCwKKwkweGFmZWM4NjI5YzUxMWZkNmFVTEwsIDB4ZmIxMGNiMzAyMDhiOWJkYlVMTCwgMHgwODE4MjAyODMwNDA1ODM4VUxMLAorCTB4MTUzZjU0NDE3ZWE4OTc2YlVMTCwgMHgwZDE3MzQzOTJlNjg3ZjIzVUxMLCAweDA0MGMxMDE0MTgyMDJjMWNVTEwsCisJMHgwMTAzMDQwNTA2MDgwYjA3VUxMLCAweDY0YWM4ZGU5NDUwN2FiMjFVTEwsIDB4ZGY3YzViODRmOGI2Y2EyN1VMTCwKKwkweDc2OWFjNWIzMjk5NzBkNWZVTEwsIDB4Nzk4YmY5ODAwYmVmNjQ3MlVMTCwgMHhkZDdhNTM4ZWY0YTZkYzI5VUxMLAorCTB4M2Q0N2Y0Yzk4ZWY1YjJiM1VMTCwgMHgxNjNhNTg0ZTc0YjA4YTYyVUxMLCAweDNmNDFmY2MzODJlNWE0YmRVTEwsCisJMHgzNzU5ZGNlYmIyYTVmYzg1VUxMLCAweDZkYjdhOWM0NzM0ZmY4MWVVTEwsIDB4Mzg0OGUwZDg5MGRkOTVhOFVMTCwKKwkweGI5ZDZkZTY3YjFhMTc3MDhVTEwsIDB4NzM5NWQxYTIzN2JmMmE0NFVMTCwgMHhlOTI2ODM2YTRjMWIzZGE1VUxMLAorCTB4MzU1ZmQ0ZTFiZWI1ZWE4YlVMTCwgMHg1NWZmNDkxY2UzOTI2ZGI2VUxMLCAweDcxOTNkOWE4M2JhZjNjNGFVTEwsCisJMHg3YjhkZjE4YTA3ZmY3MjdjVUxMLCAweDhjODkwYTg2MGYxNDlkODNVTEwsIDB4NzI5NmQ1YTczMWI3MjE0M1VMTCwKKwkweDg4ODUxYTkyMTczNGIxOWZVTEwsIDB4ZjYwN2ZmMDkwZWUzZTRmOFVMTCwgMHgyYTdlYTg4MmZjNGQzM2Q2VUxMLAorCTB4M2U0MmY4YzY4NGVkYWZiYVVMTCwgMHg1ZWUyNjUzYmQ5Y2EyODg3VUxMLCAweDI3Njk5Y2JiZDIyNTRjZjVVTEwsCisJMHg0NmNhMDU0Mzg5MGFjMGNmVUxMLCAweDBjMTQzMDNjMjg2MDc0MjRVTEwsIDB4NjVhZjg5ZWM0MzBmYTAyNlVMTCwKKwkweDY4YjhiZGQ1NmQ2N2RmMDVVTEwsIDB4NjFhMzk5Zjg1YjJmOGMzYVVMTCwgMHgwMzA1MGMwZjBhMTgxZDA5VUxMLAorCTB4YzE1ZTIzZTJiYzQ2MTg3ZFVMTCwgMHg1N2Y5NDExNmVmODI3YmI4VUxMLCAweGQ2Njc3ZmE5Y2VmZTk5MThVTEwsCisJMHhkOTc2NDM5YWVjODZmMDM1VUxMLCAweDU4ZTg3ZDI1Y2RmYTEyOTVVTEwsIDB4ZDg3NTQ3OWZlYThlZmIzMlVMTCwKKwkweDY2YWE4NWUzNDkxN2JkMmZVTEwsIDB4ZDc2NDdiYWNjOGY2OTIxZlVMTCwgMHgzYTRlZThkMjljY2Q4M2E2VUxMLAorCTB4Yzg0NTA3Y2Y4YTBlNGI0MlVMTCwgMHgzYzQ0ZjBjYzg4ZmRiOWI0VUxMLCAweGZhMTNjZjM1MjY4MzkwZGNVTEwsCisJMHg5NmE3NjJmNDUzYzQ2M2M1VUxMLCAweGE3ZjRhNjAxZjU1MWE1NTJVTEwsIDB4OThiNTVhYzI3N2I0MDFlZlVMTCwKKwkweGVjMjk5NzdiNTIzMzFhYmVVTEwsIDB4YjhkNWRhNjJiN2E5N2MwZlVMTCwgMHhjNzU0M2JmY2E4NzYyMjZmVUxMLAorCTB4YWVlZjgyMmNjMzE5ZjY2ZFVMTCwgMHg2OWJiYjlkMDZiNmZkNDAyVUxMLCAweDRiZGQzMTdhYTc2MmJmZWNVTEwsCisJMHhhYmUwOTYzZGRkMzFkMTc2VUxMLCAweGE5ZTY5ZTM3ZDEyMWM3NzhVTEwsIDB4NjdhOTgxZTY0ZjFmYjYyOFVMTCwKKwkweDBhMWUyODIyM2M1MDRlMzZVTEwsIDB4NDdjOTAxNDY4ZjAyY2JjOFVMTCwgMHhmMjBiZWYxZDE2YzNjOGU0VUxMLAorCTB4YjVjMmVlNWI5OWMxMDMyY1VMTCwgMHgyMjY2ODhhYWNjMGQ2YmVlVUxMLCAweGU1MzJiMzU2NjQ3YjQ5ODFVTEwsCisJMHhlZTJmOWY3MTVlMjMwY2IwVUxMLCAweGJlZGZjMjdjYTM5OTQ2MWRVTEwsIDB4MmI3ZGFjODdmYTQ1MzhkMVVMTCwKKwkweDgxOWUzZWJmMjE3Y2UyYTBVTEwsIDB4MTIzNjQ4NWE2YzkwYTY3ZVVMTCwgMHg4Mzk4MzZiNTJkNmNmNGFlVUxMLAorCTB4MWIyZDZjNzc1YWQ4ZjU0MVVMTCwgMHgwZTEyMzgzNjI0NzA2MjJhVUxMLCAweDIzNjU4Y2FmY2EwNTYwZTlVTEwsCisJMHhmNTAyZjMwNjA0ZmJmOWYxVUxMLCAweDQ1Y2YwOTRjODMxMmRkYzZVTEwsIDB4MjE2Mzg0YTVjNjE1NzZlN1VMTCwKKwkweGNlNGYxZmQxOWUzZTcxNTBVTEwsIDB4NDlkYjM5NzBhYjcyYTllMlVMTCwgMHgyYzc0YjA5Y2U4N2QwOWM0VUxMLAorCTB4ZjkxNmMzM2EyYzliOGRkNVVMTCwgMHhlNjM3YmY1OTZlNjM1NDg4VUxMLCAweGI2YzdlMjU0OTNkOTFlMjVVTEwsCisJMHgyODc4YTA4OGYwNWQyNWQ4VUxMLCAweDE3Mzk1YzRiNzJiODgxNjVVTEwsIDB4ODI5YjMyYjAyYjY0ZmZhOVVMTCwKKwkweDFhMmU2ODcyNWNkMGZlNDZVTEwsIDB4OGI4MDE2OWQxZDJjYWM5NlVMTCwgMHhmZTFmZGYyMTNlYTNiY2MwVUxMLAorCTB4OGE4MzEyOTgxYjI0YTc5MVVMTCwgMHgwOTFiMjQyZDM2NDg1MzNmVUxMLCAweGM5NDYwM2NhOGMwNjQwNDVVTEwsCisJMHg4Nzk0MjZhMTM1NGNkOGIyVUxMLCAweDRlZDIyNTZiYjk0YTk4ZjdVTEwsIDB4ZTEzZWEzNDI3YzViNjU5ZFVMTCwKKwkweDJlNzJiODk2ZTQ2ZDFmY2FVTEwsIDB4ZTQzMWI3NTM2MjczNDI4NlVMTCwgMHhlMDNkYTc0NzdhNTM2ZTlhVUxMLAorCTB4ZWIyMDhiNjA0MDBiMmJhYlVMTCwgMHg5MGFkN2FlYTQ3ZjQ1OWQ3VUxMLCAweGE0ZjFhYTBlZmY0OWI4NWJVTEwsCisJMHgxZTIyNzg2NjQ0ZjBkMjVhVUxMLCAweDg1OTIyZWFiMzk1Y2NlYmNVTEwsIDB4NjBhMDlkZmQ1ZDI3ODczZFVMTCwKKwkweDAwMDAwMDAwMDAwMDAwMDBVTEwsIDB4MjU2Zjk0YjFkZTM1NWFmYlVMTCwgMHhmNDAxZjcwMzAyZjNmMmY2VUxMLAorCTB4ZjEwZWUzMTIxY2RiZDVlZFVMTCwgMHg5NGExNmFmZTVmZDQ3NWNiVUxMLCAweDBiMWQyYzI3M2E1ODQ1MzFVTEwsCisJMHhlNzM0YmI1YzY4NmI1ZjhmVUxMLCAweDc1OWZjOWJjMjM4ZjEwNTZVTEwsIDB4ZWYyYzliNzQ1ODJiMDdiN1VMTCwKKwkweDM0NWNkMGU0YjhiZGUxOGNVTEwsIDB4MzE1M2M0ZjVhNjk1YzY5N1VMTCwgMHhkNDYxNzdhM2MyZWU4ZjE2VUxMLAorCTB4ZDA2ZDY3YjdkYWNlYTMwYVVMTCwgMHg4Njk3MjJhNDMzNDRkM2I1VUxMLCAweDdlODJlNTliMTlkNzU1NjdVTEwsCisJMHhhZGVhOGUyM2M5MDFlYjY0VUxMLCAweGZkMWFkMzJlMzRiYmExYzlVTEwsIDB4Mjk3YmE0OGRmNjU1MmVkZlVMTCwKKwkweDMwNTBjMGYwYTA5ZGNkOTBVTEwsIDB4M2I0ZGVjZDc5YWM1ODhhMVVMTCwgMHg5ZmJjNDZkOTY1OGMzMGZhVUxMLAorCTB4ZjgxNWM3M2YyYTkzODZkMlVMTCwgMHhjNjU3M2ZmOWFlN2UyOTY4VUxMLCAweDEzMzU0YzVmNmE5OGFkNzlVTEwsCisJMHgwNjBhMTgxZTE0MzAzYTEyVUxMLCAweDA1MGYxNDExMWUyODI3MWJVTEwsIDB4YzU1MjMzZjZhNDY2MzQ2MVVMTCwKKwkweDExMzM0NDU1NjY4OGJiNzdVTEwsIDB4Nzc5OWMxYjYyZjlmMDY1OFVMTCwgMHg3Yzg0ZWQ5MTE1Yzc0MzY5VUxMLAorCTB4N2E4ZWY1OGYwMWY3Nzk3YlVMTCwgMHg3ODg4ZmQ4NTBkZTc2Zjc1VUxMLCAweDM2NWFkOGVlYjRhZGY3ODJVTEwsCisJMHgxYzI0NzA2YzQ4ZTBjNDU0VUxMLCAweDM5NGJlNGRkOTZkNTllYWZVTEwsIDB4NTllYjc5MjBjYmYyMTk5MlVMTCwKKwkweDE4Mjg2MDc4NTBjMGU4NDhVTEwsIDB4NTZmYTQ1MTNlOThhNzBiZlVMTCwgMHhiM2M4ZjY0NThkZjEzOTNlVUxMLAorCTB4YjBjZGZhNGE4N2U5MjQzN1VMTCwgMHgyNDZjOTBiNGQ4M2Q1MWZjVUxMLCAweDIwNjA4MGEwYzAxZDdkZTBVTEwsCisJMHhiMmNiZjI0MDhiZjkzMjM5VUxMLCAweDkyYWI3MmUwNGJlNDRmZDlVTEwsIDB4YTNmOGI2MTVlZDcxODk0ZVVMTCwKKwkweGMwNWQyN2U3YmE0ZTEzN2FVTEwsIDB4NDRjYzBkNDk4NTFhZDZjMVVMTCwgMHg2MmE2OTVmNzUxMzc5MTMzVUxMLAorCTB4MTAzMDQwNTA2MDgwYjA3MFVMTCwgMHhiNGMxZWE1ZTlmYzkwODJiVUxMLCAweDg0OTEyYWFlM2Y1NGM1YmJVTEwsCisJMHg0M2M1MTE1Mjk3MjJlN2Q0VUxMLCAweDkzYTg3NmU1NGRlYzQ0ZGVVTEwsIDB4YzI1YjJmZWRiNjVlMDU3NFVMTCwKKwkweDRhZGUzNTdmYTE2YWI0ZWJVTEwsIDB4YmRkYWNlNzNhOTgxNWIxNFVMTCwgMHg4ZjhjMDY4OTA1MGM4MDhhVUxMLAorCTB4MmQ3N2I0OTllZTc1MDJjM1VMTCwgMHhiY2Q5Y2E3NmFmODk1MDEzVUxMLCAweDljYjk0YWQ2NmY5NDJkZjNVTEwsCisJMHg2YWJlYjVkZjYxNzdjOTBiVUxMLCAweDQwYzAxZDVkOWQzYWZhZGRVTEwsIDB4Y2Y0YzFiZDQ5ODM2N2E1N1VMTCwKKwkweGEyZmJiMjEwZWI3OTgyNDlVTEwsIDB4ODA5ZDNhYmEyNzc0ZTlhN1VMTCwgMHg0ZmQxMjE2ZWJmNDI5M2YwVUxMLAorCTB4MWYyMTdjNjM0MmY4ZDk1ZFVMTCwgMHhjYTQzMGZjNTg2MWU1ZDRjVUxMLCAweGFhZTM5MjM4ZGIzOWRhNzFVTEwsCisJMHg0MmM2MTU1NzkxMmFlY2QzVUxMCit9OworCitzdGF0aWMgY29uc3QgdTY0IFQxWzI1Nl0gPSB7CisJMHhkM2JhNjhkMmI5YmIwMTZhVUxMLCAweGZjNTQxOTRkOWFlNWIxNjZVTEwsIDB4NzEyZjkzYmM2NWUyY2QxNFVMTCwKKwkweDljNzRiOWNkODcyNTUxMWJVTEwsIDB4ZjU1MzAyNTFhMmY3YTQ1N1VMTCwgMHg2OGQzYjg2YmQ2ZDAwM2JlVUxMLAorCTB4NmJkMmJkNmZkZWQ2MDRiNVVMTCwgMHhkNzRkNjQyOTUyYjNmZTg1VUxMLCAweGYwNTAwZDVkYmFmZGFkNGFVTEwsCisJMHhlOWFjMjY4YTA5Y2Y2M2UwVUxMLCAweDhhOGQ4MzBlMWMwOTg0OTZVTEwsIDB4ZGNiZjc5YzY5MWE1MWE0ZFVMTCwKKwkweDkwNzBhZGRkYTczZDRkMzdVTEwsIDB4ZjY1MjA3NTVhYWYxYTM1Y1VMTCwgMHhiMzlhYzg1MmE0N2JlMTE3VUxMLAorCTB4ZDQ0YzYxMmQ1YWI1Zjk4ZVVMTCwgMHgyM2VhNjU4ZjAzNDZhYzIwVUxMLCAweDYyZDVhNjczZTZjNDExODRVTEwsCisJMHhhNDk3ZjE2NmNjNTVjMjY4VUxMLCAweDZlZDFiMjYzYzZkYzBkYThVTEwsIDB4NTUzM2ZmY2M4NWFhOTlkMFVMTCwKKwkweGYzNTEwODU5YjJmYmFhNDFVTEwsIDB4ZWQ1YjJhNzFlMmM3OWMwZlVMTCwgMHhmN2E2MDRhMjU5ZjM1NWFlVUxMLAorCTB4N2ZkZTgxNWZiZWZlMjBjMVVMTCwgMHhkODQ4NzUzZDdhYWRlNWEyVUxMLCAweGU1YTgzMjlhMjlkNzdmY2NVTEwsCisJMHhiNjk5Yzc1ZWJjNzFlODBhVUxMLCAweDcwZGI5MDRiOTZlMDNiZTZVTEwsIDB4NTYzMmZhYzg4ZGFjOWVkYlVMTCwKKwkweGM0Yjc1MWU2ZDE5NTIyMTVVTEwsIDB4MTlmYzJiZDdiMzMyY2VhYVVMTCwgMHgzOGUzNDhhYjRiNzA5MzczVUxMLAorCTB4YmY5ZWRjNDI4NDYzZmQzYlVMTCwgMHhhZTkxZWY3ZWZjNDFkMDUyVUxMLCAweGIwOWJjZDU2YWM3ZGU2MWNVTEwsCisJMHgzYmUyNGRhZjQzNzY5NDc4VUxMLCAweGQwYmI2ZGQ2YjFiZDA2NjFVTEwsIDB4YzM0MTU4MTkzMjliZGFmMVVMTCwKKwkweGIyNmVjYmE1NTc3OTE3ZTVVTEwsIDB4ZjJhNTBiYWU0MWY5NWNiM1VMTCwgMHg0MGNiYzAwYjE2ODA0YjU2VUxMLAorCTB4YmQ2YmRhYjE3ZjY3MGNjMlVMTCwgMHhhMjk1ZmI2ZWRjNTljYzdlVUxMLCAweGZlYTExZmJlNjFlMTQwOWZVTEwsCisJMHgwOGYzMThlYmNiMTBlM2MzVUxMLCAweGNlYjE0ZmZlZTE4MTMwMmZVTEwsIDB4MDYwMjBhMDgxMDBjMGUxNlVMTCwKKwkweDQ5Y2NkYjE3MmU5MjVlNjdVTEwsIDB4NTFjNGYzMzc2ZWEyNjYzZlVMTCwgMHgyNzFkNjk3NGU4NGU1M2NmVUxMLAorCTB4M2MxNDQ0NTBhMDc4NmM5Y1VMTCwgMHg1OGMzZTgyYjU2YjA3MzBlVUxMLCAweGE1NjNmMjkxM2Y1NzM0OWFVTEwsCisJMHg3M2RhOTU0ZjllZTYzY2VkVUxMLCAweGU3NWQzNDY5ZDJkMzhlMzVVTEwsIDB4ZTE1ZjNlNjFjMmRmODAyM1VMTCwKKwkweDc5ZGM4YjU3YWVmMjJlZDdVTEwsIDB4ODc3ZDk0ZTljZjEzNmU0OFVMTCwgMHg0YWNkZGUxMzI2OTQ1OTZjVUxMLAorCTB4ODE3ZjllZTFkZjFmNjA1ZVVMTCwgMHhlZTVhMmY3NWVhYzE5YjA0VUxMLCAweGI0NmNjMWFkNDc3NTE5ZjNVTEwsCisJMHhlNDVjMzE2ZGRhZDU4OTNlVUxMLCAweDA0ZjcwY2ZiZWIwOGZmZWZVTEwsIDB4NmEyNmJlOTgyZGQ0ZjI0N1VMTCwKKwkweDFjZmYyNGRiYWIzOGM3YjdVTEwsIDB4MmFlZDdlOTMzYjU0YjkxMVVMTCwgMHgyNWU4NmY4NzEzNGFhMjM2VUxMLAorCTB4YmE5ZGQzNGU5YzY5ZjQyNlVMTCwgMHhiMTZmY2VhMTVmN2YxMGVlVUxMLCAweDhmOGU4YzAyMDQwMzhkOGJVTEwsCisJMHgyYjE5N2Q2NGM4NTY0ZmUzVUxMLCAweGZkYTAxYWJhNjllNzQ3OTRVTEwsIDB4MGRmMDE3ZTdkMzFhZWFkZVVMTCwKKwkweDg2ODk5NzFlM2MxMTk4YmFVTEwsIDB4MTEwZjMzM2M3ODIyMmQ2OVVMTCwgMHgwOTA3MWIxYzM4MTIxNTMxVUxMLAorCTB4ZWNhZjI5ODYxMWM1NmFmZFVMTCwgMHgxMGZiMzBjYjhiMjBkYjliVUxMLCAweDE4MDgyODIwNDAzMDM4NThVTEwsCisJMHgzZjE1NDE1NGE4N2U2Yjk3VUxMLCAweDE3MGQzOTM0NjgyZTIzN2ZVTEwsIDB4MGMwNDE0MTAyMDE4MWMyY1VMTCwKKwkweDAzMDEwNTA0MDgwNjA3MGJVTEwsIDB4YWM2NGU5OGQwNzQ1MjFhYlVMTCwgMHg3Y2RmODQ1YmI2ZjgyN2NhVUxMLAorCTB4OWE3NmIzYzU5NzI5NWYwZFVMTCwgMHg4Yjc5ODBmOWVmMGI3MjY0VUxMLCAweDdhZGQ4ZTUzYTZmNDI5ZGNVTEwsCisJMHg0NzNkYzlmNGY1OGViM2IyVUxMLCAweDNhMTY0ZTU4YjA3NDYyOGFVTEwsIDB4NDEzZmMzZmNlNTgyYmRhNFVMTCwKKwkweDU5MzdlYmRjYTViMjg1ZmNVTEwsIDB4Yjc2ZGM0YTk0ZjczMWVmOFVMTCwgMHg0ODM4ZDhlMGRkOTBhODk1VUxMLAorCTB4ZDZiOTY3ZGVhMWIxMDg3N1VMTCwgMHg5NTczYTJkMWJmMzc0NDJhVUxMLCAweDI2ZTk2YTgzMWI0Y2E1M2RVTEwsCisJMHg1ZjM1ZTFkNGI1YmU4YmVhVUxMLCAweGZmNTUxYzQ5OTJlM2I2NmRVTEwsIDB4OTM3MWE4ZDlhZjNiNGEzY1VMTCwKKwkweDhkN2I4YWYxZmYwNzdjNzJVTEwsIDB4ODk4Yzg2MGExNDBmODM5ZFVMTCwgMHg5NjcyYTdkNWI3MzE0MzIxVUxMLAorCTB4ODU4ODkyMWEzNDE3OWZiMVVMTCwgMHgwN2Y2MDlmZmUzMGVmOGU0VUxMLCAweDdlMmE4MmE4NGRmY2Q2MzNVTEwsCisJMHg0MjNlYzZmOGVkODRiYWFmVUxMLCAweGUyNWUzYjY1Y2FkOTg3MjhVTEwsIDB4NjkyN2JiOWMyNWQyZjU0Y1VMTCwKKwkweGNhNDY0MzA1MGE4OWNmYzBVTEwsIDB4MTQwYzNjMzA2MDI4MjQ3NFVMTCwgMHhhZjY1ZWM4OTBmNDMyNmEwVUxMLAorCTB4Yjg2OGQ1YmQ2NzZkMDVkZlVMTCwgMHhhMzYxZjg5OTJmNWIzYThjVUxMLCAweDA1MDMwZjBjMTgwYTA5MWRVTEwsCisJMHg1ZWMxZTIyMzQ2YmM3ZDE4VUxMLCAweGY5NTcxNjQxODJlZmI4N2JVTEwsIDB4NjdkNmE5N2ZmZWNlMTg5OVVMTCwKKwkweDc2ZDk5YTQzODZlYzM1ZjBVTEwsIDB4ZTg1ODI1N2RmYWNkOTUxMlVMTCwgMHg3NWQ4OWY0NzhlZWEzMmZiVUxMLAorCTB4YWE2NmUzODUxNzQ5MmZiZFVMTCwgMHg2NGQ3YWM3YmY2YzgxZjkyVUxMLCAweDRlM2FkMmU4Y2Q5Y2E2ODNVTEwsCisJMHg0NWM4Y2YwNzBlOGE0MjRiVUxMLCAweDQ0M2NjY2YwZmQ4OGI0YjlVTEwsIDB4MTNmYTM1Y2Y4MzI2ZGM5MFVMTCwKKwkweGE3OTZmNDYyYzQ1M2M1NjNVTEwsIDB4ZjRhNzAxYTY1MWY1NTJhNVVMTCwgMHhiNTk4YzI1YWI0NzdlZjAxVUxMLAorCTB4MjllYzdiOTczMzUyYmUxYVVMTCwgMHhkNWI4NjJkYWE5YjcwZjdjVUxMLCAweDU0YzdmYzNiNzZhODZmMjJVTEwsCisJMHhlZmFlMmM4MjE5YzM2ZGY2VUxMLCAweGJiNjlkMGI5NmY2YjAyZDRVTEwsIDB4ZGQ0YjdhMzE2MmE3ZWNiZlVMTCwKKwkweGUwYWIzZDk2MzFkZDc2ZDFVTEwsIDB4ZTZhOTM3OWUyMWQxNzhjN1VMTCwgMHhhOTY3ZTY4MTFmNGYyOGI2VUxMLAorCTB4MWUwYTIyMjg1MDNjMzY0ZVVMTCwgMHhjOTQ3NDYwMTAyOGZjOGNiVUxMLCAweDBiZjIxZGVmYzMxNmU0YzhVTEwsCisJMHhjMmI1NWJlZWMxOTkyYzAzVUxMLCAweDY2MjJhYTg4MGRjY2VlNmJVTEwsIDB4MzJlNTU2YjM3YjY0ODE0OVVMTCwKKwkweDJmZWU3MTlmMjM1ZWIwMGNVTEwsIDB4ZGZiZTdjYzI5OWEzMWQ0NlVMTCwgMHg3ZDJiODdhYzQ1ZmFkMTM4VUxMLAorCTB4OWU4MWJmM2U3YzIxYTBlMlVMTCwgMHgzNjEyNWE0ODkwNmM3ZWE2VUxMLCAweDk4ODNiNTM2NmMyZGFlZjRVTEwsCisJMHgyZDFiNzc2Y2Q4NWE0MWY1VUxMLCAweDEyMGUzNjM4NzAyNDJhNjJVTEwsIDB4NjUyM2FmOGMwNWNhZTk2MFVMTCwKKwkweDAyZjUwNmYzZmIwNGYxZjlVTEwsIDB4Y2Y0NTRjMDkxMjgzYzZkZFVMTCwgMHg2MzIxYTU4NDE1YzZlNzc2VUxMLAorCTB4NGZjZWQxMWYzZTllNTA3MVVMTCwgMHhkYjQ5NzAzOTcyYWJlMmE5VUxMLCAweDc0MmM5Y2IwN2RlOGM0MDlVTEwsCisJMHgxNmY5M2FjMzliMmNkNThkVUxMLCAweDM3ZTY1OWJmNjM2ZTg4NTRVTEwsIDB4YzdiNjU0ZTJkOTkzMjUxZVVMTCwKKwkweDc4Mjg4OGEwNWRmMGQ4MjVVTEwsIDB4MzkxNzRiNWNiODcyNjU4MVVMTCwgMHg5YjgyYjAzMjY0MmJhOWZmVUxMLAorCTB4MmUxYTcyNjhkMDVjNDZmZVVMTCwgMHg4MDhiOWQxNjJjMWQ5NmFjVUxMLCAweDFmZmUyMWRmYTMzZWMwYmNVTEwsCisJMHg4MzhhOTgxMjI0MWI5MWE3VUxMLCAweDFiMDkyZDI0NDgzNjNmNTNVTEwsIDB4NDZjOWNhMDMwNjhjNDU0MFVMTCwKKwkweDk0ODdhMTI2NGMzNWIyZDhVTEwsIDB4ZDI0ZTZiMjU0YWI5Zjc5OFVMTCwgMHgzZWUxNDJhMzViN2M5ZDY1VUxMLAorCTB4NzIyZTk2Yjg2ZGU0Y2ExZlVMTCwgMHgzMWU0NTNiNzczNjI4NjQyVUxMLCAweDNkZTA0N2E3NTM3YTlhNmVVTEwsCisJMHgyMGViNjA4YjBiNDBhYjJiVUxMLCAweGFkOTBlYTdhZjQ0N2Q3NTlVTEwsIDB4ZjFhNDBlYWE0OWZmNWJiOFVMTCwKKwkweDIyMWU2Njc4ZjA0NDVhZDJVTEwsIDB4OTI4NWFiMmU1YzM5YmNjZVVMTCwgMHhhMDYwZmQ5ZDI3NWQzZDg3VUxMLAorCTB4MDAwMDAwMDAwMDAwMDAwMFVMTCwgMHg2ZjI1YjE5NDM1ZGVmYjVhVUxMLCAweDAxZjQwM2Y3ZjMwMmY2ZjJVTEwsCisJMHgwZWYxMTJlM2RiMWNlZGQ1VUxMLCAweGExOTRmZTZhZDQ1ZmNiNzVVTEwsIDB4MWQwYjI3MmM1ODNhMzE0NVVMTCwKKwkweDM0ZTc1Y2JiNmI2ODhmNWZVTEwsIDB4OWY3NWJjYzk4ZjIzNTYxMFVMTCwgMHgyY2VmNzQ5YjJiNThiNzA3VUxMLAorCTB4NWMzNGU0ZDBiZGI4OGNlMVVMTCwgMHg1MzMxZjVjNDk1YTY5N2M2VUxMLCAweDYxZDRhMzc3ZWVjMjE2OGZVTEwsCisJMHg2ZGQwYjc2N2NlZGEwYWEzVUxMLCAweDk3ODZhNDIyNDQzM2I1ZDNVTEwsIDB4ODI3ZTliZTVkNzE5Njc1NVVMTCwKKwkweGVhYWQyMzhlMDFjOTY0ZWJVTEwsIDB4MWFmZDJlZDNiYjM0YzlhMVVMTCwgMHg3YjI5OGRhNDU1ZjZkZjJlVUxMLAorCTB4NTAzMGYwYzA5ZGEwOTBjZFVMTCwgMHg0ZDNiZDdlY2M1OWFhMTg4VUxMLCAweGJjOWZkOTQ2OGM2NWZhMzBVTEwsCisJMHgxNWY4M2ZjNzkzMmFkMjg2VUxMLCAweDU3YzZmOTNmN2VhZTY4MjlVTEwsIDB4MzUxMzVmNGM5ODZhNzlhZFVMTCwKKwkweDBhMDYxZTE4MzAxNDEyM2FVTEwsIDB4MGYwNTExMTQyODFlMWIyN1VMTCwgMHg1MmM1ZjYzMzY2YTQ2MTM0VUxMLAorCTB4MzMxMTU1NDQ4ODY2NzdiYlVMTCwgMHg5OTc3YjZjMTlmMmY1ODA2VUxMLCAweDg0N2M5MWVkYzcxNTY5NDNVTEwsCisJMHg4ZTdhOGZmNWY3MDE3Yjc5VUxMLCAweDg4Nzg4NWZkZTcwZDc1NmZVTEwsIDB4NWEzNmVlZDhhZGI0ODJmN1VMTCwKKwkweDI0MWM2YzcwZTA0ODU0YzRVTEwsIDB4NGIzOWRkZTRkNTk2YWY5ZVVMTCwgMHhlYjU5MjA3OWYyY2I5MjE5VUxMLAorCTB4MjgxODc4NjBjMDUwNDhlOFVMTCwgMHhmYTU2MTM0NThhZTliZjcwVUxMLCAweGM4YjM0NWY2ZjE4ZDNlMzlVTEwsCisJMHhjZGIwNGFmYWU5ODczNzI0VUxMLCAweDZjMjRiNDkwM2RkOGZjNTFVTEwsIDB4NjAyMGEwODAxZGMwZTA3ZFVMTCwKKwkweGNiYjI0MGYyZjk4YjM5MzJVTEwsIDB4YWI5MmUwNzJlNDRiZDk0ZlVMTCwgMHhmOGEzMTViNjcxZWQ0ZTg5VUxMLAorCTB4NWRjMGU3Mjc0ZWJhN2ExM1VMTCwgMHhjYzQ0NDkwZDFhODVjMWQ2VUxMLCAweGE2NjJmNzk1Mzc1MTMzOTFVTEwsCisJMHgzMDEwNTA0MDgwNjA3MGIwVUxMLCAweGMxYjQ1ZWVhYzk5ZjJiMDhVTEwsIDB4OTE4NGFlMmE1NDNmYmJjNVVMTCwKKwkweGM1NDM1MjExMjI5N2Q0ZTdVTEwsIDB4YTg5M2U1NzZlYzRkZGU0NFVMTCwgMHg1YmMyZWQyZjVlYjY3NDA1VUxMLAorCTB4ZGU0YTdmMzU2YWExZWJiNFVMTCwgMHhkYWJkNzNjZTgxYTkxNDViVUxMLCAweDhjOGY4OTA2MGMwNThhODBVTEwsCisJMHg3NzJkOTliNDc1ZWVjMzAyVUxMLCAweGQ5YmM3NmNhODlhZjEzNTBVTEwsIDB4Yjk5Y2Q2NGE5NDZmZjMyZFVMTCwKKwkweGJlNmFkZmI1Nzc2MTBiYzlVTEwsIDB4YzA0MDVkMWQzYTlkZGRmYVVMTCwgMHg0Y2NmZDQxYjM2OTg1NzdhVUxMLAorCTB4ZmJhMjEwYjI3OWViNDk4MlVMTCwgMHg5ZDgwYmEzYTc0MjdhN2U5VUxMLCAweGQxNGY2ZTIxNDJiZmYwOTNVTEwsCisJMHgyMTFmNjM3Y2Y4NDI1ZGQ5VUxMLCAweDQzY2FjNTBmMWU4NjRjNWRVTEwsIDB4ZTNhYTM4OTIzOWRiNzFkYVVMTCwKKwkweGM2NDI1NzE1MmE5MWQzZWNVTEwKK307CisKK3N0YXRpYyBjb25zdCB1NjQgVDJbMjU2XSA9IHsKKwkweGQyNjhiYWQzNmEwMWJiYjlVTEwsIDB4NGQxOTU0ZmM2NmIxZTU5YVVMTCwgMHhiYzkzMmY3MTE0Y2RlMjY1VUxMLAorCTB4Y2RiOTc0OWMxYjUxMjU4N1VMTCwgMHg1MTAyNTNmNTU3YTRmN2EyVUxMLCAweDZiYjhkMzY4YmUwM2QwZDZVTEwsCisJMHg2ZmJkZDI2YmI1MDRkNmRlVUxMLCAweDI5NjQ0ZGQ3ODVmZWIzNTJVTEwsIDB4NWQwZDUwZjA0YWFkZmRiYVVMTCwKKwkweDhhMjZhY2U5ZTA2M2NmMDlVTEwsIDB4MGU4MzhkOGE5Njg0MDkxY1VMTCwgMHhjNjc5YmZkYzRkMWFhNTkxVUxMLAorCTB4ZGRhZDcwOTAzNzRkM2RhN1VMTCwgMHg1NTA3NTJmNjVjYTNmMWFhVUxMLCAweDUyYzg5YWIzMTdlMTdiYTRVTEwsCisJMHgyZDYxNGNkNDhlZjliNTVhVUxMLCAweDhmNjVlYTIzMjBhYzQ2MDNVTEwsIDB4NzNhNmQ1NjI4NDExYzRlNlVMTCwKKwkweDY2ZjE5N2E0NjhjMjU1Y2NVTEwsIDB4NjNiMmQxNmVhODBkZGNjNlVMTCwgMHhjY2ZmMzM1NWQwOTlhYTg1VUxMLAorCTB4NTkwODUxZjM0MWFhZmJiMlVMTCwgMHg3MTJhNWJlZDBmOWNjN2UyVUxMLCAweGEyMDRhNmY3YWU1NWYzNTlVTEwsCisJMHg1ZjgxZGU3ZmMxMjBmZWJlVUxMLCAweDNkNzU0OGQ4YTJlNWFkN2FVTEwsIDB4OWEzMmE4ZTVjYzdmZDcyOVVMTCwKKwkweDVlYzc5OWI2MGFlODcxYmNVTEwsIDB4NGI5MGRiNzBlNjNiZTA5NlVMTCwgMHhjOGZhMzI1NmRiOWVhYzhkVUxMLAorCTB4ZTY1MWI3YzQxNTIyOTVkMVVMTCwgMHhkNzJiZmMxOWFhY2UzMmIzVUxMLCAweGFiNDhlMzM4NzM5MzcwNGJVTEwsCisJMHg0MmRjOWViZjNiZmQ2Mzg0VUxMLCAweDdlZWY5MWFlNTJkMDQxZmNVTEwsIDB4NTZjZDliYjAxY2U2N2RhY1VMTCwKKwkweGFmNGRlMjNiNzg5NDc2NDNVTEwsIDB4ZDY2ZGJiZDA2MTA2YmRiMVVMTCwgMHgxOTU4NDFjM2YxZGE5YjMyVUxMLAorCTB4YTVjYjZlYjJlNTE3Nzk1N1VMTCwgMHhhZTBiYTVmMmIzNWNmOTQxVUxMLCAweDBiYzBjYjQwNTY0YjgwMTZVTEwsCisJMHhiMWRhNmJiZGMyMGM2NzdmVUxMLCAweDZlZmI5NWEyN2VjYzU5ZGNVTEwsIDB4YmUxZmExZmU5ZjQwZTE2MVVMTCwKKwkweGViMThmMzA4YzNlMzEwY2JVTEwsIDB4ZmU0ZmIxY2UyZjMwODFlMVVMTCwgMHgwODBhMDIwNjE2MGUwYzEwVUxMLAorCTB4MTdkYmNjNDk2NzVlOTIyZVVMTCwgMHgzN2YzYzQ1MTNmNjZhMjZlVUxMLCAweDc0NjkxZDI3Y2Y1MzRlZThVTEwsCisJMHg1MDQ0MTQzYzljNmM3OGEwVUxMLCAweDJiZThjMzU4MGU3M2IwNTZVTEwsIDB4OTFmMjYzYTU5YTM0NTczZlVMTCwKKwkweDRmOTVkYTczZWQzY2U2OWVVTEwsIDB4NjkzNDVkZTczNThlZDNkMlVMTCwgMHg2MTNlNWZlMTIzODBkZmMyVUxMLAorCTB4NTc4YmRjNzlkNzJlZjJhZVVMTCwgMHhlOTk0N2Q4NzQ4NmUxM2NmVUxMLCAweDEzZGVjZDRhNmM1OTk0MjZVTEwsCisJMHhlMTllN2Y4MTVlNjAxZmRmVUxMLCAweDc1MmY1YWVlMDQ5YmMxZWFVTEwsIDB4YWRjMTZjYjRmMzE5NzU0N1VMTCwKKwkweDZkMzE1Y2U0M2U4OWQ1ZGFVTEwsIDB4ZmIwY2Y3MDRlZmZmMDhlYlVMTCwgMHg5OGJlMjY2YTQ3ZjJkNDJkVUxMLAorCTB4ZGIyNGZmMWNiN2M3MzhhYlVMTCwgMHg5MzdlZWQyYTExYjk1NDNiVUxMLCAweDg3NmZlODI1MzZhMjRhMTNVTEwsCisJMHg0ZWQzOWRiYTI2ZjQ2OTljVUxMLCAweGExY2U2ZmIxZWUxMDdmNWZVTEwsIDB4MDI4YzhlOGY4YjhkMDMwNFVMTCwKKwkweDY0N2QxOTJiZTM0ZjU2YzhVTEwsIDB4YmExYWEwZmQ5NDQ3ZTc2OVVMTCwgMHhlNzE3ZjAwZGRlZWExYWQzVUxMLAorCTB4MWU5Nzg5ODZiYTk4MTEzY1VMTCwgMHgzYzMzMGYxMTY5MmQyMjc4VUxMLCAweDFjMWIwNzA5MzExNTEyMzhVTEwsCisJMHg4NjI5YWZlY2ZkNmFjNTExVUxMLCAweGNiMzBmYjEwOWJkYjIwOGJVTEwsIDB4MjAyODA4MTg1ODM4MzA0MFVMTCwKKwkweDU0NDExNTNmOTc2YjdlYThVTEwsIDB4MzQzOTBkMTc3ZjIzMmU2OFVMTCwgMHgxMDE0MDQwYzJjMWMxODIwVUxMLAorCTB4MDQwNTAxMDMwYjA3MDYwOFVMTCwgMHg4ZGU5NjRhY2FiMjE0NTA3VUxMLCAweDViODRkZjdjY2EyN2Y4YjZVTEwsCisJMHhjNWIzNzY5YTBkNWYyOTk3VUxMLCAweGY5ODA3OThiNjQ3MjBiZWZVTEwsIDB4NTM4ZWRkN2FkYzI5ZjRhNlVMTCwKKwkweGY0YzkzZDQ3YjJiMzhlZjVVTEwsIDB4NTg0ZTE2M2E4YTYyNzRiMFVMTCwgMHhmY2MzM2Y0MWE0YmQ4MmU1VUxMLAorCTB4ZGNlYjM3NTlmYzg1YjJhNVVMTCwgMHhhOWM0NmRiN2Y4MWU3MzRmVUxMLCAweGUwZDgzODQ4OTVhODkwZGRVTEwsCisJMHhkZTY3YjlkNjc3MDhiMWExVUxMLCAweGQxYTI3Mzk1MmE0NDM3YmZVTEwsIDB4ODM2YWU5MjYzZGE1NGMxYlVMTCwKKwkweGQ0ZTEzNTVmZWE4YmJlYjVVTEwsIDB4NDkxYzU1ZmY2ZGI2ZTM5MlVMTCwgMHhkOWE4NzE5MzNjNGEzYmFmVUxMLAorCTB4ZjE4YTdiOGQ3MjdjMDdmZlVMTCwgMHgwYTg2OGM4OTlkODMwZjE0VUxMLCAweGQ1YTc3Mjk2MjE0MzMxYjdVTEwsCisJMHgxYTkyODg4NWIxOWYxNzM0VUxMLCAweGZmMDlmNjA3ZTRmODBlZTNVTEwsIDB4YTg4MjJhN2UzM2Q2ZmM0ZFVMTCwKKwkweGY4YzYzZTQyYWZiYTg0ZWRVTEwsIDB4NjUzYjVlZTIyODg3ZDljYVVMTCwgMHg5Y2JiMjc2OTRjZjVkMjI1VUxMLAorCTB4MDU0MzQ2Y2FjMGNmODkwYVVMTCwgMHgzMDNjMGMxNDc0MjQyODYwVUxMLCAweDg5ZWM2NWFmYTAyNjQzMGZVTEwsCisJMHhiZGQ1NjhiOGRmMDU2ZDY3VUxMLCAweDk5Zjg2MWEzOGMzYTViMmZVTEwsIDB4MGMwZjAzMDUxZDA5MGExOFVMTCwKKwkweDIzZTJjMTVlMTg3ZGJjNDZVTEwsIDB4NDExNjU3Zjk3YmI4ZWY4MlVMTCwgMHg3ZmE5ZDY2Nzk5MThjZWZlVUxMLAorCTB4NDM5YWQ5NzZmMDM1ZWM4NlVMTCwgMHg3ZDI1NThlODEyOTVjZGZhVUxMLCAweDQ3OWZkODc1ZmIzMmVhOGVVTEwsCisJMHg4NWUzNjZhYWJkMmY0OTE3VUxMLCAweDdiYWNkNzY0OTIxZmM4ZjZVTEwsIDB4ZThkMjNhNGU4M2E2OWNjZFVMTCwKKwkweDA3Y2ZjODQ1NGI0MjhhMGVVTEwsIDB4ZjBjYzNjNDRiOWI0ODhmZFVMTCwgMHhjZjM1ZmExMzkwZGMyNjgzVUxMLAorCTB4NjJmNDk2YTc2M2M1NTNjNFVMTCwgMHhhNjAxYTdmNGE1NTJmNTUxVUxMLCAweDVhYzI5OGI1MDFlZjc3YjRVTEwsCisJMHg5NzdiZWMyOTFhYmU1MjMzVUxMLCAweGRhNjJiOGQ1N2MwZmI3YTlVTEwsIDB4M2JmY2M3NTQyMjZmYTg3NlVMTCwKKwkweDgyMmNhZWVmZjY2ZGMzMTlVTEwsIDB4YjlkMDY5YmJkNDAyNmI2ZlVMTCwgMHgzMTdhNGJkZGJmZWNhNzYyVUxMLAorCTB4OTYzZGFiZTBkMTc2ZGQzMVVMTCwgMHg5ZTM3YTllNmM3NzhkMTIxVUxMLCAweDgxZTY2N2E5YjYyODRmMWZVTEwsCisJMHgyODIyMGExZTRlMzYzYzUwVUxMLCAweDAxNDY0N2M5Y2JjODhmMDJVTEwsIDB4ZWYxZGYyMGJjOGU0MTZjM1VMTCwKKwkweGVlNWJiNWMyMDMyYzk5YzFVTEwsIDB4ODhhYTIyNjY2YmVlY2MwZFVMTCwgMHhiMzU2ZTUzMjQ5ODE2NDdiVUxMLAorCTB4OWY3MWVlMmYwY2IwNWUyM1VMTCwgMHhjMjdjYmVkZjQ2MWRhMzk5VUxMLCAweGFjODcyYjdkMzhkMWZhNDVVTEwsCisJMHgzZWJmODE5ZWUyYTAyMTdjVUxMLCAweDQ4NWExMjM2YTY3ZTZjOTBVTEwsIDB4MzZiNTgzOThmNGFlMmQ2Y1VMTCwKKwkweDZjNzcxYjJkZjU0MTVhZDhVTEwsIDB4MzgzNjBlMTI2MjJhMjQ3MFVMTCwgMHg4Y2FmMjM2NTYwZTljYTA1VUxMLAorCTB4ZjMwNmY1MDJmOWYxMDRmYlVMTCwgMHgwOTRjNDVjZmRkYzY4MzEyVUxMLCAweDg0YTUyMTYzNzZlN2M2MTVVTEwsCisJMHgxZmQxY2U0ZjcxNTA5ZTNlVUxMLCAweDM5NzA0OWRiYTllMmFiNzJVTEwsIDB4YjA5YzJjNzQwOWM0ZTg3ZFVMTCwKKwkweGMzM2FmOTE2OGRkNTJjOWJVTEwsIDB4YmY1OWU2Mzc1NDg4NmU2M1VMTCwgMHhlMjU0YjZjNzFlMjU5M2Q5VUxMLAorCTB4YTA4ODI4NzgyNWQ4ZjA1ZFVMTCwgMHg1YzRiMTczOTgxNjU3MmI4VUxMLCAweDMyYjA4MjliZmZhOTJiNjRVTEwsCisJMHg2ODcyMWEyZWZlNDY1Y2QwVUxMLCAweDE2OWQ4YjgwYWM5NjFkMmNVTEwsIDB4ZGYyMWZlMWZiY2MwM2VhM1VMTCwKKwkweDEyOTg4YTgzYTc5MTFiMjRVTEwsIDB4MjQyZDA5MWI1MzNmMzY0OFVMTCwgMHgwM2NhYzk0NjQwNDU4YzA2VUxMLAorCTB4MjZhMTg3OTRkOGIyMzU0Y1VMTCwgMHgyNTZiNGVkMjk4ZjdiOTRhVUxMLCAweGEzNDJlMTNlNjU5ZDdjNWJVTEwsCisJMHhiODk2MmU3MjFmY2FlNDZkVUxMLCAweGI3NTNlNDMxNDI4NjYyNzNVTEwsIDB4YTc0N2UwM2Q2ZTlhN2E1M1VMTCwKKwkweDhiNjBlYjIwMmJhYjQwMGJVTEwsIDB4N2FlYTkwYWQ1OWQ3NDdmNFVMTCwgMHhhYTBlYTRmMWI4NWJmZjQ5VUxMLAorCTB4Nzg2NjFlMjJkMjVhNDRmMFVMTCwgMHgyZWFiODU5MmNlYmMzOTVjVUxMLCAweDlkZmQ2MGEwODczZDVkMjdVTEwsCisJMHgwMDAwMDAwMDAwMDAwMDAwVUxMLCAweDk0YjEyNTZmNWFmYmRlMzVVTEwsIDB4ZjcwM2Y0MDFmMmY2MDJmM1VMTCwKKwkweGUzMTJmMTBlZDVlZDFjZGJVTEwsIDB4NmFmZTk0YTE3NWNiNWZkNFVMTCwgMHgyYzI3MGIxZDQ1MzEzYTU4VUxMLAorCTB4YmI1Y2U3MzQ1ZjhmNjg2YlVMTCwgMHhjOWJjNzU5ZjEwNTYyMzhmVUxMLCAweDliNzRlZjJjMDdiNzU4MmJVTEwsCisJMHhkMGU0MzQ1Y2UxOGNiOGJkVUxMLCAweGM0ZjUzMTUzYzY5N2E2OTVVTEwsIDB4NzdhM2Q0NjE4ZjE2YzJlZVVMTCwKKwkweDY3YjdkMDZkYTMwYWRhY2VVTEwsIDB4MjJhNDg2OTdkM2I1MzM0NFVMTCwgMHhlNTliN2U4MjU1NjcxOWQ3VUxMLAorCTB4OGUyM2FkZWFlYjY0YzkwMVVMTCwgMHhkMzJlZmQxYWExYzkzNGJiVUxMLCAweGE0OGQyOTdiMmVkZmY2NTVVTEwsCisJMHhjMGYwMzA1MGNkOTBhMDlkVUxMLCAweGVjZDczYjRkODhhMTlhYzVVTEwsIDB4NDZkOTlmYmMzMGZhNjU4Y1VMTCwKKwkweGM3M2ZmODE1ODZkMjJhOTNVTEwsIDB4M2ZmOWM2NTcyOTY4YWU3ZVVMTCwgMHg0YzVmMTMzNWFkNzk2YTk4VUxMLAorCTB4MTgxZTA2MGEzYTEyMTQzMFVMTCwgMHgxNDExMDUwZjI3MWIxZTI4VUxMLCAweDMzZjZjNTUyMzQ2MWE0NjZVTEwsCisJMHg0NDU1MTEzM2JiNzc2Njg4VUxMLCAweGMxYjY3Nzk5MDY1ODJmOWZVTEwsIDB4ZWQ5MTdjODQ0MzY5MTVjN1VMTCwKKwkweGY1OGY3YThlNzk3YjAxZjdVTEwsIDB4ZmQ4NTc4ODg2Zjc1MGRlN1VMTCwgMHhkOGVlMzY1YWY3ODJiNGFkVUxMLAorCTB4NzA2YzFjMjRjNDU0NDhlMFVMTCwgMHhlNGRkMzk0YjllYWY5NmQ1VUxMLCAweDc5MjA1OWViMTk5MmNiZjJVTEwsCisJMHg2MDc4MTgyOGU4NDg1MGMwVUxMLCAweDQ1MTM1NmZhNzBiZmU5OGFVTEwsIDB4ZjY0NWIzYzgzOTNlOGRmMVVMTCwKKwkweGZhNGFiMGNkMjQzNzg3ZTlVTEwsIDB4OTBiNDI0NmM1MWZjZDgzZFVMTCwgMHg4MGEwMjA2MDdkZTBjMDFkVUxMLAorCTB4ZjI0MGIyY2IzMjM5OGJmOVVMTCwgMHg3MmUwOTJhYjRmZDk0YmU0VUxMLCAweGI2MTVhM2Y4ODk0ZWVkNzFVTEwsCisJMHgyN2U3YzA1ZDEzN2FiYTRlVUxMLCAweDBkNDk0NGNjZDZjMTg1MWFVTEwsIDB4OTVmNzYyYTY5MTMzNTEzN1VMTCwKKwkweDQwNTAxMDMwYjA3MDYwODBVTEwsIDB4ZWE1ZWI0YzEwODJiOWZjOVVMTCwgMHgyYWFlODQ5MWM1YmIzZjU0VUxMLAorCTB4MTE1MjQzYzVlN2Q0OTcyMlVMTCwgMHg3NmU1OTNhODQ0ZGU0ZGVjVUxMLCAweDJmZWRjMjViMDU3NGI2NWVVTEwsCisJMHgzNTdmNGFkZWI0ZWJhMTZhVUxMLCAweGNlNzNiZGRhNWIxNGE5ODFVTEwsIDB4MDY4OThmOGM4MDhhMDUwY1VMTCwKKwkweGI0OTkyZDc3MDJjM2VlNzVVTEwsIDB4Y2E3NmJjZDk1MDEzYWY4OVVMTCwgMHg0YWQ2OWNiOTJkZjM2Zjk0VUxMLAorCTB4YjVkZjZhYmVjOTBiNjE3N1VMTCwgMHgxZDVkNDBjMGZhZGQ5ZDNhVUxMLCAweDFiZDRjZjRjN2E1Nzk4MzZVTEwsCisJMHhiMjEwYTJmYjgyNDllYjc5VUxMLCAweDNhYmE4MDlkZTlhNzI3NzRVTEwsIDB4MjE2ZTRmZDE5M2YwYmY0MlVMTCwKKwkweDdjNjMxZjIxZDk1ZDQyZjhVTEwsIDB4MGZjNWNhNDM1ZDRjODYxZVVMTCwgMHg5MjM4YWFlM2RhNzFkYjM5VUxMLAorCTB4MTU1NzQyYzZlY2QzOTEyYVVMTAorfTsKKworc3RhdGljIGNvbnN0IHU2NCBUM1syNTZdID0geworCTB4NjhkMmQzYmEwMTZhYjliYlVMTCwgMHgxOTRkZmM1NGIxNjY5YWU1VUxMLCAweDkzYmM3MTJmY2QxNDY1ZTJVTEwsCisJMHhiOWNkOWM3NDUxMWI4NzI1VUxMLCAweDAyNTFmNTUzYTQ1N2EyZjdVTEwsIDB4Yjg2YjY4ZDMwM2JlZDZkMFVMTCwKKwkweGJkNmY2YmQyMDRiNWRlZDZVTEwsIDB4NjQyOWQ3NGRmZTg1NTJiM1VMTCwgMHgwZDVkZjA1MGFkNGFiYWZkVUxMLAorCTB4MjY4YWU5YWM2M2UwMDljZlVMTCwgMHg4MzBlOGE4ZDg0OTYxYzA5VUxMLCAweDc5YzZkY2JmMWE0ZDkxYTVVTEwsCisJMHhhZGRkOTA3MDRkMzdhNzNkVUxMLCAweDA3NTVmNjUyYTM1Y2FhZjFVTEwsIDB4Yzg1MmIzOWFlMTE3YTQ3YlVMTCwKKwkweDYxMmRkNDRjZjk4ZTVhYjVVTEwsIDB4NjU4ZjIzZWFhYzIwMDM0NlVMTCwgMHhhNjczNjJkNTExODRlNmM0VUxMLAorCTB4ZjE2NmE0OTdjMjY4Y2M1NVVMTCwgMHhiMjYzNmVkMTBkYThjNmRjVUxMLCAweGZmY2M1NTMzOTlkMDg1YWFVTEwsCisJMHgwODU5ZjM1MWFhNDFiMmZiVUxMLCAweDJhNzFlZDViOWMwZmUyYzdVTEwsIDB4MDRhMmY3YTY1NWFlNTlmM1VMTCwKKwkweDgxNWY3ZmRlMjBjMWJlZmVVTEwsIDB4NzUzZGQ4NDhlNWEyN2FhZFVMTCwgMHgzMjlhZTVhODdmY2MyOWQ3VUxMLAorCTB4Yzc1ZWI2OTllODBhYmM3MVVMTCwgMHg5MDRiNzBkYjNiZTY5NmUwVUxMLCAweGZhYzg1NjMyOWVkYjhkYWNVTEwsCisJMHg1MWU2YzRiNzIyMTVkMTk1VUxMLCAweDJiZDcxOWZjY2VhYWIzMzJVTEwsIDB4NDhhYjM4ZTM5MzczNGI3MFVMTCwKKwkweGRjNDJiZjllZmQzYjg0NjNVTEwsIDB4ZWY3ZWFlOTFkMDUyZmM0MVVMTCwgMHhjZDU2YjA5YmU2MWNhYzdkVUxMLAorCTB4NGRhZjNiZTI5NDc4NDM3NlVMTCwgMHg2ZGQ2ZDBiYjA2NjFiMWJkVUxMLCAweDU4MTljMzQxZGFmMTMyOWJVTEwsCisJMHhjYmE1YjI2ZTE3ZTU1Nzc5VUxMLCAweDBiYWVmMmE1NWNiMzQxZjlVTEwsIDB4YzAwYjQwY2I0YjU2MTY4MFVMTCwKKwkweGRhYjFiZDZiMGNjMjdmNjdVTEwsIDB4ZmI2ZWEyOTVjYzdlZGM1OVVMTCwgMHgxZmJlZmVhMTQwOWY2MWUxVUxMLAorCTB4MThlYjA4ZjNlM2MzY2IxMFVMTCwgMHg0ZmZlY2ViMTMwMmZlMTgxVUxMLCAweDBhMDgwNjAyMGUxNjEwMGNVTEwsCisJMHhkYjE3NDljYzVlNjcyZTkyVUxMLCAweGYzMzc1MWM0NjYzZjZlYTJVTEwsIDB4Njk3NDI3MWQ1M2NmZTg0ZVVMTCwKKwkweDQ0NTAzYzE0NmM5Y2EwNzhVTEwsIDB4ZTgyYjU4YzM3MzBlNTZiMFVMTCwgMHhmMjkxYTU2MzM0OWEzZjU3VUxMLAorCTB4OTU0ZjczZGEzY2VkOWVlNlVMTCwgMHgzNDY5ZTc1ZDhlMzVkMmQzVUxMLCAweDNlNjFlMTVmODAyM2MyZGZVTEwsCisJMHg4YjU3NzlkYzJlZDdhZWYyVUxMLCAweDk0ZTk4NzdkNmU0OGNmMTNVTEwsIDB4ZGUxMzRhY2Q1OTZjMjY5NFVMTCwKKwkweDllZTE4MTdmNjA1ZWRmMWZVTEwsIDB4MmY3NWVlNWE5YjA0ZWFjMVVMTCwgMHhjMWFkYjQ2YzE5ZjM0Nzc1VUxMLAorCTB4MzE2ZGU0NWM4OTNlZGFkNVVMTCwgMHgwY2ZiMDRmN2ZmZWZlYjA4VUxMLCAweGJlOTg2YTI2ZjI0NzJkZDRVTEwsCisJMHgyNGRiMWNmZmM3YjdhYjM4VUxMLCAweDdlOTMyYWVkYjkxMTNiNTRVTEwsIDB4NmY4NzI1ZThhMjM2MTM0YVVMTCwKKwkweGQzNGViYTlkZjQyNjljNjlVTEwsIDB4Y2VhMWIxNmYxMGVlNWY3ZlVMTCwgMHg4YzAyOGY4ZThkOGIwNDAzVUxMLAorCTB4N2Q2NDJiMTk0ZmUzYzg1NlVMTCwgMHgxYWJhZmRhMDQ3OTQ2OWU3VUxMLCAweDE3ZTcwZGYwZWFkZWQzMWFVTEwsCisJMHg5NzFlODY4OTk4YmEzYzExVUxMLCAweDMzM2MxMTBmMmQ2OTc4MjJVTEwsIDB4MWIxYzA5MDcxNTMxMzgxMlVMTCwKKwkweDI5ODZlY2FmNmFmZDExYzVVTEwsIDB4MzBjYjEwZmJkYjliOGIyMFVMTCwgMHgyODIwMTgwODM4NTg0MDMwVUxMLAorCTB4NDE1NDNmMTU2Yjk3YTg3ZVVMTCwgMHgzOTM0MTcwZDIzN2Y2ODJlVUxMLCAweDE0MTAwYzA0MWMyYzIwMThVTEwsCisJMHgwNTA0MDMwMTA3MGIwODA2VUxMLCAweGU5OGRhYzY0MjFhYjA3NDVVTEwsIDB4ODQ1YjdjZGYyN2NhYjZmOFVMTCwKKwkweGIzYzU5YTc2NWYwZDk3MjlVTEwsIDB4ODBmOThiNzk3MjY0ZWYwYlVMTCwgMHg4ZTUzN2FkZDI5ZGNhNmY0VUxMLAorCTB4YzlmNDQ3M2RiM2IyZjU4ZVVMTCwgMHg0ZTU4M2ExNjYyOGFiMDc0VUxMLCAweGMzZmM0MTNmYmRhNGU1ODJVTEwsCisJMHhlYmRjNTkzNzg1ZmNhNWIyVUxMLCAweGM0YTliNzZkMWVmODRmNzNVTEwsIDB4ZDhlMDQ4MzhhODk1ZGQ5MFVMTCwKKwkweDY3ZGVkNmI5MDg3N2ExYjFVTEwsIDB4YTJkMTk1NzM0NDJhYmYzN1VMTCwgMHg2YTgzMjZlOWE1M2QxYjRjVUxMLAorCTB4ZTFkNDVmMzU4YmVhYjViZVVMTCwgMHgxYzQ5ZmY1NWI2NmQ5MmUzVUxMLCAweGE4ZDk5MzcxNGEzY2FmM2JVTEwsCisJMHg4YWYxOGQ3YjdjNzJmZjA3VUxMLCAweDg2MGE4OThjODM5ZDE0MGZVTEwsIDB4YTdkNTk2NzI0MzIxYjczMVVMTCwKKwkweDkyMWE4NTg4OWZiMTM0MTdVTEwsIDB4MDlmZjA3ZjZmOGU0ZTMwZVVMTCwgMHg4MmE4N2UyYWQ2MzM0ZGZjVUxMLAorCTB4YzZmODQyM2ViYWFmZWQ4NFVMTCwgMHgzYjY1ZTI1ZTg3MjhjYWQ5VUxMLCAweGJiOWM2OTI3ZjU0YzI1ZDJVTEwsCisJMHg0MzA1Y2E0NmNmYzAwYTg5VUxMLCAweDNjMzAxNDBjMjQ3NDYwMjhVTEwsIDB4ZWM4OWFmNjUyNmEwMGY0M1VMTCwKKwkweGQ1YmRiODY4MDVkZjY3NmRVTEwsIDB4Zjg5OWEzNjEzYThjMmY1YlVMTCwgMHgwZjBjMDUwMzA5MWQxODBhVUxMLAorCTB4ZTIyMzVlYzE3ZDE4NDZiY1VMTCwgMHgxNjQxZjk1N2I4N2I4MmVmVUxMLCAweGE5N2Y2N2Q2MTg5OWZlY2VVTEwsCisJMHg5YTQzNzZkOTM1ZjA4NmVjVUxMLCAweDI1N2RlODU4OTUxMmZhY2RVTEwsIDB4OWY0Nzc1ZDgzMmZiOGVlYVVMTCwKKwkweGUzODVhYTY2MmZiZDE3NDlVTEwsIDB4YWM3YjY0ZDcxZjkyZjZjOFVMTCwgMHhkMmU4NGUzYWE2ODNjZDljVUxMLAorCTB4Y2YwNzQ1Yzg0MjRiMGU4YVVMTCwgMHhjY2YwNDQzY2I0YjlmZDg4VUxMLCAweDM1Y2YxM2ZhZGM5MDgzMjZVTEwsCisJMHhmNDYyYTc5NmM1NjNjNDUzVUxMLCAweDAxYTZmNGE3NTJhNTUxZjVVTEwsIDB4YzI1YWI1OThlZjAxYjQ3N1VMTCwKKwkweDdiOTcyOWVjYmUxYTMzNTJVTEwsIDB4NjJkYWQ1YjgwZjdjYTliN1VMTCwgMHhmYzNiNTRjNzZmMjI3NmE4VUxMLAorCTB4MmM4MmVmYWU2ZGY2MTljM1VMTCwgMHhkMGI5YmI2OTAyZDQ2ZjZiVUxMLCAweDdhMzFkZDRiZWNiZjYyYTdVTEwsCisJMHgzZDk2ZTBhYjc2ZDEzMWRkVUxMLCAweDM3OWVlNmE5NzhjNzIxZDFVTEwsIDB4ZTY4MWE5NjcyOGI2MWY0ZlVMTCwKKwkweDIyMjgxZTBhMzY0ZTUwM2NVTEwsIDB4NDYwMWM5NDdjOGNiMDI4ZlVMTCwgMHgxZGVmMGJmMmU0YzhjMzE2VUxMLAorCTB4NWJlZWMyYjUyYzAzYzE5OVVMTCwgMHhhYTg4NjYyMmVlNmIwZGNjVUxMLCAweDU2YjMzMmU1ODE0OTdiNjRVTEwsCisJMHg3MTlmMmZlZWIwMGMyMzVlVUxMLCAweDdjYzJkZmJlMWQ0Njk5YTNVTEwsIDB4ODdhYzdkMmJkMTM4NDVmYVVMTCwKKwkweGJmM2U5ZTgxYTBlMjdjMjFVTEwsIDB4NWE0ODM2MTI3ZWE2OTA2Y1VMTCwgMHhiNTM2OTg4M2FlZjQ2YzJkVUxMLAorCTB4Nzc2YzJkMWI0MWY1ZDg1YVVMTCwgMHgzNjM4MTIwZTJhNjI3MDI0VUxMLCAweGFmOGM2NTIzZTk2MDA1Y2FVTEwsCisJMHgwNmYzMDJmNWYxZjlmYjA0VUxMLCAweDRjMDljZjQ1YzZkZDEyODNVTEwsIDB4YTU4NDYzMjFlNzc2MTVjNlVMTCwKKwkweGQxMWY0ZmNlNTA3MTNlOWVVTEwsIDB4NzAzOWRiNDllMmE5NzJhYlVMTCwgMHg5Y2IwNzQyY2M0MDk3ZGU4VUxMLAorCTB4M2FjMzE2ZjlkNThkOWIyY1VMTCwgMHg1OWJmMzdlNjg4NTQ2MzZlVUxMLCAweDU0ZTJjN2I2MjUxZWQ5OTNVTEwsCisJMHg4OGEwNzgyOGQ4MjU1ZGYwVUxMLCAweDRiNWMzOTE3NjU4MWI4NzJVTEwsIDB4YjAzMjliODJhOWZmNjQyYlVMTCwKKwkweDcyNjgyZTFhNDZmZWQwNWNVTEwsIDB4OWQxNjgwOGI5NmFjMmMxZFVMTCwgMHgyMWRmMWZmZWMwYmNhMzNlVUxMLAorCTB4OTgxMjgzOGE5MWE3MjQxYlVMTCwgMHgyZDI0MWIwOTNmNTM0ODM2VUxMLCAweGNhMDM0NmM5NDU0MDA2OGNVTEwsCisJMHhhMTI2OTQ4N2IyZDg0YzM1VUxMLCAweDZiMjVkMjRlZjc5ODRhYjlVTEwsIDB4NDJhMzNlZTE5ZDY1NWI3Y1VMTCwKKwkweDk2Yjg3MjJlY2ExZjZkZTRVTEwsIDB4NTNiNzMxZTQ4NjQyNzM2MlVMTCwgMHg0N2E3M2RlMDlhNmU1MzdhVUxMLAorCTB4NjA4YjIwZWJhYjJiMGI0MFVMTCwgMHhlYTdhYWQ5MGQ3NTlmNDQ3VUxMLCAweDBlYWFmMWE0NWJiODQ5ZmZVTEwsCisJMHg2Njc4MjIxZTVhZDJmMDQ0VUxMLCAweGFiMmU5Mjg1YmNjZTVjMzlVTEwsIDB4ZmQ5ZGEwNjAzZDg3Mjc1ZFVMTCwKKwkweDAwMDAwMDAwMDAwMDAwMDBVTEwsIDB4YjE5NDZmMjVmYjVhMzVkZVVMTCwgMHgwM2Y3MDFmNGY2ZjJmMzAyVUxMLAorCTB4MTJlMzBlZjFlZGQ1ZGIxY1VMTCwgMHhmZTZhYTE5NGNiNzVkNDVmVUxMLCAweDI3MmMxZDBiMzE0NTU4M2FVTEwsCisJMHg1Y2JiMzRlNzhmNWY2YjY4VUxMLCAweGJjYzk5Zjc1NTYxMDhmMjNVTEwsIDB4NzQ5YjJjZWZiNzA3MmI1OFVMTCwKKwkweGU0ZDA1YzM0OGNlMWJkYjhVTEwsIDB4ZjVjNDUzMzE5N2M2OTVhNlVMTCwgMHhhMzc3NjFkNDE2OGZlZWMyVUxMLAorCTB4Yjc2NzZkZDAwYWEzY2VkYVVMTCwgMHhhNDIyOTc4NmI1ZDM0NDMzVUxMLCAweDliZTU4MjdlNjc1NWQ3MTlVTEwsCisJMHgyMzhlZWFhZDY0ZWIwMWM5VUxMLCAweDJlZDMxYWZkYzlhMWJiMzRVTEwsIDB4OGRhNDdiMjlkZjJlNTVmNlVMTCwKKwkweGYwYzA1MDMwOTBjZDlkYTBVTEwsIDB4ZDdlYzRkM2JhMTg4YzU5YVVMTCwgMHhkOTQ2YmM5ZmZhMzA4YzY1VUxMLAorCTB4M2ZjNzE1ZjhkMjg2OTMyYVVMTCwgMHhmOTNmNTdjNjY4Mjk3ZWFlVUxMLCAweDVmNGMzNTEzNzlhZDk4NmFVTEwsCisJMHgxZTE4MGEwNjEyM2EzMDE0VUxMLCAweDExMTQwZjA1MWIyNzI4MWVVTEwsIDB4ZjYzMzUyYzU2MTM0NjZhNFVMTCwKKwkweDU1NDQzMzExNzdiYjg4NjZVTEwsIDB4YjZjMTk5Nzc1ODA2OWYyZlVMTCwgMHg5MWVkODQ3YzY5NDNjNzE1VUxMLAorCTB4OGZmNThlN2E3Yjc5ZjcwMVVMTCwgMHg4NWZkODg3ODc1NmZlNzBkVUxMLCAweGVlZDg1YTM2ODJmN2FkYjRVTEwsCisJMHg2YzcwMjQxYzU0YzRlMDQ4VUxMLCAweGRkZTQ0YjM5YWY5ZWQ1OTZVTEwsIDB4MjA3OWViNTk5MjE5ZjJjYlVMTCwKKwkweDc4NjAyODE4NDhlOGMwNTBVTEwsIDB4MTM0NWZhNTZiZjcwOGFlOVVMTCwgMHg0NWY2YzhiMzNlMzlmMThkVUxMLAorCTB4NGFmYWNkYjAzNzI0ZTk4N1VMTCwgMHhiNDkwNmMyNGZjNTEzZGQ4VUxMLCAweGEwODA2MDIwZTA3ZDFkYzBVTEwsCisJMHg0MGYyY2JiMjM5MzJmOThiVUxMLCAweGUwNzJhYjkyZDk0ZmU0NGJVTEwsIDB4MTViNmY4YTM0ZTg5NzFlZFVMTCwKKwkweGU3Mjc1ZGMwN2ExMzRlYmFVTEwsIDB4NDkwZGNjNDRjMWQ2MWE4NVVMTCwgMHhmNzk1YTY2MjMzOTEzNzUxVUxMLAorCTB4NTA0MDMwMTA3MGIwODA2MFVMTCwgMHg1ZWVhYzFiNDJiMDhjOTlmVUxMLCAweGFlMmE5MTg0YmJjNTU0M2ZVTEwsCisJMHg1MjExYzU0M2Q0ZTcyMjk3VUxMLCAweGU1NzZhODkzZGU0NGVjNGRVTEwsIDB4ZWQyZjViYzI3NDA1NWViNlVMTCwKKwkweDdmMzVkZTRhZWJiNDZhYTFVTEwsIDB4NzNjZWRhYmQxNDViODFhOVVMTCwgMHg4OTA2OGM4ZjhhODAwYzA1VUxMLAorCTB4OTliNDc3MmRjMzAyNzVlZVVMTCwgMHg3NmNhZDliYzEzNTA4OWFmVUxMLCAweGQ2NGFiOTljZjMyZDk0NmZVTEwsCisJMHhkZmI1YmU2YTBiYzk3NzYxVUxMLCAweDVkMWRjMDQwZGRmYTNhOWRVTEwsIDB4ZDQxYjRjY2Y1NzdhMzY5OFVMTCwKKwkweDEwYjJmYmEyNDk4Mjc5ZWJVTEwsIDB4YmEzYTlkODBhN2U5NzQyN1VMTCwgMHg2ZTIxZDE0ZmYwOTM0MmJmVUxMLAorCTB4NjM3YzIxMWY1ZGQ5Zjg0MlVMTCwgMHhjNTBmNDNjYTRjNWQxZTg2VUxMLCAweDM4OTJlM2FhNzFkYTM5ZGJVTEwsCisJMHg1NzE1YzY0MmQzZWMyYTkxVUxMCit9OworCitzdGF0aWMgY29uc3QgdTY0IFQ0WzI1Nl0gPSB7CisJMHhiYmI5NmEwMWJhZDNkMjY4VUxMLCAweGU1OWE2NmIxNTRmYzRkMTlVTEwsIDB4ZTI2NTE0Y2QyZjcxYmM5M1VMTCwKKwkweDI1ODcxYjUxNzQ5Y2NkYjlVTEwsIDB4ZjdhMjU3YTQ1M2Y1NTEwMlVMTCwgMHhkMGQ2YmUwM2QzNjg2YmI4VUxMLAorCTB4ZDZkZWI1MDRkMjZiNmZiZFVMTCwgMHhiMzUyODVmZTRkZDcyOTY0VUxMLCAweGZkYmE0YWFkNTBmMDVkMGRVTEwsCisJMHhjZjA5ZTA2M2FjZTk4YTI2VUxMLCAweDA5MWM5Njg0OGQ4YTBlODNVTEwsIDB4YTU5MTRkMWFiZmRjYzY3OVVMTCwKKwkweDNkYTczNzRkNzA5MGRkYWRVTEwsIDB4ZjFhYTVjYTM1MmY2NTUwN1VMTCwgMHg3YmE0MTdlMTlhYjM1MmM4VUxMLAorCTB4YjU1YThlZjk0Y2Q0MmQ2MVVMTCwgMHg0NjAzMjBhY2VhMjM4ZjY1VUxMLCAweGM0ZTY4NDExZDU2MjczYTZVTEwsCisJMHg1NWNjNjhjMjk3YTQ2NmYxVUxMLCAweGRjYzZhODBkZDE2ZTYzYjJVTEwsIDB4YWE4NWQwOTkzMzU1Y2NmZlVMTCwKKwkweGZiYjI0MWFhNTFmMzU5MDhVTEwsIDB4YzdlMjBmOWM1YmVkNzEyYVVMTCwgMHhmMzU5YWU1NWE2ZjdhMjA0VUxMLAorCTB4ZmViZWMxMjBkZTdmNWY4MVVMTCwgMHhhZDdhYTJlNTQ4ZDgzZDc1VUxMLCAweGQ3MjljYzdmYThlNTlhMzJVTEwsCisJMHg3MWJjMGFlODk5YjY1ZWM3VUxMLCAweGUwOTZlNjNiZGI3MDRiOTBVTEwsIDB4YWM4ZGRiOWUzMjU2YzhmYVVMTCwKKwkweDk1ZDExNTIyYjdjNGU2NTFVTEwsIDB4MzJiM2FhY2VmYzE5ZDcyYlVMTCwgMHg3MDRiNzM5M2UzMzhhYjQ4VUxMLAorCTB4NjM4NDNiZmQ5ZWJmNDJkY1VMTCwgMHg0MWZjNTJkMDkxYWU3ZWVmVUxMLCAweDdkYWMxY2U2OWJiMDU2Y2RVTEwsCisJMHg3NjQzNzg5NGUyM2JhZjRkVUxMLCAweGJkYjE2MTA2YmJkMGQ2NmRVTEwsIDB4OWIzMmYxZGE0MWMzMTk1OFVMTCwKKwkweDc5NTdlNTE3NmViMmE1Y2JVTEwsIDB4Zjk0MWIzNWNhNWYyYWUwYlVMTCwgMHg4MDE2NTY0YmNiNDAwYmMwVUxMLAorCTB4Njc3ZmMyMGM2YmJkYjFkYVVMTCwgMHg1OWRjN2VjYzk1YTI2ZWZiVUxMLCAweGUxNjE5ZjQwYTFmZWJlMWZVTEwsCisJMHgxMGNiYzNlM2YzMDhlYjE4VUxMLCAweDgxZTEyZjMwYjFjZWZlNGZVTEwsIDB4MGMxMDE2MGUwMjA2MDgwYVVMTCwKKwkweDkyMmU2NzVlY2M0OTE3ZGJVTEwsIDB4YTI2ZTNmNjZjNDUxMzdmM1VMTCwgMHg0ZWU4Y2Y1MzFkMjc3NDY5VUxMLAorCTB4NzhhMDljNmMxNDNjNTA0NFVMTCwgMHhiMDU2MGU3M2MzNTgyYmU4VUxMLCAweDU3M2Y5YTM0NjNhNTkxZjJVTEwsCisJMHhlNjllZWQzY2RhNzM0Zjk1VUxMLCAweGQzZDIzNThlNWRlNzY5MzRVTEwsIDB4ZGZjMjIzODA1ZmUxNjEzZVVMTCwKKwkweGYyYWVkNzJlZGM3OTU3OGJVTEwsIDB4MTNjZjQ4NmU3ZDg3ZTk5NFVMTCwgMHg5NDI2NmM1OWNkNGExM2RlVUxMLAorCTB4MWZkZjVlNjA3ZjgxZTE5ZVVMTCwgMHhjMWVhMDQ5YjVhZWU3NTJmVUxMLCAweDc1NDdmMzE5NmNiNGFkYzFVTEwsCisJMHhkNWRhM2U4OTVjZTQ2ZDMxVUxMLCAweDA4ZWJlZmZmZjcwNGZiMGNVTEwsIDB4ZDQyZDQ3ZjIyNjZhOThiZVVMTCwKKwkweDM4YWJiN2M3ZmYxY2RiMjRVTEwsIDB4NTQzYjExYjllZDJhOTM3ZVVMTCwgMHg0YTEzMzZhMmU4MjU4NzZmVUxMLAorCTB4Njk5YzI2ZjQ5ZGJhNGVkM1VMTCwgMHg3ZjVmZWUxMDZmYjFhMWNlVUxMLCAweDAzMDQ4YjhkOGU4ZjAyOGNVTEwsCisJMHg1NmM4ZTM0ZjE5MmI2NDdkVUxMLCAweGU3Njk5NDQ3YTBmZGJhMWFVTEwsIDB4MWFkM2RlZWFmMDBkZTcxN1VMTCwKKwkweDExM2NiYTk4ODk4NjFlOTdVTEwsIDB4MjI3ODY5MmQwZjExM2MzM1VMTCwgMHgxMjM4MzExNTA3MDkxYzFiVUxMLAorCTB4YzUxMWZkNmFhZmVjODYyOVVMTCwgMHgyMDhiOWJkYmZiMTBjYjMwVUxMLCAweDMwNDA1ODM4MDgxODIwMjhVTEwsCisJMHg3ZWE4OTc2YjE1M2Y1NDQxVUxMLCAweDJlNjg3ZjIzMGQxNzM0MzlVTEwsIDB4MTgyMDJjMWMwNDBjMTAxNFVMTCwKKwkweDA2MDgwYjA3MDEwMzA0MDVVTEwsIDB4NDUwN2FiMjE2NGFjOGRlOVVMTCwgMHhmOGI2Y2EyN2RmN2M1Yjg0VUxMLAorCTB4Mjk5NzBkNWY3NjlhYzViM1VMTCwgMHgwYmVmNjQ3Mjc5OGJmOTgwVUxMLCAweGY0YTZkYzI5ZGQ3YTUzOGVVTEwsCisJMHg4ZWY1YjJiMzNkNDdmNGM5VUxMLCAweDc0YjA4YTYyMTYzYTU4NGVVTEwsIDB4ODJlNWE0YmQzZjQxZmNjM1VMTCwKKwkweGIyYTVmYzg1Mzc1OWRjZWJVTEwsIDB4NzM0ZmY4MWU2ZGI3YTljNFVMTCwgMHg5MGRkOTVhODM4NDhlMGQ4VUxMLAorCTB4YjFhMTc3MDhiOWQ2ZGU2N1VMTCwgMHgzN2JmMmE0NDczOTVkMWEyVUxMLCAweDRjMWIzZGE1ZTkyNjgzNmFVTEwsCisJMHhiZWI1ZWE4YjM1NWZkNGUxVUxMLCAweGUzOTI2ZGI2NTVmZjQ5MWNVTEwsIDB4M2JhZjNjNGE3MTkzZDlhOFVMTCwKKwkweDA3ZmY3MjdjN2I4ZGYxOGFVTEwsIDB4MGYxNDlkODM4Yzg5MGE4NlVMTCwgMHgzMWI3MjE0MzcyOTZkNWE3VUxMLAorCTB4MTczNGIxOWY4ODg1MWE5MlVMTCwgMHgwZWUzZTRmOGY2MDdmZjA5VUxMLCAweGZjNGQzM2Q2MmE3ZWE4ODJVTEwsCisJMHg4NGVkYWZiYTNlNDJmOGM2VUxMLCAweGQ5Y2EyODg3NWVlMjY1M2JVTEwsIDB4ZDIyNTRjZjUyNzY5OWNiYlVMTCwKKwkweDg5MGFjMGNmNDZjYTA1NDNVTEwsIDB4Mjg2MDc0MjQwYzE0MzAzY1VMTCwgMHg0MzBmYTAyNjY1YWY4OWVjVUxMLAorCTB4NmQ2N2RmMDU2OGI4YmRkNVVMTCwgMHg1YjJmOGMzYTYxYTM5OWY4VUxMLCAweDBhMTgxZDA5MDMwNTBjMGZVTEwsCisJMHhiYzQ2MTg3ZGMxNWUyM2UyVUxMLCAweGVmODI3YmI4NTdmOTQxMTZVTEwsIDB4Y2VmZTk5MThkNjY3N2ZhOVVMTCwKKwkweGVjODZmMDM1ZDk3NjQzOWFVTEwsIDB4Y2RmYTEyOTU1OGU4N2QyNVVMTCwgMHhlYThlZmIzMmQ4NzU0NzlmVUxMLAorCTB4NDkxN2JkMmY2NmFhODVlM1VMTCwgMHhjOGY2OTIxZmQ3NjQ3YmFjVUxMLCAweDljY2Q4M2E2M2E0ZWU4ZDJVTEwsCisJMHg4YTBlNGI0MmM4NDUwN2NmVUxMLCAweDg4ZmRiOWI0M2M0NGYwY2NVTEwsIDB4MjY4MzkwZGNmYTEzY2YzNVVMTCwKKwkweDUzYzQ2M2M1OTZhNzYyZjRVTEwsIDB4ZjU1MWE1NTJhN2Y0YTYwMVVMTCwgMHg3N2I0MDFlZjk4YjU1YWMyVUxMLAorCTB4NTIzMzFhYmVlYzI5OTc3YlVMTCwgMHhiN2E5N2MwZmI4ZDVkYTYyVUxMLCAweGE4NzYyMjZmYzc1NDNiZmNVTEwsCisJMHhjMzE5ZjY2ZGFlZWY4MjJjVUxMLCAweDZiNmZkNDAyNjliYmI5ZDBVTEwsIDB4YTc2MmJmZWM0YmRkMzE3YVVMTCwKKwkweGRkMzFkMTc2YWJlMDk2M2RVTEwsIDB4ZDEyMWM3NzhhOWU2OWUzN1VMTCwgMHg0ZjFmYjYyODY3YTk4MWU2VUxMLAorCTB4M2M1MDRlMzYwYTFlMjgyMlVMTCwgMHg4ZjAyY2JjODQ3YzkwMTQ2VUxMLCAweDE2YzNjOGU0ZjIwYmVmMWRVTEwsCisJMHg5OWMxMDMyY2I1YzJlZTViVUxMLCAweGNjMGQ2YmVlMjI2Njg4YWFVTEwsIDB4NjQ3YjQ5ODFlNTMyYjM1NlVMTCwKKwkweDVlMjMwY2IwZWUyZjlmNzFVTEwsIDB4YTM5OTQ2MWRiZWRmYzI3Y1VMTCwgMHhmYTQ1MzhkMTJiN2RhYzg3VUxMLAorCTB4MjE3Y2UyYTA4MTllM2ViZlVMTCwgMHg2YzkwYTY3ZTEyMzY0ODVhVUxMLCAweDJkNmNmNGFlODM5ODM2YjVVTEwsCisJMHg1YWQ4ZjU0MTFiMmQ2Yzc3VUxMLCAweDI0NzA2MjJhMGUxMjM4MzZVTEwsIDB4Y2EwNTYwZTkyMzY1OGNhZlVMTCwKKwkweDA0ZmJmOWYxZjUwMmYzMDZVTEwsIDB4ODMxMmRkYzY0NWNmMDk0Y1VMTCwgMHhjNjE1NzZlNzIxNjM4NGE1VUxMLAorCTB4OWUzZTcxNTBjZTRmMWZkMVVMTCwgMHhhYjcyYTllMjQ5ZGIzOTcwVUxMLCAweGU4N2QwOWM0MmM3NGIwOWNVTEwsCisJMHgyYzliOGRkNWY5MTZjMzNhVUxMLCAweDZlNjM1NDg4ZTYzN2JmNTlVTEwsIDB4OTNkOTFlMjViNmM3ZTI1NFVMTCwKKwkweGYwNWQyNWQ4Mjg3OGEwODhVTEwsIDB4NzJiODgxNjUxNzM5NWM0YlVMTCwgMHgyYjY0ZmZhOTgyOWIzMmIwVUxMLAorCTB4NWNkMGZlNDYxYTJlNjg3MlVMTCwgMHgxZDJjYWM5NjhiODAxNjlkVUxMLCAweDNlYTNiY2MwZmUxZmRmMjFVTEwsCisJMHgxYjI0YTc5MThhODMxMjk4VUxMLCAweDM2NDg1MzNmMDkxYjI0MmRVTEwsIDB4OGMwNjQwNDVjOTQ2MDNjYVVMTCwKKwkweDM1NGNkOGIyODc5NDI2YTFVTEwsIDB4Yjk0YTk4Zjc0ZWQyMjU2YlVMTCwgMHg3YzViNjU5ZGUxM2VhMzQyVUxMLAorCTB4ZTQ2ZDFmY2EyZTcyYjg5NlVMTCwgMHg2MjczNDI4NmU0MzFiNzUzVUxMLCAweDdhNTM2ZTlhZTAzZGE3NDdVTEwsCisJMHg0MDBiMmJhYmViMjA4YjYwVUxMLCAweDQ3ZjQ1OWQ3OTBhZDdhZWFVTEwsIDB4ZmY0OWI4NWJhNGYxYWEwZVVMTCwKKwkweDQ0ZjBkMjVhMWUyMjc4NjZVTEwsIDB4Mzk1Y2NlYmM4NTkyMmVhYlVMTCwgMHg1ZDI3ODczZDYwYTA5ZGZkVUxMLAorCTB4MDAwMDAwMDAwMDAwMDAwMFVMTCwgMHhkZTM1NWFmYjI1NmY5NGIxVUxMLCAweDAyZjNmMmY2ZjQwMWY3MDNVTEwsCisJMHgxY2RiZDVlZGYxMGVlMzEyVUxMLCAweDVmZDQ3NWNiOTRhMTZhZmVVTEwsIDB4M2E1ODQ1MzEwYjFkMmMyN1VMTCwKKwkweDY4NmI1ZjhmZTczNGJiNWNVTEwsIDB4MjM4ZjEwNTY3NTlmYzliY1VMTCwgMHg1ODJiMDdiN2VmMmM5Yjc0VUxMLAorCTB4YjhiZGUxOGMzNDVjZDBlNFVMTCwgMHhhNjk1YzY5NzMxNTNjNGY1VUxMLCAweGMyZWU4ZjE2ZDQ2MTc3YTNVTEwsCisJMHhkYWNlYTMwYWQwNmQ2N2I3VUxMLCAweDMzNDRkM2I1ODY5NzIyYTRVTEwsIDB4MTlkNzU1Njc3ZTgyZTU5YlVMTCwKKwkweGM5MDFlYjY0YWRlYThlMjNVTEwsIDB4MzRiYmExYzlmZDFhZDMyZVVMTCwgMHhmNjU1MmVkZjI5N2JhNDhkVUxMLAorCTB4YTA5ZGNkOTAzMDUwYzBmMFVMTCwgMHg5YWM1ODhhMTNiNGRlY2Q3VUxMLCAweDY1OGMzMGZhOWZiYzQ2ZDlVTEwsCisJMHgyYTkzODZkMmY4MTVjNzNmVUxMLCAweGFlN2UyOTY4YzY1NzNmZjlVTEwsIDB4NmE5OGFkNzkxMzM1NGM1ZlVMTCwKKwkweDE0MzAzYTEyMDYwYTE4MWVVTEwsIDB4MWUyODI3MWIwNTBmMTQxMVVMTCwgMHhhNDY2MzQ2MWM1NTIzM2Y2VUxMLAorCTB4NjY4OGJiNzcxMTMzNDQ1NVVMTCwgMHgyZjlmMDY1ODc3OTljMWI2VUxMLCAweDE1Yzc0MzY5N2M4NGVkOTFVTEwsCisJMHgwMWY3Nzk3YjdhOGVmNThmVUxMLCAweDBkZTc2Zjc1Nzg4OGZkODVVTEwsIDB4YjRhZGY3ODIzNjVhZDhlZVVMTCwKKwkweDQ4ZTBjNDU0MWMyNDcwNmNVTEwsIDB4OTZkNTllYWYzOTRiZTRkZFVMTCwgMHhjYmYyMTk5MjU5ZWI3OTIwVUxMLAorCTB4NTBjMGU4NDgxODI4NjA3OFVMTCwgMHhlOThhNzBiZjU2ZmE0NTEzVUxMLCAweDhkZjEzOTNlYjNjOGY2NDVVTEwsCisJMHg4N2U5MjQzN2IwY2RmYTRhVUxMLCAweGQ4M2Q1MWZjMjQ2YzkwYjRVTEwsIDB4YzAxZDdkZTAyMDYwODBhMFVMTCwKKwkweDhiZjkzMjM5YjJjYmYyNDBVTEwsIDB4NGJlNDRmZDk5MmFiNzJlMFVMTCwgMHhlZDcxODk0ZWEzZjhiNjE1VUxMLAorCTB4YmE0ZTEzN2FjMDVkMjdlN1VMTCwgMHg4NTFhZDZjMTQ0Y2MwZDQ5VUxMLCAweDUxMzc5MTMzNjJhNjk1ZjdVTEwsCisJMHg2MDgwYjA3MDEwMzA0MDUwVUxMLCAweDlmYzkwODJiYjRjMWVhNWVVTEwsIDB4M2Y1NGM1YmI4NDkxMmFhZVVMTCwKKwkweDk3MjJlN2Q0NDNjNTExNTJVTEwsIDB4NGRlYzQ0ZGU5M2E4NzZlNVVMTCwgMHhiNjVlMDU3NGMyNWIyZmVkVUxMLAorCTB4YTE2YWI0ZWI0YWRlMzU3ZlVMTCwgMHhhOTgxNWIxNGJkZGFjZTczVUxMLCAweDA1MGM4MDhhOGY4YzA2ODlVTEwsCisJMHhlZTc1MDJjMzJkNzdiNDk5VUxMLCAweGFmODk1MDEzYmNkOWNhNzZVTEwsIDB4NmY5NDJkZjM5Y2I5NGFkNlVMTCwKKwkweDYxNzdjOTBiNmFiZWI1ZGZVTEwsIDB4OWQzYWZhZGQ0MGMwMWQ1ZFVMTCwgMHg5ODM2N2E1N2NmNGMxYmQ0VUxMLAorCTB4ZWI3OTgyNDlhMmZiYjIxMFVMTCwgMHgyNzc0ZTlhNzgwOWQzYWJhVUxMLCAweGJmNDI5M2YwNGZkMTIxNmVVTEwsCisJMHg0MmY4ZDk1ZDFmMjE3YzYzVUxMLCAweDg2MWU1ZDRjY2E0MzBmYzVVTEwsIDB4ZGIzOWRhNzFhYWUzOTIzOFVMTCwKKwkweDkxMmFlY2QzNDJjNjE1NTdVTEwKK307CisKK3N0YXRpYyBjb25zdCB1NjQgVDVbMjU2XSA9IHsKKwkweGI5YmIwMTZhZDNiYTY4ZDJVTEwsIDB4OWFlNWIxNjZmYzU0MTk0ZFVMTCwgMHg2NWUyY2QxNDcxMmY5M2JjVUxMLAorCTB4ODcyNTUxMWI5Yzc0YjljZFVMTCwgMHhhMmY3YTQ1N2Y1NTMwMjUxVUxMLCAweGQ2ZDAwM2JlNjhkM2I4NmJVTEwsCisJMHhkZWQ2MDRiNTZiZDJiZDZmVUxMLCAweDUyYjNmZTg1ZDc0ZDY0MjlVTEwsIDB4YmFmZGFkNGFmMDUwMGQ1ZFVMTCwKKwkweDA5Y2Y2M2UwZTlhYzI2OGFVTEwsIDB4MWMwOTg0OTY4YThkODMwZVVMTCwgMHg5MWE1MWE0ZGRjYmY3OWM2VUxMLAorCTB4YTczZDRkMzc5MDcwYWRkZFVMTCwgMHhhYWYxYTM1Y2Y2NTIwNzU1VUxMLCAweGE0N2JlMTE3YjM5YWM4NTJVTEwsCisJMHg1YWI1Zjk4ZWQ0NGM2MTJkVUxMLCAweDAzNDZhYzIwMjNlYTY1OGZVTEwsIDB4ZTZjNDExODQ2MmQ1YTY3M1VMTCwKKwkweGNjNTVjMjY4YTQ5N2YxNjZVTEwsIDB4YzZkYzBkYTg2ZWQxYjI2M1VMTCwgMHg4NWFhOTlkMDU1MzNmZmNjVUxMLAorCTB4YjJmYmFhNDFmMzUxMDg1OVVMTCwgMHhlMmM3OWMwZmVkNWIyYTcxVUxMLCAweDU5ZjM1NWFlZjdhNjA0YTJVTEwsCisJMHhiZWZlMjBjMTdmZGU4MTVmVUxMLCAweDdhYWRlNWEyZDg0ODc1M2RVTEwsIDB4MjlkNzdmY2NlNWE4MzI5YVVMTCwKKwkweGJjNzFlODBhYjY5OWM3NWVVTEwsIDB4OTZlMDNiZTY3MGRiOTA0YlVMTCwgMHg4ZGFjOWVkYjU2MzJmYWM4VUxMLAorCTB4ZDE5NTIyMTVjNGI3NTFlNlVMTCwgMHhiMzMyY2VhYTE5ZmMyYmQ3VUxMLCAweDRiNzA5MzczMzhlMzQ4YWJVTEwsCisJMHg4NDYzZmQzYmJmOWVkYzQyVUxMLCAweGZjNDFkMDUyYWU5MWVmN2VVTEwsIDB4YWM3ZGU2MWNiMDliY2Q1NlVMTCwKKwkweDQzNzY5NDc4M2JlMjRkYWZVTEwsIDB4YjFiZDA2NjFkMGJiNmRkNlVMTCwgMHgzMjliZGFmMWMzNDE1ODE5VUxMLAorCTB4NTc3OTE3ZTViMjZlY2JhNVVMTCwgMHg0MWY5NWNiM2YyYTUwYmFlVUxMLCAweDE2ODA0YjU2NDBjYmMwMGJVTEwsCisJMHg3ZjY3MGNjMmJkNmJkYWIxVUxMLCAweGRjNTljYzdlYTI5NWZiNmVVTEwsIDB4NjFlMTQwOWZmZWExMWZiZVVMTCwKKwkweGNiMTBlM2MzMDhmMzE4ZWJVTEwsIDB4ZTE4MTMwMmZjZWIxNGZmZVVMTCwgMHgxMDBjMGUxNjA2MDIwYTA4VUxMLAorCTB4MmU5MjVlNjc0OWNjZGIxN1VMTCwgMHg2ZWEyNjYzZjUxYzRmMzM3VUxMLCAweGU4NGU1M2NmMjcxZDY5NzRVTEwsCisJMHhhMDc4NmM5YzNjMTQ0NDUwVUxMLCAweDU2YjA3MzBlNThjM2U4MmJVTEwsIDB4M2Y1NzM0OWFhNTYzZjI5MVVMTCwKKwkweDllZTYzY2VkNzNkYTk1NGZVTEwsIDB4ZDJkMzhlMzVlNzVkMzQ2OVVMTCwgMHhjMmRmODAyM2UxNWYzZTYxVUxMLAorCTB4YWVmMjJlZDc3OWRjOGI1N1VMTCwgMHhjZjEzNmU0ODg3N2Q5NGU5VUxMLCAweDI2OTQ1OTZjNGFjZGRlMTNVTEwsCisJMHhkZjFmNjA1ZTgxN2Y5ZWUxVUxMLCAweGVhYzE5YjA0ZWU1YTJmNzVVTEwsIDB4NDc3NTE5ZjNiNDZjYzFhZFVMTCwKKwkweGRhZDU4OTNlZTQ1YzMxNmRVTEwsIDB4ZWIwOGZmZWYwNGY3MGNmYlVMTCwgMHgyZGQ0ZjI0NzZhMjZiZTk4VUxMLAorCTB4YWIzOGM3YjcxY2ZmMjRkYlVMTCwgMHgzYjU0YjkxMTJhZWQ3ZTkzVUxMLCAweDEzNGFhMjM2MjVlODZmODdVTEwsCisJMHg5YzY5ZjQyNmJhOWRkMzRlVUxMLCAweDVmN2YxMGVlYjE2ZmNlYTFVTEwsIDB4MDQwMzhkOGI4ZjhlOGMwMlVMTCwKKwkweGM4NTY0ZmUzMmIxOTdkNjRVTEwsIDB4NjllNzQ3OTRmZGEwMWFiYVVMTCwgMHhkMzFhZWFkZTBkZjAxN2U3VUxMLAorCTB4M2MxMTk4YmE4Njg5OTcxZVVMTCwgMHg3ODIyMmQ2OTExMGYzMzNjVUxMLCAweDM4MTIxNTMxMDkwNzFiMWNVTEwsCisJMHgxMWM1NmFmZGVjYWYyOTg2VUxMLCAweDhiMjBkYjliMTBmYjMwY2JVTEwsIDB4NDAzMDM4NTgxODA4MjgyMFVMTCwKKwkweGE4N2U2Yjk3M2YxNTQxNTRVTEwsIDB4NjgyZTIzN2YxNzBkMzkzNFVMTCwgMHgyMDE4MWMyYzBjMDQxNDEwVUxMLAorCTB4MDgwNjA3MGIwMzAxMDUwNFVMTCwgMHgwNzQ1MjFhYmFjNjRlOThkVUxMLCAweGI2ZjgyN2NhN2NkZjg0NWJVTEwsCisJMHg5NzI5NWYwZDlhNzZiM2M1VUxMLCAweGVmMGI3MjY0OGI3OTgwZjlVTEwsIDB4YTZmNDI5ZGM3YWRkOGU1M1VMTCwKKwkweGY1OGViM2IyNDczZGM5ZjRVTEwsIDB4YjA3NDYyOGEzYTE2NGU1OFVMTCwgMHhlNTgyYmRhNDQxM2ZjM2ZjVUxMLAorCTB4YTViMjg1ZmM1OTM3ZWJkY1VMTCwgMHg0ZjczMWVmOGI3NmRjNGE5VUxMLCAweGRkOTBhODk1NDgzOGQ4ZTBVTEwsCisJMHhhMWIxMDg3N2Q2Yjk2N2RlVUxMLCAweGJmMzc0NDJhOTU3M2EyZDFVTEwsIDB4MWI0Y2E1M2QyNmU5NmE4M1VMTCwKKwkweGI1YmU4YmVhNWYzNWUxZDRVTEwsIDB4OTJlM2I2NmRmZjU1MWM0OVVMTCwgMHhhZjNiNGEzYzkzNzFhOGQ5VUxMLAorCTB4ZmYwNzdjNzI4ZDdiOGFmMVVMTCwgMHgxNDBmODM5ZDg5OGM4NjBhVUxMLCAweGI3MzE0MzIxOTY3MmE3ZDVVTEwsCisJMHgzNDE3OWZiMTg1ODg5MjFhVUxMLCAweGUzMGVmOGU0MDdmNjA5ZmZVTEwsIDB4NGRmY2Q2MzM3ZTJhODJhOFVMTCwKKwkweGVkODRiYWFmNDIzZWM2ZjhVTEwsIDB4Y2FkOTg3MjhlMjVlM2I2NVVMTCwgMHgyNWQyZjU0YzY5MjdiYjljVUxMLAorCTB4MGE4OWNmYzBjYTQ2NDMwNVVMTCwgMHg2MDI4MjQ3NDE0MGMzYzMwVUxMLCAweDBmNDMyNmEwYWY2NWVjODlVTEwsCisJMHg2NzZkMDVkZmI4NjhkNWJkVUxMLCAweDJmNWIzYThjYTM2MWY4OTlVTEwsIDB4MTgwYTA5MWQwNTAzMGYwY1VMTCwKKwkweDQ2YmM3ZDE4NWVjMWUyMjNVTEwsIDB4ODJlZmI4N2JmOTU3MTY0MVVMTCwgMHhmZWNlMTg5OTY3ZDZhOTdmVUxMLAorCTB4ODZlYzM1ZjA3NmQ5OWE0M1VMTCwgMHhmYWNkOTUxMmU4NTgyNTdkVUxMLCAweDhlZWEzMmZiNzVkODlmNDdVTEwsCisJMHgxNzQ5MmZiZGFhNjZlMzg1VUxMLCAweGY2YzgxZjkyNjRkN2FjN2JVTEwsIDB4Y2Q5Y2E2ODM0ZTNhZDJlOFVMTCwKKwkweDBlOGE0MjRiNDVjOGNmMDdVTEwsIDB4ZmQ4OGI0Yjk0NDNjY2NmMFVMTCwgMHg4MzI2ZGM5MDEzZmEzNWNmVUxMLAorCTB4YzQ1M2M1NjNhNzk2ZjQ2MlVMTCwgMHg1MWY1NTJhNWY0YTcwMWE2VUxMLCAweGI0NzdlZjAxYjU5OGMyNWFVTEwsCisJMHgzMzUyYmUxYTI5ZWM3Yjk3VUxMLCAweGE5YjcwZjdjZDViODYyZGFVTEwsIDB4NzZhODZmMjI1NGM3ZmMzYlVMTCwKKwkweDE5YzM2ZGY2ZWZhZTJjODJVTEwsIDB4NmY2YjAyZDRiYjY5ZDBiOVVMTCwgMHg2MmE3ZWNiZmRkNGI3YTMxVUxMLAorCTB4MzFkZDc2ZDFlMGFiM2Q5NlVMTCwgMHgyMWQxNzhjN2U2YTkzNzllVUxMLCAweDFmNGYyOGI2YTk2N2U2ODFVTEwsCisJMHg1MDNjMzY0ZTFlMGEyMjI4VUxMLCAweDAyOGZjOGNiYzk0NzQ2MDFVTEwsIDB4YzMxNmU0YzgwYmYyMWRlZlVMTCwKKwkweGMxOTkyYzAzYzJiNTViZWVVTEwsIDB4MGRjY2VlNmI2NjIyYWE4OFVMTCwgMHg3YjY0ODE0OTMyZTU1NmIzVUxMLAorCTB4MjM1ZWIwMGMyZmVlNzE5ZlVMTCwgMHg5OWEzMWQ0NmRmYmU3Y2MyVUxMLCAweDQ1ZmFkMTM4N2QyYjg3YWNVTEwsCisJMHg3YzIxYTBlMjllODFiZjNlVUxMLCAweDkwNmM3ZWE2MzYxMjVhNDhVTEwsIDB4NmMyZGFlZjQ5ODgzYjUzNlVMTCwKKwkweGQ4NWE0MWY1MmQxYjc3NmNVTEwsIDB4NzAyNDJhNjIxMjBlMzYzOFVMTCwgMHgwNWNhZTk2MDY1MjNhZjhjVUxMLAorCTB4ZmIwNGYxZjkwMmY1MDZmM1VMTCwgMHgxMjgzYzZkZGNmNDU0YzA5VUxMLCAweDE1YzZlNzc2NjMyMWE1ODRVTEwsCisJMHgzZTllNTA3MTRmY2VkMTFmVUxMLCAweDcyYWJlMmE5ZGI0OTcwMzlVTEwsIDB4N2RlOGM0MDk3NDJjOWNiMFVMTCwKKwkweDliMmNkNThkMTZmOTNhYzNVTEwsIDB4NjM2ZTg4NTQzN2U2NTliZlVMTCwgMHhkOTkzMjUxZWM3YjY1NGUyVUxMLAorCTB4NWRmMGQ4MjU3ODI4ODhhMFVMTCwgMHhiODcyNjU4MTM5MTc0YjVjVUxMLCAweDY0MmJhOWZmOWI4MmIwMzJVTEwsCisJMHhkMDVjNDZmZTJlMWE3MjY4VUxMLCAweDJjMWQ5NmFjODA4YjlkMTZVTEwsIDB4YTMzZWMwYmMxZmZlMjFkZlVMTCwKKwkweDI0MWI5MWE3ODM4YTk4MTJVTEwsIDB4NDgzNjNmNTMxYjA5MmQyNFVMTCwgMHgwNjhjNDU0MDQ2YzljYTAzVUxMLAorCTB4NGMzNWIyZDg5NDg3YTEyNlVMTCwgMHg0YWI5Zjc5OGQyNGU2YjI1VUxMLCAweDViN2M5ZDY1M2VlMTQyYTNVTEwsCisJMHg2ZGU0Y2ExZjcyMmU5NmI4VUxMLCAweDczNjI4NjQyMzFlNDUzYjdVTEwsIDB4NTM3YTlhNmUzZGUwNDdhN1VMTCwKKwkweDBiNDBhYjJiMjBlYjYwOGJVTEwsIDB4ZjQ0N2Q3NTlhZDkwZWE3YVVMTCwgMHg0OWZmNWJiOGYxYTQwZWFhVUxMLAorCTB4ZjA0NDVhZDIyMjFlNjY3OFVMTCwgMHg1YzM5YmNjZTkyODVhYjJlVUxMLCAweDI3NWQzZDg3YTA2MGZkOWRVTEwsCisJMHgwMDAwMDAwMDAwMDAwMDAwVUxMLCAweDM1ZGVmYjVhNmYyNWIxOTRVTEwsIDB4ZjMwMmY2ZjIwMWY0MDNmN1VMTCwKKwkweGRiMWNlZGQ1MGVmMTEyZTNVTEwsIDB4ZDQ1ZmNiNzVhMTk0ZmU2YVVMTCwgMHg1ODNhMzE0NTFkMGIyNzJjVUxMLAorCTB4NmI2ODhmNWYzNGU3NWNiYlVMTCwgMHg4ZjIzNTYxMDlmNzViY2M5VUxMLCAweDJiNThiNzA3MmNlZjc0OWJVTEwsCisJMHhiZGI4OGNlMTVjMzRlNGQwVUxMLCAweDk1YTY5N2M2NTMzMWY1YzRVTEwsIDB4ZWVjMjE2OGY2MWQ0YTM3N1VMTCwKKwkweGNlZGEwYWEzNmRkMGI3NjdVTEwsIDB4NDQzM2I1ZDM5Nzg2YTQyMlVMTCwgMHhkNzE5Njc1NTgyN2U5YmU1VUxMLAorCTB4MDFjOTY0ZWJlYWFkMjM4ZVVMTCwgMHhiYjM0YzlhMTFhZmQyZWQzVUxMLCAweDU1ZjZkZjJlN2IyOThkYTRVTEwsCisJMHg5ZGEwOTBjZDUwMzBmMGMwVUxMLCAweGM1OWFhMTg4NGQzYmQ3ZWNVTEwsIDB4OGM2NWZhMzBiYzlmZDk0NlVMTCwKKwkweDkzMmFkMjg2MTVmODNmYzdVTEwsIDB4N2VhZTY4Mjk1N2M2ZjkzZlVMTCwgMHg5ODZhNzlhZDM1MTM1ZjRjVUxMLAorCTB4MzAxNDEyM2EwYTA2MWUxOFVMTCwgMHgyODFlMWIyNzBmMDUxMTE0VUxMLCAweDY2YTQ2MTM0NTJjNWY2MzNVTEwsCisJMHg4ODY2NzdiYjMzMTE1NTQ0VUxMLCAweDlmMmY1ODA2OTk3N2I2YzFVTEwsIDB4YzcxNTY5NDM4NDdjOTFlZFVMTCwKKwkweGY3MDE3Yjc5OGU3YThmZjVVTEwsIDB4ZTcwZDc1NmY4ODc4ODVmZFVMTCwgMHhhZGI0ODJmNzVhMzZlZWQ4VUxMLAorCTB4ZTA0ODU0YzQyNDFjNmM3MFVMTCwgMHhkNTk2YWY5ZTRiMzlkZGU0VUxMLCAweGYyY2I5MjE5ZWI1OTIwNzlVTEwsCisJMHhjMDUwNDhlODI4MTg3ODYwVUxMLCAweDhhZTliZjcwZmE1NjEzNDVVTEwsIDB4ZjE4ZDNlMzljOGIzNDVmNlVMTCwKKwkweGU5ODczNzI0Y2RiMDRhZmFVTEwsIDB4M2RkOGZjNTE2YzI0YjQ5MFVMTCwgMHgxZGMwZTA3ZDYwMjBhMDgwVUxMLAorCTB4Zjk4YjM5MzJjYmIyNDBmMlVMTCwgMHhlNDRiZDk0ZmFiOTJlMDcyVUxMLCAweDcxZWQ0ZTg5ZjhhMzE1YjZVTEwsCisJMHg0ZWJhN2ExMzVkYzBlNzI3VUxMLCAweDFhODVjMWQ2Y2M0NDQ5MGRVTEwsIDB4Mzc1MTMzOTFhNjYyZjc5NVVMTCwKKwkweDgwNjA3MGIwMzAxMDUwNDBVTEwsIDB4Yzk5ZjJiMDhjMWI0NWVlYVVMTCwgMHg1NDNmYmJjNTkxODRhZTJhVUxMLAorCTB4MjI5N2Q0ZTdjNTQzNTIxMVVMTCwgMHhlYzRkZGU0NGE4OTNlNTc2VUxMLCAweDVlYjY3NDA1NWJjMmVkMmZVTEwsCisJMHg2YWExZWJiNGRlNGE3ZjM1VUxMLCAweDgxYTkxNDViZGFiZDczY2VVTEwsIDB4MGMwNThhODA4YzhmODkwNlVMTCwKKwkweDc1ZWVjMzAyNzcyZDk5YjRVTEwsIDB4ODlhZjEzNTBkOWJjNzZjYVVMTCwgMHg5NDZmZjMyZGI5OWNkNjRhVUxMLAorCTB4Nzc2MTBiYzliZTZhZGZiNVVMTCwgMHgzYTlkZGRmYWMwNDA1ZDFkVUxMLCAweDM2OTg1NzdhNGNjZmQ0MWJVTEwsCisJMHg3OWViNDk4MmZiYTIxMGIyVUxMLCAweDc0MjdhN2U5OWQ4MGJhM2FVTEwsIDB4NDJiZmYwOTNkMTRmNmUyMVVMTCwKKwkweGY4NDI1ZGQ5MjExZjYzN2NVTEwsIDB4MWU4NjRjNWQ0M2NhYzUwZlVMTCwgMHgzOWRiNzFkYWUzYWEzODkyVUxMLAorCTB4MmE5MWQzZWNjNjQyNTcxNVVMTAorfTsKKworc3RhdGljIGNvbnN0IHU2NCBUNlsyNTZdID0geworCTB4NmEwMWJiYjlkMjY4YmFkM1VMTCwgMHg2NmIxZTU5YTRkMTk1NGZjVUxMLCAweDE0Y2RlMjY1YmM5MzJmNzFVTEwsCisJMHgxYjUxMjU4N2NkYjk3NDljVUxMLCAweDU3YTRmN2EyNTEwMjUzZjVVTEwsIDB4YmUwM2QwZDY2YmI4ZDM2OFVMTCwKKwkweGI1MDRkNmRlNmZiZGQyNmJVTEwsIDB4ODVmZWIzNTIyOTY0NGRkN1VMTCwgMHg0YWFkZmRiYTVkMGQ1MGYwVUxMLAorCTB4ZTA2M2NmMDk4YTI2YWNlOVVMTCwgMHg5Njg0MDkxYzBlODM4ZDhhVUxMLCAweDRkMWFhNTkxYzY3OWJmZGNVTEwsCisJMHgzNzRkM2RhN2RkYWQ3MDkwVUxMLCAweDVjYTNmMWFhNTUwNzUyZjZVTEwsIDB4MTdlMTdiYTQ1MmM4OWFiM1VMTCwKKwkweDhlZjliNTVhMmQ2MTRjZDRVTEwsIDB4MjBhYzQ2MDM4ZjY1ZWEyM1VMTCwgMHg4NDExYzRlNjczYTZkNTYyVUxMLAorCTB4NjhjMjU1Y2M2NmYxOTdhNFVMTCwgMHhhODBkZGNjNjYzYjJkMTZlVUxMLCAweGQwOTlhYTg1Y2NmZjMzNTVVTEwsCisJMHg0MWFhZmJiMjU5MDg1MWYzVUxMLCAweDBmOWNjN2UyNzEyYTViZWRVTEwsIDB4YWU1NWYzNTlhMjA0YTZmN1VMTCwKKwkweGMxMjBmZWJlNWY4MWRlN2ZVTEwsIDB4YTJlNWFkN2EzZDc1NDhkOFVMTCwgMHhjYzdmZDcyOTlhMzJhOGU1VUxMLAorCTB4MGFlODcxYmM1ZWM3OTliNlVMTCwgMHhlNjNiZTA5NjRiOTBkYjcwVUxMLCAweGRiOWVhYzhkYzhmYTMyNTZVTEwsCisJMHgxNTIyOTVkMWU2NTFiN2M0VUxMLCAweGFhY2UzMmIzZDcyYmZjMTlVTEwsIDB4NzM5MzcwNGJhYjQ4ZTMzOFVMTCwKKwkweDNiZmQ2Mzg0NDJkYzllYmZVTEwsIDB4NTJkMDQxZmM3ZWVmOTFhZVVMTCwgMHgxY2U2N2RhYzU2Y2Q5YmIwVUxMLAorCTB4Nzg5NDc2NDNhZjRkZTIzYlVMTCwgMHg2MTA2YmRiMWQ2NmRiYmQwVUxMLCAweGYxZGE5YjMyMTk1ODQxYzNVTEwsCisJMHhlNTE3Nzk1N2E1Y2I2ZWIyVUxMLCAweGIzNWNmOTQxYWUwYmE1ZjJVTEwsIDB4NTY0YjgwMTYwYmMwY2I0MFVMTCwKKwkweGMyMGM2NzdmYjFkYTZiYmRVTEwsIDB4N2VjYzU5ZGM2ZWZiOTVhMlVMTCwgMHg5ZjQwZTE2MWJlMWZhMWZlVUxMLAorCTB4YzNlMzEwY2JlYjE4ZjMwOFVMTCwgMHgyZjMwODFlMWZlNGZiMWNlVUxMLCAweDE2MGUwYzEwMDgwYTAyMDZVTEwsCisJMHg2NzVlOTIyZTE3ZGJjYzQ5VUxMLCAweDNmNjZhMjZlMzdmM2M0NTFVTEwsIDB4Y2Y1MzRlZTg3NDY5MWQyN1VMTCwKKwkweDljNmM3OGEwNTA0NDE0M2NVTEwsIDB4MGU3M2IwNTYyYmU4YzM1OFVMTCwgMHg5YTM0NTczZjkxZjI2M2E1VUxMLAorCTB4ZWQzY2U2OWU0Zjk1ZGE3M1VMTCwgMHgzNThlZDNkMjY5MzQ1ZGU3VUxMLCAweDIzODBkZmMyNjEzZTVmZTFVTEwsCisJMHhkNzJlZjJhZTU3OGJkYzc5VUxMLCAweDQ4NmUxM2NmZTk5NDdkODdVTEwsIDB4NmM1OTk0MjYxM2RlY2Q0YVVMTCwKKwkweDVlNjAxZmRmZTE5ZTdmODFVTEwsIDB4MDQ5YmMxZWE3NTJmNWFlZVVMTCwgMHhmMzE5NzU0N2FkYzE2Y2I0VUxMLAorCTB4M2U4OWQ1ZGE2ZDMxNWNlNFVMTCwgMHhlZmZmMDhlYmZiMGNmNzA0VUxMLCAweDQ3ZjJkNDJkOThiZTI2NmFVTEwsCisJMHhiN2M3MzhhYmRiMjRmZjFjVUxMLCAweDExYjk1NDNiOTM3ZWVkMmFVTEwsIDB4MzZhMjRhMTM4NzZmZTgyNVVMTCwKKwkweDI2ZjQ2OTljNGVkMzlkYmFVTEwsIDB4ZWUxMDdmNWZhMWNlNmZiMVVMTCwgMHg4YjhkMDMwNDAyOGM4ZThmVUxMLAorCTB4ZTM0ZjU2Yzg2NDdkMTkyYlVMTCwgMHg5NDQ3ZTc2OWJhMWFhMGZkVUxMLCAweGRlZWExYWQzZTcxN2YwMGRVTEwsCisJMHhiYTk4MTEzYzFlOTc4OTg2VUxMLCAweDY5MmQyMjc4M2MzMzBmMTFVTEwsIDB4MzExNTEyMzgxYzFiMDcwOVVMTCwKKwkweGZkNmFjNTExODYyOWFmZWNVTEwsIDB4OWJkYjIwOGJjYjMwZmIxMFVMTCwgMHg1ODM4MzA0MDIwMjgwODE4VUxMLAorCTB4OTc2YjdlYTg1NDQxMTUzZlVMTCwgMHg3ZjIzMmU2ODM0MzkwZDE3VUxMLCAweDJjMWMxODIwMTAxNDA0MGNVTEwsCisJMHgwYjA3MDYwODA0MDUwMTAzVUxMLCAweGFiMjE0NTA3OGRlOTY0YWNVTEwsIDB4Y2EyN2Y4YjY1Yjg0ZGY3Y1VMTCwKKwkweDBkNWYyOTk3YzViMzc2OWFVTEwsIDB4NjQ3MjBiZWZmOTgwNzk4YlVMTCwgMHhkYzI5ZjRhNjUzOGVkZDdhVUxMLAorCTB4YjJiMzhlZjVmNGM5M2Q0N1VMTCwgMHg4YTYyNzRiMDU4NGUxNjNhVUxMLCAweGE0YmQ4MmU1ZmNjMzNmNDFVTEwsCisJMHhmYzg1YjJhNWRjZWIzNzU5VUxMLCAweGY4MWU3MzRmYTljNDZkYjdVTEwsIDB4OTVhODkwZGRlMGQ4Mzg0OFVMTCwKKwkweDc3MDhiMWExZGU2N2I5ZDZVTEwsIDB4MmE0NDM3YmZkMWEyNzM5NVVMTCwgMHgzZGE1NGMxYjgzNmFlOTI2VUxMLAorCTB4ZWE4YmJlYjVkNGUxMzU1ZlVMTCwgMHg2ZGI2ZTM5MjQ5MWM1NWZmVUxMLCAweDNjNGEzYmFmZDlhODcxOTNVTEwsCisJMHg3MjdjMDdmZmYxOGE3YjhkVUxMLCAweDlkODMwZjE0MGE4NjhjODlVTEwsIDB4MjE0MzMxYjdkNWE3NzI5NlVMTCwKKwkweGIxOWYxNzM0MWE5Mjg4ODVVTEwsIDB4ZTRmODBlZTNmZjA5ZjYwN1VMTCwgMHgzM2Q2ZmM0ZGE4ODIyYTdlVUxMLAorCTB4YWZiYTg0ZWRmOGM2M2U0MlVMTCwgMHgyODg3ZDljYTY1M2I1ZWUyVUxMLCAweDRjZjVkMjI1OWNiYjI3NjlVTEwsCisJMHhjMGNmODkwYTA1NDM0NmNhVUxMLCAweDc0MjQyODYwMzAzYzBjMTRVTEwsIDB4YTAyNjQzMGY4OWVjNjVhZlVMTCwKKwkweGRmMDU2ZDY3YmRkNTY4YjhVTEwsIDB4OGMzYTViMmY5OWY4NjFhM1VMTCwgMHgxZDA5MGExODBjMGYwMzA1VUxMLAorCTB4MTg3ZGJjNDYyM2UyYzE1ZVVMTCwgMHg3YmI4ZWY4MjQxMTY1N2Y5VUxMLCAweDk5MThjZWZlN2ZhOWQ2NjdVTEwsCisJMHhmMDM1ZWM4NjQzOWFkOTc2VUxMLCAweDEyOTVjZGZhN2QyNTU4ZThVTEwsIDB4ZmIzMmVhOGU0NzlmZDg3NVVMTCwKKwkweGJkMmY0OTE3ODVlMzY2YWFVTEwsIDB4OTIxZmM4ZjY3YmFjZDc2NFVMTCwgMHg4M2E2OWNjZGU4ZDIzYTRlVUxMLAorCTB4NGI0MjhhMGUwN2NmYzg0NVVMTCwgMHhiOWI0ODhmZGYwY2MzYzQ0VUxMLCAweDkwZGMyNjgzY2YzNWZhMTNVTEwsCisJMHg2M2M1NTNjNDYyZjQ5NmE3VUxMLCAweGE1NTJmNTUxYTYwMWE3ZjRVTEwsIDB4MDFlZjc3YjQ1YWMyOThiNVVMTCwKKwkweDFhYmU1MjMzOTc3YmVjMjlVTEwsIDB4N2MwZmI3YTlkYTYyYjhkNVVMTCwgMHgyMjZmYTg3NjNiZmNjNzU0VUxMLAorCTB4ZjY2ZGMzMTk4MjJjYWVlZlVMTCwgMHhkNDAyNmI2ZmI5ZDA2OWJiVUxMLCAweGJmZWNhNzYyMzE3YTRiZGRVTEwsCisJMHhkMTc2ZGQzMTk2M2RhYmUwVUxMLCAweGM3NzhkMTIxOWUzN2E5ZTZVTEwsIDB4YjYyODRmMWY4MWU2NjdhOVVMTCwKKwkweDRlMzYzYzUwMjgyMjBhMWVVTEwsIDB4Y2JjODhmMDIwMTQ2NDdjOVVMTCwgMHhjOGU0MTZjM2VmMWRmMjBiVUxMLAorCTB4MDMyYzk5YzFlZTViYjVjMlVMTCwgMHg2YmVlY2MwZDg4YWEyMjY2VUxMLCAweDQ5ODE2NDdiYjM1NmU1MzJVTEwsCisJMHgwY2IwNWUyMzlmNzFlZTJmVUxMLCAweDQ2MWRhMzk5YzI3Y2JlZGZVTEwsIDB4MzhkMWZhNDVhYzg3MmI3ZFVMTCwKKwkweGUyYTAyMTdjM2ViZjgxOWVVTEwsIDB4YTY3ZTZjOTA0ODVhMTIzNlVMTCwgMHhmNGFlMmQ2YzM2YjU4Mzk4VUxMLAorCTB4ZjU0MTVhZDg2Yzc3MWIyZFVMTCwgMHg2MjJhMjQ3MDM4MzYwZTEyVUxMLCAweDYwZTljYTA1OGNhZjIzNjVVTEwsCisJMHhmOWYxMDRmYmYzMDZmNTAyVUxMLCAweGRkYzY4MzEyMDk0YzQ1Y2ZVTEwsIDB4NzZlN2M2MTU4NGE1MjE2M1VMTCwKKwkweDcxNTA5ZTNlMWZkMWNlNGZVTEwsIDB4YTllMmFiNzIzOTcwNDlkYlVMTCwgMHgwOWM0ZTg3ZGIwOWMyYzc0VUxMLAorCTB4OGRkNTJjOWJjMzNhZjkxNlVMTCwgMHg1NDg4NmU2M2JmNTllNjM3VUxMLCAweDFlMjU5M2Q5ZTI1NGI2YzdVTEwsCisJMHgyNWQ4ZjA1ZGEwODgyODc4VUxMLCAweDgxNjU3MmI4NWM0YjE3MzlVTEwsIDB4ZmZhOTJiNjQzMmIwODI5YlVMTCwKKwkweGZlNDY1Y2QwNjg3MjFhMmVVTEwsIDB4YWM5NjFkMmMxNjlkOGI4MFVMTCwgMHhiY2MwM2VhM2RmMjFmZTFmVUxMLAorCTB4YTc5MTFiMjQxMjk4OGE4M1VMTCwgMHg1MzNmMzY0ODI0MmQwOTFiVUxMLCAweDQwNDU4YzA2MDNjYWM5NDZVTEwsCisJMHhkOGIyMzU0YzI2YTE4Nzk0VUxMLCAweDk4ZjdiOTRhMjU2YjRlZDJVTEwsIDB4NjU5ZDdjNWJhMzQyZTEzZVVMTCwKKwkweDFmY2FlNDZkYjg5NjJlNzJVTEwsIDB4NDI4NjYyNzNiNzUzZTQzMVVMTCwgMHg2ZTlhN2E1M2E3NDdlMDNkVUxMLAorCTB4MmJhYjQwMGI4YjYwZWIyMFVMTCwgMHg1OWQ3NDdmNDdhZWE5MGFkVUxMLCAweGI4NWJmZjQ5YWEwZWE0ZjFVTEwsCisJMHhkMjVhNDRmMDc4NjYxZTIyVUxMLCAweGNlYmMzOTVjMmVhYjg1OTJVTEwsIDB4ODczZDVkMjc5ZGZkNjBhMFVMTCwKKwkweDAwMDAwMDAwMDAwMDAwMDBVTEwsIDB4NWFmYmRlMzU5NGIxMjU2ZlVMTCwgMHhmMmY2MDJmM2Y3MDNmNDAxVUxMLAorCTB4ZDVlZDFjZGJlMzEyZjEwZVVMTCwgMHg3NWNiNWZkNDZhZmU5NGExVUxMLCAweDQ1MzEzYTU4MmMyNzBiMWRVTEwsCisJMHg1ZjhmNjg2YmJiNWNlNzM0VUxMLCAweDEwNTYyMzhmYzliYzc1OWZVTEwsIDB4MDdiNzU4MmI5Yjc0ZWYyY1VMTCwKKwkweGUxOGNiOGJkZDBlNDM0NWNVTEwsIDB4YzY5N2E2OTVjNGY1MzE1M1VMTCwgMHg4ZjE2YzJlZTc3YTNkNDYxVUxMLAorCTB4YTMwYWRhY2U2N2I3ZDA2ZFVMTCwgMHhkM2I1MzM0NDIyYTQ4Njk3VUxMLCAweDU1NjcxOWQ3ZTU5YjdlODJVTEwsCisJMHhlYjY0YzkwMThlMjNhZGVhVUxMLCAweGExYzkzNGJiZDMyZWZkMWFVTEwsIDB4MmVkZmY2NTVhNDhkMjk3YlVMTCwKKwkweGNkOTBhMDlkYzBmMDMwNTBVTEwsIDB4ODhhMTlhYzVlY2Q3M2I0ZFVMTCwgMHgzMGZhNjU4YzQ2ZDk5ZmJjVUxMLAorCTB4ODZkMjJhOTNjNzNmZjgxNVVMTCwgMHgyOTY4YWU3ZTNmZjljNjU3VUxMLCAweGFkNzk2YTk4NGM1ZjEzMzVVTEwsCisJMHgzYTEyMTQzMDE4MWUwNjBhVUxMLCAweDI3MWIxZTI4MTQxMTA1MGZVTEwsIDB4MzQ2MWE0NjYzM2Y2YzU1MlVMTCwKKwkweGJiNzc2Njg4NDQ1NTExMzNVTEwsIDB4MDY1ODJmOWZjMWI2Nzc5OVVMTCwgMHg0MzY5MTVjN2VkOTE3Yzg0VUxMLAorCTB4Nzk3YjAxZjdmNThmN2E4ZVVMTCwgMHg2Zjc1MGRlN2ZkODU3ODg4VUxMLCAweGY3ODJiNGFkZDhlZTM2NWFVTEwsCisJMHhjNDU0NDhlMDcwNmMxYzI0VUxMLCAweDllYWY5NmQ1ZTRkZDM5NGJVTEwsIDB4MTk5MmNiZjI3OTIwNTllYlVMTCwKKwkweGU4NDg1MGMwNjA3ODE4MjhVTEwsIDB4NzBiZmU5OGE0NTEzNTZmYVVMTCwgMHgzOTNlOGRmMWY2NDViM2M4VUxMLAorCTB4MjQzNzg3ZTlmYTRhYjBjZFVMTCwgMHg1MWZjZDgzZDkwYjQyNDZjVUxMLCAweDdkZTBjMDFkODBhMDIwNjBVTEwsCisJMHgzMjM5OGJmOWYyNDBiMmNiVUxMLCAweDRmZDk0YmU0NzJlMDkyYWJVTEwsIDB4ODk0ZWVkNzFiNjE1YTNmOFVMTCwKKwkweDEzN2FiYTRlMjdlN2MwNWRVTEwsIDB4ZDZjMTg1MWEwZDQ5NDRjY1VMTCwgMHg5MTMzNTEzNzk1Zjc2MmE2VUxMLAorCTB4YjA3MDYwODA0MDUwMTAzMFVMTCwgMHgwODJiOWZjOWVhNWViNGMxVUxMLCAweGM1YmIzZjU0MmFhZTg0OTFVTEwsCisJMHhlN2Q0OTcyMjExNTI0M2M1VUxMLCAweDQ0ZGU0ZGVjNzZlNTkzYThVTEwsIDB4MDU3NGI2NWUyZmVkYzI1YlVMTCwKKwkweGI0ZWJhMTZhMzU3ZjRhZGVVTEwsIDB4NWIxNGE5ODFjZTczYmRkYVVMTCwgMHg4MDhhMDUwYzA2ODk4ZjhjVUxMLAorCTB4MDJjM2VlNzViNDk5MmQ3N1VMTCwgMHg1MDEzYWY4OWNhNzZiY2Q5VUxMLCAweDJkZjM2Zjk0NGFkNjljYjlVTEwsCisJMHhjOTBiNjE3N2I1ZGY2YWJlVUxMLCAweGZhZGQ5ZDNhMWQ1ZDQwYzBVTEwsIDB4N2E1Nzk4MzYxYmQ0Y2Y0Y1VMTCwKKwkweDgyNDllYjc5YjIxMGEyZmJVTEwsIDB4ZTlhNzI3NzQzYWJhODA5ZFVMTCwgMHg5M2YwYmY0MjIxNmU0ZmQxVUxMLAorCTB4ZDk1ZDQyZjg3YzYzMWYyMVVMTCwgMHg1ZDRjODYxZTBmYzVjYTQzVUxMLCAweGRhNzFkYjM5OTIzOGFhZTNVTEwsCisJMHhlY2QzOTEyYTE1NTc0MmM2VUxMCit9OworCitzdGF0aWMgY29uc3QgdTY0IFQ3WzI1Nl0gPSB7CisJMHgwMTZhYjliYjY4ZDJkM2JhVUxMLCAweGIxNjY5YWU1MTk0ZGZjNTRVTEwsIDB4Y2QxNDY1ZTI5M2JjNzEyZlVMTCwKKwkweDUxMWI4NzI1YjljZDljNzRVTEwsIDB4YTQ1N2EyZjcwMjUxZjU1M1VMTCwgMHgwM2JlZDZkMGI4NmI2OGQzVUxMLAorCTB4MDRiNWRlZDZiZDZmNmJkMlVMTCwgMHhmZTg1NTJiMzY0MjlkNzRkVUxMLCAweGFkNGFiYWZkMGQ1ZGYwNTBVTEwsCisJMHg2M2UwMDljZjI2OGFlOWFjVUxMLCAweDg0OTYxYzA5ODMwZThhOGRVTEwsIDB4MWE0ZDkxYTU3OWM2ZGNiZlVMTCwKKwkweDRkMzdhNzNkYWRkZDkwNzBVTEwsIDB4YTM1Y2FhZjEwNzU1ZjY1MlVMTCwgMHhlMTE3YTQ3YmM4NTJiMzlhVUxMLAorCTB4Zjk4ZTVhYjU2MTJkZDQ0Y1VMTCwgMHhhYzIwMDM0NjY1OGYyM2VhVUxMLCAweDExODRlNmM0YTY3MzYyZDVVTEwsCisJMHhjMjY4Y2M1NWYxNjZhNDk3VUxMLCAweDBkYThjNmRjYjI2MzZlZDFVTEwsIDB4OTlkMDg1YWFmZmNjNTUzM1VMTCwKKwkweGFhNDFiMmZiMDg1OWYzNTFVTEwsIDB4OWMwZmUyYzcyYTcxZWQ1YlVMTCwgMHg1NWFlNTlmMzA0YTJmN2E2VUxMLAorCTB4MjBjMWJlZmU4MTVmN2ZkZVVMTCwgMHhlNWEyN2FhZDc1M2RkODQ4VUxMLCAweDdmY2MyOWQ3MzI5YWU1YThVTEwsCisJMHhlODBhYmM3MWM3NWViNjk5VUxMLCAweDNiZTY5NmUwOTA0YjcwZGJVTEwsIDB4OWVkYjhkYWNmYWM4NTYzMlVMTCwKKwkweDIyMTVkMTk1NTFlNmM0YjdVTEwsIDB4Y2VhYWIzMzIyYmQ3MTlmY1VMTCwgMHg5MzczNGI3MDQ4YWIzOGUzVUxMLAorCTB4ZmQzYjg0NjNkYzQyYmY5ZVVMTCwgMHhkMDUyZmM0MWVmN2VhZTkxVUxMLCAweGU2MWNhYzdkY2Q1NmIwOWJVTEwsCisJMHg5NDc4NDM3NjRkYWYzYmUyVUxMLCAweDA2NjFiMWJkNmRkNmQwYmJVTEwsIDB4ZGFmMTMyOWI1ODE5YzM0MVVMTCwKKwkweDE3ZTU1Nzc5Y2JhNWIyNmVVTEwsIDB4NWNiMzQxZjkwYmFlZjJhNVVMTCwgMHg0YjU2MTY4MGMwMGI0MGNiVUxMLAorCTB4MGNjMjdmNjdkYWIxYmQ2YlVMTCwgMHhjYzdlZGM1OWZiNmVhMjk1VUxMLCAweDQwOWY2MWUxMWZiZWZlYTFVTEwsCisJMHhlM2MzY2IxMDE4ZWIwOGYzVUxMLCAweDMwMmZlMTgxNGZmZWNlYjFVTEwsIDB4MGUxNjEwMGMwYTA4MDYwMlVMTCwKKwkweDVlNjcyZTkyZGIxNzQ5Y2NVTEwsIDB4NjYzZjZlYTJmMzM3NTFjNFVMTCwgMHg1M2NmZTg0ZTY5NzQyNzFkVUxMLAorCTB4NmM5Y2EwNzg0NDUwM2MxNFVMTCwgMHg3MzBlNTZiMGU4MmI1OGMzVUxMLCAweDM0OWEzZjU3ZjI5MWE1NjNVTEwsCisJMHgzY2VkOWVlNjk1NGY3M2RhVUxMLCAweDhlMzVkMmQzMzQ2OWU3NWRVTEwsIDB4ODAyM2MyZGYzZTYxZTE1ZlVMTCwKKwkweDJlZDdhZWYyOGI1Nzc5ZGNVTEwsIDB4NmU0OGNmMTM5NGU5ODc3ZFVMTCwgMHg1OTZjMjY5NGRlMTM0YWNkVUxMLAorCTB4NjA1ZWRmMWY5ZWUxODE3ZlVMTCwgMHg5YjA0ZWFjMTJmNzVlZTVhVUxMLCAweDE5ZjM0Nzc1YzFhZGI0NmNVTEwsCisJMHg4OTNlZGFkNTMxNmRlNDVjVUxMLCAweGZmZWZlYjA4MGNmYjA0ZjdVTEwsIDB4ZjI0NzJkZDRiZTk4NmEyNlVMTCwKKwkweGM3YjdhYjM4MjRkYjFjZmZVTEwsIDB4YjkxMTNiNTQ3ZTkzMmFlZFVMTCwgMHhhMjM2MTM0YTZmODcyNWU4VUxMLAorCTB4ZjQyNjljNjlkMzRlYmE5ZFVMTCwgMHgxMGVlNWY3ZmNlYTFiMTZmVUxMLCAweDhkOGIwNDAzOGMwMjhmOGVVTEwsCisJMHg0ZmUzYzg1NjdkNjQyYjE5VUxMLCAweDQ3OTQ2OWU3MWFiYWZkYTBVTEwsIDB4ZWFkZWQzMWExN2U3MGRmMFVMTCwKKwkweDk4YmEzYzExOTcxZTg2ODlVTEwsIDB4MmQ2OTc4MjIzMzNjMTEwZlVMTCwgMHgxNTMxMzgxMjFiMWMwOTA3VUxMLAorCTB4NmFmZDExYzUyOTg2ZWNhZlVMTCwgMHhkYjliOGIyMDMwY2IxMGZiVUxMLCAweDM4NTg0MDMwMjgyMDE4MDhVTEwsCisJMHg2Yjk3YTg3ZTQxNTQzZjE1VUxMLCAweDIzN2Y2ODJlMzkzNDE3MGRVTEwsIDB4MWMyYzIwMTgxNDEwMGMwNFVMTCwKKwkweDA3MGIwODA2MDUwNDAzMDFVTEwsIDB4MjFhYjA3NDVlOThkYWM2NFVMTCwgMHgyN2NhYjZmODg0NWI3Y2RmVUxMLAorCTB4NWYwZDk3MjliM2M1OWE3NlVMTCwgMHg3MjY0ZWYwYjgwZjk4Yjc5VUxMLCAweDI5ZGNhNmY0OGU1MzdhZGRVTEwsCisJMHhiM2IyZjU4ZWM5ZjQ0NzNkVUxMLCAweDYyOGFiMDc0NGU1ODNhMTZVTEwsIDB4YmRhNGU1ODJjM2ZjNDEzZlVMTCwKKwkweDg1ZmNhNWIyZWJkYzU5MzdVTEwsIDB4MWVmODRmNzNjNGE5Yjc2ZFVMTCwgMHhhODk1ZGQ5MGQ4ZTA0ODM4VUxMLAorCTB4MDg3N2ExYjE2N2RlZDZiOVVMTCwgMHg0NDJhYmYzN2EyZDE5NTczVUxMLCAweGE1M2QxYjRjNmE4MzI2ZTlVTEwsCisJMHg4YmVhYjViZWUxZDQ1ZjM1VUxMLCAweGI2NmQ5MmUzMWM0OWZmNTVVTEwsIDB4NGEzY2FmM2JhOGQ5OTM3MVVMTCwKKwkweDdjNzJmZjA3OGFmMThkN2JVTEwsIDB4ODM5ZDE0MGY4NjBhODk4Y1VMTCwgMHg0MzIxYjczMWE3ZDU5NjcyVUxMLAorCTB4OWZiMTM0MTc5MjFhODU4OFVMTCwgMHhmOGU0ZTMwZTA5ZmYwN2Y2VUxMLCAweGQ2MzM0ZGZjODJhODdlMmFVTEwsCisJMHhiYWFmZWQ4NGM2Zjg0MjNlVUxMLCAweDg3MjhjYWQ5M2I2NWUyNWVVTEwsIDB4ZjU0YzI1ZDJiYjljNjkyN1VMTCwKKwkweGNmYzAwYTg5NDMwNWNhNDZVTEwsIDB4MjQ3NDYwMjgzYzMwMTQwY1VMTCwgMHgyNmEwMGY0M2VjODlhZjY1VUxMLAorCTB4MDVkZjY3NmRkNWJkYjg2OFVMTCwgMHgzYThjMmY1YmY4OTlhMzYxVUxMLCAweDA5MWQxODBhMGYwYzA1MDNVTEwsCisJMHg3ZDE4NDZiY2UyMjM1ZWMxVUxMLCAweGI4N2I4MmVmMTY0MWY5NTdVTEwsIDB4MTg5OWZlY2VhOTdmNjdkNlVMTCwKKwkweDM1ZjA4NmVjOWE0Mzc2ZDlVTEwsIDB4OTUxMmZhY2QyNTdkZTg1OFVMTCwgMHgzMmZiOGVlYTlmNDc3NWQ4VUxMLAorCTB4MmZiZDE3NDllMzg1YWE2NlVMTCwgMHgxZjkyZjZjOGFjN2I2NGQ3VUxMLCAweGE2ODNjZDljZDJlODRlM2FVTEwsCisJMHg0MjRiMGU4YWNmMDc0NWM4VUxMLCAweGI0YjlmZDg4Y2NmMDQ0M2NVTEwsIDB4ZGM5MDgzMjYzNWNmMTNmYVVMTCwKKwkweGM1NjNjNDUzZjQ2MmE3OTZVTEwsIDB4NTJhNTUxZjUwMWE2ZjRhN1VMTCwgMHhlZjAxYjQ3N2MyNWFiNTk4VUxMLAorCTB4YmUxYTMzNTI3Yjk3MjllY1VMTCwgMHgwZjdjYTliNzYyZGFkNWI4VUxMLCAweDZmMjI3NmE4ZmMzYjU0YzdVTEwsCisJMHg2ZGY2MTljMzJjODJlZmFlVUxMLCAweDAyZDQ2ZjZiZDBiOWJiNjlVTEwsIDB4ZWNiZjYyYTc3YTMxZGQ0YlVMTCwKKwkweDc2ZDEzMWRkM2Q5NmUwYWJVTEwsIDB4NzhjNzIxZDEzNzllZTZhOVVMTCwgMHgyOGI2MWY0ZmU2ODFhOTY3VUxMLAorCTB4MzY0ZTUwM2MyMjI4MWUwYVVMTCwgMHhjOGNiMDI4ZjQ2MDFjOTQ3VUxMLCAweGU0YzhjMzE2MWRlZjBiZjJVTEwsCisJMHgyYzAzYzE5OTViZWVjMmI1VUxMLCAweGVlNmIwZGNjYWE4ODY2MjJVTEwsIDB4ODE0OTdiNjQ1NmIzMzJlNVVMTCwKKwkweGIwMGMyMzVlNzE5ZjJmZWVVTEwsIDB4MWQ0Njk5YTM3Y2MyZGZiZVVMTCwgMHhkMTM4NDVmYTg3YWM3ZDJiVUxMLAorCTB4YTBlMjdjMjFiZjNlOWU4MVVMTCwgMHg3ZWE2OTA2YzVhNDgzNjEyVUxMLCAweGFlZjQ2YzJkYjUzNjk4ODNVTEwsCisJMHg0MWY1ZDg1YTc3NmMyZDFiVUxMLCAweDJhNjI3MDI0MzYzODEyMGVVTEwsIDB4ZTk2MDA1Y2FhZjhjNjUyM1VMTCwKKwkweGYxZjlmYjA0MDZmMzAyZjVVTEwsIDB4YzZkZDEyODM0YzA5Y2Y0NVVMTCwgMHhlNzc2MTVjNmE1ODQ2MzIxVUxMLAorCTB4NTA3MTNlOWVkMTFmNGZjZVVMTCwgMHhlMmE5NzJhYjcwMzlkYjQ5VUxMLCAweGM0MDk3ZGU4OWNiMDc0MmNVTEwsCisJMHhkNThkOWIyYzNhYzMxNmY5VUxMLCAweDg4NTQ2MzZlNTliZjM3ZTZVTEwsIDB4MjUxZWQ5OTM1NGUyYzdiNlVMTCwKKwkweGQ4MjU1ZGYwODhhMDc4MjhVTEwsIDB4NjU4MWI4NzI0YjVjMzkxN1VMTCwgMHhhOWZmNjQyYmIwMzI5YjgyVUxMLAorCTB4NDZmZWQwNWM3MjY4MmUxYVVMTCwgMHg5NmFjMmMxZDlkMTY4MDhiVUxMLCAweGMwYmNhMzNlMjFkZjFmZmVVTEwsCisJMHg5MWE3MjQxYjk4MTI4MzhhVUxMLCAweDNmNTM0ODM2MmQyNDFiMDlVTEwsIDB4NDU0MDA2OGNjYTAzNDZjOVVMTCwKKwkweGIyZDg0YzM1YTEyNjk0ODdVTEwsIDB4Zjc5ODRhYjk2YjI1ZDI0ZVVMTCwgMHg5ZDY1NWI3YzQyYTMzZWUxVUxMLAorCTB4Y2ExZjZkZTQ5NmI4NzIyZVVMTCwgMHg4NjQyNzM2MjUzYjczMWU0VUxMLCAweDlhNmU1MzdhNDdhNzNkZTBVTEwsCisJMHhhYjJiMGI0MDYwOGIyMGViVUxMLCAweGQ3NTlmNDQ3ZWE3YWFkOTBVTEwsIDB4NWJiODQ5ZmYwZWFhZjFhNFVMTCwKKwkweDVhZDJmMDQ0NjY3ODIyMWVVTEwsIDB4YmNjZTVjMzlhYjJlOTI4NVVMTCwgMHgzZDg3Mjc1ZGZkOWRhMDYwVUxMLAorCTB4MDAwMDAwMDAwMDAwMDAwMFVMTCwgMHhmYjVhMzVkZWIxOTQ2ZjI1VUxMLCAweGY2ZjJmMzAyMDNmNzAxZjRVTEwsCisJMHhlZGQ1ZGIxYzEyZTMwZWYxVUxMLCAweGNiNzVkNDVmZmU2YWExOTRVTEwsIDB4MzE0NTU4M2EyNzJjMWQwYlVMTCwKKwkweDhmNWY2YjY4NWNiYjM0ZTdVTEwsIDB4NTYxMDhmMjNiY2M5OWY3NVVMTCwgMHhiNzA3MmI1ODc0OWIyY2VmVUxMLAorCTB4OGNlMWJkYjhlNGQwNWMzNFVMTCwgMHg5N2M2OTVhNmY1YzQ1MzMxVUxMLCAweDE2OGZlZWMyYTM3NzYxZDRVTEwsCisJMHgwYWEzY2VkYWI3Njc2ZGQwVUxMLCAweGI1ZDM0NDMzYTQyMjk3ODZVTEwsIDB4Njc1NWQ3MTk5YmU1ODI3ZVVMTCwKKwkweDY0ZWIwMWM5MjM4ZWVhYWRVTEwsIDB4YzlhMWJiMzQyZWQzMWFmZFVMTCwgMHhkZjJlNTVmNjhkYTQ3YjI5VUxMLAorCTB4OTBjZDlkYTBmMGMwNTAzMFVMTCwgMHhhMTg4YzU5YWQ3ZWM0ZDNiVUxMLCAweGZhMzA4YzY1ZDk0NmJjOWZVTEwsCisJMHhkMjg2OTMyYTNmYzcxNWY4VUxMLCAweDY4Mjk3ZWFlZjkzZjU3YzZVTEwsIDB4NzlhZDk4NmE1ZjRjMzUxM1VMTCwKKwkweDEyM2EzMDE0MWUxODBhMDZVTEwsIDB4MWIyNzI4MWUxMTE0MGYwNVVMTCwgMHg2MTM0NjZhNGY2MzM1MmM1VUxMLAorCTB4NzdiYjg4NjY1NTQ0MzMxMVVMTCwgMHg1ODA2OWYyZmI2YzE5OTc3VUxMLCAweDY5NDNjNzE1OTFlZDg0N2NVTEwsCisJMHg3Yjc5ZjcwMThmZjU4ZTdhVUxMLCAweDc1NmZlNzBkODVmZDg4NzhVTEwsIDB4ODJmN2FkYjRlZWQ4NWEzNlVMTCwKKwkweDU0YzRlMDQ4NmM3MDI0MWNVTEwsIDB4YWY5ZWQ1OTZkZGU0NGIzOVVMTCwgMHg5MjE5ZjJjYjIwNzllYjU5VUxMLAorCTB4NDhlOGMwNTA3ODYwMjgxOFVMTCwgMHhiZjcwOGFlOTEzNDVmYTU2VUxMLCAweDNlMzlmMThkNDVmNmM4YjNVTEwsCisJMHgzNzI0ZTk4NzRhZmFjZGIwVUxMLCAweGZjNTEzZGQ4YjQ5MDZjMjRVTEwsIDB4ZTA3ZDFkYzBhMDgwNjAyMFVMTCwKKwkweDM5MzJmOThiNDBmMmNiYjJVTEwsIDB4ZDk0ZmU0NGJlMDcyYWI5MlVMTCwgMHg0ZTg5NzFlZDE1YjZmOGEzVUxMLAorCTB4N2ExMzRlYmFlNzI3NWRjMFVMTCwgMHhjMWQ2MWE4NTQ5MGRjYzQ0VUxMLCAweDMzOTEzNzUxZjc5NWE2NjJVTEwsCisJMHg3MGIwODA2MDUwNDAzMDEwVUxMLCAweDJiMDhjOTlmNWVlYWMxYjRVTEwsIDB4YmJjNTU0M2ZhZTJhOTE4NFVMTCwKKwkweGQ0ZTcyMjk3NTIxMWM1NDNVTEwsIDB4ZGU0NGVjNGRlNTc2YTg5M1VMTCwgMHg3NDA1NWViNmVkMmY1YmMyVUxMLAorCTB4ZWJiNDZhYTE3ZjM1ZGU0YVVMTCwgMHgxNDViODFhOTczY2VkYWJkVUxMLCAweDhhODAwYzA1ODkwNjhjOGZVTEwsCisJMHhjMzAyNzVlZTk5YjQ3NzJkVUxMLCAweDEzNTA4OWFmNzZjYWQ5YmNVTEwsIDB4ZjMyZDk0NmZkNjRhYjk5Y1VMTCwKKwkweDBiYzk3NzYxZGZiNWJlNmFVTEwsIDB4ZGRmYTNhOWQ1ZDFkYzA0MFVMTCwgMHg1NzdhMzY5OGQ0MWI0Y2NmVUxMLAorCTB4NDk4Mjc5ZWIxMGIyZmJhMlVMTCwgMHhhN2U5NzQyN2JhM2E5ZDgwVUxMLCAweGYwOTM0MmJmNmUyMWQxNGZVTEwsCisJMHg1ZGQ5Zjg0MjYzN2MyMTFmVUxMLCAweDRjNWQxZTg2YzUwZjQzY2FVTEwsIDB4NzFkYTM5ZGIzODkyZTNhYVVMTCwKKwkweGQzZWMyYTkxNTcxNWM2NDJVTEwKK307CisKK3N0YXRpYyBjb25zdCB1NjQgY1tLSEFaQURfUk9VTkRTICsgMV0gPSB7CisJMHhiYTU0MmY3NDUzZDNkMjRkVUxMLCAweDUwYWM4ZGJmNzA1MjlhNGNVTEwsIDB4ZWFkNTk3ZDEzMzUxNWJhNlVMTCwKKwkweGRlNDhhODk5ZGIzMmI3ZmNVTEwsIDB4ZTM5ZTkxOWJlMmJiNDE2ZVVMTCwgMHhhNWNiNmI5NWExZjNiMTAyVUxMLAorCTB4Y2NjNDFkMTRjMzYzZGE1ZFVMTCwgMHg1ZmRjN2RjZDdmNWE2YzVjVUxMLCAweGY3MjZmZmVkZTg5ZDZmOGVVTEwKK307CisKK3N0YXRpYyBpbnQga2hhemFkX3NldGtleSh2b2lkICpjdHhfYXJnLCBjb25zdCB1OCAqaW5fa2V5LAorICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQga2V5X2xlbiwgdTMyICpmbGFncykKK3sKKworCXN0cnVjdCBraGF6YWRfY3R4ICpjdHggPSBjdHhfYXJnOworCWludCByOworCWNvbnN0IHU2NCAqUyA9IFQ3OworCXU2NCBLMiwgSzE7CisJCisJaWYgKGtleV9sZW4gIT0gMTYpCisJeworCQkqZmxhZ3MgfD0gQ1JZUFRPX1RGTV9SRVNfQkFEX0tFWV9MRU47CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCUsyID0gKCh1NjQpaW5fa2V5WyAwXSA8PCA1NikgXgorCSAgICAgKCh1NjQpaW5fa2V5WyAxXSA8PCA0OCkgXgorCSAgICAgKCh1NjQpaW5fa2V5WyAyXSA8PCA0MCkgXgorCSAgICAgKCh1NjQpaW5fa2V5WyAzXSA8PCAzMikgXgorCSAgICAgKCh1NjQpaW5fa2V5WyA0XSA8PCAyNCkgXgorCSAgICAgKCh1NjQpaW5fa2V5WyA1XSA8PCAxNikgXgorCSAgICAgKCh1NjQpaW5fa2V5WyA2XSA8PCAgOCkgXgorCSAgICAgKCh1NjQpaW5fa2V5WyA3XSAgICAgICk7CisJSzEgPSAoKHU2NClpbl9rZXlbIDhdIDw8IDU2KSBeCisJICAgICAoKHU2NClpbl9rZXlbIDldIDw8IDQ4KSBeCisJICAgICAoKHU2NClpbl9rZXlbMTBdIDw8IDQwKSBeCisJICAgICAoKHU2NClpbl9rZXlbMTFdIDw8IDMyKSBeCisJICAgICAoKHU2NClpbl9rZXlbMTJdIDw8IDI0KSBeCisJICAgICAoKHU2NClpbl9rZXlbMTNdIDw8IDE2KSBeCisJICAgICAoKHU2NClpbl9rZXlbMTRdIDw8ICA4KSBeCisJICAgICAoKHU2NClpbl9rZXlbMTVdICAgICAgKTsKKworCS8qIHNldHVwIHRoZSBlbmNyeXB0IGtleSAqLworCWZvciAociA9IDA7IHIgPD0gS0hBWkFEX1JPVU5EUzsgcisrKSB7CisJCWN0eC0+RVtyXSA9IFQwWyhpbnQpKEsxID4+IDU2KSAgICAgICBdIF4KKwkJCSAgICBUMVsoaW50KShLMSA+PiA0OCkgJiAweGZmXSBeCisJCQkgICAgVDJbKGludCkoSzEgPj4gNDApICYgMHhmZl0gXgorCQkJICAgIFQzWyhpbnQpKEsxID4+IDMyKSAmIDB4ZmZdIF4KKwkJCSAgICBUNFsoaW50KShLMSA+PiAyNCkgJiAweGZmXSBeCisJCQkgICAgVDVbKGludCkoSzEgPj4gMTYpICYgMHhmZl0gXgorCQkJICAgIFQ2WyhpbnQpKEsxID4+ICA4KSAmIDB4ZmZdIF4KKwkJCSAgICBUN1soaW50KShLMSAgICAgICkgJiAweGZmXSBeCisJCQkgICAgY1tyXSBeIEsyOworCQlLMiA9IEsxOyAKKwkJSzEgPSBjdHgtPkVbcl07CisJfQorCS8qIFNldHVwIHRoZSBkZWNyeXB0IGtleSAqLworCWN0eC0+RFswXSA9IGN0eC0+RVtLSEFaQURfUk9VTkRTXTsKKwlmb3IgKHIgPSAxOyByIDwgS0hBWkFEX1JPVU5EUzsgcisrKSB7CisJCUsxID0gY3R4LT5FW0tIQVpBRF9ST1VORFMgLSByXTsKKwkJY3R4LT5EW3JdID0gVDBbKGludClTWyhpbnQpKEsxID4+IDU2KSAgICAgICBdICYgMHhmZl0gXgorCQkJICAgIFQxWyhpbnQpU1soaW50KShLMSA+PiA0OCkgJiAweGZmXSAmIDB4ZmZdIF4KKwkJCSAgICBUMlsoaW50KVNbKGludCkoSzEgPj4gNDApICYgMHhmZl0gJiAweGZmXSBeCisJCQkgICAgVDNbKGludClTWyhpbnQpKEsxID4+IDMyKSAmIDB4ZmZdICYgMHhmZl0gXgorCQkJICAgIFQ0WyhpbnQpU1soaW50KShLMSA+PiAyNCkgJiAweGZmXSAmIDB4ZmZdIF4KKwkJCSAgICBUNVsoaW50KVNbKGludCkoSzEgPj4gMTYpICYgMHhmZl0gJiAweGZmXSBeCisJCQkgICAgVDZbKGludClTWyhpbnQpKEsxID4+ICA4KSAmIDB4ZmZdICYgMHhmZl0gXgorCQkJICAgIFQ3WyhpbnQpU1soaW50KShLMSAgICAgICkgJiAweGZmXSAmIDB4ZmZdOworCX0KKwljdHgtPkRbS0hBWkFEX1JPVU5EU10gPSBjdHgtPkVbMF07CisKKwlyZXR1cm4gMDsKKworfQorCitzdGF0aWMgdm9pZCBraGF6YWRfY3J5cHQoY29uc3QgdTY0IHJvdW5kS2V5W0tIQVpBRF9ST1VORFMgKyAxXSwKKwkJdTggKmNpcGhlcnRleHQsIGNvbnN0IHU4ICpwbGFpbnRleHQpCit7CisKKwlpbnQgcjsKKwl1NjQgc3RhdGU7CisKKwlzdGF0ZSA9ICgodTY0KXBsYWludGV4dFswXSA8PCA1NikgXgorCQkoKHU2NClwbGFpbnRleHRbMV0gPDwgNDgpIF4KKwkJKCh1NjQpcGxhaW50ZXh0WzJdIDw8IDQwKSBeCisJCSgodTY0KXBsYWludGV4dFszXSA8PCAzMikgXgorCQkoKHU2NClwbGFpbnRleHRbNF0gPDwgMjQpIF4KKwkJKCh1NjQpcGxhaW50ZXh0WzVdIDw8IDE2KSBeCisJCSgodTY0KXBsYWludGV4dFs2XSA8PCAgOCkgXgorCQkoKHU2NClwbGFpbnRleHRbN10gICAgICApIF4KKwkJcm91bmRLZXlbMF07CisKKwlmb3IgKHIgPSAxOyByIDwgS0hBWkFEX1JPVU5EUzsgcisrKSB7CisJCXN0YXRlID0gVDBbKGludCkoc3RhdGUgPj4gNTYpICAgICAgIF0gXgorCQkJVDFbKGludCkoc3RhdGUgPj4gNDgpICYgMHhmZl0gXgorCQkJVDJbKGludCkoc3RhdGUgPj4gNDApICYgMHhmZl0gXgorCQkJVDNbKGludCkoc3RhdGUgPj4gMzIpICYgMHhmZl0gXgorCQkJVDRbKGludCkoc3RhdGUgPj4gMjQpICYgMHhmZl0gXgorCQkJVDVbKGludCkoc3RhdGUgPj4gMTYpICYgMHhmZl0gXgorCQkJVDZbKGludCkoc3RhdGUgPj4gIDgpICYgMHhmZl0gXgorCQkJVDdbKGludCkoc3RhdGUgICAgICApICYgMHhmZl0gXgorCQkJcm91bmRLZXlbcl07CisgICAgCX0KKworCXN0YXRlID0gKFQwWyhpbnQpKHN0YXRlID4+IDU2KSAgICAgICBdICYgMHhmZjAwMDAwMDAwMDAwMDAwVUxMKSBeCisJCShUMVsoaW50KShzdGF0ZSA+PiA0OCkgJiAweGZmXSAmIDB4MDBmZjAwMDAwMDAwMDAwMFVMTCkgXgorCQkoVDJbKGludCkoc3RhdGUgPj4gNDApICYgMHhmZl0gJiAweDAwMDBmZjAwMDAwMDAwMDBVTEwpIF4KKwkJKFQzWyhpbnQpKHN0YXRlID4+IDMyKSAmIDB4ZmZdICYgMHgwMDAwMDBmZjAwMDAwMDAwVUxMKSBeCisJCShUNFsoaW50KShzdGF0ZSA+PiAyNCkgJiAweGZmXSAmIDB4MDAwMDAwMDBmZjAwMDAwMFVMTCkgXgorCQkoVDVbKGludCkoc3RhdGUgPj4gMTYpICYgMHhmZl0gJiAweDAwMDAwMDAwMDBmZjAwMDBVTEwpIF4KKwkJKFQ2WyhpbnQpKHN0YXRlID4+ICA4KSAmIDB4ZmZdICYgMHgwMDAwMDAwMDAwMDBmZjAwVUxMKSBeCisJCShUN1soaW50KShzdGF0ZSAgICAgICkgJiAweGZmXSAmIDB4MDAwMDAwMDAwMDAwMDBmZlVMTCkgXgorCQlyb3VuZEtleVtLSEFaQURfUk9VTkRTXTsKKworCWNpcGhlcnRleHRbMF0gPSAodTgpKHN0YXRlID4+IDU2KTsKKwljaXBoZXJ0ZXh0WzFdID0gKHU4KShzdGF0ZSA+PiA0OCk7CisJY2lwaGVydGV4dFsyXSA9ICh1OCkoc3RhdGUgPj4gNDApOworCWNpcGhlcnRleHRbM10gPSAodTgpKHN0YXRlID4+IDMyKTsKKwljaXBoZXJ0ZXh0WzRdID0gKHU4KShzdGF0ZSA+PiAyNCk7CisJY2lwaGVydGV4dFs1XSA9ICh1OCkoc3RhdGUgPj4gMTYpOworCWNpcGhlcnRleHRbNl0gPSAodTgpKHN0YXRlID4+ICA4KTsKKwljaXBoZXJ0ZXh0WzddID0gKHU4KShzdGF0ZSAgICAgICk7CisKK30KKworc3RhdGljIHZvaWQga2hhemFkX2VuY3J5cHQodm9pZCAqY3R4X2FyZywgdTggKmRzdCwgY29uc3QgdTggKnNyYykKK3sKKwlzdHJ1Y3Qga2hhemFkX2N0eCAqY3R4ID0gY3R4X2FyZzsKKwlraGF6YWRfY3J5cHQoY3R4LT5FLCBkc3QsIHNyYyk7Cit9CisKK3N0YXRpYyB2b2lkIGtoYXphZF9kZWNyeXB0KHZvaWQgKmN0eF9hcmcsIHU4ICpkc3QsIGNvbnN0IHU4ICpzcmMpCit7CisJc3RydWN0IGtoYXphZF9jdHggKmN0eCA9IGN0eF9hcmc7CisJa2hhemFkX2NyeXB0KGN0eC0+RCwgZHN0LCBzcmMpOworfQorCitzdGF0aWMgc3RydWN0IGNyeXB0b19hbGcga2hhemFkX2FsZyA9IHsKKwkuY3JhX25hbWUJCT0JImtoYXphZCIsCisJLmNyYV9mbGFncwkJPQlDUllQVE9fQUxHX1RZUEVfQ0lQSEVSLAorCS5jcmFfYmxvY2tzaXplCQk9CUtIQVpBRF9CTE9DS19TSVpFLAorCS5jcmFfY3R4c2l6ZQkJPQlzaXplb2YgKHN0cnVjdCBraGF6YWRfY3R4KSwKKwkuY3JhX21vZHVsZQkJPQlUSElTX01PRFVMRSwKKwkuY3JhX2xpc3QJCT0JTElTVF9IRUFEX0lOSVQoa2hhemFkX2FsZy5jcmFfbGlzdCksCisJLmNyYV91CQkJPQl7IC5jaXBoZXIgPSB7CisJLmNpYV9taW5fa2V5c2l6ZQk9CUtIQVpBRF9LRVlfU0laRSwKKwkuY2lhX21heF9rZXlzaXplCT0JS0hBWkFEX0tFWV9TSVpFLAorCS5jaWFfc2V0a2V5CQk9IAlraGF6YWRfc2V0a2V5LAorCS5jaWFfZW5jcnlwdAkJPQlraGF6YWRfZW5jcnlwdCwKKwkuY2lhX2RlY3J5cHQJCT0Ja2hhemFkX2RlY3J5cHQgfSB9Cit9OworCitzdGF0aWMgaW50IF9faW5pdCBpbml0KHZvaWQpCit7CisJaW50IHJldCA9IDA7CisJCisJcmV0ID0gY3J5cHRvX3JlZ2lzdGVyX2FsZygma2hhemFkX2FsZyk7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQgX19leGl0IGZpbmkodm9pZCkKK3sKKwljcnlwdG9fdW5yZWdpc3Rlcl9hbGcoJmtoYXphZF9hbGcpOworfQorCisKK21vZHVsZV9pbml0KGluaXQpOworbW9kdWxlX2V4aXQoZmluaSk7CisKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9ERVNDUklQVElPTigiS2hhemFkIENyeXB0b2dyYXBoaWMgQWxnb3JpdGhtIik7CmRpZmYgLS1naXQgYS9jcnlwdG8vbWQ0LmMgYi9jcnlwdG8vbWQ0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmVmNmE5ZQotLS0gL2Rldi9udWxsCisrKyBiL2NyeXB0by9tZDQuYwpAQCAtMCwwICsxLDI1MCBAQAorLyogCisgKiBDcnlwdG9ncmFwaGljIEFQSS4KKyAqCisgKiBNRDQgTWVzc2FnZSBEaWdlc3QgQWxnb3JpdGhtIChSRkMxMzIwKS4KKyAqCisgKiBJbXBsZW1lbnRhdGlvbiBkZXJpdmVkIGZyb20gQW5kcmV3IFRyaWRnZWxsIGFuZCBTdGV2ZSBGcmVuY2gncworICogQ0lGUyBNRDQgaW1wbGVtZW50YXRpb24sIGFuZCB0aGUgY3J5cHRvYXBpIGltcGxlbWVudGF0aW9uCisgKiBvcmlnaW5hbGx5IGJhc2VkIG9uIHRoZSBwdWJsaWMgZG9tYWluIGltcGxlbWVudGF0aW9uIHdyaXR0ZW4KKyAqIGJ5IENvbGluIFBsdW1iIGluIDE5OTMuCisgKgorICogQ29weXJpZ2h0IChjKSBBbmRyZXcgVHJpZGdlbGwgMTk5Ny0xOTk4LgorICogTW9kaWZpZWQgYnkgU3RldmUgRnJlbmNoIChzZnJlbmNoQHVzLmlibS5jb20pIDIwMDIKKyAqIENvcHlyaWdodCAoYykgQ3J5cHRvYXBpIGRldmVsb3BlcnMuCisgKiBDb3B5cmlnaHQgKGMpIDIwMDIgRGF2aWQgUy4gTWlsbGVyIChkYXZlbUByZWRoYXQuY29tKQorICogQ29weXJpZ2h0IChjKSAyMDAyIEphbWVzIE1vcnJpcyA8am1vcnJpc0BpbnRlcmNvZGUuY29tLmF1PgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICovCisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L2NyeXB0by5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L3N0cmluZy5oPgorI2luY2x1ZGUgPGFzbS9ieXRlb3JkZXIuaD4KKworI2RlZmluZSBNRDRfRElHRVNUX1NJWkUJCTE2CisjZGVmaW5lIE1ENF9ITUFDX0JMT0NLX1NJWkUJNjQKKyNkZWZpbmUgTUQ0X0JMT0NLX1dPUkRTCQkxNgorI2RlZmluZSBNRDRfSEFTSF9XT1JEUwkJNAorCitzdHJ1Y3QgbWQ0X2N0eCB7CisJdTMyIGhhc2hbTUQ0X0hBU0hfV09SRFNdOworCXUzMiBibG9ja1tNRDRfQkxPQ0tfV09SRFNdOworCXU2NCBieXRlX2NvdW50OworfTsKKworc3RhdGljIGlubGluZSB1MzIgbHNoaWZ0KHUzMiB4LCB1bnNpZ25lZCBpbnQgcykKK3sKKwl4ICY9IDB4RkZGRkZGRkY7CisJcmV0dXJuICgoeCA8PCBzKSAmIDB4RkZGRkZGRkYpIHwgKHggPj4gKDMyIC0gcykpOworfQorCitzdGF0aWMgaW5saW5lIHUzMiBGKHUzMiB4LCB1MzIgeSwgdTMyIHopCit7CisJcmV0dXJuICh4ICYgeSkgfCAoKH54KSAmIHopOworfQorCitzdGF0aWMgaW5saW5lIHUzMiBHKHUzMiB4LCB1MzIgeSwgdTMyIHopCit7CisJcmV0dXJuICh4ICYgeSkgfCAoeCAmIHopIHwgKHkgJiB6KTsKK30KKworc3RhdGljIGlubGluZSB1MzIgSCh1MzIgeCwgdTMyIHksIHUzMiB6KQoreworCXJldHVybiB4IF4geSBeIHo7Cit9CisgICAgICAgICAgICAgICAgICAgICAgICAKKyNkZWZpbmUgUk9VTkQxKGEsYixjLGQsayxzKSAoYSA9IGxzaGlmdChhICsgRihiLGMsZCkgKyBrLCBzKSkKKyNkZWZpbmUgUk9VTkQyKGEsYixjLGQsayxzKSAoYSA9IGxzaGlmdChhICsgRyhiLGMsZCkgKyBrICsgKHUzMikweDVBODI3OTk5LHMpKQorI2RlZmluZSBST1VORDMoYSxiLGMsZCxrLHMpIChhID0gbHNoaWZ0KGEgKyBIKGIsYyxkKSArIGsgKyAodTMyKTB4NkVEOUVCQTEscykpCisKKy8qIFhYWDogdGhpcyBzdHVmZiBjYW4gYmUgb3B0aW1pemVkICovCitzdGF0aWMgaW5saW5lIHZvaWQgbGUzMl90b19jcHVfYXJyYXkodTMyICpidWYsIHVuc2lnbmVkIGludCB3b3JkcykKK3sKKwl3aGlsZSAod29yZHMtLSkgeworCQlfX2xlMzJfdG9fY3B1cyhidWYpOworCQlidWYrKzsKKwl9Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBjcHVfdG9fbGUzMl9hcnJheSh1MzIgKmJ1ZiwgdW5zaWduZWQgaW50IHdvcmRzKQoreworCXdoaWxlICh3b3Jkcy0tKSB7CisJCV9fY3B1X3RvX2xlMzJzKGJ1Zik7CisJCWJ1ZisrOworCX0KK30KKworc3RhdGljIHZvaWQgbWQ0X3RyYW5zZm9ybSh1MzIgKmhhc2gsIHUzMiBjb25zdCAqaW4pCit7CisJdTMyIGEsIGIsIGMsIGQ7CisKKwlhID0gaGFzaFswXTsKKwliID0gaGFzaFsxXTsKKwljID0gaGFzaFsyXTsKKwlkID0gaGFzaFszXTsKKworCVJPVU5EMShhLCBiLCBjLCBkLCBpblswXSwgMyk7CisJUk9VTkQxKGQsIGEsIGIsIGMsIGluWzFdLCA3KTsKKwlST1VORDEoYywgZCwgYSwgYiwgaW5bMl0sIDExKTsKKwlST1VORDEoYiwgYywgZCwgYSwgaW5bM10sIDE5KTsKKwlST1VORDEoYSwgYiwgYywgZCwgaW5bNF0sIDMpOworCVJPVU5EMShkLCBhLCBiLCBjLCBpbls1XSwgNyk7CisJUk9VTkQxKGMsIGQsIGEsIGIsIGluWzZdLCAxMSk7CisJUk9VTkQxKGIsIGMsIGQsIGEsIGluWzddLCAxOSk7CisJUk9VTkQxKGEsIGIsIGMsIGQsIGluWzhdLCAzKTsKKwlST1VORDEoZCwgYSwgYiwgYywgaW5bOV0sIDcpOworCVJPVU5EMShjLCBkLCBhLCBiLCBpblsxMF0sIDExKTsKKwlST1VORDEoYiwgYywgZCwgYSwgaW5bMTFdLCAxOSk7CisJUk9VTkQxKGEsIGIsIGMsIGQsIGluWzEyXSwgMyk7CisJUk9VTkQxKGQsIGEsIGIsIGMsIGluWzEzXSwgNyk7CisJUk9VTkQxKGMsIGQsIGEsIGIsIGluWzE0XSwgMTEpOworCVJPVU5EMShiLCBjLCBkLCBhLCBpblsxNV0sIDE5KTsKKworCVJPVU5EMihhLCBiLCBjLCBkLGluWyAwXSwgMyk7CisJUk9VTkQyKGQsIGEsIGIsIGMsIGluWzRdLCA1KTsKKwlST1VORDIoYywgZCwgYSwgYiwgaW5bOF0sIDkpOworCVJPVU5EMihiLCBjLCBkLCBhLCBpblsxMl0sIDEzKTsKKwlST1VORDIoYSwgYiwgYywgZCwgaW5bMV0sIDMpOworCVJPVU5EMihkLCBhLCBiLCBjLCBpbls1XSwgNSk7CisJUk9VTkQyKGMsIGQsIGEsIGIsIGluWzldLCA5KTsKKwlST1VORDIoYiwgYywgZCwgYSwgaW5bMTNdLCAxMyk7CisJUk9VTkQyKGEsIGIsIGMsIGQsIGluWzJdLCAzKTsKKwlST1VORDIoZCwgYSwgYiwgYywgaW5bNl0sIDUpOworCVJPVU5EMihjLCBkLCBhLCBiLCBpblsxMF0sIDkpOworCVJPVU5EMihiLCBjLCBkLCBhLCBpblsxNF0sIDEzKTsKKwlST1VORDIoYSwgYiwgYywgZCwgaW5bM10sIDMpOworCVJPVU5EMihkLCBhLCBiLCBjLCBpbls3XSwgNSk7CisJUk9VTkQyKGMsIGQsIGEsIGIsIGluWzExXSwgOSk7CisJUk9VTkQyKGIsIGMsIGQsIGEsIGluWzE1XSwgMTMpOworCisJUk9VTkQzKGEsIGIsIGMsIGQsaW5bIDBdLCAzKTsKKwlST1VORDMoZCwgYSwgYiwgYywgaW5bOF0sIDkpOworCVJPVU5EMyhjLCBkLCBhLCBiLCBpbls0XSwgMTEpOworCVJPVU5EMyhiLCBjLCBkLCBhLCBpblsxMl0sIDE1KTsKKwlST1VORDMoYSwgYiwgYywgZCwgaW5bMl0sIDMpOworCVJPVU5EMyhkLCBhLCBiLCBjLCBpblsxMF0sIDkpOworCVJPVU5EMyhjLCBkLCBhLCBiLCBpbls2XSwgMTEpOworCVJPVU5EMyhiLCBjLCBkLCBhLCBpblsxNF0sIDE1KTsKKwlST1VORDMoYSwgYiwgYywgZCwgaW5bMV0sIDMpOworCVJPVU5EMyhkLCBhLCBiLCBjLCBpbls5XSwgOSk7CisJUk9VTkQzKGMsIGQsIGEsIGIsIGluWzVdLCAxMSk7CisJUk9VTkQzKGIsIGMsIGQsIGEsIGluWzEzXSwgMTUpOworCVJPVU5EMyhhLCBiLCBjLCBkLCBpblszXSwgMyk7CisJUk9VTkQzKGQsIGEsIGIsIGMsIGluWzExXSwgOSk7CisJUk9VTkQzKGMsIGQsIGEsIGIsIGluWzddLCAxMSk7CisJUk9VTkQzKGIsIGMsIGQsIGEsIGluWzE1XSwgMTUpOworCisJaGFzaFswXSArPSBhOworCWhhc2hbMV0gKz0gYjsKKwloYXNoWzJdICs9IGM7CisJaGFzaFszXSArPSBkOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgbWQ0X3RyYW5zZm9ybV9oZWxwZXIoc3RydWN0IG1kNF9jdHggKmN0eCkKK3sKKwlsZTMyX3RvX2NwdV9hcnJheShjdHgtPmJsb2NrLCBzaXplb2YoY3R4LT5ibG9jaykgLyBzaXplb2YodTMyKSk7CisJbWQ0X3RyYW5zZm9ybShjdHgtPmhhc2gsIGN0eC0+YmxvY2spOworfQorCitzdGF0aWMgdm9pZCBtZDRfaW5pdCh2b2lkICpjdHgpCit7CisJc3RydWN0IG1kNF9jdHggKm1jdHggPSBjdHg7CisKKwltY3R4LT5oYXNoWzBdID0gMHg2NzQ1MjMwMTsKKwltY3R4LT5oYXNoWzFdID0gMHhlZmNkYWI4OTsKKwltY3R4LT5oYXNoWzJdID0gMHg5OGJhZGNmZTsKKwltY3R4LT5oYXNoWzNdID0gMHgxMDMyNTQ3NjsKKwltY3R4LT5ieXRlX2NvdW50ID0gMDsKK30KKworc3RhdGljIHZvaWQgbWQ0X3VwZGF0ZSh2b2lkICpjdHgsIGNvbnN0IHU4ICpkYXRhLCB1bnNpZ25lZCBpbnQgbGVuKQoreworCXN0cnVjdCBtZDRfY3R4ICptY3R4ID0gY3R4OworCWNvbnN0IHUzMiBhdmFpbCA9IHNpemVvZihtY3R4LT5ibG9jaykgLSAobWN0eC0+Ynl0ZV9jb3VudCAmIDB4M2YpOworCisJbWN0eC0+Ynl0ZV9jb3VudCArPSBsZW47CisKKwlpZiAoYXZhaWwgPiBsZW4pIHsKKwkJbWVtY3B5KChjaGFyICopbWN0eC0+YmxvY2sgKyAoc2l6ZW9mKG1jdHgtPmJsb2NrKSAtIGF2YWlsKSwKKwkJICAgICAgIGRhdGEsIGxlbik7CisJCXJldHVybjsKKwl9CisKKwltZW1jcHkoKGNoYXIgKiltY3R4LT5ibG9jayArIChzaXplb2YobWN0eC0+YmxvY2spIC0gYXZhaWwpLAorCSAgICAgICBkYXRhLCBhdmFpbCk7CisKKwltZDRfdHJhbnNmb3JtX2hlbHBlcihtY3R4KTsKKwlkYXRhICs9IGF2YWlsOworCWxlbiAtPSBhdmFpbDsKKworCXdoaWxlIChsZW4gPj0gc2l6ZW9mKG1jdHgtPmJsb2NrKSkgeworCQltZW1jcHkobWN0eC0+YmxvY2ssIGRhdGEsIHNpemVvZihtY3R4LT5ibG9jaykpOworCQltZDRfdHJhbnNmb3JtX2hlbHBlcihtY3R4KTsKKwkJZGF0YSArPSBzaXplb2YobWN0eC0+YmxvY2spOworCQlsZW4gLT0gc2l6ZW9mKG1jdHgtPmJsb2NrKTsKKwl9CisKKwltZW1jcHkobWN0eC0+YmxvY2ssIGRhdGEsIGxlbik7Cit9CisKK3N0YXRpYyB2b2lkIG1kNF9maW5hbCh2b2lkICpjdHgsIHU4ICpvdXQpCit7CisJc3RydWN0IG1kNF9jdHggKm1jdHggPSBjdHg7CisJY29uc3QgdW5zaWduZWQgaW50IG9mZnNldCA9IG1jdHgtPmJ5dGVfY291bnQgJiAweDNmOworCWNoYXIgKnAgPSAoY2hhciAqKW1jdHgtPmJsb2NrICsgb2Zmc2V0OworCWludCBwYWRkaW5nID0gNTYgLSAob2Zmc2V0ICsgMSk7CisKKwkqcCsrID0gMHg4MDsKKwlpZiAocGFkZGluZyA8IDApIHsKKwkJbWVtc2V0KHAsIDB4MDAsIHBhZGRpbmcgKyBzaXplb2YgKHU2NCkpOworCQltZDRfdHJhbnNmb3JtX2hlbHBlcihtY3R4KTsKKwkJcCA9IChjaGFyICopbWN0eC0+YmxvY2s7CisJCXBhZGRpbmcgPSA1NjsKKwl9CisKKwltZW1zZXQocCwgMCwgcGFkZGluZyk7CisJbWN0eC0+YmxvY2tbMTRdID0gbWN0eC0+Ynl0ZV9jb3VudCA8PCAzOworCW1jdHgtPmJsb2NrWzE1XSA9IG1jdHgtPmJ5dGVfY291bnQgPj4gMjk7CisJbGUzMl90b19jcHVfYXJyYXkobWN0eC0+YmxvY2ssIChzaXplb2YobWN0eC0+YmxvY2spIC0KKwkgICAgICAgICAgICAgICAgICBzaXplb2YodTY0KSkgLyBzaXplb2YodTMyKSk7CisJbWQ0X3RyYW5zZm9ybShtY3R4LT5oYXNoLCBtY3R4LT5ibG9jayk7CisJY3B1X3RvX2xlMzJfYXJyYXkobWN0eC0+aGFzaCwgc2l6ZW9mKG1jdHgtPmhhc2gpIC8gc2l6ZW9mKHUzMikpOworCW1lbWNweShvdXQsIG1jdHgtPmhhc2gsIHNpemVvZihtY3R4LT5oYXNoKSk7CisJbWVtc2V0KG1jdHgsIDAsIHNpemVvZigqbWN0eCkpOworfQorCitzdGF0aWMgc3RydWN0IGNyeXB0b19hbGcgYWxnID0geworCS5jcmFfbmFtZQk9CSJtZDQiLAorCS5jcmFfZmxhZ3MJPQlDUllQVE9fQUxHX1RZUEVfRElHRVNULAorCS5jcmFfYmxvY2tzaXplCT0JTUQ0X0hNQUNfQkxPQ0tfU0laRSwKKwkuY3JhX2N0eHNpemUJPQlzaXplb2Yoc3RydWN0IG1kNF9jdHgpLAorCS5jcmFfbW9kdWxlCT0JVEhJU19NT0RVTEUsCisJLmNyYV9saXN0ICAgICAgID0gICAgICAgTElTVF9IRUFEX0lOSVQoYWxnLmNyYV9saXN0KSwJCisJLmNyYV91CQk9CXsgLmRpZ2VzdCA9IHsKKwkuZGlhX2RpZ2VzdHNpemUJPQlNRDRfRElHRVNUX1NJWkUsCisJLmRpYV9pbml0ICAgCT0gCW1kNF9pbml0LAorCS5kaWFfdXBkYXRlIAk9CW1kNF91cGRhdGUsCisJLmRpYV9maW5hbCAgCT0JbWQ0X2ZpbmFsIH0gfQorfTsKKworc3RhdGljIGludCBfX2luaXQgaW5pdCh2b2lkKQoreworCXJldHVybiBjcnlwdG9fcmVnaXN0ZXJfYWxnKCZhbGcpOworfQorCitzdGF0aWMgdm9pZCBfX2V4aXQgZmluaSh2b2lkKQoreworCWNyeXB0b191bnJlZ2lzdGVyX2FsZygmYWxnKTsKK30KKworbW9kdWxlX2luaXQoaW5pdCk7Cittb2R1bGVfZXhpdChmaW5pKTsKKworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0RFU0NSSVBUSU9OKCJNRDQgTWVzc2FnZSBEaWdlc3QgQWxnb3JpdGhtIik7CisKZGlmZiAtLWdpdCBhL2NyeXB0by9tZDUuYyBiL2NyeXB0by9tZDUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZWQ0NWY5Ci0tLSAvZGV2L251bGwKKysrIGIvY3J5cHRvL21kNS5jCkBAIC0wLDAgKzEsMjQ0IEBACisvKiAKKyAqIENyeXB0b2dyYXBoaWMgQVBJLgorICoKKyAqIE1ENSBNZXNzYWdlIERpZ2VzdCBBbGdvcml0aG0gKFJGQzEzMjEpLgorICoKKyAqIERlcml2ZWQgZnJvbSBjcnlwdG9hcGkgaW1wbGVtZW50YXRpb24sIG9yaWdpbmFsbHkgYmFzZWQgb24gdGhlCisgKiBwdWJsaWMgZG9tYWluIGltcGxlbWVudGF0aW9uIHdyaXR0ZW4gYnkgQ29saW4gUGx1bWIgaW4gMTk5My4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIENyeXB0b2FwaSBkZXZlbG9wZXJzLgorICogQ29weXJpZ2h0IChjKSAyMDAyIEphbWVzIE1vcnJpcyA8am1vcnJpc0BpbnRlcmNvZGUuY29tLmF1PgorICogCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKKyAqIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgCisgKiBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKi8KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+CisjaW5jbHVkZSA8bGludXgvY3J5cHRvLmg+CisjaW5jbHVkZSA8YXNtL2J5dGVvcmRlci5oPgorCisjZGVmaW5lIE1ENV9ESUdFU1RfU0laRQkJMTYKKyNkZWZpbmUgTUQ1X0hNQUNfQkxPQ0tfU0laRQk2NAorI2RlZmluZSBNRDVfQkxPQ0tfV09SRFMJCTE2CisjZGVmaW5lIE1ENV9IQVNIX1dPUkRTCQk0CisKKyNkZWZpbmUgRjEoeCwgeSwgeikJKHogXiAoeCAmICh5IF4geikpKQorI2RlZmluZSBGMih4LCB5LCB6KQlGMSh6LCB4LCB5KQorI2RlZmluZSBGMyh4LCB5LCB6KQkoeCBeIHkgXiB6KQorI2RlZmluZSBGNCh4LCB5LCB6KQkoeSBeICh4IHwgfnopKQorCisjZGVmaW5lIE1ENVNURVAoZiwgdywgeCwgeSwgeiwgaW4sIHMpIFwKKwkodyArPSBmKHgsIHksIHopICsgaW4sIHcgPSAodzw8cyB8IHc+PigzMi1zKSkgKyB4KQorCitzdHJ1Y3QgbWQ1X2N0eCB7CisJdTMyIGhhc2hbTUQ1X0hBU0hfV09SRFNdOworCXUzMiBibG9ja1tNRDVfQkxPQ0tfV09SRFNdOworCXU2NCBieXRlX2NvdW50OworfTsKKworc3RhdGljIHZvaWQgbWQ1X3RyYW5zZm9ybSh1MzIgKmhhc2gsIHUzMiBjb25zdCAqaW4pCit7CisJdTMyIGEsIGIsIGMsIGQ7CisKKwlhID0gaGFzaFswXTsKKwliID0gaGFzaFsxXTsKKwljID0gaGFzaFsyXTsKKwlkID0gaGFzaFszXTsKKworCU1ENVNURVAoRjEsIGEsIGIsIGMsIGQsIGluWzBdICsgMHhkNzZhYTQ3OCwgNyk7CisJTUQ1U1RFUChGMSwgZCwgYSwgYiwgYywgaW5bMV0gKyAweGU4YzdiNzU2LCAxMik7CisJTUQ1U1RFUChGMSwgYywgZCwgYSwgYiwgaW5bMl0gKyAweDI0MjA3MGRiLCAxNyk7CisJTUQ1U1RFUChGMSwgYiwgYywgZCwgYSwgaW5bM10gKyAweGMxYmRjZWVlLCAyMik7CisJTUQ1U1RFUChGMSwgYSwgYiwgYywgZCwgaW5bNF0gKyAweGY1N2MwZmFmLCA3KTsKKwlNRDVTVEVQKEYxLCBkLCBhLCBiLCBjLCBpbls1XSArIDB4NDc4N2M2MmEsIDEyKTsKKwlNRDVTVEVQKEYxLCBjLCBkLCBhLCBiLCBpbls2XSArIDB4YTgzMDQ2MTMsIDE3KTsKKwlNRDVTVEVQKEYxLCBiLCBjLCBkLCBhLCBpbls3XSArIDB4ZmQ0Njk1MDEsIDIyKTsKKwlNRDVTVEVQKEYxLCBhLCBiLCBjLCBkLCBpbls4XSArIDB4Njk4MDk4ZDgsIDcpOworCU1ENVNURVAoRjEsIGQsIGEsIGIsIGMsIGluWzldICsgMHg4YjQ0ZjdhZiwgMTIpOworCU1ENVNURVAoRjEsIGMsIGQsIGEsIGIsIGluWzEwXSArIDB4ZmZmZjViYjEsIDE3KTsKKwlNRDVTVEVQKEYxLCBiLCBjLCBkLCBhLCBpblsxMV0gKyAweDg5NWNkN2JlLCAyMik7CisJTUQ1U1RFUChGMSwgYSwgYiwgYywgZCwgaW5bMTJdICsgMHg2YjkwMTEyMiwgNyk7CisJTUQ1U1RFUChGMSwgZCwgYSwgYiwgYywgaW5bMTNdICsgMHhmZDk4NzE5MywgMTIpOworCU1ENVNURVAoRjEsIGMsIGQsIGEsIGIsIGluWzE0XSArIDB4YTY3OTQzOGUsIDE3KTsKKwlNRDVTVEVQKEYxLCBiLCBjLCBkLCBhLCBpblsxNV0gKyAweDQ5YjQwODIxLCAyMik7CisKKwlNRDVTVEVQKEYyLCBhLCBiLCBjLCBkLCBpblsxXSArIDB4ZjYxZTI1NjIsIDUpOworCU1ENVNURVAoRjIsIGQsIGEsIGIsIGMsIGluWzZdICsgMHhjMDQwYjM0MCwgOSk7CisJTUQ1U1RFUChGMiwgYywgZCwgYSwgYiwgaW5bMTFdICsgMHgyNjVlNWE1MSwgMTQpOworCU1ENVNURVAoRjIsIGIsIGMsIGQsIGEsIGluWzBdICsgMHhlOWI2YzdhYSwgMjApOworCU1ENVNURVAoRjIsIGEsIGIsIGMsIGQsIGluWzVdICsgMHhkNjJmMTA1ZCwgNSk7CisJTUQ1U1RFUChGMiwgZCwgYSwgYiwgYywgaW5bMTBdICsgMHgwMjQ0MTQ1MywgOSk7CisJTUQ1U1RFUChGMiwgYywgZCwgYSwgYiwgaW5bMTVdICsgMHhkOGExZTY4MSwgMTQpOworCU1ENVNURVAoRjIsIGIsIGMsIGQsIGEsIGluWzRdICsgMHhlN2QzZmJjOCwgMjApOworCU1ENVNURVAoRjIsIGEsIGIsIGMsIGQsIGluWzldICsgMHgyMWUxY2RlNiwgNSk7CisJTUQ1U1RFUChGMiwgZCwgYSwgYiwgYywgaW5bMTRdICsgMHhjMzM3MDdkNiwgOSk7CisJTUQ1U1RFUChGMiwgYywgZCwgYSwgYiwgaW5bM10gKyAweGY0ZDUwZDg3LCAxNCk7CisJTUQ1U1RFUChGMiwgYiwgYywgZCwgYSwgaW5bOF0gKyAweDQ1NWExNGVkLCAyMCk7CisJTUQ1U1RFUChGMiwgYSwgYiwgYywgZCwgaW5bMTNdICsgMHhhOWUzZTkwNSwgNSk7CisJTUQ1U1RFUChGMiwgZCwgYSwgYiwgYywgaW5bMl0gKyAweGZjZWZhM2Y4LCA5KTsKKwlNRDVTVEVQKEYyLCBjLCBkLCBhLCBiLCBpbls3XSArIDB4Njc2ZjAyZDksIDE0KTsKKwlNRDVTVEVQKEYyLCBiLCBjLCBkLCBhLCBpblsxMl0gKyAweDhkMmE0YzhhLCAyMCk7CisKKwlNRDVTVEVQKEYzLCBhLCBiLCBjLCBkLCBpbls1XSArIDB4ZmZmYTM5NDIsIDQpOworCU1ENVNURVAoRjMsIGQsIGEsIGIsIGMsIGluWzhdICsgMHg4NzcxZjY4MSwgMTEpOworCU1ENVNURVAoRjMsIGMsIGQsIGEsIGIsIGluWzExXSArIDB4NmQ5ZDYxMjIsIDE2KTsKKwlNRDVTVEVQKEYzLCBiLCBjLCBkLCBhLCBpblsxNF0gKyAweGZkZTUzODBjLCAyMyk7CisJTUQ1U1RFUChGMywgYSwgYiwgYywgZCwgaW5bMV0gKyAweGE0YmVlYTQ0LCA0KTsKKwlNRDVTVEVQKEYzLCBkLCBhLCBiLCBjLCBpbls0XSArIDB4NGJkZWNmYTksIDExKTsKKwlNRDVTVEVQKEYzLCBjLCBkLCBhLCBiLCBpbls3XSArIDB4ZjZiYjRiNjAsIDE2KTsKKwlNRDVTVEVQKEYzLCBiLCBjLCBkLCBhLCBpblsxMF0gKyAweGJlYmZiYzcwLCAyMyk7CisJTUQ1U1RFUChGMywgYSwgYiwgYywgZCwgaW5bMTNdICsgMHgyODliN2VjNiwgNCk7CisJTUQ1U1RFUChGMywgZCwgYSwgYiwgYywgaW5bMF0gKyAweGVhYTEyN2ZhLCAxMSk7CisJTUQ1U1RFUChGMywgYywgZCwgYSwgYiwgaW5bM10gKyAweGQ0ZWYzMDg1LCAxNik7CisJTUQ1U1RFUChGMywgYiwgYywgZCwgYSwgaW5bNl0gKyAweDA0ODgxZDA1LCAyMyk7CisJTUQ1U1RFUChGMywgYSwgYiwgYywgZCwgaW5bOV0gKyAweGQ5ZDRkMDM5LCA0KTsKKwlNRDVTVEVQKEYzLCBkLCBhLCBiLCBjLCBpblsxMl0gKyAweGU2ZGI5OWU1LCAxMSk7CisJTUQ1U1RFUChGMywgYywgZCwgYSwgYiwgaW5bMTVdICsgMHgxZmEyN2NmOCwgMTYpOworCU1ENVNURVAoRjMsIGIsIGMsIGQsIGEsIGluWzJdICsgMHhjNGFjNTY2NSwgMjMpOworCisJTUQ1U1RFUChGNCwgYSwgYiwgYywgZCwgaW5bMF0gKyAweGY0MjkyMjQ0LCA2KTsKKwlNRDVTVEVQKEY0LCBkLCBhLCBiLCBjLCBpbls3XSArIDB4NDMyYWZmOTcsIDEwKTsKKwlNRDVTVEVQKEY0LCBjLCBkLCBhLCBiLCBpblsxNF0gKyAweGFiOTQyM2E3LCAxNSk7CisJTUQ1U1RFUChGNCwgYiwgYywgZCwgYSwgaW5bNV0gKyAweGZjOTNhMDM5LCAyMSk7CisJTUQ1U1RFUChGNCwgYSwgYiwgYywgZCwgaW5bMTJdICsgMHg2NTViNTljMywgNik7CisJTUQ1U1RFUChGNCwgZCwgYSwgYiwgYywgaW5bM10gKyAweDhmMGNjYzkyLCAxMCk7CisJTUQ1U1RFUChGNCwgYywgZCwgYSwgYiwgaW5bMTBdICsgMHhmZmVmZjQ3ZCwgMTUpOworCU1ENVNURVAoRjQsIGIsIGMsIGQsIGEsIGluWzFdICsgMHg4NTg0NWRkMSwgMjEpOworCU1ENVNURVAoRjQsIGEsIGIsIGMsIGQsIGluWzhdICsgMHg2ZmE4N2U0ZiwgNik7CisJTUQ1U1RFUChGNCwgZCwgYSwgYiwgYywgaW5bMTVdICsgMHhmZTJjZTZlMCwgMTApOworCU1ENVNURVAoRjQsIGMsIGQsIGEsIGIsIGluWzZdICsgMHhhMzAxNDMxNCwgMTUpOworCU1ENVNURVAoRjQsIGIsIGMsIGQsIGEsIGluWzEzXSArIDB4NGUwODExYTEsIDIxKTsKKwlNRDVTVEVQKEY0LCBhLCBiLCBjLCBkLCBpbls0XSArIDB4Zjc1MzdlODIsIDYpOworCU1ENVNURVAoRjQsIGQsIGEsIGIsIGMsIGluWzExXSArIDB4YmQzYWYyMzUsIDEwKTsKKwlNRDVTVEVQKEY0LCBjLCBkLCBhLCBiLCBpblsyXSArIDB4MmFkN2QyYmIsIDE1KTsKKwlNRDVTVEVQKEY0LCBiLCBjLCBkLCBhLCBpbls5XSArIDB4ZWI4NmQzOTEsIDIxKTsKKworCWhhc2hbMF0gKz0gYTsKKwloYXNoWzFdICs9IGI7CisJaGFzaFsyXSArPSBjOworCWhhc2hbM10gKz0gZDsKK30KKworLyogWFhYOiB0aGlzIHN0dWZmIGNhbiBiZSBvcHRpbWl6ZWQgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCBsZTMyX3RvX2NwdV9hcnJheSh1MzIgKmJ1ZiwgdW5zaWduZWQgaW50IHdvcmRzKQoreworCXdoaWxlICh3b3Jkcy0tKSB7CisJCV9fbGUzMl90b19jcHVzKGJ1Zik7CisJCWJ1ZisrOworCX0KK30KKworc3RhdGljIGlubGluZSB2b2lkIGNwdV90b19sZTMyX2FycmF5KHUzMiAqYnVmLCB1bnNpZ25lZCBpbnQgd29yZHMpCit7CisJd2hpbGUgKHdvcmRzLS0pIHsKKwkJX19jcHVfdG9fbGUzMnMoYnVmKTsKKwkJYnVmKys7CisJfQorfQorCitzdGF0aWMgaW5saW5lIHZvaWQgbWQ1X3RyYW5zZm9ybV9oZWxwZXIoc3RydWN0IG1kNV9jdHggKmN0eCkKK3sKKwlsZTMyX3RvX2NwdV9hcnJheShjdHgtPmJsb2NrLCBzaXplb2YoY3R4LT5ibG9jaykgLyBzaXplb2YodTMyKSk7CisJbWQ1X3RyYW5zZm9ybShjdHgtPmhhc2gsIGN0eC0+YmxvY2spOworfQorCitzdGF0aWMgdm9pZCBtZDVfaW5pdCh2b2lkICpjdHgpCit7CisJc3RydWN0IG1kNV9jdHggKm1jdHggPSBjdHg7CisKKwltY3R4LT5oYXNoWzBdID0gMHg2NzQ1MjMwMTsKKwltY3R4LT5oYXNoWzFdID0gMHhlZmNkYWI4OTsKKwltY3R4LT5oYXNoWzJdID0gMHg5OGJhZGNmZTsKKwltY3R4LT5oYXNoWzNdID0gMHgxMDMyNTQ3NjsKKwltY3R4LT5ieXRlX2NvdW50ID0gMDsKK30KKworc3RhdGljIHZvaWQgbWQ1X3VwZGF0ZSh2b2lkICpjdHgsIGNvbnN0IHU4ICpkYXRhLCB1bnNpZ25lZCBpbnQgbGVuKQoreworCXN0cnVjdCBtZDVfY3R4ICptY3R4ID0gY3R4OworCWNvbnN0IHUzMiBhdmFpbCA9IHNpemVvZihtY3R4LT5ibG9jaykgLSAobWN0eC0+Ynl0ZV9jb3VudCAmIDB4M2YpOworCisJbWN0eC0+Ynl0ZV9jb3VudCArPSBsZW47CisKKwlpZiAoYXZhaWwgPiBsZW4pIHsKKwkJbWVtY3B5KChjaGFyICopbWN0eC0+YmxvY2sgKyAoc2l6ZW9mKG1jdHgtPmJsb2NrKSAtIGF2YWlsKSwKKwkJICAgICAgIGRhdGEsIGxlbik7CisJCXJldHVybjsKKwl9CisKKwltZW1jcHkoKGNoYXIgKiltY3R4LT5ibG9jayArIChzaXplb2YobWN0eC0+YmxvY2spIC0gYXZhaWwpLAorCSAgICAgICBkYXRhLCBhdmFpbCk7CisKKwltZDVfdHJhbnNmb3JtX2hlbHBlcihtY3R4KTsKKwlkYXRhICs9IGF2YWlsOworCWxlbiAtPSBhdmFpbDsKKworCXdoaWxlIChsZW4gPj0gc2l6ZW9mKG1jdHgtPmJsb2NrKSkgeworCQltZW1jcHkobWN0eC0+YmxvY2ssIGRhdGEsIHNpemVvZihtY3R4LT5ibG9jaykpOworCQltZDVfdHJhbnNmb3JtX2hlbHBlcihtY3R4KTsKKwkJZGF0YSArPSBzaXplb2YobWN0eC0+YmxvY2spOworCQlsZW4gLT0gc2l6ZW9mKG1jdHgtPmJsb2NrKTsKKwl9CisKKwltZW1jcHkobWN0eC0+YmxvY2ssIGRhdGEsIGxlbik7Cit9CisKK3N0YXRpYyB2b2lkIG1kNV9maW5hbCh2b2lkICpjdHgsIHU4ICpvdXQpCit7CisJc3RydWN0IG1kNV9jdHggKm1jdHggPSBjdHg7CisJY29uc3QgdW5zaWduZWQgaW50IG9mZnNldCA9IG1jdHgtPmJ5dGVfY291bnQgJiAweDNmOworCWNoYXIgKnAgPSAoY2hhciAqKW1jdHgtPmJsb2NrICsgb2Zmc2V0OworCWludCBwYWRkaW5nID0gNTYgLSAob2Zmc2V0ICsgMSk7CisKKwkqcCsrID0gMHg4MDsKKwlpZiAocGFkZGluZyA8IDApIHsKKwkJbWVtc2V0KHAsIDB4MDAsIHBhZGRpbmcgKyBzaXplb2YgKHU2NCkpOworCQltZDVfdHJhbnNmb3JtX2hlbHBlcihtY3R4KTsKKwkJcCA9IChjaGFyICopbWN0eC0+YmxvY2s7CisJCXBhZGRpbmcgPSA1NjsKKwl9CisKKwltZW1zZXQocCwgMCwgcGFkZGluZyk7CisJbWN0eC0+YmxvY2tbMTRdID0gbWN0eC0+Ynl0ZV9jb3VudCA8PCAzOworCW1jdHgtPmJsb2NrWzE1XSA9IG1jdHgtPmJ5dGVfY291bnQgPj4gMjk7CisJbGUzMl90b19jcHVfYXJyYXkobWN0eC0+YmxvY2ssIChzaXplb2YobWN0eC0+YmxvY2spIC0KKwkgICAgICAgICAgICAgICAgICBzaXplb2YodTY0KSkgLyBzaXplb2YodTMyKSk7CisJbWQ1X3RyYW5zZm9ybShtY3R4LT5oYXNoLCBtY3R4LT5ibG9jayk7CisJY3B1X3RvX2xlMzJfYXJyYXkobWN0eC0+aGFzaCwgc2l6ZW9mKG1jdHgtPmhhc2gpIC8gc2l6ZW9mKHUzMikpOworCW1lbWNweShvdXQsIG1jdHgtPmhhc2gsIHNpemVvZihtY3R4LT5oYXNoKSk7CisJbWVtc2V0KG1jdHgsIDAsIHNpemVvZigqbWN0eCkpOworfQorCitzdGF0aWMgc3RydWN0IGNyeXB0b19hbGcgYWxnID0geworCS5jcmFfbmFtZQk9CSJtZDUiLAorCS5jcmFfZmxhZ3MJPQlDUllQVE9fQUxHX1RZUEVfRElHRVNULAorCS5jcmFfYmxvY2tzaXplCT0JTUQ1X0hNQUNfQkxPQ0tfU0laRSwKKwkuY3JhX2N0eHNpemUJPQlzaXplb2Yoc3RydWN0IG1kNV9jdHgpLAorCS5jcmFfbW9kdWxlCT0JVEhJU19NT0RVTEUsCisJLmNyYV9saXN0CT0JTElTVF9IRUFEX0lOSVQoYWxnLmNyYV9saXN0KSwKKwkuY3JhX3UJCT0JeyAuZGlnZXN0ID0geworCS5kaWFfZGlnZXN0c2l6ZQk9CU1ENV9ESUdFU1RfU0laRSwKKwkuZGlhX2luaXQgICAJPSAJbWQ1X2luaXQsCisJLmRpYV91cGRhdGUgCT0JbWQ1X3VwZGF0ZSwKKwkuZGlhX2ZpbmFsICAJPQltZDVfZmluYWwgfSB9Cit9OworCitzdGF0aWMgaW50IF9faW5pdCBpbml0KHZvaWQpCit7CisJcmV0dXJuIGNyeXB0b19yZWdpc3Rlcl9hbGcoJmFsZyk7Cit9CisKK3N0YXRpYyB2b2lkIF9fZXhpdCBmaW5pKHZvaWQpCit7CisJY3J5cHRvX3VucmVnaXN0ZXJfYWxnKCZhbGcpOworfQorCittb2R1bGVfaW5pdChpbml0KTsKK21vZHVsZV9leGl0KGZpbmkpOworCitNT0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfREVTQ1JJUFRJT04oIk1ENSBNZXNzYWdlIERpZ2VzdCBBbGdvcml0aG0iKTsKZGlmZiAtLWdpdCBhL2NyeXB0by9taWNoYWVsX21pYy5jIGIvY3J5cHRvL21pY2hhZWxfbWljLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ3MGJjYgotLS0gL2Rldi9udWxsCisrKyBiL2NyeXB0by9taWNoYWVsX21pYy5jCkBAIC0wLDAgKzEsMTgxIEBACisvKgorICogQ3J5cHRvZ3JhcGhpYyBBUEkKKyAqCisgKiBNaWNoYWVsIE1JQyAoSUVFRSA4MDIuMTFpL1RLSVApIGtleWVkIGRpZ2VzdAorICoKKyAqIENvcHlyaWdodCAoYykgMjAwNCBKb3VuaSBNYWxpbmVuIDxqa21hbGluZUBjYy5odXQuZmk+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqLworCisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L3N0cmluZy5oPgorI2luY2x1ZGUgPGxpbnV4L2NyeXB0by5oPgorCisKK3N0cnVjdCBtaWNoYWVsX21pY19jdHggeworCXU4IHBlbmRpbmdbNF07CisJc2l6ZV90IHBlbmRpbmdfbGVuOworCisJdTMyIGwsIHI7Cit9OworCisKK3N0YXRpYyBpbmxpbmUgdTMyIHhzd2FwKHUzMiB2YWwpCit7CisJcmV0dXJuICgodmFsICYgMHgwMGZmMDBmZikgPDwgOCkgfCAoKHZhbCAmIDB4ZmYwMGZmMDApID4+IDgpOworfQorCisKKyNkZWZpbmUgbWljaGFlbF9ibG9jayhsLCByKQlcCitkbyB7CQkJCVwKKwlyIF49IHJvbDMyKGwsIDE3KTsJXAorCWwgKz0gcjsJCQlcCisJciBePSB4c3dhcChsKTsJCVwKKwlsICs9IHI7CQkJXAorCXIgXj0gcm9sMzIobCwgMyk7CVwKKwlsICs9IHI7CQkJXAorCXIgXj0gcm9yMzIobCwgMik7CVwKKwlsICs9IHI7CQkJXAorfSB3aGlsZSAoMCkKKworCitzdGF0aWMgaW5saW5lIHUzMiBnZXRfbGUzMihjb25zdCB1OCAqcCkKK3sKKwlyZXR1cm4gcFswXSB8IChwWzFdIDw8IDgpIHwgKHBbMl0gPDwgMTYpIHwgKHBbM10gPDwgMjQpOworfQorCisKK3N0YXRpYyBpbmxpbmUgdm9pZCBwdXRfbGUzMih1OCAqcCwgdTMyIHYpCit7CisJcFswXSA9IHY7CisJcFsxXSA9IHYgPj4gODsKKwlwWzJdID0gdiA+PiAxNjsKKwlwWzNdID0gdiA+PiAyNDsKK30KKworCitzdGF0aWMgdm9pZCBtaWNoYWVsX2luaXQodm9pZCAqY3R4KQoreworCXN0cnVjdCBtaWNoYWVsX21pY19jdHggKm1jdHggPSBjdHg7CisJbWN0eC0+cGVuZGluZ19sZW4gPSAwOworfQorCisKK3N0YXRpYyB2b2lkIG1pY2hhZWxfdXBkYXRlKHZvaWQgKmN0eCwgY29uc3QgdTggKmRhdGEsIHVuc2lnbmVkIGludCBsZW4pCit7CisJc3RydWN0IG1pY2hhZWxfbWljX2N0eCAqbWN0eCA9IGN0eDsKKworCWlmIChtY3R4LT5wZW5kaW5nX2xlbikgeworCQlpbnQgZmxlbiA9IDQgLSBtY3R4LT5wZW5kaW5nX2xlbjsKKwkJaWYgKGZsZW4gPiBsZW4pCisJCQlmbGVuID0gbGVuOworCQltZW1jcHkoJm1jdHgtPnBlbmRpbmdbbWN0eC0+cGVuZGluZ19sZW5dLCBkYXRhLCBmbGVuKTsKKwkJbWN0eC0+cGVuZGluZ19sZW4gKz0gZmxlbjsKKwkJZGF0YSArPSBmbGVuOworCQlsZW4gLT0gZmxlbjsKKworCQlpZiAobWN0eC0+cGVuZGluZ19sZW4gPCA0KQorCQkJcmV0dXJuOworCisJCW1jdHgtPmwgXj0gZ2V0X2xlMzIobWN0eC0+cGVuZGluZyk7CisJCW1pY2hhZWxfYmxvY2sobWN0eC0+bCwgbWN0eC0+cik7CisJCW1jdHgtPnBlbmRpbmdfbGVuID0gMDsKKwl9CisKKwl3aGlsZSAobGVuID49IDQpIHsKKwkJbWN0eC0+bCBePSBnZXRfbGUzMihkYXRhKTsKKwkJbWljaGFlbF9ibG9jayhtY3R4LT5sLCBtY3R4LT5yKTsKKwkJZGF0YSArPSA0OworCQlsZW4gLT0gNDsKKwl9CisKKwlpZiAobGVuID4gMCkgeworCQltY3R4LT5wZW5kaW5nX2xlbiA9IGxlbjsKKwkJbWVtY3B5KG1jdHgtPnBlbmRpbmcsIGRhdGEsIGxlbik7CisJfQorfQorCisKK3N0YXRpYyB2b2lkIG1pY2hhZWxfZmluYWwodm9pZCAqY3R4LCB1OCAqb3V0KQoreworCXN0cnVjdCBtaWNoYWVsX21pY19jdHggKm1jdHggPSBjdHg7CisJdTggKmRhdGEgPSBtY3R4LT5wZW5kaW5nOworCisJLyogTGFzdCBibG9jayBhbmQgcGFkZGluZyAoMHg1YSwgNC4uNyB4IDApICovCisJc3dpdGNoIChtY3R4LT5wZW5kaW5nX2xlbikgeworCWNhc2UgMDoKKwkJbWN0eC0+bCBePSAweDVhOworCQlicmVhazsKKwljYXNlIDE6CisJCW1jdHgtPmwgXj0gZGF0YVswXSB8IDB4NWEwMDsKKwkJYnJlYWs7CisJY2FzZSAyOgorCQltY3R4LT5sIF49IGRhdGFbMF0gfCAoZGF0YVsxXSA8PCA4KSB8IDB4NWEwMDAwOworCQlicmVhazsKKwljYXNlIDM6CisJCW1jdHgtPmwgXj0gZGF0YVswXSB8IChkYXRhWzFdIDw8IDgpIHwgKGRhdGFbMl0gPDwgMTYpIHwKKwkJCTB4NWEwMDAwMDA7CisJCWJyZWFrOworCX0KKwltaWNoYWVsX2Jsb2NrKG1jdHgtPmwsIG1jdHgtPnIpOworCS8qIGwgXj0gMDsgKi8KKwltaWNoYWVsX2Jsb2NrKG1jdHgtPmwsIG1jdHgtPnIpOworCisJcHV0X2xlMzIob3V0LCBtY3R4LT5sKTsKKwlwdXRfbGUzMihvdXQgKyA0LCBtY3R4LT5yKTsKK30KKworCitzdGF0aWMgaW50IG1pY2hhZWxfc2V0a2V5KHZvaWQgKmN0eCwgY29uc3QgdTggKmtleSwgdW5zaWduZWQgaW50IGtleWxlbiwKKwkJCSAgdTMyICpmbGFncykKK3sKKwlzdHJ1Y3QgbWljaGFlbF9taWNfY3R4ICptY3R4ID0gY3R4OworCWlmIChrZXlsZW4gIT0gOCkgeworCQlpZiAoZmxhZ3MpCisJCQkqZmxhZ3MgPSBDUllQVE9fVEZNX1JFU19CQURfS0VZX0xFTjsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCW1jdHgtPmwgPSBnZXRfbGUzMihrZXkpOworCW1jdHgtPnIgPSBnZXRfbGUzMihrZXkgKyA0KTsKKwlyZXR1cm4gMDsKK30KKworCitzdGF0aWMgc3RydWN0IGNyeXB0b19hbGcgbWljaGFlbF9taWNfYWxnID0geworCS5jcmFfbmFtZQk9ICJtaWNoYWVsX21pYyIsCisJLmNyYV9mbGFncwk9IENSWVBUT19BTEdfVFlQRV9ESUdFU1QsCisJLmNyYV9ibG9ja3NpemUJPSA4LAorCS5jcmFfY3R4c2l6ZQk9IHNpemVvZihzdHJ1Y3QgbWljaGFlbF9taWNfY3R4KSwKKwkuY3JhX21vZHVsZQk9IFRISVNfTU9EVUxFLAorCS5jcmFfbGlzdAk9IExJU1RfSEVBRF9JTklUKG1pY2hhZWxfbWljX2FsZy5jcmFfbGlzdCksCisJLmNyYV91CQk9IHsgLmRpZ2VzdCA9IHsKKwkuZGlhX2RpZ2VzdHNpemUJPSA4LAorCS5kaWFfaW5pdAk9IG1pY2hhZWxfaW5pdCwKKwkuZGlhX3VwZGF0ZQk9IG1pY2hhZWxfdXBkYXRlLAorCS5kaWFfZmluYWwJPSBtaWNoYWVsX2ZpbmFsLAorCS5kaWFfc2V0a2V5CT0gbWljaGFlbF9zZXRrZXkgfSB9Cit9OworCisKK3N0YXRpYyBpbnQgX19pbml0IG1pY2hhZWxfbWljX2luaXQodm9pZCkKK3sKKwlyZXR1cm4gY3J5cHRvX3JlZ2lzdGVyX2FsZygmbWljaGFlbF9taWNfYWxnKTsKK30KKworCitzdGF0aWMgdm9pZCBfX2V4aXQgbWljaGFlbF9taWNfZXhpdCh2b2lkKQoreworCWNyeXB0b191bnJlZ2lzdGVyX2FsZygmbWljaGFlbF9taWNfYWxnKTsKK30KKworCittb2R1bGVfaW5pdChtaWNoYWVsX21pY19pbml0KTsKK21vZHVsZV9leGl0KG1pY2hhZWxfbWljX2V4aXQpOworCitNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7CitNT0RVTEVfREVTQ1JJUFRJT04oIk1pY2hhZWwgTUlDIik7CitNT0RVTEVfQVVUSE9SKCJKb3VuaSBNYWxpbmVuIDxqa21hbGluZUBjYy5odXQuZmk+Iik7CmRpZmYgLS1naXQgYS9jcnlwdG8vcHJvYy5jIGIvY3J5cHRvL3Byb2MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzBiYTkxCi0tLSAvZGV2L251bGwKKysrIGIvY3J5cHRvL3Byb2MuYwpAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIFNjYXR0ZXJsaXN0IENyeXB0b2dyYXBoaWMgQVBJLgorICoKKyAqIFByb2NmcyBpbmZvcm1hdGlvbi4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDIgSmFtZXMgTW9ycmlzIDxqbW9ycmlzQGludGVyY29kZS5jb20uYXU+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlCisgKiBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIAorICogYW55IGxhdGVyIHZlcnNpb24uCisgKgorICovCisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L2NyeXB0by5oPgorI2luY2x1ZGUgPGxpbnV4L3J3c2VtLmg+CisjaW5jbHVkZSA8bGludXgvcHJvY19mcy5oPgorI2luY2x1ZGUgPGxpbnV4L3NlcV9maWxlLmg+CisjaW5jbHVkZSAiaW50ZXJuYWwuaCIKKworZXh0ZXJuIHN0cnVjdCBsaXN0X2hlYWQgY3J5cHRvX2FsZ19saXN0OworZXh0ZXJuIHN0cnVjdCByd19zZW1hcGhvcmUgY3J5cHRvX2FsZ19zZW07CisKK3N0YXRpYyB2b2lkICpjX3N0YXJ0KHN0cnVjdCBzZXFfZmlsZSAqbSwgbG9mZl90ICpwb3MpCit7CisJc3RydWN0IGxpc3RfaGVhZCAqdjsKKwlsb2ZmX3QgbiA9ICpwb3M7CisKKwlkb3duX3JlYWQoJmNyeXB0b19hbGdfc2VtKTsKKwlsaXN0X2Zvcl9lYWNoKHYsICZjcnlwdG9fYWxnX2xpc3QpCisJCWlmICghbi0tKQorCQkJcmV0dXJuIGxpc3RfZW50cnkodiwgc3RydWN0IGNyeXB0b19hbGcsIGNyYV9saXN0KTsKKwlyZXR1cm4gTlVMTDsKK30KKworc3RhdGljIHZvaWQgKmNfbmV4dChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnAsIGxvZmZfdCAqcG9zKQoreworCXN0cnVjdCBsaXN0X2hlYWQgKnYgPSBwOworCQorCSgqcG9zKSsrOworCXYgPSB2LT5uZXh0OworCXJldHVybiAodiA9PSAmY3J5cHRvX2FsZ19saXN0KSA/CisJCU5VTEwgOiBsaXN0X2VudHJ5KHYsIHN0cnVjdCBjcnlwdG9fYWxnLCBjcmFfbGlzdCk7Cit9CisKK3N0YXRpYyB2b2lkIGNfc3RvcChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnApCit7CisJdXBfcmVhZCgmY3J5cHRvX2FsZ19zZW0pOworfQorCitzdGF0aWMgaW50IGNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnApCit7CisJc3RydWN0IGNyeXB0b19hbGcgKmFsZyA9IChzdHJ1Y3QgY3J5cHRvX2FsZyAqKXA7CisJCisJc2VxX3ByaW50ZihtLCAibmFtZSAgICAgICAgIDogJXNcbiIsIGFsZy0+Y3JhX25hbWUpOworCXNlcV9wcmludGYobSwgIm1vZHVsZSAgICAgICA6ICVzXG4iLCBtb2R1bGVfbmFtZShhbGctPmNyYV9tb2R1bGUpKTsKKwkKKwlzd2l0Y2ggKGFsZy0+Y3JhX2ZsYWdzICYgQ1JZUFRPX0FMR19UWVBFX01BU0spIHsKKwljYXNlIENSWVBUT19BTEdfVFlQRV9DSVBIRVI6CisJCXNlcV9wcmludGYobSwgInR5cGUgICAgICAgICA6IGNpcGhlclxuIik7CisJCXNlcV9wcmludGYobSwgImJsb2Nrc2l6ZSAgICA6ICV1XG4iLCBhbGctPmNyYV9ibG9ja3NpemUpOworCQlzZXFfcHJpbnRmKG0sICJtaW4ga2V5c2l6ZSAgOiAldVxuIiwKKwkJCQkJYWxnLT5jcmFfY2lwaGVyLmNpYV9taW5fa2V5c2l6ZSk7CisJCXNlcV9wcmludGYobSwgIm1heCBrZXlzaXplICA6ICV1XG4iLAorCQkJCQlhbGctPmNyYV9jaXBoZXIuY2lhX21heF9rZXlzaXplKTsKKwkJYnJlYWs7CisJCQorCWNhc2UgQ1JZUFRPX0FMR19UWVBFX0RJR0VTVDoKKwkJc2VxX3ByaW50ZihtLCAidHlwZSAgICAgICAgIDogZGlnZXN0XG4iKTsKKwkJc2VxX3ByaW50ZihtLCAiYmxvY2tzaXplICAgIDogJXVcbiIsIGFsZy0+Y3JhX2Jsb2Nrc2l6ZSk7CisJCXNlcV9wcmludGYobSwgImRpZ2VzdHNpemUgICA6ICV1XG4iLAorCQkgICAgICAgICAgIGFsZy0+Y3JhX2RpZ2VzdC5kaWFfZGlnZXN0c2l6ZSk7CisJCWJyZWFrOworCWNhc2UgQ1JZUFRPX0FMR19UWVBFX0NPTVBSRVNTOgorCQlzZXFfcHJpbnRmKG0sICJ0eXBlICAgICAgICAgOiBjb21wcmVzc2lvblxuIik7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXNlcV9wcmludGYobSwgInR5cGUgICAgICAgICA6IHVua25vd25cbiIpOworCQlicmVhazsKKwl9CisKKwlzZXFfcHV0YyhtLCAnXG4nKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBzZXFfb3BlcmF0aW9ucyBjcnlwdG9fc2VxX29wcyA9IHsKKwkuc3RhcnQJCT0gY19zdGFydCwKKwkubmV4dAkJPSBjX25leHQsCisJLnN0b3AJCT0gY19zdG9wLAorCS5zaG93CQk9IGNfc2hvdworfTsKKworc3RhdGljIGludCBjcnlwdG9faW5mb19vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQoreworCXJldHVybiBzZXFfb3BlbihmaWxlLCAmY3J5cHRvX3NlcV9vcHMpOworfQorICAgICAgICAKK3N0YXRpYyBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHByb2NfY3J5cHRvX29wcyA9IHsKKwkub3BlbgkJPSBjcnlwdG9faW5mb19vcGVuLAorCS5yZWFkCQk9IHNlcV9yZWFkLAorCS5sbHNlZWsJCT0gc2VxX2xzZWVrLAorCS5yZWxlYXNlCT0gc2VxX3JlbGVhc2UKK307CisKK3ZvaWQgX19pbml0IGNyeXB0b19pbml0X3Byb2Modm9pZCkKK3sKKwlzdHJ1Y3QgcHJvY19kaXJfZW50cnkgKnByb2M7CisJCisJcHJvYyA9IGNyZWF0ZV9wcm9jX2VudHJ5KCJjcnlwdG8iLCAwLCBOVUxMKTsKKwlpZiAocHJvYykKKwkJcHJvYy0+cHJvY19mb3BzID0gJnByb2NfY3J5cHRvX29wczsKK30KZGlmZiAtLWdpdCBhL2NyeXB0by9zY2F0dGVyd2Fsay5jIGIvY3J5cHRvL3NjYXR0ZXJ3YWxrLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBjOTQ2MQotLS0gL2Rldi9udWxsCisrKyBiL2NyeXB0by9zY2F0dGVyd2Fsay5jCkBAIC0wLDAgKzEsMTE1IEBACisvKgorICogQ3J5cHRvZ3JhcGhpYyBBUEkuCisgKgorICogQ2lwaGVyIG9wZXJhdGlvbnMuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDAyIEphbWVzIE1vcnJpcyA8am1vcnJpc0BpbnRlcmNvZGUuY29tLmF1PgorICogICAgICAgICAgICAgICAyMDAyIEFkYW0gSi4gUmljaHRlciA8YWRhbUB5Z2dkcmFzaWwuY29tPgorICogICAgICAgICAgICAgICAyMDA0IEplYW4tTHVjIENvb2tlIDxqbGNvb2tlQGNlcnRhaW5rZXkuY29tPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZQorICogU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKQorICogYW55IGxhdGVyIHZlcnNpb24uCisgKgorICovCisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvbW0uaD4KKyNpbmNsdWRlIDxsaW51eC9wYWdlbWFwLmg+CisjaW5jbHVkZSA8bGludXgvaGlnaG1lbS5oPgorI2luY2x1ZGUgPGFzbS9idWcuaD4KKyNpbmNsdWRlIDxhc20vc2NhdHRlcmxpc3QuaD4KKyNpbmNsdWRlICJpbnRlcm5hbC5oIgorI2luY2x1ZGUgInNjYXR0ZXJ3YWxrLmgiCisKK2VudW0ga21fdHlwZSBjcnlwdG9fa21fdHlwZXNbXSA9IHsKKwlLTV9VU0VSMCwKKwlLTV9VU0VSMSwKKwlLTV9TT0ZUSVJRMCwKKwlLTV9TT0ZUSVJRMSwKK307CisKK3N0YXRpYyB2b2lkIG1lbWNweV9kaXIodm9pZCAqYnVmLCB2b2lkICpzZ2RhdGEsIHNpemVfdCBuYnl0ZXMsIGludCBvdXQpCit7CisJaWYgKG91dCkKKwkJbWVtY3B5KHNnZGF0YSwgYnVmLCBuYnl0ZXMpOworCWVsc2UKKwkJbWVtY3B5KGJ1Ziwgc2dkYXRhLCBuYnl0ZXMpOworfQorCit2b2lkIHNjYXR0ZXJ3YWxrX3N0YXJ0KHN0cnVjdCBzY2F0dGVyX3dhbGsgKndhbGssIHN0cnVjdCBzY2F0dGVybGlzdCAqc2cpCit7CisJdW5zaWduZWQgaW50IHJlc3Rfb2ZfcGFnZTsKKworCXdhbGstPnNnID0gc2c7CisKKwl3YWxrLT5wYWdlID0gc2ctPnBhZ2U7CisJd2Fsay0+bGVuX3RoaXNfc2VnbWVudCA9IHNnLT5sZW5ndGg7CisKKwlCVUdfT04oIXNnLT5sZW5ndGgpOworCisJcmVzdF9vZl9wYWdlID0gUEFHRV9DQUNIRV9TSVpFIC0gKHNnLT5vZmZzZXQgJiAoUEFHRV9DQUNIRV9TSVpFIC0gMSkpOworCXdhbGstPmxlbl90aGlzX3BhZ2UgPSBtaW4oc2ctPmxlbmd0aCwgcmVzdF9vZl9wYWdlKTsKKwl3YWxrLT5vZmZzZXQgPSBzZy0+b2Zmc2V0OworfQorCit2b2lkIHNjYXR0ZXJ3YWxrX21hcChzdHJ1Y3Qgc2NhdHRlcl93YWxrICp3YWxrLCBpbnQgb3V0KQoreworCXdhbGstPmRhdGEgPSBjcnlwdG9fa21hcCh3YWxrLT5wYWdlLCBvdXQpICsgd2Fsay0+b2Zmc2V0OworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgc2NhdHRlcndhbGtfdW5tYXAoc3RydWN0IHNjYXR0ZXJfd2FsayAqd2FsaywgaW50IG91dCkKK3sKKwkvKiB3YWxrLT5kYXRhIG1heSBiZSBwb2ludGluZyB0aGUgZmlyc3QgYnl0ZSBvZiB0aGUgbmV4dCBwYWdlOworCSAgIGhvd2V2ZXIsIHdlIGtub3cgd2UgdHJhbnNmZXJlZCBhdCBsZWFzdCBvbmUgYnl0ZS4gIFNvLAorCSAgIHdhbGstPmRhdGEgLSAxIHdpbGwgYmUgYSB2aXJ0dWFsIGFkZHJlc3MgaW4gdGhlIG1hcHBlZCBwYWdlLiAqLworCWNyeXB0b19rdW5tYXAod2Fsay0+ZGF0YSAtIDEsIG91dCk7Cit9CisKK3N0YXRpYyB2b2lkIHNjYXR0ZXJ3YWxrX3BhZ2Vkb25lKHN0cnVjdCBzY2F0dGVyX3dhbGsgKndhbGssIGludCBvdXQsCisJCQkJIHVuc2lnbmVkIGludCBtb3JlKQoreworCWlmIChvdXQpCisJCWZsdXNoX2RjYWNoZV9wYWdlKHdhbGstPnBhZ2UpOworCisJaWYgKG1vcmUpIHsKKwkJd2Fsay0+bGVuX3RoaXNfc2VnbWVudCAtPSB3YWxrLT5sZW5fdGhpc19wYWdlOworCisJCWlmICh3YWxrLT5sZW5fdGhpc19zZWdtZW50KSB7CisJCQl3YWxrLT5wYWdlKys7CisJCQl3YWxrLT5sZW5fdGhpc19wYWdlID0gbWluKHdhbGstPmxlbl90aGlzX3NlZ21lbnQsCisJCQkJCQkgICh1bnNpZ25lZClQQUdFX0NBQ0hFX1NJWkUpOworCQkJd2Fsay0+b2Zmc2V0ID0gMDsKKwkJfQorCQllbHNlCisJCQlzY2F0dGVyd2Fsa19zdGFydCh3YWxrLCBzZ19uZXh0KHdhbGstPnNnKSk7CisJfQorfQorCit2b2lkIHNjYXR0ZXJ3YWxrX2RvbmUoc3RydWN0IHNjYXR0ZXJfd2FsayAqd2FsaywgaW50IG91dCwgaW50IG1vcmUpCit7CisJc2NhdHRlcndhbGtfdW5tYXAod2Fsaywgb3V0KTsKKwlpZiAod2Fsay0+bGVuX3RoaXNfcGFnZSA9PSAwIHx8ICFtb3JlKQorCQlzY2F0dGVyd2Fsa19wYWdlZG9uZSh3YWxrLCBvdXQsIG1vcmUpOworfQorCisvKgorICogRG8gbm90IGNhbGwgdGhpcyB1bmxlc3MgdGhlIHRvdGFsIGxlbmd0aCBvZiBhbGwgb2YgdGhlIGZyYWdtZW50cworICogaGFzIGJlZW4gdmVyaWZpZWQgYXMgbXVsdGlwbGUgb2YgdGhlIGJsb2NrIHNpemUuCisgKi8KK2ludCBzY2F0dGVyd2Fsa19jb3B5Y2h1bmtzKHZvaWQgKmJ1Ziwgc3RydWN0IHNjYXR0ZXJfd2FsayAqd2FsaywKKwkJCSAgIHNpemVfdCBuYnl0ZXMsIGludCBvdXQpCit7CisJZG8geworCQltZW1jcHlfZGlyKGJ1Ziwgd2Fsay0+ZGF0YSwgd2Fsay0+bGVuX3RoaXNfcGFnZSwgb3V0KTsKKwkJYnVmICs9IHdhbGstPmxlbl90aGlzX3BhZ2U7CisJCW5ieXRlcyAtPSB3YWxrLT5sZW5fdGhpc19wYWdlOworCisJCXNjYXR0ZXJ3YWxrX3VubWFwKHdhbGssIG91dCk7CisJCXNjYXR0ZXJ3YWxrX3BhZ2Vkb25lKHdhbGssIG91dCwgMSk7CisJCXNjYXR0ZXJ3YWxrX21hcCh3YWxrLCBvdXQpOworCX0gd2hpbGUgKG5ieXRlcyA+IHdhbGstPmxlbl90aGlzX3BhZ2UpOworCisJbWVtY3B5X2RpcihidWYsIHdhbGstPmRhdGEsIG5ieXRlcywgb3V0KTsKKwlyZXR1cm4gbmJ5dGVzOworfQpkaWZmIC0tZ2l0IGEvY3J5cHRvL3NjYXR0ZXJ3YWxrLmggYi9jcnlwdG8vc2NhdHRlcndhbGsuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMmFhNTZjCi0tLSAvZGV2L251bGwKKysrIGIvY3J5cHRvL3NjYXR0ZXJ3YWxrLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENyeXB0b2dyYXBoaWMgQVBJLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwMiBKYW1lcyBNb3JyaXMgPGptb3JyaXNAaW50ZXJjb2RlLmNvbS5hdT4KKyAqIENvcHlyaWdodCAoYykgMjAwMiBBZGFtIEouIFJpY2h0ZXIgPGFkYW1AeWdnZHJhc2lsLmNvbT4KKyAqIENvcHlyaWdodCAoYykgMjAwNCBKZWFuLUx1YyBDb29rZSA8amxjb29rZUBjZXJ0YWlua2V5LmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKKyAqIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikKKyAqIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqLworCisjaWZuZGVmIF9DUllQVE9fU0NBVFRFUldBTEtfSAorI2RlZmluZSBfQ1JZUFRPX1NDQVRURVJXQUxLX0gKKyNpbmNsdWRlIDxsaW51eC9tbS5oPgorI2luY2x1ZGUgPGFzbS9zY2F0dGVybGlzdC5oPgorCitzdHJ1Y3Qgc2NhdHRlcl93YWxrIHsKKwlzdHJ1Y3Qgc2NhdHRlcmxpc3QJKnNnOworCXN0cnVjdCBwYWdlCQkqcGFnZTsKKwl2b2lkCQkJKmRhdGE7CisJdW5zaWduZWQgaW50CQlsZW5fdGhpc19wYWdlOworCXVuc2lnbmVkIGludAkJbGVuX3RoaXNfc2VnbWVudDsKKwl1bnNpZ25lZCBpbnQJCW9mZnNldDsKK307CisKKy8qIERlZmluZSBzZ19uZXh0IGlzIGFuIGlubGluZSByb3V0aW5lIG5vdyBpbiBjYXNlIHdlIHdhbnQgdG8gY2hhbmdlCisgICBzY2F0dGVybGlzdCB0byBhIGxpbmtlZCBsaXN0IGxhdGVyLiAqLworc3RhdGljIGlubGluZSBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnX25leHQoc3RydWN0IHNjYXR0ZXJsaXN0ICpzZykKK3sKKwlyZXR1cm4gc2cgKyAxOworfQorCitzdGF0aWMgaW5saW5lIGludCBzY2F0dGVyd2Fsa19zYW1lYnVmKHN0cnVjdCBzY2F0dGVyX3dhbGsgKndhbGtfaW4sCisJCQkJICAgICAgc3RydWN0IHNjYXR0ZXJfd2FsayAqd2Fsa19vdXQpCit7CisJcmV0dXJuIHdhbGtfaW4tPnBhZ2UgPT0gd2Fsa19vdXQtPnBhZ2UgJiYKKwkgICAgICAgd2Fsa19pbi0+b2Zmc2V0ID09IHdhbGtfb3V0LT5vZmZzZXQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IHNjYXR0ZXJ3YWxrX2Fjcm9zc19wYWdlcyhzdHJ1Y3Qgc2NhdHRlcl93YWxrICp3YWxrLAorCQkJCQkgICB1bnNpZ25lZCBpbnQgbmJ5dGVzKQoreworCXJldHVybiBuYnl0ZXMgPiB3YWxrLT5sZW5fdGhpc19wYWdlOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgc2NhdHRlcndhbGtfYWR2YW5jZShzdHJ1Y3Qgc2NhdHRlcl93YWxrICp3YWxrLAorCQkJCSAgICAgICB1bnNpZ25lZCBpbnQgbmJ5dGVzKQoreworCXdhbGstPmRhdGEgKz0gbmJ5dGVzOworCXdhbGstPm9mZnNldCArPSBuYnl0ZXM7CisJd2Fsay0+bGVuX3RoaXNfcGFnZSAtPSBuYnl0ZXM7CisJd2Fsay0+bGVuX3RoaXNfc2VnbWVudCAtPSBuYnl0ZXM7Cit9CisKK3ZvaWQgc2NhdHRlcndhbGtfc3RhcnQoc3RydWN0IHNjYXR0ZXJfd2FsayAqd2Fsaywgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZyk7CitpbnQgc2NhdHRlcndhbGtfY29weWNodW5rcyh2b2lkICpidWYsIHN0cnVjdCBzY2F0dGVyX3dhbGsgKndhbGssIHNpemVfdCBuYnl0ZXMsIGludCBvdXQpOwordm9pZCBzY2F0dGVyd2Fsa19tYXAoc3RydWN0IHNjYXR0ZXJfd2FsayAqd2FsaywgaW50IG91dCk7Cit2b2lkIHNjYXR0ZXJ3YWxrX2RvbmUoc3RydWN0IHNjYXR0ZXJfd2FsayAqd2FsaywgaW50IG91dCwgaW50IG1vcmUpOworCisjZW5kaWYgIC8qIF9DUllQVE9fU0NBVFRFUldBTEtfSCAqLwpkaWZmIC0tZ2l0IGEvY3J5cHRvL3NlcnBlbnQuYyBiL2NyeXB0by9zZXJwZW50LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QxNTJlOAotLS0gL2Rldi9udWxsCisrKyBiL2NyeXB0by9zZXJwZW50LmMKQEAgLTAsMCArMSw1OTMgQEAKKy8qCisgKiBDcnlwdG9ncmFwaGljIEFQSS4KKyAqCisgKiBTZXJwZW50IENpcGhlciBBbGdvcml0aG0uCisgKgorICogQ29weXJpZ2h0IChDKSAyMDAyIERhZyBBcm5lIE9zdmlrIDxvc3Zpa0BpaS51aWIubm8+CisgKiAgICAgICAgICAgICAgIDIwMDMgSGVyYmVydCBWYWxlcmlvIFJpZWRlbCA8aHZyQGdudS5vcmc+CisgKgorICogQWRkZWQgdG5lcHJlcyBzdXBwb3J0OiBSdWJlbiBKZXN1cyBHYXJjaWEgSGVybmFuZGV6IDxydWJlbkB1Z3IuZXM+LCAxOC4xMC4yMDA0CisgKiAgICAgICAgICAgICAgIEJhc2VkIG9uIGNvZGUgYnkgaHZyCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqLworCisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+CisjaW5jbHVkZSA8YXNtL2J5dGVvcmRlci5oPgorI2luY2x1ZGUgPGxpbnV4L2NyeXB0by5oPgorCisvKiBLZXkgaXMgcGFkZGVkIHRvIHRoZSBtYXhpbXVtIG9mIDI1NiBiaXRzIGJlZm9yZSByb3VuZCBrZXkgZ2VuZXJhdGlvbi4KKyAqIEFueSBrZXkgbGVuZ3RoIDw9IDI1NiBiaXRzICgzMiBieXRlcykgaXMgYWxsb3dlZCBieSB0aGUgYWxnb3JpdGhtLgorICovCisKKyNkZWZpbmUgU0VSUEVOVF9NSU5fS0VZX1NJWkUJCSAgMAorI2RlZmluZSBTRVJQRU5UX01BWF9LRVlfU0laRQkJIDMyCisjZGVmaW5lIFNFUlBFTlRfRVhQS0VZX1dPUkRTCQkxMzIKKyNkZWZpbmUgU0VSUEVOVF9CTE9DS19TSVpFCQkgMTYKKworI2RlZmluZSBQSEkgMHg5ZTM3NzliOVVMCisKKyNkZWZpbmUga2V5aXRlcihhLGIsYyxkLGksaikgXAorICAgICAgICBiIF49IGQ7IGIgXj0gYzsgYiBePSBhOyBiIF49IFBISSBeIGk7IGIgPSByb2wzMihiLDExKTsga1tqXSA9IGI7CisKKyNkZWZpbmUgbG9hZGtleXMoeDAseDEseDIseDMsaSkgXAorCXgwPWtbaV07IHgxPWtbaSsxXTsgeDI9a1tpKzJdOyB4Mz1rW2krM107CisKKyNkZWZpbmUgc3RvcmVrZXlzKHgwLHgxLHgyLHgzLGkpIFwKKwlrW2ldPXgwOyBrW2krMV09eDE7IGtbaSsyXT14Mjsga1tpKzNdPXgzOworCisjZGVmaW5lIEsoeDAseDEseDIseDMsaSkJCQkJXAorCXgzIF49IGtbNCooaSkrM107ICAgICAgICB4MiBePSBrWzQqKGkpKzJdOwlcCisJeDEgXj0ga1s0KihpKSsxXTsgICAgICAgIHgwIF49IGtbNCooaSkrMF07CisKKyNkZWZpbmUgTEsoeDAseDEseDIseDMseDQsaSkJCQkJXAorCQkJCQl4MD1yb2wzMih4MCwxMyk7XAorCXgyPXJvbDMyKHgyLDMpOwl4MSBePSB4MDsJeDQgID0geDAgPDwgMzsJXAorCXgzIF49IHgyOwl4MSBePSB4MjsJCQlcCisJeDE9cm9sMzIoeDEsMSk7CXgzIF49IHg0OwkJCVwKKwl4Mz1yb2wzMih4Myw3KTsJeDQgID0geDE7CQkJXAorCXgwIF49IHgxOwl4NCA8PD0gNzsJeDIgXj0geDM7CVwKKwl4MCBePSB4MzsJeDIgXj0geDQ7CXgzIF49IGtbNCppKzNdOwlcCisJeDEgXj0ga1s0KmkrMV07CXgwPXJvbDMyKHgwLDUpOwl4Mj1yb2wzMih4MiwyMik7XAorCXgwIF49IGtbNCppKzBdOwl4MiBePSBrWzQqaSsyXTsKKworI2RlZmluZSBLTCh4MCx4MSx4Mix4Myx4NCxpKQkJCQlcCisJeDAgXj0ga1s0KmkrMF07CXgxIF49IGtbNCppKzFdOwl4MiBePSBrWzQqaSsyXTsJXAorCXgzIF49IGtbNCppKzNdOwl4MD1yb3IzMih4MCw1KTsJeDI9cm9yMzIoeDIsMjIpO1wKKwl4NCA9ICB4MTsJeDIgXj0geDM7CXgwIF49IHgzOwlcCisJeDQgPDw9IDc7CXgwIF49IHgxOwl4MT1yb3IzMih4MSwxKTsJXAorCXgyIF49IHg0Owl4Mz1yb3IzMih4Myw3KTsJeDQgPSB4MCA8PCAzOwlcCisJeDEgXj0geDA7CXgzIF49IHg0Owl4MD1yb3IzMih4MCwxMyk7XAorCXgxIF49IHgyOwl4MyBePSB4MjsJeDI9cm9yMzIoeDIsMyk7CisKKyNkZWZpbmUgUzAoeDAseDEseDIseDMseDQpCQkJCVwKKwkJCQkJeDQgID0geDM7CVwKKwl4MyB8PSB4MDsJeDAgXj0geDQ7CXg0IF49IHgyOwlcCisJeDQgPX4geDQ7CXgzIF49IHgxOwl4MSAmPSB4MDsJXAorCXgxIF49IHg0Owl4MiBePSB4MDsJeDAgXj0geDM7CVwKKwl4NCB8PSB4MDsJeDAgXj0geDI7CXgyICY9IHgxOwlcCisJeDMgXj0geDI7CXgxID1+IHgxOwl4MiBePSB4NDsJXAorCXgxIF49IHgyOworCisjZGVmaW5lIFMxKHgwLHgxLHgyLHgzLHg0KQkJCQlcCisJCQkJCXg0ICA9IHgxOwlcCisJeDEgXj0geDA7CXgwIF49IHgzOwl4MyA9fiB4MzsJXAorCXg0ICY9IHgxOwl4MCB8PSB4MTsJeDMgXj0geDI7CVwKKwl4MCBePSB4MzsJeDEgXj0geDM7CXgzIF49IHg0OwlcCisJeDEgfD0geDQ7CXg0IF49IHgyOwl4MiAmPSB4MDsJXAorCXgyIF49IHgxOwl4MSB8PSB4MDsJeDAgPX4geDA7CVwKKwl4MCBePSB4MjsJeDQgXj0geDE7CisKKyNkZWZpbmUgUzIoeDAseDEseDIseDMseDQpCQkJCVwKKwkJCQkJeDMgPX4geDM7CVwKKwl4MSBePSB4MDsJeDQgID0geDA7CXgwICY9IHgyOwlcCisJeDAgXj0geDM7CXgzIHw9IHg0Owl4MiBePSB4MTsJXAorCXgzIF49IHgxOwl4MSAmPSB4MDsJeDAgXj0geDI7CVwKKwl4MiAmPSB4MzsJeDMgfD0geDE7CXgwID1+IHgwOwlcCisJeDMgXj0geDA7CXg0IF49IHgwOwl4MCBePSB4MjsJXAorCXgxIHw9IHgyOworCisjZGVmaW5lIFMzKHgwLHgxLHgyLHgzLHg0KQkJCQlcCisJCQkJCXg0ICA9IHgxOwlcCisJeDEgXj0geDM7CXgzIHw9IHgwOwl4NCAmPSB4MDsJXAorCXgwIF49IHgyOwl4MiBePSB4MTsJeDEgJj0geDM7CVwKKwl4MiBePSB4MzsJeDAgfD0geDQ7CXg0IF49IHgzOwlcCisJeDEgXj0geDA7CXgwICY9IHgzOwl4MyAmPSB4NDsJXAorCXgzIF49IHgyOwl4NCB8PSB4MTsJeDIgJj0geDE7CVwKKwl4NCBePSB4MzsJeDAgXj0geDM7CXgzIF49IHgyOworCisjZGVmaW5lIFM0KHgwLHgxLHgyLHgzLHg0KQkJCQlcCisJCQkJCXg0ICA9IHgzOwlcCisJeDMgJj0geDA7CXgwIF49IHg0OwkJCVwKKwl4MyBePSB4MjsJeDIgfD0geDQ7CXgwIF49IHgxOwlcCisJeDQgXj0geDM7CXgyIHw9IHgwOwkJCVwKKwl4MiBePSB4MTsJeDEgJj0geDA7CQkJXAorCXgxIF49IHg0Owl4NCAmPSB4MjsJeDIgXj0geDM7CVwKKwl4NCBePSB4MDsJeDMgfD0geDE7CXgxID1+IHgxOwlcCisJeDMgXj0geDA7CisKKyNkZWZpbmUgUzUoeDAseDEseDIseDMseDQpCQkJCVwKKwl4NCAgPSB4MTsJeDEgfD0geDA7CQkJXAorCXgyIF49IHgxOwl4MyA9fiB4MzsJeDQgXj0geDA7CVwKKwl4MCBePSB4MjsJeDEgJj0geDQ7CXg0IHw9IHgzOwlcCisJeDQgXj0geDA7CXgwICY9IHgzOwl4MSBePSB4MzsJXAorCXgzIF49IHgyOwl4MCBePSB4MTsJeDIgJj0geDQ7CVwKKwl4MSBePSB4MjsJeDIgJj0geDA7CQkJXAorCXgzIF49IHgyOworCisjZGVmaW5lIFM2KHgwLHgxLHgyLHgzLHg0KQkJCQlcCisJCQkJCXg0ICA9IHgxOwlcCisJeDMgXj0geDA7CXgxIF49IHgyOwl4MiBePSB4MDsJXAorCXgwICY9IHgzOwl4MSB8PSB4MzsJeDQgPX4geDQ7CVwKKwl4MCBePSB4MTsJeDEgXj0geDI7CQkJXAorCXgzIF49IHg0Owl4NCBePSB4MDsJeDIgJj0geDA7CVwKKwl4NCBePSB4MTsJeDIgXj0geDM7CXgzICY9IHgxOwlcCisJeDMgXj0geDA7CXgxIF49IHgyOworCisjZGVmaW5lIFM3KHgwLHgxLHgyLHgzLHg0KQkJCQlcCisJCQkJCXgxID1+IHgxOwlcCisJeDQgID0geDE7CXgwID1+IHgwOwl4MSAmPSB4MjsJXAorCXgxIF49IHgzOwl4MyB8PSB4NDsJeDQgXj0geDI7CVwKKwl4MiBePSB4MzsJeDMgXj0geDA7CXgwIHw9IHgxOwlcCisJeDIgJj0geDA7CXgwIF49IHg0Owl4NCBePSB4MzsJXAorCXgzICY9IHgwOwl4NCBePSB4MTsJCQlcCisJeDIgXj0geDQ7CXgzIF49IHgxOwl4NCB8PSB4MDsJXAorCXg0IF49IHgxOworCisjZGVmaW5lIFNJMCh4MCx4MSx4Mix4Myx4NCkJCQkJXAorCQkJeDQgID0geDM7CXgxIF49IHgwOwlcCisJeDMgfD0geDE7CXg0IF49IHgxOwl4MCA9fiB4MDsJXAorCXgyIF49IHgzOwl4MyBePSB4MDsJeDAgJj0geDE7CVwKKwl4MCBePSB4MjsJeDIgJj0geDM7CXgzIF49IHg0OwlcCisJeDIgXj0geDM7CXgxIF49IHgzOwl4MyAmPSB4MDsJXAorCXgxIF49IHgwOwl4MCBePSB4MjsJeDQgXj0geDM7CisKKyNkZWZpbmUgU0kxKHgwLHgxLHgyLHgzLHg0KQkJCQlcCisJeDEgXj0geDM7CXg0ICA9IHgwOwkJCVwKKwl4MCBePSB4MjsJeDIgPX4geDI7CXg0IHw9IHgxOwlcCisJeDQgXj0geDM7CXgzICY9IHgxOwl4MSBePSB4MjsJXAorCXgyICY9IHg0Owl4NCBePSB4MTsJeDEgfD0geDM7CVwKKwl4MyBePSB4MDsJeDIgXj0geDA7CXgwIHw9IHg0OwlcCisJeDIgXj0geDQ7CXgxIF49IHgwOwkJCVwKKwl4NCBePSB4MTsKKworI2RlZmluZSBTSTIoeDAseDEseDIseDMseDQpCQkJCVwKKwl4MiBePSB4MTsJeDQgID0geDM7CXgzID1+IHgzOwlcCisJeDMgfD0geDI7CXgyIF49IHg0Owl4NCBePSB4MDsJXAorCXgzIF49IHgxOwl4MSB8PSB4MjsJeDIgXj0geDA7CVwKKwl4MSBePSB4NDsJeDQgfD0geDM7CXgyIF49IHgzOwlcCisJeDQgXj0geDI7CXgyICY9IHgxOwkJCVwKKwl4MiBePSB4MzsJeDMgXj0geDQ7CXg0IF49IHgwOworCisjZGVmaW5lIFNJMyh4MCx4MSx4Mix4Myx4NCkJCQkJXAorCQkJCQl4MiBePSB4MTsJXAorCXg0ICA9IHgxOwl4MSAmPSB4MjsJCQlcCisJeDEgXj0geDA7CXgwIHw9IHg0Owl4NCBePSB4MzsJXAorCXgwIF49IHgzOwl4MyB8PSB4MTsJeDEgXj0geDI7CVwKKwl4MSBePSB4MzsJeDAgXj0geDI7CXgyIF49IHgzOwlcCisJeDMgJj0geDE7CXgxIF49IHgwOwl4MCAmPSB4MjsJXAorCXg0IF49IHgzOwl4MyBePSB4MDsJeDAgXj0geDE7CisKKyNkZWZpbmUgU0k0KHgwLHgxLHgyLHgzLHg0KQkJCQlcCisJeDIgXj0geDM7CXg0ICA9IHgwOwl4MCAmPSB4MTsJXAorCXgwIF49IHgyOwl4MiB8PSB4MzsJeDQgPX4geDQ7CVwKKwl4MSBePSB4MDsJeDAgXj0geDI7CXgyICY9IHg0OwlcCisJeDIgXj0geDA7CXgwIHw9IHg0OwkJCVwKKwl4MCBePSB4MzsJeDMgJj0geDI7CQkJXAorCXg0IF49IHgzOwl4MyBePSB4MTsJeDEgJj0geDA7CVwKKwl4NCBePSB4MTsJeDAgXj0geDM7CisKKyNkZWZpbmUgU0k1KHgwLHgxLHgyLHgzLHg0KQkJCQlcCisJCQl4NCAgPSB4MTsJeDEgfD0geDI7CVwKKwl4MiBePSB4NDsJeDEgXj0geDM7CXgzICY9IHg0OwlcCisJeDIgXj0geDM7CXgzIHw9IHgwOwl4MCA9fiB4MDsJXAorCXgzIF49IHgyOwl4MiB8PSB4MDsJeDQgXj0geDE7CVwKKwl4MiBePSB4NDsJeDQgJj0geDA7CXgwIF49IHgxOwlcCisJeDEgXj0geDM7CXgwICY9IHgyOwl4MiBePSB4MzsJXAorCXgwIF49IHgyOwl4MiBePSB4NDsJeDQgXj0geDM7CisKKyNkZWZpbmUgU0k2KHgwLHgxLHgyLHgzLHg0KQkJCQlcCisJCQl4MCBePSB4MjsJCQlcCisJeDQgID0geDA7CXgwICY9IHgzOwl4MiBePSB4MzsJXAorCXgwIF49IHgyOwl4MyBePSB4MTsJeDIgfD0geDQ7CVwKKwl4MiBePSB4MzsJeDMgJj0geDA7CXgwID1+IHgwOwlcCisJeDMgXj0geDE7CXgxICY9IHgyOwl4NCBePSB4MDsJXAorCXgzIF49IHg0Owl4NCBePSB4MjsJeDAgXj0geDE7CVwKKwl4MiBePSB4MDsKKworI2RlZmluZSBTSTcoeDAseDEseDIseDMseDQpCQkJCVwKKwl4NCAgPSB4MzsJeDMgJj0geDA7CXgwIF49IHgyOwlcCisJeDIgfD0geDQ7CXg0IF49IHgxOwl4MCA9fiB4MDsJXAorCXgxIHw9IHgzOwl4NCBePSB4MDsJeDAgJj0geDI7CVwKKwl4MCBePSB4MTsJeDEgJj0geDI7CXgzIF49IHgyOwlcCisJeDQgXj0geDM7CXgyICY9IHgzOwl4MyB8PSB4MDsJXAorCXgxIF49IHg0Owl4MyBePSB4NDsJeDQgJj0geDA7CVwKKwl4NCBePSB4MjsKKworc3RydWN0IHNlcnBlbnRfY3R4IHsKKwl1OCBpdltTRVJQRU5UX0JMT0NLX1NJWkVdOworCXUzMiBleHBrZXlbU0VSUEVOVF9FWFBLRVlfV09SRFNdOworfTsKKworCitzdGF0aWMgaW50IHNlcnBlbnRfc2V0a2V5KHZvaWQgKmN0eCwgY29uc3QgdTggKmtleSwgdW5zaWduZWQgaW50IGtleWxlbiwgdTMyICpmbGFncykKK3sKKwl1MzIgKmsgPSAoKHN0cnVjdCBzZXJwZW50X2N0eCAqKWN0eCktPmV4cGtleTsKKwl1OCAgKms4ID0gKHU4ICopazsKKwl1MzIgcjAscjEscjIscjMscjQ7CisJaW50IGk7CisKKwlpZiAoKGtleWxlbiA8IFNFUlBFTlRfTUlOX0tFWV9TSVpFKQorCQkJfHwgKGtleWxlbiA+IFNFUlBFTlRfTUFYX0tFWV9TSVpFKSkKKwl7CisJCSpmbGFncyB8PSBDUllQVE9fVEZNX1JFU19CQURfS0VZX0xFTjsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJLyogQ29weSBrZXksIGFkZCBwYWRkaW5nICovCisKKwlmb3IgKGkgPSAwOyBpIDwga2V5bGVuOyArK2kpCisJCWs4W2ldID0ga2V5W2ldOworCWlmIChpIDwgU0VSUEVOVF9NQVhfS0VZX1NJWkUpCisJCWs4W2krK10gPSAxOworCXdoaWxlIChpIDwgU0VSUEVOVF9NQVhfS0VZX1NJWkUpCisJCWs4W2krK10gPSAwOworCisJLyogRXhwYW5kIGtleSB1c2luZyBwb2x5bm9taWFsICovCisKKwlyMCA9IGxlMzJfdG9fY3B1KGtbM10pOworCXIxID0gbGUzMl90b19jcHUoa1s0XSk7CisJcjIgPSBsZTMyX3RvX2NwdShrWzVdKTsKKwlyMyA9IGxlMzJfdG9fY3B1KGtbNl0pOworCXI0ID0gbGUzMl90b19jcHUoa1s3XSk7CisKKwlrZXlpdGVyKGxlMzJfdG9fY3B1KGtbMF0pLHIwLHI0LHIyLDAsMCk7CisJa2V5aXRlcihsZTMyX3RvX2NwdShrWzFdKSxyMSxyMCxyMywxLDEpOworCWtleWl0ZXIobGUzMl90b19jcHUoa1syXSkscjIscjEscjQsMiwyKTsKKwlrZXlpdGVyKGxlMzJfdG9fY3B1KGtbM10pLHIzLHIyLHIwLDMsMyk7CisJa2V5aXRlcihsZTMyX3RvX2NwdShrWzRdKSxyNCxyMyxyMSw0LDQpOworCWtleWl0ZXIobGUzMl90b19jcHUoa1s1XSkscjAscjQscjIsNSw1KTsKKwlrZXlpdGVyKGxlMzJfdG9fY3B1KGtbNl0pLHIxLHIwLHIzLDYsNik7CisJa2V5aXRlcihsZTMyX3RvX2NwdShrWzddKSxyMixyMSxyNCw3LDcpOworCisJa2V5aXRlcihrWyAgMF0scjMscjIscjAsICA4LCAgOCk7IGtleWl0ZXIoa1sgIDFdLHI0LHIzLHIxLCAgOSwgIDkpOworCWtleWl0ZXIoa1sgIDJdLHIwLHI0LHIyLCAxMCwgMTApOyBrZXlpdGVyKGtbICAzXSxyMSxyMCxyMywgMTEsIDExKTsKKwlrZXlpdGVyKGtbICA0XSxyMixyMSxyNCwgMTIsIDEyKTsga2V5aXRlcihrWyAgNV0scjMscjIscjAsIDEzLCAxMyk7CisJa2V5aXRlcihrWyAgNl0scjQscjMscjEsIDE0LCAxNCk7IGtleWl0ZXIoa1sgIDddLHIwLHI0LHIyLCAxNSwgMTUpOworCWtleWl0ZXIoa1sgIDhdLHIxLHIwLHIzLCAxNiwgMTYpOyBrZXlpdGVyKGtbICA5XSxyMixyMSxyNCwgMTcsIDE3KTsKKwlrZXlpdGVyKGtbIDEwXSxyMyxyMixyMCwgMTgsIDE4KTsga2V5aXRlcihrWyAxMV0scjQscjMscjEsIDE5LCAxOSk7CisJa2V5aXRlcihrWyAxMl0scjAscjQscjIsIDIwLCAyMCk7IGtleWl0ZXIoa1sgMTNdLHIxLHIwLHIzLCAyMSwgMjEpOworCWtleWl0ZXIoa1sgMTRdLHIyLHIxLHI0LCAyMiwgMjIpOyBrZXlpdGVyKGtbIDE1XSxyMyxyMixyMCwgMjMsIDIzKTsKKwlrZXlpdGVyKGtbIDE2XSxyNCxyMyxyMSwgMjQsIDI0KTsga2V5aXRlcihrWyAxN10scjAscjQscjIsIDI1LCAyNSk7CisJa2V5aXRlcihrWyAxOF0scjEscjAscjMsIDI2LCAyNik7IGtleWl0ZXIoa1sgMTldLHIyLHIxLHI0LCAyNywgMjcpOworCWtleWl0ZXIoa1sgMjBdLHIzLHIyLHIwLCAyOCwgMjgpOyBrZXlpdGVyKGtbIDIxXSxyNCxyMyxyMSwgMjksIDI5KTsKKwlrZXlpdGVyKGtbIDIyXSxyMCxyNCxyMiwgMzAsIDMwKTsga2V5aXRlcihrWyAyM10scjEscjAscjMsIDMxLCAzMSk7CisKKwlrICs9IDUwOworCisJa2V5aXRlcihrWy0yNl0scjIscjEscjQsIDMyLC0xOCk7IGtleWl0ZXIoa1stMjVdLHIzLHIyLHIwLCAzMywtMTcpOworCWtleWl0ZXIoa1stMjRdLHI0LHIzLHIxLCAzNCwtMTYpOyBrZXlpdGVyKGtbLTIzXSxyMCxyNCxyMiwgMzUsLTE1KTsKKwlrZXlpdGVyKGtbLTIyXSxyMSxyMCxyMywgMzYsLTE0KTsga2V5aXRlcihrWy0yMV0scjIscjEscjQsIDM3LC0xMyk7CisJa2V5aXRlcihrWy0yMF0scjMscjIscjAsIDM4LC0xMik7IGtleWl0ZXIoa1stMTldLHI0LHIzLHIxLCAzOSwtMTEpOworCWtleWl0ZXIoa1stMThdLHIwLHI0LHIyLCA0MCwtMTApOyBrZXlpdGVyKGtbLTE3XSxyMSxyMCxyMywgNDEsIC05KTsKKwlrZXlpdGVyKGtbLTE2XSxyMixyMSxyNCwgNDIsIC04KTsga2V5aXRlcihrWy0xNV0scjMscjIscjAsIDQzLCAtNyk7CisJa2V5aXRlcihrWy0xNF0scjQscjMscjEsIDQ0LCAtNik7IGtleWl0ZXIoa1stMTNdLHIwLHI0LHIyLCA0NSwgLTUpOworCWtleWl0ZXIoa1stMTJdLHIxLHIwLHIzLCA0NiwgLTQpOyBrZXlpdGVyKGtbLTExXSxyMixyMSxyNCwgNDcsIC0zKTsKKwlrZXlpdGVyKGtbLTEwXSxyMyxyMixyMCwgNDgsIC0yKTsga2V5aXRlcihrWyAtOV0scjQscjMscjEsIDQ5LCAtMSk7CisJa2V5aXRlcihrWyAtOF0scjAscjQscjIsIDUwLCAgMCk7IGtleWl0ZXIoa1sgLTddLHIxLHIwLHIzLCA1MSwgIDEpOworCWtleWl0ZXIoa1sgLTZdLHIyLHIxLHI0LCA1MiwgIDIpOyBrZXlpdGVyKGtbIC01XSxyMyxyMixyMCwgNTMsICAzKTsKKwlrZXlpdGVyKGtbIC00XSxyNCxyMyxyMSwgNTQsICA0KTsga2V5aXRlcihrWyAtM10scjAscjQscjIsIDU1LCAgNSk7CisJa2V5aXRlcihrWyAtMl0scjEscjAscjMsIDU2LCAgNik7IGtleWl0ZXIoa1sgLTFdLHIyLHIxLHI0LCA1NywgIDcpOworCWtleWl0ZXIoa1sgIDBdLHIzLHIyLHIwLCA1OCwgIDgpOyBrZXlpdGVyKGtbICAxXSxyNCxyMyxyMSwgNTksICA5KTsKKwlrZXlpdGVyKGtbICAyXSxyMCxyNCxyMiwgNjAsIDEwKTsga2V5aXRlcihrWyAgM10scjEscjAscjMsIDYxLCAxMSk7CisJa2V5aXRlcihrWyAgNF0scjIscjEscjQsIDYyLCAxMik7IGtleWl0ZXIoa1sgIDVdLHIzLHIyLHIwLCA2MywgMTMpOworCWtleWl0ZXIoa1sgIDZdLHI0LHIzLHIxLCA2NCwgMTQpOyBrZXlpdGVyKGtbICA3XSxyMCxyNCxyMiwgNjUsIDE1KTsKKwlrZXlpdGVyKGtbICA4XSxyMSxyMCxyMywgNjYsIDE2KTsga2V5aXRlcihrWyAgOV0scjIscjEscjQsIDY3LCAxNyk7CisJa2V5aXRlcihrWyAxMF0scjMscjIscjAsIDY4LCAxOCk7IGtleWl0ZXIoa1sgMTFdLHI0LHIzLHIxLCA2OSwgMTkpOworCWtleWl0ZXIoa1sgMTJdLHIwLHI0LHIyLCA3MCwgMjApOyBrZXlpdGVyKGtbIDEzXSxyMSxyMCxyMywgNzEsIDIxKTsKKwlrZXlpdGVyKGtbIDE0XSxyMixyMSxyNCwgNzIsIDIyKTsga2V5aXRlcihrWyAxNV0scjMscjIscjAsIDczLCAyMyk7CisJa2V5aXRlcihrWyAxNl0scjQscjMscjEsIDc0LCAyNCk7IGtleWl0ZXIoa1sgMTddLHIwLHI0LHIyLCA3NSwgMjUpOworCWtleWl0ZXIoa1sgMThdLHIxLHIwLHIzLCA3NiwgMjYpOyBrZXlpdGVyKGtbIDE5XSxyMixyMSxyNCwgNzcsIDI3KTsKKwlrZXlpdGVyKGtbIDIwXSxyMyxyMixyMCwgNzgsIDI4KTsga2V5aXRlcihrWyAyMV0scjQscjMscjEsIDc5LCAyOSk7CisJa2V5aXRlcihrWyAyMl0scjAscjQscjIsIDgwLCAzMCk7IGtleWl0ZXIoa1sgMjNdLHIxLHIwLHIzLCA4MSwgMzEpOworCisJayArPSA1MDsKKworCWtleWl0ZXIoa1stMjZdLHIyLHIxLHI0LCA4MiwtMTgpOyBrZXlpdGVyKGtbLTI1XSxyMyxyMixyMCwgODMsLTE3KTsKKwlrZXlpdGVyKGtbLTI0XSxyNCxyMyxyMSwgODQsLTE2KTsga2V5aXRlcihrWy0yM10scjAscjQscjIsIDg1LC0xNSk7CisJa2V5aXRlcihrWy0yMl0scjEscjAscjMsIDg2LC0xNCk7IGtleWl0ZXIoa1stMjFdLHIyLHIxLHI0LCA4NywtMTMpOworCWtleWl0ZXIoa1stMjBdLHIzLHIyLHIwLCA4OCwtMTIpOyBrZXlpdGVyKGtbLTE5XSxyNCxyMyxyMSwgODksLTExKTsKKwlrZXlpdGVyKGtbLTE4XSxyMCxyNCxyMiwgOTAsLTEwKTsga2V5aXRlcihrWy0xN10scjEscjAscjMsIDkxLCAtOSk7CisJa2V5aXRlcihrWy0xNl0scjIscjEscjQsIDkyLCAtOCk7IGtleWl0ZXIoa1stMTVdLHIzLHIyLHIwLCA5MywgLTcpOworCWtleWl0ZXIoa1stMTRdLHI0LHIzLHIxLCA5NCwgLTYpOyBrZXlpdGVyKGtbLTEzXSxyMCxyNCxyMiwgOTUsIC01KTsKKwlrZXlpdGVyKGtbLTEyXSxyMSxyMCxyMywgOTYsIC00KTsga2V5aXRlcihrWy0xMV0scjIscjEscjQsIDk3LCAtMyk7CisJa2V5aXRlcihrWy0xMF0scjMscjIscjAsIDk4LCAtMik7IGtleWl0ZXIoa1sgLTldLHI0LHIzLHIxLCA5OSwgLTEpOworCWtleWl0ZXIoa1sgLThdLHIwLHI0LHIyLDEwMCwgIDApOyBrZXlpdGVyKGtbIC03XSxyMSxyMCxyMywxMDEsICAxKTsKKwlrZXlpdGVyKGtbIC02XSxyMixyMSxyNCwxMDIsICAyKTsga2V5aXRlcihrWyAtNV0scjMscjIscjAsMTAzLCAgMyk7CisJa2V5aXRlcihrWyAtNF0scjQscjMscjEsMTA0LCAgNCk7IGtleWl0ZXIoa1sgLTNdLHIwLHI0LHIyLDEwNSwgIDUpOworCWtleWl0ZXIoa1sgLTJdLHIxLHIwLHIzLDEwNiwgIDYpOyBrZXlpdGVyKGtbIC0xXSxyMixyMSxyNCwxMDcsICA3KTsKKwlrZXlpdGVyKGtbICAwXSxyMyxyMixyMCwxMDgsICA4KTsga2V5aXRlcihrWyAgMV0scjQscjMscjEsMTA5LCAgOSk7CisJa2V5aXRlcihrWyAgMl0scjAscjQscjIsMTEwLCAxMCk7IGtleWl0ZXIoa1sgIDNdLHIxLHIwLHIzLDExMSwgMTEpOworCWtleWl0ZXIoa1sgIDRdLHIyLHIxLHI0LDExMiwgMTIpOyBrZXlpdGVyKGtbICA1XSxyMyxyMixyMCwxMTMsIDEzKTsKKwlrZXlpdGVyKGtbICA2XSxyNCxyMyxyMSwxMTQsIDE0KTsga2V5aXRlcihrWyAgN10scjAscjQscjIsMTE1LCAxNSk7CisJa2V5aXRlcihrWyAgOF0scjEscjAscjMsMTE2LCAxNik7IGtleWl0ZXIoa1sgIDldLHIyLHIxLHI0LDExNywgMTcpOworCWtleWl0ZXIoa1sgMTBdLHIzLHIyLHIwLDExOCwgMTgpOyBrZXlpdGVyKGtbIDExXSxyNCxyMyxyMSwxMTksIDE5KTsKKwlrZXlpdGVyKGtbIDEyXSxyMCxyNCxyMiwxMjAsIDIwKTsga2V5aXRlcihrWyAxM10scjEscjAscjMsMTIxLCAyMSk7CisJa2V5aXRlcihrWyAxNF0scjIscjEscjQsMTIyLCAyMik7IGtleWl0ZXIoa1sgMTVdLHIzLHIyLHIwLDEyMywgMjMpOworCWtleWl0ZXIoa1sgMTZdLHI0LHIzLHIxLDEyNCwgMjQpOyBrZXlpdGVyKGtbIDE3XSxyMCxyNCxyMiwxMjUsIDI1KTsKKwlrZXlpdGVyKGtbIDE4XSxyMSxyMCxyMywxMjYsIDI2KTsga2V5aXRlcihrWyAxOV0scjIscjEscjQsMTI3LCAyNyk7CisJa2V5aXRlcihrWyAyMF0scjMscjIscjAsMTI4LCAyOCk7IGtleWl0ZXIoa1sgMjFdLHI0LHIzLHIxLDEyOSwgMjkpOworCWtleWl0ZXIoa1sgMjJdLHIwLHI0LHIyLDEzMCwgMzApOyBrZXlpdGVyKGtbIDIzXSxyMSxyMCxyMywxMzEsIDMxKTsKKworCS8qIEFwcGx5IFMtYm94ZXMgKi8KKworCVMzKHIzLHI0LHIwLHIxLHIyKTsgc3RvcmVrZXlzKHIxLHIyLHI0LHIzLCAyOCk7IGxvYWRrZXlzKHIxLHIyLHI0LHIzLCAyNCk7CisJUzQocjEscjIscjQscjMscjApOyBzdG9yZWtleXMocjIscjQscjMscjAsIDI0KTsgbG9hZGtleXMocjIscjQscjMscjAsIDIwKTsKKwlTNShyMixyNCxyMyxyMCxyMSk7IHN0b3Jla2V5cyhyMSxyMixyNCxyMCwgMjApOyBsb2Fka2V5cyhyMSxyMixyNCxyMCwgMTYpOworCVM2KHIxLHIyLHI0LHIwLHIzKTsgc3RvcmVrZXlzKHI0LHIzLHIyLHIwLCAxNik7IGxvYWRrZXlzKHI0LHIzLHIyLHIwLCAxMik7CisJUzcocjQscjMscjIscjAscjEpOyBzdG9yZWtleXMocjEscjIscjAscjQsIDEyKTsgbG9hZGtleXMocjEscjIscjAscjQsICA4KTsKKwlTMChyMSxyMixyMCxyNCxyMyk7IHN0b3Jla2V5cyhyMCxyMixyNCxyMSwgIDgpOyBsb2Fka2V5cyhyMCxyMixyNCxyMSwgIDQpOworCVMxKHIwLHIyLHI0LHIxLHIzKTsgc3RvcmVrZXlzKHIzLHI0LHIxLHIwLCAgNCk7IGxvYWRrZXlzKHIzLHI0LHIxLHIwLCAgMCk7CisJUzIocjMscjQscjEscjAscjIpOyBzdG9yZWtleXMocjIscjQscjMscjAsICAwKTsgbG9hZGtleXMocjIscjQscjMscjAsIC00KTsKKwlTMyhyMixyNCxyMyxyMCxyMSk7IHN0b3Jla2V5cyhyMCxyMSxyNCxyMiwgLTQpOyBsb2Fka2V5cyhyMCxyMSxyNCxyMiwgLTgpOworCVM0KHIwLHIxLHI0LHIyLHIzKTsgc3RvcmVrZXlzKHIxLHI0LHIyLHIzLCAtOCk7IGxvYWRrZXlzKHIxLHI0LHIyLHIzLC0xMik7CisJUzUocjEscjQscjIscjMscjApOyBzdG9yZWtleXMocjAscjEscjQscjMsLTEyKTsgbG9hZGtleXMocjAscjEscjQscjMsLTE2KTsKKwlTNihyMCxyMSxyNCxyMyxyMik7IHN0b3Jla2V5cyhyNCxyMixyMSxyMywtMTYpOyBsb2Fka2V5cyhyNCxyMixyMSxyMywtMjApOworCVM3KHI0LHIyLHIxLHIzLHIwKTsgc3RvcmVrZXlzKHIwLHIxLHIzLHI0LC0yMCk7IGxvYWRrZXlzKHIwLHIxLHIzLHI0LC0yNCk7CisJUzAocjAscjEscjMscjQscjIpOyBzdG9yZWtleXMocjMscjEscjQscjAsLTI0KTsgbG9hZGtleXMocjMscjEscjQscjAsLTI4KTsKKwlrIC09IDUwOworCVMxKHIzLHIxLHI0LHIwLHIyKTsgc3RvcmVrZXlzKHIyLHI0LHIwLHIzLCAyMik7IGxvYWRrZXlzKHIyLHI0LHIwLHIzLCAxOCk7CisJUzIocjIscjQscjAscjMscjEpOyBzdG9yZWtleXMocjEscjQscjIscjMsIDE4KTsgbG9hZGtleXMocjEscjQscjIscjMsIDE0KTsKKwlTMyhyMSxyNCxyMixyMyxyMCk7IHN0b3Jla2V5cyhyMyxyMCxyNCxyMSwgMTQpOyBsb2Fka2V5cyhyMyxyMCxyNCxyMSwgMTApOworCVM0KHIzLHIwLHI0LHIxLHIyKTsgc3RvcmVrZXlzKHIwLHI0LHIxLHIyLCAxMCk7IGxvYWRrZXlzKHIwLHI0LHIxLHIyLCAgNik7CisJUzUocjAscjQscjEscjIscjMpOyBzdG9yZWtleXMocjMscjAscjQscjIsICA2KTsgbG9hZGtleXMocjMscjAscjQscjIsICAyKTsKKwlTNihyMyxyMCxyNCxyMixyMSk7IHN0b3Jla2V5cyhyNCxyMSxyMCxyMiwgIDIpOyBsb2Fka2V5cyhyNCxyMSxyMCxyMiwgLTIpOworCVM3KHI0LHIxLHIwLHIyLHIzKTsgc3RvcmVrZXlzKHIzLHIwLHIyLHI0LCAtMik7IGxvYWRrZXlzKHIzLHIwLHIyLHI0LCAtNik7CisJUzAocjMscjAscjIscjQscjEpOyBzdG9yZWtleXMocjIscjAscjQscjMsIC02KTsgbG9hZGtleXMocjIscjAscjQscjMsLTEwKTsKKwlTMShyMixyMCxyNCxyMyxyMSk7IHN0b3Jla2V5cyhyMSxyNCxyMyxyMiwtMTApOyBsb2Fka2V5cyhyMSxyNCxyMyxyMiwtMTQpOworCVMyKHIxLHI0LHIzLHIyLHIwKTsgc3RvcmVrZXlzKHIwLHI0LHIxLHIyLC0xNCk7IGxvYWRrZXlzKHIwLHI0LHIxLHIyLC0xOCk7CisJUzMocjAscjQscjEscjIscjMpOyBzdG9yZWtleXMocjIscjMscjQscjAsLTE4KTsgbG9hZGtleXMocjIscjMscjQscjAsLTIyKTsKKwlrIC09IDUwOworCVM0KHIyLHIzLHI0LHIwLHIxKTsgc3RvcmVrZXlzKHIzLHI0LHIwLHIxLCAyOCk7IGxvYWRrZXlzKHIzLHI0LHIwLHIxLCAyNCk7CisJUzUocjMscjQscjAscjEscjIpOyBzdG9yZWtleXMocjIscjMscjQscjEsIDI0KTsgbG9hZGtleXMocjIscjMscjQscjEsIDIwKTsKKwlTNihyMixyMyxyNCxyMSxyMCk7IHN0b3Jla2V5cyhyNCxyMCxyMyxyMSwgMjApOyBsb2Fka2V5cyhyNCxyMCxyMyxyMSwgMTYpOworCVM3KHI0LHIwLHIzLHIxLHIyKTsgc3RvcmVrZXlzKHIyLHIzLHIxLHI0LCAxNik7IGxvYWRrZXlzKHIyLHIzLHIxLHI0LCAxMik7CisJUzAocjIscjMscjEscjQscjApOyBzdG9yZWtleXMocjEscjMscjQscjIsIDEyKTsgbG9hZGtleXMocjEscjMscjQscjIsICA4KTsKKwlTMShyMSxyMyxyNCxyMixyMCk7IHN0b3Jla2V5cyhyMCxyNCxyMixyMSwgIDgpOyBsb2Fka2V5cyhyMCxyNCxyMixyMSwgIDQpOworCVMyKHIwLHI0LHIyLHIxLHIzKTsgc3RvcmVrZXlzKHIzLHI0LHIwLHIxLCAgNCk7IGxvYWRrZXlzKHIzLHI0LHIwLHIxLCAgMCk7CisJUzMocjMscjQscjAscjEscjIpOyBzdG9yZWtleXMocjEscjIscjQscjMsICAwKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBzZXJwZW50X2VuY3J5cHQodm9pZCAqY3R4LCB1OCAqZHN0LCBjb25zdCB1OCAqc3JjKQoreworCWNvbnN0IHUzMgorCQkqayA9ICgoc3RydWN0IHNlcnBlbnRfY3R4ICopY3R4KS0+ZXhwa2V5LAorCQkqcyA9IChjb25zdCB1MzIgKilzcmM7CisJdTMyCSpkID0gKHUzMiAqKWRzdCwKKwkJcjAsIHIxLCByMiwgcjMsIHI0OworCisvKgorICogTm90ZTogVGhlIGNvbnZlcnNpb25zIGJldHdlZW4gdTgqIGFuZCB1MzIqIG1pZ2h0IGNhdXNlIHRyb3VibGUKKyAqIG9uIGFyY2hpdGVjdHVyZXMgd2l0aCBzdHJpY3RlciBhbGlnbm1lbnQgcnVsZXMgdGhhbiB4ODYKKyAqLworCisJcjAgPSBsZTMyX3RvX2NwdShzWzBdKTsKKwlyMSA9IGxlMzJfdG9fY3B1KHNbMV0pOworCXIyID0gbGUzMl90b19jcHUoc1syXSk7CisJcjMgPSBsZTMyX3RvX2NwdShzWzNdKTsKKworCQkJCSBLKHIwLHIxLHIyLHIzLDApOworCVMwKHIwLHIxLHIyLHIzLHI0KTsJTEsocjIscjEscjMscjAscjQsMSk7CisJUzEocjIscjEscjMscjAscjQpOwlMSyhyNCxyMyxyMCxyMixyMSwyKTsKKwlTMihyNCxyMyxyMCxyMixyMSk7CUxLKHIxLHIzLHI0LHIyLHIwLDMpOworCVMzKHIxLHIzLHI0LHIyLHIwKTsJTEsocjIscjAscjMscjEscjQsNCk7CisJUzQocjIscjAscjMscjEscjQpOwlMSyhyMCxyMyxyMSxyNCxyMiw1KTsKKwlTNShyMCxyMyxyMSxyNCxyMik7CUxLKHIyLHIwLHIzLHI0LHIxLDYpOworCVM2KHIyLHIwLHIzLHI0LHIxKTsJTEsocjMscjEscjAscjQscjIsNyk7CisJUzcocjMscjEscjAscjQscjIpOwlMSyhyMixyMCxyNCxyMyxyMSw4KTsKKwlTMChyMixyMCxyNCxyMyxyMSk7CUxLKHI0LHIwLHIzLHIyLHIxLDkpOworCVMxKHI0LHIwLHIzLHIyLHIxKTsJTEsocjEscjMscjIscjQscjAsMTApOworCVMyKHIxLHIzLHIyLHI0LHIwKTsJTEsocjAscjMscjEscjQscjIsMTEpOworCVMzKHIwLHIzLHIxLHI0LHIyKTsJTEsocjQscjIscjMscjAscjEsMTIpOworCVM0KHI0LHIyLHIzLHIwLHIxKTsJTEsocjIscjMscjAscjEscjQsMTMpOworCVM1KHIyLHIzLHIwLHIxLHI0KTsJTEsocjQscjIscjMscjEscjAsMTQpOworCVM2KHI0LHIyLHIzLHIxLHIwKTsJTEsocjMscjAscjIscjEscjQsMTUpOworCVM3KHIzLHIwLHIyLHIxLHI0KTsJTEsocjQscjIscjEscjMscjAsMTYpOworCVMwKHI0LHIyLHIxLHIzLHIwKTsJTEsocjEscjIscjMscjQscjAsMTcpOworCVMxKHIxLHIyLHIzLHI0LHIwKTsJTEsocjAscjMscjQscjEscjIsMTgpOworCVMyKHIwLHIzLHI0LHIxLHIyKTsJTEsocjIscjMscjAscjEscjQsMTkpOworCVMzKHIyLHIzLHIwLHIxLHI0KTsJTEsocjEscjQscjMscjIscjAsMjApOworCVM0KHIxLHI0LHIzLHIyLHIwKTsJTEsocjQscjMscjIscjAscjEsMjEpOworCVM1KHI0LHIzLHIyLHIwLHIxKTsJTEsocjEscjQscjMscjAscjIsMjIpOworCVM2KHIxLHI0LHIzLHIwLHIyKTsJTEsocjMscjIscjQscjAscjEsMjMpOworCVM3KHIzLHIyLHI0LHIwLHIxKTsJTEsocjEscjQscjAscjMscjIsMjQpOworCVMwKHIxLHI0LHIwLHIzLHIyKTsJTEsocjAscjQscjMscjEscjIsMjUpOworCVMxKHIwLHI0LHIzLHIxLHIyKTsJTEsocjIscjMscjEscjAscjQsMjYpOworCVMyKHIyLHIzLHIxLHIwLHI0KTsJTEsocjQscjMscjIscjAscjEsMjcpOworCVMzKHI0LHIzLHIyLHIwLHIxKTsJTEsocjAscjEscjMscjQscjIsMjgpOworCVM0KHIwLHIxLHIzLHI0LHIyKTsJTEsocjEscjMscjQscjIscjAsMjkpOworCVM1KHIxLHIzLHI0LHIyLHIwKTsJTEsocjAscjEscjMscjIscjQsMzApOworCVM2KHIwLHIxLHIzLHIyLHI0KTsJTEsocjMscjQscjEscjIscjAsMzEpOworCVM3KHIzLHI0LHIxLHIyLHIwKTsJIEsocjAscjEscjIscjMsMzIpOworCisJZFswXSA9IGNwdV90b19sZTMyKHIwKTsKKwlkWzFdID0gY3B1X3RvX2xlMzIocjEpOworCWRbMl0gPSBjcHVfdG9fbGUzMihyMik7CisJZFszXSA9IGNwdV90b19sZTMyKHIzKTsKK30KKworc3RhdGljIHZvaWQgc2VycGVudF9kZWNyeXB0KHZvaWQgKmN0eCwgdTggKmRzdCwgY29uc3QgdTggKnNyYykKK3sKKwljb25zdCB1MzIKKwkJKmsgPSAoKHN0cnVjdCBzZXJwZW50X2N0eCAqKWN0eCktPmV4cGtleSwKKwkJKnMgPSAoY29uc3QgdTMyICopc3JjOworCXUzMgkqZCA9ICh1MzIgKilkc3QsCisJCXIwLCByMSwgcjIsIHIzLCByNDsKKworCXIwID0gbGUzMl90b19jcHUoc1swXSk7CisJcjEgPSBsZTMyX3RvX2NwdShzWzFdKTsKKwlyMiA9IGxlMzJfdG9fY3B1KHNbMl0pOworCXIzID0gbGUzMl90b19jcHUoc1szXSk7CisKKwkJCQlLKHIwLHIxLHIyLHIzLDMyKTsKKwlTSTcocjAscjEscjIscjMscjQpOwlLTChyMSxyMyxyMCxyNCxyMiwzMSk7CisJU0k2KHIxLHIzLHIwLHI0LHIyKTsJS0wocjAscjIscjQscjEscjMsMzApOworCVNJNShyMCxyMixyNCxyMSxyMyk7CUtMKHIyLHIzLHIwLHI0LHIxLDI5KTsKKwlTSTQocjIscjMscjAscjQscjEpOwlLTChyMixyMCxyMSxyNCxyMywyOCk7CisJU0kzKHIyLHIwLHIxLHI0LHIzKTsJS0wocjEscjIscjMscjQscjAsMjcpOworCVNJMihyMSxyMixyMyxyNCxyMCk7CUtMKHIyLHIwLHI0LHIzLHIxLDI2KTsKKwlTSTEocjIscjAscjQscjMscjEpOwlLTChyMSxyMCxyNCxyMyxyMiwyNSk7CisJU0kwKHIxLHIwLHI0LHIzLHIyKTsJS0wocjQscjIscjAscjEscjMsMjQpOworCVNJNyhyNCxyMixyMCxyMSxyMyk7CUtMKHIyLHIxLHI0LHIzLHIwLDIzKTsKKwlTSTYocjIscjEscjQscjMscjApOwlLTChyNCxyMCxyMyxyMixyMSwyMik7CisJU0k1KHI0LHIwLHIzLHIyLHIxKTsJS0wocjAscjEscjQscjMscjIsMjEpOworCVNJNChyMCxyMSxyNCxyMyxyMik7CUtMKHIwLHI0LHIyLHIzLHIxLDIwKTsKKwlTSTMocjAscjQscjIscjMscjEpOwlLTChyMixyMCxyMSxyMyxyNCwxOSk7CisJU0kyKHIyLHIwLHIxLHIzLHI0KTsJS0wocjAscjQscjMscjEscjIsMTgpOworCVNJMShyMCxyNCxyMyxyMSxyMik7CUtMKHIyLHI0LHIzLHIxLHIwLDE3KTsKKwlTSTAocjIscjQscjMscjEscjApOwlLTChyMyxyMCxyNCxyMixyMSwxNik7CisJU0k3KHIzLHIwLHI0LHIyLHIxKTsJS0wocjAscjIscjMscjEscjQsMTUpOworCVNJNihyMCxyMixyMyxyMSxyNCk7CUtMKHIzLHI0LHIxLHIwLHIyLDE0KTsKKwlTSTUocjMscjQscjEscjAscjIpOwlLTChyNCxyMixyMyxyMSxyMCwxMyk7CisJU0k0KHI0LHIyLHIzLHIxLHIwKTsJS0wocjQscjMscjAscjEscjIsMTIpOworCVNJMyhyNCxyMyxyMCxyMSxyMik7CUtMKHIwLHI0LHIyLHIxLHIzLDExKTsKKwlTSTIocjAscjQscjIscjEscjMpOwlLTChyNCxyMyxyMSxyMixyMCwxMCk7CisJU0kxKHI0LHIzLHIxLHIyLHIwKTsJS0wocjAscjMscjEscjIscjQsOSk7CisJU0kwKHIwLHIzLHIxLHIyLHI0KTsJS0wocjEscjQscjMscjAscjIsOCk7CisJU0k3KHIxLHI0LHIzLHIwLHIyKTsJS0wocjQscjAscjEscjIscjMsNyk7CisJU0k2KHI0LHIwLHIxLHIyLHIzKTsJS0wocjEscjMscjIscjQscjAsNik7CisJU0k1KHIxLHIzLHIyLHI0LHIwKTsJS0wocjMscjAscjEscjIscjQsNSk7CisJU0k0KHIzLHIwLHIxLHIyLHI0KTsJS0wocjMscjEscjQscjIscjAsNCk7CisJU0kzKHIzLHIxLHI0LHIyLHIwKTsJS0wocjQscjMscjAscjIscjEsMyk7CisJU0kyKHI0LHIzLHIwLHIyLHIxKTsJS0wocjMscjEscjIscjAscjQsMik7CisJU0kxKHIzLHIxLHIyLHIwLHI0KTsJS0wocjQscjEscjIscjAscjMsMSk7CisJU0kwKHI0LHIxLHIyLHIwLHIzKTsJSyhyMixyMyxyMSxyNCwwKTsKKworCWRbMF0gPSBjcHVfdG9fbGUzMihyMik7CisJZFsxXSA9IGNwdV90b19sZTMyKHIzKTsKKwlkWzJdID0gY3B1X3RvX2xlMzIocjEpOworCWRbM10gPSBjcHVfdG9fbGUzMihyNCk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgY3J5cHRvX2FsZyBzZXJwZW50X2FsZyA9IHsKKwkuY3JhX25hbWUJCT0JInNlcnBlbnQiLAorCS5jcmFfZmxhZ3MJCT0JQ1JZUFRPX0FMR19UWVBFX0NJUEhFUiwKKwkuY3JhX2Jsb2Nrc2l6ZQkJPQlTRVJQRU5UX0JMT0NLX1NJWkUsCisJLmNyYV9jdHhzaXplCQk9CXNpemVvZihzdHJ1Y3Qgc2VycGVudF9jdHgpLAorCS5jcmFfbW9kdWxlCQk9CVRISVNfTU9EVUxFLAorCS5jcmFfbGlzdAkJPQlMSVNUX0hFQURfSU5JVChzZXJwZW50X2FsZy5jcmFfbGlzdCksCisJLmNyYV91CQkJPQl7IC5jaXBoZXIgPSB7CisJLmNpYV9taW5fa2V5c2l6ZQk9CVNFUlBFTlRfTUlOX0tFWV9TSVpFLAorCS5jaWFfbWF4X2tleXNpemUJPQlTRVJQRU5UX01BWF9LRVlfU0laRSwKKwkuY2lhX3NldGtleSAgIAkJPSAJc2VycGVudF9zZXRrZXksCisJLmNpYV9lbmNyeXB0IAkJPQlzZXJwZW50X2VuY3J5cHQsCisJLmNpYV9kZWNyeXB0ICAJCT0Jc2VycGVudF9kZWNyeXB0IH0gfQorfTsKKworc3RhdGljIGludCB0bmVwcmVzX3NldGtleSh2b2lkICpjdHgsIGNvbnN0IHU4ICprZXksIHVuc2lnbmVkIGludCBrZXlsZW4sIHUzMiAqZmxhZ3MpCit7CisJdTggcmV2X2tleVtTRVJQRU5UX01BWF9LRVlfU0laRV07CisJaW50IGk7CisKKwlpZiAoKGtleWxlbiA8IFNFUlBFTlRfTUlOX0tFWV9TSVpFKQorCSAgICB8fCAoa2V5bGVuID4gU0VSUEVOVF9NQVhfS0VZX1NJWkUpKSB7CisJCSpmbGFncyB8PSBDUllQVE9fVEZNX1JFU19CQURfS0VZX0xFTjsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfSAKKworCWZvciAoaSA9IDA7IGkgPCBrZXlsZW47ICsraSkKKwkJcmV2X2tleVtrZXlsZW4gLSBpIC0gMV0gPSBrZXlbaV07CisgCisJcmV0dXJuIHNlcnBlbnRfc2V0a2V5KGN0eCwgcmV2X2tleSwga2V5bGVuLCBmbGFncyk7Cit9CisKK3N0YXRpYyB2b2lkIHRuZXByZXNfZW5jcnlwdCh2b2lkICpjdHgsIHU4ICpkc3QsIGNvbnN0IHU4ICpzcmMpCit7CisJY29uc3QgdTMyICogY29uc3QgcyA9IChjb25zdCB1MzIgKiBjb25zdClzcmM7CisJdTMyICogY29uc3QgZCA9ICh1MzIgKiBjb25zdClkc3Q7CisKKwl1MzIgcnNbNF0sIHJkWzRdOworCisJcnNbMF0gPSBzd2FiMzIoc1szXSk7CisJcnNbMV0gPSBzd2FiMzIoc1syXSk7CisJcnNbMl0gPSBzd2FiMzIoc1sxXSk7CisJcnNbM10gPSBzd2FiMzIoc1swXSk7CisKKwlzZXJwZW50X2VuY3J5cHQoY3R4LCAodTggKilyZCwgKHU4ICopcnMpOworCisJZFswXSA9IHN3YWIzMihyZFszXSk7CisJZFsxXSA9IHN3YWIzMihyZFsyXSk7CisJZFsyXSA9IHN3YWIzMihyZFsxXSk7CisJZFszXSA9IHN3YWIzMihyZFswXSk7Cit9CisKK3N0YXRpYyB2b2lkIHRuZXByZXNfZGVjcnlwdCh2b2lkICpjdHgsIHU4ICpkc3QsIGNvbnN0IHU4ICpzcmMpCit7CisJY29uc3QgdTMyICogY29uc3QgcyA9IChjb25zdCB1MzIgKiBjb25zdClzcmM7CisJdTMyICogY29uc3QgZCA9ICh1MzIgKiBjb25zdClkc3Q7CisKKwl1MzIgcnNbNF0sIHJkWzRdOworCisJcnNbMF0gPSBzd2FiMzIoc1szXSk7CisJcnNbMV0gPSBzd2FiMzIoc1syXSk7CisJcnNbMl0gPSBzd2FiMzIoc1sxXSk7CisJcnNbM10gPSBzd2FiMzIoc1swXSk7CisKKwlzZXJwZW50X2RlY3J5cHQoY3R4LCAodTggKilyZCwgKHU4ICopcnMpOworCisJZFswXSA9IHN3YWIzMihyZFszXSk7CisJZFsxXSA9IHN3YWIzMihyZFsyXSk7CisJZFsyXSA9IHN3YWIzMihyZFsxXSk7CisJZFszXSA9IHN3YWIzMihyZFswXSk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgY3J5cHRvX2FsZyB0bmVwcmVzX2FsZyA9IHsKKwkuY3JhX25hbWUJCT0JInRuZXByZXMiLAorCS5jcmFfZmxhZ3MJCT0JQ1JZUFRPX0FMR19UWVBFX0NJUEhFUiwKKwkuY3JhX2Jsb2Nrc2l6ZQkJPQlTRVJQRU5UX0JMT0NLX1NJWkUsCisJLmNyYV9jdHhzaXplCQk9CXNpemVvZihzdHJ1Y3Qgc2VycGVudF9jdHgpLAorCS5jcmFfbW9kdWxlCQk9CVRISVNfTU9EVUxFLAorCS5jcmFfbGlzdAkJPQlMSVNUX0hFQURfSU5JVChzZXJwZW50X2FsZy5jcmFfbGlzdCksCisJLmNyYV91CQkJPQl7IC5jaXBoZXIgPSB7CisJLmNpYV9taW5fa2V5c2l6ZQk9CVNFUlBFTlRfTUlOX0tFWV9TSVpFLAorCS5jaWFfbWF4X2tleXNpemUJPQlTRVJQRU5UX01BWF9LRVlfU0laRSwKKwkuY2lhX3NldGtleSAgIAkJPSAJdG5lcHJlc19zZXRrZXksCisJLmNpYV9lbmNyeXB0IAkJPQl0bmVwcmVzX2VuY3J5cHQsCisJLmNpYV9kZWNyeXB0ICAJCT0JdG5lcHJlc19kZWNyeXB0IH0gfQorfTsKKworc3RhdGljIGludCBfX2luaXQgaW5pdCh2b2lkKQoreworCWludCByZXQgPSBjcnlwdG9fcmVnaXN0ZXJfYWxnKCZzZXJwZW50X2FsZyk7CisKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcmV0ID0gY3J5cHRvX3JlZ2lzdGVyX2FsZygmdG5lcHJlc19hbGcpOworCisJaWYgKHJldCkKKwkJY3J5cHRvX3VucmVnaXN0ZXJfYWxnKCZzZXJwZW50X2FsZyk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBfX2V4aXQgZmluaSh2b2lkKQoreworCWNyeXB0b191bnJlZ2lzdGVyX2FsZygmdG5lcHJlc19hbGcpOworCWNyeXB0b191bnJlZ2lzdGVyX2FsZygmc2VycGVudF9hbGcpOworfQorCittb2R1bGVfaW5pdChpbml0KTsKK21vZHVsZV9leGl0KGZpbmkpOworCitNT0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfREVTQ1JJUFRJT04oIlNlcnBlbnQgYW5kIHRuZXByZXMgKGtlcm5lbGkgY29tcGF0aWJsZSBzZXJwZW50IHJldmVyc2VkKSBDaXBoZXIgQWxnb3JpdGhtIik7CitNT0RVTEVfQVVUSE9SKCJEYWcgQXJuZSBPc3ZpayA8b3N2aWtAaWkudWliLm5vPiIpOworTU9EVUxFX0FMSUFTKCJ0bmVwcmVzIik7CmRpZmYgLS1naXQgYS9jcnlwdG8vc2hhMS5jIGIvY3J5cHRvL3NoYTEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDE2ZjNiCi0tLSAvZGV2L251bGwKKysrIGIvY3J5cHRvL3NoYTEuYwpAQCAtMCwwICsxLDEzOSBAQAorLyoKKyAqIENyeXB0b2dyYXBoaWMgQVBJLgorICoKKyAqIFNIQTEgU2VjdXJlIEhhc2ggQWxnb3JpdGhtLgorICoKKyAqIERlcml2ZWQgZnJvbSBjcnlwdG9hcGkgaW1wbGVtZW50YXRpb24sIGFkYXB0ZWQgZm9yIGluLXBsYWNlCisgKiBzY2F0dGVybGlzdCBpbnRlcmZhY2UuCisgKgorICogQ29weXJpZ2h0IChjKSBBbGFuIFNtaXRoZWUuCisgKiBDb3B5cmlnaHQgKGMpIEFuZHJldyBNY0RvbmFsZCA8YW5kcmV3QG1jZG9uYWxkLm9yZy51az4KKyAqIENvcHlyaWdodCAoYykgSmVhbi1GcmFuY29pcyBEaXZlIDxqZWZAbGludXhiZS5vcmc+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlCisgKiBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pCisgKiBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKi8KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvbW0uaD4KKyNpbmNsdWRlIDxsaW51eC9jcnlwdG8uaD4KKyNpbmNsdWRlIDxsaW51eC9jcnlwdG9oYXNoLmg+CisjaW5jbHVkZSA8YXNtL3NjYXR0ZXJsaXN0Lmg+CisjaW5jbHVkZSA8YXNtL2J5dGVvcmRlci5oPgorCisjZGVmaW5lIFNIQTFfRElHRVNUX1NJWkUJMjAKKyNkZWZpbmUgU0hBMV9ITUFDX0JMT0NLX1NJWkUJNjQKKworc3RydWN0IHNoYTFfY3R4IHsKKyAgICAgICAgdTY0IGNvdW50OworICAgICAgICB1MzIgc3RhdGVbNV07CisgICAgICAgIHU4IGJ1ZmZlcls2NF07Cit9OworCitzdGF0aWMgdm9pZCBzaGExX2luaXQodm9pZCAqY3R4KQoreworCXN0cnVjdCBzaGExX2N0eCAqc2N0eCA9IGN0eDsKKwlzdGF0aWMgY29uc3Qgc3RydWN0IHNoYTFfY3R4IGluaXRzdGF0ZSA9IHsKKwkgIDAsCisJICB7IDB4Njc0NTIzMDEsIDB4RUZDREFCODksIDB4OThCQURDRkUsIDB4MTAzMjU0NzYsIDB4QzNEMkUxRjAgfSwKKwkgIHsgMCwgfQorCX07CisKKwkqc2N0eCA9IGluaXRzdGF0ZTsKK30KKworc3RhdGljIHZvaWQgc2hhMV91cGRhdGUodm9pZCAqY3R4LCBjb25zdCB1OCAqZGF0YSwgdW5zaWduZWQgaW50IGxlbikKK3sKKwlzdHJ1Y3Qgc2hhMV9jdHggKnNjdHggPSBjdHg7CisJdW5zaWduZWQgaW50IGksIGo7CisJdTMyIHRlbXBbU0hBX1dPUktTUEFDRV9XT1JEU107CisKKwlqID0gKHNjdHgtPmNvdW50ID4+IDMpICYgMHgzZjsKKwlzY3R4LT5jb3VudCArPSBsZW4gPDwgMzsKKworCWlmICgoaiArIGxlbikgPiA2MykgeworCQltZW1jcHkoJnNjdHgtPmJ1ZmZlcltqXSwgZGF0YSwgKGkgPSA2NC1qKSk7CisJCXNoYV90cmFuc2Zvcm0oc2N0eC0+c3RhdGUsIHNjdHgtPmJ1ZmZlciwgdGVtcCk7CisJCWZvciAoIDsgaSArIDYzIDwgbGVuOyBpICs9IDY0KSB7CisJCQlzaGFfdHJhbnNmb3JtKHNjdHgtPnN0YXRlLCAmZGF0YVtpXSwgdGVtcCk7CisJCX0KKwkJaiA9IDA7CisJfQorCWVsc2UgaSA9IDA7CisJbWVtc2V0KHRlbXAsIDAsIHNpemVvZih0ZW1wKSk7CisJbWVtY3B5KCZzY3R4LT5idWZmZXJbal0sICZkYXRhW2ldLCBsZW4gLSBpKTsKK30KKworCisvKiBBZGQgcGFkZGluZyBhbmQgcmV0dXJuIHRoZSBtZXNzYWdlIGRpZ2VzdC4gKi8KK3N0YXRpYyB2b2lkIHNoYTFfZmluYWwodm9pZCogY3R4LCB1OCAqb3V0KQoreworCXN0cnVjdCBzaGExX2N0eCAqc2N0eCA9IGN0eDsKKwl1MzIgaSwgaiwgaW5kZXgsIHBhZGxlbjsKKwl1NjQgdDsKKwl1OCBiaXRzWzhdID0geyAwLCB9OworCXN0YXRpYyBjb25zdCB1OCBwYWRkaW5nWzY0XSA9IHsgMHg4MCwgfTsKKworCXQgPSBzY3R4LT5jb3VudDsKKwliaXRzWzddID0gMHhmZiAmIHQ7IHQ+Pj04OworCWJpdHNbNl0gPSAweGZmICYgdDsgdD4+PTg7CisJYml0c1s1XSA9IDB4ZmYgJiB0OyB0Pj49ODsKKwliaXRzWzRdID0gMHhmZiAmIHQ7IHQ+Pj04OworCWJpdHNbM10gPSAweGZmICYgdDsgdD4+PTg7CisJYml0c1syXSA9IDB4ZmYgJiB0OyB0Pj49ODsKKwliaXRzWzFdID0gMHhmZiAmIHQ7IHQ+Pj04OworCWJpdHNbMF0gPSAweGZmICYgdDsKKworCS8qIFBhZCBvdXQgdG8gNTYgbW9kIDY0ICovCisJaW5kZXggPSAoc2N0eC0+Y291bnQgPj4gMykgJiAweDNmOworCXBhZGxlbiA9IChpbmRleCA8IDU2KSA/ICg1NiAtIGluZGV4KSA6ICgoNjQrNTYpIC0gaW5kZXgpOworCXNoYTFfdXBkYXRlKHNjdHgsIHBhZGRpbmcsIHBhZGxlbik7CisKKwkvKiBBcHBlbmQgbGVuZ3RoICovCisJc2hhMV91cGRhdGUoc2N0eCwgYml0cywgc2l6ZW9mIGJpdHMpOyAKKworCS8qIFN0b3JlIHN0YXRlIGluIGRpZ2VzdCAqLworCWZvciAoaSA9IGogPSAwOyBpIDwgNTsgaSsrLCBqICs9IDQpIHsKKwkJdTMyIHQyID0gc2N0eC0+c3RhdGVbaV07CisJCW91dFtqKzNdID0gdDIgJiAweGZmOyB0Mj4+PTg7CisJCW91dFtqKzJdID0gdDIgJiAweGZmOyB0Mj4+PTg7CisJCW91dFtqKzFdID0gdDIgJiAweGZmOyB0Mj4+PTg7CisJCW91dFtqICBdID0gdDIgJiAweGZmOworCX0KKworCS8qIFdpcGUgY29udGV4dCAqLworCW1lbXNldChzY3R4LCAwLCBzaXplb2YgKnNjdHgpOworfQorCitzdGF0aWMgc3RydWN0IGNyeXB0b19hbGcgYWxnID0geworCS5jcmFfbmFtZQk9CSJzaGExIiwKKwkuY3JhX2ZsYWdzCT0JQ1JZUFRPX0FMR19UWVBFX0RJR0VTVCwKKwkuY3JhX2Jsb2Nrc2l6ZQk9CVNIQTFfSE1BQ19CTE9DS19TSVpFLAorCS5jcmFfY3R4c2l6ZQk9CXNpemVvZihzdHJ1Y3Qgc2hhMV9jdHgpLAorCS5jcmFfbW9kdWxlCT0JVEhJU19NT0RVTEUsCisJLmNyYV9saXN0ICAgICAgID0gICAgICAgTElTVF9IRUFEX0lOSVQoYWxnLmNyYV9saXN0KSwKKwkuY3JhX3UJCT0JeyAuZGlnZXN0ID0geworCS5kaWFfZGlnZXN0c2l6ZQk9CVNIQTFfRElHRVNUX1NJWkUsCisJLmRpYV9pbml0ICAgCT0gCXNoYTFfaW5pdCwKKwkuZGlhX3VwZGF0ZSAJPQlzaGExX3VwZGF0ZSwKKwkuZGlhX2ZpbmFsICAJPQlzaGExX2ZpbmFsIH0gfQorfTsKKworc3RhdGljIGludCBfX2luaXQgaW5pdCh2b2lkKQoreworCXJldHVybiBjcnlwdG9fcmVnaXN0ZXJfYWxnKCZhbGcpOworfQorCitzdGF0aWMgdm9pZCBfX2V4aXQgZmluaSh2b2lkKQoreworCWNyeXB0b191bnJlZ2lzdGVyX2FsZygmYWxnKTsKK30KKworbW9kdWxlX2luaXQoaW5pdCk7Cittb2R1bGVfZXhpdChmaW5pKTsKKworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0RFU0NSSVBUSU9OKCJTSEExIFNlY3VyZSBIYXNoIEFsZ29yaXRobSIpOwpkaWZmIC0tZ2l0IGEvY3J5cHRvL3NoYTI1Ni5jIGIvY3J5cHRvL3NoYTI1Ni5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3OGRhNTAKLS0tIC9kZXYvbnVsbAorKysgYi9jcnlwdG8vc2hhMjU2LmMKQEAgLTAsMCArMSwzNDkgQEAKKy8qCisgKiBDcnlwdG9ncmFwaGljIEFQSS4KKyAqCisgKiBTSEEtMjU2LCBhcyBzcGVjaWZpZWQgaW4KKyAqIGh0dHA6Ly9jc3JjLm5pc3QuZ292L2NyeXB0dmFsL3Nocy9zaGEyNTYtMzg0LTUxMi5wZGYKKyAqCisgKiBTSEEtMjU2IGNvZGUgYnkgSmVhbi1MdWMgQ29va2UgPGpsY29va2VAY2VydGFpbmtleS5jb20+LgorICoKKyAqIENvcHlyaWdodCAoYykgSmVhbi1MdWMgQ29va2UgPGpsY29va2VAY2VydGFpbmtleS5jb20+CisgKiBDb3B5cmlnaHQgKGMpIEFuZHJldyBNY0RvbmFsZCA8YW5kcmV3QG1jZG9uYWxkLm9yZy51az4KKyAqIENvcHlyaWdodCAoYykgMjAwMiBKYW1lcyBNb3JyaXMgPGptb3JyaXNAaW50ZXJjb2RlLmNvbS5hdT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKKyAqIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgCisgKiBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKi8KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvbW0uaD4KKyNpbmNsdWRlIDxsaW51eC9jcnlwdG8uaD4KKyNpbmNsdWRlIDxhc20vc2NhdHRlcmxpc3QuaD4KKyNpbmNsdWRlIDxhc20vYnl0ZW9yZGVyLmg+CisKKyNkZWZpbmUgU0hBMjU2X0RJR0VTVF9TSVpFCTMyCisjZGVmaW5lIFNIQTI1Nl9ITUFDX0JMT0NLX1NJWkUJNjQKKworc3RydWN0IHNoYTI1Nl9jdHggeworCXUzMiBjb3VudFsyXTsKKwl1MzIgc3RhdGVbOF07CisJdTggYnVmWzEyOF07Cit9OworCitzdGF0aWMgaW5saW5lIHUzMiBDaCh1MzIgeCwgdTMyIHksIHUzMiB6KQoreworCXJldHVybiB6IF4gKHggJiAoeSBeIHopKTsKK30KKworc3RhdGljIGlubGluZSB1MzIgTWFqKHUzMiB4LCB1MzIgeSwgdTMyIHopCit7CisJcmV0dXJuICh4ICYgeSkgfCAoeiAmICh4IHwgeSkpOworfQorCisjZGVmaW5lIGUwKHgpICAgICAgIChyb3IzMih4LCAyKSBeIHJvcjMyKHgsMTMpIF4gcm9yMzIoeCwyMikpCisjZGVmaW5lIGUxKHgpICAgICAgIChyb3IzMih4LCA2KSBeIHJvcjMyKHgsMTEpIF4gcm9yMzIoeCwyNSkpCisjZGVmaW5lIHMwKHgpICAgICAgIChyb3IzMih4LCA3KSBeIHJvcjMyKHgsMTgpIF4gKHggPj4gMykpCisjZGVmaW5lIHMxKHgpICAgICAgIChyb3IzMih4LDE3KSBeIHJvcjMyKHgsMTkpIF4gKHggPj4gMTApKQorCisjZGVmaW5lIEgwICAgICAgICAgMHg2YTA5ZTY2NworI2RlZmluZSBIMSAgICAgICAgIDB4YmI2N2FlODUKKyNkZWZpbmUgSDIgICAgICAgICAweDNjNmVmMzcyCisjZGVmaW5lIEgzICAgICAgICAgMHhhNTRmZjUzYQorI2RlZmluZSBINCAgICAgICAgIDB4NTEwZTUyN2YKKyNkZWZpbmUgSDUgICAgICAgICAweDliMDU2ODhjCisjZGVmaW5lIEg2ICAgICAgICAgMHgxZjgzZDlhYgorI2RlZmluZSBINyAgICAgICAgIDB4NWJlMGNkMTkKKworc3RhdGljIGlubGluZSB2b2lkIExPQURfT1AoaW50IEksIHUzMiAqVywgY29uc3QgdTggKmlucHV0KQoreworCVdbSV0gPSBfX2JlMzJfdG9fY3B1KCAoKF9fYmUzMiopKGlucHV0KSlbSV0gKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIEJMRU5EX09QKGludCBJLCB1MzIgKlcpCit7CisJV1tJXSA9IHMxKFdbSS0yXSkgKyBXW0ktN10gKyBzMChXW0ktMTVdKSArIFdbSS0xNl07Cit9CisKK3N0YXRpYyB2b2lkIHNoYTI1Nl90cmFuc2Zvcm0odTMyICpzdGF0ZSwgY29uc3QgdTggKmlucHV0KQoreworCXUzMiBhLCBiLCBjLCBkLCBlLCBmLCBnLCBoLCB0MSwgdDI7CisJdTMyIFdbNjRdOworCWludCBpOworCisJLyogbG9hZCB0aGUgaW5wdXQgKi8KKwlmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykKKwkJTE9BRF9PUChpLCBXLCBpbnB1dCk7CisKKwkvKiBub3cgYmxlbmQgKi8KKwlmb3IgKGkgPSAxNjsgaSA8IDY0OyBpKyspCisJCUJMRU5EX09QKGksIFcpOworICAgIAorCS8qIGxvYWQgdGhlIHN0YXRlIGludG8gb3VyIHJlZ2lzdGVycyAqLworCWE9c3RhdGVbMF07ICBiPXN0YXRlWzFdOyAgYz1zdGF0ZVsyXTsgIGQ9c3RhdGVbM107CisJZT1zdGF0ZVs0XTsgIGY9c3RhdGVbNV07ICBnPXN0YXRlWzZdOyAgaD1zdGF0ZVs3XTsKKworCS8qIG5vdyBpdGVyYXRlICovCisJdDEgPSBoICsgZTEoZSkgKyBDaChlLGYsZykgKyAweDQyOGEyZjk4ICsgV1sgMF07CisJdDIgPSBlMChhKSArIE1haihhLGIsYyk7ICAgIGQrPXQxOyAgICBoPXQxK3QyOworCXQxID0gZyArIGUxKGQpICsgQ2goZCxlLGYpICsgMHg3MTM3NDQ5MSArIFdbIDFdOworCXQyID0gZTAoaCkgKyBNYWooaCxhLGIpOyAgICBjKz10MTsgICAgZz10MSt0MjsKKwl0MSA9IGYgKyBlMShjKSArIENoKGMsZCxlKSArIDB4YjVjMGZiY2YgKyBXWyAyXTsKKwl0MiA9IGUwKGcpICsgTWFqKGcsaCxhKTsgICAgYis9dDE7ICAgIGY9dDErdDI7CisJdDEgPSBlICsgZTEoYikgKyBDaChiLGMsZCkgKyAweGU5YjVkYmE1ICsgV1sgM107CisJdDIgPSBlMChmKSArIE1haihmLGcsaCk7ICAgIGErPXQxOyAgICBlPXQxK3QyOworCXQxID0gZCArIGUxKGEpICsgQ2goYSxiLGMpICsgMHgzOTU2YzI1YiArIFdbIDRdOworCXQyID0gZTAoZSkgKyBNYWooZSxmLGcpOyAgICBoKz10MTsgICAgZD10MSt0MjsKKwl0MSA9IGMgKyBlMShoKSArIENoKGgsYSxiKSArIDB4NTlmMTExZjEgKyBXWyA1XTsKKwl0MiA9IGUwKGQpICsgTWFqKGQsZSxmKTsgICAgZys9dDE7ICAgIGM9dDErdDI7CisJdDEgPSBiICsgZTEoZykgKyBDaChnLGgsYSkgKyAweDkyM2Y4MmE0ICsgV1sgNl07CisJdDIgPSBlMChjKSArIE1haihjLGQsZSk7ICAgIGYrPXQxOyAgICBiPXQxK3QyOworCXQxID0gYSArIGUxKGYpICsgQ2goZixnLGgpICsgMHhhYjFjNWVkNSArIFdbIDddOworCXQyID0gZTAoYikgKyBNYWooYixjLGQpOyAgICBlKz10MTsgICAgYT10MSt0MjsKKworCXQxID0gaCArIGUxKGUpICsgQ2goZSxmLGcpICsgMHhkODA3YWE5OCArIFdbIDhdOworCXQyID0gZTAoYSkgKyBNYWooYSxiLGMpOyAgICBkKz10MTsgICAgaD10MSt0MjsKKwl0MSA9IGcgKyBlMShkKSArIENoKGQsZSxmKSArIDB4MTI4MzViMDEgKyBXWyA5XTsKKwl0MiA9IGUwKGgpICsgTWFqKGgsYSxiKTsgICAgYys9dDE7ICAgIGc9dDErdDI7CisJdDEgPSBmICsgZTEoYykgKyBDaChjLGQsZSkgKyAweDI0MzE4NWJlICsgV1sxMF07CisJdDIgPSBlMChnKSArIE1haihnLGgsYSk7ICAgIGIrPXQxOyAgICBmPXQxK3QyOworCXQxID0gZSArIGUxKGIpICsgQ2goYixjLGQpICsgMHg1NTBjN2RjMyArIFdbMTFdOworCXQyID0gZTAoZikgKyBNYWooZixnLGgpOyAgICBhKz10MTsgICAgZT10MSt0MjsKKwl0MSA9IGQgKyBlMShhKSArIENoKGEsYixjKSArIDB4NzJiZTVkNzQgKyBXWzEyXTsKKwl0MiA9IGUwKGUpICsgTWFqKGUsZixnKTsgICAgaCs9dDE7ICAgIGQ9dDErdDI7CisJdDEgPSBjICsgZTEoaCkgKyBDaChoLGEsYikgKyAweDgwZGViMWZlICsgV1sxM107CisJdDIgPSBlMChkKSArIE1haihkLGUsZik7ICAgIGcrPXQxOyAgICBjPXQxK3QyOworCXQxID0gYiArIGUxKGcpICsgQ2goZyxoLGEpICsgMHg5YmRjMDZhNyArIFdbMTRdOworCXQyID0gZTAoYykgKyBNYWooYyxkLGUpOyAgICBmKz10MTsgICAgYj10MSt0MjsKKwl0MSA9IGEgKyBlMShmKSArIENoKGYsZyxoKSArIDB4YzE5YmYxNzQgKyBXWzE1XTsKKwl0MiA9IGUwKGIpICsgTWFqKGIsYyxkKTsgICAgZSs9dDE7ICAgIGE9dDErdDI7CisKKwl0MSA9IGggKyBlMShlKSArIENoKGUsZixnKSArIDB4ZTQ5YjY5YzEgKyBXWzE2XTsKKwl0MiA9IGUwKGEpICsgTWFqKGEsYixjKTsgICAgZCs9dDE7ICAgIGg9dDErdDI7CisJdDEgPSBnICsgZTEoZCkgKyBDaChkLGUsZikgKyAweGVmYmU0Nzg2ICsgV1sxN107CisJdDIgPSBlMChoKSArIE1haihoLGEsYik7ICAgIGMrPXQxOyAgICBnPXQxK3QyOworCXQxID0gZiArIGUxKGMpICsgQ2goYyxkLGUpICsgMHgwZmMxOWRjNiArIFdbMThdOworCXQyID0gZTAoZykgKyBNYWooZyxoLGEpOyAgICBiKz10MTsgICAgZj10MSt0MjsKKwl0MSA9IGUgKyBlMShiKSArIENoKGIsYyxkKSArIDB4MjQwY2ExY2MgKyBXWzE5XTsKKwl0MiA9IGUwKGYpICsgTWFqKGYsZyxoKTsgICAgYSs9dDE7ICAgIGU9dDErdDI7CisJdDEgPSBkICsgZTEoYSkgKyBDaChhLGIsYykgKyAweDJkZTkyYzZmICsgV1syMF07CisJdDIgPSBlMChlKSArIE1haihlLGYsZyk7ICAgIGgrPXQxOyAgICBkPXQxK3QyOworCXQxID0gYyArIGUxKGgpICsgQ2goaCxhLGIpICsgMHg0YTc0ODRhYSArIFdbMjFdOworCXQyID0gZTAoZCkgKyBNYWooZCxlLGYpOyAgICBnKz10MTsgICAgYz10MSt0MjsKKwl0MSA9IGIgKyBlMShnKSArIENoKGcsaCxhKSArIDB4NWNiMGE5ZGMgKyBXWzIyXTsKKwl0MiA9IGUwKGMpICsgTWFqKGMsZCxlKTsgICAgZis9dDE7ICAgIGI9dDErdDI7CisJdDEgPSBhICsgZTEoZikgKyBDaChmLGcsaCkgKyAweDc2Zjk4OGRhICsgV1syM107CisJdDIgPSBlMChiKSArIE1haihiLGMsZCk7ICAgIGUrPXQxOyAgICBhPXQxK3QyOworCisJdDEgPSBoICsgZTEoZSkgKyBDaChlLGYsZykgKyAweDk4M2U1MTUyICsgV1syNF07CisJdDIgPSBlMChhKSArIE1haihhLGIsYyk7ICAgIGQrPXQxOyAgICBoPXQxK3QyOworCXQxID0gZyArIGUxKGQpICsgQ2goZCxlLGYpICsgMHhhODMxYzY2ZCArIFdbMjVdOworCXQyID0gZTAoaCkgKyBNYWooaCxhLGIpOyAgICBjKz10MTsgICAgZz10MSt0MjsKKwl0MSA9IGYgKyBlMShjKSArIENoKGMsZCxlKSArIDB4YjAwMzI3YzggKyBXWzI2XTsKKwl0MiA9IGUwKGcpICsgTWFqKGcsaCxhKTsgICAgYis9dDE7ICAgIGY9dDErdDI7CisJdDEgPSBlICsgZTEoYikgKyBDaChiLGMsZCkgKyAweGJmNTk3ZmM3ICsgV1syN107CisJdDIgPSBlMChmKSArIE1haihmLGcsaCk7ICAgIGErPXQxOyAgICBlPXQxK3QyOworCXQxID0gZCArIGUxKGEpICsgQ2goYSxiLGMpICsgMHhjNmUwMGJmMyArIFdbMjhdOworCXQyID0gZTAoZSkgKyBNYWooZSxmLGcpOyAgICBoKz10MTsgICAgZD10MSt0MjsKKwl0MSA9IGMgKyBlMShoKSArIENoKGgsYSxiKSArIDB4ZDVhNzkxNDcgKyBXWzI5XTsKKwl0MiA9IGUwKGQpICsgTWFqKGQsZSxmKTsgICAgZys9dDE7ICAgIGM9dDErdDI7CisJdDEgPSBiICsgZTEoZykgKyBDaChnLGgsYSkgKyAweDA2Y2E2MzUxICsgV1szMF07CisJdDIgPSBlMChjKSArIE1haihjLGQsZSk7ICAgIGYrPXQxOyAgICBiPXQxK3QyOworCXQxID0gYSArIGUxKGYpICsgQ2goZixnLGgpICsgMHgxNDI5Mjk2NyArIFdbMzFdOworCXQyID0gZTAoYikgKyBNYWooYixjLGQpOyAgICBlKz10MTsgICAgYT10MSt0MjsKKworCXQxID0gaCArIGUxKGUpICsgQ2goZSxmLGcpICsgMHgyN2I3MGE4NSArIFdbMzJdOworCXQyID0gZTAoYSkgKyBNYWooYSxiLGMpOyAgICBkKz10MTsgICAgaD10MSt0MjsKKwl0MSA9IGcgKyBlMShkKSArIENoKGQsZSxmKSArIDB4MmUxYjIxMzggKyBXWzMzXTsKKwl0MiA9IGUwKGgpICsgTWFqKGgsYSxiKTsgICAgYys9dDE7ICAgIGc9dDErdDI7CisJdDEgPSBmICsgZTEoYykgKyBDaChjLGQsZSkgKyAweDRkMmM2ZGZjICsgV1szNF07CisJdDIgPSBlMChnKSArIE1haihnLGgsYSk7ICAgIGIrPXQxOyAgICBmPXQxK3QyOworCXQxID0gZSArIGUxKGIpICsgQ2goYixjLGQpICsgMHg1MzM4MGQxMyArIFdbMzVdOworCXQyID0gZTAoZikgKyBNYWooZixnLGgpOyAgICBhKz10MTsgICAgZT10MSt0MjsKKwl0MSA9IGQgKyBlMShhKSArIENoKGEsYixjKSArIDB4NjUwYTczNTQgKyBXWzM2XTsKKwl0MiA9IGUwKGUpICsgTWFqKGUsZixnKTsgICAgaCs9dDE7ICAgIGQ9dDErdDI7CisJdDEgPSBjICsgZTEoaCkgKyBDaChoLGEsYikgKyAweDc2NmEwYWJiICsgV1szN107CisJdDIgPSBlMChkKSArIE1haihkLGUsZik7ICAgIGcrPXQxOyAgICBjPXQxK3QyOworCXQxID0gYiArIGUxKGcpICsgQ2goZyxoLGEpICsgMHg4MWMyYzkyZSArIFdbMzhdOworCXQyID0gZTAoYykgKyBNYWooYyxkLGUpOyAgICBmKz10MTsgICAgYj10MSt0MjsKKwl0MSA9IGEgKyBlMShmKSArIENoKGYsZyxoKSArIDB4OTI3MjJjODUgKyBXWzM5XTsKKwl0MiA9IGUwKGIpICsgTWFqKGIsYyxkKTsgICAgZSs9dDE7ICAgIGE9dDErdDI7CisKKwl0MSA9IGggKyBlMShlKSArIENoKGUsZixnKSArIDB4YTJiZmU4YTEgKyBXWzQwXTsKKwl0MiA9IGUwKGEpICsgTWFqKGEsYixjKTsgICAgZCs9dDE7ICAgIGg9dDErdDI7CisJdDEgPSBnICsgZTEoZCkgKyBDaChkLGUsZikgKyAweGE4MWE2NjRiICsgV1s0MV07CisJdDIgPSBlMChoKSArIE1haihoLGEsYik7ICAgIGMrPXQxOyAgICBnPXQxK3QyOworCXQxID0gZiArIGUxKGMpICsgQ2goYyxkLGUpICsgMHhjMjRiOGI3MCArIFdbNDJdOworCXQyID0gZTAoZykgKyBNYWooZyxoLGEpOyAgICBiKz10MTsgICAgZj10MSt0MjsKKwl0MSA9IGUgKyBlMShiKSArIENoKGIsYyxkKSArIDB4Yzc2YzUxYTMgKyBXWzQzXTsKKwl0MiA9IGUwKGYpICsgTWFqKGYsZyxoKTsgICAgYSs9dDE7ICAgIGU9dDErdDI7CisJdDEgPSBkICsgZTEoYSkgKyBDaChhLGIsYykgKyAweGQxOTJlODE5ICsgV1s0NF07CisJdDIgPSBlMChlKSArIE1haihlLGYsZyk7ICAgIGgrPXQxOyAgICBkPXQxK3QyOworCXQxID0gYyArIGUxKGgpICsgQ2goaCxhLGIpICsgMHhkNjk5MDYyNCArIFdbNDVdOworCXQyID0gZTAoZCkgKyBNYWooZCxlLGYpOyAgICBnKz10MTsgICAgYz10MSt0MjsKKwl0MSA9IGIgKyBlMShnKSArIENoKGcsaCxhKSArIDB4ZjQwZTM1ODUgKyBXWzQ2XTsKKwl0MiA9IGUwKGMpICsgTWFqKGMsZCxlKTsgICAgZis9dDE7ICAgIGI9dDErdDI7CisJdDEgPSBhICsgZTEoZikgKyBDaChmLGcsaCkgKyAweDEwNmFhMDcwICsgV1s0N107CisJdDIgPSBlMChiKSArIE1haihiLGMsZCk7ICAgIGUrPXQxOyAgICBhPXQxK3QyOworCisJdDEgPSBoICsgZTEoZSkgKyBDaChlLGYsZykgKyAweDE5YTRjMTE2ICsgV1s0OF07CisJdDIgPSBlMChhKSArIE1haihhLGIsYyk7ICAgIGQrPXQxOyAgICBoPXQxK3QyOworCXQxID0gZyArIGUxKGQpICsgQ2goZCxlLGYpICsgMHgxZTM3NmMwOCArIFdbNDldOworCXQyID0gZTAoaCkgKyBNYWooaCxhLGIpOyAgICBjKz10MTsgICAgZz10MSt0MjsKKwl0MSA9IGYgKyBlMShjKSArIENoKGMsZCxlKSArIDB4Mjc0ODc3NGMgKyBXWzUwXTsKKwl0MiA9IGUwKGcpICsgTWFqKGcsaCxhKTsgICAgYis9dDE7ICAgIGY9dDErdDI7CisJdDEgPSBlICsgZTEoYikgKyBDaChiLGMsZCkgKyAweDM0YjBiY2I1ICsgV1s1MV07CisJdDIgPSBlMChmKSArIE1haihmLGcsaCk7ICAgIGErPXQxOyAgICBlPXQxK3QyOworCXQxID0gZCArIGUxKGEpICsgQ2goYSxiLGMpICsgMHgzOTFjMGNiMyArIFdbNTJdOworCXQyID0gZTAoZSkgKyBNYWooZSxmLGcpOyAgICBoKz10MTsgICAgZD10MSt0MjsKKwl0MSA9IGMgKyBlMShoKSArIENoKGgsYSxiKSArIDB4NGVkOGFhNGEgKyBXWzUzXTsKKwl0MiA9IGUwKGQpICsgTWFqKGQsZSxmKTsgICAgZys9dDE7ICAgIGM9dDErdDI7CisJdDEgPSBiICsgZTEoZykgKyBDaChnLGgsYSkgKyAweDViOWNjYTRmICsgV1s1NF07CisJdDIgPSBlMChjKSArIE1haihjLGQsZSk7ICAgIGYrPXQxOyAgICBiPXQxK3QyOworCXQxID0gYSArIGUxKGYpICsgQ2goZixnLGgpICsgMHg2ODJlNmZmMyArIFdbNTVdOworCXQyID0gZTAoYikgKyBNYWooYixjLGQpOyAgICBlKz10MTsgICAgYT10MSt0MjsKKworCXQxID0gaCArIGUxKGUpICsgQ2goZSxmLGcpICsgMHg3NDhmODJlZSArIFdbNTZdOworCXQyID0gZTAoYSkgKyBNYWooYSxiLGMpOyAgICBkKz10MTsgICAgaD10MSt0MjsKKwl0MSA9IGcgKyBlMShkKSArIENoKGQsZSxmKSArIDB4NzhhNTYzNmYgKyBXWzU3XTsKKwl0MiA9IGUwKGgpICsgTWFqKGgsYSxiKTsgICAgYys9dDE7ICAgIGc9dDErdDI7CisJdDEgPSBmICsgZTEoYykgKyBDaChjLGQsZSkgKyAweDg0Yzg3ODE0ICsgV1s1OF07CisJdDIgPSBlMChnKSArIE1haihnLGgsYSk7ICAgIGIrPXQxOyAgICBmPXQxK3QyOworCXQxID0gZSArIGUxKGIpICsgQ2goYixjLGQpICsgMHg4Y2M3MDIwOCArIFdbNTldOworCXQyID0gZTAoZikgKyBNYWooZixnLGgpOyAgICBhKz10MTsgICAgZT10MSt0MjsKKwl0MSA9IGQgKyBlMShhKSArIENoKGEsYixjKSArIDB4OTBiZWZmZmEgKyBXWzYwXTsKKwl0MiA9IGUwKGUpICsgTWFqKGUsZixnKTsgICAgaCs9dDE7ICAgIGQ9dDErdDI7CisJdDEgPSBjICsgZTEoaCkgKyBDaChoLGEsYikgKyAweGE0NTA2Y2ViICsgV1s2MV07CisJdDIgPSBlMChkKSArIE1haihkLGUsZik7ICAgIGcrPXQxOyAgICBjPXQxK3QyOworCXQxID0gYiArIGUxKGcpICsgQ2goZyxoLGEpICsgMHhiZWY5YTNmNyArIFdbNjJdOworCXQyID0gZTAoYykgKyBNYWooYyxkLGUpOyAgICBmKz10MTsgICAgYj10MSt0MjsKKwl0MSA9IGEgKyBlMShmKSArIENoKGYsZyxoKSArIDB4YzY3MTc4ZjIgKyBXWzYzXTsKKwl0MiA9IGUwKGIpICsgTWFqKGIsYyxkKTsgICAgZSs9dDE7ICAgIGE9dDErdDI7CisKKwlzdGF0ZVswXSArPSBhOyBzdGF0ZVsxXSArPSBiOyBzdGF0ZVsyXSArPSBjOyBzdGF0ZVszXSArPSBkOworCXN0YXRlWzRdICs9IGU7IHN0YXRlWzVdICs9IGY7IHN0YXRlWzZdICs9IGc7IHN0YXRlWzddICs9IGg7CisKKwkvKiBjbGVhciBhbnkgc2Vuc2l0aXZlIGluZm8uLi4gKi8KKwlhID0gYiA9IGMgPSBkID0gZSA9IGYgPSBnID0gaCA9IHQxID0gdDIgPSAwOworCW1lbXNldChXLCAwLCA2NCAqIHNpemVvZih1MzIpKTsKK30KKworc3RhdGljIHZvaWQgc2hhMjU2X2luaXQodm9pZCAqY3R4KQoreworCXN0cnVjdCBzaGEyNTZfY3R4ICpzY3R4ID0gY3R4OworCXNjdHgtPnN0YXRlWzBdID0gSDA7CisJc2N0eC0+c3RhdGVbMV0gPSBIMTsKKwlzY3R4LT5zdGF0ZVsyXSA9IEgyOworCXNjdHgtPnN0YXRlWzNdID0gSDM7CisJc2N0eC0+c3RhdGVbNF0gPSBINDsKKwlzY3R4LT5zdGF0ZVs1XSA9IEg1OworCXNjdHgtPnN0YXRlWzZdID0gSDY7CisJc2N0eC0+c3RhdGVbN10gPSBINzsKKwlzY3R4LT5jb3VudFswXSA9IHNjdHgtPmNvdW50WzFdID0gMDsKKwltZW1zZXQoc2N0eC0+YnVmLCAwLCBzaXplb2Yoc2N0eC0+YnVmKSk7Cit9CisKK3N0YXRpYyB2b2lkIHNoYTI1Nl91cGRhdGUodm9pZCAqY3R4LCBjb25zdCB1OCAqZGF0YSwgdW5zaWduZWQgaW50IGxlbikKK3sKKwlzdHJ1Y3Qgc2hhMjU2X2N0eCAqc2N0eCA9IGN0eDsKKwl1bnNpZ25lZCBpbnQgaSwgaW5kZXgsIHBhcnRfbGVuOworCisJLyogQ29tcHV0ZSBudW1iZXIgb2YgYnl0ZXMgbW9kIDEyOCAqLworCWluZGV4ID0gKHVuc2lnbmVkIGludCkoKHNjdHgtPmNvdW50WzBdID4+IDMpICYgMHgzZik7CisKKwkvKiBVcGRhdGUgbnVtYmVyIG9mIGJpdHMgKi8KKwlpZiAoKHNjdHgtPmNvdW50WzBdICs9IChsZW4gPDwgMykpIDwgKGxlbiA8PCAzKSkgeworCQlzY3R4LT5jb3VudFsxXSsrOworCQlzY3R4LT5jb3VudFsxXSArPSAobGVuID4+IDI5KTsKKwl9CisKKwlwYXJ0X2xlbiA9IDY0IC0gaW5kZXg7CisKKwkvKiBUcmFuc2Zvcm0gYXMgbWFueSB0aW1lcyBhcyBwb3NzaWJsZS4gKi8KKwlpZiAobGVuID49IHBhcnRfbGVuKSB7CisJCW1lbWNweSgmc2N0eC0+YnVmW2luZGV4XSwgZGF0YSwgcGFydF9sZW4pOworCQlzaGEyNTZfdHJhbnNmb3JtKHNjdHgtPnN0YXRlLCBzY3R4LT5idWYpOworCisJCWZvciAoaSA9IHBhcnRfbGVuOyBpICsgNjMgPCBsZW47IGkgKz0gNjQpCisJCQlzaGEyNTZfdHJhbnNmb3JtKHNjdHgtPnN0YXRlLCAmZGF0YVtpXSk7CisJCWluZGV4ID0gMDsKKwl9IGVsc2UgeworCQlpID0gMDsKKwl9CisJCisJLyogQnVmZmVyIHJlbWFpbmluZyBpbnB1dCAqLworCW1lbWNweSgmc2N0eC0+YnVmW2luZGV4XSwgJmRhdGFbaV0sIGxlbi1pKTsKK30KKworc3RhdGljIHZvaWQgc2hhMjU2X2ZpbmFsKHZvaWQqIGN0eCwgdTggKm91dCkKK3sKKwlzdHJ1Y3Qgc2hhMjU2X2N0eCAqc2N0eCA9IGN0eDsKKwl1OCBiaXRzWzhdOworCXVuc2lnbmVkIGludCBpbmRleCwgcGFkX2xlbiwgdDsKKwlpbnQgaSwgajsKKwlzdGF0aWMgY29uc3QgdTggcGFkZGluZ1s2NF0gPSB7IDB4ODAsIH07CisKKwkvKiBTYXZlIG51bWJlciBvZiBiaXRzICovCisJdCA9IHNjdHgtPmNvdW50WzBdOworCWJpdHNbN10gPSB0OyB0ID4+PSA4OworCWJpdHNbNl0gPSB0OyB0ID4+PSA4OworCWJpdHNbNV0gPSB0OyB0ID4+PSA4OworCWJpdHNbNF0gPSB0OworCXQgPSBzY3R4LT5jb3VudFsxXTsKKwliaXRzWzNdID0gdDsgdCA+Pj0gODsKKwliaXRzWzJdID0gdDsgdCA+Pj0gODsKKwliaXRzWzFdID0gdDsgdCA+Pj0gODsKKwliaXRzWzBdID0gdDsKKworCS8qIFBhZCBvdXQgdG8gNTYgbW9kIDY0LiAqLworCWluZGV4ID0gKHNjdHgtPmNvdW50WzBdID4+IDMpICYgMHgzZjsKKwlwYWRfbGVuID0gKGluZGV4IDwgNTYpID8gKDU2IC0gaW5kZXgpIDogKCg2NCs1NikgLSBpbmRleCk7CisJc2hhMjU2X3VwZGF0ZShzY3R4LCBwYWRkaW5nLCBwYWRfbGVuKTsKKworCS8qIEFwcGVuZCBsZW5ndGggKGJlZm9yZSBwYWRkaW5nKSAqLworCXNoYTI1Nl91cGRhdGUoc2N0eCwgYml0cywgOCk7CisKKwkvKiBTdG9yZSBzdGF0ZSBpbiBkaWdlc3QgKi8KKwlmb3IgKGkgPSBqID0gMDsgaSA8IDg7IGkrKywgaiArPSA0KSB7CisJCXQgPSBzY3R4LT5zdGF0ZVtpXTsKKwkJb3V0W2orM10gPSB0OyB0ID4+PSA4OworCQlvdXRbaisyXSA9IHQ7IHQgPj49IDg7CisJCW91dFtqKzFdID0gdDsgdCA+Pj0gODsKKwkJb3V0W2ogIF0gPSB0OworCX0KKworCS8qIFplcm9pemUgc2Vuc2l0aXZlIGluZm9ybWF0aW9uLiAqLworCW1lbXNldChzY3R4LCAwLCBzaXplb2YoKnNjdHgpKTsKK30KKworCitzdGF0aWMgc3RydWN0IGNyeXB0b19hbGcgYWxnID0geworCS5jcmFfbmFtZQk9CSJzaGEyNTYiLAorCS5jcmFfZmxhZ3MJPQlDUllQVE9fQUxHX1RZUEVfRElHRVNULAorCS5jcmFfYmxvY2tzaXplCT0JU0hBMjU2X0hNQUNfQkxPQ0tfU0laRSwKKwkuY3JhX2N0eHNpemUJPQlzaXplb2Yoc3RydWN0IHNoYTI1Nl9jdHgpLAorCS5jcmFfbW9kdWxlCT0JVEhJU19NT0RVTEUsCisJLmNyYV9saXN0ICAgICAgID0gICAgICAgTElTVF9IRUFEX0lOSVQoYWxnLmNyYV9saXN0KSwKKwkuY3JhX3UJCT0JeyAuZGlnZXN0ID0geworCS5kaWFfZGlnZXN0c2l6ZQk9CVNIQTI1Nl9ESUdFU1RfU0laRSwKKwkuZGlhX2luaXQgICAJPSAJc2hhMjU2X2luaXQsCisJLmRpYV91cGRhdGUgCT0Jc2hhMjU2X3VwZGF0ZSwKKwkuZGlhX2ZpbmFsICAJPQlzaGEyNTZfZmluYWwgfSB9Cit9OworCitzdGF0aWMgaW50IF9faW5pdCBpbml0KHZvaWQpCit7CisJcmV0dXJuIGNyeXB0b19yZWdpc3Rlcl9hbGcoJmFsZyk7Cit9CisKK3N0YXRpYyB2b2lkIF9fZXhpdCBmaW5pKHZvaWQpCit7CisJY3J5cHRvX3VucmVnaXN0ZXJfYWxnKCZhbGcpOworfQorCittb2R1bGVfaW5pdChpbml0KTsKK21vZHVsZV9leGl0KGZpbmkpOworCitNT0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfREVTQ1JJUFRJT04oIlNIQTI1NiBTZWN1cmUgSGFzaCBBbGdvcml0aG0iKTsKZGlmZiAtLWdpdCBhL2NyeXB0by9zaGE1MTIuYyBiL2NyeXB0by9zaGE1MTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjYzNDM4Ci0tLSAvZGV2L251bGwKKysrIGIvY3J5cHRvL3NoYTUxMi5jCkBAIC0wLDAgKzEsMzYyIEBACisvKiBTSEEtNTEyIGNvZGUgYnkgSmVhbi1MdWMgQ29va2UgPGpsY29va2VAY2VydGFpbmtleS5jb20+CisgKgorICogQ29weXJpZ2h0IChjKSBKZWFuLUx1YyBDb29rZSA8amxjb29rZUBjZXJ0YWlua2V5LmNvbT4KKyAqIENvcHlyaWdodCAoYykgQW5kcmV3IE1jRG9uYWxkIDxhbmRyZXdAbWNkb25hbGQub3JnLnVrPgorICogQ29weXJpZ2h0IChjKSAyMDAzIEt5bGUgTWNNYXJ0aW4gPGt5bGVAZGViaWFuLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55CisgKiBsYXRlciB2ZXJzaW9uLgorICoKKyAqLworCisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisKKyNpbmNsdWRlIDxsaW51eC9tbS5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9jcnlwdG8uaD4KKworI2luY2x1ZGUgPGFzbS9zY2F0dGVybGlzdC5oPgorI2luY2x1ZGUgPGFzbS9ieXRlb3JkZXIuaD4KKworI2RlZmluZSBTSEEzODRfRElHRVNUX1NJWkUgNDgKKyNkZWZpbmUgU0hBNTEyX0RJR0VTVF9TSVpFIDY0CisjZGVmaW5lIFNIQTM4NF9ITUFDX0JMT0NLX1NJWkUgIDk2CisjZGVmaW5lIFNIQTUxMl9ITUFDX0JMT0NLX1NJWkUgMTI4CisKK3N0cnVjdCBzaGE1MTJfY3R4IHsKKwl1NjQgc3RhdGVbOF07CisJdTMyIGNvdW50WzRdOworCXU4IGJ1ZlsxMjhdOworCXU2NCBXWzgwXTsKK307CisKK3N0YXRpYyBpbmxpbmUgdTY0IENoKHU2NCB4LCB1NjQgeSwgdTY0IHopCit7CisgICAgICAgIHJldHVybiB6IF4gKHggJiAoeSBeIHopKTsKK30KKworc3RhdGljIGlubGluZSB1NjQgTWFqKHU2NCB4LCB1NjQgeSwgdTY0IHopCit7CisgICAgICAgIHJldHVybiAoeCAmIHkpIHwgKHogJiAoeCB8IHkpKTsKK30KKworc3RhdGljIGlubGluZSB1NjQgUk9SdTY0KHU2NCB4LCB1NjQgeSkKK3sKKyAgICAgICAgcmV0dXJuICh4ID4+IHkpIHwgKHggPDwgKDY0IC0geSkpOworfQorCitzdGF0aWMgY29uc3QgdTY0IHNoYTUxMl9LWzgwXSA9IHsKKyAgICAgICAgMHg0MjhhMmY5OGQ3MjhhZTIyVUxMLCAweDcxMzc0NDkxMjNlZjY1Y2RVTEwsIDB4YjVjMGZiY2ZlYzRkM2IyZlVMTCwKKyAgICAgICAgMHhlOWI1ZGJhNTgxODlkYmJjVUxMLCAweDM5NTZjMjViZjM0OGI1MzhVTEwsIDB4NTlmMTExZjFiNjA1ZDAxOVVMTCwKKyAgICAgICAgMHg5MjNmODJhNGFmMTk0ZjliVUxMLCAweGFiMWM1ZWQ1ZGE2ZDgxMThVTEwsIDB4ZDgwN2FhOThhMzAzMDI0MlVMTCwKKyAgICAgICAgMHgxMjgzNWIwMTQ1NzA2ZmJlVUxMLCAweDI0MzE4NWJlNGVlNGIyOGNVTEwsIDB4NTUwYzdkYzNkNWZmYjRlMlVMTCwKKyAgICAgICAgMHg3MmJlNWQ3NGYyN2I4OTZmVUxMLCAweDgwZGViMWZlM2IxNjk2YjFVTEwsIDB4OWJkYzA2YTcyNWM3MTIzNVVMTCwKKyAgICAgICAgMHhjMTliZjE3NGNmNjkyNjk0VUxMLCAweGU0OWI2OWMxOWVmMTRhZDJVTEwsIDB4ZWZiZTQ3ODYzODRmMjVlM1VMTCwKKyAgICAgICAgMHgwZmMxOWRjNjhiOGNkNWI1VUxMLCAweDI0MGNhMWNjNzdhYzljNjVVTEwsIDB4MmRlOTJjNmY1OTJiMDI3NVVMTCwKKyAgICAgICAgMHg0YTc0ODRhYTZlYTZlNDgzVUxMLCAweDVjYjBhOWRjYmQ0MWZiZDRVTEwsIDB4NzZmOTg4ZGE4MzExNTNiNVVMTCwKKyAgICAgICAgMHg5ODNlNTE1MmVlNjZkZmFiVUxMLCAweGE4MzFjNjZkMmRiNDMyMTBVTEwsIDB4YjAwMzI3Yzg5OGZiMjEzZlVMTCwKKyAgICAgICAgMHhiZjU5N2ZjN2JlZWYwZWU0VUxMLCAweGM2ZTAwYmYzM2RhODhmYzJVTEwsIDB4ZDVhNzkxNDc5MzBhYTcyNVVMTCwKKyAgICAgICAgMHgwNmNhNjM1MWUwMDM4MjZmVUxMLCAweDE0MjkyOTY3MGEwZTZlNzBVTEwsIDB4MjdiNzBhODU0NmQyMmZmY1VMTCwKKyAgICAgICAgMHgyZTFiMjEzODVjMjZjOTI2VUxMLCAweDRkMmM2ZGZjNWFjNDJhZWRVTEwsIDB4NTMzODBkMTM5ZDk1YjNkZlVMTCwKKyAgICAgICAgMHg2NTBhNzM1NDhiYWY2M2RlVUxMLCAweDc2NmEwYWJiM2M3N2IyYThVTEwsIDB4ODFjMmM5MmU0N2VkYWVlNlVMTCwKKyAgICAgICAgMHg5MjcyMmM4NTE0ODIzNTNiVUxMLCAweGEyYmZlOGExNGNmMTAzNjRVTEwsIDB4YTgxYTY2NGJiYzQyMzAwMVVMTCwKKyAgICAgICAgMHhjMjRiOGI3MGQwZjg5NzkxVUxMLCAweGM3NmM1MWEzMDY1NGJlMzBVTEwsIDB4ZDE5MmU4MTlkNmVmNTIxOFVMTCwKKyAgICAgICAgMHhkNjk5MDYyNDU1NjVhOTEwVUxMLCAweGY0MGUzNTg1NTc3MTIwMmFVTEwsIDB4MTA2YWEwNzAzMmJiZDFiOFVMTCwKKyAgICAgICAgMHgxOWE0YzExNmI4ZDJkMGM4VUxMLCAweDFlMzc2YzA4NTE0MWFiNTNVTEwsIDB4Mjc0ODc3NGNkZjhlZWI5OVVMTCwKKyAgICAgICAgMHgzNGIwYmNiNWUxOWI0OGE4VUxMLCAweDM5MWMwY2IzYzVjOTVhNjNVTEwsIDB4NGVkOGFhNGFlMzQxOGFjYlVMTCwKKyAgICAgICAgMHg1YjljY2E0Zjc3NjNlMzczVUxMLCAweDY4MmU2ZmYzZDZiMmI4YTNVTEwsIDB4NzQ4ZjgyZWU1ZGVmYjJmY1VMTCwKKyAgICAgICAgMHg3OGE1NjM2ZjQzMTcyZjYwVUxMLCAweDg0Yzg3ODE0YTFmMGFiNzJVTEwsIDB4OGNjNzAyMDgxYTY0MzllY1VMTCwKKyAgICAgICAgMHg5MGJlZmZmYTIzNjMxZTI4VUxMLCAweGE0NTA2Y2ViZGU4MmJkZTlVTEwsIDB4YmVmOWEzZjdiMmM2NzkxNVVMTCwKKyAgICAgICAgMHhjNjcxNzhmMmUzNzI1MzJiVUxMLCAweGNhMjczZWNlZWEyNjYxOWNVTEwsIDB4ZDE4NmI4YzcyMWMwYzIwN1VMTCwKKyAgICAgICAgMHhlYWRhN2RkNmNkZTBlYjFlVUxMLCAweGY1N2Q0ZjdmZWU2ZWQxNzhVTEwsIDB4MDZmMDY3YWE3MjE3NmZiYVVMTCwKKyAgICAgICAgMHgwYTYzN2RjNWEyYzg5OGE2VUxMLCAweDExM2Y5ODA0YmVmOTBkYWVVTEwsIDB4MWI3MTBiMzUxMzFjNDcxYlVMTCwKKyAgICAgICAgMHgyOGRiNzdmNTIzMDQ3ZDg0VUxMLCAweDMyY2FhYjdiNDBjNzI0OTNVTEwsIDB4M2M5ZWJlMGExNWM5YmViY1VMTCwKKyAgICAgICAgMHg0MzFkNjdjNDljMTAwZDRjVUxMLCAweDRjYzVkNGJlY2IzZTQyYjZVTEwsIDB4NTk3ZjI5OWNmYzY1N2UyYVVMTCwKKyAgICAgICAgMHg1ZmNiNmZhYjNhZDZmYWVjVUxMLCAweDZjNDQxOThjNGE0NzU4MTdVTEwsCit9OworCisjZGVmaW5lIGUwKHgpICAgICAgIChST1J1NjQoeCwyOCkgXiBST1J1NjQoeCwzNCkgXiBST1J1NjQoeCwzOSkpCisjZGVmaW5lIGUxKHgpICAgICAgIChST1J1NjQoeCwxNCkgXiBST1J1NjQoeCwxOCkgXiBST1J1NjQoeCw0MSkpCisjZGVmaW5lIHMwKHgpICAgICAgIChST1J1NjQoeCwgMSkgXiBST1J1NjQoeCwgOCkgXiAoeCA+PiA3KSkKKyNkZWZpbmUgczEoeCkgICAgICAgKFJPUnU2NCh4LDE5KSBeIFJPUnU2NCh4LDYxKSBeICh4ID4+IDYpKQorCisvKiBIKiBpbml0aWFsIHN0YXRlIGZvciBTSEEtNTEyICovCisjZGVmaW5lIEgwICAgICAgICAgMHg2YTA5ZTY2N2YzYmNjOTA4VUxMCisjZGVmaW5lIEgxICAgICAgICAgMHhiYjY3YWU4NTg0Y2FhNzNiVUxMCisjZGVmaW5lIEgyICAgICAgICAgMHgzYzZlZjM3MmZlOTRmODJiVUxMCisjZGVmaW5lIEgzICAgICAgICAgMHhhNTRmZjUzYTVmMWQzNmYxVUxMCisjZGVmaW5lIEg0ICAgICAgICAgMHg1MTBlNTI3ZmFkZTY4MmQxVUxMCisjZGVmaW5lIEg1ICAgICAgICAgMHg5YjA1Njg4YzJiM2U2YzFmVUxMCisjZGVmaW5lIEg2ICAgICAgICAgMHgxZjgzZDlhYmZiNDFiZDZiVUxMCisjZGVmaW5lIEg3ICAgICAgICAgMHg1YmUwY2QxOTEzN2UyMTc5VUxMCisKKy8qIEgnKiBpbml0aWFsIHN0YXRlIGZvciBTSEEtMzg0ICovCisjZGVmaW5lIEhQMCAweGNiYmI5ZDVkYzEwNTllZDhVTEwKKyNkZWZpbmUgSFAxIDB4NjI5YTI5MmEzNjdjZDUwN1VMTAorI2RlZmluZSBIUDIgMHg5MTU5MDE1YTMwNzBkZDE3VUxMCisjZGVmaW5lIEhQMyAweDE1MmZlY2Q4ZjcwZTU5MzlVTEwKKyNkZWZpbmUgSFA0IDB4NjczMzI2NjdmZmMwMGIzMVVMTAorI2RlZmluZSBIUDUgMHg4ZWI0NGE4NzY4NTgxNTExVUxMCisjZGVmaW5lIEhQNiAweGRiMGMyZTBkNjRmOThmYTdVTEwKKyNkZWZpbmUgSFA3IDB4NDdiNTQ4MWRiZWZhNGZhNFVMTAorCitzdGF0aWMgaW5saW5lIHZvaWQgTE9BRF9PUChpbnQgSSwgdTY0ICpXLCBjb25zdCB1OCAqaW5wdXQpCit7CisJV1tJXSA9IF9fYmU2NF90b19jcHUoICgoX19iZTY0KikoaW5wdXQpKVtJXSApOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgQkxFTkRfT1AoaW50IEksIHU2NCAqVykKK3sKKwlXW0ldID0gczEoV1tJLTJdKSArIFdbSS03XSArIHMwKFdbSS0xNV0pICsgV1tJLTE2XTsKK30KKworc3RhdGljIHZvaWQKK3NoYTUxMl90cmFuc2Zvcm0odTY0ICpzdGF0ZSwgdTY0ICpXLCBjb25zdCB1OCAqaW5wdXQpCit7CisJdTY0IGEsIGIsIGMsIGQsIGUsIGYsIGcsIGgsIHQxLCB0MjsKKworCWludCBpOworCisJLyogbG9hZCB0aGUgaW5wdXQgKi8KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspCisgICAgICAgICAgICAgICAgTE9BRF9PUChpLCBXLCBpbnB1dCk7CisKKyAgICAgICAgZm9yIChpID0gMTY7IGkgPCA4MDsgaSsrKSB7CisgICAgICAgICAgICAgICAgQkxFTkRfT1AoaSwgVyk7CisgICAgICAgIH0KKworCS8qIGxvYWQgdGhlIHN0YXRlIGludG8gb3VyIHJlZ2lzdGVycyAqLworCWE9c3RhdGVbMF07ICAgYj1zdGF0ZVsxXTsgICBjPXN0YXRlWzJdOyAgIGQ9c3RhdGVbM107ICAKKwllPXN0YXRlWzRdOyAgIGY9c3RhdGVbNV07ICAgZz1zdGF0ZVs2XTsgICBoPXN0YXRlWzddOyAgCisgIAorCS8qIG5vdyBpdGVyYXRlICovCisJZm9yIChpPTA7IGk8ODA7IGkrPTgpIHsKKwkJdDEgPSBoICsgZTEoZSkgKyBDaChlLGYsZykgKyBzaGE1MTJfS1tpICBdICsgV1tpICBdOworCQl0MiA9IGUwKGEpICsgTWFqKGEsYixjKTsgICAgZCs9dDE7ICAgIGg9dDErdDI7CisJCXQxID0gZyArIGUxKGQpICsgQ2goZCxlLGYpICsgc2hhNTEyX0tbaSsxXSArIFdbaSsxXTsKKwkJdDIgPSBlMChoKSArIE1haihoLGEsYik7ICAgIGMrPXQxOyAgICBnPXQxK3QyOworCQl0MSA9IGYgKyBlMShjKSArIENoKGMsZCxlKSArIHNoYTUxMl9LW2krMl0gKyBXW2krMl07CisJCXQyID0gZTAoZykgKyBNYWooZyxoLGEpOyAgICBiKz10MTsgICAgZj10MSt0MjsKKwkJdDEgPSBlICsgZTEoYikgKyBDaChiLGMsZCkgKyBzaGE1MTJfS1tpKzNdICsgV1tpKzNdOworCQl0MiA9IGUwKGYpICsgTWFqKGYsZyxoKTsgICAgYSs9dDE7ICAgIGU9dDErdDI7CisJCXQxID0gZCArIGUxKGEpICsgQ2goYSxiLGMpICsgc2hhNTEyX0tbaSs0XSArIFdbaSs0XTsKKwkJdDIgPSBlMChlKSArIE1haihlLGYsZyk7ICAgIGgrPXQxOyAgICBkPXQxK3QyOworCQl0MSA9IGMgKyBlMShoKSArIENoKGgsYSxiKSArIHNoYTUxMl9LW2krNV0gKyBXW2krNV07CisJCXQyID0gZTAoZCkgKyBNYWooZCxlLGYpOyAgICBnKz10MTsgICAgYz10MSt0MjsKKwkJdDEgPSBiICsgZTEoZykgKyBDaChnLGgsYSkgKyBzaGE1MTJfS1tpKzZdICsgV1tpKzZdOworCQl0MiA9IGUwKGMpICsgTWFqKGMsZCxlKTsgICAgZis9dDE7ICAgIGI9dDErdDI7CisJCXQxID0gYSArIGUxKGYpICsgQ2goZixnLGgpICsgc2hhNTEyX0tbaSs3XSArIFdbaSs3XTsKKwkJdDIgPSBlMChiKSArIE1haihiLGMsZCk7ICAgIGUrPXQxOyAgICBhPXQxK3QyOworCX0KKyAgCisJc3RhdGVbMF0gKz0gYTsgc3RhdGVbMV0gKz0gYjsgc3RhdGVbMl0gKz0gYzsgc3RhdGVbM10gKz0gZDsgIAorCXN0YXRlWzRdICs9IGU7IHN0YXRlWzVdICs9IGY7IHN0YXRlWzZdICs9IGc7IHN0YXRlWzddICs9IGg7ICAKKworCS8qIGVyYXNlIG91ciBkYXRhICovCisJYSA9IGIgPSBjID0gZCA9IGUgPSBmID0gZyA9IGggPSB0MSA9IHQyID0gMDsKK30KKworc3RhdGljIHZvaWQKK3NoYTUxMl9pbml0KHZvaWQgKmN0eCkKK3sKKyAgICAgICAgc3RydWN0IHNoYTUxMl9jdHggKnNjdHggPSBjdHg7CisJc2N0eC0+c3RhdGVbMF0gPSBIMDsKKwlzY3R4LT5zdGF0ZVsxXSA9IEgxOworCXNjdHgtPnN0YXRlWzJdID0gSDI7CisJc2N0eC0+c3RhdGVbM10gPSBIMzsKKwlzY3R4LT5zdGF0ZVs0XSA9IEg0OworCXNjdHgtPnN0YXRlWzVdID0gSDU7CisJc2N0eC0+c3RhdGVbNl0gPSBINjsKKwlzY3R4LT5zdGF0ZVs3XSA9IEg3OworCXNjdHgtPmNvdW50WzBdID0gc2N0eC0+Y291bnRbMV0gPSBzY3R4LT5jb3VudFsyXSA9IHNjdHgtPmNvdW50WzNdID0gMDsKKwltZW1zZXQoc2N0eC0+YnVmLCAwLCBzaXplb2Yoc2N0eC0+YnVmKSk7Cit9CisKK3N0YXRpYyB2b2lkCitzaGEzODRfaW5pdCh2b2lkICpjdHgpCit7CisgICAgICAgIHN0cnVjdCBzaGE1MTJfY3R4ICpzY3R4ID0gY3R4OworICAgICAgICBzY3R4LT5zdGF0ZVswXSA9IEhQMDsKKyAgICAgICAgc2N0eC0+c3RhdGVbMV0gPSBIUDE7CisgICAgICAgIHNjdHgtPnN0YXRlWzJdID0gSFAyOworICAgICAgICBzY3R4LT5zdGF0ZVszXSA9IEhQMzsKKyAgICAgICAgc2N0eC0+c3RhdGVbNF0gPSBIUDQ7CisgICAgICAgIHNjdHgtPnN0YXRlWzVdID0gSFA1OworICAgICAgICBzY3R4LT5zdGF0ZVs2XSA9IEhQNjsKKyAgICAgICAgc2N0eC0+c3RhdGVbN10gPSBIUDc7CisgICAgICAgIHNjdHgtPmNvdW50WzBdID0gc2N0eC0+Y291bnRbMV0gPSBzY3R4LT5jb3VudFsyXSA9IHNjdHgtPmNvdW50WzNdID0gMDsKKyAgICAgICAgbWVtc2V0KHNjdHgtPmJ1ZiwgMCwgc2l6ZW9mKHNjdHgtPmJ1ZikpOworfQorCitzdGF0aWMgdm9pZAorc2hhNTEyX3VwZGF0ZSh2b2lkICpjdHgsIGNvbnN0IHU4ICpkYXRhLCB1bnNpZ25lZCBpbnQgbGVuKQoreworICAgICAgICBzdHJ1Y3Qgc2hhNTEyX2N0eCAqc2N0eCA9IGN0eDsKKworCXVuc2lnbmVkIGludCBpLCBpbmRleCwgcGFydF9sZW47CisKKwkvKiBDb21wdXRlIG51bWJlciBvZiBieXRlcyBtb2QgMTI4ICovCisJaW5kZXggPSAodW5zaWduZWQgaW50KSgoc2N0eC0+Y291bnRbMF0gPj4gMykgJiAweDdGKTsKKwkKKwkvKiBVcGRhdGUgbnVtYmVyIG9mIGJpdHMgKi8KKwlpZiAoKHNjdHgtPmNvdW50WzBdICs9IChsZW4gPDwgMykpIDwgKGxlbiA8PCAzKSkgeworCQlpZiAoKHNjdHgtPmNvdW50WzFdICs9IDEpIDwgMSkKKwkJCWlmICgoc2N0eC0+Y291bnRbMl0gKz0gMSkgPCAxKQorCQkJCXNjdHgtPmNvdW50WzNdKys7CisJCXNjdHgtPmNvdW50WzFdICs9IChsZW4gPj4gMjkpOworCX0KKwkKKyAgICAgICAgcGFydF9sZW4gPSAxMjggLSBpbmRleDsKKwkKKwkvKiBUcmFuc2Zvcm0gYXMgbWFueSB0aW1lcyBhcyBwb3NzaWJsZS4gKi8KKwlpZiAobGVuID49IHBhcnRfbGVuKSB7CisJCW1lbWNweSgmc2N0eC0+YnVmW2luZGV4XSwgZGF0YSwgcGFydF9sZW4pOworCQlzaGE1MTJfdHJhbnNmb3JtKHNjdHgtPnN0YXRlLCBzY3R4LT5XLCBzY3R4LT5idWYpOworCisJCWZvciAoaSA9IHBhcnRfbGVuOyBpICsgMTI3IDwgbGVuOyBpKz0xMjgpCisJCQlzaGE1MTJfdHJhbnNmb3JtKHNjdHgtPnN0YXRlLCBzY3R4LT5XLCAmZGF0YVtpXSk7CisKKwkJaW5kZXggPSAwOworCX0gZWxzZSB7CisJCWkgPSAwOworCX0KKworCS8qIEJ1ZmZlciByZW1haW5pbmcgaW5wdXQgKi8KKwltZW1jcHkoJnNjdHgtPmJ1ZltpbmRleF0sICZkYXRhW2ldLCBsZW4gLSBpKTsKKworCS8qIGVyYXNlIG91ciBkYXRhICovCisJbWVtc2V0KHNjdHgtPlcsIDAsIHNpemVvZihzY3R4LT5XKSk7Cit9CisKK3N0YXRpYyB2b2lkCitzaGE1MTJfZmluYWwodm9pZCAqY3R4LCB1OCAqaGFzaCkKK3sKKyAgICAgICAgc3RydWN0IHNoYTUxMl9jdHggKnNjdHggPSBjdHg7CisJCisgICAgICAgIHN0YXRpYyB1OCBwYWRkaW5nWzEyOF0gPSB7IDB4ODAsIH07CisKKyAgICAgICAgdTMyIHQ7CisJdTY0IHQyOworICAgICAgICB1OCBiaXRzWzEyOF07CisJdW5zaWduZWQgaW50IGluZGV4LCBwYWRfbGVuOworCWludCBpLCBqOworCisgICAgICAgIGluZGV4ID0gcGFkX2xlbiA9IHQgPSBpID0gaiA9IDA7CisgICAgICAgIHQyID0gMDsKKworCS8qIFNhdmUgbnVtYmVyIG9mIGJpdHMgKi8KKwl0ID0gc2N0eC0+Y291bnRbMF07CisJYml0c1sxNV0gPSB0OyB0Pj49ODsKKwliaXRzWzE0XSA9IHQ7IHQ+Pj04OworCWJpdHNbMTNdID0gdDsgdD4+PTg7CisJYml0c1sxMl0gPSB0OyAKKwl0ID0gc2N0eC0+Y291bnRbMV07CisJYml0c1sxMV0gPSB0OyB0Pj49ODsKKwliaXRzWzEwXSA9IHQ7IHQ+Pj04OworCWJpdHNbOSBdID0gdDsgdD4+PTg7CisJYml0c1s4IF0gPSB0OyAKKwl0ID0gc2N0eC0+Y291bnRbMl07CisJYml0c1s3IF0gPSB0OyB0Pj49ODsKKwliaXRzWzYgXSA9IHQ7IHQ+Pj04OworCWJpdHNbNSBdID0gdDsgdD4+PTg7CisJYml0c1s0IF0gPSB0OyAKKwl0ID0gc2N0eC0+Y291bnRbM107CisJYml0c1szIF0gPSB0OyB0Pj49ODsKKwliaXRzWzIgXSA9IHQ7IHQ+Pj04OworCWJpdHNbMSBdID0gdDsgdD4+PTg7CisJYml0c1swIF0gPSB0OyAKKworCS8qIFBhZCBvdXQgdG8gMTEyIG1vZCAxMjguICovCisJaW5kZXggPSAoc2N0eC0+Y291bnRbMF0gPj4gMykgJiAweDdmOworCXBhZF9sZW4gPSAoaW5kZXggPCAxMTIpID8gKDExMiAtIGluZGV4KSA6ICgoMTI4KzExMikgLSBpbmRleCk7CisJc2hhNTEyX3VwZGF0ZShzY3R4LCBwYWRkaW5nLCBwYWRfbGVuKTsKKworCS8qIEFwcGVuZCBsZW5ndGggKGJlZm9yZSBwYWRkaW5nKSAqLworCXNoYTUxMl91cGRhdGUoc2N0eCwgYml0cywgMTYpOworCisJLyogU3RvcmUgc3RhdGUgaW4gZGlnZXN0ICovCisJZm9yIChpID0gaiA9IDA7IGkgPCA4OyBpKyssIGogKz0gOCkgeworCQl0MiA9IHNjdHgtPnN0YXRlW2ldOworCQloYXNoW2orN10gPSAoY2hhcil0MiAmIDB4ZmY7IHQyPj49ODsKKwkJaGFzaFtqKzZdID0gKGNoYXIpdDIgJiAweGZmOyB0Mj4+PTg7CisJCWhhc2hbais1XSA9IChjaGFyKXQyICYgMHhmZjsgdDI+Pj04OworCQloYXNoW2orNF0gPSAoY2hhcil0MiAmIDB4ZmY7IHQyPj49ODsKKwkJaGFzaFtqKzNdID0gKGNoYXIpdDIgJiAweGZmOyB0Mj4+PTg7CisJCWhhc2hbaisyXSA9IChjaGFyKXQyICYgMHhmZjsgdDI+Pj04OworCQloYXNoW2orMV0gPSAoY2hhcil0MiAmIDB4ZmY7IHQyPj49ODsKKwkJaGFzaFtqICBdID0gKGNoYXIpdDIgJiAweGZmOworCX0KKwkKKwkvKiBaZXJvaXplIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbi4gKi8KKwltZW1zZXQoc2N0eCwgMCwgc2l6ZW9mKHN0cnVjdCBzaGE1MTJfY3R4KSk7Cit9CisKK3N0YXRpYyB2b2lkIHNoYTM4NF9maW5hbCh2b2lkICpjdHgsIHU4ICpoYXNoKQoreworICAgICAgICBzdHJ1Y3Qgc2hhNTEyX2N0eCAqc2N0eCA9IGN0eDsKKyAgICAgICAgdTggRFs2NF07CisKKyAgICAgICAgc2hhNTEyX2ZpbmFsKHNjdHgsIEQpOworCisgICAgICAgIG1lbWNweShoYXNoLCBELCA0OCk7CisgICAgICAgIG1lbXNldChELCAwLCA2NCk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgY3J5cHRvX2FsZyBzaGE1MTIgPSB7CisgICAgICAgIC5jcmFfbmFtZSAgICAgICA9ICJzaGE1MTIiLAorICAgICAgICAuY3JhX2ZsYWdzICAgICAgPSBDUllQVE9fQUxHX1RZUEVfRElHRVNULAorICAgICAgICAuY3JhX2Jsb2Nrc2l6ZSAgPSBTSEE1MTJfSE1BQ19CTE9DS19TSVpFLAorICAgICAgICAuY3JhX2N0eHNpemUgICAgPSBzaXplb2Yoc3RydWN0IHNoYTUxMl9jdHgpLAorICAgICAgICAuY3JhX21vZHVsZSAgICAgPSBUSElTX01PRFVMRSwKKyAgICAgICAgLmNyYV9saXN0ICAgICAgID0gTElTVF9IRUFEX0lOSVQoc2hhNTEyLmNyYV9saXN0KSwKKyAgICAgICAgLmNyYV91ICAgICAgICAgID0geyAuZGlnZXN0ID0geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZGlhX2RpZ2VzdHNpemUgPSBTSEE1MTJfRElHRVNUX1NJWkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5kaWFfaW5pdCAgICAgICA9IHNoYTUxMl9pbml0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZGlhX3VwZGF0ZSAgICAgPSBzaGE1MTJfdXBkYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZGlhX2ZpbmFsICAgICAgPSBzaGE1MTJfZmluYWwgfQorICAgICAgICB9Cit9OworCitzdGF0aWMgc3RydWN0IGNyeXB0b19hbGcgc2hhMzg0ID0geworICAgICAgICAuY3JhX25hbWUgICAgICAgPSAic2hhMzg0IiwKKyAgICAgICAgLmNyYV9mbGFncyAgICAgID0gQ1JZUFRPX0FMR19UWVBFX0RJR0VTVCwKKyAgICAgICAgLmNyYV9ibG9ja3NpemUgID0gU0hBMzg0X0hNQUNfQkxPQ0tfU0laRSwKKyAgICAgICAgLmNyYV9jdHhzaXplICAgID0gc2l6ZW9mKHN0cnVjdCBzaGE1MTJfY3R4KSwKKyAgICAgICAgLmNyYV9tb2R1bGUgICAgID0gVEhJU19NT0RVTEUsCisgICAgICAgIC5jcmFfbGlzdCAgICAgICA9IExJU1RfSEVBRF9JTklUKHNoYTM4NC5jcmFfbGlzdCksCisgICAgICAgIC5jcmFfdSAgICAgICAgICA9IHsgLmRpZ2VzdCA9IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmRpYV9kaWdlc3RzaXplID0gU0hBMzg0X0RJR0VTVF9TSVpFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZGlhX2luaXQgICAgICAgPSBzaGEzODRfaW5pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmRpYV91cGRhdGUgICAgID0gc2hhNTEyX3VwZGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmRpYV9maW5hbCAgICAgID0gc2hhMzg0X2ZpbmFsIH0KKyAgICAgICAgfQorfTsKKworTU9EVUxFX0FMSUFTKCJzaGEzODQiKTsKKworc3RhdGljIGludCBfX2luaXQgaW5pdCh2b2lkKQoreworICAgICAgICBpbnQgcmV0ID0gMDsKKworICAgICAgICBpZiAoKHJldCA9IGNyeXB0b19yZWdpc3Rlcl9hbGcoJnNoYTM4NCkpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgaWYgKChyZXQgPSBjcnlwdG9fcmVnaXN0ZXJfYWxnKCZzaGE1MTIpKSA8IDApCisgICAgICAgICAgICAgICAgY3J5cHRvX3VucmVnaXN0ZXJfYWxnKCZzaGEzODQpOworb3V0OgorICAgICAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBfX2V4aXQgZmluaSh2b2lkKQoreworICAgICAgICBjcnlwdG9fdW5yZWdpc3Rlcl9hbGcoJnNoYTM4NCk7CisgICAgICAgIGNyeXB0b191bnJlZ2lzdGVyX2FsZygmc2hhNTEyKTsKK30KKworbW9kdWxlX2luaXQoaW5pdCk7Cittb2R1bGVfZXhpdChmaW5pKTsKKworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0RFU0NSSVBUSU9OKCJTSEEtNTEyIGFuZCBTSEEtMzg0IFNlY3VyZSBIYXNoIEFsZ29yaXRobXMiKTsKZGlmZiAtLWdpdCBhL2NyeXB0by90Y3J5cHQuYyBiL2NyeXB0by90Y3J5cHQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmIwMzUyCi0tLSAvZGV2L251bGwKKysrIGIvY3J5cHRvL3RjcnlwdC5jCkBAIC0wLDAgKzEsOTEwIEBACisvKiAKKyAqIFF1aWNrICYgZGlydHkgY3J5cHRvIHRlc3RpbmcgbW9kdWxlLgorICoKKyAqIFRoaXMgd2lsbCBvbmx5IGV4aXN0IHVudGlsIHdlIGhhdmUgYSBiZXR0ZXIgdGVzdGluZyBtZWNoYW5pc20KKyAqIChlLmcuIGEgY2hhciBkZXZpY2UpLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwMiBKYW1lcyBNb3JyaXMgPGptb3JyaXNAaW50ZXJjb2RlLmNvbS5hdT4KKyAqIENvcHlyaWdodCAoYykgMjAwMiBKZWFuLUZyYW5jb2lzIERpdmUgPGplZkBsaW51eGJlLm9yZz4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKKyAqIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgCisgKiBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAxNCAtIDA5IC0gMjAwMyAKKyAqCVJld3JpdHRlbiBieSBLYXJ0aWtleSBNYWhlbmRyYSBCaGF0dAorICovCisKKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvbW0uaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8YXNtL3NjYXR0ZXJsaXN0Lmg+CisjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+CisjaW5jbHVkZSA8bGludXgvY3J5cHRvLmg+CisjaW5jbHVkZSA8bGludXgvaGlnaG1lbS5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZXBhcmFtLmg+CisjaW5jbHVkZSAidGNyeXB0LmgiCisKKy8qCisgKiBOZWVkIHRvIGttYWxsb2MoKSBtZW1vcnkgZm9yIHRlc3Rpbmcga21hcCgpLgorICovCisjZGVmaW5lIFRWTUVNU0laRQk0MDk2CisjZGVmaW5lIFhCVUZTSVpFCTMyNzY4CisKKy8qCisgKiBJbmRleGVzIGludG8gdGhlIHhidWYgdG8gc2ltdWxhdGUgY3Jvc3MtcGFnZSBhY2Nlc3MuCisgKi8KKyNkZWZpbmUgSURYMQkJMzcKKyNkZWZpbmUgSURYMgkJMzI0MDAKKyNkZWZpbmUgSURYMwkJMQorI2RlZmluZSBJRFg0CQk4MTkzCisjZGVmaW5lIElEWDUJCTIyMjIyCisjZGVmaW5lIElEWDYJCTE3MTAxCisjZGVmaW5lIElEWDcJCTI3MzMzCisjZGVmaW5lIElEWDgJCTMwMDAKKworLyoKKyogVXNlZCBieSB0ZXN0X2NpcGhlcigpCisqLworI2RlZmluZSBFTkNSWVBUIDEKKyNkZWZpbmUgREVDUllQVCAwCisjZGVmaW5lIE1PREVfRUNCIDEKKyNkZWZpbmUgTU9ERV9DQkMgMAorCitzdGF0aWMgdW5zaWduZWQgaW50IElEWFs4XSA9IHsgSURYMSwgSURYMiwgSURYMywgSURYNCwgSURYNSwgSURYNiwgSURYNywgSURYOCB9OworCitzdGF0aWMgaW50IG1vZGU7CitzdGF0aWMgY2hhciAqeGJ1ZjsKK3N0YXRpYyBjaGFyICp0dm1lbTsKKworc3RhdGljIGNoYXIgKmNoZWNrW10gPSB7CisJImRlcyIsICJtZDUiLCAiZGVzM19lZGUiLCAicm90MTMiLCAic2hhMSIsICJzaGEyNTYiLCAiYmxvd2Zpc2giLAorCSJ0d29maXNoIiwgInNlcnBlbnQiLCAic2hhMzg0IiwgInNoYTUxMiIsICJtZDQiLCAiYWVzIiwgImNhc3Q2IiwgCisJImFyYzQiLCAibWljaGFlbF9taWMiLCAiZGVmbGF0ZSIsICJjcmMzMmMiLCAidGVhIiwgInh0ZWEiLCAKKwkia2hhemFkIiwgIndwNTEyIiwgIndwMzg0IiwgIndwMjU2IiwgInRuZXByZXMiLCBOVUxMCit9OworCitzdGF0aWMgdm9pZAoraGV4ZHVtcCh1bnNpZ25lZCBjaGFyICpidWYsIHVuc2lnbmVkIGludCBsZW4pCit7CisJd2hpbGUgKGxlbi0tKQorCQlwcmludGsoIiUwMngiLCAqYnVmKyspOworCisJcHJpbnRrKCJcbiIpOworfQorCitzdGF0aWMgdm9pZCAKK3Rlc3RfaGFzaCAoY2hhciAqIGFsZ28sIHN0cnVjdCBoYXNoX3Rlc3R2ZWMgKiB0ZW1wbGF0ZSwgdW5zaWduZWQgaW50IHRjb3VudCkKK3sKKwljaGFyICpwOyAKKyAgICAgICAgdW5zaWduZWQgaW50IGksIGosIGssIHRlbXA7CisgICAgICAgIHN0cnVjdCBzY2F0dGVybGlzdCBzZ1s4XTsKKyAgICAgICAgY2hhciByZXN1bHRbNjRdOworICAgICAgICBzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtOworICAgICAgICBzdHJ1Y3QgaGFzaF90ZXN0dmVjICpoYXNoX3R2OworICAgICAgICB1bnNpZ25lZCBpbnQgdHNpemU7CisJIAorICAgICAgICBwcmludGsoIlxudGVzdGluZyAlc1xuIiwgYWxnbyk7CisKKwl0c2l6ZSA9IHNpemVvZiAoc3RydWN0IGhhc2hfdGVzdHZlYyk7CisJdHNpemUgKj0gdGNvdW50OworCQorCWlmICh0c2l6ZSA+IFRWTUVNU0laRSkgeworCQlwcmludGsoInRlbXBsYXRlICgldSkgdG9vIGJpZyBmb3IgdHZtZW0gKCV1KVxuIiwgdHNpemUsIFRWTUVNU0laRSk7CisJCXJldHVybjsKKwl9CisKKwltZW1jcHkodHZtZW0sIHRlbXBsYXRlLCB0c2l6ZSk7CisJaGFzaF90diA9ICh2b2lkICopIHR2bWVtOworCXRmbSA9IGNyeXB0b19hbGxvY190Zm0oYWxnbywgMCk7CisJaWYgKHRmbSA9PSBOVUxMKSB7CisJCXByaW50aygiZmFpbGVkIHRvIGxvYWQgdHJhbnNmb3JtIGZvciAlc1xuIiwgYWxnbyk7CisJCXJldHVybjsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgdGNvdW50OyBpKyspIHsKKwkJcHJpbnRrICgidGVzdCAldTpcbiIsIGkgKyAxKTsKKwkJbWVtc2V0IChyZXN1bHQsIDAsIDY0KTsKKworCQlwID0gaGFzaF90dltpXS5wbGFpbnRleHQ7CisJCXNnWzBdLnBhZ2UgPSB2aXJ0X3RvX3BhZ2UgKHApOworCQlzZ1swXS5vZmZzZXQgPSBvZmZzZXRfaW5fcGFnZSAocCk7CisJCXNnWzBdLmxlbmd0aCA9IGhhc2hfdHZbaV0ucHNpemU7CisKKwkJY3J5cHRvX2RpZ2VzdF9pbml0ICh0Zm0pOworCQlpZiAodGZtLT5jcnRfdS5kaWdlc3QuZGl0X3NldGtleSkgeworCQkJY3J5cHRvX2RpZ2VzdF9zZXRrZXkgKHRmbSwgaGFzaF90dltpXS5rZXksCisJCQkJCSAgICAgIGhhc2hfdHZbaV0ua3NpemUpOworCQl9CisJCWNyeXB0b19kaWdlc3RfdXBkYXRlICh0Zm0sIHNnLCAxKTsKKwkJY3J5cHRvX2RpZ2VzdF9maW5hbCAodGZtLCByZXN1bHQpOworCisJCWhleGR1bXAgKHJlc3VsdCwgY3J5cHRvX3RmbV9hbGdfZGlnZXN0c2l6ZSAodGZtKSk7CisJCXByaW50aygiJXNcbiIsCisJCQltZW1jbXAocmVzdWx0LCBoYXNoX3R2W2ldLmRpZ2VzdCwKKwkJCQljcnlwdG9fdGZtX2FsZ19kaWdlc3RzaXplKHRmbSkpID8gImZhaWwiIDoKKwkJCSJwYXNzIik7CisJfQorCisJcHJpbnRrICgidGVzdGluZyAlcyBhY3Jvc3MgcGFnZXNcbiIsIGFsZ28pOworCisJLyogc2V0dXAgdGhlIGR1bW15IGJ1ZmZlciBmaXJzdCAqLworICAgICAgICBtZW1zZXQoeGJ1ZiwgMCwgWEJVRlNJWkUpOworCisJaiA9IDA7CisJZm9yIChpID0gMDsgaSA8IHRjb3VudDsgaSsrKSB7CisJCWlmIChoYXNoX3R2W2ldLm5wKSB7CisJCQlqKys7CisJCQlwcmludGsgKCJ0ZXN0ICV1OlxuIiwgaik7CisJCQltZW1zZXQgKHJlc3VsdCwgMCwgNjQpOworCisJCQl0ZW1wID0gMDsKKwkJCWZvciAoayA9IDA7IGsgPCBoYXNoX3R2W2ldLm5wOyBrKyspIHsKKwkJCQltZW1jcHkgKCZ4YnVmW0lEWFtrXV0sIGhhc2hfdHZbaV0ucGxhaW50ZXh0ICsgdGVtcCwgCisJCQkJCQloYXNoX3R2W2ldLnRhcFtrXSk7CQorCQkJCXRlbXAgKz0gaGFzaF90dltpXS50YXBba107CisJCQkJcCA9ICZ4YnVmW0lEWFtrXV07CisJCQkJc2dba10ucGFnZSA9IHZpcnRfdG9fcGFnZSAocCk7CisJCQkJc2dba10ub2Zmc2V0ID0gb2Zmc2V0X2luX3BhZ2UgKHApOworCQkJCXNnW2tdLmxlbmd0aCA9IGhhc2hfdHZbaV0udGFwW2tdOworCQkJfQorCisJCQljcnlwdG9fZGlnZXN0X2RpZ2VzdCAodGZtLCBzZywgaGFzaF90dltpXS5ucCwgcmVzdWx0KTsKKwkJCQorCQkJaGV4ZHVtcCAocmVzdWx0LCBjcnlwdG9fdGZtX2FsZ19kaWdlc3RzaXplICh0Zm0pKTsKKwkJCXByaW50aygiJXNcbiIsCisJCQkJbWVtY21wKHJlc3VsdCwgaGFzaF90dltpXS5kaWdlc3QsCisJCQkJCWNyeXB0b190Zm1fYWxnX2RpZ2VzdHNpemUodGZtKSkgPyAiZmFpbCIgOgorCQkJCSJwYXNzIik7CisJCX0KKwl9CisJCisJY3J5cHRvX2ZyZWVfdGZtICh0Zm0pOworfQorCisKKyNpZmRlZiBDT05GSUdfQ1JZUFRPX0hNQUMKKworc3RhdGljIHZvaWQKK3Rlc3RfaG1hYyhjaGFyICphbGdvLCBzdHJ1Y3QgaG1hY190ZXN0dmVjICogdGVtcGxhdGUsIHVuc2lnbmVkIGludCB0Y291bnQpCit7CisJY2hhciAqcDsKKwl1bnNpZ25lZCBpbnQgaSwgaiwgaywgdGVtcDsKKwlzdHJ1Y3Qgc2NhdHRlcmxpc3Qgc2dbOF07CisJY2hhciByZXN1bHRbNjRdOworCXN0cnVjdCBjcnlwdG9fdGZtICp0Zm07CisJc3RydWN0IGhtYWNfdGVzdHZlYyAqaG1hY190djsKKwl1bnNpZ25lZCBpbnQgdHNpemUsIGtsZW47CisKKwl0Zm0gPSBjcnlwdG9fYWxsb2NfdGZtKGFsZ28sIDApOworCWlmICh0Zm0gPT0gTlVMTCkgeworCQlwcmludGsoImZhaWxlZCB0byBsb2FkIHRyYW5zZm9ybSBmb3IgJXNcbiIsIGFsZ28pOworCQlyZXR1cm47CisJfQorCisJcHJpbnRrKCJcbnRlc3RpbmcgaG1hY18lc1xuIiwgYWxnbyk7CisJCisJdHNpemUgPSBzaXplb2YgKHN0cnVjdCBobWFjX3Rlc3R2ZWMpOworCXRzaXplICo9IHRjb3VudDsKKwlpZiAodHNpemUgPiBUVk1FTVNJWkUpIHsKKwkJcHJpbnRrKCJ0ZW1wbGF0ZSAoJXUpIHRvbyBiaWcgZm9yIHR2bWVtICgldSlcbiIsIHRzaXplLAorCQkgICAgICAgVFZNRU1TSVpFKTsKKwkJZ290byBvdXQ7CisJfQorCisJbWVtY3B5KHR2bWVtLCB0ZW1wbGF0ZSwgdHNpemUpOworCWhtYWNfdHYgPSAodm9pZCAqKSB0dm1lbTsKKworCWZvciAoaSA9IDA7IGkgPCB0Y291bnQ7IGkrKykgeworCQlwcmludGsoInRlc3QgJXU6XG4iLCBpICsgMSk7CisJCW1lbXNldChyZXN1bHQsIDAsIHNpemVvZiAocmVzdWx0KSk7CisKKwkJcCA9IGhtYWNfdHZbaV0ucGxhaW50ZXh0OworCQlrbGVuID0gaG1hY190dltpXS5rc2l6ZTsKKwkJc2dbMF0ucGFnZSA9IHZpcnRfdG9fcGFnZShwKTsKKwkJc2dbMF0ub2Zmc2V0ID0gb2Zmc2V0X2luX3BhZ2UocCk7CisJCXNnWzBdLmxlbmd0aCA9IGhtYWNfdHZbaV0ucHNpemU7CisKKwkJY3J5cHRvX2htYWModGZtLCBobWFjX3R2W2ldLmtleSwgJmtsZW4sIHNnLCAxLCByZXN1bHQpOworCisJCWhleGR1bXAocmVzdWx0LCBjcnlwdG9fdGZtX2FsZ19kaWdlc3RzaXplKHRmbSkpOworCQlwcmludGsoIiVzXG4iLAorCQkgICAgICAgbWVtY21wKHJlc3VsdCwgaG1hY190dltpXS5kaWdlc3QsCisJCQkgICAgICBjcnlwdG9fdGZtX2FsZ19kaWdlc3RzaXplKHRmbSkpID8gImZhaWwiIDoKKwkJICAgICAgICJwYXNzIik7CisJfQorCisJcHJpbnRrKCJcbnRlc3RpbmcgaG1hY18lcyBhY3Jvc3MgcGFnZXNcbiIsIGFsZ28pOworCisJbWVtc2V0KHhidWYsIDAsIFhCVUZTSVpFKTsKKwkKKwlqID0gMDsKKwlmb3IgKGkgPSAwOyBpIDwgdGNvdW50OyBpKyspIHsKKwkJaWYgKGhtYWNfdHZbaV0ubnApIHsKKwkJCWorKzsKKwkJCXByaW50ayAoInRlc3QgJXU6XG4iLGopOworCQkJbWVtc2V0IChyZXN1bHQsIDAsIDY0KTsKKworCQkJdGVtcCA9IDA7CisJCQlrbGVuID0gaG1hY190dltpXS5rc2l6ZTsKKwkJCWZvciAoayA9IDA7IGsgPCBobWFjX3R2W2ldLm5wOyBrKyspIHsKKwkJCQltZW1jcHkgKCZ4YnVmW0lEWFtrXV0sIGhtYWNfdHZbaV0ucGxhaW50ZXh0ICsgdGVtcCwgCisJCQkJCQlobWFjX3R2W2ldLnRhcFtrXSk7CQorCQkJCXRlbXAgKz0gaG1hY190dltpXS50YXBba107CisJCQkJcCA9ICZ4YnVmW0lEWFtrXV07CisJCQkJc2dba10ucGFnZSA9IHZpcnRfdG9fcGFnZSAocCk7CisJCQkJc2dba10ub2Zmc2V0ID0gb2Zmc2V0X2luX3BhZ2UgKHApOworCQkJCXNnW2tdLmxlbmd0aCA9IGhtYWNfdHZbaV0udGFwW2tdOworCQkJfQorCisJCQljcnlwdG9faG1hYyh0Zm0sIGhtYWNfdHZbaV0ua2V5LCAma2xlbiwgc2csIGhtYWNfdHZbaV0ubnAsIAorCQkJCQlyZXN1bHQpOworCQkJaGV4ZHVtcChyZXN1bHQsIGNyeXB0b190Zm1fYWxnX2RpZ2VzdHNpemUodGZtKSk7CisJCQkKKwkJCXByaW50aygiJXNcbiIsCisJCQkJbWVtY21wKHJlc3VsdCwgaG1hY190dltpXS5kaWdlc3QsCisJCQkJCWNyeXB0b190Zm1fYWxnX2RpZ2VzdHNpemUodGZtKSkgPyAiZmFpbCIgOiAKKwkJCQkicGFzcyIpOworCQl9CisJfQorb3V0OgorCWNyeXB0b19mcmVlX3RmbSh0Zm0pOworfQorCisjZW5kaWYJLyogQ09ORklHX0NSWVBUT19ITUFDICovCisKK3N0YXRpYyB2b2lkCit0ZXN0X2NpcGhlcihjaGFyICogYWxnbywgaW50IG1vZGUsIGludCBlbmMsIHN0cnVjdCBjaXBoZXJfdGVzdHZlYyAqIHRlbXBsYXRlLCB1bnNpZ25lZCBpbnQgdGNvdW50KQoreworCXVuc2lnbmVkIGludCByZXQsIGksIGosIGssIHRlbXA7CisJdW5zaWduZWQgaW50IHRzaXplOworCWNoYXIgKnAsICpxOworCXN0cnVjdCBjcnlwdG9fdGZtICp0Zm07CisJY2hhciAqa2V5OworCXN0cnVjdCBjaXBoZXJfdGVzdHZlYyAqY2lwaGVyX3R2OworCXN0cnVjdCBzY2F0dGVybGlzdCBzZ1s4XTsKKwljaGFyIGVbMTFdLCBtWzRdOworCisJaWYgKGVuYyA9PSBFTkNSWVBUKQorCSAgICAgICAgc3RybmNweShlLCAiZW5jcnlwdGlvbiIsIDExKTsKKwllbHNlCisgICAgICAgIAlzdHJuY3B5KGUsICJkZWNyeXB0aW9uIiwgMTEpOworCWlmIChtb2RlID09IE1PREVfRUNCKQorICAgICAgICAJc3RybmNweShtLCAiRUNCIiwgNCk7CisJZWxzZQorICAgICAgICAJc3RybmNweShtLCAiQ0JDIiwgNCk7CisKKwlwcmludGsoIlxudGVzdGluZyAlcyAlcyAlcyBcbiIsIGFsZ28sIG0sIGUpOworCisJdHNpemUgPSBzaXplb2YgKHN0cnVjdCBjaXBoZXJfdGVzdHZlYyk7CQorCXRzaXplICo9IHRjb3VudDsKKwkKKwlpZiAodHNpemUgPiBUVk1FTVNJWkUpIHsKKwkJcHJpbnRrKCJ0ZW1wbGF0ZSAoJXUpIHRvbyBiaWcgZm9yIHR2bWVtICgldSlcbiIsIHRzaXplLAorCQkgICAgICAgVFZNRU1TSVpFKTsKKwkJcmV0dXJuOworCX0KKworCW1lbWNweSh0dm1lbSwgdGVtcGxhdGUsIHRzaXplKTsKKwljaXBoZXJfdHYgPSAodm9pZCAqKSB0dm1lbTsKKworCWlmIChtb2RlKSAKKwkJdGZtID0gY3J5cHRvX2FsbG9jX3RmbSAoYWxnbywgMCk7CisJZWxzZSAKKwkJdGZtID0gY3J5cHRvX2FsbG9jX3RmbSAoYWxnbywgQ1JZUFRPX1RGTV9NT0RFX0NCQyk7CisJCisJaWYgKHRmbSA9PSBOVUxMKSB7CisJCXByaW50aygiZmFpbGVkIHRvIGxvYWQgdHJhbnNmb3JtIGZvciAlcyAlc1xuIiwgYWxnbywgbSk7CisJCXJldHVybjsKKwl9CisJCisJaiA9IDA7CisJZm9yIChpID0gMDsgaSA8IHRjb3VudDsgaSsrKSB7CisJCWlmICghKGNpcGhlcl90dltpXS5ucCkpIHsKKwkJCWorKzsJCisJCQlwcmludGsoInRlc3QgJXUgKCVkIGJpdCBrZXkpOlxuIiwKKwkJCWosIGNpcGhlcl90dltpXS5rbGVuICogOCk7CisKKwkJCXRmbS0+Y3J0X2ZsYWdzID0gMDsKKwkJCWlmIChjaXBoZXJfdHZbaV0ud2spIAorCQkJCXRmbS0+Y3J0X2ZsYWdzIHw9IENSWVBUT19URk1fUkVRX1dFQUtfS0VZOworCQkJa2V5ID0gY2lwaGVyX3R2W2ldLmtleTsKKwkKKwkJCXJldCA9IGNyeXB0b19jaXBoZXJfc2V0a2V5KHRmbSwga2V5LCBjaXBoZXJfdHZbaV0ua2xlbik7CisJCQlpZiAocmV0KSB7CisJCQkJcHJpbnRrKCJzZXRrZXkoKSBmYWlsZWQgZmxhZ3M9JXhcbiIsIHRmbS0+Y3J0X2ZsYWdzKTsKKwkKKwkJCQlpZiAoIWNpcGhlcl90dltpXS5mYWlsKQorCQkJCQlnb3RvIG91dDsKKwkJCX0JCisKKwkJCXAgPSBjaXBoZXJfdHZbaV0uaW5wdXQ7CisJCQlzZ1swXS5wYWdlID0gdmlydF90b19wYWdlKHApOworCQkJc2dbMF0ub2Zmc2V0ID0gb2Zmc2V0X2luX3BhZ2UocCk7CisJCQlzZ1swXS5sZW5ndGggPSBjaXBoZXJfdHZbaV0uaWxlbjsKKwkKKwkJCWlmICghbW9kZSkgeworCQkJCWNyeXB0b19jaXBoZXJfc2V0X2l2KHRmbSwgY2lwaGVyX3R2W2ldLml2LAorCQkJCQljcnlwdG9fdGZtX2FsZ19pdnNpemUgKHRmbSkpOworCQkJfQorCQkKKwkJCWlmIChlbmMpCisJCQkJcmV0ID0gY3J5cHRvX2NpcGhlcl9lbmNyeXB0KHRmbSwgc2csIHNnLCBjaXBoZXJfdHZbaV0uaWxlbik7CisJCQllbHNlCisJCQkJcmV0ID0gY3J5cHRvX2NpcGhlcl9kZWNyeXB0KHRmbSwgc2csIHNnLCBjaXBoZXJfdHZbaV0uaWxlbik7CisJCQkKKwkJCQkKKwkJCWlmIChyZXQpIHsKKwkJCQlwcmludGsoIiVzICgpIGZhaWxlZCBmbGFncz0leFxuIiwgZSwgdGZtLT5jcnRfZmxhZ3MpOworCQkJCWdvdG8gb3V0OworCQkJfQkKKwkKKwkJCXEgPSBrbWFwKHNnWzBdLnBhZ2UpICsgc2dbMF0ub2Zmc2V0OworCQkJaGV4ZHVtcChxLCBjaXBoZXJfdHZbaV0ucmxlbik7CisJCisJCQlwcmludGsoIiVzXG4iLCAKKwkJCQltZW1jbXAocSwgY2lwaGVyX3R2W2ldLnJlc3VsdCwgY2lwaGVyX3R2W2ldLnJsZW4pID8gImZhaWwiIDogCisJCQkicGFzcyIpOworCQl9CisJfQorCQorCXByaW50aygiXG50ZXN0aW5nICVzICVzICVzIGFjcm9zcyBwYWdlcyAoY2h1bmtpbmcpIFxuIiwgYWxnbywgbSwgZSk7CisJbWVtc2V0KHhidWYsIDAsIFhCVUZTSVpFKTsKKwkKKwlqID0gMDsKKwlmb3IgKGkgPSAwOyBpIDwgdGNvdW50OyBpKyspIHsKKwkJaWYgKGNpcGhlcl90dltpXS5ucCkgeworCQkJaisrOwkJCQkKKwkJCXByaW50aygidGVzdCAldSAoJWQgYml0IGtleSk6XG4iLAorCQkJaiwgY2lwaGVyX3R2W2ldLmtsZW4gKiA4KTsKKworCQkJdGZtLT5jcnRfZmxhZ3MgPSAwOwkJCQorCQkJaWYgKGNpcGhlcl90dltpXS53aykgCisJCQkJdGZtLT5jcnRfZmxhZ3MgfD0gQ1JZUFRPX1RGTV9SRVFfV0VBS19LRVk7CisJCQlrZXkgPSBjaXBoZXJfdHZbaV0ua2V5OworCQkJCisJCQlyZXQgPSBjcnlwdG9fY2lwaGVyX3NldGtleSh0Zm0sIGtleSwgY2lwaGVyX3R2W2ldLmtsZW4pOwkJCisJCQlpZiAocmV0KSB7CisJCQkJcHJpbnRrKCJzZXRrZXkoKSBmYWlsZWQgZmxhZ3M9JXhcbiIsIHRmbS0+Y3J0X2ZsYWdzKTsKKwkJCQkKKwkJCQlpZiAoIWNpcGhlcl90dltpXS5mYWlsKQorCQkJCQlnb3RvIG91dDsKKwkJCX0KKworCQkJdGVtcCA9IDA7CisJCQlmb3IgKGsgPSAwOyBrIDwgY2lwaGVyX3R2W2ldLm5wOyBrKyspIHsKKwkJCQltZW1jcHkgKCZ4YnVmW0lEWFtrXV0sIGNpcGhlcl90dltpXS5pbnB1dCArIHRlbXAsIAorCQkJCQkJY2lwaGVyX3R2W2ldLnRhcFtrXSk7CQorCQkJCXRlbXAgKz0gY2lwaGVyX3R2W2ldLnRhcFtrXTsKKwkJCQlwID0gJnhidWZbSURYW2tdXTsKKwkJCQlzZ1trXS5wYWdlID0gdmlydF90b19wYWdlIChwKTsKKwkJCQlzZ1trXS5vZmZzZXQgPSBvZmZzZXRfaW5fcGFnZSAocCk7CisJCQkJc2dba10ubGVuZ3RoID0gY2lwaGVyX3R2W2ldLnRhcFtrXTsKKwkJCX0KKwkJCQorCQkJaWYgKCFtb2RlKSB7CisJCQkJY3J5cHRvX2NpcGhlcl9zZXRfaXYodGZtLCBjaXBoZXJfdHZbaV0uaXYsCisJCQkJCQljcnlwdG9fdGZtX2FsZ19pdnNpemUgKHRmbSkpOworCQkJfQorCQkJCisJCQlpZiAoZW5jKQorCQkJCXJldCA9IGNyeXB0b19jaXBoZXJfZW5jcnlwdCh0Zm0sIHNnLCBzZywgY2lwaGVyX3R2W2ldLmlsZW4pOworCQkJZWxzZQorCQkJCXJldCA9IGNyeXB0b19jaXBoZXJfZGVjcnlwdCh0Zm0sIHNnLCBzZywgY2lwaGVyX3R2W2ldLmlsZW4pOworCQkJCisJCQlpZiAocmV0KSB7CisJCQkJcHJpbnRrKCIlcyAoKSBmYWlsZWQgZmxhZ3M9JXhcbiIsIGUsIHRmbS0+Y3J0X2ZsYWdzKTsKKwkJCQlnb3RvIG91dDsKKwkJCX0KKworCQkJdGVtcCA9IDA7CisJCQlmb3IgKGsgPSAwOyBrIDwgY2lwaGVyX3R2W2ldLm5wOyBrKyspIHsKKwkJCQlwcmludGsoInBhZ2UgJXVcbiIsIGspOworCQkJCXEgPSBrbWFwKHNnW2tdLnBhZ2UpICsgc2dba10ub2Zmc2V0OworCQkJCWhleGR1bXAocSwgY2lwaGVyX3R2W2ldLnRhcFtrXSk7CisJCQkJcHJpbnRrKCIlc1xuIiwgCisJCQkJCW1lbWNtcChxLCBjaXBoZXJfdHZbaV0ucmVzdWx0ICsgdGVtcCwgCisJCQkJCQljaXBoZXJfdHZbaV0udGFwW2tdKSA/ICJmYWlsIiA6IAorCQkJCQkicGFzcyIpOworCQkJCXRlbXAgKz0gY2lwaGVyX3R2W2ldLnRhcFtrXTsKKwkJCX0KKwkJfQorCX0KKworb3V0OgorCWNyeXB0b19mcmVlX3RmbSh0Zm0pOworfQorCitzdGF0aWMgdm9pZAordGVzdF9kZWZsYXRlKHZvaWQpCit7CisJdW5zaWduZWQgaW50IGk7CisJY2hhciByZXN1bHRbQ09NUF9CVUZfU0laRV07CisJc3RydWN0IGNyeXB0b190Zm0gKnRmbTsKKwlzdHJ1Y3QgY29tcF90ZXN0dmVjICp0djsKKwl1bnNpZ25lZCBpbnQgdHNpemU7CisKKwlwcmludGsoIlxudGVzdGluZyBkZWZsYXRlIGNvbXByZXNzaW9uXG4iKTsKKworCXRzaXplID0gc2l6ZW9mIChkZWZsYXRlX2NvbXBfdHZfdGVtcGxhdGUpOworCWlmICh0c2l6ZSA+IFRWTUVNU0laRSkgeworCQlwcmludGsoInRlbXBsYXRlICgldSkgdG9vIGJpZyBmb3IgdHZtZW0gKCV1KVxuIiwgdHNpemUsCisJCSAgICAgICBUVk1FTVNJWkUpOworCQlyZXR1cm47CisJfQorCisJbWVtY3B5KHR2bWVtLCBkZWZsYXRlX2NvbXBfdHZfdGVtcGxhdGUsIHRzaXplKTsKKwl0diA9ICh2b2lkICopIHR2bWVtOworCisJdGZtID0gY3J5cHRvX2FsbG9jX3RmbSgiZGVmbGF0ZSIsIDApOworCWlmICh0Zm0gPT0gTlVMTCkgeworCQlwcmludGsoImZhaWxlZCB0byBsb2FkIHRyYW5zZm9ybSBmb3IgZGVmbGF0ZVxuIik7CisJCXJldHVybjsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgREVGTEFURV9DT01QX1RFU1RfVkVDVE9SUzsgaSsrKSB7CisJCWludCBpbGVuLCByZXQsIGRsZW4gPSBDT01QX0JVRl9TSVpFOworCQkKKwkJcHJpbnRrKCJ0ZXN0ICV1OlxuIiwgaSArIDEpOworCQltZW1zZXQocmVzdWx0LCAwLCBzaXplb2YgKHJlc3VsdCkpOworCisJCWlsZW4gPSB0dltpXS5pbmxlbjsKKwkJcmV0ID0gY3J5cHRvX2NvbXBfY29tcHJlc3ModGZtLCB0dltpXS5pbnB1dCwKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgaWxlbiwgcmVzdWx0LCAmZGxlbik7CisJCWlmIChyZXQpIHsKKwkJCXByaW50aygiZmFpbDogcmV0PSVkXG4iLCByZXQpOworCQkJY29udGludWU7CisJCX0KKwkJaGV4ZHVtcChyZXN1bHQsIGRsZW4pOworCQlwcmludGsoIiVzIChyYXRpbyAlZDolZClcbiIsCisJCSAgICAgICBtZW1jbXAocmVzdWx0LCB0dltpXS5vdXRwdXQsIGRsZW4pID8gImZhaWwiIDogInBhc3MiLAorCQkgICAgICAgaWxlbiwgZGxlbik7CisJfQorCisJcHJpbnRrKCJcbnRlc3RpbmcgZGVmbGF0ZSBkZWNvbXByZXNzaW9uXG4iKTsKKworCXRzaXplID0gc2l6ZW9mIChkZWZsYXRlX2RlY29tcF90dl90ZW1wbGF0ZSk7CisJaWYgKHRzaXplID4gVFZNRU1TSVpFKSB7CisJCXByaW50aygidGVtcGxhdGUgKCV1KSB0b28gYmlnIGZvciB0dm1lbSAoJXUpXG4iLCB0c2l6ZSwKKwkJICAgICAgIFRWTUVNU0laRSk7CisJCWdvdG8gb3V0OworCX0KKworCW1lbWNweSh0dm1lbSwgZGVmbGF0ZV9kZWNvbXBfdHZfdGVtcGxhdGUsIHRzaXplKTsKKwl0diA9ICh2b2lkICopIHR2bWVtOworCisJZm9yIChpID0gMDsgaSA8IERFRkxBVEVfREVDT01QX1RFU1RfVkVDVE9SUzsgaSsrKSB7CisJCWludCBpbGVuLCByZXQsIGRsZW4gPSBDT01QX0JVRl9TSVpFOworCQkKKwkJcHJpbnRrKCJ0ZXN0ICV1OlxuIiwgaSArIDEpOworCQltZW1zZXQocmVzdWx0LCAwLCBzaXplb2YgKHJlc3VsdCkpOworCisJCWlsZW4gPSB0dltpXS5pbmxlbjsKKwkJcmV0ID0gY3J5cHRvX2NvbXBfZGVjb21wcmVzcyh0Zm0sIHR2W2ldLmlucHV0LAorCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlsZW4sIHJlc3VsdCwgJmRsZW4pOworCQlpZiAocmV0KSB7CisJCQlwcmludGsoImZhaWw6IHJldD0lZFxuIiwgcmV0KTsKKwkJCWNvbnRpbnVlOworCQl9CisJCWhleGR1bXAocmVzdWx0LCBkbGVuKTsKKwkJcHJpbnRrKCIlcyAocmF0aW8gJWQ6JWQpXG4iLAorCQkgICAgICAgbWVtY21wKHJlc3VsdCwgdHZbaV0ub3V0cHV0LCBkbGVuKSA/ICJmYWlsIiA6ICJwYXNzIiwKKwkJICAgICAgIGlsZW4sIGRsZW4pOworCX0KK291dDoKKwljcnlwdG9fZnJlZV90Zm0odGZtKTsKK30KKworc3RhdGljIHZvaWQKK3Rlc3RfY3JjMzJjKHZvaWQpCit7CisjZGVmaW5lIE5VTVZFQyA2CisjZGVmaW5lIFZFQ1NJWkUgNDAKKworCWludCBpLCBqLCBwYXNzOworCXUzMiBjcmM7CisJdTggYiwgdGVzdF92ZWNbTlVNVkVDXVtWRUNTSVpFXTsKKwlzdGF0aWMgdTMyIHZlY19yZXN1bHRzW05VTVZFQ10gPSB7CisJCTB4MGUyYzE1N2YsIDB4ZTk4MGViZjYsIDB4ZGU3NGJkZWQsCisJCTB4ZDU3OWM4NjIsIDB4YmE5NzlhZDAsIDB4MmIyOWQ5MTMKKwl9OworCXN0YXRpYyB1MzIgdG90X3ZlY19yZXN1bHRzID0gMHgyNGM1ZDM3NTsKKwkKKwlzdHJ1Y3Qgc2NhdHRlcmxpc3Qgc2dbTlVNVkVDXTsKKwlzdHJ1Y3QgY3J5cHRvX3RmbSAqdGZtOworCWNoYXIgKmZtdGRhdGEgPSAidGVzdGluZyBjcmMzMmMgaW5pdGlhbGl6ZWQgdG8gJTA4eDogJXNcbiI7CisjZGVmaW5lIFNFRURURVNUVkFMIDB4ZWRjYmE5ODcKKwl1MzIgc2VlZDsKKworCXByaW50aygiXG50ZXN0aW5nIGNyYzMyY1xuIik7CisKKwl0Zm0gPSBjcnlwdG9fYWxsb2NfdGZtKCJjcmMzMmMiLCAwKTsKKwlpZiAodGZtID09IE5VTEwpIHsKKwkJcHJpbnRrKCJmYWlsZWQgdG8gbG9hZCB0cmFuc2Zvcm0gZm9yIGNyYzMyY1xuIik7CisJCXJldHVybjsKKwl9CisJCisJY3J5cHRvX2RpZ2VzdF9pbml0KHRmbSk7CisJY3J5cHRvX2RpZ2VzdF9maW5hbCh0Zm0sICh1OCopJmNyYyk7CisJcHJpbnRrKGZtdGRhdGEsIGNyYywgKGNyYyA9PSAwKSA/ICJwYXNzIiA6ICJFUlJPUiIpOworCQorCS8qCisJICogc3R1ZmYgdGVzdF92ZWMgd2l0aCBrbm93biB2YWx1ZXMsIHNpbXBsZSBpbmNyZW1lbnRpbmcKKwkgKiBieXRlIHZhbHVlcy4KKwkgKi8KKwliID0gMDsKKwlmb3IgKGkgPSAwOyBpIDwgTlVNVkVDOyBpKyspIHsKKwkJZm9yIChqID0gMDsgaiA8IFZFQ1NJWkU7IGorKykgCisJCQl0ZXN0X3ZlY1tpXVtqXSA9ICsrYjsKKwkJc2dbaV0ucGFnZSA9IHZpcnRfdG9fcGFnZSh0ZXN0X3ZlY1tpXSk7CisJCXNnW2ldLm9mZnNldCA9IG9mZnNldF9pbl9wYWdlKHRlc3RfdmVjW2ldKTsKKwkJc2dbaV0ubGVuZ3RoID0gVkVDU0laRTsKKwl9CisKKwlzZWVkID0gU0VFRFRFU1RWQUw7CisJKHZvaWQpY3J5cHRvX2RpZ2VzdF9zZXRrZXkodGZtLCAoY29uc3QgdTgqKSZzZWVkLCBzaXplb2YodTMyKSk7CisJY3J5cHRvX2RpZ2VzdF9maW5hbCh0Zm0sICh1OCopJmNyYyk7CisJcHJpbnRrKCJ0ZXN0aW5nIGNyYzMyYyBzZXRrZXkgcmV0dXJucyAlMDh4IDogJXNcbiIsIGNyYywgKGNyYyA9PSAoU0VFRFRFU1RWQUwgXiB+KHUzMikwKSkgPworCSAgICAgICAicGFzcyIgOiAiRVJST1IiKTsKKwkKKwlwcmludGsoInRlc3RpbmcgY3JjMzJjIHVzaW5nIHVwZGF0ZS9maW5hbDpcbiIpOworCisJcGFzcyA9IDE7CQkgICAgLyogYXNzdW1lIGFsbCBpcyB3ZWxsICovCisJCisJZm9yIChpID0gMDsgaSA8IE5VTVZFQzsgaSsrKSB7CisJCXNlZWQgPSB+KHUzMikwOworCQkodm9pZCljcnlwdG9fZGlnZXN0X3NldGtleSh0Zm0sIChjb25zdCB1OCopJnNlZWQsIHNpemVvZih1MzIpKTsKKwkJY3J5cHRvX2RpZ2VzdF91cGRhdGUodGZtLCAmc2dbaV0sIDEpOworCQljcnlwdG9fZGlnZXN0X2ZpbmFsKHRmbSwgKHU4KikmY3JjKTsKKwkJaWYgKGNyYyA9PSB2ZWNfcmVzdWx0c1tpXSkgeworCQkJcHJpbnRrKCIgJTA4eDpPSyIsIGNyYyk7CisJCX0gZWxzZSB7CisJCQlwcmludGsoIiAlMDh4OkJBRCwgd2FudGVkICUwOHhcbiIsIGNyYywgdmVjX3Jlc3VsdHNbaV0pOworCQkJcGFzcyA9IDA7CisJCX0KKwl9CisKKwlwcmludGsoIlxudGVzdGluZyBjcmMzMmMgdXNpbmcgaW5jcmVtZW50YWwgYWNjdW11bGF0b3I6XG4iKTsKKwljcmMgPSAwOworCWZvciAoaSA9IDA7IGkgPCBOVU1WRUM7IGkrKykgeworCQlzZWVkID0gKGNyYyBeIH4odTMyKTApOworCQkodm9pZCljcnlwdG9fZGlnZXN0X3NldGtleSh0Zm0sIChjb25zdCB1OCopJnNlZWQsIHNpemVvZih1MzIpKTsKKwkJY3J5cHRvX2RpZ2VzdF91cGRhdGUodGZtLCAmc2dbaV0sIDEpOworCQljcnlwdG9fZGlnZXN0X2ZpbmFsKHRmbSwgKHU4KikmY3JjKTsKKwl9CisJaWYgKGNyYyA9PSB0b3RfdmVjX3Jlc3VsdHMpIHsKKwkJcHJpbnRrKCIgJTA4eDpPSyIsIGNyYyk7CisJfSBlbHNlIHsKKwkJcHJpbnRrKCIgJTA4eDpCQUQsIHdhbnRlZCAlMDh4XG4iLCBjcmMsIHRvdF92ZWNfcmVzdWx0cyk7CisJCXBhc3MgPSAwOworCX0KKworCXByaW50aygiXG50ZXN0aW5nIGNyYzMyYyB1c2luZyBkaWdlc3Q6XG4iKTsKKwlzZWVkID0gfih1MzIpMDsKKwkodm9pZCljcnlwdG9fZGlnZXN0X3NldGtleSh0Zm0sIChjb25zdCB1OCopJnNlZWQsIHNpemVvZih1MzIpKTsKKwljcnlwdG9fZGlnZXN0X2RpZ2VzdCh0Zm0sIHNnLCBOVU1WRUMsICh1OCopJmNyYyk7CisJaWYgKGNyYyA9PSB0b3RfdmVjX3Jlc3VsdHMpIHsKKwkJcHJpbnRrKCIgJTA4eDpPSyIsIGNyYyk7CisJfSBlbHNlIHsKKwkJcHJpbnRrKCIgJTA4eDpCQUQsIHdhbnRlZCAlMDh4XG4iLCBjcmMsIHRvdF92ZWNfcmVzdWx0cyk7CisJCXBhc3MgPSAwOworCX0KKwkKKwlwcmludGsoIlxuJXNcbiIsIHBhc3MgPyAicGFzcyIgOiAiRVJST1IiKTsKKworCWNyeXB0b19mcmVlX3RmbSh0Zm0pOworCXByaW50aygiY3JjMzJjIHRlc3QgY29tcGxldGVcbiIpOworfQorCitzdGF0aWMgdm9pZAordGVzdF9hdmFpbGFibGUodm9pZCkKK3sKKwljaGFyICoqbmFtZSA9IGNoZWNrOworCQorCXdoaWxlICgqbmFtZSkgeworCQlwcmludGsoImFsZyAlcyAiLCAqbmFtZSk7CisJCXByaW50aygoY3J5cHRvX2FsZ19hdmFpbGFibGUoKm5hbWUsIDApKSA/CisJCQkiZm91bmRcbiIgOiAibm90IGZvdW5kXG4iKTsKKwkJbmFtZSsrOworCX0JCit9CisKK3N0YXRpYyB2b2lkCitkb190ZXN0KHZvaWQpCit7CisJc3dpdGNoIChtb2RlKSB7CisKKwljYXNlIDA6CisJCXRlc3RfaGFzaCgibWQ1IiwgbWQ1X3R2X3RlbXBsYXRlLCBNRDVfVEVTVF9WRUNUT1JTKTsKKwkJCisJCXRlc3RfaGFzaCgic2hhMSIsIHNoYTFfdHZfdGVtcGxhdGUsIFNIQTFfVEVTVF9WRUNUT1JTKTsKKwkJCisJCS8vREVTCisJCXRlc3RfY2lwaGVyICgiZGVzIiwgTU9ERV9FQ0IsIEVOQ1JZUFQsIGRlc19lbmNfdHZfdGVtcGxhdGUsIERFU19FTkNfVEVTVF9WRUNUT1JTKTsKKyAgICAgICAgICAgICAgICB0ZXN0X2NpcGhlciAoImRlcyIsIE1PREVfRUNCLCBERUNSWVBULCBkZXNfZGVjX3R2X3RlbXBsYXRlLCBERVNfREVDX1RFU1RfVkVDVE9SUyk7CisgICAgICAgICAgICAgICAgdGVzdF9jaXBoZXIgKCJkZXMiLCBNT0RFX0NCQywgRU5DUllQVCwgZGVzX2NiY19lbmNfdHZfdGVtcGxhdGUsIERFU19DQkNfRU5DX1RFU1RfVkVDVE9SUyk7CisgICAgICAgICAgICAgICAgdGVzdF9jaXBoZXIgKCJkZXMiLCBNT0RFX0NCQywgREVDUllQVCwgZGVzX2NiY19kZWNfdHZfdGVtcGxhdGUsIERFU19DQkNfREVDX1RFU1RfVkVDVE9SUyk7CisJCisJCS8vREVTM19FREUKKwkJdGVzdF9jaXBoZXIgKCJkZXMzX2VkZSIsIE1PREVfRUNCLCBFTkNSWVBULCBkZXMzX2VkZV9lbmNfdHZfdGVtcGxhdGUsIERFUzNfRURFX0VOQ19URVNUX1ZFQ1RPUlMpOworICAgICAgICAgICAgICAgIHRlc3RfY2lwaGVyICgiZGVzM19lZGUiLCBNT0RFX0VDQiwgREVDUllQVCwgZGVzM19lZGVfZGVjX3R2X3RlbXBsYXRlLCBERVMzX0VERV9ERUNfVEVTVF9WRUNUT1JTKTsKKwkJCisJCXRlc3RfaGFzaCgibWQ0IiwgbWQ0X3R2X3RlbXBsYXRlLCBNRDRfVEVTVF9WRUNUT1JTKTsKKwkJCisJCXRlc3RfaGFzaCgic2hhMjU2Iiwgc2hhMjU2X3R2X3RlbXBsYXRlLCBTSEEyNTZfVEVTVF9WRUNUT1JTKTsKKwkJCisJCS8vQkxPV0ZJU0gKKwkJdGVzdF9jaXBoZXIgKCJibG93ZmlzaCIsIE1PREVfRUNCLCBFTkNSWVBULCBiZl9lbmNfdHZfdGVtcGxhdGUsIEJGX0VOQ19URVNUX1ZFQ1RPUlMpOworCQl0ZXN0X2NpcGhlciAoImJsb3dmaXNoIiwgTU9ERV9FQ0IsIERFQ1JZUFQsIGJmX2RlY190dl90ZW1wbGF0ZSwgQkZfREVDX1RFU1RfVkVDVE9SUyk7CisJCXRlc3RfY2lwaGVyICgiYmxvd2Zpc2giLCBNT0RFX0NCQywgRU5DUllQVCwgYmZfY2JjX2VuY190dl90ZW1wbGF0ZSwgQkZfQ0JDX0VOQ19URVNUX1ZFQ1RPUlMpOworCQl0ZXN0X2NpcGhlciAoImJsb3dmaXNoIiwgTU9ERV9DQkMsIERFQ1JZUFQsIGJmX2NiY19kZWNfdHZfdGVtcGxhdGUsIEJGX0NCQ19ERUNfVEVTVF9WRUNUT1JTKTsKKwkJCisJCS8vVFdPRklTSAorCQl0ZXN0X2NpcGhlciAoInR3b2Zpc2giLCBNT0RFX0VDQiwgRU5DUllQVCwgdGZfZW5jX3R2X3RlbXBsYXRlLCBURl9FTkNfVEVTVF9WRUNUT1JTKTsKKwkJdGVzdF9jaXBoZXIgKCJ0d29maXNoIiwgTU9ERV9FQ0IsIERFQ1JZUFQsIHRmX2RlY190dl90ZW1wbGF0ZSwgVEZfREVDX1RFU1RfVkVDVE9SUyk7CisJCXRlc3RfY2lwaGVyICgidHdvZmlzaCIsIE1PREVfQ0JDLCBFTkNSWVBULCB0Zl9jYmNfZW5jX3R2X3RlbXBsYXRlLCBURl9DQkNfRU5DX1RFU1RfVkVDVE9SUyk7CisJCXRlc3RfY2lwaGVyICgidHdvZmlzaCIsIE1PREVfQ0JDLCBERUNSWVBULCB0Zl9jYmNfZGVjX3R2X3RlbXBsYXRlLCBURl9DQkNfREVDX1RFU1RfVkVDVE9SUyk7CisJCQorCQkvL1NFUlBFTlQKKwkJdGVzdF9jaXBoZXIgKCJzZXJwZW50IiwgTU9ERV9FQ0IsIEVOQ1JZUFQsIHNlcnBlbnRfZW5jX3R2X3RlbXBsYXRlLCBTRVJQRU5UX0VOQ19URVNUX1ZFQ1RPUlMpOworCQl0ZXN0X2NpcGhlciAoInNlcnBlbnQiLCBNT0RFX0VDQiwgREVDUllQVCwgc2VycGVudF9kZWNfdHZfdGVtcGxhdGUsIFNFUlBFTlRfREVDX1RFU1RfVkVDVE9SUyk7CisJCQorCQkvL1RORVBSRVMKKwkJdGVzdF9jaXBoZXIgKCJ0bmVwcmVzIiwgTU9ERV9FQ0IsIEVOQ1JZUFQsIHRuZXByZXNfZW5jX3R2X3RlbXBsYXRlLCBUTkVQUkVTX0VOQ19URVNUX1ZFQ1RPUlMpOworCQl0ZXN0X2NpcGhlciAoInRuZXByZXMiLCBNT0RFX0VDQiwgREVDUllQVCwgdG5lcHJlc19kZWNfdHZfdGVtcGxhdGUsIFRORVBSRVNfREVDX1RFU1RfVkVDVE9SUyk7CisKKwkJLy9BRVMKKwkJdGVzdF9jaXBoZXIgKCJhZXMiLCBNT0RFX0VDQiwgRU5DUllQVCwgYWVzX2VuY190dl90ZW1wbGF0ZSwgQUVTX0VOQ19URVNUX1ZFQ1RPUlMpOworCQl0ZXN0X2NpcGhlciAoImFlcyIsIE1PREVfRUNCLCBERUNSWVBULCBhZXNfZGVjX3R2X3RlbXBsYXRlLCBBRVNfREVDX1RFU1RfVkVDVE9SUyk7CisKKwkJLy9DQVNUNQorCQl0ZXN0X2NpcGhlciAoImNhc3Q1IiwgTU9ERV9FQ0IsIEVOQ1JZUFQsIGNhc3Q1X2VuY190dl90ZW1wbGF0ZSwgQ0FTVDVfRU5DX1RFU1RfVkVDVE9SUyk7CisJCXRlc3RfY2lwaGVyICgiY2FzdDUiLCBNT0RFX0VDQiwgREVDUllQVCwgY2FzdDVfZGVjX3R2X3RlbXBsYXRlLCBDQVNUNV9ERUNfVEVTVF9WRUNUT1JTKTsKKwkJCisJCS8vQ0FTVDYKKwkJdGVzdF9jaXBoZXIgKCJjYXN0NiIsIE1PREVfRUNCLCBFTkNSWVBULCBjYXN0Nl9lbmNfdHZfdGVtcGxhdGUsIENBU1Q2X0VOQ19URVNUX1ZFQ1RPUlMpOworCQl0ZXN0X2NpcGhlciAoImNhc3Q2IiwgTU9ERV9FQ0IsIERFQ1JZUFQsIGNhc3Q2X2RlY190dl90ZW1wbGF0ZSwgQ0FTVDZfREVDX1RFU1RfVkVDVE9SUyk7CisKKwkJLy9BUkM0CisJCXRlc3RfY2lwaGVyICgiYXJjNCIsIE1PREVfRUNCLCBFTkNSWVBULCBhcmM0X2VuY190dl90ZW1wbGF0ZSwgQVJDNF9FTkNfVEVTVF9WRUNUT1JTKTsKKwkJdGVzdF9jaXBoZXIgKCJhcmM0IiwgTU9ERV9FQ0IsIERFQ1JZUFQsIGFyYzRfZGVjX3R2X3RlbXBsYXRlLCBBUkM0X0RFQ19URVNUX1ZFQ1RPUlMpOworCisJCS8vVEVBCisJCXRlc3RfY2lwaGVyICgidGVhIiwgTU9ERV9FQ0IsIEVOQ1JZUFQsIHRlYV9lbmNfdHZfdGVtcGxhdGUsIFRFQV9FTkNfVEVTVF9WRUNUT1JTKTsKKwkJdGVzdF9jaXBoZXIgKCJ0ZWEiLCBNT0RFX0VDQiwgREVDUllQVCwgdGVhX2RlY190dl90ZW1wbGF0ZSwgVEVBX0RFQ19URVNUX1ZFQ1RPUlMpOworCisKKwkJLy9YVEVBCisJCXRlc3RfY2lwaGVyICgieHRlYSIsIE1PREVfRUNCLCBFTkNSWVBULCB4dGVhX2VuY190dl90ZW1wbGF0ZSwgWFRFQV9FTkNfVEVTVF9WRUNUT1JTKTsKKwkJdGVzdF9jaXBoZXIgKCJ4dGVhIiwgTU9ERV9FQ0IsIERFQ1JZUFQsIHh0ZWFfZGVjX3R2X3RlbXBsYXRlLCBYVEVBX0RFQ19URVNUX1ZFQ1RPUlMpOworCisJCS8vS0hBWkFECisJCXRlc3RfY2lwaGVyICgia2hhemFkIiwgTU9ERV9FQ0IsIEVOQ1JZUFQsIGtoYXphZF9lbmNfdHZfdGVtcGxhdGUsIEtIQVpBRF9FTkNfVEVTVF9WRUNUT1JTKTsKKwkJdGVzdF9jaXBoZXIgKCJraGF6YWQiLCBNT0RFX0VDQiwgREVDUllQVCwga2hhemFkX2RlY190dl90ZW1wbGF0ZSwgS0hBWkFEX0RFQ19URVNUX1ZFQ1RPUlMpOworCisJCS8vQU5VQklTCisJCXRlc3RfY2lwaGVyICgiYW51YmlzIiwgTU9ERV9FQ0IsIEVOQ1JZUFQsIGFudWJpc19lbmNfdHZfdGVtcGxhdGUsIEFOVUJJU19FTkNfVEVTVF9WRUNUT1JTKTsKKwkJdGVzdF9jaXBoZXIgKCJhbnViaXMiLCBNT0RFX0VDQiwgREVDUllQVCwgYW51YmlzX2RlY190dl90ZW1wbGF0ZSwgQU5VQklTX0RFQ19URVNUX1ZFQ1RPUlMpOworCQl0ZXN0X2NpcGhlciAoImFudWJpcyIsIE1PREVfQ0JDLCBFTkNSWVBULCBhbnViaXNfY2JjX2VuY190dl90ZW1wbGF0ZSwgQU5VQklTX0NCQ19FTkNfVEVTVF9WRUNUT1JTKTsKKwkJdGVzdF9jaXBoZXIgKCJhbnViaXMiLCBNT0RFX0NCQywgREVDUllQVCwgYW51YmlzX2NiY19kZWNfdHZfdGVtcGxhdGUsIEFOVUJJU19DQkNfRU5DX1RFU1RfVkVDVE9SUyk7CisKKwkJdGVzdF9oYXNoKCJzaGEzODQiLCBzaGEzODRfdHZfdGVtcGxhdGUsIFNIQTM4NF9URVNUX1ZFQ1RPUlMpOworCQl0ZXN0X2hhc2goInNoYTUxMiIsIHNoYTUxMl90dl90ZW1wbGF0ZSwgU0hBNTEyX1RFU1RfVkVDVE9SUyk7CisJCXRlc3RfaGFzaCgid3A1MTIiLCB3cDUxMl90dl90ZW1wbGF0ZSwgV1A1MTJfVEVTVF9WRUNUT1JTKTsKKwkJdGVzdF9oYXNoKCJ3cDM4NCIsIHdwMzg0X3R2X3RlbXBsYXRlLCBXUDM4NF9URVNUX1ZFQ1RPUlMpOworCQl0ZXN0X2hhc2goIndwMjU2Iiwgd3AyNTZfdHZfdGVtcGxhdGUsIFdQMjU2X1RFU1RfVkVDVE9SUyk7CisJCXRlc3RfaGFzaCgidGdyMTkyIiwgdGdyMTkyX3R2X3RlbXBsYXRlLCBUR1IxOTJfVEVTVF9WRUNUT1JTKTsKKwkJdGVzdF9oYXNoKCJ0Z3IxNjAiLCB0Z3IxNjBfdHZfdGVtcGxhdGUsIFRHUjE2MF9URVNUX1ZFQ1RPUlMpOworCQl0ZXN0X2hhc2goInRncjEyOCIsIHRncjEyOF90dl90ZW1wbGF0ZSwgVEdSMTI4X1RFU1RfVkVDVE9SUyk7CisJCXRlc3RfZGVmbGF0ZSgpOworCQl0ZXN0X2NyYzMyYygpOworI2lmZGVmIENPTkZJR19DUllQVE9fSE1BQworCQl0ZXN0X2htYWMoIm1kNSIsIGhtYWNfbWQ1X3R2X3RlbXBsYXRlLCBITUFDX01ENV9URVNUX1ZFQ1RPUlMpOworCQl0ZXN0X2htYWMoInNoYTEiLCBobWFjX3NoYTFfdHZfdGVtcGxhdGUsIEhNQUNfU0hBMV9URVNUX1ZFQ1RPUlMpOwkJCisJCXRlc3RfaG1hYygic2hhMjU2IiwgaG1hY19zaGEyNTZfdHZfdGVtcGxhdGUsIEhNQUNfU0hBMjU2X1RFU1RfVkVDVE9SUyk7CisjZW5kaWYJCQorCisJCXRlc3RfaGFzaCgibWljaGFlbF9taWMiLCBtaWNoYWVsX21pY190dl90ZW1wbGF0ZSwgTUlDSEFFTF9NSUNfVEVTVF9WRUNUT1JTKTsKKwkJYnJlYWs7CisKKwljYXNlIDE6CisJCXRlc3RfaGFzaCgibWQ1IiwgbWQ1X3R2X3RlbXBsYXRlLCBNRDVfVEVTVF9WRUNUT1JTKTsKKwkJYnJlYWs7CisKKwljYXNlIDI6CisJCXRlc3RfaGFzaCgic2hhMSIsIHNoYTFfdHZfdGVtcGxhdGUsIFNIQTFfVEVTVF9WRUNUT1JTKTsKKwkJYnJlYWs7CisKKwljYXNlIDM6CisJCXRlc3RfY2lwaGVyICgiZGVzIiwgTU9ERV9FQ0IsIEVOQ1JZUFQsIGRlc19lbmNfdHZfdGVtcGxhdGUsIERFU19FTkNfVEVTVF9WRUNUT1JTKTsKKwkJdGVzdF9jaXBoZXIgKCJkZXMiLCBNT0RFX0VDQiwgREVDUllQVCwgZGVzX2RlY190dl90ZW1wbGF0ZSwgREVTX0RFQ19URVNUX1ZFQ1RPUlMpOworCQl0ZXN0X2NpcGhlciAoImRlcyIsIE1PREVfQ0JDLCBFTkNSWVBULCBkZXNfY2JjX2VuY190dl90ZW1wbGF0ZSwgREVTX0NCQ19FTkNfVEVTVF9WRUNUT1JTKTsKKwkJdGVzdF9jaXBoZXIgKCJkZXMiLCBNT0RFX0NCQywgREVDUllQVCwgZGVzX2NiY19kZWNfdHZfdGVtcGxhdGUsIERFU19DQkNfREVDX1RFU1RfVkVDVE9SUyk7CisJCWJyZWFrOworCisJY2FzZSA0OgorCQl0ZXN0X2NpcGhlciAoImRlczNfZWRlIiwgTU9ERV9FQ0IsIEVOQ1JZUFQsIGRlczNfZWRlX2VuY190dl90ZW1wbGF0ZSwgREVTM19FREVfRU5DX1RFU1RfVkVDVE9SUyk7CisgICAgICAgICAgICAgICAgdGVzdF9jaXBoZXIgKCJkZXMzX2VkZSIsIE1PREVfRUNCLCBERUNSWVBULCBkZXMzX2VkZV9kZWNfdHZfdGVtcGxhdGUsIERFUzNfRURFX0RFQ19URVNUX1ZFQ1RPUlMpOworCQlicmVhazsKKworCWNhc2UgNToKKwkJdGVzdF9oYXNoKCJtZDQiLCBtZDRfdHZfdGVtcGxhdGUsIE1ENF9URVNUX1ZFQ1RPUlMpOworCQlicmVhazsKKwkJCisJY2FzZSA2OgorCQl0ZXN0X2hhc2goInNoYTI1NiIsIHNoYTI1Nl90dl90ZW1wbGF0ZSwgU0hBMjU2X1RFU1RfVkVDVE9SUyk7CisJCWJyZWFrOworCQorCWNhc2UgNzoKKwkJdGVzdF9jaXBoZXIgKCJibG93ZmlzaCIsIE1PREVfRUNCLCBFTkNSWVBULCBiZl9lbmNfdHZfdGVtcGxhdGUsIEJGX0VOQ19URVNUX1ZFQ1RPUlMpOworCQl0ZXN0X2NpcGhlciAoImJsb3dmaXNoIiwgTU9ERV9FQ0IsIERFQ1JZUFQsIGJmX2RlY190dl90ZW1wbGF0ZSwgQkZfREVDX1RFU1RfVkVDVE9SUyk7CisJCXRlc3RfY2lwaGVyICgiYmxvd2Zpc2giLCBNT0RFX0NCQywgRU5DUllQVCwgYmZfY2JjX2VuY190dl90ZW1wbGF0ZSwgQkZfQ0JDX0VOQ19URVNUX1ZFQ1RPUlMpOworCQl0ZXN0X2NpcGhlciAoImJsb3dmaXNoIiwgTU9ERV9DQkMsIERFQ1JZUFQsIGJmX2NiY19kZWNfdHZfdGVtcGxhdGUsIEJGX0NCQ19ERUNfVEVTVF9WRUNUT1JTKTsKKwkJYnJlYWs7CisKKwljYXNlIDg6CisJCXRlc3RfY2lwaGVyICgidHdvZmlzaCIsIE1PREVfRUNCLCBFTkNSWVBULCB0Zl9lbmNfdHZfdGVtcGxhdGUsIFRGX0VOQ19URVNUX1ZFQ1RPUlMpOworCQl0ZXN0X2NpcGhlciAoInR3b2Zpc2giLCBNT0RFX0VDQiwgREVDUllQVCwgdGZfZGVjX3R2X3RlbXBsYXRlLCBURl9ERUNfVEVTVF9WRUNUT1JTKTsKKwkJdGVzdF9jaXBoZXIgKCJ0d29maXNoIiwgTU9ERV9DQkMsIEVOQ1JZUFQsIHRmX2NiY19lbmNfdHZfdGVtcGxhdGUsIFRGX0NCQ19FTkNfVEVTVF9WRUNUT1JTKTsKKwkJdGVzdF9jaXBoZXIgKCJ0d29maXNoIiwgTU9ERV9DQkMsIERFQ1JZUFQsIHRmX2NiY19kZWNfdHZfdGVtcGxhdGUsIFRGX0NCQ19ERUNfVEVTVF9WRUNUT1JTKTsKKwkJYnJlYWs7CisJCQorCWNhc2UgOToKKwkJdGVzdF9jaXBoZXIgKCJzZXJwZW50IiwgTU9ERV9FQ0IsIEVOQ1JZUFQsIHNlcnBlbnRfZW5jX3R2X3RlbXBsYXRlLCBTRVJQRU5UX0VOQ19URVNUX1ZFQ1RPUlMpOworCQl0ZXN0X2NpcGhlciAoInNlcnBlbnQiLCBNT0RFX0VDQiwgREVDUllQVCwgc2VycGVudF9kZWNfdHZfdGVtcGxhdGUsIFNFUlBFTlRfREVDX1RFU1RfVkVDVE9SUyk7CisJCWJyZWFrOworCisJY2FzZSAxMDoKKwkJdGVzdF9jaXBoZXIgKCJhZXMiLCBNT0RFX0VDQiwgRU5DUllQVCwgYWVzX2VuY190dl90ZW1wbGF0ZSwgQUVTX0VOQ19URVNUX1ZFQ1RPUlMpOworCQl0ZXN0X2NpcGhlciAoImFlcyIsIE1PREVfRUNCLCBERUNSWVBULCBhZXNfZGVjX3R2X3RlbXBsYXRlLCBBRVNfREVDX1RFU1RfVkVDVE9SUyk7CQorCQlicmVhazsKKworCWNhc2UgMTE6CisJCXRlc3RfaGFzaCgic2hhMzg0Iiwgc2hhMzg0X3R2X3RlbXBsYXRlLCBTSEEzODRfVEVTVF9WRUNUT1JTKTsKKwkJYnJlYWs7CisJCQorCWNhc2UgMTI6CisJCXRlc3RfaGFzaCgic2hhNTEyIiwgc2hhNTEyX3R2X3RlbXBsYXRlLCBTSEE1MTJfVEVTVF9WRUNUT1JTKTsKKwkJYnJlYWs7CisKKwljYXNlIDEzOgorCQl0ZXN0X2RlZmxhdGUoKTsKKwkJYnJlYWs7CisKKwljYXNlIDE0OgorCQl0ZXN0X2NpcGhlciAoImNhc3Q1IiwgTU9ERV9FQ0IsIEVOQ1JZUFQsIGNhc3Q1X2VuY190dl90ZW1wbGF0ZSwgQ0FTVDVfRU5DX1RFU1RfVkVDVE9SUyk7CisJCXRlc3RfY2lwaGVyICgiY2FzdDUiLCBNT0RFX0VDQiwgREVDUllQVCwgY2FzdDVfZGVjX3R2X3RlbXBsYXRlLCBDQVNUNV9ERUNfVEVTVF9WRUNUT1JTKTsKKwkJYnJlYWs7CisKKwljYXNlIDE1OgorCQl0ZXN0X2NpcGhlciAoImNhc3Q2IiwgTU9ERV9FQ0IsIEVOQ1JZUFQsIGNhc3Q2X2VuY190dl90ZW1wbGF0ZSwgQ0FTVDZfRU5DX1RFU1RfVkVDVE9SUyk7CisJCXRlc3RfY2lwaGVyICgiY2FzdDYiLCBNT0RFX0VDQiwgREVDUllQVCwgY2FzdDZfZGVjX3R2X3RlbXBsYXRlLCBDQVNUNl9ERUNfVEVTVF9WRUNUT1JTKTsKKwkJYnJlYWs7CisKKwljYXNlIDE2OgorCQl0ZXN0X2NpcGhlciAoImFyYzQiLCBNT0RFX0VDQiwgRU5DUllQVCwgYXJjNF9lbmNfdHZfdGVtcGxhdGUsIEFSQzRfRU5DX1RFU1RfVkVDVE9SUyk7CisJCXRlc3RfY2lwaGVyICgiYXJjNCIsIE1PREVfRUNCLCBERUNSWVBULCBhcmM0X2RlY190dl90ZW1wbGF0ZSwgQVJDNF9ERUNfVEVTVF9WRUNUT1JTKTsKKwkJYnJlYWs7CisKKwljYXNlIDE3OgorCQl0ZXN0X2hhc2goIm1pY2hhZWxfbWljIiwgbWljaGFlbF9taWNfdHZfdGVtcGxhdGUsIE1JQ0hBRUxfTUlDX1RFU1RfVkVDVE9SUyk7CisJCWJyZWFrOworCisJY2FzZSAxODoKKwkJdGVzdF9jcmMzMmMoKTsKKwkJYnJlYWs7CisKKwljYXNlIDE5OgorCQl0ZXN0X2NpcGhlciAoInRlYSIsIE1PREVfRUNCLCBFTkNSWVBULCB0ZWFfZW5jX3R2X3RlbXBsYXRlLCBURUFfRU5DX1RFU1RfVkVDVE9SUyk7CisJCXRlc3RfY2lwaGVyICgidGVhIiwgTU9ERV9FQ0IsIERFQ1JZUFQsIHRlYV9kZWNfdHZfdGVtcGxhdGUsIFRFQV9ERUNfVEVTVF9WRUNUT1JTKTsKKwkJYnJlYWs7CisKKwljYXNlIDIwOgorCQl0ZXN0X2NpcGhlciAoInh0ZWEiLCBNT0RFX0VDQiwgRU5DUllQVCwgeHRlYV9lbmNfdHZfdGVtcGxhdGUsIFhURUFfRU5DX1RFU1RfVkVDVE9SUyk7CisJCXRlc3RfY2lwaGVyICgieHRlYSIsIE1PREVfRUNCLCBERUNSWVBULCB4dGVhX2RlY190dl90ZW1wbGF0ZSwgWFRFQV9ERUNfVEVTVF9WRUNUT1JTKTsKKwkJYnJlYWs7CisKKwljYXNlIDIxOgorCQl0ZXN0X2NpcGhlciAoImtoYXphZCIsIE1PREVfRUNCLCBFTkNSWVBULCBraGF6YWRfZW5jX3R2X3RlbXBsYXRlLCBLSEFaQURfRU5DX1RFU1RfVkVDVE9SUyk7CisJCXRlc3RfY2lwaGVyICgia2hhemFkIiwgTU9ERV9FQ0IsIERFQ1JZUFQsIGtoYXphZF9kZWNfdHZfdGVtcGxhdGUsIEtIQVpBRF9ERUNfVEVTVF9WRUNUT1JTKTsKKwkJYnJlYWs7CisKKwljYXNlIDIyOgorCQl0ZXN0X2hhc2goIndwNTEyIiwgd3A1MTJfdHZfdGVtcGxhdGUsIFdQNTEyX1RFU1RfVkVDVE9SUyk7CisJCWJyZWFrOworCisJY2FzZSAyMzoKKwkJdGVzdF9oYXNoKCJ3cDM4NCIsIHdwMzg0X3R2X3RlbXBsYXRlLCBXUDM4NF9URVNUX1ZFQ1RPUlMpOworCQlicmVhazsKKworCWNhc2UgMjQ6CisJCXRlc3RfaGFzaCgid3AyNTYiLCB3cDI1Nl90dl90ZW1wbGF0ZSwgV1AyNTZfVEVTVF9WRUNUT1JTKTsKKwkJYnJlYWs7CisKKwljYXNlIDI1OgorCQl0ZXN0X2NpcGhlciAoInRuZXByZXMiLCBNT0RFX0VDQiwgRU5DUllQVCwgdG5lcHJlc19lbmNfdHZfdGVtcGxhdGUsIFRORVBSRVNfRU5DX1RFU1RfVkVDVE9SUyk7CisJCXRlc3RfY2lwaGVyICgidG5lcHJlcyIsIE1PREVfRUNCLCBERUNSWVBULCB0bmVwcmVzX2RlY190dl90ZW1wbGF0ZSwgVE5FUFJFU19ERUNfVEVTVF9WRUNUT1JTKTsKKwkJYnJlYWs7CisKKwljYXNlIDI2OgorCQl0ZXN0X2NpcGhlciAoImFudWJpcyIsIE1PREVfRUNCLCBFTkNSWVBULCBhbnViaXNfZW5jX3R2X3RlbXBsYXRlLCBBTlVCSVNfRU5DX1RFU1RfVkVDVE9SUyk7CisJCXRlc3RfY2lwaGVyICgiYW51YmlzIiwgTU9ERV9FQ0IsIERFQ1JZUFQsIGFudWJpc19kZWNfdHZfdGVtcGxhdGUsIEFOVUJJU19ERUNfVEVTVF9WRUNUT1JTKTsKKwkJdGVzdF9jaXBoZXIgKCJhbnViaXMiLCBNT0RFX0NCQywgRU5DUllQVCwgYW51YmlzX2NiY19lbmNfdHZfdGVtcGxhdGUsIEFOVUJJU19DQkNfRU5DX1RFU1RfVkVDVE9SUyk7CisJCXRlc3RfY2lwaGVyICgiYW51YmlzIiwgTU9ERV9DQkMsIERFQ1JZUFQsIGFudWJpc19jYmNfZGVjX3R2X3RlbXBsYXRlLCBBTlVCSVNfQ0JDX0VOQ19URVNUX1ZFQ1RPUlMpOworCQlicmVhazsKKworCWNhc2UgMjc6CisJCXRlc3RfaGFzaCgidGdyMTkyIiwgdGdyMTkyX3R2X3RlbXBsYXRlLCBUR1IxOTJfVEVTVF9WRUNUT1JTKTsKKwkJYnJlYWs7CisKKwljYXNlIDI4OgorCisJCXRlc3RfaGFzaCgidGdyMTYwIiwgdGdyMTYwX3R2X3RlbXBsYXRlLCBUR1IxNjBfVEVTVF9WRUNUT1JTKTsKKwkJYnJlYWs7CisKKwljYXNlIDI5OgorCQl0ZXN0X2hhc2goInRncjEyOCIsIHRncjEyOF90dl90ZW1wbGF0ZSwgVEdSMTI4X1RFU1RfVkVDVE9SUyk7CisJCWJyZWFrOworCisjaWZkZWYgQ09ORklHX0NSWVBUT19ITUFDCisJY2FzZSAxMDA6CisJCXRlc3RfaG1hYygibWQ1IiwgaG1hY19tZDVfdHZfdGVtcGxhdGUsIEhNQUNfTUQ1X1RFU1RfVkVDVE9SUyk7CisJCWJyZWFrOworCQkKKwljYXNlIDEwMToKKwkJdGVzdF9obWFjKCJzaGExIiwgaG1hY19zaGExX3R2X3RlbXBsYXRlLCBITUFDX1NIQTFfVEVTVF9WRUNUT1JTKTsJCQorCQlicmVhazsKKwkKKwljYXNlIDEwMjoKKwkJdGVzdF9obWFjKCJzaGEyNTYiLCBobWFjX3NoYTI1Nl90dl90ZW1wbGF0ZSwgSE1BQ19TSEEyNTZfVEVTVF9WRUNUT1JTKTsKKwkJYnJlYWs7CisKKyNlbmRpZgorCisJY2FzZSAxMDAwOgorCQl0ZXN0X2F2YWlsYWJsZSgpOworCQlicmVhazsKKwkJCisJZGVmYXVsdDoKKwkJLyogdXNlZnVsIGZvciBkZWJ1Z2dpbmcgKi8KKwkJcHJpbnRrKCJub3QgdGVzdGluZyBhbnl0aGluZ1xuIik7CisJCWJyZWFrOworCX0KK30KKworc3RhdGljIGludCBfX2luaXQKK2luaXQodm9pZCkKK3sKKwl0dm1lbSA9IGttYWxsb2MoVFZNRU1TSVpFLCBHRlBfS0VSTkVMKTsKKwlpZiAodHZtZW0gPT0gTlVMTCkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwl4YnVmID0ga21hbGxvYyhYQlVGU0laRSwgR0ZQX0tFUk5FTCk7CisJaWYgKHhidWYgPT0gTlVMTCkgeworCQlrZnJlZSh0dm1lbSk7CisJCXJldHVybiAtRU5PTUVNOworCX0KKworCWRvX3Rlc3QoKTsKKworCWtmcmVlKHhidWYpOworCWtmcmVlKHR2bWVtKTsKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIElmIGFuIGluaXQgZnVuY3Rpb24gaXMgcHJvdmlkZWQsIGFuIGV4aXQgZnVuY3Rpb24gbXVzdCBhbHNvIGJlIHByb3ZpZGVkCisgKiB0byBhbGxvdyBtb2R1bGUgdW5sb2FkLgorICovCitzdGF0aWMgdm9pZCBfX2V4aXQgZmluaSh2b2lkKSB7IH0KKworbW9kdWxlX2luaXQoaW5pdCk7Cittb2R1bGVfZXhpdChmaW5pKTsKKworbW9kdWxlX3BhcmFtKG1vZGUsIGludCwgMCk7CisKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9ERVNDUklQVElPTigiUXVpY2sgJiBkaXJ0eSBjcnlwdG8gdGVzdGluZyBtb2R1bGUiKTsKK01PRFVMRV9BVVRIT1IoIkphbWVzIE1vcnJpcyA8am1vcnJpc0BpbnRlcmNvZGUuY29tLmF1PiIpOwpkaWZmIC0tZ2l0IGEvY3J5cHRvL3RjcnlwdC5oIGIvY3J5cHRvL3RjcnlwdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzMDk3YWYKLS0tIC9kZXYvbnVsbAorKysgYi9jcnlwdG8vdGNyeXB0LmgKQEAgLTAsMCArMSwyNzQ2IEBACisvKgorICogUXVpY2sgJiBkaXJ0eSBjcnlwdG8gdGVzdGluZyBtb2R1bGUuCisgKgorICogVGhpcyB3aWxsIG9ubHkgZXhpc3QgdW50aWwgd2UgaGF2ZSBhIGJldHRlciB0ZXN0aW5nIG1lY2hhbmlzbQorICogKGUuZy4gYSBjaGFyIGRldmljZSkuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDAyIEphbWVzIE1vcnJpcyA8am1vcnJpc0BpbnRlcmNvZGUuY29tLmF1PgorICogQ29weXJpZ2h0IChjKSAyMDAyIEplYW4tRnJhbmNvaXMgRGl2ZSA8amVmQGxpbnV4YmUub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZQorICogU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSAKKyAqIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIDE0IC0gMDkgLSAyMDAzIENoYW5nZXMgYnkgS2FydGlrZXkgTWFoZW5kcmEgQmhhdHQKKyAqCisgKi8KKyNpZm5kZWYgX0NSWVBUT19UQ1JZUFRfSAorI2RlZmluZSBfQ1JZUFRPX1RDUllQVF9ICisKKyNkZWZpbmUgTUFYX0RJR0VTVF9TSVpFCQk2NAorI2RlZmluZSBNQVhfVEFQCQkJOAorCisjZGVmaW5lIE1BWF9LRVlMRU4JCTU2CisjZGVmaW5lIE1BWF9JVkxFTgkJMzIKKworc3RydWN0IGhhc2hfdGVzdHZlYyB7CisJY2hhciBwbGFpbnRleHRbMTI4XTsKKwl1bnNpZ25lZCBjaGFyIHBzaXplOworCWNoYXIgZGlnZXN0W01BWF9ESUdFU1RfU0laRV07CisJdW5zaWduZWQgY2hhciBucDsKKwl1bnNpZ25lZCBjaGFyIHRhcFtNQVhfVEFQXTsJCQorCWNoYXIga2V5WzEyOF07IC8qIG9ubHkgdXNlZCB3aXRoIGtleWVkIGhhc2ggYWxnb3JpdGhtcyAqLworCXVuc2lnbmVkIGNoYXIga3NpemU7Cit9OworCitzdHJ1Y3QgaG1hY190ZXN0dmVjIHsJCisJY2hhciBrZXlbMTI4XTsKKwl1bnNpZ25lZCBjaGFyIGtzaXplOworCWNoYXIgcGxhaW50ZXh0WzEyOF07CisJdW5zaWduZWQgY2hhciBwc2l6ZTsKKwljaGFyIGRpZ2VzdFtNQVhfRElHRVNUX1NJWkVdOworCXVuc2lnbmVkIGNoYXIgbnA7CisJdW5zaWduZWQgY2hhciB0YXBbTUFYX1RBUF07CQkKK307CisKK3N0cnVjdCBjaXBoZXJfdGVzdHZlYyB7CisJdW5zaWduZWQgY2hhciBmYWlsOworCXVuc2lnbmVkIGNoYXIgd2s7IC8qIHdlYWsga2V5IGZsYWcgKi8KKwljaGFyIGtleVtNQVhfS0VZTEVOXTsKKwl1bnNpZ25lZCBjaGFyIGtsZW47CisJY2hhciBpdltNQVhfSVZMRU5dOworCWNoYXIgaW5wdXRbNDhdOworCXVuc2lnbmVkIGNoYXIgaWxlbjsKKwljaGFyIHJlc3VsdFs0OF07CisJdW5zaWduZWQgY2hhciBybGVuOworCWludCBucDsKKwl1bnNpZ25lZCBjaGFyIHRhcFtNQVhfVEFQXTsJCit9OworCisvKgorICogTUQ0IHRlc3QgdmVjdG9ycyBmcm9tIFJGQzEzMjAKKyAqLworI2RlZmluZSBNRDRfVEVTVF9WRUNUT1JTCTcKKworc3RhdGljIHN0cnVjdCBoYXNoX3Rlc3R2ZWMgbWQ0X3R2X3RlbXBsYXRlIFtdID0geworCXsKKwkJLnBsYWludGV4dCA9ICIiLAorCQkuZGlnZXN0CT0geyAweDMxLCAweGQ2LCAweGNmLCAweGUwLCAweGQxLCAweDZhLCAweGU5LCAweDMxLAorCQkJICAgIDB4YjcsIDB4M2MsIDB4NTksIDB4ZDcsIDB4ZTAsIDB4YzAsIDB4ODksIDB4YzAgfSwKKwl9LCB7CisJCS5wbGFpbnRleHQgPSAiYSIsCisJCS5wc2l6ZQk9IDEsCisJCS5kaWdlc3QJPSB7IDB4YmQsIDB4ZTUsIDB4MmMsIDB4YjMsIDB4MWQsIDB4ZTMsIDB4M2UsIDB4NDYsCisJCQkgICAgMHgyNCwgMHg1ZSwgMHgwNSwgMHhmYiwgMHhkYiwgMHhkNiwgMHhmYiwgMHgyNCB9LAorCX0sIHsKKwkJLnBsYWludGV4dCA9ICJhYmMiLAorCQkucHNpemUJPSAzLAorCQkuZGlnZXN0CT0geyAweGE0LCAweDQ4LCAweDAxLCAweDdhLCAweGFmLCAweDIxLCAweGQ4LCAweDUyLAorCQkJICAgIDB4NWYsIDB4YzEsIDB4MGEsIDB4ZTgsIDB4N2EsIDB4YTYsIDB4NzIsIDB4OWQgfSwKKwl9LCB7CisJCS5wbGFpbnRleHQgPSAibWVzc2FnZSBkaWdlc3QiLAorCQkucHNpemUJPSAxNCwKKwkJLmRpZ2VzdAk9IHsgMHhkOSwgMHgxMywgMHgwYSwgMHg4MSwgMHg2NCwgMHg1NCwgMHg5ZiwgMHhlOCwKKwkJCSAgICAweDE4LCAweDg3LCAweDQ4LCAweDA2LCAweGUxLCAweGM3LCAweDAxLCAweDRiIH0sCisJfSwgeworCQkucGxhaW50ZXh0ID0gImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IiwKKwkJLnBzaXplCT0gMjYsCisJCS5kaWdlc3QJPSB7IDB4ZDcsIDB4OWUsIDB4MWMsIDB4MzAsIDB4OGEsIDB4YTUsIDB4YmIsIDB4Y2QsCisJCQkgICAgMHhlZSwgMHhhOCwgMHhlZCwgMHg2MywgMHhkZiwgMHg0MSwgMHgyZCwgMHhhOSB9LAorCQkubnAJPSAyLAorCQkudGFwCT0geyAxMywgMTMgfSwKKwl9LCB7CisJCS5wbGFpbnRleHQgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkiLAorCQkucHNpemUJPSA2MiwKKwkJLmRpZ2VzdAk9IHsgMHgwNCwgMHgzZiwgMHg4NSwgMHg4MiwgMHhmMiwgMHg0MSwgMHhkYiwgMHgzNSwKKwkJCSAgICAweDFjLCAweGU2LCAweDI3LCAweGUxLCAweDUzLCAweGU3LCAweGYwLCAweGU0IH0sCisJfSwgeworCQkucGxhaW50ZXh0ID0gIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMyIKKwkJCSAgICAgIjQ1Njc4OTAxMjM0NTY3ODkwIiwKKwkJLnBzaXplCT0gODAsCisJCS5kaWdlc3QJPSB7IDB4ZTMsIDB4M2IsIDB4NGQsIDB4ZGMsIDB4OWMsIDB4MzgsIDB4ZjIsIDB4MTksCisJCQkgICAgMHg5YywgMHgzZSwgMHg3YiwgMHgxNiwgMHg0ZiwgMHhjYywgMHgwNSwgMHgzNiB9LAorCX0sCit9OworCisvKgorICogTUQ1IHRlc3QgdmVjdG9ycyBmcm9tIFJGQzEzMjEKKyAqLworI2RlZmluZSBNRDVfVEVTVF9WRUNUT1JTCTcKKworc3RhdGljIHN0cnVjdCBoYXNoX3Rlc3R2ZWMgbWQ1X3R2X3RlbXBsYXRlW10gPSB7CisJeworCQkuZGlnZXN0CT0geyAweGQ0LCAweDFkLCAweDhjLCAweGQ5LCAweDhmLCAweDAwLCAweGIyLCAweDA0LAorCQkJICAgIDB4ZTksIDB4ODAsIDB4MDksIDB4OTgsIDB4ZWMsIDB4ZjgsIDB4NDIsIDB4N2UgfSwKKwl9LCB7CisJCS5wbGFpbnRleHQgPSAiYSIsCisJCS5wc2l6ZQk9IDEsCisJCS5kaWdlc3QJPSB7IDB4MGMsIDB4YzEsIDB4NzUsIDB4YjksIDB4YzAsIDB4ZjEsIDB4YjYsIDB4YTgsCisJCQkgICAgMHgzMSwgMHhjMywgMHg5OSwgMHhlMiwgMHg2OSwgMHg3NywgMHgyNiwgMHg2MSB9LAorCX0sIHsKKwkJLnBsYWludGV4dCA9ICJhYmMiLAorCQkucHNpemUJPSAzLAorCQkuZGlnZXN0CT0geyAweDkwLCAweDAxLCAweDUwLCAweDk4LCAweDNjLCAweGQyLCAweDRmLCAweGIwLAorCQkJICAgIDB4ZDYsIDB4OTYsIDB4M2YsIDB4N2QsIDB4MjgsIDB4ZTEsIDB4N2YsIDB4NzIgfSwKKwl9LCB7CisJCS5wbGFpbnRleHQgPSAibWVzc2FnZSBkaWdlc3QiLAorCQkucHNpemUJPSAxNCwKKwkJLmRpZ2VzdAk9IHsgMHhmOSwgMHg2YiwgMHg2OSwgMHg3ZCwgMHg3YywgMHhiNywgMHg5MywgMHg4ZCwKKwkJCSAgICAweDUyLCAweDVhLCAweDJmLCAweDMxLCAweGFhLCAweGYxLCAweDYxLCAweGQwIH0sCisJfSwgeworCQkucGxhaW50ZXh0ID0gImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IiwKKwkJLnBzaXplCT0gMjYsCisJCS5kaWdlc3QJPSB7IDB4YzMsIDB4ZmMsIDB4ZDMsIDB4ZDcsIDB4NjEsIDB4OTIsIDB4ZTQsIDB4MDAsCisJCQkgICAgMHg3ZCwgMHhmYiwgMHg0OSwgMHg2YywgMHhjYSwgMHg2NywgMHhlMSwgMHgzYiB9LAorCQkubnAJPSAyLAorCQkudGFwCT0gezEzLCAxM30KKwl9LCB7CisJCS5wbGFpbnRleHQgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkiLAorCQkucHNpemUJPSA2MiwKKwkJLmRpZ2VzdAk9IHsgMHhkMSwgMHg3NCwgMHhhYiwgMHg5OCwgMHhkMiwgMHg3NywgMHhkOSwgMHhmNSwKKwkJCSAgICAweGE1LCAweDYxLCAweDFjLCAweDJjLCAweDlmLCAweDQxLCAweDlkLCAweDlmIH0sCisJfSwgeworCQkucGxhaW50ZXh0ID0gIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyIgorCQkJICAgICAiMzQ1Njc4OTAxMjM0NTY3ODkwIiwKKwkJLnBzaXplCT0gODAsCisJCS5kaWdlc3QJPSB7IDB4NTcsIDB4ZWQsIDB4ZjQsIDB4YTIsIDB4MmIsIDB4ZTMsIDB4YzksIDB4NTUsCisJCQkgICAgMHhhYywgMHg0OSwgMHhkYSwgMHgyZSwgMHgyMSwgMHgwNywgMHhiNiwgMHg3YSB9LAorCX0KK307CisKKy8qCisgKiBTSEExIHRlc3QgdmVjdG9ycyAgZnJvbSBmcm9tIEZJUFMgUFVCIDE4MC0xCisgKi8KKyNkZWZpbmUgU0hBMV9URVNUX1ZFQ1RPUlMJMgorCitzdGF0aWMgc3RydWN0IGhhc2hfdGVzdHZlYyBzaGExX3R2X3RlbXBsYXRlW10gPSB7CisJeyAKKwkJLnBsYWludGV4dCA9ICJhYmMiLAorCQkucHNpemUJPSAzLAorCQkuZGlnZXN0CT0geyAweGE5LCAweDk5LCAweDNlLCAweDM2LCAweDQ3LCAweDA2LCAweDgxLCAweDZhLCAweGJhLCAweDNlLAorCQkJICAgIDB4MjUsIDB4NzEsIDB4NzgsIDB4NTAsIDB4YzIsIDB4NmMsIDB4OWMsIDB4ZDAsIDB4ZDgsIDB4OWQgfSwKKwl9LCB7CisJCS5wbGFpbnRleHQgPSAiYWJjZGJjZGVjZGVmZGVmZ2VmZ2hmZ2hpZ2hpamhpamtpamtsamtsbWtsbW5sbW5vbW5vcG5vcHEiLAorCQkucHNpemUJPSA1NiwKKwkJLmRpZ2VzdAk9IHsgMHg4NCwgMHg5OCwgMHgzZSwgMHg0NCwgMHgxYywgMHgzYiwgMHhkMiwgMHg2ZSwgMHhiYSwgMHhhZSwKKwkJCSAgICAweDRhLCAweGExLCAweGY5LCAweDUxLCAweDI5LCAweGU1LCAweGU1LCAweDQ2LCAweDcwLCAweGYxIH0sCisJCS5ucAk9IDIsCisJCS50YXAJPSB7IDI4LCAyOCB9CisJfQorfTsKKworLyoKKyAqIFNIQTI1NiB0ZXN0IHZlY3RvcnMgZnJvbSBmcm9tIE5JU1QKKyAqLworI2RlZmluZSBTSEEyNTZfVEVTVF9WRUNUT1JTCTIKKworc3RhdGljIHN0cnVjdCBoYXNoX3Rlc3R2ZWMgc2hhMjU2X3R2X3RlbXBsYXRlW10gPSB7CQorCXsgCisJCS5wbGFpbnRleHQgPSAiYWJjIiwKKwkJLnBzaXplCT0gMywKKwkJLmRpZ2VzdAk9IHsgMHhiYSwgMHg3OCwgMHgxNiwgMHhiZiwgMHg4ZiwgMHgwMSwgMHhjZiwgMHhlYSwKKwkJCSAgICAweDQxLCAweDQxLCAweDQwLCAweGRlLCAweDVkLCAweGFlLCAweDIyLCAweDIzLAorCQkJICAgIDB4YjAsIDB4MDMsIDB4NjEsIDB4YTMsIDB4OTYsIDB4MTcsIDB4N2EsIDB4OWMsCisJCQkgICAgMHhiNCwgMHgxMCwgMHhmZiwgMHg2MSwgMHhmMiwgMHgwMCwgMHgxNSwgMHhhZCB9LAorCX0sIHsKKwkJLnBsYWludGV4dCA9ICJhYmNkYmNkZWNkZWZkZWZnZWZnaGZnaGlnaGlqaGlqa2lqa2xqa2xta2xtbmxtbm9tbm9wbm9wcSIsCisJCS5wc2l6ZQk9IDU2LAorCQkuZGlnZXN0CT0geyAweDI0LCAweDhkLCAweDZhLCAweDYxLCAweGQyLCAweDA2LCAweDM4LCAweGI4LAorCQkJICAgIDB4ZTUsIDB4YzAsIDB4MjYsIDB4OTMsIDB4MGMsIDB4M2UsIDB4NjAsIDB4MzksCisJCQkgICAgMHhhMywgMHgzYywgMHhlNCwgMHg1OSwgMHg2NCwgMHhmZiwgMHgyMSwgMHg2NywKKwkJCSAgICAweGY2LCAweGVjLCAweGVkLCAweGQ0LCAweDE5LCAweGRiLCAweDA2LCAweGMxIH0sCisJCS5ucAk9IDIsCisJCS50YXAJPSB7IDI4LCAyOCB9CisJfSwKK307CisKKy8qCisgKiBTSEEzODQgdGVzdCB2ZWN0b3JzIGZyb20gZnJvbSBOSVNUIGFuZCBrZXJuZWxpCisgKi8KKyNkZWZpbmUgU0hBMzg0X1RFU1RfVkVDVE9SUwk0CisKK3N0YXRpYyBzdHJ1Y3QgaGFzaF90ZXN0dmVjIHNoYTM4NF90dl90ZW1wbGF0ZVtdID0geworCXsgCisJCS5wbGFpbnRleHQ9ICJhYmMiLAorCQkucHNpemUJPSAzLAorCQkuZGlnZXN0CT0geyAweGNiLCAweDAwLCAweDc1LCAweDNmLCAweDQ1LCAweGEzLCAweDVlLCAweDhiLAorCQkJICAgIDB4YjUsIDB4YTAsIDB4M2QsIDB4NjksIDB4OWEsIDB4YzYsIDB4NTAsIDB4MDcsCisJCQkgICAgMHgyNywgMHgyYywgMHgzMiwgMHhhYiwgMHgwZSwgMHhkZSwgMHhkMSwgMHg2MywKKwkJCSAgICAweDFhLCAweDhiLCAweDYwLCAweDVhLCAweDQzLCAweGZmLCAweDViLCAweGVkLAorCQkJICAgIDB4ODAsIDB4ODYsIDB4MDcsIDB4MmIsIDB4YTEsIDB4ZTcsIDB4Y2MsIDB4MjMsCisJCQkgICAgMHg1OCwgMHhiYSwgMHhlYywgMHhhMSwgMHgzNCwgMHhjOCwgMHgyNSwgMHhhNyB9LAorCX0sIHsKKwkJLnBsYWludGV4dCA9ICJhYmNkYmNkZWNkZWZkZWZnZWZnaGZnaGlnaGlqaGlqa2lqa2xqa2xta2xtbmxtbm9tbm9wbm9wcSIsCisJCS5wc2l6ZQk9IDU2LAorCQkuZGlnZXN0CT0geyAweDMzLCAweDkxLCAweGZkLCAweGRkLCAweGZjLCAweDhkLCAweGM3LCAweDM5LAorCQkJICAgIDB4MzcsIDB4MDcsIDB4YTYsIDB4NWIsIDB4MWIsIDB4NDcsIDB4MDksIDB4MzksCisJCQkgICAgMHg3YywgMHhmOCwgMHhiMSwgMHhkMSwgMHg2MiwgMHhhZiwgMHgwNSwgMHhhYiwKKwkJCSAgICAweGZlLCAweDhmLCAweDQ1LCAweDBkLCAweGU1LCAweGYzLCAweDZiLCAweGM2LAorCQkJICAgIDB4YjAsIDB4NDUsIDB4NWEsIDB4ODUsIDB4MjAsIDB4YmMsIDB4NGUsIDB4NmYsCisJCQkgICAgMHg1ZiwgMHhlOSwgMHg1YiwgMHgxZiwgMHhlMywgMHhjOCwgMHg0NSwgMHgyYn0sCisJfSwgeworCQkucGxhaW50ZXh0ID0gImFiY2RlZmdoYmNkZWZnaGljZGVmZ2hpamRlZmdoaWprZWZnaGlqa2xmZ2hpamtsbWdoaWprbG1uIgorIAkJCSAgICAgImhpamtsbW5vaWprbG1ub3Bqa2xtbm9wcWtsbW5vcHFybG1ub3BxcnNtbm9wcXJzdG5vcHFyc3R1IiwKKwkJLnBzaXplCT0gMTEyLAorCQkuZGlnZXN0CT0geyAweDA5LCAweDMzLCAweDBjLCAweDMzLCAweGY3LCAweDExLCAweDQ3LCAweGU4LAorCQkJICAgIDB4M2QsIDB4MTksIDB4MmYsIDB4YzcsIDB4ODIsIDB4Y2QsIDB4MWIsIDB4NDcsCisJCQkgICAgMHg1MywgMHgxMSwgMHgxYiwgMHgxNywgMHgzYiwgMHgzYiwgMHgwNSwgMHhkMiwKKwkJCSAgICAweDJmLCAweGEwLCAweDgwLCAweDg2LCAweGUzLCAweGIwLCAweGY3LCAweDEyLAorCQkJICAgIDB4ZmMsIDB4YzcsIDB4YzcsIDB4MWEsIDB4NTUsIDB4N2UsIDB4MmQsIDB4YjksCisJCQkgICAgMHg2NiwgMHhjMywgMHhlOSwgMHhmYSwgMHg5MSwgMHg3NCwgMHg2MCwgMHgzOSAgfSwKKwl9LCB7CisJCS5wbGFpbnRleHQgPSAiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5emFiY2QiCisJCQkgICAgICJlZmdoaWprbG1ub3BxcnN0dXZ3eHl6YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiLAorCQkucHNpemUJPSAxMDQsCisJCS5kaWdlc3QJPSB7IDB4M2QsIDB4MjAsIDB4ODksIDB4NzMsIDB4YWIsIDB4MzUsIDB4MDgsIDB4ZGIsCisJCQkgICAgMHhiZCwgMHg3ZSwgMHgyYywgMHgyOCwgMHg2MiwgMHhiYSwgMHgyOSwgMHgwYSwKKwkJCSAgICAweGQzLCAweDAxLCAweDBlLCAweDQ5LCAweDc4LCAweGMxLCAweDk4LCAweGRjLAorCQkJICAgIDB4NGQsIDB4OGYsIDB4ZDAsIDB4MTQsIDB4ZTUsIDB4ODIsIDB4ODIsIDB4M2EsCisJCQkgICAgMHg4OSwgMHhlMSwgMHg2ZiwgMHg5YiwgMHgyYSwgMHg3YiwgMHhiYywgMHgxYSwKKwkJCSAgICAweGM5LCAweDM4LCAweGUyLCAweGQxLCAweDk5LCAweGU4LCAweGJlLCAweGE0IH0sCisJCS5ucAk9IDQsCisJCS50YXAJPSB7IDI2LCAyNiwgMjYsIDI2IH0KKwl9LAorfTsKKworLyoKKyAqIFNIQTUxMiB0ZXN0IHZlY3RvcnMgZnJvbSBmcm9tIE5JU1QgYW5kIGtlcm5lbGkKKyAqLworI2RlZmluZSBTSEE1MTJfVEVTVF9WRUNUT1JTCTQKKworc3RhdGljIHN0cnVjdCBoYXNoX3Rlc3R2ZWMgc2hhNTEyX3R2X3RlbXBsYXRlW10gPSB7CisJeyAKKwkJLnBsYWludGV4dCA9ICJhYmMiLAorCQkucHNpemUJPSAzLAorCQkuZGlnZXN0CT0geyAweGRkLCAweGFmLCAweDM1LCAweGExLCAweDkzLCAweDYxLCAweDdhLCAweGJhLAorCQkJICAgIDB4Y2MsIDB4NDEsIDB4NzMsIDB4NDksIDB4YWUsIDB4MjAsIDB4NDEsIDB4MzEsCisJCQkgICAgMHgxMiwgMHhlNiwgMHhmYSwgMHg0ZSwgMHg4OSwgMHhhOSwgMHg3ZSwgMHhhMiwKKwkJCSAgICAweDBhLCAweDllLCAweGVlLCAweGU2LCAweDRiLCAweDU1LCAweGQzLCAweDlhLAorCQkJICAgIDB4MjEsIDB4OTIsIDB4OTksIDB4MmEsIDB4MjcsIDB4NGYsIDB4YzEsIDB4YTgsCisJCQkgICAgMHgzNiwgMHhiYSwgMHgzYywgMHgyMywgMHhhMywgMHhmZSwgMHhlYiwgMHhiZCwKKwkJCSAgICAweDQ1LCAweDRkLCAweDQ0LCAweDIzLCAweDY0LCAweDNjLCAweGU4LCAweDBlLAorCQkJICAgIDB4MmEsIDB4OWEsIDB4YzksIDB4NGYsIDB4YTUsIDB4NGMsIDB4YTQsIDB4OWYgfSwKKwl9LCB7CisJCS5wbGFpbnRleHQgPSAiYWJjZGJjZGVjZGVmZGVmZ2VmZ2hmZ2hpZ2hpamhpamtpamtsamtsbWtsbW5sbW5vbW5vcG5vcHEiLAorCQkucHNpemUJPSA1NiwKKwkJLmRpZ2VzdAk9IHsgMHgyMCwgMHg0YSwgMHg4ZiwgMHhjNiwgMHhkZCwgMHhhOCwgMHgyZiwgMHgwYSwKKwkJCSAgICAweDBjLCAweGVkLCAweDdiLCAweGViLCAweDhlLCAweDA4LCAweGE0LCAweDE2LAorCQkJICAgIDB4NTcsIDB4YzEsIDB4NmUsIDB4ZjQsIDB4NjgsIDB4YjIsIDB4MjgsIDB4YTgsCisJCQkgICAgMHgyNywgMHg5YiwgMHhlMywgMHgzMSwgMHhhNywgMHgwMywgMHhjMywgMHgzNSwKKwkJCSAgICAweDk2LCAweGZkLCAweDE1LCAweGMxLCAweDNiLCAweDFiLCAweDA3LCAweGY5LAorCQkJICAgIDB4YWEsIDB4MWQsIDB4M2IsIDB4ZWEsIDB4NTcsIDB4NzgsIDB4OWMsIDB4YTAsCisJCQkgICAgMHgzMSwgMHhhZCwgMHg4NSwgMHhjNywgMHhhNywgMHgxZCwgMHhkNywgMHgwMywKKwkJCSAgICAweDU0LCAweGVjLCAweDYzLCAweDEyLCAweDM4LCAweGNhLCAweDM0LCAweDQ1IH0sCisJfSwgeworCQkucGxhaW50ZXh0ID0gImFiY2RlZmdoYmNkZWZnaGljZGVmZ2hpamRlZmdoaWprZWZnaGlqa2xmZ2hpamtsbWdoaWprbG1uIgorCQkJICAgICAiaGlqa2xtbm9pamtsbW5vcGprbG1ub3Bxa2xtbm9wcXJsbW5vcHFyc21ub3BxcnN0bm9wcXJzdHUiLAorCQkucHNpemUJPSAxMTIsCisJCS5kaWdlc3QJPSB7IDB4OGUsIDB4OTUsIDB4OWIsIDB4NzUsIDB4ZGEsIDB4ZTMsIDB4MTMsIDB4ZGEsCisJCQkgICAgMHg4YywgMHhmNCwgMHhmNywgMHgyOCwgMHgxNCwgMHhmYywgMHgxNCwgMHgzZiwKKwkJCSAgICAweDhmLCAweDc3LCAweDc5LCAweGM2LCAweGViLCAweDlmLCAweDdmLCAweGExLAorCQkJICAgIDB4NzIsIDB4OTksIDB4YWUsIDB4YWQsIDB4YjYsIDB4ODgsIDB4OTAsIDB4MTgsCisJCQkgICAgMHg1MCwgMHgxZCwgMHgyOCwgMHg5ZSwgMHg0OSwgMHgwMCwgMHhmNywgMHhlNCwKKwkJCSAgICAweDMzLCAweDFiLCAweDk5LCAweGRlLCAweGM0LCAweGI1LCAweDQzLCAweDNhLAorCQkJICAgIDB4YzcsIDB4ZDMsIDB4MjksIDB4ZWUsIDB4YjYsIDB4ZGQsIDB4MjYsIDB4NTQsCisJCQkgICAgMHg1ZSwgMHg5NiwgMHhlNSwgMHg1YiwgMHg4NywgMHg0YiwgMHhlOSwgMHgwOSB9LAorCX0sIHsKKwkJLnBsYWludGV4dCA9ICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5emFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6YWJjZCIKKwkJCSAgICAgImVmZ2hpamtsbW5vcHFyc3R1dnd4eXphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIsCisJCS5wc2l6ZQk9IDEwNCwKKwkJLmRpZ2VzdAk9IHsgMHg5MywgMHgwZCwgMHgwYywgMHhlZiwgMHhjYiwgMHgzMCwgMHhmZiwgMHgxMSwKKwkJCSAgICAweDMzLCAweGI2LCAweDg5LCAweDgxLCAweDIxLCAweGYxLCAweGNmLCAweDNkLAorCQkJICAgIDB4MjcsIDB4NTcsIDB4OGEsIDB4ZmMsIDB4YWYsIDB4ZTgsIDB4NjcsIDB4N2MsCisJCQkgICAgMHg1MiwgMHg1NywgMHhjZiwgMHgwNiwgMHg5OSwgMHgxMSwgMHhmNywgMHg1ZCwKKwkJCSAgICAweDhmLCAweDU4LCAweDMxLCAweGI1LCAweDZlLCAweGJmLCAweGRhLCAweDY3LAorCQkJICAgIDB4YjIsIDB4NzgsIDB4ZTYsIDB4NmQsIDB4ZmYsIDB4OGIsIDB4ODQsIDB4ZmUsCisJCQkgICAgMHgyYiwgMHgyOCwgMHg3MCwgMHhmNywgMHg0MiwgMHhhNSwgMHg4MCwgMHhkOCwKKwkJCSAgICAweGVkLCAweGI0LCAweDE5LCAweDg3LCAweDIzLCAweDI4LCAweDUwLCAweGM5IH0sCisJCS5ucAk9IDQsCisJCS50YXAJPSB7IDI2LCAyNiwgMjYsIDI2IH0KKwl9LAorfTsKKworCisvKgorICogV0hJUkxQT09MIHRlc3QgdmVjdG9ycyBmcm9tIFdoaXJscG9vbCBwYWNrYWdlIAorICogYnkgVmluY2VudCBSaWptZW4gYW5kIFBhdWxvIFMuIEwuIE0uIEJhcnJldG8gYXMgcGFydCBvZiB0aGUgTkVTU0lFCisgKiBzdWJtaXNzaW9uCisgKi8KKyNkZWZpbmUgV1A1MTJfVEVTVF9WRUNUT1JTCTgKKworc3RhdGljIHN0cnVjdCBoYXNoX3Rlc3R2ZWMgd3A1MTJfdHZfdGVtcGxhdGVbXSA9IHsKKwl7IAorCQkucGxhaW50ZXh0ID0gIiIsCisJCS5wc2l6ZQk9IDAsCisJCS5kaWdlc3QJPSB7IDB4MTksIDB4RkEsIDB4NjEsIDB4RDcsIDB4NTUsIDB4MjIsIDB4QTQsIDB4NjYsCisJCQkgICAgMHg5QiwgMHg0NCwgMHhFMywgMHg5QywgMHgxRCwgMHgyRSwgMHgxNywgMHgyNiwKKwkJCSAgICAweEM1LCAweDMwLCAweDIzLCAweDIxLCAweDMwLCAweEQ0LCAweDA3LCAweEY4LAorCQkJICAgIDB4OUEsIDB4RkUsIDB4RTAsIDB4OTYsIDB4NDksIDB4OTcsIDB4RjcsIDB4QTcsCisJCQkgICAgMHgzRSwgMHg4MywgMHhCRSwgMHg2OSwgMHg4QiwgMHgyOCwgMHg4RiwgMHhFQiwKKwkJCSAgICAweENGLCAweDg4LCAweEUzLCAweEUwLCAweDNDLCAweDRGLCAweDA3LCAweDU3LAorCQkJICAgIDB4RUEsIDB4ODksIDB4NjQsIDB4RTUsIDB4OUIsIDB4NjMsIDB4RDksIDB4MzcsCisJCQkgICAgMHgwOCwgMHhCMSwgMHgzOCwgMHhDQywgMHg0MiwgMHhBNiwgMHg2RSwgMHhCMyB9LAorCisKKwl9LCB7CisJCS5wbGFpbnRleHQgPSAiYSIsCisJCS5wc2l6ZQk9IDEsCisJCS5kaWdlc3QJPSB7IDB4OEEsIDB4Q0EsIDB4MjYsIDB4MDIsIDB4NzksIDB4MkEsIDB4RUMsIDB4NkYsCisJCQkgICAgMHgxMSwgMHhBNiwgMHg3MiwgMHgwNiwgMHg1MywgMHgxRiwgMHhCNywgMHhENywKKwkJCSAgICAweEYwLCAweERGLCAweEY1LCAweDk0LCAweDEzLCAweDE0LCAweDVFLCAweDY5LAorCQkJICAgIDB4NzMsIDB4QzQsIDB4NTAsIDB4MDEsIDB4RDAsIDB4MDgsIDB4N0IsIDB4NDIsCisJCQkgICAgMHhEMSwgMHgxQiwgMHhDNiwgMHg0NSwgMHg0MSwgMHgzQSwgMHhFRiwgMHhGNiwKKwkJCSAgICAweDNBLCAweDQyLCAweDM5LCAweDFBLCAweDM5LCAweDE0LCAweDVBLCAweDU5LAorCQkJICAgIDB4MUEsIDB4OTIsIDB4MjAsIDB4MEQsIDB4NTYsIDB4MDEsIDB4OTUsIDB4RTUsCisJCQkgICAgMHgzQiwgMHg0NywgMHg4NSwgMHg4NCwgMHhGRCwgMHhBRSwgMHgyMywgMHgxQSB9LAorCX0sIHsKKwkJLnBsYWludGV4dCA9ICJhYmMiLAorCQkucHNpemUJPSAzLAorCQkuZGlnZXN0CT0geyAweDRFLCAweDI0LCAweDQ4LCAweEE0LCAweEM2LCAweEY0LCAweDg2LCAweEJCLAorCQkJICAgIDB4MTYsIDB4QjYsIDB4NTYsIDB4MkMsIDB4NzMsIDB4QjQsIDB4MDIsIDB4MEIsCisJCQkgICAgMHhGMywgMHgwNCwgMHgzRSwgMHgzQSwgMHg3MywgMHgxQiwgMHhDRSwgMHg3MiwKKwkJCSAgICAweDFBLCAweEUxLCAweEIzLCAweDAzLCAweEQ5LCAweDdFLCAweDZELCAweDRDLAorCQkJICAgIDB4NzEsIDB4ODEsIDB4RUUsIDB4QkQsIDB4QjYsIDB4QzUsIDB4N0UsIDB4MjcsCisJCQkgICAgMHg3RCwgMHgwRSwgMHgzNCwgMHg5NSwgMHg3MSwgMHgxNCwgMHhDQiwgMHhENiwKKwkJCSAgICAweEM3LCAweDk3LCAweEZDLCAweDlELCAweDk1LCAweEQ4LCAweEI1LCAweDgyLAorCQkJICAgIDB4RDIsIDB4MjUsIDB4MjksIDB4MjAsIDB4NzYsIDB4RDQsIDB4RUUsIDB4RjUgfSwKKwl9LCB7CisJCS5wbGFpbnRleHQgPSAibWVzc2FnZSBkaWdlc3QiLAorCQkucHNpemUJPSAxNCwKKwkJLmRpZ2VzdAk9IHsgMHgzNywgMHg4QywgMHg4NCwgMHhBNCwgMHgxMiwgMHg2RSwgMHgyRCwgMHhDNiwgCisJCQkgICAgMHhFNSwgMHg2RCwgMHhDQywgMHg3NCwgMHg1OCwgMHgzNywgMHg3QSwgMHhBQywgCisJCQkgICAgMHg4MywgMHg4RCwgMHgwMCwgMHgwMywgMHgyMiwgMHgzMCwgMHhGNSwgMHgzQywgCisJCQkgICAgMHhFMSwgMHhGNSwgMHg3MCwgMHgwQywgMHgwRiwgMHhGQiwgMHg0RCwgMHgzQiwgCisJCQkgICAgMHg4NCwgMHgyMSwgMHg1NSwgMHg3NiwgMHg1OSwgMHhFRiwgMHg1NSwgMHhDMSwgCisJCQkgICAgMHgwNiwgMHhCNCwgMHhCNSwgMHgyQSwgMHhDNSwgMHhBNCwgMHhBQSwgMHhBNiwgCisJCQkgICAgMHg5MiwgMHhFRCwgMHg5MiwgMHgwMCwgMHg1MiwgMHg4MywgMHg4RiwgMHgzMywgCisJCQkgICAgMHg2MiwgMHhFOCwgMHg2RCwgMHhCRCwgMHgzNywgMHhBOCwgMHg5MCwgMHgzRSB9LAorCX0sIHsKKwkJLnBsYWludGV4dCA9ICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIsCisJCS5wc2l6ZQk9IDI2LAorCQkuZGlnZXN0CT0geyAweEYxLCAweEQ3LCAweDU0LCAweDY2LCAweDI2LCAweDM2LCAweEZGLCAweEU5LAorCQkJICAgIDB4MkMsIDB4ODIsIDB4RUIsIDB4QjksIDB4MjEsIDB4MkEsIDB4NDgsIDB4NEEsCisJCQkgICAgMHg4RCwgMHgzOCwgMHg2MywgMHgxRSwgMHhBRCwgMHg0MiwgMHgzOCwgMHhGNSwKKwkJCSAgICAweDQ0LCAweDJFLCAweEUxLCAweDNCLCAweDgwLCAweDU0LCAweEU0LCAweDFCLAorCQkJICAgIDB4MDgsIDB4QkYsIDB4MkEsIDB4OTIsIDB4NTEsIDB4QzMsIDB4MEIsIDB4NkEsCisJCQkgICAgMHgwQiwgMHg4QSwgMHhBRSwgMHg4NiwgMHgxNywgMHg3QSwgMHhCNCwgMHhBNiwKKwkJCSAgICAweEY2LCAweDhGLCAweDY3LCAweDNFLCAweDcyLCAweDA3LCAweDg2LCAweDVELAorCQkJICAgIDB4NUQsIDB4OTgsIDB4MTksIDB4QTMsIDB4REIsIDB4QTQsIDB4RUIsIDB4M0IgfSwKKwl9LCB7CisJCS5wbGFpbnRleHQgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiCisJCQkgICAgICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkiLAorCQkucHNpemUJPSA2MiwKKwkJLmRpZ2VzdAk9IHsgMHhEQywgMHgzNywgMHhFMCwgMHgwOCwgMHhDRiwgMHg5RSwgMHhFNiwgMHg5QiwKKwkJCSAgICAweEYxLCAweDFGLCAweDAwLCAweEVELCAweDlBLCAweEJBLCAweDI2LCAweDkwLAorCQkJICAgIDB4MUQsIDB4RDcsIDB4QzIsIDB4OEMsIDB4REUsIDB4QzAsIDB4NjYsIDB4Q0MsCisJCQkgICAgMHg2QSwgMHhGNCwgMHgyRSwgMHg0MCwgMHhGOCwgMHgyRiwgMHgzQSwgMHgxRSwKKwkJCSAgICAweDA4LCAweEVCLCAweEEyLCAweDY2LCAweDI5LCAweDEyLCAweDlELCAweDhGLAorCQkJICAgIDB4QjcsIDB4Q0IsIDB4NTcsIDB4MjEsIDB4MUIsIDB4OTIsIDB4ODEsIDB4QTYsCisJCQkgICAgMHg1NSwgMHgxNywgMHhDQywgMHg4NywgMHg5RCwgMHg3QiwgMHg5NiwgMHgyMSwKKwkJCSAgICAweDQyLCAweEM2LCAweDVGLCAweDVBLCAweDdBLCAweEYwLCAweDE0LCAweDY3IH0sCisJfSwgeworCQkucGxhaW50ZXh0ID0gIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiCisJCQkgICAgICIxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIiwKKwkJLnBzaXplCT0gODAsCisJCS5kaWdlc3QJPSB7IDB4NDYsIDB4NkUsIDB4RjEsIDB4OEIsIDB4QUIsIDB4QjAsIDB4MTUsIDB4NEQsCisJCQkgICAgMHgyNSwgMHhCOSwgMHhEMywgMHg4QSwgMHg2NCwgMHgxNCwgMHhGNSwgMHhDMCwKKwkJCSAgICAweDg3LCAweDg0LCAweDM3LCAweDJCLCAweENDLCAweEIyLCAweDA0LCAweEQ2LAorCQkJICAgIDB4NTQsIDB4OUMsIDB4NEEsIDB4RkEsIDB4REIsIDB4NjAsIDB4MTQsIDB4MjksCisJCQkgICAgMHg0RCwgMHg1QiwgMHhEOCwgMHhERiwgMHgyQSwgMHg2QywgMHg0NCwgMHhFNSwKKwkJCSAgICAweDM4LCAweENELCAweDA0LCAweDdCLCAweDI2LCAweDgxLCAweEE1LCAweDFBLAorCQkJICAgIDB4MkMsIDB4NjAsIDB4NDgsIDB4MUUsIDB4ODgsIDB4QzUsIDB4QTIsIDB4MEIsCisJCQkgICAgMHgyQywgMHgyQSwgMHg4MCwgMHhDRiwgMHgzQSwgMHg5QSwgMHgwOCwgMHgzQiB9LAorCX0sIHsKKwkJLnBsYWludGV4dCA9ICJhYmNkYmNkZWNkZWZkZWZnZWZnaGZnaGlnaGlqaGlqayIsCisJCS5wc2l6ZQk9IDMyLAorCQkuZGlnZXN0CT0geyAweDJBLCAweDk4LCAweDdFLCAweEE0LCAweDBGLCAweDkxLCAweDcwLCAweDYxLCAKKwkJCSAgICAweEY1LCAweEQ2LCAweEYwLCAweEEwLCAweEU0LCAweDY0LCAweDRGLCAweDQ4LAorCQkJICAgIDB4OEEsIDB4N0EsIDB4NUEsIDB4NTIsIDB4REUsIDB4RUUsIDB4NjUsIDB4NjIsCisJCQkgICAgMHgwNywgMHhDNSwgMHg2MiwgMHhGOSwgMHg4OCwgMHhFOSwgMHg1QywgMHg2OSwKKwkJCSAgICAweDE2LCAweEJELCAweEM4LCAweDAzLCAweDFCLCAweEM1LCAweEJFLCAweDFCLAorCQkJICAgIDB4N0IsIDB4OTQsIDB4NzYsIDB4MzksIDB4RkUsIDB4MDUsIDB4MEIsIDB4NTYsCisJCQkgICAgMHg5MywgMHg5QiwgMHhBQSwgMHhBMCwgMHhBRCwgMHhGRiwgMHg5QSwgMHhFNiwKKwkJCSAgICAweDc0LCAweDVCLCAweDdCLCAweDE4LCAweDFDLCAweDNCLCAweEUzLCAweEZEIH0sCisJfSwKK307CisKKyNkZWZpbmUgV1AzODRfVEVTVF9WRUNUT1JTCTgKKworc3RhdGljIHN0cnVjdCBoYXNoX3Rlc3R2ZWMgd3AzODRfdHZfdGVtcGxhdGVbXSA9IHsKKwl7IAorCQkucGxhaW50ZXh0ID0gIiIsCisJCS5wc2l6ZQk9IDAsCisJCS5kaWdlc3QJPSB7IDB4MTksIDB4RkEsIDB4NjEsIDB4RDcsIDB4NTUsIDB4MjIsIDB4QTQsIDB4NjYsCisJCQkgICAgMHg5QiwgMHg0NCwgMHhFMywgMHg5QywgMHgxRCwgMHgyRSwgMHgxNywgMHgyNiwKKwkJCSAgICAweEM1LCAweDMwLCAweDIzLCAweDIxLCAweDMwLCAweEQ0LCAweDA3LCAweEY4LAorCQkJICAgIDB4OUEsIDB4RkUsIDB4RTAsIDB4OTYsIDB4NDksIDB4OTcsIDB4RjcsIDB4QTcsCisJCQkgICAgMHgzRSwgMHg4MywgMHhCRSwgMHg2OSwgMHg4QiwgMHgyOCwgMHg4RiwgMHhFQiwKKwkJCSAgICAweENGLCAweDg4LCAweEUzLCAweEUwLCAweDNDLCAweDRGLCAweDA3LCAweDU3IH0sCisKKworCX0sIHsKKwkJLnBsYWludGV4dCA9ICJhIiwKKwkJLnBzaXplCT0gMSwKKwkJLmRpZ2VzdAk9IHsgMHg4QSwgMHhDQSwgMHgyNiwgMHgwMiwgMHg3OSwgMHgyQSwgMHhFQywgMHg2RiwKKwkJCSAgICAweDExLCAweEE2LCAweDcyLCAweDA2LCAweDUzLCAweDFGLCAweEI3LCAweEQ3LAorCQkJICAgIDB4RjAsIDB4REYsIDB4RjUsIDB4OTQsIDB4MTMsIDB4MTQsIDB4NUUsIDB4NjksCisJCQkgICAgMHg3MywgMHhDNCwgMHg1MCwgMHgwMSwgMHhEMCwgMHgwOCwgMHg3QiwgMHg0MiwKKwkJCSAgICAweEQxLCAweDFCLCAweEM2LCAweDQ1LCAweDQxLCAweDNBLCAweEVGLCAweEY2LAorCQkJICAgIDB4M0EsIDB4NDIsIDB4MzksIDB4MUEsIDB4MzksIDB4MTQsIDB4NUEsIDB4NTkgfSwKKwl9LCB7CisJCS5wbGFpbnRleHQgPSAiYWJjIiwKKwkJLnBzaXplCT0gMywKKwkJLmRpZ2VzdAk9IHsgMHg0RSwgMHgyNCwgMHg0OCwgMHhBNCwgMHhDNiwgMHhGNCwgMHg4NiwgMHhCQiwKKwkJCSAgICAweDE2LCAweEI2LCAweDU2LCAweDJDLCAweDczLCAweEI0LCAweDAyLCAweDBCLAorCQkJICAgIDB4RjMsIDB4MDQsIDB4M0UsIDB4M0EsIDB4NzMsIDB4MUIsIDB4Q0UsIDB4NzIsCisJCQkgICAgMHgxQSwgMHhFMSwgMHhCMywgMHgwMywgMHhEOSwgMHg3RSwgMHg2RCwgMHg0QywKKwkJCSAgICAweDcxLCAweDgxLCAweEVFLCAweEJELCAweEI2LCAweEM1LCAweDdFLCAweDI3LAorCQkJICAgIDB4N0QsIDB4MEUsIDB4MzQsIDB4OTUsIDB4NzEsIDB4MTQsIDB4Q0IsIDB4RDYgfSwKKwl9LCB7CisJCS5wbGFpbnRleHQgPSAibWVzc2FnZSBkaWdlc3QiLAorCQkucHNpemUJPSAxNCwKKwkJLmRpZ2VzdAk9IHsgMHgzNywgMHg4QywgMHg4NCwgMHhBNCwgMHgxMiwgMHg2RSwgMHgyRCwgMHhDNiwgCisJCQkgICAgMHhFNSwgMHg2RCwgMHhDQywgMHg3NCwgMHg1OCwgMHgzNywgMHg3QSwgMHhBQywgCisJCQkgICAgMHg4MywgMHg4RCwgMHgwMCwgMHgwMywgMHgyMiwgMHgzMCwgMHhGNSwgMHgzQywgCisJCQkgICAgMHhFMSwgMHhGNSwgMHg3MCwgMHgwQywgMHgwRiwgMHhGQiwgMHg0RCwgMHgzQiwgCisJCQkgICAgMHg4NCwgMHgyMSwgMHg1NSwgMHg3NiwgMHg1OSwgMHhFRiwgMHg1NSwgMHhDMSwgCisJCQkgICAgMHgwNiwgMHhCNCwgMHhCNSwgMHgyQSwgMHhDNSwgMHhBNCwgMHhBQSwgMHhBNiB9LAorCX0sIHsKKwkJLnBsYWludGV4dCA9ICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIsCisJCS5wc2l6ZQk9IDI2LAorCQkuZGlnZXN0CT0geyAweEYxLCAweEQ3LCAweDU0LCAweDY2LCAweDI2LCAweDM2LCAweEZGLCAweEU5LAorCQkJICAgIDB4MkMsIDB4ODIsIDB4RUIsIDB4QjksIDB4MjEsIDB4MkEsIDB4NDgsIDB4NEEsCisJCQkgICAgMHg4RCwgMHgzOCwgMHg2MywgMHgxRSwgMHhBRCwgMHg0MiwgMHgzOCwgMHhGNSwKKwkJCSAgICAweDQ0LCAweDJFLCAweEUxLCAweDNCLCAweDgwLCAweDU0LCAweEU0LCAweDFCLAorCQkJICAgIDB4MDgsIDB4QkYsIDB4MkEsIDB4OTIsIDB4NTEsIDB4QzMsIDB4MEIsIDB4NkEsCisJCQkgICAgMHgwQiwgMHg4QSwgMHhBRSwgMHg4NiwgMHgxNywgMHg3QSwgMHhCNCwgMHhBNiB9LAorCX0sIHsKKwkJLnBsYWludGV4dCA9ICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIKKwkJCSAgICAgImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSIsCisJCS5wc2l6ZQk9IDYyLAorCQkuZGlnZXN0CT0geyAweERDLCAweDM3LCAweEUwLCAweDA4LCAweENGLCAweDlFLCAweEU2LCAweDlCLAorCQkJICAgIDB4RjEsIDB4MUYsIDB4MDAsIDB4RUQsIDB4OUEsIDB4QkEsIDB4MjYsIDB4OTAsCisJCQkgICAgMHgxRCwgMHhENywgMHhDMiwgMHg4QywgMHhERSwgMHhDMCwgMHg2NiwgMHhDQywKKwkJCSAgICAweDZBLCAweEY0LCAweDJFLCAweDQwLCAweEY4LCAweDJGLCAweDNBLCAweDFFLAorCQkJICAgIDB4MDgsIDB4RUIsIDB4QTIsIDB4NjYsIDB4MjksIDB4MTIsIDB4OUQsIDB4OEYsCisJCQkgICAgMHhCNywgMHhDQiwgMHg1NywgMHgyMSwgMHgxQiwgMHg5MiwgMHg4MSwgMHhBNiB9LAorCX0sIHsKKwkJLnBsYWludGV4dCA9ICIxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIgorCQkJICAgICAiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIsCisJCS5wc2l6ZQk9IDgwLAorCQkuZGlnZXN0CT0geyAweDQ2LCAweDZFLCAweEYxLCAweDhCLCAweEFCLCAweEIwLCAweDE1LCAweDRELAorCQkJICAgIDB4MjUsIDB4QjksIDB4RDMsIDB4OEEsIDB4NjQsIDB4MTQsIDB4RjUsIDB4QzAsCisJCQkgICAgMHg4NywgMHg4NCwgMHgzNywgMHgyQiwgMHhDQywgMHhCMiwgMHgwNCwgMHhENiwKKwkJCSAgICAweDU0LCAweDlDLCAweDRBLCAweEZBLCAweERCLCAweDYwLCAweDE0LCAweDI5LAorCQkJICAgIDB4NEQsIDB4NUIsIDB4RDgsIDB4REYsIDB4MkEsIDB4NkMsIDB4NDQsIDB4RTUsCisJCQkgICAgMHgzOCwgMHhDRCwgMHgwNCwgMHg3QiwgMHgyNiwgMHg4MSwgMHhBNSwgMHgxQSB9LAorCX0sIHsKKwkJLnBsYWludGV4dCA9ICJhYmNkYmNkZWNkZWZkZWZnZWZnaGZnaGlnaGlqaGlqayIsCisJCS5wc2l6ZQk9IDMyLAorCQkuZGlnZXN0CT0geyAweDJBLCAweDk4LCAweDdFLCAweEE0LCAweDBGLCAweDkxLCAweDcwLCAweDYxLCAKKwkJCSAgICAweEY1LCAweEQ2LCAweEYwLCAweEEwLCAweEU0LCAweDY0LCAweDRGLCAweDQ4LAorCQkJICAgIDB4OEEsIDB4N0EsIDB4NUEsIDB4NTIsIDB4REUsIDB4RUUsIDB4NjUsIDB4NjIsCisJCQkgICAgMHgwNywgMHhDNSwgMHg2MiwgMHhGOSwgMHg4OCwgMHhFOSwgMHg1QywgMHg2OSwKKwkJCSAgICAweDE2LCAweEJELCAweEM4LCAweDAzLCAweDFCLCAweEM1LCAweEJFLCAweDFCLAorCQkJICAgIDB4N0IsIDB4OTQsIDB4NzYsIDB4MzksIDB4RkUsIDB4MDUsIDB4MEIsIDB4NTYgfSwKKwl9LAorfTsKKworI2RlZmluZSBXUDI1Nl9URVNUX1ZFQ1RPUlMJOAorCitzdGF0aWMgc3RydWN0IGhhc2hfdGVzdHZlYyB3cDI1Nl90dl90ZW1wbGF0ZVtdID0geworCXsgCisJCS5wbGFpbnRleHQgPSAiIiwKKwkJLnBzaXplCT0gMCwKKwkJLmRpZ2VzdAk9IHsgMHgxOSwgMHhGQSwgMHg2MSwgMHhENywgMHg1NSwgMHgyMiwgMHhBNCwgMHg2NiwKKwkJCSAgICAweDlCLCAweDQ0LCAweEUzLCAweDlDLCAweDFELCAweDJFLCAweDE3LCAweDI2LAorCQkJICAgIDB4QzUsIDB4MzAsIDB4MjMsIDB4MjEsIDB4MzAsIDB4RDQsIDB4MDcsIDB4RjgsCisJCQkgICAgMHg5QSwgMHhGRSwgMHhFMCwgMHg5NiwgMHg0OSwgMHg5NywgMHhGNywgMHhBNyB9LAorCisKKwl9LCB7CisJCS5wbGFpbnRleHQgPSAiYSIsCisJCS5wc2l6ZQk9IDEsCisJCS5kaWdlc3QJPSB7IDB4OEEsIDB4Q0EsIDB4MjYsIDB4MDIsIDB4NzksIDB4MkEsIDB4RUMsIDB4NkYsCisJCQkgICAgMHgxMSwgMHhBNiwgMHg3MiwgMHgwNiwgMHg1MywgMHgxRiwgMHhCNywgMHhENywKKwkJCSAgICAweEYwLCAweERGLCAweEY1LCAweDk0LCAweDEzLCAweDE0LCAweDVFLCAweDY5LAorCQkJICAgIDB4NzMsIDB4QzQsIDB4NTAsIDB4MDEsIDB4RDAsIDB4MDgsIDB4N0IsIDB4NDIgfSwKKwl9LCB7CisJCS5wbGFpbnRleHQgPSAiYWJjIiwKKwkJLnBzaXplCT0gMywKKwkJLmRpZ2VzdAk9IHsgMHg0RSwgMHgyNCwgMHg0OCwgMHhBNCwgMHhDNiwgMHhGNCwgMHg4NiwgMHhCQiwKKwkJCSAgICAweDE2LCAweEI2LCAweDU2LCAweDJDLCAweDczLCAweEI0LCAweDAyLCAweDBCLAorCQkJICAgIDB4RjMsIDB4MDQsIDB4M0UsIDB4M0EsIDB4NzMsIDB4MUIsIDB4Q0UsIDB4NzIsCisJCQkgICAgMHgxQSwgMHhFMSwgMHhCMywgMHgwMywgMHhEOSwgMHg3RSwgMHg2RCwgMHg0QyB9LAorCX0sIHsKKwkJLnBsYWludGV4dCA9ICJtZXNzYWdlIGRpZ2VzdCIsCisJCS5wc2l6ZQk9IDE0LAorCQkuZGlnZXN0CT0geyAweDM3LCAweDhDLCAweDg0LCAweEE0LCAweDEyLCAweDZFLCAweDJELCAweEM2LCAKKwkJCSAgICAweEU1LCAweDZELCAweENDLCAweDc0LCAweDU4LCAweDM3LCAweDdBLCAweEFDLCAKKwkJCSAgICAweDgzLCAweDhELCAweDAwLCAweDAzLCAweDIyLCAweDMwLCAweEY1LCAweDNDLCAKKwkJCSAgICAweEUxLCAweEY1LCAweDcwLCAweDBDLCAweDBGLCAweEZCLCAweDRELCAweDNCIH0sCisJfSwgeworCQkucGxhaW50ZXh0ID0gImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IiwKKwkJLnBzaXplCT0gMjYsCisJCS5kaWdlc3QJPSB7IDB4RjEsIDB4RDcsIDB4NTQsIDB4NjYsIDB4MjYsIDB4MzYsIDB4RkYsIDB4RTksCisJCQkgICAgMHgyQywgMHg4MiwgMHhFQiwgMHhCOSwgMHgyMSwgMHgyQSwgMHg0OCwgMHg0QSwKKwkJCSAgICAweDhELCAweDM4LCAweDYzLCAweDFFLCAweEFELCAweDQyLCAweDM4LCAweEY1LAorCQkJICAgIDB4NDQsIDB4MkUsIDB4RTEsIDB4M0IsIDB4ODAsIDB4NTQsIDB4RTQsIDB4MUIgfSwKKwl9LCB7CisJCS5wbGFpbnRleHQgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiCisJCQkgICAgICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkiLAorCQkucHNpemUJPSA2MiwKKwkJLmRpZ2VzdAk9IHsgMHhEQywgMHgzNywgMHhFMCwgMHgwOCwgMHhDRiwgMHg5RSwgMHhFNiwgMHg5QiwKKwkJCSAgICAweEYxLCAweDFGLCAweDAwLCAweEVELCAweDlBLCAweEJBLCAweDI2LCAweDkwLAorCQkJICAgIDB4MUQsIDB4RDcsIDB4QzIsIDB4OEMsIDB4REUsIDB4QzAsIDB4NjYsIDB4Q0MsCisJCQkgICAgMHg2QSwgMHhGNCwgMHgyRSwgMHg0MCwgMHhGOCwgMHgyRiwgMHgzQSwgMHgxRSB9LAorCX0sIHsKKwkJLnBsYWludGV4dCA9ICIxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIgorCQkJICAgICAiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIsCisJCS5wc2l6ZQk9IDgwLAorCQkuZGlnZXN0CT0geyAweDQ2LCAweDZFLCAweEYxLCAweDhCLCAweEFCLCAweEIwLCAweDE1LCAweDRELAorCQkJICAgIDB4MjUsIDB4QjksIDB4RDMsIDB4OEEsIDB4NjQsIDB4MTQsIDB4RjUsIDB4QzAsCisJCQkgICAgMHg4NywgMHg4NCwgMHgzNywgMHgyQiwgMHhDQywgMHhCMiwgMHgwNCwgMHhENiwKKwkJCSAgICAweDU0LCAweDlDLCAweDRBLCAweEZBLCAweERCLCAweDYwLCAweDE0LCAweDI5IH0sCisJfSwgeworCQkucGxhaW50ZXh0ID0gImFiY2RiY2RlY2RlZmRlZmdlZmdoZmdoaWdoaWpoaWprIiwKKwkJLnBzaXplCT0gMzIsCisJCS5kaWdlc3QJPSB7IDB4MkEsIDB4OTgsIDB4N0UsIDB4QTQsIDB4MEYsIDB4OTEsIDB4NzAsIDB4NjEsIAorCQkJICAgIDB4RjUsIDB4RDYsIDB4RjAsIDB4QTAsIDB4RTQsIDB4NjQsIDB4NEYsIDB4NDgsCisJCQkgICAgMHg4QSwgMHg3QSwgMHg1QSwgMHg1MiwgMHhERSwgMHhFRSwgMHg2NSwgMHg2MiwKKwkJCSAgICAweDA3LCAweEM1LCAweDYyLCAweEY5LCAweDg4LCAweEU5LCAweDVDLCAweDY5IH0sCisJfSwKK307CisKKy8qCisgKiBUSUdFUiB0ZXN0IHZlY3RvcnMgZnJvbSBUaWdlciB3ZWJzaXRlIAorICovCisjZGVmaW5lIFRHUjE5Ml9URVNUX1ZFQ1RPUlMJNgorCitzdGF0aWMgc3RydWN0IGhhc2hfdGVzdHZlYyB0Z3IxOTJfdHZfdGVtcGxhdGVbXSA9IHsKKwl7CisJCS5wbGFpbnRleHQgPSAiIiwKKwkJLnBzaXplCT0gMCwKKwkJLmRpZ2VzdCA9IHsgMHgyNCwgMHhmMCwgMHgxMywgMHgwYywgMHg2MywgMHhhYywgMHg5MywgMHgzMiwKKwkJCSAgICAweDE2LCAweDE2LCAweDZlLCAweDc2LCAweGIxLCAweGJiLCAweDkyLCAweDVmLAorCQkJICAgIDB4ZjMsIDB4NzMsIDB4ZGUsIDB4MmQsIDB4NDksIDB4NTgsIDB4NGUsIDB4N2EgfSwKKwl9LCB7CisJCS5wbGFpbnRleHQgPSAiYWJjIiwKKwkJLnBzaXplCT0gMywKKwkJLmRpZ2VzdCA9IHsgMHhmMiwgMHg1OCwgMHhjMSwgMHhlOCwgMHg4NCwgMHgxNCwgMHhhYiwgMHgyYSwKKwkJCSAgICAweDUyLCAweDdhLCAweGI1LCAweDQxLCAweGZmLCAweGM1LCAweGI4LCAweGJmLAorCQkJICAgIDB4OTMsIDB4NWYsIDB4N2IsIDB4OTUsIDB4MWMsIDB4MTMsIDB4MjksIDB4NTEgfSwKKwl9LCB7CisJCS5wbGFpbnRleHQgPSAiVGlnZXIiLAorCQkucHNpemUJPSA1LAorCQkuZGlnZXN0ID0geyAweDlmLCAweDAwLCAweGY1LCAweDk5LCAweDA3LCAweDIzLCAweDAwLCAweGRkLAorCQkJICAgIDB4MjcsIDB4NmEsIDB4YmIsIDB4MzgsIDB4YzgsIDB4ZWIsIDB4NmQsIDB4ZWMsCisJCQkgICAgMHgzNywgMHg3OSwgMHgwYywgMHgxMSwgMHg2ZiwgMHg5ZCwgMHgyYiwgMHhkZiB9LAorCX0sIHsKKwkJLnBsYWludGV4dCA9ICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSstIiwKKwkJLnBzaXplCT0gNjQsCisJCS5kaWdlc3QgPSB7IDB4ODcsIDB4ZmIsIDB4MmEsIDB4OTAsIDB4ODMsIDB4ODUsIDB4MWMsIDB4ZjcsCisJCQkgICAgMHg0NywgMHgwZCwgMHgyYywgMHhmOCwgMHgxMCwgMHhlNiwgMHhkZiwgMHg5ZSwKKwkJCSAgICAweGI1LCAweDg2LCAweDQ0LCAweDUwLCAweDM0LCAweGE1LCAweGEzLCAweDg2IH0sCisJfSwgeworCQkucGxhaW50ZXh0ID0gIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaPWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6KzAxMjM0NTY3ODkiLAorCQkucHNpemUJPSA2NCwKKwkJLmRpZ2VzdCA9IHsgMHg0NiwgMHg3ZCwgMHhiOCwgMHgwOCwgMHg2MywgMHhlYiwgMHhjZSwgMHg0OCwKKwkJCSAgICAweDhkLCAweGYxLCAweGNkLCAweDEyLCAweDYxLCAweDY1LCAweDVkLCAweGU5LAorCQkJICAgIDB4NTcsIDB4ODksIDB4NjUsIDB4NjUsIDB4OTcsIDB4NWYsIDB4OTEsIDB4OTcgfSwKKwl9LCB7CisJCS5wbGFpbnRleHQgPSAiVGlnZXIgLSBBIEZhc3QgTmV3IEhhc2ggRnVuY3Rpb24sICIKKwkJCSAgICAgImJ5IFJvc3MgQW5kZXJzb24gYW5kIEVsaSBCaWhhbSwgIgorCQkJICAgICAicHJvY2VlZGluZ3Mgb2YgRmFzdCBTb2Z0d2FyZSBFbmNyeXB0aW9uIDMsICIKKwkJCSAgICAgIkNhbWJyaWRnZSwgMTk5Ni4iLAorCQkucHNpemUgID0gMTI1LAorCQkuZGlnZXN0ID0geyAweDNkLCAweDlhLCAweGViLCAweDAzLCAweGQxLCAweGJkLCAweDFhLCAweDYzLAorCQkJICAgIDB4NTcsIDB4YjIsIDB4NzcsIDB4NGQsIDB4ZmQsIDB4NmQsIDB4NWIsIDB4MjQsCisJCQkgICAgMHhkZCwgMHg2OCwgMHgxNSwgMHgxZCwgMHg1MCwgMHgzOSwgMHg3NCwgMHhmYyB9LAorCX0sCit9OworCisjZGVmaW5lIFRHUjE2MF9URVNUX1ZFQ1RPUlMJNgorCitzdGF0aWMgc3RydWN0IGhhc2hfdGVzdHZlYyB0Z3IxNjBfdHZfdGVtcGxhdGVbXSA9IHsKKwl7CisJCS5wbGFpbnRleHQgPSAiIiwKKwkJLnBzaXplCT0gMCwKKwkJLmRpZ2VzdCA9IHsgMHgyNCwgMHhmMCwgMHgxMywgMHgwYywgMHg2MywgMHhhYywgMHg5MywgMHgzMiwKKwkJCSAgICAweDE2LCAweDE2LCAweDZlLCAweDc2LCAweGIxLCAweGJiLCAweDkyLCAweDVmLAorCQkJICAgIDB4ZjMsIDB4NzMsIDB4ZGUsIDB4MmQgfSwKKwl9LCB7CisJCS5wbGFpbnRleHQgPSAiYWJjIiwKKwkJLnBzaXplCT0gMywKKwkJLmRpZ2VzdCA9IHsgMHhmMiwgMHg1OCwgMHhjMSwgMHhlOCwgMHg4NCwgMHgxNCwgMHhhYiwgMHgyYSwKKwkJCSAgICAweDUyLCAweDdhLCAweGI1LCAweDQxLCAweGZmLCAweGM1LCAweGI4LCAweGJmLAorCQkJICAgIDB4OTMsIDB4NWYsIDB4N2IsIDB4OTUgfSwKKwl9LCB7CisJCS5wbGFpbnRleHQgPSAiVGlnZXIiLAorCQkucHNpemUJPSA1LAorCQkuZGlnZXN0ID0geyAweDlmLCAweDAwLCAweGY1LCAweDk5LCAweDA3LCAweDIzLCAweDAwLCAweGRkLAorCQkJICAgIDB4MjcsIDB4NmEsIDB4YmIsIDB4MzgsIDB4YzgsIDB4ZWIsIDB4NmQsIDB4ZWMsCisJCQkgICAgMHgzNywgMHg3OSwgMHgwYywgMHgxMSB9LAorCX0sIHsKKwkJLnBsYWludGV4dCA9ICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSstIiwKKwkJLnBzaXplCT0gNjQsCisJCS5kaWdlc3QgPSB7IDB4ODcsIDB4ZmIsIDB4MmEsIDB4OTAsIDB4ODMsIDB4ODUsIDB4MWMsIDB4ZjcsCisJCQkgICAgMHg0NywgMHgwZCwgMHgyYywgMHhmOCwgMHgxMCwgMHhlNiwgMHhkZiwgMHg5ZSwKKwkJCSAgICAweGI1LCAweDg2LCAweDQ0LCAweDUwIH0sCisJfSwgeworCQkucGxhaW50ZXh0ID0gIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaPWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6KzAxMjM0NTY3ODkiLAorCQkucHNpemUJPSA2NCwKKwkJLmRpZ2VzdCA9IHsgMHg0NiwgMHg3ZCwgMHhiOCwgMHgwOCwgMHg2MywgMHhlYiwgMHhjZSwgMHg0OCwKKwkJCSAgICAweDhkLCAweGYxLCAweGNkLCAweDEyLCAweDYxLCAweDY1LCAweDVkLCAweGU5LAorCQkJICAgIDB4NTcsIDB4ODksIDB4NjUsIDB4NjUgfSwKKwl9LCB7CisJCS5wbGFpbnRleHQgPSAiVGlnZXIgLSBBIEZhc3QgTmV3IEhhc2ggRnVuY3Rpb24sICIKKwkJCSAgICAgImJ5IFJvc3MgQW5kZXJzb24gYW5kIEVsaSBCaWhhbSwgIgorCQkJICAgICAicHJvY2VlZGluZ3Mgb2YgRmFzdCBTb2Z0d2FyZSBFbmNyeXB0aW9uIDMsICIKKwkJCSAgICAgIkNhbWJyaWRnZSwgMTk5Ni4iLAorCQkucHNpemUgID0gMTI1LAorCQkuZGlnZXN0ID0geyAweDNkLCAweDlhLCAweGViLCAweDAzLCAweGQxLCAweGJkLCAweDFhLCAweDYzLAorCQkJICAgIDB4NTcsIDB4YjIsIDB4NzcsIDB4NGQsIDB4ZmQsIDB4NmQsIDB4NWIsIDB4MjQsCisJCQkgICAgMHhkZCwgMHg2OCwgMHgxNSwgMHgxZCB9LAorCX0sCit9OworCisjZGVmaW5lIFRHUjEyOF9URVNUX1ZFQ1RPUlMJNgorCitzdGF0aWMgc3RydWN0IGhhc2hfdGVzdHZlYyB0Z3IxMjhfdHZfdGVtcGxhdGVbXSA9IHsKKwl7CisJCS5wbGFpbnRleHQgPSAiIiwKKwkJLnBzaXplCT0gMCwKKwkJLmRpZ2VzdCA9IHsgMHgyNCwgMHhmMCwgMHgxMywgMHgwYywgMHg2MywgMHhhYywgMHg5MywgMHgzMiwKKwkJCSAgICAweDE2LCAweDE2LCAweDZlLCAweDc2LCAweGIxLCAweGJiLCAweDkyLCAweDVmIH0sCisJfSwgeworCQkucGxhaW50ZXh0ID0gImFiYyIsCisJCS5wc2l6ZQk9IDMsCisJCS5kaWdlc3QgPSB7IDB4ZjIsIDB4NTgsIDB4YzEsIDB4ZTgsIDB4ODQsIDB4MTQsIDB4YWIsIDB4MmEsCisJCQkgICAgMHg1MiwgMHg3YSwgMHhiNSwgMHg0MSwgMHhmZiwgMHhjNSwgMHhiOCwgMHhiZiB9LAorCX0sIHsKKwkJLnBsYWludGV4dCA9ICJUaWdlciIsCisJCS5wc2l6ZQk9IDUsCisJCS5kaWdlc3QgPSB7IDB4OWYsIDB4MDAsIDB4ZjUsIDB4OTksIDB4MDcsIDB4MjMsIDB4MDAsIDB4ZGQsCisJCQkgICAgMHgyNywgMHg2YSwgMHhiYiwgMHgzOCwgMHhjOCwgMHhlYiwgMHg2ZCwgMHhlYyB9LAorCX0sIHsKKwkJLnBsYWludGV4dCA9ICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSstIiwKKwkJLnBzaXplCT0gNjQsCisJCS5kaWdlc3QgPSB7IDB4ODcsIDB4ZmIsIDB4MmEsIDB4OTAsIDB4ODMsIDB4ODUsIDB4MWMsIDB4ZjcsCisJCQkgICAgMHg0NywgMHgwZCwgMHgyYywgMHhmOCwgMHgxMCwgMHhlNiwgMHhkZiwgMHg5ZSB9LAorCX0sIHsKKwkJLnBsYWludGV4dCA9ICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWj1hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiswMTIzNDU2Nzg5IiwKKwkJLnBzaXplCT0gNjQsCisJCS5kaWdlc3QgPSB7IDB4NDYsIDB4N2QsIDB4YjgsIDB4MDgsIDB4NjMsIDB4ZWIsIDB4Y2UsIDB4NDgsCisJCQkgICAgMHg4ZCwgMHhmMSwgMHhjZCwgMHgxMiwgMHg2MSwgMHg2NSwgMHg1ZCwgMHhlOSB9LAorCX0sIHsKKwkJLnBsYWludGV4dCA9ICJUaWdlciAtIEEgRmFzdCBOZXcgSGFzaCBGdW5jdGlvbiwgIgorCQkJICAgICAiYnkgUm9zcyBBbmRlcnNvbiBhbmQgRWxpIEJpaGFtLCAiCisJCQkgICAgICJwcm9jZWVkaW5ncyBvZiBGYXN0IFNvZnR3YXJlIEVuY3J5cHRpb24gMywgIgorCQkJICAgICAiQ2FtYnJpZGdlLCAxOTk2LiIsCisJCS5wc2l6ZSAgPSAxMjUsCisJCS5kaWdlc3QgPSB7IDB4M2QsIDB4OWEsIDB4ZWIsIDB4MDMsIDB4ZDEsIDB4YmQsIDB4MWEsIDB4NjMsCisJCQkgICAgMHg1NywgMHhiMiwgMHg3NywgMHg0ZCwgMHhmZCwgMHg2ZCwgMHg1YiwgMHgyNCB9LAorCX0sCit9OworCisjaWZkZWYgQ09ORklHX0NSWVBUT19ITUFDCisvKgorICogSE1BQy1NRDUgdGVzdCB2ZWN0b3JzIGZyb20gUkZDMjIwMgorICogKFRoZXNlIG5lZWQgdG8gYmUgZml4ZWQgdG8gbm90IHVzZSBzdHJsZW4pLgorICovCisjZGVmaW5lIEhNQUNfTUQ1X1RFU1RfVkVDVE9SUwk3CisKK3N0YXRpYyBzdHJ1Y3QgaG1hY190ZXN0dmVjIGhtYWNfbWQ1X3R2X3RlbXBsYXRlW10gPQorewkKKwl7CisJCS5rZXkJPSB7IFswIC4uLiAxNV0gPSAgMHgwYiB9LAorCQkua3NpemUJPSAxNiwKKwkJLnBsYWludGV4dCA9ICJIaSBUaGVyZSIsCisJCS5wc2l6ZQk9IDgsCisJCS5kaWdlc3QJPSB7IDB4OTIsIDB4OTQsIDB4NzIsIDB4N2EsIDB4MzYsIDB4MzgsIDB4YmIsIDB4MWMsCisJCQkgICAgMHgxMywgMHhmNCwgMHg4ZSwgMHhmOCwgMHgxNSwgMHg4YiwgMHhmYywgMHg5ZCB9LAorCX0sIHsKKwkJLmtleQk9IHsgJ0onLCAnZScsICdmJywgJ2UnIH0sCisJCS5rc2l6ZQk9IDQsCisJCS5wbGFpbnRleHQgPSAid2hhdCBkbyB5YSB3YW50IGZvciBub3RoaW5nPyIsCisJCS5wc2l6ZQk9IDI4LAorCQkuZGlnZXN0CT0geyAweDc1LCAweDBjLCAweDc4LCAweDNlLCAweDZhLCAweGIwLCAweGI1LCAweDAzLAorCQkJICAgIDB4ZWEsIDB4YTgsIDB4NmUsIDB4MzEsIDB4MGEsIDB4NWQsIDB4YjcsIDB4MzggfSwKKwkJLm5wCT0gMiwKKwkJLnRhcAk9IHsxNCwgMTR9CisJfSwgeworCQkua2V5CT0geyBbMCAuLi4gMTVdID0gMHhhYSB9LAorCQkua3NpemUJPSAxNiwKKwkJLnBsYWludGV4dCA9IHsgWzAgLi4uIDQ5XSA9ICAweGRkIH0sCisJCS5wc2l6ZQk9IDUwLAorCQkuZGlnZXN0CT0geyAweDU2LCAweGJlLCAweDM0LCAweDUyLCAweDFkLCAweDE0LCAweDRjLCAweDg4LAorCQkJICAgIDB4ZGIsIDB4YjgsIDB4YzcsIDB4MzMsIDB4ZjAsIDB4ZTgsIDB4YjMsIDB4ZjYgfSwKKwl9LCB7CisJCS5rZXkJPSB7IDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4MDUsIDB4MDYsIDB4MDcsIDB4MDgsCisJCQkgICAgMHgwOSwgMHgwYSwgMHgwYiwgMHgwYywgMHgwZCwgMHgwZSwgMHgwZiwgMHgxMCwKKwkJCSAgICAweDExLCAweDEyLCAweDEzLCAweDE0LCAweDE1LCAweDE2LCAweDE3LCAweDE4LCAweDE5LCB9LAorCQkua3NpemUJPSAyNSwKKwkJLnBsYWludGV4dCA9IHsgWzAgLi4uIDQ5XSA9ICAweGNkIH0sCisJCS5wc2l6ZQk9IDUwLAorCQkuZGlnZXN0CT0geyAweDY5LCAweDdlLCAweGFmLCAweDBhLCAweGNhLCAweDNhLCAweDNhLCAweGVhLAorCQkJICAgIDB4M2EsIDB4NzUsIDB4MTYsIDB4NDcsIDB4NDYsIDB4ZmYsIDB4YWEsIDB4NzkgfSwKKwl9LCB7CisJCS5rZXkJPSB7IFswIC4uLiAxNV0gPSAweDBjIH0sCisJCS5rc2l6ZQk9IDE2LAorCQkucGxhaW50ZXh0ID0gIlRlc3QgV2l0aCBUcnVuY2F0aW9uIiwKKwkJLnBzaXplCT0gMjAsCisJCS5kaWdlc3QJPSB7IDB4NTYsIDB4NDYsIDB4MWUsIDB4ZjIsIDB4MzQsIDB4MmUsIDB4ZGMsIDB4MDAsCisJCQkgICAgMHhmOSwgMHhiYSwgMHhiOSwgMHg5NSwgMHg2OSwgMHgwZSwgMHhmZCwgMHg0YyB9LAorCX0sIHsKKwkJLmtleQk9IHsgWzAgLi4uIDc5XSA9ICAweGFhIH0sCisJCS5rc2l6ZQk9IDgwLAorCQkucGxhaW50ZXh0ID0gIlRlc3QgVXNpbmcgTGFyZ2VyIFRoYW4gQmxvY2stU2l6ZSBLZXkgLSBIYXNoIEtleSBGaXJzdCIsCisJCS5wc2l6ZQk9IDU0LAorCQkuZGlnZXN0CT0geyAweDZiLCAweDFhLCAweGI3LCAweGZlLCAweDRiLCAweGQ3LCAweGJmLCAweDhmLAorCQkJICAgIDB4MGIsIDB4NjIsIDB4ZTYsIDB4Y2UsIDB4NjEsIDB4YjksIDB4ZDAsIDB4Y2QgfSwKKwl9LCB7CisJCS5rZXkJPSB7IFswIC4uLiA3OV0gPSAgMHhhYSB9LAorCQkua3NpemUJPSA4MCwKKwkJLnBsYWludGV4dCA9ICJUZXN0IFVzaW5nIExhcmdlciBUaGFuIEJsb2NrLVNpemUgS2V5IGFuZCBMYXJnZXIgVGhhbiBPbmUgIgorCQkJICAgICAiQmxvY2stU2l6ZSBEYXRhIiwKKwkJLnBzaXplCT0gNzMsCisJCS5kaWdlc3QJPSB7IDB4NmYsIDB4NjMsIDB4MGYsIDB4YWQsIDB4NjcsIDB4Y2QsIDB4YTAsIDB4ZWUsCisJCQkgICAgMHgxZiwgMHhiMSwgMHhmNSwgMHg2MiwgMHhkYiwgMHgzYSwgMHhhNSwgMHgzZSB9LAorCX0sCit9OworCisvKgorICogSE1BQy1TSEExIHRlc3QgdmVjdG9ycyBmcm9tIFJGQzIyMDIKKyAqLworI2RlZmluZSBITUFDX1NIQTFfVEVTVF9WRUNUT1JTCTcKKworc3RhdGljIHN0cnVjdCBobWFjX3Rlc3R2ZWMgaG1hY19zaGExX3R2X3RlbXBsYXRlW10gPSB7CQorCXsKKwkJLmtleQk9IHsgWzAgLi4uIDE5XSA9IDB4MGIgfSwKKwkJLmtzaXplCT0gMjAsCisJCS5wbGFpbnRleHQgPSAiSGkgVGhlcmUiLAorCQkucHNpemUJPSA4LAorCQkuZGlnZXN0CT0geyAweGI2LCAweDE3LCAweDMxLCAweDg2LCAweDU1LCAweDA1LCAweDcyLCAweDY0LAorCQkJICAgIDB4ZTIsIDB4OGIsIDB4YzAsIDB4YjYsIDB4ZmIsIDB4MzcsIDB4OGMsIDB4OGUsIDB4ZjEsCisJCQkgICAgMHg0NiwgMHhiZSB9LAorCX0sIHsKKwkJLmtleQk9IHsgJ0onLCAnZScsICdmJywgJ2UnIH0sCQkKKwkJLmtzaXplCT0gNCwKKwkJLnBsYWludGV4dCA9ICJ3aGF0IGRvIHlhIHdhbnQgZm9yIG5vdGhpbmc/IiwKKwkJLnBzaXplCT0gMjgsCisJCS5kaWdlc3QJPSB7IDB4ZWYsIDB4ZmMsIDB4ZGYsIDB4NmEsIDB4ZTUsIDB4ZWIsIDB4MmYsIDB4YTIsIDB4ZDIsIDB4NzQsIAorCQkJICAgIDB4MTYsIDB4ZDUsIDB4ZjEsIDB4ODQsIDB4ZGYsIDB4OWMsIDB4MjUsIDB4OWEsIDB4N2MsIDB4NzkgfSwKKwkJLm5wCT0gMiwKKwkJLnRhcAk9IHsgMTQsIDE0IH0KKwl9LCB7CisJCS5rZXkJPSB7IFswIC4uLiAxOV0gPSAweGFhIH0sCisJCS5rc2l6ZQk9IDIwLAorCQkucGxhaW50ZXh0ID0geyBbMCAuLi4gNDldID0gMHhkZCB9LAorCQkucHNpemUJPSA1MCwKKwkJLmRpZ2VzdAk9IHsgMHgxMiwgMHg1ZCwgMHg3MywgMHg0MiwgMHhiOSwgMHhhYywgMHgxMSwgMHhjZCwgMHg5MSwgMHhhMywgCisJCQkgICAgMHg5YSwgMHhmNCwgMHg4YSwgMHhhMSwgMHg3YiwgMHg0ZiwgMHg2MywgMHhmMSwgMHg3NSwgMHhkMyB9LAorCX0sIHsKKwkJLmtleQk9IHsgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwNSwgMHgwNiwgMHgwNywgMHgwOCwKKwkJCSAgICAweDA5LCAweDBhLCAweDBiLCAweDBjLCAweDBkLCAweDBlLCAweDBmLCAweDEwLCAKKwkJCSAgICAweDExLCAweDEyLCAweDEzLCAweDE0LCAweDE1LCAweDE2LCAweDE3LCAweDE4LCAweDE5IH0sCisJCS5rc2l6ZQk9IDI1LAorCQkucGxhaW50ZXh0ID0geyBbMCAuLi4gNDldID0gMHhjZCB9LAorCQkucHNpemUJPSA1MCwKKwkJLmRpZ2VzdAk9IHsgMHg0YywgMHg5MCwgMHgwNywgMHhmNCwgMHgwMiwgMHg2MiwgMHg1MCwgMHhjNiwgMHhiYywgMHg4NCwgCisJCQkgICAgMHgxNCwgMHhmOSwgMHhiZiwgMHg1MCwgMHhjOCwgMHg2YywgMHgyZCwgMHg3MiwgMHgzNSwgMHhkYSB9LAorCX0sIHsKKwkJLmtleQk9IHsgWzAgLi4uIDE5XSA9IDB4MGMgfSwKKwkJLmtzaXplCT0gMjAsCisJCS5wbGFpbnRleHQgPSAiVGVzdCBXaXRoIFRydW5jYXRpb24iLAorCQkucHNpemUJPSAyMCwKKwkJLmRpZ2VzdAk9IHsgMHg0YywgMHgxYSwgMHgwMywgMHg0MiwgMHg0YiwgMHg1NSwgMHhlMCwgMHg3ZiwgMHhlNywgMHhmMiwgCisJCQkgICAgMHg3YiwgMHhlMSwgMHhkNSwgMHg4YiwgMHhiOSwgMHgzMiwgMHg0YSwgMHg5YSwgMHg1YSwgMHgwNCB9LAorCX0sIHsKKwkJLmtleQk9IHsgWzAgLi4uIDc5XSA9IDB4YWEgfSwKKwkJLmtzaXplCT0gODAsCisJCS5wbGFpbnRleHQgPSAiVGVzdCBVc2luZyBMYXJnZXIgVGhhbiBCbG9jay1TaXplIEtleSAtIEhhc2ggS2V5IEZpcnN0IiwKKwkJLnBzaXplCT0gNTQsCisJCS5kaWdlc3QJPSB7IDB4YWEsIDB4NGEsIDB4ZTUsIDB4ZTEsIDB4NTIsIDB4NzIsIDB4ZDAsIDB4MGUsIDB4OTUsIDB4NzAsIAorCQkJICAgIDB4NTYsIDB4MzcsIDB4Y2UsIDB4OGEsIDB4M2IsIDB4NTUsIDB4ZWQsIDB4NDAsIDB4MjEsIDB4MTIgfSwKKwl9LCB7CisJCS5rZXkJPSB7IFswIC4uLiA3OV0gPSAweGFhIH0sCisJCS5rc2l6ZQk9IDgwLAorCQkucGxhaW50ZXh0ID0gIlRlc3QgVXNpbmcgTGFyZ2VyIFRoYW4gQmxvY2stU2l6ZSBLZXkgYW5kIExhcmdlciBUaGFuIE9uZSAiCisJCQkgICAgICJCbG9jay1TaXplIERhdGEiLAorCQkucHNpemUJPSA3MywKKwkJLmRpZ2VzdAk9IHsgMHhlOCwgMHhlOSwgMHg5ZCwgMHgwZiwgMHg0NSwgMHgyMywgMHg3ZCwgMHg3OCwgMHg2ZCwgMHg2YiwgCisJCQkgICAgMHhiYSwgMHhhNywgMHg5NiwgMHg1YywgMHg3OCwgMHgwOCwgMHhiYiwgMHhmZiwgMHgxYSwgMHg5MSB9LAorCX0sCit9OworCisvKgorICogSE1BQy1TSEEyNTYgdGVzdCB2ZWN0b3JzIGZyb20KKyAqIGRyYWZ0LWlldGYtaXBzZWMtY2lwaC1zaGEtMjU2LTAxLnR4dAorICovCisjZGVmaW5lIEhNQUNfU0hBMjU2X1RFU1RfVkVDVE9SUwkxMAorCitzdGF0aWMgc3RydWN0IGhtYWNfdGVzdHZlYyBobWFjX3NoYTI1Nl90dl90ZW1wbGF0ZVtdID0geworCXsKKwkJLmtleQk9IHsgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwNSwgMHgwNiwgMHgwNywgMHgwOCwKKwkJCSAgICAweDA5LCAweDBhLCAweDBiLCAweDBjLCAweDBkLCAweDBlLCAweDBmLCAweDEwLAorCQkJICAgIDB4MTEsIDB4MTIsIDB4MTMsIDB4MTQsIDB4MTUsIDB4MTYsIDB4MTcsIDB4MTgsCisJCQkgICAgMHgxOSwgMHgxYSwgMHgxYiwgMHgxYywgMHgxZCwgMHgxZSwgMHgxZiwgMHgyMH0sCisJCS5rc2l6ZQk9IDMyLAorCQkucGxhaW50ZXh0ID0gImFiYyIsCisJCS5wc2l6ZQk9IDMsCisJCS5kaWdlc3QJPSB7IDB4YTIsIDB4MWIsIDB4MWYsIDB4NWQsIDB4NGMsIDB4ZjQsIDB4ZjcsIDB4M2EsCisJCQkgICAgMHg0ZCwgMHhkOSwgMHgzOSwgMHg3NSwgMHgwZiwgMHg3YSwgMHgwNiwgMHg2YSwKKwkJCSAgICAweDdmLCAweDk4LCAweGNjLCAweDEzLCAweDFjLCAweGIxLCAweDZhLCAweDY2LAorCQkJICAgIDB4OTIsIDB4NzUsIDB4OTAsIDB4MjEsIDB4Y2YsIDB4YWIsIDB4ODEsIDB4ODEgfSwKKwl9LCB7CisJCS5rZXkJPSB7IDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4MDUsIDB4MDYsIDB4MDcsIDB4MDgsCisJCQkgICAgMHgwOSwgMHgwYSwgMHgwYiwgMHgwYywgMHgwZCwgMHgwZSwgMHgwZiwgMHgxMCwKKwkJCSAgICAweDExLCAweDEyLCAweDEzLCAweDE0LCAweDE1LCAweDE2LCAweDE3LCAweDE4LAorCQkJICAgIDB4MTksIDB4MWEsIDB4MWIsIDB4MWMsIDB4MWQsIDB4MWUsIDB4MWYsIDB4MjAgfSwKKwkJLmtzaXplCT0gMzIsCisJCS5wbGFpbnRleHQgPSAiYWJjZGJjZGVjZGVmZGVmZ2VmZ2hmZ2hpZ2hpamhpamtpamtsamtsbWtsbW5sbW5vbW5vcG5vcHEiLAorCQkucHNpemUJPSA1NiwKKwkJLmRpZ2VzdAk9IHsgMHgxMCwgMHg0ZiwgMHhkYywgMHgxMiwgMHg1NywgMHgzMiwgMHg4ZiwgMHgwOCwKKwkJCSAgICAweDE4LCAweDRiLCAweGE3LCAweDMxLCAweDMxLCAweGM1LCAweDNjLCAweGFlLAorCQkJICAgIDB4ZTYsIDB4OTgsIDB4ZTMsIDB4NjEsIDB4MTksIDB4NDIsIDB4MTEsIDB4NDksCisJCQkgICAgMHhlYSwgMHg4YywgMHg3MSwgMHgyNCwgMHg1NiwgMHg2OSwgMHg3ZCwgMHgzMCB9LAorCX0sIHsKKwkJLmtleQk9IHsgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwNSwgMHgwNiwgMHgwNywgMHgwOCwKKwkJCSAgICAweDA5LCAweDBhLCAweDBiLCAweDBjLCAweDBkLCAweDBlLCAweDBmLCAweDEwLAorCQkJICAgIDB4MTEsIDB4MTIsIDB4MTMsIDB4MTQsIDB4MTUsIDB4MTYsIDB4MTcsIDB4MTgsCisJCQkgICAgMHgxOSwgMHgxYSwgMHgxYiwgMHgxYywgMHgxZCwgMHgxZSwgMHgxZiwgMHgyMCB9LAorCQkua3NpemUJPSAzMiwKKwkJLnBsYWludGV4dCA9ICJhYmNkYmNkZWNkZWZkZWZnZWZnaGZnaGlnaGlqaGlqa2lqa2xqa2xta2xtbmxtbm9tbm9wbm9wcSIKKwkJCSAgICAgImFiY2RiY2RlY2RlZmRlZmdlZmdoZmdoaWdoaWpoaWpraWprbGprbG1rbG1ubG1ub21ub3Bub3BxIiwKKwkJLnBzaXplCT0gMTEyLAorCQkuZGlnZXN0CT0geyAweDQ3LCAweDAzLCAweDA1LCAweGZjLCAweDdlLCAweDQwLCAweGZlLCAweDM0LAorCQkJICAgIDB4ZDMsIDB4ZWUsIDB4YjMsIDB4ZTcsIDB4NzMsIDB4ZDksIDB4NWEsIDB4YWIsCisJCQkgICAgMHg3MywgMHhhYywgMHhmMCwgMHhmZCwgMHgwNiwgMHgwNCwgMHg0NywgMHhhNSwKKwkJCSAgICAweGViLCAweDQ1LCAweDk1LCAweGJmLCAweDMzLCAweGE5LCAweGQxLCAweGEzIH0sCisJfSwgeworCQkua2V5CT0geyBbMCAuLi4gMzFdID0gMHgwYiB9LAorCQkua3NpemUJPSAzMiwKKwkJLnBsYWludGV4dCA9ICJIaSBUaGVyZSIsCisJCS5wc2l6ZQk9IDgsCisJCS5kaWdlc3QJPSB7IDB4MTksIDB4OGEsIDB4NjAsIDB4N2UsIDB4YjQsIDB4NGIsIDB4ZmIsIDB4YzYsCisJCQkgICAgMHg5OSwgMHgwMywgMHhhMCwgMHhmMSwgMHhjZiwgMHgyYiwgMHhiZCwgMHhjNSwKKwkJCSAgICAweGJhLCAweDBhLCAweGEzLCAweGYzLCAweGQ5LCAweGFlLCAweDNjLCAweDFjLAorCQkJICAgIDB4N2EsIDB4M2IsIDB4MTYsIDB4OTYsIDB4YTAsIDB4YjYsIDB4OGMsIDB4ZjcgfSwKKwl9LCB7CisJCS5rZXkJPSAiSmVmZSIsCisJCS5rc2l6ZQk9IDQsCisJCS5wbGFpbnRleHQgPSAid2hhdCBkbyB5YSB3YW50IGZvciBub3RoaW5nPyIsCisJCS5wc2l6ZQk9IDI4LAorCQkuZGlnZXN0CT0geyAweDViLCAweGRjLCAweGMxLCAweDQ2LCAweGJmLCAweDYwLCAweDc1LCAweDRlLAorCQkJICAgIDB4NmEsIDB4MDQsIDB4MjQsIDB4MjYsIDB4MDgsIDB4OTUsIDB4NzUsIDB4YzcsCisJCQkgICAgMHg1YSwgMHgwMCwgMHgzZiwgMHgwOCwgMHg5ZCwgMHgyNywgMHgzOSwgMHg4MywKKwkJCSAgICAweDlkLCAweGVjLCAweDU4LCAweGI5LCAweDY0LCAweGVjLCAweDM4LCAweDQzIH0sCisJCS5ucAk9IDIsCisJCS50YXAJPSB7IDE0LCAxNCB9CisJfSwgeworCQkua2V5CT0geyBbMCAuLi4gMzFdID0gMHhhYSB9LAorCQkua3NpemUJPSAzMiwKKwkJLnBsYWludGV4dCA9IHsgWzAgLi4uIDQ5XSA9IDB4ZGQgfSwKKwkJLnBzaXplCT0gNTAsCisJCS5kaWdlc3QJPSB7IDB4Y2QsIDB4Y2IsIDB4MTIsIDB4MjAsIDB4ZDEsIDB4ZWMsIDB4Y2MsIDB4ZWEsCisJCQkgICAgMHg5MSwgMHhlNSwgMHgzYSwgMHhiYSwgMHgzMCwgMHg5MiwgMHhmOSwgMHg2MiwKKwkJCSAgICAweGU1LCAweDQ5LCAweGZlLCAweDZjLCAweGU5LCAweGVkLCAweDdmLCAweGRjLAorCQkJICAgIDB4NDMsIDB4MTksIDB4MWYsIDB4YmQsIDB4ZTQsIDB4NWMsIDB4MzAsIDB4YjAgfSwKKwl9LCB7CisJCS5rZXkJPSB7IDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4MDUsIDB4MDYsIDB4MDcsIDB4MDgsCisJCQkgICAgMHgwOSwgMHgwYSwgMHgwYiwgMHgwYywgMHgwZCwgMHgwZSwgMHgwZiwgMHgxMCwKKwkJCSAgICAweDExLCAweDEyLCAweDEzLCAweDE0LCAweDE1LCAweDE2LCAweDE3LCAweDE4LAorCQkJICAgIDB4MTksIDB4MWEsIDB4MWIsIDB4MWMsIDB4MWQsIDB4MWUsIDB4MWYsIDB4MjAsCisJCQkgICAgMHgyMSwgMHgyMiwgMHgyMywgMHgyNCwgMHgyNSB9LAorCQkua3NpemUJPSAzNywKKwkJLnBsYWludGV4dCA9IHsgWzAgLi4uIDQ5XSA9IDB4Y2QgfSwKKwkJLnBzaXplCT0gNTAsCisJCS5kaWdlc3QJPSB7IDB4ZDQsIDB4NjMsIDB4M2MsIDB4MTcsIDB4ZjYsIDB4ZmIsIDB4OGQsIDB4NzQsCisJCQkgICAgMHg0YywgMHg2NiwgMHhkZSwgMHhlMCwgMHhmOCwgMHhmMCwgMHg3NCwgMHg1NSwKKwkJCSAgICAweDZlLCAweGM0LCAweGFmLCAweDU1LCAweGVmLCAweDA3LCAweDk5LCAweDg1LAorCQkJICAgIDB4NDEsIDB4NDYsIDB4OGUsIDB4YjQsIDB4OWIsIDB4ZDIsIDB4ZTksIDB4MTcgfSwKKwl9LCB7CisJCS5rZXkJPSB7IFswIC4uLiAzMV0gPSAweDBjIH0sCisJCS5rc2l6ZQk9IDMyLAorCQkucGxhaW50ZXh0ID0gIlRlc3QgV2l0aCBUcnVuY2F0aW9uIiwKKwkJLnBzaXplCT0gMjAsCisJCS5kaWdlc3QJPSB7IDB4NzUsIDB4NDYsIDB4YWYsIDB4MDEsIDB4ODQsIDB4MWYsIDB4YzAsIDB4OWIsCisJCQkgICAgMHgxYSwgMHhiOSwgMHhjMywgMHg3NCwgMHg5YSwgMHg1ZiwgMHgxYywgMHgxNywKKwkJCSAgICAweGQ0LCAweGY1LCAweDg5LCAweDY2LCAweDhhLCAweDU4LCAweDdiLCAweDI3LAorCQkJICAgIDB4MDAsIDB4YTksIDB4YzksIDB4N2MsIDB4MTEsIDB4OTMsIDB4Y2YsIDB4NDIgfSwKKwl9LCB7CisJCS5rZXkJPSB7IFswIC4uLiA3OV0gPSAweGFhIH0sCisJCS5rc2l6ZQk9IDgwLAorCQkucGxhaW50ZXh0ID0gIlRlc3QgVXNpbmcgTGFyZ2VyIFRoYW4gQmxvY2stU2l6ZSBLZXkgLSBIYXNoIEtleSBGaXJzdCIsCisJCS5wc2l6ZQk9IDU0LAorCQkuZGlnZXN0CT0geyAweDY5LCAweDUzLCAweDAyLCAweDVlLCAweGQ5LCAweDZmLCAweDBjLCAweDA5LAorCQkJICAgIDB4ZjgsIDB4MGEsIDB4OTYsIDB4ZjcsIDB4OGUsIDB4NjUsIDB4MzgsIDB4ZGIsCisJCQkgICAgMHhlMiwgMHhlNywgMHhiOCwgMHgyMCwgMHhlMywgMHhkZCwgMHg5NywgMHgwZSwKKwkJCSAgICAweDdkLCAweGRkLCAweDM5LCAweDA5LCAweDFiLCAweDMyLCAweDM1LCAweDJmIH0sCisJfSwgeworCQkua2V5CT0geyBbMCAuLi4gNzldID0gMHhhYSB9LAorCQkua3NpemUJPSA4MCwKKwkJLnBsYWludGV4dCA9ICJUZXN0IFVzaW5nIExhcmdlciBUaGFuIEJsb2NrLVNpemUgS2V5IGFuZCBMYXJnZXIgVGhhbiAiCisJCQkgICAgICJPbmUgQmxvY2stU2l6ZSBEYXRhIiwKKwkJLnBzaXplCT0gNzMsCisJCS5kaWdlc3QJPSB7IDB4NjMsIDB4NTUsIDB4YWMsIDB4MjIsIDB4ZTgsIDB4OTAsIDB4ZDAsIDB4YTMsCisJCQkgICAgMHhjOCwgMHg0OCwgMHgxYSwgMHg1YywgMHhhNCwgMHg4MiwgMHg1YiwgMHhjOCwKKwkJCSAgICAweDg0LCAweGQzLCAweGU3LCAweGExLCAweGZmLCAweDk4LCAweGEyLCAweGZjLAorCQkJICAgIDB4MmEsIDB4YzcsIDB4ZDgsIDB4ZTAsIDB4NjQsIDB4YzMsIDB4YjIsIDB4ZTYgfSwKKwl9LAorfTsKKworI2VuZGlmCS8qIENPTkZJR19DUllQVE9fSE1BQyAqLworCisvKgorICogREVTIHRlc3QgdmVjdG9ycy4KKyAqLworI2RlZmluZSBERVNfRU5DX1RFU1RfVkVDVE9SUwkJMTAKKyNkZWZpbmUgREVTX0RFQ19URVNUX1ZFQ1RPUlMJCTQKKyNkZWZpbmUgREVTX0NCQ19FTkNfVEVTVF9WRUNUT1JTCTUKKyNkZWZpbmUgREVTX0NCQ19ERUNfVEVTVF9WRUNUT1JTCTQKKyNkZWZpbmUgREVTM19FREVfRU5DX1RFU1RfVkVDVE9SUwkzCisjZGVmaW5lIERFUzNfRURFX0RFQ19URVNUX1ZFQ1RPUlMJMworCitzdGF0aWMgc3RydWN0IGNpcGhlcl90ZXN0dmVjIGRlc19lbmNfdHZfdGVtcGxhdGVbXSA9IHsKKwl7IC8qIEZyb20gQXBwbGllZCBDcnlwdG9ncmFwaHkgKi8KKwkJLmtleQk9IHsgMHgwMSwgMHgyMywgMHg0NSwgMHg2NywgMHg4OSwgMHhhYiwgMHhjZCwgMHhlZiB9LAorCQkua2xlbgk9IDgsCisJCS5pbnB1dAk9IHsgMHgwMSwgMHgyMywgMHg0NSwgMHg2NywgMHg4OSwgMHhhYiwgMHhjZCwgMHhlNyB9LAorCQkuaWxlbgk9IDgsCisJCS5yZXN1bHQJPSB7IDB4YzksIDB4NTcsIDB4NDQsIDB4MjUsIDB4NmEsIDB4NWUsIDB4ZDMsIDB4MWQgfSwKKwkJLnJsZW4JPSA4LAorCX0sIHsgLyogU2FtZSBrZXksIGRpZmZlcmVudCBwbGFpbnRleHQgYmxvY2sgKi8KKwkJLmtleQk9IHsgMHgwMSwgMHgyMywgMHg0NSwgMHg2NywgMHg4OSwgMHhhYiwgMHhjZCwgMHhlZiB9LAorCQkua2xlbgk9IDgsCisJCS5pbnB1dAk9IHsgMHgyMiwgMHgzMywgMHg0NCwgMHg1NSwgMHg2NiwgMHg3NywgMHg4OCwgMHg5OSB9LAorCQkuaWxlbgk9IDgsCisJCS5yZXN1bHQJPSB7IDB4ZjcsIDB4OWMsIDB4ODksIDB4MmEsIDB4MzMsIDB4OGYsIDB4NGEsIDB4OGIgfSwKKwkJLnJsZW4JPSA4LAorCX0sIHsgLyogU2JveCB0ZXN0IGZyb20gTkJTICovCisJCS5rZXkJPSB7IDB4N2MsIDB4YTEsIDB4MTAsIDB4NDUsIDB4NGEsIDB4MWEsIDB4NmUsIDB4NTcgfSwKKwkJLmtsZW4JPSA4LAorCQkuaW5wdXQJPSB7IDB4MDEsIDB4YTEsIDB4ZDYsIDB4ZDAsIDB4MzksIDB4NzcsIDB4NjcsIDB4NDIgfSwKKwkJLmlsZW4JPSA4LAorCQkucmVzdWx0CT0geyAweDY5LCAweDBmLCAweDViLCAweDBkLCAweDlhLCAweDI2LCAweDkzLCAweDliIH0sCisJCS5ybGVuCT0gOCwKKwl9LCB7IC8qIFRocmVlIGJsb2NrcyAqLworCQkua2V5CT0geyAweDAxLCAweDIzLCAweDQ1LCAweDY3LCAweDg5LCAweGFiLCAweGNkLCAweGVmIH0sCisJCS5rbGVuCT0gOCwKKwkJLmlucHV0CT0geyAweDAxLCAweDIzLCAweDQ1LCAweDY3LCAweDg5LCAweGFiLCAweGNkLCAweGU3LAorCQkJICAgIDB4MjIsIDB4MzMsIDB4NDQsIDB4NTUsIDB4NjYsIDB4NzcsIDB4ODgsIDB4OTksCisJCQkgICAgMHhjYSwgMHhmZSwgMHhiYSwgMHhiZSwgMHhmZSwgMHhlZCwgMHhiZSwgMHhlZiB9LAorCQkuaWxlbgk9IDI0LAorCQkucmVzdWx0CT0geyAweGM5LCAweDU3LCAweDQ0LCAweDI1LCAweDZhLCAweDVlLCAweGQzLCAweDFkLAorCQkJICAgIDB4ZjcsIDB4OWMsIDB4ODksIDB4MmEsIDB4MzMsIDB4OGYsIDB4NGEsIDB4OGIsCisJCQkgICAgMHhiNCwgMHg5OSwgMHgyNiwgMHhmNywgMHgxZiwgMHhlMSwgMHhkNCwgMHg5MCB9LAorCQkucmxlbgk9IDI0LAorCX0sIHsgLyogV2VhayBrZXkgKi8KKwkJLmZhaWwJPSAxLAorCQkud2sJPSAxLAorCQkua2V5CT0geyAweDAxLCAweDAxLCAweDAxLCAweDAxLCAweDAxLCAweDAxLCAweDAxLCAweDAxIH0sCisJCS5rbGVuCT0gOCwKKwkJLmlucHV0CT0geyAweDAxLCAweDIzLCAweDQ1LCAweDY3LCAweDg5LCAweGFiLCAweGNkLCAweGU3IH0sCisJCS5pbGVuCT0gOCwKKwkJLnJlc3VsdAk9IHsgMHhjOSwgMHg1NywgMHg0NCwgMHgyNSwgMHg2YSwgMHg1ZSwgMHhkMywgMHgxZCB9LAorCQkucmxlbgk9IDgsCisJfSwgeyAvKiBUd28gYmxvY2tzIC0tIGZvciB0ZXN0aW5nIGVuY3J5cHRpb24gYWNyb3NzIHBhZ2VzICovCisJCS5rZXkJPSB7IDB4MDEsIDB4MjMsIDB4NDUsIDB4NjcsIDB4ODksIDB4YWIsIDB4Y2QsIDB4ZWYgfSwKKwkJLmtsZW4JPSA4LAorCQkuaW5wdXQJPSB7IDB4MDEsIDB4MjMsIDB4NDUsIDB4NjcsIDB4ODksIDB4YWIsIDB4Y2QsIDB4ZTcsCisJCQkgICAgMHgyMiwgMHgzMywgMHg0NCwgMHg1NSwgMHg2NiwgMHg3NywgMHg4OCwgMHg5OSB9LAorCQkuaWxlbgk9IDE2LAorCQkucmVzdWx0CT0geyAweGM5LCAweDU3LCAweDQ0LCAweDI1LCAweDZhLCAweDVlLCAweGQzLCAweDFkLAorCQkJICAgIDB4ZjcsIDB4OWMsIDB4ODksIDB4MmEsIDB4MzMsIDB4OGYsIDB4NGEsIDB4OGIgfSwKKwkJLnJsZW4JPSAxNiwKKwkJLm5wCT0gMiwKKwkJLnRhcAk9IHsgOCwgOCB9CisJfSwgeyAvKiBGb3VyIGJsb2NrcyAtLSBmb3IgdGVzdGluZyBlbmNyeXB0aW9uIHdpdGggY2h1bmtpbmcgKi8KKwkJLmtleQk9IHsgMHgwMSwgMHgyMywgMHg0NSwgMHg2NywgMHg4OSwgMHhhYiwgMHhjZCwgMHhlZiB9LAorCQkua2xlbgk9IDgsCisJCS5pbnB1dAk9IHsgMHgwMSwgMHgyMywgMHg0NSwgMHg2NywgMHg4OSwgMHhhYiwgMHhjZCwgMHhlNywKKwkJCSAgICAweDIyLCAweDMzLCAweDQ0LCAweDU1LCAweDY2LCAweDc3LCAweDg4LCAweDk5LAorCQkJICAgIDB4Y2EsIDB4ZmUsIDB4YmEsIDB4YmUsIDB4ZmUsIDB4ZWQsIDB4YmUsIDB4ZWYsCisJCQkgICAgMHgyMiwgMHgzMywgMHg0NCwgMHg1NSwgMHg2NiwgMHg3NywgMHg4OCwgMHg5OSB9LAorCQkuaWxlbgk9IDMyLAorCQkucmVzdWx0CT0geyAweGM5LCAweDU3LCAweDQ0LCAweDI1LCAweDZhLCAweDVlLCAweGQzLCAweDFkLAorCQkJICAgIDB4ZjcsIDB4OWMsIDB4ODksIDB4MmEsIDB4MzMsIDB4OGYsIDB4NGEsIDB4OGIsCisJCQkgICAgMHhiNCwgMHg5OSwgMHgyNiwgMHhmNywgMHgxZiwgMHhlMSwgMHhkNCwgMHg5MCwKKwkJCSAgICAweGY3LCAweDljLCAweDg5LCAweDJhLCAweDMzLCAweDhmLCAweDRhLCAweDhiIH0sCisJCS5ybGVuCT0gMzIsCisJCS5ucAk9IDMsCisJCS50YXAJPSB7IDE0LCAxMCwgOCB9IAorCX0sIHsKKwkJLmtleQk9IHsgMHgwMSwgMHgyMywgMHg0NSwgMHg2NywgMHg4OSwgMHhhYiwgMHhjZCwgMHhlZiB9LAorCQkua2xlbgk9IDgsCisJCS5pbnB1dAk9IHsgMHgwMSwgMHgyMywgMHg0NSwgMHg2NywgMHg4OSwgMHhhYiwgMHhjZCwgMHhlNywKKwkJCSAgICAweDIyLCAweDMzLCAweDQ0LCAweDU1LCAweDY2LCAweDc3LCAweDg4LCAweDk5LAorCQkJICAgIDB4Y2EsIDB4ZmUsIDB4YmEsIDB4YmUsIDB4ZmUsIDB4ZWQsIDB4YmUsIDB4ZWYgfSwKKwkJLmlsZW4JPSAyNCwKKwkJLnJlc3VsdAk9IHsgMHhjOSwgMHg1NywgMHg0NCwgMHgyNSwgMHg2YSwgMHg1ZSwgMHhkMywgMHgxZCwKKwkJCSAgICAweGY3LCAweDljLCAweDg5LCAweDJhLCAweDMzLCAweDhmLCAweDRhLCAweDhiLAorCQkJICAgIDB4YjQsIDB4OTksIDB4MjYsIDB4ZjcsIDB4MWYsIDB4ZTEsIDB4ZDQsIDB4OTAgfSwKKwkJLnJsZW4JPSAyNCwKKwkJLm5wCT0gNCwKKwkJLnRhcAk9IHsgMiwgMSwgMywgMTggfSAKKwl9LCB7CisJCS5rZXkJPSB7IDB4MDEsIDB4MjMsIDB4NDUsIDB4NjcsIDB4ODksIDB4YWIsIDB4Y2QsIDB4ZWYgfSwKKwkJLmtsZW4JPSA4LAorCQkuaW5wdXQJPSB7IDB4MDEsIDB4MjMsIDB4NDUsIDB4NjcsIDB4ODksIDB4YWIsIDB4Y2QsIDB4ZTcsCisJCQkgICAgMHgyMiwgMHgzMywgMHg0NCwgMHg1NSwgMHg2NiwgMHg3NywgMHg4OCwgMHg5OSB9LAorCQkuaWxlbgk9IDE2LAorCQkucmVzdWx0CT0geyAweGM5LCAweDU3LCAweDQ0LCAweDI1LCAweDZhLCAweDVlLCAweGQzLCAweDFkLAorCQkJICAgIDB4ZjcsIDB4OWMsIDB4ODksIDB4MmEsIDB4MzMsIDB4OGYsIDB4NGEsIDB4OGIgfSwKKwkJLnJsZW4JPSAxNiwKKwkJLm5wCT0gNSwKKwkJLnRhcAk9IHsgMiwgMiwgMiwgMiwgOCB9IAorCX0sIHsKKwkJLmtleQk9IHsgMHgwMSwgMHgyMywgMHg0NSwgMHg2NywgMHg4OSwgMHhhYiwgMHhjZCwgMHhlZiB9LAorCQkua2xlbgk9IDgsCisJCS5pbnB1dAk9IHsgMHgwMSwgMHgyMywgMHg0NSwgMHg2NywgMHg4OSwgMHhhYiwgMHhjZCwgMHhlNyB9LAorCQkuaWxlbgk9IDgsCisJCS5yZXN1bHQJPSB7IDB4YzksIDB4NTcsIDB4NDQsIDB4MjUsIDB4NmEsIDB4NWUsIDB4ZDMsIDB4MWQgfSwKKwkJLnJsZW4JPSA4LAorCQkubnAJPSA4LAorCQkudGFwCT0geyAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxIH0gCisJfSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgY2lwaGVyX3Rlc3R2ZWMgZGVzX2RlY190dl90ZW1wbGF0ZVtdID0geworCXsgLyogRnJvbSBBcHBsaWVkIENyeXB0b2dyYXBoeSAqLworCQkua2V5CT0geyAweDAxLCAweDIzLCAweDQ1LCAweDY3LCAweDg5LCAweGFiLCAweGNkLCAweGVmIH0sCisJCS5rbGVuCT0gOCwKKwkJLmlucHV0CT0geyAweGM5LCAweDU3LCAweDQ0LCAweDI1LCAweDZhLCAweDVlLCAweGQzLCAweDFkIH0sCisJCS5pbGVuCT0gOCwKKwkJLnJlc3VsdAk9IHsgMHgwMSwgMHgyMywgMHg0NSwgMHg2NywgMHg4OSwgMHhhYiwgMHhjZCwgMHhlNyB9LAorCQkucmxlbgk9IDgsCisJfSwgeyAvKiBTYm94IHRlc3QgZnJvbSBOQlMgKi8KKwkJLmtleQk9IHsgMHg3YywgMHhhMSwgMHgxMCwgMHg0NSwgMHg0YSwgMHgxYSwgMHg2ZSwgMHg1NyB9LAkJCisJCS5rbGVuCT0gOCwKKwkJLmlucHV0CT0geyAweDY5LCAweDBmLCAweDViLCAweDBkLCAweDlhLCAweDI2LCAweDkzLCAweDliIH0sCisJCS5pbGVuCT0gOCwKKwkJLnJlc3VsdAk9IHsgMHgwMSwgMHhhMSwgMHhkNiwgMHhkMCwgMHgzOSwgMHg3NywgMHg2NywgMHg0MiB9LAorCQkucmxlbgk9IDgsCisJfSwgeyAvKiBUd28gYmxvY2tzLCBmb3IgY2h1bmtpbmcgdGVzdCAqLworCQkua2V5CT0geyAweDAxLCAweDIzLCAweDQ1LCAweDY3LCAweDg5LCAweGFiLCAweGNkLCAweGVmIH0sCisJCS5rbGVuCT0gOCwKKwkJLmlucHV0CT0geyAweGM5LCAweDU3LCAweDQ0LCAweDI1LCAweDZhLCAweDVlLCAweGQzLCAweDFkLAorCQkJICAgIDB4NjksIDB4MGYsIDB4NWIsIDB4MGQsIDB4OWEsIDB4MjYsIDB4OTMsIDB4OWIgfSwKKwkJLmlsZW4JPSAxNiwKKwkJLnJlc3VsdAk9IHsgMHgwMSwgMHgyMywgMHg0NSwgMHg2NywgMHg4OSwgMHhhYiwgMHhjZCwgMHhlNywKKwkJCSAgICAweGEzLCAweDk5LCAweDdiLCAweGNhLCAweGFmLCAweDY5LCAweGEwLCAweGY1IH0sCisJCS5ybGVuCT0gMTYsCisJCS5ucAk9IDIsCisJCS50YXAJPSB7IDgsIDggfQorCX0sIHsKKwkJLmtleQk9IHsgMHgwMSwgMHgyMywgMHg0NSwgMHg2NywgMHg4OSwgMHhhYiwgMHhjZCwgMHhlZiB9LAorCQkua2xlbgk9IDgsCisJCS5pbnB1dAk9IHsgMHhjOSwgMHg1NywgMHg0NCwgMHgyNSwgMHg2YSwgMHg1ZSwgMHhkMywgMHgxZCwKKwkJCSAgICAweDY5LCAweDBmLCAweDViLCAweDBkLCAweDlhLCAweDI2LCAweDkzLCAweDliIH0sCisJCS5pbGVuCT0gMTYsCisJCS5yZXN1bHQJPSB7IDB4MDEsIDB4MjMsIDB4NDUsIDB4NjcsIDB4ODksIDB4YWIsIDB4Y2QsIDB4ZTcsCisJCQkgICAgMHhhMywgMHg5OSwgMHg3YiwgMHhjYSwgMHhhZiwgMHg2OSwgMHhhMCwgMHhmNSB9LAorCQkucmxlbgk9IDE2LAorCQkubnAJPSAzLAorCQkudGFwCT0geyAzLCAxMiwgMSB9CisJfSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgY2lwaGVyX3Rlc3R2ZWMgZGVzX2NiY19lbmNfdHZfdGVtcGxhdGVbXSA9IHsKKwl7IC8qIEZyb20gT3BlblNTTCAqLworCQkua2V5CT0geyAweDAxLCAweDIzLCAweDQ1LCAweDY3LCAweDg5LCAweGFiLCAweGNkLCAweGVmfSwKKwkJLmtsZW4JPSA4LAorCQkuaXYJPSB7IDB4ZmUsIDB4ZGMsIDB4YmEsIDB4OTgsIDB4NzYsIDB4NTQsIDB4MzIsIDB4MTB9LAkJCisJCS5pbnB1dAk9IHsgMHgzNywgMHgzNiwgMHgzNSwgMHgzNCwgMHgzMywgMHgzMiwgMHgzMSwgMHgyMCwgCisJCQkgICAgMHg0ZSwgMHg2ZiwgMHg3NywgMHgyMCwgMHg2OSwgMHg3MywgMHgyMCwgMHg3NCwgCisJCQkgICAgMHg2OCwgMHg2NSwgMHgyMCwgMHg3NCwgMHg2OSwgMHg2ZCwgMHg2NSwgMHgyMCB9LCAKKwkJLmlsZW4JPSAyNCwKKwkJLnJlc3VsdAk9IHsgMHhjYywgMHhkMSwgMHg3MywgMHhmZiwgMHhhYiwgMHgyMCwgMHgzOSwgMHhmNCwgCisJCQkgICAgMHhhYywgMHhkOCwgMHhhZSwgMHhmZCwgMHhkZiwgMHhkOCwgMHhhMSwgMHhlYiwgCisJCQkgICAgMHg0NiwgMHg4ZSwgMHg5MSwgMHgxNSwgMHg3OCwgMHg4OCwgMHhiYSwgMHg2OCB9LCAKKwkJLnJsZW4JPSAyNCwKKwl9LCB7IC8qIEZJUFMgUHViIDgxICovCisJCS5rZXkJPSB7IDB4MDEsIDB4MjMsIDB4NDUsIDB4NjcsIDB4ODksIDB4YWIsIDB4Y2QsIDB4ZWYgfSwKKwkJLmtsZW4JPSA4LAorCQkuaXYJPSB7IDB4MTIsIDB4MzQsIDB4NTYsIDB4NzgsIDB4OTAsIDB4YWIsIDB4Y2QsIDB4ZWYgfSwJCQorCQkuaW5wdXQJPSB7IDB4NGUsIDB4NmYsIDB4NzcsIDB4MjAsIDB4NjksIDB4NzMsIDB4MjAsIDB4NzQgfSwKKwkJLmlsZW4JPSA4LAorCQkucmVzdWx0CT0geyAweGU1LCAweGM3LCAweGNkLCAweGRlLCAweDg3LCAweDJiLCAweGYyLCAweDdjIH0sCisJCS5ybGVuCT0gOCwKKwl9LCB7CisJCS5rZXkJPSB7IDB4MDEsIDB4MjMsIDB4NDUsIDB4NjcsIDB4ODksIDB4YWIsIDB4Y2QsIDB4ZWYgfSwKKwkJLmtsZW4JPSA4LAorCQkuaXYJPSB7IDB4ZTUsIDB4YzcsIDB4Y2QsIDB4ZGUsIDB4ODcsIDB4MmIsIDB4ZjIsIDB4N2MgfSwKKwkJLmlucHV0CT0geyAweDY4LCAweDY1LCAweDIwLCAweDc0LCAweDY5LCAweDZkLCAweDY1LCAweDIwIH0sCisJCS5pbGVuCT0gOCwKKwkJLnJlc3VsdAk9IHsgMHg0MywgMHhlOSwgMHgzNCwgMHgwMCwgMHg4YywgMHgzOCwgMHg5YywgMHgwZiB9LAorCQkucmxlbgk9IDgsCisJfSwgewkKKwkJLmtleQk9IHsgMHgwMSwgMHgyMywgMHg0NSwgMHg2NywgMHg4OSwgMHhhYiwgMHhjZCwgMHhlZiB9LAorCQkua2xlbgk9IDgsCisJCS5pdgk9IHsgMHg0MywgMHhlOSwgMHgzNCwgMHgwMCwgMHg4YywgMHgzOCwgMHg5YywgMHgwZiB9LAorCQkuaW5wdXQJPSB7IDB4NjYsIDB4NmYsIDB4NzIsIDB4MjAsIDB4NjEsIDB4NmMsIDB4NmMsIDB4MjAgfSwKKwkJLmlsZW4JPSA4LAorCQkucmVzdWx0CT0geyAweDY4LCAweDM3LCAweDg4LCAweDQ5LCAweDlhLCAweDdjLCAweDA1LCAweGY2IH0sCisJCS5ybGVuCT0gOCwKKwl9LCB7IC8qIENvcHkgb2Ygb3BlbnNzbCB2ZWN0b3IgZm9yIGNodW5rIHRlc3RpbmcgKi8JCisJICAgICAvKiBGcm9tIE9wZW5TU0wgKi8KKwkJLmtleQk9IHsgMHgwMSwgMHgyMywgMHg0NSwgMHg2NywgMHg4OSwgMHhhYiwgMHhjZCwgMHhlZn0sCisJCS5rbGVuCT0gOCwKKwkJLml2CT0geyAweGZlLCAweGRjLCAweGJhLCAweDk4LCAweDc2LCAweDU0LCAweDMyLCAweDEwfSwJCQorCQkuaW5wdXQJPSB7IDB4MzcsIDB4MzYsIDB4MzUsIDB4MzQsIDB4MzMsIDB4MzIsIDB4MzEsIDB4MjAsIAorCQkJICAgIDB4NGUsIDB4NmYsIDB4NzcsIDB4MjAsIDB4NjksIDB4NzMsIDB4MjAsIDB4NzQsIAorCQkJICAgIDB4NjgsIDB4NjUsIDB4MjAsIDB4NzQsIDB4NjksIDB4NmQsIDB4NjUsIDB4MjAgfSwgCisJCS5pbGVuCT0gMjQsCisJCS5yZXN1bHQJPSB7IDB4Y2MsIDB4ZDEsIDB4NzMsIDB4ZmYsIDB4YWIsIDB4MjAsIDB4MzksIDB4ZjQsIAorCQkJICAgIDB4YWMsIDB4ZDgsIDB4YWUsIDB4ZmQsIDB4ZGYsIDB4ZDgsIDB4YTEsIDB4ZWIsIAorCQkJICAgIDB4NDYsIDB4OGUsIDB4OTEsIDB4MTUsIDB4NzgsIDB4ODgsIDB4YmEsIDB4NjggfSwgCisJCS5ybGVuCT0gMjQsCisJCS5ucAk9IDIsCisJCS50YXAJPSB7IDEzLCAxMSB9CisJfSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgY2lwaGVyX3Rlc3R2ZWMgZGVzX2NiY19kZWNfdHZfdGVtcGxhdGVbXSA9IHsKKwl7IC8qIEZJUFMgUHViIDgxICovCisJCS5rZXkJPSB7IDB4MDEsIDB4MjMsIDB4NDUsIDB4NjcsIDB4ODksIDB4YWIsIDB4Y2QsIDB4ZWYgfSwKKwkJLmtsZW4JPSA4LAorCQkuaXYJPSB7IDB4MTIsIDB4MzQsIDB4NTYsIDB4NzgsIDB4OTAsIDB4YWIsIDB4Y2QsIDB4ZWYgfSwKKwkJLmlucHV0CT0geyAweGU1LCAweGM3LCAweGNkLCAweGRlLCAweDg3LCAweDJiLCAweGYyLCAweDdjIH0sCisJCS5pbGVuCT0gOCwKKwkJLnJlc3VsdAk9IHsgMHg0ZSwgMHg2ZiwgMHg3NywgMHgyMCwgMHg2OSwgMHg3MywgMHgyMCwgMHg3NCB9LAorCQkucmxlbgk9IDgsCisJfSwgeworCQkua2V5CT0geyAweDAxLCAweDIzLCAweDQ1LCAweDY3LCAweDg5LCAweGFiLCAweGNkLCAweGVmIH0sCisJCS5rbGVuCT0gOCwKKwkJLml2CT0geyAweGU1LCAweGM3LCAweGNkLCAweGRlLCAweDg3LCAweDJiLCAweGYyLCAweDdjIH0sCQkKKwkJLmlucHV0CT0geyAweDQzLCAweGU5LCAweDM0LCAweDAwLCAweDhjLCAweDM4LCAweDljLCAweDBmIH0sCisJCS5pbGVuCT0gOCwKKwkJLnJlc3VsdAk9IHsgMHg2OCwgMHg2NSwgMHgyMCwgMHg3NCwgMHg2OSwgMHg2ZCwgMHg2NSwgMHgyMCB9LCAKKwkJLnJsZW4JPSA4LAorCX0sIHsKKwkJLmtleQk9IHsgMHgwMSwgMHgyMywgMHg0NSwgMHg2NywgMHg4OSwgMHhhYiwgMHhjZCwgMHhlZiB9LAorCQkua2xlbgk9IDgsCisJCS5pdgk9IHsgMHg0MywgMHhlOSwgMHgzNCwgMHgwMCwgMHg4YywgMHgzOCwgMHg5YywgMHgwZiB9LAorCQkuaW5wdXQJPSB7IDB4NjgsIDB4MzcsIDB4ODgsIDB4NDksIDB4OWEsIDB4N2MsIDB4MDUsIDB4ZjYgfSwgCisJCS5pbGVuCT0gOCwKKwkJLnJlc3VsdAk9IHsgMHg2NiwgMHg2ZiwgMHg3MiwgMHgyMCwgMHg2MSwgMHg2YywgMHg2YywgMHgyMCB9LAorCQkucmxlbgk9IDgsCisJfSwgeyAvKiBDb3B5IG9mIGFib3ZlLCBmb3IgY2h1bmsgdGVzdGluZyAqLwkKKwkJLmtleQk9IHsgMHgwMSwgMHgyMywgMHg0NSwgMHg2NywgMHg4OSwgMHhhYiwgMHhjZCwgMHhlZiB9LAorCQkua2xlbgk9IDgsCisJCS5pdgk9IHsgMHg0MywgMHhlOSwgMHgzNCwgMHgwMCwgMHg4YywgMHgzOCwgMHg5YywgMHgwZiB9LAorCQkuaW5wdXQJPSB7IDB4NjgsIDB4MzcsIDB4ODgsIDB4NDksIDB4OWEsIDB4N2MsIDB4MDUsIDB4ZjYgfSwgCisJCS5pbGVuCT0gOCwKKwkJLnJlc3VsdAk9IHsgMHg2NiwgMHg2ZiwgMHg3MiwgMHgyMCwgMHg2MSwgMHg2YywgMHg2YywgMHgyMCB9LAorCQkucmxlbgk9IDgsCisJCS5ucAk9IDIsCisJCS50YXAJPSB7IDQsIDQgfQorCX0sCit9OworCisvKgorICogV2UgcmVhbGx5IG5lZWQgc29tZSBtb3JlIHRlc3QgdmVjdG9ycywgZXNwZWNpYWxseSBmb3IgREVTMyBDQkMuCisgKi8KK3N0YXRpYyBzdHJ1Y3QgY2lwaGVyX3Rlc3R2ZWMgZGVzM19lZGVfZW5jX3R2X3RlbXBsYXRlW10gPSB7CisJeyAvKiBUaGVzZSBhcmUgZnJvbSBvcGVuc3NsICovCisJCS5rZXkJPSB7IDB4MDEsIDB4MjMsIDB4NDUsIDB4NjcsIDB4ODksIDB4YWIsIDB4Y2QsIDB4ZWYsCisJCQkgICAgMHg1NSwgMHg1NSwgMHg1NSwgMHg1NSwgMHg1NSwgMHg1NSwgMHg1NSwgMHg1NSwKKwkJCSAgICAweGZlLCAweGRjLCAweGJhLCAweDk4LCAweDc2LCAweDU0LCAweDMyLCAweDEwfSwKKwkJLmtsZW4JPSAyNCwKKwkJLmlucHV0CT0geyAweDczLCAweDZmLCAweDZkLCAweDY1LCAweDY0LCAweDYxLCAweDc0LCAweDYxIH0sCisJCS5pbGVuCT0gOCwKKwkJLnJlc3VsdAk9IHsgMHgxOCwgMHhkNywgMHg0OCwgMHhlNSwgMHg2MywgMHg2MiwgMHgwNSwgMHg3MiB9LAorCQkucmxlbgk9IDgsCisJfSwgeworCQkua2V5CT0geyAweDAzLCAweDUyLCAweDAyLCAweDA3LCAweDY3LCAweDIwLCAweDgyLCAweDE3LAorCQkJICAgIDB4ODYsIDB4MDIsIDB4ODcsIDB4NjYsIDB4NTksIDB4MDgsIDB4MjEsIDB4OTgsCisJCQkgICAgMHg2NCwgMHgwNSwgMHg2YSwgMHhiZCwgMHhmZSwgMHhhOSwgMHgzNCwgMHg1NyB9LAorCQkua2xlbgk9IDI0LAorCQkuaW5wdXQJPSB7IDB4NzMsIDB4NzEsIDB4NzUsIDB4NjksIDB4NjcsIDB4NjcsIDB4NmMsIDB4NjUgfSwKKwkJLmlsZW4JPSA4LAorCQkucmVzdWx0CT0geyAweGMwLCAweDdkLCAweDJhLCAweDBmLCAweGE1LCAweDY2LCAweGZhLCAweDMwIH0sCisJCS5ybGVuCT0gOCwKKwl9LCB7CisJCS5rZXkJPSB7IDB4MTAsIDB4NDYsIDB4MTAsIDB4MzQsIDB4ODksIDB4OTgsIDB4ODAsIDB4MjAsCisJCQkgICAgMHg5MSwgMHgwNywgMHhkMCwgMHgxNSwgMHg4OSwgMHgxOSwgMHgwMSwgMHgwMSwKKwkJCSAgICAweDE5LCAweDA3LCAweDkyLCAweDEwLCAweDk4LCAweDFhLCAweDAxLCAweDAxIH0sCisJCS5rbGVuCT0gMjQsCisJCS5pbnB1dAk9IHsgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCB9LAorCQkuaWxlbgk9IDgsCisJCS5yZXN1bHQJPSB7IDB4ZTEsIDB4ZWYsIDB4NjIsIDB4YzMsIDB4MzIsIDB4ZmUsIDB4ODIsIDB4NWIgfSwKKwkJLnJsZW4JPSA4LAorCX0sCit9OworCitzdGF0aWMgc3RydWN0IGNpcGhlcl90ZXN0dmVjIGRlczNfZWRlX2RlY190dl90ZW1wbGF0ZVtdID0geworCXsgLyogVGhlc2UgYXJlIGZyb20gb3BlbnNzbCAqLworCQkua2V5CT0geyAweDAxLCAweDIzLCAweDQ1LCAweDY3LCAweDg5LCAweGFiLCAweGNkLCAweGVmLAorCQkJICAgIDB4NTUsIDB4NTUsIDB4NTUsIDB4NTUsIDB4NTUsIDB4NTUsIDB4NTUsIDB4NTUsCisJCQkgICAgMHhmZSwgMHhkYywgMHhiYSwgMHg5OCwgMHg3NiwgMHg1NCwgMHgzMiwgMHgxMH0sCisJCS5rbGVuCT0gMjQsCisJCS5pbnB1dAk9IHsgMHgxOCwgMHhkNywgMHg0OCwgMHhlNSwgMHg2MywgMHg2MiwgMHgwNSwgMHg3MiB9LAorCQkuaWxlbgk9IDgsCisJCS5yZXN1bHQJPSB7IDB4NzMsIDB4NmYsIDB4NmQsIDB4NjUsIDB4NjQsIDB4NjEsIDB4NzQsIDB4NjEgfSwKKwkJLnJsZW4JPSA4LAorCX0sIHsKKwkJLmtleQk9IHsgMHgwMywgMHg1MiwgMHgwMiwgMHgwNywgMHg2NywgMHgyMCwgMHg4MiwgMHgxNywKKwkJCSAgICAweDg2LCAweDAyLCAweDg3LCAweDY2LCAweDU5LCAweDA4LCAweDIxLCAweDk4LAorCQkJICAgIDB4NjQsIDB4MDUsIDB4NmEsIDB4YmQsIDB4ZmUsIDB4YTksIDB4MzQsIDB4NTcgfSwKKwkJLmtsZW4JPSAyNCwKKwkJLmlucHV0CT0geyAweGMwLCAweDdkLCAweDJhLCAweDBmLCAweGE1LCAweDY2LCAweGZhLCAweDMwIH0sCisJCS5pbGVuCT0gOCwKKwkJLnJlc3VsdAk9IHsgMHg3MywgMHg3MSwgMHg3NSwgMHg2OSwgMHg2NywgMHg2NywgMHg2YywgMHg2NSB9LAorCQkucmxlbgk9IDgsCisJfSwgeworCQkua2V5CT0geyAweDEwLCAweDQ2LCAweDEwLCAweDM0LCAweDg5LCAweDk4LCAweDgwLCAweDIwLAorCQkJICAgIDB4OTEsIDB4MDcsIDB4ZDAsIDB4MTUsIDB4ODksIDB4MTksIDB4MDEsIDB4MDEsCisJCQkgICAgMHgxOSwgMHgwNywgMHg5MiwgMHgxMCwgMHg5OCwgMHgxYSwgMHgwMSwgMHgwMSB9LAorCQkua2xlbgk9IDI0LAorCQkuaW5wdXQJPSB7IDB4ZTEsIDB4ZWYsIDB4NjIsIDB4YzMsIDB4MzIsIDB4ZmUsIDB4ODIsIDB4NWIgfSwKKwkJLmlsZW4JPSA4LAorCQkucmVzdWx0CT0geyAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwIH0sCisJCS5ybGVuCT0gOCwKKwl9LAorfTsKKworLyoKKyAqIEJsb3dmaXNoIHRlc3QgdmVjdG9ycy4KKyAqLworI2RlZmluZSBCRl9FTkNfVEVTVF9WRUNUT1JTCTYKKyNkZWZpbmUgQkZfREVDX1RFU1RfVkVDVE9SUwk2CisjZGVmaW5lIEJGX0NCQ19FTkNfVEVTVF9WRUNUT1JTCTEKKyNkZWZpbmUgQkZfQ0JDX0RFQ19URVNUX1ZFQ1RPUlMJMQorCitzdGF0aWMgc3RydWN0IGNpcGhlcl90ZXN0dmVjIGJmX2VuY190dl90ZW1wbGF0ZVtdID0geworCXsgLyogREVTIHRlc3QgdmVjdG9ycyBmcm9tIE9wZW5TU0wgKi8KKwkJLmtleQk9IHsgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgfSwKKwkJLmtsZW4JPSA4LAorCQkuaW5wdXQJPSB7IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAgfSwKKwkJLmlsZW4JPSA4LAorCQkucmVzdWx0CT0geyAweDRlLCAweGY5LCAweDk3LCAweDQ1LCAweDYxLCAweDk4LCAweGRkLCAweDc4IH0sCisJCS5ybGVuCT0gOCwKKwl9LCB7CisJCS5rZXkJPSB7IDB4MWYsIDB4MWYsIDB4MWYsIDB4MWYsIDB4MGUsIDB4MGUsIDB4MGUsIDB4MGUgfSwKKwkJLmtsZW4JPSA4LAorCQkuaW5wdXQJPSB7IDB4MDEsIDB4MjMsIDB4NDUsIDB4NjcsIDB4ODksIDB4YWIsIDB4Y2QsIDB4ZWYgfSwKKwkJLmlsZW4JPSA4LAorCQkucmVzdWx0CT0geyAweGE3LCAweDkwLCAweDc5LCAweDUxLCAweDA4LCAweGVhLCAweDNjLCAweGFlIH0sCisJCS5ybGVuCT0gOCwKKwl9LCB7CisJCS5rZXkJPSB7IDB4ZjAsIDB4ZTEsIDB4ZDIsIDB4YzMsIDB4YjQsIDB4YTUsIDB4OTYsIDB4ODcgfSwKKwkJLmtsZW4JPSA4LAorCQkuaW5wdXQJPSB7IDB4ZmUsIDB4ZGMsIDB4YmEsIDB4OTgsIDB4NzYsIDB4NTQsIDB4MzIsIDB4MTAgfSwKKwkJLmlsZW4JPSA4LAorCQkucmVzdWx0CT0geyAweGU4LCAweDdhLCAweDI0LCAweDRlLCAweDJjLCAweGM4LCAweDVlLCAweDgyIH0sCisJCS5ybGVuCT0gOCwKKwl9LCB7IC8qIFZhcnkgdGhlIGtleWxlbmd0aC4uLiAqLwkKKwkJLmtleQk9IHsgMHhmMCwgMHhlMSwgMHhkMiwgMHhjMywgMHhiNCwgMHhhNSwgMHg5NiwgMHg4NywKKwkJCSAgICAweDc4LCAweDY5LCAweDVhLCAweDRiLCAweDNjLCAweDJkLCAweDFlLCAweDBmIH0sCisJCS5rbGVuCT0gMTYsCisJCS5pbnB1dAk9IHsgMHhmZSwgMHhkYywgMHhiYSwgMHg5OCwgMHg3NiwgMHg1NCwgMHgzMiwgMHgxMCB9LAorCQkuaWxlbgk9IDgsCisJCS5yZXN1bHQJPSB7IDB4OTMsIDB4MTQsIDB4MjgsIDB4ODcsIDB4ZWUsIDB4M2IsIDB4ZTEsIDB4NWMgfSwKKwkJLnJsZW4JPSA4LAorCX0sIHsKKwkJLmtleQk9IHsgMHhmMCwgMHhlMSwgMHhkMiwgMHhjMywgMHhiNCwgMHhhNSwgMHg5NiwgMHg4NywKKwkJCSAgICAweDc4LCAweDY5LCAweDVhLCAweDRiLCAweDNjLCAweDJkLCAweDFlLCAweDBmLAorCQkJICAgIDB4MDAsIDB4MTEsIDB4MjIsIDB4MzMsIDB4NDQgfSwKKwkJLmtsZW4JPSAyMSwKKwkJLmlucHV0CT0geyAweGZlLCAweGRjLCAweGJhLCAweDk4LCAweDc2LCAweDU0LCAweDMyLCAweDEwIH0sCisJCS5pbGVuCT0gOCwKKwkJLnJlc3VsdAk9IHsgMHhlNiwgMHhmNSwgMHgxZSwgMHhkNywgMHg5YiwgMHg5ZCwgMHhiMiwgMHgxZiB9LAorCQkucmxlbgk9IDgsCisJfSwgeyAvKiBHZW5lcmF0ZWQgd2l0aCBiZjQ4OCAqLworCQkua2V5CT0geyAweGYwLCAweGUxLCAweGQyLCAweGMzLCAweGI0LCAweGE1LCAweDk2LCAweDg3LAorCQkJICAgIDB4NzgsIDB4NjksIDB4NWEsIDB4NGIsIDB4M2MsIDB4MmQsIDB4MWUsIDB4MGYsCisJCQkgICAgMHgwMCwgMHgxMSwgMHgyMiwgMHgzMywgMHg0NCwgMHg1NSwgMHg2NiwgMHg3NywKKwkJCSAgICAweDA0LCAweDY4LCAweDkxLCAweDA0LCAweGMyLCAweGZkLCAweDNiLCAweDJmLCAKKwkJCSAgICAweDU4LCAweDQwLCAweDIzLCAweDY0LCAweDFhLCAweGJhLCAweDYxLCAweDc2LCAKKwkJCSAgICAweDFmLCAweDFmLCAweDFmLCAweDFmLCAweDBlLCAweDBlLCAweDBlLCAweDBlLCAKKwkJCSAgICAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmIH0sCisJCS5rbGVuCT0gNTYsCisJCS5pbnB1dAk9IHsgMHhmZSwgMHhkYywgMHhiYSwgMHg5OCwgMHg3NiwgMHg1NCwgMHgzMiwgMHgxMCB9LAorCQkuaWxlbgk9IDgsCisJCS5yZXN1bHQJPSB7IDB4YzAsIDB4NDUsIDB4MDQsIDB4MDEsIDB4MmUsIDB4NGUsIDB4MWYsIDB4NTMgfSwKKwkJLnJsZW4JPSA4LAorCX0sCit9OworCitzdGF0aWMgc3RydWN0IGNpcGhlcl90ZXN0dmVjIGJmX2RlY190dl90ZW1wbGF0ZVtdID0geworCXsgLyogREVTIHRlc3QgdmVjdG9ycyBmcm9tIE9wZW5TU0wgKi8KKwkJLmtleQk9IHsgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCB9LAorCQkua2xlbgk9IDgsCisJCS5pbnB1dAk9IHsgMHg0ZSwgMHhmOSwgMHg5NywgMHg0NSwgMHg2MSwgMHg5OCwgMHhkZCwgMHg3OCB9LAorCQkuaWxlbgk9IDgsCisJCS5yZXN1bHQJPSB7IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAgfSwKKwkJLnJsZW4JPSA4LAorCX0sIHsKKwkJLmtleQk9IHsgMHgxZiwgMHgxZiwgMHgxZiwgMHgxZiwgMHgwZSwgMHgwZSwgMHgwZSwgMHgwZSB9LAorCQkua2xlbgk9IDgsCisJCS5pbnB1dAk9IHsgMHhhNywgMHg5MCwgMHg3OSwgMHg1MSwgMHgwOCwgMHhlYSwgMHgzYywgMHhhZSB9LAorCQkuaWxlbgk9IDgsCisJCS5yZXN1bHQJPSB7IDB4MDEsIDB4MjMsIDB4NDUsIDB4NjcsIDB4ODksIDB4YWIsIDB4Y2QsIDB4ZWYgfSwKKwkJLnJsZW4JPSA4LAorCX0sIHsKKwkJLmtleQk9IHsgMHhmMCwgMHhlMSwgMHhkMiwgMHhjMywgMHhiNCwgMHhhNSwgMHg5NiwgMHg4NyB9LAorCQkua2xlbgk9IDgsCisJCS5pbnB1dAk9IHsgMHhlOCwgMHg3YSwgMHgyNCwgMHg0ZSwgMHgyYywgMHhjOCwgMHg1ZSwgMHg4MiB9LAorCQkuaWxlbgk9IDgsCisJCS5yZXN1bHQJPSB7IDB4ZmUsIDB4ZGMsIDB4YmEsIDB4OTgsIDB4NzYsIDB4NTQsIDB4MzIsIDB4MTAgfSwKKwkJLnJsZW4JPSA4LAorCX0sIHsgLyogVmFyeSB0aGUga2V5bGVuZ3RoLi4uICovCQorCQkua2V5CT0geyAweGYwLCAweGUxLCAweGQyLCAweGMzLCAweGI0LCAweGE1LCAweDk2LCAweDg3LAorCQkJICAgIDB4NzgsIDB4NjksIDB4NWEsIDB4NGIsIDB4M2MsIDB4MmQsIDB4MWUsIDB4MGYgfSwKKwkJLmtsZW4JPSAxNiwKKwkJLmlucHV0CT0geyAweDkzLCAweDE0LCAweDI4LCAweDg3LCAweGVlLCAweDNiLCAweGUxLCAweDVjIH0sCisJCS5pbGVuCT0gOCwKKwkJLnJlc3VsdAk9IHsgMHhmZSwgMHhkYywgMHhiYSwgMHg5OCwgMHg3NiwgMHg1NCwgMHgzMiwgMHgxMCB9LAorCQkucmxlbgk9IDgsCisJfSwgeworCQkua2V5CT0geyAweGYwLCAweGUxLCAweGQyLCAweGMzLCAweGI0LCAweGE1LCAweDk2LCAweDg3LAorCQkJICAgIDB4NzgsIDB4NjksIDB4NWEsIDB4NGIsIDB4M2MsIDB4MmQsIDB4MWUsIDB4MGYsCisJCQkgICAgMHgwMCwgMHgxMSwgMHgyMiwgMHgzMywgMHg0NCB9LAorCQkua2xlbgk9IDIxLAorCQkuaW5wdXQJPSB7IDB4ZTYsIDB4ZjUsIDB4MWUsIDB4ZDcsIDB4OWIsIDB4OWQsIDB4YjIsIDB4MWYgfSwKKwkJLmlsZW4JPSA4LAorCQkucmVzdWx0CT0geyAweGZlLCAweGRjLCAweGJhLCAweDk4LCAweDc2LCAweDU0LCAweDMyLCAweDEwIH0sCisJCS5ybGVuCT0gOCwKKwl9LCB7IC8qIEdlbmVyYXRlZCB3aXRoIGJmNDg4LCB1c2luZyBPcGVuU1NMLCBMaWJnY3J5cHQgYW5kIE5ldHRsZSAqLworCQkua2V5CT0geyAweGYwLCAweGUxLCAweGQyLCAweGMzLCAweGI0LCAweGE1LCAweDk2LCAweDg3LAorCQkJICAgIDB4NzgsIDB4NjksIDB4NWEsIDB4NGIsIDB4M2MsIDB4MmQsIDB4MWUsIDB4MGYsCisJCQkgICAgMHgwMCwgMHgxMSwgMHgyMiwgMHgzMywgMHg0NCwgMHg1NSwgMHg2NiwgMHg3NywKKwkJCSAgICAweDA0LCAweDY4LCAweDkxLCAweDA0LCAweGMyLCAweGZkLCAweDNiLCAweDJmLCAKKwkJCSAgICAweDU4LCAweDQwLCAweDIzLCAweDY0LCAweDFhLCAweGJhLCAweDYxLCAweDc2LCAKKwkJCSAgICAweDFmLCAweDFmLCAweDFmLCAweDFmLCAweDBlLCAweDBlLCAweDBlLCAweDBlLCAKKwkJCSAgICAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmIH0sCisJCS5rbGVuCT0gNTYsCisJCS5pbnB1dAk9IHsgMHhjMCwgMHg0NSwgMHgwNCwgMHgwMSwgMHgyZSwgMHg0ZSwgMHgxZiwgMHg1MyB9LAorCQkuaWxlbgk9IDgsCisJCS5yZXN1bHQJPSB7IDB4ZmUsIDB4ZGMsIDB4YmEsIDB4OTgsIDB4NzYsIDB4NTQsIDB4MzIsIDB4MTAgfSwKKwkJLnJsZW4JPSA4LAorCX0sCit9OworCitzdGF0aWMgc3RydWN0IGNpcGhlcl90ZXN0dmVjIGJmX2NiY19lbmNfdHZfdGVtcGxhdGVbXSA9IHsKKwl7IC8qIEZyb20gT3BlblNTTCAqLworCQkua2V5CT0geyAweDAxLCAweDIzLCAweDQ1LCAweDY3LCAweDg5LCAweGFiLCAweGNkLCAweGVmLAorCQkJICAgIDB4ZjAsIDB4ZTEsIDB4ZDIsIDB4YzMsIDB4YjQsIDB4YTUsIDB4OTYsIDB4ODcgfSwKKwkJLmtsZW4JPSAxNiwKKwkJLml2CT0geyAweGZlLCAweGRjLCAweGJhLCAweDk4LCAweDc2LCAweDU0LCAweDMyLCAweDEwIH0sCQkKKwkJLmlucHV0CT0geyAweDM3LCAweDM2LCAweDM1LCAweDM0LCAweDMzLCAweDMyLCAweDMxLCAweDIwLAorCQkJICAgIDB4NGUsIDB4NmYsIDB4NzcsIDB4MjAsIDB4NjksIDB4NzMsIDB4MjAsIDB4NzQsCisJCQkgICAgMHg2OCwgMHg2NSwgMHgyMCwgMHg3NCwgMHg2OSwgMHg2ZCwgMHg2NSwgMHgyMCwKKwkJCSAgICAweDY2LCAweDZmLCAweDcyLCAweDIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwIH0sCisJCS5pbGVuCT0gMzIsCisJCS5yZXN1bHQJPSB7IDB4NmIsIDB4NzcsIDB4YjQsIDB4ZDYsIDB4MzAsIDB4MDYsIDB4ZGUsIDB4ZTYsCisJCQkgICAgMHgwNSwgMHhiMSwgMHg1NiwgMHhlMiwgMHg3NCwgMHgwMywgMHg5NywgMHg5MywKKwkJCSAgICAweDU4LCAweGRlLCAweGI5LCAweGU3LCAweDE1LCAweDQ2LCAweDE2LCAweGQ5LAorCQkJICAgIDB4NTksIDB4ZjEsIDB4NjUsIDB4MmIsIDB4ZDUsIDB4ZmYsIDB4OTIsIDB4Y2MgfSwKKwkJLnJsZW4JPSAzMiwKKwl9LAorfTsKKworc3RhdGljIHN0cnVjdCBjaXBoZXJfdGVzdHZlYyBiZl9jYmNfZGVjX3R2X3RlbXBsYXRlW10gPSB7CisJeyAvKiBGcm9tIE9wZW5TU0wgKi8KKwkJLmtleQk9IHsgMHgwMSwgMHgyMywgMHg0NSwgMHg2NywgMHg4OSwgMHhhYiwgMHhjZCwgMHhlZiwKKwkJCSAgICAweGYwLCAweGUxLCAweGQyLCAweGMzLCAweGI0LCAweGE1LCAweDk2LCAweDg3IH0sCisJCS5rbGVuCT0gMTYsCisJCS5pdgk9IHsgMHhmZSwgMHhkYywgMHhiYSwgMHg5OCwgMHg3NiwgMHg1NCwgMHgzMiwgMHgxMCB9LAkJCisJCS5pbnB1dAk9IHsgMHg2YiwgMHg3NywgMHhiNCwgMHhkNiwgMHgzMCwgMHgwNiwgMHhkZSwgMHhlNiwKKwkJCSAgICAweDA1LCAweGIxLCAweDU2LCAweGUyLCAweDc0LCAweDAzLCAweDk3LCAweDkzLAorCQkJICAgIDB4NTgsIDB4ZGUsIDB4YjksIDB4ZTcsIDB4MTUsIDB4NDYsIDB4MTYsIDB4ZDksCisJCQkgICAgMHg1OSwgMHhmMSwgMHg2NSwgMHgyYiwgMHhkNSwgMHhmZiwgMHg5MiwgMHhjYyB9LAorCQkuaWxlbgk9IDMyLAorCQkucmVzdWx0CT0geyAweDM3LCAweDM2LCAweDM1LCAweDM0LCAweDMzLCAweDMyLCAweDMxLCAweDIwLAorCQkJICAgIDB4NGUsIDB4NmYsIDB4NzcsIDB4MjAsIDB4NjksIDB4NzMsIDB4MjAsIDB4NzQsCisJCQkgICAgMHg2OCwgMHg2NSwgMHgyMCwgMHg3NCwgMHg2OSwgMHg2ZCwgMHg2NSwgMHgyMCwKKwkJCSAgICAweDY2LCAweDZmLCAweDcyLCAweDIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwIH0sCisJCS5ybGVuCT0gMzIsCisJfSwKK307CisKKy8qCisgKiBUd29maXNoIHRlc3QgdmVjdG9ycy4KKyAqLworI2RlZmluZSBURl9FTkNfVEVTVF9WRUNUT1JTCQkzCisjZGVmaW5lIFRGX0RFQ19URVNUX1ZFQ1RPUlMJCTMKKyNkZWZpbmUgVEZfQ0JDX0VOQ19URVNUX1ZFQ1RPUlMJCTQKKyNkZWZpbmUgVEZfQ0JDX0RFQ19URVNUX1ZFQ1RPUlMJCTQKKworc3RhdGljIHN0cnVjdCBjaXBoZXJfdGVzdHZlYyB0Zl9lbmNfdHZfdGVtcGxhdGVbXSA9IHsKKwl7CisJCS5rZXkJPSB7IFswIC4uLiAxNV0gPSAweDAwIH0sCisJCS5rbGVuCT0gMTYsCisJCS5pbnB1dAk9IHsgWzAgLi4uIDE1XSA9IDB4MDAgfSwKKwkJLmlsZW4JPSAxNiwKKwkJLnJlc3VsdAk9IHsgMHg5ZiwgMHg1OCwgMHg5ZiwgMHg1YywgMHhmNiwgMHgxMiwgMHgyYywgMHgzMiwKKwkJCSAgICAweGI2LCAweGJmLCAweGVjLCAweDJmLCAweDJhLCAweGU4LCAweGMzLCAweDVhIH0sCisJCS5ybGVuCT0gMTYsCisJfSwgeworCQkua2V5CT0geyAweDAxLCAweDIzLCAweDQ1LCAweDY3LCAweDg5LCAweGFiLCAweGNkLCAweGVmLAorCQkJICAgIDB4ZmUsIDB4ZGMsIDB4YmEsIDB4OTgsIDB4NzYsIDB4NTQsIDB4MzIsIDB4MTAsCisJCQkgICAgMHgwMCwgMHgxMSwgMHgyMiwgMHgzMywgMHg0NCwgMHg1NSwgMHg2NiwgMHg3NyB9LAorCQkua2xlbgk9IDI0LAorCQkuaW5wdXQJPSB7IFswIC4uLiAxNV0gPSAweDAwIH0sCisJCS5pbGVuCT0gMTYsCisJCS5yZXN1bHQJPSB7IDB4Y2YsIDB4ZDEsIDB4ZDIsIDB4ZTUsIDB4YTksIDB4YmUsIDB4OWMsIDB4ZGYsCisJCQkgICAgMHg1MCwgMHgxZiwgMHgxMywgMHhiOCwgMHg5MiwgMHhiZCwgMHgyMiwgMHg0OCB9LAorCQkucmxlbgk9IDE2LAorCX0sIHsKKwkJLmtleQk9IHsgMHgwMSwgMHgyMywgMHg0NSwgMHg2NywgMHg4OSwgMHhhYiwgMHhjZCwgMHhlZiwKKwkJCSAgICAweGZlLCAweGRjLCAweGJhLCAweDk4LCAweDc2LCAweDU0LCAweDMyLCAweDEwLAorCQkJICAgIDB4MDAsIDB4MTEsIDB4MjIsIDB4MzMsIDB4NDQsIDB4NTUsIDB4NjYsIDB4NzcsCisJCQkgICAgMHg4OCwgMHg5OSwgMHhhYSwgMHhiYiwgMHhjYywgMHhkZCwgMHhlZSwgMHhmZiB9LAorCQkua2xlbgk9IDMyLAorCQkuaW5wdXQJPSB7IFswIC4uLiAxNV0gPSAweDAwIH0sCisJCS5pbGVuCT0gMTYsCisJCS5yZXN1bHQJPSB7IDB4MzcsIDB4NTIsIDB4N2IsIDB4ZTAsIDB4MDUsIDB4MjMsIDB4MzQsIDB4YjgsCisJCQkgICAgMHg5ZiwgMHgwYywgMHhmYywgMHhjYSwgMHhlOCwgMHg3YywgMHhmYSwgMHgyMCB9LAorCQkucmxlbgk9IDE2LAorCX0sCit9OworCitzdGF0aWMgc3RydWN0IGNpcGhlcl90ZXN0dmVjIHRmX2RlY190dl90ZW1wbGF0ZVtdID0geworCXsKKwkJLmtleQk9IHsgWzAgLi4uIDE1XSA9IDB4MDAgfSwKKwkJLmtsZW4JPSAxNiwKKwkJLmlucHV0CT0geyAweDlmLCAweDU4LCAweDlmLCAweDVjLCAweGY2LCAweDEyLCAweDJjLCAweDMyLAorCQkJICAgIDB4YjYsIDB4YmYsIDB4ZWMsIDB4MmYsIDB4MmEsIDB4ZTgsIDB4YzMsIDB4NWEgfSwKKwkJLmlsZW4JPSAxNiwKKwkJLnJlc3VsdAk9IHsgWzAgLi4uIDE1XSA9IDB4MDAgfSwKKwkJLnJsZW4JPSAxNiwKKwl9LCB7CisJCS5rZXkJPSB7IDB4MDEsIDB4MjMsIDB4NDUsIDB4NjcsIDB4ODksIDB4YWIsIDB4Y2QsIDB4ZWYsCisJCQkgICAgMHhmZSwgMHhkYywgMHhiYSwgMHg5OCwgMHg3NiwgMHg1NCwgMHgzMiwgMHgxMCwKKwkJCSAgICAweDAwLCAweDExLCAweDIyLCAweDMzLCAweDQ0LCAweDU1LCAweDY2LCAweDc3IH0sCisJCS5rbGVuCT0gMjQsCisJCS5pbnB1dAk9IHsgMHhjZiwgMHhkMSwgMHhkMiwgMHhlNSwgMHhhOSwgMHhiZSwgMHg5YywgMHhkZiwKKwkJCSAgICAweDUwLCAweDFmLCAweDEzLCAweGI4LCAweDkyLCAweGJkLCAweDIyLCAweDQ4IH0sCisJCS5pbGVuCT0gMTYsCisJCS5yZXN1bHQJPSB7IFswIC4uLiAxNV0gPSAweDAwIH0sCisJCS5ybGVuCT0gMTYsCisJfSwgeworCQkua2V5CT0geyAweDAxLCAweDIzLCAweDQ1LCAweDY3LCAweDg5LCAweGFiLCAweGNkLCAweGVmLAorCQkJICAgIDB4ZmUsIDB4ZGMsIDB4YmEsIDB4OTgsIDB4NzYsIDB4NTQsIDB4MzIsIDB4MTAsCisJCQkgICAgMHgwMCwgMHgxMSwgMHgyMiwgMHgzMywgMHg0NCwgMHg1NSwgMHg2NiwgMHg3NywKKwkJCSAgICAweDg4LCAweDk5LCAweGFhLCAweGJiLCAweGNjLCAweGRkLCAweGVlLCAweGZmIH0sCisJCS5rbGVuCT0gMzIsCisJCS5pbnB1dAk9IHsgMHgzNywgMHg1MiwgMHg3YiwgMHhlMCwgMHgwNSwgMHgyMywgMHgzNCwgMHhiOCwKKwkJCSAgICAweDlmLCAweDBjLCAweGZjLCAweGNhLCAweGU4LCAweDdjLCAweGZhLCAweDIwIH0sCisJCS5pbGVuCT0gMTYsCisJCS5yZXN1bHQJPSB7IFswIC4uLiAxNV0gPSAweDAwIH0sCisJCS5ybGVuCT0gMTYsCisJfSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgY2lwaGVyX3Rlc3R2ZWMgdGZfY2JjX2VuY190dl90ZW1wbGF0ZVtdID0geworCXsgLyogR2VuZXJhdGVkIHdpdGggTmV0dGxlICovCisJCS5rZXkJPSB7IFswIC4uLiAxNV0gPSAweDAwIH0sCisJCS5rbGVuCT0gMTYsCisJCS5pdgk9IHsgWzAgLi4uIDE1XSA9IDB4MDAgfSwKKwkJLmlucHV0CT0geyBbMCAuLi4gMTVdID0gMHgwMCB9LAorCQkuaWxlbgk9IDE2LAorCQkucmVzdWx0CT0geyAweDlmLCAweDU4LCAweDlmLCAweDVjLCAweGY2LCAweDEyLCAweDJjLCAweDMyLAorCQkJICAgIDB4YjYsIDB4YmYsIDB4ZWMsIDB4MmYsIDB4MmEsIDB4ZTgsIDB4YzMsIDB4NWEgfSwKKwkJLnJsZW4JPSAxNiwKKwl9LCB7CisJCS5rZXkJPSB7IFswIC4uLiAxNV0gPSAweDAwIH0sCisJCS5rbGVuCT0gMTYsCisJCS5pdgk9IHsgMHg5ZiwgMHg1OCwgMHg5ZiwgMHg1YywgMHhmNiwgMHgxMiwgMHgyYywgMHgzMiwKKwkJCSAgICAweGI2LCAweGJmLCAweGVjLCAweDJmLCAweDJhLCAweGU4LCAweGMzLCAweDVhIH0sCQkKKwkJLmlucHV0CT0geyBbMCAuLi4gMTVdID0gMHgwMCB9LAorCQkuaWxlbgk9IDE2LAorCQkucmVzdWx0CT0geyAweGQ0LCAweDkxLCAweGRiLCAweDE2LCAweGU3LCAweGIxLCAweGMzLCAweDllLAorCQkJICAgIDB4ODYsIDB4Y2IsIDB4MDgsIDB4NmIsIDB4NzgsIDB4OWYsIDB4NTQsIDB4MTkgfSwKKwkJLnJsZW4JPSAxNiwKKwl9LCB7CisJCS5rZXkJPSB7IFswIC4uLiAxNV0gPSAweDAwIH0sCisJCS5rbGVuCT0gMTYsCisJCS5pdgk9IHsgMHhkNCwgMHg5MSwgMHhkYiwgMHgxNiwgMHhlNywgMHhiMSwgMHhjMywgMHg5ZSwKKwkJCSAgICAweDg2LCAweGNiLCAweDA4LCAweDZiLCAweDc4LCAweDlmLCAweDU0LCAweDE5IH0sCisJCS5pbnB1dAk9IHsgWzAgLi4uIDE1XSA9IDB4MDAgfSwKKwkJLmlsZW4JPSAxNiwKKwkJLnJlc3VsdAk9IHsgMHgwNSwgMHhlZiwgMHg4YywgMHg2MSwgMHhhOCwgMHgxMSwgMHg1OCwgMHgyNiwKKwkJCSAgICAweDM0LCAweGJhLCAweDVjLCAweGI3LCAweDEwLCAweDZhLCAweGE2LCAweDQxIH0sCisJCS5ybGVuCT0gMTYsCisJfSwgeworCQkua2V5CT0geyBbMCAuLi4gMTVdID0gMHgwMCB9LAorCQkua2xlbgk9IDE2LAorCQkuaXYJPSB7IFswIC4uLiAxNV0gPSAweDAwIH0sCisJCS5pbnB1dAk9IHsgWzAgLi4uIDQ3XSA9IDB4MDAgfSwKKwkJLmlsZW4JPSA0OCwKKwkJLnJlc3VsdAk9IHsgMHg5ZiwgMHg1OCwgMHg5ZiwgMHg1YywgMHhmNiwgMHgxMiwgMHgyYywgMHgzMiwKKwkJCSAgICAweGI2LCAweGJmLCAweGVjLCAweDJmLCAweDJhLCAweGU4LCAweGMzLCAweDVhLAorCQkJICAgIDB4ZDQsIDB4OTEsIDB4ZGIsIDB4MTYsIDB4ZTcsIDB4YjEsIDB4YzMsIDB4OWUsCisJCQkgICAgMHg4NiwgMHhjYiwgMHgwOCwgMHg2YiwgMHg3OCwgMHg5ZiwgMHg1NCwgMHgxOSwKKwkJCSAgICAweDA1LCAweGVmLCAweDhjLCAweDYxLCAweGE4LCAweDExLCAweDU4LCAweDI2LAorCQkJICAgIDB4MzQsIDB4YmEsIDB4NWMsIDB4YjcsIDB4MTAsIDB4NmEsIDB4YTYsIDB4NDEgfSwKKwkJLnJsZW4JPSA0OCwKKwl9LAorfTsKKworc3RhdGljIHN0cnVjdCBjaXBoZXJfdGVzdHZlYyB0Zl9jYmNfZGVjX3R2X3RlbXBsYXRlW10gPSB7CisJeyAvKiBSZXZlcnNlIG9mIHRoZSBmaXJzdCBmb3VyIGFib3ZlICovCisJCS5rZXkJPSB7IFswIC4uLiAxNV0gPSAweDAwIH0sCisJCS5rbGVuCT0gMTYsCisJCS5pdgk9IHsgWzAgLi4uIDE1XSA9IDB4MDAgfSwKKwkJLmlucHV0CT0geyAweDlmLCAweDU4LCAweDlmLCAweDVjLCAweGY2LCAweDEyLCAweDJjLCAweDMyLAorCQkJICAgIDB4YjYsIDB4YmYsIDB4ZWMsIDB4MmYsIDB4MmEsIDB4ZTgsIDB4YzMsIDB4NWEgfSwJCSAgCisJCS5pbGVuCT0gMTYsCisJCS5yZXN1bHQJPSB7IFswIC4uLiAxNV0gPSAweDAwIH0sCisJCS5ybGVuCT0gMTYsCisJfSwgeworCQkua2V5CT0geyBbMCAuLi4gMTVdID0gMHgwMCB9LAorCQkua2xlbgk9IDE2LAorCQkuaXYJPSB7IDB4OWYsIDB4NTgsIDB4OWYsIDB4NWMsIDB4ZjYsIDB4MTIsIDB4MmMsIDB4MzIsCisJCQkgICAgMHhiNiwgMHhiZiwgMHhlYywgMHgyZiwgMHgyYSwgMHhlOCwgMHhjMywgMHg1YSB9LAorCQkuaW5wdXQJPSB7IDB4ZDQsIDB4OTEsIDB4ZGIsIDB4MTYsIDB4ZTcsIDB4YjEsIDB4YzMsIDB4OWUsCisJCQkgICAgMHg4NiwgMHhjYiwgMHgwOCwgMHg2YiwgMHg3OCwgMHg5ZiwgMHg1NCwgMHgxOSB9LAorCQkuaWxlbgk9IDE2LAorCQkucmVzdWx0CT0geyBbMCAuLi4gMTVdID0gMHgwMCB9LAorCQkucmxlbgk9IDE2LAorCX0sIHsKKwkJLmtleQk9IHsgWzAgLi4uIDE1XSA9IDB4MDAgfSwKKwkJLmtsZW4JPSAxNiwKKwkJLml2CT0geyAweGQ0LCAweDkxLCAweGRiLCAweDE2LCAweGU3LCAweGIxLCAweGMzLCAweDllLAorCQkJICAgIDB4ODYsIDB4Y2IsIDB4MDgsIDB4NmIsIDB4NzgsIDB4OWYsIDB4NTQsIDB4MTkgfSwKKwkJLmlucHV0CT0geyAweDA1LCAweGVmLCAweDhjLCAweDYxLCAweGE4LCAweDExLCAweDU4LCAweDI2LAorCQkJICAgIDB4MzQsIDB4YmEsIDB4NWMsIDB4YjcsIDB4MTAsIDB4NmEsIDB4YTYsIDB4NDEgfSwKKwkJLmlsZW4JPSAxNiwKKwkJLnJlc3VsdAk9IHsgWzAgLi4uIDE1XSA9IDB4MDAgfSwKKwkJLnJsZW4JPSAxNiwKKwl9LCB7CisJCS5rZXkJPSB7IFswIC4uLiAxNV0gPSAweDAwIH0sCisJCS5rbGVuCT0gMTYsCisJCS5pdgk9IHsgWzAgLi4uIDE1XSA9IDB4MDAgfSwKKwkJLmlucHV0CT0geyAweDlmLCAweDU4LCAweDlmLCAweDVjLCAweGY2LCAweDEyLCAweDJjLCAweDMyLAorCQkJICAgIDB4YjYsIDB4YmYsIDB4ZWMsIDB4MmYsIDB4MmEsIDB4ZTgsIDB4YzMsIDB4NWEsCisJCQkgICAgMHhkNCwgMHg5MSwgMHhkYiwgMHgxNiwgMHhlNywgMHhiMSwgMHhjMywgMHg5ZSwKKwkJCSAgICAweDg2LCAweGNiLCAweDA4LCAweDZiLCAweDc4LCAweDlmLCAweDU0LCAweDE5LAorCQkJICAgIDB4MDUsIDB4ZWYsIDB4OGMsIDB4NjEsIDB4YTgsIDB4MTEsIDB4NTgsIDB4MjYsCisJCQkgICAgMHgzNCwgMHhiYSwgMHg1YywgMHhiNywgMHgxMCwgMHg2YSwgMHhhNiwgMHg0MSB9LAorCQkuaWxlbgk9IDQ4LAorCQkucmVzdWx0CT0geyBbMCAuLi4gNDddID0gMHgwMCB9LAorCQkucmxlbgk9IDQ4LAorCX0sCit9OworCisvKgorICogU2VycGVudCB0ZXN0IHZlY3RvcnMuICBUaGVzZSBhcmUgYmFja3dhcmRzIGJlY2F1c2UgU2VycGVudCB3cml0ZXMKKyAqIG9jdGV0IHNlcXVlbmNlcyBpbiByaWdodC10by1sZWZ0IG1vZGUuCisgKi8KKyNkZWZpbmUgU0VSUEVOVF9FTkNfVEVTVF9WRUNUT1JTCTQKKyNkZWZpbmUgU0VSUEVOVF9ERUNfVEVTVF9WRUNUT1JTCTQKKworI2RlZmluZSBUTkVQUkVTX0VOQ19URVNUX1ZFQ1RPUlMJNAorI2RlZmluZSBUTkVQUkVTX0RFQ19URVNUX1ZFQ1RPUlMJNAorCitzdGF0aWMgc3RydWN0IGNpcGhlcl90ZXN0dmVjIHNlcnBlbnRfZW5jX3R2X3RlbXBsYXRlW10gPSAKK3sKKwl7CisJCS5pbnB1dAk9IHsgMHgwMCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwNSwgMHgwNiwgMHgwNywKKwkJCSAgICAweDA4LCAweDA5LCAweDBhLCAweDBiLCAweDBjLCAweDBkLCAweDBlLCAweDBmIH0sCisJCS5pbGVuCT0gMTYsCisJCS5yZXN1bHQJPSB7IDB4MTIsIDB4MDcsIDB4ZmMsIDB4Y2UsIDB4OWIsIDB4ZDAsIDB4ZDYsIDB4NDcsCisJCQkgICAgMHg2YSwgMHhlOSwgMHg4ZiwgMHhiZSwgMHhkMSwgMHg0MywgMHhhMCwgMHhlMiB9LAorCQkucmxlbgk9IDE2LAorCX0sIHsKKwkJLmtleQk9IHsgMHgwMCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwNSwgMHgwNiwgMHgwNywKKwkJCSAgICAweDA4LCAweDA5LCAweDBhLCAweDBiLCAweDBjLCAweDBkLCAweDBlLCAweDBmIH0sCisJCS5rbGVuCT0gMTYsCisJCS5pbnB1dAk9IHsgMHgwMCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwNSwgMHgwNiwgMHgwNywKKwkJCSAgICAweDA4LCAweDA5LCAweDBhLCAweDBiLCAweDBjLCAweDBkLCAweDBlLCAweDBmIH0sCisJCS5pbGVuCT0gMTYsCisJCS5yZXN1bHQJPSB7IDB4NGMsIDB4N2QsIDB4OGEsIDB4MzIsIDB4ODAsIDB4NzIsIDB4YTIsIDB4MmMsCisJCQkgICAgMHg4MiwgMHgzZSwgMHg0YSwgMHgxZiwgMHgzYSwgMHhjZCwgMHhhMSwgMHg2ZCB9LAorCQkucmxlbgk9IDE2LAorCX0sIHsKKwkJLmtleQk9IHsgMHgwMCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwNSwgMHgwNiwgMHgwNywKKwkJCSAgICAweDA4LCAweDA5LCAweDBhLCAweDBiLCAweDBjLCAweDBkLCAweDBlLCAweDBmLAorCQkJICAgIDB4MTAsIDB4MTEsIDB4MTIsIDB4MTMsIDB4MTQsIDB4MTUsIDB4MTYsIDB4MTcsCisJCQkgICAgMHgxOCwgMHgxOSwgMHgxYSwgMHgxYiwgMHgxYywgMHgxZCwgMHgxZSwgMHgxZiB9LAorCQkua2xlbgk9IDMyLAorCQkuaW5wdXQJPSB7IDB4MDAsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4MDUsIDB4MDYsIDB4MDcsCisJCQkgICAgMHgwOCwgMHgwOSwgMHgwYSwgMHgwYiwgMHgwYywgMHgwZCwgMHgwZSwgMHgwZiB9LAorCQkuaWxlbgk9IDE2LAorCQkucmVzdWx0CT0geyAweGRlLCAweDI2LCAweDlmLCAweGY4LCAweDMzLCAweGU0LCAweDMyLCAweGI4LAorCQkJICAgIDB4NWIsIDB4MmUsIDB4ODgsIDB4ZDIsIDB4NzAsIDB4MWMsIDB4ZTcsIDB4NWMgfSwKKwkJLnJsZW4JPSAxNiwKKwl9LCB7CisJCS5rZXkJPSB7IFsxNV0gPSAweDgwIH0sCisJCS5rbGVuCT0gMTYsCisJCS5pbnB1dAk9IHsgWzAgLi4uIDE1XSA9IDB4MDAgfSwKKwkJLmlsZW4JPSAxNiwKKwkJLnJlc3VsdAk9IHsgMHhkZCwgMHhkMiwgMHg2YiwgMHg5OCwgMHhhNSwgMHhmZiwgMHhkOCwgMHgyYywKKwkJCSAgICAweDA1LCAweDM0LCAweDVhLCAweDlkLCAweGFkLCAweGJmLCAweGFmLCAweDQ5fSwKKwkJLnJsZW4JPSAxNiwKKwl9LAorfTsKKworc3RhdGljIHN0cnVjdCBjaXBoZXJfdGVzdHZlYyB0bmVwcmVzX2VuY190dl90ZW1wbGF0ZVtdID0gCit7CisJeyAvKiBLZXlTaXplPTEyOCwgUFQ9MCwgST0xICovCisJCS5pbnB1dAk9IHsgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkJCSAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwIH0sCisJCS5rZXkgICAgPSB7IDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisJCQkgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCB9LAorCQkua2xlbiAgID0gMTYsCisJCS5pbGVuCT0gMTYsCisJCS5yZXN1bHQJPSB7IDB4NDksIDB4YWYsIDB4YmYsIDB4YWQsIDB4OWQsIDB4NWEsIDB4MzQsIDB4MDUsIAorCQkJICAgIDB4MmMsIDB4ZDgsIDB4ZmYsIDB4YTUsIDB4OTgsIDB4NmIsIDB4ZDIsIDB4ZGQgfSwKKwkJLnJsZW4JPSAxNiwKKwl9LCB7IC8qIEtleVNpemU9MTkyLCBQVD0wLCBJPTEgKi8KKwkJLmtleQk9IHsgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkJCSAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCQkJICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAgfSwKKwkJLmtsZW4JPSAyNCwKKwkJLmlucHV0CT0geyAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCQkJICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAgfSwKKwkJLmlsZW4JPSAxNiwKKwkJLnJlc3VsdAk9IHsgMHhlNywgMHg4ZSwgMHg1NCwgMHgwMiwgMHhjNywgMHgxOSwgMHg1NSwgMHg2OCwgCisJCQkgICAgMHhhYywgMHgzNiwgMHg3OCwgMHhmNywgMHhhMywgMHhmNiwgMHgwYywgMHg2NiB9LAorCQkucmxlbgk9IDE2LAorCX0sIHsgLyogS2V5U2l6ZT0yNTYsIFBUPTAsIEk9MSAqLworCQkua2V5CT0geyAweDgwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCQkJICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisJCQkgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkJCSAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwIH0sCisJCS5rbGVuCT0gMzIsCisJCS5pbnB1dAk9IHsgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkJCSAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwIH0sCisJCS5pbGVuCT0gMTYsCisJCS5yZXN1bHQJPSB7IDB4YWIsIDB4ZWQsIDB4OTYsIDB4ZTcsIDB4NjYsIDB4YmYsIDB4MjgsIDB4Y2IsIAorCQkJICAgIDB4YzAsIDB4ZWIsIDB4ZDIsIDB4MWEsIDB4ODIsIDB4ZWYsIDB4MDgsIDB4MTkgfSwKKwkJLnJsZW4JPSAxNiwKKwl9LCB7IC8qIEtleVNpemU9MjU2LCBJPTI1NyAqLworCSAgICAgICAgLmtleQk9IHsgMHgxZiwgMHgxZSwgMHgxZCwgMHgxYywgMHgxYiwgMHgxYSwgMHgxOSwgMHgxOCwKKwkJCSAgICAweDE3LCAweDE2LCAweDE1LCAweDE0LCAweDEzLCAweDEyLCAweDExLCAweDEwLAorCQkJICAgIDB4MGYsIDB4MGUsIDB4MGQsIDB4MGMsIDB4MGIsIDB4MGEsIDB4MDksIDB4MDgsCisJCQkgICAgMHgwNywgMHgwNiwgMHgwNSwgMHgwNCwgMHgwMywgMHgwMiwgMHgwMSwgMHgwMCB9LAorCQkua2xlbgk9IDMyLAorCQkuaW5wdXQJPSB7IDB4MGYsIDB4MGUsIDB4MGQsIDB4MGMsIDB4MGIsIDB4MGEsIDB4MDksIDB4MDgsCisJCQkgICAgMHgwNywgMHgwNiwgMHgwNSwgMHgwNCwgMHgwMywgMHgwMiwgMHgwMSwgMHgwMCB9LAorCQkuaWxlbgk9IDE2LAorCQkucmVzdWx0CT0geyAweDVjLCAweGU3LCAweDFjLCAweDcwLCAweGQyLCAweDg4LCAweDJlLCAweDViLCAKKwkJCSAgICAweGI4LCAweDMyLCAweGU0LCAweDMzLCAweGY4LCAweDlmLCAweDI2LCAweGRlIH0sCisJCS5ybGVuCT0gMTYsCisJfSwKK307CisKKworc3RhdGljIHN0cnVjdCBjaXBoZXJfdGVzdHZlYyBzZXJwZW50X2RlY190dl90ZW1wbGF0ZVtdID0gCit7CisJeworCQkuaW5wdXQJPSB7IDB4MTIsIDB4MDcsIDB4ZmMsIDB4Y2UsIDB4OWIsIDB4ZDAsIDB4ZDYsIDB4NDcsCisJCQkgICAgMHg2YSwgMHhlOSwgMHg4ZiwgMHhiZSwgMHhkMSwgMHg0MywgMHhhMCwgMHhlMiB9LAorCQkuaWxlbgk9IDE2LAorCQkucmVzdWx0CT0geyAweDAwLCAweDAxLCAweDAyLCAweDAzLCAweDA0LCAweDA1LCAweDA2LCAweDA3LAorCQkJICAgIDB4MDgsIDB4MDksIDB4MGEsIDB4MGIsIDB4MGMsIDB4MGQsIDB4MGUsIDB4MGYgfSwKKwkJLnJsZW4JPSAxNiwKKwl9LCB7CisJCS5rZXkJPSB7IDB4MDAsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4MDUsIDB4MDYsIDB4MDcsCisJCQkgICAgMHgwOCwgMHgwOSwgMHgwYSwgMHgwYiwgMHgwYywgMHgwZCwgMHgwZSwgMHgwZiB9LAorCQkua2xlbgk9IDE2LAorCQkuaW5wdXQJPSB7IDB4NGMsIDB4N2QsIDB4OGEsIDB4MzIsIDB4ODAsIDB4NzIsIDB4YTIsIDB4MmMsCisJCQkgICAgMHg4MiwgMHgzZSwgMHg0YSwgMHgxZiwgMHgzYSwgMHhjZCwgMHhhMSwgMHg2ZCB9LAorCQkuaWxlbgk9IDE2LAorCQkucmVzdWx0CT0geyAweDAwLCAweDAxLCAweDAyLCAweDAzLCAweDA0LCAweDA1LCAweDA2LCAweDA3LAorCQkJICAgIDB4MDgsIDB4MDksIDB4MGEsIDB4MGIsIDB4MGMsIDB4MGQsIDB4MGUsIDB4MGYgfSwKKwkJLnJsZW4JPSAxNiwKKwl9LCB7CisJCS5rZXkJPSB7IDB4MDAsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4MDUsIDB4MDYsIDB4MDcsCisJCQkgICAgMHgwOCwgMHgwOSwgMHgwYSwgMHgwYiwgMHgwYywgMHgwZCwgMHgwZSwgMHgwZiwKKwkJCSAgICAweDEwLCAweDExLCAweDEyLCAweDEzLCAweDE0LCAweDE1LCAweDE2LCAweDE3LAorCQkJICAgIDB4MTgsIDB4MTksIDB4MWEsIDB4MWIsIDB4MWMsIDB4MWQsIDB4MWUsIDB4MWYgfSwKKwkJLmtsZW4JPSAzMiwKKwkJLmlucHV0CT0geyAweGRlLCAweDI2LCAweDlmLCAweGY4LCAweDMzLCAweGU0LCAweDMyLCAweGI4LAorCQkJICAgIDB4NWIsIDB4MmUsIDB4ODgsIDB4ZDIsIDB4NzAsIDB4MWMsIDB4ZTcsIDB4NWMgfSwKKwkJLmlsZW4JPSAxNiwKKwkJLnJlc3VsdAk9IHsgMHgwMCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwNSwgMHgwNiwgMHgwNywKKwkJCSAgICAweDA4LCAweDA5LCAweDBhLCAweDBiLCAweDBjLCAweDBkLCAweDBlLCAweDBmIH0sCisJCS5ybGVuCT0gMTYsCisJfSwgeworCQkua2V5CT0geyBbMTVdID0gMHg4MCB9LAorCQkua2xlbgk9IDE2LAorCQkuaW5wdXQJPSB7IDB4ZGQsIDB4ZDIsIDB4NmIsIDB4OTgsIDB4YTUsIDB4ZmYsIDB4ZDgsIDB4MmMsCisJCQkgICAgMHgwNSwgMHgzNCwgMHg1YSwgMHg5ZCwgMHhhZCwgMHhiZiwgMHhhZiwgMHg0OX0sCisJCS5pbGVuCT0gMTYsCisJCS5yZXN1bHQJPSB7IFswIC4uLiAxNV0gPSAweDAwIH0sCisJCS5ybGVuCT0gMTYsCisJfSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgY2lwaGVyX3Rlc3R2ZWMgdG5lcHJlc19kZWNfdHZfdGVtcGxhdGVbXSA9Cit7CisJeworCQkuaW5wdXQJPSB7IDB4NDEsIDB4Y2MsIDB4NmIsIDB4MzEsIDB4NTksIDB4MzEsIDB4NDUsIDB4OTcsCisJCQkgICAgMHg2ZCwgMHg2ZiwgMHhiYiwgMHgzOCwgMHg0YiwgMHgzNywgMHgyMSwgMHgyOCB9LAorCQkuaWxlbgk9IDE2LAorCQkucmVzdWx0CT0geyAweDAwLCAweDAxLCAweDAyLCAweDAzLCAweDA0LCAweDA1LCAweDA2LCAweDA3LAorCQkJICAgIDB4MDgsIDB4MDksIDB4MGEsIDB4MGIsIDB4MGMsIDB4MGQsIDB4MGUsIDB4MGYgfSwKKwkJLnJsZW4JPSAxNiwKKwl9LCB7CisJCS5rZXkJPSB7IDB4MDAsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4MDUsIDB4MDYsIDB4MDcsCisJCQkgICAgMHgwOCwgMHgwOSwgMHgwYSwgMHgwYiwgMHgwYywgMHgwZCwgMHgwZSwgMHgwZiB9LAorCQkua2xlbgk9IDE2LAorCQkuaW5wdXQJPSB7IDB4ZWEsIDB4ZjQsIDB4ZDcsIDB4ZmMsIDB4ZDgsIDB4MDEsIDB4MzQsIDB4NDcsIAorCQkJICAgIDB4ODEsIDB4NDUsIDB4MGIsIDB4ZmEsIDB4MGMsIDB4ZDYsIDB4YWQsIDB4NmUgfSwKKwkJLmlsZW4JPSAxNiwKKwkJLnJlc3VsdAk9IHsgMHgwMCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwNSwgMHgwNiwgMHgwNywKKwkJCSAgICAweDA4LCAweDA5LCAweDBhLCAweDBiLCAweDBjLCAweDBkLCAweDBlLCAweDBmIH0sCisJCS5ybGVuCT0gMTYsCisJfSwgeworCQkua2V5CT0geyAweDAwLCAweDAxLCAweDAyLCAweDAzLCAweDA0LCAweDA1LCAweDA2LCAweDA3LAorCQkJICAgIDB4MDgsIDB4MDksIDB4MGEsIDB4MGIsIDB4MGMsIDB4MGQsIDB4MGUsIDB4MGYsCisJCQkgICAgMHgxMCwgMHgxMSwgMHgxMiwgMHgxMywgMHgxNCwgMHgxNSwgMHgxNiwgMHgxNywKKwkJCSAgICAweDE4LCAweDE5LCAweDFhLCAweDFiLCAweDFjLCAweDFkLCAweDFlLCAweDFmIH0sCisJCS5rbGVuCT0gMzIsCisJCS5pbnB1dAk9IHsgMHg2NCwgMHhhOSwgMHgxYSwgMHgzNywgMHhlZCwgMHg5ZiwgMHhlNywgMHg0OSwgCisJCQkgICAgMHhhOCwgMHg0ZSwgMHg3NiwgMHhkNiwgMHhmNSwgMHgwZCwgMHg3OCwgMHhlZSB9LAorCQkuaWxlbgk9IDE2LAorCQkucmVzdWx0CT0geyAweDAwLCAweDAxLCAweDAyLCAweDAzLCAweDA0LCAweDA1LCAweDA2LCAweDA3LAorCQkJICAgIDB4MDgsIDB4MDksIDB4MGEsIDB4MGIsIDB4MGMsIDB4MGQsIDB4MGUsIDB4MGYgfSwKKwkJLnJsZW4JPSAxNiwKKwl9LCB7IC8qIEtleVNpemU9MTI4LCBJPTEyMSAqLworCQkua2V5CT0geyBbMTVdID0gMHg4MCB9LAorCQkua2xlbgk9IDE2LAorCQkuaW5wdXQJPSB7IDB4M2QsIDB4ZGEsIDB4YmYsIDB4YzAsIDB4MDYsIDB4ZGEsIDB4YWIsIDB4MDYsIAorCQkJICAgIDB4NDYsIDB4MmEsIDB4ZjQsIDB4ZWYsIDB4ODEsIDB4NTQsIDB4NGUsIDB4MjYgfSwKKwkJLmlsZW4JPSAxNiwKKwkJLnJlc3VsdAk9IHsgWzAgLi4uIDE1XSA9IDB4MDAgfSwKKwkJLnJsZW4JPSAxNiwKKwl9LAorfTsKKworCisvKiBDYXN0NiB0ZXN0IHZlY3RvcnMgZnJvbSBSRkMgMjYxMiAqLworI2RlZmluZSBDQVNUNl9FTkNfVEVTVF9WRUNUT1JTCTMKKyNkZWZpbmUgQ0FTVDZfREVDX1RFU1RfVkVDVE9SUyAgMworCitzdGF0aWMgc3RydWN0IGNpcGhlcl90ZXN0dmVjIGNhc3Q2X2VuY190dl90ZW1wbGF0ZVtdID0gCit7CisJeworCQkua2V5CT0geyAweDIzLCAweDQyLCAweGJiLCAweDllLCAweGZhLCAweDM4LCAweDU0LCAweDJjLCAKKwkJCSAgICAweDBhLCAweGY3LCAweDU2LCAweDQ3LCAweGYyLCAweDlmLCAweDYxLCAweDVkIH0sCisJCS5rbGVuCT0gMTYsCisJCS5pbnB1dAk9IHsgWzAgLi4uIDE1XSA9IDB4MDAgfSwKKwkJLmlsZW4JPSAxNiwKKwkJLnJlc3VsdAk9IHsgMHhjOCwgMHg0MiwgMHhhMCwgMHg4OSwgMHg3MiwgMHhiNCwgMHgzZCwgMHgyMCwgCisJCQkgICAgMHg4MywgMHg2YywgMHg5MSwgMHhkMSwgMHhiNywgMHg1MywgMHgwZiwgMHg2YiB9LAorCQkucmxlbgk9IDE2LAorCX0sIHsKKwkJLmtleQk9IHsgMHgyMywgMHg0MiwgMHhiYiwgMHg5ZSwgMHhmYSwgMHgzOCwgMHg1NCwgMHgyYywgCisJCQkgICAgMHhiZSwgMHhkMCwgMHhhYywgMHg4MywgMHg5NCwgMHgwYSwgMHhjMiwgMHg5OCwgCisJCQkgICAgMHhiYSwgMHhjNywgMHg3YSwgMHg3NywgMHgxNywgMHg5NCwgMHgyOCwgMHg2MyB9LAorCQkua2xlbgk9IDI0LAorCQkuaW5wdXQJPSB7IFswIC4uLiAxNV0gPSAweDAwIH0sCisJCS5pbGVuCT0gMTYsCisJCS5yZXN1bHQJPSB7IDB4MWIsIDB4MzgsIDB4NmMsIDB4MDIsIDB4MTAsIDB4ZGMsIDB4YWQsIDB4Y2IsIAorCQkJICAgIDB4ZGQsIDB4MGUsIDB4NDEsIDB4YWEsIDB4MDgsIDB4YTcsIDB4YTcsIDB4ZTggfSwKKwkJLnJsZW4JPSAxNiwKKwl9LCB7CisJCS5rZXkJPSB7IDB4MjMsIDB4NDIsIDB4YmIsIDB4OWUsIDB4ZmEsIDB4MzgsIDB4NTQsIDB4MmMsCisJCQkgICAgMHhiZSwgMHhkMCwgMHhhYywgMHg4MywgMHg5NCwgMHgwYSwgMHhjMiwgMHg5OCwKKwkJCSAgICAweDhkLCAweDdjLCAweDQ3LCAweGNlLCAweDI2LCAweDQ5LCAweDA4LCAweDQ2LAorCQkJICAgIDB4MWMsIDB4YzEsIDB4YjUsIDB4MTMsIDB4N2EsIDB4ZTYsIDB4YjYsIDB4MDQgfSwJCQkJICAKKwkJLmtsZW4JPSAzMiwKKwkJLmlucHV0CT0geyBbMCAuLi4gMTVdID0gMHgwMCB9LAorCQkuaWxlbgk9IDE2LAorCQkucmVzdWx0CT0geyAweDRmLCAweDZhLCAweDIwLCAweDM4LCAweDI4LCAweDY4LCAweDk3LCAweGI5LCAKKwkJCSAgICAweGM5LCAweDg3LCAweDAxLCAweDM2LCAweDU1LCAweDMzLCAweDE3LCAweGZhIH0sCisJCS5ybGVuCT0gMTYsCisJfSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgY2lwaGVyX3Rlc3R2ZWMgY2FzdDZfZGVjX3R2X3RlbXBsYXRlW10gPSAKK3sKKwl7CisJCS5rZXkJPSB7IDB4MjMsIDB4NDIsIDB4YmIsIDB4OWUsIDB4ZmEsIDB4MzgsIDB4NTQsIDB4MmMsIAorCQkJICAgIDB4MGEsIDB4ZjcsIDB4NTYsIDB4NDcsIDB4ZjIsIDB4OWYsIDB4NjEsIDB4NWQgfSwKKwkJLmtsZW4JPSAxNiwKKwkJLmlucHV0CT0geyAweGM4LCAweDQyLCAweGEwLCAweDg5LCAweDcyLCAweGI0LCAweDNkLCAweDIwLCAKKwkJCSAgICAweDgzLCAweDZjLCAweDkxLCAweGQxLCAweGI3LCAweDUzLCAweDBmLCAweDZiIH0sCisJCS5pbGVuCT0gMTYsCisJCS5yZXN1bHQJPSB7IFswIC4uLiAxNV0gPSAweDAwIH0sCisJCS5ybGVuCT0gMTYsCisJfSwgeworCQkua2V5CT0geyAweDIzLCAweDQyLCAweGJiLCAweDllLCAweGZhLCAweDM4LCAweDU0LCAweDJjLCAKKwkJCSAgICAweGJlLCAweGQwLCAweGFjLCAweDgzLCAweDk0LCAweDBhLCAweGMyLCAweDk4LCAKKwkJCSAgICAweGJhLCAweGM3LCAweDdhLCAweDc3LCAweDE3LCAweDk0LCAweDI4LCAweDYzIH0sCisJCS5rbGVuCT0gMjQsCisJCS5pbnB1dAk9IHsgMHgxYiwgMHgzOCwgMHg2YywgMHgwMiwgMHgxMCwgMHhkYywgMHhhZCwgMHhjYiwgCisJCQkgICAgMHhkZCwgMHgwZSwgMHg0MSwgMHhhYSwgMHgwOCwgMHhhNywgMHhhNywgMHhlOCB9LAorCQkuaWxlbgk9IDE2LAorCQkucmVzdWx0CT0geyBbMCAuLi4gMTVdID0gMHgwMCB9LAorCQkucmxlbgk9IDE2LAorCX0sIHsKKwkJLmtleQk9IHsgMHgyMywgMHg0MiwgMHhiYiwgMHg5ZSwgMHhmYSwgMHgzOCwgMHg1NCwgMHgyYywKKwkJCSAgICAweGJlLCAweGQwLCAweGFjLCAweDgzLCAweDk0LCAweDBhLCAweGMyLCAweDk4LAorCQkJICAgIDB4OGQsIDB4N2MsIDB4NDcsIDB4Y2UsIDB4MjYsIDB4NDksIDB4MDgsIDB4NDYsCisJCQkgICAgMHgxYywgMHhjMSwgMHhiNSwgMHgxMywgMHg3YSwgMHhlNiwgMHhiNiwgMHgwNCB9LAkJCQkgIAorCQkua2xlbgk9IDMyLAorCQkuaW5wdXQJPSB7IDB4NGYsIDB4NmEsIDB4MjAsIDB4MzgsIDB4MjgsIDB4NjgsIDB4OTcsIDB4YjksIAorCQkJICAgIDB4YzksIDB4ODcsIDB4MDEsIDB4MzYsIDB4NTUsIDB4MzMsIDB4MTcsIDB4ZmEgfSwKKwkJLmlsZW4JPSAxNiwKKwkJLnJlc3VsdAk9IHsgWzAgLi4uIDE1XSA9IDB4MDAgfSwKKwkJLnJsZW4JPSAxNiwKKwl9LAorfTsKKworCisvKgorICogQUVTIHRlc3QgdmVjdG9ycy4KKyAqLworI2RlZmluZSBBRVNfRU5DX1RFU1RfVkVDVE9SUyAzCisjZGVmaW5lIEFFU19ERUNfVEVTVF9WRUNUT1JTIDMKKworc3RhdGljIHN0cnVjdCBjaXBoZXJfdGVzdHZlYyBhZXNfZW5jX3R2X3RlbXBsYXRlW10gPSB7IAorCXsgLyogRnJvbSBGSVBTLTE5NyAqLworCQkua2V5CT0geyAweDAwLCAweDAxLCAweDAyLCAweDAzLCAweDA0LCAweDA1LCAweDA2LCAweDA3LCAKKwkJCSAgICAweDA4LCAweDA5LCAweDBhLCAweDBiLCAweDBjLCAweDBkLCAweDBlLCAweDBmIH0sCisJCS5rbGVuCT0gMTYsCisJCS5pbnB1dAk9IHsgMHgwMCwgMHgxMSwgMHgyMiwgMHgzMywgMHg0NCwgMHg1NSwgMHg2NiwgMHg3NywKKwkJCSAgICAweDg4LCAweDk5LCAweGFhLCAweGJiLCAweGNjLCAweGRkLCAweGVlLCAweGZmIH0sCisJCS5pbGVuCT0gMTYsCisJCS5yZXN1bHQJPSB7IDB4NjksIDB4YzQsIDB4ZTAsIDB4ZDgsIDB4NmEsIDB4N2IsIDB4MDQsIDB4MzAsCisJCQkgICAgMHhkOCwgMHhjZCwgMHhiNywgMHg4MCwgMHg3MCwgMHhiNCwgMHhjNSwgMHg1YSB9LAorCQkucmxlbgk9IDE2LAorCX0sIHsKKwkJLmtleQk9IHsgMHgwMCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwNSwgMHgwNiwgMHgwNywKKwkJCSAgICAweDA4LCAweDA5LCAweDBhLCAweDBiLCAweDBjLCAweDBkLCAweDBlLCAweDBmLAorCQkJICAgIDB4MTAsIDB4MTEsIDB4MTIsIDB4MTMsIDB4MTQsIDB4MTUsIDB4MTYsIDB4MTcgfSwKKwkJLmtsZW4JPSAyNCwKKwkJLmlucHV0CT0geyAweDAwLCAweDExLCAweDIyLCAweDMzLCAweDQ0LCAweDU1LCAweDY2LCAweDc3LCAKKwkJCSAgICAweDg4LCAweDk5LCAweGFhLCAweGJiLCAweGNjLCAweGRkLCAweGVlLCAweGZmIH0sCisJCS5pbGVuCT0gMTYsCisJCS5yZXN1bHQJPSB7IDB4ZGQsIDB4YTksIDB4N2MsIDB4YTQsIDB4ODYsIDB4NGMsIDB4ZGYsIDB4ZTAsCisJCQkgICAgMHg2ZSwgMHhhZiwgMHg3MCwgMHhhMCwgMHhlYywgMHgwZCwgMHg3MSwgMHg5MSB9LAorCQkucmxlbgk9IDE2LAorCX0sIHsKKwkJLmtleQk9IHsgMHgwMCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwNSwgMHgwNiwgMHgwNywKKwkJCSAgICAweDA4LCAweDA5LCAweDBhLCAweDBiLCAweDBjLCAweDBkLCAweDBlLCAweDBmLAorCQkJICAgIDB4MTAsIDB4MTEsIDB4MTIsIDB4MTMsIDB4MTQsIDB4MTUsIDB4MTYsIDB4MTcsCisJCQkgICAgMHgxOCwgMHgxOSwgMHgxYSwgMHgxYiwgMHgxYywgMHgxZCwgMHgxZSwgMHgxZiB9LAorCQkua2xlbgk9IDMyLAorCQkuaW5wdXQJPSB7IDB4MDAsIDB4MTEsIDB4MjIsIDB4MzMsIDB4NDQsIDB4NTUsIDB4NjYsIDB4NzcsIAorCQkJICAgIDB4ODgsIDB4OTksIDB4YWEsIDB4YmIsIDB4Y2MsIDB4ZGQsIDB4ZWUsIDB4ZmYgfSwKKwkJLmlsZW4JPSAxNiwKKwkJLnJlc3VsdAk9IHsgMHg4ZSwgMHhhMiwgMHhiNywgMHhjYSwgMHg1MSwgMHg2NywgMHg0NSwgMHhiZiwKKwkJCSAgICAweGVhLCAweGZjLCAweDQ5LCAweDkwLCAweDRiLCAweDQ5LCAweDYwLCAweDg5IH0sCisJCS5ybGVuCT0gMTYsCisJfSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgY2lwaGVyX3Rlc3R2ZWMgYWVzX2RlY190dl90ZW1wbGF0ZVtdID0geyAKKwl7IC8qIEZyb20gRklQUy0xOTcgKi8KKwkJLmtleQk9IHsgMHgwMCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwNSwgMHgwNiwgMHgwNywgCisJCQkgICAgMHgwOCwgMHgwOSwgMHgwYSwgMHgwYiwgMHgwYywgMHgwZCwgMHgwZSwgMHgwZiB9LAorCQkua2xlbgk9IDE2LAorCQkuaW5wdXQJPSB7IDB4NjksIDB4YzQsIDB4ZTAsIDB4ZDgsIDB4NmEsIDB4N2IsIDB4MDQsIDB4MzAsCisJCQkgICAgMHhkOCwgMHhjZCwgMHhiNywgMHg4MCwgMHg3MCwgMHhiNCwgMHhjNSwgMHg1YSB9LAorCQkuaWxlbgk9IDE2LAorCQkucmVzdWx0CT0geyAweDAwLCAweDExLCAweDIyLCAweDMzLCAweDQ0LCAweDU1LCAweDY2LCAweDc3LAorCQkJICAgIDB4ODgsIDB4OTksIDB4YWEsIDB4YmIsIDB4Y2MsIDB4ZGQsIDB4ZWUsIDB4ZmYgfSwKKwkJLnJsZW4JPSAxNiwKKwl9LCB7CisJCS5rZXkJPSB7IDB4MDAsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4MDUsIDB4MDYsIDB4MDcsCisJCQkgICAgMHgwOCwgMHgwOSwgMHgwYSwgMHgwYiwgMHgwYywgMHgwZCwgMHgwZSwgMHgwZiwKKwkJCSAgICAweDEwLCAweDExLCAweDEyLCAweDEzLCAweDE0LCAweDE1LCAweDE2LCAweDE3IH0sCisJCS5rbGVuCT0gMjQsCisJCS5pbnB1dAk9IHsgMHhkZCwgMHhhOSwgMHg3YywgMHhhNCwgMHg4NiwgMHg0YywgMHhkZiwgMHhlMCwKKwkJCSAgICAweDZlLCAweGFmLCAweDcwLCAweGEwLCAweGVjLCAweDBkLCAweDcxLCAweDkxIH0sCisJCS5pbGVuCT0gMTYsCisJCS5yZXN1bHQJPSB7IDB4MDAsIDB4MTEsIDB4MjIsIDB4MzMsIDB4NDQsIDB4NTUsIDB4NjYsIDB4NzcsIAorCQkJICAgIDB4ODgsIDB4OTksIDB4YWEsIDB4YmIsIDB4Y2MsIDB4ZGQsIDB4ZWUsIDB4ZmYgfSwgIAorCQkucmxlbgk9IDE2LAorCX0sIHsKKwkJLmtleQk9IHsgMHgwMCwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwNSwgMHgwNiwgMHgwNywKKwkJCSAgICAweDA4LCAweDA5LCAweDBhLCAweDBiLCAweDBjLCAweDBkLCAweDBlLCAweDBmLAorCQkJICAgIDB4MTAsIDB4MTEsIDB4MTIsIDB4MTMsIDB4MTQsIDB4MTUsIDB4MTYsIDB4MTcsCisJCQkgICAgMHgxOCwgMHgxOSwgMHgxYSwgMHgxYiwgMHgxYywgMHgxZCwgMHgxZSwgMHgxZiB9LAorCQkua2xlbgk9IDMyLAorCQkuaW5wdXQJPSB7IDB4OGUsIDB4YTIsIDB4YjcsIDB4Y2EsIDB4NTEsIDB4NjcsIDB4NDUsIDB4YmYsCisJCQkgICAgMHhlYSwgMHhmYywgMHg0OSwgMHg5MCwgMHg0YiwgMHg0OSwgMHg2MCwgMHg4OSB9LAorCQkuaWxlbgk9IDE2LAorCQkucmVzdWx0CT0geyAweDAwLCAweDExLCAweDIyLCAweDMzLCAweDQ0LCAweDU1LCAweDY2LCAweDc3LCAKKwkJCSAgICAweDg4LCAweDk5LCAweGFhLCAweGJiLCAweGNjLCAweGRkLCAweGVlLCAweGZmIH0sCisJCS5ybGVuCT0gMTYsCisJfSwKK307CisKKy8qIENhc3Q1IHRlc3QgdmVjdG9ycyBmcm9tIFJGQyAyMTQ0ICovCisjZGVmaW5lIENBU1Q1X0VOQ19URVNUX1ZFQ1RPUlMJMworI2RlZmluZSBDQVNUNV9ERUNfVEVTVF9WRUNUT1JTCTMKKworc3RhdGljIHN0cnVjdCBjaXBoZXJfdGVzdHZlYyBjYXN0NV9lbmNfdHZfdGVtcGxhdGVbXSA9Cit7CisJeworCQkua2V5CT0geyAweDAxLCAweDIzLCAweDQ1LCAweDY3LCAweDEyLCAweDM0LCAweDU2LCAweDc4LAorCQkJICAgIDB4MjMsIDB4NDUsIDB4NjcsIDB4ODksIDB4MzQsIDB4NTYsIDB4NzgsIDB4OWEgfSwKKwkJLmtsZW4JPSAxNiwKKwkJLmlucHV0CT0geyAweDAxLCAweDIzLCAweDQ1LCAweDY3LCAweDg5LCAweGFiLCAweGNkLCAweGVmIH0sCisJCS5pbGVuCT0gOCwKKwkJLnJlc3VsdAk9IHsgMHgyMywgMHg4YiwgMHg0ZiwgMHhlNSwgMHg4NCwgMHg3ZSwgMHg0NCwgMHhiMiB9LAorCQkucmxlbgk9IDgsCisJfSwgeworCQkua2V5CT0geyAweDAxLCAweDIzLCAweDQ1LCAweDY3LCAweDEyLCAweDM0LCAweDU2LCAweDc4LAorCQkJICAgIDB4MjMsIDB4NDUgfSwKKwkJLmtsZW4JPSAxMCwKKwkJLmlucHV0CT0geyAweDAxLCAweDIzLCAweDQ1LCAweDY3LCAweDg5LCAweGFiLCAweGNkLCAweGVmIH0sCisJCS5pbGVuCT0gOCwKKwkJLnJlc3VsdAk9IHsgMHhlYiwgMHg2YSwgMHg3MSwgMHgxYSwgMHgyYywgMHgwMiwgMHgyNywgMHgxYiB9LAorCQkucmxlbgk9IDgsCisJfSwgeworCQkua2V5CT0geyAweDAxLCAweDIzLCAweDQ1LCAweDY3LCAweDEyIH0sCisJCS5rbGVuCT0gNSwKKwkJLmlucHV0CT0geyAweDAxLCAweDIzLCAweDQ1LCAweDY3LCAweDg5LCAweGFiLCAweGNkLCAweGVmIH0sCisJCS5pbGVuCT0gOCwKKwkJLnJlc3VsdAk9IHsgMHg3YSwgMHhjOCwgMHgxNiwgMHhkMSwgMHg2ZSwgMHg5YiwgMHgzMCwgMHgyZSB9LAorCQkucmxlbgk9IDgsCisJfSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgY2lwaGVyX3Rlc3R2ZWMgY2FzdDVfZGVjX3R2X3RlbXBsYXRlW10gPQoreworCXsKKwkJLmtleQk9IHsgMHgwMSwgMHgyMywgMHg0NSwgMHg2NywgMHgxMiwgMHgzNCwgMHg1NiwgMHg3OCwKKwkJCSAgICAweDIzLCAweDQ1LCAweDY3LCAweDg5LCAweDM0LCAweDU2LCAweDc4LCAweDlhIH0sCisJCS5rbGVuCT0gMTYsCisJCS5pbnB1dAk9IHsgMHgyMywgMHg4YiwgMHg0ZiwgMHhlNSwgMHg4NCwgMHg3ZSwgMHg0NCwgMHhiMiB9LAorCQkuaWxlbgk9IDgsCisJCS5yZXN1bHQJPSB7IDB4MDEsIDB4MjMsIDB4NDUsIDB4NjcsIDB4ODksIDB4YWIsIDB4Y2QsIDB4ZWYgfSwKKwkJLnJsZW4JPSA4LAorCX0sIHsKKwkJLmtleQk9IHsgMHgwMSwgMHgyMywgMHg0NSwgMHg2NywgMHgxMiwgMHgzNCwgMHg1NiwgMHg3OCwKKwkJCSAgICAweDIzLCAweDQ1IH0sCisJCS5rbGVuCT0gMTAsCisJCS5pbnB1dAk9IHsgMHhlYiwgMHg2YSwgMHg3MSwgMHgxYSwgMHgyYywgMHgwMiwgMHgyNywgMHgxYiB9LAorCQkuaWxlbgk9IDgsCisJCS5yZXN1bHQJPSB7IDB4MDEsIDB4MjMsIDB4NDUsIDB4NjcsIDB4ODksIDB4YWIsIDB4Y2QsIDB4ZWYgfSwKKwkJLnJsZW4JPSA4LAorCX0sIHsKKwkJLmtleQk9IHsgMHgwMSwgMHgyMywgMHg0NSwgMHg2NywgMHgxMiB9LAorCQkua2xlbgk9IDUsCisJCS5pbnB1dAk9IHsgMHg3YSwgMHhjOCwgMHgxNiwgMHhkMSwgMHg2ZSwgMHg5YiwgMHgzMCwgMHgyZSB9LAorCQkuaWxlbgk9IDgsCisJCS5yZXN1bHQJPSB7IDB4MDEsIDB4MjMsIDB4NDUsIDB4NjcsIDB4ODksIDB4YWIsIDB4Y2QsIDB4ZWYgfSwKKwkJLnJsZW4JPSA4LAorCX0sCit9OworCisvKiAKKyAqIEFSQzQgdGVzdCB2ZWN0b3JzIGZyb20gT3BlblNTTCAKKyAqLworI2RlZmluZSBBUkM0X0VOQ19URVNUX1ZFQ1RPUlMJNworI2RlZmluZSBBUkM0X0RFQ19URVNUX1ZFQ1RPUlMJNworCitzdGF0aWMgc3RydWN0IGNpcGhlcl90ZXN0dmVjIGFyYzRfZW5jX3R2X3RlbXBsYXRlW10gPQoreworCXsKKwkJLmtleQk9IHsgMHgwMSwgMHgyMywgMHg0NSwgMHg2NywgMHg4OSwgMHhhYiwgMHhjZCwgMHhlZiB9LAorCQkua2xlbgk9IDgsCisJCS5pbnB1dAk9IHsgMHgwMSwgMHgyMywgMHg0NSwgMHg2NywgMHg4OSwgMHhhYiwgMHhjZCwgMHhlZiB9LAorCQkuaWxlbgk9IDgsCisJCS5yZXN1bHQJPSB7IDB4NzUsIDB4YjcsIDB4ODcsIDB4ODAsIDB4OTksIDB4ZTAsIDB4YzUsIDB4OTYgfSwKKwkJLnJsZW4JPSA4LAorCX0sIHsKKwkJLmtleQk9IHsgMHgwMSwgMHgyMywgMHg0NSwgMHg2NywgMHg4OSwgMHhhYiwgMHhjZCwgMHhlZiB9LAorCQkua2xlbgk9IDgsCisJCS5pbnB1dAk9IHsgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCB9LAorCQkuaWxlbgk9IDgsCisJCS5yZXN1bHQJPSB7IDB4NzQsIDB4OTQsIDB4YzIsIDB4ZTcsIDB4MTAsIDB4NGIsIDB4MDgsIDB4NzkgfSwKKwkJLnJsZW4JPSA4LAorCX0sIHsKKwkJLmtleQk9IHsgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCB9LAorCQkua2xlbgk9IDgsCisJCS5pbnB1dAk9IHsgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCB9LAorCQkuaWxlbgk9IDgsCisJCS5yZXN1bHQJPSB7IDB4ZGUsIDB4MTgsIDB4ODksIDB4NDEsIDB4YTMsIDB4MzcsIDB4NWQsIDB4M2EgfSwKKwkJLnJsZW4JPSA4LAorCX0sIHsKKwkJLmtleQk9IHsgMHhlZiwgMHgwMSwgMHgyMywgMHg0NX0sCisJCS5rbGVuCT0gNCwKKwkJLmlucHV0CT0geyAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCQkJICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisJCQkgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCB9LAorCQkuaWxlbgk9IDIwLAorCQkucmVzdWx0CT0geyAweGQ2LCAweGExLCAweDQxLCAweGE3LCAweGVjLCAweDNjLCAweDM4LCAweGRmLAorCQkJICAgIDB4YmQsIDB4NjEsIDB4NWEsIDB4MTEsIDB4NjIsIDB4ZTEsIDB4YzcsIDB4YmEsCisJCQkgICAgMHgzNiwgMHhiNiwgMHg3OCwgMHg1OCB9LAorCQkucmxlbgk9IDIwLAorCX0sIHsKKwkJLmtleQk9IHsgMHgwMSwgMHgyMywgMHg0NSwgMHg2NywgMHg4OSwgMHhhYiwgMHhjZCwgMHhlZiB9LAorCQkua2xlbgk9IDgsCisJCS5pbnB1dAk9IHsgMHgxMiwgMHgzNCwgMHg1NiwgMHg3OCwgMHg5QSwgMHhCQywgMHhERSwgMHhGMCwKKwkJCSAgICAweDEyLCAweDM0LCAweDU2LCAweDc4LCAweDlBLCAweEJDLCAweERFLCAweEYwLAorCQkJICAgIDB4MTIsIDB4MzQsIDB4NTYsIDB4NzgsIDB4OUEsIDB4QkMsIDB4REUsIDB4RjAsCisJCQkgICAgMHgxMiwgMHgzNCwgMHg1NiwgMHg3OCB9LAorCQkuaWxlbgk9IDI4LAorCQkucmVzdWx0CT0geyAweDY2LCAweGEwLCAweDk0LCAweDlmLCAweDhhLCAweGY3LCAweGQ2LCAweDg5LAorCQkJICAgIDB4MWYsIDB4N2YsIDB4ODMsIDB4MmIsIDB4YTgsIDB4MzMsIDB4YzAsIDB4MGMsCisJCQkgICAgMHg4OSwgMHgyZSwgMHhiZSwgMHgzMCwgMHgxNCwgMHgzYywgMHhlMiwgMHg4NywKKwkJCSAgICAweDQwLCAweDAxLCAweDFlLCAweGNmIH0sCisJCS5ybGVuCT0gMjgsCisJfSwgeworCQkua2V5CT0geyAweGVmLCAweDAxLCAweDIzLCAweDQ1IH0sCisJCS5rbGVuCT0gNCwKKwkJLmlucHV0CT0geyAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCQkJICAgIDB4MDAsIDB4MDAgfSwKKwkJLmlsZW4JPSAxMCwKKwkJLnJlc3VsdAk9IHsgMHhkNiwgMHhhMSwgMHg0MSwgMHhhNywgMHhlYywgMHgzYywgMHgzOCwgMHhkZiwKKwkJCSAgICAweGJkLCAweDYxIH0sCisJCS5ybGVuCT0gMTAsCisJfSwgeworCQkua2V5CT0geyAweDAxLCAweDIzLCAweDQ1LCAweDY3LCAweDg5LCAweEFCLCAweENELCAweEVGLAorCQkgICAgICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwIH0sCisJCS5rbGVuCT0gMTYsCisJCS5pbnB1dAk9IHsgMHgwMSwgMHgyMywgMHg0NSwgMHg2NywgMHg4OSwgMHhBQiwgMHhDRCwgMHhFRiB9LAorCQkuaWxlbgk9IDgsCisJCS5yZXN1bHQJPSB7IDB4NjksIDB4NzIsIDB4MzYsIDB4NTksIDB4MUIsIDB4NTIsIDB4NDIsIDB4QjEgfSwKKwkJLnJsZW4JPSA4LAorCX0sCit9OworCitzdGF0aWMgc3RydWN0IGNpcGhlcl90ZXN0dmVjIGFyYzRfZGVjX3R2X3RlbXBsYXRlW10gPQoreworCXsKKwkJLmtleQk9IHsgMHgwMSwgMHgyMywgMHg0NSwgMHg2NywgMHg4OSwgMHhhYiwgMHhjZCwgMHhlZiB9LAorCQkua2xlbgk9IDgsCisJCS5pbnB1dAk9IHsgMHg3NSwgMHhiNywgMHg4NywgMHg4MCwgMHg5OSwgMHhlMCwgMHhjNSwgMHg5NiB9LAorCQkuaWxlbgk9IDgsCisJCS5yZXN1bHQJPSB7IDB4MDEsIDB4MjMsIDB4NDUsIDB4NjcsIDB4ODksIDB4YWIsIDB4Y2QsIDB4ZWYgfSwKKwkJLnJsZW4JPSA4LAorCX0sIHsKKwkJLmtleQk9IHsgMHgwMSwgMHgyMywgMHg0NSwgMHg2NywgMHg4OSwgMHhhYiwgMHhjZCwgMHhlZiB9LAorCQkua2xlbgk9IDgsCisJCS5pbnB1dAk9IHsgMHg3NCwgMHg5NCwgMHhjMiwgMHhlNywgMHgxMCwgMHg0YiwgMHgwOCwgMHg3OSB9LAorCQkuaWxlbgk9IDgsCisJCS5yZXN1bHQJPSB7IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAgfSwKKwkJLnJsZW4JPSA4LAorCX0sIHsKKwkJLmtleQk9IHsgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCB9LAorCQkua2xlbgk9IDgsCisJCS5pbnB1dAk9IHsgMHhkZSwgMHgxOCwgMHg4OSwgMHg0MSwgMHhhMywgMHgzNywgMHg1ZCwgMHgzYSB9LAorCQkuaWxlbgk9IDgsCisJCS5yZXN1bHQJPSB7IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAgfSwKKwkJLnJsZW4JPSA4LAorCX0sIHsKKwkJLmtleQk9IHsgMHhlZiwgMHgwMSwgMHgyMywgMHg0NX0sCisJCS5rbGVuCT0gNCwKKwkJLmlucHV0CT0geyAweGQ2LCAweGExLCAweDQxLCAweGE3LCAweGVjLCAweDNjLCAweDM4LCAweGRmLAorCQkJICAgIDB4YmQsIDB4NjEsIDB4NWEsIDB4MTEsIDB4NjIsIDB4ZTEsIDB4YzcsIDB4YmEsCisJCQkgICAgMHgzNiwgMHhiNiwgMHg3OCwgMHg1OCB9LAorCQkuaWxlbgk9IDIwLAorCQkucmVzdWx0CT0geyAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCQkJICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisJCQkgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCB9LAorCQkucmxlbgk9IDIwLAorCX0sIHsKKwkJLmtleQk9IHsgMHgwMSwgMHgyMywgMHg0NSwgMHg2NywgMHg4OSwgMHhhYiwgMHhjZCwgMHhlZiB9LAorCQkua2xlbgk9IDgsCisJCS5pbnB1dAk9IHsgMHg2NiwgMHhhMCwgMHg5NCwgMHg5ZiwgMHg4YSwgMHhmNywgMHhkNiwgMHg4OSwKKwkJCSAgICAweDFmLCAweDdmLCAweDgzLCAweDJiLCAweGE4LCAweDMzLCAweGMwLCAweDBjLAorCQkJICAgIDB4ODksIDB4MmUsIDB4YmUsIDB4MzAsIDB4MTQsIDB4M2MsIDB4ZTIsIDB4ODcsCisJCQkgICAgMHg0MCwgMHgwMSwgMHgxZSwgMHhjZiB9LAorCQkuaWxlbgk9IDI4LAorCQkucmVzdWx0CT0geyAweDEyLCAweDM0LCAweDU2LCAweDc4LCAweDlBLCAweEJDLCAweERFLCAweEYwLAorCQkJICAgIDB4MTIsIDB4MzQsIDB4NTYsIDB4NzgsIDB4OUEsIDB4QkMsIDB4REUsIDB4RjAsCisJCQkgICAgMHgxMiwgMHgzNCwgMHg1NiwgMHg3OCwgMHg5QSwgMHhCQywgMHhERSwgMHhGMCwKKwkJCSAgICAweDEyLCAweDM0LCAweDU2LCAweDc4IH0sCisJCS5ybGVuCT0gMjgsCisJfSwgeworCQkua2V5CT0geyAweGVmLCAweDAxLCAweDIzLCAweDQ1IH0sCisJCS5rbGVuCT0gNCwKKwkJLmlucHV0CT0geyAweGQ2LCAweGExLCAweDQxLCAweGE3LCAweGVjLCAweDNjLCAweDM4LCAweGRmLAorCQkJICAgIDB4YmQsIDB4NjEgfSwKKwkJLmlsZW4JPSAxMCwKKwkJLnJlc3VsdAk9IHsgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkJCSAgICAweDAwLCAweDAwIH0sCisJCS5ybGVuCT0gMTAsCisJfSwgeworCQkua2V5CT0geyAweDAxLCAweDIzLCAweDQ1LCAweDY3LCAweDg5LCAweEFCLCAweENELCAweEVGLAorCQkgICAgICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwIH0sCisJCS5rbGVuCT0gMTYsCisJCS5pbnB1dAk9IHsgMHg2OSwgMHg3MiwgMHgzNiwgMHg1OSwgMHgxQiwgMHg1MiwgMHg0MiwgMHhCMSB9LAorCQkuaWxlbgk9IDgsCisJCS5yZXN1bHQJPSB7IDB4MDEsIDB4MjMsIDB4NDUsIDB4NjcsIDB4ODksIDB4QUIsIDB4Q0QsIDB4RUYgfSwKKwkJLnJsZW4JPSA4LAorCX0sCit9OworCisvKiAKKyAqIFRFQSB0ZXN0IHZlY3RvcnMKKyAqLworI2RlZmluZSBURUFfRU5DX1RFU1RfVkVDVE9SUwk0CisjZGVmaW5lIFRFQV9ERUNfVEVTVF9WRUNUT1JTCTQKKworc3RhdGljIHN0cnVjdCBjaXBoZXJfdGVzdHZlYyB0ZWFfZW5jX3R2X3RlbXBsYXRlW10gPQoreworCXsKKwkJLmtleSAgICA9IHsgWzAgLi4uIDE1XSA9IDB4MDAgfSwKKwkJLmtsZW4JPSAxNiwKKwkJLmlucHV0ICA9IHsgWzAgLi4uIDhdID0gMHgwMCB9LAorCQkuaWxlbgk9IDgsCisJCS5yZXN1bHQJPSB7IDB4MGEsIDB4M2EsIDB4ZWEsIDB4NDEsIDB4NDAsIDB4YTksIDB4YmEsIDB4OTQgfSwKKwkJLnJsZW4JPSA4LAorCX0sIHsKKwkJLmtleQk9IHsgMHgyYiwgMHgwMiwgMHgwNSwgMHg2OCwgMHgwNiwgMHgxNCwgMHg0OSwgMHg3NiwKKwkJCSAgICAweDc3LCAweDVkLCAweDBlLCAweDI2LCAweDZjLCAweDI4LCAweDc4LCAweDQzIH0sCisJCS5rbGVuCT0gMTYsCisJCS5pbnB1dAk9IHsgMHg3NCwgMHg2NSwgMHg3MywgMHg3NCwgMHgyMCwgMHg2ZCwgMHg2NSwgMHgyZSB9LAorCQkuaWxlbgk9IDgsCisJCS5yZXN1bHQJPSB7IDB4NzcsIDB4NWQsIDB4MmEsIDB4NmEsIDB4ZjYsIDB4Y2UsIDB4OTIsIDB4MDkgfSwKKwkJLnJsZW4JPSA4LAorCX0sIHsKKwkJLmtleQk9IHsgMHgwOSwgMHg2NSwgMHg0MywgMHgxMSwgMHg2NiwgMHg0NCwgMHgzOSwgMHgyNSwKKwkJCSAgICAweDUxLCAweDNhLCAweDE2LCAweDEwLCAweDBhLCAweDA4LCAweDEyLCAweDZlIH0sCisJCS5rbGVuCT0gMTYsCisJCS5pbnB1dAk9IHsgMHg2YywgMHg2ZiwgMHg2ZSwgMHg2NywgMHg2NSwgMHg3MiwgMHg1ZiwgMHg3NCwgCisJCQkgICAgMHg2NSwgMHg3MywgMHg3NCwgMHg1ZiwgMHg3NiwgMHg2NSwgMHg2MywgMHg3NCB9LAorCQkuaWxlbgk9IDE2LAorCQkucmVzdWx0CT0geyAweGJlLCAweDdhLCAweGJiLCAweDgxLCAweDk1LCAweDJkLCAweDFmLCAweDFlLCAKKwkJCSAgICAweGRkLCAweDg5LCAweGExLCAweDI1LCAweDA0LCAweDIxLCAweGRmLCAweDk1IH0sCisJCS5ybGVuCT0gMTYsCisJfSwgeworCQkua2V5CT0geyAweDRkLCAweDc2LCAweDMyLCAweDE3LCAweDA1LCAweDNmLCAweDc1LCAweDJjLAorCQkJICAgIDB4NWQsIDB4MDQsIDB4MTYsIDB4MzYsIDB4MTUsIDB4NzIsIDB4NjMsIDB4MmYgfSwKKwkJLmtsZW4JPSAxNiwKKwkJLmlucHV0CT0geyAweDU0LCAweDY1LCAweDYxLCAweDIwLCAweDY5LCAweDczLCAweDIwLCAweDY3LCAKKwkJCSAgICAweDZmLCAweDZmLCAweDY0LCAweDIwLCAweDY2LCAweDZmLCAweDcyLCAweDIwLCAKKwkJCSAgICAweDc5LCAweDZmLCAweDc1LCAweDIxLCAweDIxLCAweDIxLCAweDIwLCAweDcyLCAKKwkJCSAgICAweDY1LCAweDYxLCAweDZjLCAweDZjLCAweDc5LCAweDIxLCAweDIxLCAweDIxIH0sCisJCS5pbGVuCT0gMzIsCisJCS5yZXN1bHQJPSB7IDB4ZTAsIDB4NGQsIDB4NWQsIDB4M2MsIDB4YjcsIDB4OGMsIDB4MzYsIDB4NDcsIAorCQkJICAgIDB4OTQsIDB4MTgsIDB4OTUsIDB4OTEsIDB4YTksIDB4ZmMsIDB4NDksIDB4ZjgsIAorCQkJICAgIDB4NDQsIDB4ZDEsIDB4MmQsIDB4YzIsIDB4OTksIDB4YjgsIDB4MDgsIDB4MmEsIAorCQkJICAgIDB4MDcsIDB4ODksIDB4NzMsIDB4YzIsIDB4NDUsIDB4OTIsIDB4YzYsIDB4OTAgfSwKKwkJLnJsZW4JPSAzMiwKKwl9Cit9OworCitzdGF0aWMgc3RydWN0IGNpcGhlcl90ZXN0dmVjIHRlYV9kZWNfdHZfdGVtcGxhdGVbXSA9Cit7CisJeworCQkua2V5ICAgID0geyBbMCAuLi4gMTVdID0gMHgwMCB9LAorCQkua2xlbgk9IDE2LAorCQkuaW5wdXQJPSB7IDB4MGEsIDB4M2EsIDB4ZWEsIDB4NDEsIDB4NDAsIDB4YTksIDB4YmEsIDB4OTQgfSwKKwkJLmlsZW4JPSA4LAorCQkucmVzdWx0ID0geyBbMCAuLi4gOF0gPSAweDAwIH0sCisJCS5ybGVuCT0gOCwKKwl9LCB7CisJCS5rZXkJPSB7IDB4MmIsIDB4MDIsIDB4MDUsIDB4NjgsIDB4MDYsIDB4MTQsIDB4NDksIDB4NzYsCisJCQkgICAgMHg3NywgMHg1ZCwgMHgwZSwgMHgyNiwgMHg2YywgMHgyOCwgMHg3OCwgMHg0MyB9LAorCQkua2xlbgk9IDE2LAorCQkuaW5wdXQJPSB7IDB4NzcsIDB4NWQsIDB4MmEsIDB4NmEsIDB4ZjYsIDB4Y2UsIDB4OTIsIDB4MDkgfSwKKwkJLmlsZW4JPSA4LAorCQkucmVzdWx0CT0geyAweDc0LCAweDY1LCAweDczLCAweDc0LCAweDIwLCAweDZkLCAweDY1LCAweDJlIH0sCisJCS5ybGVuCT0gOCwKKwl9LCB7CisJCS5rZXkJPSB7IDB4MDksIDB4NjUsIDB4NDMsIDB4MTEsIDB4NjYsIDB4NDQsIDB4MzksIDB4MjUsCisJCQkgICAgMHg1MSwgMHgzYSwgMHgxNiwgMHgxMCwgMHgwYSwgMHgwOCwgMHgxMiwgMHg2ZSB9LAorCQkua2xlbgk9IDE2LAorCQkuaW5wdXQJPSB7IDB4YmUsIDB4N2EsIDB4YmIsIDB4ODEsIDB4OTUsIDB4MmQsIDB4MWYsIDB4MWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhkZCwgMHg4OSwgMHhhMSwgMHgyNSwgMHgwNCwgMHgyMSwgMHhkZiwgMHg5NSB9LAorICAgICAgICAgICAgICAgIC5pbGVuICAgPSAxNiwKKwkJLnJlc3VsdAk9IHsgMHg2YywgMHg2ZiwgMHg2ZSwgMHg2NywgMHg2NSwgMHg3MiwgMHg1ZiwgMHg3NCwgCisJCQkgICAgMHg2NSwgMHg3MywgMHg3NCwgMHg1ZiwgMHg3NiwgMHg2NSwgMHg2MywgMHg3NCB9LAorCQkucmxlbgk9IDE2LAorCX0sIHsKKwkJLmtleQk9IHsgMHg0ZCwgMHg3NiwgMHgzMiwgMHgxNywgMHgwNSwgMHgzZiwgMHg3NSwgMHgyYywKKwkJCSAgICAweDVkLCAweDA0LCAweDE2LCAweDM2LCAweDE1LCAweDcyLCAweDYzLCAweDJmIH0sCisJCS5rbGVuCT0gMTYsCisJCS5pbnB1dAk9IHsgMHhlMCwgMHg0ZCwgMHg1ZCwgMHgzYywgMHhiNywgMHg4YywgMHgzNiwgMHg0NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk0LCAweDE4LCAweDk1LCAweDkxLCAweGE5LCAweGZjLCAweDQ5LCAweGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDQsIDB4ZDEsIDB4MmQsIDB4YzIsIDB4OTksIDB4YjgsIDB4MDgsIDB4MmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwNywgMHg4OSwgMHg3MywgMHhjMiwgMHg0NSwgMHg5MiwgMHhjNiwgMHg5MCB9LAorCQkuaWxlbgk9IDMyLAorCQkucmVzdWx0CT0geyAweDU0LCAweDY1LCAweDYxLCAweDIwLCAweDY5LCAweDczLCAweDIwLCAweDY3LCAKKwkJCSAgICAweDZmLCAweDZmLCAweDY0LCAweDIwLCAweDY2LCAweDZmLCAweDcyLCAweDIwLCAKKwkJCSAgICAweDc5LCAweDZmLCAweDc1LCAweDIxLCAweDIxLCAweDIxLCAweDIwLCAweDcyLCAKKwkJCSAgICAweDY1LCAweDYxLCAweDZjLCAweDZjLCAweDc5LCAweDIxLCAweDIxLCAweDIxIH0sCisJCS5ybGVuCT0gMzIsCisJfQorfTsKKworLyogCisgKiBYVEVBIHRlc3QgdmVjdG9ycyAKKyAqLworI2RlZmluZSBYVEVBX0VOQ19URVNUX1ZFQ1RPUlMJNAorI2RlZmluZSBYVEVBX0RFQ19URVNUX1ZFQ1RPUlMJNAorCitzdGF0aWMgc3RydWN0IGNpcGhlcl90ZXN0dmVjIHh0ZWFfZW5jX3R2X3RlbXBsYXRlW10gPQoreworCXsKKwkJLmtleSAgICA9IHsgWzAgLi4uIDE1XSA9IDB4MDAgfSwKKwkJLmtsZW4JPSAxNiwKKwkJLmlucHV0ICA9IHsgWzAgLi4uIDhdID0gMHgwMCB9LAorCQkuaWxlbgk9IDgsCisJCS5yZXN1bHQJPSB7IDB4YWEsIDB4MjIsIDB4OTYsIDB4ZTUsIDB4NmMsIDB4NjEsIDB4ZjMsIDB4NDUgfSwKKwkJLnJsZW4JPSA4LAorCX0sIHsKKwkJLmtleQk9IHsgMHgyYiwgMHgwMiwgMHgwNSwgMHg2OCwgMHgwNiwgMHgxNCwgMHg0OSwgMHg3NiwKKwkJCSAgICAweDc3LCAweDVkLCAweDBlLCAweDI2LCAweDZjLCAweDI4LCAweDc4LCAweDQzIH0sCisJCS5rbGVuCT0gMTYsCisJCS5pbnB1dAk9IHsgMHg3NCwgMHg2NSwgMHg3MywgMHg3NCwgMHgyMCwgMHg2ZCwgMHg2NSwgMHgyZSB9LAorCQkuaWxlbgk9IDgsCisJCS5yZXN1bHQJPSB7IDB4ODIsIDB4M2UsIDB4ZWIsIDB4MzUsIDB4ZGMsIDB4ZGQsIDB4ZDksIDB4YzMgfSwKKwkJLnJsZW4JPSA4LAorCX0sIHsKKwkJLmtleQk9IHsgMHgwOSwgMHg2NSwgMHg0MywgMHgxMSwgMHg2NiwgMHg0NCwgMHgzOSwgMHgyNSwKKwkJCSAgICAweDUxLCAweDNhLCAweDE2LCAweDEwLCAweDBhLCAweDA4LCAweDEyLCAweDZlIH0sCisJCS5rbGVuCT0gMTYsCisJCS5pbnB1dAk9IHsgMHg2YywgMHg2ZiwgMHg2ZSwgMHg2NywgMHg2NSwgMHg3MiwgMHg1ZiwgMHg3NCwgCisJCQkgICAgMHg2NSwgMHg3MywgMHg3NCwgMHg1ZiwgMHg3NiwgMHg2NSwgMHg2MywgMHg3NCB9LAorCQkuaWxlbgk9IDE2LAorCQkucmVzdWx0CT0geyAweGUyLCAweDA0LCAweGRiLCAweGYyLCAweDg5LCAweDg1LCAweDllLCAweGVhLCAKKwkJCSAgICAweDYxLCAweDM1LCAweGFhLCAweGVkLCAweGI1LCAweGNiLCAweDcxLCAweDJjIH0sCisJCS5ybGVuCT0gMTYsCisJfSwgeworCQkua2V5CT0geyAweDRkLCAweDc2LCAweDMyLCAweDE3LCAweDA1LCAweDNmLCAweDc1LCAweDJjLAorCQkJICAgIDB4NWQsIDB4MDQsIDB4MTYsIDB4MzYsIDB4MTUsIDB4NzIsIDB4NjMsIDB4MmYgfSwKKwkJLmtsZW4JPSAxNiwKKwkJLmlucHV0CT0geyAweDU0LCAweDY1LCAweDYxLCAweDIwLCAweDY5LCAweDczLCAweDIwLCAweDY3LCAKKwkJCSAgICAweDZmLCAweDZmLCAweDY0LCAweDIwLCAweDY2LCAweDZmLCAweDcyLCAweDIwLCAKKwkJCSAgICAweDc5LCAweDZmLCAweDc1LCAweDIxLCAweDIxLCAweDIxLCAweDIwLCAweDcyLCAKKwkJCSAgICAweDY1LCAweDYxLCAweDZjLCAweDZjLCAweDc5LCAweDIxLCAweDIxLCAweDIxIH0sCisJCS5pbGVuCT0gMzIsCisJCS5yZXN1bHQJPSB7IDB4MGIsIDB4MDMsIDB4Y2QsIDB4OGEsIDB4YmUsIDB4OTUsIDB4ZmQsIDB4YjEsIAorCQkJICAgIDB4YzEsIDB4NDQsIDB4OTEsIDB4MGIsIDB4YTUsIDB4YzksIDB4MWIsIDB4YjQsIAorCQkJICAgIDB4YTksIDB4ZGEsIDB4MWUsIDB4OWUsIDB4YjEsIDB4M2UsIDB4MmEsIDB4OGYsIAorCQkJICAgIDB4ZWEsIDB4YTUsIDB4NmEsIDB4ODUsIDB4ZDEsIDB4ZjQsIDB4YTgsIDB4YTUgfSwKKwkJLnJsZW4JPSAzMiwKKwl9Cit9OworCitzdGF0aWMgc3RydWN0IGNpcGhlcl90ZXN0dmVjIHh0ZWFfZGVjX3R2X3RlbXBsYXRlW10gPQoreworCXsKKwkJLmtleSAgICA9IHsgWzAgLi4uIDE1XSA9IDB4MDAgfSwKKwkJLmtsZW4JPSAxNiwKKwkJLmlucHV0CT0geyAweGFhLCAweDIyLCAweDk2LCAweGU1LCAweDZjLCAweDYxLCAweGYzLCAweDQ1IH0sCisJCS5pbGVuCT0gOCwKKwkJLnJlc3VsdCA9IHsgWzAgLi4uIDhdID0gMHgwMCB9LAorCQkucmxlbgk9IDgsCisJfSwgeworCQkua2V5CT0geyAweDJiLCAweDAyLCAweDA1LCAweDY4LCAweDA2LCAweDE0LCAweDQ5LCAweDc2LAorCQkJICAgIDB4NzcsIDB4NWQsIDB4MGUsIDB4MjYsIDB4NmMsIDB4MjgsIDB4NzgsIDB4NDMgfSwKKwkJLmtsZW4JPSAxNiwKKwkJLmlucHV0CT0geyAweDgyLCAweDNlLCAweGViLCAweDM1LCAweGRjLCAweGRkLCAweGQ5LCAweGMzIH0sCisJCS5pbGVuCT0gOCwKKwkJLnJlc3VsdAk9IHsgMHg3NCwgMHg2NSwgMHg3MywgMHg3NCwgMHgyMCwgMHg2ZCwgMHg2NSwgMHgyZSB9LAorCQkucmxlbgk9IDgsCisJfSwgeworCQkua2V5CT0geyAweDA5LCAweDY1LCAweDQzLCAweDExLCAweDY2LCAweDQ0LCAweDM5LCAweDI1LAorCQkJICAgIDB4NTEsIDB4M2EsIDB4MTYsIDB4MTAsIDB4MGEsIDB4MDgsIDB4MTIsIDB4NmUgfSwKKwkJLmtsZW4JPSAxNiwKKwkJLmlucHV0CT0geyAweGUyLCAweDA0LCAweGRiLCAweGYyLCAweDg5LCAweDg1LCAweDllLCAweGVhLCAKKwkJCSAgICAweDYxLCAweDM1LCAweGFhLCAweGVkLCAweGI1LCAweGNiLCAweDcxLCAweDJjIH0sCisJCS5pbGVuCT0gMTYsCisJCS5yZXN1bHQJPSB7IDB4NmMsIDB4NmYsIDB4NmUsIDB4NjcsIDB4NjUsIDB4NzIsIDB4NWYsIDB4NzQsIAorCQkJICAgIDB4NjUsIDB4NzMsIDB4NzQsIDB4NWYsIDB4NzYsIDB4NjUsIDB4NjMsIDB4NzQgfSwKKwkJLnJsZW4JPSAxNiwKKwl9LCB7CisJCS5rZXkJPSB7IDB4NGQsIDB4NzYsIDB4MzIsIDB4MTcsIDB4MDUsIDB4M2YsIDB4NzUsIDB4MmMsCisJCQkgICAgMHg1ZCwgMHgwNCwgMHgxNiwgMHgzNiwgMHgxNSwgMHg3MiwgMHg2MywgMHgyZiB9LAorCQkua2xlbgk9IDE2LAorCQkuaW5wdXQJPSB7IDB4MGIsIDB4MDMsIDB4Y2QsIDB4OGEsIDB4YmUsIDB4OTUsIDB4ZmQsIDB4YjEsIAorCQkJICAgIDB4YzEsIDB4NDQsIDB4OTEsIDB4MGIsIDB4YTUsIDB4YzksIDB4MWIsIDB4YjQsIAorCQkJICAgIDB4YTksIDB4ZGEsIDB4MWUsIDB4OWUsIDB4YjEsIDB4M2UsIDB4MmEsIDB4OGYsIAorCQkJICAgIDB4ZWEsIDB4YTUsIDB4NmEsIDB4ODUsIDB4ZDEsIDB4ZjQsIDB4YTgsIDB4YTUgfSwKKwkJLmlsZW4JPSAzMiwKKwkJLnJlc3VsdAk9IHsgMHg1NCwgMHg2NSwgMHg2MSwgMHgyMCwgMHg2OSwgMHg3MywgMHgyMCwgMHg2NywgCisJCQkgICAgMHg2ZiwgMHg2ZiwgMHg2NCwgMHgyMCwgMHg2NiwgMHg2ZiwgMHg3MiwgMHgyMCwgCisJCQkgICAgMHg3OSwgMHg2ZiwgMHg3NSwgMHgyMSwgMHgyMSwgMHgyMSwgMHgyMCwgMHg3MiwgCisJCQkgICAgMHg2NSwgMHg2MSwgMHg2YywgMHg2YywgMHg3OSwgMHgyMSwgMHgyMSwgMHgyMSB9LAorCQkucmxlbgk9IDMyLAorCX0KK307CisKKy8qCisgKiBLSEFaQUQgdGVzdCB2ZWN0b3JzLgorICovCisjZGVmaW5lIEtIQVpBRF9FTkNfVEVTVF9WRUNUT1JTIDUKKyNkZWZpbmUgS0hBWkFEX0RFQ19URVNUX1ZFQ1RPUlMgNQorCitzdGF0aWMgc3RydWN0IGNpcGhlcl90ZXN0dmVjIGtoYXphZF9lbmNfdHZfdGVtcGxhdGVbXSA9IHsgCisJeyAKKwkJLmtleQk9IHsgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgCisJCQkgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCB9LAorCQkua2xlbgk9IDE2LAorCQkuaW5wdXQJPSB7IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAgfSwKKwkJLmlsZW4JPSA4LAorCQkucmVzdWx0CT0geyAweDQ5LCAweGE0LCAweGNlLCAweDMyLCAweGFjLCAweDE5LCAweDBlLCAweDNmIH0sCisJCS5ybGVuCT0gOCwKKwl9LCB7CisJCS5rZXkJPSB7IDB4MzgsIDB4MzgsIDB4MzgsIDB4MzgsIDB4MzgsIDB4MzgsIDB4MzgsIDB4MzgsCisJCQkgICAgMHgzOCwgMHgzOCwgMHgzOCwgMHgzOCwgMHgzOCwgMHgzOCwgMHgzOCwgMHgzOCB9LAorCQkua2xlbgk9IDE2LAorCQkuaW5wdXQJPSB7IDB4MzgsIDB4MzgsIDB4MzgsIDB4MzgsIDB4MzgsIDB4MzgsIDB4MzgsIDB4MzggfSwKKwkJLmlsZW4JPSA4LAorCQkucmVzdWx0CT0geyAweDdlLCAweDgyLCAweDEyLCAweGExLCAwWGQ5LCAwWDViLCAwWGU0LCAwWGY5IH0sCisJCS5ybGVuCT0gOCwKKwl9LCB7CisJCS5rZXkJPSB7IDBYYTIsIDBYYTIsIDBYYTIsIDBYYTIsIDBYYTIsIDBYYTIsIDBYYTIsIDBYYTIsCisJCQkgICAgMFhhMiwgMFhhMiwgMFhhMiwgMFhhMiwgMFhhMiwgMFhhMiwgMFhhMiwgMFhhMiB9LAorCQkua2xlbgk9IDE2LAorCQkuaW5wdXQJPSB7IDBYYTIsIDBYYTIsIDBYYTIsIDBYYTIsIDBYYTIsIDBYYTIsIDBYYTIsIDBYYTIgfSwKKwkJLmlsZW4JPSA4LAorCQkucmVzdWx0CT0geyAwWGFhLCAwWGJlLCAwWGMxLCAwWDk1LCAwWGM1LCAwWDk0LCAwWDFhLCAwWDljIH0sCisJCS5ybGVuCT0gOCwKKwl9LCB7CisJCS5rZXkJPSB7IDBYMmYsIDBYMmYsIDBYMmYsIDBYMmYsIDBYMmYsIDBYMmYsIDBYMmYsIDBYMmYsCisJCQkgICAgMFgyZiwgMFgyZiwgMFgyZiwgMFgyZiwgMFgyZiwgMFgyZiwgMFgyZiwgMFgyZiB9LAorCQkua2xlbgk9IDE2LAorCQkuaW5wdXQJPSB7IDBYMmYsIDBYMmYsIDBYMmYsIDBYMmYsIDBYMmYsIDBYMmYsIDBYMmYsIDBYMmYgfSwKKwkJLmlsZW4JPSA4LAorCQkucmVzdWx0ID0geyAwWDA0LCAwWDc0LCAwWGY1LCAwWDcwLCAwWDUwLCAwWDE2LCAwWGQzLCAwWGI4IH0sCisJCS5ybGVuCT0gOCwKKwl9LCB7CisJCS5rZXkJPSB7IDBYMmYsIDBYMmYsIDBYMmYsIDBYMmYsIDBYMmYsIDBYMmYsIDBYMmYsIDBYMmYsCisJCQkgICAgMFgyZiwgMFgyZiwgMFgyZiwgMFgyZiwgMFgyZiwgMFgyZiwgMFgyZiwgMFgyZiB9LAorCQkua2xlbgk9IDE2LAorCQkuaW5wdXQJPSB7IDBYMmYsIDBYMmYsIDBYMmYsIDBYMmYsIDBYMmYsIDBYMmYsIDBYMmYsIDBYMmYgLAorCQkJICAgIDBYMmYsIDBYMmYsIDBYMmYsIDBYMmYsIDBYMmYsIDBYMmYsIDBYMmYsIDBYMmYgfSwKKwkJLmlsZW4JPSAxNiwKKwkJLnJlc3VsdCA9IHsgMFgwNCwgMFg3NCwgMFhmNSwgMFg3MCwgMFg1MCwgMFgxNiwgMFhkMywgMFhiOCAsCisJCQkgICAgMFgwNCwgMFg3NCwgMFhmNSwgMFg3MCwgMFg1MCwgMFgxNiwgMFhkMywgMFhiOCB9LAorCQkucmxlbgk9IDE2LAorCX0sCit9OworCitzdGF0aWMgc3RydWN0IGNpcGhlcl90ZXN0dmVjIGtoYXphZF9kZWNfdHZfdGVtcGxhdGVbXSA9IHsgCisJeworCQkua2V5CT0geyAweDgwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAKKwkJCSAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwIH0sCisJCS5rbGVuCT0gMTYsCisJCS5pbnB1dAk9IHsgMFg0OSwgMFhhNCwgMFhjZSwgMFgzMiwgMFhhYywgMFgxOSwgMFgwZSwgMFgzZiB9LAorCQkuaWxlbgk9IDgsCisJCS5yZXN1bHQJPSB7IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAgfSwKKwkJLnJsZW4JPSA4LAorCX0sIHsKKwkJLmtleQk9IHsgMHgzOCwgMHgzOCwgMHgzOCwgMHgzOCwgMHgzOCwgMHgzOCwgMHgzOCwgMHgzOCwKKwkJCSAgICAweDM4LCAweDM4LCAweDM4LCAweDM4LCAweDM4LCAweDM4LCAweDM4LCAweDM4IH0sCisJCS5rbGVuCT0gMTYsCisJCS5pbnB1dAk9IHsgMFg3ZSwgMFg4MiwgMFgxMiwgMFhhMSwgMFhkOSwgMFg1YiwgMFhlNCwgMFhmOSB9LAorCQkuaWxlbgk9IDgsCisJCS5yZXN1bHQJPSB7IDB4MzgsIDB4MzgsIDB4MzgsIDB4MzgsIDB4MzgsIDB4MzgsIDB4MzgsIDB4MzggfSwKKwkJLnJsZW4JPSA4LAorCX0sIHsKKwkJLmtleQk9IHsgMFhhMiwgMFhhMiwgMFhhMiwgMFhhMiwgMFhhMiwgMFhhMiwgMFhhMiwgMFhhMiwKKwkJCSAgICAwWGEyLCAwWGEyLCAwWGEyLCAwWGEyLCAwWGEyLCAwWGEyLCAwWGEyLCAwWGEyIH0sCisJCS5rbGVuCT0gMTYsCisJCS5pbnB1dAk9IHsgMFhhYSwgMFhiZSwgMFhjMSwgMFg5NSwgMFhjNSwgMFg5NCwgMFgxYSwgMFg5YyB9LAorCQkuaWxlbgk9IDgsCisJCS5yZXN1bHQJPSB7IDBYYTIsIDBYYTIsIDBYYTIsIDBYYTIsIDBYYTIsIDBYYTIsIDBYYTIsIDBYYTIgfSwKKwkJLnJsZW4JPSA4LAorCX0sIHsKKwkJLmtleQk9IHsgMHgyZiwgMFgyZiwgMFgyZiwgMFgyZiwgMFgyZiwgMFgyZiwgMFgyZiwgMFgyZiwKKwkJCSAgICAwWDJmLCAwWDJmLCAwWDJmLCAwWDJmLCAwWDJmLCAwWDJmLCAwWDJmLCAwWDJmIH0sCisJCS5rbGVuCT0gMTYsCisJCS5pbnB1dCA9IHsgMFgwNCwgMFg3NCwgMFhmNSwgMFg3MCwgMFg1MCwgMFgxNiwgMFhkMywgMFhiOCB9LAorCQkuaWxlbgk9IDgsCisJCS5yZXN1bHQJPSB7IDBYMmYsIDBYMmYsIDBYMmYsIDBYMmYsIDBYMmYsIDBYMmYsIDBYMmYsIDBYMmYgfSwKKwkJLnJsZW4JPSA4LAorCX0sIHsKKwkJLmtleQk9IHsgMFgyZiwgMFgyZiwgMFgyZiwgMFgyZiwgMFgyZiwgMFgyZiwgMFgyZiwgMFgyZiwKKwkJCSAgICAwWDJmLCAwWDJmLCAwWDJmLCAwWDJmLCAwWDJmLCAwWDJmLCAwWDJmLCAwWDJmIH0sCisJCS5rbGVuCT0gMTYsCisJCS5pbnB1dCA9IHsgMFgwNCwgMFg3NCwgMFhmNSwgMFg3MCwgMFg1MCwgMFgxNiwgMFhkMywgMFhiOCAsCisJCQkgICAgMFgwNCwgMFg3NCwgMFhmNSwgMFg3MCwgMFg1MCwgMFgxNiwgMFhkMywgMFhiOCB9LAorCQkuaWxlbgk9IDE2LAorCQkucmVzdWx0CT0geyAwWDJmLCAwWDJmLCAwWDJmLCAwWDJmLCAwWDJmLCAwWDJmLCAwWDJmLCAwWDJmICwKKwkJCSAgICAwWDJmLCAwWDJmLCAwWDJmLCAwWDJmLCAwWDJmLCAwWDJmLCAwWDJmLCAwWDJmIH0sCisJCS5ybGVuCT0gMTYsCisJfSwKK307CisKKy8qCisgKiBBbnViaXMgdGVzdCB2ZWN0b3JzLgorICovCisKKyNkZWZpbmUgQU5VQklTX0VOQ19URVNUX1ZFQ1RPUlMJCQk1CisjZGVmaW5lIEFOVUJJU19ERUNfVEVTVF9WRUNUT1JTCQkJNQorI2RlZmluZSBBTlVCSVNfQ0JDX0VOQ19URVNUX1ZFQ1RPUlMJCTIKKyNkZWZpbmUgQU5VQklTX0NCQ19ERUNfVEVTVF9WRUNUT1JTCQkyCisKK3N0YXRpYyBzdHJ1Y3QgY2lwaGVyX3Rlc3R2ZWMgYW51YmlzX2VuY190dl90ZW1wbGF0ZVtdID0geworCXsKKwkJLmtleQk9IHsgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwKKwkJCSAgICAweGZlLCAweGZlLCAweGZlLCAweGZlLCAweGZlLCAweGZlLCAweGZlLCAweGZlIH0sCisJCS5rbGVuCT0gMTYsCisJCS5pbnB1dAk9IHsgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwKKwkJCSAgICAweGZlLCAweGZlLCAweGZlLCAweGZlLCAweGZlLCAweGZlLCAweGZlLCAweGZlIH0sCisJCS5pbGVuCT0gMTYsCisJCS5yZXN1bHQJPSB7IDB4NmQsIDB4YzUsIDB4ZGEsIDB4YTIsIDB4MjYsIDB4N2QsIDB4NjIsIDB4NmYsCisJCQkgICAgMHgwOCwgMHhiNywgMHg1MiwgMHg4ZSwgMHg2ZSwgMHg2ZSwgMHg4NiwgMHg5MCB9LAorCQkucmxlbgk9IDE2LAorCX0sIHsKKworCQkua2V5CT0geyAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLAorCQkJICAgIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsCisJCQkgICAgMHgwMywgMHgwMywgMHgwMywgMHgwMyB9LAorCQkua2xlbgk9IDIwLAorCQkuaW5wdXQJPSB7IDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsCisJCQkgICAgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMyB9LAorCQkuaWxlbgk9IDE2LAorCQkucmVzdWx0CT0geyAweGRiLCAweGYxLCAweDQyLCAweGY0LCAweGQxLCAweDhhLCAweGM3LCAweDQ5LAorCQkJICAgIDB4ODcsIDB4NDEsIDB4NmYsIDB4ODIsIDB4MGEsIDB4OTgsIDB4NjQsIDB4YWUgfSwKKwkJLnJsZW4JPSAxNiwKKwl9LCB7CisJCS5rZXkJPSB7IDB4MjQsIDB4MjQsIDB4MjQsIDB4MjQsIDB4MjQsIDB4MjQsIDB4MjQsIDB4MjQsCisJCQkgICAgMHgyNCwgMHgyNCwgMHgyNCwgMHgyNCwgMHgyNCwgMHgyNCwgMHgyNCwgMHgyNCwKKwkJCSAgICAweDI0LCAweDI0LCAweDI0LCAweDI0LCAweDI0LCAweDI0LCAweDI0LCAweDI0LAorCQkJICAgIDB4MjQsIDB4MjQsIDB4MjQsIDB4MjQgfSwKKwkJLmtsZW4JPSAyOCwKKwkJLmlucHV0CT0geyAweDI0LCAweDI0LCAweDI0LCAweDI0LCAweDI0LCAweDI0LCAweDI0LCAweDI0LAorCQkJICAgIDB4MjQsIDB4MjQsIDB4MjQsIDB4MjQsIDB4MjQsIDB4MjQsIDB4MjQsIDB4MjQgfSwKKwkJLmlsZW4JPSAxNiwKKwkJLnJlc3VsdAk9IHsgMHhmZCwgMHgxYiwgMHg0YSwgMHhlMywgMHhiZiwgMHhmMCwgMHhhZCwgMHgzZCwKKwkJCSAgICAweDA2LCAweGQzLCAweDYxLCAweDI3LCAweGZkLCAweDEzLCAweDllLCAweGRlIH0sCisJCS5ybGVuCT0gMTYsCisJfSwgeworCQkua2V5CT0geyAweDI1LCAweDI1LCAweDI1LCAweDI1LCAweDI1LCAweDI1LCAweDI1LCAweDI1LAorCQkJICAgIDB4MjUsIDB4MjUsIDB4MjUsIDB4MjUsIDB4MjUsIDB4MjUsIDB4MjUsIDB4MjUsCisJCQkgICAgMHgyNSwgMHgyNSwgMHgyNSwgMHgyNSwgMHgyNSwgMHgyNSwgMHgyNSwgMHgyNSwKKwkJCSAgICAweDI1LCAweDI1LCAweDI1LCAweDI1LCAweDI1LCAweDI1LCAweDI1LCAweDI1IH0sCisJCS5rbGVuCT0gMzIsCisJCS5pbnB1dAk9IHsgMHgyNSwgMHgyNSwgMHgyNSwgMHgyNSwgMHgyNSwgMHgyNSwgMHgyNSwgMHgyNSwKKwkJCSAgICAweDI1LCAweDI1LCAweDI1LCAweDI1LCAweDI1LCAweDI1LCAweDI1LCAweDI1IH0sCisJCS5pbGVuCT0gMTYsCisJCS5yZXN1bHQJPSB7IDB4MWEsIDB4OTEsIDB4ZmIsIDB4MmIsIDB4YjcsIDB4NzgsIDB4NmIsIDB4YzQsCisJCSAgICAgICAgICAgIDB4MTcsIDB4ZDksIDB4ZmYsIDB4NDAsIDB4M2IsIDB4MGUsIDB4ZTUsIDB4ZmUgfSwKKwkJLnJsZW4JPSAxNiwKKwl9LCB7CisJCS5rZXkJPSB7IDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsCisJCQkgICAgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwKKwkJCSAgICAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LAorCQkJICAgIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsCisJCQkgICAgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSB9LAorCQkua2xlbgk9IDQwLAorCQkuaW5wdXQJPSB7IDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsCisJCQkgICAgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSB9LAorCQkuaWxlbgk9IDE2LAorCQkucmVzdWx0ID0geyAweGE1LCAweDJjLCAweDg1LCAweDZmLCAweDljLCAweGJhLCAweGEwLCAweDk3LAorCQkJICAgIDB4OWUsIDB4YzYsIDB4ODQsIDB4MGYsIDB4MTcsIDB4MjEsIDB4MDcsIDB4ZWUgfSwKKwkJLnJsZW4JPSAxNiwKKwl9LAorfTsKKworc3RhdGljIHN0cnVjdCBjaXBoZXJfdGVzdHZlYyBhbnViaXNfZGVjX3R2X3RlbXBsYXRlW10gPSB7CisJeworCQkua2V5CT0geyAweGZlLCAweGZlLCAweGZlLCAweGZlLCAweGZlLCAweGZlLCAweGZlLCAweGZlLAorCQkJICAgIDB4ZmUsIDB4ZmUsIDB4ZmUsIDB4ZmUsIDB4ZmUsIDB4ZmUsIDB4ZmUsIDB4ZmUgfSwKKwkJLmtsZW4JPSAxNiwKKwkJLmlucHV0CT0geyAweDZkLCAweGM1LCAweGRhLCAweGEyLCAweDI2LCAweDdkLCAweDYyLCAweDZmLAorCQkJICAgIDB4MDgsIDB4YjcsIDB4NTIsIDB4OGUsIDB4NmUsIDB4NmUsIDB4ODYsIDB4OTAgfSwKKwkJLmlsZW4JPSAxNiwKKwkJLnJlc3VsdAk9IHsgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwKKwkJCSAgICAweGZlLCAweGZlLCAweGZlLCAweGZlLCAweGZlLCAweGZlLCAweGZlLCAweGZlIH0sCisJCS5ybGVuCT0gMTYsCisJfSwgeworCisJCS5rZXkJPSB7IDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsCisJCQkgICAgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywKKwkJCSAgICAweDAzLCAweDAzLCAweDAzLCAweDAzIH0sCisJCS5rbGVuCT0gMjAsCisJCS5pbnB1dAk9IHsgMHhkYiwgMHhmMSwgMHg0MiwgMHhmNCwgMHhkMSwgMHg4YSwgMHhjNywgMHg0OSwKKwkJCSAgICAweDg3LCAweDQxLCAweDZmLCAweDgyLCAweDBhLCAweDk4LCAweDY0LCAweGFlIH0sCisJCS5pbGVuCT0gMTYsCisJCS5yZXN1bHQJPSB7IDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsCisJCQkgICAgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMyB9LAorCQkucmxlbgk9IDE2LAorCX0sIHsKKwkJLmtleQk9IHsgMHgyNCwgMHgyNCwgMHgyNCwgMHgyNCwgMHgyNCwgMHgyNCwgMHgyNCwgMHgyNCwKKwkJCSAgICAweDI0LCAweDI0LCAweDI0LCAweDI0LCAweDI0LCAweDI0LCAweDI0LCAweDI0LAorCQkJICAgIDB4MjQsIDB4MjQsIDB4MjQsIDB4MjQsIDB4MjQsIDB4MjQsIDB4MjQsIDB4MjQsCisJCQkgICAgMHgyNCwgMHgyNCwgMHgyNCwgMHgyNCB9LAorCQkua2xlbgk9IDI4LAorCQkuaW5wdXQJPSB7IDB4ZmQsIDB4MWIsIDB4NGEsIDB4ZTMsIDB4YmYsIDB4ZjAsIDB4YWQsIDB4M2QsCisJCQkgICAgMHgwNiwgMHhkMywgMHg2MSwgMHgyNywgMHhmZCwgMHgxMywgMHg5ZSwgMHhkZSB9LAorCQkuaWxlbgk9IDE2LAorCQkucmVzdWx0CT0geyAweDI0LCAweDI0LCAweDI0LCAweDI0LCAweDI0LCAweDI0LCAweDI0LCAweDI0LAorCQkJICAgIDB4MjQsIDB4MjQsIDB4MjQsIDB4MjQsIDB4MjQsIDB4MjQsIDB4MjQsIDB4MjQgfSwKKwkJLnJsZW4JPSAxNiwKKwl9LCB7CisJCS5rZXkJPSB7IDB4MjUsIDB4MjUsIDB4MjUsIDB4MjUsIDB4MjUsIDB4MjUsIDB4MjUsIDB4MjUsCisJCQkgICAgMHgyNSwgMHgyNSwgMHgyNSwgMHgyNSwgMHgyNSwgMHgyNSwgMHgyNSwgMHgyNSwKKwkJCSAgICAweDI1LCAweDI1LCAweDI1LCAweDI1LCAweDI1LCAweDI1LCAweDI1LCAweDI1LAorCQkJICAgIDB4MjUsIDB4MjUsIDB4MjUsIDB4MjUsIDB4MjUsIDB4MjUsIDB4MjUsIDB4MjUgfSwKKwkJLmtsZW4JPSAzMiwKKwkJLmlucHV0CT0geyAweDFhLCAweDkxLCAweGZiLCAweDJiLCAweGI3LCAweDc4LCAweDZiLCAweGM0LAorCQkgICAgICAgICAgICAweDE3LCAweGQ5LCAweGZmLCAweDQwLCAweDNiLCAweDBlLCAweGU1LCAweGZlIH0sCisJCS5pbGVuCT0gMTYsCisJCS5yZXN1bHQJPSB7IDB4MjUsIDB4MjUsIDB4MjUsIDB4MjUsIDB4MjUsIDB4MjUsIDB4MjUsIDB4MjUsCisJCQkgICAgMHgyNSwgMHgyNSwgMHgyNSwgMHgyNSwgMHgyNSwgMHgyNSwgMHgyNSwgMHgyNSB9LAorCQkucmxlbgk9IDE2LAorCX0sIHsKKwkJLmtleQk9IHsgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwKKwkJCSAgICAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LAorCQkJICAgIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsCisJCQkgICAgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwKKwkJCSAgICAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1IH0sCisJCS5pbnB1dCA9IHsgIDB4YTUsIDB4MmMsIDB4ODUsIDB4NmYsIDB4OWMsIDB4YmEsIDB4YTAsIDB4OTcsCisJCQkgICAgMHg5ZSwgMHhjNiwgMHg4NCwgMHgwZiwgMHgxNywgMHgyMSwgMHgwNywgMHhlZSB9LAorCQkua2xlbgk9IDQwLAorCQkuaWxlbgk9IDE2LAorCQkucmVzdWx0CT0geyAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LAorCQkJICAgIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUgfSwKKwkJLnJsZW4JPSAxNiwKKwl9LAorfTsKKworc3RhdGljIHN0cnVjdCBjaXBoZXJfdGVzdHZlYyBhbnViaXNfY2JjX2VuY190dl90ZW1wbGF0ZVtdID0geworCXsKKwkJLmtleQk9IHsgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwKKwkJCSAgICAweGZlLCAweGZlLCAweGZlLCAweGZlLCAweGZlLCAweGZlLCAweGZlLCAweGZlIH0sCisJCS5rbGVuCT0gMTYsCisJCS5pbnB1dAk9IHsgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwKKwkJCSAgICAweGZlLCAweGZlLCAweGZlLCAweGZlLCAweGZlLCAweGZlLCAweGZlLCAweGZlLAorCQkJICAgIDB4ZmUsIDB4ZmUsIDB4ZmUsIDB4ZmUsIDB4ZmUsIDB4ZmUsIDB4ZmUsIDB4ZmUsCisJCQkgICAgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSB9LAorCQkuaWxlbgk9IDMyLAorCQkucmVzdWx0CT0geyAweDZkLCAweGM1LCAweGRhLCAweGEyLCAweDI2LCAweDdkLCAweDYyLCAweDZmLAorCQkJICAgIDB4MDgsIDB4YjcsIDB4NTIsIDB4OGUsIDB4NmUsIDB4NmUsIDB4ODYsIDB4OTAsCisJCQkgICAgMHg4NiwgMHhkOCwgMHhiNSwgMHg2ZiwgMHg5OCwgMHg1ZSwgMHg4YSwgMHg2NiwKKwkJCSAgICAweDRmLCAweDFmLCAweDc4LCAweGExLCAweGJiLCAweDM3LCAweGYxLCAweGJlIH0sCisJCS5ybGVuCT0gMzIsCisJfSwgeworCQkua2V5CT0geyAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LAorCQkJICAgIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsCisJCQkgICAgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwKKwkJCSAgICAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LAorCQkJICAgIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUgfSwKKwkJLmtsZW4JPSA0MCwKKwkJLmlucHV0CT0geyAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LAorCQkJICAgIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsCisJCQkgICAgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwKKwkJCSAgICAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1IH0sCisJCS5pbGVuCT0gMzIsCisJCS5yZXN1bHQgPSB7IDB4YTUsIDB4MmMsIDB4ODUsIDB4NmYsIDB4OWMsIDB4YmEsIDB4YTAsIDB4OTcsCisJCQkgICAgMHg5ZSwgMHhjNiwgMHg4NCwgMHgwZiwgMHgxNywgMHgyMSwgMHgwNywgMHhlZSwKKwkJCSAgICAweGEyLCAweGJjLCAweDA2LCAweDk4LCAweGM2LCAweDRiLCAweGRhLCAweDc1LAorCQkJICAgIDB4MmUsIDB4YWEsIDB4YmUsIDB4NTgsIDB4Y2UsIDB4MDEsIDB4NWIsIDB4YzcgfSwKKwkJLnJsZW4JPSAzMiwKKwl9LAorfTsKKworc3RhdGljIHN0cnVjdCBjaXBoZXJfdGVzdHZlYyBhbnViaXNfY2JjX2RlY190dl90ZW1wbGF0ZVtdID0geworCXsKKwkJLmtleQk9IHsgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwKKwkJCSAgICAweGZlLCAweGZlLCAweGZlLCAweGZlLCAweGZlLCAweGZlLCAweGZlLCAweGZlIH0sCisJCS5rbGVuCT0gMTYsCisJCS5pbnB1dAk9IHsgMHg2ZCwgMHhjNSwgMHhkYSwgMHhhMiwgMHgyNiwgMHg3ZCwgMHg2MiwgMHg2ZiwKKwkJCSAgICAweDA4LCAweGI3LCAweDUyLCAweDhlLCAweDZlLCAweDZlLCAweDg2LCAweDkwLAorCQkJICAgIDB4ODYsIDB4ZDgsIDB4YjUsIDB4NmYsIDB4OTgsIDB4NWUsIDB4OGEsIDB4NjYsCisJCQkgICAgMHg0ZiwgMHgxZiwgMHg3OCwgMHhhMSwgMHhiYiwgMHgzNywgMHhmMSwgMHhiZSB9LAorCQkuaWxlbgk9IDMyLAorCQkucmVzdWx0CT0geyAweGZlLCAweGZlLCAweGZlLCAweGZlLCAweGZlLCAweGZlLCAweGZlLCAweGZlLAorCQkJICAgIDB4ZmUsIDB4ZmUsIDB4ZmUsIDB4ZmUsIDB4ZmUsIDB4ZmUsIDB4ZmUsIDB4ZmUsCisJCQkgICAgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwgMHhmZSwKKwkJCSAgICAweGZlLCAweGZlLCAweGZlLCAweGZlLCAweGZlLCAweGZlLCAweGZlLCAweGZlIH0sCisJCS5ybGVuCT0gMzIsCisJfSwgeworCQkua2V5CT0geyAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LAorCQkJICAgIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsCisJCQkgICAgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwKKwkJCSAgICAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LAorCQkJICAgIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUgfSwKKwkJLmtsZW4JPSA0MCwKKwkJLmlucHV0ID0geyAweGE1LCAweDJjLCAweDg1LCAweDZmLCAweDljLCAweGJhLCAweGEwLCAweDk3LAorCQkJICAgIDB4OWUsIDB4YzYsIDB4ODQsIDB4MGYsIDB4MTcsIDB4MjEsIDB4MDcsIDB4ZWUsCisJCQkgICAgMHhhMiwgMHhiYywgMHgwNiwgMHg5OCwgMHhjNiwgMHg0YiwgMHhkYSwgMHg3NSwKKwkJCSAgICAweDJlLCAweGFhLCAweGJlLCAweDU4LCAweGNlLCAweDAxLCAweDViLCAweGM3IH0sCisJCS5pbGVuCT0gMzIsCisJCS5yZXN1bHQJPSB7IDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsCisJCQkgICAgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwgMHgzNSwKKwkJCSAgICAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LCAweDM1LAorCQkJICAgIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUsIDB4MzUgfSwKKwkJLnJsZW4JPSAzMiwKKwl9LAorfTsKKworLyoKKyAqIENvbXByZXNzaW9uIHN0dWZmLgorICovCisjZGVmaW5lIENPTVBfQlVGX1NJWkUgICAgICAgICAgIDUxMgorCitzdHJ1Y3QgY29tcF90ZXN0dmVjIHsKKwlpbnQgaW5sZW4sIG91dGxlbjsKKwljaGFyIGlucHV0W0NPTVBfQlVGX1NJWkVdOworCWNoYXIgb3V0cHV0W0NPTVBfQlVGX1NJWkVdOworfTsKKworLyoKKyAqIERlZmxhdGUgdGVzdCB2ZWN0b3JzIChudWxsLXRlcm1pbmF0ZWQgc3RyaW5ncykuCisgKiBQYXJhbXM6IHdpbmJpdHM9MTEsIFpfREVGQVVMVF9DT01QUkVTU0lPTiwgTUFYX01FTV9MRVZFTC4KKyAqLworI2RlZmluZSBERUZMQVRFX0NPTVBfVEVTVF9WRUNUT1JTIDIKKyNkZWZpbmUgREVGTEFURV9ERUNPTVBfVEVTVF9WRUNUT1JTIDIKKworc3RhdGljIHN0cnVjdCBjb21wX3Rlc3R2ZWMgZGVmbGF0ZV9jb21wX3R2X3RlbXBsYXRlW10gPSB7CisJeworCQkuaW5sZW4JPSA3MCwKKwkJLm91dGxlbgk9IDM4LAorCSAgCS5pbnB1dAk9ICJKb2luIHVzIG5vdyBhbmQgc2hhcmUgdGhlIHNvZnR3YXJlICIKKwkJCSAgIkpvaW4gdXMgbm93IGFuZCBzaGFyZSB0aGUgc29mdHdhcmUgIiwKKwkJLm91dHB1dAk9IHsgMHhmMywgMHhjYSwgMHhjZiwgMHhjYywgMHg1MywgMHgyOCwgMHgyZCwgMHg1NiwKKwkJCSAgICAweGM4LCAweGNiLCAweDJmLCAweDU3LCAweDQ4LCAweGNjLCAweDRiLCAweDUxLAorCQkJICAgIDB4MjgsIDB4Y2UsIDB4NDgsIDB4MmMsIDB4NGEsIDB4NTUsIDB4MjgsIDB4YzksCisJCQkgICAgMHg0OCwgMHg1NSwgMHgyOCwgMHhjZSwgMHg0ZiwgMHgyYiwgMHgyOSwgMHgwNywKKwkJCSAgICAweDcxLCAweGJjLCAweDA4LCAweDJiLCAweDAxLCAweDAwIH0sCisJfSwgeworCQkuaW5sZW4JPSAxOTEsCisJCS5vdXRsZW4JPSAxMjIsCisJCS5pbnB1dAk9ICJUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyBhIGNvbXByZXNzaW9uIG1ldGhvZCBiYXNlZCBvbiB0aGUgREVGTEFURSIKKwkJCSAgImNvbXByZXNzaW9uIGFsZ29yaXRobS4gIFRoaXMgZG9jdW1lbnQgZGVmaW5lcyB0aGUgYXBwbGljYXRpb24gb2YgIgorCQkJICAidGhlIERFRkxBVEUgYWxnb3JpdGhtIHRvIHRoZSBJUCBQYXlsb2FkIENvbXByZXNzaW9uIFByb3RvY29sLiIsCisJCS5vdXRwdXQJPSB7IDB4NWQsIDB4OGQsIDB4MzEsIDB4MGUsIDB4YzIsIDB4MzAsIDB4MTAsIDB4MDQsCisJCQkgICAgMHhiZiwgMHhiMiwgMHgyZiwgMHhjOCwgMHgxZiwgMHgxMCwgMHgwNCwgMHgwOSwKKwkJCSAgICAweDg5LCAweGMyLCAweDg1LCAweDNmLCAweDcwLCAweGIxLCAweDJmLCAweGY4LAorCQkJICAgIDB4MjQsIDB4ZGIsIDB4NjcsIDB4ZDksIDB4NDcsIDB4YzEsIDB4ZWYsIDB4NDksCisJCQkgICAgMHg2OCwgMHgxMiwgMHg1MSwgMHhhZSwgMHg3NiwgMHg2NywgMHhkNiwgMHgyNywKKwkJCSAgICAweDE5LCAweDg4LCAweDFhLCAweGRlLCAweDg1LCAweGFiLCAweDIxLCAweGYyLAorCQkJICAgIDB4MDgsIDB4NWQsIDB4MTYsIDB4MWUsIDB4MjAsIDB4MDQsIDB4MmQsIDB4YWQsCisJCQkgICAgMHhmMywgMHgxOCwgMHhhMiwgMHgxNSwgMHg4NSwgMHgyZCwgMHg2OSwgMHhjNCwKKwkJCSAgICAweDQyLCAweDgzLCAweDIzLCAweGI2LCAweDZjLCAweDg5LCAweDcxLCAweDliLAorCQkJICAgIDB4ZWYsIDB4Y2YsIDB4OGIsIDB4OWYsIDB4Y2YsIDB4MzMsIDB4Y2EsIDB4MmYsCisJCQkgICAgMHhlZCwgMHg2MiwgMHhhOSwgMHg0YywgMHg4MCwgMHhmZiwgMHgxMywgMHhhZiwKKwkJCSAgICAweDUyLCAweDM3LCAweGVkLCAweDBlLCAweDUyLCAweDZiLCAweDU5LCAweDAyLAorCQkJICAgIDB4ZDksIDB4NGUsIDB4ZTgsIDB4N2EsIDB4NzYsIDB4MWQsIDB4MDIsIDB4OTgsCisJCQkgICAgMHhmZSwgMHg4YSwgMHg4NywgMHg4MywgMHhhMywgMHg0ZiwgMHg1NiwgMHg4YSwKKwkJCSAgICAweGI4LCAweDllLCAweDhlLCAweDVjLCAweDU3LCAweGQzLCAweGEwLCAweDc5LAorCQkJICAgIDB4ZmEsIDB4MDIgfSwKKwl9LAorfTsKKworc3RhdGljIHN0cnVjdCBjb21wX3Rlc3R2ZWMgZGVmbGF0ZV9kZWNvbXBfdHZfdGVtcGxhdGVbXSA9IHsKKwl7CisJCS5pbmxlbgk9IDEyMiwKKwkJLm91dGxlbgk9IDE5MSwKKwkJLmlucHV0CT0geyAweDVkLCAweDhkLCAweDMxLCAweDBlLCAweGMyLCAweDMwLCAweDEwLCAweDA0LAorCQkJICAgIDB4YmYsIDB4YjIsIDB4MmYsIDB4YzgsIDB4MWYsIDB4MTAsIDB4MDQsIDB4MDksCisJCQkgICAgMHg4OSwgMHhjMiwgMHg4NSwgMHgzZiwgMHg3MCwgMHhiMSwgMHgyZiwgMHhmOCwKKwkJCSAgICAweDI0LCAweGRiLCAweDY3LCAweGQ5LCAweDQ3LCAweGMxLCAweGVmLCAweDQ5LAorCQkJICAgIDB4NjgsIDB4MTIsIDB4NTEsIDB4YWUsIDB4NzYsIDB4NjcsIDB4ZDYsIDB4MjcsCisJCQkgICAgMHgxOSwgMHg4OCwgMHgxYSwgMHhkZSwgMHg4NSwgMHhhYiwgMHgyMSwgMHhmMiwKKwkJCSAgICAweDA4LCAweDVkLCAweDE2LCAweDFlLCAweDIwLCAweDA0LCAweDJkLCAweGFkLAorCQkJICAgIDB4ZjMsIDB4MTgsIDB4YTIsIDB4MTUsIDB4ODUsIDB4MmQsIDB4NjksIDB4YzQsCisJCQkgICAgMHg0MiwgMHg4MywgMHgyMywgMHhiNiwgMHg2YywgMHg4OSwgMHg3MSwgMHg5YiwKKwkJCSAgICAweGVmLCAweGNmLCAweDhiLCAweDlmLCAweGNmLCAweDMzLCAweGNhLCAweDJmLAorCQkJICAgIDB4ZWQsIDB4NjIsIDB4YTksIDB4NGMsIDB4ODAsIDB4ZmYsIDB4MTMsIDB4YWYsCisJCQkgICAgMHg1MiwgMHgzNywgMHhlZCwgMHgwZSwgMHg1MiwgMHg2YiwgMHg1OSwgMHgwMiwKKwkJCSAgICAweGQ5LCAweDRlLCAweGU4LCAweDdhLCAweDc2LCAweDFkLCAweDAyLCAweDk4LAorCQkJICAgIDB4ZmUsIDB4OGEsIDB4ODcsIDB4ODMsIDB4YTMsIDB4NGYsIDB4NTYsIDB4OGEsCisJCQkgICAgMHhiOCwgMHg5ZSwgMHg4ZSwgMHg1YywgMHg1NywgMHhkMywgMHhhMCwgMHg3OSwKKwkJCSAgICAweGZhLCAweDAyIH0sCisJCS5vdXRwdXQJPSAiVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgYSBjb21wcmVzc2lvbiBtZXRob2QgYmFzZWQgb24gdGhlIERFRkxBVEUiCisJCQkgICJjb21wcmVzc2lvbiBhbGdvcml0aG0uICBUaGlzIGRvY3VtZW50IGRlZmluZXMgdGhlIGFwcGxpY2F0aW9uIG9mICIKKwkJCSAgInRoZSBERUZMQVRFIGFsZ29yaXRobSB0byB0aGUgSVAgUGF5bG9hZCBDb21wcmVzc2lvbiBQcm90b2NvbC4iLAorCX0sIHsKKwkJLmlubGVuCT0gMzgsCisJCS5vdXRsZW4JPSA3MCwKKwkJLmlucHV0CT0geyAweGYzLCAweGNhLCAweGNmLCAweGNjLCAweDUzLCAweDI4LCAweDJkLCAweDU2LAorCQkJICAgIDB4YzgsIDB4Y2IsIDB4MmYsIDB4NTcsIDB4NDgsIDB4Y2MsIDB4NGIsIDB4NTEsCisJCQkgICAgMHgyOCwgMHhjZSwgMHg0OCwgMHgyYywgMHg0YSwgMHg1NSwgMHgyOCwgMHhjOSwKKwkJCSAgICAweDQ4LCAweDU1LCAweDI4LCAweGNlLCAweDRmLCAweDJiLCAweDI5LCAweDA3LAorCQkJICAgIDB4NzEsIDB4YmMsIDB4MDgsIDB4MmIsIDB4MDEsIDB4MDAgfSwKKwkJLm91dHB1dAk9ICJKb2luIHVzIG5vdyBhbmQgc2hhcmUgdGhlIHNvZnR3YXJlICIKKwkJCSAgIkpvaW4gdXMgbm93IGFuZCBzaGFyZSB0aGUgc29mdHdhcmUgIiwKKwl9LAorfTsKKworLyoKKyAqIE1pY2hhZWwgTUlDIHRlc3QgdmVjdG9ycyBmcm9tIElFRUUgODAyLjExaQorICovCisjZGVmaW5lIE1JQ0hBRUxfTUlDX1RFU1RfVkVDVE9SUyA2CisKK3N0YXRpYyBzdHJ1Y3QgaGFzaF90ZXN0dmVjIG1pY2hhZWxfbWljX3R2X3RlbXBsYXRlW10gPQoreworCXsKKwkJLmtleSA9IHsgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCB9LAorCQkua3NpemUgPSA4LAorCQkucGxhaW50ZXh0ID0geyB9LAorCQkucHNpemUgPSAwLAorCQkuZGlnZXN0ID0geyAweDgyLCAweDkyLCAweDVjLCAweDFjLCAweGExLCAweGQxLCAweDMwLCAweGI4IH0KKwl9LAorCXsKKwkJLmtleSA9IHsgMHg4MiwgMHg5MiwgMHg1YywgMHgxYywgMHhhMSwgMHhkMSwgMHgzMCwgMHhiOCB9LAorCQkua3NpemUgPSA4LAorCQkucGxhaW50ZXh0ID0geyAnTScgfSwKKwkJLnBzaXplID0gMSwKKwkJLmRpZ2VzdCA9IHsgMHg0MywgMHg0NywgMHgyMSwgMHhjYSwgMHg0MCwgMHg2MywgMHg5YiwgMHgzZiB9CisJfSwKKwl7CisJCS5rZXkgPSB7IDB4NDMsIDB4NDcsIDB4MjEsIDB4Y2EsIDB4NDAsIDB4NjMsIDB4OWIsIDB4M2YgfSwKKwkJLmtzaXplID0gOCwKKwkJLnBsYWludGV4dCA9IHsgJ00nLCAnaScgfSwKKwkJLnBzaXplID0gMiwKKwkJLmRpZ2VzdCA9IHsgMHhlOCwgMHhmOSwgMHhiZSwgMHhjYSwgMHhlOSwgMHg3ZSwgMHg1ZCwgMHgyOSB9CisJfSwKKwl7CisJCS5rZXkgPSB7IDB4ZTgsIDB4ZjksIDB4YmUsIDB4Y2EsIDB4ZTksIDB4N2UsIDB4NWQsIDB4MjkgfSwKKwkJLmtzaXplID0gOCwKKwkJLnBsYWludGV4dCA9IHsgJ00nLCAnaScsICdjJyB9LAorCQkucHNpemUgPSAzLAorCQkuZGlnZXN0ID0geyAweDkwLCAweDAzLCAweDhmLCAweGM2LCAweGNmLCAweDEzLCAweGMxLCAweGRiIH0KKwl9LAorCXsKKwkJLmtleSA9IHsgMHg5MCwgMHgwMywgMHg4ZiwgMHhjNiwgMHhjZiwgMHgxMywgMHhjMSwgMHhkYiB9LAorCQkua3NpemUgPSA4LAorCQkucGxhaW50ZXh0ID0geyAnTScsICdpJywgJ2MnLCAnaCcgfSwKKwkJLnBzaXplID0gNCwKKwkJLmRpZ2VzdCA9IHsgMHhkNSwgMHg1ZSwgMHgxMCwgMHgwNSwgMHgxMCwgMHgxMiwgMHg4OSwgMHg4NiB9CisJfSwKKwl7CisJCS5rZXkgPSB7IDB4ZDUsIDB4NWUsIDB4MTAsIDB4MDUsIDB4MTAsIDB4MTIsIDB4ODksIDB4ODYgfSwKKwkJLmtzaXplID0gOCwKKwkJLnBsYWludGV4dCA9IHsgJ00nLCAnaScsICdjJywgJ2gnLCAnYScsICdlJywgJ2wnIH0sCisJCS5wc2l6ZSA9IDcsCisJCS5kaWdlc3QgPSB7IDB4MGEsIDB4OTQsIDB4MmIsIDB4MTIsIDB4NGUsIDB4Y2EsIDB4YTUsIDB4NDYgfSwKKwl9Cit9OworCisjZW5kaWYJLyogX0NSWVBUT19UQ1JZUFRfSCAqLwpkaWZmIC0tZ2l0IGEvY3J5cHRvL3RlYS5jIGIvY3J5cHRvL3RlYS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzYzIzY2IKLS0tIC9kZXYvbnVsbAorKysgYi9jcnlwdG8vdGVhLmMKQEAgLTAsMCArMSwyNDggQEAKKy8qIAorICogQ3J5cHRvZ3JhcGhpYyBBUEkuCisgKgorICogVEVBIGFuZCBYdGVuZGVkIFRFQSBBbGdvcml0aG1zCisgKgorICogVGhlIFRFQSBhbmQgWHRlbmRlZCBURUEgYWxnb3JpdGhtcyB3ZXJlIGRldmVsb3BlZCBieSBEYXZpZCBXaGVlbGVyIAorICogYW5kIFJvZ2VyIE5lZWRoYW0gYXQgdGhlIENvbXB1dGVyIExhYm9yYXRvcnkgb2YgQ2FtYnJpZGdlIFVuaXZlcnNpdHkuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDA0IEFhcm9uIEdyb3RoZSBhamdyb3RoZUB5YWhvby5jb20KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqLworCisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L21tLmg+CisjaW5jbHVkZSA8YXNtL3NjYXR0ZXJsaXN0Lmg+CisjaW5jbHVkZSA8bGludXgvY3J5cHRvLmg+CisKKyNkZWZpbmUgVEVBX0tFWV9TSVpFCQkxNgorI2RlZmluZSBURUFfQkxPQ0tfU0laRQkJOAorI2RlZmluZSBURUFfUk9VTkRTCQkzMgorI2RlZmluZSBURUFfREVMVEEJCTB4OWUzNzc5YjkKKworI2RlZmluZSBYVEVBX0tFWV9TSVpFCQkxNgorI2RlZmluZSBYVEVBX0JMT0NLX1NJWkUJCTgKKyNkZWZpbmUgWFRFQV9ST1VORFMJCTMyCisjZGVmaW5lIFhURUFfREVMVEEJCTB4OWUzNzc5YjkKKworI2RlZmluZSB1MzJfaW4oeCkgbGUzMl90b19jcHUoKihjb25zdCBfX2xlMzIgKikoeCkpCisjZGVmaW5lIHUzMl9vdXQodG8sIGZyb20pICgqKF9fbGUzMiAqKSh0bykgPSBjcHVfdG9fbGUzMihmcm9tKSkKKworc3RydWN0IHRlYV9jdHggeworCXUzMiBLRVlbNF07Cit9OworCitzdHJ1Y3QgeHRlYV9jdHggeworCXUzMiBLRVlbNF07Cit9OworCitzdGF0aWMgaW50IHRlYV9zZXRrZXkodm9pZCAqY3R4X2FyZywgY29uc3QgdTggKmluX2tleSwKKyAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGtleV9sZW4sIHUzMiAqZmxhZ3MpCit7IAorCisJc3RydWN0IHRlYV9jdHggKmN0eCA9IGN0eF9hcmc7CisJCisJaWYgKGtleV9sZW4gIT0gMTYpCisJeworCQkqZmxhZ3MgfD0gQ1JZUFRPX1RGTV9SRVNfQkFEX0tFWV9MRU47CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWN0eC0+S0VZWzBdID0gdTMyX2luIChpbl9rZXkpOworCWN0eC0+S0VZWzFdID0gdTMyX2luIChpbl9rZXkgKyA0KTsKKwljdHgtPktFWVsyXSA9IHUzMl9pbiAoaW5fa2V5ICsgOCk7CisJY3R4LT5LRVlbM10gPSB1MzJfaW4gKGluX2tleSArIDEyKTsKKworCXJldHVybiAwOyAKKworfQorCitzdGF0aWMgdm9pZCB0ZWFfZW5jcnlwdCh2b2lkICpjdHhfYXJnLCB1OCAqZHN0LCBjb25zdCB1OCAqc3JjKQoreyAKKwl1MzIgeSwgeiwgbiwgc3VtID0gMDsKKwl1MzIgazAsIGsxLCBrMiwgazM7CisKKwlzdHJ1Y3QgdGVhX2N0eCAqY3R4ID0gY3R4X2FyZzsKKworCXkgPSB1MzJfaW4gKHNyYyk7CisJeiA9IHUzMl9pbiAoc3JjICsgNCk7CisKKwlrMCA9IGN0eC0+S0VZWzBdOworCWsxID0gY3R4LT5LRVlbMV07CisJazIgPSBjdHgtPktFWVsyXTsKKwlrMyA9IGN0eC0+S0VZWzNdOworCisJbiA9IFRFQV9ST1VORFM7CisKKwl3aGlsZSAobi0tID4gMCkgeworCQlzdW0gKz0gVEVBX0RFTFRBOworCQl5ICs9ICgoeiA8PCA0KSArIGswKSBeICh6ICsgc3VtKSBeICgoeiA+PiA1KSArIGsxKTsKKwkJeiArPSAoKHkgPDwgNCkgKyBrMikgXiAoeSArIHN1bSkgXiAoKHkgPj4gNSkgKyBrMyk7CisJfQorCQorCXUzMl9vdXQgKGRzdCwgeSk7CisJdTMyX291dCAoZHN0ICsgNCwgeik7Cit9CisKK3N0YXRpYyB2b2lkIHRlYV9kZWNyeXB0KHZvaWQgKmN0eF9hcmcsIHU4ICpkc3QsIGNvbnN0IHU4ICpzcmMpCit7IAorCXUzMiB5LCB6LCBuLCBzdW07CisJdTMyIGswLCBrMSwgazIsIGszOworCisJc3RydWN0IHRlYV9jdHggKmN0eCA9IGN0eF9hcmc7CisKKwl5ID0gdTMyX2luIChzcmMpOworCXogPSB1MzJfaW4gKHNyYyArIDQpOworCisJazAgPSBjdHgtPktFWVswXTsKKwlrMSA9IGN0eC0+S0VZWzFdOworCWsyID0gY3R4LT5LRVlbMl07CisJazMgPSBjdHgtPktFWVszXTsKKworCXN1bSA9IFRFQV9ERUxUQSA8PCA1OworCisJbiA9IFRFQV9ST1VORFM7CisKKwl3aGlsZSAobi0tID4gMCkgeworCQl6IC09ICgoeSA8PCA0KSArIGsyKSBeICh5ICsgc3VtKSBeICgoeSA+PiA1KSArIGszKTsKKwkJeSAtPSAoKHogPDwgNCkgKyBrMCkgXiAoeiArIHN1bSkgXiAoKHogPj4gNSkgKyBrMSk7CisJCXN1bSAtPSBURUFfREVMVEE7CisJfQorCQorCXUzMl9vdXQgKGRzdCwgeSk7CisJdTMyX291dCAoZHN0ICsgNCwgeik7CisKK30KKworc3RhdGljIGludCB4dGVhX3NldGtleSh2b2lkICpjdHhfYXJnLCBjb25zdCB1OCAqaW5fa2V5LAorICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQga2V5X2xlbiwgdTMyICpmbGFncykKK3sgCisKKwlzdHJ1Y3QgeHRlYV9jdHggKmN0eCA9IGN0eF9hcmc7CisJCisJaWYgKGtleV9sZW4gIT0gMTYpCisJeworCQkqZmxhZ3MgfD0gQ1JZUFRPX1RGTV9SRVNfQkFEX0tFWV9MRU47CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWN0eC0+S0VZWzBdID0gdTMyX2luIChpbl9rZXkpOworCWN0eC0+S0VZWzFdID0gdTMyX2luIChpbl9rZXkgKyA0KTsKKwljdHgtPktFWVsyXSA9IHUzMl9pbiAoaW5fa2V5ICsgOCk7CisJY3R4LT5LRVlbM10gPSB1MzJfaW4gKGluX2tleSArIDEyKTsKKworCXJldHVybiAwOyAKKworfQorCitzdGF0aWMgdm9pZCB4dGVhX2VuY3J5cHQodm9pZCAqY3R4X2FyZywgdTggKmRzdCwgY29uc3QgdTggKnNyYykKK3sgCisKKwl1MzIgeSwgeiwgc3VtID0gMDsKKwl1MzIgbGltaXQgPSBYVEVBX0RFTFRBICogWFRFQV9ST1VORFM7CisKKwlzdHJ1Y3QgeHRlYV9jdHggKmN0eCA9IGN0eF9hcmc7CisKKwl5ID0gdTMyX2luIChzcmMpOworCXogPSB1MzJfaW4gKHNyYyArIDQpOworCisJd2hpbGUgKHN1bSAhPSBsaW1pdCkgeworCQl5ICs9ICh6IDw8IDQgXiB6ID4+IDUpICsgKHogXiBzdW0pICsgY3R4LT5LRVlbc3VtJjNdOyAKKwkJc3VtICs9IFhURUFfREVMVEE7CisJCXogKz0gKHkgPDwgNCBeIHkgPj4gNSkgKyAoeSBeIHN1bSkgKyBjdHgtPktFWVtzdW0+PjExICYzXTsgCisJfQorCQorCXUzMl9vdXQgKGRzdCwgeSk7CisJdTMyX291dCAoZHN0ICsgNCwgeik7CisKK30KKworc3RhdGljIHZvaWQgeHRlYV9kZWNyeXB0KHZvaWQgKmN0eF9hcmcsIHU4ICpkc3QsIGNvbnN0IHU4ICpzcmMpCit7IAorCisJdTMyIHksIHosIHN1bTsKKwlzdHJ1Y3QgdGVhX2N0eCAqY3R4ID0gY3R4X2FyZzsKKworCXkgPSB1MzJfaW4gKHNyYyk7CisJeiA9IHUzMl9pbiAoc3JjICsgNCk7CisKKwlzdW0gPSBYVEVBX0RFTFRBICogWFRFQV9ST1VORFM7CisKKwl3aGlsZSAoc3VtKSB7CisJCXogLT0gKHkgPDwgNCBeIHkgPj4gNSkgKyAoeSBeIHN1bSkgKyBjdHgtPktFWVtzdW0+PjExICYgM107CisJCXN1bSAtPSBYVEVBX0RFTFRBOworCQl5IC09ICh6IDw8IDQgXiB6ID4+IDUpICsgKHogXiBzdW0pICsgY3R4LT5LRVlbc3VtICYgM107CisJfQorCQorCXUzMl9vdXQgKGRzdCwgeSk7CisJdTMyX291dCAoZHN0ICsgNCwgeik7CisKK30KKworc3RhdGljIHN0cnVjdCBjcnlwdG9fYWxnIHRlYV9hbGcgPSB7CisJLmNyYV9uYW1lCQk9CSJ0ZWEiLAorCS5jcmFfZmxhZ3MJCT0JQ1JZUFRPX0FMR19UWVBFX0NJUEhFUiwKKwkuY3JhX2Jsb2Nrc2l6ZQkJPQlURUFfQkxPQ0tfU0laRSwKKwkuY3JhX2N0eHNpemUJCT0Jc2l6ZW9mIChzdHJ1Y3QgdGVhX2N0eCksCisJLmNyYV9tb2R1bGUJCT0JVEhJU19NT0RVTEUsCisJLmNyYV9saXN0CQk9CUxJU1RfSEVBRF9JTklUKHRlYV9hbGcuY3JhX2xpc3QpLAorCS5jcmFfdQkJCT0JeyAuY2lwaGVyID0geworCS5jaWFfbWluX2tleXNpemUJPQlURUFfS0VZX1NJWkUsCisJLmNpYV9tYXhfa2V5c2l6ZQk9CVRFQV9LRVlfU0laRSwKKwkuY2lhX3NldGtleQkJPSAJdGVhX3NldGtleSwKKwkuY2lhX2VuY3J5cHQJCT0JdGVhX2VuY3J5cHQsCisJLmNpYV9kZWNyeXB0CQk9CXRlYV9kZWNyeXB0IH0gfQorfTsKKworc3RhdGljIHN0cnVjdCBjcnlwdG9fYWxnIHh0ZWFfYWxnID0geworCS5jcmFfbmFtZQkJPQkieHRlYSIsCisJLmNyYV9mbGFncwkJPQlDUllQVE9fQUxHX1RZUEVfQ0lQSEVSLAorCS5jcmFfYmxvY2tzaXplCQk9CVhURUFfQkxPQ0tfU0laRSwKKwkuY3JhX2N0eHNpemUJCT0Jc2l6ZW9mIChzdHJ1Y3QgeHRlYV9jdHgpLAorCS5jcmFfbW9kdWxlCQk9CVRISVNfTU9EVUxFLAorCS5jcmFfbGlzdAkJPQlMSVNUX0hFQURfSU5JVCh4dGVhX2FsZy5jcmFfbGlzdCksCisJLmNyYV91CQkJPQl7IC5jaXBoZXIgPSB7CisJLmNpYV9taW5fa2V5c2l6ZQk9CVhURUFfS0VZX1NJWkUsCisJLmNpYV9tYXhfa2V5c2l6ZQk9CVhURUFfS0VZX1NJWkUsCisJLmNpYV9zZXRrZXkJCT0gCXh0ZWFfc2V0a2V5LAorCS5jaWFfZW5jcnlwdAkJPQl4dGVhX2VuY3J5cHQsCisJLmNpYV9kZWNyeXB0CQk9CXh0ZWFfZGVjcnlwdCB9IH0KK307CisKK3N0YXRpYyBpbnQgX19pbml0IGluaXQodm9pZCkKK3sKKwlpbnQgcmV0ID0gMDsKKwkKKwlyZXQgPSBjcnlwdG9fcmVnaXN0ZXJfYWxnKCZ0ZWFfYWxnKTsKKwlpZiAocmV0IDwgMCkKKwkJZ290byBvdXQ7CisKKwlyZXQgPSBjcnlwdG9fcmVnaXN0ZXJfYWxnKCZ4dGVhX2FsZyk7CisJaWYgKHJldCA8IDApIHsKKwkJY3J5cHRvX3VucmVnaXN0ZXJfYWxnKCZ0ZWFfYWxnKTsKKwkJZ290byBvdXQ7CisJfQorCitvdXQ6CQorCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIF9fZXhpdCBmaW5pKHZvaWQpCit7CisJY3J5cHRvX3VucmVnaXN0ZXJfYWxnKCZ0ZWFfYWxnKTsKKwljcnlwdG9fdW5yZWdpc3Rlcl9hbGcoJnh0ZWFfYWxnKTsKK30KKworTU9EVUxFX0FMSUFTKCJ4dGVhIik7CisKK21vZHVsZV9pbml0KGluaXQpOworbW9kdWxlX2V4aXQoZmluaSk7CisKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9ERVNDUklQVElPTigiVEVBICYgWFRFQSBDcnlwdG9ncmFwaGljIEFsZ29yaXRobXMiKTsKZGlmZiAtLWdpdCBhL2NyeXB0by90Z3IxOTIuYyBiL2NyeXB0by90Z3IxOTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMGE0NWNmCi0tLSAvZGV2L251bGwKKysrIGIvY3J5cHRvL3RncjE5Mi5jCkBAIC0wLDAgKzEsNzM1IEBACisvKgorICogQ3J5cHRvZ3JhcGhpYyBBUEkuCisgKgorICogVGlnZXIgaGFzaGluZyBBbGdvcml0aG0KKyAqCisgKiAgICAgIENvcHlyaWdodCAoQykgMTk5OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAqCisgKiBUaGUgVGlnZXIgYWxnb3JpdGhtIHdhcyBkZXZlbG9wZWQgYnkgUm9zcyBBbmRlcnNvbiBhbmQgRWxpIEJpaGFtLgorICogSXQgd2FzIG9wdGltaXplZCBmb3IgNjQtYml0IHByb2Nlc3NvcnMgd2hpbGUgc3RpbGwgZGVsaWV2ZXJpbmcKKyAqIGRlY2VudCBwZXJmb3JtYW5jZSBvbiAzMiBhbmQgMTYtYml0IHByb2Nlc3NvcnMuCisgKgorICogVGhpcyB2ZXJzaW9uIGlzIGRlcml2ZWQgZnJvbSB0aGUgR251UEcgaW1wbGVtZW50YXRpb24gYW5kIHRoZQorICogVGlnZXItUGVybCBpbnRlcmZhY2Ugd3JpdHRlbiBieSBSYWZhZWwgU2V2aWxsYQorICoKKyAqIEFkYXB0ZWQgZm9yIExpbnV4IEtlcm5lbCBDcnlwdG8gIGJ5IEFhcm9uIEdyb3RoZSAKKyAqIGFqZ3JvdGhlQHlhaG9vLmNvbSwgRmVicnVhcnkgMjIsIDIwMDUKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqLworI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9tbS5oPgorI2luY2x1ZGUgPGFzbS9zY2F0dGVybGlzdC5oPgorI2luY2x1ZGUgPGxpbnV4L2NyeXB0by5oPgorCisjZGVmaW5lIFRHUjE5Ml9ESUdFU1RfU0laRSAyNAorI2RlZmluZSBUR1IxNjBfRElHRVNUX1NJWkUgMjAKKyNkZWZpbmUgVEdSMTI4X0RJR0VTVF9TSVpFIDE2CisKKyNkZWZpbmUgVEdSMTkyX0JMT0NLX1NJWkUgIDY0CisKK3N0cnVjdCB0Z3IxOTJfY3R4IHsKKwl1NjQgYSwgYiwgYzsKKwl1OCBoYXNoWzY0XTsKKwlpbnQgY291bnQ7CisJdTMyIG5ibG9ja3M7Cit9OworCitzdGF0aWMgY29uc3QgdTY0IHNib3gxWzI1Nl0gPSB7CisJMHgwMmFhYjE3Y2Y3ZTkwYzVlVUxMLCAweGFjNDI0YjAzZTI0M2E4ZWNVTEwsIDB4NzJjZDViZTMwZGQ1ZmNkM1VMTCwKKwkweDZkMDE5YjkzZjZmOTdmM2FVTEwsIDB4Y2Q5OTc4ZmZkMjFmOTE5M1VMTCwgMHg3NTczYTFjOTcwODAyOWUyVUxMLAorCTB4YjE2NDMyNmI5MjJhODNjM1VMTCwgMHg0Njg4M2VlZTA0OTE1ODcwVUxMLCAweGVhYWNlMzA1NzEwM2VjZTZVTEwsCisJMHhjNTQxNjliODA4YTM1MzVjVUxMLCAweDRjZTc1NDkxOGRkZWM0N2NVTEwsIDB4MGFhMmY0ZGZkYzBkZjQwY1VMTCwKKwkweDEwYjc2ZjE4YTc0ZGJlZmFVTEwsIDB4YzZjY2I2MjM1YWQxYWI2YVVMTCwgMHgxMzcyNjEyMTU3MmZlMmZmVUxMLAorCTB4MWE0ODhjNmYxOTlkOTIxZVVMTCwgMHg0YmM5ZjlmNGRhMDAwN2NhVUxMLCAweDI2ZjVlNmY2ZTg1MjQxYzdVTEwsCisJMHg4NTkwNzlkYmVhNTk0N2I2VUxMLCAweDRmMTg4NWM1Yzk5ZThjOTJVTEwsIDB4ZDc4ZTc2MWVhOTZmODY0YlVMTCwKKwkweDhlMzY0MjhjNTJiNWMxN2RVTEwsIDB4NjljZjY4MjczNzMwNjNjMVVMTCwgMHhiNjA3YzkzZDliYjRjNTZlVUxMLAorCTB4N2Q4MjBlNzYwZTc2YjVlYVVMTCwgMHg2NDVjOWNjNmYwN2ZkYzQyVUxMLCAweGJmMzhhMDc4MjQzMzQyZTBVTEwsCisJMHg1ZjZiMzQzYzlkMmU3ZDA0VUxMLCAweGYyYzI4YWViNjAwYjBlYzZVTEwsIDB4NmMwZWQ4NWY3MjU0YmNhY1VMTCwKKwkweDcxNTkyMjgxYTRkYjRmZTVVTEwsIDB4MTk2N2ZhNjljZTBmZWQ5ZlVMTCwgMHhmZDUyOTNmOGI5NjU0NWRiVUxMLAorCTB4Yzg3OWU5ZDdmMmE3NjAwYlVMTCwgMHg4NjAyNDg5MjAxOTMxOTRlVUxMLCAweGE0Zjk1MzNiMmQ5Y2MwYjNVTEwsCisJMHg5MDUzODM2YzE1OTU3NjEzVUxMLCAweGRiNmRjZjhhZmMzNTdiZjFVTEwsIDB4MThiZWVhN2E3YTM3MGY1N1VMTCwKKwkweDAzNzExN2NhNTBiOTkwNjZVTEwsIDB4NmFiMzBhOTc3NDQyNGEzNVVMTCwgMHhmNGU5MmYwMmUzMjUyNDliVUxMLAorCTB4NzczOWRiMDcwNjFjY2FlMVVMTCwgMHhkOGYzYjQ5Y2VjYTQyYTA1VUxMLCAweGJkNTZiZTNmNTEzODJmNzNVTEwsCisJMHg0NWZhZWQ1ODQzYjBiYjI4VUxMLCAweDFjODEzZDVjMTFiZjFmODNVTEwsIDB4OGFmMGU0YjZkNzVmYTE2OVVMTCwKKwkweDMzZWUxOGE0ODdhZDk5OTlVTEwsIDB4M2MyNmU4ZWFiMWM5NDQxMFVMTCwgMHhiNTEwMTAyYmMwYTgyMmY5VUxMLAorCTB4MTQxZWVmMzEwY2U2MTIzYlVMTCwgMHhmYzY1YjkwMDU5ZGRiMTU0VUxMLCAweGUwMTU4NjQwYzVlMGU2MDdVTEwsCisJMHg4ODRlMDc5ODI2YzNhM2NmVUxMLCAweDkzMGQwZDk1MjNjNTM1ZmRVTEwsIDB4MzU2MzhkNzU0ZTlhMmIwMFVMTCwKKwkweDQwODVmY2NmNDA0NjlkZDVVTEwsIDB4YzRiMTdhZDI4YmUyM2E0Y1VMTCwgMHhjYWIyZjBmYzZhM2U2YTJlVUxMLAorCTB4Mjg2MDk3MWE2Yjk0M2ZjZFVMTCwgMHgzZGRlNmVlMjEyZTMwNDQ2VUxMLCAweDYyMjJmMzJhZTAxNzY1YWVVTEwsCisJMHg1ZDU1MGJiNTQ3ODMwOGZlVUxMLCAweGE5ZWZhOThkYTBlZGEyMmFVTEwsIDB4YzM1MWE3MTY4NmM0MGRhN1VMTCwKKwkweDExMDU1ODZkOWM4NjdjODRVTEwsIDB4ZGNmZmVlODVmZGEyMjg1M1VMTCwgMHhjY2ZiZDAyNjJjNWVlZjc2VUxMLAorCTB4YmFmMjk0Y2I4OTkwZDIwMVVMTCwgMHhlNjk0NjRmNTJhZmFkOTc1VUxMLCAweDk0YjAxM2FmZGYxMzNlMTRVTEwsCisJMHgwNmE3ZDFhMzI4MjNjOTU4VUxMLCAweDZmOTVmZTUxMzBmNjExMTlVTEwsIDB4ZDkyYWIzNGU0NjJjMDZjMFVMTCwKKwkweGVkN2JkZTMzODg3YzcxZDJVTEwsIDB4Nzk3NDZkNmU2NTE4MzkzZVVMTCwgMHg1YmE0MTkzODVkNzEzMzI5VUxMLAorCTB4N2MxYmE2Yjk0OGE5NzU2NFVMTCwgMHgzMTk4N2MxOTdiZmRhYzY3VUxMLCAweGRlNmMyM2M0NGIwNTNkMDJVTEwsCisJMHg1ODFjNDlmZWQwMDJkNjRkVUxMLCAweGRkNDc0ZDYzMzgyNjE1NzFVTEwsIDB4YWE0NTQ2YzNlNDczZDA2MlVMTCwKKwkweDkyOGZjZTM0OTQ1NWY4NjBVTEwsIDB4NDgxNjFiYmFjYWFiOTRkOVVMTCwgMHg2MzkxMjQzMDc3MGU2ZjY4VUxMLAorCTB4NmVjOGE1ZTYwMmM2NjQxY1VMTCwgMHg4NzI4MjUxNTMzN2RkZDJiVUxMLCAweDJjZGE2YjQyMDM0YjcwMWJVTEwsCisJMHhiMDNkMzdjMTgxY2IwOTZkVUxMLCAweGUxMDg0MzgyNjZjNzFjNmZVTEwsIDB4MmIzMTgwYzdlYjUxYjI1NVVMTCwKKwkweGRmOTJiODJmOTZjMDhiYmNVTEwsIDB4NWM2OGM4YzBhNjMyZjNiYVVMTCwgMHg1NTA0Y2M4NjFjM2QwNTU2VUxMLAorCTB4YWJiZmE0ZTU1ZmIyNmI4ZlVMTCwgMHg0MTg0OGIwYWIzYmFjZWI0VUxMLCAweGIzMzRhMjczYWE0NDVkMzJVTEwsCisJMHhiY2E2OTZmMGE4NWFkODgxVUxMLCAweDI0ZjZlYzY1YjUyOGQ1NmNVTEwsIDB4MGNlMTUxMmU5MGY0NTI0YVVMTCwKKwkweDRlOWRkNzlkNTUwNmQzNWFVTEwsIDB4MjU4OTA1ZmFjNmNlOTc3OVVMTCwgMHgyMDE5Mjk1YjNlMTA5YjMzVUxMLAorCTB4ZjhhOTQ3OGI3M2EwNTRjY1VMTCwgMHgyOTI0ZjJmOTM0NDE3ZWIwVUxMLCAweDM5OTMzNTdkNTM2ZDFiYzRVTEwsCisJMHgzOGE4MWFjMjFkYjZmZjhiVUxMLCAweDQ3YzRmYmYxN2Q2MDE2YmZVTEwsIDB4MWUwZmFhZGQ3NjY3ZTNmNVVMTCwKKwkweDdhYmNmZjYyOTM4YmViOTZVTEwsIDB4YTc4ZGFkOTQ4ZmMxNzljOVVMTCwgMHg4ZjFmOThiNzI5MTFlNTBkVUxMLAorCTB4NjFlNDhlYWUyNzEyMWE5MVVMTCwgMHg0ZDYyZjdhZDMxODU5ODA4VUxMLCAweGVjZWJhMzQ1ZWY1Y2VhZWJVTEwsCisJMHhmNWNlYjI1ZWJjOTY4NGNlVUxMLCAweGY2MzNlMjBjYjdmNzYyMjFVTEwsIDB4YTMyY2RmMDZhYjgyOTNlNFVMTCwKKwkweDk4NWEyMDJjYTVlZTJjYTRVTEwsIDB4Y2YwYjg0NDdjYzhhOGZiMVVMTCwgMHg5Zjc2NTI0NDk3OTg1OWEzVUxMLAorCTB4YThkNTE2YjFhMTI0MDAxN1VMTCwgMHgwYmQ3YmEzZWJiNWRjNzI2VUxMLCAweGU1NGJjYTU1Yjg2YWRiMzlVTEwsCisJMHgxZDdhM2FmZDZjNDc4MDYzVUxMLCAweDUxOWVjNjA4ZTc2NjllZGRVTEwsIDB4MGU1NzE1YTJkMTQ5YWEyM1VMTCwKKwkweDE3N2Q0NTcxODQ4ZmYxOTRVTEwsIDB4ZWViNTVmMzI0MTAxNGMyMlVMTCwgMHgwZjVlNWNhMTNhNmUyZWMyVUxMLAorCTB4ODAyOTkyN2I3NWY1YzM2MVVMTCwgMHhhZDEzOWZhYmMzZDZlNDM2VUxMLCAweDBkNWRmMWE5NGNjZjQwMmZVTEwsCisJMHgzZThiZDk0OGJlYTVkZmM4VUxMLCAweGE1YTBkMzU3YmQzZmY3N2VVTEwsIDB4YTJkMTJlMjUxZjc0ZjY0NVVMTCwKKwkweDY2ZmQ5ZTUyNWU4MWEwODJVTEwsIDB4MmUwYzkwY2U3ZjY4N2E0OVVMTCwgMHhjMmU4YmNiZWJhOTczYmM1VUxMLAorCTB4MDAwMDAxYmNlNTA5NzQ1ZlVMTCwgMHg0MjM3NzdiYmU2ZGFiM2Q2VUxMLCAweGQxNjYxYzdlYWVmMDZlYjVVTEwsCisJMHhhMTc4MWYzNTRkYWFjZmQ4VUxMLCAweDJkMTEyODRhMmIxNmFmZmNVTEwsIDB4ZjFmYzRmNjdmYTg5MWQxZlVMTCwKKwkweDczZWNjMjVkY2I5MjBhZGFVTEwsIDB4YWU2MTBjMjJjMmExMjY1MVVMTCwgMHg5NmUwYTgxMGQzNTZiNzhhVUxMLAorCTB4NWE5YTM4MWYyZmU3ODcwZlVMTCwgMHhkNWFkNjJlZGU5NGU1NTMwVUxMLCAweGQyMjVlNWU4MzY4ZDE0MjdVTEwsCisJMHg2NTk3N2I3MGM3YWY0NjMxVUxMLCAweDk5Zjg4OWIyZGUzOWQ3NGZVTEwsIDB4MjMzZjMwYmY1NGUxZDE0M1VMTCwKKwkweDlhOTY3NWQzZDlhNjNjOTdVTEwsIDB4NTQ3MDU1NGZmMzM0ZjlhOFVMTCwgMHgxNjZhY2I3NDRhNGY1Njg4VUxMLAorCTB4NzBjNzRjYWFiMmU0YWVhZFVMTCwgMHhmMGQwOTE2NDZmMjk0ZDEyVUxMLCAweDU3YjgyYTg5Njg0MDMxZDFVTEwsCisJMHhlZmQ5NWE1YTYxYmUwYjZiVUxMLCAweDJmYmQxMmU5NjlmMmYyOWFVTEwsIDB4OWJkMzcwMTNmZWZmOWZlOFVMTCwKKwkweDNmOWIwNDA0ZDYwODVhMDZVTEwsIDB4NDk0MGMxZjMxNjZjZmUxNVVMTCwgMHgwOTU0MmM0ZGNkZjNkZWZiVUxMLAorCTB4YjRjNTIxODM4NWNkNWNlM1VMTCwgMHhjOTM1YjdkYzQ0NjJhNjQxVUxMLCAweDM0MTdmOGE2OGVkM2I2M2ZVTEwsCisJMHhiODA5NTkyOTViMjE1YjQwVUxMLCAweGY5OWNkYWVmM2I4Yzg1NzJVTEwsIDB4MDE4YzA2MTRmOGZjYjk1ZFVMTCwKKwkweDFiMTRhY2NkMWEzYWNkZjNVTEwsIDB4ODRkNDcxZjIwMGJiNzMyZFVMTCwgMHhjMWEzMTEwZTk1ZThkYTE2VUxMLAorCTB4NDMwYTcyMjBiZjFhODJiOFVMTCwgMHhiNzdlMDkwZDM5ZGYyMTBlVUxMLCAweDVlZjRiZDlmM2NkMDVlOWRVTEwsCisJMHg5ZDRmZjZkYTdlNTdhNDQ0VUxMLCAweGRhMWQ2MGUxODNkNGE1ZjhVTEwsIDB4YjI4N2MzODQxNzk5OGU0N1VMTCwKKwkweGZlM2VkYzEyMWJiMzE4ODZVTEwsIDB4YzdmZTNjY2M5ODBjY2JlZlVMTCwgMHhlNDZmYjU5MDE4OWJmZDAzVUxMLAorCTB4MzczMmZkNDY5YTRjNTdkY1VMTCwgMHg3ZWY3MDBhMDdjZjFhZDY1VUxMLCAweDU5YzY0NDY4YTMxZDg4NTlVTEwsCisJMHg3NjJmYjBiNGQ0NWI2MWY2VUxMLCAweDE1NWJhZWQwOTkwNDc3MThVTEwsIDB4Njg3NTVlNGMzZDUwYmFhNlVMTCwKKwkweGU5MjE0ZTdmMjJkOGI0ZGZVTEwsIDB4MmFkZGJmNTMyZWFjOTVmNFVMTCwgMHgzMmFlMzkwOWI0YmQwMTA5VUxMLAorCTB4ODM0ZGY1MzdiMDhlMzQ1MFVMTCwgMHhmYTIwOWRhODQyMjA3MjhkVUxMLCAweDllNjkxZDliOWVmZTIzZjdVTEwsCisJMHgwNDQ2ZDI4OGM0YWU4ZDdmVUxMLCAweDdiNGNjNTI0ZTE2OTc4NWJVTEwsIDB4MjFkODdmMDEzNWNhMTM4NVVMTCwKKwkweGNlYmI0MDBmMTM3YjhhYTVVTEwsIDB4MjcyZTJiNjY1ODA3OTZiZVVMTCwgMHgzNjEyMjY0MTI1YzJiMGRlVUxMLAorCTB4MDU3NzAyYmRhZDFlZmJiMlVMTCwgMHhkNGJhYmI4ZWFjZjg0YmU5VUxMLCAweDkxNTgzMTM5NjQxYmM2N2JVTEwsCisJMHg4YmRjMmRlMDgwMzZlMDI0VUxMLCAweDYwM2M4MTU2ZjQ5ZjY4ZWRVTEwsIDB4ZjdkMjM2ZjdkYmVmNTExMVVMTCwKKwkweDk3MjdjNDU5OGFkMjFlODBVTEwsIDB4YTA4YTA4OTY2NzBhNWZkN1VMTCwgMHhjYjRhOGY0MzA5ZWJhOWNiVUxMLAorCTB4ODFhZjU2NGIwZjcwMzZhMVVMTCwgMHhjMGI5OWFhNzc4MTk5YWJkVUxMLCAweDk1OWYxZWM4M2ZjOGU5NTJVTEwsCisJMHg4YzUwNTA3Nzc5NGE4MWI5VUxMLCAweDNhY2FhZjhmMDU2MzM4ZjBVTEwsIDB4MDdiNDNmNTA2MjdhNjc3OFVMTCwKKwkweDRhNDRhYjQ5ZjVlY2NjNzdVTEwsIDB4M2JjM2Q2ZTRiNjc5ZWU5OFVMTCwgMHg5Y2MwZDRkMWNmMTQxMDhjVUxMLAorCTB4NDQwNmMwMGIyMDZiYzhhMFVMTCwgMHg4MmExODg1NGM4ZDcyZDg5VUxMLCAweDY3ZTM2NmIzNWMzYzQzMmNVTEwsCisJMHhiOTIzZGQ2MTEwMmIzN2YyVUxMLCAweDU2YWIyNzc5ZDg4NDI3MWRVTEwsIDB4YmU4M2UxYjBmZjE1MjVhZlVMTCwKKwkweGZiN2M2NWQ0MjE3ZTQ5YTlVTEwsIDB4NmJkYmUwZTc2ZDQ4ZTdkNFVMTCwgMHgwOGRmODI4NzQ1ZDkxNzllVUxMLAorCTB4MjJlYTZhOWFkZDUzYmQzNFVMTCwgMHhlMzZlMTQxYzU2MjIyMDBhVUxMLCAweDdmODA1ZDFiOGNiNzUwZWVVTEwsCisJMHhhZmU1YzdhNTlmNThlODM3VUxMLCAweGUyN2Y5OTZhNGZiMWMyM2NVTEwsIDB4ZDM4NjdkZmIwNzc1ZjBkMFVMTCwKKwkweGQwZTY3M2RlNmU4ODg5MWFVTEwsIDB4MTIzYWViOWVhZmI4NmMyNVVMTCwgMHgzMGYxZDVkNWMxNDViODk1VUxMLAorCTB4YmI0MzRhMmRlZTcyNjllN1VMTCwgMHg3OGNiNjdlY2Y5MzFmYTM4VUxMLCAweGYzM2IwMzcyMzIzYmJmOWNVTEwsCisJMHg1MmQ2NjMzNmZiMjc5Yzc0VUxMLCAweDUwNWYzM2FjMGFmYjRlYWFVTEwsIDB4ZThhNWNkOTlhMmNjZTE4N1VMTCwKKwkweDUzNDk3NDgwMWUyZDMwYmJVTEwsIDB4OGQyZDU3MTFkNTg3NmQ5MFVMTCwgMHgxZjFhNDEyODkxYmMwMzhlVUxMLAorCTB4ZDZlMmU3MWQ4MmU1NjY0OFVMTCwgMHg3NDAzNmMzYTQ5NzczMmI3VUxMLCAweDg5YjY3ZWQ5NjM2MWY1YWJVTEwsCisJMHhmZmVkOTVkOGYxZWEwMmEyVUxMLCAweGU3MmIzYmQ2MTQ2NGQ0M2RVTEwsIDB4YTYzMDBmMTcwYmRjNDgyMFVMTCwKKwkweGViYzE4NzYwZWQ3OGE3N2FVTEwKK307CisKK3N0YXRpYyBjb25zdCB1NjQgc2JveDJbMjU2XSA9IHsKKwkweGU2YTZiZTVhMDVhMTIxMzhVTEwsIDB4YjVhMTIyYTViNGY4N2M5OFVMTCwgMHg1NjNjNjA4OTE0MGI2OTkwVUxMLAorCTB4NGM0NmNiMmUzOTFmNWRkNVVMTCwgMHhkOTMyYWRkYmM5Yjc5NDM0VUxMLCAweDA4ZWE3MGU0MjAxNWFmZjVVTEwsCisJMHhkNzY1YTY2NzNlNDc4Y2YxVUxMLCAweGM0ZmI3NTdlYWIyNzhkOTlVTEwsIDB4ZGYxMWM2ODYyZDZlMDY5MlVMTCwKKwkweGRkZWI4NGYxMGQ3ZjNiMTZVTEwsIDB4NmYyZWY2MDRhNjY1ZWEwNFVMTCwgMHg0YThlMGYwZmYwZTBkZmIzVUxMLAorCTB4YTVlZGVlZjgzZGJjYmE1MVVMTCwgMHhmYzRmMGEyYTBlYTQzNzFlVUxMLCAweGU4M2UxZGE4NWNiMzg0MjlVTEwsCisJMHhkYzhmZjg4MmJhMWIxY2UyVUxMLCAweGNkNDU1MDVlODM1M2U4MGRVTEwsIDB4MThkMTlhMDBkNGRiMDcxN1VMTCwKKwkweDM0YTBjZmVkYTVmMzgxMDFVTEwsIDB4MGJlNzdlNTE4ODg3Y2FmMlVMTCwgMHgxZTM0MTQzOGIzYzQ1MTM2VUxMLAorCTB4ZTA1Nzk3ZjQ5MDg5Y2NmOVVMTCwgMHhmZmQyM2Y5ZGYyNTkxZDE0VUxMLCAweDU0M2RkYTIyODU5NWM1Y2RVTEwsCisJMHg2NjFmODFmZDk5MDUyYTMzVUxMLCAweDg3MzZlNjQxZGIwZjdiNzZVTEwsIDB4MTUyMjc3MjU0MThlNTMwN1VMTCwKKwkweGUyNWY3ZjQ2MTYyZWIyZmFVTEwsIDB4NDhhOGIyMTI2YzEzZDlmZVVMTCwgMHhhZmRjNTQxNzkyZTc2ZWVhVUxMLAorCTB4MDNkOTEyYmZjNmQxODk4ZlVMTCwgMHgzMWIxYWFmYTFiODNmNTFiVUxMLCAweGYxYWMyNzk2ZTQyYWI3ZDlVTEwsCisJMHg0MGEzYTdkN2ZjZDJlYmFjVUxMLCAweDEwNTYxMzZkMGFmYmJjYzVVTEwsIDB4Nzg4OWUxZGQ5YTZkMGM4NVVMTCwKKwkweGQzMzUyNTc4MmE3OTc0YWFVTEwsIDB4YTdlMjVkMDkwNzhhYzA5YlVMTCwgMHhiZDQxMzhiM2VhYzZlZGQwVUxMLAorCTB4OTIwYWJmYmU3MWViOWU3MFVMTCwgMHhhMmE1ZDBmNTRmYzI2MjVjVUxMLCAweGMwNTRlMzZiMGIxMjkwYTNVTEwsCisJMHhmNmRkNTlmZjYyZmU5MzJiVUxMLCAweDM1MzczNTQ1MTFhOGFjN2RVTEwsIDB4Y2E4NDVlOTE3MmZhZGNkNFVMTCwKKwkweDg0ZjgyYjYwMzI5ZDIwZGNVTEwsIDB4NzljNjJjZTFjZDY3MmYxOFVMTCwgMHg4YjA5YTJhZGQxMjQ2NDJjVUxMLAorCTB4ZDBjMWU5NmExOWQ5ZTcyNlVMTCwgMHg1YTc4NmE5YjRiYTk1MDBjVUxMLCAweDBlMDIwMzM2NjM0YzQzZjNVTEwsCisJMHhjMTdiNDc0YWViNjZkODIyVUxMLCAweDZhNzMxYWUzZWM5YmFhYzJVTEwsIDB4ODIyNjY2N2FlMDg0MDI1OFVMTCwKKwkweDY3ZDQ1Njc2OTFjYWVjYTVVTEwsIDB4MWQ5NDE1NWM0ODc1YWRiNVVMTCwgMHg2ZDAwZmQ5ODViODEzZmRmVUxMLAorCTB4NTEyODZlZmNiNzc0Y2QwNlVMTCwgMHg1ZTg4MzQ0NzFmYTc0NGFmVUxMLCAweGY3MmNhMGFlZTc2MWFlMmVVTEwsCisJMHhiZTQwZTRjZGFlZThlMDlhVUxMLCAweGU5OTcwYmJiNTExOGY2NjVVTEwsIDB4NzI2ZTRiZWIzM2RmMTk2NFVMTCwKKwkweDcwM2IwMDA3MjkxOTk3NjJVTEwsIDB4NDYzMWQ4MTZmNWVmMzBhN1VMTCwgMHhiODgwYjViNTE1MDRhNmJlVUxMLAorCTB4NjQxNzkzYzM3ZWQ4NGI2Y1VMTCwgMHg3YjIxZWQ3N2Y2ZTk3ZDk2VUxMLCAweDc3NjMwNjMxMmVmOTZiNzNVTEwsCisJMHhhZTUyODk0OGU4NmZmM2Y0VUxMLCAweDUzZGJkN2YyODZhM2Y4ZjhVTEwsIDB4MTZjYWRjZTc0Y2ZjMTA2M1VMTCwKKwkweDAwNWMxOWJkZmE1MmM2ZGRVTEwsIDB4Njg4NjhmNWQ2NGQ0NmFkM1VMTCwgMHgzYTlkNTEyY2NmMWUxODZhVUxMLAorCTB4MzY3ZTYyYzIzODU2NjBhZVVMTCwgMHhlMzU5ZTdlYTc3ZGNiMWQ3VUxMLCAweDUyNmMwNzczNzQ5YWJlNmVVTEwsCisJMHg3MzVhZTVmOWQwOWY3MzRiVUxMLCAweDQ5M2ZjN2NjOGE1NThiYThVTEwsIDB4YjBiOWMxNTMzMDQxYWI0NVVMTCwKKwkweDMyMTk1OGJhNDcwYTU5YmRVTEwsIDB4ODUyZGIwMGI1ZjQ2YzM5M1VMTCwgMHg5MTIwOWIyYmQzMzZiMGU1VUxMLAorCTB4NmU2MDRmN2Q2NTllZjE5ZlVMTCwgMHhiOTlhOGFlMjc4MmNjYjI0VUxMLCAweGNjZjUyYWI2YzgxNGM0YzdVTEwsCisJMHg0NzI3ZDlhZmJlMTE3MjdiVUxMLCAweDdlOTUwZDBjMDEyMWIzNGRVTEwsIDB4NzU2ZjQzNTY3MGFkNDcxZlVMTCwKKwkweGY1YWRkNDQyNjE1YTY4NDlVTEwsIDB4NGU4N2UwOTk4MGI5OTU3YVVMTCwgMHgyYWNmYTFkZjUwYWVlMzU1VUxMLAorCTB4ZDg5ODI2M2FmZDJmZDU1NlVMTCwgMHhjOGY0OTI0ZGQ4MGM4ZmQ2VUxMLCAweGNmOTljYTNkNzU0YTE3M2FVTEwsCisJMHhmZTQ3N2JhY2FmOTFiZjNjVUxMLCAweGVkNTM3MWY2ZDY5MGMxMmRVTEwsIDB4ODMxYTVjMjg1ZTY4NzA5NFVMTCwKKwkweGM1ZDNjOTBhMzcwOGEwYTRVTEwsIDB4MGY3ZjkwMzcxN2QwNjU4MFVMTCwgMHgxOWY5YmIxM2I4ZmRmMjdmVUxMLAorCTB4YjFiZDZmMWI0ZDUwMjg0M1VMTCwgMHgxYzc2MWJhMzhmZmY0MDEyVUxMLCAweDBkMTUzMGM0ZTJlMjFmM2JVTEwsCisJMHg4OTQzY2U2OWE3MzcyYzhhVUxMLCAweGU1MTg0ZTExZmViNWNlNjZVTEwsIDB4NjE4YmRiODBiZDczNjYyMVVMTCwKKwkweDdkMjliYWQ2OGI1NzRkMGJVTEwsIDB4ODFiYjYxM2UyNWU2ZmU1YlVMTCwgMHgwNzFjOWMxMGJjMDc5MTNmVUxMLAorCTB4YzdiZWViNzkwOWFjMmQ5N1VMTCwgMHhjM2U1OGQzNTNiYzVkNzU3VUxMLCAweGViMDE3ODkyZjM4ZjYxZThVTEwsCisJMHhkNGVmZmI5YzliMWNjMjFhVUxMLCAweDk5NzI3ZDI2ZjQ5NGY3YWJVTEwsIDB4YTNlMDYzYTI5NTZiM2UwM1VMTCwKKwkweDlkNGE4YjlhNGFhMDljMzBVTEwsIDB4M2Y2YWI3ZDUwMDA5MGZiNFVMTCwgMHg5Y2MwZjJhMDU3MjY4YWMwVUxMLAorCTB4M2RlZTlkMmRlZGJmNDJkMVVMTCwgMHgzMzBmNDljODc5NjBhOTcyVUxMLCAweGM2YjI3MjAyODc0MjFiNDFVTEwsCisJMHgwYWM1OWVjMDdjMDAzNjljVUxMLCAweGVmNGVhYzQ5Y2IzNTM0MjVVTEwsIDB4ZjQ1MDI0NGVlZjAxMjlkOFVMTCwKKwkweDhhY2M0NmU1Y2FmNGRlYjZVTEwsIDB4MmZmZWFiNjM5ODkyNjNmN1VMTCwgMHg4ZjdjYjlmZTVkN2E0NTc4VUxMLAorCTB4NWJkOGY3NjQ0ZTYzNDYzNVVMTCwgMHg0MjdhNzMxNWJmMmRjOTAwVUxMLCAweDE3ZDBjNGFhMjEyNTI2MWNVTEwsCisJMHgzOTkyNDg2YzkzNTE4ZTUwVUxMLCAweGI0Y2JmZWUwYTJkN2Q0YzNVTEwsIDB4N2M3NWQ2MjAyYzVkZGQ4ZFVMTCwKKwkweGRiYzI5NWQ4ZTM1YjZjNjFVTEwsIDB4NjBiMzY5ZDMwMjAzMmIxOVVMTCwgMHhjZTQyNjg1ZmRjZTQ0MTMyVUxMLAorCTB4MDZmM2RkYjlkZGY2NTYxMFVMTCwgMHg4ZWE0ZDIxZGI1ZTE0OGYwVUxMLCAweDIwYjBmY2U2MmZjZDQ5NmZVTEwsCisJMHgyYzFiOTEyMzU4YjBlZTMxVUxMLCAweGIyODMxN2I4MThmNWEzMDhVTEwsIDB4YTg5YzFlMTg5Y2E2ZDJjZlVMTCwKKwkweDBjNmIxODU3NmFhYWRiYzhVTEwsIDB4YjY1ZGVhYTkxMjk5ZmFlM1VMTCwgMHhmYjJiNzk0YjdmMTAyN2U3VUxMLAorCTB4MDRlNDMxN2Y0NDNiNWJlYlVMTCwgMHg0Yjg1MmQzMjU5MzlkMGE2VUxMLCAweGQ1YWU2YmVlZmIyMDdmZmNVTEwsCisJMHgzMDk2ODJiMjgxYzdkMzc0VUxMLCAweGJhZTMwOWExOTRjM2I0NzVVTEwsIDB4OGNjM2Y5N2IxM2I0OWYwNVVMTCwKKwkweDk4YTk0MjJmZjgyOTM5NjdVTEwsIDB4MjQ0YjE2YjAxMDc2ZmY3Y1VMTCwgMHhmOGJmNTcxYzY2M2Q2N2VlVUxMLAorCTB4MWYwZDY3NThlZWUzMGRhMVVMTCwgMHhjOWI2MTFkOTdhZGViOWI3VUxMLCAweGI3YWZkNTg4N2I2YzU3YTJVTEwsCisJMHg2MjkwYWU4NDZiOTg0ZmUxVUxMLCAweDk0ZGY0Y2RlYWNjMWE1ZmRVTEwsIDB4MDU4YTViZDFjNTQ4M2FmZlVMTCwKKwkweDYzMTY2Y2MxNDJiYTNjMzdVTEwsIDB4OGRiODUyNmViMmY3NmY0MFVMTCwgMHhlMTA4ODAwMzZmMGQ2ZDRlVUxMLAorCTB4OWUwNTIzYzk5NzFkMzExZFVMTCwgMHg0NWVjMjgyNGNjN2NkNjkxVUxMLCAweDU3NWI4MzU5ZTYyMzgyYzlVTEwsCisJMHhmYTllNDAwZGM0ODg5OTk1VUxMLCAweGQxODIzZWNiNDU3MjE1NjhVTEwsIDB4ZGFmZDk4M2I4MjA2MDgyZlVMTCwKKwkweGFhN2QyOTA4MjM4NmE4Y2JVTEwsIDB4MjY5ZmNkNDQwM2I4NzU4OFVMTCwgMHgxYjkxZjVmNzI4YmRkMWUwVUxMLAorCTB4ZTQ2NjlmMzkwNDAyMDFmNlVMTCwgMHg3YTFkN2MyMThjZjA0YWRlVUxMLCAweDY1NjIzYzI5ZDc5Y2U1Y2VVTEwsCisJMHgyMzY4NDQ5MDk2YzAwYmIxVUxMLCAweGFiOWJmMTg3OWRhNTAzYmFVTEwsIDB4YmMyM2VjYjFhNDU4MDU4ZVVMTCwKKwkweDlhNThkZjAxYmI0MDFlY2NVTEwsIDB4YTA3MGU4NjhhODVmMTQzZFVMTCwgMHg0ZmYxODgzMDdkZjIyMzllVUxMLAorCTB4MTRkNTY1YjQxYTY0MTE4M1VMTCwgMHhlZTEzMzM3NDUyNzAxNjAyVUxMLCAweDk1MGUzZGNmM2YyODVlMDlVTEwsCisJMHg1OTkzMDI1NGI5YzgwOTUzVUxMLCAweDNiZjI5OTQwODkzMGRhNmRVTEwsIDB4YTk1NTk0M2Y1MzY5MTM4N1VMTCwKKwkweGExNWVkZWNhYTljYjg3ODRVTEwsIDB4MjkxNDIxMjczNTJiZTlhMFVMTCwgMHg3NmYwMzcxZmZmNGU3YWZiVUxMLAorCTB4MDIzOWY0NTAyNzRmMjIyOFVMTCwgMHhiYjA3M2FmMDFkNWU4NjhiVUxMLCAweGJmYzgwNTcxYzEwZTk2YzFVTEwsCisJMHhkMjY3MDg4NTY4MjIyZTIzVUxMLCAweDk2NzFhM2Q0OGU4MGI1YjBVTEwsIDB4NTViNWQzOGFlMTkzYmI4MVVMTCwKKwkweDY5M2FlMmQwYTE4YjA0YjhVTEwsIDB4NWM0OGI0ZWNhZGQ1MzM1ZlVMTCwgMHhmZDc0M2IxOTQ5MTZhMWNhVUxMLAorCTB4MjU3NzAxODEzNGJlOThjNFVMTCwgMHhlNzc5ODdlODNjNTRhNGFkVUxMLCAweDI4ZTExMDE0ZGEzM2UxYjlVTEwsCisJMHgyNzBjYzU5ZTIyNmFhMjEzVUxMLCAweDcxNDk1Zjc1NmQxYTVmNjBVTEwsIDB4OWJlODUzZmI2MGFmZWY3N1VMTCwKKwkweGFkYzc4NmE3Zjc0NDNkYmZVTEwsIDB4MDkwNDQ1NjE3M2IyOWE4MlVMTCwgMHg1OGJjN2E2NmMyMzJiZDVlVUxMLAorCTB4ZjMwNjU1OGM2NzNhYzhiMlVMTCwgMHg0MWY2MzljNmI2Yzk3NzJhVUxMLCAweDIxNmRlZmU5OWZkYTM1ZGFVTEwsCisJMHgxMTY0MGNjNzFjN2JlNjE1VUxMLCAweDkzYzQzNjk0NTY1YzU1MjdVTEwsIDB4ZWEwMzhlNjI0Njc3NzgzOVVMTCwKKwkweGY5YWJmM2NlNWEzZTI0NjlVTEwsIDB4NzQxZTc2OGQwZmQzMTJkMlVMTCwgMHgwMTQ0Yjg4M2NlZDY1MmM2VUxMLAorCTB4YzIwYjVhNWJhMzNmODU1MlVMTCwgMHgxYWU2OTYzM2MzNDM1YTlkVUxMLCAweDk3YTI4Y2E0MDg4Y2ZkZWNVTEwsCisJMHg4ODI0YTQzYzFlOTZmNDIwVUxMLCAweDM3NjEyZmE2NmVlZWE3NDZVTEwsIDB4NmI0Y2IxNjVmOWNmMGU1YVVMTCwKKwkweDQzYWExYzA2YTBhYmZiNGFVTEwsIDB4N2Y0ZGMyNmZmMTYyNzk2YlVMTCwgMHg2Y2JhY2M4ZTU0ZWQ5YjBmVUxMLAorCTB4YTZiN2ZmZWZkMmJiMjUzZVVMTCwgMHgyZTI1YmM5NWIwYTI5ZDRmVUxMLCAweDg2ZDZhNThiZGVmMTM4OGNVTEwsCisJMHhkZWQ3NGFjNTc2YjZmMDU0VUxMLCAweDgwMzBiZGJjMmI0NTgwNWRVTEwsIDB4M2M4MWFmNzBlOTRkOTI4OVVMTCwKKwkweDNlZmY2ZGRhOWUzMTAwZGJVTEwsIDB4YjM4ZGMzOWZkZmNjODg0N1VMTCwgMHgxMjM4ODU1MjhkMTdiODdlVUxMLAorCTB4ZjJkYTBlZDI0MGIxYjY0MlVMTCwgMHg0NGNlZmFkY2Q1NGJmOWE5VUxMLCAweDEzMTIyMDBlNDMzYzdlZTZVTEwsCisJMHg5ZmZjYzg0ZjNhNzhjNzQ4VUxMLCAweGYwY2QxZjcyMjQ4NTc2YmJVTEwsIDB4ZWM2OTc0MDUzNjM4Y2ZlNFVMTCwKKwkweDJiYTdiNjdjMGNlYzRlNGNVTEwsIDB4YWMyZjRkZjNlNWNlMzJlZFVMTCwgMHhjYjMzZDE0MzI2ZWE0YzExVUxMLAorCTB4YTRlOTA0NGNjNzdlNThiY1VMTCwgMHg1ZjUxMzI5M2Q5MzRmY2VmVUxMLCAweDVkYzk2NDU1MDZlNTU0NDRVTEwsCisJMHg1MGRlNDE4ZjMxN2RlNDBhVUxMLCAweDM4OGNiMzFhNjlkZGUyNTlVTEwsIDB4MmRiNGE4MzQ1NTgyMGE4NlVMTCwKKwkweDkwMTBhOTFlODQ3MTFhZTlVTEwsIDB4NGRmN2YwYjdiMTQ5ODM3MVVMTCwgMHhkNjJhMmVhYmMwOTc3MTc5VUxMLAorCTB4MjJmYWMwOTdhYThkNWMwZVVMTAorfTsKKworc3RhdGljIGNvbnN0IHU2NCBzYm94M1syNTZdID0geworCTB4ZjQ5ZmNjMmZmMWRhZjM5YlVMTCwgMHg0ODdmZDVjNjZmZjI5MjgxVUxMLCAweGU4YTMwNjY3ZmNkY2E4M2ZVTEwsCisJMHgyYzliNGJlM2QyZmNjZTYzVUxMLCAweGRhM2ZmNzRiOTNmYmJiYzJVTEwsIDB4MmZhMTY1ZDJmZTcwYmE2NlVMTCwKKwkweGExMDNlMjc5OTcwZTkzZDRVTEwsIDB4YmVjZGVjNzdiMGU0NWU3MVVMTCwgMHhjZmI0MWU3MjM5ODVlNDk3VUxMLAorCTB4YjcwYWFhMDI1ZWY3NTAxN1VMTCwgMHhkNDIzMDlmMDM4NDBiOGUwVUxMLCAweDhlZmMxYWQwMzU4OTg1NzlVTEwsCisJMHg5NmM2OTIwYmUyYjJhYmM1VUxMLCAweDY2YWY0MTYzMzc1YTkxNzJVTEwsIDB4MjE3NGFiZGNjYTcxMjdmYlVMTCwKKwkweGIzM2NjZWE2NGE3MmZmNDFVTEwsIDB4ZjA0YTQ5MzMwODMwNjZhNVVMTCwgMHg4ZDk3MGFjZGQ3Mjg5YWY1VUxMLAorCTB4OGY5NmU4ZTAzMWM4YzI1ZVVMTCwgMHhmM2ZlYzAyMjc2ODc1ZDQ3VUxMLCAweGVjN2JmMzEwMDU2MTkwZGRVTEwsCisJMHhmNWFkYjBhZWJiMGYxNDkxVUxMLCAweDliNTBmODg1MGZkNTg4OTJVTEwsIDB4NDk3NTQ4ODM1OGI3NGRlOFVMTCwKKwkweGEzMzU0ZmY2OTE1MzFjNjFVTEwsIDB4MDcwMmJiZTQ4MWQyYzZlZVVMTCwgMHg4OWZiMjQwNTdkZWRlZDk4VUxMLAorCTB4YWMzMDc1MTM4NTk2ZTkwMlVMTCwgMHgxZDJkMzU4MDE3Mjc3MmVkVUxMLCAweGViNzM4ZmMyOGU2YmMzMGRVTEwsCisJMHg1ODU0ZWY4ZjYzMDQ0MzI2VUxMLCAweDllNWM1MjMyNWFkZDNiYmVVTEwsIDB4OTBhYTUzY2YzMjVjNDYyM1VMTCwKKwkweGMxZDI0ZDUxMzQ5ZGQwNjdVTEwsIDB4MjA1MWNmZWVhNjllYTYyNFVMTCwgMHgxMzIyMGYwYTg2MmU3ZTRmVUxMLAorCTB4Y2UzOTM5OTQwNGUwNDg2NFVMTCwgMHhkOWM0MmNhNDcwODZmY2I3VUxMLCAweDY4NWFkMjIzOGEwM2U3Y2NVTEwsCisJMHgwNjY0ODRiMmFiMmZmMWRiVUxMLCAweGZlOWQ1ZDcwZWZiZjc5ZWNVTEwsIDB4NWIxM2I5ZGQ5YzQ4MTg1NFVMTCwKKwkweDE1ZjBkNDc1ZWQxNTA5YWRVTEwsIDB4MGJlYmNkMDYwZWM3OTg1MVVMTCwgMHhkNThjNjc5MTE4M2FiN2Y4VUxMLAorCTB4ZDExODdjNTA1MmYzZWVlNFVMTCwgMHhjOTVkMTE5MmU1NGU4MmZmVUxMLCAweDg2ZWVhMTRjYjlhYzZjYTJVTEwsCisJMHgzNDg1YmViMTUzNjc3ZDVkVUxMLCAweGRkMTkxZDc4MWY4YzQ5MmFVTEwsIDB4ZjYwODY2YmFhNzg0ZWJmOVVMTCwKKwkweDUxOGY2NDNiYTJkMDhjNzRVTEwsIDB4ODg1MmU5NTZlMTA4N2MyMlVMTCwgMHhhNzY4Y2I4ZGM0MTBhZThkVUxMLAorCTB4MzgwNDc3MjZiZmVjOGUxYVVMTCwgMHhhNjc3MzhiNGNkM2I0NWFhVUxMLCAweGFkMTY2OTFjZWMwZGRlMTlVTEwsCisJMHhjNmQ0MzE5MzgwNDYyZTA3VUxMLCAweGM1YTU4NzZkMGJhNjE5MzhVTEwsIDB4MTZiOWZhMWZhNThmZDg0MFVMTCwKKwkweDE4OGFiMTE3M2NhNzRmMThVTEwsIDB4YWJkYTJmOThjOTljMDIxZlVMTCwgMHgzZTA1ODBhYjEzNGFlODE2VUxMLAorCTB4NWYzYjA1Yjc3MzY0NWFiYlVMTCwgMHgyNTAxYTJiZTU1NzVmMmY2VUxMLCAweDFiMmY3NDAwNGU3ZThiYTlVTEwsCisJMHgxY2Q3NTgwMzcxZThkOTUzVUxMLCAweDdmNmVkODk1NjI3NjRlMzBVTEwsIDB4YjE1OTI2ZmY1OTZmMDAzZFVMTCwKKwkweDlmNjUyOTNkYThjNWQ2YjlVTEwsIDB4NmVjZWYwNGRkNjkwZjg0Y1VMTCwgMHg0NzgyMjc1ZmZmMzNhZjg4VUxMLAorCTB4ZTQxNDMzMDgzZjgyMDgwMVVMTCwgMHhmZDBkZmU0MDlhMWFmOWI1VUxMLCAweDQzMjVhMzM0MmNkYjM5NmJVTEwsCisJMHg4YWU3N2U2MmIzMDFiMjUyVUxMLCAweGMzNmY5ZTlmNjY1NTYxNWFVTEwsIDB4ODU0NTVhMmQ5MmQzMmMwOVVMTCwKKwkweGYyYzdkZWE5NDk0Nzc0ODVVTEwsIDB4NjNjZmI0YzEzM2EzOWViYVVMTCwgMHg4M2IwNDBjYzZlYmM1NDYyVUxMLAorCTB4M2I5NDU0YzhmZGIzMjZiMFVMTCwgMHg1NmY1NmE5ZTg3ZmZkNzhjVUxMLCAweDJkYzI5NDBkOTlmNDJiYzZVTEwsCisJMHg5OGY3ZGYwOTZiMDk2ZTJkVUxMLCAweDE5YTZlMDFlM2FkODUyYmZVTEwsIDB4NDJhOTljY2JkYmQ0YjQwYlVMTCwKKwkweGE1OTk5OGFmNDVlOWM1NTlVTEwsIDB4MzY2Mjk1ZTgwN2Q5MzE4NlVMTCwgMHg2YjQ4MTgxYmZhYTFmNzczVUxMLAorCTB4MWZlYzU3ZTIxNTdhMGExZFVMTCwgMHg0NjY3NDQ2YWY2MjAxYWQ1VUxMLCAweGU2MTVlYmNhY2ZiMGYwNzVVTEwsCisJMHhiOGYzMWY0ZjY4MjkwNzc4VUxMLCAweDIyNzEzZWQ2Y2UyMmQxMWVVTEwsIDB4MzA1N2MxYTcyZWMzYzkzYlVMTCwKKwkweGNiNDZhY2MzN2MzZjFmMmZVTEwsIDB4ZGJiODkzZmQwMmFhZjUwZVVMTCwgMHgzMzFmZDkyZTYwMGI5ZmNmVUxMLAorCTB4YTQ5OGY5NjE0OGVhM2FkNlVMTCwgMHhhOGQ4NDI2ZThiNmE4M2VhVUxMLCAweGEwODliMjc0Yjc3MzVjZGNVTEwsCisJMHg4N2Y2YjM3MzFlNTI0YTExVUxMLCAweDExODgwOGU1Y2JjOTY3NDlVTEwsIDB4OTkwNmU0YzdiMTliZDM5NFVMTCwKKwkweGFmZWQ3ZjdlOWIyNGEyMGNVTEwsIDB4NjUwOWVhZGVlYjM2NDRhN1VMTCwgMHg2YzFlZjFkM2U4ZWYwZWRlVUxMLAorCTB4YjljOTdkNDNlOTc5OGZiNFVMTCwgMHhhMmYyZDc4NDc0MGMyOGEzVUxMLCAweDdiODQ5NjQ3NjE5NzU2NmZVTEwsCisJMHg3YTViZTNlNmI2NWYwNjlkVUxMLCAweGY5NjMzMGVkNzhiZTZmMTBVTEwsIDB4ZWVlNjBkZTc3YTA3NmExNVVMTCwKKwkweDJiNGJlZTRhYTA4YjliZDBVTEwsIDB4NmE1NmE2M2VjN2I4ODk0ZVVMTCwgMHgwMjEyMTM1OWJhMzRmZWY0VUxMLAorCTB4NGNiZjk5ZjgyODM3MDNmY1VMTCwgMHgzOTgwNzEzNTBjYWYzMGM4VUxMLCAweGQwYTc3YTg5ZjAxNzY4N2FVTEwsCisJMHhmMWMxYTllYjllNDIzNTY5VUxMLCAweDhjNzk3NjI4MmRlZTgxOTlVTEwsIDB4NWQxNzM3YTVkZDFmN2FiZFVMTCwKKwkweDRmNTM0MzNjMDlhOWZhODBVTEwsIDB4ZmE4YjBjNTNkZjdjYTFkOVVMTCwgMHgzZmQ5ZGNiYzg4NmNjYjc3VUxMLAorCTB4YzA0MDkxN2NhOTFiNDcyMFVMTCwgMHg3ZGQwMDE0MmY5ZDFkY2RmVUxMLCAweDg0NzZmYzFkNGYzODdiNThVTEwsCisJMHgyM2Y4ZTdjNWYzMzE2NTAzVUxMLCAweDAzMmEyMjQ0ZTdlMzczMzlVTEwsIDB4NWM4N2E1ZDc1MGY1YTc0YlVMTCwKKwkweDA4MmI0Y2M0MzY5ODk5MmVVTEwsIDB4ZGY5MTdiZWNiODU4ZjYzY1VMTCwgMHgzMjcwYjhmYzViZjg2ZGRhVUxMLAorCTB4MTBhZTcyYmIyOWI1ZGQ3NlVMTCwgMHg1NzZhYzk0ZTc3MDAzNjJiVUxMLCAweDFhZDExMmRhYzYxZWZiOGZVTEwsCisJMHg2OTFiYzMwZWM1ZmFhNDI3VUxMLCAweGZmMjQ2MzExY2MzMjcxNDNVTEwsIDB4MzE0MjM2OGUzMGU1MzIwNlVMTCwKKwkweDcxMzgwZTMxZTAyY2EzOTZVTEwsIDB4OTU4ZDVjOTYwYWFkNzZmMVVMTCwgMHhmOGQ2ZjQzMGMxNmRhNTM2VUxMLAorCTB4YzhmZmQxM2YxYmU3ZTFkMlVMTCwgMHg3NTc4YWU2NjAwNGRkYmUxVUxMLCAweDA1ODMzZjAxMDY3YmU2NDZVTEwsCisJMHhiYjM0YjVhZDNiZmU1ODZkVUxMLCAweDA5NWYzNGM5YTEyYjk3ZjBVTEwsIDB4MjQ3YWI2NDUyNWQ2MGNhOFVMTCwKKwkweGRjZGJjNmYzMDE3NDc3ZDFVTEwsIDB4NGEyZTE0ZDRkZWNhZDI0ZFVMTCwgMHhiZGI1ZTZkOWJlMGExZWViVUxMLAorCTB4MmE3ZTcwZjc3OTQzMDFhYlVMTCwgMHhkZWY0MmQ4YTI3MDU0MGZkVUxMLCAweDAxMDc4ZWMwYTM0YzIyYzFVTEwsCisJMHhlNWRlNTExYWY0YzE2Mzg3VUxMLCAweDdlYmIzYTUyYmQ5YTMzMGFVTEwsIDB4Nzc2OTc4NTdhYTdkNjQzNVVMTCwKKwkweDAwNGU4MzE2MDNhZTRjMzJVTEwsIDB4ZTdhMjEwMjBhZDc4ZTMxMlVMTCwgMHg5ZDQxYTcwYzZhYjQyMGYyVUxMLAorCTB4MjhlMDZjMThlYTExNDFlNlVMTCwgMHhkMmIyOGNiZDk4NGY2YjI4VUxMLCAweDI2Yjc1ZjZjNDQ2ZTlkODNVTEwsCisJMHhiYTQ3NTY4YzRkNDE4ZDdmVUxMLCAweGQ4MGJhZGJmZTYxODNkOGVVTEwsIDB4MGUyMDZkN2Y1ZjE2NjA0NFVMTCwKKwkweGUyNThhNDM5MTFjYmNhM2VVTEwsIDB4NzIzYTE3NDZiMjFkYzBiY1VMTCwgMHhjN2NhYTg1NGY1ZDdjZGQzVUxMLAorCTB4N2NhYzMyODgzZDI2MWQ5Y1VMTCwgMHg3NjkwYzI2NDIzYmE5NDJjVUxMLCAweDE3ZTU1NTI0NDc4MDQyYjhVTEwsCisJMHhlMGJlNDc3NjU2YTIzODlmVUxMLCAweDRkMjg5YjVlNjdhYjJkYTBVTEwsIDB4NDQ4NjJiOWM4ZmJiZmQzMVVMTCwKKwkweGI0N2NjODA0OWQxNDEzNjVVTEwsIDB4ODIyYzFiMzYyYjkxYzc5M1VMTCwgMHg0ZWIxNDY1NWZiMTNkZmQ4VUxMLAorCTB4MWVjYmJhMDcxNGUyYTk3YlVMTCwgMHg2MTQzNDU5ZDVjZGU1ZjE0VUxMLCAweDUzYThmYmYxZDVmMGFjODlVTEwsCisJMHg5N2VhMDRkODFjNWU1YjAwVUxMLCAweDYyMjE4MWE4ZDRmZGIzZjNVTEwsIDB4ZTliY2QzNDE1NzJhMTIwOFVMTCwKKwkweDE0MTEyNTg2NDNjY2U1OGFVTEwsIDB4OTE0NGM1ZmVhNGM2ZTBhNFVMTCwgMHgwZDMzZDA2NTY1Y2Y2MjBmVUxMLAorCTB4NTRhNDhkNDg5ZjIxOWNhMVVMTCwgMHhjNDNlNWVhYzZkNjNjODIxVUxMLCAweGE5NzI4YjNhNzI3NzBkYWZVTEwsCisJMHhkNzkzNGU3YjIwZGY4N2VmVUxMLCAweGUzNTUwM2I2MWEzZTg2ZTVVTEwsIDB4Y2FlMzIxZmJjODE5ZDUwNFVMTCwKKwkweDEyOWE1MGIzYWM2MGJmYTZVTEwsIDB4Y2Q1ZTY4ZWE3ZTlmYjZjM1VMTCwgMHhiMDFjOTAxOTk0ODNiMWM3VUxMLAorCTB4M2RlOTNjZDVjMjk1Mzc2Y1VMTCwgMHhhZWQ1MmVkZjJhYjlhZDEzVUxMLCAweDJlNjBmNTEyYzBhMDc4ODRVTEwsCisJMHhiYzNkODZhM2UzNjIxMGM5VUxMLCAweDM1MjY5ZDliMTYzOTUxY2VVTEwsIDB4MGM3ZDZlMmFkMGNkYjVmYVVMTCwKKwkweDU5ZTg2Mjk3ZDg3ZjU3MzNVTEwsIDB4Mjk4ZWYyMjE4OThkYjBlN1VMTCwgMHg1NTAwMDAyOWQxYTVhYTdlVUxMLAorCTB4OGJjMDhhZTFiNTA2MWI0NVVMTCwgMHhjMmMzMWMyYjZjOTI3MDNhVUxMLCAweDk0Y2M1OTZiYWYyNWVmNDJVTEwsCisJMHgwYTFkNzNkYjIyNTQwNDU2VUxMLCAweDA0YjZhMGY5ZDljNDE3OWFVTEwsIDB4ZWZmZGFmYTJhZTNkM2M2MFVMTCwKKwkweGY3YzgwNzViYjQ5NDk2YzRVTEwsIDB4OWNjNWM3MTQxZDFjZDRlM1VMTCwgMHg3OGJkMTYzODIxOGU1NTM0VUxMLAorCTB4YjJmMTE1NjhmODUwMjQ2YVVMTCwgMHhlZGZhYmNmYTk1MDJiYzI5VUxMLCAweDc5NmNlNWYyZGEyMzA1MWJVTEwsCisJMHhhYWUxMjhiMGRjOTM1MzdjVUxMLCAweDNhNDkzZGEwZWU0YjI5YWVVTEwsIDB4YjVkZjZiMmM0MTY4OTVkN1VMTCwKKwkweGZjYWJiZDI1MTIyZDdmMzdVTEwsIDB4NzA4MTBiNTgxMDVkYzRiMVVMTCwgMHhlMTBmZGQzN2Y3ODgyYTkwVUxMLAorCTB4NTI0ZGNhYjU1MThhM2Y1Y1VMTCwgMHgzYzllODU4Nzg0NTEyNTViVUxMLCAweDQwMjk4MjgxMTliZDM0ZTJVTEwsCisJMHg3NGEwNWI2ZjVkM2NlY2NiVUxMLCAweGI2MTAwMjE1NDJlMTNlY2FVTEwsIDB4MGZmOTc5ZDEyZjU5ZTJhY1VMTCwKKwkweDYwMzdkYTI3ZTRmOWNjNTBVTEwsIDB4NWU5Mjk3NWEwZGYxODQ3ZFVMTCwgMHhkNjZkZTE5MGQzZTYyM2ZlVUxMLAorCTB4NTAzMmQ2Yjg3YjU2ODA0OFVMTCwgMHg5YTM2YjdjZTgyMzUyMTZlVUxMLCAweDgwMjcyYTdhMjRmNjRiNGFVTEwsCisJMHg5M2VmZWQ4YjhjNjkxNmY3VUxMLCAweDM3ZGRiZmY0NGNjZTE1NTVVTEwsIDB4NGI5NWRiNWQ0Yjk5YmQyNVVMTCwKKwkweDkyZDNmZGExNjk4MTJmYzBVTEwsIDB4ZmIxYTRhOWE5MDY2MGJiNlVMTCwgMHg3MzBjMTk2OTQ2YTRiOWIyVUxMLAorCTB4ODFlMjg5YWE3ZjQ5ZGE2OFVMTCwgMHg2NDY2OWEwZjgzYjFhMDVmVUxMLCAweDI3YjNmZjdkOTY0NGY0OGJVTEwsCisJMHhjYzZiNjE1YzhkYjY3NWIzVUxMLCAweDY3NGYyMGI5YmNlYmJlOTVVTEwsIDB4NmYzMTIzODI3NTY1NTk4MlVMTCwKKwkweDVhZTQ4ODcxM2U0NWNmMDVVTEwsIDB4YmY2MTlmOTk1NGMyMTE1N1VMTCwgMHhlYWJhYzQ2MDQwYThlYWU5VUxMLAorCTB4NDU0YzZmZTlmMmMwYzFjZFVMTCwgMHg0MTljZjY0OTY0MTI2OTFjVUxMLCAweGQzZGMzYmVmMjY1YjBmNzBVTEwsCisJMHg2ZDBlNjBmNWMzNTc4YTllVUxMCit9OworCitzdGF0aWMgY29uc3QgdTY0IHNib3g0WzI1Nl0gPSB7CisJMHg1YjBlNjA4NTI2MzIzYzU1VUxMLCAweDFhNDZjMWE5ZmExYjU5ZjVVTEwsIDB4YTllMjQ1YTE3YzRjOGZmYVVMTCwKKwkweDY1Y2E1MTU5ZGIyOTU1ZDdVTEwsIDB4MDVkYjBhNzZjZTM1YWZjMlVMTCwgMHg4MWVhYzc3ZWE5MTEzZDQ1VUxMLAorCTB4NTI4ZWY4OGFiNmFjMGEwZFVMTCwgMHhhMDllYTI1MzU5N2JlM2ZmVUxMLCAweDQzMGRkZmIzYWM0OGNkNTZVTEwsCisJMHhjNGIzYTY3YWY0NWNlNDZmVUxMLCAweDRlY2VjZmQ4ZmJlMmQwNWVVTEwsIDB4M2VmNTZmMTBiMzk5MzVmMFVMTCwKKwkweDBiMjJkNjgyOWNkNjE5YzZVTEwsIDB4MTdmZDQ2MGE3NGRmMjA2OVVMTCwgMHg2Y2Y4Y2M4ZTg1MTBlZDQwVUxMLAorCTB4ZDZjODI0YmYzYTZlY2FhN1VMTCwgMHg2MTI0M2Q1ODFhODE3MDQ5VUxMLCAweDA0OGJhY2I2YmJjMTYzYTJVTEwsCisJMHhkOWEzOGFjMjdkNDRjYzMyVUxMLCAweDdmZGRmZjViYWFmNDEwYWJVTEwsIDB4YWQ2ZDQ5NWFhODA0ODI0YlVMTCwKKwkweGUxYTZhNzRmMmQ4YzlmOTRVTEwsIDB4ZDRmNzg1MTIzNWRlZThlM1VMTCwgMHhmZDRiN2Y4ODY1NDBkODkzVUxMLAorCTB4MjQ3YzIwMDQyYWE0YmZkYVVMTCwgMHgwOTZlYTFjNTE3ZDEzMjdjVUxMLCAweGQ1Njk2NmI0MzYxYTY2ODVVTEwsCisJMHgyNzdkYTVjMzEyMjEwNTdkVUxMLCAweDk0ZDU5ODkzYTQzYWNmZjdVTEwsIDB4NjRmMGM1MWNjZGMwMjI4MVVMTCwKKwkweDNkMzNiY2M0ZmY2MTg5ZGJVTEwsIDB4ZTAwNWNiMTg0Y2U2NmFmMVVMTCwgMHhmZjVjY2QxZDFkYjk5YmVhVUxMLAorCTB4YjBiODU0YTdmZTQyOTgwZlVMTCwgMHg3YmQ0NmE2YTcxOGQ0YjlmVUxMLCAweGQxMGZhOGNjMjJhNWZkOGNVTEwsCisJMHhkMzE0ODQ5NTJiZTRiZDMxVUxMLCAweGM3ZmE5NzVmY2IyNDM4NDdVTEwsIDB4NDg4NmVkMWU1ODQ2YzQwN1VMTCwKKwkweDI4Y2RkYjc5MWViNzBiMDRVTEwsIDB4YzJiMDBiZTJmNTczNDE3ZlVMTCwgMHg1Yzk1OTA0NTIxODBmODc3VUxMLAorCTB4N2E2YmRkZmZmMzcwZWIwMFVMTCwgMHhjZTUwOWUzOGQ2ZDlkNmE0VUxMLCAweGViZWIwZjAwNjQ3ZmE3MDJVTEwsCisJMHgxZGNjMDZjZjc2NjA2ZjA2VUxMLCAweGU0ZDlmMjhiYTI4NmZmMGFVTEwsIDB4ZDg1YTMwNWRjOTE4YzI2MlVMTCwKKwkweDQ3NWIxZDg3MzIyMjVmNTRVTEwsIDB4MmQ0ZmI1MTY2OGNjYjVmZVVMTCwgMHhhNjc5YjlkOWQ3MmJiYTIwVUxMLAorCTB4NTM4NDFjMGQ5MTJkNDNhNVVMTCwgMHgzYjdlYWE0OGJmMTJhNGU4VUxMLCAweDc4MWUwZTQ3ZjIyZjFkZGZVTEwsCisJMHhlZmYyMGNlNjBhYjUwOTczVUxMLCAweDIwZDI2MWQxOWRmZmI3NDJVTEwsIDB4MTZhMTJiMDMwNjJhMmUzOVVMTCwKKwkweDE5NjBlYjIyMzk2NTA0OTVVTEwsIDB4MjUxYzE2ZmVkNTBlYjhiOFVMTCwgMHg5YWMwYzMzMGY4MjYwMTZlVUxMLAorCTB4ZWQxNTI2NjU5NTNlNzY3MVVMTCwgMHgwMmQ2MzE5NGE2MzY5NTcwVUxMLCAweDUwNzRmMDgzOTRiMWM5ODdVTEwsCisJMHg3MGJhNTk4YzkwYjI1Y2UxVUxMLCAweDc5NGExNTgxMGI5NzQyZjZVTEwsIDB4MGQ1OTI1ZTlmY2FmOGM2Y1VMTCwKKwkweDMwNjc3MTZjZDg2ODc0NGVVTEwsIDB4OTEwYWIwNzdlOGQ3NzMxYlVMTCwgMHg2YTYxYmJkYjVhYzQyZjYxVUxMLAorCTB4OTM1MTNlZmJmMDg1MTU2N1VMTCwgMHhmNDk0NzI0YjllODNlOWQ1VUxMLCAweGU4ODdlMTk4NWMwOTY0OGRVTEwsCisJMHgzNGIxZDNjNjc1MzcwY2ZkVUxMLCAweGRjMzVlNDMzYmMwZDI1NWRVTEwsIDB4ZDBhYWI4NDIzNDEzMWJlMFVMTCwKKwkweDA4MDQyYTUwYjQ4YjdlYWZVTEwsIDB4OTk5N2M0ZWU0NGEzYWIzNVVMTCwgMHg4MjlhN2I0OTIwMTc5OWQwVUxMLAorCTB4MjYzYjgzMDdiN2M1NDQ0MVVMTCwgMHg3NTJmOTVmNGZkNmE2Y2E2VUxMLCAweDkyNzIxNzQwMmMwOGM2ZTVVTEwsCisJMHgyYThhYjc1NGE3OTVkOWVlVUxMLCAweGE0NDJmNzU1MmY3Mjk0M2RVTEwsIDB4MmMzMTMzNGUxOTc4MTIwOFVMTCwKKwkweDRmYTk4ZDdjZWFlZTYyOTFVTEwsIDB4NTVjMzg2MmY2NjVkYjMwOVVMTCwgMHhiZDA2MTAxNzVkNTNiMWYzVUxMLAorCTB4NDZmZTZjYjg0MDQxM2YyN1VMTCwgMHgzZmUwMzc5MmRmMGNmYTU5VUxMLCAweGNmZTcwMDM3MmViODVlOGZVTEwsCisJMHhhN2JlMjllN2FkYmNlMTE4VUxMLCAweGU1NDRlZTVjZGU4NDMxZGRVTEwsIDB4OGE3ODFiMWI0MWYxODczZVVMTCwKKwkweGE1Yzk0Yzc4YTBkMmYwZTdVTEwsIDB4Mzk0MTJlMjg3N2I2MDcyOFVMTCwgMHhhMTI2NWVmM2FmYzlhNjJjVUxMLAorCTB4YmNjMjc3MGM2YTI1MDZjNVVMTCwgMHgzYWI2NmRkNWRjZTFjZTEyVUxMLCAweGU2NTQ5OWQwNGE2NzViMzdVTEwsCisJMHg3ZDhmNTIzNDgxYmZkMjE2VUxMLCAweDBmNmY2NGZjZWMxNWYzODlVTEwsIDB4NzRlZmJlNjE4YjViMTNjOFVMTCwKKwkweGFjZGM4MmI3MTQyNzNlMWRVTEwsIDB4ZGQ0MGJmZTAwMzE5OWQxN1VMTCwgMHgzN2U5OTI1N2U3ZTA2MWY4VUxMLAorCTB4ZmE1MjYyNjkwNDc3NWFhYVVMTCwgMHg4YmJiZjYzYTQ2M2Q1NmY5VUxMLCAweGYwMDEzZjE1NDNhMjZlNjRVTEwsCisJMHhhODMwN2U5Zjg3OWVjODk4VUxMLCAweGNjNGMyN2E0MTUwMTc3Y2NVTEwsIDB4MWI0MzJmMmNjYTFkMzM0OFVMTCwKKwkweGRlMWQxZjhmOWY2ZmEwMTNVTEwsIDB4NjA2NjAyYTA0N2E3ZGRkNlVMTCwgMHhkMjM3YWI2NGNjMWNiMmM3VUxMLAorCTB4OWI5MzhlNzIyNWZjZDFkM1VMTCwgMHhlYzRlMDM3MDhlMGZmNDc2VUxMLCAweGZlYjJmYmRhM2QwM2MxMmRVTEwsCisJMHhhZTBiY2VkMmVlNDM4ODlhVUxMLCAweDIyY2I4OTIzZWJmYjRmNDNVTEwsIDB4NjkzNjBkMDEzY2Y3Mzk2ZFVMTCwKKwkweDg1NWUzNjAyZDJkNGUwMjJVTEwsIDB4MDczODA1YmFkMDFmNzg0Y1VMTCwgMHgzM2UxN2ExMzM4NTJmNTQ2VUxMLAorCTB4ZGY0ODc0MDU4YWM3YjYzOFVMTCwgMHhiYTkyYjI5YzY3OGFhMTRhVUxMLCAweDBjZTg5ZmM3NmNmYWFkY2RVTEwsCisJMHg1ZjlkNGUwOTA4MzM5ZTM0VUxMLCAweGYxYWZlOTI5MWY1OTIzYjlVTEwsIDB4NmUzNDgwZjYwZjRhMjY1ZlVMTCwKKwkweGVlYmYzYTJhYjI5Yjg0MWNVTEwsIDB4ZTIxOTM4YTg4ZjkxYjRhZFVMTCwgMHg1N2RmZWZmODQ1YzZkM2MzVUxMLAorCTB4MmYwMDZiMGJmNjJjYWFmMlVMTCwgMHg2MmY0NzllZjZmNzVlZTc4VUxMLCAweDExYTU1YWQ0MWM4OTE2YTlVTEwsCisJMHhmMjI5ZDI5MDg0ZmVkNDUzVUxMLCAweDQyZjFjMjdiMTZiMDAwZTZVTEwsIDB4MmIxZjc2NzQ5ODIzYzA3NFVMTCwKKwkweDRiNzZlY2EzYzI3NDUzNjBVTEwsIDB4OGM5OGY0NjNiOTE2OTFiZFVMTCwgMHgxNGJjYzkzY2YxYWRlNjZhVUxMLAorCTB4ODg4NTIxM2U2ZDQ1ODM5N1VMTCwgMHg4ZTE3N2RmMDI3NGQ0NzExVUxMLCAweGI0OWI3M2I1NTAzZjI5NTFVTEwsCisJMHgxMDE2ODE2OGMzZjk2YjZiVUxMLCAweDBlM2Q5NjNiNjNjYWIwYWVVTEwsIDB4OGRmYzRiNTY1NWExZGIxNFVMTCwKKwkweGY3ODlmMTM1NmUxNGRlNWNVTEwsIDB4NjgzZTY4YWY0ZTUxZGFjMVVMTCwgMHhjOWE4NGY5ZDhkNGIwZmQ5VUxMLAorCTB4MzY5MWUwM2Y1MmEwZjlkMVVMTCwgMHg1ZWQ4NmU0NmUxODc4ZTgwVUxMLCAweDNjNzExYTBlOTlkMDcxNTBVTEwsCisJMHg1YTA4NjViMjBjNGU5MzEwVUxMLCAweDU2ZmJmYzFmZTRmMDY4MmVVTEwsIDB4ZWE4ZDVkZTMxMDVlZGY5YlVMTCwKKwkweDcxYWJmZGIxMjM3OTE4N2FVTEwsIDB4MmViOTlkZTFiZWU3N2I5Y1VMTCwgMHgyMWVjYzBlYTMzY2Y0NTIzVUxMLAorCTB4NTlhNGQ3NTIxODA1YzdhMVVMTCwgMHgzODk2ZjVlYjU2YWU3YzcyVUxMLCAweGFhNjM4ZjNkYjE4Zjc1ZGNVTEwsCisJMHg5ZjM5MzU4ZGFiZTk4MDhlVUxMLCAweGI3ZGVmYTkxYzAwYjcyYWNVTEwsIDB4NmI1NTQxZmQ2MjQ5MmQ5MlVMTCwKKwkweDZkYzZkZWU4ZjkyZTRkNWJVTEwsIDB4MzUzZjU3YWJjNGJlZWE3ZVVMTCwgMHg3MzU3NjlkNmRhNTY5MGNlVUxMLAorCTB4MGEyMzRhYTY0MjM5MTQ4NFVMTCwgMHhmNmY5NTA4MDI4ZjgwZDlkVUxMLCAweGI4ZTMxOWEyN2FiM2YyMTVVTEwsCisJMHgzMWFkOWMxMTUxMzQxYTRkVUxMLCAweDc3M2MyMmE1N2JlZjU4MDVVTEwsIDB4NDVjNzU2MWEwNzk2ODYzM1VMTCwKKwkweGY5MTNkYTllMjQ5ZGJlMzZVTEwsIDB4ZGE2NTJkOWI3OGE2NGM2OFVMTCwgMHg0YzI3YTk3ZjNiYzMzNGVmVUxMLAorCTB4NzY2MjEyMjBlNjZiMTdmNFVMTCwgMHg5Njc3NDM4OTlhY2Q3ZDBiVUxMLCAweGYzZWU1YmNhZTBlZDY3ODJVTEwsCisJMHg0MDlmNzUzNjAwYzg3OWZjVUxMLCAweDA2ZDA5YTM5YjU5MjZkYjZVTEwsIDB4NmY4M2FlYjAzMTdhYzU4OFVMTCwKKwkweDAxZTZjYTRhODYzODFmMjFVTEwsIDB4NjZmZjM0NjJkMTlmMzAyNVVMTCwgMHg3MjIwN2MyNGRkZmQzYmZiVUxMLAorCTB4NGFmNmI2ZDNlMmVjZTJlYlVMTCwgMHg5Yzk5NGRiZWM3ZWEwOGRlVUxMLCAweDQ5YWNlNTk3YjA5YThiYzRVTEwsCisJMHhiMzhjNDc2NmNmMDc5N2JhVUxMLCAweDEzMWI5MzczYzU3YzJhNzVVTEwsIDB4YjE4MjJjY2U2MTkzMWU1OFVMTCwKKwkweDlkNzU1NWI5MDliYTFjMGNVTEwsIDB4MTI3ZmFmZGQ5MzdkMTFkMlVMTCwgMHgyOWRhM2JhZGM2NmQ5MmU0VUxMLAorCTB4YTJjMWQ1NzE1NGMyZWNiY1VMTCwgMHg1OGM1MTM0ZDgyZjZmZTI0VUxMLCAweDFjM2FlMzUxNWI2MjI3NGZVTEwsCisJMHhlOTA3YzgyZTAxY2I4MTI2VUxMLCAweGY4ZWQwOTE5MTNlMzdmY2JVTEwsIDB4MzI0OWQ4ZjljODAwNDZjOVVMTCwKKwkweDgwY2Y5YmVkZTM4OGZiNjNVTEwsIDB4MTg4MTUzOWExMTZjZjE5ZVVMTCwgMHg1MTAzZjNmNzZiZDUyNDU3VUxMLAorCTB4MTViN2U2ZjVhZTQ3ZjdhOFVMTCwgMHhkYmQ3YzZkZWQ0N2U5Y2NmVUxMLCAweDQ0ZTU1YzQxMDIyOGJiMWFVTEwsCisJMHhiNjQ3ZDQyNTVlZGI0ZTk5VUxMLCAweDVkMTE4ODJiYjhhYWZjMzBVTEwsIDB4ZjUwOThiYmIyOWQzMjEyYVVMTCwKKwkweDhmYjVlYTE0ZTkwMjk2YjNVTEwsIDB4Njc3Yjk0MjE1N2RkMDI1YVVMTCwgMHhmYjU4ZTdjMGEzOTBhY2I1VUxMLAorCTB4ODlkMzY3NGM4M2JkNGEwMVVMTCwgMHg5ZTJkYTRkZjRiZjNiOTNiVUxMLCAweGZjYzQxZTMyOGNhYjQ4MjlVTEwsCisJMHgwM2YzOGM5NmJhNTgyYzUyVUxMLCAweGNhZDFiZGJkN2ZkODVkYjJVTEwsIDB4YmJiNDQyYzE2MDgyYWU4M1VMTCwKKwkweGI5NWZlODZiYTVkYTlhYjBVTEwsIDB4YjIyZTA0NjczNzcxYTkzZlVMTCwgMHg4NDUzNThjOTQ5MzE1MmQ4VUxMLAorCTB4YmUyYTQ4ODY5N2I0NTQxZVVMTCwgMHg5NWEyZGMyZGQzOGU2OTY2VUxMLCAweGMwMmMxMWFjOTIzYzg1MmJVTEwsCisJMHgyMzg4YjE5OTBkZjJhODdiVUxMLCAweDdjODAwOGZhMWI0ZjM3YmVVTEwsIDB4MWY3MGQwYzg0ZDU0ZTUwM1VMTCwKKwkweDU0OTBhZGVjN2VjZTU3ZDRVTEwsIDB4MDAyYjNjMjdkOTA2M2EzYVVMTCwgMHg3ZWFlYTM4NDgwMzBhMmJmVUxMLAorCTB4YzYwMjMyNmRlZDIwMDNjMFVMTCwgMHg4M2E3Mjg3ZDY5YTk0MDg2VUxMLCAweGM1N2E1ZmNiMzBmNTdhOGFVTEwsCisJMHhiNTY4NDRlNDc5ZWJlNzc5VUxMLCAweGEzNzNiNDBmMDVkY2JjZTlVTEwsIDB4ZDcxYTc4NmU4ODU3MGVlMlVMTCwKKwkweDg3OWNiYWNkYmRlOGY2YTBVTEwsIDB4OTc2YWQxYmNjMTY0YTMyZlVMTCwgMHhhYjIxZTI1ZTk2NjZkNzhiVUxMLAorCTB4OTAxMDYzYWFlNWU1YzMzY1VMTCwgMHg5ODE4YjM0NDQ4Njk4ZDkwVUxMLCAweGUzNjQ4N2FlM2UxZThhYmJVTEwsCisJMHhhZmJkZjkzMTg5M2JkY2I0VUxMLCAweDYzNDVhMGRjNWZiYmQ1MTlVTEwsIDB4ODYyOGZlMjY5Yjk0NjVjYVVMTCwKKwkweDFlNWQwMTYwM2Y5YzUxZWNVTEwsIDB4NGRlNDQwMDZhMTUwNDliN1VMTCwgMHhiZjZjNzBlNWY3NzZjYmIxVUxMLAorCTB4NDExMjE4ZjJlZjU1MmJlZFVMTCwgMHhjYjBjMDcwODcwNWEzNmEzVUxMLCAweGU3NGQxNDc1NGY5ODYwNDRVTEwsCisJMHhjZDU2ZDk0MzBlYTgyODBlVUxMLCAweGMxMjU5MWQ3NTM1ZjUwNjVVTEwsIDB4YzgzMjIzZjE3MjBhZWY5NlVMTCwKKwkweGMzYTAzOTZmNzM2M2E1MWZVTEwKK307CisKKworc3RhdGljIHZvaWQgdGdyMTkyX3JvdW5kKHU2NCAqIHJhLCB1NjQgKiByYiwgdTY0ICogcmMsIHU2NCB4LCBpbnQgbXVsKQoreworCXU2NCBhID0gKnJhOworCXU2NCBiID0gKnJiOworCXU2NCBjID0gKnJjOworCisJYyBePSB4OworCWEgLT0gc2JveDFbYyAgICAgICAgICYgMHhmZl0gXiBzYm94MlsoYyA+PiAxNikgJiAweGZmXQorCSAgIF4gc2JveDNbKGMgPj4gMzIpICYgMHhmZl0gXiBzYm94NFsoYyA+PiA0OCkgJiAweGZmXTsKKwliICs9IHNib3g0WyhjID4+ICA4KSAmIDB4ZmZdIF4gc2JveDNbKGMgPj4gMjQpICYgMHhmZl0KKwkgICBeIHNib3gyWyhjID4+IDQwKSAmIDB4ZmZdIF4gc2JveDFbKGMgPj4gNTYpICYgMHhmZl07CisJYiAqPSBtdWw7CisKKwkqcmEgPSBhOworCSpyYiA9IGI7CisJKnJjID0gYzsKK30KKworCitzdGF0aWMgdm9pZCB0Z3IxOTJfcGFzcyh1NjQgKiByYSwgdTY0ICogcmIsIHU2NCAqIHJjLCB1NjQgKiB4LCBpbnQgbXVsKQoreworCXU2NCBhID0gKnJhOworCXU2NCBiID0gKnJiOworCXU2NCBjID0gKnJjOworCisJdGdyMTkyX3JvdW5kKCZhLCAmYiwgJmMsIHhbMF0sIG11bCk7CisJdGdyMTkyX3JvdW5kKCZiLCAmYywgJmEsIHhbMV0sIG11bCk7CisJdGdyMTkyX3JvdW5kKCZjLCAmYSwgJmIsIHhbMl0sIG11bCk7CisJdGdyMTkyX3JvdW5kKCZhLCAmYiwgJmMsIHhbM10sIG11bCk7CisJdGdyMTkyX3JvdW5kKCZiLCAmYywgJmEsIHhbNF0sIG11bCk7CisJdGdyMTkyX3JvdW5kKCZjLCAmYSwgJmIsIHhbNV0sIG11bCk7CisJdGdyMTkyX3JvdW5kKCZhLCAmYiwgJmMsIHhbNl0sIG11bCk7CisJdGdyMTkyX3JvdW5kKCZiLCAmYywgJmEsIHhbN10sIG11bCk7CisKKwkqcmEgPSBhOworCSpyYiA9IGI7CisJKnJjID0gYzsKK30KKworCitzdGF0aWMgdm9pZCB0Z3IxOTJfa2V5X3NjaGVkdWxlKHU2NCAqIHgpCit7CisJeFswXSAtPSB4WzddIF4gMHhhNWE1YTVhNWE1YTVhNWE1VUxMOworCXhbMV0gXj0geFswXTsKKwl4WzJdICs9IHhbMV07CisJeFszXSAtPSB4WzJdIF4gKCh+eFsxXSkgPDwgMTkpOworCXhbNF0gXj0geFszXTsKKwl4WzVdICs9IHhbNF07CisJeFs2XSAtPSB4WzVdIF4gKCh+eFs0XSkgPj4gMjMpOworCXhbN10gXj0geFs2XTsKKwl4WzBdICs9IHhbN107CisJeFsxXSAtPSB4WzBdIF4gKCh+eFs3XSkgPDwgMTkpOworCXhbMl0gXj0geFsxXTsKKwl4WzNdICs9IHhbMl07CisJeFs0XSAtPSB4WzNdIF4gKCh+eFsyXSkgPj4gMjMpOworCXhbNV0gXj0geFs0XTsKKwl4WzZdICs9IHhbNV07CisJeFs3XSAtPSB4WzZdIF4gMHgwMTIzNDU2Nzg5YWJjZGVmVUxMOworfQorCisKKy8qKioqKioqKioqKioqKioqCisgKiBUcmFuc2Zvcm0gdGhlIG1lc3NhZ2UgREFUQSB3aGljaCBjb25zaXN0cyBvZiA1MTIgYnl0ZXMgKDggd29yZHMpCisgKi8KKworc3RhdGljIHZvaWQgdGdyMTkyX3RyYW5zZm9ybShzdHJ1Y3QgdGdyMTkyX2N0eCAqdGN0eCwgY29uc3QgdTggKiBkYXRhKQoreworCXU2NCBhLCBiLCBjLCBhYSwgYmIsIGNjOworCXU2NCB4WzhdOworCWludCBpOworCWNvbnN0IHU4ICpwdHIgPSBkYXRhOworCisJZm9yIChpID0gMDsgaSA8IDg7IGkrKywgcHRyICs9IDgpIHsKKwkJeFtpXSA9ICgoKHU2NClwdHJbN10gKSA8PCA1NikgXgorCQkoKCh1NjQpcHRyWzZdICYgMHhmZkwpIDw8IDQ4KSBeCisJCSgoKHU2NClwdHJbNV0gJiAweGZmTCkgPDwgNDApIF4KKwkJKCgodTY0KXB0cls0XSAmIDB4ZmZMKSA8PCAzMikgXgorCQkoKCh1NjQpcHRyWzNdICYgMHhmZkwpIDw8IDI0KSBeCisJCSgoKHU2NClwdHJbMl0gJiAweGZmTCkgPDwgMTYpIF4KKwkJKCgodTY0KXB0clsxXSAmIDB4ZmZMKSA8PCAgOCkgXgorCQkoKCh1NjQpcHRyWzBdICYgMHhmZkwpICAgICAgKTsKKwl9CisKKwkvKiBzYXZlICovCisJYSA9IGFhID0gdGN0eC0+YTsKKwliID0gYmIgPSB0Y3R4LT5iOworCWMgPSBjYyA9IHRjdHgtPmM7CisKKwl0Z3IxOTJfcGFzcygmYSwgJmIsICZjLCB4LCA1KTsKKwl0Z3IxOTJfa2V5X3NjaGVkdWxlKHgpOworCXRncjE5Ml9wYXNzKCZjLCAmYSwgJmIsIHgsIDcpOworCXRncjE5Ml9rZXlfc2NoZWR1bGUoeCk7CisJdGdyMTkyX3Bhc3MoJmIsICZjLCAmYSwgeCwgOSk7CisKKworCS8qIGZlZWRmb3J3YXJkICovCisJYSBePSBhYTsKKwliIC09IGJiOworCWMgKz0gY2M7CisJLyogc3RvcmUgKi8KKwl0Y3R4LT5hID0gYTsKKwl0Y3R4LT5iID0gYjsKKwl0Y3R4LT5jID0gYzsKK30KKworc3RhdGljIHZvaWQgdGdyMTkyX2luaXQodm9pZCAqY3R4KQoreworCXN0cnVjdCB0Z3IxOTJfY3R4ICp0Y3R4ID0gY3R4OworCisJbWVtc2V0ICh0Y3R4LT5oYXNoLCAwLCA2NCk7CisJdGN0eC0+YSA9IDB4MDEyMzQ1Njc4OWFiY2RlZlVMTDsKKwl0Y3R4LT5iID0gMHhmZWRjYmE5ODc2NTQzMjEwVUxMOworCXRjdHgtPmMgPSAweGYwOTZhNWI0YzNiMmUxODdVTEw7CisJdGN0eC0+bmJsb2NrcyA9IDA7CisJdGN0eC0+Y291bnQgPSAwOworfQorCisKKy8qIFVwZGF0ZSB0aGUgbWVzc2FnZSBkaWdlc3Qgd2l0aCB0aGUgY29udGVudHMKKyAqIG9mIElOQlVGIHdpdGggbGVuZ3RoIElOTEVOLiAqLworc3RhdGljIHZvaWQgdGdyMTkyX3VwZGF0ZSh2b2lkICpjdHgsIGNvbnN0IHU4ICogaW5idWYsIHVuc2lnbmVkIGludCBsZW4pCit7CisJc3RydWN0IHRncjE5Ml9jdHggKnRjdHggPSBjdHg7CisKKwlpZiAodGN0eC0+Y291bnQgPT0gNjQpIHsJLyogZmx1c2ggdGhlIGJ1ZmZlciAqLworCQl0Z3IxOTJfdHJhbnNmb3JtKHRjdHgsIHRjdHgtPmhhc2gpOworCQl0Y3R4LT5jb3VudCA9IDA7CisJCXRjdHgtPm5ibG9ja3MrKzsKKwl9CisJaWYgKCFpbmJ1ZikgeworCQlyZXR1cm47CisJfQorCWlmICh0Y3R4LT5jb3VudCkgeworCQlmb3IgKDsgbGVuICYmIHRjdHgtPmNvdW50IDwgNjQ7IGxlbi0tKSB7CisJCQl0Y3R4LT5oYXNoW3RjdHgtPmNvdW50KytdID0gKmluYnVmKys7CisJCX0KKwkJdGdyMTkyX3VwZGF0ZSh0Y3R4LCBOVUxMLCAwKTsKKwkJaWYgKCFsZW4pIHsKKwkJCXJldHVybjsKKwkJfQorCisJfQorCisJd2hpbGUgKGxlbiA+PSA2NCkgeworCQl0Z3IxOTJfdHJhbnNmb3JtKHRjdHgsIGluYnVmKTsKKwkJdGN0eC0+Y291bnQgPSAwOworCQl0Y3R4LT5uYmxvY2tzKys7CisJCWxlbiAtPSA2NDsKKwkJaW5idWYgKz0gNjQ7CisJfQorCWZvciAoOyBsZW4gJiYgdGN0eC0+Y291bnQgPCA2NDsgbGVuLS0pIHsKKwkJdGN0eC0+aGFzaFt0Y3R4LT5jb3VudCsrXSA9ICppbmJ1ZisrOworCX0KK30KKworCisKKy8qIFRoZSByb3V0aW5lIHRlcm1pbmF0ZXMgdGhlIGNvbXB1dGF0aW9uICovCitzdGF0aWMgdm9pZCB0Z3IxOTJfZmluYWwodm9pZCAqY3R4LCB1OCAqIG91dCkKK3sKKwlzdHJ1Y3QgdGdyMTkyX2N0eCAqdGN0eCA9IGN0eDsKKwl1MzIgdCwgbXNiLCBsc2I7CisJdTggKnA7CisJaW50IGksIGo7CisKKwl0Z3IxOTJfdXBkYXRlKHRjdHgsIE5VTEwsIDApOyAvKiBmbHVzaCAqLyA7CisKKwltc2IgPSAwOworCXQgPSB0Y3R4LT5uYmxvY2tzOworCWlmICgobHNiID0gdCA8PCA2KSA8IHQpIHsgLyogbXVsdGlwbHkgYnkgNjQgdG8gbWFrZSBhIGJ5dGUgY291bnQgKi8KKwkJbXNiKys7CisJfQorCW1zYiArPSB0ID4+IDI2OworCXQgPSBsc2I7CisJaWYgKChsc2IgPSB0ICsgdGN0eC0+Y291bnQpIDwgdCkgewkvKiBhZGQgdGhlIGNvdW50ICovCisJCW1zYisrOworCX0KKwl0ID0gbHNiOworCWlmICgobHNiID0gdCA8PCAzKSA8IHQpCXsgLyogbXVsdGlwbHkgYnkgOCB0byBtYWtlIGEgYml0IGNvdW50ICovCisJCW1zYisrOworCX0KKwltc2IgKz0gdCA+PiAyOTsKKworCWlmICh0Y3R4LT5jb3VudCA8IDU2KSB7CS8qIGVub3VnaCByb29tICovCisJCXRjdHgtPmhhc2hbdGN0eC0+Y291bnQrK10gPSAweDAxOwkvKiBwYWQgKi8KKwkJd2hpbGUgKHRjdHgtPmNvdW50IDwgNTYpIHsKKwkJCXRjdHgtPmhhc2hbdGN0eC0+Y291bnQrK10gPSAwOwkvKiBwYWQgKi8KKwkJfQorCX0gZWxzZSB7CQkvKiBuZWVkIG9uZSBleHRyYSBibG9jayAqLworCQl0Y3R4LT5oYXNoW3RjdHgtPmNvdW50KytdID0gMHgwMTsJLyogcGFkIGNoYXJhY3RlciAqLworCQl3aGlsZSAodGN0eC0+Y291bnQgPCA2NCkgeworCQkJdGN0eC0+aGFzaFt0Y3R4LT5jb3VudCsrXSA9IDA7CisJCX0KKwkJdGdyMTkyX3VwZGF0ZSh0Y3R4LCBOVUxMLCAwKTsgLyogZmx1c2ggKi8gOworCQltZW1zZXQodGN0eC0+aGFzaCwgMCwgNTYpOyAgICAvKiBmaWxsIG5leHQgYmxvY2sgd2l0aCB6ZXJvZXMgKi8KKwl9CisJLyogYXBwZW5kIHRoZSA2NCBiaXQgY291bnQgKi8KKwl0Y3R4LT5oYXNoWzU2XSA9IGxzYjsKKwl0Y3R4LT5oYXNoWzU3XSA9IGxzYiA+PiA4OworCXRjdHgtPmhhc2hbNThdID0gbHNiID4+IDE2OworCXRjdHgtPmhhc2hbNTldID0gbHNiID4+IDI0OworCXRjdHgtPmhhc2hbNjBdID0gbXNiOworCXRjdHgtPmhhc2hbNjFdID0gbXNiID4+IDg7CisJdGN0eC0+aGFzaFs2Ml0gPSBtc2IgPj4gMTY7CisJdGN0eC0+aGFzaFs2M10gPSBtc2IgPj4gMjQ7CisJdGdyMTkyX3RyYW5zZm9ybSh0Y3R4LCB0Y3R4LT5oYXNoKTsKKworCXAgPSB0Y3R4LT5oYXNoOworCSpwKysgPSB0Y3R4LT5hID4+IDU2OyAqcCsrID0gdGN0eC0+YSA+PiA0ODsgKnArKyA9IHRjdHgtPmEgPj4gNDA7CisJKnArKyA9IHRjdHgtPmEgPj4gMzI7ICpwKysgPSB0Y3R4LT5hID4+IDI0OyAqcCsrID0gdGN0eC0+YSA+PiAxNjsKKwkqcCsrID0gdGN0eC0+YSA+PiAgODsgKnArKyA9IHRjdHgtPmE7XAorCSpwKysgPSB0Y3R4LT5iID4+IDU2OyAqcCsrID0gdGN0eC0+YiA+PiA0ODsgKnArKyA9IHRjdHgtPmIgPj4gNDA7CisJKnArKyA9IHRjdHgtPmIgPj4gMzI7ICpwKysgPSB0Y3R4LT5iID4+IDI0OyAqcCsrID0gdGN0eC0+YiA+PiAxNjsKKwkqcCsrID0gdGN0eC0+YiA+PiAgODsgKnArKyA9IHRjdHgtPmI7CisJKnArKyA9IHRjdHgtPmMgPj4gNTY7ICpwKysgPSB0Y3R4LT5jID4+IDQ4OyAqcCsrID0gdGN0eC0+YyA+PiA0MDsKKwkqcCsrID0gdGN0eC0+YyA+PiAzMjsgKnArKyA9IHRjdHgtPmMgPj4gMjQ7ICpwKysgPSB0Y3R4LT5jID4+IDE2OworCSpwKysgPSB0Y3R4LT5jID4+ICA4OyAqcCsrID0gdGN0eC0+YzsKKworCisJLyogdW5wYWNrIHRoZSBoYXNoICovCisJaiA9IDc7CisJZm9yIChpID0gMDsgaSA8IDg7IGkrKykgeworCQlvdXRbai0tXSA9ICh0Y3R4LT5hID4+IDggKiBpKSAmIDB4ZmY7CisJfQorCWogPSAxNTsKKwlmb3IgKGkgPSAwOyBpIDwgODsgaSsrKSB7CisJCW91dFtqLS1dID0gKHRjdHgtPmIgPj4gOCAqIGkpICYgMHhmZjsKKwl9CisJaiA9IDIzOworCWZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsKKwkJb3V0W2otLV0gPSAodGN0eC0+YyA+PiA4ICogaSkgJiAweGZmOworCX0KK30KKworc3RhdGljIHZvaWQgdGdyMTYwX2ZpbmFsKHZvaWQgKmN0eCwgdTggKiBvdXQpCit7CisJc3RydWN0IHRncjE5Ml9jdHggKndjdHggPSBjdHg7CisJdTggRFs2NF07CisKKwl0Z3IxOTJfZmluYWwod2N0eCwgRCk7CisJbWVtY3B5KG91dCwgRCwgVEdSMTYwX0RJR0VTVF9TSVpFKTsKKwltZW1zZXQoRCwgMCwgVEdSMTkyX0RJR0VTVF9TSVpFKTsKK30KKworc3RhdGljIHZvaWQgdGdyMTI4X2ZpbmFsKHZvaWQgKmN0eCwgdTggKiBvdXQpCit7CisJc3RydWN0IHRncjE5Ml9jdHggKndjdHggPSBjdHg7CisJdTggRFs2NF07CisKKwl0Z3IxOTJfZmluYWwod2N0eCwgRCk7CisJbWVtY3B5KG91dCwgRCwgVEdSMTI4X0RJR0VTVF9TSVpFKTsKKwltZW1zZXQoRCwgMCwgVEdSMTkyX0RJR0VTVF9TSVpFKTsKK30KKworc3RhdGljIHN0cnVjdCBjcnlwdG9fYWxnIHRncjE5MiA9IHsKKwkuY3JhX25hbWUgPSAidGdyMTkyIiwKKwkuY3JhX2ZsYWdzID0gQ1JZUFRPX0FMR19UWVBFX0RJR0VTVCwKKwkuY3JhX2Jsb2Nrc2l6ZSA9IFRHUjE5Ml9CTE9DS19TSVpFLAorCS5jcmFfY3R4c2l6ZSA9IHNpemVvZihzdHJ1Y3QgdGdyMTkyX2N0eCksCisJLmNyYV9tb2R1bGUgPSBUSElTX01PRFVMRSwKKwkuY3JhX2xpc3QgPSBMSVNUX0hFQURfSU5JVCh0Z3IxOTIuY3JhX2xpc3QpLAorCS5jcmFfdSA9IHsuZGlnZXN0ID0geworCQkJICAgICAuZGlhX2RpZ2VzdHNpemUgPSBUR1IxOTJfRElHRVNUX1NJWkUsCisJCQkgICAgIC5kaWFfaW5pdCA9IHRncjE5Ml9pbml0LAorCQkJICAgICAuZGlhX3VwZGF0ZSA9IHRncjE5Ml91cGRhdGUsCisJCQkgICAgIC5kaWFfZmluYWwgPSB0Z3IxOTJfZmluYWx9fQorfTsKKworc3RhdGljIHN0cnVjdCBjcnlwdG9fYWxnIHRncjE2MCA9IHsKKwkuY3JhX25hbWUgPSAidGdyMTYwIiwKKwkuY3JhX2ZsYWdzID0gQ1JZUFRPX0FMR19UWVBFX0RJR0VTVCwKKwkuY3JhX2Jsb2Nrc2l6ZSA9IFRHUjE5Ml9CTE9DS19TSVpFLAorCS5jcmFfY3R4c2l6ZSA9IHNpemVvZihzdHJ1Y3QgdGdyMTkyX2N0eCksCisJLmNyYV9tb2R1bGUgPSBUSElTX01PRFVMRSwKKwkuY3JhX2xpc3QgPSBMSVNUX0hFQURfSU5JVCh0Z3IxNjAuY3JhX2xpc3QpLAorCS5jcmFfdSA9IHsuZGlnZXN0ID0geworCQkJICAgICAuZGlhX2RpZ2VzdHNpemUgPSBUR1IxNjBfRElHRVNUX1NJWkUsCisJCQkgICAgIC5kaWFfaW5pdCA9IHRncjE5Ml9pbml0LAorCQkJICAgICAuZGlhX3VwZGF0ZSA9IHRncjE5Ml91cGRhdGUsCisJCQkgICAgIC5kaWFfZmluYWwgPSB0Z3IxNjBfZmluYWx9fQorfTsKKworc3RhdGljIHN0cnVjdCBjcnlwdG9fYWxnIHRncjEyOCA9IHsKKwkuY3JhX25hbWUgPSAidGdyMTI4IiwKKwkuY3JhX2ZsYWdzID0gQ1JZUFRPX0FMR19UWVBFX0RJR0VTVCwKKwkuY3JhX2Jsb2Nrc2l6ZSA9IFRHUjE5Ml9CTE9DS19TSVpFLAorCS5jcmFfY3R4c2l6ZSA9IHNpemVvZihzdHJ1Y3QgdGdyMTkyX2N0eCksCisJLmNyYV9tb2R1bGUgPSBUSElTX01PRFVMRSwKKwkuY3JhX2xpc3QgPSBMSVNUX0hFQURfSU5JVCh0Z3IxMjguY3JhX2xpc3QpLAorCS5jcmFfdSA9IHsuZGlnZXN0ID0geworCQkJICAgICAuZGlhX2RpZ2VzdHNpemUgPSBUR1IxMjhfRElHRVNUX1NJWkUsCisJCQkgICAgIC5kaWFfaW5pdCA9IHRncjE5Ml9pbml0LAorCQkJICAgICAuZGlhX3VwZGF0ZSA9IHRncjE5Ml91cGRhdGUsCisJCQkgICAgIC5kaWFfZmluYWwgPSB0Z3IxMjhfZmluYWx9fQorfTsKKworc3RhdGljIGludCBfX2luaXQgaW5pdCh2b2lkKQoreworCWludCByZXQgPSAwOworCisJcmV0ID0gY3J5cHRvX3JlZ2lzdGVyX2FsZygmdGdyMTkyKTsKKworCWlmIChyZXQgPCAwKSB7CisJCWdvdG8gb3V0OworCX0KKworCXJldCA9IGNyeXB0b19yZWdpc3Rlcl9hbGcoJnRncjE2MCk7CisJaWYgKHJldCA8IDApIHsKKwkJY3J5cHRvX3VucmVnaXN0ZXJfYWxnKCZ0Z3IxOTIpOworCQlnb3RvIG91dDsKKwl9CisKKwlyZXQgPSBjcnlwdG9fcmVnaXN0ZXJfYWxnKCZ0Z3IxMjgpOworCWlmIChyZXQgPCAwKSB7CisJCWNyeXB0b191bnJlZ2lzdGVyX2FsZygmdGdyMTkyKTsKKwkJY3J5cHRvX3VucmVnaXN0ZXJfYWxnKCZ0Z3IxNjApOworCX0KKyAgICAgIG91dDoKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBfX2V4aXQgZmluaSh2b2lkKQoreworCWNyeXB0b191bnJlZ2lzdGVyX2FsZygmdGdyMTkyKTsKKwljcnlwdG9fdW5yZWdpc3Rlcl9hbGcoJnRncjE2MCk7CisJY3J5cHRvX3VucmVnaXN0ZXJfYWxnKCZ0Z3IxMjgpOworfQorCitNT0RVTEVfQUxJQVMoInRncjE2MCIpOworTU9EVUxFX0FMSUFTKCJ0Z3IxMjgiKTsKKworbW9kdWxlX2luaXQoaW5pdCk7Cittb2R1bGVfZXhpdChmaW5pKTsKKworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0RFU0NSSVBUSU9OKCJUaWdlciBNZXNzYWdlIERpZ2VzdCBBbGdvcml0aG0iKTsKZGlmZiAtLWdpdCBhL2NyeXB0by90d29maXNoLmMgYi9jcnlwdG8vdHdvZmlzaC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlZmZmOGMKLS0tIC9kZXYvbnVsbAorKysgYi9jcnlwdG8vdHdvZmlzaC5jCkBAIC0wLDAgKzEsOTAyIEBACisvKgorICogVHdvZmlzaCBmb3IgQ3J5cHRvQVBJCisgKgorICogT3JpZ2luYWxseSBUd29maXNoIGZvciBHUEcKKyAqIEJ5IE1hdHRoZXcgU2thbGEgPG1za2FsYUBhbnN1ei5zb29rZS5iYy5jYT4sIEp1bHkgMjYsIDE5OTgKKyAqIDI1Ni1iaXQga2V5IGxlbmd0aCBhZGRlZCBNYXJjaCAyMCwgMTk5OQorICogU29tZSBtb2RpZmljYXRpb25zIHRvIHJlZHVjZSB0aGUgdGV4dCBzaXplIGJ5IFdlcm5lciBLb2NoLCBBcHJpbCwgMTk5OAorICogUG9ydGVkIHRvIHRoZSBrZXJuZWxpIHBhdGNoIGJ5IE1hcmMgTXV0eiA8TWFyY0BNdXR6LmNvbT4KKyAqIFBvcnRlZCB0byBDcnlwdG9BUEkgYnkgQ29saW4gU2xhdGVyIDxob2hvQHRhY29tZWF0Lm5ldD4KKyAqCisgKiBUaGUgb3JpZ2luYWwgYXV0aG9yIGhhcyBkaXNjbGFpbWVkIGFsbCBjb3B5cmlnaHQgaW50ZXJlc3QgaW4gdGhpcworICogY29kZSBhbmQgdGh1cyBwdXQgaXQgaW4gdGhlIHB1YmxpYyBkb21haW4uIFRoZSBzdWJzZXF1ZW50IGF1dGhvcnMgCisgKiBoYXZlIHB1dCB0aGlzIHVuZGVyIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKiAKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcKKyAqIFVTQQorICoKKyAqIFRoaXMgY29kZSBpcyBhICJjbGVhbiByb29tIiBpbXBsZW1lbnRhdGlvbiwgd3JpdHRlbiBmcm9tIHRoZSBwYXBlcgorICogX1R3b2Zpc2g6IEEgMTI4LUJpdCBCbG9jayBDaXBoZXJfIGJ5IEJydWNlIFNjaG5laWVyLCBKb2huIEtlbHNleSwKKyAqIERvdWcgV2hpdGluZywgRGF2aWQgV2FnbmVyLCBDaHJpcyBIYWxsLCBhbmQgTmllbHMgRmVyZ3Vzb24sIGF2YWlsYWJsZQorICogdGhyb3VnaCBodHRwOi8vd3d3LmNvdW50ZXJwYW5lLmNvbS90d29maXNoLmh0bWwKKyAqCisgKiBGb3IgYmFja2dyb3VuZCBpbmZvcm1hdGlvbiBvbiBtdWx0aXBsaWNhdGlvbiBpbiBmaW5pdGUgZmllbGRzLCB1c2VkIGZvcgorICogdGhlIG1hdHJpeCBvcGVyYXRpb25zIGluIHRoZSBrZXkgc2NoZWR1bGUsIHNlZSB0aGUgYm9vayBfQ29udGVtcG9yYXJ5CisgKiBBYnN0cmFjdCBBbGdlYnJhXyBieSBKb3NlcGggQS4gR2FsbGlhbiwgZXNwZWNpYWxseSBjaGFwdGVyIDIyIGluIHRoZQorICogVGhpcmQgRWRpdGlvbi4KKyAqLworI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+CisjaW5jbHVkZSA8bGludXgvY3J5cHRvLmg+CisKKworLyogVGhlIGxhcmdlIHByZWNvbXB1dGVkIHRhYmxlcyBmb3IgdGhlIFR3b2Zpc2ggY2lwaGVyICh0d29maXNoLmMpCisgKiBUYWtlbiBmcm9tIHRoZSBzYW1lIHNvdXJjZSBhcyB0d29maXNoLmMKKyAqIE1hcmMgTXV0eiA8TWFyY0BNdXR6LmNvbT4KKyAqLworCisvKiBUaGVzZSB0d28gdGFibGVzIGFyZSB0aGUgcTAgYW5kIHExIHBlcm11dGF0aW9ucywgZXhhY3RseSBhcyBkZXNjcmliZWQgaW4KKyAqIHRoZSBUd29maXNoIHBhcGVyLiAqLworCitzdGF0aWMgY29uc3QgdTggcTBbMjU2XSA9IHsKKyAgIDB4QTksIDB4NjcsIDB4QjMsIDB4RTgsIDB4MDQsIDB4RkQsIDB4QTMsIDB4NzYsIDB4OUEsIDB4OTIsIDB4ODAsIDB4NzgsCisgICAweEU0LCAweERELCAweEQxLCAweDM4LCAweDBELCAweEM2LCAweDM1LCAweDk4LCAweDE4LCAweEY3LCAweEVDLCAweDZDLAorICAgMHg0MywgMHg3NSwgMHgzNywgMHgyNiwgMHhGQSwgMHgxMywgMHg5NCwgMHg0OCwgMHhGMiwgMHhEMCwgMHg4QiwgMHgzMCwKKyAgIDB4ODQsIDB4NTQsIDB4REYsIDB4MjMsIDB4MTksIDB4NUIsIDB4M0QsIDB4NTksIDB4RjMsIDB4QUUsIDB4QTIsIDB4ODIsCisgICAweDYzLCAweDAxLCAweDgzLCAweDJFLCAweEQ5LCAweDUxLCAweDlCLCAweDdDLCAweEE2LCAweEVCLCAweEE1LCAweEJFLAorICAgMHgxNiwgMHgwQywgMHhFMywgMHg2MSwgMHhDMCwgMHg4QywgMHgzQSwgMHhGNSwgMHg3MywgMHgyQywgMHgyNSwgMHgwQiwKKyAgIDB4QkIsIDB4NEUsIDB4ODksIDB4NkIsIDB4NTMsIDB4NkEsIDB4QjQsIDB4RjEsIDB4RTEsIDB4RTYsIDB4QkQsIDB4NDUsCisgICAweEUyLCAweEY0LCAweEI2LCAweDY2LCAweENDLCAweDk1LCAweDAzLCAweDU2LCAweEQ0LCAweDFDLCAweDFFLCAweEQ3LAorICAgMHhGQiwgMHhDMywgMHg4RSwgMHhCNSwgMHhFOSwgMHhDRiwgMHhCRiwgMHhCQSwgMHhFQSwgMHg3NywgMHgzOSwgMHhBRiwKKyAgIDB4MzMsIDB4QzksIDB4NjIsIDB4NzEsIDB4ODEsIDB4NzksIDB4MDksIDB4QUQsIDB4MjQsIDB4Q0QsIDB4RjksIDB4RDgsCisgICAweEU1LCAweEM1LCAweEI5LCAweDRELCAweDQ0LCAweDA4LCAweDg2LCAweEU3LCAweEExLCAweDFELCAweEFBLCAweEVELAorICAgMHgwNiwgMHg3MCwgMHhCMiwgMHhEMiwgMHg0MSwgMHg3QiwgMHhBMCwgMHgxMSwgMHgzMSwgMHhDMiwgMHgyNywgMHg5MCwKKyAgIDB4MjAsIDB4RjYsIDB4NjAsIDB4RkYsIDB4OTYsIDB4NUMsIDB4QjEsIDB4QUIsIDB4OUUsIDB4OUMsIDB4NTIsIDB4MUIsCisgICAweDVGLCAweDkzLCAweDBBLCAweEVGLCAweDkxLCAweDg1LCAweDQ5LCAweEVFLCAweDJELCAweDRGLCAweDhGLCAweDNCLAorICAgMHg0NywgMHg4NywgMHg2RCwgMHg0NiwgMHhENiwgMHgzRSwgMHg2OSwgMHg2NCwgMHgyQSwgMHhDRSwgMHhDQiwgMHgyRiwKKyAgIDB4RkMsIDB4OTcsIDB4MDUsIDB4N0EsIDB4QUMsIDB4N0YsIDB4RDUsIDB4MUEsIDB4NEIsIDB4MEUsIDB4QTcsIDB4NUEsCisgICAweDI4LCAweDE0LCAweDNGLCAweDI5LCAweDg4LCAweDNDLCAweDRDLCAweDAyLCAweEI4LCAweERBLCAweEIwLCAweDE3LAorICAgMHg1NSwgMHgxRiwgMHg4QSwgMHg3RCwgMHg1NywgMHhDNywgMHg4RCwgMHg3NCwgMHhCNywgMHhDNCwgMHg5RiwgMHg3MiwKKyAgIDB4N0UsIDB4MTUsIDB4MjIsIDB4MTIsIDB4NTgsIDB4MDcsIDB4OTksIDB4MzQsIDB4NkUsIDB4NTAsIDB4REUsIDB4NjgsCisgICAweDY1LCAweEJDLCAweERCLCAweEY4LCAweEM4LCAweEE4LCAweDJCLCAweDQwLCAweERDLCAweEZFLCAweDMyLCAweEE0LAorICAgMHhDQSwgMHgxMCwgMHgyMSwgMHhGMCwgMHhEMywgMHg1RCwgMHgwRiwgMHgwMCwgMHg2RiwgMHg5RCwgMHgzNiwgMHg0MiwKKyAgIDB4NEEsIDB4NUUsIDB4QzEsIDB4RTAKK307CisKK3N0YXRpYyBjb25zdCB1OCBxMVsyNTZdID0geworICAgMHg3NSwgMHhGMywgMHhDNiwgMHhGNCwgMHhEQiwgMHg3QiwgMHhGQiwgMHhDOCwgMHg0QSwgMHhEMywgMHhFNiwgMHg2QiwKKyAgIDB4NDUsIDB4N0QsIDB4RTgsIDB4NEIsIDB4RDYsIDB4MzIsIDB4RDgsIDB4RkQsIDB4MzcsIDB4NzEsIDB4RjEsIDB4RTEsCisgICAweDMwLCAweDBGLCAweEY4LCAweDFCLCAweDg3LCAweEZBLCAweDA2LCAweDNGLCAweDVFLCAweEJBLCAweEFFLCAweDVCLAorICAgMHg4QSwgMHgwMCwgMHhCQywgMHg5RCwgMHg2RCwgMHhDMSwgMHhCMSwgMHgwRSwgMHg4MCwgMHg1RCwgMHhEMiwgMHhENSwKKyAgIDB4QTAsIDB4ODQsIDB4MDcsIDB4MTQsIDB4QjUsIDB4OTAsIDB4MkMsIDB4QTMsIDB4QjIsIDB4NzMsIDB4NEMsIDB4NTQsCisgICAweDkyLCAweDc0LCAweDM2LCAweDUxLCAweDM4LCAweEIwLCAweEJELCAweDVBLCAweEZDLCAweDYwLCAweDYyLCAweDk2LAorICAgMHg2QywgMHg0MiwgMHhGNywgMHgxMCwgMHg3QywgMHgyOCwgMHgyNywgMHg4QywgMHgxMywgMHg5NSwgMHg5QywgMHhDNywKKyAgIDB4MjQsIDB4NDYsIDB4M0IsIDB4NzAsIDB4Q0EsIDB4RTMsIDB4ODUsIDB4Q0IsIDB4MTEsIDB4RDAsIDB4OTMsIDB4QjgsCisgICAweEE2LCAweDgzLCAweDIwLCAweEZGLCAweDlGLCAweDc3LCAweEMzLCAweENDLCAweDAzLCAweDZGLCAweDA4LCAweEJGLAorICAgMHg0MCwgMHhFNywgMHgyQiwgMHhFMiwgMHg3OSwgMHgwQywgMHhBQSwgMHg4MiwgMHg0MSwgMHgzQSwgMHhFQSwgMHhCOSwKKyAgIDB4RTQsIDB4OUEsIDB4QTQsIDB4OTcsIDB4N0UsIDB4REEsIDB4N0EsIDB4MTcsIDB4NjYsIDB4OTQsIDB4QTEsIDB4MUQsCisgICAweDNELCAweEYwLCAweERFLCAweEIzLCAweDBCLCAweDcyLCAweEE3LCAweDFDLCAweEVGLCAweEQxLCAweDUzLCAweDNFLAorICAgMHg4RiwgMHgzMywgMHgyNiwgMHg1RiwgMHhFQywgMHg3NiwgMHgyQSwgMHg0OSwgMHg4MSwgMHg4OCwgMHhFRSwgMHgyMSwKKyAgIDB4QzQsIDB4MUEsIDB4RUIsIDB4RDksIDB4QzUsIDB4MzksIDB4OTksIDB4Q0QsIDB4QUQsIDB4MzEsIDB4OEIsIDB4MDEsCisgICAweDE4LCAweDIzLCAweERELCAweDFGLCAweDRFLCAweDJELCAweEY5LCAweDQ4LCAweDRGLCAweEYyLCAweDY1LCAweDhFLAorICAgMHg3OCwgMHg1QywgMHg1OCwgMHgxOSwgMHg4RCwgMHhFNSwgMHg5OCwgMHg1NywgMHg2NywgMHg3RiwgMHgwNSwgMHg2NCwKKyAgIDB4QUYsIDB4NjMsIDB4QjYsIDB4RkUsIDB4RjUsIDB4QjcsIDB4M0MsIDB4QTUsIDB4Q0UsIDB4RTksIDB4NjgsIDB4NDQsCisgICAweEUwLCAweDRELCAweDQzLCAweDY5LCAweDI5LCAweDJFLCAweEFDLCAweDE1LCAweDU5LCAweEE4LCAweDBBLCAweDlFLAorICAgMHg2RSwgMHg0NywgMHhERiwgMHgzNCwgMHgzNSwgMHg2QSwgMHhDRiwgMHhEQywgMHgyMiwgMHhDOSwgMHhDMCwgMHg5QiwKKyAgIDB4ODksIDB4RDQsIDB4RUQsIDB4QUIsIDB4MTIsIDB4QTIsIDB4MEQsIDB4NTIsIDB4QkIsIDB4MDIsIDB4MkYsIDB4QTksCisgICAweEQ3LCAweDYxLCAweDFFLCAweEI0LCAweDUwLCAweDA0LCAweEY2LCAweEMyLCAweDE2LCAweDI1LCAweDg2LCAweDU2LAorICAgMHg1NSwgMHgwOSwgMHhCRSwgMHg5MQorfTsKKworLyogVGhlc2UgTURTIHRhYmxlcyBhcmUgYWN0dWFsbHkgdGFibGVzIG9mIE1EUyBjb21wb3NlZCB3aXRoIHEwIGFuZCBxMSwKKyAqIGJlY2F1c2UgaXQgaXMgb25seSBldmVyIHVzZWQgdGhhdCB3YXkgYW5kIHdlIGNhbiBzYXZlIHNvbWUgdGltZSBieQorICogcHJlY29tcHV0aW5nLiAgT2YgY291cnNlIHRoZSBtYWluIHNhdmluZyBjb21lcyBmcm9tIHByZWNvbXB1dGluZyB0aGUKKyAqIEdGKDJeOCkgbXVsdGlwbGljYXRpb24gaW52b2x2ZWQgaW4gdGhlIE1EUyBtYXRyaXggbXVsdGlwbHk7IGJ5IGxvb2tpbmcKKyAqIHRoaW5ncyB1cCBpbiB0aGVzZSB0YWJsZXMgd2UgcmVkdWNlIHRoZSBtYXRyaXggbXVsdGlwbHkgdG8gZm91ciBsb29rdXBzCisgKiBhbmQgdGhyZWUgWE9Scy4gIFNlbWktZm9ybWFsbHksIHRoZSBkZWZpbml0aW9uIG9mIHRoZXNlIHRhYmxlcyBpczoKKyAqIG1kc1swXVtpXSA9IE1EUyAocTFbaV0gMCAwIDApXlQgIG1kc1sxXVtpXSA9IE1EUyAoMCBxMFtpXSAwIDApXlQKKyAqIG1kc1syXVtpXSA9IE1EUyAoMCAwIHExW2ldIDApXlQgIG1kc1szXVtpXSA9IE1EUyAoMCAwIDAgcTBbaV0pXlQKKyAqIHdoZXJlIF5UIG1lYW5zICJ0cmFuc3Bvc2UiLCB0aGUgbWF0cml4IG11bHRpcGx5IGlzIHBlcmZvcm1lZCBpbiBHRigyXjgpCisgKiByZXByZXNlbnRlZCBhcyBHRigyKVt4XS92KHgpIHdoZXJlIHYoeCk9eF44K3heNit4XjUreF4zKzEgYXMgZGVzY3JpYmVkCisgKiBieSBTY2huZWllciBldCBhbCwgYW5kIEknbSBjYXN1YWxseSBnbG9zc2luZyBvdmVyIHRoZSBieXRlL3dvcmQKKyAqIGNvbnZlcnNpb24gaXNzdWVzLiAqLworCitzdGF0aWMgY29uc3QgdTMyIG1kc1s0XVsyNTZdID0geworICAgezB4QkNCQzMyNzUsIDB4RUNFQzIxRjMsIDB4MjAyMDQzQzYsIDB4QjNCM0M5RjQsIDB4REFEQTAzREIsIDB4MDIwMjhCN0IsCisgICAgMHhFMkUyMkJGQiwgMHg5RTlFRkFDOCwgMHhDOUM5RUM0QSwgMHhENEQ0MDlEMywgMHgxODE4NkJFNiwgMHgxRTFFOUY2QiwKKyAgICAweDk4OTgwRTQ1LCAweEIyQjIzODdELCAweEE2QTZEMkU4LCAweDI2MjZCNzRCLCAweDNDM0M1N0Q2LCAweDkzOTM4QTMyLAorICAgIDB4ODI4MkVFRDgsIDB4NTI1Mjk4RkQsIDB4N0I3QkQ0MzcsIDB4QkJCQjM3NzEsIDB4NUI1Qjk3RjEsIDB4NDc0NzgzRTEsCisgICAgMHgyNDI0M0MzMCwgMHg1MTUxRTIwRiwgMHhCQUJBQzZGOCwgMHg0QTRBRjMxQiwgMHhCRkJGNDg4NywgMHgwRDBENzBGQSwKKyAgICAweEIwQjBCMzA2LCAweDc1NzVERTNGLCAweEQyRDJGRDVFLCAweDdEN0QyMEJBLCAweDY2NjYzMUFFLCAweDNBM0FBMzVCLAorICAgIDB4NTk1OTFDOEEsIDB4MDAwMDAwMDAsIDB4Q0RDRDkzQkMsIDB4MUExQUUwOUQsIDB4QUVBRTJDNkQsIDB4N0Y3RkFCQzEsCisgICAgMHgyQjJCQzdCMSwgMHhCRUJFQjkwRSwgMHhFMEUwQTA4MCwgMHg4QThBMTA1RCwgMHgzQjNCNTJEMiwgMHg2NDY0QkFENSwKKyAgICAweEQ4RDg4OEEwLCAweEU3RTdBNTg0LCAweDVGNUZFODA3LCAweDFCMUIxMTE0LCAweDJDMkNDMkI1LCAweEZDRkNCNDkwLAorICAgIDB4MzEzMTI3MkMsIDB4ODA4MDY1QTMsIDB4NzM3MzJBQjIsIDB4MEMwQzgxNzMsIDB4Nzk3OTVGNEMsIDB4NkI2QjQxNTQsCisgICAgMHg0QjRCMDI5MiwgMHg1MzUzNjk3NCwgMHg5NDk0OEYzNiwgMHg4MzgzMUY1MSwgMHgyQTJBMzYzOCwgMHhDNEM0OUNCMCwKKyAgICAweDIyMjJDOEJELCAweEQ1RDVGODVBLCAweEJEQkRDM0ZDLCAweDQ4NDg3ODYwLCAweEZGRkZDRTYyLCAweDRDNEMwNzk2LAorICAgIDB4NDE0MTc3NkMsIDB4QzdDN0U2NDIsIDB4RUJFQjI0RjcsIDB4MUMxQzE0MTAsIDB4NUQ1RDYzN0MsIDB4MzYzNjIyMjgsCisgICAgMHg2NzY3QzAyNywgMHhFOUU5QUY4QywgMHg0NDQ0RjkxMywgMHgxNDE0RUE5NSwgMHhGNUY1QkI5QywgMHhDRkNGMThDNywKKyAgICAweDNGM0YyRDI0LCAweEMwQzBFMzQ2LCAweDcyNzJEQjNCLCAweDU0NTQ2QzcwLCAweDI5Mjk0Q0NBLCAweEYwRjAzNUUzLAorICAgIDB4MDgwOEZFODUsIDB4QzZDNjE3Q0IsIDB4RjNGMzRGMTEsIDB4OEM4Q0U0RDAsIDB4QTRBNDU5OTMsIDB4Q0FDQTk2QjgsCisgICAgMHg2ODY4M0JBNiwgMHhCOEI4NEQ4MywgMHgzODM4MjgyMCwgMHhFNUU1MkVGRiwgMHhBREFENTY5RiwgMHgwQjBCODQ3NywKKyAgICAweEM4QzgxREMzLCAweDk5OTlGRkNDLCAweDU4NThFRDAzLCAweDE5MTk5QTZGLCAweDBFMEUwQTA4LCAweDk1OTU3RUJGLAorICAgIDB4NzA3MDUwNDAsIDB4RjdGNzMwRTcsIDB4NkU2RUNGMkIsIDB4MUYxRjZFRTIsIDB4QjVCNTNENzksIDB4MDkwOTBGMEMsCisgICAgMHg2MTYxMzRBQSwgMHg1NzU3MTY4MiwgMHg5RjlGMEI0MSwgMHg5RDlEODAzQSwgMHgxMTExNjRFQSwgMHgyNTI1Q0RCOSwKKyAgICAweEFGQUZEREU0LCAweDQ1NDUwODlBLCAweERGREY4REE0LCAweEEzQTM1Qzk3LCAweEVBRUFENTdFLCAweDM1MzU1OERBLAorICAgIDB4RURFREQwN0EsIDB4NDM0M0ZDMTcsIDB4RjhGOENCNjYsIDB4RkJGQkIxOTQsIDB4MzczN0QzQTEsIDB4RkFGQTQwMUQsCisgICAgMHhDMkMyNjgzRCwgMHhCNEI0Q0NGMCwgMHgzMjMyNURERSwgMHg5QzlDNzFCMywgMHg1NjU2RTcwQiwgMHhFM0UzREE3MiwKKyAgICAweDg3ODc2MEE3LCAweDE1MTUxQjFDLCAweEY5RjkzQUVGLCAweDYzNjNCRkQxLCAweDM0MzRBOTUzLCAweDlBOUE4NTNFLAorICAgIDB4QjFCMTQyOEYsIDB4N0M3Q0QxMzMsIDB4ODg4ODlCMjYsIDB4M0QzREE2NUYsIDB4QTFBMUQ3RUMsIDB4RTRFNERGNzYsCisgICAgMHg4MTgxOTQyQSwgMHg5MTkxMDE0OSwgMHgwRjBGRkI4MSwgMHhFRUVFQUE4OCwgMHgxNjE2NjFFRSwgMHhEN0Q3NzMyMSwKKyAgICAweDk3OTdGNUM0LCAweEE1QTVBODFBLCAweEZFRkUzRkVCLCAweDZENkRCNUQ5LCAweDc4NzhBRUM1LCAweEM1QzU2RDM5LAorICAgIDB4MUQxREU1OTksIDB4NzY3NkE0Q0QsIDB4M0UzRURDQUQsIDB4Q0JDQjY3MzEsIDB4QjZCNjQ3OEIsIDB4RUZFRjVCMDEsCisgICAgMHgxMjEyMUUxOCwgMHg2MDYwQzUyMywgMHg2QTZBQjBERCwgMHg0RDRERjYxRiwgMHhDRUNFRTk0RSwgMHhERURFN0MyRCwKKyAgICAweDU1NTU5REY5LCAweDdFN0U1QTQ4LCAweDIxMjFCMjRGLCAweDAzMDM3QUYyLCAweEEwQTAyNjY1LCAweDVFNUUxOThFLAorICAgIDB4NUE1QTY2NzgsIDB4NjU2NTRCNUMsIDB4NjI2MjRFNTgsIDB4RkRGRDQ1MTksIDB4MDYwNkY0OEQsIDB4NDA0MDg2RTUsCisgICAgMHhGMkYyQkU5OCwgMHgzMzMzQUM1NywgMHgxNzE3OTA2NywgMHgwNTA1OEU3RiwgMHhFOEU4NUUwNSwgMHg0RjRGN0Q2NCwKKyAgICAweDg5ODk2QUFGLCAweDEwMTA5NTYzLCAweDc0NzQyRkI2LCAweDBBMEE3NUZFLCAweDVDNUM5MkY1LCAweDlCOUI3NEI3LAorICAgIDB4MkQyRDMzM0MsIDB4MzAzMEQ2QTUsIDB4MkUyRTQ5Q0UsIDB4NDk0OTg5RTksIDB4NDY0NjcyNjgsIDB4Nzc3NzU1NDQsCisgICAgMHhBOEE4RDhFMCwgMHg5Njk2MDQ0RCwgMHgyODI4QkQ0MywgMHhBOUE5Mjk2OSwgMHhEOUQ5NzkyOSwgMHg4Njg2OTEyRSwKKyAgICAweEQxRDE4N0FDLCAweEY0RjQ0QTE1LCAweDhEOEQxNTU5LCAweEQ2RDY4MkE4LCAweEI5QjlCQzBBLCAweDQyNDIwRDlFLAorICAgIDB4RjZGNkMxNkUsIDB4MkYyRkI4NDcsIDB4RERERDA2REYsIDB4MjMyMzM5MzQsIDB4Q0NDQzYyMzUsIDB4RjFGMUM0NkEsCisgICAgMHhDMUMxMTJDRiwgMHg4NTg1RUJEQywgMHg4RjhGOUUyMiwgMHg3MTcxQTFDOSwgMHg5MDkwRjBDMCwgMHhBQUFBNTM5QiwKKyAgICAweDAxMDFGMTg5LCAweDhCOEJFMUQ0LCAweDRFNEU4Q0VELCAweDhFOEU2RkFCLCAweEFCQUJBMjEyLCAweDZGNkYzRUEyLAorICAgIDB4RTZFNjU0MEQsIDB4REJEQkYyNTIsIDB4OTI5MjdCQkIsIDB4QjdCN0I2MDIsIDB4Njk2OUNBMkYsIDB4MzkzOUQ5QTksCisgICAgMHhEM0QzMENENywgMHhBN0E3MjM2MSwgMHhBMkEyQUQxRSwgMHhDM0MzOTlCNCwgMHg2QzZDNDQ1MCwgMHgwNzA3MDUwNCwKKyAgICAweDA0MDQ3RkY2LCAweDI3Mjc0NkMyLCAweEFDQUNBNzE2LCAweEQwRDA3NjI1LCAweDUwNTAxMzg2LCAweERDRENGNzU2LAorICAgIDB4ODQ4NDFBNTUsIDB4RTFFMTUxMDksIDB4N0E3QTI1QkUsIDB4MTMxM0VGOTF9LAorCisgICB7MHhBOUQ5MzkzOSwgMHg2NzkwMTcxNywgMHhCMzcxOUM5QywgMHhFOEQyQTZBNiwgMHgwNDA1MDcwNywgMHhGRDk4NTI1MiwKKyAgICAweEEzNjU4MDgwLCAweDc2REZFNEU0LCAweDlBMDg0NTQ1LCAweDkyMDI0QjRCLCAweDgwQTBFMEUwLCAweDc4NjY1QTVBLAorICAgIDB4RTREREFGQUYsIDB4RERCMDZBNkEsIDB4RDFCRjYzNjMsIDB4MzgzNjJBMkEsIDB4MEQ1NEU2RTYsIDB4QzY0MzIwMjAsCisgICAgMHgzNTYyQ0NDQywgMHg5OEJFRjJGMiwgMHgxODFFMTIxMiwgMHhGNzI0RUJFQiwgMHhFQ0Q3QTFBMSwgMHg2Qzc3NDE0MSwKKyAgICAweDQzQkQyODI4LCAweDc1MzJCQ0JDLCAweDM3RDQ3QjdCLCAweDI2OUI4ODg4LCAweEZBNzAwRDBELCAweDEzRjk0NDQ0LAorICAgIDB4OTRCMUZCRkIsIDB4NDg1QTdFN0UsIDB4RjI3QTAzMDMsIDB4RDBFNDhDOEMsIDB4OEI0N0I2QjYsIDB4MzAzQzI0MjQsCisgICAgMHg4NEE1RTdFNywgMHg1NDQxNkI2QiwgMHhERjA2RERERCwgMHgyM0M1NjA2MCwgMHgxOTQ1RkRGRCwgMHg1QkEzM0EzQSwKKyAgICAweDNENjhDMkMyLCAweDU5MTU4RDhELCAweEYzMjFFQ0VDLCAweEFFMzE2NjY2LCAweEEyM0U2RjZGLCAweDgyMTY1NzU3LAorICAgIDB4NjM5NTEwMTAsIDB4MDE1QkVGRUYsIDB4ODM0REI4QjgsIDB4MkU5MTg2ODYsIDB4RDlCNTZENkQsIDB4NTExRjgzODMsCisgICAgMHg5QjUzQUFBQSwgMHg3QzYzNUQ1RCwgMHhBNjNCNjg2OCwgMHhFQjNGRkVGRSwgMHhBNUQ2MzAzMCwgMHhCRTI1N0E3QSwKKyAgICAweDE2QTdBQ0FDLCAweDBDMEYwOTA5LCAweEUzMzVGMEYwLCAweDYxMjNBN0E3LCAweEMwRjA5MDkwLCAweDhDQUZFOUU5LAorICAgIDB4M0E4MDlEOUQsIDB4RjU5MjVDNUMsIDB4NzM4MTBDMEMsIDB4MkMyNzMxMzEsIDB4MjU3NkQwRDAsIDB4MEJFNzU2NTYsCisgICAgMHhCQjdCOTI5MiwgMHg0RUU5Q0VDRSwgMHg4OUYxMDEwMSwgMHg2QjlGMUUxRSwgMHg1M0E5MzQzNCwgMHg2QUM0RjFGMSwKKyAgICAweEI0OTlDM0MzLCAweEYxOTc1QjVCLCAweEUxODM0NzQ3LCAweEU2NkIxODE4LCAweEJEQzgyMjIyLCAweDQ1MEU5ODk4LAorICAgIDB4RTI2RTFGMUYsIDB4RjRDOUIzQjMsIDB4QjYyRjc0NzQsIDB4NjZDQkY4RjgsIDB4Q0NGRjk5OTksIDB4OTVFQTE0MTQsCisgICAgMHgwM0VENTg1OCwgMHg1NkY3RENEQywgMHhENEUxOEI4QiwgMHgxQzFCMTUxNSwgMHgxRUFEQTJBMiwgMHhENzBDRDNEMywKKyAgICAweEZCMkJFMkUyLCAweEMzMURDOEM4LCAweDhFMTk1RTVFLCAweEI1QzIyQzJDLCAweEU5ODk0OTQ5LCAweENGMTJDMUMxLAorICAgIDB4QkY3RTk1OTUsIDB4QkEyMDdEN0QsIDB4RUE2NDExMTEsIDB4Nzc4NDBCMEIsIDB4Mzk2REM1QzUsIDB4QUY2QTg5ODksCisgICAgMHgzM0QxN0M3QywgMHhDOUExNzE3MSwgMHg2MkNFRkZGRiwgMHg3MTM3QkJCQiwgMHg4MUZCMEYwRiwgMHg3OTNEQjVCNSwKKyAgICAweDA5NTFFMUUxLCAweEFEREMzRTNFLCAweDI0MkQzRjNGLCAweENEQTQ3Njc2LCAweEY5OUQ1NTU1LCAweEQ4RUU4MjgyLAorICAgIDB4RTU4NjQwNDAsIDB4QzVBRTc4NzgsIDB4QjlDRDI1MjUsIDB4NEQwNDk2OTYsIDB4NDQ1NTc3NzcsIDB4MDgwQTBFMEUsCisgICAgMHg4NjEzNTA1MCwgMHhFNzMwRjdGNywgMHhBMUQzMzczNywgMHgxRDQwRkFGQSwgMHhBQTM0NjE2MSwgMHhFRDhDNEU0RSwKKyAgICAweDA2QjNCMEIwLCAweDcwNkM1NDU0LCAweEIyMkE3MzczLCAweEQyNTIzQjNCLCAweDQxMEI5RjlGLCAweDdCOEIwMjAyLAorICAgIDB4QTA4OEQ4RDgsIDB4MTE0RkYzRjMsIDB4MzE2N0NCQ0IsIDB4QzI0NjI3MjcsIDB4MjdDMDY3NjcsIDB4OTBCNEZDRkMsCisgICAgMHgyMDI4MzgzOCwgMHhGNjdGMDQwNCwgMHg2MDc4NDg0OCwgMHhGRjJFRTVFNSwgMHg5NjA3NEM0QywgMHg1QzRCNjU2NSwKKyAgICAweEIxQzcyQjJCLCAweEFCNkY4RThFLCAweDlFMEQ0MjQyLCAweDlDQkJGNUY1LCAweDUyRjJEQkRCLCAweDFCRjM0QTRBLAorICAgIDB4NUZBNjNEM0QsIDB4OTM1OUE0QTQsIDB4MEFCQ0I5QjksIDB4RUYzQUY5RjksIDB4OTFFRjEzMTMsIDB4ODVGRTA4MDgsCisgICAgMHg0OTAxOTE5MSwgMHhFRTYxMTYxNiwgMHgyRDdDREVERSwgMHg0RkIyMjEyMSwgMHg4RjQyQjFCMSwgMHgzQkRCNzI3MiwKKyAgICAweDQ3QjgyRjJGLCAweDg3NDhCRkJGLCAweDZEMkNBRUFFLCAweDQ2RTNDMEMwLCAweEQ2NTczQzNDLCAweDNFODU5QTlBLAorICAgIDB4NjkyOUE5QTksIDB4NjQ3RDRGNEYsIDB4MkE5NDgxODEsIDB4Q0U0OTJFMkUsIDB4Q0IxN0M2QzYsIDB4MkZDQTY5NjksCisgICAgMHhGQ0MzQkRCRCwgMHg5NzVDQTNBMywgMHgwNTVFRThFOCwgMHg3QUQwRURFRCwgMHhBQzg3RDFEMSwgMHg3RjhFMDUwNSwKKyAgICAweEQ1QkE2NDY0LCAweDFBQThBNUE1LCAweDRCQjcyNjI2LCAweDBFQjlCRUJFLCAweEE3NjA4Nzg3LCAweDVBRjhENUQ1LAorICAgIDB4MjgyMjM2MzYsIDB4MTQxMTFCMUIsIDB4M0ZERTc1NzUsIDB4Mjk3OUQ5RDksIDB4ODhBQUVFRUUsIDB4M0MzMzJEMkQsCisgICAgMHg0QzVGNzk3OSwgMHgwMkI2QjdCNywgMHhCODk2Q0FDQSwgMHhEQTU4MzUzNSwgMHhCMDlDQzRDNCwgMHgxN0ZDNDM0MywKKyAgICAweDU1MUE4NDg0LCAweDFGRjY0RDRELCAweDhBMUM1OTU5LCAweDdEMzhCMkIyLCAweDU3QUMzMzMzLCAweEM3MThDRkNGLAorICAgIDB4OERGNDA2MDYsIDB4NzQ2OTUzNTMsIDB4Qjc3NDlCOUIsIDB4QzRGNTk3OTcsIDB4OUY1NkFEQUQsIDB4NzJEQUUzRTMsCisgICAgMHg3RUQ1RUFFQSwgMHgxNTRBRjRGNCwgMHgyMjlFOEY4RiwgMHgxMkEyQUJBQiwgMHg1ODRFNjI2MiwgMHgwN0U4NUY1RiwKKyAgICAweDk5RTUxRDFELCAweDM0MzkyMzIzLCAweDZFQzFGNkY2LCAweDUwNDQ2QzZDLCAweERFNUQzMjMyLCAweDY4NzI0NjQ2LAorICAgIDB4NjUyNkEwQTAsIDB4QkM5M0NEQ0QsIDB4REIwM0RBREEsIDB4RjhDNkJBQkEsIDB4QzhGQTlFOUUsIDB4QTg4MkQ2RDYsCisgICAgMHgyQkNGNkU2RSwgMHg0MDUwNzA3MCwgMHhEQ0VCODU4NSwgMHhGRTc1MEEwQSwgMHgzMjhBOTM5MywgMHhBNDhEREZERiwKKyAgICAweENBNEMyOTI5LCAweDEwMTQxQzFDLCAweDIxNzNEN0Q3LCAweEYwQ0NCNEI0LCAweEQzMDlENEQ0LCAweDVEMTA4QThBLAorICAgIDB4MEZFMjUxNTEsIDB4MDAwMDAwMDAsIDB4NkY5QTE5MTksIDB4OURFMDFBMUEsIDB4MzY4Rjk0OTQsIDB4NDJFNkM3QzcsCisgICAgMHg0QUVDQzlDOSwgMHg1RUZERDJEMiwgMHhDMUFCN0Y3RiwgMHhFMEQ4QThBOH0sCisKKyAgIHsweEJDNzVCQzMyLCAweEVDRjNFQzIxLCAweDIwQzYyMDQzLCAweEIzRjRCM0M5LCAweERBREJEQTAzLCAweDAyN0IwMjhCLAorICAgIDB4RTJGQkUyMkIsIDB4OUVDODlFRkEsIDB4Qzk0QUM5RUMsIDB4RDREM0Q0MDksIDB4MThFNjE4NkIsIDB4MUU2QjFFOUYsCisgICAgMHg5ODQ1OTgwRSwgMHhCMjdEQjIzOCwgMHhBNkU4QTZEMiwgMHgyNjRCMjZCNywgMHgzQ0Q2M0M1NywgMHg5MzMyOTM4QSwKKyAgICAweDgyRDg4MkVFLCAweDUyRkQ1Mjk4LCAweDdCMzc3QkQ0LCAweEJCNzFCQjM3LCAweDVCRjE1Qjk3LCAweDQ3RTE0NzgzLAorICAgIDB4MjQzMDI0M0MsIDB4NTEwRjUxRTIsIDB4QkFGOEJBQzYsIDB4NEExQjRBRjMsIDB4QkY4N0JGNDgsIDB4MERGQTBENzAsCisgICAgMHhCMDA2QjBCMywgMHg3NTNGNzVERSwgMHhEMjVFRDJGRCwgMHg3REJBN0QyMCwgMHg2NkFFNjYzMSwgMHgzQTVCM0FBMywKKyAgICAweDU5OEE1OTFDLCAweDAwMDAwMDAwLCAweENEQkNDRDkzLCAweDFBOUQxQUUwLCAweEFFNkRBRTJDLCAweDdGQzE3RkFCLAorICAgIDB4MkJCMTJCQzcsIDB4QkUwRUJFQjksIDB4RTA4MEUwQTAsIDB4OEE1RDhBMTAsIDB4M0JEMjNCNTIsIDB4NjRENTY0QkEsCisgICAgMHhEOEEwRDg4OCwgMHhFNzg0RTdBNSwgMHg1RjA3NUZFOCwgMHgxQjE0MUIxMSwgMHgyQ0I1MkNDMiwgMHhGQzkwRkNCNCwKKyAgICAweDMxMkMzMTI3LCAweDgwQTM4MDY1LCAweDczQjI3MzJBLCAweDBDNzMwQzgxLCAweDc5NEM3OTVGLCAweDZCNTQ2QjQxLAorICAgIDB4NEI5MjRCMDIsIDB4NTM3NDUzNjksIDB4OTQzNjk0OEYsIDB4ODM1MTgzMUYsIDB4MkEzODJBMzYsIDB4QzRCMEM0OUMsCisgICAgMHgyMkJEMjJDOCwgMHhENTVBRDVGOCwgMHhCREZDQkRDMywgMHg0ODYwNDg3OCwgMHhGRjYyRkZDRSwgMHg0Qzk2NEMwNywKKyAgICAweDQxNkM0MTc3LCAweEM3NDJDN0U2LCAweEVCRjdFQjI0LCAweDFDMTAxQzE0LCAweDVEN0M1RDYzLCAweDM2MjgzNjIyLAorICAgIDB4NjcyNzY3QzAsIDB4RTk4Q0U5QUYsIDB4NDQxMzQ0RjksIDB4MTQ5NTE0RUEsIDB4RjU5Q0Y1QkIsIDB4Q0ZDN0NGMTgsCisgICAgMHgzRjI0M0YyRCwgMHhDMDQ2QzBFMywgMHg3MjNCNzJEQiwgMHg1NDcwNTQ2QywgMHgyOUNBMjk0QywgMHhGMEUzRjAzNSwKKyAgICAweDA4ODUwOEZFLCAweEM2Q0JDNjE3LCAweEYzMTFGMzRGLCAweDhDRDA4Q0U0LCAweEE0OTNBNDU5LCAweENBQjhDQTk2LAorICAgIDB4NjhBNjY4M0IsIDB4Qjg4M0I4NEQsIDB4MzgyMDM4MjgsIDB4RTVGRkU1MkUsIDB4QUQ5RkFENTYsIDB4MEI3NzBCODQsCisgICAgMHhDOEMzQzgxRCwgMHg5OUNDOTlGRiwgMHg1ODAzNThFRCwgMHgxOTZGMTk5QSwgMHgwRTA4MEUwQSwgMHg5NUJGOTU3RSwKKyAgICAweDcwNDA3MDUwLCAweEY3RTdGNzMwLCAweDZFMkI2RUNGLCAweDFGRTIxRjZFLCAweEI1NzlCNTNELCAweDA5MEMwOTBGLAorICAgIDB4NjFBQTYxMzQsIDB4NTc4MjU3MTYsIDB4OUY0MTlGMEIsIDB4OUQzQTlEODAsIDB4MTFFQTExNjQsIDB4MjVCOTI1Q0QsCisgICAgMHhBRkU0QUZERCwgMHg0NTlBNDUwOCwgMHhERkE0REY4RCwgMHhBMzk3QTM1QywgMHhFQTdFRUFENSwgMHgzNURBMzU1OCwKKyAgICAweEVEN0FFREQwLCAweDQzMTc0M0ZDLCAweEY4NjZGOENCLCAweEZCOTRGQkIxLCAweDM3QTEzN0QzLCAweEZBMURGQTQwLAorICAgIDB4QzIzREMyNjgsIDB4QjRGMEI0Q0MsIDB4MzJERTMyNUQsIDB4OUNCMzlDNzEsIDB4NTYwQjU2RTcsIDB4RTM3MkUzREEsCisgICAgMHg4N0E3ODc2MCwgMHgxNTFDMTUxQiwgMHhGOUVGRjkzQSwgMHg2M0QxNjNCRiwgMHgzNDUzMzRBOSwgMHg5QTNFOUE4NSwKKyAgICAweEIxOEZCMTQyLCAweDdDMzM3Q0QxLCAweDg4MjY4ODlCLCAweDNENUYzREE2LCAweEExRUNBMUQ3LCAweEU0NzZFNERGLAorICAgIDB4ODEyQTgxOTQsIDB4OTE0OTkxMDEsIDB4MEY4MTBGRkIsIDB4RUU4OEVFQUEsIDB4MTZFRTE2NjEsIDB4RDcyMUQ3NzMsCisgICAgMHg5N0M0OTdGNSwgMHhBNTFBQTVBOCwgMHhGRUVCRkUzRiwgMHg2REQ5NkRCNSwgMHg3OEM1NzhBRSwgMHhDNTM5QzU2RCwKKyAgICAweDFEOTkxREU1LCAweDc2Q0Q3NkE0LCAweDNFQUQzRURDLCAweENCMzFDQjY3LCAweEI2OEJCNjQ3LCAweEVGMDFFRjVCLAorICAgIDB4MTIxODEyMUUsIDB4NjAyMzYwQzUsIDB4NkFERDZBQjAsIDB4NEQxRjRERjYsIDB4Q0U0RUNFRTksIDB4REUyRERFN0MsCisgICAgMHg1NUY5NTU5RCwgMHg3RTQ4N0U1QSwgMHgyMTRGMjFCMiwgMHgwM0YyMDM3QSwgMHhBMDY1QTAyNiwgMHg1RThFNUUxOSwKKyAgICAweDVBNzg1QTY2LCAweDY1NUM2NTRCLCAweDYyNTg2MjRFLCAweEZEMTlGRDQ1LCAweDA2OEQwNkY0LCAweDQwRTU0MDg2LAorICAgIDB4RjI5OEYyQkUsIDB4MzM1NzMzQUMsIDB4MTc2NzE3OTAsIDB4MDU3RjA1OEUsIDB4RTgwNUU4NUUsIDB4NEY2NDRGN0QsCisgICAgMHg4OUFGODk2QSwgMHgxMDYzMTA5NSwgMHg3NEI2NzQyRiwgMHgwQUZFMEE3NSwgMHg1Q0Y1NUM5MiwgMHg5QkI3OUI3NCwKKyAgICAweDJEM0MyRDMzLCAweDMwQTUzMEQ2LCAweDJFQ0UyRTQ5LCAweDQ5RTk0OTg5LCAweDQ2Njg0NjcyLCAweDc3NDQ3NzU1LAorICAgIDB4QThFMEE4RDgsIDB4OTY0RDk2MDQsIDB4Mjg0MzI4QkQsIDB4QTk2OUE5MjksIDB4RDkyOUQ5NzksIDB4ODYyRTg2OTEsCisgICAgMHhEMUFDRDE4NywgMHhGNDE1RjQ0QSwgMHg4RDU5OEQxNSwgMHhENkE4RDY4MiwgMHhCOTBBQjlCQywgMHg0MjlFNDIwRCwKKyAgICAweEY2NkVGNkMxLCAweDJGNDcyRkI4LCAweEREREZERDA2LCAweDIzMzQyMzM5LCAweENDMzVDQzYyLCAweEYxNkFGMUM0LAorICAgIDB4QzFDRkMxMTIsIDB4ODVEQzg1RUIsIDB4OEYyMjhGOUUsIDB4NzFDOTcxQTEsIDB4OTBDMDkwRjAsIDB4QUE5QkFBNTMsCisgICAgMHgwMTg5MDFGMSwgMHg4QkQ0OEJFMSwgMHg0RUVENEU4QywgMHg4RUFCOEU2RiwgMHhBQjEyQUJBMiwgMHg2RkEyNkYzRSwKKyAgICAweEU2MERFNjU0LCAweERCNTJEQkYyLCAweDkyQkI5MjdCLCAweEI3MDJCN0I2LCAweDY5MkY2OUNBLCAweDM5QTkzOUQ5LAorICAgIDB4RDNEN0QzMEMsIDB4QTc2MUE3MjMsIDB4QTIxRUEyQUQsIDB4QzNCNEMzOTksIDB4NkM1MDZDNDQsIDB4MDcwNDA3MDUsCisgICAgMHgwNEY2MDQ3RiwgMHgyN0MyMjc0NiwgMHhBQzE2QUNBNywgMHhEMDI1RDA3NiwgMHg1MDg2NTAxMywgMHhEQzU2RENGNywKKyAgICAweDg0NTU4NDFBLCAweEUxMDlFMTUxLCAweDdBQkU3QTI1LCAweDEzOTExM0VGfSwKKworICAgezB4RDkzOUE5RDksIDB4OTAxNzY3OTAsIDB4NzE5Q0IzNzEsIDB4RDJBNkU4RDIsIDB4MDUwNzA0MDUsIDB4OTg1MkZEOTgsCisgICAgMHg2NTgwQTM2NSwgMHhERkU0NzZERiwgMHgwODQ1OUEwOCwgMHgwMjRCOTIwMiwgMHhBMEUwODBBMCwgMHg2NjVBNzg2NiwKKyAgICAweEREQUZFNERELCAweEIwNkFEREIwLCAweEJGNjNEMUJGLCAweDM2MkEzODM2LCAweDU0RTYwRDU0LCAweDQzMjBDNjQzLAorICAgIDB4NjJDQzM1NjIsIDB4QkVGMjk4QkUsIDB4MUUxMjE4MUUsIDB4MjRFQkY3MjQsIDB4RDdBMUVDRDcsIDB4Nzc0MTZDNzcsCisgICAgMHhCRDI4NDNCRCwgMHgzMkJDNzUzMiwgMHhENDdCMzdENCwgMHg5Qjg4MjY5QiwgMHg3MDBERkE3MCwgMHhGOTQ0MTNGOSwKKyAgICAweEIxRkI5NEIxLCAweDVBN0U0ODVBLCAweDdBMDNGMjdBLCAweEU0OENEMEU0LCAweDQ3QjY4QjQ3LCAweDNDMjQzMDNDLAorICAgIDB4QTVFNzg0QTUsIDB4NDE2QjU0NDEsIDB4MDZERERGMDYsIDB4QzU2MDIzQzUsIDB4NDVGRDE5NDUsIDB4QTMzQTVCQTMsCisgICAgMHg2OEMyM0Q2OCwgMHgxNThENTkxNSwgMHgyMUVDRjMyMSwgMHgzMTY2QUUzMSwgMHgzRTZGQTIzRSwgMHgxNjU3ODIxNiwKKyAgICAweDk1MTA2Mzk1LCAweDVCRUYwMTVCLCAweDREQjg4MzRELCAweDkxODYyRTkxLCAweEI1NkREOUI1LCAweDFGODM1MTFGLAorICAgIDB4NTNBQTlCNTMsIDB4NjM1RDdDNjMsIDB4M0I2OEE2M0IsIDB4M0ZGRUVCM0YsIDB4RDYzMEE1RDYsIDB4MjU3QUJFMjUsCisgICAgMHhBN0FDMTZBNywgMHgwRjA5MEMwRiwgMHgzNUYwRTMzNSwgMHgyM0E3NjEyMywgMHhGMDkwQzBGMCwgMHhBRkU5OENBRiwKKyAgICAweDgwOUQzQTgwLCAweDkyNUNGNTkyLCAweDgxMEM3MzgxLCAweDI3MzEyQzI3LCAweDc2RDAyNTc2LCAweEU3NTYwQkU3LAorICAgIDB4N0I5MkJCN0IsIDB4RTlDRTRFRTksIDB4RjEwMTg5RjEsIDB4OUYxRTZCOUYsIDB4QTkzNDUzQTksIDB4QzRGMTZBQzQsCisgICAgMHg5OUMzQjQ5OSwgMHg5NzVCRjE5NywgMHg4MzQ3RTE4MywgMHg2QjE4RTY2QiwgMHhDODIyQkRDOCwgMHgwRTk4NDUwRSwKKyAgICAweDZFMUZFMjZFLCAweEM5QjNGNEM5LCAweDJGNzRCNjJGLCAweENCRjg2NkNCLCAweEZGOTlDQ0ZGLCAweEVBMTQ5NUVBLAorICAgIDB4RUQ1ODAzRUQsIDB4RjdEQzU2RjcsIDB4RTE4QkQ0RTEsIDB4MUIxNTFDMUIsIDB4QURBMjFFQUQsIDB4MENEM0Q3MEMsCisgICAgMHgyQkUyRkIyQiwgMHgxREM4QzMxRCwgMHgxOTVFOEUxOSwgMHhDMjJDQjVDMiwgMHg4OTQ5RTk4OSwgMHgxMkMxQ0YxMiwKKyAgICAweDdFOTVCRjdFLCAweDIwN0RCQTIwLCAweDY0MTFFQTY0LCAweDg0MEI3Nzg0LCAweDZEQzUzOTZELCAweDZBODlBRjZBLAorICAgIDB4RDE3QzMzRDEsIDB4QTE3MUM5QTEsIDB4Q0VGRjYyQ0UsIDB4MzdCQjcxMzcsIDB4RkIwRjgxRkIsIDB4M0RCNTc5M0QsCisgICAgMHg1MUUxMDk1MSwgMHhEQzNFQUREQywgMHgyRDNGMjQyRCwgMHhBNDc2Q0RBNCwgMHg5RDU1Rjk5RCwgMHhFRTgyRDhFRSwKKyAgICAweDg2NDBFNTg2LCAweEFFNzhDNUFFLCAweENEMjVCOUNELCAweDA0OTY0RDA0LCAweDU1Nzc0NDU1LCAweDBBMEUwODBBLAorICAgIDB4MTM1MDg2MTMsIDB4MzBGN0U3MzAsIDB4RDMzN0ExRDMsIDB4NDBGQTFENDAsIDB4MzQ2MUFBMzQsIDB4OEM0RUVEOEMsCisgICAgMHhCM0IwMDZCMywgMHg2QzU0NzA2QywgMHgyQTczQjIyQSwgMHg1MjNCRDI1MiwgMHgwQjlGNDEwQiwgMHg4QjAyN0I4QiwKKyAgICAweDg4RDhBMDg4LCAweDRGRjMxMTRGLCAweDY3Q0IzMTY3LCAweDQ2MjdDMjQ2LCAweEMwNjcyN0MwLCAweEI0RkM5MEI0LAorICAgIDB4MjgzODIwMjgsIDB4N0YwNEY2N0YsIDB4Nzg0ODYwNzgsIDB4MkVFNUZGMkUsIDB4MDc0Qzk2MDcsIDB4NEI2NTVDNEIsCisgICAgMHhDNzJCQjFDNywgMHg2RjhFQUI2RiwgMHgwRDQyOUUwRCwgMHhCQkY1OUNCQiwgMHhGMkRCNTJGMiwgMHhGMzRBMUJGMywKKyAgICAweEE2M0Q1RkE2LCAweDU5QTQ5MzU5LCAweEJDQjkwQUJDLCAweDNBRjlFRjNBLCAweEVGMTM5MUVGLCAweEZFMDg4NUZFLAorICAgIDB4MDE5MTQ5MDEsIDB4NjExNkVFNjEsIDB4N0NERTJEN0MsIDB4QjIyMTRGQjIsIDB4NDJCMThGNDIsIDB4REI3MjNCREIsCisgICAgMHhCODJGNDdCOCwgMHg0OEJGODc0OCwgMHgyQ0FFNkQyQywgMHhFM0MwNDZFMywgMHg1NzNDRDY1NywgMHg4NTlBM0U4NSwKKyAgICAweDI5QTk2OTI5LCAweDdENEY2NDdELCAweDk0ODEyQTk0LCAweDQ5MkVDRTQ5LCAweDE3QzZDQjE3LCAweENBNjkyRkNBLAorICAgIDB4QzNCREZDQzMsIDB4NUNBMzk3NUMsIDB4NUVFODA1NUUsIDB4RDBFRDdBRDAsIDB4ODdEMUFDODcsIDB4OEUwNTdGOEUsCisgICAgMHhCQTY0RDVCQSwgMHhBOEE1MUFBOCwgMHhCNzI2NEJCNywgMHhCOUJFMEVCOSwgMHg2MDg3QTc2MCwgMHhGOEQ1NUFGOCwKKyAgICAweDIyMzYyODIyLCAweDExMUIxNDExLCAweERFNzUzRkRFLCAweDc5RDkyOTc5LCAweEFBRUU4OEFBLCAweDMzMkQzQzMzLAorICAgIDB4NUY3OTRDNUYsIDB4QjZCNzAyQjYsIDB4OTZDQUI4OTYsIDB4NTgzNURBNTgsIDB4OUNDNEIwOUMsIDB4RkM0MzE3RkMsCisgICAgMHgxQTg0NTUxQSwgMHhGNjREMUZGNiwgMHgxQzU5OEExQywgMHgzOEIyN0QzOCwgMHhBQzMzNTdBQywgMHgxOENGQzcxOCwKKyAgICAweEY0MDY4REY0LCAweDY5NTM3NDY5LCAweDc0OUJCNzc0LCAweEY1OTdDNEY1LCAweDU2QUQ5RjU2LCAweERBRTM3MkRBLAorICAgIDB4RDVFQTdFRDUsIDB4NEFGNDE1NEEsIDB4OUU4RjIyOUUsIDB4QTJBQjEyQTIsIDB4NEU2MjU4NEUsIDB4RTg1RjA3RTgsCisgICAgMHhFNTFEOTlFNSwgMHgzOTIzMzQzOSwgMHhDMUY2NkVDMSwgMHg0NDZDNTA0NCwgMHg1RDMyREU1RCwgMHg3MjQ2Njg3MiwKKyAgICAweDI2QTA2NTI2LCAweDkzQ0RCQzkzLCAweDAzREFEQjAzLCAweEM2QkFGOEM2LCAweEZBOUVDOEZBLCAweDgyRDZBODgyLAorICAgIDB4Q0Y2RTJCQ0YsIDB4NTA3MDQwNTAsIDB4RUI4NURDRUIsIDB4NzUwQUZFNzUsIDB4OEE5MzMyOEEsIDB4OERERkE0OEQsCisgICAgMHg0QzI5Q0E0QywgMHgxNDFDMTAxNCwgMHg3M0Q3MjE3MywgMHhDQ0I0RjBDQywgMHgwOUQ0RDMwOSwgMHgxMDhBNUQxMCwKKyAgICAweEUyNTEwRkUyLCAweDAwMDAwMDAwLCAweDlBMTk2RjlBLCAweEUwMUE5REUwLCAweDhGOTQzNjhGLCAweEU2Qzc0MkU2LAorICAgIDB4RUNDOTRBRUMsIDB4RkREMjVFRkQsIDB4QUI3RkMxQUIsIDB4RDhBOEUwRDh9Cit9OworCisvKiBUaGUgZXhwX3RvX3BvbHkgYW5kIHBvbHlfdG9fZXhwIHRhYmxlcyBhcmUgdXNlZCB0byBwZXJmb3JtIGVmZmljaWVudAorICogb3BlcmF0aW9ucyBpbiBHRigyXjgpIHJlcHJlc2VudGVkIGFzIEdGKDIpW3hdL3coeCkgd2hlcmUKKyAqIHcoeCk9eF44K3heNit4XjMreF4yKzEuICBXZSBjYXJlIGFib3V0IGRvaW5nIHRoYXQgYmVjYXVzZSBpdCdzIHBhcnQgb2YgdGhlCisgKiBkZWZpbml0aW9uIG9mIHRoZSBSUyBtYXRyaXggaW4gdGhlIGtleSBzY2hlZHVsZS4gIEVsZW1lbnRzIG9mIHRoYXQgZmllbGQKKyAqIGFyZSBwb2x5bm9taWFscyBvZiBkZWdyZWUgbm90IGdyZWF0ZXIgdGhhbiA3IGFuZCBhbGwgY29lZmZpY2llbnRzIDAgb3IgMSwKKyAqIHdoaWNoIGNhbiBiZSByZXByZXNlbnRlZCBuYXR1cmFsbHkgYnkgYnl0ZXMgKGp1c3Qgc3Vic3RpdHV0ZSB4PTIpLiAgSW4gdGhhdAorICogZm9ybSwgR0YoMl44KSBhZGRpdGlvbiBpcyB0aGUgc2FtZSBhcyBiaXR3aXNlIFhPUiwgYnV0IEdGKDJeOCkKKyAqIG11bHRpcGxpY2F0aW9uIGlzIGluZWZmaWNpZW50IHdpdGhvdXQgaGFyZHdhcmUgc3VwcG9ydC4gIFRvIG11bHRpcGx5CisgKiBmYXN0ZXIsIEkgbWFrZSB1c2Ugb2YgdGhlIGZhY3QgeCBpcyBhIGdlbmVyYXRvciBmb3IgdGhlIG5vbnplcm8gZWxlbWVudHMsCisgKiBzbyB0aGF0IGV2ZXJ5IGVsZW1lbnQgcCBvZiBHRigyKVt4XS93KHgpIGlzIGVpdGhlciAwIG9yIGVxdWFsIHRvICh4KV5uIGZvcgorICogc29tZSBuIGluIDAuLjI1NC4gIE5vdGUgdGhhdCB0aGF0IGNhcmV0IGlzIGV4cG9uZW50aWF0aW9uIGluIEdGKDJeOCksCisgKiAqbm90KiBwb2x5bm9taWFsIG5vdGF0aW9uLiAgU28gaWYgSSB3YW50IHRvIGNvbXB1dGUgcHEgd2hlcmUgcCBhbmQgcSBhcmUKKyAqIGluIEdGKDJeOCksIEkgY2FuIGp1c3Qgc2F5OgorICogICAgMS4gaWYgcD0wIG9yIHE9MCB0aGVuIHBxPTAKKyAqICAgIDIuIG90aGVyd2lzZSwgZmluZCBtIGFuZCBuIHN1Y2ggdGhhdCBwPXhebSBhbmQgcT14Xm4KKyAqICAgIDMuIHBxPSh4Xm0pKHhebik9eF4obStuKSwgc28gYWRkIG0gYW5kIG4gYW5kIGZpbmQgcHEKKyAqIFRoZSB0cmFuc2xhdGlvbnMgaW4gc3RlcHMgMiBhbmQgMyBhcmUgbG9va2VkIHVwIGluIHRoZSB0YWJsZXMKKyAqIHBvbHlfdG9fZXhwIChmb3Igc3RlcCAyKSBhbmQgZXhwX3RvX3BvbHkgKGZvciBzdGVwIDMpLiAgVG8gc2VlIHRoaXMKKyAqIGluIGFjdGlvbiwgbG9vayBhdCB0aGUgQ0FMQ19TIG1hY3JvLiAgQXMgYWRkaXRpb25hbCB3cmlua2xlcywgbm90ZSB0aGF0CisgKiBvbmUgb2YgbXkgb3BlcmFuZHMgaXMgYWx3YXlzIGEgY29uc3RhbnQsIHNvIHRoZSBwb2x5X3RvX2V4cCBsb29rdXAgb24gaXQKKyAqIGlzIGRvbmUgaW4gYWR2YW5jZTsgSSBpbmNsdWRlZCB0aGUgb3JpZ2luYWwgdmFsdWVzIGluIHRoZSBjb21tZW50cyBzbworICogcmVhZGVycyBjYW4gaGF2ZSBzb21lIGNoYW5jZSBvZiByZWNvZ25pemluZyB0aGF0IHRoaXMgKmlzKiB0aGUgUlMgbWF0cml4CisgKiBmcm9tIHRoZSBUd29maXNoIHBhcGVyLiAgSSd2ZSBvbmx5IGluY2x1ZGVkIHRoZSB0YWJsZSBlbnRyaWVzIEkgYWN0dWFsbHkKKyAqIG5lZWQ7IEkgbmV2ZXIgZG8gYSBsb29rdXAgb24gYSB2YXJpYWJsZSBpbnB1dCBvZiB6ZXJvIGFuZCB0aGUgYmlnZ2VzdAorICogZXhwb25lbnRzIEknbGwgZXZlciBzZWUgYXJlIDI1NCAodmFyaWFibGUpIGFuZCAyMzcgKGNvbnN0YW50KSwgc28gdGhleSdsbAorICogbmV2ZXIgc3VtIHRvIG1vcmUgdGhhbiA0OTEuCUknbSByZXBlYXRpbmcgcGFydCBvZiB0aGUgZXhwX3RvX3BvbHkgdGFibGUKKyAqIHNvIHRoYXQgSSBkb24ndCBoYXZlIHRvIGRvIG1vZC0yNTUgcmVkdWN0aW9uIGluIHRoZSBleHBvbmVudCBhcml0aG1ldGljLgorICogU2luY2UgSSBrbm93IG15IGNvbnN0YW50IG9wZXJhbmRzIGFyZSBuZXZlciB6ZXJvLCBJIG9ubHkgaGF2ZSB0byB3b3JyeQorICogYWJvdXQgemVybyB2YWx1ZXMgaW4gdGhlIHZhcmlhYmxlIG9wZXJhbmQsIGFuZCBJIGRvIGl0IHdpdGggYSBzaW1wbGUKKyAqIGNvbmRpdGlvbmFsIGJyYW5jaC4JSSBrbm93IGNvbmRpdGlvbmFscyBhcmUgZXhwZW5zaXZlLCBidXQgSSBjb3VsZG4ndAorICogc2VlIGEgbm9uLWhvcnJpYmxlIHdheSBvZiBhdm9pZGluZyB0aGVtLCBhbmQgSSBkaWQgbWFuYWdlIHRvIGdyb3VwIHRoZQorICogc3RhdGVtZW50cyBzbyB0aGF0IGVhY2ggaWYgY292ZXJzIGZvdXIgZ3JvdXAgbXVsdGlwbGljYXRpb25zLiAqLworCitzdGF0aWMgY29uc3QgdTggcG9seV90b19leHBbMjU1XSA9IHsKKyAgIDB4MDAsIDB4MDEsIDB4MTcsIDB4MDIsIDB4MkUsIDB4MTgsIDB4NTMsIDB4MDMsIDB4NkEsIDB4MkYsIDB4OTMsIDB4MTksCisgICAweDM0LCAweDU0LCAweDQ1LCAweDA0LCAweDVDLCAweDZCLCAweEI2LCAweDMwLCAweEE2LCAweDk0LCAweDRCLCAweDFBLAorICAgMHg4QywgMHgzNSwgMHg4MSwgMHg1NSwgMHhBQSwgMHg0NiwgMHgwRCwgMHgwNSwgMHgyNCwgMHg1RCwgMHg4NywgMHg2QywKKyAgIDB4OUIsIDB4QjcsIDB4QzEsIDB4MzEsIDB4MkIsIDB4QTcsIDB4QTMsIDB4OTUsIDB4OTgsIDB4NEMsIDB4Q0EsIDB4MUIsCisgICAweEU2LCAweDhELCAweDczLCAweDM2LCAweENELCAweDgyLCAweDEyLCAweDU2LCAweDYyLCAweEFCLCAweEYwLCAweDQ3LAorICAgMHg0RiwgMHgwRSwgMHhCRCwgMHgwNiwgMHhENCwgMHgyNSwgMHhEMiwgMHg1RSwgMHgyNywgMHg4OCwgMHg2NiwgMHg2RCwKKyAgIDB4RDYsIDB4OUMsIDB4NzksIDB4QjgsIDB4MDgsIDB4QzIsIDB4REYsIDB4MzIsIDB4NjgsIDB4MkMsIDB4RkQsIDB4QTgsCisgICAweDhBLCAweEE0LCAweDVBLCAweDk2LCAweDI5LCAweDk5LCAweDIyLCAweDRELCAweDYwLCAweENCLCAweEU0LCAweDFDLAorICAgMHg3QiwgMHhFNywgMHgzQiwgMHg4RSwgMHg5RSwgMHg3NCwgMHhGNCwgMHgzNywgMHhEOCwgMHhDRSwgMHhGOSwgMHg4MywKKyAgIDB4NkYsIDB4MTMsIDB4QjIsIDB4NTcsIDB4RTEsIDB4NjMsIDB4REMsIDB4QUMsIDB4QzQsIDB4RjEsIDB4QUYsIDB4NDgsCisgICAweDBBLCAweDUwLCAweDQyLCAweDBGLCAweEJBLCAweEJFLCAweEM3LCAweDA3LCAweERFLCAweEQ1LCAweDc4LCAweDI2LAorICAgMHg2NSwgMHhEMywgMHhEMSwgMHg1RiwgMHhFMywgMHgyOCwgMHgyMSwgMHg4OSwgMHg1OSwgMHg2NywgMHhGQywgMHg2RSwKKyAgIDB4QjEsIDB4RDcsIDB4RjgsIDB4OUQsIDB4RjMsIDB4N0EsIDB4M0EsIDB4QjksIDB4QzYsIDB4MDksIDB4NDEsIDB4QzMsCisgICAweEFFLCAweEUwLCAweERCLCAweDMzLCAweDQ0LCAweDY5LCAweDkyLCAweDJELCAweDUyLCAweEZFLCAweDE2LCAweEE5LAorICAgMHgwQywgMHg4QiwgMHg4MCwgMHhBNSwgMHg0QSwgMHg1QiwgMHhCNSwgMHg5NywgMHhDOSwgMHgyQSwgMHhBMiwgMHg5QSwKKyAgIDB4QzAsIDB4MjMsIDB4ODYsIDB4NEUsIDB4QkMsIDB4NjEsIDB4RUYsIDB4Q0MsIDB4MTEsIDB4RTUsIDB4NzIsIDB4MUQsCisgICAweDNELCAweDdDLCAweEVCLCAweEU4LCAweEU5LCAweDNDLCAweEVBLCAweDhGLCAweDdELCAweDlGLCAweEVDLCAweDc1LAorICAgMHgxRSwgMHhGNSwgMHgzRSwgMHgzOCwgMHhGNiwgMHhEOSwgMHgzRiwgMHhDRiwgMHg3NiwgMHhGQSwgMHgxRiwgMHg4NCwKKyAgIDB4QTAsIDB4NzAsIDB4RUQsIDB4MTQsIDB4OTAsIDB4QjMsIDB4N0UsIDB4NTgsIDB4RkIsIDB4RTIsIDB4MjAsIDB4NjQsCisgICAweEQwLCAweERELCAweDc3LCAweEFELCAweERBLCAweEM1LCAweDQwLCAweEYyLCAweDM5LCAweEIwLCAweEY3LCAweDQ5LAorICAgMHhCNCwgMHgwQiwgMHg3RiwgMHg1MSwgMHgxNSwgMHg0MywgMHg5MSwgMHgxMCwgMHg3MSwgMHhCQiwgMHhFRSwgMHhCRiwKKyAgIDB4ODUsIDB4QzgsIDB4QTEKK307CisKK3N0YXRpYyBjb25zdCB1OCBleHBfdG9fcG9seVs0OTJdID0geworICAgMHgwMSwgMHgwMiwgMHgwNCwgMHgwOCwgMHgxMCwgMHgyMCwgMHg0MCwgMHg4MCwgMHg0RCwgMHg5QSwgMHg3OSwgMHhGMiwKKyAgIDB4QTksIDB4MUYsIDB4M0UsIDB4N0MsIDB4RjgsIDB4QkQsIDB4MzcsIDB4NkUsIDB4REMsIDB4RjUsIDB4QTcsIDB4MDMsCisgICAweDA2LCAweDBDLCAweDE4LCAweDMwLCAweDYwLCAweEMwLCAweENELCAweEQ3LCAweEUzLCAweDhCLCAweDVCLCAweEI2LAorICAgMHgyMSwgMHg0MiwgMHg4NCwgMHg0NSwgMHg4QSwgMHg1OSwgMHhCMiwgMHgyOSwgMHg1MiwgMHhBNCwgMHgwNSwgMHgwQSwKKyAgIDB4MTQsIDB4MjgsIDB4NTAsIDB4QTAsIDB4MEQsIDB4MUEsIDB4MzQsIDB4NjgsIDB4RDAsIDB4RUQsIDB4OTcsIDB4NjMsCisgICAweEM2LCAweEMxLCAweENGLCAweEQzLCAweEVCLCAweDlCLCAweDdCLCAweEY2LCAweEExLCAweDBGLCAweDFFLCAweDNDLAorICAgMHg3OCwgMHhGMCwgMHhBRCwgMHgxNywgMHgyRSwgMHg1QywgMHhCOCwgMHgzRCwgMHg3QSwgMHhGNCwgMHhBNSwgMHgwNywKKyAgIDB4MEUsIDB4MUMsIDB4MzgsIDB4NzAsIDB4RTAsIDB4OEQsIDB4NTcsIDB4QUUsIDB4MTEsIDB4MjIsIDB4NDQsIDB4ODgsCisgICAweDVELCAweEJBLCAweDM5LCAweDcyLCAweEU0LCAweDg1LCAweDQ3LCAweDhFLCAweDUxLCAweEEyLCAweDA5LCAweDEyLAorICAgMHgyNCwgMHg0OCwgMHg5MCwgMHg2RCwgMHhEQSwgMHhGOSwgMHhCRiwgMHgzMywgMHg2NiwgMHhDQywgMHhENSwgMHhFNywKKyAgIDB4ODMsIDB4NEIsIDB4OTYsIDB4NjEsIDB4QzIsIDB4QzksIDB4REYsIDB4RjMsIDB4QUIsIDB4MUIsIDB4MzYsIDB4NkMsCisgICAweEQ4LCAweEZELCAweEI3LCAweDIzLCAweDQ2LCAweDhDLCAweDU1LCAweEFBLCAweDE5LCAweDMyLCAweDY0LCAweEM4LAorICAgMHhERCwgMHhGNywgMHhBMywgMHgwQiwgMHgxNiwgMHgyQywgMHg1OCwgMHhCMCwgMHgyRCwgMHg1QSwgMHhCNCwgMHgyNSwKKyAgIDB4NEEsIDB4OTQsIDB4NjUsIDB4Q0EsIDB4RDksIDB4RkYsIDB4QjMsIDB4MkIsIDB4NTYsIDB4QUMsIDB4MTUsIDB4MkEsCisgICAweDU0LCAweEE4LCAweDFELCAweDNBLCAweDc0LCAweEU4LCAweDlELCAweDc3LCAweEVFLCAweDkxLCAweDZGLCAweERFLAorICAgMHhGMSwgMHhBRiwgMHgxMywgMHgyNiwgMHg0QywgMHg5OCwgMHg3RCwgMHhGQSwgMHhCOSwgMHgzRiwgMHg3RSwgMHhGQywKKyAgIDB4QjUsIDB4MjcsIDB4NEUsIDB4OUMsIDB4NzUsIDB4RUEsIDB4OTksIDB4N0YsIDB4RkUsIDB4QjEsIDB4MkYsIDB4NUUsCisgICAweEJDLCAweDM1LCAweDZBLCAweEQ0LCAweEU1LCAweDg3LCAweDQzLCAweDg2LCAweDQxLCAweDgyLCAweDQ5LCAweDkyLAorICAgMHg2OSwgMHhEMiwgMHhFOSwgMHg5RiwgMHg3MywgMHhFNiwgMHg4MSwgMHg0RiwgMHg5RSwgMHg3MSwgMHhFMiwgMHg4OSwKKyAgIDB4NUYsIDB4QkUsIDB4MzEsIDB4NjIsIDB4QzQsIDB4QzUsIDB4QzcsIDB4QzMsIDB4Q0IsIDB4REIsIDB4RkIsIDB4QkIsCisgICAweDNCLCAweDc2LCAweEVDLCAweDk1LCAweDY3LCAweENFLCAweEQxLCAweEVGLCAweDkzLCAweDZCLCAweEQ2LCAweEUxLAorICAgMHg4RiwgMHg1MywgMHhBNiwgMHgwMSwgMHgwMiwgMHgwNCwgMHgwOCwgMHgxMCwgMHgyMCwgMHg0MCwgMHg4MCwgMHg0RCwKKyAgIDB4OUEsIDB4NzksIDB4RjIsIDB4QTksIDB4MUYsIDB4M0UsIDB4N0MsIDB4RjgsIDB4QkQsIDB4MzcsIDB4NkUsIDB4REMsCisgICAweEY1LCAweEE3LCAweDAzLCAweDA2LCAweDBDLCAweDE4LCAweDMwLCAweDYwLCAweEMwLCAweENELCAweEQ3LCAweEUzLAorICAgMHg4QiwgMHg1QiwgMHhCNiwgMHgyMSwgMHg0MiwgMHg4NCwgMHg0NSwgMHg4QSwgMHg1OSwgMHhCMiwgMHgyOSwgMHg1MiwKKyAgIDB4QTQsIDB4MDUsIDB4MEEsIDB4MTQsIDB4MjgsIDB4NTAsIDB4QTAsIDB4MEQsIDB4MUEsIDB4MzQsIDB4NjgsIDB4RDAsCisgICAweEVELCAweDk3LCAweDYzLCAweEM2LCAweEMxLCAweENGLCAweEQzLCAweEVCLCAweDlCLCAweDdCLCAweEY2LCAweEExLAorICAgMHgwRiwgMHgxRSwgMHgzQywgMHg3OCwgMHhGMCwgMHhBRCwgMHgxNywgMHgyRSwgMHg1QywgMHhCOCwgMHgzRCwgMHg3QSwKKyAgIDB4RjQsIDB4QTUsIDB4MDcsIDB4MEUsIDB4MUMsIDB4MzgsIDB4NzAsIDB4RTAsIDB4OEQsIDB4NTcsIDB4QUUsIDB4MTEsCisgICAweDIyLCAweDQ0LCAweDg4LCAweDVELCAweEJBLCAweDM5LCAweDcyLCAweEU0LCAweDg1LCAweDQ3LCAweDhFLCAweDUxLAorICAgMHhBMiwgMHgwOSwgMHgxMiwgMHgyNCwgMHg0OCwgMHg5MCwgMHg2RCwgMHhEQSwgMHhGOSwgMHhCRiwgMHgzMywgMHg2NiwKKyAgIDB4Q0MsIDB4RDUsIDB4RTcsIDB4ODMsIDB4NEIsIDB4OTYsIDB4NjEsIDB4QzIsIDB4QzksIDB4REYsIDB4RjMsIDB4QUIsCisgICAweDFCLCAweDM2LCAweDZDLCAweEQ4LCAweEZELCAweEI3LCAweDIzLCAweDQ2LCAweDhDLCAweDU1LCAweEFBLCAweDE5LAorICAgMHgzMiwgMHg2NCwgMHhDOCwgMHhERCwgMHhGNywgMHhBMywgMHgwQiwgMHgxNiwgMHgyQywgMHg1OCwgMHhCMCwgMHgyRCwKKyAgIDB4NUEsIDB4QjQsIDB4MjUsIDB4NEEsIDB4OTQsIDB4NjUsIDB4Q0EsIDB4RDksIDB4RkYsIDB4QjMsIDB4MkIsIDB4NTYsCisgICAweEFDLCAweDE1LCAweDJBLCAweDU0LCAweEE4LCAweDFELCAweDNBLCAweDc0LCAweEU4LCAweDlELCAweDc3LCAweEVFLAorICAgMHg5MSwgMHg2RiwgMHhERSwgMHhGMSwgMHhBRiwgMHgxMywgMHgyNiwgMHg0QywgMHg5OCwgMHg3RCwgMHhGQSwgMHhCOSwKKyAgIDB4M0YsIDB4N0UsIDB4RkMsIDB4QjUsIDB4MjcsIDB4NEUsIDB4OUMsIDB4NzUsIDB4RUEsIDB4OTksIDB4N0YsIDB4RkUsCisgICAweEIxLCAweDJGLCAweDVFLCAweEJDLCAweDM1LCAweDZBLCAweEQ0LCAweEU1LCAweDg3LCAweDQzLCAweDg2LCAweDQxLAorICAgMHg4MiwgMHg0OSwgMHg5MiwgMHg2OSwgMHhEMiwgMHhFOSwgMHg5RiwgMHg3MywgMHhFNiwgMHg4MSwgMHg0RiwgMHg5RSwKKyAgIDB4NzEsIDB4RTIsIDB4ODksIDB4NUYsIDB4QkUsIDB4MzEsIDB4NjIsIDB4QzQsIDB4QzUsIDB4QzcsIDB4QzMsIDB4Q0IKK307CisKKworLyogVGhlIHRhYmxlIGNvbnN0YW50cyBhcmUgaW5kaWNlcyBvZgorICogUy1ib3ggZW50cmllcywgcHJlcHJvY2Vzc2VkIHRocm91Z2ggcTAgYW5kIHExLiAqLworc3RhdGljIGNvbnN0IHU4IGNhbGNfc2JfdGJsWzUxMl0gPSB7CisgICAgMHhBOSwgMHg3NSwgMHg2NywgMHhGMywgMHhCMywgMHhDNiwgMHhFOCwgMHhGNCwKKyAgICAweDA0LCAweERCLCAweEZELCAweDdCLCAweEEzLCAweEZCLCAweDc2LCAweEM4LAorICAgIDB4OUEsIDB4NEEsIDB4OTIsIDB4RDMsIDB4ODAsIDB4RTYsIDB4NzgsIDB4NkIsCisgICAgMHhFNCwgMHg0NSwgMHhERCwgMHg3RCwgMHhEMSwgMHhFOCwgMHgzOCwgMHg0QiwKKyAgICAweDBELCAweEQ2LCAweEM2LCAweDMyLCAweDM1LCAweEQ4LCAweDk4LCAweEZELAorICAgIDB4MTgsIDB4MzcsIDB4RjcsIDB4NzEsIDB4RUMsIDB4RjEsIDB4NkMsIDB4RTEsCisgICAgMHg0MywgMHgzMCwgMHg3NSwgMHgwRiwgMHgzNywgMHhGOCwgMHgyNiwgMHgxQiwKKyAgICAweEZBLCAweDg3LCAweDEzLCAweEZBLCAweDk0LCAweDA2LCAweDQ4LCAweDNGLAorICAgIDB4RjIsIDB4NUUsIDB4RDAsIDB4QkEsIDB4OEIsIDB4QUUsIDB4MzAsIDB4NUIsCisgICAgMHg4NCwgMHg4QSwgMHg1NCwgMHgwMCwgMHhERiwgMHhCQywgMHgyMywgMHg5RCwKKyAgICAweDE5LCAweDZELCAweDVCLCAweEMxLCAweDNELCAweEIxLCAweDU5LCAweDBFLAorICAgIDB4RjMsIDB4ODAsIDB4QUUsIDB4NUQsIDB4QTIsIDB4RDIsIDB4ODIsIDB4RDUsCisgICAgMHg2MywgMHhBMCwgMHgwMSwgMHg4NCwgMHg4MywgMHgwNywgMHgyRSwgMHgxNCwKKyAgICAweEQ5LCAweEI1LCAweDUxLCAweDkwLCAweDlCLCAweDJDLCAweDdDLCAweEEzLAorICAgIDB4QTYsIDB4QjIsIDB4RUIsIDB4NzMsIDB4QTUsIDB4NEMsIDB4QkUsIDB4NTQsCisgICAgMHgxNiwgMHg5MiwgMHgwQywgMHg3NCwgMHhFMywgMHgzNiwgMHg2MSwgMHg1MSwKKyAgICAweEMwLCAweDM4LCAweDhDLCAweEIwLCAweDNBLCAweEJELCAweEY1LCAweDVBLAorICAgIDB4NzMsIDB4RkMsIDB4MkMsIDB4NjAsIDB4MjUsIDB4NjIsIDB4MEIsIDB4OTYsCisgICAgMHhCQiwgMHg2QywgMHg0RSwgMHg0MiwgMHg4OSwgMHhGNywgMHg2QiwgMHgxMCwKKyAgICAweDUzLCAweDdDLCAweDZBLCAweDI4LCAweEI0LCAweDI3LCAweEYxLCAweDhDLAorICAgIDB4RTEsIDB4MTMsIDB4RTYsIDB4OTUsIDB4QkQsIDB4OUMsIDB4NDUsIDB4QzcsCisgICAgMHhFMiwgMHgyNCwgMHhGNCwgMHg0NiwgMHhCNiwgMHgzQiwgMHg2NiwgMHg3MCwKKyAgICAweENDLCAweENBLCAweDk1LCAweEUzLCAweDAzLCAweDg1LCAweDU2LCAweENCLAorICAgIDB4RDQsIDB4MTEsIDB4MUMsIDB4RDAsIDB4MUUsIDB4OTMsIDB4RDcsIDB4QjgsCisgICAgMHhGQiwgMHhBNiwgMHhDMywgMHg4MywgMHg4RSwgMHgyMCwgMHhCNSwgMHhGRiwKKyAgICAweEU5LCAweDlGLCAweENGLCAweDc3LCAweEJGLCAweEMzLCAweEJBLCAweENDLAorICAgIDB4RUEsIDB4MDMsIDB4NzcsIDB4NkYsIDB4MzksIDB4MDgsIDB4QUYsIDB4QkYsCisgICAgMHgzMywgMHg0MCwgMHhDOSwgMHhFNywgMHg2MiwgMHgyQiwgMHg3MSwgMHhFMiwKKyAgICAweDgxLCAweDc5LCAweDc5LCAweDBDLCAweDA5LCAweEFBLCAweEFELCAweDgyLAorICAgIDB4MjQsIDB4NDEsIDB4Q0QsIDB4M0EsIDB4RjksIDB4RUEsIDB4RDgsIDB4QjksCisgICAgMHhFNSwgMHhFNCwgMHhDNSwgMHg5QSwgMHhCOSwgMHhBNCwgMHg0RCwgMHg5NywKKyAgICAweDQ0LCAweDdFLCAweDA4LCAweERBLCAweDg2LCAweDdBLCAweEU3LCAweDE3LAorICAgIDB4QTEsIDB4NjYsIDB4MUQsIDB4OTQsIDB4QUEsIDB4QTEsIDB4RUQsIDB4MUQsCisgICAgMHgwNiwgMHgzRCwgMHg3MCwgMHhGMCwgMHhCMiwgMHhERSwgMHhEMiwgMHhCMywKKyAgICAweDQxLCAweDBCLCAweDdCLCAweDcyLCAweEEwLCAweEE3LCAweDExLCAweDFDLAorICAgIDB4MzEsIDB4RUYsIDB4QzIsIDB4RDEsIDB4MjcsIDB4NTMsIDB4OTAsIDB4M0UsCisgICAgMHgyMCwgMHg4RiwgMHhGNiwgMHgzMywgMHg2MCwgMHgyNiwgMHhGRiwgMHg1RiwKKyAgICAweDk2LCAweEVDLCAweDVDLCAweDc2LCAweEIxLCAweDJBLCAweEFCLCAweDQ5LAorICAgIDB4OUUsIDB4ODEsIDB4OUMsIDB4ODgsIDB4NTIsIDB4RUUsIDB4MUIsIDB4MjEsCisgICAgMHg1RiwgMHhDNCwgMHg5MywgMHgxQSwgMHgwQSwgMHhFQiwgMHhFRiwgMHhEOSwKKyAgICAweDkxLCAweEM1LCAweDg1LCAweDM5LCAweDQ5LCAweDk5LCAweEVFLCAweENELAorICAgIDB4MkQsIDB4QUQsIDB4NEYsIDB4MzEsIDB4OEYsIDB4OEIsIDB4M0IsIDB4MDEsCisgICAgMHg0NywgMHgxOCwgMHg4NywgMHgyMywgMHg2RCwgMHhERCwgMHg0NiwgMHgxRiwKKyAgICAweEQ2LCAweDRFLCAweDNFLCAweDJELCAweDY5LCAweEY5LCAweDY0LCAweDQ4LAorICAgIDB4MkEsIDB4NEYsIDB4Q0UsIDB4RjIsIDB4Q0IsIDB4NjUsIDB4MkYsIDB4OEUsCisgICAgMHhGQywgMHg3OCwgMHg5NywgMHg1QywgMHgwNSwgMHg1OCwgMHg3QSwgMHgxOSwKKyAgICAweEFDLCAweDhELCAweDdGLCAweEU1LCAweEQ1LCAweDk4LCAweDFBLCAweDU3LAorICAgIDB4NEIsIDB4NjcsIDB4MEUsIDB4N0YsIDB4QTcsIDB4MDUsIDB4NUEsIDB4NjQsCisgICAgMHgyOCwgMHhBRiwgMHgxNCwgMHg2MywgMHgzRiwgMHhCNiwgMHgyOSwgMHhGRSwKKyAgICAweDg4LCAweEY1LCAweDNDLCAweEI3LCAweDRDLCAweDNDLCAweDAyLCAweEE1LAorICAgIDB4QjgsIDB4Q0UsIDB4REEsIDB4RTksIDB4QjAsIDB4NjgsIDB4MTcsIDB4NDQsCisgICAgMHg1NSwgMHhFMCwgMHgxRiwgMHg0RCwgMHg4QSwgMHg0MywgMHg3RCwgMHg2OSwKKyAgICAweDU3LCAweDI5LCAweEM3LCAweDJFLCAweDhELCAweEFDLCAweDc0LCAweDE1LAorICAgIDB4QjcsIDB4NTksIDB4QzQsIDB4QTgsIDB4OUYsIDB4MEEsIDB4NzIsIDB4OUUsCisgICAgMHg3RSwgMHg2RSwgMHgxNSwgMHg0NywgMHgyMiwgMHhERiwgMHgxMiwgMHgzNCwKKyAgICAweDU4LCAweDM1LCAweDA3LCAweDZBLCAweDk5LCAweENGLCAweDM0LCAweERDLAorICAgIDB4NkUsIDB4MjIsIDB4NTAsIDB4QzksIDB4REUsIDB4QzAsIDB4NjgsIDB4OUIsCisgICAgMHg2NSwgMHg4OSwgMHhCQywgMHhENCwgMHhEQiwgMHhFRCwgMHhGOCwgMHhBQiwKKyAgICAweEM4LCAweDEyLCAweEE4LCAweEEyLCAweDJCLCAweDBELCAweDQwLCAweDUyLAorICAgIDB4REMsIDB4QkIsIDB4RkUsIDB4MDIsIDB4MzIsIDB4MkYsIDB4QTQsIDB4QTksCisgICAgMHhDQSwgMHhENywgMHgxMCwgMHg2MSwgMHgyMSwgMHgxRSwgMHhGMCwgMHhCNCwKKyAgICAweEQzLCAweDUwLCAweDVELCAweDA0LCAweDBGLCAweEY2LCAweDAwLCAweEMyLAorICAgIDB4NkYsIDB4MTYsIDB4OUQsIDB4MjUsIDB4MzYsIDB4ODYsIDB4NDIsIDB4NTYsCisgICAgMHg0QSwgMHg1NSwgMHg1RSwgMHgwOSwgMHhDMSwgMHhCRSwgMHhFMCwgMHg5MQorfTsKKworLyogTWFjcm8gdG8gcGVyZm9ybSBvbmUgY29sdW1uIG9mIHRoZSBSUyBtYXRyaXggbXVsdGlwbGljYXRpb24uICBUaGUKKyAqIHBhcmFtZXRlcnMgYSwgYiwgYywgYW5kIGQgYXJlIHRoZSBmb3VyIGJ5dGVzIG9mIG91dHB1dDsgaSBpcyB0aGUgaW5kZXgKKyAqIG9mIHRoZSBrZXkgYnl0ZXMsIGFuZCB3LCB4LCB5LCBhbmQgeiwgYXJlIHRoZSBjb2x1bW4gb2YgY29uc3RhbnRzIGZyb20KKyAqIHRoZSBSUyBtYXRyaXgsIHByZXByb2Nlc3NlZCB0aHJvdWdoIHRoZSBwb2x5X3RvX2V4cCB0YWJsZS4gKi8KKworI2RlZmluZSBDQUxDX1MoYSwgYiwgYywgZCwgaSwgdywgeCwgeSwgeikgXAorICAgaWYgKGtleVtpXSkgeyBcCisgICAgICB0bXAgPSBwb2x5X3RvX2V4cFtrZXlbaV0gLSAxXTsgXAorICAgICAgKGEpIF49IGV4cF90b19wb2x5W3RtcCArICh3KV07IFwKKyAgICAgIChiKSBePSBleHBfdG9fcG9seVt0bXAgKyAoeCldOyBcCisgICAgICAoYykgXj0gZXhwX3RvX3BvbHlbdG1wICsgKHkpXTsgXAorICAgICAgKGQpIF49IGV4cF90b19wb2x5W3RtcCArICh6KV07IFwKKyAgIH0KKworLyogTWFjcm9zIHRvIGNhbGN1bGF0ZSB0aGUga2V5LWRlcGVuZGVudCBTLWJveGVzIGZvciBhIDEyOC1iaXQga2V5IHVzaW5nCisgKiB0aGUgUyB2ZWN0b3IgZnJvbSBDQUxDX1MuICBDQUxDX1NCXzIgY29tcHV0ZXMgYSBzaW5nbGUgZW50cnkgaW4gYWxsCisgKiBmb3VyIFMtYm94ZXMsIHdoZXJlIGkgaXMgdGhlIGluZGV4IG9mIHRoZSBlbnRyeSB0byBjb21wdXRlLCBhbmQgYSBhbmQgYgorICogYXJlIHRoZSBpbmRleCBudW1iZXJzIHByZXByb2Nlc3NlZCB0aHJvdWdoIHRoZSBxMCBhbmQgcTEgdGFibGVzCisgKiByZXNwZWN0aXZlbHkuICovCisKKyNkZWZpbmUgQ0FMQ19TQl8yKGksIGEsIGIpIFwKKyAgIGN0eC0+c1swXVtpXSA9IG1kc1swXVtxMFsoYSkgXiBzYV0gXiBzZV07IFwKKyAgIGN0eC0+c1sxXVtpXSA9IG1kc1sxXVtxMFsoYikgXiBzYl0gXiBzZl07IFwKKyAgIGN0eC0+c1syXVtpXSA9IG1kc1syXVtxMVsoYSkgXiBzY10gXiBzZ107IFwKKyAgIGN0eC0+c1szXVtpXSA9IG1kc1szXVtxMVsoYikgXiBzZF0gXiBzaF0KKworLyogTWFjcm8gZXhhY3RseSBsaWtlIENBTENfU0JfMiwgYnV0IGZvciAxOTItYml0IGtleXMuICovCisKKyNkZWZpbmUgQ0FMQ19TQjE5Ml8yKGksIGEsIGIpIFwKKyAgIGN0eC0+c1swXVtpXSA9IG1kc1swXVtxMFtxMFsoYikgXiBzYV0gXiBzZV0gXiBzaV07IFwKKyAgIGN0eC0+c1sxXVtpXSA9IG1kc1sxXVtxMFtxMVsoYikgXiBzYl0gXiBzZl0gXiBzal07IFwKKyAgIGN0eC0+c1syXVtpXSA9IG1kc1syXVtxMVtxMFsoYSkgXiBzY10gXiBzZ10gXiBza107IFwKKyAgIGN0eC0+c1szXVtpXSA9IG1kc1szXVtxMVtxMVsoYSkgXiBzZF0gXiBzaF0gXiBzbF07CisKKy8qIE1hY3JvIGV4YWN0bHkgbGlrZSBDQUxDX1NCXzIsIGJ1dCBmb3IgMjU2LWJpdCBrZXlzLiAqLworCisjZGVmaW5lIENBTENfU0IyNTZfMihpLCBhLCBiKSBcCisgICBjdHgtPnNbMF1baV0gPSBtZHNbMF1bcTBbcTBbcTFbKGIpIF4gc2FdIF4gc2VdIF4gc2ldIF4gc21dOyBcCisgICBjdHgtPnNbMV1baV0gPSBtZHNbMV1bcTBbcTFbcTFbKGEpIF4gc2JdIF4gc2ZdIF4gc2pdIF4gc25dOyBcCisgICBjdHgtPnNbMl1baV0gPSBtZHNbMl1bcTFbcTBbcTBbKGEpIF4gc2NdIF4gc2ddIF4gc2tdIF4gc29dOyBcCisgICBjdHgtPnNbM11baV0gPSBtZHNbM11bcTFbcTFbcTBbKGIpIF4gc2RdIF4gc2hdIF4gc2xdIF4gc3BdOworCisvKiBNYWNyb3MgdG8gY2FsY3VsYXRlIHRoZSB3aGl0ZW5pbmcgYW5kIHJvdW5kIHN1YmtleXMuICBDQUxDX0tfMiBjb21wdXRlcyB0aGUKKyAqIGxhc3QgdHdvIHN0YWdlcyBvZiB0aGUgaCgpIGZ1bmN0aW9uIGZvciBhIGdpdmVuIGluZGV4IChlaXRoZXIgMmkgb3IgMmkrMSkuCisgKiBhLCBiLCBjLCBhbmQgZCBhcmUgdGhlIGZvdXIgYnl0ZXMgZ29pbmcgaW50byB0aGUgbGFzdCB0d28gc3RhZ2VzLiAgRm9yCisgKiAxMjgtYml0IGtleXMsIHRoaXMgaXMgdGhlIGVudGlyZSBoKCkgZnVuY3Rpb24gYW5kIGEgYW5kIGMgYXJlIHRoZSBpbmRleAorICogcHJlcHJvY2Vzc2VkIHRocm91Z2ggcTAgYW5kIHExIHJlc3BlY3RpdmVseTsgZm9yIGxvbmdlciBrZXlzIHRoZXkgYXJlIHRoZQorICogb3V0cHV0IG9mIHByZXZpb3VzIHN0YWdlcy4gIGogaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBrZXkgYnl0ZSB0byB1c2UuCisgKiBDQUxDX0sgY29tcHV0ZXMgYSBwYWlyIG9mIHN1YmtleXMgZm9yIDEyOC1iaXQgVHdvZmlzaCwgYnkgY2FsbGluZyBDQUxDX0tfMgorICogdHdpY2UsIGRvaW5nIHRoZSBQc2V1ZG8tSGFkYW1hcmQgVHJhbnNmb3JtLCBhbmQgZG9pbmcgdGhlIG5lY2Vzc2FyeQorICogcm90YXRpb25zLiAgSXRzIHBhcmFtZXRlcnMgYXJlOiBhLCB0aGUgYXJyYXkgdG8gd3JpdGUgdGhlIHJlc3VsdHMgaW50bywKKyAqIGosIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgb3V0cHV0IGVudHJ5LCBrIGFuZCBsLCB0aGUgcHJlcHJvY2Vzc2VkIGluZGljZXMKKyAqIGZvciBpbmRleCAyaSwgYW5kIG0gYW5kIG4sIHRoZSBwcmVwcm9jZXNzZWQgaW5kaWNlcyBmb3IgaW5kZXggMmkrMS4KKyAqIENBTENfSzE5Ml8yIGV4cGFuZHMgQ0FMQ19LXzIgdG8gaGFuZGxlIDE5Mi1iaXQga2V5cywgYnkgZG9pbmcgYW4KKyAqIGFkZGl0aW9uYWwgbG9va3VwLWFuZC1YT1Igc3RhZ2UuICBUaGUgcGFyYW1ldGVycyBhLCBiLCBjIGFuZCBkIGFyZSB0aGUKKyAqIGZvdXIgYnl0ZXMgZ29pbmcgaW50byB0aGUgbGFzdCB0aHJlZSBzdGFnZXMuICBGb3IgMTkyLWJpdCBrZXlzLCBjID0gZAorICogYXJlIHRoZSBpbmRleCBwcmVwcm9jZXNzZWQgdGhyb3VnaCBxMCwgYW5kIGEgPSBiIGFyZSB0aGUgaW5kZXgKKyAqIHByZXByb2Nlc3NlZCB0aHJvdWdoIHExOyBqIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qga2V5IGJ5dGUgdG8gdXNlLgorICogQ0FMQ19LMTkyIGlzIGlkZW50aWNhbCB0byBDQUxDX0sgYnV0IGZvciB1c2luZyB0aGUgQ0FMQ19LMTkyXzIgbWFjcm8KKyAqIGluc3RlYWQgb2YgQ0FMQ19LXzIuCisgKiBDQUxDX0syNTZfMiBleHBhbmRzIENBTENfSzE5Ml8yIHRvIGhhbmRsZSAyNTYtYml0IGtleXMsIGJ5IGRvaW5nIGFuCisgKiBhZGRpdGlvbmFsIGxvb2t1cC1hbmQtWE9SIHN0YWdlLiAgVGhlIHBhcmFtZXRlcnMgYSBhbmQgYiBhcmUgdGhlIGluZGV4CisgKiBwcmVwcm9jZXNzZWQgdGhyb3VnaCBxMCBhbmQgcTEgcmVzcGVjdGl2ZWx5OyBqIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QKKyAqIGtleSBieXRlIHRvIHVzZS4gIENBTENfSzI1NiBpcyBpZGVudGljYWwgdG8gQ0FMQ19LIGJ1dCBmb3IgdXNpbmcgdGhlCisgKiBDQUxDX0syNTZfMiBtYWNybyBpbnN0ZWFkIG9mIENBTENfS18yLiAqLworCisjZGVmaW5lIENBTENfS18yKGEsIGIsIGMsIGQsIGopIFwKKyAgICAgbWRzWzBdW3EwW2EgXiBrZXlbKGopICsgOF1dIF4ga2V5W2pdXSBcCisgICBeIG1kc1sxXVtxMFtiIF4ga2V5WyhqKSArIDldXSBeIGtleVsoaikgKyAxXV0gXAorICAgXiBtZHNbMl1bcTFbYyBeIGtleVsoaikgKyAxMF1dIF4ga2V5WyhqKSArIDJdXSBcCisgICBeIG1kc1szXVtxMVtkIF4ga2V5WyhqKSArIDExXV0gXiBrZXlbKGopICsgM11dCisKKyNkZWZpbmUgQ0FMQ19LKGEsIGosIGssIGwsIG0sIG4pIFwKKyAgIHggPSBDQUxDX0tfMiAoaywgbCwgaywgbCwgMCk7IFwKKyAgIHkgPSBDQUxDX0tfMiAobSwgbiwgbSwgbiwgNCk7IFwKKyAgIHkgPSAoeSA8PCA4KSArICh5ID4+IDI0KTsgXAorICAgeCArPSB5OyB5ICs9IHg7IGN0eC0+YVtqXSA9IHg7IFwKKyAgIGN0eC0+YVsoaikgKyAxXSA9ICh5IDw8IDkpICsgKHkgPj4gMjMpCisKKyNkZWZpbmUgQ0FMQ19LMTkyXzIoYSwgYiwgYywgZCwgaikgXAorICAgQ0FMQ19LXzIgKHEwW2EgXiBrZXlbKGopICsgMTZdXSwgXAorCSAgICAgcTFbYiBeIGtleVsoaikgKyAxN11dLCBcCisJICAgICBxMFtjIF4ga2V5WyhqKSArIDE4XV0sIFwKKwkgICAgIHExW2QgXiBrZXlbKGopICsgMTldXSwgaikKKworI2RlZmluZSBDQUxDX0sxOTIoYSwgaiwgaywgbCwgbSwgbikgXAorICAgeCA9IENBTENfSzE5Ml8yIChsLCBsLCBrLCBrLCAwKTsgXAorICAgeSA9IENBTENfSzE5Ml8yIChuLCBuLCBtLCBtLCA0KTsgXAorICAgeSA9ICh5IDw8IDgpICsgKHkgPj4gMjQpOyBcCisgICB4ICs9IHk7IHkgKz0geDsgY3R4LT5hW2pdID0geDsgXAorICAgY3R4LT5hWyhqKSArIDFdID0gKHkgPDwgOSkgKyAoeSA+PiAyMykKKworI2RlZmluZSBDQUxDX0syNTZfMihhLCBiLCBqKSBcCisgICBDQUxDX0sxOTJfMiAocTFbYiBeIGtleVsoaikgKyAyNF1dLCBcCisJICAgICAgICBxMVthIF4ga2V5WyhqKSArIDI1XV0sIFwKKwkgICAgICAgIHEwW2EgXiBrZXlbKGopICsgMjZdXSwgXAorCSAgICAgICAgcTBbYiBeIGtleVsoaikgKyAyN11dLCBqKQorCisjZGVmaW5lIENBTENfSzI1NihhLCBqLCBrLCBsLCBtLCBuKSBcCisgICB4ID0gQ0FMQ19LMjU2XzIgKGssIGwsIDApOyBcCisgICB5ID0gQ0FMQ19LMjU2XzIgKG0sIG4sIDQpOyBcCisgICB5ID0gKHkgPDwgOCkgKyAoeSA+PiAyNCk7IFwKKyAgIHggKz0geTsgeSArPSB4OyBjdHgtPmFbal0gPSB4OyBcCisgICBjdHgtPmFbKGopICsgMV0gPSAoeSA8PCA5KSArICh5ID4+IDIzKQorCisKKy8qIE1hY3JvcyB0byBjb21wdXRlIHRoZSBnKCkgZnVuY3Rpb24gaW4gdGhlIGVuY3J5cHRpb24gYW5kIGRlY3J5cHRpb24KKyAqIHJvdW5kcy4gIEcxIGlzIHRoZSBzdHJhaWdodCBnKCkgZnVuY3Rpb247IEcyIGluY2x1ZGVzIHRoZSA4LWJpdAorICogcm90YXRpb24gZm9yIHRoZSBoaWdoIDMyLWJpdCB3b3JkLiAqLworCisjZGVmaW5lIEcxKGEpIFwKKyAgICAgKGN0eC0+c1swXVsoYSkgJiAweEZGXSkgXiAoY3R4LT5zWzFdWygoYSkgPj4gOCkgJiAweEZGXSkgXAorICAgXiAoY3R4LT5zWzJdWygoYSkgPj4gMTYpICYgMHhGRl0pIF4gKGN0eC0+c1szXVsoYSkgPj4gMjRdKQorCisjZGVmaW5lIEcyKGIpIFwKKyAgICAgKGN0eC0+c1sxXVsoYikgJiAweEZGXSkgXiAoY3R4LT5zWzJdWygoYikgPj4gOCkgJiAweEZGXSkgXAorICAgXiAoY3R4LT5zWzNdWygoYikgPj4gMTYpICYgMHhGRl0pIF4gKGN0eC0+c1swXVsoYikgPj4gMjRdKQorCisvKiBFbmNyeXB0aW9uIGFuZCBkZWNyeXB0aW9uIEZlaXN0ZWwgcm91bmRzLiAgRWFjaCBvbmUgY2FsbHMgdGhlIHR3byBnKCkKKyAqIG1hY3JvcywgZG9lcyB0aGUgUEhULCBhbmQgcGVyZm9ybXMgdGhlIFhPUiBhbmQgdGhlIGFwcHJvcHJpYXRlIGJpdAorICogcm90YXRpb25zLiAgVGhlIHBhcmFtZXRlcnMgYXJlIHRoZSByb3VuZCBudW1iZXIgKHVzZWQgdG8gc2VsZWN0IHN1YmtleXMpLAorICogYW5kIHRoZSBmb3VyIDMyLWJpdCBjaHVua3Mgb2YgdGhlIHRleHQuICovCisKKyNkZWZpbmUgRU5DUk9VTkQobiwgYSwgYiwgYywgZCkgXAorICAgeCA9IEcxIChhKTsgeSA9IEcyIChiKTsgXAorICAgeCArPSB5OyB5ICs9IHggKyBjdHgtPmtbMiAqIChuKSArIDFdOyBcCisgICAoYykgXj0geCArIGN0eC0+a1syICogKG4pXTsgXAorICAgKGMpID0gKChjKSA+PiAxKSArICgoYykgPDwgMzEpOyBcCisgICAoZCkgPSAoKChkKSA8PCAxKSsoKGQpID4+IDMxKSkgXiB5CisKKyNkZWZpbmUgREVDUk9VTkQobiwgYSwgYiwgYywgZCkgXAorICAgeCA9IEcxIChhKTsgeSA9IEcyIChiKTsgXAorICAgeCArPSB5OyB5ICs9IHg7IFwKKyAgIChkKSBePSB5ICsgY3R4LT5rWzIgKiAobikgKyAxXTsgXAorICAgKGQpID0gKChkKSA+PiAxKSArICgoZCkgPDwgMzEpOyBcCisgICAoYykgPSAoKChjKSA8PCAxKSsoKGMpID4+IDMxKSk7IFwKKyAgIChjKSBePSAoeCArIGN0eC0+a1syICogKG4pXSkKKworLyogRW5jcnlwdGlvbiBhbmQgZGVjcnlwdGlvbiBjeWNsZXM7IGVhY2ggb25lIGlzIHNpbXBseSB0d28gRmVpc3RlbCByb3VuZHMKKyAqIHdpdGggdGhlIDMyLWJpdCBjaHVua3MgcmUtb3JkZXJlZCB0byBzaW11bGF0ZSB0aGUgInN3YXAiICovCisKKyNkZWZpbmUgRU5DQ1lDTEUobikgXAorICAgRU5DUk9VTkQgKDIgKiAobiksIGEsIGIsIGMsIGQpOyBcCisgICBFTkNST1VORCAoMiAqIChuKSArIDEsIGMsIGQsIGEsIGIpCisKKyNkZWZpbmUgREVDQ1lDTEUobikgXAorICAgREVDUk9VTkQgKDIgKiAobikgKyAxLCBjLCBkLCBhLCBiKTsgXAorICAgREVDUk9VTkQgKDIgKiAobiksIGEsIGIsIGMsIGQpCisKKy8qIE1hY3JvcyB0byBjb252ZXJ0IHRoZSBpbnB1dCBhbmQgb3V0cHV0IGJ5dGVzIGludG8gMzItYml0IHdvcmRzLAorICogYW5kIHNpbXVsdGFuZW91c2x5IHBlcmZvcm0gdGhlIHdoaXRlbmluZyBzdGVwLiAgSU5QQUNLIHBhY2tzIHdvcmQKKyAqIG51bWJlciBuIGludG8gdGhlIHZhcmlhYmxlIG5hbWVkIGJ5IHgsIHVzaW5nIHdoaXRlbmluZyBzdWJrZXkgbnVtYmVyIG0uCisgKiBPVVRVTlBBQ0sgdW5wYWNrcyB3b3JkIG51bWJlciBuIGZyb20gdGhlIHZhcmlhYmxlIG5hbWVkIGJ5IHgsIHVzaW5nCisgKiB3aGl0ZW5pbmcgc3Via2V5IG51bWJlciBtLiAqLworCisjZGVmaW5lIElOUEFDSyhuLCB4LCBtKSBcCisgICB4ID0gaW5bNCAqIChuKV0gXiAoaW5bNCAqIChuKSArIDFdIDw8IDgpIFwKKyAgICAgXiAoaW5bNCAqIChuKSArIDJdIDw8IDE2KSBeIChpbls0ICogKG4pICsgM10gPDwgMjQpIF4gY3R4LT53W21dCisKKyNkZWZpbmUgT1VUVU5QQUNLKG4sIHgsIG0pIFwKKyAgIHggXj0gY3R4LT53W21dOyBcCisgICBvdXRbNCAqIChuKV0gPSB4OyBvdXRbNCAqIChuKSArIDFdID0geCA+PiA4OyBcCisgICBvdXRbNCAqIChuKSArIDJdID0geCA+PiAxNjsgb3V0WzQgKiAobikgKyAzXSA9IHggPj4gMjQKKworI2RlZmluZSBURl9NSU5fS0VZX1NJWkUgMTYKKyNkZWZpbmUgVEZfTUFYX0tFWV9TSVpFIDMyCisjZGVmaW5lIFRGX0JMT0NLX1NJWkUgMTYKKworLyogU3RydWN0dXJlIGZvciBhbiBleHBhbmRlZCBUd29maXNoIGtleS4gIHMgY29udGFpbnMgdGhlIGtleS1kZXBlbmRlbnQKKyAqIFMtYm94ZXMgY29tcG9zZWQgd2l0aCB0aGUgTURTIG1hdHJpeDsgdyBjb250YWlucyB0aGUgZWlnaHQgIndoaXRlbmluZyIKKyAqIHN1YmtleXMsIEtbMF0gdGhyb3VnaCBLWzddLglrIGhvbGRzIHRoZSByZW1haW5pbmcsICJyb3VuZCIgc3Via2V5cy4gIE5vdGUKKyAqIHRoYXQga1tpXSBjb3JyZXNwb25kcyB0byB3aGF0IHRoZSBUd29maXNoIHBhcGVyIGNhbGxzIEtbaSs4XS4gKi8KK3N0cnVjdCB0d29maXNoX2N0eCB7CisgICB1MzIgc1s0XVsyNTZdLCB3WzhdLCBrWzMyXTsKK307CisKKy8qIFBlcmZvcm0gdGhlIGtleSBzZXR1cC4gKi8KK3N0YXRpYyBpbnQgdHdvZmlzaF9zZXRrZXkodm9pZCAqY3gsIGNvbnN0IHU4ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBrZXlfbGVuLCB1MzIgKmZsYWdzKQoreworCQorCXN0cnVjdCB0d29maXNoX2N0eCAqY3R4ID0gY3g7CisKKwlpbnQgaSwgaiwgazsKKworCS8qIFRlbXBvcmFyaWVzIGZvciBDQUxDX0suICovCisJdTMyIHgsIHk7CisKKwkvKiBUaGUgUyB2ZWN0b3IgdXNlZCB0byBrZXkgdGhlIFMtYm94ZXMsIHNwbGl0IHVwIGludG8gaW5kaXZpZHVhbCBieXRlcy4KKwkgKiAxMjgtYml0IGtleXMgdXNlIG9ubHkgc2EgdGhyb3VnaCBzaDsgMjU2LWJpdCB1c2UgYWxsIG9mIHRoZW0uICovCisJdTggc2EgPSAwLCBzYiA9IDAsIHNjID0gMCwgc2QgPSAwLCBzZSA9IDAsIHNmID0gMCwgc2cgPSAwLCBzaCA9IDA7CisJdTggc2kgPSAwLCBzaiA9IDAsIHNrID0gMCwgc2wgPSAwLCBzbSA9IDAsIHNuID0gMCwgc28gPSAwLCBzcCA9IDA7CisKKwkvKiBUZW1wb3JhcnkgZm9yIENBTENfUy4gKi8KKwl1OCB0bXA7CisKKwkvKiBDaGVjayBrZXkgbGVuZ3RoLiAqLworCWlmIChrZXlfbGVuICE9IDE2ICYmIGtleV9sZW4gIT0gMjQgJiYga2V5X2xlbiAhPSAzMikKKwl7CisJCSpmbGFncyB8PSBDUllQVE9fVEZNX1JFU19CQURfS0VZX0xFTjsKKwkJcmV0dXJuIC1FSU5WQUw7IC8qIHVuc3VwcG9ydGVkIGtleSBsZW5ndGggKi8KKwl9CisKKwkvKiBDb21wdXRlIHRoZSBmaXJzdCB0d28gd29yZHMgb2YgdGhlIFMgdmVjdG9yLiAgVGhlIG1hZ2ljIG51bWJlcnMgYXJlCisJICogdGhlIGVudHJpZXMgb2YgdGhlIFJTIG1hdHJpeCwgcHJlcHJvY2Vzc2VkIHRocm91Z2ggcG9seV90b19leHAuIFRoZQorCSAqIG51bWJlcnMgaW4gdGhlIGNvbW1lbnRzIGFyZSB0aGUgb3JpZ2luYWwgKHBvbHlub21pYWwgZm9ybSkgbWF0cml4CisJICogZW50cmllcy4gKi8KKwlDQUxDX1MgKHNhLCBzYiwgc2MsIHNkLCAwLCAweDAwLCAweDJELCAweDAxLCAweDJEKTsgLyogMDEgQTQgMDIgQTQgKi8KKwlDQUxDX1MgKHNhLCBzYiwgc2MsIHNkLCAxLCAweDJELCAweEE0LCAweDQ0LCAweDhBKTsgLyogQTQgNTYgQTEgNTUgKi8KKwlDQUxDX1MgKHNhLCBzYiwgc2MsIHNkLCAyLCAweDhBLCAweEQ1LCAweEJGLCAweEQxKTsgLyogNTUgODIgRkMgODcgKi8KKwlDQUxDX1MgKHNhLCBzYiwgc2MsIHNkLCAzLCAweEQxLCAweDdGLCAweDNELCAweDk5KTsgLyogODcgRjMgQzEgNUEgKi8KKwlDQUxDX1MgKHNhLCBzYiwgc2MsIHNkLCA0LCAweDk5LCAweDQ2LCAweDY2LCAweDk2KTsgLyogNUEgMUUgNDcgNTggKi8KKwlDQUxDX1MgKHNhLCBzYiwgc2MsIHNkLCA1LCAweDk2LCAweDNDLCAweDVCLCAweEVEKTsgLyogNTggQzYgQUUgREIgKi8KKwlDQUxDX1MgKHNhLCBzYiwgc2MsIHNkLCA2LCAweEVELCAweDM3LCAweDRGLCAweEUwKTsgLyogREIgNjggM0QgOUUgKi8KKwlDQUxDX1MgKHNhLCBzYiwgc2MsIHNkLCA3LCAweEUwLCAweEQwLCAweDhDLCAweDE3KTsgLyogOUUgRTUgMTkgMDMgKi8KKwlDQUxDX1MgKHNlLCBzZiwgc2csIHNoLCA4LCAweDAwLCAweDJELCAweDAxLCAweDJEKTsgLyogMDEgQTQgMDIgQTQgKi8KKwlDQUxDX1MgKHNlLCBzZiwgc2csIHNoLCA5LCAweDJELCAweEE0LCAweDQ0LCAweDhBKTsgLyogQTQgNTYgQTEgNTUgKi8KKwlDQUxDX1MgKHNlLCBzZiwgc2csIHNoLCAxMCwgMHg4QSwgMHhENSwgMHhCRiwgMHhEMSk7IC8qIDU1IDgyIEZDIDg3ICovCisJQ0FMQ19TIChzZSwgc2YsIHNnLCBzaCwgMTEsIDB4RDEsIDB4N0YsIDB4M0QsIDB4OTkpOyAvKiA4NyBGMyBDMSA1QSAqLworCUNBTENfUyAoc2UsIHNmLCBzZywgc2gsIDEyLCAweDk5LCAweDQ2LCAweDY2LCAweDk2KTsgLyogNUEgMUUgNDcgNTggKi8KKwlDQUxDX1MgKHNlLCBzZiwgc2csIHNoLCAxMywgMHg5NiwgMHgzQywgMHg1QiwgMHhFRCk7IC8qIDU4IEM2IEFFIERCICovCisJQ0FMQ19TIChzZSwgc2YsIHNnLCBzaCwgMTQsIDB4RUQsIDB4MzcsIDB4NEYsIDB4RTApOyAvKiBEQiA2OCAzRCA5RSAqLworCUNBTENfUyAoc2UsIHNmLCBzZywgc2gsIDE1LCAweEUwLCAweEQwLCAweDhDLCAweDE3KTsgLyogOUUgRTUgMTkgMDMgKi8KKworCWlmIChrZXlfbGVuID09IDI0IHx8IGtleV9sZW4gPT0gMzIpIHsgLyogMTkyLSBvciAyNTYtYml0IGtleSAqLworCQkvKiBDYWxjdWxhdGUgdGhlIHRoaXJkIHdvcmQgb2YgdGhlIFMgdmVjdG9yICovCisJCUNBTENfUyAoc2ksIHNqLCBzaywgc2wsIDE2LCAweDAwLCAweDJELCAweDAxLCAweDJEKTsgLyogMDEgQTQgMDIgQTQgKi8KKwkJQ0FMQ19TIChzaSwgc2osIHNrLCBzbCwgMTcsIDB4MkQsIDB4QTQsIDB4NDQsIDB4OEEpOyAvKiBBNCA1NiBBMSA1NSAqLworCQlDQUxDX1MgKHNpLCBzaiwgc2ssIHNsLCAxOCwgMHg4QSwgMHhENSwgMHhCRiwgMHhEMSk7IC8qIDU1IDgyIEZDIDg3ICovCisJCUNBTENfUyAoc2ksIHNqLCBzaywgc2wsIDE5LCAweEQxLCAweDdGLCAweDNELCAweDk5KTsgLyogODcgRjMgQzEgNUEgKi8KKwkJQ0FMQ19TIChzaSwgc2osIHNrLCBzbCwgMjAsIDB4OTksIDB4NDYsIDB4NjYsIDB4OTYpOyAvKiA1QSAxRSA0NyA1OCAqLworCQlDQUxDX1MgKHNpLCBzaiwgc2ssIHNsLCAyMSwgMHg5NiwgMHgzQywgMHg1QiwgMHhFRCk7IC8qIDU4IEM2IEFFIERCICovCisJCUNBTENfUyAoc2ksIHNqLCBzaywgc2wsIDIyLCAweEVELCAweDM3LCAweDRGLCAweEUwKTsgLyogREIgNjggM0QgOUUgKi8KKwkJQ0FMQ19TIChzaSwgc2osIHNrLCBzbCwgMjMsIDB4RTAsIDB4RDAsIDB4OEMsIDB4MTcpOyAvKiA5RSBFNSAxOSAwMyAqLworCX0KKworCWlmIChrZXlfbGVuID09IDMyKSB7IC8qIDI1Ni1iaXQga2V5ICovCisJCS8qIENhbGN1bGF0ZSB0aGUgZm91cnRoIHdvcmQgb2YgdGhlIFMgdmVjdG9yICovCisJCUNBTENfUyAoc20sIHNuLCBzbywgc3AsIDI0LCAweDAwLCAweDJELCAweDAxLCAweDJEKTsgLyogMDEgQTQgMDIgQTQgKi8KKwkJQ0FMQ19TIChzbSwgc24sIHNvLCBzcCwgMjUsIDB4MkQsIDB4QTQsIDB4NDQsIDB4OEEpOyAvKiBBNCA1NiBBMSA1NSAqLworCQlDQUxDX1MgKHNtLCBzbiwgc28sIHNwLCAyNiwgMHg4QSwgMHhENSwgMHhCRiwgMHhEMSk7IC8qIDU1IDgyIEZDIDg3ICovCisJCUNBTENfUyAoc20sIHNuLCBzbywgc3AsIDI3LCAweEQxLCAweDdGLCAweDNELCAweDk5KTsgLyogODcgRjMgQzEgNUEgKi8KKwkJQ0FMQ19TIChzbSwgc24sIHNvLCBzcCwgMjgsIDB4OTksIDB4NDYsIDB4NjYsIDB4OTYpOyAvKiA1QSAxRSA0NyA1OCAqLworCQlDQUxDX1MgKHNtLCBzbiwgc28sIHNwLCAyOSwgMHg5NiwgMHgzQywgMHg1QiwgMHhFRCk7IC8qIDU4IEM2IEFFIERCICovCisJCUNBTENfUyAoc20sIHNuLCBzbywgc3AsIDMwLCAweEVELCAweDM3LCAweDRGLCAweEUwKTsgLyogREIgNjggM0QgOUUgKi8KKwkJQ0FMQ19TIChzbSwgc24sIHNvLCBzcCwgMzEsIDB4RTAsIDB4RDAsIDB4OEMsIDB4MTcpOyAvKiA5RSBFNSAxOSAwMyAqLworCisJCS8qIENvbXB1dGUgdGhlIFMtYm94ZXMuICovCisJCWZvciAoIGkgPSBqID0gMCwgayA9IDE7IGkgPCAyNTY7IGkrKywgaiArPSAyLCBrICs9IDIgKSB7CisJCQlDQUxDX1NCMjU2XzIoIGksIGNhbGNfc2JfdGJsW2pdLCBjYWxjX3NiX3RibFtrXSApOworCQl9CisKKwkJLyogQ2FsY3VsYXRlIHdoaXRlbmluZyBhbmQgcm91bmQgc3Via2V5cy4gIFRoZSBjb25zdGFudHMgYXJlCisJCSAqIGluZGljZXMgb2Ygc3Via2V5cywgcHJlcHJvY2Vzc2VkIHRocm91Z2ggcTAgYW5kIHExLiAqLworCQlDQUxDX0syNTYgKHcsIDAsIDB4QTksIDB4NzUsIDB4NjcsIDB4RjMpOworCQlDQUxDX0syNTYgKHcsIDIsIDB4QjMsIDB4QzYsIDB4RTgsIDB4RjQpOworCQlDQUxDX0syNTYgKHcsIDQsIDB4MDQsIDB4REIsIDB4RkQsIDB4N0IpOworCQlDQUxDX0syNTYgKHcsIDYsIDB4QTMsIDB4RkIsIDB4NzYsIDB4QzgpOworCQlDQUxDX0syNTYgKGssIDAsIDB4OUEsIDB4NEEsIDB4OTIsIDB4RDMpOworCQlDQUxDX0syNTYgKGssIDIsIDB4ODAsIDB4RTYsIDB4NzgsIDB4NkIpOworCQlDQUxDX0syNTYgKGssIDQsIDB4RTQsIDB4NDUsIDB4REQsIDB4N0QpOworCQlDQUxDX0syNTYgKGssIDYsIDB4RDEsIDB4RTgsIDB4MzgsIDB4NEIpOworCQlDQUxDX0syNTYgKGssIDgsIDB4MEQsIDB4RDYsIDB4QzYsIDB4MzIpOworCQlDQUxDX0syNTYgKGssIDEwLCAweDM1LCAweEQ4LCAweDk4LCAweEZEKTsKKwkJQ0FMQ19LMjU2IChrLCAxMiwgMHgxOCwgMHgzNywgMHhGNywgMHg3MSk7CisJCUNBTENfSzI1NiAoaywgMTQsIDB4RUMsIDB4RjEsIDB4NkMsIDB4RTEpOworCQlDQUxDX0syNTYgKGssIDE2LCAweDQzLCAweDMwLCAweDc1LCAweDBGKTsKKwkJQ0FMQ19LMjU2IChrLCAxOCwgMHgzNywgMHhGOCwgMHgyNiwgMHgxQik7CisJCUNBTENfSzI1NiAoaywgMjAsIDB4RkEsIDB4ODcsIDB4MTMsIDB4RkEpOworCQlDQUxDX0syNTYgKGssIDIyLCAweDk0LCAweDA2LCAweDQ4LCAweDNGKTsKKwkJQ0FMQ19LMjU2IChrLCAyNCwgMHhGMiwgMHg1RSwgMHhEMCwgMHhCQSk7CisJCUNBTENfSzI1NiAoaywgMjYsIDB4OEIsIDB4QUUsIDB4MzAsIDB4NUIpOworCQlDQUxDX0syNTYgKGssIDI4LCAweDg0LCAweDhBLCAweDU0LCAweDAwKTsKKwkJQ0FMQ19LMjU2IChrLCAzMCwgMHhERiwgMHhCQywgMHgyMywgMHg5RCk7CisJfSBlbHNlIGlmIChrZXlfbGVuID09IDI0KSB7IC8qIDE5Mi1iaXQga2V5ICovCisJCS8qIENvbXB1dGUgdGhlIFMtYm94ZXMuICovCisJCWZvciAoIGkgPSBqID0gMCwgayA9IDE7IGkgPCAyNTY7IGkrKywgaiArPSAyLCBrICs9IDIgKSB7CisJCSAgICAgICAgQ0FMQ19TQjE5Ml8yKCBpLCBjYWxjX3NiX3RibFtqXSwgY2FsY19zYl90Ymxba10gKTsKKwkJfQorCisJCS8qIENhbGN1bGF0ZSB3aGl0ZW5pbmcgYW5kIHJvdW5kIHN1YmtleXMuICBUaGUgY29uc3RhbnRzIGFyZQorCQkgKiBpbmRpY2VzIG9mIHN1YmtleXMsIHByZXByb2Nlc3NlZCB0aHJvdWdoIHEwIGFuZCBxMS4gKi8KKwkJQ0FMQ19LMTkyICh3LCAwLCAweEE5LCAweDc1LCAweDY3LCAweEYzKTsKKwkJQ0FMQ19LMTkyICh3LCAyLCAweEIzLCAweEM2LCAweEU4LCAweEY0KTsKKwkJQ0FMQ19LMTkyICh3LCA0LCAweDA0LCAweERCLCAweEZELCAweDdCKTsKKwkJQ0FMQ19LMTkyICh3LCA2LCAweEEzLCAweEZCLCAweDc2LCAweEM4KTsKKwkJQ0FMQ19LMTkyIChrLCAwLCAweDlBLCAweDRBLCAweDkyLCAweEQzKTsKKwkJQ0FMQ19LMTkyIChrLCAyLCAweDgwLCAweEU2LCAweDc4LCAweDZCKTsKKwkJQ0FMQ19LMTkyIChrLCA0LCAweEU0LCAweDQ1LCAweERELCAweDdEKTsKKwkJQ0FMQ19LMTkyIChrLCA2LCAweEQxLCAweEU4LCAweDM4LCAweDRCKTsKKwkJQ0FMQ19LMTkyIChrLCA4LCAweDBELCAweEQ2LCAweEM2LCAweDMyKTsKKwkJQ0FMQ19LMTkyIChrLCAxMCwgMHgzNSwgMHhEOCwgMHg5OCwgMHhGRCk7CisJCUNBTENfSzE5MiAoaywgMTIsIDB4MTgsIDB4MzcsIDB4RjcsIDB4NzEpOworCQlDQUxDX0sxOTIgKGssIDE0LCAweEVDLCAweEYxLCAweDZDLCAweEUxKTsKKwkJQ0FMQ19LMTkyIChrLCAxNiwgMHg0MywgMHgzMCwgMHg3NSwgMHgwRik7CisJCUNBTENfSzE5MiAoaywgMTgsIDB4MzcsIDB4RjgsIDB4MjYsIDB4MUIpOworCQlDQUxDX0sxOTIgKGssIDIwLCAweEZBLCAweDg3LCAweDEzLCAweEZBKTsKKwkJQ0FMQ19LMTkyIChrLCAyMiwgMHg5NCwgMHgwNiwgMHg0OCwgMHgzRik7CisJCUNBTENfSzE5MiAoaywgMjQsIDB4RjIsIDB4NUUsIDB4RDAsIDB4QkEpOworCQlDQUxDX0sxOTIgKGssIDI2LCAweDhCLCAweEFFLCAweDMwLCAweDVCKTsKKwkJQ0FMQ19LMTkyIChrLCAyOCwgMHg4NCwgMHg4QSwgMHg1NCwgMHgwMCk7CisJCUNBTENfSzE5MiAoaywgMzAsIDB4REYsIDB4QkMsIDB4MjMsIDB4OUQpOworCX0gZWxzZSB7IC8qIDEyOC1iaXQga2V5ICovCisJCS8qIENvbXB1dGUgdGhlIFMtYm94ZXMuICovCisJCWZvciAoIGkgPSBqID0gMCwgayA9IDE7IGkgPCAyNTY7IGkrKywgaiArPSAyLCBrICs9IDIgKSB7CisJCQlDQUxDX1NCXzIoIGksIGNhbGNfc2JfdGJsW2pdLCBjYWxjX3NiX3RibFtrXSApOworCQl9CisKKwkJLyogQ2FsY3VsYXRlIHdoaXRlbmluZyBhbmQgcm91bmQgc3Via2V5cy4gIFRoZSBjb25zdGFudHMgYXJlCisJCSAqIGluZGljZXMgb2Ygc3Via2V5cywgcHJlcHJvY2Vzc2VkIHRocm91Z2ggcTAgYW5kIHExLiAqLworCQlDQUxDX0sgKHcsIDAsIDB4QTksIDB4NzUsIDB4NjcsIDB4RjMpOworCQlDQUxDX0sgKHcsIDIsIDB4QjMsIDB4QzYsIDB4RTgsIDB4RjQpOworCQlDQUxDX0sgKHcsIDQsIDB4MDQsIDB4REIsIDB4RkQsIDB4N0IpOworCQlDQUxDX0sgKHcsIDYsIDB4QTMsIDB4RkIsIDB4NzYsIDB4QzgpOworCQlDQUxDX0sgKGssIDAsIDB4OUEsIDB4NEEsIDB4OTIsIDB4RDMpOworCQlDQUxDX0sgKGssIDIsIDB4ODAsIDB4RTYsIDB4NzgsIDB4NkIpOworCQlDQUxDX0sgKGssIDQsIDB4RTQsIDB4NDUsIDB4REQsIDB4N0QpOworCQlDQUxDX0sgKGssIDYsIDB4RDEsIDB4RTgsIDB4MzgsIDB4NEIpOworCQlDQUxDX0sgKGssIDgsIDB4MEQsIDB4RDYsIDB4QzYsIDB4MzIpOworCQlDQUxDX0sgKGssIDEwLCAweDM1LCAweEQ4LCAweDk4LCAweEZEKTsKKwkJQ0FMQ19LIChrLCAxMiwgMHgxOCwgMHgzNywgMHhGNywgMHg3MSk7CisJCUNBTENfSyAoaywgMTQsIDB4RUMsIDB4RjEsIDB4NkMsIDB4RTEpOworCQlDQUxDX0sgKGssIDE2LCAweDQzLCAweDMwLCAweDc1LCAweDBGKTsKKwkJQ0FMQ19LIChrLCAxOCwgMHgzNywgMHhGOCwgMHgyNiwgMHgxQik7CisJCUNBTENfSyAoaywgMjAsIDB4RkEsIDB4ODcsIDB4MTMsIDB4RkEpOworCQlDQUxDX0sgKGssIDIyLCAweDk0LCAweDA2LCAweDQ4LCAweDNGKTsKKwkJQ0FMQ19LIChrLCAyNCwgMHhGMiwgMHg1RSwgMHhEMCwgMHhCQSk7CisJCUNBTENfSyAoaywgMjYsIDB4OEIsIDB4QUUsIDB4MzAsIDB4NUIpOworCQlDQUxDX0sgKGssIDI4LCAweDg0LCAweDhBLCAweDU0LCAweDAwKTsKKwkJQ0FMQ19LIChrLCAzMCwgMHhERiwgMHhCQywgMHgyMywgMHg5RCk7CisJfQorCisJcmV0dXJuIDA7Cit9CisKKy8qIEVuY3J5cHQgb25lIGJsb2NrLiAgaW4gYW5kIG91dCBtYXkgYmUgdGhlIHNhbWUuICovCitzdGF0aWMgdm9pZCB0d29maXNoX2VuY3J5cHQodm9pZCAqY3gsIHU4ICpvdXQsIGNvbnN0IHU4ICppbikKK3sKKwlzdHJ1Y3QgdHdvZmlzaF9jdHggKmN0eCA9IGN4OworCisJLyogVGhlIGZvdXIgMzItYml0IGNodW5rcyBvZiB0aGUgdGV4dC4gKi8KKwl1MzIgYSwgYiwgYywgZDsKKwkKKwkvKiBUZW1wb3JhcmllcyB1c2VkIGJ5IHRoZSByb3VuZCBmdW5jdGlvbi4gKi8KKwl1MzIgeCwgeTsKKworCS8qIElucHV0IHdoaXRlbmluZyBhbmQgcGFja2luZy4gKi8KKwlJTlBBQ0sgKDAsIGEsIDApOworCUlOUEFDSyAoMSwgYiwgMSk7CisJSU5QQUNLICgyLCBjLCAyKTsKKwlJTlBBQ0sgKDMsIGQsIDMpOworCQorCS8qIEVuY3J5cHRpb24gRmVpc3RlbCBjeWNsZXMuICovCisJRU5DQ1lDTEUgKDApOworCUVOQ0NZQ0xFICgxKTsKKwlFTkNDWUNMRSAoMik7CisJRU5DQ1lDTEUgKDMpOworCUVOQ0NZQ0xFICg0KTsKKwlFTkNDWUNMRSAoNSk7CisJRU5DQ1lDTEUgKDYpOworCUVOQ0NZQ0xFICg3KTsKKwkKKwkvKiBPdXRwdXQgd2hpdGVuaW5nIGFuZCB1bnBhY2tpbmcuICovCisJT1VUVU5QQUNLICgwLCBjLCA0KTsKKwlPVVRVTlBBQ0sgKDEsIGQsIDUpOworCU9VVFVOUEFDSyAoMiwgYSwgNik7CisJT1VUVU5QQUNLICgzLCBiLCA3KTsKKwkKK30KKworLyogRGVjcnlwdCBvbmUgYmxvY2suICBpbiBhbmQgb3V0IG1heSBiZSB0aGUgc2FtZS4gKi8KK3N0YXRpYyB2b2lkIHR3b2Zpc2hfZGVjcnlwdCh2b2lkICpjeCwgdTggKm91dCwgY29uc3QgdTggKmluKQoreworCXN0cnVjdCB0d29maXNoX2N0eCAqY3R4ID0gY3g7CisgIAorCS8qIFRoZSBmb3VyIDMyLWJpdCBjaHVua3Mgb2YgdGhlIHRleHQuICovCisJdTMyIGEsIGIsIGMsIGQ7CisJCisJLyogVGVtcG9yYXJpZXMgdXNlZCBieSB0aGUgcm91bmQgZnVuY3Rpb24uICovCisJdTMyIHgsIHk7CisJCisJLyogSW5wdXQgd2hpdGVuaW5nIGFuZCBwYWNraW5nLiAqLworCUlOUEFDSyAoMCwgYywgNCk7CisJSU5QQUNLICgxLCBkLCA1KTsKKwlJTlBBQ0sgKDIsIGEsIDYpOworCUlOUEFDSyAoMywgYiwgNyk7CisJCisJLyogRW5jcnlwdGlvbiBGZWlzdGVsIGN5Y2xlcy4gKi8KKwlERUNDWUNMRSAoNyk7CisJREVDQ1lDTEUgKDYpOworCURFQ0NZQ0xFICg1KTsKKwlERUNDWUNMRSAoNCk7CisJREVDQ1lDTEUgKDMpOworCURFQ0NZQ0xFICgyKTsKKwlERUNDWUNMRSAoMSk7CisJREVDQ1lDTEUgKDApOworCisJLyogT3V0cHV0IHdoaXRlbmluZyBhbmQgdW5wYWNraW5nLiAqLworCU9VVFVOUEFDSyAoMCwgYSwgMCk7CisJT1VUVU5QQUNLICgxLCBiLCAxKTsKKwlPVVRVTlBBQ0sgKDIsIGMsIDIpOworCU9VVFVOUEFDSyAoMywgZCwgMyk7CisKK30KKworc3RhdGljIHN0cnVjdCBjcnlwdG9fYWxnIGFsZyA9IHsKKwkuY3JhX25hbWUgICAgICAgICAgID0gICAidHdvZmlzaCIsCisJLmNyYV9mbGFncyAgICAgICAgICA9ICAgQ1JZUFRPX0FMR19UWVBFX0NJUEhFUiwKKwkuY3JhX2Jsb2Nrc2l6ZSAgICAgID0gICBURl9CTE9DS19TSVpFLAorCS5jcmFfY3R4c2l6ZSAgICAgICAgPSAgIHNpemVvZihzdHJ1Y3QgdHdvZmlzaF9jdHgpLAorCS5jcmFfbW9kdWxlICAgICAgICAgPSAgIFRISVNfTU9EVUxFLAorCS5jcmFfbGlzdCAgICAgICAgICAgPSAgIExJU1RfSEVBRF9JTklUKGFsZy5jcmFfbGlzdCksCisJLmNyYV91ICAgICAgICAgICAgICA9ICAgeyAuY2lwaGVyID0geworCS5jaWFfbWluX2tleXNpemUgICAgPSAgIFRGX01JTl9LRVlfU0laRSwKKwkuY2lhX21heF9rZXlzaXplICAgID0gICBURl9NQVhfS0VZX1NJWkUsCisJLmNpYV9zZXRrZXkgICAgICAgICA9ICAgdHdvZmlzaF9zZXRrZXksCisJLmNpYV9lbmNyeXB0ICAgICAgICA9ICAgdHdvZmlzaF9lbmNyeXB0LAorCS5jaWFfZGVjcnlwdCAgICAgICAgPSAgIHR3b2Zpc2hfZGVjcnlwdCB9IH0KK307CisKK3N0YXRpYyBpbnQgX19pbml0IGluaXQodm9pZCkKK3sKKwlyZXR1cm4gY3J5cHRvX3JlZ2lzdGVyX2FsZygmYWxnKTsKK30KKworc3RhdGljIHZvaWQgX19leGl0IGZpbmkodm9pZCkKK3sKKwljcnlwdG9fdW5yZWdpc3Rlcl9hbGcoJmFsZyk7Cit9CisKK21vZHVsZV9pbml0KGluaXQpOworbW9kdWxlX2V4aXQoZmluaSk7CisKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9ERVNDUklQVElPTiAoIlR3b2Zpc2ggQ2lwaGVyIEFsZ29yaXRobSIpOwpkaWZmIC0tZ2l0IGEvY3J5cHRvL3dwNTEyLmMgYi9jcnlwdG8vd3A1MTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDZlMjBlCi0tLSAvZGV2L251bGwKKysrIGIvY3J5cHRvL3dwNTEyLmMKQEAgLTAsMCArMSwxMjA4IEBACisvKgorICogQ3J5cHRvZ3JhcGhpYyBBUEkuCisgKgorICogV2hpcmxwb29sIGhhc2hpbmcgQWxnb3JpdGhtCisgKgorICogVGhlIFdoaXJscG9vbCBhbGdvcml0aG0gd2FzIGRldmVsb3BlZCBieSBQYXVsbyBTLiBMLiBNLiBCYXJyZXRvIGFuZAorICogVmluY2VudCBSaWptZW4uICBJdCBoYXMgYmVlbiBzZWxlY3RlZCBhcyBvbmUgb2YgY3J5cHRvZ3JhcGhpYworICogcHJpbWl0aXZlcyBieSB0aGUgTkVTU0lFIHByb2plY3QgaHR0cDovL3d3dy5jcnlwdG9uZXNzaWUub3JnLworICoKKyAqIFRoZSBvcmlnaW5hbCBhdXRob3JzIGhhdmUgZGlzY2xhaW1lZCBhbGwgY29weXJpZ2h0IGludGVyZXN0IGluIHRoaXMKKyAqIGNvZGUgYW5kIHRodXMgcHV0IGl0IGluIHRoZSBwdWJsaWMgZG9tYWluLiBUaGUgc3Vic2VxdWVudCBhdXRob3JzCisgKiBoYXZlIHB1dCB0aGlzIHVuZGVyIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KKyAqCisgKiBCeSBBYXJvbiBHcm90aGUgYWpncm90aGVAeWFob28uY29tLCBBdWd1c3QgMjMsIDIwMDQKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqLworI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9tbS5oPgorI2luY2x1ZGUgPGFzbS9zY2F0dGVybGlzdC5oPgorI2luY2x1ZGUgPGxpbnV4L2NyeXB0by5oPgorCisjZGVmaW5lIFdQNTEyX0RJR0VTVF9TSVpFIDY0CisjZGVmaW5lIFdQMzg0X0RJR0VTVF9TSVpFIDQ4CisjZGVmaW5lIFdQMjU2X0RJR0VTVF9TSVpFIDMyCisKKyNkZWZpbmUgV1A1MTJfQkxPQ0tfU0laRSAgNjQKKyNkZWZpbmUgV1A1MTJfTEVOR1RIQllURVMgMzIKKworI2RlZmluZSBXSElSTFBPT0xfUk9VTkRTIDEwCisKK3N0cnVjdCB3cDUxMl9jdHggeworCXU4ICBiaXRMZW5ndGhbV1A1MTJfTEVOR1RIQllURVNdOworCXU4ICBidWZmZXJbV1A1MTJfQkxPQ0tfU0laRV07CisJaW50IGJ1ZmZlckJpdHM7CisJaW50IGJ1ZmZlclBvczsKKwl1NjQgaGFzaFtXUDUxMl9ESUdFU1RfU0laRS84XTsKK307CisKKy8qCisgKiBUaG91Z2ggV2hpcmxwb29sIGlzIGVuZGlhbm5lc3MtbmV1dHJhbCwgdGhlIGVuY3J5cHRpb24gdGFibGVzIGFyZSBsaXN0ZWQKKyAqIGluIEJJRy1FTkRJQU4gZm9ybWF0LCB3aGljaCBpcyBhZG9wdGVkIHRocm91Z2hvdXQgdGhpcyBpbXBsZW1lbnRhdGlvbgorICogKGJ1dCBsaXR0bGUtZW5kaWFuIG5vdGF0aW9uIHdvdWxkIGJlIGVxdWFsbHkgc3VpdGFibGUgaWYgY29uc2lzdGVudGx5CisgKiBlbXBsb3llZCkuCisgKi8KKworc3RhdGljIGNvbnN0IHU2NCBDMFsyNTZdID0geworCTB4MTgxODYwMThjMDc4MzBkOFVMTCwgMHgyMzIzOGMyMzA1YWY0NjI2VUxMLCAweGM2YzYzZmM2N2VmOTkxYjhVTEwsCisJMHhlOGU4ODdlODEzNmZjZGZiVUxMLCAweDg3ODcyNjg3NGNhMTEzY2JVTEwsIDB4YjhiOGRhYjhhOTYyNmQxMVVMTCwKKwkweDAxMDEwNDAxMDgwNTAyMDlVTEwsIDB4NGY0ZjIxNGY0MjZlOWUwZFVMTCwgMHgzNjM2ZDgzNmFkZWU2YzliVUxMLAorCTB4YTZhNmEyYTY1OTA0NTFmZlVMTCwgMHhkMmQyNmZkMmRlYmRiOTBjVUxMLCAweGY1ZjVmM2Y1ZmIwNmY3MGVVTEwsCisJMHg3OTc5Zjk3OWVmODBmMjk2VUxMLCAweDZmNmZhMTZmNWZjZWRlMzBVTEwsIDB4OTE5MTdlOTFmY2VmM2Y2ZFVMTCwKKwkweDUyNTI1NTUyYWEwN2E0ZjhVTEwsIDB4NjA2MDlkNjAyN2ZkYzA0N1VMTCwgMHhiY2JjY2FiYzg5NzY2NTM1VUxMLAorCTB4OWI5YjU2OWJhY2NkMmIzN1VMTCwgMHg4ZThlMDI4ZTA0OGMwMThhVUxMLCAweGEzYTNiNmEzNzExNTViZDJVTEwsCisJMHgwYzBjMzAwYzYwM2MxODZjVUxMLCAweDdiN2JmMTdiZmY4YWY2ODRVTEwsIDB4MzUzNWQ0MzViNWUxNmE4MFVMTCwKKwkweDFkMWQ3NDFkZTg2OTNhZjVVTEwsIDB4ZTBlMGE3ZTA1MzQ3ZGRiM1VMTCwgMHhkN2Q3N2JkN2Y2YWNiMzIxVUxMLAorCTB4YzJjMjJmYzI1ZWVkOTk5Y1VMTCwgMHgyZTJlYjgyZTZkOTY1YzQzVUxMLCAweDRiNGIzMTRiNjI3YTk2MjlVTEwsCisJMHhmZWZlZGZmZWEzMjFlMTVkVUxMLCAweDU3NTc0MTU3ODIxNmFlZDVVTEwsIDB4MTUxNTU0MTVhODQxMmFiZFVMTCwKKwkweDc3NzdjMTc3OWZiNmVlZThVTEwsIDB4MzczN2RjMzdhNWViNmU5MlVMTCwgMHhlNWU1YjNlNTdiNTZkNzllVUxMLAorCTB4OWY5ZjQ2OWY4Y2Q5MjMxM1VMTCwgMHhmMGYwZTdmMGQzMTdmZDIzVUxMLCAweDRhNGEzNTRhNmE3Zjk0MjBVTEwsCisJMHhkYWRhNGZkYTllOTVhOTQ0VUxMLCAweDU4NTg3ZDU4ZmEyNWIwYTJVTEwsIDB4YzljOTAzYzkwNmNhOGZjZlVMTCwKKwkweDI5MjlhNDI5NTU4ZDUyN2NVTEwsIDB4MGEwYTI4MGE1MDIyMTQ1YVVMTCwgMHhiMWIxZmViMWUxNGY3ZjUwVUxMLAorCTB4YTBhMGJhYTA2OTFhNWRjOVVMTCwgMHg2YjZiYjE2YjdmZGFkNjE0VUxMLCAweDg1ODUyZTg1NWNhYjE3ZDlVTEwsCisJMHhiZGJkY2ViZDgxNzM2NzNjVUxMLCAweDVkNWQ2OTVkZDIzNGJhOGZVTEwsIDB4MTAxMDQwMTA4MDUwMjA5MFVMTCwKKwkweGY0ZjRmN2Y0ZjMwM2Y1MDdVTEwsIDB4Y2JjYjBiY2IxNmMwOGJkZFVMTCwgMHgzZTNlZjgzZWVkYzY3Y2QzVUxMLAorCTB4MDUwNTE0MDUyODExMGEyZFVMTCwgMHg2NzY3ODE2NzFmZTZjZTc4VUxMLCAweGU0ZTRiN2U0NzM1M2Q1OTdVTEwsCisJMHgyNzI3OWMyNzI1YmI0ZTAyVUxMLCAweDQxNDExOTQxMzI1ODgyNzNVTEwsIDB4OGI4YjE2OGIyYzlkMGJhN1VMTCwKKwkweGE3YTdhNmE3NTEwMTUzZjZVTEwsIDB4N2Q3ZGU5N2RjZjk0ZmFiMlVMTCwgMHg5NTk1NmU5NWRjZmIzNzQ5VUxMLAorCTB4ZDhkODQ3ZDg4ZTlmYWQ1NlVMTCwgMHhmYmZiY2JmYjhiMzBlYjcwVUxMLCAweGVlZWU5ZmVlMjM3MWMxY2RVTEwsCisJMHg3YzdjZWQ3Y2M3OTFmOGJiVUxMLCAweDY2NjY4NTY2MTdlM2NjNzFVTEwsIDB4ZGRkZDUzZGRhNjhlYTc3YlVMTCwKKwkweDE3MTc1YzE3Yjg0YjJlYWZVTEwsIDB4NDc0NzAxNDcwMjQ2OGU0NVVMTCwgMHg5ZTllNDI5ZTg0ZGMyMTFhVUxMLAorCTB4Y2FjYTBmY2ExZWM1ODlkNFVMTCwgMHgyZDJkYjQyZDc1OTk1YTU4VUxMLCAweGJmYmZjNmJmOTE3OTYzMmVVTEwsCisJMHgwNzA3MWMwNzM4MWIwZTNmVUxMLCAweGFkYWQ4ZWFkMDEyMzQ3YWNVTEwsIDB4NWE1YTc1NWFlYTJmYjRiMFVMTCwKKwkweDgzODMzNjgzNmNiNTFiZWZVTEwsIDB4MzMzM2NjMzM4NWZmNjZiNlVMTCwgMHg2MzYzOTE2MzNmZjJjNjVjVUxMLAorCTB4MDIwMjA4MDIxMDBhMDQxMlVMTCwgMHhhYWFhOTJhYTM5Mzg0OTkzVUxMLCAweDcxNzFkOTcxYWZhOGUyZGVVTEwsCisJMHhjOGM4MDdjODBlY2Y4ZGM2VUxMLCAweDE5MTk2NDE5Yzg3ZDMyZDFVTEwsIDB4NDk0OTM5NDk3MjcwOTIzYlVMTCwKKwkweGQ5ZDk0M2Q5ODY5YWFmNWZVTEwsIDB4ZjJmMmVmZjJjMzFkZjkzMVVMTCwgMHhlM2UzYWJlMzRiNDhkYmE4VUxMLAorCTB4NWI1YjcxNWJlMjJhYjZiOVVMTCwgMHg4ODg4MWE4ODM0OTIwZGJjVUxMLCAweDlhOWE1MjlhYTRjODI5M2VVTEwsCisJMHgyNjI2OTgyNjJkYmU0YzBiVUxMLCAweDMyMzJjODMyOGRmYTY0YmZVTEwsIDB4YjBiMGZhYjBlOTRhN2Q1OVVMTCwKKwkweGU5ZTk4M2U5MWI2YWNmZjJVTEwsIDB4MGYwZjNjMGY3ODMzMWU3N1VMTCwgMHhkNWQ1NzNkNWU2YTZiNzMzVUxMLAorCTB4ODA4MDNhODA3NGJhMWRmNFVMTCwgMHhiZWJlYzJiZTk5N2M2MTI3VUxMLCAweGNkY2QxM2NkMjZkZTg3ZWJVTEwsCisJMHgzNDM0ZDAzNGJkZTQ2ODg5VUxMLCAweDQ4NDgzZDQ4N2E3NTkwMzJVTEwsIDB4ZmZmZmRiZmZhYjI0ZTM1NFVMTCwKKwkweDdhN2FmNTdhZjc4ZmY0OGRVTEwsIDB4OTA5MDdhOTBmNGVhM2Q2NFVMTCwgMHg1ZjVmNjE1ZmMyM2ViZTlkVUxMLAorCTB4MjAyMDgwMjAxZGEwNDAzZFVMTCwgMHg2ODY4YmQ2ODY3ZDVkMDBmVUxMLCAweDFhMWE2ODFhZDA3MjM0Y2FVTEwsCisJMHhhZWFlODJhZTE5MmM0MWI3VUxMLCAweGI0YjRlYWI0Yzk1ZTc1N2RVTEwsIDB4NTQ1NDRkNTQ5YTE5YThjZVVMTCwKKwkweDkzOTM3NjkzZWNlNTNiN2ZVTEwsIDB4MjIyMjg4MjIwZGFhNDQyZlVMTCwgMHg2NDY0OGQ2NDA3ZTljODYzVUxMLAorCTB4ZjFmMWUzZjFkYjEyZmYyYVVMTCwgMHg3MzczZDE3M2JmYTJlNmNjVUxMLCAweDEyMTI0ODEyOTA1YTI0ODJVTEwsCisJMHg0MDQwMWQ0MDNhNWQ4MDdhVUxMLCAweDA4MDgyMDA4NDAyODEwNDhVTEwsIDB4YzNjMzJiYzM1NmU4OWI5NVVMTCwKKwkweGVjZWM5N2VjMzM3YmM1ZGZVTEwsIDB4ZGJkYjRiZGI5NjkwYWI0ZFVMTCwgMHhhMWExYmVhMTYxMWY1ZmMwVUxMLAorCTB4OGQ4ZDBlOGQxYzgzMDc5MVVMTCwgMHgzZDNkZjQzZGY1Yzk3YWM4VUxMLCAweDk3OTc2Njk3Y2NmMTMzNWJVTEwsCisJMHgwMDAwMDAwMDAwMDAwMDAwVUxMLCAweGNmY2YxYmNmMzZkNDgzZjlVTEwsIDB4MmIyYmFjMmI0NTg3NTY2ZVVMTCwKKwkweDc2NzZjNTc2OTdiM2VjZTFVTEwsIDB4ODI4MjMyODI2NGIwMTllNlVMTCwgMHhkNmQ2N2ZkNmZlYTliMTI4VUxMLAorCTB4MWIxYjZjMWJkODc3MzZjM1VMTCwgMHhiNWI1ZWViNWMxNWI3Nzc0VUxMLCAweGFmYWY4NmFmMTEyOTQzYmVVTEwsCisJMHg2YTZhYjU2YTc3ZGZkNDFkVUxMLCAweDUwNTA1ZDUwYmEwZGEwZWFVTEwsIDB4NDU0NTA5NDUxMjRjOGE1N1VMTCwKKwkweGYzZjNlYmYzY2IxOGZiMzhVTEwsIDB4MzAzMGMwMzA5ZGYwNjBhZFVMTCwgMHhlZmVmOWJlZjJiNzRjM2M0VUxMLAorCTB4M2YzZmZjM2ZlNWMzN2VkYVVMTCwgMHg1NTU1NDk1NTkyMWNhYWM3VUxMLCAweGEyYTJiMmEyNzkxMDU5ZGJVTEwsCisJMHhlYWVhOGZlYTAzNjVjOWU5VUxMLCAweDY1NjU4OTY1MGZlY2NhNmFVTEwsIDB4YmFiYWQyYmFiOTY4NjkwM1VMTCwKKwkweDJmMmZiYzJmNjU5MzVlNGFVTEwsIDB4YzBjMDI3YzA0ZWU3OWQ4ZVVMTCwgMHhkZWRlNWZkZWJlODFhMTYwVUxMLAorCTB4MWMxYzcwMWNlMDZjMzhmY1VMTCwgMHhmZGZkZDNmZGJiMmVlNzQ2VUxMLCAweDRkNGQyOTRkNTI2NDlhMWZVTEwsCisJMHg5MjkyNzI5MmU0ZTAzOTc2VUxMLCAweDc1NzVjOTc1OGZiY2VhZmFVTEwsIDB4MDYwNjE4MDYzMDFlMGMzNlVMTCwKKwkweDhhOGExMjhhMjQ5ODA5YWVVTEwsIDB4YjJiMmYyYjJmOTQwNzk0YlVMTCwgMHhlNmU2YmZlNjYzNTlkMTg1VUxMLAorCTB4MGUwZTM4MGU3MDM2MWM3ZVVMTCwgMHgxZjFmN2MxZmY4NjMzZWU3VUxMLCAweDYyNjI5NTYyMzdmN2M0NTVVTEwsCisJMHhkNGQ0NzdkNGVlYTNiNTNhVUxMLCAweGE4YTg5YWE4MjkzMjRkODFVTEwsIDB4OTY5NjYyOTZjNGY0MzE1MlVMTCwKKwkweGY5ZjljM2Y5OWIzYWVmNjJVTEwsIDB4YzVjNTMzYzU2NmY2OTdhM1VMTCwgMHgyNTI1OTQyNTM1YjE0YTEwVUxMLAorCTB4NTk1OTc5NTlmMjIwYjJhYlVMTCwgMHg4NDg0MmE4NDU0YWUxNWQwVUxMLCAweDcyNzJkNTcyYjdhN2U0YzVVTEwsCisJMHgzOTM5ZTQzOWQ1ZGQ3MmVjVUxMLCAweDRjNGMyZDRjNWE2MTk4MTZVTEwsIDB4NWU1ZTY1NWVjYTNiYmM5NFVMTCwKKwkweDc4NzhmZDc4ZTc4NWYwOWZVTEwsIDB4MzgzOGUwMzhkZGQ4NzBlNVVMTCwgMHg4YzhjMGE4YzE0ODYwNTk4VUxMLAorCTB4ZDFkMTYzZDFjNmIyYmYxN1VMTCwgMHhhNWE1YWVhNTQxMGI1N2U0VUxMLCAweGUyZTJhZmUyNDM0ZGQ5YTFVTEwsCisJMHg2MTYxOTk2MTJmZjhjMjRlVUxMLCAweGIzYjNmNmIzZjE0NTdiNDJVTEwsIDB4MjEyMTg0MjExNWE1NDIzNFVMTCwKKwkweDljOWM0YTljOTRkNjI1MDhVTEwsIDB4MWUxZTc4MWVmMDY2M2NlZVVMTCwgMHg0MzQzMTE0MzIyNTI4NjYxVUxMLAorCTB4YzdjNzNiYzc3NmZjOTNiMVVMTCwgMHhmY2ZjZDdmY2IzMmJlNTRmVUxMLCAweDA0MDQxMDA0MjAxNDA4MjRVTEwsCisJMHg1MTUxNTk1MWIyMDhhMmUzVUxMLCAweDk5OTk1ZTk5YmNjNzJmMjVVTEwsIDB4NmQ2ZGE5NmQ0ZmM0ZGEyMlVMTCwKKwkweDBkMGQzNDBkNjgzOTFhNjVVTEwsIDB4ZmFmYWNmZmE4MzM1ZTk3OVVMTCwgMHhkZmRmNWJkZmI2ODRhMzY5VUxMLAorCTB4N2U3ZWU1N2VkNzliZmNhOVVMTCwgMHgyNDI0OTAyNDNkYjQ0ODE5VUxMLCAweDNiM2JlYzNiYzVkNzc2ZmVVTEwsCisJMHhhYmFiOTZhYjMxM2Q0YjlhVUxMLCAweGNlY2UxZmNlM2VkMTgxZjBVTEwsIDB4MTExMTQ0MTE4ODU1MjI5OVVMTCwKKwkweDhmOGYwNjhmMGM4OTAzODNVTEwsIDB4NGU0ZTI1NGU0YTZiOWMwNFVMTCwgMHhiN2I3ZTZiN2QxNTE3MzY2VUxMLAorCTB4ZWJlYjhiZWIwYjYwY2JlMFVMTCwgMHgzYzNjZjAzY2ZkY2M3OGMxVUxMLCAweDgxODEzZTgxN2NiZjFmZmRVTEwsCisJMHg5NDk0NmE5NGQ0ZmUzNTQwVUxMLCAweGY3ZjdmYmY3ZWIwY2YzMWNVTEwsIDB4YjliOWRlYjlhMTY3NmYxOFVMTCwKKwkweDEzMTM0YzEzOTg1ZjI2OGJVTEwsIDB4MmMyY2IwMmM3ZDljNTg1MVVMTCwgMHhkM2QzNmJkM2Q2YjhiYjA1VUxMLAorCTB4ZTdlN2JiZTc2YjVjZDM4Y1VMTCwgMHg2ZTZlYTU2ZTU3Y2JkYzM5VUxMLCAweGM0YzQzN2M0NmVmMzk1YWFVTEwsCisJMHgwMzAzMGMwMzE4MGYwNjFiVUxMLCAweDU2NTY0NTU2OGExM2FjZGNVTEwsIDB4NDQ0NDBkNDQxYTQ5ODg1ZVVMTCwKKwkweDdmN2ZlMTdmZGY5ZWZlYTBVTEwsIDB4YTlhOTllYTkyMTM3NGY4OFVMTCwgMHgyYTJhYTgyYTRkODI1NDY3VUxMLAorCTB4YmJiYmQ2YmJiMTZkNmIwYVVMTCwgMHhjMWMxMjNjMTQ2ZTI5Zjg3VUxMLCAweDUzNTM1MTUzYTIwMmE2ZjFVTEwsCisJMHhkY2RjNTdkY2FlOGJhNTcyVUxMLCAweDBiMGIyYzBiNTgyNzE2NTNVTEwsIDB4OWQ5ZDRlOWQ5Y2QzMjcwMVVMTCwKKwkweDZjNmNhZDZjNDdjMWQ4MmJVTEwsIDB4MzEzMWM0MzE5NWY1NjJhNFVMTCwgMHg3NDc0Y2Q3NDg3YjllOGYzVUxMLAorCTB4ZjZmNmZmZjZlMzA5ZjExNVVMTCwgMHg0NjQ2MDU0NjBhNDM4YzRjVUxMLCAweGFjYWM4YWFjMDkyNjQ1YTVVTEwsCisJMHg4OTg5MWU4OTNjOTcwZmI1VUxMLCAweDE0MTQ1MDE0YTA0NDI4YjRVTEwsIDB4ZTFlMWEzZTE1YjQyZGZiYVVMTCwKKwkweDE2MTY1ODE2YjA0ZTJjYTZVTEwsIDB4M2EzYWU4M2FjZGQyNzRmN1VMTCwgMHg2OTY5Yjk2OTZmZDBkMjA2VUxMLAorCTB4MDkwOTI0MDk0ODJkMTI0MVVMTCwgMHg3MDcwZGQ3MGE3YWRlMGQ3VUxMLCAweGI2YjZlMmI2ZDk1NDcxNmZVTEwsCisJMHhkMGQwNjdkMGNlYjdiZDFlVUxMLCAweGVkZWQ5M2VkM2I3ZWM3ZDZVTEwsIDB4Y2NjYzE3Y2MyZWRiODVlMlVMTCwKKwkweDQyNDIxNTQyMmE1Nzg0NjhVTEwsIDB4OTg5ODVhOThiNGMyMmQyY1VMTCwgMHhhNGE0YWFhNDQ5MGU1NWVkVUxMLAorCTB4MjgyOGEwMjg1ZDg4NTA3NVVMTCwgMHg1YzVjNmQ1Y2RhMzFiODg2VUxMLCAweGY4ZjhjN2Y4OTMzZmVkNmJVTEwsCisJMHg4Njg2MjI4NjQ0YTQxMWMyVUxMLAorfTsKKworc3RhdGljIGNvbnN0IHU2NCBDMVsyNTZdID0geworCTB4ZDgxODE4NjAxOGMwNzgzMFVMTCwgMHgyNjIzMjM4YzIzMDVhZjQ2VUxMLCAweGI4YzZjNjNmYzY3ZWY5OTFVTEwsCisJMHhmYmU4ZTg4N2U4MTM2ZmNkVUxMLCAweGNiODc4NzI2ODc0Y2ExMTNVTEwsIDB4MTFiOGI4ZGFiOGE5NjI2ZFVMTCwKKwkweDA5MDEwMTA0MDEwODA1MDJVTEwsIDB4MGQ0ZjRmMjE0ZjQyNmU5ZVVMTCwgMHg5YjM2MzZkODM2YWRlZTZjVUxMLAorCTB4ZmZhNmE2YTJhNjU5MDQ1MVVMTCwgMHgwY2QyZDI2ZmQyZGViZGI5VUxMLCAweDBlZjVmNWYzZjVmYjA2ZjdVTEwsCisJMHg5Njc5NzlmOTc5ZWY4MGYyVUxMLCAweDMwNmY2ZmExNmY1ZmNlZGVVTEwsIDB4NmQ5MTkxN2U5MWZjZWYzZlVMTCwKKwkweGY4NTI1MjU1NTJhYTA3YTRVTEwsIDB4NDc2MDYwOWQ2MDI3ZmRjMFVMTCwgMHgzNWJjYmNjYWJjODk3NjY1VUxMLAorCTB4Mzc5YjliNTY5YmFjY2QyYlVMTCwgMHg4YThlOGUwMjhlMDQ4YzAxVUxMLCAweGQyYTNhM2I2YTM3MTE1NWJVTEwsCisJMHg2YzBjMGMzMDBjNjAzYzE4VUxMLCAweDg0N2I3YmYxN2JmZjhhZjZVTEwsIDB4ODAzNTM1ZDQzNWI1ZTE2YVVMTCwKKwkweGY1MWQxZDc0MWRlODY5M2FVTEwsIDB4YjNlMGUwYTdlMDUzNDdkZFVMTCwgMHgyMWQ3ZDc3YmQ3ZjZhY2IzVUxMLAorCTB4OWNjMmMyMmZjMjVlZWQ5OVVMTCwgMHg0MzJlMmViODJlNmQ5NjVjVUxMLCAweDI5NGI0YjMxNGI2MjdhOTZVTEwsCisJMHg1ZGZlZmVkZmZlYTMyMWUxVUxMLCAweGQ1NTc1NzQxNTc4MjE2YWVVTEwsIDB4YmQxNTE1NTQxNWE4NDEyYVVMTCwKKwkweGU4Nzc3N2MxNzc5ZmI2ZWVVTEwsIDB4OTIzNzM3ZGMzN2E1ZWI2ZVVMTCwgMHg5ZWU1ZTViM2U1N2I1NmQ3VUxMLAorCTB4MTM5ZjlmNDY5ZjhjZDkyM1VMTCwgMHgyM2YwZjBlN2YwZDMxN2ZkVUxMLCAweDIwNGE0YTM1NGE2YTdmOTRVTEwsCisJMHg0NGRhZGE0ZmRhOWU5NWE5VUxMLCAweGEyNTg1ODdkNThmYTI1YjBVTEwsIDB4Y2ZjOWM5MDNjOTA2Y2E4ZlVMTCwKKwkweDdjMjkyOWE0Mjk1NThkNTJVTEwsIDB4NWEwYTBhMjgwYTUwMjIxNFVMTCwgMHg1MGIxYjFmZWIxZTE0ZjdmVUxMLAorCTB4YzlhMGEwYmFhMDY5MWE1ZFVMTCwgMHgxNDZiNmJiMTZiN2ZkYWQ2VUxMLCAweGQ5ODU4NTJlODU1Y2FiMTdVTEwsCisJMHgzY2JkYmRjZWJkODE3MzY3VUxMLCAweDhmNWQ1ZDY5NWRkMjM0YmFVTEwsIDB4OTAxMDEwNDAxMDgwNTAyMFVMTCwKKwkweDA3ZjRmNGY3ZjRmMzAzZjVVTEwsIDB4ZGRjYmNiMGJjYjE2YzA4YlVMTCwgMHhkMzNlM2VmODNlZWRjNjdjVUxMLAorCTB4MmQwNTA1MTQwNTI4MTEwYVVMTCwgMHg3ODY3Njc4MTY3MWZlNmNlVUxMLCAweDk3ZTRlNGI3ZTQ3MzUzZDVVTEwsCisJMHgwMjI3Mjc5YzI3MjViYjRlVUxMLCAweDczNDE0MTE5NDEzMjU4ODJVTEwsIDB4YTc4YjhiMTY4YjJjOWQwYlVMTCwKKwkweGY2YTdhN2E2YTc1MTAxNTNVTEwsIDB4YjI3ZDdkZTk3ZGNmOTRmYVVMTCwgMHg0OTk1OTU2ZTk1ZGNmYjM3VUxMLAorCTB4NTZkOGQ4NDdkODhlOWZhZFVMTCwgMHg3MGZiZmJjYmZiOGIzMGViVUxMLCAweGNkZWVlZTlmZWUyMzcxYzFVTEwsCisJMHhiYjdjN2NlZDdjYzc5MWY4VUxMLCAweDcxNjY2Njg1NjYxN2UzY2NVTEwsIDB4N2JkZGRkNTNkZGE2OGVhN1VMTCwKKwkweGFmMTcxNzVjMTdiODRiMmVVTEwsIDB4NDU0NzQ3MDE0NzAyNDY4ZVVMTCwgMHgxYTllOWU0MjllODRkYzIxVUxMLAorCTB4ZDRjYWNhMGZjYTFlYzU4OVVMTCwgMHg1ODJkMmRiNDJkNzU5OTVhVUxMLCAweDJlYmZiZmM2YmY5MTc5NjNVTEwsCisJMHgzZjA3MDcxYzA3MzgxYjBlVUxMLCAweGFjYWRhZDhlYWQwMTIzNDdVTEwsIDB4YjA1YTVhNzU1YWVhMmZiNFVMTCwKKwkweGVmODM4MzM2ODM2Y2I1MWJVTEwsIDB4YjYzMzMzY2MzMzg1ZmY2NlVMTCwgMHg1YzYzNjM5MTYzM2ZmMmM2VUxMLAorCTB4MTIwMjAyMDgwMjEwMGEwNFVMTCwgMHg5M2FhYWE5MmFhMzkzODQ5VUxMLCAweGRlNzE3MWQ5NzFhZmE4ZTJVTEwsCisJMHhjNmM4YzgwN2M4MGVjZjhkVUxMLCAweGQxMTkxOTY0MTljODdkMzJVTEwsIDB4M2I0OTQ5Mzk0OTcyNzA5MlVMTCwKKwkweDVmZDlkOTQzZDk4NjlhYWZVTEwsIDB4MzFmMmYyZWZmMmMzMWRmOVVMTCwgMHhhOGUzZTNhYmUzNGI0OGRiVUxMLAorCTB4Yjk1YjViNzE1YmUyMmFiNlVMTCwgMHhiYzg4ODgxYTg4MzQ5MjBkVUxMLCAweDNlOWE5YTUyOWFhNGM4MjlVTEwsCisJMHgwYjI2MjY5ODI2MmRiZTRjVUxMLCAweGJmMzIzMmM4MzI4ZGZhNjRVTEwsIDB4NTliMGIwZmFiMGU5NGE3ZFVMTCwKKwkweGYyZTllOTgzZTkxYjZhY2ZVTEwsIDB4NzcwZjBmM2MwZjc4MzMxZVVMTCwgMHgzM2Q1ZDU3M2Q1ZTZhNmI3VUxMLAorCTB4ZjQ4MDgwM2E4MDc0YmExZFVMTCwgMHgyN2JlYmVjMmJlOTk3YzYxVUxMLCAweGViY2RjZDEzY2QyNmRlODdVTEwsCisJMHg4OTM0MzRkMDM0YmRlNDY4VUxMLCAweDMyNDg0ODNkNDg3YTc1OTBVTEwsIDB4NTRmZmZmZGJmZmFiMjRlM1VMTCwKKwkweDhkN2E3YWY1N2FmNzhmZjRVTEwsIDB4NjQ5MDkwN2E5MGY0ZWEzZFVMTCwgMHg5ZDVmNWY2MTVmYzIzZWJlVUxMLAorCTB4M2QyMDIwODAyMDFkYTA0MFVMTCwgMHgwZjY4NjhiZDY4NjdkNWQwVUxMLCAweGNhMWExYTY4MWFkMDcyMzRVTEwsCisJMHhiN2FlYWU4MmFlMTkyYzQxVUxMLCAweDdkYjRiNGVhYjRjOTVlNzVVTEwsIDB4Y2U1NDU0NGQ1NDlhMTlhOFVMTCwKKwkweDdmOTM5Mzc2OTNlY2U1M2JVTEwsIDB4MmYyMjIyODgyMjBkYWE0NFVMTCwgMHg2MzY0NjQ4ZDY0MDdlOWM4VUxMLAorCTB4MmFmMWYxZTNmMWRiMTJmZlVMTCwgMHhjYzczNzNkMTczYmZhMmU2VUxMLCAweDgyMTIxMjQ4MTI5MDVhMjRVTEwsCisJMHg3YTQwNDAxZDQwM2E1ZDgwVUxMLCAweDQ4MDgwODIwMDg0MDI4MTBVTEwsIDB4OTVjM2MzMmJjMzU2ZTg5YlVMTCwKKwkweGRmZWNlYzk3ZWMzMzdiYzVVTEwsIDB4NGRkYmRiNGJkYjk2OTBhYlVMTCwgMHhjMGExYTFiZWExNjExZjVmVUxMLAorCTB4OTE4ZDhkMGU4ZDFjODMwN1VMTCwgMHhjODNkM2RmNDNkZjVjOTdhVUxMLCAweDViOTc5NzY2OTdjY2YxMzNVTEwsCisJMHgwMDAwMDAwMDAwMDAwMDAwVUxMLCAweGY5Y2ZjZjFiY2YzNmQ0ODNVTEwsIDB4NmUyYjJiYWMyYjQ1ODc1NlVMTCwKKwkweGUxNzY3NmM1NzY5N2IzZWNVTEwsIDB4ZTY4MjgyMzI4MjY0YjAxOVVMTCwgMHgyOGQ2ZDY3ZmQ2ZmVhOWIxVUxMLAorCTB4YzMxYjFiNmMxYmQ4NzczNlVMTCwgMHg3NGI1YjVlZWI1YzE1Yjc3VUxMLCAweGJlYWZhZjg2YWYxMTI5NDNVTEwsCisJMHgxZDZhNmFiNTZhNzdkZmQ0VUxMLCAweGVhNTA1MDVkNTBiYTBkYTBVTEwsIDB4NTc0NTQ1MDk0NTEyNGM4YVVMTCwKKwkweDM4ZjNmM2ViZjNjYjE4ZmJVTEwsIDB4YWQzMDMwYzAzMDlkZjA2MFVMTCwgMHhjNGVmZWY5YmVmMmI3NGMzVUxMLAorCTB4ZGEzZjNmZmMzZmU1YzM3ZVVMTCwgMHhjNzU1NTU0OTU1OTIxY2FhVUxMLCAweGRiYTJhMmIyYTI3OTEwNTlVTEwsCisJMHhlOWVhZWE4ZmVhMDM2NWM5VUxMLCAweDZhNjU2NTg5NjUwZmVjY2FVTEwsIDB4MDNiYWJhZDJiYWI5Njg2OVVMTCwKKwkweDRhMmYyZmJjMmY2NTkzNWVVTEwsIDB4OGVjMGMwMjdjMDRlZTc5ZFVMTCwgMHg2MGRlZGU1ZmRlYmU4MWExVUxMLAorCTB4ZmMxYzFjNzAxY2UwNmMzOFVMTCwgMHg0NmZkZmRkM2ZkYmIyZWU3VUxMLCAweDFmNGQ0ZDI5NGQ1MjY0OWFVTEwsCisJMHg3NjkyOTI3MjkyZTRlMDM5VUxMLCAweGZhNzU3NWM5NzU4ZmJjZWFVTEwsIDB4MzYwNjA2MTgwNjMwMWUwY1VMTCwKKwkweGFlOGE4YTEyOGEyNDk4MDlVTEwsIDB4NGJiMmIyZjJiMmY5NDA3OVVMTCwgMHg4NWU2ZTZiZmU2NjM1OWQxVUxMLAorCTB4N2UwZTBlMzgwZTcwMzYxY1VMTCwgMHhlNzFmMWY3YzFmZjg2MzNlVUxMLCAweDU1NjI2Mjk1NjIzN2Y3YzRVTEwsCisJMHgzYWQ0ZDQ3N2Q0ZWVhM2I1VUxMLCAweDgxYThhODlhYTgyOTMyNGRVTEwsIDB4NTI5Njk2NjI5NmM0ZjQzMVVMTCwKKwkweDYyZjlmOWMzZjk5YjNhZWZVTEwsIDB4YTNjNWM1MzNjNTY2ZjY5N1VMTCwgMHgxMDI1MjU5NDI1MzViMTRhVUxMLAorCTB4YWI1OTU5Nzk1OWYyMjBiMlVMTCwgMHhkMDg0ODQyYTg0NTRhZTE1VUxMLCAweGM1NzI3MmQ1NzJiN2E3ZTRVTEwsCisJMHhlYzM5MzllNDM5ZDVkZDcyVUxMLCAweDE2NGM0YzJkNGM1YTYxOThVTEwsIDB4OTQ1ZTVlNjU1ZWNhM2JiY1VMTCwKKwkweDlmNzg3OGZkNzhlNzg1ZjBVTEwsIDB4ZTUzODM4ZTAzOGRkZDg3MFVMTCwgMHg5ODhjOGMwYThjMTQ4NjA1VUxMLAorCTB4MTdkMWQxNjNkMWM2YjJiZlVMTCwgMHhlNGE1YTVhZWE1NDEwYjU3VUxMLCAweGExZTJlMmFmZTI0MzRkZDlVTEwsCisJMHg0ZTYxNjE5OTYxMmZmOGMyVUxMLCAweDQyYjNiM2Y2YjNmMTQ1N2JVTEwsIDB4MzQyMTIxODQyMTE1YTU0MlVMTCwKKwkweDA4OWM5YzRhOWM5NGQ2MjVVTEwsIDB4ZWUxZTFlNzgxZWYwNjYzY1VMTCwgMHg2MTQzNDMxMTQzMjI1Mjg2VUxMLAorCTB4YjFjN2M3M2JjNzc2ZmM5M1VMTCwgMHg0ZmZjZmNkN2ZjYjMyYmU1VUxMLCAweDI0MDQwNDEwMDQyMDE0MDhVTEwsCisJMHhlMzUxNTE1OTUxYjIwOGEyVUxMLCAweDI1OTk5OTVlOTliY2M3MmZVTEwsIDB4MjI2ZDZkYTk2ZDRmYzRkYVVMTCwKKwkweDY1MGQwZDM0MGQ2ODM5MWFVTEwsIDB4NzlmYWZhY2ZmYTgzMzVlOVVMTCwgMHg2OWRmZGY1YmRmYjY4NGEzVUxMLAorCTB4YTk3ZTdlZTU3ZWQ3OWJmY1VMTCwgMHgxOTI0MjQ5MDI0M2RiNDQ4VUxMLCAweGZlM2IzYmVjM2JjNWQ3NzZVTEwsCisJMHg5YWFiYWI5NmFiMzEzZDRiVUxMLCAweGYwY2VjZTFmY2UzZWQxODFVTEwsIDB4OTkxMTExNDQxMTg4NTUyMlVMTCwKKwkweDgzOGY4ZjA2OGYwYzg5MDNVTEwsIDB4MDQ0ZTRlMjU0ZTRhNmI5Y1VMTCwgMHg2NmI3YjdlNmI3ZDE1MTczVUxMLAorCTB4ZTBlYmViOGJlYjBiNjBjYlVMTCwgMHhjMTNjM2NmMDNjZmRjYzc4VUxMLCAweGZkODE4MTNlODE3Y2JmMWZVTEwsCisJMHg0MDk0OTQ2YTk0ZDRmZTM1VUxMLCAweDFjZjdmN2ZiZjdlYjBjZjNVTEwsIDB4MThiOWI5ZGViOWExNjc2ZlVMTCwKKwkweDhiMTMxMzRjMTM5ODVmMjZVTEwsIDB4NTEyYzJjYjAyYzdkOWM1OFVMTCwgMHgwNWQzZDM2YmQzZDZiOGJiVUxMLAorCTB4OGNlN2U3YmJlNzZiNWNkM1VMTCwgMHgzOTZlNmVhNTZlNTdjYmRjVUxMLCAweGFhYzRjNDM3YzQ2ZWYzOTVVTEwsCisJMHgxYjAzMDMwYzAzMTgwZjA2VUxMLCAweGRjNTY1NjQ1NTY4YTEzYWNVTEwsIDB4NWU0NDQ0MGQ0NDFhNDk4OFVMTCwKKwkweGEwN2Y3ZmUxN2ZkZjllZmVVTEwsIDB4ODhhOWE5OWVhOTIxMzc0ZlVMTCwgMHg2NzJhMmFhODJhNGQ4MjU0VUxMLAorCTB4MGFiYmJiZDZiYmIxNmQ2YlVMTCwgMHg4N2MxYzEyM2MxNDZlMjlmVUxMLCAweGYxNTM1MzUxNTNhMjAyYTZVTEwsCisJMHg3MmRjZGM1N2RjYWU4YmE1VUxMLCAweDUzMGIwYjJjMGI1ODI3MTZVTEwsIDB4MDE5ZDlkNGU5ZDljZDMyN1VMTCwKKwkweDJiNmM2Y2FkNmM0N2MxZDhVTEwsIDB4YTQzMTMxYzQzMTk1ZjU2MlVMTCwgMHhmMzc0NzRjZDc0ODdiOWU4VUxMLAorCTB4MTVmNmY2ZmZmNmUzMDlmMVVMTCwgMHg0YzQ2NDYwNTQ2MGE0MzhjVUxMLCAweGE1YWNhYzhhYWMwOTI2NDVVTEwsCisJMHhiNTg5ODkxZTg5M2M5NzBmVUxMLCAweGI0MTQxNDUwMTRhMDQ0MjhVTEwsIDB4YmFlMWUxYTNlMTViNDJkZlVMTCwKKwkweGE2MTYxNjU4MTZiMDRlMmNVTEwsIDB4ZjczYTNhZTgzYWNkZDI3NFVMTCwgMHgwNjY5NjliOTY5NmZkMGQyVUxMLAorCTB4NDEwOTA5MjQwOTQ4MmQxMlVMTCwgMHhkNzcwNzBkZDcwYTdhZGUwVUxMLCAweDZmYjZiNmUyYjZkOTU0NzFVTEwsCisJMHgxZWQwZDA2N2QwY2ViN2JkVUxMLCAweGQ2ZWRlZDkzZWQzYjdlYzdVTEwsIDB4ZTJjY2NjMTdjYzJlZGI4NVVMTCwKKwkweDY4NDI0MjE1NDIyYTU3ODRVTEwsIDB4MmM5ODk4NWE5OGI0YzIyZFVMTCwgMHhlZGE0YTRhYWE0NDkwZTU1VUxMLAorCTB4NzUyODI4YTAyODVkODg1MFVMTCwgMHg4NjVjNWM2ZDVjZGEzMWI4VUxMLCAweDZiZjhmOGM3Zjg5MzNmZWRVTEwsCisJMHhjMjg2ODYyMjg2NDRhNDExVUxMLAorfTsKKworc3RhdGljIGNvbnN0IHU2NCBDMlsyNTZdID0geworCTB4MzBkODE4MTg2MDE4YzA3OFVMTCwgMHg0NjI2MjMyMzhjMjMwNWFmVUxMLCAweDkxYjhjNmM2M2ZjNjdlZjlVTEwsCisJMHhjZGZiZThlODg3ZTgxMzZmVUxMLCAweDEzY2I4Nzg3MjY4NzRjYTFVTEwsIDB4NmQxMWI4YjhkYWI4YTk2MlVMTCwKKwkweDAyMDkwMTAxMDQwMTA4MDVVTEwsIDB4OWUwZDRmNGYyMTRmNDI2ZVVMTCwgMHg2YzliMzYzNmQ4MzZhZGVlVUxMLAorCTB4NTFmZmE2YTZhMmE2NTkwNFVMTCwgMHhiOTBjZDJkMjZmZDJkZWJkVUxMLCAweGY3MGVmNWY1ZjNmNWZiMDZVTEwsCisJMHhmMjk2Nzk3OWY5NzllZjgwVUxMLCAweGRlMzA2ZjZmYTE2ZjVmY2VVTEwsIDB4M2Y2ZDkxOTE3ZTkxZmNlZlVMTCwKKwkweGE0Zjg1MjUyNTU1MmFhMDdVTEwsIDB4YzA0NzYwNjA5ZDYwMjdmZFVMTCwgMHg2NTM1YmNiY2NhYmM4OTc2VUxMLAorCTB4MmIzNzliOWI1NjliYWNjZFVMTCwgMHgwMThhOGU4ZTAyOGUwNDhjVUxMLCAweDViZDJhM2EzYjZhMzcxMTVVTEwsCisJMHgxODZjMGMwYzMwMGM2MDNjVUxMLCAweGY2ODQ3YjdiZjE3YmZmOGFVTEwsIDB4NmE4MDM1MzVkNDM1YjVlMVVMTCwKKwkweDNhZjUxZDFkNzQxZGU4NjlVTEwsIDB4ZGRiM2UwZTBhN2UwNTM0N1VMTCwgMHhiMzIxZDdkNzdiZDdmNmFjVUxMLAorCTB4OTk5Y2MyYzIyZmMyNWVlZFVMTCwgMHg1YzQzMmUyZWI4MmU2ZDk2VUxMLCAweDk2Mjk0YjRiMzE0YjYyN2FVTEwsCisJMHhlMTVkZmVmZWRmZmVhMzIxVUxMLCAweGFlZDU1NzU3NDE1NzgyMTZVTEwsIDB4MmFiZDE1MTU1NDE1YTg0MVVMTCwKKwkweGVlZTg3Nzc3YzE3NzlmYjZVTEwsIDB4NmU5MjM3MzdkYzM3YTVlYlVMTCwgMHhkNzllZTVlNWIzZTU3YjU2VUxMLAorCTB4MjMxMzlmOWY0NjlmOGNkOVVMTCwgMHhmZDIzZjBmMGU3ZjBkMzE3VUxMLCAweDk0MjA0YTRhMzU0YTZhN2ZVTEwsCisJMHhhOTQ0ZGFkYTRmZGE5ZTk1VUxMLCAweGIwYTI1ODU4N2Q1OGZhMjVVTEwsIDB4OGZjZmM5YzkwM2M5MDZjYVVMTCwKKwkweDUyN2MyOTI5YTQyOTU1OGRVTEwsIDB4MTQ1YTBhMGEyODBhNTAyMlVMTCwgMHg3ZjUwYjFiMWZlYjFlMTRmVUxMLAorCTB4NWRjOWEwYTBiYWEwNjkxYVVMTCwgMHhkNjE0NmI2YmIxNmI3ZmRhVUxMLCAweDE3ZDk4NTg1MmU4NTVjYWJVTEwsCisJMHg2NzNjYmRiZGNlYmQ4MTczVUxMLCAweGJhOGY1ZDVkNjk1ZGQyMzRVTEwsIDB4MjA5MDEwMTA0MDEwODA1MFVMTCwKKwkweGY1MDdmNGY0ZjdmNGYzMDNVTEwsIDB4OGJkZGNiY2IwYmNiMTZjMFVMTCwgMHg3Y2QzM2UzZWY4M2VlZGM2VUxMLAorCTB4MGEyZDA1MDUxNDA1MjgxMVVMTCwgMHhjZTc4Njc2NzgxNjcxZmU2VUxMLCAweGQ1OTdlNGU0YjdlNDczNTNVTEwsCisJMHg0ZTAyMjcyNzljMjcyNWJiVUxMLCAweDgyNzM0MTQxMTk0MTMyNThVTEwsIDB4MGJhNzhiOGIxNjhiMmM5ZFVMTCwKKwkweDUzZjZhN2E3YTZhNzUxMDFVTEwsIDB4ZmFiMjdkN2RlOTdkY2Y5NFVMTCwgMHgzNzQ5OTU5NTZlOTVkY2ZiVUxMLAorCTB4YWQ1NmQ4ZDg0N2Q4OGU5ZlVMTCwgMHhlYjcwZmJmYmNiZmI4YjMwVUxMLCAweGMxY2RlZWVlOWZlZTIzNzFVTEwsCisJMHhmOGJiN2M3Y2VkN2NjNzkxVUxMLCAweGNjNzE2NjY2ODU2NjE3ZTNVTEwsIDB4YTc3YmRkZGQ1M2RkYTY4ZVVMTCwKKwkweDJlYWYxNzE3NWMxN2I4NGJVTEwsIDB4OGU0NTQ3NDcwMTQ3MDI0NlVMTCwgMHgyMTFhOWU5ZTQyOWU4NGRjVUxMLAorCTB4ODlkNGNhY2EwZmNhMWVjNVVMTCwgMHg1YTU4MmQyZGI0MmQ3NTk5VUxMLCAweDYzMmViZmJmYzZiZjkxNzlVTEwsCisJMHgwZTNmMDcwNzFjMDczODFiVUxMLCAweDQ3YWNhZGFkOGVhZDAxMjNVTEwsIDB4YjRiMDVhNWE3NTVhZWEyZlVMTCwKKwkweDFiZWY4MzgzMzY4MzZjYjVVTEwsIDB4NjZiNjMzMzNjYzMzODVmZlVMTCwgMHhjNjVjNjM2MzkxNjMzZmYyVUxMLAorCTB4MDQxMjAyMDIwODAyMTAwYVVMTCwgMHg0OTkzYWFhYTkyYWEzOTM4VUxMLCAweGUyZGU3MTcxZDk3MWFmYThVTEwsCisJMHg4ZGM2YzhjODA3YzgwZWNmVUxMLCAweDMyZDExOTE5NjQxOWM4N2RVTEwsIDB4OTIzYjQ5NDkzOTQ5NzI3MFVMTCwKKwkweGFmNWZkOWQ5NDNkOTg2OWFVTEwsIDB4ZjkzMWYyZjJlZmYyYzMxZFVMTCwgMHhkYmE4ZTNlM2FiZTM0YjQ4VUxMLAorCTB4YjZiOTViNWI3MTViZTIyYVVMTCwgMHgwZGJjODg4ODFhODgzNDkyVUxMLCAweDI5M2U5YTlhNTI5YWE0YzhVTEwsCisJMHg0YzBiMjYyNjk4MjYyZGJlVUxMLCAweDY0YmYzMjMyYzgzMjhkZmFVTEwsIDB4N2Q1OWIwYjBmYWIwZTk0YVVMTCwKKwkweGNmZjJlOWU5ODNlOTFiNmFVTEwsIDB4MWU3NzBmMGYzYzBmNzgzM1VMTCwgMHhiNzMzZDVkNTczZDVlNmE2VUxMLAorCTB4MWRmNDgwODAzYTgwNzRiYVVMTCwgMHg2MTI3YmViZWMyYmU5OTdjVUxMLCAweDg3ZWJjZGNkMTNjZDI2ZGVVTEwsCisJMHg2ODg5MzQzNGQwMzRiZGU0VUxMLCAweDkwMzI0ODQ4M2Q0ODdhNzVVTEwsIDB4ZTM1NGZmZmZkYmZmYWIyNFVMTCwKKwkweGY0OGQ3YTdhZjU3YWY3OGZVTEwsIDB4M2Q2NDkwOTA3YTkwZjRlYVVMTCwgMHhiZTlkNWY1ZjYxNWZjMjNlVUxMLAorCTB4NDAzZDIwMjA4MDIwMWRhMFVMTCwgMHhkMDBmNjg2OGJkNjg2N2Q1VUxMLCAweDM0Y2ExYTFhNjgxYWQwNzJVTEwsCisJMHg0MWI3YWVhZTgyYWUxOTJjVUxMLCAweDc1N2RiNGI0ZWFiNGM5NWVVTEwsIDB4YThjZTU0NTQ0ZDU0OWExOVVMTCwKKwkweDNiN2Y5MzkzNzY5M2VjZTVVTEwsIDB4NDQyZjIyMjI4ODIyMGRhYVVMTCwgMHhjODYzNjQ2NDhkNjQwN2U5VUxMLAorCTB4ZmYyYWYxZjFlM2YxZGIxMlVMTCwgMHhlNmNjNzM3M2QxNzNiZmEyVUxMLCAweDI0ODIxMjEyNDgxMjkwNWFVTEwsCisJMHg4MDdhNDA0MDFkNDAzYTVkVUxMLCAweDEwNDgwODA4MjAwODQwMjhVTEwsIDB4OWI5NWMzYzMyYmMzNTZlOFVMTCwKKwkweGM1ZGZlY2VjOTdlYzMzN2JVTEwsIDB4YWI0ZGRiZGI0YmRiOTY5MFVMTCwgMHg1ZmMwYTFhMWJlYTE2MTFmVUxMLAorCTB4MDc5MThkOGQwZThkMWM4M1VMTCwgMHg3YWM4M2QzZGY0M2RmNWM5VUxMLCAweDMzNWI5Nzk3NjY5N2NjZjFVTEwsCisJMHgwMDAwMDAwMDAwMDAwMDAwVUxMLCAweDgzZjljZmNmMWJjZjM2ZDRVTEwsIDB4NTY2ZTJiMmJhYzJiNDU4N1VMTCwKKwkweGVjZTE3Njc2YzU3Njk3YjNVTEwsIDB4MTllNjgyODIzMjgyNjRiMFVMTCwgMHhiMTI4ZDZkNjdmZDZmZWE5VUxMLAorCTB4MzZjMzFiMWI2YzFiZDg3N1VMTCwgMHg3Nzc0YjViNWVlYjVjMTViVUxMLCAweDQzYmVhZmFmODZhZjExMjlVTEwsCisJMHhkNDFkNmE2YWI1NmE3N2RmVUxMLCAweGEwZWE1MDUwNWQ1MGJhMGRVTEwsIDB4OGE1NzQ1NDUwOTQ1MTI0Y1VMTCwKKwkweGZiMzhmM2YzZWJmM2NiMThVTEwsIDB4NjBhZDMwMzBjMDMwOWRmMFVMTCwgMHhjM2M0ZWZlZjliZWYyYjc0VUxMLAorCTB4N2VkYTNmM2ZmYzNmZTVjM1VMTCwgMHhhYWM3NTU1NTQ5NTU5MjFjVUxMLCAweDU5ZGJhMmEyYjJhMjc5MTBVTEwsCisJMHhjOWU5ZWFlYThmZWEwMzY1VUxMLCAweGNhNmE2NTY1ODk2NTBmZWNVTEwsIDB4NjkwM2JhYmFkMmJhYjk2OFVMTCwKKwkweDVlNGEyZjJmYmMyZjY1OTNVTEwsIDB4OWQ4ZWMwYzAyN2MwNGVlN1VMTCwgMHhhMTYwZGVkZTVmZGViZTgxVUxMLAorCTB4MzhmYzFjMWM3MDFjZTA2Y1VMTCwgMHhlNzQ2ZmRmZGQzZmRiYjJlVUxMLCAweDlhMWY0ZDRkMjk0ZDUyNjRVTEwsCisJMHgzOTc2OTI5MjcyOTJlNGUwVUxMLCAweGVhZmE3NTc1Yzk3NThmYmNVTEwsIDB4MGMzNjA2MDYxODA2MzAxZVVMTCwKKwkweDA5YWU4YThhMTI4YTI0OThVTEwsIDB4Nzk0YmIyYjJmMmIyZjk0MFVMTCwgMHhkMTg1ZTZlNmJmZTY2MzU5VUxMLAorCTB4MWM3ZTBlMGUzODBlNzAzNlVMTCwgMHgzZWU3MWYxZjdjMWZmODYzVUxMLCAweGM0NTU2MjYyOTU2MjM3ZjdVTEwsCisJMHhiNTNhZDRkNDc3ZDRlZWEzVUxMLCAweDRkODFhOGE4OWFhODI5MzJVTEwsIDB4MzE1Mjk2OTY2Mjk2YzRmNFVMTCwKKwkweGVmNjJmOWY5YzNmOTliM2FVTEwsIDB4OTdhM2M1YzUzM2M1NjZmNlVMTCwgMHg0YTEwMjUyNTk0MjUzNWIxVUxMLAorCTB4YjJhYjU5NTk3OTU5ZjIyMFVMTCwgMHgxNWQwODQ4NDJhODQ1NGFlVUxMLCAweGU0YzU3MjcyZDU3MmI3YTdVTEwsCisJMHg3MmVjMzkzOWU0MzlkNWRkVUxMLCAweDk4MTY0YzRjMmQ0YzVhNjFVTEwsIDB4YmM5NDVlNWU2NTVlY2EzYlVMTCwKKwkweGYwOWY3ODc4ZmQ3OGU3ODVVTEwsIDB4NzBlNTM4MzhlMDM4ZGRkOFVMTCwgMHgwNTk4OGM4YzBhOGMxNDg2VUxMLAorCTB4YmYxN2QxZDE2M2QxYzZiMlVMTCwgMHg1N2U0YTVhNWFlYTU0MTBiVUxMLCAweGQ5YTFlMmUyYWZlMjQzNGRVTEwsCisJMHhjMjRlNjE2MTk5NjEyZmY4VUxMLCAweDdiNDJiM2IzZjZiM2YxNDVVTEwsIDB4NDIzNDIxMjE4NDIxMTVhNVVMTCwKKwkweDI1MDg5YzljNGE5Yzk0ZDZVTEwsIDB4M2NlZTFlMWU3ODFlZjA2NlVMTCwgMHg4NjYxNDM0MzExNDMyMjUyVUxMLAorCTB4OTNiMWM3YzczYmM3NzZmY1VMTCwgMHhlNTRmZmNmY2Q3ZmNiMzJiVUxMLCAweDA4MjQwNDA0MTAwNDIwMTRVTEwsCisJMHhhMmUzNTE1MTU5NTFiMjA4VUxMLCAweDJmMjU5OTk5NWU5OWJjYzdVTEwsIDB4ZGEyMjZkNmRhOTZkNGZjNFVMTCwKKwkweDFhNjUwZDBkMzQwZDY4MzlVTEwsIDB4ZTk3OWZhZmFjZmZhODMzNVVMTCwgMHhhMzY5ZGZkZjViZGZiNjg0VUxMLAorCTB4ZmNhOTdlN2VlNTdlZDc5YlVMTCwgMHg0ODE5MjQyNDkwMjQzZGI0VUxMLCAweDc2ZmUzYjNiZWMzYmM1ZDdVTEwsCisJMHg0YjlhYWJhYjk2YWIzMTNkVUxMLCAweDgxZjBjZWNlMWZjZTNlZDFVTEwsIDB4MjI5OTExMTE0NDExODg1NVVMTCwKKwkweDAzODM4ZjhmMDY4ZjBjODlVTEwsIDB4OWMwNDRlNGUyNTRlNGE2YlVMTCwgMHg3MzY2YjdiN2U2YjdkMTUxVUxMLAorCTB4Y2JlMGViZWI4YmViMGI2MFVMTCwgMHg3OGMxM2MzY2YwM2NmZGNjVUxMLCAweDFmZmQ4MTgxM2U4MTdjYmZVTEwsCisJMHgzNTQwOTQ5NDZhOTRkNGZlVUxMLCAweGYzMWNmN2Y3ZmJmN2ViMGNVTEwsIDB4NmYxOGI5YjlkZWI5YTE2N1VMTCwKKwkweDI2OGIxMzEzNGMxMzk4NWZVTEwsIDB4NTg1MTJjMmNiMDJjN2Q5Y1VMTCwgMHhiYjA1ZDNkMzZiZDNkNmI4VUxMLAorCTB4ZDM4Y2U3ZTdiYmU3NmI1Y1VMTCwgMHhkYzM5NmU2ZWE1NmU1N2NiVUxMLCAweDk1YWFjNGM0MzdjNDZlZjNVTEwsCisJMHgwNjFiMDMwMzBjMDMxODBmVUxMLCAweGFjZGM1NjU2NDU1NjhhMTNVTEwsIDB4ODg1ZTQ0NDQwZDQ0MWE0OVVMTCwKKwkweGZlYTA3ZjdmZTE3ZmRmOWVVTEwsIDB4NGY4OGE5YTk5ZWE5MjEzN1VMTCwgMHg1NDY3MmEyYWE4MmE0ZDgyVUxMLAorCTB4NmIwYWJiYmJkNmJiYjE2ZFVMTCwgMHg5Zjg3YzFjMTIzYzE0NmUyVUxMLCAweGE2ZjE1MzUzNTE1M2EyMDJVTEwsCisJMHhhNTcyZGNkYzU3ZGNhZThiVUxMLCAweDE2NTMwYjBiMmMwYjU4MjdVTEwsIDB4MjcwMTlkOWQ0ZTlkOWNkM1VMTCwKKwkweGQ4MmI2YzZjYWQ2YzQ3YzFVTEwsIDB4NjJhNDMxMzFjNDMxOTVmNVVMTCwgMHhlOGYzNzQ3NGNkNzQ4N2I5VUxMLAorCTB4ZjExNWY2ZjZmZmY2ZTMwOVVMTCwgMHg4YzRjNDY0NjA1NDYwYTQzVUxMLCAweDQ1YTVhY2FjOGFhYzA5MjZVTEwsCisJMHgwZmI1ODk4OTFlODkzYzk3VUxMLCAweDI4YjQxNDE0NTAxNGEwNDRVTEwsIDB4ZGZiYWUxZTFhM2UxNWI0MlVMTCwKKwkweDJjYTYxNjE2NTgxNmIwNGVVTEwsIDB4NzRmNzNhM2FlODNhY2RkMlVMTCwgMHhkMjA2Njk2OWI5Njk2ZmQwVUxMLAorCTB4MTI0MTA5MDkyNDA5NDgyZFVMTCwgMHhlMGQ3NzA3MGRkNzBhN2FkVUxMLCAweDcxNmZiNmI2ZTJiNmQ5NTRVTEwsCisJMHhiZDFlZDBkMDY3ZDBjZWI3VUxMLCAweGM3ZDZlZGVkOTNlZDNiN2VVTEwsIDB4ODVlMmNjY2MxN2NjMmVkYlVMTCwKKwkweDg0Njg0MjQyMTU0MjJhNTdVTEwsIDB4MmQyYzk4OTg1YTk4YjRjMlVMTCwgMHg1NWVkYTRhNGFhYTQ0OTBlVUxMLAorCTB4NTA3NTI4MjhhMDI4NWQ4OFVMTCwgMHhiODg2NWM1YzZkNWNkYTMxVUxMLCAweGVkNmJmOGY4YzdmODkzM2ZVTEwsCisJMHgxMWMyODY4NjIyODY0NGE0VUxMLAorfTsKKworc3RhdGljIGNvbnN0IHU2NCBDM1syNTZdID0geworCTB4NzgzMGQ4MTgxODYwMThjMFVMTCwgMHhhZjQ2MjYyMzIzOGMyMzA1VUxMLCAweGY5OTFiOGM2YzYzZmM2N2VVTEwsCisJMHg2ZmNkZmJlOGU4ODdlODEzVUxMLCAweGExMTNjYjg3ODcyNjg3NGNVTEwsIDB4NjI2ZDExYjhiOGRhYjhhOVVMTCwKKwkweDA1MDIwOTAxMDEwNDAxMDhVTEwsIDB4NmU5ZTBkNGY0ZjIxNGY0MlVMTCwgMHhlZTZjOWIzNjM2ZDgzNmFkVUxMLAorCTB4MDQ1MWZmYTZhNmEyYTY1OVVMTCwgMHhiZGI5MGNkMmQyNmZkMmRlVUxMLCAweDA2ZjcwZWY1ZjVmM2Y1ZmJVTEwsCisJMHg4MGYyOTY3OTc5Zjk3OWVmVUxMLCAweGNlZGUzMDZmNmZhMTZmNWZVTEwsIDB4ZWYzZjZkOTE5MTdlOTFmY1VMTCwKKwkweDA3YTRmODUyNTI1NTUyYWFVTEwsIDB4ZmRjMDQ3NjA2MDlkNjAyN1VMTCwgMHg3NjY1MzViY2JjY2FiYzg5VUxMLAorCTB4Y2QyYjM3OWI5YjU2OWJhY1VMTCwgMHg4YzAxOGE4ZThlMDI4ZTA0VUxMLCAweDE1NWJkMmEzYTNiNmEzNzFVTEwsCisJMHgzYzE4NmMwYzBjMzAwYzYwVUxMLCAweDhhZjY4NDdiN2JmMTdiZmZVTEwsIDB4ZTE2YTgwMzUzNWQ0MzViNVVMTCwKKwkweDY5M2FmNTFkMWQ3NDFkZThVTEwsIDB4NDdkZGIzZTBlMGE3ZTA1M1VMTCwgMHhhY2IzMjFkN2Q3N2JkN2Y2VUxMLAorCTB4ZWQ5OTljYzJjMjJmYzI1ZVVMTCwgMHg5NjVjNDMyZTJlYjgyZTZkVUxMLCAweDdhOTYyOTRiNGIzMTRiNjJVTEwsCisJMHgyMWUxNWRmZWZlZGZmZWEzVUxMLCAweDE2YWVkNTU3NTc0MTU3ODJVTEwsIDB4NDEyYWJkMTUxNTU0MTVhOFVMTCwKKwkweGI2ZWVlODc3NzdjMTc3OWZVTEwsIDB4ZWI2ZTkyMzczN2RjMzdhNVVMTCwgMHg1NmQ3OWVlNWU1YjNlNTdiVUxMLAorCTB4ZDkyMzEzOWY5ZjQ2OWY4Y1VMTCwgMHgxN2ZkMjNmMGYwZTdmMGQzVUxMLCAweDdmOTQyMDRhNGEzNTRhNmFVTEwsCisJMHg5NWE5NDRkYWRhNGZkYTllVUxMLCAweDI1YjBhMjU4NTg3ZDU4ZmFVTEwsIDB4Y2E4ZmNmYzljOTAzYzkwNlVMTCwKKwkweDhkNTI3YzI5MjlhNDI5NTVVTEwsIDB4MjIxNDVhMGEwYTI4MGE1MFVMTCwgMHg0ZjdmNTBiMWIxZmViMWUxVUxMLAorCTB4MWE1ZGM5YTBhMGJhYTA2OVVMTCwgMHhkYWQ2MTQ2YjZiYjE2YjdmVUxMLCAweGFiMTdkOTg1ODUyZTg1NWNVTEwsCisJMHg3MzY3M2NiZGJkY2ViZDgxVUxMLCAweDM0YmE4ZjVkNWQ2OTVkZDJVTEwsIDB4NTAyMDkwMTAxMDQwMTA4MFVMTCwKKwkweDAzZjUwN2Y0ZjRmN2Y0ZjNVTEwsIDB4YzA4YmRkY2JjYjBiY2IxNlVMTCwgMHhjNjdjZDMzZTNlZjgzZWVkVUxMLAorCTB4MTEwYTJkMDUwNTE0MDUyOFVMTCwgMHhlNmNlNzg2NzY3ODE2NzFmVUxMLCAweDUzZDU5N2U0ZTRiN2U0NzNVTEwsCisJMHhiYjRlMDIyNzI3OWMyNzI1VUxMLCAweDU4ODI3MzQxNDExOTQxMzJVTEwsIDB4OWQwYmE3OGI4YjE2OGIyY1VMTCwKKwkweDAxNTNmNmE3YTdhNmE3NTFVTEwsIDB4OTRmYWIyN2Q3ZGU5N2RjZlVMTCwgMHhmYjM3NDk5NTk1NmU5NWRjVUxMLAorCTB4OWZhZDU2ZDhkODQ3ZDg4ZVVMTCwgMHgzMGViNzBmYmZiY2JmYjhiVUxMLCAweDcxYzFjZGVlZWU5ZmVlMjNVTEwsCisJMHg5MWY4YmI3YzdjZWQ3Y2M3VUxMLCAweGUzY2M3MTY2NjY4NTY2MTdVTEwsIDB4OGVhNzdiZGRkZDUzZGRhNlVMTCwKKwkweDRiMmVhZjE3MTc1YzE3YjhVTEwsIDB4NDY4ZTQ1NDc0NzAxNDcwMlVMTCwgMHhkYzIxMWE5ZTllNDI5ZTg0VUxMLAorCTB4YzU4OWQ0Y2FjYTBmY2ExZVVMTCwgMHg5OTVhNTgyZDJkYjQyZDc1VUxMLCAweDc5NjMyZWJmYmZjNmJmOTFVTEwsCisJMHgxYjBlM2YwNzA3MWMwNzM4VUxMLCAweDIzNDdhY2FkYWQ4ZWFkMDFVTEwsIDB4MmZiNGIwNWE1YTc1NWFlYVVMTCwKKwkweGI1MWJlZjgzODMzNjgzNmNVTEwsIDB4ZmY2NmI2MzMzM2NjMzM4NVVMTCwgMHhmMmM2NWM2MzYzOTE2MzNmVUxMLAorCTB4MGEwNDEyMDIwMjA4MDIxMFVMTCwgMHgzODQ5OTNhYWFhOTJhYTM5VUxMLCAweGE4ZTJkZTcxNzFkOTcxYWZVTEwsCisJMHhjZjhkYzZjOGM4MDdjODBlVUxMLCAweDdkMzJkMTE5MTk2NDE5YzhVTEwsIDB4NzA5MjNiNDk0OTM5NDk3MlVMTCwKKwkweDlhYWY1ZmQ5ZDk0M2Q5ODZVTEwsIDB4MWRmOTMxZjJmMmVmZjJjM1VMTCwgMHg0OGRiYThlM2UzYWJlMzRiVUxMLAorCTB4MmFiNmI5NWI1YjcxNWJlMlVMTCwgMHg5MjBkYmM4ODg4MWE4ODM0VUxMLCAweGM4MjkzZTlhOWE1MjlhYTRVTEwsCisJMHhiZTRjMGIyNjI2OTgyNjJkVUxMLCAweGZhNjRiZjMyMzJjODMyOGRVTEwsIDB4NGE3ZDU5YjBiMGZhYjBlOVVMTCwKKwkweDZhY2ZmMmU5ZTk4M2U5MWJVTEwsIDB4MzMxZTc3MGYwZjNjMGY3OFVMTCwgMHhhNmI3MzNkNWQ1NzNkNWU2VUxMLAorCTB4YmExZGY0ODA4MDNhODA3NFVMTCwgMHg3YzYxMjdiZWJlYzJiZTk5VUxMLCAweGRlODdlYmNkY2QxM2NkMjZVTEwsCisJMHhlNDY4ODkzNDM0ZDAzNGJkVUxMLCAweDc1OTAzMjQ4NDgzZDQ4N2FVTEwsIDB4MjRlMzU0ZmZmZmRiZmZhYlVMTCwKKwkweDhmZjQ4ZDdhN2FmNTdhZjdVTEwsIDB4ZWEzZDY0OTA5MDdhOTBmNFVMTCwgMHgzZWJlOWQ1ZjVmNjE1ZmMyVUxMLAorCTB4YTA0MDNkMjAyMDgwMjAxZFVMTCwgMHhkNWQwMGY2ODY4YmQ2ODY3VUxMLCAweDcyMzRjYTFhMWE2ODFhZDBVTEwsCisJMHgyYzQxYjdhZWFlODJhZTE5VUxMLCAweDVlNzU3ZGI0YjRlYWI0YzlVTEwsIDB4MTlhOGNlNTQ1NDRkNTQ5YVVMTCwKKwkweGU1M2I3ZjkzOTM3NjkzZWNVTEwsIDB4YWE0NDJmMjIyMjg4MjIwZFVMTCwgMHhlOWM4NjM2NDY0OGQ2NDA3VUxMLAorCTB4MTJmZjJhZjFmMWUzZjFkYlVMTCwgMHhhMmU2Y2M3MzczZDE3M2JmVUxMLCAweDVhMjQ4MjEyMTI0ODEyOTBVTEwsCisJMHg1ZDgwN2E0MDQwMWQ0MDNhVUxMLCAweDI4MTA0ODA4MDgyMDA4NDBVTEwsIDB4ZTg5Yjk1YzNjMzJiYzM1NlVMTCwKKwkweDdiYzVkZmVjZWM5N2VjMzNVTEwsIDB4OTBhYjRkZGJkYjRiZGI5NlVMTCwgMHgxZjVmYzBhMWExYmVhMTYxVUxMLAorCTB4ODMwNzkxOGQ4ZDBlOGQxY1VMTCwgMHhjOTdhYzgzZDNkZjQzZGY1VUxMLCAweGYxMzM1Yjk3OTc2Njk3Y2NVTEwsCisJMHgwMDAwMDAwMDAwMDAwMDAwVUxMLCAweGQ0ODNmOWNmY2YxYmNmMzZVTEwsIDB4ODc1NjZlMmIyYmFjMmI0NVVMTCwKKwkweGIzZWNlMTc2NzZjNTc2OTdVTEwsIDB4YjAxOWU2ODI4MjMyODI2NFVMTCwgMHhhOWIxMjhkNmQ2N2ZkNmZlVUxMLAorCTB4NzczNmMzMWIxYjZjMWJkOFVMTCwgMHg1Yjc3NzRiNWI1ZWViNWMxVUxMLCAweDI5NDNiZWFmYWY4NmFmMTFVTEwsCisJMHhkZmQ0MWQ2YTZhYjU2YTc3VUxMLCAweDBkYTBlYTUwNTA1ZDUwYmFVTEwsIDB4NGM4YTU3NDU0NTA5NDUxMlVMTCwKKwkweDE4ZmIzOGYzZjNlYmYzY2JVTEwsIDB4ZjA2MGFkMzAzMGMwMzA5ZFVMTCwgMHg3NGMzYzRlZmVmOWJlZjJiVUxMLAorCTB4YzM3ZWRhM2YzZmZjM2ZlNVVMTCwgMHgxY2FhYzc1NTU1NDk1NTkyVUxMLCAweDEwNTlkYmEyYTJiMmEyNzlVTEwsCisJMHg2NWM5ZTllYWVhOGZlYTAzVUxMLCAweGVjY2E2YTY1NjU4OTY1MGZVTEwsIDB4Njg2OTAzYmFiYWQyYmFiOVVMTCwKKwkweDkzNWU0YTJmMmZiYzJmNjVVTEwsIDB4ZTc5ZDhlYzBjMDI3YzA0ZVVMTCwgMHg4MWExNjBkZWRlNWZkZWJlVUxMLAorCTB4NmMzOGZjMWMxYzcwMWNlMFVMTCwgMHgyZWU3NDZmZGZkZDNmZGJiVUxMLCAweDY0OWExZjRkNGQyOTRkNTJVTEwsCisJMHhlMDM5NzY5MjkyNzI5MmU0VUxMLCAweGJjZWFmYTc1NzVjOTc1OGZVTEwsIDB4MWUwYzM2MDYwNjE4MDYzMFVMTCwKKwkweDk4MDlhZThhOGExMjhhMjRVTEwsIDB4NDA3OTRiYjJiMmYyYjJmOVVMTCwgMHg1OWQxODVlNmU2YmZlNjYzVUxMLAorCTB4MzYxYzdlMGUwZTM4MGU3MFVMTCwgMHg2MzNlZTcxZjFmN2MxZmY4VUxMLCAweGY3YzQ1NTYyNjI5NTYyMzdVTEwsCisJMHhhM2I1M2FkNGQ0NzdkNGVlVUxMLCAweDMyNGQ4MWE4YTg5YWE4MjlVTEwsIDB4ZjQzMTUyOTY5NjYyOTZjNFVMTCwKKwkweDNhZWY2MmY5ZjljM2Y5OWJVTEwsIDB4ZjY5N2EzYzVjNTMzYzU2NlVMTCwgMHhiMTRhMTAyNTI1OTQyNTM1VUxMLAorCTB4MjBiMmFiNTk1OTc5NTlmMlVMTCwgMHhhZTE1ZDA4NDg0MmE4NDU0VUxMLCAweGE3ZTRjNTcyNzJkNTcyYjdVTEwsCisJMHhkZDcyZWMzOTM5ZTQzOWQ1VUxMLCAweDYxOTgxNjRjNGMyZDRjNWFVTEwsIDB4M2JiYzk0NWU1ZTY1NWVjYVVMTCwKKwkweDg1ZjA5Zjc4NzhmZDc4ZTdVTEwsIDB4ZDg3MGU1MzgzOGUwMzhkZFVMTCwgMHg4NjA1OTg4YzhjMGE4YzE0VUxMLAorCTB4YjJiZjE3ZDFkMTYzZDFjNlVMTCwgMHgwYjU3ZTRhNWE1YWVhNTQxVUxMLCAweDRkZDlhMWUyZTJhZmUyNDNVTEwsCisJMHhmOGMyNGU2MTYxOTk2MTJmVUxMLCAweDQ1N2I0MmIzYjNmNmIzZjFVTEwsIDB4YTU0MjM0MjEyMTg0MjExNVVMTCwKKwkweGQ2MjUwODljOWM0YTljOTRVTEwsIDB4NjYzY2VlMWUxZTc4MWVmMFVMTCwgMHg1Mjg2NjE0MzQzMTE0MzIyVUxMLAorCTB4ZmM5M2IxYzdjNzNiYzc3NlVMTCwgMHgyYmU1NGZmY2ZjZDdmY2IzVUxMLCAweDE0MDgyNDA0MDQxMDA0MjBVTEwsCisJMHgwOGEyZTM1MTUxNTk1MWIyVUxMLCAweGM3MmYyNTk5OTk1ZTk5YmNVTEwsIDB4YzRkYTIyNmQ2ZGE5NmQ0ZlVMTCwKKwkweDM5MWE2NTBkMGQzNDBkNjhVTEwsIDB4MzVlOTc5ZmFmYWNmZmE4M1VMTCwgMHg4NGEzNjlkZmRmNWJkZmI2VUxMLAorCTB4OWJmY2E5N2U3ZWU1N2VkN1VMTCwgMHhiNDQ4MTkyNDI0OTAyNDNkVUxMLCAweGQ3NzZmZTNiM2JlYzNiYzVVTEwsCisJMHgzZDRiOWFhYmFiOTZhYjMxVUxMLCAweGQxODFmMGNlY2UxZmNlM2VVTEwsIDB4NTUyMjk5MTExMTQ0MTE4OFVMTCwKKwkweDg5MDM4MzhmOGYwNjhmMGNVTEwsIDB4NmI5YzA0NGU0ZTI1NGU0YVVMTCwgMHg1MTczNjZiN2I3ZTZiN2QxVUxMLAorCTB4NjBjYmUwZWJlYjhiZWIwYlVMTCwgMHhjYzc4YzEzYzNjZjAzY2ZkVUxMLCAweGJmMWZmZDgxODEzZTgxN2NVTEwsCisJMHhmZTM1NDA5NDk0NmE5NGQ0VUxMLCAweDBjZjMxY2Y3ZjdmYmY3ZWJVTEwsIDB4Njc2ZjE4YjliOWRlYjlhMVVMTCwKKwkweDVmMjY4YjEzMTM0YzEzOThVTEwsIDB4OWM1ODUxMmMyY2IwMmM3ZFVMTCwgMHhiOGJiMDVkM2QzNmJkM2Q2VUxMLAorCTB4NWNkMzhjZTdlN2JiZTc2YlVMTCwgMHhjYmRjMzk2ZTZlYTU2ZTU3VUxMLCAweGYzOTVhYWM0YzQzN2M0NmVVTEwsCisJMHgwZjA2MWIwMzAzMGMwMzE4VUxMLCAweDEzYWNkYzU2NTY0NTU2OGFVTEwsIDB4NDk4ODVlNDQ0NDBkNDQxYVVMTCwKKwkweDllZmVhMDdmN2ZlMTdmZGZVTEwsIDB4Mzc0Zjg4YTlhOTllYTkyMVVMTCwgMHg4MjU0NjcyYTJhYTgyYTRkVUxMLAorCTB4NmQ2YjBhYmJiYmQ2YmJiMVVMTCwgMHhlMjlmODdjMWMxMjNjMTQ2VUxMLCAweDAyYTZmMTUzNTM1MTUzYTJVTEwsCisJMHg4YmE1NzJkY2RjNTdkY2FlVUxMLCAweDI3MTY1MzBiMGIyYzBiNThVTEwsIDB4ZDMyNzAxOWQ5ZDRlOWQ5Y1VMTCwKKwkweGMxZDgyYjZjNmNhZDZjNDdVTEwsIDB4ZjU2MmE0MzEzMWM0MzE5NVVMTCwgMHhiOWU4ZjM3NDc0Y2Q3NDg3VUxMLAorCTB4MDlmMTE1ZjZmNmZmZjZlM1VMTCwgMHg0MzhjNGM0NjQ2MDU0NjBhVUxMLCAweDI2NDVhNWFjYWM4YWFjMDlVTEwsCisJMHg5NzBmYjU4OTg5MWU4OTNjVUxMLCAweDQ0MjhiNDE0MTQ1MDE0YTBVTEwsIDB4NDJkZmJhZTFlMWEzZTE1YlVMTCwKKwkweDRlMmNhNjE2MTY1ODE2YjBVTEwsIDB4ZDI3NGY3M2EzYWU4M2FjZFVMTCwgMHhkMGQyMDY2OTY5Yjk2OTZmVUxMLAorCTB4MmQxMjQxMDkwOTI0MDk0OFVMTCwgMHhhZGUwZDc3MDcwZGQ3MGE3VUxMLCAweDU0NzE2ZmI2YjZlMmI2ZDlVTEwsCisJMHhiN2JkMWVkMGQwNjdkMGNlVUxMLCAweDdlYzdkNmVkZWQ5M2VkM2JVTEwsIDB4ZGI4NWUyY2NjYzE3Y2MyZVVMTCwKKwkweDU3ODQ2ODQyNDIxNTQyMmFVTEwsIDB4YzIyZDJjOTg5ODVhOThiNFVMTCwgMHgwZTU1ZWRhNGE0YWFhNDQ5VUxMLAorCTB4ODg1MDc1MjgyOGEwMjg1ZFVMTCwgMHgzMWI4ODY1YzVjNmQ1Y2RhVUxMLCAweDNmZWQ2YmY4ZjhjN2Y4OTNVTEwsCisJMHhhNDExYzI4Njg2MjI4NjQ0VUxMLAorfTsKKworc3RhdGljIGNvbnN0IHU2NCBDNFsyNTZdID0geworCTB4YzA3ODMwZDgxODE4NjAxOFVMTCwgMHgwNWFmNDYyNjIzMjM4YzIzVUxMLCAweDdlZjk5MWI4YzZjNjNmYzZVTEwsCisJMHgxMzZmY2RmYmU4ZTg4N2U4VUxMLCAweDRjYTExM2NiODc4NzI2ODdVTEwsIDB4YTk2MjZkMTFiOGI4ZGFiOFVMTCwKKwkweDA4MDUwMjA5MDEwMTA0MDFVTEwsIDB4NDI2ZTllMGQ0ZjRmMjE0ZlVMTCwgMHhhZGVlNmM5YjM2MzZkODM2VUxMLAorCTB4NTkwNDUxZmZhNmE2YTJhNlVMTCwgMHhkZWJkYjkwY2QyZDI2ZmQyVUxMLCAweGZiMDZmNzBlZjVmNWYzZjVVTEwsCisJMHhlZjgwZjI5Njc5NzlmOTc5VUxMLCAweDVmY2VkZTMwNmY2ZmExNmZVTEwsIDB4ZmNlZjNmNmQ5MTkxN2U5MVVMTCwKKwkweGFhMDdhNGY4NTI1MjU1NTJVTEwsIDB4MjdmZGMwNDc2MDYwOWQ2MFVMTCwgMHg4OTc2NjUzNWJjYmNjYWJjVUxMLAorCTB4YWNjZDJiMzc5YjliNTY5YlVMTCwgMHgwNDhjMDE4YThlOGUwMjhlVUxMLCAweDcxMTU1YmQyYTNhM2I2YTNVTEwsCisJMHg2MDNjMTg2YzBjMGMzMDBjVUxMLCAweGZmOGFmNjg0N2I3YmYxN2JVTEwsIDB4YjVlMTZhODAzNTM1ZDQzNVVMTCwKKwkweGU4NjkzYWY1MWQxZDc0MWRVTEwsIDB4NTM0N2RkYjNlMGUwYTdlMFVMTCwgMHhmNmFjYjMyMWQ3ZDc3YmQ3VUxMLAorCTB4NWVlZDk5OWNjMmMyMmZjMlVMTCwgMHg2ZDk2NWM0MzJlMmViODJlVUxMLCAweDYyN2E5NjI5NGI0YjMxNGJVTEwsCisJMHhhMzIxZTE1ZGZlZmVkZmZlVUxMLCAweDgyMTZhZWQ1NTc1NzQxNTdVTEwsIDB4YTg0MTJhYmQxNTE1NTQxNVVMTCwKKwkweDlmYjZlZWU4Nzc3N2MxNzdVTEwsIDB4YTVlYjZlOTIzNzM3ZGMzN1VMTCwgMHg3YjU2ZDc5ZWU1ZTViM2U1VUxMLAorCTB4OGNkOTIzMTM5ZjlmNDY5ZlVMTCwgMHhkMzE3ZmQyM2YwZjBlN2YwVUxMLCAweDZhN2Y5NDIwNGE0YTM1NGFVTEwsCisJMHg5ZTk1YTk0NGRhZGE0ZmRhVUxMLCAweGZhMjViMGEyNTg1ODdkNThVTEwsIDB4MDZjYThmY2ZjOWM5MDNjOVVMTCwKKwkweDU1OGQ1MjdjMjkyOWE0MjlVTEwsIDB4NTAyMjE0NWEwYTBhMjgwYVVMTCwgMHhlMTRmN2Y1MGIxYjFmZWIxVUxMLAorCTB4NjkxYTVkYzlhMGEwYmFhMFVMTCwgMHg3ZmRhZDYxNDZiNmJiMTZiVUxMLCAweDVjYWIxN2Q5ODU4NTJlODVVTEwsCisJMHg4MTczNjczY2JkYmRjZWJkVUxMLCAweGQyMzRiYThmNWQ1ZDY5NWRVTEwsIDB4ODA1MDIwOTAxMDEwNDAxMFVMTCwKKwkweGYzMDNmNTA3ZjRmNGY3ZjRVTEwsIDB4MTZjMDhiZGRjYmNiMGJjYlVMTCwgMHhlZGM2N2NkMzNlM2VmODNlVUxMLAorCTB4MjgxMTBhMmQwNTA1MTQwNVVMTCwgMHgxZmU2Y2U3ODY3Njc4MTY3VUxMLCAweDczNTNkNTk3ZTRlNGI3ZTRVTEwsCisJMHgyNWJiNGUwMjI3Mjc5YzI3VUxMLCAweDMyNTg4MjczNDE0MTE5NDFVTEwsIDB4MmM5ZDBiYTc4YjhiMTY4YlVMTCwKKwkweDUxMDE1M2Y2YTdhN2E2YTdVTEwsIDB4Y2Y5NGZhYjI3ZDdkZTk3ZFVMTCwgMHhkY2ZiMzc0OTk1OTU2ZTk1VUxMLAorCTB4OGU5ZmFkNTZkOGQ4NDdkOFVMTCwgMHg4YjMwZWI3MGZiZmJjYmZiVUxMLCAweDIzNzFjMWNkZWVlZTlmZWVVTEwsCisJMHhjNzkxZjhiYjdjN2NlZDdjVUxMLCAweDE3ZTNjYzcxNjY2Njg1NjZVTEwsIDB4YTY4ZWE3N2JkZGRkNTNkZFVMTCwKKwkweGI4NGIyZWFmMTcxNzVjMTdVTEwsIDB4MDI0NjhlNDU0NzQ3MDE0N1VMTCwgMHg4NGRjMjExYTllOWU0MjllVUxMLAorCTB4MWVjNTg5ZDRjYWNhMGZjYVVMTCwgMHg3NTk5NWE1ODJkMmRiNDJkVUxMLCAweDkxNzk2MzJlYmZiZmM2YmZVTEwsCisJMHgzODFiMGUzZjA3MDcxYzA3VUxMLCAweDAxMjM0N2FjYWRhZDhlYWRVTEwsIDB4ZWEyZmI0YjA1YTVhNzU1YVVMTCwKKwkweDZjYjUxYmVmODM4MzM2ODNVTEwsIDB4ODVmZjY2YjYzMzMzY2MzM1VMTCwgMHgzZmYyYzY1YzYzNjM5MTYzVUxMLAorCTB4MTAwYTA0MTIwMjAyMDgwMlVMTCwgMHgzOTM4NDk5M2FhYWE5MmFhVUxMLCAweGFmYThlMmRlNzE3MWQ5NzFVTEwsCisJMHgwZWNmOGRjNmM4YzgwN2M4VUxMLCAweGM4N2QzMmQxMTkxOTY0MTlVTEwsIDB4NzI3MDkyM2I0OTQ5Mzk0OVVMTCwKKwkweDg2OWFhZjVmZDlkOTQzZDlVTEwsIDB4YzMxZGY5MzFmMmYyZWZmMlVMTCwgMHg0YjQ4ZGJhOGUzZTNhYmUzVUxMLAorCTB4ZTIyYWI2Yjk1YjViNzE1YlVMTCwgMHgzNDkyMGRiYzg4ODgxYTg4VUxMLCAweGE0YzgyOTNlOWE5YTUyOWFVTEwsCisJMHgyZGJlNGMwYjI2MjY5ODI2VUxMLCAweDhkZmE2NGJmMzIzMmM4MzJVTEwsIDB4ZTk0YTdkNTliMGIwZmFiMFVMTCwKKwkweDFiNmFjZmYyZTllOTgzZTlVTEwsIDB4NzgzMzFlNzcwZjBmM2MwZlVMTCwgMHhlNmE2YjczM2Q1ZDU3M2Q1VUxMLAorCTB4NzRiYTFkZjQ4MDgwM2E4MFVMTCwgMHg5OTdjNjEyN2JlYmVjMmJlVUxMLCAweDI2ZGU4N2ViY2RjZDEzY2RVTEwsCisJMHhiZGU0Njg4OTM0MzRkMDM0VUxMLCAweDdhNzU5MDMyNDg0ODNkNDhVTEwsIDB4YWIyNGUzNTRmZmZmZGJmZlVMTCwKKwkweGY3OGZmNDhkN2E3YWY1N2FVTEwsIDB4ZjRlYTNkNjQ5MDkwN2E5MFVMTCwgMHhjMjNlYmU5ZDVmNWY2MTVmVUxMLAorCTB4MWRhMDQwM2QyMDIwODAyMFVMTCwgMHg2N2Q1ZDAwZjY4NjhiZDY4VUxMLCAweGQwNzIzNGNhMWExYTY4MWFVTEwsCisJMHgxOTJjNDFiN2FlYWU4MmFlVUxMLCAweGM5NWU3NTdkYjRiNGVhYjRVTEwsIDB4OWExOWE4Y2U1NDU0NGQ1NFVMTCwKKwkweGVjZTUzYjdmOTM5Mzc2OTNVTEwsIDB4MGRhYTQ0MmYyMjIyODgyMlVMTCwgMHgwN2U5Yzg2MzY0NjQ4ZDY0VUxMLAorCTB4ZGIxMmZmMmFmMWYxZTNmMVVMTCwgMHhiZmEyZTZjYzczNzNkMTczVUxMLCAweDkwNWEyNDgyMTIxMjQ4MTJVTEwsCisJMHgzYTVkODA3YTQwNDAxZDQwVUxMLCAweDQwMjgxMDQ4MDgwODIwMDhVTEwsIDB4NTZlODliOTVjM2MzMmJjM1VMTCwKKwkweDMzN2JjNWRmZWNlYzk3ZWNVTEwsIDB4OTY5MGFiNGRkYmRiNGJkYlVMTCwgMHg2MTFmNWZjMGExYTFiZWExVUxMLAorCTB4MWM4MzA3OTE4ZDhkMGU4ZFVMTCwgMHhmNWM5N2FjODNkM2RmNDNkVUxMLCAweGNjZjEzMzViOTc5NzY2OTdVTEwsCisJMHgwMDAwMDAwMDAwMDAwMDAwVUxMLCAweDM2ZDQ4M2Y5Y2ZjZjFiY2ZVTEwsIDB4NDU4NzU2NmUyYjJiYWMyYlVMTCwKKwkweDk3YjNlY2UxNzY3NmM1NzZVTEwsIDB4NjRiMDE5ZTY4MjgyMzI4MlVMTCwgMHhmZWE5YjEyOGQ2ZDY3ZmQ2VUxMLAorCTB4ZDg3NzM2YzMxYjFiNmMxYlVMTCwgMHhjMTViNzc3NGI1YjVlZWI1VUxMLCAweDExMjk0M2JlYWZhZjg2YWZVTEwsCisJMHg3N2RmZDQxZDZhNmFiNTZhVUxMLCAweGJhMGRhMGVhNTA1MDVkNTBVTEwsIDB4MTI0YzhhNTc0NTQ1MDk0NVVMTCwKKwkweGNiMThmYjM4ZjNmM2ViZjNVTEwsIDB4OWRmMDYwYWQzMDMwYzAzMFVMTCwgMHgyYjc0YzNjNGVmZWY5YmVmVUxMLAorCTB4ZTVjMzdlZGEzZjNmZmMzZlVMTCwgMHg5MjFjYWFjNzU1NTU0OTU1VUxMLCAweDc5MTA1OWRiYTJhMmIyYTJVTEwsCisJMHgwMzY1YzllOWVhZWE4ZmVhVUxMLCAweDBmZWNjYTZhNjU2NTg5NjVVTEwsIDB4Yjk2ODY5MDNiYWJhZDJiYVVMTCwKKwkweDY1OTM1ZTRhMmYyZmJjMmZVTEwsIDB4NGVlNzlkOGVjMGMwMjdjMFVMTCwgMHhiZTgxYTE2MGRlZGU1ZmRlVUxMLAorCTB4ZTA2YzM4ZmMxYzFjNzAxY1VMTCwgMHhiYjJlZTc0NmZkZmRkM2ZkVUxMLCAweDUyNjQ5YTFmNGQ0ZDI5NGRVTEwsCisJMHhlNGUwMzk3NjkyOTI3MjkyVUxMLCAweDhmYmNlYWZhNzU3NWM5NzVVTEwsIDB4MzAxZTBjMzYwNjA2MTgwNlVMTCwKKwkweDI0OTgwOWFlOGE4YTEyOGFVTEwsIDB4Zjk0MDc5NGJiMmIyZjJiMlVMTCwgMHg2MzU5ZDE4NWU2ZTZiZmU2VUxMLAorCTB4NzAzNjFjN2UwZTBlMzgwZVVMTCwgMHhmODYzM2VlNzFmMWY3YzFmVUxMLCAweDM3ZjdjNDU1NjI2Mjk1NjJVTEwsCisJMHhlZWEzYjUzYWQ0ZDQ3N2Q0VUxMLCAweDI5MzI0ZDgxYThhODlhYThVTEwsIDB4YzRmNDMxNTI5Njk2NjI5NlVMTCwKKwkweDliM2FlZjYyZjlmOWMzZjlVTEwsIDB4NjZmNjk3YTNjNWM1MzNjNVVMTCwgMHgzNWIxNGExMDI1MjU5NDI1VUxMLAorCTB4ZjIyMGIyYWI1OTU5Nzk1OVVMTCwgMHg1NGFlMTVkMDg0ODQyYTg0VUxMLCAweGI3YTdlNGM1NzI3MmQ1NzJVTEwsCisJMHhkNWRkNzJlYzM5MzllNDM5VUxMLCAweDVhNjE5ODE2NGM0YzJkNGNVTEwsIDB4Y2EzYmJjOTQ1ZTVlNjU1ZVVMTCwKKwkweGU3ODVmMDlmNzg3OGZkNzhVTEwsIDB4ZGRkODcwZTUzODM4ZTAzOFVMTCwgMHgxNDg2MDU5ODhjOGMwYThjVUxMLAorCTB4YzZiMmJmMTdkMWQxNjNkMVVMTCwgMHg0MTBiNTdlNGE1YTVhZWE1VUxMLCAweDQzNGRkOWExZTJlMmFmZTJVTEwsCisJMHgyZmY4YzI0ZTYxNjE5OTYxVUxMLCAweGYxNDU3YjQyYjNiM2Y2YjNVTEwsIDB4MTVhNTQyMzQyMTIxODQyMVVMTCwKKwkweDk0ZDYyNTA4OWM5YzRhOWNVTEwsIDB4ZjA2NjNjZWUxZTFlNzgxZVVMTCwgMHgyMjUyODY2MTQzNDMxMTQzVUxMLAorCTB4NzZmYzkzYjFjN2M3M2JjN1VMTCwgMHhiMzJiZTU0ZmZjZmNkN2ZjVUxMLCAweDIwMTQwODI0MDQwNDEwMDRVTEwsCisJMHhiMjA4YTJlMzUxNTE1OTUxVUxMLCAweGJjYzcyZjI1OTk5OTVlOTlVTEwsIDB4NGZjNGRhMjI2ZDZkYTk2ZFVMTCwKKwkweDY4MzkxYTY1MGQwZDM0MGRVTEwsIDB4ODMzNWU5NzlmYWZhY2ZmYVVMTCwgMHhiNjg0YTM2OWRmZGY1YmRmVUxMLAorCTB4ZDc5YmZjYTk3ZTdlZTU3ZVVMTCwgMHgzZGI0NDgxOTI0MjQ5MDI0VUxMLCAweGM1ZDc3NmZlM2IzYmVjM2JVTEwsCisJMHgzMTNkNGI5YWFiYWI5NmFiVUxMLCAweDNlZDE4MWYwY2VjZTFmY2VVTEwsIDB4ODg1NTIyOTkxMTExNDQxMVVMTCwKKwkweDBjODkwMzgzOGY4ZjA2OGZVTEwsIDB4NGE2YjljMDQ0ZTRlMjU0ZVVMTCwgMHhkMTUxNzM2NmI3YjdlNmI3VUxMLAorCTB4MGI2MGNiZTBlYmViOGJlYlVMTCwgMHhmZGNjNzhjMTNjM2NmMDNjVUxMLCAweDdjYmYxZmZkODE4MTNlODFVTEwsCisJMHhkNGZlMzU0MDk0OTQ2YTk0VUxMLCAweGViMGNmMzFjZjdmN2ZiZjdVTEwsIDB4YTE2NzZmMThiOWI5ZGViOVVMTCwKKwkweDk4NWYyNjhiMTMxMzRjMTNVTEwsIDB4N2Q5YzU4NTEyYzJjYjAyY1VMTCwgMHhkNmI4YmIwNWQzZDM2YmQzVUxMLAorCTB4NmI1Y2QzOGNlN2U3YmJlN1VMTCwgMHg1N2NiZGMzOTZlNmVhNTZlVUxMLCAweDZlZjM5NWFhYzRjNDM3YzRVTEwsCisJMHgxODBmMDYxYjAzMDMwYzAzVUxMLCAweDhhMTNhY2RjNTY1NjQ1NTZVTEwsIDB4MWE0OTg4NWU0NDQ0MGQ0NFVMTCwKKwkweGRmOWVmZWEwN2Y3ZmUxN2ZVTEwsIDB4MjEzNzRmODhhOWE5OWVhOVVMTCwgMHg0ZDgyNTQ2NzJhMmFhODJhVUxMLAorCTB4YjE2ZDZiMGFiYmJiZDZiYlVMTCwgMHg0NmUyOWY4N2MxYzEyM2MxVUxMLCAweGEyMDJhNmYxNTM1MzUxNTNVTEwsCisJMHhhZThiYTU3MmRjZGM1N2RjVUxMLCAweDU4MjcxNjUzMGIwYjJjMGJVTEwsIDB4OWNkMzI3MDE5ZDlkNGU5ZFVMTCwKKwkweDQ3YzFkODJiNmM2Y2FkNmNVTEwsIDB4OTVmNTYyYTQzMTMxYzQzMVVMTCwgMHg4N2I5ZThmMzc0NzRjZDc0VUxMLAorCTB4ZTMwOWYxMTVmNmY2ZmZmNlVMTCwgMHgwYTQzOGM0YzQ2NDYwNTQ2VUxMLCAweDA5MjY0NWE1YWNhYzhhYWNVTEwsCisJMHgzYzk3MGZiNTg5ODkxZTg5VUxMLCAweGEwNDQyOGI0MTQxNDUwMTRVTEwsIDB4NWI0MmRmYmFlMWUxYTNlMVVMTCwKKwkweGIwNGUyY2E2MTYxNjU4MTZVTEwsIDB4Y2RkMjc0ZjczYTNhZTgzYVVMTCwgMHg2ZmQwZDIwNjY5NjliOTY5VUxMLAorCTB4NDgyZDEyNDEwOTA5MjQwOVVMTCwgMHhhN2FkZTBkNzcwNzBkZDcwVUxMLCAweGQ5NTQ3MTZmYjZiNmUyYjZVTEwsCisJMHhjZWI3YmQxZWQwZDA2N2QwVUxMLCAweDNiN2VjN2Q2ZWRlZDkzZWRVTEwsIDB4MmVkYjg1ZTJjY2NjMTdjY1VMTCwKKwkweDJhNTc4NDY4NDI0MjE1NDJVTEwsIDB4YjRjMjJkMmM5ODk4NWE5OFVMTCwgMHg0OTBlNTVlZGE0YTRhYWE0VUxMLAorCTB4NWQ4ODUwNzUyODI4YTAyOFVMTCwgMHhkYTMxYjg4NjVjNWM2ZDVjVUxMLCAweDkzM2ZlZDZiZjhmOGM3ZjhVTEwsCisJMHg0NGE0MTFjMjg2ODYyMjg2VUxMLAorfTsKKworc3RhdGljIGNvbnN0IHU2NCBDNVsyNTZdID0geworCTB4MThjMDc4MzBkODE4MTg2MFVMTCwgMHgyMzA1YWY0NjI2MjMyMzhjVUxMLCAweGM2N2VmOTkxYjhjNmM2M2ZVTEwsCisJMHhlODEzNmZjZGZiZThlODg3VUxMLCAweDg3NGNhMTEzY2I4Nzg3MjZVTEwsIDB4YjhhOTYyNmQxMWI4YjhkYVVMTCwKKwkweDAxMDgwNTAyMDkwMTAxMDRVTEwsIDB4NGY0MjZlOWUwZDRmNGYyMVVMTCwgMHgzNmFkZWU2YzliMzYzNmQ4VUxMLAorCTB4YTY1OTA0NTFmZmE2YTZhMlVMTCwgMHhkMmRlYmRiOTBjZDJkMjZmVUxMLCAweGY1ZmIwNmY3MGVmNWY1ZjNVTEwsCisJMHg3OWVmODBmMjk2Nzk3OWY5VUxMLCAweDZmNWZjZWRlMzA2ZjZmYTFVTEwsIDB4OTFmY2VmM2Y2ZDkxOTE3ZVVMTCwKKwkweDUyYWEwN2E0Zjg1MjUyNTVVTEwsIDB4NjAyN2ZkYzA0NzYwNjA5ZFVMTCwgMHhiYzg5NzY2NTM1YmNiY2NhVUxMLAorCTB4OWJhY2NkMmIzNzliOWI1NlVMTCwgMHg4ZTA0OGMwMThhOGU4ZTAyVUxMLCAweGEzNzExNTViZDJhM2EzYjZVTEwsCisJMHgwYzYwM2MxODZjMGMwYzMwVUxMLCAweDdiZmY4YWY2ODQ3YjdiZjFVTEwsIDB4MzViNWUxNmE4MDM1MzVkNFVMTCwKKwkweDFkZTg2OTNhZjUxZDFkNzRVTEwsIDB4ZTA1MzQ3ZGRiM2UwZTBhN1VMTCwgMHhkN2Y2YWNiMzIxZDdkNzdiVUxMLAorCTB4YzI1ZWVkOTk5Y2MyYzIyZlVMTCwgMHgyZTZkOTY1YzQzMmUyZWI4VUxMLCAweDRiNjI3YTk2Mjk0YjRiMzFVTEwsCisJMHhmZWEzMjFlMTVkZmVmZWRmVUxMLCAweDU3ODIxNmFlZDU1NzU3NDFVTEwsIDB4MTVhODQxMmFiZDE1MTU1NFVMTCwKKwkweDc3OWZiNmVlZTg3Nzc3YzFVTEwsIDB4MzdhNWViNmU5MjM3MzdkY1VMTCwgMHhlNTdiNTZkNzllZTVlNWIzVUxMLAorCTB4OWY4Y2Q5MjMxMzlmOWY0NlVMTCwgMHhmMGQzMTdmZDIzZjBmMGU3VUxMLCAweDRhNmE3Zjk0MjA0YTRhMzVVTEwsCisJMHhkYTllOTVhOTQ0ZGFkYTRmVUxMLCAweDU4ZmEyNWIwYTI1ODU4N2RVTEwsIDB4YzkwNmNhOGZjZmM5YzkwM1VMTCwKKwkweDI5NTU4ZDUyN2MyOTI5YTRVTEwsIDB4MGE1MDIyMTQ1YTBhMGEyOFVMTCwgMHhiMWUxNGY3ZjUwYjFiMWZlVUxMLAorCTB4YTA2OTFhNWRjOWEwYTBiYVVMTCwgMHg2YjdmZGFkNjE0NmI2YmIxVUxMLCAweDg1NWNhYjE3ZDk4NTg1MmVVTEwsCisJMHhiZDgxNzM2NzNjYmRiZGNlVUxMLCAweDVkZDIzNGJhOGY1ZDVkNjlVTEwsIDB4MTA4MDUwMjA5MDEwMTA0MFVMTCwKKwkweGY0ZjMwM2Y1MDdmNGY0ZjdVTEwsIDB4Y2IxNmMwOGJkZGNiY2IwYlVMTCwgMHgzZWVkYzY3Y2QzM2UzZWY4VUxMLAorCTB4MDUyODExMGEyZDA1MDUxNFVMTCwgMHg2NzFmZTZjZTc4Njc2NzgxVUxMLCAweGU0NzM1M2Q1OTdlNGU0YjdVTEwsCisJMHgyNzI1YmI0ZTAyMjcyNzljVUxMLCAweDQxMzI1ODgyNzM0MTQxMTlVTEwsIDB4OGIyYzlkMGJhNzhiOGIxNlVMTCwKKwkweGE3NTEwMTUzZjZhN2E3YTZVTEwsIDB4N2RjZjk0ZmFiMjdkN2RlOVVMTCwgMHg5NWRjZmIzNzQ5OTU5NTZlVUxMLAorCTB4ZDg4ZTlmYWQ1NmQ4ZDg0N1VMTCwgMHhmYjhiMzBlYjcwZmJmYmNiVUxMLCAweGVlMjM3MWMxY2RlZWVlOWZVTEwsCisJMHg3Y2M3OTFmOGJiN2M3Y2VkVUxMLCAweDY2MTdlM2NjNzE2NjY2ODVVTEwsIDB4ZGRhNjhlYTc3YmRkZGQ1M1VMTCwKKwkweDE3Yjg0YjJlYWYxNzE3NWNVTEwsIDB4NDcwMjQ2OGU0NTQ3NDcwMVVMTCwgMHg5ZTg0ZGMyMTFhOWU5ZTQyVUxMLAorCTB4Y2ExZWM1ODlkNGNhY2EwZlVMTCwgMHgyZDc1OTk1YTU4MmQyZGI0VUxMLCAweGJmOTE3OTYzMmViZmJmYzZVTEwsCisJMHgwNzM4MWIwZTNmMDcwNzFjVUxMLCAweGFkMDEyMzQ3YWNhZGFkOGVVTEwsIDB4NWFlYTJmYjRiMDVhNWE3NVVMTCwKKwkweDgzNmNiNTFiZWY4MzgzMzZVTEwsIDB4MzM4NWZmNjZiNjMzMzNjY1VMTCwgMHg2MzNmZjJjNjVjNjM2MzkxVUxMLAorCTB4MDIxMDBhMDQxMjAyMDIwOFVMTCwgMHhhYTM5Mzg0OTkzYWFhYTkyVUxMLCAweDcxYWZhOGUyZGU3MTcxZDlVTEwsCisJMHhjODBlY2Y4ZGM2YzhjODA3VUxMLCAweDE5Yzg3ZDMyZDExOTE5NjRVTEwsIDB4NDk3MjcwOTIzYjQ5NDkzOVVMTCwKKwkweGQ5ODY5YWFmNWZkOWQ5NDNVTEwsIDB4ZjJjMzFkZjkzMWYyZjJlZlVMTCwgMHhlMzRiNDhkYmE4ZTNlM2FiVUxMLAorCTB4NWJlMjJhYjZiOTViNWI3MVVMTCwgMHg4ODM0OTIwZGJjODg4ODFhVUxMLCAweDlhYTRjODI5M2U5YTlhNTJVTEwsCisJMHgyNjJkYmU0YzBiMjYyNjk4VUxMLCAweDMyOGRmYTY0YmYzMjMyYzhVTEwsIDB4YjBlOTRhN2Q1OWIwYjBmYVVMTCwKKwkweGU5MWI2YWNmZjJlOWU5ODNVTEwsIDB4MGY3ODMzMWU3NzBmMGYzY1VMTCwgMHhkNWU2YTZiNzMzZDVkNTczVUxMLAorCTB4ODA3NGJhMWRmNDgwODAzYVVMTCwgMHhiZTk5N2M2MTI3YmViZWMyVUxMLCAweGNkMjZkZTg3ZWJjZGNkMTNVTEwsCisJMHgzNGJkZTQ2ODg5MzQzNGQwVUxMLCAweDQ4N2E3NTkwMzI0ODQ4M2RVTEwsIDB4ZmZhYjI0ZTM1NGZmZmZkYlVMTCwKKwkweDdhZjc4ZmY0OGQ3YTdhZjVVTEwsIDB4OTBmNGVhM2Q2NDkwOTA3YVVMTCwgMHg1ZmMyM2ViZTlkNWY1ZjYxVUxMLAorCTB4MjAxZGEwNDAzZDIwMjA4MFVMTCwgMHg2ODY3ZDVkMDBmNjg2OGJkVUxMLCAweDFhZDA3MjM0Y2ExYTFhNjhVTEwsCisJMHhhZTE5MmM0MWI3YWVhZTgyVUxMLCAweGI0Yzk1ZTc1N2RiNGI0ZWFVTEwsIDB4NTQ5YTE5YThjZTU0NTQ0ZFVMTCwKKwkweDkzZWNlNTNiN2Y5MzkzNzZVTEwsIDB4MjIwZGFhNDQyZjIyMjI4OFVMTCwgMHg2NDA3ZTljODYzNjQ2NDhkVUxMLAorCTB4ZjFkYjEyZmYyYWYxZjFlM1VMTCwgMHg3M2JmYTJlNmNjNzM3M2QxVUxMLCAweDEyOTA1YTI0ODIxMjEyNDhVTEwsCisJMHg0MDNhNWQ4MDdhNDA0MDFkVUxMLCAweDA4NDAyODEwNDgwODA4MjBVTEwsIDB4YzM1NmU4OWI5NWMzYzMyYlVMTCwKKwkweGVjMzM3YmM1ZGZlY2VjOTdVTEwsIDB4ZGI5NjkwYWI0ZGRiZGI0YlVMTCwgMHhhMTYxMWY1ZmMwYTFhMWJlVUxMLAorCTB4OGQxYzgzMDc5MThkOGQwZVVMTCwgMHgzZGY1Yzk3YWM4M2QzZGY0VUxMLCAweDk3Y2NmMTMzNWI5Nzk3NjZVTEwsCisJMHgwMDAwMDAwMDAwMDAwMDAwVUxMLCAweGNmMzZkNDgzZjljZmNmMWJVTEwsIDB4MmI0NTg3NTY2ZTJiMmJhY1VMTCwKKwkweDc2OTdiM2VjZTE3Njc2YzVVTEwsIDB4ODI2NGIwMTllNjgyODIzMlVMTCwgMHhkNmZlYTliMTI4ZDZkNjdmVUxMLAorCTB4MWJkODc3MzZjMzFiMWI2Y1VMTCwgMHhiNWMxNWI3Nzc0YjViNWVlVUxMLCAweGFmMTEyOTQzYmVhZmFmODZVTEwsCisJMHg2YTc3ZGZkNDFkNmE2YWI1VUxMLCAweDUwYmEwZGEwZWE1MDUwNWRVTEwsIDB4NDUxMjRjOGE1NzQ1NDUwOVVMTCwKKwkweGYzY2IxOGZiMzhmM2YzZWJVTEwsIDB4MzA5ZGYwNjBhZDMwMzBjMFVMTCwgMHhlZjJiNzRjM2M0ZWZlZjliVUxMLAorCTB4M2ZlNWMzN2VkYTNmM2ZmY1VMTCwgMHg1NTkyMWNhYWM3NTU1NTQ5VUxMLCAweGEyNzkxMDU5ZGJhMmEyYjJVTEwsCisJMHhlYTAzNjVjOWU5ZWFlYThmVUxMLCAweDY1MGZlY2NhNmE2NTY1ODlVTEwsIDB4YmFiOTY4NjkwM2JhYmFkMlVMTCwKKwkweDJmNjU5MzVlNGEyZjJmYmNVTEwsIDB4YzA0ZWU3OWQ4ZWMwYzAyN1VMTCwgMHhkZWJlODFhMTYwZGVkZTVmVUxMLAorCTB4MWNlMDZjMzhmYzFjMWM3MFVMTCwgMHhmZGJiMmVlNzQ2ZmRmZGQzVUxMLCAweDRkNTI2NDlhMWY0ZDRkMjlVTEwsCisJMHg5MmU0ZTAzOTc2OTI5MjcyVUxMLCAweDc1OGZiY2VhZmE3NTc1YzlVTEwsIDB4MDYzMDFlMGMzNjA2MDYxOFVMTCwKKwkweDhhMjQ5ODA5YWU4YThhMTJVTEwsIDB4YjJmOTQwNzk0YmIyYjJmMlVMTCwgMHhlNjYzNTlkMTg1ZTZlNmJmVUxMLAorCTB4MGU3MDM2MWM3ZTBlMGUzOFVMTCwgMHgxZmY4NjMzZWU3MWYxZjdjVUxMLCAweDYyMzdmN2M0NTU2MjYyOTVVTEwsCisJMHhkNGVlYTNiNTNhZDRkNDc3VUxMLCAweGE4MjkzMjRkODFhOGE4OWFVTEwsIDB4OTZjNGY0MzE1Mjk2OTY2MlVMTCwKKwkweGY5OWIzYWVmNjJmOWY5YzNVTEwsIDB4YzU2NmY2OTdhM2M1YzUzM1VMTCwgMHgyNTM1YjE0YTEwMjUyNTk0VUxMLAorCTB4NTlmMjIwYjJhYjU5NTk3OVVMTCwgMHg4NDU0YWUxNWQwODQ4NDJhVUxMLCAweDcyYjdhN2U0YzU3MjcyZDVVTEwsCisJMHgzOWQ1ZGQ3MmVjMzkzOWU0VUxMLCAweDRjNWE2MTk4MTY0YzRjMmRVTEwsIDB4NWVjYTNiYmM5NDVlNWU2NVVMTCwKKwkweDc4ZTc4NWYwOWY3ODc4ZmRVTEwsIDB4MzhkZGQ4NzBlNTM4MzhlMFVMTCwgMHg4YzE0ODYwNTk4OGM4YzBhVUxMLAorCTB4ZDFjNmIyYmYxN2QxZDE2M1VMTCwgMHhhNTQxMGI1N2U0YTVhNWFlVUxMLCAweGUyNDM0ZGQ5YTFlMmUyYWZVTEwsCisJMHg2MTJmZjhjMjRlNjE2MTk5VUxMLCAweGIzZjE0NTdiNDJiM2IzZjZVTEwsIDB4MjExNWE1NDIzNDIxMjE4NFVMTCwKKwkweDljOTRkNjI1MDg5YzljNGFVTEwsIDB4MWVmMDY2M2NlZTFlMWU3OFVMTCwgMHg0MzIyNTI4NjYxNDM0MzExVUxMLAorCTB4Yzc3NmZjOTNiMWM3YzczYlVMTCwgMHhmY2IzMmJlNTRmZmNmY2Q3VUxMLCAweDA0MjAxNDA4MjQwNDA0MTBVTEwsCisJMHg1MWIyMDhhMmUzNTE1MTU5VUxMLCAweDk5YmNjNzJmMjU5OTk5NWVVTEwsIDB4NmQ0ZmM0ZGEyMjZkNmRhOVVMTCwKKwkweDBkNjgzOTFhNjUwZDBkMzRVTEwsIDB4ZmE4MzM1ZTk3OWZhZmFjZlVMTCwgMHhkZmI2ODRhMzY5ZGZkZjViVUxMLAorCTB4N2VkNzliZmNhOTdlN2VlNVVMTCwgMHgyNDNkYjQ0ODE5MjQyNDkwVUxMLCAweDNiYzVkNzc2ZmUzYjNiZWNVTEwsCisJMHhhYjMxM2Q0YjlhYWJhYjk2VUxMLCAweGNlM2VkMTgxZjBjZWNlMWZVTEwsIDB4MTE4ODU1MjI5OTExMTE0NFVMTCwKKwkweDhmMGM4OTAzODM4ZjhmMDZVTEwsIDB4NGU0YTZiOWMwNDRlNGUyNVVMTCwgMHhiN2QxNTE3MzY2YjdiN2U2VUxMLAorCTB4ZWIwYjYwY2JlMGViZWI4YlVMTCwgMHgzY2ZkY2M3OGMxM2MzY2YwVUxMLCAweDgxN2NiZjFmZmQ4MTgxM2VVTEwsCisJMHg5NGQ0ZmUzNTQwOTQ5NDZhVUxMLCAweGY3ZWIwY2YzMWNmN2Y3ZmJVTEwsIDB4YjlhMTY3NmYxOGI5YjlkZVVMTCwKKwkweDEzOTg1ZjI2OGIxMzEzNGNVTEwsIDB4MmM3ZDljNTg1MTJjMmNiMFVMTCwgMHhkM2Q2YjhiYjA1ZDNkMzZiVUxMLAorCTB4ZTc2YjVjZDM4Y2U3ZTdiYlVMTCwgMHg2ZTU3Y2JkYzM5NmU2ZWE1VUxMLCAweGM0NmVmMzk1YWFjNGM0MzdVTEwsCisJMHgwMzE4MGYwNjFiMDMwMzBjVUxMLCAweDU2OGExM2FjZGM1NjU2NDVVTEwsIDB4NDQxYTQ5ODg1ZTQ0NDQwZFVMTCwKKwkweDdmZGY5ZWZlYTA3ZjdmZTFVTEwsIDB4YTkyMTM3NGY4OGE5YTk5ZVVMTCwgMHgyYTRkODI1NDY3MmEyYWE4VUxMLAorCTB4YmJiMTZkNmIwYWJiYmJkNlVMTCwgMHhjMTQ2ZTI5Zjg3YzFjMTIzVUxMLCAweDUzYTIwMmE2ZjE1MzUzNTFVTEwsCisJMHhkY2FlOGJhNTcyZGNkYzU3VUxMLCAweDBiNTgyNzE2NTMwYjBiMmNVTEwsIDB4OWQ5Y2QzMjcwMTlkOWQ0ZVVMTCwKKwkweDZjNDdjMWQ4MmI2YzZjYWRVTEwsIDB4MzE5NWY1NjJhNDMxMzFjNFVMTCwgMHg3NDg3YjllOGYzNzQ3NGNkVUxMLAorCTB4ZjZlMzA5ZjExNWY2ZjZmZlVMTCwgMHg0NjBhNDM4YzRjNDY0NjA1VUxMLCAweGFjMDkyNjQ1YTVhY2FjOGFVTEwsCisJMHg4OTNjOTcwZmI1ODk4OTFlVUxMLCAweDE0YTA0NDI4YjQxNDE0NTBVTEwsIDB4ZTE1YjQyZGZiYWUxZTFhM1VMTCwKKwkweDE2YjA0ZTJjYTYxNjE2NThVTEwsIDB4M2FjZGQyNzRmNzNhM2FlOFVMTCwgMHg2OTZmZDBkMjA2Njk2OWI5VUxMLAorCTB4MDk0ODJkMTI0MTA5MDkyNFVMTCwgMHg3MGE3YWRlMGQ3NzA3MGRkVUxMLCAweGI2ZDk1NDcxNmZiNmI2ZTJVTEwsCisJMHhkMGNlYjdiZDFlZDBkMDY3VUxMLCAweGVkM2I3ZWM3ZDZlZGVkOTNVTEwsIDB4Y2MyZWRiODVlMmNjY2MxN1VMTCwKKwkweDQyMmE1Nzg0Njg0MjQyMTVVTEwsIDB4OThiNGMyMmQyYzk4OTg1YVVMTCwgMHhhNDQ5MGU1NWVkYTRhNGFhVUxMLAorCTB4Mjg1ZDg4NTA3NTI4MjhhMFVMTCwgMHg1Y2RhMzFiODg2NWM1YzZkVUxMLCAweGY4OTMzZmVkNmJmOGY4YzdVTEwsCisJMHg4NjQ0YTQxMWMyODY4NjIyVUxMLAorfTsKKworc3RhdGljIGNvbnN0IHU2NCBDNlsyNTZdID0geworCTB4NjAxOGMwNzgzMGQ4MTgxOFVMTCwgMHg4YzIzMDVhZjQ2MjYyMzIzVUxMLCAweDNmYzY3ZWY5OTFiOGM2YzZVTEwsCisJMHg4N2U4MTM2ZmNkZmJlOGU4VUxMLCAweDI2ODc0Y2ExMTNjYjg3ODdVTEwsIDB4ZGFiOGE5NjI2ZDExYjhiOFVMTCwKKwkweDA0MDEwODA1MDIwOTAxMDFVTEwsIDB4MjE0ZjQyNmU5ZTBkNGY0ZlVMTCwgMHhkODM2YWRlZTZjOWIzNjM2VUxMLAorCTB4YTJhNjU5MDQ1MWZmYTZhNlVMTCwgMHg2ZmQyZGViZGI5MGNkMmQyVUxMLCAweGYzZjVmYjA2ZjcwZWY1ZjVVTEwsCisJMHhmOTc5ZWY4MGYyOTY3OTc5VUxMLCAweGExNmY1ZmNlZGUzMDZmNmZVTEwsIDB4N2U5MWZjZWYzZjZkOTE5MVVMTCwKKwkweDU1NTJhYTA3YTRmODUyNTJVTEwsIDB4OWQ2MDI3ZmRjMDQ3NjA2MFVMTCwgMHhjYWJjODk3NjY1MzViY2JjVUxMLAorCTB4NTY5YmFjY2QyYjM3OWI5YlVMTCwgMHgwMjhlMDQ4YzAxOGE4ZThlVUxMLCAweGI2YTM3MTE1NWJkMmEzYTNVTEwsCisJMHgzMDBjNjAzYzE4NmMwYzBjVUxMLCAweGYxN2JmZjhhZjY4NDdiN2JVTEwsIDB4ZDQzNWI1ZTE2YTgwMzUzNVVMTCwKKwkweDc0MWRlODY5M2FmNTFkMWRVTEwsIDB4YTdlMDUzNDdkZGIzZTBlMFVMTCwgMHg3YmQ3ZjZhY2IzMjFkN2Q3VUxMLAorCTB4MmZjMjVlZWQ5OTljYzJjMlVMTCwgMHhiODJlNmQ5NjVjNDMyZTJlVUxMLCAweDMxNGI2MjdhOTYyOTRiNGJVTEwsCisJMHhkZmZlYTMyMWUxNWRmZWZlVUxMLCAweDQxNTc4MjE2YWVkNTU3NTdVTEwsIDB4NTQxNWE4NDEyYWJkMTUxNVVMTCwKKwkweGMxNzc5ZmI2ZWVlODc3NzdVTEwsIDB4ZGMzN2E1ZWI2ZTkyMzczN1VMTCwgMHhiM2U1N2I1NmQ3OWVlNWU1VUxMLAorCTB4NDY5ZjhjZDkyMzEzOWY5ZlVMTCwgMHhlN2YwZDMxN2ZkMjNmMGYwVUxMLCAweDM1NGE2YTdmOTQyMDRhNGFVTEwsCisJMHg0ZmRhOWU5NWE5NDRkYWRhVUxMLCAweDdkNThmYTI1YjBhMjU4NThVTEwsIDB4MDNjOTA2Y2E4ZmNmYzljOVVMTCwKKwkweGE0Mjk1NThkNTI3YzI5MjlVTEwsIDB4MjgwYTUwMjIxNDVhMGEwYVVMTCwgMHhmZWIxZTE0ZjdmNTBiMWIxVUxMLAorCTB4YmFhMDY5MWE1ZGM5YTBhMFVMTCwgMHhiMTZiN2ZkYWQ2MTQ2YjZiVUxMLCAweDJlODU1Y2FiMTdkOTg1ODVVTEwsCisJMHhjZWJkODE3MzY3M2NiZGJkVUxMLCAweDY5NWRkMjM0YmE4ZjVkNWRVTEwsIDB4NDAxMDgwNTAyMDkwMTAxMFVMTCwKKwkweGY3ZjRmMzAzZjUwN2Y0ZjRVTEwsIDB4MGJjYjE2YzA4YmRkY2JjYlVMTCwgMHhmODNlZWRjNjdjZDMzZTNlVUxMLAorCTB4MTQwNTI4MTEwYTJkMDUwNVVMTCwgMHg4MTY3MWZlNmNlNzg2NzY3VUxMLCAweGI3ZTQ3MzUzZDU5N2U0ZTRVTEwsCisJMHg5YzI3MjViYjRlMDIyNzI3VUxMLCAweDE5NDEzMjU4ODI3MzQxNDFVTEwsIDB4MTY4YjJjOWQwYmE3OGI4YlVMTCwKKwkweGE2YTc1MTAxNTNmNmE3YTdVTEwsIDB4ZTk3ZGNmOTRmYWIyN2Q3ZFVMTCwgMHg2ZTk1ZGNmYjM3NDk5NTk1VUxMLAorCTB4NDdkODhlOWZhZDU2ZDhkOFVMTCwgMHhjYmZiOGIzMGViNzBmYmZiVUxMLCAweDlmZWUyMzcxYzFjZGVlZWVVTEwsCisJMHhlZDdjYzc5MWY4YmI3YzdjVUxMLCAweDg1NjYxN2UzY2M3MTY2NjZVTEwsIDB4NTNkZGE2OGVhNzdiZGRkZFVMTCwKKwkweDVjMTdiODRiMmVhZjE3MTdVTEwsIDB4MDE0NzAyNDY4ZTQ1NDc0N1VMTCwgMHg0MjllODRkYzIxMWE5ZTllVUxMLAorCTB4MGZjYTFlYzU4OWQ0Y2FjYVVMTCwgMHhiNDJkNzU5OTVhNTgyZDJkVUxMLCAweGM2YmY5MTc5NjMyZWJmYmZVTEwsCisJMHgxYzA3MzgxYjBlM2YwNzA3VUxMLCAweDhlYWQwMTIzNDdhY2FkYWRVTEwsIDB4NzU1YWVhMmZiNGIwNWE1YVVMTCwKKwkweDM2ODM2Y2I1MWJlZjgzODNVTEwsIDB4Y2MzMzg1ZmY2NmI2MzMzM1VMTCwgMHg5MTYzM2ZmMmM2NWM2MzYzVUxMLAorCTB4MDgwMjEwMGEwNDEyMDIwMlVMTCwgMHg5MmFhMzkzODQ5OTNhYWFhVUxMLCAweGQ5NzFhZmE4ZTJkZTcxNzFVTEwsCisJMHgwN2M4MGVjZjhkYzZjOGM4VUxMLCAweDY0MTljODdkMzJkMTE5MTlVTEwsIDB4Mzk0OTcyNzA5MjNiNDk0OVVMTCwKKwkweDQzZDk4NjlhYWY1ZmQ5ZDlVTEwsIDB4ZWZmMmMzMWRmOTMxZjJmMlVMTCwgMHhhYmUzNGI0OGRiYThlM2UzVUxMLAorCTB4NzE1YmUyMmFiNmI5NWI1YlVMTCwgMHgxYTg4MzQ5MjBkYmM4ODg4VUxMLCAweDUyOWFhNGM4MjkzZTlhOWFVTEwsCisJMHg5ODI2MmRiZTRjMGIyNjI2VUxMLCAweGM4MzI4ZGZhNjRiZjMyMzJVTEwsIDB4ZmFiMGU5NGE3ZDU5YjBiMFVMTCwKKwkweDgzZTkxYjZhY2ZmMmU5ZTlVTEwsIDB4M2MwZjc4MzMxZTc3MGYwZlVMTCwgMHg3M2Q1ZTZhNmI3MzNkNWQ1VUxMLAorCTB4M2E4MDc0YmExZGY0ODA4MFVMTCwgMHhjMmJlOTk3YzYxMjdiZWJlVUxMLCAweDEzY2QyNmRlODdlYmNkY2RVTEwsCisJMHhkMDM0YmRlNDY4ODkzNDM0VUxMLCAweDNkNDg3YTc1OTAzMjQ4NDhVTEwsIDB4ZGJmZmFiMjRlMzU0ZmZmZlVMTCwKKwkweGY1N2FmNzhmZjQ4ZDdhN2FVTEwsIDB4N2E5MGY0ZWEzZDY0OTA5MFVMTCwgMHg2MTVmYzIzZWJlOWQ1ZjVmVUxMLAorCTB4ODAyMDFkYTA0MDNkMjAyMFVMTCwgMHhiZDY4NjdkNWQwMGY2ODY4VUxMLCAweDY4MWFkMDcyMzRjYTFhMWFVTEwsCisJMHg4MmFlMTkyYzQxYjdhZWFlVUxMLCAweGVhYjRjOTVlNzU3ZGI0YjRVTEwsIDB4NGQ1NDlhMTlhOGNlNTQ1NFVMTCwKKwkweDc2OTNlY2U1M2I3ZjkzOTNVTEwsIDB4ODgyMjBkYWE0NDJmMjIyMlVMTCwgMHg4ZDY0MDdlOWM4NjM2NDY0VUxMLAorCTB4ZTNmMWRiMTJmZjJhZjFmMVVMTCwgMHhkMTczYmZhMmU2Y2M3MzczVUxMLCAweDQ4MTI5MDVhMjQ4MjEyMTJVTEwsCisJMHgxZDQwM2E1ZDgwN2E0MDQwVUxMLCAweDIwMDg0MDI4MTA0ODA4MDhVTEwsIDB4MmJjMzU2ZTg5Yjk1YzNjM1VMTCwKKwkweDk3ZWMzMzdiYzVkZmVjZWNVTEwsIDB4NGJkYjk2OTBhYjRkZGJkYlVMTCwgMHhiZWExNjExZjVmYzBhMWExVUxMLAorCTB4MGU4ZDFjODMwNzkxOGQ4ZFVMTCwgMHhmNDNkZjVjOTdhYzgzZDNkVUxMLCAweDY2OTdjY2YxMzM1Yjk3OTdVTEwsCisJMHgwMDAwMDAwMDAwMDAwMDAwVUxMLCAweDFiY2YzNmQ0ODNmOWNmY2ZVTEwsIDB4YWMyYjQ1ODc1NjZlMmIyYlVMTCwKKwkweGM1NzY5N2IzZWNlMTc2NzZVTEwsIDB4MzI4MjY0YjAxOWU2ODI4MlVMTCwgMHg3ZmQ2ZmVhOWIxMjhkNmQ2VUxMLAorCTB4NmMxYmQ4NzczNmMzMWIxYlVMTCwgMHhlZWI1YzE1Yjc3NzRiNWI1VUxMLCAweDg2YWYxMTI5NDNiZWFmYWZVTEwsCisJMHhiNTZhNzdkZmQ0MWQ2YTZhVUxMLCAweDVkNTBiYTBkYTBlYTUwNTBVTEwsIDB4MDk0NTEyNGM4YTU3NDU0NVVMTCwKKwkweGViZjNjYjE4ZmIzOGYzZjNVTEwsIDB4YzAzMDlkZjA2MGFkMzAzMFVMTCwgMHg5YmVmMmI3NGMzYzRlZmVmVUxMLAorCTB4ZmMzZmU1YzM3ZWRhM2YzZlVMTCwgMHg0OTU1OTIxY2FhYzc1NTU1VUxMLCAweGIyYTI3OTEwNTlkYmEyYTJVTEwsCisJMHg4ZmVhMDM2NWM5ZTllYWVhVUxMLCAweDg5NjUwZmVjY2E2YTY1NjVVTEwsIDB4ZDJiYWI5Njg2OTAzYmFiYVVMTCwKKwkweGJjMmY2NTkzNWU0YTJmMmZVTEwsIDB4MjdjMDRlZTc5ZDhlYzBjMFVMTCwgMHg1ZmRlYmU4MWExNjBkZWRlVUxMLAorCTB4NzAxY2UwNmMzOGZjMWMxY1VMTCwgMHhkM2ZkYmIyZWU3NDZmZGZkVUxMLCAweDI5NGQ1MjY0OWExZjRkNGRVTEwsCisJMHg3MjkyZTRlMDM5NzY5MjkyVUxMLCAweGM5NzU4ZmJjZWFmYTc1NzVVTEwsIDB4MTgwNjMwMWUwYzM2MDYwNlVMTCwKKwkweDEyOGEyNDk4MDlhZThhOGFVTEwsIDB4ZjJiMmY5NDA3OTRiYjJiMlVMTCwgMHhiZmU2NjM1OWQxODVlNmU2VUxMLAorCTB4MzgwZTcwMzYxYzdlMGUwZVVMTCwgMHg3YzFmZjg2MzNlZTcxZjFmVUxMLCAweDk1NjIzN2Y3YzQ1NTYyNjJVTEwsCisJMHg3N2Q0ZWVhM2I1M2FkNGQ0VUxMLCAweDlhYTgyOTMyNGQ4MWE4YThVTEwsIDB4NjI5NmM0ZjQzMTUyOTY5NlVMTCwKKwkweGMzZjk5YjNhZWY2MmY5ZjlVTEwsIDB4MzNjNTY2ZjY5N2EzYzVjNVVMTCwgMHg5NDI1MzViMTRhMTAyNTI1VUxMLAorCTB4Nzk1OWYyMjBiMmFiNTk1OVVMTCwgMHgyYTg0NTRhZTE1ZDA4NDg0VUxMLCAweGQ1NzJiN2E3ZTRjNTcyNzJVTEwsCisJMHhlNDM5ZDVkZDcyZWMzOTM5VUxMLCAweDJkNGM1YTYxOTgxNjRjNGNVTEwsIDB4NjU1ZWNhM2JiYzk0NWU1ZVVMTCwKKwkweGZkNzhlNzg1ZjA5Zjc4NzhVTEwsIDB4ZTAzOGRkZDg3MGU1MzgzOFVMTCwgMHgwYThjMTQ4NjA1OTg4YzhjVUxMLAorCTB4NjNkMWM2YjJiZjE3ZDFkMVVMTCwgMHhhZWE1NDEwYjU3ZTRhNWE1VUxMLCAweGFmZTI0MzRkZDlhMWUyZTJVTEwsCisJMHg5OTYxMmZmOGMyNGU2MTYxVUxMLCAweGY2YjNmMTQ1N2I0MmIzYjNVTEwsIDB4ODQyMTE1YTU0MjM0MjEyMVVMTCwKKwkweDRhOWM5NGQ2MjUwODljOWNVTEwsIDB4NzgxZWYwNjYzY2VlMWUxZVVMTCwgMHgxMTQzMjI1Mjg2NjE0MzQzVUxMLAorCTB4M2JjNzc2ZmM5M2IxYzdjN1VMTCwgMHhkN2ZjYjMyYmU1NGZmY2ZjVUxMLCAweDEwMDQyMDE0MDgyNDA0MDRVTEwsCisJMHg1OTUxYjIwOGEyZTM1MTUxVUxMLCAweDVlOTliY2M3MmYyNTk5OTlVTEwsIDB4YTk2ZDRmYzRkYTIyNmQ2ZFVMTCwKKwkweDM0MGQ2ODM5MWE2NTBkMGRVTEwsIDB4Y2ZmYTgzMzVlOTc5ZmFmYVVMTCwgMHg1YmRmYjY4NGEzNjlkZmRmVUxMLAorCTB4ZTU3ZWQ3OWJmY2E5N2U3ZVVMTCwgMHg5MDI0M2RiNDQ4MTkyNDI0VUxMLCAweGVjM2JjNWQ3NzZmZTNiM2JVTEwsCisJMHg5NmFiMzEzZDRiOWFhYmFiVUxMLCAweDFmY2UzZWQxODFmMGNlY2VVTEwsIDB4NDQxMTg4NTUyMjk5MTExMVVMTCwKKwkweDA2OGYwYzg5MDM4MzhmOGZVTEwsIDB4MjU0ZTRhNmI5YzA0NGU0ZVVMTCwgMHhlNmI3ZDE1MTczNjZiN2I3VUxMLAorCTB4OGJlYjBiNjBjYmUwZWJlYlVMTCwgMHhmMDNjZmRjYzc4YzEzYzNjVUxMLCAweDNlODE3Y2JmMWZmZDgxODFVTEwsCisJMHg2YTk0ZDRmZTM1NDA5NDk0VUxMLCAweGZiZjdlYjBjZjMxY2Y3ZjdVTEwsIDB4ZGViOWExNjc2ZjE4YjliOVVMTCwKKwkweDRjMTM5ODVmMjY4YjEzMTNVTEwsIDB4YjAyYzdkOWM1ODUxMmMyY1VMTCwgMHg2YmQzZDZiOGJiMDVkM2QzVUxMLAorCTB4YmJlNzZiNWNkMzhjZTdlN1VMTCwgMHhhNTZlNTdjYmRjMzk2ZTZlVUxMLCAweDM3YzQ2ZWYzOTVhYWM0YzRVTEwsCisJMHgwYzAzMTgwZjA2MWIwMzAzVUxMLCAweDQ1NTY4YTEzYWNkYzU2NTZVTEwsIDB4MGQ0NDFhNDk4ODVlNDQ0NFVMTCwKKwkweGUxN2ZkZjllZmVhMDdmN2ZVTEwsIDB4OWVhOTIxMzc0Zjg4YTlhOVVMTCwgMHhhODJhNGQ4MjU0NjcyYTJhVUxMLAorCTB4ZDZiYmIxNmQ2YjBhYmJiYlVMTCwgMHgyM2MxNDZlMjlmODdjMWMxVUxMLCAweDUxNTNhMjAyYTZmMTUzNTNVTEwsCisJMHg1N2RjYWU4YmE1NzJkY2RjVUxMLCAweDJjMGI1ODI3MTY1MzBiMGJVTEwsIDB4NGU5ZDljZDMyNzAxOWQ5ZFVMTCwKKwkweGFkNmM0N2MxZDgyYjZjNmNVTEwsIDB4YzQzMTk1ZjU2MmE0MzEzMVVMTCwgMHhjZDc0ODdiOWU4ZjM3NDc0VUxMLAorCTB4ZmZmNmUzMDlmMTE1ZjZmNlVMTCwgMHgwNTQ2MGE0MzhjNGM0NjQ2VUxMLCAweDhhYWMwOTI2NDVhNWFjYWNVTEwsCisJMHgxZTg5M2M5NzBmYjU4OTg5VUxMLCAweDUwMTRhMDQ0MjhiNDE0MTRVTEwsIDB4YTNlMTViNDJkZmJhZTFlMVVMTCwKKwkweDU4MTZiMDRlMmNhNjE2MTZVTEwsIDB4ZTgzYWNkZDI3NGY3M2EzYVVMTCwgMHhiOTY5NmZkMGQyMDY2OTY5VUxMLAorCTB4MjQwOTQ4MmQxMjQxMDkwOVVMTCwgMHhkZDcwYTdhZGUwZDc3MDcwVUxMLCAweGUyYjZkOTU0NzE2ZmI2YjZVTEwsCisJMHg2N2QwY2ViN2JkMWVkMGQwVUxMLCAweDkzZWQzYjdlYzdkNmVkZWRVTEwsIDB4MTdjYzJlZGI4NWUyY2NjY1VMTCwKKwkweDE1NDIyYTU3ODQ2ODQyNDJVTEwsIDB4NWE5OGI0YzIyZDJjOTg5OFVMTCwgMHhhYWE0NDkwZTU1ZWRhNGE0VUxMLAorCTB4YTAyODVkODg1MDc1MjgyOFVMTCwgMHg2ZDVjZGEzMWI4ODY1YzVjVUxMLCAweGM3Zjg5MzNmZWQ2YmY4ZjhVTEwsCisJMHgyMjg2NDRhNDExYzI4Njg2VUxMLAorfTsKKworc3RhdGljIGNvbnN0IHU2NCBDN1syNTZdID0geworCTB4MTg2MDE4YzA3ODMwZDgxOFVMTCwgMHgyMzhjMjMwNWFmNDYyNjIzVUxMLCAweGM2M2ZjNjdlZjk5MWI4YzZVTEwsCisJMHhlODg3ZTgxMzZmY2RmYmU4VUxMLCAweDg3MjY4NzRjYTExM2NiODdVTEwsIDB4YjhkYWI4YTk2MjZkMTFiOFVMTCwKKwkweDAxMDQwMTA4MDUwMjA5MDFVTEwsIDB4NGYyMTRmNDI2ZTllMGQ0ZlVMTCwgMHgzNmQ4MzZhZGVlNmM5YjM2VUxMLAorCTB4YTZhMmE2NTkwNDUxZmZhNlVMTCwgMHhkMjZmZDJkZWJkYjkwY2QyVUxMLCAweGY1ZjNmNWZiMDZmNzBlZjVVTEwsCisJMHg3OWY5NzllZjgwZjI5Njc5VUxMLCAweDZmYTE2ZjVmY2VkZTMwNmZVTEwsIDB4OTE3ZTkxZmNlZjNmNmQ5MVVMTCwKKwkweDUyNTU1MmFhMDdhNGY4NTJVTEwsIDB4NjA5ZDYwMjdmZGMwNDc2MFVMTCwgMHhiY2NhYmM4OTc2NjUzNWJjVUxMLAorCTB4OWI1NjliYWNjZDJiMzc5YlVMTCwgMHg4ZTAyOGUwNDhjMDE4YThlVUxMLCAweGEzYjZhMzcxMTU1YmQyYTNVTEwsCisJMHgwYzMwMGM2MDNjMTg2YzBjVUxMLCAweDdiZjE3YmZmOGFmNjg0N2JVTEwsIDB4MzVkNDM1YjVlMTZhODAzNVVMTCwKKwkweDFkNzQxZGU4NjkzYWY1MWRVTEwsIDB4ZTBhN2UwNTM0N2RkYjNlMFVMTCwgMHhkNzdiZDdmNmFjYjMyMWQ3VUxMLAorCTB4YzIyZmMyNWVlZDk5OWNjMlVMTCwgMHgyZWI4MmU2ZDk2NWM0MzJlVUxMLCAweDRiMzE0YjYyN2E5NjI5NGJVTEwsCisJMHhmZWRmZmVhMzIxZTE1ZGZlVUxMLCAweDU3NDE1NzgyMTZhZWQ1NTdVTEwsIDB4MTU1NDE1YTg0MTJhYmQxNVVMTCwKKwkweDc3YzE3NzlmYjZlZWU4NzdVTEwsIDB4MzdkYzM3YTVlYjZlOTIzN1VMTCwgMHhlNWIzZTU3YjU2ZDc5ZWU1VUxMLAorCTB4OWY0NjlmOGNkOTIzMTM5ZlVMTCwgMHhmMGU3ZjBkMzE3ZmQyM2YwVUxMLCAweDRhMzU0YTZhN2Y5NDIwNGFVTEwsCisJMHhkYTRmZGE5ZTk1YTk0NGRhVUxMLCAweDU4N2Q1OGZhMjViMGEyNThVTEwsIDB4YzkwM2M5MDZjYThmY2ZjOVVMTCwKKwkweDI5YTQyOTU1OGQ1MjdjMjlVTEwsIDB4MGEyODBhNTAyMjE0NWEwYVVMTCwgMHhiMWZlYjFlMTRmN2Y1MGIxVUxMLAorCTB4YTBiYWEwNjkxYTVkYzlhMFVMTCwgMHg2YmIxNmI3ZmRhZDYxNDZiVUxMLCAweDg1MmU4NTVjYWIxN2Q5ODVVTEwsCisJMHhiZGNlYmQ4MTczNjczY2JkVUxMLCAweDVkNjk1ZGQyMzRiYThmNWRVTEwsIDB4MTA0MDEwODA1MDIwOTAxMFVMTCwKKwkweGY0ZjdmNGYzMDNmNTA3ZjRVTEwsIDB4Y2IwYmNiMTZjMDhiZGRjYlVMTCwgMHgzZWY4M2VlZGM2N2NkMzNlVUxMLAorCTB4MDUxNDA1MjgxMTBhMmQwNVVMTCwgMHg2NzgxNjcxZmU2Y2U3ODY3VUxMLCAweGU0YjdlNDczNTNkNTk3ZTRVTEwsCisJMHgyNzljMjcyNWJiNGUwMjI3VUxMLCAweDQxMTk0MTMyNTg4MjczNDFVTEwsIDB4OGIxNjhiMmM5ZDBiYTc4YlVMTCwKKwkweGE3YTZhNzUxMDE1M2Y2YTdVTEwsIDB4N2RlOTdkY2Y5NGZhYjI3ZFVMTCwgMHg5NTZlOTVkY2ZiMzc0OTk1VUxMLAorCTB4ZDg0N2Q4OGU5ZmFkNTZkOFVMTCwgMHhmYmNiZmI4YjMwZWI3MGZiVUxMLCAweGVlOWZlZTIzNzFjMWNkZWVVTEwsCisJMHg3Y2VkN2NjNzkxZjhiYjdjVUxMLCAweDY2ODU2NjE3ZTNjYzcxNjZVTEwsIDB4ZGQ1M2RkYTY4ZWE3N2JkZFVMTCwKKwkweDE3NWMxN2I4NGIyZWFmMTdVTEwsIDB4NDcwMTQ3MDI0NjhlNDU0N1VMTCwgMHg5ZTQyOWU4NGRjMjExYTllVUxMLAorCTB4Y2EwZmNhMWVjNTg5ZDRjYVVMTCwgMHgyZGI0MmQ3NTk5NWE1ODJkVUxMLCAweGJmYzZiZjkxNzk2MzJlYmZVTEwsCisJMHgwNzFjMDczODFiMGUzZjA3VUxMLCAweGFkOGVhZDAxMjM0N2FjYWRVTEwsIDB4NWE3NTVhZWEyZmI0YjA1YVVMTCwKKwkweDgzMzY4MzZjYjUxYmVmODNVTEwsIDB4MzNjYzMzODVmZjY2YjYzM1VMTCwgMHg2MzkxNjMzZmYyYzY1YzYzVUxMLAorCTB4MDIwODAyMTAwYTA0MTIwMlVMTCwgMHhhYTkyYWEzOTM4NDk5M2FhVUxMLCAweDcxZDk3MWFmYThlMmRlNzFVTEwsCisJMHhjODA3YzgwZWNmOGRjNmM4VUxMLCAweDE5NjQxOWM4N2QzMmQxMTlVTEwsIDB4NDkzOTQ5NzI3MDkyM2I0OVVMTCwKKwkweGQ5NDNkOTg2OWFhZjVmZDlVTEwsIDB4ZjJlZmYyYzMxZGY5MzFmMlVMTCwgMHhlM2FiZTM0YjQ4ZGJhOGUzVUxMLAorCTB4NWI3MTViZTIyYWI2Yjk1YlVMTCwgMHg4ODFhODgzNDkyMGRiYzg4VUxMLCAweDlhNTI5YWE0YzgyOTNlOWFVTEwsCisJMHgyNjk4MjYyZGJlNGMwYjI2VUxMLCAweDMyYzgzMjhkZmE2NGJmMzJVTEwsIDB4YjBmYWIwZTk0YTdkNTliMFVMTCwKKwkweGU5ODNlOTFiNmFjZmYyZTlVTEwsIDB4MGYzYzBmNzgzMzFlNzcwZlVMTCwgMHhkNTczZDVlNmE2YjczM2Q1VUxMLAorCTB4ODAzYTgwNzRiYTFkZjQ4MFVMTCwgMHhiZWMyYmU5OTdjNjEyN2JlVUxMLCAweGNkMTNjZDI2ZGU4N2ViY2RVTEwsCisJMHgzNGQwMzRiZGU0Njg4OTM0VUxMLCAweDQ4M2Q0ODdhNzU5MDMyNDhVTEwsIDB4ZmZkYmZmYWIyNGUzNTRmZlVMTCwKKwkweDdhZjU3YWY3OGZmNDhkN2FVTEwsIDB4OTA3YTkwZjRlYTNkNjQ5MFVMTCwgMHg1ZjYxNWZjMjNlYmU5ZDVmVUxMLAorCTB4MjA4MDIwMWRhMDQwM2QyMFVMTCwgMHg2OGJkNjg2N2Q1ZDAwZjY4VUxMLCAweDFhNjgxYWQwNzIzNGNhMWFVTEwsCisJMHhhZTgyYWUxOTJjNDFiN2FlVUxMLCAweGI0ZWFiNGM5NWU3NTdkYjRVTEwsIDB4NTQ0ZDU0OWExOWE4Y2U1NFVMTCwKKwkweDkzNzY5M2VjZTUzYjdmOTNVTEwsIDB4MjI4ODIyMGRhYTQ0MmYyMlVMTCwgMHg2NDhkNjQwN2U5Yzg2MzY0VUxMLAorCTB4ZjFlM2YxZGIxMmZmMmFmMVVMTCwgMHg3M2QxNzNiZmEyZTZjYzczVUxMLCAweDEyNDgxMjkwNWEyNDgyMTJVTEwsCisJMHg0MDFkNDAzYTVkODA3YTQwVUxMLCAweDA4MjAwODQwMjgxMDQ4MDhVTEwsIDB4YzMyYmMzNTZlODliOTVjM1VMTCwKKwkweGVjOTdlYzMzN2JjNWRmZWNVTEwsIDB4ZGI0YmRiOTY5MGFiNGRkYlVMTCwgMHhhMWJlYTE2MTFmNWZjMGExVUxMLAorCTB4OGQwZThkMWM4MzA3OTE4ZFVMTCwgMHgzZGY0M2RmNWM5N2FjODNkVUxMLCAweDk3NjY5N2NjZjEzMzViOTdVTEwsCisJMHgwMDAwMDAwMDAwMDAwMDAwVUxMLCAweGNmMWJjZjM2ZDQ4M2Y5Y2ZVTEwsIDB4MmJhYzJiNDU4NzU2NmUyYlVMTCwKKwkweDc2YzU3Njk3YjNlY2UxNzZVTEwsIDB4ODIzMjgyNjRiMDE5ZTY4MlVMTCwgMHhkNjdmZDZmZWE5YjEyOGQ2VUxMLAorCTB4MWI2YzFiZDg3NzM2YzMxYlVMTCwgMHhiNWVlYjVjMTViNzc3NGI1VUxMLCAweGFmODZhZjExMjk0M2JlYWZVTEwsCisJMHg2YWI1NmE3N2RmZDQxZDZhVUxMLCAweDUwNWQ1MGJhMGRhMGVhNTBVTEwsIDB4NDUwOTQ1MTI0YzhhNTc0NVVMTCwKKwkweGYzZWJmM2NiMThmYjM4ZjNVTEwsIDB4MzBjMDMwOWRmMDYwYWQzMFVMTCwgMHhlZjliZWYyYjc0YzNjNGVmVUxMLAorCTB4M2ZmYzNmZTVjMzdlZGEzZlVMTCwgMHg1NTQ5NTU5MjFjYWFjNzU1VUxMLCAweGEyYjJhMjc5MTA1OWRiYTJVTEwsCisJMHhlYThmZWEwMzY1YzllOWVhVUxMLCAweDY1ODk2NTBmZWNjYTZhNjVVTEwsIDB4YmFkMmJhYjk2ODY5MDNiYVVMTCwKKwkweDJmYmMyZjY1OTM1ZTRhMmZVTEwsIDB4YzAyN2MwNGVlNzlkOGVjMFVMTCwgMHhkZTVmZGViZTgxYTE2MGRlVUxMLAorCTB4MWM3MDFjZTA2YzM4ZmMxY1VMTCwgMHhmZGQzZmRiYjJlZTc0NmZkVUxMLCAweDRkMjk0ZDUyNjQ5YTFmNGRVTEwsCisJMHg5MjcyOTJlNGUwMzk3NjkyVUxMLCAweDc1Yzk3NThmYmNlYWZhNzVVTEwsIDB4MDYxODA2MzAxZTBjMzYwNlVMTCwKKwkweDhhMTI4YTI0OTgwOWFlOGFVTEwsIDB4YjJmMmIyZjk0MDc5NGJiMlVMTCwgMHhlNmJmZTY2MzU5ZDE4NWU2VUxMLAorCTB4MGUzODBlNzAzNjFjN2UwZVVMTCwgMHgxZjdjMWZmODYzM2VlNzFmVUxMLCAweDYyOTU2MjM3ZjdjNDU1NjJVTEwsCisJMHhkNDc3ZDRlZWEzYjUzYWQ0VUxMLCAweGE4OWFhODI5MzI0ZDgxYThVTEwsIDB4OTY2Mjk2YzRmNDMxNTI5NlVMTCwKKwkweGY5YzNmOTliM2FlZjYyZjlVTEwsIDB4YzUzM2M1NjZmNjk3YTNjNVVMTCwgMHgyNTk0MjUzNWIxNGExMDI1VUxMLAorCTB4NTk3OTU5ZjIyMGIyYWI1OVVMTCwgMHg4NDJhODQ1NGFlMTVkMDg0VUxMLCAweDcyZDU3MmI3YTdlNGM1NzJVTEwsCisJMHgzOWU0MzlkNWRkNzJlYzM5VUxMLCAweDRjMmQ0YzVhNjE5ODE2NGNVTEwsIDB4NWU2NTVlY2EzYmJjOTQ1ZVVMTCwKKwkweDc4ZmQ3OGU3ODVmMDlmNzhVTEwsIDB4MzhlMDM4ZGRkODcwZTUzOFVMTCwgMHg4YzBhOGMxNDg2MDU5ODhjVUxMLAorCTB4ZDE2M2QxYzZiMmJmMTdkMVVMTCwgMHhhNWFlYTU0MTBiNTdlNGE1VUxMLCAweGUyYWZlMjQzNGRkOWExZTJVTEwsCisJMHg2MTk5NjEyZmY4YzI0ZTYxVUxMLCAweGIzZjZiM2YxNDU3YjQyYjNVTEwsIDB4MjE4NDIxMTVhNTQyMzQyMVVMTCwKKwkweDljNGE5Yzk0ZDYyNTA4OWNVTEwsIDB4MWU3ODFlZjA2NjNjZWUxZVVMTCwgMHg0MzExNDMyMjUyODY2MTQzVUxMLAorCTB4YzczYmM3NzZmYzkzYjFjN1VMTCwgMHhmY2Q3ZmNiMzJiZTU0ZmZjVUxMLCAweDA0MTAwNDIwMTQwODI0MDRVTEwsCisJMHg1MTU5NTFiMjA4YTJlMzUxVUxMLCAweDk5NWU5OWJjYzcyZjI1OTlVTEwsIDB4NmRhOTZkNGZjNGRhMjI2ZFVMTCwKKwkweDBkMzQwZDY4MzkxYTY1MGRVTEwsIDB4ZmFjZmZhODMzNWU5NzlmYVVMTCwgMHhkZjViZGZiNjg0YTM2OWRmVUxMLAorCTB4N2VlNTdlZDc5YmZjYTk3ZVVMTCwgMHgyNDkwMjQzZGI0NDgxOTI0VUxMLCAweDNiZWMzYmM1ZDc3NmZlM2JVTEwsCisJMHhhYjk2YWIzMTNkNGI5YWFiVUxMLCAweGNlMWZjZTNlZDE4MWYwY2VVTEwsIDB4MTE0NDExODg1NTIyOTkxMVVMTCwKKwkweDhmMDY4ZjBjODkwMzgzOGZVTEwsIDB4NGUyNTRlNGE2YjljMDQ0ZVVMTCwgMHhiN2U2YjdkMTUxNzM2NmI3VUxMLAorCTB4ZWI4YmViMGI2MGNiZTBlYlVMTCwgMHgzY2YwM2NmZGNjNzhjMTNjVUxMLCAweDgxM2U4MTdjYmYxZmZkODFVTEwsCisJMHg5NDZhOTRkNGZlMzU0MDk0VUxMLCAweGY3ZmJmN2ViMGNmMzFjZjdVTEwsIDB4YjlkZWI5YTE2NzZmMThiOVVMTCwKKwkweDEzNGMxMzk4NWYyNjhiMTNVTEwsIDB4MmNiMDJjN2Q5YzU4NTEyY1VMTCwgMHhkMzZiZDNkNmI4YmIwNWQzVUxMLAorCTB4ZTdiYmU3NmI1Y2QzOGNlN1VMTCwgMHg2ZWE1NmU1N2NiZGMzOTZlVUxMLCAweGM0MzdjNDZlZjM5NWFhYzRVTEwsCisJMHgwMzBjMDMxODBmMDYxYjAzVUxMLCAweDU2NDU1NjhhMTNhY2RjNTZVTEwsIDB4NDQwZDQ0MWE0OTg4NWU0NFVMTCwKKwkweDdmZTE3ZmRmOWVmZWEwN2ZVTEwsIDB4YTk5ZWE5MjEzNzRmODhhOVVMTCwgMHgyYWE4MmE0ZDgyNTQ2NzJhVUxMLAorCTB4YmJkNmJiYjE2ZDZiMGFiYlVMTCwgMHhjMTIzYzE0NmUyOWY4N2MxVUxMLCAweDUzNTE1M2EyMDJhNmYxNTNVTEwsCisJMHhkYzU3ZGNhZThiYTU3MmRjVUxMLCAweDBiMmMwYjU4MjcxNjUzMGJVTEwsIDB4OWQ0ZTlkOWNkMzI3MDE5ZFVMTCwKKwkweDZjYWQ2YzQ3YzFkODJiNmNVTEwsIDB4MzFjNDMxOTVmNTYyYTQzMVVMTCwgMHg3NGNkNzQ4N2I5ZThmMzc0VUxMLAorCTB4ZjZmZmY2ZTMwOWYxMTVmNlVMTCwgMHg0NjA1NDYwYTQzOGM0YzQ2VUxMLCAweGFjOGFhYzA5MjY0NWE1YWNVTEwsCisJMHg4OTFlODkzYzk3MGZiNTg5VUxMLCAweDE0NTAxNGEwNDQyOGI0MTRVTEwsIDB4ZTFhM2UxNWI0MmRmYmFlMVVMTCwKKwkweDE2NTgxNmIwNGUyY2E2MTZVTEwsIDB4M2FlODNhY2RkMjc0ZjczYVVMTCwgMHg2OWI5Njk2ZmQwZDIwNjY5VUxMLAorCTB4MDkyNDA5NDgyZDEyNDEwOVVMTCwgMHg3MGRkNzBhN2FkZTBkNzcwVUxMLCAweGI2ZTJiNmQ5NTQ3MTZmYjZVTEwsCisJMHhkMDY3ZDBjZWI3YmQxZWQwVUxMLCAweGVkOTNlZDNiN2VjN2Q2ZWRVTEwsIDB4Y2MxN2NjMmVkYjg1ZTJjY1VMTCwKKwkweDQyMTU0MjJhNTc4NDY4NDJVTEwsIDB4OTg1YTk4YjRjMjJkMmM5OFVMTCwgMHhhNGFhYTQ0OTBlNTVlZGE0VUxMLAorCTB4MjhhMDI4NWQ4ODUwNzUyOFVMTCwgMHg1YzZkNWNkYTMxYjg4NjVjVUxMLCAweGY4YzdmODkzM2ZlZDZiZjhVTEwsCisJMHg4NjIyODY0NGE0MTFjMjg2VUxMLAorfTsKKworc3RhdGljIGNvbnN0IHU2NCByY1tXSElSTFBPT0xfUk9VTkRTICsgMV0gPSB7CisJMHgwMDAwMDAwMDAwMDAwMDAwVUxMLCAweDE4MjNjNmU4ODdiODAxNGZVTEwsIDB4MzZhNmQyZjU3OTZmOTE1MlVMTCwKKwkweDYwYmM5YjhlYTMwYzdiMzVVTEwsIDB4MWRlMGQ3YzIyZTRiZmU1N1VMTCwgMHgxNTc3MzdlNTlmZjA0YWRhVUxMLAorCTB4NThjOTI5MGFiMWEwNmI4NVVMTCwgMHhiZDVkMTBmNGNiM2UwNTY3VUxMLCAweGU0Mjc0MThiYTc3ZDk1ZDhVTEwsCisJMHhmYmVlN2M2NmRkMTc0NzllVUxMLCAweGNhMmRiZjA3YWQ1YTgzMzNVTEwsCit9OworCisvKioKKyAqIFRoZSBjb3JlIFdoaXJscG9vbCB0cmFuc2Zvcm0uCisgKi8KKworc3RhdGljIHZvaWQgd3A1MTJfcHJvY2Vzc19idWZmZXIoc3RydWN0IHdwNTEyX2N0eCAqd2N0eCkgeworCWludCBpLCByOworCXU2NCBLWzhdOyAgICAgICAgLyogdGhlIHJvdW5kIGtleSAqLworCXU2NCBibG9ja1s4XTsgICAgLyogbXUoYnVmZmVyKSAqLworCXU2NCBzdGF0ZVs4XTsgICAgLyogdGhlIGNpcGhlciBzdGF0ZSAqLworCXU2NCBMWzhdOworCXU4ICpidWZmZXIgPSB3Y3R4LT5idWZmZXI7CisKKwlmb3IgKGkgPSAwOyBpIDwgODsgaSsrLCBidWZmZXIgKz0gOCkgeworCQlibG9ja1tpXSA9CisJCSgoKHU2NClidWZmZXJbMF0gICAgICAgICkgPDwgNTYpIF4KKwkJKCgodTY0KWJ1ZmZlclsxXSAmIDB4ZmZMKSA8PCA0OCkgXgorCQkoKCh1NjQpYnVmZmVyWzJdICYgMHhmZkwpIDw8IDQwKSBeCisJCSgoKHU2NClidWZmZXJbM10gJiAweGZmTCkgPDwgMzIpIF4KKwkJKCgodTY0KWJ1ZmZlcls0XSAmIDB4ZmZMKSA8PCAyNCkgXgorCQkoKCh1NjQpYnVmZmVyWzVdICYgMHhmZkwpIDw8IDE2KSBeCisJCSgoKHU2NClidWZmZXJbNl0gJiAweGZmTCkgPDwgIDgpIF4KKwkJKCgodTY0KWJ1ZmZlcls3XSAmIDB4ZmZMKSAgICAgICk7CisJfQorCisJc3RhdGVbMF0gPSBibG9ja1swXSBeIChLWzBdID0gd2N0eC0+aGFzaFswXSk7CisJc3RhdGVbMV0gPSBibG9ja1sxXSBeIChLWzFdID0gd2N0eC0+aGFzaFsxXSk7CisJc3RhdGVbMl0gPSBibG9ja1syXSBeIChLWzJdID0gd2N0eC0+aGFzaFsyXSk7CisJc3RhdGVbM10gPSBibG9ja1szXSBeIChLWzNdID0gd2N0eC0+aGFzaFszXSk7CisJc3RhdGVbNF0gPSBibG9ja1s0XSBeIChLWzRdID0gd2N0eC0+aGFzaFs0XSk7CisJc3RhdGVbNV0gPSBibG9ja1s1XSBeIChLWzVdID0gd2N0eC0+aGFzaFs1XSk7CisJc3RhdGVbNl0gPSBibG9ja1s2XSBeIChLWzZdID0gd2N0eC0+aGFzaFs2XSk7CisJc3RhdGVbN10gPSBibG9ja1s3XSBeIChLWzddID0gd2N0eC0+aGFzaFs3XSk7CisKKwlmb3IgKHIgPSAxOyByIDw9IFdISVJMUE9PTF9ST1VORFM7IHIrKykgeworCisJCUxbMF0gPSBDMFsoaW50KShLWzBdID4+IDU2KSAgICAgICBdIF4KKwkJCSAgIEMxWyhpbnQpKEtbN10gPj4gNDgpICYgMHhmZl0gXgorCQkJICAgQzJbKGludCkoS1s2XSA+PiA0MCkgJiAweGZmXSBeCisJCQkgICBDM1soaW50KShLWzVdID4+IDMyKSAmIDB4ZmZdIF4KKwkJCSAgIEM0WyhpbnQpKEtbNF0gPj4gMjQpICYgMHhmZl0gXgorCQkJICAgQzVbKGludCkoS1szXSA+PiAxNikgJiAweGZmXSBeCisJCQkgICBDNlsoaW50KShLWzJdID4+ICA4KSAmIDB4ZmZdIF4KKwkJCSAgIEM3WyhpbnQpKEtbMV0gICAgICApICYgMHhmZl0gXgorCQkJICAgcmNbcl07CisKKwkJTFsxXSA9IEMwWyhpbnQpKEtbMV0gPj4gNTYpICAgICAgIF0gXgorCQkJICAgQzFbKGludCkoS1swXSA+PiA0OCkgJiAweGZmXSBeCisJCQkgICBDMlsoaW50KShLWzddID4+IDQwKSAmIDB4ZmZdIF4KKwkJCSAgIEMzWyhpbnQpKEtbNl0gPj4gMzIpICYgMHhmZl0gXgorCQkJICAgQzRbKGludCkoS1s1XSA+PiAyNCkgJiAweGZmXSBeCisJCQkgICBDNVsoaW50KShLWzRdID4+IDE2KSAmIDB4ZmZdIF4KKwkJCSAgIEM2WyhpbnQpKEtbM10gPj4gIDgpICYgMHhmZl0gXgorCQkJICAgQzdbKGludCkoS1syXSAgICAgICkgJiAweGZmXTsKKworCQlMWzJdID0gQzBbKGludCkoS1syXSA+PiA1NikgICAgICAgXSBeCisJCQkgICBDMVsoaW50KShLWzFdID4+IDQ4KSAmIDB4ZmZdIF4KKwkJCSAgIEMyWyhpbnQpKEtbMF0gPj4gNDApICYgMHhmZl0gXgorCQkJICAgQzNbKGludCkoS1s3XSA+PiAzMikgJiAweGZmXSBeCisJCQkgICBDNFsoaW50KShLWzZdID4+IDI0KSAmIDB4ZmZdIF4KKwkJCSAgIEM1WyhpbnQpKEtbNV0gPj4gMTYpICYgMHhmZl0gXgorCQkJICAgQzZbKGludCkoS1s0XSA+PiAgOCkgJiAweGZmXSBeCisJCQkgICBDN1soaW50KShLWzNdICAgICAgKSAmIDB4ZmZdOworCisJCUxbM10gPSBDMFsoaW50KShLWzNdID4+IDU2KSAgICAgICBdIF4KKwkJCSAgIEMxWyhpbnQpKEtbMl0gPj4gNDgpICYgMHhmZl0gXgorCQkJICAgQzJbKGludCkoS1sxXSA+PiA0MCkgJiAweGZmXSBeCisJCQkgICBDM1soaW50KShLWzBdID4+IDMyKSAmIDB4ZmZdIF4KKwkJCSAgIEM0WyhpbnQpKEtbN10gPj4gMjQpICYgMHhmZl0gXgorCQkJICAgQzVbKGludCkoS1s2XSA+PiAxNikgJiAweGZmXSBeCisJCQkgICBDNlsoaW50KShLWzVdID4+ICA4KSAmIDB4ZmZdIF4KKwkJCSAgIEM3WyhpbnQpKEtbNF0gICAgICApICYgMHhmZl07CisKKwkJTFs0XSA9IEMwWyhpbnQpKEtbNF0gPj4gNTYpICAgICAgIF0gXgorCQkJICAgQzFbKGludCkoS1szXSA+PiA0OCkgJiAweGZmXSBeCisJCQkgICBDMlsoaW50KShLWzJdID4+IDQwKSAmIDB4ZmZdIF4KKwkJCSAgIEMzWyhpbnQpKEtbMV0gPj4gMzIpICYgMHhmZl0gXgorCQkJICAgQzRbKGludCkoS1swXSA+PiAyNCkgJiAweGZmXSBeCisJCQkgICBDNVsoaW50KShLWzddID4+IDE2KSAmIDB4ZmZdIF4KKwkJCSAgIEM2WyhpbnQpKEtbNl0gPj4gIDgpICYgMHhmZl0gXgorCQkJICAgQzdbKGludCkoS1s1XSAgICAgICkgJiAweGZmXTsKKworCQlMWzVdID0gQzBbKGludCkoS1s1XSA+PiA1NikgICAgICAgXSBeCisJCQkgICBDMVsoaW50KShLWzRdID4+IDQ4KSAmIDB4ZmZdIF4KKwkJCSAgIEMyWyhpbnQpKEtbM10gPj4gNDApICYgMHhmZl0gXgorCQkJICAgQzNbKGludCkoS1syXSA+PiAzMikgJiAweGZmXSBeCisJCQkgICBDNFsoaW50KShLWzFdID4+IDI0KSAmIDB4ZmZdIF4KKwkJCSAgIEM1WyhpbnQpKEtbMF0gPj4gMTYpICYgMHhmZl0gXgorCQkJICAgQzZbKGludCkoS1s3XSA+PiAgOCkgJiAweGZmXSBeCisJCQkgICBDN1soaW50KShLWzZdICAgICAgKSAmIDB4ZmZdOworCisJCUxbNl0gPSBDMFsoaW50KShLWzZdID4+IDU2KSAgICAgICBdIF4KKwkJCSAgIEMxWyhpbnQpKEtbNV0gPj4gNDgpICYgMHhmZl0gXgorCQkJICAgQzJbKGludCkoS1s0XSA+PiA0MCkgJiAweGZmXSBeCisJCQkgICBDM1soaW50KShLWzNdID4+IDMyKSAmIDB4ZmZdIF4KKwkJCSAgIEM0WyhpbnQpKEtbMl0gPj4gMjQpICYgMHhmZl0gXgorCQkJICAgQzVbKGludCkoS1sxXSA+PiAxNikgJiAweGZmXSBeCisJCQkgICBDNlsoaW50KShLWzBdID4+ICA4KSAmIDB4ZmZdIF4KKwkJCSAgIEM3WyhpbnQpKEtbN10gICAgICApICYgMHhmZl07CisKKwkJTFs3XSA9IEMwWyhpbnQpKEtbN10gPj4gNTYpICAgICAgIF0gXgorCQkJICAgQzFbKGludCkoS1s2XSA+PiA0OCkgJiAweGZmXSBeCisJCQkgICBDMlsoaW50KShLWzVdID4+IDQwKSAmIDB4ZmZdIF4KKwkJCSAgIEMzWyhpbnQpKEtbNF0gPj4gMzIpICYgMHhmZl0gXgorCQkJICAgQzRbKGludCkoS1szXSA+PiAyNCkgJiAweGZmXSBeCisJCQkgICBDNVsoaW50KShLWzJdID4+IDE2KSAmIDB4ZmZdIF4KKwkJCSAgIEM2WyhpbnQpKEtbMV0gPj4gIDgpICYgMHhmZl0gXgorCQkJICAgQzdbKGludCkoS1swXSAgICAgICkgJiAweGZmXTsKKworCQlLWzBdID0gTFswXTsKKwkJS1sxXSA9IExbMV07CisJCUtbMl0gPSBMWzJdOworCQlLWzNdID0gTFszXTsKKwkJS1s0XSA9IExbNF07CisJCUtbNV0gPSBMWzVdOworCQlLWzZdID0gTFs2XTsKKwkJS1s3XSA9IExbN107CisKKwkJTFswXSA9IEMwWyhpbnQpKHN0YXRlWzBdID4+IDU2KSAgICAgICBdIF4KKwkJCSAgIEMxWyhpbnQpKHN0YXRlWzddID4+IDQ4KSAmIDB4ZmZdIF4KKwkJCSAgIEMyWyhpbnQpKHN0YXRlWzZdID4+IDQwKSAmIDB4ZmZdIF4KKwkJCSAgIEMzWyhpbnQpKHN0YXRlWzVdID4+IDMyKSAmIDB4ZmZdIF4KKwkJCSAgIEM0WyhpbnQpKHN0YXRlWzRdID4+IDI0KSAmIDB4ZmZdIF4KKwkJCSAgIEM1WyhpbnQpKHN0YXRlWzNdID4+IDE2KSAmIDB4ZmZdIF4KKwkJCSAgIEM2WyhpbnQpKHN0YXRlWzJdID4+ICA4KSAmIDB4ZmZdIF4KKwkJCSAgIEM3WyhpbnQpKHN0YXRlWzFdICAgICAgKSAmIDB4ZmZdIF4KKwkJCSAgIEtbMF07CisKKwkJTFsxXSA9IEMwWyhpbnQpKHN0YXRlWzFdID4+IDU2KSAgICAgICBdIF4KKwkJCSAgIEMxWyhpbnQpKHN0YXRlWzBdID4+IDQ4KSAmIDB4ZmZdIF4KKwkJCSAgIEMyWyhpbnQpKHN0YXRlWzddID4+IDQwKSAmIDB4ZmZdIF4KKwkJCSAgIEMzWyhpbnQpKHN0YXRlWzZdID4+IDMyKSAmIDB4ZmZdIF4KKwkJCSAgIEM0WyhpbnQpKHN0YXRlWzVdID4+IDI0KSAmIDB4ZmZdIF4KKwkJCSAgIEM1WyhpbnQpKHN0YXRlWzRdID4+IDE2KSAmIDB4ZmZdIF4KKwkJCSAgIEM2WyhpbnQpKHN0YXRlWzNdID4+ICA4KSAmIDB4ZmZdIF4KKwkJCSAgIEM3WyhpbnQpKHN0YXRlWzJdICAgICAgKSAmIDB4ZmZdIF4KKwkJCSAgIEtbMV07CisKKwkJTFsyXSA9IEMwWyhpbnQpKHN0YXRlWzJdID4+IDU2KSAgICAgICBdIF4KKwkJCSAgIEMxWyhpbnQpKHN0YXRlWzFdID4+IDQ4KSAmIDB4ZmZdIF4KKwkJCSAgIEMyWyhpbnQpKHN0YXRlWzBdID4+IDQwKSAmIDB4ZmZdIF4KKwkJCSAgIEMzWyhpbnQpKHN0YXRlWzddID4+IDMyKSAmIDB4ZmZdIF4KKwkJCSAgIEM0WyhpbnQpKHN0YXRlWzZdID4+IDI0KSAmIDB4ZmZdIF4KKwkJCSAgIEM1WyhpbnQpKHN0YXRlWzVdID4+IDE2KSAmIDB4ZmZdIF4KKwkJCSAgIEM2WyhpbnQpKHN0YXRlWzRdID4+ICA4KSAmIDB4ZmZdIF4KKwkJCSAgIEM3WyhpbnQpKHN0YXRlWzNdICAgICAgKSAmIDB4ZmZdIF4KKwkJCSAgIEtbMl07CisKKwkJTFszXSA9IEMwWyhpbnQpKHN0YXRlWzNdID4+IDU2KSAgICAgICBdIF4KKwkJCSAgIEMxWyhpbnQpKHN0YXRlWzJdID4+IDQ4KSAmIDB4ZmZdIF4KKwkJCSAgIEMyWyhpbnQpKHN0YXRlWzFdID4+IDQwKSAmIDB4ZmZdIF4KKwkJCSAgIEMzWyhpbnQpKHN0YXRlWzBdID4+IDMyKSAmIDB4ZmZdIF4KKwkJCSAgIEM0WyhpbnQpKHN0YXRlWzddID4+IDI0KSAmIDB4ZmZdIF4KKwkJCSAgIEM1WyhpbnQpKHN0YXRlWzZdID4+IDE2KSAmIDB4ZmZdIF4KKwkJCSAgIEM2WyhpbnQpKHN0YXRlWzVdID4+ICA4KSAmIDB4ZmZdIF4KKwkJCSAgIEM3WyhpbnQpKHN0YXRlWzRdICAgICAgKSAmIDB4ZmZdIF4KKwkJCSAgIEtbM107CisKKwkJTFs0XSA9IEMwWyhpbnQpKHN0YXRlWzRdID4+IDU2KSAgICAgICBdIF4KKwkJCSAgIEMxWyhpbnQpKHN0YXRlWzNdID4+IDQ4KSAmIDB4ZmZdIF4KKwkJCSAgIEMyWyhpbnQpKHN0YXRlWzJdID4+IDQwKSAmIDB4ZmZdIF4KKwkJCSAgIEMzWyhpbnQpKHN0YXRlWzFdID4+IDMyKSAmIDB4ZmZdIF4KKwkJCSAgIEM0WyhpbnQpKHN0YXRlWzBdID4+IDI0KSAmIDB4ZmZdIF4KKwkJCSAgIEM1WyhpbnQpKHN0YXRlWzddID4+IDE2KSAmIDB4ZmZdIF4KKwkJCSAgIEM2WyhpbnQpKHN0YXRlWzZdID4+ICA4KSAmIDB4ZmZdIF4KKwkJCSAgIEM3WyhpbnQpKHN0YXRlWzVdICAgICAgKSAmIDB4ZmZdIF4KKwkJCSAgIEtbNF07CisKKwkJTFs1XSA9IEMwWyhpbnQpKHN0YXRlWzVdID4+IDU2KSAgICAgICBdIF4KKwkJCSAgIEMxWyhpbnQpKHN0YXRlWzRdID4+IDQ4KSAmIDB4ZmZdIF4KKwkJCSAgIEMyWyhpbnQpKHN0YXRlWzNdID4+IDQwKSAmIDB4ZmZdIF4KKwkJCSAgIEMzWyhpbnQpKHN0YXRlWzJdID4+IDMyKSAmIDB4ZmZdIF4KKwkJCSAgIEM0WyhpbnQpKHN0YXRlWzFdID4+IDI0KSAmIDB4ZmZdIF4KKwkJCSAgIEM1WyhpbnQpKHN0YXRlWzBdID4+IDE2KSAmIDB4ZmZdIF4KKwkJCSAgIEM2WyhpbnQpKHN0YXRlWzddID4+ICA4KSAmIDB4ZmZdIF4KKwkJCSAgIEM3WyhpbnQpKHN0YXRlWzZdICAgICAgKSAmIDB4ZmZdIF4KKwkJCSAgIEtbNV07CisKKwkJTFs2XSA9IEMwWyhpbnQpKHN0YXRlWzZdID4+IDU2KSAgICAgICBdIF4KKwkJCSAgIEMxWyhpbnQpKHN0YXRlWzVdID4+IDQ4KSAmIDB4ZmZdIF4KKwkJCSAgIEMyWyhpbnQpKHN0YXRlWzRdID4+IDQwKSAmIDB4ZmZdIF4KKwkJCSAgIEMzWyhpbnQpKHN0YXRlWzNdID4+IDMyKSAmIDB4ZmZdIF4KKwkJCSAgIEM0WyhpbnQpKHN0YXRlWzJdID4+IDI0KSAmIDB4ZmZdIF4KKwkJCSAgIEM1WyhpbnQpKHN0YXRlWzFdID4+IDE2KSAmIDB4ZmZdIF4KKwkJCSAgIEM2WyhpbnQpKHN0YXRlWzBdID4+ICA4KSAmIDB4ZmZdIF4KKwkJCSAgIEM3WyhpbnQpKHN0YXRlWzddICAgICAgKSAmIDB4ZmZdIF4KKwkJCSAgIEtbNl07CisKKwkJTFs3XSA9IEMwWyhpbnQpKHN0YXRlWzddID4+IDU2KSAgICAgICBdIF4KKwkJCSAgIEMxWyhpbnQpKHN0YXRlWzZdID4+IDQ4KSAmIDB4ZmZdIF4KKwkJCSAgIEMyWyhpbnQpKHN0YXRlWzVdID4+IDQwKSAmIDB4ZmZdIF4KKwkJCSAgIEMzWyhpbnQpKHN0YXRlWzRdID4+IDMyKSAmIDB4ZmZdIF4KKwkJCSAgIEM0WyhpbnQpKHN0YXRlWzNdID4+IDI0KSAmIDB4ZmZdIF4KKwkJCSAgIEM1WyhpbnQpKHN0YXRlWzJdID4+IDE2KSAmIDB4ZmZdIF4KKwkJCSAgIEM2WyhpbnQpKHN0YXRlWzFdID4+ICA4KSAmIDB4ZmZdIF4KKwkJCSAgIEM3WyhpbnQpKHN0YXRlWzBdICAgICAgKSAmIDB4ZmZdIF4KKwkJCSAgIEtbN107CisKKwkJc3RhdGVbMF0gPSBMWzBdOworCQlzdGF0ZVsxXSA9IExbMV07CisJCXN0YXRlWzJdID0gTFsyXTsKKwkJc3RhdGVbM10gPSBMWzNdOworCQlzdGF0ZVs0XSA9IExbNF07CisJCXN0YXRlWzVdID0gTFs1XTsKKwkJc3RhdGVbNl0gPSBMWzZdOworCQlzdGF0ZVs3XSA9IExbN107CisJfQorCS8qCisJKiBhcHBseSB0aGUgTWl5YWd1Y2hpLVByZW5lZWwgY29tcHJlc3Npb24gZnVuY3Rpb246CisJKi8KKwl3Y3R4LT5oYXNoWzBdIF49IHN0YXRlWzBdIF4gYmxvY2tbMF07CisJd2N0eC0+aGFzaFsxXSBePSBzdGF0ZVsxXSBeIGJsb2NrWzFdOworCXdjdHgtPmhhc2hbMl0gXj0gc3RhdGVbMl0gXiBibG9ja1syXTsKKwl3Y3R4LT5oYXNoWzNdIF49IHN0YXRlWzNdIF4gYmxvY2tbM107CisJd2N0eC0+aGFzaFs0XSBePSBzdGF0ZVs0XSBeIGJsb2NrWzRdOworCXdjdHgtPmhhc2hbNV0gXj0gc3RhdGVbNV0gXiBibG9ja1s1XTsKKwl3Y3R4LT5oYXNoWzZdIF49IHN0YXRlWzZdIF4gYmxvY2tbNl07CisJd2N0eC0+aGFzaFs3XSBePSBzdGF0ZVs3XSBeIGJsb2NrWzddOworCit9CisKK3N0YXRpYyB2b2lkIHdwNTEyX2luaXQgKHZvaWQgKmN0eCkgeworCWludCBpOworCXN0cnVjdCB3cDUxMl9jdHggKndjdHggPSBjdHg7CisKKwltZW1zZXQod2N0eC0+Yml0TGVuZ3RoLCAwLCAzMik7CisJd2N0eC0+YnVmZmVyQml0cyA9IHdjdHgtPmJ1ZmZlclBvcyA9IDA7CisJd2N0eC0+YnVmZmVyWzBdID0gMDsKKwlmb3IgKGkgPSAwOyBpIDwgODsgaSsrKSB7CisJCXdjdHgtPmhhc2hbaV0gPSAwTDsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIHdwNTEyX3VwZGF0ZSh2b2lkICpjdHgsIGNvbnN0IHU4ICpzb3VyY2UsIHVuc2lnbmVkIGludCBsZW4pCit7CisKKwlzdHJ1Y3Qgd3A1MTJfY3R4ICp3Y3R4ID0gY3R4OworCWludCBzb3VyY2VQb3MgICAgPSAwOworCXVuc2lnbmVkIGludCBiaXRzX2xlbiA9IGxlbiAqIDg7IC8vIGNvbnZlcnQgdG8gbnVtYmVyIG9mIGJpdHMKKwlpbnQgc291cmNlR2FwICAgID0gKDggLSAoKGludCliaXRzX2xlbiAmIDcpKSAmIDc7CisJaW50IGJ1ZmZlclJlbSAgICA9IHdjdHgtPmJ1ZmZlckJpdHMgJiA3OworCWludCBpOworCXUzMiBiLCBjYXJyeTsKKwl1OCAqYnVmZmVyICAgICAgID0gd2N0eC0+YnVmZmVyOworCXU4ICpiaXRMZW5ndGggICAgPSB3Y3R4LT5iaXRMZW5ndGg7CisJaW50IGJ1ZmZlckJpdHMgICA9IHdjdHgtPmJ1ZmZlckJpdHM7CisJaW50IGJ1ZmZlclBvcyAgICA9IHdjdHgtPmJ1ZmZlclBvczsKKworCXU2NCB2YWx1ZSA9IGJpdHNfbGVuOworCWZvciAoaSA9IDMxLCBjYXJyeSA9IDA7IGkgPj0gMCAmJiAoY2FycnkgIT0gMCB8fCB2YWx1ZSAhPSAwVUxMKTsgaS0tKSB7CisJCWNhcnJ5ICs9IGJpdExlbmd0aFtpXSArICgodTMyKXZhbHVlICYgMHhmZik7CisJCWJpdExlbmd0aFtpXSA9ICh1OCljYXJyeTsKKwkJY2FycnkgPj49IDg7CisJCXZhbHVlID4+PSA4OworCX0KKwl3aGlsZSAoYml0c19sZW4gPiA4KSB7CisJCWIgPSAoKHNvdXJjZVtzb3VyY2VQb3NdIDw8IHNvdXJjZUdhcCkgJiAweGZmKSB8CisJCSgoc291cmNlW3NvdXJjZVBvcyArIDFdICYgMHhmZikgPj4gKDggLSBzb3VyY2VHYXApKTsKKwkJYnVmZmVyW2J1ZmZlclBvcysrXSB8PSAodTgpKGIgPj4gYnVmZmVyUmVtKTsKKwkJYnVmZmVyQml0cyArPSA4IC0gYnVmZmVyUmVtOworCQlpZiAoYnVmZmVyQml0cyA9PSBXUDUxMl9CTE9DS19TSVpFICogOCkgeworCQkJd3A1MTJfcHJvY2Vzc19idWZmZXIod2N0eCk7CisJCQlidWZmZXJCaXRzID0gYnVmZmVyUG9zID0gMDsKKwkJfQorCQlidWZmZXJbYnVmZmVyUG9zXSA9IGIgPDwgKDggLSBidWZmZXJSZW0pOworCQlidWZmZXJCaXRzICs9IGJ1ZmZlclJlbTsKKwkJYml0c19sZW4gLT0gODsKKwkJc291cmNlUG9zKys7CisJfQorCWlmIChiaXRzX2xlbiA+IDApIHsKKwkJYiA9IChzb3VyY2Vbc291cmNlUG9zXSA8PCBzb3VyY2VHYXApICYgMHhmZjsKKwkJYnVmZmVyW2J1ZmZlclBvc10gfD0gYiA+PiBidWZmZXJSZW07CisJfSBlbHNlIHsKKwkJYiA9IDA7CisJfQorCWlmIChidWZmZXJSZW0gKyBiaXRzX2xlbiA8IDgpIHsKKwkJYnVmZmVyQml0cyArPSBiaXRzX2xlbjsKKwl9IGVsc2UgeworCQlidWZmZXJQb3MrKzsKKwkJYnVmZmVyQml0cyArPSA4IC0gYnVmZmVyUmVtOworCQliaXRzX2xlbiAtPSA4IC0gYnVmZmVyUmVtOworCQlpZiAoYnVmZmVyQml0cyA9PSBXUDUxMl9CTE9DS19TSVpFICogOCkgeworCQkJd3A1MTJfcHJvY2Vzc19idWZmZXIod2N0eCk7CisJCQlidWZmZXJCaXRzID0gYnVmZmVyUG9zID0gMDsKKwkJfQorCQlidWZmZXJbYnVmZmVyUG9zXSA9IGIgPDwgKDggLSBidWZmZXJSZW0pOworCQlidWZmZXJCaXRzICs9IChpbnQpYml0c19sZW47CisJfQorCisJd2N0eC0+YnVmZmVyQml0cyAgID0gYnVmZmVyQml0czsKKwl3Y3R4LT5idWZmZXJQb3MgICAgPSBidWZmZXJQb3M7CisKK30KKworc3RhdGljIHZvaWQgd3A1MTJfZmluYWwodm9pZCAqY3R4LCB1OCAqb3V0KQoreworCXN0cnVjdCB3cDUxMl9jdHggKndjdHggPSBjdHg7CisJaW50IGk7CisgICAJdTggKmJ1ZmZlciAgICAgID0gd2N0eC0+YnVmZmVyOworICAgCXU4ICpiaXRMZW5ndGggICA9IHdjdHgtPmJpdExlbmd0aDsKKyAgIAlpbnQgYnVmZmVyQml0cyAgPSB3Y3R4LT5idWZmZXJCaXRzOworICAgCWludCBidWZmZXJQb3MgICA9IHdjdHgtPmJ1ZmZlclBvczsKKyAgIAl1OCAqZGlnZXN0ICAgICAgPSBvdXQ7CisKKyAgIAlidWZmZXJbYnVmZmVyUG9zXSB8PSAweDgwVSA+PiAoYnVmZmVyQml0cyAmIDcpOworICAgCWJ1ZmZlclBvcysrOworICAgCWlmIChidWZmZXJQb3MgPiBXUDUxMl9CTE9DS19TSVpFIC0gV1A1MTJfTEVOR1RIQllURVMpIHsKKyAgIAkJaWYgKGJ1ZmZlclBvcyA8IFdQNTEyX0JMT0NLX1NJWkUpIHsKKwkgICAJbWVtc2V0KCZidWZmZXJbYnVmZmVyUG9zXSwgMCwgV1A1MTJfQkxPQ0tfU0laRSAtIGJ1ZmZlclBvcyk7CisgICAJCX0KKyAgIAkJd3A1MTJfcHJvY2Vzc19idWZmZXIod2N0eCk7CisgICAJCWJ1ZmZlclBvcyA9IDA7CisgICAJfQorICAgCWlmIChidWZmZXJQb3MgPCBXUDUxMl9CTE9DS19TSVpFIC0gV1A1MTJfTEVOR1RIQllURVMpIHsKKyAgIAkJbWVtc2V0KCZidWZmZXJbYnVmZmVyUG9zXSwgMCwKKwkJCSAgKFdQNTEyX0JMT0NLX1NJWkUgLSBXUDUxMl9MRU5HVEhCWVRFUykgLSBidWZmZXJQb3MpOworICAgCX0KKyAgIAlidWZmZXJQb3MgPSBXUDUxMl9CTE9DS19TSVpFIC0gV1A1MTJfTEVOR1RIQllURVM7CisgICAJbWVtY3B5KCZidWZmZXJbV1A1MTJfQkxPQ0tfU0laRSAtIFdQNTEyX0xFTkdUSEJZVEVTXSwKKwkJICAgYml0TGVuZ3RoLCBXUDUxMl9MRU5HVEhCWVRFUyk7CisgICAJd3A1MTJfcHJvY2Vzc19idWZmZXIod2N0eCk7CisgICAJZm9yIChpID0gMDsgaSA8IFdQNTEyX0RJR0VTVF9TSVpFLzg7IGkrKykgeworCQlkaWdlc3RbMF0gPSAodTgpKHdjdHgtPmhhc2hbaV0gPj4gNTYpOworCQlkaWdlc3RbMV0gPSAodTgpKHdjdHgtPmhhc2hbaV0gPj4gNDgpOworCQlkaWdlc3RbMl0gPSAodTgpKHdjdHgtPmhhc2hbaV0gPj4gNDApOworCQlkaWdlc3RbM10gPSAodTgpKHdjdHgtPmhhc2hbaV0gPj4gMzIpOworCQlkaWdlc3RbNF0gPSAodTgpKHdjdHgtPmhhc2hbaV0gPj4gMjQpOworCQlkaWdlc3RbNV0gPSAodTgpKHdjdHgtPmhhc2hbaV0gPj4gMTYpOworCQlkaWdlc3RbNl0gPSAodTgpKHdjdHgtPmhhc2hbaV0gPj4gIDgpOworCQlkaWdlc3RbN10gPSAodTgpKHdjdHgtPmhhc2hbaV0gICAgICApOworCQlkaWdlc3QgKz0gODsKKyAgIAl9CisgICAJd2N0eC0+YnVmZmVyQml0cyAgID0gYnVmZmVyQml0czsKKyAgIAl3Y3R4LT5idWZmZXJQb3MgICAgPSBidWZmZXJQb3M7Cit9CisKK3N0YXRpYyB2b2lkIHdwMzg0X2ZpbmFsKHZvaWQgKmN0eCwgdTggKm91dCkKK3sKKwlzdHJ1Y3Qgd3A1MTJfY3R4ICp3Y3R4ID0gY3R4OworCXU4IERbNjRdOworCisJd3A1MTJfZmluYWwgKHdjdHgsIEQpOworCW1lbWNweSAob3V0LCBELCBXUDM4NF9ESUdFU1RfU0laRSk7CisJbWVtc2V0IChELCAwLCBXUDUxMl9ESUdFU1RfU0laRSk7Cit9CisKK3N0YXRpYyB2b2lkIHdwMjU2X2ZpbmFsKHZvaWQgKmN0eCwgdTggKm91dCkKK3sKKwlzdHJ1Y3Qgd3A1MTJfY3R4ICp3Y3R4ID0gY3R4OworCXU4IERbNjRdOworCisJd3A1MTJfZmluYWwgKHdjdHgsIEQpOworCW1lbWNweSAob3V0LCBELCBXUDI1Nl9ESUdFU1RfU0laRSk7CisJbWVtc2V0IChELCAwLCBXUDUxMl9ESUdFU1RfU0laRSk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgY3J5cHRvX2FsZyB3cDUxMiA9IHsKKwkuY3JhX25hbWUJPQkid3A1MTIiLAorCS5jcmFfZmxhZ3MJPQlDUllQVE9fQUxHX1RZUEVfRElHRVNULAorCS5jcmFfYmxvY2tzaXplCT0JV1A1MTJfQkxPQ0tfU0laRSwKKwkuY3JhX2N0eHNpemUJPQlzaXplb2Yoc3RydWN0IHdwNTEyX2N0eCksCisJLmNyYV9tb2R1bGUJPQlUSElTX01PRFVMRSwKKwkuY3JhX2xpc3QgICAgICAgPSAgICAgICBMSVNUX0hFQURfSU5JVCh3cDUxMi5jcmFfbGlzdCksCQorCS5jcmFfdQkJPQl7IC5kaWdlc3QgPSB7CisJLmRpYV9kaWdlc3RzaXplCT0JV1A1MTJfRElHRVNUX1NJWkUsCisJLmRpYV9pbml0ICAgCT0gCXdwNTEyX2luaXQsCisJLmRpYV91cGRhdGUgCT0Jd3A1MTJfdXBkYXRlLAorCS5kaWFfZmluYWwgIAk9CXdwNTEyX2ZpbmFsIH0gfQorfTsKKworc3RhdGljIHN0cnVjdCBjcnlwdG9fYWxnIHdwMzg0ID0geworCS5jcmFfbmFtZQk9CSJ3cDM4NCIsCisJLmNyYV9mbGFncwk9CUNSWVBUT19BTEdfVFlQRV9ESUdFU1QsCisJLmNyYV9ibG9ja3NpemUJPQlXUDUxMl9CTE9DS19TSVpFLAorCS5jcmFfY3R4c2l6ZQk9CXNpemVvZihzdHJ1Y3Qgd3A1MTJfY3R4KSwKKwkuY3JhX21vZHVsZQk9CVRISVNfTU9EVUxFLAorCS5jcmFfbGlzdCAgICAgICA9ICAgICAgIExJU1RfSEVBRF9JTklUKHdwMzg0LmNyYV9saXN0KSwJCisJLmNyYV91CQk9CXsgLmRpZ2VzdCA9IHsKKwkuZGlhX2RpZ2VzdHNpemUJPQlXUDM4NF9ESUdFU1RfU0laRSwKKwkuZGlhX2luaXQgICAJPSAJd3A1MTJfaW5pdCwKKwkuZGlhX3VwZGF0ZSAJPQl3cDUxMl91cGRhdGUsCisJLmRpYV9maW5hbCAgCT0Jd3AzODRfZmluYWwgfSB9Cit9OworCitzdGF0aWMgc3RydWN0IGNyeXB0b19hbGcgd3AyNTYgPSB7CisJLmNyYV9uYW1lCT0JIndwMjU2IiwKKwkuY3JhX2ZsYWdzCT0JQ1JZUFRPX0FMR19UWVBFX0RJR0VTVCwKKwkuY3JhX2Jsb2Nrc2l6ZQk9CVdQNTEyX0JMT0NLX1NJWkUsCisJLmNyYV9jdHhzaXplCT0Jc2l6ZW9mKHN0cnVjdCB3cDUxMl9jdHgpLAorCS5jcmFfbW9kdWxlCT0JVEhJU19NT0RVTEUsCisJLmNyYV9saXN0ICAgICAgID0gICAgICAgTElTVF9IRUFEX0lOSVQod3AyNTYuY3JhX2xpc3QpLAkKKwkuY3JhX3UJCT0JeyAuZGlnZXN0ID0geworCS5kaWFfZGlnZXN0c2l6ZQk9CVdQMjU2X0RJR0VTVF9TSVpFLAorCS5kaWFfaW5pdCAgIAk9IAl3cDUxMl9pbml0LAorCS5kaWFfdXBkYXRlIAk9CXdwNTEyX3VwZGF0ZSwKKwkuZGlhX2ZpbmFsICAJPQl3cDI1Nl9maW5hbCB9IH0KK307CisKK3N0YXRpYyBpbnQgX19pbml0IGluaXQodm9pZCkKK3sKKwlpbnQgcmV0ID0gMDsKKworCXJldCA9IGNyeXB0b19yZWdpc3Rlcl9hbGcoJndwNTEyKTsKKworCWlmIChyZXQgPCAwKQorCQlnb3RvIG91dDsKKworCXJldCA9IGNyeXB0b19yZWdpc3Rlcl9hbGcoJndwMzg0KTsKKwlpZiAocmV0IDwgMCkKKwl7CisJCWNyeXB0b191bnJlZ2lzdGVyX2FsZygmd3A1MTIpOworCQlnb3RvIG91dDsKKwl9CisKKwlyZXQgPSBjcnlwdG9fcmVnaXN0ZXJfYWxnKCZ3cDI1Nik7CisJaWYgKHJldCA8IDApCisJeworCQljcnlwdG9fdW5yZWdpc3Rlcl9hbGcoJndwNTEyKTsKKwkJY3J5cHRvX3VucmVnaXN0ZXJfYWxnKCZ3cDM4NCk7CisJfQorb3V0OgorCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIF9fZXhpdCBmaW5pKHZvaWQpCit7CisJY3J5cHRvX3VucmVnaXN0ZXJfYWxnKCZ3cDUxMik7CisJY3J5cHRvX3VucmVnaXN0ZXJfYWxnKCZ3cDM4NCk7CisJY3J5cHRvX3VucmVnaXN0ZXJfYWxnKCZ3cDI1Nik7Cit9CisKK01PRFVMRV9BTElBUygid3AzODQiKTsKK01PRFVMRV9BTElBUygid3AyNTYiKTsKKworbW9kdWxlX2luaXQoaW5pdCk7Cittb2R1bGVfZXhpdChmaW5pKTsKKworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0RFU0NSSVBUSU9OKCJXaGlybHBvb2wgTWVzc2FnZSBEaWdlc3QgQWxnb3JpdGhtIik7Cg==