ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8gICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfCAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CgpSRUFETUUKCiAgQ3VybCBpcyBhIGNvbW1hbmQgbGluZSB0b29sIGZvciB0cmFuc2ZlcmluZyBkYXRhIHNwZWNpZmllZCB3aXRoIFVSTAogIHN5bnRheC4gRmluZCBvdXQgaG93IHRvIHVzZSBDdXJsIGJ5IHJlYWRpbmcgdGhlIGN1cmwuMSBtYW4gcGFnZSBvciB0aGUKICBNQU5VQUwgZG9jdW1lbnQuIEZpbmQgb3V0IGhvdyB0byBpbnN0YWxsIEN1cmwgYnkgcmVhZGluZyB0aGUgSU5TVEFMTAogIGRvY3VtZW50LgoKICBsaWJjdXJsIGlzIHRoZSBsaWJyYXJ5IGN1cmwgaXMgdXNpbmcgdG8gZG8gaXRzIGpvYi4gSXQgaXMgcmVhZGlseQogIGF2YWlsYWJsZSB0byBiZSB1c2VkIGJ5IHlvdXIgc29mdHdhcmUuIFJlYWQgdGhlIGxpYmN1cmwuMyBtYW4gcGFnZSB0bwogIGxlYXJuIGhvdyEKCiAgWW91IGZpbmQgYW5zd2VycyB0byB0aGUgbW9zdCBmcmVxdWVudCBxdWVzdGlvbnMgd2UgZ2V0IGluIHRoZSBGQVEgZG9jdW1lbnQuCgogIFN0dWR5IHRoZSBDT1BZSU5HIGZpbGUgZm9yIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhbmQgc2ltaWxhci4KCkNPTlRBQ1QKCiAgSWYgeW91IGhhdmUgcHJvYmxlbXMsIHF1ZXN0aW9ucywgaWRlYXMgb3Igc3VnZ2VzdGlvbnMsIHBsZWFzZSBjb250YWN0IHVzCiAgYnkgcG9zdGluZyB0byBhIHN1aXRhYmxlIG1haWxpbmcgbGlzdC4gU2VlIGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC8KCiAgTWFueSBtYWpvciBjb250cmlidXRvcnMgdG8gdGhlIHByb2plY3QgYXJlIGxpc3RlZCBpbiB0aGUgVEhBTktTIGRvY3VtZW50LgoKV0VCIFNJVEUKCiAgVmlzaXQgdGhlIGN1cmwgd2ViIHNpdGUgb3IgbWlycm9ycyBmb3IgdGhlIGxhdGVzdCBuZXdzOgoKICAgICAgICBTd2VkZW4gICAgLS0gaHR0cDovL2N1cmwuaGF4eC5zZS8KICAgICAgICBBdXN0cmFsaWEgLS0gaHR0cDovL2N1cmwucGxhbmV0bWlycm9yLmNvbS8KICAgICAgICBHZXJtYW55ICAgLS0gaHR0cDovL2N1cmwubWlycm9yLmF0LnN0ZWFsZXIubmV0LwogICAgICAgIFJ1c3NpYSAgICAtLSBodHRwOi8vY3VybC50c3VyZW4ubmV0LwogICAgICAgIFRoYWlsYW5kICAtLSBodHRwOi8vY3VybC5zaWFtdS5hYy50aC8KICAgICAgICBVUyAoQ0EpICAgLS0gaHR0cDovL2N1cmwubWlycm9yLnJlZHdpcmUubmV0LwogICAgICAgIFVTIChUWCkgICAtLSBodHRwOi8vY3VybC5jeWJlcnNlcnZlcnMubmV0LwoKRE9XTkxPQUQKCiAgVGhlIG9mZmljaWFsIGRvd25sb2FkIG1pcnJvciBzaXRlcyBhcmU6CgogICAgICAgIEF1c3RyYWxpYSAtLSBodHRwOi8vY3VybC5wbGFuZXRtaXJyb3IuY29tL2Rvd25sb2FkLwogICAgICAgIEdlcm1hbnkgICAtLSBmdHA6Ly9mdHAuZnUtYmVybGluLmRlL3B1Yi91bml4L25ldHdvcmsvY3VybC8KICAgICAgICBIb25na29uZyAgLS0gaHR0cDovL3d3dy5leGVjdmUubmV0L2N1cmwvCiAgICAgICAgUnVzc2lhICAgIC0tIGh0dHA6Ly9jdXJsLnRzdXJlbi5uZXQvZG93bmxvYWQvCiAgICAgICAgU3dlZGVuICAgIC0tIGZ0cDovL2Z0cC5zdW5ldC5zZS9wdWIvd3d3L3V0aWxpdGllcy9jdXJsLwogICAgICAgIFN3ZWRlbiAgICAtLSBodHRwOi8vY29vbC5oYXh4LnNlL2N1cmwvCiAgICAgICAgVGhhaWxhbmQgIC0tIGh0dHA6Ly9jdXJsLnNpYW11LmFjLnRoL2Rvd25sb2FkLwogICAgICAgIFVTIChDQSkgICAtLSBodHRwOi8vY3VybC5taXJyb3IucmVkd2lyZS5uZXQvZG93bmxvYWQvCiAgICAgICAgVVMgKFRYKSAgIC0tIGh0dHA6Ly9jdXJsLmN5YmVyc2VydmVycy5uZXQvZG93bmxvYWQvCgpDVlMKCiAgVG8gZG93bmxvYWQgdGhlIHZlcnkgbGF0ZXN0IHNvdXJjZSBvZmYgdGhlIENWUyBzZXJ2ZXIgZG8gdGhpczoKCiAgICBjdnMgLWQgOnBzZXJ2ZXI6Y3ZzcmVhZEBjdnMucGhwLm5ldDovcmVwb3NpdG9yeSBsb2dpbgoKICAoZW50ZXIgInBocGZpIiB3aGVuIGFza2VkIGZvciBwYXNzd29yZCkKCiAgICBjdnMgLWQgOnBzZXJ2ZXI6Y3ZzcmVhZEBjdnMucGhwLm5ldDovcmVwb3NpdG9yeSBjbyBjdXJsIAoKICAoeW91J2xsIGdldCBhIGRpcmVjdG9yeSBuYW1lZCBjdXJsIGNyZWF0ZWQsIGZpbGxlZCB3aXRoIHRoZSBzb3VyY2UgY29kZSkKCiAgICBjdnMgLWQgOnBzZXJ2ZXI6Y3ZzcmVhZEBjdnMucGhwLm5ldDovcmVwb3NpdG9yeSBsb2dvdXQKICAgICAgICAKICAoeW91J3JlIG9mZiB0aGUgaG9vayEpCgpOT1RJQ0UKCiAgQ3VybCBjb250YWlucyBwaWVjZXMgb2Ygc291cmNlIGNvZGUgdGhhdCBpcyBDb3B5cmlnaHQgKGMpIDE5OTgsIDE5OTkKICBLdW5nbGlnYSBUZWtuaXNrYSBI9mdza29sYW4uIFRoaXMgbm90aWNlIGlzIGluY2x1ZGVkIGhlcmUgdG8gY29tcGx5IHdpdGggdGhlCiAgZGlzdHJpYnV0aW9uIHRlcm1zLgo=