Q29tcGlsaW5nIEZyZWVUeXBlIDIgd2l0aCBQdXJlQyBjb21waWxlcgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpbU2VlIGJlbG93IGZvciBhIEdlcm1hbiB2ZXJzaW9uLl0KClRvIGNvbXBpbGUgRnJlZVR5cGUgMiBhcyBhIGxpYnJhcnkgdGhlIGZvbGxvd2luZyBjaGFuZ2VzIG11c3QgYmUgYXBwbGllZDoKCi0gQWxsICouYyBmaWxlcyBtdXN0IHN0YXJ0IHdpdGggYW4gdXBwZXJjYXNlIGxldHRlci4KICAoSW4gY2FzZSBHRU1TQ1JJUFQgaXMgYXZhaWxhYmxlOgogIFNpbXBseSBkcmFnIHRoZSB3aG9sZSBGcmVlVHlwZSAyIGRpcmVjdG9yeSB0byB0aGUgZmlsZSBgRk5hbWVzLlNJQycuKQoKLSBZb3UgaGF2ZSB0byBjaGFuZ2UgdGhlIElOQ0xVREUgZGlyZWN0b3J5IGluIFB1cmVDJ3MgY29tcGlsZXIgb3B0aW9ucwogIHRvIGNvbnRhaW4gYm90aCB0aGUgYElOQ0xVREUnIGFuZCBgZnJlZXR5cGUyXGluY2x1ZGUnIGRpcmVjdG9yeS4KICBFeGFtcGxlOgoKICAgIElOQ0xVREU7RTpcZnJlZXR5cGUyXGluY2x1ZGUKCi0gVGhlIGZpbGUgYGZyZWV0eXBlL2luY2x1ZGUvRnQyYnVpbGQuaCcgbXVzdCBiZSBwYXRjaGVkIGFzIGZvbGxvd3MgdG8KICBpbmNsdWRlIEFUQVJJLkg6CgogICAgI2lmbmRlZiBGVDJfQlVJTERfR0VORVJJQ19IXwogICAgI2RlZmluZSBGVDJfQlVJTERfR0VORVJJQ19IXwoKICAgICNpbmNsdWRlICJBVEFSSS5IIgoKCgpDb21waWxpZXJlbiB2b24gRnJlZVR5cGUgMiBtaXQgUHVyZUMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpVbSBGcmVlVHlwZSAyIGFscyBlaW5lIEJpYmxpb3RoZWsgKGxpYnJhcnkpIHp1IGNvbXBpbGllcmVuLCBtdXNzIGZvbGdlbmRlcwpnZYRuZGVydCB3ZXJkZW46CgotIEFsbGUgKi5jLWZpbGVzIG2Bc3NlbiBtaXQgZWluZW0gR1JPU1NCVUNIU1RBQkVOIGJlZ2lubmVuLgogIChGYWxscyBHRU1TQ1JJUFQgenVyIFZlcmaBZ3VuZyBzdGVodDoKICBEZW4ga29tcGxldHRlbiBPcmRuZXIgZnJlZXR5cGUyIGF1ZiBkaWUgRGF0ZWkgYEZOYW1lcy5TSUMnIGRyYWdnZW4uKQoKLSBJbiBkZW4gQ29tcGlsZXItT3B0aW9uZW4gdm9uIFB1cmVDIG11c3MgZGFzIElOQ0xVREUgZGlyZWN0b3J5IGF1ZiBJTkNMVURFCiAgdW5kIGZyZWV0eXBlMlxpbmNsdWRlIHZlcndlaXNlbi4gWi5CLjoKCiAgICBJTkNMVURFO0U6XGZyZWV0eXBlMlxpbmNsdWRlCgotIEluIGRlciBEYXRlaSBmcmVldHlwZS9pbmNsdWRlL0Z0MmJ1aWxkLmggbXVzcyB6dSBCZWdpbm4KICBlaW4gI2luY2x1ZGUgIkFUQVJJLkgiIHdpZSBmb2xndCBlaW5nZWaBZ3Qgd2VyZGVuOgoKICAgICNpZm5kZWYgRlQyX0JVSUxEX0dFTkVSSUNfSF8KICAgICNkZWZpbmUgRlQyX0JVSUxEX0dFTkVSSUNfSF8KCiAgICAjaW5jbHVkZSAiQVRBUkkuSCIKCi0tLSBlbmQgb2YgUkVBRE1FLlRYVCAtLS0K