XGNoYXB0ZXJ7QXBwbGljYXRpb25zfQpcbGFiZWx7YXBwbGljYXRpb25zfQoKQSBcamF4cnNcIGFwcGxpY2F0aW9uIGNvbnNpc3RzIG9mIG9uZSBvciBtb3JlIHJlc291cmNlcyAoc2VlIGNoYXB0ZXIgXHJlZntyZXNvdXJjZXN9KSBhbmQgemVybyBvciBtb3JlIHByb3ZpZGVycyAoc2VlIGNoYXB0ZXIgXHJlZntwcm92aWRlcnN9KS4gVGhpcyBjaGFwdGVyIGRlc2NyaWJlcyBhc3BlY3RzIG9mIFxqYXhyc1wgdGhhdCBhcHBseSB0byBhbiBhcHBsaWNhdGlvbiBhcyBhIHdob2xlLCBzdWJzZXF1ZW50IGNoYXB0ZXJzIGRlc2NyaWJlIHBhcnRpY3VsYXIgYXNwZWN0cyBvZiBhIFxqYXhyc1wgYXBwbGljYXRpb24gYW5kIHJlcXVpcmVtZW50cyBvbiBcamF4cnNcIGltcGxlbWVudGF0aW9ucy4KClxzZWN0aW9ue0NvbmZpZ3VyYXRpb259ClxsYWJlbHtjb25maWd9CgpUaGUgcmVzb3VyY2VzIGFuZCBwcm92aWRlcnMgdGhhdCBtYWtlIHVwIGEgXGpheHJzXCBhcHBsaWNhdGlvbiBhcmUgY29uZmlndXJlZCB2aWEgYW4gYXBwbGljYXRpb24tc3VwcGxpZWQgc3ViY2xhc3Mgb2YgXGNvZGV7QXBwbGljYXRpb259LiBBbiBpbXBsZW1lbnRhdGlvbiBNQVkgcHJvdmlkZSBhbHRlcm5hdGUgbWVjaGFuaXNtcyBmb3IgbG9jYXRpbmcgcmVzb3VyY2UgY2xhc3NlcyBhbmQgcHJvdmlkZXJzIChlLmcuIHJ1bnRpbWUgY2xhc3Mgc2Nhbm5pbmcpIGJ1dCB1c2Ugb2YgXGNvZGV7QXBwbGljYXRpb259IGlzIHRoZSBvbmx5IHBvcnRhYmxlIG1lYW5zIG9mIGNvbmZpZ3VyYXRpb24uCgpcc2VjdGlvbntWYWxpZGF0aW9ufQoKU3BlY2lmaWMgdmFsaWRhdGlvbiByZXF1aXJlbWVudHMgYXJlIGRldGFpbGVkIHRocm91Z2hvdXQgdGhpcyBzcGVjaWZpY2F0aW9uIGFuZCB0aGUgXGpheHJzXCBKYXZhZG9jcy4gSW1wbGVtZW50YXRpb25zIE1BWSBwZXJmb3JtIGFkZGl0aW9uYWwgdmFsaWRhdGlvbiB3aGVyZSBmZWFzaWJsZSBhbmQgU0hPVUxEIHJlcG9ydCBhbnkgaXNzdWVzIGFyaXNpbmcgZnJvbSBzdWNoIHZhbGlkYXRpb24gdG8gdGhlIHVzZXIuCgpcc2VjdGlvbntQdWJsaWNhdGlvbn0KCkFwcGxpY2F0aW9ucyBhcmUgcHVibGlzaGVkIGluIGRpZmZlcmVudCB3YXlzIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBhcHBsaWNhdGlvbiBpcyBydW4gaW4gYSBKYXZhIFNFIGVudmlyb25tZW50IG9yIHdpdGhpbiBhIGNvbnRhaW5lci4gVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB0aGUgYWx0ZXJuYXRlIG1lYW5zIG9mIHB1YmxpY2F0aW9uLgoKXHN1YnNlY3Rpb257SmF2YSBTRX0KCkluIGEgSmF2YSBTRSBlbnZpcm9ubWVudCBhIGNvbmZpZ3VyZWQgaW5zdGFuY2Ugb2YgYW4gZW5kcG9pbnQgY2xhc3MgY2FuIGJlIG9idGFpbmVkIHVzaW5nIHRoZSBcY29kZXtjcmVhdGVcLUVuZHBvaW50fSBtZXRob2Qgb2YgXHJkLiBUaGUgYXBwbGljYXRpb24gc3VwcGxpZXMgYW4gaW5zdGFuY2Ugb2YgXGNvZGV7QXBwbGljYXRpb259IGFuZCB0aGUgdHlwZSBvZiBlbmRwb2ludCByZXF1aXJlZC4gQW4gaW1wbGVtZW50YXRpb24gTUFZIHN1cHBvcnQgemVybyBvciBtb3JlIGVuZHBvaW50IHR5cGVzIG9mIGFueSBkZXNpcmVkIHR5cGUuCgpIb3cgdGhlIHJlc3VsdGluZyBlbmRwb2ludCBjbGFzcyBpbnN0YW5jZSBpcyB1c2VkIHRvIHB1Ymxpc2ggdGhlIGFwcGxpY2F0aW9uIGlzIG91dHNpZGUgdGhlIHNjb3BlIG9mIHRoaXMgc3BlY2lmaWNhdGlvbi4KClxzdWJzdWJzZWN0aW9ue0pBWC1XU30KCkFuIGltcGxlbWVudGF0aW9uIHRoYXQgc3VwcG9ydHMgcHVibGljYXRpb24gdmlhIEpBWC1XUyBNVVNUIHN1cHBvcnQgXGNvZGV7Y3JlYXRlXC1FbmRwb2ludH0gd2l0aCBhbiBlbmRwb2ludCB0eXBlIG9mIFxjb2Rle2phdmF4XC0ueG1sXC0ud3NcLS5Qcm92aWRlcn0uIEpBWC1XUyBkZXNjcmliZXMgaG93IGEgXGNvZGV7UHJvdmlkZXJ9IGJhc2VkIGVuZHBvaW50IGNhbiBiZSBwdWJsaXNoZWQgaW4gYW4gU0UgZW52aXJvbm1lbnQuCgpcc3Vic2VjdGlvbntTZXJ2bGV0fQpcbGFiZWx7c2VydmxldH0KCkEgXGpheHJzXCBhcHBsaWNhdGlvbiBpcyBwYWNrYWdlZCBhcyBhIFdlYiBhcHBsaWNhdGlvbiBpbiBhIFxjb2Rley53YXJ9IN5sZS4gVGhlIFxjb2Rle0FwcGxpY2F0aW9ufSBzdWJjbGFzcyAoc2VlIHNlY3Rpb24gXHJlZntjb25maWd9KSwgcmVzb3VyY2UgY2xhc3NlcywgYW5kIHByb3ZpZGVycyBhcmUgcGFja2FnZWQgaW4gXGNvZGV7V0VCLUlORi9jbGFzc2VzfSwgcmVxdWlyZWQgbGlicmFyaWVzIGFyZSBwYWNrYWdlZCBpbiBcY29kZXtXRUItSU5GL2xpYn0uIEluY2x1ZGVkIGxpYnJhcmllcyBNQVkgYWxzbyBjb250YWluIHJlc291cmNlIGNsYXNzZXMgYW5kIHByb3ZpZGVycyBhcyBkZXNpcmVkLiBTZWUgdGhlIFNlcnZsZXQgc3BlY2neY2F0aW9uIGZvciBmdWxsIGRldGFpbHMgb24gcGFja2FnaW5nIG9mIHdlYiBhcHBsaWNhdGlvbnMuCgpXaGVuIHVzaW5nIGEgU2VydmxldCAzIGNvbnRhaW5lciwgdGhlIFxjb2Rle0FwcGxpY2F0aW9ufSBzdWJjbGFzcyBpcyBvcHRpb25hbC4gQnkgZGVmYXVsdCwgYWxsIHJvb3QgcmVzb3VyY2UgY2xhc3NlcyBhbmQgcHJvdmlkZXJzIHBhY2thZ2VkIGluIHRoZSB3ZWIgYXBwbGljYXRpb24gTVVTVCBiZSBpbmNsdWRlZCBpbiB0aGUgcHVibGlzaGVkIEpBWC1SUyBhcHBsaWNhdGlvbi4gQW4gXGNvZGV7QXBwbGljYXRpb259IHN1YmNsYXNzIE1BWSBiZSBpbmNsdWRlZCBpbiBhIFxjb2Rley53YXJ9IGZpbGUgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3IuIElmIGJvdGggXGNvZGV7Z2V0Q2xhc3Nlc30gYW5kIFxjb2Rle2dldFNpbmdsZXRvbnN9IHJldHVybiBhbiBlbXB0eSBsaXN0IHRoZW4gdGhlIGRlZmF1bHQgc2V0IG9mIGNsYXNzZXMgTVVTVCBiZSB1c2VkLiBJdCBpcyBSRUNPTU1FTkRFRCB0aGF0IGltcGxlbWVudGF0aW9ucyBzdXBwb3J0IHRoZSBTZXJ2bGV0IDMgZnJhbWV3b3JrIHBsdWdnYWJpbGl0eSBtZWNoYW5pc20gdG8gZW5hYmxlIHBvcnRhYmlsaXR5IGJldHdlZW4gY29udGFpbmVycyBhbmQgdG8gYXZhaWwgdGhlbXNlbHZlcyBvZiBjb250YWluZXItc3VwcGxpZWQgY2xhc3Mgc2Nhbm5pbmcgZmFjaWxpdGllcy4KCldoZW4gdXNpbmcgYSBub24tXGpheHJzXCBhd2FyZSBzZXJ2bGV0IGNvbnRhaW5lciwgdGhlIFxjb2Rle3NlcnZsZXQtY2xhc3N9IG9yIFxjb2Rle2ZpbHRlci1jbGFzc30gZWxlbWVudCBvZiB0aGUgd2ViLnhtbCBkZXNjcmlwdG9yIFNIT1VMRCBuYW1lIHRoZSBKQVgtUlMgaW1wbGVtZW50YXRpb24tc3VwcGxpZWQgXGNvZGV7U2VydmxldH0gb3IgXGNvZGV7RmlsdGVyfSBjbGFzcyByZXNwZWN0aXZlbHkuIFRoZSBhcHBsaWNhdGlvbi1zdXBwbGllZCBzdWJjbGFzcyBvZiBcY29kZXtBcHBsaWNhdGlvbn0gaXMgaWRlbnRp3mVkIHVzaW5nIGFuIFxjb2Rle2luaXQtcGFyYW19IHdpdGggYSBcY29kZXtwYXJhbS1uYW1lfSBvZiBcY29kZXtqYXZheFwtLndzXC0ucnNcLS5BcHBsaWNhdGlvbn0uCgpcc3Vic2VjdGlvbntPdGhlciBDb250YWluZXJ9CgpBbiBpbXBsZW1lbnRhdGlvbiBNQVkgcHJvdmlkZSBmYWNpbGl0aWVzIHRvIGhvc3QgYSBcamF4cnNcIGFwcGxpY2F0aW9uIGluIG90aGVyIHR5cGVzIG9mIGNvbnRhaW5lciwgc3VjaCBmYWNpbGl0aWVzIGFyZSBvdXRzaWRlIHRoZSBzY29wZSBvZiB0aGlzIHNwZWNpZmljYXRpb24u