ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8gICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfCAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CgpSRUFETUUKCiAgQ3VybCBpcyBhIGNvbW1hbmQgbGluZSB0b29sIGZvciB0cmFuc2ZlcmluZyBkYXRhIHNwZWNpZmllZCB3aXRoIFVSTAogIHN5bnRheC4gRmluZCBvdXQgaG93IHRvIHVzZSBDdXJsIGJ5IHJlYWRpbmcgdGhlIGN1cmwuMSBtYW4gcGFnZSBvciB0aGUKICBNQU5VQUwgZG9jdW1lbnQuIEZpbmQgb3V0IGhvdyB0byBpbnN0YWxsIEN1cmwgYnkgcmVhZGluZyB0aGUgSU5TVEFMTAogIGRvY3VtZW50LgoKICBsaWJjdXJsIGlzIHRoZSBsaWJyYXJ5IGN1cmwgaXMgdXNpbmcgdG8gZG8gaXRzIGpvYi4gSXQgaXMgcmVhZGlseQogIGF2YWlsYWJsZSB0byBiZSB1c2VkIGJ5IHlvdXIgc29mdHdhcmUuIFJlYWQgdGhlIGxpYmN1cmwuMyBtYW4gcGFnZSB0bwogIGxlYXJuIGhvdyEKCiAgWW91IGZpbmQgYW5zd2VycyB0byB0aGUgbW9zdCBmcmVxdWVudCBxdWVzdGlvbnMgd2UgZ2V0IGluIHRoZSBGQVEgZG9jdW1lbnQuCgogIFN0dWR5IHRoZSBDT1BZSU5HIGZpbGUgZm9yIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhbmQgc2ltaWxhci4KCkNPTlRBQ1QKCiAgSWYgeW91IGhhdmUgcHJvYmxlbXMsIHF1ZXN0aW9ucywgaWRlYXMgb3Igc3VnZ2VzdGlvbnMsIHBsZWFzZSBjb250YWN0IHVzCiAgYnkgcG9zdGluZyB0byBhIHN1aXRhYmxlIG1haWxpbmcgbGlzdC4gU2VlIGh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC8KCiAgTWFueSBtYWpvciBjb250cmlidXRvcnMgdG8gdGhlIHByb2plY3QgYXJlIGxpc3RlZCBpbiB0aGUgVEhBTktTIGRvY3VtZW50LgoKV0VCIFNJVEUKCiAgVmlzaXQgdGhlIGN1cmwgd2ViIHNpdGUgb3IgbWlycm9ycyBmb3IgdGhlIGxhdGVzdCBuZXdzOgoKICAgICAgICBTd2VkZW4gICAgLS0gaHR0cDovL2N1cmwuaGF4eC5zZS8KICAgICAgICBBdXN0cmFsaWEgLS0gaHR0cDovL2N1cmwucGxhbmV0bWlycm9yLmNvbS8KICAgICAgICBFc3RvbmlhICAgLS0gaHR0cDovL2N1cmwuZG9wZS1icm90aGVycy5jb20vCiAgICAgICAgR2VybWFueSAgIC0tIGh0dHA6Ly9jdXJsLm1pcnJvci5hdC5zdGVhbGVyLm5ldC8KICAgICAgICBHZXJtYW55ICAgLS0gaHR0cDovL2N1cmwubmV0bWlycm9yLm9yZy8KICAgICAgICBSdXNzaWEgICAgLS0gaHR0cDovL2N1cmwudHN1cmVuLm5ldC8KICAgICAgICBUaGFpbGFuZCAgLS0gaHR0cDovL2N1cmwuc2lhbXUuYWMudGgvCiAgICAgICAgVVMgKENBKSAgIC0tIGh0dHA6Ly9jdXJsLm1pcnJvci5yZWR3aXJlLm5ldC8KCkRPV05MT0FECgogIFRoZSBvZmZpY2lhbCBkb3dubG9hZCBtaXJyb3Igc2l0ZXMgYXJlOgoKICAgICAgICBBdXN0cmFsaWEgLS0gaHR0cDovL2N1cmwucGxhbmV0bWlycm9yLmNvbS9kb3dubG9hZC5odG1sCiAgICAgICAgRXN0b25pYSAgIC0tIGh0dHA6Ly9jdXJsLmRvcGUtYnJvdGhlcnMuY29tL2Rvd25sb2FkLmh0bWwKICAgICAgICBHZXJtYW55ICAgLS0gZnRwOi8vZnRwLmZ1LWJlcmxpbi5kZS9wdWIvdW5peC9uZXR3b3JrL2N1cmwvCiAgICAgICAgR2VybWFueSAgIC0tIGh0dHA6Ly9jdXJsLm1pcnJvci5hdC5zdGVhbGVyLm5ldC9kb3dubG9hZC5odG1sCiAgICAgICAgR2VybWFueSAgIC0tIGh0dHA6Ly9jdXJsLm5ldG1pcnJvci5vcmcvZG93bmxvYWQuaHRtbAogICAgICAgIEhvbmdrb25nICAtLSBodHRwOi8vd3d3LmV4ZWN2ZS5uZXQvY3VybC8KICAgICAgICBSdXNzaWEgICAgLS0gaHR0cDovL2N1cmwudHN1cmVuLm5ldC9kb3dubG9hZC5odG1sCiAgICAgICAgU3dlZGVuICAgIC0tIGZ0cDovL2Z0cC5zdW5ldC5zZS9wdWIvd3d3L3V0aWxpdGllcy9jdXJsLwogICAgICAgIFN3ZWRlbiAgICAtLSBodHRwOi8vY29vbC5oYXh4LnNlL2N1cmwvCiAgICAgICAgVGhhaWxhbmQgIC0tIGh0dHA6Ly9jdXJsLnNpYW11LmFjLnRoL2Rvd25sb2FkLmh0bWwKICAgICAgICBVUyAoQ0EpICAgLS0gaHR0cDovL2N1cmwubWlycm9yLnJlZHdpcmUubmV0L2Rvd25sb2FkLmh0bWwKCkNWUwoKICBUbyBkb3dubG9hZCB0aGUgdmVyeSBsYXRlc3Qgc291cmNlIG9mZiB0aGUgQ1ZTIHNlcnZlciBkbyB0aGlzOgoKICAgIGN2cyAtZCA6cHNlcnZlcjpjdnNyZWFkQGN2cy5waHAubmV0Oi9yZXBvc2l0b3J5IGxvZ2luCgogIChlbnRlciAicGhwZmkiIHdoZW4gYXNrZWQgZm9yIHBhc3N3b3JkKQoKICAgIGN2cyAtZCA6cHNlcnZlcjpjdnNyZWFkQGN2cy5waHAubmV0Oi9yZXBvc2l0b3J5IGNvIGN1cmwgCgogICh5b3UnbGwgZ2V0IGEgZGlyZWN0b3J5IG5hbWVkIGN1cmwgY3JlYXRlZCwgZmlsbGVkIHdpdGggdGhlIHNvdXJjZSBjb2RlKQoKICAgIGN2cyAtZCA6cHNlcnZlcjpjdnNyZWFkQGN2cy5waHAubmV0Oi9yZXBvc2l0b3J5IGxvZ291dAogICAgICAgIAogICh5b3UncmUgb2ZmIHRoZSBob29rISkKCk5PVElDRQoKICBDdXJsIGNvbnRhaW5zIHBpZWNlcyBvZiBzb3VyY2UgY29kZSB0aGF0IGlzIENvcHlyaWdodCAoYykgMTk5OCwgMTk5OQogIEt1bmdsaWdhIFRla25pc2thIEj2Z3Nrb2xhbi4gVGhpcyBub3RpY2UgaXMgaW5jbHVkZWQgaGVyZSB0byBjb21wbHkgd2l0aCB0aGUKICBkaXN0cmlidXRpb24gdGVybXMuCg==