LyoqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIEBmaWxlICAgIHN0bTMyZjR4eC5oDQogICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0NCiAgKiBAYnJpZWYgICBDTVNJUyBTVE0zMkY0eHggRGV2aWNlIFBlcmlwaGVyYWwgQWNjZXNzIExheWVyIEhlYWRlciBGaWxlLg0KICAqICAgICAgICAgICAgDQogICogICAgICAgICAgVGhlIGZpbGUgaXMgdGhlIHVuaXF1ZSBpbmNsdWRlIGZpbGUgdGhhdCB0aGUgYXBwbGljYXRpb24gcHJvZ3JhbW1lcg0KICAqICAgICAgICAgIGlzIHVzaW5nIGluIHRoZSBDIHNvdXJjZSBjb2RlLCB1c3VhbGx5IGluIG1haW4uYy4gVGhpcyBmaWxlIGNvbnRhaW5zOg0KICAqICAgICAgICAgICAtIENvbmZpZ3VyYXRpb24gc2VjdGlvbiB0aGF0IGFsbG93cyB0byBzZWxlY3Q6DQogICogICAgICAgICAgICAgIC0gVGhlIFNUTTMyRjR4eCBkZXZpY2UgdXNlZCBpbiB0aGUgdGFyZ2V0IGFwcGxpY2F0aW9uDQogICogICAgICAgICAgICAgIC0gVG8gdXNlIG9yIG5vdCB0aGUgcGVyaXBoZXJhbJJzIGRyaXZlcnMgaW4gYXBwbGljYXRpb24gY29kZShpLmUuIA0KICAqICAgICAgICAgICAgICAgIGNvZGUgd2lsbCBiZSBiYXNlZCBvbiBkaXJlY3QgYWNjZXNzIHRvIHBlcmlwaGVyYWyScyByZWdpc3RlcnMgDQogICogICAgICAgICAgICAgICAgcmF0aGVyIHRoYW4gZHJpdmVycyBBUEkpLCB0aGlzIG9wdGlvbiBpcyBjb250cm9sbGVkIGJ5IA0KICAqICAgICAgICAgICAgICAgICIjZGVmaW5lIFVTRV9IQUxfRFJJVkVSIg0KICAqICANCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogQGF0dGVudGlvbg0KICAqDQogICogPGgyPjxjZW50ZXI+JmNvcHk7IENPUFlSSUdIVChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljczwvY2VudGVyPjwvaDI+DQogICoNCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLA0KICAqIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoNCiAgKiAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwNCiAgKiAgICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQogICogICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsDQogICogICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uDQogICogICAgICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCiAgKiAgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgU1RNaWNyb2VsZWN0cm9uaWNzIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycw0KICAqICAgICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlDQogICogICAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCiAgKg0KICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIg0KICAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUNCiAgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUNCiAgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFDQogICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwNCiAgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUg0KICAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSDQogICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwNCiAgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQ0KICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICovDQoNCi8qKiBAYWRkdG9ncm91cCBDTVNJUw0KICAqIEB7DQogICovDQoNCi8qKiBAYWRkdG9ncm91cCBzdG0zMmY0eHgNCiAgKiBAew0KICAqLw0KICAgIA0KI2lmbmRlZiBfX1NUTTMyRjR4eF9IDQojZGVmaW5lIF9fU1RNMzJGNHh4X0gNCg0KI2lmZGVmIF9fY3BsdXNwbHVzDQogZXh0ZXJuICJDIiB7DQojZW5kaWYgLyogX19jcGx1c3BsdXMgKi8NCiAgIA0KLyoqIEBhZGR0b2dyb3VwIExpYnJhcnlfY29uZmlndXJhdGlvbl9zZWN0aW9uDQogICogQHsNCiAgKi8NCiAgDQovKioNCiAgKiBAYnJpZWYgU1RNMzIgRmFtaWx5DQogICovDQojaWYgIWRlZmluZWQgIChTVE0zMkY0KQ0KI2RlZmluZSBTVE0zMkY0DQojZW5kaWYgLyogU1RNMzJGNCAqLw0KDQovKiBVbmNvbW1lbnQgdGhlIGxpbmUgYmVsb3cgYWNjb3JkaW5nIHRvIHRoZSB0YXJnZXQgU1RNMzIgZGV2aWNlIHVzZWQgaW4geW91cg0KICAgYXBwbGljYXRpb24gDQogICovDQojaWYgIWRlZmluZWQgKFNUTTMyRjQwNXh4KSAmJiAhZGVmaW5lZCAoU1RNMzJGNDE1eHgpICYmICFkZWZpbmVkIChTVE0zMkY0MDd4eCkgJiYgIWRlZmluZWQgKFNUTTMyRjQxN3h4KSAmJiBcDQogICAgIWRlZmluZWQgKFNUTTMyRjQyN3h4KSAmJiAhZGVmaW5lZCAoU1RNMzJGNDM3eHgpICYmICFkZWZpbmVkIChTVE0zMkY0Mjl4eCkgJiYgIWRlZmluZWQgKFNUTTMyRjQzOXh4KSAmJiBcDQogICAgIWRlZmluZWQgKFNUTTMyRjQwMXhDKSAmJiAhZGVmaW5lZCAoU1RNMzJGNDAxeEUpICYmICFkZWZpbmVkIChTVE0zMkY0MTBUeCkgJiYgIWRlZmluZWQgKFNUTTMyRjQxMEN4KSAmJiBcDQogICAgIWRlZmluZWQgKFNUTTMyRjQxMFJ4KSAmJiAhZGVmaW5lZCAoU1RNMzJGNDExeEUpICYmICFkZWZpbmVkIChTVE0zMkY0NDZ4eCkgJiYgIWRlZmluZWQgKFNUTTMyRjQ2OXh4KSAmJiBcDQogICAgIWRlZmluZWQgKFNUTTMyRjQ3OXh4KSAmJiAhZGVmaW5lZCAoU1RNMzJGNDEyQ3gpICYmICFkZWZpbmVkIChTVE0zMkY0MTJSeCkgJiYgIWRlZmluZWQgKFNUTTMyRjQxMlZ4KSAmJiBcDQogICAgIWRlZmluZWQgKFNUTTMyRjQxMlp4KSAmJiAhZGVmaW5lZCAoU1RNMzJGNDEzeHgpICYmICFkZWZpbmVkIChTVE0zMkY0MjN4eCkNCiAgLyogI2RlZmluZSBTVE0zMkY0MDV4eCAqLyAgIC8qITwgU1RNMzJGNDA1UkcsIFNUTTMyRjQwNVZHIGFuZCBTVE0zMkY0MDVaRyBEZXZpY2VzICovDQogIC8qICNkZWZpbmUgU1RNMzJGNDE1eHggKi8gICAvKiE8IFNUTTMyRjQxNVJHLCBTVE0zMkY0MTVWRyBhbmQgU1RNMzJGNDE1WkcgRGV2aWNlcyAqLw0KICAvKiAjZGVmaW5lIFNUTTMyRjQwN3h4ICovICAgLyohPCBTVE0zMkY0MDdWRywgU1RNMzJGNDA3VkUsIFNUTTMyRjQwN1pHLCBTVE0zMkY0MDdaRSwgU1RNMzJGNDA3SUcgIGFuZCBTVE0zMkY0MDdJRSBEZXZpY2VzICovDQogIC8qICNkZWZpbmUgU1RNMzJGNDE3eHggKi8gICAvKiE8IFNUTTMyRjQxN1ZHLCBTVE0zMkY0MTdWRSwgU1RNMzJGNDE3WkcsIFNUTTMyRjQxN1pFLCBTVE0zMkY0MTdJRyBhbmQgU1RNMzJGNDE3SUUgRGV2aWNlcyAqLw0KICAvKiAjZGVmaW5lIFNUTTMyRjQyN3h4ICovICAgLyohPCBTVE0zMkY0MjdWRywgU1RNMzJGNDI3VkksIFNUTTMyRjQyN1pHLCBTVE0zMkY0MjdaSSwgU1RNMzJGNDI3SUcgYW5kIFNUTTMyRjQyN0lJIERldmljZXMgKi8NCiAgLyogI2RlZmluZSBTVE0zMkY0Mzd4eCAqLyAgIC8qITwgU1RNMzJGNDM3VkcsIFNUTTMyRjQzN1ZJLCBTVE0zMkY0MzdaRywgU1RNMzJGNDM3WkksIFNUTTMyRjQzN0lHIGFuZCBTVE0zMkY0MzdJSSBEZXZpY2VzICovDQogIC8qICNkZWZpbmUgU1RNMzJGNDI5eHggKi8gICAvKiE8IFNUTTMyRjQyOVZHLCBTVE0zMkY0MjlWSSwgU1RNMzJGNDI5WkcsIFNUTTMyRjQyOVpJLCBTVE0zMkY0MjlCRywgU1RNMzJGNDI5QkksIFNUTTMyRjQyOU5HLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RNMzJGNDM5TkksIFNUTTMyRjQyOUlHICBhbmQgU1RNMzJGNDI5SUkgRGV2aWNlcyAqLw0KICAvKiAjZGVmaW5lIFNUTTMyRjQzOXh4ICovICAgLyohPCBTVE0zMkY0MzlWRywgU1RNMzJGNDM5VkksIFNUTTMyRjQzOVpHLCBTVE0zMkY0MzlaSSwgU1RNMzJGNDM5QkcsIFNUTTMyRjQzOUJJLCBTVE0zMkY0MzlORywgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUTTMyRjQzOU5JLCBTVE0zMkY0MzlJRyBhbmQgU1RNMzJGNDM5SUkgRGV2aWNlcyAqLw0KICAvKiAjZGVmaW5lIFNUTTMyRjQwMXhDICovICAgLyohPCBTVE0zMkY0MDFDQiwgU1RNMzJGNDAxQ0MsIFNUTTMyRjQwMVJCLCBTVE0zMkY0MDFSQywgU1RNMzJGNDAxVkIgYW5kIFNUTTMyRjQwMVZDIERldmljZXMgKi8NCiAgLyogI2RlZmluZSBTVE0zMkY0MDF4RSAqLyAgIC8qITwgU1RNMzJGNDAxQ0QsIFNUTTMyRjQwMVJELCBTVE0zMkY0MDFWRCwgU1RNMzJGNDAxQ0UsIFNUTTMyRjQwMVJFIGFuZCBTVE0zMkY0MDFWRSBEZXZpY2VzICovDQogIC8qICNkZWZpbmUgU1RNMzJGNDEwVHggKi8gICAvKiE8IFNUTTMyRjQxMFQ4IGFuZCBTVE0zMkY0MTBUQiBEZXZpY2VzICovDQogIC8qICNkZWZpbmUgU1RNMzJGNDEwQ3ggKi8gICAvKiE8IFNUTTMyRjQxMEM4IGFuZCBTVE0zMkY0MTBDQiBEZXZpY2VzICovDQogIC8qICNkZWZpbmUgU1RNMzJGNDEwUnggKi8gICAvKiE8IFNUTTMyRjQxMFI4IGFuZCBTVE0zMkY0MTBSQiBEZXZpY2VzICovDQogIC8qICNkZWZpbmUgU1RNMzJGNDExeEUgKi8gICAvKiE8IFNUTTMyRjQxMUNDLCBTVE0zMkY0MTFSQywgU1RNMzJGNDExVkMsIFNUTTMyRjQxMUNFLCBTVE0zMkY0MTFSRSBhbmQgU1RNMzJGNDExVkUgRGV2aWNlcyAqLw0KICAvKiAjZGVmaW5lIFNUTTMyRjQ0Nnh4ICovICAgLyohPCBTVE0zMkY0NDZNQywgU1RNMzJGNDQ2TUUsIFNUTTMyRjQ0NlJDLCBTVE0zMkY0NDZSRSwgU1RNMzJGNDQ2VkMsIFNUTTMyRjQ0NlZFLCBTVE0zMkY0NDZaQywgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBTVE0zMkY0NDZaRSBEZXZpY2VzICovDQogIC8qICNkZWZpbmUgU1RNMzJGNDY5eHggKi8gICAvKiE8IFNUTTMyRjQ2OUFJLCBTVE0zMkY0NjlJSSwgU1RNMzJGNDY5QkksIFNUTTMyRjQ2OU5JLCBTVE0zMkY0NjlBRywgU1RNMzJGNDY5SUcsIFNUTTMyRjQ2OUJHLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RNMzJGNDY5TkcsIFNUTTMyRjQ2OUFFLCBTVE0zMkY0NjlJRSwgU1RNMzJGNDY5QkUgYW5kIFNUTTMyRjQ2OU5FIERldmljZXMgKi8NCiAgLyogI2RlZmluZSBTVE0zMkY0Nzl4eCAqLyAgIC8qITwgU1RNMzJGNDc5QUksIFNUTTMyRjQ3OUlJLCBTVE0zMkY0NzlCSSwgU1RNMzJGNDc5TkksIFNUTTMyRjQ3OUFHLCBTVE0zMkY0NzlJRywgU1RNMzJGNDc5QkcgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBTVE0zMkY0NzlORyBEZXZpY2VzICovDQogIC8qICNkZWZpbmUgU1RNMzJGNDEyQ3ggKi8gICAvKiE8IFNUTTMyRjQxMkNFVSBhbmQgU1RNMzJGNDEyQ0dVIERldmljZXMgKi8NCiAgLyogI2RlZmluZSBTVE0zMkY0MTJaeCAqLyAgIC8qITwgU1RNMzJGNDEyWkVULCBTVE0zMkY0MTJaR1QsIFNUTTMyRjQxMlpFSiBhbmQgU1RNMzJGNDEyWkdKIERldmljZXMgKi8NCiAgLyogI2RlZmluZSBTVE0zMkY0MTJWeCAqLyAgIC8qITwgU1RNMzJGNDEyVkVULCBTVE0zMkY0MTJWR1QsIFNUTTMyRjQxMlZFSCBhbmQgU1RNMzJGNDEyVkdIIERldmljZXMgKi8NCiAgLyogI2RlZmluZSBTVE0zMkY0MTJSeCAqLyAgIC8qITwgU1RNMzJGNDEyUkVULCBTVE0zMkY0MTJSR1QsIFNUTTMyRjQxMlJFWSBhbmQgU1RNMzJGNDEyUkdZIERldmljZXMgKi8NCiAgLyogI2RlZmluZSBTVE0zMkY0MTN4eCAqLyAgIC8qITwgU1RNMzJGNDEzQ0gsIFNUTTMyRjQxM01ILCBTVE0zMkY0MTNSSCwgU1RNMzJGNDEzVkgsIFNUTTMyRjQxM1pILCBTVE0zMkY0MTNDRywgU1RNMzJGNDEzTUcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUTTMyRjQxM1JHLCBTVE0zMkY0MTNWRyBhbmQgU1RNMzJGNDEzWkcgRGV2aWNlcyAqLw0KICAvKiAjZGVmaW5lIFNUTTMyRjQyM3h4ICovICAgLyohPCBTVE0zMkY0MjNDSCwgU1RNMzJGNDIzUkgsIFNUTTMyRjQyM1ZIIGFuZCBTVE0zMkY0MjNaSCBEZXZpY2VzICovDQojZW5kaWYNCiAgIA0KLyogIFRpcDogVG8gYXZvaWQgbW9kaWZ5aW5nIHRoaXMgZmlsZSBlYWNoIHRpbWUgeW91IG5lZWQgdG8gc3dpdGNoIGJldHdlZW4gdGhlc2UNCiAgICAgICAgZGV2aWNlcywgeW91IGNhbiBkZWZpbmUgdGhlIGRldmljZSBpbiB5b3VyIHRvb2xjaGFpbiBjb21waWxlciBwcmVwcm9jZXNzb3IuDQogICovDQojaWYgIWRlZmluZWQgIChVU0VfSEFMX0RSSVZFUikNCi8qKg0KICogQGJyaWVmIENvbW1lbnQgdGhlIGxpbmUgYmVsb3cgaWYgeW91IHdpbGwgbm90IHVzZSB0aGUgcGVyaXBoZXJhbHMgZHJpdmVycy4NCiAgIEluIHRoaXMgY2FzZSwgdGhlc2UgZHJpdmVycyB3aWxsIG5vdCBiZSBpbmNsdWRlZCBhbmQgdGhlIGFwcGxpY2F0aW9uIGNvZGUgd2lsbCANCiAgIGJlIGJhc2VkIG9uIGRpcmVjdCBhY2Nlc3MgdG8gcGVyaXBoZXJhbHMgcmVnaXN0ZXJzIA0KICAgKi8NCiAgLyojZGVmaW5lIFVTRV9IQUxfRFJJVkVSICovDQojZW5kaWYgLyogVVNFX0hBTF9EUklWRVIgKi8NCg0KLyoqDQogICogQGJyaWVmIENNU0lTIHZlcnNpb24gbnVtYmVyIFYyLjYuMg0KICAqLw0KI2RlZmluZSBfX1NUTTMyRjR4eF9DTVNJU19WRVJTSU9OX01BSU4gICAoMHgwMlUpIC8qITwgWzMxOjI0XSBtYWluIHZlcnNpb24gKi8NCiNkZWZpbmUgX19TVE0zMkY0eHhfQ01TSVNfVkVSU0lPTl9TVUIxICAgKDB4MDZVKSAvKiE8IFsyMzoxNl0gc3ViMSB2ZXJzaW9uICovDQojZGVmaW5lIF9fU1RNMzJGNHh4X0NNU0lTX1ZFUlNJT05fU1VCMiAgICgweDAyVSkgLyohPCBbMTU6OF0gIHN1YjIgdmVyc2lvbiAqLw0KI2RlZmluZSBfX1NUTTMyRjR4eF9DTVNJU19WRVJTSU9OX1JDICAgICAoMHgwMFUpIC8qITwgWzc6MF0gIHJlbGVhc2UgY2FuZGlkYXRlICovDQojZGVmaW5lIF9fU1RNMzJGNHh4X0NNU0lTX1ZFUlNJT04gICAgICAgICgoX19TVE0zMkY0eHhfQ01TSVNfVkVSU0lPTl9NQUlOIDw8IDI0KVwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfChfX1NUTTMyRjR4eF9DTVNJU19WRVJTSU9OX1NVQjEgPDwgMTYpXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8KF9fU1RNMzJGNHh4X0NNU0lTX1ZFUlNJT05fU1VCMiA8PCA4IClcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwoX19TVE0zMkY0eHhfQ01TSVNfVkVSU0lPTikpDQoNCi8qKg0KICAqIEB9DQogICovDQoNCi8qKiBAYWRkdG9ncm91cCBEZXZpY2VfSW5jbHVkZWQNCiAgKiBAew0KICAqLw0KDQojaWYgZGVmaW5lZChTVE0zMkY0MDV4eCkNCiAgI2luY2x1ZGUgInN0bTMyZjQwNXh4LmgiDQojZWxpZiBkZWZpbmVkKFNUTTMyRjQxNXh4KQ0KICAjaW5jbHVkZSAic3RtMzJmNDE1eHguaCINCiNlbGlmIGRlZmluZWQoU1RNMzJGNDA3eHgpDQogICNpbmNsdWRlICJzdG0zMmY0MDd4eC5oIg0KI2VsaWYgZGVmaW5lZChTVE0zMkY0MTd4eCkNCiAgI2luY2x1ZGUgInN0bTMyZjQxN3h4LmgiDQojZWxpZiBkZWZpbmVkKFNUTTMyRjQyN3h4KQ0KICAjaW5jbHVkZSAic3RtMzJmNDI3eHguaCINCiNlbGlmIGRlZmluZWQoU1RNMzJGNDM3eHgpDQogICNpbmNsdWRlICJzdG0zMmY0Mzd4eC5oIg0KI2VsaWYgZGVmaW5lZChTVE0zMkY0Mjl4eCkNCiAgI2luY2x1ZGUgInN0bTMyZjQyOXh4LmgiDQojZWxpZiBkZWZpbmVkKFNUTTMyRjQzOXh4KQ0KICAjaW5jbHVkZSAic3RtMzJmNDM5eHguaCINCiNlbGlmIGRlZmluZWQoU1RNMzJGNDAxeEMpDQogICNpbmNsdWRlICJzdG0zMmY0MDF4Yy5oIg0KI2VsaWYgZGVmaW5lZChTVE0zMkY0MDF4RSkNCiAgI2luY2x1ZGUgInN0bTMyZjQwMXhlLmgiDQojZWxpZiBkZWZpbmVkKFNUTTMyRjQxMFR4KQ0KICAjaW5jbHVkZSAic3RtMzJmNDEwdHguaCINCiNlbGlmIGRlZmluZWQoU1RNMzJGNDEwQ3gpDQogICNpbmNsdWRlICJzdG0zMmY0MTBjeC5oIg0KI2VsaWYgZGVmaW5lZChTVE0zMkY0MTBSeCkNCiAgI2luY2x1ZGUgInN0bTMyZjQxMHJ4LmgiDQojZWxpZiBkZWZpbmVkKFNUTTMyRjQxMXhFKQ0KICAjaW5jbHVkZSAic3RtMzJmNDExeGUuaCINCiNlbGlmIGRlZmluZWQoU1RNMzJGNDQ2eHgpDQogICNpbmNsdWRlICJzdG0zMmY0NDZ4eC5oIg0KI2VsaWYgZGVmaW5lZChTVE0zMkY0Njl4eCkNCiAgI2luY2x1ZGUgInN0bTMyZjQ2OXh4LmgiDQojZWxpZiBkZWZpbmVkKFNUTTMyRjQ3OXh4KQ0KICAjaW5jbHVkZSAic3RtMzJmNDc5eHguaCINCiNlbGlmIGRlZmluZWQoU1RNMzJGNDEyQ3gpDQogICNpbmNsdWRlICJzdG0zMmY0MTJjeC5oIg0KI2VsaWYgZGVmaW5lZChTVE0zMkY0MTJaeCkNCiAgI2luY2x1ZGUgInN0bTMyZjQxMnp4LmgiDQojZWxpZiBkZWZpbmVkKFNUTTMyRjQxMlJ4KQ0KICAjaW5jbHVkZSAic3RtMzJmNDEycnguaCINCiNlbGlmIGRlZmluZWQoU1RNMzJGNDEyVngpDQogICNpbmNsdWRlICJzdG0zMmY0MTJ2eC5oIg0KI2VsaWYgZGVmaW5lZChTVE0zMkY0MTN4eCkNCiAgI2luY2x1ZGUgInN0bTMyZjQxM3h4LmgiDQojZWxpZiBkZWZpbmVkKFNUTTMyRjQyM3h4KQ0KICAjaW5jbHVkZSAic3RtMzJmNDIzeHguaCINCiNlbHNlDQogI2Vycm9yICJQbGVhc2Ugc2VsZWN0IGZpcnN0IHRoZSB0YXJnZXQgU1RNMzJGNHh4IGRldmljZSB1c2VkIGluIHlvdXIgYXBwbGljYXRpb24gKGluIHN0bTMyZjR4eC5oIGZpbGUpIg0KI2VuZGlmDQoNCi8qKg0KICAqIEB9DQogICovDQoNCi8qKiBAYWRkdG9ncm91cCBFeHBvcnRlZF90eXBlcw0KICAqIEB7DQogICovIA0KdHlwZWRlZiBlbnVtIA0Kew0KICBSRVNFVCA9IDBVLCANCiAgU0VUID0gIVJFU0VUDQp9IEZsYWdTdGF0dXMsIElUU3RhdHVzOw0KDQp0eXBlZGVmIGVudW0gDQp7DQogIERJU0FCTEUgPSAwVSwgDQogIEVOQUJMRSA9ICFESVNBQkxFDQp9IEZ1bmN0aW9uYWxTdGF0ZTsNCiNkZWZpbmUgSVNfRlVOQ1RJT05BTF9TVEFURShTVEFURSkgKCgoU1RBVEUpID09IERJU0FCTEUpIHx8ICgoU1RBVEUpID09IEVOQUJMRSkpDQoNCnR5cGVkZWYgZW51bSANCnsNCiAgRVJST1IgPSAwVSwgDQogIFNVQ0NFU1MgPSAhRVJST1INCn0gRXJyb3JTdGF0dXM7DQoNCi8qKg0KICAqIEB9DQogICovDQoNCg0KLyoqIEBhZGR0b2dyb3VwIEV4cG9ydGVkX21hY3JvDQogICogQHsNCiAgKi8NCiNkZWZpbmUgU0VUX0JJVChSRUcsIEJJVCkgICAgICgoUkVHKSB8PSAoQklUKSkNCg0KI2RlZmluZSBDTEVBUl9CSVQoUkVHLCBCSVQpICAgKChSRUcpICY9IH4oQklUKSkNCg0KI2RlZmluZSBSRUFEX0JJVChSRUcsIEJJVCkgICAgKChSRUcpICYgKEJJVCkpDQoNCiNkZWZpbmUgQ0xFQVJfUkVHKFJFRykgICAgICAgICgoUkVHKSA9ICgweDApKQ0KDQojZGVmaW5lIFdSSVRFX1JFRyhSRUcsIFZBTCkgICAoKFJFRykgPSAoVkFMKSkNCg0KI2RlZmluZSBSRUFEX1JFRyhSRUcpICAgICAgICAgKChSRUcpKQ0KDQojZGVmaW5lIE1PRElGWV9SRUcoUkVHLCBDTEVBUk1BU0ssIFNFVE1BU0spICBXUklURV9SRUcoKFJFRyksICgoKFJFQURfUkVHKFJFRykpICYgKH4oQ0xFQVJNQVNLKSkpIHwgKFNFVE1BU0spKSkNCg0KI2RlZmluZSBQT1NJVElPTl9WQUwoVkFMKSAgICAgKF9fQ0xaKF9fUkJJVChWQUwpKSkgDQoNCg0KLyoqDQogICogQH0NCiAgKi8NCg0KI2lmIGRlZmluZWQgKFVTRV9IQUxfRFJJVkVSKQ0KICNpbmNsdWRlICJzdG0zMmY0eHhfaGFsLmgiDQojZW5kaWYgLyogVVNFX0hBTF9EUklWRVIgKi8NCg0KI2lmZGVmIF9fY3BsdXNwbHVzDQp9DQojZW5kaWYgLyogX19jcGx1c3BsdXMgKi8NCg0KI2VuZGlmIC8qIF9fU1RNMzJGNHh4X0ggKi8NCi8qKg0KICAqIEB9DQogICovDQoNCi8qKg0KICAqIEB9DQogICovDQogIA0KDQoNCg0KLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8NCg==