MjAwNzA2MjUKIC0gKGR0dWNrZXIpIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDcvMDYvMTMgMDA6MjE6MjcKICAgICBbc2NwLmNdCiAgICAgZG9uJ3QgZnRydW5jYXRlKCkgbm9uLXJlZ3VsYXIgZmlsZXM7IGJ6IzEyMzYgcmVwb3J0ZWQgYnkgd29vZCBBVAogICAgIHhtaXNzaW9uLmNvbTsgb2sgZHR1Y2tlckAKCjIwMDcwNjE0CiAtIChkdHVja2VyKSBbY2lwaGVyLWN0ci5jIHVtYWMuYyBvcGVuYnNkLWNvbXBhdC9vcGVuc3NsLWNvbXBhdC5oXSBNb3ZlIHRoZQogICBVU0VfQlVJTFRJTl9SSUpOREFFTCBjb21wYXQgZ29vcCB0byBvcGVuc3NsLWNvbXBhdC5oIHNvIGl0IGNhbiBiZQogICBzaGFyZWQgd2l0aCB1bWFjLmMuICBBbGxvd3MgYnVpbGRpbmcgd2l0aCBPcGVuU1NMIDAuOS41IGFnYWluIGluY2x1ZGluZwogICB1bWFjIHN1cHBvcnQuICBXaXRoIHRpbUAgZGptQCwgb2sgZGptLgogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L29wZW5zc2wtY29tcGF0LmhdIE1lcmdlIFVTRV9CVUlMVElOX1JJSk5EQUVMCiAgIHNlY3Rpb25zLiAgRml4ZXMgYnVpbGRzIHdpdGggZWFybHkgT3BlblNTTCAwLjkuNiB2ZXJzaW9ucy4KIC0gKGR0dWNrZXIpIFtvcGVuYnNkLWNvbXBhdC9vcGVuc3NsLWNvbXBhdC5oXSBSZW1vdmUgcmVkdW5kYW50IGRlZmluaXRpb24KICAgb2YgVVNFX0JVSUxUSU5fUklKTkRBRUwgc2luY2UgdGhlIDwwLjkuNiB0ZXN0IGlzIGNvdmVyZWQgYnkgdGhlCiAgIHN1YnNlcXVlbnQgPDAuOS43IHRlc3QuCgoyMDA3MDYxMgogLSAoZHR1Y2tlcikgT3BlbkJTRCBDVlMgU3luYwogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwNy8wNi8xMSAwOToxNDowMAogICAgIFtjaGFubmVscy5oXQogICAgIGluY3JlYXNlIGRlZmF1bHQgY2hhbm5lbCB3aW5kb3dzOyBvayBkam0KICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDcvMDYvMTIgMDc6NDE6MDAKICAgICBbc3NoLWFkZC4xXQogICAgIGJldHRlciBkb2N1bWVudCBzc2gtYWRkJ3MgLWQgb3B0aW9uIChkZWxldGUgaWRlbnRpZXMgZnJvbSBhZ2VudCksIGJ6IzEyMjQKICAgICBuZXcgdGV4dCBiYXNlZCBvbiBzb21lIHByb3ZpZGVkIGJ5IGFuZHJld21jLWRlYmlhbiBBVCBjZWx0LmRpYXMuaWU7CiAgICAgb2sgZHR1Y2tlckAKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDcvMDYvMTIgMDg6MjA6MDAKICAgICBbc3NoLWdzcy5oIGdzcy1zZXJ2LmMgZ3NzLWdlbnIuY10KICAgICByZWxvY2F0ZSBzZXJ2ZXItb25seSBHU1NBUEkgY29kZSBmcm9tIGxpYnNzaCB0byBzZXJ2ZXI7IGJ6ICMxMjI1CiAgICAgcGF0Y2ggZnJvbSBzaW1vbiBBVCBzeHcub3JnLnVrOyBvayBtYXJrdXNAIGR0dWNrZXJACiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA3LzA2LzEyIDA4OjI0OjIwCiAgICAgW3NjcC5jXQogICAgIG1ha2Ugc2NwIHRyeSB0byBza2lwIEZJRk9zIHJhdGhlciB0aGFuIGJsb2NraW5nIHdoZW4gbm90aGluZyBpcyBsaXN0ZW5pbmcuCiAgICAgZGVwZW5kcyBvbiB0aGUgcGxhdGZvcm0gc3VwcG9ydGluZyBzYW5lIE9fTk9OQkxPQ0sgc2VtYW50aWNzIGZvciBvcGVuCiAgICAgb24gRklGT3MgKGFwcGFyZW50bHkgUE9TSVggZG9lcyBub3QgbWFuZGF0ZSB0aGlzKSwgd2hpY2ggT3BlbkJTRCBkb2VzLgogICAgIGJ6ICM4NTY7IHJlcG9ydCBieSBjandhdHNvbiBBVCBkZWJpYW4ub3JnOyBvayBtYXJrdXNACiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA3LzA2LzEyIDExOjExOjA4CiAgICAgW3NzaC5jXQogICAgIGZpeCBzbGF2ZSBleGl0IHZhbHVlIHdoZW4gYSBjb250cm9sIG1hc3RlciBnb2VzIGF3YXkgd2l0aG91dCBwYXNzaW5nIHRoZQogICAgIGZ1bGwgZXhpdCBzdGF0dXMgYnkgZW5zdXJpbmcgdGhhdCB0aGUgc2xhdmUgcmVhZHMgYSBmdWxsIGludC4gYnojMTI2MQogICAgIHJlcG9ydGVkIGJ5IGZyZWtrbyBBVCBnbWFpbC5jb207IG9rIG1hcmt1c0AgZHR1Y2tlckAKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDcvMDYvMTIgMTE6MTU6MTcKICAgICBbc3NoLmMgc3NoLjFdCiAgICAgQWRkICItSyIgZmxhZyBmb3Igc3NoIHRvIHNldCBHU1NBUElBdXRoZW50aWNhdGlvbj15ZXMgYW5kCiAgICAgR1NTQVBJRGVsZWdhdGVDcmVkZW50aWFscz15ZXMuIFRoaXMgaXMgc3ltbWV0cmljIHdpdGggLWsgKGRpc2FibGUgR1NTQVBJKQogICAgIGFuZCBpcyB1c2VmdWwgZm9yIGhvc3RzIHdpdGggL2hvbWUgb24gS2VyYmVyaXNlZCBORlM7IGJ6ICMxMzEyCiAgICAgcGF0Y2ggZnJvbSBNYXJrdXMuS3VobiBBVCBjbC5jYW0uYWMudWs7IG9rIGR0dWNrZXJAIG1hcmt1c0AKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDcvMDYvMTIgMTE6NDU6MjcKICAgICBbc3NoLmNdCiAgICAgaW1wcm92ZWQgZXhpdCBtZXNzYWdlIGZyb20gbXVsdGlwbGV4IHNsYXZlIHNlc3Npb25zOyBieiAjMTI2MgogICAgIHJlcG9ydGVkIGJ5IGFsZXhhbmRyZS5udW5lcyBBVCBnbWFpbC5jb207IG9rIGR0dWNrZXJACiAgIC0gZHR1Y2tlckBjdnMub3BlbmJzZC5vcmcgMjAwNy8wNi8xMiAxMTo1NjoxNQogICAgIFtnc3MtZ2Vuci5jXQogICAgIFBhc3MgR1NTIE9JRCB0byBnc3NfZGlzcGxheV9zdGF0dXMgdG8gcHJvdmlkZSBiZXR0ZXIgaW5mb3JtYXRpb24gaW4KICAgICBlcnJvciBtZXNzYWdlcy4gIFBhdGNoIGZyb20gU2ltb24gV2lsa2luc29uIHZpYSBieiAxMjIwLiAgb2sgZGptQAogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwNy8wNi8xMiAxMzo0MTowMwogICAgIFtzc2gtYWRkLjFdCiAgICAgaWRlbnRpZXMgLT4gaWRlbnRpdGllczsKICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDcvMDYvMTIgMTM6NDM6NTUKICAgICBbc3NoLjFdCiAgICAgYWRkIC1LIHRvIFNZTk9QU0lTOwogICAtIGR0dWNrZXJAY3ZzLm9wZW5ic2Qub3JnIDIwMDcvMDYvMTIgMTM6NTQ6MjgKICAgICBbc2NwLmNdCiAgICAgRW5jb2RlIGZpbGVuYW1lIHdpdGggc3RybnZpcyBpZiB0aGUgbmFtZSBjb250YWlucyBhIG5ld2xpbmUgKHdoaWNoIGNhbid0CiAgICAgYmUgcmVwcmVzZW50ZWQgaW4gdGhlIHNjcCBwcm90b2NvbCksIGZyb20gYnogIzg5MS4gIG9rIG1hcmt1c0AKCjIwMDcwNjExCiAtIChkam0pIEJ1Z3ppbGxhICMxMzA2OiBzaWxlbmNlIHNwdXJpb3VzIGVycm9yIG1lc3NhZ2VzIGZyb20gaGFuZy1vbi1leGl0CiAgIGZpeDsgdGVzdGVkIGJ5IGR0dWNrZXJAIGFuZCBqb2NoZW4ua2lybiBBVCBnbWFpbC5jb20KICAgLSBwdmFsY2hldkBjdnMub3BlbmJzZC5vcmcgMjAwNy8wNi8wNyAxOTozNzozNAogICAgIFtrZXguaCBtYWMuYyBtYWMuaCBtb25pdG9yX3dyYXAuYyBteXByb3Bvc2FsLmggcGFja2V0LmMgc3NoLjFdCiAgICAgW3NzaF9jb25maWcuNSBzc2hkLjggc3NoZF9jb25maWcuNV0KICAgICBBZGQgYSBuZXcgTUFDIGFsZ29yaXRobSBmb3IgZGF0YSBpbnRlZ3JpdHksIFVNQUMtNjQgKG5vdCBkZWZhdWx0IHlldCwKICAgICBtdXN0IHNwZWNpZnkgdW1hYy02NEBvcGVuc3NoLmNvbSkuIFByb3ZpZGVzIGFib3V0IDIwJSBlbmQtdG8tZW5kIHNwZWVkdXAKICAgICBjb21wYXJlZCB0byBobWFjLW1kNS4gUmVwcmVzZW50cyBhIGRpZmZlcmVudCBhcHByb2FjaCB0byBtZXNzYWdlCiAgICAgYXV0aGVudGljYXRpb24gdG8gdGhhdCBvZiBITUFDIHRoYXQgbWF5IGJlIGJlbmVmaWNpYWwgaWYgSE1BQyBiYXNlZCBvbgogICAgIG9uZSBvZiBpdHMgdW5kZXJseWluZyBoYXNoIGFsZ29yaXRobXMgaXMgZm91bmQgdG8gYmUgdnVsbmVyYWJsZSB0byBhCiAgICAgbmV3IGF0dGFjay4gIGh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzQ0MTgudHh0CiAgICAgaW4gY29uanVuY3Rpb24gd2l0aCBhbmQgT0sgZGptQAogICAtIHB2YWxjaGV2QGN2cy5vcGVuYnNkLm9yZyAyMDA3LzA2LzA4IDA0OjQwOjQwCiAgICAgW3NzaF9jb25maWddCiAgICAgQWRkIGEgIk1BQ3MiIGxpbmUgYWZ0ZXIgIkNpcGhlcnMiIHdpdGggdGhlIGRlZmF1bHQgTUFDIGFsZ29yaXRobXMsCiAgICAgdG8gZWFzZSBwZW9wbGUgd2hvIHdhbnQgdG8gdHdlYWsgYm90aCAoZWcuIGZvciBwZXJmb3JtYW5jZSByZWFzb25zKS4KICAgICBvayBkZXJhYWR0QCBkam1AIGR0dWNrZXJACiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDA3LzA2LzA4IDA3OjQzOjQ2CiAgICAgW3NzaF9jb25maWcuNV0KICAgICBwdXQgdGhlIE1BQyBsaXN0IGludG8gYSBkaXNwbGF5LCBsaWtlIHdlIGRvIGZvciBjaXBoZXJzLAogICAgIHNpbmNlIGdyb2ZmIGhhcyB0cm91YmxlIGhhbmRsaW5nIHdpZGUgbGluZXM7CiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDA3LzA2LzA4IDA3OjQ4OjA5CiAgICAgW3NzaGRfY29uZmlnLjVdCiAgICAgb29wcywgaGVyZSB0b286IHB1dCB0aGUgTUFDIGxpc3QgaW50byBhIGRpc3BsYXksIGxpa2Ugd2UgZG8gZm9yCiAgICAgY2lwaGVycywgc2luY2UgZ3JvZmYgaGFzIHRyb3VibGUgd2l0aCB3aWRlIGxpbmVzOwogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwNy8wNi8xMSAwODowNDo0NAogICAgIFtjaGFubmVscy5jXQogICAgIHNlbmQgJ3dpbmRvdyBhZGp1c3QnIG1lc3NhZ2VzIGV2ZXJ5IHRyZWUgcGFja2V0cyBhbmQgZG8gbm90IHdhaXQKICAgICB1bnRpbCA1MCUgb2YgdGhlIHdpbmRvdyBpcyBjb25zdW1lZC4gIG9rIGRqbSBkdHVja2VyCiAtIChkam0pIFtjb25maWd1cmUuYWMgdW1hYy5jXSBJZiBwbGF0Zm9ybSBkb2Vzbid0IHByb3ZpZGUgc3dhcDMyKDMpLCB0aGVuCiAgIGZhbGxiYWNrIHRvIHByb3ZpZGVkIGJpdC1zd2l6emluZyBmdW5jdGlvbnMKIC0gKGR0dWNrZXIpIFtvcGVuYnNkLWNvbXBhdC9ic2QtbWlzYy5jXSBBY2NvcmRpbmcgdG8gdGhlIHNwZWMgdGhlICJyZW1haW5kZXIiCiAgIGFyZ3VtZW50IHRvIG5hbm9zbGVlcCBtYXkgYmUgTlVMTC4gIEN1cnJlbnRseSB0aGlzIG5ldmVyIGhhcHBlbnMgaW4gT3BlblNTSCwKICAgYnV0IGNoZWNrIGFueXdheSBpbiBjYXNlIHRoaXMgY2hhbmdlcyBvciB0aGUgY29kZSBnZXRzIHVzZWQgZWxzZXdoZXJlLgogLSAoZHR1Y2tlcikgW2luY2x1ZGVzLmhdIEJ1ZyAjMTI0MzogSEFWRV9QQVRIUyAtPiBIQVZFX1BBVEhTX0guICBTaG91bGQKICAgcHJldmVudCB3YXJuaW5ncyBhYm91dCByZWRlZmluaXRpb25zIG9mIHZhcmlvdXMgdGhpbmdzIGluIHBhdGhzLmguCiAgIFNwb3R0ZWQgYnkgY2FydG1hbmx0ZCBhdCBob3RtYWlsLmNvbS4KCjIwMDcwNjA1CiAtIChkdHVja2VyKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA3LzA1LzIyIDEwOjE4OjUyCiAgICAgW3NzaGQuY10KICAgICB6YXAgZG91YmxlIGluY2x1ZGU7IGZyb20gcF9ub3dhY3p5ayBBVCBvMi5wbAogICAgIChub3QgcmVxdWlyZWQgaW4gLXBvcnRhYmxlLCBJZCBzeW5jIG9ubHkpCiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA3LzA1LzMwIDA1OjU4OjEzCiAgICAgW2tleC5jXQogICAgIHRpZHk6IEtORiwgQVJHU1VTRUQgYW5kIHVfaW50CiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDA3LzA1LzMxIDE5OjIwOjE2CiAgICAgW3NjcC4xIHNzaF9jb25maWcuNSBzZnRwLXNlcnZlci44IHNzaC1hZ2VudC4xIHNzaGRfY29uZmlnLjUgc2Z0cC4xCiAgICAgc3NoLWtleWdlbi4xIHNzaC1rZXlzY2FuLjEgc3NoLWFkZC4xIHNzaGQuOCBzc2guMSBzc2gta2V5c2lnbi44XQogICAgIGNvbnZlcnQgdG8gbmV3IC5EZCBmb3JtYXQ7CiAgICAgKFdlIHdpbGwgbmVlZCB0byB0ZWFjaCBtZG9jMm1hbi5hd2sgdG8gdW5kZXJzdGFuZCB0aGlzIHRvby4pCiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA3LzA1LzMxIDIzOjM0OjI5CiAgICAgW3BhY2tldC5jXQogICAgIGdjIHVucmVhY2hhYmxlIGNvZGU7IHNwb3R0ZWQgYnkgVGF2aXMgT3JtYW5keQogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNy8wNi8wMiAwOTowNDo1OAogICAgIFtidWZibi5jXQogICAgIG1lbW9yeSBsZWFrIG9uIGVycm9yIHBhdGg7IGZyb20gYXJuYXVkLmxhY29tYmUuMSBBVCB1bGF2YWwuY2EKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDcvMDYvMDUgMDY6NTI6MzcKICAgICBba2V4LmMgbW9uaXRvcl93cmFwLmMgcGFja2V0LmMgbWFjLmgga2V4LmggbWFjLmNdCiAgICAgUHJlc2VydmUgTUFDIGN0eCBiZXR3ZWVuIHBhY2tldHMsIHNhdmluZyAyeGhhc2ggY2FsbHMgcGVyLXBhY2tldC4KICAgICBZaWVsZHMgYXJvdW5kIGEgMTItMTYlIGVuZC10by1lbmQgc3BlZWR1cCBmb3IgYXJjZm91cjI1Ni9obWFjLW1kNQogICAgIHBhdGNoIGZyb20gbWFya3VzQCB0ZXN0ZWQgZHR1Y2tlckAgYW5kIG15c2VsZiwgb2sgbWFya3VzQCBhbmQgbWUgKEknbQogICAgIGNvbW1pdHRpbmcgYXQgaGlzIHJlcXVlc3QpCiAtIChkdHVja2VyKSBbbWRvYzJtYW4uYXdrXSBUZWFjaCBpdCB0byBkZWFsIHdpdGggJE1kb2NkYXRlIHRhZ3MgdGhhdAogICBPcGVuQlNEJ3MgY3ZzIG5vdyBhZGRzLgogLSAoZHR1Y2tlcikgW21kb2MybWFuLmF3a10gUmVtb3ZlIHRyYWlsaW5nICIkIiBmcm9tIE1kb2NkYXRlIHJlZ2V4IHNvCiAgIG1pbmRyb3QncyBjdnMgZG9lc24ndCBleHBhbmQgaXQgb24gdXMuCiAtIChkdHVja2VyKSBbbWRvYzJtYW4uYXdrXSBBZGQgc3VwcG9ydCBmb3IgJVIgcmVmZXJlbmNlcywgdXNlZCBmb3IgUkZDcy4KCjIwMDcwNTIwCiAtIChkdHVja2VyKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gc3RldmVza0BjdnMub3BlbmJzZC5vcmcgMjAwNy8wNC8xNCAyMjowMTo1OAogICAgIFthdXRoMi5jXQogICAgIHJlbW92ZSB1bnVzZWQgbWFjcm87IGZyb20gRG1pdHJ5IFYuIExldmluIDxsZHZAYWx0bGludXgub3JnPgogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDcvMDQvMTggMDE6MTI6NDMKICAgICBbc2Z0cC1zZXJ2ZXIuY10KICAgICBjYXN0ICIlbGx1IiBmb3JtYXQgc3BlYyB0byAodW5zaWduZWQgbG9uZyBsb25nKTsgZG8gbm90IGFzc3VtZSBhCiAgICAgdV9pbnQ2NF90IGFyZyBpcyB0aGUgc2FtZSBhcyAndW5zaWduZWQgbG9uZyBsb25nJy4KICAgICBmcm9tIERtaXRyeSBWLiBMZXZpbiA8bGR2QGFsdGxpbnV4Lm9yZz4KICAgICBvayBtYXJrdXNAICdZZXMsIHRoYXQgbG9va3MgY29ycmVjdCcgbWlsbGVydEAKICAgLSBkdHVja2VyQGN2cy5vcGVuYnNkLm9yZyAyMDA3LzA0LzIzIDEwOjE1OjM5CiAgICAgW3NlcnZjb25mLmNdCiAgICAgUmVtb3ZlIGRlYnVnKCkgbGVmdCBvdmVyIGZyb20gZGV2ZWxvcG1lbnQuICBvayBkZXJhYWR0QAogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNy8wNS8xNyAwNzo1MDozMQogICAgIFtsb2cuY10KICAgICBzYXZlIGFuZCByZXN0b3JlIGVycm5vIHdoZW4gbG9nZ2luZzsgb2sgZGVyYWFkdEAKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDcvMDUvMTcgMDc6NTU6MjkKICAgICBbc2Z0cC1zZXJ2ZXIuY10KICAgICBieiMxMjg2IHN0b3AgcmVhZGluZyBhbmQgcHJvY2Vzc2luZyBjb21tYW5kcyB3aGVuIGlucHV0IG9yIG91dHB1dCBidWZmZXIKICAgICBpcyBuZWFybHkgZnVsbCwgb3RoZXJ3aXNlIHNmdHAtc2VydmVyIHdvdWxkIGhhcHBpbHkgdHJ5IHRvIGdyb3cgdGhlCiAgICAgaW5wdXQvb3V0cHV0IGJ1ZmZlcnMgcGFzdCB0aGUgbWF4aW11bSBzdXBwb3J0ZWQgYnkgdGhlIGJ1ZmZlciBBUEkgYW5kCiAgICAgcHJvbXB0bHkgZmF0YWwoKQogICAgIGJhc2VkIG9uIHBhdGNoIGZyb20gVGh1ZSBKYW51cyBLcmlzdGVuc2VuOyBmZWVkYmFjayAmIG9rIGR0dWNrZXJACiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA3LzA1LzE3IDIwOjQ4OjEzCiAgICAgW3NzaGNvbm5lY3QyLmNdCiAgICAgZmFsbCBiYWNrIHRvIGdldGhvc3RuYW1lKCkgd2hlbiB0aGUgb3V0Z29pbmcgY29ubmVjdGlvbiBpcyBub3QKICAgICBvbiBhIHNvY2tldCwgc3VjaCBhcyBpcyB0aGUgY2FzZSB3aGVuIFByb3h5Q29tbWFuZCBpcyB1c2VkLgogICAgIEdpdmVzIGhvc3RiYXNlZCBhdXRoIGFuIG9wcG9ydHVuaXR5IHRvIHdvcms7IGJ6IzYxNiwgcmVwb3J0CiAgICAgYW5kIGZlZWRiYWNrIHN0dWFydCBBVCBrYWxvcmFtLmNvbTsgb2sgbWFya3VzQAogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNy8wNS8xNyAyMDo1MjoxMwogICAgIFttb25pdG9yLmNdCiAgICAgcGFzcyByZWNlaXZlZCBTSUdJTlQgZnJvbSBtb25pdG9yIHRvIHBvc3RhdXRoIGNoaWxkIHNvIGl0IGNhbiBjbGVhbgogICAgIHVwIHByb3Blcmx5LiBieiMxMTk2LCBwYXRjaCBmcm9tIHNlbnRoaWxrdW1hcl9zZW4gQVQgaG90cG9wLmNvbTsKICAgICBvayBtYXJrdXNACiAgIC0gam9sYW5AY3ZzLm9wZW5ic2Qub3JnIDIwMDcvMDUvMTcgMjM6NTM6NDEKICAgICBbc3NoY29ubmVjdDIuY10KICAgICBkam0gb3dlcyBtZSBhIHZiIGFuZCBhIHRpc20gY2QgZm9yIGJyZWFraW5nIHNzaCBjb21waWxhdGlvbgogLSAoZHR1Y2tlcikgW2F1dGgtcGFtLmNdIG1hbGxvYyttZW1zZXQgLT4gY2FsbG9jLiAgUGF0Y2ggZnJvbQogICBsZHYgYXQgYWx0bGludXgub3JnLgogLSAoZHR1Y2tlcikgW2F1dGgtcGFtLmNdIFJldHVybiBlbXB0eSBzdHJpbmcgaWYgZmdldHMgZmFpbHMgaW4KICAgc3NocGFtX3R0eV9jb252LiAgUGF0Y2ggZnJvbSBsZHYgYXQgYWx0bGludXgub3JnLgoKMjAwNzA1MDkKIC0gKHRpbSkgW2NvbmZpZ3VyZS5hY10gQnVnICMxMjg3OiBBZGQgbWlzc2luZyB0ZXN0IGZvciB1Y3JlZC5oLgoKMjAwNzA0MjkKIC0gKGR0dWNrZXIpIFtvcGVuYnNkLWNvbXBhdC9ic2QtbWlzYy5jXSBJbmNsdWRlIHVuaXN0ZC5oIGFuZCBzeXMvdHlwZXMuaAogICBmb3Igc2VsZWN0KDIpIHByb3RvdHlwZS4KIC0gKGR0dWNrZXIpIFthdXRoLXNoYWRvdy5jIGxvZ2lucmVjLmNdIEluY2x1ZGUgdGltZS5oIGZvciB0aW1lKDIpIHByb3RvdHlwZS4KIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWMgb3BlbmJzZC1jb21wYXQvZ2V0cnJzZXRieW5hbWUuY10gQnVnICMxMjk5OiBVc2UgdGhlCiAgIHBsYXRmb3JtJ3MgX3JlcyBpZiBpdCBoYXMgb25lLiAgU2hvdWxkIGZpeCBwcm9ibGVtIG9mIEROU1NFQyByZWNvcmQgbG9va3VwcwogICBvbiBOZXRCU0QgYXMgcmVwb3J0ZWQgYnkgQ3VydCBTYW1wc29uLgogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L3htbWFwLmNdIEluY2x1ZGUgc3RkbGliLmggZm9yIG1rc3RlbXAgcHJvdG90eXBlLgogLSAoZHR1Y2tlcikgW2NvbmZpZ3VyZS5hYyBkZWZpbmVzLmhdIEhhdmUgY29uZmlndXJlIGNoZWNrIGZvciBNQVhTWU1MSU5LUwogICBzbyB3ZSBkb24ndCBnZXQgcmVkZWZpbml0aW9uIHdhcm5pbmdzLgogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L3htbWFwLmNdIEluY2x1ZGUgc3RkbGliLmggZm9yIG1rc3RlbXAgcHJvdG90eXBlLgogLSAoZHR1Y2tlcikgW2NvbmZpZ3VyZS5hYyBkZWZpbmVzLmhdIFByZXZlbnQgd2FybmluZ3MgYWJvdXQgX19hdHRyaWJ1dGVfXwogICBfX25vbm51bGxfXyBmb3IgdmVyc2lvbnMgb2YgR0NDIHRoYXQgZG9uJ3Qgc3VwcG9ydCBpdC4KIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWMgZGVmaW5lcy5oXSBIYXZlIGNvbmZpZ3VyZSBjaGVjayBmb3Igb2Zmc2V0b2YKICAgdG8gcHJldmVudCByZWRlZmluaXRpb24gd2FybmluZ3MuCgoyMDA3MDQwNgogLSAoZHR1Y2tlcikgW0lOU1RBTExdIFVwZGF0ZSB0aGUgc3lzdGVtcyB0aGF0IGhhdmUgUEFNIGFzIHN0YW5kYXJkLiAgTGluawogICB0byBPcGVuUEFNIHRvby4KIC0gKGR0dWNrZXIpIFtJTlNUQUxMXSBwcm5nZCBsaXZlcyBhdCBzb3VyY2Vmb3JnZSB0aGVzZSBkYXlzLgoKMjAwNzAzMjYKIC0gKHRpbSkgW2F1dGguYyBjb25maWd1cmUuYWMgZGVmaW5lcy5oIHNlc3Npb24uYyBvcGVuYnNkLWNvbXBhdC9wb3J0LXV3LmMKICAgb3BlbmJzZC1jb21wYXQvcG9ydC11dy5oIG9wZW5ic2QtY29tcGF0L3hjcnlwdC5jXSBSZXdvcmsgbGliaWFmIHRlc3QvZGVmaW5lcwogICB0byBhY2NvdW50IGZvciBJUklYIGhhdmluZyBsaWJpYWYgYnV0IG5vdCBzZXRfaWQoKS4gUGF0Y2ggd2l0aCAmIG9rIGR0dWNrZXJACgoyMDA3MDMyNQogLSAoZHR1Y2tlcikgW01ha2VmaWxlLmluIGNvbmZpZ3VyZS5hY10gUmVwbGFjZSBzaW5nbGUtcHVycG9zZSBMSUJTRUxJTlVYLAogICBMSUJXUkFQIGFuZCBMSUJQQU0gdmFyaWFibGVzIGluIE1ha2VmaWxlIHdpdGggdGhlIGdlbmVyYWwtcHVycG9zZQogICBTU0hETElCUy4gICJJIGxpa2UiIGRqbUAKCjIwMDcwMzIxCiAtIChkdHVja2VyKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gZHR1Y2tlckBjdnMub3BlbmJzZC5vcmcgMjAwNy8wMy8wOSAwNToyMDowNgogICAgIFtzZXJ2Y29uZi5jIHNzaGQuY10KICAgICBNb3ZlIEMvUiAtPiBrYmRpbnQgc3BlY2lhbCBjYXNlIHRvIGFmdGVyIHRoZSBkZWZhdWx0cyBoYXZlIGJlZW4KICAgICBsb2FkZWQsIHdoaWNoIG1ha2VzIENoYWxsZW5nZVJlc3BvbnNlIGRlZmF1bHQgdG8geWVzIGFnYWluLiAgVGhpcwogICAgIHdhcyBicm9rZW4gYnkgdGhlIE1hdGNoIGNoYW5nZXMgYW5kIG5vdCBmaXhlZCBwcm9wZXJseSBzdWJzZXF1ZW50bHkuCiAgICAgRm91bmQgYnkgb2thbiBhdCBkZW1pcm1lbi5jb20sIG9rIGRqbUAgInBsZWFzZSBkbyBpdCIgZGVyYWFkdEAKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDcvMDMvMTkgMDE6MDE6MjkKICAgICBbc3NoZF9jb25maWddCiAgICAgRGlzYWJsZSB0aGUgbGVnYWN5IFNTSCBwcm90b2NvbCAxIGZvciBuZXcgaW5zdGFsbGF0aW9ucyB2aWEKICAgICBhIGNvbmZpZ3VyYXRpb24gb3ZlcnJpZGUuIEluIHRoZSBmdXR1cmUsIHdlIHdpbGwgY2hhbmdlIHRoZQogICAgIHNlcnZlcidzIGRlZmF1bHQgaXRzZWxmIHNvIHVzZXJzIHdobyBuZWVkIHRoZSBsZWdhY3kgcHJvdG9jb2wKICAgICB3aWxsIG5lZWQgdG8gdHVybiBpdCBvbiBleHBsaWNpdGx5CiAgIC0gZHR1Y2tlckBjdnMub3BlbmJzZC5vcmcgMjAwNy8wMy8xOSAxMjoxNjo0MgogICAgIFtzc2gtYWdlbnQuY10KICAgICBSZW1vdmUgdGhlIHNpZ25hbCBoYW5kbGVyIHRoYXQgY2hlY2tzIGlmIHRoZSBhZ2VudCdzIHBhcmVudCBwcm9jZXNzCiAgICAgaGFzIGdvbmUgYXdheSwgaW5zdGVhZCBjaGVjayB3aGVuIHRoZSBzZWxlY3QgbG9vcCByZXR1cm5zLiAgUmVjb3JkIHdoZW4KICAgICB0aGUgbmV4dCBrZXkgd2lsbCBleHBpcmUgd2hlbiBzY2FubmluZyBmb3IgZXhwaXJlZCBrZXlzLiAgU2V0IHRoZSBzZWxlY3QKICAgICB0aW1lb3V0IHRvIHdoaWNoZXZlciBvZiB0aGVzZSB0d28gdGhpbmdzIGhhcHBlbnMgbmV4dC4gIFdpdGggZGptQCwgd2l0aCAmCiAgICAgb2sgZGVyYWFkdEAgbWFya3VzQAogICAtIHRlZHVAY3ZzLm9wZW5ic2Qub3JnIDIwMDcvMDMvMjAgMDM6NTY6MTIKICAgICBbcmVhZGNvbmYuYyBjbGllbnRsb29wLmNdCiAgICAgcmVtb3ZlIHNvbWUgYm9ndXMgKnAgdGVzdHMgZnJvbSBjaGFybGVzIGxvbmdlYXUKICAgICBvayBkZXJhYWR0IG1pbGxlcnQKICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDcvMDMvMjAgMTU6NTc6MTUKICAgICBbc3NoZC44XQogICAgIC0gbGV0IHN5bm9wc2lzIGFuZCBkZXNjcmlwdGlvbiBhZ3JlZSBmb3IgLWYKICAgICAtIHNvcnQgRklMRVMKICAgICAtICsuWHIgc3NoLWtleXNjYW4gMSAsCiAgICAgZnJvbSBJZ29yIFNvYnJhZG8KIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWMgb3BlbmJzZC1jb21wYXQvYnNkLWdldHBlZXJlaWQuY10gQnVnICMxMjg3OiBVc2UKICAgZ2V0cGVlcnVjcmVkIHRvIGltcGxlbWVudCBnZXRwZWVyZWlkIChjdXJyZW50bHkgb25seSBTb2xhcmlzIDEwIGFuZCB1cCkuCiAgIFBhdGNoIGJ5IEphbi5QZWNoYW5lYyBhdCBTdW4uCiAtIChkdHVja2VyKSBbcmVncmVzcy9hZ2VudC1nZXRwZWVyZWlkLnNoXSBEbyBwZWVyZWlkIHRlc3QgaWYgd2UgaGF2ZQogICBIQVZFX0dFVFBFRVJVQ1JFRCB0b28uICBBbHNvIGZyb20gSmFuIFBlY2hhbmVjLgoKMjAwNzAzMTMKIC0gKGR0dWNrZXIpIFtlbnRyb3B5LmMgc2NhcmQtb3BlbnNjLmMgc3NoLXJhbmQtaGVscGVyLmNdIEJ1ZyAjMTI5NDogaW5jbHVkZQogICBzdHJpbmcuaCB0byBwcmV2ZW50IHdhcm5pbmdzLCBmcm9tIHZhcGllciBhdCBnZW50b28ub3JnLgogLSAoZHR1Y2tlcikgW0xJQ0VOQ0VdIEFkZCBEYW5pZWwgV2Fsc2ggYXMgYSBjb3B5cmlnaHQgaG9sZGVyIGZvciB0aGUKICAgc2VsaW51eCBiaXRzIGluIC1wb3J0YWJsZS4KIC0gKGR0dWNrZXIpIFtjaXBoZXItM2RlczEuYyBjaXBoZXItYmYxLmNdIFRoZSBPcGVuU1NMIDAuOS44ZSBwcm9ibGVtIGluCiAgIGJ1ZyAjMTI5MSBhbHNvIGFmZmVjdHMgUHJvdG9jb2wgMSAzZGVzLiAgV2hpbGUgYXQgaXQsIHVzZSBjb21wYXQtb3BlbnNzbC5oCiAgIGluIGNpcGhlci1iZjEuYy4gIFBhdGNoIGZyb20gSnVhbiBHYWxsZWdvLgogLSAoZHR1Y2tlcikgW1JFQURNRS5wbGF0Zm9ybV0gSW5mbyBhYm91dCBibGlicGF0aCBvbiBBSVguCgoyMDA3MDMwNgogLSAoZGptKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDA3LzAzLzAxIDE2OjE5OjMzCiAgICAgW3NzaGRfY29uZmlnLjVdCiAgICAgc29ydCB0aGUgYG1hdGNoJyBrZXl3b3JkczsKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDcvMDMvMDYgMTA6MTM6MTQKICAgICBbdmVyc2lvbi5oXQogICAgIG9wZW5zc2gtNC42OyAicGxlYXNlIiBkZXJhYWR0QAogLSAoZGptKSBbY29udHJpYi9jYWxkZXJhL29wZW5zc2guc3BlYyBjb250cmliL3JlZGhhdC9vcGVuc3NoLnNwZWNdCiAgIFtjb250cmliL3N1c2Uvb3BlbnNzaC5zcGVjXSBjcmFuayBzcGVjIGZpbGVzIGZvciByZWxlYXNlCiAtIChkam0pIFtSRUFETUVdIGNvcnJlY3QgbGluayB0byByZWxlYXNlIG5vdGVzCiAtIChkam0pIFJlbGVhc2UgNC42cDEKCjIwMDcwMzA0CiAtIChkam0pIFtjb25maWd1cmUuYWNdIGFkZCBhIC0td2l0aG91dC1vcGVuc3NsLWhlYWRlci1jaGVjayBvcHRpb24gdG8KICAgY29uZmlndXJlLCBhcyBzb21lIHBsYXRmb3JtcyAoT1MgWCkgc2hpcCBPcGVuU1NMIGhlYWRlcnMgd2hvc2UgdmVyc2lvbgogICBkb2VzIG5vdCBtYXRjaCB0aGF0IG9mIHRoZSBzaGlwcGluZyBsaWJyYXJ5LiBvayBkdHVja2VyQAogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L29wZW5zc2wtY29tcGF0LmhdIEJ1ZyAjMTI5MTogV29yayBhcm91bmQgYQogICBidWcgaW4gT3BlblNTTCAwLjkuOGUgdGhhdCBwcmV2ZW50cyBhZXMyNTYtY3RyLCBhZXMxOTItY3RyIGFuZCBhcmNmb3VyMjU2CiAgIGNpcGhlcnMgZnJvbSB3b3JraW5nIGNvcnJlY3RseSAoZGlzY29ubmVjdHMgd2l0aCAiQmFkIHBhY2tldCBsZW5ndGgiCiAgIGVycm9ycykgYXMgZm91bmQgYnkgQmVuIEhhcnJpcy4gIG9rIGRqbUAKCjIwMDcwMzAzCiAtIChkdHVja2VyKSBbcmVncmVzcy9hZ2VudC1wdHJhY2Uuc2hdIE1ha2UgdHRyYWNlIGdkYiBlcnJvciBhIGxpdHRsZSBtb3JlCiAgIGdlbmVyYWwgdG8gY292ZXIgbmV3ZXIgZ2RiIHZlcnNpb25zIG9uIEhQLVVYLgoKMjAwNzAzMDIKIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWNdIEZvciBDeWd3aW4sIHJlYWQgZmlsZXMgaW4gdGV4dG1vZGUgKHdoaWNoIGFsbG93cwogICBDUkxGIGFzIHdlbGwgYXMgTEYgbGluZWVuZGluZ3MpIGFuZCB3cml0ZSBpbiBiaW5hcnkgbW9kZS4gIFBhdGNoIGZyb20KICAgdmluc2NoZW4gYXQgcmVkaGF0LmNvbS4KIC0gKGR0dWNrZXIpIFtJTlNUQUxMXSBVcGRhdGUgdG8gYXV0b2NvbmYtMi42MS4KCjIwMDcwMzAxCiAtIChkdHVja2VyKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gZHR1Y2tlckBjdnMub3BlbmJzZC5vcmcgMjAwNy8wMy8wMSAxMDoyODowMgogICAgIFthdXRoMi5jIHNzaGRfY29uZmlnLjUgc2VydmNvbmYuY10KICAgICBSZW1vdmUgQ2hhbGxlbmdlUmVzcG9uc2VBdXRoZW50aWNhdGlvbiBzdXBwb3J0IGluc2lkZSBhIE1hdGNoCiAgICAgYmxvY2sgYXMgaXRzIGludGVyYWN0aW9uIHdpdGggS2JkSW50ZXJhY3RpdmUgbWFrZXMgaXQgZGlmZmljdWx0IHRvCiAgICAgc3VwcG9ydC4gIEFsc28sIHJlbG9jYXRlIHRoZSBDUi9rYmRpbnQgb3B0aW9uIHNwZWNpYWwtY2FzZSBjb2RlIGludG8KICAgICBzZXJ2Y29uZi4gICJwbGVhc2UgY29tbWl0IiBkam1ALCBvayBtYXJrdXNAIGZvciB0aGUgcmVsb2NhdGlvbi4KIC0gKHRpbSkgW2J1aWxkcGtnLnNoLmluIG9wZW5zc2gueG1sLmluXSBDbGVhbiB1cCBTb2xhcmlzIDEwIHNtZig1KSBiaXRzLgogICAiTG9va3Mgc2FuZSIgZHR1Y2tlckAKCjIwMDcwMjI4CiAtIChkdHVja2VyKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gZHR1Y2tlckBjdnMub3BlbmJzZC5vcmcgMjAwNy8wMi8yOCAwMDo1NTozMAogICAgIFtzc2gtYWdlbnQuY10KICAgICBSZW1vdmUgZXhwaXJlZCBrZXlzIHBlcmlvZGljYWxseSBzbyB0aGV5IGRvbid0IHJlbWFpbiBpbiBtZW1vcnkgd2hlbgogICAgIHRoZSBhZ2VudCBpcyBlbnRpcmVseSBpZGxlLCBhcyBub3RlZCBieSBEYXZpZCBSLiBQaWVnZG9uLiAgVGhpcyBpcyB0aGUKICAgICBzaW1wbGUgZml4LCBhIG1vcmUgZWZmaWNpZW50IG9uZSB3aWxsIGJlIGRvbmUgbGF0ZXIuICBXaXRoIG1hcmt1cywKICAgICBkZXJhYWR0LCB3aXRoICYgb2sgZGptLgoKMjAwNzAyMjUKIC0gKGR0dWNrZXIpIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDcvMDIvMjAgMTA6MjU6MTQKICAgICBbY2xpZW50bG9vcC5jXQogICAgIHNldCBtYXhpbXVtIHBhY2tldCBhbmQgd2luZG93IHNpemVzIHRoZSBzYW1lIGZvciBtdWx0aXBsZXhlZCBjbGllbnRzCiAgICAgYXMgbm9ybWFsIGNvbm5lY3Rpb25zOyBvayBtYXJrdXNACiAgIC0gZHR1Y2tlckBjdnMub3BlbmJzZC5vcmcgMjAwNy8wMi8yMSAxMTowMDowNQogICAgIFtzc2hkLmNdCiAgICAgQ2xlYXIgYWxhcm0oKSBiZWZvcmUgcmVzdGFydGluZyBzc2hkIG9uIFNJR0hVUC4gIFdpdGhvdXQgdGhpcywgaWYgdGhlcmUncwogICAgIGEgU0lHQUxSTSBwZW5kaW5nIChmb3IgU1NIMSBrZXkgcmVnZW5lcmF0aW9uKSB3aGVuIHNzaGQgaXMgU0lHSFVQJ2VkLCB0aGUKICAgICBuZXdseSBleGVjJ2VkIHNzaGQgd2lsbCBnZXQgdGhlIFNJR0FMUk0gYW5kIG5vdCBoYXZlIGEgaGFuZGxlciBmb3IgaXQsCiAgICAgYW5kIHRoZSBkZWZhdWx0IGFjdGlvbiB3aWxsIHRlcm1pbmF0ZSB0aGUgbGlzdGVuaW5nIHNzaGQuICBBbmFseXNpcyBhbmQKICAgICBwYXRjaCBmcm9tIGFuZHJldyBhdCBnYXVsLm9yZy4KICAgLSBkdHVja2VyQGN2cy5vcGVuYnNkLm9yZyAyMDA3LzAyLzIyIDEyOjU4OjQwCiAgICAgW3NlcnZjb25mLmNdCiAgICAgQ2hlY2sgYWN0aXZlcCBzbyBNYXRjaCBhbmQgR2F0ZXdheVBvcnRzIHdvcmsgdG9nZXRoZXI7IG9rIG1hcmt1c0AKICAgLSByYXlAY3ZzLm9wZW5ic2Qub3JnIDIwMDcvMDIvMjQgMDM6MzA6MTEKICAgICBbbW9kdWxpLmNdCiAgICAgLSBzdHJsZW4gcmV0dXJucyBzaXplX3QsIG5vdCBpbnQuCiAgICAgLSBQYXNzIGZ1bGwgYnVmZmVyIHNpemUgdG8gZmdldHMuCiAgICAgT0sgZGptQCwgbWlsbGVydEAsIGFuZCBtb3JpdHpALgoKMjAwNzAyMTkKICAtIChkdHVja2VyKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDA3LzAxLzEwIDEzOjIzOjIyCiAgICAgW3NzaF9jb25maWcuNV0KICAgICBkbyBub3QgdXNlIGEgbGlzdCBmb3IgU1lOT1BTSVM7CiAgICAgdGhpcyBpcyBhY3R1YWxseSBwYXJ0IG9mIGEgbGFyZ2VyIHJlcG9ydCBzZW50IGJ5IGVyaWMgcy4gcmF5bW9uZAogICAgIGFuZCBmb3J3YXJkZWQgYnkgYnJhZCwgYnV0IGkgb25seSByZWFkIGhhbGYgb2YgaXQuIHNwb3R0ZWQgYnkgYnJhZC4KICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDcvMDEvMTIgMjA6MjA6NDEKICAgICBbc3NoLWtleWdlbi4xIHNzaC1rZXlnZW4uY10KICAgICBtb3JlIHNlY3NoIC0+IHJmYyA0NzE2IHVwZGF0ZXM7CiAgICAgc3BvdHRlZCBieSB3aXpAbmV0YnNkCiAgICAgb2sgbWFya3VzCiAgIC0gZHR1Y2tlckBjdnMub3BlbmJzZC5vcmcgMjAwNy8wMS8xNyAyMzoyMjo1MgogICAgIFtyZWFkY29uZi5jXQogICAgIEhvbm91ciBhY3RpdmVwIGZvciB0aW1lcyAoZWcgU2VydmVyQWxpdmVJbnRlcnZhbCkgd2hpbGUgcGFyc2luZwogICAgIHNzaF9jb25maWcgYW5kIH4vLnNzaC9jb25maWcgc28gdGhleSB3b3JrIHByb3Blcmx5IHdpdGggSG9zdCBkaXJlY3RpdmVzLgogICAgIEZyb20gbWFyaW8ubG9yZW56QHdpbmNvci1uaXhkb3JmLmNvbSB2aWEgYnogIzEyNzUuICBvayBtYXJrdXNACiAgIC0gc3RldmVza0BjdnMub3BlbmJzZC5vcmcgMjAwNy8wMS8yMSAwMTo0MTo1NAogICAgIFthdXRoLXNrZXkuYyBrZXguYyBzc2gta2V5Z2VuLmMgc2Vzc2lvbi5jIGNsaWVudGxvb3AuY10KICAgICBzcGFjZXMKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDA3LzAxLzIxIDAxOjQ1OjM1CiAgICAgW3JlYWRjb25mLmNdCiAgICAgc3BhY2VzCiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA3LzAxLzIyIDExOjMyOjUwCiAgICAgW3NmdHAtY2xpZW50LmNdCiAgICAgcmV0dXJuIGVycm9yIGZyb20gZG9fdXBsb2FkKCkgd2hlbiBhIHdyaXRlIGZhaWxzLiBmaXhlcyBieiMxMjUyOiB6ZXJvCiAgICAgZXhpdCBzdGF0dXMgZnJvbSBzZnRwIHdoZW4gdXBsb2FkaW5nIHRvIGEgZnVsbCBkZXZpY2UuIHJlcG9ydCBmcm9tCiAgICAgamlya2F0IEFUIGF0bGFzLmN6OyBvayBkdHVja2VyQAogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNy8wMS8yMiAxMzowNjoyMQogICAgIFtzY3AuY10KICAgICBmaXggZGV0ZWN0aW9uIG9mIHdoZXRoZXIgd2Ugc2hvdWxkIHNob3cgcHJvZ3Jlc3MgbWV0ZXIgb3Igbm90OiBzY3AKICAgICB0ZXN0ZWQgaXNhdHR5KHN0ZGVycikgYnV0IHdyb3RlIHRoZSBwcm9ncmVzcyBtZXRlciB0byBzdGRvdXQuIFRoaXMgcGF0Y2gKICAgICBtYWtlcyBpdCB0ZXN0IHN0ZG91dC4gYnojMTI2NSByZXBvcnRlZCBieSBqdW5rbWFpbCBBVCBiaXRzY3VscHR1cmUuY29tOwogICAgIG9mIGR0dWNrZXJACiAgIC0gc3RldmVza0BjdnMub3BlbmJzZC5vcmcgMjAwNy8wMi8xNCAxNDozMjowMAogICAgIFtidWZibi5jXQogICAgIHR5cG9zIGluIGNvbW1lbnRzOyBvayBqbWNACiAgIC0gZHR1Y2tlckBjdnMub3BlbmJzZC5vcmcgMjAwNy8wMi8xOSAxMDo0NTo1OAogICAgIFttb25pdG9yX3dyYXAuYyBzZXJ2Y29uZi5jIHNlcnZjb25mLmggbW9uaXRvci5jIHNzaGRfY29uZmlnLjVdCiAgICAgVGVhY2ggTWF0Y2ggaG93IGhhbmRsZSBjb25maWcgZGlyZWN0aXZlcyB0aGF0IGFyZSB1c2VkIGJlZm9yZQogICAgIGF1dGhlbnRpY2F0aW9uLiAgVGhpcyBhbGxvd3MgY29uZmlndXJhdGlvbnMgc3VjaCBhcyBwZXJtaXR0aW5nIHBhc3N3b3JkCiAgICAgYXV0aGVudGljYXRpb24gZnJvbSB0aGUgbG9jYWwgbmV0IG9ubHkgd2hpbGUgcmVxdWlyaW5nIHB1YmtleSBmcm9tCiAgICAgb2Zmc2l0ZS4gIG9rIGRqbUAsIG1hbiBwYWdlIGJpdHMgb2sgam1jQAogLSAoZHR1Y2tlcikgW2NvbnRyaWIvZmluZHNzbC5zaF0gQWRkICJ3aGljaCIgYXMgYSBzaGVsbCBmdW5jdGlvbiBzaW5jZSBzb21lCiAgIHBsYXRmb3JtcyBkb24ndCBoYXZlIGl0LiAgUGF0Y2ggZnJvbSBkbGVvbmFyZCBhdCB2aW50ZWxhLmNvbS4KIC0gKGR0dWNrZXIpIFtvcGVuYnNkLWNvbXBhdC9nZXRycnNldGJ5bmFtZS5jXSBEb24ndCBhdHRlbXB0IHRvIGNhbGxvYwogICBhbiBhcnJheSBmb3Igc2lnbmF0dXJlcyB3aGVuIHRoZXJlIGFyZSBub25lIHNpbmNlICJjYWxsb2MoMCwgbikgcmV0dXJucwogICBOVUxMIG9uIHNvbWUgcGxhdGZvcm1zIChlZyBUcnU2NCksIHdoaWNoIGlzIGV4cGxpY2l0bHkgcGVybWl0dGVkIGJ5CiAgIFBPU0lYLiAgRGlhZ25vc2lzIGFuZCBwYXRjaCBieSBzdmFsbGV0IGdlbm9zY29wZS5jbnMuZnIuCgoyMDA3MDEyOAogLSAoZGptKSBbY2hhbm5lbHMuYyBzZXJ2ZXJsb29wLmNdIEZpeCBzby1jYWxsZWQgImhhbmcgb24gZXhpdCIgKGJ6ICM1MikKICAgd2hlbiBjbG9zaW5nIGEgdHR5IHNlc3Npb24gd2hlbiBhIGJhY2tncm91bmQgcHJvY2VzcyBzdGlsbCBob2xkcyB0dHkKICAgZmRzIG9wZW4uIEdyZWF0IGRldGVjdGl2ZSB3b3JrIGFuZCBwYXRjaCBieSBNYXJjIEF1cmVsZSBMYSBGcmFuY2UsCiAgIHNsaWdodGx5IHR3ZWFrZWQgYnkgbWU7IG9rIGR0dWNrZXJACgoyMDA3MDEyMwogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L2JzZC1zbnByaW50Zi5jXSBTdGF0aWMgZGVjbGFyYXRpb25zIGZvciBwdWJsaWMKICAgbGlicmFyeSBpbnRlcmZhY2VzIGFyZW4ndCB2ZXJ5IGhlbHBmdWwuIEZpeCB1cCB0aGUgRE9QUl9PVVRDSCBtYWNybwogICBzbyBpdCB3b3JrcyBwcm9wZXJseSBhbmQgbW9kaWZ5IGl0cyBjYWxsZXJzIHNvIHRoYXQgdGhleSBkb24ndCBwcmUgb3IKICAgcG9zdCBkZWNyZW1lbnQgYXJndW1lbnRzIHRoYXQgYXJlIGNvbmRpdGlvbmFsbHkgZXZhbHVhdGVkLiBXaGlsZSB0aGVyZSwKICAgcHV0IFNOUFJJTlRGX0NPTlNUIGJhY2sgYXMgaXQgcHJldmVudHMgYnVpbGQgZmFpbHVyZXMgaW4gc29tZQogICBjb25maWd1cmF0aW9ucy4gIG9rIGRqbUAgKGZvciBtb3N0IG9mIGl0KQoKMjAwNzAxMjIKIC0gKGRqbSkgW3NzaC1yYW5kLWhlbHBlci44XSBtYW5wYWdlIG5pdHM7CiAgIGZyb20gZGxlb25hcmQgQVQgdmludGVsYS5jb20gKGJ6IzE1MjkpCgoyMDA3MDExNwogLSAoZHR1Y2tlcikgW3BhY2tldC5jXSBSZS1yZW1vdmUgaW5fc3lzdG0uaCBzaW5jZSBpdCdzIGFscmVhZHkgaW4gaW5jbHVkZXMuaAogICBhbmQgbXVsdGlwbGUgaW5jbHVkaW5nIGl0IGNhdXNlcyBwcm9ibGVtcyBvbiBvbGQgSVJJWGVzLiAgKEl0IHNudWNrIGJhY2sKICAgaW4gZHVyaW5nIGEgc3luYy4pICBGb3VuZCAoYWdhaW4pIGJ5IEdlb3JnIFNjaHdhcnouCgoyMDA3MDExNAogLSAoZHR1Y2tlcikgW3NzaC1rZXlnZW4uY10gYXYgLT4gYXJndiB0byBtYXRjaCBlYXJsaWVyIHN5bmMuCiAtIChkam0pIFtvcGVuYnNkLWNvbXBhdC9ic2Qtc25wcmludGYuY10gRml4IGludGVnZXIgb3ZlcmZsb3cgaW4gcmV0dXJuCiAgIHZhbHVlIG9mIHNucHJpbnRmIHJlcGxhY2VtZW50LCBzaW1pbGFyIHRvIGJ1Z3MgaW4gdmFyaW91cyBsaWJjCiAgIGltcGxlbWVudGF0aW9ucy4gVGhpcyBvdmVyZmxvdyBpcyBub3QgZXhwbG9pdGFibGUgaW4gT3BlblNTSC4gCiAgIFdoaWxlIEknbSBmaWRkbGluZyB3aXRoIGl0LCBtYWtlIGl0IGEgZmFpciBiaXQgZmFzdGVyIGJ5IGlubGluaW5nIHRoZQogICBhcHBlbmQtY2hhciByb3V0aW5lOyBvayBkdHVja2VyQAoKMjAwNzAxMDUKIC0gKGRqbSkgT3BlbkJTRCBDVlMgU3luYwogICAtIGRlcmFhZHRAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMTEvMTQgMTk6NDE6MDQKICAgICBbc3NoLWtleWdlbi5jXQogICAgIHVzZSBhcmdjIGFuZCBhcmd2IG5vdCBzb21lIG1hZGUgdXAgc2hvcnQgZm9ybQogICAtIHJheUBjdnMub3BlbmJzZC5vcmcgMjAwNi8xMS8yMyAwMTozNToxMQogICAgIFttaXNjLmMgc2Z0cC5jXQogICAgIERvbid0IGFjY2VzcyBidWZbc3RybGVuKGJ1ZikgLSAxXSBmb3IgemVyby1sZW5ndGggc3RyaW5ncy4KICAgICBgYG9rIGJ5IG1lJycgZGptQC4KICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMTIvMTEgMjE6MjU6NDYKICAgICBbc3NoLWtleWdlbi4xIHNzaC4xXQogICAgIGFkZCByZmMgNDcxNiAocHVibGljIGtleSBmb3JtYXQpOyBvayBqbWMKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMTIvMTIgMDM6NTg6NDIKICAgICBbY2hhbm5lbHMuYyBjb21wYXQuYyBjb21wYXQuaF0KICAgICBieiAjMTAxOTogc29tZSBzc2guY29tIHZlcnNpb25zIGFwcGFyZW50bHkgY2FuJ3QgY29wZSB3aXRoIHRoZQogICAgIHJlbW90ZSBwb3J0IGZvcndhcmRpbmcgYmluZF9hZGRyZXNzIGJlaW5nIGEgaG9zdG5hbWUsIHNvIHNlbmQKICAgICB0aGVtIGFuIGFkZHJlc3MgZm9yIGNhc2VzIHdoZXJlIHRoZXkgYXJlIG5vdCBleHBsaWNpdGx5CiAgICAgc3BlY2lmaWVkICh3aWxkY2FyZCBvciBsb2NhbGhvc3QgYmluZCkuICByZXBvcnRlZCBieSBkYXZlcm90aCBBVAogICAgIGFjbS5vcmc7IG9rIGR0dWNrZXJAIGRlcmFhZHRACiAgIC0gZHR1Y2tlckBjdnMub3BlbmJzZC5vcmcgMjAwNi8xMi8xMyAwODozNDozOQogICAgIFtzZXJ2Y29uZi5jXQogICAgIE1ha2UgUGVybWl0T3BlbiB3b3JrIHdpdGggbXVsdGlwbGUgdmFsdWVzIGxpa2UgdGhlIG1hbiBwYWdlcyBzYXlzLgogICAgIGJ6ICMxMjY3IHdpdGggZGV0YWlscyBmcm9tIHBldGVyIGF0IGRtdHouY29tLCB3aXRoICYgb2sgZGptQAogICAtIGR0dWNrZXJAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMTIvMTQgMTA6MDE6MTQKICAgICBbc2VydmNvbmYuY10KICAgICBNYWtlICJQZXJtaXRPcGVuIGFsbCIgZmlyc3QtbWF0Y2ggd2l0aGluIGEgYmxvY2sgdG8gbWF0Y2ggdGhlIHdheSBvdGhlcgogICAgIG9wdGlvbnMgd29yay4gIG9rIG1hcmt1c0AgZGptQAogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwNy8wMS8wMiAwOTo1NzoyNQogICAgIFtzc2hkX2NvbmZpZy41XQogICAgIGRvIG5vdCB1c2UgbGlzdHMgZm9yIFNZTk9QU0lTOwogICAgIGZyb20gZXJpYyBzLiByYXltb25kIHZpYSBicmFkCiAgIC0gc3RldmVza0BjdnMub3BlbmJzZC5vcmcgMjAwNy8wMS8wMyAwMDo1MzozOAogICAgIFtzc2gta2V5Z2VuLmNdCiAgICAgcmVtb3ZlIHNtYWxsIGRlYWQgY29kZTsgYXJuYXVkLmxhY29tYmUuMUB1bGF2YWwuY2EgdmlhIENvdmVyaXR5IHNjYW4KICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDA3LzAxLzAzIDAzOjAxOjQwCiAgICAgW2F1dGgyLWNoYWxsLmMgY2hhbm5lbHMuYyBkbnMuYyBzZnRwLmMgc3NoLWtleWdlbi5jIHNzaC5jXQogICAgIHNwYWNlcwogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDcvMDEvMDMgMDQ6MDk6MTUKICAgICBbc2Z0cC5jXQogICAgIEFSR1NVU0VEIGZvciBsaW50CiAgIC0gc3RldmVza0BjdnMub3BlbmJzZC5vcmcgMjAwNy8wMS8wMyAwNzoyMjozNgogICAgIFtzZnRwLXNlcnZlci5jXQogICAgIHNwYWNlcwoKMjAwNjEyMDUKIC0gKGRqbSkgW2F1dGguY10gRml4IE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBmYWtlcHcoKS4gIENyYXNoIHdvdWxkCiAgIG9jY3VyIGlmIHRoZSBzZXJ2ZXIgZGlkIG5vdCBoYXZlIHRoZSBwcml2c2VwIHVzZXIgYW5kIGFuIGludmFsaWQgdXNlcgogICB0cmllZCB0byBsb2dpbiBhbmQgYm90aCBwcml2c2VwIGFuZCBrcmI1IGF1dGggYXJlIGRpc2FibGVkOyBvayBkdHVja2VyQAogLSAoZGptKSBbYnNkLWFzcHJpbnRmLmNdIEJldHRlciB0ZXN0IGZvciBiYWQgdnNucHJpbnRmIGxlbmd0aHM7IG9rIGR0dWNrZXJACgoyMDA2MTEwOAogLSAoZHR1Y2tlcikgT3BlbkJTRCBDVlMgU3luYwogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwNi8xMS8wNyAxMzowMjowNwogICAgIFtkaC5jXQogICAgIEJOX2hleDJibiByZXR1cm5zIGludDsgZnJvbSBkdHVja2VyQAoKMjAwNjExMDcKIC0gKGR0dWNrZXIpIFtzc2hkLmNdIFVzZSBwcml2c2VwX3B3IGlmIHdlIGhhdmUgaXQsIGJ1dCBvbmx5IHJlcXVpcmUgaXQKICAgaWYgd2UgYWJzb2x1dGVseSBuZWVkIGl0LiAgUG9pbnRlZCBvdXQgYnkgQ29yaW5uYSwgb2sgZGptQAogLSAoZHR1Y2tlcikgT3BlbkJTRCBDVlMgU3luYwogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwNi8xMS8wNiAyMToyNToyOAogICAgIFthdXRoLXJzYS5jIGtleGdleGMuYyBrZXhkaHMuYyBrZXkuYyBzc2gtZHNzLmMgc3NoZC5jIGtleGdleHMuYwogICAgIHNzaC1rZXlnZW4uYyBidWZibi5jIG1vZHVsaS5jIHNjYXJkLmMga2V4ZGhjLmMgc3NoY29ubmVjdDEuYyBkaC5jIHJzYS5jXQogICAgIGFkZCBtaXNzaW5nIGNoZWNrcyBmb3Igb3BlbnNzbCByZXR1cm4gY29kZXM7IHdpdGggJiBvayBkam1ACiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzExLzA3IDEwOjMxOjMxCiAgICAgW21vbml0b3IuYyB2ZXJzaW9uLmhdCiAgICAgY29ycmVjdGx5IGNoZWNrIGZvciBiYWQgc2lnbmF0dXJlcyBpbiB0aGUgbW9uaXRvciwgb3RoZXJ3aXNlIHRoZSBtb25pdG9yCiAgICAgYW5kIHRoZSB1bnByaXYgcHJvY2VzcyBjYW4gZ2V0IG91dCBvZiBzeW5jLiB3aXRoIGR0dWNrZXJALCBvayBkam1ALAogICAgIGR0dWNrZXJACiAtIChkdHVja2VyKSBbUkVBRE1FIGNvbnRyaWIve2NhbGRlcmEscmVkaGF0LGNvbnRyaWJ9L29wZW5zc2guc3BlY10gQnVtcAogICB2ZXJzaW9ucy4KIC0gKGR0dWNrZXIpIFJlbGVhc2UgNC41cDEuCgoyMDA2MTEwNQogLSAoZGptKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gb3R0b0BjdnMub3BlbmJzZC5vcmcgMjAwNi8xMC8yOCAxODowODoxMAogICAgIFtzc2guMV0KICAgICBjb3JyZWN0L2V4cGFuZCBleGFtcGxlIG9mIHVzYWdlIG9mIC13OyBvayBqbWNAIHN0ZXZlc2tACiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzEwLzMxIDE2OjMzOjEyCiAgICAgW2tleGRoYy5jIGtleGRocy5jIGtleGdleGMuYyBrZXhnZXhzLmNdCiAgICAgY2hlY2sgREhfY29tcHV0ZV9rZXkoKSBmb3IgLTEgZXZlbiBpZiBpdCBzaG91bGQgbm90IGhhcHBlbiBiZWNhdXNlIG9mCiAgICAgZWFybGllciBjYWxscyB0byBkaF9wdWJfaXNfdmFsaWQoKTsgcmVwb3J0IGtyYWhtZXIgYXQgc3VzZS5kZTsgb2sgZGptCgoyMDA2MTEwMQogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L3BvcnQtc29sYXJpcy5jXSBCdWcgIzEyNTU6IE1ha2Ugb25seSBod2VycgogICBldmVudHMgZmF0YWwgaW4gU29sYXJpcyBwcm9jZXNzIGNvbnRyYWN0IHN1cHBvcnQgYW5kIHRlbGwgaXQgdG8gc2lnbmFsCiAgIG9ubHkgcHJvY2Vzc2VzIGluIHRoZSBzYW1lIHByb2Nlc3MgZ3JvdXAgd2hlbiBzb21ldGhpbmcgaGFwcGVucy4KICAgQmFzZWQgb24gaW5mb3JtYXRpb24gZnJvbSBhbmRyZXcuYmVuaGFtIGF0IHRodXMubmV0IGFuZCBzaW1pbGFyIHRvCiAgIGEgcGF0Y2ggZnJvbSBDaGFkIE15bmhpZXIuICBvayBkam1ACgoyMDA2MTAyNwotIChkam0pIFthdXRoLmNdIGdjIHNvbWUgZGVhZCBjb2RlCgoyMDA2MTAyMwogLSAoZGptKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gcmF5QGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA5LzMwIDE3OjQ4OjIyCiAgICAgW3NmdHAuY10KICAgICBDbGVhciBlcnJubyBiZWZvcmUgY2FsbGluZyB0aGUgc3RydG9sIGZ1bmN0aW9ucy4KICAgICBGcm9tIFBhdWwgU3RvZWJlciA8eDAwMDEgYXQgeCBkb3QgZGUxIGRvdCBjYz4uCiAgICAgT0sgZGVyYWFkdEAuCiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzEwLzA2IDAyOjI5OjE5CiAgICAgW3NzaC1hZ2VudC5jIHNzaC1rZXlzY2FuLmMgc3NoLmNdCiAgICAgc3lzL3Jlc291cmNlLmggbmVlZHMgc3lzL3RpbWUuaDsgcHJvbXB0ZWQgYnkgYnJhZEAKICAgICAoTkIuIElkIHN5bmMgb25seSBmb3IgcG9ydGFibGUpCiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzEwLzA5IDIzOjM2OjExCiAgICAgW3Nlc3Npb24uY10KICAgICB4bWFsbG9jIC0+IHhjYWxsb2MgdGhhdCB3YXMgbWlzc2VkIHByZXZpb3VzbHksIGZyb20gcG9ydGFibGUKICAgICAoTkIuIElkIHN5bmMgb25seSBmb3IgcG9ydGFibGUsIG9idmlvdXNseSkKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMTAvMTAgMTA6MTI6NDUKICAgICBbc3NoY29ubmVjdC5jXQogICAgIHNsZWVwIGJlZm9yZSByZXRyeWluZyAobm90IGFmdGVyKSBzaW5jZSBzbGVlcCBjaGFuZ2VzIGVycm5vOyBmaXhlcwogICAgIHByIDUyNTA7IHJhZEB0d2lnLmNvbTsgb2sgZHR1Y2tlciBkam0KICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMTAvMTEgMTI6Mzg6MDMKICAgICBbY2xpZW50bG9vcC5jIHNlcnZlcmxvb3AuY10KICAgICBleGl0IGluc3RlYWQgb2YgZG9pbmcgYSBibG9ja2luZyB0Y3Agc2VuZCBpZiB3ZSBkZXRlY3QgYSBjbGllbnQvc2VydmVyCiAgICAgdGltZW91dCwgc2luY2UgdGhlIHRjcCBzZW5kcXVldWUgbWlnaHQgYmUgYWxyZWFkeSBmdWxsIChvZiBhbGl2ZQogICAgIHJlcXVlc3RzKTsgb2sgZHR1Y2tlciwgcmVwb3J0IG1wZgogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNi8xMC8yMiAwMjoyNTo1MAogICAgIFtzZnRwLWNsaWVudC5jXQogICAgIGNhbmNlbCBwcm9ncmVzcyBtZXRlciB3aGVuIHVwbG9hZCB3cml0ZSBmYWlsczsgb2sgZGVyYWFkdEAKIC0gKHRpbSkgW01ha2VmaWxlLmluIHNjYXJkL01ha2VmaWxlLmluXSBBZGQgZGF0YXJvb3RkaXI9IGxpbmVzIHRvIGtlZXAKICAgYXV0b2NvbmYgMi42MCBmcm9tIGNvbXBsYWluaW5nLgoKMjAwNjEwMTgKIC0gKGR0dWNrZXIpIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSByYXlAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDkvMjUgMDQ6NTU6MzgKICAgICBbc3NoLWtleXNjYW4uMSBzc2guMV0KICAgICBDaGFuZ2UgImEgU1NIIiB0byAiYW4gU1NIIi4gIEh1cnJheSwgSSdtIG5vdCB0aGUgb25seSBvbmUgd2hvCiAgICAgcHJvbm91bmNlcyAiU1NIIiBhcyAiZXNzLWVzcy1haWNoIi4KICAgICBPSyBqbWNAIGFuZCBzdGV2ZXNrQC4KIC0gKGR0dWNrZXIpIFtzc2hkLmNdIFJlc2h1ZmZsZSBzdG9yaW5nIG9mIHB3IHN0cnVjdDsgcHJldmVudHMgd2FybmluZ3MKICAgb24gb2xkZXIgdmVyc2lvbnMgb2YgT1MgWC4gIG9rIGRqbUAKCjIwMDYxMDE2CiAtIChkdHVja2VyKSBbbW9uaXRvcl9mZHBhc3MuY10gSW5jbHVkZSBzeXMvaW4uaCwgcmVxdWlyZWQgZm9yIGNtc2cgbWFjcm9zCiAgIG9uIG9sZGVyICgyLjApIExpbnV4ZXMuICBCYXNlZCBvbiBwYXRjaCBmcm9tIHRobW8tMTMgYXQgZ214IGRlLgoKMjAwNjEwMDYKIC0gKHRpbSkgW2J1aWxkcGtnLnNoLmluXSBVc2UgdW5hbWUgLXIgaW5zdGVhZCBvZiAtdiBpbiBPU19WRVIgZm9yIFNvbGFyaXMuCiAgIERpZmZlcmVudGlhdGUgYmV0d2VlbiBPcGVuU2VydmVyIDUgYW5kIE9wZW5TZXJ2ZXIgNgogLSAoZHR1Y2tlcikgW2NvbmZpZ3VyZS5hY10gU2V0IHB1dCAtbHNlbGludXggaW50byAkTElCUyB3aGlsZSB0ZXN0aW5nIGZvcgogICBTRUxpbnV4IGZ1bmN0aW9ucyBzbyB0aGV5J3JlIGRldGVjdGVkIGNvcnJlY3RseS4gIFBhdGNoIGZyb20gcGViZW5pdG8gYXQKICAgZ2VudG9vLm9yZy4KIC0gKHRpbSkgW2J1aWxkcGtnLnNoLmluXSBTb21lIHN5c3RlbXMgaGF2ZSByZWFsbHkgbGltaXRlZCBuYXdrIChPcGVuU2VydmVyKS4KICAgQWxsb3cgc2V0dGluZyBhbHRlcm5hdGUgYXdrIGluIG9wZW5zc2gtY29uZmlnLmxvY2FsLgoKMjAwNjEwMDMKIC0gKHRpbSkgW2NvbmZpZ3VyZS5hY10gTW92ZSBDSEVDS19IRUFERVJTIHRlc3QgYmVmb3JlIHBsYXRmb3JtIHNwZWNpZmljCiAgIHNlY3Rpb24gc28gYWRkaXRpb25hbCBwbGF0Zm9ybSBzcGVjaWZpYyBDSEVDS19IRUFERVIgdGVzdHMgd2lsbCB3b3JrCiAgIGNvcnJlY3RseS4gRml4ZXMgIjxuZXQvaWZfdGFwLmg+IG9uIEZyZWVCU0QiIHByb2JsZW0gcmVwb3J0IGJ5IGRlcyBBVCBkZXMubm8KICAgRmVlZGJhY2sgYW5kICJzZWVtcyBsaWtlIGEgZ29vZCBpZGVhIiBkdHVja2VyQAoKMjAwNjEwMDEKIC0gKGR0dWNrZXIpIFthdWRpdC1ic20uY10gSW5jbHVkZSBlcnJuby5oLiAgUG9pbnRlZCBvdXQgYnkgZGVzIGF0IGRlcy5uby4KCjIwMDYwOTI5CiAtIChkdHVja2VyKSBbY29uZmlndXJlLmFjXSBCdWcgIzEyMzk6IEZpeCBjb25maWd1cmUgdGVzdCBmb3IgT3BlblNTSCBlbmdpbmUKICAgc3VwcG9ydC4gIFBhdGNoIGZyb20gYW5kcmV3LmJlbmhhbSBhdCB0aHVzIG5ldC4KCjIwMDYwOTI4CiAtIChkdHVja2VyKSBbZW50cm9weS5jXSBCdWcgIzEyMzg6IGluY2x1ZGUgc2lnbmFsLmggdG8gZml4IGNvbXBpbGF0aW9uIGVycm9yCiAgIG9uIFNvbGFyaXMgOCB3L291dCAvZGV2L3JhbmRvbSBvciBwcm5nZC4gIFBhdGNoIGZyb20gcmwgYXQKICAgbWF0aC50ZWNobmlvbi5hYy5pbC4KCjIwMDYwOTI2CiAtIChkdHVja2VyKSBbYnVmYXV4LmhdIG51a2UgYnVmYXV4Lmg7IGl0J3MgYWxyZWFkeSBnb25lIGZyb20gT3BlbkJTRCBhbmQgbm90CiAgIHJlZmVyZW5jZWQgYW55IG1vcmUuICBvayBkam1ACiAtIChkdHVja2VyKSBbc2Z0cC1zZXJ2ZXIuOF0gUmVzeW5jOyBzcG90dGVkIGJ5IGRqbUAKIC0gKGR0dWNrZXIpIFJlbGVhc2UgNC40cDEuCgoyMDA2MDkyNAogLSAodGltKSBbY29uZmlndXJlLmFjXSBSZW1vdmUgQ0ZMQUdTIGhhY2sgZm9yIFVuaXhXYXJlIDEueC8yLnggKGFkZGVkCiAgIHRvIHJldiAxLjMwOCkgdG8gd29yayBhcm91bmQgYnJva2VuIGdjYyAyLnggaGVhZGVyIGZpbGUuCgoyMDA2MDkyMwogLSAoZHR1Y2tlcikgW2NvbmZpZ3VyZS5hY10gQnVnICMxMjM0OiBQdXQgb3BlbnNjIGxpYnMgaW50byAkTElCUyByYXRoZXIgdGhhbgogICAkTERGTEFHUy4gIFBhdGNoIGZyb20gdmFwaWVyIGF0IGdlbnRvbyBvcmcuCgoyMDA2MDkyMgogLSAoZHR1Y2tlcikgW3BhY2tldC5jIGNhbm9ob3N0LmNdIEluY2x1ZGUgYXJwYS9pbmV0LmggZm9yIGh0b25sIG1hY3JvcyBvbgogICBzb21lIHBsYXRmb3JtcyAoZWcgSFAtVVggMTEuMDApLiAgRnJvbSBzYW50aGkuYW1pcnRhIGF0IGdtYWlsIGNvbS4KCjIwMDYwOTIxCiAtIChkdHVja2VyKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gb3R0b0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wOS8xOSAwNTo1MjoyMwogICAgIFtzZnRwLmNdCiAgICAgVXNlIFNfSVMqIG1hY3JvcyBpbnN0ZWQgb2YgbWFza2luZyB3aXRoIFNfSUYqIGZsYWdzLiBUaGUgbGF0dGVyIG1heQogICAgIGhhdmUgbXVsdGlwbGUgYml0cyBzZXQsIHdoaWNoIGxlYWQgdG8gc3VycHJpc2luZyByZXN1bHRzLiBTcG90dGVkIGJ5CiAgICAgUGF1bCBTdG9lYmVyLCBtb3JlIHRvIGNvbWUuIG9rIG1pbGxlcnRAIHBlZHJvQCBqYXJlZHlAIGRqbUAKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDkvMTkgMjE6MTQ6MDgKICAgICBbcGFja2V0LmNdCiAgICAgY2xpZW50IE5VTEwgZGVyZWYgb24gcHJvdG9jb2wgZXJyb3I7IFRhdmlzIE9ybWFuZHksIEdvb2dsZSBTZWN1cml0eSBUZWFtCiAtIChkdHVja2VyKSBbZGVmaW5lcy5oXSBJbmNsdWRlIHVuaXN0ZC5oIGJlZm9yZSBkZWZpbmluZyBnZXRwZ3JwOyBmaXhlcwogICBidWlsZCBlcnJvciBvbiBVbHRyaXguICBGcm9tIEJlcm5oYXJkIFNpbW9uLgoKMjAwNjA5MTgKIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWNdIE9uIEFJWCwgY2hlY2sgdG8gc2VlIGlmIHRoZSBjb21waWxlciB3aWxsIGFsbG93CiAgIG1hY3JvIHJlZGVmaW5pdGlvbnMsIGFuZCBpZiBub3QsIHJlbW92ZSAiLXFsYW5nbHZsPWFuc2kiIGZyb20gdGhlIGZsYWdzLgogICBBbGxvd3MgYnVpbGQgb3V0IG9mIHRoZSBib3ggd2l0aCBvbGRlciBWQUMgYW5kIFhMQyBjb21waWxlcnMuICBGb3VuZCBieQogICBEYXZpZCBCcm9uZGVyIGFuZCBCZXJuaGFyZCBTaW1vbi4KIC0gKGR0dWNrZXIpIFtvcGVuYnNkLWNvbXBhdC9wb3J0LWFpeC57YyxofV0gUmVkdWNlIHNjb3BlIG9mIGluY2x1ZGVzLgogICBQcmV2ZW50cyBtYWNybyByZWRlZmluaXRpb24gd2FybmluZ3Mgb2YgIlJET05MWSIuCgoyMDA2MDkxNgogLSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA5LzE2IDE5OjUzOjM3CiAgICAgW2RlYXR0YWNrLmMgZGVhdHRhY2suaCBwYWNrZXQuY10KICAgICBsaW1pdCBtYXhpbXVtIHdvcmsgcGVyZm9ybWVkIGJ5IHRoZSBDUkMgY29tcGVuc2F0aW9uIGF0dGFjayBkZXRlY3RvciwKICAgICBwcm9ibGVtIHJlcG9ydGVkIGJ5IFRhdmlzIE9ybWFuZHksIEdvb2dsZSBTZWN1cml0eSBUZWFtOwogICAgIG9rIG1hcmt1c0AgZGVyYWFkdEAKIC0gKGRqbSkgQWRkIG9wZW5zc2gueG1sIHRvIC5jdnNpZ25vcmUgYW5kIHNvcnQgaXQKIC0gKGR0dWNrZXIpIFthdXRoLXBhbS5jXSBQcm9wb2dhdGUgVFogZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gUEFNIGF1dGgKICAgcHJvY2VzcyBzbyB0aGF0IGFueSBsb2dnaW5nIGl0IGRvZXMgaXMgd2l0aCB0aGUgcmlnaHQgdGltZXpvbmUuICBGcm9tCiAgIFNjb3R0IFN0cmlja2xlciwgb2sgZGptQC4KIC0gKGR0dWNrZXIpIFttb25pdG9yLmNdIENvcnJlY3RseSBoYW5kbGUgYXVkaXRpbmcgb2Ygc2luZ2xlIGNvbW1hbmRzIHdoZW4KICAgdXNpbmcgUHJvdG9jb2wgMS4gIEZyb20gamhiIGF0IGZyZWVic2QuCiAtIChkam0pIFtzc2hkLmNdIEZpeCB3YXJuaW5nL0FQSSBhYnVzZTsgb2sgZHR1Y2tlckAKIC0gKGR0dWNrZXIpIFtJTlNUQUxMXSBBZGQgaW5mbyBhYm91dCBhdWRpdCBzdXBwb3J0LgoKMjAwNjA5MTIKIC0gKGRqbSkgW01ha2VmaWxlLmluIGJ1aWxkcGtnLnNoLmluIGNvbmZpZ3VyZS5hYyBvcGVuc3NoLnhtbC5pbl0KICAgU3VwcG9ydCBTTUYgaW4gU29sYXJpcyBQYWNrYWdlcyBpZiBlbmFibGVkIGJ5IGNvbmZpZ3VyZS4gUGF0Y2ggZnJvbQogICBDaGFkIE15bmhpZXIsIHRlc3RlZCBieSBkdHVja2VyQAoKMjAwNjA5MTEKIC0gKGR0dWNrZXIpIFtjaXBoZXItYWVzLmNdIEluY2x1ZGUgc3RyaW5nLmggZm9yIG1lbWNweSBhbmQgZnJpZW5kcy4gIE5vdGVkCiAgIGJ5IFBla2thIFNhdm9sYS4KCjIwMDYwOTEwCiAtIChkdHVja2VyKSBbY29udHJpYi9haXgvYnVpbGRiZmYuc2hdIEVuc3VyZSB0aGF0IHBlcmwgaXMgYXZhaWxhYmxlLgogLSAoZHR1Y2tlcikgW2NvbmZpZ3VyZS5hY10gQWRkIC1sY3J5cHQgdG8gbGV0IERyYWdvbkZseSBidWlsZCBPT1RCLgoKMjAwNjA5MDkKIC0gKGR0dWNrZXIpIFtvcGVuYnNkLWNvbXBhdC9ic2Qtc25wcmludGYuY10gQWRkIHN0ZGFyZy5oLgogLSAoZHR1Y2tlcikgW2NvbnRyaWIvYWl4L2J1aWxkYmZmLnNoXSBBbHdheXMgY3JlYXRlIHByaXZzZXAgdXNlci4KIC0gKGR0dWNrZXIpIFtidWlsZHBrZy5zaC5pbl0gQWx3YXlzIGNyZWF0ZSBwcml2c2VwIHVzZXIuICBvayBkam1ACgoyMDA2MDkwOAogLSAoZHR1Y2tlcikgW2F1dGgtc2lhLmNdIEFkZCBpbmNsdWRlcyByZXF1aXJlZCBmb3IgYnVpbGQgb24gVHJ1NjQuICBQYXRjaAogICBmcm9tIENocmlzIEFkYW1zLgogLSAoZHR1Y2tlcikgW2NvbmZpZ3VyZS5hY10gVGhlIEJTTSBoZWFkZXIgdGVzdCBuZWVkcyB0aW1lLmggaW4gc29tZSBjYXNlcy4KCjIwMDYwOTA3CiAtIChkam0pIFtzc2hkLmMgYXV0aC5jXSBTZXQgdXAgZmFrZXB3KCkgd2l0aCBwcml2c2VwIHVpZC9naWQsIHNvIGl0IGNhbgogICBiZSB1c2VkIHRvIGRyb3AgcHJpdmlsZWdlIHRvOyBmaXhlcyBTb2xhcmlzIEdTU0FQSSBjcmFzaCByZXBvcnRlZCBieQogICBNYWdudXMgQWJyYW50ZTsgc3VnZ2VzdGlvbiBhbmQgZmVlZGJhY2sgZHR1Y2tlckAKICAgTkIuIHRoaXMgY2hhbmdlIHdpbGwgcmVxdWlyZSB0aGF0IHRoZSBwcml2aWxlZ2Ugc2VwYXJhdGlvbiB1c2VyIG11c3QKICAgZXhpc3Qgb24gYWxsIHRoZSB0aW1lLCBub3QganVzdCB3aGVuIFVzZVByaXZpbGVnZVNlcGFyYXRpb249eWVzCiAtICh0aW0pIFtjb25maWd1cmUuYWNdIHMvQlJPS0VOX1VQRFdUTVAvQlJPS0VOX1VQRFdUTVBYLyBvbiBTQ08gT1NSNgogLSAoZHR1Y2tlcikgW2xvZ2lucmVjLmNdIFdyYXAgcGF0aHMuaCBpbiBIQVZFX1BBVEhTX0guCiAtIChkdHVja2VyKSBbcmVncmVzcy9jZmdtYXRjaC5zaF0gc3RvcF9jbGllbnQgaXMgcmFjeSwgc28gZ2l2ZSB1cyBhIGJldHRlcgogICBjaGFuY2Ugb2Ygd2lubmluZy4KCjIwMDYwOTA1CiAtIChkdHVja2VyKSBbY29uZmlndXJlLmFjXSBzL0FDX0RFRklORVMvQUNfREVGSU5FLyBzcG90dGVkIGJ5IFJvdW1lbiBQZXRyb3YuCiAtIChkdHVja2VyKSBbbG9naW5yZWMuY10gSW5jbHVkZSBwYXRocy5oIGZvciBfUEFUSF9CVE1QLgoKMjAwNjA5MDQKIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWNdIERlZmluZSBCUk9LRU5fVVBEV1RNUCBvbiBTQ08gT1NSNiBhcyB0aGUgbmF0aXZlCiAgIHVwZHdkdG1wIHNlZW1zIHRvIGdlbmVyYXRlIGludmFsaWQgd3RtcCBlbnRyaWVzLiAgRnJvbSBSb2dlciBDb3JuZWxpdXMsCiAgIG9rIGRqbUAKCjIwMDYwOTAzCiAtIChkdHVja2VyKSBbY29uZmlndXJlLmFjIG9wZW5ic2QtY29tcGF0L29wZW5ic2QtY29tcGF0LmhdIENoZWNrIGZvcgogICBkZWNsYXJhdGlvbiBvZiB3cml0ZXYoMikgYW5kIGRlY2xhcmUgaXQgb3Vyc2VsdmVzIGlmIG5lY2Vzc2FyeS4gIE1ha2VzCiAgIHRoZSBhdG9taWNpb3YoKSBjYWxscyBidWlsZCBvbiByZWFsbHkgb2xkIHN5c3RlbXMuICBvayBkam1ACgoyMDA2MDkwMgogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L3BvcnQtaXJpeC5jXSBBZGQgZXJybm8uaCwgZm91bmQgYnkgSWFpbiBNb3JnYW4uCiAtIChkdHVja2VyKSBbc3NoLWtleXNjYW4uYyBzc2gtcmFuZC1oZWxwZXIuYyBzc2guYyBzc2hjb25uZWN0LmMKICAgb3BlbmJzZC1jb21wYXQvYmluZHJlc3Zwb3J0LmMgb3BlbmJzZC1jb21wYXQvZ2V0cnJzZXRieW5hbWUuYwogICBvcGVuYnNkLWNvbXBhdC9wb3J0LXR1bi5jIG9wZW5ic2QtY29tcGF0L3JyZXN2cG9ydC5jXSBJbmNsdWRlIDxhcnBhL2luZXQuaD4KICAgZm9yIGh0b24qIGFuZCBudG9oKiBtYWNyb3MuICBSZXF1aXJlZCBvbiAoYXQgbGVhc3QpIEhQLVVYIHNpbmNlIHdlIGRlZmluZQogICBfWE9QRU5fU09VUkNFX0VYVEVOREVELiAgRm91bmQgYnkgc2FudGhpLmFtaXJ0YSBhdCBnbWFpbCBjb20uCgoyMDA2MDkwMQogLSAoZGptKSBbYXVkaXQtYnNtLmMgYXVkaXQuYyBhdXRoLWJzZGF1dGguYyBhdXRoLWNoYWxsLmMgYXV0aC1wYW0uY10KICAgW2F1dGgtcnNhLmMgYXV0aC1zaGFkb3cuYyBhdXRoLXNpYS5jIGF1dGgxLmMgYXV0aDItY2hhbGwuY10KICAgW2F1dGgyLWdzcy5jIGF1dGgyLWtiZGludC5jIGF1dGgyLW5vbmUuYyBhdXRoZmQuYyBhdXRoZmlsZS5jXQogICBbY2lwaGVyLTNkZXMxLmMgY2lwaGVyLWFlcy5jIGNpcGhlci1iZjEuYyBjaXBoZXItY3RyLmMgY2xpZW50bG9vcC5jXQogICBbZGguYyBkbnMuYyBlbnRyb3B5LmMgZ3NzLXNlcnYta3JiNS5jIGdzcy1zZXJ2LmMgaG9zdGZpbGUuYyBrZXguY10KICAgW2tleGRoYy5jIGtleGRocy5jIGtleGdleGMuYyBrZXhnZXhzLmMga2V5LmMgbG9naW5yZWMuYyBtYWMuY10KICAgW21kNWNyeXB0LmMgbW9uaXRvci5jIG1vbml0b3Jfd3JhcC5jIHJlYWRjb25mLmMgcnNhLmNdCiAgIFtzY2FyZC1vcGVuc2MuYyBzY2FyZC5jIHNlc3Npb24uYyBzc2gtYWRkLmMgc3NoLWFnZW50LmMgc3NoLWRzcy5jXQogICBbc3NoLWtleWdlbi5jIHNzaC1rZXlzaWduLmMgc3NoLXJzYS5jIHNzaC5jIHNzaGNvbm5lY3QuY10KICAgW3NzaGNvbm5lY3QxLmMgc3NoY29ubmVjdDIuYyBzc2hkLmNdCiAgIFtvcGVuYnNkLWNvbXBhdC9ic2QtY3JheS5jIG9wZW5ic2QtY29tcGF0L3BvcnQtYWl4LmNdCiAgIFtvcGVuYnNkLWNvbXBhdC9wb3J0LWxpbnV4LmMgb3BlbmJzZC1jb21wYXQvcG9ydC1zb2xhcmlzLmNdCiAgIFtvcGVuYnNkLWNvbXBhdC9wb3J0LXV3LmNdCiAgIExvdHMgb2YgaGVhZGVycyBmb3IgU0NPIE9TUjYsIG1haW5seSBhZGRpbmcgc3RkYXJnLmggZm9yIGxvZy5oOwogICBjb21waWxlIHByb2JsZW1zIHJlcG9ydGVkIGJ5IHJhYyBBVCB0ZW56aW5nLm9yZwogLSAoZGptKSBbaW5jbHVkZXMuaCBtb25pdG9yLmMgb3BlbmJzZC1jb21wYXQvYmluZHJlc3Zwb3J0LmNdCiAgIFtvcGVuYnNkLWNvbXBhdC9ycmVzdnBvcnQuY10gU29tZSBtb3JlIGhlYWRlcnM6IG5ldGluZXQvaW4uaCAKICAgc3lzL3NvY2tldC5oIGFuZCB1bmlzdGQuaCBpbiB2YXJpb3VzIHBsYWNlcwogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L2JzZC1jeWd3aW5fdXRpbC5jXSBGaXggaW1wbGljdCBkZWNsYXJhdGlvbgogICB3YXJuaW5ncyBmb3IgYmluYXJ5X29wZW4gYW5kIGJpbmFyeV9jbG9zZS4gIFBhdGNoIGZyb20gQ29yaW5uYSBWaW5zY2hlbi4KIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWMgaW5jbHVkZXMuaCBvcGVuYnNkLWNvbXBhdC9nbG9iLntjLGh9XSBFeHBsaWNpdGx5CiAgIHRlc3QgZm9yIEdMT0JfTk9NQVRDSCBhbmQgdXNlIG91ciBnbG9iIGZ1bmN0aW9ucyBpZiBpdCdzIG5vdCBmb3VuZC4KICAgU3RvcHMgc2Z0cCBmcm9tIHNlZ2ZhdWx0aW5nIHdoZW4gYXR0ZW1wdGluZyB0byBnZXQgYSBub25leGlzdGVudCBmaWxlIG9uCiAgIEN5Z3dpbiAocHJldmlvdXMgdmVyc2lvbnMgb2YgT3BlblNTSCBkaWRuJ3QgdXNlIHRoZSBuYXRpdmUgZ2xvYikuIFBhcnRseQogICBmcm9tIGFuZCB0ZXN0ZWQgYnkgQ29yaW5uYSBWaW5zY2hlbi4KIC0gKGR0dWNrZXIpIFtSRUFETUUgY29udHJpYi97Y2FsZGVyYSxyZWRoYXQsc3VzZX0vb3BlbnNzaC5zcGVjXSAgQ3JhbmsKICAgdmVyc2lvbnMuCgoyMDA2MDgzMQogLSAoZGptKSBbQ1JFRElUUyBMSUNFTkNFIE1ha2VmaWxlLmluIGF1dGguYyBjb25maWd1cmUuYWMgaW5jbHVkZXMuaCBdCiAgIFtwbGF0Zm9ybS5jIHBsYXRmb3JtLmggc3NoZC5jIG9wZW5ic2QtY29tcGF0L01ha2VmaWxlLmluXQogICBbb3BlbmJzZC1jb21wYXQvb3BlbmJzZC1jb21wYXQuaCBvcGVuYnNkLWNvbXBhdC9wb3J0LXNvbGFyaXMuY10KICAgW29wZW5ic2QtY29tcGF0L3BvcnQtc29sYXJpcy5oXSBBZGQgc3VwcG9ydCBmb3IgU29sYXJpcyBwcm9jZXNzCiAgIGNvbnRyYWN0cywgZW5hYmxlZCB3aXRoIC0tdXNlLXNvbGFyaXMtY29udHJhY3RzLiBQYXRjaCBmcm9tIENoYWQKICAgTXluaGllciwgdHdlYWtlZCBieSBkdHVja2VyQCBhbmQgbXlzZWxmOyBvayBkdHVja2VyQAogLSAoZHR1Y2tlcikgW2NvbnRyaWIvY3lnd2luL3NzaC1ob3N0LWNvbmZpZ10gQWRkIFNlVGNiUHJpdmlsZWdlIHByaXZpbGVnZQogICB3aGlsZSBzZXR0aW5nIHVwIHRoZSBzc2ggc2VydmljZSBhY2NvdW50LiAgUGF0Y2ggZnJvbSBDb3Jpbm5hIFZpbnNjaGVuLgoKMjAwNjA4MzAKIC0gKGRqbSkgT3BlbkJTRCBDVlMgU3luYwogICAtIGR0dWNrZXJAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDgvMjEgMDg6MTQ6MDEKICAgICBbc3NoZF9jb25maWcuNV0KICAgICBEb2N1bWVudCBIb3N0YmFzZWRVc2VzTmFtZUZyb21QYWNrZXRPbmx5LiAgQ29ycmVjdGlvbnMgZnJvbSBqbWNALAogICAgIG9rIGptY0AgZGptQAogICAtIGR0dWNrZXJAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDgvMjEgMDg6MTU6NTcKICAgICBbc3NoZC44XQogICAgIEFkZCBtb3JlIGRldGFpbCBhYm91dCB3aGF0IHBlcm1pc3Npb25zIGFyZSBhbmQgYXJlbid0IGFjY2VwdGVkIGZvcgogICAgIGF1dGhvcml6ZWRfa2V5cyBmaWxlcy4gIENvcnJlY3Rpb25zIGptY0AsIG9rIGRqbUAsICJsb29rcyBnb29kIiBqbWNACiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA4LzI5IDEwOjQwOjE5CiAgICAgW2NoYW5uZWxzLmMgc2Vzc2lvbi5jXQogICAgIG5vcm1hbGlzZSBzb21lIGluY29uc2lzdGVudCAoYnV0IGhhcm1sZXNzKSBOVUxMIHBvaW50ZXIgY2hlY2tzCiAgICAgc3BvdHRlZCBieSB0aGUgU3RhbmZvcmQgU0FUVVJOIHRvb2wsIHZpYSBJc2lsIERpbGxpZzsKICAgICBvayBtYXJrdXNAIGRlcmFhZHRACiAgIC0gZHR1Y2tlckBjdnMub3BlbmJzZC5vcmcgMjAwNi8wOC8yOSAxMjowMjozMAogICAgIFtnc3MtZ2Vuci5jXQogICAgIFdvcmsgYXJvdW5kIGEgcHJvYmxlbSBpbiBIZWltZGFsIHRoYXQgb2NjdXJzIHdoZW4gS1JCNUNDTkFNRSBmaWxlIGlzCiAgICAgbWlzc2luZywgYnkgY2hlY2tpbmcgd2hldGhlciBvciBub3Qga2VyYmVyb3MgYWxsb2NhdGVkIHVzIGEgY29udGV4dAogICAgIGJlZm9yZSBhdHRlbXB0aW5nIHRvIGZyZWUgaXQuICBQYXRjaCBmcm9tIFNpbW9uIFdpbGtpbnNvbiwgdGVzdGVkIGJ5CiAgICAgYmlvcm5ALCBvayBkam1ACiAgIC0gZHR1Y2tlckBjdnMub3BlbmJzZC5vcmcgMjAwNi8wOC8zMCAwMDowNjo1MQogICAgIFtzc2hjb25uZWN0Mi5jXQogICAgIEZpeCByZWdyZXNzaW9uIHdoZXJlIFNTSDIgYmFubmVyIGlzIHByaW50ZWQgYXQgbG9nbGV2ZWxzIEVSUk9SIGFuZCBGQVRBTAogICAgIHdoZXJlIHByZXZpb3VzbHkgaXQgd2VyZW4ndC4gIGJ6ICMxMjIxLCBmb3VuZCBieSBEZWFuIEtvcGVza3ksIG9rIGRqbUAKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDgvMzAgMDA6MTQ6MzcKICAgICBbdmVyc2lvbi5oXQogICAgIGNyYW5rIHRvIDQuNAogLSAoZGptKSBbb3BlbmJzZC1jb21wYXQveGNyeXB0LmNdIG5lZWRzIHVuaXN0ZC5oCiAtIChkdHVja2VyKSBbYXV0aC5jIG9wZW5ic2QtY29tcGF0L3BvcnQtYWl4LmNdIEJ1ZyAjMTIwNzogYWx3YXlzIGNhbGwKICAgbG9naW5zdWNjZXNzIG9uIEFJWCBpbW1lZGlhdGVseSBhZnRlciBhdXRoZW50aWNhdGlvbiB0byBjbGVhciB0aGUgZmFpbGVkCiAgIGxvZ2luIGNvdW50LiAgUHJldmlvdXNseSB0aGlzIHdvdWxkIG9ubHkgaGFwcGVuIHdoZW4gYW4gaW50ZXJhY3RpdmUKICAgc2Vzc2lvbiBzdGFydHMgKGllIHdoZW4gYSBwdHkgaXMgYWxsb2NhdGVkKSBidXQgdGhpcyBtZWFucyB0aGF0IGFjY291bnRzCiAgIHRoYXQgaGF2ZSBwcmltYXJpbHkgbm9uLWludGVyYWN0aXZlIHNlc3Npb25zIChlZyBzY3AncykgbWF5IGdyYWR1YWxseQogICBhY2N1bXVsYXRlIGVub3VnaCBmYWlsdXJlcyB0byBsb2NrIG91dCBhbiBhY2NvdW50LiAgVGhpcyBjaGFuZ2UgbWF5IGhhdmUKICAgYSBzaWRlIGVmZmVjdCBvZiBjcmVhdGluZyB0d28gYXVkaXQgcmVjb3Jkcywgb25lIHdpdGggYSB0dHkgb2YgInNzaCIKICAgY29ycmVzcG9uZGluZyB0byB0aGUgYXV0aGVudGljYXRpb24gYW5kIG9uZSB3aXRoIHRoZSBhbGxvY2F0ZWQgcHR5IHBlcgogICBpbnRlcmFjdGl2ZSBzZXNzaW9uLgoKMjAwNjA4MjQKIC0gKGR0dWNrZXIpIFtvcGVuYnNkLWNvbXBhdC9iYXNlbmFtZS5jXSBJbmNsdWRlIGVycm5vLmguCiAtIChkdHVja2VyKSBbb3BlbmJzZC1jb21wYXQvYnNkLW1pc2MuY10gQWRkIGluY2x1ZGVzIG5lZWRlZCBmb3Igc2VsZWN0KDIpIG9uCiAgIG9sZGVyIHN5c3RlbXMuCiAtIChkdHVja2VyKSBbb3BlbmJzZC1jb21wYXQvYnNkLW1pc2MuY10gSW5jbHVkZSA8c3lzL3NlbGVjdC5oPiBmb3Igc2VsZWN0KDIpCiAgIG9uIFBPU0lYIHN5c3RlbXMuCiAtIChkdHVja2VyKSBbb3BlbmJzZC1jb21wYXQvYnNkLW9wZW5wdHkuY10gSW5jbHVkZSBmb3IgaW9jdGwoMikuCiAtIChkdHVja2VyKSBbb3BlbmJzZC1jb21wYXQvcnJlc3Zwb3J0LmNdIEluY2x1ZGUgPHN0ZGxpYi5oPiBmb3IgbWFsbG9jLgogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L3htbWFwLmNdIE1vdmUgI2RlZmluZSBIQVZFX01NQVAgdG8gcHJldmVudAogICB1bnVzZWQgdmFyaWFibGUgd2FybmluZyB3aGVuIHdlIGhhdmUgYSBicm9rZW4gb3IgbWlzc2luZyBtbWFwKDIpLgoKMjAwNjA4MjIKIC0gKGR0dWNrZXIpIFtNYWtlZmlsZS5pbl0gQnVnICMxMTc3OiBmaXggaW5jb3JyZWN0IHBhdGggZm9yIHNzaHJjIGluCiAgIE1ha2VmaWxlLiAgUGF0Y2ggZnJvbSBzYW50aGkuYW1pcnRhIGF0IGdtYWlsLCBvayBkam0uCgoyMDA2MDgyMAogLSAoZHR1Y2tlcikgW2xvZy5jXSBNb3ZlIGlmZGVmIHRvIHByZXZlbnQgdW51c2VkIHZhcmlhYmxlIHdhcm5pbmcuCiAtIChkdHVja2VyKSBbY29uZmlndXJlLmFjXSBTYXZlICRMSUJTIGR1cmluZyBQQU0gbGlicmFyeSB0ZXN0cyBhbmQgcmVzdG9yZQogICBhZnRlcndhcmQuICBSZW1vdmVzIHRoZSBuZWVkIHRvIG1hbmdsZSAkTElCUyBsYXRlciB0byByZW1vdmUgLWxwYW0gYW5kIC1sZGwuCiAtIChkdHVja2VyKSBbY29uZmlndXJlLmFjXSBSZWxvY2F0ZSAtLXdpdGgtcGFtIHBhcnRzIGluIHByZXBhcmF0aW9uIGZvcgogICBmaXhpbmcgYnVnICMxMTgxLiAgTm8gY2hhbmdlcyB5ZXQuCiAtIChkdHVja2VyKSBbY29uZmlndXJlLmFjXSBCdWcgIzExODE6IEV4cGxpY2l0bHkgdGVzdCB0byBzZWUgaWYgT3BlblNTTAogICAoMC45LjhhIGFuZCBwcmVzdW1hYmx5IG5ld2VyKSByZXF1aXJlcyAtbGRsIHRvIHN1Y2Nlc3NmdWxseSBsaW5rLgogLSAoZHR1Y2tlcikgW2NvbmZpZ3VyZS5hY10gUmVtb3ZlIGVycmFudCAiLSIuCgoyMDA2MDgxOQogLSAoZGptKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA4LzE4IDIyOjQxOjI5CiAgICAgW2dzcy1nZW5yLmNdCiAgICAgR1NTQVBJIGVycm9yIGNvZGUgc2hvdWxkIGJlIDAgYW5kIG5vdCAtMTsgZnJvbSBzaW1vbkBzeHcub3JnLnVrCiAtIChkdHVja2VyKSBbb3BlbmJzZC1jb21wYXQvcmVncmVzcy9NYWtlZmlsZS5pbl0gQWRkICQoRVhFRVhUKSBhbmQgYWRkIGEKICAgc2luZ2xlIHJ1bGUgZm9yIHRoZSB0ZXN0IHByb2dzLgoKMjAwNjA4MTgKIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWMgb3BlbmJzZC1jb21wYXQvYnNkLWNsb3NlZnJvbS5jXSBSZXN5bmMgd2l0aAogICBjbG9zZWZyb20uYyBmcm9tIHN1ZG8uCiAtIChkdHVja2VyKSBbb3BlbmJzZC1jb21wYXQvYnNkLWNsb3NlZnJvbS5jXSBDb21tZW50IG91dCByY3NpZC4KIC0gKGR0dWNrZXIpIFtvcGVuYnNkLWNvbXBhdC9yZWdyZXNzL3NucHJpbnRmdGVzdC5jXSBOZXdsaW5lIG9uIGVycm9yLgogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L3JlZ3Jlc3MvTWFrZWZpbGUuaW5dIFVzZSBpbXBsaWNpdCBydWxlcyBmb3IgdGhlCiAgIHRlc3QgcHJvZ3MgaW5zdGVhZDsgdGhleSB3b3JrIGJldHRlciB0aGFuIHdoYXQgd2UgaGF2ZS4KIC0gKGRqbSkgT3BlbkJTRCBDVlMgU3luYwogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDgvMDYgMDE6MTM6MzIKICAgICBbY29tcHJlc3MuYyBtb25pdG9yLmMgbW9uaXRvcl93cmFwLmNdCiAgICAgInpsaWIuaCIgY2FuIGJlIDx6bGliLmg+OyBvayBkam1AIG1hcmt1c0AKICAgLSBtaW9kQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA4LzEyIDIwOjQ2OjQ2CiAgICAgW21vbml0b3IuYyBtb25pdG9yX3dyYXAuY10KICAgICBSZXZlcnQgcHJldmlvdXMgaW5jbHVkZSBmaWxlIG9yZGVyaW5nIGNoYW5nZSwgZm9yIHNzaCB0byBjb21waWxlIHVuZGVyCiAgICAgZ2NjMiAob3IgdW50aWwgb3BlbnNzbCBpbmNsdWRlIGZpbGVzIGFyZSBjbGVhbmVkIG9mIHBhcmFtZXRlciBuYW1lcwogICAgIGluIGZ1bmN0aW9uIHByb3RvdHlwZXMpCiAgIC0gZHR1Y2tlckBjdnMub3BlbmJzZC5vcmcgMjAwNi8wOC8xNCAxMjo0MDoyNQogICAgIFtzZXJ2Y29uZi5jIHNlcnZjb25mLmggc3NoZF9jb25maWcuNV0KICAgICBBZGQgYWJpbGl0eSB0byBtYXRjaCBncm91cHMgdG8gTWF0Y2gga2V5d29yZCBpbiBzc2hkX2NvbmZpZy4gIEZlZWRiYWNrCiAgICAgZGptQCwgc3RldmVza0AsIG9rIHN0ZXZlc2tALgogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNi8wOC8xNiAxMTo0NzoxNQogICAgIFtzc2hkLmNdCiAgICAgZmFjdG9yIGluZXRkIGNvbm5lY3Rpb24sIFRDUCBsaXN0ZW4gYW5kIG1haW4gVENQIGFjY2VwdCBsb29wIG91dCBvZgogICAgIG1haW4oKSBpbnRvIHNlcGFyYXRlIGZ1bmN0aW9ucyB0byBpbXByb3ZlIHJlYWRhYmlsaXR5OyBvayBtYXJrdXNACiAgIC0gZGVyYWFkdEBjdnMub3BlbmJzZC5vcmcgMjAwNi8wOC8xOCAwOToxMzoyNgogICAgIFtsb2cuYyBsb2cuaCBzc2hkLmNdCiAgICAgbWFrZSBzaWduYWwgaGFuZGxlciB0ZXJtaW5hdGlvbiBwYXRoIHNob3J0ZXI7IHJpc2t5IGNvZGUgcG9pbnRlZCBvdXQgYnkKICAgICBtYXJrIGRvd2Q7IG9rIGRqbSBtYXJrdXMKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDgvMTggMDk6MTU6MjAKICAgICBbYXV0aC5oIHNlc3Npb24uYyBzc2hkLmNdCiAgICAgZGVsYXkgYXV0aGVudGljYXRpb24gcmVsYXRlZCBjbGVhbnVwcyB1bnRpbCB3ZSdyZSBhdXRoZW50aWNhdGVkIGFuZAogICAgIGFsbCBhbGFybXMgaGF2ZSBiZWVuIGNhbmNlbGxlZDsgb2sgZGVyYWFkdAogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNi8wOC8xOCAxMDoyNzoxNgogICAgIFttaXNjLmhdCiAgICAgcmVvcmRlciBzbyBwcm90b3R5cGVzIGFyZSBzb3J0ZWQgYnkgdGhlIGZpbGVzIHRoZXkgcmVmZXIgdG87IG5vCiAgICAgYmluYXJ5IGNoYW5nZQogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNi8wOC8xOCAxMzo1NDo1NAogICAgIFtnc3MtZ2Vuci5jIHNzaC1nc3MuaCBzc2hjb25uZWN0Mi5jXQogICAgIGJ6ICMxMjE4IC0gZGlzYWJsZSBTUE5FR08gYXMgcGVyIFJGQzQ0NjI7IGRpZmYgZnJvbSBzaW1vbiBBVCBzeHcub3JnLnVrCiAgICAgb2sgbWFya3VzQAogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNi8wOC8xOCAxNDo0MDozNAogICAgIFtnc3MtZ2Vuci5jIHNzaC1nc3MuaF0KICAgICBjb25zdGlmeSBob3N0IGFyZ3VtZW50IHRvIG1hdGNoIHRoZSByZXN0IG9mIHRoZSBHU1NBUEkgZnVuY3Rpb25zIGFuZAogICAgIHVuYnJlYWsgY29tcGlsYXRpb24gd2l0aCAtV2Vycm9yCiAtIChkam0pIERpc2FibGUgc2lnZGllKCkgZm9yIHBsYXRmb3JtcyB0aGF0IGNhbm5vdCBzYWZlbHkgc3lzbG9nIGluc2lkZQogICBhIHNpZ25hbCBoYW5kbGVyIChiYXNpY2FsbHkgYWxsIG9mIHRoZW0sIGV4Y2VwdGluZyBPcGVuQlNEKTsKICAgb2sgZHR1Y2tlckAKCjIwMDYwODE3CiAtIChkdHVja2VyKSBbb3BlbmJzZC1jb21wYXQvZmFrZS1yZmMyNTUzLmMgb3BlbmJzZC1jb21wYXQvc2V0cHJvY3RpdGxlLmNdCiAgIEluY2x1ZGUgc3RkbGliLmggZm9yIG1hbGxvYyBhbmQgZnJpZW5kcy4KIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWMgb3BlbmJzZC1jb21wYXQvYnNkLWNsb3NlZnJvbS5jXSBVc2UgRl9DTE9TRU0gZmNudGwKICAgZm9yIGNsb3NlZnJvbSgpIG9uIEFJWC4gIFBvaW50ZWQgb3V0IGJ5IFdpbGxpYW0gQWhlcm4uCiAtIChkdHVja2VyKSBbb3BlbmJzZC1jb21wYXQvcmVncmVzcy97TWFrZWZpbGUuaW4sY2xvc2Vmcm9tdGVzdC5jfV0gUmVncmVzcwogICB0ZXN0IGZvciBjbG9zZWZyb20oKSBpbiBjb21wYXQgY29kZS4KCjIwMDYwODE2CiAtIChkam0pIFthdWRpdC1ic20uY10gU3ByaW5rbGUgaW4gc29tZSBoZWFkZXJzCgoyMDA2MDgxNQogLSAoZHR1Y2tlcikgW0xJQ0VOQ0VdIEFkZCBSZXlrIHRvIHRoZSBsaXN0IGZvciB0aGUgY29tcGF0IGRpci4KCjIwMDYwODA2CiAtIChkam0pIFtvcGVuYnNkLWNvbXBhdC9ic2QtZ2V0cGVlcmVpZC5jXSBBZGQgc29tZSBoZWFkZXJzIHRvIHF1aWV0IHdhcm5pbmdzCiAgIG9uIFNvbGFyaXMgMTAKCjIwMDYwODA2CiAtIChkdHVja2VyKSBbZGVmaW5lcy5oXSBXaXRoIHRoZSBpbmNsdWRlcy5oIGNoYW5nZXMgd2Ugbm8gbG9uZ2VyIGdldCB0aGUKICAgbmFtZSBjbGFzaCBvbiAiWUVTIiBzbyB3ZSBjYW4gcmVtb3ZlIHRoZSB3b3JrYXJvdW5kIGZvciBpdC4KIC0gKGR0dWNrZXIpIFtvcGVuYnNkLWNvbXBhdC97YnNkLWFzcHJpbnRmLmMsYnNkLW9wZW5wdHkuYyxic2Qtc25wcmludGYuYywKICAgZ2xvYi5jfV0gSW5jbHVkZSBzdGRsaWIuaCBmb3IgbWFsbG9jIGFuZCBmcmllbmRzIGluIGNvbXBhdCBjb2RlLgoKMjAwNjA4MDUKIC0gKGRqbSkgT3BlbkJTRCBDVlMgU3luYwogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDcvMjQgMTM6NTg6MjIKICAgICBbc3NoY29ubmVjdC5jXQogICAgIGRpc2FibGUgdHVubmVsIGZvcndhcmRpbmcgd2hlbiBubyBzdHJpY3QgaG9zdCBrZXkgY2hlY2tpbmcKICAgICBhbmQga2V5IGNoYW5nZWQ7IG9rIGRqbUAgbWFya3VzQCBkdHVja2VyQAogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDcvMjUgMDI6MDE6MzQKICAgICBbc2NhcmQuY10KICAgICBuZWVkICNpbmNsdWRlIDxzdHJpbmcuaD4KICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA3LzI1IDAyOjU5OjIxCiAgICAgW2NoYW5uZWxzLmMgY2xpZW50bG9vcC5jIHBhY2tldC5jIHNjcC5jIHNlcnZlcmxvb3AuYyBzZnRwLWNsaWVudC5jXQogICAgIFtzZnRwLXNlcnZlci5jIHNzaC1hZ2VudC5jIHNzaC1rZXlzY2FuLmMgc3NoY29ubmVjdC5jIHNzaGQuY10KICAgICBtb3ZlICNpbmNsdWRlIDxzeXMvdGltZS5oPiBvdXQgb2YgaW5jbHVkZXMuaAogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDcvMjYgMDI6MzU6MTcKICAgICBbYXRvbWljaW8uYyBhdXRoLmMgZGguYyBhdXRoZmlsZS5jIGJ1ZmZlci5jIGNsaWVudGxvb3AuYyBrZXguY10KICAgICBbZ3JvdXBhY2Nlc3MuYyBnc3MtZ2Vuci5jIGtleGdleHMuYyBtaXNjLmMgbW9uaXRvci5jIG1vbml0b3JfbW0uY10KICAgICBbcGFja2V0LmMgc2NwLmMgc2VydmVybG9vcC5jIHNlc3Npb24uYyBzZnRwLWNsaWVudC5jIHNmdHAtY29tbW9uLmNdCiAgICAgW3NmdHAtc2VydmVyLmMgc2Z0cC5jIHNzaC1hZGQuYyBzc2gtYWdlbnQuYyBzc2gta2V5Z2VuLmMgc3NobG9naW4uY10KICAgICBbdWlkc3dhcC5jIHhtYWxsb2MuY10KICAgICBtb3ZlICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4gb3V0IG9mIGluY2x1ZGVzLmgKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA3LzI2IDEzOjU3OjE3CiAgICAgW2F1dGhmZC5jIGF1dGhmaWxlLmMgZGguYyBjYW5vaG9zdC5jIGNoYW5uZWxzLmMgY2xpZW50bG9vcC5jIGNvbXBhdC5jXQogICAgIFtob3N0ZmlsZS5jIGtleC5jIGxvZy5jIG1pc2MuYyBtb2R1bGkuYyBtb25pdG9yLmMgcGFja2V0LmMgcmVhZHBhc3MuY10KICAgICBbc2NwLmMgc2VydmNvbmYuYyBzZXNzaW9uLmMgc2Z0cC1zZXJ2ZXIuYyBzZnRwLmMgc3NoLWFkZC5jIHNzaC1hZ2VudC5jXQogICAgIFtzc2gta2V5Z2VuLmMgc3NoLWtleXNjYW4uYyBzc2gta2V5c2lnbi5jIHNzaC5jIHNzaGNvbm5lY3QuY10KICAgICBbc3NoY29ubmVjdDEuYyBzc2hkLmMgeG1hbGxvYy5jXQogICAgIG1vdmUgI2luY2x1ZGUgPHN0ZGxpYi5oPiBvdXQgb2YgaW5jbHVkZXMuaAogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wNy8yNyAwODowMDo1MAogICAgIFtzc2hfY29uZmlnLjVdCiAgICAgYXZvaWQgY29uZnVzaW5nIHdvcmRpbmcgaW4gSGFzaEtub3duSG9zdHM6CiAgICAgb3JpZ2luYWxseSBzcG90dGVkIGJ5IGFsYW4gYW1lc2J1cnk7CiAgICAgb2sgZGVyYWFkdAogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wNy8yNyAwODowMDo1MAogICAgIFtzc2hfY29uZmlnLjVdCiAgICAgYXZvaWQgY29uZnVzaW5nIHdvcmRpbmcgaW4gSGFzaEtub3duSG9zdHM6CiAgICAgb3JpZ2luYWxseSBzcG90dGVkIGJ5IGFsYW4gYW1lc2J1cnk7CiAgICAgb2sgZGVyYWFkdAogICAtIGR0dWNrZXJAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDgvMDEgMTE6MzQ6MzYKICAgICBbc3NoY29ubmVjdC5jXQogICAgIEFsbG93IGZhbGxiYWNrIHRvIGtub3duX2hvc3RzIGVudHJpZXMgd2l0aG91dCBwb3J0IHF1YWxpZmllcnMgZm9yCiAgICAgbm9uLXN0YW5kYXJkIHBvcnRzIHRvbywgc28gdGhhdCBhbGwgZXhpc3Rpbmcga25vd25faG9zdHMgZW50cmllcyB3aWxsIGJlCiAgICAgcmVjb2duaXNlZC4gIFJlcXVlc3RlZCBieSwgZmVlZGJhY2sgYW5kIG9rIG1hcmt1c0AKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA4LzAxIDIzOjIyOjQ4CiAgICAgW2F1dGgtcGFzc3dkLmMgYXV0aC1yaG9zdHMuYyBhdXRoLXJzYS5jIGF1dGguYyBhdXRoLmggYXV0aDEuY10KICAgICBbYXV0aDItY2hhbGwuYyBhdXRoMi1wdWJrZXkuYyBhdXRoZmlsZS5jIGJ1ZmZlci5jIGNhbm9ob3N0LmNdCiAgICAgW2NoYW5uZWxzLmMgY2xpZW50bG9vcC5jIGRoLmMgZG5zLmMgZG5zLmggaG9zdGZpbGUuYyBrZXguYyBrZXhkaGMuY10KICAgICBba2V4Z2V4Yy5jIGtleGdleHMuYyBrZXkuYyBrZXkuaCBsb2cuYyBtaXNjLmMgbWlzYy5oIG1vZHVsaS5jXQogICAgIFttb25pdG9yX3dyYXAuYyBwYWNrZXQuYyBwcm9ncmVzc21ldGVyLmMgcmVhZGNvbmYuYyByZWFkcGFzcy5jIHNjcC5jXQogICAgIFtzZXJ2Y29uZi5jIHNlc3Npb24uYyBzZnRwLWNsaWVudC5jIHNmdHAtY29tbW9uLmMgc2Z0cC1zZXJ2ZXIuYyBzZnRwLmNdCiAgICAgW3NzaC1hZGQuYyBzc2gtYWdlbnQuYyBzc2gta2V5Z2VuLmMgc3NoLWtleXNjYW4uYyBzc2guYyBzc2hjb25uZWN0LmNdCiAgICAgW3NzaGNvbm5lY3QxLmMgc3NoY29ubmVjdDIuYyBzc2hkLmMgc3NobG9naW4uYyBzc2h0dHkuYyB1dWVuY29kZS5jXQogICAgIFt1dWVuY29kZS5oIHhtYWxsb2MuY10KICAgICBtb3ZlICNpbmNsdWRlIDxzdGRpby5oPiBvdXQgb2YgaW5jbHVkZXMuaAogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDgvMDEgMjM6MzY6MTIKICAgICBbYXV0aGZpbGUuYyBjaGFubmVscy5jIHByb2dyZXNzbWV0ZXIuYyBzY2FyZC5jIHNlcnZjb25mLmMgc3NoLmNdCiAgICAgY2xlYW4gZXh0cmEgc3BhY2VzCiAgIC0gZGVyYWFkdEBjdnMub3BlbmJzZC5vcmcgMjAwNi8wOC8wMyAwMzozNDo0MgogICAgIFtPVkVSVklFVyBhdG9taWNpby5jIGF0b21pY2lvLmggYXV0aC1ic2RhdXRoLmMgYXV0aC1jaGFsbC5jIGF1dGgta3JiNS5jXQogICAgIFthdXRoLW9wdGlvbnMuYyBhdXRoLW9wdGlvbnMuaCBhdXRoLXBhc3N3ZC5jIGF1dGgtcmgtcnNhLmMgYXV0aC1yaG9zdHMuY10KICAgICBbYXV0aC1yc2EuYyBhdXRoLXNrZXkuYyBhdXRoLmMgYXV0aC5oIGF1dGgxLmMgYXV0aDItY2hhbGwuYyBhdXRoMi1nc3MuY10KICAgICBbYXV0aDItaG9zdGJhc2VkLmMgYXV0aDIta2JkaW50LmMgYXV0aDItbm9uZS5jIGF1dGgyLXBhc3N3ZC5jIF0KICAgICBbYXV0aDItcHVia2V5LmMgYXV0aDIuYyBhdXRoZmQuYyBhdXRoZmQuaCBhdXRoZmlsZS5jIGJ1ZmF1eC5jIGJ1ZmJuLmNdCiAgICAgW2J1ZmZlci5jIGJ1ZmZlci5oIGNhbm9ob3N0LmMgY2hhbm5lbHMuYyBjaGFubmVscy5oIGNpcGhlci0zZGVzMS5jXQogICAgIFtjaXBoZXItYmYxLmMgY2lwaGVyLWN0ci5jIGNpcGhlci5jIGNsZWFudXAuYyBjbGllbnRsb29wLmMgY29tcGF0LmNdCiAgICAgW2NvbXByZXNzLmMgZGVhdHRhY2suYyBkaC5jIGRpc3BhdGNoLmMgZG5zLmMgZG5zLmggZmF0YWwuYyBncm91cGFjY2Vzcy5jXQogICAgIFtncm91cGFjY2Vzcy5oIGdzcy1nZW5yLmMgZ3NzLXNlcnYta3JiNS5jIGdzcy1zZXJ2LmMgaG9zdGZpbGUuYyBrZXguY10KICAgICBba2V4Lmgga2V4ZGguYyBrZXhkaGMuYyBrZXhkaHMuYyBrZXhnZXguYyBrZXhnZXhjLmMga2V4Z2V4cy5jIGtleS5jXQogICAgIFtrZXkuaCBsb2cuYyBsb2cuaCBtYWMuYyBtYXRjaC5jIG1kLXNoYTI1Ni5jIG1pc2MuYyBtaXNjLmggbW9kdWxpLmNdCiAgICAgW21vbml0b3IuYyBtb25pdG9yX2ZkcGFzcy5jIG1vbml0b3JfbW0uYyBtb25pdG9yX21tLmggbW9uaXRvcl93cmFwLmNdCiAgICAgW21vbml0b3Jfd3JhcC5oIG1zZy5jIG5jaGFuLmMgcGFja2V0LmMgcHJvZ3Jlc3NtZXRlci5jIHJlYWRjb25mLmNdCiAgICAgW3JlYWRjb25mLmggcmVhZHBhc3MuYyByc2EuYyBzY2FyZC5jIHNjYXJkLmggc2NwLmMgc2VydmNvbmYuYyBzZXJ2Y29uZi5oXQogICAgIFtzZXJ2ZXJsb29wLmMgc2Vzc2lvbi5jIHNlc3Npb24uaCBzZnRwLWNsaWVudC5jIHNmdHAtY29tbW9uLmNdCiAgICAgW3NmdHAtY29tbW9uLmggc2Z0cC1nbG9iLmMgc2Z0cC1zZXJ2ZXIuYyBzZnRwLmMgc3NoLWFkZC5jIHNzaC1hZ2VudC5jXQogICAgIFtzc2gtZHNzLmMgc3NoLWdzcy5oIHNzaC1rZXlnZW4uYyBzc2gta2V5c2Nhbi5jIHNzaC1rZXlzaWduLmMgc3NoLXJzYS5jXQogICAgIFtzc2guYyBzc2guaCBzc2hjb25uZWN0LmMgc3NoY29ubmVjdC5oIHNzaGNvbm5lY3QxLmMgc3NoY29ubmVjdDIuY10KICAgICBbc3NoZC5jIHNzaGxvZ2luLmMgc3NobG9naW4uaCBzc2hwdHkuYyBzc2hwdHkuaCBzc2h0dHkuYyB0dHltb2Rlcy5jXQogICAgIFt1aWRzd2FwLmMgdWlkc3dhcC5oIHV1ZW5jb2RlLmMgdXVlbmNvZGUuaCB4bWFsbG9jLmMgeG1hbGxvYy5oXQogICAgIFtsb2dpbnJlYy5jIGxvZ2lucmVjLmggb3BlbmJzZC1jb21wYXQvcG9ydC1haXguYyBvcGVuYnNkLWNvbXBhdC9wb3J0LXR1bi5oXQogICAgIGFsbW9zdCBlbnRpcmVseSBnZXQgcmlkIG9mIHRoZSBjdWx0dXJlIG9mICIuaCBmaWxlcyB0aGF0IGluY2x1ZGUgLmggZmlsZXMiCiAgICAgb2sgZGptLCBzb3J0IG9mIG9rIHN0ZXZlc2sKICAgICBtYWtlcyB0aGUgcGFpbiBzdG9wIGluIG9uZSBlYXN5IHN0ZXAKICAgICBOQi4gcG9ydGFibGUgY29tbWl0IGNvbnRhaW5zIGV2ZXJ5dGhpbmcgKmV4Y2VwdCogcmVtb3ZpbmcgaW5jbHVkZXMuaCwgYXMKICAgICB0aGF0IHdpbGwgdGFrZSBhIGZhaXIgYml0IG1vcmUgd29yayBhcyB3ZSBtb3ZlIGhlYWRlcnMgdGhhdCBhcmUgcmVxdWlyZWQKICAgICBmb3IgcG9ydGFiaWxpdHkgd29ya2Fyb3VuZHMgdG8gZGVmaW5lcy5oLiAoYWxzbywgdGhpcyBzdGVwIHdhc24ndCAiZWFzeSIpCiAgIC0gc3RldmVza0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wOC8wNCAyMDo0NjowNQogICAgIFttb25pdG9yLmMgc2Vzc2lvbi5jIHNzaC1hZ2VudC5jXQogICAgIHNwYWNlcwogLSAoZGptKSBbYXV0aC1wYW0uYyBkZWZpbmVzLmhdIE1vdmUgUEFNIHJlbGF0ZWQgYml0cyB0byBhdXRoLXBhbS5jCiAtIChkam0pIFthdXRoLXBhbS5jIGF1dGguYyBidWZhdXguaCBlbnRyb3B5LmMgb3BlbmJzZC1jb21wYXQvcG9ydC10dW4uY10KICAgcmVtb3ZlIGxhc3QgdHJhY2VzIG9mIGJ1ZmF1eC5oIC0gaXQgd2FzIG1lcmdlZCBpbnRvIGJ1ZmZlci5oIGluIHRoZSBiaWcKICAgaW5jbHVkZXMuaCBjb21taXQKIC0gKGRqbSkgW2F1dGguYyBsb2dpbnJlYy5jXSBNaXNzaW5nIG5ldGluZXQvaW4uaCBmb3IgbG9naW5yZWMKIC0gKGRqbSkgW29wZW5ic2QtY29tcGF0L3JlZ3Jlc3Mvc25wcmludGZ0ZXN0LmNdCiAgIFtvcGVuYnNkLWNvbXBhdC9yZWdyZXNzL3N0cmR1cHRlc3QuY10gQWRkIG1pc3NpbmcgaW5jbHVkZXMgc28gdGhleSBwYXNzCiAgIGNvbXBpbGF0aW9uIHdpdGggIi1XYWxsIC1XZXJyb3IiCiAtIChkam0pIFthdXRoLXBhbS5jIGF1dGgtc2hhZG93LmMgYXV0aDItbm9uZS5jIGNsZWFudXAuYyBzc2hkLmNdCiAgIFtvcGVuYnNkLWNvbXBhdC9wb3J0LXR1bi5jIG9wZW5ic2QtY29tcGF0L3BvcnQtdHVuLmhdIFNwcmlua2xlIG1vcmUKICAgaW5jbHVkZXMgZm9yIExpbnV4IGluCiAtIChkdHVja2VyKSBbY2xlYW51cC5jXSBOZWVkIGRlZmluZXMuaCBmb3IgX19kZWFkLgogLSAoZHR1Y2tlcikgW2F1dGgyLWdzcy5jXSBXZSBzdGlsbCBuZWVkIHRoZSAjaWZkZWYgR1NTQVBJIGluIC1wb3J0YWJsZS4KIC0gKGR0dWNrZXIpIFtvcGVuYnNkLWNvbXBhdC97YnNkLWFyYzRyYW5kb20uYyxwb3J0LXR1bi5jLHhtbWFwLmN9XSBMb3RzIG9mCiAgICNpbmNsdWRlIHN0ZGFyZy5oLCBuZWVkZWQgZm9yIGxvZy5oLgogLSAoZHR1Y2tlcikgW2VudHJvcHkuY10gTmVlZHMgdW5pc3RkLmggdG9vLgogLSAoZHR1Y2tlcikgW3NzaC1yYW5kLWhlbHBlci5jXSBOZWVkcyBzdGRhcmcuaCBmb3IgbG9nLmguCiAtIChkdHVja2VyKSBbb3BlbmJzZC1jb21wYXQvZ2V0cnJzZXRieW5hbWUuY10gTmVlcyBzdGRsaWIuaCBmb3IgbWFsbG9jLgogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L3N0cnRvbnVtLmNdIEluY2x1ZGUgc3RkbGliLmggZm9yIHN0cnRvbGwsCiAgIG90aGVyd2lzZSBpdCBpcyBpbXBsaWNpdGx5IGRlY2xhcmVkIGFzIHJldHVybmluZyBhbiBpbnQuCiAtIChkdHVja2VyKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gZHR1Y2tlckBjdnMub3BlbmJzZC5vcmcgMjAwNi8wOC8wNSAwNzo1Mjo1MgogICAgIFthdXRoMi1ub25lLmMgc3NoZC5jIG1vbml0b3Jfd3JhcC5jXQogICAgIEFkZCBoZWFkZXJzIHJlcXVpcmVkIHRvIGJ1aWxkIHdpdGggS0VSQkVST1M1PW5vLiAgb2sgZGptQAogICAtIGR0dWNrZXJAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDgvMDUgMDg6MDA6MzMKICAgICBbYXV0aC1za2V5LmNdCiAgICAgQWRkIGhlYWRlcnMgcmVxdWlyZWQgdG8gYnVpbGQgd2l0aCAtRFNLRVkuICBvayBkam1ACiAgIC0gZHR1Y2tlckBjdnMub3BlbmJzZC5vcmcgMjAwNi8wOC8wNSAwODoyODoyNAogICAgIFttb25pdG9yX3dyYXAuYyBhdXRoLXNrZXkuYyBhdXRoMi1jaGFsbC5jXQogICAgIFphcCB1bnVzZWQgdmFyaWFibGVzIGluIC1EU0tFWSBjb2RlLiAgb2sgZGptQAogICAtIGR0dWNrZXJAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDgvMDUgMDg6MzQ6MDQKICAgICBbcGFja2V0LmNdCiAgICAgVHlwbyBpbiBjb21tZW50CiAtIChkdHVja2VyKSBbb3BlbmJzZC1jb21wYXQvYnNkLWN5Z3dpbl91dGlsLmNdIEFkZCBoZWFkZXJzIHJlcXVpcmVkIHRvIGNvbXBpbGUKICAgb24gQ3lnd2luLgogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L2Zha2UtcmZjMjU1My5jXSBBZGQgaGVhZGVycyBuZWVkZWQgZm9yIGluZXRfbnRvYS4KIC0gKGR0dWNrZXIpIFthdXRoLXNrZXkuY10gbW9uaXRvcl93cmFwLmggbmVlZHMgc3NoLWdzcy5oLgogLSAoZHR1Y2tlcikgW2F1ZGl0LmMgYXVkaXQuaF0gUmVwYWlyIGhlYWRlcnMuCiAtIChkdHVja2VyKSBbYXVkaXQtYnNtLmNdIEFkZCBhZGRpdGlvbmFsIGhlYWRlcnMgbm93IHJlcXVpcmVkLgoKMjAwNjA4MDQKIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWNdIFRoZSAiY3JpcHBsZWQgQUVTIiB0ZXN0IGRvZXMgbm90IHdvcmsgb24gcmVjZW50CiAgIHZlcnNpb25zIG9mIFNvbGFyaXMsIHNvIHVzZSBBQ19MSU5LX0lGRUxTRSB0byBhY3R1YWxseSBsaW5rIHRoZSB0ZXN0IHByb2dyYW0KICAgcmF0aGVyIHRoYW4ganVzdCBjb21waWxpbmcgaXQuICBTcG90dGVkIGJ5IGRsZ0AuCgoyMDA2MDgwMgogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L2RhZW1vbi5jXSBBZGQgdW5pc3RkLmggZm9yIGZvcmsoKSBwcm90b3R5cGUuCgoyMDA2MDcyNQogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L3htbWFwLmNdIE5lZWQgZmNudGwuaCBmb3IgT19SRFJXLgoKMjAwNjA3MjQKIC0gKGRqbSkgT3BlbkJTRCBDVlMgU3luYwogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wNy8xMiAxMzozOTo1NQogICAgIFtzc2hkX2NvbmZpZy41XQogICAgICAtIG5ldyBzZW50ZW5jZSwgbmV3IGxpbmUKICAgICAgLSBzL1RoZSB0aGUvVGhlLwogICAgICAtIGtpbGwgYSBiYWQgY29tbWEKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA3LzEyIDIyOjI4OjUyCiAgICAgW2F1dGgtb3B0aW9ucy5jIGNhbm9ob3N0LmMgY2hhbm5lbHMuYyBpbmNsdWRlcy5oIHJlYWRjb25mLmNdCiAgICAgW3NlcnZjb25mLmMgc3NoLWtleXNjYW4uYyBzc2guYyBzc2hjb25uZWN0LmMgc3NoZC5jXQogICAgIG1vdmUgI2luY2x1ZGUgPG5ldGRiLmg+IG91dCBvZiBpbmNsdWRlcy5oOyBvayBkam1ACiAgIC0gc3RldmVza0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wNy8xMiAyMjo0MjozMgogICAgIFtpbmNsdWRlcy5oIHNzaC5jIHNzaC1yYW5kLWhlbHBlci5jXQogICAgIG1vdmUgI2luY2x1ZGUgPHN0ZGRlZi5oPiBvdXQgb2YgaW5jbHVkZXMuaAogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDcvMTQgMDE6MTU6MjgKICAgICBbbW9uaXRvcl93cmFwLmhdCiAgICAgZG9uJ3QgbmVlZCBpbmNvbXBsZXRlbHktdHlwZWQgJ3N0cnVjdCBwYXNzd2QnIG5vdyB3aXRoCiAgICAgI2luY2x1ZGUgPHB3ZC5oPjsgb2sgbWFya3VzQAogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDcvMTcgMDE6MzE6MTAKICAgICBbYXV0aGZkLmMgYXV0aGZpbGUuYyBjaGFubmVscy5jIGNsZWFudXAuYyBjbGllbnRsb29wLmMgZ3JvdXBhY2Nlc3MuY10KICAgICBbaW5jbHVkZXMuaCBsb2cuYyBtaXNjLmMgbXNnLmMgcGFja2V0LmMgcHJvZ3Jlc3NtZXRlci5jIHJlYWRjb25mLmNdCiAgICAgW3JlYWRwYXNzLmMgc2NwLmMgc2VydmNvbmYuYyBzZnRwLWNsaWVudC5jIHNmdHAtc2VydmVyLmMgc2Z0cC5jXQogICAgIFtzc2gtYWRkLmMgc3NoLWFnZW50LmMgc3NoLWtleWdlbi5jIHNzaC1rZXlzY2FuLmMgc3NoLWtleXNpZ24uYyBzc2guY10KICAgICBbc3NoY29ubmVjdC5jIHNzaGxvZ2luLmMgc3NocHR5LmMgdWlkc3dhcC5jXQogICAgIG1vdmUgI2luY2x1ZGUgPHVuaXN0ZC5oPiBvdXQgb2YgaW5jbHVkZXMuaAogICAtIGR0dWNrZXJAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDcvMTcgMTI6MDI6MjQKICAgICBbYXV0aC1vcHRpb25zLmNdCiAgICAgVXNlICdcMCcgcmF0aGVyIHRoYW4gMCB0byB0ZXJtaW5hdGVzIHN0cmluZ3M7IG9rIGRqbUAKICAgLSBkdHVja2VyQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA3LzE3IDEyOjA2OjAwCiAgICAgW2NoYW5uZWxzLmMgY2hhbm5lbHMuaCBzZXJ2Y29uZi5jIHNzaGRfY29uZmlnLjVdCiAgICAgQWRkIFBlcm1pdE9wZW4gZGlyZWN0aXZlIHRvIHNzaGRfY29uZmlnIHdoaWNoIGlzIGVxdWl2YWxlbnQgdG8gdGhlCiAgICAgInBlcm1pdG9wZW4iIGtleSBvcHRpb24uICBBbGxvd3Mgc2VydmVyIGFkbWluIHRvIGFsbG93IFRDUCBwb3J0CiAgICAgZm9yd2FyZGluZyBvbmx5IHR3byBzcGVjaWZpYyBob3N0L3BvcnQgcGFpcnMuICBVc2VmdWwgd2hlbiBjb21iaW5lZAogICAgIHdpdGggTWF0Y2guCiAgICAgSWYgcGVybWl0b3BlbiBpcyB1c2VkIGluIGJvdGggc3NoZF9jb25maWcgYW5kIGEga2V5IG9wdGlvbiwgYm90aAogICAgIG11c3QgYWxsb3cgYSBnaXZlbiBjb25uZWN0aW9uIGJlZm9yZSBpdCB3aWxsIGJlIHBlcm1pdHRlZC4KICAgICBOb3RlIHRoYXQgdXNlcnMgY2FuIHN0aWxsIHVzZSBleHRlcm5hbCBmb3J3YXJkZXJzIHN1Y2ggYXMgbmV0Y2F0LAogICAgIHNvIHRvIGJlIHRob3NlIG11c3QgYmUgY29udHJvbGxlZCB0b28gZm9yIHRoZSBsaW1pdHMgdG8gYmUgZWZmZWN0aXZlLgogICAgIEZlZWRiYWNrICYgb2sgZGptQCwgbWFuIHBhZ2UgY29ycmVjdGlvbnMgJiBvayBqbWNALgogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wNy8xOCAwNzo1MDo0MAogICAgIFtzc2hkX2NvbmZpZy41XQogICAgIHR3ZWFrOyBvayBkdHVja2VyCiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA3LzE4IDA3OjU2OjI4CiAgICAgW3NjcC4xXQogICAgIHJlcGxhY2UgRElBR05PU1RJQ1Mgd2l0aCAuRXg7CiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA3LzE4IDA4OjAzOjA5CiAgICAgW3NzaC1hZ2VudC4xIHNzaGRfY29uZmlnLjVdCiAgICAgbWFyayB1cCBhbmdsZSBicmFja2V0czsKICAgLSBkdHVja2VyQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA3LzE4IDA4OjIyOjIzCiAgICAgW3NzaGRfY29uZmlnLjVdCiAgICAgQ2xhcmlmeSBkZXNjcmlwdGlvbiBvZiBNYXRjaCwgd2l0aCBtaW5vciBjb3JyZWN0aW9uIGZyb20gam1jQAogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDcvMTggMjI6Mjc6NTUKICAgICBbZGguY10KICAgICByZW1vdmUgdW5uZWVkZWQgaW5jbHVkZXM7IG9rIGRqbUAKICAgLSBkdHVja2VyQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA3LzE5IDA4OjU2OjQxCiAgICAgW3NlcnZjb25mLmMgc3NoZF9jb25maWcuNV0KICAgICBBZGQgc3VwcG9ydCBmb3IgWDExRm9yd2FyaW5nLCBYMTFEaXNwbGF5T2Zmc2V0IGFuZCBYMTFVc2VMb2NhbGhvc3QgdG8KICAgICBNYXRjaC4gIG9rIGRqbUAKICAgLSBkdHVja2VyQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA3LzE5IDEzOjA3OjEwCiAgICAgW3NlcnZjb25mLmMgc2VydmNvbmYuaCBzZXNzaW9uLmMgc3NoZC44IHNzaGRfY29uZmlnIHNzaGRfY29uZmlnLjVdCiAgICAgQWRkIEZvcmNlQ29tbWFuZCBrZXl3b3JkIHRvIHNzaGRfY29uZmlnLCBlcXVpdmFsZW50IHRvIHRoZSAiY29tbWFuZD0iCiAgICAga2V5IG9wdGlvbiwgbWFuIHBhZ2UgZW50cnkgYW5kIGV4YW1wbGUgaW4gc3NoZF9jb25maWcuCiAgICAgRmVlZGJhY2sgJiBvayBkam1ALCBtYW4gcGFnZSBjb3JyZWN0aW9ucyAmIG9rIGptY0AKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA3LzIwIDE1OjI2OjE1CiAgICAgW2F1dGgxLmMgc2VydmVybG9vcC5jIHNlc3Npb24uYyBzc2hjb25uZWN0Mi5jXQogICAgIG1pc3NlZCBzb21lIG5lZWRlZCAjaW5jbHVkZSA8dW5pc3RkLmg+IHdoZW4gS0VSQkVST1M1PW5vOyBpc3N1ZSBmcm9tCiAgICAgbWFzc2ltb0BjZWRvYy5tby5pdAogICAtIGR0dWNrZXJAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDcvMjEgMTI6NDM6MzYKICAgICBbY2hhbm5lbHMuYyBjaGFubmVscy5oIHNlcnZjb25mLmMgc2VydmNvbmYuaCBzc2hkX2NvbmZpZy41XQogICAgIE1ha2UgUGVybWl0T3BlbiB0YWtlIGEgbGlzdCBvZiBwZXJtaXR0ZWQgcG9ydHMgYW5kIGFjdCBtb3JlIGxpa2UgbW9zdAogICAgIG90aGVyIGtleXdvcmRzIChpZSB0aGUgZmlyc3QgbWF0Y2ggaXMgdGhlIGVmZmVjdGl2ZSBzZXR0aW5nKS4gVGhpcwogICAgIGFsc28gbWFrZXMgaXQgZWFzaWVyIHRvIG92ZXJyaWRlIGEgcHJldmlvdXNseSBzZXQgUGVybWl0T3Blbi4gb2sgZGptQAogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDcvMjEgMjE6MTM6MzAKICAgICBbY2hhbm5lbHMuY10KICAgICBtb3JlIEFSR1NVU0VEIChsaW50KSBmb3IgZGlzcGF0Y2ggdGFibGUtZHJpdmVuIGZ1bmN0aW9uczsgb2sgZGptQAogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDcvMjEgMjE6MjY6NTUKICAgICBbcHJvZ3Jlc3NtZXRlci5jXQogICAgIEFSR1NVU0VEIGZvciBzaWduYWwgaGFuZGxlcgogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDcvMjIgMTk6MDg6NTQKICAgICBbaW5jbHVkZXMuaCBtb2R1bGkuYyBwcm9ncmVzc21ldGVyLmMgc2NwLmMgc2Z0cC1jb21tb24uY10KICAgICBbc2Z0cC1zZXJ2ZXIuYyBzc2gtYWdlbnQuYyBzc2hsb2dpbi5jXQogICAgIG1vdmUgI2luY2x1ZGUgPHRpbWUuaD4gb3V0IG9mIGluY2x1ZGVzLmgKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA3LzIyIDIwOjQ4OjIzCiAgICAgW2F0b21pY2lvLmMgYXV0aC1vcHRpb25zLmMgYXV0aC1wYXNzd2QuYyBhdXRoLXJob3N0cy5jIGF1dGgtcnNhLmNdCiAgICAgW2F1dGguYyBhdXRoMS5jIGF1dGgyLWNoYWxsLmMgYXV0aDItaG9zdGJhc2VkLmMgYXV0aDItcGFzc3dkLmMgYXV0aDIuY10KICAgICBbYXV0aGZkLmMgYXV0aGZpbGUuYyBidWZhdXguYyBidWZibi5jIGJ1ZmZlci5jIGNhbm9ob3N0LmMgY2hhbm5lbHMuY10KICAgICBbY2lwaGVyLTNkZXMxLmMgY2lwaGVyLWJmMS5jIGNpcGhlci1jdHIuYyBjaXBoZXIuYyBjbGllbnRsb29wLmNdCiAgICAgW2NvbXBhdC5jIGRlYXR0YWNrLmMgZGguYyBkbnMuYyBnc3MtZ2Vuci5jIGdzcy1zZXJ2LmMgaG9zdGZpbGUuY10KICAgICBbaW5jbHVkZXMuaCBrZXguYyBrZXhkaGMuYyBrZXhkaHMuYyBrZXhnZXhjLmMga2V4Z2V4cy5jIGtleS5jIGxvZy5jXQogICAgIFttYWMuYyBtYXRjaC5jIG1kLXNoYTI1Ni5jIG1pc2MuYyBtb2R1bGkuYyBtb25pdG9yLmMgbW9uaXRvcl9mZHBhc3MuY10KICAgICBbbW9uaXRvcl9tbS5jIG1vbml0b3Jfd3JhcC5jIG1zZy5jIG5jaGFuLmMgcGFja2V0LmMgcnNhLmNdCiAgICAgW3Byb2dyZXNzbWV0ZXIuYyByZWFkY29uZi5jIHJlYWRwYXNzLmMgc2NwLmMgc2VydmNvbmYuYyBzZXJ2ZXJsb29wLmNdCiAgICAgW3Nlc3Npb24uYyBzZnRwLWNsaWVudC5jIHNmdHAtY29tbW9uLmMgc2Z0cC1nbG9iLmMgc2Z0cC1zZXJ2ZXIuYyBzZnRwLmNdCiAgICAgW3NzaC1hZGQuYyBzc2gtYWdlbnQuYyBzc2gtZHNzLmMgc3NoLWtleWdlbi5jIHNzaC1rZXlzY2FuLmNdCiAgICAgW3NzaC1rZXlzaWduLmMgc3NoLXJzYS5jIHNzaC5jIHNzaGNvbm5lY3QuYyBzc2hjb25uZWN0MS5jIHNzaGNvbm5lY3QyLmNdCiAgICAgW3NzaGQuYyBzc2hsb2dpbi5jIHNzaHB0eS5jIHR0eW1vZGVzLmMgdWlkc3dhcC5jIHhtYWxsb2MuY10KICAgICBtb3ZlICNpbmNsdWRlIDxzdHJpbmcuaD4gb3V0IG9mIGluY2x1ZGVzLmgKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA3LzIzIDAxOjExOjA1CiAgICAgW2F1dGguaCBkaXNwYXRjaC5jIGtleC5oIHNmdHAtY2xpZW50LmNdCiAgICAgI2luY2x1ZGUgPHNpZ25hbC5oPiBmb3Igc2lnX2F0b21pY190OyBuZWVkIHRoaXMgcHJpb3IgdG8gPHN5cy9wYXJhbS5oPgogICAgIG1vdmUKIC0gKGRqbSkgW2Fjc3MuYyBhdXRoLWtyYjUuYyBhdXRoLW9wdGlvbnMuYyBhdXRoLXBhbS5jIGF1dGgtc2hhZG93LmNdCiAgIFtjYW5vaG9zdC5jIGNoYW5uZWxzLmMgY2lwaGVyLWFjc3MuYyBkZWZpbmVzLmggZG5zLmMgZ3NzLWdlbnIuY10KICAgW2dzcy1zZXJ2LWtyYjUuYyBnc3Mtc2Vydi5jIGxvZy5oIGxvZ2lucmVjLmMgbG9naW50ZXN0LmMgcmVhZGNvbmYuY10KICAgW3NlcnZjb25mLmMgc3NoLWtleWdlbi5jIHNzaC1rZXlzY2FuLmMgc3NoLWtleXNpZ24uYyBzc2gtcmFuZC1oZWxwZXIuY10KICAgW3NzaC5jIHNzaGNvbm5lY3QuYyBzc2hkLmMgb3BlbmJzZC1jb21wYXQvYmluZHJlc3Zwb3J0LmNdCiAgIFtvcGVuYnNkLWNvbXBhdC9ic2QtYXJjNHJhbmRvbS5jIG9wZW5ic2QtY29tcGF0L2JzZC1taXNjLmNdCiAgIFtvcGVuYnNkLWNvbXBhdC9nZXRycnNldGJ5bmFtZS5jIG9wZW5ic2QtY29tcGF0L2dsb2IuY10KICAgW29wZW5ic2QtY29tcGF0L21rdGVtcC5jIG9wZW5ic2QtY29tcGF0L3BvcnQtbGludXguY10KICAgW29wZW5ic2QtY29tcGF0L3BvcnQtdHVuLmMgb3BlbmJzZC1jb21wYXQvcmVhZHBhc3NwaHJhc2UuY10KICAgW29wZW5ic2QtY29tcGF0L3NldHByb2N0aXRsZS5jIG9wZW5ic2QtY29tcGF0L3htbWFwLmNdCiAgIG1ha2UgdGhlIHBvcnRhYmxlIHRyZWUgY29tcGlsZSBhZ2FpbiAtIHNwcmlua2xlIHVuaXN0ZC5oIGFuZCBzdHJpbmcuaCAKICAgYmFjayBpbi4gRG9uJ3QgcmVkZWZpbmUgX191bnVzZWQsIGFzIGl0IHR1cm5lZCBvdXQgdG8gYmUgdXNlZCBpbgogICBoZWFkZXJzIG9uIExpbnV4LCBhbmQgcmVwbGFjZSBpdHMgdXNlIGluIGF1dGgtcGFtLmMgd2l0aCBBUkdTVVNFRAogLSAoZGptKSBbb3BlbmJzZC1jb21wYXQvZ2xvYi5jXQogICBNb3ZlIGdldF9hcmdfbWF4KCkgaW50byB0aGUgaWZkZWYgSEFWRV9HTE9CIGJsb2NrIHNvIHRoYXQgaXQgY29tcGlsZXMKICAgb24gT3BlbkJTRCAob3Igb3RoZXIgcGxhdGZvcm1zIHdpdGggYSBkZWNlbnQgZ2xvYiBpbXBsZW1lbnRhdGlvbikgd2l0aAogICAtV2Vycm9yCiAtIChkam0pIFt1dWVuY29kZS5jXQogICBBZGQgcmVzb2x2LmgsIGlzIGl0IGNvbnRhaW5zIHRoZSBwcm90b3R5cGVzIGZvciBfX2I2NF9udG9wL19fYjY0X3B0b24gb24KICAgc29tZSBwbGF0Zm9ybXMKIC0gKGRqbSkgW3Nlc3Npb24uY10KICAgZml4IGNvbXBpbGUgZXJyb3Igd2l0aCAtV2Vycm9yIC1XYWxsOiAncGF0aCcgaXMgb25seSB1c2VkIGluCiAgIGRvX3NldHVwX2VudigpIGlmIEhBVkVfTE9HSU5fQ0FQIGlzIG5vdCBkZWZpbmVkCiAtIChkam0pIFtvcGVuYnNkLWNvbXBhdC9iYXNlbmFtZS5jIG9wZW5ic2QtY29tcGF0L2JzZC1jbG9zZWZyb20uY10KICAgW29wZW5ic2QtY29tcGF0L2JzZC1jcmF5LmMgb3BlbmJzZC1jb21wYXQvYnNkLW9wZW5wdHkuY10KICAgW29wZW5ic2QtY29tcGF0L2JzZC1zbnByaW50Zi5jIG9wZW5ic2QtY29tcGF0L2Zha2UtcmZjMjU1My5jXQogICBbb3BlbmJzZC1jb21wYXQvcG9ydC1haXguYyBvcGVuYnNkLWNvbXBhdC9wb3J0LWlyaXguY10KICAgW29wZW5ic2QtY29tcGF0L3JyZXN2cG9ydC5jXQogICBUaGVzZSBsb29rIHRvIG5lZWQgc3RyaW5nLmggYW5kL29yIHVuaXN0ZC5oIChiYXNlZCBvbiBhIGdyZXAgZm9yIGZ1bmN0aW9uCiAgIG5hbWVzKQogLSAoZGptKSBbTWFrZWZpbGUuaW5dCiAgIFJlbW92ZSBnZW5lcmF0ZWQgb3BlbmJzZC1jb21wYXQvcmVncmVzcy9NYWtlZmlsZSBpbiBkaXN0Y2xlYW4gdGFyZ2V0CiAtIChkam0pIFtyZWdyZXNzL01ha2VmaWxlIHJlZ3Jlc3MvYWdlbnQtZ2V0cGVlcmVpZC5zaCByZWdyZXNzL2NmZ21hdGNoLnNoXQogICBbcmVncmVzcy9jaXBoZXItc3BlZWQuc2ggcmVncmVzcy9mb3JjZWNvbW1hbmQuc2ggcmVncmVzcy9mb3J3YXJkaW5nLnNoXQogICBTeW5jIHJlZ3Jlc3MgdGVzdHMgdG8gLWN1cnJlbnQ7IGluY2x1ZGUgZHR1Y2tlckAncyBuZXcgY2ZnbWF0Y2ggYW5kIAogICBmb3JjZWNvbW1hbmQgdGVzdHMuIEFkZCBjaXBoZXItc3BlZWQuc2ggdGVzdCAobm90IGxpbmtlZCBpbiB5ZXQpCiAtIChkdHVja2VyKSBbY2xlYW51cC5jXSBTaW5jZSBjb25maWcuaCBkZWZpbmVzIF9MQVJHRV9GSUxFUyBvbiBBSVgsIGluY2x1ZGluZwogICBzeXN0ZW0gaGVhZGVycyBiZWZvcmUgZGVmaW5lcy5oIHdpbGwgY2F1c2UgY29uZmxpY3RpbmcgZGVmaW5pdGlvbnMuCiAtIChkdHVja2VyKSBbcmVncmVzcy9mb3JjZWNvbW1hbmQuc2hdIFBvcnRhYmxpemUuCgoyMDA2MDcxMwogLSAoZHR1Y2tlcikgW2F1dGgta3JiNS5jIGF1dGgtcGFtLmNdIFN0aWxsIG1vcmUgZXJybm8uaAoKMjAwNjA3MTIKIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWMgZGVmaW5lcy5oXSBPbmx5IGRlZmluZSBTSFVUX1JEIChhbmQgZnJpZW5kcykgYW5kCiAgIE9fTk9OQkxPQ0sgaWYgdGhleSdyZSByZWFsbHkgbmVlZGVkLiAgRml4ZXMgYnVpbGQgZXJyb3JzIG9uIEhQLVVYLCBvbGQKICAgTGludXhlcyBhbmQgcHJvYmFibHkgbW9yZS4KIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWNdIE9wZW5CU0QgbmVlZHMgPHN5cy90eXBlcy5oPiBiZWZvcmUgPHN5cy9zb2NrZXQuaD4KICAgZm9yIFNIVVRfUkQuCiAtIChkdHVja2VyKSBbb3BlbmJzZC1jb21wYXQvcG9ydC10dW4uY10gT3BlbkJTRCBuZWVkcyA8bmV0aW5ldC9pbi5oPiBiZWZvcmUKICAgPG5ldGluZXQvaXAuaD4uCiAtIChkdHVja2VyKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gc3RldmVza0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wNy8xMCAxNjowMTo1NwogICAgIFtzZnRwLWdsb2IuYyBzZnRwLWNvbW1vbi5oIHNmdHAuY10KICAgICBidWZmZXIuaCBvbmx5IG5lZWRlZCBpbiBzZnRwLWNvbW1vbi5oIGFuZCByZW1vdmUgc29tZSB1bm5lZWRlZAogICAgIHVzZXIgaW5jbHVkZXM7IG9rIGRqbUAKICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDcvMTAgMTY6MDQ6MjEKICAgICBbc3NoZC44XQogICAgIHMvYW5kIGFuZC9hbmQvCiAgIC0gc3RldmVza0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wNy8xMCAxNjozNzozNgogICAgIFtyZWFkcGFzcy5jIGxvZy5oIHNjcC5jIGZhdGFsLmMgeG1hbGxvYy5jIGluY2x1ZGVzLmggc3NoLWtleXNjYW4uYyBtaXNjLmMKICAgICBhdXRoLmMgcGFja2V0LmMgbG9nLmNdCiAgICAgbW92ZSAjaW5jbHVkZSA8c3RkYXJnLmg+IG91dCBvZiBpbmNsdWRlcy5oOyBvayBtYXJrdXNACiAgIC0gZHR1Y2tlckBjdnMub3BlbmJzZC5vcmcgMjAwNi8wNy8xMSAxMDoxMjowNwogICAgIFtzc2guY10KICAgICBPbmx5IGNvcHkgdGhlIHBhcnQgb2YgZW52aXJvbm1lbnQgdmFyaWFibGUgdGhhdCB3ZSBhY3R1YWxseSB1c2UuICBQcmV2ZW50cwogICAgIHNzaCBiYWlsaW5nIHdoZW4gU2VuZEVudiBpcyB1c2VkIGFuZCBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aXRoIGEgcmVhbGx5CiAgICAgbG9uZyB2YWx1ZSBleGlzdHMuICBvayBkam1ACiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA3LzExIDE4OjUwOjQ4CiAgICAgW2NsaWVudGxvb3AuYyBzc2guMSBzc2guYyBjaGFubmVscy5jIHNzaF9jb25maWcuNSByZWFkY29uZi5oIHNlc3Npb24uYwogICAgIGNoYW5uZWxzLmggcmVhZGNvbmYuY10KICAgICBhZGQgRXhpdE9uRm9yd2FyZEZhaWx1cmU6IHRlcm1pbmF0ZSB0aGUgY29ubmVjdGlvbiBpZiBzc2goMSkKICAgICBjYW5ub3Qgc2V0IHVwIGFsbCByZXF1ZXN0ZWQgZHluYW1pYywgbG9jYWwsIGFuZCByZW1vdGUgcG9ydAogICAgIGZvcndhcmRpbmdzLiBvayBkam0sIGR0dWNrZXIsIHN0ZXZlc2ssIGptYwogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDcvMTEgMjA6MDc6MjUKICAgICBbc2NwLmMgYXV0aC5jIG1vbml0b3IuYyBzZXJ2ZXJsb29wLmMgc2Z0cC1zZXJ2ZXIuYyBzc2hwdHkuYyByZWFkcGFzcy5jCiAgICAgc3NoZC5jIG1vbml0b3Jfd3JhcC5jIG1vbml0b3JfZmRwYXNzLmMgc3NoLWFnZW50LmMgdHR5bW9kZXMuYyBhdG9taWNpby5jCiAgICAgaW5jbHVkZXMuaCBzZXNzaW9uLmMgc3NobG9naW4uYyBtb25pdG9yX21tLmMgcGFja2V0LmMgc3NoY29ubmVjdDIuYwogICAgIHNmdHAtY2xpZW50LmMgbmNoYW4uYyBjbGllbnRsb29wLmMgc2Z0cC5jIG1pc2MuYyBjYW5vaG9zdC5jIGNoYW5uZWxzLmMKICAgICBzc2gta2V5Z2VuLmMgcHJvZ3Jlc3NtZXRlci5jIHVpZHN3YXAuYyBtc2cuYyByZWFkY29uZi5jIHNzaGNvbm5lY3QuY10KICAgICBtb3ZlICNpbmNsdWRlIDxlcnJuby5oPiBvdXQgb2YgaW5jbHVkZXMuaDsgb2sgbWFya3VzQAogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDcvMTEgMjA6MTY6NDMKICAgICBbc3NoLmNdCiAgICAgY2FzdCBhc3RlcmlzayBmaWVsZCBwcmVjaXNpb24gYXJndW1lbnQgdG8gaW50IHRvIHJlbW92ZSB3YXJuaW5nOwogICAgIG9rIG1hcmt1c0AKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA3LzExIDIwOjI3OjU2CiAgICAgW2F1dGhmaWxlLmMgc3NoLmNdCiAgICAgbmVlZCA8ZXJybm8uaD4gaGVyZSBhbHNvIChpdCdzIGFsc28gaW5jbHVkZWQgaW4gPG9wZW5zc2wvZXJyLmg+KQogICAtIGR0dWNrZXJAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDcvMTIgMTE6MzQ6NTgKICAgICBbc3NoZC5jIHNlcnZjb25mLmggc2VydmNvbmYuYyBzc2hkX2NvbmZpZy41IGF1dGguY10KICAgICBBZGQgc3VwcG9ydCBmb3IgY29uZGl0aW9uYWwgZGlyZWN0aXZlcyB0byBzc2hkX2NvbmZpZyB2aWEgYSAiTWF0Y2giCiAgICAga2V5d29yZCwgd2hpY2ggd29ya3Mgc2ltaWxhcmx5IHRvIHRoZSAiSG9zdCIgZGlyZWN0aXZlIGluIHNzaF9jb25maWcuCiAgICAgTGluZXMgYWZ0ZXIgYSBNYXRjaCBsaW5lIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHNldCBpbiB0aGUgbWFpbiBzZWN0aW9uCiAgICAgaWYgdGhlIGNvbmRpdGlvbiBvbiB0aGUgTWF0Y2ggbGluZSBpcyB0cnVlLCBlZwogICAgIEFsbG93VGNwRm9yd2FyZGluZyB5ZXMKICAgICBNYXRjaCBVc2VyIGFub25jdnMKICAgICAgICAgICAgIEFsbG93VGNwRm9yd2FyZGluZyBubwogICAgIHdpbGwgYWxsb3cgcG9ydCBmb3J3YXJkaW5nIGJ5IGFsbCB1c2VycyBleGNlcHQgImFub25jdnMiLgogICAgIEN1cnJlbnRseSBvbmx5IGEgdmVyeSBzbWFsbCBzdWJzZXQgb2YgZGlyZWN0aXZlcyBhcmUgc3VwcG9ydGVkLgogICAgIG9rIGRqbUAKIC0gKGR0dWNrZXIpIFtsb2dpbnJlYy5jIG9wZW5ic2QtY29tcGF0L3htbWFwLmMgb3BlbmJzZC1jb21wYXQvYmluZHJlc3Zwb3J0LmMKICAgb3BlbmJzZC1jb21wYXQvZ2xvYi5jIG9wZW5ic2QtY29tcGF0L21rdGVtcC5jIG9wZW5ic2QtY29tcGF0L3BvcnQtdHVuLmMKICAgb3BlbmJzZC1jb21wYXQvcmVhZHBhc3NwaHJhc2UuYyBvcGVuYnNkLWNvbXBhdC9zdHJ0b251bS5jXSBJbmNsdWRlIDxlcnJuby5oPi4KIC0gKGR0dWNrZXIpIFtvcGVuYnNkLWNvbXBhdC9zZXRwcm9jdGl0bGUuY10gSW5jbHVkZSBzdGRhcmcuaC4KIC0gKGR0dWNrZXIpIFtzc2gta2V5c2Nhbi5jIHNzaC1yYW5kLWhlbHBlci5jXSBNb3JlIGVycm5vLmggaGVyZSB0b28uCiAtIChkdHVja2VyKSBbb3BlbmJzZC1jb21wYXQvb3BlbmJzZC1jb21wYXQuaF0gdipwcmludGYgbmVlZHMgc3RkYXJnLmguCiAtIChkdHVja2VyKSBbb3BlbmJzZC1jb21wYXQvYnNkLWFzcHJpbnRmLmMgb3BlbmJzZC1jb21wYXQvcG9ydC1haXguYwogICBvcGVuYnNkLWNvbXBhdC9ycmVzdnBvcnQuY10gTW9yZSBlcnJuby5oLgoKMjAwNjA3MTEKIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWMgc3NoLWtleWdlbi5jIG9wZW5ic2QtY29tcGF0L2JzZC1vcGVucHR5LmMKICAgb3BlbmJzZC1jb21wYXQvZGFlbW9uLmNdIEFkZCBpbmNsdWRlcyBuZWVkZWQgYnkgb3BlbigyKS4gIENvbmRpdGlvbmFsbHkKICAgaW5jbHVkZSBwYXRocy5oLiAgRml4ZXMgYnVpbGQgZXJyb3Igb24gU29sYXJpcy4KIC0gKGR0dWNrZXIpIFtlbnRyb3B5LmNdIE1vcmUgZmNudGwuaCwgdGhpcyB0aW1lIG9uIEFJWCAoYW5kIHByb2JhYmx5CiAgIG90aGVycykuCgoyMDA2MDcxMAogLSAoZHR1Y2tlcikgW0lOU1RBTExdIE5ldyBhdXRvY29uZiB2ZXJzaW9uOiAyLjYwLgogLSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA2LzE0IDEwOjUwOjQyCiAgICAgW3NzaGNvbm5lY3QuY10KICAgICBsaW1pdCB0aGUgbnVtYmVyIG9mIHByZS1iYW5uZXIgY2hhcmFjdGVycyB3ZSB3aWxsIGFjY2VwdDsgb2sgbWFya3VzQAogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNi8wNi8yNiAxMDozNjoxNQogICAgIFtjbGllbnRsb29wLmNdCiAgICAgbWVudGlvbiBvcHRpb25hbCBiaW5kX2FkZHJlc3MgaW4gcnVudGltZSBwb3J0IGZvcndhcmRpbmcgc2V0dXAKICAgICBjb21tYW5kLWxpbmUgaGVscC4gcGF0Y2ggZnJvbSBzYW50aGkuYW1pcnRhIEFUIGdtYWlsLmNvbQogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDcvMDIgMTc6MTI6NTgKICAgICBbc3NoLjEgc3NoLmMgc3NoX2NvbmZpZy41IHNzaGRfY29uZmlnLjVdCiAgICAgbW9yZSBkZXRhaWxzIGFuZCBjbGFyaXR5IGZvciB0dW4oNCkgZGV2aWNlIGZvcndhcmRpbmc7IG9rIGFuZCBoZWxwCiAgICAgam1jQAogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDcvMDIgMTg6MzY6NDcKICAgICBbZ3NzLXNlcnYta3JiNS5jIGdzcy1zZXJ2LmNdCiAgICAgbm8gInNlcnZjb25mLmgiIG5lZWRlZCBoZXJlCiAgICAgKGdzcy1zZXJ2LWtyYjUuYyBjaGFuZ2Ugbm90IGFwcGxpZWQsIHBvcnRhYmxlIG5lZWRzIHRoZSBzZXJ2ZXIgb3B0aW9ucykKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA3LzAyIDIyOjQ1OjU5CiAgICAgW2dyb3VwYWNjZXNzLmMgZ3JvdXBhY2Nlc3MuaCBpbmNsdWRlcy5oIHNlc3Npb24uYyBzZnRwLWNvbW1vbi5jIHNzaHB0eS5jXQogICAgIG1vdmUgI2luY2x1ZGUgPGdycC5oPiBvdXQgb2YgaW5jbHVkZXMuaAogICAgIChwb3J0YWJsZSBuZWVkZWQgdWlkc3dhcC5jIHRvbykKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA3LzAyIDIzOjAxOjU1CiAgICAgW2NsaWVudGxvb3AuYyBzc2guMV0KICAgICB1c2UgLUtSW2JpbmRfYWRkcmVzczpdcG9ydCBoZXJlOyBvayBkam1ACiAgIC0gc3RldmVza0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wNy8wMyAwODo1NDoyMAogICAgIFtpbmNsdWRlcy5oIHNzaC5jIHNzaGNvbm5lY3QuYyBzc2hkLmNdCiAgICAgbW92ZSAjaW5jbHVkZSAidmVyc2lvbi5oIiBvdXQgb2YgaW5jbHVkZXMuaDsgb2sgbWFya3VzQAogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDcvMDMgMTc6NTk6MzIKICAgICBbY2hhbm5lbHMuYyBpbmNsdWRlcy5oXQogICAgIG1vdmUgI2luY2x1ZGUgPGFycGEvaW5ldC5oPiBvdXQgb2YgaW5jbHVkZXMuaDsgb2xkIG9rIGRqbUAKICAgICAocG9ydGFibGUgbmVlZGVkIHNlc3Npb24uYyB0b28pCiAgIC0gc3RldmVza0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wNy8wNSAwMjo0MjowOQogICAgIFtjYW5vaG9zdC5jIGhvc3RmaWxlLmMgaW5jbHVkZXMuaCBtaXNjLmMgcGFja2V0LmMgcmVhZGNvbmYuY10KICAgICBbc2VydmVybG9vcC5jIHNzaGNvbm5lY3QuYyB1dWVuY29kZS5jXQogICAgIG1vdmUgI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4gb3V0IG9mIGluY2x1ZGVzLmg7IG9rIGRlcmFhZHRACiAgICAgKGFsc28gc3NoLXJhbmQtaGVscGVyLmMgbG9naW50ZXN0LmMgbG9naW5yZWMuYykKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDcvMDYgMTA6NDc6MDUKICAgICBbc2VydmNvbmYuYyBzZXJ2Y29uZi5oIHNlc3Npb24uYyBzc2hkX2NvbmZpZy41XQogICAgIHN1cHBvcnQgYXJndW1lbnRzIHRvIFN1YnN5c3RlbSBjb21tYW5kczsgb2sgbWFya3VzQAogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNi8wNy8wNiAxMDo0Nzo1NwogICAgIFtzZnRwLXNlcnZlci44IHNmdHAtc2VydmVyLmNdCiAgICAgYWRkIGNvbW1hbmRsaW5lIG9wdGlvbnMgdG8gZW5hYmxlIGxvZ2dpbmcgb2YgdHJhbnNhY3Rpb25zOyBvayBtYXJrdXNACiAgIC0gc3RldmVza0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wNy8wNiAxNjowMzo1MwogICAgIFthdXRoLW9wdGlvbnMuYyBhdXRoLW9wdGlvbnMuaCBhdXRoLXBhc3N3ZC5jIGF1dGgtcmgtcnNhLmNdCiAgICAgW2F1dGgtcmhvc3RzLmMgYXV0aC1yc2EuYyBhdXRoLmMgYXV0aC5oIGF1dGgyLWhvc3RiYXNlZC5jXQogICAgIFthdXRoMi1wdWJrZXkuYyBhdXRoMi5jIGluY2x1ZGVzLmggbWlzYy5jIG1pc2MuaCBtb25pdG9yLmNdCiAgICAgW21vbml0b3Jfd3JhcC5jIG1vbml0b3Jfd3JhcC5oIHNjcC5jIHNlcnZlcmxvb3AuYyBzZXNzaW9uLmNdCiAgICAgW3Nlc3Npb24uaCBzZnRwLWNvbW1vbi5jIHNzaC1hZGQuYyBzc2gta2V5Z2VuLmMgc3NoLWtleXNpZ24uY10KICAgICBbc3NoLmMgc3NoY29ubmVjdC5jIHNzaGNvbm5lY3QuaCBzc2hkLmMgc3NocHR5LmMgc3NocHR5LmggdWlkc3dhcC5jXQogICAgIFt1aWRzd2FwLmhdCiAgICAgbW92ZSAjaW5jbHVkZSA8cHdkLmg+IG91dCBvZiBpbmNsdWRlcy5oOyBvayBtYXJrdXNACiAgIC0gc3RldmVza0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wNy8wNiAxNjoyMjozOQogICAgIFtzc2gta2V5Z2VuLmNdCiAgICAgbW92ZSAjaW5jbHVkZSAiZG5zLmgiIHVwCiAgIC0gc3RldmVza0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wNy8wNiAxNzozNjozNwogICAgIFttb25pdG9yX3dyYXAuaF0KICAgICB0eXBvIGluIGNvbW1lbnQKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA3LzA4IDIxOjQ3OjEyCiAgICAgW2F1dGhmZC5jIGNhbm9ob3N0LmMgY2xpZW50bG9vcC5jIGRucy5jIGRucy5oIGluY2x1ZGVzLmhdCiAgICAgW21vbml0b3JfZmRwYXNzLmMgbmNoYW4uYyBwYWNrZXQuYyBzZXJ2Y29uZi5jIHNmdHAuYyBzc2gtYWdlbnQuY10KICAgICBbc3NoLWtleXNjYW4uYyBzc2guYyBzc2hjb25uZWN0Lmggc3NoZC5jIHNzaGxvZ2luLmhdCiAgICAgbW92ZSAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPiBvdXQgb2YgaW5jbHVkZXMuaAogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDcvMDggMjE6NDg6NTMKICAgICBbbW9uaXRvci5jIHNlc3Npb24uY10KICAgICBtaXNzZWQgdGhlc2UgZnJvbSBsYXN0IGNvbW1pdDoKICAgICBtb3ZlICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+IG91dCBvZiBpbmNsdWRlcy5oCiAgIC0gc3RldmVza0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wNy8wOCAyMzozMDowNgogICAgIFtsb2cuY10KICAgICBtb3ZlIHVzZXIgaW5jbHVkZXMgYWZ0ZXIgL3Vzci9pbmNsdWRlIGZpbGVzCiAgIC0gc3RldmVza0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wNy8wOSAxNToxNToxMQogICAgIFthdXRoMi1ub25lLmMgYXV0aGZkLmMgYXV0aGZpbGUuYyBpbmNsdWRlcy5oIG1pc2MuYyBtb25pdG9yLmNdCiAgICAgW3JlYWRwYXNzLmMgc2NwLmMgc2VydmVybG9vcC5jIHNmdHAtY2xpZW50LmMgc2Z0cC1zZXJ2ZXIuY10KICAgICBbc3NoLWFkZC5jIHNzaC1hZ2VudC5jIHNzaC1rZXlnZW4uYyBzc2gta2V5c2lnbi5jIHNzaC5jIHNzaGQuY10KICAgICBbc3NobG9naW4uYyBzc2hwdHkuY10KICAgICBtb3ZlICNpbmNsdWRlIDxmY250bC5oPiBvdXQgb2YgaW5jbHVkZXMuaAogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDcvMDkgMTU6Mjc6NTkKICAgICBbc3NoLWFkZC5jXQogICAgIHVzZSBPX1JET05MWSB2cy4gMCBpbiBvcGVuKCk7IG5vIGJpbmFyeSBjaGFuZ2UKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDcvMTAgMTE6MjQ6NTQKICAgICBbc2Z0cC1zZXJ2ZXIuY10KICAgICByZW1vdmUgb3B0aW5kIC0gaXQgaXNuJ3QgdXNlZCBoZXJlCiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA3LzEwIDExOjI1OjUzCiAgICAgW3NmdHAtc2VydmVyLmNdCiAgICAgZG9uJ3QgbG9nIHZhcmlhYmxlcyB0aGF0IGFyZW4ndCB5ZXQgc2V0CiAtIChkam0pIFtsb2dpbnJlYy5jIHNzaC1yYW5kLWhlbHBlci5jIHNzaGQuYyBvcGVuYnNkLWNvbXBhdC9nbG9iLmNdCiAgIFtvcGVuYnNkLWNvbXBhdC9ta3RlbXAuYyBvcGVuYnNkLWNvbXBhdC9vcGVuYnNkLWNvbXBhdC5oXQogICBbb3BlbmJzZC1jb21wYXQvcG9ydC10dW4uYyBvcGVuYnNkLWNvbXBhdC9yZWFkcGFzc3BocmFzZS5jXQogICBbb3BlbmJzZC1jb21wYXQveGNyeXB0LmNdIEZpeCBpbmNsdWRlcy5oIGZhbGxvdXQsIG1haW5seSBmY250bC5oCiAtIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDcvMTAgMTI6MDM6MjAKICAgICBbc2NwLmNdCiAgICAgZHVwbGljYXRlIGFyZ3YgYXQgdGhlIHN0YXJ0IG9mIG1haW4oKSBiZWNhdXNlIGl0IGdldHMgbW9kaWZpZWQgbGF0ZXI7CiAgICAgcG9pbnRlZCBvdXQgYnkgZGVyYWFkdEAgb2sgbWFya3VzQAogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNi8wNy8xMCAxMjowODowOAogICAgIFtjaGFubmVscy5jXQogICAgIGZpeCBtaXNwYXJzaW5nIG9mIFNPQ0tTIDUgcGFja2V0cyB0aGF0IGNvdWxkIHJlc3VsdCBpbiBhIGNyYXNoOwogICAgIHJlcG9ydGVkIGJ5IG1rQCBvayBtYXJrdXNACiAgIC0gZHR1Y2tlckBjdnMub3BlbmJzZC5vcmcgMjAwNi8wNy8xMCAxMjo0Njo1MQogICAgIFttaXNjLmMgbWlzYy5oIHNzaGQuOCBzc2hjb25uZWN0LmNdCiAgICAgQWRkIHBvcnQgaWRlbnRpZmllciB0byBrbm93bl9ob3N0cyBmb3Igbm9uLWRlZmF1bHQgcG9ydHMsIGJhc2VkIG9yaWdpbmFsbHkKICAgICBvbiBhIHBhdGNoIGZyb20gRGV2aW4gTmF0ZSBpbiBieiM5MTAuCiAgICAgRm9yIGFueSBjb25uZWN0aW9uIHVzaW5nIHRoZSBkZWZhdWx0IHBvcnQgb3IgdXNpbmcgYSBIb3N0S2V5QWxpYXMgdGhlCiAgICAgZm9ybWF0IGlzIHVuY2hhbmdlZCwgb3RoZXJ3aXNlIHRoZSBob3N0IG5hbWUgb3IgYWRkcmVzcyBpcyBlbmNsb3NlZAogICAgIHdpdGhpbiBzcXVhcmUgYnJhY2tldHMgaW4gdGhlIHNhbWUgZm9ybWF0IGFzIHNzaGQncyBMaXN0ZW5BZGRyZXNzLgogICAgIFRlc3RlZCBieSBtYW55LCBvayBtYXJrdXNALgogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L29wZW5ic2QtY29tcGF0LmhdIE5lZWQgdG8gaW5jbHVkZSA8c3lzL3NvY2tldC5oPgogICBmb3Igc3RydWN0IHNvY2thZGRyIG9uIHBsYXRmb3JtcyB0aGF0IHVzZSB0aGUgZmFrZS1yZmMgc3R1ZmYuCgoyMDA2MDcwNgogLSAoZHR1Y2tlcikgW2NvbmZpZ3VyZS5hY10gVHJ5IEFJWCBibGlicGF0aCB0ZXN0IGluIGRpZmZlcmVudCBvcmRlciB3aGVuCiAgIGNvbXBpbGluZyB3aXRoIGdjYy4gIGdjYyA0LjEueCB3aWxsIGFjY2VwdCAoYnV0IGlnbm9yZSkgLWIgZmxhZ3Mgc28KICAgY29uZmlndXJlIHdvdWxkIG5vdCBzZWxlY3QgdGhlIGNvcnJlY3QgbGlicGF0aCBsaW5rZXIgZmxhZ3MuCiAtIChkdHVja2VyKSBbSU5TVEFMTF0gQSBiaXQgbW9yZSBpbmZvIG9uIGF1dG9jb25mLgoKMjAwNjA3MDUKIC0gKGR0dWNrZXIpIFtzc2gtcmFuZC1oZWxwZXIuY10gRG9uJ3QgZXhpdCBpZiBta2RpciBmYWlscyBiZWNhdXNlIHRoZQogICB0YXJnZXQgYWxyZWFkeSBleGlzdHMuCgoyMDA2MDYzMAogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L29wZW5ic2QtY29tcGF0LmhdIFNOUFJJTlRGX0NPTlNUIGZvciBzbnByaW50ZgogICBkZWNsYXJhdGlvbiB0b28uICBQYXRjaCBmcm9tIHJ1c3MgYXQgc2x1ZGdlLm5ldC4KIC0gKGR0dWNrZXIpIFtvcGVuYnNkLWNvbXBhdC9nZXRycnNldGJ5bmFtZS5jXSBVbmRlZiBfcmVzIGJlZm9yZSBkZWZpbmluZyBpdCwKICAgcHJldmVudHMgd2FybmluZ3Mgb24gcGxhdGZvcm1zIHdoZXJlIF9yZXMgaXMgaW4gdGhlIHN5c3RlbSBoZWFkZXJzLgogLSAoZHR1Y2tlcikgW0lOU1RBTExdIEJ1ZyAjMTIwMjogTm90ZSB3aGVuIGF1dG9jb25mIGlzIHJlcXVpcmVkIGFuZCB3aGljaAogICB2ZXJzaW9uLgoKMjAwNjA2MjcKIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWNdIEJ1ZyAjMTIwMzogQWRkIG1pc3NpbmcgJ1snLCB3aGljaCBjYXVzZXMgcHJvYmxlbXMKICAgd2l0aCBhdXRvY29uZiAyLjYwLiAgUGF0Y2ggZnJvbSB2YXBpZXIgYXQgZ2VudG9vLm9yZy4KCjIwMDYwNjI1CiAtIChkdHVja2VyKSBbY2hhbm5lbHMuYyBzZXJ2ZXJsb29wLmNdIEFwcGx5IHRoZSBidWcgIzExMDIgd29ya2Fyb3VuZCB0byBwdHlzCiAgIG9ubHksIG90aGVyd2lzZSBzc2hkIGNhbiBoYW5nIGV4aXRpbmcgbm9uLWludGVyYWN0aXZlIHNlc3Npb25zLgoKMjAwNjA2MjQKIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWNdIEJ1ZyAjMTE5MzogRGVmaW5lIFBBU1NXRF9ORUVEU19VU0VSTkFNRSBvbiBTb2xhcmlzLgogICBXb3JrcyBhcm91bmQgbGltaXRhdGlvbiBpbiBTb2xhcmlzJyBwYXNzd2QgcHJvZ3JhbSBmb3IgY2hhbmdpbmcgcGFzc3dvcmRzCiAgIHdoZXJlIHRoZSB1c2VybmFtZSBpcyBsb25nZXIgdGhhbiA4IGNoYXJhY3RlcnMuICBvayBkam1ACiAtIChkdHVja2VyKSBbc2VydmVybG9vcC5jXSBHZXQgaWZkZWYvaWZuZGVmIHRoZSByaWdodCB3YXkgYXJvdW5kIGZvciB0aGUgYnVnCiAgICMxMTAyIHdvcmthcm91bmQuCgoyMDA2MDYyMwogLSAoZHR1Y2tlcikgW1JFQURNRS5wbGF0Zm9ybSBjb25maWd1cmUuYWMgb3BlbmJzZC1jb21wYXQvcG9ydC10dW4uY10gQWRkCiAgIHR1bm5lbCBzdXBwb3J0IGZvciBNYWMgT1MgWC9EYXJ3aW4gdmlhIGEgdGhpcmQtcGFydHkgdHVuIGRyaXZlci4gIFBhdGNoCiAgIGZyb20gcmV5a0AsIHRlc3RlZCBieSBhbmlsQAogLSAoZHR1Y2tlcikgW2NoYW5uZWxzLmMgY29uZmlndXJlLmFjIHNlcnZlcmxvb3AuY10gQnVnICMxMTAyOiBBcm91bmQgQUlYCiAgIDQuMy4zIE1MMyBvciBzbywgdGhlIEFJWCBwdHkgbGF5ZXIgc3RhcnRpbmcgcGFzc2luZyB6ZXJvLWxlbmd0aCB3cml0ZXMKICAgb24gdGhlIHB0eSBzbGF2ZSBhcyB6ZXJvLWxlbmd0aCByZWFkcyBvbiB0aGUgcHR5IG1hc3Rlciwgd2hpY2ggc3NoZAogICBpbnRlcnByZXRzIGFzIHRoZSBkZXNjcmlwdG9yIGNsb3NpbmcuICBTaW5jZSBtb3N0IHRoaW5ncyBkb24ndCBkbyB6ZXJvCiAgIGxlbmd0aCB3cml0ZXMgdGhpcyByYXJlbHkgbWF0dGVycywgYnV0IG9jY2FzaW9uYWxseSBpdCBoYXBwZW5zLCBhbmQgd2hlbgogICBpdCBkb2VzIHRoZSBTU0ggcHR5IHNlc3Npb24gYXBwZWFycyB0byBoYW5nLCBzbyB3ZSBhZGQgYSBzcGVjaWFsIGNhc2UgZm9yCiAgIHRoaXMgY29uZGl0aW9uLiAgb2sgZGptQAoKMjAwNjA2MTMKIC0gKGRqbSkgW2dldHB1dC5oXSBUaGlzIGZpbGUgaGFzIGJlZW4gcmVwbGFjZWQgYnkgZnVuY3Rpb25zIGluIG1pc2MuYwogLSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA1LzA4IDEwOjQ5OjQ4CiAgICAgW3NzaGNvbm5lY3QyLmNdCiAgICAgdWludDMyX3QgLT4gdV9pbnQzMl90ICh3aGljaCB3ZSB1c2UgZXZlcnl3aGVyZSBlbHNlKQogICAgIChJZCBzeW5jIG9ubHkgLSBwb3J0YWJsZSBhbHJlYWR5IGhhZCB0aGlzKQogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wNS8xNiAwOTowMDowMAogICAgIFtjbGllbnRsb29wLmNdCiAgICAgbWlzc2luZyBmcmVlOyBmcm9tIEt5bGVuZSBIYWxsCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA1LzE3IDEyOjQzOjM0CiAgICAgW3NjcC5jIHNmdHAuYyBzc2gtYWdlbnQuYyBzc2gta2V5Z2VuLmMgc3NoY29ubmVjdC5jXQogICAgIGZpeCBsZWFrOyBjb3Zlcml0eSB2aWEgS3lsZW5lIEpvIEhhbGwKICAgLSBtaW9kQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA1LzE4IDIxOjI3OjI1CiAgICAgW2tleGRoYy5jIGtleGdleGMuY10KICAgICBwYXJhbXRlciAtPiBwYXJhbWV0ZXIKICAgLSBkdHVja2VyQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA1LzI5IDEyOjU0OjA4CiAgICAgW3NzaF9jb25maWcuNV0KICAgICBBZGQgZ3NzYXBpLXdpdGgtbWljIHRvIFByZWZlcnJlZEF1dGhlbnRpY2F0aW9ucyBkZWZhdWx0IGxpc3Q7IG9rIGptYwogICAtIGR0dWNrZXJAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDUvMjkgMTI6NTY6MzMKICAgICBbc3NoX2NvbmZpZ10KICAgICBBZGQgR1NTQVBJQXV0aGVudGljYXRpb24gYW5kIEdTU0FQSURlbGVnYXRlQ3JlZGVudGlhbHMgdG8gZXhhbXBsZXMgaW4KICAgICBzYW1wbGUgc3NoX2NvbmZpZy4gIG9rIG1hcmt1c0AKICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDUvMjkgMTY6MTA6MDMKICAgICBbc3NoX2NvbmZpZy41XQogICAgIG9vcHMgLSBwcmV2aW91cyB3YXMgdG9vIGxvbmc7IHNwbGl0IHRoZSBsaXN0IG9mIGF1dGhzIHVwCiAgIC0gbWtAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDUvMzAgMTE6NDY6MzgKICAgICBbc3NoLWFkZC5jXQogICAgIFN5bmMgdXNhZ2UoKSB3aXRoIG1hbiBwYWdlIGFuZCByZWFsaXR5LgogICAgIG9rIGRlcmFhZHQgZHR1Y2tlcgogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wNS8yOSAxNjoxMzoyMwogICAgIFtzc2guMV0KICAgICBhZGQgR1NTQVBJIHRvIHRoZSBsaXN0IG9mIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgc3VwcG9ydGVkOwogICAtIG1rQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA1LzMwIDExOjQ2OjM4CiAgICAgW3NzaC1hZGQuY10KICAgICBTeW5jIHVzYWdlKCkgd2l0aCBtYW4gcGFnZSBhbmQgcmVhbGl0eS4KICAgICBvayBkZXJhYWR0IGR0dWNrZXIKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDYvMDEgMDk6MjE6NDgKICAgICBbc3NoZC5jXQogICAgIGNhbGwgZ2V0X3JlbW90ZV9pcGFkZHIoKSBlYXJseTsgZml4ZXMgbG9nZ2luZyBhZnRlciBjbGllbnQgZGlzY29ubmVjdHM7CiAgICAgcmVwb3J0IG1wZkA7IG9rIGR0dWNrZXJACiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA2LzA2IDEwOjIwOjIwCiAgICAgW3JlYWRwYXNzLmMgc3NoY29ubmVjdC5jIHNzaGNvbm5lY3QuaCBzc2hjb25uZWN0Mi5jIHVpZHN3YXAuY10KICAgICByZXBsYWNlIHJlbWFpbmluZyBzZXR1aWQoKSBjYWxscyB3aXRoIHBlcm1hbmVudGx5X3NldF91aWQoKSBhbmQKICAgICBjaGVjayBzZXRldWlkKCkgcmV0dXJuIHZhbHVlczsgcmVwb3J0IE1hcmN1cyBNZWlzc25lcjsgb2sgZHR1Y2tlciBkam0KICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDYvMDggMTQ6NDU6NDkKICAgICBbcmVhZHBhc3MuYyBzc2hjb25uZWN0LmMgc3NoY29ubmVjdDIuYyB1aWRzd2FwLmMgdWlkc3dhcC5oXQogICAgIGRvIG5vdCBzZXQgdGhlIGdpZCwgbm90ZWQgYnkgc29sYXI7IG9rIGRqbQogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNi8wNi8xMyAwMToxODozNgogICAgIFtzc2gtYWdlbnQuY10KICAgICBhbHdheXMgdXNlIGEgZm9ybWF0IHN0cmluZywgZXZlbiB3aGVuIHByaW50aW5nIGEgY29uc3RhbnQKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDYvMTMgMDI6MTc6MDcKICAgICBbc3NoLWFnZW50LmNdCiAgICAgcmV2ZXJ0OyBpIGFtIG9uIGRydWdzLiBzcG90dGVkIGJ5IGFsZXhhbmRlciBBVCBiZWFyZC5zZQoKMjAwNjA1MjEKIC0gKGR0dWNrZXIpIFthdXRoLmMgbW9uaXRvci5jXSBOb3cgdGhhdCB3ZSBkb24ndCBsb2cgZnJvbSBib3RoIHRoZSBtb25pdG9yCiAgIGFuZCBzbGF2ZSwgd2UgY2FuIHJlbW92ZSB0aGUgc3BlY2lhbC1jYXNlIGhhbmRsaW5nIGluIHRoZSBhdWRpdCBob29rIGluCiAgIGF1dGhfbG9nLgoKMjAwNjA1MTcKIC0gKGR0dWNrZXIpIFtzc2gtcmFuZC1oZWxwZXIuY10gQ2hlY2sgcmV0dXJuIGNvZGUgb2YgbWtkaXIgYW5kIGZpeCBmaWxlCiAgIHBvaW50ZXIgbGVhay4gIEZyb20ga2poYWxsIGF0IHVzLmlibS5jb20sIGZvdW5kIGJ5IGNvdmVyaXR5LgoKMjAwNjA1MTUKIC0gKGR0dWNrZXIpIFtvcGVuYnNkLWNvbXBhdC9nZXRycnNldGJ5bmFtZS5jXSBVc2UgX2NvbXBhdF9yZXMgaW5zdGVhZCBvZgogICBfcmVzLCBwcmV2ZW50cyBwcm9ibGVtcyBvbiBzb21lIHBsYXRmb3JtcyB0aGF0IGhhdmUgX3JlcyBhcyBhIGdsb2JhbCBidXQKICAgZG9uJ3QgaGF2ZSBnZXRycnNldGJ5bmFtZSgpLCBlZyBJUklYIDUuMy4gIEZvdW5kIGFuZCB0ZXN0ZWQgYnkKICAgZ2Vvcmcuc2Nod2FyeiBhdCBmcmVlbmV0LmRlLCBvayBkam1ALgogLSAoZHR1Y2tlcikgW2RlZmluZXMuaF0gRmluZCBhIHZhbHVlIGZvciBJT1ZfTUFYIG9yIHVzZSBhIGNvbnNlcnZhdGl2ZQogICBkZWZhdWx0LiAgUGF0Y2ggb3JpZ2luYWxseSBmcm9tIHRpbUAsIG9rIGRqbQogLSAoZHR1Y2tlcikgW2F1dGgtcGFtLmNdIEJ1ZyAjMTE4ODogcGFzcyByZXN1bHQgb2YgZG9fcGFtX2FjY291bnQgYmFjayBhbmQKICAgZG8gbm90IGFsbG93IGtiZGludCBhZ2FpbiBhZnRlciB0aGUgUEFNIGFjY291bnQgY2hlY2sgZmFpbHMuICBvayBkam1ACgoyMDA2MDUwNgogLSAoZHR1Y2tlcikgT3BlbkJTRCBDVlMgU3luYwogICAtIGR0dWNrZXJAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDQvMjUgMDg6MDI6MjcKICAgICBbYXV0aGZpbGUuYyBhdXRoZmlsZS5oIHNzaGNvbm5lY3QyLmMgc3NoLmMgc3NoY29ubmVjdDEuY10KICAgICBQcmV2ZW50IHNzaCBmcm9tIHRyeWluZyB0byBvcGVuIHByaXZhdGUga2V5cyB3aXRoIGJhZCBwZXJtaXNzaW9ucyBtb3JlIHRoYW4KICAgICBvbmNlIG9yIHByb21wdGluZyBmb3IgdGhlaXIgcGFzc3BocmFzZXMgKHdoaWNoIGl0IHN1YnNlcXVlbnRseSBpZ25vcmVzCiAgICAgYW55d2F5KSwgc2ltaWxhciB0byBhIHByZXZpb3VzIGNoYW5nZSBpbiBzc2gtYWRkLiAgYnogIzExODYsIG9rIGRqbUAKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDUvMDQgMTQ6NTU6MjMKICAgICBbZGguY10KICAgICB0aWdodGVyIERIIGV4cG9uZW50IGNoZWNrcyBoZXJlIHRvbzsgZmVlZGJhY2sgYW5kIG9rIG1hcmt1c0AKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDQvMDEgMDU6Mzc6NDYKICAgICBbT1ZFUlZJRVddCiAgICAgJE9wZW5CU0QkIGluIGhlcmUgdG9vCiAgIC0gZHR1Y2tlckBjdnMub3BlbmJzZC5vcmcgMjAwNi8wNS8wNiAwODozNTo0MAogICAgIFthdXRoLWtyYjUuY10KICAgICBBZGQgJE9wZW5CU0QkIGluIGNvbW1lbnQgaGVyZSB0b28KCjIwMDYwNTA0CiAtIChkdHVja2VyKSBbYXV0aC1wYW0uYyBncm91cGFjY2Vzcy5jIG1vbml0b3IuYyBtb25pdG9yX3dyYXAuYyBzY2FyZC1vcGVuc2MuYwogICBzZXNzaW9uLmMgc3NoLXJhbmQtaGVscGVyLmMgc3NoZC5jIG9wZW5ic2QtY29tcGF0L2JzZC1jeWd3aW5fdXRpbC5jCiAgIG9wZW5ic2QtY29tcGF0L3NldHByb2N0aXRsZS5jXSBDb252ZXJ0IG1hbGxvYyhmb28qYmFyKSAtPiBjYWxsb2MoZm9vLGJhcikKICAgaW4gUG9ydGFibGUtb25seSBjb2RlOyBzaW5jZSBjYWxsb2MgemVyb3MsIHJlbW92ZSBub3ctcmVkdW5kYW50IG1lbXNldHMuCiAgIEFsc28gYWRkIGEgY291cGxlIG9mIHNhbml0eSBjaGVja3MuICBXaXRoICYgb2sgZGptQAoKMjAwNjA1MDMKIC0gKGR0dWNrZXIpIFtwYWNrZXQuY10gUmVtb3ZlIGluX3N5c3RtLmggc2luY2UgaXQncyBhbHNvIGluIGluY2x1ZGVzLmgKICAgYW5kIGRvdWJsZSBpbmNsdWRpbmcgaXQgb24gSVJJWCA1LjMgY2F1c2VzIHByb2JsZW1zLiAgRnJvbSBHZW9yZyBTY2h3YXJ6LAogICAibm8gb2JqZWN0aW9ucyIgdGltQAoKMjAwNjA0MjMKIC0gKGRqbSkgT3BlbkJTRCBDVlMgU3luYwogICAtIGRlcmFhZHRAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDQvMDEgMDU6NDI6MjAKICAgICBbc2NwLmNdCiAgICAgbWluaW1hbCBsaW50IGNsZWFudXAgKHVudXNlZCBjcnVkLCBhbmQgc29tZSBzaXplX3QpOyBvayBkam0KICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDQvMDEgMDU6NTA6MjkKICAgICBbc2NwLmNdCiAgICAgeGFzcHJpbnRpZmljYXRpb247IG9rIGRlcmFhZHRACiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA0LzAxIDA1OjUxOjM0CiAgICAgW2F0b21pY2lvLmNdCiAgICAgQU5TSWZ5OyByZXF1ZXN0ZWQgZGVyYWFkdEAKICAgLSBkdHVja2VyQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA0LzAyIDA4OjM0OjUyCiAgICAgW3NzaC1rZXlzaWduLmNdCiAgICAgc2Vzc2lvbmlkIGNhbiBiZSAzMiBieXRlcyBub3cgdG9vIHdoZW4gc2hhMjU2IGtleCBpcyB1c2VkOyBvayBkam1ACiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA0LzAzIDA3OjEwOjM4CiAgICAgW2dzcy1nZW5yLmNdCiAgICAgR1NTQVBJIGJ1ZmZlcnMgc2hvdWxkbid0IGJlIG51bC10ZXJtaW5hdGVkLCBzcG90dGVkIGluIGJ1Z3ppbGxhICMxMDY2CiAgICAgYnkgZGxlb25hcmQgQVQgdmludGVsYS5jb20uIHVzZSB4YXNwcmludGYoKSB0byBzaW1wbGlmeSBjb2RlIHdoaWxlIGluCiAgICAgdGhlcmU7ICJsb29rcyByaWdodCIgZGVyYWFkdEAKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDQvMTYgMDA6NDg6NTIKICAgICBbYnVmZmVyLmMgYnVmZmVyLmggY2hhbm5lbHMuY10KICAgICBGaXggY29uZGl0aW9uIHdoZXJlIHdlIGNvdWxkIGV4aXQgd2l0aCBhIGZhdGFsIGVycm9yIHdoZW4gYW4gaW5wdXQKICAgICBidWZmZXIgYmVjYW1lIHRvbyBsYXJnZSBhbmQgdGhlIHJlbW90ZSBlbmQgaGFkIGFkdmVydGlzZWQgYSBiaWcgd2luZG93LgogICAgIFRoZSBwcm9ibGVtIHdhcyBhIG1pc21hdGNoIGluIHRoZSBiYWNrb2ZmIG1hdGggYmV0d2VlbiB0aGUgY2hhbm5lbHMgY29kZQogICAgIGFuZCB0aGUgYnVmZmVyIGNvZGUsIHNvIG1ha2UgYSBidWZmZXJfY2hlY2tfYWxsb2MoKSBmdW5jdGlvbiB0aGF0IHRoZQogICAgIGNoYW5uZWxzIGNvZGUgY2FuIHVzZSB0byBwcm9wc2VjdGl2bHkgY2hlY2sgd2hldGhlciBhbiBpbmNyZW1lbnRhbAogICAgIGFsbG9jYXRpb24gd2lsbCBzdWNjZWVkLiAgYnogIzExMzEsIGRlYnVnZ2VkIHdpdGggdGhlIGFzc2lzdGFuY2Ugb2YKICAgICBjb3ZlIEFUIHdpbGRwYWNrZXRzLmNvbTsgb2sgZHR1Y2tlckAgZGVyYWFkdEAKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDQvMTYgMDA6NTI6NTUKICAgICBbYXRvbWljaW8uYyBhdG9taWNpby5oXQogICAgIGludHJvZHVjZSBhdG9taWNpb3YoKSBmdW5jdGlvbiB0aGF0IHdyYXBzIHJlYWR2L3dyaXRldiB0byByZXRyeQogICAgIGludGVycnVwdGVkIHRyYW5zZmVycyBsaWtlIGF0b21pY2lvKCkgZG9lcyBmb3IgcmVhZC93cml0ZTsKICAgICBmZWVkYmFjayBkZXJhYWR0QCBkdHVja2VyQCBzdGV2ZXNrQCBvayBkZXJhYWR0QAogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNi8wNC8xNiAwMDo1NDoxMAogICAgIFtzZnRwLWNsaWVudC5jXQogICAgIGF2b2lkIG1ha2luZyBhIHRpbnkgNC1ieXRlIHdyaXRlIHRvIHNlbmQgdGhlIHBhY2tldCBsZW5ndGggb2Ygc2Z0cAogICAgIGNvbW1hbmRzLCB3aGljaCB3b3VsZCByZXN1bHQgaW4gYSBzZXBhcmF0ZSB0aW55IHBhY2tldCBvbiB0aGUgd2lyZSBieQogICAgIHVzaW5nIGF0b21pY2lvdih3cml0ZXYsIC4uLikgdG8gd3JpdGUgdGhlIGxlbmd0aCBhbmQgdGhlIGNvbW1hbmQgaW4gb25lCiAgICAgcGFzczsgb2sgZGVyYWFkdEAKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDQvMTYgMDc6NTk6MDAKICAgICBbYXRvbWljaW8uY10KICAgICByZW9yZGVyIHNhbml0eSB0ZXN0IHNvIHRoYXQgaXQgY2Fubm90IGRlcmVmZXJlbmNlIHBhc3QgdGhlIGVuZCBvZiB0aGUKICAgICBpb3YgYXJyYXk7IHdlbGwgc3BvdHRlZCBjYW5hY2FyQCEKICAgLSBkdHVja2VyQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA0LzE4IDEwOjQ0OjI4CiAgICAgW2J1ZmF1eC5jIGJ1ZmJuLmMgTWFrZWZpbGUuaW5dCiAgICAgTW92ZSBCdWZmZXIgYmlnbnVtIGZ1bmN0aW9ucyBpbnRvIHRoZWlyIG93biBmaWxlLCBidWZibi5jLiBUaGlzIG1lYW5zCiAgICAgdGhhdCBzZnRwIGFuZCBzZnRwLXNlcnZlciAod2hpY2ggdXNlIHRoZSBCdWZmZXIgZnVuY3Rpb25zIGluIGJ1ZmF1eC5jIAogICAgIGJ1dCBub3QgdGhlIGJpZ251bSBvbmVzKSBubyBsb25nZXIgbmVlZCB0byBiZSBsaW5rZWQgd2l0aCBsaWJjcnlwdG8uCiAgICAgb2sgbWFya3VzQAogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNi8wNC8yMCAwOToyNzowOQogICAgIFthdXRoLmggY2xpZW50bG9vcC5jIGRpc3BhdGNoLmMgZGlzcGF0Y2guaCBrZXguaF0KICAgICByZXBsYWNlIHRoZSBsYXN0IG5vbi1zaWdfYXRvbWljX3QgZmxhZyB1c2VkIGluIGEgc2lnbmFsIGhhbmRsZXIgd2l0aCBhCiAgICAgc2lnX2F0b21pY190LCB1bmZvcnR1bmF0ZWx5IHdpdGggc29tZSBrbm9jay1vbiBlZmZlY3RzIGluIG90aGVyIChub24tCiAgICAgc2lnbmFsKSBjb250ZXh0cyBpbiB3aGljaCBpdCBpcyB1c2VkOyBvayBtYXJrdXNACiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA0LzIwIDA5OjQ3OjU5CiAgICAgW3NzaGNvbm5lY3QuY10KICAgICBzaW1wbGlmeTsgb2sgZGptQAogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNi8wNC8yMCAyMTo1Mzo0NAogICAgIFtpbmNsdWRlcy5oIHNlc3Npb24uYyBzZnRwLmNdCiAgICAgU3dpdGNoIGZyb20gdXNpbmcgcGlwZXMgdG8gc29ja2V0cGFpcnMgZm9yIGNvbW11bmljYXRpb24gYmV0d2VlbgogICAgIHNmdHAvc2NwIGFuZCBzc2gsIGFuZCBiZXR3ZWVuIHNzaGQgYW5kIGl0cyBzdWJwcm9jZXNzZXMuIFRoaXMgc2F2ZXMKICAgICBhIGZpbGUgZGVzY3JpcHRvciBwZXIgc2Vzc2lvbiBhbmQgYXBwYXJlbnRseSBtYWtlcyB1c2VybGFuZCBwcHAgb3ZlcgogICAgIHNzaCB3b3JrOyBvayBtYXJrdXNAIGRlcmFhZHRAIChJRCBTeW5jIG9ubHkgLSBwb3J0YWJsZSBtYWtlcyB0aGlzCiAgICAgZGVjaXNpb24gb24gYSBwZXItcGxhdGZvcm0gYmFzaXMpCiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA0LzIyIDA0OjA2OjUxCiAgICAgW3VpZHN3YXAuY10KICAgICB1c2Ugc2V0cmVzW3VnXWlkKCkgdG8gcGVybWFuZW50bHkgcmV2b2tlIHByaXZpbGVnZXM7IG9rIGRlcmFhZHRACiAgICAgKElEIFN5bmMgb25seSAtIHBvcnRhYmxlIGFscmVhZHkgdXNlcyBzZXRyZXNbdWddaWQoKSB3aGVuZXZlciBwb3NzaWJsZSkKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzA0LzIyIDE4OjI5OjMzCiAgICAgW2NyYzMyLmNdCiAgICAgcmVtb3ZlIGV4dHJhIHNwYWNlcwogLSAoZGptKSBbYXV0aC5oIGRpc3BhdGNoLmgga2V4LmhdIHNwcmlua2xlIGluIHNpZ25hbC5oIHRvIGdldAogICBzaWdfYXRvbWljX3QKCjIwMDYwNDIxCiAtIChkam0pIFtNYWtlZmlsZS5pbiBjb25maWd1cmUuYWMgc2Vzc2lvbi5jIHNzaHB0eS5jXQogICBbY29udHJpYi9yZWRoYXQvc3NoZC5pbml0IG9wZW5ic2QtY29tcGF0L01ha2VmaWxlLmluXQogICBbb3BlbmJzZC1jb21wYXQvb3BlbmJzZC1jb21wYXQuaCBvcGVuYnNkLWNvbXBhdC9wb3J0LWxpbnV4LmNdCiAgIFtvcGVuYnNkLWNvbXBhdC9wb3J0LWxpbnV4LmhdIEFkZCBzdXBwb3J0IGZvciBTRUxpbnV4LCBzZXR0aW5nIAogICB0aGUgZXhlY3V0aW9uIGFuZCBUVFkgY29udGV4dHMuIGJhc2VkIG9uIHBhdGNoIGZyb20gRGFuaWVsIFdhbHNoLAogICBieiAjODgwOyBvayBkdHVja2VyQAoKMjAwNjA0MTgKIC0gKGRqbSkgW2Nhbm9ob3N0LmNdIFJlb3JkZXIgSVAgb3B0aW9ucyBjaGVjayBzbyB0aGF0IGl0IGlzbid0IGJyb2tlbgogICBieSBtYXBwZWQgYWRkcmVzc2VzOyBieiAjMTE3OSByZXBvcnRlZCBieSBtYXJrdyB3dGVjaC1sbGMuY29tOwogICBvayBkdHVja2VyQAoKMjAwNjAzMzEKIC0gT3BlbkJTRCBDVlMgU3luYwogICAtIGRlcmFhZHRAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDMvMjcgMDE6MjE6MTgKICAgICBbeG1hbGxvYy5jXQogICAgIHdlIGNhbiBkbyB0aGUgc2l6ZSAmIG5tZW1iIGNoZWNrIGJlZm9yZSB0aGUgaW50ZWdlciBvdmVyZmxvdyBjaGVjazsgCiAgICAgZXZvbAogICAtIGRlcmFhZHRAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDMvMjcgMTM6MDM6NTQKICAgICBbZGguY10KICAgICB1c2Ugc3RydG9udW0oKSBpbnN0ZWFkIG9mIGF0b2koKSwgbGltaXQgZGhnIHNpemUgdG8gNjRrOyBvayBkam0KICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDMvMjcgMjM6MTU6NDYKICAgICBbc2Z0cC5jXQogICAgIGFsd2F5cyB1c2UgYSBmb3JtYXQgc3RyaW5nIGZvciBhZGRhcmdzOyBzcG90dGVkIGJ5IG1vdXJpbmdACiAgIC0gZGVyYWFkdEBjdnMub3BlbmJzZC5vcmcgMjAwNi8wMy8yOCAwMDoxMjozMQogICAgIFtSRUFETUUudHVuIHNzaC5jXQogICAgIHNwYWNpbmcKICAgLSBkZXJhYWR0QGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAzLzI4IDAxOjUyOjI4CiAgICAgW2NoYW5uZWxzLmNdCiAgICAgZG8gbm90IGFjY2VwdCB1bnJlYXNvbmFibGUgWCBwb3J0cyBudW1iZXJzOyBvayBkam0KICAgLSBkZXJhYWR0QGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAzLzI4IDAxOjUzOjQzCiAgICAgW3NzaC1hZ2VudC5jXQogICAgIHVzZSBzdHJ0b251bSgpIHRvIHBhcnNlIHRoZSBwaWQgZnJvbSB0aGUgZmlsZSwgYW5kIHJhbmdlIGNoZWNrIGl0CiAgICAgYmV0dGVyOyBvayBkam0KICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDMvMzAgMDk6NDE6MjUKICAgICBbY2hhbm5lbHMuY10KICAgICBBUkdTVVNFRCBmb3IgZGlzcGF0Y2ggdGFibGUtZHJpdmVuIGZ1bmN0aW9ucwogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNi8wMy8zMCAwOTo1ODoxNgogICAgIFthdXRoZmQuYyBidWZhdXguYyBkZWF0dGFjay5jIGdzcy1zZXJ2LmMgbWFjLmMgbWlzYy5jIG1pc2MuaF0KICAgICBbbW9uaXRvcl93cmFwLmMgbXNnLmMgcGFja2V0LmMgc2Z0cC1jbGllbnQuYyBzZnRwLXNlcnZlci5jIHNzaC1hZ2VudC5jXQogICAgIHJlcGxhY2Uge0dFVCxQVVR9X1hYQklUIG1hY3JvcyB3aXRoIGZ1bmN0aW9uYWxseSBzaW1pbGFyIGZ1bmN0aW9ucywKICAgICBzaWxlbmNpbmcgYSBoZWFwIG9mIGxpbnQgd2FybmluZ3MuIGFsc28gYWxsb3dzIHRoZW0gdG8gdXNlCiAgICAgX19ib3VuZGVkX18gY2hlY2tpbmcgd2hpY2ggY2FuJ3QgYmUgYXBwbGllZCB0byBtYWNyb3M7IHJlcXVlc3RlZAogICAgIGJ5IGFuZCBmZWVkYmFjayBmcm9tIGRlcmFhZHRACiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAzLzMwIDEwOjQxOjI1CiAgICAgW3NzaC5jIHNzaF9jb25maWcuNV0KICAgICBhZGQgcGVyY2VudCBlc2NhcGUgY2hhcnMgdG8gdGhlIElkZW50aXR5RmlsZSBvcHRpb24sIGJ6ICMxMTU5IGJhc2VkCiAgICAgb24gYSBwYXRjaCBieSBpbWFnaW5nIEFUIG1hdGgudWFsYmVydGEuY2E7IGZlZWRiYWNrIGFuZCBvayBkdHVja2VyQAogICAtIGR0dWNrZXJAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDMvMzAgMTE6MDU6MTcKICAgICBbc3NoLWtleWdlbi5jXQogICAgIENvcnJlY3RseSBoYW5kbGUgdHJ1bmNhdGVkIGZpbGVzIHdoaWxlIGNvbnZlcnRpbmcga2V5czsgb2sgZGptQAogICAtIGR0dWNrZXJAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDMvMzAgMTE6NDA6MjEKICAgICBbYXV0aC5jIG1vbml0b3IuY10KICAgICBQcmV2ZW50IGR1cGxpY2F0ZSBsb2cgbWVzc2FnZXMgd2hlbiBwcml2c2VwPXllczsgb2sgZGptQAogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wMy8zMSAwOTowOTozMAogICAgIFtzc2hfY29uZmlnLjVdCiAgICAga2lsbCB0cmFpbGluZyB3aGl0ZXNwYWNlOwogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNi8wMy8zMSAwOToxMzo1NgogICAgIFtzc2hfY29uZmlnLjVdCiAgICAgcmVtb3RlIHVzZXIgZXNjYXBlIGlzICVyIG5vdCAlaDsgc3BvdHRlZCBieSBqbWNACgoyMDA2MDMyNgogLSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gamFrb2JAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDMvMTUgMDg6NDY6NDQKICAgICBbc3NoLWtleWdlbi5jXQogICAgIGlmIG5vIGtleSBmaWxlIGFyZSBnaXZlbiB3aGVuIHByaW50aW5nIHRoZSBETlMgaG9zdCByZWNvcmQsIHVzZSB0aGUKICAgICBob3N0IGtleSBmaWxlKHMpIGFzIGRlZmF1bHQuIG9rIGRqbUAKICAgLSBiaW9ybkBjdnMub3BlbmJzZC5vcmcgMjAwNi8wMy8xNiAxMDozMTo0NQogICAgIFtzY3AuY10KICAgICBUcnkgdG8gZGlzcGxheSBlcnJvcm1lc3NhZ2UgZXZlbiBpZiByZW1vdXQgPT0gLTEKICAgICBvayBkam1ALCBtYXJrdXNACiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAzLzE3IDIyOjMxOjUwCiAgICAgW2F1dGhmZC5jXQogICAgIGFub3RoZXIgdW5yZWFjaGFibGUgZm91bmQgYnkgbGludAogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNi8wMy8xNyAyMjozMToxMQogICAgIFthdXRoZmQuY10KICAgICB1bnJlYWNoYW5ibGUgc3RhdGVtZW50LCBmb3VuZCBieSBsaW50CiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAzLzE5IDAyOjIyOjMyCiAgICAgW3NlcnZlcmxvb3AuY10KICAgICBtZW1vcnkgbGVha3MgZGV0ZWN0ZWQgYnkgQ292ZXJpdHkgdmlhIGVsYWQgQVQgbmV0YnNkLm9yZzsKICAgICBvayBkZXJhYWR0QCBkdHVja2VyQAogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNi8wMy8xOSAwMjoyMjo1NgogICAgIFtzZnRwLmNdCiAgICAgbW9yZSBtZW1vcnkgbGVha3MgZGV0ZWN0ZWQgYnkgQ292ZXJpdHkgdmlhIGVsYWQgQVQgbmV0YnNkLm9yZzsKICAgICBkZXJhYWR0QCBvawogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNi8wMy8xOSAwMjoyMzoyNgogICAgIFtob3N0ZmlsZS5jXQogICAgIEZJTEUqIGxlYWsgZGV0ZWN0ZWQgYnkgQ292ZXJpdHkgdmlhIGVsYWQgQVQgbmV0YnNkLm9yZzsKICAgICBvayBkZXJhYWR0QAogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNi8wMy8xOSAwMjoyNDowNQogICAgIFtkaC5jIHJlYWRjb25mLmMgc2VydmNvbmYuY10KICAgICBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBkZXRlY3RlZCBieSBDb3Zlcml0eQogICAgIHZpYSBlbGFkIEFUIG5ldGJzZC5vcmc7IG9rIGRlcmFhZHRACiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAzLzE5IDA3OjQxOjMwCiAgICAgW3NzaGNvbm5lY3QyLmNdCiAgICAgbWVtb3J5IGxlYWtzIGRldGVjdGVkIGJ5IENvdmVyaXR5IHZpYSBlbGFkIEFUIG5ldGJzZC5vcmc7CiAgICAgZGVyYWFkdEAgb2sKICAgLSBkdHVja2VyQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAzLzE5IDExOjUxOjUyCiAgICAgW3NlcnZjb25mLmNdCiAgICAgQ29ycmVjdCBzdHJkZWxpbSBudWxsIHRlc3Q7IG9rIGRqbUAKICAgLSBkZXJhYWR0QGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAzLzE5IDE4OjUyOjExCiAgICAgW2F1dGgxLmMgYXV0aGZkLmMgY2hhbm5lbHMuY10KICAgICBzcGFjaW5nCiAgIC0gZGVyYWFkdEBjdnMub3BlbmJzZC5vcmcgMjAwNi8wMy8xOSAxODo1MzoxMgogICAgIFtrZXguYyBrZXguaCBtb25pdG9yLmMgbXlwcm9wb3NhbC5oIHNlc3Npb24uY10KICAgICBzcGFjaW5nCiAgIC0gZGVyYWFkdEBjdnMub3BlbmJzZC5vcmcgMjAwNi8wMy8xOSAxODo1Njo0MQogICAgIFtjbGllbnRsb29wLmMgcHJvZ3Jlc3NtZXRlci5jIHNlcnZlcmxvb3AuYyBzc2hkLmNdCiAgICAgQVJHU1VTRUQgZm9yIHNpZ25hbCBoYW5kbGVycwogICAtIGRlcmFhZHRAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDMvMTkgMTg6NTk6NDkKICAgICBbc3NoLWtleXNjYW4uY10KICAgICBwbGVhc2UgbGludAogICAtIGRlcmFhZHRAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDMvMTkgMTg6NTk6MzAKICAgICBbc3NoLmNdCiAgICAgc3BhY2luZwogICAtIGRlcmFhZHRAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDMvMTkgMTg6NTk6MDkKICAgICBbYXV0aGZpbGUuY10KICAgICB3aG9ldmVyIHRob3VnaHQgdGhhdCBicmVhayBhZnRlciByZXR1cm4gd2FzIGEgZ29vZCBpZGVhIG5lZWRzIHRvCiAgICAgZ2V0IHRoZWlyIGhlYWQgZXhhbWltZWQKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDMvMjAgMDQ6MDk6NDQKICAgICBbbW9uaXRvci5jXQogICAgIG1lbW9yeSBsZWFrcyBkZXRlY3RlZCBieSBDb3Zlcml0eSB2aWEgZWxhZCBBVCBuZXRic2Qub3JnOwogICAgIGRlcmFhZHRAIG9rCiAgICAgdGhhdCBzaG91bGQgYmUgYWxsIG9mIHRoZW0gbm93CiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAzLzIwIDExOjM4OjQ2CiAgICAgW2tleS5jXQogICAgIChyZWFsbHkpIGxhc3Qgb2YgdGhlIENvdmVyaXR5IGRpZmZzOiBhdm9pZCBwb3NzaWJsZSBOVUxMIGRlcmVmIGluCiAgICAga2V5X2ZyZWUuIHZpYSBlbGFkIEFUIG5ldGJzZC5vcmc7IG1hcmt1c0Agb2sKICAgLSBkZXJhYWR0QGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAzLzIwIDE3OjEwOjE5CiAgICAgW2F1dGguYyBrZXkuYyBtaXNjLmMgcGFja2V0LmMgc3NoLWFkZC5jXQogICAgIGluIGEgc3dpdGNoICgpLCBicmVhayBhZnRlciByZXR1cm4gb3IgZ290byBpcyBzdHVwaWQKICAgLSBkZXJhYWR0QGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAzLzIwIDE3OjEzOjE2CiAgICAgW2tleS5jXQogICAgIGRqbSBkaWQgYSB0eXBvCiAgIC0gZGVyYWFkdEBjdnMub3BlbmJzZC5vcmcgMjAwNi8wMy8yMCAxNzoxNzoyMwogICAgIFtzc2gtcnNhLmNdCiAgICAgaW4gYSBzd2l0Y2ggKCksIGJyZWFrIGFmdGVyIHJldHVybiBvciBnb3RvIGlzIHN0dXBpZAogICAtIGRlcmFhZHRAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDMvMjAgMTg6MTQ6MDIKICAgICBbY2hhbm5lbHMuYyBjbGllbnRsb29wLmMgbW9uaXRvcl93cmFwLmMgbW9uaXRvcl93cmFwLmggc2VydmVybG9vcC5jXQogICAgIFtzc2guYyBzc2hwdHkuYyBzc2hwdHkuaF0KICAgICBzcHJpbmtsZSB1X2ludCB0aHJvdWdob3V0IHB0eSBzdWJzeXN0ZW0sIG9rIG1hcmt1cwogICAtIGRlcmFhZHRAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDMvMjAgMTg6MTc6MjAKICAgICBbYXV0aDEuYyBhdXRoMi5jIHNzaGQuY10KICAgICBzcHJpbmtsZSBzb21lIEFSR1NVU0VEIGZvciB0YWJsZSBkcml2ZW4gZnVuY3Rpb25zICh3aGljaCBzb21ldGltZXMgCiAgICAgbXVzdCBpZ25vcmUgdGhlaXIgYXJncykKICAgLSBkZXJhYWR0QGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAzLzIwIDE4OjI2OjU1CiAgICAgW2NoYW5uZWxzLmMgbW9uaXRvci5jIHNlc3Npb24uYyBzZXNzaW9uLmggc3NoLWFnZW50LmMgc3NoLWtleWdlbi5jXQogICAgIFtzc2gtcnNhLmMgc3NoLmMgc3NobG9naW4uY10KICAgICBhbm5veWluZyBzcGFjaW5nIGZpeGVzIGdldHRpbmcgaW4gdGhlIHdheSBvZiByZWFsIGRpZmZzCiAgIC0gZGVyYWFkdEBjdnMub3BlbmJzZC5vcmcgMjAwNi8wMy8yMCAxODoyNzo1MAogICAgIFttb25pdG9yLmNdCiAgICAgc3BhY2luZwogICAtIGRlcmFhZHRAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDMvMjAgMTg6MzU6MTIKICAgICBbY2hhbm5lbHMuY10KICAgICB4MTFfZmFrZV9kYXRhIGlzIG9ubHkgZXZlciB1c2VkIGFzIHVfY2hhciAqCiAgIC0gZGVyYWFkdEBjdnMub3BlbmJzZC5vcmcgMjAwNi8wMy8yMCAxODo0MTo0MwogICAgIFtkbnMuY10KICAgICBjYXN0IHhzdHJkdXAgdG8gcHJvcGVydCB1X2NoYXIgKgogICAtIGRlcmFhZHRAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDMvMjAgMTg6NDI6MjcKICAgICBbY2Fub2hvc3QuYyBtYXRjaC5jIHNzaC5jIHNzaGNvbm5lY3QuY10KICAgICBiZSBzdHJpY3Qgd2l0aCB0b2xvd2VyKCkgY2FzdGluZwogICAtIGRlcmFhZHRAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDMvMjAgMTg6NDg6MzQKICAgICBbY2hhbm5lbHMuYyBmYXRhbC5jIGtleC5jIHBhY2tldC5jIHNlcnZlcmxvb3AuY10KICAgICBzcGFjaW5nCiAgIC0gZGVyYWFkdEBjdnMub3BlbmJzZC5vcmcgMjAwNi8wMy8yMCAyMToxMTo1MwogICAgIFt0dHltb2Rlcy5jXQogICAgIHNwYWNpbmcKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDMvMjUgMDA6MDU6NDEKICAgICBbYXV0aC1ic2RhdXRoLmMgYXV0aC1za2V5LmMgYXV0aC5jIGF1dGgyLWNoYWxsLmMgY2hhbm5lbHMuY10KICAgICBbY2xpZW50bG9vcC5jIGRlYXR0YWNrLmMgZ3NzLWdlbnIuYyBrZXguYyBrZXkuYyBtaXNjLmMgbW9kdWxpLmNdCiAgICAgW21vbml0b3IuYyBtb25pdG9yX3dyYXAuYyBwYWNrZXQuYyBzY2FyZC5jIHNmdHAtc2VydmVyLmMgc3NoLWFnZW50LmNdCiAgICAgW3NzaC1rZXlzY2FuLmMgc3NoLmMgc3NoY29ubmVjdC5jIHNzaGNvbm5lY3QyLmMgc3NoZC5jIHV1ZW5jb2RlLmNdCiAgICAgW3htYWxsb2MuYyB4bWFsbG9jLmhdCiAgICAgaW50cm9kdWNlIHhjYWxsb2MoKSBhbmQgeGFzcHJpbnRmKCkgZmFpbHVyZS1jaGVja2VkIGFsbG9jYXRpb25zIAogICAgIGZ1bmN0aW9ucyBhbmQgdXNlIHRoZW0gdGhyb3VnaG91dCBvcGVuc3NoCgogICAgIHhjYWxsb2MgaXMgcGFydGljdWxhcmx5IGltcG9ydGFudCBiZWNhdXNlIG1hbGxvYyhubWVtYiAqIHNpemUpIGlzIGEKICAgICBkYW5nZXJvdXMgaWRpb20gKHN1YmplY3QgdG8gaW50ZWdlciBvdmVyZmxvdykgYW5kIGl0IGlzIHRpbWUgZm9yIGl0IAogICAgIHRvIGRpZQoKICAgICBmZWVkYmFjayBhbmQgb2sgZGVyYWFkdEAKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDMvMjUgMDE6MTM6MjMKICAgICBbYnVmZmVyLmMgY2hhbm5lbHMuYyBkZWF0dGFjay5jIG1pc2MuYyBzY3AuYyBzZXNzaW9uLmMgc2Z0cC1jbGllbnQuY10KICAgICBbc2Z0cC1zZXJ2ZXIuYyBzc2gtYWdlbnQuYyBzc2gtcnNhLmMgeG1hbGxvYy5jIHhtYWxsb2MuaCBhdXRoLXBhbS5jXQogICAgIFt1aWRzd2FwLmNdCiAgICAgY2hhbmdlIE9wZW5TU0gncyB4cmVhbGxvYygpIGZ1bmN0aW9uIGZyb20gYmVpbmcgeHJlYWxsb2MocCwgbmV3X3NpemUpCiAgICAgdG8geHJlYWxsb2MocCwgbmV3X25tZW1iLCBuZXdfaXRlbXNpemUpLgoKICAgICByZWFsbG9jIGlzIHBhcnRpY3VsYXJseSBwcm9uZSB0byBpbnRlZ2VyIG92ZXJmbG93cyBiZWNhdXNlIGl0IGlzCiAgICAgYWxtb3N0IGFsd2F5cyBhbGxvY2F0aW5nICJuICogc2l6ZSIgYnl0ZXMsIHNvIHRoaXMgaXMgYSBmYXIgc2FmZXIgCiAgICAgQVBJOyBvayBkZXJhYWR0QAogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNi8wMy8yNSAwMTozMDoyMwogICAgIFtzZnRwLmNdCiAgICAgImFib3JtYWxseSIgaXMgYSBwZXJmZWN0bHkgY3JvbXVsZW50IHdvcmQsIGJ1dCAiYWJub3JtYWxseSIgaXMgYmV0dGVyCiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAzLzI1IDEzOjE3OjAzCiAgICAgW2F0b21pY2lvLmMgYXV0aC1ic2RhdXRoLmMgYXV0aC1jaGFsbC5jIGF1dGgtb3B0aW9ucy5jIGF1dGgtcGFzc3dkLmNdCiAgICAgW2F1dGgtcmgtcnNhLmMgYXV0aC1yaG9zdHMuYyBhdXRoLXJzYS5jIGF1dGgtc2tleS5jIGF1dGguYyBhdXRoMS5jXQogICAgIFthdXRoMi1jaGFsbC5jIGF1dGgyLWhvc3RiYXNlZC5jIGF1dGgyLWtiZGludC5jIGF1dGgyLW5vbmUuY10KICAgICBbYXV0aDItcGFzc3dkLmMgYXV0aDItcHVia2V5LmMgYXV0aDIuYyBhdXRoZmQuYyBhdXRoZmlsZS5jIGJ1ZmF1eC5jXQogICAgIFtidWZmZXIuYyBjYW5vaG9zdC5jIGNoYW5uZWxzLmMgY2lwaGVyLTNkZXMxLmMgY2lwaGVyLWJmMS5jXQogICAgIFtjaXBoZXItY3RyLmMgY2lwaGVyLmMgY2xlYW51cC5jIGNsaWVudGxvb3AuYyBjb21wYXQuYyBjb21wcmVzcy5jXQogICAgIFtkZWF0dGFjay5jIGRoLmMgZGlzcGF0Y2guYyBmYXRhbC5jIGdyb3VwYWNjZXNzLmMgaG9zdGZpbGUuYyBrZXguY10KICAgICBba2V4ZGguYyBrZXhkaGMuYyBrZXhkaHMuYyBrZXhnZXguYyBrZXhnZXhjLmMga2V4Z2V4cy5jIGtleS5jIGxvZy5jXQogICAgIFttYWMuYyBtYXRjaC5jIG1kLXNoYTI1Ni5jIG1pc2MuYyBtb25pdG9yLmMgbW9uaXRvcl9mZHBhc3MuY10KICAgICBbbW9uaXRvcl9tbS5jIG1vbml0b3Jfd3JhcC5jIG1zZy5jIG5jaGFuLmMgcGFja2V0LmMgcHJvZ3Jlc3NtZXRlci5jXQogICAgIFtyZWFkY29uZi5jIHJlYWRwYXNzLmMgcnNhLmMgc2NhcmQuYyBzY3AuYyBzZXJ2Y29uZi5jIHNlcnZlcmxvb3AuY10KICAgICBbc2Vzc2lvbi5jIHNmdHAtY2xpZW50LmMgc2Z0cC1jb21tb24uYyBzZnRwLWdsb2IuYyBzZnRwLXNlcnZlci5jXQogICAgIFtzZnRwLmMgc3NoLWFkZC5jIHNzaC1hZ2VudC5jIHNzaC1kc3MuYyBzc2gta2V5Z2VuLmMgc3NoLWtleXNjYW4uY10KICAgICBbc3NoLWtleXNpZ24uYyBzc2gtcnNhLmMgc3NoLmMgc3NoY29ubmVjdC5jIHNzaGNvbm5lY3QxLmNdCiAgICAgW3NzaGNvbm5lY3QyLmMgc3NoZC5jIHNzaGxvZ2luLmMgc3NocHR5LmMgc3NodHR5LmMgdHR5bW9kZXMuY10KICAgICBbdWlkc3dhcC5jIHV1ZW5jb2RlLmMgeG1hbGxvYy5jXQogICAgIFB1dCAkT3BlbkJTRCQgdGFncyBiYWNrIChhcyBjb21tZW50cykgdG8gcmVwbGFjZSB0aGUgUkNTSUQoKXMgdGhhdAogICAgIFRoZW8gbnVrZWQgLSBvdXIgc2NyaXB0cyB0byBzeW5jIC1wb3J0YWJsZSBuZWVkIHRoZW0gaW4gdGhlIGZpbGVzCiAgIC0gZGVyYWFkdEBjdnMub3BlbmJzZC5vcmcgMjAwNi8wMy8yNSAxODoyOTozNQogICAgIFthdXRoLXJzYS5jIGF1dGhmZC5jIHBhY2tldC5jXQogICAgIG5lZWRlZCBjYXN0cyAoYWx3YXlzIHdpbGwgYmUgbmVlZGVkKQogICAtIGRlcmFhZHRAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDMvMjUgMTg6MzA6NTUKICAgICBbY2xpZW50bG9vcC5jIHNlcnZlcmxvb3AuY10KICAgICBzcGFjaW5nCiAgIC0gZGVyYWFkdEBjdnMub3BlbmJzZC5vcmcgMjAwNi8wMy8yNSAxODozNjoxNQogICAgIFtzc2hsb2dpbi5jIHNzaGxvZ2luLmhdCiAgICAgbmljZXIgc2l6ZV90IGFuZCB0aW1lX3QgdHlwZXMKICAgLSBkZXJhYWR0QGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAzLzI1IDE4OjQwOjE0CiAgICAgW3NzaC1rZXlnZW4uY10KICAgICBjYXN0IHN0cnRvbnVtKCkgcmVzdWx0IHRvIHJpZ2h0IHR5cGUKICAgLSBkZXJhYWR0QGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAzLzI1IDE4OjQxOjQ1CiAgICAgW3NzaC1hZ2VudC5jXQogICAgIG1hcmsgdHdvIG1vcmUgc2lnbmFsIGhhbmRsZXJzIEFSR1NVU0VECiAgIC0gZGVyYWFkdEBjdnMub3BlbmJzZC5vcmcgMjAwNi8wMy8yNSAxODo0MzozMAogICAgIFtjaGFubmVscy5jXQogICAgIHVzZSBzdHJ0b251bSgpIGluc3RlYWQgb2YgYXRvaSgpIFtsaW1pdCBYIHNjcmVlbnMgdG8gNDAwLCBzb3JyeV0KICAgLSBkZXJhYWR0QGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAzLzI1IDE4OjU2OjU1CiAgICAgW2J1ZmF1eC5jIGNoYW5uZWxzLmMgcGFja2V0LmNdCiAgICAgcmVtb3ZlIChjaGFyICopIGNhc3RzIHRvIGEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIHZvaWQgKiBmb3IgdGhlIGFyZwogICAtIGRlcmFhZHRAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDMvMjUgMTg6NTg6MTAKICAgICBbY2hhbm5lbHMuY10KICAgICBkZWxldGUgY2FzdCBub3QgcmVxdWlyZWQKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDMvMjUgMjI6MjI6NDMKICAgICBbYXRvbWljaW8uaCBhdXRoLW9wdGlvbnMuaCBhdXRoLmggYXV0aDItZ3NzLmMgYXV0aGZkLmggYXV0aGZpbGUuaF0KICAgICBbYnVmYXV4LmggYnVmZmVyLmggY2Fub2hvc3QuaCBjaGFubmVscy5oIGNpcGhlci5oIGNsaWVudGxvb3AuaF0KICAgICBbY29tcGF0LmggY29tcHJlc3MuaCBjcmMzMi5jIGNyYzMyLmggZGVhdHRhY2suaCBkaC5oIGRpc3BhdGNoLmhdCiAgICAgW2Rucy5jIGRucy5oIGdldHB1dC5oIGdyb3VwYWNjZXNzLmggZ3NzLWdlbnIuYyBnc3Mtc2Vydi1rcmI1LmNdCiAgICAgW2dzcy1zZXJ2LmMgaG9zdGZpbGUuaCBpbmNsdWRlcy5oIGtleC5oIGtleS5oIGxvZy5oIG1hYy5oIG1hdGNoLmhdCiAgICAgW21pc2MuaCBtb25pdG9yLmggbW9uaXRvcl9mZHBhc3MuaCBtb25pdG9yX21tLmggbW9uaXRvcl93cmFwLmggbXNnLmhdCiAgICAgW215cHJvcG9zYWwuaCBwYWNrZXQuaCBwYXRobmFtZXMuaCBwcm9ncmVzc21ldGVyLmggcmVhZGNvbmYuaCByc2EuaF0KICAgICBbc2NhcmQuaCBzZXJ2Y29uZi5oIHNlcnZlcmxvb3AuaCBzZXNzaW9uLmggc2Z0cC1jb21tb24uaCBzZnRwLmhdCiAgICAgW3NzaC1nc3MuaCBzc2guaCBzc2gxLmggc3NoMi5oIHNzaGNvbm5lY3QuaCBzc2hsb2dpbi5oIHNzaHB0eS5oXQogICAgIFt0dHltb2Rlcy5oIHVpZHN3YXAuaCB1dWVuY29kZS5oIHhtYWxsb2MuaF0KICAgICBzdGFuZGFyZGlzZSBzcGFjaW5nIGluICRPcGVuQlNEJCB0YWdzOyByZXF1ZXN0ZWQgYnkgZGVyYWFkdEAKICAgLSBkZXJhYWR0QGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAzLzI2IDAxOjMxOjQ4CiAgICAgW3V1ZW5jb2RlLmNdCiAgICAgdHlwbwoKMjAwNjAzMjUKIC0gT3BlbkJTRCBDVlMgU3luYwogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNi8wMy8xNiAwNDoyNDo0MgogICAgIFtzc2guMV0KICAgICBBZGQgUkZDNDQxOSAoRGlmZmllLUhlbGxtYW4gZ3JvdXAgZXhjaGFuZ2UgS0VYKSB0byB0aGUgbGlzdCBvZiBTU0ggUkZDcwogICAgIHRoYXQgT3BlblNTSCBzdXBwb3J0cwogICAtIGRlcmFhZHRAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDMvMTkgMTg6NTE6MTgKICAgICBbYXRvbWljaW8uYyBhdXRoLWJzZGF1dGguYyBhdXRoLWNoYWxsLmMgYXV0aC1rcmI1LmMgYXV0aC1vcHRpb25zLmNdCiAgICAgW2F1dGgtcGFtLmMgYXV0aC1wYXNzd2QuYyBhdXRoLXJoLXJzYS5jIGF1dGgtcmhvc3RzLmMgYXV0aC1yc2EuY10KICAgICBbYXV0aC1zaGFkb3cuYyBhdXRoLXNrZXkuYyBhdXRoLmMgYXV0aDEuYyBhdXRoMi1jaGFsbC5jXQogICAgIFthdXRoMi1ob3N0YmFzZWQuYyBhdXRoMi1rYmRpbnQuYyBhdXRoMi1ub25lLmMgYXV0aDItcGFzc3dkLmNdCiAgICAgW2F1dGgyLXB1YmtleS5jIGF1dGgyLmMgYXV0aGZkLmMgYXV0aGZpbGUuYyBidWZhdXguYyBidWZmZXIuY10KICAgICBbY2Fub2hvc3QuYyBjaGFubmVscy5jIGNpcGhlci0zZGVzMS5jIGNpcGhlci1hY3NzLmMgY2lwaGVyLWFlcy5jXQogICAgIFtjaXBoZXItYmYxLmMgY2lwaGVyLWN0ci5jIGNpcGhlci5jIGNsZWFudXAuYyBjbGllbnRsb29wLmMgY29tcGF0LmNdCiAgICAgW2NvbXByZXNzLmMgZGVhdHRhY2suYyBkaC5jIGRpc3BhdGNoLmMgZG5zLmMgZW50cm9weS5jIGZhdGFsLmNdCiAgICAgW2dyb3VwYWNjZXNzLmMgaG9zdGZpbGUuYyBpbmNsdWRlcy5oIGtleC5jIGtleGRoLmMga2V4ZGhjLmNdCiAgICAgW2tleGRocy5jIGtleGdleC5jIGtleGdleGMuYyBrZXhnZXhzLmMga2V5LmMgbG9nLmMgbG9naW5yZWMuY10KICAgICBbbG9naW5yZWMuaCBsb2dpbnRlc3QuYyBtYWMuYyBtYXRjaC5jIG1kLXNoYTI1Ni5jIG1kNWNyeXB0LmMgbWlzYy5jXQogICAgIFttb25pdG9yLmMgbW9uaXRvcl9mZHBhc3MuYyBtb25pdG9yX21tLmMgbW9uaXRvcl93cmFwLmMgbXNnLmNdCiAgICAgW25jaGFuLmMgcGFja2V0LmMgcHJvZ3Jlc3NtZXRlci5jIHJlYWRjb25mLmMgcmVhZHBhc3MuYyByc2EuY10KICAgICBbc2NhcmQuYyBzY3AuYyBzZXJ2Y29uZi5jIHNlcnZlcmxvb3AuYyBzZXNzaW9uLmMgc2Z0cC1jbGllbnQuY10KICAgICBbc2Z0cC1jb21tb24uYyBzZnRwLWdsb2IuYyBzZnRwLXNlcnZlci5jIHNmdHAuYyBzc2gtYWRkLmNdCiAgICAgW3NzaC1hZ2VudC5jIHNzaC1kc3MuYyBzc2gta2V5Z2VuLmMgc3NoLWtleXNjYW4uYyBzc2gta2V5c2lnbi5jXQogICAgIFtzc2gtcmFuZC1oZWxwZXIuYyBzc2gtcnNhLmMgc3NoLmMgc3NoY29ubmVjdC5jIHNzaGNvbm5lY3QxLmNdCiAgICAgW3NzaGNvbm5lY3QyLmMgc3NoZC5jIHNzaGxvZ2luLmMgc3NocHR5LmMgc3NodHR5LmMgdHR5bW9kZXMuY10KICAgICBbdWlkc3dhcC5jIHV1ZW5jb2RlLmMgeG1hbGxvYy5jIG9wZW5ic2QtY29tcGF0L2JzZC1hcmM0cmFuZG9tLmNdCiAgICAgW29wZW5ic2QtY29tcGF0L2JzZC1jbG9zZWZyb20uYyBvcGVuYnNkLWNvbXBhdC9ic2QtY3lnd2luX3V0aWwuY10KICAgICBbb3BlbmJzZC1jb21wYXQvYnNkLWdldHBlZXJlaWQuYyBvcGVuYnNkLWNvbXBhdC9ic2QtbWlzYy5jXQogICAgIFtvcGVuYnNkLWNvbXBhdC9ic2QtbmV4dHN0ZXAuYyBvcGVuYnNkLWNvbXBhdC9ic2Qtc25wcmludGYuY10KICAgICBbb3BlbmJzZC1jb21wYXQvYnNkLXdhaXRwaWQuYyBvcGVuYnNkLWNvbXBhdC9mYWtlLXJmYzI1NTMuY10KICAgICBSQ1NJRCgpIGNhbiBkaWUKICAgLSBkZXJhYWR0QGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAzLzE5IDE4OjUzOjEyCiAgICAgW2tleC5oIG15cHJvcG9zYWwuaF0KICAgICBzcGFjaW5nCiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAzLzIwIDA0OjA3OjIyCiAgICAgW2F1dGgyLWdzcy5jXQogICAgIEdTU0FQSSByZWxhdGVkIGxlYWtzIGRldGVjdGVkIGJ5IENvdmVyaXR5IHZpYSBlbGFkIEFUIG5ldGJzZC5vcmc7CiAgICAgcmV2aWV3ZWQgYnkgc2ltb24gQVQgc3h3Lm9yZy51azsgZGVyYWFkdEAgb2sKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDMvMjAgMDQ6MDc6NDkKICAgICBbZ3NzLWdlbnIuY10KICAgICBtb3JlIEdTU0FQSSByZWxhdGVkIGxlYWtzIGRldGVjdGVkIGJ5IENvdmVyaXR5IHZpYSBlbGFkIEFUIG5ldGJzZC5vcmc7CiAgICAgcmV2aWV3ZWQgYnkgc2ltb24gQVQgc3h3Lm9yZy51azsgZGVyYWFkdEAgb2sKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDMvMjAgMDQ6MDg6MTgKICAgICBbZ3NzLXNlcnYuY10KICAgICBsYXN0IGxvdCBvZiBHU1NBUEkgcmVsYXRlZCBsZWFrcyBkZXRlY3RlZCBieSBDb3Zlcml0eSB2aWEKICAgICBlbGFkIEFUIG5ldGJzZC5vcmc7IHJldmlld2VkIGJ5IHNpbW9uIEFUIHN4dy5vcmcudWs7IGRlcmFhZHRAIG9rCiAgIC0gZGVyYWFkdEBjdnMub3BlbmJzZC5vcmcgMjAwNi8wMy8yMCAxODoxNDowMgogICAgIFttb25pdG9yX3dyYXAuaCBzc2hwdHkuaF0KICAgICBzcHJpbmtsZSB1X2ludCB0aHJvdWdob3V0IHB0eSBzdWJzeXN0ZW0sIG9rIG1hcmt1cwogICAtIGRlcmFhZHRAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDMvMjAgMTg6MjY6NTUKICAgICBbc2Vzc2lvbi5oXQogICAgIGFubm95aW5nIHNwYWNpbmcgZml4ZXMgZ2V0dGluZyBpbiB0aGUgd2F5IG9mIHJlYWwgZGlmZnMKICAgLSBkZXJhYWR0QGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAzLzIwIDE4OjQxOjQzCiAgICAgW2Rucy5jXQogICAgIGNhc3QgeHN0cmR1cCB0byBwcm9wZXJ0IHVfY2hhciAqCiAgIC0gamFrb2JAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDMvMjIgMjE6MTY6MjQKICAgICBbc3NoLjFdCiAgICAgc2ltcGxpZnkgU1NIRlAgZXhhbXBsZTsgb2sgam1jQAogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNi8wMy8yMiAyMToyNzoxNQogICAgIFtkZWF0dGFjay5jIGRlYXR0YWNrLmhdCiAgICAgcmVtb3ZlIElWIHN1cHBvcnQgZnJvbSB0aGUgQ1JDIGF0dGFjayBkZXRlY3RvciwgT3BlblNTSCBoYXMgbmV2ZXIgdXNlZAogICAgIGl0IC0gaXQgb25seSBhcHBsaWVkIHRvIElERUEtQ0ZCLCB3aGljaCB3ZSBkb24ndCBzdXBwb3J0LgogICAgIHByb21wdGVkIGJ5IE5ldEJTRCBDb3Zlcml0eSByZXBvcnQgdmlhIGVsYWQgQVQgbmV0YnNkLm9yZzsKICAgICBmZWVkYmFjayBtYXJrdXNAICJudWtlIGl0IiBkZXJhYWR0QAoKMjAwNjAzMTgKIC0gKGRqbSkgW2F1dGgtcGFtLmNdIEZpeCBtZW1sZWFrIGluIGVycm9yIHBhdGgsIGZyb20gQ292ZXJpdHkgdmlhCiAgIGVsYWQgQVQgTmV0QlNELm9yZwogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L2JzZC1zbnByaW50Zi5jXSBCdWcgIzExNzM6IG1ha2UgZm10aW50KCkgdGFrZQogICBhIExMT05HIHJhdGhlciB0aGFuIGEgbG9uZy4gIEZpeGVzIHNjcCdpbmcgb2YgbGFyZ2UgZmlsZXMgb24gcGxhdGZvcm1zCiAgIHdpdGggbWlzc2luZy9icm9rZW4gc25wcmludGZzLiAgUGF0Y2ggZnJvbSBlLmJvcm92YWMgYXQgYm9tLmdvdi5hdS4KCjIwMDYwMzE2CiAtIChkdHVja2VyKSBbZW50cm9weS5jXSBBZGQgaGVhZGVycyBmb3IgV0lGRVhJVEVEIGFuZCBmcmllbmRzLgogLSAoZHR1Y2tlcikgW2NvbmZpZ3VyZS5hYyBtZC1zaGEyNTYuY10gTmV0QlNEIGhhcyBzaGEyLmggaW4KICAgL3Vzci9pbmNsdWRlL2NyeXB0by4gIEhpbnQgZnJvbSBkam1ALgogLSAodGltKSBba2V4LmMgbXlwcm9wb3NhbC5oIG1kLXNoYTI1Ni5jIG9wZW5ic2QtY29tcGF0L3NoYTIuYyxoXQogICBEaXNhYmxlIHNoYTI1NiB3aGVuIG9wZW5zc2wgPCAwLjkuNy4gUGF0Y2ggZnJvbSBkam1ALgogLSAoZGptKSBba2V4LmNdIFNsaWdodGx5IG1vcmUgY2xlYW4gZGVhY3RpdmF0aW9uIG9mIGRoZ2V4LXNoYTI1NiBvbiBvbGQKICAgT3BlblNTTDsgb2sgdGltCgoyMDA2MDMxNQogLSAoZGptKSBPcGVuQlNEIENWUyBTeW5jOgogICAtIG1zZkBjdnMub3BlbmJzZC5vcmcgMjAwNi8wMi8wNiAxNTo1NDowNwogICAgIFtzc2guMV0KICAgICAtIHR5cG8gZml4CiAgICAgb2sgam1jQAogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wMi8wNiAyMTo0NDo0NwogICAgIFtzc2guMV0KICAgICBtYWtlIHRoaXMgYSBsaXR0bGUgbGVzcyBhbWJpZ3VvdXMuLi4KICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAyLzA3IDAxOjA4OjA0CiAgICAgW2F1dGgtcmhvc3RzLmMgaW5jbHVkZXMuaF0KICAgICBtb3ZlICNpbmNsdWRlIDxuZXRncm91cC5oPiBvdXQgb2YgaW5jbHVkZXMuaDsgb2sgbWFya3VzQAogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDIvMDcgMDE6MTg6MDkKICAgICBbaW5jbHVkZXMuaCBzc2gtYWdlbnQuYyBzc2gta2V5c2Nhbi5jIHNzaGNvbm5lY3QyLmNdCiAgICAgbW92ZSAjaW5jbHVkZSA8c3lzL3F1ZXVlLmg+IG91dCBvZiBpbmNsdWRlcy5oOyBvayBtYXJrdXNACiAgIC0gc3RldmVza0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wMi8wNyAwMTo0MjowMAogICAgIFtjaGFubmVscy5jIGNsaWVudGxvb3AuYyBjbGllbnRsb29wLmggaW5jbHVkZXMuaCBwYWNrZXQuaF0KICAgICBbc2VydmVybG9vcC5jIHNzaHB0eS5jIHNzaHB0eS5oIHNzaHR0eS5jIHR0eW1vZGVzLmNdCiAgICAgbW92ZSAjaW5jbHVkZSA8dGVybWlvcy5oPiBvdXQgb2YgaW5jbHVkZXMuaDsgb2sgbWFya3VzQAogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDIvMDcgMDE6NTI6NTAKICAgICBbc3NodHR5LmNdCiAgICAgImxvZy5oIiBub3QgbmVlZGVkCiAgIC0gc3RldmVza0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wMi8wNyAwMzo0NzowNQogICAgIFtob3N0ZmlsZS5jXQogICAgICJwYWNrZXQuaCIgbm90IG5lZWRlZAogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDIvMDcgMDM6NTk6MjAKICAgICBbZGVhdHRhY2suY10KICAgICBkdXBsaWNhdGUgI2luY2x1ZGUKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAyLzA4IDEyOjE1OjI3CiAgICAgW2F1dGguYyBjbGllbnRsb29wLmMgaW5jbHVkZXMuaCBtaXNjLmMgbW9uaXRvci5jIHJlYWRwYXNzLmNdCiAgICAgW3Nlc3Npb24uYyBzZnRwLmMgc3NoLWFnZW50LmMgc3NoLWtleXNpZ24uYyBzc2guYyBzc2hjb25uZWN0LmNdCiAgICAgW3NzaGQuYyBzc2hwdHkuY10KICAgICBtb3ZlICNpbmNsdWRlIDxwYXRocy5oPiBvdXQgb2YgaW5jbHVkZXMuaDsgb2sgbWFya3VzQAogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDIvMDggMTI6MzI6NDkKICAgICBbaW5jbHVkZXMuaCBtaXNjLmNdCiAgICAgbW92ZSAjaW5jbHVkZSA8bmV0aW5ldC90Y3AuaD4gb3V0IG9mIGluY2x1ZGVzLmg7IG9rIG1hcmt1c0AKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAyLzA4IDEzOjE1OjQ0CiAgICAgW2dzcy1zZXJ2LmMgbW9uaXRvci5jXQogICAgIHNtYWxsIEtORgogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDIvMDggMTQ6MTY6NTkKICAgICBbc3NoY29ubmVjdC5jXQogICAgIDxvcGVuc3NsL2JuLmg+IG5vdCBuZWVkZWQKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAyLzA4IDE0OjMxOjMwCiAgICAgW2luY2x1ZGVzLmggc3NoLWFnZW50LmMgc3NoLWtleXNjYW4uYyBzc2guY10KICAgICBtb3ZlICNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4gb3V0IG9mIGluY2x1ZGVzLmg7IG9rIG1hcmt1c0AKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAyLzA4IDE0OjM4OjE4CiAgICAgW2luY2x1ZGVzLmggcGFja2V0LmNdCiAgICAgbW92ZSAjaW5jbHVkZSA8bmV0aW5ldC9pbl9zeXN0bS5oPiBhbmQgPG5ldGluZXQvaXAuaD4gb3V0IG9mCiAgICAgaW5jbHVkZXMuaDsgb2sgbWFya3VzQAogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDIvMDggMjM6NTE6MjQKICAgICBbaW5jbHVkZXMuaCBzY3AuYyBzZnRwLWdsb2IuYyBzZnRwLXNlcnZlci5jXQogICAgIG1vdmUgI2luY2x1ZGUgPGRpcmVudC5oPiBvdXQgb2YgaW5jbHVkZXMuaDsgb2sgbWFya3VzQAogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDIvMDkgMDA6MzI6MDcKICAgICBbaW5jbHVkZXMuaF0KICAgICAjaW5jbHVkZSA8c3lzL2VuZGlhbi5oPiBub3QgbmVlZGVkOyBvayBkam1ACiAgICAgTkIuIElEIFN5bmMgb25seSAtIHdlIHN0aWxsIG5lZWQgdGhpcyAoYnV0IGl0IG1heSBtb3ZlIGxhdGVyKQogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wMi8wOSAxMDoxMDo0NwogICAgIFtzc2hkLjhdCiAgICAgLSBtb3ZlIHNvbWUgdGV4dCBpbnRvIGEgQ0FWRUFUUyBzZWN0aW9uCiAgICAgLSBtZXJnZSB0aGUgQ09NTUFORCBFWEVDVVRJT04uLi4gc2VjdGlvbiBpbnRvIEFVVEhFTlRJQ0FUSU9OCiAgIC0gc3RldmVza0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wMi8xMCAwMDoyNzoxMwogICAgIFtjaGFubmVscy5jIGNsaWVudGxvb3AuYyBpbmNsdWRlcy5oIG1pc2MuYyBwcm9ncmVzc21ldGVyLmMgc2Z0cC5jXQogICAgIFtzc2guYyBzc2hkLmMgc3NocHR5LmNdCiAgICAgbW92ZSAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+IG91dCBvZiBpbmNsdWRlcy5oOyBvayBtYXJrdXNACiAgIC0gc3RldmVza0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wMi8xMCAwMTo0NDoyNwogICAgIFtpbmNsdWRlcy5oIG1vbml0b3IuYyByZWFkcGFzcy5jIHNjcC5jIHNlcnZlcmxvb3AuYyBzZXNzaW9uLmN/XQogICAgIFtzZnRwLmMgc3NoY29ubmVjdC5jIHNzaGNvbm5lY3QyLmMgc3NoZC5jXQogICAgIG1vdmUgI2luY2x1ZGUgPHN5cy93YWl0Lmg+IG91dCBvZiBpbmNsdWRlcy5oOyBvayBtYXJrdXNACiAgIC0gb3R0b0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wMi8xMSAxOTozMToxOAogICAgIFthdG9taWNpby5jXQogICAgIHR5cGUgY29ycmVjdG5lc3M7IGZyb20gUmF5IExhaSBpbiBQUiA1MDExOyBvayBtaWxsZXJ0QAogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNi8wMi8xMiAwNjo0NTozNAogICAgIFtzc2guYyBzc2hfY29uZmlnLjVdCiAgICAgYWRkIGEgJWwgZXhwYW5zaW9uIGNvZGUgdG8gdGhlIENvbnRyb2xQYXRoLCB3aGljaCBpcyBmaWxsZWQgaW4gd2l0aCB0aGUKICAgICBsb2NhbCBob3N0bmFtZSBhdCBydW50aW1lLiBSZXF1ZXN0ZWQgYnkgaGVubmluZ0AgdG8gYXZvaWQgc29tZSBwcm9ibGVtcwogICAgIHdpdGggL2hvbWUgb24gTkZTOyBvayBkdHVja2VyQAogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNi8wMi8xMiAxMDo0NDoxOAogICAgIFtyZWFkY29uZi5jXQogICAgIHJhaXNlIGVycm9yIHdoZW4gdGhlIHVzZXIgc3BlY2lmaWVzIGEgUmVrZXlMaW1pdCB0aGF0IGlzIHNtYWxsZXIgdGhhbiAxNgogICAgICh0aGUgc21hbGxlc3Qgb2Ygb3VyIGNpcGhlcidzIGJsb2Nrc2l6ZSkgb3IgYmlnIGVub3VnaCB0byBjYXVzZSBpbnRlZ2VyCiAgICAgd3JhcGFyb3VuZDsgb2sgJiBmZWVkYmFjayBkdHVja2VyQAogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wMi8xMiAxMDo0OTo0NAogICAgIFtzc2hfY29uZmlnLjVdCiAgICAgc2xpZ2h0IHJld29yZGluZzsgb2sgZGptCiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAyLzEyIDEwOjUyOjQxCiAgICAgW3NzaGQuOF0KICAgICByZXdvcmsgdGhlIGRlc2NyaXB0aW9uIG9mIGF1dGhvcml6ZWRfa2V5cyBhIGxpdHRsZTsKICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDIvMTIgMTc6NTc6MTkKICAgICBbc3NoZC44XQogICAgIHNvcnQgdGhlIGxpc3Qgb2Ygb3B0aW9ucyBwZXJtaXNzYWJsZSB3LyBhdXRob3JpemVkX2tleXM7CiAgICAgb2sgZGptIGR0dWNrZXIKICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDIvMTMgMTA6MTY6MzkKICAgICBbc3NoZC44XQogICAgIG5vIG5lZWQgdG8gc3Vic2VjdGlvbiB0aGUgYXV0aG9yaXplZF9rZXlzIGV4YW1wbGVzIC0gaW5zdGVhZCwgY29udmVydAogICAgIHRoaXMgdG8gbG9vayBsaWtlIGFuIGFjdHVhbCBmaWxlLiBhbHNvIHVzZSBwcm90byAyIGtleXMsIGFuZCB1c2UgSUVURgogICAgIGV4YW1wbGUgYWRkcmVzc2VzOwogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wMi8xMyAxMDoyMToyNQogICAgIFtzc2hkLjhdCiAgICAgc21hbGwgdHdlYWtzIGZvciB0aGUgc3NoX2tub3duX2hvc3RzIHNlY3Rpb247CiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAyLzEzIDExOjAyOjI2CiAgICAgW3NzaGQuOF0KICAgICB0dXJuIHRoaXMgaW50byBhbiBleGFtcGxlIHNzaF9rbm93bl9ob3N0cyBmaWxlOyBvayBkam0KICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDIvMTMgMTE6MDg6NDMKICAgICBbc3NoZC44XQogICAgIC0gYXZvaWQgbmFzdHkgbGluZSBzcGxpdAogICAgIC0gYConIGRvZXMgbm90IG5lZWQgdG8gYmUgZXNjYXBlZAogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wMi8xMyAxMToyNzoyNQogICAgIFtzc2hkLjhdCiAgICAgc29ydCBGSUxFUyBhbmQgdXNlIGEgLWNvbXBhY3QgbGlzdDsKICAgLSBkYXZpZEBjdnMub3BlbmJzZC5vcmcgMjAwNi8wMi8xNSAwNTowODoyNAogICAgIFtzZnRwLWNsaWVudC5jXQogICAgIHR5cG8gaW4gY29tbWVudDsgb2sgZGptQAogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wMi8xNSAxNjo1MzoyMAogICAgIFtzc2guMV0KICAgICByZW1vdmUgdGhlIElFVEYgZHJhZnQgcmVmZXJlbmNlcyBhbmQgcmVwbGFjZSB0aGVtIHdpdGggc29tZSB1cGRhdGVkIFJGQ3M7CiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAyLzE1IDE2OjU1OjMzCiAgICAgW3NzaGQuOF0KICAgICByZW1vdmUgaWV0ZiBkcmFmdCByZWZlcmVuY2VzOyBSRkMgbGlzdCBub3cgbWFpbnRhaW5lZCBpbiBzc2guMTsKICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDIvMTYgMDk6MDU6MzQKICAgICBbc3NoZC44XQogICAgIHN5bmMgc29tZSBvZiB0aGUgRklMRVMgZW50cmllcyB3LyBzc2guMTsKICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDIvMTkgMTk6NTI6MTAKICAgICBbc3NoZC44XQogICAgIG1vdmUgdGhlIHNzaHJjIHN0dWZmIG91dCBvZiBGSUxFUywgYW5kIGludG8gaXRzIG93biBzZWN0aW9uOgogICAgIEZJTEVTIGlzIG5vdCBhIGdvb2QgcGxhY2UgdG8gZG9jdW1lbnQgaG93IHN0dWZmIHdvcmtzOwogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wMi8xOSAyMDowMjoxNwogICAgIFtzc2hkLjhdCiAgICAgc3luYyB0aGUgKHMpaG9zdHMuZXF1aXYgRklMRVMgZW50cmllcyB3LyB0aG9zZSBmcm9tIHNzaC4xOwogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wMi8xOSAyMDowNTowMAogICAgIFtzc2hkLjhdCiAgICAgZ3JhbW1hcjsKICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDIvMTkgMjA6MTI6MjUKICAgICBbc3NoX2NvbmZpZy41XQogICAgIGFkZCBzb21lIHZlcnRpY2FsIHNwYWNlOwogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDIvMjAgMTY6MzY6MTUKICAgICBbYXV0aGZkLmMgY2hhbm5lbHMuYyBpbmNsdWRlcy5oIHNlc3Npb24uYyBzc2gtYWdlbnQuYyBzc2guY10KICAgICBtb3ZlICNpbmNsdWRlIDxzeXMvdW4uaD4gb3V0IG9mIGluY2x1ZGVzLmg7IG9rIGRqbUAKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAyLzIwIDE3OjAyOjQ0CiAgICAgW2NsaWVudGxvb3AuYyBpbmNsdWRlcy5oIG1vbml0b3IuYyBwcm9ncmVzc21ldGVyLmMgc2NwLmNdCiAgICAgW3NlcnZlcmxvb3AuYyBzZXNzaW9uLmMgc2Z0cC5jIHNzaC1hZ2VudC5jIHNzaC5jIHNzaGQuY10KICAgICBtb3ZlICNpbmNsdWRlIDxzaWduYWwuaD4gb3V0IG9mIGluY2x1ZGVzLmg7IG9rIG1hcmt1c0AKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAyLzIwIDE3OjE5OjU0CiAgICAgW2F1dGgtcmhvc3RzLmMgYXV0aC1yc2EuYyBhdXRoLmMgYXV0aDItbm9uZS5jIGF1dGgyLXB1YmtleS5jXQogICAgIFthdXRoZmlsZS5jIGNsaWVudGxvb3AuYyBpbmNsdWRlcy5oIHJlYWRjb25mLmMgc2NwLmMgc2Vzc2lvbi5jXQogICAgIFtzZnRwLWNsaWVudC5jIHNmdHAtY29tbW9uLmMgc2Z0cC1jb21tb24uaCBzZnRwLWdsb2IuY10KICAgICBbc2Z0cC1zZXJ2ZXIuYyBzZnRwLmMgc3NoLWFkZC5jIHNzaC1rZXlnZW4uYyBzc2guYyBzc2hjb25uZWN0LmNdCiAgICAgW3NzaGNvbm5lY3QyLmMgc3NoZC5jIHNzaHB0eS5jXQogICAgIG1vdmUgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+IG91dCBvZiBpbmNsdWRlcy5oOyBvayBtYXJrdXNACiAgIC0gc3RldmVza0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wMi8yMiAwMDowNDo0NQogICAgIFtjYW5vaG9zdC5jIGNsaWVudGxvb3AuYyBpbmNsdWRlcy5oIG1hdGNoLmMgcmVhZGNvbmYuYyBzY3AuYyBzc2guY10KICAgICBbc3NoY29ubmVjdC5jXQogICAgIG1vdmUgI2luY2x1ZGUgPGN0eXBlLmg+IG91dCBvZiBpbmNsdWRlcy5oOyBvayBkam1ACiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAyLzI0IDEwOjI1OjE0CiAgICAgW3NzaF9jb25maWcuNV0KICAgICBhZGQgc2VjdGlvbiBvbiBwYXR0ZXJuczsKICAgICBmcm9tIGR0dWNrZXIgKyBteXNlbGYKICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDIvMjQgMTA6MzM6NTQKICAgICBbc3NoZF9jb25maWcuNV0KICAgICBzaWducG9zdCB0byBQQVRURVJOUzsKICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDIvMjQgMTA6Mzc6MDcKICAgICBbc3NoX2NvbmZpZy41XQogICAgIHRpZHkgdXAgdGhlIHJlZnMgdG8gUEFUVEVSTlM7CiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAyLzI0IDEwOjM5OjUyCiAgICAgW3NzaGQuOF0KICAgICBzaWducG9zdCB0byBQQVRURVJOUyBzZWN0aW9uOwogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wMi8yNCAyMDoyMjoxNgogICAgIFtzc2gta2V5c2lnbi44IHNzaF9jb25maWcuNSBzc2hkX2NvbmZpZy41XQogICAgIHNvbWUgY29uc2lzdGVuY3kgZml4ZXM7CiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAyLzI0IDIwOjMxOjMxCiAgICAgW3NzaC4xIHNzaF9jb25maWcuNSBzc2hkLjggc3NoZF9jb25maWcuNV0KICAgICBtb3JlIGNvbnNpc3RlbmN5IGZpeGVzOwogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wMi8yNCAyMzoyMDowNwogICAgIFtzc2hfY29uZmlnLjVdCiAgICAgc29tZSBncmFtbWFyL3dvcmRpbmcgZml4ZXM7CiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAyLzI0IDIzOjQzOjU3CiAgICAgW3NzaGRfY29uZmlnLjVdCiAgICAgc29tZSBncmFtbWFyL3dvcmRpbmcgZml4ZXM7CiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAyLzI0IDIzOjUxOjE3CiAgICAgW3NzaGRfY29uZmlnLjVdCiAgICAgb29wcyAtIGJpdHMgaSBtaXNzZWQ7CiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAyLzI1IDEyOjI2OjE3CiAgICAgW3NzaF9jb25maWcuNV0KICAgICBkb2N1bWVudCB0aGUgcG9zc2libGUgdmFsdWVzIGZvciBLYmRJbnRlcmFjdGl2ZURldmljZXM7CiAgICAgaGVscC9vayBkdHVja2VyCiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAyLzI1IDEyOjI4OjM0CiAgICAgW3NzaGRfY29uZmlnLjVdCiAgICAgZG9jdW1lbnQgdGhlIG9yZGVyIGluIHdoaWNoIGFsbG93L2RlbnkgZGlyZWN0aXZlcyBhcmUgcHJvY2Vzc2VkOwogICAgIGhlbHAvb2sgZHR1Y2tlcgogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wMi8yNiAxNzoxNzoxOAogICAgIFtzc2hfY29uZmlnLjVdCiAgICAgbW92ZSBQQVRURVJOUyB0byB0aGUgZW5kIG9mIHRoZSBtYWluIGJvZHk7IHJlcXVlc3RlZCBieSBkdHVja2VyCiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAyLzI2IDE4OjAxOjEzCiAgICAgW3NzaGRfY29uZmlnLjVdCiAgICAgc3Vic2VjdGlvbiBpcyBwb2ludGxlc3MgaGVyZTsKICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDIvMjYgMTg6MDM6MTAKICAgICBbc3NoX2NvbmZpZy41XQogICAgIGNvbW1hOwogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNi8wMi8yOCAwMToxMDoyMQogICAgIFtzZXNzaW9uLmNdCiAgICAgZml4IGxvZ291dCByZWNvcmRpbmcgd2hlbiBwcml2aWxlZ2Ugc2VwYXJhdGlvbiBpcyBkaXNhYmxlZCwgYW5hbHlzaXMgYW5kCiAgICAgcGF0Y2ggZnJvbSB2aW5zY2hlbiBhdCByZWRoYXQuY29tOyB0ZXN0ZWQgYnkgZHR1Y2tlckAgb2sgZGVyYWFkdEAKICAgICBOQi4gSUQgc3luYyBvbmx5IC0gcGF0Y2ggYWxyZWFkeSBpbiBwb3J0YWJsZQogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNi8wMy8wNCAwNDoxMjo1OAogICAgIFtzZXJ2ZXJsb29wLmNdCiAgICAgbW92ZSBhIGRlYnVnKCkgb3V0c2lkZSBvZiBhIHNpZ25hbCBoYW5kbGVyOyBvayBtYXJrdXNAIGEgbGl0dGxlIHdoaWxlIGJhY2sKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDMvMTIgMDQ6MjM6MDcKICAgICBbc3NoLmNdCiAgICAga25mIG5pdAogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNi8wMy8xMyAwODoxNjowMAogICAgIFtzc2hkLmNdCiAgICAgZG9uJ3QgbG9nIHRoYXQgd2UgYXJlIGxpc3RlbmluZyBvbiBhIHNvY2tldCBiZWZvcmUgdGhlIGxpc3RlbigpIGNhbGwKICAgICBhY3R1YWxseSBzdWNjZWVkcywgYnogIzExNjIgcmVwb3J0ZWQgYnkgU2VudGhpbCBLdW1hcjsgb2sgZHR1Y2tlckAKICAgLSBkdHVja2VyQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAzLzEzIDA4OjMzOjAwCiAgICAgW3BhY2tldC5jXQogICAgIFNldCBUQ1BfTk9ERUxBWSBmb3IgYWxsIGNvbm5lY3Rpb25zIG5vdCBqdXN0ICJpbnRlcmFjdGl2ZSIgb25lcy4gIEZpeGVzCiAgICAgcG9vciBwZXJmb3JtYW5jZSBhbmQgcHJvdG9jb2wgc3RhbGxzIHVuZGVyIHNvbWUgbmV0d29yayBjb25kaXRpb25zIChtaW5kcm90CiAgICAgYnVncyAjNTU2IGFuZCAjOTgxKS4gUGF0Y2ggb3JpZ2luYWxseSBmcm9tIG1hcmt1c0AsIG9rIGRqbUAKICAgLSBkdHVja2VyQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAzLzEzIDA4OjQzOjE2CiAgICAgW3NzaC1rZXlnZW4uY10KICAgICBNYWtlIHNzaC1rZXlnZW4gaGFuZGxlIENSIGFuZCBDUkxGIGxpbmUgdGVybWluYXRpb24gd2hlbiBjb252ZXJ0aW5nIElFVEYKICAgICBmb3JtYXQga2V5cywgaW4gYWRpdGlvbiB0byB2YW5pbGxhIExGLiAgbWluZHJvdCAjMTE1NywgdGVzdGVkIGJ5IENocmlzCiAgICAgUGVwcGVyLCBvayBkam1ACiAgIC0gZHR1Y2tlckBjdnMub3BlbmJzZC5vcmcgMjAwNi8wMy8xMyAxMDoxNDoyOQogICAgIFttaXNjLmMgc3NoX2NvbmZpZy41IHNzaGRfY29uZmlnLjVdCiAgICAgQWxsb3cgY29uZmlnIGRpcmVjdGl2ZXMgdG8gY29udGFpbiB3aGl0ZXNwYWNlIGJ5IHN1cnJvdW5kaW5nIHRoZW0gYnkgZG91YmxlCiAgICAgcXVvdGVzLiAgbWluZHJvdCAjNDgyLCBtYW4gcGFnZSBoZWxwIGZyb20gam1jQCwgb2sgZGptQAogICAtIGR0dWNrZXJAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDMvMTMgMTA6MjY6NTIKICAgICBbYXV0aGZpbGUuYyBhdXRoZmlsZS5oIHNzaC1hZGQuY10KICAgICBNYWtlIHNzaC1hZGQgY2hlY2sgZmlsZSBwZXJtaXNzaW9ucyBiZWZvcmUgYXR0ZW1wdGluZyB0byBsb2FkIHByaXZhdGUKICAgICBrZXkgZmlsZXMgbXVsdGlwbGUgdGltZXM7IGl0IHdpbGwgZmFpbCBhbnl3YXkgYW5kIHRoaXMgcHJldmVudHMgY29uZnVzaW5nCiAgICAgbXVsdGlwbGUgcHJvbXB0cyBhbmQgd2FybmluZ3MuICBtaW5kcm90ICMxMTM4LCBvayBkam1ACiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAzLzE0IDAwOjE1OjM5CiAgICAgW2Nhbm9ob3N0LmNdCiAgICAgbG9nIHRoZSBvcmlnaW5hdGluZyBhZGRyZXNzIGFuZCBub3QganVzdCB0aGUgbmFtZSB3aGVuIGEgcmV2ZXJzZQogICAgIG1hcHBpbmcgY2hlY2sgZmFpbHMsIHJlcXVlc3RlZCBieSBsaW51eCBBVCBsaW51b24uY29tCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAzLzE0IDE2OjMyOjQ4CiAgICAgW3NzaF9jb25maWcuNSBzc2hkX2NvbmZpZy41XQogICAgICpBbGl2ZUNvdW50TWF4IGFwcGxpZXMgdG8gcHJvdGNvbCB2MiBvbmx5OyBvayBkdHVja2VyLCBkam0KICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDMvMDcgMDk6MDc6NDAKICAgICBba2V4LmMga2V4LmggbW9uaXRvci5jIG15cHJvcG9zYWwuaCBzc2gta2V5c2Nhbi5jIHNzaGNvbm5lY3QyLmMgc3NoZC5jXQogICAgIEltcGxlbWVudCB0aGUgZGlmZmllLWhlbGxtYW4tZ3JvdXAtZXhjaGFuZ2Utc2hhMjU2IGtleSBleGNoYW5nZSBtZXRob2QKICAgICB1c2luZyB0aGUgU0hBMjU2IGNvZGUgaW4gbGliYyAoYW5kIHdyYXBwZXIgdG8gbWFrZSBpdCBpbnRvIGFuIE9wZW5TU0wKICAgICBFVlApLCBpbnRlcm9wIHRlc3RlZCBhZ2FpbnN0IENWUyBQdVRUWQogICAgIE5CLiBubyBwb3J0YWJpbGl0eSBiaXRzIGNvbW1pdHRlZCB5ZXQKIC0gKGRqbSkgW2NvbmZpZ3VyZS5hYyBkZWZpbmVzLmgga2V4LmMgbWQtc2hhMjU2LmNdCiAgIFtvcGVuYnNkLWNvbXBhdC9zaGEyLmggb3BlbmJzZC1jb21wYXQvb3BlbmJzZC1jb21wYXQuaF0KICAgW29wZW5ic2QtY29tcGF0L3NoYTIuY10gRmlyc3Qgc3RhYiBhdCBwb3J0YWJpbGl0eSBnbHVlIGZvciBTSEEyNTYKICAgS0VYIHN1cHBvcnQsIHNob3VsZCB3b3JrIHdpdGggbGliYyBTSEEyNTYgc3VwcG9ydCBvciBPcGVuU1NMCiAgIEVWUF9zaGEyNTYgaWYgcHJlc2VudAogLSAoZGptKSBbaW5jbHVkZXMuaF0gUmVzdG9yZSBhY2NpZGVudGFsbHkgZHJvcHBlZCBuZXRpbmV0L2luLmgKIC0gKGRqbSkgW01ha2VmaWxlLmluIG9wZW5ic2QtY29tcGF0L01ha2VmaWxlLmluXSBBZGQgYWRkZWQgZmlsZXMKIC0gKGRqbSkgW21kLXNoYTI1Ni5jIGNvbmZpZ3VyZS5hY10gbWQtc2hhMjU2LmMgbmVlZHMgc2hhMi5oIGlmIHByZXNlbnQKIC0gKGRqbSkgW3JlZ3Jlc3MvLmN2c2lnbm9yZV0gSWdub3JlIE1ha2VmaWxlIGhlcmUKIC0gKGRqbSkgW2xvZ2lucmVjLmNdIE5lZWQgc3RhdC5oCiAtIChkam0pIFtvcGVuYnNkLWNvbXBhdC9zaGEyLmhdIEF2b2lkIGluY2x1ZGUgbWFjcm8gY2xhc2ggd2l0aAogICBzeXN0ZW0gc2hhMi5oCiAtIChkam0pIFtzc2gtcmFuZC1oZWxwZXIuY10gTmVlZHMgYSBidW5jaCBvZiBoZWFkZXJzCiAtIChkam0pIFtzc2gtYWdlbnQuY10gUmVzdG9yZSBkcm9wcGVkIHN0YXQuaAogLSAoZGptKSBbb3BlbmJzZC1jb21wYXQvc2hhMi5oIG9wZW5ic2QtY29tcGF0L3NoYTIuY10gQ29tbWVudCBvdXQgCiAgIFNIQTM4NCwgd2hpY2ggd2UgZG9uJ3QgbmVlZCBhbmQgZG9lc24ndCBjb21waWxlIHdpdGhvdXQgdHdlYWtzCiAtIChkam0pIFthdXRoLXBhbS5jIGNsaWVudGxvb3AuYyBpbmNsdWRlcy5oIG1vbml0b3IuYyBzZXNzaW9uLmNdCiAgIFtzZnRwLWNsaWVudC5jIHNzaC1rZXlzaWduLmMgc3NoLmMgc3NoY29ubmVjdC5jIHNzaGNvbm5lY3QyLmNdCiAgIFtzc2hkLmMgb3BlbmJzZC1jb21wYXQvYnNkLW1pc2MuYyBvcGVuYnNkLWNvbXBhdC9ic2Qtb3BlbnB0eS5jXQogICBbb3BlbmJzZC1jb21wYXQvZ2xvYi5jIG9wZW5ic2QtY29tcGF0L21rdGVtcC5jXQogICBbb3BlbmJzZC1jb21wYXQvcmVhZHBhc3NwaHJhc2UuY10gTG90cyBvZiBpbmNsdWRlIGZpeGVzIGZvcgogICBPcGVuU29sYXJpcwogLSAodGltKSBbaW5jbHVkZXMuaF0gcHV0IHN5cy9zdGF0LmggYmFjayBpbiB0byBxdWlldCBzb21lICJtYWNybyByZWRlZmluZWQ6IgogLSAodGltKSBbb3BlbnNzaC9zc2hwdHkuYyBvcGVuc3NoL29wZW5ic2QtY29tcGF0L3BvcnQtdHVuLmNdIHB1dCBpbiBzb21lCiAgIGluY2x1ZGVzIHJlbW92ZWQgZnJvbSBpbmNsdWRlcy5oCiAtIChkdHVja2VyKSBbY29uZmlndXJlLmFjXSBGaXggZ2xvYiB0ZXN0IGNvbnZlcnNpb24gdG8gQUNfVFJZX0NPTVBJTEUKIC0gKGRqbSkgW2luY2x1ZGVzLmhdIFB1dCBiYWNrIHBhdGhzLmgsIGl0IGlzIG5lZWRlZCBpbiBkZWZpbmVzLmgKIC0gKGR0dWNrZXIpIFtvcGVuYnNkLWNvbXBhdC9vcGVuYnNkLWNvbXBhdC5oXSBBSVggKGF0IGxlYXN0KSBuZWVkcwogICBzeXMvaW9jdGwuaCBmb3Igc3RydWN0IHdpbnNpemUuCiAtIChkdHVja2VyKSBbY29uZmlndXJlLmFjXSBsb2dpbl9jYXAuaCByZXF1aXJlcyBzeXMvdHlwZXMuaCBvbiBOZXRCU0QuCgoyMDA2MDMxMwogLSAoZHR1Y2tlcikgW2NvbmZpZ3VyZS5hY10gQnVnICMxMTcxOiBEb24ndCB1c2UgcHJpbnRmKCIlbGxkIiwgbG9uZ2xvbmcpCiAgIHNpbmNlIG5vdCBhbGwgcGxhdGZvcm1zIHN1cHBvcnQgaXQuICBJbnN0ZWFkLCB1c2UgaW50ZXJuYWwgZXF1aXZhbGVudCB3aGlsZQogICBjb21wdXRpbmcgTExPTkdfTUlOIGFuZCBMTE9OR19NQVguICBSZW1vdmUgc3BlY2lhbCBjYXNlIGZvciBhbHBoYS1kZWMtb3NmKgogICBhcyBpdCdzIG5vIGxvbmdlciByZXF1aXJlZC4gIFRlc3RlZCBieSBCZXJuaGFyZCBTaW1vbiwgb2sgZGptQAoKMjAwNjAzMDQKIC0gKGR0dWNrZXIpIFtjb250cmliL2N5Z3dpbi9zc2gtaG9zdC1jb25maWddIFJlcXVpcmUgdXNlIG9mIGxhc3Rsb2cgYXMgYQogICBmaWxlIHJhdGhlciB0aGFuIGRpcmVjdG9yeSwgcmVxdWlyZWQgYXMgQ3lnd2luIHdpbGwgYmUgaW1wb3J0aW5nIGxhc3Rsb2coMSkuCiAgIEFsc28gdGlnaHRlbnMgdXAgcGVybWlzc2lvbnMgb24gdGhlIGZpbGUuICBQYXRjaCBmcm9tIHZpbnNjaGVuQHJlZGhhdC5jb20uCiAtIChkdHVja2VyKSBbZ3NzLXNlcnYta3JiNS5jXSBCdWcgIzExNjY6IENvcnJlY3QgI2lmZGVmcyBmb3IgZ3NzYXBpX2tyYjUuaAogICBpbmNsdWRlcy4gIFBhdGNoIGZyb20gZ2VudG9vLnJpdmVycmF0IGF0IGdtYWlsLmNvbS4KCjIwMDYwMjI2CiAtIChkdHVja2VyKSBbY29uZmlndXJlLmFjXSBCdWcgIzExNTY6IFFOWCBhcHBhcmVudGx5IG5lZWRzIFNTSERfQUNRVUlSRVNfQ1RUWQogICBwYXRjaCBmcm9tIGtyYWFpIGF0IGZ0YmZzLm9yZy4KCjIwMDYwMjIzCiAtIChkdHVja2VyKSBbc3NoZF9jb25maWcgc3NoZF9jb25maWcuNV0gVXBkYXRlIFVzZVBBTSB0byByZWZsZWN0IGN1cnJlbnQKICAgcmVhbGl0eS4gIFBvaW50ZWQgb3V0IGJ5IHRyeXBvbnJhaiBhdCBnbWFpbC5jb20uCgoyMDA2MDIyMgogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L29wZW5zc2wtY29tcGF0LntjLGh9XSBNaW5vciB0aWR5IHVwOiBvbmx5CiAgIGNvbXBpbGUgaW4gY29tcGF0IGNvZGUgaWYgcmVxdWlyZWQuCgoyMDA2MDIyMQogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L29wZW5zc2wtY29tcGF0LmhdIFByZXZlbnQgd2FybmluZyBhYm91dAogICByZWRlZmluaXRpb24gb2YgU1NMZWF5X2FkZF9hbGxfYWxnb3JpdGhtcy4KCjIwMDYwMjIwCiAtIChkdHVja2VyKSBbSU5TVEFMTCBjb25maWd1cmUuYWMgb3BlbmJzZC1jb21wYXQvb3BlbnNzbC1jb21wYXQue2MsaH1dCiAgIEFkZCBvcHRpb25hbCBlbmFibGluZyBvZiBPcGVuU1NMJ3MgKGhhcmR3YXJlKSBFbmdpbmUgc3VwcG9ydCwgdmlhCiAgIGNvbmZpZ3VyZSAtLXdpdGgtc3NsLWVuZ2luZS4gIEJhc2VkIGluIHBhcnQgb24gYSBkaWZmIGJ5IG1pY2hhbCBhdAogICBsb2dpeC5jei4KCjIwMDYwMjE5CiAtIChkdHVja2VyKSBbTWFrZWZpbGUuaW4gY29uZmlndXJlLmFjLCBhZGRlZCBvcGVuYnNkLWNvbXBhdC9yZWdyZXNzL10KICAgQWRkIGZpcnN0IGF0dGVtcHQgYXQgcmVncmVzcyB0ZXN0cyBmb3IgY29tcGF0IGxpYnJhcnkuICBvayBkam1ACgoyMDA2MDIxNAogLSAodGltKSBbYnVpbGRwa2cuc2guaW5dIE1ha2UgdGhlIG5hbWVzIGNvbnNpc3RlbnQuCiAgIHMvcGtnX3Bvc3RfbWFrZV9pbnN0YWxsX2ZpeGVzLnNoL3BrZy1wb3N0LW1ha2UtaW5zdGFsbC1maXhlcy5zaC8gT0sgZHR1Y2tlckAKCjIwMDYwMjEyCiAtIChkdHVja2VyKSBbb3BlbmJzZC1jb21wYXQvYnNkLWN5Z3dpbl91dGlsLmNdIE1ha2UgbG9vcCBjb3VudGVyIHVuc2lnbmVkCiAgIHRvIHNpbGVuY2UgY29tcGlsZXIgd2FybmluZywgZnJvbSB2aW5zY2hlbiBhdCByZWRoYXQuY29tLgogLSAodGltKSBbY29uZmlndXJlLmFjXSBCdWcgIzExNDkuIERpc2FibGUgL2V0Yy9kZWZhdWx0L2xvZ2luIGNoZWNrIGZvciBRTlguCiAtIChkdHVja2VyKSBbUkVBRE1FIHZlcnNpb24uaCBjb250cmliL2NhbGRlcmEvb3BlbnNzaC5zcGVjCiAgIGNvbnRyaWIvcmVkaGF0L29wZW5zc2guc3BlYyBjb250cmliL3N1c2Uvb3BlbnNzaC5zcGVjXSBCdW1wIHZlcnNpb24KICAgc3RyaW5ncyB0byBtYXRjaCA0LjNwMiByZWxlYXNlLgoKMjAwNjAyMDgKIC0gKHRpbSkgW3Nlc3Npb24uY10gTG9nb3V0IHJlY29yZHMgd2VyZSBub3QgdXBkYXRlZCBvbiBzeXN0ZW1zIHdpdGgKICAgcG9zdCBhdXRoIHByaXZzZXAgZGlzYWJsZWQgZHVlIHRvIGJ1ZyAxMDg2IGNoYW5nZXMuIEFuYWx5c2lzIGFuZCBwYXRjaAogICBieSB2aW5zY2hlbiBhdCByZWRoYXQuY29tLiBPSyB0aW1ALCBkdHVja2VyQC4KIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWNdIFR5cG8gaW4gVWx0cml4IGFuZCBOZXdzT1Mgc2VjdGlvbnMgKE5FRURfU0VUUFJHUAogICAtPiBORUVEX1NFVFBHUlApLCByZXBvcnRlZCBieSBCZXJuaGFyZCBTaW1vbi4gIG9rIHRpbUAKCjIwMDYwMjA2CiAtICh0aW0pIFtjb25maWd1cmUuYWNdIFJlbW92ZSB1bm5lY2Vzc2FyeSB0ZXN0cyBmb3IgbmV0L2lmLmggYW5kIAogICBuZXRpbmV0L2luX3N5c3RtLmguIE9LIGR0dWNrZXJALgoKMjAwNjAyMDUKIC0gKHRpbSkgW2NvbmZpZ3VyZS5hY10gQWRkIEFDX1JFVklTSU9OLiBBZGQgc3lzL3RpbWUuaCB0byBsYXN0bG9nLmggdGVzdAogICBmb3IgU29sYXJpcy4gT0sgZHR1Y2tlckAuCiAtICh0aW0pIFtjb25maWd1cmUuYWNdIEJ1ZyAjMTE0OS4gQ2hhbmdlcyBpbiBRTlggc2VjdGlvbiBvbmx5LiBQYXRjaCBieQogICBrcmFhaSBhdCBmdGJmcy5vcmcuCgoyMDA2MDIwMwogLSAodGltKSBbY29uZmlndXJlLmFjXSB0ZXN0IGZvciBlZ3JlcCAoQUNfUFJPR19FR1JFUCkgYmVmb3JlIGZpcnN0CiAgIEFDX0NIRUNLX0hFQURFUlMgdGVzdC4gV2l0aG91dCBpdCwgaWYgQUNfQ0hFQ0tfSEVBREVSUyBpcyBmaXJzdCBydW4KICAgYnkgYSBwbGF0Zm9ybSBzcGVjaWZpYyBjaGVjaywgYnVpbHRpbiBzdGFuZGFyZCBpbmNsdWRlcyB0ZXN0cyB3aWxsIGJlCiAgIHNraXBwZWQgb24gdGhlIG90aGVyIHBsYXRmb3Jtcy4KICAgQW5hbHlzaXMgYW5kIHN1Z2dlc3Rpb24gYnkgdmluc2NoZW4gYXQgcmVkaGF0LmNvbSwgcGF0Y2ggYnkgZHR1Y2tlckAuCiAgIE9LIHRpbUAsIGRqbUAuCgoyMDA2MDIwMgogLSAoZHR1Y2tlcikgW2NvbmZpZ3VyZS5hY10gQnVnICMxMTQ4OiBGaXggImNyaXBwbGVkIEFFUyIgdGVzdCBzbyB0aGF0IGl0CiAgIHdvcmtzIHdpdGggcGlja3kgY29tcGlsZXJzLiAgUGF0Y2ggZnJvbSBhbGV4LmtpZXJuYW4gYXQgdGh1cy5uZXQuCgoyMDA2MDIwMQogLSAoZGptKSBbcmVncmVzcy90ZXN0LWV4ZWMuc2hdIFRyeSAnbG9nbmFtZScgYXMgd2VsbCBhcyAnd2hvYW1pJyB0byAKICAgZGV0ZXJtaW5lIHRoZSB1c2VyJ3MgbG9naW4gbmFtZSAtIG5lZWRlZCBmb3IgcmVncmVzcyB0ZXN0cyBvbiBTb2xhcmlzIAogICAxMCBhbmQgT3BlblNvbGFyaXMKIC0gKGRqbSkgT3BlbkJTRCBDVlMgU3luYwogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wMi8wMSAwOTowNjo1MAogICAgIFtzc2hkLjhdCiAgICAgLSBtZXJnZSBzZWN0aW9ucyBvbiBwcm90b2NvbHMgMSBhbmQgMiBpbnRvIGEgc2luZ2xlIHNlY3Rpb24KICAgICAtIHJlbW92ZSBjb25maWd1cmF0aW9uIGZpbGUgc2VjdGlvbgogICAgIG9rIG1hcmt1cwogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wMi8wMSAwOToxMTo0MQogICAgIFtzc2hkLjhdCiAgICAgc21hbGwgdHdlYWs7CiAtIChkam0pIFtjb250cmliL2NhbGRlcmEvb3BlbnNzaC5zcGVjIGNvbnRyaWIvcmVkaGF0L29wZW5zc2guc3BlY10KICAgW2NvbnRyaWIvc3VzZS9vcGVuc3NoLnNwZWNdIFVwZGF0ZSB2ZXJzaW9ucyBhaGVhZCBvZiByZWxlYXNlCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAyLzAxIDExOjI3OjIyCiAgICAgW3ZlcnNpb24uaF0KICAgICBvcGVuc3NoIDQuMwogLSAoZGptKSBSZWxlYXNlIE9wZW5TU0ggNC4zcDEKCjIwMDYwMTMxCiAtIChkam0pIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDEvMjAgMTE6MjE6NDUKICAgICBbc3NoX2NvbmZpZy41XQogICAgIC0gd29yZCBjaGFuZ2UsIGFncmVlZCB3LyBtYXJrdXMKICAgICAtIGNvbnNpc3RlbmN5IGZpeGVzCiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAxLzI1IDA5OjA0OjM0CiAgICAgW3NzaGQuOF0KICAgICBtb3ZlIHRoZSBvcHRpb25zIGRlc2NyaXB0aW9uIHVwIHRoZSBwYWdlLCBhbmQgYSBmZXcgYWRkaXRpb25hbCB0d2Vha3MKICAgICB3aGlsc3QgaW4gaGVyZTsKICAgICBvayBtYXJrdXMKICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDEvMjUgMDk6MDc6MjIKICAgICBbc3NoZC44XQogICAgIG1vdmUgc3Vic2VjdGlvbnMgdG8gZnVsbCBzZWN0aW9uczsKICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDEvMjYgMDg6NDc6NTYKICAgICBbc3NoLjFdCiAgICAgYWRkIGEgc2VjdGlvbiBvbiB2ZXJpZnlpbmcgaG9zdCBrZXlzIGluIGRuczsKICAgICB3cml0dGVuIHdpdGggYSBsb3Qgb2YgaGVscCBmcm9tIGpha29iOwogICAgIGZlZWRiYWNrIGR0dWNrZXIvbWFya3VzOwogICAgIG9rIG1hcmt1cwogICAtIHJleWtAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDEvMzAgMTI6MjI6MjIKICAgICBbY2hhbm5lbHMuY10KICAgICBtYXJrIGNoYW5uZWwgYXMgd3JpdGUgZmFpbGVkIG9yIGRlYWQgaW5zdGVhZCBvZiByZWFkIGZhaWxlZCBvbiBlcnJvcgogICAgIG9mIHRoZSBjaGFubmVsIG91dHB1dCBmaWx0ZXIuCiAgICAgb2sgbWFya3VzQAogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wMS8zMCAxMzozNzo0OQogICAgIFtzc2guMV0KICAgICByZW1vdmUgYW4gaW5jb3JyZWN0IHNlbnRlbmNlOwogICAgIHJlcG9ydGVkIGJ5IHJvdW1lbiBwZXRyb3Y7CiAgICAgb2sgZGptIG1hcmt1cwogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNi8wMS8zMSAxMDoxOTowMgogICAgIFttaXNjLmMgbWlzYy5oIHNjcC5jIHNmdHAuY10KICAgICBmaXggbG9jYWwgYXJiaXRyYXJ5IGNvbW1hbmQgZXhlY3V0aW9uIHZ1bG5lcmFiaWxpdHkgb24gbG9jYWwvbG9jYWwgYW5kCiAgICAgcmVtb3RlL3JlbW90ZSBjb3BpZXMgKENWRS0yMDA2LTAyMjUsIGJ6ICMxMDk0KSwgcGF0Y2ggYnkKICAgICB0OG0gQVQgY2VudHJ1bS5jeiwgcG9saXNoZWQgYnkgZHR1Y2tlckAgYW5kIG15c2VsZjsgb2sgbWFya3VzQAogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNi8wMS8zMSAxMDozNTo0MwogICAgIFtzY3AuY10KICAgICAic2NwIGEgYiBjIiBzaG91bGRuJ3QgY2xvYmJlciAiYyIgd2hlbiBpdCBpcyBub3QgYSBkaXJlY3RvcnksIHJlcG9ydCBhbmQKICAgICBmaXggZnJvbSBiaW9ybkA7IG9rIG1hcmt1c0AKIC0gKGRqbSkgU3luYyByZWdyZXNzIHRlc3RzIHRvIE9wZW5CU0Q6CiAgIC0gZHR1Y2tlckBjdnMub3BlbmJzZC5vcmcgMjAwNS8wMy8xMCAxMDoyMDozOQogICAgIFtyZWdyZXNzL2ZvcndhcmRpbmcuc2hdCiAgICAgUmVncmVzcyB0ZXN0IGZvciBDbGVhckFsbEZvcndhcmRpbmdzIChieiAjOTk0KTsgb2sgbWFya3VzQAogICAtIGR0dWNrZXJAY3ZzLm9wZW5ic2Qub3JnIDIwMDUvMDQvMjUgMDk6NTQ6MDkKICAgICBbcmVncmVzcy9tdWx0aXBsZXguc2hdCiAgICAgRG9uJ3QgY2FsbCBjbGVhbnVwIGluIG11bHRpcGxleCBhcyB0ZXN0LWV4ZWMgd2lsbCBjbGVhbnVwIGFueXdheQogICAgIGZvdW5kIGJ5IHRpbUAsIG9rIGRqbUAKICAgICBOQi4gSUQgc3luYyBvbmx5LCB3ZSBhbHJlYWR5IGhhZCB0aGlzCiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA1LzA1LzIwIDIzOjE0OjE1CiAgICAgW3JlZ3Jlc3MvdGVzdC1leGVjLnNoXQogICAgIGZvcmNlIGFkZHJlc3NmYW1pbHk9aW5ldCBmb3IgdGVzdHMsIHVuYnJlYWtpbmcgZHluYW1pYy1mb3J3YXJkIHJlZ3Jlc3MgZm9yCiAgICAgcmVjZW50bHkgY29tbWl0dGVkIG5jIFNPQ0tTNSBjaGFuZ2VzCiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA1LzA1LzI0IDA0OjEwOjU0CiAgICAgW3JlZ3Jlc3MvdHJ5LWNpcGhlcnMuc2hdCiAgICAgb29wcywgbmV3IGFyY2ZvdXIgbW9kZXMgaGVyZSB0b28KICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDUvMDYvMzAgMTE6MDI6MzcKICAgICBbcmVncmVzcy9zY3Auc2hdCiAgICAgYWxsb3cgU1VETz1zdWRvOyBmcm9tIEFsZXhhbmRlciBCbHVobQogICAtIGdydW5rQGN2cy5vcGVuYnNkLm9yZyAyMDA1LzExLzE0IDIxOjI1OjU2CiAgICAgW3JlZ3Jlc3MvYWdlbnQtZ2V0cGVlcmVpZC5zaF0KICAgICBhbGwgb3RoZXIgc2NyaXB0cyBpbiB0aGlzIGRpciB1c2UgJFNVRE8sIG5vdCAnc3VkbycsIHNvIHB1bGwgdGhpcyBldmVuCiAgICAgb2sgbWFya3VzQAogICAtIGR0dWNrZXJAY3ZzLm9wZW5ic2Qub3JnIDIwMDUvMTIvMTQgMDQ6MzY6MzkKICAgICBbcmVncmVzcy9zY3Atc3NoLXdyYXBwZXIuc2hdCiAgICAgRml4IGFzc3VtcHRpb24gYWJvdXQgaG93IG1hbnkgYXJncyBzY3Agd2lsbCBwYXNzOyBvayBkam1ACiAgICAgTkIuIElEIHN5bmMgb25seSwgd2UgYWxyZWFkeSBoYWQgdGhpcwogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNi8wMS8yNyAwNjo0OToyMQogICAgIFtzY3Auc2hdCiAgICAgcmVncmVzcyB0ZXN0IGZvciBsb2NhbCB0byBsb2NhbCBzY3AgY29waWVzOyBvayBkdHVja2VyQAogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNi8wMS8zMSAxMDoyMzoyMwogICAgIFtzY3Auc2hdCiAgICAgcmVncmVzc2lvbiB0ZXN0IGZvciBDVkUtMjAwNi0wMjI1IHdyaXR0ZW4gYnkgZHR1Y2tlckAKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDEvMzEgMTA6MzY6MzMKICAgICBbc2NwLnNoXQogICAgIHJlZ3Jlc3MgdGVzdCBmb3IgInNjcCBhIGIgYyIgd2hlcmUgImMiIGlzIG5vdCBhIGRpcmVjdG9yeQoKMjAwNjAxMjkKIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWMgb3BlbnNzaGQuaW5pdC5pbl0gQnVnICMxMTQ0OiBVc2UgL2Jpbi9zaCBmb3IgdGhlCiAgIG9wZW5zc2hkLmluaXQgc2NyaXB0IGludGVycHJldHRlciBpZiAvc2Jpbi9zaCBkb2VzIG5vdCBleGlzdC4gIG9rIHRpbUAKCjIwMDYwMTIwCiAtIChkdHVja2VyKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAxLzE1IDE3OjM3OjA1CiAgICAgW3NzaC4xXQogICAgIGNvcnJlY3Rpb24gZnJvbSBkZXJhYWR0CiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAxLzE4IDEwOjUzOjI5CiAgICAgW3NzaC4xXQogICAgIGFkZCBhIHNlY3Rpb24gb24gc3NoLWJhc2VkIHZwbiwgYmFzZWQgb24gcmV5aydzIFJFQURNRS50dW47CiAgIC0gZHR1Y2tlckBjdnMub3BlbmJzZC5vcmcgMjAwNi8wMS8yMCAwMDoxNDo1NQogICAgIFtzY3AuMSBzc2guMSBzc2hfY29uZmlnLjUgc2Z0cC4xXQogICAgIERvY3VtZW50IFJla2V5TGltaXQuICBCYXNlZCBvbiBwYXRjaCBmcm9tIGphbi5pdmVuIGF0IGNlcm4uY2ggZnJvbSBtaW5kcm90CiAgICAgIzEwNTYgd2l0aCBmZWVkYmFjayBmcm9tIGptYywgZGptIGFuZCBtYXJrdXM7IG9rIGptY0AgZGptQAoKMjAwNjAxMTQKIC0gKGRqbSkgT3BlbkJTRCBDVlMgU3luYwogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wMS8wNiAxMzoyNzozMgogICAgIFtzc2guMV0KICAgICB3ZWVkIG91dCBzb21lIGR1cGxpY2F0ZSBpbmZvIGluIHRoZSBrbm93bl9ob3N0cyBGSUxFUyBlbnRyaWVzOwogICAgIG9rIGRqbQogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wMS8wNiAxMzoyOToxMAogICAgIFtzc2guMV0KICAgICBmaW5hbCByb3VuZCBvZiB3aGFja2luZyBGSUxFUyBmb3IgZHVwbGljYXRlIGluZm8sIGFuZCBzb21lIGNvbnNpc3RlbmN5CiAgICAgZml4ZXM7CiAgICAgb2sgZGptCiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAxLzEyIDE0OjQ0OjEyCiAgICAgW3NzaC4xXQogICAgIHNwbGl0IHNlY3Rpb25zIG9uIHRjcCBhbmQgeDExIGZvcndhcmRpbmcgaW50byB0d28gc2VjdGlvbnMuCiAgICAgYWRkIGFuIGV4YW1wbGUgaW4gdGhlIHRjcCBzZWN0aW9uLCBiYXNlZCBvbiBzdGggaSB3cm90ZSBmb3Igc3NoIGZhcTsKICAgICBoZWxwICsgb2s6IGRqbSBtYXJrdXMgZHR1Y2tlcgogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wMS8xMiAxODo0ODo0OAogICAgIFtzc2guMV0KICAgICByZWZlciB0byBgVENQJyByYXRoZXIgdGhhbiBgVENQL0lQJyBpbiB0aGUgY29udGV4dCBvZiBjb25uZWN0aW9uCiAgICAgZm9yd2FyZGluZzsKICAgICBvayBtYXJrdXMKICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDEvMTIgMjI6MjA6MDAKICAgICBbc3NoZC44XQogICAgIHJlZmVyIHRvIFRDUCBmb3J3YXJkaW5nLCByYXRoZXIgdGhhbiBUQ1AvSVAgZm9yd2FyZGluZzsKICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDEvMTIgMjI6MjY6MDIKICAgICBbc3NoX2NvbmZpZy41XQogICAgIHJlZmVyIHRvIFRDUCBmb3J3YXJkaW5nLCByYXRoZXIgdGhhbiBUQ1AvSVAgZm9yd2FyZGluZzsKICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDEvMTIgMjI6MzQ6MTIKICAgICBbc3NoLjFdCiAgICAgYmFjayBvdXQgYSBzZW50ZW5jZSAtIEFVVEhFTlRJQ0FUSU9OIGFscmVhZHkgZG9jdW1lbnRzIHRoaXM7CgoyMDA2MDEwOQogLSAoZHR1Y2tlcikgW2NvbnRyaWIvY3lnd2luL3NzaC1ob3N0LWNvbmZpZ10gTWFrZSBzc2hkIHNlcnZpY2UgZGVwZW5kIG9uCiAgIHRjcGlwIHNlcnZpY2Ugc28gaXQncyBhbHdheXMgc3RhcnRlZCBhZnRlciBJUCBpcyB1cC4gIFBhdGNoIGZyb20KICAgdmluc2NoZW4gYXQgcmVkaGF0LmNvbS4KCjIwMDYwMTA2CiAtIChkam0pIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDEvMDMgMTY6MzE6MTAKICAgICBbc3NoLjFdCiAgICAgbW92ZSBGSUxFUyB0byBhIC1jb21wYWN0IGxpc3QsIGFuZCBtYWtlIGVhY2ggZmlsZXMgYW4gaXRlbSBpbiB0aGF0IGxpc3QuCiAgICAgdGhpcyBhdm9pZHMgbmFzdGx5IGxpbmUgd3JhcCB3aGVuIHdlIGhhdmUgbG9uZyBwYXRobmFtZXMsIGFuZCB0cmVhdHMKICAgICBlYWNoIGZpbGUgYXMgYSBzZXBhcmF0ZSBpdGVtOwogICAgIHJlbW92ZSB0aGUgLlBhIHRvbywgc2luY2UgaXQgaXMgdXNlbGVzcy4KICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDEvMDMgMTY6MzU6MzAKICAgICBbc3NoLjFdCiAgICAgdXNlIGEgbGFyZ2VyIHdpZHRoIGZvciB0aGUgRU5WSVJPTk1FTlQgbGlzdDsKICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDEvMDMgMTY6NTI6MzYKICAgICBbc3NoLjFdCiAgICAgcHV0IEZJTEVTIGluIHNvbWUgc29ydCBvZiBvcmRlcjogc29ydCBieSBwYXRobmFtZQogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wMS8wMyAxNjo1NToxOAogICAgIFtzc2guMV0KICAgICB0d2VhayB0aGUgZGVzY3JpcHRpb24gb2Ygfi8uc3NoL2Vudmlyb25tZW50CiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAxLzA0IDE4OjQyOjQ2CiAgICAgW3NzaC4xXQogICAgIGNob3Agb3V0IHNvbWUgZHVwbGljYXRpb24gaW4gdGhlIC57cixzfWhvc3RzL3toLHNofW9zdHMuZXF1aXYgRklMRVMKICAgICBlbnRyaWVzOwogICAgIG9rIG1hcmt1cwogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wMS8wNCAxODo0NTowMQogICAgIFtzc2guMV0KICAgICByZW1vdmUgLlhyJ3MgdG8gcnNoKDEpIGFuZCB0ZWxuZXQoMSk6IHRoZXkgYXJlIGhhcmRseSBuZWVkZWQ7CiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAxLzA0IDE5OjQwOjI0CiAgICAgW3NzaC4xXQogICAgICsuWHIgc3NoLWtleXNjYW4gMSAsCiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAxLzA0IDE5OjUwOjA5CiAgICAgW3NzaC4xXQogICAgIC0uWHIgZ3ppcCAxICwKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDYvMDEvMDUgMjM6NDM6NTMKICAgICBbbWlzYy5jXQogICAgIGNoZWNrIHRoYXQgc3RkaW8gZmlsZSBkZXNjcmlwdG9ycyBhcmUgYWN0dWFsbHkgY2xvc2VkIGJlZm9yZSBjbG9iYmVyaW5nCiAgICAgdGhlbSBpbiBzYW5pdGlzZV9zdGRmZCgpLiBwcm9ibGVtcyBvY2N1cnJlZCB3aGVuIGEgbG93ZXIgbnVtYmVyZWQgZmQgd2FzCiAgICAgY2xvc2VkLCBidXQgaGlnaGVyIG9uZXMgd2VyZW4ndC4gc3BvdHRlZCBieSwgYW5kIHBhdGNoIHRlc3RlZCBieQogICAgIEZy6WTpcmljIE9saXZp6QoKMjAwNjAxMDMKIC0gKGRqbSkgW2NoYW5uZWxzLmNdIGNsZWFuIHVwIGhhcm1sZXNzIG1lcmdlIGVycm9yLCBmcm9tIHJleWtACgoyMDA2MDEwMwogLSAoZGptKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAxLzAyIDE3OjA5OjQ5CiAgICAgW3NzaF9jb25maWcuNSBzc2hkX2NvbmZpZy41XQogICAgIHNvbWUgY29ycmVjdGlvbnMgZnJvbSBtaWNoYWVsIGtudWRzZW47CgoyMDA2MDEwMgogLSAoZGptKSBbUkVBRE1FLnR1bl0gQWRkIFJFQURNRS50dW4sIG1pc3NlZCBkdXJpbmcgc3luYyBvZiB0dW4oNCkgc3VwcG9ydAogLSAoZGptKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDA1LzEyLzMxIDEwOjQ2OjE3CiAgICAgW3NzaC4xXQogICAgIG1lcmdlIHRoZSAiTE9HSU4gU0VTU0lPTiBBTkQgUkVNT1RFIEVYRUNVVElPTiIgYW5kICJTRVJWRVIKICAgICBBVVRIRU5USUNBVElPTiIgc2VjdGlvbnMgaW50byAiQVVUSEVOVElDQVRJT04iOwogICAgIHNvbWUgcmV3b3JkaW5nIGRvbmUgdG8gbWFrZSB0aGUgdGV4dCByZWFkIGJldHRlciwgcGx1cyBzb21lCiAgICAgaW1wcm92ZW1lbnRzIGZyb20gZGptOwogICAgIG9rIGRqbQogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwNS8xMi8zMSAxMzo0NDowNAogICAgIFtzc2guMV0KICAgICBjbGVhbiB1cCBFTlZJUk9OTUVOVCBhIGxpdHRsZTsKICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDUvMTIvMzEgMTM6NDU6MTkKICAgICBbc3NoLjFdCiAgICAgLk5tIGRvZXMgbm90IHJlcXVpcmUgYW4gYXJndW1lbnQ7CiAgIC0gc3RldmVza0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wMS8wMSAwODo1OToyNwogICAgIFtpbmNsdWRlcy5oIG1pc2MuY10KICAgICBtb3ZlIDxuZXQvaWYuaD47IG9rIGRqbUAKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAxLzAxIDEwOjA4OjQ4CiAgICAgW21pc2MuY10KICAgICBubyB0cmFpbGluZyAiXG4iIGZvciBkZWJ1ZygpCiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAxLzAyIDAxOjIwOjMxCiAgICAgW3NmdHAtY2xpZW50LmMgc2Z0cC1jb21tb24uaCBzZnRwLXNlcnZlci5jXQogICAgIHVzZSBhIGNvbW1vbiBtYXguIHBhY2tldCBsZW5ndGgsIG5vIGJpbmFyeSBjaGFuZ2UKICAgLSByZXlrQGN2cy5vcGVuYnNkLm9yZyAyMDA2LzAxLzAyIDA3OjUzOjQ0CiAgICAgW21pc2MuY10KICAgICBjbGFyaWZ5IHR1big0KSBvcGVuaW5nIC0gc2V0IHRoZSBtb2RlIGFuZCBicmluZyB0aGUgaW50ZXJmYWNlIHVwLiBhbHNvCiAgICAgKHJlKXNldHMgdGhlIHR1big0KSBsYXllciAyIExJTkswIGZsYWcgZm9yIGV4aXN0aW5nIHR1bm5lbCBpbnRlcmZhY2VzLgogICAgIHN1Z2dlc3RlZCBhbmQgb2sgYnkgZGptQAogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwNi8wMS8wMiAxMjozMTowNgogICAgIFtzc2guMV0KICAgICBzdGFydCB0byBjdXQgc29tZSBkdXBsaWNhdGUgaW5mbyBmcm9tIEZJTEVTOwogICAgIGhlbHAvb2sgZGptCgoyMDA2MDEwMQogLSAoZGptKSBbTWFrZWZpbGUuaW4gY29uZmlndXJlLmFjIGluY2x1ZGVzLmggbWlzYy5jXQogICAgICAgICBbb3BlbmJzZC1jb21wYXQvcG9ydC10dW4uYyBvcGVuYnNkLWNvbXBhdC9wb3J0LXR1bi5oXSBBZGQgc3VwcG9ydAogICAgICAgICBmb3IgdHVubmVsIGZvcndhcmRpbmcgZm9yIEZyZWVCU0QgYW5kIE5ldEJTRC4gTmV0QlNEJ3Mgc3VwcG9ydCBpcwogICAgICAgICBsaW1pdGVkIHRvIElQdjQgdHVubmVscyBvbmx5LCBhbmQgbW9zdCB2ZXJzaW9ucyBkb24ndCBzdXBwb3J0IHRoZQogICAgICAgICB0YXAoNCkgZGV2aWNlIGF0IGFsbC4KIC0gKGRqbSkgW2NvbmZpZ3VyZS5hY10gRml4IGxpbnV4L2lmX3R1bi5oIHRlc3QKIC0gKGRqbSkgW29wZW5ic2QtY29tcGF0L3BvcnQtdHVuLmNdIExpbnV4IG5lZWRzIGxpbnV4L2lmLmggdG9vCgoyMDA1MTIyOQogLSAoZGptKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gc3RldmVza0BjdnMub3BlbmJzZC5vcmcgMjAwNS8xMi8yOCAyMjo0NjowNgogICAgIFtjYW5vaG9zdC5jIGNoYW5uZWxzLmMgY2xpZW50bG9vcC5jXQogICAgIHVzZSAnYnJlYWstaW4nIGZvciBjb25zaXN0ZW5jeTsgb2sgZGVyYWFkdEAgb2sgYW5kIGlucHV0IGptY0AKICAgLSByZXlrQGN2cy5vcGVuYnNkLm9yZyAyMDA1LzEyLzMwIDE1OjU2OjM3CiAgICAgW2NoYW5uZWxzLmMgY2hhbm5lbHMuaCBjbGllbnRsb29wLmNdCiAgICAgYWRkIGNoYW5uZWwgb3V0cHV0IGZpbHRlciBpbnRlcmZhY2UuCiAgICAgb2sgZGptQCwgc3VnZ2VzdGVkIGJ5IG1hcmt1c0AKICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDUvMTIvMzAgMTY6NTk6MDAKICAgICBbc2Z0cC4xXQogICAgIGRvIG5vdCBzdWdnZXN0IHRoYXQgaW50ZXJhY3RpdmUgYXV0aGVudGljYXRpb24gd2lsbCB3b3JrCiAgICAgd2l0aCB0aGUgLWIgZmxhZzsKICAgICBiYXNlZCBvbiBhIGRpZmYgZnJvbSBqb2huIGwuIHNjYXJmb25lOwogICAgIG9rIGRqbQogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDUvMTIvMzEgMDE6Mzg6NDUKICAgICBbc3NoLjFdCiAgICAgZG9jdW1lbnQgLU1NOyBvayBkam1ACiAtIChkam0pIFtvcGVuYnNkLWNvbXBhdC9wb3J0LXR1bi5jIG9wZW5ic2QtY29tcGF0L3BvcnQtdHVuLmggY29uZmlndXJlLmFjXQogICBbc2VydmVybG9vcC5jIHNzaC5jIG9wZW5ic2QtY29tcGF0L01ha2VmaWxlLmluXQogICBbb3BlbmJzZC1jb21wYXQvb3BlbmJzZC1jb21wYXQuaF0gSW1wbGVtZW50IHR1big0KSBmb3J3YXJkaW5nIAogICBjb21wYXRhYmlsaXR5IHN1cHBvcnQgZm9yIExpbnV4LCBkaWZmIGZyb20gcmV5a0AKIC0gKGRqbSkgW2NvbmZpZ3VyZS5hY10gRGlzYWJsZSBMaW51eCB0dW4oNCkgY29tcGF0IGNvZGUgaWYgbGludXgvdHVuLmggZG9lcwogICBub3QgZXhpc3QKIC0gKGRqbSkgW2NvbmZpZ3VyZS5hY10gb29wcywgbWFrZSB0aGF0IGxpbnV4L2lmX3R1bi5oCgoyMDA1MTIyOQogLSAodGltKSBbYnVpbGRwa2cuc2guaW5dIGdyZXAgZm9yICRTU0hEVUlEIGluc3RlYWQgb2YgJFNTSERHSUQgb24gL2V0Yy9wYXNzd2QKCjIwMDUxMjI0CiAtIChkam0pIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDUvMTIvMjAgMjE6NTk6NDMKICAgICBbc3NoLjFdCiAgICAgbWVyZ2UgdGhlIHNlY3Rpb25zIG9uIHByb3RvY29scyAxIGFuZCAyIGludG8gb25lIHNlY3Rpb24gb24KICAgICBhdXRoZW50aWNhdGlvbjsKICAgICBmZWVkYmFjayBkam0gZHR1Y2tlcgogICAgIG9rIGRlcmFhZHQgbWFya3VzIGR0dWNrZXIKICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDUvMTIvMjAgMjI6MDI6NTAKICAgICBbc3NoLjFdCiAgICAgLlNzIC0+IC5TaDogc3Vic2VjdGlvbnMgaGF2ZSBub3QgbWFkZSB0aGlzIHBhZ2UgbW9yZSByZWFkYWJsZQogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwNS8xMi8yMCAyMjowOTo0MQogICAgIFtzc2guMV0KICAgICBtb3ZlIGluZm8gb24gc3NoIHJldHVybiB2YWx1ZXMgYW5kIGNvbmZpZyBmaWxlcyB1cCBpbnRvIHRoZSBtYWluCiAgICAgZGVzY3JpcHRpb247CiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDA1LzEyLzIxIDExOjQ4OjE2CiAgICAgW3NzaC4xXQogICAgIC1MIGFuZCAtUiBkZXNjcmlwdGlvbnMgYXJlIG5vdyBhYm92ZSwgbm90IGJlbG93LCB+QyBkZXNjcmlwdGlvbjsKICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDUvMTIvMjEgMTE6NTc6MjUKICAgICBbc3NoLjFdCiAgICAgb3B0aW9ucyBub3cgZGVzY3JpYmVkIGBhYm92ZScsIHJhdGhlciB0aGFuIGBsYXRlcic7CiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDA1LzEyLzIxIDEyOjUzOjMxCiAgICAgW3NzaC4xXQogICAgIC1ZIGRvZXMgWDExIGZvcndhcmRpbmcgdG9vOwogICAgIG9rIG1hcmt1cwogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDUvMTIvMjEgMjI6NDQ6MjYKICAgICBbc3NoZC44XQogICAgIGNsYXJpZnkgcHJlY2VkZW5jZSBvZiAtcCwgUG9ydCwgTGlzdGVuQWRkcmVzczsgb2sgYW5kIGhlbHAgam1jQAogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwNS8xMi8yMiAxMDozMTo0MAogICAgIFtzc2hfY29uZmlnLjVdCiAgICAgcHV0IHRoZSBkZXNjcmlwdGlvbiBvZiAiVXNlUHJpdmlsZWdlZFBvcnQiIGluIHRoZSBjb3JyZWN0IHBsYWNlOwogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwNS8xMi8yMiAxMToyMzo0MgogICAgIFtzc2guMV0KICAgICBleHBhbmQgdGhlIGRlc2NyaXB0aW9uIG9mIC13IHNvbWV3aGF0OwogICAgIGhlbHAvb2sgcmV5awogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwNS8xMi8yMyAxNDo1NTo1MwogICAgIFtzc2guMV0KICAgICAtIHN5bmMgdGhlIGRlc2NyaXB0aW9uIG9mIC1lIHcvIHN5bm9wc2lzCiAgICAgLSBzaW1wbGlmeSB0aGUgZGVzY3JpcHRpb24gb2YgLUkKICAgICAtIG5vdGUgdGhhdCAtSSBpcyBvbmx5IGF2YWlsYWJsZSBpZiBzdXBwb3J0IGNvbXBpbGVkIGluLCBhbmQgdGhhdCBpdAogICAgIGlzbid0IGJ5IGRlZmF1bHQKICAgICBmZWVkYmFjay9vayBkam1ACiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDA1LzEyLzIzIDIzOjQ2OjIzCiAgICAgW3NzaC4xXQogICAgIGxlc3MgbWFyayB1cCBmb3IgLWM7CiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA1LzEyLzI0IDAyOjI3OjQxCiAgICAgW3Nlc3Npb24uYyBzc2hkLmNdCiAgICAgZWxpbWluYXRlIHNvbWUgY29kZSBkdXBsaWNhdGVkIGluIHByaXZzZXAgYW5kIG5vbi1wcml2c2VwIHBhdGhzLCBhbmQKICAgICBleHBsaWNpdGx5IGNsZWFyIFNJR0FMUk0gaGFuZGxlcjsgImdyb292eSIgZGVyYWFkdEAKCjIwMDUxMjIwCiAtIChkdHVja2VyKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gcmV5a0BjdnMub3BlbmJzZC5vcmcgMjAwNS8xMi8xMyAxNTowMzowMgogICAgIFtzZXJ2ZXJsb29wLmNdCiAgICAgaWYgZm9yY2VkX3R1bl9kZXZpY2UgaXMgbm90IHNldCwgaXQgaXMgLTEgYW5kIG5vdCBTU0hfVFVOSURfQU5ZCiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDA1LzEyLzE2IDE4OjA3OjA4CiAgICAgW3NzaC4xXQogICAgIG1vdmUgdGhlIG9wdGlvbiBkZXNjcmlwdGlvbnMgdXAgdGhlIHBhZ2U6IHN0YXJ0IG9mIGEgcmVzdHJ1Y3R1cmU7CiAgICAgb2sgbWFya3VzIGRlcmFhZHQKICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDUvMTIvMTYgMTg6MDg6NTMKICAgICBbc3NoLjFdCiAgICAgc2ltcGxpZnkgYSBzZW50ZW5jZTsKICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDUvMTIvMTYgMTg6MTI6MjIKICAgICBbc3NoLjFdCiAgICAgbWFrZSB0aGUgZGVzY3JpcHRpb24gb2YgLWMgYSBsaXR0bGUgbmljZXI7CiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDA1LzEyLzE2IDE4OjE0OjQwCiAgICAgW3NzaC4xXQogICAgIHNpZ25wb3N0IHRoZSBwcm90b2NvbCBzZWN0aW9uczsKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDA1LzEyLzE3IDIxOjEzOjA1CiAgICAgW3NzaF9jb25maWcuNSBzZXNzaW9uLmNdCiAgICAgc3BlbGxpbmc6IGZvd2FyZGluZywgZm93YXJkZWQKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDA1LzEyLzE3IDIxOjM2OjQyCiAgICAgW3NzaF9jb25maWcuNV0KICAgICBzcGVsbGluZzogaW50ZW50ZWQgLT4gaW50ZW5kZWQKICAgLSBkdHVja2VyQGN2cy5vcGVuYnNkLm9yZyAyMDA1LzEyLzIwIDA0OjQxOjA3CiAgICAgW3NzaC5jXQogICAgIGV4aXQoMjU1KSBvbiBlcnJvciB0byBtYXRjaCBkZXNjcmlwdGlvbiBpbiBzc2goMSk7IGJ6ICMxMTM3OyBvayBkZXJhYWR0QAoKMjAwNTEyMTkKIC0gKGR0dWNrZXIpIFtjaXBoZXItYWVzLmMgY2lwaGVyLWN0ci5jIGNpcGhlci5jIGNvbmZpZ3VyZS5hYwogICBvcGVuYnNkLWNvbXBhdC9vcGVuc3NsLWNvbXBhdC5oXSBDaGVjayBmb3IgYW5kIHdvcmsgYXJvdW5kIGJyb2tlbiBBRVMKICAgY2lwaGVycyA+MTI4Yml0IG9uIChzb21lKSBTb2xhcmlzIDEwIHN5c3RlbXMuICBvayBkam1ACgoyMDA1MTIxNwogLSAoZHR1Y2tlcikgW2RlZmluZXMuaF0gSFAtVVggc3lzdGVtIGhlYWRlcnMgZGVmaW5lICJZRVMiIGFuZCAiTk8iIHdoaWNoCiAgIHNjcC5jIGFsc28gdXNlcywgc28gdW5kZWYgdGhlbSBoZXJlLgogLSAoZHR1Y2tlcikgW2NvbmZpZ3VyZS5hYyBvcGVuYnNkLWNvbXBhdC9ic2Qtc25wcmludGYuY10gQnVnICMxMTMzOiBPdXIKICAgc25wcmludGYgcmVwbGFjZW1lbnQgY2FuIGhhdmUgYSBjb25mbGljdGluZyBkZWNsYXJhdGlvbiBpbiBIUC1VWCdzIHN5c3RlbQogICBoZWFkZXJzIChjb25zdCB2cy4gbm8gY29uc3QpIHNvIHdlIG5vdyBjaGVjayBmb3IgYW5kIHdvcmsgYXJvdW5kIGl0LiAgUGF0Y2gKICAgZnJvbSB0aGUgZHluYW1pYyBkdW8gb2YgRGF2aWQgTGVvbmFyZCBhbmQgVGVkIFBlcmNpdmFsLgoKMjAwNTEyMTQKIC0gKGR0dWNrZXIpIE9wZW5CU0QgQ1ZTIFN5bmMgKHJlZ3Jlc3MvKQogICAtIGR0dWNrZXJAY3ZzLm9wZW5ic2Qub3JnIDIwMDUvMTIvMzAgMDQ6MzY6MzkKICAgICBbcmVncmVzcy9zY3Atc3NoLXdyYXBwZXIuc2hdCiAgICAgRml4IGFzc3VtcHRpb24gYWJvdXQgaG93IG1hbnkgYXJncyBzY3Agd2lsbCBwYXNzOyBvayBkam1ACgoyMDA1MTIxMwogLSAoZGptKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDA1LzExLzMwIDExOjE4OjI3CiAgICAgW3NzaC4xXQogICAgIHRpbWV6b25lIC0+IHRpbWUgem9uZQogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwNS8xMS8zMCAxMTo0NToyMAogICAgIFtzc2guMV0KICAgICBhdm9pZCBhbWJpZ3VpdGllcyBpbiBkZXNjcmliaW5nIFRaOwogICAgIG9rIGRqbUAKICAgLSByZXlrQGN2cy5vcGVuYnNkLm9yZyAyMDA1LzEyLzA2IDIyOjM4OjI4CiAgICAgW2F1dGgtb3B0aW9ucy5jIGF1dGgtb3B0aW9ucy5oIGNoYW5uZWxzLmMgY2hhbm5lbHMuaCBjbGllbnRsb29wLmNdCiAgICAgW21pc2MuYyBtaXNjLmggcmVhZGNvbmYuYyByZWFkY29uZi5oIHNjcC5jIHNlcnZjb25mLmMgc2VydmNvbmYuaF0KICAgICBbc2VydmVybG9vcC5jIHNmdHAuYyBzc2guMSBzc2guYyBzc2hfY29uZmlnIHNzaF9jb25maWcuNSBzc2hjb25uZWN0LmNdCiAgICAgW3NzaGNvbm5lY3QuaCBzc2hkLjggc3NoZF9jb25maWcgc3NoZF9jb25maWcuNV0KICAgICBBZGQgc3VwcG9ydCBmb3IgdHVuKDQpIGZvcndhcmRpbmcgb3ZlciBPcGVuU1NILCBiYXNlZCBvbiBhbiBpZGVhIGFuZAogICAgIGluaXRpYWwgY2hhbm5lbCBjb2RlIGJpdHMgYnkgbWFya3VzQC4gVGhpcyBpcyBhIHNpbXBsZSBhbmQgZWFzeSB3YXkgdG8KICAgICB1c2UgT3BlblNTSCBmb3IgYWQgaG9jIHZpcnR1YWwgcHJpdmF0ZSBuZXR3b3JrIGNvbm5lY3Rpb25zLCBlLmcuCiAgICAgYWRtaW5pc3RyYXRpdmUgdHVubmVscyBvciBzZWN1cmUgd2lyZWxlc3MgYWNjZXNzLiBJdCdzIGJhc2VkIG9uIGEgbmV3CiAgICAgc3NoIGNoYW5uZWwgYW5kIHdvcmtzIHNpbWlsYXIgdG8gdGhlIGV4aXN0aW5nIFRDUCBmb3J3YXJkaW5nIHN1cHBvcnQsCiAgICAgZXhjZXB0IHRoYXQgaXQgZGVwZW5kcyBvbiB0aGUgdHVuKDQpIG5ldHdvcmsgaW50ZXJmYWNlIG9uIGJvdGggZW5kcyBvZgogICAgIHRoZSBjb25uZWN0aW9uIGZvciBsYXllciAyIG9yIGxheWVyIDMgdHVubmVsaW5nLiBUaGlzIGRpZmYgYWxzbyBhZGRzCiAgICAgc3VwcG9ydCBmb3IgTG9jYWxDb21tYW5kIGluIHRoZSBzc2goMSkgY2xpZW50LgogICAgIG9rIGRqbUAsIG1hcmt1c0AsIGptY0AgKG1hbnBhZ2VzKSwgdGVzdGVkIGFuZCBkaXNjdXNzZWQgd2l0aCBvdGhlcnMKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDUvMTIvMDcgMDM6NTI6MjIKICAgICBbY2xpZW50bG9vcC5jXQogICAgIHJleWsgZm9yZ290IHRvIGNvbXBpbGUgd2l0aCAtV2Vycm9yIChtaXNzaW5nIGhlYWRlcikKICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDUvMTIvMDcgMTA6NTI6MTMKICAgICBbc3NoLjFdCiAgICAgLSBhdm9pZCBsaW5lIHNwbGl0IGluIFNZTk9QU0lTCiAgICAgLSBhZGQgYXJncyB0byAtdwogICAgIC0ga2lsbCB0cmFpbGluZyB3aGl0ZXNwYWNlCiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDA1LzEyLzA4IDE0OjU5OjQ0CiAgICAgW3NzaC4xIHNzaF9jb25maWcuNV0KICAgICBtYWtlIGAhY29tbWFuZCcgYSBsaXR0bGUgY2xlYXJlcjsKICAgICBvayByZXlrCiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDA1LzEyLzA4IDE1OjA2OjI5CiAgICAgW3NzaF9jb25maWcuNV0KICAgICBrZWVwIG9wdGlvbnMgaW4gb3JkZXI7CiAgIC0gcmV5a0BjdnMub3BlbmJzZC5vcmcgMjAwNS8xMi8wOCAxODozNDoxMQogICAgIFthdXRoLW9wdGlvbnMuYyBpbmNsdWRlcy5oIG1pc2MuYyBtaXNjLmggcmVhZGNvbmYuYyBzZXJ2Y29uZi5jXQogICAgIFtzZXJ2ZXJsb29wLmMgc3NoLmMgc3NoX2NvbmZpZy41IHNzaGRfY29uZmlnLjUgY29uZmlndXJlLmFjXQogICAgIHR3byBjaGFuZ2VzIHRvIHRoZSBuZXcgc3NoIHR1bm5lbCBzdXBwb3J0LiB0aGlzIGJyZWFrcyBjb21wYXRpYmlsaXR5CiAgICAgd2l0aCB0aGUgaW5pdGlhbCBjb21taXQgYnV0IGlzIHJlcXVpcmVkIGZvciBhIHBvcnRhYmxlIGFwcHJvYWNoLgogICAgIC0gbWFrZSB0aGUgdHVubmVsIGlkIHVfaW50IGFuZCBwbGF0Zm9ybSBmcmllbmRseSwgdXNlIHByZWRlZmluZWQgdHlwZXMuCiAgICAgLSBzdXBwb3J0IGNvbmZpZ3VyYXRpb24gb2YgbGF5ZXIgMiAoZXRoZXJuZXQpIG9yIGxheWVyIDMKICAgICAocG9pbnQtdG8tcG9pbnQsIGRlZmF1bHQpIG1vZGVzLiBjb25maWd1cmF0aW9uIGlzIGRvbmUgdXNpbmcgdGhlCiAgICAgVHVubmVsICh5ZXN8cG9pbnQtdG8tcG9pbnR8ZXRoZXJuZXR8bm8pIG9wdGlvbiBpcyBzc2hfY29uZmlnKDUpIGFuZAogICAgIHJlc3RyaWN0ZWQgYnkgdGhlIFBlcm1pdFR1bm5lbCAoeWVzfHBvaW50LXRvLXBvaW50fGV0aGVybmV0fG5vKSBvcHRpb24KICAgICBpbiBzc2hkX2NvbmZpZyg1KS4KICAgICBvayBkam1ALCBtYW4gcGFnZSBiaXRzIGJ5IGptY0AKICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDUvMTIvMDggMjE6Mzc6NTAKICAgICBbc3NoX2NvbmZpZy41XQogICAgIG5ldyBzZW50ZW5jZSwgbmV3IGxpbmU7CiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDA1LzEyLzEyIDEzOjQ2OjE4CiAgICAgW2NoYW5uZWxzLmMgY2hhbm5lbHMuaCBzZXNzaW9uLmNdCiAgICAgbWFrZSBzdXJlIHByb3RvY29sIG1lc3NhZ2VzIGZvciBpbnRlcm5hbCBjaGFubmVscyBhcmUgaWdub3JlZC4KICAgICBhbGxvdyBhZGp1c3QgbWVzc2FnZXMgZm9yIG5vbi1vcGVuIGNoYW5uZWxzOyB3aXRoIGFuZCBvayBkam1ACiAtIChkam0pIFttaXNjLmNdIERpc2FibGUgdHVubmVsIGNvZGUgZm9yIG5vbi1PcGVuQlNEIChmb3Igbm93KSwgZW5hYmxlCiAgIGFnYWluIGJ5IHByb3ZpZGluZyBhIHN5c190dW5fb3BlbigpIGZ1bmN0aW9uIGZvciB5b3VyIHBsYXRmb3JtIGFuZCAKICAgc2V0dGluZyB0aGUgQ1VTVE9NX1NZU19UVU5fT1BFTiBkZWZpbmUuIE1vcmUgd29yayBpcyByZXF1aXJlZCB0byBtYXRjaCAKICAgT3BlbkJTRCdzIHR1bm5lbCBwcm90b2NvbCwgd2hpY2ggcHJlcGVuZHMgdGhlIGFkZHJlc3MgZmFtaWx5IHRvIHRoZSAKICAgcGFja2V0CgoyMDA1MTIwMQogLSAoZGptKSBbZW52cGFzcy5zaF0gUmVtb3ZlIHJlZ3Jlc3Mgc2NyaXB0IHRoYXQgd2FzIGFjY2lkZW50YWxseSBjb21taXR0ZWQgCiAgIGluIHRvcCBsZXZlbCBkaXJlY3RvcnkgYW5kIG5vdCBub3RpY2VkIGZvciBvdmVyIGEgeWVhciA6KQoKMjAwNTExMjkKIC0gKHRpbSkgW3NzaC1rZXlnZW4uY10gTW92ZSBEU0EgbGVuZ3RoIHRlc3QgYWZ0ZXIgc2V0dGluZyBkZWZhdWx0IHdoZW4KICAgYml0cyA9PSAwLgogLSAoZHR1Y2tlcikgT3BlbkJTRCBDVlMgU3luYwogICAtIGR0dWNrZXJAY3ZzLm9wZW5ic2Qub3JnIDIwMDUvMTEvMjkgMDI6MDQ6NTUKICAgICBbc3NoLWtleWdlbi5jXQogICAgIFBvcHVsYXRlIGRlZmF1bHQga2V5IHNpemVzIGJlZm9yZSBjaGVja2luZyB0aGVtOyBmcm9tICYgb2sgdGltQAogLSAodGltKSBbY29uZmlndXJlLmFjIHNzaGQuOF0gRW5hYmxlIGxvY2tlZCBhY2NvdW50IGNoZWNrIChhICIqTEsqIiBzdHJpbmcpCiAgIGZvciBVbml4V2FyZS4KCjIwMDUxMTI4CiAtIChkdHVja2VyKSBbcmVncmVzcy95ZXMtaGVhZC5zaF0gV29yayBhcm91bmQgYnJlYWthZ2UgY2F1c2VkIGJ5IHNvbWUKICAgdmVyc2lvbnMgb2YgR05VIGhlYWQuICBCYXNlZCBvbiBwYXRjaCBmcm9tIHphcHBhbWFuIGF0IGJ1cmFwaGFsaW51eC5vcmcKIC0gKGR0dWNrZXIpIFtpbmNsdWRlcy5oXSBCdWcgIzExMjI6IF9fVVNFX0dOVSBpcyBhIGdsaWJjIGludGVybmFsIG1hY3JvLCB1c2UKICAgX0dOVV9TT1VSQ0UgaW5zdGVhZC4gIFBhdGNoIGZyb20gdDhtIGF0IGNlbnRydW0uY3ouCiAtIChkdHVja2VyKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gZHR1Y2tlckBjdnMub3BlbmJzZC5vcmcgMjAwNS8xMS8yOCAwNToxNjo1MwogICAgIFtzc2gta2V5Z2VuLjEgc3NoLWtleWdlbi5jXQogICAgIEVuZm9yY2UgRFNBIGtleSBsZW5ndGggb2YgZXhhY3RseSAxMDI0IGJpdHMgdG8gY29tcGx5IHdpdGggRklQUy0xODYtMiwKICAgICBpbmNyZWFzZSBtaW51bXVtIFJTQSBrZXkgc2l6ZSB0byA3NjggYml0cyBhbmQgdXBkYXRlIG1hbiBwYWdlIHRvIHJlZmxlY3QKICAgICB0aGVzZS4gIFBhdGNoIG9yaWdpbmFsbHkgYnojMTExOSAoc2VudGhpbGt1bWFyX3NlbiBhdCBob3Rwb3AuY29tKSwKICAgICBvayBkam1ALCBncnVkZ2luZyBvayBkZXJhYWR0QC4KICAgLSBkdHVja2VyQGN2cy5vcGVuYnNkLm9yZyAyMDA1LzExLzI4IDA2OjAyOjU2CiAgICAgW3NzaC1hZ2VudC4xXQogICAgIFVwZGF0ZSBhZ2VudCBzb2NrZXQgcGF0aCB0ZW1wbGF0ZXMgdG8gcmVmbGVjdCByZWFsaXR5LCBjb3JyZWN0IHhyZWYgZm9yCiAgICAgdGltZSBmb3JtYXRzLiAgYnojMTEyMSwgcGF0Y2ggZnJvbSBvcGVuc3NoIGF0IHJvdW1lbnBldHJvdi5pbmZvLCBvayBkam1ACgoyMDA1MTEyNgogLSAoZHR1Y2tlcikgW2NvbmZpZ3VyZS5hY10gQnVnICMxMTI2OiBBSVggNS4yIGFuZCA1LjMgKGFuZCBwcmVzdW1hYmx5IG5ld2VyLAogICB3aGVuIHRoZXkncmUgYXZhaWxhYmxlKSBuZWVkIHRoZSByZWFsIFVJRCBzZXQgb3RoZXJ3aXNlIHBhbV9jaGF1dGh0b2sgd2lsbAogICBzZXQgQURNQ0hHIGFmdGVyIGNoYW5naW5nIHRoZSBwYXNzd29yZCwgZm9yY2luZyB0aGUgdXNlciB0byBjaGFuZ2UgaXQKICAgYWdhaW4gaW1tZWRpYXRlbHkuCgoyMDA1MTEyNQogLSAoZHR1Y2tlcikgW2NvbmZpZ3VyZS5hY10gQXBwbHkgdGltJ3MgZml4IGZvciBvbGRlciBzeXN0ZW1zIHdoZXJlIHRoZQogICByZXNvbHZlciBzdGF0ZSBpbiByZXNvbHYuaCBpcyAic3RhdGUiIG5vdCAiX19yZXNfc3RhdGUiLiAgV2l0aCBzbGlnaHQKICAgbW9kaWZpY2F0aW9uIGJ5IG1lIHRvIGFsc28gd29yayBvbiBvbGQgQUlYZXMuICBvayBkam1ACiAtIChkdHVja2VyKSBbcHJvZ3Jlc3NtZXRlci5jIHNjcC5jIHNmdHAtc2VydmVyLmNdIFVzZSBjb3JyZWN0IGNhc3RzIGZvcgogICBzbnByaW50ZiBmb3JtYXRzLCBmaXhlcyB3YXJuaW5ncyBvbiBzb21lIDY0IGJpdCBwbGF0Zm9ybXMuICBQYXRjaCBmcm9tCiAgIHNoYXcgYXQgdnJhbml4LmNvbSwgb2sgZGptQAoKMjAwNTExMjQKIC0gKGRqbSkgW2NvbmZpZ3VyZS5hYyBvcGVuYnNkLWNvbXBhdC9NYWtlZmlsZS5pbiBvcGVuYnNkLWNvbXBhdC9ic2QtYXNwcmludGYuYyAKICAgb3BlbmJzZC1jb21wYXQvYnNkLXNucHJpbnRmLmMgb3BlbmJzZC1jb21wYXQvb3BlbmJzZC1jb21wYXQuaF0gQWRkIGFuIAogICBhc3ByaW50ZigpIGltcGxlbWVudGF0aW9uLCBhZnRlciBzeW5jaW5nIG91ciB7dix9c25wcmludGYoKSBpbXBsZW1lbnRhdGlvbgogICB3aXRoIHNvbWUgZXh0cmEgZml4ZXMgZnJvbSBTYW1iYSdzIHZlcnNpb24uIFdpdGggaGVscCBhbmQgZGVidWdnaW5nIGZyb20gCiAgIGR0dWNrZXIgYW5kIHRpbTsgb2sgZHR1Y2tlckAKIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWNdIEZpeCB0eXBvcyBpbiBjb21tZW50cyBhbmQgQUNfU0VBUkNIX0xJQiBhcmd1bWVudAogICBvcmRlciBpbiBSZWxpYW50IFVuaXggYmxvY2suICBQYXRjaCBmcm9tIGpvaGFuZSBhdCBseXNhdG9yLmxpdS5zZS4KIC0gKGR0dWNrZXIpIFtyZWdyZXNzL3Rlc3QtZXhlYy5zaF0gVXNlIDEwMjQgYml0IGtleXMgc2luY2Ugd2UgZ2VuZXJhdGUgc28KICAgbWFueSBhbmQgdXNlIHRoZW0gb25seSBvbmNlLiAgU3BlZWRzIHVwIHRlc3Rpbmcgb24gb2xkZXIvc2xvd2VyIGhhcmR3YXJlLgoKMjAwNTExMjIKIC0gKGR0dWNrZXIpIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBkZXJhYWR0QGN2cy5vcGVuYnNkLm9yZyAyMDA1LzExLzEyIDE4OjM3OjU5CiAgICAgW3NzaC1hZGQuY10KICAgICBzcGFjZQogICAtIGRlcmFhZHRAY3ZzLm9wZW5ic2Qub3JnIDIwMDUvMTEvMTIgMTg6Mzg6MTUKICAgICBbc2NwLmNdCiAgICAgYXZvaWQgY2xvc2UoLTEpLCBhcyBpbiByY3A7IG9rIGNsb2RlcgogICAtIG1pbGxlcnRAY3ZzLm9wZW5ic2Qub3JnIDIwMDUvMTEvMTUgMTE6NTk6NTQKICAgICBbaW5jbHVkZXMuaF0KICAgICBJbmNsdWRlIHN5cy9xdWV1ZS5oIGV4cGxpY2l0bHkgaW5zdGVhZCBvZiBhc3N1bWluZyBzb21lIG90aGVyIGhlYWRlcgogICAgIHdpbGwgcHVsbCBpdCBpbi4gIEF0IHRoZSBtb21lbnQgaXQgZ2V0cyBwdWxsZWQgaW4gYnkgc3lzL3NlbGVjdC5oCiAgICAgKHdoaWNoIHNzaCBoYXMgbm8gYnVzaW5lc3MgaW5jbHVkaW5nKSB2aWEgZXZlbnQuaC4gIE9LIG1hcmt1c0AKICAgICAoSUQgc3luYyBvbmx5IGluIC1wb3J0YWJsZSkKICAgLSBkdHVja2VyQGN2cy5vcGVuYnNkLm9yZyAyMDA1LzExLzIxIDA5OjQyOjEwCiAgICAgW2F1dGgta3JiNS5jXQogICAgIFBlcmZvcm0gS2VyYmVyb3MgY2FsbHMgZXZlbiBmb3IgaW52YWxpZCB1c2VycyB0byBwcmV2ZW50IGxlYWtpbmcKICAgICBpbmZvcm1hdGlvbiBhYm91dCBhY2NvdW50IHZhbGlkaXR5LiAgYnogIzk3NSwgcGF0Y2ggb3JpZ2luYWxseSBmcm9tCiAgICAgU2VudGhpbCBLdW1hciwgc2FuaXR5IGNoZWNrZWQgYnkgU2ltb24gV2lsa2luc29uLCB0ZXN0ZWQgYnkgZGptQCwgYmlvcm5ALAogICAgIG9rIG1hcmt1c0AKICAgLSBkdHVja2VyQGN2cy5vcGVuYnNkLm9yZyAyMDA1LzExLzIyIDAzOjM2OjAzCiAgICAgW2hvc3RmaWxlLmNdCiAgICAgQ29ycmVjdCBmb3JtYXQvYXJndW1lbnRzIHRvIGRlYnVnIGNhbGw7IHNwb3R0ZWQgYnkgc2hhdyBhdCB2cmFuaXguY29tCiAgICAgb2sgZGptQAogLSAoZHR1Y2tlcikgW2xvZ2lucmVjLmNdIEFkZCBjYXN0cyB0byBwcmV2ZW50IGNvbXBpbGVyIHdhcm5pbmdzLCBwYXRjaAogICBmcm9tIHNoYXcgYXQgdnJhbml4LmNvbS4KCjIwMDUxMTIwCiAtIChkdHVja2VyKSBbb3BlbmJzZC1jb21wYXQvb3BlbnNzbC1jb21wYXQuaF0gQWRkIGNvbW1lbnQgZXhwbGFpbmluZyB3aGF0CiAgIGlzIGdvaW5nIG9uLgoKMjAwNTExMTIKIC0gKGR0dWNrZXIpIFtvcGVuYnNkLWNvbXBhdC9nZXRycnNldGJ5bmFtZS5jXSBSZXN0b3JlIFBvcnRhYmxlLXNwZWNpZmljCiAgIGlmZGVmIGxvc3QgZHVyaW5nIHN5bmMuICBTcG90dGVkIGJ5IHRpbUAuCiAtIChkdHVja2VyKSBbb3BlbmJzZC1jb21wYXQve3JlYWxwYXRoLmMsc3Ryb2xsLmMscnJlc3Zwb3J0LmN9XSAkT3BlbkJTRCB0YWcuCiAtIChkdHVja2VyKSBbY29uZmlndXJlLmFjXSBVc2UgIiRBV0siIGluc3RlYWQgb2YgImF3ayIgaW4gZ2NjIHZlcnNpb24gdGVzdC4KIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWNdIFJlbW92ZSBkdXBsaWNhdGUgdXRpbWVzKCkgY2hlY2suICBvayBkam1ACiAtIChkdHVja2VyKSBbcmVncmVzcy9yZWNvbmZpZ3VyZS5zaF0gRml4IHBvdGVudGlhbCByYWNlIGluIHRoZSByZWNvbmZpZ3VyZQogICB0ZXN0OiBpZiBzc2hkIHRha2VzIHRvbyBsb25nIHRvIHJlY29uZmlndXJlIHRoZSBzdWJzZXF1ZW50IGNvbm5lY3Rpb24gd2lsbAogICBmYWlsLiAgWmFwIHBpZGZpbGUgYmVmb3JlIEhVUGluZyBzc2hkIHdoaWNoIHdpbGwgcmV3cml0ZSBpdCB3aGVuIGl0J3MgcmVhZHkuCgoyMDA1MTExMAogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L3NldGVudi5jXSBNZXJnZSBjaGFuZ2VzIGZvciBfX2ZpbmRlbnYgZnJvbQogICBPcGVuQlNEIGdldGVudi5jIHJldnMgMS40IC0gMS44IChBTlNJZmljYXRpb24gb2YgYXJndW1lbnRzLCByZW1vdmFsIG9mCiAgICJyZWdpc3RlciIpLgogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L3NldGVudi5jXSBNYWtlIF9fZmluZGVudiBzdGF0aWMsIHJlbW92ZQogICB1bm5lY2Vzc2FyeSBwcm90b3R5cGUuCiAtIChkdHVja2VyKSBbb3BlbmJzZC1jb21wYXQvc2V0ZW52LmNdIFN5bmMgY2hhbmdlcyBmcm9tIE9wZW5CU0Qgc2V0ZW52LmMKICAgcmV2cyAxLjcgLSAxLjkuCiAtIChkdHVja2VyKSBbYXV0aC1rcmI1LmNdIEZpeCAtV3NpZ24tY29tcGFyZSB3YXJuaW5nIGluIG5vbi1IZWltZGFsIHBhdGguCiAgIFBhdGNoIGZyb20gZGptQC4KIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWNdIERpc2FibGUgcG9pbnRlci1zaWduIHdhcm5pbmdzIG9uIGdjYyA0LjArCiAgIHNpbmNlIHRoZXkncmUgbm90IHVzZWZ1bCByaWdodCBub3cuICBQYXRjaCBmcm9tIGRqbUAuCiAtIChkdHVja2VyKSBbb3BlbmJzZC1jb21wYXQvZ2V0Z3JvdXBsaXN0LmNdIFN5bmMgT3BlbkJTRCByZXZzIDEuMTAgLSAxLjIgKEFOU0kKICAgcHJvdG90eXBlcywgcmVtb3ZhbCBvZiAicmVnaXN0ZXIiKS4KIC0gKGR0dWNrZXIpIFtvcGVuYnNkLWNvbXBhdC9zdHJsY2F0LmNdIFN5bmMgT3BlbkJTRCByZXZzIDEuMTEgLSAxLjEyIChyZW1vdmFsCiAgIG9mICJyZWdpc3RlciIpLgogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L3tMT1RTfV0gTW92ZSB0aGUgIk9QRU5CU0QgT1JJR0lOQUwiIG1hcmtlcnMgdG8KICAgYWZ0ZXIgdGhlIGNvcHlyaWdodCBub3RpY2VzLiAgSGF2aW5nIHRoZW0gYXQgdGhlIHRvcCBuZXh0IHRvIHRoZSBDVlNJRHMKICAgZ3VhcmFudGVlcyBhIGNvbmZsaWN0IGZvciBlYWNoIGFuZCBldmVyeSBzeW5jLgogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L3N0cmxjcHkuY10gVXBkYXRlIGZyb20gT3BlbkJTRCAxLjggLT4gMS4xMC4KIC0gKGR0dWNrZXIpIFtvcGVuYnNkLWNvbXBhdC9zaWdhY3QuaF0gQWRkICJPUEVOQlNEIE9SSUdJTkFMIiBtYXJrZXIuCiAtIChkdHVja2VyKSBbb3BlbmJzZC1jb21wYXQvc3RybW9kZS5jXSBVcGRhdGUgZnJvbSBPcGVuQlNEIDEuNSAtPiAxLjcuCiAgIFJlbW92YWwgb2YgcmNzaWQsICJ3aGl0ZW91dCIgaW5vZGUgdHlwZS4KIC0gKGR0dWNrZXIpIFtvcGVuYnNkLWNvbXBhdC9iYXNlbmFtZS5jXSBVcGRhdGUgZnJvbSBPcGVuQlNEIDEuMTEgLT4gMS4xNC4KICAgUmVtb3ZhbCBvZiByY3NpZCwgd2lsbCBubyBsb25nZXIgc3RybGNweSBwYXJ0cyBvZiB0aGUgc3RyaW5nLgogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L3N0cnRvbGwuY10gVXBkYXRlIGZyb20gT3BlbkJTRCAxLjQgLT4gMS41LgogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L3N0cnRvdWwuY10gVXBkYXRlIGZyb20gT3BlbkJTRCAxLjUgLT4gMS43LgogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L3JlYWRwYXNzcGhyYXNlLmNdIFVwZGF0ZSBmcm9tIE9wZW5CU0QgMS4xNiAtPiAxLjE4LgogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L3JlYWRwYXNzcGhyYXNlLmhdIFVwZGF0ZSBmcm9tIE9wZW5CU0QgMS4zIC0+IDEuNS4KIC0gKGR0dWNrZXIpIFtvcGVuYnNkLWNvbXBhdC9nbG9iLmNdIFVwZGF0ZSBmcm9tIE9wZW5CU0QgMS4yMiAtPiAxLjI1LgogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L2dsb2IuaF0gVXBkYXRlIGZyb20gT3BlbkJTRCAxLjggLT4gMS45LgogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L2dldGN3ZC5jXSBVcGRhdGUgZnJvbSBPcGVuQlNEIDEuOSAtPiAxLjE0LgogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L2dldGN3ZC5jXSBSZXBsYWNlIGxzdGF0IHdpdGggZnN0YXQgdG8gbWF0Y2ggdXAKICAgd2l0aCBPcGVuQlNEIGNvZGUgc2luY2Ugd2UgZG9uJ3Qgc3VwcG9ydCBwbGF0Zm9ybXMgd2l0aG91dCBmc3RhdCBhbnkgbW9yZS4KIC0gKGR0dWNrZXIpIFtvcGVuYnNkLWNvbXBhdC9pbmV0X2F0b24uY10gVXBkYXRlIGZyb20gT3BlbkJTRCAxLjcgLT4gMS45LgogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L2luZXRfbnRvYS5jXSBVcGRhdGUgZnJvbSBPcGVuQlNEIDEuNCAtPiAxLjYuCiAtIChkdHVja2VyKSBbb3BlbmJzZC1jb21wYXQvaW5ldF9udG9wLmNdIFVwZGF0ZSBmcm9tIE9wZW5CU0QgMS41IC0+IDEuNy4KIC0gKGR0dWNrZXIpIFtvcGVuYnNkLWNvbXBhdC9kYWVtb24uY10gVXBkYXRlIGZyb20gT3BlbkJTRCAxLjUgLT4gMS42LgogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L3N0cnNlcC5jXSBVcGRhdGUgZnJvbSBPcGVuQlNEIDEuNSAtPiAxLjYuCiAtIChkdHVja2VyKSBbb3BlbmJzZC1jb21wYXQvZGFlbW9uLmNdIFVwZGF0ZSBmcm9tIE9wZW5CU0QgMS4xMCAtPiAxLjEzLgogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L21rdGVtcC5jXSBVcGRhdGUgZnJvbSBPcGVuQlNEIDEuMTcgLT4gMS4xOS4KIC0gKGR0dWNrZXIpIFtvcGVuYnNkLWNvbXBhdC9ycmVzdnBvcnQuY10gVXBkYXRlIGZyb20gT3BlbkJTRCAxLjYgLT4gMS44LgogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L2JpbmRyZXN2cG9ydC5jXSBBZGQgIk9QRU5CU0QgT1JJR0lOQUwiIG1hcmtlci4KIC0gKGR0dWNrZXIpIFtvcGVuYnNkLWNvbXBhdC9iaW5kcmVzdnBvcnQuY10gVXBkYXRlIGZyb20gT3BlbkJTRCAxLjE2IC0+IDEuMTcuCiAtIChkdHVja2VyKSBbb3BlbmJzZC1jb21wYXQvc2lnYWN0LmNdIFVwZGF0ZSBmcm9tIE9wZW5CU0QgMS4zIC0+IDEuNC4KICAgSWQgYW5kIGNvcHlyaWdodCBzeW5jIG9ubHksIHRoZXJlIHdlcmUgbm8gc3Vic3RhbnRpYWwgY2hhbmdlcyB3ZSBuZWVkLgogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L2JzZC1jbG9zZWZyb20uYyBvcGVuYnNkLWNvbXBhdC9iYXNlNjQuY10KICAgLVdzaWduLWNvbXBhcmUgZml4ZXMgZnJvbSBkam0uCiAtIChkdHVja2VyKSBbb3BlbmJzZC1jb21wYXQvc2lnYWN0LmhdIFVwZGF0ZSBmcm9tIE9wZW5CU0QgMS4yIC0+IDEuMy4KICAgSWQgYW5kIGNvcHlyaWdodCBzeW5jIG9ubHksIHRoZXJlIHdlcmUgbm8gc3Vic3RhbnRpYWwgY2hhbmdlcyB3ZSBuZWVkLgogLSAoZHR1Y2tlcikgW2NvbmZpZ3VyZS5hY10gVHJ5IHRvIGdldCB0aGUgZ2NjIHZlcnNpb24gbnVtYmVyIGluIGEgd2F5IHRoYXQKICAgZG9lc24ndCBjaGFuZ2UgYmV0d2VlbiB2ZXJzaW9ucywgYW5kIHVzZSBhIHNhZmVyIGRlZmF1bHQuCgoyMDA1MTEwNQogLSAoZGptKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDA1LzEwLzA3IDExOjEzOjU3CiAgICAgW3NzaC1rZXlnZW4uY10KICAgICBjaGFuZ2UgRFNBIGRlZmF1bHQgYmFjayB0byAxMDI0LCBhcyBpdCdzIGRlZmluZWQgZm9yIDEwMjQgYml0cyBvbmx5CiAgICAgYW5kIHRoaXMgY2F1c2VzIGludGVyb3AgcHJvYmxlbXMgd2l0aCBvdGhlciBjbGllbnRzLiAgbW9yZW92ZXIsCiAgICAgaW4gb3JkZXIgdG8gaW1wcm92ZSB0aGUgc2VjdXJpdHkgb2YgRFNBIHlvdSBuZWVkIHRvIGNoYW5nZSBtb3JlCiAgICAgY29tcG9uZW50cyBvZiBEU0Ega2V5IGdlbmVyYXRpb24gKGUuZy4gdGhlIGludGVybmFsIFNIQTEgaGFzaCk7CiAgICAgb2sgZGVyYWFkdAogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNS8xMC8xMCAxMDoyMzowOAogICAgIFtjaGFubmVscy5jIGNoYW5uZWxzLmggY2xpZW50bG9vcC5jIHNlcnZlcmxvb3AuYyBzZXNzaW9uLmNdCiAgICAgZml4IHJlZ3Jlc3Npb24gSSBpbnRyb2R1Y2VkIGluIDQuMjogWDExIGZvcndhcmRpbmdzIGluaXRpYXRlZCBhZnRlcgogICAgIGEgc2Vzc2lvbiBoYXMgZXhpdGVkIChlLmcuICIoc2xlZXAgNTsgeHRlcm0pICYiKSB3b3VsZCBub3Qgc3RhcnQuCiAgICAgYnogIzEwODYgcmVwb3J0ZWQgYnkgdDhtIEFUIGNlbnRydW0uY3o7IG9rIG1hcmt1c0AgZHR1Y2tlckAKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDUvMTAvMTEgMjM6Mzc6MzcKICAgICBbY2hhbm5lbHMuY10KICAgICBieiAjMTA3NiBzZXQgU09fUkVVU0VBRERSIG9uIFgxMSBmb3J3YXJkaW5nIGxpc3RuZXIgc29ja2V0cywgcHJldmVudGluZwogICAgIGJpbmQoKSBmYWlsdXJlIHdoZW4gYSBwcmV2aW91cyBjb25uZWN0aW9uJ3MgbGlzdGVuZXJzIGFyZSBpbiBUSU1FX1dBSVQsCiAgICAgcmVwb3J0ZWQgYnkgcGxhdHRuZXIgQVQgaW5mLmV0aHouY2g7IG9rIGR0dWNrZXJACiAgIC0gc3RldmVza0BjdnMub3BlbmJzZC5vcmcgMjAwNS8xMC8xMyAxNDowMzowMQogICAgIFthdXRoMi1nc3MuYyBnc3MtZ2Vuci5jIGdzcy1zZXJ2LmNdCiAgICAgcmVtb3ZlIHVubmVlZGVkICNpbmNsdWRlczsgb2sgbWFya3VzQAogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDUvMTAvMTMgMTQ6MjA6MzcKICAgICBbZ3NzLXNlcnYuY10KICAgICBzcGVsbGluZyBpbiBjb21tZW50cwogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDUvMTAvMTMgMTk6MDg6MDgKICAgICBbZ3NzLXNlcnYta3JiNS5jIGdzcy1zZXJ2LmNdCiAgICAgdW51c2VkIGRlY2xhcmF0aW9uczsgb2sgZGVyYWFkdEAKICAgICAoaWQgc3luYyBvbmx5IGZvciBnc3Mtc2Vydi1rcmI1LmMpCiAgIC0gc3RldmVza0BjdnMub3BlbmJzZC5vcmcgMjAwNS8xMC8xMyAxOToxMzo0MQogICAgIFtkbnMuY10KICAgICB1bm5lZWRlZCAjaW5jbHVkZSwgdW51c2VkIGRlY2xhcmF0aW9uLCBsaXR0bGUga25mOyBvayBkZXJhYWR0QAogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDUvMTAvMTMgMjI6MjQ6MzEKICAgICBbYXV0aDItZ3NzLmMgZ3NzLWdlbnIuYyBnc3Mtc2Vydi5jIG1vbml0b3IuY10KICAgICBLTkY7IG9rIGRqbUAKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDA1LzEwLzE0IDAyOjE3OjU5CiAgICAgW3NzaC1rZXlnZW4uYyBzc2guYyBzc2hjb25uZWN0Mi5jXQogICAgIG5vIHRyYWlsaW5nICJcbiIgZm9yIGxvZyBmdW5jdGlvbnM7IG9rIGRqbUAKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDA1LzEwLzE0IDAyOjI5OjM3CiAgICAgW2NoYW5uZWxzLmMgY2xpZW50bG9vcC5jXQogICAgIGZyZWUoKS0+eGZyZWUoKTsgb2sgZGptQAogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDUvMTAvMTUgMTU6Mjg6MTIKICAgICBbc3NoY29ubmVjdC5jXQogICAgIG1ha2UgZXh0ZXJuYWwgZGVmaW5pdGlvbiBzdGF0aWM7IG9rIGRlcmFhZHRACiAgIC0gc3RldmVza0BjdnMub3BlbmJzZC5vcmcgMjAwNS8xMC8xNyAxMzo0NTowNQogICAgIFtkbnMuY10KICAgICBmaXggbWVtb3J5IGxlYWtzIGZyb20gMiBzb3VyY2VzOgogICAgICAgICAxKSBrZXlfZmluZ2VycHJpbnRfcmF3KCkKICAgICAgICAgMikgbWFsbG9jIGluIGRuc19yZWFkX3JkYXRhKCkKICAgICBvayBqYWtvYkAKICAgLSBzdGV2ZXNrQGN2cy5vcGVuYnNkLm9yZyAyMDA1LzEwLzE3IDE0OjAxOjI4CiAgICAgW2Rucy5jXQogICAgIHJlbW92ZSAjaWZkZWYgTFdSRVM7IG9rIGpha29iQAogICAtIHN0ZXZlc2tAY3ZzLm9wZW5ic2Qub3JnIDIwMDUvMTAvMTcgMTQ6MTM6MzUKICAgICBbZG5zLmMgZG5zLmhdCiAgICAgbW9yZSBjbGVhbnVwczsgb2sgamFrb2JACiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA1LzEwLzMwIDAxOjIzOjE5CiAgICAgW3NzaF9jb25maWcuNV0KICAgICBtZW50aW9uIGNvbnRyb2wgc29ja2V0IGZhbGxiYWNrIGJlaGF2aW91ciwgcmVwb3J0ZWQgYnkgCiAgICAgdHJ5cG9ucmFqIEFUIGdtYWlsLmNvbQogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNS8xMC8zMCAwNDowMTowMwogICAgIFtzc2gta2V5c2Nhbi5jXQogICAgIG1ha2Ugc3NoLWtleWdlbiBkaXNjYXJkIGp1bmsgZnJvbSBzZXJ2ZXIgYmVmb3JlIFNTSC0gaWRlbnQsIHNwb3R0ZWQgYnkKICAgICBkYXZlIEFUIGNpcnQubmV0OyBvayBkdHVja2VyQAogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNS8xMC8zMCAwNDowMzoyNAogICAgIFtzc2guY10KICAgICBmaXggbWlzbGVhZGluZyBkZWJ1ZyBtZXNzYWdlOyBvayBkdHVja2VyQAogICAtIGR0dWNrZXJAY3ZzLm9wZW5ic2Qub3JnIDIwMDUvMTAvMzAgMDg6Mjk6MjkKICAgICBbY2Fub2hvc3QuYyBzc2hkLmNdCiAgICAgQ2hlY2sgZm9yIGNvbm5lY3Rpb25zIHdpdGggSVAgb3B0aW9ucyBlYXJsaWVyIGFuZCBkcm9wIHNpbGVudGx5LiAgb2sgZGptQAogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwNS8xMC8zMCAwODo0Mzo0NwogICAgIFtzc2hfY29uZmlnLjVdCiAgICAgcmVtb3ZlIHRyYWlsaW5nIHdoaXRlc3BhY2U7CiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA1LzEwLzMwIDA4OjUyOjE4CiAgICAgW2NsaWVudGxvb3AuYyBwYWNrZXQuYyBzZXJ2ZXJsb29wLmMgc2Vzc2lvbi5jIHNzaC1hZ2VudC5jIHNzaC1rZXlnZW4uY10KICAgICBbc3NoLmMgc3NoY29ubmVjdC5jIHNzaGNvbm5lY3QxLmMgc3NoZC5jXQogICAgIG5vIG5lZWQgdG8gZXNjYXBlIHNpbmdsZSBxdW90ZXMgaW4gY29tbWVudHMsIG5vIGJpbmFyeSBjaGFuZ2UKICAgLSBkdHVja2VyQGN2cy5vcGVuYnNkLm9yZyAyMDA1LzEwLzMxIDA2OjE1OjA0CiAgICAgW3NmdHAuY10KICAgICBGaXggc29ydGluZyB3aXRoICJscyAtMSIgY29tbWFuZC4gRnJvbSBSb2JlcnQgVHNhaSwgImxvb2tzIHJpZ2h0IiBkZXJhYWR0QAogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNS8xMC8zMSAxMToxMjo0OQogICAgIFtzc2gta2V5Z2VuLjEgc3NoLWtleWdlbi5jXQogICAgIGdlbmVyYXRlIGEgcHJvdG9jb2wgMiBSU0Ega2V5IGJ5IGRlZmF1bHQKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDUvMTAvMzEgMTE6NDg6MjkKICAgICBbc2VydmVybG9vcC5jXQogICAgIG1ha2Ugc3VyZSB3ZSBjbGVhbiB1cCB3dG1wLCBldGMuIGZpbGUgd2hlbiB3ZSByZWNlaXZlIGEgU0lHVEVSTSwKICAgICBTSUdJTlQgb3IgU0lHUVVJVCB3aGVuIHJ1bm5pbmcgd2l0aG91dCBwcml2aWxlZ2Ugc2VwYXJhdGlvbiAodGhlCiAgICAgbm9ybWFsIHByaXZzZXAgY2FzZSBpcyBhbHJlYWR5IE9LKS4gUGF0Y2ggbWFpbmx5IGJ5IGR0dWNrZXJAIGFuZAogICAgIHNlbnRoaWxrdW1hcl9zZW4gQVQgaG90cG9wLmNvbTsgb2sgZHR1Y2tlckAKICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDUvMTAvMzEgMTk6NTU6MjUKICAgICBbc3NoLWtleWdlbi4xXQogICAgIGdyYW1tYXI7CiAgIC0gZHR1Y2tlckBjdnMub3BlbmJzZC5vcmcgMjAwNS8xMS8wMyAxMzozODoyOQogICAgIFtjYW5vaG9zdC5jXQogICAgIENhY2hlIHJldmVyc2UgbG9va3VwcyB3aXRoIGFuZCB3aXRob3V0IEROUyBzZXBhcmF0ZWx5OyBvayBtYXJrdXNACiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA1LzExLzA0IDA1OjE1OjU5CiAgICAgW2tleC5jIGtleC5oIGtleGRoLmMga2V4ZGhjLmMga2V4ZGhzLmMga2V4Z2V4LmMga2V4Z2V4Yy5jIGtleGdleHMuY10KICAgICByZW1vdmUgaGFyZGNvZGVkIGhhc2ggbGVuZ3RocyBpbiBrZXkgZXhjaGFuZ2UgY29kZSwgYWxsb3dpbmcKICAgICBpbXBsZW1lbnRhdGlvbiBvZiBLRVggbWV0aG9kcyB3aXRoIGRpZmZlcmVudCBoYXNoZXMgKGUuZy4gU0hBLTI1Nik7CiAgICAgb2sgbWFya3VzQCBkdHVja2VyQCBzdGV2ZXNrQAogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNS8xMS8wNSAwNTowMToxNQogICAgIFtidWZhdXguY10KICAgICBGaXggbGVha3MgaW4gZXJyb3IgcGF0aHMsIGJ6ICMxMTA5IGFuZCAjMTExMCByZXBvcnRlZCBieSBrcmVtZW5layBBVAogICAgIGNzLnN0YW5mb3JkLmVkdTsgb2sgZHR1Y2tlckAKIC0gKGR0dWNrZXIpIFtSRUFETUUucGxhdGZvcm1dIEFkZCBQQU0gc2VjdGlvbi4KIC0gKGRqbSkgW29wZW5ic2QtY29tcGF0L2dldHJyc2V0YnluYW1lLmNdIFN5bmMgdG8gbGF0ZXN0IE9wZW5CU0QgdmVyc2lvbiwKICAgcmVzb2x2aW5nIG1lbW9yeSBsZWFrIGJ6IzExMTEgcmVwb3J0ZWQgYnkga3JlbWVuZWsgQVQgY3Muc3RhbmZvcmQuZWR1OwogICBvayBkdHVja2VyQAoKMjAwNTExMDIKIC0gKGR0dWNrZXIpIFtvcGVuYnNkLWNvbXBhdC9ic2QtbWlzYy5jXSBCdWcgIzExMDg6IGZpeCBicm9rZW4gc3RyZHVwKCkuCiAgIFJlcG9ydGVkIGJ5IG9sYXZpIGF0IGlwdW5wbHVnZ2VkLmNvbSBhbmQgYW50b2luZS5icm9kaW4gYXQgbGFwb3N0ZS5uZXQKICAgdmlhIEZyZWVCU0QuCgoyMDA1MTAzMAogLSAoZGptKSBbY29udHJpYi9zdXNlL29wZW5zc2guc3BlYyBjb250cmliL3N1c2UvcmMuCiAgIHNzaGQgY29udHJpYi9zdXNlL3N5c2NvbmZpZy5zc2hdIEJ1ZyAjMTEwNjogVXBkYXRlZCBTdVNFIHNwZWMgYW5kIGluaXQgCiAgIGZpbGVzIGZyb20gaW1vcmdhbiBBVCBuYXMubmFzYS5nb3YKIC0gKGR0dWNrZXIpIFtzZXNzaW9uLmNdIEJ1ZyAjMTA0NWRvIG5vdCBjaGVjayAvZXRjL25vbG9naW4gd2hlbiBQQU0gaXMKICAgZW5hYmxlZCwgaW5zdGVhZCBhbGxvdyBQQU0gdG8gaGFuZGxlIGl0LiAgTm90ZSB0aGF0IG9uIHBsYXRmb3JtcyB1c2luZyBQQU0sCiAgIHRoZSBwYW1fbm9sb2dpbiBtb2R1bGUgc2hvdWxkIGJlIGFkZGVkIHRvIHNzaGQncyBzZXNzaW9uIHN0YWNrIGluIG9yZGVyIHRvCiAgIG1haW50YWluIGV4aXNpbmcgYmVoYXZpb3VyLiAgQmFzZWQgb24gcGF0Y2ggYW5kIGRpc2N1c3Npb24gZnJvbSB0OG0gYXQKICAgY2VudHJ1bS5jeiwgb2sgZGptQAoKMjAwNTEwMjUKIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWNdIFJlbG9jYXRlIExMT05HX01BWCBjYWxjdWxhdGlvbiB0byBhZnRlciB0aGUKICAgc2l6ZW9mKGxvbmcgbG9uZykgY2hlY2tzLCB0byBtYWtlIGZpeGluZyBidWcgIzExMDQgZWFzaWVyIChubyBjaGFuZ2VzCiAgIHlldCkuCiAtIChkdHVja2VyKSBbY29uZmlndXJlLmFjXSBCdWcgIzExMDQ6IFRydTY0J3MgcHJpbnRmIGZhbWlseSBkb2Vzbid0CiAgIHVuZGVyc3RhbmQgIiVsbGQiLCBldmVuIHRob3VnaCB0aGUgY29tcGlsZXIgaGFzICJsb25nIGxvbmciLCBzbyBoYW5kbGUKICAgaXQgYXMgYSBzcGVjaWFsIGNhc2UuICBQYXRjaCB0ZXN0ZWQgYnkgbWNhc2tpbGwuc2NvdHQgYXQgZXBhLmdvdi4KIC0gKGR0dWNrZXIpIFtjb250cmliL2N5Z3dpbi9zc2gtdXNlci1jb25maWddIFJlbW92ZSBkdXBsaWNhdGUgeWVzL25vCiAgIHByb21wdC4gIFBhdGNoIGZyb20gdmluc2NoZW4gYXQgcmVkaGF0LmNvbS4KCjIwMDUxMDE3CiAtIChkdHVja2VyKSBbY29uZmlndXJlLmFjXSBCdWcgIzEwOTc6IEZpeCBjb25maWd1cmUgZm9yIGNyb3NzLWNvbXBpbGluZy4KICAgL2V0Yy9kZWZhdWx0L2xvZ2luIHJlcG9ydCBhbmQgdGVzdGluZyBmcm9tIGFhYmFrZXIgYXQgaWVlLm9yZywgY29ycmVjdGlvbnMKICAgZnJvbSB0aW1ALgoKMjAwNTEwMDkKIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWMgZGVmaW5lcy5oIG9wZW5ic2QtY29tcGF0L3Zpcy57YyxofV0gU3luYyBjdXJyZW50CiAgIHZlcnNpb25zIGZyb20gT3BlbkJTRC4gIG9rIGRqbUAKCjIwMDUxMDA4CiAtIChkdHVja2VyKSBbY29uZmlndXJlLmFjXSBCdWcgIzEwOTg6IGRlZmluZSAkTUFJTCBmb3IgSFAtVVg7IHJlcG9ydCBmcm9tCiAgIGJyaWFuLnNtaXRoIGF0IGFnaWxlbnQgY29tLgogLSAoZGptKSBbY29uZmlndXJlLmFjXSBtaXNzaW5nICd0ZXN0JyBjYWxsIGZvciAtd2l0aC1XZXJyb3IgdGVzdAoKMjAwNTEwMDUKIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWMgc3NoZC44XSBFbmFibGUgbG9ja2VkIGFjY291bnQgY2hlY2sgKGEgcHJlcGVuZGVkCiAgICIqTE9DS0VEKiIgc3RyaW5nKSBmb3IgRnJlZUJTRC4gIFBhdGNoIGplcmVtaWUgYXQgbGUtaGVuLm9yZyBhbmQKICAgc2VudGhpbGt1bWFyX3NlbiBhdCBob3Rwb3AuY29tLgoKMjAwNTEwMDMKIC0gKGR0dWNrZXIpIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDUvMDkvMDcgMDg6NTM6NTMKICAgICBbY2hhbm5lbHMuY10KICAgICBlbmZvcmNlIGNoYW5pZCAhPSBOVUxMOyBvayBkam0KICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDUvMDkvMDkgMTk6MTg6MDUKICAgICBbY2xpZW50bG9vcC5jXQogICAgIHR5cG87IGZyb20gbWFyayBhdCBtY3MudnV3LmFjLm56LCBidWcgIzEwODIKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDUvMDkvMTMgMjM6NDA6MDcKICAgICBbc3NoZC5jIHNzaC5jIG1pc2MuaCBzZnRwLmMgc3NoLWtleWdlbi5jIHNzaC1rZXlzaWduLmMgc2Z0cC1zZXJ2ZXIuYwogICAgIHNjcC5jIG1pc2MuYyBzc2gta2V5c2Nhbi5jIHNzaC1hZGQuYyBzc2gtYWdlbnQuY10KICAgICBlbnN1cmUgdGhhdCBzdGRpbyBmZHMgYXJlIGF0dGFjaGVkOyBvayBkZXJhYWR0QAogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNS8wOS8xOSAxMTozNzozNAogICAgIFtzc2hfY29uZmlnLjUgc3NoLjFdCiAgICAgbWVudGlvbiBhYmlsaXR5IHRvIHNwZWNpZnkgYmluZF9hZGRyZXNzIGZvciBEeW5hbWljRm9yd2FyZCBhbmQgLUQgb3B0aW9uczsKICAgICBieiMxMDc3IHNwb3R0ZWQgYnkgSGFydXlhbWEgU2VpZ28KICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDUvMDkvMTkgMTE6NDc6MDkKICAgICBbc3NoZC5jXQogICAgIHN0b3AgY29ubmVjdGlvbiBhYm9ydCBvbiByZWtleSB3aXRoIGRlbGF5ZWQgY29tcHJlc3Npb24gZW5hYmxlZCB3aGVuCiAgICAgcG9zdC1hdXRoIHByaXZzZXAgaXMgZGlzYWJsZWQgKGUuZy4gd2hlbiByb290IGlzIGxvZ2dlZCBpbik7IG9rIGR0dWNrZXJACiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA1LzA5LzE5IDExOjQ4OjEwCiAgICAgW2dzcy1zZXJ2LmNdCiAgICAgdHlwbwogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwNS8wOS8xOSAxNTozODoyNwogICAgIFtzc2guMV0KICAgICBzb21lIG1vcmUgLkJrLy5FayB0byBhdm9pZCB1Z2x5IGxpbmUgc3BsaXQ7CiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDA1LzA5LzE5IDE1OjQyOjQ0CiAgICAgW3NzaC5jXQogICAgIHVwZGF0ZSAtRCB1c2FnZSBoZXJlIHRvbzsKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDUvMDkvMTkgMjM6MzE6MzEKICAgICBbc3NoLjFdCiAgICAgc3BlbGxpbmcgbml0IGZyb20gc3RldmVza0AKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDUvMDkvMjEgMjM6MzY6NTQKICAgICBbc3NoZF9jb25maWcuNV0KICAgICBhcXVpcmUgLT4gYWNxdWlyZSwgZnJvbSBzdGV2ZXNrQAogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNS8wOS8yMSAyMzozNzoxMQogICAgIFtzc2hkLmNdCiAgICAgY2hhbmdlIGxhYmVsIGF0IG1hcmt1c0AncyByZXF1ZXN0CiAgIC0gamFyZWR5QGN2cy5vcGVuYnNkLm9yZyAyMDA1LzA5LzMwIDIwOjM0OjI2CiAgICAgW3NzaC1rZXlzY2FuLjFdCiAgICAgZGVwbG95IC5BbiAtbm9zcGxpdDsgb2sgam1jCiAgIC0gZHR1Y2tlckBjdnMub3BlbmJzZC5vcmcgMjAwNS8xMC8wMyAwNzo0NDo0MgogICAgIFtjYW5vaG9zdC5jXQogICAgIFJlbG9jYXRlIGNoZWNrX2lwX29wdGlvbnMgY2FsbCB0byBwcmV2ZW50IGxvZ2dpbmcgb2YgZ2FyYmFnZSBmb3IKICAgICBjb25uZWN0aW9ucyB3aXRoIElQIG9wdGlvbnMgc2V0LiAgYnojMTA5MiBmcm9tIERhdmlkIExlb25hcmQsCiAgICAgImxvb2tzIGdvb2QiIGRlcmFhZHRACiAtIChkdHVja2VyKSBbcmVncmVzcy9SRUFETUUucmVncmVzc10gQnVnICM5ODk6IERvY3VtZW50IGxpbWl0YXRpb24gdGhhdCBzY3AKICAgaXMgcmVxdWlyZWQgaW4gdGhlIHN5c3RlbSBwYXRoIGZvciB0aGUgbXVsdGlwbGV4IHRlc3QgdG8gd29yay4KCjIwMDUwOTMwCiAtIChkdHVja2VyKSBbb3BlbmJzZC1jb21wYXQvb3BlbmJzZC1jb21wYXQuaF0gQnVnICMxMDk2OiBBZGQgcHJvdG90eXBlCiAgIGZvciBzdHJ0b2xsLiAgUGF0Y2ggZnJvbSBvLmZsZWJiZSBhdCBzY2llbmNlLWNvbXB1dGluZy5kZS4KIC0gKGR0dWNrZXIpIFttb25pdG9yLmNdIEJ1ZyAjMTA4NzogU2VuZCBsb2dpbm1zZyB0byBwcmVhdXRoIHByaXZzZXAKICAgY2hpbGQgZHVyaW5nIFBBTSBhY2NvdW50IGNoZWNrIHdpdGhvdXQgY2xlYXJpbmcgaXQuICBUaGlzIHJlc3RvcmVzIHRoZQogICBwb3N0LWxvZ2luIHdhcm5pbmdzIHN1Y2ggYXMgTERBUCBwYXNzd29yZCBleHBpcnkuICBQYXRjaCBmcm9tIFRvbWFzIE1yYXoKICAgd2l0aCBoZWxwIGZyb20gc2V2ZXJhbCBvdGhlcnMuCgoyMDA1MDkyOQogLSAoZHR1Y2tlcikgW21vbml0b3Jfd3JhcC5jXSBSZW1vdmUgZHVwbGljYXRlIGRlZmluaXRpb24gb2YgbG9naW5tc2cKICAgaW50cm9kdWNlZCBkdXJpbmcgc3luYy4KCjIwMDUwOTI4CiAtIChkdHVja2VyKSBbZW50cm9weS5jXSBVc2UgdV9jaGFyIGZvciByZWNlaXZpbmcgUk5HIHNlZWQgZm9yIGNvbnNpc3RlbmN5LgogLSAoZHR1Y2tlcikgW2F1dGgtcGFtLmNdIEJ1ZyAjMTAyODogc2VuZCBmaW5hbCBub24tcXVlcnkgbWVzc2FnZXMgZnJvbQogICBQQU0gdmlhIGtleWJvYXJkLWludGVyYWN0aXZlLiAgUGF0Y2ggdGVzdGVkIGJ5IHRoZSBmb2xrcyBhdCBWaW50ZWxhLgoKMjAwNTA5MjcKIC0gKGR0dWNrZXIpIFtlbnRyb3B5LmNdIFJlbW92ZSB1bm5lY2Vzc2FyeSB0ZXN0cyBmb3IgZ2V0dWlkIGFuZCBnZXRldWlkCiAgIGNhbGxzLCBzaW5jZSB0aGV5IGNhbid0IHBvc3NpYmx5IGZhaWwuICBvayBkam1ACiAtIChkdHVja2VyKSBbZW50cm9weS5jIGVudHJvcHkuaCBzc2hkLmNdIFBhc3MgUk5HIHNlZWQgdG8gdGhlIHJlZXhlYydlZAogICBwcm9jZXNzIHdoZW4gc3NoZCByZWxpZXMgb24gc3NoLXJhbmRvbS1oZWxwZXIuICBTaG91bGQgcmVzdWx0IGluIGZhc3RlcgogICBsb2dpbnMgb24gc3lzdGVtcyB3aXRob3V0IGEgcmVhbCByYW5kb20gZGV2aWNlIG9yIHBybmdkLiAgb2sgZGptQAoKMjAwNTA5MjQKIC0gKGR0dWNrZXIpIFthdXRoMi5jXSBNb3ZlIHN0YXJ0X3BhbSgpIGNhbGxzIG91dCBvZiBpZi1lbHNlIGJsb2NrIHRvIHJlbW92ZQogICBkdXBsaWNhdGUgY2FsbC4gIG9rIGRqbUAKCjIwMDUwOTIyCiAtIChkdHVja2VyKSBbY29uZmlndXJlLmFjXSBVc2UgLVIgbGlua2VyIGZsYWcgZm9yIGxpYmVkaXQgdG9vOyBwYXRjaCBmcm9tCiAgIHNrZWxldGVuIGF0IHNoaWxsZXN0Lm5ldC4KIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWNdIEZpeCBoZWxwIGZvciAtLXdpdGgtb3BlbnNjOyBwYXRjaCBmcm9tIHNrZWxldGVuIGF0CiAgIHNoaWxsZXN0Lm5ldC4KCjIwMDUwOTE5CiAtICh0aW0pIFthY2xvY2FsLm00IGNvbmZpZ3VyZS5hY10gRGVsZXRlIGFjY29uZmlnLmggYW5kIGFkZCB0ZW1wbGF0ZXMgdG8KICAgQUNfREVGSU5FIGFuZCBBQ19ERUZJTkVfVU5RVU9URUQgdG8gcXVpZXQgYXV0b2NvbmYgMi41OSB3YXJuaW5nIG1lc3NhZ2VzLgogICBvayBkdHVja2VyQAoKMjAwNTA5MTIKIC0gKHRpbSkgW2NvbmZpZ3VyZS5hY10gQnVnIDEwNzguIEZpeCAtLXdpdGhvdXQta2VyYmVyb3M1LiBSZXBvcnRlZCBieQogICBNaWtlIEZyeXNpbmdlci4KCjIwMDUwOTA4CiAtICh0aW0pIFtkZWZpbmVzLmggb3BlbmJzZC1jb21wYXQvcG9ydC11dy5jXSBBZGQgbG9uZyBwYXNzd29yZCBzdXBwb3J0IHRvCiAgIE9wZW5TZXJ2ZXIgNiBhbmQgYWRkIG9zcjViaWdjcnlwdCBzdXBwb3J0IHNvIHdoZW4gc29tZW9uZSBtaWdyYXRlcwogICBwYXNzd29yZHMgYmV0d2VlbiBVbml4V2FyZSBhbmQgT3BlblNlcnZlciB0aGV5IHdpbGwgc3RpbGwgd29yay4gT0sgZHR1Y2tlckAKCiRJZDogQ2hhbmdlTG9nLHYgMS40NzAzIDIwMDcvMDYvMjUgMDg6MzI6MzMgZHR1Y2tlciBFeHAgJAo=