LyoqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIEBmaWxlICAgIHN0bTMyZjF4eC5oDQogICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0NCiAgKiBAdmVyc2lvbiBWNC4yLjANCiAgKiBAZGF0ZSAgICAzMS1NYXJjaC0yMDE3DQogICogQGJyaWVmICAgQ01TSVMgU1RNMzJGMXh4IERldmljZSBQZXJpcGhlcmFsIEFjY2VzcyBMYXllciBIZWFkZXIgRmlsZS4gDQogICoNCiAgKiAgICAgICAgICBUaGUgZmlsZSBpcyB0aGUgdW5pcXVlIGluY2x1ZGUgZmlsZSB0aGF0IHRoZSBhcHBsaWNhdGlvbiBwcm9ncmFtbWVyDQogICogICAgICAgICAgaXMgdXNpbmcgaW4gdGhlIEMgc291cmNlIGNvZGUsIHVzdWFsbHkgaW4gbWFpbi5jLiBUaGlzIGZpbGUgY29udGFpbnM6DQogICogICAgICAgICAgICAtIENvbmZpZ3VyYXRpb24gc2VjdGlvbiB0aGF0IGFsbG93cyB0byBzZWxlY3Q6DQogICogICAgICAgICAgICAgIC0gVGhlIFNUTTMyRjF4eCBkZXZpY2UgdXNlZCBpbiB0aGUgdGFyZ2V0IGFwcGxpY2F0aW9uDQogICogICAgICAgICAgICAgIC0gVG8gdXNlIG9yIG5vdCB0aGUgcGVyaXBoZXJhbJJzIGRyaXZlcnMgaW4gYXBwbGljYXRpb24gY29kZShpLmUuIA0KICAqICAgICAgICAgICAgICAgIGNvZGUgd2lsbCBiZSBiYXNlZCBvbiBkaXJlY3QgYWNjZXNzIHRvIHBlcmlwaGVyYWyScyByZWdpc3RlcnMgDQogICogICAgICAgICAgICAgICAgcmF0aGVyIHRoYW4gZHJpdmVycyBBUEkpLCB0aGlzIG9wdGlvbiBpcyBjb250cm9sbGVkIGJ5IA0KICAqICAgICAgICAgICAgICAgICIjZGVmaW5lIFVTRV9IQUxfRFJJVkVSIg0KICAqICANCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogQGF0dGVudGlvbg0KICAqDQogICogPGgyPjxjZW50ZXI+JmNvcHk7IENPUFlSSUdIVChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljczwvY2VudGVyPjwvaDI+DQogICoNCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLA0KICAqIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoNCiAgKiAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwNCiAgKiAgICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQogICogICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsDQogICogICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uDQogICogICAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCiAgKiAgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgU1RNaWNyb2VsZWN0cm9uaWNzIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycw0KICAqICAgICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlDQogICogICAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCiAgKg0KICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIg0KICAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUNCiAgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUNCiAgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFDQogICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwNCiAgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUg0KICAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSDQogICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwNCiAgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICovDQoNCi8qKiBAYWRkdG9ncm91cCBDTVNJUw0KICAqIEB7DQogICovDQoNCi8qKiBAYWRkdG9ncm91cCBzdG0zMmYxeHgNCiAgKiBAew0KICAqLw0KICAgIA0KI2lmbmRlZiBfX1NUTTMyRjFYWF9IDQojZGVmaW5lIF9fU1RNMzJGMVhYX0gNCg0KI2lmZGVmIF9fY3BsdXNwbHVzDQogZXh0ZXJuICJDIiB7DQojZW5kaWYgLyogX19jcGx1c3BsdXMgKi8NCiAgDQovKiogQGFkZHRvZ3JvdXAgTGlicmFyeV9jb25maWd1cmF0aW9uX3NlY3Rpb24NCiAgKiBAew0KICAqLw0KDQovKioNCiAgKiBAYnJpZWYgU1RNMzIgRmFtaWx5DQogICovDQojaWYgIWRlZmluZWQgKFNUTTMyRjEpDQojZGVmaW5lIFNUTTMyRjENCiNlbmRpZiAvKiBTVE0zMkYxICovDQoNCi8qIFVuY29tbWVudCB0aGUgbGluZSBiZWxvdyBhY2NvcmRpbmcgdG8gdGhlIHRhcmdldCBTVE0zMkwgZGV2aWNlIHVzZWQgaW4geW91ciANCiAgIGFwcGxpY2F0aW9uIA0KICAqLw0KDQojaWYgIWRlZmluZWQgKFNUTTMyRjEwMHhCKSAmJiAhZGVmaW5lZCAoU1RNMzJGMTAweEUpICYmICFkZWZpbmVkIChTVE0zMkYxMDF4NikgJiYgXA0KICAgICFkZWZpbmVkIChTVE0zMkYxMDF4QikgJiYgIWRlZmluZWQgKFNUTTMyRjEwMXhFKSAmJiAhZGVmaW5lZCAoU1RNMzJGMTAxeEcpICYmICFkZWZpbmVkIChTVE0zMkYxMDJ4NikgJiYgIWRlZmluZWQgKFNUTTMyRjEwMnhCKSAmJiAhZGVmaW5lZCAoU1RNMzJGMTAzeDYpICYmIFwNCiAgICAhZGVmaW5lZCAoU1RNMzJGMTAzeEIpICYmICFkZWZpbmVkIChTVE0zMkYxMDN4RSkgJiYgIWRlZmluZWQgKFNUTTMyRjEwM3hHKSAmJiAhZGVmaW5lZCAoU1RNMzJGMTA1eEMpICYmICFkZWZpbmVkIChTVE0zMkYxMDd4QykNCiAgLyogI2RlZmluZSBTVE0zMkYxMDB4QiAgKi8gICAvKiE8IFNUTTMyRjEwMEM0LCBTVE0zMkYxMDBSNCwgU1RNMzJGMTAwQzYsIFNUTTMyRjEwMFI2LCBTVE0zMkYxMDBDOCwgU1RNMzJGMTAwUjgsIFNUTTMyRjEwMFY4LCBTVE0zMkYxMDBDQiwgU1RNMzJGMTAwUkIgYW5kIFNUTTMyRjEwMFZCICovDQogIC8qICNkZWZpbmUgU1RNMzJGMTAweEUgKi8gICAgLyohPCBTVE0zMkYxMDBSQywgU1RNMzJGMTAwVkMsIFNUTTMyRjEwMFpDLCBTVE0zMkYxMDBSRCwgU1RNMzJGMTAwVkQsIFNUTTMyRjEwMFpELCBTVE0zMkYxMDBSRSwgU1RNMzJGMTAwVkUgYW5kIFNUTTMyRjEwMFpFICovDQogIC8qICNkZWZpbmUgU1RNMzJGMTAxeDYgICovICAgLyohPCBTVE0zMkYxMDFDNCwgU1RNMzJGMTAxUjQsIFNUTTMyRjEwMVQ0LCBTVE0zMkYxMDFDNiwgU1RNMzJGMTAxUjYgYW5kIFNUTTMyRjEwMVQ2IERldmljZXMgKi8NCiAgLyogI2RlZmluZSBTVE0zMkYxMDF4QiAgKi8gICAvKiE8IFNUTTMyRjEwMUM4LCBTVE0zMkYxMDFSOCwgU1RNMzJGMTAxVDgsIFNUTTMyRjEwMVY4LCBTVE0zMkYxMDFDQiwgU1RNMzJGMTAxUkIsIFNUTTMyRjEwMVRCIGFuZCBTVE0zMkYxMDFWQiAqLw0KICAvKiAjZGVmaW5lIFNUTTMyRjEwMXhFICovICAgIC8qITwgU1RNMzJGMTAxUkMsIFNUTTMyRjEwMVZDLCBTVE0zMkYxMDFaQywgU1RNMzJGMTAxUkQsIFNUTTMyRjEwMVZELCBTVE0zMkYxMDFaRCwgU1RNMzJGMTAxUkUsIFNUTTMyRjEwMVZFIGFuZCBTVE0zMkYxMDFaRSAqLyANCiAgLyogI2RlZmluZSBTVE0zMkYxMDF4RyAgKi8gICAvKiE8IFNUTTMyRjEwMVJGLCBTVE0zMkYxMDFWRiwgU1RNMzJGMTAxWkYsIFNUTTMyRjEwMVJHLCBTVE0zMkYxMDFWRyBhbmQgU1RNMzJGMTAxWkcgKi8NCiAgLyogI2RlZmluZSBTVE0zMkYxMDJ4NiAqLyAgICAvKiE8IFNUTTMyRjEwMkM0LCBTVE0zMkYxMDJSNCwgU1RNMzJGMTAyQzYgYW5kIFNUTTMyRjEwMlI2ICovDQogIC8qICNkZWZpbmUgU1RNMzJGMTAyeEIgICovICAgLyohPCBTVE0zMkYxMDJDOCwgU1RNMzJGMTAyUjgsIFNUTTMyRjEwMkNCIGFuZCBTVE0zMkYxMDJSQiAqLw0KICAvKiAjZGVmaW5lIFNUTTMyRjEwM3g2ICAqLyAgIC8qITwgU1RNMzJGMTAzQzQsIFNUTTMyRjEwM1I0LCBTVE0zMkYxMDNUNCwgU1RNMzJGMTAzQzYsIFNUTTMyRjEwM1I2IGFuZCBTVE0zMkYxMDNUNiAqLw0KICAvKiAjZGVmaW5lIFNUTTMyRjEwM3hCICAqLyAgIC8qITwgU1RNMzJGMTAzQzgsIFNUTTMyRjEwM1I4LCBTVE0zMkYxMDNUOCwgU1RNMzJGMTAzVjgsIFNUTTMyRjEwM0NCLCBTVE0zMkYxMDNSQiwgU1RNMzJGMTAzVEIgYW5kIFNUTTMyRjEwM1ZCICovDQogIC8qICNkZWZpbmUgU1RNMzJGMTAzeEUgKi8gICAgLyohPCBTVE0zMkYxMDNSQywgU1RNMzJGMTAzVkMsIFNUTTMyRjEwM1pDLCBTVE0zMkYxMDNSRCwgU1RNMzJGMTAzVkQsIFNUTTMyRjEwM1pELCBTVE0zMkYxMDNSRSwgU1RNMzJGMTAzVkUgYW5kIFNUTTMyRjEwM1pFICovDQogIC8qICNkZWZpbmUgU1RNMzJGMTAzeEcgICovICAgLyohPCBTVE0zMkYxMDNSRiwgU1RNMzJGMTAzVkYsIFNUTTMyRjEwM1pGLCBTVE0zMkYxMDNSRywgU1RNMzJGMTAzVkcgYW5kIFNUTTMyRjEwM1pHICovDQogIC8qICNkZWZpbmUgU1RNMzJGMTA1eEMgKi8gICAgLyohPCBTVE0zMkYxMDVSOCwgU1RNMzJGMTA1VjgsIFNUTTMyRjEwNVJCLCBTVE0zMkYxMDVWQiwgU1RNMzJGMTA1UkMgYW5kIFNUTTMyRjEwNVZDICovDQogIC8qICNkZWZpbmUgU1RNMzJGMTA3eEMgICovICAgLyohPCBTVE0zMkYxMDdSQiwgU1RNMzJGMTA3VkIsIFNUTTMyRjEwN1JDIGFuZCBTVE0zMkYxMDdWQyAqLyAgDQojZW5kaWYNCg0KLyogIFRpcDogVG8gYXZvaWQgbW9kaWZ5aW5nIHRoaXMgZmlsZSBlYWNoIHRpbWUgeW91IG5lZWQgdG8gc3dpdGNoIGJldHdlZW4gdGhlc2UNCiAgICAgICAgZGV2aWNlcywgeW91IGNhbiBkZWZpbmUgdGhlIGRldmljZSBpbiB5b3VyIHRvb2xjaGFpbiBjb21waWxlciBwcmVwcm9jZXNzb3IuDQogICovDQogIA0KI2lmICFkZWZpbmVkICAoVVNFX0hBTF9EUklWRVIpDQovKioNCiAqIEBicmllZiBDb21tZW50IHRoZSBsaW5lIGJlbG93IGlmIHlvdSB3aWxsIG5vdCB1c2UgdGhlIHBlcmlwaGVyYWxzIGRyaXZlcnMuDQogICBJbiB0aGlzIGNhc2UsIHRoZXNlIGRyaXZlcnMgd2lsbCBub3QgYmUgaW5jbHVkZWQgYW5kIHRoZSBhcHBsaWNhdGlvbiBjb2RlIHdpbGwgDQogICBiZSBiYXNlZCBvbiBkaXJlY3QgYWNjZXNzIHRvIHBlcmlwaGVyYWxzIHJlZ2lzdGVycyANCiAgICovDQogIC8qI2RlZmluZSBVU0VfSEFMX0RSSVZFUiAqLw0KI2VuZGlmIC8qIFVTRV9IQUxfRFJJVkVSICovDQoNCi8qKg0KICAqIEBicmllZiBDTVNJUyBEZXZpY2UgdmVyc2lvbiBudW1iZXIgVjQuMi4wDQogICovDQojZGVmaW5lIF9fU1RNMzJGMV9DTVNJU19WRVJTSU9OX01BSU4gICAoMHgwNCkgLyohPCBbMzE6MjRdIG1haW4gdmVyc2lvbiAqLw0KI2RlZmluZSBfX1NUTTMyRjFfQ01TSVNfVkVSU0lPTl9TVUIxICAgKDB4MDIpIC8qITwgWzIzOjE2XSBzdWIxIHZlcnNpb24gKi8NCiNkZWZpbmUgX19TVE0zMkYxX0NNU0lTX1ZFUlNJT05fU1VCMiAgICgweDAwKSAvKiE8IFsxNTo4XSAgc3ViMiB2ZXJzaW9uICovDQojZGVmaW5lIF9fU1RNMzJGMV9DTVNJU19WRVJTSU9OX1JDICAgICAoMHgwMCkgLyohPCBbNzowXSAgcmVsZWFzZSBjYW5kaWRhdGUgKi8gDQojZGVmaW5lIF9fU1RNMzJGMV9DTVNJU19WRVJTSU9OICAgICAgICAoKF9fU1RNMzJGMV9DTVNJU19WRVJTSU9OX01BSU4gPDwgMjQpXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfChfX1NUTTMyRjFfQ01TSVNfVkVSU0lPTl9TVUIxIDw8IDE2KVwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwoX19TVE0zMkYxX0NNU0lTX1ZFUlNJT05fU1VCMiA8PCA4IClcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8KF9fU1RNMzJGMV9DTVNJU19WRVJTSU9OX1JDKSkNCg0KLyoqDQogICogQH0NCiAgKi8NCg0KLyoqIEBhZGR0b2dyb3VwIERldmljZV9JbmNsdWRlZA0KICAqIEB7DQogICovDQoNCiNpZiBkZWZpbmVkKFNUTTMyRjEwMHhCKQ0KICAjaW5jbHVkZSAic3RtMzJmMTAweGIuaCINCiNlbGlmIGRlZmluZWQoU1RNMzJGMTAweEUpDQogICNpbmNsdWRlICJzdG0zMmYxMDB4ZS5oIg0KI2VsaWYgZGVmaW5lZChTVE0zMkYxMDF4NikNCiAgI2luY2x1ZGUgInN0bTMyZjEwMXg2LmgiDQojZWxpZiBkZWZpbmVkKFNUTTMyRjEwMXhCKQ0KICAjaW5jbHVkZSAic3RtMzJmMTAxeGIuaCINCiNlbGlmIGRlZmluZWQoU1RNMzJGMTAxeEUpDQogICNpbmNsdWRlICJzdG0zMmYxMDF4ZS5oIg0KI2VsaWYgZGVmaW5lZChTVE0zMkYxMDF4RykNCiAgI2luY2x1ZGUgInN0bTMyZjEwMXhnLmgiDQojZWxpZiBkZWZpbmVkKFNUTTMyRjEwMng2KQ0KICAjaW5jbHVkZSAic3RtMzJmMTAyeDYuaCINCiNlbGlmIGRlZmluZWQoU1RNMzJGMTAyeEIpDQogICNpbmNsdWRlICJzdG0zMmYxMDJ4Yi5oIg0KI2VsaWYgZGVmaW5lZChTVE0zMkYxMDN4NikNCiAgI2luY2x1ZGUgInN0bTMyZjEwM3g2LmgiDQojZWxpZiBkZWZpbmVkKFNUTTMyRjEwM3hCKQ0KICAjaW5jbHVkZSAic3RtMzJmMTAzeGIuaCINCiNlbGlmIGRlZmluZWQoU1RNMzJGMTAzeEUpDQogICNpbmNsdWRlICJzdG0zMmYxMDN4ZS5oIg0KI2VsaWYgZGVmaW5lZChTVE0zMkYxMDN4RykNCiAgI2luY2x1ZGUgInN0bTMyZjEwM3hnLmgiDQojZWxpZiBkZWZpbmVkKFNUTTMyRjEwNXhDKQ0KICAjaW5jbHVkZSAic3RtMzJmMTA1eGMuaCINCiNlbGlmIGRlZmluZWQoU1RNMzJGMTA3eEMpDQogICNpbmNsdWRlICJzdG0zMmYxMDd4Yy5oIg0KI2Vsc2UNCiAjZXJyb3IgIlBsZWFzZSBzZWxlY3QgZmlyc3QgdGhlIHRhcmdldCBTVE0zMkYxeHggZGV2aWNlIHVzZWQgaW4geW91ciBhcHBsaWNhdGlvbiAoaW4gc3RtMzJmMXh4LmggZmlsZSkiDQojZW5kaWYNCg0KLyoqDQogICogQH0NCiAgKi8NCg0KLyoqIEBhZGR0b2dyb3VwIEV4cG9ydGVkX3R5cGVzDQogICogQHsNCiAgKi8gIA0KdHlwZWRlZiBlbnVtIA0Kew0KICBSRVNFVCA9IDAsIA0KICBTRVQgPSAhUkVTRVQNCn0gRmxhZ1N0YXR1cywgSVRTdGF0dXM7DQoNCnR5cGVkZWYgZW51bSANCnsNCiAgRElTQUJMRSA9IDAsIA0KICBFTkFCTEUgPSAhRElTQUJMRQ0KfSBGdW5jdGlvbmFsU3RhdGU7DQojZGVmaW5lIElTX0ZVTkNUSU9OQUxfU1RBVEUoU1RBVEUpICgoKFNUQVRFKSA9PSBESVNBQkxFKSB8fCAoKFNUQVRFKSA9PSBFTkFCTEUpKQ0KDQp0eXBlZGVmIGVudW0gDQp7DQogIEVSUk9SID0gMCwgDQogIFNVQ0NFU1MgPSAhRVJST1INCn0gRXJyb3JTdGF0dXM7DQoNCi8qKg0KICAqIEB9DQogICovDQoNCg0KLyoqIEBhZGR0b2dyb3VwIEV4cG9ydGVkX21hY3Jvcw0KICAqIEB7DQogICovDQojZGVmaW5lIFNFVF9CSVQoUkVHLCBCSVQpICAgICAoKFJFRykgfD0gKEJJVCkpDQoNCiNkZWZpbmUgQ0xFQVJfQklUKFJFRywgQklUKSAgICgoUkVHKSAmPSB+KEJJVCkpDQoNCiNkZWZpbmUgUkVBRF9CSVQoUkVHLCBCSVQpICAgICgoUkVHKSAmIChCSVQpKQ0KDQojZGVmaW5lIENMRUFSX1JFRyhSRUcpICAgICAgICAoKFJFRykgPSAoMHgwKSkNCg0KI2RlZmluZSBXUklURV9SRUcoUkVHLCBWQUwpICAgKChSRUcpID0gKFZBTCkpDQoNCiNkZWZpbmUgUkVBRF9SRUcoUkVHKSAgICAgICAgICgoUkVHKSkNCg0KI2RlZmluZSBNT0RJRllfUkVHKFJFRywgQ0xFQVJNQVNLLCBTRVRNQVNLKSAgV1JJVEVfUkVHKChSRUcpLCAoKChSRUFEX1JFRyhSRUcpKSAmICh+KENMRUFSTUFTSykpKSB8IChTRVRNQVNLKSkpDQoNCiNkZWZpbmUgUE9TSVRJT05fVkFMKFZBTCkgICAgIChfX0NMWihfX1JCSVQoVkFMKSkpIA0KDQoNCi8qKg0KICAqIEB9DQogICovDQoNCiNpZiBkZWZpbmVkIChVU0VfSEFMX0RSSVZFUikNCiAjaW5jbHVkZSAic3RtMzJmMXh4X2hhbC5oIg0KI2VuZGlmIC8qIFVTRV9IQUxfRFJJVkVSICovDQoNCg0KI2lmZGVmIF9fY3BsdXNwbHVzDQp9DQojZW5kaWYgLyogX19jcGx1c3BsdXMgKi8NCg0KI2VuZGlmIC8qIF9fU1RNMzJGMXh4X0ggKi8NCi8qKg0KICAqIEB9DQogICovDQoNCi8qKg0KICAqIEB9DQogICovDQogIA0KDQoNCg0KLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8NCg==