LyoqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIEBmaWxlICAgIHN0bTMybDR4eC5oDQogICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0NCiAgKiBAYnJpZWYgICBDTVNJUyBTVE0zMkw0eHggRGV2aWNlIFBlcmlwaGVyYWwgQWNjZXNzIExheWVyIEhlYWRlciBGaWxlLg0KICAqDQogICogICAgICAgICAgVGhlIGZpbGUgaXMgdGhlIHVuaXF1ZSBpbmNsdWRlIGZpbGUgdGhhdCB0aGUgYXBwbGljYXRpb24gcHJvZ3JhbW1lcg0KICAqICAgICAgICAgIGlzIHVzaW5nIGluIHRoZSBDIHNvdXJjZSBjb2RlLCB1c3VhbGx5IGluIG1haW4uYy4gVGhpcyBmaWxlIGNvbnRhaW5zOg0KICAqICAgICAgICAgICAtIENvbmZpZ3VyYXRpb24gc2VjdGlvbiB0aGF0IGFsbG93cyB0byBzZWxlY3Q6DQogICogICAgICAgICAgICAgIC0gVGhlIFNUTTMyTDR4eCBkZXZpY2UgdXNlZCBpbiB0aGUgdGFyZ2V0IGFwcGxpY2F0aW9uDQogICogICAgICAgICAgICAgIC0gVG8gdXNlIG9yIG5vdCB0aGUgcGVyaXBoZXJhbJJzIGRyaXZlcnMgaW4gYXBwbGljYXRpb24gY29kZShpLmUuDQogICogICAgICAgICAgICAgICAgY29kZSB3aWxsIGJlIGJhc2VkIG9uIGRpcmVjdCBhY2Nlc3MgdG8gcGVyaXBoZXJhbJJzIHJlZ2lzdGVycw0KICAqICAgICAgICAgICAgICAgIHJhdGhlciB0aGFuIGRyaXZlcnMgQVBJKSwgdGhpcyBvcHRpb24gaXMgY29udHJvbGxlZCBieQ0KICAqICAgICAgICAgICAgICAgICIjZGVmaW5lIFVTRV9IQUxfRFJJVkVSIg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIEBhdHRlbnRpb24NCiAgKg0KICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDT1BZUklHSFQoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3M8L2NlbnRlcj48L2gyPg0KICAqDQogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwNCiAgKiBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6DQogICogICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsDQogICogICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KICAqICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLA0KICAqICAgICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbg0KICAqICAgICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQogICogICAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIFNUTWljcm9lbGVjdHJvbmljcyBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMNCiAgKiAgICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQ0KICAqICAgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQogICoNCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyINCiAgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFDQogICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFDQogICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQ0KICAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMDQogICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1INCiAgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUg0KICAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksDQogICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UNCiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqLw0KDQovKiogQGFkZHRvZ3JvdXAgQ01TSVMNCiAgKiBAew0KICAqLw0KDQovKiogQGFkZHRvZ3JvdXAgc3RtMzJsNHh4DQogICogQHsNCiAgKi8NCg0KI2lmbmRlZiBfX1NUTTMyTDR4eF9IDQojZGVmaW5lIF9fU1RNMzJMNHh4X0gNCg0KI2lmZGVmIF9fY3BsdXNwbHVzDQogZXh0ZXJuICJDIiB7DQojZW5kaWYgLyogX19jcGx1c3BsdXMgKi8NCg0KLyoqIEBhZGR0b2dyb3VwIExpYnJhcnlfY29uZmlndXJhdGlvbl9zZWN0aW9uDQogICogQHsNCiAgKi8NCg0KLyoqDQogICogQGJyaWVmIFNUTTMyIEZhbWlseQ0KICAqLw0KI2lmICFkZWZpbmVkIChTVE0zMkw0KQ0KI2RlZmluZSBTVE0zMkw0DQojZW5kaWYgLyogU1RNMzJMNCAqLw0KDQovKiBVbmNvbW1lbnQgdGhlIGxpbmUgYmVsb3cgYWNjb3JkaW5nIHRvIHRoZSB0YXJnZXQgU1RNMzJMNCBkZXZpY2UgdXNlZCBpbiB5b3VyDQogICBhcHBsaWNhdGlvbg0KICAqLw0KDQojaWYgIWRlZmluZWQgKFNUTTMyTDQzMXh4KSAmJiAhZGVmaW5lZCAoU1RNMzJMNDMyeHgpICYmICFkZWZpbmVkIChTVE0zMkw0MzN4eCkgJiYgIWRlZmluZWQgKFNUTTMyTDQ0Mnh4KSAmJiAhZGVmaW5lZCAoU1RNMzJMNDQzeHgpICYmIFwNCiAgICAhZGVmaW5lZCAoU1RNMzJMNDUxeHgpICYmICFkZWZpbmVkIChTVE0zMkw0NTJ4eCkgJiYgIWRlZmluZWQgKFNUTTMyTDQ2Mnh4KSAmJiBcDQogICAgIWRlZmluZWQgKFNUTTMyTDQ3MXh4KSAmJiAhZGVmaW5lZCAoU1RNMzJMNDc1eHgpICYmICFkZWZpbmVkIChTVE0zMkw0NzZ4eCkgJiYgIWRlZmluZWQgKFNUTTMyTDQ4NXh4KSAmJiAhZGVmaW5lZCAoU1RNMzJMNDg2eHgpICYmIFwNCiAgICAhZGVmaW5lZCAoU1RNMzJMNDk2eHgpICYmICFkZWZpbmVkIChTVE0zMkw0QTZ4eCkgJiYgXA0KICAgICFkZWZpbmVkIChTVE0zMkw0UjV4eCkgJiYgIWRlZmluZWQgKFNUTTMyTDRSN3h4KSAmJiAhZGVmaW5lZCAoU1RNMzJMNFI5eHgpICYmICFkZWZpbmVkIChTVE0zMkw0UzV4eCkgJiYgIWRlZmluZWQgKFNUTTMyTDRTN3h4KSAmJiAhZGVmaW5lZCAoU1RNMzJMNFM5eHgpDQogIC8qICNkZWZpbmUgU1RNMzJMNDMxeHggKi8gICAvKiE8IFNUTTMyTDQzMXh4IERldmljZXMgKi8NCiAgLyogI2RlZmluZSBTVE0zMkw0MzJ4eCAqLyAgIC8qITwgU1RNMzJMNDMyeHggRGV2aWNlcyAqLw0KICAvKiAjZGVmaW5lIFNUTTMyTDQzM3h4ICovICAgLyohPCBTVE0zMkw0MzN4eCBEZXZpY2VzICovDQogIC8qICNkZWZpbmUgU1RNMzJMNDQyeHggKi8gICAvKiE8IFNUTTMyTDQ0Mnh4IERldmljZXMgKi8NCiAgLyogI2RlZmluZSBTVE0zMkw0NDN4eCAqLyAgIC8qITwgU1RNMzJMNDQzeHggRGV2aWNlcyAqLw0KICAvKiAjZGVmaW5lIFNUTTMyTDQ1MXh4ICovICAgLyohPCBTVE0zMkw0NTF4eCBEZXZpY2VzICovDQogIC8qICNkZWZpbmUgU1RNMzJMNDUyeHggKi8gICAvKiE8IFNUTTMyTDQ1Mnh4IERldmljZXMgKi8NCiAgLyogI2RlZmluZSBTVE0zMkw0NjJ4eCAqLyAgIC8qITwgU1RNMzJMNDYyeHggRGV2aWNlcyAqLw0KICAvKiAjZGVmaW5lIFNUTTMyTDQ3MXh4ICovICAgLyohPCBTVE0zMkw0NzF4eCBEZXZpY2VzICovDQogIC8qICNkZWZpbmUgU1RNMzJMNDc1eHggKi8gICAvKiE8IFNUTTMyTDQ3NXh4IERldmljZXMgKi8NCiAgLyogI2RlZmluZSBTVE0zMkw0NzZ4eCAqLyAgIC8qITwgU1RNMzJMNDc2eHggRGV2aWNlcyAqLw0KICAvKiAjZGVmaW5lIFNUTTMyTDQ4NXh4ICovICAgLyohPCBTVE0zMkw0ODV4eCBEZXZpY2VzICovDQogIC8qICNkZWZpbmUgU1RNMzJMNDg2eHggKi8gICAvKiE8IFNUTTMyTDQ4Nnh4IERldmljZXMgKi8NCiAgLyogI2RlZmluZSBTVE0zMkw0OTZ4eCAqLyAgIC8qITwgU1RNMzJMNDk2eHggRGV2aWNlcyAqLw0KICAvKiAjZGVmaW5lIFNUTTMyTDRBNnh4ICovICAgLyohPCBTVE0zMkw0QTZ4eCBEZXZpY2VzICovDQogIC8qICNkZWZpbmUgU1RNMzJMNFI1eHggKi8gICAvKiE8IFNUTTMyTDRSNXh4IERldmljZXMgKi8NCiAgLyogI2RlZmluZSBTVE0zMkw0Ujd4eCAqLyAgIC8qITwgU1RNMzJMNFI3eHggRGV2aWNlcyAqLw0KICAvKiAjZGVmaW5lIFNUTTMyTDRSOXh4ICovICAgLyohPCBTVE0zMkw0Ujl4eCBEZXZpY2VzICovDQogIC8qICNkZWZpbmUgU1RNMzJMNFM1eHggKi8gICAvKiE8IFNUTTMyTDRTNXh4IERldmljZXMgKi8NCiAgLyogI2RlZmluZSBTVE0zMkw0Uzd4eCAqLyAgIC8qITwgU1RNMzJMNFM3eHggRGV2aWNlcyAqLw0KICAvKiAjZGVmaW5lIFNUTTMyTDRTOXh4ICovICAgLyohPCBTVE0zMkw0Uzl4eCBEZXZpY2VzICovDQojZW5kaWYNCg0KLyogIFRpcDogVG8gYXZvaWQgbW9kaWZ5aW5nIHRoaXMgZmlsZSBlYWNoIHRpbWUgeW91IG5lZWQgdG8gc3dpdGNoIGJldHdlZW4gdGhlc2UNCiAgICAgICAgZGV2aWNlcywgeW91IGNhbiBkZWZpbmUgdGhlIGRldmljZSBpbiB5b3VyIHRvb2xjaGFpbiBjb21waWxlciBwcmVwcm9jZXNzb3IuDQogICovDQojaWYgIWRlZmluZWQgIChVU0VfSEFMX0RSSVZFUikNCi8qKg0KICogQGJyaWVmIENvbW1lbnQgdGhlIGxpbmUgYmVsb3cgaWYgeW91IHdpbGwgbm90IHVzZSB0aGUgcGVyaXBoZXJhbHMgZHJpdmVycy4NCiAgIEluIHRoaXMgY2FzZSwgdGhlc2UgZHJpdmVycyB3aWxsIG5vdCBiZSBpbmNsdWRlZCBhbmQgdGhlIGFwcGxpY2F0aW9uIGNvZGUgd2lsbA0KICAgYmUgYmFzZWQgb24gZGlyZWN0IGFjY2VzcyB0byBwZXJpcGhlcmFscyByZWdpc3RlcnMNCiAgICovDQogIC8qI2RlZmluZSBVU0VfSEFMX0RSSVZFUiAqLw0KI2VuZGlmIC8qIFVTRV9IQUxfRFJJVkVSICovDQoNCi8qKg0KICAqIEBicmllZiBDTVNJUyBEZXZpY2UgdmVyc2lvbiBudW1iZXINCiAgKi8NCiNkZWZpbmUgX19TVE0zMkw0X0NNU0lTX1ZFUlNJT05fTUFJTiAgICgweDAxKSAvKiE8IFszMToyNF0gbWFpbiB2ZXJzaW9uICovDQojZGVmaW5lIF9fU1RNMzJMNF9DTVNJU19WRVJTSU9OX1NVQjEgICAoMHgwNCkgLyohPCBbMjM6MTZdIHN1YjEgdmVyc2lvbiAqLw0KI2RlZmluZSBfX1NUTTMyTDRfQ01TSVNfVkVSU0lPTl9TVUIyICAgKDB4MDMpIC8qITwgWzE1OjhdICBzdWIyIHZlcnNpb24gKi8NCiNkZWZpbmUgX19TVE0zMkw0X0NNU0lTX1ZFUlNJT05fUkMgICAgICgweDAwKSAvKiE8IFs3OjBdICByZWxlYXNlIGNhbmRpZGF0ZSAqLw0KI2RlZmluZSBfX1NUTTMyTDRfQ01TSVNfVkVSU0lPTiAgICAgICAgKChfX1NUTTMyTDRfQ01TSVNfVkVSU0lPTl9NQUlOIDw8IDI0KVwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwoX19TVE0zMkw0X0NNU0lTX1ZFUlNJT05fU1VCMSA8PCAxNilcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8KF9fU1RNMzJMNF9DTVNJU19WRVJTSU9OX1NVQjIgPDwgOCApXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfChfX1NUTTMyTDRfQ01TSVNfVkVSU0lPTl9SQykpDQoNCi8qKg0KICAqIEB9DQogICovDQoNCi8qKiBAYWRkdG9ncm91cCBEZXZpY2VfSW5jbHVkZWQNCiAgKiBAew0KICAqLw0KDQojaWYgZGVmaW5lZChTVE0zMkw0MzF4eCkNCiAgI2luY2x1ZGUgInN0bTMybDQzMXh4LmgiDQojZWxpZiBkZWZpbmVkKFNUTTMyTDQzMnh4KQ0KICAjaW5jbHVkZSAic3RtMzJsNDMyeHguaCINCiNlbGlmIGRlZmluZWQoU1RNMzJMNDMzeHgpDQogICNpbmNsdWRlICJzdG0zMmw0MzN4eC5oIg0KI2VsaWYgZGVmaW5lZChTVE0zMkw0NDJ4eCkNCiAgI2luY2x1ZGUgInN0bTMybDQ0Mnh4LmgiDQojZWxpZiBkZWZpbmVkKFNUTTMyTDQ0M3h4KQ0KICAjaW5jbHVkZSAic3RtMzJsNDQzeHguaCINCiNlbGlmIGRlZmluZWQoU1RNMzJMNDUxeHgpDQogICNpbmNsdWRlICJzdG0zMmw0NTF4eC5oIg0KI2VsaWYgZGVmaW5lZChTVE0zMkw0NTJ4eCkNCiAgI2luY2x1ZGUgInN0bTMybDQ1Mnh4LmgiDQojZWxpZiBkZWZpbmVkKFNUTTMyTDQ2Mnh4KQ0KICAjaW5jbHVkZSAic3RtMzJsNDYyeHguaCINCiNlbGlmIGRlZmluZWQoU1RNMzJMNDcxeHgpDQogICNpbmNsdWRlICJzdG0zMmw0NzF4eC5oIg0KI2VsaWYgZGVmaW5lZChTVE0zMkw0NzV4eCkNCiAgI2luY2x1ZGUgInN0bTMybDQ3NXh4LmgiDQojZWxpZiBkZWZpbmVkKFNUTTMyTDQ3Nnh4KQ0KICAjaW5jbHVkZSAic3RtMzJsNDc2eHguaCINCiNlbGlmIGRlZmluZWQoU1RNMzJMNDg1eHgpDQogICNpbmNsdWRlICJzdG0zMmw0ODV4eC5oIg0KI2VsaWYgZGVmaW5lZChTVE0zMkw0ODZ4eCkNCiAgI2luY2x1ZGUgInN0bTMybDQ4Nnh4LmgiDQojZWxpZiBkZWZpbmVkKFNUTTMyTDQ5Nnh4KQ0KICAjaW5jbHVkZSAic3RtMzJsNDk2eHguaCINCiNlbGlmIGRlZmluZWQoU1RNMzJMNEE2eHgpDQogICNpbmNsdWRlICJzdG0zMmw0YTZ4eC5oIg0KI2VsaWYgZGVmaW5lZChTVE0zMkw0UjV4eCkNCiAgI2luY2x1ZGUgInN0bTMybDRyNXh4LmgiDQojZWxpZiBkZWZpbmVkKFNUTTMyTDRSN3h4KQ0KICAjaW5jbHVkZSAic3RtMzJsNHI3eHguaCINCiNlbGlmIGRlZmluZWQoU1RNMzJMNFI5eHgpDQogICNpbmNsdWRlICJzdG0zMmw0cjl4eC5oIg0KI2VsaWYgZGVmaW5lZChTVE0zMkw0UzV4eCkNCiAgI2luY2x1ZGUgInN0bTMybDRzNXh4LmgiDQojZWxpZiBkZWZpbmVkKFNUTTMyTDRTN3h4KQ0KICAjaW5jbHVkZSAic3RtMzJsNHM3eHguaCINCiNlbGlmIGRlZmluZWQoU1RNMzJMNFM5eHgpDQogICNpbmNsdWRlICJzdG0zMmw0czl4eC5oIg0KI2Vsc2UNCiAjZXJyb3IgIlBsZWFzZSBzZWxlY3QgZmlyc3QgdGhlIHRhcmdldCBTVE0zMkw0eHggZGV2aWNlIHVzZWQgaW4geW91ciBhcHBsaWNhdGlvbiAoaW4gc3RtMzJsNHh4LmggZmlsZSkiDQojZW5kaWYNCg0KLyoqDQogICogQH0NCiAgKi8NCg0KLyoqIEBhZGR0b2dyb3VwIEV4cG9ydGVkX3R5cGVzDQogICogQHsNCiAgKi8NCnR5cGVkZWYgZW51bQ0Kew0KICBSRVNFVCA9IDAsDQogIFNFVCA9ICFSRVNFVA0KfSBGbGFnU3RhdHVzLCBJVFN0YXR1czsNCg0KdHlwZWRlZiBlbnVtDQp7DQogIERJU0FCTEUgPSAwLA0KICBFTkFCTEUgPSAhRElTQUJMRQ0KfSBGdW5jdGlvbmFsU3RhdGU7DQojZGVmaW5lIElTX0ZVTkNUSU9OQUxfU1RBVEUoU1RBVEUpICgoKFNUQVRFKSA9PSBESVNBQkxFKSB8fCAoKFNUQVRFKSA9PSBFTkFCTEUpKQ0KDQp0eXBlZGVmIGVudW0NCnsNCiAgRVJST1IgPSAwLA0KICBTVUNDRVNTID0gIUVSUk9SDQp9IEVycm9yU3RhdHVzOw0KDQovKioNCiAgKiBAfQ0KICAqLw0KDQoNCi8qKiBAYWRkdG9ncm91cCBFeHBvcnRlZF9tYWNyb3MNCiAgKiBAew0KICAqLw0KI2RlZmluZSBTRVRfQklUKFJFRywgQklUKSAgICAgKChSRUcpIHw9IChCSVQpKQ0KDQojZGVmaW5lIENMRUFSX0JJVChSRUcsIEJJVCkgICAoKFJFRykgJj0gfihCSVQpKQ0KDQojZGVmaW5lIFJFQURfQklUKFJFRywgQklUKSAgICAoKFJFRykgJiAoQklUKSkNCg0KI2RlZmluZSBDTEVBUl9SRUcoUkVHKSAgICAgICAgKChSRUcpID0gKDB4MCkpDQoNCiNkZWZpbmUgV1JJVEVfUkVHKFJFRywgVkFMKSAgICgoUkVHKSA9IChWQUwpKQ0KDQojZGVmaW5lIFJFQURfUkVHKFJFRykgICAgICAgICAoKFJFRykpDQoNCiNkZWZpbmUgTU9ESUZZX1JFRyhSRUcsIENMRUFSTUFTSywgU0VUTUFTSykgIFdSSVRFX1JFRygoUkVHKSwgKCgoUkVBRF9SRUcoUkVHKSkgJiAofihDTEVBUk1BU0spKSkgfCAoU0VUTUFTSykpKQ0KDQojZGVmaW5lIFBPU0lUSU9OX1ZBTChWQUwpICAgICAoX19DTFooX19SQklUKFZBTCkpKQ0KDQoNCi8qKg0KICAqIEB9DQogICovDQoNCiNpZiBkZWZpbmVkIChVU0VfSEFMX0RSSVZFUikNCiAjaW5jbHVkZSAic3RtMzJsNHh4X2hhbC5oIg0KI2VuZGlmIC8qIFVTRV9IQUxfRFJJVkVSICovDQoNCiNpZmRlZiBfX2NwbHVzcGx1cw0KfQ0KI2VuZGlmIC8qIF9fY3BsdXNwbHVzICovDQoNCiNlbmRpZiAvKiBfX1NUTTMyTDR4eF9IICovDQovKioNCiAgKiBAfQ0KICAqLw0KDQovKioNCiAgKiBAfQ0KICAqLw0KDQoNCg0KDQovKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLw0K