ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBfIF9fX18gIF8gICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfX3wgfCB8IHwgfF8pIHwgfCAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKF9ffCB8X3wgfCAgXyA8fCB8X19fIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CgpSRUFETUUKCiAgQ3VybCBpcyBhIGNvbW1hbmQgbGluZSB0b29sIGZvciB0cmFuc2ZlcmluZyBkYXRhIHNwZWNpZmllZCB3aXRoIFVSTAogIHN5bnRheC4gRmluZCBvdXQgaG93IHRvIHVzZSBDdXJsIGJ5IHJlYWRpbmcgdGhlIGN1cmwuMSBtYW4gcGFnZSBvciB0aGUKICBNQU5VQUwgZG9jdW1lbnQuIEZpbmQgb3V0IGhvdyB0byBpbnN0YWxsIEN1cmwgYnkgcmVhZGluZyB0aGUgSU5TVEFMTAogIGRvY3VtZW50LgoKICBsaWJjdXJsIGlzIGEgbGlicmFyeSB0aGF0IEN1cmwgaXMgdXNpbmcgdG8gZG8gaXRzIGpvYi4gSXQgaXMgcmVhZGlseQogIGF2YWlsYWJsZSB0byBiZSB1c2VkIGJ5IHlvdXIgc29mdHdhcmUuIFJlYWQgdGhlIFJFQURNRS5saWJjdXJsIGRvY3VtZW50IHRvCiAgZmluZCBvdXQgaG93IQoKICBZb3UgZmluZCBhbnN3ZXJzIHRvIHRoZSBtb3N0IGZyZXF1ZW50IHF1ZXN0aW9ucyB3ZSBnZXQgaW4gdGhlIEZBUSBkb2N1bWVudC4KCiAgQWx3YXlzIHRyeSB0aGUgQ3VybCB3ZWIgc2l0ZSBmb3IgdGhlIGxhdGVzdCBuZXdzOgoKICAgICAgICBodHRwOi8vY3VybC5oYXh4LnNlCgogIFRoZSBvZmZpY2lhbCBkb3dubG9hZCBtaXJyb3Igc2l0ZXMgYXJlOgoKICAgICAgICBTd2VkZW4gICAgLS0gZnRwOi8vZnRwLnN1bmV0LnNlL3B1Yi93d3cvdXRpbGl0aWVzL2N1cmwvCiAgICAgICAgR2VybWFueSAgIC0tIGZ0cDovL2Z0cC5mdS1iZXJsaW4uZGUvcHViL3VuaXgvbmV0d29yay9jdXJsLwoKICBUbyBkb3dubG9hZCB0aGUgdmVyeSBsYXRlc3Qgc291cmNlIG9mZiB0aGUgQ1ZTIHNlcnZlciBkbyB0aGlzOgoKICAgICAgICBjdnMgLWQgOnBzZXJ2ZXI6YW5vbnltb3VzQGN2cy5jdXJsLnNvdXJjZWZvcmdlLm5ldDovY3Zzcm9vdC9jdXJsIGxvZ2luCgogICAgIChqdXN0IHByZXNzIGVudGVyIHdoZW4gYXNrZWQgZm9yIHBhc3N3b3JkKQoKICAgICAgICBjdnMgLWQgOnBzZXJ2ZXI6YW5vbnltb3VzQGN2cy5jdXJsLnNvdXJjZWZvcmdlLm5ldDovY3Zzcm9vdC9jdXJsIGNvIC4KCiAgICAgKG5vdywgeW91J2xsIGdldCBhbGwgdGhlIGxhdGVzdCBzb3VyY2VzIGRvd25sb2FkZWQgaW50byB5b3VyIGN1cnJlbnQKICAgICBkaXJlY3RvcnkuIE5vdGUgdGhhdCB0aGlzIGRvZXMgTk9UIGNyZWF0ZSBhIGRpcmVjdG9yeSBuYW1lZCBjdXJsIG9yCiAgICAgYW55dGhpbmcpCgogICAgICAgIGN2cyAtZCA6cHNlcnZlcjphbm9ueW1vdXNAY3ZzLmN1cmwuc291cmNlZm9yZ2UubmV0Oi9jdnNyb290L2N1cmwgbG9nb3V0CiAgICAgICAgCiAgICAgKHlvdSdyZSBvZmYgdGhlIGhvb2shKQoKICBDdXJsIGNvbnRhaW5zIHBpZWNlcyBvZiBzb3VyY2UgY29kZSB0aGF0IGlzIENvcHlyaWdodCAoYykgMTk5OCwgMTk5OQogIEt1bmdsaWdhIFRla25pc2thIEj2Z3Nrb2xhbi4gVGhpcyBub3RpY2UgaXMgaW5jbHVkZWQgaGVyZSB0byBjb21wbHkgd2l0aCB0aGUKICBkaXN0cmlidXRpb24gdGVybXMuCg==