ZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2FtcGxlLnRhZ3MvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzIGIvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zYW1wbGUudGFncy8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkYmQwZTMuLjAwMDAwMDAKLS0tIGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zYW1wbGUudGFncy8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0jVGh1IEp1biAwOSAxMzoyMTo1MiBCU1QgMjAxMQotZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTEKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvZGVnZW4uaW5saW5lSnNyQnl0ZWNvZGU9ZW5hYmxlZAotb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi50YXJnZXRQbGF0Zm9ybT0xLjYKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvZGVnZW4udW51c2VkTG9jYWw9cHJlc2VydmUKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvbXBsaWFuY2U9MS42Ci1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5kZWJ1Zy5saW5lTnVtYmVyPWdlbmVyYXRlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5kZWJ1Zy5sb2NhbFZhcmlhYmxlPWdlbmVyYXRlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5kZWJ1Zy5zb3VyY2VGaWxlPWdlbmVyYXRlCi1vcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmFzc2VydElkZW50aWZpZXI9ZXJyb3IKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZW51bUlkZW50aWZpZXI9ZXJyb3IKLW9yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnNvdXJjZT0xLjYKZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2FtcGxlLnRhZ3MvLnNldHRpbmdzL29yZy5lY2xpcHNlLnZpcmdvLmlkZS5idW5kbG9yLmNvcmUucHJlZnMgYi9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNhbXBsZS50YWdzLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS52aXJnby5pZGUuYnVuZGxvci5jb3JlLnByZWZzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YmZlZjBhLi4wMDAwMDAwCi0tLSBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2FtcGxlLnRhZ3MvLnNldHRpbmdzL29yZy5lY2xpcHNlLnZpcmdvLmlkZS5idW5kbG9yLmNvcmUucHJlZnMKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLSNUaHUgSnVuIDA5IDEzOjIwOjExIEJTVCAyMDExCi1lY2xpcHNlLnByZWZlcmVuY2VzLnZlcnNpb249MQotb3JnLmVjbGlwc2UudmlyZ28uaWRlLmJ1bmRsb3IuY29yZS5idW5kbG9yLmdlbmVyYXRlZC5tYW5pZmVzdC5hdXRvZm9ybWF0dGluZz1mYWxzZQotb3JnLmVjbGlwc2UudmlyZ28uaWRlLmJ1bmRsb3IuY29yZS5ieXRlLmNvZGUuc2Nhbm5pbmc9ZmFsc2UKLW9yZy5lY2xpcHNlLnZpcmdvLmlkZS5idW5kbG9yLmNvcmUudGVtcGxhdGUucHJvcGVydGllcy5maWxlcz1pdnkueG1sCmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNhbXBsZS50YWdzLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS53c3QuY29tbW9uLmNvbXBvbmVudCBiL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2FtcGxlLnRhZ3MvLnNldHRpbmdzL29yZy5lY2xpcHNlLndzdC5jb21tb24uY29tcG9uZW50CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYmNjZTlkLi4wMDAwMDAwCi0tLSBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2FtcGxlLnRhZ3MvLnNldHRpbmdzL29yZy5lY2xpcHNlLndzdC5jb21tb24uY29tcG9uZW50CisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxwcm9qZWN0LW1vZHVsZXMgaWQ9Im1vZHVsZUNvcmVJZCIgcHJvamVjdC12ZXJzaW9uPSIxLjUuMCI+Ci0gICAgPHdiLW1vZHVsZSBkZXBsb3ktbmFtZT0ib3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2FtcGxlLndlYiI+Ci0gICAgICAgIDx3Yi1yZXNvdXJjZSBkZXBsb3ktcGF0aD0iLyIgc291cmNlLXBhdGg9Ii9zcmMvbWFpbi93ZWJhcHAiLz4KLSAgICAgICAgPHdiLXJlc291cmNlIGRlcGxveS1wYXRoPSIvV0VCLUlORi9jbGFzc2VzIiBzb3VyY2UtcGF0aD0iL3NyYy90ZXN0L2phdmEiLz4KLSAgICAgICAgPHdiLXJlc291cmNlIGRlcGxveS1wYXRoPSIvV0VCLUlORi9jbGFzc2VzIiBzb3VyY2UtcGF0aD0iL3NyYy9tYWluL2phdmEiLz4KLSAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNvbnRleHQtcm9vdCIgdmFsdWU9InRhZ2xpYnMiLz4KLSAgICAgICAgPHByb3BlcnR5IG5hbWU9ImphdmEtb3V0cHV0LXBhdGgiIHZhbHVlPSIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2FtcGxlLndlYi90YXJnZXQvY2xhc3NlcyIvPgotICAgIDwvd2ItbW9kdWxlPgotPC9wcm9qZWN0LW1vZHVsZXM+CmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNhbXBsZS50YWdzLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS53c3QuY29tbW9uLnByb2plY3QuZmFjZXQuY29yZS54bWwgYi9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNhbXBsZS50YWdzLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS53c3QuY29tbW9uLnByb2plY3QuZmFjZXQuY29yZS54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlMjUxMzQuLjAwMDAwMDAKLS0tIGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zYW1wbGUudGFncy8uc2V0dGluZ3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5wcm9qZWN0LmZhY2V0LmNvcmUueG1sCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPGZhY2V0ZWQtcHJvamVjdD4KLSAgPGZpeGVkIGZhY2V0PSJqc3Qud2ViIi8+Ci0gIDxmaXhlZCBmYWNldD0ianN0LmphdmEiLz4KLSAgPGluc3RhbGxlZCBmYWNldD0ianN0LndlYiIgdmVyc2lvbj0iMi41Ii8+Ci0gIDxpbnN0YWxsZWQgZmFjZXQ9ImpzdC5qYXZhIiB2ZXJzaW9uPSI2LjAiLz4KLSAgPGluc3RhbGxlZCBmYWNldD0ib3JnLmVjbGlwc2UudmlyZ28uc2VydmVyLmJ1bmRsZSIgdmVyc2lvbj0iMS4wIi8+Ci08L2ZhY2V0ZWQtcHJvamVjdD4KZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2FtcGxlLnRhZ3MvLnNldHRpbmdzL29yZy5lY2xpcHNlLndzdC5qc2R0LnVpLnN1cGVyVHlwZS5jb250YWluZXIgYi9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNhbXBsZS50YWdzLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS53c3QuanNkdC51aS5zdXBlclR5cGUuY29udGFpbmVyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYmQ1ZDBhLi4wMDAwMDAwCi0tLSBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2FtcGxlLnRhZ3MvLnNldHRpbmdzL29yZy5lY2xpcHNlLndzdC5qc2R0LnVpLnN1cGVyVHlwZS5jb250YWluZXIKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1vcmcuZWNsaXBzZS53c3QuanNkdC5sYXVuY2hpbmcuYmFzZUJyb3dzZXJMaWJyYXJ5ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zYW1wbGUudGFncy8uc2V0dGluZ3Mvb3JnLmVjbGlwc2Uud3N0LmpzZHQudWkuc3VwZXJUeXBlLm5hbWUgYi9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNhbXBsZS50YWdzLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS53c3QuanNkdC51aS5zdXBlclR5cGUubmFtZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDViZDcxYi4uMDAwMDAwMAotLS0gYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNhbXBsZS50YWdzLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS53c3QuanNkdC51aS5zdXBlclR5cGUubmFtZQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVdpbmRvdwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2FtcGxlLnRhZ3MvdGVtcGxhdGUubWYgYi9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNhbXBsZS50YWdzL3RlbXBsYXRlLm1mCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGU1YzNkLi4wMDAwMDAwCi0tLSBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2FtcGxlLnRhZ3MvdGVtcGxhdGUubWYKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1NYW5pZmVzdC1WZXJzaW9uOiAxLjAKLUJ1bmRsZS1WZXJzaW9uOiAke3ZlcnNpb259Ci1CdW5kbGUtTmFtZTogV2ViCi1CdW5kbGUtTWFuaWZlc3RWZXJzaW9uOiAyCi1CdW5kbGUtU3ltYm9saWNOYW1lOiBvcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zYW1wbGUudGFncwotV2ViLUNvbnRleHRQYXRoOiB0YWdsaWJzCi1FeGNsdWRlZC1FeHBvcnRzOiAqCi1SZXF1aXJlLVRsZEJ1bmRsZTogb3JnLnNwcmluZ2ZyYW1ld29yay53ZWIuc2VydmxldAotSW1wb3J0LVRlbXBsYXRlOiAKLSBvcmcuc3ByaW5nZnJhbWV3b3JrLio7dmVyc2lvbj0iJHtvcmcuc3ByaW5nZnJhbWV3b3JrOlsyLjUuNiwgKzEpfSIsCi0gb3JnLmVjbGlwc2UudmlyZ28ud2ViLio7dmVyc2lvbj0iWzMuMC4wLDQuMC4wKSIsCi0gamF2YXguc2VydmxldC4qO3ZlcnNpb249IlsyLjUuMCwzLjAuMCkiCi1JbXBvcnQtUGFja2FnZTogCi0gb3JnLnNwcmluZ2ZyYW1ld29yay5jb250ZXh0LmNvbmZpZzt2ZXJzaW9uPSIke29yZy5zcHJpbmdmcmFtZXdvcms6WzIuNS42LCArMSl9IiwgCi0gb3JnLnNwcmluZ2ZyYW1ld29yay53ZWIuc2VydmxldDt2ZXJzaW9uPSIke29yZy5zcHJpbmdmcmFtZXdvcms6WzIuNS42LCArMSl9IiwKLSBvcmcuc3ByaW5nZnJhbWV3b3JrLndlYi5zZXJ2bGV0LnRhZ3MuZm9ybTt2ZXJzaW9uPSIke29yZy5zcHJpbmdmcmFtZXdvcms6WzIuNS42LCArMSl9IiwKLSBvcmcuc3ByaW5nZnJhbWV3b3JrLmNvcmU7dmVyc2lvbj0iJHtvcmcuc3ByaW5nZnJhbWV3b3JrOlsyLjUuNiwgKzEpfSIKLUltcG9ydC1CdW5kbGU6Ci0gb3JnLnNwcmluZ2ZyYW1ld29yay5jb250ZXh0O3ZlcnNpb249IiR7b3JnLnNwcmluZ2ZyYW1ld29yazpbMi41LjYsICsxKX0iCi0KZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc21va2V0ZXN0L3NyYy90ZXN0L2phdmEvb3JnL2VjbGlwc2UvdmlyZ28vc2VydmVyL3Ntb2tldGVzdC9BZG1pblNjcmVlblRlc3RzLmphdmEgYi9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNtb2tldGVzdC9zcmMvdGVzdC9qYXZhL29yZy9lY2xpcHNlL3ZpcmdvL3NlcnZlci9zbW9rZXRlc3QvQWRtaW5TY3JlZW5UZXN0cy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzA5NGYyLi4wMDAwMDAwCi0tLSBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc21va2V0ZXN0L3NyYy90ZXN0L2phdmEvb3JnL2VjbGlwc2UvdmlyZ28vc2VydmVyL3Ntb2tldGVzdC9BZG1pblNjcmVlblRlc3RzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA4LCAyMDEwIFZNd2FyZSBJbmMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgVk13YXJlIEluYy4gLSBpbml0aWFsIGNvbnRyaWJ1dGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UudmlyZ28uc2VydmVyLnNtb2tldGVzdDsKLQotaW1wb3J0IG9yZy5qdW5pdC5UZXN0OwotCi1wdWJsaWMgY2xhc3MgQWRtaW5TY3JlZW5UZXN0cyB7Ci0KLQlAVGVzdAotCXB1YmxpYyB2b2lkIHRlc3RBZG1pblNjcmVlbigpIHsKLQkJVXJsV2FpdExhdGNoLndhaXRGb3IoImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9hZG1pbiIsICJhZG1pbiIsICJhZG1pbiIpOwotCX0KLQotfQpkaWZmIC0tZ2l0IGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zbW9rZXRlc3Qvc3JjL3Rlc3QvamF2YS9vcmcvZWNsaXBzZS92aXJnby9zZXJ2ZXIvc21va2V0ZXN0L1NwbGFzaFNjcmVlblRlc3RzLmphdmEgYi9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNtb2tldGVzdC9zcmMvdGVzdC9qYXZhL29yZy9lY2xpcHNlL3ZpcmdvL3NlcnZlci9zbW9rZXRlc3QvU3BsYXNoU2NyZWVuVGVzdHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzI4YWRiMy4uMDAwMDAwMAotLS0gYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNtb2tldGVzdC9zcmMvdGVzdC9qYXZhL29yZy9lY2xpcHNlL3ZpcmdvL3NlcnZlci9zbW9rZXRlc3QvU3BsYXNoU2NyZWVuVGVzdHMuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMTAgVk13YXJlIEluYy4KLSAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKLSAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKLSAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCi0gKgotICogQ29udHJpYnV0b3JzOgotICogICBWTXdhcmUgSW5jLiAtIGluaXRpYWwgY29udHJpYnV0aW9uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotcGFja2FnZSBvcmcuZWNsaXBzZS52aXJnby5zZXJ2ZXIuc21va2V0ZXN0OwotCi1pbXBvcnQgb3JnLmp1bml0LlRlc3Q7Ci0KLXB1YmxpYyBjbGFzcyBTcGxhc2hTY3JlZW5UZXN0cyB7Ci0KLQlAVGVzdAotCXB1YmxpYyB2b2lkIGNvbm5lY3RUb1NwbGFzaFNjcmVlbigpIHRocm93cyBFeGNlcHRpb24gewotCQlVcmxXYWl0TGF0Y2gud2FpdEZvcigiaHR0cDovL2xvY2FsaG9zdDo4MDgwLyIpOwotCX0KLX0KZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc21va2V0ZXN0L3NyYy90ZXN0L2phdmEvb3JnL2VjbGlwc2UvdmlyZ28vc2VydmVyL3Ntb2tldGVzdC9UYWdMaWJzVGVzdHMuamF2YSBiL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc21va2V0ZXN0L3NyYy90ZXN0L2phdmEvb3JnL2VjbGlwc2UvdmlyZ28vc2VydmVyL3Ntb2tldGVzdC9UYWdMaWJzVGVzdHMuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzk5ZDlkYy4uMDAwMDAwMAotLS0gYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNtb2tldGVzdC9zcmMvdGVzdC9qYXZhL29yZy9lY2xpcHNlL3ZpcmdvL3NlcnZlci9zbW9rZXRlc3QvVGFnTGlic1Rlc3RzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi0gLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIENvcHlyaWdodCAoYykgMjAwOCwgMjAxMCBWTXdhcmUgSW5jLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscwotICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCi0gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAotICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSAqCi0gKiBDb250cmlidXRvcnM6Ci0gKiAgIFZNd2FyZSBJbmMuIC0gaW5pdGlhbCBjb250cmlidXRpb24KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1wYWNrYWdlIG9yZy5lY2xpcHNlLnZpcmdvLnNlcnZlci5zbW9rZXRlc3Q7Ci0KLWltcG9ydCBvcmcuanVuaXQuVGVzdDsKLQotcHVibGljIGNsYXNzIFRhZ0xpYnNUZXN0cyB7Ci0KLQlAVGVzdAotCXB1YmxpYyB2b2lkIHRlc3RUYWdMaWJzU2NyZWVuKCkgewotCQlVcmxXYWl0TGF0Y2gud2FpdEZvcigiaHR0cDovL2xvY2FsaG9zdDo4MDgwL3RhZ2xpYnMvYXBwL3NhbXBsZS5odG0iKTsKLQl9Ci0KLX0KZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc21va2V0ZXN0L3NyYy90ZXN0L2phdmEvb3JnL2VjbGlwc2UvdmlyZ28vc2VydmVyL3Ntb2tldGVzdC9VcmxXYWl0TGF0Y2guamF2YSBiL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc21va2V0ZXN0L3NyYy90ZXN0L2phdmEvb3JnL2VjbGlwc2UvdmlyZ28vc2VydmVyL3Ntb2tldGVzdC9VcmxXYWl0TGF0Y2guamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDVkNWI0Zi4uMDAwMDAwMAotLS0gYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNtb2tldGVzdC9zcmMvdGVzdC9qYXZhL29yZy9lY2xpcHNlL3ZpcmdvL3NlcnZlci9zbW9rZXRlc3QvVXJsV2FpdExhdGNoLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogQ29weXJpZ2h0IChjKSAyMDA4LCAyMDEwIFZNd2FyZSBJbmMuCi0gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKLSAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0Ci0gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAotICoKLSAqIENvbnRyaWJ1dG9yczoKLSAqICAgVk13YXJlIEluYy4gLSBpbml0aWFsIGNvbnRyaWJ1dGlvbgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXBhY2thZ2Ugb3JnLmVjbGlwc2UudmlyZ28uc2VydmVyLnNtb2tldGVzdDsKLQotaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmZhaWw7Ci0KLWltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuaHR0cGNsaWVudC5IdHRwQ2xpZW50OwotaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5odHRwY2xpZW50Lkh0dHBNZXRob2Q7Ci1pbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmh0dHBjbGllbnQuVXNlcm5hbWVQYXNzd29yZENyZWRlbnRpYWxzOwotaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5odHRwY2xpZW50LmF1dGguQXV0aFNjb3BlOwotaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5odHRwY2xpZW50Lm1ldGhvZHMuR2V0TWV0aG9kOwotCi1wdWJsaWMgY2xhc3MgVXJsV2FpdExhdGNoIHsKLQotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgbG9uZyBIQUxGX1NFQ09ORCA9IDUwMDsKLQotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgbG9uZyBPTkVfTUlOVVRFID0gNjAgKiAxMDAwOwotCi0gICAgcHVibGljIHN0YXRpYyB2b2lkIHdhaXRGb3IoU3RyaW5nIHVybCkgewotICAgICAgICB3YWl0Rm9yKHVybCwgSEFMRl9TRUNPTkQsIE9ORV9NSU5VVEUpOwotICAgIH0KLQotICAgIHB1YmxpYyBzdGF0aWMgdm9pZCB3YWl0Rm9yKFN0cmluZyB1cmwsIFN0cmluZyB1c2VybmFtZSwgU3RyaW5nIHBhc3N3b3JkKSB7Ci0gICAgICAgIHdhaXRGb3IodXJsLCB1c2VybmFtZSwgcGFzc3dvcmQsIEhBTEZfU0VDT05ELCBPTkVfTUlOVVRFKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgc3RhdGljIHZvaWQgd2FpdEZvcihTdHJpbmcgdXJsLCBsb25nIGludGVydmFsLCBsb25nIGR1cmF0aW9uKSB7Ci0gICAgICAgIEh0dHBDbGllbnQgY2xpZW50ID0gbmV3IEh0dHBDbGllbnQoKTsKLSAgICAgICAgd2FpdCh1cmwsIGNsaWVudCwgaW50ZXJ2YWwsIGR1cmF0aW9uKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgc3RhdGljIHZvaWQgd2FpdEZvcihTdHJpbmcgdXJsLCBTdHJpbmcgdXNlcm5hbWUsIFN0cmluZyBwYXNzd29yZCwgbG9uZyBpbnRlcnZhbCwgbG9uZyBkdXJhdGlvbikgewotICAgICAgICBIdHRwQ2xpZW50IGNsaWVudCA9IG5ldyBIdHRwQ2xpZW50KCk7Ci0gICAgICAgIGNsaWVudC5nZXRQYXJhbXMoKS5zZXRBdXRoZW50aWNhdGlvblByZWVtcHRpdmUodHJ1ZSk7Ci0gICAgICAgIGNsaWVudC5nZXRTdGF0ZSgpLnNldENyZWRlbnRpYWxzKEF1dGhTY29wZS5BTlksIG5ldyBVc2VybmFtZVBhc3N3b3JkQ3JlZGVudGlhbHModXNlcm5hbWUsIHBhc3N3b3JkKSk7Ci0gICAgICAgIHdhaXQodXJsLCBjbGllbnQsIGludGVydmFsLCBkdXJhdGlvbik7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCB3YWl0KFN0cmluZyB1cmwsIEh0dHBDbGllbnQgY2xpZW50LCBsb25nIGludGVydmFsLCBsb25nIGR1cmF0aW9uKSB7Ci0gICAgICAgIEh0dHBNZXRob2QgZ2V0ID0gbmV3IEdldE1ldGhvZCh1cmwpOwotCi0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBsb25nIHN0YXJ0VGltZSA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOwotCi0gICAgICAgICAgICBpbnQgc3RhdHVzQ29kZSA9IDk5OTsKLSAgICAgICAgICAgIHdoaWxlIChTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSAtIHN0YXJ0VGltZSA8IGR1cmF0aW9uKSB7Ci0gICAgICAgICAgICAgICAgc3RhdHVzQ29kZSA9IGNsaWVudC5leGVjdXRlTWV0aG9kKGdldCk7Ci0gICAgICAgICAgICAgICAgaWYgKHN0YXR1c0NvZGUgPCA0MDApIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBUaHJlYWQuc2xlZXAoaW50ZXJ2YWwpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBmYWlsKFN0cmluZy5mb3JtYXQoIkFmdGVyICVkIG1zLCBzdGF0dXMgY29kZSB3YXMgJWQiLCBkdXJhdGlvbiwgc3RhdHVzQ29kZSkpOwotICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oZSk7Ci0gICAgICAgIH0gZmluYWxseSB7Ci0gICAgICAgICAgICBnZXQucmVsZWFzZUNvbm5lY3Rpb24oKTsKLSAgICAgICAgfQotICAgIH0KLQotfQpkaWZmIC0tZ2l0IGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS53ZWIvYnVpbGQueG1sIGIvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS53ZWIvYnVpbGQueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzU1NzkwLi4wMDAwMDAwCi0tLSBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkud2ViL2J1aWxkLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTxwcm9qZWN0IG5hbWU9Im9yZy5lY2xpcHNlLnZpcmdvLmpldHR5LndlYiI+Ci0KLQk8cHJvcGVydHkgZmlsZT0iJHtiYXNlZGlyfS8uLi8uLi8uLi9idWlsZC5wcm9wZXJ0aWVzIi8+Ci0JPHByb3BlcnR5IGZpbGU9IiR7YmFzZWRpcn0vLi4vLi4vLi4vYnVpbGQudmVyc2lvbnMiLz4KLQk8aW1wb3J0IGZpbGU9IiR7YmFzZWRpcn0vLi4vLi4vLi4vdmlyZ28tYnVpbGQvcmVzb3VyY2UvZGVmYXVsdC54bWwiLz4KLSAgICAKLTwvcHJvamVjdD4KZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkud2ViL2l2eS54bWwgYi9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LndlYi9pdnkueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWJiNDUwLi4wMDAwMDAwCi0tLSBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkud2ViL2l2eS54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPD94bWwtc3R5bGVzaGVldCB0eXBlPSJ0ZXh0L3hzbCIgaHJlZj0iaHR0cDovL2l2eXJlcC5qYXlhc29mdC5vcmcvaXZ5LWRvYy54c2wiPz4KLTxpdnktbW9kdWxlCi0JCXhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCi0JCXhzaTpub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9uPSJodHRwOi8vaW5jdWJhdG9yLmFwYWNoZS5vcmcvaXZ5L3NjaGVtYXMvaXZ5LnhzZCIKLQkJdmVyc2lvbj0iMS4zIj4KLQotCTxpbmZvIG9yZ2FuaXNhdGlvbj0iJHtwcm9qZWN0Lm9yZ2FuaXNhdGlvbn0iIG1vZHVsZT0iJHthbnQucHJvamVjdC5uYW1lfSIvPgotCi0JPGNvbmZpZ3VyYXRpb25zPgotCQk8aW5jbHVkZSBmaWxlPSIke3ZpcmdvLmJ1aWxkLmRpcn0vY29tbW9uL2RlZmF1bHQtaXZ5LWNvbmZpZ3VyYXRpb25zLnhtbCIvPgotCTwvY29uZmlndXJhdGlvbnM+Ci0KLQk8cHVibGljYXRpb25zPgotCQk8YXJ0aWZhY3QgbmFtZT0ib3JnLmVjbGlwc2UudmlyZ28uamV0dHkud2ViIiB0eXBlPSJwbGFuIiBleHQ9InBsYW4iLz4KLQk8L3B1YmxpY2F0aW9ucz4KLQotCTxkZXBlbmRlbmNpZXM+Ci0JCTxkZXBlbmRlbmN5IG9yZz0ib3JnLmVjbGlwc2UudmlyZ28ud2ViIiBuYW1lPSJvcmcuZWNsaXBzZS52aXJnby53ZWIuZG0iIHJldj0iJHtvcmcuZWNsaXBzZS52aXJnby53ZWJ9IiBjb25mPSJwcm92aWRlZC0+cnVudGltZSIvPgotCQk8ZXhjbHVkZSBvcmc9ImphdmF4LnNlcnZsZXQiIG1vZHVsZT0iamF2YXguc2VydmxldCIgLz4KLQk8L2RlcGVuZGVuY2llcz4KLQotPC9pdnktbW9kdWxlPgpkaWZmIC0tZ2l0IGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5yZXNvdXJjZXMvZmVhdHVyZS54bWwgYi9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnJlc291cmNlcy9mZWF0dXJlLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMmIyNTIxYy4uMDAwMDAwMAotLS0gYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnJlc291cmNlcy9mZWF0dXJlLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Ci08ZmVhdHVyZQotICAgICAgaWQ9Im9yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnJlc291cmNlcyIKLSAgICAgIGxhYmVsPSIlZmVhdHVyZU5hbWUiCi0gICAgICB2ZXJzaW9uPSIxLjAuMCIKLSAgICAgIHByb3ZpZGVyLW5hbWU9IiVwcm92aWRlck5hbWUiCi0gICAgICBpbWFnZT0iZWNsaXBzZV91cGRhdGVfMTIwLmpwZyI+Ci0KLSAgIDxkZXNjcmlwdGlvbiB1cmw9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdmlyZ28vIj4KLSAgICAgICVkZXNjcmlwdGlvbgotICAgPC9kZXNjcmlwdGlvbj4KLQotICAgPGNvcHlyaWdodCB1cmw9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdmlyZ28vIj4KLSAgICAgICVjb3B5cmlnaHQKLSAgIDwvY29weXJpZ2h0PgotCi0gICA8bGljZW5zZSB1cmw9IiVsaWNlbnNlVVJMIj4KLSAgICAgICVsaWNlbnNlCi0gICA8L2xpY2Vuc2U+Ci0gICAgCi0gICAgPHBsdWdpbgotICAgICAgICAgaWQ9ImpldHR5X3NlcnZlcl9yZXNvdXJjZXMiCi0gICAgICAgICBkb3dubG9hZC1zaXplPSIwIgotICAgICAgICAgaW5zdGFsbC1zaXplPSIwIgotICAgICAgICAgdmVyc2lvbj0iMS4wLjAiLz4KLQotPC9mZWF0dXJlPgpkaWZmIC0tZ2l0IGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zY3JpcHRzL2VjbGlwc2VfdXBkYXRlXzEyMC5qcGcgYi9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNjcmlwdHMvZWNsaXBzZV91cGRhdGVfMTIwLmpwZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYmZkZjcwOC4uMDAwMDAwMAotLS0gYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNjcmlwdHMvZWNsaXBzZV91cGRhdGVfMTIwLmpwZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2NyaXB0cy9lcGwtdjEwLmh0bWwgYi9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNjcmlwdHMvZXBsLXYxMC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBlZWNjODAwLi4wMDAwMDAwCi0tLSBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2NyaXB0cy9lcGwtdjEwLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNTggKzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgotPCEtLSBzYXZlZCBmcm9tIHVybD0oMDA0OSlodHRwOi8vd3d3LmVjbGlwc2Uub3JnL29yZy9kb2N1bWVudHMvZXBsLXYxMC5odG1sIC0tPgotPEhUTUwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPjxIRUFEPjxNRVRBIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiPgotCi08VElUTEU+RWNsaXBzZSBQdWJsaWMgTGljZW5zZSAtIFZlcnNpb24gMS4wPC9USVRMRT4KLTxTVFlMRSB0eXBlPSJ0ZXh0L2NzcyI+Ci0gIGJvZHkgewotICAgIHNpemU6IDguNWluIDExLjBpbjsKLSAgICBtYXJnaW46IDAuMjVpbiAwLjVpbiAwLjI1aW4gMC41aW47Ci0gICAgdGFiLWludGVydmFsOiAwLjVpbjsKLSAgICB9Ci0gIHAgeyAgCQotICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwotICAgIG1hcmdpbi10b3A6ICAwLjVlbTsKLSAgICBtYXJnaW4tYm90dG9tOiAwLjVlbTsKLSAgICB9Ci0gIHAubGlzdCB7Ci0gIAltYXJnaW4tbGVmdDogMC41aW47Ci0gICAgbWFyZ2luLXRvcDogIDAuMDVlbTsKLSAgICBtYXJnaW4tYm90dG9tOiAwLjA1ZW07Ci0gICAgfQotICA8L1NUWUxFPgotCi08L0hFQUQ+PEJPRFkgbGFuZz0iRU4tVVMiPgotCi08SDI+RWNsaXBzZSBQdWJsaWMgTGljZW5zZSAtIHYgMS4wPC9IMj4KLQotPFA+VEhFIEFDQ09NUEFOWUlORyBQUk9HUkFNIElTIFBST1ZJREVEIFVOREVSIFRIRSBURVJNUyBPRiBUSElTIEVDTElQU0UKLVBVQkxJQyBMSUNFTlNFICgiQUdSRUVNRU5UIikuIEFOWSBVU0UsIFJFUFJPRFVDVElPTiBPUgotRElTVFJJQlVUSU9OIE9GIFRIRSBQUk9HUkFNIENPTlNUSVRVVEVTIFJFQ0lQSUVOVCdTIEFDQ0VQVEFOQ0UgT0YgVEhJUwotQUdSRUVNRU5ULjwvUD4KLQotPFA+PEI+MS4gREVGSU5JVElPTlM8L0I+PC9QPgotCi08UD4iQ29udHJpYnV0aW9uIiBtZWFuczo8L1A+Ci0KLTxQIGNsYXNzPSJsaXN0Ij5hKSBpbiB0aGUgY2FzZSBvZiB0aGUgaW5pdGlhbCBDb250cmlidXRvciwgdGhlIGluaXRpYWwKLWNvZGUgYW5kIGRvY3VtZW50YXRpb24gZGlzdHJpYnV0ZWQgdW5kZXIgdGhpcyBBZ3JlZW1lbnQsIGFuZDwvUD4KLTxQIGNsYXNzPSJsaXN0Ij5iKSBpbiB0aGUgY2FzZSBvZiBlYWNoIHN1YnNlcXVlbnQgQ29udHJpYnV0b3I6PC9QPgotPFAgY2xhc3M9Imxpc3QiPmkpIGNoYW5nZXMgdG8gdGhlIFByb2dyYW0sIGFuZDwvUD4KLTxQIGNsYXNzPSJsaXN0Ij5paSkgYWRkaXRpb25zIHRvIHRoZSBQcm9ncmFtOzwvUD4KLTxQIGNsYXNzPSJsaXN0Ij53aGVyZSBzdWNoIGNoYW5nZXMgYW5kL29yIGFkZGl0aW9ucyB0byB0aGUgUHJvZ3JhbQotb3JpZ2luYXRlIGZyb20gYW5kIGFyZSBkaXN0cmlidXRlZCBieSB0aGF0IHBhcnRpY3VsYXIgQ29udHJpYnV0b3IuIEEKLUNvbnRyaWJ1dGlvbiAnb3JpZ2luYXRlcycgZnJvbSBhIENvbnRyaWJ1dG9yIGlmIGl0IHdhcyBhZGRlZCB0byB0aGUKLVByb2dyYW0gYnkgc3VjaCBDb250cmlidXRvciBpdHNlbGYgb3IgYW55b25lIGFjdGluZyBvbiBzdWNoCi1Db250cmlidXRvcidzIGJlaGFsZi4gQ29udHJpYnV0aW9ucyBkbyBub3QgaW5jbHVkZSBhZGRpdGlvbnMgdG8gdGhlCi1Qcm9ncmFtIHdoaWNoOiAoaSkgYXJlIHNlcGFyYXRlIG1vZHVsZXMgb2Ygc29mdHdhcmUgZGlzdHJpYnV0ZWQgaW4KLWNvbmp1bmN0aW9uIHdpdGggdGhlIFByb2dyYW0gdW5kZXIgdGhlaXIgb3duIGxpY2Vuc2UgYWdyZWVtZW50LCBhbmQgKGlpKQotYXJlIG5vdCBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBQcm9ncmFtLjwvUD4KLQotPFA+IkNvbnRyaWJ1dG9yIiBtZWFucyBhbnkgcGVyc29uIG9yIGVudGl0eSB0aGF0IGRpc3RyaWJ1dGVzCi10aGUgUHJvZ3JhbS48L1A+Ci0KLTxQPiJMaWNlbnNlZCBQYXRlbnRzIiBtZWFuIHBhdGVudCBjbGFpbXMgbGljZW5zYWJsZSBieSBhCi1Db250cmlidXRvciB3aGljaCBhcmUgbmVjZXNzYXJpbHkgaW5mcmluZ2VkIGJ5IHRoZSB1c2Ugb3Igc2FsZSBvZiBpdHMKLUNvbnRyaWJ1dGlvbiBhbG9uZSBvciB3aGVuIGNvbWJpbmVkIHdpdGggdGhlIFByb2dyYW0uPC9QPgotCi08UD4iUHJvZ3JhbSIgbWVhbnMgdGhlIENvbnRyaWJ1dGlvbnMgZGlzdHJpYnV0ZWQgaW4gYWNjb3JkYW5jZQotd2l0aCB0aGlzIEFncmVlbWVudC48L1A+Ci0KLTxQPiJSZWNpcGllbnQiIG1lYW5zIGFueW9uZSB3aG8gcmVjZWl2ZXMgdGhlIFByb2dyYW0gdW5kZXIKLXRoaXMgQWdyZWVtZW50LCBpbmNsdWRpbmcgYWxsIENvbnRyaWJ1dG9ycy48L1A+Ci0KLTxQPjxCPjIuIEdSQU5UIE9GIFJJR0hUUzwvQj48L1A+Ci0KLTxQIGNsYXNzPSJsaXN0Ij5hKSBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGlzIEFncmVlbWVudCwgZWFjaAotQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyBSZWNpcGllbnQgYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsCi1yb3lhbHR5LWZyZWUgY29weXJpZ2h0IGxpY2Vuc2UgdG8gcmVwcm9kdWNlLCBwcmVwYXJlIGRlcml2YXRpdmUgd29ya3MKLW9mLCBwdWJsaWNseSBkaXNwbGF5LCBwdWJsaWNseSBwZXJmb3JtLCBkaXN0cmlidXRlIGFuZCBzdWJsaWNlbnNlIHRoZQotQ29udHJpYnV0aW9uIG9mIHN1Y2ggQ29udHJpYnV0b3IsIGlmIGFueSwgYW5kIHN1Y2ggZGVyaXZhdGl2ZSB3b3JrcywgaW4KLXNvdXJjZSBjb2RlIGFuZCBvYmplY3QgY29kZSBmb3JtLjwvUD4KLQotPFAgY2xhc3M9Imxpc3QiPmIpIFN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoaXMgQWdyZWVtZW50LCBlYWNoCi1Db250cmlidXRvciBoZXJlYnkgZ3JhbnRzIFJlY2lwaWVudCBhIG5vbi1leGNsdXNpdmUsIHdvcmxkd2lkZSwKLXJveWFsdHktZnJlZSBwYXRlbnQgbGljZW5zZSB1bmRlciBMaWNlbnNlZCBQYXRlbnRzIHRvIG1ha2UsIHVzZSwgc2VsbCwKLW9mZmVyIHRvIHNlbGwsIGltcG9ydCBhbmQgb3RoZXJ3aXNlIHRyYW5zZmVyIHRoZSBDb250cmlidXRpb24gb2Ygc3VjaAotQ29udHJpYnV0b3IsIGlmIGFueSwgaW4gc291cmNlIGNvZGUgYW5kIG9iamVjdCBjb2RlIGZvcm0uIFRoaXMgcGF0ZW50Ci1saWNlbnNlIHNoYWxsIGFwcGx5IHRvIHRoZSBjb21iaW5hdGlvbiBvZiB0aGUgQ29udHJpYnV0aW9uIGFuZCB0aGUKLVByb2dyYW0gaWYsIGF0IHRoZSB0aW1lIHRoZSBDb250cmlidXRpb24gaXMgYWRkZWQgYnkgdGhlIENvbnRyaWJ1dG9yLAotc3VjaCBhZGRpdGlvbiBvZiB0aGUgQ29udHJpYnV0aW9uIGNhdXNlcyBzdWNoIGNvbWJpbmF0aW9uIHRvIGJlIGNvdmVyZWQKLWJ5IHRoZSBMaWNlbnNlZCBQYXRlbnRzLiBUaGUgcGF0ZW50IGxpY2Vuc2Ugc2hhbGwgbm90IGFwcGx5IHRvIGFueSBvdGhlcgotY29tYmluYXRpb25zIHdoaWNoIGluY2x1ZGUgdGhlIENvbnRyaWJ1dGlvbi4gTm8gaGFyZHdhcmUgcGVyIHNlIGlzCi1saWNlbnNlZCBoZXJldW5kZXIuPC9QPgotCi08UCBjbGFzcz0ibGlzdCI+YykgUmVjaXBpZW50IHVuZGVyc3RhbmRzIHRoYXQgYWx0aG91Z2ggZWFjaCBDb250cmlidXRvcgotZ3JhbnRzIHRoZSBsaWNlbnNlcyB0byBpdHMgQ29udHJpYnV0aW9ucyBzZXQgZm9ydGggaGVyZWluLCBubyBhc3N1cmFuY2VzCi1hcmUgcHJvdmlkZWQgYnkgYW55IENvbnRyaWJ1dG9yIHRoYXQgdGhlIFByb2dyYW0gZG9lcyBub3QgaW5mcmluZ2UgdGhlCi1wYXRlbnQgb3Igb3RoZXIgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBvZiBhbnkgb3RoZXIgZW50aXR5LiBFYWNoCi1Db250cmlidXRvciBkaXNjbGFpbXMgYW55IGxpYWJpbGl0eSB0byBSZWNpcGllbnQgZm9yIGNsYWltcyBicm91Z2h0IGJ5Ci1hbnkgb3RoZXIgZW50aXR5IGJhc2VkIG9uIGluZnJpbmdlbWVudCBvZiBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzCi1vciBvdGhlcndpc2UuIEFzIGEgY29uZGl0aW9uIHRvIGV4ZXJjaXNpbmcgdGhlIHJpZ2h0cyBhbmQgbGljZW5zZXMKLWdyYW50ZWQgaGVyZXVuZGVyLCBlYWNoIFJlY2lwaWVudCBoZXJlYnkgYXNzdW1lcyBzb2xlIHJlc3BvbnNpYmlsaXR5IHRvCi1zZWN1cmUgYW55IG90aGVyIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgbmVlZGVkLCBpZiBhbnkuIEZvcgotZXhhbXBsZSwgaWYgYSB0aGlyZCBwYXJ0eSBwYXRlbnQgbGljZW5zZSBpcyByZXF1aXJlZCB0byBhbGxvdyBSZWNpcGllbnQKLXRvIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0sIGl0IGlzIFJlY2lwaWVudCdzIHJlc3BvbnNpYmlsaXR5IHRvIGFjcXVpcmUKLXRoYXQgbGljZW5zZSBiZWZvcmUgZGlzdHJpYnV0aW5nIHRoZSBQcm9ncmFtLjwvUD4KLQotPFAgY2xhc3M9Imxpc3QiPmQpIEVhY2ggQ29udHJpYnV0b3IgcmVwcmVzZW50cyB0aGF0IHRvIGl0cyBrbm93bGVkZ2UgaXQKLWhhcyBzdWZmaWNpZW50IGNvcHlyaWdodCByaWdodHMgaW4gaXRzIENvbnRyaWJ1dGlvbiwgaWYgYW55LCB0byBncmFudAotdGhlIGNvcHlyaWdodCBsaWNlbnNlIHNldCBmb3J0aCBpbiB0aGlzIEFncmVlbWVudC48L1A+Ci0KLTxQPjxCPjMuIFJFUVVJUkVNRU5UUzwvQj48L1A+Ci0KLTxQPkEgQ29udHJpYnV0b3IgbWF5IGNob29zZSB0byBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGluIG9iamVjdCBjb2RlCi1mb3JtIHVuZGVyIGl0cyBvd24gbGljZW5zZSBhZ3JlZW1lbnQsIHByb3ZpZGVkIHRoYXQ6PC9QPgotCi08UCBjbGFzcz0ibGlzdCI+YSkgaXQgY29tcGxpZXMgd2l0aCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhpcwotQWdyZWVtZW50OyBhbmQ8L1A+Ci0KLTxQIGNsYXNzPSJsaXN0Ij5iKSBpdHMgbGljZW5zZSBhZ3JlZW1lbnQ6PC9QPgotCi08UCBjbGFzcz0ibGlzdCI+aSkgZWZmZWN0aXZlbHkgZGlzY2xhaW1zIG9uIGJlaGFsZiBvZiBhbGwgQ29udHJpYnV0b3JzCi1hbGwgd2FycmFudGllcyBhbmQgY29uZGl0aW9ucywgZXhwcmVzcyBhbmQgaW1wbGllZCwgaW5jbHVkaW5nIHdhcnJhbnRpZXMKLW9yIGNvbmRpdGlvbnMgb2YgdGl0bGUgYW5kIG5vbi1pbmZyaW5nZW1lbnQsIGFuZCBpbXBsaWVkIHdhcnJhbnRpZXMgb3IKLWNvbmRpdGlvbnMgb2YgbWVyY2hhbnRhYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZTs8L1A+Ci0KLTxQIGNsYXNzPSJsaXN0Ij5paSkgZWZmZWN0aXZlbHkgZXhjbHVkZXMgb24gYmVoYWxmIG9mIGFsbCBDb250cmlidXRvcnMKLWFsbCBsaWFiaWxpdHkgZm9yIGRhbWFnZXMsIGluY2x1ZGluZyBkaXJlY3QsIGluZGlyZWN0LCBzcGVjaWFsLAotaW5jaWRlbnRhbCBhbmQgY29uc2VxdWVudGlhbCBkYW1hZ2VzLCBzdWNoIGFzIGxvc3QgcHJvZml0czs8L1A+Ci0KLTxQIGNsYXNzPSJsaXN0Ij5paWkpIHN0YXRlcyB0aGF0IGFueSBwcm92aXNpb25zIHdoaWNoIGRpZmZlciBmcm9tIHRoaXMKLUFncmVlbWVudCBhcmUgb2ZmZXJlZCBieSB0aGF0IENvbnRyaWJ1dG9yIGFsb25lIGFuZCBub3QgYnkgYW55IG90aGVyCi1wYXJ0eTsgYW5kPC9QPgotCi08UCBjbGFzcz0ibGlzdCI+aXYpIHN0YXRlcyB0aGF0IHNvdXJjZSBjb2RlIGZvciB0aGUgUHJvZ3JhbSBpcyBhdmFpbGFibGUKLWZyb20gc3VjaCBDb250cmlidXRvciwgYW5kIGluZm9ybXMgbGljZW5zZWVzIGhvdyB0byBvYnRhaW4gaXQgaW4gYQotcmVhc29uYWJsZSBtYW5uZXIgb24gb3IgdGhyb3VnaCBhIG1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZQotZXhjaGFuZ2UuPC9QPgotCi08UD5XaGVuIHRoZSBQcm9ncmFtIGlzIG1hZGUgYXZhaWxhYmxlIGluIHNvdXJjZSBjb2RlIGZvcm06PC9QPgotCi08UCBjbGFzcz0ibGlzdCI+YSkgaXQgbXVzdCBiZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGlzIEFncmVlbWVudDsgYW5kPC9QPgotCi08UCBjbGFzcz0ibGlzdCI+YikgYSBjb3B5IG9mIHRoaXMgQWdyZWVtZW50IG11c3QgYmUgaW5jbHVkZWQgd2l0aCBlYWNoCi1jb3B5IG9mIHRoZSBQcm9ncmFtLjwvUD4KLQotPFA+Q29udHJpYnV0b3JzIG1heSBub3QgcmVtb3ZlIG9yIGFsdGVyIGFueSBjb3B5cmlnaHQgbm90aWNlcyBjb250YWluZWQKLXdpdGhpbiB0aGUgUHJvZ3JhbS48L1A+Ci0KLTxQPkVhY2ggQ29udHJpYnV0b3IgbXVzdCBpZGVudGlmeSBpdHNlbGYgYXMgdGhlIG9yaWdpbmF0b3Igb2YgaXRzCi1Db250cmlidXRpb24sIGlmIGFueSwgaW4gYSBtYW5uZXIgdGhhdCByZWFzb25hYmx5IGFsbG93cyBzdWJzZXF1ZW50Ci1SZWNpcGllbnRzIHRvIGlkZW50aWZ5IHRoZSBvcmlnaW5hdG9yIG9mIHRoZSBDb250cmlidXRpb24uPC9QPgotCi08UD48Qj40LiBDT01NRVJDSUFMIERJU1RSSUJVVElPTjwvQj48L1A+Ci0KLTxQPkNvbW1lcmNpYWwgZGlzdHJpYnV0b3JzIG9mIHNvZnR3YXJlIG1heSBhY2NlcHQgY2VydGFpbgotcmVzcG9uc2liaWxpdGllcyB3aXRoIHJlc3BlY3QgdG8gZW5kIHVzZXJzLCBidXNpbmVzcyBwYXJ0bmVycyBhbmQgdGhlCi1saWtlLiBXaGlsZSB0aGlzIGxpY2Vuc2UgaXMgaW50ZW5kZWQgdG8gZmFjaWxpdGF0ZSB0aGUgY29tbWVyY2lhbCB1c2Ugb2YKLXRoZSBQcm9ncmFtLCB0aGUgQ29udHJpYnV0b3Igd2hvIGluY2x1ZGVzIHRoZSBQcm9ncmFtIGluIGEgY29tbWVyY2lhbAotcHJvZHVjdCBvZmZlcmluZyBzaG91bGQgZG8gc28gaW4gYSBtYW5uZXIgd2hpY2ggZG9lcyBub3QgY3JlYXRlCi1wb3RlbnRpYWwgbGlhYmlsaXR5IGZvciBvdGhlciBDb250cmlidXRvcnMuIFRoZXJlZm9yZSwgaWYgYSBDb250cmlidXRvcgotaW5jbHVkZXMgdGhlIFByb2dyYW0gaW4gYSBjb21tZXJjaWFsIHByb2R1Y3Qgb2ZmZXJpbmcsIHN1Y2ggQ29udHJpYnV0b3IKLSgiQ29tbWVyY2lhbCBDb250cmlidXRvciIpIGhlcmVieSBhZ3JlZXMgdG8gZGVmZW5kIGFuZAotaW5kZW1uaWZ5IGV2ZXJ5IG90aGVyIENvbnRyaWJ1dG9yICgiSW5kZW1uaWZpZWQgQ29udHJpYnV0b3IiKQotYWdhaW5zdCBhbnkgbG9zc2VzLCBkYW1hZ2VzIGFuZCBjb3N0cyAoY29sbGVjdGl2ZWx5ICJMb3NzZXMiKQotYXJpc2luZyBmcm9tIGNsYWltcywgbGF3c3VpdHMgYW5kIG90aGVyIGxlZ2FsIGFjdGlvbnMgYnJvdWdodCBieSBhIHRoaXJkCi1wYXJ0eSBhZ2FpbnN0IHRoZSBJbmRlbW5pZmllZCBDb250cmlidXRvciB0byB0aGUgZXh0ZW50IGNhdXNlZCBieSB0aGUKLWFjdHMgb3Igb21pc3Npb25zIG9mIHN1Y2ggQ29tbWVyY2lhbCBDb250cmlidXRvciBpbiBjb25uZWN0aW9uIHdpdGggaXRzCi1kaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0gaW4gYSBjb21tZXJjaWFsIHByb2R1Y3Qgb2ZmZXJpbmcuIFRoZQotb2JsaWdhdGlvbnMgaW4gdGhpcyBzZWN0aW9uIGRvIG5vdCBhcHBseSB0byBhbnkgY2xhaW1zIG9yIExvc3NlcwotcmVsYXRpbmcgdG8gYW55IGFjdHVhbCBvciBhbGxlZ2VkIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBpbmZyaW5nZW1lbnQuIEluCi1vcmRlciB0byBxdWFsaWZ5LCBhbiBJbmRlbW5pZmllZCBDb250cmlidXRvciBtdXN0OiBhKSBwcm9tcHRseSBub3RpZnkKLXRoZSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIGluIHdyaXRpbmcgb2Ygc3VjaCBjbGFpbSwgYW5kIGIpIGFsbG93IHRoZQotQ29tbWVyY2lhbCBDb250cmlidXRvciB0byBjb250cm9sLCBhbmQgY29vcGVyYXRlIHdpdGggdGhlIENvbW1lcmNpYWwKLUNvbnRyaWJ1dG9yIGluLCB0aGUgZGVmZW5zZSBhbmQgYW55IHJlbGF0ZWQgc2V0dGxlbWVudCBuZWdvdGlhdGlvbnMuIFRoZQotSW5kZW1uaWZpZWQgQ29udHJpYnV0b3IgbWF5IHBhcnRpY2lwYXRlIGluIGFueSBzdWNoIGNsYWltIGF0IGl0cyBvd24KLWV4cGVuc2UuPC9QPgotCi08UD5Gb3IgZXhhbXBsZSwgYSBDb250cmlidXRvciBtaWdodCBpbmNsdWRlIHRoZSBQcm9ncmFtIGluIGEgY29tbWVyY2lhbAotcHJvZHVjdCBvZmZlcmluZywgUHJvZHVjdCBYLiBUaGF0IENvbnRyaWJ1dG9yIGlzIHRoZW4gYSBDb21tZXJjaWFsCi1Db250cmlidXRvci4gSWYgdGhhdCBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIHRoZW4gbWFrZXMgcGVyZm9ybWFuY2UKLWNsYWltcywgb3Igb2ZmZXJzIHdhcnJhbnRpZXMgcmVsYXRlZCB0byBQcm9kdWN0IFgsIHRob3NlIHBlcmZvcm1hbmNlCi1jbGFpbXMgYW5kIHdhcnJhbnRpZXMgYXJlIHN1Y2ggQ29tbWVyY2lhbCBDb250cmlidXRvcidzIHJlc3BvbnNpYmlsaXR5Ci1hbG9uZS4gVW5kZXIgdGhpcyBzZWN0aW9uLCB0aGUgQ29tbWVyY2lhbCBDb250cmlidXRvciB3b3VsZCBoYXZlIHRvCi1kZWZlbmQgY2xhaW1zIGFnYWluc3QgdGhlIG90aGVyIENvbnRyaWJ1dG9ycyByZWxhdGVkIHRvIHRob3NlCi1wZXJmb3JtYW5jZSBjbGFpbXMgYW5kIHdhcnJhbnRpZXMsIGFuZCBpZiBhIGNvdXJ0IHJlcXVpcmVzIGFueSBvdGhlcgotQ29udHJpYnV0b3IgdG8gcGF5IGFueSBkYW1hZ2VzIGFzIGEgcmVzdWx0LCB0aGUgQ29tbWVyY2lhbCBDb250cmlidXRvcgotbXVzdCBwYXkgdGhvc2UgZGFtYWdlcy48L1A+Ci0KLTxQPjxCPjUuIE5PIFdBUlJBTlRZPC9CPjwvUD4KLQotPFA+RVhDRVBUIEFTIEVYUFJFU1NMWSBTRVQgRk9SVEggSU4gVEhJUyBBR1JFRU1FTlQsIFRIRSBQUk9HUkFNIElTCi1QUk9WSURFRCBPTiBBTiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUwotT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQgSU5DTFVESU5HLCBXSVRIT1VUIExJTUlUQVRJT04sCi1BTlkgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIFRJVExFLCBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkKLU9SIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBFYWNoIFJlY2lwaWVudCBpcyBzb2xlbHkKLXJlc3BvbnNpYmxlIGZvciBkZXRlcm1pbmluZyB0aGUgYXBwcm9wcmlhdGVuZXNzIG9mIHVzaW5nIGFuZAotZGlzdHJpYnV0aW5nIHRoZSBQcm9ncmFtIGFuZCBhc3N1bWVzIGFsbCByaXNrcyBhc3NvY2lhdGVkIHdpdGggaXRzCi1leGVyY2lzZSBvZiByaWdodHMgdW5kZXIgdGhpcyBBZ3JlZW1lbnQgLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvCi10aGUgcmlza3MgYW5kIGNvc3RzIG9mIHByb2dyYW0gZXJyb3JzLCBjb21wbGlhbmNlIHdpdGggYXBwbGljYWJsZSBsYXdzLAotZGFtYWdlIHRvIG9yIGxvc3Mgb2YgZGF0YSwgcHJvZ3JhbXMgb3IgZXF1aXBtZW50LCBhbmQgdW5hdmFpbGFiaWxpdHkgb3IKLWludGVycnVwdGlvbiBvZiBvcGVyYXRpb25zLjwvUD4KLQotPFA+PEI+Ni4gRElTQ0xBSU1FUiBPRiBMSUFCSUxJVFk8L0I+PC9QPgotCi08UD5FWENFUFQgQVMgRVhQUkVTU0xZIFNFVCBGT1JUSCBJTiBUSElTIEFHUkVFTUVOVCwgTkVJVEhFUiBSRUNJUElFTlQKLU5PUiBBTlkgQ09OVFJJQlVUT1JTIFNIQUxMIEhBVkUgQU5ZIExJQUJJTElUWSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCi1JTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HCi1XSVRIT1VUIExJTUlUQVRJT04gTE9TVCBQUk9GSVRTKSwgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YKLUxJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCi1ORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9SCi1ESVNUUklCVVRJT04gT0YgVEhFIFBST0dSQU0gT1IgVEhFIEVYRVJDSVNFIE9GIEFOWSBSSUdIVFMgR1JBTlRFRAotSEVSRVVOREVSLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy48L1A+Ci0KLTxQPjxCPjcuIEdFTkVSQUw8L0I+PC9QPgotCi08UD5JZiBhbnkgcHJvdmlzaW9uIG9mIHRoaXMgQWdyZWVtZW50IGlzIGludmFsaWQgb3IgdW5lbmZvcmNlYWJsZSB1bmRlcgotYXBwbGljYWJsZSBsYXcsIGl0IHNoYWxsIG5vdCBhZmZlY3QgdGhlIHZhbGlkaXR5IG9yIGVuZm9yY2VhYmlsaXR5IG9mCi10aGUgcmVtYWluZGVyIG9mIHRoZSB0ZXJtcyBvZiB0aGlzIEFncmVlbWVudCwgYW5kIHdpdGhvdXQgZnVydGhlciBhY3Rpb24KLWJ5IHRoZSBwYXJ0aWVzIGhlcmV0bywgc3VjaCBwcm92aXNpb24gc2hhbGwgYmUgcmVmb3JtZWQgdG8gdGhlIG1pbmltdW0KLWV4dGVudCBuZWNlc3NhcnkgdG8gbWFrZSBzdWNoIHByb3Zpc2lvbiB2YWxpZCBhbmQgZW5mb3JjZWFibGUuPC9QPgotCi08UD5JZiBSZWNpcGllbnQgaW5zdGl0dXRlcyBwYXRlbnQgbGl0aWdhdGlvbiBhZ2FpbnN0IGFueSBlbnRpdHkKLShpbmNsdWRpbmcgYSBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0IHRoZQotUHJvZ3JhbSBpdHNlbGYgKGV4Y2x1ZGluZyBjb21iaW5hdGlvbnMgb2YgdGhlIFByb2dyYW0gd2l0aCBvdGhlcgotc29mdHdhcmUgb3IgaGFyZHdhcmUpIGluZnJpbmdlcyBzdWNoIFJlY2lwaWVudCdzIHBhdGVudChzKSwgdGhlbiBzdWNoCi1SZWNpcGllbnQncyByaWdodHMgZ3JhbnRlZCB1bmRlciBTZWN0aW9uIDIoYikgc2hhbGwgdGVybWluYXRlIGFzIG9mIHRoZQotZGF0ZSBzdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuPC9QPgotCi08UD5BbGwgUmVjaXBpZW50J3MgcmlnaHRzIHVuZGVyIHRoaXMgQWdyZWVtZW50IHNoYWxsIHRlcm1pbmF0ZSBpZiBpdAotZmFpbHMgdG8gY29tcGx5IHdpdGggYW55IG9mIHRoZSBtYXRlcmlhbCB0ZXJtcyBvciBjb25kaXRpb25zIG9mIHRoaXMKLUFncmVlbWVudCBhbmQgZG9lcyBub3QgY3VyZSBzdWNoIGZhaWx1cmUgaW4gYSByZWFzb25hYmxlIHBlcmlvZCBvZiB0aW1lCi1hZnRlciBiZWNvbWluZyBhd2FyZSBvZiBzdWNoIG5vbmNvbXBsaWFuY2UuIElmIGFsbCBSZWNpcGllbnQncyByaWdodHMKLXVuZGVyIHRoaXMgQWdyZWVtZW50IHRlcm1pbmF0ZSwgUmVjaXBpZW50IGFncmVlcyB0byBjZWFzZSB1c2UgYW5kCi1kaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0gYXMgc29vbiBhcyByZWFzb25hYmx5IHByYWN0aWNhYmxlLiBIb3dldmVyLAotUmVjaXBpZW50J3Mgb2JsaWdhdGlvbnMgdW5kZXIgdGhpcyBBZ3JlZW1lbnQgYW5kIGFueSBsaWNlbnNlcyBncmFudGVkIGJ5Ci1SZWNpcGllbnQgcmVsYXRpbmcgdG8gdGhlIFByb2dyYW0gc2hhbGwgY29udGludWUgYW5kIHN1cnZpdmUuPC9QPgotCi08UD5FdmVyeW9uZSBpcyBwZXJtaXR0ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhpcwotQWdyZWVtZW50LCBidXQgaW4gb3JkZXIgdG8gYXZvaWQgaW5jb25zaXN0ZW5jeSB0aGUgQWdyZWVtZW50IGlzCi1jb3B5cmlnaHRlZCBhbmQgbWF5IG9ubHkgYmUgbW9kaWZpZWQgaW4gdGhlIGZvbGxvd2luZyBtYW5uZXIuIFRoZQotQWdyZWVtZW50IFN0ZXdhcmQgcmVzZXJ2ZXMgdGhlIHJpZ2h0IHRvIHB1Ymxpc2ggbmV3IHZlcnNpb25zIChpbmNsdWRpbmcKLXJldmlzaW9ucykgb2YgdGhpcyBBZ3JlZW1lbnQgZnJvbSB0aW1lIHRvIHRpbWUuIE5vIG9uZSBvdGhlciB0aGFuIHRoZQotQWdyZWVtZW50IFN0ZXdhcmQgaGFzIHRoZSByaWdodCB0byBtb2RpZnkgdGhpcyBBZ3JlZW1lbnQuIFRoZSBFY2xpcHNlCi1Gb3VuZGF0aW9uIGlzIHRoZSBpbml0aWFsIEFncmVlbWVudCBTdGV3YXJkLiBUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1heQotYXNzaWduIHRoZSByZXNwb25zaWJpbGl0eSB0byBzZXJ2ZSBhcyB0aGUgQWdyZWVtZW50IFN0ZXdhcmQgdG8gYQotc3VpdGFibGUgc2VwYXJhdGUgZW50aXR5LiBFYWNoIG5ldyB2ZXJzaW9uIG9mIHRoZSBBZ3JlZW1lbnQgd2lsbCBiZQotZ2l2ZW4gYSBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uIG51bWJlci4gVGhlIFByb2dyYW0gKGluY2x1ZGluZwotQ29udHJpYnV0aW9ucykgbWF5IGFsd2F5cyBiZSBkaXN0cmlidXRlZCBzdWJqZWN0IHRvIHRoZSB2ZXJzaW9uIG9mIHRoZQotQWdyZWVtZW50IHVuZGVyIHdoaWNoIGl0IHdhcyByZWNlaXZlZC4gSW4gYWRkaXRpb24sIGFmdGVyIGEgbmV3IHZlcnNpb24KLW9mIHRoZSBBZ3JlZW1lbnQgaXMgcHVibGlzaGVkLCBDb250cmlidXRvciBtYXkgZWxlY3QgdG8gZGlzdHJpYnV0ZSB0aGUKLVByb2dyYW0gKGluY2x1ZGluZyBpdHMgQ29udHJpYnV0aW9ucykgdW5kZXIgdGhlIG5ldyB2ZXJzaW9uLiBFeGNlcHQgYXMKLWV4cHJlc3NseSBzdGF0ZWQgaW4gU2VjdGlvbnMgMihhKSBhbmQgMihiKSBhYm92ZSwgUmVjaXBpZW50IHJlY2VpdmVzIG5vCi1yaWdodHMgb3IgbGljZW5zZXMgdG8gdGhlIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBvZiBhbnkgQ29udHJpYnV0b3IgdW5kZXIKLXRoaXMgQWdyZWVtZW50LCB3aGV0aGVyIGV4cHJlc3NseSwgYnkgaW1wbGljYXRpb24sIGVzdG9wcGVsIG9yCi1vdGhlcndpc2UuIEFsbCByaWdodHMgaW4gdGhlIFByb2dyYW0gbm90IGV4cHJlc3NseSBncmFudGVkIHVuZGVyIHRoaXMKLUFncmVlbWVudCBhcmUgcmVzZXJ2ZWQuPC9QPgotCi08UD5UaGlzIEFncmVlbWVudCBpcyBnb3Zlcm5lZCBieSB0aGUgbGF3cyBvZiB0aGUgU3RhdGUgb2YgTmV3IFlvcmsgYW5kCi10aGUgaW50ZWxsZWN0dWFsIHByb3BlcnR5IGxhd3Mgb2YgdGhlIFVuaXRlZCBTdGF0ZXMgb2YgQW1lcmljYS4gTm8gcGFydHkKLXRvIHRoaXMgQWdyZWVtZW50IHdpbGwgYnJpbmcgYSBsZWdhbCBhY3Rpb24gdW5kZXIgdGhpcyBBZ3JlZW1lbnQgbW9yZQotdGhhbiBvbmUgeWVhciBhZnRlciB0aGUgY2F1c2Ugb2YgYWN0aW9uIGFyb3NlLiBFYWNoIHBhcnR5IHdhaXZlcyBpdHMKLXJpZ2h0cyB0byBhIGp1cnkgdHJpYWwgaW4gYW55IHJlc3VsdGluZyBsaXRpZ2F0aW9uLjwvUD4KLQotCi0KLQotPC9CT0RZPjwvSFRNTD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNjcmlwdHMvZmVhdHVyZS5wcm9wZXJ0aWVzIGIvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zY3JpcHRzL2ZlYXR1cmUucHJvcGVydGllcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjkyZGZkOS4uMDAwMDAwMAotLS0gYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNjcmlwdHMvZmVhdHVyZS5wcm9wZXJ0aWVzCisrKyAvZGV2L251bGwKQEAgLTEsMTg5ICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ29weXJpZ2h0IChjKSAyMDExIFNBUCBBRwotIwotIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCi0jIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAotIyBhbmQgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4KLSMgVGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgaXMgYXZhaWxhYmxlIGF0Ci0jICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKLSMgYW5kIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIGlzIGF2YWlsYWJsZSBhdAotIyAgIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYXBhY2hlMi4wLnBocC4KLSMgWW91IG1heSBlbGVjdCB0byByZWRpc3RyaWJ1dGUgdGhpcyBjb2RlIHVuZGVyIGVpdGhlciBvZiB0aGVzZSBsaWNlbnNlcy4KLSMKLSMgQ29udHJpYnV0b3JzOgotIyAgIEJvcmlzbGF2IEthcHVrYXJhbm92IC0gaW5pdGlhbCBjb250cmlidXRpb24KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgZmVhdHVyZS5wcm9wZXJ0aWVzCi0jIGNvbnRhaW5zIGV4dGVybmFsaXplZCBzdHJpbmdzIGZvciBmZWF0dXJlLnhtbAotIyAiJWZvbyIgaW4gZmVhdHVyZS54bWwgY29ycmVzcG9uZHMgdG8gdGhlIGtleSAiZm9vIiBpbiB0aGlzIGZpbGUKLSMgamF2YS5pby5Qcm9wZXJ0aWVzIGZpbGUgKElTTyA4ODU5LTEgd2l0aCAiXCIgZXNjYXBlcykKLSMgVGhpcyBmaWxlIHNob3VsZCBiZSB0cmFuc2xhdGVkLgotCi0jICJmZWF0dXJlTmFtZSIgcHJvcGVydHkgLSBuYW1lIG9mIHRoZSBmZWF0dXJlCi1mZWF0dXJlTmFtZT1FY2xpcHNlIFZpcmdvIEpldHR5IFNlcnZlciBSZXNvdXJjZXMgRmVhdHVyZQotCi0jICJwcm92aWRlck5hbWUiIHByb3BlcnR5IC0gbmFtZSBvZiB0aGUgY29tcGFueSB0aGF0IHByb3ZpZGVzIHRoZSBmZWF0dXJlCi1wcm92aWRlck5hbWU9RWNsaXBzZS5vcmcKLQotIyAidXBkYXRlU2l0ZU5hbWUiIHByb3BlcnR5IC0gbGFiZWwgZm9yIHRoZSB1cGRhdGUgc2l0ZQotCi0jICJkZXNjcmlwdGlvbiIgcHJvcGVydHkgLSBkZXNjcmlwdGlvbiBvZiB0aGUgZmVhdHVyZQotZGVzY3JpcHRpb249VGhpcyBmZWF0dXJlIGFkZHMgdGhlIGpldHR5IGJ1bmRsZXMgYWxvbmcgd2l0aCB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLlxuXAotCi0jICJjb3B5cmlnaHQiIHByb3BlcnR5IC0gdGV4dCBvZiB0aGUgIkZlYXR1cmUgVXBkYXRlIENvcHlyaWdodCIKLWNvcHlyaWdodD1cCi1Db3B5cmlnaHQgKGMpIDIwMDksIDIwMTAsIDIwMTEgVk13YXJlIEluYy4gYW5kIG90aGVyc1xuXAotXG5cCi1BbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzXG5cCi1hcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjBcblwKLWFuZCBBcGFjaGUgTGljZW5zZSB2Mi4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLlxuXAotVGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgaXMgYXZhaWxhYmxlIGF0XG5cCi1odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbFxuXAotYW5kIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIGlzIGF2YWlsYWJsZSBhdFxuXAotaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hcGFjaGUyLjAucGhwLlxuXAotWW91IG1heSBlbGVjdCB0byByZWRpc3RyaWJ1dGUgdGhpcyBjb2RlIHVuZGVyIGVpdGhlciBvZiB0aGVzZVxuXAotbGljZW5zZXMuXG5cCi1cblwKLUNvbnRyaWJ1dG9yczpcblwKLVZNd2FyZSBJbmMuIC0gaW5pdGlhbCBjb250cmlidXRpb25cblwKLQotIyAibGljZW5zZVVSTCIgcHJvcGVydHkgLSBVUkwgb2YgdGhlICJGZWF0dXJlIExpY2Vuc2UiCi0jIGRvIG5vdCB0cmFuc2xhdGUgdmFsdWUgLSBqdXN0IGNoYW5nZSB0byBwb2ludCB0byBhIGxvY2FsZS1zcGVjaWZpYyBIVE1MIHBhZ2UKLWxpY2Vuc2VVUkw9bGljZW5zZS5odG1sCi0KLSMgImxpY2Vuc2UiIHByb3BlcnR5IC0gdGV4dCBvZiB0aGUgIkZlYXR1cmUgVXBkYXRlIExpY2Vuc2UiCi0jIHNob3VsZCBiZSBwbGFpbiB0ZXh0IHZlcnNpb24gb2YgbGljZW5zZSBhZ3JlZW1lbnQgcG9pbnRlZCB0byBiZSAibGljZW5zZVVSTCIKLWxpY2Vuc2U9XAotRWNsaXBzZSBGb3VuZGF0aW9uIFNvZnR3YXJlIFVzZXIgQWdyZWVtZW50XG5cCi1BcHJpbCAxNCwgMjAxMFxuXAotXG5cCi1Vc2FnZSBPZiBDb250ZW50XG5cCi1cblwKLVRIRSBFQ0xJUFNFIEZPVU5EQVRJT04gTUFLRVMgQVZBSUxBQkxFIFNPRlRXQVJFLCBET0NVTUVOVEFUSU9OLFxuXAotSU5GT1JNQVRJT04gQU5EL09SIE9USEVSIE1BVEVSSUFMUyBGT1IgT1BFTiBTT1VSQ0UgUFJPSkVDVFNcblwKLShDT0xMRUNUSVZFTFkgIkNPTlRFTlQiKS4gVVNFIE9GIFRIRSBDT05URU5UIElTIEdPVkVSTkVEIEJZIFRIRSBURVJNU1xuXAotQU5EIENPTkRJVElPTlMgT0YgVEhJUyBBR1JFRU1FTlQgQU5EL09SIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRlxuXAotTElDRU5TRSBBR1JFRU1FTlRTIE9SIE5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRUQgQkVMT1cuXG5cCi1CWSBVU0lORyBUSEUgQ09OVEVOVCwgWU9VIEFHUkVFIFRIQVQgWU9VUiBVU0UgT0YgVEhFIENPTlRFTlQgSVNcblwKLUdPVkVSTkVEIEJZIFRISVMgQUdSRUVNRU5UIEFORC9PUiBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgQU5ZXG5cCi1BUFBMSUNBQkxFIExJQ0VOU0UgQUdSRUVNRU5UUyBPUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEXG5cCi1CRUxPVy4gSUYgWU9VIERPIE5PVCBBR1JFRSBUTyBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgVEhJU1xuXAotQUdSRUVNRU5UIEFORCBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgQU5ZIEFQUExJQ0FCTEUgTElDRU5TRVxuXAotQUdSRUVNRU5UUyBPUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLCBUSEVOIFlPVSBNQVlcblwKLU5PVCBVU0UgVEhFIENPTlRFTlQuXG5cCi1cblwKLUFwcGxpY2FibGUgTGljZW5zZXNcblwKLVxuXAotVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQsIGFsbCBDb250ZW50IG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBFY2xpcHNlIEZvdW5kYXRpb25cblwKLWlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgUHVibGljXG5cCi1MaWNlbnNlIFZlcnNpb24gMS4wICgiRVBMIikuIEEgY29weSBvZiB0aGUgRVBMIGlzIHByb3ZpZGVkIHdpdGggdGhpc1xuXAotQ29udGVudCBhbmQgaXMgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwuXG5cCi1Gb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgIlByb2dyYW0iIHdpbGwgbWVhbiB0aGUgQ29udGVudC5cblwKLVxuXAotQ29udGVudCBpbmNsdWRlcywgYnV0IGlzIG5vdCBsaW1pdGVkIHRvLCBzb3VyY2UgY29kZSwgb2JqZWN0IGNvZGUsXG5cCi1kb2N1bWVudGF0aW9uIGFuZCBvdGhlciBmaWxlcyBtYWludGFpbmVkIGluIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gc291cmNlIGNvZGVcblwKLXJlcG9zaXRvcnkgKCJSZXBvc2l0b3J5IikgaW4gc29mdHdhcmUgbW9kdWxlcyAoIk1vZHVsZXMiKSBhbmQgbWFkZSBhdmFpbGFibGVcblwKLWFzIGRvd25sb2FkYWJsZSBhcmNoaXZlcyAoIkRvd25sb2FkcyIpLlxuXAotXG5cCi0tIENvbnRlbnQgbWF5IGJlIHN0cnVjdHVyZWQgYW5kIHBhY2thZ2VkIGludG8gbW9kdWxlcyB0byBmYWNpbGl0YXRlIGRlbGl2ZXJpbmcsXG5cCi1leHRlbmRpbmcsIGFuZCB1cGdyYWRpbmcgdGhlIENvbnRlbnQuIFR5cGljYWwgbW9kdWxlcyBtYXkgaW5jbHVkZSBwbHVnLWluc1xuXAotKCJQbHVnLWlucyIpLCBwbHVnLWluIGZyYWdtZW50cyAoIkZyYWdtZW50cyIpLCBhbmQgZmVhdHVyZXMgKCJGZWF0dXJlcyIpLlxuXAotLSBFYWNoIFBsdWctaW4gb3IgRnJhZ21lbnQgbWF5IGJlIHBhY2thZ2VkIGFzIGEgc3ViLWRpcmVjdG9yeSBvciBKQVJcblwKLShKYXZhIHRtIEFSY2hpdmUpIGluIGEgZGlyZWN0b3J5IG5hbWVkICJwbHVnaW5zIi5cblwKLS0gQSBGZWF0dXJlIGlzIGEgYnVuZGxlIG9mIG9uZSBvciBtb3JlIFBsdWctaW5zIGFuZC9vciBGcmFnbWVudHMgYW5kIGFzc29jaWF0ZWRcblwKLW1hdGVyaWFsLiBFYWNoIEZlYXR1cmUgbWF5IGJlIHBhY2thZ2VkIGFzIGEgc3ViLWRpcmVjdG9yeSBpbiBhIGRpcmVjdG9yeSBuYW1lZFxuXAotImZlYXR1cmVzIi4gV2l0aGluIGEgRmVhdHVyZSwgZmlsZXMgbmFtZWQgImZlYXR1cmUueG1sIiBtYXkgY29udGFpbiBhIGxpc3RcblwKLW9mIHRoZSBuYW1lcyBhbmQgdmVyc2lvbiBudW1iZXJzIG9mIHRoZSBQbHVnLWlucyBhbmQvb3IgRnJhZ21lbnRzIGFzc29jaWF0ZWRcblwKLXdpdGggdGhhdCBGZWF0dXJlLlxuXAotLSBGZWF0dXJlcyBtYXkgYWxzbyBpbmNsdWRlIG90aGVyIEZlYXR1cmVzICgiSW5jbHVkZWQgRmVhdHVyZXMiKS5cblwKLVdpdGhpbiBhIEZlYXR1cmUsIGZpbGVzIG5hbWVkICJmZWF0dXJlLnhtbCIgbWF5IGNvbnRhaW4gYSBsaXN0IG9mIHRoZVxuXAotbmFtZXMgYW5kIHZlcnNpb24gbnVtYmVycyBvZiBJbmNsdWRlZCBGZWF0dXJlcy5cblwKLVxuXAotVGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyBQbHVnLWlucyBhbmQgRnJhZ21lbnRzIHNob3VsZCBiZVxuXAotY29udGFpbmVkIGluIGZpbGVzIG5hbWVkICJhYm91dC5odG1sIiAoIkFib3V0cyIpLiBUaGUgdGVybXMgYW5kXG5cCi1jb25kaXRpb25zIGdvdmVybmluZyBGZWF0dXJlcyBhbmQgSW5jbHVkZWQgRmVhdHVyZXMgc2hvdWxkIGJlIGNvbnRhaW5lZFxuXAotaW4gZmlsZXMgbmFtZWQgImxpY2Vuc2UuaHRtbCIgKCJGZWF0dXJlIExpY2Vuc2VzIikuIEFib3V0cyBhbmQgRmVhdHVyZVxuXAotTGljZW5zZXMgbWF5IGJlIGxvY2F0ZWQgaW4gYW55IGRpcmVjdG9yeSBvZiBhIERvd25sb2FkIG9yIE1vZHVsZVxuXAotaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG8gdGhlIGZvbGxvd2luZyBsb2NhdGlvbnM6XG5cCi1cblwKLS0gVGhlIHRvcC1sZXZlbCAocm9vdCkgZGlyZWN0b3J5XG5cCi0tIFBsdWctaW4gYW5kIEZyYWdtZW50IGRpcmVjdG9yaWVzXG5cCi0tIEluc2lkZSBQbHVnLWlucyBhbmQgRnJhZ21lbnRzIHBhY2thZ2VkIGFzIEpBUnNcblwKLS0gU3ViLWRpcmVjdG9yaWVzIG9mIHRoZSBkaXJlY3RvcnkgbmFtZWQgInNyYyIgb2YgY2VydGFpbiBQbHVnLWluc1xuXAotLSBGZWF0dXJlIGRpcmVjdG9yaWVzXG5cCi1cblwKLU5vdGU6IGlmIGEgRmVhdHVyZSBtYWRlIGF2YWlsYWJsZSBieSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIGluc3RhbGxlZFxuXAotdXNpbmcgdGhlIFByb3Zpc2lvbmluZyBUZWNobm9sb2d5IChhcyBkZWZpbmVkIGJlbG93KSwgeW91IG11c3QgYWdyZWUgdG8gYVxuXAotbGljZW5zZSAoIkZlYXR1cmUgVXBkYXRlIExpY2Vuc2UiKSBkdXJpbmcgdGhlIGluc3RhbGxhdGlvbiBwcm9jZXNzLlxuXAotSWYgdGhlIEZlYXR1cmUgY29udGFpbnNcblwKLUluY2x1ZGVkIEZlYXR1cmVzLCB0aGUgRmVhdHVyZSBVcGRhdGUgTGljZW5zZSBzaG91bGQgZWl0aGVyIHByb3ZpZGVcblwKLXlvdSB3aXRoIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgdGhlIEluY2x1ZGVkIEZlYXR1cmVzIG9yIGluZm9ybVxuXAoteW91IHdoZXJlIHlvdSBjYW4gbG9jYXRlIHRoZW0uIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIG1heSBiZSBmb3VuZCBpblxuXAotdGhlICJsaWNlbnNlIiBwcm9wZXJ0eSBvZiBmaWxlcyBuYW1lZCAiZmVhdHVyZS5wcm9wZXJ0aWVzIiBmb3VuZCB3aXRoaW4gYSBGZWF0dXJlLlxuXAotU3VjaCBBYm91dHMsIEZlYXR1cmUgTGljZW5zZXMsIGFuZCBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlcyBjb250YWluIHRoZSB0ZXJtc1xuXAotYW5kIGNvbmRpdGlvbnMgKG9yIHJlZmVyZW5jZXMgdG8gc3VjaCB0ZXJtcyBhbmQgY29uZGl0aW9ucykgdGhhdCBnb3Zlcm4geW91clxuXAotdXNlIG9mIHRoZSBhc3NvY2lhdGVkIENvbnRlbnQgaW4gdGhhdCBkaXJlY3RvcnkuXG5cCi1cblwKLVRIRSBBQk9VVFMsIEZFQVRVUkUgTElDRU5TRVMsIEFORCBGRUFUVVJFIFVQREFURSBMSUNFTlNFUyBNQVkgUkVGRVJcblwKLVRPIFRIRSBFUEwgT1IgT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTLCBOT1RJQ0VTIE9SIFRFUk1TIEFORCBDT05ESVRJT05TLlxuXAotU09NRSBPRiBUSEVTRSBPVEhFUiBMSUNFTlNFIEFHUkVFTUVOVFMgTUFZIElOQ0xVREUgKEJVVCBBUkUgTk9UIExJTUlURUQgVE8pOlxuXAotXG5cCi0tIENvbW1vbiBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0XG5cCi1odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2NwbC12MTAuaHRtbClcblwKLS0gQXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UgMS4xIChhdmFpbGFibGUgYXRcblwKLWh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFKVxuXAotLSBBcGFjaGUgU29mdHdhcmUgTGljZW5zZSAyLjAgKGF2YWlsYWJsZSBhdFxuXAotaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wKVxuXAotLSBNZXRybyBMaW5rIFB1YmxpYyBMaWNlbnNlIDEuMDAgKGF2YWlsYWJsZSBhdFxuXAotaHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29wZW5tb3RpZi9zdXBwb3J0ZXJzL21ldHJvbGluay9saWNlbnNlLmh0bWwpXG5cCi0tIE1vemlsbGEgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjEgKGF2YWlsYWJsZSBhdFxuXAotaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvTVBMLTEuMS5odG1sKVxuXAotXG5cCi1JVCBJUyBZT1VSIE9CTElHQVRJT04gVE8gUkVBRCBBTkQgQUNDRVBUIEFMTCBTVUNIIFRFUk1TIEFORCBDT05ESVRJT05TXG5cCi1QUklPUiBUTyBVU0UgT0YgVEhFIENPTlRFTlQuIElmIG5vIEFib3V0LCBGZWF0dXJlIExpY2Vuc2UsIG9yIEZlYXR1cmVcblwKLVVwZGF0ZSBMaWNlbnNlIGlzIHByb3ZpZGVkLCBwbGVhc2UgY29udGFjdCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIHRvXG5cCi1kZXRlcm1pbmUgd2hhdCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm4gdGhhdCBwYXJ0aWN1bGFyIENvbnRlbnQuXG5cCi1cblwKLVVzZSBvZiBQcm92aXNpb25pbmcgVGVjaG5vbG9neVxuXAotXG5cCi1UaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBwcm92aXNpb25pbmcgc29mdHdhcmUsIGV4YW1wbGVzXG5cCi1vZiB3aGljaCBpbmNsdWRlLCBidXQgYXJlIG5vdCBsaW1pdGVkIHRvLCBwMiBhbmQgdGhlIEVjbGlwc2UgVXBkYXRlIE1hbmFnZXJcblwKLSgiUHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kiKSBmb3IgdGhlIHB1cnBvc2Ugb2YgYWxsb3dpbmcgdXNlcnMgdG8gaW5zdGFsbCBzb2Z0d2FyZSxcblwKLWRvY3VtZW50YXRpb24sIGluZm9ybWF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgKGNvbGxlY3RpdmVseSAiSW5zdGFsbGFibGUgU29mdHdhcmUiKS5cblwKLVRoaXMgY2FwYWJpbGl0eSBpcyBwcm92aWRlZCB3aXRoIHRoZSBpbnRlbnQgb2YgYWxsb3dpbmcgc3VjaCB1c2VycyB0byBpbnN0YWxsLFxuXAotZXh0ZW5kIGFuZCB1cGRhdGUgRWNsaXBzZS1iYXNlZCBwcm9kdWN0cy5cblwKLUluZm9ybWF0aW9uIGFib3V0IHBhY2thZ2luZyBJbnN0YWxsYWJsZSBTb2Z0d2FyZSBpcyBhdmFpbGFibGUgYXRcblwKLWh0dHA6Ly9lY2xpcHNlLm9yZy9lcXVpbm94L3AyL3JlcG9zaXRvcnlfcGFja2FnaW5nLmh0bWwgKCJTcGVjaWZpY2F0aW9uIikuXG5cCi1cblwKLVlvdSBtYXkgdXNlIFByb3Zpc2lvbmluZyBUZWNobm9sb2d5IHRvIGFsbG93IG90aGVyIHBhcnRpZXMgdG8gaW5zdGFsbCBJbnN0YWxsYWJsZSBTb2Z0d2FyZS5cblwKLVlvdSBzaGFsbCBiZSByZXNwb25zaWJsZSBmb3IgZW5hYmxpbmcgdGhlIGFwcGxpY2FibGUgbGljZW5zZSBhZ3JlZW1lbnRzIHJlbGF0aW5nXG5cCi10byB0aGUgSW5zdGFsbGFibGUgU29mdHdhcmUgdG8gYmUgcHJlc2VudGVkIHRvLCBhbmQgYWNjZXB0ZWQgYnksXG5cCi10aGUgdXNlcnMgb2YgdGhlIFByb3Zpc2lvbmluZyBUZWNobm9sb2d5IGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgU3BlY2lmaWNhdGlvbi5cblwKLUJ5IHVzaW5nIFByb3Zpc2lvbmluZyBUZWNobm9sb2d5IGluIHN1Y2ggYSBtYW5uZXIgYW5kIG1ha2luZyBpdCBhdmFpbGFibGUgaW4gYWNjb3JkYW5jZVxuXAotd2l0aCB0aGUgU3BlY2lmaWNhdGlvbiwgeW91IGZ1cnRoZXIgYWNrbm93bGVkZ2UgeW91ciBhZ3JlZW1lbnQgdG8sXG5cCi1hbmQgdGhlIGFjcXVpc2l0aW9uIG9mIGFsbCBuZWNlc3NhcnkgcmlnaHRzIHRvIHBlcm1pdCB0aGUgZm9sbG93aW5nOlxuXAotXG5cCi0tIEEgc2VyaWVzIG9mIGFjdGlvbnMgbWF5IG9jY3VyICgiUHJvdmlzaW9uaW5nIFByb2Nlc3MiKSBpbiB3aGljaCBhIHVzZXIgbWF5IGV4ZWN1dGUgdGhlXG5cCi1Qcm92aXNpb25pbmcgVGVjaG5vbG9neSBvbiBhIG1hY2hpbmUgKCJUYXJnZXQgTWFjaGluZSIpIHdpdGggdGhlIGludGVudCBvZiBpbnN0YWxsaW5nLFxuXAotZXh0ZW5kaW5nIG9yIHVwZGF0aW5nIHRoZSBmdW5jdGlvbmFsaXR5IG9mIGFuIEVjbGlwc2UtYmFzZWQgcHJvZHVjdC5cblwKLS0gRHVyaW5nIHRoZSBQcm92aXNpb25pbmcgUHJvY2VzcywgdGhlIFByb3Zpc2lvbmluZyBUZWNobm9sb2d5IG1heSBjYXVzZSB0aGlyZCBwYXJ0eVxuXAotSW5zdGFsbGFibGUgU29mdHdhcmUgb3IgYSBwb3J0aW9uIHRoZXJlb2YgdG8gYmUgYWNjZXNzZWQgYW5kIGNvcGllZCB0byB0aGUgVGFyZ2V0IE1hY2hpbmUuXG5cCi0tIFB1cnN1YW50IHRvIHRoZSBTcGVjaWZpY2F0aW9uLCB5b3Ugd2lsbCBwcm92aWRlIHRvIHRoZSB1c2VyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyB0aGF0XG5cCi1nb3Zlcm4gdGhlIHVzZSBvZiB0aGUgSW5zdGFsbGFibGUgU29mdHdhcmUgKCJJbnN0YWxsYWJsZSBTb2Z0d2FyZSBBZ3JlZW1lbnQiKVxuXAotYW5kIHN1Y2ggSW5zdGFsbGFibGUgU29mdHdhcmUgQWdyZWVtZW50IHNoYWxsIGJlIGFjY2Vzc2VkIGZyb20gdGhlIFRhcmdldCBNYWNoaW5lIGluIGFjY29yZGFuY2VcblwKLXdpdGggdGhlIFNwZWNpZmljYXRpb24uIFN1Y2ggSW5zdGFsbGFibGUgU29mdHdhcmUgQWdyZWVtZW50IG11c3QgaW5mb3JtIHRoZSB1c2VyIG9mIHRoZSB0ZXJtcyBhbmRcblwKLWNvbmRpdGlvbnMgdGhhdCBnb3Zlcm4gdGhlIEluc3RhbGxhYmxlIFNvZnR3YXJlIGFuZCBtdXN0IHNvbGljaXQgYWNjZXB0YW5jZSBieSB0aGUgZW5kIHVzZXIgaW5cblwKLXRoZSBtYW5uZXIgcHJlc2NyaWJlZCBpbiBzdWNoIEluc3RhbGxhYmxlIFNvZnR3YXJlIEFncmVlbWVudC5cblwKLVVwb24gc3VjaCBpbmRpY2F0aW9uIG9mIGFncmVlbWVudCBieSB0aGUgdXNlciwgdGhlIHByb3Zpc2lvbmluZyBUZWNobm9sb2d5XG5cCi13aWxsIGNvbXBsZXRlIGluc3RhbGxhdGlvbiBvZiB0aGUgSW5zdGFsbGFibGUgU29mdHdhcmUuXG5cCi1cblwKLUNyeXB0b2dyYXBoeVxuXAotXG5cCi1Db250ZW50IG1heSBjb250YWluIGVuY3J5cHRpb24gc29mdHdhcmUuIFRoZSBjb3VudHJ5IGluIHdoaWNoIHlvdSBhcmVcblwKLWN1cnJlbnRseSBtYXkgaGF2ZSByZXN0cmljdGlvbnMgb24gdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgYW5kIHVzZSxcblwKLWFuZC9vciByZS1leHBvcnQgdG8gYW5vdGhlciBjb3VudHJ5LCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBCRUZPUkVcblwKLXVzaW5nIGFueSBlbmNyeXB0aW9uIHNvZnR3YXJlLCBwbGVhc2UgY2hlY2sgdGhlIGNvdW50cnkncyBsYXdzLFxuXAotcmVndWxhdGlvbnMgYW5kIHBvbGljaWVzIGNvbmNlcm5pbmcgdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgb3IgdXNlLFxuXAotYW5kIHJlLWV4cG9ydCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLCB0byBzZWUgaWYgdGhpcyBpcyBwZXJtaXR0ZWQuXG5cCi1cblwKLUphdmEgYW5kIGFsbCBKYXZhLWJhc2VkIHRyYWRlbWFya3MgYXJlIHRyYWRlbWFya3Mgb2YgT3JhY2xlIENvcnBvcmF0aW9uIGluIHRoZSBVbml0ZWQgU3RhdGVzLCBvdGhlciBjb3VudHJpZXMsIG9yIGJvdGguXG5cCmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL3Byb2R1Y3RzL2pldHR5LXNlcnZlci9qZXR0eS1zZXJ2ZXIucHJvZHVjdCBiL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvcHJvZHVjdHMvamV0dHktc2VydmVyL2pldHR5LXNlcnZlci5wcm9kdWN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBlMDEzZDg2Li4wMDAwMDAwCi0tLSBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvcHJvZHVjdHMvamV0dHktc2VydmVyL2pldHR5LXNlcnZlci5wcm9kdWN0CisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCi08P3BkZSB2ZXJzaW9uPSIzLjUiPz4NCi0NCi08cHJvZHVjdCBuYW1lPSJFY2xpcHNlIFZpcmdvIEtlcm5lbCBQcm9kdWN0IiB1aWQ9ImpldHR5LXNlcnZlci5wcm9kdWN0IiB2ZXJzaW9uPSIxLjAuMCIgdXNlRmVhdHVyZXM9InRydWUiIGluY2x1ZGVMYXVuY2hlcnM9ImZhbHNlIj4NCi0NCi0gICA8Y29uZmlnSW5pIHVzZT0iZGVmYXVsdCI+DQotICAgPC9jb25maWdJbmk+DQotICAgDQotICAgPHZtPg0KLSAgIDwvdm0+DQotDQotICAgPHBsdWdpbnM+DQotICAgPC9wbHVnaW5zPg0KLQ0KLSAgIDxmZWF0dXJlcz4NCi0gICAgICA8ZmVhdHVyZSBpZD0ib3JnLmVjbGlwc2UudmlyZ28uamV0dHkucmVzb3VyY2VzIiB2ZXJzaW9uPSIwLjAuMCIvPg0KLSAgICAgIDxmZWF0dXJlIGlkPSJvcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zY3JpcHRzIiB2ZXJzaW9uPSIwLjAuMCIvPg0KLSAgIDwvZmVhdHVyZXM+DQotDQotPC9wcm9kdWN0Pg0KZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvYnVpbGQtamV0dHktc2VydmVyLnhtbCBiL2pldHR5LXNlcnZlci9idWlsZC1qZXR0eS1zZXJ2ZXIueG1sCnNpbWlsYXJpdHkgaW5kZXggOTclCnJlbmFtZSBmcm9tIGJ1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvYnVpbGQtamV0dHktc2VydmVyLnhtbApyZW5hbWUgdG8gamV0dHktc2VydmVyL2J1aWxkLWpldHR5LXNlcnZlci54bWwKaW5kZXggOTE5NjVhZi4uN2RjMWI4ZCAxMDA2NDQKLS0tIGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9idWlsZC1qZXR0eS1zZXJ2ZXIueG1sCisrKyBiL2pldHR5LXNlcnZlci9idWlsZC1qZXR0eS1zZXJ2ZXIueG1sCkBAIC04LDggKzgsMTIgQEAKIAkJPHBhdGhlbGVtZW50IGxvY2F0aW9uPSIke2pldHR5LXNlcnZlci5iYXNlZGlyfS9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS53ZWIiLz4KIAk8L3BhdGg+CiAKKwk8dGFyZ2V0IG5hbWU9InByZWNvbW1pdCIgLz4KKwk8dGFyZ2V0IG5hbWU9Iml2eS5pbml0IiAvPgorCiAJPHByb3BlcnR5IGZpbGU9IiR7YmFzZWRpcn0vLi4vYnVpbGQucHJvcGVydGllcyIvPgogCTxwcm9wZXJ0eSBmaWxlPSIke2Jhc2VkaXJ9Ly4uL2J1aWxkLnZlcnNpb25zIi8+CisJPHByb3BlcnR5IGZpbGU9IiR7YmFzZWRpcn0vLi4vYnVpbGQvdmlyZ28ucHJvcGVydGllcyIgLz4KIAk8aW1wb3J0IGZpbGU9IiR7YmFzZWRpcn0vLi4vdmlyZ28tYnVpbGQvbXVsdGktYnVuZGxlL2RlZmF1bHQueG1sIi8+CiAgICAgCiAJPHRhcmdldCBuYW1lPSJ2anMucGFja2FnZS1yZXNvdXJjZXMtYW5kLXByb2R1Y3RzIiBkZXBlbmRzPSJpdnkuaW5pdCI+CkBAIC00Myw3ICs0Nyw3IEBACiAgICAgCiAgICAgPHRhcmdldCBuYW1lPSJ2anMucHJlcGFyZS1idW5kbGVzLWFuZC1mZWF0dXJlcyIgZGVwZW5kcz0iaXZ5LmluaXQiPgogICAgICAgICA8IS0tcHJlcGFyZSBqZXR0eSBzZXJ2ZXIgZmVhdHVyZXMgZm9yIHB1Ymxpc2hpbmcgLS0+Ci0gICAgICAgIDxjb3B5IHRvZGlyPSIke2pldHR5LXNlcnZlci50YXJnZXQuZGlyfS9hc3NlbWJseS9mZWF0dXJlcyIgZmFpbG9uZXJyb3I9ImZhbHNlIj4KKyAgICAgICAgPGNvcHkgdG9kaXI9IiR7amV0dHktc2VydmVyLnRhcmdldC5kaXJ9L2Fzc2VtYmx5L2ZlYXR1cmVzIiBmYWlsb25lcnJvcj0idHJ1ZSI+CiAgICAgICAgICAgICA8ZmlsZXNldCBkaXI9IiR7amV0dHktc2VydmVyLmJhc2VkaXJ9L3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzIi8+CiAgICAgICAgIDwvY29weT4KICAgICA8L3RhcmdldD4KQEAgLTEyMyw3ICsxMjcsNyBAQAogICAgIDwvdGFyZ2V0PgogICAgIAogCTx0YXJnZXQgbmFtZT0iamV0dHkucGFja2FnZS5jb25maWciPgotCQk8Y29weSB0b2Rpcj0iJHtqZXR0eS5zZXJ2ZXIucmVzb3VyY2VzfS9jb25maWd1cmF0aW9uIiBmYWlsb25lcnJvcj0iZmFsc2UiIG92ZXJ3cml0ZT0idHJ1ZSI+CisJCTxjb3B5IHRvZGlyPSIke2pldHR5LnNlcnZlci5yZXNvdXJjZXN9L2NvbmZpZ3VyYXRpb24iIGZhaWxvbmVycm9yPSJ0cnVlIiBvdmVyd3JpdGU9InRydWUiPgogCQkJPGZpbGVzZXQgZGlyPSIke2pldHR5LXNlcnZlci5iYXNlZGlyfS9jb25maWd1cmF0aW9uIi8+CiAJCTwvY29weT4KIApAQCAtMTkyLDEzICsxOTYsMTMgQEAKIAkJPGl2eTpyZXNvbHZlIHJlc29sdmVJZD0iY29weS5wYXRoIiBmaWxlPSIke2pldHR5LXNlcnZlci5iYXNlZGlyfS9yZXBvc2l0b3J5LWl2eS54bWwiIHRyYW5zaXRpdmU9InRydWUiLz4KIAkJPGl2eTpyZXRyaWV2ZSByZXNvbHZlSWQ9ImNvcHkucGF0aCIgcGF0dGVybj0iJHtyZXBvc2l0b3J5LmV4dH0vW2FydGlmYWN0XS1bcmV2aXNpb25dLltleHRdIiBjb25mPSJ0cmFuc2l0aXZlIiB0eXBlPSJsaWJyYXJ5LGphcixwbGFuIiAvPgogCQkKLQkJPGNvcHkgdG9kaXI9IiR7cmVwb3NpdG9yeS5leHR9IiBmYWlsb25lcnJvcj0iZmFsc2UiPgorCQk8Y29weSB0b2Rpcj0iJHtyZXBvc2l0b3J5LmV4dH0iIGZhaWxvbmVycm9yPSJ0cnVlIj4KIAkJCTxmaWxlc2V0IGRpcj0iJHtqZXR0eS1zZXJ2ZXIuYmFzZWRpcn0vamV0dHlidW5kbGVzIi8+CiAJCTwvY29weT4KIAk8L3RhcmdldD4KIAogCTx0YXJnZXQgbmFtZT0iamV0dHkucGFja2FnZS5yZXNvdXJjZXMiPgotCQk8Y29weSB0b2Rpcj0iJHtqZXR0eS5zZXJ2ZXIucmVzb3VyY2VzfSIgZmFpbG9uZXJyb3I9ImZhbHNlIj4KKwkJPGNvcHkgdG9kaXI9IiR7amV0dHkuc2VydmVyLnJlc291cmNlc30iIGZhaWxvbmVycm9yPSJ0cnVlIj4KIAkJCTxmaWxlc2V0IGRpcj0iJHtqZXR0eS1zZXJ2ZXIuYmFzZWRpcn0vcmVzb3VyY2VzIi8+CiAJCTwvY29weT4KIAk8L3RhcmdldD4KQEAgLTIwNiw3ICsyMTAsNyBAQAogCTx0YXJnZXQgbmFtZT0icGFja2FnZS5qZXR0eSI+CiAJCTxta2RpciBkaXI9IiR7amV0dHkuc2VydmVyLnJlc291cmNlc30vamV0dHkiLz4KIAkJCi0JCTxjb3B5IHRvZGlyPSIke2pldHR5LnNlcnZlci5yZXNvdXJjZXN9L2pldHR5IiBmYWlsb25lcnJvcj0iZmFsc2UiPgorCQk8Y29weSB0b2Rpcj0iJHtqZXR0eS5zZXJ2ZXIucmVzb3VyY2VzfS9qZXR0eSIgZmFpbG9uZXJyb3I9InRydWUiPgogCQkJPGZpbGVzZXQgZGlyPSIke2pldHR5LXNlcnZlci5iYXNlZGlyfS9qZXR0eSIvPgogCQk8L2NvcHk+CQkKIAk8L3RhcmdldD4KZGlmZiAtLWdpdCBhL2pldHR5LXNlcnZlci9idWlsZC5ncmFkbGUgYi9qZXR0eS1zZXJ2ZXIvYnVpbGQuZ3JhZGxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlOTRmNTUKLS0tIC9kZXYvbnVsbAorKysgYi9qZXR0eS1zZXJ2ZXIvYnVpbGQuZ3JhZGxlCkBAIC0wLDAgKzEsMjAwIEBACitpbXBvcnQgb3JnLmFwYWNoZS50b29scy5hbnQuZmlsdGVycy5SZXBsYWNlVG9rZW5zCisKK2FwcGx5IHBsdWdpbjogJ2Rpc3RyaWJ1dGlvbicKKworZGlzdHJpYnV0aW9ucyB7CisgICAgbWFpbiB7CisgICAgICAgIGJhc2VOYW1lID0gJ3ZpcmdvLWpldHR5LXNlcnZlcicKKyAgICAgICAgY29udGVudHMgeworICAgICAgICAgICAgZnJvbSB7ICIke2J1aWxkRGlyfS9jb21tb25fcmVzb3VyY2VzLyIgfQorICAgICAgICAgICAgZnJvbSAoICdzcmMvbWFpbi9kaXN0JyApIHsKKyAgICAgICAgICAgICAgICBpbmNsdWRlICggJyoqLyoucHJvcGVydGllcycgKQorICAgICAgICAgICAgICAgIGluY2x1ZGUgKCAnKiovLnZlcnNpb24nICkKKyAgICAgICAgICAgICAgICBmaWx0ZXIoUmVwbGFjZVRva2VucywgdG9rZW5zOiB0b2tlbk1hcCkgLy8gdG9rZW5zIGFyZSB1c2VkIGluIGUuZy4gb2V2Lmtlcm5lbC51c2VycmVnaW9uLnByb3BlcnRpZXMKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZyb20gKCAnc3JjL21haW4vZGlzdCcgKSB7CisgICAgICAgICAgICAgICAgaW5jbHVkZSAoICdiaW4vKi5zaCcgKQorICAgICAgICAgICAgICAgIGZpbGVNb2RlIDA3NTUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZyb20gKCAnc3JjL21haW4vZGlzdCcgKSB7CisgICAgICAgICAgICAgICAgZXhjbHVkZSAoICcqKi8qLnByb3BlcnRpZXMnICkKKyAgICAgICAgICAgICAgICBleGNsdWRlICggJyoqLy52ZXJzaW9uJyApCisgICAgICAgICAgICAgICAgZXhjbHVkZSAoICdiaW4vKi5zaCcgKQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZnJvbSAoICIke2J1aWxkRGlyfS9WSlMvamV0dHktc2VydmVyLyIgKSB7IGV4Y2x1ZGUgKCAnRWNsaXBzZS5hcHAnICkgfQorICAgICAgICAgICAgZnJvbSAoICIke2J1aWxkRGlyfS8iICkgeworICAgICAgICAgICAgICAgIGluY2x1ZGUgKCAncmVwb3NpdG9yeS9leHQvJyApCisgICAgICAgICAgICAgICAgaW5jbHVkZSAoICdwbHVnaW5zLycgKQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit0YXNrICgnYXNzZW1ibGVKZXR0eVNlcnZlcicsIGRlcGVuZHNPbjogWydncm91cEluc3RhbGwnLF0pIHsgZGlzdFppcC5kZXBlbmRzT24oJ2dyb3VwSW5zdGFsbCcpIH0KKwordGFzayAoJ3ByZXBhcmVCdW5kbGVzQW5kRmVhdHVyZXMnKSB7CisgICAgZGVmIGFzc2VtYmx5UGx1Z2luc0RpciA9IGZpbGUoIiR7YnVpbGREaXJ9L2Fzc2VtYmx5L3BsdWdpbnMvIikKKyAgICBkZWYgcmVwb3NpdG9yeUV4dERpciA9IGZpbGUoIiR7YnVpbGREaXJ9L3JlcG9zaXRvcnkvZXh0IikKKyAgICBkZWYgcGx1Z2luc0RpciA9IGZpbGUoIiR7YnVpbGREaXJ9L3BsdWdpbnMiKQorICAgIGRlZiBzcmNGZWF0dXJlRGlyID0gZmlsZSgiJHtwcm9qZWN0RGlyfS9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy8iKQorICAgIGRlZiBhc3NlbWJseUZlYXR1cmVEaXIgPSBmaWxlKCIke2J1aWxkRGlyfS9hc3NlbWJseS9mZWF0dXJlcy8iKQorICAgIGRvTGFzdCB7CisgICAgICAgIHBhY2thZ2VDb25maWd1cmF0aW9uKCd2aXJnb0NvcmVSdW50aW1lJywgY29uZmlndXJhdGlvbnMudmlyZ29Db3JlUnVudGltZSwgYXNzZW1ibHlQbHVnaW5zRGlyKQorICAgICAgICBwYWNrYWdlQ29uZmlndXJhdGlvbigna2VybmVsQmFzZVJ1bnRpbWUnLCBjb25maWd1cmF0aW9ucy5rZXJuZWxCYXNlUnVudGltZSwgYXNzZW1ibHlQbHVnaW5zRGlyKQorICAgICAgICBwYWNrYWdlQ29uZmlndXJhdGlvbigna2VybmVsUnVudGltZScsIGNvbmZpZ3VyYXRpb25zLmtlcm5lbFJ1bnRpbWUsIGFzc2VtYmx5UGx1Z2luc0RpcikKKyAgICAgICAgcGFja2FnZUNvbmZpZ3VyYXRpb24oJ3JlcG9zaXRvcnlFeHQnLCBjb25maWd1cmF0aW9ucy5yZXBvc2l0b3J5RXh0LCByZXBvc2l0b3J5RXh0RGlyKQorICAgICAgICBwYWNrYWdlQ29uZmlndXJhdGlvbigncGx1Z2luc0V4dHJhcycsIGNvbmZpZ3VyYXRpb25zLmtlcm5lbFBsdWdpbnNFeHRyYXMsIHBsdWdpbnNEaXIpCisgICAgICAgIHByaW50bG4gIkNvcHkgZmVhdHVyZXMgZnJvbSAnJHtzcmNGZWF0dXJlRGlyfScgaW50byAnJHthc3NlbWJseUZlYXR1cmVEaXJ9Jy4iCisgICAgICAgIGNvcHkgeworICAgICAgICAgICAgZnJvbSBzcmNGZWF0dXJlRGlyCisgICAgICAgICAgICBpbnRvIGFzc2VtYmx5RmVhdHVyZURpcgorICAgICAgICAgICAgaW5jbHVkZSAiKiovKiIKKyAgICAgICAgICAgIGZpbHRlcihSZXBsYWNlVG9rZW5zLCB0b2tlbnM6IHRva2VuTWFwKQorICAgICAgICB9CisgICAgfQorfQorCisvLyBzdGFydCBpbiBkZWJ1ZyBtb2RlIHdpdGggZ3JhZGxlIGdlbmVyYXRlUDJJbmYgLS1kZWJ1Zy1qdm0KK3Rhc2sgKCdnZW5lcmF0ZVAySW5mJywgdHlwZTpKYXZhRXhlYywgZGVwZW5kc09uOiAnOnBhY2thZ2luZzpmZXRjaFVuemlwcGVkVmlyZ29CdWlsZFRvb2xzJykgeworICAgIGRlc2NyaXB0aW9uID0gIkdlbmVyYXRlcyBwMi5pbmYtcyBmb3IgYWxsIGZlYXR1cmUgZGlyZWN0b3JpZXMgaW5zaWRlIGEgd3JhcHBpbmcgJ2ZlYXR1cmVzJyBkaXJlY3RvcnkuIgorICAgIGRlZiBhc3NlbWJseUZlYXR1cmVEaXIgPSBmaWxlKCIke2J1aWxkRGlyfS9hc3NlbWJseS9mZWF0dXJlcy8iKQorCisgICAgbWFpbiA9ICdvcmcuZWNsaXBzZS5lcXVpbm94LmxhdW5jaGVyLk1haW4nCisgICAgY2xhc3NwYXRoID0gZmlsZXMoIiR7dmlyZ29CdWlsZFRvb2xzRGlyfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVxdWlub3gubGF1bmNoZXJfJHtlcXVpbm94TGF1bmNoZXJWZXJzaW9ufS5qYXIiKQorICAgIGFyZ3MgPSBbCisgICAgICAgICctYXBwbGljYXRpb24nLAorICAgICAgICAnb3JnLmVjbGlwc2UudmlyZ28uYnVpbGQucDJ0b29scy5pbnN0cnVjdGlvbnMuUDJJbnN0cnVjdGlvbkdlbmVyYXRvckFwcGxpY2F0aW9uJywKKyAgICAgICAgJy1zb3VyY2UnLAorICAgICAgICBhc3NlbWJseUZlYXR1cmVEaXIKKyAgICBdCit9CisKKy8vIHN0YXJ0IGluIGRlYnVnIG1vZGUgd2l0aCBncmFkbGUgcHVibGlzaEJ1bmRsZXNBbmRGZWF0dXJlcyAtLWRlYnVnLWp2bQordGFzayAoJ3B1Ymxpc2hCdW5kbGVzQW5kRmVhdHVyZXMnLCB0eXBlOkphdmFFeGVjKSB7CisgICAgZGVzY3JpcHRpb24gPSAiUHVibGlzaGVzIFZpcmdvIFNlcnZlciBidW5kbGVzIGFuZCBmZWF0dXJlcyB0byAnJHtidWlsZERpcn0vcmVwb3NpdG9yeScuIgorICAgIGRlZiBzb3VyY2VEaXIgPSBmaWxlKCIke2J1aWxkRGlyfS9hc3NlbWJseS8iKQorICAgIGRlZiByZXBvc2l0b3J5RGlyID0gZmlsZSgiJHtidWlsZERpcn0vcmVwb3NpdG9yeS8iKQorCisgICAgbWFpbiA9ICdvcmcuZWNsaXBzZS5lcXVpbm94LmxhdW5jaGVyLk1haW4nCisgICAgY2xhc3NwYXRoID0gZmlsZXMoIiR7dmlyZ29CdWlsZFRvb2xzRGlyfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVxdWlub3gubGF1bmNoZXJfJHtlcXVpbm94TGF1bmNoZXJWZXJzaW9ufS5qYXIiKQorICAgIGFyZ3MgPSBbCisgICAgICAgICctYXBwbGljYXRpb24nLAorICAgICAgICAnb3JnLmVjbGlwc2UuZXF1aW5veC5wMi5wdWJsaXNoZXIuRmVhdHVyZXNBbmRCdW5kbGVzUHVibGlzaGVyJywKKyAgICAgICAgJy1tZXRhZGF0YVJlcG9zaXRvcnknLAorICAgICAgICAiZmlsZToke3JlcG9zaXRvcnlEaXJ9IiwKKyAgICAgICAgJy1hcnRpZmFjdFJlcG9zaXRvcnknLAorICAgICAgICAiZmlsZToke3JlcG9zaXRvcnlEaXJ9IiwKKyAgICAgICAgJy1zb3VyY2UnLAorICAgICAgICAiJHtzb3VyY2VEaXJ9IiwKKyAgICAgICAgJy1hcHBlbmQnLAorICAgICAgICAnLWNvbXByZXNzJywKKyAgICAgICAgJy1wdWJsaXNoQXJ0aWZhY3RzJywKKyAgICBdCisgICAgZG9MYXN0KCkgeyBwcmludGxuICJQdWJsaXNoZWQgVmlyZ28gU2VydmVyIGJ1bmRsZXMgYW5kIGZlYXR1cmVzIHRvICcke2J1aWxkRGlyfS9yZXBvc2l0b3J5Jy4iIH0KK30KKwordGFzayAoJ3BhY2thZ2VSZXNvdXJjZXNBbmRQcm9kdWN0cycpIHsKKyAgICBkb0xhc3QgeworICAgICAgICBwYWNrYWdlQ29uZmlndXJhdGlvbignbGliJywgY29uZmlndXJhdGlvbnMubmFub0xpYiwgZmlsZSgiJHtidWlsZERpcn0vY29tbW9uX3Jlc291cmNlcy9saWIvIikpCisgICAgICAgIHBhY2thZ2VDb25maWd1cmF0aW9uKCdsaWJQZXJzaXN0ZW5jZScsIGNvbmZpZ3VyYXRpb25zLm5hbm9MaWJQZXJzaXN0ZW5jZSwgZmlsZSgiJHtidWlsZERpcn0vY29tbW9uX3Jlc291cmNlcy9saWIvcGVyc2lzdGVuY2UvIikpCisgICAgICAgIHBhY2thZ2VDb25maWd1cmF0aW9uKCdsaWJFbmRvcnNlZCcsIGNvbmZpZ3VyYXRpb25zLm5hbm9MaWJFbmRvcnNlZCwgZmlsZSgiJHtidWlsZERpcn0vY29tbW9uX3Jlc291cmNlcy9saWIvZW5kb3JzZWQvIikpCisgICAgICAgIHBhY2thZ2VDb25maWd1cmF0aW9uKCdwaWNrdXAnLCBjb25maWd1cmF0aW9ucy5uYW5vUGlja3VwLCBmaWxlKCIke2J1aWxkRGlyfS9jb21tb25fcmVzb3VyY2VzL3BpY2t1cC8iKSkKKyAgICB9Cit9CisKKy8vIHN0YXJ0IGluIGRlYnVnIG1vZGUgd2l0aCBncmFkbGUgcHVibGlzaDxJRD4KK3Rhc2tzLmFkZFJ1bGUoIlBhdHRlcm46IHB1Ymxpc2g8SUQ+IikgeyBTdHJpbmcgdGFza05hbWUgLT4KKyAgICBpZiAodGFza05hbWUuc3RhcnRzV2l0aCgicHVibGlzaCIpKSB7CisgICAgICAgIHRhc2sgKHRhc2tOYW1lLCB0eXBlOkphdmFFeGVjLCBkZXBlbmRzT246IFsKKyAgICAgICAgICAgICdwcmVwYXJlQnVuZGxlc0FuZEZlYXR1cmVzJywKKyAgICAgICAgICAgICdnZW5lcmF0ZVAySW5mJywKKyAgICAgICAgICAgICdwdWJsaXNoQnVuZGxlc0FuZEZlYXR1cmVzJywKKyAgICAgICAgICAgICdwYWNrYWdlUmVzb3VyY2VzQW5kUHJvZHVjdHMnLAorICAgICAgICBdKSB7CisgICAgICAgICAgICBkZWYgcHJvZHVjdCA9ICd1bmRlZmluZWQnCisgICAgICAgICAgICBzd2l0Y2ggKHRhc2tOYW1lLnRvU3RyaW5nKCkgLSAncHVibGlzaCcpIHsKKyAgICAgICAgICAgICAgICBjYXNlICdCYXNlJzogcHJvZHVjdCA9ICdiYXNlJzsgYnJlYWsKKyAgICAgICAgICAgICAgICBjYXNlICdLZXJuZWxCYXNlJzogcHJvZHVjdCA9ICdrZXJuZWwtYmFzZSc7IGJyZWFrCisgICAgICAgICAgICAgICAgY2FzZSAnSmV0dHlTZXJ2ZXInOiBwcm9kdWN0ID0gJ2pldHR5LXNlcnZlcic7IGJyZWFrCisgICAgICAgICAgICB9CisgICAgICAgICAgICBwcmludGxuICJQdWJsaXNoaW5nOiAiICsgcHJvZHVjdAorCisgICAgICAgICAgICBkZXNjcmlwdGlvbiA9ICJQdWJsaXNoZXMgYSBwcm9kdWN0IHRvIGEgcDIgcmVwb3NpdG9yeS4gVGhlIHB1Ymxpc2hpbmcgdXNlcyBBTlkgZW52aXJvbm1lbnQgY29uZmlndXJhdGlvbnMuIgorICAgICAgICAgICAgZGVmIHJlcG9zaXRvcnlEaXIgPSBmaWxlKCIke2J1aWxkRGlyfS9yZXBvc2l0b3J5LyIpCisgICAgICAgICAgICBkZWYgcHJvZHVjdEZpbGVMb2NhdGlvbiA9IGZpbGUoIiR7cHJvamVjdERpcn0vcHVibGlzaF9yZXNvdXJjZXMvcHJvZHVjdHMvJHtwcm9kdWN0fS8ke3Byb2R1Y3R9LnByb2R1Y3QiKQorICAgICAgICAgICAgZGVmIGphdmFwcm9maWxlTG9jYXRpb24gPSBmaWxlKCIke3Byb2plY3REaXJ9L3NyYy9tYWluL2Rpc3QvY29uZmlndXJhdGlvbi9qYXZhNi1zZXJ2ZXIucHJvZmlsZSIpCisKKyAgICAgICAgICAgIG1haW4gPSAnb3JnLmVjbGlwc2UuZXF1aW5veC5sYXVuY2hlci5NYWluJworICAgICAgICAgICAgY2xhc3NwYXRoID0gZmlsZXMoIiR7dmlyZ29CdWlsZFRvb2xzRGlyfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVxdWlub3gubGF1bmNoZXJfJHtlcXVpbm94TGF1bmNoZXJWZXJzaW9ufS5qYXIiKQorICAgICAgICAgICAgYXJncyA9IFsKKyAgICAgICAgICAgICAgICAnLWFwcGxpY2F0aW9uJywKKyAgICAgICAgICAgICAgICAnb3JnLmVjbGlwc2UuZXF1aW5veC5wMi5wdWJsaXNoZXIuUHJvZHVjdFB1Ymxpc2hlcicsCisgICAgICAgICAgICAgICAgJy1tZXRhZGF0YVJlcG9zaXRvcnknLAorICAgICAgICAgICAgICAgICJmaWxlOiR7cmVwb3NpdG9yeURpcn0iLAorICAgICAgICAgICAgICAgICctYXJ0aWZhY3RSZXBvc2l0b3J5JywKKyAgICAgICAgICAgICAgICAiZmlsZToke3JlcG9zaXRvcnlEaXJ9IiwKKyAgICAgICAgICAgICAgICAnLWFwcGVuZCcsCisgICAgICAgICAgICAgICAgJy1jb21wcmVzcycsCisgICAgICAgICAgICAgICAgJy1wdWJsaXNoQXJ0aWZhY3RzJywKKyAgICAgICAgICAgICAgICAnLXByb2R1Y3RGaWxlJywKKyAgICAgICAgICAgICAgICAiJHtwcm9kdWN0RmlsZUxvY2F0aW9ufSIsCisgICAgICAgICAgICAgICAgJy1qcmVMb2NhdGlvbicsCisgICAgICAgICAgICAgICAgIiR7amF2YXByb2ZpbGVMb2NhdGlvbn0iLAorICAgICAgICAgICAgICAgICctY29uZmlncycsCisgICAgICAgICAgICAgICAgJ0FOWS5BTlkuQU5ZJywKKyAgICAgICAgICAgICAgICAnLWZsYXZvcicsCisgICAgICAgICAgICAgICAgJ3Rvb2xpbmcnCisgICAgICAgICAgICBdCisgICAgICAgICAgICBkb0xhc3QoKSB7IHByaW50bG4gIlB1Ymxpc2hlZCBWaXJnbyAke3Byb2R1Y3RGaWxlTG9jYXRpb259IHRvICcke2J1aWxkRGlyfS9yZXBvc2l0b3J5Jy4iIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordGFzayAoJ2dyb3VwUHVibGlzaCcsIGRlcGVuZHNPbjogWworICAgICdwdWJsaXNoQmFzZScsCisgICAgJ3B1Ymxpc2hLZXJuZWxCYXNlJywKKyAgICAncHVibGlzaEpldHR5U2VydmVyJywKK10peyB9CisKKy8vIHN0YXJ0IGluIGRlYnVnIG1vZGUgd2l0aCBncmFkbGUgcHVibGlzaDxJRD4KK3Rhc2tzLmFkZFJ1bGUoIlBhdHRlcm46IGluc3RhbGxQcm9kdWN0PElEPiIpIHsgU3RyaW5nIHRhc2tOYW1lIC0+CisgICAgaWYgKHRhc2tOYW1lLnN0YXJ0c1dpdGgoImluc3RhbGxQcm9kdWN0IikpIHsKKyAgICAgICAgLy8gc3RhcnQgaW4gZGVidWcgbW9kZSB3aXRoIGdyYWRsZSBwdWJsaXNoTmFub0Jhc2UgLS1kZWJ1Zy1qdm0KKyAgICAgICAgdGFzayAodGFza05hbWUsIHR5cGU6SmF2YUV4ZWMsIGRlcGVuZHNPbjogWydncm91cFB1Ymxpc2gnLF0pIHsKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gIkluc3RhbGxzIGEgVmlyZ28gcHJvZHVjdCB0byBhIGRlc2lyZWQgZGVzdGluYXRpb24uIERlZmF1bHQgcHJvZmlsZShyb2FtaW5nKSBpcyBWSVJHT1Byb2ZpbGUsIHRoZSBlbnZpcm9ubWVudCBjb2ZpZ3VyYXRpb25zIGFyZSBBTlkuIgorICAgICAgICAgICAgZGVmIHByb2R1Y3QgPSAndW5kZWZpbmVkJworICAgICAgICAgICAgZGVmIHNob3J0UHJvZHVjdCA9ICd1bmRlZmluZWQnCisgICAgICAgICAgICBzd2l0Y2ggKHRhc2tOYW1lLnRvU3RyaW5nKCkgLSAnaW5zdGFsbFByb2R1Y3QnKSB7CisgICAgICAgICAgICAgICAgY2FzZSAnSmV0dHlTZXJ2ZXInOiBwcm9kdWN0ID0gJ2pldHR5LXNlcnZlcic7IHNob3J0UHJvZHVjdCA9ICJWSlMiOyBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHByaW50bG4gIkluc3RhbGxpbmc6ICIgKyBwcm9kdWN0CisKKyAgICAgICAgICAgIGRlZiByZXBvc2l0b3J5RGlyID0gZmlsZSgiJHtidWlsZERpcn0vcmVwb3NpdG9yeS8iKQorICAgICAgICAgICAgZGVmIGRlc3RpbmF0aW9uRGlyID0gZmlsZSgiJHtidWlsZERpcn0vJHtzaG9ydFByb2R1Y3R9LyR7cHJvZHVjdH0iKQorICAgICAgICAgICAgZGVmIHByb2R1Y3RJdSA9ICIke3Byb2R1Y3R9LnByb2R1Y3QiCisKKyAgICAgICAgICAgIG1haW4gPSAnb3JnLmVjbGlwc2UuZXF1aW5veC5sYXVuY2hlci5NYWluJworICAgICAgICAgICAgY2xhc3NwYXRoID0gZmlsZXMoIiR7dmlyZ29CdWlsZFRvb2xzRGlyfS9wbHVnaW5zL29yZy5lY2xpcHNlLmVxdWlub3gubGF1bmNoZXJfJHtlcXVpbm94TGF1bmNoZXJWZXJzaW9ufS5qYXIiKQorICAgICAgICAgICAgYXJncyA9IFsKKyAgICAgICAgICAgICAgICAnLWFwcGxpY2F0aW9uJywKKyAgICAgICAgICAgICAgICAnb3JnLmVjbGlwc2UuZXF1aW5veC5wMi5kaXJlY3RvcicsCisgICAgICAgICAgICAgICAgJy1yZXBvc2l0b3J5JywKKyAgICAgICAgICAgICAgICAiZmlsZToke3JlcG9zaXRvcnlEaXJ9IiwKKyAgICAgICAgICAgICAgICAnLWluc3RhbGxJVScsCisgICAgICAgICAgICAgICAgIiR7cHJvZHVjdEl1fSIsCisgICAgICAgICAgICAgICAgJy10YWcnLAorICAgICAgICAgICAgICAgICdJbml0aWFsU3RhdGUnLAorICAgICAgICAgICAgICAgICctZGVzdGluYXRpb24nLAorICAgICAgICAgICAgICAgICIke2Rlc3RpbmF0aW9uRGlyfSIsCisgICAgICAgICAgICAgICAgJy1wcm9maWxlJywKKyAgICAgICAgICAgICAgICAnVklSR09Qcm9maWxlJywKKyAgICAgICAgICAgICAgICAnLXJvYW1pbmcnCisgICAgICAgICAgICBdCisgICAgICAgICAgICBkb0xhc3QoKSB7IHByaW50bG4gIkluc3RhbGxlZCBWaXJnbyAnJHtwcm9kdWN0SXV9JyB0byAnJHtkZXN0aW5hdGlvbkRpcn0nLiIgfQorICAgICAgICB9CisgICAgfQorfQorCit0YXNrICgnZ3JvdXBJbnN0YWxsJywgZGVwZW5kc09uOiBbCisgICAgJ2luc3RhbGxQcm9kdWN0SmV0dHlTZXJ2ZXInLAorXSl7IH0KZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvZG9jcy1pdnkueG1sIGIvamV0dHktc2VydmVyL2RvY3MtaXZ5LnhtbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9kb2NzLWl2eS54bWwKcmVuYW1lIHRvIGpldHR5LXNlcnZlci9kb2NzLWl2eS54bWwKZGlmZiAtLWdpdCBhL2pldHR5LXNlcnZlci9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zYW1wbGUudGFncy9idWlsZC5ncmFkbGUgYi9qZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2FtcGxlLnRhZ3MvYnVpbGQuZ3JhZGxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwM2QzNDgKLS0tIC9kZXYvbnVsbAorKysgYi9qZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2FtcGxlLnRhZ3MvYnVpbGQuZ3JhZGxlCkBAIC0wLDAgKzEsMTEgQEAKK2RlcGVuZGVuY2llcyB7CisgICAgY29tcGlsZSBncm91cDogIm9yZy5lY2xpcHNlLnZpcmdvLm1pcnJvcmVkIiwgbmFtZTogIm9yZy5zbGY0ai5hcGkiLCB2ZXJzaW9uOiBzbGY0alZlcnNpb24sIGNvbmZpZ3VyYXRpb246ICJjb21waWxlIiwgZXh0OiAiamFyIgorICAgIGNvbXBpbGUgZ3JvdXA6ICJvcmcuZWNsaXBzZS52aXJnby5taXJyb3JlZCIsIG5hbWU6ICJqYXZheC5zZXJ2bGV0IiwgdmVyc2lvbjogamF2YXhTZXJ2bGV0VmVyc2lvbiwgY29uZmlndXJhdGlvbjogImNvbXBpbGUiLCBleHQ6ICJqYXIiCisgICAgY29tcGlsZSBncm91cDogIm9yZy5lY2xpcHNlLnZpcmdvLm1pcnJvcmVkIiwgbmFtZTogImphdmF4LnNlcnZsZXQuanNwIiwgdmVyc2lvbjogamF2YXhTZXJ2bGV0SnNwVmVyc2lvbiwgY29uZmlndXJhdGlvbjogImNvbXBpbGUiLCBleHQ6ICJqYXIiCisKKyAgICBjb21waWxlIGdyb3VwOiAib3JnLnNwcmluZ2ZyYW1ld29yayIsIG5hbWU6ICJvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zIiwgdmVyc2lvbjogc3ByaW5nZnJhbWV3b3JrVmVyc2lvbiwgY29uZmlndXJhdGlvbjogImNvbXBpbGUiLCBleHQ6ICJqYXIiCisgICAgY29tcGlsZSBncm91cDogIm9yZy5zcHJpbmdmcmFtZXdvcmsiLCBuYW1lOiAib3JnLnNwcmluZ2ZyYW1ld29yay5jb250ZXh0IiwgdmVyc2lvbjogc3ByaW5nZnJhbWV3b3JrVmVyc2lvbiwgY29uZmlndXJhdGlvbjogImNvbXBpbGUiLCBleHQ6ICJqYXIiCisgICAgY29tcGlsZSBncm91cDogIm9yZy5zcHJpbmdmcmFtZXdvcmsiLCBuYW1lOiAib3JnLnNwcmluZ2ZyYW1ld29yay5jb3JlIiwgdmVyc2lvbjogc3ByaW5nZnJhbWV3b3JrVmVyc2lvbiwgY29uZmlndXJhdGlvbjogImNvbXBpbGUiLCBleHQ6ICJqYXIiCisgICAgY29tcGlsZSBncm91cDogIm9yZy5zcHJpbmdmcmFtZXdvcmsiLCBuYW1lOiAib3JnLnNwcmluZ2ZyYW1ld29yay53ZWIiLCB2ZXJzaW9uOiBzcHJpbmdmcmFtZXdvcmtWZXJzaW9uLCBjb25maWd1cmF0aW9uOiAiY29tcGlsZSIsIGV4dDogImphciIKKyAgICBjb21waWxlIGdyb3VwOiAib3JnLnNwcmluZ2ZyYW1ld29yayIsIG5hbWU6ICJvcmcuc3ByaW5nZnJhbWV3b3JrLndlYi5zZXJ2bGV0IiwgdmVyc2lvbjogc3ByaW5nZnJhbWV3b3JrVmVyc2lvbiwgY29uZmlndXJhdGlvbjogImNvbXBpbGUiLCBleHQ6ICJqYXIiCit9CmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNhbXBsZS50YWdzL2J1aWxkLnhtbCBiL2pldHR5LXNlcnZlci9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zYW1wbGUudGFncy9idWlsZC54bWwKc2ltaWxhcml0eSBpbmRleCA4NCUKcmVuYW1lIGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zYW1wbGUudGFncy9idWlsZC54bWwKcmVuYW1lIHRvIGpldHR5LXNlcnZlci9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zYW1wbGUudGFncy9idWlsZC54bWwKaW5kZXggZWU1YmU4Zi4uNmJiODIwYiAxMDA2NDQKLS0tIGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zYW1wbGUudGFncy9idWlsZC54bWwKKysrIGIvamV0dHktc2VydmVyL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNhbXBsZS50YWdzL2J1aWxkLnhtbApAQCAtMyw2ICszLDcgQEAKIAogCTxwcm9wZXJ0eSBmaWxlPSIke2Jhc2VkaXJ9Ly4uLy4uLy4uL2J1aWxkLnByb3BlcnRpZXMiLz4KIAk8cHJvcGVydHkgZmlsZT0iJHtiYXNlZGlyfS8uLi8uLi8uLi9idWlsZC52ZXJzaW9ucyIvPgorCTxwcm9wZXJ0eSBmaWxlPSIke2Jhc2VkaXJ9Ly4uLy4uLy4uL2J1aWxkL3ZpcmdvLnByb3BlcnRpZXMiIC8+CiAJPGltcG9ydCBmaWxlPSIke2Jhc2VkaXJ9Ly4uLy4uLy4uL3ZpcmdvLWJ1aWxkL3dhYi9kZWZhdWx0LnhtbCIvPgogCTxwcm9wZXJ0eSBuYW1lPSJ3YWIub3V0cHV0LmRpciIgdmFsdWU9Ii4uL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNtb2tldGVzdC9hcHBzIi8+CiAKZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2FtcGxlLnRhZ3MvaXZ5LnhtbCBiL2pldHR5LXNlcnZlci9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zYW1wbGUudGFncy9pdnkueG1sCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBidWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNhbXBsZS50YWdzL2l2eS54bWwKcmVuYW1lIHRvIGpldHR5LXNlcnZlci9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zYW1wbGUudGFncy9pdnkueG1sCmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNhbXBsZS50YWdzL3NyYy9tYWluL2phdmEvb3JnL2VjbGlwc2UvdmlyZ28vamV0dHkvc2FtcGxlL3dlYi9Gb3JtSGFuZGxlci5qYXZhIGIvamV0dHktc2VydmVyL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNhbXBsZS50YWdzL3NyYy9tYWluL2phdmEvb3JnL2VjbGlwc2UvdmlyZ28vamV0dHkvc2FtcGxlL3dlYi9Gb3JtSGFuZGxlci5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBidWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNhbXBsZS50YWdzL3NyYy9tYWluL2phdmEvb3JnL2VjbGlwc2UvdmlyZ28vamV0dHkvc2FtcGxlL3dlYi9Gb3JtSGFuZGxlci5qYXZhCnJlbmFtZSB0byBqZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2FtcGxlLnRhZ3Mvc3JjL21haW4vamF2YS9vcmcvZWNsaXBzZS92aXJnby9qZXR0eS9zYW1wbGUvd2ViL0Zvcm1IYW5kbGVyLmphdmEKZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2FtcGxlLnRhZ3Mvc3JjL21haW4vamF2YS9vcmcvZWNsaXBzZS92aXJnby9qZXR0eS9zYW1wbGUvd2ViL1NhbXBsZUNvbnRyb2xsZXIuamF2YSBiL2pldHR5LXNlcnZlci9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zYW1wbGUudGFncy9zcmMvbWFpbi9qYXZhL29yZy9lY2xpcHNlL3ZpcmdvL2pldHR5L3NhbXBsZS93ZWIvU2FtcGxlQ29udHJvbGxlci5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBidWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNhbXBsZS50YWdzL3NyYy9tYWluL2phdmEvb3JnL2VjbGlwc2UvdmlyZ28vamV0dHkvc2FtcGxlL3dlYi9TYW1wbGVDb250cm9sbGVyLmphdmEKcmVuYW1lIHRvIGpldHR5LXNlcnZlci9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zYW1wbGUudGFncy9zcmMvbWFpbi9qYXZhL29yZy9lY2xpcHNlL3ZpcmdvL2pldHR5L3NhbXBsZS93ZWIvU2FtcGxlQ29udHJvbGxlci5qYXZhCmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNhbXBsZS50YWdzL3NyYy9tYWluL3dlYmFwcC9NRVRBLUlORi9NQU5JRkVTVC5NRiBiL2pldHR5LXNlcnZlci9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zYW1wbGUudGFncy9zcmMvbWFpbi93ZWJhcHAvTUVUQS1JTkYvTUFOSUZFU1QuTUYKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGJ1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2FtcGxlLnRhZ3Mvc3JjL21haW4vd2ViYXBwL01FVEEtSU5GL01BTklGRVNULk1GCnJlbmFtZSB0byBqZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2FtcGxlLnRhZ3Mvc3JjL21haW4vd2ViYXBwL01FVEEtSU5GL01BTklGRVNULk1GCmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNhbXBsZS50YWdzL3NyYy9tYWluL3dlYmFwcC9XRUItSU5GL2FwcGxpY2F0aW9uQ29udGV4dC54bWwgYi9qZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2FtcGxlLnRhZ3Mvc3JjL21haW4vd2ViYXBwL1dFQi1JTkYvYXBwbGljYXRpb25Db250ZXh0LnhtbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zYW1wbGUudGFncy9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi9hcHBsaWNhdGlvbkNvbnRleHQueG1sCnJlbmFtZSB0byBqZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2FtcGxlLnRhZ3Mvc3JjL21haW4vd2ViYXBwL1dFQi1JTkYvYXBwbGljYXRpb25Db250ZXh0LnhtbApkaWZmIC0tZ2l0IGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zYW1wbGUudGFncy9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi9qc3Avc2FtcGxlLmpzcCBiL2pldHR5LXNlcnZlci9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zYW1wbGUudGFncy9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi9qc3Avc2FtcGxlLmpzcApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zYW1wbGUudGFncy9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi9qc3Avc2FtcGxlLmpzcApyZW5hbWUgdG8gamV0dHktc2VydmVyL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNhbXBsZS50YWdzL3NyYy9tYWluL3dlYmFwcC9XRUItSU5GL2pzcC9zYW1wbGUuanNwCmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNhbXBsZS50YWdzL3NyYy9tYWluL3dlYmFwcC9XRUItSU5GL3NhbXBsZS1zZXJ2bGV0LnhtbCBiL2pldHR5LXNlcnZlci9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zYW1wbGUudGFncy9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi9zYW1wbGUtc2VydmxldC54bWwKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGJ1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2FtcGxlLnRhZ3Mvc3JjL21haW4vd2ViYXBwL1dFQi1JTkYvc2FtcGxlLXNlcnZsZXQueG1sCnJlbmFtZSB0byBqZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2FtcGxlLnRhZ3Mvc3JjL21haW4vd2ViYXBwL1dFQi1JTkYvc2FtcGxlLXNlcnZsZXQueG1sCmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNhbXBsZS50YWdzL3NyYy9tYWluL3dlYmFwcC9XRUItSU5GL3dlYi54bWwgYi9qZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2FtcGxlLnRhZ3Mvc3JjL21haW4vd2ViYXBwL1dFQi1JTkYvd2ViLnhtbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zYW1wbGUudGFncy9zcmMvbWFpbi93ZWJhcHAvV0VCLUlORi93ZWIueG1sCnJlbmFtZSB0byBqZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2FtcGxlLnRhZ3Mvc3JjL21haW4vd2ViYXBwL1dFQi1JTkYvd2ViLnhtbApkaWZmIC0tZ2l0IGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zYW1wbGUudGFncy9zcmMvbWFpbi93ZWJhcHAvaW5kZXguaHRtbCBiL2pldHR5LXNlcnZlci9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zYW1wbGUudGFncy9zcmMvbWFpbi93ZWJhcHAvaW5kZXguaHRtbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zYW1wbGUudGFncy9zcmMvbWFpbi93ZWJhcHAvaW5kZXguaHRtbApyZW5hbWUgdG8gamV0dHktc2VydmVyL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNhbXBsZS50YWdzL3NyYy9tYWluL3dlYmFwcC9pbmRleC5odG1sCmRpZmYgLS1naXQgYS9qZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2FtcGxlLnRhZ3MvdGVtcGxhdGUubWYgYi9qZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2FtcGxlLnRhZ3MvdGVtcGxhdGUubWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQwNjQ5NwotLS0gL2Rldi9udWxsCisrKyBiL2pldHR5LXNlcnZlci9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zYW1wbGUudGFncy90ZW1wbGF0ZS5tZgpAQCAtMCwwICsxLDI0IEBACitNYW5pZmVzdC1WZXJzaW9uOiAxLjAKK0J1bmRsZS1WZXJzaW9uOiAke3ZlcnNpb259CitCdW5kbGUtTmFtZTogV2ViCitCdW5kbGUtTWFuaWZlc3RWZXJzaW9uOiAyCitCdW5kbGUtU3ltYm9saWNOYW1lOiBvcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zYW1wbGUudGFncworV2ViLUNvbnRleHRQYXRoOiB0YWdsaWJzCitFeGNsdWRlZC1FeHBvcnRzOiAqCitSZXF1aXJlLVRsZEJ1bmRsZTogb3JnLnNwcmluZ2ZyYW1ld29yay53ZWIuc2VydmxldAorSW1wb3J0LVRlbXBsYXRlOiAKKyBvcmcuc3ByaW5nZnJhbWV3b3JrLio7dmVyc2lvbj0iJHtzcHJpbmdmcmFtZXdvcmtWZXJzaW9uOlsyLjUuNiwgKzEpfSIsCisgb3JnLmVjbGlwc2UudmlyZ28ud2ViLio7dmVyc2lvbj0iJHt2ZXJzaW9uOls9Lj0uPSwgPS49LisxKX0iLAorIGphdmF4LnNlcnZsZXQuKjt2ZXJzaW9uPSJbMi41LjAsMy4wLjApIgorSW1wb3J0LVBhY2thZ2U6IAorIG9yZy5zcHJpbmdmcmFtZXdvcmsuY29udGV4dC5jb25maWc7dmVyc2lvbj0iJHtzcHJpbmdmcmFtZXdvcmtWZXJzaW9uOlsyLjUuNiwgKzEpfSIsIAorIG9yZy5zcHJpbmdmcmFtZXdvcmsud2ViLmNvbnRleHQ7dmVyc2lvbj0iJHtzcHJpbmdmcmFtZXdvcmtWZXJzaW9uOlsyLjUuNiwgKzEpfSIsCisgb3JnLnNwcmluZ2ZyYW1ld29yay53ZWIuc2VydmxldDt2ZXJzaW9uPSIke3NwcmluZ2ZyYW1ld29ya1ZlcnNpb246WzIuNS42LCArMSl9IiwKKyBvcmcuc3ByaW5nZnJhbWV3b3JrLndlYi5zZXJ2bGV0LnRhZ3MuZm9ybTt2ZXJzaW9uPSIke3NwcmluZ2ZyYW1ld29ya1ZlcnNpb246WzIuNS42LCArMSl9IiwKKyBvcmcuc3ByaW5nZnJhbWV3b3JrLmNvcmU7dmVyc2lvbj0iJHtzcHJpbmdmcmFtZXdvcmtWZXJzaW9uOlsyLjUuNiwgKzEpfSIsCisgb3JnLmVjbGlwc2UudmlyZ28ud2ViLmRtO3ZlcnNpb249IiR7dmVyc2lvbjpbPS49Lj0sID0uPS4rMSl9IgorSW1wb3J0LUJ1bmRsZToKKyBvcmcuc3ByaW5nZnJhbWV3b3JrLmNvbnRleHQ7dmVyc2lvbj0iJHtzcHJpbmdmcmFtZXdvcmtWZXJzaW9uOlsyLjUuNiwgKzEpfSIsCisgb3JnLnNwcmluZ2ZyYW1ld29yay5jb250ZXh0LnN1cHBvcnQ7dmVyc2lvbj0iJHtzcHJpbmdmcmFtZXdvcmtWZXJzaW9uOlsyLjUuNiwgKzEpfSIsCisgb3JnLnNwcmluZ2ZyYW1ld29yay53ZWI7dmVyc2lvbj0iJHtzcHJpbmdmcmFtZXdvcmtWZXJzaW9uOlsyLjUuNiwgKzEpfSIKK0ltcG9ydC1MaWJyYXJ5OiBvcmcuc3ByaW5nZnJhbWV3b3JrLnNwcmluZzt2ZXJzaW9uPSJbMyw0KSIKZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc21va2V0ZXN0L2J1aWxkLnhtbCBiL2pldHR5LXNlcnZlci9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zbW9rZXRlc3QvYnVpbGQueG1sCnNpbWlsYXJpdHkgaW5kZXggOTMlCnJlbmFtZSBmcm9tIGJ1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc21va2V0ZXN0L2J1aWxkLnhtbApyZW5hbWUgdG8gamV0dHktc2VydmVyL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNtb2tldGVzdC9idWlsZC54bWwKaW5kZXggMjUxOWE3Yi4uNzY4ZWExNSAxMDA2NDQKLS0tIGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zbW9rZXRlc3QvYnVpbGQueG1sCisrKyBiL2pldHR5LXNlcnZlci9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zbW9rZXRlc3QvYnVpbGQueG1sCkBAIC0zLDYgKzMsNyBAQAogCiAJPHByb3BlcnR5IGZpbGU9IiR7YmFzZWRpcn0vLi4vLi4vLi4vYnVpbGQucHJvcGVydGllcyIvPgogCTxwcm9wZXJ0eSBmaWxlPSIke2Jhc2VkaXJ9Ly4uLy4uLy4uL2J1aWxkLnZlcnNpb25zIi8+CisJPHByb3BlcnR5IGZpbGU9IiR7YmFzZWRpcn0vLi4vLi4vLi4vYnVpbGQvdmlyZ28ucHJvcGVydGllcyIgLz4KIAk8aW1wb3J0IGZpbGU9IiR7YmFzZWRpcn0vLi4vLi4vLi4vdmlyZ28tYnVpbGQvc3RhbmRhcmQvZGVmYXVsdC54bWwiLz4KIAk8aW1wb3J0IGZpbGU9IiR7YmFzZWRpcn0vLi4vdGVzdC1wYWNrYWdlLnhtbCIvPgogCmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNtb2tldGVzdC9pdnkueG1sIGIvamV0dHktc2VydmVyL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNtb2tldGVzdC9pdnkueG1sCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBidWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNtb2tldGVzdC9pdnkueG1sCnJlbmFtZSB0byBqZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc21va2V0ZXN0L2l2eS54bWwKZGlmZiAtLWdpdCBhL2pldHR5LXNlcnZlci9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zbW9rZXRlc3Qvc3JjL3Ntb2tlVGVzdC9qYXZhL29yZy9lY2xpcHNlL3ZpcmdvL3NlcnZlci9zbW9rZXRlc3QvSmV0dHlTZXJ2ZXJTbW9rZVRlc3RzLmphdmEgYi9qZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc21va2V0ZXN0L3NyYy9zbW9rZVRlc3QvamF2YS9vcmcvZWNsaXBzZS92aXJnby9zZXJ2ZXIvc21va2V0ZXN0L0pldHR5U2VydmVyU21va2VUZXN0cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzOWU2YTkKLS0tIC9kZXYvbnVsbAorKysgYi9qZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc21va2V0ZXN0L3NyYy9zbW9rZVRlc3QvamF2YS9vcmcvZWNsaXBzZS92aXJnby9zZXJ2ZXIvc21va2V0ZXN0L0pldHR5U2VydmVyU21va2VUZXN0cy5qYXZhCkBAIC0wLDAgKzEsNzcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMTAgVk13YXJlIEluYy4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQKKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisgKgorICogQ29udHJpYnV0b3JzOgorICogICBWTXdhcmUgSW5jLiAtIGluaXRpYWwgY29udHJpYnV0aW9uCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworcGFja2FnZSBvcmcuZWNsaXBzZS52aXJnby5zZXJ2ZXIuc21va2V0ZXN0OworCitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOworCitpbXBvcnQgb3JnLmVjbGlwc2UudmlyZ28udGVzdC50b29scy5BYnN0cmFjdFNtb2tlVGVzdHM7CitpbXBvcnQgb3JnLmVjbGlwc2UudmlyZ28udGVzdC50b29scy5KbXhVdGlsczsKK2ltcG9ydCBvcmcuZWNsaXBzZS52aXJnby50ZXN0LnRvb2xzLlNlcnZlclV0aWxzOworaW1wb3J0IG9yZy5lY2xpcHNlLnZpcmdvLnRlc3QudG9vbHMuVmlyZ29TZXJ2ZXJTaHV0ZG93blRocmVhZDsKK2ltcG9ydCBvcmcuZWNsaXBzZS52aXJnby50ZXN0LnRvb2xzLlZpcmdvU2VydmVyU3RhcnR1cFRocmVhZDsKK2ltcG9ydCBvcmcuanVuaXQuQWZ0ZXI7CitpbXBvcnQgb3JnLmp1bml0LkJlZm9yZTsKK2ltcG9ydCBvcmcuanVuaXQuQmVmb3JlQ2xhc3M7CitpbXBvcnQgb3JnLmp1bml0Lklnbm9yZTsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKKworcHVibGljIGNsYXNzIEpldHR5U2VydmVyU21va2VUZXN0cyBleHRlbmRzIEFic3RyYWN0U21va2VUZXN0cyB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgT0VWX0pFVFRZX1NBTVBMRV9UQUdTX0pBUiA9ICJvcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zYW1wbGUudGFncy5qYXIiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBWSVJHT19GTEFWT1IgPSAiamV0dHktc2VydmVyIjsKKworICAgIEBCZWZvcmVDbGFzcworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBpbml0Sm14Q29ubmVjdGlvbigpIHsKKyAgICAgICAgSm14VXRpbHMudmlyZ29Ib21lID0gU2VydmVyVXRpbHMuZ2V0SG9tZShWSVJHT19GTEFWT1IpOworICAgIH0KKworICAgIEBCZWZvcmUKKyAgICBwdWJsaWMgdm9pZCBzdGFydFNlcnZlcigpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBuZXcgVGhyZWFkKG5ldyBWaXJnb1NlcnZlclN0YXJ0dXBUaHJlYWQoU2VydmVyVXRpbHMuZ2V0QmluRGlyKFZJUkdPX0ZMQVZPUikpKS5zdGFydCgpOworICAgICAgICBKbXhVdGlscy53YWl0Rm9yVmlyZ29TZXJ2ZXJTdGFydEZ1bGx5KCk7CisgICAgICAgIFRocmVhZC5zbGVlcCg1MDAwKTsgLy8gd2FpdCBmb3Igc3RhcnR1cCB0byBjb21wbGV0ZSBpbiBjYXNlIGl0IGZhaWxzCisKKyAgICAgICAgYXNzZXJ0RXF1YWxzKEpteFV0aWxzLlNUQVRVU19TVEFSVEVELCBKbXhVdGlscy5nZXRLZXJuZWxTdGF0dXMoKSk7CisgICAgfQorCisgICAgQEFmdGVyCisgICAgcHVibGljIHZvaWQgc2h1dGRvd25TZXJ2ZXIoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgbmV3IFRocmVhZChuZXcgVmlyZ29TZXJ2ZXJTaHV0ZG93blRocmVhZChTZXJ2ZXJVdGlscy5nZXRCaW5EaXIoVklSR09fRkxBVk9SKSkpLnN0YXJ0KCk7CisgICAgICAgIEpteFV0aWxzLndhaXRGb3JWaXJnb1NlcnZlclNodXRkb3duRnVsbHkoKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIHB1YmxpYyB2b2lkIHRlc3RLZXJuZWxTdGF0dXMoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKEpteFV0aWxzLlNUQVRVU19TVEFSVEVELCBKbXhVdGlscy5nZXRLZXJuZWxTdGF0dXMoKSk7CisgICAgfQorCisgICAgQFRlc3QKKyAgICBASWdub3JlIC8vIHdhaXQgZm9yIG9ldi5zZXJ2ZXIuc3Z0CisgICAgcHVibGljIHZvaWQgY29ubmVjdFRvU3BsYXNoU2NyZWVuKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisvLyAgICAgICAgVXJsV2FpdExhdGNoLndhaXRGb3IoImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC8iKTsKKyAgICB9CisKKyAgICBAVGVzdAorICAgIEBJZ25vcmUgLy8gd2FpdCBmb3Igb2V2LnNlcnZlci5zdnQKKyAgICBwdWJsaWMgdm9pZCB0ZXN0QWRtaW5TY3JlZW4oKSB7CisvLyAgICAgICAgVXJsV2FpdExhdGNoLndhaXRGb3IoImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9hZG1pbiIsICJhZG1pbiIsICJhZG1pbiIpOworICAgIH0KKworICAgIEBUZXN0CisgICAgQElnbm9yZSAvLyB3YWl0IGZvciBvZXYuc2VydmVyLnN2dAorICAgIHB1YmxpYyB2b2lkIHRlc3RUYWdMaWJzU2NyZWVuKCkgeworICAgICAgICBkZXBsb3lUZXN0QnVuZGxlcyhWSVJHT19GTEFWT1IsIE9FVl9KRVRUWV9TQU1QTEVfVEFHU19KQVIpOworLy8gICAgICAgIFVybFdhaXRMYXRjaC53YWl0Rm9yKCJodHRwOi8vbG9jYWxob3N0OjgwODAvdGFnbGlicy9hcHAvc2FtcGxlLmh0bSIpOworICAgICAgICB1bmRlcGxveVRlc3RCdW5kbGVzKFZJUkdPX0ZMQVZPUiwgT0VWX0pFVFRZX1NBTVBMRV9UQUdTX0pBUik7CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9qZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc21va2V0ZXN0L3NyYy9zbW9rZVRlc3QvamF2YS9vcmcvZWNsaXBzZS92aXJnby9zZXJ2ZXIvc21va2V0ZXN0L1VybFdhaXRMYXRjaC5qYXZhIGIvamV0dHktc2VydmVyL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNtb2tldGVzdC9zcmMvc21va2VUZXN0L2phdmEvb3JnL2VjbGlwc2UvdmlyZ28vc2VydmVyL3Ntb2tldGVzdC9VcmxXYWl0TGF0Y2guamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGVmMmEzCi0tLSAvZGV2L251bGwKKysrIGIvamV0dHktc2VydmVyL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNtb2tldGVzdC9zcmMvc21va2VUZXN0L2phdmEvb3JnL2VjbGlwc2UvdmlyZ28vc2VydmVyL3Ntb2tldGVzdC9VcmxXYWl0TGF0Y2guamF2YQpAQCAtMCwwICsxLDcxIEBACisvLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisvLyAqIENvcHlyaWdodCAoYykgMjAwOCwgMjAxMCBWTXdhcmUgSW5jLgorLy8gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCisvLyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorLy8gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdAorLy8gKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorLy8gKgorLy8gKiBDb250cmlidXRvcnM6CisvLyAqICAgVk13YXJlIEluYy4gLSBpbml0aWFsIGNvbnRyaWJ1dGlvbgorLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8vCisvL3BhY2thZ2Ugb3JnLmVjbGlwc2UudmlyZ28uc2VydmVyLnNtb2tldGVzdDsKKy8vCisvL2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5mYWlsOworLy8KKy8vaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5odHRwY2xpZW50Lkh0dHBDbGllbnQ7CisvL2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuaHR0cGNsaWVudC5IdHRwTWV0aG9kOworLy9pbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmh0dHBjbGllbnQuVXNlcm5hbWVQYXNzd29yZENyZWRlbnRpYWxzOworLy9pbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmh0dHBjbGllbnQuYXV0aC5BdXRoU2NvcGU7CisvL2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuaHR0cGNsaWVudC5tZXRob2RzLkdldE1ldGhvZDsKKy8vCisvL3B1YmxpYyBjbGFzcyBVcmxXYWl0TGF0Y2ggeworLy8KKy8vICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgbG9uZyBIQUxGX1NFQ09ORCA9IDUwMDsKKy8vCisvLyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGxvbmcgT05FX01JTlVURSA9IDYwICogMTAwMDsKKy8vCisvLyAgICBwdWJsaWMgc3RhdGljIHZvaWQgd2FpdEZvcihTdHJpbmcgdXJsKSB7CisvLyAgICAgICAgd2FpdEZvcih1cmwsIEhBTEZfU0VDT05ELCBPTkVfTUlOVVRFKTsKKy8vICAgIH0KKy8vCisvLyAgICBwdWJsaWMgc3RhdGljIHZvaWQgd2FpdEZvcihTdHJpbmcgdXJsLCBTdHJpbmcgdXNlcm5hbWUsIFN0cmluZyBwYXNzd29yZCkgeworLy8gICAgICAgIHdhaXRGb3IodXJsLCB1c2VybmFtZSwgcGFzc3dvcmQsIEhBTEZfU0VDT05ELCBPTkVfTUlOVVRFKTsKKy8vICAgIH0KKy8vCisvLyAgICBwdWJsaWMgc3RhdGljIHZvaWQgd2FpdEZvcihTdHJpbmcgdXJsLCBsb25nIGludGVydmFsLCBsb25nIGR1cmF0aW9uKSB7CisvLyAgICAgICAgSHR0cENsaWVudCBjbGllbnQgPSBuZXcgSHR0cENsaWVudCgpOworLy8gICAgICAgIHdhaXQodXJsLCBjbGllbnQsIGludGVydmFsLCBkdXJhdGlvbik7CisvLyAgICB9CisvLworLy8gICAgcHVibGljIHN0YXRpYyB2b2lkIHdhaXRGb3IoU3RyaW5nIHVybCwgU3RyaW5nIHVzZXJuYW1lLCBTdHJpbmcgcGFzc3dvcmQsIGxvbmcgaW50ZXJ2YWwsIGxvbmcgZHVyYXRpb24pIHsKKy8vICAgICAgICBIdHRwQ2xpZW50IGNsaWVudCA9IG5ldyBIdHRwQ2xpZW50KCk7CisvLyAgICAgICAgY2xpZW50LmdldFBhcmFtcygpLnNldEF1dGhlbnRpY2F0aW9uUHJlZW1wdGl2ZSh0cnVlKTsKKy8vICAgICAgICBjbGllbnQuZ2V0U3RhdGUoKS5zZXRDcmVkZW50aWFscyhBdXRoU2NvcGUuQU5ZLCBuZXcgVXNlcm5hbWVQYXNzd29yZENyZWRlbnRpYWxzKHVzZXJuYW1lLCBwYXNzd29yZCkpOworLy8gICAgICAgIHdhaXQodXJsLCBjbGllbnQsIGludGVydmFsLCBkdXJhdGlvbik7CisvLyAgICB9CisvLworLy8gICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCB3YWl0KFN0cmluZyB1cmwsIEh0dHBDbGllbnQgY2xpZW50LCBsb25nIGludGVydmFsLCBsb25nIGR1cmF0aW9uKSB7CisvLyAgICAgICAgSHR0cE1ldGhvZCBnZXQgPSBuZXcgR2V0TWV0aG9kKHVybCk7CisvLworLy8gICAgICAgIHRyeSB7CisvLyAgICAgICAgICAgIGxvbmcgc3RhcnRUaW1lID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisvLworLy8gICAgICAgICAgICBpbnQgc3RhdHVzQ29kZSA9IDk5OTsKKy8vICAgICAgICAgICAgd2hpbGUgKFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpIC0gc3RhcnRUaW1lIDwgZHVyYXRpb24pIHsKKy8vICAgICAgICAgICAgICAgIHN0YXR1c0NvZGUgPSBjbGllbnQuZXhlY3V0ZU1ldGhvZChnZXQpOworLy8gICAgICAgICAgICAgICAgaWYgKHN0YXR1c0NvZGUgPCA0MDApIHsKKy8vICAgICAgICAgICAgICAgICAgICByZXR1cm47CisvLyAgICAgICAgICAgICAgICB9CisvLyAgICAgICAgICAgICAgICBUaHJlYWQuc2xlZXAoaW50ZXJ2YWwpOworLy8gICAgICAgICAgICB9CisvLworLy8gICAgICAgICAgICBmYWlsKFN0cmluZy5mb3JtYXQoIkFmdGVyICVkIG1zLCBzdGF0dXMgY29kZSB3YXMgJWQiLCBkdXJhdGlvbiwgc3RhdHVzQ29kZSkpOworLy8gICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisvLyAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKGUpOworLy8gICAgICAgIH0gZmluYWxseSB7CisvLyAgICAgICAgICAgIGdldC5yZWxlYXNlQ29ubmVjdGlvbigpOworLy8gICAgICAgIH0KKy8vICAgIH0KKy8vCisvL30KZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc21va2V0ZXN0L2FwcHMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2FtcGxlLnRhZ3MuamFyIGIvamV0dHktc2VydmVyL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNtb2tldGVzdC9zcmMvc21va2VUZXN0L3Jlc291cmNlcy9idW5kbGVzL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNhbXBsZS50YWdzLmphcgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zbW9rZXRlc3QvYXBwcy9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zYW1wbGUudGFncy5qYXIKcmVuYW1lIHRvIGpldHR5LXNlcnZlci9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zbW9rZXRlc3Qvc3JjL3Ntb2tlVGVzdC9yZXNvdXJjZXMvYnVuZGxlcy9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zYW1wbGUudGFncy5qYXIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9waWNrdXAtaXZ5LnhtbCBiL2pldHR5LXNlcnZlci9waWNrdXAtaXZ5LnhtbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9waWNrdXAtaXZ5LnhtbApyZW5hbWUgdG8gamV0dHktc2VydmVyL3BpY2t1cC1pdnkueG1sCmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnJlc291cmNlcy9idWlsZC5wcm9wZXJ0aWVzIGIvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLmVxdWlub3gucmVnaW9ucy9idWlsZC5wcm9wZXJ0aWVzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBidWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnJlc291cmNlcy9idWlsZC5wcm9wZXJ0aWVzCnJlbmFtZSB0byBqZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UuZXF1aW5veC5yZWdpb25zL2J1aWxkLnByb3BlcnRpZXMKZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkucmVzb3VyY2VzL2VjbGlwc2VfdXBkYXRlXzEyMC5qcGcgYi9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UuZXF1aW5veC5yZWdpb25zL2VjbGlwc2VfdXBkYXRlXzEyMC5qcGcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGJ1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkucmVzb3VyY2VzL2VjbGlwc2VfdXBkYXRlXzEyMC5qcGcKcmVuYW1lIHRvIGpldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS5lcXVpbm94LnJlZ2lvbnMvZWNsaXBzZV91cGRhdGVfMTIwLmpwZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnJlc291cmNlcy9lcGwtdjEwLmh0bWwgYi9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UuZXF1aW5veC5yZWdpb25zL2VwbC12MTAuaHRtbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5yZXNvdXJjZXMvZXBsLXYxMC5odG1sCnJlbmFtZSB0byBqZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UuZXF1aW5veC5yZWdpb25zL2VwbC12MTAuaHRtbApkaWZmIC0tZ2l0IGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5yZXNvdXJjZXMvZmVhdHVyZS5wcm9wZXJ0aWVzIGIvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLmVxdWlub3gucmVnaW9ucy9mZWF0dXJlLnByb3BlcnRpZXMKc2ltaWxhcml0eSBpbmRleCA5OCUKY29weSBmcm9tIGJ1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkucmVzb3VyY2VzL2ZlYXR1cmUucHJvcGVydGllcwpjb3B5IHRvIGpldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS5lcXVpbm94LnJlZ2lvbnMvZmVhdHVyZS5wcm9wZXJ0aWVzCmluZGV4IDRlMzlhZDMuLjQ2MDY2MmUgMTAwNjQ0Ci0tLSBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkucmVzb3VyY2VzL2ZlYXR1cmUucHJvcGVydGllcworKysgYi9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UuZXF1aW5veC5yZWdpb25zL2ZlYXR1cmUucHJvcGVydGllcwpAQCAtMjAsNyArMjAsNyBAQAogIyBUaGlzIGZpbGUgc2hvdWxkIGJlIHRyYW5zbGF0ZWQuCiAKICMgImZlYXR1cmVOYW1lIiBwcm9wZXJ0eSAtIG5hbWUgb2YgdGhlIGZlYXR1cmUKLWZlYXR1cmVOYW1lPUVjbGlwc2UgVmlyZ28gSmV0dHkgU2VydmVyIFJlc291cmNlcyBGZWF0dXJlCitmZWF0dXJlTmFtZT1FY2xpcHNlIFZpcmdvIFJlZ2lvbnMgRmVhdHVyZQogCiAjICJwcm92aWRlck5hbWUiIHByb3BlcnR5IC0gbmFtZSBvZiB0aGUgY29tcGFueSB0aGF0IHByb3ZpZGVzIHRoZSBmZWF0dXJlCiBwcm92aWRlck5hbWU9RWNsaXBzZS5vcmcKQEAgLTI4LDcgKzI4LDcgQEAKICMgInVwZGF0ZVNpdGVOYW1lIiBwcm9wZXJ0eSAtIGxhYmVsIGZvciB0aGUgdXBkYXRlIHNpdGUKIAogIyAiZGVzY3JpcHRpb24iIHByb3BlcnR5IC0gZGVzY3JpcHRpb24gb2YgdGhlIGZlYXR1cmUKLWRlc2NyaXB0aW9uPVRoaXMgZmVhdHVyZSBwcm92aWRlcyBtb2RpZmllZCBzY3JpcHRzIHRvIGVuYWJsZSBwcm9wZXIgc3RhcnR1cCBvZiBKZXR0eS5cblwKK2Rlc2NyaXB0aW9uPVRoaXMgZmVhdHVyZSBwcm92aWRlcyByZWdpb24gc3VwcG9ydCBpbiBWaXJnbyBLZXJuZWwuXG5cCiAKICMgImNvcHlyaWdodCIgcHJvcGVydHkgLSB0ZXh0IG9mIHRoZSAiRmVhdHVyZSBVcGRhdGUgQ29weXJpZ2h0IgogY29weXJpZ2h0PVwKZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2NyaXB0cy9mZWF0dXJlLnhtbCBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS5lcXVpbm94LnJlZ2lvbnMvZmVhdHVyZS54bWwKc2ltaWxhcml0eSBpbmRleCA2NiUKY29weSBmcm9tIGJ1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2NyaXB0cy9mZWF0dXJlLnhtbApjb3B5IHRvIGpldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS5lcXVpbm94LnJlZ2lvbnMvZmVhdHVyZS54bWwKaW5kZXggYTE4YzQ4OC4uZTIzY2FmNiAxMDA3NTUKLS0tIGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zY3JpcHRzL2ZlYXR1cmUueG1sCisrKyBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS5lcXVpbm94LnJlZ2lvbnMvZmVhdHVyZS54bWwKQEAgLTEsOCArMSw4IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgogPGZlYXR1cmUKLSAgICAgIGlkPSJvcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zY3JpcHRzIgorICAgICAgaWQ9Im9yZy5lY2xpcHNlLmVxdWlub3gucmVnaW9ucyIKICAgICAgIGxhYmVsPSIlZmVhdHVyZU5hbWUiCi0gICAgICB2ZXJzaW9uPSIxLjAuMCIKKyAgICAgIHZlcnNpb249IkBSRUdJT04uVkVSU0lPTkAiCiAgICAgICBwcm92aWRlci1uYW1lPSIlcHJvdmlkZXJOYW1lIgogICAgICAgaW1hZ2U9ImVjbGlwc2VfdXBkYXRlXzEyMC5qcGciPgogCkBAIC0xNywxMSArMTcsMTMgQEAKICAgIDxsaWNlbnNlIHVybD0iJWxpY2Vuc2VVUkwiPgogICAgICAgJWxpY2Vuc2UKICAgIDwvbGljZW5zZT4KLSAgICAKLSAgICA8cGx1Z2luCi0gICAgICAgICBpZD0iamV0dHlfc2VydmVyX3NjcmlwdHMiCisKKyAgIDxwbHVnaW4KKyAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5lcXVpbm94LnJlZ2lvbiIKICAgICAgICAgIGRvd25sb2FkLXNpemU9IjAiCiAgICAgICAgICBpbnN0YWxsLXNpemU9IjAiCi0gICAgICAgICB2ZXJzaW9uPSIxLjAuMCIvPgorICAgICAgICAgdmVyc2lvbj0iQFJFR0lPTi5WRVJTSU9OQCIKKyAgICAgICAgIHVucGFjaz0iZmFsc2UiCisgICAgICAgICBhdXRvc3RhcnQ9InRydWUiLz4gICAgICAgICAKIAogPC9mZWF0dXJlPgpkaWZmIC0tZ2l0IGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5yZXNvdXJjZXMvYnVpbGQucHJvcGVydGllcyBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5jb3JlL2J1aWxkLnByb3BlcnRpZXMKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBidWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnJlc291cmNlcy9idWlsZC5wcm9wZXJ0aWVzCmNvcHkgdG8gamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmNvcmUvYnVpbGQucHJvcGVydGllcwpkaWZmIC0tZ2l0IGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5yZXNvdXJjZXMvZWNsaXBzZV91cGRhdGVfMTIwLmpwZyBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5jb3JlL2VjbGlwc2VfdXBkYXRlXzEyMC5qcGcKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBidWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnJlc291cmNlcy9lY2xpcHNlX3VwZGF0ZV8xMjAuanBnCmNvcHkgdG8gamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmNvcmUvZWNsaXBzZV91cGRhdGVfMTIwLmpwZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnJlc291cmNlcy9lcGwtdjEwLmh0bWwgYi9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uY29yZS9lcGwtdjEwLmh0bWwKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBidWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnJlc291cmNlcy9lcGwtdjEwLmh0bWwKY29weSB0byBqZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uY29yZS9lcGwtdjEwLmh0bWwKZGlmZiAtLWdpdCBhL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5jb3JlL2ZlYXR1cmUucHJvcGVydGllcyBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5jb3JlL2ZlYXR1cmUucHJvcGVydGllcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTE2MDM0Ci0tLSAvZGV2L251bGwKKysrIGIvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmNvcmUvZmVhdHVyZS5wcm9wZXJ0aWVzCkBAIC0wLDAgKzEsMTgwIEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIENvcHlyaWdodCAoYykgMjAxMSBTQVAgQUcKKyMKKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscworIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyMgYW5kIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uCisjIFRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIGlzIGF2YWlsYWJsZSBhdAorIyAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisjIGFuZCB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCBpcyBhdmFpbGFibGUgYXQKKyMgICBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FwYWNoZTIuMC5waHAuCisjIFlvdSBtYXkgZWxlY3QgdG8gcmVkaXN0cmlidXRlIHRoaXMgY29kZSB1bmRlciBlaXRoZXIgb2YgdGhlc2UgbGljZW5zZXMuCisjCisjIENvbnRyaWJ1dG9yczoKKyMgICBCb3Jpc2xhdiBLYXB1a2FyYW5vdiAtIGluaXRpYWwgY29udHJpYnV0aW9uCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIGZlYXR1cmUucHJvcGVydGllcworIyBjb250YWlucyBleHRlcm5hbGl6ZWQgc3RyaW5ncyBmb3IgZmVhdHVyZS54bWwKKyMgIiVmb28iIGluIGZlYXR1cmUueG1sIGNvcnJlc3BvbmRzIHRvIHRoZSBrZXkgImZvbyIgaW4gdGhpcyBmaWxlCisjIGphdmEuaW8uUHJvcGVydGllcyBmaWxlIChJU08gODg1OS0xIHdpdGggIlwiIGVzY2FwZXMpCisjIFRoaXMgZmlsZSBzaG91bGQgYmUgdHJhbnNsYXRlZC4KKworIyAiZmVhdHVyZU5hbWUiIHByb3BlcnR5IC0gbmFtZSBvZiB0aGUgZmVhdHVyZQorZmVhdHVyZU5hbWU9RWNsaXBzZSBWaXJnbyBDb3JlIEZlYXR1cmUKKworIyAicHJvdmlkZXJOYW1lIiBwcm9wZXJ0eSAtIG5hbWUgb2YgdGhlIGNvbXBhbnkgdGhhdCBwcm92aWRlcyB0aGUgZmVhdHVyZQorcHJvdmlkZXJOYW1lPUVjbGlwc2Uub3JnCisKKyMgInVwZGF0ZVNpdGVOYW1lIiBwcm9wZXJ0eSAtIGxhYmVsIGZvciB0aGUgdXBkYXRlIHNpdGUKKworIyAiZGVzY3JpcHRpb24iIHByb3BlcnR5IC0gZGVzY3JpcHRpb24gb2YgdGhlIGZlYXR1cmUKK2Rlc2NyaXB0aW9uPVRoaXMgZmVhdHVyZSBwcm92aWRlcyB0aGUgQ29yZSBmZWF0dXJlcyBvZiBhIEVjbGlwc2UgVmlyZ28gT1NHaSBjb250YWluZXIgc3VjaCBhcyBlbmhhbmNlZCBzdXBwb3J0YWJpbGl0eSBhbmQgZGVwbG95bWVudCBtZWNoYW5pc21zLlxuXAorCisjICJjb3B5cmlnaHQiIHByb3BlcnR5IC0gdGV4dCBvZiB0aGUgIkZlYXR1cmUgVXBkYXRlIENvcHlyaWdodCIKK2NvcHlyaWdodD1cCitDb3B5cmlnaHQgKGMpIDIwMDksIDIwMTAsIDIwMTEgVk13YXJlIEluYy4gYW5kIG90aGVyc1xuXAorXG5cCitBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzXG5cCithcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjBcblwKK2FuZCBBcGFjaGUgTGljZW5zZSB2Mi4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLlxuXAorVGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgaXMgYXZhaWxhYmxlIGF0XG5cCitodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbFxuXAorYW5kIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIGlzIGF2YWlsYWJsZSBhdFxuXAoraHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hcGFjaGUyLjAucGhwLlxuXAorWW91IG1heSBlbGVjdCB0byByZWRpc3RyaWJ1dGUgdGhpcyBjb2RlIHVuZGVyIGVpdGhlciBvZiB0aGVzZVxuXAorbGljZW5zZXMuXG5cCitcblwKK0NvbnRyaWJ1dG9yczpcblwKK1ZNd2FyZSBJbmMuIC0gaW5pdGlhbCBjb250cmlidXRpb25cblwKKworIyAibGljZW5zZVVSTCIgcHJvcGVydHkgLSBVUkwgb2YgdGhlICJGZWF0dXJlIExpY2Vuc2UiCisjIGRvIG5vdCB0cmFuc2xhdGUgdmFsdWUgLSBqdXN0IGNoYW5nZSB0byBwb2ludCB0byBhIGxvY2FsZS1zcGVjaWZpYyBIVE1MIHBhZ2UKK2xpY2Vuc2VVUkw9bGljZW5zZS5odG1sCisKKyMgImxpY2Vuc2UiIHByb3BlcnR5IC0gdGV4dCBvZiB0aGUgIkZlYXR1cmUgVXBkYXRlIExpY2Vuc2UiCisjIHNob3VsZCBiZSBwbGFpbiB0ZXh0IHZlcnNpb24gb2YgbGljZW5zZSBhZ3JlZW1lbnQgcG9pbnRlZCB0byBiZSAibGljZW5zZVVSTCIKK2xpY2Vuc2U9XAorRWNsaXBzZSBGb3VuZGF0aW9uIFNvZnR3YXJlIFVzZXIgQWdyZWVtZW50XG5cCitGZWJydWFyeSAxLCAyMDExXG5cCitcblwKK1VzYWdlIE9mIENvbnRlbnRcblwKK1xuXAorVEhFIEVDTElQU0UgRk9VTkRBVElPTiBNQUtFUyBBVkFJTEFCTEUgU09GVFdBUkUsIERPQ1VNRU5UQVRJT04sIElORk9STUFUSU9OIEFORC9PUlxuXAorT1RIRVIgTUFURVJJQUxTIEZPUiBPUEVOIFNPVVJDRSBQUk9KRUNUUyAoQ09MTEVDVElWRUxZICJDT05URU5UIikuXG5cCitVU0UgT0YgVEhFIENPTlRFTlQgSVMgR09WRVJORUQgQlkgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIFRISVNcblwKK0FHUkVFTUVOVCBBTkQvT1IgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIExJQ0VOU0UgQUdSRUVNRU5UUyBPUlxuXAorTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVy4gIEJZIFVTSU5HIFRIRSBDT05URU5ULCBZT1VcblwKK0FHUkVFIFRIQVQgWU9VUiBVU0UgT0YgVEhFIENPTlRFTlQgSVMgR09WRVJORUQgQlkgVEhJUyBBR1JFRU1FTlRcblwKK0FORC9PUiBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgQU5ZIEFQUExJQ0FCTEUgTElDRU5TRSBBR1JFRU1FTlRTXG5cCitPUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLiAgSUYgWU9VIERPIE5PVCBBR1JFRSBUTyBUSEVcblwKK1RFUk1TIEFORCBDT05ESVRJT05TIE9GIFRISVMgQUdSRUVNRU5UIEFORCBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlNcblwKK09GIEFOWSBBUFBMSUNBQkxFIExJQ0VOU0UgQUdSRUVNRU5UUyBPUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEXG5cCitCRUxPVywgVEhFTiBZT1UgTUFZIE5PVCBVU0UgVEhFIENPTlRFTlQuXG5cCitcblwKK0FwcGxpY2FibGUgTGljZW5zZXNcblwKK1xuXAorVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQsIGFsbCBDb250ZW50IG1hZGUgYXZhaWxhYmxlIGJ5IHRoZVxuXAorRWNsaXBzZSBGb3VuZGF0aW9uIGlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2ZcblwKK3RoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wICgiRVBMIikuIEEgY29weSBvZiB0aGUgRVBMIGlzXG5cCitwcm92aWRlZCB3aXRoIHRoaXMgQ29udGVudCBhbmQgaXMgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwuXG5cCitGb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgIlByb2dyYW0iIHdpbGwgbWVhbiB0aGUgQ29udGVudC5cblwKK1xuXAorQ29udGVudCBpbmNsdWRlcywgYnV0IGlzIG5vdCBsaW1pdGVkIHRvLCBzb3VyY2UgY29kZSwgb2JqZWN0IGNvZGUsXG5cCitkb2N1bWVudGF0aW9uIGFuZCBvdGhlciBmaWxlcyBtYWludGFpbmVkIGluIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gc291cmNlIGNvZGVcblwKK3JlcG9zaXRvcnkgKCJSZXBvc2l0b3J5IikgaW4gc29mdHdhcmUgbW9kdWxlcyAoIk1vZHVsZXMiKSBhbmQgbWFkZSBhdmFpbGFibGVcblwKK2FzIGRvd25sb2FkYWJsZSBhcmNoaXZlcyAoIkRvd25sb2FkcyIpLlxuXAorXG5cCisgICAgICAgLSBDb250ZW50IG1heSBiZSBzdHJ1Y3R1cmVkIGFuZCBwYWNrYWdlZCBpbnRvIG1vZHVsZXMgdG8gZmFjaWxpdGF0ZSBkZWxpdmVyaW5nLFxuXAorICAgICAgICAgZXh0ZW5kaW5nLCBhbmQgdXBncmFkaW5nIHRoZSBDb250ZW50LiBUeXBpY2FsIG1vZHVsZXMgbWF5IGluY2x1ZGUgcGx1Zy1pbnMgKCJQbHVnLWlucyIpLFxuXAorICAgICAgICAgcGx1Zy1pbiBmcmFnbWVudHMgKCJGcmFnbWVudHMiKSwgYW5kIGZlYXR1cmVzICgiRmVhdHVyZXMiKS5cblwKKyAgICAgICAtIEVhY2ggUGx1Zy1pbiBvciBGcmFnbWVudCBtYXkgYmUgcGFja2FnZWQgYXMgYSBzdWItZGlyZWN0b3J5IG9yIEpBUiAoSmF2YShUTSkgQVJjaGl2ZSlcblwKKyAgICAgICAgIGluIGEgZGlyZWN0b3J5IG5hbWVkICJwbHVnaW5zIi5cblwKKyAgICAgICAtIEEgRmVhdHVyZSBpcyBhIGJ1bmRsZSBvZiBvbmUgb3IgbW9yZSBQbHVnLWlucyBhbmQvb3IgRnJhZ21lbnRzIGFuZCBhc3NvY2lhdGVkIG1hdGVyaWFsLlxuXAorICAgICAgICAgRWFjaCBGZWF0dXJlIG1heSBiZSBwYWNrYWdlZCBhcyBhIHN1Yi1kaXJlY3RvcnkgaW4gYSBkaXJlY3RvcnkgbmFtZWQgImZlYXR1cmVzIi5cblwKKyAgICAgICAgIFdpdGhpbiBhIEZlYXR1cmUsIGZpbGVzIG5hbWVkICJmZWF0dXJlLnhtbCIgbWF5IGNvbnRhaW4gYSBsaXN0IG9mIHRoZSBuYW1lcyBhbmQgdmVyc2lvblxuXAorICAgICAgICAgbnVtYmVycyBvZiB0aGUgUGx1Zy1pbnMgYW5kL29yIEZyYWdtZW50cyBhc3NvY2lhdGVkIHdpdGggdGhhdCBGZWF0dXJlLlxuXAorICAgICAgIC0gRmVhdHVyZXMgbWF5IGFsc28gaW5jbHVkZSBvdGhlciBGZWF0dXJlcyAoIkluY2x1ZGVkIEZlYXR1cmVzIikuIFdpdGhpbiBhIEZlYXR1cmUsIGZpbGVzXG5cCisgICAgICAgICBuYW1lZCAiZmVhdHVyZS54bWwiIG1heSBjb250YWluIGEgbGlzdCBvZiB0aGUgbmFtZXMgYW5kIHZlcnNpb24gbnVtYmVycyBvZiBJbmNsdWRlZCBGZWF0dXJlcy5cblwKK1xuXAorVGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyBQbHVnLWlucyBhbmQgRnJhZ21lbnRzIHNob3VsZCBiZVxuXAorY29udGFpbmVkIGluIGZpbGVzIG5hbWVkICJhYm91dC5odG1sIiAoIkFib3V0cyIpLiBUaGUgdGVybXMgYW5kXG5cCitjb25kaXRpb25zIGdvdmVybmluZyBGZWF0dXJlcyBhbmQgSW5jbHVkZWQgRmVhdHVyZXMgc2hvdWxkIGJlIGNvbnRhaW5lZFxuXAoraW4gZmlsZXMgbmFtZWQgImxpY2Vuc2UuaHRtbCIgKCJGZWF0dXJlIExpY2Vuc2VzIikuIEFib3V0cyBhbmQgRmVhdHVyZVxuXAorTGljZW5zZXMgbWF5IGJlIGxvY2F0ZWQgaW4gYW55IGRpcmVjdG9yeSBvZiBhIERvd25sb2FkIG9yIE1vZHVsZVxuXAoraW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG8gdGhlIGZvbGxvd2luZyBsb2NhdGlvbnM6XG5cCitcblwKKyAgICAgICAtIFRoZSB0b3AtbGV2ZWwgKHJvb3QpIGRpcmVjdG9yeVxuXAorICAgICAgIC0gUGx1Zy1pbiBhbmQgRnJhZ21lbnQgZGlyZWN0b3JpZXNcblwKKyAgICAgICAtIEluc2lkZSBQbHVnLWlucyBhbmQgRnJhZ21lbnRzIHBhY2thZ2VkIGFzIEpBUnNcblwKKyAgICAgICAtIFN1Yi1kaXJlY3RvcmllcyBvZiB0aGUgZGlyZWN0b3J5IG5hbWVkICJzcmMiIG9mIGNlcnRhaW4gUGx1Zy1pbnNcblwKKyAgICAgICAtIEZlYXR1cmUgZGlyZWN0b3JpZXNcblwKK1xuXAorTm90ZTogaWYgYSBGZWF0dXJlIG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gaXMgaW5zdGFsbGVkIHVzaW5nIHRoZVxuXAorUHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kgKGFzIGRlZmluZWQgYmVsb3cpLCB5b3UgbXVzdCBhZ3JlZSB0byBhIGxpY2Vuc2UgKCJGZWF0dXJlIFxuXAorVXBkYXRlIExpY2Vuc2UiKSBkdXJpbmcgdGhlIGluc3RhbGxhdGlvbiBwcm9jZXNzLiBJZiB0aGUgRmVhdHVyZSBjb250YWluc1xuXAorSW5jbHVkZWQgRmVhdHVyZXMsIHRoZSBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlIHNob3VsZCBlaXRoZXIgcHJvdmlkZSB5b3VcblwKK3dpdGggdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyB0aGUgSW5jbHVkZWQgRmVhdHVyZXMgb3IgaW5mb3JtXG5cCit5b3Ugd2hlcmUgeW91IGNhbiBsb2NhdGUgdGhlbS4gRmVhdHVyZSBVcGRhdGUgTGljZW5zZXMgbWF5IGJlIGZvdW5kIGluXG5cCit0aGUgImxpY2Vuc2UiIHByb3BlcnR5IG9mIGZpbGVzIG5hbWVkICJmZWF0dXJlLnByb3BlcnRpZXMiIGZvdW5kIHdpdGhpbiBhIEZlYXR1cmUuXG5cCitTdWNoIEFib3V0cywgRmVhdHVyZSBMaWNlbnNlcywgYW5kIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIGNvbnRhaW4gdGhlXG5cCit0ZXJtcyBhbmQgY29uZGl0aW9ucyAob3IgcmVmZXJlbmNlcyB0byBzdWNoIHRlcm1zIGFuZCBjb25kaXRpb25zKSB0aGF0XG5cCitnb3Zlcm4geW91ciB1c2Ugb2YgdGhlIGFzc29jaWF0ZWQgQ29udGVudCBpbiB0aGF0IGRpcmVjdG9yeS5cblwKK1xuXAorVEhFIEFCT1VUUywgRkVBVFVSRSBMSUNFTlNFUywgQU5EIEZFQVRVUkUgVVBEQVRFIExJQ0VOU0VTIE1BWSBSRUZFUlxuXAorVE8gVEhFIEVQTCBPUiBPVEhFUiBMSUNFTlNFIEFHUkVFTUVOVFMsIE5PVElDRVMgT1IgVEVSTVMgQU5EIENPTkRJVElPTlMuXG5cCitTT01FIE9GIFRIRVNFIE9USEVSIExJQ0VOU0UgQUdSRUVNRU5UUyBNQVkgSU5DTFVERSAoQlVUIEFSRSBOT1QgTElNSVRFRCBUTyk6XG5cCitcblwKKyAgICAgICAtIEVjbGlwc2UgRGlzdHJpYnV0aW9uIExpY2Vuc2UgVmVyc2lvbiAxLjAgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xpY2Vuc2VzL2VkbC12MS4wLmh0bWwpXG5cCisgICAgICAgLSBDb21tb24gUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2NwbC12MTAuaHRtbClcblwKKyAgICAgICAtIEFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlIDEuMSAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFKVxuXAorICAgICAgIC0gQXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UgMi4wIChhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wKVxuXAorICAgICAgIC0gTWV0cm8gTGluayBQdWJsaWMgTGljZW5zZSAxLjAwIChhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29wZW5tb3RpZi9zdXBwb3J0ZXJzL21ldHJvbGluay9saWNlbnNlLmh0bWwpXG5cCisgICAgICAgLSBNb3ppbGxhIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4xIChhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvTVBMLTEuMS5odG1sKVxuXAorXG5cCitJVCBJUyBZT1VSIE9CTElHQVRJT04gVE8gUkVBRCBBTkQgQUNDRVBUIEFMTCBTVUNIIFRFUk1TIEFORCBDT05ESVRJT05TIFBSSU9SXG5cCitUTyBVU0UgT0YgVEhFIENPTlRFTlQuIElmIG5vIEFib3V0LCBGZWF0dXJlIExpY2Vuc2UsIG9yIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VcblwKK2lzIHByb3ZpZGVkLCBwbGVhc2UgY29udGFjdCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIHRvIGRldGVybWluZSB3aGF0IHRlcm1zIGFuZCBjb25kaXRpb25zXG5cCitnb3Zlcm4gdGhhdCBwYXJ0aWN1bGFyIENvbnRlbnQuXG5cCitcblwKK1xuXFVzZSBvZiBQcm92aXNpb25pbmcgVGVjaG5vbG9neVxuXAorXG5cCitUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBwcm92aXNpb25pbmcgc29mdHdhcmUsIGV4YW1wbGVzIG9mIHdoaWNoIGluY2x1ZGUsXG5cCitidXQgYXJlIG5vdCBsaW1pdGVkIHRvLCBwMiBhbmQgdGhlIEVjbGlwc2UgVXBkYXRlIE1hbmFnZXIgKCJQcm92aXNpb25pbmcgVGVjaG5vbG9neSIpIGZvclxuXAordGhlIHB1cnBvc2Ugb2YgYWxsb3dpbmcgdXNlcnMgdG8gaW5zdGFsbCBzb2Z0d2FyZSwgZG9jdW1lbnRhdGlvbiwgaW5mb3JtYXRpb24gYW5kL29yXG5cCitvdGhlciBtYXRlcmlhbHMgKGNvbGxlY3RpdmVseSAiSW5zdGFsbGFibGUgU29mdHdhcmUiKS4gVGhpcyBjYXBhYmlsaXR5IGlzIHByb3ZpZGVkIHdpdGhcblwKK3RoZSBpbnRlbnQgb2YgYWxsb3dpbmcgc3VjaCB1c2VycyB0byBpbnN0YWxsLCBleHRlbmQgYW5kIHVwZGF0ZSBFY2xpcHNlLWJhc2VkIHByb2R1Y3RzLlxuXAorSW5mb3JtYXRpb24gYWJvdXQgcGFja2FnaW5nIEluc3RhbGxhYmxlIFNvZnR3YXJlIGlzIGF2YWlsYWJsZSBhdFxuXAoraHR0cDovL2VjbGlwc2Uub3JnL2VxdWlub3gvcDIvcmVwb3NpdG9yeV9wYWNrYWdpbmcuaHRtbCAoIlNwZWNpZmljYXRpb24iKS5cblwKK1xuXAorWW91IG1heSB1c2UgUHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kgdG8gYWxsb3cgb3RoZXIgcGFydGllcyB0byBpbnN0YWxsIEluc3RhbGxhYmxlIFNvZnR3YXJlLlxuXAorWW91IHNoYWxsIGJlIHJlc3BvbnNpYmxlIGZvciBlbmFibGluZyB0aGUgYXBwbGljYWJsZSBsaWNlbnNlIGFncmVlbWVudHMgcmVsYXRpbmcgdG8gdGhlXG5cCitJbnN0YWxsYWJsZSBTb2Z0d2FyZSB0byBiZSBwcmVzZW50ZWQgdG8sIGFuZCBhY2NlcHRlZCBieSwgdGhlIHVzZXJzIG9mIHRoZSBQcm92aXNpb25pbmcgVGVjaG5vbG9neVxuXAoraW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBTcGVjaWZpY2F0aW9uLiBCeSB1c2luZyBQcm92aXNpb25pbmcgVGVjaG5vbG9neSBpbiBzdWNoIGEgbWFubmVyIGFuZFxuXAorbWFraW5nIGl0IGF2YWlsYWJsZSBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIFNwZWNpZmljYXRpb24sIHlvdSBmdXJ0aGVyIGFja25vd2xlZGdlIHlvdXJcblwKK2FncmVlbWVudCB0bywgYW5kIHRoZSBhY3F1aXNpdGlvbiBvZiBhbGwgbmVjZXNzYXJ5IHJpZ2h0cyB0byBwZXJtaXQgdGhlIGZvbGxvd2luZzpcblwKK1xuXAorICAgICAgIDEuIEEgc2VyaWVzIG9mIGFjdGlvbnMgbWF5IG9jY3VyICgiUHJvdmlzaW9uaW5nIFByb2Nlc3MiKSBpbiB3aGljaCBhIHVzZXIgbWF5IGV4ZWN1dGVcblwKKyAgICAgICAgICB0aGUgUHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kgb24gYSBtYWNoaW5lICgiVGFyZ2V0IE1hY2hpbmUiKSB3aXRoIHRoZSBpbnRlbnQgb2YgaW5zdGFsbGluZyxcblwKKyAgICAgICAgICBleHRlbmRpbmcgb3IgdXBkYXRpbmcgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgYW4gRWNsaXBzZS1iYXNlZCBwcm9kdWN0LlxuXAorICAgICAgIDIuIER1cmluZyB0aGUgUHJvdmlzaW9uaW5nIFByb2Nlc3MsIHRoZSBQcm92aXNpb25pbmcgVGVjaG5vbG9neSBtYXkgY2F1c2UgdGhpcmQgcGFydHlcblwKKyAgICAgICAgICBJbnN0YWxsYWJsZSBTb2Z0d2FyZSBvciBhIHBvcnRpb24gdGhlcmVvZiB0byBiZSBhY2Nlc3NlZCBhbmQgY29waWVkIHRvIHRoZSBUYXJnZXQgTWFjaGluZS5cblwKKyAgICAgICAzLiBQdXJzdWFudCB0byB0aGUgU3BlY2lmaWNhdGlvbiwgeW91IHdpbGwgcHJvdmlkZSB0byB0aGUgdXNlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgdGhhdFxuXAorICAgICAgICAgIGdvdmVybiB0aGUgdXNlIG9mIHRoZSBJbnN0YWxsYWJsZSBTb2Z0d2FyZSAoIkluc3RhbGxhYmxlIFNvZnR3YXJlIEFncmVlbWVudCIpIGFuZCBzdWNoXG5cCisgICAgICAgICAgSW5zdGFsbGFibGUgU29mdHdhcmUgQWdyZWVtZW50IHNoYWxsIGJlIGFjY2Vzc2VkIGZyb20gdGhlIFRhcmdldCBNYWNoaW5lIGluIGFjY29yZGFuY2VcblwKKyAgICAgICAgICB3aXRoIHRoZSBTcGVjaWZpY2F0aW9uLiBTdWNoIEluc3RhbGxhYmxlIFNvZnR3YXJlIEFncmVlbWVudCBtdXN0IGluZm9ybSB0aGUgdXNlciBvZiB0aGVcblwKKyAgICAgICAgICB0ZXJtcyBhbmQgY29uZGl0aW9ucyB0aGF0IGdvdmVybiB0aGUgSW5zdGFsbGFibGUgU29mdHdhcmUgYW5kIG11c3Qgc29saWNpdCBhY2NlcHRhbmNlIGJ5XG5cCisgICAgICAgICAgdGhlIGVuZCB1c2VyIGluIHRoZSBtYW5uZXIgcHJlc2NyaWJlZCBpbiBzdWNoIEluc3RhbGxhYmxlIFNvZnR3YXJlIEFncmVlbWVudC4gVXBvbiBzdWNoXG5cCisgICAgICAgICAgaW5kaWNhdGlvbiBvZiBhZ3JlZW1lbnQgYnkgdGhlIHVzZXIsIHRoZSBwcm92aXNpb25pbmcgVGVjaG5vbG9neSB3aWxsIGNvbXBsZXRlIGluc3RhbGxhdGlvblxuXAorICAgICAgICAgIG9mIHRoZSBJbnN0YWxsYWJsZSBTb2Z0d2FyZS5cblwKK1xuXAorQ3J5cHRvZ3JhcGh5XG5cCitcblwKK0NvbnRlbnQgbWF5IGNvbnRhaW4gZW5jcnlwdGlvbiBzb2Z0d2FyZS4gVGhlIGNvdW50cnkgaW4gd2hpY2ggeW91IGFyZVxuXAorY3VycmVudGx5IG1heSBoYXZlIHJlc3RyaWN0aW9ucyBvbiB0aGUgaW1wb3J0LCBwb3NzZXNzaW9uLCBhbmQgdXNlLFxuXAorYW5kL29yIHJlLWV4cG9ydCB0byBhbm90aGVyIGNvdW50cnksIG9mIGVuY3J5cHRpb24gc29mdHdhcmUuIEJFRk9SRVxuXAordXNpbmcgYW55IGVuY3J5cHRpb24gc29mdHdhcmUsIHBsZWFzZSBjaGVjayB0aGUgY291bnRyeSdzIGxhd3MsXG5cCityZWd1bGF0aW9ucyBhbmQgcG9saWNpZXMgY29uY2VybmluZyB0aGUgaW1wb3J0LCBwb3NzZXNzaW9uLCBvciB1c2UsIGFuZFxuXAorcmUtZXhwb3J0IG9mIGVuY3J5cHRpb24gc29mdHdhcmUsIHRvIHNlZSBpZiB0aGlzIGlzIHBlcm1pdHRlZC5cblwKK1xuXAorSmF2YSBhbmQgYWxsIEphdmEtYmFzZWQgdHJhZGVtYXJrcyBhcmUgdHJhZGVtYXJrcyBvZiBPcmFjbGUgQ29ycG9yYXRpb24gaW4gdGhlIFVuaXRlZCBTdGF0ZXMsIG90aGVyIGNvdW50cmllcywgb3IgYm90aC5cbgorIyMjIyMjIyMjIyMgZW5kIG9mIGxpY2Vuc2UgcHJvcGVydHkgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmNvcmUvZmVhdHVyZS54bWwgYi9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uY29yZS9mZWF0dXJlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41ZWJjZGVjCi0tLSAvZGV2L251bGwKKysrIGIvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmNvcmUvZmVhdHVyZS54bWwKQEAgLTAsMCArMSw0NSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxmZWF0dXJlCisgICAgICBpZD0ib3JnLmVjbGlwc2UudmlyZ28uY29yZSIKKyAgICAgIGxhYmVsPSIlZmVhdHVyZU5hbWUiCisgICAgICB2ZXJzaW9uPSJATkFOTy5WRVJTSU9OQCIKKyAgICAgIHByb3ZpZGVyLW5hbWU9IiVwcm92aWRlck5hbWUiCisgICAgICBpbWFnZT0iZWNsaXBzZV91cGRhdGVfMTIwLmpwZyI+CisKKyAgIDxkZXNjcmlwdGlvbiB1cmw9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdmlyZ28vIj4KKyAgICAgICVkZXNjcmlwdGlvbgorICAgPC9kZXNjcmlwdGlvbj4KKworICAgPGNvcHlyaWdodCB1cmw9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdmlyZ28vIj4KKyAgICAgICVjb3B5cmlnaHQKKyAgIDwvY29weXJpZ2h0PgorCisgICA8bGljZW5zZSB1cmw9IiVsaWNlbnNlVVJMIj4KKyAgICAgICVsaWNlbnNlCisgICA8L2xpY2Vuc2U+CisKKyAgIDxyZXF1aXJlcz4KKyAgICAgIDxpbXBvcnQgZmVhdHVyZT0ib3JnLmVjbGlwc2UudmlyZ28uZHMiIHZlcnNpb249IjAuMC4wIi8+CisgICA8L3JlcXVpcmVzPgorCisgICA8cGx1Z2luCisgICAgICAgICBpZD0ib3JnLmVjbGlwc2UudmlyZ28ubmFuby5jb3JlIgorICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKKyAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKKyAgICAgICAgIHZlcnNpb249IkBOQU5PLlZFUlNJT05AIgorICAgICAgICAgdW5wYWNrPSJmYWxzZSIKKyAgICAgICAgIGF1dG9zdGFydD0idHJ1ZSIvPgorICAgIDxwbHVnaW4KKyAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS52aXJnby5uYW5vLmRlcGxveWVyLmFwaSIKKyAgICAgICAgIGRvd25sb2FkLXNpemU9IjAiCisgICAgICAgICBpbnN0YWxsLXNpemU9IjAiCisgICAgICAgICB2ZXJzaW9uPSJATkFOTy5WRVJTSU9OQCIKKyAgICAgICAgIHVucGFjaz0iZmFsc2UiLz4KKyAgICA8cGx1Z2luCisgICAgICAgICBpZD0ib3JnLmVjbGlwc2UudmlyZ28ubmFuby5kZXBsb3llci5ob3QiCisgICAgICAgICBkb3dubG9hZC1zaXplPSIwIgorICAgICAgICAgaW5zdGFsbC1zaXplPSIwIgorICAgICAgICAgdmVyc2lvbj0iQE5BTk8uVkVSU0lPTkAiCisgICAgICAgICB1bnBhY2s9ImZhbHNlIi8+CisKKzwvZmVhdHVyZT4KZGlmZiAtLWdpdCBhL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5jb3JlL2xpY2Vuc2UuaHRtbCBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5jb3JlL2xpY2Vuc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mMTljNDgzCi0tLSAvZGV2L251bGwKKysrIGIvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmNvcmUvbGljZW5zZS5odG1sCkBAIC0wLDAgKzEsMTA4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJJU08tODg1OS0xIiA/PgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIiAvPgorPHRpdGxlPkVjbGlwc2UgRm91bmRhdGlvbiBTb2Z0d2FyZSBVc2VyIEFncmVlbWVudDwvdGl0bGU+Cis8L2hlYWQ+CisKKzxib2R5IGxhbmc9IkVOLVVTIj4KKzxoMj5FY2xpcHNlIEZvdW5kYXRpb24gU29mdHdhcmUgVXNlciBBZ3JlZW1lbnQ8L2gyPgorPHA+RmVicnVhcnkgMSwgMjAxMTwvcD4KKworPGgzPlVzYWdlIE9mIENvbnRlbnQ8L2gzPgorCis8cD5USEUgRUNMSVBTRSBGT1VOREFUSU9OIE1BS0VTIEFWQUlMQUJMRSBTT0ZUV0FSRSwgRE9DVU1FTlRBVElPTiwgSU5GT1JNQVRJT04gQU5EL09SIE9USEVSIE1BVEVSSUFMUyBGT1IgT1BFTiBTT1VSQ0UgUFJPSkVDVFMKKyAgIChDT0xMRUNUSVZFTFkgJnF1b3Q7Q09OVEVOVCZxdW90OykuICBVU0UgT0YgVEhFIENPTlRFTlQgSVMgR09WRVJORUQgQlkgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIFRISVMgQUdSRUVNRU5UIEFORC9PUiBUSEUgVEVSTVMgQU5ECisgICBDT05ESVRJT05TIE9GIExJQ0VOU0UgQUdSRUVNRU5UUyBPUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLiAgQlkgVVNJTkcgVEhFIENPTlRFTlQsIFlPVSBBR1JFRSBUSEFUIFlPVVIgVVNFCisgICBPRiBUSEUgQ09OVEVOVCBJUyBHT1ZFUk5FRCBCWSBUSElTIEFHUkVFTUVOVCBBTkQvT1IgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIEFOWSBBUFBMSUNBQkxFIExJQ0VOU0UgQUdSRUVNRU5UUyBPUgorICAgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVy4gIElGIFlPVSBETyBOT1QgQUdSRUUgVE8gVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIFRISVMgQUdSRUVNRU5UIEFORCBUSEUgVEVSTVMgQU5ECisgICBDT05ESVRJT05TIE9GIEFOWSBBUFBMSUNBQkxFIExJQ0VOU0UgQUdSRUVNRU5UUyBPUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLCBUSEVOIFlPVSBNQVkgTk9UIFVTRSBUSEUgQ09OVEVOVC48L3A+CisKKzxoMz5BcHBsaWNhYmxlIExpY2Vuc2VzPC9oMz4KKworPHA+VW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQsIGFsbCBDb250ZW50IG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMAorICAgKCZxdW90O0VQTCZxdW90OykuICBBIGNvcHkgb2YgdGhlIEVQTCBpcyBwcm92aWRlZCB3aXRoIHRoaXMgQ29udGVudCBhbmQgaXMgYWxzbyBhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sPC9hPi4KKyAgIEZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC48L3A+CisKKzxwPkNvbnRlbnQgaW5jbHVkZXMsIGJ1dCBpcyBub3QgbGltaXRlZCB0bywgc291cmNlIGNvZGUsIG9iamVjdCBjb2RlLCBkb2N1bWVudGF0aW9uIGFuZCBvdGhlciBmaWxlcyBtYWludGFpbmVkIGluIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gc291cmNlIGNvZGUKKyAgIHJlcG9zaXRvcnkgKCZxdW90O1JlcG9zaXRvcnkmcXVvdDspIGluIHNvZnR3YXJlIG1vZHVsZXMgKCZxdW90O01vZHVsZXMmcXVvdDspIGFuZCBtYWRlIGF2YWlsYWJsZSBhcyBkb3dubG9hZGFibGUgYXJjaGl2ZXMgKCZxdW90O0Rvd25sb2FkcyZxdW90OykuPC9wPgorCis8dWw+CisgICAgICAgPGxpPkNvbnRlbnQgbWF5IGJlIHN0cnVjdHVyZWQgYW5kIHBhY2thZ2VkIGludG8gbW9kdWxlcyB0byBmYWNpbGl0YXRlIGRlbGl2ZXJpbmcsIGV4dGVuZGluZywgYW5kIHVwZ3JhZGluZyB0aGUgQ29udGVudC4gIFR5cGljYWwgbW9kdWxlcyBtYXkgaW5jbHVkZSBwbHVnLWlucyAoJnF1b3Q7UGx1Zy1pbnMmcXVvdDspLCBwbHVnLWluIGZyYWdtZW50cyAoJnF1b3Q7RnJhZ21lbnRzJnF1b3Q7KSwgYW5kIGZlYXR1cmVzICgmcXVvdDtGZWF0dXJlcyZxdW90OykuPC9saT4KKyAgICAgICA8bGk+RWFjaCBQbHVnLWluIG9yIEZyYWdtZW50IG1heSBiZSBwYWNrYWdlZCBhcyBhIHN1Yi1kaXJlY3Rvcnkgb3IgSkFSIChKYXZhJnRyYWRlOyBBUmNoaXZlKSBpbiBhIGRpcmVjdG9yeSBuYW1lZCAmcXVvdDtwbHVnaW5zJnF1b3Q7LjwvbGk+CisgICAgICAgPGxpPkEgRmVhdHVyZSBpcyBhIGJ1bmRsZSBvZiBvbmUgb3IgbW9yZSBQbHVnLWlucyBhbmQvb3IgRnJhZ21lbnRzIGFuZCBhc3NvY2lhdGVkIG1hdGVyaWFsLiAgRWFjaCBGZWF0dXJlIG1heSBiZSBwYWNrYWdlZCBhcyBhIHN1Yi1kaXJlY3RvcnkgaW4gYSBkaXJlY3RvcnkgbmFtZWQgJnF1b3Q7ZmVhdHVyZXMmcXVvdDsuICBXaXRoaW4gYSBGZWF0dXJlLCBmaWxlcyBuYW1lZCAmcXVvdDtmZWF0dXJlLnhtbCZxdW90OyBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2YgdGhlIFBsdWctaW5zCisgICAgICBhbmQvb3IgRnJhZ21lbnRzIGFzc29jaWF0ZWQgd2l0aCB0aGF0IEZlYXR1cmUuPC9saT4KKyAgICAgICA8bGk+RmVhdHVyZXMgbWF5IGFsc28gaW5jbHVkZSBvdGhlciBGZWF0dXJlcyAoJnF1b3Q7SW5jbHVkZWQgRmVhdHVyZXMmcXVvdDspLiBXaXRoaW4gYSBGZWF0dXJlLCBmaWxlcyBuYW1lZCAmcXVvdDtmZWF0dXJlLnhtbCZxdW90OyBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2YgSW5jbHVkZWQgRmVhdHVyZXMuPC9saT4KKzwvdWw+CisKKzxwPlRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgUGx1Zy1pbnMgYW5kIEZyYWdtZW50cyBzaG91bGQgYmUgY29udGFpbmVkIGluIGZpbGVzIG5hbWVkICZxdW90O2Fib3V0Lmh0bWwmcXVvdDsgKCZxdW90O0Fib3V0cyZxdW90OykuIFRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgRmVhdHVyZXMgYW5kCitJbmNsdWRlZCBGZWF0dXJlcyBzaG91bGQgYmUgY29udGFpbmVkIGluIGZpbGVzIG5hbWVkICZxdW90O2xpY2Vuc2UuaHRtbCZxdW90OyAoJnF1b3Q7RmVhdHVyZSBMaWNlbnNlcyZxdW90OykuICBBYm91dHMgYW5kIEZlYXR1cmUgTGljZW5zZXMgbWF5IGJlIGxvY2F0ZWQgaW4gYW55IGRpcmVjdG9yeSBvZiBhIERvd25sb2FkIG9yIE1vZHVsZQoraW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG8gdGhlIGZvbGxvd2luZyBsb2NhdGlvbnM6PC9wPgorCis8dWw+CisgICAgICAgPGxpPlRoZSB0b3AtbGV2ZWwgKHJvb3QpIGRpcmVjdG9yeTwvbGk+CisgICAgICAgPGxpPlBsdWctaW4gYW5kIEZyYWdtZW50IGRpcmVjdG9yaWVzPC9saT4KKyAgICAgICA8bGk+SW5zaWRlIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgcGFja2FnZWQgYXMgSkFSczwvbGk+CisgICAgICAgPGxpPlN1Yi1kaXJlY3RvcmllcyBvZiB0aGUgZGlyZWN0b3J5IG5hbWVkICZxdW90O3NyYyZxdW90OyBvZiBjZXJ0YWluIFBsdWctaW5zPC9saT4KKyAgICAgICA8bGk+RmVhdHVyZSBkaXJlY3RvcmllczwvbGk+Cis8L3VsPgorCis8cD5Ob3RlOiBpZiBhIEZlYXR1cmUgbWFkZSBhdmFpbGFibGUgYnkgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpcyBpbnN0YWxsZWQgdXNpbmcgdGhlIFByb3Zpc2lvbmluZyBUZWNobm9sb2d5IChhcyBkZWZpbmVkIGJlbG93KSwgeW91IG11c3QgYWdyZWUgdG8gYSBsaWNlbnNlICgmcXVvdDtGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlJnF1b3Q7KSBkdXJpbmcgdGhlCitpbnN0YWxsYXRpb24gcHJvY2Vzcy4gIElmIHRoZSBGZWF0dXJlIGNvbnRhaW5zIEluY2x1ZGVkIEZlYXR1cmVzLCB0aGUgRmVhdHVyZSBVcGRhdGUgTGljZW5zZSBzaG91bGQgZWl0aGVyIHByb3ZpZGUgeW91IHdpdGggdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyB0aGUgSW5jbHVkZWQgRmVhdHVyZXMgb3IKK2luZm9ybSB5b3Ugd2hlcmUgeW91IGNhbiBsb2NhdGUgdGhlbS4gIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIG1heSBiZSBmb3VuZCBpbiB0aGUgJnF1b3Q7bGljZW5zZSZxdW90OyBwcm9wZXJ0eSBvZiBmaWxlcyBuYW1lZCAmcXVvdDtmZWF0dXJlLnByb3BlcnRpZXMmcXVvdDsgZm91bmQgd2l0aGluIGEgRmVhdHVyZS4KK1N1Y2ggQWJvdXRzLCBGZWF0dXJlIExpY2Vuc2VzLCBhbmQgRmVhdHVyZSBVcGRhdGUgTGljZW5zZXMgY29udGFpbiB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgKG9yIHJlZmVyZW5jZXMgdG8gc3VjaCB0ZXJtcyBhbmQgY29uZGl0aW9ucykgdGhhdCBnb3Zlcm4geW91ciB1c2Ugb2YgdGhlIGFzc29jaWF0ZWQgQ29udGVudCBpbgordGhhdCBkaXJlY3RvcnkuPC9wPgorCis8cD5USEUgQUJPVVRTLCBGRUFUVVJFIExJQ0VOU0VTLCBBTkQgRkVBVFVSRSBVUERBVEUgTElDRU5TRVMgTUFZIFJFRkVSIFRPIFRIRSBFUEwgT1IgT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTLCBOT1RJQ0VTIE9SIFRFUk1TIEFORCBDT05ESVRJT05TLiAgU09NRSBPRiBUSEVTRQorT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTIE1BWSBJTkNMVURFIChCVVQgQVJFIE5PVCBMSU1JVEVEIFRPKTo8L3A+CisKKzx1bD4KKyAgICAgICA8bGk+RWNsaXBzZSBEaXN0cmlidXRpb24gTGljZW5zZSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGljZW5zZXMvZWRsLXYxMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xpY2Vuc2VzL2VkbC12MS4wLmh0bWw8L2E+KTwvbGk+CisgICAgICAgPGxpPkNvbW1vbiBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2NwbC12MTAuaHRtbDwvYT4pPC9saT4KKyAgICAgICA8bGk+QXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UgMS4xIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UiPmh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFPC9hPik8L2xpPgorICAgICAgIDxsaT5BcGFjaGUgU29mdHdhcmUgTGljZW5zZSAyLjAgKGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAiPmh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMDwvYT4pPC9saT4KKyAgICAgICA8bGk+TWV0cm8gTGluayBQdWJsaWMgTGljZW5zZSAxLjAwIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29wZW5tb3RpZi9zdXBwb3J0ZXJzL21ldHJvbGluay9saWNlbnNlLmh0bWwiPmh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vcGVubW90aWYvc3VwcG9ydGVycy9tZXRyb2xpbmsvbGljZW5zZS5odG1sPC9hPik8L2xpPgorICAgICAgIDxsaT5Nb3ppbGxhIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4xIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvTVBMLTEuMS5odG1sIj5odHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC9NUEwtMS4xLmh0bWw8L2E+KTwvbGk+Cis8L3VsPgorCis8cD5JVCBJUyBZT1VSIE9CTElHQVRJT04gVE8gUkVBRCBBTkQgQUNDRVBUIEFMTCBTVUNIIFRFUk1TIEFORCBDT05ESVRJT05TIFBSSU9SIFRPIFVTRSBPRiBUSEUgQ09OVEVOVC4gIElmIG5vIEFib3V0LCBGZWF0dXJlIExpY2Vuc2UsIG9yIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2UgaXMgcHJvdmlkZWQsIHBsZWFzZQorY29udGFjdCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIHRvIGRldGVybWluZSB3aGF0IHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybiB0aGF0IHBhcnRpY3VsYXIgQ29udGVudC48L3A+CisKKworPGgzPlVzZSBvZiBQcm92aXNpb25pbmcgVGVjaG5vbG9neTwvaDM+CisKKzxwPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIHByb3Zpc2lvbmluZyBzb2Z0d2FyZSwgZXhhbXBsZXMgb2Ygd2hpY2ggaW5jbHVkZSwgYnV0IGFyZSBub3QgbGltaXRlZCB0bywgcDIgYW5kIHRoZSBFY2xpcHNlCisgICBVcGRhdGUgTWFuYWdlciAoJnF1b3Q7UHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kmcXVvdDspIGZvciB0aGUgcHVycG9zZSBvZiBhbGxvd2luZyB1c2VycyB0byBpbnN0YWxsIHNvZnR3YXJlLCBkb2N1bWVudGF0aW9uLCBpbmZvcm1hdGlvbiBhbmQvb3IKKyAgIG90aGVyIG1hdGVyaWFscyAoY29sbGVjdGl2ZWx5ICZxdW90O0luc3RhbGxhYmxlIFNvZnR3YXJlJnF1b3Q7KS4gVGhpcyBjYXBhYmlsaXR5IGlzIHByb3ZpZGVkIHdpdGggdGhlIGludGVudCBvZiBhbGxvd2luZyBzdWNoIHVzZXJzIHRvCisgICBpbnN0YWxsLCBleHRlbmQgYW5kIHVwZGF0ZSBFY2xpcHNlLWJhc2VkIHByb2R1Y3RzLiBJbmZvcm1hdGlvbiBhYm91dCBwYWNrYWdpbmcgSW5zdGFsbGFibGUgU29mdHdhcmUgaXMgYXZhaWxhYmxlIGF0IDxhCisgICAgICAgaHJlZj0iaHR0cDovL2VjbGlwc2Uub3JnL2VxdWlub3gvcDIvcmVwb3NpdG9yeV9wYWNrYWdpbmcuaHRtbCI+aHR0cDovL2VjbGlwc2Uub3JnL2VxdWlub3gvcDIvcmVwb3NpdG9yeV9wYWNrYWdpbmcuaHRtbDwvYT4KKyAgICgmcXVvdDtTcGVjaWZpY2F0aW9uJnF1b3Q7KS48L3A+CisKKzxwPllvdSBtYXkgdXNlIFByb3Zpc2lvbmluZyBUZWNobm9sb2d5IHRvIGFsbG93IG90aGVyIHBhcnRpZXMgdG8gaW5zdGFsbCBJbnN0YWxsYWJsZSBTb2Z0d2FyZS4gWW91IHNoYWxsIGJlIHJlc3BvbnNpYmxlIGZvciBlbmFibGluZyB0aGUKKyAgIGFwcGxpY2FibGUgbGljZW5zZSBhZ3JlZW1lbnRzIHJlbGF0aW5nIHRvIHRoZSBJbnN0YWxsYWJsZSBTb2Z0d2FyZSB0byBiZSBwcmVzZW50ZWQgdG8sIGFuZCBhY2NlcHRlZCBieSwgdGhlIHVzZXJzIG9mIHRoZSBQcm92aXNpb25pbmcgVGVjaG5vbG9neQorICAgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBTcGVjaWZpY2F0aW9uLiBCeSB1c2luZyBQcm92aXNpb25pbmcgVGVjaG5vbG9neSBpbiBzdWNoIGEgbWFubmVyIGFuZCBtYWtpbmcgaXQgYXZhaWxhYmxlIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUKKyAgIFNwZWNpZmljYXRpb24sIHlvdSBmdXJ0aGVyIGFja25vd2xlZGdlIHlvdXIgYWdyZWVtZW50IHRvLCBhbmQgdGhlIGFjcXVpc2l0aW9uIG9mIGFsbCBuZWNlc3NhcnkgcmlnaHRzIHRvIHBlcm1pdCB0aGUgZm9sbG93aW5nOjwvcD4KKworPG9sPgorICAgICAgIDxsaT5BIHNlcmllcyBvZiBhY3Rpb25zIG1heSBvY2N1ciAoJnF1b3Q7UHJvdmlzaW9uaW5nIFByb2Nlc3MmcXVvdDspIGluIHdoaWNoIGEgdXNlciBtYXkgZXhlY3V0ZSB0aGUgUHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kKKyAgICAgICBvbiBhIG1hY2hpbmUgKCZxdW90O1RhcmdldCBNYWNoaW5lJnF1b3Q7KSB3aXRoIHRoZSBpbnRlbnQgb2YgaW5zdGFsbGluZywgZXh0ZW5kaW5nIG9yIHVwZGF0aW5nIHRoZSBmdW5jdGlvbmFsaXR5IG9mIGFuIEVjbGlwc2UtYmFzZWQKKyAgICAgICBwcm9kdWN0LjwvbGk+CisgICAgICAgPGxpPkR1cmluZyB0aGUgUHJvdmlzaW9uaW5nIFByb2Nlc3MsIHRoZSBQcm92aXNpb25pbmcgVGVjaG5vbG9neSBtYXkgY2F1c2UgdGhpcmQgcGFydHkgSW5zdGFsbGFibGUgU29mdHdhcmUgb3IgYSBwb3J0aW9uIHRoZXJlb2YgdG8gYmUKKyAgICAgICBhY2Nlc3NlZCBhbmQgY29waWVkIHRvIHRoZSBUYXJnZXQgTWFjaGluZS48L2xpPgorICAgICAgIDxsaT5QdXJzdWFudCB0byB0aGUgU3BlY2lmaWNhdGlvbiwgeW91IHdpbGwgcHJvdmlkZSB0byB0aGUgdXNlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgdGhhdCBnb3Zlcm4gdGhlIHVzZSBvZiB0aGUgSW5zdGFsbGFibGUKKyAgICAgICBTb2Z0d2FyZSAoJnF1b3Q7SW5zdGFsbGFibGUgU29mdHdhcmUgQWdyZWVtZW50JnF1b3Q7KSBhbmQgc3VjaCBJbnN0YWxsYWJsZSBTb2Z0d2FyZSBBZ3JlZW1lbnQgc2hhbGwgYmUgYWNjZXNzZWQgZnJvbSB0aGUgVGFyZ2V0CisgICAgICAgTWFjaGluZSBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIFNwZWNpZmljYXRpb24uIFN1Y2ggSW5zdGFsbGFibGUgU29mdHdhcmUgQWdyZWVtZW50IG11c3QgaW5mb3JtIHRoZSB1c2VyIG9mIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyB0aGF0IGdvdmVybgorICAgICAgIHRoZSBJbnN0YWxsYWJsZSBTb2Z0d2FyZSBhbmQgbXVzdCBzb2xpY2l0IGFjY2VwdGFuY2UgYnkgdGhlIGVuZCB1c2VyIGluIHRoZSBtYW5uZXIgcHJlc2NyaWJlZCBpbiBzdWNoIEluc3RhbGxhYmxlIFNvZnR3YXJlIEFncmVlbWVudC4gVXBvbiBzdWNoCisgICAgICAgaW5kaWNhdGlvbiBvZiBhZ3JlZW1lbnQgYnkgdGhlIHVzZXIsIHRoZSBwcm92aXNpb25pbmcgVGVjaG5vbG9neSB3aWxsIGNvbXBsZXRlIGluc3RhbGxhdGlvbiBvZiB0aGUgSW5zdGFsbGFibGUgU29mdHdhcmUuPC9saT4KKzwvb2w+CisKKzxoMz5DcnlwdG9ncmFwaHk8L2gzPgorCis8cD5Db250ZW50IG1heSBjb250YWluIGVuY3J5cHRpb24gc29mdHdhcmUuIFRoZSBjb3VudHJ5IGluIHdoaWNoIHlvdSBhcmUgY3VycmVudGx5IG1heSBoYXZlIHJlc3RyaWN0aW9ucyBvbiB0aGUgaW1wb3J0LCBwb3NzZXNzaW9uLCBhbmQgdXNlLCBhbmQvb3IgcmUtZXhwb3J0IHRvCisgICBhbm90aGVyIGNvdW50cnksIG9mIGVuY3J5cHRpb24gc29mdHdhcmUuIEJFRk9SRSB1c2luZyBhbnkgZW5jcnlwdGlvbiBzb2Z0d2FyZSwgcGxlYXNlIGNoZWNrIHRoZSBjb3VudHJ5J3MgbGF3cywgcmVndWxhdGlvbnMgYW5kIHBvbGljaWVzIGNvbmNlcm5pbmcgdGhlIGltcG9ydCwKKyAgIHBvc3Nlc3Npb24sIG9yIHVzZSwgYW5kIHJlLWV4cG9ydCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLCB0byBzZWUgaWYgdGhpcyBpcyBwZXJtaXR0ZWQuPC9wPgorCis8cD48c21hbGw+SmF2YSBhbmQgYWxsIEphdmEtYmFzZWQgdHJhZGVtYXJrcyBhcmUgdHJhZGVtYXJrcyBvZiBPcmFjbGUgQ29ycG9yYXRpb24gaW4gdGhlIFVuaXRlZCBTdGF0ZXMsIG90aGVyIGNvdW50cmllcywgb3IgYm90aC48L3NtYWxsPjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2NyaXB0cy9idWlsZC5wcm9wZXJ0aWVzIGIvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmRzL2J1aWxkLnByb3BlcnRpZXMKc2ltaWxhcml0eSBpbmRleCA2MCUKcmVuYW1lIGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zY3JpcHRzL2J1aWxkLnByb3BlcnRpZXMKcmVuYW1lIHRvIGpldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5kcy9idWlsZC5wcm9wZXJ0aWVzCmluZGV4IGRiODBhZGQuLmExM2UxOGIgMTAwNjQ0Ci0tLSBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2NyaXB0cy9idWlsZC5wcm9wZXJ0aWVzCisrKyBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5kcy9idWlsZC5wcm9wZXJ0aWVzCkBAIC0xLDQgKzEsNSBAQAogYmluLmluY2x1ZGVzID0gZmVhdHVyZS54bWwsXAogICAgICAgICAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzLFwKICAgICAgICAgICAgICAgIGVwbC12MTAuaHRtbCxcCi0gICAgICAgICAgICAgICBlY2xpcHNlX3VwZGF0ZV8xMjAuanBnCisgICAgICAgICAgICAgICBlY2xpcHNlX3VwZGF0ZV8xMjAuanBnLFwKKyAgICAgICAgICAgICAgIHAyLmluZgpkaWZmIC0tZ2l0IGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5yZXNvdXJjZXMvZWNsaXBzZV91cGRhdGVfMTIwLmpwZyBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5kcy9lY2xpcHNlX3VwZGF0ZV8xMjAuanBnCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpjb3B5IGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5yZXNvdXJjZXMvZWNsaXBzZV91cGRhdGVfMTIwLmpwZwpjb3B5IHRvIGpldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5kcy9lY2xpcHNlX3VwZGF0ZV8xMjAuanBnCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkucmVzb3VyY2VzL2VwbC12MTAuaHRtbCBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5kcy9lcGwtdjEwLmh0bWwKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBidWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnJlc291cmNlcy9lcGwtdjEwLmh0bWwKY29weSB0byBqZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uZHMvZXBsLXYxMC5odG1sCmRpZmYgLS1naXQgYS9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uZHMvZmVhdHVyZS5wcm9wZXJ0aWVzIGIvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmRzL2ZlYXR1cmUucHJvcGVydGllcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTlkYjM1Ci0tLSAvZGV2L251bGwKKysrIGIvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmRzL2ZlYXR1cmUucHJvcGVydGllcwpAQCAtMCwwICsxLDE4MCBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBDb3B5cmlnaHQgKGMpIDIwMTEgU0FQIEFHCisjCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKKyMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisjIGFuZCBBcGFjaGUgTGljZW5zZSB2Mi4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLgorIyBUaGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBpcyBhdmFpbGFibGUgYXQKKyMgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorIyBhbmQgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgaXMgYXZhaWxhYmxlIGF0CisjICAgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hcGFjaGUyLjAucGhwLgorIyBZb3UgbWF5IGVsZWN0IHRvIHJlZGlzdHJpYnV0ZSB0aGlzIGNvZGUgdW5kZXIgZWl0aGVyIG9mIHRoZXNlIGxpY2Vuc2VzLgorIworIyBDb250cmlidXRvcnM6CisjICAgQm9yaXNsYXYgS2FwdWthcmFub3YgLSBpbml0aWFsIGNvbnRyaWJ1dGlvbgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBmZWF0dXJlLnByb3BlcnRpZXMKKyMgY29udGFpbnMgZXh0ZXJuYWxpemVkIHN0cmluZ3MgZm9yIGZlYXR1cmUueG1sCisjICIlZm9vIiBpbiBmZWF0dXJlLnhtbCBjb3JyZXNwb25kcyB0byB0aGUga2V5ICJmb28iIGluIHRoaXMgZmlsZQorIyBqYXZhLmlvLlByb3BlcnRpZXMgZmlsZSAoSVNPIDg4NTktMSB3aXRoICJcIiBlc2NhcGVzKQorIyBUaGlzIGZpbGUgc2hvdWxkIGJlIHRyYW5zbGF0ZWQuCisKKyMgImZlYXR1cmVOYW1lIiBwcm9wZXJ0eSAtIG5hbWUgb2YgdGhlIGZlYXR1cmUKK2ZlYXR1cmVOYW1lPUVjbGlwc2UgRXF1aW5veCBEZWNsYXJhdGl2ZSBTZXJ2aWNlcyBGZWF0dXJlCisKKyMgInByb3ZpZGVyTmFtZSIgcHJvcGVydHkgLSBuYW1lIG9mIHRoZSBjb21wYW55IHRoYXQgcHJvdmlkZXMgdGhlIGZlYXR1cmUKK3Byb3ZpZGVyTmFtZT1FY2xpcHNlLm9yZworCisjICJ1cGRhdGVTaXRlTmFtZSIgcHJvcGVydHkgLSBsYWJlbCBmb3IgdGhlIHVwZGF0ZSBzaXRlCisKKyMgImRlc2NyaXB0aW9uIiBwcm9wZXJ0eSAtIGRlc2NyaXB0aW9uIG9mIHRoZSBmZWF0dXJlCitkZXNjcmlwdGlvbj1UaGlzIGZlYXR1cmUgcHJvdmlkZXMgdGhlIEVxdWlub3ggRGVjbGFyYXRpdmUgU2VydmljZXMgZmVhdHVyZS5cblwKKworIyAiY29weXJpZ2h0IiBwcm9wZXJ0eSAtIHRleHQgb2YgdGhlICJGZWF0dXJlIFVwZGF0ZSBDb3B5cmlnaHQiCitjb3B5cmlnaHQ9XAorQ29weXJpZ2h0IChjKSAyMDA5LCAyMDEwLCAyMDExIFZNd2FyZSBJbmMuIGFuZCBvdGhlcnNcblwKK1xuXAorQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFsc1xuXAorYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wXG5cCithbmQgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi5cblwKK1RoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIGlzIGF2YWlsYWJsZSBhdFxuXAoraHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWxcblwKK2FuZCB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCBpcyBhdmFpbGFibGUgYXRcblwKK2h0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYXBhY2hlMi4wLnBocC5cblwKK1lvdSBtYXkgZWxlY3QgdG8gcmVkaXN0cmlidXRlIHRoaXMgY29kZSB1bmRlciBlaXRoZXIgb2YgdGhlc2VcblwKK2xpY2Vuc2VzLlxuXAorXG5cCitDb250cmlidXRvcnM6XG5cCitWTXdhcmUgSW5jLiAtIGluaXRpYWwgY29udHJpYnV0aW9uXG5cCisKKyMgImxpY2Vuc2VVUkwiIHByb3BlcnR5IC0gVVJMIG9mIHRoZSAiRmVhdHVyZSBMaWNlbnNlIgorIyBkbyBub3QgdHJhbnNsYXRlIHZhbHVlIC0ganVzdCBjaGFuZ2UgdG8gcG9pbnQgdG8gYSBsb2NhbGUtc3BlY2lmaWMgSFRNTCBwYWdlCitsaWNlbnNlVVJMPWxpY2Vuc2UuaHRtbAorCisjICJsaWNlbnNlIiBwcm9wZXJ0eSAtIHRleHQgb2YgdGhlICJGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlIgorIyBzaG91bGQgYmUgcGxhaW4gdGV4dCB2ZXJzaW9uIG9mIGxpY2Vuc2UgYWdyZWVtZW50IHBvaW50ZWQgdG8gYmUgImxpY2Vuc2VVUkwiCitsaWNlbnNlPVwKK0VjbGlwc2UgRm91bmRhdGlvbiBTb2Z0d2FyZSBVc2VyIEFncmVlbWVudFxuXAorRmVicnVhcnkgMSwgMjAxMVxuXAorXG5cCitVc2FnZSBPZiBDb250ZW50XG5cCitcblwKK1RIRSBFQ0xJUFNFIEZPVU5EQVRJT04gTUFLRVMgQVZBSUxBQkxFIFNPRlRXQVJFLCBET0NVTUVOVEFUSU9OLCBJTkZPUk1BVElPTiBBTkQvT1JcblwKK09USEVSIE1BVEVSSUFMUyBGT1IgT1BFTiBTT1VSQ0UgUFJPSkVDVFMgKENPTExFQ1RJVkVMWSAiQ09OVEVOVCIpLlxuXAorVVNFIE9GIFRIRSBDT05URU5UIElTIEdPVkVSTkVEIEJZIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBUSElTXG5cCitBR1JFRU1FTlQgQU5EL09SIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBMSUNFTlNFIEFHUkVFTUVOVFMgT1JcblwKK05PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRUQgQkVMT1cuICBCWSBVU0lORyBUSEUgQ09OVEVOVCwgWU9VXG5cCitBR1JFRSBUSEFUIFlPVVIgVVNFIE9GIFRIRSBDT05URU5UIElTIEdPVkVSTkVEIEJZIFRISVMgQUdSRUVNRU5UXG5cCitBTkQvT1IgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIEFOWSBBUFBMSUNBQkxFIExJQ0VOU0UgQUdSRUVNRU5UU1xuXAorT1IgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVy4gIElGIFlPVSBETyBOT1QgQUdSRUUgVE8gVEhFXG5cCitURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBUSElTIEFHUkVFTUVOVCBBTkQgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TXG5cCitPRiBBTlkgQVBQTElDQUJMRSBMSUNFTlNFIEFHUkVFTUVOVFMgT1IgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRFxuXAorQkVMT1csIFRIRU4gWU9VIE1BWSBOT1QgVVNFIFRIRSBDT05URU5ULlxuXAorXG5cCitBcHBsaWNhYmxlIExpY2Vuc2VzXG5cCitcblwKK1VubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkLCBhbGwgQ29udGVudCBtYWRlIGF2YWlsYWJsZSBieSB0aGVcblwKK0VjbGlwc2UgRm91bmRhdGlvbiBpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mXG5cCit0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoIkVQTCIpLiBBIGNvcHkgb2YgdGhlIEVQTCBpc1xuXAorcHJvdmlkZWQgd2l0aCB0aGlzIENvbnRlbnQgYW5kIGlzIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sLlxuXAorRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICJQcm9ncmFtIiB3aWxsIG1lYW4gdGhlIENvbnRlbnQuXG5cCitcblwKK0NvbnRlbnQgaW5jbHVkZXMsIGJ1dCBpcyBub3QgbGltaXRlZCB0bywgc291cmNlIGNvZGUsIG9iamVjdCBjb2RlLFxuXAorZG9jdW1lbnRhdGlvbiBhbmQgb3RoZXIgZmlsZXMgbWFpbnRhaW5lZCBpbiB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIHNvdXJjZSBjb2RlXG5cCityZXBvc2l0b3J5ICgiUmVwb3NpdG9yeSIpIGluIHNvZnR3YXJlIG1vZHVsZXMgKCJNb2R1bGVzIikgYW5kIG1hZGUgYXZhaWxhYmxlXG5cCithcyBkb3dubG9hZGFibGUgYXJjaGl2ZXMgKCJEb3dubG9hZHMiKS5cblwKK1xuXAorICAgICAgIC0gQ29udGVudCBtYXkgYmUgc3RydWN0dXJlZCBhbmQgcGFja2FnZWQgaW50byBtb2R1bGVzIHRvIGZhY2lsaXRhdGUgZGVsaXZlcmluZyxcblwKKyAgICAgICAgIGV4dGVuZGluZywgYW5kIHVwZ3JhZGluZyB0aGUgQ29udGVudC4gVHlwaWNhbCBtb2R1bGVzIG1heSBpbmNsdWRlIHBsdWctaW5zICgiUGx1Zy1pbnMiKSxcblwKKyAgICAgICAgIHBsdWctaW4gZnJhZ21lbnRzICgiRnJhZ21lbnRzIiksIGFuZCBmZWF0dXJlcyAoIkZlYXR1cmVzIikuXG5cCisgICAgICAgLSBFYWNoIFBsdWctaW4gb3IgRnJhZ21lbnQgbWF5IGJlIHBhY2thZ2VkIGFzIGEgc3ViLWRpcmVjdG9yeSBvciBKQVIgKEphdmEoVE0pIEFSY2hpdmUpXG5cCisgICAgICAgICBpbiBhIGRpcmVjdG9yeSBuYW1lZCAicGx1Z2lucyIuXG5cCisgICAgICAgLSBBIEZlYXR1cmUgaXMgYSBidW5kbGUgb2Ygb25lIG9yIG1vcmUgUGx1Zy1pbnMgYW5kL29yIEZyYWdtZW50cyBhbmQgYXNzb2NpYXRlZCBtYXRlcmlhbC5cblwKKyAgICAgICAgIEVhY2ggRmVhdHVyZSBtYXkgYmUgcGFja2FnZWQgYXMgYSBzdWItZGlyZWN0b3J5IGluIGEgZGlyZWN0b3J5IG5hbWVkICJmZWF0dXJlcyIuXG5cCisgICAgICAgICBXaXRoaW4gYSBGZWF0dXJlLCBmaWxlcyBuYW1lZCAiZmVhdHVyZS54bWwiIG1heSBjb250YWluIGEgbGlzdCBvZiB0aGUgbmFtZXMgYW5kIHZlcnNpb25cblwKKyAgICAgICAgIG51bWJlcnMgb2YgdGhlIFBsdWctaW5zIGFuZC9vciBGcmFnbWVudHMgYXNzb2NpYXRlZCB3aXRoIHRoYXQgRmVhdHVyZS5cblwKKyAgICAgICAtIEZlYXR1cmVzIG1heSBhbHNvIGluY2x1ZGUgb3RoZXIgRmVhdHVyZXMgKCJJbmNsdWRlZCBGZWF0dXJlcyIpLiBXaXRoaW4gYSBGZWF0dXJlLCBmaWxlc1xuXAorICAgICAgICAgbmFtZWQgImZlYXR1cmUueG1sIiBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2YgSW5jbHVkZWQgRmVhdHVyZXMuXG5cCitcblwKK1RoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgUGx1Zy1pbnMgYW5kIEZyYWdtZW50cyBzaG91bGQgYmVcblwKK2NvbnRhaW5lZCBpbiBmaWxlcyBuYW1lZCAiYWJvdXQuaHRtbCIgKCJBYm91dHMiKS4gVGhlIHRlcm1zIGFuZFxuXAorY29uZGl0aW9ucyBnb3Zlcm5pbmcgRmVhdHVyZXMgYW5kIEluY2x1ZGVkIEZlYXR1cmVzIHNob3VsZCBiZSBjb250YWluZWRcblwKK2luIGZpbGVzIG5hbWVkICJsaWNlbnNlLmh0bWwiICgiRmVhdHVyZSBMaWNlbnNlcyIpLiBBYm91dHMgYW5kIEZlYXR1cmVcblwKK0xpY2Vuc2VzIG1heSBiZSBsb2NhdGVkIGluIGFueSBkaXJlY3Rvcnkgb2YgYSBEb3dubG9hZCBvciBNb2R1bGVcblwKK2luY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvIHRoZSBmb2xsb3dpbmcgbG9jYXRpb25zOlxuXAorXG5cCisgICAgICAgLSBUaGUgdG9wLWxldmVsIChyb290KSBkaXJlY3RvcnlcblwKKyAgICAgICAtIFBsdWctaW4gYW5kIEZyYWdtZW50IGRpcmVjdG9yaWVzXG5cCisgICAgICAgLSBJbnNpZGUgUGx1Zy1pbnMgYW5kIEZyYWdtZW50cyBwYWNrYWdlZCBhcyBKQVJzXG5cCisgICAgICAgLSBTdWItZGlyZWN0b3JpZXMgb2YgdGhlIGRpcmVjdG9yeSBuYW1lZCAic3JjIiBvZiBjZXJ0YWluIFBsdWctaW5zXG5cCisgICAgICAgLSBGZWF0dXJlIGRpcmVjdG9yaWVzXG5cCitcblwKK05vdGU6IGlmIGEgRmVhdHVyZSBtYWRlIGF2YWlsYWJsZSBieSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIGluc3RhbGxlZCB1c2luZyB0aGVcblwKK1Byb3Zpc2lvbmluZyBUZWNobm9sb2d5IChhcyBkZWZpbmVkIGJlbG93KSwgeW91IG11c3QgYWdyZWUgdG8gYSBsaWNlbnNlICgiRmVhdHVyZSBcblwKK1VwZGF0ZSBMaWNlbnNlIikgZHVyaW5nIHRoZSBpbnN0YWxsYXRpb24gcHJvY2Vzcy4gSWYgdGhlIEZlYXR1cmUgY29udGFpbnNcblwKK0luY2x1ZGVkIEZlYXR1cmVzLCB0aGUgRmVhdHVyZSBVcGRhdGUgTGljZW5zZSBzaG91bGQgZWl0aGVyIHByb3ZpZGUgeW91XG5cCit3aXRoIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgdGhlIEluY2x1ZGVkIEZlYXR1cmVzIG9yIGluZm9ybVxuXAoreW91IHdoZXJlIHlvdSBjYW4gbG9jYXRlIHRoZW0uIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIG1heSBiZSBmb3VuZCBpblxuXAordGhlICJsaWNlbnNlIiBwcm9wZXJ0eSBvZiBmaWxlcyBuYW1lZCAiZmVhdHVyZS5wcm9wZXJ0aWVzIiBmb3VuZCB3aXRoaW4gYSBGZWF0dXJlLlxuXAorU3VjaCBBYm91dHMsIEZlYXR1cmUgTGljZW5zZXMsIGFuZCBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlcyBjb250YWluIHRoZVxuXAordGVybXMgYW5kIGNvbmRpdGlvbnMgKG9yIHJlZmVyZW5jZXMgdG8gc3VjaCB0ZXJtcyBhbmQgY29uZGl0aW9ucykgdGhhdFxuXAorZ292ZXJuIHlvdXIgdXNlIG9mIHRoZSBhc3NvY2lhdGVkIENvbnRlbnQgaW4gdGhhdCBkaXJlY3RvcnkuXG5cCitcblwKK1RIRSBBQk9VVFMsIEZFQVRVUkUgTElDRU5TRVMsIEFORCBGRUFUVVJFIFVQREFURSBMSUNFTlNFUyBNQVkgUkVGRVJcblwKK1RPIFRIRSBFUEwgT1IgT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTLCBOT1RJQ0VTIE9SIFRFUk1TIEFORCBDT05ESVRJT05TLlxuXAorU09NRSBPRiBUSEVTRSBPVEhFUiBMSUNFTlNFIEFHUkVFTUVOVFMgTUFZIElOQ0xVREUgKEJVVCBBUkUgTk9UIExJTUlURUQgVE8pOlxuXAorXG5cCisgICAgICAgLSBFY2xpcHNlIERpc3RyaWJ1dGlvbiBMaWNlbnNlIFZlcnNpb24gMS4wIChhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9saWNlbnNlcy9lZGwtdjEuMC5odG1sKVxuXAorICAgICAgIC0gQ29tbW9uIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wIChhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9jcGwtdjEwLmh0bWwpXG5cCisgICAgICAgLSBBcGFjaGUgU29mdHdhcmUgTGljZW5zZSAxLjEgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRSlcblwKKyAgICAgICAtIEFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlIDIuMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMClcblwKKyAgICAgICAtIE1ldHJvIExpbmsgUHVibGljIExpY2Vuc2UgMS4wMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vcGVubW90aWYvc3VwcG9ydGVycy9tZXRyb2xpbmsvbGljZW5zZS5odG1sKVxuXAorICAgICAgIC0gTW96aWxsYSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMSAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBML01QTC0xLjEuaHRtbClcblwKK1xuXAorSVQgSVMgWU9VUiBPQkxJR0FUSU9OIFRPIFJFQUQgQU5EIEFDQ0VQVCBBTEwgU1VDSCBURVJNUyBBTkQgQ09ORElUSU9OUyBQUklPUlxuXAorVE8gVVNFIE9GIFRIRSBDT05URU5ULiBJZiBubyBBYm91dCwgRmVhdHVyZSBMaWNlbnNlLCBvciBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlXG5cCitpcyBwcm92aWRlZCwgcGxlYXNlIGNvbnRhY3QgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiB0byBkZXRlcm1pbmUgd2hhdCB0ZXJtcyBhbmQgY29uZGl0aW9uc1xuXAorZ292ZXJuIHRoYXQgcGFydGljdWxhciBDb250ZW50LlxuXAorXG5cCitcblxVc2Ugb2YgUHJvdmlzaW9uaW5nIFRlY2hub2xvZ3lcblwKK1xuXAorVGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgcHJvdmlzaW9uaW5nIHNvZnR3YXJlLCBleGFtcGxlcyBvZiB3aGljaCBpbmNsdWRlLFxuXAorYnV0IGFyZSBub3QgbGltaXRlZCB0bywgcDIgYW5kIHRoZSBFY2xpcHNlIFVwZGF0ZSBNYW5hZ2VyICgiUHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kiKSBmb3JcblwKK3RoZSBwdXJwb3NlIG9mIGFsbG93aW5nIHVzZXJzIHRvIGluc3RhbGwgc29mdHdhcmUsIGRvY3VtZW50YXRpb24sIGluZm9ybWF0aW9uIGFuZC9vclxuXAorb3RoZXIgbWF0ZXJpYWxzIChjb2xsZWN0aXZlbHkgIkluc3RhbGxhYmxlIFNvZnR3YXJlIikuIFRoaXMgY2FwYWJpbGl0eSBpcyBwcm92aWRlZCB3aXRoXG5cCit0aGUgaW50ZW50IG9mIGFsbG93aW5nIHN1Y2ggdXNlcnMgdG8gaW5zdGFsbCwgZXh0ZW5kIGFuZCB1cGRhdGUgRWNsaXBzZS1iYXNlZCBwcm9kdWN0cy5cblwKK0luZm9ybWF0aW9uIGFib3V0IHBhY2thZ2luZyBJbnN0YWxsYWJsZSBTb2Z0d2FyZSBpcyBhdmFpbGFibGUgYXRcblwKK2h0dHA6Ly9lY2xpcHNlLm9yZy9lcXVpbm94L3AyL3JlcG9zaXRvcnlfcGFja2FnaW5nLmh0bWwgKCJTcGVjaWZpY2F0aW9uIikuXG5cCitcblwKK1lvdSBtYXkgdXNlIFByb3Zpc2lvbmluZyBUZWNobm9sb2d5IHRvIGFsbG93IG90aGVyIHBhcnRpZXMgdG8gaW5zdGFsbCBJbnN0YWxsYWJsZSBTb2Z0d2FyZS5cblwKK1lvdSBzaGFsbCBiZSByZXNwb25zaWJsZSBmb3IgZW5hYmxpbmcgdGhlIGFwcGxpY2FibGUgbGljZW5zZSBhZ3JlZW1lbnRzIHJlbGF0aW5nIHRvIHRoZVxuXAorSW5zdGFsbGFibGUgU29mdHdhcmUgdG8gYmUgcHJlc2VudGVkIHRvLCBhbmQgYWNjZXB0ZWQgYnksIHRoZSB1c2VycyBvZiB0aGUgUHJvdmlzaW9uaW5nIFRlY2hub2xvZ3lcblwKK2luIGFjY29yZGFuY2Ugd2l0aCB0aGUgU3BlY2lmaWNhdGlvbi4gQnkgdXNpbmcgUHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kgaW4gc3VjaCBhIG1hbm5lciBhbmRcblwKK21ha2luZyBpdCBhdmFpbGFibGUgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBTcGVjaWZpY2F0aW9uLCB5b3UgZnVydGhlciBhY2tub3dsZWRnZSB5b3VyXG5cCithZ3JlZW1lbnQgdG8sIGFuZCB0aGUgYWNxdWlzaXRpb24gb2YgYWxsIG5lY2Vzc2FyeSByaWdodHMgdG8gcGVybWl0IHRoZSBmb2xsb3dpbmc6XG5cCitcblwKKyAgICAgICAxLiBBIHNlcmllcyBvZiBhY3Rpb25zIG1heSBvY2N1ciAoIlByb3Zpc2lvbmluZyBQcm9jZXNzIikgaW4gd2hpY2ggYSB1c2VyIG1heSBleGVjdXRlXG5cCisgICAgICAgICAgdGhlIFByb3Zpc2lvbmluZyBUZWNobm9sb2d5IG9uIGEgbWFjaGluZSAoIlRhcmdldCBNYWNoaW5lIikgd2l0aCB0aGUgaW50ZW50IG9mIGluc3RhbGxpbmcsXG5cCisgICAgICAgICAgZXh0ZW5kaW5nIG9yIHVwZGF0aW5nIHRoZSBmdW5jdGlvbmFsaXR5IG9mIGFuIEVjbGlwc2UtYmFzZWQgcHJvZHVjdC5cblwKKyAgICAgICAyLiBEdXJpbmcgdGhlIFByb3Zpc2lvbmluZyBQcm9jZXNzLCB0aGUgUHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kgbWF5IGNhdXNlIHRoaXJkIHBhcnR5XG5cCisgICAgICAgICAgSW5zdGFsbGFibGUgU29mdHdhcmUgb3IgYSBwb3J0aW9uIHRoZXJlb2YgdG8gYmUgYWNjZXNzZWQgYW5kIGNvcGllZCB0byB0aGUgVGFyZ2V0IE1hY2hpbmUuXG5cCisgICAgICAgMy4gUHVyc3VhbnQgdG8gdGhlIFNwZWNpZmljYXRpb24sIHlvdSB3aWxsIHByb3ZpZGUgdG8gdGhlIHVzZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIHRoYXRcblwKKyAgICAgICAgICBnb3Zlcm4gdGhlIHVzZSBvZiB0aGUgSW5zdGFsbGFibGUgU29mdHdhcmUgKCJJbnN0YWxsYWJsZSBTb2Z0d2FyZSBBZ3JlZW1lbnQiKSBhbmQgc3VjaFxuXAorICAgICAgICAgIEluc3RhbGxhYmxlIFNvZnR3YXJlIEFncmVlbWVudCBzaGFsbCBiZSBhY2Nlc3NlZCBmcm9tIHRoZSBUYXJnZXQgTWFjaGluZSBpbiBhY2NvcmRhbmNlXG5cCisgICAgICAgICAgd2l0aCB0aGUgU3BlY2lmaWNhdGlvbi4gU3VjaCBJbnN0YWxsYWJsZSBTb2Z0d2FyZSBBZ3JlZW1lbnQgbXVzdCBpbmZvcm0gdGhlIHVzZXIgb2YgdGhlXG5cCisgICAgICAgICAgdGVybXMgYW5kIGNvbmRpdGlvbnMgdGhhdCBnb3Zlcm4gdGhlIEluc3RhbGxhYmxlIFNvZnR3YXJlIGFuZCBtdXN0IHNvbGljaXQgYWNjZXB0YW5jZSBieVxuXAorICAgICAgICAgIHRoZSBlbmQgdXNlciBpbiB0aGUgbWFubmVyIHByZXNjcmliZWQgaW4gc3VjaCBJbnN0YWxsYWJsZSBTb2Z0d2FyZSBBZ3JlZW1lbnQuIFVwb24gc3VjaFxuXAorICAgICAgICAgIGluZGljYXRpb24gb2YgYWdyZWVtZW50IGJ5IHRoZSB1c2VyLCB0aGUgcHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kgd2lsbCBjb21wbGV0ZSBpbnN0YWxsYXRpb25cblwKKyAgICAgICAgICBvZiB0aGUgSW5zdGFsbGFibGUgU29mdHdhcmUuXG5cCitcblwKK0NyeXB0b2dyYXBoeVxuXAorXG5cCitDb250ZW50IG1heSBjb250YWluIGVuY3J5cHRpb24gc29mdHdhcmUuIFRoZSBjb3VudHJ5IGluIHdoaWNoIHlvdSBhcmVcblwKK2N1cnJlbnRseSBtYXkgaGF2ZSByZXN0cmljdGlvbnMgb24gdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgYW5kIHVzZSxcblwKK2FuZC9vciByZS1leHBvcnQgdG8gYW5vdGhlciBjb3VudHJ5LCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBCRUZPUkVcblwKK3VzaW5nIGFueSBlbmNyeXB0aW9uIHNvZnR3YXJlLCBwbGVhc2UgY2hlY2sgdGhlIGNvdW50cnkncyBsYXdzLFxuXAorcmVndWxhdGlvbnMgYW5kIHBvbGljaWVzIGNvbmNlcm5pbmcgdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgb3IgdXNlLCBhbmRcblwKK3JlLWV4cG9ydCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLCB0byBzZWUgaWYgdGhpcyBpcyBwZXJtaXR0ZWQuXG5cCitcblwKK0phdmEgYW5kIGFsbCBKYXZhLWJhc2VkIHRyYWRlbWFya3MgYXJlIHRyYWRlbWFya3Mgb2YgT3JhY2xlIENvcnBvcmF0aW9uIGluIHRoZSBVbml0ZWQgU3RhdGVzLCBvdGhlciBjb3VudHJpZXMsIG9yIGJvdGguXG4KKyMjIyMjIyMjIyMjIGVuZCBvZiBsaWNlbnNlIHByb3BlcnR5ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2NyaXB0cy9mZWF0dXJlLnhtbCBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5kcy9mZWF0dXJlLnhtbApzaW1pbGFyaXR5IGluZGV4IDcwJQpjb3B5IGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zY3JpcHRzL2ZlYXR1cmUueG1sCmNvcHkgdG8gamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmRzL2ZlYXR1cmUueG1sCmluZGV4IGExOGM0ODguLjE5YzY0M2YgMTAwNzU1Ci0tLSBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2NyaXB0cy9mZWF0dXJlLnhtbAorKysgYi9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uZHMvZmVhdHVyZS54bWwKQEAgLTEsOCArMSw4IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgogPGZlYXR1cmUKLSAgICAgIGlkPSJvcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zY3JpcHRzIgorICAgICAgaWQ9Im9yZy5lY2xpcHNlLnZpcmdvLmRzIgogICAgICAgbGFiZWw9IiVmZWF0dXJlTmFtZSIKLSAgICAgIHZlcnNpb249IjEuMC4wIgorICAgICAgdmVyc2lvbj0iQEVRVUlOT1guRFMuVkVSU0lPTkAiCiAgICAgICBwcm92aWRlci1uYW1lPSIlcHJvdmlkZXJOYW1lIgogICAgICAgaW1hZ2U9ImVjbGlwc2VfdXBkYXRlXzEyMC5qcGciPgogCkBAIC0xNywxMSArMTcsMTIgQEAKICAgIDxsaWNlbnNlIHVybD0iJWxpY2Vuc2VVUkwiPgogICAgICAgJWxpY2Vuc2UKICAgIDwvbGljZW5zZT4KLSAgICAKLSAgICA8cGx1Z2luCi0gICAgICAgICBpZD0iamV0dHlfc2VydmVyX3NjcmlwdHMiCisKKyAgIDxwbHVnaW4KKyAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5lcXVpbm94LmRzIgogICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKICAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKLSAgICAgICAgIHZlcnNpb249IjEuMC4wIi8+CisgICAgICAgICB2ZXJzaW9uPSJARVFVSU5PWC5EUy5WRVJTSU9OQCIKKyAgICAgICAgIHVucGFjaz0iZmFsc2UiLz4KIAogPC9mZWF0dXJlPgpkaWZmIC0tZ2l0IGEvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmRzL2xpY2Vuc2UuaHRtbCBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5kcy9saWNlbnNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZjE5YzQ4MwotLS0gL2Rldi9udWxsCisrKyBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5kcy9saWNlbnNlLmh0bWwKQEAgLTAsMCArMSwxMDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IklTTy04ODU5LTEiID8+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+Cis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIC8+Cis8dGl0bGU+RWNsaXBzZSBGb3VuZGF0aW9uIFNvZnR3YXJlIFVzZXIgQWdyZWVtZW50PC90aXRsZT4KKzwvaGVhZD4KKworPGJvZHkgbGFuZz0iRU4tVVMiPgorPGgyPkVjbGlwc2UgRm91bmRhdGlvbiBTb2Z0d2FyZSBVc2VyIEFncmVlbWVudDwvaDI+Cis8cD5GZWJydWFyeSAxLCAyMDExPC9wPgorCis8aDM+VXNhZ2UgT2YgQ29udGVudDwvaDM+CisKKzxwPlRIRSBFQ0xJUFNFIEZPVU5EQVRJT04gTUFLRVMgQVZBSUxBQkxFIFNPRlRXQVJFLCBET0NVTUVOVEFUSU9OLCBJTkZPUk1BVElPTiBBTkQvT1IgT1RIRVIgTUFURVJJQUxTIEZPUiBPUEVOIFNPVVJDRSBQUk9KRUNUUworICAgKENPTExFQ1RJVkVMWSAmcXVvdDtDT05URU5UJnF1b3Q7KS4gIFVTRSBPRiBUSEUgQ09OVEVOVCBJUyBHT1ZFUk5FRCBCWSBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgVEhJUyBBR1JFRU1FTlQgQU5EL09SIFRIRSBURVJNUyBBTkQKKyAgIENPTkRJVElPTlMgT0YgTElDRU5TRSBBR1JFRU1FTlRTIE9SIE5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRUQgQkVMT1cuICBCWSBVU0lORyBUSEUgQ09OVEVOVCwgWU9VIEFHUkVFIFRIQVQgWU9VUiBVU0UKKyAgIE9GIFRIRSBDT05URU5UIElTIEdPVkVSTkVEIEJZIFRISVMgQUdSRUVNRU5UIEFORC9PUiBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgQU5ZIEFQUExJQ0FCTEUgTElDRU5TRSBBR1JFRU1FTlRTIE9SCisgICBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLiAgSUYgWU9VIERPIE5PVCBBR1JFRSBUTyBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgVEhJUyBBR1JFRU1FTlQgQU5EIFRIRSBURVJNUyBBTkQKKyAgIENPTkRJVElPTlMgT0YgQU5ZIEFQUExJQ0FCTEUgTElDRU5TRSBBR1JFRU1FTlRTIE9SIE5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRUQgQkVMT1csIFRIRU4gWU9VIE1BWSBOT1QgVVNFIFRIRSBDT05URU5ULjwvcD4KKworPGgzPkFwcGxpY2FibGUgTGljZW5zZXM8L2gzPgorCis8cD5Vbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCwgYWxsIENvbnRlbnQgbWFkZSBhdmFpbGFibGUgYnkgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wCisgICAoJnF1b3Q7RVBMJnF1b3Q7KS4gIEEgY29weSBvZiB0aGUgRVBMIGlzIHByb3ZpZGVkIHdpdGggdGhpcyBDb250ZW50IGFuZCBpcyBhbHNvIGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWw8L2E+LgorICAgRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvcD4KKworPHA+Q29udGVudCBpbmNsdWRlcywgYnV0IGlzIG5vdCBsaW1pdGVkIHRvLCBzb3VyY2UgY29kZSwgb2JqZWN0IGNvZGUsIGRvY3VtZW50YXRpb24gYW5kIG90aGVyIGZpbGVzIG1haW50YWluZWQgaW4gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiBzb3VyY2UgY29kZQorICAgcmVwb3NpdG9yeSAoJnF1b3Q7UmVwb3NpdG9yeSZxdW90OykgaW4gc29mdHdhcmUgbW9kdWxlcyAoJnF1b3Q7TW9kdWxlcyZxdW90OykgYW5kIG1hZGUgYXZhaWxhYmxlIGFzIGRvd25sb2FkYWJsZSBhcmNoaXZlcyAoJnF1b3Q7RG93bmxvYWRzJnF1b3Q7KS48L3A+CisKKzx1bD4KKyAgICAgICA8bGk+Q29udGVudCBtYXkgYmUgc3RydWN0dXJlZCBhbmQgcGFja2FnZWQgaW50byBtb2R1bGVzIHRvIGZhY2lsaXRhdGUgZGVsaXZlcmluZywgZXh0ZW5kaW5nLCBhbmQgdXBncmFkaW5nIHRoZSBDb250ZW50LiAgVHlwaWNhbCBtb2R1bGVzIG1heSBpbmNsdWRlIHBsdWctaW5zICgmcXVvdDtQbHVnLWlucyZxdW90OyksIHBsdWctaW4gZnJhZ21lbnRzICgmcXVvdDtGcmFnbWVudHMmcXVvdDspLCBhbmQgZmVhdHVyZXMgKCZxdW90O0ZlYXR1cmVzJnF1b3Q7KS48L2xpPgorICAgICAgIDxsaT5FYWNoIFBsdWctaW4gb3IgRnJhZ21lbnQgbWF5IGJlIHBhY2thZ2VkIGFzIGEgc3ViLWRpcmVjdG9yeSBvciBKQVIgKEphdmEmdHJhZGU7IEFSY2hpdmUpIGluIGEgZGlyZWN0b3J5IG5hbWVkICZxdW90O3BsdWdpbnMmcXVvdDsuPC9saT4KKyAgICAgICA8bGk+QSBGZWF0dXJlIGlzIGEgYnVuZGxlIG9mIG9uZSBvciBtb3JlIFBsdWctaW5zIGFuZC9vciBGcmFnbWVudHMgYW5kIGFzc29jaWF0ZWQgbWF0ZXJpYWwuICBFYWNoIEZlYXR1cmUgbWF5IGJlIHBhY2thZ2VkIGFzIGEgc3ViLWRpcmVjdG9yeSBpbiBhIGRpcmVjdG9yeSBuYW1lZCAmcXVvdDtmZWF0dXJlcyZxdW90Oy4gIFdpdGhpbiBhIEZlYXR1cmUsIGZpbGVzIG5hbWVkICZxdW90O2ZlYXR1cmUueG1sJnF1b3Q7IG1heSBjb250YWluIGEgbGlzdCBvZiB0aGUgbmFtZXMgYW5kIHZlcnNpb24gbnVtYmVycyBvZiB0aGUgUGx1Zy1pbnMKKyAgICAgIGFuZC9vciBGcmFnbWVudHMgYXNzb2NpYXRlZCB3aXRoIHRoYXQgRmVhdHVyZS48L2xpPgorICAgICAgIDxsaT5GZWF0dXJlcyBtYXkgYWxzbyBpbmNsdWRlIG90aGVyIEZlYXR1cmVzICgmcXVvdDtJbmNsdWRlZCBGZWF0dXJlcyZxdW90OykuIFdpdGhpbiBhIEZlYXR1cmUsIGZpbGVzIG5hbWVkICZxdW90O2ZlYXR1cmUueG1sJnF1b3Q7IG1heSBjb250YWluIGEgbGlzdCBvZiB0aGUgbmFtZXMgYW5kIHZlcnNpb24gbnVtYmVycyBvZiBJbmNsdWRlZCBGZWF0dXJlcy48L2xpPgorPC91bD4KKworPHA+VGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyBQbHVnLWlucyBhbmQgRnJhZ21lbnRzIHNob3VsZCBiZSBjb250YWluZWQgaW4gZmlsZXMgbmFtZWQgJnF1b3Q7YWJvdXQuaHRtbCZxdW90OyAoJnF1b3Q7QWJvdXRzJnF1b3Q7KS4gVGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyBGZWF0dXJlcyBhbmQKK0luY2x1ZGVkIEZlYXR1cmVzIHNob3VsZCBiZSBjb250YWluZWQgaW4gZmlsZXMgbmFtZWQgJnF1b3Q7bGljZW5zZS5odG1sJnF1b3Q7ICgmcXVvdDtGZWF0dXJlIExpY2Vuc2VzJnF1b3Q7KS4gIEFib3V0cyBhbmQgRmVhdHVyZSBMaWNlbnNlcyBtYXkgYmUgbG9jYXRlZCBpbiBhbnkgZGlyZWN0b3J5IG9mIGEgRG93bmxvYWQgb3IgTW9kdWxlCitpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0byB0aGUgZm9sbG93aW5nIGxvY2F0aW9uczo8L3A+CisKKzx1bD4KKyAgICAgICA8bGk+VGhlIHRvcC1sZXZlbCAocm9vdCkgZGlyZWN0b3J5PC9saT4KKyAgICAgICA8bGk+UGx1Zy1pbiBhbmQgRnJhZ21lbnQgZGlyZWN0b3JpZXM8L2xpPgorICAgICAgIDxsaT5JbnNpZGUgUGx1Zy1pbnMgYW5kIEZyYWdtZW50cyBwYWNrYWdlZCBhcyBKQVJzPC9saT4KKyAgICAgICA8bGk+U3ViLWRpcmVjdG9yaWVzIG9mIHRoZSBkaXJlY3RvcnkgbmFtZWQgJnF1b3Q7c3JjJnF1b3Q7IG9mIGNlcnRhaW4gUGx1Zy1pbnM8L2xpPgorICAgICAgIDxsaT5GZWF0dXJlIGRpcmVjdG9yaWVzPC9saT4KKzwvdWw+CisKKzxwPk5vdGU6IGlmIGEgRmVhdHVyZSBtYWRlIGF2YWlsYWJsZSBieSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIGluc3RhbGxlZCB1c2luZyB0aGUgUHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kgKGFzIGRlZmluZWQgYmVsb3cpLCB5b3UgbXVzdCBhZ3JlZSB0byBhIGxpY2Vuc2UgKCZxdW90O0ZlYXR1cmUgVXBkYXRlIExpY2Vuc2UmcXVvdDspIGR1cmluZyB0aGUKK2luc3RhbGxhdGlvbiBwcm9jZXNzLiAgSWYgdGhlIEZlYXR1cmUgY29udGFpbnMgSW5jbHVkZWQgRmVhdHVyZXMsIHRoZSBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlIHNob3VsZCBlaXRoZXIgcHJvdmlkZSB5b3Ugd2l0aCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZ292ZXJuaW5nIHRoZSBJbmNsdWRlZCBGZWF0dXJlcyBvcgoraW5mb3JtIHlvdSB3aGVyZSB5b3UgY2FuIGxvY2F0ZSB0aGVtLiAgRmVhdHVyZSBVcGRhdGUgTGljZW5zZXMgbWF5IGJlIGZvdW5kIGluIHRoZSAmcXVvdDtsaWNlbnNlJnF1b3Q7IHByb3BlcnR5IG9mIGZpbGVzIG5hbWVkICZxdW90O2ZlYXR1cmUucHJvcGVydGllcyZxdW90OyBmb3VuZCB3aXRoaW4gYSBGZWF0dXJlLgorU3VjaCBBYm91dHMsIEZlYXR1cmUgTGljZW5zZXMsIGFuZCBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlcyBjb250YWluIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyAob3IgcmVmZXJlbmNlcyB0byBzdWNoIHRlcm1zIGFuZCBjb25kaXRpb25zKSB0aGF0IGdvdmVybiB5b3VyIHVzZSBvZiB0aGUgYXNzb2NpYXRlZCBDb250ZW50IGluCit0aGF0IGRpcmVjdG9yeS48L3A+CisKKzxwPlRIRSBBQk9VVFMsIEZFQVRVUkUgTElDRU5TRVMsIEFORCBGRUFUVVJFIFVQREFURSBMSUNFTlNFUyBNQVkgUkVGRVIgVE8gVEhFIEVQTCBPUiBPVEhFUiBMSUNFTlNFIEFHUkVFTUVOVFMsIE5PVElDRVMgT1IgVEVSTVMgQU5EIENPTkRJVElPTlMuICBTT01FIE9GIFRIRVNFCitPVEhFUiBMSUNFTlNFIEFHUkVFTUVOVFMgTUFZIElOQ0xVREUgKEJVVCBBUkUgTk9UIExJTUlURUQgVE8pOjwvcD4KKworPHVsPgorICAgICAgIDxsaT5FY2xpcHNlIERpc3RyaWJ1dGlvbiBMaWNlbnNlIFZlcnNpb24gMS4wIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9saWNlbnNlcy9lZGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGljZW5zZXMvZWRsLXYxLjAuaHRtbDwvYT4pPC9saT4KKyAgICAgICA8bGk+Q29tbW9uIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9jcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sPC9hPik8L2xpPgorICAgICAgIDxsaT5BcGFjaGUgU29mdHdhcmUgTGljZW5zZSAxLjEgKGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRSI+aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0U8L2E+KTwvbGk+CisgICAgICAgPGxpPkFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlIDIuMCAoYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCI+aHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wPC9hPik8L2xpPgorICAgICAgIDxsaT5NZXRybyBMaW5rIFB1YmxpYyBMaWNlbnNlIDEuMDAgKGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb3Blbm1vdGlmL3N1cHBvcnRlcnMvbWV0cm9saW5rL2xpY2Vuc2UuaHRtbCI+aHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29wZW5tb3RpZi9zdXBwb3J0ZXJzL21ldHJvbGluay9saWNlbnNlLmh0bWw8L2E+KTwvbGk+CisgICAgICAgPGxpPk1vemlsbGEgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjEgKGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC9NUEwtMS4xLmh0bWwiPmh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBML01QTC0xLjEuaHRtbDwvYT4pPC9saT4KKzwvdWw+CisKKzxwPklUIElTIFlPVVIgT0JMSUdBVElPTiBUTyBSRUFEIEFORCBBQ0NFUFQgQUxMIFNVQ0ggVEVSTVMgQU5EIENPTkRJVElPTlMgUFJJT1IgVE8gVVNFIE9GIFRIRSBDT05URU5ULiAgSWYgbm8gQWJvdXQsIEZlYXR1cmUgTGljZW5zZSwgb3IgRmVhdHVyZSBVcGRhdGUgTGljZW5zZSBpcyBwcm92aWRlZCwgcGxlYXNlCitjb250YWN0IHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gdG8gZGV0ZXJtaW5lIHdoYXQgdGVybXMgYW5kIGNvbmRpdGlvbnMgZ292ZXJuIHRoYXQgcGFydGljdWxhciBDb250ZW50LjwvcD4KKworCis8aDM+VXNlIG9mIFByb3Zpc2lvbmluZyBUZWNobm9sb2d5PC9oMz4KKworPHA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgcHJvdmlzaW9uaW5nIHNvZnR3YXJlLCBleGFtcGxlcyBvZiB3aGljaCBpbmNsdWRlLCBidXQgYXJlIG5vdCBsaW1pdGVkIHRvLCBwMiBhbmQgdGhlIEVjbGlwc2UKKyAgIFVwZGF0ZSBNYW5hZ2VyICgmcXVvdDtQcm92aXNpb25pbmcgVGVjaG5vbG9neSZxdW90OykgZm9yIHRoZSBwdXJwb3NlIG9mIGFsbG93aW5nIHVzZXJzIHRvIGluc3RhbGwgc29mdHdhcmUsIGRvY3VtZW50YXRpb24sIGluZm9ybWF0aW9uIGFuZC9vcgorICAgb3RoZXIgbWF0ZXJpYWxzIChjb2xsZWN0aXZlbHkgJnF1b3Q7SW5zdGFsbGFibGUgU29mdHdhcmUmcXVvdDspLiBUaGlzIGNhcGFiaWxpdHkgaXMgcHJvdmlkZWQgd2l0aCB0aGUgaW50ZW50IG9mIGFsbG93aW5nIHN1Y2ggdXNlcnMgdG8KKyAgIGluc3RhbGwsIGV4dGVuZCBhbmQgdXBkYXRlIEVjbGlwc2UtYmFzZWQgcHJvZHVjdHMuIEluZm9ybWF0aW9uIGFib3V0IHBhY2thZ2luZyBJbnN0YWxsYWJsZSBTb2Z0d2FyZSBpcyBhdmFpbGFibGUgYXQgPGEKKyAgICAgICBocmVmPSJodHRwOi8vZWNsaXBzZS5vcmcvZXF1aW5veC9wMi9yZXBvc2l0b3J5X3BhY2thZ2luZy5odG1sIj5odHRwOi8vZWNsaXBzZS5vcmcvZXF1aW5veC9wMi9yZXBvc2l0b3J5X3BhY2thZ2luZy5odG1sPC9hPgorICAgKCZxdW90O1NwZWNpZmljYXRpb24mcXVvdDspLjwvcD4KKworPHA+WW91IG1heSB1c2UgUHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kgdG8gYWxsb3cgb3RoZXIgcGFydGllcyB0byBpbnN0YWxsIEluc3RhbGxhYmxlIFNvZnR3YXJlLiBZb3Ugc2hhbGwgYmUgcmVzcG9uc2libGUgZm9yIGVuYWJsaW5nIHRoZQorICAgYXBwbGljYWJsZSBsaWNlbnNlIGFncmVlbWVudHMgcmVsYXRpbmcgdG8gdGhlIEluc3RhbGxhYmxlIFNvZnR3YXJlIHRvIGJlIHByZXNlbnRlZCB0bywgYW5kIGFjY2VwdGVkIGJ5LCB0aGUgdXNlcnMgb2YgdGhlIFByb3Zpc2lvbmluZyBUZWNobm9sb2d5CisgICBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIFNwZWNpZmljYXRpb24uIEJ5IHVzaW5nIFByb3Zpc2lvbmluZyBUZWNobm9sb2d5IGluIHN1Y2ggYSBtYW5uZXIgYW5kIG1ha2luZyBpdCBhdmFpbGFibGUgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZQorICAgU3BlY2lmaWNhdGlvbiwgeW91IGZ1cnRoZXIgYWNrbm93bGVkZ2UgeW91ciBhZ3JlZW1lbnQgdG8sIGFuZCB0aGUgYWNxdWlzaXRpb24gb2YgYWxsIG5lY2Vzc2FyeSByaWdodHMgdG8gcGVybWl0IHRoZSBmb2xsb3dpbmc6PC9wPgorCis8b2w+CisgICAgICAgPGxpPkEgc2VyaWVzIG9mIGFjdGlvbnMgbWF5IG9jY3VyICgmcXVvdDtQcm92aXNpb25pbmcgUHJvY2VzcyZxdW90OykgaW4gd2hpY2ggYSB1c2VyIG1heSBleGVjdXRlIHRoZSBQcm92aXNpb25pbmcgVGVjaG5vbG9neQorICAgICAgIG9uIGEgbWFjaGluZSAoJnF1b3Q7VGFyZ2V0IE1hY2hpbmUmcXVvdDspIHdpdGggdGhlIGludGVudCBvZiBpbnN0YWxsaW5nLCBleHRlbmRpbmcgb3IgdXBkYXRpbmcgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgYW4gRWNsaXBzZS1iYXNlZAorICAgICAgIHByb2R1Y3QuPC9saT4KKyAgICAgICA8bGk+RHVyaW5nIHRoZSBQcm92aXNpb25pbmcgUHJvY2VzcywgdGhlIFByb3Zpc2lvbmluZyBUZWNobm9sb2d5IG1heSBjYXVzZSB0aGlyZCBwYXJ0eSBJbnN0YWxsYWJsZSBTb2Z0d2FyZSBvciBhIHBvcnRpb24gdGhlcmVvZiB0byBiZQorICAgICAgIGFjY2Vzc2VkIGFuZCBjb3BpZWQgdG8gdGhlIFRhcmdldCBNYWNoaW5lLjwvbGk+CisgICAgICAgPGxpPlB1cnN1YW50IHRvIHRoZSBTcGVjaWZpY2F0aW9uLCB5b3Ugd2lsbCBwcm92aWRlIHRvIHRoZSB1c2VyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyB0aGF0IGdvdmVybiB0aGUgdXNlIG9mIHRoZSBJbnN0YWxsYWJsZQorICAgICAgIFNvZnR3YXJlICgmcXVvdDtJbnN0YWxsYWJsZSBTb2Z0d2FyZSBBZ3JlZW1lbnQmcXVvdDspIGFuZCBzdWNoIEluc3RhbGxhYmxlIFNvZnR3YXJlIEFncmVlbWVudCBzaGFsbCBiZSBhY2Nlc3NlZCBmcm9tIHRoZSBUYXJnZXQKKyAgICAgICBNYWNoaW5lIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgU3BlY2lmaWNhdGlvbi4gU3VjaCBJbnN0YWxsYWJsZSBTb2Z0d2FyZSBBZ3JlZW1lbnQgbXVzdCBpbmZvcm0gdGhlIHVzZXIgb2YgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIHRoYXQgZ292ZXJuCisgICAgICAgdGhlIEluc3RhbGxhYmxlIFNvZnR3YXJlIGFuZCBtdXN0IHNvbGljaXQgYWNjZXB0YW5jZSBieSB0aGUgZW5kIHVzZXIgaW4gdGhlIG1hbm5lciBwcmVzY3JpYmVkIGluIHN1Y2ggSW5zdGFsbGFibGUgU29mdHdhcmUgQWdyZWVtZW50LiBVcG9uIHN1Y2gKKyAgICAgICBpbmRpY2F0aW9uIG9mIGFncmVlbWVudCBieSB0aGUgdXNlciwgdGhlIHByb3Zpc2lvbmluZyBUZWNobm9sb2d5IHdpbGwgY29tcGxldGUgaW5zdGFsbGF0aW9uIG9mIHRoZSBJbnN0YWxsYWJsZSBTb2Z0d2FyZS48L2xpPgorPC9vbD4KKworPGgzPkNyeXB0b2dyYXBoeTwvaDM+CisKKzxwPkNvbnRlbnQgbWF5IGNvbnRhaW4gZW5jcnlwdGlvbiBzb2Z0d2FyZS4gVGhlIGNvdW50cnkgaW4gd2hpY2ggeW91IGFyZSBjdXJyZW50bHkgbWF5IGhhdmUgcmVzdHJpY3Rpb25zIG9uIHRoZSBpbXBvcnQsIHBvc3Nlc3Npb24sIGFuZCB1c2UsIGFuZC9vciByZS1leHBvcnQgdG8KKyAgIGFub3RoZXIgY291bnRyeSwgb2YgZW5jcnlwdGlvbiBzb2Z0d2FyZS4gQkVGT1JFIHVzaW5nIGFueSBlbmNyeXB0aW9uIHNvZnR3YXJlLCBwbGVhc2UgY2hlY2sgdGhlIGNvdW50cnkncyBsYXdzLCByZWd1bGF0aW9ucyBhbmQgcG9saWNpZXMgY29uY2VybmluZyB0aGUgaW1wb3J0LAorICAgcG9zc2Vzc2lvbiwgb3IgdXNlLCBhbmQgcmUtZXhwb3J0IG9mIGVuY3J5cHRpb24gc29mdHdhcmUsIHRvIHNlZSBpZiB0aGlzIGlzIHBlcm1pdHRlZC48L3A+CisKKzxwPjxzbWFsbD5KYXZhIGFuZCBhbGwgSmF2YS1iYXNlZCB0cmFkZW1hcmtzIGFyZSB0cmFkZW1hcmtzIG9mIE9yYWNsZSBDb3Jwb3JhdGlvbiBpbiB0aGUgVW5pdGVkIFN0YXRlcywgb3RoZXIgY291bnRyaWVzLCBvciBib3RoLjwvc21hbGw+PC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5yZXNvdXJjZXMvYnVpbGQucHJvcGVydGllcyBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5rZXJuZWwuc3ByaW5naW50ZWdyYXRpb24vYnVpbGQucHJvcGVydGllcwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKY29weSBmcm9tIGJ1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkucmVzb3VyY2VzL2J1aWxkLnByb3BlcnRpZXMKY29weSB0byBqZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28ua2VybmVsLnNwcmluZ2ludGVncmF0aW9uL2J1aWxkLnByb3BlcnRpZXMKZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkucmVzb3VyY2VzL2VjbGlwc2VfdXBkYXRlXzEyMC5qcGcgYi9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28ua2VybmVsLnNwcmluZ2ludGVncmF0aW9uL2VjbGlwc2VfdXBkYXRlXzEyMC5qcGcKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBidWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnJlc291cmNlcy9lY2xpcHNlX3VwZGF0ZV8xMjAuanBnCmNvcHkgdG8gamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmtlcm5lbC5zcHJpbmdpbnRlZ3JhdGlvbi9lY2xpcHNlX3VwZGF0ZV8xMjAuanBnCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkucmVzb3VyY2VzL2VwbC12MTAuaHRtbCBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5rZXJuZWwuc3ByaW5naW50ZWdyYXRpb24vZXBsLXYxMC5odG1sCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpjb3B5IGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5yZXNvdXJjZXMvZXBsLXYxMC5odG1sCmNvcHkgdG8gamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmtlcm5lbC5zcHJpbmdpbnRlZ3JhdGlvbi9lcGwtdjEwLmh0bWwKZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkucmVzb3VyY2VzL2ZlYXR1cmUucHJvcGVydGllcyBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5rZXJuZWwuc3ByaW5naW50ZWdyYXRpb24vZmVhdHVyZS5wcm9wZXJ0aWVzCnNpbWlsYXJpdHkgaW5kZXggOTclCmNvcHkgZnJvbSBidWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnJlc291cmNlcy9mZWF0dXJlLnByb3BlcnRpZXMKY29weSB0byBqZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28ua2VybmVsLnNwcmluZ2ludGVncmF0aW9uL2ZlYXR1cmUucHJvcGVydGllcwppbmRleCA0ZTM5YWQzLi43ZGM3MTk3IDEwMDY0NAotLS0gYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnJlc291cmNlcy9mZWF0dXJlLnByb3BlcnRpZXMKKysrIGIvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmtlcm5lbC5zcHJpbmdpbnRlZ3JhdGlvbi9mZWF0dXJlLnByb3BlcnRpZXMKQEAgLTIwLDcgKzIwLDcgQEAKICMgVGhpcyBmaWxlIHNob3VsZCBiZSB0cmFuc2xhdGVkLgogCiAjICJmZWF0dXJlTmFtZSIgcHJvcGVydHkgLSBuYW1lIG9mIHRoZSBmZWF0dXJlCi1mZWF0dXJlTmFtZT1FY2xpcHNlIFZpcmdvIEpldHR5IFNlcnZlciBSZXNvdXJjZXMgRmVhdHVyZQorZmVhdHVyZU5hbWU9RWNsaXBzZSBWaXJnbyBLZXJuZWwgU3ByaW5nIEludGVncmF0aW9uIEZlYXR1cmUKIAogIyAicHJvdmlkZXJOYW1lIiBwcm9wZXJ0eSAtIG5hbWUgb2YgdGhlIGNvbXBhbnkgdGhhdCBwcm92aWRlcyB0aGUgZmVhdHVyZQogcHJvdmlkZXJOYW1lPUVjbGlwc2Uub3JnCkBAIC0yOCw3ICsyOCw3IEBACiAjICJ1cGRhdGVTaXRlTmFtZSIgcHJvcGVydHkgLSBsYWJlbCBmb3IgdGhlIHVwZGF0ZSBzaXRlCiAKICMgImRlc2NyaXB0aW9uIiBwcm9wZXJ0eSAtIGRlc2NyaXB0aW9uIG9mIHRoZSBmZWF0dXJlCi1kZXNjcmlwdGlvbj1UaGlzIGZlYXR1cmUgcHJvdmlkZXMgbW9kaWZpZWQgc2NyaXB0cyB0byBlbmFibGUgcHJvcGVyIHN0YXJ0dXAgb2YgSmV0dHkuXG5cCitkZXNjcmlwdGlvbj1UaGlzIGZlYXR1cmUgcHJvdmlkZXMgdHdvIHNwcmluZyBidW5kbGVzIGVzc2VudGlhbCBmb3IgdGhlIGNvbXBsZXRlIGludGVncmF0aW9uIHdpdGggU3ByaW5nIEZyYW1ld29yayB0aGF0IGFyZSBvdGhlcndpc2Ugb3B0aW9uYWxseSByZXF1aXJlZC5cblwKIAogIyAiY29weXJpZ2h0IiBwcm9wZXJ0eSAtIHRleHQgb2YgdGhlICJGZWF0dXJlIFVwZGF0ZSBDb3B5cmlnaHQiCiBjb3B5cmlnaHQ9XApkaWZmIC0tZ2l0IGEvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmtlcm5lbC5zcHJpbmdpbnRlZ3JhdGlvbi9mZWF0dXJlLnhtbCBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5rZXJuZWwuc3ByaW5naW50ZWdyYXRpb24vZmVhdHVyZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZDcwNDM5MgotLS0gL2Rldi9udWxsCisrKyBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5rZXJuZWwuc3ByaW5naW50ZWdyYXRpb24vZmVhdHVyZS54bWwKQEAgLTAsMCArMSwzNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxmZWF0dXJlCisgICAgICBpZD0ib3JnLmVjbGlwc2UudmlyZ28ua2VybmVsLnNwcmluZ2ludGVncmF0aW9uIgorICAgICAgbGFiZWw9IiVmZWF0dXJlTmFtZSIKKyAgICAgIHZlcnNpb249IkBLRVJORUwuVkVSU0lPTkAiCisgICAgICBwcm92aWRlci1uYW1lPSIlcHJvdmlkZXJOYW1lIgorICAgICAgaW1hZ2U9ImVjbGlwc2VfdXBkYXRlXzEyMC5qcGciPgorCisgICA8ZGVzY3JpcHRpb24gdXJsPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3ZpcmdvLyI+CisgICAgICAlZGVzY3JpcHRpb24KKyAgIDwvZGVzY3JpcHRpb24+CisKKyAgIDxjb3B5cmlnaHQgdXJsPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3ZpcmdvLyI+CisgICAgICAlY29weXJpZ2h0CisgICA8L2NvcHlyaWdodD4KKworICAgPGxpY2Vuc2UgdXJsPSIlbGljZW5zZVVSTCI+CisgICAgICAlbGljZW5zZQorICAgPC9saWNlbnNlPgorCisgICA8cGx1Z2luCisgICAgICAgICBpZD0ib3JnLnNwcmluZ2ZyYW1ld29yay5hc20iCisgICAgICAgICBkb3dubG9hZC1zaXplPSIwIgorICAgICAgICAgaW5zdGFsbC1zaXplPSIwIgorICAgICAgICAgdmVyc2lvbj0iQFNQUklORy5WRVJTSU9OQCIKKyAgICAgICAgIHVucGFjaz0iZmFsc2UiLz4KKyAgICA8cGx1Z2luCisgICAgICAgICBpZD0ib3JnLnNwcmluZ2ZyYW1ld29yay5leHByZXNzaW9uIgorICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKKyAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKKyAgICAgICAgIHZlcnNpb249IkBTUFJJTkcuVkVSU0lPTkAiCisgICAgICAgICB1bnBhY2s9ImZhbHNlIi8+ICAgICAgICAKKworPC9mZWF0dXJlPgpkaWZmIC0tZ2l0IGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5yZXNvdXJjZXMvYnVpbGQucHJvcGVydGllcyBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5rZXJuZWwvYnVpbGQucHJvcGVydGllcwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKY29weSBmcm9tIGJ1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkucmVzb3VyY2VzL2J1aWxkLnByb3BlcnRpZXMKY29weSB0byBqZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28ua2VybmVsL2J1aWxkLnByb3BlcnRpZXMKZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkucmVzb3VyY2VzL2VjbGlwc2VfdXBkYXRlXzEyMC5qcGcgYi9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28ua2VybmVsL2VjbGlwc2VfdXBkYXRlXzEyMC5qcGcKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBidWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnJlc291cmNlcy9lY2xpcHNlX3VwZGF0ZV8xMjAuanBnCmNvcHkgdG8gamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmtlcm5lbC9lY2xpcHNlX3VwZGF0ZV8xMjAuanBnCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkucmVzb3VyY2VzL2VwbC12MTAuaHRtbCBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5rZXJuZWwvZXBsLXYxMC5odG1sCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpjb3B5IGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5yZXNvdXJjZXMvZXBsLXYxMC5odG1sCmNvcHkgdG8gamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmtlcm5lbC9lcGwtdjEwLmh0bWwKZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkucmVzb3VyY2VzL2ZlYXR1cmUucHJvcGVydGllcyBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5rZXJuZWwvZmVhdHVyZS5wcm9wZXJ0aWVzCnNpbWlsYXJpdHkgaW5kZXggOTclCmNvcHkgZnJvbSBidWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnJlc291cmNlcy9mZWF0dXJlLnByb3BlcnRpZXMKY29weSB0byBqZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28ua2VybmVsL2ZlYXR1cmUucHJvcGVydGllcwppbmRleCA0ZTM5YWQzLi40Mjc2MWU4IDEwMDY0NAotLS0gYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnJlc291cmNlcy9mZWF0dXJlLnByb3BlcnRpZXMKKysrIGIvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmtlcm5lbC9mZWF0dXJlLnByb3BlcnRpZXMKQEAgLTIwLDcgKzIwLDcgQEAKICMgVGhpcyBmaWxlIHNob3VsZCBiZSB0cmFuc2xhdGVkLgogCiAjICJmZWF0dXJlTmFtZSIgcHJvcGVydHkgLSBuYW1lIG9mIHRoZSBmZWF0dXJlCi1mZWF0dXJlTmFtZT1FY2xpcHNlIFZpcmdvIEpldHR5IFNlcnZlciBSZXNvdXJjZXMgRmVhdHVyZQorZmVhdHVyZU5hbWU9RWNsaXBzZSBWaXJnbyBLZXJuZWwgRmVhdHVyZQogCiAjICJwcm92aWRlck5hbWUiIHByb3BlcnR5IC0gbmFtZSBvZiB0aGUgY29tcGFueSB0aGF0IHByb3ZpZGVzIHRoZSBmZWF0dXJlCiBwcm92aWRlck5hbWU9RWNsaXBzZS5vcmcKQEAgLTI4LDcgKzI4LDcgQEAKICMgInVwZGF0ZVNpdGVOYW1lIiBwcm9wZXJ0eSAtIGxhYmVsIGZvciB0aGUgdXBkYXRlIHNpdGUKIAogIyAiZGVzY3JpcHRpb24iIHByb3BlcnR5IC0gZGVzY3JpcHRpb24gb2YgdGhlIGZlYXR1cmUKLWRlc2NyaXB0aW9uPVRoaXMgZmVhdHVyZSBwcm92aWRlcyBtb2RpZmllZCBzY3JpcHRzIHRvIGVuYWJsZSBwcm9wZXIgc3RhcnR1cCBvZiBKZXR0eS5cblwKK2Rlc2NyaXB0aW9uPVRoaXMgZmVhdHVyZSBwcm92aWRlcyB0aGUgS2VybmVsIGZlYXR1cmVzIG9mIGEgRWNsaXBzZSBWaXJnbyBPU0dpIGNvbnRhaW5lciBzdWNoIGFzIGRlcGxveW1lbnQgYW5kIHJlcG9zaXRvcnkgbWVjaGFuaXNtcy4gUmVnaW9uIHN1cHBvcnQgaXMgZW5hYmxlZCBieSB0aGlzIGZlYXR1cmUuXG5cCiAKICMgImNvcHlyaWdodCIgcHJvcGVydHkgLSB0ZXh0IG9mIHRoZSAiRmVhdHVyZSBVcGRhdGUgQ29weXJpZ2h0IgogY29weXJpZ2h0PVwKZGlmZiAtLWdpdCBhL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5rZXJuZWwvZmVhdHVyZS54bWwgYi9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28ua2VybmVsL2ZlYXR1cmUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjc5NzUwZGYKLS0tIC9kZXYvbnVsbAorKysgYi9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28ua2VybmVsL2ZlYXR1cmUueG1sCkBAIC0wLDAgKzEsOTYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8ZmVhdHVyZQorCWlkPSJvcmcuZWNsaXBzZS52aXJnby5rZXJuZWwiCisJbGFiZWw9IiVmZWF0dXJlTmFtZSIKKwl2ZXJzaW9uPSJAS0VSTkVMLlZFUlNJT05AIgorCXByb3ZpZGVyLW5hbWU9IiVwcm92aWRlck5hbWUiCisJaW1hZ2U9ImVjbGlwc2VfdXBkYXRlXzEyMC5qcGciPgorCisJPGRlc2NyaXB0aW9uIHVybD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy92aXJnby8iPgorCQklZGVzY3JpcHRpb24KKwk8L2Rlc2NyaXB0aW9uPgorCisJPGNvcHlyaWdodCB1cmw9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdmlyZ28vIj4KKwkJJWNvcHlyaWdodAorCTwvY29weXJpZ2h0PgorCisJPGxpY2Vuc2UgdXJsPSIlbGljZW5zZVVSTCI+CisJCSVsaWNlbnNlCisJPC9saWNlbnNlPgorCisJPHJlcXVpcmVzPgorCQk8aW1wb3J0IGZlYXR1cmU9Im9yZy5lY2xpcHNlLnZpcmdvLmNvcmUiIHZlcnNpb249IjAuMC4wIi8+CisJCTxpbXBvcnQgZmVhdHVyZT0ib3JnLmVjbGlwc2UuZXF1aW5veC5yZWdpb25zIiB2ZXJzaW9uPSIwLjAuMCIvPgorCTwvcmVxdWlyZXM+CisKKyAgIDxwbHVnaW4KKwkJaWQ9Im9yZy5lY2xpcHNlLnZpcmdvLmtlcm5lbC5kZXBsb3llciIKKwkJZG93bmxvYWQtc2l6ZT0iMCIKKwkJaW5zdGFsbC1zaXplPSIwIgorCQl2ZXJzaW9uPSJAS0VSTkVMLlZFUlNJT05AIgorCQl1bnBhY2s9ImZhbHNlIgorCQlhdXRvc3RhcnQ9InRydWUiLz4KKyAgIDxwbHVnaW4KKwkJaWQ9Im9yZy5lY2xpcHNlLnZpcmdvLmtlcm5lbC5lcXVpbm94LmV4dGVuc2lvbnMiCisJCWRvd25sb2FkLXNpemU9IjAiCisJCWluc3RhbGwtc2l6ZT0iMCIKKwkJdmVyc2lvbj0iQEtFUk5FTC5WRVJTSU9OQCIKKwkJdW5wYWNrPSJmYWxzZSIKKwkJYXV0b3N0YXJ0PSJmYWxzZSIvPgorCTxwbHVnaW4KKwkJaWQ9Im9yZy5lY2xpcHNlLnZpcmdvLnJlcG9zaXRvcnkiCisJCWRvd25sb2FkLXNpemU9IjAiCisJCWluc3RhbGwtc2l6ZT0iMCIKKwkJdmVyc2lvbj0iQFJFUE9TSVRPUlkuVkVSU0lPTkAiCisJCXVucGFjaz0iZmFsc2UiCisJCWF1dG9zdGFydD0idHJ1ZSIvPgorCTxwbHVnaW4KKwkJaWQ9Im9yZy5lY2xpcHNlLnZpcmdvLmtlcm5lbC5hZ2VudC5kbSIKKwkJZG93bmxvYWQtc2l6ZT0iMCIKKwkJaW5zdGFsbC1zaXplPSIwIgorCQl2ZXJzaW9uPSJAS0VSTkVMLlZFUlNJT05AIgorCQl1bnBhY2s9ImZhbHNlIgorCQlhdXRvc3RhcnQ9InRydWUiLz4KKwk8cGx1Z2luCisJCWlkPSJvcmcuZWNsaXBzZS52aXJnby5rZXJuZWwuYXJ0aWZhY3QiCisJCWRvd25sb2FkLXNpemU9IjAiCisJCWluc3RhbGwtc2l6ZT0iMCIKKwkJdmVyc2lvbj0iQEtFUk5FTC5WRVJTSU9OQCIKKwkJdW5wYWNrPSJmYWxzZSIKKwkJYXV0b3N0YXJ0PSJ0cnVlIi8+CisJPHBsdWdpbgorCQlpZD0ib3JnLmVjbGlwc2UudmlyZ28ua2VybmVsLnNlcnZpY2VzIgorCQlkb3dubG9hZC1zaXplPSIwIgorCQlpbnN0YWxsLXNpemU9IjAiCisJCXZlcnNpb249IkBLRVJORUwuVkVSU0lPTkAiCisJCXVucGFjaz0iZmFsc2UiCisJCWF1dG9zdGFydD0idHJ1ZSIvPgorCTxwbHVnaW4KKwkJaWQ9Im9yZy5lY2xpcHNlLnZpcmdvLmtlcm5lbC5tb2RlbCIKKwkJZG93bmxvYWQtc2l6ZT0iMCIKKwkJaW5zdGFsbC1zaXplPSIwIgorCQl2ZXJzaW9uPSJAS0VSTkVMLlZFUlNJT05AIgorCQl1bnBhY2s9ImZhbHNlIgorCQlhdXRvc3RhcnQ9InRydWUiLz4KKwk8cGx1Z2luCisJCWlkPSJvcmcuZWNsaXBzZS52aXJnby5rZXJuZWwub3NnaSIKKwkJZG93bmxvYWQtc2l6ZT0iMCIKKwkJaW5zdGFsbC1zaXplPSIwIgorCQl2ZXJzaW9uPSJAS0VSTkVMLlZFUlNJT05AIgorCQl1bnBhY2s9ImZhbHNlIgorCQlhdXRvc3RhcnQ9InRydWUiLz4KKwk8cGx1Z2luCisJCWlkPSJvcmcuZWNsaXBzZS52aXJnby5rZXJuZWwudXNlcnJlZ2lvbmZhY3RvcnkiCisJCWRvd25sb2FkLXNpemU9IjAiCisJCWluc3RhbGwtc2l6ZT0iMCIKKwkJdmVyc2lvbj0iQEtFUk5FTC5WRVJTSU9OQCIKKwkJdW5wYWNrPSJmYWxzZSIKKwkJYXV0b3N0YXJ0PSJ0cnVlIi8+CisJPHBsdWdpbgorCQlpZD0ib3JnLmVjbGlwc2UudmlyZ28ua2VybmVsLmtlcm5lbGRtZnJhZ21lbnQiCisJCWRvd25sb2FkLXNpemU9IjAiCisJCWluc3RhbGwtc2l6ZT0iMCIKKwkJdmVyc2lvbj0iQEtFUk5FTC5WRVJTSU9OQCIKKwkJdW5wYWNrPSJmYWxzZSIvPgorCis8L2ZlYXR1cmU+CmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnJlc291cmNlcy9idWlsZC5wcm9wZXJ0aWVzIGIvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLm1hbmFnZW1lbnQvYnVpbGQucHJvcGVydGllcwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKY29weSBmcm9tIGJ1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkucmVzb3VyY2VzL2J1aWxkLnByb3BlcnRpZXMKY29weSB0byBqZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28ubWFuYWdlbWVudC9idWlsZC5wcm9wZXJ0aWVzCmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnJlc291cmNlcy9lY2xpcHNlX3VwZGF0ZV8xMjAuanBnIGIvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLm1hbmFnZW1lbnQvZWNsaXBzZV91cGRhdGVfMTIwLmpwZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKY29weSBmcm9tIGJ1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkucmVzb3VyY2VzL2VjbGlwc2VfdXBkYXRlXzEyMC5qcGcKY29weSB0byBqZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28ubWFuYWdlbWVudC9lY2xpcHNlX3VwZGF0ZV8xMjAuanBnCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkucmVzb3VyY2VzL2VwbC12MTAuaHRtbCBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5tYW5hZ2VtZW50L2VwbC12MTAuaHRtbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKY29weSBmcm9tIGJ1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkucmVzb3VyY2VzL2VwbC12MTAuaHRtbApjb3B5IHRvIGpldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5tYW5hZ2VtZW50L2VwbC12MTAuaHRtbApkaWZmIC0tZ2l0IGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5yZXNvdXJjZXMvZmVhdHVyZS5wcm9wZXJ0aWVzIGIvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLm1hbmFnZW1lbnQvZmVhdHVyZS5wcm9wZXJ0aWVzCnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIGJ1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkucmVzb3VyY2VzL2ZlYXR1cmUucHJvcGVydGllcwpyZW5hbWUgdG8gamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLm1hbmFnZW1lbnQvZmVhdHVyZS5wcm9wZXJ0aWVzCmluZGV4IDRlMzlhZDMuLjYxYzg1ZDIgMTAwNjQ0Ci0tLSBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkucmVzb3VyY2VzL2ZlYXR1cmUucHJvcGVydGllcworKysgYi9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28ubWFuYWdlbWVudC9mZWF0dXJlLnByb3BlcnRpZXMKQEAgLTIwLDcgKzIwLDcgQEAKICMgVGhpcyBmaWxlIHNob3VsZCBiZSB0cmFuc2xhdGVkLgogCiAjICJmZWF0dXJlTmFtZSIgcHJvcGVydHkgLSBuYW1lIG9mIHRoZSBmZWF0dXJlCi1mZWF0dXJlTmFtZT1FY2xpcHNlIFZpcmdvIEpldHR5IFNlcnZlciBSZXNvdXJjZXMgRmVhdHVyZQorZmVhdHVyZU5hbWU9RWNsaXBzZSBWaXJnbyBNYW5hZ2VtZW50IEZlYXR1cmUKIAogIyAicHJvdmlkZXJOYW1lIiBwcm9wZXJ0eSAtIG5hbWUgb2YgdGhlIGNvbXBhbnkgdGhhdCBwcm92aWRlcyB0aGUgZmVhdHVyZQogcHJvdmlkZXJOYW1lPUVjbGlwc2Uub3JnCkBAIC0yOCw3ICsyOCw3IEBACiAjICJ1cGRhdGVTaXRlTmFtZSIgcHJvcGVydHkgLSBsYWJlbCBmb3IgdGhlIHVwZGF0ZSBzaXRlCiAKICMgImRlc2NyaXB0aW9uIiBwcm9wZXJ0eSAtIGRlc2NyaXB0aW9uIG9mIHRoZSBmZWF0dXJlCi1kZXNjcmlwdGlvbj1UaGlzIGZlYXR1cmUgcHJvdmlkZXMgbW9kaWZpZWQgc2NyaXB0cyB0byBlbmFibGUgcHJvcGVyIHN0YXJ0dXAgb2YgSmV0dHkuXG5cCitkZXNjcmlwdGlvbj1UaGlzIGZlYXR1cmUgcHJvdmlkZXMgT1NHaSBKTVggc3VwcG9ydCBmb3IgVmlyZ28uXG5cCiAKICMgImNvcHlyaWdodCIgcHJvcGVydHkgLSB0ZXh0IG9mIHRoZSAiRmVhdHVyZSBVcGRhdGUgQ29weXJpZ2h0IgogY29weXJpZ2h0PVwKZGlmZiAtLWdpdCBhL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5tYW5hZ2VtZW50L2ZlYXR1cmUueG1sIGIvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLm1hbmFnZW1lbnQvZmVhdHVyZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZmMzNmY2MQotLS0gL2Rldi9udWxsCisrKyBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5tYW5hZ2VtZW50L2ZlYXR1cmUueG1sCkBAIC0wLDAgKzEsNDQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8ZmVhdHVyZQorCSAgaWQ9Im9yZy5lY2xpcHNlLnZpcmdvLm1hbmFnZW1lbnQiCisJICBsYWJlbD0iJWZlYXR1cmVOYW1lIgorCSAgdmVyc2lvbj0iQEtFUk5FTC5WRVJTSU9OQCIKKwkgIHByb3ZpZGVyLW5hbWU9IiVwcm92aWRlck5hbWUiCisJICBpbWFnZT0iZWNsaXBzZV91cGRhdGVfMTIwLmpwZyI+CisKKyAgIDxkZXNjcmlwdGlvbiB1cmw9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZ2VtaW5pL21hbmFnZW1lbnQvIj4KKwkgICVkZXNjcmlwdGlvbgorICAgPC9kZXNjcmlwdGlvbj4KKworICAgPGNvcHlyaWdodCB1cmw9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZ2VtaW5pL21hbmFnZW1lbnQvIj4KKwkgICVjb3B5cmlnaHQKKyAgIDwvY29weXJpZ2h0PgorCisgICA8bGljZW5zZSB1cmw9IiVsaWNlbnNlVVJMIj4KKwkgICVsaWNlbnNlCisgICA8L2xpY2Vuc2U+CisJCisJPHBsdWdpbgorCQlpZD0ib3JnLmVjbGlwc2UudmlyZ28ubWFuYWdlbWVudC5mcmFnbWVudCIKKwkJZG93bmxvYWQtc2l6ZT0iMCIKKwkJaW5zdGFsbC1zaXplPSIwIgorCQl2ZXJzaW9uPSJAS0VSTkVMLlZFUlNJT05AIgorCQl1bnBhY2s9ImZhbHNlIgorCQlhdXRvc3RhcnQ9InRydWUiLz4KKwkKKyAgIDxwbHVnaW4KKwkJaWQ9Im9yZy5lY2xpcHNlLmdlbWluaS5tYW5hZ2VtZW50IgorCQlkb3dubG9hZC1zaXplPSIwIgorCQlpbnN0YWxsLXNpemU9IjAiCisJCXZlcnNpb249IkBHRU1JTkkuTUFOQUdFTUVOVC5WRVJTSU9OQCIKKwkJdW5wYWNrPSJmYWxzZSIKKwkJYXV0b3N0YXJ0PSJ0cnVlIi8+CisKKwk8cGx1Z2luCisJCWlkPSJvc2dpLmVudGVycHJpc2UiCisJCWRvd25sb2FkLXNpemU9IjAiCisJCWluc3RhbGwtc2l6ZT0iMCIKKwkJdmVyc2lvbj0iQE9TR0kuRU5URVJQUklTRS5WRVJTSU9OQCIKKwkJdW5wYWNrPSJmYWxzZSIvPgorCis8L2ZlYXR1cmU+CmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnJlc291cmNlcy9idWlsZC5wcm9wZXJ0aWVzIGIvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLm1lZGljL2J1aWxkLnByb3BlcnRpZXMKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBidWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnJlc291cmNlcy9idWlsZC5wcm9wZXJ0aWVzCmNvcHkgdG8gamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLm1lZGljL2J1aWxkLnByb3BlcnRpZXMKZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkucmVzb3VyY2VzL2VjbGlwc2VfdXBkYXRlXzEyMC5qcGcgYi9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28ubWVkaWMvZWNsaXBzZV91cGRhdGVfMTIwLmpwZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKY29weSBmcm9tIGJ1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkucmVzb3VyY2VzL2VjbGlwc2VfdXBkYXRlXzEyMC5qcGcKY29weSB0byBqZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28ubWVkaWMvZWNsaXBzZV91cGRhdGVfMTIwLmpwZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnJlc291cmNlcy9lcGwtdjEwLmh0bWwgYi9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28ubWVkaWMvZXBsLXYxMC5odG1sCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpjb3B5IGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5yZXNvdXJjZXMvZXBsLXYxMC5odG1sCmNvcHkgdG8gamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLm1lZGljL2VwbC12MTAuaHRtbApkaWZmIC0tZ2l0IGEvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLm1lZGljL2ZlYXR1cmUucHJvcGVydGllcyBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5tZWRpYy9mZWF0dXJlLnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2QxNzg0NwotLS0gL2Rldi9udWxsCisrKyBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5tZWRpYy9mZWF0dXJlLnByb3BlcnRpZXMKQEAgLTAsMCArMSwxODAgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgQ29weXJpZ2h0IChjKSAyMDExIFNBUCBBRworIworIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCisjIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorIyBhbmQgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4KKyMgVGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgaXMgYXZhaWxhYmxlIGF0CisjICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyMgYW5kIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIGlzIGF2YWlsYWJsZSBhdAorIyAgIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYXBhY2hlMi4wLnBocC4KKyMgWW91IG1heSBlbGVjdCB0byByZWRpc3RyaWJ1dGUgdGhpcyBjb2RlIHVuZGVyIGVpdGhlciBvZiB0aGVzZSBsaWNlbnNlcy4KKyMKKyMgQ29udHJpYnV0b3JzOgorIyAgIEJvcmlzbGF2IEthcHVrYXJhbm92IC0gaW5pdGlhbCBjb250cmlidXRpb24KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgZmVhdHVyZS5wcm9wZXJ0aWVzCisjIGNvbnRhaW5zIGV4dGVybmFsaXplZCBzdHJpbmdzIGZvciBmZWF0dXJlLnhtbAorIyAiJWZvbyIgaW4gZmVhdHVyZS54bWwgY29ycmVzcG9uZHMgdG8gdGhlIGtleSAiZm9vIiBpbiB0aGlzIGZpbGUKKyMgamF2YS5pby5Qcm9wZXJ0aWVzIGZpbGUgKElTTyA4ODU5LTEgd2l0aCAiXCIgZXNjYXBlcykKKyMgVGhpcyBmaWxlIHNob3VsZCBiZSB0cmFuc2xhdGVkLgorCisjICJmZWF0dXJlTmFtZSIgcHJvcGVydHkgLSBuYW1lIG9mIHRoZSBmZWF0dXJlCitmZWF0dXJlTmFtZT1FY2xpcHNlIFZpcmdvIE1lZGljIEZlYXR1cmUKKworIyAicHJvdmlkZXJOYW1lIiBwcm9wZXJ0eSAtIG5hbWUgb2YgdGhlIGNvbXBhbnkgdGhhdCBwcm92aWRlcyB0aGUgZmVhdHVyZQorcHJvdmlkZXJOYW1lPUVjbGlwc2Uub3JnCisKKyMgInVwZGF0ZVNpdGVOYW1lIiBwcm9wZXJ0eSAtIGxhYmVsIGZvciB0aGUgdXBkYXRlIHNpdGUKKworIyAiZGVzY3JpcHRpb24iIHByb3BlcnR5IC0gZGVzY3JpcHRpb24gb2YgdGhlIGZlYXR1cmUKK2Rlc2NyaXB0aW9uPVRoaXMgZmVhdHVyZSBwcm92aWRlcyB0aGUgTG9nZ2luZyBhbmQgRGlhZ25vc3RpY3MgZmVhdHVyZXMgb2YgYW4gRWNsaXBzZSBWaXJnbyBPU0dpIGNvbnRhaW5lci5cblwKKworIyAiY29weXJpZ2h0IiBwcm9wZXJ0eSAtIHRleHQgb2YgdGhlICJGZWF0dXJlIFVwZGF0ZSBDb3B5cmlnaHQiCitjb3B5cmlnaHQ9XAorQ29weXJpZ2h0IChjKSAyMDA5LCAyMDEwLCAyMDExIFZNd2FyZSBJbmMuIGFuZCBvdGhlcnNcblwKK1xuXAorQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFsc1xuXAorYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wXG5cCithbmQgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi5cblwKK1RoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIGlzIGF2YWlsYWJsZSBhdFxuXAoraHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWxcblwKK2FuZCB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCBpcyBhdmFpbGFibGUgYXRcblwKK2h0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYXBhY2hlMi4wLnBocC5cblwKK1lvdSBtYXkgZWxlY3QgdG8gcmVkaXN0cmlidXRlIHRoaXMgY29kZSB1bmRlciBlaXRoZXIgb2YgdGhlc2VcblwKK2xpY2Vuc2VzLlxuXAorXG5cCitDb250cmlidXRvcnM6XG5cCitWTXdhcmUgSW5jLiAtIGluaXRpYWwgY29udHJpYnV0aW9uXG5cCisKKyMgImxpY2Vuc2VVUkwiIHByb3BlcnR5IC0gVVJMIG9mIHRoZSAiRmVhdHVyZSBMaWNlbnNlIgorIyBkbyBub3QgdHJhbnNsYXRlIHZhbHVlIC0ganVzdCBjaGFuZ2UgdG8gcG9pbnQgdG8gYSBsb2NhbGUtc3BlY2lmaWMgSFRNTCBwYWdlCitsaWNlbnNlVVJMPWxpY2Vuc2UuaHRtbAorCisjICJsaWNlbnNlIiBwcm9wZXJ0eSAtIHRleHQgb2YgdGhlICJGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlIgorIyBzaG91bGQgYmUgcGxhaW4gdGV4dCB2ZXJzaW9uIG9mIGxpY2Vuc2UgYWdyZWVtZW50IHBvaW50ZWQgdG8gYmUgImxpY2Vuc2VVUkwiCitsaWNlbnNlPVwKK0VjbGlwc2UgRm91bmRhdGlvbiBTb2Z0d2FyZSBVc2VyIEFncmVlbWVudFxuXAorRmVicnVhcnkgMSwgMjAxMVxuXAorXG5cCitVc2FnZSBPZiBDb250ZW50XG5cCitcblwKK1RIRSBFQ0xJUFNFIEZPVU5EQVRJT04gTUFLRVMgQVZBSUxBQkxFIFNPRlRXQVJFLCBET0NVTUVOVEFUSU9OLCBJTkZPUk1BVElPTiBBTkQvT1JcblwKK09USEVSIE1BVEVSSUFMUyBGT1IgT1BFTiBTT1VSQ0UgUFJPSkVDVFMgKENPTExFQ1RJVkVMWSAiQ09OVEVOVCIpLlxuXAorVVNFIE9GIFRIRSBDT05URU5UIElTIEdPVkVSTkVEIEJZIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBUSElTXG5cCitBR1JFRU1FTlQgQU5EL09SIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBMSUNFTlNFIEFHUkVFTUVOVFMgT1JcblwKK05PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRUQgQkVMT1cuICBCWSBVU0lORyBUSEUgQ09OVEVOVCwgWU9VXG5cCitBR1JFRSBUSEFUIFlPVVIgVVNFIE9GIFRIRSBDT05URU5UIElTIEdPVkVSTkVEIEJZIFRISVMgQUdSRUVNRU5UXG5cCitBTkQvT1IgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIEFOWSBBUFBMSUNBQkxFIExJQ0VOU0UgQUdSRUVNRU5UU1xuXAorT1IgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVy4gIElGIFlPVSBETyBOT1QgQUdSRUUgVE8gVEhFXG5cCitURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBUSElTIEFHUkVFTUVOVCBBTkQgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TXG5cCitPRiBBTlkgQVBQTElDQUJMRSBMSUNFTlNFIEFHUkVFTUVOVFMgT1IgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRFxuXAorQkVMT1csIFRIRU4gWU9VIE1BWSBOT1QgVVNFIFRIRSBDT05URU5ULlxuXAorXG5cCitBcHBsaWNhYmxlIExpY2Vuc2VzXG5cCitcblwKK1VubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkLCBhbGwgQ29udGVudCBtYWRlIGF2YWlsYWJsZSBieSB0aGVcblwKK0VjbGlwc2UgRm91bmRhdGlvbiBpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mXG5cCit0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoIkVQTCIpLiBBIGNvcHkgb2YgdGhlIEVQTCBpc1xuXAorcHJvdmlkZWQgd2l0aCB0aGlzIENvbnRlbnQgYW5kIGlzIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sLlxuXAorRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICJQcm9ncmFtIiB3aWxsIG1lYW4gdGhlIENvbnRlbnQuXG5cCitcblwKK0NvbnRlbnQgaW5jbHVkZXMsIGJ1dCBpcyBub3QgbGltaXRlZCB0bywgc291cmNlIGNvZGUsIG9iamVjdCBjb2RlLFxuXAorZG9jdW1lbnRhdGlvbiBhbmQgb3RoZXIgZmlsZXMgbWFpbnRhaW5lZCBpbiB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIHNvdXJjZSBjb2RlXG5cCityZXBvc2l0b3J5ICgiUmVwb3NpdG9yeSIpIGluIHNvZnR3YXJlIG1vZHVsZXMgKCJNb2R1bGVzIikgYW5kIG1hZGUgYXZhaWxhYmxlXG5cCithcyBkb3dubG9hZGFibGUgYXJjaGl2ZXMgKCJEb3dubG9hZHMiKS5cblwKK1xuXAorICAgICAgIC0gQ29udGVudCBtYXkgYmUgc3RydWN0dXJlZCBhbmQgcGFja2FnZWQgaW50byBtb2R1bGVzIHRvIGZhY2lsaXRhdGUgZGVsaXZlcmluZyxcblwKKyAgICAgICAgIGV4dGVuZGluZywgYW5kIHVwZ3JhZGluZyB0aGUgQ29udGVudC4gVHlwaWNhbCBtb2R1bGVzIG1heSBpbmNsdWRlIHBsdWctaW5zICgiUGx1Zy1pbnMiKSxcblwKKyAgICAgICAgIHBsdWctaW4gZnJhZ21lbnRzICgiRnJhZ21lbnRzIiksIGFuZCBmZWF0dXJlcyAoIkZlYXR1cmVzIikuXG5cCisgICAgICAgLSBFYWNoIFBsdWctaW4gb3IgRnJhZ21lbnQgbWF5IGJlIHBhY2thZ2VkIGFzIGEgc3ViLWRpcmVjdG9yeSBvciBKQVIgKEphdmEoVE0pIEFSY2hpdmUpXG5cCisgICAgICAgICBpbiBhIGRpcmVjdG9yeSBuYW1lZCAicGx1Z2lucyIuXG5cCisgICAgICAgLSBBIEZlYXR1cmUgaXMgYSBidW5kbGUgb2Ygb25lIG9yIG1vcmUgUGx1Zy1pbnMgYW5kL29yIEZyYWdtZW50cyBhbmQgYXNzb2NpYXRlZCBtYXRlcmlhbC5cblwKKyAgICAgICAgIEVhY2ggRmVhdHVyZSBtYXkgYmUgcGFja2FnZWQgYXMgYSBzdWItZGlyZWN0b3J5IGluIGEgZGlyZWN0b3J5IG5hbWVkICJmZWF0dXJlcyIuXG5cCisgICAgICAgICBXaXRoaW4gYSBGZWF0dXJlLCBmaWxlcyBuYW1lZCAiZmVhdHVyZS54bWwiIG1heSBjb250YWluIGEgbGlzdCBvZiB0aGUgbmFtZXMgYW5kIHZlcnNpb25cblwKKyAgICAgICAgIG51bWJlcnMgb2YgdGhlIFBsdWctaW5zIGFuZC9vciBGcmFnbWVudHMgYXNzb2NpYXRlZCB3aXRoIHRoYXQgRmVhdHVyZS5cblwKKyAgICAgICAtIEZlYXR1cmVzIG1heSBhbHNvIGluY2x1ZGUgb3RoZXIgRmVhdHVyZXMgKCJJbmNsdWRlZCBGZWF0dXJlcyIpLiBXaXRoaW4gYSBGZWF0dXJlLCBmaWxlc1xuXAorICAgICAgICAgbmFtZWQgImZlYXR1cmUueG1sIiBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2YgSW5jbHVkZWQgRmVhdHVyZXMuXG5cCitcblwKK1RoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgUGx1Zy1pbnMgYW5kIEZyYWdtZW50cyBzaG91bGQgYmVcblwKK2NvbnRhaW5lZCBpbiBmaWxlcyBuYW1lZCAiYWJvdXQuaHRtbCIgKCJBYm91dHMiKS4gVGhlIHRlcm1zIGFuZFxuXAorY29uZGl0aW9ucyBnb3Zlcm5pbmcgRmVhdHVyZXMgYW5kIEluY2x1ZGVkIEZlYXR1cmVzIHNob3VsZCBiZSBjb250YWluZWRcblwKK2luIGZpbGVzIG5hbWVkICJsaWNlbnNlLmh0bWwiICgiRmVhdHVyZSBMaWNlbnNlcyIpLiBBYm91dHMgYW5kIEZlYXR1cmVcblwKK0xpY2Vuc2VzIG1heSBiZSBsb2NhdGVkIGluIGFueSBkaXJlY3Rvcnkgb2YgYSBEb3dubG9hZCBvciBNb2R1bGVcblwKK2luY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvIHRoZSBmb2xsb3dpbmcgbG9jYXRpb25zOlxuXAorXG5cCisgICAgICAgLSBUaGUgdG9wLWxldmVsIChyb290KSBkaXJlY3RvcnlcblwKKyAgICAgICAtIFBsdWctaW4gYW5kIEZyYWdtZW50IGRpcmVjdG9yaWVzXG5cCisgICAgICAgLSBJbnNpZGUgUGx1Zy1pbnMgYW5kIEZyYWdtZW50cyBwYWNrYWdlZCBhcyBKQVJzXG5cCisgICAgICAgLSBTdWItZGlyZWN0b3JpZXMgb2YgdGhlIGRpcmVjdG9yeSBuYW1lZCAic3JjIiBvZiBjZXJ0YWluIFBsdWctaW5zXG5cCisgICAgICAgLSBGZWF0dXJlIGRpcmVjdG9yaWVzXG5cCitcblwKK05vdGU6IGlmIGEgRmVhdHVyZSBtYWRlIGF2YWlsYWJsZSBieSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIGluc3RhbGxlZCB1c2luZyB0aGVcblwKK1Byb3Zpc2lvbmluZyBUZWNobm9sb2d5IChhcyBkZWZpbmVkIGJlbG93KSwgeW91IG11c3QgYWdyZWUgdG8gYSBsaWNlbnNlICgiRmVhdHVyZSBcblwKK1VwZGF0ZSBMaWNlbnNlIikgZHVyaW5nIHRoZSBpbnN0YWxsYXRpb24gcHJvY2Vzcy4gSWYgdGhlIEZlYXR1cmUgY29udGFpbnNcblwKK0luY2x1ZGVkIEZlYXR1cmVzLCB0aGUgRmVhdHVyZSBVcGRhdGUgTGljZW5zZSBzaG91bGQgZWl0aGVyIHByb3ZpZGUgeW91XG5cCit3aXRoIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgdGhlIEluY2x1ZGVkIEZlYXR1cmVzIG9yIGluZm9ybVxuXAoreW91IHdoZXJlIHlvdSBjYW4gbG9jYXRlIHRoZW0uIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIG1heSBiZSBmb3VuZCBpblxuXAordGhlICJsaWNlbnNlIiBwcm9wZXJ0eSBvZiBmaWxlcyBuYW1lZCAiZmVhdHVyZS5wcm9wZXJ0aWVzIiBmb3VuZCB3aXRoaW4gYSBGZWF0dXJlLlxuXAorU3VjaCBBYm91dHMsIEZlYXR1cmUgTGljZW5zZXMsIGFuZCBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlcyBjb250YWluIHRoZVxuXAordGVybXMgYW5kIGNvbmRpdGlvbnMgKG9yIHJlZmVyZW5jZXMgdG8gc3VjaCB0ZXJtcyBhbmQgY29uZGl0aW9ucykgdGhhdFxuXAorZ292ZXJuIHlvdXIgdXNlIG9mIHRoZSBhc3NvY2lhdGVkIENvbnRlbnQgaW4gdGhhdCBkaXJlY3RvcnkuXG5cCitcblwKK1RIRSBBQk9VVFMsIEZFQVRVUkUgTElDRU5TRVMsIEFORCBGRUFUVVJFIFVQREFURSBMSUNFTlNFUyBNQVkgUkVGRVJcblwKK1RPIFRIRSBFUEwgT1IgT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTLCBOT1RJQ0VTIE9SIFRFUk1TIEFORCBDT05ESVRJT05TLlxuXAorU09NRSBPRiBUSEVTRSBPVEhFUiBMSUNFTlNFIEFHUkVFTUVOVFMgTUFZIElOQ0xVREUgKEJVVCBBUkUgTk9UIExJTUlURUQgVE8pOlxuXAorXG5cCisgICAgICAgLSBFY2xpcHNlIERpc3RyaWJ1dGlvbiBMaWNlbnNlIFZlcnNpb24gMS4wIChhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9saWNlbnNlcy9lZGwtdjEuMC5odG1sKVxuXAorICAgICAgIC0gQ29tbW9uIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wIChhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9jcGwtdjEwLmh0bWwpXG5cCisgICAgICAgLSBBcGFjaGUgU29mdHdhcmUgTGljZW5zZSAxLjEgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRSlcblwKKyAgICAgICAtIEFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlIDIuMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMClcblwKKyAgICAgICAtIE1ldHJvIExpbmsgUHVibGljIExpY2Vuc2UgMS4wMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vcGVubW90aWYvc3VwcG9ydGVycy9tZXRyb2xpbmsvbGljZW5zZS5odG1sKVxuXAorICAgICAgIC0gTW96aWxsYSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMSAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBML01QTC0xLjEuaHRtbClcblwKK1xuXAorSVQgSVMgWU9VUiBPQkxJR0FUSU9OIFRPIFJFQUQgQU5EIEFDQ0VQVCBBTEwgU1VDSCBURVJNUyBBTkQgQ09ORElUSU9OUyBQUklPUlxuXAorVE8gVVNFIE9GIFRIRSBDT05URU5ULiBJZiBubyBBYm91dCwgRmVhdHVyZSBMaWNlbnNlLCBvciBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlXG5cCitpcyBwcm92aWRlZCwgcGxlYXNlIGNvbnRhY3QgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiB0byBkZXRlcm1pbmUgd2hhdCB0ZXJtcyBhbmQgY29uZGl0aW9uc1xuXAorZ292ZXJuIHRoYXQgcGFydGljdWxhciBDb250ZW50LlxuXAorXG5cCitcblxVc2Ugb2YgUHJvdmlzaW9uaW5nIFRlY2hub2xvZ3lcblwKK1xuXAorVGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgcHJvdmlzaW9uaW5nIHNvZnR3YXJlLCBleGFtcGxlcyBvZiB3aGljaCBpbmNsdWRlLFxuXAorYnV0IGFyZSBub3QgbGltaXRlZCB0bywgcDIgYW5kIHRoZSBFY2xpcHNlIFVwZGF0ZSBNYW5hZ2VyICgiUHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kiKSBmb3JcblwKK3RoZSBwdXJwb3NlIG9mIGFsbG93aW5nIHVzZXJzIHRvIGluc3RhbGwgc29mdHdhcmUsIGRvY3VtZW50YXRpb24sIGluZm9ybWF0aW9uIGFuZC9vclxuXAorb3RoZXIgbWF0ZXJpYWxzIChjb2xsZWN0aXZlbHkgIkluc3RhbGxhYmxlIFNvZnR3YXJlIikuIFRoaXMgY2FwYWJpbGl0eSBpcyBwcm92aWRlZCB3aXRoXG5cCit0aGUgaW50ZW50IG9mIGFsbG93aW5nIHN1Y2ggdXNlcnMgdG8gaW5zdGFsbCwgZXh0ZW5kIGFuZCB1cGRhdGUgRWNsaXBzZS1iYXNlZCBwcm9kdWN0cy5cblwKK0luZm9ybWF0aW9uIGFib3V0IHBhY2thZ2luZyBJbnN0YWxsYWJsZSBTb2Z0d2FyZSBpcyBhdmFpbGFibGUgYXRcblwKK2h0dHA6Ly9lY2xpcHNlLm9yZy9lcXVpbm94L3AyL3JlcG9zaXRvcnlfcGFja2FnaW5nLmh0bWwgKCJTcGVjaWZpY2F0aW9uIikuXG5cCitcblwKK1lvdSBtYXkgdXNlIFByb3Zpc2lvbmluZyBUZWNobm9sb2d5IHRvIGFsbG93IG90aGVyIHBhcnRpZXMgdG8gaW5zdGFsbCBJbnN0YWxsYWJsZSBTb2Z0d2FyZS5cblwKK1lvdSBzaGFsbCBiZSByZXNwb25zaWJsZSBmb3IgZW5hYmxpbmcgdGhlIGFwcGxpY2FibGUgbGljZW5zZSBhZ3JlZW1lbnRzIHJlbGF0aW5nIHRvIHRoZVxuXAorSW5zdGFsbGFibGUgU29mdHdhcmUgdG8gYmUgcHJlc2VudGVkIHRvLCBhbmQgYWNjZXB0ZWQgYnksIHRoZSB1c2VycyBvZiB0aGUgUHJvdmlzaW9uaW5nIFRlY2hub2xvZ3lcblwKK2luIGFjY29yZGFuY2Ugd2l0aCB0aGUgU3BlY2lmaWNhdGlvbi4gQnkgdXNpbmcgUHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kgaW4gc3VjaCBhIG1hbm5lciBhbmRcblwKK21ha2luZyBpdCBhdmFpbGFibGUgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBTcGVjaWZpY2F0aW9uLCB5b3UgZnVydGhlciBhY2tub3dsZWRnZSB5b3VyXG5cCithZ3JlZW1lbnQgdG8sIGFuZCB0aGUgYWNxdWlzaXRpb24gb2YgYWxsIG5lY2Vzc2FyeSByaWdodHMgdG8gcGVybWl0IHRoZSBmb2xsb3dpbmc6XG5cCitcblwKKyAgICAgICAxLiBBIHNlcmllcyBvZiBhY3Rpb25zIG1heSBvY2N1ciAoIlByb3Zpc2lvbmluZyBQcm9jZXNzIikgaW4gd2hpY2ggYSB1c2VyIG1heSBleGVjdXRlXG5cCisgICAgICAgICAgdGhlIFByb3Zpc2lvbmluZyBUZWNobm9sb2d5IG9uIGEgbWFjaGluZSAoIlRhcmdldCBNYWNoaW5lIikgd2l0aCB0aGUgaW50ZW50IG9mIGluc3RhbGxpbmcsXG5cCisgICAgICAgICAgZXh0ZW5kaW5nIG9yIHVwZGF0aW5nIHRoZSBmdW5jdGlvbmFsaXR5IG9mIGFuIEVjbGlwc2UtYmFzZWQgcHJvZHVjdC5cblwKKyAgICAgICAyLiBEdXJpbmcgdGhlIFByb3Zpc2lvbmluZyBQcm9jZXNzLCB0aGUgUHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kgbWF5IGNhdXNlIHRoaXJkIHBhcnR5XG5cCisgICAgICAgICAgSW5zdGFsbGFibGUgU29mdHdhcmUgb3IgYSBwb3J0aW9uIHRoZXJlb2YgdG8gYmUgYWNjZXNzZWQgYW5kIGNvcGllZCB0byB0aGUgVGFyZ2V0IE1hY2hpbmUuXG5cCisgICAgICAgMy4gUHVyc3VhbnQgdG8gdGhlIFNwZWNpZmljYXRpb24sIHlvdSB3aWxsIHByb3ZpZGUgdG8gdGhlIHVzZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIHRoYXRcblwKKyAgICAgICAgICBnb3Zlcm4gdGhlIHVzZSBvZiB0aGUgSW5zdGFsbGFibGUgU29mdHdhcmUgKCJJbnN0YWxsYWJsZSBTb2Z0d2FyZSBBZ3JlZW1lbnQiKSBhbmQgc3VjaFxuXAorICAgICAgICAgIEluc3RhbGxhYmxlIFNvZnR3YXJlIEFncmVlbWVudCBzaGFsbCBiZSBhY2Nlc3NlZCBmcm9tIHRoZSBUYXJnZXQgTWFjaGluZSBpbiBhY2NvcmRhbmNlXG5cCisgICAgICAgICAgd2l0aCB0aGUgU3BlY2lmaWNhdGlvbi4gU3VjaCBJbnN0YWxsYWJsZSBTb2Z0d2FyZSBBZ3JlZW1lbnQgbXVzdCBpbmZvcm0gdGhlIHVzZXIgb2YgdGhlXG5cCisgICAgICAgICAgdGVybXMgYW5kIGNvbmRpdGlvbnMgdGhhdCBnb3Zlcm4gdGhlIEluc3RhbGxhYmxlIFNvZnR3YXJlIGFuZCBtdXN0IHNvbGljaXQgYWNjZXB0YW5jZSBieVxuXAorICAgICAgICAgIHRoZSBlbmQgdXNlciBpbiB0aGUgbWFubmVyIHByZXNjcmliZWQgaW4gc3VjaCBJbnN0YWxsYWJsZSBTb2Z0d2FyZSBBZ3JlZW1lbnQuIFVwb24gc3VjaFxuXAorICAgICAgICAgIGluZGljYXRpb24gb2YgYWdyZWVtZW50IGJ5IHRoZSB1c2VyLCB0aGUgcHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kgd2lsbCBjb21wbGV0ZSBpbnN0YWxsYXRpb25cblwKKyAgICAgICAgICBvZiB0aGUgSW5zdGFsbGFibGUgU29mdHdhcmUuXG5cCitcblwKK0NyeXB0b2dyYXBoeVxuXAorXG5cCitDb250ZW50IG1heSBjb250YWluIGVuY3J5cHRpb24gc29mdHdhcmUuIFRoZSBjb3VudHJ5IGluIHdoaWNoIHlvdSBhcmVcblwKK2N1cnJlbnRseSBtYXkgaGF2ZSByZXN0cmljdGlvbnMgb24gdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgYW5kIHVzZSxcblwKK2FuZC9vciByZS1leHBvcnQgdG8gYW5vdGhlciBjb3VudHJ5LCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBCRUZPUkVcblwKK3VzaW5nIGFueSBlbmNyeXB0aW9uIHNvZnR3YXJlLCBwbGVhc2UgY2hlY2sgdGhlIGNvdW50cnkncyBsYXdzLFxuXAorcmVndWxhdGlvbnMgYW5kIHBvbGljaWVzIGNvbmNlcm5pbmcgdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgb3IgdXNlLCBhbmRcblwKK3JlLWV4cG9ydCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLCB0byBzZWUgaWYgdGhpcyBpcyBwZXJtaXR0ZWQuXG5cCitcblwKK0phdmEgYW5kIGFsbCBKYXZhLWJhc2VkIHRyYWRlbWFya3MgYXJlIHRyYWRlbWFya3Mgb2YgT3JhY2xlIENvcnBvcmF0aW9uIGluIHRoZSBVbml0ZWQgU3RhdGVzLCBvdGhlciBjb3VudHJpZXMsIG9yIGJvdGguXG4KKyMjIyMjIyMjIyMjIGVuZCBvZiBsaWNlbnNlIHByb3BlcnR5ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5tZWRpYy9mZWF0dXJlLnhtbCBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5tZWRpYy9mZWF0dXJlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5kODIzYzk3Ci0tLSAvZGV2L251bGwKKysrIGIvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLm1lZGljL2ZlYXR1cmUueG1sCkBAIC0wLDAgKzEsNjQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8ZmVhdHVyZQorICAgICAgaWQ9Im9yZy5lY2xpcHNlLnZpcmdvLm1lZGljIgorICAgICAgbGFiZWw9IiVmZWF0dXJlTmFtZSIKKyAgICAgIHZlcnNpb249IkBNRURJQy5WRVJTSU9OQCIKKyAgICAgIHByb3ZpZGVyLW5hbWU9IiVwcm92aWRlck5hbWUiCisgICAgICBpbWFnZT0iZWNsaXBzZV91cGRhdGVfMTIwLmpwZyI+CisKKyAgIDxkZXNjcmlwdGlvbiB1cmw9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdmlyZ28vIj4KKyAgICAgICVkZXNjcmlwdGlvbgorICAgPC9kZXNjcmlwdGlvbj4KKworICAgPGNvcHlyaWdodCB1cmw9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdmlyZ28vIj4KKyAgICAgICVjb3B5cmlnaHQKKyAgIDwvY29weXJpZ2h0PgorCisgICA8bGljZW5zZSB1cmw9IiVsaWNlbnNlVVJMIj4KKyAgICAgICVsaWNlbnNlCisgICA8L2xpY2Vuc2U+CisKKyAgIDxwbHVnaW4KKyAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS52aXJnby5tZWRpYyIKKyAgICAgICAgIGRvd25sb2FkLXNpemU9IjAiCisgICAgICAgICBpbnN0YWxsLXNpemU9IjAiCisgICAgICAgICB2ZXJzaW9uPSJATUVESUMuVkVSU0lPTkAiCisgICAgICAgICB1bnBhY2s9ImZhbHNlIi8+CisKKyAgIDxwbHVnaW4KKyAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS52aXJnby5tZWRpYy5jb3JlIgorICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKKyAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKKyAgICAgICAgIHZlcnNpb249IkBNRURJQy5WRVJTSU9OQCIKKyAgICAgICAgIHVucGFjaz0iZmFsc2UiLz4KKyAgIDxwbHVnaW4KKyAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS52aXJnby5tZWRpYy5sb2diYWNrY29yZWZyYWdtZW50IgorICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKKyAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKKyAgICAgICAgIHZlcnNpb249IkBNRURJQy5WRVJTSU9OQCIKKyAgICAgICAgIHVucGFjaz0iZmFsc2UiLz4KKyAgIDxwbHVnaW4KKyAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS52aXJnby5tZWRpYy5sb2diYWNrY2xhc3NpY2ZyYWdtZW50IgorICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKKyAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKKyAgICAgICAgIHZlcnNpb249IkBNRURJQy5WRVJTSU9OQCIKKyAgICAgICAgIHVucGFjaz0iZmFsc2UiLz4KKyAgIDxwbHVnaW4KKyAgICAgICAgIGlkPSJjaC5xb3MubG9nYmFjay5jbGFzc2ljIgorICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKKyAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKKyAgICAgICAgIHZlcnNpb249IkBMT0dCQUNLLkNMQVNTSUMuVkVSU0lPTkAiCisgICAgICAgICB1bnBhY2s9ImZhbHNlIi8+CisgICA8cGx1Z2luCisgICAgICAgICBpZD0iY2gucW9zLmxvZ2JhY2suY29yZSIKKyAgICAgICAgIGRvd25sb2FkLXNpemU9IjAiCisgICAgICAgICBpbnN0YWxsLXNpemU9IjAiCisgICAgICAgICB2ZXJzaW9uPSJATE9HQkFDSy5DT1JFLlZFUlNJT05AIgorICAgICAgICAgdW5wYWNrPSJmYWxzZSIvPgorICAgIDxwbHVnaW4KKyAgICAgICAgaWQ9ImNoLnFvcy5sb2diYWNrLnNsZjRqIgorICAgICAgICBkb3dubG9hZC1zaXplPSIwIgorICAgICAgICBpbnN0YWxsLXNpemU9IjAiCisgICAgICAgIHZlcnNpb249IkBMT0dCQUNLLlNMRjRKLlZFUlNJT05AIgorICAgIHVucGFjaz0iZmFsc2UiLz4KKzwvZmVhdHVyZT4KZGlmZiAtLWdpdCBhL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5tZWRpYy9saWNlbnNlLmh0bWwgYi9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28ubWVkaWMvbGljZW5zZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmYxOWM0ODMKLS0tIC9kZXYvbnVsbAorKysgYi9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28ubWVkaWMvbGljZW5zZS5odG1sCkBAIC0wLDAgKzEsMTA4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJJU08tODg1OS0xIiA/PgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIiAvPgorPHRpdGxlPkVjbGlwc2UgRm91bmRhdGlvbiBTb2Z0d2FyZSBVc2VyIEFncmVlbWVudDwvdGl0bGU+Cis8L2hlYWQ+CisKKzxib2R5IGxhbmc9IkVOLVVTIj4KKzxoMj5FY2xpcHNlIEZvdW5kYXRpb24gU29mdHdhcmUgVXNlciBBZ3JlZW1lbnQ8L2gyPgorPHA+RmVicnVhcnkgMSwgMjAxMTwvcD4KKworPGgzPlVzYWdlIE9mIENvbnRlbnQ8L2gzPgorCis8cD5USEUgRUNMSVBTRSBGT1VOREFUSU9OIE1BS0VTIEFWQUlMQUJMRSBTT0ZUV0FSRSwgRE9DVU1FTlRBVElPTiwgSU5GT1JNQVRJT04gQU5EL09SIE9USEVSIE1BVEVSSUFMUyBGT1IgT1BFTiBTT1VSQ0UgUFJPSkVDVFMKKyAgIChDT0xMRUNUSVZFTFkgJnF1b3Q7Q09OVEVOVCZxdW90OykuICBVU0UgT0YgVEhFIENPTlRFTlQgSVMgR09WRVJORUQgQlkgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIFRISVMgQUdSRUVNRU5UIEFORC9PUiBUSEUgVEVSTVMgQU5ECisgICBDT05ESVRJT05TIE9GIExJQ0VOU0UgQUdSRUVNRU5UUyBPUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLiAgQlkgVVNJTkcgVEhFIENPTlRFTlQsIFlPVSBBR1JFRSBUSEFUIFlPVVIgVVNFCisgICBPRiBUSEUgQ09OVEVOVCBJUyBHT1ZFUk5FRCBCWSBUSElTIEFHUkVFTUVOVCBBTkQvT1IgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIEFOWSBBUFBMSUNBQkxFIExJQ0VOU0UgQUdSRUVNRU5UUyBPUgorICAgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVy4gIElGIFlPVSBETyBOT1QgQUdSRUUgVE8gVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIFRISVMgQUdSRUVNRU5UIEFORCBUSEUgVEVSTVMgQU5ECisgICBDT05ESVRJT05TIE9GIEFOWSBBUFBMSUNBQkxFIExJQ0VOU0UgQUdSRUVNRU5UUyBPUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLCBUSEVOIFlPVSBNQVkgTk9UIFVTRSBUSEUgQ09OVEVOVC48L3A+CisKKzxoMz5BcHBsaWNhYmxlIExpY2Vuc2VzPC9oMz4KKworPHA+VW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQsIGFsbCBDb250ZW50IG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMAorICAgKCZxdW90O0VQTCZxdW90OykuICBBIGNvcHkgb2YgdGhlIEVQTCBpcyBwcm92aWRlZCB3aXRoIHRoaXMgQ29udGVudCBhbmQgaXMgYWxzbyBhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sPC9hPi4KKyAgIEZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC48L3A+CisKKzxwPkNvbnRlbnQgaW5jbHVkZXMsIGJ1dCBpcyBub3QgbGltaXRlZCB0bywgc291cmNlIGNvZGUsIG9iamVjdCBjb2RlLCBkb2N1bWVudGF0aW9uIGFuZCBvdGhlciBmaWxlcyBtYWludGFpbmVkIGluIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gc291cmNlIGNvZGUKKyAgIHJlcG9zaXRvcnkgKCZxdW90O1JlcG9zaXRvcnkmcXVvdDspIGluIHNvZnR3YXJlIG1vZHVsZXMgKCZxdW90O01vZHVsZXMmcXVvdDspIGFuZCBtYWRlIGF2YWlsYWJsZSBhcyBkb3dubG9hZGFibGUgYXJjaGl2ZXMgKCZxdW90O0Rvd25sb2FkcyZxdW90OykuPC9wPgorCis8dWw+CisgICAgICAgPGxpPkNvbnRlbnQgbWF5IGJlIHN0cnVjdHVyZWQgYW5kIHBhY2thZ2VkIGludG8gbW9kdWxlcyB0byBmYWNpbGl0YXRlIGRlbGl2ZXJpbmcsIGV4dGVuZGluZywgYW5kIHVwZ3JhZGluZyB0aGUgQ29udGVudC4gIFR5cGljYWwgbW9kdWxlcyBtYXkgaW5jbHVkZSBwbHVnLWlucyAoJnF1b3Q7UGx1Zy1pbnMmcXVvdDspLCBwbHVnLWluIGZyYWdtZW50cyAoJnF1b3Q7RnJhZ21lbnRzJnF1b3Q7KSwgYW5kIGZlYXR1cmVzICgmcXVvdDtGZWF0dXJlcyZxdW90OykuPC9saT4KKyAgICAgICA8bGk+RWFjaCBQbHVnLWluIG9yIEZyYWdtZW50IG1heSBiZSBwYWNrYWdlZCBhcyBhIHN1Yi1kaXJlY3Rvcnkgb3IgSkFSIChKYXZhJnRyYWRlOyBBUmNoaXZlKSBpbiBhIGRpcmVjdG9yeSBuYW1lZCAmcXVvdDtwbHVnaW5zJnF1b3Q7LjwvbGk+CisgICAgICAgPGxpPkEgRmVhdHVyZSBpcyBhIGJ1bmRsZSBvZiBvbmUgb3IgbW9yZSBQbHVnLWlucyBhbmQvb3IgRnJhZ21lbnRzIGFuZCBhc3NvY2lhdGVkIG1hdGVyaWFsLiAgRWFjaCBGZWF0dXJlIG1heSBiZSBwYWNrYWdlZCBhcyBhIHN1Yi1kaXJlY3RvcnkgaW4gYSBkaXJlY3RvcnkgbmFtZWQgJnF1b3Q7ZmVhdHVyZXMmcXVvdDsuICBXaXRoaW4gYSBGZWF0dXJlLCBmaWxlcyBuYW1lZCAmcXVvdDtmZWF0dXJlLnhtbCZxdW90OyBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2YgdGhlIFBsdWctaW5zCisgICAgICBhbmQvb3IgRnJhZ21lbnRzIGFzc29jaWF0ZWQgd2l0aCB0aGF0IEZlYXR1cmUuPC9saT4KKyAgICAgICA8bGk+RmVhdHVyZXMgbWF5IGFsc28gaW5jbHVkZSBvdGhlciBGZWF0dXJlcyAoJnF1b3Q7SW5jbHVkZWQgRmVhdHVyZXMmcXVvdDspLiBXaXRoaW4gYSBGZWF0dXJlLCBmaWxlcyBuYW1lZCAmcXVvdDtmZWF0dXJlLnhtbCZxdW90OyBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2YgSW5jbHVkZWQgRmVhdHVyZXMuPC9saT4KKzwvdWw+CisKKzxwPlRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgUGx1Zy1pbnMgYW5kIEZyYWdtZW50cyBzaG91bGQgYmUgY29udGFpbmVkIGluIGZpbGVzIG5hbWVkICZxdW90O2Fib3V0Lmh0bWwmcXVvdDsgKCZxdW90O0Fib3V0cyZxdW90OykuIFRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgRmVhdHVyZXMgYW5kCitJbmNsdWRlZCBGZWF0dXJlcyBzaG91bGQgYmUgY29udGFpbmVkIGluIGZpbGVzIG5hbWVkICZxdW90O2xpY2Vuc2UuaHRtbCZxdW90OyAoJnF1b3Q7RmVhdHVyZSBMaWNlbnNlcyZxdW90OykuICBBYm91dHMgYW5kIEZlYXR1cmUgTGljZW5zZXMgbWF5IGJlIGxvY2F0ZWQgaW4gYW55IGRpcmVjdG9yeSBvZiBhIERvd25sb2FkIG9yIE1vZHVsZQoraW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG8gdGhlIGZvbGxvd2luZyBsb2NhdGlvbnM6PC9wPgorCis8dWw+CisgICAgICAgPGxpPlRoZSB0b3AtbGV2ZWwgKHJvb3QpIGRpcmVjdG9yeTwvbGk+CisgICAgICAgPGxpPlBsdWctaW4gYW5kIEZyYWdtZW50IGRpcmVjdG9yaWVzPC9saT4KKyAgICAgICA8bGk+SW5zaWRlIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgcGFja2FnZWQgYXMgSkFSczwvbGk+CisgICAgICAgPGxpPlN1Yi1kaXJlY3RvcmllcyBvZiB0aGUgZGlyZWN0b3J5IG5hbWVkICZxdW90O3NyYyZxdW90OyBvZiBjZXJ0YWluIFBsdWctaW5zPC9saT4KKyAgICAgICA8bGk+RmVhdHVyZSBkaXJlY3RvcmllczwvbGk+Cis8L3VsPgorCis8cD5Ob3RlOiBpZiBhIEZlYXR1cmUgbWFkZSBhdmFpbGFibGUgYnkgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpcyBpbnN0YWxsZWQgdXNpbmcgdGhlIFByb3Zpc2lvbmluZyBUZWNobm9sb2d5IChhcyBkZWZpbmVkIGJlbG93KSwgeW91IG11c3QgYWdyZWUgdG8gYSBsaWNlbnNlICgmcXVvdDtGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlJnF1b3Q7KSBkdXJpbmcgdGhlCitpbnN0YWxsYXRpb24gcHJvY2Vzcy4gIElmIHRoZSBGZWF0dXJlIGNvbnRhaW5zIEluY2x1ZGVkIEZlYXR1cmVzLCB0aGUgRmVhdHVyZSBVcGRhdGUgTGljZW5zZSBzaG91bGQgZWl0aGVyIHByb3ZpZGUgeW91IHdpdGggdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyB0aGUgSW5jbHVkZWQgRmVhdHVyZXMgb3IKK2luZm9ybSB5b3Ugd2hlcmUgeW91IGNhbiBsb2NhdGUgdGhlbS4gIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIG1heSBiZSBmb3VuZCBpbiB0aGUgJnF1b3Q7bGljZW5zZSZxdW90OyBwcm9wZXJ0eSBvZiBmaWxlcyBuYW1lZCAmcXVvdDtmZWF0dXJlLnByb3BlcnRpZXMmcXVvdDsgZm91bmQgd2l0aGluIGEgRmVhdHVyZS4KK1N1Y2ggQWJvdXRzLCBGZWF0dXJlIExpY2Vuc2VzLCBhbmQgRmVhdHVyZSBVcGRhdGUgTGljZW5zZXMgY29udGFpbiB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgKG9yIHJlZmVyZW5jZXMgdG8gc3VjaCB0ZXJtcyBhbmQgY29uZGl0aW9ucykgdGhhdCBnb3Zlcm4geW91ciB1c2Ugb2YgdGhlIGFzc29jaWF0ZWQgQ29udGVudCBpbgordGhhdCBkaXJlY3RvcnkuPC9wPgorCis8cD5USEUgQUJPVVRTLCBGRUFUVVJFIExJQ0VOU0VTLCBBTkQgRkVBVFVSRSBVUERBVEUgTElDRU5TRVMgTUFZIFJFRkVSIFRPIFRIRSBFUEwgT1IgT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTLCBOT1RJQ0VTIE9SIFRFUk1TIEFORCBDT05ESVRJT05TLiAgU09NRSBPRiBUSEVTRQorT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTIE1BWSBJTkNMVURFIChCVVQgQVJFIE5PVCBMSU1JVEVEIFRPKTo8L3A+CisKKzx1bD4KKyAgICAgICA8bGk+RWNsaXBzZSBEaXN0cmlidXRpb24gTGljZW5zZSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGljZW5zZXMvZWRsLXYxMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xpY2Vuc2VzL2VkbC12MS4wLmh0bWw8L2E+KTwvbGk+CisgICAgICAgPGxpPkNvbW1vbiBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2NwbC12MTAuaHRtbDwvYT4pPC9saT4KKyAgICAgICA8bGk+QXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UgMS4xIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UiPmh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFPC9hPik8L2xpPgorICAgICAgIDxsaT5BcGFjaGUgU29mdHdhcmUgTGljZW5zZSAyLjAgKGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAiPmh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMDwvYT4pPC9saT4KKyAgICAgICA8bGk+TWV0cm8gTGluayBQdWJsaWMgTGljZW5zZSAxLjAwIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29wZW5tb3RpZi9zdXBwb3J0ZXJzL21ldHJvbGluay9saWNlbnNlLmh0bWwiPmh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vcGVubW90aWYvc3VwcG9ydGVycy9tZXRyb2xpbmsvbGljZW5zZS5odG1sPC9hPik8L2xpPgorICAgICAgIDxsaT5Nb3ppbGxhIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4xIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvTVBMLTEuMS5odG1sIj5odHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC9NUEwtMS4xLmh0bWw8L2E+KTwvbGk+Cis8L3VsPgorCis8cD5JVCBJUyBZT1VSIE9CTElHQVRJT04gVE8gUkVBRCBBTkQgQUNDRVBUIEFMTCBTVUNIIFRFUk1TIEFORCBDT05ESVRJT05TIFBSSU9SIFRPIFVTRSBPRiBUSEUgQ09OVEVOVC4gIElmIG5vIEFib3V0LCBGZWF0dXJlIExpY2Vuc2UsIG9yIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2UgaXMgcHJvdmlkZWQsIHBsZWFzZQorY29udGFjdCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIHRvIGRldGVybWluZSB3aGF0IHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybiB0aGF0IHBhcnRpY3VsYXIgQ29udGVudC48L3A+CisKKworPGgzPlVzZSBvZiBQcm92aXNpb25pbmcgVGVjaG5vbG9neTwvaDM+CisKKzxwPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIHByb3Zpc2lvbmluZyBzb2Z0d2FyZSwgZXhhbXBsZXMgb2Ygd2hpY2ggaW5jbHVkZSwgYnV0IGFyZSBub3QgbGltaXRlZCB0bywgcDIgYW5kIHRoZSBFY2xpcHNlCisgICBVcGRhdGUgTWFuYWdlciAoJnF1b3Q7UHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kmcXVvdDspIGZvciB0aGUgcHVycG9zZSBvZiBhbGxvd2luZyB1c2VycyB0byBpbnN0YWxsIHNvZnR3YXJlLCBkb2N1bWVudGF0aW9uLCBpbmZvcm1hdGlvbiBhbmQvb3IKKyAgIG90aGVyIG1hdGVyaWFscyAoY29sbGVjdGl2ZWx5ICZxdW90O0luc3RhbGxhYmxlIFNvZnR3YXJlJnF1b3Q7KS4gVGhpcyBjYXBhYmlsaXR5IGlzIHByb3ZpZGVkIHdpdGggdGhlIGludGVudCBvZiBhbGxvd2luZyBzdWNoIHVzZXJzIHRvCisgICBpbnN0YWxsLCBleHRlbmQgYW5kIHVwZGF0ZSBFY2xpcHNlLWJhc2VkIHByb2R1Y3RzLiBJbmZvcm1hdGlvbiBhYm91dCBwYWNrYWdpbmcgSW5zdGFsbGFibGUgU29mdHdhcmUgaXMgYXZhaWxhYmxlIGF0IDxhCisgICAgICAgaHJlZj0iaHR0cDovL2VjbGlwc2Uub3JnL2VxdWlub3gvcDIvcmVwb3NpdG9yeV9wYWNrYWdpbmcuaHRtbCI+aHR0cDovL2VjbGlwc2Uub3JnL2VxdWlub3gvcDIvcmVwb3NpdG9yeV9wYWNrYWdpbmcuaHRtbDwvYT4KKyAgICgmcXVvdDtTcGVjaWZpY2F0aW9uJnF1b3Q7KS48L3A+CisKKzxwPllvdSBtYXkgdXNlIFByb3Zpc2lvbmluZyBUZWNobm9sb2d5IHRvIGFsbG93IG90aGVyIHBhcnRpZXMgdG8gaW5zdGFsbCBJbnN0YWxsYWJsZSBTb2Z0d2FyZS4gWW91IHNoYWxsIGJlIHJlc3BvbnNpYmxlIGZvciBlbmFibGluZyB0aGUKKyAgIGFwcGxpY2FibGUgbGljZW5zZSBhZ3JlZW1lbnRzIHJlbGF0aW5nIHRvIHRoZSBJbnN0YWxsYWJsZSBTb2Z0d2FyZSB0byBiZSBwcmVzZW50ZWQgdG8sIGFuZCBhY2NlcHRlZCBieSwgdGhlIHVzZXJzIG9mIHRoZSBQcm92aXNpb25pbmcgVGVjaG5vbG9neQorICAgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBTcGVjaWZpY2F0aW9uLiBCeSB1c2luZyBQcm92aXNpb25pbmcgVGVjaG5vbG9neSBpbiBzdWNoIGEgbWFubmVyIGFuZCBtYWtpbmcgaXQgYXZhaWxhYmxlIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUKKyAgIFNwZWNpZmljYXRpb24sIHlvdSBmdXJ0aGVyIGFja25vd2xlZGdlIHlvdXIgYWdyZWVtZW50IHRvLCBhbmQgdGhlIGFjcXVpc2l0aW9uIG9mIGFsbCBuZWNlc3NhcnkgcmlnaHRzIHRvIHBlcm1pdCB0aGUgZm9sbG93aW5nOjwvcD4KKworPG9sPgorICAgICAgIDxsaT5BIHNlcmllcyBvZiBhY3Rpb25zIG1heSBvY2N1ciAoJnF1b3Q7UHJvdmlzaW9uaW5nIFByb2Nlc3MmcXVvdDspIGluIHdoaWNoIGEgdXNlciBtYXkgZXhlY3V0ZSB0aGUgUHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kKKyAgICAgICBvbiBhIG1hY2hpbmUgKCZxdW90O1RhcmdldCBNYWNoaW5lJnF1b3Q7KSB3aXRoIHRoZSBpbnRlbnQgb2YgaW5zdGFsbGluZywgZXh0ZW5kaW5nIG9yIHVwZGF0aW5nIHRoZSBmdW5jdGlvbmFsaXR5IG9mIGFuIEVjbGlwc2UtYmFzZWQKKyAgICAgICBwcm9kdWN0LjwvbGk+CisgICAgICAgPGxpPkR1cmluZyB0aGUgUHJvdmlzaW9uaW5nIFByb2Nlc3MsIHRoZSBQcm92aXNpb25pbmcgVGVjaG5vbG9neSBtYXkgY2F1c2UgdGhpcmQgcGFydHkgSW5zdGFsbGFibGUgU29mdHdhcmUgb3IgYSBwb3J0aW9uIHRoZXJlb2YgdG8gYmUKKyAgICAgICBhY2Nlc3NlZCBhbmQgY29waWVkIHRvIHRoZSBUYXJnZXQgTWFjaGluZS48L2xpPgorICAgICAgIDxsaT5QdXJzdWFudCB0byB0aGUgU3BlY2lmaWNhdGlvbiwgeW91IHdpbGwgcHJvdmlkZSB0byB0aGUgdXNlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgdGhhdCBnb3Zlcm4gdGhlIHVzZSBvZiB0aGUgSW5zdGFsbGFibGUKKyAgICAgICBTb2Z0d2FyZSAoJnF1b3Q7SW5zdGFsbGFibGUgU29mdHdhcmUgQWdyZWVtZW50JnF1b3Q7KSBhbmQgc3VjaCBJbnN0YWxsYWJsZSBTb2Z0d2FyZSBBZ3JlZW1lbnQgc2hhbGwgYmUgYWNjZXNzZWQgZnJvbSB0aGUgVGFyZ2V0CisgICAgICAgTWFjaGluZSBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIFNwZWNpZmljYXRpb24uIFN1Y2ggSW5zdGFsbGFibGUgU29mdHdhcmUgQWdyZWVtZW50IG11c3QgaW5mb3JtIHRoZSB1c2VyIG9mIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyB0aGF0IGdvdmVybgorICAgICAgIHRoZSBJbnN0YWxsYWJsZSBTb2Z0d2FyZSBhbmQgbXVzdCBzb2xpY2l0IGFjY2VwdGFuY2UgYnkgdGhlIGVuZCB1c2VyIGluIHRoZSBtYW5uZXIgcHJlc2NyaWJlZCBpbiBzdWNoIEluc3RhbGxhYmxlIFNvZnR3YXJlIEFncmVlbWVudC4gVXBvbiBzdWNoCisgICAgICAgaW5kaWNhdGlvbiBvZiBhZ3JlZW1lbnQgYnkgdGhlIHVzZXIsIHRoZSBwcm92aXNpb25pbmcgVGVjaG5vbG9neSB3aWxsIGNvbXBsZXRlIGluc3RhbGxhdGlvbiBvZiB0aGUgSW5zdGFsbGFibGUgU29mdHdhcmUuPC9saT4KKzwvb2w+CisKKzxoMz5DcnlwdG9ncmFwaHk8L2gzPgorCis8cD5Db250ZW50IG1heSBjb250YWluIGVuY3J5cHRpb24gc29mdHdhcmUuIFRoZSBjb3VudHJ5IGluIHdoaWNoIHlvdSBhcmUgY3VycmVudGx5IG1heSBoYXZlIHJlc3RyaWN0aW9ucyBvbiB0aGUgaW1wb3J0LCBwb3NzZXNzaW9uLCBhbmQgdXNlLCBhbmQvb3IgcmUtZXhwb3J0IHRvCisgICBhbm90aGVyIGNvdW50cnksIG9mIGVuY3J5cHRpb24gc29mdHdhcmUuIEJFRk9SRSB1c2luZyBhbnkgZW5jcnlwdGlvbiBzb2Z0d2FyZSwgcGxlYXNlIGNoZWNrIHRoZSBjb3VudHJ5J3MgbGF3cywgcmVndWxhdGlvbnMgYW5kIHBvbGljaWVzIGNvbmNlcm5pbmcgdGhlIGltcG9ydCwKKyAgIHBvc3Nlc3Npb24sIG9yIHVzZSwgYW5kIHJlLWV4cG9ydCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLCB0byBzZWUgaWYgdGhpcyBpcyBwZXJtaXR0ZWQuPC9wPgorCis8cD48c21hbGw+SmF2YSBhbmQgYWxsIEphdmEtYmFzZWQgdHJhZGVtYXJrcyBhcmUgdHJhZGVtYXJrcyBvZiBPcmFjbGUgQ29ycG9yYXRpb24gaW4gdGhlIFVuaXRlZCBTdGF0ZXMsIG90aGVyIGNvdW50cmllcywgb3IgYm90aC48L3NtYWxsPjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2NyaXB0cy9idWlsZC5wcm9wZXJ0aWVzIGIvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLm5hbm8ubWJlYW5zL2J1aWxkLnByb3BlcnRpZXMKc2ltaWxhcml0eSBpbmRleCA2MCUKY29weSBmcm9tIGJ1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkuc2NyaXB0cy9idWlsZC5wcm9wZXJ0aWVzCmNvcHkgdG8gamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLm5hbm8ubWJlYW5zL2J1aWxkLnByb3BlcnRpZXMKaW5kZXggZGI4MGFkZC4uYTEzZTE4YiAxMDA2NDQKLS0tIGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zY3JpcHRzL2J1aWxkLnByb3BlcnRpZXMKKysrIGIvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLm5hbm8ubWJlYW5zL2J1aWxkLnByb3BlcnRpZXMKQEAgLTEsNCArMSw1IEBACiBiaW4uaW5jbHVkZXMgPSBmZWF0dXJlLnhtbCxcCiAgICAgICAgICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXMsXAogICAgICAgICAgICAgICAgZXBsLXYxMC5odG1sLFwKLSAgICAgICAgICAgICAgIGVjbGlwc2VfdXBkYXRlXzEyMC5qcGcKKyAgICAgICAgICAgICAgIGVjbGlwc2VfdXBkYXRlXzEyMC5qcGcsXAorICAgICAgICAgICAgICAgcDIuaW5mCmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnJlc291cmNlcy9lY2xpcHNlX3VwZGF0ZV8xMjAuanBnIGIvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLm5hbm8ubWJlYW5zL2VjbGlwc2VfdXBkYXRlXzEyMC5qcGcKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBidWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnJlc291cmNlcy9lY2xpcHNlX3VwZGF0ZV8xMjAuanBnCmNvcHkgdG8gamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLm5hbm8ubWJlYW5zL2VjbGlwc2VfdXBkYXRlXzEyMC5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5yZXNvdXJjZXMvZXBsLXYxMC5odG1sIGIvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLm5hbm8ubWJlYW5zL2VwbC12MTAuaHRtbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKY29weSBmcm9tIGJ1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkucmVzb3VyY2VzL2VwbC12MTAuaHRtbApjb3B5IHRvIGpldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5uYW5vLm1iZWFucy9lcGwtdjEwLmh0bWwKZGlmZiAtLWdpdCBhL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5uYW5vLm1iZWFucy9mZWF0dXJlLnByb3BlcnRpZXMgYi9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28ubmFuby5tYmVhbnMvZmVhdHVyZS5wcm9wZXJ0aWVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzY2Y4YTIKLS0tIC9kZXYvbnVsbAorKysgYi9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28ubmFuby5tYmVhbnMvZmVhdHVyZS5wcm9wZXJ0aWVzCkBAIC0wLDAgKzEsMTgwIEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIENvcHlyaWdodCAoYykgMjAxMSBTQVAgQUcKKyMKKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscworIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyMgYW5kIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uCisjIFRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIGlzIGF2YWlsYWJsZSBhdAorIyAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisjIGFuZCB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCBpcyBhdmFpbGFibGUgYXQKKyMgICBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FwYWNoZTIuMC5waHAuCisjIFlvdSBtYXkgZWxlY3QgdG8gcmVkaXN0cmlidXRlIHRoaXMgY29kZSB1bmRlciBlaXRoZXIgb2YgdGhlc2UgbGljZW5zZXMuCisjCisjIENvbnRyaWJ1dG9yczoKKyMgICBCb3Jpc2xhdiBLYXB1a2FyYW5vdiAtIGluaXRpYWwgY29udHJpYnV0aW9uCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIGZlYXR1cmUucHJvcGVydGllcworIyBjb250YWlucyBleHRlcm5hbGl6ZWQgc3RyaW5ncyBmb3IgZmVhdHVyZS54bWwKKyMgIiVmb28iIGluIGZlYXR1cmUueG1sIGNvcnJlc3BvbmRzIHRvIHRoZSBrZXkgImZvbyIgaW4gdGhpcyBmaWxlCisjIGphdmEuaW8uUHJvcGVydGllcyBmaWxlIChJU08gODg1OS0xIHdpdGggIlwiIGVzY2FwZXMpCisjIFRoaXMgZmlsZSBzaG91bGQgYmUgdHJhbnNsYXRlZC4KKworIyAiZmVhdHVyZU5hbWUiIHByb3BlcnR5IC0gbmFtZSBvZiB0aGUgZmVhdHVyZQorZmVhdHVyZU5hbWU9VmlyZ28gTmFubyBNQmVhbnMKKworIyAicHJvdmlkZXJOYW1lIiBwcm9wZXJ0eSAtIG5hbWUgb2YgdGhlIGNvbXBhbnkgdGhhdCBwcm92aWRlcyB0aGUgZmVhdHVyZQorcHJvdmlkZXJOYW1lPUVjbGlwc2Uub3JnCisKKyMgInVwZGF0ZVNpdGVOYW1lIiBwcm9wZXJ0eSAtIGxhYmVsIGZvciB0aGUgdXBkYXRlIHNpdGUKKworIyAiZGVzY3JpcHRpb24iIHByb3BlcnR5IC0gZGVzY3JpcHRpb24gb2YgdGhlIGZlYXR1cmUKK2Rlc2NyaXB0aW9uPVRoaXMgZmVhdHVyZSBwcm92aWRlcyB0aGUgc3RhbmRhcmQgTmFubyBNQmVhbiBjb250cm9scyBzdWNoIGFzIERlcGxveWVyIGFuZCBhbHNvIGNvbW1vbiBmb3IgVmlyZ28gTUJlYW5zIHN1Y2ggYXMgdGhlIFJlY292ZXJ5IE1vbml0b3IuXG5cCisKKyMgImNvcHlyaWdodCIgcHJvcGVydHkgLSB0ZXh0IG9mIHRoZSAiRmVhdHVyZSBVcGRhdGUgQ29weXJpZ2h0IgorY29weXJpZ2h0PVwKK0NvcHlyaWdodCAoYykgMjAwOSwgMjAxMCwgMjAxMSBWTXdhcmUgSW5jLiBhbmQgb3RoZXJzXG5cCitcblwKK0FsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHNcblwKK2FyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMFxuXAorYW5kIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uXG5cCitUaGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBpcyBhdmFpbGFibGUgYXRcblwKK2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sXG5cCithbmQgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgaXMgYXZhaWxhYmxlIGF0XG5cCitodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FwYWNoZTIuMC5waHAuXG5cCitZb3UgbWF5IGVsZWN0IHRvIHJlZGlzdHJpYnV0ZSB0aGlzIGNvZGUgdW5kZXIgZWl0aGVyIG9mIHRoZXNlXG5cCitsaWNlbnNlcy5cblwKK1xuXAorQ29udHJpYnV0b3JzOlxuXAorVk13YXJlIEluYy4gLSBpbml0aWFsIGNvbnRyaWJ1dGlvblxuXAorCisjICJsaWNlbnNlVVJMIiBwcm9wZXJ0eSAtIFVSTCBvZiB0aGUgIkZlYXR1cmUgTGljZW5zZSIKKyMgZG8gbm90IHRyYW5zbGF0ZSB2YWx1ZSAtIGp1c3QgY2hhbmdlIHRvIHBvaW50IHRvIGEgbG9jYWxlLXNwZWNpZmljIEhUTUwgcGFnZQorbGljZW5zZVVSTD1saWNlbnNlLmh0bWwKKworIyAibGljZW5zZSIgcHJvcGVydHkgLSB0ZXh0IG9mIHRoZSAiRmVhdHVyZSBVcGRhdGUgTGljZW5zZSIKKyMgc2hvdWxkIGJlIHBsYWluIHRleHQgdmVyc2lvbiBvZiBsaWNlbnNlIGFncmVlbWVudCBwb2ludGVkIHRvIGJlICJsaWNlbnNlVVJMIgorbGljZW5zZT1cCitFY2xpcHNlIEZvdW5kYXRpb24gU29mdHdhcmUgVXNlciBBZ3JlZW1lbnRcblwKK0ZlYnJ1YXJ5IDEsIDIwMTFcblwKK1xuXAorVXNhZ2UgT2YgQ29udGVudFxuXAorXG5cCitUSEUgRUNMSVBTRSBGT1VOREFUSU9OIE1BS0VTIEFWQUlMQUJMRSBTT0ZUV0FSRSwgRE9DVU1FTlRBVElPTiwgSU5GT1JNQVRJT04gQU5EL09SXG5cCitPVEhFUiBNQVRFUklBTFMgRk9SIE9QRU4gU09VUkNFIFBST0pFQ1RTIChDT0xMRUNUSVZFTFkgIkNPTlRFTlQiKS5cblwKK1VTRSBPRiBUSEUgQ09OVEVOVCBJUyBHT1ZFUk5FRCBCWSBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgVEhJU1xuXAorQUdSRUVNRU5UIEFORC9PUiBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgTElDRU5TRSBBR1JFRU1FTlRTIE9SXG5cCitOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLiAgQlkgVVNJTkcgVEhFIENPTlRFTlQsIFlPVVxuXAorQUdSRUUgVEhBVCBZT1VSIFVTRSBPRiBUSEUgQ09OVEVOVCBJUyBHT1ZFUk5FRCBCWSBUSElTIEFHUkVFTUVOVFxuXAorQU5EL09SIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBBTlkgQVBQTElDQUJMRSBMSUNFTlNFIEFHUkVFTUVOVFNcblwKK09SIE5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRUQgQkVMT1cuICBJRiBZT1UgRE8gTk9UIEFHUkVFIFRPIFRIRVxuXAorVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgVEhJUyBBR1JFRU1FTlQgQU5EIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OU1xuXAorT0YgQU5ZIEFQUExJQ0FCTEUgTElDRU5TRSBBR1JFRU1FTlRTIE9SIE5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRURcblwKK0JFTE9XLCBUSEVOIFlPVSBNQVkgTk9UIFVTRSBUSEUgQ09OVEVOVC5cblwKK1xuXAorQXBwbGljYWJsZSBMaWNlbnNlc1xuXAorXG5cCitVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCwgYWxsIENvbnRlbnQgbWFkZSBhdmFpbGFibGUgYnkgdGhlXG5cCitFY2xpcHNlIEZvdW5kYXRpb24gaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZlxuXAordGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgKCJFUEwiKS4gQSBjb3B5IG9mIHRoZSBFUEwgaXNcblwKK3Byb3ZpZGVkIHdpdGggdGhpcyBDb250ZW50IGFuZCBpcyBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbC5cblwKK0ZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAiUHJvZ3JhbSIgd2lsbCBtZWFuIHRoZSBDb250ZW50LlxuXAorXG5cCitDb250ZW50IGluY2x1ZGVzLCBidXQgaXMgbm90IGxpbWl0ZWQgdG8sIHNvdXJjZSBjb2RlLCBvYmplY3QgY29kZSxcblwKK2RvY3VtZW50YXRpb24gYW5kIG90aGVyIGZpbGVzIG1haW50YWluZWQgaW4gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiBzb3VyY2UgY29kZVxuXAorcmVwb3NpdG9yeSAoIlJlcG9zaXRvcnkiKSBpbiBzb2Z0d2FyZSBtb2R1bGVzICgiTW9kdWxlcyIpIGFuZCBtYWRlIGF2YWlsYWJsZVxuXAorYXMgZG93bmxvYWRhYmxlIGFyY2hpdmVzICgiRG93bmxvYWRzIikuXG5cCitcblwKKyAgICAgICAtIENvbnRlbnQgbWF5IGJlIHN0cnVjdHVyZWQgYW5kIHBhY2thZ2VkIGludG8gbW9kdWxlcyB0byBmYWNpbGl0YXRlIGRlbGl2ZXJpbmcsXG5cCisgICAgICAgICBleHRlbmRpbmcsIGFuZCB1cGdyYWRpbmcgdGhlIENvbnRlbnQuIFR5cGljYWwgbW9kdWxlcyBtYXkgaW5jbHVkZSBwbHVnLWlucyAoIlBsdWctaW5zIiksXG5cCisgICAgICAgICBwbHVnLWluIGZyYWdtZW50cyAoIkZyYWdtZW50cyIpLCBhbmQgZmVhdHVyZXMgKCJGZWF0dXJlcyIpLlxuXAorICAgICAgIC0gRWFjaCBQbHVnLWluIG9yIEZyYWdtZW50IG1heSBiZSBwYWNrYWdlZCBhcyBhIHN1Yi1kaXJlY3Rvcnkgb3IgSkFSIChKYXZhKFRNKSBBUmNoaXZlKVxuXAorICAgICAgICAgaW4gYSBkaXJlY3RvcnkgbmFtZWQgInBsdWdpbnMiLlxuXAorICAgICAgIC0gQSBGZWF0dXJlIGlzIGEgYnVuZGxlIG9mIG9uZSBvciBtb3JlIFBsdWctaW5zIGFuZC9vciBGcmFnbWVudHMgYW5kIGFzc29jaWF0ZWQgbWF0ZXJpYWwuXG5cCisgICAgICAgICBFYWNoIEZlYXR1cmUgbWF5IGJlIHBhY2thZ2VkIGFzIGEgc3ViLWRpcmVjdG9yeSBpbiBhIGRpcmVjdG9yeSBuYW1lZCAiZmVhdHVyZXMiLlxuXAorICAgICAgICAgV2l0aGluIGEgRmVhdHVyZSwgZmlsZXMgbmFtZWQgImZlYXR1cmUueG1sIiBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uXG5cCisgICAgICAgICBudW1iZXJzIG9mIHRoZSBQbHVnLWlucyBhbmQvb3IgRnJhZ21lbnRzIGFzc29jaWF0ZWQgd2l0aCB0aGF0IEZlYXR1cmUuXG5cCisgICAgICAgLSBGZWF0dXJlcyBtYXkgYWxzbyBpbmNsdWRlIG90aGVyIEZlYXR1cmVzICgiSW5jbHVkZWQgRmVhdHVyZXMiKS4gV2l0aGluIGEgRmVhdHVyZSwgZmlsZXNcblwKKyAgICAgICAgIG5hbWVkICJmZWF0dXJlLnhtbCIgbWF5IGNvbnRhaW4gYSBsaXN0IG9mIHRoZSBuYW1lcyBhbmQgdmVyc2lvbiBudW1iZXJzIG9mIEluY2x1ZGVkIEZlYXR1cmVzLlxuXAorXG5cCitUaGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZ292ZXJuaW5nIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgc2hvdWxkIGJlXG5cCitjb250YWluZWQgaW4gZmlsZXMgbmFtZWQgImFib3V0Lmh0bWwiICgiQWJvdXRzIikuIFRoZSB0ZXJtcyBhbmRcblwKK2NvbmRpdGlvbnMgZ292ZXJuaW5nIEZlYXR1cmVzIGFuZCBJbmNsdWRlZCBGZWF0dXJlcyBzaG91bGQgYmUgY29udGFpbmVkXG5cCitpbiBmaWxlcyBuYW1lZCAibGljZW5zZS5odG1sIiAoIkZlYXR1cmUgTGljZW5zZXMiKS4gQWJvdXRzIGFuZCBGZWF0dXJlXG5cCitMaWNlbnNlcyBtYXkgYmUgbG9jYXRlZCBpbiBhbnkgZGlyZWN0b3J5IG9mIGEgRG93bmxvYWQgb3IgTW9kdWxlXG5cCitpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0byB0aGUgZm9sbG93aW5nIGxvY2F0aW9uczpcblwKK1xuXAorICAgICAgIC0gVGhlIHRvcC1sZXZlbCAocm9vdCkgZGlyZWN0b3J5XG5cCisgICAgICAgLSBQbHVnLWluIGFuZCBGcmFnbWVudCBkaXJlY3Rvcmllc1xuXAorICAgICAgIC0gSW5zaWRlIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgcGFja2FnZWQgYXMgSkFSc1xuXAorICAgICAgIC0gU3ViLWRpcmVjdG9yaWVzIG9mIHRoZSBkaXJlY3RvcnkgbmFtZWQgInNyYyIgb2YgY2VydGFpbiBQbHVnLWluc1xuXAorICAgICAgIC0gRmVhdHVyZSBkaXJlY3Rvcmllc1xuXAorXG5cCitOb3RlOiBpZiBhIEZlYXR1cmUgbWFkZSBhdmFpbGFibGUgYnkgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpcyBpbnN0YWxsZWQgdXNpbmcgdGhlXG5cCitQcm92aXNpb25pbmcgVGVjaG5vbG9neSAoYXMgZGVmaW5lZCBiZWxvdyksIHlvdSBtdXN0IGFncmVlIHRvIGEgbGljZW5zZSAoIkZlYXR1cmUgXG5cCitVcGRhdGUgTGljZW5zZSIpIGR1cmluZyB0aGUgaW5zdGFsbGF0aW9uIHByb2Nlc3MuIElmIHRoZSBGZWF0dXJlIGNvbnRhaW5zXG5cCitJbmNsdWRlZCBGZWF0dXJlcywgdGhlIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2Ugc2hvdWxkIGVpdGhlciBwcm92aWRlIHlvdVxuXAord2l0aCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZ292ZXJuaW5nIHRoZSBJbmNsdWRlZCBGZWF0dXJlcyBvciBpbmZvcm1cblwKK3lvdSB3aGVyZSB5b3UgY2FuIGxvY2F0ZSB0aGVtLiBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlcyBtYXkgYmUgZm91bmQgaW5cblwKK3RoZSAibGljZW5zZSIgcHJvcGVydHkgb2YgZmlsZXMgbmFtZWQgImZlYXR1cmUucHJvcGVydGllcyIgZm91bmQgd2l0aGluIGEgRmVhdHVyZS5cblwKK1N1Y2ggQWJvdXRzLCBGZWF0dXJlIExpY2Vuc2VzLCBhbmQgRmVhdHVyZSBVcGRhdGUgTGljZW5zZXMgY29udGFpbiB0aGVcblwKK3Rlcm1zIGFuZCBjb25kaXRpb25zIChvciByZWZlcmVuY2VzIHRvIHN1Y2ggdGVybXMgYW5kIGNvbmRpdGlvbnMpIHRoYXRcblwKK2dvdmVybiB5b3VyIHVzZSBvZiB0aGUgYXNzb2NpYXRlZCBDb250ZW50IGluIHRoYXQgZGlyZWN0b3J5LlxuXAorXG5cCitUSEUgQUJPVVRTLCBGRUFUVVJFIExJQ0VOU0VTLCBBTkQgRkVBVFVSRSBVUERBVEUgTElDRU5TRVMgTUFZIFJFRkVSXG5cCitUTyBUSEUgRVBMIE9SIE9USEVSIExJQ0VOU0UgQUdSRUVNRU5UUywgTk9USUNFUyBPUiBURVJNUyBBTkQgQ09ORElUSU9OUy5cblwKK1NPTUUgT0YgVEhFU0UgT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTIE1BWSBJTkNMVURFIChCVVQgQVJFIE5PVCBMSU1JVEVEIFRPKTpcblwKK1xuXAorICAgICAgIC0gRWNsaXBzZSBEaXN0cmlidXRpb24gTGljZW5zZSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGljZW5zZXMvZWRsLXYxLjAuaHRtbClcblwKKyAgICAgICAtIENvbW1vbiBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sKVxuXAorICAgICAgIC0gQXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UgMS4xIChhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UpXG5cCisgICAgICAgLSBBcGFjaGUgU29mdHdhcmUgTGljZW5zZSAyLjAgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjApXG5cCisgICAgICAgLSBNZXRybyBMaW5rIFB1YmxpYyBMaWNlbnNlIDEuMDAgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb3Blbm1vdGlmL3N1cHBvcnRlcnMvbWV0cm9saW5rL2xpY2Vuc2UuaHRtbClcblwKKyAgICAgICAtIE1vemlsbGEgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjEgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC9NUEwtMS4xLmh0bWwpXG5cCitcblwKK0lUIElTIFlPVVIgT0JMSUdBVElPTiBUTyBSRUFEIEFORCBBQ0NFUFQgQUxMIFNVQ0ggVEVSTVMgQU5EIENPTkRJVElPTlMgUFJJT1JcblwKK1RPIFVTRSBPRiBUSEUgQ09OVEVOVC4gSWYgbm8gQWJvdXQsIEZlYXR1cmUgTGljZW5zZSwgb3IgRmVhdHVyZSBVcGRhdGUgTGljZW5zZVxuXAoraXMgcHJvdmlkZWQsIHBsZWFzZSBjb250YWN0IHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gdG8gZGV0ZXJtaW5lIHdoYXQgdGVybXMgYW5kIGNvbmRpdGlvbnNcblwKK2dvdmVybiB0aGF0IHBhcnRpY3VsYXIgQ29udGVudC5cblwKK1xuXAorXG5cVXNlIG9mIFByb3Zpc2lvbmluZyBUZWNobm9sb2d5XG5cCitcblwKK1RoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIHByb3Zpc2lvbmluZyBzb2Z0d2FyZSwgZXhhbXBsZXMgb2Ygd2hpY2ggaW5jbHVkZSxcblwKK2J1dCBhcmUgbm90IGxpbWl0ZWQgdG8sIHAyIGFuZCB0aGUgRWNsaXBzZSBVcGRhdGUgTWFuYWdlciAoIlByb3Zpc2lvbmluZyBUZWNobm9sb2d5IikgZm9yXG5cCit0aGUgcHVycG9zZSBvZiBhbGxvd2luZyB1c2VycyB0byBpbnN0YWxsIHNvZnR3YXJlLCBkb2N1bWVudGF0aW9uLCBpbmZvcm1hdGlvbiBhbmQvb3JcblwKK290aGVyIG1hdGVyaWFscyAoY29sbGVjdGl2ZWx5ICJJbnN0YWxsYWJsZSBTb2Z0d2FyZSIpLiBUaGlzIGNhcGFiaWxpdHkgaXMgcHJvdmlkZWQgd2l0aFxuXAordGhlIGludGVudCBvZiBhbGxvd2luZyBzdWNoIHVzZXJzIHRvIGluc3RhbGwsIGV4dGVuZCBhbmQgdXBkYXRlIEVjbGlwc2UtYmFzZWQgcHJvZHVjdHMuXG5cCitJbmZvcm1hdGlvbiBhYm91dCBwYWNrYWdpbmcgSW5zdGFsbGFibGUgU29mdHdhcmUgaXMgYXZhaWxhYmxlIGF0XG5cCitodHRwOi8vZWNsaXBzZS5vcmcvZXF1aW5veC9wMi9yZXBvc2l0b3J5X3BhY2thZ2luZy5odG1sICgiU3BlY2lmaWNhdGlvbiIpLlxuXAorXG5cCitZb3UgbWF5IHVzZSBQcm92aXNpb25pbmcgVGVjaG5vbG9neSB0byBhbGxvdyBvdGhlciBwYXJ0aWVzIHRvIGluc3RhbGwgSW5zdGFsbGFibGUgU29mdHdhcmUuXG5cCitZb3Ugc2hhbGwgYmUgcmVzcG9uc2libGUgZm9yIGVuYWJsaW5nIHRoZSBhcHBsaWNhYmxlIGxpY2Vuc2UgYWdyZWVtZW50cyByZWxhdGluZyB0byB0aGVcblwKK0luc3RhbGxhYmxlIFNvZnR3YXJlIHRvIGJlIHByZXNlbnRlZCB0bywgYW5kIGFjY2VwdGVkIGJ5LCB0aGUgdXNlcnMgb2YgdGhlIFByb3Zpc2lvbmluZyBUZWNobm9sb2d5XG5cCitpbiBhY2NvcmRhbmNlIHdpdGggdGhlIFNwZWNpZmljYXRpb24uIEJ5IHVzaW5nIFByb3Zpc2lvbmluZyBUZWNobm9sb2d5IGluIHN1Y2ggYSBtYW5uZXIgYW5kXG5cCittYWtpbmcgaXQgYXZhaWxhYmxlIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgU3BlY2lmaWNhdGlvbiwgeW91IGZ1cnRoZXIgYWNrbm93bGVkZ2UgeW91clxuXAorYWdyZWVtZW50IHRvLCBhbmQgdGhlIGFjcXVpc2l0aW9uIG9mIGFsbCBuZWNlc3NhcnkgcmlnaHRzIHRvIHBlcm1pdCB0aGUgZm9sbG93aW5nOlxuXAorXG5cCisgICAgICAgMS4gQSBzZXJpZXMgb2YgYWN0aW9ucyBtYXkgb2NjdXIgKCJQcm92aXNpb25pbmcgUHJvY2VzcyIpIGluIHdoaWNoIGEgdXNlciBtYXkgZXhlY3V0ZVxuXAorICAgICAgICAgIHRoZSBQcm92aXNpb25pbmcgVGVjaG5vbG9neSBvbiBhIG1hY2hpbmUgKCJUYXJnZXQgTWFjaGluZSIpIHdpdGggdGhlIGludGVudCBvZiBpbnN0YWxsaW5nLFxuXAorICAgICAgICAgIGV4dGVuZGluZyBvciB1cGRhdGluZyB0aGUgZnVuY3Rpb25hbGl0eSBvZiBhbiBFY2xpcHNlLWJhc2VkIHByb2R1Y3QuXG5cCisgICAgICAgMi4gRHVyaW5nIHRoZSBQcm92aXNpb25pbmcgUHJvY2VzcywgdGhlIFByb3Zpc2lvbmluZyBUZWNobm9sb2d5IG1heSBjYXVzZSB0aGlyZCBwYXJ0eVxuXAorICAgICAgICAgIEluc3RhbGxhYmxlIFNvZnR3YXJlIG9yIGEgcG9ydGlvbiB0aGVyZW9mIHRvIGJlIGFjY2Vzc2VkIGFuZCBjb3BpZWQgdG8gdGhlIFRhcmdldCBNYWNoaW5lLlxuXAorICAgICAgIDMuIFB1cnN1YW50IHRvIHRoZSBTcGVjaWZpY2F0aW9uLCB5b3Ugd2lsbCBwcm92aWRlIHRvIHRoZSB1c2VyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyB0aGF0XG5cCisgICAgICAgICAgZ292ZXJuIHRoZSB1c2Ugb2YgdGhlIEluc3RhbGxhYmxlIFNvZnR3YXJlICgiSW5zdGFsbGFibGUgU29mdHdhcmUgQWdyZWVtZW50IikgYW5kIHN1Y2hcblwKKyAgICAgICAgICBJbnN0YWxsYWJsZSBTb2Z0d2FyZSBBZ3JlZW1lbnQgc2hhbGwgYmUgYWNjZXNzZWQgZnJvbSB0aGUgVGFyZ2V0IE1hY2hpbmUgaW4gYWNjb3JkYW5jZVxuXAorICAgICAgICAgIHdpdGggdGhlIFNwZWNpZmljYXRpb24uIFN1Y2ggSW5zdGFsbGFibGUgU29mdHdhcmUgQWdyZWVtZW50IG11c3QgaW5mb3JtIHRoZSB1c2VyIG9mIHRoZVxuXAorICAgICAgICAgIHRlcm1zIGFuZCBjb25kaXRpb25zIHRoYXQgZ292ZXJuIHRoZSBJbnN0YWxsYWJsZSBTb2Z0d2FyZSBhbmQgbXVzdCBzb2xpY2l0IGFjY2VwdGFuY2UgYnlcblwKKyAgICAgICAgICB0aGUgZW5kIHVzZXIgaW4gdGhlIG1hbm5lciBwcmVzY3JpYmVkIGluIHN1Y2ggSW5zdGFsbGFibGUgU29mdHdhcmUgQWdyZWVtZW50LiBVcG9uIHN1Y2hcblwKKyAgICAgICAgICBpbmRpY2F0aW9uIG9mIGFncmVlbWVudCBieSB0aGUgdXNlciwgdGhlIHByb3Zpc2lvbmluZyBUZWNobm9sb2d5IHdpbGwgY29tcGxldGUgaW5zdGFsbGF0aW9uXG5cCisgICAgICAgICAgb2YgdGhlIEluc3RhbGxhYmxlIFNvZnR3YXJlLlxuXAorXG5cCitDcnlwdG9ncmFwaHlcblwKK1xuXAorQ29udGVudCBtYXkgY29udGFpbiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBUaGUgY291bnRyeSBpbiB3aGljaCB5b3UgYXJlXG5cCitjdXJyZW50bHkgbWF5IGhhdmUgcmVzdHJpY3Rpb25zIG9uIHRoZSBpbXBvcnQsIHBvc3Nlc3Npb24sIGFuZCB1c2UsXG5cCithbmQvb3IgcmUtZXhwb3J0IHRvIGFub3RoZXIgY291bnRyeSwgb2YgZW5jcnlwdGlvbiBzb2Z0d2FyZS4gQkVGT1JFXG5cCit1c2luZyBhbnkgZW5jcnlwdGlvbiBzb2Z0d2FyZSwgcGxlYXNlIGNoZWNrIHRoZSBjb3VudHJ5J3MgbGF3cyxcblwKK3JlZ3VsYXRpb25zIGFuZCBwb2xpY2llcyBjb25jZXJuaW5nIHRoZSBpbXBvcnQsIHBvc3Nlc3Npb24sIG9yIHVzZSwgYW5kXG5cCityZS1leHBvcnQgb2YgZW5jcnlwdGlvbiBzb2Z0d2FyZSwgdG8gc2VlIGlmIHRoaXMgaXMgcGVybWl0dGVkLlxuXAorXG5cCitKYXZhIGFuZCBhbGwgSmF2YS1iYXNlZCB0cmFkZW1hcmtzIGFyZSB0cmFkZW1hcmtzIG9mIE9yYWNsZSBDb3Jwb3JhdGlvbiBpbiB0aGUgVW5pdGVkIFN0YXRlcywgb3RoZXIgY291bnRyaWVzLCBvciBib3RoLlxuCisjIyMjIyMjIyMjIyBlbmQgb2YgbGljZW5zZSBwcm9wZXJ0eSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28ubmFuby5tYmVhbnMvZmVhdHVyZS54bWwgYi9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28ubmFuby5tYmVhbnMvZmVhdHVyZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMDJkYTE5NAotLS0gL2Rldi9udWxsCisrKyBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5uYW5vLm1iZWFucy9mZWF0dXJlLnhtbApAQCAtMCwwICsxLDM2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPGZlYXR1cmUKKyAgICAgIGlkPSJvcmcuZWNsaXBzZS52aXJnby5uYW5vLm1iZWFucyIKKyAgICAgIGxhYmVsPSIlZmVhdHVyZU5hbWUiCisgICAgICB2ZXJzaW9uPSJATkFOTy5WRVJTSU9OQCIKKyAgICAgIHByb3ZpZGVyLW5hbWU9IiVwcm92aWRlck5hbWUiCisgICAgICBpbWFnZT0iZWNsaXBzZV91cGRhdGVfMTIwLmpwZyI+CisKKyAgIDxkZXNjcmlwdGlvbiB1cmw9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdmlyZ28vIj4KKyAgICAgICVkZXNjcmlwdGlvbgorICAgPC9kZXNjcmlwdGlvbj4KKworICAgPGNvcHlyaWdodCB1cmw9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdmlyZ28vIj4KKyAgICAgICVjb3B5cmlnaHQKKyAgIDwvY29weXJpZ2h0PgorCisgICA8bGljZW5zZSB1cmw9IiVsaWNlbnNlVVJMIj4KKyAgICAgICVsaWNlbnNlCisgICA8L2xpY2Vuc2U+CisKKyAgICA8cGx1Z2luCisgICAgaWQ9Im9yZy5lY2xpcHNlLnZpcmdvLnV0aWwuam14IgorICAgIGRvd25sb2FkLXNpemU9IjAiCisgICAgaW5zdGFsbC1zaXplPSIwIgorICAgIHZlcnNpb249IkBVVElMLlZFUlNJT05AIgorICAgIHVucGFjaz0iZmFsc2UiLz4KKyAgICAKKyAgIDxwbHVnaW4KKyAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS52aXJnby5uYW5vLm1hbmFnZW1lbnQiCisgICAgICAgICBkb3dubG9hZC1zaXplPSIwIgorICAgICAgICAgaW5zdGFsbC1zaXplPSIwIgorICAgICAgICAgdmVyc2lvbj0iQE5BTk8uVkVSU0lPTkAiCisgICAgICAgICB1bnBhY2s9ImZhbHNlIgorICAgICAgICAgYXV0b3N0YXJ0PSJ0cnVlIi8+CisKKzwvZmVhdHVyZT4KZGlmZiAtLWdpdCBhL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5uYW5vLm1iZWFucy9saWNlbnNlLmh0bWwgYi9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28ubmFuby5tYmVhbnMvbGljZW5zZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmYxOWM0ODMKLS0tIC9kZXYvbnVsbAorKysgYi9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28ubmFuby5tYmVhbnMvbGljZW5zZS5odG1sCkBAIC0wLDAgKzEsMTA4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJJU08tODg1OS0xIiA/PgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIiAvPgorPHRpdGxlPkVjbGlwc2UgRm91bmRhdGlvbiBTb2Z0d2FyZSBVc2VyIEFncmVlbWVudDwvdGl0bGU+Cis8L2hlYWQ+CisKKzxib2R5IGxhbmc9IkVOLVVTIj4KKzxoMj5FY2xpcHNlIEZvdW5kYXRpb24gU29mdHdhcmUgVXNlciBBZ3JlZW1lbnQ8L2gyPgorPHA+RmVicnVhcnkgMSwgMjAxMTwvcD4KKworPGgzPlVzYWdlIE9mIENvbnRlbnQ8L2gzPgorCis8cD5USEUgRUNMSVBTRSBGT1VOREFUSU9OIE1BS0VTIEFWQUlMQUJMRSBTT0ZUV0FSRSwgRE9DVU1FTlRBVElPTiwgSU5GT1JNQVRJT04gQU5EL09SIE9USEVSIE1BVEVSSUFMUyBGT1IgT1BFTiBTT1VSQ0UgUFJPSkVDVFMKKyAgIChDT0xMRUNUSVZFTFkgJnF1b3Q7Q09OVEVOVCZxdW90OykuICBVU0UgT0YgVEhFIENPTlRFTlQgSVMgR09WRVJORUQgQlkgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIFRISVMgQUdSRUVNRU5UIEFORC9PUiBUSEUgVEVSTVMgQU5ECisgICBDT05ESVRJT05TIE9GIExJQ0VOU0UgQUdSRUVNRU5UUyBPUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLiAgQlkgVVNJTkcgVEhFIENPTlRFTlQsIFlPVSBBR1JFRSBUSEFUIFlPVVIgVVNFCisgICBPRiBUSEUgQ09OVEVOVCBJUyBHT1ZFUk5FRCBCWSBUSElTIEFHUkVFTUVOVCBBTkQvT1IgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIEFOWSBBUFBMSUNBQkxFIExJQ0VOU0UgQUdSRUVNRU5UUyBPUgorICAgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVy4gIElGIFlPVSBETyBOT1QgQUdSRUUgVE8gVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIFRISVMgQUdSRUVNRU5UIEFORCBUSEUgVEVSTVMgQU5ECisgICBDT05ESVRJT05TIE9GIEFOWSBBUFBMSUNBQkxFIExJQ0VOU0UgQUdSRUVNRU5UUyBPUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLCBUSEVOIFlPVSBNQVkgTk9UIFVTRSBUSEUgQ09OVEVOVC48L3A+CisKKzxoMz5BcHBsaWNhYmxlIExpY2Vuc2VzPC9oMz4KKworPHA+VW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQsIGFsbCBDb250ZW50IG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMAorICAgKCZxdW90O0VQTCZxdW90OykuICBBIGNvcHkgb2YgdGhlIEVQTCBpcyBwcm92aWRlZCB3aXRoIHRoaXMgQ29udGVudCBhbmQgaXMgYWxzbyBhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sPC9hPi4KKyAgIEZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC48L3A+CisKKzxwPkNvbnRlbnQgaW5jbHVkZXMsIGJ1dCBpcyBub3QgbGltaXRlZCB0bywgc291cmNlIGNvZGUsIG9iamVjdCBjb2RlLCBkb2N1bWVudGF0aW9uIGFuZCBvdGhlciBmaWxlcyBtYWludGFpbmVkIGluIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gc291cmNlIGNvZGUKKyAgIHJlcG9zaXRvcnkgKCZxdW90O1JlcG9zaXRvcnkmcXVvdDspIGluIHNvZnR3YXJlIG1vZHVsZXMgKCZxdW90O01vZHVsZXMmcXVvdDspIGFuZCBtYWRlIGF2YWlsYWJsZSBhcyBkb3dubG9hZGFibGUgYXJjaGl2ZXMgKCZxdW90O0Rvd25sb2FkcyZxdW90OykuPC9wPgorCis8dWw+CisgICAgICAgPGxpPkNvbnRlbnQgbWF5IGJlIHN0cnVjdHVyZWQgYW5kIHBhY2thZ2VkIGludG8gbW9kdWxlcyB0byBmYWNpbGl0YXRlIGRlbGl2ZXJpbmcsIGV4dGVuZGluZywgYW5kIHVwZ3JhZGluZyB0aGUgQ29udGVudC4gIFR5cGljYWwgbW9kdWxlcyBtYXkgaW5jbHVkZSBwbHVnLWlucyAoJnF1b3Q7UGx1Zy1pbnMmcXVvdDspLCBwbHVnLWluIGZyYWdtZW50cyAoJnF1b3Q7RnJhZ21lbnRzJnF1b3Q7KSwgYW5kIGZlYXR1cmVzICgmcXVvdDtGZWF0dXJlcyZxdW90OykuPC9saT4KKyAgICAgICA8bGk+RWFjaCBQbHVnLWluIG9yIEZyYWdtZW50IG1heSBiZSBwYWNrYWdlZCBhcyBhIHN1Yi1kaXJlY3Rvcnkgb3IgSkFSIChKYXZhJnRyYWRlOyBBUmNoaXZlKSBpbiBhIGRpcmVjdG9yeSBuYW1lZCAmcXVvdDtwbHVnaW5zJnF1b3Q7LjwvbGk+CisgICAgICAgPGxpPkEgRmVhdHVyZSBpcyBhIGJ1bmRsZSBvZiBvbmUgb3IgbW9yZSBQbHVnLWlucyBhbmQvb3IgRnJhZ21lbnRzIGFuZCBhc3NvY2lhdGVkIG1hdGVyaWFsLiAgRWFjaCBGZWF0dXJlIG1heSBiZSBwYWNrYWdlZCBhcyBhIHN1Yi1kaXJlY3RvcnkgaW4gYSBkaXJlY3RvcnkgbmFtZWQgJnF1b3Q7ZmVhdHVyZXMmcXVvdDsuICBXaXRoaW4gYSBGZWF0dXJlLCBmaWxlcyBuYW1lZCAmcXVvdDtmZWF0dXJlLnhtbCZxdW90OyBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2YgdGhlIFBsdWctaW5zCisgICAgICBhbmQvb3IgRnJhZ21lbnRzIGFzc29jaWF0ZWQgd2l0aCB0aGF0IEZlYXR1cmUuPC9saT4KKyAgICAgICA8bGk+RmVhdHVyZXMgbWF5IGFsc28gaW5jbHVkZSBvdGhlciBGZWF0dXJlcyAoJnF1b3Q7SW5jbHVkZWQgRmVhdHVyZXMmcXVvdDspLiBXaXRoaW4gYSBGZWF0dXJlLCBmaWxlcyBuYW1lZCAmcXVvdDtmZWF0dXJlLnhtbCZxdW90OyBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2YgSW5jbHVkZWQgRmVhdHVyZXMuPC9saT4KKzwvdWw+CisKKzxwPlRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgUGx1Zy1pbnMgYW5kIEZyYWdtZW50cyBzaG91bGQgYmUgY29udGFpbmVkIGluIGZpbGVzIG5hbWVkICZxdW90O2Fib3V0Lmh0bWwmcXVvdDsgKCZxdW90O0Fib3V0cyZxdW90OykuIFRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgRmVhdHVyZXMgYW5kCitJbmNsdWRlZCBGZWF0dXJlcyBzaG91bGQgYmUgY29udGFpbmVkIGluIGZpbGVzIG5hbWVkICZxdW90O2xpY2Vuc2UuaHRtbCZxdW90OyAoJnF1b3Q7RmVhdHVyZSBMaWNlbnNlcyZxdW90OykuICBBYm91dHMgYW5kIEZlYXR1cmUgTGljZW5zZXMgbWF5IGJlIGxvY2F0ZWQgaW4gYW55IGRpcmVjdG9yeSBvZiBhIERvd25sb2FkIG9yIE1vZHVsZQoraW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG8gdGhlIGZvbGxvd2luZyBsb2NhdGlvbnM6PC9wPgorCis8dWw+CisgICAgICAgPGxpPlRoZSB0b3AtbGV2ZWwgKHJvb3QpIGRpcmVjdG9yeTwvbGk+CisgICAgICAgPGxpPlBsdWctaW4gYW5kIEZyYWdtZW50IGRpcmVjdG9yaWVzPC9saT4KKyAgICAgICA8bGk+SW5zaWRlIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgcGFja2FnZWQgYXMgSkFSczwvbGk+CisgICAgICAgPGxpPlN1Yi1kaXJlY3RvcmllcyBvZiB0aGUgZGlyZWN0b3J5IG5hbWVkICZxdW90O3NyYyZxdW90OyBvZiBjZXJ0YWluIFBsdWctaW5zPC9saT4KKyAgICAgICA8bGk+RmVhdHVyZSBkaXJlY3RvcmllczwvbGk+Cis8L3VsPgorCis8cD5Ob3RlOiBpZiBhIEZlYXR1cmUgbWFkZSBhdmFpbGFibGUgYnkgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpcyBpbnN0YWxsZWQgdXNpbmcgdGhlIFByb3Zpc2lvbmluZyBUZWNobm9sb2d5IChhcyBkZWZpbmVkIGJlbG93KSwgeW91IG11c3QgYWdyZWUgdG8gYSBsaWNlbnNlICgmcXVvdDtGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlJnF1b3Q7KSBkdXJpbmcgdGhlCitpbnN0YWxsYXRpb24gcHJvY2Vzcy4gIElmIHRoZSBGZWF0dXJlIGNvbnRhaW5zIEluY2x1ZGVkIEZlYXR1cmVzLCB0aGUgRmVhdHVyZSBVcGRhdGUgTGljZW5zZSBzaG91bGQgZWl0aGVyIHByb3ZpZGUgeW91IHdpdGggdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyB0aGUgSW5jbHVkZWQgRmVhdHVyZXMgb3IKK2luZm9ybSB5b3Ugd2hlcmUgeW91IGNhbiBsb2NhdGUgdGhlbS4gIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIG1heSBiZSBmb3VuZCBpbiB0aGUgJnF1b3Q7bGljZW5zZSZxdW90OyBwcm9wZXJ0eSBvZiBmaWxlcyBuYW1lZCAmcXVvdDtmZWF0dXJlLnByb3BlcnRpZXMmcXVvdDsgZm91bmQgd2l0aGluIGEgRmVhdHVyZS4KK1N1Y2ggQWJvdXRzLCBGZWF0dXJlIExpY2Vuc2VzLCBhbmQgRmVhdHVyZSBVcGRhdGUgTGljZW5zZXMgY29udGFpbiB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgKG9yIHJlZmVyZW5jZXMgdG8gc3VjaCB0ZXJtcyBhbmQgY29uZGl0aW9ucykgdGhhdCBnb3Zlcm4geW91ciB1c2Ugb2YgdGhlIGFzc29jaWF0ZWQgQ29udGVudCBpbgordGhhdCBkaXJlY3RvcnkuPC9wPgorCis8cD5USEUgQUJPVVRTLCBGRUFUVVJFIExJQ0VOU0VTLCBBTkQgRkVBVFVSRSBVUERBVEUgTElDRU5TRVMgTUFZIFJFRkVSIFRPIFRIRSBFUEwgT1IgT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTLCBOT1RJQ0VTIE9SIFRFUk1TIEFORCBDT05ESVRJT05TLiAgU09NRSBPRiBUSEVTRQorT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTIE1BWSBJTkNMVURFIChCVVQgQVJFIE5PVCBMSU1JVEVEIFRPKTo8L3A+CisKKzx1bD4KKyAgICAgICA8bGk+RWNsaXBzZSBEaXN0cmlidXRpb24gTGljZW5zZSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGljZW5zZXMvZWRsLXYxMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xpY2Vuc2VzL2VkbC12MS4wLmh0bWw8L2E+KTwvbGk+CisgICAgICAgPGxpPkNvbW1vbiBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2NwbC12MTAuaHRtbDwvYT4pPC9saT4KKyAgICAgICA8bGk+QXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UgMS4xIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UiPmh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFPC9hPik8L2xpPgorICAgICAgIDxsaT5BcGFjaGUgU29mdHdhcmUgTGljZW5zZSAyLjAgKGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAiPmh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMDwvYT4pPC9saT4KKyAgICAgICA8bGk+TWV0cm8gTGluayBQdWJsaWMgTGljZW5zZSAxLjAwIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29wZW5tb3RpZi9zdXBwb3J0ZXJzL21ldHJvbGluay9saWNlbnNlLmh0bWwiPmh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vcGVubW90aWYvc3VwcG9ydGVycy9tZXRyb2xpbmsvbGljZW5zZS5odG1sPC9hPik8L2xpPgorICAgICAgIDxsaT5Nb3ppbGxhIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4xIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvTVBMLTEuMS5odG1sIj5odHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC9NUEwtMS4xLmh0bWw8L2E+KTwvbGk+Cis8L3VsPgorCis8cD5JVCBJUyBZT1VSIE9CTElHQVRJT04gVE8gUkVBRCBBTkQgQUNDRVBUIEFMTCBTVUNIIFRFUk1TIEFORCBDT05ESVRJT05TIFBSSU9SIFRPIFVTRSBPRiBUSEUgQ09OVEVOVC4gIElmIG5vIEFib3V0LCBGZWF0dXJlIExpY2Vuc2UsIG9yIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2UgaXMgcHJvdmlkZWQsIHBsZWFzZQorY29udGFjdCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIHRvIGRldGVybWluZSB3aGF0IHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybiB0aGF0IHBhcnRpY3VsYXIgQ29udGVudC48L3A+CisKKworPGgzPlVzZSBvZiBQcm92aXNpb25pbmcgVGVjaG5vbG9neTwvaDM+CisKKzxwPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIHByb3Zpc2lvbmluZyBzb2Z0d2FyZSwgZXhhbXBsZXMgb2Ygd2hpY2ggaW5jbHVkZSwgYnV0IGFyZSBub3QgbGltaXRlZCB0bywgcDIgYW5kIHRoZSBFY2xpcHNlCisgICBVcGRhdGUgTWFuYWdlciAoJnF1b3Q7UHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kmcXVvdDspIGZvciB0aGUgcHVycG9zZSBvZiBhbGxvd2luZyB1c2VycyB0byBpbnN0YWxsIHNvZnR3YXJlLCBkb2N1bWVudGF0aW9uLCBpbmZvcm1hdGlvbiBhbmQvb3IKKyAgIG90aGVyIG1hdGVyaWFscyAoY29sbGVjdGl2ZWx5ICZxdW90O0luc3RhbGxhYmxlIFNvZnR3YXJlJnF1b3Q7KS4gVGhpcyBjYXBhYmlsaXR5IGlzIHByb3ZpZGVkIHdpdGggdGhlIGludGVudCBvZiBhbGxvd2luZyBzdWNoIHVzZXJzIHRvCisgICBpbnN0YWxsLCBleHRlbmQgYW5kIHVwZGF0ZSBFY2xpcHNlLWJhc2VkIHByb2R1Y3RzLiBJbmZvcm1hdGlvbiBhYm91dCBwYWNrYWdpbmcgSW5zdGFsbGFibGUgU29mdHdhcmUgaXMgYXZhaWxhYmxlIGF0IDxhCisgICAgICAgaHJlZj0iaHR0cDovL2VjbGlwc2Uub3JnL2VxdWlub3gvcDIvcmVwb3NpdG9yeV9wYWNrYWdpbmcuaHRtbCI+aHR0cDovL2VjbGlwc2Uub3JnL2VxdWlub3gvcDIvcmVwb3NpdG9yeV9wYWNrYWdpbmcuaHRtbDwvYT4KKyAgICgmcXVvdDtTcGVjaWZpY2F0aW9uJnF1b3Q7KS48L3A+CisKKzxwPllvdSBtYXkgdXNlIFByb3Zpc2lvbmluZyBUZWNobm9sb2d5IHRvIGFsbG93IG90aGVyIHBhcnRpZXMgdG8gaW5zdGFsbCBJbnN0YWxsYWJsZSBTb2Z0d2FyZS4gWW91IHNoYWxsIGJlIHJlc3BvbnNpYmxlIGZvciBlbmFibGluZyB0aGUKKyAgIGFwcGxpY2FibGUgbGljZW5zZSBhZ3JlZW1lbnRzIHJlbGF0aW5nIHRvIHRoZSBJbnN0YWxsYWJsZSBTb2Z0d2FyZSB0byBiZSBwcmVzZW50ZWQgdG8sIGFuZCBhY2NlcHRlZCBieSwgdGhlIHVzZXJzIG9mIHRoZSBQcm92aXNpb25pbmcgVGVjaG5vbG9neQorICAgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBTcGVjaWZpY2F0aW9uLiBCeSB1c2luZyBQcm92aXNpb25pbmcgVGVjaG5vbG9neSBpbiBzdWNoIGEgbWFubmVyIGFuZCBtYWtpbmcgaXQgYXZhaWxhYmxlIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUKKyAgIFNwZWNpZmljYXRpb24sIHlvdSBmdXJ0aGVyIGFja25vd2xlZGdlIHlvdXIgYWdyZWVtZW50IHRvLCBhbmQgdGhlIGFjcXVpc2l0aW9uIG9mIGFsbCBuZWNlc3NhcnkgcmlnaHRzIHRvIHBlcm1pdCB0aGUgZm9sbG93aW5nOjwvcD4KKworPG9sPgorICAgICAgIDxsaT5BIHNlcmllcyBvZiBhY3Rpb25zIG1heSBvY2N1ciAoJnF1b3Q7UHJvdmlzaW9uaW5nIFByb2Nlc3MmcXVvdDspIGluIHdoaWNoIGEgdXNlciBtYXkgZXhlY3V0ZSB0aGUgUHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kKKyAgICAgICBvbiBhIG1hY2hpbmUgKCZxdW90O1RhcmdldCBNYWNoaW5lJnF1b3Q7KSB3aXRoIHRoZSBpbnRlbnQgb2YgaW5zdGFsbGluZywgZXh0ZW5kaW5nIG9yIHVwZGF0aW5nIHRoZSBmdW5jdGlvbmFsaXR5IG9mIGFuIEVjbGlwc2UtYmFzZWQKKyAgICAgICBwcm9kdWN0LjwvbGk+CisgICAgICAgPGxpPkR1cmluZyB0aGUgUHJvdmlzaW9uaW5nIFByb2Nlc3MsIHRoZSBQcm92aXNpb25pbmcgVGVjaG5vbG9neSBtYXkgY2F1c2UgdGhpcmQgcGFydHkgSW5zdGFsbGFibGUgU29mdHdhcmUgb3IgYSBwb3J0aW9uIHRoZXJlb2YgdG8gYmUKKyAgICAgICBhY2Nlc3NlZCBhbmQgY29waWVkIHRvIHRoZSBUYXJnZXQgTWFjaGluZS48L2xpPgorICAgICAgIDxsaT5QdXJzdWFudCB0byB0aGUgU3BlY2lmaWNhdGlvbiwgeW91IHdpbGwgcHJvdmlkZSB0byB0aGUgdXNlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgdGhhdCBnb3Zlcm4gdGhlIHVzZSBvZiB0aGUgSW5zdGFsbGFibGUKKyAgICAgICBTb2Z0d2FyZSAoJnF1b3Q7SW5zdGFsbGFibGUgU29mdHdhcmUgQWdyZWVtZW50JnF1b3Q7KSBhbmQgc3VjaCBJbnN0YWxsYWJsZSBTb2Z0d2FyZSBBZ3JlZW1lbnQgc2hhbGwgYmUgYWNjZXNzZWQgZnJvbSB0aGUgVGFyZ2V0CisgICAgICAgTWFjaGluZSBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIFNwZWNpZmljYXRpb24uIFN1Y2ggSW5zdGFsbGFibGUgU29mdHdhcmUgQWdyZWVtZW50IG11c3QgaW5mb3JtIHRoZSB1c2VyIG9mIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyB0aGF0IGdvdmVybgorICAgICAgIHRoZSBJbnN0YWxsYWJsZSBTb2Z0d2FyZSBhbmQgbXVzdCBzb2xpY2l0IGFjY2VwdGFuY2UgYnkgdGhlIGVuZCB1c2VyIGluIHRoZSBtYW5uZXIgcHJlc2NyaWJlZCBpbiBzdWNoIEluc3RhbGxhYmxlIFNvZnR3YXJlIEFncmVlbWVudC4gVXBvbiBzdWNoCisgICAgICAgaW5kaWNhdGlvbiBvZiBhZ3JlZW1lbnQgYnkgdGhlIHVzZXIsIHRoZSBwcm92aXNpb25pbmcgVGVjaG5vbG9neSB3aWxsIGNvbXBsZXRlIGluc3RhbGxhdGlvbiBvZiB0aGUgSW5zdGFsbGFibGUgU29mdHdhcmUuPC9saT4KKzwvb2w+CisKKzxoMz5DcnlwdG9ncmFwaHk8L2gzPgorCis8cD5Db250ZW50IG1heSBjb250YWluIGVuY3J5cHRpb24gc29mdHdhcmUuIFRoZSBjb3VudHJ5IGluIHdoaWNoIHlvdSBhcmUgY3VycmVudGx5IG1heSBoYXZlIHJlc3RyaWN0aW9ucyBvbiB0aGUgaW1wb3J0LCBwb3NzZXNzaW9uLCBhbmQgdXNlLCBhbmQvb3IgcmUtZXhwb3J0IHRvCisgICBhbm90aGVyIGNvdW50cnksIG9mIGVuY3J5cHRpb24gc29mdHdhcmUuIEJFRk9SRSB1c2luZyBhbnkgZW5jcnlwdGlvbiBzb2Z0d2FyZSwgcGxlYXNlIGNoZWNrIHRoZSBjb3VudHJ5J3MgbGF3cywgcmVndWxhdGlvbnMgYW5kIHBvbGljaWVzIGNvbmNlcm5pbmcgdGhlIGltcG9ydCwKKyAgIHBvc3Nlc3Npb24sIG9yIHVzZSwgYW5kIHJlLWV4cG9ydCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLCB0byBzZWUgaWYgdGhpcyBpcyBwZXJtaXR0ZWQuPC9wPgorCis8cD48c21hbGw+SmF2YSBhbmQgYWxsIEphdmEtYmFzZWQgdHJhZGVtYXJrcyBhcmUgdHJhZGVtYXJrcyBvZiBPcmFjbGUgQ29ycG9yYXRpb24gaW4gdGhlIFVuaXRlZCBTdGF0ZXMsIG90aGVyIGNvdW50cmllcywgb3IgYm90aC48L3NtYWxsPjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkucmVzb3VyY2VzL2J1aWxkLnByb3BlcnRpZXMgYi9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uc2hlbGwvYnVpbGQucHJvcGVydGllcwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKY29weSBmcm9tIGJ1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkucmVzb3VyY2VzL2J1aWxkLnByb3BlcnRpZXMKY29weSB0byBqZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uc2hlbGwvYnVpbGQucHJvcGVydGllcwpkaWZmIC0tZ2l0IGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5yZXNvdXJjZXMvZWNsaXBzZV91cGRhdGVfMTIwLmpwZyBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5zaGVsbC9lY2xpcHNlX3VwZGF0ZV8xMjAuanBnCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpjb3B5IGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5yZXNvdXJjZXMvZWNsaXBzZV91cGRhdGVfMTIwLmpwZwpjb3B5IHRvIGpldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5zaGVsbC9lY2xpcHNlX3VwZGF0ZV8xMjAuanBnCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkucmVzb3VyY2VzL2VwbC12MTAuaHRtbCBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5zaGVsbC9lcGwtdjEwLmh0bWwKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBidWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnJlc291cmNlcy9lcGwtdjEwLmh0bWwKY29weSB0byBqZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uc2hlbGwvZXBsLXYxMC5odG1sCmRpZmYgLS1naXQgYS9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uc2hlbGwvZmVhdHVyZS5wcm9wZXJ0aWVzIGIvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLnNoZWxsL2ZlYXR1cmUucHJvcGVydGllcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43M2MyODUwCi0tLSAvZGV2L251bGwKKysrIGIvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLnNoZWxsL2ZlYXR1cmUucHJvcGVydGllcwpAQCAtMCwwICsxLDE4MCBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBDb3B5cmlnaHQgKGMpIDIwMTEgU0FQIEFHCisjCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKKyMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisjIGFuZCBBcGFjaGUgTGljZW5zZSB2Mi4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLgorIyBUaGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBpcyBhdmFpbGFibGUgYXQKKyMgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorIyBhbmQgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgaXMgYXZhaWxhYmxlIGF0CisjICAgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hcGFjaGUyLjAucGhwLgorIyBZb3UgbWF5IGVsZWN0IHRvIHJlZGlzdHJpYnV0ZSB0aGlzIGNvZGUgdW5kZXIgZWl0aGVyIG9mIHRoZXNlIGxpY2Vuc2VzLgorIworIyBDb250cmlidXRvcnM6CisjICAgQm9yaXNsYXYgS2FwdWthcmFub3YgLSBpbml0aWFsIGNvbnRyaWJ1dGlvbgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBmZWF0dXJlLnByb3BlcnRpZXMKKyMgY29udGFpbnMgZXh0ZXJuYWxpemVkIHN0cmluZ3MgZm9yIGZlYXR1cmUueG1sCisjICIlZm9vIiBpbiBmZWF0dXJlLnhtbCBjb3JyZXNwb25kcyB0byB0aGUga2V5ICJmb28iIGluIHRoaXMgZmlsZQorIyBqYXZhLmlvLlByb3BlcnRpZXMgZmlsZSAoSVNPIDg4NTktMSB3aXRoICJcIiBlc2NhcGVzKQorIyBUaGlzIGZpbGUgc2hvdWxkIGJlIHRyYW5zbGF0ZWQuCisKKyMgImZlYXR1cmVOYW1lIiBwcm9wZXJ0eSAtIG5hbWUgb2YgdGhlIGZlYXR1cmUKK2ZlYXR1cmVOYW1lPUVjbGlwc2UgVmlyZ28gU2hlbGwgRmVhdHVyZQorCisjICJwcm92aWRlck5hbWUiIHByb3BlcnR5IC0gbmFtZSBvZiB0aGUgY29tcGFueSB0aGF0IHByb3ZpZGVzIHRoZSBmZWF0dXJlCitwcm92aWRlck5hbWU9RWNsaXBzZS5vcmcKKworIyAidXBkYXRlU2l0ZU5hbWUiIHByb3BlcnR5IC0gbGFiZWwgZm9yIHRoZSB1cGRhdGUgc2l0ZQorCisjICJkZXNjcmlwdGlvbiIgcHJvcGVydHkgLSBkZXNjcmlwdGlvbiBvZiB0aGUgZmVhdHVyZQorZGVzY3JpcHRpb249VGhpcyBmZWF0dXJlIHByb3ZpZGVzIHRoZSBTaGVsbCBmZWF0dXJlIG9mIGFuIEVjbGlwc2UgVmlyZ28gT1NHaSBjb250YWluZXIuIEl0IGlzIGJhc2VkIG9uIHRoZSBFcXVpbm94IGNvbnNvbGUuXG5cCisKKyMgImNvcHlyaWdodCIgcHJvcGVydHkgLSB0ZXh0IG9mIHRoZSAiRmVhdHVyZSBVcGRhdGUgQ29weXJpZ2h0IgorY29weXJpZ2h0PVwKK0NvcHlyaWdodCAoYykgMjAwOSwgMjAxMCwgMjAxMSBWTXdhcmUgSW5jLiBhbmQgb3RoZXJzXG5cCitcblwKK0FsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHNcblwKK2FyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMFxuXAorYW5kIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uXG5cCitUaGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBpcyBhdmFpbGFibGUgYXRcblwKK2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sXG5cCithbmQgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgaXMgYXZhaWxhYmxlIGF0XG5cCitodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FwYWNoZTIuMC5waHAuXG5cCitZb3UgbWF5IGVsZWN0IHRvIHJlZGlzdHJpYnV0ZSB0aGlzIGNvZGUgdW5kZXIgZWl0aGVyIG9mIHRoZXNlXG5cCitsaWNlbnNlcy5cblwKK1xuXAorQ29udHJpYnV0b3JzOlxuXAorVk13YXJlIEluYy4gLSBpbml0aWFsIGNvbnRyaWJ1dGlvblxuXAorCisjICJsaWNlbnNlVVJMIiBwcm9wZXJ0eSAtIFVSTCBvZiB0aGUgIkZlYXR1cmUgTGljZW5zZSIKKyMgZG8gbm90IHRyYW5zbGF0ZSB2YWx1ZSAtIGp1c3QgY2hhbmdlIHRvIHBvaW50IHRvIGEgbG9jYWxlLXNwZWNpZmljIEhUTUwgcGFnZQorbGljZW5zZVVSTD1saWNlbnNlLmh0bWwKKworIyAibGljZW5zZSIgcHJvcGVydHkgLSB0ZXh0IG9mIHRoZSAiRmVhdHVyZSBVcGRhdGUgTGljZW5zZSIKKyMgc2hvdWxkIGJlIHBsYWluIHRleHQgdmVyc2lvbiBvZiBsaWNlbnNlIGFncmVlbWVudCBwb2ludGVkIHRvIGJlICJsaWNlbnNlVVJMIgorbGljZW5zZT1cCitFY2xpcHNlIEZvdW5kYXRpb24gU29mdHdhcmUgVXNlciBBZ3JlZW1lbnRcblwKK0ZlYnJ1YXJ5IDEsIDIwMTFcblwKK1xuXAorVXNhZ2UgT2YgQ29udGVudFxuXAorXG5cCitUSEUgRUNMSVBTRSBGT1VOREFUSU9OIE1BS0VTIEFWQUlMQUJMRSBTT0ZUV0FSRSwgRE9DVU1FTlRBVElPTiwgSU5GT1JNQVRJT04gQU5EL09SXG5cCitPVEhFUiBNQVRFUklBTFMgRk9SIE9QRU4gU09VUkNFIFBST0pFQ1RTIChDT0xMRUNUSVZFTFkgIkNPTlRFTlQiKS5cblwKK1VTRSBPRiBUSEUgQ09OVEVOVCBJUyBHT1ZFUk5FRCBCWSBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgVEhJU1xuXAorQUdSRUVNRU5UIEFORC9PUiBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgTElDRU5TRSBBR1JFRU1FTlRTIE9SXG5cCitOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLiAgQlkgVVNJTkcgVEhFIENPTlRFTlQsIFlPVVxuXAorQUdSRUUgVEhBVCBZT1VSIFVTRSBPRiBUSEUgQ09OVEVOVCBJUyBHT1ZFUk5FRCBCWSBUSElTIEFHUkVFTUVOVFxuXAorQU5EL09SIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBBTlkgQVBQTElDQUJMRSBMSUNFTlNFIEFHUkVFTUVOVFNcblwKK09SIE5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRUQgQkVMT1cuICBJRiBZT1UgRE8gTk9UIEFHUkVFIFRPIFRIRVxuXAorVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgVEhJUyBBR1JFRU1FTlQgQU5EIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OU1xuXAorT0YgQU5ZIEFQUExJQ0FCTEUgTElDRU5TRSBBR1JFRU1FTlRTIE9SIE5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRURcblwKK0JFTE9XLCBUSEVOIFlPVSBNQVkgTk9UIFVTRSBUSEUgQ09OVEVOVC5cblwKK1xuXAorQXBwbGljYWJsZSBMaWNlbnNlc1xuXAorXG5cCitVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCwgYWxsIENvbnRlbnQgbWFkZSBhdmFpbGFibGUgYnkgdGhlXG5cCitFY2xpcHNlIEZvdW5kYXRpb24gaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZlxuXAordGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgKCJFUEwiKS4gQSBjb3B5IG9mIHRoZSBFUEwgaXNcblwKK3Byb3ZpZGVkIHdpdGggdGhpcyBDb250ZW50IGFuZCBpcyBhbHNvIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbC5cblwKK0ZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAiUHJvZ3JhbSIgd2lsbCBtZWFuIHRoZSBDb250ZW50LlxuXAorXG5cCitDb250ZW50IGluY2x1ZGVzLCBidXQgaXMgbm90IGxpbWl0ZWQgdG8sIHNvdXJjZSBjb2RlLCBvYmplY3QgY29kZSxcblwKK2RvY3VtZW50YXRpb24gYW5kIG90aGVyIGZpbGVzIG1haW50YWluZWQgaW4gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiBzb3VyY2UgY29kZVxuXAorcmVwb3NpdG9yeSAoIlJlcG9zaXRvcnkiKSBpbiBzb2Z0d2FyZSBtb2R1bGVzICgiTW9kdWxlcyIpIGFuZCBtYWRlIGF2YWlsYWJsZVxuXAorYXMgZG93bmxvYWRhYmxlIGFyY2hpdmVzICgiRG93bmxvYWRzIikuXG5cCitcblwKKyAgICAgICAtIENvbnRlbnQgbWF5IGJlIHN0cnVjdHVyZWQgYW5kIHBhY2thZ2VkIGludG8gbW9kdWxlcyB0byBmYWNpbGl0YXRlIGRlbGl2ZXJpbmcsXG5cCisgICAgICAgICBleHRlbmRpbmcsIGFuZCB1cGdyYWRpbmcgdGhlIENvbnRlbnQuIFR5cGljYWwgbW9kdWxlcyBtYXkgaW5jbHVkZSBwbHVnLWlucyAoIlBsdWctaW5zIiksXG5cCisgICAgICAgICBwbHVnLWluIGZyYWdtZW50cyAoIkZyYWdtZW50cyIpLCBhbmQgZmVhdHVyZXMgKCJGZWF0dXJlcyIpLlxuXAorICAgICAgIC0gRWFjaCBQbHVnLWluIG9yIEZyYWdtZW50IG1heSBiZSBwYWNrYWdlZCBhcyBhIHN1Yi1kaXJlY3Rvcnkgb3IgSkFSIChKYXZhKFRNKSBBUmNoaXZlKVxuXAorICAgICAgICAgaW4gYSBkaXJlY3RvcnkgbmFtZWQgInBsdWdpbnMiLlxuXAorICAgICAgIC0gQSBGZWF0dXJlIGlzIGEgYnVuZGxlIG9mIG9uZSBvciBtb3JlIFBsdWctaW5zIGFuZC9vciBGcmFnbWVudHMgYW5kIGFzc29jaWF0ZWQgbWF0ZXJpYWwuXG5cCisgICAgICAgICBFYWNoIEZlYXR1cmUgbWF5IGJlIHBhY2thZ2VkIGFzIGEgc3ViLWRpcmVjdG9yeSBpbiBhIGRpcmVjdG9yeSBuYW1lZCAiZmVhdHVyZXMiLlxuXAorICAgICAgICAgV2l0aGluIGEgRmVhdHVyZSwgZmlsZXMgbmFtZWQgImZlYXR1cmUueG1sIiBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uXG5cCisgICAgICAgICBudW1iZXJzIG9mIHRoZSBQbHVnLWlucyBhbmQvb3IgRnJhZ21lbnRzIGFzc29jaWF0ZWQgd2l0aCB0aGF0IEZlYXR1cmUuXG5cCisgICAgICAgLSBGZWF0dXJlcyBtYXkgYWxzbyBpbmNsdWRlIG90aGVyIEZlYXR1cmVzICgiSW5jbHVkZWQgRmVhdHVyZXMiKS4gV2l0aGluIGEgRmVhdHVyZSwgZmlsZXNcblwKKyAgICAgICAgIG5hbWVkICJmZWF0dXJlLnhtbCIgbWF5IGNvbnRhaW4gYSBsaXN0IG9mIHRoZSBuYW1lcyBhbmQgdmVyc2lvbiBudW1iZXJzIG9mIEluY2x1ZGVkIEZlYXR1cmVzLlxuXAorXG5cCitUaGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZ292ZXJuaW5nIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgc2hvdWxkIGJlXG5cCitjb250YWluZWQgaW4gZmlsZXMgbmFtZWQgImFib3V0Lmh0bWwiICgiQWJvdXRzIikuIFRoZSB0ZXJtcyBhbmRcblwKK2NvbmRpdGlvbnMgZ292ZXJuaW5nIEZlYXR1cmVzIGFuZCBJbmNsdWRlZCBGZWF0dXJlcyBzaG91bGQgYmUgY29udGFpbmVkXG5cCitpbiBmaWxlcyBuYW1lZCAibGljZW5zZS5odG1sIiAoIkZlYXR1cmUgTGljZW5zZXMiKS4gQWJvdXRzIGFuZCBGZWF0dXJlXG5cCitMaWNlbnNlcyBtYXkgYmUgbG9jYXRlZCBpbiBhbnkgZGlyZWN0b3J5IG9mIGEgRG93bmxvYWQgb3IgTW9kdWxlXG5cCitpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0byB0aGUgZm9sbG93aW5nIGxvY2F0aW9uczpcblwKK1xuXAorICAgICAgIC0gVGhlIHRvcC1sZXZlbCAocm9vdCkgZGlyZWN0b3J5XG5cCisgICAgICAgLSBQbHVnLWluIGFuZCBGcmFnbWVudCBkaXJlY3Rvcmllc1xuXAorICAgICAgIC0gSW5zaWRlIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgcGFja2FnZWQgYXMgSkFSc1xuXAorICAgICAgIC0gU3ViLWRpcmVjdG9yaWVzIG9mIHRoZSBkaXJlY3RvcnkgbmFtZWQgInNyYyIgb2YgY2VydGFpbiBQbHVnLWluc1xuXAorICAgICAgIC0gRmVhdHVyZSBkaXJlY3Rvcmllc1xuXAorXG5cCitOb3RlOiBpZiBhIEZlYXR1cmUgbWFkZSBhdmFpbGFibGUgYnkgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpcyBpbnN0YWxsZWQgdXNpbmcgdGhlXG5cCitQcm92aXNpb25pbmcgVGVjaG5vbG9neSAoYXMgZGVmaW5lZCBiZWxvdyksIHlvdSBtdXN0IGFncmVlIHRvIGEgbGljZW5zZSAoIkZlYXR1cmUgXG5cCitVcGRhdGUgTGljZW5zZSIpIGR1cmluZyB0aGUgaW5zdGFsbGF0aW9uIHByb2Nlc3MuIElmIHRoZSBGZWF0dXJlIGNvbnRhaW5zXG5cCitJbmNsdWRlZCBGZWF0dXJlcywgdGhlIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2Ugc2hvdWxkIGVpdGhlciBwcm92aWRlIHlvdVxuXAord2l0aCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZ292ZXJuaW5nIHRoZSBJbmNsdWRlZCBGZWF0dXJlcyBvciBpbmZvcm1cblwKK3lvdSB3aGVyZSB5b3UgY2FuIGxvY2F0ZSB0aGVtLiBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlcyBtYXkgYmUgZm91bmQgaW5cblwKK3RoZSAibGljZW5zZSIgcHJvcGVydHkgb2YgZmlsZXMgbmFtZWQgImZlYXR1cmUucHJvcGVydGllcyIgZm91bmQgd2l0aGluIGEgRmVhdHVyZS5cblwKK1N1Y2ggQWJvdXRzLCBGZWF0dXJlIExpY2Vuc2VzLCBhbmQgRmVhdHVyZSBVcGRhdGUgTGljZW5zZXMgY29udGFpbiB0aGVcblwKK3Rlcm1zIGFuZCBjb25kaXRpb25zIChvciByZWZlcmVuY2VzIHRvIHN1Y2ggdGVybXMgYW5kIGNvbmRpdGlvbnMpIHRoYXRcblwKK2dvdmVybiB5b3VyIHVzZSBvZiB0aGUgYXNzb2NpYXRlZCBDb250ZW50IGluIHRoYXQgZGlyZWN0b3J5LlxuXAorXG5cCitUSEUgQUJPVVRTLCBGRUFUVVJFIExJQ0VOU0VTLCBBTkQgRkVBVFVSRSBVUERBVEUgTElDRU5TRVMgTUFZIFJFRkVSXG5cCitUTyBUSEUgRVBMIE9SIE9USEVSIExJQ0VOU0UgQUdSRUVNRU5UUywgTk9USUNFUyBPUiBURVJNUyBBTkQgQ09ORElUSU9OUy5cblwKK1NPTUUgT0YgVEhFU0UgT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTIE1BWSBJTkNMVURFIChCVVQgQVJFIE5PVCBMSU1JVEVEIFRPKTpcblwKK1xuXAorICAgICAgIC0gRWNsaXBzZSBEaXN0cmlidXRpb24gTGljZW5zZSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGljZW5zZXMvZWRsLXYxLjAuaHRtbClcblwKKyAgICAgICAtIENvbW1vbiBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sKVxuXAorICAgICAgIC0gQXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UgMS4xIChhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UpXG5cCisgICAgICAgLSBBcGFjaGUgU29mdHdhcmUgTGljZW5zZSAyLjAgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjApXG5cCisgICAgICAgLSBNZXRybyBMaW5rIFB1YmxpYyBMaWNlbnNlIDEuMDAgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb3Blbm1vdGlmL3N1cHBvcnRlcnMvbWV0cm9saW5rL2xpY2Vuc2UuaHRtbClcblwKKyAgICAgICAtIE1vemlsbGEgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjEgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC9NUEwtMS4xLmh0bWwpXG5cCitcblwKK0lUIElTIFlPVVIgT0JMSUdBVElPTiBUTyBSRUFEIEFORCBBQ0NFUFQgQUxMIFNVQ0ggVEVSTVMgQU5EIENPTkRJVElPTlMgUFJJT1JcblwKK1RPIFVTRSBPRiBUSEUgQ09OVEVOVC4gSWYgbm8gQWJvdXQsIEZlYXR1cmUgTGljZW5zZSwgb3IgRmVhdHVyZSBVcGRhdGUgTGljZW5zZVxuXAoraXMgcHJvdmlkZWQsIHBsZWFzZSBjb250YWN0IHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gdG8gZGV0ZXJtaW5lIHdoYXQgdGVybXMgYW5kIGNvbmRpdGlvbnNcblwKK2dvdmVybiB0aGF0IHBhcnRpY3VsYXIgQ29udGVudC5cblwKK1xuXAorXG5cVXNlIG9mIFByb3Zpc2lvbmluZyBUZWNobm9sb2d5XG5cCitcblwKK1RoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIHByb3Zpc2lvbmluZyBzb2Z0d2FyZSwgZXhhbXBsZXMgb2Ygd2hpY2ggaW5jbHVkZSxcblwKK2J1dCBhcmUgbm90IGxpbWl0ZWQgdG8sIHAyIGFuZCB0aGUgRWNsaXBzZSBVcGRhdGUgTWFuYWdlciAoIlByb3Zpc2lvbmluZyBUZWNobm9sb2d5IikgZm9yXG5cCit0aGUgcHVycG9zZSBvZiBhbGxvd2luZyB1c2VycyB0byBpbnN0YWxsIHNvZnR3YXJlLCBkb2N1bWVudGF0aW9uLCBpbmZvcm1hdGlvbiBhbmQvb3JcblwKK290aGVyIG1hdGVyaWFscyAoY29sbGVjdGl2ZWx5ICJJbnN0YWxsYWJsZSBTb2Z0d2FyZSIpLiBUaGlzIGNhcGFiaWxpdHkgaXMgcHJvdmlkZWQgd2l0aFxuXAordGhlIGludGVudCBvZiBhbGxvd2luZyBzdWNoIHVzZXJzIHRvIGluc3RhbGwsIGV4dGVuZCBhbmQgdXBkYXRlIEVjbGlwc2UtYmFzZWQgcHJvZHVjdHMuXG5cCitJbmZvcm1hdGlvbiBhYm91dCBwYWNrYWdpbmcgSW5zdGFsbGFibGUgU29mdHdhcmUgaXMgYXZhaWxhYmxlIGF0XG5cCitodHRwOi8vZWNsaXBzZS5vcmcvZXF1aW5veC9wMi9yZXBvc2l0b3J5X3BhY2thZ2luZy5odG1sICgiU3BlY2lmaWNhdGlvbiIpLlxuXAorXG5cCitZb3UgbWF5IHVzZSBQcm92aXNpb25pbmcgVGVjaG5vbG9neSB0byBhbGxvdyBvdGhlciBwYXJ0aWVzIHRvIGluc3RhbGwgSW5zdGFsbGFibGUgU29mdHdhcmUuXG5cCitZb3Ugc2hhbGwgYmUgcmVzcG9uc2libGUgZm9yIGVuYWJsaW5nIHRoZSBhcHBsaWNhYmxlIGxpY2Vuc2UgYWdyZWVtZW50cyByZWxhdGluZyB0byB0aGVcblwKK0luc3RhbGxhYmxlIFNvZnR3YXJlIHRvIGJlIHByZXNlbnRlZCB0bywgYW5kIGFjY2VwdGVkIGJ5LCB0aGUgdXNlcnMgb2YgdGhlIFByb3Zpc2lvbmluZyBUZWNobm9sb2d5XG5cCitpbiBhY2NvcmRhbmNlIHdpdGggdGhlIFNwZWNpZmljYXRpb24uIEJ5IHVzaW5nIFByb3Zpc2lvbmluZyBUZWNobm9sb2d5IGluIHN1Y2ggYSBtYW5uZXIgYW5kXG5cCittYWtpbmcgaXQgYXZhaWxhYmxlIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgU3BlY2lmaWNhdGlvbiwgeW91IGZ1cnRoZXIgYWNrbm93bGVkZ2UgeW91clxuXAorYWdyZWVtZW50IHRvLCBhbmQgdGhlIGFjcXVpc2l0aW9uIG9mIGFsbCBuZWNlc3NhcnkgcmlnaHRzIHRvIHBlcm1pdCB0aGUgZm9sbG93aW5nOlxuXAorXG5cCisgICAgICAgMS4gQSBzZXJpZXMgb2YgYWN0aW9ucyBtYXkgb2NjdXIgKCJQcm92aXNpb25pbmcgUHJvY2VzcyIpIGluIHdoaWNoIGEgdXNlciBtYXkgZXhlY3V0ZVxuXAorICAgICAgICAgIHRoZSBQcm92aXNpb25pbmcgVGVjaG5vbG9neSBvbiBhIG1hY2hpbmUgKCJUYXJnZXQgTWFjaGluZSIpIHdpdGggdGhlIGludGVudCBvZiBpbnN0YWxsaW5nLFxuXAorICAgICAgICAgIGV4dGVuZGluZyBvciB1cGRhdGluZyB0aGUgZnVuY3Rpb25hbGl0eSBvZiBhbiBFY2xpcHNlLWJhc2VkIHByb2R1Y3QuXG5cCisgICAgICAgMi4gRHVyaW5nIHRoZSBQcm92aXNpb25pbmcgUHJvY2VzcywgdGhlIFByb3Zpc2lvbmluZyBUZWNobm9sb2d5IG1heSBjYXVzZSB0aGlyZCBwYXJ0eVxuXAorICAgICAgICAgIEluc3RhbGxhYmxlIFNvZnR3YXJlIG9yIGEgcG9ydGlvbiB0aGVyZW9mIHRvIGJlIGFjY2Vzc2VkIGFuZCBjb3BpZWQgdG8gdGhlIFRhcmdldCBNYWNoaW5lLlxuXAorICAgICAgIDMuIFB1cnN1YW50IHRvIHRoZSBTcGVjaWZpY2F0aW9uLCB5b3Ugd2lsbCBwcm92aWRlIHRvIHRoZSB1c2VyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyB0aGF0XG5cCisgICAgICAgICAgZ292ZXJuIHRoZSB1c2Ugb2YgdGhlIEluc3RhbGxhYmxlIFNvZnR3YXJlICgiSW5zdGFsbGFibGUgU29mdHdhcmUgQWdyZWVtZW50IikgYW5kIHN1Y2hcblwKKyAgICAgICAgICBJbnN0YWxsYWJsZSBTb2Z0d2FyZSBBZ3JlZW1lbnQgc2hhbGwgYmUgYWNjZXNzZWQgZnJvbSB0aGUgVGFyZ2V0IE1hY2hpbmUgaW4gYWNjb3JkYW5jZVxuXAorICAgICAgICAgIHdpdGggdGhlIFNwZWNpZmljYXRpb24uIFN1Y2ggSW5zdGFsbGFibGUgU29mdHdhcmUgQWdyZWVtZW50IG11c3QgaW5mb3JtIHRoZSB1c2VyIG9mIHRoZVxuXAorICAgICAgICAgIHRlcm1zIGFuZCBjb25kaXRpb25zIHRoYXQgZ292ZXJuIHRoZSBJbnN0YWxsYWJsZSBTb2Z0d2FyZSBhbmQgbXVzdCBzb2xpY2l0IGFjY2VwdGFuY2UgYnlcblwKKyAgICAgICAgICB0aGUgZW5kIHVzZXIgaW4gdGhlIG1hbm5lciBwcmVzY3JpYmVkIGluIHN1Y2ggSW5zdGFsbGFibGUgU29mdHdhcmUgQWdyZWVtZW50LiBVcG9uIHN1Y2hcblwKKyAgICAgICAgICBpbmRpY2F0aW9uIG9mIGFncmVlbWVudCBieSB0aGUgdXNlciwgdGhlIHByb3Zpc2lvbmluZyBUZWNobm9sb2d5IHdpbGwgY29tcGxldGUgaW5zdGFsbGF0aW9uXG5cCisgICAgICAgICAgb2YgdGhlIEluc3RhbGxhYmxlIFNvZnR3YXJlLlxuXAorXG5cCitDcnlwdG9ncmFwaHlcblwKK1xuXAorQ29udGVudCBtYXkgY29udGFpbiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBUaGUgY291bnRyeSBpbiB3aGljaCB5b3UgYXJlXG5cCitjdXJyZW50bHkgbWF5IGhhdmUgcmVzdHJpY3Rpb25zIG9uIHRoZSBpbXBvcnQsIHBvc3Nlc3Npb24sIGFuZCB1c2UsXG5cCithbmQvb3IgcmUtZXhwb3J0IHRvIGFub3RoZXIgY291bnRyeSwgb2YgZW5jcnlwdGlvbiBzb2Z0d2FyZS4gQkVGT1JFXG5cCit1c2luZyBhbnkgZW5jcnlwdGlvbiBzb2Z0d2FyZSwgcGxlYXNlIGNoZWNrIHRoZSBjb3VudHJ5J3MgbGF3cyxcblwKK3JlZ3VsYXRpb25zIGFuZCBwb2xpY2llcyBjb25jZXJuaW5nIHRoZSBpbXBvcnQsIHBvc3Nlc3Npb24sIG9yIHVzZSwgYW5kXG5cCityZS1leHBvcnQgb2YgZW5jcnlwdGlvbiBzb2Z0d2FyZSwgdG8gc2VlIGlmIHRoaXMgaXMgcGVybWl0dGVkLlxuXAorXG5cCitKYXZhIGFuZCBhbGwgSmF2YS1iYXNlZCB0cmFkZW1hcmtzIGFyZSB0cmFkZW1hcmtzIG9mIE9yYWNsZSBDb3Jwb3JhdGlvbiBpbiB0aGUgVW5pdGVkIFN0YXRlcywgb3RoZXIgY291bnRyaWVzLCBvciBib3RoLlxuCisjIyMjIyMjIyMjIyBlbmQgb2YgbGljZW5zZSBwcm9wZXJ0eSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uc2hlbGwvZmVhdHVyZS54bWwgYi9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uc2hlbGwvZmVhdHVyZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNzg4YmNkOQotLS0gL2Rldi9udWxsCisrKyBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5zaGVsbC9mZWF0dXJlLnhtbApAQCAtMCwwICsxLDg1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPGZlYXR1cmUKKyAgICAgIGlkPSJvcmcuZWNsaXBzZS52aXJnby5zaGVsbCIKKyAgICAgIGxhYmVsPSIlZmVhdHVyZU5hbWUiCisgICAgICB2ZXJzaW9uPSIxLjAuMCIKKyAgICAgIHByb3ZpZGVyLW5hbWU9IiVwcm92aWRlck5hbWUiCisgICAgICBpbWFnZT0iZWNsaXBzZV91cGRhdGVfMTIwLmpwZyI+CisKKyAgIDxkZXNjcmlwdGlvbiB1cmw9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdmlyZ28vIj4KKyAgICAgICVkZXNjcmlwdGlvbgorICAgPC9kZXNjcmlwdGlvbj4KKworICAgPGNvcHlyaWdodCB1cmw9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdmlyZ28vIj4KKyAgICAgICVjb3B5cmlnaHQKKyAgIDwvY29weXJpZ2h0PgorCisgICA8bGljZW5zZSB1cmw9IiVsaWNlbnNlVVJMIj4KKyAgICAgICVsaWNlbnNlCisgICA8L2xpY2Vuc2U+CisKKyAgIDxwbHVnaW4KKyAgICAgICAgIGlkPSJvcmcuYXBhY2hlLm1pbmEuY29yZSIKKyAgICAgICAgIGRvd25sb2FkLXNpemU9IjAiCisgICAgICAgICBpbnN0YWxsLXNpemU9IjAiCisgICAgICAgICB2ZXJzaW9uPSJATUlOQS5DT1JFLlZFUlNJT05AIgorICAgICAgICAgdW5wYWNrPSJmYWxzZSIKKyAgICAgICAgIGF1dG9zdGFydD0idHJ1ZSIvPgorCisgICA8cGx1Z2luCisgICAgICAgICBpZD0ib3JnLmFwYWNoZS5zc2hkLmNvcmUiCisgICAgICAgICBkb3dubG9hZC1zaXplPSIwIgorICAgICAgICAgaW5zdGFsbC1zaXplPSIwIgorICAgICAgICAgdmVyc2lvbj0iQFNTSEQuQ09SRS5WRVJTSU9OQCIKKyAgICAgICAgIHVucGFjaz0iZmFsc2UiCisgICAgICAgICBhdXRvc3RhcnQ9InRydWUiLz4KKworICAgPHBsdWdpbgorICAgICAgICAgaWQ9Im9yZy5hcGFjaGUuZmVsaXguZ29nby5jb21tYW5kIgorICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKKyAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKKyAgICAgICAgIHZlcnNpb249IkBGRUxJWC5HT0dPLkNPTU1BTkQuVkVSU0lPTkAiCisgICAgICAgICB1bnBhY2s9ImZhbHNlIgorICAgICAgICAgYXV0b3N0YXJ0PSJ0cnVlIi8+CisKKyAgIDxwbHVnaW4KKyAgICAgICAgIGlkPSJvcmcuYXBhY2hlLmZlbGl4LmdvZ28ucnVudGltZSIKKyAgICAgICAgIGRvd25sb2FkLXNpemU9IjAiCisgICAgICAgICBpbnN0YWxsLXNpemU9IjAiCisgICAgICAgICB2ZXJzaW9uPSJARkVMSVguR09HTy5SVU5USU1FLlZFUlNJT05AIgorICAgICAgICAgdW5wYWNrPSJmYWxzZSIKKyAgICAgICAgIGF1dG9zdGFydD0idHJ1ZSIvPgorCisgICA8cGx1Z2luCisgICAgICAgICBpZD0ib3JnLmFwYWNoZS5mZWxpeC5nb2dvLnNoZWxsIgorICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKKyAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKKyAgICAgICAgIHZlcnNpb249IkBGRUxJWC5HT0dPLlNIRUxMLlZFUlNJT05AIgorICAgICAgICAgdW5wYWNrPSJmYWxzZSIKKyAgICAgICAgIGF1dG9zdGFydD0idHJ1ZSIvPgorCisgICA8cGx1Z2luCisgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuZXF1aW5veC5jb25zb2xlIgorICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKKyAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKKyAgICAgICAgIHZlcnNpb249IkBFUVVJTk9YLkNPTlNPTEUuVkVSU0lPTkAiCisgICAgICAgICB1bnBhY2s9ImZhbHNlIgorICAgICAgICAgYXV0b3N0YXJ0PSJ0cnVlIi8+CisgICAgICAgICAKKyAgIDxwbHVnaW4KKyAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5lcXVpbm94LmNvbnNvbGUuc3NoIgorICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKKyAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKKyAgICAgICAgIHZlcnNpb249IkBFUVVJTk9YLkNPTlNPTEUuU1NILlZFUlNJT05AIgorICAgICAgICAgdW5wYWNrPSJmYWxzZSIKKyAgICAgICAgIGF1dG9zdGFydD0idHJ1ZSIvPgorCisgICA8cGx1Z2luCisgICAgICAgICBpZD0ib3JnLmVjbGlwc2UudmlyZ28uc2hlbGwuY29tbWFuZCIKKyAgICAgICAgIGRvd25sb2FkLXNpemU9IjAiCisgICAgICAgICBpbnN0YWxsLXNpemU9IjAiCisgICAgICAgICB2ZXJzaW9uPSJAS0VSTkVMLlZFUlNJT05AIgorICAgICAgICAgdW5wYWNrPSJmYWxzZSIKKyAgICAgICAgIGF1dG9zdGFydD0idHJ1ZSIvPgorCis8L2ZlYXR1cmU+CmRpZmYgLS1naXQgYS9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uc2hlbGwvbGljZW5zZS5odG1sIGIvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLnNoZWxsL2xpY2Vuc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mMTljNDgzCi0tLSAvZGV2L251bGwKKysrIGIvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLnNoZWxsL2xpY2Vuc2UuaHRtbApAQCAtMCwwICsxLDEwOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSIgPz4KKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIgLz4KKzx0aXRsZT5FY2xpcHNlIEZvdW5kYXRpb24gU29mdHdhcmUgVXNlciBBZ3JlZW1lbnQ8L3RpdGxlPgorPC9oZWFkPgorCis8Ym9keSBsYW5nPSJFTi1VUyI+Cis8aDI+RWNsaXBzZSBGb3VuZGF0aW9uIFNvZnR3YXJlIFVzZXIgQWdyZWVtZW50PC9oMj4KKzxwPkZlYnJ1YXJ5IDEsIDIwMTE8L3A+CisKKzxoMz5Vc2FnZSBPZiBDb250ZW50PC9oMz4KKworPHA+VEhFIEVDTElQU0UgRk9VTkRBVElPTiBNQUtFUyBBVkFJTEFCTEUgU09GVFdBUkUsIERPQ1VNRU5UQVRJT04sIElORk9STUFUSU9OIEFORC9PUiBPVEhFUiBNQVRFUklBTFMgRk9SIE9QRU4gU09VUkNFIFBST0pFQ1RTCisgICAoQ09MTEVDVElWRUxZICZxdW90O0NPTlRFTlQmcXVvdDspLiAgVVNFIE9GIFRIRSBDT05URU5UIElTIEdPVkVSTkVEIEJZIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBUSElTIEFHUkVFTUVOVCBBTkQvT1IgVEhFIFRFUk1TIEFORAorICAgQ09ORElUSU9OUyBPRiBMSUNFTlNFIEFHUkVFTUVOVFMgT1IgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVy4gIEJZIFVTSU5HIFRIRSBDT05URU5ULCBZT1UgQUdSRUUgVEhBVCBZT1VSIFVTRQorICAgT0YgVEhFIENPTlRFTlQgSVMgR09WRVJORUQgQlkgVEhJUyBBR1JFRU1FTlQgQU5EL09SIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBBTlkgQVBQTElDQUJMRSBMSUNFTlNFIEFHUkVFTUVOVFMgT1IKKyAgIE5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRUQgQkVMT1cuICBJRiBZT1UgRE8gTk9UIEFHUkVFIFRPIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBUSElTIEFHUkVFTUVOVCBBTkQgVEhFIFRFUk1TIEFORAorICAgQ09ORElUSU9OUyBPRiBBTlkgQVBQTElDQUJMRSBMSUNFTlNFIEFHUkVFTUVOVFMgT1IgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVywgVEhFTiBZT1UgTUFZIE5PVCBVU0UgVEhFIENPTlRFTlQuPC9wPgorCis8aDM+QXBwbGljYWJsZSBMaWNlbnNlczwvaDM+CisKKzxwPlVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkLCBhbGwgQ29udGVudCBtYWRlIGF2YWlsYWJsZSBieSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAKKyAgICgmcXVvdDtFUEwmcXVvdDspLiAgQSBjb3B5IG9mIHRoZSBFUEwgaXMgcHJvdmlkZWQgd2l0aCB0aGlzIENvbnRlbnQgYW5kIGlzIGFsc28gYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbDwvYT4uCisgICBGb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9wPgorCis8cD5Db250ZW50IGluY2x1ZGVzLCBidXQgaXMgbm90IGxpbWl0ZWQgdG8sIHNvdXJjZSBjb2RlLCBvYmplY3QgY29kZSwgZG9jdW1lbnRhdGlvbiBhbmQgb3RoZXIgZmlsZXMgbWFpbnRhaW5lZCBpbiB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIHNvdXJjZSBjb2RlCisgICByZXBvc2l0b3J5ICgmcXVvdDtSZXBvc2l0b3J5JnF1b3Q7KSBpbiBzb2Z0d2FyZSBtb2R1bGVzICgmcXVvdDtNb2R1bGVzJnF1b3Q7KSBhbmQgbWFkZSBhdmFpbGFibGUgYXMgZG93bmxvYWRhYmxlIGFyY2hpdmVzICgmcXVvdDtEb3dubG9hZHMmcXVvdDspLjwvcD4KKworPHVsPgorICAgICAgIDxsaT5Db250ZW50IG1heSBiZSBzdHJ1Y3R1cmVkIGFuZCBwYWNrYWdlZCBpbnRvIG1vZHVsZXMgdG8gZmFjaWxpdGF0ZSBkZWxpdmVyaW5nLCBleHRlbmRpbmcsIGFuZCB1cGdyYWRpbmcgdGhlIENvbnRlbnQuICBUeXBpY2FsIG1vZHVsZXMgbWF5IGluY2x1ZGUgcGx1Zy1pbnMgKCZxdW90O1BsdWctaW5zJnF1b3Q7KSwgcGx1Zy1pbiBmcmFnbWVudHMgKCZxdW90O0ZyYWdtZW50cyZxdW90OyksIGFuZCBmZWF0dXJlcyAoJnF1b3Q7RmVhdHVyZXMmcXVvdDspLjwvbGk+CisgICAgICAgPGxpPkVhY2ggUGx1Zy1pbiBvciBGcmFnbWVudCBtYXkgYmUgcGFja2FnZWQgYXMgYSBzdWItZGlyZWN0b3J5IG9yIEpBUiAoSmF2YSZ0cmFkZTsgQVJjaGl2ZSkgaW4gYSBkaXJlY3RvcnkgbmFtZWQgJnF1b3Q7cGx1Z2lucyZxdW90Oy48L2xpPgorICAgICAgIDxsaT5BIEZlYXR1cmUgaXMgYSBidW5kbGUgb2Ygb25lIG9yIG1vcmUgUGx1Zy1pbnMgYW5kL29yIEZyYWdtZW50cyBhbmQgYXNzb2NpYXRlZCBtYXRlcmlhbC4gIEVhY2ggRmVhdHVyZSBtYXkgYmUgcGFja2FnZWQgYXMgYSBzdWItZGlyZWN0b3J5IGluIGEgZGlyZWN0b3J5IG5hbWVkICZxdW90O2ZlYXR1cmVzJnF1b3Q7LiAgV2l0aGluIGEgRmVhdHVyZSwgZmlsZXMgbmFtZWQgJnF1b3Q7ZmVhdHVyZS54bWwmcXVvdDsgbWF5IGNvbnRhaW4gYSBsaXN0IG9mIHRoZSBuYW1lcyBhbmQgdmVyc2lvbiBudW1iZXJzIG9mIHRoZSBQbHVnLWlucworICAgICAgYW5kL29yIEZyYWdtZW50cyBhc3NvY2lhdGVkIHdpdGggdGhhdCBGZWF0dXJlLjwvbGk+CisgICAgICAgPGxpPkZlYXR1cmVzIG1heSBhbHNvIGluY2x1ZGUgb3RoZXIgRmVhdHVyZXMgKCZxdW90O0luY2x1ZGVkIEZlYXR1cmVzJnF1b3Q7KS4gV2l0aGluIGEgRmVhdHVyZSwgZmlsZXMgbmFtZWQgJnF1b3Q7ZmVhdHVyZS54bWwmcXVvdDsgbWF5IGNvbnRhaW4gYSBsaXN0IG9mIHRoZSBuYW1lcyBhbmQgdmVyc2lvbiBudW1iZXJzIG9mIEluY2x1ZGVkIEZlYXR1cmVzLjwvbGk+Cis8L3VsPgorCis8cD5UaGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZ292ZXJuaW5nIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgc2hvdWxkIGJlIGNvbnRhaW5lZCBpbiBmaWxlcyBuYW1lZCAmcXVvdDthYm91dC5odG1sJnF1b3Q7ICgmcXVvdDtBYm91dHMmcXVvdDspLiBUaGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZ292ZXJuaW5nIEZlYXR1cmVzIGFuZAorSW5jbHVkZWQgRmVhdHVyZXMgc2hvdWxkIGJlIGNvbnRhaW5lZCBpbiBmaWxlcyBuYW1lZCAmcXVvdDtsaWNlbnNlLmh0bWwmcXVvdDsgKCZxdW90O0ZlYXR1cmUgTGljZW5zZXMmcXVvdDspLiAgQWJvdXRzIGFuZCBGZWF0dXJlIExpY2Vuc2VzIG1heSBiZSBsb2NhdGVkIGluIGFueSBkaXJlY3Rvcnkgb2YgYSBEb3dubG9hZCBvciBNb2R1bGUKK2luY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvIHRoZSBmb2xsb3dpbmcgbG9jYXRpb25zOjwvcD4KKworPHVsPgorICAgICAgIDxsaT5UaGUgdG9wLWxldmVsIChyb290KSBkaXJlY3Rvcnk8L2xpPgorICAgICAgIDxsaT5QbHVnLWluIGFuZCBGcmFnbWVudCBkaXJlY3RvcmllczwvbGk+CisgICAgICAgPGxpPkluc2lkZSBQbHVnLWlucyBhbmQgRnJhZ21lbnRzIHBhY2thZ2VkIGFzIEpBUnM8L2xpPgorICAgICAgIDxsaT5TdWItZGlyZWN0b3JpZXMgb2YgdGhlIGRpcmVjdG9yeSBuYW1lZCAmcXVvdDtzcmMmcXVvdDsgb2YgY2VydGFpbiBQbHVnLWluczwvbGk+CisgICAgICAgPGxpPkZlYXR1cmUgZGlyZWN0b3JpZXM8L2xpPgorPC91bD4KKworPHA+Tm90ZTogaWYgYSBGZWF0dXJlIG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gaXMgaW5zdGFsbGVkIHVzaW5nIHRoZSBQcm92aXNpb25pbmcgVGVjaG5vbG9neSAoYXMgZGVmaW5lZCBiZWxvdyksIHlvdSBtdXN0IGFncmVlIHRvIGEgbGljZW5zZSAoJnF1b3Q7RmVhdHVyZSBVcGRhdGUgTGljZW5zZSZxdW90OykgZHVyaW5nIHRoZQoraW5zdGFsbGF0aW9uIHByb2Nlc3MuICBJZiB0aGUgRmVhdHVyZSBjb250YWlucyBJbmNsdWRlZCBGZWF0dXJlcywgdGhlIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2Ugc2hvdWxkIGVpdGhlciBwcm92aWRlIHlvdSB3aXRoIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgdGhlIEluY2x1ZGVkIEZlYXR1cmVzIG9yCitpbmZvcm0geW91IHdoZXJlIHlvdSBjYW4gbG9jYXRlIHRoZW0uICBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlcyBtYXkgYmUgZm91bmQgaW4gdGhlICZxdW90O2xpY2Vuc2UmcXVvdDsgcHJvcGVydHkgb2YgZmlsZXMgbmFtZWQgJnF1b3Q7ZmVhdHVyZS5wcm9wZXJ0aWVzJnF1b3Q7IGZvdW5kIHdpdGhpbiBhIEZlYXR1cmUuCitTdWNoIEFib3V0cywgRmVhdHVyZSBMaWNlbnNlcywgYW5kIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIGNvbnRhaW4gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIChvciByZWZlcmVuY2VzIHRvIHN1Y2ggdGVybXMgYW5kIGNvbmRpdGlvbnMpIHRoYXQgZ292ZXJuIHlvdXIgdXNlIG9mIHRoZSBhc3NvY2lhdGVkIENvbnRlbnQgaW4KK3RoYXQgZGlyZWN0b3J5LjwvcD4KKworPHA+VEhFIEFCT1VUUywgRkVBVFVSRSBMSUNFTlNFUywgQU5EIEZFQVRVUkUgVVBEQVRFIExJQ0VOU0VTIE1BWSBSRUZFUiBUTyBUSEUgRVBMIE9SIE9USEVSIExJQ0VOU0UgQUdSRUVNRU5UUywgTk9USUNFUyBPUiBURVJNUyBBTkQgQ09ORElUSU9OUy4gIFNPTUUgT0YgVEhFU0UKK09USEVSIExJQ0VOU0UgQUdSRUVNRU5UUyBNQVkgSU5DTFVERSAoQlVUIEFSRSBOT1QgTElNSVRFRCBUTyk6PC9wPgorCis8dWw+CisgICAgICAgPGxpPkVjbGlwc2UgRGlzdHJpYnV0aW9uIExpY2Vuc2UgVmVyc2lvbiAxLjAgKGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xpY2Vuc2VzL2VkbC12MTAuaHRtbCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9saWNlbnNlcy9lZGwtdjEuMC5odG1sPC9hPik8L2xpPgorICAgICAgIDxsaT5Db21tb24gUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgKGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2NwbC12MTAuaHRtbCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9jcGwtdjEwLmh0bWw8L2E+KTwvbGk+CisgICAgICAgPGxpPkFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlIDEuMSAoYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFIj5odHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRTwvYT4pPC9saT4KKyAgICAgICA8bGk+QXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UgMi4wIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIj5odHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjA8L2E+KTwvbGk+CisgICAgICAgPGxpPk1ldHJvIExpbmsgUHVibGljIExpY2Vuc2UgMS4wMCAoYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vcGVubW90aWYvc3VwcG9ydGVycy9tZXRyb2xpbmsvbGljZW5zZS5odG1sIj5odHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb3Blbm1vdGlmL3N1cHBvcnRlcnMvbWV0cm9saW5rL2xpY2Vuc2UuaHRtbDwvYT4pPC9saT4KKyAgICAgICA8bGk+TW96aWxsYSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMSAoYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBML01QTC0xLjEuaHRtbCI+aHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvTVBMLTEuMS5odG1sPC9hPik8L2xpPgorPC91bD4KKworPHA+SVQgSVMgWU9VUiBPQkxJR0FUSU9OIFRPIFJFQUQgQU5EIEFDQ0VQVCBBTEwgU1VDSCBURVJNUyBBTkQgQ09ORElUSU9OUyBQUklPUiBUTyBVU0UgT0YgVEhFIENPTlRFTlQuICBJZiBubyBBYm91dCwgRmVhdHVyZSBMaWNlbnNlLCBvciBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlIGlzIHByb3ZpZGVkLCBwbGVhc2UKK2NvbnRhY3QgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiB0byBkZXRlcm1pbmUgd2hhdCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm4gdGhhdCBwYXJ0aWN1bGFyIENvbnRlbnQuPC9wPgorCisKKzxoMz5Vc2Ugb2YgUHJvdmlzaW9uaW5nIFRlY2hub2xvZ3k8L2gzPgorCis8cD5UaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBwcm92aXNpb25pbmcgc29mdHdhcmUsIGV4YW1wbGVzIG9mIHdoaWNoIGluY2x1ZGUsIGJ1dCBhcmUgbm90IGxpbWl0ZWQgdG8sIHAyIGFuZCB0aGUgRWNsaXBzZQorICAgVXBkYXRlIE1hbmFnZXIgKCZxdW90O1Byb3Zpc2lvbmluZyBUZWNobm9sb2d5JnF1b3Q7KSBmb3IgdGhlIHB1cnBvc2Ugb2YgYWxsb3dpbmcgdXNlcnMgdG8gaW5zdGFsbCBzb2Z0d2FyZSwgZG9jdW1lbnRhdGlvbiwgaW5mb3JtYXRpb24gYW5kL29yCisgICBvdGhlciBtYXRlcmlhbHMgKGNvbGxlY3RpdmVseSAmcXVvdDtJbnN0YWxsYWJsZSBTb2Z0d2FyZSZxdW90OykuIFRoaXMgY2FwYWJpbGl0eSBpcyBwcm92aWRlZCB3aXRoIHRoZSBpbnRlbnQgb2YgYWxsb3dpbmcgc3VjaCB1c2VycyB0bworICAgaW5zdGFsbCwgZXh0ZW5kIGFuZCB1cGRhdGUgRWNsaXBzZS1iYXNlZCBwcm9kdWN0cy4gSW5mb3JtYXRpb24gYWJvdXQgcGFja2FnaW5nIEluc3RhbGxhYmxlIFNvZnR3YXJlIGlzIGF2YWlsYWJsZSBhdCA8YQorICAgICAgIGhyZWY9Imh0dHA6Ly9lY2xpcHNlLm9yZy9lcXVpbm94L3AyL3JlcG9zaXRvcnlfcGFja2FnaW5nLmh0bWwiPmh0dHA6Ly9lY2xpcHNlLm9yZy9lcXVpbm94L3AyL3JlcG9zaXRvcnlfcGFja2FnaW5nLmh0bWw8L2E+CisgICAoJnF1b3Q7U3BlY2lmaWNhdGlvbiZxdW90OykuPC9wPgorCis8cD5Zb3UgbWF5IHVzZSBQcm92aXNpb25pbmcgVGVjaG5vbG9neSB0byBhbGxvdyBvdGhlciBwYXJ0aWVzIHRvIGluc3RhbGwgSW5zdGFsbGFibGUgU29mdHdhcmUuIFlvdSBzaGFsbCBiZSByZXNwb25zaWJsZSBmb3IgZW5hYmxpbmcgdGhlCisgICBhcHBsaWNhYmxlIGxpY2Vuc2UgYWdyZWVtZW50cyByZWxhdGluZyB0byB0aGUgSW5zdGFsbGFibGUgU29mdHdhcmUgdG8gYmUgcHJlc2VudGVkIHRvLCBhbmQgYWNjZXB0ZWQgYnksIHRoZSB1c2VycyBvZiB0aGUgUHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kKKyAgIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgU3BlY2lmaWNhdGlvbi4gQnkgdXNpbmcgUHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kgaW4gc3VjaCBhIG1hbm5lciBhbmQgbWFraW5nIGl0IGF2YWlsYWJsZSBpbiBhY2NvcmRhbmNlIHdpdGggdGhlCisgICBTcGVjaWZpY2F0aW9uLCB5b3UgZnVydGhlciBhY2tub3dsZWRnZSB5b3VyIGFncmVlbWVudCB0bywgYW5kIHRoZSBhY3F1aXNpdGlvbiBvZiBhbGwgbmVjZXNzYXJ5IHJpZ2h0cyB0byBwZXJtaXQgdGhlIGZvbGxvd2luZzo8L3A+CisKKzxvbD4KKyAgICAgICA8bGk+QSBzZXJpZXMgb2YgYWN0aW9ucyBtYXkgb2NjdXIgKCZxdW90O1Byb3Zpc2lvbmluZyBQcm9jZXNzJnF1b3Q7KSBpbiB3aGljaCBhIHVzZXIgbWF5IGV4ZWN1dGUgdGhlIFByb3Zpc2lvbmluZyBUZWNobm9sb2d5CisgICAgICAgb24gYSBtYWNoaW5lICgmcXVvdDtUYXJnZXQgTWFjaGluZSZxdW90Oykgd2l0aCB0aGUgaW50ZW50IG9mIGluc3RhbGxpbmcsIGV4dGVuZGluZyBvciB1cGRhdGluZyB0aGUgZnVuY3Rpb25hbGl0eSBvZiBhbiBFY2xpcHNlLWJhc2VkCisgICAgICAgcHJvZHVjdC48L2xpPgorICAgICAgIDxsaT5EdXJpbmcgdGhlIFByb3Zpc2lvbmluZyBQcm9jZXNzLCB0aGUgUHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kgbWF5IGNhdXNlIHRoaXJkIHBhcnR5IEluc3RhbGxhYmxlIFNvZnR3YXJlIG9yIGEgcG9ydGlvbiB0aGVyZW9mIHRvIGJlCisgICAgICAgYWNjZXNzZWQgYW5kIGNvcGllZCB0byB0aGUgVGFyZ2V0IE1hY2hpbmUuPC9saT4KKyAgICAgICA8bGk+UHVyc3VhbnQgdG8gdGhlIFNwZWNpZmljYXRpb24sIHlvdSB3aWxsIHByb3ZpZGUgdG8gdGhlIHVzZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIHRoYXQgZ292ZXJuIHRoZSB1c2Ugb2YgdGhlIEluc3RhbGxhYmxlCisgICAgICAgU29mdHdhcmUgKCZxdW90O0luc3RhbGxhYmxlIFNvZnR3YXJlIEFncmVlbWVudCZxdW90OykgYW5kIHN1Y2ggSW5zdGFsbGFibGUgU29mdHdhcmUgQWdyZWVtZW50IHNoYWxsIGJlIGFjY2Vzc2VkIGZyb20gdGhlIFRhcmdldAorICAgICAgIE1hY2hpbmUgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBTcGVjaWZpY2F0aW9uLiBTdWNoIEluc3RhbGxhYmxlIFNvZnR3YXJlIEFncmVlbWVudCBtdXN0IGluZm9ybSB0aGUgdXNlciBvZiB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgdGhhdCBnb3Zlcm4KKyAgICAgICB0aGUgSW5zdGFsbGFibGUgU29mdHdhcmUgYW5kIG11c3Qgc29saWNpdCBhY2NlcHRhbmNlIGJ5IHRoZSBlbmQgdXNlciBpbiB0aGUgbWFubmVyIHByZXNjcmliZWQgaW4gc3VjaCBJbnN0YWxsYWJsZSBTb2Z0d2FyZSBBZ3JlZW1lbnQuIFVwb24gc3VjaAorICAgICAgIGluZGljYXRpb24gb2YgYWdyZWVtZW50IGJ5IHRoZSB1c2VyLCB0aGUgcHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kgd2lsbCBjb21wbGV0ZSBpbnN0YWxsYXRpb24gb2YgdGhlIEluc3RhbGxhYmxlIFNvZnR3YXJlLjwvbGk+Cis8L29sPgorCis8aDM+Q3J5cHRvZ3JhcGh5PC9oMz4KKworPHA+Q29udGVudCBtYXkgY29udGFpbiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBUaGUgY291bnRyeSBpbiB3aGljaCB5b3UgYXJlIGN1cnJlbnRseSBtYXkgaGF2ZSByZXN0cmljdGlvbnMgb24gdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgYW5kIHVzZSwgYW5kL29yIHJlLWV4cG9ydCB0bworICAgYW5vdGhlciBjb3VudHJ5LCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBCRUZPUkUgdXNpbmcgYW55IGVuY3J5cHRpb24gc29mdHdhcmUsIHBsZWFzZSBjaGVjayB0aGUgY291bnRyeSdzIGxhd3MsIHJlZ3VsYXRpb25zIGFuZCBwb2xpY2llcyBjb25jZXJuaW5nIHRoZSBpbXBvcnQsCisgICBwb3NzZXNzaW9uLCBvciB1c2UsIGFuZCByZS1leHBvcnQgb2YgZW5jcnlwdGlvbiBzb2Z0d2FyZSwgdG8gc2VlIGlmIHRoaXMgaXMgcGVybWl0dGVkLjwvcD4KKworPHA+PHNtYWxsPkphdmEgYW5kIGFsbCBKYXZhLWJhc2VkIHRyYWRlbWFya3MgYXJlIHRyYWRlbWFya3Mgb2YgT3JhY2xlIENvcnBvcmF0aW9uIGluIHRoZSBVbml0ZWQgU3RhdGVzLCBvdGhlciBjb3VudHJpZXMsIG9yIGJvdGguPC9zbWFsbD48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNjcmlwdHMvYnVpbGQucHJvcGVydGllcyBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5zaW1wbGVjb25maWd1cmF0b3IvYnVpbGQucHJvcGVydGllcwpzaW1pbGFyaXR5IGluZGV4IDYwJQpjb3B5IGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zY3JpcHRzL2J1aWxkLnByb3BlcnRpZXMKY29weSB0byBqZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uc2ltcGxlY29uZmlndXJhdG9yL2J1aWxkLnByb3BlcnRpZXMKaW5kZXggZGI4MGFkZC4uYTEzZTE4YiAxMDA2NDQKLS0tIGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zY3JpcHRzL2J1aWxkLnByb3BlcnRpZXMKKysrIGIvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLnNpbXBsZWNvbmZpZ3VyYXRvci9idWlsZC5wcm9wZXJ0aWVzCkBAIC0xLDQgKzEsNSBAQAogYmluLmluY2x1ZGVzID0gZmVhdHVyZS54bWwsXAogICAgICAgICAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzLFwKICAgICAgICAgICAgICAgIGVwbC12MTAuaHRtbCxcCi0gICAgICAgICAgICAgICBlY2xpcHNlX3VwZGF0ZV8xMjAuanBnCisgICAgICAgICAgICAgICBlY2xpcHNlX3VwZGF0ZV8xMjAuanBnLFwKKyAgICAgICAgICAgICAgIHAyLmluZgpkaWZmIC0tZ2l0IGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5yZXNvdXJjZXMvZWNsaXBzZV91cGRhdGVfMTIwLmpwZyBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5zaW1wbGVjb25maWd1cmF0b3IvZWNsaXBzZV91cGRhdGVfMTIwLmpwZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKY29weSBmcm9tIGJ1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkucmVzb3VyY2VzL2VjbGlwc2VfdXBkYXRlXzEyMC5qcGcKY29weSB0byBqZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uc2ltcGxlY29uZmlndXJhdG9yL2VjbGlwc2VfdXBkYXRlXzEyMC5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5yZXNvdXJjZXMvZXBsLXYxMC5odG1sIGIvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLnNpbXBsZWNvbmZpZ3VyYXRvci9lcGwtdjEwLmh0bWwKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBidWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnJlc291cmNlcy9lcGwtdjEwLmh0bWwKY29weSB0byBqZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uc2ltcGxlY29uZmlndXJhdG9yL2VwbC12MTAuaHRtbApkaWZmIC0tZ2l0IGEvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLnNpbXBsZWNvbmZpZ3VyYXRvci9mZWF0dXJlLnByb3BlcnRpZXMgYi9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uc2ltcGxlY29uZmlndXJhdG9yL2ZlYXR1cmUucHJvcGVydGllcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Mzk5Mjk0Ci0tLSAvZGV2L251bGwKKysrIGIvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLnNpbXBsZWNvbmZpZ3VyYXRvci9mZWF0dXJlLnByb3BlcnRpZXMKQEAgLTAsMCArMSwxODAgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgQ29weXJpZ2h0IChjKSAyMDExIFNBUCBBRworIworIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCisjIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAorIyBhbmQgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4KKyMgVGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgaXMgYXZhaWxhYmxlIGF0CisjICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKKyMgYW5kIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIGlzIGF2YWlsYWJsZSBhdAorIyAgIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYXBhY2hlMi4wLnBocC4KKyMgWW91IG1heSBlbGVjdCB0byByZWRpc3RyaWJ1dGUgdGhpcyBjb2RlIHVuZGVyIGVpdGhlciBvZiB0aGVzZSBsaWNlbnNlcy4KKyMKKyMgQ29udHJpYnV0b3JzOgorIyAgIEJvcmlzbGF2IEthcHVrYXJhbm92IC0gaW5pdGlhbCBjb250cmlidXRpb24KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgZmVhdHVyZS5wcm9wZXJ0aWVzCisjIGNvbnRhaW5zIGV4dGVybmFsaXplZCBzdHJpbmdzIGZvciBmZWF0dXJlLnhtbAorIyAiJWZvbyIgaW4gZmVhdHVyZS54bWwgY29ycmVzcG9uZHMgdG8gdGhlIGtleSAiZm9vIiBpbiB0aGlzIGZpbGUKKyMgamF2YS5pby5Qcm9wZXJ0aWVzIGZpbGUgKElTTyA4ODU5LTEgd2l0aCAiXCIgZXNjYXBlcykKKyMgVGhpcyBmaWxlIHNob3VsZCBiZSB0cmFuc2xhdGVkLgorCisjICJmZWF0dXJlTmFtZSIgcHJvcGVydHkgLSBuYW1lIG9mIHRoZSBmZWF0dXJlCitmZWF0dXJlTmFtZT1FY2xpcHNlIFZpcmdvIFNpbXBsZSBDb25maWd1cmF0b3IgRmVhdHVyZQorCisjICJwcm92aWRlck5hbWUiIHByb3BlcnR5IC0gbmFtZSBvZiB0aGUgY29tcGFueSB0aGF0IHByb3ZpZGVzIHRoZSBmZWF0dXJlCitwcm92aWRlck5hbWU9RWNsaXBzZS5vcmcKKworIyAidXBkYXRlU2l0ZU5hbWUiIHByb3BlcnR5IC0gbGFiZWwgZm9yIHRoZSB1cGRhdGUgc2l0ZQorCisjICJkZXNjcmlwdGlvbiIgcHJvcGVydHkgLSBkZXNjcmlwdGlvbiBvZiB0aGUgZmVhdHVyZQorZGVzY3JpcHRpb249VGhpcyBmZWF0dXJlIHByb3ZpZGVzIEVxdWlub3gncyBzaW1wbGUgY29uZmlndXJhdG9yIGZvciBWaXJnby4gSXQgZW5hYmxlcyBtb3JlIHJlYWRhYmxlIGluaXRpYWwgYnVuZGxlcyBjb25maWd1cmF0aW9uLlxuXAorCisjICJjb3B5cmlnaHQiIHByb3BlcnR5IC0gdGV4dCBvZiB0aGUgIkZlYXR1cmUgVXBkYXRlIENvcHlyaWdodCIKK2NvcHlyaWdodD1cCitDb3B5cmlnaHQgKGMpIDIwMDksIDIwMTAsIDIwMTEgVk13YXJlIEluYy4gYW5kIG90aGVyc1xuXAorXG5cCitBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzXG5cCithcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjBcblwKK2FuZCBBcGFjaGUgTGljZW5zZSB2Mi4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLlxuXAorVGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgaXMgYXZhaWxhYmxlIGF0XG5cCitodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbFxuXAorYW5kIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIGlzIGF2YWlsYWJsZSBhdFxuXAoraHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hcGFjaGUyLjAucGhwLlxuXAorWW91IG1heSBlbGVjdCB0byByZWRpc3RyaWJ1dGUgdGhpcyBjb2RlIHVuZGVyIGVpdGhlciBvZiB0aGVzZVxuXAorbGljZW5zZXMuXG5cCitcblwKK0NvbnRyaWJ1dG9yczpcblwKK1ZNd2FyZSBJbmMuIC0gaW5pdGlhbCBjb250cmlidXRpb25cblwKKworIyAibGljZW5zZVVSTCIgcHJvcGVydHkgLSBVUkwgb2YgdGhlICJGZWF0dXJlIExpY2Vuc2UiCisjIGRvIG5vdCB0cmFuc2xhdGUgdmFsdWUgLSBqdXN0IGNoYW5nZSB0byBwb2ludCB0byBhIGxvY2FsZS1zcGVjaWZpYyBIVE1MIHBhZ2UKK2xpY2Vuc2VVUkw9bGljZW5zZS5odG1sCisKKyMgImxpY2Vuc2UiIHByb3BlcnR5IC0gdGV4dCBvZiB0aGUgIkZlYXR1cmUgVXBkYXRlIExpY2Vuc2UiCisjIHNob3VsZCBiZSBwbGFpbiB0ZXh0IHZlcnNpb24gb2YgbGljZW5zZSBhZ3JlZW1lbnQgcG9pbnRlZCB0byBiZSAibGljZW5zZVVSTCIKK2xpY2Vuc2U9XAorRWNsaXBzZSBGb3VuZGF0aW9uIFNvZnR3YXJlIFVzZXIgQWdyZWVtZW50XG5cCitGZWJydWFyeSAxLCAyMDExXG5cCitcblwKK1VzYWdlIE9mIENvbnRlbnRcblwKK1xuXAorVEhFIEVDTElQU0UgRk9VTkRBVElPTiBNQUtFUyBBVkFJTEFCTEUgU09GVFdBUkUsIERPQ1VNRU5UQVRJT04sIElORk9STUFUSU9OIEFORC9PUlxuXAorT1RIRVIgTUFURVJJQUxTIEZPUiBPUEVOIFNPVVJDRSBQUk9KRUNUUyAoQ09MTEVDVElWRUxZICJDT05URU5UIikuXG5cCitVU0UgT0YgVEhFIENPTlRFTlQgSVMgR09WRVJORUQgQlkgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIFRISVNcblwKK0FHUkVFTUVOVCBBTkQvT1IgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIExJQ0VOU0UgQUdSRUVNRU5UUyBPUlxuXAorTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVy4gIEJZIFVTSU5HIFRIRSBDT05URU5ULCBZT1VcblwKK0FHUkVFIFRIQVQgWU9VUiBVU0UgT0YgVEhFIENPTlRFTlQgSVMgR09WRVJORUQgQlkgVEhJUyBBR1JFRU1FTlRcblwKK0FORC9PUiBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlMgT0YgQU5ZIEFQUExJQ0FCTEUgTElDRU5TRSBBR1JFRU1FTlRTXG5cCitPUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLiAgSUYgWU9VIERPIE5PVCBBR1JFRSBUTyBUSEVcblwKK1RFUk1TIEFORCBDT05ESVRJT05TIE9GIFRISVMgQUdSRUVNRU5UIEFORCBUSEUgVEVSTVMgQU5EIENPTkRJVElPTlNcblwKK09GIEFOWSBBUFBMSUNBQkxFIExJQ0VOU0UgQUdSRUVNRU5UUyBPUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEXG5cCitCRUxPVywgVEhFTiBZT1UgTUFZIE5PVCBVU0UgVEhFIENPTlRFTlQuXG5cCitcblwKK0FwcGxpY2FibGUgTGljZW5zZXNcblwKK1xuXAorVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQsIGFsbCBDb250ZW50IG1hZGUgYXZhaWxhYmxlIGJ5IHRoZVxuXAorRWNsaXBzZSBGb3VuZGF0aW9uIGlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2ZcblwKK3RoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wICgiRVBMIikuIEEgY29weSBvZiB0aGUgRVBMIGlzXG5cCitwcm92aWRlZCB3aXRoIHRoaXMgQ29udGVudCBhbmQgaXMgYWxzbyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwuXG5cCitGb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgIlByb2dyYW0iIHdpbGwgbWVhbiB0aGUgQ29udGVudC5cblwKK1xuXAorQ29udGVudCBpbmNsdWRlcywgYnV0IGlzIG5vdCBsaW1pdGVkIHRvLCBzb3VyY2UgY29kZSwgb2JqZWN0IGNvZGUsXG5cCitkb2N1bWVudGF0aW9uIGFuZCBvdGhlciBmaWxlcyBtYWludGFpbmVkIGluIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gc291cmNlIGNvZGVcblwKK3JlcG9zaXRvcnkgKCJSZXBvc2l0b3J5IikgaW4gc29mdHdhcmUgbW9kdWxlcyAoIk1vZHVsZXMiKSBhbmQgbWFkZSBhdmFpbGFibGVcblwKK2FzIGRvd25sb2FkYWJsZSBhcmNoaXZlcyAoIkRvd25sb2FkcyIpLlxuXAorXG5cCisgICAgICAgLSBDb250ZW50IG1heSBiZSBzdHJ1Y3R1cmVkIGFuZCBwYWNrYWdlZCBpbnRvIG1vZHVsZXMgdG8gZmFjaWxpdGF0ZSBkZWxpdmVyaW5nLFxuXAorICAgICAgICAgZXh0ZW5kaW5nLCBhbmQgdXBncmFkaW5nIHRoZSBDb250ZW50LiBUeXBpY2FsIG1vZHVsZXMgbWF5IGluY2x1ZGUgcGx1Zy1pbnMgKCJQbHVnLWlucyIpLFxuXAorICAgICAgICAgcGx1Zy1pbiBmcmFnbWVudHMgKCJGcmFnbWVudHMiKSwgYW5kIGZlYXR1cmVzICgiRmVhdHVyZXMiKS5cblwKKyAgICAgICAtIEVhY2ggUGx1Zy1pbiBvciBGcmFnbWVudCBtYXkgYmUgcGFja2FnZWQgYXMgYSBzdWItZGlyZWN0b3J5IG9yIEpBUiAoSmF2YShUTSkgQVJjaGl2ZSlcblwKKyAgICAgICAgIGluIGEgZGlyZWN0b3J5IG5hbWVkICJwbHVnaW5zIi5cblwKKyAgICAgICAtIEEgRmVhdHVyZSBpcyBhIGJ1bmRsZSBvZiBvbmUgb3IgbW9yZSBQbHVnLWlucyBhbmQvb3IgRnJhZ21lbnRzIGFuZCBhc3NvY2lhdGVkIG1hdGVyaWFsLlxuXAorICAgICAgICAgRWFjaCBGZWF0dXJlIG1heSBiZSBwYWNrYWdlZCBhcyBhIHN1Yi1kaXJlY3RvcnkgaW4gYSBkaXJlY3RvcnkgbmFtZWQgImZlYXR1cmVzIi5cblwKKyAgICAgICAgIFdpdGhpbiBhIEZlYXR1cmUsIGZpbGVzIG5hbWVkICJmZWF0dXJlLnhtbCIgbWF5IGNvbnRhaW4gYSBsaXN0IG9mIHRoZSBuYW1lcyBhbmQgdmVyc2lvblxuXAorICAgICAgICAgbnVtYmVycyBvZiB0aGUgUGx1Zy1pbnMgYW5kL29yIEZyYWdtZW50cyBhc3NvY2lhdGVkIHdpdGggdGhhdCBGZWF0dXJlLlxuXAorICAgICAgIC0gRmVhdHVyZXMgbWF5IGFsc28gaW5jbHVkZSBvdGhlciBGZWF0dXJlcyAoIkluY2x1ZGVkIEZlYXR1cmVzIikuIFdpdGhpbiBhIEZlYXR1cmUsIGZpbGVzXG5cCisgICAgICAgICBuYW1lZCAiZmVhdHVyZS54bWwiIG1heSBjb250YWluIGEgbGlzdCBvZiB0aGUgbmFtZXMgYW5kIHZlcnNpb24gbnVtYmVycyBvZiBJbmNsdWRlZCBGZWF0dXJlcy5cblwKK1xuXAorVGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyBQbHVnLWlucyBhbmQgRnJhZ21lbnRzIHNob3VsZCBiZVxuXAorY29udGFpbmVkIGluIGZpbGVzIG5hbWVkICJhYm91dC5odG1sIiAoIkFib3V0cyIpLiBUaGUgdGVybXMgYW5kXG5cCitjb25kaXRpb25zIGdvdmVybmluZyBGZWF0dXJlcyBhbmQgSW5jbHVkZWQgRmVhdHVyZXMgc2hvdWxkIGJlIGNvbnRhaW5lZFxuXAoraW4gZmlsZXMgbmFtZWQgImxpY2Vuc2UuaHRtbCIgKCJGZWF0dXJlIExpY2Vuc2VzIikuIEFib3V0cyBhbmQgRmVhdHVyZVxuXAorTGljZW5zZXMgbWF5IGJlIGxvY2F0ZWQgaW4gYW55IGRpcmVjdG9yeSBvZiBhIERvd25sb2FkIG9yIE1vZHVsZVxuXAoraW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG8gdGhlIGZvbGxvd2luZyBsb2NhdGlvbnM6XG5cCitcblwKKyAgICAgICAtIFRoZSB0b3AtbGV2ZWwgKHJvb3QpIGRpcmVjdG9yeVxuXAorICAgICAgIC0gUGx1Zy1pbiBhbmQgRnJhZ21lbnQgZGlyZWN0b3JpZXNcblwKKyAgICAgICAtIEluc2lkZSBQbHVnLWlucyBhbmQgRnJhZ21lbnRzIHBhY2thZ2VkIGFzIEpBUnNcblwKKyAgICAgICAtIFN1Yi1kaXJlY3RvcmllcyBvZiB0aGUgZGlyZWN0b3J5IG5hbWVkICJzcmMiIG9mIGNlcnRhaW4gUGx1Zy1pbnNcblwKKyAgICAgICAtIEZlYXR1cmUgZGlyZWN0b3JpZXNcblwKK1xuXAorTm90ZTogaWYgYSBGZWF0dXJlIG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gaXMgaW5zdGFsbGVkIHVzaW5nIHRoZVxuXAorUHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kgKGFzIGRlZmluZWQgYmVsb3cpLCB5b3UgbXVzdCBhZ3JlZSB0byBhIGxpY2Vuc2UgKCJGZWF0dXJlIFxuXAorVXBkYXRlIExpY2Vuc2UiKSBkdXJpbmcgdGhlIGluc3RhbGxhdGlvbiBwcm9jZXNzLiBJZiB0aGUgRmVhdHVyZSBjb250YWluc1xuXAorSW5jbHVkZWQgRmVhdHVyZXMsIHRoZSBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlIHNob3VsZCBlaXRoZXIgcHJvdmlkZSB5b3VcblwKK3dpdGggdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyB0aGUgSW5jbHVkZWQgRmVhdHVyZXMgb3IgaW5mb3JtXG5cCit5b3Ugd2hlcmUgeW91IGNhbiBsb2NhdGUgdGhlbS4gRmVhdHVyZSBVcGRhdGUgTGljZW5zZXMgbWF5IGJlIGZvdW5kIGluXG5cCit0aGUgImxpY2Vuc2UiIHByb3BlcnR5IG9mIGZpbGVzIG5hbWVkICJmZWF0dXJlLnByb3BlcnRpZXMiIGZvdW5kIHdpdGhpbiBhIEZlYXR1cmUuXG5cCitTdWNoIEFib3V0cywgRmVhdHVyZSBMaWNlbnNlcywgYW5kIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIGNvbnRhaW4gdGhlXG5cCit0ZXJtcyBhbmQgY29uZGl0aW9ucyAob3IgcmVmZXJlbmNlcyB0byBzdWNoIHRlcm1zIGFuZCBjb25kaXRpb25zKSB0aGF0XG5cCitnb3Zlcm4geW91ciB1c2Ugb2YgdGhlIGFzc29jaWF0ZWQgQ29udGVudCBpbiB0aGF0IGRpcmVjdG9yeS5cblwKK1xuXAorVEhFIEFCT1VUUywgRkVBVFVSRSBMSUNFTlNFUywgQU5EIEZFQVRVUkUgVVBEQVRFIExJQ0VOU0VTIE1BWSBSRUZFUlxuXAorVE8gVEhFIEVQTCBPUiBPVEhFUiBMSUNFTlNFIEFHUkVFTUVOVFMsIE5PVElDRVMgT1IgVEVSTVMgQU5EIENPTkRJVElPTlMuXG5cCitTT01FIE9GIFRIRVNFIE9USEVSIExJQ0VOU0UgQUdSRUVNRU5UUyBNQVkgSU5DTFVERSAoQlVUIEFSRSBOT1QgTElNSVRFRCBUTyk6XG5cCitcblwKKyAgICAgICAtIEVjbGlwc2UgRGlzdHJpYnV0aW9uIExpY2Vuc2UgVmVyc2lvbiAxLjAgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xpY2Vuc2VzL2VkbC12MS4wLmh0bWwpXG5cCisgICAgICAgLSBDb21tb24gUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2NwbC12MTAuaHRtbClcblwKKyAgICAgICAtIEFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlIDEuMSAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFKVxuXAorICAgICAgIC0gQXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UgMi4wIChhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wKVxuXAorICAgICAgIC0gTWV0cm8gTGluayBQdWJsaWMgTGljZW5zZSAxLjAwIChhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29wZW5tb3RpZi9zdXBwb3J0ZXJzL21ldHJvbGluay9saWNlbnNlLmh0bWwpXG5cCisgICAgICAgLSBNb3ppbGxhIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4xIChhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvTVBMLTEuMS5odG1sKVxuXAorXG5cCitJVCBJUyBZT1VSIE9CTElHQVRJT04gVE8gUkVBRCBBTkQgQUNDRVBUIEFMTCBTVUNIIFRFUk1TIEFORCBDT05ESVRJT05TIFBSSU9SXG5cCitUTyBVU0UgT0YgVEhFIENPTlRFTlQuIElmIG5vIEFib3V0LCBGZWF0dXJlIExpY2Vuc2UsIG9yIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VcblwKK2lzIHByb3ZpZGVkLCBwbGVhc2UgY29udGFjdCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIHRvIGRldGVybWluZSB3aGF0IHRlcm1zIGFuZCBjb25kaXRpb25zXG5cCitnb3Zlcm4gdGhhdCBwYXJ0aWN1bGFyIENvbnRlbnQuXG5cCitcblwKK1xuXFVzZSBvZiBQcm92aXNpb25pbmcgVGVjaG5vbG9neVxuXAorXG5cCitUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBwcm92aXNpb25pbmcgc29mdHdhcmUsIGV4YW1wbGVzIG9mIHdoaWNoIGluY2x1ZGUsXG5cCitidXQgYXJlIG5vdCBsaW1pdGVkIHRvLCBwMiBhbmQgdGhlIEVjbGlwc2UgVXBkYXRlIE1hbmFnZXIgKCJQcm92aXNpb25pbmcgVGVjaG5vbG9neSIpIGZvclxuXAordGhlIHB1cnBvc2Ugb2YgYWxsb3dpbmcgdXNlcnMgdG8gaW5zdGFsbCBzb2Z0d2FyZSwgZG9jdW1lbnRhdGlvbiwgaW5mb3JtYXRpb24gYW5kL29yXG5cCitvdGhlciBtYXRlcmlhbHMgKGNvbGxlY3RpdmVseSAiSW5zdGFsbGFibGUgU29mdHdhcmUiKS4gVGhpcyBjYXBhYmlsaXR5IGlzIHByb3ZpZGVkIHdpdGhcblwKK3RoZSBpbnRlbnQgb2YgYWxsb3dpbmcgc3VjaCB1c2VycyB0byBpbnN0YWxsLCBleHRlbmQgYW5kIHVwZGF0ZSBFY2xpcHNlLWJhc2VkIHByb2R1Y3RzLlxuXAorSW5mb3JtYXRpb24gYWJvdXQgcGFja2FnaW5nIEluc3RhbGxhYmxlIFNvZnR3YXJlIGlzIGF2YWlsYWJsZSBhdFxuXAoraHR0cDovL2VjbGlwc2Uub3JnL2VxdWlub3gvcDIvcmVwb3NpdG9yeV9wYWNrYWdpbmcuaHRtbCAoIlNwZWNpZmljYXRpb24iKS5cblwKK1xuXAorWW91IG1heSB1c2UgUHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kgdG8gYWxsb3cgb3RoZXIgcGFydGllcyB0byBpbnN0YWxsIEluc3RhbGxhYmxlIFNvZnR3YXJlLlxuXAorWW91IHNoYWxsIGJlIHJlc3BvbnNpYmxlIGZvciBlbmFibGluZyB0aGUgYXBwbGljYWJsZSBsaWNlbnNlIGFncmVlbWVudHMgcmVsYXRpbmcgdG8gdGhlXG5cCitJbnN0YWxsYWJsZSBTb2Z0d2FyZSB0byBiZSBwcmVzZW50ZWQgdG8sIGFuZCBhY2NlcHRlZCBieSwgdGhlIHVzZXJzIG9mIHRoZSBQcm92aXNpb25pbmcgVGVjaG5vbG9neVxuXAoraW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBTcGVjaWZpY2F0aW9uLiBCeSB1c2luZyBQcm92aXNpb25pbmcgVGVjaG5vbG9neSBpbiBzdWNoIGEgbWFubmVyIGFuZFxuXAorbWFraW5nIGl0IGF2YWlsYWJsZSBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIFNwZWNpZmljYXRpb24sIHlvdSBmdXJ0aGVyIGFja25vd2xlZGdlIHlvdXJcblwKK2FncmVlbWVudCB0bywgYW5kIHRoZSBhY3F1aXNpdGlvbiBvZiBhbGwgbmVjZXNzYXJ5IHJpZ2h0cyB0byBwZXJtaXQgdGhlIGZvbGxvd2luZzpcblwKK1xuXAorICAgICAgIDEuIEEgc2VyaWVzIG9mIGFjdGlvbnMgbWF5IG9jY3VyICgiUHJvdmlzaW9uaW5nIFByb2Nlc3MiKSBpbiB3aGljaCBhIHVzZXIgbWF5IGV4ZWN1dGVcblwKKyAgICAgICAgICB0aGUgUHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kgb24gYSBtYWNoaW5lICgiVGFyZ2V0IE1hY2hpbmUiKSB3aXRoIHRoZSBpbnRlbnQgb2YgaW5zdGFsbGluZyxcblwKKyAgICAgICAgICBleHRlbmRpbmcgb3IgdXBkYXRpbmcgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgYW4gRWNsaXBzZS1iYXNlZCBwcm9kdWN0LlxuXAorICAgICAgIDIuIER1cmluZyB0aGUgUHJvdmlzaW9uaW5nIFByb2Nlc3MsIHRoZSBQcm92aXNpb25pbmcgVGVjaG5vbG9neSBtYXkgY2F1c2UgdGhpcmQgcGFydHlcblwKKyAgICAgICAgICBJbnN0YWxsYWJsZSBTb2Z0d2FyZSBvciBhIHBvcnRpb24gdGhlcmVvZiB0byBiZSBhY2Nlc3NlZCBhbmQgY29waWVkIHRvIHRoZSBUYXJnZXQgTWFjaGluZS5cblwKKyAgICAgICAzLiBQdXJzdWFudCB0byB0aGUgU3BlY2lmaWNhdGlvbiwgeW91IHdpbGwgcHJvdmlkZSB0byB0aGUgdXNlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgdGhhdFxuXAorICAgICAgICAgIGdvdmVybiB0aGUgdXNlIG9mIHRoZSBJbnN0YWxsYWJsZSBTb2Z0d2FyZSAoIkluc3RhbGxhYmxlIFNvZnR3YXJlIEFncmVlbWVudCIpIGFuZCBzdWNoXG5cCisgICAgICAgICAgSW5zdGFsbGFibGUgU29mdHdhcmUgQWdyZWVtZW50IHNoYWxsIGJlIGFjY2Vzc2VkIGZyb20gdGhlIFRhcmdldCBNYWNoaW5lIGluIGFjY29yZGFuY2VcblwKKyAgICAgICAgICB3aXRoIHRoZSBTcGVjaWZpY2F0aW9uLiBTdWNoIEluc3RhbGxhYmxlIFNvZnR3YXJlIEFncmVlbWVudCBtdXN0IGluZm9ybSB0aGUgdXNlciBvZiB0aGVcblwKKyAgICAgICAgICB0ZXJtcyBhbmQgY29uZGl0aW9ucyB0aGF0IGdvdmVybiB0aGUgSW5zdGFsbGFibGUgU29mdHdhcmUgYW5kIG11c3Qgc29saWNpdCBhY2NlcHRhbmNlIGJ5XG5cCisgICAgICAgICAgdGhlIGVuZCB1c2VyIGluIHRoZSBtYW5uZXIgcHJlc2NyaWJlZCBpbiBzdWNoIEluc3RhbGxhYmxlIFNvZnR3YXJlIEFncmVlbWVudC4gVXBvbiBzdWNoXG5cCisgICAgICAgICAgaW5kaWNhdGlvbiBvZiBhZ3JlZW1lbnQgYnkgdGhlIHVzZXIsIHRoZSBwcm92aXNpb25pbmcgVGVjaG5vbG9neSB3aWxsIGNvbXBsZXRlIGluc3RhbGxhdGlvblxuXAorICAgICAgICAgIG9mIHRoZSBJbnN0YWxsYWJsZSBTb2Z0d2FyZS5cblwKK1xuXAorQ3J5cHRvZ3JhcGh5XG5cCitcblwKK0NvbnRlbnQgbWF5IGNvbnRhaW4gZW5jcnlwdGlvbiBzb2Z0d2FyZS4gVGhlIGNvdW50cnkgaW4gd2hpY2ggeW91IGFyZVxuXAorY3VycmVudGx5IG1heSBoYXZlIHJlc3RyaWN0aW9ucyBvbiB0aGUgaW1wb3J0LCBwb3NzZXNzaW9uLCBhbmQgdXNlLFxuXAorYW5kL29yIHJlLWV4cG9ydCB0byBhbm90aGVyIGNvdW50cnksIG9mIGVuY3J5cHRpb24gc29mdHdhcmUuIEJFRk9SRVxuXAordXNpbmcgYW55IGVuY3J5cHRpb24gc29mdHdhcmUsIHBsZWFzZSBjaGVjayB0aGUgY291bnRyeSdzIGxhd3MsXG5cCityZWd1bGF0aW9ucyBhbmQgcG9saWNpZXMgY29uY2VybmluZyB0aGUgaW1wb3J0LCBwb3NzZXNzaW9uLCBvciB1c2UsIGFuZFxuXAorcmUtZXhwb3J0IG9mIGVuY3J5cHRpb24gc29mdHdhcmUsIHRvIHNlZSBpZiB0aGlzIGlzIHBlcm1pdHRlZC5cblwKK1xuXAorSmF2YSBhbmQgYWxsIEphdmEtYmFzZWQgdHJhZGVtYXJrcyBhcmUgdHJhZGVtYXJrcyBvZiBPcmFjbGUgQ29ycG9yYXRpb24gaW4gdGhlIFVuaXRlZCBTdGF0ZXMsIG90aGVyIGNvdW50cmllcywgb3IgYm90aC5cbgorIyMjIyMjIyMjIyMgZW5kIG9mIGxpY2Vuc2UgcHJvcGVydHkgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zY3JpcHRzL2ZlYXR1cmUueG1sIGIvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLnNpbXBsZWNvbmZpZ3VyYXRvci9mZWF0dXJlLnhtbApzaW1pbGFyaXR5IGluZGV4IDcyJQpyZW5hbWUgZnJvbSBidWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnNjcmlwdHMvZmVhdHVyZS54bWwKcmVuYW1lIHRvIGpldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5zaW1wbGVjb25maWd1cmF0b3IvZmVhdHVyZS54bWwKaW5kZXggYTE4YzQ4OC4uYWZiNWM2YiAxMDA3NTUKLS0tIGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zY3JpcHRzL2ZlYXR1cmUueG1sCisrKyBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5zaW1wbGVjb25maWd1cmF0b3IvZmVhdHVyZS54bWwKQEAgLTEsNiArMSw2IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgogPGZlYXR1cmUKLSAgICAgIGlkPSJvcmcuZWNsaXBzZS52aXJnby5qZXR0eS5zY3JpcHRzIgorICAgICAgaWQ9Im9yZy5lY2xpcHNlLnZpcmdvLnNpbXBsZWNvbmZpZ3VyYXRvciIKICAgICAgIGxhYmVsPSIlZmVhdHVyZU5hbWUiCiAgICAgICB2ZXJzaW9uPSIxLjAuMCIKICAgICAgIHByb3ZpZGVyLW5hbWU9IiVwcm92aWRlck5hbWUiCkBAIC0xNywxMSArMTcsMTIgQEAKICAgIDxsaWNlbnNlIHVybD0iJWxpY2Vuc2VVUkwiPgogICAgICAgJWxpY2Vuc2UKICAgIDwvbGljZW5zZT4KLSAgICAKLSAgICA8cGx1Z2luCi0gICAgICAgICBpZD0iamV0dHlfc2VydmVyX3NjcmlwdHMiCisKKyAgIDxwbHVnaW4KKyAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5lcXVpbm94LnNpbXBsZWNvbmZpZ3VyYXRvciIKICAgICAgICAgIGRvd25sb2FkLXNpemU9IjAiCiAgICAgICAgICBpbnN0YWxsLXNpemU9IjAiCi0gICAgICAgICB2ZXJzaW9uPSIxLjAuMCIvPgorICAgICAgICAgdmVyc2lvbj0iQEVRVUlOT1guU0MuVkVSU0lPTkAiCisgICAgICAgICB1bnBhY2s9ImZhbHNlIi8+CiAKIDwvZmVhdHVyZT4KZGlmZiAtLWdpdCBhL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5zaW1wbGVjb25maWd1cmF0b3IvbGljZW5zZS5odG1sIGIvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLnNpbXBsZWNvbmZpZ3VyYXRvci9saWNlbnNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZjE5YzQ4MwotLS0gL2Rldi9udWxsCisrKyBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5zaW1wbGVjb25maWd1cmF0b3IvbGljZW5zZS5odG1sCkBAIC0wLDAgKzEsMTA4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJJU08tODg1OS0xIiA/PgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIiAvPgorPHRpdGxlPkVjbGlwc2UgRm91bmRhdGlvbiBTb2Z0d2FyZSBVc2VyIEFncmVlbWVudDwvdGl0bGU+Cis8L2hlYWQ+CisKKzxib2R5IGxhbmc9IkVOLVVTIj4KKzxoMj5FY2xpcHNlIEZvdW5kYXRpb24gU29mdHdhcmUgVXNlciBBZ3JlZW1lbnQ8L2gyPgorPHA+RmVicnVhcnkgMSwgMjAxMTwvcD4KKworPGgzPlVzYWdlIE9mIENvbnRlbnQ8L2gzPgorCis8cD5USEUgRUNMSVBTRSBGT1VOREFUSU9OIE1BS0VTIEFWQUlMQUJMRSBTT0ZUV0FSRSwgRE9DVU1FTlRBVElPTiwgSU5GT1JNQVRJT04gQU5EL09SIE9USEVSIE1BVEVSSUFMUyBGT1IgT1BFTiBTT1VSQ0UgUFJPSkVDVFMKKyAgIChDT0xMRUNUSVZFTFkgJnF1b3Q7Q09OVEVOVCZxdW90OykuICBVU0UgT0YgVEhFIENPTlRFTlQgSVMgR09WRVJORUQgQlkgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIFRISVMgQUdSRUVNRU5UIEFORC9PUiBUSEUgVEVSTVMgQU5ECisgICBDT05ESVRJT05TIE9GIExJQ0VOU0UgQUdSRUVNRU5UUyBPUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLiAgQlkgVVNJTkcgVEhFIENPTlRFTlQsIFlPVSBBR1JFRSBUSEFUIFlPVVIgVVNFCisgICBPRiBUSEUgQ09OVEVOVCBJUyBHT1ZFUk5FRCBCWSBUSElTIEFHUkVFTUVOVCBBTkQvT1IgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIEFOWSBBUFBMSUNBQkxFIExJQ0VOU0UgQUdSRUVNRU5UUyBPUgorICAgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVy4gIElGIFlPVSBETyBOT1QgQUdSRUUgVE8gVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIFRISVMgQUdSRUVNRU5UIEFORCBUSEUgVEVSTVMgQU5ECisgICBDT05ESVRJT05TIE9GIEFOWSBBUFBMSUNBQkxFIExJQ0VOU0UgQUdSRUVNRU5UUyBPUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLCBUSEVOIFlPVSBNQVkgTk9UIFVTRSBUSEUgQ09OVEVOVC48L3A+CisKKzxoMz5BcHBsaWNhYmxlIExpY2Vuc2VzPC9oMz4KKworPHA+VW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQsIGFsbCBDb250ZW50IG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMAorICAgKCZxdW90O0VQTCZxdW90OykuICBBIGNvcHkgb2YgdGhlIEVQTCBpcyBwcm92aWRlZCB3aXRoIHRoaXMgQ29udGVudCBhbmQgaXMgYWxzbyBhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sPC9hPi4KKyAgIEZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC48L3A+CisKKzxwPkNvbnRlbnQgaW5jbHVkZXMsIGJ1dCBpcyBub3QgbGltaXRlZCB0bywgc291cmNlIGNvZGUsIG9iamVjdCBjb2RlLCBkb2N1bWVudGF0aW9uIGFuZCBvdGhlciBmaWxlcyBtYWludGFpbmVkIGluIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gc291cmNlIGNvZGUKKyAgIHJlcG9zaXRvcnkgKCZxdW90O1JlcG9zaXRvcnkmcXVvdDspIGluIHNvZnR3YXJlIG1vZHVsZXMgKCZxdW90O01vZHVsZXMmcXVvdDspIGFuZCBtYWRlIGF2YWlsYWJsZSBhcyBkb3dubG9hZGFibGUgYXJjaGl2ZXMgKCZxdW90O0Rvd25sb2FkcyZxdW90OykuPC9wPgorCis8dWw+CisgICAgICAgPGxpPkNvbnRlbnQgbWF5IGJlIHN0cnVjdHVyZWQgYW5kIHBhY2thZ2VkIGludG8gbW9kdWxlcyB0byBmYWNpbGl0YXRlIGRlbGl2ZXJpbmcsIGV4dGVuZGluZywgYW5kIHVwZ3JhZGluZyB0aGUgQ29udGVudC4gIFR5cGljYWwgbW9kdWxlcyBtYXkgaW5jbHVkZSBwbHVnLWlucyAoJnF1b3Q7UGx1Zy1pbnMmcXVvdDspLCBwbHVnLWluIGZyYWdtZW50cyAoJnF1b3Q7RnJhZ21lbnRzJnF1b3Q7KSwgYW5kIGZlYXR1cmVzICgmcXVvdDtGZWF0dXJlcyZxdW90OykuPC9saT4KKyAgICAgICA8bGk+RWFjaCBQbHVnLWluIG9yIEZyYWdtZW50IG1heSBiZSBwYWNrYWdlZCBhcyBhIHN1Yi1kaXJlY3Rvcnkgb3IgSkFSIChKYXZhJnRyYWRlOyBBUmNoaXZlKSBpbiBhIGRpcmVjdG9yeSBuYW1lZCAmcXVvdDtwbHVnaW5zJnF1b3Q7LjwvbGk+CisgICAgICAgPGxpPkEgRmVhdHVyZSBpcyBhIGJ1bmRsZSBvZiBvbmUgb3IgbW9yZSBQbHVnLWlucyBhbmQvb3IgRnJhZ21lbnRzIGFuZCBhc3NvY2lhdGVkIG1hdGVyaWFsLiAgRWFjaCBGZWF0dXJlIG1heSBiZSBwYWNrYWdlZCBhcyBhIHN1Yi1kaXJlY3RvcnkgaW4gYSBkaXJlY3RvcnkgbmFtZWQgJnF1b3Q7ZmVhdHVyZXMmcXVvdDsuICBXaXRoaW4gYSBGZWF0dXJlLCBmaWxlcyBuYW1lZCAmcXVvdDtmZWF0dXJlLnhtbCZxdW90OyBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2YgdGhlIFBsdWctaW5zCisgICAgICBhbmQvb3IgRnJhZ21lbnRzIGFzc29jaWF0ZWQgd2l0aCB0aGF0IEZlYXR1cmUuPC9saT4KKyAgICAgICA8bGk+RmVhdHVyZXMgbWF5IGFsc28gaW5jbHVkZSBvdGhlciBGZWF0dXJlcyAoJnF1b3Q7SW5jbHVkZWQgRmVhdHVyZXMmcXVvdDspLiBXaXRoaW4gYSBGZWF0dXJlLCBmaWxlcyBuYW1lZCAmcXVvdDtmZWF0dXJlLnhtbCZxdW90OyBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2YgSW5jbHVkZWQgRmVhdHVyZXMuPC9saT4KKzwvdWw+CisKKzxwPlRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgUGx1Zy1pbnMgYW5kIEZyYWdtZW50cyBzaG91bGQgYmUgY29udGFpbmVkIGluIGZpbGVzIG5hbWVkICZxdW90O2Fib3V0Lmh0bWwmcXVvdDsgKCZxdW90O0Fib3V0cyZxdW90OykuIFRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgRmVhdHVyZXMgYW5kCitJbmNsdWRlZCBGZWF0dXJlcyBzaG91bGQgYmUgY29udGFpbmVkIGluIGZpbGVzIG5hbWVkICZxdW90O2xpY2Vuc2UuaHRtbCZxdW90OyAoJnF1b3Q7RmVhdHVyZSBMaWNlbnNlcyZxdW90OykuICBBYm91dHMgYW5kIEZlYXR1cmUgTGljZW5zZXMgbWF5IGJlIGxvY2F0ZWQgaW4gYW55IGRpcmVjdG9yeSBvZiBhIERvd25sb2FkIG9yIE1vZHVsZQoraW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG8gdGhlIGZvbGxvd2luZyBsb2NhdGlvbnM6PC9wPgorCis8dWw+CisgICAgICAgPGxpPlRoZSB0b3AtbGV2ZWwgKHJvb3QpIGRpcmVjdG9yeTwvbGk+CisgICAgICAgPGxpPlBsdWctaW4gYW5kIEZyYWdtZW50IGRpcmVjdG9yaWVzPC9saT4KKyAgICAgICA8bGk+SW5zaWRlIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgcGFja2FnZWQgYXMgSkFSczwvbGk+CisgICAgICAgPGxpPlN1Yi1kaXJlY3RvcmllcyBvZiB0aGUgZGlyZWN0b3J5IG5hbWVkICZxdW90O3NyYyZxdW90OyBvZiBjZXJ0YWluIFBsdWctaW5zPC9saT4KKyAgICAgICA8bGk+RmVhdHVyZSBkaXJlY3RvcmllczwvbGk+Cis8L3VsPgorCis8cD5Ob3RlOiBpZiBhIEZlYXR1cmUgbWFkZSBhdmFpbGFibGUgYnkgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpcyBpbnN0YWxsZWQgdXNpbmcgdGhlIFByb3Zpc2lvbmluZyBUZWNobm9sb2d5IChhcyBkZWZpbmVkIGJlbG93KSwgeW91IG11c3QgYWdyZWUgdG8gYSBsaWNlbnNlICgmcXVvdDtGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlJnF1b3Q7KSBkdXJpbmcgdGhlCitpbnN0YWxsYXRpb24gcHJvY2Vzcy4gIElmIHRoZSBGZWF0dXJlIGNvbnRhaW5zIEluY2x1ZGVkIEZlYXR1cmVzLCB0aGUgRmVhdHVyZSBVcGRhdGUgTGljZW5zZSBzaG91bGQgZWl0aGVyIHByb3ZpZGUgeW91IHdpdGggdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyB0aGUgSW5jbHVkZWQgRmVhdHVyZXMgb3IKK2luZm9ybSB5b3Ugd2hlcmUgeW91IGNhbiBsb2NhdGUgdGhlbS4gIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIG1heSBiZSBmb3VuZCBpbiB0aGUgJnF1b3Q7bGljZW5zZSZxdW90OyBwcm9wZXJ0eSBvZiBmaWxlcyBuYW1lZCAmcXVvdDtmZWF0dXJlLnByb3BlcnRpZXMmcXVvdDsgZm91bmQgd2l0aGluIGEgRmVhdHVyZS4KK1N1Y2ggQWJvdXRzLCBGZWF0dXJlIExpY2Vuc2VzLCBhbmQgRmVhdHVyZSBVcGRhdGUgTGljZW5zZXMgY29udGFpbiB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgKG9yIHJlZmVyZW5jZXMgdG8gc3VjaCB0ZXJtcyBhbmQgY29uZGl0aW9ucykgdGhhdCBnb3Zlcm4geW91ciB1c2Ugb2YgdGhlIGFzc29jaWF0ZWQgQ29udGVudCBpbgordGhhdCBkaXJlY3RvcnkuPC9wPgorCis8cD5USEUgQUJPVVRTLCBGRUFUVVJFIExJQ0VOU0VTLCBBTkQgRkVBVFVSRSBVUERBVEUgTElDRU5TRVMgTUFZIFJFRkVSIFRPIFRIRSBFUEwgT1IgT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTLCBOT1RJQ0VTIE9SIFRFUk1TIEFORCBDT05ESVRJT05TLiAgU09NRSBPRiBUSEVTRQorT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTIE1BWSBJTkNMVURFIChCVVQgQVJFIE5PVCBMSU1JVEVEIFRPKTo8L3A+CisKKzx1bD4KKyAgICAgICA8bGk+RWNsaXBzZSBEaXN0cmlidXRpb24gTGljZW5zZSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGljZW5zZXMvZWRsLXYxMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xpY2Vuc2VzL2VkbC12MS4wLmh0bWw8L2E+KTwvbGk+CisgICAgICAgPGxpPkNvbW1vbiBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2NwbC12MTAuaHRtbDwvYT4pPC9saT4KKyAgICAgICA8bGk+QXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UgMS4xIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UiPmh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFPC9hPik8L2xpPgorICAgICAgIDxsaT5BcGFjaGUgU29mdHdhcmUgTGljZW5zZSAyLjAgKGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAiPmh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMDwvYT4pPC9saT4KKyAgICAgICA8bGk+TWV0cm8gTGluayBQdWJsaWMgTGljZW5zZSAxLjAwIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29wZW5tb3RpZi9zdXBwb3J0ZXJzL21ldHJvbGluay9saWNlbnNlLmh0bWwiPmh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vcGVubW90aWYvc3VwcG9ydGVycy9tZXRyb2xpbmsvbGljZW5zZS5odG1sPC9hPik8L2xpPgorICAgICAgIDxsaT5Nb3ppbGxhIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4xIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvTVBMLTEuMS5odG1sIj5odHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC9NUEwtMS4xLmh0bWw8L2E+KTwvbGk+Cis8L3VsPgorCis8cD5JVCBJUyBZT1VSIE9CTElHQVRJT04gVE8gUkVBRCBBTkQgQUNDRVBUIEFMTCBTVUNIIFRFUk1TIEFORCBDT05ESVRJT05TIFBSSU9SIFRPIFVTRSBPRiBUSEUgQ09OVEVOVC4gIElmIG5vIEFib3V0LCBGZWF0dXJlIExpY2Vuc2UsIG9yIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2UgaXMgcHJvdmlkZWQsIHBsZWFzZQorY29udGFjdCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIHRvIGRldGVybWluZSB3aGF0IHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybiB0aGF0IHBhcnRpY3VsYXIgQ29udGVudC48L3A+CisKKworPGgzPlVzZSBvZiBQcm92aXNpb25pbmcgVGVjaG5vbG9neTwvaDM+CisKKzxwPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIHByb3Zpc2lvbmluZyBzb2Z0d2FyZSwgZXhhbXBsZXMgb2Ygd2hpY2ggaW5jbHVkZSwgYnV0IGFyZSBub3QgbGltaXRlZCB0bywgcDIgYW5kIHRoZSBFY2xpcHNlCisgICBVcGRhdGUgTWFuYWdlciAoJnF1b3Q7UHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kmcXVvdDspIGZvciB0aGUgcHVycG9zZSBvZiBhbGxvd2luZyB1c2VycyB0byBpbnN0YWxsIHNvZnR3YXJlLCBkb2N1bWVudGF0aW9uLCBpbmZvcm1hdGlvbiBhbmQvb3IKKyAgIG90aGVyIG1hdGVyaWFscyAoY29sbGVjdGl2ZWx5ICZxdW90O0luc3RhbGxhYmxlIFNvZnR3YXJlJnF1b3Q7KS4gVGhpcyBjYXBhYmlsaXR5IGlzIHByb3ZpZGVkIHdpdGggdGhlIGludGVudCBvZiBhbGxvd2luZyBzdWNoIHVzZXJzIHRvCisgICBpbnN0YWxsLCBleHRlbmQgYW5kIHVwZGF0ZSBFY2xpcHNlLWJhc2VkIHByb2R1Y3RzLiBJbmZvcm1hdGlvbiBhYm91dCBwYWNrYWdpbmcgSW5zdGFsbGFibGUgU29mdHdhcmUgaXMgYXZhaWxhYmxlIGF0IDxhCisgICAgICAgaHJlZj0iaHR0cDovL2VjbGlwc2Uub3JnL2VxdWlub3gvcDIvcmVwb3NpdG9yeV9wYWNrYWdpbmcuaHRtbCI+aHR0cDovL2VjbGlwc2Uub3JnL2VxdWlub3gvcDIvcmVwb3NpdG9yeV9wYWNrYWdpbmcuaHRtbDwvYT4KKyAgICgmcXVvdDtTcGVjaWZpY2F0aW9uJnF1b3Q7KS48L3A+CisKKzxwPllvdSBtYXkgdXNlIFByb3Zpc2lvbmluZyBUZWNobm9sb2d5IHRvIGFsbG93IG90aGVyIHBhcnRpZXMgdG8gaW5zdGFsbCBJbnN0YWxsYWJsZSBTb2Z0d2FyZS4gWW91IHNoYWxsIGJlIHJlc3BvbnNpYmxlIGZvciBlbmFibGluZyB0aGUKKyAgIGFwcGxpY2FibGUgbGljZW5zZSBhZ3JlZW1lbnRzIHJlbGF0aW5nIHRvIHRoZSBJbnN0YWxsYWJsZSBTb2Z0d2FyZSB0byBiZSBwcmVzZW50ZWQgdG8sIGFuZCBhY2NlcHRlZCBieSwgdGhlIHVzZXJzIG9mIHRoZSBQcm92aXNpb25pbmcgVGVjaG5vbG9neQorICAgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBTcGVjaWZpY2F0aW9uLiBCeSB1c2luZyBQcm92aXNpb25pbmcgVGVjaG5vbG9neSBpbiBzdWNoIGEgbWFubmVyIGFuZCBtYWtpbmcgaXQgYXZhaWxhYmxlIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUKKyAgIFNwZWNpZmljYXRpb24sIHlvdSBmdXJ0aGVyIGFja25vd2xlZGdlIHlvdXIgYWdyZWVtZW50IHRvLCBhbmQgdGhlIGFjcXVpc2l0aW9uIG9mIGFsbCBuZWNlc3NhcnkgcmlnaHRzIHRvIHBlcm1pdCB0aGUgZm9sbG93aW5nOjwvcD4KKworPG9sPgorICAgICAgIDxsaT5BIHNlcmllcyBvZiBhY3Rpb25zIG1heSBvY2N1ciAoJnF1b3Q7UHJvdmlzaW9uaW5nIFByb2Nlc3MmcXVvdDspIGluIHdoaWNoIGEgdXNlciBtYXkgZXhlY3V0ZSB0aGUgUHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kKKyAgICAgICBvbiBhIG1hY2hpbmUgKCZxdW90O1RhcmdldCBNYWNoaW5lJnF1b3Q7KSB3aXRoIHRoZSBpbnRlbnQgb2YgaW5zdGFsbGluZywgZXh0ZW5kaW5nIG9yIHVwZGF0aW5nIHRoZSBmdW5jdGlvbmFsaXR5IG9mIGFuIEVjbGlwc2UtYmFzZWQKKyAgICAgICBwcm9kdWN0LjwvbGk+CisgICAgICAgPGxpPkR1cmluZyB0aGUgUHJvdmlzaW9uaW5nIFByb2Nlc3MsIHRoZSBQcm92aXNpb25pbmcgVGVjaG5vbG9neSBtYXkgY2F1c2UgdGhpcmQgcGFydHkgSW5zdGFsbGFibGUgU29mdHdhcmUgb3IgYSBwb3J0aW9uIHRoZXJlb2YgdG8gYmUKKyAgICAgICBhY2Nlc3NlZCBhbmQgY29waWVkIHRvIHRoZSBUYXJnZXQgTWFjaGluZS48L2xpPgorICAgICAgIDxsaT5QdXJzdWFudCB0byB0aGUgU3BlY2lmaWNhdGlvbiwgeW91IHdpbGwgcHJvdmlkZSB0byB0aGUgdXNlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgdGhhdCBnb3Zlcm4gdGhlIHVzZSBvZiB0aGUgSW5zdGFsbGFibGUKKyAgICAgICBTb2Z0d2FyZSAoJnF1b3Q7SW5zdGFsbGFibGUgU29mdHdhcmUgQWdyZWVtZW50JnF1b3Q7KSBhbmQgc3VjaCBJbnN0YWxsYWJsZSBTb2Z0d2FyZSBBZ3JlZW1lbnQgc2hhbGwgYmUgYWNjZXNzZWQgZnJvbSB0aGUgVGFyZ2V0CisgICAgICAgTWFjaGluZSBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIFNwZWNpZmljYXRpb24uIFN1Y2ggSW5zdGFsbGFibGUgU29mdHdhcmUgQWdyZWVtZW50IG11c3QgaW5mb3JtIHRoZSB1c2VyIG9mIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyB0aGF0IGdvdmVybgorICAgICAgIHRoZSBJbnN0YWxsYWJsZSBTb2Z0d2FyZSBhbmQgbXVzdCBzb2xpY2l0IGFjY2VwdGFuY2UgYnkgdGhlIGVuZCB1c2VyIGluIHRoZSBtYW5uZXIgcHJlc2NyaWJlZCBpbiBzdWNoIEluc3RhbGxhYmxlIFNvZnR3YXJlIEFncmVlbWVudC4gVXBvbiBzdWNoCisgICAgICAgaW5kaWNhdGlvbiBvZiBhZ3JlZW1lbnQgYnkgdGhlIHVzZXIsIHRoZSBwcm92aXNpb25pbmcgVGVjaG5vbG9neSB3aWxsIGNvbXBsZXRlIGluc3RhbGxhdGlvbiBvZiB0aGUgSW5zdGFsbGFibGUgU29mdHdhcmUuPC9saT4KKzwvb2w+CisKKzxoMz5DcnlwdG9ncmFwaHk8L2gzPgorCis8cD5Db250ZW50IG1heSBjb250YWluIGVuY3J5cHRpb24gc29mdHdhcmUuIFRoZSBjb3VudHJ5IGluIHdoaWNoIHlvdSBhcmUgY3VycmVudGx5IG1heSBoYXZlIHJlc3RyaWN0aW9ucyBvbiB0aGUgaW1wb3J0LCBwb3NzZXNzaW9uLCBhbmQgdXNlLCBhbmQvb3IgcmUtZXhwb3J0IHRvCisgICBhbm90aGVyIGNvdW50cnksIG9mIGVuY3J5cHRpb24gc29mdHdhcmUuIEJFRk9SRSB1c2luZyBhbnkgZW5jcnlwdGlvbiBzb2Z0d2FyZSwgcGxlYXNlIGNoZWNrIHRoZSBjb3VudHJ5J3MgbGF3cywgcmVndWxhdGlvbnMgYW5kIHBvbGljaWVzIGNvbmNlcm5pbmcgdGhlIGltcG9ydCwKKyAgIHBvc3Nlc3Npb24sIG9yIHVzZSwgYW5kIHJlLWV4cG9ydCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLCB0byBzZWUgaWYgdGhpcyBpcyBwZXJtaXR0ZWQuPC9wPgorCis8cD48c21hbGw+SmF2YSBhbmQgYWxsIEphdmEtYmFzZWQgdHJhZGVtYXJrcyBhcmUgdHJhZGVtYXJrcyBvZiBPcmFjbGUgQ29ycG9yYXRpb24gaW4gdGhlIFVuaXRlZCBTdGF0ZXMsIG90aGVyIGNvdW50cmllcywgb3IgYm90aC48L3NtYWxsPjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5zcHJpbmdkbS9idWlsZC5wcm9wZXJ0aWVzIGIvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLnNwcmluZ2RtL2J1aWxkLnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjRmOTNhOQotLS0gL2Rldi9udWxsCisrKyBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5zcHJpbmdkbS9idWlsZC5wcm9wZXJ0aWVzCkBAIC0wLDAgKzEgQEAKK2Jpbi5pbmNsdWRlcyA9IGZlYXR1cmUueG1sCmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnJlc291cmNlcy9lY2xpcHNlX3VwZGF0ZV8xMjAuanBnIGIvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLnNwcmluZ2RtL2VjbGlwc2VfdXBkYXRlXzEyMC5qcGcKc2ltaWxhcml0eSBpbmRleCAxMDAlCmNvcHkgZnJvbSBidWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LnJlc291cmNlcy9lY2xpcHNlX3VwZGF0ZV8xMjAuanBnCmNvcHkgdG8gamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLnNwcmluZ2RtL2VjbGlwc2VfdXBkYXRlXzEyMC5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5yZXNvdXJjZXMvZXBsLXYxMC5odG1sIGIvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLnNwcmluZ2RtL2VwbC12MTAuaHRtbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKY29weSBmcm9tIGJ1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkucmVzb3VyY2VzL2VwbC12MTAuaHRtbApjb3B5IHRvIGpldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5zcHJpbmdkbS9lcGwtdjEwLmh0bWwKZGlmZiAtLWdpdCBhL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5zcHJpbmdkbS9mZWF0dXJlLnByb3BlcnRpZXMgYi9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uc3ByaW5nZG0vZmVhdHVyZS5wcm9wZXJ0aWVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkMTU4NzcKLS0tIC9kZXYvbnVsbAorKysgYi9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uc3ByaW5nZG0vZmVhdHVyZS5wcm9wZXJ0aWVzCkBAIC0wLDAgKzEsMTgwIEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIENvcHlyaWdodCAoYykgMjAxMSBTQVAgQUcKKyMKKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscworIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAKKyMgYW5kIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uCisjIFRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIGlzIGF2YWlsYWJsZSBhdAorIyAgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sCisjIGFuZCB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCBpcyBhdmFpbGFibGUgYXQKKyMgICBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2FwYWNoZTIuMC5waHAuCisjIFlvdSBtYXkgZWxlY3QgdG8gcmVkaXN0cmlidXRlIHRoaXMgY29kZSB1bmRlciBlaXRoZXIgb2YgdGhlc2UgbGljZW5zZXMuCisjCisjIENvbnRyaWJ1dG9yczoKKyMgICBCb3Jpc2xhdiBLYXB1a2FyYW5vdiAtIGluaXRpYWwgY29udHJpYnV0aW9uCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIGZlYXR1cmUucHJvcGVydGllcworIyBjb250YWlucyBleHRlcm5hbGl6ZWQgc3RyaW5ncyBmb3IgZmVhdHVyZS54bWwKKyMgIiVmb28iIGluIGZlYXR1cmUueG1sIGNvcnJlc3BvbmRzIHRvIHRoZSBrZXkgImZvbyIgaW4gdGhpcyBmaWxlCisjIGphdmEuaW8uUHJvcGVydGllcyBmaWxlIChJU08gODg1OS0xIHdpdGggIlwiIGVzY2FwZXMpCisjIFRoaXMgZmlsZSBzaG91bGQgYmUgdHJhbnNsYXRlZC4KKworIyAiZmVhdHVyZU5hbWUiIHByb3BlcnR5IC0gbmFtZSBvZiB0aGUgZmVhdHVyZQorZmVhdHVyZU5hbWU9RWNsaXBzZSBWaXJnbyBTcHJpbmdETSBGZWF0dXJlCisKKyMgInByb3ZpZGVyTmFtZSIgcHJvcGVydHkgLSBuYW1lIG9mIHRoZSBjb21wYW55IHRoYXQgcHJvdmlkZXMgdGhlIGZlYXR1cmUKK3Byb3ZpZGVyTmFtZT1FY2xpcHNlLm9yZworCisjICJ1cGRhdGVTaXRlTmFtZSIgcHJvcGVydHkgLSBsYWJlbCBmb3IgdGhlIHVwZGF0ZSBzaXRlCisKKyMgImRlc2NyaXB0aW9uIiBwcm9wZXJ0eSAtIGRlc2NyaXB0aW9uIG9mIHRoZSBmZWF0dXJlCitkZXNjcmlwdGlvbj1UaGlzIGZlYXR1cmUgcHJvdmlkZXMgYSBTcHJpbmdETSBhZGQtb24gZm9yIFZpcmdvLiBJdCBpbmNsdWRlcyB0aGUgc3RhbmRhcmQgU3ByaW5nRE0gYnVuZGxlcy5cblwKKworIyAiY29weXJpZ2h0IiBwcm9wZXJ0eSAtIHRleHQgb2YgdGhlICJGZWF0dXJlIFVwZGF0ZSBDb3B5cmlnaHQiCitjb3B5cmlnaHQ9XAorQ29weXJpZ2h0IChjKSAyMDA5LCAyMDEwLCAyMDExIFZNd2FyZSBJbmMuIGFuZCBvdGhlcnNcblwKK1xuXAorQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFsc1xuXAorYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wXG5cCithbmQgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi5cblwKK1RoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIGlzIGF2YWlsYWJsZSBhdFxuXAoraHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWxcblwKK2FuZCB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCBpcyBhdmFpbGFibGUgYXRcblwKK2h0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYXBhY2hlMi4wLnBocC5cblwKK1lvdSBtYXkgZWxlY3QgdG8gcmVkaXN0cmlidXRlIHRoaXMgY29kZSB1bmRlciBlaXRoZXIgb2YgdGhlc2VcblwKK2xpY2Vuc2VzLlxuXAorXG5cCitDb250cmlidXRvcnM6XG5cCitWTXdhcmUgSW5jLiAtIGluaXRpYWwgY29udHJpYnV0aW9uXG5cCisKKyMgImxpY2Vuc2VVUkwiIHByb3BlcnR5IC0gVVJMIG9mIHRoZSAiRmVhdHVyZSBMaWNlbnNlIgorIyBkbyBub3QgdHJhbnNsYXRlIHZhbHVlIC0ganVzdCBjaGFuZ2UgdG8gcG9pbnQgdG8gYSBsb2NhbGUtc3BlY2lmaWMgSFRNTCBwYWdlCitsaWNlbnNlVVJMPWxpY2Vuc2UuaHRtbAorCisjICJsaWNlbnNlIiBwcm9wZXJ0eSAtIHRleHQgb2YgdGhlICJGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlIgorIyBzaG91bGQgYmUgcGxhaW4gdGV4dCB2ZXJzaW9uIG9mIGxpY2Vuc2UgYWdyZWVtZW50IHBvaW50ZWQgdG8gYmUgImxpY2Vuc2VVUkwiCitsaWNlbnNlPVwKK0VjbGlwc2UgRm91bmRhdGlvbiBTb2Z0d2FyZSBVc2VyIEFncmVlbWVudFxuXAorRmVicnVhcnkgMSwgMjAxMVxuXAorXG5cCitVc2FnZSBPZiBDb250ZW50XG5cCitcblwKK1RIRSBFQ0xJUFNFIEZPVU5EQVRJT04gTUFLRVMgQVZBSUxBQkxFIFNPRlRXQVJFLCBET0NVTUVOVEFUSU9OLCBJTkZPUk1BVElPTiBBTkQvT1JcblwKK09USEVSIE1BVEVSSUFMUyBGT1IgT1BFTiBTT1VSQ0UgUFJPSkVDVFMgKENPTExFQ1RJVkVMWSAiQ09OVEVOVCIpLlxuXAorVVNFIE9GIFRIRSBDT05URU5UIElTIEdPVkVSTkVEIEJZIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBUSElTXG5cCitBR1JFRU1FTlQgQU5EL09SIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBMSUNFTlNFIEFHUkVFTUVOVFMgT1JcblwKK05PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRUQgQkVMT1cuICBCWSBVU0lORyBUSEUgQ09OVEVOVCwgWU9VXG5cCitBR1JFRSBUSEFUIFlPVVIgVVNFIE9GIFRIRSBDT05URU5UIElTIEdPVkVSTkVEIEJZIFRISVMgQUdSRUVNRU5UXG5cCitBTkQvT1IgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIEFOWSBBUFBMSUNBQkxFIExJQ0VOU0UgQUdSRUVNRU5UU1xuXAorT1IgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVy4gIElGIFlPVSBETyBOT1QgQUdSRUUgVE8gVEhFXG5cCitURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBUSElTIEFHUkVFTUVOVCBBTkQgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TXG5cCitPRiBBTlkgQVBQTElDQUJMRSBMSUNFTlNFIEFHUkVFTUVOVFMgT1IgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRFxuXAorQkVMT1csIFRIRU4gWU9VIE1BWSBOT1QgVVNFIFRIRSBDT05URU5ULlxuXAorXG5cCitBcHBsaWNhYmxlIExpY2Vuc2VzXG5cCitcblwKK1VubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkLCBhbGwgQ29udGVudCBtYWRlIGF2YWlsYWJsZSBieSB0aGVcblwKK0VjbGlwc2UgRm91bmRhdGlvbiBpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mXG5cCit0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoIkVQTCIpLiBBIGNvcHkgb2YgdGhlIEVQTCBpc1xuXAorcHJvdmlkZWQgd2l0aCB0aGlzIENvbnRlbnQgYW5kIGlzIGFsc28gYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sLlxuXAorRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICJQcm9ncmFtIiB3aWxsIG1lYW4gdGhlIENvbnRlbnQuXG5cCitcblwKK0NvbnRlbnQgaW5jbHVkZXMsIGJ1dCBpcyBub3QgbGltaXRlZCB0bywgc291cmNlIGNvZGUsIG9iamVjdCBjb2RlLFxuXAorZG9jdW1lbnRhdGlvbiBhbmQgb3RoZXIgZmlsZXMgbWFpbnRhaW5lZCBpbiB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIHNvdXJjZSBjb2RlXG5cCityZXBvc2l0b3J5ICgiUmVwb3NpdG9yeSIpIGluIHNvZnR3YXJlIG1vZHVsZXMgKCJNb2R1bGVzIikgYW5kIG1hZGUgYXZhaWxhYmxlXG5cCithcyBkb3dubG9hZGFibGUgYXJjaGl2ZXMgKCJEb3dubG9hZHMiKS5cblwKK1xuXAorICAgICAgIC0gQ29udGVudCBtYXkgYmUgc3RydWN0dXJlZCBhbmQgcGFja2FnZWQgaW50byBtb2R1bGVzIHRvIGZhY2lsaXRhdGUgZGVsaXZlcmluZyxcblwKKyAgICAgICAgIGV4dGVuZGluZywgYW5kIHVwZ3JhZGluZyB0aGUgQ29udGVudC4gVHlwaWNhbCBtb2R1bGVzIG1heSBpbmNsdWRlIHBsdWctaW5zICgiUGx1Zy1pbnMiKSxcblwKKyAgICAgICAgIHBsdWctaW4gZnJhZ21lbnRzICgiRnJhZ21lbnRzIiksIGFuZCBmZWF0dXJlcyAoIkZlYXR1cmVzIikuXG5cCisgICAgICAgLSBFYWNoIFBsdWctaW4gb3IgRnJhZ21lbnQgbWF5IGJlIHBhY2thZ2VkIGFzIGEgc3ViLWRpcmVjdG9yeSBvciBKQVIgKEphdmEoVE0pIEFSY2hpdmUpXG5cCisgICAgICAgICBpbiBhIGRpcmVjdG9yeSBuYW1lZCAicGx1Z2lucyIuXG5cCisgICAgICAgLSBBIEZlYXR1cmUgaXMgYSBidW5kbGUgb2Ygb25lIG9yIG1vcmUgUGx1Zy1pbnMgYW5kL29yIEZyYWdtZW50cyBhbmQgYXNzb2NpYXRlZCBtYXRlcmlhbC5cblwKKyAgICAgICAgIEVhY2ggRmVhdHVyZSBtYXkgYmUgcGFja2FnZWQgYXMgYSBzdWItZGlyZWN0b3J5IGluIGEgZGlyZWN0b3J5IG5hbWVkICJmZWF0dXJlcyIuXG5cCisgICAgICAgICBXaXRoaW4gYSBGZWF0dXJlLCBmaWxlcyBuYW1lZCAiZmVhdHVyZS54bWwiIG1heSBjb250YWluIGEgbGlzdCBvZiB0aGUgbmFtZXMgYW5kIHZlcnNpb25cblwKKyAgICAgICAgIG51bWJlcnMgb2YgdGhlIFBsdWctaW5zIGFuZC9vciBGcmFnbWVudHMgYXNzb2NpYXRlZCB3aXRoIHRoYXQgRmVhdHVyZS5cblwKKyAgICAgICAtIEZlYXR1cmVzIG1heSBhbHNvIGluY2x1ZGUgb3RoZXIgRmVhdHVyZXMgKCJJbmNsdWRlZCBGZWF0dXJlcyIpLiBXaXRoaW4gYSBGZWF0dXJlLCBmaWxlc1xuXAorICAgICAgICAgbmFtZWQgImZlYXR1cmUueG1sIiBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2YgSW5jbHVkZWQgRmVhdHVyZXMuXG5cCitcblwKK1RoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgUGx1Zy1pbnMgYW5kIEZyYWdtZW50cyBzaG91bGQgYmVcblwKK2NvbnRhaW5lZCBpbiBmaWxlcyBuYW1lZCAiYWJvdXQuaHRtbCIgKCJBYm91dHMiKS4gVGhlIHRlcm1zIGFuZFxuXAorY29uZGl0aW9ucyBnb3Zlcm5pbmcgRmVhdHVyZXMgYW5kIEluY2x1ZGVkIEZlYXR1cmVzIHNob3VsZCBiZSBjb250YWluZWRcblwKK2luIGZpbGVzIG5hbWVkICJsaWNlbnNlLmh0bWwiICgiRmVhdHVyZSBMaWNlbnNlcyIpLiBBYm91dHMgYW5kIEZlYXR1cmVcblwKK0xpY2Vuc2VzIG1heSBiZSBsb2NhdGVkIGluIGFueSBkaXJlY3Rvcnkgb2YgYSBEb3dubG9hZCBvciBNb2R1bGVcblwKK2luY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvIHRoZSBmb2xsb3dpbmcgbG9jYXRpb25zOlxuXAorXG5cCisgICAgICAgLSBUaGUgdG9wLWxldmVsIChyb290KSBkaXJlY3RvcnlcblwKKyAgICAgICAtIFBsdWctaW4gYW5kIEZyYWdtZW50IGRpcmVjdG9yaWVzXG5cCisgICAgICAgLSBJbnNpZGUgUGx1Zy1pbnMgYW5kIEZyYWdtZW50cyBwYWNrYWdlZCBhcyBKQVJzXG5cCisgICAgICAgLSBTdWItZGlyZWN0b3JpZXMgb2YgdGhlIGRpcmVjdG9yeSBuYW1lZCAic3JjIiBvZiBjZXJ0YWluIFBsdWctaW5zXG5cCisgICAgICAgLSBGZWF0dXJlIGRpcmVjdG9yaWVzXG5cCitcblwKK05vdGU6IGlmIGEgRmVhdHVyZSBtYWRlIGF2YWlsYWJsZSBieSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIGluc3RhbGxlZCB1c2luZyB0aGVcblwKK1Byb3Zpc2lvbmluZyBUZWNobm9sb2d5IChhcyBkZWZpbmVkIGJlbG93KSwgeW91IG11c3QgYWdyZWUgdG8gYSBsaWNlbnNlICgiRmVhdHVyZSBcblwKK1VwZGF0ZSBMaWNlbnNlIikgZHVyaW5nIHRoZSBpbnN0YWxsYXRpb24gcHJvY2Vzcy4gSWYgdGhlIEZlYXR1cmUgY29udGFpbnNcblwKK0luY2x1ZGVkIEZlYXR1cmVzLCB0aGUgRmVhdHVyZSBVcGRhdGUgTGljZW5zZSBzaG91bGQgZWl0aGVyIHByb3ZpZGUgeW91XG5cCit3aXRoIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgdGhlIEluY2x1ZGVkIEZlYXR1cmVzIG9yIGluZm9ybVxuXAoreW91IHdoZXJlIHlvdSBjYW4gbG9jYXRlIHRoZW0uIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIG1heSBiZSBmb3VuZCBpblxuXAordGhlICJsaWNlbnNlIiBwcm9wZXJ0eSBvZiBmaWxlcyBuYW1lZCAiZmVhdHVyZS5wcm9wZXJ0aWVzIiBmb3VuZCB3aXRoaW4gYSBGZWF0dXJlLlxuXAorU3VjaCBBYm91dHMsIEZlYXR1cmUgTGljZW5zZXMsIGFuZCBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlcyBjb250YWluIHRoZVxuXAordGVybXMgYW5kIGNvbmRpdGlvbnMgKG9yIHJlZmVyZW5jZXMgdG8gc3VjaCB0ZXJtcyBhbmQgY29uZGl0aW9ucykgdGhhdFxuXAorZ292ZXJuIHlvdXIgdXNlIG9mIHRoZSBhc3NvY2lhdGVkIENvbnRlbnQgaW4gdGhhdCBkaXJlY3RvcnkuXG5cCitcblwKK1RIRSBBQk9VVFMsIEZFQVRVUkUgTElDRU5TRVMsIEFORCBGRUFUVVJFIFVQREFURSBMSUNFTlNFUyBNQVkgUkVGRVJcblwKK1RPIFRIRSBFUEwgT1IgT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTLCBOT1RJQ0VTIE9SIFRFUk1TIEFORCBDT05ESVRJT05TLlxuXAorU09NRSBPRiBUSEVTRSBPVEhFUiBMSUNFTlNFIEFHUkVFTUVOVFMgTUFZIElOQ0xVREUgKEJVVCBBUkUgTk9UIExJTUlURUQgVE8pOlxuXAorXG5cCisgICAgICAgLSBFY2xpcHNlIERpc3RyaWJ1dGlvbiBMaWNlbnNlIFZlcnNpb24gMS4wIChhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9saWNlbnNlcy9lZGwtdjEuMC5odG1sKVxuXAorICAgICAgIC0gQ29tbW9uIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wIChhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9jcGwtdjEwLmh0bWwpXG5cCisgICAgICAgLSBBcGFjaGUgU29mdHdhcmUgTGljZW5zZSAxLjEgKGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRSlcblwKKyAgICAgICAtIEFwYWNoZSBTb2Z0d2FyZSBMaWNlbnNlIDIuMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMClcblwKKyAgICAgICAtIE1ldHJvIExpbmsgUHVibGljIExpY2Vuc2UgMS4wMCAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vcGVubW90aWYvc3VwcG9ydGVycy9tZXRyb2xpbmsvbGljZW5zZS5odG1sKVxuXAorICAgICAgIC0gTW96aWxsYSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMSAoYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBML01QTC0xLjEuaHRtbClcblwKK1xuXAorSVQgSVMgWU9VUiBPQkxJR0FUSU9OIFRPIFJFQUQgQU5EIEFDQ0VQVCBBTEwgU1VDSCBURVJNUyBBTkQgQ09ORElUSU9OUyBQUklPUlxuXAorVE8gVVNFIE9GIFRIRSBDT05URU5ULiBJZiBubyBBYm91dCwgRmVhdHVyZSBMaWNlbnNlLCBvciBGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlXG5cCitpcyBwcm92aWRlZCwgcGxlYXNlIGNvbnRhY3QgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiB0byBkZXRlcm1pbmUgd2hhdCB0ZXJtcyBhbmQgY29uZGl0aW9uc1xuXAorZ292ZXJuIHRoYXQgcGFydGljdWxhciBDb250ZW50LlxuXAorXG5cCitcblxVc2Ugb2YgUHJvdmlzaW9uaW5nIFRlY2hub2xvZ3lcblwKK1xuXAorVGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgcHJvdmlzaW9uaW5nIHNvZnR3YXJlLCBleGFtcGxlcyBvZiB3aGljaCBpbmNsdWRlLFxuXAorYnV0IGFyZSBub3QgbGltaXRlZCB0bywgcDIgYW5kIHRoZSBFY2xpcHNlIFVwZGF0ZSBNYW5hZ2VyICgiUHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kiKSBmb3JcblwKK3RoZSBwdXJwb3NlIG9mIGFsbG93aW5nIHVzZXJzIHRvIGluc3RhbGwgc29mdHdhcmUsIGRvY3VtZW50YXRpb24sIGluZm9ybWF0aW9uIGFuZC9vclxuXAorb3RoZXIgbWF0ZXJpYWxzIChjb2xsZWN0aXZlbHkgIkluc3RhbGxhYmxlIFNvZnR3YXJlIikuIFRoaXMgY2FwYWJpbGl0eSBpcyBwcm92aWRlZCB3aXRoXG5cCit0aGUgaW50ZW50IG9mIGFsbG93aW5nIHN1Y2ggdXNlcnMgdG8gaW5zdGFsbCwgZXh0ZW5kIGFuZCB1cGRhdGUgRWNsaXBzZS1iYXNlZCBwcm9kdWN0cy5cblwKK0luZm9ybWF0aW9uIGFib3V0IHBhY2thZ2luZyBJbnN0YWxsYWJsZSBTb2Z0d2FyZSBpcyBhdmFpbGFibGUgYXRcblwKK2h0dHA6Ly9lY2xpcHNlLm9yZy9lcXVpbm94L3AyL3JlcG9zaXRvcnlfcGFja2FnaW5nLmh0bWwgKCJTcGVjaWZpY2F0aW9uIikuXG5cCitcblwKK1lvdSBtYXkgdXNlIFByb3Zpc2lvbmluZyBUZWNobm9sb2d5IHRvIGFsbG93IG90aGVyIHBhcnRpZXMgdG8gaW5zdGFsbCBJbnN0YWxsYWJsZSBTb2Z0d2FyZS5cblwKK1lvdSBzaGFsbCBiZSByZXNwb25zaWJsZSBmb3IgZW5hYmxpbmcgdGhlIGFwcGxpY2FibGUgbGljZW5zZSBhZ3JlZW1lbnRzIHJlbGF0aW5nIHRvIHRoZVxuXAorSW5zdGFsbGFibGUgU29mdHdhcmUgdG8gYmUgcHJlc2VudGVkIHRvLCBhbmQgYWNjZXB0ZWQgYnksIHRoZSB1c2VycyBvZiB0aGUgUHJvdmlzaW9uaW5nIFRlY2hub2xvZ3lcblwKK2luIGFjY29yZGFuY2Ugd2l0aCB0aGUgU3BlY2lmaWNhdGlvbi4gQnkgdXNpbmcgUHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kgaW4gc3VjaCBhIG1hbm5lciBhbmRcblwKK21ha2luZyBpdCBhdmFpbGFibGUgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBTcGVjaWZpY2F0aW9uLCB5b3UgZnVydGhlciBhY2tub3dsZWRnZSB5b3VyXG5cCithZ3JlZW1lbnQgdG8sIGFuZCB0aGUgYWNxdWlzaXRpb24gb2YgYWxsIG5lY2Vzc2FyeSByaWdodHMgdG8gcGVybWl0IHRoZSBmb2xsb3dpbmc6XG5cCitcblwKKyAgICAgICAxLiBBIHNlcmllcyBvZiBhY3Rpb25zIG1heSBvY2N1ciAoIlByb3Zpc2lvbmluZyBQcm9jZXNzIikgaW4gd2hpY2ggYSB1c2VyIG1heSBleGVjdXRlXG5cCisgICAgICAgICAgdGhlIFByb3Zpc2lvbmluZyBUZWNobm9sb2d5IG9uIGEgbWFjaGluZSAoIlRhcmdldCBNYWNoaW5lIikgd2l0aCB0aGUgaW50ZW50IG9mIGluc3RhbGxpbmcsXG5cCisgICAgICAgICAgZXh0ZW5kaW5nIG9yIHVwZGF0aW5nIHRoZSBmdW5jdGlvbmFsaXR5IG9mIGFuIEVjbGlwc2UtYmFzZWQgcHJvZHVjdC5cblwKKyAgICAgICAyLiBEdXJpbmcgdGhlIFByb3Zpc2lvbmluZyBQcm9jZXNzLCB0aGUgUHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kgbWF5IGNhdXNlIHRoaXJkIHBhcnR5XG5cCisgICAgICAgICAgSW5zdGFsbGFibGUgU29mdHdhcmUgb3IgYSBwb3J0aW9uIHRoZXJlb2YgdG8gYmUgYWNjZXNzZWQgYW5kIGNvcGllZCB0byB0aGUgVGFyZ2V0IE1hY2hpbmUuXG5cCisgICAgICAgMy4gUHVyc3VhbnQgdG8gdGhlIFNwZWNpZmljYXRpb24sIHlvdSB3aWxsIHByb3ZpZGUgdG8gdGhlIHVzZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIHRoYXRcblwKKyAgICAgICAgICBnb3Zlcm4gdGhlIHVzZSBvZiB0aGUgSW5zdGFsbGFibGUgU29mdHdhcmUgKCJJbnN0YWxsYWJsZSBTb2Z0d2FyZSBBZ3JlZW1lbnQiKSBhbmQgc3VjaFxuXAorICAgICAgICAgIEluc3RhbGxhYmxlIFNvZnR3YXJlIEFncmVlbWVudCBzaGFsbCBiZSBhY2Nlc3NlZCBmcm9tIHRoZSBUYXJnZXQgTWFjaGluZSBpbiBhY2NvcmRhbmNlXG5cCisgICAgICAgICAgd2l0aCB0aGUgU3BlY2lmaWNhdGlvbi4gU3VjaCBJbnN0YWxsYWJsZSBTb2Z0d2FyZSBBZ3JlZW1lbnQgbXVzdCBpbmZvcm0gdGhlIHVzZXIgb2YgdGhlXG5cCisgICAgICAgICAgdGVybXMgYW5kIGNvbmRpdGlvbnMgdGhhdCBnb3Zlcm4gdGhlIEluc3RhbGxhYmxlIFNvZnR3YXJlIGFuZCBtdXN0IHNvbGljaXQgYWNjZXB0YW5jZSBieVxuXAorICAgICAgICAgIHRoZSBlbmQgdXNlciBpbiB0aGUgbWFubmVyIHByZXNjcmliZWQgaW4gc3VjaCBJbnN0YWxsYWJsZSBTb2Z0d2FyZSBBZ3JlZW1lbnQuIFVwb24gc3VjaFxuXAorICAgICAgICAgIGluZGljYXRpb24gb2YgYWdyZWVtZW50IGJ5IHRoZSB1c2VyLCB0aGUgcHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kgd2lsbCBjb21wbGV0ZSBpbnN0YWxsYXRpb25cblwKKyAgICAgICAgICBvZiB0aGUgSW5zdGFsbGFibGUgU29mdHdhcmUuXG5cCitcblwKK0NyeXB0b2dyYXBoeVxuXAorXG5cCitDb250ZW50IG1heSBjb250YWluIGVuY3J5cHRpb24gc29mdHdhcmUuIFRoZSBjb3VudHJ5IGluIHdoaWNoIHlvdSBhcmVcblwKK2N1cnJlbnRseSBtYXkgaGF2ZSByZXN0cmljdGlvbnMgb24gdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgYW5kIHVzZSxcblwKK2FuZC9vciByZS1leHBvcnQgdG8gYW5vdGhlciBjb3VudHJ5LCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBCRUZPUkVcblwKK3VzaW5nIGFueSBlbmNyeXB0aW9uIHNvZnR3YXJlLCBwbGVhc2UgY2hlY2sgdGhlIGNvdW50cnkncyBsYXdzLFxuXAorcmVndWxhdGlvbnMgYW5kIHBvbGljaWVzIGNvbmNlcm5pbmcgdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgb3IgdXNlLCBhbmRcblwKK3JlLWV4cG9ydCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLCB0byBzZWUgaWYgdGhpcyBpcyBwZXJtaXR0ZWQuXG5cCitcblwKK0phdmEgYW5kIGFsbCBKYXZhLWJhc2VkIHRyYWRlbWFya3MgYXJlIHRyYWRlbWFya3Mgb2YgT3JhY2xlIENvcnBvcmF0aW9uIGluIHRoZSBVbml0ZWQgU3RhdGVzLCBvdGhlciBjb3VudHJpZXMsIG9yIGJvdGguXG4KKyMjIyMjIyMjIyMjIGVuZCBvZiBsaWNlbnNlIHByb3BlcnR5ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5zcHJpbmdkbS9mZWF0dXJlLnhtbCBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5zcHJpbmdkbS9mZWF0dXJlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wNWM2ZGMzCi0tLSAvZGV2L251bGwKKysrIGIvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL2ZlYXR1cmVzL29yZy5lY2xpcHNlLnZpcmdvLnNwcmluZ2RtL2ZlYXR1cmUueG1sCkBAIC0wLDAgKzEsNDMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8ZmVhdHVyZQorICAgICAgaWQ9Im9yZy5lY2xpcHNlLnZpcmdvLnNwcmluZ2RtIgorICAgICAgbGFiZWw9IiVmZWF0dXJlTmFtZSIKKyAgICAgIHZlcnNpb249IkBTUFJJTkcuRE0uVkVSU0lPTkAiCisgICAgICBwcm92aWRlci1uYW1lPSIlcHJvdmlkZXJOYW1lIgorICAgICAgaW1hZ2U9ImVjbGlwc2VfdXBkYXRlXzEyMC5qcGciPgorCisgICA8ZGVzY3JpcHRpb24gdXJsPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3ZpcmdvLyI+CisgICAgICAlZGVzY3JpcHRpb24KKyAgIDwvZGVzY3JpcHRpb24+CisKKyAgIDxjb3B5cmlnaHQgdXJsPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3ZpcmdvLyI+CisgICAgICAlY29weXJpZ2h0CisgICA8L2NvcHlyaWdodD4KKworICAgPGxpY2Vuc2UgdXJsPSIlbGljZW5zZVVSTCI+CisgICAgICAlbGljZW5zZQorICAgPC9saWNlbnNlPgorCisgICA8cGx1Z2luCisgICAgICAgICBpZD0ib3JnLmVjbGlwc2UuZ2VtaW5pLmJsdWVwcmludC5jb3JlIgorICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKKyAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKKyAgICAgICAgIHZlcnNpb249IkBTUFJJTkcuRE0uVkVSU0lPTkAiCisgICAgICAgICB1bnBhY2s9ImZhbHNlIi8+CisKKyAgIDxwbHVnaW4KKyAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5nZW1pbmkuYmx1ZXByaW50LmV4dGVuZGVyIgorICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKKyAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKKyAgICAgICAgIHZlcnNpb249IkBTUFJJTkcuRE0uVkVSU0lPTkAiCisgICAgICAgICB1bnBhY2s9ImZhbHNlIgorICAgICAgICAgYXV0b3N0YXJ0PSJ0cnVlIi8+CisKKyAgIDxwbHVnaW4KKyAgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5nZW1pbmkuYmx1ZXByaW50LmlvIgorICAgICAgICAgZG93bmxvYWQtc2l6ZT0iMCIKKyAgICAgICAgIGluc3RhbGwtc2l6ZT0iMCIKKyAgICAgICAgIHZlcnNpb249IkBTUFJJTkcuRE0uVkVSU0lPTkAiCisgICAgICAgICB1bnBhY2s9ImZhbHNlIi8+CisKKzwvZmVhdHVyZT4KZGlmZiAtLWdpdCBhL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5zcHJpbmdkbS9saWNlbnNlLmh0bWwgYi9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uc3ByaW5nZG0vbGljZW5zZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmYxOWM0ODMKLS0tIC9kZXYvbnVsbAorKysgYi9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uc3ByaW5nZG0vbGljZW5zZS5odG1sCkBAIC0wLDAgKzEsMTA4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJJU08tODg1OS0xIiA/PgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIiAvPgorPHRpdGxlPkVjbGlwc2UgRm91bmRhdGlvbiBTb2Z0d2FyZSBVc2VyIEFncmVlbWVudDwvdGl0bGU+Cis8L2hlYWQ+CisKKzxib2R5IGxhbmc9IkVOLVVTIj4KKzxoMj5FY2xpcHNlIEZvdW5kYXRpb24gU29mdHdhcmUgVXNlciBBZ3JlZW1lbnQ8L2gyPgorPHA+RmVicnVhcnkgMSwgMjAxMTwvcD4KKworPGgzPlVzYWdlIE9mIENvbnRlbnQ8L2gzPgorCis8cD5USEUgRUNMSVBTRSBGT1VOREFUSU9OIE1BS0VTIEFWQUlMQUJMRSBTT0ZUV0FSRSwgRE9DVU1FTlRBVElPTiwgSU5GT1JNQVRJT04gQU5EL09SIE9USEVSIE1BVEVSSUFMUyBGT1IgT1BFTiBTT1VSQ0UgUFJPSkVDVFMKKyAgIChDT0xMRUNUSVZFTFkgJnF1b3Q7Q09OVEVOVCZxdW90OykuICBVU0UgT0YgVEhFIENPTlRFTlQgSVMgR09WRVJORUQgQlkgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIFRISVMgQUdSRUVNRU5UIEFORC9PUiBUSEUgVEVSTVMgQU5ECisgICBDT05ESVRJT05TIE9GIExJQ0VOU0UgQUdSRUVNRU5UUyBPUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLiAgQlkgVVNJTkcgVEhFIENPTlRFTlQsIFlPVSBBR1JFRSBUSEFUIFlPVVIgVVNFCisgICBPRiBUSEUgQ09OVEVOVCBJUyBHT1ZFUk5FRCBCWSBUSElTIEFHUkVFTUVOVCBBTkQvT1IgVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIEFOWSBBUFBMSUNBQkxFIExJQ0VOU0UgQUdSRUVNRU5UUyBPUgorICAgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVy4gIElGIFlPVSBETyBOT1QgQUdSRUUgVE8gVEhFIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIFRISVMgQUdSRUVNRU5UIEFORCBUSEUgVEVSTVMgQU5ECisgICBDT05ESVRJT05TIE9GIEFOWSBBUFBMSUNBQkxFIExJQ0VOU0UgQUdSRUVNRU5UUyBPUiBOT1RJQ0VTIElORElDQVRFRCBPUiBSRUZFUkVOQ0VEIEJFTE9XLCBUSEVOIFlPVSBNQVkgTk9UIFVTRSBUSEUgQ09OVEVOVC48L3A+CisKKzxoMz5BcHBsaWNhYmxlIExpY2Vuc2VzPC9oMz4KKworPHA+VW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQsIGFsbCBDb250ZW50IG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMAorICAgKCZxdW90O0VQTCZxdW90OykuICBBIGNvcHkgb2YgdGhlIEVQTCBpcyBwcm92aWRlZCB3aXRoIHRoaXMgQ29udGVudCBhbmQgaXMgYWxzbyBhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sPC9hPi4KKyAgIEZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAmcXVvdDtQcm9ncmFtJnF1b3Q7IHdpbGwgbWVhbiB0aGUgQ29udGVudC48L3A+CisKKzxwPkNvbnRlbnQgaW5jbHVkZXMsIGJ1dCBpcyBub3QgbGltaXRlZCB0bywgc291cmNlIGNvZGUsIG9iamVjdCBjb2RlLCBkb2N1bWVudGF0aW9uIGFuZCBvdGhlciBmaWxlcyBtYWludGFpbmVkIGluIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gc291cmNlIGNvZGUKKyAgIHJlcG9zaXRvcnkgKCZxdW90O1JlcG9zaXRvcnkmcXVvdDspIGluIHNvZnR3YXJlIG1vZHVsZXMgKCZxdW90O01vZHVsZXMmcXVvdDspIGFuZCBtYWRlIGF2YWlsYWJsZSBhcyBkb3dubG9hZGFibGUgYXJjaGl2ZXMgKCZxdW90O0Rvd25sb2FkcyZxdW90OykuPC9wPgorCis8dWw+CisgICAgICAgPGxpPkNvbnRlbnQgbWF5IGJlIHN0cnVjdHVyZWQgYW5kIHBhY2thZ2VkIGludG8gbW9kdWxlcyB0byBmYWNpbGl0YXRlIGRlbGl2ZXJpbmcsIGV4dGVuZGluZywgYW5kIHVwZ3JhZGluZyB0aGUgQ29udGVudC4gIFR5cGljYWwgbW9kdWxlcyBtYXkgaW5jbHVkZSBwbHVnLWlucyAoJnF1b3Q7UGx1Zy1pbnMmcXVvdDspLCBwbHVnLWluIGZyYWdtZW50cyAoJnF1b3Q7RnJhZ21lbnRzJnF1b3Q7KSwgYW5kIGZlYXR1cmVzICgmcXVvdDtGZWF0dXJlcyZxdW90OykuPC9saT4KKyAgICAgICA8bGk+RWFjaCBQbHVnLWluIG9yIEZyYWdtZW50IG1heSBiZSBwYWNrYWdlZCBhcyBhIHN1Yi1kaXJlY3Rvcnkgb3IgSkFSIChKYXZhJnRyYWRlOyBBUmNoaXZlKSBpbiBhIGRpcmVjdG9yeSBuYW1lZCAmcXVvdDtwbHVnaW5zJnF1b3Q7LjwvbGk+CisgICAgICAgPGxpPkEgRmVhdHVyZSBpcyBhIGJ1bmRsZSBvZiBvbmUgb3IgbW9yZSBQbHVnLWlucyBhbmQvb3IgRnJhZ21lbnRzIGFuZCBhc3NvY2lhdGVkIG1hdGVyaWFsLiAgRWFjaCBGZWF0dXJlIG1heSBiZSBwYWNrYWdlZCBhcyBhIHN1Yi1kaXJlY3RvcnkgaW4gYSBkaXJlY3RvcnkgbmFtZWQgJnF1b3Q7ZmVhdHVyZXMmcXVvdDsuICBXaXRoaW4gYSBGZWF0dXJlLCBmaWxlcyBuYW1lZCAmcXVvdDtmZWF0dXJlLnhtbCZxdW90OyBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2YgdGhlIFBsdWctaW5zCisgICAgICBhbmQvb3IgRnJhZ21lbnRzIGFzc29jaWF0ZWQgd2l0aCB0aGF0IEZlYXR1cmUuPC9saT4KKyAgICAgICA8bGk+RmVhdHVyZXMgbWF5IGFsc28gaW5jbHVkZSBvdGhlciBGZWF0dXJlcyAoJnF1b3Q7SW5jbHVkZWQgRmVhdHVyZXMmcXVvdDspLiBXaXRoaW4gYSBGZWF0dXJlLCBmaWxlcyBuYW1lZCAmcXVvdDtmZWF0dXJlLnhtbCZxdW90OyBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2YgSW5jbHVkZWQgRmVhdHVyZXMuPC9saT4KKzwvdWw+CisKKzxwPlRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgUGx1Zy1pbnMgYW5kIEZyYWdtZW50cyBzaG91bGQgYmUgY29udGFpbmVkIGluIGZpbGVzIG5hbWVkICZxdW90O2Fib3V0Lmh0bWwmcXVvdDsgKCZxdW90O0Fib3V0cyZxdW90OykuIFRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgRmVhdHVyZXMgYW5kCitJbmNsdWRlZCBGZWF0dXJlcyBzaG91bGQgYmUgY29udGFpbmVkIGluIGZpbGVzIG5hbWVkICZxdW90O2xpY2Vuc2UuaHRtbCZxdW90OyAoJnF1b3Q7RmVhdHVyZSBMaWNlbnNlcyZxdW90OykuICBBYm91dHMgYW5kIEZlYXR1cmUgTGljZW5zZXMgbWF5IGJlIGxvY2F0ZWQgaW4gYW55IGRpcmVjdG9yeSBvZiBhIERvd25sb2FkIG9yIE1vZHVsZQoraW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG8gdGhlIGZvbGxvd2luZyBsb2NhdGlvbnM6PC9wPgorCis8dWw+CisgICAgICAgPGxpPlRoZSB0b3AtbGV2ZWwgKHJvb3QpIGRpcmVjdG9yeTwvbGk+CisgICAgICAgPGxpPlBsdWctaW4gYW5kIEZyYWdtZW50IGRpcmVjdG9yaWVzPC9saT4KKyAgICAgICA8bGk+SW5zaWRlIFBsdWctaW5zIGFuZCBGcmFnbWVudHMgcGFja2FnZWQgYXMgSkFSczwvbGk+CisgICAgICAgPGxpPlN1Yi1kaXJlY3RvcmllcyBvZiB0aGUgZGlyZWN0b3J5IG5hbWVkICZxdW90O3NyYyZxdW90OyBvZiBjZXJ0YWluIFBsdWctaW5zPC9saT4KKyAgICAgICA8bGk+RmVhdHVyZSBkaXJlY3RvcmllczwvbGk+Cis8L3VsPgorCis8cD5Ob3RlOiBpZiBhIEZlYXR1cmUgbWFkZSBhdmFpbGFibGUgYnkgdGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpcyBpbnN0YWxsZWQgdXNpbmcgdGhlIFByb3Zpc2lvbmluZyBUZWNobm9sb2d5IChhcyBkZWZpbmVkIGJlbG93KSwgeW91IG11c3QgYWdyZWUgdG8gYSBsaWNlbnNlICgmcXVvdDtGZWF0dXJlIFVwZGF0ZSBMaWNlbnNlJnF1b3Q7KSBkdXJpbmcgdGhlCitpbnN0YWxsYXRpb24gcHJvY2Vzcy4gIElmIHRoZSBGZWF0dXJlIGNvbnRhaW5zIEluY2x1ZGVkIEZlYXR1cmVzLCB0aGUgRmVhdHVyZSBVcGRhdGUgTGljZW5zZSBzaG91bGQgZWl0aGVyIHByb3ZpZGUgeW91IHdpdGggdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyB0aGUgSW5jbHVkZWQgRmVhdHVyZXMgb3IKK2luZm9ybSB5b3Ugd2hlcmUgeW91IGNhbiBsb2NhdGUgdGhlbS4gIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIG1heSBiZSBmb3VuZCBpbiB0aGUgJnF1b3Q7bGljZW5zZSZxdW90OyBwcm9wZXJ0eSBvZiBmaWxlcyBuYW1lZCAmcXVvdDtmZWF0dXJlLnByb3BlcnRpZXMmcXVvdDsgZm91bmQgd2l0aGluIGEgRmVhdHVyZS4KK1N1Y2ggQWJvdXRzLCBGZWF0dXJlIExpY2Vuc2VzLCBhbmQgRmVhdHVyZSBVcGRhdGUgTGljZW5zZXMgY29udGFpbiB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgKG9yIHJlZmVyZW5jZXMgdG8gc3VjaCB0ZXJtcyBhbmQgY29uZGl0aW9ucykgdGhhdCBnb3Zlcm4geW91ciB1c2Ugb2YgdGhlIGFzc29jaWF0ZWQgQ29udGVudCBpbgordGhhdCBkaXJlY3RvcnkuPC9wPgorCis8cD5USEUgQUJPVVRTLCBGRUFUVVJFIExJQ0VOU0VTLCBBTkQgRkVBVFVSRSBVUERBVEUgTElDRU5TRVMgTUFZIFJFRkVSIFRPIFRIRSBFUEwgT1IgT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTLCBOT1RJQ0VTIE9SIFRFUk1TIEFORCBDT05ESVRJT05TLiAgU09NRSBPRiBUSEVTRQorT1RIRVIgTElDRU5TRSBBR1JFRU1FTlRTIE1BWSBJTkNMVURFIChCVVQgQVJFIE5PVCBMSU1JVEVEIFRPKTo8L3A+CisKKzx1bD4KKyAgICAgICA8bGk+RWNsaXBzZSBEaXN0cmlidXRpb24gTGljZW5zZSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGljZW5zZXMvZWRsLXYxMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xpY2Vuc2VzL2VkbC12MS4wLmh0bWw8L2E+KTwvbGk+CisgICAgICAgPGxpPkNvbW1vbiBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2NwbC12MTAuaHRtbDwvYT4pPC9saT4KKyAgICAgICA8bGk+QXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UgMS4xIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UiPmh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFPC9hPik8L2xpPgorICAgICAgIDxsaT5BcGFjaGUgU29mdHdhcmUgTGljZW5zZSAyLjAgKGF2YWlsYWJsZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAiPmh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMDwvYT4pPC9saT4KKyAgICAgICA8bGk+TWV0cm8gTGluayBQdWJsaWMgTGljZW5zZSAxLjAwIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29wZW5tb3RpZi9zdXBwb3J0ZXJzL21ldHJvbGluay9saWNlbnNlLmh0bWwiPmh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vcGVubW90aWYvc3VwcG9ydGVycy9tZXRyb2xpbmsvbGljZW5zZS5odG1sPC9hPik8L2xpPgorICAgICAgIDxsaT5Nb3ppbGxhIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4xIChhdmFpbGFibGUgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvTVBMLTEuMS5odG1sIj5odHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC9NUEwtMS4xLmh0bWw8L2E+KTwvbGk+Cis8L3VsPgorCis8cD5JVCBJUyBZT1VSIE9CTElHQVRJT04gVE8gUkVBRCBBTkQgQUNDRVBUIEFMTCBTVUNIIFRFUk1TIEFORCBDT05ESVRJT05TIFBSSU9SIFRPIFVTRSBPRiBUSEUgQ09OVEVOVC4gIElmIG5vIEFib3V0LCBGZWF0dXJlIExpY2Vuc2UsIG9yIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2UgaXMgcHJvdmlkZWQsIHBsZWFzZQorY29udGFjdCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIHRvIGRldGVybWluZSB3aGF0IHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybiB0aGF0IHBhcnRpY3VsYXIgQ29udGVudC48L3A+CisKKworPGgzPlVzZSBvZiBQcm92aXNpb25pbmcgVGVjaG5vbG9neTwvaDM+CisKKzxwPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIHByb3Zpc2lvbmluZyBzb2Z0d2FyZSwgZXhhbXBsZXMgb2Ygd2hpY2ggaW5jbHVkZSwgYnV0IGFyZSBub3QgbGltaXRlZCB0bywgcDIgYW5kIHRoZSBFY2xpcHNlCisgICBVcGRhdGUgTWFuYWdlciAoJnF1b3Q7UHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kmcXVvdDspIGZvciB0aGUgcHVycG9zZSBvZiBhbGxvd2luZyB1c2VycyB0byBpbnN0YWxsIHNvZnR3YXJlLCBkb2N1bWVudGF0aW9uLCBpbmZvcm1hdGlvbiBhbmQvb3IKKyAgIG90aGVyIG1hdGVyaWFscyAoY29sbGVjdGl2ZWx5ICZxdW90O0luc3RhbGxhYmxlIFNvZnR3YXJlJnF1b3Q7KS4gVGhpcyBjYXBhYmlsaXR5IGlzIHByb3ZpZGVkIHdpdGggdGhlIGludGVudCBvZiBhbGxvd2luZyBzdWNoIHVzZXJzIHRvCisgICBpbnN0YWxsLCBleHRlbmQgYW5kIHVwZGF0ZSBFY2xpcHNlLWJhc2VkIHByb2R1Y3RzLiBJbmZvcm1hdGlvbiBhYm91dCBwYWNrYWdpbmcgSW5zdGFsbGFibGUgU29mdHdhcmUgaXMgYXZhaWxhYmxlIGF0IDxhCisgICAgICAgaHJlZj0iaHR0cDovL2VjbGlwc2Uub3JnL2VxdWlub3gvcDIvcmVwb3NpdG9yeV9wYWNrYWdpbmcuaHRtbCI+aHR0cDovL2VjbGlwc2Uub3JnL2VxdWlub3gvcDIvcmVwb3NpdG9yeV9wYWNrYWdpbmcuaHRtbDwvYT4KKyAgICgmcXVvdDtTcGVjaWZpY2F0aW9uJnF1b3Q7KS48L3A+CisKKzxwPllvdSBtYXkgdXNlIFByb3Zpc2lvbmluZyBUZWNobm9sb2d5IHRvIGFsbG93IG90aGVyIHBhcnRpZXMgdG8gaW5zdGFsbCBJbnN0YWxsYWJsZSBTb2Z0d2FyZS4gWW91IHNoYWxsIGJlIHJlc3BvbnNpYmxlIGZvciBlbmFibGluZyB0aGUKKyAgIGFwcGxpY2FibGUgbGljZW5zZSBhZ3JlZW1lbnRzIHJlbGF0aW5nIHRvIHRoZSBJbnN0YWxsYWJsZSBTb2Z0d2FyZSB0byBiZSBwcmVzZW50ZWQgdG8sIGFuZCBhY2NlcHRlZCBieSwgdGhlIHVzZXJzIG9mIHRoZSBQcm92aXNpb25pbmcgVGVjaG5vbG9neQorICAgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBTcGVjaWZpY2F0aW9uLiBCeSB1c2luZyBQcm92aXNpb25pbmcgVGVjaG5vbG9neSBpbiBzdWNoIGEgbWFubmVyIGFuZCBtYWtpbmcgaXQgYXZhaWxhYmxlIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUKKyAgIFNwZWNpZmljYXRpb24sIHlvdSBmdXJ0aGVyIGFja25vd2xlZGdlIHlvdXIgYWdyZWVtZW50IHRvLCBhbmQgdGhlIGFjcXVpc2l0aW9uIG9mIGFsbCBuZWNlc3NhcnkgcmlnaHRzIHRvIHBlcm1pdCB0aGUgZm9sbG93aW5nOjwvcD4KKworPG9sPgorICAgICAgIDxsaT5BIHNlcmllcyBvZiBhY3Rpb25zIG1heSBvY2N1ciAoJnF1b3Q7UHJvdmlzaW9uaW5nIFByb2Nlc3MmcXVvdDspIGluIHdoaWNoIGEgdXNlciBtYXkgZXhlY3V0ZSB0aGUgUHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kKKyAgICAgICBvbiBhIG1hY2hpbmUgKCZxdW90O1RhcmdldCBNYWNoaW5lJnF1b3Q7KSB3aXRoIHRoZSBpbnRlbnQgb2YgaW5zdGFsbGluZywgZXh0ZW5kaW5nIG9yIHVwZGF0aW5nIHRoZSBmdW5jdGlvbmFsaXR5IG9mIGFuIEVjbGlwc2UtYmFzZWQKKyAgICAgICBwcm9kdWN0LjwvbGk+CisgICAgICAgPGxpPkR1cmluZyB0aGUgUHJvdmlzaW9uaW5nIFByb2Nlc3MsIHRoZSBQcm92aXNpb25pbmcgVGVjaG5vbG9neSBtYXkgY2F1c2UgdGhpcmQgcGFydHkgSW5zdGFsbGFibGUgU29mdHdhcmUgb3IgYSBwb3J0aW9uIHRoZXJlb2YgdG8gYmUKKyAgICAgICBhY2Nlc3NlZCBhbmQgY29waWVkIHRvIHRoZSBUYXJnZXQgTWFjaGluZS48L2xpPgorICAgICAgIDxsaT5QdXJzdWFudCB0byB0aGUgU3BlY2lmaWNhdGlvbiwgeW91IHdpbGwgcHJvdmlkZSB0byB0aGUgdXNlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgdGhhdCBnb3Zlcm4gdGhlIHVzZSBvZiB0aGUgSW5zdGFsbGFibGUKKyAgICAgICBTb2Z0d2FyZSAoJnF1b3Q7SW5zdGFsbGFibGUgU29mdHdhcmUgQWdyZWVtZW50JnF1b3Q7KSBhbmQgc3VjaCBJbnN0YWxsYWJsZSBTb2Z0d2FyZSBBZ3JlZW1lbnQgc2hhbGwgYmUgYWNjZXNzZWQgZnJvbSB0aGUgVGFyZ2V0CisgICAgICAgTWFjaGluZSBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIFNwZWNpZmljYXRpb24uIFN1Y2ggSW5zdGFsbGFibGUgU29mdHdhcmUgQWdyZWVtZW50IG11c3QgaW5mb3JtIHRoZSB1c2VyIG9mIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyB0aGF0IGdvdmVybgorICAgICAgIHRoZSBJbnN0YWxsYWJsZSBTb2Z0d2FyZSBhbmQgbXVzdCBzb2xpY2l0IGFjY2VwdGFuY2UgYnkgdGhlIGVuZCB1c2VyIGluIHRoZSBtYW5uZXIgcHJlc2NyaWJlZCBpbiBzdWNoIEluc3RhbGxhYmxlIFNvZnR3YXJlIEFncmVlbWVudC4gVXBvbiBzdWNoCisgICAgICAgaW5kaWNhdGlvbiBvZiBhZ3JlZW1lbnQgYnkgdGhlIHVzZXIsIHRoZSBwcm92aXNpb25pbmcgVGVjaG5vbG9neSB3aWxsIGNvbXBsZXRlIGluc3RhbGxhdGlvbiBvZiB0aGUgSW5zdGFsbGFibGUgU29mdHdhcmUuPC9saT4KKzwvb2w+CisKKzxoMz5DcnlwdG9ncmFwaHk8L2gzPgorCis8cD5Db250ZW50IG1heSBjb250YWluIGVuY3J5cHRpb24gc29mdHdhcmUuIFRoZSBjb3VudHJ5IGluIHdoaWNoIHlvdSBhcmUgY3VycmVudGx5IG1heSBoYXZlIHJlc3RyaWN0aW9ucyBvbiB0aGUgaW1wb3J0LCBwb3NzZXNzaW9uLCBhbmQgdXNlLCBhbmQvb3IgcmUtZXhwb3J0IHRvCisgICBhbm90aGVyIGNvdW50cnksIG9mIGVuY3J5cHRpb24gc29mdHdhcmUuIEJFRk9SRSB1c2luZyBhbnkgZW5jcnlwdGlvbiBzb2Z0d2FyZSwgcGxlYXNlIGNoZWNrIHRoZSBjb3VudHJ5J3MgbGF3cywgcmVndWxhdGlvbnMgYW5kIHBvbGljaWVzIGNvbmNlcm5pbmcgdGhlIGltcG9ydCwKKyAgIHBvc3Nlc3Npb24sIG9yIHVzZSwgYW5kIHJlLWV4cG9ydCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLCB0byBzZWUgaWYgdGhpcyBpcyBwZXJtaXR0ZWQuPC9wPgorCis8cD48c21hbGw+SmF2YSBhbmQgYWxsIEphdmEtYmFzZWQgdHJhZGVtYXJrcyBhcmUgdHJhZGVtYXJrcyBvZiBPcmFjbGUgQ29ycG9yYXRpb24gaW4gdGhlIFVuaXRlZCBTdGF0ZXMsIG90aGVyIGNvdW50cmllcywgb3IgYm90aC48L3NtYWxsPjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9wcm9kdWN0cy9iYXNlL2Jhc2UucHJvZHVjdCBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9wcm9kdWN0cy9iYXNlL2Jhc2UucHJvZHVjdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lNWViZGQzCi0tLSAvZGV2L251bGwKKysrIGIvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL3Byb2R1Y3RzL2Jhc2UvYmFzZS5wcm9kdWN0CkBAIC0wLDAgKzEsNjAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPD9wZGUgdmVyc2lvbj0iMy41Ij8+DQorDQorPHByb2R1Y3QgbmFtZT0iRWNsaXBzZSBWaXJnbyBCYXNlIFByb2R1Y3QiIHVpZD0iYmFzZS5wcm9kdWN0IiB2ZXJzaW9uPSIxLjAuMCIgdXNlRmVhdHVyZXM9InRydWUiIGluY2x1ZGVMYXVuY2hlcnM9ImZhbHNlIj4NCisNCisgICA8Y29uZmlnSW5pIHVzZT0iZGVmYXVsdCI+DQorICAgPC9jb25maWdJbmk+DQorICAgDQorICAgPHZtPg0KKyAgIDwvdm0+DQorDQorICAgPHBsdWdpbnM+DQorICAgPC9wbHVnaW5zPg0KKw0KKyAgIDxmZWF0dXJlcz4NCisgICAgICA8ZmVhdHVyZSBpZD0ib3JnLmVjbGlwc2UudmlyZ28uY29yZSIgdmVyc2lvbj0iMC4wLjAiLz4NCisgICAgICA8ZmVhdHVyZSBpZD0ib3JnLmVjbGlwc2UudmlyZ28ubWVkaWMiIHZlcnNpb249IjAuMC4wIi8+DQorICAgICAgPGZlYXR1cmUgaWQ9Im9yZy5lY2xpcHNlLnZpcmdvLnNoZWxsIiB2ZXJzaW9uPSIwLjAuMCIvPg0KKyAgICAgIDxmZWF0dXJlIGlkPSJvcmcuZWNsaXBzZS52aXJnby5kcyIgdmVyc2lvbj0iMC4wLjAiLz4NCisgICAgICA8ZmVhdHVyZSBpZD0ib3JnLmVjbGlwc2UudmlyZ28ubmFuby5tYmVhbnMiIHZlcnNpb249IjAuMC4wIi8+DQorCSAgPGZlYXR1cmUgaWQ9Im9yZy5lY2xpcHNlLnZpcmdvLnNpbXBsZWNvbmZpZ3VyYXRvciIgdmVyc2lvbj0iMC4wLjAiLz4NCisgICA8L2ZlYXR1cmVzPg0KKyAgIA0KKyAgIDxjb25maWd1cmF0aW9ucz4NCisJCTxwbHVnaW4gaWQ9Im9yZy5lY2xpcHNlLmVxdWlub3guY20iIGF1dG9TdGFydD0idHJ1ZSIgLz4NCisJCTxwbHVnaW4gaWQ9Im9yZy5lY2xpcHNlLmVxdWlub3guc2ltcGxlY29uZmlndXJhdG9yIiBhdXRvU3RhcnQ9InRydWUiIHN0YXJ0TGV2ZWw9IjEiLz4NCisJCTxwbHVnaW4gaWQ9Im9yZy5lY2xpcHNlLmVxdWlub3guZXZlbnQiIGF1dG9TdGFydD0idHJ1ZSIgLz4NCisJCTxwbHVnaW4gaWQ9Im9yZy5lY2xpcHNlLmVxdWlub3guY29tbW9uIiBhdXRvU3RhcnQ9InRydWUiIC8+DQorCQk8cGx1Z2luIGlkPSJvcmcuZWNsaXBzZS5lcXVpbm94LmNvbnNvbGUuc3VwcG9ydGFiaWxpdHkiIGF1dG9TdGFydD0idHJ1ZSIgLz4NCisJCTxwbHVnaW4gaWQ9Im9yZy5lY2xpcHNlLmVxdWlub3gucmVnaW9uIiBhdXRvU3RhcnQ9InRydWUiIC8+DQorCQk8cGx1Z2luIGlkPSJvcmcuZWNsaXBzZS5lcXVpbm94LnV0aWwiIGF1dG9TdGFydD0idHJ1ZSIgLz4NCisJCTxwbHVnaW4gaWQ9Im9yZy5lY2xpcHNlLm9zZ2kuc2VydmljZXMiIGF1dG9TdGFydD0idHJ1ZSIgLz4NCisJCTxwbHVnaW4gaWQ9Im9yZy5lY2xpcHNlLnZpcmdvLm1lZGljIiBhdXRvU3RhcnQ9InRydWUiIHN0YXJ0TGV2ZWw9IjMiLz4NCisJCTxwbHVnaW4gaWQ9Im9yZy5lY2xpcHNlLnZpcmdvLm1lZGljLmNvcmUiIGF1dG9TdGFydD0idHJ1ZSIgc3RhcnRMZXZlbD0iMyIvPg0KKwkJPHBsdWdpbiBpZD0ib3JnLmVjbGlwc2UuZXF1aW5veC5kcyIgYXV0b1N0YXJ0PSJ0cnVlIiBzdGFydExldmVsPSIzIi8+DQorCQk8cGx1Z2luIGlkPSJvcmcuZWNsaXBzZS52aXJnby51dGlsLm9zZ2kiIGF1dG9TdGFydD0idHJ1ZSIvPg0KKwkJDQorCQk8cHJvcGVydHkgbmFtZT0ib3NnaS5jb21wYXRpYmlsaXR5LmJvb3RkZWxlZ2F0aW9uIiB2YWx1ZT0iZmFsc2UiLz4NCisJCTxwcm9wZXJ0eSBuYW1lPSJlcXVpbm94LnVzZS5kcyIgdmFsdWU9InRydWUiLz4NCisJCTxwcm9wZXJ0eSBuYW1lPSJvc2dpLmNvbnNvbGUuZW5hYmxlLmJ1aWx0aW4iIHZhbHVlPSJmYWxzZSIvPg0KKwkJPHByb3BlcnR5IG5hbWU9Imdvc2guYXJncyIgdmFsdWU9Ii0tbm9pbnRlcmFjdGl2ZSIvPg0KKwkJPHByb3BlcnR5IG5hbWU9Im9zZ2kuY29uc29sZS5zc2gudXNlRGVmYXVsdFNlY3VyZVN0b3JhZ2UiIHZhbHVlPSJmYWxzZSIvPg0KKwkJPHByb3BlcnR5IG5hbWU9Im9zZ2kuY29uc29sZS51c2VDb25maWdBZG1pbiIgdmFsdWU9InRydWUiLz4NCisJCTxwcm9wZXJ0eSBuYW1lPSJvc2dpLnBhcmVudENsYXNzbG9hZGVyIiB2YWx1ZT0iZndrIi8+DQorCQk8cHJvcGVydHkgbmFtZT0iZXF1aW5veC5yZWZyZXNoLmR1cGxpY2F0ZS5ic24iIHZhbHVlPSJmYWxzZSIvPg0KKwkJPHByb3BlcnR5IG5hbWU9ImVjbGlwc2UuYnVuZGxlLnNldFRDQ0wiIHZhbHVlPSJmYWxzZSIvPg0KKwkJPHByb3BlcnR5IG5hbWU9Im9yZy5lY2xpcHNlLnZpcmdvLnN1cHByZXNzLmhlYXAuZHVtcHMiIHZhbHVlPSJmYWxzZSIvPg0KKwkJPHByb3BlcnR5IG5hbWU9Im9zZ2kuYnVuZGxlZmlsZS5saW1pdCIgdmFsdWU9IjUwMCIvPg0KKwkJPHByb3BlcnR5IG5hbWU9Im9zZ2kuamF2YS5wcm9maWxlLmJvb3RkZWxlZ2F0aW9uIiB2YWx1ZT0ib3ZlcnJpZGUiLz4NCisJCTxwcm9wZXJ0eSBuYW1lPSJvc2dpLmNvbXBhdGliaWxpdHkuZWFnZXJTdGFydC5MYXp5QWN0aXZhdGlvbiIgdmFsdWU9ImZhbHNlIi8+DQorCQk8cHJvcGVydHkgbmFtZT0ib3NnaS5zdXBwb3J0Lm11bHRpcGxlSG9zdHMiIHZhbHVlPSJ0cnVlIi8+DQorCQk8cHJvcGVydHkgbmFtZT0ib3JnLmVjbGlwc2UudmlyZ28ubWVkaWMubG9nLmNvbmZpZy5wYXRoIiB2YWx1ZT0iY29uZmlndXJhdGlvbi9zZXJ2aWNlYWJpbGl0eS54bWwiLz4NCisJCTxwcm9wZXJ0eSBuYW1lPSJvc2dpLmNvbnRleHQuYm9vdGRlbGVnYXRpb24iIHZhbHVlPSJmYWxzZSIvPg0KKwkJPHByb3BlcnR5IG5hbWU9ImVjbGlwc2UuZW5hYmxlU3RhdGVTYXZlciIgdmFsdWU9ImZhbHNlIi8+DQorCQk8cHJvcGVydHkgbmFtZT0ib3NnaS5ob29rLmNvbmZpZ3VyYXRvcnMuaW5jbHVkZSIgdmFsdWU9Im9yZy5lY2xpcHNlLnZpcmdvLmtlcm5lbC5lcXVpbm94LmV4dGVuc2lvbnMuaG9va3MuRXh0ZW5zaW9uc0hvb2tDb25maWd1cmF0b3IiLz4NCisJCTxwcm9wZXJ0eSBuYW1lPSJvcmcuZWNsaXBzZS52aXJnby5rZXJuZWwuc3RhcnR1cC53YWl0LmxpbWl0IiB2YWx1ZT0iMTgwIi8+CisJCTxwcm9wZXJ0eSBuYW1lPSJnb3NoLmhvbWUiIHZhbHVlPSJjb25maWd1cmF0aW9uIi8+DQorCTwvY29uZmlndXJhdGlvbnM+DQorDQorPC9wcm9kdWN0Pg0KZGlmZiAtLWdpdCBhL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9wcm9kdWN0cy9qZXR0eS1zZXJ2ZXIvamV0dHktc2VydmVyLnByb2R1Y3QgYi9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvcHJvZHVjdHMvamV0dHktc2VydmVyL2pldHR5LXNlcnZlci5wcm9kdWN0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjEyZDMwNDIKLS0tIC9kZXYvbnVsbAorKysgYi9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvcHJvZHVjdHMvamV0dHktc2VydmVyL2pldHR5LXNlcnZlci5wcm9kdWN0CkBAIC0wLDAgKzEsNDUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPD9wZGUgdmVyc2lvbj0iMy41Ij8+DQorDQorPHByb2R1Y3QgbmFtZT0iRWNsaXBzZSBWaXJnbyBLZXJuZWwgUHJvZHVjdCIgdWlkPSJqZXR0eS1zZXJ2ZXIucHJvZHVjdCIgdmVyc2lvbj0iMS4wLjAiIHVzZUZlYXR1cmVzPSJ0cnVlIiBpbmNsdWRlTGF1bmNoZXJzPSJmYWxzZSI+DQorDQorICAgPGNvbmZpZ0luaSB1c2U9ImRlZmF1bHQiPg0KKyAgIDwvY29uZmlnSW5pPg0KKyAgIA0KKyAgIDx2bT4NCisgICA8L3ZtPg0KKw0KKyAgIDxwbHVnaW5zPg0KKyAgIDwvcGx1Z2lucz4NCisNCisgICA8ZmVhdHVyZXM+DQorICAgPC9mZWF0dXJlcz4NCisNCis8IS0tIFRPRE8gLSBtb3ZlIHNoYXJlZCBjb25maWd1cmF0aW9uIHRvIGtlcm5lbC1iYXNlPyBwcm9kdWN0PyAtLT4NCisgICA8Y29uZmlndXJhdGlvbnM+DQorCQk8cGx1Z2luIGlkPSJvcmcuYXBhY2hlLmZlbGl4LmdvZ28uY29tbWFuZCIgYXV0b1N0YXJ0PSJ0cnVlIi8+DQorCQk8cGx1Z2luIGlkPSJvcmcuYXBhY2hlLmZlbGl4LmdvZ28ucnVudGltZSIgYXV0b1N0YXJ0PSJ0cnVlIi8+DQorCQk8cGx1Z2luIGlkPSJvcmcuYXBhY2hlLmZlbGl4LmdvZ28uc2hlbGwiIGF1dG9TdGFydD0idHJ1ZSIvPg0KKwkJPHBsdWdpbiBpZD0ib3JnLmFwYWNoZS5taW5hLmNvcmUiIGF1dG9TdGFydD0idHJ1ZSIvPg0KKwkJPHBsdWdpbiBpZD0ib3JnLmFwYWNoZS5zc2hkLmNvcmUiIGF1dG9TdGFydD0idHJ1ZSIvPg0KKwkJPHBsdWdpbiBpZD0ib3JnLmVjbGlwc2UuZXF1aW5veC5jb25zb2xlIiBhdXRvU3RhcnQ9InRydWUiLz4NCisJCTxwbHVnaW4gaWQ9Im9yZy5lY2xpcHNlLmVxdWlub3guY29uc29sZS5zc2giIGF1dG9TdGFydD0idHJ1ZSIvPg0KKw0KKwkJPHBsdWdpbiBpZD0ib3JnLmVjbGlwc2UuZ2VtaW5pLmJsdWVwcmludC5leHRlbmRlciIgYXV0b1N0YXJ0PSJ0cnVlIi8+DQorCQk8cGx1Z2luIGlkPSJvcmcuZWNsaXBzZS5nZW1pbmkubWFuYWdlbWVudCIgYXV0b1N0YXJ0PSJ0cnVlIi8+DQorDQorCQk8cGx1Z2luIGlkPSJvcmcuZWNsaXBzZS52aXJnby5rZXJuZWwuYWdlbnQuZG0iIGF1dG9TdGFydD0idHJ1ZSIvPg0KKwkJPHBsdWdpbiBpZD0ib3JnLmVjbGlwc2UudmlyZ28ua2VybmVsLmFydGlmYWN0IiBhdXRvU3RhcnQ9InRydWUiLz4NCisJCTxwbHVnaW4gaWQ9Im9yZy5lY2xpcHNlLnZpcmdvLmtlcm5lbC5kZXBsb3llciIgYXV0b1N0YXJ0PSJ0cnVlIi8+DQorCQk8cGx1Z2luIGlkPSJvcmcuZWNsaXBzZS52aXJnby5rZXJuZWwubW9kZWwiIGF1dG9TdGFydD0idHJ1ZSIvPg0KKwkJPHBsdWdpbiBpZD0ib3JnLmVjbGlwc2UudmlyZ28ua2VybmVsLm9zZ2kiIGF1dG9TdGFydD0idHJ1ZSIvPg0KKwkJPHBsdWdpbiBpZD0ib3JnLmVjbGlwc2UudmlyZ28ua2VybmVsLnNlcnZpY2VzIiBhdXRvU3RhcnQ9InRydWUiLz4NCisJCTxwbHVnaW4gaWQ9Im9yZy5lY2xpcHNlLnZpcmdvLmtlcm5lbC51c2VycmVnaW9uZmFjdG9yeSIgYXV0b1N0YXJ0PSJ0cnVlIi8+DQorDQorCQk8cGx1Z2luIGlkPSJvcmcuZWNsaXBzZS52aXJnby5uYW5vLmNvcmUiIGF1dG9TdGFydD0idHJ1ZSIvPg0KKwkJPHBsdWdpbiBpZD0ib3JnLmVjbGlwc2UudmlyZ28ubmFuby5tYW5hZ2VtZW50IiBhdXRvU3RhcnQ9InRydWUiLz4NCisJCTxwbHVnaW4gaWQ9Im9yZy5lY2xpcHNlLnZpcmdvLnJlcG9zaXRvcnkiIGF1dG9TdGFydD0idHJ1ZSIvPg0KKwkJPHBsdWdpbiBpZD0iIiBhdXRvU3RhcnQ9InRydWUiLz4NCisJPC9jb25maWd1cmF0aW9ucz4NCisNCis8L3Byb2R1Y3Q+DQpkaWZmIC0tZ2l0IGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9wcm9kdWN0cy9qZXR0eS1zZXJ2ZXIvcDIuaW5mIGIvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL3Byb2R1Y3RzL2pldHR5LXNlcnZlci9wMi5pbmYKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGJ1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvcHJvZHVjdHMvamV0dHktc2VydmVyL3AyLmluZgpyZW5hbWUgdG8gamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL3Byb2R1Y3RzL2pldHR5LXNlcnZlci9wMi5pbmYKZGlmZiAtLWdpdCBhL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9wcm9kdWN0cy9rZXJuZWwtYmFzZS9rZXJuZWwtYmFzZS5wcm9kdWN0IGIvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL3Byb2R1Y3RzL2tlcm5lbC1iYXNlL2tlcm5lbC1iYXNlLnByb2R1Y3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNWVjZDZmZAotLS0gL2Rldi9udWxsCisrKyBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9wcm9kdWN0cy9rZXJuZWwtYmFzZS9rZXJuZWwtYmFzZS5wcm9kdWN0CkBAIC0wLDAgKzEsMzcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPD9wZGUgdmVyc2lvbj0iMy41Ij8+DQorDQorPHByb2R1Y3QgbmFtZT0iRWNsaXBzZSBWaXJnbyBLZXJuZWwgQmFzZSBQcm9kdWN0IiB1aWQ9Imtlcm5lbC1iYXNlLnByb2R1Y3QiIHZlcnNpb249IjEuMC4wIiB1c2VGZWF0dXJlcz0idHJ1ZSIgaW5jbHVkZUxhdW5jaGVycz0iZmFsc2UiPg0KKw0KKyAgIDxjb25maWdJbmkgdXNlPSJkZWZhdWx0Ij4NCisgICA8L2NvbmZpZ0luaT4NCisgICANCisgICA8dm0+DQorICAgPC92bT4NCisNCisgICA8cGx1Z2lucz4NCisgICA8L3BsdWdpbnM+DQorDQorICAgPGZlYXR1cmVzPg0KKyAgICAgIDxmZWF0dXJlIGlkPSJvcmcuZWNsaXBzZS52aXJnby5rZXJuZWwiIHZlcnNpb249IjAuMC4wIi8+DQorICAgCSAgPCEtLQ0KKyAgICAgIDxmZWF0dXJlIGlkPSJvcmcuZWNsaXBzZS52aXJnby5rZXJuZWwucmVzb3VyY2VzIiB2ZXJzaW9uPSIwLjAuMCIvPg0KKyAgICAgIC0tPg0KKyAgICAgIDxmZWF0dXJlIGlkPSJvcmcuZWNsaXBzZS52aXJnby5rZXJuZWwuc3ByaW5naW50ZWdyYXRpb24iIHZlcnNpb249IjAuMC4wIi8+DQorICAgICAgPCEtLSBUT0RPIC0gY2hlY2sgaWYgdGhpcyB0aGlzIGZlYXR1cmUgaXMgcmVhbGx5IG5lZWRlZC4gU2VlbXMgR2VtaW5pIEJsdWVwcmludCBpcyBhbHJlYWR5IHBpY2tlZCB1cCBmcm9tIGFub3RoZXIgc291cmNlLiAtLT4NCisgICAgICA8ZmVhdHVyZSBpZD0ib3JnLmVjbGlwc2UudmlyZ28uc3ByaW5nZG0iIHZlcnNpb249IjAuMC4wIi8+DQorICAgICAgPGZlYXR1cmUgaWQ9Im9yZy5lY2xpcHNlLnZpcmdvLm1hbmFnZW1lbnQiIHZlcnNpb249IjAuMC4wIiAvPg0KKyAgIDwvZmVhdHVyZXM+DQorDQorICAgPGNvbmZpZ3VyYXRpb25zPg0KKwkJPHBsdWdpbiBpZD0iY29tLnNwcmluZ3NvdXJjZS5vcmcuYXBhY2hlLmNvbW1vbnMuY29kZWMiIGF1dG9TdGFydD0idHJ1ZSIvPg0KKwkJPHBsdWdpbiBpZD0iY29tLnNwcmluZ3NvdXJjZS5vcmcuYXBhY2hlLmNvbW1vbnMuaHR0cGNsaWVudCIgYXV0b1N0YXJ0PSJ0cnVlIi8+DQorIA0KKwkJPHByb3BlcnR5IG5hbWU9Im9yZy5vc2dpLmZyYW1ld29yay5ic252ZXJzaW9uIiB2YWx1ZT0ibXVsdGlwbGUiLz4NCisJCTxwcm9wZXJ0eSBuYW1lPSJvc2dpLmNsZWFuIiB2YWx1ZT0idHJ1ZSIvPg0KKwkJPHByb3BlcnR5IG5hbWU9Im9yZy5vc2dpLnNlcnZpY2UuaHR0cC5wb3J0IiB2YWx1ZT0iODA4MCIvPg0KKwkJPHByb3BlcnR5IG5hbWU9Im9yZy5qb2xva2lhLmxpc3RlbkZvckh0dHBTZXJ2aWNlIiB2YWx1ZT0iZmFsc2UiLz4NCisJCTxwcm9wZXJ0eSBuYW1lPSJvcmcuam9sb2tpYS51c2VSZXN0cmljdG9yU2VydmljZSIgdmFsdWU9InRydWUiLz4NCisJPC9jb25maWd1cmF0aW9ucz4NCisNCis8L3Byb2R1Y3Q+DQpkaWZmIC0tZ2l0IGEvamV0dHktc2VydmVyL3B1Ymxpc2hfcmVzb3VyY2VzL3Byb2R1Y3RzL2tlcm5lbC1iYXNlL3AyLmluZiBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9wcm9kdWN0cy9rZXJuZWwtYmFzZS9wMi5pbmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmRiZGZjNwotLS0gL2Rldi9udWxsCisrKyBiL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9wcm9kdWN0cy9rZXJuZWwtYmFzZS9wMi5pbmYKQEAgLTAsMCArMSwxOCBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBDb3B5cmlnaHQgKGMpIDIwMTEgU0FQIEFHCisjCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMKKyMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wCisjIGFuZCBBcGFjaGUgTGljZW5zZSB2Mi4wIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLgorIyBUaGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBpcyBhdmFpbGFibGUgYXQKKyMgICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbAorIyBhbmQgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgaXMgYXZhaWxhYmxlIGF0CisjICAgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9hcGFjaGUyLjAucGhwLgorIyBZb3UgbWF5IGVsZWN0IHRvIHJlZGlzdHJpYnV0ZSB0aGlzIGNvZGUgdW5kZXIgZWl0aGVyIG9mIHRoZXNlIGxpY2Vuc2VzLgorIworIyBDb250cmlidXRvcnM6CisjICAgQm9yaXNsYXYgS2FwdWthcmFub3YgLSBpbml0aWFsIGNvbnRyaWJ1dGlvbgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworcmVxdWlyZXMuMC5uYW1lID0gYmFzZS5wcm9kdWN0CityZXF1aXJlcy4wLm5hbWVzcGFjZSA9IG9yZy5lY2xpcHNlLmVxdWlub3gucDIuaXUKK3JlcXVpcmVzLjAucmFuZ2UgPSAwLjAuMApkaWZmIC0tZ2l0IGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9yZXBvc2l0b3J5LWl2eS54bWwgYi9qZXR0eS1zZXJ2ZXIvcmVwb3NpdG9yeS1pdnkueG1sCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBidWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3JlcG9zaXRvcnktaXZ5LnhtbApyZW5hbWUgdG8gamV0dHktc2VydmVyL3JlcG9zaXRvcnktaXZ5LnhtbApkaWZmIC0tZ2l0IGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9yZXNvdXJjZXMvQWJvdXQuaHRtbCBiL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L0Fib3V0Lmh0bWwKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGJ1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcmVzb3VyY2VzL0Fib3V0Lmh0bWwKcmVuYW1lIHRvIGpldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L0Fib3V0Lmh0bWwKZGlmZiAtLWdpdCBhL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L0Fib3V0S2VybmVsLmh0bWwgYi9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9BYm91dEtlcm5lbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiYzk0MmEKLS0tIC9kZXYvbnVsbAorKysgYi9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9BYm91dEtlcm5lbC5odG1sCkBAIC0wLDAgKzEsNzAgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4KKzwhLS0gc2F2ZWQgZnJvbSB1cmw9KDAwNDcpaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwvbG9uZ2Fib3V0Lmh0bWwgLS0+Cis8SFRNTCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+PEhFQUQ+PE1FVEEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSI+CisKKzxUSVRMRT5BYm91dDwvVElUTEU+Cis8L0hFQUQ+PEJPRFkgbGFuZz0iRU4tVVMiPgorPEgyPkFib3V0IFRoaXMgQ29udGVudDwvSDI+CisgCis8UD4xMyBEZWNlbWJlciAyMDEyPC9QPgkKKzxIMz5MaWNlbnNlPC9IMz4KKworPFA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluICgiQ29udGVudCIpLiAgVW5sZXNzIG90aGVyd2lzZSAKK2luZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQgaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUKK0VjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgKCJFUEwiKS4gIEEgY29weSBvZiB0aGUgRVBMIGlzIGF2YWlsYWJsZSAKK2F0IDxBIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbDwvQT4uCitGb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgIlByb2dyYW0iIHdpbGwgbWVhbiB0aGUgQ29udGVudC48L1A+CisKKzxQPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgCitiZWluZyByZWRpc3RyaWJ1dGVkIGJ5IGFub3RoZXIgcGFydHkgKCJSZWRpc3RyaWJ1dG9yIikgYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkKK2FwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gIENoZWNrIHRoZSBSZWRpc3RyaWJ1dG9yJ3MgbGljZW5zZSB0aGF0IHdhcyAKK3Byb3ZpZGVkIHdpdGggdGhlIENvbnRlbnQuICBJZiBubyBzdWNoIGxpY2Vuc2UgZXhpc3RzLCBjb250YWN0IHRoZSBSZWRpc3RyaWJ1dG9yLiAgVW5sZXNzIG90aGVyd2lzZQoraW5kaWNhdGVkIGJlbG93LCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlIGNvZGUgaW4gdGhlIENvbnRlbnQKK2FuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdCA8QSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvQT4uPC9QPgorCisJCQorCQk8SDM+VGhpcmQgUGFydHkgQ29udGVudDwvSDM+CisJCTxQPlRoZSBDb250ZW50IGluY2x1ZGVzIGl0ZW1zIHRoYXQgaGF2ZSBiZWVuIHNvdXJjZWQgZnJvbSB0aGlyZCBwYXJ0aWVzIGFzIHNldCBvdXQgYmVsb3cuIElmIHlvdSAKKwkJZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIHRoZSBmb2xsb3dpbmcgaXMgcHJvdmlkZWQgCisJCWZvciBpbmZvcm1hdGlvbmFsIHB1cnBvc2VzIG9ubHksIGFuZCB5b3Ugc2hvdWxkIGxvb2sgdG8gdGhlIFJlZGlzdHJpYnV0b3IncyBsaWNlbnNlIGZvciAKKwkJdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdXNlLjwvUD4KKworCQk8aDQ+TmFubyBUaGlyZCBQYXJ0eSBDb250ZW50PC9oND4KKwkJPHA+VGhpcyBpcyBsaXN0ZWQgaW4gPGEgaHJlZj0iQWJvdXROYW5vLmh0bWwiPk5hbm8ncyBBYm91dCBmaWxlPC9hPi4KKworCQkKKwkJPGg0PgorCQkJPGEgaHJlZj0iYWJvdXRfZmlsZXMvYXBhY2hlLXYyMC50eHQiPkFwYWNoZSBMaWNlbnNlIDIuMDwvYT4KKwkJPC9oND4KKwkJVGhpcyBwcm9kdWN0IGNvbnRhaW5zIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZyI+aHR0cDovL3d3dy5hcGFjaGUub3JnPC9hPikuCisJCTx1bD4KKwkJCTxsaT4KKwkJCQlBcGFjaGUgQ29tbW9ucyBDb2RlYyAxLjMuMCAtIGJpbmFyeSBhbmQgc291cmNlIGlzIGF2YWlsYWJsZSBmcm9tIHRoZSA8YSBocmVmPSJodHRwOi8vY29tbW9ucy5hcGFjaGUub3JnL2NvZGVjLyI+QXBhY2hlIENvbW1vbnMgQ29kZWMgcHJvamVjdDwvYT4KKwkJCTwvbGk+CisJCQk8bGk+CisJCQkJQXBhY2hlIEh0dHBDbGllbnQgMy4xLjAgLSBiaW5hcnkgYW5kIHNvdXJjZSBpcyBhdmFpbGFibGUgZnJvbSB0aGUgPGEgaHJlZj0iaHR0cDovL2hjLmFwYWNoZS5vcmcvaHR0cGNsaWVudC0zLngvIj5BcGFjaGUgSHR0cENsaWVudCBwcm9qZWN0PC9hPgorCQkJPC9saT4KKwkJCTxsaT4KKwkJCQlTcHJpbmcgRnJhbWV3b3JrIDMuMS4wLlJFTEVBU0UgLSBiaW5hcnkgYW5kIHNvdXJjZSBpcyBhdmFpbGFibGUgZnJvbSB0aGUKKwkJCQk8YSBocmVmPSJodHRwOi8vd3d3LnNwcmluZ3NvdXJjZS5jb20vZG93bmxvYWQvY29tbXVuaXR5Ij5TcHJpbmcgRnJhbWV3b3JrIHByb2plY3Q8L2E+CisJCQk8L2xpPgorCQk8L3VsPgorCQk8aDQ+CisJCQk8YSBocmVmPSJhYm91dF9maWxlcy9hc20udHh0Ij5BU00gTGljZW5zZTwvYT4KKwkJPC9oND4KKwkJPHVsPgorCQkJPGxpPgorCQkJCUFTTSAyLjIuMyAtIGJpbmFyeSBhbmQgc291cmNlIGlzIGF2YWlsYWJsZSBmcm9tIHRoZSA8YSBocmVmPSJodHRwOi8vYXNtLm93Mi5vcmcvIj5BU00gcHJvamVjdDwvYT4KKwkJCTwvbGk+CisJCTwvdWw+CisJCTxoND4KKwkJCTxhIGhyZWY9Imh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHVibGljX2RvbWFpbiI+UHVibGljIERvbWFpbjwvYT4KKwkJPC9oND4KKwkJPHVsPgorCQkJPGxpPgorCQkJCUFPUCBBbGxpYW5jZSAxLjAuMCAtIGJpbmFyeSBhbmQgc291cmNlIGlzIGF2YWlsYWJsZSBmcm9tIHRoZQorCQkJCTxhIGhyZWY9Imh0dHA6Ly9hb3BhbGxpYW5jZS5zb3VyY2Vmb3JnZS5uZXQvIj5BT1AgQWxsaWFuY2UgcHJvamVjdDwvYT4KKwkJCTwvbGk+CisJCTwvdWw+CisKKzwvQk9EWT48L0hUTUw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvQWJvdXROYW5vLmh0bWwgYi9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9BYm91dE5hbm8uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMWVkYWVlCi0tLSAvZGV2L251bGwKKysrIGIvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvQWJvdXROYW5vLmh0bWwKQEAgLTAsMCArMSw5OSBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgorPCEtLSBzYXZlZCBmcm9tIHVybD0oMDA0NylodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC9sb25nYWJvdXQuaHRtbCAtLT4KKzxIVE1MIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj48SEVBRD48TUVUQSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KKworPFRJVExFPkFib3V0PC9USVRMRT4KKzwvSEVBRD48Qk9EWSBsYW5nPSJFTi1VUyI+Cis8SDI+QWJvdXQgVGhpcyBDb250ZW50PC9IMj4KKyAKKzxQPjEzIERlY2VtYmVyIDIwMTI8L1A+CQorPEgzPkxpY2Vuc2U8L0gzPgorCis8UD5UaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1ha2VzIGF2YWlsYWJsZSBhbGwgY29udGVudCBpbiB0aGlzIHBsdWctaW4gKCJDb250ZW50IikuICBVbmxlc3Mgb3RoZXJ3aXNlIAoraW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQorRWNsaXBzZSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoIkVQTCIpLiAgQSBjb3B5IG9mIHRoZSBFUEwgaXMgYXZhaWxhYmxlIAorYXQgPEEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sPC9BPi4KK0ZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAiUHJvZ3JhbSIgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvUD4KKworPFA+SWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uLCB0aGUgQ29udGVudCBpcyAKK2JlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eSAoIlJlZGlzdHJpYnV0b3IiKSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQorYXBwbHkgdG8geW91ciB1c2Ugb2YgYW55IG9iamVjdCBjb2RlIGluIHRoZSBDb250ZW50LiAgQ2hlY2sgdGhlIFJlZGlzdHJpYnV0b3IncyBsaWNlbnNlIHRoYXQgd2FzIAorcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gIElmIG5vIHN1Y2ggbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuICBVbmxlc3Mgb3RoZXJ3aXNlCitpbmRpY2F0ZWQgYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudAorYW5kIHN1Y2ggc291cmNlIGNvZGUgbWF5IGJlIG9idGFpbmVkIGF0IDxBIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnPC9BPi48L1A+CisKKwkJCisJCTxIMz5UaGlyZCBQYXJ0eSBDb250ZW50PC9IMz4KKwkJPFA+VGhlIENvbnRlbnQgaW5jbHVkZXMgaXRlbXMgdGhhdCBoYXZlIGJlZW4gc291cmNlZCBmcm9tIHRoaXJkIHBhcnRpZXMgYXMgc2V0IG91dCBiZWxvdy4gSWYgeW91IAorCQlkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIGZvbGxvd2luZyBpcyBwcm92aWRlZCAKKwkJZm9yIGluZm9ybWF0aW9uYWwgcHVycG9zZXMgb25seSwgYW5kIHlvdSBzaG91bGQgbG9vayB0byB0aGUgUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgZm9yIAorCQl0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UuPC9QPgorCQkKKwkJPGg0PgorCQkJPGEgaHJlZj0iYWJvdXRfZmlsZXMvYXBhY2hlLXYyMC50eHQiPkFwYWNoZSBMaWNlbnNlIDIuMDwvYT4KKwkJPC9oND4KKwkJVGhpcyBwcm9kdWN0IGNvbnRhaW5zIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZyI+aHR0cDovL3d3dy5hcGFjaGUub3JnPC9hPikuCisJCTx1bD4KKwkJCTxsaT4KKwkJCQlBcGFjaGUgQ29tbW9ucyBGaWxlVXBsb2FkIDEuMi4wIC0gYmluYXJ5IGFuZCBzb3VyY2UgYXJlIGF2YWlsYWJsZSBmcm9tIHRoZSA8YSBocmVmPSJodHRwOi8vY29tbW9ucy5hcGFjaGUub3JnL2ZpbGV1cGxvYWQvIj5BcGFjaGUgQ29tbW9ucyBGaWxlVXBsb2FkIHByb2plY3Q8L2E+CisJCQk8L2xpPgorCQkJPGxpPgorCQkJCUFwYWNoZSBDb21tb25zIElPIDEuNC4wIC0gYmluYXJ5IGFuZCBzb3VyY2UgYXJlIGF2YWlsYWJsZSBmcm9tIHRoZSA8YSBocmVmPSJodHRwOi8vY29tbW9ucy5hcGFjaGUub3JnL2lvLyI+QXBhY2hlIENvbW1vbnMgSU8gcHJvamVjdDwvYT4KKwkJCTwvbGk+CisJCQk8bGk+CisJCQkJQXBhY2hlIEZlbGl4IEdvZ28gMC4xMC4wIC0gYmluYXJ5IGFuZCBzb3VyY2UgaXMgYXZhaWxhYmxlIGZyb20gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mZWxpeC5hcGFjaGUub3JnIj5BcGFjaGUgRmVsaXggcHJvamVjdDwvYT4KKwkJCTwvbGk+CisJCQk8bGk+CisJCQkJQXBhY2hlIE1JTkEgQ29yZSAyLjAuMiAtIGJpbmFyeSBhbmQgc291cmNlIGlzIGF2YWlsYWJsZSBmcm9tIHRoZSA8YSBocmVmPSJodHRwOi8vbWluYS5hcGFjaGUub3JnLyI+QXBhY2hlIE1JTkEgcHJvamVjdDwvYT4KKwkJCTwvbGk+CisJCQk8bGk+CisJCQkJQXBhY2hlIE1JTkEgU1NIRCBDb3JlIDAuNS4wIC0gYmluYXJ5IGFuZCBzb3VyY2UgaXMgYXZhaWxhYmxlIGZyb20gdGhlIDxhIGhyZWY9Imh0dHA6Ly9taW5hLmFwYWNoZS5vcmcvIj5BcGFjaGUgTUlOQSBwcm9qZWN0PC9hPgorCQkJPC9saT4KKwkJCTxsaT4KKwkJCQlqYXZheC50cmFuc2FjdGlvbiAxLjEuMSAtIGJpbmFyeSBhbmQgc291cmNlIGFyZSBhdmFpbGFibGUgZnJvbSB0aGUgPGEgaHJlZj0iaHR0cDovL2dlcm9uaW1vLmFwYWNoZS5vcmcvIj5BcGFjaGUgR2Vyb25pbW8gcHJvamVjdDwvYT4KKwkJCTwvbGk+CisJCQk8bGk+CisJCQkJSm9sb2tpYSBPU0dpIDEuMC4yIC0gYmluYXJ5IGFuZCBzb3VyY2UgYXJlIGF2YWlsYWJsZSBmcm9tIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmpvbG9raWEub3JnLyI+Sm9sb2tpYSBwcm9qZWN0PC9hPgorCQkJPC9saT4KKwkJCTxsaT4KKwkJCQlPU0dpIEVudGVycHJpc2UgNC4yIC0gYmluYXJ5IGFuZCBzb3VyY2UgYXJlIGF2YWlsYWJsZSBmcm9tIHRoZSA8YSBocmVmPSJodHRwczovL3d3dy5vc2dpLm9yZy9tZW1iZXJzL1JlbGVhc2U0Mi9Ib21lUGFnZSI+T1NHaSBBbGxpYW5jZTwvYT4KKwkJCTwvbGk+CisJCTwvdWw+CisJCTxoND4KKwkJCTxhIGhyZWY9ImFib3V0X2ZpbGVzL0xJQ0VOU0UtQXNwZWN0Si5odG1sIj5Bc3BlY3RKIExpY2Vuc2U8L2E+CisJCTwvaDQ+CisJCTx1bD4KKwkJCTxsaT4KKwkJCQlBc3BlY3RKIFdlYXZlciAxLjYuMTIgLSBiaW5hcnkgYW5kIHNvdXJjZSBpcyBhdmFpbGFibGUgZnJvbSB0aGUgPGEgaHJlZj0iaHR0cDovL2VjbGlwc2Uub3JnL2FzcGVjdGoiPkFzcGVjdEogcHJvamVjdDwvYT4KKwkJCTwvbGk+CisJCTwvdWw+CisJCTxoND4KKwkJCTxhIGhyZWY9ImFib3V0X2ZpbGVzL2NkZGwtMTAudHh0Ij5Db21tb24gRGV2ZWxvcG1lbnQgYW5kIERpc3RyaWJ1dGlvbiBMaWNlbnNlIDEuMDwvYT4KKwkJPC9oND4KKwkJPHVsPgorCQkJPGxpPgorCQkJCWphdmF4LmFubm90YXRpb24gMS4xLjAgLSBiaW5hcnkgYW5kIHNvdXJjZSBpcyBhdmFpbGFibGUgZnJvbSB0aGUKKwkJCQk8YSBocmVmPSJodHRwOi8vZ2xhc3NmaXNoLmphdmEubmV0LyI+R2xhc3NGaXNoIFByb2plY3Q8L2E+IChEdWFsLWxpY2Vuc2VkIENEREwgMS4wIG9yIEdQTCAyLiBWaXJnbyBlbGVjdHMgdG8gdXNlIENEREwgMS4wLikKKwkJCTwvbGk+CisJCTwvdWw+CisKKwkJPGg0PgorCQkJPGEgaHJlZj0iZXBsLXYxMC5odG1sIj5FY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDEuMDwvYT4KKwkJPC9oND4KKwkJPHVsPgorCQkJPGxpPgorCQkJCUxvZ2JhY2sgMS4wLjcgLSBiaW5hcnkgYW5kIHNvdXJjZSBpcyBhdmFpbGFibGUgZnJvbSB0aGUKKwkJCQk8YSBocmVmPSJodHRwOi8vbG9nYmFjay5xb3MuY2gvIj5Mb2diYWNrIHByb2plY3Q8L2E+IChEdWFsLWxpY2Vuc2VkIEVQTCBvciBMR1BMLiBWaXJnbyBlbGVjdHMgdG8gdXNlIEVQTC4pCisJCQk8L2xpPgorCQk8L3VsPgorCQk8aDQ+CisJCQk8YSBocmVmPSJhYm91dF9maWxlcy9zbGY0ai50eHQiPlNMRjRKIExpY2Vuc2U8L2E+CisJCTwvaDQ+CisJCTx1bD4KKwkJCTxsaT4KKwkJCQlTaW1wbGUgTG9nZ2luZyBGYWNhZGUgZm9yIEphdmEgKFNMRjRKKSAxLjcuMiAtIGJpbmFyeSBhbmQgc291cmNlIGlzIGF2YWlsYWJsZSBmcm9tIHRoZQorCQkJCTxhIGhyZWY9Imh0dHA6Ly93d3cuc2xmNGoub3JnLyI+U0xGNEogUHJvamVjdDwvYT4KKwkJCTwvbGk+CisJCTwvdWw+CisKKzwvQk9EWT48L0hUTUw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvYWJvdXRfZmlsZXMvTElDRU5TRS1Bc3BlY3RKLmh0bWwgYi9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9hYm91dF9maWxlcy9MSUNFTlNFLUFzcGVjdEouaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjdkMGE0Ci0tLSAvZGV2L251bGwKKysrIGIvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvYWJvdXRfZmlsZXMvTElDRU5TRS1Bc3BlY3RKLmh0bWwKQEAgLTAsMCArMSw5MSBAQAorPGh0bWw+CisKKzxoZWFkPgorPHRpdGxlPkFzcGVjdEogTGljZW5zZTwvdGl0bGU+CisKKworPC9oZWFkPgorCis8Qk9EWSBCR0NPTE9SPSJ3aGl0ZSI+CisKKzxoMiBhbGlnbj0iY2VudGVyIj48Yj5Bc3BlY3RKPHN1cD48c21hbGw+VE08L3NtYWxsPjwvc3VwPgorICAgICAgICAgICAgICAgICAgICAgIENvbXBpbGVyIGFuZCBDb3JlIFRvb2xzIExpY2Vuc2U8L2I+PC9oMj4KKworPHA+VGhpcyBpcyBhIGJpbmFyeS1vbmx5IHJlbGVhc2UuJm5ic3A7IFNvdXJjZSBjb2RlCitpcyBhdmFpbGFibGUgZnJvbQorPGEgaHJlZj0iaHR0cDovL2VjbGlwc2Uub3JnL2FzcGVjdGoiPmh0dHA6Ly9lY2xpcHNlLm9yZy9hc3BlY3RqPC9hPjwvcD4KKworPHA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBkaXN0cmlidXRpb24gKCJDb250ZW50IikuICAKKwkJVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQgYmVsb3csIHRoZSBDb250ZW50IGlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlCisJCUVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgKCJFUEwiKS4gIEEgY29weSBvZiB0aGUgRVBMIGlzIGF2YWlsYWJsZSAKKwkJYXQgPGEgaHJlZj0iLi4vLi4vb3JnL2RvY3VtZW50cy9lcGwtdjEwLnBocCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWw8L2E+LgorCQlGb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgIlByb2dyYW0iIHdpbGwgbWVhbiB0aGUgQ29udGVudC48L3A+CisKKwkJPHA+SWYgeW91IGRpZCBub3QgcmVjZWl2ZSB0aGlzIENvbnRlbnQgZGlyZWN0bHkgZnJvbSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uLCB0aGUgQ29udGVudCBpcyAKKwkJYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgiUmVkaXN0cmlidXRvciIpIGFuZCBkaWZmZXJlbnQgdGVybXMgYW5kIGNvbmRpdGlvbnMgbWF5CisJCWFwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gIENoZWNrIHRoZSBSZWRpc3RyaWJ1dG9yJ3MgbGljZW5zZSAKKwkJdGhhdCB3YXMgcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gIElmIG5vIHN1Y2ggbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuICBVbmxlc3Mgb3RoZXJ3aXNlCisJCWluZGljYXRlZCBiZWxvdywgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBFUEwgc3RpbGwgYXBwbHkgdG8gYW55IHNvdXJjZSBjb2RlIGluIHRoZSBDb250ZW50CisJCWFuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdCA8YSBocmVmPSIvIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnPC9hPi48L3A+CisKKwkJCisJCTxoMz5UaGlyZCBQYXJ0eSBDb250ZW50PC9oMz4KKwkJPHA+VGhlIENvbnRlbnQgaW5jbHVkZXMgaXRlbXMgdGhhdCBoYXZlIGJlZW4gc291cmNlZCBmcm9tIHRoaXJkIHBhcnRpZXMgYXMgc2V0IG91dCBiZWxvdy4gSWYgeW91IAorCQlkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIGZvbGxvd2luZyBpcyBwcm92aWRlZCAKKwkJZm9yIGluZm9ybWF0aW9uYWwgcHVycG9zZXMgb25seSwgYW5kIHlvdSBzaG91bGQgbG9vayB0byB0aGUgUmVkaXN0cmlidXRvcj9zIGxpY2Vuc2UgZm9yIAorCQl0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UuPC9wPgorCQk8ZW0+CisKKwkJPGg0PkJDRUwgdjUuMTwvaDQ+CisJCTxwPlRoaXMgcHJvZHVjdCBjb250YWlucyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlCisgICAgICAgICBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+aHR0cDovL3d3dy5hcGFjaGUub3JnPC9hPikuPC9wPgorIAorCQk8cD5Bc3BlY3RKIGluY2x1ZGVzIGEgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgQXBhY2hlIEpha2FydGEgQnl0ZSBDb2RlIEVuZ2luZWVyaW5nIExpYnJhcnkgKEJDRUwpIHY1LjEuCisJCUJDRUwgaXMgYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly9qYWthcnRhLmFwYWNoZS5vcmcvYmNlbC8iPmh0dHA6Ly9qYWthcnRhLmFwYWNoZS5vcmcvYmNlbC88L2E+LiBTb3VyY2UKKwkJY29kZSBmb3IgdGhlIG1vZGlmaWVkIHZlcnNpb24gb2YgQkNFTCBpcyBhdmFpbGFibGUgYXQgRWNsaXBzZS5vcmcgaW4gdGhlIEFzcGVjdEogc291cmNlIHRyZWUuIFRoaXMgY29kZQorCQlpcyBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgQXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UgdjEuMTwvcD4KKwkJCisJCTxoND5BU00gdjIuMi4xPC9oND4gCisJCTxwPkFzcGVjdEogaW5jbHVkZXMgYSBiaW5hcnkgdmVyc2lvbiBvZiBBU00gdjIuMi4xICg8YSBocmVmPSJodHRwOi8vYXNtLm9iamVjdHdlYi5vcmcvaW5kZXguaHRtbCI+aHR0cDovL2FzbS5vYmplY3R3ZWIub3JnLzwvYT4pCisJCVRoZSBzb3VyY2UgY29kZSBmb3IgQVNNIGlzIGF2YWlsYWJsZSBmcm9tIHRoZSBPYmplY3RXZWIgZG93bmxvYWQgc2l0ZSBhdCAKKwkJPGEgaHJlZj0iaHR0cDovL2FzbS5vYmplY3R3ZWIub3JnL2Rvd25sb2FkLyI+aHR0cDovL2FzbS5vYmplY3R3ZWIub3JnL2Rvd25sb2FkLzwvYT4uIAorCQk8cD5UaGUgQVNNIGxpY2Vuc2UgaXMgYXZhaWxhYmxlIGF0IDxhIGhyZWY9Imh0dHA6Ly9hc20ub2JqZWN0d2ViLm9yZy9saWNlbnNlLmh0bWwiPmh0dHA6Ly9hc20ub2JqZWN0d2ViLm9yZy9saWNlbnNlLmh0bWw8L2E+LiAKKwkJVGhlIGxpY2Vuc2UgaXMgYWxzbyByZXByb2R1Y2VkIGhlcmU6CisJCTwvcD4KKworPHByZT5Db3B5cmlnaHQgKGMpIDIwMDAtMjAwNSBJTlJJQSwgRnJhbmNlIFRlbGVjb20KK0FsbCByaWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCithcmUgbWV0OgorCisxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorCisyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKworMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlcnMgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKK0FORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKK0lNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCitBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKK0xJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKK0NPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCitTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKK0lOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCitDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorPC9wcmU+CisKKzwvZW0+CisKKzwvYm9keT4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvYWJvdXRfZmlsZXMvYXBhY2hlLXYyMC50eHQgYi9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9hYm91dF9maWxlcy9hcGFjaGUtdjIwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjQ1Njk1Ci0tLSAvZGV2L251bGwKKysrIGIvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvYWJvdXRfZmlsZXMvYXBhY2hlLXYyMC50eHQKQEAgLTAsMCArMSwyMDIgQEAKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBhY2hlIExpY2Vuc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gMi4wLCBKYW51YXJ5IDIwMDQKKyAgICAgICAgICAgICAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy8KKworICAgVEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIFVTRSwgUkVQUk9EVUNUSU9OLCBBTkQgRElTVFJJQlVUSU9OCisKKyAgIDEuIERlZmluaXRpb25zLgorCisgICAgICAiTGljZW5zZSIgc2hhbGwgbWVhbiB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLAorICAgICAgYW5kIGRpc3RyaWJ1dGlvbiBhcyBkZWZpbmVkIGJ5IFNlY3Rpb25zIDEgdGhyb3VnaCA5IG9mIHRoaXMgZG9jdW1lbnQuCisKKyAgICAgICJMaWNlbnNvciIgc2hhbGwgbWVhbiB0aGUgY29weXJpZ2h0IG93bmVyIG9yIGVudGl0eSBhdXRob3JpemVkIGJ5CisgICAgICB0aGUgY29weXJpZ2h0IG93bmVyIHRoYXQgaXMgZ3JhbnRpbmcgdGhlIExpY2Vuc2UuCisKKyAgICAgICJMZWdhbCBFbnRpdHkiIHNoYWxsIG1lYW4gdGhlIHVuaW9uIG9mIHRoZSBhY3RpbmcgZW50aXR5IGFuZCBhbGwKKyAgICAgIG90aGVyIGVudGl0aWVzIHRoYXQgY29udHJvbCwgYXJlIGNvbnRyb2xsZWQgYnksIG9yIGFyZSB1bmRlciBjb21tb24KKyAgICAgIGNvbnRyb2wgd2l0aCB0aGF0IGVudGl0eS4gRm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlzIGRlZmluaXRpb24sCisgICAgICAiY29udHJvbCIgbWVhbnMgKGkpIHRoZSBwb3dlciwgZGlyZWN0IG9yIGluZGlyZWN0LCB0byBjYXVzZSB0aGUKKyAgICAgIGRpcmVjdGlvbiBvciBtYW5hZ2VtZW50IG9mIHN1Y2ggZW50aXR5LCB3aGV0aGVyIGJ5IGNvbnRyYWN0IG9yCisgICAgICBvdGhlcndpc2UsIG9yIChpaSkgb3duZXJzaGlwIG9mIGZpZnR5IHBlcmNlbnQgKDUwJSkgb3IgbW9yZSBvZiB0aGUKKyAgICAgIG91dHN0YW5kaW5nIHNoYXJlcywgb3IgKGlpaSkgYmVuZWZpY2lhbCBvd25lcnNoaXAgb2Ygc3VjaCBlbnRpdHkuCisKKyAgICAgICJZb3UiIChvciAiWW91ciIpIHNoYWxsIG1lYW4gYW4gaW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkKKyAgICAgIGV4ZXJjaXNpbmcgcGVybWlzc2lvbnMgZ3JhbnRlZCBieSB0aGlzIExpY2Vuc2UuCisKKyAgICAgICJTb3VyY2UiIGZvcm0gc2hhbGwgbWVhbiB0aGUgcHJlZmVycmVkIGZvcm0gZm9yIG1ha2luZyBtb2RpZmljYXRpb25zLAorICAgICAgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBzb2Z0d2FyZSBzb3VyY2UgY29kZSwgZG9jdW1lbnRhdGlvbgorICAgICAgc291cmNlLCBhbmQgY29uZmlndXJhdGlvbiBmaWxlcy4KKworICAgICAgIk9iamVjdCIgZm9ybSBzaGFsbCBtZWFuIGFueSBmb3JtIHJlc3VsdGluZyBmcm9tIG1lY2hhbmljYWwKKyAgICAgIHRyYW5zZm9ybWF0aW9uIG9yIHRyYW5zbGF0aW9uIG9mIGEgU291cmNlIGZvcm0sIGluY2x1ZGluZyBidXQKKyAgICAgIG5vdCBsaW1pdGVkIHRvIGNvbXBpbGVkIG9iamVjdCBjb2RlLCBnZW5lcmF0ZWQgZG9jdW1lbnRhdGlvbiwKKyAgICAgIGFuZCBjb252ZXJzaW9ucyB0byBvdGhlciBtZWRpYSB0eXBlcy4KKworICAgICAgIldvcmsiIHNoYWxsIG1lYW4gdGhlIHdvcmsgb2YgYXV0aG9yc2hpcCwgd2hldGhlciBpbiBTb3VyY2Ugb3IKKyAgICAgIE9iamVjdCBmb3JtLCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgTGljZW5zZSwgYXMgaW5kaWNhdGVkIGJ5IGEKKyAgICAgIGNvcHlyaWdodCBub3RpY2UgdGhhdCBpcyBpbmNsdWRlZCBpbiBvciBhdHRhY2hlZCB0byB0aGUgd29yaworICAgICAgKGFuIGV4YW1wbGUgaXMgcHJvdmlkZWQgaW4gdGhlIEFwcGVuZGl4IGJlbG93KS4KKworICAgICAgIkRlcml2YXRpdmUgV29ya3MiIHNoYWxsIG1lYW4gYW55IHdvcmssIHdoZXRoZXIgaW4gU291cmNlIG9yIE9iamVjdAorICAgICAgZm9ybSwgdGhhdCBpcyBiYXNlZCBvbiAob3IgZGVyaXZlZCBmcm9tKSB0aGUgV29yayBhbmQgZm9yIHdoaWNoIHRoZQorICAgICAgZWRpdG9yaWFsIHJldmlzaW9ucywgYW5ub3RhdGlvbnMsIGVsYWJvcmF0aW9ucywgb3Igb3RoZXIgbW9kaWZpY2F0aW9ucworICAgICAgcmVwcmVzZW50LCBhcyBhIHdob2xlLCBhbiBvcmlnaW5hbCB3b3JrIG9mIGF1dGhvcnNoaXAuIEZvciB0aGUgcHVycG9zZXMKKyAgICAgIG9mIHRoaXMgTGljZW5zZSwgRGVyaXZhdGl2ZSBXb3JrcyBzaGFsbCBub3QgaW5jbHVkZSB3b3JrcyB0aGF0IHJlbWFpbgorICAgICAgc2VwYXJhYmxlIGZyb20sIG9yIG1lcmVseSBsaW5rIChvciBiaW5kIGJ5IG5hbWUpIHRvIHRoZSBpbnRlcmZhY2VzIG9mLAorICAgICAgdGhlIFdvcmsgYW5kIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZi4KKworICAgICAgIkNvbnRyaWJ1dGlvbiIgc2hhbGwgbWVhbiBhbnkgd29yayBvZiBhdXRob3JzaGlwLCBpbmNsdWRpbmcKKyAgICAgIHRoZSBvcmlnaW5hbCB2ZXJzaW9uIG9mIHRoZSBXb3JrIGFuZCBhbnkgbW9kaWZpY2F0aW9ucyBvciBhZGRpdGlvbnMKKyAgICAgIHRvIHRoYXQgV29yayBvciBEZXJpdmF0aXZlIFdvcmtzIHRoZXJlb2YsIHRoYXQgaXMgaW50ZW50aW9uYWxseQorICAgICAgc3VibWl0dGVkIHRvIExpY2Vuc29yIGZvciBpbmNsdXNpb24gaW4gdGhlIFdvcmsgYnkgdGhlIGNvcHlyaWdodCBvd25lcgorICAgICAgb3IgYnkgYW4gaW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkgYXV0aG9yaXplZCB0byBzdWJtaXQgb24gYmVoYWxmIG9mCisgICAgICB0aGUgY29weXJpZ2h0IG93bmVyLiBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwgInN1Ym1pdHRlZCIKKyAgICAgIG1lYW5zIGFueSBmb3JtIG9mIGVsZWN0cm9uaWMsIHZlcmJhbCwgb3Igd3JpdHRlbiBjb21tdW5pY2F0aW9uIHNlbnQKKyAgICAgIHRvIHRoZSBMaWNlbnNvciBvciBpdHMgcmVwcmVzZW50YXRpdmVzLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvCisgICAgICBjb21tdW5pY2F0aW9uIG9uIGVsZWN0cm9uaWMgbWFpbGluZyBsaXN0cywgc291cmNlIGNvZGUgY29udHJvbCBzeXN0ZW1zLAorICAgICAgYW5kIGlzc3VlIHRyYWNraW5nIHN5c3RlbXMgdGhhdCBhcmUgbWFuYWdlZCBieSwgb3Igb24gYmVoYWxmIG9mLCB0aGUKKyAgICAgIExpY2Vuc29yIGZvciB0aGUgcHVycG9zZSBvZiBkaXNjdXNzaW5nIGFuZCBpbXByb3ZpbmcgdGhlIFdvcmssIGJ1dAorICAgICAgZXhjbHVkaW5nIGNvbW11bmljYXRpb24gdGhhdCBpcyBjb25zcGljdW91c2x5IG1hcmtlZCBvciBvdGhlcndpc2UKKyAgICAgIGRlc2lnbmF0ZWQgaW4gd3JpdGluZyBieSB0aGUgY29weXJpZ2h0IG93bmVyIGFzICJOb3QgYSBDb250cmlidXRpb24uIgorCisgICAgICAiQ29udHJpYnV0b3IiIHNoYWxsIG1lYW4gTGljZW5zb3IgYW5kIGFueSBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eQorICAgICAgb24gYmVoYWxmIG9mIHdob20gYSBDb250cmlidXRpb24gaGFzIGJlZW4gcmVjZWl2ZWQgYnkgTGljZW5zb3IgYW5kCisgICAgICBzdWJzZXF1ZW50bHkgaW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yay4KKworICAgMi4gR3JhbnQgb2YgQ29weXJpZ2h0IExpY2Vuc2UuIFN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mCisgICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCisgICAgICB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwgcm95YWx0eS1mcmVlLCBpcnJldm9jYWJsZQorICAgICAgY29weXJpZ2h0IGxpY2Vuc2UgdG8gcmVwcm9kdWNlLCBwcmVwYXJlIERlcml2YXRpdmUgV29ya3Mgb2YsCisgICAgICBwdWJsaWNseSBkaXNwbGF5LCBwdWJsaWNseSBwZXJmb3JtLCBzdWJsaWNlbnNlLCBhbmQgZGlzdHJpYnV0ZSB0aGUKKyAgICAgIFdvcmsgYW5kIHN1Y2ggRGVyaXZhdGl2ZSBXb3JrcyBpbiBTb3VyY2Ugb3IgT2JqZWN0IGZvcm0uCisKKyAgIDMuIEdyYW50IG9mIFBhdGVudCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgorICAgICAgdGhpcyBMaWNlbnNlLCBlYWNoIENvbnRyaWJ1dG9yIGhlcmVieSBncmFudHMgdG8gWW91IGEgcGVycGV0dWFsLAorICAgICAgd29ybGR3aWRlLCBub24tZXhjbHVzaXZlLCBuby1jaGFyZ2UsIHJveWFsdHktZnJlZSwgaXJyZXZvY2FibGUKKyAgICAgIChleGNlcHQgYXMgc3RhdGVkIGluIHRoaXMgc2VjdGlvbikgcGF0ZW50IGxpY2Vuc2UgdG8gbWFrZSwgaGF2ZSBtYWRlLAorICAgICAgdXNlLCBvZmZlciB0byBzZWxsLCBzZWxsLCBpbXBvcnQsIGFuZCBvdGhlcndpc2UgdHJhbnNmZXIgdGhlIFdvcmssCisgICAgICB3aGVyZSBzdWNoIGxpY2Vuc2UgYXBwbGllcyBvbmx5IHRvIHRob3NlIHBhdGVudCBjbGFpbXMgbGljZW5zYWJsZQorICAgICAgYnkgc3VjaCBDb250cmlidXRvciB0aGF0IGFyZSBuZWNlc3NhcmlseSBpbmZyaW5nZWQgYnkgdGhlaXIKKyAgICAgIENvbnRyaWJ1dGlvbihzKSBhbG9uZSBvciBieSBjb21iaW5hdGlvbiBvZiB0aGVpciBDb250cmlidXRpb24ocykKKyAgICAgIHdpdGggdGhlIFdvcmsgdG8gd2hpY2ggc3VjaCBDb250cmlidXRpb24ocykgd2FzIHN1Ym1pdHRlZC4gSWYgWW91CisgICAgICBpbnN0aXR1dGUgcGF0ZW50IGxpdGlnYXRpb24gYWdhaW5zdCBhbnkgZW50aXR5IChpbmNsdWRpbmcgYQorICAgICAgY3Jvc3MtY2xhaW0gb3IgY291bnRlcmNsYWltIGluIGEgbGF3c3VpdCkgYWxsZWdpbmcgdGhhdCB0aGUgV29yaworICAgICAgb3IgYSBDb250cmlidXRpb24gaW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yayBjb25zdGl0dXRlcyBkaXJlY3QKKyAgICAgIG9yIGNvbnRyaWJ1dG9yeSBwYXRlbnQgaW5mcmluZ2VtZW50LCB0aGVuIGFueSBwYXRlbnQgbGljZW5zZXMKKyAgICAgIGdyYW50ZWQgdG8gWW91IHVuZGVyIHRoaXMgTGljZW5zZSBmb3IgdGhhdCBXb3JrIHNoYWxsIHRlcm1pbmF0ZQorICAgICAgYXMgb2YgdGhlIGRhdGUgc3VjaCBsaXRpZ2F0aW9uIGlzIGZpbGVkLgorCisgICA0LiBSZWRpc3RyaWJ1dGlvbi4gWW91IG1heSByZXByb2R1Y2UgYW5kIGRpc3RyaWJ1dGUgY29waWVzIG9mIHRoZQorICAgICAgV29yayBvciBEZXJpdmF0aXZlIFdvcmtzIHRoZXJlb2YgaW4gYW55IG1lZGl1bSwgd2l0aCBvciB3aXRob3V0CisgICAgICBtb2RpZmljYXRpb25zLCBhbmQgaW4gU291cmNlIG9yIE9iamVjdCBmb3JtLCBwcm92aWRlZCB0aGF0IFlvdQorICAgICAgbWVldCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKKyAgICAgIChhKSBZb3UgbXVzdCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBXb3JrIG9yCisgICAgICAgICAgRGVyaXZhdGl2ZSBXb3JrcyBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlOyBhbmQKKworICAgICAgKGIpIFlvdSBtdXN0IGNhdXNlIGFueSBtb2RpZmllZCBmaWxlcyB0byBjYXJyeSBwcm9taW5lbnQgbm90aWNlcworICAgICAgICAgIHN0YXRpbmcgdGhhdCBZb3UgY2hhbmdlZCB0aGUgZmlsZXM7IGFuZAorCisgICAgICAoYykgWW91IG11c3QgcmV0YWluLCBpbiB0aGUgU291cmNlIGZvcm0gb2YgYW55IERlcml2YXRpdmUgV29ya3MKKyAgICAgICAgICB0aGF0IFlvdSBkaXN0cmlidXRlLCBhbGwgY29weXJpZ2h0LCBwYXRlbnQsIHRyYWRlbWFyaywgYW5kCisgICAgICAgICAgYXR0cmlidXRpb24gbm90aWNlcyBmcm9tIHRoZSBTb3VyY2UgZm9ybSBvZiB0aGUgV29yaywKKyAgICAgICAgICBleGNsdWRpbmcgdGhvc2Ugbm90aWNlcyB0aGF0IGRvIG5vdCBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mCisgICAgICAgICAgdGhlIERlcml2YXRpdmUgV29ya3M7IGFuZAorCisgICAgICAoZCkgSWYgdGhlIFdvcmsgaW5jbHVkZXMgYSAiTk9USUNFIiB0ZXh0IGZpbGUgYXMgcGFydCBvZiBpdHMKKyAgICAgICAgICBkaXN0cmlidXRpb24sIHRoZW4gYW55IERlcml2YXRpdmUgV29ya3MgdGhhdCBZb3UgZGlzdHJpYnV0ZSBtdXN0CisgICAgICAgICAgaW5jbHVkZSBhIHJlYWRhYmxlIGNvcHkgb2YgdGhlIGF0dHJpYnV0aW9uIG5vdGljZXMgY29udGFpbmVkCisgICAgICAgICAgd2l0aGluIHN1Y2ggTk9USUNFIGZpbGUsIGV4Y2x1ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8gbm90CisgICAgICAgICAgcGVydGFpbiB0byBhbnkgcGFydCBvZiB0aGUgRGVyaXZhdGl2ZSBXb3JrcywgaW4gYXQgbGVhc3Qgb25lCisgICAgICAgICAgb2YgdGhlIGZvbGxvd2luZyBwbGFjZXM6IHdpdGhpbiBhIE5PVElDRSB0ZXh0IGZpbGUgZGlzdHJpYnV0ZWQKKyAgICAgICAgICBhcyBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyB3aXRoaW4gdGhlIFNvdXJjZSBmb3JtIG9yCisgICAgICAgICAgZG9jdW1lbnRhdGlvbiwgaWYgcHJvdmlkZWQgYWxvbmcgd2l0aCB0aGUgRGVyaXZhdGl2ZSBXb3Jrczsgb3IsCisgICAgICAgICAgd2l0aGluIGEgZGlzcGxheSBnZW5lcmF0ZWQgYnkgdGhlIERlcml2YXRpdmUgV29ya3MsIGlmIGFuZAorICAgICAgICAgIHdoZXJldmVyIHN1Y2ggdGhpcmQtcGFydHkgbm90aWNlcyBub3JtYWxseSBhcHBlYXIuIFRoZSBjb250ZW50cworICAgICAgICAgIG9mIHRoZSBOT1RJQ0UgZmlsZSBhcmUgZm9yIGluZm9ybWF0aW9uYWwgcHVycG9zZXMgb25seSBhbmQKKyAgICAgICAgICBkbyBub3QgbW9kaWZ5IHRoZSBMaWNlbnNlLiBZb3UgbWF5IGFkZCBZb3VyIG93biBhdHRyaWJ1dGlvbgorICAgICAgICAgIG5vdGljZXMgd2l0aGluIERlcml2YXRpdmUgV29ya3MgdGhhdCBZb3UgZGlzdHJpYnV0ZSwgYWxvbmdzaWRlCisgICAgICAgICAgb3IgYXMgYW4gYWRkZW5kdW0gdG8gdGhlIE5PVElDRSB0ZXh0IGZyb20gdGhlIFdvcmssIHByb3ZpZGVkCisgICAgICAgICAgdGhhdCBzdWNoIGFkZGl0aW9uYWwgYXR0cmlidXRpb24gbm90aWNlcyBjYW5ub3QgYmUgY29uc3RydWVkCisgICAgICAgICAgYXMgbW9kaWZ5aW5nIHRoZSBMaWNlbnNlLgorCisgICAgICBZb3UgbWF5IGFkZCBZb3VyIG93biBjb3B5cmlnaHQgc3RhdGVtZW50IHRvIFlvdXIgbW9kaWZpY2F0aW9ucyBhbmQKKyAgICAgIG1heSBwcm92aWRlIGFkZGl0aW9uYWwgb3IgZGlmZmVyZW50IGxpY2Vuc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMKKyAgICAgIGZvciB1c2UsIHJlcHJvZHVjdGlvbiwgb3IgZGlzdHJpYnV0aW9uIG9mIFlvdXIgbW9kaWZpY2F0aW9ucywgb3IKKyAgICAgIGZvciBhbnkgc3VjaCBEZXJpdmF0aXZlIFdvcmtzIGFzIGEgd2hvbGUsIHByb3ZpZGVkIFlvdXIgdXNlLAorICAgICAgcmVwcm9kdWN0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoZSBXb3JrIG90aGVyd2lzZSBjb21wbGllcyB3aXRoCisgICAgICB0aGUgY29uZGl0aW9ucyBzdGF0ZWQgaW4gdGhpcyBMaWNlbnNlLgorCisgICA1LiBTdWJtaXNzaW9uIG9mIENvbnRyaWJ1dGlvbnMuIFVubGVzcyBZb3UgZXhwbGljaXRseSBzdGF0ZSBvdGhlcndpc2UsCisgICAgICBhbnkgQ29udHJpYnV0aW9uIGludGVudGlvbmFsbHkgc3VibWl0dGVkIGZvciBpbmNsdXNpb24gaW4gdGhlIFdvcmsKKyAgICAgIGJ5IFlvdSB0byB0aGUgTGljZW5zb3Igc2hhbGwgYmUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mCisgICAgICB0aGlzIExpY2Vuc2UsIHdpdGhvdXQgYW55IGFkZGl0aW9uYWwgdGVybXMgb3IgY29uZGl0aW9ucy4KKyAgICAgIE5vdHdpdGhzdGFuZGluZyB0aGUgYWJvdmUsIG5vdGhpbmcgaGVyZWluIHNoYWxsIHN1cGVyc2VkZSBvciBtb2RpZnkKKyAgICAgIHRoZSB0ZXJtcyBvZiBhbnkgc2VwYXJhdGUgbGljZW5zZSBhZ3JlZW1lbnQgeW91IG1heSBoYXZlIGV4ZWN1dGVkCisgICAgICB3aXRoIExpY2Vuc29yIHJlZ2FyZGluZyBzdWNoIENvbnRyaWJ1dGlvbnMuCisKKyAgIDYuIFRyYWRlbWFya3MuIFRoaXMgTGljZW5zZSBkb2VzIG5vdCBncmFudCBwZXJtaXNzaW9uIHRvIHVzZSB0aGUgdHJhZGUKKyAgICAgIG5hbWVzLCB0cmFkZW1hcmtzLCBzZXJ2aWNlIG1hcmtzLCBvciBwcm9kdWN0IG5hbWVzIG9mIHRoZSBMaWNlbnNvciwKKyAgICAgIGV4Y2VwdCBhcyByZXF1aXJlZCBmb3IgcmVhc29uYWJsZSBhbmQgY3VzdG9tYXJ5IHVzZSBpbiBkZXNjcmliaW5nIHRoZQorICAgICAgb3JpZ2luIG9mIHRoZSBXb3JrIGFuZCByZXByb2R1Y2luZyB0aGUgY29udGVudCBvZiB0aGUgTk9USUNFIGZpbGUuCisKKyAgIDcuIERpc2NsYWltZXIgb2YgV2FycmFudHkuIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvcgorICAgICAgYWdyZWVkIHRvIGluIHdyaXRpbmcsIExpY2Vuc29yIHByb3ZpZGVzIHRoZSBXb3JrIChhbmQgZWFjaAorICAgICAgQ29udHJpYnV0b3IgcHJvdmlkZXMgaXRzIENvbnRyaWJ1dGlvbnMpIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IKKyAgICAgIGltcGxpZWQsIGluY2x1ZGluZywgd2l0aG91dCBsaW1pdGF0aW9uLCBhbnkgd2FycmFudGllcyBvciBjb25kaXRpb25zCisgICAgICBvZiBUSVRMRSwgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZLCBvciBGSVRORVNTIEZPUiBBCisgICAgICBQQVJUSUNVTEFSIFBVUlBPU0UuIFlvdSBhcmUgc29sZWx5IHJlc3BvbnNpYmxlIGZvciBkZXRlcm1pbmluZyB0aGUKKyAgICAgIGFwcHJvcHJpYXRlbmVzcyBvZiB1c2luZyBvciByZWRpc3RyaWJ1dGluZyB0aGUgV29yayBhbmQgYXNzdW1lIGFueQorICAgICAgcmlza3MgYXNzb2NpYXRlZCB3aXRoIFlvdXIgZXhlcmNpc2Ugb2YgcGVybWlzc2lvbnMgdW5kZXIgdGhpcyBMaWNlbnNlLgorCisgICA4LiBMaW1pdGF0aW9uIG9mIExpYWJpbGl0eS4gSW4gbm8gZXZlbnQgYW5kIHVuZGVyIG5vIGxlZ2FsIHRoZW9yeSwKKyAgICAgIHdoZXRoZXIgaW4gdG9ydCAoaW5jbHVkaW5nIG5lZ2xpZ2VuY2UpLCBjb250cmFjdCwgb3Igb3RoZXJ3aXNlLAorICAgICAgdW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IChzdWNoIGFzIGRlbGliZXJhdGUgYW5kIGdyb3NzbHkKKyAgICAgIG5lZ2xpZ2VudCBhY3RzKSBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc2hhbGwgYW55IENvbnRyaWJ1dG9yIGJlCisgICAgICBsaWFibGUgdG8gWW91IGZvciBkYW1hZ2VzLCBpbmNsdWRpbmcgYW55IGRpcmVjdCwgaW5kaXJlY3QsIHNwZWNpYWwsCisgICAgICBpbmNpZGVudGFsLCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb2YgYW55IGNoYXJhY3RlciBhcmlzaW5nIGFzIGEKKyAgICAgIHJlc3VsdCBvZiB0aGlzIExpY2Vuc2Ugb3Igb3V0IG9mIHRoZSB1c2Ugb3IgaW5hYmlsaXR5IHRvIHVzZSB0aGUKKyAgICAgIFdvcmsgKGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gZGFtYWdlcyBmb3IgbG9zcyBvZiBnb29kd2lsbCwKKyAgICAgIHdvcmsgc3RvcHBhZ2UsIGNvbXB1dGVyIGZhaWx1cmUgb3IgbWFsZnVuY3Rpb24sIG9yIGFueSBhbmQgYWxsCisgICAgICBvdGhlciBjb21tZXJjaWFsIGRhbWFnZXMgb3IgbG9zc2VzKSwgZXZlbiBpZiBzdWNoIENvbnRyaWJ1dG9yCisgICAgICBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiBzdWNoIGRhbWFnZXMuCisKKyAgIDkuIEFjY2VwdGluZyBXYXJyYW50eSBvciBBZGRpdGlvbmFsIExpYWJpbGl0eS4gV2hpbGUgcmVkaXN0cmlidXRpbmcKKyAgICAgIHRoZSBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgWW91IG1heSBjaG9vc2UgdG8gb2ZmZXIsCisgICAgICBhbmQgY2hhcmdlIGEgZmVlIGZvciwgYWNjZXB0YW5jZSBvZiBzdXBwb3J0LCB3YXJyYW50eSwgaW5kZW1uaXR5LAorICAgICAgb3Igb3RoZXIgbGlhYmlsaXR5IG9ibGlnYXRpb25zIGFuZC9vciByaWdodHMgY29uc2lzdGVudCB3aXRoIHRoaXMKKyAgICAgIExpY2Vuc2UuIEhvd2V2ZXIsIGluIGFjY2VwdGluZyBzdWNoIG9ibGlnYXRpb25zLCBZb3UgbWF5IGFjdCBvbmx5CisgICAgICBvbiBZb3VyIG93biBiZWhhbGYgYW5kIG9uIFlvdXIgc29sZSByZXNwb25zaWJpbGl0eSwgbm90IG9uIGJlaGFsZgorICAgICAgb2YgYW55IG90aGVyIENvbnRyaWJ1dG9yLCBhbmQgb25seSBpZiBZb3UgYWdyZWUgdG8gaW5kZW1uaWZ5LAorICAgICAgZGVmZW5kLCBhbmQgaG9sZCBlYWNoIENvbnRyaWJ1dG9yIGhhcm1sZXNzIGZvciBhbnkgbGlhYmlsaXR5CisgICAgICBpbmN1cnJlZCBieSwgb3IgY2xhaW1zIGFzc2VydGVkIGFnYWluc3QsIHN1Y2ggQ29udHJpYnV0b3IgYnkgcmVhc29uCisgICAgICBvZiB5b3VyIGFjY2VwdGluZyBhbnkgc3VjaCB3YXJyYW50eSBvciBhZGRpdGlvbmFsIGxpYWJpbGl0eS4KKworICAgRU5EIE9GIFRFUk1TIEFORCBDT05ESVRJT05TCisKKyAgIEFQUEVORElYOiBIb3cgdG8gYXBwbHkgdGhlIEFwYWNoZSBMaWNlbnNlIHRvIHlvdXIgd29yay4KKworICAgICAgVG8gYXBwbHkgdGhlIEFwYWNoZSBMaWNlbnNlIHRvIHlvdXIgd29yaywgYXR0YWNoIHRoZSBmb2xsb3dpbmcKKyAgICAgIGJvaWxlcnBsYXRlIG5vdGljZSwgd2l0aCB0aGUgZmllbGRzIGVuY2xvc2VkIGJ5IGJyYWNrZXRzICJbXSIKKyAgICAgIHJlcGxhY2VkIHdpdGggeW91ciBvd24gaWRlbnRpZnlpbmcgaW5mb3JtYXRpb24uIChEb24ndCBpbmNsdWRlCisgICAgICB0aGUgYnJhY2tldHMhKSAgVGhlIHRleHQgc2hvdWxkIGJlIGVuY2xvc2VkIGluIHRoZSBhcHByb3ByaWF0ZQorICAgICAgY29tbWVudCBzeW50YXggZm9yIHRoZSBmaWxlIGZvcm1hdC4gV2UgYWxzbyByZWNvbW1lbmQgdGhhdCBhCisgICAgICBmaWxlIG9yIGNsYXNzIG5hbWUgYW5kIGRlc2NyaXB0aW9uIG9mIHB1cnBvc2UgYmUgaW5jbHVkZWQgb24gdGhlCisgICAgICBzYW1lICJwcmludGVkIHBhZ2UiIGFzIHRoZSBjb3B5cmlnaHQgbm90aWNlIGZvciBlYXNpZXIKKyAgICAgIGlkZW50aWZpY2F0aW9uIHdpdGhpbiB0aGlyZC1wYXJ0eSBhcmNoaXZlcy4KKworICAgQ29weXJpZ2h0IFt5eXl5XSBbbmFtZSBvZiBjb3B5cmlnaHQgb3duZXJdCisKKyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCmRpZmYgLS1naXQgYS9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9hYm91dF9maWxlcy9hc20udHh0IGIvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvYWJvdXRfZmlsZXMvYXNtLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNWFiYTdiCi0tLSAvZGV2L251bGwKKysrIGIvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvYWJvdXRfZmlsZXMvYXNtLnR4dApAQCAtMCwwICsxLDI5IEBACitDb3B5cmlnaHQgKGMpIDIwMDAtMjAxMSBJTlJJQSwgRnJhbmNlIFRlbGVjb20KK0FsbCByaWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCithcmUgbWV0OgorCisxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorCisyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKworMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlcnMgbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKK0FORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKK0lNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCitBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUKK0xJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKK0NPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCitTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKK0lOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCitDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgpkaWZmIC0tZ2l0IGEvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvYWJvdXRfZmlsZXMvY2RkbC0xMC50eHQgYi9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9hYm91dF9maWxlcy9jZGRsLTEwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzA5MDU1Ci0tLSAvZGV2L251bGwKKysrIGIvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvYWJvdXRfZmlsZXMvY2RkbC0xMC50eHQKQEAgLTAsMCArMSwzODAgQEAKK0NPTU1PTiBERVZFTE9QTUVOVCBBTkQgRElTVFJJQlVUSU9OIExJQ0VOU0UgKENEREwpIFZlcnNpb24gMS4wCisKKzEuIERlZmluaXRpb25zLgorCisxLjEuICJDb250cmlidXRvciIgbWVhbnMgZWFjaCBpbmRpdmlkdWFsIG9yIGVudGl0eSB0aGF0CitjcmVhdGVzIG9yIGNvbnRyaWJ1dGVzIHRvIHRoZSBjcmVhdGlvbiBvZiBNb2RpZmljYXRpb25zLgorCisxLjIuICJDb250cmlidXRvciBWZXJzaW9uIiBtZWFucyB0aGUgY29tYmluYXRpb24gb2YgdGhlCitPcmlnaW5hbCBTb2Z0d2FyZSwgcHJpb3IgTW9kaWZpY2F0aW9ucyB1c2VkIGJ5IGEKK0NvbnRyaWJ1dG9yIChpZiBhbnkpLCBhbmQgdGhlIE1vZGlmaWNhdGlvbnMgbWFkZSBieSB0aGF0CitwYXJ0aWN1bGFyIENvbnRyaWJ1dG9yLgorCisxLjMuICJDb3ZlcmVkIFNvZnR3YXJlIiBtZWFucyAoYSkgdGhlIE9yaWdpbmFsIFNvZnR3YXJlLCBvcgorKGIpIE1vZGlmaWNhdGlvbnMsIG9yIChjKSB0aGUgY29tYmluYXRpb24gb2YgZmlsZXMKK2NvbnRhaW5pbmcgT3JpZ2luYWwgU29mdHdhcmUgd2l0aCBmaWxlcyBjb250YWluaW5nCitNb2RpZmljYXRpb25zLCBpbiBlYWNoIGNhc2UgaW5jbHVkaW5nIHBvcnRpb25zIHRoZXJlb2YuCisKKzEuNC4gIkV4ZWN1dGFibGUiIG1lYW5zIHRoZSBDb3ZlcmVkIFNvZnR3YXJlIGluIGFueSBmb3JtCitvdGhlciB0aGFuIFNvdXJjZSBDb2RlLgorCisxLjUuICJJbml0aWFsIERldmVsb3BlciIgbWVhbnMgdGhlIGluZGl2aWR1YWwgb3IgZW50aXR5Cit0aGF0IGZpcnN0IG1ha2VzIE9yaWdpbmFsIFNvZnR3YXJlIGF2YWlsYWJsZSB1bmRlciB0aGlzCitMaWNlbnNlLgorCisxLjYuICJMYXJnZXIgV29yayIgbWVhbnMgYSB3b3JrIHdoaWNoIGNvbWJpbmVzIENvdmVyZWQKK1NvZnR3YXJlIG9yIHBvcnRpb25zIHRoZXJlb2Ygd2l0aCBjb2RlIG5vdCBnb3Zlcm5lZCBieSB0aGUKK3Rlcm1zIG9mIHRoaXMgTGljZW5zZS4KKworMS43LiAiTGljZW5zZSIgbWVhbnMgdGhpcyBkb2N1bWVudC4KKworMS44LiAiTGljZW5zYWJsZSIgbWVhbnMgaGF2aW5nIHRoZSByaWdodCB0byBncmFudCwgdG8gdGhlCittYXhpbXVtIGV4dGVudCBwb3NzaWJsZSwgd2hldGhlciBhdCB0aGUgdGltZSBvZiB0aGUgaW5pdGlhbAorZ3JhbnQgb3Igc3Vic2VxdWVudGx5IGFjcXVpcmVkLCBhbnkgYW5kIGFsbCBvZiB0aGUgcmlnaHRzCitjb252ZXllZCBoZXJlaW4uCisKKzEuOS4gIk1vZGlmaWNhdGlvbnMiIG1lYW5zIHRoZSBTb3VyY2UgQ29kZSBhbmQgRXhlY3V0YWJsZQorZm9ybSBvZiBhbnkgb2YgdGhlIGZvbGxvd2luZzoKKworQS4gQW55IGZpbGUgdGhhdCByZXN1bHRzIGZyb20gYW4gYWRkaXRpb24gdG8sCitkZWxldGlvbiBmcm9tIG9yIG1vZGlmaWNhdGlvbiBvZiB0aGUgY29udGVudHMgb2YgYQorZmlsZSBjb250YWluaW5nIE9yaWdpbmFsIFNvZnR3YXJlIG9yIHByZXZpb3VzCitNb2RpZmljYXRpb25zOworCitCLiBBbnkgbmV3IGZpbGUgdGhhdCBjb250YWlucyBhbnkgcGFydCBvZiB0aGUKK09yaWdpbmFsIFNvZnR3YXJlIG9yIHByZXZpb3VzIE1vZGlmaWNhdGlvbjsgb3IKKworQy4gQW55IG5ldyBmaWxlIHRoYXQgaXMgY29udHJpYnV0ZWQgb3Igb3RoZXJ3aXNlIG1hZGUKK2F2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLgorCisxLjEwLiAiT3JpZ2luYWwgU29mdHdhcmUiIG1lYW5zIHRoZSBTb3VyY2UgQ29kZSBhbmQKK0V4ZWN1dGFibGUgZm9ybSBvZiBjb21wdXRlciBzb2Z0d2FyZSBjb2RlIHRoYXQgaXMKK29yaWdpbmFsbHkgcmVsZWFzZWQgdW5kZXIgdGhpcyBMaWNlbnNlLgorCisxLjExLiAiUGF0ZW50IENsYWltcyIgbWVhbnMgYW55IHBhdGVudCBjbGFpbShzKSwgbm93IG93bmVkCitvciBoZXJlYWZ0ZXIgYWNxdWlyZWQsIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24sCittZXRob2QsIHByb2Nlc3MsIGFuZCBhcHBhcmF0dXMgY2xhaW1zLCBpbiBhbnkgcGF0ZW50CitMaWNlbnNhYmxlIGJ5IGdyYW50b3IuCisKKzEuMTIuICJTb3VyY2UgQ29kZSIgbWVhbnMgKGEpIHRoZSBjb21tb24gZm9ybSBvZiBjb21wdXRlcgorc29mdHdhcmUgY29kZSBpbiB3aGljaCBtb2RpZmljYXRpb25zIGFyZSBtYWRlIGFuZCAoYikKK2Fzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBpbmNsdWRlZCBpbiBvciB3aXRoIHN1Y2ggY29kZS4KKworMS4xMy4gIllvdSIgKG9yICJZb3VyIikgbWVhbnMgYW4gaW5kaXZpZHVhbCBvciBhIGxlZ2FsCitlbnRpdHkgZXhlcmNpc2luZyByaWdodHMgdW5kZXIsIGFuZCBjb21wbHlpbmcgd2l0aCBhbGwgb2YKK3RoZSB0ZXJtcyBvZiwgdGhpcyBMaWNlbnNlLiBGb3IgbGVnYWwgZW50aXRpZXMsICJZb3UiCitpbmNsdWRlcyBhbnkgZW50aXR5IHdoaWNoIGNvbnRyb2xzLCBpcyBjb250cm9sbGVkIGJ5LCBvciBpcwordW5kZXIgY29tbW9uIGNvbnRyb2wgd2l0aCBZb3UuIEZvciBwdXJwb3NlcyBvZiB0aGlzCitkZWZpbml0aW9uLCAiY29udHJvbCIgbWVhbnMgKGEpIHRoZSBwb3dlciwgZGlyZWN0IG9yCitpbmRpcmVjdCwgdG8gY2F1c2UgdGhlIGRpcmVjdGlvbiBvciBtYW5hZ2VtZW50IG9mIHN1Y2gKK2VudGl0eSwgd2hldGhlciBieSBjb250cmFjdCBvciBvdGhlcndpc2UsIG9yIChiKSBvd25lcnNoaXAKK29mIG1vcmUgdGhhbiBmaWZ0eSBwZXJjZW50ICg1MCUpIG9mIHRoZSBvdXRzdGFuZGluZyBzaGFyZXMKK29yIGJlbmVmaWNpYWwgb3duZXJzaGlwIG9mIHN1Y2ggZW50aXR5LgorCisyLiBMaWNlbnNlIEdyYW50cy4KKworMi4xLiBUaGUgSW5pdGlhbCBEZXZlbG9wZXIgR3JhbnQuCisKK0NvbmRpdGlvbmVkIHVwb24gWW91ciBjb21wbGlhbmNlIHdpdGggU2VjdGlvbiAzLjEgYmVsb3cgYW5kCitzdWJqZWN0IHRvIHRoaXJkIHBhcnR5IGludGVsbGVjdHVhbCBwcm9wZXJ0eSBjbGFpbXMsIHRoZQorSW5pdGlhbCBEZXZlbG9wZXIgaGVyZWJ5IGdyYW50cyBZb3UgYSB3b3JsZC13aWRlLAorcm95YWx0eS1mcmVlLCBub24tZXhjbHVzaXZlIGxpY2Vuc2U6CisKKyhhKSB1bmRlciBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIChvdGhlciB0aGFuCitwYXRlbnQgb3IgdHJhZGVtYXJrKSBMaWNlbnNhYmxlIGJ5IEluaXRpYWwgRGV2ZWxvcGVyLAordG8gdXNlLCByZXByb2R1Y2UsIG1vZGlmeSwgZGlzcGxheSwgcGVyZm9ybSwKK3N1YmxpY2Vuc2UgYW5kIGRpc3RyaWJ1dGUgdGhlIE9yaWdpbmFsIFNvZnR3YXJlIChvcgorcG9ydGlvbnMgdGhlcmVvZiksIHdpdGggb3Igd2l0aG91dCBNb2RpZmljYXRpb25zLAorYW5kL29yIGFzIHBhcnQgb2YgYSBMYXJnZXIgV29yazsgYW5kCisKKyhiKSB1bmRlciBQYXRlbnQgQ2xhaW1zIGluZnJpbmdlZCBieSB0aGUgbWFraW5nLAordXNpbmcgb3Igc2VsbGluZyBvZiBPcmlnaW5hbCBTb2Z0d2FyZSwgdG8gbWFrZSwgaGF2ZQorbWFkZSwgdXNlLCBwcmFjdGljZSwgc2VsbCwgYW5kIG9mZmVyIGZvciBzYWxlLCBhbmQvb3IKK290aGVyd2lzZSBkaXNwb3NlIG9mIHRoZSBPcmlnaW5hbCBTb2Z0d2FyZSAob3IKK3BvcnRpb25zIHRoZXJlb2YpLgorCisoYykgVGhlIGxpY2Vuc2VzIGdyYW50ZWQgaW4gU2VjdGlvbnMgMi4xKGEpIGFuZCAoYikKK2FyZSBlZmZlY3RpdmUgb24gdGhlIGRhdGUgSW5pdGlhbCBEZXZlbG9wZXIgZmlyc3QKK2Rpc3RyaWJ1dGVzIG9yIG90aGVyd2lzZSBtYWtlcyB0aGUgT3JpZ2luYWwgU29mdHdhcmUKK2F2YWlsYWJsZSB0byBhIHRoaXJkIHBhcnR5IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzCitMaWNlbnNlLgorCisoZCkgTm90d2l0aHN0YW5kaW5nIFNlY3Rpb24gMi4xKGIpIGFib3ZlLCBubyBwYXRlbnQKK2xpY2Vuc2UgaXMgZ3JhbnRlZDogKDEpIGZvciBjb2RlIHRoYXQgWW91IGRlbGV0ZSBmcm9tCit0aGUgT3JpZ2luYWwgU29mdHdhcmUsIG9yICgyKSBmb3IgaW5mcmluZ2VtZW50cworY2F1c2VkIGJ5OiAoaSkgdGhlIG1vZGlmaWNhdGlvbiBvZiB0aGUgT3JpZ2luYWwKK1NvZnR3YXJlLCBvciAoaWkpIHRoZSBjb21iaW5hdGlvbiBvZiB0aGUgT3JpZ2luYWwKK1NvZnR3YXJlIHdpdGggb3RoZXIgc29mdHdhcmUgb3IgZGV2aWNlcy4KKworMi4yLiBDb250cmlidXRvciBHcmFudC4KKworQ29uZGl0aW9uZWQgdXBvbiBZb3VyIGNvbXBsaWFuY2Ugd2l0aCBTZWN0aW9uIDMuMSBiZWxvdyBhbmQKK3N1YmplY3QgdG8gdGhpcmQgcGFydHkgaW50ZWxsZWN0dWFsIHByb3BlcnR5IGNsYWltcywgZWFjaAorQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyBZb3UgYSB3b3JsZC13aWRlLCByb3lhbHR5LWZyZWUsCitub24tZXhjbHVzaXZlIGxpY2Vuc2U6CisKKyhhKSB1bmRlciBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIChvdGhlciB0aGFuCitwYXRlbnQgb3IgdHJhZGVtYXJrKSBMaWNlbnNhYmxlIGJ5IENvbnRyaWJ1dG9yIHRvCit1c2UsIHJlcHJvZHVjZSwgbW9kaWZ5LCBkaXNwbGF5LCBwZXJmb3JtLCBzdWJsaWNlbnNlCithbmQgZGlzdHJpYnV0ZSB0aGUgTW9kaWZpY2F0aW9ucyBjcmVhdGVkIGJ5IHN1Y2gKK0NvbnRyaWJ1dG9yIChvciBwb3J0aW9ucyB0aGVyZW9mKSwgZWl0aGVyIG9uIGFuCit1bm1vZGlmaWVkIGJhc2lzLCB3aXRoIG90aGVyIE1vZGlmaWNhdGlvbnMsIGFzCitDb3ZlcmVkIFNvZnR3YXJlIGFuZC9vciBhcyBwYXJ0IG9mIGEgTGFyZ2VyIFdvcms7IGFuZAorCisoYikgdW5kZXIgUGF0ZW50IENsYWltcyBpbmZyaW5nZWQgYnkgdGhlIG1ha2luZywKK3VzaW5nLCBvciBzZWxsaW5nIG9mIE1vZGlmaWNhdGlvbnMgbWFkZSBieSB0aGF0CitDb250cmlidXRvciBlaXRoZXIgYWxvbmUgYW5kL29yIGluIGNvbWJpbmF0aW9uIHdpdGgKK2l0cyBDb250cmlidXRvciBWZXJzaW9uIChvciBwb3J0aW9ucyBvZiBzdWNoCitjb21iaW5hdGlvbiksIHRvIG1ha2UsIHVzZSwgc2VsbCwgb2ZmZXIgZm9yIHNhbGUsCitoYXZlIG1hZGUsIGFuZC9vciBvdGhlcndpc2UgZGlzcG9zZSBvZjogKDEpCitNb2RpZmljYXRpb25zIG1hZGUgYnkgdGhhdCBDb250cmlidXRvciAob3IgcG9ydGlvbnMKK3RoZXJlb2YpOyBhbmQgKDIpIHRoZSBjb21iaW5hdGlvbiBvZiBNb2RpZmljYXRpb25zCittYWRlIGJ5IHRoYXQgQ29udHJpYnV0b3Igd2l0aCBpdHMgQ29udHJpYnV0b3IgVmVyc2lvbgorKG9yIHBvcnRpb25zIG9mIHN1Y2ggY29tYmluYXRpb24pLgorCisoYykgVGhlIGxpY2Vuc2VzIGdyYW50ZWQgaW4gU2VjdGlvbnMgMi4yKGEpIGFuZAorMi4yKGIpIGFyZSBlZmZlY3RpdmUgb24gdGhlIGRhdGUgQ29udHJpYnV0b3IgZmlyc3QKK2Rpc3RyaWJ1dGVzIG9yIG90aGVyd2lzZSBtYWtlcyB0aGUgTW9kaWZpY2F0aW9ucworYXZhaWxhYmxlIHRvIGEgdGhpcmQgcGFydHkuCisKKyhkKSBOb3R3aXRoc3RhbmRpbmcgU2VjdGlvbiAyLjIoYikgYWJvdmUsIG5vIHBhdGVudAorbGljZW5zZSBpcyBncmFudGVkOiAoMSkgZm9yIGFueSBjb2RlIHRoYXQgQ29udHJpYnV0b3IKK2hhcyBkZWxldGVkIGZyb20gdGhlIENvbnRyaWJ1dG9yIFZlcnNpb247ICgyKSBmb3IKK2luZnJpbmdlbWVudHMgY2F1c2VkIGJ5OiAoaSkgdGhpcmQgcGFydHkKK21vZGlmaWNhdGlvbnMgb2YgQ29udHJpYnV0b3IgVmVyc2lvbiwgb3IgKGlpKSB0aGUKK2NvbWJpbmF0aW9uIG9mIE1vZGlmaWNhdGlvbnMgbWFkZSBieSB0aGF0IENvbnRyaWJ1dG9yCit3aXRoIG90aGVyIHNvZnR3YXJlIChleGNlcHQgYXMgcGFydCBvZiB0aGUKK0NvbnRyaWJ1dG9yIFZlcnNpb24pIG9yIG90aGVyIGRldmljZXM7IG9yICgzKSB1bmRlcgorUGF0ZW50IENsYWltcyBpbmZyaW5nZWQgYnkgQ292ZXJlZCBTb2Z0d2FyZSBpbiB0aGUKK2Fic2VuY2Ugb2YgTW9kaWZpY2F0aW9ucyBtYWRlIGJ5IHRoYXQgQ29udHJpYnV0b3IuCisKKzMuIERpc3RyaWJ1dGlvbiBPYmxpZ2F0aW9ucy4KKworMy4xLiBBdmFpbGFiaWxpdHkgb2YgU291cmNlIENvZGUuCisKK0FueSBDb3ZlcmVkIFNvZnR3YXJlIHRoYXQgWW91IGRpc3RyaWJ1dGUgb3Igb3RoZXJ3aXNlIG1ha2UKK2F2YWlsYWJsZSBpbiBFeGVjdXRhYmxlIGZvcm0gbXVzdCBhbHNvIGJlIG1hZGUgYXZhaWxhYmxlIGluCitTb3VyY2UgQ29kZSBmb3JtIGFuZCB0aGF0IFNvdXJjZSBDb2RlIGZvcm0gbXVzdCBiZQorZGlzdHJpYnV0ZWQgb25seSB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLiBZb3UgbXVzdAoraW5jbHVkZSBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlIHdpdGggZXZlcnkgY29weSBvZiB0aGUKK1NvdXJjZSBDb2RlIGZvcm0gb2YgdGhlIENvdmVyZWQgU29mdHdhcmUgWW91IGRpc3RyaWJ1dGUgb3IKK290aGVyd2lzZSBtYWtlIGF2YWlsYWJsZS4gWW91IG11c3QgaW5mb3JtIHJlY2lwaWVudHMgb2YgYW55CitzdWNoIENvdmVyZWQgU29mdHdhcmUgaW4gRXhlY3V0YWJsZSBmb3JtIGFzIHRvIGhvdyB0aGV5IGNhbgorb2J0YWluIHN1Y2ggQ292ZXJlZCBTb2Z0d2FyZSBpbiBTb3VyY2UgQ29kZSBmb3JtIGluIGEKK3JlYXNvbmFibGUgbWFubmVyIG9uIG9yIHRocm91Z2ggYSBtZWRpdW0gY3VzdG9tYXJpbHkgdXNlZAorZm9yIHNvZnR3YXJlIGV4Y2hhbmdlLgorCiszLjIuIE1vZGlmaWNhdGlvbnMuCisKK1RoZSBNb2RpZmljYXRpb25zIHRoYXQgWW91IGNyZWF0ZSBvciB0byB3aGljaCBZb3UKK2NvbnRyaWJ1dGUgYXJlIGdvdmVybmVkIGJ5IHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UuIFlvdQorcmVwcmVzZW50IHRoYXQgWW91IGJlbGlldmUgWW91ciBNb2RpZmljYXRpb25zIGFyZSBZb3VyCitvcmlnaW5hbCBjcmVhdGlvbihzKSBhbmQvb3IgWW91IGhhdmUgc3VmZmljaWVudCByaWdodHMgdG8KK2dyYW50IHRoZSByaWdodHMgY29udmV5ZWQgYnkgdGhpcyBMaWNlbnNlLgorCiszLjMuIFJlcXVpcmVkIE5vdGljZXMuCisKK1lvdSBtdXN0IGluY2x1ZGUgYSBub3RpY2UgaW4gZWFjaCBvZiBZb3VyIE1vZGlmaWNhdGlvbnMKK3RoYXQgaWRlbnRpZmllcyBZb3UgYXMgdGhlIENvbnRyaWJ1dG9yIG9mIHRoZSBNb2RpZmljYXRpb24uCitZb3UgbWF5IG5vdCByZW1vdmUgb3IgYWx0ZXIgYW55IGNvcHlyaWdodCwgcGF0ZW50IG9yCit0cmFkZW1hcmsgbm90aWNlcyBjb250YWluZWQgd2l0aGluIHRoZSBDb3ZlcmVkIFNvZnR3YXJlLCBvcgorYW55IG5vdGljZXMgb2YgbGljZW5zaW5nIG9yIGFueSBkZXNjcmlwdGl2ZSB0ZXh0IGdpdmluZworYXR0cmlidXRpb24gdG8gYW55IENvbnRyaWJ1dG9yIG9yIHRoZSBJbml0aWFsIERldmVsb3Blci4KKworMy40LiBBcHBsaWNhdGlvbiBvZiBBZGRpdGlvbmFsIFRlcm1zLgorCitZb3UgbWF5IG5vdCBvZmZlciBvciBpbXBvc2UgYW55IHRlcm1zIG9uIGFueSBDb3ZlcmVkCitTb2Z0d2FyZSBpbiBTb3VyY2UgQ29kZSBmb3JtIHRoYXQgYWx0ZXJzIG9yIHJlc3RyaWN0cyB0aGUKK2FwcGxpY2FibGUgdmVyc2lvbiBvZiB0aGlzIExpY2Vuc2Ugb3IgdGhlIHJlY2lwaWVudHMnCityaWdodHMgaGVyZXVuZGVyLiBZb3UgbWF5IGNob29zZSB0byBvZmZlciwgYW5kIHRvIGNoYXJnZSBhCitmZWUgZm9yLCB3YXJyYW50eSwgc3VwcG9ydCwgaW5kZW1uaXR5IG9yIGxpYWJpbGl0eQorb2JsaWdhdGlvbnMgdG8gb25lIG9yIG1vcmUgcmVjaXBpZW50cyBvZiBDb3ZlcmVkIFNvZnR3YXJlLgorSG93ZXZlciwgeW91IG1heSBkbyBzbyBvbmx5IG9uIFlvdXIgb3duIGJlaGFsZiwgYW5kIG5vdCBvbgorYmVoYWxmIG9mIHRoZSBJbml0aWFsIERldmVsb3BlciBvciBhbnkgQ29udHJpYnV0b3IuIFlvdQorbXVzdCBtYWtlIGl0IGFic29sdXRlbHkgY2xlYXIgdGhhdCBhbnkgc3VjaCB3YXJyYW50eSwKK3N1cHBvcnQsIGluZGVtbml0eSBvciBsaWFiaWxpdHkgb2JsaWdhdGlvbiBpcyBvZmZlcmVkIGJ5CitZb3UgYWxvbmUsIGFuZCBZb3UgaGVyZWJ5IGFncmVlIHRvIGluZGVtbmlmeSB0aGUgSW5pdGlhbAorRGV2ZWxvcGVyIGFuZCBldmVyeSBDb250cmlidXRvciBmb3IgYW55IGxpYWJpbGl0eSBpbmN1cnJlZAorYnkgdGhlIEluaXRpYWwgRGV2ZWxvcGVyIG9yIHN1Y2ggQ29udHJpYnV0b3IgYXMgYSByZXN1bHQgb2YKK3dhcnJhbnR5LCBzdXBwb3J0LCBpbmRlbW5pdHkgb3IgbGlhYmlsaXR5IHRlcm1zIFlvdSBvZmZlci4KKworMy41LiBEaXN0cmlidXRpb24gb2YgRXhlY3V0YWJsZSBWZXJzaW9ucy4KKworWW91IG1heSBkaXN0cmlidXRlIHRoZSBFeGVjdXRhYmxlIGZvcm0gb2YgdGhlIENvdmVyZWQKK1NvZnR3YXJlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2Ugb3IgdW5kZXIgdGhlIHRlcm1zCitvZiBhIGxpY2Vuc2Ugb2YgWW91ciBjaG9pY2UsIHdoaWNoIG1heSBjb250YWluIHRlcm1zCitkaWZmZXJlbnQgZnJvbSB0aGlzIExpY2Vuc2UsIHByb3ZpZGVkIHRoYXQgWW91IGFyZSBpbgorY29tcGxpYW5jZSB3aXRoIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UgYW5kIHRoYXQgdGhlCitsaWNlbnNlIGZvciB0aGUgRXhlY3V0YWJsZSBmb3JtIGRvZXMgbm90IGF0dGVtcHQgdG8gbGltaXQKK29yIGFsdGVyIHRoZSByZWNpcGllbnQncyByaWdodHMgaW4gdGhlIFNvdXJjZSBDb2RlIGZvcm0KK2Zyb20gdGhlIHJpZ2h0cyBzZXQgZm9ydGggaW4gdGhpcyBMaWNlbnNlLiBJZiBZb3UKK2Rpc3RyaWJ1dGUgdGhlIENvdmVyZWQgU29mdHdhcmUgaW4gRXhlY3V0YWJsZSBmb3JtIHVuZGVyIGEKK2RpZmZlcmVudCBsaWNlbnNlLCBZb3UgbXVzdCBtYWtlIGl0IGFic29sdXRlbHkgY2xlYXIgdGhhdAorYW55IHRlcm1zIHdoaWNoIGRpZmZlciBmcm9tIHRoaXMgTGljZW5zZSBhcmUgb2ZmZXJlZCBieSBZb3UKK2Fsb25lLCBub3QgYnkgdGhlIEluaXRpYWwgRGV2ZWxvcGVyIG9yIENvbnRyaWJ1dG9yLiBZb3UKK2hlcmVieSBhZ3JlZSB0byBpbmRlbW5pZnkgdGhlIEluaXRpYWwgRGV2ZWxvcGVyIGFuZCBldmVyeQorQ29udHJpYnV0b3IgZm9yIGFueSBsaWFiaWxpdHkgaW5jdXJyZWQgYnkgdGhlIEluaXRpYWwKK0RldmVsb3BlciBvciBzdWNoIENvbnRyaWJ1dG9yIGFzIGEgcmVzdWx0IG9mIGFueSBzdWNoIHRlcm1zCitZb3Ugb2ZmZXIuCisKKzMuNi4gTGFyZ2VyIFdvcmtzLgorCitZb3UgbWF5IGNyZWF0ZSBhIExhcmdlciBXb3JrIGJ5IGNvbWJpbmluZyBDb3ZlcmVkIFNvZnR3YXJlCit3aXRoIG90aGVyIGNvZGUgbm90IGdvdmVybmVkIGJ5IHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UKK2FuZCBkaXN0cmlidXRlIHRoZSBMYXJnZXIgV29yayBhcyBhIHNpbmdsZSBwcm9kdWN0LiBJbiBzdWNoCithIGNhc2UsIFlvdSBtdXN0IG1ha2Ugc3VyZSB0aGUgcmVxdWlyZW1lbnRzIG9mIHRoaXMgTGljZW5zZQorYXJlIGZ1bGZpbGxlZCBmb3IgdGhlIENvdmVyZWQgU29mdHdhcmUuCisKKzQuIFZlcnNpb25zIG9mIHRoZSBMaWNlbnNlLgorCis0LjEuIE5ldyBWZXJzaW9ucy4KKworU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBpcyB0aGUgaW5pdGlhbCBsaWNlbnNlIHN0ZXdhcmQgYW5kCittYXkgcHVibGlzaCByZXZpc2VkIGFuZC9vciBuZXcgdmVyc2lvbnMgb2YgdGhpcyBMaWNlbnNlCitmcm9tIHRpbWUgdG8gdGltZS4gRWFjaCB2ZXJzaW9uIHdpbGwgYmUgZ2l2ZW4gYQorZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuIEV4Y2VwdCBhcyBwcm92aWRlZCBpbgorU2VjdGlvbiA0LjMsIG5vIG9uZSBvdGhlciB0aGFuIHRoZSBsaWNlbnNlIHN0ZXdhcmQgaGFzIHRoZQorcmlnaHQgdG8gbW9kaWZ5IHRoaXMgTGljZW5zZS4KKworNC4yLiBFZmZlY3Qgb2YgTmV3IFZlcnNpb25zLgorCitZb3UgbWF5IGFsd2F5cyBjb250aW51ZSB0byB1c2UsIGRpc3RyaWJ1dGUgb3Igb3RoZXJ3aXNlCittYWtlIHRoZSBDb3ZlcmVkIFNvZnR3YXJlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlCit2ZXJzaW9uIG9mIHRoZSBMaWNlbnNlIHVuZGVyIHdoaWNoIFlvdSBvcmlnaW5hbGx5IHJlY2VpdmVkCit0aGUgQ292ZXJlZCBTb2Z0d2FyZS4gSWYgdGhlIEluaXRpYWwgRGV2ZWxvcGVyIGluY2x1ZGVzIGEKK25vdGljZSBpbiB0aGUgT3JpZ2luYWwgU29mdHdhcmUgcHJvaGliaXRpbmcgaXQgZnJvbSBiZWluZworZGlzdHJpYnV0ZWQgb3Igb3RoZXJ3aXNlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIGFueQorc3Vic2VxdWVudCB2ZXJzaW9uIG9mIHRoZSBMaWNlbnNlLCBZb3UgbXVzdCBkaXN0cmlidXRlIGFuZAorbWFrZSB0aGUgQ292ZXJlZCBTb2Z0d2FyZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQordmVyc2lvbiBvZiB0aGUgTGljZW5zZSB1bmRlciB3aGljaCBZb3Ugb3JpZ2luYWxseSByZWNlaXZlZAordGhlIENvdmVyZWQgU29mdHdhcmUuIE90aGVyd2lzZSwgWW91IG1heSBhbHNvIGNob29zZSB0bwordXNlLCBkaXN0cmlidXRlIG9yIG90aGVyd2lzZSBtYWtlIHRoZSBDb3ZlcmVkIFNvZnR3YXJlCithdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIGFueSBzdWJzZXF1ZW50IHZlcnNpb24gb2YgdGhlCitMaWNlbnNlIHB1Ymxpc2hlZCBieSB0aGUgbGljZW5zZSBzdGV3YXJkLgorCis0LjMuIE1vZGlmaWVkIFZlcnNpb25zLgorCitXaGVuIFlvdSBhcmUgYW4gSW5pdGlhbCBEZXZlbG9wZXIgYW5kIFlvdSB3YW50IHRvIGNyZWF0ZSBhCituZXcgbGljZW5zZSBmb3IgWW91ciBPcmlnaW5hbCBTb2Z0d2FyZSwgWW91IG1heSBjcmVhdGUgYW5kCit1c2UgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoaXMgTGljZW5zZSBpZiBZb3U6IChhKSByZW5hbWUKK3RoZSBsaWNlbnNlIGFuZCByZW1vdmUgYW55IHJlZmVyZW5jZXMgdG8gdGhlIG5hbWUgb2YgdGhlCitsaWNlbnNlIHN0ZXdhcmQgKGV4Y2VwdCB0byBub3RlIHRoYXQgdGhlIGxpY2Vuc2UgZGlmZmVycworZnJvbSB0aGlzIExpY2Vuc2UpOyBhbmQgKGIpIG90aGVyd2lzZSBtYWtlIGl0IGNsZWFyIHRoYXQKK3RoZSBsaWNlbnNlIGNvbnRhaW5zIHRlcm1zIHdoaWNoIGRpZmZlciBmcm9tIHRoaXMgTGljZW5zZS4KKworNS4gRElTQ0xBSU1FUiBPRiBXQVJSQU5UWS4KKworQ09WRVJFRCBTT0ZUV0FSRSBJUyBQUk9WSURFRCBVTkRFUiBUSElTIExJQ0VOU0UgT04gQU4gIkFTIElTIgorQkFTSVMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTRUQgT1IgSU1QTElFRCwKK0lOQ0xVRElORywgV0lUSE9VVCBMSU1JVEFUSU9OLCBXQVJSQU5USUVTIFRIQVQgVEhFIENPVkVSRUQKK1NPRlRXQVJFIElTIEZSRUUgT0YgREVGRUNUUywgTUVSQ0hBTlRBQkxFLCBGSVQgRk9SIEEgUEFSVElDVUxBUgorUFVSUE9TRSBPUiBOT04tSU5GUklOR0lORy4gVEhFIEVOVElSRSBSSVNLIEFTIFRPIFRIRSBRVUFMSVRZIEFORAorUEVSRk9STUFOQ0UgT0YgVEhFIENPVkVSRUQgU09GVFdBUkUgSVMgV0lUSCBZT1UuIFNIT1VMRCBBTlkKK0NPVkVSRUQgU09GVFdBUkUgUFJPVkUgREVGRUNUSVZFIElOIEFOWSBSRVNQRUNULCBZT1UgKE5PVCBUSEUKK0lOSVRJQUwgREVWRUxPUEVSIE9SIEFOWSBPVEhFUiBDT05UUklCVVRPUikgQVNTVU1FIFRIRSBDT1NUIE9GCitBTlkgTkVDRVNTQVJZIFNFUlZJQ0lORywgUkVQQUlSIE9SIENPUlJFQ1RJT04uIFRISVMgRElTQ0xBSU1FUiBPRgorV0FSUkFOVFkgQ09OU1RJVFVURVMgQU4gRVNTRU5USUFMIFBBUlQgT0YgVEhJUyBMSUNFTlNFLiBOTyBVU0UgT0YKK0FOWSBDT1ZFUkVEIFNPRlRXQVJFIElTIEFVVEhPUklaRUQgSEVSRVVOREVSIEVYQ0VQVCBVTkRFUiBUSElTCitESVNDTEFJTUVSLgorCis2LiBURVJNSU5BVElPTi4KKworNi4xLiBUaGlzIExpY2Vuc2UgYW5kIHRoZSByaWdodHMgZ3JhbnRlZCBoZXJldW5kZXIgd2lsbAordGVybWluYXRlIGF1dG9tYXRpY2FsbHkgaWYgWW91IGZhaWwgdG8gY29tcGx5IHdpdGggdGVybXMKK2hlcmVpbiBhbmQgZmFpbCB0byBjdXJlIHN1Y2ggYnJlYWNoIHdpdGhpbiAzMCBkYXlzIG9mCitiZWNvbWluZyBhd2FyZSBvZiB0aGUgYnJlYWNoLiBQcm92aXNpb25zIHdoaWNoLCBieSB0aGVpcgorbmF0dXJlLCBtdXN0IHJlbWFpbiBpbiBlZmZlY3QgYmV5b25kIHRoZSB0ZXJtaW5hdGlvbiBvZgordGhpcyBMaWNlbnNlIHNoYWxsIHN1cnZpdmUuCisKKzYuMi4gSWYgWW91IGFzc2VydCBhIHBhdGVudCBpbmZyaW5nZW1lbnQgY2xhaW0gKGV4Y2x1ZGluZworZGVjbGFyYXRvcnkganVkZ21lbnQgYWN0aW9ucykgYWdhaW5zdCBJbml0aWFsIERldmVsb3BlciBvcgorYSBDb250cmlidXRvciAodGhlIEluaXRpYWwgRGV2ZWxvcGVyIG9yIENvbnRyaWJ1dG9yIGFnYWluc3QKK3dob20gWW91IGFzc2VydCBzdWNoIGNsYWltIGlzIHJlZmVycmVkIHRvIGFzICJQYXJ0aWNpcGFudCIpCithbGxlZ2luZyB0aGF0IHRoZSBQYXJ0aWNpcGFudCBTb2Z0d2FyZSAobWVhbmluZyB0aGUKK0NvbnRyaWJ1dG9yIFZlcnNpb24gd2hlcmUgdGhlIFBhcnRpY2lwYW50IGlzIGEgQ29udHJpYnV0b3IKK29yIHRoZSBPcmlnaW5hbCBTb2Z0d2FyZSB3aGVyZSB0aGUgUGFydGljaXBhbnQgaXMgdGhlCitJbml0aWFsIERldmVsb3BlcikgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBpbmZyaW5nZXMgYW55CitwYXRlbnQsIHRoZW4gYW55IGFuZCBhbGwgcmlnaHRzIGdyYW50ZWQgZGlyZWN0bHkgb3IKK2luZGlyZWN0bHkgdG8gWW91IGJ5IHN1Y2ggUGFydGljaXBhbnQsIHRoZSBJbml0aWFsCitEZXZlbG9wZXIgKGlmIHRoZSBJbml0aWFsIERldmVsb3BlciBpcyBub3QgdGhlIFBhcnRpY2lwYW50KQorYW5kIGFsbCBDb250cmlidXRvcnMgdW5kZXIgU2VjdGlvbnMgMi4xIGFuZC9vciAyLjIgb2YgdGhpcworTGljZW5zZSBzaGFsbCwgdXBvbiA2MCBkYXlzIG5vdGljZSBmcm9tIFBhcnRpY2lwYW50Cit0ZXJtaW5hdGUgcHJvc3BlY3RpdmVseSBhbmQgYXV0b21hdGljYWxseSBhdCB0aGUgZXhwaXJhdGlvbgorb2Ygc3VjaCA2MCBkYXkgbm90aWNlIHBlcmlvZCwgdW5sZXNzIGlmIHdpdGhpbiBzdWNoIDYwIGRheQorcGVyaW9kIFlvdSB3aXRoZHJhdyBZb3VyIGNsYWltIHdpdGggcmVzcGVjdCB0byB0aGUKK1BhcnRpY2lwYW50IFNvZnR3YXJlIGFnYWluc3Qgc3VjaCBQYXJ0aWNpcGFudCBlaXRoZXIKK3VuaWxhdGVyYWxseSBvciBwdXJzdWFudCB0byBhIHdyaXR0ZW4gYWdyZWVtZW50IHdpdGgKK1BhcnRpY2lwYW50LgorCis2LjMuIEluIHRoZSBldmVudCBvZiB0ZXJtaW5hdGlvbiB1bmRlciBTZWN0aW9ucyA2LjEgb3IgNi4yCithYm92ZSwgYWxsIGVuZCB1c2VyIGxpY2Vuc2VzIHRoYXQgaGF2ZSBiZWVuIHZhbGlkbHkgZ3JhbnRlZAorYnkgWW91IG9yIGFueSBkaXN0cmlidXRvciBoZXJldW5kZXIgcHJpb3IgdG8gdGVybWluYXRpb24KKyhleGNsdWRpbmcgbGljZW5zZXMgZ3JhbnRlZCB0byBZb3UgYnkgYW55IGRpc3RyaWJ1dG9yKQorc2hhbGwgc3Vydml2ZSB0ZXJtaW5hdGlvbi4KKworNy4gTElNSVRBVElPTiBPRiBMSUFCSUxJVFkuCisKK1VOREVSIE5PIENJUkNVTVNUQU5DRVMgQU5EIFVOREVSIE5PIExFR0FMIFRIRU9SWSwgV0hFVEhFUiBUT1JUCisoSU5DTFVESU5HIE5FR0xJR0VOQ0UpLCBDT05UUkFDVCwgT1IgT1RIRVJXSVNFLCBTSEFMTCBZT1UsIFRIRQorSU5JVElBTCBERVZFTE9QRVIsIEFOWSBPVEhFUiBDT05UUklCVVRPUiwgT1IgQU5ZIERJU1RSSUJVVE9SIE9GCitDT1ZFUkVEIFNPRlRXQVJFLCBPUiBBTlkgU1VQUExJRVIgT0YgQU5ZIE9GIFNVQ0ggUEFSVElFUywgQkUKK0xJQUJMRSBUTyBBTlkgUEVSU09OIEZPUiBBTlkgSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwsIE9SCitDT05TRVFVRU5USUFMIERBTUFHRVMgT0YgQU5ZIENIQVJBQ1RFUiBJTkNMVURJTkcsIFdJVEhPVVQKK0xJTUlUQVRJT04sIERBTUFHRVMgRk9SIExPU1QgUFJPRklUUywgTE9TUyBPRiBHT09EV0lMTCwgV09SSworU1RPUFBBR0UsIENPTVBVVEVSIEZBSUxVUkUgT1IgTUFMRlVOQ1RJT04sIE9SIEFOWSBBTkQgQUxMIE9USEVSCitDT01NRVJDSUFMIERBTUFHRVMgT1IgTE9TU0VTLCBFVkVOIElGIFNVQ0ggUEFSVFkgU0hBTEwgSEFWRSBCRUVOCitJTkZPUk1FRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLiBUSElTIExJTUlUQVRJT04gT0YKK0xJQUJJTElUWSBTSEFMTCBOT1QgQVBQTFkgVE8gTElBQklMSVRZIEZPUiBERUFUSCBPUiBQRVJTT05BTAorSU5KVVJZIFJFU1VMVElORyBGUk9NIFNVQ0ggUEFSVFknUyBORUdMSUdFTkNFIFRPIFRIRSBFWFRFTlQKK0FQUExJQ0FCTEUgTEFXIFBST0hJQklUUyBTVUNIIExJTUlUQVRJT04uIFNPTUUgSlVSSVNESUNUSU9OUyBETworTk9UIEFMTE9XIFRIRSBFWENMVVNJT04gT1IgTElNSVRBVElPTiBPRiBJTkNJREVOVEFMIE9SCitDT05TRVFVRU5USUFMIERBTUFHRVMsIFNPIFRISVMgRVhDTFVTSU9OIEFORCBMSU1JVEFUSU9OIE1BWSBOT1QKK0FQUExZIFRPIFlPVS4KKworOC4gVS5TLiBHT1ZFUk5NRU5UIEVORCBVU0VSUy4KKworVGhlIENvdmVyZWQgU29mdHdhcmUgaXMgYSAiY29tbWVyY2lhbCBpdGVtLCIgYXMgdGhhdCB0ZXJtIGlzCitkZWZpbmVkIGluIDQ4IEMuRi5SLiAyLjEwMSAoT2N0LiAxOTk1KSwgY29uc2lzdGluZyBvZiAiY29tbWVyY2lhbAorY29tcHV0ZXIgc29mdHdhcmUiIChhcyB0aGF0IHRlcm0gaXMgZGVmaW5lZCBhdCA0OCBDLkYuUi4gwqQKKzI1Mi4yMjctNzAxNChhKSgxKSkgYW5kICJjb21tZXJjaWFsIGNvbXB1dGVyIHNvZnR3YXJlCitkb2N1bWVudGF0aW9uIiBhcyBzdWNoIHRlcm1zIGFyZSB1c2VkIGluIDQ4IEMuRi5SLiAxMi4yMTIgKFNlcHQuCisxOTk1KS4gQ29uc2lzdGVudCB3aXRoIDQ4IEMuRi5SLiAxMi4yMTIgYW5kIDQ4IEMuRi5SLiAyMjcuNzIwMi0xCit0aHJvdWdoIDIyNy43MjAyLTQgKEp1bmUgMTk5NSksIGFsbCBVLlMuIEdvdmVybm1lbnQgRW5kIFVzZXJzCithY3F1aXJlIENvdmVyZWQgU29mdHdhcmUgd2l0aCBvbmx5IHRob3NlIHJpZ2h0cyBzZXQgZm9ydGggaGVyZWluLgorVGhpcyBVLlMuIEdvdmVybm1lbnQgUmlnaHRzIGNsYXVzZSBpcyBpbiBsaWV1IG9mLCBhbmQgc3VwZXJzZWRlcywKK2FueSBvdGhlciBGQVIsIERGQVIsIG9yIG90aGVyIGNsYXVzZSBvciBwcm92aXNpb24gdGhhdCBhZGRyZXNzZXMKK0dvdmVybm1lbnQgcmlnaHRzIGluIGNvbXB1dGVyIHNvZnR3YXJlIHVuZGVyIHRoaXMgTGljZW5zZS4KKworOS4gTUlTQ0VMTEFORU9VUy4KKworVGhpcyBMaWNlbnNlIHJlcHJlc2VudHMgdGhlIGNvbXBsZXRlIGFncmVlbWVudCBjb25jZXJuaW5nIHN1YmplY3QKK21hdHRlciBoZXJlb2YuIElmIGFueSBwcm92aXNpb24gb2YgdGhpcyBMaWNlbnNlIGlzIGhlbGQgdG8gYmUKK3VuZW5mb3JjZWFibGUsIHN1Y2ggcHJvdmlzaW9uIHNoYWxsIGJlIHJlZm9ybWVkIG9ubHkgdG8gdGhlCitleHRlbnQgbmVjZXNzYXJ5IHRvIG1ha2UgaXQgZW5mb3JjZWFibGUuIFRoaXMgTGljZW5zZSBzaGFsbCBiZQorZ292ZXJuZWQgYnkgdGhlIGxhdyBvZiB0aGUganVyaXNkaWN0aW9uIHNwZWNpZmllZCBpbiBhIG5vdGljZQorY29udGFpbmVkIHdpdGhpbiB0aGUgT3JpZ2luYWwgU29mdHdhcmUgKGV4Y2VwdCB0byB0aGUgZXh0ZW50CithcHBsaWNhYmxlIGxhdywgaWYgYW55LCBwcm92aWRlcyBvdGhlcndpc2UpLCBleGNsdWRpbmcgc3VjaAoranVyaXNkaWN0aW9uJ3MgY29uZmxpY3Qtb2YtbGF3IHByb3Zpc2lvbnMuIEFueSBsaXRpZ2F0aW9uCityZWxhdGluZyB0byB0aGlzIExpY2Vuc2Ugc2hhbGwgYmUgc3ViamVjdCB0byB0aGUganVyaXNkaWN0aW9uIG9mCit0aGUgY291cnRzIGxvY2F0ZWQgaW4gdGhlIGp1cmlzZGljdGlvbiBhbmQgdmVudWUgc3BlY2lmaWVkIGluIGEKK25vdGljZSBjb250YWluZWQgd2l0aGluIHRoZSBPcmlnaW5hbCBTb2Z0d2FyZSwgd2l0aCB0aGUgbG9zaW5nCitwYXJ0eSByZXNwb25zaWJsZSBmb3IgY29zdHMsIGluY2x1ZGluZywgd2l0aG91dCBsaW1pdGF0aW9uLCBjb3VydAorY29zdHMgYW5kIHJlYXNvbmFibGUgYXR0b3JuZXlzJyBmZWVzIGFuZCBleHBlbnNlcy4gVGhlCithcHBsaWNhdGlvbiBvZiB0aGUgVW5pdGVkIE5hdGlvbnMgQ29udmVudGlvbiBvbiBDb250cmFjdHMgZm9yIHRoZQorSW50ZXJuYXRpb25hbCBTYWxlIG9mIEdvb2RzIGlzIGV4cHJlc3NseSBleGNsdWRlZC4gQW55IGxhdyBvcgorcmVndWxhdGlvbiB3aGljaCBwcm92aWRlcyB0aGF0IHRoZSBsYW5ndWFnZSBvZiBhIGNvbnRyYWN0IHNoYWxsCitiZSBjb25zdHJ1ZWQgYWdhaW5zdCB0aGUgZHJhZnRlciBzaGFsbCBub3QgYXBwbHkgdG8gdGhpcyBMaWNlbnNlLgorWW91IGFncmVlIHRoYXQgWW91IGFsb25lIGFyZSByZXNwb25zaWJsZSBmb3IgY29tcGxpYW5jZSB3aXRoIHRoZQorVW5pdGVkIFN0YXRlcyBleHBvcnQgYWRtaW5pc3RyYXRpb24gcmVndWxhdGlvbnMgKGFuZCB0aGUgZXhwb3J0Citjb250cm9sIGxhd3MgYW5kIHJlZ3VsYXRpb24gb2YgYW55IG90aGVyIGNvdW50cmllcykgd2hlbiBZb3UgdXNlLAorZGlzdHJpYnV0ZSBvciBvdGhlcndpc2UgbWFrZSBhdmFpbGFibGUgYW55IENvdmVyZWQgU29mdHdhcmUuCisKKzEwLiBSRVNQT05TSUJJTElUWSBGT1IgQ0xBSU1TLgorCitBcyBiZXR3ZWVuIEluaXRpYWwgRGV2ZWxvcGVyIGFuZCB0aGUgQ29udHJpYnV0b3JzLCBlYWNoIHBhcnR5IGlzCityZXNwb25zaWJsZSBmb3IgY2xhaW1zIGFuZCBkYW1hZ2VzIGFyaXNpbmcsIGRpcmVjdGx5IG9yCitpbmRpcmVjdGx5LCBvdXQgb2YgaXRzIHV0aWxpemF0aW9uIG9mIHJpZ2h0cyB1bmRlciB0aGlzIExpY2Vuc2UKK2FuZCBZb3UgYWdyZWUgdG8gd29yayB3aXRoIEluaXRpYWwgRGV2ZWxvcGVyIGFuZCBDb250cmlidXRvcnMgdG8KK2Rpc3RyaWJ1dGUgc3VjaCByZXNwb25zaWJpbGl0eSBvbiBhbiBlcXVpdGFibGUgYmFzaXMuIE5vdGhpbmcKK2hlcmVpbiBpcyBpbnRlbmRlZCBvciBzaGFsbCBiZSBkZWVtZWQgdG8gY29uc3RpdHV0ZSBhbnkgYWRtaXNzaW9uCitvZiBsaWFiaWxpdHkuCmRpZmYgLS1naXQgYS9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9hYm91dF9maWxlcy9jcGwtMTAudHh0IGIvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvYWJvdXRfZmlsZXMvY3BsLTEwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjllZjViCi0tLSAvZGV2L251bGwKKysrIGIvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvYWJvdXRfZmlsZXMvY3BsLTEwLnR4dApAQCAtMCwwICsxLDkyIEBACitDb21tb24gUHVibGljIExpY2Vuc2UgLSB2IDEuMAorCitVcGRhdGVkIDE2IEFwciAyMDA5CisKK0FzIG9mIDI1IEZlYiAyMDA5LCBJQk0gaGFzIGFzc2lnbmVkIHRoZSBBZ3JlZW1lbnQgU3Rld2FyZCByb2xlIGZvciB0aGUgQ1BMIHRvIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24uIEVjbGlwc2UgaGFzIGRlc2lnbmF0ZWQgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgKEVQTCkgYXMgdGhlIGZvbGxvdy1vbiB2ZXJzaW9uIG9mIHRoZSBDUEwuCisKKworVEhFIEFDQ09NUEFOWUlORyBQUk9HUkFNIElTIFBST1ZJREVEIFVOREVSIFRIRSBURVJNUyBPRiBUSElTIENPTU1PTiBQVUJMSUMgTElDRU5TRSAoIkFHUkVFTUVOVCIpLiBBTlkgVVNFLCBSRVBST0RVQ1RJT04gT1IgRElTVFJJQlVUSU9OIE9GIFRIRSBQUk9HUkFNIENPTlNUSVRVVEVTIFJFQ0lQSUVOVCdTIEFDQ0VQVEFOQ0UgT0YgVEhJUyBBR1JFRU1FTlQuCisKKworMS4gREVGSU5JVElPTlMKKworIkNvbnRyaWJ1dGlvbiIgbWVhbnM6CisKK2EpIGluIHRoZSBjYXNlIG9mIHRoZSBpbml0aWFsIENvbnRyaWJ1dG9yLCB0aGUgaW5pdGlhbCBjb2RlIGFuZCBkb2N1bWVudGF0aW9uIGRpc3RyaWJ1dGVkIHVuZGVyIHRoaXMgQWdyZWVtZW50LCBhbmQKK2IpIGluIHRoZSBjYXNlIG9mIGVhY2ggc3Vic2VxdWVudCBDb250cmlidXRvcjoKK2kpCSBjaGFuZ2VzIHRvIHRoZSBQcm9ncmFtLCBhbmQKK2lpKQkgYWRkaXRpb25zIHRvIHRoZSBQcm9ncmFtOword2hlcmUgc3VjaCBjaGFuZ2VzIGFuZC9vciBhZGRpdGlvbnMgdG8gdGhlIFByb2dyYW0gb3JpZ2luYXRlIGZyb20gYW5kIGFyZSBkaXN0cmlidXRlZCBieSB0aGF0IHBhcnRpY3VsYXIgQ29udHJpYnV0b3IuIEEgQ29udHJpYnV0aW9uICdvcmlnaW5hdGVzJyBmcm9tIGEgQ29udHJpYnV0b3IgaWYgaXQgd2FzIGFkZGVkIHRvIHRoZSBQcm9ncmFtIGJ5IHN1Y2ggQ29udHJpYnV0b3IgaXRzZWxmIG9yIGFueW9uZSBhY3Rpbmcgb24gc3VjaCBDb250cmlidXRvcidzIGJlaGFsZi4gQ29udHJpYnV0aW9ucyBkbyBub3QgaW5jbHVkZSBhZGRpdGlvbnMgdG8gdGhlIFByb2dyYW0gd2hpY2g6IChpKSBhcmUgc2VwYXJhdGUgbW9kdWxlcyBvZiBzb2Z0d2FyZSBkaXN0cmlidXRlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBQcm9ncmFtIHVuZGVyIHRoZWlyIG93biBsaWNlbnNlIGFncmVlbWVudCwgYW5kIChpaSkgYXJlIG5vdCBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBQcm9ncmFtLgorCisiQ29udHJpYnV0b3IiIG1lYW5zIGFueSBwZXJzb24gb3IgZW50aXR5IHRoYXQgZGlzdHJpYnV0ZXMgdGhlIFByb2dyYW0uCisKKworIkxpY2Vuc2VkIFBhdGVudHMgIiBtZWFuIHBhdGVudCBjbGFpbXMgbGljZW5zYWJsZSBieSBhIENvbnRyaWJ1dG9yIHdoaWNoIGFyZSBuZWNlc3NhcmlseSBpbmZyaW5nZWQgYnkgdGhlIHVzZSBvciBzYWxlIG9mIGl0cyBDb250cmlidXRpb24gYWxvbmUgb3Igd2hlbiBjb21iaW5lZCB3aXRoIHRoZSBQcm9ncmFtLgorCisKKyJQcm9ncmFtIiBtZWFucyB0aGUgQ29udHJpYnV0aW9ucyBkaXN0cmlidXRlZCBpbiBhY2NvcmRhbmNlIHdpdGggdGhpcyBBZ3JlZW1lbnQuCisKKworIlJlY2lwaWVudCIgbWVhbnMgYW55b25lIHdobyByZWNlaXZlcyB0aGUgUHJvZ3JhbSB1bmRlciB0aGlzIEFncmVlbWVudCwgaW5jbHVkaW5nIGFsbCBDb250cmlidXRvcnMuCisKKworMi4gR1JBTlQgT0YgUklHSFRTCisKK2EpCVN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoaXMgQWdyZWVtZW50LCBlYWNoIENvbnRyaWJ1dG9yIGhlcmVieSBncmFudHMgUmVjaXBpZW50IGEgbm9uLWV4Y2x1c2l2ZSwgd29ybGR3aWRlLCByb3lhbHR5LWZyZWUgY29weXJpZ2h0IGxpY2Vuc2UgdG8gcmVwcm9kdWNlLCBwcmVwYXJlIGRlcml2YXRpdmUgd29ya3Mgb2YsIHB1YmxpY2x5IGRpc3BsYXksIHB1YmxpY2x5IHBlcmZvcm0sIGRpc3RyaWJ1dGUgYW5kIHN1YmxpY2Vuc2UgdGhlIENvbnRyaWJ1dGlvbiBvZiBzdWNoIENvbnRyaWJ1dG9yLCBpZiBhbnksIGFuZCBzdWNoIGRlcml2YXRpdmUgd29ya3MsIGluIHNvdXJjZSBjb2RlIGFuZCBvYmplY3QgY29kZSBmb3JtLgorYikgU3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhpcyBBZ3JlZW1lbnQsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyBSZWNpcGllbnQgYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZSBwYXRlbnQgbGljZW5zZSB1bmRlciBMaWNlbnNlZCBQYXRlbnRzIHRvIG1ha2UsIHVzZSwgc2VsbCwgb2ZmZXIgdG8gc2VsbCwgaW1wb3J0IGFuZCBvdGhlcndpc2UgdHJhbnNmZXIgdGhlIENvbnRyaWJ1dGlvbiBvZiBzdWNoIENvbnRyaWJ1dG9yLCBpZiBhbnksIGluIHNvdXJjZSBjb2RlIGFuZCBvYmplY3QgY29kZSBmb3JtLiBUaGlzIHBhdGVudCBsaWNlbnNlIHNoYWxsIGFwcGx5IHRvIHRoZSBjb21iaW5hdGlvbiBvZiB0aGUgQ29udHJpYnV0aW9uIGFuZCB0aGUgUHJvZ3JhbSBpZiwgYXQgdGhlIHRpbWUgdGhlIENvbnRyaWJ1dGlvbiBpcyBhZGRlZCBieSB0aGUgQ29udHJpYnV0b3IsIHN1Y2ggYWRkaXRpb24gb2YgdGhlIENvbnRyaWJ1dGlvbiBjYXVzZXMgc3VjaCBjb21iaW5hdGlvbiB0byBiZSBjb3ZlcmVkIGJ5IHRoZSBMaWNlbnNlZCBQYXRlbnRzLiBUaGUgcGF0ZW50IGxpY2Vuc2Ugc2hhbGwgbm90IGFwcGx5IHRvIGFueSBvdGhlciBjb21iaW5hdGlvbnMgd2hpY2ggaW5jbHVkZSB0aGUgQ29udHJpYnV0aW9uLiBObyBoYXJkd2FyZSBwZXIgc2UgaXMgbGljZW5zZWQgaGVyZXVuZGVyLgorYykJUmVjaXBpZW50IHVuZGVyc3RhbmRzIHRoYXQgYWx0aG91Z2ggZWFjaCBDb250cmlidXRvciBncmFudHMgdGhlIGxpY2Vuc2VzIHRvIGl0cyBDb250cmlidXRpb25zIHNldCBmb3J0aCBoZXJlaW4sIG5vIGFzc3VyYW5jZXMgYXJlIHByb3ZpZGVkIGJ5IGFueSBDb250cmlidXRvciB0aGF0IHRoZSBQcm9ncmFtIGRvZXMgbm90IGluZnJpbmdlIHRoZSBwYXRlbnQgb3Igb3RoZXIgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBvZiBhbnkgb3RoZXIgZW50aXR5LiBFYWNoIENvbnRyaWJ1dG9yIGRpc2NsYWltcyBhbnkgbGlhYmlsaXR5IHRvIFJlY2lwaWVudCBmb3IgY2xhaW1zIGJyb3VnaHQgYnkgYW55IG90aGVyIGVudGl0eSBiYXNlZCBvbiBpbmZyaW5nZW1lbnQgb2YgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBvciBvdGhlcndpc2UuIEFzIGEgY29uZGl0aW9uIHRvIGV4ZXJjaXNpbmcgdGhlIHJpZ2h0cyBhbmQgbGljZW5zZXMgZ3JhbnRlZCBoZXJldW5kZXIsIGVhY2ggUmVjaXBpZW50IGhlcmVieSBhc3N1bWVzIHNvbGUgcmVzcG9uc2liaWxpdHkgdG8gc2VjdXJlIGFueSBvdGhlciBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIG5lZWRlZCwgaWYgYW55LiBGb3IgZXhhbXBsZSwgaWYgYSB0aGlyZCBwYXJ0eSBwYXRlbnQgbGljZW5zZSBpcyByZXF1aXJlZCB0byBhbGxvdyBSZWNpcGllbnQgdG8gZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSwgaXQgaXMgUmVjaXBpZW50J3MgcmVzcG9uc2liaWxpdHkgdG8gYWNxdWlyZSB0aGF0IGxpY2Vuc2UgYmVmb3JlIGRpc3RyaWJ1dGluZyB0aGUgUHJvZ3JhbS4KK2QpCUVhY2ggQ29udHJpYnV0b3IgcmVwcmVzZW50cyB0aGF0IHRvIGl0cyBrbm93bGVkZ2UgaXQgaGFzIHN1ZmZpY2llbnQgY29weXJpZ2h0IHJpZ2h0cyBpbiBpdHMgQ29udHJpYnV0aW9uLCBpZiBhbnksIHRvIGdyYW50IHRoZSBjb3B5cmlnaHQgbGljZW5zZSBzZXQgZm9ydGggaW4gdGhpcyBBZ3JlZW1lbnQuCiszLiBSRVFVSVJFTUVOVFMKKworQSBDb250cmlidXRvciBtYXkgY2hvb3NlIHRvIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gaW4gb2JqZWN0IGNvZGUgZm9ybSB1bmRlciBpdHMgb3duIGxpY2Vuc2UgYWdyZWVtZW50LCBwcm92aWRlZCB0aGF0OgorCithKQlpdCBjb21wbGllcyB3aXRoIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGlzIEFncmVlbWVudDsgYW5kCitiKQlpdHMgbGljZW5zZSBhZ3JlZW1lbnQ6CitpKQllZmZlY3RpdmVseSBkaXNjbGFpbXMgb24gYmVoYWxmIG9mIGFsbCBDb250cmlidXRvcnMgYWxsIHdhcnJhbnRpZXMgYW5kIGNvbmRpdGlvbnMsIGV4cHJlc3MgYW5kIGltcGxpZWQsIGluY2x1ZGluZyB3YXJyYW50aWVzIG9yIGNvbmRpdGlvbnMgb2YgdGl0bGUgYW5kIG5vbi1pbmZyaW5nZW1lbnQsIGFuZCBpbXBsaWVkIHdhcnJhbnRpZXMgb3IgY29uZGl0aW9ucyBvZiBtZXJjaGFudGFiaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlOworaWkpIGVmZmVjdGl2ZWx5IGV4Y2x1ZGVzIG9uIGJlaGFsZiBvZiBhbGwgQ29udHJpYnV0b3JzIGFsbCBsaWFiaWxpdHkgZm9yIGRhbWFnZXMsIGluY2x1ZGluZyBkaXJlY3QsIGluZGlyZWN0LCBzcGVjaWFsLCBpbmNpZGVudGFsIGFuZCBjb25zZXF1ZW50aWFsIGRhbWFnZXMsIHN1Y2ggYXMgbG9zdCBwcm9maXRzOworaWlpKQlzdGF0ZXMgdGhhdCBhbnkgcHJvdmlzaW9ucyB3aGljaCBkaWZmZXIgZnJvbSB0aGlzIEFncmVlbWVudCBhcmUgb2ZmZXJlZCBieSB0aGF0IENvbnRyaWJ1dG9yIGFsb25lIGFuZCBub3QgYnkgYW55IG90aGVyIHBhcnR5OyBhbmQKK2l2KQlzdGF0ZXMgdGhhdCBzb3VyY2UgY29kZSBmb3IgdGhlIFByb2dyYW0gaXMgYXZhaWxhYmxlIGZyb20gc3VjaCBDb250cmlidXRvciwgYW5kIGluZm9ybXMgbGljZW5zZWVzIGhvdyB0byBvYnRhaW4gaXQgaW4gYSByZWFzb25hYmxlIG1hbm5lciBvbiBvciB0aHJvdWdoIGEgbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGV4Y2hhbmdlLgorV2hlbiB0aGUgUHJvZ3JhbSBpcyBtYWRlIGF2YWlsYWJsZSBpbiBzb3VyY2UgY29kZSBmb3JtOgorCithKQlpdCBtdXN0IGJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoaXMgQWdyZWVtZW50OyBhbmQKK2IpCWEgY29weSBvZiB0aGlzIEFncmVlbWVudCBtdXN0IGJlIGluY2x1ZGVkIHdpdGggZWFjaCBjb3B5IG9mIHRoZSBQcm9ncmFtLgorCitDb250cmlidXRvcnMgbWF5IG5vdCByZW1vdmUgb3IgYWx0ZXIgYW55IGNvcHlyaWdodCBub3RpY2VzIGNvbnRhaW5lZCB3aXRoaW4gdGhlIFByb2dyYW0uCisKKworRWFjaCBDb250cmlidXRvciBtdXN0IGlkZW50aWZ5IGl0c2VsZiBhcyB0aGUgb3JpZ2luYXRvciBvZiBpdHMgQ29udHJpYnV0aW9uLCBpZiBhbnksIGluIGEgbWFubmVyIHRoYXQgcmVhc29uYWJseSBhbGxvd3Mgc3Vic2VxdWVudCBSZWNpcGllbnRzIHRvIGlkZW50aWZ5IHRoZSBvcmlnaW5hdG9yIG9mIHRoZSBDb250cmlidXRpb24uCisKKworNC4gQ09NTUVSQ0lBTCBESVNUUklCVVRJT04KKworQ29tbWVyY2lhbCBkaXN0cmlidXRvcnMgb2Ygc29mdHdhcmUgbWF5IGFjY2VwdCBjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgd2l0aCByZXNwZWN0IHRvIGVuZCB1c2VycywgYnVzaW5lc3MgcGFydG5lcnMgYW5kIHRoZSBsaWtlLiBXaGlsZSB0aGlzIGxpY2Vuc2UgaXMgaW50ZW5kZWQgdG8gZmFjaWxpdGF0ZSB0aGUgY29tbWVyY2lhbCB1c2Ugb2YgdGhlIFByb2dyYW0sIHRoZSBDb250cmlidXRvciB3aG8gaW5jbHVkZXMgdGhlIFByb2dyYW0gaW4gYSBjb21tZXJjaWFsIHByb2R1Y3Qgb2ZmZXJpbmcgc2hvdWxkIGRvIHNvIGluIGEgbWFubmVyIHdoaWNoIGRvZXMgbm90IGNyZWF0ZSBwb3RlbnRpYWwgbGlhYmlsaXR5IGZvciBvdGhlciBDb250cmlidXRvcnMuIFRoZXJlZm9yZSwgaWYgYSBDb250cmlidXRvciBpbmNsdWRlcyB0aGUgUHJvZ3JhbSBpbiBhIGNvbW1lcmNpYWwgcHJvZHVjdCBvZmZlcmluZywgc3VjaCBDb250cmlidXRvciAoIkNvbW1lcmNpYWwgQ29udHJpYnV0b3IiKSBoZXJlYnkgYWdyZWVzIHRvIGRlZmVuZCBhbmQgaW5kZW1uaWZ5IGV2ZXJ5IG90aGVyIENvbnRyaWJ1dG9yICgiSW5kZW1uaWZpZWQgQ29udHJpYnV0b3IiKSBhZ2FpbnN0IGFueSBsb3NzZXMsIGRhbWFnZXMgYW5kIGNvc3RzIChjb2xsZWN0aXZlbHkgIkxvc3NlcyIpIGFyaXNpbmcgZnJvbSBjbGFpbXMsIGxhd3N1aXRzIGFuZCBvdGhlciBsZWdhbCBhY3Rpb25zIGJyb3VnaHQgYnkgYSB0aGlyZCBwYXJ0eSBhZ2FpbnN0IHRoZSBJbmRlbW5pZmllZCBDb250cmlidXRvciB0byB0aGUgZXh0ZW50IGNhdXNlZCBieSB0aGUgYWN0cyBvciBvbWlzc2lvbnMgb2Ygc3VjaCBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIGluIGNvbm5lY3Rpb24gd2l0aCBpdHMgZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtIGluIGEgY29tbWVyY2lhbCBwcm9kdWN0IG9mZmVyaW5nLiBUaGUgb2JsaWdhdGlvbnMgaW4gdGhpcyBzZWN0aW9uIGRvIG5vdCBhcHBseSB0byBhbnkgY2xhaW1zIG9yIExvc3NlcyByZWxhdGluZyB0byBhbnkgYWN0dWFsIG9yIGFsbGVnZWQgaW50ZWxsZWN0dWFsIHByb3BlcnR5IGluZnJpbmdlbWVudC4gSW4gb3JkZXIgdG8gcXVhbGlmeSwgYW4gSW5kZW1uaWZpZWQgQ29udHJpYnV0b3IgbXVzdDogYSkgcHJvbXB0bHkgbm90aWZ5IHRoZSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIGluIHdyaXRpbmcgb2Ygc3VjaCBjbGFpbSwgYW5kIGIpIGFsbG93IHRoZSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIHRvIGNvbnRyb2wsIGFuZCBjb29wZXJhdGUgd2l0aCB0aGUgQ29tbWVyY2lhbCBDb250cmlidXRvciBpbiwgdGhlIGRlZmVuc2UgYW5kIGFueSByZWxhdGVkIHNldHRsZW1lbnQgbmVnb3RpYXRpb25zLiBUaGUgSW5kZW1uaWZpZWQgQ29udHJpYnV0b3IgbWF5IHBhcnRpY2lwYXRlIGluIGFueSBzdWNoIGNsYWltIGF0IGl0cyBvd24gZXhwZW5zZS4KKworCitGb3IgZXhhbXBsZSwgYSBDb250cmlidXRvciBtaWdodCBpbmNsdWRlIHRoZSBQcm9ncmFtIGluIGEgY29tbWVyY2lhbCBwcm9kdWN0IG9mZmVyaW5nLCBQcm9kdWN0IFguIFRoYXQgQ29udHJpYnV0b3IgaXMgdGhlbiBhIENvbW1lcmNpYWwgQ29udHJpYnV0b3IuIElmIHRoYXQgQ29tbWVyY2lhbCBDb250cmlidXRvciB0aGVuIG1ha2VzIHBlcmZvcm1hbmNlIGNsYWltcywgb3Igb2ZmZXJzIHdhcnJhbnRpZXMgcmVsYXRlZCB0byBQcm9kdWN0IFgsIHRob3NlIHBlcmZvcm1hbmNlIGNsYWltcyBhbmQgd2FycmFudGllcyBhcmUgc3VjaCBDb21tZXJjaWFsIENvbnRyaWJ1dG9yJ3MgcmVzcG9uc2liaWxpdHkgYWxvbmUuIFVuZGVyIHRoaXMgc2VjdGlvbiwgdGhlIENvbW1lcmNpYWwgQ29udHJpYnV0b3Igd291bGQgaGF2ZSB0byBkZWZlbmQgY2xhaW1zIGFnYWluc3QgdGhlIG90aGVyIENvbnRyaWJ1dG9ycyByZWxhdGVkIHRvIHRob3NlIHBlcmZvcm1hbmNlIGNsYWltcyBhbmQgd2FycmFudGllcywgYW5kIGlmIGEgY291cnQgcmVxdWlyZXMgYW55IG90aGVyIENvbnRyaWJ1dG9yIHRvIHBheSBhbnkgZGFtYWdlcyBhcyBhIHJlc3VsdCwgdGhlIENvbW1lcmNpYWwgQ29udHJpYnV0b3IgbXVzdCBwYXkgdGhvc2UgZGFtYWdlcy4KKworCis1LiBOTyBXQVJSQU5UWQorCitFWENFUFQgQVMgRVhQUkVTU0xZIFNFVCBGT1JUSCBJTiBUSElTIEFHUkVFTUVOVCwgVEhFIFBST0dSQU0gSVMgUFJPVklERUQgT04gQU4gIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQgSU5DTFVESU5HLCBXSVRIT1VUIExJTUlUQVRJT04sIEFOWSBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgVElUTEUsIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBPUiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gRWFjaCBSZWNpcGllbnQgaXMgc29sZWx5IHJlc3BvbnNpYmxlIGZvciBkZXRlcm1pbmluZyB0aGUgYXBwcm9wcmlhdGVuZXNzIG9mIHVzaW5nIGFuZCBkaXN0cmlidXRpbmcgdGhlIFByb2dyYW0gYW5kIGFzc3VtZXMgYWxsIHJpc2tzIGFzc29jaWF0ZWQgd2l0aCBpdHMgZXhlcmNpc2Ugb2YgcmlnaHRzIHVuZGVyIHRoaXMgQWdyZWVtZW50LCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIHRoZSByaXNrcyBhbmQgY29zdHMgb2YgcHJvZ3JhbSBlcnJvcnMsIGNvbXBsaWFuY2Ugd2l0aCBhcHBsaWNhYmxlIGxhd3MsIGRhbWFnZSB0byBvciBsb3NzIG9mIGRhdGEsIHByb2dyYW1zIG9yIGVxdWlwbWVudCwgYW5kIHVuYXZhaWxhYmlsaXR5IG9yIGludGVycnVwdGlvbiBvZiBvcGVyYXRpb25zLiAKKworCis2LiBESVNDTEFJTUVSIE9GIExJQUJJTElUWQorCitFWENFUFQgQVMgRVhQUkVTU0xZIFNFVCBGT1JUSCBJTiBUSElTIEFHUkVFTUVOVCwgTkVJVEhFUiBSRUNJUElFTlQgTk9SIEFOWSBDT05UUklCVVRPUlMgU0hBTEwgSEFWRSBBTlkgTElBQklMSVRZIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORyBXSVRIT1VUIExJTUlUQVRJT04gTE9TVCBQUk9GSVRTKSwgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPUiBESVNUUklCVVRJT04gT0YgVEhFIFBST0dSQU0gT1IgVEhFIEVYRVJDSVNFIE9GIEFOWSBSSUdIVFMgR1JBTlRFRCBIRVJFVU5ERVIsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLgorCisKKzcuIEdFTkVSQUwKKworSWYgYW55IHByb3Zpc2lvbiBvZiB0aGlzIEFncmVlbWVudCBpcyBpbnZhbGlkIG9yIHVuZW5mb3JjZWFibGUgdW5kZXIgYXBwbGljYWJsZSBsYXcsIGl0IHNoYWxsIG5vdCBhZmZlY3QgdGhlIHZhbGlkaXR5IG9yIGVuZm9yY2VhYmlsaXR5IG9mIHRoZSByZW1haW5kZXIgb2YgdGhlIHRlcm1zIG9mIHRoaXMgQWdyZWVtZW50LCBhbmQgd2l0aG91dCBmdXJ0aGVyIGFjdGlvbiBieSB0aGUgcGFydGllcyBoZXJldG8sIHN1Y2ggcHJvdmlzaW9uIHNoYWxsIGJlIHJlZm9ybWVkIHRvIHRoZSBtaW5pbXVtIGV4dGVudCBuZWNlc3NhcnkgdG8gbWFrZSBzdWNoIHByb3Zpc2lvbiB2YWxpZCBhbmQgZW5mb3JjZWFibGUuCisKKworSWYgUmVjaXBpZW50IGluc3RpdHV0ZXMgcGF0ZW50IGxpdGlnYXRpb24gYWdhaW5zdCBhIENvbnRyaWJ1dG9yIHdpdGggcmVzcGVjdCB0byBhIHBhdGVudCBhcHBsaWNhYmxlIHRvIHNvZnR3YXJlIChpbmNsdWRpbmcgYSBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSwgdGhlbiBhbnkgcGF0ZW50IGxpY2Vuc2VzIGdyYW50ZWQgYnkgdGhhdCBDb250cmlidXRvciB0byBzdWNoIFJlY2lwaWVudCB1bmRlciB0aGlzIEFncmVlbWVudCBzaGFsbCB0ZXJtaW5hdGUgYXMgb2YgdGhlIGRhdGUgc3VjaCBsaXRpZ2F0aW9uIGlzIGZpbGVkLiBJbiBhZGRpdGlvbiwgaWYgUmVjaXBpZW50IGluc3RpdHV0ZXMgcGF0ZW50IGxpdGlnYXRpb24gYWdhaW5zdCBhbnkgZW50aXR5IChpbmNsdWRpbmcgYSBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0IHRoZSBQcm9ncmFtIGl0c2VsZiAoZXhjbHVkaW5nIGNvbWJpbmF0aW9ucyBvZiB0aGUgUHJvZ3JhbSB3aXRoIG90aGVyIHNvZnR3YXJlIG9yIGhhcmR3YXJlKSBpbmZyaW5nZXMgc3VjaCBSZWNpcGllbnQncyBwYXRlbnQocyksIHRoZW4gc3VjaCBSZWNpcGllbnQncyByaWdodHMgZ3JhbnRlZCB1bmRlciBTZWN0aW9uIDIoYikgc2hhbGwgdGVybWluYXRlIGFzIG9mIHRoZSBkYXRlIHN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4KKworCitBbGwgUmVjaXBpZW50J3MgcmlnaHRzIHVuZGVyIHRoaXMgQWdyZWVtZW50IHNoYWxsIHRlcm1pbmF0ZSBpZiBpdCBmYWlscyB0byBjb21wbHkgd2l0aCBhbnkgb2YgdGhlIG1hdGVyaWFsIHRlcm1zIG9yIGNvbmRpdGlvbnMgb2YgdGhpcyBBZ3JlZW1lbnQgYW5kIGRvZXMgbm90IGN1cmUgc3VjaCBmYWlsdXJlIGluIGEgcmVhc29uYWJsZSBwZXJpb2Qgb2YgdGltZSBhZnRlciBiZWNvbWluZyBhd2FyZSBvZiBzdWNoIG5vbmNvbXBsaWFuY2UuIElmIGFsbCBSZWNpcGllbnQncyByaWdodHMgdW5kZXIgdGhpcyBBZ3JlZW1lbnQgdGVybWluYXRlLCBSZWNpcGllbnQgYWdyZWVzIHRvIGNlYXNlIHVzZSBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtIGFzIHNvb24gYXMgcmVhc29uYWJseSBwcmFjdGljYWJsZS4gSG93ZXZlciwgUmVjaXBpZW50J3Mgb2JsaWdhdGlvbnMgdW5kZXIgdGhpcyBBZ3JlZW1lbnQgYW5kIGFueSBsaWNlbnNlcyBncmFudGVkIGJ5IFJlY2lwaWVudCByZWxhdGluZyB0byB0aGUgUHJvZ3JhbSBzaGFsbCBjb250aW51ZSBhbmQgc3Vydml2ZS4gCisKKworRXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgY29waWVzIG9mIHRoaXMgQWdyZWVtZW50LCBidXQgaW4gb3JkZXIgdG8gYXZvaWQgaW5jb25zaXN0ZW5jeSB0aGUgQWdyZWVtZW50IGlzIGNvcHlyaWdodGVkIGFuZCBtYXkgb25seSBiZSBtb2RpZmllZCBpbiB0aGUgZm9sbG93aW5nIG1hbm5lci4gVGhlIEFncmVlbWVudCBTdGV3YXJkIHJlc2VydmVzIHRoZSByaWdodCB0byBwdWJsaXNoIG5ldyB2ZXJzaW9ucyAoaW5jbHVkaW5nIHJldmlzaW9ucykgb2YgdGhpcyBBZ3JlZW1lbnQgZnJvbSB0aW1lIHRvIHRpbWUuIE5vIG9uZSBvdGhlciB0aGFuIHRoZSBBZ3JlZW1lbnQgU3Rld2FyZCBoYXMgdGhlIHJpZ2h0IHRvIG1vZGlmeSB0aGlzIEFncmVlbWVudC4gSUJNIGlzIHRoZSBpbml0aWFsIEFncmVlbWVudCBTdGV3YXJkLiBJQk0gbWF5IGFzc2lnbiB0aGUgcmVzcG9uc2liaWxpdHkgdG8gc2VydmUgYXMgdGhlIEFncmVlbWVudCBTdGV3YXJkIHRvIGEgc3VpdGFibGUgc2VwYXJhdGUgZW50aXR5LiBFYWNoIG5ldyB2ZXJzaW9uIG9mIHRoZSBBZ3JlZW1lbnQgd2lsbCBiZSBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiBUaGUgUHJvZ3JhbSAoaW5jbHVkaW5nIENvbnRyaWJ1dGlvbnMpIG1heSBhbHdheXMgYmUgZGlzdHJpYnV0ZWQgc3ViamVjdCB0byB0aGUgdmVyc2lvbiBvZiB0aGUgQWdyZWVtZW50IHVuZGVyIHdoaWNoIGl0IHdhcyByZWNlaXZlZC4gSW4gYWRkaXRpb24sIGFmdGVyIGEgbmV3IHZlcnNpb24gb2YgdGhlIEFncmVlbWVudCBpcyBwdWJsaXNoZWQsIENvbnRyaWJ1dG9yIG1heSBlbGVjdCB0byBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIChpbmNsdWRpbmcgaXRzIENvbnRyaWJ1dGlvbnMpIHVuZGVyIHRoZSBuZXcgdmVyc2lvbi4gRXhjZXB0IGFzIGV4cHJlc3NseSBzdGF0ZWQgaW4gU2VjdGlvbnMgMihhKSBhbmQgMihiKSBhYm92ZSwgUmVjaXBpZW50IHJlY2VpdmVzIG5vIHJpZ2h0cyBvciBsaWNlbnNlcyB0byB0aGUgaW50ZWxsZWN0dWFsIHByb3BlcnR5IG9mIGFueSBDb250cmlidXRvciB1bmRlciB0aGlzIEFncmVlbWVudCwgd2hldGhlciBleHByZXNzbHksIGJ5IGltcGxpY2F0aW9uLCBlc3RvcHBlbCBvciBvdGhlcndpc2UuIEFsbCByaWdodHMgaW4gdGhlIFByb2dyYW0gbm90IGV4cHJlc3NseSBncmFudGVkIHVuZGVyIHRoaXMgQWdyZWVtZW50IGFyZSByZXNlcnZlZC4KKworCitUaGlzIEFncmVlbWVudCBpcyBnb3Zlcm5lZCBieSB0aGUgbGF3cyBvZiB0aGUgU3RhdGUgb2YgTmV3IFlvcmsgYW5kIHRoZSBpbnRlbGxlY3R1YWwgcHJvcGVydHkgbGF3cyBvZiB0aGUgVW5pdGVkIFN0YXRlcyBvZiBBbWVyaWNhLiBObyBwYXJ0eSB0byB0aGlzIEFncmVlbWVudCB3aWxsIGJyaW5nIGEgbGVnYWwgYWN0aW9uIHVuZGVyIHRoaXMgQWdyZWVtZW50IG1vcmUgdGhhbiBvbmUgeWVhciBhZnRlciB0aGUgY2F1c2Ugb2YgYWN0aW9uIGFyb3NlLiBFYWNoIHBhcnR5IHdhaXZlcyBpdHMgcmlnaHRzIHRvIGEganVyeSB0cmlhbCBpbiBhbnkgcmVzdWx0aW5nIGxpdGlnYXRpb24uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvYWJvdXRfZmlsZXMvbXBsLTEuMS50eHQgYi9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9hYm91dF9maWxlcy9tcGwtMS4xLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNmY5NjUxCi0tLSAvZGV2L251bGwKKysrIGIvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvYWJvdXRfZmlsZXMvbXBsLTEuMS50eHQKQEAgLTAsMCArMSw0NjkgQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTU9aSUxMQSBQVUJMSUMgTElDRU5TRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uIDEuMQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0KKworMS4gRGVmaW5pdGlvbnMuCisKKyAgICAgMS4wLjEuICJDb21tZXJjaWFsIFVzZSIgbWVhbnMgZGlzdHJpYnV0aW9uIG9yIG90aGVyd2lzZSBtYWtpbmcgdGhlCisgICAgIENvdmVyZWQgQ29kZSBhdmFpbGFibGUgdG8gYSB0aGlyZCBwYXJ0eS4KKworICAgICAxLjEuICJDb250cmlidXRvciIgbWVhbnMgZWFjaCBlbnRpdHkgdGhhdCBjcmVhdGVzIG9yIGNvbnRyaWJ1dGVzIHRvCisgICAgIHRoZSBjcmVhdGlvbiBvZiBNb2RpZmljYXRpb25zLgorCisgICAgIDEuMi4gIkNvbnRyaWJ1dG9yIFZlcnNpb24iIG1lYW5zIHRoZSBjb21iaW5hdGlvbiBvZiB0aGUgT3JpZ2luYWwKKyAgICAgQ29kZSwgcHJpb3IgTW9kaWZpY2F0aW9ucyB1c2VkIGJ5IGEgQ29udHJpYnV0b3IsIGFuZCB0aGUgTW9kaWZpY2F0aW9ucworICAgICBtYWRlIGJ5IHRoYXQgcGFydGljdWxhciBDb250cmlidXRvci4KKworICAgICAxLjMuICJDb3ZlcmVkIENvZGUiIG1lYW5zIHRoZSBPcmlnaW5hbCBDb2RlIG9yIE1vZGlmaWNhdGlvbnMgb3IgdGhlCisgICAgIGNvbWJpbmF0aW9uIG9mIHRoZSBPcmlnaW5hbCBDb2RlIGFuZCBNb2RpZmljYXRpb25zLCBpbiBlYWNoIGNhc2UKKyAgICAgaW5jbHVkaW5nIHBvcnRpb25zIHRoZXJlb2YuCisKKyAgICAgMS40LiAiRWxlY3Ryb25pYyBEaXN0cmlidXRpb24gTWVjaGFuaXNtIiBtZWFucyBhIG1lY2hhbmlzbSBnZW5lcmFsbHkKKyAgICAgYWNjZXB0ZWQgaW4gdGhlIHNvZnR3YXJlIGRldmVsb3BtZW50IGNvbW11bml0eSBmb3IgdGhlIGVsZWN0cm9uaWMKKyAgICAgdHJhbnNmZXIgb2YgZGF0YS4KKworICAgICAxLjUuICJFeGVjdXRhYmxlIiBtZWFucyBDb3ZlcmVkIENvZGUgaW4gYW55IGZvcm0gb3RoZXIgdGhhbiBTb3VyY2UKKyAgICAgQ29kZS4KKworICAgICAxLjYuICJJbml0aWFsIERldmVsb3BlciIgbWVhbnMgdGhlIGluZGl2aWR1YWwgb3IgZW50aXR5IGlkZW50aWZpZWQKKyAgICAgYXMgdGhlIEluaXRpYWwgRGV2ZWxvcGVyIGluIHRoZSBTb3VyY2UgQ29kZSBub3RpY2UgcmVxdWlyZWQgYnkgRXhoaWJpdAorICAgICBBLgorCisgICAgIDEuNy4gIkxhcmdlciBXb3JrIiBtZWFucyBhIHdvcmsgd2hpY2ggY29tYmluZXMgQ292ZXJlZCBDb2RlIG9yCisgICAgIHBvcnRpb25zIHRoZXJlb2Ygd2l0aCBjb2RlIG5vdCBnb3Zlcm5lZCBieSB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLgorCisgICAgIDEuOC4gIkxpY2Vuc2UiIG1lYW5zIHRoaXMgZG9jdW1lbnQuCisKKyAgICAgMS44LjEuICJMaWNlbnNhYmxlIiBtZWFucyBoYXZpbmcgdGhlIHJpZ2h0IHRvIGdyYW50LCB0byB0aGUgbWF4aW11bQorICAgICBleHRlbnQgcG9zc2libGUsIHdoZXRoZXIgYXQgdGhlIHRpbWUgb2YgdGhlIGluaXRpYWwgZ3JhbnQgb3IKKyAgICAgc3Vic2VxdWVudGx5IGFjcXVpcmVkLCBhbnkgYW5kIGFsbCBvZiB0aGUgcmlnaHRzIGNvbnZleWVkIGhlcmVpbi4KKworICAgICAxLjkuICJNb2RpZmljYXRpb25zIiBtZWFucyBhbnkgYWRkaXRpb24gdG8gb3IgZGVsZXRpb24gZnJvbSB0aGUKKyAgICAgc3Vic3RhbmNlIG9yIHN0cnVjdHVyZSBvZiBlaXRoZXIgdGhlIE9yaWdpbmFsIENvZGUgb3IgYW55IHByZXZpb3VzCisgICAgIE1vZGlmaWNhdGlvbnMuIFdoZW4gQ292ZXJlZCBDb2RlIGlzIHJlbGVhc2VkIGFzIGEgc2VyaWVzIG9mIGZpbGVzLCBhCisgICAgIE1vZGlmaWNhdGlvbiBpczoKKyAgICAgICAgICBBLiBBbnkgYWRkaXRpb24gdG8gb3IgZGVsZXRpb24gZnJvbSB0aGUgY29udGVudHMgb2YgYSBmaWxlCisgICAgICAgICAgY29udGFpbmluZyBPcmlnaW5hbCBDb2RlIG9yIHByZXZpb3VzIE1vZGlmaWNhdGlvbnMuCisKKyAgICAgICAgICBCLiBBbnkgbmV3IGZpbGUgdGhhdCBjb250YWlucyBhbnkgcGFydCBvZiB0aGUgT3JpZ2luYWwgQ29kZSBvcgorICAgICAgICAgIHByZXZpb3VzIE1vZGlmaWNhdGlvbnMuCisKKyAgICAgMS4xMC4gIk9yaWdpbmFsIENvZGUiIG1lYW5zIFNvdXJjZSBDb2RlIG9mIGNvbXB1dGVyIHNvZnR3YXJlIGNvZGUKKyAgICAgd2hpY2ggaXMgZGVzY3JpYmVkIGluIHRoZSBTb3VyY2UgQ29kZSBub3RpY2UgcmVxdWlyZWQgYnkgRXhoaWJpdCBBIGFzCisgICAgIE9yaWdpbmFsIENvZGUsIGFuZCB3aGljaCwgYXQgdGhlIHRpbWUgb2YgaXRzIHJlbGVhc2UgdW5kZXIgdGhpcworICAgICBMaWNlbnNlIGlzIG5vdCBhbHJlYWR5IENvdmVyZWQgQ29kZSBnb3Zlcm5lZCBieSB0aGlzIExpY2Vuc2UuCisKKyAgICAgMS4xMC4xLiAiUGF0ZW50IENsYWltcyIgbWVhbnMgYW55IHBhdGVudCBjbGFpbShzKSwgbm93IG93bmVkIG9yCisgICAgIGhlcmVhZnRlciBhY3F1aXJlZCwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiwgIG1ldGhvZCwgcHJvY2VzcywKKyAgICAgYW5kIGFwcGFyYXR1cyBjbGFpbXMsIGluIGFueSBwYXRlbnQgTGljZW5zYWJsZSBieSBncmFudG9yLgorCisgICAgIDEuMTEuICJTb3VyY2UgQ29kZSIgbWVhbnMgdGhlIHByZWZlcnJlZCBmb3JtIG9mIHRoZSBDb3ZlcmVkIENvZGUgZm9yCisgICAgIG1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LCBpbmNsdWRpbmcgYWxsIG1vZHVsZXMgaXQgY29udGFpbnMsIHBsdXMKKyAgICAgYW55IGFzc29jaWF0ZWQgaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMsIHNjcmlwdHMgdXNlZCB0byBjb250cm9sCisgICAgIGNvbXBpbGF0aW9uIGFuZCBpbnN0YWxsYXRpb24gb2YgYW4gRXhlY3V0YWJsZSwgb3Igc291cmNlIGNvZGUKKyAgICAgZGlmZmVyZW50aWFsIGNvbXBhcmlzb25zIGFnYWluc3QgZWl0aGVyIHRoZSBPcmlnaW5hbCBDb2RlIG9yIGFub3RoZXIKKyAgICAgd2VsbCBrbm93biwgYXZhaWxhYmxlIENvdmVyZWQgQ29kZSBvZiB0aGUgQ29udHJpYnV0b3IncyBjaG9pY2UuIFRoZQorICAgICBTb3VyY2UgQ29kZSBjYW4gYmUgaW4gYSBjb21wcmVzc2VkIG9yIGFyY2hpdmFsIGZvcm0sIHByb3ZpZGVkIHRoZQorICAgICBhcHByb3ByaWF0ZSBkZWNvbXByZXNzaW9uIG9yIGRlLWFyY2hpdmluZyBzb2Z0d2FyZSBpcyB3aWRlbHkgYXZhaWxhYmxlCisgICAgIGZvciBubyBjaGFyZ2UuCisKKyAgICAgMS4xMi4gIllvdSIgKG9yICJZb3VyIikgIG1lYW5zIGFuIGluZGl2aWR1YWwgb3IgYSBsZWdhbCBlbnRpdHkKKyAgICAgZXhlcmNpc2luZyByaWdodHMgdW5kZXIsIGFuZCBjb21wbHlpbmcgd2l0aCBhbGwgb2YgdGhlIHRlcm1zIG9mLCB0aGlzCisgICAgIExpY2Vuc2Ugb3IgYSBmdXR1cmUgdmVyc2lvbiBvZiB0aGlzIExpY2Vuc2UgaXNzdWVkIHVuZGVyIFNlY3Rpb24gNi4xLgorICAgICBGb3IgbGVnYWwgZW50aXRpZXMsICJZb3UiIGluY2x1ZGVzIGFueSBlbnRpdHkgd2hpY2ggY29udHJvbHMsIGlzCisgICAgIGNvbnRyb2xsZWQgYnksIG9yIGlzIHVuZGVyIGNvbW1vbiBjb250cm9sIHdpdGggWW91LiBGb3IgcHVycG9zZXMgb2YKKyAgICAgdGhpcyBkZWZpbml0aW9uLCAiY29udHJvbCIgbWVhbnMgKGEpIHRoZSBwb3dlciwgZGlyZWN0IG9yIGluZGlyZWN0LAorICAgICB0byBjYXVzZSB0aGUgZGlyZWN0aW9uIG9yIG1hbmFnZW1lbnQgb2Ygc3VjaCBlbnRpdHksIHdoZXRoZXIgYnkKKyAgICAgY29udHJhY3Qgb3Igb3RoZXJ3aXNlLCBvciAoYikgb3duZXJzaGlwIG9mIG1vcmUgdGhhbiBmaWZ0eSBwZXJjZW50CisgICAgICg1MCUpIG9mIHRoZSBvdXRzdGFuZGluZyBzaGFyZXMgb3IgYmVuZWZpY2lhbCBvd25lcnNoaXAgb2Ygc3VjaAorICAgICBlbnRpdHkuCisKKzIuIFNvdXJjZSBDb2RlIExpY2Vuc2UuCisKKyAgICAgMi4xLiBUaGUgSW5pdGlhbCBEZXZlbG9wZXIgR3JhbnQuCisgICAgIFRoZSBJbml0aWFsIERldmVsb3BlciBoZXJlYnkgZ3JhbnRzIFlvdSBhIHdvcmxkLXdpZGUsIHJveWFsdHktZnJlZSwKKyAgICAgbm9uLWV4Y2x1c2l2ZSBsaWNlbnNlLCBzdWJqZWN0IHRvIHRoaXJkIHBhcnR5IGludGVsbGVjdHVhbCBwcm9wZXJ0eQorICAgICBjbGFpbXM6CisgICAgICAgICAgKGEpICB1bmRlciBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIChvdGhlciB0aGFuIHBhdGVudCBvcgorICAgICAgICAgIHRyYWRlbWFyaykgTGljZW5zYWJsZSBieSBJbml0aWFsIERldmVsb3BlciB0byB1c2UsIHJlcHJvZHVjZSwKKyAgICAgICAgICBtb2RpZnksIGRpc3BsYXksIHBlcmZvcm0sIHN1YmxpY2Vuc2UgYW5kIGRpc3RyaWJ1dGUgdGhlIE9yaWdpbmFsCisgICAgICAgICAgQ29kZSAob3IgcG9ydGlvbnMgdGhlcmVvZikgd2l0aCBvciB3aXRob3V0IE1vZGlmaWNhdGlvbnMsIGFuZC9vcgorICAgICAgICAgIGFzIHBhcnQgb2YgYSBMYXJnZXIgV29yazsgYW5kCisKKyAgICAgICAgICAoYikgdW5kZXIgUGF0ZW50cyBDbGFpbXMgaW5mcmluZ2VkIGJ5IHRoZSBtYWtpbmcsIHVzaW5nIG9yCisgICAgICAgICAgc2VsbGluZyBvZiBPcmlnaW5hbCBDb2RlLCB0byBtYWtlLCBoYXZlIG1hZGUsIHVzZSwgcHJhY3RpY2UsCisgICAgICAgICAgc2VsbCwgYW5kIG9mZmVyIGZvciBzYWxlLCBhbmQvb3Igb3RoZXJ3aXNlIGRpc3Bvc2Ugb2YgdGhlCisgICAgICAgICAgT3JpZ2luYWwgQ29kZSAob3IgcG9ydGlvbnMgdGhlcmVvZikuCisKKyAgICAgICAgICAoYykgdGhlIGxpY2Vuc2VzIGdyYW50ZWQgaW4gdGhpcyBTZWN0aW9uIDIuMShhKSBhbmQgKGIpIGFyZQorICAgICAgICAgIGVmZmVjdGl2ZSBvbiB0aGUgZGF0ZSBJbml0aWFsIERldmVsb3BlciBmaXJzdCBkaXN0cmlidXRlcworICAgICAgICAgIE9yaWdpbmFsIENvZGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4KKworICAgICAgICAgIChkKSBOb3R3aXRoc3RhbmRpbmcgU2VjdGlvbiAyLjEoYikgYWJvdmUsIG5vIHBhdGVudCBsaWNlbnNlIGlzCisgICAgICAgICAgZ3JhbnRlZDogMSkgZm9yIGNvZGUgdGhhdCBZb3UgZGVsZXRlIGZyb20gdGhlIE9yaWdpbmFsIENvZGU7IDIpCisgICAgICAgICAgc2VwYXJhdGUgZnJvbSB0aGUgT3JpZ2luYWwgQ29kZTsgIG9yIDMpIGZvciBpbmZyaW5nZW1lbnRzIGNhdXNlZAorICAgICAgICAgIGJ5OiBpKSB0aGUgbW9kaWZpY2F0aW9uIG9mIHRoZSBPcmlnaW5hbCBDb2RlIG9yIGlpKSB0aGUKKyAgICAgICAgICBjb21iaW5hdGlvbiBvZiB0aGUgT3JpZ2luYWwgQ29kZSB3aXRoIG90aGVyIHNvZnR3YXJlIG9yIGRldmljZXMuCisKKyAgICAgMi4yLiBDb250cmlidXRvciBHcmFudC4KKyAgICAgU3ViamVjdCB0byB0aGlyZCBwYXJ0eSBpbnRlbGxlY3R1YWwgcHJvcGVydHkgY2xhaW1zLCBlYWNoIENvbnRyaWJ1dG9yCisgICAgIGhlcmVieSBncmFudHMgWW91IGEgd29ybGQtd2lkZSwgcm95YWx0eS1mcmVlLCBub24tZXhjbHVzaXZlIGxpY2Vuc2UKKworICAgICAgICAgIChhKSAgdW5kZXIgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyAob3RoZXIgdGhhbiBwYXRlbnQgb3IKKyAgICAgICAgICB0cmFkZW1hcmspIExpY2Vuc2FibGUgYnkgQ29udHJpYnV0b3IsIHRvIHVzZSwgcmVwcm9kdWNlLCBtb2RpZnksCisgICAgICAgICAgZGlzcGxheSwgcGVyZm9ybSwgc3VibGljZW5zZSBhbmQgZGlzdHJpYnV0ZSB0aGUgTW9kaWZpY2F0aW9ucworICAgICAgICAgIGNyZWF0ZWQgYnkgc3VjaCBDb250cmlidXRvciAob3IgcG9ydGlvbnMgdGhlcmVvZikgZWl0aGVyIG9uIGFuCisgICAgICAgICAgdW5tb2RpZmllZCBiYXNpcywgd2l0aCBvdGhlciBNb2RpZmljYXRpb25zLCBhcyBDb3ZlcmVkIENvZGUKKyAgICAgICAgICBhbmQvb3IgYXMgcGFydCBvZiBhIExhcmdlciBXb3JrOyBhbmQKKworICAgICAgICAgIChiKSB1bmRlciBQYXRlbnQgQ2xhaW1zIGluZnJpbmdlZCBieSB0aGUgbWFraW5nLCB1c2luZywgb3IKKyAgICAgICAgICBzZWxsaW5nIG9mICBNb2RpZmljYXRpb25zIG1hZGUgYnkgdGhhdCBDb250cmlidXRvciBlaXRoZXIgYWxvbmUKKyAgICAgICAgICBhbmQvb3IgaW4gY29tYmluYXRpb24gd2l0aCBpdHMgQ29udHJpYnV0b3IgVmVyc2lvbiAob3IgcG9ydGlvbnMKKyAgICAgICAgICBvZiBzdWNoIGNvbWJpbmF0aW9uKSwgdG8gbWFrZSwgdXNlLCBzZWxsLCBvZmZlciBmb3Igc2FsZSwgaGF2ZQorICAgICAgICAgIG1hZGUsIGFuZC9vciBvdGhlcndpc2UgZGlzcG9zZSBvZjogMSkgTW9kaWZpY2F0aW9ucyBtYWRlIGJ5IHRoYXQKKyAgICAgICAgICBDb250cmlidXRvciAob3IgcG9ydGlvbnMgdGhlcmVvZik7IGFuZCAyKSB0aGUgY29tYmluYXRpb24gb2YKKyAgICAgICAgICBNb2RpZmljYXRpb25zIG1hZGUgYnkgdGhhdCBDb250cmlidXRvciB3aXRoIGl0cyBDb250cmlidXRvcgorICAgICAgICAgIFZlcnNpb24gKG9yIHBvcnRpb25zIG9mIHN1Y2ggY29tYmluYXRpb24pLgorCisgICAgICAgICAgKGMpIHRoZSBsaWNlbnNlcyBncmFudGVkIGluIFNlY3Rpb25zIDIuMihhKSBhbmQgMi4yKGIpIGFyZQorICAgICAgICAgIGVmZmVjdGl2ZSBvbiB0aGUgZGF0ZSBDb250cmlidXRvciBmaXJzdCBtYWtlcyBDb21tZXJjaWFsIFVzZSBvZgorICAgICAgICAgIHRoZSBDb3ZlcmVkIENvZGUuCisKKyAgICAgICAgICAoZCkgICAgTm90d2l0aHN0YW5kaW5nIFNlY3Rpb24gMi4yKGIpIGFib3ZlLCBubyBwYXRlbnQgbGljZW5zZSBpcworICAgICAgICAgIGdyYW50ZWQ6IDEpIGZvciBhbnkgY29kZSB0aGF0IENvbnRyaWJ1dG9yIGhhcyBkZWxldGVkIGZyb20gdGhlCisgICAgICAgICAgQ29udHJpYnV0b3IgVmVyc2lvbjsgMikgIHNlcGFyYXRlIGZyb20gdGhlIENvbnRyaWJ1dG9yIFZlcnNpb247CisgICAgICAgICAgMykgIGZvciBpbmZyaW5nZW1lbnRzIGNhdXNlZCBieTogaSkgdGhpcmQgcGFydHkgbW9kaWZpY2F0aW9ucyBvZgorICAgICAgICAgIENvbnRyaWJ1dG9yIFZlcnNpb24gb3IgaWkpICB0aGUgY29tYmluYXRpb24gb2YgTW9kaWZpY2F0aW9ucyBtYWRlCisgICAgICAgICAgYnkgdGhhdCBDb250cmlidXRvciB3aXRoIG90aGVyIHNvZnR3YXJlICAoZXhjZXB0IGFzIHBhcnQgb2YgdGhlCisgICAgICAgICAgQ29udHJpYnV0b3IgVmVyc2lvbikgb3Igb3RoZXIgZGV2aWNlczsgb3IgNCkgdW5kZXIgUGF0ZW50IENsYWltcworICAgICAgICAgIGluZnJpbmdlZCBieSBDb3ZlcmVkIENvZGUgaW4gdGhlIGFic2VuY2Ugb2YgTW9kaWZpY2F0aW9ucyBtYWRlIGJ5CisgICAgICAgICAgdGhhdCBDb250cmlidXRvci4KKworMy4gRGlzdHJpYnV0aW9uIE9ibGlnYXRpb25zLgorCisgICAgIDMuMS4gQXBwbGljYXRpb24gb2YgTGljZW5zZS4KKyAgICAgVGhlIE1vZGlmaWNhdGlvbnMgd2hpY2ggWW91IGNyZWF0ZSBvciB0byB3aGljaCBZb3UgY29udHJpYnV0ZSBhcmUKKyAgICAgZ292ZXJuZWQgYnkgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICAgICBTZWN0aW9uIDIuMi4gVGhlIFNvdXJjZSBDb2RlIHZlcnNpb24gb2YgQ292ZXJlZCBDb2RlIG1heSBiZQorICAgICBkaXN0cmlidXRlZCBvbmx5IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2Ugb3IgYSBmdXR1cmUgdmVyc2lvbgorICAgICBvZiB0aGlzIExpY2Vuc2UgcmVsZWFzZWQgdW5kZXIgU2VjdGlvbiA2LjEsIGFuZCBZb3UgbXVzdCBpbmNsdWRlIGEKKyAgICAgY29weSBvZiB0aGlzIExpY2Vuc2Ugd2l0aCBldmVyeSBjb3B5IG9mIHRoZSBTb3VyY2UgQ29kZSBZb3UKKyAgICAgZGlzdHJpYnV0ZS4gWW91IG1heSBub3Qgb2ZmZXIgb3IgaW1wb3NlIGFueSB0ZXJtcyBvbiBhbnkgU291cmNlIENvZGUKKyAgICAgdmVyc2lvbiB0aGF0IGFsdGVycyBvciByZXN0cmljdHMgdGhlIGFwcGxpY2FibGUgdmVyc2lvbiBvZiB0aGlzCisgICAgIExpY2Vuc2Ugb3IgdGhlIHJlY2lwaWVudHMnIHJpZ2h0cyBoZXJldW5kZXIuIEhvd2V2ZXIsIFlvdSBtYXkgaW5jbHVkZQorICAgICBhbiBhZGRpdGlvbmFsIGRvY3VtZW50IG9mZmVyaW5nIHRoZSBhZGRpdGlvbmFsIHJpZ2h0cyBkZXNjcmliZWQgaW4KKyAgICAgU2VjdGlvbiAzLjUuCisKKyAgICAgMy4yLiBBdmFpbGFiaWxpdHkgb2YgU291cmNlIENvZGUuCisgICAgIEFueSBNb2RpZmljYXRpb24gd2hpY2ggWW91IGNyZWF0ZSBvciB0byB3aGljaCBZb3UgY29udHJpYnV0ZSBtdXN0IGJlCisgICAgIG1hZGUgYXZhaWxhYmxlIGluIFNvdXJjZSBDb2RlIGZvcm0gdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZQorICAgICBlaXRoZXIgb24gdGhlIHNhbWUgbWVkaWEgYXMgYW4gRXhlY3V0YWJsZSB2ZXJzaW9uIG9yIHZpYSBhbiBhY2NlcHRlZAorICAgICBFbGVjdHJvbmljIERpc3RyaWJ1dGlvbiBNZWNoYW5pc20gdG8gYW55b25lIHRvIHdob20geW91IG1hZGUgYW4KKyAgICAgRXhlY3V0YWJsZSB2ZXJzaW9uIGF2YWlsYWJsZTsgYW5kIGlmIG1hZGUgYXZhaWxhYmxlIHZpYSBFbGVjdHJvbmljCisgICAgIERpc3RyaWJ1dGlvbiBNZWNoYW5pc20sIG11c3QgcmVtYWluIGF2YWlsYWJsZSBmb3IgYXQgbGVhc3QgdHdlbHZlICgxMikKKyAgICAgbW9udGhzIGFmdGVyIHRoZSBkYXRlIGl0IGluaXRpYWxseSBiZWNhbWUgYXZhaWxhYmxlLCBvciBhdCBsZWFzdCBzaXgKKyAgICAgKDYpIG1vbnRocyBhZnRlciBhIHN1YnNlcXVlbnQgdmVyc2lvbiBvZiB0aGF0IHBhcnRpY3VsYXIgTW9kaWZpY2F0aW9uCisgICAgIGhhcyBiZWVuIG1hZGUgYXZhaWxhYmxlIHRvIHN1Y2ggcmVjaXBpZW50cy4gWW91IGFyZSByZXNwb25zaWJsZSBmb3IKKyAgICAgZW5zdXJpbmcgdGhhdCB0aGUgU291cmNlIENvZGUgdmVyc2lvbiByZW1haW5zIGF2YWlsYWJsZSBldmVuIGlmIHRoZQorICAgICBFbGVjdHJvbmljIERpc3RyaWJ1dGlvbiBNZWNoYW5pc20gaXMgbWFpbnRhaW5lZCBieSBhIHRoaXJkIHBhcnR5LgorCisgICAgIDMuMy4gRGVzY3JpcHRpb24gb2YgTW9kaWZpY2F0aW9ucy4KKyAgICAgWW91IG11c3QgY2F1c2UgYWxsIENvdmVyZWQgQ29kZSB0byB3aGljaCBZb3UgY29udHJpYnV0ZSB0byBjb250YWluIGEKKyAgICAgZmlsZSBkb2N1bWVudGluZyB0aGUgY2hhbmdlcyBZb3UgbWFkZSB0byBjcmVhdGUgdGhhdCBDb3ZlcmVkIENvZGUgYW5kCisgICAgIHRoZSBkYXRlIG9mIGFueSBjaGFuZ2UuIFlvdSBtdXN0IGluY2x1ZGUgYSBwcm9taW5lbnQgc3RhdGVtZW50IHRoYXQKKyAgICAgdGhlIE1vZGlmaWNhdGlvbiBpcyBkZXJpdmVkLCBkaXJlY3RseSBvciBpbmRpcmVjdGx5LCBmcm9tIE9yaWdpbmFsCisgICAgIENvZGUgcHJvdmlkZWQgYnkgdGhlIEluaXRpYWwgRGV2ZWxvcGVyIGFuZCBpbmNsdWRpbmcgdGhlIG5hbWUgb2YgdGhlCisgICAgIEluaXRpYWwgRGV2ZWxvcGVyIGluIChhKSB0aGUgU291cmNlIENvZGUsIGFuZCAoYikgaW4gYW55IG5vdGljZSBpbiBhbgorICAgICBFeGVjdXRhYmxlIHZlcnNpb24gb3IgcmVsYXRlZCBkb2N1bWVudGF0aW9uIGluIHdoaWNoIFlvdSBkZXNjcmliZSB0aGUKKyAgICAgb3JpZ2luIG9yIG93bmVyc2hpcCBvZiB0aGUgQ292ZXJlZCBDb2RlLgorCisgICAgIDMuNC4gSW50ZWxsZWN0dWFsIFByb3BlcnR5IE1hdHRlcnMKKyAgICAgICAgICAoYSkgVGhpcmQgUGFydHkgQ2xhaW1zLgorICAgICAgICAgIElmIENvbnRyaWJ1dG9yIGhhcyBrbm93bGVkZ2UgdGhhdCBhIGxpY2Vuc2UgdW5kZXIgYSB0aGlyZCBwYXJ0eSdzCisgICAgICAgICAgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBpcyByZXF1aXJlZCB0byBleGVyY2lzZSB0aGUgcmlnaHRzCisgICAgICAgICAgZ3JhbnRlZCBieSBzdWNoIENvbnRyaWJ1dG9yIHVuZGVyIFNlY3Rpb25zIDIuMSBvciAyLjIsCisgICAgICAgICAgQ29udHJpYnV0b3IgbXVzdCBpbmNsdWRlIGEgdGV4dCBmaWxlIHdpdGggdGhlIFNvdXJjZSBDb2RlCisgICAgICAgICAgZGlzdHJpYnV0aW9uIHRpdGxlZCAiTEVHQUwiIHdoaWNoIGRlc2NyaWJlcyB0aGUgY2xhaW0gYW5kIHRoZQorICAgICAgICAgIHBhcnR5IG1ha2luZyB0aGUgY2xhaW0gaW4gc3VmZmljaWVudCBkZXRhaWwgdGhhdCBhIHJlY2lwaWVudCB3aWxsCisgICAgICAgICAga25vdyB3aG9tIHRvIGNvbnRhY3QuIElmIENvbnRyaWJ1dG9yIG9idGFpbnMgc3VjaCBrbm93bGVkZ2UgYWZ0ZXIKKyAgICAgICAgICB0aGUgTW9kaWZpY2F0aW9uIGlzIG1hZGUgYXZhaWxhYmxlIGFzIGRlc2NyaWJlZCBpbiBTZWN0aW9uIDMuMiwKKyAgICAgICAgICBDb250cmlidXRvciBzaGFsbCBwcm9tcHRseSBtb2RpZnkgdGhlIExFR0FMIGZpbGUgaW4gYWxsIGNvcGllcworICAgICAgICAgIENvbnRyaWJ1dG9yIG1ha2VzIGF2YWlsYWJsZSB0aGVyZWFmdGVyIGFuZCBzaGFsbCB0YWtlIG90aGVyIHN0ZXBzCisgICAgICAgICAgKHN1Y2ggYXMgbm90aWZ5aW5nIGFwcHJvcHJpYXRlIG1haWxpbmcgbGlzdHMgb3IgbmV3c2dyb3VwcykKKyAgICAgICAgICByZWFzb25hYmx5IGNhbGN1bGF0ZWQgdG8gaW5mb3JtIHRob3NlIHdobyByZWNlaXZlZCB0aGUgQ292ZXJlZAorICAgICAgICAgIENvZGUgdGhhdCBuZXcga25vd2xlZGdlIGhhcyBiZWVuIG9idGFpbmVkLgorCisgICAgICAgICAgKGIpIENvbnRyaWJ1dG9yIEFQSXMuCisgICAgICAgICAgSWYgQ29udHJpYnV0b3IncyBNb2RpZmljYXRpb25zIGluY2x1ZGUgYW4gYXBwbGljYXRpb24gcHJvZ3JhbW1pbmcKKyAgICAgICAgICBpbnRlcmZhY2UgYW5kIENvbnRyaWJ1dG9yIGhhcyBrbm93bGVkZ2Ugb2YgcGF0ZW50IGxpY2Vuc2VzIHdoaWNoCisgICAgICAgICAgYXJlIHJlYXNvbmFibHkgbmVjZXNzYXJ5IHRvIGltcGxlbWVudCB0aGF0IEFQSSwgQ29udHJpYnV0b3IgbXVzdAorICAgICAgICAgIGFsc28gaW5jbHVkZSB0aGlzIGluZm9ybWF0aW9uIGluIHRoZSBMRUdBTCBmaWxlLgorCisgICAgICAgICAgICAgICAoYykgICAgUmVwcmVzZW50YXRpb25zLgorICAgICAgICAgIENvbnRyaWJ1dG9yIHJlcHJlc2VudHMgdGhhdCwgZXhjZXB0IGFzIGRpc2Nsb3NlZCBwdXJzdWFudCB0bworICAgICAgICAgIFNlY3Rpb24gMy40KGEpIGFib3ZlLCBDb250cmlidXRvciBiZWxpZXZlcyB0aGF0IENvbnRyaWJ1dG9yJ3MKKyAgICAgICAgICBNb2RpZmljYXRpb25zIGFyZSBDb250cmlidXRvcidzIG9yaWdpbmFsIGNyZWF0aW9uKHMpIGFuZC9vcgorICAgICAgICAgIENvbnRyaWJ1dG9yIGhhcyBzdWZmaWNpZW50IHJpZ2h0cyB0byBncmFudCB0aGUgcmlnaHRzIGNvbnZleWVkIGJ5CisgICAgICAgICAgdGhpcyBMaWNlbnNlLgorCisgICAgIDMuNS4gUmVxdWlyZWQgTm90aWNlcy4KKyAgICAgWW91IG11c3QgZHVwbGljYXRlIHRoZSBub3RpY2UgaW4gRXhoaWJpdCBBIGluIGVhY2ggZmlsZSBvZiB0aGUgU291cmNlCisgICAgIENvZGUuICBJZiBpdCBpcyBub3QgcG9zc2libGUgdG8gcHV0IHN1Y2ggbm90aWNlIGluIGEgcGFydGljdWxhciBTb3VyY2UKKyAgICAgQ29kZSBmaWxlIGR1ZSB0byBpdHMgc3RydWN0dXJlLCB0aGVuIFlvdSBtdXN0IGluY2x1ZGUgc3VjaCBub3RpY2UgaW4gYQorICAgICBsb2NhdGlvbiAoc3VjaCBhcyBhIHJlbGV2YW50IGRpcmVjdG9yeSkgd2hlcmUgYSB1c2VyIHdvdWxkIGJlIGxpa2VseQorICAgICB0byBsb29rIGZvciBzdWNoIGEgbm90aWNlLiAgSWYgWW91IGNyZWF0ZWQgb25lIG9yIG1vcmUgTW9kaWZpY2F0aW9uKHMpCisgICAgIFlvdSBtYXkgYWRkIHlvdXIgbmFtZSBhcyBhIENvbnRyaWJ1dG9yIHRvIHRoZSBub3RpY2UgZGVzY3JpYmVkIGluCisgICAgIEV4aGliaXQgQS4gIFlvdSBtdXN0IGFsc28gZHVwbGljYXRlIHRoaXMgTGljZW5zZSBpbiBhbnkgZG9jdW1lbnRhdGlvbgorICAgICBmb3IgdGhlIFNvdXJjZSBDb2RlIHdoZXJlIFlvdSBkZXNjcmliZSByZWNpcGllbnRzJyByaWdodHMgb3Igb3duZXJzaGlwCisgICAgIHJpZ2h0cyByZWxhdGluZyB0byBDb3ZlcmVkIENvZGUuICBZb3UgbWF5IGNob29zZSB0byBvZmZlciwgYW5kIHRvCisgICAgIGNoYXJnZSBhIGZlZSBmb3IsIHdhcnJhbnR5LCBzdXBwb3J0LCBpbmRlbW5pdHkgb3IgbGlhYmlsaXR5CisgICAgIG9ibGlnYXRpb25zIHRvIG9uZSBvciBtb3JlIHJlY2lwaWVudHMgb2YgQ292ZXJlZCBDb2RlLiBIb3dldmVyLCBZb3UKKyAgICAgbWF5IGRvIHNvIG9ubHkgb24gWW91ciBvd24gYmVoYWxmLCBhbmQgbm90IG9uIGJlaGFsZiBvZiB0aGUgSW5pdGlhbAorICAgICBEZXZlbG9wZXIgb3IgYW55IENvbnRyaWJ1dG9yLiBZb3UgbXVzdCBtYWtlIGl0IGFic29sdXRlbHkgY2xlYXIgdGhhbgorICAgICBhbnkgc3VjaCB3YXJyYW50eSwgc3VwcG9ydCwgaW5kZW1uaXR5IG9yIGxpYWJpbGl0eSBvYmxpZ2F0aW9uIGlzCisgICAgIG9mZmVyZWQgYnkgWW91IGFsb25lLCBhbmQgWW91IGhlcmVieSBhZ3JlZSB0byBpbmRlbW5pZnkgdGhlIEluaXRpYWwKKyAgICAgRGV2ZWxvcGVyIGFuZCBldmVyeSBDb250cmlidXRvciBmb3IgYW55IGxpYWJpbGl0eSBpbmN1cnJlZCBieSB0aGUKKyAgICAgSW5pdGlhbCBEZXZlbG9wZXIgb3Igc3VjaCBDb250cmlidXRvciBhcyBhIHJlc3VsdCBvZiB3YXJyYW50eSwKKyAgICAgc3VwcG9ydCwgaW5kZW1uaXR5IG9yIGxpYWJpbGl0eSB0ZXJtcyBZb3Ugb2ZmZXIuCisKKyAgICAgMy42LiBEaXN0cmlidXRpb24gb2YgRXhlY3V0YWJsZSBWZXJzaW9ucy4KKyAgICAgWW91IG1heSBkaXN0cmlidXRlIENvdmVyZWQgQ29kZSBpbiBFeGVjdXRhYmxlIGZvcm0gb25seSBpZiB0aGUKKyAgICAgcmVxdWlyZW1lbnRzIG9mIFNlY3Rpb24gMy4xLTMuNSBoYXZlIGJlZW4gbWV0IGZvciB0aGF0IENvdmVyZWQgQ29kZSwKKyAgICAgYW5kIGlmIFlvdSBpbmNsdWRlIGEgbm90aWNlIHN0YXRpbmcgdGhhdCB0aGUgU291cmNlIENvZGUgdmVyc2lvbiBvZgorICAgICB0aGUgQ292ZXJlZCBDb2RlIGlzIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLAorICAgICBpbmNsdWRpbmcgYSBkZXNjcmlwdGlvbiBvZiBob3cgYW5kIHdoZXJlIFlvdSBoYXZlIGZ1bGZpbGxlZCB0aGUKKyAgICAgb2JsaWdhdGlvbnMgb2YgU2VjdGlvbiAzLjIuIFRoZSBub3RpY2UgbXVzdCBiZSBjb25zcGljdW91c2x5IGluY2x1ZGVkCisgICAgIGluIGFueSBub3RpY2UgaW4gYW4gRXhlY3V0YWJsZSB2ZXJzaW9uLCByZWxhdGVkIGRvY3VtZW50YXRpb24gb3IKKyAgICAgY29sbGF0ZXJhbCBpbiB3aGljaCBZb3UgZGVzY3JpYmUgcmVjaXBpZW50cycgcmlnaHRzIHJlbGF0aW5nIHRvIHRoZQorICAgICBDb3ZlcmVkIENvZGUuIFlvdSBtYXkgZGlzdHJpYnV0ZSB0aGUgRXhlY3V0YWJsZSB2ZXJzaW9uIG9mIENvdmVyZWQKKyAgICAgQ29kZSBvciBvd25lcnNoaXAgcmlnaHRzIHVuZGVyIGEgbGljZW5zZSBvZiBZb3VyIGNob2ljZSwgd2hpY2ggbWF5CisgICAgIGNvbnRhaW4gdGVybXMgZGlmZmVyZW50IGZyb20gdGhpcyBMaWNlbnNlLCBwcm92aWRlZCB0aGF0IFlvdSBhcmUgaW4KKyAgICAgY29tcGxpYW5jZSB3aXRoIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UgYW5kIHRoYXQgdGhlIGxpY2Vuc2UgZm9yIHRoZQorICAgICBFeGVjdXRhYmxlIHZlcnNpb24gZG9lcyBub3QgYXR0ZW1wdCB0byBsaW1pdCBvciBhbHRlciB0aGUgcmVjaXBpZW50J3MKKyAgICAgcmlnaHRzIGluIHRoZSBTb3VyY2UgQ29kZSB2ZXJzaW9uIGZyb20gdGhlIHJpZ2h0cyBzZXQgZm9ydGggaW4gdGhpcworICAgICBMaWNlbnNlLiBJZiBZb3UgZGlzdHJpYnV0ZSB0aGUgRXhlY3V0YWJsZSB2ZXJzaW9uIHVuZGVyIGEgZGlmZmVyZW50CisgICAgIGxpY2Vuc2UgWW91IG11c3QgbWFrZSBpdCBhYnNvbHV0ZWx5IGNsZWFyIHRoYXQgYW55IHRlcm1zIHdoaWNoIGRpZmZlcgorICAgICBmcm9tIHRoaXMgTGljZW5zZSBhcmUgb2ZmZXJlZCBieSBZb3UgYWxvbmUsIG5vdCBieSB0aGUgSW5pdGlhbAorICAgICBEZXZlbG9wZXIgb3IgYW55IENvbnRyaWJ1dG9yLiBZb3UgaGVyZWJ5IGFncmVlIHRvIGluZGVtbmlmeSB0aGUKKyAgICAgSW5pdGlhbCBEZXZlbG9wZXIgYW5kIGV2ZXJ5IENvbnRyaWJ1dG9yIGZvciBhbnkgbGlhYmlsaXR5IGluY3VycmVkIGJ5CisgICAgIHRoZSBJbml0aWFsIERldmVsb3BlciBvciBzdWNoIENvbnRyaWJ1dG9yIGFzIGEgcmVzdWx0IG9mIGFueSBzdWNoCisgICAgIHRlcm1zIFlvdSBvZmZlci4KKworICAgICAzLjcuIExhcmdlciBXb3Jrcy4KKyAgICAgWW91IG1heSBjcmVhdGUgYSBMYXJnZXIgV29yayBieSBjb21iaW5pbmcgQ292ZXJlZCBDb2RlIHdpdGggb3RoZXIgY29kZQorICAgICBub3QgZ292ZXJuZWQgYnkgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSBhbmQgZGlzdHJpYnV0ZSB0aGUgTGFyZ2VyCisgICAgIFdvcmsgYXMgYSBzaW5nbGUgcHJvZHVjdC4gSW4gc3VjaCBhIGNhc2UsIFlvdSBtdXN0IG1ha2Ugc3VyZSB0aGUKKyAgICAgcmVxdWlyZW1lbnRzIG9mIHRoaXMgTGljZW5zZSBhcmUgZnVsZmlsbGVkIGZvciB0aGUgQ292ZXJlZCBDb2RlLgorCis0LiBJbmFiaWxpdHkgdG8gQ29tcGx5IER1ZSB0byBTdGF0dXRlIG9yIFJlZ3VsYXRpb24uCisKKyAgICAgSWYgaXQgaXMgaW1wb3NzaWJsZSBmb3IgWW91IHRvIGNvbXBseSB3aXRoIGFueSBvZiB0aGUgdGVybXMgb2YgdGhpcworICAgICBMaWNlbnNlIHdpdGggcmVzcGVjdCB0byBzb21lIG9yIGFsbCBvZiB0aGUgQ292ZXJlZCBDb2RlIGR1ZSB0bworICAgICBzdGF0dXRlLCBqdWRpY2lhbCBvcmRlciwgb3IgcmVndWxhdGlvbiB0aGVuIFlvdSBtdXN0OiAoYSkgY29tcGx5IHdpdGgKKyAgICAgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSB0byB0aGUgbWF4aW11bSBleHRlbnQgcG9zc2libGU7IGFuZCAoYikKKyAgICAgZGVzY3JpYmUgdGhlIGxpbWl0YXRpb25zIGFuZCB0aGUgY29kZSB0aGV5IGFmZmVjdC4gU3VjaCBkZXNjcmlwdGlvbgorICAgICBtdXN0IGJlIGluY2x1ZGVkIGluIHRoZSBMRUdBTCBmaWxlIGRlc2NyaWJlZCBpbiBTZWN0aW9uIDMuNCBhbmQgbXVzdAorICAgICBiZSBpbmNsdWRlZCB3aXRoIGFsbCBkaXN0cmlidXRpb25zIG9mIHRoZSBTb3VyY2UgQ29kZS4gRXhjZXB0IHRvIHRoZQorICAgICBleHRlbnQgcHJvaGliaXRlZCBieSBzdGF0dXRlIG9yIHJlZ3VsYXRpb24sIHN1Y2ggZGVzY3JpcHRpb24gbXVzdCBiZQorICAgICBzdWZmaWNpZW50bHkgZGV0YWlsZWQgZm9yIGEgcmVjaXBpZW50IG9mIG9yZGluYXJ5IHNraWxsIHRvIGJlIGFibGUgdG8KKyAgICAgdW5kZXJzdGFuZCBpdC4KKworNS4gQXBwbGljYXRpb24gb2YgdGhpcyBMaWNlbnNlLgorCisgICAgIFRoaXMgTGljZW5zZSBhcHBsaWVzIHRvIGNvZGUgdG8gd2hpY2ggdGhlIEluaXRpYWwgRGV2ZWxvcGVyIGhhcworICAgICBhdHRhY2hlZCB0aGUgbm90aWNlIGluIEV4aGliaXQgQSBhbmQgdG8gcmVsYXRlZCBDb3ZlcmVkIENvZGUuCisKKzYuIFZlcnNpb25zIG9mIHRoZSBMaWNlbnNlLgorCisgICAgIDYuMS4gTmV3IFZlcnNpb25zLgorICAgICBOZXRzY2FwZSBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbiAoIk5ldHNjYXBlIikgbWF5IHB1Ymxpc2ggcmV2aXNlZAorICAgICBhbmQvb3IgbmV3IHZlcnNpb25zIG9mIHRoZSBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLiBFYWNoIHZlcnNpb24KKyAgICAgd2lsbCBiZSBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLgorCisgICAgIDYuMi4gRWZmZWN0IG9mIE5ldyBWZXJzaW9ucy4KKyAgICAgT25jZSBDb3ZlcmVkIENvZGUgaGFzIGJlZW4gcHVibGlzaGVkIHVuZGVyIGEgcGFydGljdWxhciB2ZXJzaW9uIG9mIHRoZQorICAgICBMaWNlbnNlLCBZb3UgbWF5IGFsd2F5cyBjb250aW51ZSB0byB1c2UgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoYXQKKyAgICAgdmVyc2lvbi4gWW91IG1heSBhbHNvIGNob29zZSB0byB1c2Ugc3VjaCBDb3ZlcmVkIENvZGUgdW5kZXIgdGhlIHRlcm1zCisgICAgIG9mIGFueSBzdWJzZXF1ZW50IHZlcnNpb24gb2YgdGhlIExpY2Vuc2UgcHVibGlzaGVkIGJ5IE5ldHNjYXBlLiBObyBvbmUKKyAgICAgb3RoZXIgdGhhbiBOZXRzY2FwZSBoYXMgdGhlIHJpZ2h0IHRvIG1vZGlmeSB0aGUgdGVybXMgYXBwbGljYWJsZSB0bworICAgICBDb3ZlcmVkIENvZGUgY3JlYXRlZCB1bmRlciB0aGlzIExpY2Vuc2UuCisKKyAgICAgNi4zLiBEZXJpdmF0aXZlIFdvcmtzLgorICAgICBJZiBZb3UgY3JlYXRlIG9yIHVzZSBhIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhpcyBMaWNlbnNlICh3aGljaCB5b3UgbWF5CisgICAgIG9ubHkgZG8gaW4gb3JkZXIgdG8gYXBwbHkgaXQgdG8gY29kZSB3aGljaCBpcyBub3QgYWxyZWFkeSBDb3ZlcmVkIENvZGUKKyAgICAgZ292ZXJuZWQgYnkgdGhpcyBMaWNlbnNlKSwgWW91IG11c3QgKGEpIHJlbmFtZSBZb3VyIGxpY2Vuc2Ugc28gdGhhdAorICAgICB0aGUgcGhyYXNlcyAiTW96aWxsYSIsICJNT1pJTExBUEwiLCAiTU9aUEwiLCAiTmV0c2NhcGUiLAorICAgICAiTVBMIiwgIk5QTCIgb3IgYW55IGNvbmZ1c2luZ2x5IHNpbWlsYXIgcGhyYXNlIGRvIG5vdCBhcHBlYXIgaW4geW91cgorICAgICBsaWNlbnNlIChleGNlcHQgdG8gbm90ZSB0aGF0IHlvdXIgbGljZW5zZSBkaWZmZXJzIGZyb20gdGhpcyBMaWNlbnNlKQorICAgICBhbmQgKGIpIG90aGVyd2lzZSBtYWtlIGl0IGNsZWFyIHRoYXQgWW91ciB2ZXJzaW9uIG9mIHRoZSBsaWNlbnNlCisgICAgIGNvbnRhaW5zIHRlcm1zIHdoaWNoIGRpZmZlciBmcm9tIHRoZSBNb3ppbGxhIFB1YmxpYyBMaWNlbnNlIGFuZAorICAgICBOZXRzY2FwZSBQdWJsaWMgTGljZW5zZS4gKEZpbGxpbmcgaW4gdGhlIG5hbWUgb2YgdGhlIEluaXRpYWwKKyAgICAgRGV2ZWxvcGVyLCBPcmlnaW5hbCBDb2RlIG9yIENvbnRyaWJ1dG9yIGluIHRoZSBub3RpY2UgZGVzY3JpYmVkIGluCisgICAgIEV4aGliaXQgQSBzaGFsbCBub3Qgb2YgdGhlbXNlbHZlcyBiZSBkZWVtZWQgdG8gYmUgbW9kaWZpY2F0aW9ucyBvZgorICAgICB0aGlzIExpY2Vuc2UuKQorCis3LiBESVNDTEFJTUVSIE9GIFdBUlJBTlRZLgorCisgICAgIENPVkVSRUQgQ09ERSBJUyBQUk9WSURFRCBVTkRFUiBUSElTIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywKKyAgICAgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1NFRCBPUiBJTVBMSUVELCBJTkNMVURJTkcsCisgICAgIFdJVEhPVVQgTElNSVRBVElPTiwgV0FSUkFOVElFUyBUSEFUIFRIRSBDT1ZFUkVEIENPREUgSVMgRlJFRSBPRgorICAgICBERUZFQ1RTLCBNRVJDSEFOVEFCTEUsIEZJVCBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgT1IgTk9OLUlORlJJTkdJTkcuCisgICAgIFRIRSBFTlRJUkUgUklTSyBBUyBUTyBUSEUgUVVBTElUWSBBTkQgUEVSRk9STUFOQ0UgT0YgVEhFIENPVkVSRUQgQ09ERQorICAgICBJUyBXSVRIIFlPVS4gU0hPVUxEIEFOWSBDT1ZFUkVEIENPREUgUFJPVkUgREVGRUNUSVZFIElOIEFOWSBSRVNQRUNULAorICAgICBZT1UgKE5PVCBUSEUgSU5JVElBTCBERVZFTE9QRVIgT1IgQU5ZIE9USEVSIENPTlRSSUJVVE9SKSBBU1NVTUUgVEhFCisgICAgIENPU1QgT0YgQU5ZIE5FQ0VTU0FSWSBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLiBUSElTIERJU0NMQUlNRVIKKyAgICAgT0YgV0FSUkFOVFkgQ09OU1RJVFVURVMgQU4gRVNTRU5USUFMIFBBUlQgT0YgVEhJUyBMSUNFTlNFLiBOTyBVU0UgT0YKKyAgICAgQU5ZIENPVkVSRUQgQ09ERSBJUyBBVVRIT1JJWkVEIEhFUkVVTkRFUiBFWENFUFQgVU5ERVIgVEhJUyBESVNDTEFJTUVSLgorCis4LiBURVJNSU5BVElPTi4KKworICAgICA4LjEuICBUaGlzIExpY2Vuc2UgYW5kIHRoZSByaWdodHMgZ3JhbnRlZCBoZXJldW5kZXIgd2lsbCB0ZXJtaW5hdGUKKyAgICAgYXV0b21hdGljYWxseSBpZiBZb3UgZmFpbCB0byBjb21wbHkgd2l0aCB0ZXJtcyBoZXJlaW4gYW5kIGZhaWwgdG8gY3VyZQorICAgICBzdWNoIGJyZWFjaCB3aXRoaW4gMzAgZGF5cyBvZiBiZWNvbWluZyBhd2FyZSBvZiB0aGUgYnJlYWNoLiBBbGwKKyAgICAgc3VibGljZW5zZXMgdG8gdGhlIENvdmVyZWQgQ29kZSB3aGljaCBhcmUgcHJvcGVybHkgZ3JhbnRlZCBzaGFsbAorICAgICBzdXJ2aXZlIGFueSB0ZXJtaW5hdGlvbiBvZiB0aGlzIExpY2Vuc2UuIFByb3Zpc2lvbnMgd2hpY2gsIGJ5IHRoZWlyCisgICAgIG5hdHVyZSwgbXVzdCByZW1haW4gaW4gZWZmZWN0IGJleW9uZCB0aGUgdGVybWluYXRpb24gb2YgdGhpcyBMaWNlbnNlCisgICAgIHNoYWxsIHN1cnZpdmUuCisKKyAgICAgOC4yLiAgSWYgWW91IGluaXRpYXRlIGxpdGlnYXRpb24gYnkgYXNzZXJ0aW5nIGEgcGF0ZW50IGluZnJpbmdlbWVudAorICAgICBjbGFpbSAoZXhjbHVkaW5nIGRlY2xhdG9yeSBqdWRnbWVudCBhY3Rpb25zKSBhZ2FpbnN0IEluaXRpYWwgRGV2ZWxvcGVyCisgICAgIG9yIGEgQ29udHJpYnV0b3IgKHRoZSBJbml0aWFsIERldmVsb3BlciBvciBDb250cmlidXRvciBhZ2FpbnN0IHdob20KKyAgICAgWW91IGZpbGUgc3VjaCBhY3Rpb24gaXMgcmVmZXJyZWQgdG8gYXMgIlBhcnRpY2lwYW50IikgIGFsbGVnaW5nIHRoYXQ6CisKKyAgICAgKGEpICBzdWNoIFBhcnRpY2lwYW50J3MgQ29udHJpYnV0b3IgVmVyc2lvbiBkaXJlY3RseSBvciBpbmRpcmVjdGx5CisgICAgIGluZnJpbmdlcyBhbnkgcGF0ZW50LCB0aGVuIGFueSBhbmQgYWxsIHJpZ2h0cyBncmFudGVkIGJ5IHN1Y2gKKyAgICAgUGFydGljaXBhbnQgdG8gWW91IHVuZGVyIFNlY3Rpb25zIDIuMSBhbmQvb3IgMi4yIG9mIHRoaXMgTGljZW5zZQorICAgICBzaGFsbCwgdXBvbiA2MCBkYXlzIG5vdGljZSBmcm9tIFBhcnRpY2lwYW50IHRlcm1pbmF0ZSBwcm9zcGVjdGl2ZWx5LAorICAgICB1bmxlc3MgaWYgd2l0aGluIDYwIGRheXMgYWZ0ZXIgcmVjZWlwdCBvZiBub3RpY2UgWW91IGVpdGhlcjogKGkpCisgICAgIGFncmVlIGluIHdyaXRpbmcgdG8gcGF5IFBhcnRpY2lwYW50IGEgbXV0dWFsbHkgYWdyZWVhYmxlIHJlYXNvbmFibGUKKyAgICAgcm95YWx0eSBmb3IgWW91ciBwYXN0IGFuZCBmdXR1cmUgdXNlIG9mIE1vZGlmaWNhdGlvbnMgbWFkZSBieSBzdWNoCisgICAgIFBhcnRpY2lwYW50LCBvciAoaWkpIHdpdGhkcmF3IFlvdXIgbGl0aWdhdGlvbiBjbGFpbSB3aXRoIHJlc3BlY3QgdG8KKyAgICAgdGhlIENvbnRyaWJ1dG9yIFZlcnNpb24gYWdhaW5zdCBzdWNoIFBhcnRpY2lwYW50LiAgSWYgd2l0aGluIDYwIGRheXMKKyAgICAgb2Ygbm90aWNlLCBhIHJlYXNvbmFibGUgcm95YWx0eSBhbmQgcGF5bWVudCBhcnJhbmdlbWVudCBhcmUgbm90CisgICAgIG11dHVhbGx5IGFncmVlZCB1cG9uIGluIHdyaXRpbmcgYnkgdGhlIHBhcnRpZXMgb3IgdGhlIGxpdGlnYXRpb24gY2xhaW0KKyAgICAgaXMgbm90IHdpdGhkcmF3biwgdGhlIHJpZ2h0cyBncmFudGVkIGJ5IFBhcnRpY2lwYW50IHRvIFlvdSB1bmRlcgorICAgICBTZWN0aW9ucyAyLjEgYW5kL29yIDIuMiBhdXRvbWF0aWNhbGx5IHRlcm1pbmF0ZSBhdCB0aGUgZXhwaXJhdGlvbiBvZgorICAgICB0aGUgNjAgZGF5IG5vdGljZSBwZXJpb2Qgc3BlY2lmaWVkIGFib3ZlLgorCisgICAgIChiKSAgYW55IHNvZnR3YXJlLCBoYXJkd2FyZSwgb3IgZGV2aWNlLCBvdGhlciB0aGFuIHN1Y2ggUGFydGljaXBhbnQncworICAgICBDb250cmlidXRvciBWZXJzaW9uLCBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGluZnJpbmdlcyBhbnkgcGF0ZW50LCB0aGVuCisgICAgIGFueSByaWdodHMgZ3JhbnRlZCB0byBZb3UgYnkgc3VjaCBQYXJ0aWNpcGFudCB1bmRlciBTZWN0aW9ucyAyLjEoYikKKyAgICAgYW5kIDIuMihiKSBhcmUgcmV2b2tlZCBlZmZlY3RpdmUgYXMgb2YgdGhlIGRhdGUgWW91IGZpcnN0IG1hZGUsIHVzZWQsCisgICAgIHNvbGQsIGRpc3RyaWJ1dGVkLCBvciBoYWQgbWFkZSwgTW9kaWZpY2F0aW9ucyBtYWRlIGJ5IHRoYXQKKyAgICAgUGFydGljaXBhbnQuCisKKyAgICAgOC4zLiAgSWYgWW91IGFzc2VydCBhIHBhdGVudCBpbmZyaW5nZW1lbnQgY2xhaW0gYWdhaW5zdCBQYXJ0aWNpcGFudAorICAgICBhbGxlZ2luZyB0aGF0IHN1Y2ggUGFydGljaXBhbnQncyBDb250cmlidXRvciBWZXJzaW9uIGRpcmVjdGx5IG9yCisgICAgIGluZGlyZWN0bHkgaW5mcmluZ2VzIGFueSBwYXRlbnQgd2hlcmUgc3VjaCBjbGFpbSBpcyByZXNvbHZlZCAoc3VjaCBhcworICAgICBieSBsaWNlbnNlIG9yIHNldHRsZW1lbnQpIHByaW9yIHRvIHRoZSBpbml0aWF0aW9uIG9mIHBhdGVudAorICAgICBpbmZyaW5nZW1lbnQgbGl0aWdhdGlvbiwgdGhlbiB0aGUgcmVhc29uYWJsZSB2YWx1ZSBvZiB0aGUgbGljZW5zZXMKKyAgICAgZ3JhbnRlZCBieSBzdWNoIFBhcnRpY2lwYW50IHVuZGVyIFNlY3Rpb25zIDIuMSBvciAyLjIgc2hhbGwgYmUgdGFrZW4KKyAgICAgaW50byBhY2NvdW50IGluIGRldGVybWluaW5nIHRoZSBhbW91bnQgb3IgdmFsdWUgb2YgYW55IHBheW1lbnQgb3IKKyAgICAgbGljZW5zZS4KKworICAgICA4LjQuICBJbiB0aGUgZXZlbnQgb2YgdGVybWluYXRpb24gdW5kZXIgU2VjdGlvbnMgOC4xIG9yIDguMiBhYm92ZSwKKyAgICAgYWxsIGVuZCB1c2VyIGxpY2Vuc2UgYWdyZWVtZW50cyAoZXhjbHVkaW5nIGRpc3RyaWJ1dG9ycyBhbmQgcmVzZWxsZXJzKQorICAgICB3aGljaCBoYXZlIGJlZW4gdmFsaWRseSBncmFudGVkIGJ5IFlvdSBvciBhbnkgZGlzdHJpYnV0b3IgaGVyZXVuZGVyCisgICAgIHByaW9yIHRvIHRlcm1pbmF0aW9uIHNoYWxsIHN1cnZpdmUgdGVybWluYXRpb24uCisKKzkuIExJTUlUQVRJT04gT0YgTElBQklMSVRZLgorCisgICAgIFVOREVSIE5PIENJUkNVTVNUQU5DRVMgQU5EIFVOREVSIE5PIExFR0FMIFRIRU9SWSwgV0hFVEhFUiBUT1JUCisgICAgIChJTkNMVURJTkcgTkVHTElHRU5DRSksIENPTlRSQUNULCBPUiBPVEhFUldJU0UsIFNIQUxMIFlPVSwgVEhFIElOSVRJQUwKKyAgICAgREVWRUxPUEVSLCBBTlkgT1RIRVIgQ09OVFJJQlVUT1IsIE9SIEFOWSBESVNUUklCVVRPUiBPRiBDT1ZFUkVEIENPREUsCisgICAgIE9SIEFOWSBTVVBQTElFUiBPRiBBTlkgT0YgU1VDSCBQQVJUSUVTLCBCRSBMSUFCTEUgVE8gQU5ZIFBFUlNPTiBGT1IKKyAgICAgQU5ZIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT0YgQU5ZCisgICAgIENIQVJBQ1RFUiBJTkNMVURJTkcsIFdJVEhPVVQgTElNSVRBVElPTiwgREFNQUdFUyBGT1IgTE9TUyBPRiBHT09EV0lMTCwKKyAgICAgV09SSyBTVE9QUEFHRSwgQ09NUFVURVIgRkFJTFVSRSBPUiBNQUxGVU5DVElPTiwgT1IgQU5ZIEFORCBBTEwgT1RIRVIKKyAgICAgQ09NTUVSQ0lBTCBEQU1BR0VTIE9SIExPU1NFUywgRVZFTiBJRiBTVUNIIFBBUlRZIFNIQUxMIEhBVkUgQkVFTgorICAgICBJTkZPUk1FRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLiBUSElTIExJTUlUQVRJT04gT0YKKyAgICAgTElBQklMSVRZIFNIQUxMIE5PVCBBUFBMWSBUTyBMSUFCSUxJVFkgRk9SIERFQVRIIE9SIFBFUlNPTkFMIElOSlVSWQorICAgICBSRVNVTFRJTkcgRlJPTSBTVUNIIFBBUlRZJ1MgTkVHTElHRU5DRSBUTyBUSEUgRVhURU5UIEFQUExJQ0FCTEUgTEFXCisgICAgIFBST0hJQklUUyBTVUNIIExJTUlUQVRJT04uIFNPTUUgSlVSSVNESUNUSU9OUyBETyBOT1QgQUxMT1cgVEhFCisgICAgIEVYQ0xVU0lPTiBPUiBMSU1JVEFUSU9OIE9GIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTLCBTTworICAgICBUSElTIEVYQ0xVU0lPTiBBTkQgTElNSVRBVElPTiBNQVkgTk9UIEFQUExZIFRPIFlPVS4KKworMTAuIFUuUy4gR09WRVJOTUVOVCBFTkQgVVNFUlMuCisKKyAgICAgVGhlIENvdmVyZWQgQ29kZSBpcyBhICJjb21tZXJjaWFsIGl0ZW0sIiBhcyB0aGF0IHRlcm0gaXMgZGVmaW5lZCBpbgorICAgICA0OCBDLkYuUi4gMi4xMDEgKE9jdC4gMTk5NSksIGNvbnNpc3Rpbmcgb2YgImNvbW1lcmNpYWwgY29tcHV0ZXIKKyAgICAgc29mdHdhcmUiIGFuZCAiY29tbWVyY2lhbCBjb21wdXRlciBzb2Z0d2FyZSBkb2N1bWVudGF0aW9uLCIgYXMgc3VjaAorICAgICB0ZXJtcyBhcmUgdXNlZCBpbiA0OCBDLkYuUi4gMTIuMjEyIChTZXB0LiAxOTk1KS4gQ29uc2lzdGVudCB3aXRoIDQ4CisgICAgIEMuRi5SLiAxMi4yMTIgYW5kIDQ4IEMuRi5SLiAyMjcuNzIwMi0xIHRocm91Z2ggMjI3LjcyMDItNCAoSnVuZSAxOTk1KSwKKyAgICAgYWxsIFUuUy4gR292ZXJubWVudCBFbmQgVXNlcnMgYWNxdWlyZSBDb3ZlcmVkIENvZGUgd2l0aCBvbmx5IHRob3NlCisgICAgIHJpZ2h0cyBzZXQgZm9ydGggaGVyZWluLgorCisxMS4gTUlTQ0VMTEFORU9VUy4KKworICAgICBUaGlzIExpY2Vuc2UgcmVwcmVzZW50cyB0aGUgY29tcGxldGUgYWdyZWVtZW50IGNvbmNlcm5pbmcgc3ViamVjdAorICAgICBtYXR0ZXIgaGVyZW9mLiBJZiBhbnkgcHJvdmlzaW9uIG9mIHRoaXMgTGljZW5zZSBpcyBoZWxkIHRvIGJlCisgICAgIHVuZW5mb3JjZWFibGUsIHN1Y2ggcHJvdmlzaW9uIHNoYWxsIGJlIHJlZm9ybWVkIG9ubHkgdG8gdGhlIGV4dGVudAorICAgICBuZWNlc3NhcnkgdG8gbWFrZSBpdCBlbmZvcmNlYWJsZS4gVGhpcyBMaWNlbnNlIHNoYWxsIGJlIGdvdmVybmVkIGJ5CisgICAgIENhbGlmb3JuaWEgbGF3IHByb3Zpc2lvbnMgKGV4Y2VwdCB0byB0aGUgZXh0ZW50IGFwcGxpY2FibGUgbGF3LCBpZgorICAgICBhbnksIHByb3ZpZGVzIG90aGVyd2lzZSksIGV4Y2x1ZGluZyBpdHMgY29uZmxpY3Qtb2YtbGF3IHByb3Zpc2lvbnMuCisgICAgIFdpdGggcmVzcGVjdCB0byBkaXNwdXRlcyBpbiB3aGljaCBhdCBsZWFzdCBvbmUgcGFydHkgaXMgYSBjaXRpemVuIG9mLAorICAgICBvciBhbiBlbnRpdHkgY2hhcnRlcmVkIG9yIHJlZ2lzdGVyZWQgdG8gZG8gYnVzaW5lc3MgaW4gdGhlIFVuaXRlZAorICAgICBTdGF0ZXMgb2YgQW1lcmljYSwgYW55IGxpdGlnYXRpb24gcmVsYXRpbmcgdG8gdGhpcyBMaWNlbnNlIHNoYWxsIGJlCisgICAgIHN1YmplY3QgdG8gdGhlIGp1cmlzZGljdGlvbiBvZiB0aGUgRmVkZXJhbCBDb3VydHMgb2YgdGhlIE5vcnRoZXJuCisgICAgIERpc3RyaWN0IG9mIENhbGlmb3JuaWEsIHdpdGggdmVudWUgbHlpbmcgaW4gU2FudGEgQ2xhcmEgQ291bnR5LAorICAgICBDYWxpZm9ybmlhLCB3aXRoIHRoZSBsb3NpbmcgcGFydHkgcmVzcG9uc2libGUgZm9yIGNvc3RzLCBpbmNsdWRpbmcKKyAgICAgd2l0aG91dCBsaW1pdGF0aW9uLCBjb3VydCBjb3N0cyBhbmQgcmVhc29uYWJsZSBhdHRvcm5leXMnIGZlZXMgYW5kCisgICAgIGV4cGVuc2VzLiBUaGUgYXBwbGljYXRpb24gb2YgdGhlIFVuaXRlZCBOYXRpb25zIENvbnZlbnRpb24gb24KKyAgICAgQ29udHJhY3RzIGZvciB0aGUgSW50ZXJuYXRpb25hbCBTYWxlIG9mIEdvb2RzIGlzIGV4cHJlc3NseSBleGNsdWRlZC4KKyAgICAgQW55IGxhdyBvciByZWd1bGF0aW9uIHdoaWNoIHByb3ZpZGVzIHRoYXQgdGhlIGxhbmd1YWdlIG9mIGEgY29udHJhY3QKKyAgICAgc2hhbGwgYmUgY29uc3RydWVkIGFnYWluc3QgdGhlIGRyYWZ0ZXIgc2hhbGwgbm90IGFwcGx5IHRvIHRoaXMKKyAgICAgTGljZW5zZS4KKworMTIuIFJFU1BPTlNJQklMSVRZIEZPUiBDTEFJTVMuCisKKyAgICAgQXMgYmV0d2VlbiBJbml0aWFsIERldmVsb3BlciBhbmQgdGhlIENvbnRyaWJ1dG9ycywgZWFjaCBwYXJ0eSBpcworICAgICByZXNwb25zaWJsZSBmb3IgY2xhaW1zIGFuZCBkYW1hZ2VzIGFyaXNpbmcsIGRpcmVjdGx5IG9yIGluZGlyZWN0bHksCisgICAgIG91dCBvZiBpdHMgdXRpbGl6YXRpb24gb2YgcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZSBhbmQgWW91IGFncmVlIHRvCisgICAgIHdvcmsgd2l0aCBJbml0aWFsIERldmVsb3BlciBhbmQgQ29udHJpYnV0b3JzIHRvIGRpc3RyaWJ1dGUgc3VjaAorICAgICByZXNwb25zaWJpbGl0eSBvbiBhbiBlcXVpdGFibGUgYmFzaXMuIE5vdGhpbmcgaGVyZWluIGlzIGludGVuZGVkIG9yCisgICAgIHNoYWxsIGJlIGRlZW1lZCB0byBjb25zdGl0dXRlIGFueSBhZG1pc3Npb24gb2YgbGlhYmlsaXR5LgorCisxMy4gTVVMVElQTEUtTElDRU5TRUQgQ09ERS4KKworICAgICBJbml0aWFsIERldmVsb3BlciBtYXkgZGVzaWduYXRlIHBvcnRpb25zIG9mIHRoZSBDb3ZlcmVkIENvZGUgYXMKKyAgICAgIk11bHRpcGxlLUxpY2Vuc2VkIi4gICJNdWx0aXBsZS1MaWNlbnNlZCIgbWVhbnMgdGhhdCB0aGUgSW5pdGlhbAorICAgICBEZXZlbG9wZXIgcGVybWl0cyB5b3UgdG8gdXRpbGl6ZSBwb3J0aW9ucyBvZiB0aGUgQ292ZXJlZCBDb2RlIHVuZGVyCisgICAgIFlvdXIgY2hvaWNlIG9mIHRoZSBOUEwgb3IgdGhlIGFsdGVybmF0aXZlIGxpY2Vuc2VzLCBpZiBhbnksIHNwZWNpZmllZAorICAgICBieSB0aGUgSW5pdGlhbCBEZXZlbG9wZXIgaW4gdGhlIGZpbGUgZGVzY3JpYmVkIGluIEV4aGliaXQgQS4KKworRVhISUJJVCBBIC1Nb3ppbGxhIFB1YmxpYyBMaWNlbnNlLgorCisgICAgIGBgVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgTW96aWxsYSBQdWJsaWMgTGljZW5zZQorICAgICBWZXJzaW9uIDEuMSAodGhlICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluCisgICAgIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgICAgIGh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBMLworCisgICAgIFNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIKKyAgICAgYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUKKyAgICAgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyByaWdodHMgYW5kIGxpbWl0YXRpb25zCisgICAgIHVuZGVyIHRoZSBMaWNlbnNlLgorCisgICAgIFRoZSBPcmlnaW5hbCBDb2RlIGlzIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLgorCisgICAgIFRoZSBJbml0aWFsIERldmVsb3BlciBvZiB0aGUgT3JpZ2luYWwgQ29kZSBpcyBfX19fX19fX19fX19fX19fX19fX19fX18uCisgICAgIFBvcnRpb25zIGNyZWF0ZWQgYnkgX19fX19fX19fX19fX19fX19fX19fXyBhcmUgQ29weXJpZ2h0IChDKSBfX19fX18KKyAgICAgX19fX19fX19fX19fX19fX19fX19fX18uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgICAgQ29udHJpYnV0b3Iocyk6IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLgorCisgICAgIEFsdGVybmF0aXZlbHksIHRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zCisgICAgIG9mIHRoZSBfX19fXyBsaWNlbnNlICh0aGUgICJbX19fXSBMaWNlbnNlIiksIGluIHdoaWNoIGNhc2UgdGhlCisgICAgIHByb3Zpc2lvbnMgb2YgW19fX19fX10gTGljZW5zZSBhcmUgYXBwbGljYWJsZSBpbnN0ZWFkIG9mIHRob3NlCisgICAgIGFib3ZlLiAgSWYgeW91IHdpc2ggdG8gYWxsb3cgdXNlIG9mIHlvdXIgdmVyc2lvbiBvZiB0aGlzIGZpbGUgb25seQorICAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIFtfX19fXSBMaWNlbnNlIGFuZCBub3QgdG8gYWxsb3cgb3RoZXJzIHRvIHVzZQorICAgICB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlIHVuZGVyIHRoZSBNUEwsIGluZGljYXRlIHlvdXIgZGVjaXNpb24gYnkKKyAgICAgZGVsZXRpbmcgIHRoZSBwcm92aXNpb25zIGFib3ZlIGFuZCByZXBsYWNlICB0aGVtIHdpdGggdGhlIG5vdGljZSBhbmQKKyAgICAgb3RoZXIgcHJvdmlzaW9ucyByZXF1aXJlZCBieSB0aGUgW19fX10gTGljZW5zZS4gIElmIHlvdSBkbyBub3QgZGVsZXRlCisgICAgIHRoZSBwcm92aXNpb25zIGFib3ZlLCBhIHJlY2lwaWVudCBtYXkgdXNlIHlvdXIgdmVyc2lvbiBvZiB0aGlzIGZpbGUKKyAgICAgdW5kZXIgZWl0aGVyIHRoZSBNUEwgb3IgdGhlIFtfX19dIExpY2Vuc2UuIgorCisgICAgIFtOT1RFOiBUaGUgdGV4dCBvZiB0aGlzIEV4aGliaXQgQSBtYXkgZGlmZmVyIHNsaWdodGx5IGZyb20gdGhlIHRleHQgb2YKKyAgICAgdGhlIG5vdGljZXMgaW4gdGhlIFNvdXJjZSBDb2RlIGZpbGVzIG9mIHRoZSBPcmlnaW5hbCBDb2RlLiBZb3Ugc2hvdWxkCisgICAgIHVzZSB0aGUgdGV4dCBvZiB0aGlzIEV4aGliaXQgQSByYXRoZXIgdGhhbiB0aGUgdGV4dCBmb3VuZCBpbiB0aGUKKyAgICAgT3JpZ2luYWwgQ29kZSBTb3VyY2UgQ29kZSBmb3IgWW91ciBNb2RpZmljYXRpb25zLl0KZGlmZiAtLWdpdCBhL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L2Fib3V0X2ZpbGVzL25ldy1ic2QudHh0IGIvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvYWJvdXRfZmlsZXMvbmV3LWJzZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQyNTZjMgotLS0gL2Rldi9udWxsCisrKyBiL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L2Fib3V0X2ZpbGVzL25ldy1ic2QudHh0CkBAIC0wLDAgKzEsMTkgQEAKK0JTRC1zdHlsZSBMaWNlbnNlCitSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCAKK2FyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKK1JlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgCit0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCAKK3RoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gCithbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiAKK0FORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCAKK1RIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgCitQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyAKK0JFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgCitPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiAKK1NVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyAKK0lOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCAKK1NUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgCitBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSAKK1BPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L2Fib3V0X2ZpbGVzL3NsZjRqLnR4dCBiL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L2Fib3V0X2ZpbGVzL3NsZjRqLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzE2MDdjCi0tLSAvZGV2L251bGwKKysrIGIvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvYWJvdXRfZmlsZXMvc2xmNGoudHh0CkBAIC0wLDAgKzEsMjAgQEAKK0NvcHlyaWdodCAoYykgMjAwNC0yMDA4IFFPUy5jaAorQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKK2luIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKK3RvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKK2NvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KK2FsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCitUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCitGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKK0FVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKK0xJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCitPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCitUSEUgU09GVFdBUkUuCmRpZmYgLS1naXQgYS9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9jb25maWd1cmF0aW9uL2V0Yy9nb3NoX3Byb2ZpbGUgYi9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9jb25maWd1cmF0aW9uL2V0Yy9nb3NoX3Byb2ZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjBjOWI1ZQotLS0gL2Rldi9udWxsCisrKyBiL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L2NvbmZpZ3VyYXRpb24vZXRjL2dvc2hfcHJvZmlsZQpAQCAtMCwwICsxLDM5IEBACisjIGRlZmF1bHQgZ29zaF9wcm9maWxlCisjIG9ubHkgcmVhZCBpZiBldGMvZ29zaF9wcm9maWxlIGRvZXNuJ3QgZXhpc3QgcmVsYXRpdmUgdG8gdGhlIFN5c3RlbSBwcm9wZXJ0eQorIyBnb3NoLmhvbWUgb3IgZmFpbGluZyB0aGF0IHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KKworIyBjYXRjaCBhbGwgZXhjZXB0aW9ucyBmcm9tIHRoaXMgc2NyaXB0IHRvIGF2b2lkIGl0IGFib3J0aW5nIHN0YXJ0dXAKK3RyeSB7CisKKyAgIyBlbnN1cmUgZXF1aW5veCBjb21tYW5kcyBhcmUgZm91bmQgZmlyc3QKKyAgU0NPUEUgPSBlcXVpbm94OioKKworICAjIGFkZCBtZXRob2RzIG9uIEJ1bmRsZUNvbnRleHQgb2JqZWN0IGFzIGNvbW1hbmRzCisgICNhZGRjb21tYW5kIGNvbnRleHQgJHsuY29udGV4dH0gKCR7LmNvbnRleHR9IGNsYXNzKQorICAjIGJ1ZzogYWJvdmUgaW52b2tlcyAoU3RyaW5nLCBPYmplY3QsIFN0cmluZykgaW5zdGVhZCBvZiAoU3RyaW5nLCBPYmplY3QsIENsYXNzKQorICBhZGRjb21tYW5kIGNvbnRleHQgJHsuY29udGV4dH0KKworICAjIGFkZCBtZXRob2RzIG9uIFN5c3RlbSBvYmplY3QgYXMgY29tbWFuZHMKKyAgYWRkY29tbWFuZCBzeXN0ZW0gKCgoJHsuY29udGV4dH0gYnVuZGxlcykgMCkgbG9hZGNsYXNzIGphdmEubGFuZy5TeXN0ZW0pCisKKyAgIyBhbGlhcyB0byBwcmludCBmdWxsIHN0YWNrIHRyYWNlCisgIGUgPSB7ICRleGNlcHRpb24gcHJpbnRTdGFja1RyYWNlIH0KKworICAjIyBkaXNhYmxlIGNvbnNvbGUgYXV0by1mb3JtYXR0aW5nIG9mIGVhY2ggcmVzdWx0CisgICMgIHlvdSB3aWxsIHRoZW4gbmVlZCB0byBleHBsaWNpdGx5IHVzZSB0aGUgJ2Zvcm1hdCcgY29tbWFuZAorICAjICB0byBwcmludCB0aGUgcmVzdWx0IG9mIGNvbW1hbmRzIHRoYXQgZG9uJ3Qgd3JpdGUgdG8gc3Rkb3V0LgorICAjLkdvZ28uZm9ybWF0ID0gZmFsc2UKKworICAjIyBkaXNhYmxlIHByaW50aW5nIHRoZSBmb3JtYXR0ZWQgcmVzdWx0IG9mIGEgY29tbWFuZCBpbnRvIHBpcGVsaW5lcworICAjLkZvcm1hdC5QaXBlID0gZmFsc2UKKworICAjIHNldCBwcm9tcHQKKyAgcHJvbXB0ID0gJ29zZ2k+ICcKKworICAjIHByaW50IHdlbGNvbWUgbWVzc2FnZQorICAjIGNhdCAoJDAgcmVzb2x2ZSBtb3RkKQorfSB7CisgICAgZWNobyAiJDA6IEVSUk9SOiAkZXhjZXB0aW9uIgorfQorCisjIGVuZApkaWZmIC0tZ2l0IGEvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvY29uZmlndXJhdGlvbi9qYXZhNi1zZXJ2ZXIucHJvZmlsZSBiL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L2NvbmZpZ3VyYXRpb24vamF2YTYtc2VydmVyLnByb2ZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZmNDE5NwotLS0gL2Rldi9udWxsCisrKyBiL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L2NvbmZpZ3VyYXRpb24vamF2YTYtc2VydmVyLnByb2ZpbGUKQEAgLTAsMCArMSwyMTMgQEAKK29yZy5vc2dpLmZyYW1ld29yay5zeXN0ZW0ucGFja2FnZXMgPSBcCisgamF2YXguYWNjZXNzaWJpbGl0eSxcCisgamF2YXguYWN0aXZhdGlvbixcCisgamF2YXguYWN0aXZhdGlvbjt2ZXJzaW9uPSIxLjEuMSIsXAorIGphdmF4LmFjdGl2aXR5LFwKKyBqYXZheC5hbm5vdGF0aW9uLFwKKyBqYXZheC5hbm5vdGF0aW9uO3ZlcnNpb249IjEuMC4wIixcCisgamF2YXguYW5ub3RhdGlvbjt2ZXJzaW9uPSIxLjEuMCIsXAorIGphdmF4LmFubm90YXRpb24ucHJvY2Vzc2luZyxcCisgamF2YXguY3J5cHRvLFwKKyBqYXZheC5jcnlwdG8uaW50ZXJmYWNlcyxcCisgamF2YXguY3J5cHRvLnNwZWMsXAorIGphdmF4LmltYWdlaW8sXAorIGphdmF4LmltYWdlaW8uZXZlbnQsXAorIGphdmF4LmltYWdlaW8ubWV0YWRhdGEsXAorIGphdmF4LmltYWdlaW8ucGx1Z2lucy5ibXAsXAorIGphdmF4LmltYWdlaW8ucGx1Z2lucy5qcGVnLFwKKyBqYXZheC5pbWFnZWlvLnNwaSxcCisgamF2YXguaW1hZ2Vpby5zdHJlYW0sXAorIGphdmF4Lmp3cyxcCisgamF2YXguandzO3ZlcnNpb249IjIuMCIsXAorIGphdmF4Lmp3cy5zb2FwLFwKKyBqYXZheC5qd3Muc29hcDt2ZXJzaW9uPSIyLjAiLFwKKyBqYXZheC5sYW5nLm1vZGVsLFwKKyBqYXZheC5sYW5nLm1vZGVsLmVsZW1lbnQsXAorIGphdmF4LmxhbmcubW9kZWwudHlwZSxcCisgamF2YXgubGFuZy5tb2RlbC51dGlsLFwKKyBqYXZheC5tYW5hZ2VtZW50LFwKKyBqYXZheC5tYW5hZ2VtZW50LmxvYWRpbmcsXAorIGphdmF4Lm1hbmFnZW1lbnQubW9kZWxtYmVhbixcCisgamF2YXgubWFuYWdlbWVudC5tb25pdG9yLFwKKyBqYXZheC5tYW5hZ2VtZW50Lm9wZW5tYmVhbixcCisgamF2YXgubWFuYWdlbWVudC5yZWxhdGlvbixcCisgamF2YXgubWFuYWdlbWVudC5yZW1vdGUsXAorIGphdmF4Lm1hbmFnZW1lbnQucmVtb3RlLnJtaSxcCisgamF2YXgubWFuYWdlbWVudC50aW1lcixcCisgamF2YXgubmFtaW5nLFwKKyBqYXZheC5uYW1pbmcuZGlyZWN0b3J5LFwKKyBqYXZheC5uYW1pbmcuZXZlbnQsXAorIGphdmF4Lm5hbWluZy5sZGFwLFwKKyBqYXZheC5uYW1pbmcuc3BpLFwKKyBqYXZheC5uZXQsXAorIGphdmF4Lm5ldC5zc2wsXAorIGphdmF4LnByaW50LFwKKyBqYXZheC5wcmludC5hdHRyaWJ1dGUsXAorIGphdmF4LnByaW50LmF0dHJpYnV0ZS5zdGFuZGFyZCxcCisgamF2YXgucHJpbnQuZXZlbnQsXAorIGphdmF4LnJtaSxcCisgamF2YXgucm1pLkNPUkJBLFwKKyBqYXZheC5ybWkuc3NsLFwKKyBqYXZheC5zY3JpcHQsXAorIGphdmF4LnNjcmlwdDt2ZXJzaW9uPSIxLjEiLFwKKyBqYXZheC5zZWN1cml0eS5hdXRoLFwKKyBqYXZheC5zZWN1cml0eS5hdXRoLmNhbGxiYWNrLFwKKyBqYXZheC5zZWN1cml0eS5hdXRoLmtlcmJlcm9zLFwKKyBqYXZheC5zZWN1cml0eS5hdXRoLmxvZ2luLFwKKyBqYXZheC5zZWN1cml0eS5hdXRoLnNwaSxcCisgamF2YXguc2VjdXJpdHkuYXV0aC54NTAwLFwKKyBqYXZheC5zZWN1cml0eS5jZXJ0LFwKKyBqYXZheC5zZWN1cml0eS5zYXNsLFwKKyBqYXZheC5zb3VuZC5taWRpLFwKKyBqYXZheC5zb3VuZC5taWRpLnNwaSxcCisgamF2YXguc291bmQuc2FtcGxlZCxcCisgamF2YXguc291bmQuc2FtcGxlZC5zcGksXAorIGphdmF4LnNxbCxcCisgamF2YXguc3FsLnJvd3NldCxcCisgamF2YXguc3FsLnJvd3NldC5zZXJpYWwsXAorIGphdmF4LnNxbC5yb3dzZXQuc3BpLFwKKyBqYXZheC5zd2luZyxcCisgamF2YXguc3dpbmcuYm9yZGVyLFwKKyBqYXZheC5zd2luZy5jb2xvcmNob29zZXIsXAorIGphdmF4LnN3aW5nLmV2ZW50LFwKKyBqYXZheC5zd2luZy5maWxlY2hvb3NlcixcCisgamF2YXguc3dpbmcucGxhZixcCisgamF2YXguc3dpbmcucGxhZi5iYXNpYyxcCisgamF2YXguc3dpbmcucGxhZi5tZXRhbCxcCisgamF2YXguc3dpbmcucGxhZi5tdWx0aSxcCisgamF2YXguc3dpbmcucGxhZi5zeW50aCxcCisgamF2YXguc3dpbmcudGFibGUsXAorIGphdmF4LnN3aW5nLnRleHQsXAorIGphdmF4LnN3aW5nLnRleHQuaHRtbCxcCisgamF2YXguc3dpbmcudGV4dC5odG1sLnBhcnNlcixcCisgamF2YXguc3dpbmcudGV4dC5ydGYsXAorIGphdmF4LnN3aW5nLnRyZWUsXAorIGphdmF4LnN3aW5nLnVuZG8sXAorIGphdmF4LnRvb2xzLFwKKyBqYXZheC50cmFuc2FjdGlvbixcCisgamF2YXgudHJhbnNhY3Rpb247dmVyc2lvbj0iMS4wLjEiLFwKKyBqYXZheC50cmFuc2FjdGlvbjt2ZXJzaW9uPSIxLjEuMCIsXAorIGphdmF4LnRyYW5zYWN0aW9uLnhhLFwKKyBqYXZheC50cmFuc2FjdGlvbi54YTt2ZXJzaW9uPSIxLjAuMSIsXAorIGphdmF4LnRyYW5zYWN0aW9uLnhhO3ZlcnNpb249IjEuMS4wIixcCisgamF2YXgueG1sLFwKKyBqYXZheC54bWw7dmVyc2lvbj0iMS4wLjEiLFwKKyBqYXZheC54bWwuYmluZCxcCisgamF2YXgueG1sLmJpbmQ7dmVyc2lvbj0iMi4wIixcCisgamF2YXgueG1sLmJpbmQuYW5ub3RhdGlvbixcCisgamF2YXgueG1sLmJpbmQuYW5ub3RhdGlvbjt2ZXJzaW9uPSIyLjAiLFwKKyBqYXZheC54bWwuYmluZC5hbm5vdGF0aW9uLmFkYXB0ZXJzLFwKKyBqYXZheC54bWwuYmluZC5hbm5vdGF0aW9uLmFkYXB0ZXJzO3ZlcnNpb249IjIuMCIsXAorIGphdmF4LnhtbC5iaW5kLmF0dGFjaG1lbnQsXAorIGphdmF4LnhtbC5iaW5kLmF0dGFjaG1lbnQ7dmVyc2lvbj0iMi4wIixcCisgamF2YXgueG1sLmJpbmQuaGVscGVycyxcCisgamF2YXgueG1sLmJpbmQuaGVscGVyczt2ZXJzaW9uPSIyLjAiLFwKKyBqYXZheC54bWwuYmluZC51dGlsLFwKKyBqYXZheC54bWwuYmluZC51dGlsO3ZlcnNpb249IjIuMCIsXAorIGphdmF4LnhtbC5jcnlwdG8sXAorIGphdmF4LnhtbC5jcnlwdG87dmVyc2lvbj0iMS4wIixcCisgamF2YXgueG1sLmNyeXB0by5kb20sXAorIGphdmF4LnhtbC5jcnlwdG8uZG9tO3ZlcnNpb249IjEuMCIsXAorIGphdmF4LnhtbC5jcnlwdG8uZHNpZyxcCisgamF2YXgueG1sLmNyeXB0by5kc2lnO3ZlcnNpb249IjEuMCIsXAorIGphdmF4LnhtbC5jcnlwdG8uZHNpZy5kb20sXAorIGphdmF4LnhtbC5jcnlwdG8uZHNpZy5kb207dmVyc2lvbj0iMS4wIixcCisgamF2YXgueG1sLmNyeXB0by5kc2lnLmtleWluZm8sXAorIGphdmF4LnhtbC5jcnlwdG8uZHNpZy5rZXlpbmZvO3ZlcnNpb249IjEuMCIsXAorIGphdmF4LnhtbC5jcnlwdG8uZHNpZy5zcGVjLFwKKyBqYXZheC54bWwuY3J5cHRvLmRzaWcuc3BlYzt2ZXJzaW9uPSIxLjAiLFwKKyBqYXZheC54bWwuZGF0YXR5cGUsXAorIGphdmF4LnhtbC5uYW1lc3BhY2UsXAorIGphdmF4LnhtbC5wYXJzZXJzLFwKKyBqYXZheC54bWwuc29hcCxcCisgamF2YXgueG1sLnNvYXA7dmVyc2lvbj0iMS4zLjAiLFwKKyBqYXZheC54bWwuc3RyZWFtLFwKKyBqYXZheC54bWwuc3RyZWFtO3ZlcnNpb249IjEuMC4xIixcCisgamF2YXgueG1sLnN0cmVhbS5ldmVudHMsXAorIGphdmF4LnhtbC5zdHJlYW0uZXZlbnRzO3ZlcnNpb249IjEuMC4xIixcCisgamF2YXgueG1sLnN0cmVhbS51dGlsLFwKKyBqYXZheC54bWwuc3RyZWFtLnV0aWw7dmVyc2lvbj0iMS4wLjEiLFwKKyBqYXZheC54bWwudHJhbnNmb3JtLFwKKyBqYXZheC54bWwudHJhbnNmb3JtLmRvbSxcCisgamF2YXgueG1sLnRyYW5zZm9ybS5zYXgsXAorIGphdmF4LnhtbC50cmFuc2Zvcm0uc3RheCxcCisgamF2YXgueG1sLnRyYW5zZm9ybS5zdHJlYW0sXAorIGphdmF4LnhtbC52YWxpZGF0aW9uLFwKKyBqYXZheC54bWwud3MsXAorIGphdmF4LnhtbC53czt2ZXJzaW9uPSIyLjEuMSIsXAorIGphdmF4LnhtbC53cy5oYW5kbGVyLFwKKyBqYXZheC54bWwud3MuaGFuZGxlcjt2ZXJzaW9uPSIyLjEuMSIsXAorIGphdmF4LnhtbC53cy5oYW5kbGVyLnNvYXAsXAorIGphdmF4LnhtbC53cy5oYW5kbGVyLnNvYXA7dmVyc2lvbj0iMi4xLjEiLFwKKyBqYXZheC54bWwud3MuaHR0cCxcCisgamF2YXgueG1sLndzLmh0dHA7dmVyc2lvbj0iMi4xLjEiLFwKKyBqYXZheC54bWwud3Muc29hcCxcCisgamF2YXgueG1sLndzLnNvYXA7dmVyc2lvbj0iMi4xLjEiLFwKKyBqYXZheC54bWwud3Muc3BpLFwKKyBqYXZheC54bWwud3Muc3BpO3ZlcnNpb249IjIuMS4xIixcCisgamF2YXgueG1sLndzLndzYWRkcmVzc2luZzt2ZXJzaW9uPSIyLjEuMSIsXAorIGphdmF4LnhtbC54cGF0aCxcCisgb3JnLmVjbGlwc2UudmlyZ28ua2VybmVsLmVxdWlub3guZXh0ZW5zaW9ucyxcCisgb3JnLmVjbGlwc2UudmlyZ28ua2VybmVsLmVxdWlub3guZXh0ZW5zaW9uczt2ZXJzaW9uPSIzLjcuMCIsXAorIG9yZy5lY2xpcHNlLnZpcmdvLmtlcm5lbC5lcXVpbm94LmV4dGVuc2lvbnMuaG9va3MsXAorIG9yZy5lY2xpcHNlLnZpcmdvLmtlcm5lbC5lcXVpbm94LmV4dGVuc2lvbnMuaG9va3M7dmVyc2lvbj0iMy43LjAiLFwKKyBvcmcuaWV0Zi5qZ3NzLFwKKyBvcmcub21nLkNPUkJBLFwKKyBvcmcub21nLkNPUkJBXzJfMyxcCisgb3JnLm9tZy5DT1JCQV8yXzMucG9ydGFibGUsXAorIG9yZy5vbWcuQ09SQkEuRHluQW55UGFja2FnZSxcCisgb3JnLm9tZy5DT1JCQS5PUkJQYWNrYWdlLFwKKyBvcmcub21nLkNPUkJBLnBvcnRhYmxlLFwKKyBvcmcub21nLkNPUkJBLlR5cGVDb2RlUGFja2FnZSxcCisgb3JnLm9tZy5Db3NOYW1pbmcsXAorIG9yZy5vbWcuQ29zTmFtaW5nLk5hbWluZ0NvbnRleHRFeHRQYWNrYWdlLFwKKyBvcmcub21nLkNvc05hbWluZy5OYW1pbmdDb250ZXh0UGFja2FnZSxcCisgb3JnLm9tZy5EeW5hbWljLFwKKyBvcmcub21nLkR5bmFtaWNBbnksXAorIG9yZy5vbWcuRHluYW1pY0FueS5EeW5BbnlGYWN0b3J5UGFja2FnZSxcCisgb3JnLm9tZy5EeW5hbWljQW55LkR5bkFueVBhY2thZ2UsXAorIG9yZy5vbWcuSU9QLFwKKyBvcmcub21nLklPUC5Db2RlY0ZhY3RvcnlQYWNrYWdlLFwKKyBvcmcub21nLklPUC5Db2RlY1BhY2thZ2UsXAorIG9yZy5vbWcuTWVzc2FnaW5nLFwKKyBvcmcub21nLlBvcnRhYmxlSW50ZXJjZXB0b3IsXAorIG9yZy5vbWcuUG9ydGFibGVJbnRlcmNlcHRvci5PUkJJbml0SW5mb1BhY2thZ2UsXAorIG9yZy5vbWcuUG9ydGFibGVTZXJ2ZXIsXAorIG9yZy5vbWcuUG9ydGFibGVTZXJ2ZXIuQ3VycmVudFBhY2thZ2UsXAorIG9yZy5vbWcuUG9ydGFibGVTZXJ2ZXIuUE9BTWFuYWdlclBhY2thZ2UsXAorIG9yZy5vbWcuUG9ydGFibGVTZXJ2ZXIuUE9BUGFja2FnZSxcCisgb3JnLm9tZy5Qb3J0YWJsZVNlcnZlci5wb3J0YWJsZSxcCisgb3JnLm9tZy5Qb3J0YWJsZVNlcnZlci5TZXJ2YW50TG9jYXRvclBhY2thZ2UsXAorIG9yZy5vbWcuU2VuZGluZ0NvbnRleHQsXAorIG9yZy5vbWcuc3R1Yi5qYXZhLnJtaSxcCisgb3JnLnczYy5kb20sXAorIG9yZy53M2MuZG9tLmJvb3RzdHJhcCxcCisgb3JnLnczYy5kb20uY3NzLFwKKyBvcmcudzNjLmRvbS5ldmVudHMsXAorIG9yZy53M2MuZG9tLmh0bWwsXAorIG9yZy53M2MuZG9tLmxzLFwKKyBvcmcudzNjLmRvbS5yYW5nZXMsXAorIG9yZy53M2MuZG9tLnN0eWxlc2hlZXRzLFwKKyBvcmcudzNjLmRvbS50cmF2ZXJzYWwsXAorIG9yZy53M2MuZG9tLnZpZXdzICxcCisgb3JnLnczYy5kb20ueHBhdGgsXAorIG9yZy54bWwuc2F4LFwKKyBvcmcueG1sLnNheC5leHQsXAorIG9yZy54bWwuc2F4LmhlbHBlcnMKK29yZy5vc2dpLmZyYW1ld29yay5ib290ZGVsZWdhdGlvbiA9IFwKKyBvcmcuZWNsaXBzZS52aXJnby5uYW5vLmF1dGhlbnRpY2F0aW9uLFwKKyBjb20uc3VuLiosXAorIGphdmF4LnhtbC4qLFwKKyBvcmcuYXBhY2hlLnhlcmNlcy5qYXhwLiosXAorIG9yZy53M2MuKixcCisgb3JnLnhtbC4qLFwKKyBzdW4uKgorb3JnLm9zZ2kuZnJhbWV3b3JrLmV4ZWN1dGlvbmVudmlyb25tZW50ID0gXAorIE9TR2kvTWluaW11bS0xLjAsXAorIE9TR2kvTWluaW11bS0xLjEsXAorIEoyU0UtMS4yLFwKKyBKMlNFLTEuMyxcCisgSjJTRS0xLjQsXAorIEoyU0UtMS41LFwKKyBKYXZhU0UtMS42Citvc2dpLmphdmEucHJvZmlsZS5uYW1lID0gVmlyZ28tSmF2YTYKZGlmZiAtLWdpdCBhL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L2NvbmZpZ3VyYXRpb24va2V5c3RvcmUgYi9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9jb25maWd1cmF0aW9uL2tleXN0b3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2ODRjYWEKLS0tIC9kZXYvbnVsbAorKysgYi9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9jb25maWd1cmF0aW9uL2tleXN0b3JlCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L2NvbmZpZ3VyYXRpb24vb3JnLmVjbGlwc2UudmlyZ28ua2VybmVsLmF1dGhlbnRpY2F0aW9uLmNvbmZpZyBiL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L2NvbmZpZ3VyYXRpb24vb3JnLmVjbGlwc2UudmlyZ28ua2VybmVsLmF1dGhlbnRpY2F0aW9uLmNvbmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NGM1ZDIxCi0tLSAvZGV2L251bGwKKysrIGIvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvY29uZmlndXJhdGlvbi9vcmcuZWNsaXBzZS52aXJnby5rZXJuZWwuYXV0aGVudGljYXRpb24uY29uZmlnCkBAIC0wLDAgKzEsNiBAQAordmlyZ28ta2VybmVsIHsKKwlvcmcuZWNsaXBzZS52aXJnby5uYW5vLmF1dGhlbnRpY2F0aW9uLktlcm5lbExvZ2luTW9kdWxlIFJFUVVJUkVEOworfTsKK2VxdWlub3hfY29uc29sZSB7CisJb3JnLmVjbGlwc2UudmlyZ28ubmFuby5hdXRoZW50aWNhdGlvbi5LZXJuZWxMb2dpbk1vZHVsZSBSRVFVSVJFRDsKK307CmRpZmYgLS1naXQgYS9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9jb25maWd1cmF0aW9uL29yZy5lY2xpcHNlLnZpcmdvLmtlcm5lbC5qbXhyZW1vdGUuYWNjZXNzLnByb3BlcnRpZXMgYi9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9jb25maWd1cmF0aW9uL29yZy5lY2xpcHNlLnZpcmdvLmtlcm5lbC5qbXhyZW1vdGUuYWNjZXNzLnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmE4OTk3OQotLS0gL2Rldi9udWxsCisrKyBiL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L2NvbmZpZ3VyYXRpb24vb3JnLmVjbGlwc2UudmlyZ28ua2VybmVsLmpteHJlbW90ZS5hY2Nlc3MucHJvcGVydGllcwpAQCAtMCwwICsxIEBACithZG1pbj1yZWFkd3JpdGUKZGlmZiAtLWdpdCBhL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L2NvbmZpZ3VyYXRpb24vb3JnLmVjbGlwc2UudmlyZ28ua2VybmVsLnByb3BlcnRpZXMgYi9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9jb25maWd1cmF0aW9uL29yZy5lY2xpcHNlLnZpcmdvLmtlcm5lbC5wcm9wZXJ0aWVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3MjYzMWYKLS0tIC9kZXYvbnVsbAorKysgYi9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9jb25maWd1cmF0aW9uL29yZy5lY2xpcHNlLnZpcmdvLmtlcm5lbC5wcm9wZXJ0aWVzCkBAIC0wLDAgKzEsOSBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIERlcGxveWVyIENvbmZpZ3VyYXRpb24KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBOb3RlOiB1c2UgMCB0byBkaXNhYmxlIGRlcGxveW1lbnQgdGltZW91dHMKK2RlcGxveWVyLnRpbWVvdXQ9MzAwCitkZXBsb3llci5waWNrdXBEaXJlY3Rvcnk9cGlja3VwCitkZXBsb3llci5zY2FuSW50ZXJ2YWxNaWxsaXM9MTAwMAorZGVwbG95ZXIudW5wYWNrQnVuZGxlcz10cnVlCisKZGlmZiAtLWdpdCBhL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L2NvbmZpZ3VyYXRpb24vb3JnLmVjbGlwc2UudmlyZ28ua2VybmVsLnVzZXJyZWdpb24ucHJvcGVydGllcyBiL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L2NvbmZpZ3VyYXRpb24vb3JnLmVjbGlwc2UudmlyZ28ua2VybmVsLnVzZXJyZWdpb24ucHJvcGVydGllcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjEyNDcxCi0tLSAvZGV2L251bGwKKysrIGIvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvY29uZmlndXJhdGlvbi9vcmcuZWNsaXBzZS52aXJnby5rZXJuZWwudXNlcnJlZ2lvbi5wcm9wZXJ0aWVzCkBAIC0wLDAgKzEsOTQgQEAKK2Jhc2VCdW5kbGVzID0gXAorIGZpbGU6cGx1Z2lucy9vcmcuZWNsaXBzZS5lcXVpbm94LmNtX0BFUVVJTk9YLkNPTkZJR0FETUlOLlZFUlNJT05ALmphckBzdGFydCxcCisgZmlsZTpwbHVnaW5zL29yZy5lY2xpcHNlLnZpcmdvLmtlcm5lbC51c2VycmVnaW9uX0BLRVJORUwuVkVSU0lPTkAuamFyQHN0YXJ0LFwKKyBmaWxlOnBsdWdpbnMvb3JnLmVjbGlwc2UudmlyZ28uc2hlbGwuY29tbWFuZF9AS0VSTkVMLlZFUlNJT05ALmphckBzdGFydCxcCisgZmlsZTpwbHVnaW5zL29yZy5lY2xpcHNlLm9zZ2kuc2VydmljZXNfQE9TR0kuU0VSVklDRVMuVkVSU0lPTkAuamFyQHN0YXJ0LFwKKyBmaWxlOnBsdWdpbnMvb3JnLmFwYWNoZS5taW5hLmNvcmVfQE1JTkEuQ09SRS5WRVJTSU9OQC5qYXJAc3RhcnQsXAorIGZpbGU6cGx1Z2lucy9vcmcuYXBhY2hlLmZlbGl4LmdvZ28uY29tbWFuZF9ARkVMSVguR09HTy5DT01NQU5ELlZFUlNJT05ALmphckBzdGFydCxcCisgZmlsZTpwbHVnaW5zL29yZy5hcGFjaGUuZmVsaXguZ29nby5ydW50aW1lX0BGRUxJWC5HT0dPLlJVTlRJTUUuVkVSU0lPTkAuamFyQHN0YXJ0LFwKKyBmaWxlOnBsdWdpbnMvb3JnLmFwYWNoZS5mZWxpeC5nb2dvLnNoZWxsX0BGRUxJWC5HT0dPLlNIRUxMLlZFUlNJT05ALmphckBzdGFydCxcCisgZmlsZTpwbHVnaW5zL29yZy5lY2xpcHNlLmVxdWlub3guY29uc29sZV9ARVFVSU5PWC5DT05TT0xFLlZFUlNJT05ALmphckBzdGFydCxcCisgZmlsZTpwbHVnaW5zL29yZy5lY2xpcHNlLmVxdWlub3guY29uc29sZS5zc2hfQEVRVUlOT1guQ09OU09MRS5TU0guVkVSU0lPTkAuamFyQHN0YXJ0LFwKKyBmaWxlOnBsdWdpbnMvb3JnLmFwYWNoZS5zc2hkLmNvcmVfQFNTSEQuQ09SRS5WRVJTSU9OQC5qYXJAc3RhcnQKKworYnVuZGxlSW1wb3J0cyA9IG9yZy5lY2xpcHNlLm9zZ2k7YnVuZGxlLXZlcnNpb249IjAiCisKK3BhY2thZ2VJbXBvcnRzID1cCisgb3JnLmVjbGlwc2UudmlyZ28ua2VybmVsLmFydGlmYWN0Lio7dmVyc2lvbj0iMCIsXAorIG9yZy5lY2xpcHNlLnZpcmdvLm5hbm8uY29yZTt2ZXJzaW9uPSIwIixcCisgb3JnLmVjbGlwc2UudmlyZ28ubmFuby5kZXBsb3llci5hcGkuKjt2ZXJzaW9uPSIwIixcCisgb3JnLmVjbGlwc2UudmlyZ28ubmFuby5kZXBsb3llci5hcGk7dmVyc2lvbj0iMCIsXAorIG9yZy5lY2xpcHNlLnZpcmdvLm5hbm8uZGVwbG95ZXI7dmVyc2lvbj0iMCIsXAorIG9yZy5lY2xpcHNlLnZpcmdvLmtlcm5lbC5kZXBsb3llci5jb3JlLmV2ZW50O3ZlcnNpb249IjAiLFwKKyBvcmcuZWNsaXBzZS52aXJnby5rZXJuZWwuaW5zdGFsbC4qO3ZlcnNpb249IjAiLFwKKyBvcmcuZWNsaXBzZS52aXJnby5rZXJuZWwub3NnaS4qO3ZlcnNpb249IjAiLFwKKyBvcmcuZWNsaXBzZS52aXJnby5rZXJuZWwubW9kZWw7dmVyc2lvbj0iMCIsXAorIG9yZy5lY2xpcHNlLnZpcmdvLmtlcm5lbC5tb2RlbC5tYW5hZ2VtZW50O3ZlcnNpb249IjAiLFwKKyBvcmcuZWNsaXBzZS52aXJnby5rZXJuZWwubW9kdWxlO3ZlcnNpb249IjAiLFwKKyBvcmcuZWNsaXBzZS52aXJnby5rZXJuZWwuZXF1aW5veC5leHRlbnNpb25zLmhvb2tzO3ZlcnNpb249IjAiLFwKKyBvcmcuZWNsaXBzZS52aXJnby5uYW5vLnNlcnZpY2VhYmlsaXR5O3ZlcnNpb249IjAiLFwKKyBvcmcuZWNsaXBzZS52aXJnby5uYW5vLnNlcnZpY2VhYmlsaXR5Lio7dmVyc2lvbj0iMCIsXAorIG9yZy5lY2xpcHNlLnZpcmdvLmtlcm5lbC5zZXJ2aWNlcy53b3JrO3ZlcnNpb249IjAiLFwKKyBvcmcuZWNsaXBzZS52aXJnby5uYW5vLnNoaW0uKjt2ZXJzaW9uPSIwIixcCisgb3JnLmVjbGlwc2UudmlyZ28ubWVkaWMuKjt2ZXJzaW9uPSIwIixcCisgb3JnLmVjbGlwc2UudmlyZ28ucmVwb3NpdG9yeTt2ZXJzaW9uPSIwIixcCisgb3JnLmVjbGlwc2UudmlyZ28ucmVwb3NpdG9yeS4qO3ZlcnNpb249IjAiLFwKKyBvcmcuZWNsaXBzZS52aXJnby51dGlsLio7dmVyc2lvbj0iMCIsXAorIG9yZy5hcGFjaGUuY29tbW9ucy5sb2dnaW5nO3ZlcnNpb249IlsxLjAuMCwyLjAuMCkiLFwKKyBvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5pbXBsO3ZlcnNpb249IlsxLjAuMCwyLjAuMCkiLFwKKyBvcmcuYXNwZWN0ai4qO3ZlcnNpb249IlsxLjYuNS5SRUxFQVNFLDIuMC4wKSIsXAorIG9yZy5vc2dpLnNlcnZpY2UuZXZlbnQ7dmVyc2lvbj0iMCIsXAorIG9yZy5vc2dpLnNlcnZpY2UubG9nO3ZlcnNpb249IjAiLFwKKyBvcmcub3NnaS5zZXJ2aWNlLmh0dHA7dmVyc2lvbj0iMCIsXAorIGphdmF4LnNlcnZsZXQ7dmVyc2lvbj0iMi42LjAiLFwKKyBvcmcuZWNsaXBzZS5lcXVpbm94LnJlZ2lvbjt2ZXJzaW9uPSIxIixcCisgY2gucW9zLmxvZ2JhY2suKjt2ZXJzaW9uPSJbMS4wLjAsMi4wLjApIixcCisgb3JnLnNsZjRqO3ZlcnNpb249IlsxLjYuNCwyKSIsXAorIG9yZy5zbGY0ai5oZWxwZXJzO3ZlcnNpb249IlsxLjYuNCwyKSIsXAorIG9yZy5zbGY0ai5zcGk7dmVyc2lvbj0iWzEuNi40LDIpIixcCisgb3JnLnNwcmluZ2ZyYW1ld29yay51dGlsO3ZlcnNpb249IlsyLjUuNiw0KSIKKworc2VydmljZUltcG9ydHMgPVwKKyBvcmcuZWNsaXBzZS5lcXVpbm94LnJlZ2lvbi5SZWdpb24sXAorIG9yZy5lY2xpcHNlLmVxdWlub3gucmVnaW9uLlJlZ2lvbkRpZ3JhcGgsXAorIG9yZy5vc2dpLmZyYW1ld29yay5ob29rcy5yZXNvbHZlci5SZXNvbHZlckhvb2tGYWN0b3J5LFwKKyBvcmcuZWNsaXBzZS52aXJnby5uYW5vLmRlcGxveWVyLmFwaS5jb3JlLkFwcGxpY2F0aW9uRGVwbG95ZXIsXAorIG9yZy5lY2xpcHNlLnZpcmdvLm5hbm8uZGVwbG95ZXIuYXBpLmNvcmUuRGVwbG95VXJpTm9ybWFsaXNlcixcCisgb3JnLmVjbGlwc2UudmlyZ28ua2VybmVsLmluc3RhbGwuYXJ0aWZhY3QuU2NvcGVTZXJ2aWNlUmVwb3NpdG9yeSxcCisgb3JnLmVjbGlwc2UudmlyZ28ua2VybmVsLnNlcnZpY2VzLndvcmsuV29ya0FyZWEsXAorIG9yZy5lY2xpcHNlLnZpcmdvLnJlcG9zaXRvcnkuQXJ0aWZhY3RCcmlkZ2UsXAorIG9yZy5lY2xpcHNlLnZpcmdvLnJlcG9zaXRvcnkuUmVwb3NpdG9yeUZhY3RvcnksXAorIG9yZy5lY2xpcHNlLnZpcmdvLnJlcG9zaXRvcnkuSGFzaEdlbmVyYXRvcixcCisgb3JnLmVjbGlwc2UudmlyZ28ubWVkaWMuZXZlbnRsb2cuRXZlbnRMb2dnZXJGYWN0b3J5LFwKKyBvcmcuZWNsaXBzZS52aXJnby5yZXBvc2l0b3J5LlJlcG9zaXRvcnksXAorIG9yZy5lY2xpcHNlLnZpcmdvLm5hbm8uY29yZS5TaHV0ZG93bixcCisgb3JnLm9zZ2kuc2VydmljZS5ldmVudC5FdmVudEFkbWluLFwKKyBvcmcub3NnaS5zZXJ2aWNlLmxvZy5Mb2dTZXJ2aWNlLFwKKyBvcmcub3NnaS5zZXJ2aWNlLmh0dHAuSHR0cFNlcnZpY2UsXAorIG9yZy5lY2xpcHNlLnZpcmdvLm1lZGljLmV2ZW50bG9nLkV2ZW50TG9nZ2VyLFwKKyBvcmcuZWNsaXBzZS52aXJnby5tZWRpYy5kdW1wLkR1bXBHZW5lcmF0b3IsXAorIG9yZy5lY2xpcHNlLnZpcmdvLm5hbm8uc2hpbS5zY29wZS5TY29wZUZhY3RvcnksXAorIG9yZy5lY2xpcHNlLnZpcmdvLm5hbm8uc2hpbS5zZXJ2aWNlYWJpbGl0eS5UcmFjaW5nU2VydmljZSxcCisgb3JnLmVjbGlwc2UudmlyZ28ua2VybmVsLm1vZGVsLlJ1bnRpbWVBcnRpZmFjdFJlcG9zaXRvcnksXAorIG9yZy5lY2xpcHNlLnZpcmdvLmtlcm5lbC5tb2RlbC5tYW5hZ2VtZW50LlJ1bnRpbWVBcnRpZmFjdE1vZGVsT2JqZWN0TmFtZUNyZWF0b3IsXAorIG9yZy5lY2xpcHNlLm9zZ2kuc2VydmljZS5yZXNvbHZlci5QbGF0Zm9ybUFkbWluLFwKKyBvcmcub3NnaS5zZXJ2aWNlLnBhY2thZ2VhZG1pbi5QYWNrYWdlQWRtaW4sXAorIG9yZy5lY2xpcHNlLnZpcmdvLm5hbm8uY29yZS5Db25maWd1cmF0aW9uRXhwb3J0ZXIsXAorIGphdmF4Lm1hbmFnZW1lbnQuTUJlYW5TZXJ2ZXIKKworc2VydmljZUV4cG9ydHMgPVwKKyBvcmcuZWNsaXBzZS52aXJnby5rZXJuZWwuaW5zdGFsbC5hcnRpZmFjdC5JbnN0YWxsQXJ0aWZhY3RMaWZlY3ljbGVMaXN0ZW5lcixcCisgb3JnLmVjbGlwc2UudmlyZ28ua2VybmVsLmluc3RhbGwuYXJ0aWZhY3QuQXJ0aWZhY3RJZGVudGl0eURldGVybWluZXIsXAorIG9yZy5lY2xpcHNlLnZpcmdvLmtlcm5lbC5pbnN0YWxsLnBpcGVsaW5lLnN0YWdlLnRyYW5zZm9ybS5UcmFuc2Zvcm1lcixcCisgb3JnLmVjbGlwc2UudmlyZ28ua2VybmVsLm1vZHVsZS5Nb2R1bGVDb250ZXh0QWNjZXNzb3IsXAorIG9yZy5lY2xpcHNlLnZpcmdvLm1lZGljLmR1bXAuRHVtcENvbnRyaWJ1dG9yLFwKKyBvcmcuZWNsaXBzZS52aXJnby5rZXJuZWwub3NnaS5xdWFzaS5RdWFzaUZyYW1ld29ya0ZhY3RvcnksXAorIG9yZy5lY2xpcHNlLnZpcmdvLmtlcm5lbC5vc2dpLmZyYW1ld29yay5Pc2dpRnJhbWV3b3JrLFwKKyBvcmcuZWNsaXBzZS52aXJnby5rZXJuZWwub3NnaS5mcmFtZXdvcmsuSW1wb3J0RXhwYW5kZXIsXAorIG9yZy5lY2xpcHNlLnZpcmdvLmtlcm5lbC5vc2dpLmZyYW1ld29yay5QYWNrYWdlQWRtaW5VdGlsLFwKKyBvcmcuZWNsaXBzZS5lcXVpbm94LnJlZ2lvbi5SZWdpb24sXAorIG9yZy5vc2dpLnNlcnZpY2UuZXZlbnQuRXZlbnRIYW5kbGVyLFwKKyBvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQ29udGV4dCxcCisgb3JnLmVjbGlwc2UudmlyZ28ubmFuby5kZXBsb3llci5hcGkuY29uZmlnLkNvbmZpZ3VyYXRpb25EZXBsb3llcgorCitpbml0aWFsQXJ0aWZhY3RzPXJlcG9zaXRvcnk6cGxhbi9vcmcuZWNsaXBzZS52aXJnby5rZXJuZWwudXNlcnJlZ2lvbi5ibHVlcHJpbnQsIHJlcG9zaXRvcnk6cGxhbi9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS53ZWIscmVwb3NpdG9yeTpwbGFuL29yZy5lY2xpcHNlLnZpcmdvLm1hbmFnZW1lbnQKZGlmZiAtLWdpdCBhL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L2NvbmZpZ3VyYXRpb24vb3JnLmVjbGlwc2UudmlyZ28ua2VybmVsLnVzZXJzLnByb3BlcnRpZXMgYi9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9jb25maWd1cmF0aW9uL29yZy5lY2xpcHNlLnZpcmdvLmtlcm5lbC51c2Vycy5wcm9wZXJ0aWVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhYjE5ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9jb25maWd1cmF0aW9uL29yZy5lY2xpcHNlLnZpcmdvLmtlcm5lbC51c2Vycy5wcm9wZXJ0aWVzCkBAIC0wLDAgKzEsOSBAQAorIyMjIyMjIyMjIyMjIyMjIyMjCisjIFVzZXIgZGVmaW5pdGlvbnMKKyMjIyMjIyMjIyMjIyMjIyMjIwordXNlci5hZG1pbj1hZG1pbgorCisjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUm9sZSBkZWZpbml0aW9ucworIyMjIyMjIyMjIyMjIyMjIyMjCityb2xlLmFkbWluPWFkbWluCmRpZmYgLS1naXQgYS9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9jb25maWd1cmF0aW9uL29yZy5lY2xpcHNlLnZpcmdvLm1lZGljLnByb3BlcnRpZXMgYi9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9jb25maWd1cmF0aW9uL29yZy5lY2xpcHNlLnZpcmdvLm1lZGljLnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWM1ZjFjZgotLS0gL2Rldi9udWxsCisrKyBiL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L2NvbmZpZ3VyYXRpb24vb3JnLmVjbGlwc2UudmlyZ28ubWVkaWMucHJvcGVydGllcwpAQCAtMCwwICsxLDcgQEAKK2R1bXAucm9vdC5kaXJlY3Rvcnk9c2VydmljZWFiaWxpdHkvZHVtcAorbG9nLndyYXBTeXNPdXQ9dHJ1ZQorbG9nLndyYXBTeXNFcnI9dHJ1ZQorbG9nLmR1bXAubGV2ZWw9REVCVUcKK2xvZy5kdW1wLmJ1ZmZlclNpemU9MTAwMDAKK2xvZy5kdW1wLnBhdHRlcm49WyVke3l5eXktTU0tZGQgSEg6bW06c3MuU1NTfV0gJS0yOC4yOHRocmVhZCAlLTY0LjY0bG9nZ2VyezY0fSAlWHttZWRpYy5ldmVudENvZGV9ICVtc2cgJWV4JW4KK2xvZy5qdWwuY29uc29sZUhhbmRsZXI9ZmFsc2UKZGlmZiAtLWdpdCBhL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L2NvbmZpZ3VyYXRpb24vb3JnLmVjbGlwc2UudmlyZ28ucmVwb3NpdG9yeS5wcm9wZXJ0aWVzIGIvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvY29uZmlndXJhdGlvbi9vcmcuZWNsaXBzZS52aXJnby5yZXBvc2l0b3J5LnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWU3ZGUyYgotLS0gL2Rldi9udWxsCisrKyBiL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L2NvbmZpZ3VyYXRpb24vb3JnLmVjbGlwc2UudmlyZ28ucmVwb3NpdG9yeS5wcm9wZXJ0aWVzCkBAIC0wLDAgKzEsNyBAQAorZXh0LnR5cGU9ZXh0ZXJuYWwKK2V4dC5zZWFyY2hQYXR0ZXJuPXJlcG9zaXRvcnkvZXh0L3thcnRpZmFjdH0KKwordXNyLnR5cGU9d2F0Y2hlZAordXNyLndhdGNoRGlyZWN0b3J5PXJlcG9zaXRvcnkvdXNyCisKK2NoYWluPWV4dCx1c3IKZGlmZiAtLWdpdCBhL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L2NvbmZpZ3VyYXRpb24vb3NnaS5jb25zb2xlLnByb3BlcnRpZXMgYi9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9jb25maWd1cmF0aW9uL29zZ2kuY29uc29sZS5wcm9wZXJ0aWVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0MDBmYzEKLS0tIC9kZXYvbnVsbAorKysgYi9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9jb25maWd1cmF0aW9uL29zZ2kuY29uc29sZS5wcm9wZXJ0aWVzCkBAIC0wLDAgKzEsNiBAQAordGVsbmV0LmVuYWJsZWQ9ZmFsc2UKK3RlbG5ldC5wb3J0PTI0MDEKK3RlbG5ldC5ob3N0PWxvY2FsaG9zdAorc3NoLmVuYWJsZWQ9ZmFsc2UKK3NzaC5wb3J0PTI0MDIKK3NzaC5ob3N0PWxvY2FsaG9zdApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L2NvbmZpZ3VyYXRpb24vc2VydmljZWFiaWxpdHkueG1sIGIvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvY29uZmlndXJhdGlvbi9zZXJ2aWNlYWJpbGl0eS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVlOWQ0OQotLS0gL2Rldi9udWxsCisrKyBiL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L2NvbmZpZ3VyYXRpb24vc2VydmljZWFiaWxpdHkueG1sCkBAIC0wLDAgKzEsODEgQEAKKzxjb25maWd1cmF0aW9uPgorCisJPGpteENvbmZpZ3VyYXRvciAvPgorCisJPGNvbnRleHRMaXN0ZW5lciBjbGFzcz0iY2gucW9zLmxvZ2JhY2suY2xhc3NpYy5qdWwuTGV2ZWxDaGFuZ2VQcm9wYWdhdG9yIi8+CisKKwk8YXBwZW5kZXIgbmFtZT0iU0lGVEVEX0xPR19GSUxFIiBjbGFzcz0iY2gucW9zLmxvZ2JhY2suY2xhc3NpYy5zaWZ0LlNpZnRpbmdBcHBlbmRlciI+CisJCTxkaXNjcmltaW5hdG9yPgorCQkJPEtleT5hcHBsaWNhdGlvbk5hbWU8L0tleT4KKwkJCTxEZWZhdWx0VmFsdWU+dmlyZ28tamV0dHktc2VydmVyPC9EZWZhdWx0VmFsdWU+CisJCTwvZGlzY3JpbWluYXRvcj4KKwkJPHNpZnQ+CisJCQk8YXBwZW5kZXIgbmFtZT0iJHthcHBsaWNhdGlvbk5hbWV9X0xPR19GSUxFIiBjbGFzcz0iY2gucW9zLmxvZ2JhY2suY29yZS5yb2xsaW5nLlJvbGxpbmdGaWxlQXBwZW5kZXIiPgorCQkJCTxmaWxlPnNlcnZpY2VhYmlsaXR5L2xvZ3MvJHthcHBsaWNhdGlvbk5hbWV9L2xvZy5sb2c8L2ZpbGU+CisJCQkJPHJvbGxpbmdQb2xpY3kgY2xhc3M9ImNoLnFvcy5sb2diYWNrLmNvcmUucm9sbGluZy5GaXhlZFdpbmRvd1JvbGxpbmdQb2xpY3kiPgorCQkJCQk8RmlsZU5hbWVQYXR0ZXJuPnNlcnZpY2VhYmlsaXR5L2xvZ3MvJHthcHBsaWNhdGlvbk5hbWV9L2xvZ18laS5sb2c8L0ZpbGVOYW1lUGF0dGVybj4KKwkJCQkJPE1pbkluZGV4PjE8L01pbkluZGV4PgorCQkJCQk8TWF4SW5kZXg+NDwvTWF4SW5kZXg+CisJCQkJPC9yb2xsaW5nUG9saWN5PgorCQkJCTx0cmlnZ2VyaW5nUG9saWN5IGNsYXNzPSJjaC5xb3MubG9nYmFjay5jb3JlLnJvbGxpbmcuU2l6ZUJhc2VkVHJpZ2dlcmluZ1BvbGljeSI+CisJCQkJCTxNYXhGaWxlU2l6ZT4xME1CPC9NYXhGaWxlU2l6ZT4KKwkJCQk8L3RyaWdnZXJpbmdQb2xpY3k+CisJCQkJPGVuY29kZXIgY2xhc3M9ImNoLnFvcy5sb2diYWNrLmNsYXNzaWMuZW5jb2Rlci5QYXR0ZXJuTGF5b3V0RW5jb2RlciI+CisJCQkJCTxQYXR0ZXJuPlslZHt5eXl5LU1NLWRkIEhIOm1tOnNzLlNTU31dICUtNWxldmVsICUtMjguMjh0aHJlYWQgJS02NC42NGxvZ2dlcns2NH0gJVh7bWVkaWMuZXZlbnRDb2RlfSAlbXNnICVleCVuPC9QYXR0ZXJuPgorCQkJCTwvZW5jb2Rlcj4KKwkJCTwvYXBwZW5kZXI+CisJCTwvc2lmdD4KKwk8L2FwcGVuZGVyPgorCQorCTxhcHBlbmRlciBuYW1lPSJMT0dfRklMRSIgY2xhc3M9ImNoLnFvcy5sb2diYWNrLmNvcmUucm9sbGluZy5Sb2xsaW5nRmlsZUFwcGVuZGVyIj4KKwkJPGZpbGU+c2VydmljZWFiaWxpdHkvbG9ncy9sb2cubG9nPC9maWxlPgorCQk8cm9sbGluZ1BvbGljeSBjbGFzcz0iY2gucW9zLmxvZ2JhY2suY29yZS5yb2xsaW5nLkZpeGVkV2luZG93Um9sbGluZ1BvbGljeSI+CisJCQk8RmlsZU5hbWVQYXR0ZXJuPnNlcnZpY2VhYmlsaXR5L2xvZ3MvbG9nXyVpLmxvZzwvRmlsZU5hbWVQYXR0ZXJuPgorCQkJPE1pbkluZGV4PjE8L01pbkluZGV4PgorCQkJPE1heEluZGV4PjQ8L01heEluZGV4PgorCQk8L3JvbGxpbmdQb2xpY3k+CisJCTx0cmlnZ2VyaW5nUG9saWN5IGNsYXNzPSJjaC5xb3MubG9nYmFjay5jb3JlLnJvbGxpbmcuU2l6ZUJhc2VkVHJpZ2dlcmluZ1BvbGljeSI+CisJCQk8TWF4RmlsZVNpemU+MTBNQjwvTWF4RmlsZVNpemU+CisJCTwvdHJpZ2dlcmluZ1BvbGljeT4KKwkJPGVuY29kZXIgY2xhc3M9ImNoLnFvcy5sb2diYWNrLmNsYXNzaWMuZW5jb2Rlci5QYXR0ZXJuTGF5b3V0RW5jb2RlciI+CisJCQk8UGF0dGVybj5bJWR7eXl5eS1NTS1kZCBISDptbTpzcy5TU1N9XSAlLTVsZXZlbCAlLTI4LjI4dGhyZWFkICUtNjQuNjRsb2dnZXJ7NjR9ICVYe21lZGljLmV2ZW50Q29kZX0gJW1zZyAlZXglbjwvUGF0dGVybj4KKwkJPC9lbmNvZGVyPgorCTwvYXBwZW5kZXI+CisKKwk8YXBwZW5kZXIgbmFtZT0iRVZFTlRfTE9HX1NURE9VVCIgY2xhc3M9Im9yZy5lY2xpcHNlLnZpcmdvLm1lZGljLmxvZy5sb2diYWNrLlJlcm91dGluZ0F3YXJlQ29uc29sZUFwcGVuZGVyIj4KKwkJPGVuY29kZXIgY2xhc3M9ImNoLnFvcy5sb2diYWNrLmNsYXNzaWMuZW5jb2Rlci5QYXR0ZXJuTGF5b3V0RW5jb2RlciI+CisJCQk8UGF0dGVybj5bJWR7eXl5eS1NTS1kZCBISDptbTpzcy5TU1N9XSAlLTI4LjI4dGhyZWFkICZsdDslWHttZWRpYy5ldmVudENvZGV9Jmd0OyAlbXNnICVleCVuPC9QYXR0ZXJuPgorCQk8L2VuY29kZXI+CisJPC9hcHBlbmRlcj4KKworCTxhcHBlbmRlciBuYW1lPSJFVkVOVF9MT0dfRklMRSIgY2xhc3M9ImNoLnFvcy5sb2diYWNrLmNvcmUucm9sbGluZy5Sb2xsaW5nRmlsZUFwcGVuZGVyIj4KKwkJPGZpbGU+c2VydmljZWFiaWxpdHkvZXZlbnRsb2dzL2V2ZW50bG9nLmxvZzwvZmlsZT4KKwkJPHJvbGxpbmdQb2xpY3kgY2xhc3M9ImNoLnFvcy5sb2diYWNrLmNvcmUucm9sbGluZy5GaXhlZFdpbmRvd1JvbGxpbmdQb2xpY3kiPgorCQkJPEZpbGVOYW1lUGF0dGVybj5zZXJ2aWNlYWJpbGl0eS9ldmVudGxvZ3MvZXZlbnRsb2dfJWkubG9nPC9GaWxlTmFtZVBhdHRlcm4+CisJCQk8TWluSW5kZXg+MTwvTWluSW5kZXg+CisJCQk8TWF4SW5kZXg+NDwvTWF4SW5kZXg+CisJCTwvcm9sbGluZ1BvbGljeT4KKwkJPHRyaWdnZXJpbmdQb2xpY3kgY2xhc3M9ImNoLnFvcy5sb2diYWNrLmNvcmUucm9sbGluZy5TaXplQmFzZWRUcmlnZ2VyaW5nUG9saWN5Ij4KKwkJCTxNYXhGaWxlU2l6ZT4xME1CPC9NYXhGaWxlU2l6ZT4KKwkJPC90cmlnZ2VyaW5nUG9saWN5PgorCQk8ZW5jb2RlciBjbGFzcz0iY2gucW9zLmxvZ2JhY2suY2xhc3NpYy5lbmNvZGVyLlBhdHRlcm5MYXlvdXRFbmNvZGVyIj4KKwkJCTxQYXR0ZXJuPlslZHt5eXl5LU1NLWRkIEhIOm1tOnNzLlNTU31dICUtMjguMjh0aHJlYWQgJmx0OyVYe21lZGljLmV2ZW50Q29kZX0mZ3Q7ICVtc2cgJWV4JW48L1BhdHRlcm4+CisJCTwvZW5jb2Rlcj4KKwk8L2FwcGVuZGVyPgorCisJPGxvZ2dlciBsZXZlbD0iSU5GTyIgYWRkaXRpdml0eT0iZmFsc2UiIG5hbWU9Im9yZy5lY2xpcHNlLnZpcmdvLm1lZGljLmV2ZW50bG9nLmxvY2FsaXplZCI+CisJCTxhcHBlbmRlci1yZWYgcmVmPSJFVkVOVF9MT0dfU1RET1VUIiAvPgorCQk8YXBwZW5kZXItcmVmIHJlZj0iRVZFTlRfTE9HX0ZJTEUiIC8+CisJPC9sb2dnZXI+CisJCisJPGxvZ2dlciBsZXZlbD0iSU5GTyIgYWRkaXRpdml0eT0iZmFsc2UiIG5hbWU9Im9yZy5lY2xpcHNlLnZpcmdvLm1lZGljLmV2ZW50bG9nLmRlZmF1bHQiPgorCQk8YXBwZW5kZXItcmVmIHJlZj0iU0lGVEVEX0xPR19GSUxFIiAvPgorCQk8YXBwZW5kZXItcmVmIHJlZj0iTE9HX0ZJTEUiIC8+CisJPC9sb2dnZXI+CisKKwk8cm9vdCBsZXZlbD0iSU5GTyI+CisJCTxhcHBlbmRlci1yZWYgcmVmPSJTSUZURURfTE9HX0ZJTEUiIC8+CisJCTxhcHBlbmRlci1yZWYgcmVmPSJMT0dfRklMRSIgLz4KKwk8L3Jvb3Q+CisKKzwvY29uZmlndXJhdGlvbj4KZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvcHVibGlzaF9yZXNvdXJjZXMvZmVhdHVyZXMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkucmVzb3VyY2VzL2VwbC12MTAuaHRtbCBiL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L2VwbC12MTAuaHRtbApvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpjb3B5IGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9wdWJsaXNoX3Jlc291cmNlcy9mZWF0dXJlcy9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS5yZXNvdXJjZXMvZXBsLXYxMC5odG1sCmNvcHkgdG8gamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvZXBsLXYxMC5odG1sCmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL2pldHR5L2V0Yy9qZXR0eS54bWwgYi9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9qZXR0eS9ldGMvamV0dHkueG1sCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBidWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL2pldHR5L2V0Yy9qZXR0eS54bWwKcmVuYW1lIHRvIGpldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L2pldHR5L2V0Yy9qZXR0eS54bWwKZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvamV0dHkvZXRjL2tleXN0b3JlIGIvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvamV0dHkvZXRjL2tleXN0b3JlCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBidWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL2pldHR5L2V0Yy9rZXlzdG9yZQpyZW5hbWUgdG8gamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvamV0dHkvZXRjL2tleXN0b3JlCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvamV0dHkvZXRjL3JlYWxtLnByb3BlcnRpZXMgYi9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9qZXR0eS9ldGMvcmVhbG0ucHJvcGVydGllcwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9qZXR0eS9ldGMvcmVhbG0ucHJvcGVydGllcwpyZW5hbWUgdG8gamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvamV0dHkvZXRjL3JlYWxtLnByb3BlcnRpZXMKZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvamV0dHkvZXRjL3dlYmRlZmF1bHQueG1sIGIvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvamV0dHkvZXRjL3dlYmRlZmF1bHQueG1sCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBidWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL2pldHR5L2V0Yy93ZWJkZWZhdWx0LnhtbApyZW5hbWUgdG8gamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvamV0dHkvZXRjL3dlYmRlZmF1bHQueG1sCmRpZmYgLS1naXQgYS9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9saWIvLnZlcnNpb24gYi9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9saWIvLnZlcnNpb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc5ODVmNAotLS0gL2Rldi9udWxsCisrKyBiL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L2xpYi8udmVyc2lvbgpAQCAtMCwwICsxIEBACit2aXJnby5zZXJ2ZXIudmVyc2lvbj1AVklSR08uVkVSU0lPTkAKZGlmZiAtLWdpdCBhL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L25vdGljZS5odG1sIGIvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3Qvbm90aWNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGVlNzNmNAotLS0gL2Rldi9udWxsCisrKyBiL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L25vdGljZS5odG1sCkBAIC0wLDAgKzEsMTA0IEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+Cis8IS0tIHNhdmVkIGZyb20gdXJsPSgwMDQ0KWh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsL25vdGljZS5odG1sIC0tPgorPEhUTUwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPjxIRUFEPjxNRVRBIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiPgorCis8VElUTEU+RWNsaXBzZSBGb3VuZGF0aW9uIFNvZnR3YXJlIFVzZXIgQWdyZWVtZW50PC9USVRMRT4KKzwvSEVBRD48Qk9EWSBsYW5nPSJFTi1VUyI+Cis8SDI+RWNsaXBzZSBGb3VuZGF0aW9uIFNvZnR3YXJlIFVzZXIgQWdyZWVtZW50PC9IMj4KKzxQPkFwcmlsIDE0LCAyMDEwPC9QPgorCis8SDM+VXNhZ2UgT2YgQ29udGVudDwvSDM+CisKKzxQPlRIRSBFQ0xJUFNFIEZPVU5EQVRJT04gTUFLRVMgQVZBSUxBQkxFIFNPRlRXQVJFLCBET0NVTUVOVEFUSU9OLCBJTkZPUk1BVElPTiBBTkQvT1IgT1RIRVIgTUFURVJJQUxTIEZPUiBPUEVOIFNPVVJDRSBQUk9KRUNUUworICAgKENPTExFQ1RJVkVMWSAiQ09OVEVOVCIpLiAgVVNFIE9GIFRIRSBDT05URU5UIElTIEdPVkVSTkVEIEJZIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBUSElTIEFHUkVFTUVOVCBBTkQvT1IgVEhFIFRFUk1TIEFORAorICAgQ09ORElUSU9OUyBPRiBMSUNFTlNFIEFHUkVFTUVOVFMgT1IgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVy4gIEJZIFVTSU5HIFRIRSBDT05URU5ULCBZT1UgQUdSRUUgVEhBVCBZT1VSIFVTRQorICAgT0YgVEhFIENPTlRFTlQgSVMgR09WRVJORUQgQlkgVEhJUyBBR1JFRU1FTlQgQU5EL09SIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBBTlkgQVBQTElDQUJMRSBMSUNFTlNFIEFHUkVFTUVOVFMgT1IKKyAgIE5PVElDRVMgSU5ESUNBVEVEIE9SIFJFRkVSRU5DRUQgQkVMT1cuICBJRiBZT1UgRE8gTk9UIEFHUkVFIFRPIFRIRSBURVJNUyBBTkQgQ09ORElUSU9OUyBPRiBUSElTIEFHUkVFTUVOVCBBTkQgVEhFIFRFUk1TIEFORAorICAgQ09ORElUSU9OUyBPRiBBTlkgQVBQTElDQUJMRSBMSUNFTlNFIEFHUkVFTUVOVFMgT1IgTk9USUNFUyBJTkRJQ0FURUQgT1IgUkVGRVJFTkNFRCBCRUxPVywgVEhFTiBZT1UgTUFZIE5PVCBVU0UgVEhFIENPTlRFTlQuPC9QPgorCis8SDM+QXBwbGljYWJsZSBMaWNlbnNlczwvSDM+CisKKzxQPlVubGVzcyBvdGhlcndpc2UgaW5kaWNhdGVkLCBhbGwgQ29udGVudCBtYWRlIGF2YWlsYWJsZSBieSB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAKKyAgICgiRVBMIikuICBBIGNvcHkgb2YgdGhlIEVQTCBpcyBwcm92aWRlZCB3aXRoIHRoaXMgQ29udGVudCBhbmQgaXMgYWxzbyBhdmFpbGFibGUgYXQgPEEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sPC9BPi4KKyAgIEZvciBwdXJwb3NlcyBvZiB0aGUgRVBMLCAiUHJvZ3JhbSIgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvUD4KKworPFA+Q29udGVudCBpbmNsdWRlcywgYnV0IGlzIG5vdCBsaW1pdGVkIHRvLCBzb3VyY2UgY29kZSwgb2JqZWN0IGNvZGUsIGRvY3VtZW50YXRpb24gYW5kIG90aGVyIGZpbGVzIG1haW50YWluZWQgaW4gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiBzb3VyY2UgY29kZQorICAgcmVwb3NpdG9yeSAoIlJlcG9zaXRvcnkiKSBpbiBzb2Z0d2FyZSBtb2R1bGVzICgiTW9kdWxlcyIpIGFuZCBtYWRlIGF2YWlsYWJsZSBhcyBkb3dubG9hZGFibGUgYXJjaGl2ZXMgKCJEb3dubG9hZHMiKS48L1A+CisKKzxVTD4KKyAgICAgICA8TEk+Q29udGVudCBtYXkgYmUgc3RydWN0dXJlZCBhbmQgcGFja2FnZWQgaW50byBtb2R1bGVzIHRvIGZhY2lsaXRhdGUgZGVsaXZlcmluZywgZXh0ZW5kaW5nLCBhbmQgdXBncmFkaW5nIHRoZSBDb250ZW50LiAgVHlwaWNhbCBtb2R1bGVzIG1heSBpbmNsdWRlIHBsdWctaW5zICgiUGx1Zy1pbnMiKSwgcGx1Zy1pbiBmcmFnbWVudHMgKCJGcmFnbWVudHMiKSwgYW5kIGZlYXR1cmVzICgiRmVhdHVyZXMiKS48L0xJPgorICAgICAgIDxMST5FYWNoIFBsdWctaW4gb3IgRnJhZ21lbnQgbWF5IGJlIHBhY2thZ2VkIGFzIGEgc3ViLWRpcmVjdG9yeSBvciBKQVIgKEphdmGZIEFSY2hpdmUpIGluIGEgZGlyZWN0b3J5IG5hbWVkICJwbHVnaW5zIi48L0xJPgorICAgICAgIDxMST5BIEZlYXR1cmUgaXMgYSBidW5kbGUgb2Ygb25lIG9yIG1vcmUgUGx1Zy1pbnMgYW5kL29yIEZyYWdtZW50cyBhbmQgYXNzb2NpYXRlZCBtYXRlcmlhbC4gIEVhY2ggRmVhdHVyZSBtYXkgYmUgcGFja2FnZWQgYXMgYSBzdWItZGlyZWN0b3J5IGluIGEgZGlyZWN0b3J5IG5hbWVkICJmZWF0dXJlcyIuICBXaXRoaW4gYSBGZWF0dXJlLCBmaWxlcyBuYW1lZCAiZmVhdHVyZS54bWwiIG1heSBjb250YWluIGEgbGlzdCBvZiB0aGUgbmFtZXMgYW5kIHZlcnNpb24gbnVtYmVycyBvZiB0aGUgUGx1Zy1pbnMKKyAgICAgIGFuZC9vciBGcmFnbWVudHMgYXNzb2NpYXRlZCB3aXRoIHRoYXQgRmVhdHVyZS48L0xJPgorICAgICAgIDxMST5GZWF0dXJlcyBtYXkgYWxzbyBpbmNsdWRlIG90aGVyIEZlYXR1cmVzICgiSW5jbHVkZWQgRmVhdHVyZXMiKS4gV2l0aGluIGEgRmVhdHVyZSwgZmlsZXMgbmFtZWQgImZlYXR1cmUueG1sIiBtYXkgY29udGFpbiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGFuZCB2ZXJzaW9uIG51bWJlcnMgb2YgSW5jbHVkZWQgRmVhdHVyZXMuPC9MST4KKzwvVUw+CisKKzxQPlRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBnb3Zlcm5pbmcgUGx1Zy1pbnMgYW5kIEZyYWdtZW50cyBzaG91bGQgYmUgY29udGFpbmVkIGluIGZpbGVzIG5hbWVkICJhYm91dC5odG1sIiAoIkFib3V0cyIpLiBUaGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZ292ZXJuaW5nIEZlYXR1cmVzIGFuZAorSW5jbHVkZWQgRmVhdHVyZXMgc2hvdWxkIGJlIGNvbnRhaW5lZCBpbiBmaWxlcyBuYW1lZCAibGljZW5zZS5odG1sIiAoIkZlYXR1cmUgTGljZW5zZXMiKS4gIEFib3V0cyBhbmQgRmVhdHVyZSBMaWNlbnNlcyBtYXkgYmUgbG9jYXRlZCBpbiBhbnkgZGlyZWN0b3J5IG9mIGEgRG93bmxvYWQgb3IgTW9kdWxlCitpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0byB0aGUgZm9sbG93aW5nIGxvY2F0aW9uczo8L1A+CisKKzxVTD4KKyAgICAgICA8TEk+VGhlIHRvcC1sZXZlbCAocm9vdCkgZGlyZWN0b3J5PC9MST4KKyAgICAgICA8TEk+UGx1Zy1pbiBhbmQgRnJhZ21lbnQgZGlyZWN0b3JpZXM8L0xJPgorICAgICAgIDxMST5JbnNpZGUgUGx1Zy1pbnMgYW5kIEZyYWdtZW50cyBwYWNrYWdlZCBhcyBKQVJzPC9MST4KKyAgICAgICA8TEk+U3ViLWRpcmVjdG9yaWVzIG9mIHRoZSBkaXJlY3RvcnkgbmFtZWQgInNyYyIgb2YgY2VydGFpbiBQbHVnLWluczwvTEk+CisgICAgICAgPExJPkZlYXR1cmUgZGlyZWN0b3JpZXM8L0xJPgorPC9VTD4KKworPFA+Tm90ZTogaWYgYSBGZWF0dXJlIG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBFY2xpcHNlIEZvdW5kYXRpb24gaXMgaW5zdGFsbGVkIHVzaW5nIHRoZSBQcm92aXNpb25pbmcgVGVjaG5vbG9neSAoYXMgZGVmaW5lZCBiZWxvdyksIHlvdSBtdXN0IGFncmVlIHRvIGEgbGljZW5zZSAoIkZlYXR1cmUgVXBkYXRlIExpY2Vuc2UiKSBkdXJpbmcgdGhlCitpbnN0YWxsYXRpb24gcHJvY2Vzcy4gIElmIHRoZSBGZWF0dXJlIGNvbnRhaW5zIEluY2x1ZGVkIEZlYXR1cmVzLCB0aGUgRmVhdHVyZSBVcGRhdGUgTGljZW5zZSBzaG91bGQgZWl0aGVyIHByb3ZpZGUgeW91IHdpdGggdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybmluZyB0aGUgSW5jbHVkZWQgRmVhdHVyZXMgb3IKK2luZm9ybSB5b3Ugd2hlcmUgeW91IGNhbiBsb2NhdGUgdGhlbS4gIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIG1heSBiZSBmb3VuZCBpbiB0aGUgImxpY2Vuc2UiIHByb3BlcnR5IG9mIGZpbGVzIG5hbWVkICJmZWF0dXJlLnByb3BlcnRpZXMiIGZvdW5kIHdpdGhpbiBhIEZlYXR1cmUuCitTdWNoIEFib3V0cywgRmVhdHVyZSBMaWNlbnNlcywgYW5kIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2VzIGNvbnRhaW4gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIChvciByZWZlcmVuY2VzIHRvIHN1Y2ggdGVybXMgYW5kIGNvbmRpdGlvbnMpIHRoYXQgZ292ZXJuIHlvdXIgdXNlIG9mIHRoZSBhc3NvY2lhdGVkIENvbnRlbnQgaW4KK3RoYXQgZGlyZWN0b3J5LjwvUD4KKworPFA+VEhFIEFCT1VUUywgRkVBVFVSRSBMSUNFTlNFUywgQU5EIEZFQVRVUkUgVVBEQVRFIExJQ0VOU0VTIE1BWSBSRUZFUiBUTyBUSEUgRVBMIE9SIE9USEVSIExJQ0VOU0UgQUdSRUVNRU5UUywgTk9USUNFUyBPUiBURVJNUyBBTkQgQ09ORElUSU9OUy4gIFNPTUUgT0YgVEhFU0UKK09USEVSIExJQ0VOU0UgQUdSRUVNRU5UUyBNQVkgSU5DTFVERSAoQlVUIEFSRSBOT1QgTElNSVRFRCBUTyk6PC9QPgorCis8VUw+CisgICAgICAgPExJPkNvbW1vbiBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMCAoYXZhaWxhYmxlIGF0IDxBIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvY3BsLXYxMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2NwbC12MTAuaHRtbDwvQT4pPC9MST4KKyAgICAgICA8TEk+QXBhY2hlIFNvZnR3YXJlIExpY2Vuc2UgMS4xIChhdmFpbGFibGUgYXQgPEEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UiPmh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFPC9BPik8L0xJPgorICAgICAgIDxMST5BcGFjaGUgU29mdHdhcmUgTGljZW5zZSAyLjAgKGF2YWlsYWJsZSBhdCA8QSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAiPmh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMDwvQT4pPC9MST4KKyAgICAgICA8TEk+TWV0cm8gTGluayBQdWJsaWMgTGljZW5zZSAxLjAwIChhdmFpbGFibGUgYXQgPEEgaHJlZj0iaHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29wZW5tb3RpZi9zdXBwb3J0ZXJzL21ldHJvbGluay9saWNlbnNlLmh0bWwiPmh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vcGVubW90aWYvc3VwcG9ydGVycy9tZXRyb2xpbmsvbGljZW5zZS5odG1sPC9BPik8L0xJPgorICAgICAgIDxMST5Nb3ppbGxhIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4xIChhdmFpbGFibGUgYXQgPEEgaHJlZj0iaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvTVBMLTEuMS5odG1sIj5odHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC9NUEwtMS4xLmh0bWw8L0E+KTwvTEk+Cis8L1VMPgorCis8UD5JVCBJUyBZT1VSIE9CTElHQVRJT04gVE8gUkVBRCBBTkQgQUNDRVBUIEFMTCBTVUNIIFRFUk1TIEFORCBDT05ESVRJT05TIFBSSU9SIFRPIFVTRSBPRiBUSEUgQ09OVEVOVC4gIElmIG5vIEFib3V0LCBGZWF0dXJlIExpY2Vuc2UsIG9yIEZlYXR1cmUgVXBkYXRlIExpY2Vuc2UgaXMgcHJvdmlkZWQsIHBsZWFzZQorY29udGFjdCB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uIHRvIGRldGVybWluZSB3aGF0IHRlcm1zIGFuZCBjb25kaXRpb25zIGdvdmVybiB0aGF0IHBhcnRpY3VsYXIgQ29udGVudC48L1A+CisKKworPEgzPlVzZSBvZiBQcm92aXNpb25pbmcgVGVjaG5vbG9neTwvSDM+CisKKzxQPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIHByb3Zpc2lvbmluZyBzb2Z0d2FyZSwgZXhhbXBsZXMgb2Ygd2hpY2ggaW5jbHVkZSwgYnV0IGFyZSBub3QgbGltaXRlZCB0bywgcDIgYW5kIHRoZSBFY2xpcHNlCisgICBVcGRhdGUgTWFuYWdlciAoIlByb3Zpc2lvbmluZyBUZWNobm9sb2d5IikgZm9yIHRoZSBwdXJwb3NlIG9mIGFsbG93aW5nIHVzZXJzIHRvIGluc3RhbGwgc29mdHdhcmUsIGRvY3VtZW50YXRpb24sIGluZm9ybWF0aW9uIGFuZC9vcgorICAgb3RoZXIgbWF0ZXJpYWxzIChjb2xsZWN0aXZlbHkgIkluc3RhbGxhYmxlIFNvZnR3YXJlIikuIFRoaXMgY2FwYWJpbGl0eSBpcyBwcm92aWRlZCB3aXRoIHRoZSBpbnRlbnQgb2YgYWxsb3dpbmcgc3VjaCB1c2VycyB0bworICAgaW5zdGFsbCwgZXh0ZW5kIGFuZCB1cGRhdGUgRWNsaXBzZS1iYXNlZCBwcm9kdWN0cy4gSW5mb3JtYXRpb24gYWJvdXQgcGFja2FnaW5nIEluc3RhbGxhYmxlIFNvZnR3YXJlIGlzIGF2YWlsYWJsZSBhdCA8QSBocmVmPSJodHRwOi8vZWNsaXBzZS5vcmcvZXF1aW5veC9wMi9yZXBvc2l0b3J5X3BhY2thZ2luZy5odG1sIj5odHRwOi8vZWNsaXBzZS5vcmcvZXF1aW5veC9wMi9yZXBvc2l0b3J5X3BhY2thZ2luZy5odG1sPC9BPgorICAgKCJTcGVjaWZpY2F0aW9uIikuPC9QPgorCis8UD5Zb3UgbWF5IHVzZSBQcm92aXNpb25pbmcgVGVjaG5vbG9neSB0byBhbGxvdyBvdGhlciBwYXJ0aWVzIHRvIGluc3RhbGwgSW5zdGFsbGFibGUgU29mdHdhcmUuIFlvdSBzaGFsbCBiZSByZXNwb25zaWJsZSBmb3IgZW5hYmxpbmcgdGhlCisgICBhcHBsaWNhYmxlIGxpY2Vuc2UgYWdyZWVtZW50cyByZWxhdGluZyB0byB0aGUgSW5zdGFsbGFibGUgU29mdHdhcmUgdG8gYmUgcHJlc2VudGVkIHRvLCBhbmQgYWNjZXB0ZWQgYnksIHRoZSB1c2VycyBvZiB0aGUgUHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kKKyAgIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgU3BlY2lmaWNhdGlvbi4gQnkgdXNpbmcgUHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kgaW4gc3VjaCBhIG1hbm5lciBhbmQgbWFraW5nIGl0IGF2YWlsYWJsZSBpbiBhY2NvcmRhbmNlIHdpdGggdGhlCisgICBTcGVjaWZpY2F0aW9uLCB5b3UgZnVydGhlciBhY2tub3dsZWRnZSB5b3VyIGFncmVlbWVudCB0bywgYW5kIHRoZSBhY3F1aXNpdGlvbiBvZiBhbGwgbmVjZXNzYXJ5IHJpZ2h0cyB0byBwZXJtaXQgdGhlIGZvbGxvd2luZzo8L1A+CisKKzxPTD4KKyAgICAgICA8TEk+QSBzZXJpZXMgb2YgYWN0aW9ucyBtYXkgb2NjdXIgKCJQcm92aXNpb25pbmcgUHJvY2VzcyIpIGluIHdoaWNoIGEgdXNlciBtYXkgZXhlY3V0ZSB0aGUgUHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kKKyAgICAgICBvbiBhIG1hY2hpbmUgKCJUYXJnZXQgTWFjaGluZSIpIHdpdGggdGhlIGludGVudCBvZiBpbnN0YWxsaW5nLCBleHRlbmRpbmcgb3IgdXBkYXRpbmcgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgYW4gRWNsaXBzZS1iYXNlZAorICAgICAgIHByb2R1Y3QuPC9MST4KKyAgICAgICA8TEk+RHVyaW5nIHRoZSBQcm92aXNpb25pbmcgUHJvY2VzcywgdGhlIFByb3Zpc2lvbmluZyBUZWNobm9sb2d5IG1heSBjYXVzZSB0aGlyZCBwYXJ0eSBJbnN0YWxsYWJsZSBTb2Z0d2FyZSBvciBhIHBvcnRpb24gdGhlcmVvZiB0byBiZQorICAgICAgIGFjY2Vzc2VkIGFuZCBjb3BpZWQgdG8gdGhlIFRhcmdldCBNYWNoaW5lLjwvTEk+CisgICAgICAgPExJPlB1cnN1YW50IHRvIHRoZSBTcGVjaWZpY2F0aW9uLCB5b3Ugd2lsbCBwcm92aWRlIHRvIHRoZSB1c2VyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyB0aGF0IGdvdmVybiB0aGUgdXNlIG9mIHRoZSBJbnN0YWxsYWJsZQorICAgICAgIFNvZnR3YXJlICgiSW5zdGFsbGFibGUgU29mdHdhcmUgQWdyZWVtZW50IikgYW5kIHN1Y2ggSW5zdGFsbGFibGUgU29mdHdhcmUgQWdyZWVtZW50IHNoYWxsIGJlIGFjY2Vzc2VkIGZyb20gdGhlIFRhcmdldAorICAgICAgIE1hY2hpbmUgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBTcGVjaWZpY2F0aW9uLiBTdWNoIEluc3RhbGxhYmxlIFNvZnR3YXJlIEFncmVlbWVudCBtdXN0IGluZm9ybSB0aGUgdXNlciBvZiB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgdGhhdCBnb3Zlcm4KKyAgICAgICB0aGUgSW5zdGFsbGFibGUgU29mdHdhcmUgYW5kIG11c3Qgc29saWNpdCBhY2NlcHRhbmNlIGJ5IHRoZSBlbmQgdXNlciBpbiB0aGUgbWFubmVyIHByZXNjcmliZWQgaW4gc3VjaCBJbnN0YWxsYWJsZSBTb2Z0d2FyZSBBZ3JlZW1lbnQuIFVwb24gc3VjaAorICAgICAgIGluZGljYXRpb24gb2YgYWdyZWVtZW50IGJ5IHRoZSB1c2VyLCB0aGUgcHJvdmlzaW9uaW5nIFRlY2hub2xvZ3kgd2lsbCBjb21wbGV0ZSBpbnN0YWxsYXRpb24gb2YgdGhlIEluc3RhbGxhYmxlIFNvZnR3YXJlLjwvTEk+Cis8L09MPgorCis8SDM+Q3J5cHRvZ3JhcGh5PC9IMz4KKworPFA+Q29udGVudCBtYXkgY29udGFpbiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBUaGUgY291bnRyeSBpbiB3aGljaCB5b3UgYXJlIGN1cnJlbnRseSBtYXkgaGF2ZSByZXN0cmljdGlvbnMgb24gdGhlIGltcG9ydCwgcG9zc2Vzc2lvbiwgYW5kIHVzZSwgYW5kL29yIHJlLWV4cG9ydCB0bworICAgYW5vdGhlciBjb3VudHJ5LCBvZiBlbmNyeXB0aW9uIHNvZnR3YXJlLiBCRUZPUkUgdXNpbmcgYW55IGVuY3J5cHRpb24gc29mdHdhcmUsIHBsZWFzZSBjaGVjayB0aGUgY291bnRyeSdzIGxhd3MsIHJlZ3VsYXRpb25zIGFuZCBwb2xpY2llcyBjb25jZXJuaW5nIHRoZSBpbXBvcnQsCisgICBwb3NzZXNzaW9uLCBvciB1c2UsIGFuZCByZS1leHBvcnQgb2YgZW5jcnlwdGlvbiBzb2Z0d2FyZSwgdG8gc2VlIGlmIHRoaXMgaXMgcGVybWl0dGVkLjwvUD4KKworPFA+PFNNQUxMPkphdmEgYW5kIGFsbCBKYXZhLWJhc2VkIHRyYWRlbWFya3MgYXJlIHRyYWRlbWFya3Mgb2YgT3JhY2xlIENvcnBvcmF0aW9uIGluIHRoZSBVbml0ZWQgU3RhdGVzLCBvdGhlciBjb3VudHJpZXMsIG9yIGJvdGguPC9TTUFMTD48L1A+CisKKworPC9CT0RZPjwvSFRNTD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9yZXBvc2l0b3J5L2V4dC9jb20uc3ByaW5nc291cmNlLm9yZy5hb3BhbGxpYW5jZS0xLjAuMC5qYXIgYi9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9yZXBvc2l0b3J5L2V4dC9jb20uc3ByaW5nc291cmNlLm9yZy5hb3BhbGxpYW5jZS0xLjAuMC5qYXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2M1Y2Y4YgotLS0gL2Rldi9udWxsCisrKyBiL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L3JlcG9zaXRvcnkvZXh0L2NvbS5zcHJpbmdzb3VyY2Uub3JnLmFvcGFsbGlhbmNlLTEuMC4wLmphcgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9yZXBvc2l0b3J5L2V4dC9jb20uc3ByaW5nc291cmNlLm9yZy5hcGFjaGUuY29tbW9ucy5odHRwY2xpZW50LTMuMS4wLmphciBiL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L3JlcG9zaXRvcnkvZXh0L2NvbS5zcHJpbmdzb3VyY2Uub3JnLmFwYWNoZS5jb21tb25zLmh0dHBjbGllbnQtMy4xLjAuamFyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlOGI5ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9yZXBvc2l0b3J5L2V4dC9jb20uc3ByaW5nc291cmNlLm9yZy5hcGFjaGUuY29tbW9ucy5odHRwY2xpZW50LTMuMS4wLmphcgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL2pldHR5YnVuZGxlcy9jb20uc3VuLmVsLTIuMi4wLnYyMDExMDgwMTExMTYuamFyIGIvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvcmVwb3NpdG9yeS9leHQvY29tLnN1bi5lbC0yLjIuMC52MjAxMTA4MDExMTE2LmphcgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9qZXR0eWJ1bmRsZXMvY29tLnN1bi5lbC0yLjIuMC52MjAxMTA4MDExMTE2LmphcgpyZW5hbWUgdG8gamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvcmVwb3NpdG9yeS9leHQvY29tLnN1bi5lbC0yLjIuMC52MjAxMTA4MDExMTE2LmphcgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL2pldHR5YnVuZGxlcy9qYXZheC5hY3RpdmF0aW9uLTEuMS4wLnYyMDExMDUwNzEyMzMuamFyIGIvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvcmVwb3NpdG9yeS9leHQvamF2YXguYWN0aXZhdGlvbi0xLjEuMC52MjAxMTA1MDcxMjMzLmphcgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9qZXR0eWJ1bmRsZXMvamF2YXguYWN0aXZhdGlvbi0xLjEuMC52MjAxMTA1MDcxMjMzLmphcgpyZW5hbWUgdG8gamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvcmVwb3NpdG9yeS9leHQvamF2YXguYWN0aXZhdGlvbi0xLjEuMC52MjAxMTA1MDcxMjMzLmphcgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL2pldHR5YnVuZGxlcy9qYXZheC5hbm5vdGF0aW9uLTEuMS4wLnYyMDExMDgwMTExMTYuamFyIGIvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvcmVwb3NpdG9yeS9leHQvamF2YXguYW5ub3RhdGlvbi0xLjEuMC52MjAxMTA4MDExMTE2LmphcgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9qZXR0eWJ1bmRsZXMvamF2YXguYW5ub3RhdGlvbi0xLjEuMC52MjAxMTA4MDExMTE2LmphcgpyZW5hbWUgdG8gamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvcmVwb3NpdG9yeS9leHQvamF2YXguYW5ub3RhdGlvbi0xLjEuMC52MjAxMTA4MDExMTE2LmphcgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL2pldHR5YnVuZGxlcy9qYXZheC5lbC0yLjIuMC52MjAxMTA4MDExMTE2LmphciBiL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L3JlcG9zaXRvcnkvZXh0L2phdmF4LmVsLTIuMi4wLnYyMDExMDgwMTExMTYuamFyCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBidWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL2pldHR5YnVuZGxlcy9qYXZheC5lbC0yLjIuMC52MjAxMTA4MDExMTE2LmphcgpyZW5hbWUgdG8gamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvcmVwb3NpdG9yeS9leHQvamF2YXguZWwtMi4yLjAudjIwMTEwODAxMTExNi5qYXIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9qZXR0eWJ1bmRsZXMvamF2YXgubWFpbC5nbGFzc2Zpc2gtMS40LjEudjIwMTAwNTA4MjAyMC5qYXIgYi9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9yZXBvc2l0b3J5L2V4dC9qYXZheC5tYWlsLmdsYXNzZmlzaC0xLjQuMS52MjAxMDA1MDgyMDIwLmphcgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9qZXR0eWJ1bmRsZXMvamF2YXgubWFpbC5nbGFzc2Zpc2gtMS40LjEudjIwMTAwNTA4MjAyMC5qYXIKcmVuYW1lIHRvIGpldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L3JlcG9zaXRvcnkvZXh0L2phdmF4Lm1haWwuZ2xhc3NmaXNoLTEuNC4xLnYyMDEwMDUwODIwMjAuamFyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvamV0dHlidW5kbGVzL2phdmF4LnNlcnZsZXQuanNwLTIuMi4wLnYyMDExMTIwMTExNTguamFyIGIvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvcmVwb3NpdG9yeS9leHQvamF2YXguc2VydmxldC5qc3AtMi4yLjAudjIwMTExMjAxMTE1OC5qYXIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGJ1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvamV0dHlidW5kbGVzL2phdmF4LnNlcnZsZXQuanNwLTIuMi4wLnYyMDExMTIwMTExNTguamFyCnJlbmFtZSB0byBqZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9yZXBvc2l0b3J5L2V4dC9qYXZheC5zZXJ2bGV0LmpzcC0yLjIuMC52MjAxMTEyMDExMTU4LmphcgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL2pldHR5YnVuZGxlcy9qYXZheC50cmFuc2FjdGlvbi0xLjEuMS52MjAxMTA1MjEwNjQ1LmphciBiL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L3JlcG9zaXRvcnkvZXh0L2phdmF4LnRyYW5zYWN0aW9uLTEuMS4xLnYyMDExMDUyMTA2NDUuamFyCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBidWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL2pldHR5YnVuZGxlcy9qYXZheC50cmFuc2FjdGlvbi0xLjEuMS52MjAxMTA1MjEwNjQ1LmphcgpyZW5hbWUgdG8gamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvcmVwb3NpdG9yeS9leHQvamF2YXgudHJhbnNhY3Rpb24tMS4xLjEudjIwMTEwNTIxMDY0NS5qYXIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9qZXR0eWJ1bmRsZXMvamV0dHktYWpwLTguMS4zLnYyMDEyMDQxNi5qYXIgYi9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9yZXBvc2l0b3J5L2V4dC9qZXR0eS1hanAtOC4xLjMudjIwMTIwNDE2LmphcgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9qZXR0eWJ1bmRsZXMvamV0dHktYWpwLTguMS4zLnYyMDEyMDQxNi5qYXIKcmVuYW1lIHRvIGpldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L3JlcG9zaXRvcnkvZXh0L2pldHR5LWFqcC04LjEuMy52MjAxMjA0MTYuamFyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvamV0dHlidW5kbGVzL2pldHR5LWFubm90YXRpb25zLTguMS4zLnYyMDEyMDQxNi5qYXIgYi9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9yZXBvc2l0b3J5L2V4dC9qZXR0eS1hbm5vdGF0aW9ucy04LjEuMy52MjAxMjA0MTYuamFyCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBidWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL2pldHR5YnVuZGxlcy9qZXR0eS1hbm5vdGF0aW9ucy04LjEuMy52MjAxMjA0MTYuamFyCnJlbmFtZSB0byBqZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9yZXBvc2l0b3J5L2V4dC9qZXR0eS1hbm5vdGF0aW9ucy04LjEuMy52MjAxMjA0MTYuamFyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvamV0dHlidW5kbGVzL2pldHR5LWNsaWVudC04LjEuMy52MjAxMjA0MTYuamFyIGIvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvcmVwb3NpdG9yeS9leHQvamV0dHktY2xpZW50LTguMS4zLnYyMDEyMDQxNi5qYXIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGJ1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvamV0dHlidW5kbGVzL2pldHR5LWNsaWVudC04LjEuMy52MjAxMjA0MTYuamFyCnJlbmFtZSB0byBqZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9yZXBvc2l0b3J5L2V4dC9qZXR0eS1jbGllbnQtOC4xLjMudjIwMTIwNDE2LmphcgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL2pldHR5YnVuZGxlcy9qZXR0eS1jb250aW51YXRpb24tOC4xLjMudjIwMTIwNDE2LmphciBiL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L3JlcG9zaXRvcnkvZXh0L2pldHR5LWNvbnRpbnVhdGlvbi04LjEuMy52MjAxMjA0MTYuamFyCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBidWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL2pldHR5YnVuZGxlcy9qZXR0eS1jb250aW51YXRpb24tOC4xLjMudjIwMTIwNDE2LmphcgpyZW5hbWUgdG8gamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvcmVwb3NpdG9yeS9leHQvamV0dHktY29udGludWF0aW9uLTguMS4zLnYyMDEyMDQxNi5qYXIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9qZXR0eWJ1bmRsZXMvamV0dHktZGVwbG95LTguMS4zLnYyMDEyMDQxNi5qYXIgYi9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9yZXBvc2l0b3J5L2V4dC9qZXR0eS1kZXBsb3ktOC4xLjMudjIwMTIwNDE2LmphcgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9qZXR0eWJ1bmRsZXMvamV0dHktZGVwbG95LTguMS4zLnYyMDEyMDQxNi5qYXIKcmVuYW1lIHRvIGpldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L3JlcG9zaXRvcnkvZXh0L2pldHR5LWRlcGxveS04LjEuMy52MjAxMjA0MTYuamFyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvamV0dHlidW5kbGVzL2pldHR5LWh0dHAtOC4xLjMudjIwMTIwNDE2LmphciBiL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L3JlcG9zaXRvcnkvZXh0L2pldHR5LWh0dHAtOC4xLjMudjIwMTIwNDE2LmphcgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9qZXR0eWJ1bmRsZXMvamV0dHktaHR0cC04LjEuMy52MjAxMjA0MTYuamFyCnJlbmFtZSB0byBqZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9yZXBvc2l0b3J5L2V4dC9qZXR0eS1odHRwLTguMS4zLnYyMDEyMDQxNi5qYXIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9qZXR0eWJ1bmRsZXMvamV0dHktaW8tOC4xLjMudjIwMTIwNDE2LmphciBiL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L3JlcG9zaXRvcnkvZXh0L2pldHR5LWlvLTguMS4zLnYyMDEyMDQxNi5qYXIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGJ1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvamV0dHlidW5kbGVzL2pldHR5LWlvLTguMS4zLnYyMDEyMDQxNi5qYXIKcmVuYW1lIHRvIGpldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L3JlcG9zaXRvcnkvZXh0L2pldHR5LWlvLTguMS4zLnYyMDEyMDQxNi5qYXIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9qZXR0eWJ1bmRsZXMvamV0dHktam14LTguMS4zLnYyMDEyMDQxNi5qYXIgYi9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9yZXBvc2l0b3J5L2V4dC9qZXR0eS1qbXgtOC4xLjMudjIwMTIwNDE2LmphcgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9qZXR0eWJ1bmRsZXMvamV0dHktam14LTguMS4zLnYyMDEyMDQxNi5qYXIKcmVuYW1lIHRvIGpldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L3JlcG9zaXRvcnkvZXh0L2pldHR5LWpteC04LjEuMy52MjAxMjA0MTYuamFyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvamV0dHlidW5kbGVzL2pldHR5LWpuZGktOC4xLjMudjIwMTIwNDE2LmphciBiL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L3JlcG9zaXRvcnkvZXh0L2pldHR5LWpuZGktOC4xLjMudjIwMTIwNDE2LmphcgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9qZXR0eWJ1bmRsZXMvamV0dHktam5kaS04LjEuMy52MjAxMjA0MTYuamFyCnJlbmFtZSB0byBqZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9yZXBvc2l0b3J5L2V4dC9qZXR0eS1qbmRpLTguMS4zLnYyMDEyMDQxNi5qYXIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9qZXR0eWJ1bmRsZXMvamV0dHktb3NnaS1ib290LTguMS4zLnYyMDEyMDQxNi5qYXIgYi9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9yZXBvc2l0b3J5L2V4dC9qZXR0eS1vc2dpLWJvb3QtOC4xLjMudjIwMTIwNDE2LmphcgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9qZXR0eWJ1bmRsZXMvamV0dHktb3NnaS1ib290LTguMS4zLnYyMDEyMDQxNi5qYXIKcmVuYW1lIHRvIGpldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L3JlcG9zaXRvcnkvZXh0L2pldHR5LW9zZ2ktYm9vdC04LjEuMy52MjAxMjA0MTYuamFyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvamV0dHlidW5kbGVzL2pldHR5LW9zZ2ktYm9vdC1qc3AtOC4xLjMudjIwMTIwNDE2LmphciBiL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L3JlcG9zaXRvcnkvZXh0L2pldHR5LW9zZ2ktYm9vdC1qc3AtOC4xLjMudjIwMTIwNDE2LmphcgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9qZXR0eWJ1bmRsZXMvamV0dHktb3NnaS1ib290LWpzcC04LjEuMy52MjAxMjA0MTYuamFyCnJlbmFtZSB0byBqZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9yZXBvc2l0b3J5L2V4dC9qZXR0eS1vc2dpLWJvb3QtanNwLTguMS4zLnYyMDEyMDQxNi5qYXIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9qZXR0eWJ1bmRsZXMvamV0dHktcGx1cy04LjEuMy52MjAxMjA0MTYuamFyIGIvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvcmVwb3NpdG9yeS9leHQvamV0dHktcGx1cy04LjEuMy52MjAxMjA0MTYuamFyCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBidWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL2pldHR5YnVuZGxlcy9qZXR0eS1wbHVzLTguMS4zLnYyMDEyMDQxNi5qYXIKcmVuYW1lIHRvIGpldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L3JlcG9zaXRvcnkvZXh0L2pldHR5LXBsdXMtOC4xLjMudjIwMTIwNDE2LmphcgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL2pldHR5YnVuZGxlcy9qZXR0eS1wb2xpY3ktOC4xLjMudjIwMTIwNDE2LmphciBiL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L3JlcG9zaXRvcnkvZXh0L2pldHR5LXBvbGljeS04LjEuMy52MjAxMjA0MTYuamFyCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBidWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL2pldHR5YnVuZGxlcy9qZXR0eS1wb2xpY3ktOC4xLjMudjIwMTIwNDE2LmphcgpyZW5hbWUgdG8gamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvcmVwb3NpdG9yeS9leHQvamV0dHktcG9saWN5LTguMS4zLnYyMDEyMDQxNi5qYXIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9qZXR0eWJ1bmRsZXMvamV0dHktcmV3cml0ZS04LjEuMy52MjAxMjA0MTYuamFyIGIvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvcmVwb3NpdG9yeS9leHQvamV0dHktcmV3cml0ZS04LjEuMy52MjAxMjA0MTYuamFyCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBidWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL2pldHR5YnVuZGxlcy9qZXR0eS1yZXdyaXRlLTguMS4zLnYyMDEyMDQxNi5qYXIKcmVuYW1lIHRvIGpldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L3JlcG9zaXRvcnkvZXh0L2pldHR5LXJld3JpdGUtOC4xLjMudjIwMTIwNDE2LmphcgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL2pldHR5YnVuZGxlcy9qZXR0eS1zZWN1cml0eS04LjEuMy52MjAxMjA0MTYuamFyIGIvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvcmVwb3NpdG9yeS9leHQvamV0dHktc2VjdXJpdHktOC4xLjMudjIwMTIwNDE2LmphcgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9qZXR0eWJ1bmRsZXMvamV0dHktc2VjdXJpdHktOC4xLjMudjIwMTIwNDE2LmphcgpyZW5hbWUgdG8gamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvcmVwb3NpdG9yeS9leHQvamV0dHktc2VjdXJpdHktOC4xLjMudjIwMTIwNDE2LmphcgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL2pldHR5YnVuZGxlcy9qZXR0eS1zZXJ2ZXItOC4xLjMudjIwMTIwNDE2LmphciBiL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L3JlcG9zaXRvcnkvZXh0L2pldHR5LXNlcnZlci04LjEuMy52MjAxMjA0MTYuamFyCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBidWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL2pldHR5YnVuZGxlcy9qZXR0eS1zZXJ2ZXItOC4xLjMudjIwMTIwNDE2LmphcgpyZW5hbWUgdG8gamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvcmVwb3NpdG9yeS9leHQvamV0dHktc2VydmVyLTguMS4zLnYyMDEyMDQxNi5qYXIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9qZXR0eWJ1bmRsZXMvamV0dHktc2VydmxldC04LjEuMy52MjAxMjA0MTYuamFyIGIvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvcmVwb3NpdG9yeS9leHQvamV0dHktc2VydmxldC04LjEuMy52MjAxMjA0MTYuamFyCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBidWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL2pldHR5YnVuZGxlcy9qZXR0eS1zZXJ2bGV0LTguMS4zLnYyMDEyMDQxNi5qYXIKcmVuYW1lIHRvIGpldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L3JlcG9zaXRvcnkvZXh0L2pldHR5LXNlcnZsZXQtOC4xLjMudjIwMTIwNDE2LmphcgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL2pldHR5YnVuZGxlcy9qZXR0eS1zZXJ2bGV0cy04LjEuMy52MjAxMjA0MTYuamFyIGIvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvcmVwb3NpdG9yeS9leHQvamV0dHktc2VydmxldHMtOC4xLjMudjIwMTIwNDE2LmphcgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9qZXR0eWJ1bmRsZXMvamV0dHktc2VydmxldHMtOC4xLjMudjIwMTIwNDE2LmphcgpyZW5hbWUgdG8gamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvcmVwb3NpdG9yeS9leHQvamV0dHktc2VydmxldHMtOC4xLjMudjIwMTIwNDE2LmphcgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL2pldHR5YnVuZGxlcy9qZXR0eS11dGlsLTguMS4zLnYyMDEyMDQxNi5qYXIgYi9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9yZXBvc2l0b3J5L2V4dC9qZXR0eS11dGlsLTguMS4zLnYyMDEyMDQxNi5qYXIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGJ1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvamV0dHlidW5kbGVzL2pldHR5LXV0aWwtOC4xLjMudjIwMTIwNDE2LmphcgpyZW5hbWUgdG8gamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvcmVwb3NpdG9yeS9leHQvamV0dHktdXRpbC04LjEuMy52MjAxMjA0MTYuamFyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvamV0dHlidW5kbGVzL2pldHR5LXdlYmFwcC04LjEuMy52MjAxMjA0MTYuamFyIGIvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvcmVwb3NpdG9yeS9leHQvamV0dHktd2ViYXBwLTguMS4zLnYyMDEyMDQxNi5qYXIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGJ1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvamV0dHlidW5kbGVzL2pldHR5LXdlYmFwcC04LjEuMy52MjAxMjA0MTYuamFyCnJlbmFtZSB0byBqZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9yZXBvc2l0b3J5L2V4dC9qZXR0eS13ZWJhcHAtOC4xLjMudjIwMTIwNDE2LmphcgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL2pldHR5YnVuZGxlcy9qZXR0eS13ZWJzb2NrZXQtOC4xLjMudjIwMTIwNDE2LmphciBiL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L3JlcG9zaXRvcnkvZXh0L2pldHR5LXdlYnNvY2tldC04LjEuMy52MjAxMjA0MTYuamFyCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBidWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL2pldHR5YnVuZGxlcy9qZXR0eS13ZWJzb2NrZXQtOC4xLjMudjIwMTIwNDE2LmphcgpyZW5hbWUgdG8gamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvcmVwb3NpdG9yeS9leHQvamV0dHktd2Vic29ja2V0LTguMS4zLnYyMDEyMDQxNi5qYXIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9qZXR0eWJ1bmRsZXMvamV0dHkteG1sLTguMS4zLnYyMDEyMDQxNi5qYXIgYi9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9yZXBvc2l0b3J5L2V4dC9qZXR0eS14bWwtOC4xLjMudjIwMTIwNDE2LmphcgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9qZXR0eWJ1bmRsZXMvamV0dHkteG1sLTguMS4zLnYyMDEyMDQxNi5qYXIKcmVuYW1lIHRvIGpldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L3JlcG9zaXRvcnkvZXh0L2pldHR5LXhtbC04LjEuMy52MjAxMjA0MTYuamFyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2J1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvamV0dHlidW5kbGVzL29yZy5hcGFjaGUuamFzcGVyLmdsYXNzZmlzaC0yLjIuMi52MjAxMTEyMDExMTU4LmphciBiL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L3JlcG9zaXRvcnkvZXh0L29yZy5hcGFjaGUuamFzcGVyLmdsYXNzZmlzaC0yLjIuMi52MjAxMTEyMDExMTU4LmphcgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9qZXR0eWJ1bmRsZXMvb3JnLmFwYWNoZS5qYXNwZXIuZ2xhc3NmaXNoLTIuMi4yLnYyMDExMTIwMTExNTguamFyCnJlbmFtZSB0byBqZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9yZXBvc2l0b3J5L2V4dC9vcmcuYXBhY2hlLmphc3Blci5nbGFzc2Zpc2gtMi4yLjIudjIwMTExMjAxMTE1OC5qYXIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9qZXR0eWJ1bmRsZXMvb3JnLmFwYWNoZS50YWdsaWJzLnN0YW5kYXJkLmdsYXNzZmlzaC0xLjIuMC52MjAxMTEyMDgxODAzLmphciBiL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L3JlcG9zaXRvcnkvZXh0L29yZy5hcGFjaGUudGFnbGlicy5zdGFuZGFyZC5nbGFzc2Zpc2gtMS4yLjAudjIwMTExMjA4MTgwMy5qYXIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGJ1aWxkLXBhY2thZ2luZy9qZXR0eS1zZXJ2ZXIvamV0dHlidW5kbGVzL29yZy5hcGFjaGUudGFnbGlicy5zdGFuZGFyZC5nbGFzc2Zpc2gtMS4yLjAudjIwMTExMjA4MTgwMy5qYXIKcmVuYW1lIHRvIGpldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L3JlcG9zaXRvcnkvZXh0L29yZy5hcGFjaGUudGFnbGlicy5zdGFuZGFyZC5nbGFzc2Zpc2gtMS4yLjAudjIwMTExMjA4MTgwMy5qYXIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9qZXR0eWJ1bmRsZXMvb3JnLmVjbGlwc2UuamR0LmNvcmUtMy43LjEuamFyIGIvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvcmVwb3NpdG9yeS9leHQvb3JnLmVjbGlwc2UuamR0LmNvcmUtMy43LjEuamFyCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBidWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL2pldHR5YnVuZGxlcy9vcmcuZWNsaXBzZS5qZHQuY29yZS0zLjcuMS5qYXIKcmVuYW1lIHRvIGpldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L3JlcG9zaXRvcnkvZXh0L29yZy5lY2xpcHNlLmpkdC5jb3JlLTMuNy4xLmphcgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LndlYi9zcmMvb3JnLmVjbGlwc2UudmlyZ28uamV0dHkud2ViLnBsYW4gYi9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9yZXBvc2l0b3J5L2V4dC9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS53ZWIucGxhbgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS53ZWIvc3JjL29yZy5lY2xpcHNlLnZpcmdvLmpldHR5LndlYi5wbGFuCnJlbmFtZSB0byBqZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9yZXBvc2l0b3J5L2V4dC9vcmcuZWNsaXBzZS52aXJnby5qZXR0eS53ZWIucGxhbgpkaWZmIC0tZ2l0IGEvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvcmVwb3NpdG9yeS9leHQvb3JnLmVjbGlwc2UudmlyZ28ua2VybmVsLnVzZXJyZWdpb24uYmx1ZXByaW50LnBsYW4gYi9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9yZXBvc2l0b3J5L2V4dC9vcmcuZWNsaXBzZS52aXJnby5rZXJuZWwudXNlcnJlZ2lvbi5ibHVlcHJpbnQucGxhbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGIwYmE1Ci0tLSAvZGV2L251bGwKKysrIGIvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvcmVwb3NpdG9yeS9leHQvb3JnLmVjbGlwc2UudmlyZ28ua2VybmVsLnVzZXJyZWdpb24uYmx1ZXByaW50LnBsYW4KQEAgLTAsMCArMSwxNCBAQAorPHBsYW4gbmFtZT0ib3JnLmVjbGlwc2UudmlyZ28ua2VybmVsLnVzZXJyZWdpb24uYmx1ZXByaW50IiB2ZXJzaW9uPSIzLjcuMCIgc2NvcGVkPSJmYWxzZSIgYXRvbWljPSJmYWxzZSIKKwkJCXhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3ZpcmdvL3NjaGVtYS9wbGFuIgorCQkJeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKKwkJCXhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy92aXJnby9zY2hlbWEvcGxhbiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3ZpcmdvL3NjaGVtYS9wbGFuL2VjbGlwc2UtdmlyZ28tcGxhbi54c2QiPgorCisJCTxhcnRpZmFjdCB0eXBlPSJidW5kbGUiIG5hbWU9Im9yZy5lY2xpcHNlLmdlbWluaS5ibHVlcHJpbnQuY29yZSIgdmVyc2lvbj0iWzEuMC4wLlJFTEVBU0UsIDMpIi8+CisJCTxhcnRpZmFjdCB0eXBlPSJidW5kbGUiIG5hbWU9Im9yZy5lY2xpcHNlLmdlbWluaS5ibHVlcHJpbnQuZXh0ZW5kZXIiIHZlcnNpb249IlsxLjAuMC5SRUxFQVNFLCAzKSIvPgorCQk8YXJ0aWZhY3QgdHlwZT0iYnVuZGxlIiBuYW1lPSJvcmcuZWNsaXBzZS5nZW1pbmkuYmx1ZXByaW50LmlvIiB2ZXJzaW9uPSJbMS4wLjAuUkVMRUFTRSwgMykiLz4KKwkJPGFydGlmYWN0IHR5cGU9ImJ1bmRsZSIgbmFtZT0ib3JnLmVjbGlwc2UudmlyZ28ua2VybmVsLmFnZW50LmRtIiB2ZXJzaW9uPSJbMy42LCA0LjApIi8+CisJCTxhcnRpZmFjdCB0eXBlPSJidW5kbGUiIG5hbWU9Im9yZy5lY2xpcHNlLnZpcmdvLmtlcm5lbC5kZXBsb3llci5kbSIgdmVyc2lvbj0iWzMuNiwgNC4wKSIvPgorCQk8YXJ0aWZhY3QgdHlwZT0iYnVuZGxlIiBuYW1lPSJvcmcuZWNsaXBzZS5lcXVpbm94LmRzIiB2ZXJzaW9uPSIwLjAuMCIvPgorCQk8YXJ0aWZhY3QgdHlwZT0iYnVuZGxlIiBuYW1lPSJvcmcuZWNsaXBzZS5lcXVpbm94LnV0aWwiIHZlcnNpb249IjAuMC4wIi8+CisJCTxhcnRpZmFjdCB0eXBlPSJjb25maWd1cmF0aW9uIiBuYW1lPSJvc2dpLmNvbnNvbGUiIHZlcnNpb249IjAiLz4KKzwvcGxhbj4KZGlmZiAtLWdpdCBhL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L3JlcG9zaXRvcnkvZXh0L29yZy5lY2xpcHNlLnZpcmdvLm1hbmFnZW1lbnQucGxhbiBiL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L3JlcG9zaXRvcnkvZXh0L29yZy5lY2xpcHNlLnZpcmdvLm1hbmFnZW1lbnQucGxhbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjgzMTlkCi0tLSAvZGV2L251bGwKKysrIGIvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvcmVwb3NpdG9yeS9leHQvb3JnLmVjbGlwc2UudmlyZ28ubWFuYWdlbWVudC5wbGFuCkBAIC0wLDAgKzEsMTAgQEAKKzxwbGFuIG5hbWU9Im9yZy5lY2xpcHNlLnZpcmdvLm1hbmFnZW1lbnQiIHZlcnNpb249IjMuNy4wIiBzY29wZWQ9ImZhbHNlIiBhdG9taWM9ImZhbHNlIgorCQkJeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdmlyZ28vc2NoZW1hL3BsYW4iCisJCQl4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgorCQkJeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3ZpcmdvL3NjaGVtYS9wbGFuIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdmlyZ28vc2NoZW1hL3BsYW4vZWNsaXBzZS12aXJnby1wbGFuLnhzZCI+CisKKwkJPGFydGlmYWN0IHR5cGU9ImJ1bmRsZSIgbmFtZT0ib3NnaS5lbnRlcnByaXNlIiB2ZXJzaW9uPSJbNC4yLCA1KSIvPgorCQk8YXJ0aWZhY3QgdHlwZT0iYnVuZGxlIiBuYW1lPSJvcmcuZWNsaXBzZS5nZW1pbmkubWFuYWdlbWVudCIgdmVyc2lvbj0iWzEuMCwgMikiLz4KKwkJPGFydGlmYWN0IHR5cGU9ImJ1bmRsZSIgbmFtZT0ib3JnLmVjbGlwc2UudmlyZ28ubWFuYWdlbWVudC5mcmFnbWVudCIgdmVyc2lvbj0iWzMuNiwgNCkiLz4KKwkJCis8L3BsYW4+CmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL2pldHR5YnVuZGxlcy9vcmcub2JqZWN0d2ViLmFzbS0zLjEuMC52MjAwODAzMDYxOTEwLmphciBiL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L3JlcG9zaXRvcnkvZXh0L29yZy5vYmplY3R3ZWIuYXNtLTMuMS4wLnYyMDA4MDMwNjE5MTAuamFyCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBidWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL2pldHR5YnVuZGxlcy9vcmcub2JqZWN0d2ViLmFzbS0zLjEuMC52MjAwODAzMDYxOTEwLmphcgpyZW5hbWUgdG8gamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvcmVwb3NpdG9yeS9leHQvb3JnLm9iamVjdHdlYi5hc20tMy4xLjAudjIwMDgwMzA2MTkxMC5qYXIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvcmVwb3NpdG9yeS9leHQvb3JnLnNwcmluZ2ZyYW1ld29yay5zcHJpbmctbGlicmFyeS0zLjEuMC5SRUxFQVNFLmxpYmQgYi9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9yZXBvc2l0b3J5L2V4dC9vcmcuc3ByaW5nZnJhbWV3b3JrLnNwcmluZy1saWJyYXJ5LTMuMS4wLlJFTEVBU0UubGliZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MjQwM2JiCi0tLSAvZGV2L251bGwKKysrIGIvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvcmVwb3NpdG9yeS9leHQvb3JnLnNwcmluZ2ZyYW1ld29yay5zcHJpbmctbGlicmFyeS0zLjEuMC5SRUxFQVNFLmxpYmQKQEAgLTAsMCArMSwyMSBAQAorTGlicmFyeS1TeW1ib2xpY05hbWU6IG9yZy5zcHJpbmdmcmFtZXdvcmsuc3ByaW5nCitMaWJyYXJ5LVZlcnNpb246IDMuMS4wLlJFTEVBU0UKK0xpYnJhcnktTmFtZTogU3ByaW5nIEZyYW1ld29yaworSW1wb3J0LUJ1bmRsZTogCisgb3JnLnNwcmluZ2ZyYW1ld29yay5hb3A7dmVyc2lvbj0iWzMuMS4wLlJFTEVBU0UsIDMuMS4wLlJFTEVBU0VdIiwKKyBvcmcuc3ByaW5nZnJhbWV3b3JrLmFzbTt2ZXJzaW9uPSJbMy4xLjAuUkVMRUFTRSwgMy4xLjAuUkVMRUFTRV0iLAorIG9yZy5zcHJpbmdmcmFtZXdvcmsuYXNwZWN0czt2ZXJzaW9uPSJbMy4xLjAuUkVMRUFTRSwgMy4xLjAuUkVMRUFTRV0iLAorIG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnM7dmVyc2lvbj0iWzMuMS4wLlJFTEVBU0UsIDMuMS4wLlJFTEVBU0VdIiwKKyBvcmcuc3ByaW5nZnJhbWV3b3JrLmNvbnRleHQ7dmVyc2lvbj0iWzMuMS4wLlJFTEVBU0UsIDMuMS4wLlJFTEVBU0VdIiwKKyBvcmcuc3ByaW5nZnJhbWV3b3JrLmNvbnRleHQuc3VwcG9ydDt2ZXJzaW9uPSJbMy4xLjAuUkVMRUFTRSwgMy4xLjAuUkVMRUFTRV0iLAorIG9yZy5zcHJpbmdmcmFtZXdvcmsuY29yZTt2ZXJzaW9uPSJbMy4xLjAuUkVMRUFTRSwgMy4xLjAuUkVMRUFTRV0iLAorIG9yZy5zcHJpbmdmcmFtZXdvcmsuZXhwcmVzc2lvbjt2ZXJzaW9uPSJbMy4xLjAuUkVMRUFTRSwgMy4xLjAuUkVMRUFTRV0iLAorIG9yZy5zcHJpbmdmcmFtZXdvcmsuamRiYzt2ZXJzaW9uPSJbMy4xLjAuUkVMRUFTRSwgMy4xLjAuUkVMRUFTRV0iLAorIG9yZy5zcHJpbmdmcmFtZXdvcmsuam1zO3ZlcnNpb249IlszLjEuMC5SRUxFQVNFLCAzLjEuMC5SRUxFQVNFXSIsCisgb3JnLnNwcmluZ2ZyYW1ld29yay5vcm07dmVyc2lvbj0iWzMuMS4wLlJFTEVBU0UsIDMuMS4wLlJFTEVBU0VdIiwKKyBvcmcuc3ByaW5nZnJhbWV3b3JrLm94bTt2ZXJzaW9uPSJbMy4xLjAuUkVMRUFTRSwgMy4xLjAuUkVMRUFTRV0iLAorIG9yZy5zcHJpbmdmcmFtZXdvcmsudHJhbnNhY3Rpb247dmVyc2lvbj0iWzMuMS4wLlJFTEVBU0UsIDMuMS4wLlJFTEVBU0VdIiwKKyBvcmcuc3ByaW5nZnJhbWV3b3JrLndlYjt2ZXJzaW9uPSJbMy4xLjAuUkVMRUFTRSwgMy4xLjAuUkVMRUFTRV0iLAorIG9yZy5zcHJpbmdmcmFtZXdvcmsud2ViLnNlcnZsZXQ7dmVyc2lvbj0iWzMuMS4wLlJFTEVBU0UsIDMuMS4wLlJFTEVBU0VdIiwKKyBvcmcuc3ByaW5nZnJhbWV3b3JrLndlYi5wb3J0bGV0O3ZlcnNpb249IlszLjEuMC5SRUxFQVNFLCAzLjEuMC5SRUxFQVNFXSIsCisgY29tLnNwcmluZ3NvdXJjZS5vcmcuYW9wYWxsaWFuY2U7dmVyc2lvbj0iWzEuMC4wLCAxLjAuMF0iCmRpZmYgLS1naXQgYS9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9yZXBvc2l0b3J5L2V4dC9vc2dpLmNvbnNvbGUucHJvcGVydGllcyBiL2pldHR5LXNlcnZlci9zcmMvbWFpbi9kaXN0L3JlcG9zaXRvcnkvZXh0L29zZ2kuY29uc29sZS5wcm9wZXJ0aWVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxMDk0M2IKLS0tIC9kZXYvbnVsbAorKysgYi9qZXR0eS1zZXJ2ZXIvc3JjL21haW4vZGlzdC9yZXBvc2l0b3J5L2V4dC9vc2dpLmNvbnNvbGUucHJvcGVydGllcwpAQCAtMCwwICsxLDYgQEAKK3RlbG5ldC5lbmFibGVkPWZhbHNlCit0ZWxuZXQucG9ydD0yNTAxCit0ZWxuZXQuaG9zdD1sb2NhbGhvc3QKK3NzaC5lbmFibGVkPWZhbHNlCitzc2gucG9ydD0yNTAyCitzc2guaG9zdD1sb2NhbGhvc3QKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL2pldHR5YnVuZGxlcy9zZXJ2bGV0LWFwaS0zLjAuamFyIGIvamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvcmVwb3NpdG9yeS9leHQvc2VydmxldC1hcGktMy4wLmphcgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci9qZXR0eWJ1bmRsZXMvc2VydmxldC1hcGktMy4wLmphcgpyZW5hbWUgdG8gamV0dHktc2VydmVyL3NyYy9tYWluL2Rpc3QvcmVwb3NpdG9yeS9leHQvc2VydmxldC1hcGktMy4wLmphcgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9idWlsZC1wYWNrYWdpbmcvamV0dHktc2VydmVyL3Rlc3QtcGFja2FnZS54bWwgYi9qZXR0eS1zZXJ2ZXIvdGVzdC1wYWNrYWdlLnhtbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gYnVpbGQtcGFja2FnaW5nL2pldHR5LXNlcnZlci90ZXN0LXBhY2thZ2UueG1sCnJlbmFtZSB0byBqZXR0eS1zZXJ2ZXIvdGVzdC1wYWNrYWdlLnhtbAo=