SElTVE9SWSBvZiB0aGUgTFpNQSBTREsNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCjkuMTggYmV0YSAgICAgIDIwMTAtMTEtMDINCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0JDQotIE5ldyBzbWFsbCBTRlggbW9kdWxlIGZvciBpbnN0YWxsZXJzIChTZnhTZXR1cCkuDQoNCg0KOS4xMiBiZXRhICAgICAgMjAxMC0wMy0yNA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSBUaGUgQlVHIGluIExaTUEgU0RLIDkuKiB3YXMgZml4ZWQ6IExaTUEyIGNvZGVjIGRpZG4ndCB3b3JrLA0KICBpZiBtb3JlIHRoYW4gMTAgdGhyZWFkcyB3ZXJlIHVzZWQgKG9yIG1vcmUgdGhhbiAyMCB0aHJlYWRzIGluIHNvbWUgbW9kZXMpLg0KDQoNCjkuMTEgYmV0YSAgICAgIDIwMTAtMDMtMTUNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gUFBNZCBjb21wcmVzc2lvbiBtZXRob2Qgc3VwcG9ydA0KICAgDQoNCjkuMDkgICAgICAgICAgIDIwMDktMTItMTINCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gVGhlIGJ1ZyB3YXMgZml4ZWQ6DQogICBVdGYxNl9Ub19VdGY4IGZ1bnN0aW9ucyBpbiBVVEZDb252ZXJ0LmNwcCBhbmQgN3pNYWluLmMNCiAgIGluY29ycmVjdGx5IGNvbnZlcnRlZCBzdXJyb2dhdGUgY2hhcmFjdGVycyAodGhlIGNvZGUgPj0gMHgxMDAwMCkgdG8gVVRGLTguDQotIFNvbWUgYnVncyB3ZXJlIGZpeGVkDQoNCg0KOS4wNiAgICAgICAgICAgMjAwOS0wOC0xNw0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSBTb21lIGNoYW5nZXMgaW4gQU5TSS1DIDd6IERlY29kZXIgaW50ZXJmYWNlcy4NCg0KDQo5LjA0ICAgICAgICAgICAyMDA5LTA1LTMwDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotIExaTUEyIGNvbXByZXNzaW9uIG1ldGhvZCBzdXBwb3J0DQotIHh6IGZvcm1hdCBzdXBwb3J0DQoNCg0KNC42NSAgICAgICAgICAgMjAwOS0wMi0wMw0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSBTb21lIG1pbm9yIGZpeGVzDQoNCg0KNC42MyAgICAgICAgICAgMjAwOC0xMi0zMQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSBTb21lIG1pbm9yIGZpeGVzDQoNCg0KNC42MSBiZXRhICAgICAgMjAwOC0xMS0yMw0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSBUaGUgYnVnIGluIEFOU0ktQyBMWk1BIERlY29kZXIgd2FzIGZpeGVkOg0KICAgIElmIGVuY29kZWQgc3RyZWFtIHdhcyBjb3JydXB0ZWQsIGRlY29kZXIgY291bGQgYWNjZXNzIG1lbW9yeSANCiAgICBvdXRzaWRlIG9mIGFsbG9jYXRlZCByYW5nZS4NCi0gU29tZSBjaGFuZ2VzIGluIEFOU0ktQyA3eiBEZWNvZGVyIGludGVyZmFjZXMuDQotIExaTUEgU0RLIGlzIHBsYWNlZCBpbiB0aGUgcHVibGljIGRvbWFpbi4NCg0KDQo0LjYwIGJldGEgICAgICAyMDA4LTA4LTE5DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotIFNvbWUgbWlub3IgZml4ZXMuDQoNCg0KNC41OSBiZXRhICAgICAgMjAwOC0wOC0xMw0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSBUaGUgYnVnIHdhcyBmaXhlZDoNCiAgICBMWk1BIEVuY29kZXIgaW4gZmFzdCBjb21wcmVzc2lvbiBtb2RlIGNvdWxkIGFjY2VzcyBtZW1vcnkgb3V0c2lkZSBvZiANCiAgICBhbGxvY2F0ZWQgcmFuZ2UgaW4gc29tZSByYXJlIGNhc2VzLg0KDQoNCjQuNTggYmV0YSAgICAgIDIwMDgtMDUtMDUNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gQU5TSS1DIExaTUEgRGVjb2RlciB3YXMgcmV3cml0dGVuIGZvciBzcGVlZCBvcHRpbWl6YXRpb25zLg0KLSBBTlNJLUMgTFpNQSBFbmNvZGVyIHdhcyBpbmNsdWRlZCB0byBMWk1BIFNESy4NCi0gQysrIExaTUEgY29kZSBub3cgaXMganVzdCB3cmFwcGVyIG92ZXIgQU5TSS1DIGNvZGUuDQoNCg0KNC41NyAgICAgICAgICAgMjAwNy0xMi0xMg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSBTcGVlZCBvcHRpbWl6YXRpb25zIGluINErKyBMWk1BIERlY29kZXIuIA0KLSBTbWFsbCBjaGFuZ2VzIGZvciBtb3JlIGNvbXBhdGliaWxpdHkgd2l0aCBzb21lIEMvQysrIGNvbXBpbGVycy4NCg0KDQo0LjQ5IGJldGEgICAgICAyMDA3LTA3LTA1DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotIC43eiBBTlNJLUMgRGVjb2RlcjoNCiAgICAgLSBub3cgaXQgc3VwcG9ydHMgQkNKIGFuZCBCQ0oyIGZpbHRlcnMNCiAgICAgLSBub3cgaXQgc3VwcG9ydHMgZmlsZXMgbGFyZ2VyIHRoYW4gNCBHQi4NCiAgICAgLSBub3cgaXQgc3VwcG9ydHMgIkxhc3QgV3JpdGUgVGltZSIgZmllbGQgZm9yIGZpbGVzLg0KLSBDKysgY29kZSBmb3IgLjd6IGFyY2hpdmVzIGNvbXByZXNzaW5nL2RlY29tcHJlc3NpbmcgZnJvbSA3LXppcCANCiAgd2FzIGluY2x1ZGVkIHRvIExaTUEgU0RLLg0KICANCg0KNC40MyAgICAgICAgICAgMjAwNi0wNi0wNA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSBTbWFsbCBjaGFuZ2VzIGZvciBtb3JlIGNvbXBhdGliaWxpdHkgd2l0aCBzb21lIEMvQysrIGNvbXBpbGVycy4NCiAgDQoNCjQuNDIgICAgICAgICAgIDIwMDYtMDUtMTUNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gU21hbGwgY2hhbmdlcyBpbiAuaCBmaWxlcyBpbiBBTlNJLUMgdmVyc2lvbi4NCiAgDQoNCjQuMzkgYmV0YSAgICAgIDIwMDYtMDQtMTQNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gVGhlIGJ1ZyBpbiB2ZXJzaW9ucyA0LjMzYjo0LjM4YiB3YXMgZml4ZWQ6DQogIEMrKyB2ZXJzaW9uIG9mIExaTUEgZW5jb2RlciBjb3VsZCBub3QgY29ycmVjdGx5IGNvbXByZXNzIA0KICBmaWxlcyBsYXJnZXIgdGhhbiAyIEdCIHdpdGggSEM0IG1hdGNoIGZpbmRlciAoLW1maGM0KS4NCiAgDQoNCjQuMzcgYmV0YSAgICAgIDIwMDUtMDQtMDYNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gRml4ZXMgaW4gQysrIGNvZGU6IGNvZGUgY291bGQgbm8gYmUgY29tcGlsZWQgaWYgX05PX0VYQ0VQVElPTlMgd2FzIGRlZmluZWQuIA0KDQoNCjQuMzUgYmV0YSAgICAgIDIwMDUtMDMtMDINCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gVGhlIGJ1ZyB3YXMgZml4ZWQgaW4gQysrIHZlcnNpb24gb2YgTFpNQSBEZWNvZGVyOg0KICAgIElmIGVuY29kZWQgc3RyZWFtIHdhcyBjb3JydXB0ZWQsIGRlY29kZXIgY291bGQgYWNjZXNzIG1lbW9yeSANCiAgICBvdXRzaWRlIG9mIGFsbG9jYXRlZCByYW5nZS4NCg0KDQo0LjM0IGJldGEgICAgICAyMDA2LTAyLTI3DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotIENvbXByZXNzaW5nIHNwZWVkIGFuZCBtZW1vcnkgcmVxdWlyZW1lbnRzIGZvciBjb21wcmVzc2luZyB3ZXJlIGluY3JlYXNlZA0KLSBMWk1BIG5vdyBjYW4gdXNlIG9ubHkgdGhlc2UgbWF0Y2ggZmluZGVyczogSEM0LCBCVDIsIEJUMywgQlQ0DQoNCg0KNC4zMiAgICAgICAgICAgMjAwNS0xMi0wOQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSBKYXZhIHZlcnNpb24gb2YgTFpNQSBTREsgd2FzIGluY2x1ZGVkDQoNCg0KNC4zMCAgICAgICAgICAgMjAwNS0xMS0yMA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSBDb21wcmVzc2lvbiByYXRpbyB3YXMgaW1wcm92ZWQgaW4gLWEyIG1vZGUNCi0gU3BlZWQgb3B0aW1pemF0aW9ucyBmb3IgY29tcHJlc3NpbmcgaW4gLWEyIG1vZGUNCi0gLWZiIHN3aXRjaCBub3cgc3VwcG9ydHMgdmFsdWVzIHVwIHRvIDI3Mw0KLSBUaGUgYnVnIGluIDd6X0MgKDd6SW4uYykgd2FzIGZpeGVkOg0KICBJdCB1c2VkIEFsbG9jL0ZyZWUgZnVuY3Rpb25zIGZyb20gZGlmZmVyZW50IG1lbW9yeSBwb29scy4NCiAgU28gaWYgcHJvZ3JhbSB1c2VkIHR3byBtZW1vcnkgcG9vbHMsIGl0IHdvcmtlZCBpbmNvcnJlY3RseS4NCi0gN3pfQzogLjd6IGZvcm1hdCBzdXBwb3J0aW5nIHdhcyBpbXByb3ZlZA0KLSBMWk1BIyBTREsgKEMjLk5FVCB2ZXJzaW9uKSB3YXMgaW5jbHVkZWQNCg0KDQo0LjI3IChVcGRhdGVkKSAyMDA1LTA5LTIxDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotIFNvbWUgR1VJRHMvaW50ZXJmYWNlcyBpbiBDKysgd2VyZSBjaGFuZ2VkLg0KIElTdHJlYW0uaDoNCiAgIElTZXF1ZW50aWFsSW5TdHJlYW06OlJlYWQgbm93IHdvcmtzIGFzIG9sZCBSZWFkUGFydA0KICAgSVNlcXVlbnRpYWxPdXRTdHJlYW06OldyaXRlIG5vdyB3b3JrcyBhcyBvbGQgV3JpdGVQYXJ0DQoNCg0KNC4yNyAgICAgICAgICAgMjAwNS0wOC0wNw0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSBUaGUgYnVnIGluIEx6bWFEZWNvZGVTaXplLmMgd2FzIGZpeGVkOg0KICAgaWYgX0xaTUFfSU5fQ0IgYW5kIF9MWk1BX09VVF9SRUFEIHdlcmUgZGVmaW5lZCwNCiAgIGRlY29tcHJlc3Npbmcgd29ya2VkIGluY29ycmVjdGx5Lg0KDQoNCjQuMjYgICAgICAgICAgIDIwMDUtMDgtMDUNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gRml4ZXMgaW4gN3pfQyBjb2RlIGFuZCBMem1hVGVzdC5jOg0KICBwcmV2aW91cyB2ZXJzaW9ucyBjb3VsZCB3b3JrIGluY29ycmVjdGx5LA0KICBpZiBtYWxsb2MoMCkgcmV0dXJucyAwDQoNCg0KNC4yMyAgICAgICAgICAgMjAwNS0wNi0yOQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSBTbWFsbCBmaXhlcyBpbiBDKysgY29kZQ0KDQoNCjQuMjIgICAgICAgICAgIDIwMDUtMDYtMTANCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gU21hbGwgZml4ZXMNCg0KDQo0LjIxICAgICAgICAgICAyMDA1LTA2LTA4DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotIEludGVyZmFjZXMgZm9yIEFOU0ktQyBMWk1BIERlY29kZXIgKEx6bWFEZWNvZGUuYykgd2VyZSBjaGFuZ2VkDQotIE5ldyBhZGRpdGlvbmFsIHZlcnNpb24gb2YgQU5TSS1DIExaTUEgRGVjb2RlciB3aXRoIHpsaWItbGlrZSBpbnRlcmZhY2U6DQogICAgLSBMem1hU3RhdGVEZWNvZGUuaA0KICAgIC0gTHptYVN0YXRlRGVjb2RlLmMNCiAgICAtIEx6bWFTdGF0ZVRlc3QuYw0KLSBBTlNJLUMgTFpNQSBEZWNvZGVyIG5vdyBjYW4gZGVjb21wcmVzcyBmaWxlcyBsYXJnZXIgdGhhbiA0IEdCDQoNCg0KNC4xNyAgICAgICAgICAgMjAwNS0wNC0xOA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSBOZXcgZXhhbXBsZSBmb3IgUkFNLT5SQU0gY29tcHJlc3NpbmcvZGVjb21wcmVzc2luZzogDQogIExaTUEgKyBCQ0ogKGZpbHRlciBmb3IgeDg2IGNvZGUpOg0KICAgIC0gTHptYVJhbS5oDQogICAgLSBMem1hUmFtLmNwcA0KICAgIC0gTHptYVJhbURlY29kZS5oDQogICAgLSBMem1hUmFtRGVjb2RlLmMNCiAgICAtIC1mODYgc3dpdGNoIGZvciBsem1hLmV4ZQ0KDQoNCjQuMTYgICAgICAgICAgIDIwMDUtMDMtMjkNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gVGhlIGJ1ZyB3YXMgZml4ZWQgaW4gTHptYURlY29kZS5jIChBTlNJLUMgTFpNQSBEZWNvZGVyKTogDQogICBJZiBfTFpNQV9PVVRfUkVBRCB3YXMgZGVmaW5lZCwgYW5kIGlmIGVuY29kZWQgc3RyZWFtIHdhcyBjb3JydXB0ZWQsDQogICBkZWNvZGVyIGNvdWxkIGFjY2VzcyBtZW1vcnkgb3V0c2lkZSBvZiBhbGxvY2F0ZWQgcmFuZ2UuDQotIFNwZWVkIG9wdGltaXphdGlvbiBvZiBBTlNJLUMgTFpNQSBEZWNvZGVyIChub3cgaXQncyBhYm91dCAyMCUgZmFzdGVyKS4NCiAgT2xkIHZlcnNpb24gb2YgTFpNQSBEZWNvZGVyIG5vdyBpcyBpbiBmaWxlIEx6bWFEZWNvZGVTaXplLmMuIA0KICBMem1hRGVjb2RlU2l6ZS5jIGNhbiBwcm92aWRlIHNsaWdodGx5IHNtYWxsZXIgY29kZSB0aGFuIEx6bWFEZWNvZGUuYw0KLSBTbWFsbCBzcGVlZCBvcHRpbWl6YXRpb24gaW4gTFpNQSBDKysgY29kZQ0KLSBmaWx0ZXIgZm9yIFNQQVJDJ3MgY29kZSB3YXMgYWRkZWQNCi0gU2ltcGxpZmllZCB2ZXJzaW9uIG9mIC43eiBBTlNJLUMgRGVjb2RlciB3YXMgaW5jbHVkZWQNCg0KDQo0LjA2ICAgICAgICAgICAyMDA0LTA5LTA1DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotIFRoZSBidWcgaW4gdjQuMDUgd2FzIGZpeGVkOg0KICAgIExaTUEtRW5jb2RlciBkaWRuJ3QgcmVsZWFzZSBvdXRwdXQgc3RyZWFtIGluIHNvbWUgY2FzZXMuDQoNCg0KNC4wNSAgICAgICAgICAgMjAwNC0wOC0yNQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSBTb3VyY2UgY29kZSBvZiBmaWx0ZXJzIGZvciB4ODYsIElBLTY0LCBBUk0sIEFSTS1UaHVtYiANCiAgYW5kIFBvd2VyUEMgY29kZSB3YXMgaW5jbHVkZWQgdG8gU0RLDQotIFNvbWUgaW50ZXJuYWwgbWlub3IgY2hhbmdlcw0KDQoNCjQuMDQgICAgICAgICAgIDIwMDQtMDctMjgNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gTW9yZSBjb21wYXRpYmlsaXR5IHdpdGggc29tZSBDKysgY29tcGlsZXJzDQoNCg0KNC4wMyAgICAgICAgICAgMjAwNC0wNi0xOA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAiQmVuY2htYXJrIiBjb21tYW5kIHdhcyBhZGRlZC4gSXQgbWVhc3VyZXMgY29tcHJlc3NpbmcgDQogIGFuZCBkZWNvbXByZXNzaW5nIHNwZWVkIGFuZCBzaG93cyByYXRpbmcgdmFsdWVzLiANCiAgQWxzbyBpdCBjaGVja3MgaGFyZHdhcmUgZXJyb3JzLg0KDQoNCjQuMDIgICAgICAgICAgIDIwMDQtMDYtMTANCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gQysrIExaTUEgRW5jb2Rlci9EZWNvZGVyIGNvZGUgbm93IGlzIG1vcmUgcG9ydGFibGUNCiAgYW5kIGl0IGNhbiBiZSBjb21waWxlZCBieSBHQ0Mgb24gTGludXguDQoNCg0KNC4wMSAgICAgICAgICAgMjAwNC0wMi0xNQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSBTb21lIGRldGVjdGlvbiBvZiBkYXRhIGNvcnJ1cHRpb24gd2FzIGVuYWJsZWQuDQogICAgTHptYURlY29kZS5jIC8gUmFuZ2VEZWNvZGVyUmVhZEJ5dGUNCiAgICAuLi4uLg0KICAgIHsNCiAgICAgIHJkLT5FeHRyYUJ5dGVzID0gMTsNCiAgICAgIHJldHVybiAweEZGOw0KICAgIH0NCg0KDQo0LjAwICAgICAgICAgICAyMDA0LTAyLTEzDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotIE9yaWdpbmFsIHZlcnNpb24gb2YgTFpNQSBTREsNCg0KDQoNCkhJU1RPUlkgb2YgdGhlIExaTUENCi0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgMjAwMS0yMDA4OiAgSW1wcm92ZW1lbnRzIHRvIExaTUEgY29tcHJlc3NpbmcvZGVjb21wcmVzc2luZyBjb2RlLCANCiAgICAgICAgICAgICAga2VlcGluZyBjb21wYXRpYmlsaXR5IHdpdGggb3JpZ2luYWwgTFpNQSBmb3JtYXQNCiAgMTk5Ni0yMDAxOiAgRGV2ZWxvcG1lbnQgb2YgTFpNQSBjb21wcmVzc2lvbiBmb3JtYXQNCg0KICBTb21lIG1pbGVzdG9uZXM6DQoNCiAgMjAwMS0wOC0zMDogTFpNQSBjb21wcmVzc2lvbiB3YXMgYWRkZWQgdG8gNy1aaXANCiAgMTk5OS0wMS0wMjogRmlyc3QgdmVyc2lvbiBvZiA3LVppcCB3YXMgcmVsZWFzZWQNCiAgDQoNCkVuZCBvZiBkb2N1bWVudA0K