LyoqDQogKiBAZmlsZSBhdHJlZ19tc2cuaA0KICogQGJyaWVmIMzhualsaWJhdHJlZ8/gudjP+8+ioaK94bm5zOUNCiAqDQogKiBDb3B5cmlnaHQgKEMpIDIwMjIgU2FuZWNoaXBzIFRlY2hub2xvZ3kgQ28uLCBMdGQuDQogKiBAYXV0aG9yIA0KICogQGluZ3JvdXAgDQogKiANCiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQogKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcw0KICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uIA0KICoNCiAqLw0KDQoNCiNpZm5kZWYgX0FUUkVHX01TR19IDQojZGVmaW5lIF9BVFJFR19NU0dfSA0KDQoNCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogKiAgICAgICAgICAgICAgICAgICAgICAgICAgIEluY2x1ZGUgaGVhZGVyIGZpbGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQojaW5jbHVkZSAibWVzc2FnZS5oIg0KDQoNCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm8gZGVmaW5pdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQoNCg0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlIGRlZmluaXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi8qKiDP+8+iaWQgKi8NCmVudW0gTVNHX0NETV9SQU5HRV9UDQp7DQoJTVNHX0NNRF9BVF9SRUdfQkFTRSA9IE1TR19DTURfRVhUQVRfQkFTRSwNCg0KCS8qIGF016Ky4c/7z6JpZLao0uUgKi8NCglNU0dfQ01EX0FUX1JFR19SRVEsDQoJTVNHX0NNRF9BVF9SRUdfUlNQLAkNCgkNCgkvKiBhdNeiz/rP+8+iaWS2qNLlICovDQoJTVNHX0NNRF9BVF9VTlJFR19SRVEsDQoJTVNHX0NNRF9BVF9VTlJFR19SU1AsDQp9Ow0KDQoNCi8qKiBBVNeisuHWwWF0X2N0bCAqLw0Kc3RydWN0IGF0cmVnX21zZ190IHsNCgljaGFyIGF0X2NtZF9wcmVmaXhbQVRfQ01EX1BSRUZJWF07DQoJDQogICAgaW50IHJlcV9tc2dfaWQ7DQoJaW50IHJzcF9tc2dfaWQ7DQoJDQoJLyogQVTA4NDNOiAwLXNlciwgMS1pbmZvICovDQoJaW50IHR5cGU7ICANCgkNCglpbnQgcmVzOw0KfTsNCg0KDQovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICogICAgICAgICAgICAgICAgICAgICAgIEdsb2JhbCB2YXJpYWJsZSBkZWNsYXJhdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICoNCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KDQoNCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogKiAgICAgICAgICAgICAgICAgICAgICAgR2xvYmFsIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogDQoNCiNlbmRpZg0KDQo=